local scard = c77702002 local id = 77702002 local m=id local cm=scard function scard.initial_effect(c) local e1 = Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_ACTIVATE) e1:SetCode(EVENT_FREE_CHAIN) e1:SetTarget(scard.regtg) e1:SetOperation(function() Duel.Hint(HINT_MUSIC,0,id*16+math.random(0,1)) end) c:RegisterEffect(e1) local e2 = Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_SINGLE) e2:SetProperty(EFFECT_FLAG_SINGLE_RANGE) e2:SetRange(LOCATION_FZONE) e2:SetCode(EFFECT_INDESTRUCTABLE_EFFECT) e2:SetValue(1) c:RegisterEffect(e2) --Cannot activate local e3 = Effect.CreateEffect(c) e3:SetType(EFFECT_TYPE_FIELD) e3:SetCode(EFFECT_CANNOT_ACTIVATE) e3:SetRange(LOCATION_FZONE) e3:SetProperty(EFFECT_FLAG_PLAYER_TARGET + EFFECT_FLAG_CANNOT_DISABLE + EFFECT_FLAG_CANNOT_NEGATE) e3:SetTargetRange(1, 0) e3:SetValue(scard.efilter) c:RegisterEffect(e3) local e1=Effect.CreateEffect(c) e1:SetCategory(CATEGORY_DRAW) e1:SetType(EFFECT_TYPE_IGNITION) e1:SetRange(LOCATION_FZONE) e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) e1:SetCountLimit(1,m) e1:SetCost(scard.cost) e1:SetTarget(scard.target) e1:SetOperation(scard.activate) c:RegisterEffect(e1) local e1=Effect.CreateEffect(c) e1:SetDescription(m*16+2) e1:SetCategory(CATEGORY_DRAW) e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) e1:SetCode(EVENT_PHASE+PHASE_END) e1:SetRange(LOCATION_FZONE) e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET) e1:SetCountLimit(1) e1:SetCondition(function(e,tp,eg,ep,ev,re,r,rp) return Duel.GetTurnPlayer()==tp end) e1:SetTarget(function(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return scard[tp]>0 and Duel.IsPlayerCanDraw(tp,scard[tp]) end local ct=scard[tp] Duel.SetTargetPlayer(tp) Duel.SetTargetParam(ct) Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,ct) end) e1:SetOperation(scard.activate) c:RegisterEffect(e1) local e1=Effect.CreateEffect(c) e1:SetType(EFFECT_TYPE_QUICK_O) e1:SetCode(EVENT_FREE_CHAIN) e1:SetRange(LOCATION_GRAVE) e1:SetCost(aux.bfgcost) e1:SetOperation(function(e,tp,eg,ep,ev,re,r,rp) local e1=Effect.CreateEffect(e:GetHandler()) e1:SetType(EFFECT_TYPE_FIELD) e1:SetCode(EFFECT_IMMUNE_EFFECT) e1:SetTargetRange(LOCATION_MZONE,0) e1:SetTarget(aux.TargetBoolFunction(Card.IsType,TYPE_RITUAL)) e1:SetValue(function(e,re) return e:GetOwner()~=re:GetOwner() and re:IsActiveType(TYPE_SPELL+TYPE_TRAP) end) e1:SetReset(RESET_PHASE+PHASE_MAIN2) Duel.RegisterEffect(e1,tp) end) c:RegisterEffect(e1) local e2=Effect.CreateEffect(c) e2:SetDescription(m*16+4) e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) e2:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_CANNOT_DISABLE) e2:SetRange(LOCATION_FZONE) e2:SetCountLimit(1) e2:SetCode(EVENT_PHASE+PHASE_END) e2:SetCondition(cm.descon) e2:SetOperation(cm.desop) c:RegisterEffect(e2) if scard.counter==nil then scard.counter=true scard[0]=0 scard[1]=0 local e2=Effect.CreateEffect(c) e2:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) e2:SetCode(EVENT_PHASE_START+PHASE_DRAW) e2:SetOperation(scard.resetcount) Duel.RegisterEffect(e2,0) local e3=Effect.CreateEffect(c) e3:SetType(EFFECT_TYPE_CONTINUOUS+EFFECT_TYPE_FIELD) e3:SetCode(EVENT_RELEASE) e3:SetOperation(scard.addcount) Duel.RegisterEffect(e3,0) end end function scard.resetcount(e,tp,eg,ep,ev,re,r,rp) scard[0]=0 scard[1]=0 end function scard.addcount(e,tp,eg,ep,ev,re,r,rp) local tc=eg:GetFirst() while tc do local p=tc:GetReasonPlayer() scard[p]=scard[p]+1 tc=eg:GetNext() end end function scard.filter(c) return c:IsLevelAbove(7) and c:IsType(TYPE_RITUAL) and c:IsDiscardable() end function scard.cost(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return Duel.IsExistingMatchingCard(scard.filter,tp,LOCATION_HAND,0,1,nil) end Duel.DiscardHand(tp,scard.filter,1,1,REASON_COST+REASON_DISCARD) end function scard.target(e,tp,eg,ep,ev,re,r,rp,chk) if chk==0 then return Duel.IsPlayerCanDraw(tp,2) end Duel.SetTargetPlayer(tp) Duel.SetTargetParam(2) Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,2) end function scard.activate(e,tp,eg,ep,ev,re,r,rp) local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM) Duel.Draw(p,d,REASON_EFFECT) end function scard.efilter(e, re, tp) return re:GetHandler():IsType(TYPE_FIELD) and re:IsHasType(EFFECT_TYPE_ACTIVATE) end function scard.regtg(e, tp, eg, ep, ev, re, r, rp, chk) if chk == 0 then return true end local c = e:GetHandler() --to grave local e1 = Effect.CreateEffect(c) e1:SetDescription(m*16+3) e1:SetType(EFFECT_TYPE_FIELD + EFFECT_TYPE_CONTINUOUS) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e1:SetCode(EVENT_PHASE + PHASE_END) e1:SetCountLimit(1) e1:SetRange(LOCATION_FZONE) e1:SetCondition(scard.gycon) e1:SetOperation(scard.gyop) e1:SetReset(RESET_EVENT + RESETS_STANDARD) c:SetTurnCounter(0) c:RegisterEffect(e1) end function scard.gycon(e, tp, eg, ep, ev, re, r, rp) return Duel.GetTurnPlayer() == tp end function scard.gyop(e, tp, eg, ep, ev, re, r, rp) local c = e:GetHandler() local ct = c:GetTurnCounter() ct = ct + 1 c:SetTurnCounter(ct) if ct == 7 then Duel.SendtoGrave(c, REASON_RULE) end end function cm.descon(e,tp,eg,ep,ev,re,r,rp) return Duel.GetTurnPlayer()==tp end function cm.desop(e,tp,eg,ep,ev,re,r,rp) local c=e:GetHandler() Duel.HintSelection(Group.FromCards(c)) if Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,e:GetHandler()) and Duel.SelectYesNo(tp,aux.Stringid(m,5)) then Duel.DiscardHand(tp,Card.IsDiscardable,1,1,REASON_COST+REASON_DISCARD,e:GetHandler()) else Duel.SendtoGrave(c,REASON_COST) end end