--Sourc--Source Code of Life - G.A.I.A. function c213200.initial_effect(c) --link summon c:EnableReviveLimit() aux.AddLinkProcedure(c,aux.FilterBoolFunction(Card.IsLinkRace,RACE_CYBERSE),4,8,c213200.lcheck) --move local e1=Effect.CreateEffect(c) e1:SetDescription(aux.Stringid(213200,0)) e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O) e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_GRAVE_SPSUMMON) e1:SetProperty(EFFECT_FLAG_DELAY) e1:SetCode(EVENT_SPSUMMON_SUCCESS) e1:SetCountLimit(1,213200) e1:SetTarget(c213200.seqtg) e1:SetOperation(c213200.seqop) c:RegisterEffect(e1) --copy effect local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(213200,1)) e2:SetType(EFFECT_TYPE_QUICK_O) e2:SetCode(EVENT_FREE_CHAIN) e2:SetRange(LOCATION_MZONE) e2:SetCountLimit(1,213201) e2:SetHintTiming(0,TIMINGS_CHECK_MONSTER+TIMING_MAIN_END) e2:SetCost(c213200.copycost) e2:SetOperation(c213200.copyop) c:RegisterEffect(e2) --special summon local e3=Effect.CreateEffect(c) e3:SetDescription(aux.Stringid(213200,3)) e3:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_TOEXTRA) e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) e3:SetProperty(EFFECT_FLAG_CARD_TARGET) e3:SetCode(EVENT_PHASE+PHASE_STANDBY) e3:SetRange(LOCATION_MZONE) e3:SetCountLimit(1,213202) e3:SetTarget(c213200.sptg) e3:SetOperation(c213200.spop) c:RegisterEffect(e3) end function c213200.lcheck(g) return g:GetClassCount(Card.GetLinkAttribute)==g:GetCount() end function c213200.seqtg(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then local zone=bit.band(e:GetHandler():GetLinkedZone(),0x1f) return Duel.GetLocationCount(tp,LOCATION_MZONE,PLAYER_NONE,0,zone)>0 end end function c213200.seqop(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() if not (c:IsRelateToEffect(e) and c:IsFaceup()) then return end local zone=bit.band(e:GetHandler():GetLinkedZone(tp),0x1f) if Duel.GetLocationCount(tp,LOCATION_MZONE,PLAYER_NONE,0,zone)<=0 then return end local s=zone if s&(s-1)~=0 then local flag=bit.bxor(zone,0xff) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOZONE) s=Duel.SelectDisableField(tp,1,LOCATION_MZONE,0,flag) end local nseq=math.log(s,2) Duel.MoveSequence(c,nseq) end function c213200.copyfilter(c) return c:IsRace(RACE_CYBERSE) and c:IsType(TYPE_MONSTER) and c:IsAbleToGraveAsCost() end function c213200.copycost(e,tp,eg,ep,ev,re,r,rp,chk) local c=e:GetHandler() if chk==0 then return Duel.IsExistingMatchingCard(c213200.copyfilter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_EXTRA,0,1,nil) and c:GetFlagEffect(213200)==0 end Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) local g=Duel.SelectMatchingCard(tp,c213200.copyfilter,tp,LOCATION_HAND+LOCATION_DECK+LOCATION_EXTRA,0,1,1,nil) Duel.SendtoGrave(g,REASON_COST) e:SetLabel(g:GetFirst():GetOriginalCode()) c:RegisterFlagEffect(213200,RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END,0,1) end function c213200.copyop(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() local code=e:GetLabel() if c:IsRelateToEffect(e) and c:IsFaceup() then local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_SINGLE) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e1:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END) e1:SetCode(EFFECT_CHANGE_CODE) e1:SetValue(code) c:RegisterEffect(e1) local cid=c:CopyEffect(code,RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END,1) local e2=Effect.CreateEffect(c) e2:SetDescription(aux.Stringid(213200,2)) e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) e2:SetCode(EVENT_PHASE+PHASE_END) e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e2:SetCountLimit(1) e2:SetRange(LOCATION_MZONE) e2:SetReset(RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END) e2:SetLabelObject(e1) e2:SetLabel(cid) e2:SetOperation(c213200.rstop) c:RegisterEffect(e2) end end function c213200.rstop(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() local cid=e:GetLabel() c:ResetEffect(cid,RESET_COPY) c:ResetEffect(RESET_DISABLE,RESET_EVENT) local e1=e:GetLabelObject() e1:Reset() Duel.HintSelection(Group.FromCards(c)) Duel.Hint(HINT_OPSELECTED,1-tp,e:GetDescription()) end function c213200.filter(c,e,tp) return c:IsLink(2) and c:IsRace(RACE_CYBERSE) and c:IsFaceup() and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end function c213200.sptg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) if chkc then return chkc:IsLocation(LOCATION_REMOVED) and chkc:IsControler(tp) and c213200.filter(chkc,e,tp) end local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) if chk==0 then return ft>0 and Duel.IsExistingTarget(c213200.filter,tp,LOCATION_REMOVED,0,1,nil,e,tp) end if Duel.IsPlayerAffectedByEffect(tp,59822133) then ft=1 end local g=Duel.GetMatchingGroup(c213200.filter,tp,LOCATION_REMOVED,0,nil,e,tp):Filter(Card.IsCanBeEffectTarget,nil,e) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) local tg=g:SelectSubGroup(tp,aux.dncheck,false,1,ft) Duel.SetTargetCard(tg) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,tg,tg:GetCount(),0,0) end function c213200.spop(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() local fid=c:GetFieldID() local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local g=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS):Filter(Card.IsRelateToEffect,nil,e) if ft<1 or g:GetCount()<1 or (g:GetCount()>1 and Duel.IsPlayerAffectedByEffect(tp,59822133)) then return end if g:GetCount()<=ft then local tc=g:GetFirst() while tc do Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) tc:RegisterFlagEffect(213200,RESET_EVENT+RESETS_STANDARD,0,1,fid) tc=g:GetNext() end Duel.SpecialSummonComplete() g:KeepAlive() local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) e1:SetCode(EVENT_PHASE+PHASE_END) e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) e1:SetCountLimit(1) e1:SetLabel(fid) e1:SetLabelObject(g) e1:SetCondition(c213200.retcon) e1:SetOperation(c213200.retop) Duel.RegisterEffect(e1,tp) else Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) local sg=g:Select(tp,ft,ft,nil) local tc=sg:GetFirst() while tc do Duel.SpecialSummonStep(tc,0,tp,tp,false,false,POS_FACEUP) tc:RegisterFlagEffect(213200,RESET_EVENT+RESETS_STANDARD,0,1,fid) tc=sg:GetNext() end Duel.SpecialSummonComplete() sg:KeepAlive() local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) e1:SetCode(EVENT_PHASE+PHASE_END) e1:SetProperty(EFFECT_FLAG_IGNORE_IMMUNE) e1:SetCountLimit(1) e1:SetLabel(fid) e1:SetLabelObject(sg) e1:SetCondition(c213200.retcon) e1:SetOperation(c213200.retop) Duel.RegisterEffect(e1,tp) g:Sub(sg) Duel.SendtoGrave(g,REASON_RULE) end end function c213200.retfilter(c,fid) return c:GetFlagEffectLabel(213200)==fid end function c213200.retcon(e,tp,eg,ep,ev,re,r,rp) local g=e:GetLabelObject() if not g:IsExists(c213200.retfilter,1,nil,e:GetLabel()) then g:DeleteGroup() e:Reset() return false else return true end end function c213200.retop(e,tp,eg,ep,ev,re,r,rp) local g=e:GetLabelObject() local tg=g:Filter(c213200.retfilter,nil,e:GetLabel()) Duel.SendtoDeck(tg,nil,SEQ_DECKSHUFFLE,REASON_EFFECT) end