Commit 49b49e7f authored by Nemo Ma's avatar Nemo Ma

fix

parent 4af8423b
...@@ -4,7 +4,8 @@ local m=10121006 ...@@ -4,7 +4,8 @@ local m=10121006
local cm=_G["c"..m] local cm=_G["c"..m]
function cm.initial_effect(c) function cm.initial_effect(c)
c:EnableReviveLimit() c:EnableReviveLimit()
rsdio.XyzEffect(c,3) aux.AddXyzProcedure(c,nil,10,3,nil,nil,99)
--rsdio.XyzEffect(c,4)(暂时无法正常使用)
--draw --draw
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(m,0)) e1:SetDescription(aux.Stringid(m,0))
......
...@@ -19,9 +19,8 @@ function cm.initial_effect(c) ...@@ -19,9 +19,8 @@ function cm.initial_effect(c)
e2:SetType(EFFECT_TYPE_IGNITION) e2:SetType(EFFECT_TYPE_IGNITION)
e2:SetRange(LOCATION_PZONE) e2:SetRange(LOCATION_PZONE)
e2:SetCountLimit(1,15000724) e2:SetCountLimit(1,15000724)
e2:SetCondition(cm.pcon)
e2:SetTarget(cm.ptg) e2:SetTarget(cm.ptg)
e2:SetOperation(cm.aop) e2:SetOperation(cm.pop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
--only me --only me
local e3=Effect.CreateEffect(c) local e3=Effect.CreateEffect(c)
...@@ -30,15 +29,6 @@ function cm.initial_effect(c) ...@@ -30,15 +29,6 @@ function cm.initial_effect(c)
e3:SetCode(15000724) e3:SetCode(15000724)
e3:SetRange(LOCATION_MZONE) e3:SetRange(LOCATION_MZONE)
c:RegisterEffect(e3) c:RegisterEffect(e3)
--P
local e4=Effect.CreateEffect(c)
e4:SetCategory(CATEGORY_SPECIAL_SUMMON)
e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e4:SetRange(LOCATION_PZONE)
e4:SetCode(EVENT_CUSTOM+15000724)
e4:SetProperty(EFFECT_FLAG_DELAY)
e4:SetOperation(cm.pop)
c:RegisterEffect(e4)
--return --return
local e5=Effect.CreateEffect(c) local e5=Effect.CreateEffect(c)
e5:SetCategory(CATEGORY_TOHAND) e5:SetCategory(CATEGORY_TOHAND)
...@@ -61,175 +51,59 @@ end ...@@ -61,175 +51,59 @@ end
function cm.sumfilter(c) function cm.sumfilter(c)
return c:IsType(TYPE_PENDULUM) and c:IsFaceup() return c:IsType(TYPE_PENDULUM) and c:IsFaceup()
end end
function cm.PConditionFilter(c,e,tp,lscale,rscale,eset) function cm.check(e,tp)
local lv=0 local lpz=Duel.GetFieldCard(tp,LOCATION_PZONE,0)
if c.pendulum_level then if lpz==nil then return false end
lv=c.pendulum_level local pcon=aux.PendCondition()
else return pcon(e,lpz,g)
lv=c:GetLevel()
end
local bool=Auxiliary.PendulumSummonableBool(c)
return (c:IsLocation(LOCATION_HAND) or (c:IsFaceup() and c:IsType(TYPE_PENDULUM)))
and lv>lscale and lv<rscale and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_PENDULUM,tp,bool,bool)
and not c:IsForbidden()
and (PENDULUM_CHECKLIST&(0x1<<tp)==0 or Auxiliary.PConditionExtraFilter(c,e,tp,lscale,rscale,eset))
end
function cm.pcon(e,tp,eg,ep,ev,re,r,rp)
if not PENDULUM_CHECKLIST then
PENDULUM_CHECKLIST=0
local ge1=Effect.GlobalEffect()
ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
ge1:SetCode(EVENT_PHASE_START+PHASE_DRAW)
ge1:SetOperation(Auxiliary.PendulumReset)
Duel.RegisterEffect(ge1,0)
end
local eset={Duel.IsPlayerAffectedByEffect(tp,EFFECT_EXTRA_PENDULUM_SUMMON)}
local pg=Duel.GetMatchingGroup(nil,tp,LOCATION_PZONE,0,nil)
if pg:GetCount()~=2 then return false end
local cc=pg:GetFirst()
local lscale=cc:GetLeftScale()
local dc=pg:GetNext()
local rscale=dc:GetRightScale()
if lscale>rscale then
lscale=dc:GetRightScale()
rscale=cc:GetLeftScale()
end
if (lscale==rscale or lscale==rscale-1 or lscale==rscale+1) then return false end
local loc=0
local sc=Duel.GetMatchingGroup(cm.sumfilter,tp,LOCATION_EXTRA,0,nil):GetFirst()
if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then loc=loc+LOCATION_HAND end
if sc and Duel.GetLocationCountFromEx(tp,tp,nil,sc)>0 then loc=loc+LOCATION_EXTRA end
if loc==0 then return false end
local g=nil
if og then
g=og:Filter(Card.IsLocation,nil,loc)
else
g=Duel.GetFieldGroup(tp,loc,0)
end
return g:IsExists(cm.PConditionFilter,1,nil,e,tp,lscale,rscale,eset) and Duel.IsExistingMatchingCard(cm.cfilter,tp,LOCATION_PZONE,0,1,e:GetHandler())
end end
function cm.ptg(e,tp,eg,ep,ev,re,r,rp,chk) function cm.ptg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end if chk==0 then return cm.check(e,tp,nil) end
local eset={Duel.IsPlayerAffectedByEffect(tp,EFFECT_EXTRA_PENDULUM_SUMMON)}
local pg=Duel.GetMatchingGroup(nil,tp,LOCATION_PZONE,0,nil)
if pg:GetCount()~=2 then return false end
local cc=pg:GetFirst()
local lscale=cc:GetLeftScale()
local dc=pg:GetNext()
local rscale=dc:GetRightScale()
if lscale>rscale then
lscale=dc:GetRightScale()
rscale=cc:GetLeftScale()
end
local loc=0
local sc=Duel.GetMatchingGroup(cm.sumfilter,tp,LOCATION_EXTRA,0,nil):GetFirst()
if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then loc=loc+LOCATION_HAND end
if sc and Duel.GetLocationCountFromEx(tp,tp,nil,sc)>0 then loc=loc+LOCATION_EXTRA end
local g=nil
if og then
g=og:Filter(Card.IsLocation,nil,loc)
else
g=Duel.GetFieldGroup(tp,loc,0)
end
local yg=g:Filter(cm.PConditionFilter,nil,e,tp,lscale,rscale,eset)
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,yg,yg:GetCount(),tp,0)
end
function cm.aop(e,tp,eg,ep,ev,re,r,rp)
Duel.RaiseEvent(e:GetHandler(),EVENT_CUSTOM+15000724,re,r,rp,ep,ev)
end end
function cm.pop(e,tp,eg,ep,ev,re,r,rp,sg,og) function cm.pop(e,tp,eg,ep,ev,re,r,rp,sg,og)
if not PENDULUM_CHECKLIST then local lpz=Duel.GetFieldCard(tp,LOCATION_PZONE,0)
PENDULUM_CHECKLIST=0 if lpz==nil then return end
local ge1=Effect.GlobalEffect() --the summon should be done after the chain end
ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) local sg=Group.CreateGroup()
ge1:SetCode(EVENT_PHASE_START+PHASE_DRAW) local pspop=cm.pspop
ge1:SetOperation(Auxiliary.PendulumReset) pspop(e,tp,eg,ep,ev,re,r,rp,lpz,sg,nil)
Duel.RegisterEffect(ge1,0) if Duel.SpecialSummon(sg,SUMMON_TYPE_PENDULUM,tp,tp,false,false,POS_FACEUP)~=0 then
end Duel.RaiseEvent(e:GetHandler(),EVENT_CUSTOM+15000725,re,r,rp,ep,ev)
local pg=Duel.GetMatchingGroup(nil,tp,LOCATION_PZONE,0,nil)
if pg:GetCount()~=2 then return end
local cc=pg:GetFirst()
local lscale=cc:GetLeftScale()
local dc=pg:GetNext()
local rscale=dc:GetRightScale()
if lscale>rscale then
lscale=dc:GetRightScale()
rscale=cc:GetLeftScale()
end end
if (lscale==rscale or lscale==rscale-1 or lscale==rscale+1) then return end end
local eset={Duel.IsPlayerAffectedByEffect(tp,EFFECT_EXTRA_PENDULUM_SUMMON)} function cm.pspop(e,tp,eg,ep,ev,re,r,rp,lpz,sg,og)
local rpz=Duel.GetFieldCard(tp,LOCATION_PZONE,1)
local lscale=lpz:GetLeftScale()
local rscale=rpz:GetRightScale()
if lscale>rscale then lscale,rscale=rscale,lscale end
local tg=nil local tg=nil
local loc=0 local loc=0
local sc=Duel.GetMatchingGroup(cm.sumfilter,tp,LOCATION_EXTRA,0,nil):GetFirst()
local ft1=Duel.GetLocationCount(tp,LOCATION_MZONE) local ft1=Duel.GetLocationCount(tp,LOCATION_MZONE)
local ft2=0 local ft2=Duel.GetLocationCountFromEx(tp,tp,nil,TYPE_PENDULUM)
if sc then
ft2=Duel.GetLocationCountFromEx(tp,tp,nil,sc)
end
local ft=Duel.GetUsableMZoneCount(tp) local ft=Duel.GetUsableMZoneCount(tp)
local ect=99 local ect=c29724053 and Duel.IsPlayerAffectedByEffect(tp,29724053) and c29724053[tp]
if c29724053 and Duel.IsPlayerAffectedByEffect(tp,29724053) then
ect=c29724053[tp]
end
if ect and ect<ft2 then ft2=ect end if ect and ect<ft2 then ft2=ect end
if Duel.IsPlayerAffectedByEffect(tp,59822133) then if Duel.IsPlayerAffectedByEffect(tp,59822133) then
if ft1>0 then ft1=1 end if ft1>0 then ft1=1 end
if ft2>0 then ft2=1 end if ft2>0 then ft2=1 end
ft=1 ft=1
end end
if ft1>0 then loc=loc|LOCATION_HAND end if ft1>0 then loc=loc|LOCATION_HAND end
if ft2>0 then loc=loc|LOCATION_EXTRA end if ft2>0 then loc=loc|LOCATION_EXTRA end
if og then if og then
tg=og:Filter(Card.IsLocation,nil,loc):Filter(cm.PConditionFilter,nil,e,tp,lscale,rscale,eset) tg=og:Filter(Card.IsLocation,nil,loc):Filter(aux.PConditionFilter,nil,e,tp,lscale,rscale,eset)
else else
tg=Duel.GetMatchingGroup(cm.PConditionFilter,tp,loc,0,nil,e,tp,lscale,rscale,eset) tg=Duel.GetMatchingGroup(aux.PConditionFilter,tp,loc,0,nil,e,tp,lscale,rscale,eset)
end end
local ce=nil local ce=nil
local b1=PENDULUM_CHECKLIST&(0x1<<tp)==0
local b2=#eset>0
if b1 and b2 then
local options={1163}
for _,te in ipairs(eset) do
table.insert(options,te:GetDescription())
end
local op=Duel.SelectOption(tp,table.unpack(options))
if op>0 then
ce=eset[op]
end
elseif b2 and not b1 then
local options={}
for _,te in ipairs(eset) do
table.insert(options,te:GetDescription())
end
local op=Duel.SelectOption(tp,table.unpack(options))
ce=eset[op+1]
end
if ce then
tg=tg:Filter(aux.PConditionExtraFilterSpecific,nil,e,tp,lscale,rscale,ce)
end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
Auxiliary.GCheckAdditional=Auxiliary.PendOperationCheck(ft1,ft2,ft) aux.GCheckAdditional=aux.PendOperationCheck(ft1,ft2,ft)
local g=tg:SelectSubGroup(tp,aux.TRUE,true,1,math.min(#tg,ft)) local g=tg:SelectSubGroup(tp,aux.TRUE,true,1,math.min(#tg,ft))
Auxiliary.GCheckAdditional=nil aux.GCheckAdditional=nil
if not g then return end if not g then return end
if ce then sg:Merge(g)
Duel.Hint(HINT_CARD,0,ce:GetOwner():GetOriginalCode())
ce:Reset()
end
local lpz=Duel.GetFieldCard(tp,LOCATION_PZONE,0)
local rpz=Duel.GetFieldCard(tp,LOCATION_PZONE,1)
Duel.HintSelection(Group.FromCards(lpz)) Duel.HintSelection(Group.FromCards(lpz))
Duel.HintSelection(Group.FromCards(rpz)) Duel.HintSelection(Group.FromCards(rpz))
local spg=Group.CreateGroup()
for tc in aux.Next(g) do
local bool=aux.PendulumSummonableBool(tc)
if Duel.SpecialSummonStep(tc,SUMMON_TYPE_PENDULUM,tp,tp,bool,bool,POS_FACEUP) then spg:AddCard(tc) end
end
Duel.SpecialSummonComplete()
for tc in aux.Next(g) do tc:CompleteProcedure() end
if spg:GetCount()~=0 then
Duel.RaiseEvent(e:GetHandler(),EVENT_CUSTOM+15000725,re,r,rp,ep,ev)
end
end end
function cm.dop(e,tp,eg,ep,ev,re,r,rp) function cm.dop(e,tp,eg,ep,ev,re,r,rp)
if e:GetHandler():IsAbleToHand() then Duel.SendtoHand(e:GetHandler(),nil,REASON_EFFECT) end if e:GetHandler():IsAbleToHand() then Duel.SendtoHand(e:GetHandler(),nil,REASON_EFFECT) end
......
...@@ -19,9 +19,8 @@ function cm.initial_effect(c) ...@@ -19,9 +19,8 @@ function cm.initial_effect(c)
e2:SetType(EFFECT_TYPE_IGNITION) e2:SetType(EFFECT_TYPE_IGNITION)
e2:SetRange(LOCATION_PZONE) e2:SetRange(LOCATION_PZONE)
e2:SetCountLimit(1,15000726) e2:SetCountLimit(1,15000726)
e2:SetCondition(cm.pcon)
e2:SetTarget(cm.ptg) e2:SetTarget(cm.ptg)
e2:SetOperation(cm.aop) e2:SetOperation(cm.pop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
--switch and return --switch and return
local e3=Effect.CreateEffect(c) local e3=Effect.CreateEffect(c)
...@@ -36,15 +35,6 @@ function cm.initial_effect(c) ...@@ -36,15 +35,6 @@ function cm.initial_effect(c)
e4:SetCode(EVENT_SPSUMMON_SUCCESS) e4:SetCode(EVENT_SPSUMMON_SUCCESS)
e4:SetCondition(cm.condition) e4:SetCondition(cm.condition)
c:RegisterEffect(e4) c:RegisterEffect(e4)
--P
local e5=Effect.CreateEffect(c)
e5:SetCategory(CATEGORY_SPECIAL_SUMMON)
e5:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e5:SetRange(LOCATION_PZONE)
e5:SetCode(EVENT_CUSTOM+15000726)
e5:SetProperty(EFFECT_FLAG_DELAY)
e5:SetOperation(cm.pop)
c:RegisterEffect(e5)
--return --return
local e6=Effect.CreateEffect(c) local e6=Effect.CreateEffect(c)
e6:SetCategory(CATEGORY_TOHAND) e6:SetCategory(CATEGORY_TOHAND)
...@@ -67,175 +57,59 @@ end ...@@ -67,175 +57,59 @@ end
function cm.sumfilter(c) function cm.sumfilter(c)
return c:IsType(TYPE_PENDULUM) and c:IsFaceup() return c:IsType(TYPE_PENDULUM) and c:IsFaceup()
end end
function cm.PConditionFilter(c,e,tp,lscale,rscale,eset) function cm.check(e,tp)
local lv=0 local lpz=Duel.GetFieldCard(tp,LOCATION_PZONE,0)
if c.pendulum_level then if lpz==nil then return false end
lv=c.pendulum_level local pcon=aux.PendCondition()
else return pcon(e,lpz,g)
lv=c:GetLevel()
end
local bool=Auxiliary.PendulumSummonableBool(c)
return (c:IsLocation(LOCATION_HAND) or (c:IsFaceup() and c:IsType(TYPE_PENDULUM)))
and lv>lscale and lv<rscale and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_PENDULUM,tp,bool,bool)
and not c:IsForbidden()
and (PENDULUM_CHECKLIST&(0x1<<tp)==0 or Auxiliary.PConditionExtraFilter(c,e,tp,lscale,rscale,eset))
end
function cm.pcon(e,tp,eg,ep,ev,re,r,rp)
if not PENDULUM_CHECKLIST then
PENDULUM_CHECKLIST=0
local ge1=Effect.GlobalEffect()
ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
ge1:SetCode(EVENT_PHASE_START+PHASE_DRAW)
ge1:SetOperation(Auxiliary.PendulumReset)
Duel.RegisterEffect(ge1,0)
end
local eset={Duel.IsPlayerAffectedByEffect(tp,EFFECT_EXTRA_PENDULUM_SUMMON)}
local pg=Duel.GetMatchingGroup(nil,tp,LOCATION_PZONE,0,nil)
if pg:GetCount()~=2 then return false end
local cc=pg:GetFirst()
local lscale=cc:GetLeftScale()
local dc=pg:GetNext()
local rscale=dc:GetRightScale()
if lscale>rscale then
lscale=dc:GetRightScale()
rscale=cc:GetLeftScale()
end
if (lscale==rscale or lscale==rscale-1 or lscale==rscale+1) then return false end
local loc=0
local sc=Duel.GetMatchingGroup(cm.sumfilter,tp,LOCATION_EXTRA,0,nil):GetFirst()
if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then loc=loc+LOCATION_HAND end
if sc and Duel.GetLocationCountFromEx(tp,tp,nil,sc)>0 then loc=loc+LOCATION_EXTRA end
if loc==0 then return false end
local g=nil
if og then
g=og:Filter(Card.IsLocation,nil,loc)
else
g=Duel.GetFieldGroup(tp,loc,0)
end
return g:IsExists(cm.PConditionFilter,1,nil,e,tp,lscale,rscale,eset) and Duel.IsExistingMatchingCard(cm.cfilter,tp,LOCATION_PZONE,0,1,e:GetHandler())
end end
function cm.ptg(e,tp,eg,ep,ev,re,r,rp,chk) function cm.ptg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end if chk==0 then return cm.check(e,tp,nil) end
local eset={Duel.IsPlayerAffectedByEffect(tp,EFFECT_EXTRA_PENDULUM_SUMMON)}
local pg=Duel.GetMatchingGroup(nil,tp,LOCATION_PZONE,0,nil)
if pg:GetCount()~=2 then return false end
local cc=pg:GetFirst()
local lscale=cc:GetLeftScale()
local dc=pg:GetNext()
local rscale=dc:GetRightScale()
if lscale>rscale then
lscale=dc:GetRightScale()
rscale=cc:GetLeftScale()
end
local loc=0
local sc=Duel.GetMatchingGroup(cm.sumfilter,tp,LOCATION_EXTRA,0,nil):GetFirst()
if Duel.GetLocationCount(tp,LOCATION_MZONE)>0 then loc=loc+LOCATION_HAND end
if sc and Duel.GetLocationCountFromEx(tp,tp,nil,sc)>0 then loc=loc+LOCATION_EXTRA end
local g=nil
if og then
g=og:Filter(Card.IsLocation,nil,loc)
else
g=Duel.GetFieldGroup(tp,loc,0)
end
local yg=g:Filter(cm.PConditionFilter,nil,e,tp,lscale,rscale,eset)
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,yg,yg:GetCount(),tp,0)
end
function cm.aop(e,tp,eg,ep,ev,re,r,rp)
Duel.RaiseEvent(e:GetHandler(),EVENT_CUSTOM+15000726,re,r,rp,ep,ev)
end end
function cm.pop(e,tp,eg,ep,ev,re,r,rp,sg,og) function cm.pop(e,tp,eg,ep,ev,re,r,rp,sg,og)
if not PENDULUM_CHECKLIST then local lpz=Duel.GetFieldCard(tp,LOCATION_PZONE,0)
PENDULUM_CHECKLIST=0 if lpz==nil then return end
local ge1=Effect.GlobalEffect() --the summon should be done after the chain end
ge1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS) local sg=Group.CreateGroup()
ge1:SetCode(EVENT_PHASE_START+PHASE_DRAW) local pspop=cm.pspop
ge1:SetOperation(Auxiliary.PendulumReset) pspop(e,tp,eg,ep,ev,re,r,rp,lpz,sg,nil)
Duel.RegisterEffect(ge1,0) if Duel.SpecialSummon(sg,SUMMON_TYPE_PENDULUM,tp,tp,false,false,POS_FACEUP)~=0 then
end Duel.RaiseEvent(e:GetHandler(),EVENT_CUSTOM+15000727,re,r,rp,ep,ev)
local pg=Duel.GetMatchingGroup(nil,tp,LOCATION_PZONE,0,nil)
if pg:GetCount()~=2 then return end
local cc=pg:GetFirst()
local lscale=cc:GetLeftScale()
local dc=pg:GetNext()
local rscale=dc:GetRightScale()
if lscale>rscale then
lscale=dc:GetRightScale()
rscale=cc:GetLeftScale()
end end
if (lscale==rscale or lscale==rscale-1 or lscale==rscale+1) then return end end
local eset={Duel.IsPlayerAffectedByEffect(tp,EFFECT_EXTRA_PENDULUM_SUMMON)} function cm.pspop(e,tp,eg,ep,ev,re,r,rp,lpz,sg,og)
local rpz=Duel.GetFieldCard(tp,LOCATION_PZONE,1)
local lscale=lpz:GetLeftScale()
local rscale=rpz:GetRightScale()
if lscale>rscale then lscale,rscale=rscale,lscale end
local tg=nil local tg=nil
local loc=0 local loc=0
local sc=Duel.GetMatchingGroup(cm.sumfilter,tp,LOCATION_EXTRA,0,nil):GetFirst()
local ft1=Duel.GetLocationCount(tp,LOCATION_MZONE) local ft1=Duel.GetLocationCount(tp,LOCATION_MZONE)
local ft2=0 local ft2=Duel.GetLocationCountFromEx(tp,tp,nil,TYPE_PENDULUM)
if sc then
ft2=Duel.GetLocationCountFromEx(tp,tp,nil,sc)
end
local ft=Duel.GetUsableMZoneCount(tp) local ft=Duel.GetUsableMZoneCount(tp)
local ect=99 local ect=c29724053 and Duel.IsPlayerAffectedByEffect(tp,29724053) and c29724053[tp]
if c29724053 and Duel.IsPlayerAffectedByEffect(tp,29724053) then
ect=c29724053[tp]
end
if ect and ect<ft2 then ft2=ect end if ect and ect<ft2 then ft2=ect end
if Duel.IsPlayerAffectedByEffect(tp,59822133) then if Duel.IsPlayerAffectedByEffect(tp,59822133) then
if ft1>0 then ft1=1 end if ft1>0 then ft1=1 end
if ft2>0 then ft2=1 end if ft2>0 then ft2=1 end
ft=1 ft=1
end end
if ft1>0 then loc=loc|LOCATION_HAND end if ft1>0 then loc=loc|LOCATION_HAND end
if ft2>0 then loc=loc|LOCATION_EXTRA end if ft2>0 then loc=loc|LOCATION_EXTRA end
if og then if og then
tg=og:Filter(Card.IsLocation,nil,loc):Filter(cm.PConditionFilter,nil,e,tp,lscale,rscale,eset) tg=og:Filter(Card.IsLocation,nil,loc):Filter(aux.PConditionFilter,nil,e,tp,lscale,rscale,eset)
else else
tg=Duel.GetMatchingGroup(cm.PConditionFilter,tp,loc,0,nil,e,tp,lscale,rscale,eset) tg=Duel.GetMatchingGroup(aux.PConditionFilter,tp,loc,0,nil,e,tp,lscale,rscale,eset)
end end
local ce=nil local ce=nil
local b1=PENDULUM_CHECKLIST&(0x1<<tp)==0
local b2=#eset>0
if b1 and b2 then
local options={1163}
for _,te in ipairs(eset) do
table.insert(options,te:GetDescription())
end
local op=Duel.SelectOption(tp,table.unpack(options))
if op>0 then
ce=eset[op]
end
elseif b2 and not b1 then
local options={}
for _,te in ipairs(eset) do
table.insert(options,te:GetDescription())
end
local op=Duel.SelectOption(tp,table.unpack(options))
ce=eset[op+1]
end
if ce then
tg=tg:Filter(aux.PConditionExtraFilterSpecific,nil,e,tp,lscale,rscale,ce)
end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
Auxiliary.GCheckAdditional=Auxiliary.PendOperationCheck(ft1,ft2,ft) aux.GCheckAdditional=aux.PendOperationCheck(ft1,ft2,ft)
local g=tg:SelectSubGroup(tp,aux.TRUE,true,1,math.min(#tg,ft)) local g=tg:SelectSubGroup(tp,aux.TRUE,true,1,math.min(#tg,ft))
Auxiliary.GCheckAdditional=nil aux.GCheckAdditional=nil
if not g then return end if not g then return end
if ce then sg:Merge(g)
Duel.Hint(HINT_CARD,0,ce:GetOwner():GetOriginalCode())
ce:Reset()
end
local lpz=Duel.GetFieldCard(tp,LOCATION_PZONE,0)
local rpz=Duel.GetFieldCard(tp,LOCATION_PZONE,1)
Duel.HintSelection(Group.FromCards(lpz)) Duel.HintSelection(Group.FromCards(lpz))
Duel.HintSelection(Group.FromCards(rpz)) Duel.HintSelection(Group.FromCards(rpz))
local spg=Group.CreateGroup()
for tc in aux.Next(g) do
local bool=aux.PendulumSummonableBool(tc)
if Duel.SpecialSummonStep(tc,SUMMON_TYPE_PENDULUM,tp,tp,bool,bool,POS_FACEUP) then spg:AddCard(tc) end
end
Duel.SpecialSummonComplete()
for tc in aux.Next(g) do tc:CompleteProcedure() end
if spg:GetCount()~=0 then
Duel.RaiseEvent(e:GetHandler(),EVENT_CUSTOM+15000727,re,r,rp,ep,ev)
end
end end
function cm.dop(e,tp,eg,ep,ev,re,r,rp) function cm.dop(e,tp,eg,ep,ev,re,r,rp)
if e:GetHandler():IsAbleToHand() then Duel.SendtoHand(e:GetHandler(),nil,REASON_EFFECT) end if e:GetHandler():IsAbleToHand() then Duel.SendtoHand(e:GetHandler(),nil,REASON_EFFECT) end
......
...@@ -106,7 +106,8 @@ end ...@@ -106,7 +106,8 @@ end
function cm.tdop(e,tp,eg,ep,ev,re,r,rp) function cm.tdop(e,tp,eg,ep,ev,re,r,rp)
local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS) local tg=Duel.GetChainInfo(0,CHAININFO_TARGET_CARDS)
local sg=tg:Filter(Card.IsRelateToEffect,nil,e) local sg=tg:Filter(Card.IsRelateToEffect,nil,e)
if sg:GetCount()>0 and Duel.SendtoDeck(sg,nil,2,REASON_EFFECT)~=0 then if sg:GetCount()>0 and Duel.SendtoDeck(sg,nil,1,REASON_EFFECT)~=0 then
Duel.ShuffleDeck(tp)
Duel.BreakEffect() Duel.BreakEffect()
Duel.Draw(tp,1,REASON_EFFECT) Duel.Draw(tp,1,REASON_EFFECT)
end end
......
...@@ -70,9 +70,10 @@ function c65010026.penop(e,tp,eg,ep,ev,re,r,rp) ...@@ -70,9 +70,10 @@ function c65010026.penop(e,tp,eg,ep,ev,re,r,rp)
end end
end end
function c65010026.ffilter(c,fc,sub,mg,sg) function c65010026.ffilter(c,fc,sub,mg,sg)
if c:IsType(TYPE_TOKEN) then return false end
return not sg or sg:FilterCount(aux.TRUE,c)==0 return not sg or sg:FilterCount(aux.TRUE,c)==0
or (sg:IsExists(Card.IsFusionAttribute,1,c,c:GetFusionAttribute()) or (sg:IsExists(Card.IsFusionAttribute,1,c,c:GetFusionAttribute())
and not sg:IsExists(Card.IsRace,1,c,c:GetRace())) or c:IsType(TYPE_TOKEN) and not sg:IsExists(Card.IsRace,1,c,c:GetRace()))
end end
function c65010026.condition(e,tp,eg,ep,ev,re,r,rp) function c65010026.condition(e,tp,eg,ep,ev,re,r,rp)
local ph=Duel.GetCurrentPhase() local ph=Duel.GetCurrentPhase()
......
...@@ -64,9 +64,9 @@ function c65010028.ffilterfil(c,att,rac) ...@@ -64,9 +64,9 @@ function c65010028.ffilterfil(c,att,rac)
return c:IsAttribute(att) and c:IsRace(rac) return c:IsAttribute(att) and c:IsRace(rac)
end end
function c65010028.ffilter(c,fc,sub,mg,sg) function c65010028.ffilter(c,fc,sub,mg,sg)
if c:IsType(TYPE_TOKEN) then return false end
return not sg or sg:FilterCount(aux.TRUE,c)==0 return not sg or sg:FilterCount(aux.TRUE,c)==0
or sg:IsExists(c65010028.ffilterfil,1,c,c:GetFusionAttribute(),c:GetRace()) or sg:IsExists(c65010028.ffilterfil,1,c,c:GetFusionAttribute(),c:GetRace())
or c:IsType(TYPE_TOKEN)
end end
function c65010028.condition(e,tp,eg,ep,ev,re,r,rp) function c65010028.condition(e,tp,eg,ep,ev,re,r,rp)
local ph=Duel.GetCurrentPhase() local ph=Duel.GetCurrentPhase()
......
...@@ -37,6 +37,7 @@ function c67200404.operation(e,tp,eg,ep,ev,re,r,rp) ...@@ -37,6 +37,7 @@ function c67200404.operation(e,tp,eg,ep,ev,re,r,rp)
Duel.ConfirmDecktop(tp,1) Duel.ConfirmDecktop(tp,1)
--Duel.MoveSequence(tc,1) --Duel.MoveSequence(tc,1)
if tc:IsType(TYPE_MONSTER) and tc:IsSetCard(0x5671) then if tc:IsType(TYPE_MONSTER) and tc:IsSetCard(0x5671) then
Duel.DisableShuffleCheck()
Duel.SendtoHand(tc,nil,REASON_EFFECT) Duel.SendtoHand(tc,nil,REASON_EFFECT)
Duel.ConfirmCards(1-tp,tc) Duel.ConfirmCards(1-tp,tc)
local ct=tc:GetLevel() local ct=tc:GetLevel()
...@@ -49,22 +50,22 @@ function c67200404.operation(e,tp,eg,ep,ev,re,r,rp) ...@@ -49,22 +50,22 @@ function c67200404.operation(e,tp,eg,ep,ev,re,r,rp)
ttc:AddCounter(0x1,1) ttc:AddCounter(0x1,1)
ct=ct-1 ct=ct-1
end end
Duel.BreakEffect()
c:CancelToGrave()
Duel.SendtoDeck(e:GetHandler(),nil,1,REASON_EFFECT)
end end
end end
Duel.BreakEffect()
c:CancelToGrave()
Duel.SendtoDeck(e:GetHandler(),nil,1,REASON_EFFECT)
end end
-- --
function c67200404.thfilter(c) function c67200404.thfilter1(c)
return c:IsSetCard(0x5671) and c:IsAbleToDeck() return c:IsSetCard(0x5671) and c:IsAbleToDeck()
end end
function c67200404.thtg(e,tp,eg,ep,ev,re,r,rp,chk) function c67200404.thtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(c67200404.thfilter,tp,LOCATION_GRAVE,0,1,nil) and Duel.IsCanRemoveCounter(tp,1,0,0x1,1,REASON_COST) end if chk==0 then return Duel.IsExistingMatchingCard(c67200404.thfilter1,tp,LOCATION_GRAVE,0,1,nil) and Duel.IsCanRemoveCounter(tp,1,0,0x1,1,REASON_COST) end
local g=Duel.GetMatchingGroup(c67200404.thfilter,tp,LOCATION_GRAVE,0,nil) --
local g=Duel.GetMatchingGroup(c67200404.thfilter1,tp,LOCATION_GRAVE,0,nil)
local count=g:GetCount() local count=g:GetCount()
local lvt={} local lvt={}
local tc=g:GetFirst()
while count>0 do while count>0 do
local tlv=count local tlv=count
lvt[tlv]=tlv lvt[tlv]=tlv
...@@ -75,19 +76,48 @@ function c67200404.thtg(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -75,19 +76,48 @@ function c67200404.thtg(e,tp,eg,ep,ev,re,r,rp,chk)
if lvt[i] then lvt[i]=nil lvt[pc]=i pc=pc+1 end if lvt[i] then lvt[i]=nil lvt[pc]=i pc=pc+1 end
end end
lvt[pc]=nil lvt[pc]=nil
Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(67200404,2)) --
local lv=Duel.AnnounceNumber(tp,table.unpack(lvt)) local dgc=Duel.GetCounter(tp,LOCATION_ONFIELD,0,0x1)
Duel.RemoveCounter(tp,1,0,0x1,lv,REASON_COST) local lvt2={}
e:SetLabel(lv) while dgc>0 do
local tlv2=dgc
lvt2[tlv2]=tlv2
dgc=dgc-1
end
local pc2=1
for i2=1,Duel.GetCounter(tp,LOCATION_ONFIELD,0,0x1) do
if lvt2[i2] then lvt2[i2]=nil lvt2[pc2]=i2 pc2=pc2+1 end
end
lvt2[pc2]=nil
--
if g:GetCount()>16 then
Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(67200404,2))
local lv0=Duel.AnnounceNumber(tp,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16)
Duel.RemoveCounter(tp,1,0,0x1,lv0,REASON_COST)
e:SetLabel(lv0)
else
if g:GetCount()>dgc then
Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(67200404,2))
local lv=Duel.AnnounceNumber(tp,table.unpack(lvt))
Duel.RemoveCounter(tp,1,0,0x1,lv,REASON_COST)
e:SetLabel(lv)
else
Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(67200404,2))
local lv2=Duel.AnnounceNumber(tp,table.unpack(lvt2))
Duel.RemoveCounter(tp,1,0,0x1,lv2,REASON_COST)
e:SetLabel(lv2)
end
end
end end
function c67200404.thop(e,tp,eg,ep,ev,re,r,rp) function c67200404.thop(e,tp,eg,ep,ev,re,r,rp)
local lv=e:GetLabel() local lv3=e:GetLabel()
if not Duel.IsCanRemoveCounter(tp,1,0,0x1,lv,REASON_COST) then return end --if not Duel.IsCanRemoveCounter(tp,1,0,0x1,lv3,REASON_COST) then return end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK)
local g=Duel.SelectMatchingCard(tp,c67200404.thfilter,tp,LOCATION_GRAVE,0,lv,lv,nil) local g=Duel.SelectMatchingCard(tp,c67200404.thfilter1,tp,LOCATION_GRAVE,0,lv3,lv3,nil)
if g:GetCount()>0 then if g:GetCount()>0 then
--Duel.ConfirmCards(1-tp,g) --Duel.ConfirmCards(1-tp,g)
Duel.SendtoDeck(g,nil,0,REASON_EFFECT) Duel.DisableShuffleCheck()
Duel.SendtoDeck(g,nil,SEQ_DECKTOP,REASON_EFFECT)
local og=Duel.GetOperatedGroup() local og=Duel.GetOperatedGroup()
local ct=og:FilterCount(Card.IsLocation,nil,LOCATION_DECK) local ct=og:FilterCount(Card.IsLocation,nil,LOCATION_DECK)
if ct==0 then return end if ct==0 then return end
......
...@@ -48,15 +48,15 @@ function c67200406.activate(e,tp,eg,ep,ev,re,r,rp) ...@@ -48,15 +48,15 @@ function c67200406.activate(e,tp,eg,ep,ev,re,r,rp)
Duel.SendtoDeck(e:GetHandler(),nil,1,REASON_EFFECT) Duel.SendtoDeck(e:GetHandler(),nil,1,REASON_EFFECT)
end end
-- --
function c67200406.thfilter(c) function c67200406.thfilter1(c)
return c:IsSetCard(0x5671) and c:IsAbleToDeck() return c:IsSetCard(0x5671) and c:IsAbleToDeck()
end end
function c67200406.thtg(e,tp,eg,ep,ev,re,r,rp,chk) function c67200406.thtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(c67200406.thfilter,tp,LOCATION_GRAVE,0,1,nil) and Duel.IsCanRemoveCounter(tp,1,0,0x1,1,REASON_COST) end if chk==0 then return Duel.IsExistingMatchingCard(c67200406.thfilter1,tp,LOCATION_GRAVE,0,1,nil) and Duel.IsCanRemoveCounter(tp,1,0,0x1,1,REASON_COST) end
local g=Duel.GetMatchingGroup(c67200406.thfilter,tp,LOCATION_GRAVE,0,nil) --
local g=Duel.GetMatchingGroup(c67200406.thfilter1,tp,LOCATION_GRAVE,0,nil)
local count=g:GetCount() local count=g:GetCount()
local lvt={} local lvt={}
local tc=g:GetFirst()
while count>0 do while count>0 do
local tlv=count local tlv=count
lvt[tlv]=tlv lvt[tlv]=tlv
...@@ -67,19 +67,48 @@ function c67200406.thtg(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -67,19 +67,48 @@ function c67200406.thtg(e,tp,eg,ep,ev,re,r,rp,chk)
if lvt[i] then lvt[i]=nil lvt[pc]=i pc=pc+1 end if lvt[i] then lvt[i]=nil lvt[pc]=i pc=pc+1 end
end end
lvt[pc]=nil lvt[pc]=nil
Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(67200406,2)) --
local lv=Duel.AnnounceNumber(tp,table.unpack(lvt)) local dgc=Duel.GetCounter(tp,LOCATION_ONFIELD,0,0x1)
Duel.RemoveCounter(tp,1,0,0x1,lv,REASON_COST) local lvt2={}
e:SetLabel(lv) while dgc>0 do
local tlv2=dgc
lvt2[tlv2]=tlv2
dgc=dgc-1
end
local pc2=1
for i2=1,Duel.GetCounter(tp,LOCATION_ONFIELD,0,0x1) do
if lvt2[i2] then lvt2[i2]=nil lvt2[pc2]=i2 pc2=pc2+1 end
end
lvt2[pc2]=nil
--
if g:GetCount()>16 then
Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(67200406,2))
local lv0=Duel.AnnounceNumber(tp,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16)
Duel.RemoveCounter(tp,1,0,0x1,lv0,REASON_COST)
e:SetLabel(lv0)
else
if g:GetCount()>dgc then
Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(67200406,2))
local lv=Duel.AnnounceNumber(tp,table.unpack(lvt))
Duel.RemoveCounter(tp,1,0,0x1,lv,REASON_COST)
e:SetLabel(lv)
else
Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(67200406,2))
local lv2=Duel.AnnounceNumber(tp,table.unpack(lvt2))
Duel.RemoveCounter(tp,1,0,0x1,lv2,REASON_COST)
e:SetLabel(lv2)
end
end
end end
function c67200406.thop(e,tp,eg,ep,ev,re,r,rp) function c67200406.thop(e,tp,eg,ep,ev,re,r,rp)
local lv=e:GetLabel() local lv3=e:GetLabel()
if not Duel.IsCanRemoveCounter(tp,1,0,0x1,lv,REASON_COST) then return end --if not Duel.IsCanRemoveCounter(tp,1,0,0x1,lv3,REASON_COST) then return end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK)
local g=Duel.SelectMatchingCard(tp,c67200406.thfilter,tp,LOCATION_GRAVE,0,lv,lv,nil) local g=Duel.SelectMatchingCard(tp,c67200406.thfilter1,tp,LOCATION_GRAVE,0,lv3,lv3,nil)
if g:GetCount()>0 then if g:GetCount()>0 then
--Duel.ConfirmCards(1-tp,g) --Duel.ConfirmCards(1-tp,g)
Duel.SendtoDeck(g,nil,0,REASON_EFFECT) Duel.DisableShuffleCheck()
Duel.SendtoDeck(g,nil,SEQ_DECKTOP,REASON_EFFECT)
local og=Duel.GetOperatedGroup() local og=Duel.GetOperatedGroup()
local ct=og:FilterCount(Card.IsLocation,nil,LOCATION_DECK) local ct=og:FilterCount(Card.IsLocation,nil,LOCATION_DECK)
if ct==0 then return end if ct==0 then return end
...@@ -91,4 +120,3 @@ function c67200406.thop(e,tp,eg,ep,ev,re,r,rp) ...@@ -91,4 +120,3 @@ function c67200406.thop(e,tp,eg,ep,ev,re,r,rp)
end end
end end
...@@ -57,15 +57,15 @@ function c67200408.activate(e,tp,eg,ep,ev,re,r,rp) ...@@ -57,15 +57,15 @@ function c67200408.activate(e,tp,eg,ep,ev,re,r,rp)
Duel.SendtoDeck(e:GetHandler(),nil,1,REASON_EFFECT) Duel.SendtoDeck(e:GetHandler(),nil,1,REASON_EFFECT)
end end
-- --
function c67200408.thfilter(c) function c67200408.thfilter1(c)
return c:IsSetCard(0x5671) and c:IsAbleToDeck() return c:IsSetCard(0x5671) and c:IsAbleToDeck()
end end
function c67200408.thtg(e,tp,eg,ep,ev,re,r,rp,chk) function c67200408.thtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(c67200408.thfilter,tp,LOCATION_GRAVE,0,1,nil) and Duel.IsCanRemoveCounter(tp,1,0,0x1,1,REASON_COST) end if chk==0 then return Duel.IsExistingMatchingCard(c67200408.thfilter1,tp,LOCATION_GRAVE,0,1,nil) and Duel.IsCanRemoveCounter(tp,1,0,0x1,1,REASON_COST) end
local g=Duel.GetMatchingGroup(c67200408.thfilter,tp,LOCATION_GRAVE,0,nil) --
local g=Duel.GetMatchingGroup(c67200408.thfilter1,tp,LOCATION_GRAVE,0,nil)
local count=g:GetCount() local count=g:GetCount()
local lvt={} local lvt={}
local tc=g:GetFirst()
while count>0 do while count>0 do
local tlv=count local tlv=count
lvt[tlv]=tlv lvt[tlv]=tlv
...@@ -76,19 +76,48 @@ function c67200408.thtg(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -76,19 +76,48 @@ function c67200408.thtg(e,tp,eg,ep,ev,re,r,rp,chk)
if lvt[i] then lvt[i]=nil lvt[pc]=i pc=pc+1 end if lvt[i] then lvt[i]=nil lvt[pc]=i pc=pc+1 end
end end
lvt[pc]=nil lvt[pc]=nil
Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(67200408,2)) --
local lv=Duel.AnnounceNumber(tp,table.unpack(lvt)) local dgc=Duel.GetCounter(tp,LOCATION_ONFIELD,0,0x1)
Duel.RemoveCounter(tp,1,0,0x1,lv,REASON_COST) local lvt2={}
e:SetLabel(lv) while dgc>0 do
local tlv2=dgc
lvt2[tlv2]=tlv2
dgc=dgc-1
end
local pc2=1
for i2=1,Duel.GetCounter(tp,LOCATION_ONFIELD,0,0x1) do
if lvt2[i2] then lvt2[i2]=nil lvt2[pc2]=i2 pc2=pc2+1 end
end
lvt2[pc2]=nil
--
if g:GetCount()>16 then
Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(67200408,2))
local lv0=Duel.AnnounceNumber(tp,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16)
Duel.RemoveCounter(tp,1,0,0x1,lv0,REASON_COST)
e:SetLabel(lv0)
else
if g:GetCount()>dgc then
Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(67200408,2))
local lv=Duel.AnnounceNumber(tp,table.unpack(lvt))
Duel.RemoveCounter(tp,1,0,0x1,lv,REASON_COST)
e:SetLabel(lv)
else
Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(67200408,2))
local lv2=Duel.AnnounceNumber(tp,table.unpack(lvt2))
Duel.RemoveCounter(tp,1,0,0x1,lv2,REASON_COST)
e:SetLabel(lv2)
end
end
end end
function c67200408.thop(e,tp,eg,ep,ev,re,r,rp) function c67200408.thop(e,tp,eg,ep,ev,re,r,rp)
local lv=e:GetLabel() local lv3=e:GetLabel()
if not Duel.IsCanRemoveCounter(tp,1,0,0x1,lv,REASON_COST) then return end --if not Duel.IsCanRemoveCounter(tp,1,0,0x1,lv3,REASON_COST) then return end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK)
local g=Duel.SelectMatchingCard(tp,c67200408.thfilter,tp,LOCATION_GRAVE,0,lv,lv,nil) local g=Duel.SelectMatchingCard(tp,c67200408.thfilter1,tp,LOCATION_GRAVE,0,lv3,lv3,nil)
if g:GetCount()>0 then if g:GetCount()>0 then
--Duel.ConfirmCards(1-tp,g) --Duel.ConfirmCards(1-tp,g)
Duel.SendtoDeck(g,nil,0,REASON_EFFECT) Duel.DisableShuffleCheck()
Duel.SendtoDeck(g,nil,SEQ_DECKTOP,REASON_EFFECT)
local og=Duel.GetOperatedGroup() local og=Duel.GetOperatedGroup()
local ct=og:FilterCount(Card.IsLocation,nil,LOCATION_DECK) local ct=og:FilterCount(Card.IsLocation,nil,LOCATION_DECK)
if ct==0 then return end if ct==0 then return end
...@@ -100,6 +129,3 @@ function c67200408.thop(e,tp,eg,ep,ev,re,r,rp) ...@@ -100,6 +129,3 @@ function c67200408.thop(e,tp,eg,ep,ev,re,r,rp)
end end
end end
...@@ -43,7 +43,7 @@ function c67200432.spcon(e,tp,eg,ep,ev,re,r,rp) ...@@ -43,7 +43,7 @@ function c67200432.spcon(e,tp,eg,ep,ev,re,r,rp)
return Duel.IsChainNegatable(ev) and (re:IsActiveType(TYPE_MONSTER) or re:IsHasType(EFFECT_TYPE_ACTIVATE)) return Duel.IsChainNegatable(ev) and (re:IsActiveType(TYPE_MONSTER) or re:IsHasType(EFFECT_TYPE_ACTIVATE))
end end
function c67200432.sptg(e,tp,eg,ep,ev,re,r,rp,chk) function c67200432.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler() local c=e:GetHandler()
if chk==0 then return aux.nbcon(tp,re) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end if chk==0 then return aux.nbcon(tp,re) and Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and c:IsCanBeSpecialSummoned(e,0,tp,false,false) end
Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0) Duel.SetOperationInfo(0,CATEGORY_NEGATE,eg,1,0,0)
if re:GetHandler():IsRelateToEffect(re) then if re:GetHandler():IsRelateToEffect(re) then
...@@ -52,8 +52,10 @@ function c67200432.sptg(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -52,8 +52,10 @@ function c67200432.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
end end
function c67200432.spop(e,tp,eg,ep,ev,re,r,rp) function c67200432.spop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
local rc=re:GetHandler()
if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then if Duel.NegateActivation(ev) and re:GetHandler():IsRelateToEffect(re) then
Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP) Duel.SpecialSummon(c,0,tp,tp,false,false,POS_FACEUP)
rc:CancelToGrave()
Duel.Overlay(c,eg) Duel.Overlay(c,eg)
end end
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