--动物朋友 小包 local m=33700185 local cm=_G["c"..m] Duel.LoadScript("c37564765.lua") function cm.initial_effect(c) c:EnableReviveLimit() --fusion material aux.AddFusionProcCodeFun(c,33700055,aux.FilterBoolFunction(Card.IsRace,RACE_MACHINE),1,true,true) --spsummon condition local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e1:SetCode(EFFECT_SPSUMMON_CONDITION) e1:SetValue(cm.splimit) c:RegisterEffect(e1) --special summon rule local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_FIELD) e2:SetCode(EFFECT_SPSUMMON_PROC) e2:SetProperty(EFFECT_FLAG_UNCOPYABLE) e2:SetRange(LOCATION_EXTRA) e2:SetCondition(cm.sprcon) e2:SetOperation(cm.sprop) c:RegisterEffect(e2) local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE) e1:SetCode(EFFECT_UPDATE_ATTACK) e1:SetProperty(EFFECT_FLAG_SINGLE_RANGE) e1:SetRange(LOCATION_MZONE) e1:SetValue(function(e,c) return Duel.GetMatchingGroupCount(function(c) return c:IsSetCard(0x442) and c:IsType(TYPE_MONSTER) end,e:GetHandlerPlayer(),LOCATION_GRAVE,0,nil)*200 end) c:RegisterEffect(e1) local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_SINGLE) e2:SetCode(EFFECT_INDESTRUCTABLE_BATTLE) e2:SetCondition(cm.def(1500)) e2:SetValue(1) c:RegisterEffect(e2) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(m,0)) e1:SetCategory(CATEGORY_SPECIAL_SUMMON) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetRange(LOCATION_MZONE) e1:SetCode(EVENT_FREE_CHAIN) e1:SetHintTiming(0,0x1e0) e1:SetCountLimit(1) e1:SetCondition(cm.def(2500)) e1:SetTarget(cm.target) e1:SetOperation(cm.operation) c:RegisterEffect(e1) local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(m,1)) e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) e1:SetCategory(CATEGORY_RECOVER) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_MZONE) e1:SetCountLimit(1) e1:SetCondition(cm.def(3500)) e1:SetTarget(function(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return e:GetHandler():IsDefenseAbove(1) end Duel.SetTargetPlayer(tp) Duel.SetOperationInfo(0,CATEGORY_RECOVER,nil,0,tp,0) end) e1:SetOperation(function(e,tp,eg,ep,ev,re,r,rp) if not e:GetHandler():IsRelateToEffect(e) then return end local rt=e:GetHandler():GetDefense() local p=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER) Duel.Recover(p,rt,REASON_EFFECT) end) c:RegisterEffect(e1) local e3=Effect.CreateEffect(c) e3:SetType(EFFECT_TYPE_FIELD) e3:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) e3:SetRange(LOCATION_PZONE) e3:SetTargetRange(LOCATION_ONFIELD,0) e3:SetCondition(cm.def(4500)) e3:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x442)) e3:SetValue(1) c:RegisterEffect(e3) local e3=Effect.CreateEffect(c) e3:SetType(EFFECT_TYPE_FIELD) e3:SetCode(EFFECT_CANNOT_BE_EFFECT_TARGET) e3:SetRange(LOCATION_PZONE) e3:SetTargetRange(LOCATION_ONFIELD,0) e3:SetCondition(cm.def(4500)) e3:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x442)) e3:SetValue(1) c:RegisterEffect(e3) local e3=Effect.CreateEffect(c) e3:SetType(EFFECT_TYPE_FIELD) e3:SetCode(EFFECT_LEAVE_FIELD_REDIRECT) e3:SetRange(LOCATION_PZONE) e3:SetTargetRange(LOCATION_ONFIELD,0) e3:SetCondition(cm.def(4500)) e3:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) e3:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x442)) e3:SetValue(LOCATION_HAND) c:RegisterEffect(e3) end function cm.def(val) return function(e) return e:GetHandler():IsDefenseAbove(val) end end function cm.splimit(e,se,sp,st) return e:GetHandler():GetLocation()~=LOCATION_EXTRA end function cm.cfilter(c,tp) return (c:IsFusionCode(33700055) or (c:IsSetCard(0x442) and c:IsType(TYPE_MONSTER))) and c:IsCanBeFusionMaterial() and c:IsAbleToGraveAsCost() end function cm.fcheck(c,sg) return c:IsFusionCode(33700055) and sg:FilterCount(cm.fcheck2,c)+1==sg:GetCount() end function cm.fcheck2(c) return c:IsSetCard(0x442) and c:IsType(TYPE_MONSTER) end function cm.fgoal(c,tp,sg) return sg:GetCount()>1 and Duel.GetLocationCountFromEx(tp,tp,sg)>0 and sg:IsExists(cm.fcheck,1,nil,sg) end function cm.fselect(c,tp,mg,sg) sg:AddCard(c) local res=cm.fgoal(c,tp,sg) or mg:IsExists(cm.fselect,1,sg,tp,mg,sg) sg:RemoveCard(c) return res end function cm.sprcon(e,c) if c==nil then return true end local tp=c:GetControler() local mg=Duel.GetMatchingGroup(cm.cfilter,tp,LOCATION_MZONE+LOCATION_HAND,0,nil,tp) local sg=Group.CreateGroup() return mg:IsExists(cm.fselect,1,nil,tp,mg,sg) end function cm.sprop(e,tp,eg,ep,ev,re,r,rp,c) local mg=Duel.GetMatchingGroup(cm.cfilter,tp,LOCATION_MZONE+LOCATION_HAND,0,nil,tp) local sg=Group.CreateGroup() while true do local cg=mg:Filter(cm.fselect,sg,tp,mg,sg) if cg:GetCount()==0 or (cm.fgoal(c,tp,sg) and not Duel.SelectYesNo(tp,210)) then break end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) local g=cg:Select(tp,1,1,nil) sg:Merge(g) end Duel.SendtoGrave(sg,REASON_COST) --spsummon condition local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE) e1:SetCode(EFFECT_SET_BASE_ATTACK) e1:SetReset(RESET_EVENT+0xff0000) e1:SetValue(sg:GetCount()*500) c:RegisterEffect(e1) local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE) e1:SetCode(EFFECT_SET_BASE_DEFENSE) e1:SetReset(RESET_EVENT+0xff0000) e1:SetValue(sg:GetCount()*500) c:RegisterEffect(e1) end function cm.filter(c,e,tp) if not c:IsSetCard(0x442) or c:IsHasEffect(EFFECT_NECRO_VALLEY) then return false end local rc=c if rc:IsType(TYPE_MONSTER) and Duel.GetMZoneCount(tp)>0 and (not rc:IsLocation(LOCATION_EXTRA) or Duel.GetLocationCountFromEx(tp)>0) and rc:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEDOWN_DEFENSE) then return true end if (rc:IsType(TYPE_FIELD) or Duel.GetLocationCount(tp,LOCATION_SZONE)>0) and rc:IsSSetable() then return true end return false end function cm.target(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return Duel.IsExistingMatchingCard(cm.filter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,nil,e,tp) end Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_HAND+LOCATION_GRAVE) end function cm.operation(e,tp,eg,ep,ev,re,r,rp) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SET) local g=Duel.SelectMatchingCard(tp,cm.filter,tp,LOCATION_HAND+LOCATION_GRAVE,0,1,1,nil,e,tp) if g:GetCount()>0 then local rc=g:GetFirst() if rc:IsType(TYPE_MONSTER) then Duel.SpecialSummon(rc,0,tp,tp,false,false,POS_FACEDOWN_DEFENSE) else Duel.SSet(tp,rc) end Duel.ConfirmCards(1-tp,rc) end end