Commit c212ddc2 authored by POLYMER's avatar POLYMER

fix

parent 33c20a45
No preview for this file type
......@@ -88,7 +88,7 @@ function cm.descon(e,tp,eg,ep,ev,re,r,rp)
end
function cm.dsop(e,tp,eg,ep,ev,re,r,rp)
if re:GetHandler():IsImmuneToEffect(e) then return end
local op=re:GetOperation()
local op=re:GetOperation() or aux.TRUE
local op2=function(e,...) e:SetOperation(op) op(e,...) op(e,...) end
re:SetOperation(op2)
local e1=Effect.CreateEffect(e:GetHandler())
......
......@@ -42,7 +42,7 @@ function cm.initial_effect(c)
ge2:SetCode(EVENT_CHAIN_SOLVED)
ge2:SetOperation(cm.MergedDelayEventCheck2)
Duel.RegisterEffect(ge2,0)
local ge3=ge1:Clone()
local ge3=ge2:Clone()
ge3:SetCode(EVENT_CHAIN_NEGATED)
Duel.RegisterEffect(ge3,0)
end
......@@ -53,7 +53,7 @@ function cm.MergedDelayEventCheck1(e,tp,eg,ep,ev,re,r,rp)
local g=e:GetLabelObject()
g:Merge(eg2)
--if c:IsLocation(LOCATION_MZONE) and c:IsFaceup() then c:RegisterFlagEffect(m-1,RESET_EVENT+RESETS_STANDARD,0,1) end
if Duel.GetCurrentChain()==0 and #g>0 then
if (Duel.GetCurrentChain()==0 or (Duel.GetCurrentChain()==1 and (Duel.CheckEvent(EVENT_CHAIN_SOLVED) or Duel.CheckEvent(EVENT_CHAIN_NEGATED)))) and #g>0 then
local _eg=g:Clone()
Duel.RaiseEvent(_eg,EVENT_CUSTOM+e:GetLabel(),re,r,rp,ep,ev)
g:Clear()
......
......@@ -67,7 +67,8 @@ function cm.cpfilter2(c,tp,tc)
return c:IsFacedown() and c:IsAbleToHandAsCost() and Duel.IsExistingMatchingCard(cm.smfilter,tp,LOCATION_HAND+LOCATION_MZONE,0,1,fg)
end
function cm.sumcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(cm.cpfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil,tp) end
if chk==0 then return Duel.IsExistingMatchingCard(cm.cpfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil,tp) and e:GetHandler():GetFlagEffect(m)==0 end
e:GetHandler():RegisterFlagEffect(m,RESET_EVENT+RESETS_STANDARD+RESET_CHAIN,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(m,3))
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND)
local tc=Duel.SelectMatchingCard(tp,cm.cpfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil,tp):GetFirst()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RTOHAND)
......@@ -76,8 +77,7 @@ function cm.sumcost(e,tp,eg,ep,ev,re,r,rp,chk)
Duel.SendtoHand(fg,nil,REASON_COST)
end
function cm.sumtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(cm.smfilter,tp,LOCATION_HAND+LOCATION_MZONE,0,1,nil) and e:GetHandler():GetFlagEffect(m)==0 end
e:GetHandler():RegisterFlagEffect(m,RESET_EVENT+RESETS_STANDARD+RESET_CHAIN,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(m,3))
if chk==0 then return Duel.IsExistingMatchingCard(cm.smfilter,tp,LOCATION_HAND+LOCATION_MZONE,0,1,nil) end
Duel.SetOperationInfo(0,CATEGORY_SUMMON,nil,1,0,0)
end
function cm.smfilter(c)
......
......@@ -68,7 +68,8 @@ function cm.cpfilter2(c,tp,tc)
return c:GetOriginalType()&TYPE_LINK==0 and c:GetPosition()~=tc:GetPosition() and Duel.IsExistingMatchingCard(cm.smfilter,tp,LOCATION_HAND+LOCATION_MZONE,0,1,fg) and not fg:IsExists(function(c) return c:IsFaceup() and not c:IsCanTurnSet() end,1,nil)
end
function cm.sumcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(cm.cpfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,tp) end
if chk==0 then return Duel.IsExistingMatchingCard(cm.cpfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,nil,tp) and e:GetHandler():GetFlagEffect(m)==0 end
e:GetHandler():RegisterFlagEffect(m,RESET_EVENT+RESETS_STANDARD+RESET_CHAIN,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(m,3))
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE)
local tc=Duel.SelectMatchingCard(tp,cm.cpfilter,tp,LOCATION_MZONE,LOCATION_MZONE,1,1,nil,tp):GetFirst()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_POSCHANGE)
......@@ -78,8 +79,7 @@ function cm.sumcost(e,tp,eg,ep,ev,re,r,rp,chk)
Duel.ChangePosition(tc2,pos)
end
function cm.sumtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(cm.smfilter,tp,LOCATION_HAND+LOCATION_MZONE,0,1,nil) and e:GetHandler():GetFlagEffect(m)==0 end
e:GetHandler():RegisterFlagEffect(m,RESET_EVENT+RESETS_STANDARD+RESET_CHAIN,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(m,3))
if chk==0 then return Duel.IsExistingMatchingCard(cm.smfilter,tp,LOCATION_HAND+LOCATION_MZONE,0,1,nil) end
Duel.SetOperationInfo(0,CATEGORY_SUMMON,nil,1,0,0)
end
function cm.smfilter(c)
......
......@@ -131,7 +131,7 @@ function cm.sumtg2(e,tp,eg,ep,ev,re,r,rp,chk)
Duel.SetOperationInfo(0,CATEGORY_SUMMON,nil,1,0,0)
end
function cm.sumop2(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SUMMON)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SET)
local g=Duel.SelectMatchingCard(tp,Card.IsMSetable,tp,LOCATION_HAND+LOCATION_MZONE,0,1,1,nil,true,nil)
local tc=g:GetFirst()
if tc then Duel.MSet(tp,tc,true,nil) end
......
......@@ -7,7 +7,7 @@ function cm.initial_effect(c)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetProperty(EFFECT_FLAG_DELAY)
e1:SetCode(EVENT_TO_HAND)
e1:SetCondition(cm.condition)
--e1:SetCondition(cm.condition)
e1:SetTarget(cm.target)
e1:SetOperation(cm.activate)
c:RegisterEffect(e1)
......@@ -17,14 +17,35 @@ function cm.initial_effect(c)
e2:SetCode(EVENT_TO_HAND)
e2:SetProperty(EFFECT_FLAG_DELAY)
e2:SetCost(cm.cost)
c:RegisterEffect(e2)
local e5=e2:Clone()
e5:SetDescription(aux.Stringid(m,1))
e5:SetCode(EVENT_CUSTOM+11451902)
e5:SetCondition(aux.TRUE)
e5:SetCost(aux.TRUE)
e5:SetTarget(function(e,tp,eg,ep,ev,re,r,rp,chk) Duel.RegisterFlagEffect(0,11451901,RESET_CHAIN,0,1) return false end)
e5:SetTarget(function(e,tp,eg,ep,ev,re,r,rp,chk)
Duel.RegisterFlagEffect(0,11451901,RESET_CHAIN,0,1)
--e:GetLabelObject():SetLabel(0)
return false end)
c:RegisterEffect(e5)
c:RegisterEffect(e2)
local e6=Effect.CreateEffect(c)
e6:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e6:SetCode(EVENT_CUSTOM+11451902)
e6:SetOperation(function(e,tp,eg,ep,ev,re,r,rp,chk)
--local flag=Duel.RegisterFlagEffect(0,11451901,0,0,1)
e:SetLabel(100)
local lab=2
if (Duel.GetCurrentChain()==0 or (Duel.GetCurrentChain()==1 and (Duel.CheckEvent(EVENT_CHAIN_SOLVED) or Duel.CheckEvent(EVENT_CHAIN_NEGATED)))) then lab=1 end
if Duel.GetCurrentChain()~=0 then
local ge2=e:Clone()
ge2:SetCode(EVENT_ADJUST)
ge2:SetOperation(function() if Duel.GetCurrentChain()==0 then Duel.RaiseEvent(c,EVENT_CUSTOM+11451902,e,0,0,0,0) e:Reset() end end)
Duel.RegisterEffect(ge2,0)
end
end)
Duel.RegisterEffect(e6,0)
e2:SetLabelObject(e6)
e5:SetLabelObject(e6)
local e4=Effect.CreateEffect(c)
e4:SetType(EFFECT_TYPE_FIELD)
e4:SetCode(EFFECT_ACTIVATE_COST)
......@@ -99,11 +120,12 @@ end
function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
local ft=Duel.GetLocationCount(tp,LOCATION_SZONE)
if chk==0 then
--if e:GetLabelObject():GetLabel()==100 then e:GetLabelObject():SetLabel(0) return true end
--local eset={e:GetHandler():GetActivateEffect()}
--Debug.Message(eset[3]:IsActivatable(tp,false,true))
--local se=e:GetHandler():CheckActivateEffect(true,true,true)
--Debug.Message(Duel.GetFlagEffect(0,11451901))
return Duel.GetFlagEffect(0,11451901)>0 and ft>0 and Duel.GetFlagEffect(tp,11451902)>0
return (Duel.GetFlagEffect(0,11451901)>0 or Duel.CheckEvent(EVENT_CUSTOM+11451902)) and ft>0 and Duel.GetFlagEffect(tp,11451902)>0
end
Duel.ResetFlagEffect(tp,11451902)
if Duel.GetFlagEffect(1,11451901)==0 then
......
......@@ -9,7 +9,6 @@ function s.initial_effect(c)
e1:SetCode(EVENT_SUMMON_SUCCESS)
e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DELAY)
e1:SetCountLimit(1,id)
e1:SetCost(s.thcost)
e1:SetTarget(s.target)
e1:SetOperation(s.prop)
c:RegisterEffect(e1)
......@@ -29,10 +28,6 @@ function s.initial_effect(c)
e2:SetTarget(s.target2)
e2:SetOperation(s.prop2)
c:RegisterEffect(e2)
Duel.AddCustomActivityCounter(id,ACTIVITY_SPSUMMON,s.counterfilter)
end
function s.counterfilter(c)
return c:IsSetCard(0x605)
end
function s.filter(c,e,tp)
......@@ -41,17 +36,6 @@ end
function s.filter111(c,e,tp)
return c:IsSetCard(0x603) and c:IsAbleToRemove() and c:IsType(TYPE_MONSTER)
end
function s.thcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetCustomActivityCount(id,tp,ACTIVITY_SPSUMMON)==0 end
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET+EFFECT_FLAG_OATH)
e1:SetCode(EFFECT_CANNOT_SPECIAL_SUMMON)
e1:SetReset(RESET_PHASE+PHASE_END)
e1:SetTargetRange(1,0)
e1:SetTarget(s.splimit)
Duel.RegisterEffect(e1,tp)
end
function s.splimit(e,c)
return not c:IsSetCard(0x605)
end
......@@ -103,7 +87,7 @@ end
function s.cfilter(c,tp,rp)
local ph=Duel.GetCurrentPhase()
return c:IsPreviousPosition(POS_FACEUP) and c:IsSetCard(0x605) and ((c:IsReason(REASON_BATTLE)) or (rp==1-tp and c:IsReason(REASON_EFFECT))) and c:IsControler(tp)
return c:IsPreviousPosition(POS_FACEUP) and c:IsRace(RACE_PSYCHO) and c:IsLevelBelow(6) and ((c:IsReason(REASON_BATTLE)) or (rp==1-tp and c:IsReason(REASON_EFFECT))) and c:IsControler(tp)
end
function s.con2(e,tp,eg,ep,ev,re,r,rp)
return eg:IsExists(s.cfilter,1,nil,tp,rp) and not eg:IsContains(e:GetHandler())
......
......@@ -83,7 +83,7 @@ end
function s.cfilter(c,tp,rp)
local ph=Duel.GetCurrentPhase()
return c:IsPreviousPosition(POS_FACEUP) and c:IsSetCard(0x605) and ((c:IsReason(REASON_BATTLE)) or (rp==1-tp and c:IsReason(REASON_EFFECT))) and c:IsControler(tp)
return c:IsPreviousPosition(POS_FACEUP) and c:IsRace(RACE_PSYCHO) and c:IsLevelBelow(6) and ((c:IsReason(REASON_BATTLE)) or (rp==1-tp and c:IsReason(REASON_EFFECT))) and c:IsControler(tp)
end
function s.con2(e,tp,eg,ep,ev,re,r,rp)
return eg:IsExists(s.cfilter,1,nil,tp,rp) and not eg:IsContains(e:GetHandler())
......
......@@ -78,7 +78,7 @@ end
function s.cfilter(c,tp,rp)
local ph=Duel.GetCurrentPhase()
return c:IsPreviousPosition(POS_FACEUP) and c:IsSetCard(0x605) and ((c:IsReason(REASON_BATTLE)) or (rp==1-tp and c:IsReason(REASON_EFFECT))) and c:IsControler(tp)
return c:IsPreviousPosition(POS_FACEUP) and c:IsRace(RACE_PSYCHO) and c:IsLevelBelow(6) and ((c:IsReason(REASON_BATTLE)) or (rp==1-tp and c:IsReason(REASON_EFFECT))) and c:IsControler(tp)
end
function s.con2(e,tp,eg,ep,ev,re,r,rp)
return eg:IsExists(s.cfilter,1,nil,tp,rp) and not eg:IsContains(e:GetHandler())
......
......@@ -83,7 +83,7 @@ end
function s.cfilter(c,tp,rp)
local ph=Duel.GetCurrentPhase()
return c:IsPreviousPosition(POS_FACEUP) and c:IsSetCard(0x605) and ((c:IsReason(REASON_BATTLE)) or (rp==1-tp and c:IsReason(REASON_EFFECT))) and c:IsControler(tp)
return c:IsPreviousPosition(POS_FACEUP) and c:IsRace(RACE_PSYCHO) and c:IsLevelBelow(6) and ((c:IsReason(REASON_BATTLE)) or (rp==1-tp and c:IsReason(REASON_EFFECT))) and c:IsControler(tp)
end
function s.con2(e,tp,eg,ep,ev,re,r,rp)
return eg:IsExists(s.cfilter,1,nil,tp,rp) and not eg:IsContains(e:GetHandler())
......
......@@ -6,6 +6,7 @@ function s.initial_effect(c)
e1:SetCategory(CATEGORY_REMOVE)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetCountLimit(1,id)
e1:SetTarget(s.target)
e1:SetOperation(s.prop)
c:RegisterEffect(e1)
......@@ -15,7 +16,7 @@ function s.initial_effect(c)
e2:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_O)
e2:SetCode(EVENT_REMOVE)
e2:SetProperty(EFFECT_FLAG_DELAY)
e2:SetCountLimit(1,id)
e2:SetCountLimit(1,id+o)
e2:SetCondition(s.con2)
e2:SetOperation(s.prop2)
c:RegisterEffect(e2)
......
......@@ -84,7 +84,7 @@ end
function s.checkop(e,tp,eg,ep,ev,re,r,rp)
local tc=eg:GetFirst()
while tc do
if tc:IsSetCard(0x611) then
if tc:IsSetCard(0x601) then
Duel.RegisterFlagEffect(0,id,RESET_PHASE+PHASE_END,0,1)
end
tc=eg:GetNext()
......
......@@ -147,7 +147,7 @@ function cm.acop(e,tp,eg,ep,ev,re,r,rp)
opval[off-1]=2
off=off+1
end
if Duel.GetTurnPlayer()~=tp and aux.bpcon() then
if aux.bpcon() then
ops[off]=aux.Stringid(m,2)
opval[off-1]=3
off=off+1
......
......@@ -131,7 +131,7 @@ function s.sdop(e,tp,eg,ep,ev,re,r,rp)
Duel.RaiseEvent(e:GetHandler(),EVENT_CUSTOM+id,re,r,rp,ep,ev)
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetCode(EVENT_CHAIN_SOLVING)
e1:SetCode(EVENT_CHAIN_SOLVED)
e1:SetOperation(s.trop)
e1:SetReset(RESET_CHAIN)
Duel.RegisterEffect(e1,tp)
......
......@@ -143,7 +143,7 @@ function s.initial_effect(c)
tg=Group.__add(tg,tg)
for tc in aux.Next(tg) do
local ct=tc:GetFlagEffectLabel(id+250) or 0
if ct>0 then tc:SetEntityCode(ct) tc:ReplaceEffect(ct,0,0) end
if ct>0 then s.retop(tc,ct) end
end
end
return funcs[v](tg,reason)
......@@ -154,7 +154,7 @@ function s.initial_effect(c)
tg=Group.__add(tg,tg)
for tc in aux.Next(tg) do
local ct=tc:GetFlagEffectLabel(id+250) or 0
if ct>0 then tc:SetEntityCode(ct) tc:ReplaceEffect(ct,0,0) end
if ct>0 then s.retop(tc,ct) end
end
end
return funcs[v](tg,reason,...)
......@@ -165,7 +165,7 @@ function s.initial_effect(c)
tg=Group.__add(tg,tg)
for tc in aux.Next(tg) do
local ct=tc:GetFlagEffectLabel(id+250) or 0
if ct>0 then tc:SetEntityCode(ct) tc:ReplaceEffect(ct,0,0) end
if ct>0 then s.retop(tc,ct) end
end
end
return funcs[v](tg,tp,reason)
......@@ -176,7 +176,7 @@ function s.initial_effect(c)
tg=Group.__add(tg,tg)
for tc in aux.Next(tg) do
local ct=tc:GetFlagEffectLabel(id+250) or 0
if ct>0 then tc:SetEntityCode(ct) tc:ReplaceEffect(ct,0,0) end
if ct>0 then s.retop(tc,ct) end
end
end
return funcs[v](tg,tp,seq,reason)
......@@ -186,7 +186,7 @@ function s.initial_effect(c)
tg=Group.__add(tg,tg)
for tc in aux.Next(tg) do
local ct=tc:GetFlagEffectLabel(id+250) or 0
if ct>0 then tc:SetEntityCode(ct) tc:ReplaceEffect(ct,0,0) end
if ct>0 then s.retop(tc,ct) end
end
return funcs[v](oc,tg)
end
......@@ -195,7 +195,7 @@ function s.initial_effect(c)
local tg2=Group.__add(tg,tg)
for tc in aux.Next(tg2) do
local ct=tc:GetFlagEffectLabel(id+250) or 0
if ct>0 then tc:SetEntityCode(ct) tc:ReplaceEffect(ct,0,0) end
if ct>0 then s.retop(tc,ct) end
end
return funcs[v](tg,...)
end
......@@ -204,7 +204,7 @@ function s.initial_effect(c)
local tg2=Group.__add(tg,tg)
for tc in aux.Next(tg2) do
local ct=tc:GetFlagEffectLabel(id+250) or 0
if ct>0 then tc:SetEntityCode(ct) tc:ReplaceEffect(ct,0,0) end
if ct>0 then s.retop(tc,ct) end
end
return funcs[v](tp,tg,...)
end
......@@ -212,6 +212,15 @@ function s.initial_effect(c)
end
end
end
function s.retop(tc,ct)
tc:SetEntityCode(ct)
tc:ReplaceEffect(ct,0,0)
local le={Duel.IsPlayerAffectedByEffect(0,id+500)}
for _,v in pairs(le) do
local ae=v:GetLabelObject()
if v:GetOwner()==tc and ae then tc:RegisterEffect(ae,true) v:Reset() end
end
end
function s.checkop(e,tp,eg,ep,ev,re,r,rp)
if re:IsHasType(EFFECT_TYPE_ACTIVATE) then re:GetHandler():RegisterFlagEffect(id+750,RESET_EVENT+RESETS_STANDARD+RESET_CHAIN,0,1) end
local g=Group.__sub(Duel.GetFieldGroup(rp,0xff,0),re:GetHandler())
......@@ -238,7 +247,7 @@ function s.reptg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return #g>0 end
for tc in aux.Next(g) do
local ct=tc:GetFlagEffectLabel(id+250)
tc:SetEntityCode(ct) tc:ReplaceEffect(ct,0,0)
s.retop(tc,ct)
end
return false
end
......@@ -278,6 +287,24 @@ function s.op(e,tp,eg,ep,ev,re,r,rp)
tc:RegisterFlagEffect(id,RESET_EVENT+RESETS_STANDARD,0,1,tc:GetOriginalType())
tc:RegisterFlagEffect(id+250,RESET_EVENT+RESETS_STANDARD,0,1,name)
if acg:IsContains(tc) then tc:RegisterFlagEffect(id+500,RESET_EVENT+RESETS_STANDARD,0,1) end
local cp={}
local f=Card.RegisterEffect
Card.RegisterEffect=function(tc,te,bool)
local pro1,pro2=te:GetProperty()
if pro1&EFFECT_FLAG_UNCOPYABLE~=0 then table.insert(cp,te:Clone()) end
return f(tc,te,bool)
end
Duel.CreateToken(tp,tc:GetOriginalCode())
for _,v in pairs(cp) do
local e1=Effect.CreateEffect(tc)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e1:SetTargetRange(1,1)
e1:SetCode(id+500)
e1:SetLabelObject(v)
Duel.RegisterEffect(e1,tp)
end
Card.RegisterEffect=f
tc:SetEntityCode(code)
tc:ReplaceEffect(code,0,0)
end
......
......@@ -54,14 +54,12 @@ function c71401019.filter2a(c,code)
return c:IsRace(RACE_SPELLCASTER) and c:IsLevel(4) and not c:IsCode(code)
end
function c71401019.cost2(e,tp,eg,ep,ev,re,r,rp,chk)
e:SetLabel(100)
return true
end
function c71401019.tg2(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chk==0 then
if e:GetLabel()~=100 then return false end
e:SetLabel(0)
return Duel.IsPlayerCanAdditionalSummon(tp) and Duel.GetFlagEffect(tp,71401019)==0
return e:IsCostChecked() and Duel.IsPlayerCanAdditionalSummon(tp)
and Duel.GetFlagEffect(tp,71401019)==0
and Duel.IsExistingMatchingCard(c71401019.filterc2,tp,LOCATION_MZONE,0,1,nil,tp,e:GetHandler())
and Duel.GetCustomActivityCount(71401001,tp,ACTIVITY_CHAIN)==0
end
......
--黄金乡的供奉者
local m=91060001
local cm=c91060001
function c91060001.initial_effect(c)
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(91060001,0))
e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_DISABLE)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetCountLimit(1,91060001)
e1:SetHintTiming(0,TIMINGS_CHECK_MONSTER+TIMING_END_PHASE)
e1:SetTarget(c91060001.target)
e1:SetOperation(c91060001.activate)
c:RegisterEffect(e1)
--set
local e2=Effect.CreateEffect(c)
e2:SetDescription(aux.Stringid(91060001,1))
e2:SetType(EFFECT_TYPE_QUICK_O)
e2:SetCode(EVENT_FREE_CHAIN)
e2:SetRange(LOCATION_GRAVE)
e2:SetCondition(c91060001.setcon)
e2:SetCountLimit(1,91060001)
e2:SetHintTiming(TIMING_END_PHASE)
e2:SetCost(aux.bfgcost)
e2:SetTarget(c91060001.settg)
e2:SetOperation(c91060001.setop)
c:RegisterEffect(e2)
end
function c91060001.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and
Duel.IsPlayerCanSpecialSummonMonster(tp,91060001,0,TYPES_NORMAL_TRAP_MONSTER,1000,1800,5,RACE_ZOMBIE,ATTRIBUTE_LIGHT) end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,e:GetHandler(),1,0,0)
end
function c91060001.filter(c)
return c:IsFaceup() and c:IsCode(95440946)
end
function c91060001.activate(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if Duel.GetLocationCount(tp,LOCATION_MZONE)<=0
or not Duel.IsPlayerCanSpecialSummonMonster(tp,91060001,0,TYPES_NORMAL_TRAP_MONSTER,1000,1800,5,RACE_ZOMBIE,ATTRIBUTE_LIGHT) then return end
c:AddMonsterAttribute(TYPE_NORMAL+TYPE_TRAP)
if Duel.SpecialSummon(c,0,tp,tp,true,false,POS_FACEUP)~=0
and Duel.IsExistingMatchingCard(c91060001.filter,tp,LOCATION_ONFIELD,0,1,nil) then
Duel.BreakEffect()
local g2=Duel.GetMatchingGroup(nil,tp,LOCATION_ONFIELD,0,nil)
local tc=g2:GetFirst()
while tc do
local e4=Effect.CreateEffect(e:GetHandler())
e4:SetType(EFFECT_TYPE_SINGLE)
e4:SetCode(EFFECT_IMMUNE_EFFECT)
e4:SetValue(cm.efilter)
e4:SetReset(RESET_EVENT+0x1fe0000+RESET_CHAIN)
e4:SetOwnerPlayer(tp)
tc:RegisterEffect(e4)
tc=g2:GetNext()
end
Duel.RegisterFlagEffect(tp,m,RESET_PHASE+PHASE_END,0,1)
end
end
function cm.efilter(e,re)
return e:GetOwnerPlayer()~=re:GetOwnerPlayer()
end
function c91060001.setfilter(c)
return c:IsSetCard(0x2142) and c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsSSetable()
end
function c91060001.setcon(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetCurrentPhase()==PHASE_END
end
function c91060001.settg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(c91060001.setfilter,tp,LOCATION_DECK,0,1,nil) end
end
function c91060001.setop(e,tp,eg,ep,ev,re,r,rp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SET)
local g=Duel.SelectMatchingCard(tp,c91060001.setfilter,tp,LOCATION_DECK,0,1,1,nil)
if #g>0 then
Duel.SSet(tp,g)
end
end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment