--created by Pina, coded by Lyris local s,id=GetID() function s.initial_effect(c) local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_ACTIVATE) e1:SetCode(EVENT_FREE_CHAIN) e1:SetCountLimit(1,id+EFFECT_COUNT_CODE_OATH) e1:SetCondition(function(e) return Duel.GetCurrentPhase()==e:GetLabel() end) e1:SetCategory(CATEGORY_DESTROY) e1:SetLabel(PHASE_BATTLE_START) e1:SetHintTiming(TIMING_BATTLE_START) e1:SetTarget(s.tg1) e1:SetOperation(s.op1) c:RegisterEffect(e1) local e2=e1:Clone() e2:SetLabel(PHASE_BATTLE_STEP) e2:SetCategory(CATEGORY_DESTROY+CATEGORY_DAMAGE) e2:SetHintTiming(TIMING_ATTACK) e2:SetTarget(s.tg2) e2:SetOperation(s.op2) c:RegisterEffect(e2) local e3=e1:Clone() e3:SetLabel(PHASE_BATTLE) e3:SetCategory(CATEGORY_DRAW+CATEGORY_REMOVE) e3:SetHintTiming(TIMING_BATTLE_END) e3:SetTarget(s.tg3) e3:SetOperation(s.op3) c:RegisterEffect(e3) if not s.global_check then s.global_check=true s[0]=0 s[1]=0 local ge1=Effect.CreateEffect(c) ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) ge1:SetCode(EVENT_BATTLE_DESTROYED) ge1:SetOperation(s.checkop) Duel.RegisterEffect(ge1,0) local ge2=Effect.CreateEffect(c) ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) ge2:SetCode(EVENT_PHASE_START+PHASE_DRAW) ge2:SetOperation(function(e,tp) s[0]=0 s[1]=0 end) Duel.RegisterEffect(ge2,0) end end function s.tg1(e,tp,eg,ep,ev,re,r,rp,chk) local p=Duel.GetTurnPlayer() if chk==0 then return Duel.GetFieldGroupCount(p,0,LOCATION_MZONE)>=Duel.GetMatchingGroupCount(Card.IsAttackable,p,LOCATION_MZONE,0,1,nil) end local g1=Duel.GetMatchingGroup(Card.IsAttackable,p,LOCATION_MZONE,0,nil) local g2=Duel.GetFieldGroup(p,0,LOCATION_MZONE) local ct1=#g1 g1:Merge(g2) Duel.SetOperationInfo(0,CATEGORY_DESTROY,g1,ct1*2,0,0) end function s.op1(e,tp,eg,ep,ev,re,r,rp) local p=Duel.GetTurnPlayer() local g1=Duel.GetMatchingGroup(Card.IsAttackable,p,LOCATION_MZONE,0,nil) Duel.SkipPhase(p,PHASE_BATTLE,RESET_PHASE+PHASE_BATTLE_STEP,1) Duel.BreakEffect() local ct=Duel.Destroy(g1,REASON_EFFECT) if ct==0 then return end local g2=Duel.GetFieldGroup(p,0,LOCATION_ONFIELD) if #g20 or s[1]>0) and Duel.IsPlayerCanDraw(tp,s[tp]) and Duel.IsPlayerCanDraw(1-tp,s[1-tp]) and ct1==tl and ct2==tl end Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,PLAYER_ALL,1) end function s.op3(e,tp,eg,ep,ev,re,r,rp) local rg=Duel.GetDecktopGroup(tp,Duel.Draw(tp,s[tp],REASON_EFFECT)+Duel.Draw(1-tp,s[1-tp],REASON_EFFECT)) Duel.BreakEffect() Duel.DisableShuffleCheck() Duel.Remove(rg,POS_FACEDOWN,REASON_EFFECT) end