Commit 6a9c6e0a authored by Chrono-Genex's avatar Chrono-Genex Committed by GitHub

update special summon proc (#1757)

parent ecdfe759
...@@ -9,6 +9,7 @@ function c10000040.initial_effect(c) ...@@ -9,6 +9,7 @@ function c10000040.initial_effect(c)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_HAND) e1:SetRange(LOCATION_HAND)
e1:SetCondition(c10000040.spcon) e1:SetCondition(c10000040.spcon)
e1:SetTarget(c10000040.sptg)
e1:SetOperation(c10000040.spop) e1:SetOperation(c10000040.spop)
c:RegisterEffect(e1) c:RegisterEffect(e1)
--spsummon condition --spsummon condition
...@@ -31,24 +32,27 @@ function c10000040.initial_effect(c) ...@@ -31,24 +32,27 @@ function c10000040.initial_effect(c)
e4:SetOperation(c10000040.winop) e4:SetOperation(c10000040.winop)
c:RegisterEffect(e4) c:RegisterEffect(e4)
end end
function c10000040.spfilter(c,code) c10000040.spchecks=aux.CreateChecks(Card.IsOriginalCodeRule,{10000020,10000000,10000010})
return c:IsOriginalCodeRule(code)
end
function c10000040.spcon(e,c) function c10000040.spcon(e,c)
if c==nil then return true end if c==nil then return true end
local tp=c:GetControler() local tp=c:GetControler()
return Duel.GetLocationCount(tp,LOCATION_MZONE)>-3 local g=Duel.GetReleaseGroup(tp)
and Duel.CheckReleaseGroup(tp,c10000040.spfilter,1,nil,10000000) return g:CheckSubGroupEach(c10000040.spchecks,aux.mzctcheckrel,tp)
and Duel.CheckReleaseGroup(tp,c10000040.spfilter,1,nil,10000010) end
and Duel.CheckReleaseGroup(tp,c10000040.spfilter,1,nil,10000020) function c10000040.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
local g=Duel.GetReleaseGroup(tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
local sg=g:SelectSubGroupEach(tp,c10000040.spchecks,true,aux.mzctcheckrel,tp)
if sg then
sg:KeepAlive()
e:SetLabelObject(sg)
return true
else return false end
end end
function c10000040.spop(e,tp,eg,ep,ev,re,r,rp,c) function c10000040.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g1=Duel.SelectReleaseGroup(tp,c10000040.spfilter,1,1,nil,10000000) local g=e:GetLabelObject()
local g2=Duel.SelectReleaseGroup(tp,c10000040.spfilter,1,1,nil,10000010) Duel.Release(g,REASON_COST)
local g3=Duel.SelectReleaseGroup(tp,c10000040.spfilter,1,1,nil,10000020) g:DeleteGroup()
g1:Merge(g2)
g1:Merge(g3)
Duel.Release(g1,REASON_COST)
end end
function c10000040.winop(e,tp,eg,ep,ev,re,r,rp) function c10000040.winop(e,tp,eg,ep,ev,re,r,rp)
local WIN_REASON_CREATORGOD=0x13 local WIN_REASON_CREATORGOD=0x13
......
...@@ -10,6 +10,7 @@ function c102380.initial_effect(c) ...@@ -10,6 +10,7 @@ function c102380.initial_effect(c)
e1:SetRange(LOCATION_HAND) e1:SetRange(LOCATION_HAND)
e1:SetTargetRange(POS_FACEUP,1) e1:SetTargetRange(POS_FACEUP,1)
e1:SetCondition(c102380.spcon) e1:SetCondition(c102380.spcon)
e1:SetTarget(c102380.sptg)
e1:SetOperation(c102380.spop) e1:SetOperation(c102380.spop)
c:RegisterEffect(e1) c:RegisterEffect(e1)
--damage --damage
...@@ -33,27 +34,29 @@ function c102380.initial_effect(c) ...@@ -33,27 +34,29 @@ function c102380.initial_effect(c)
e3:SetOperation(c102380.spcop) e3:SetOperation(c102380.spcop)
c:RegisterEffect(e3) c:RegisterEffect(e3)
end end
function c102380.filter1(c,tp,rg) function c102380.fselect(g,tp)
return rg:IsExists(c102380.filter2,1,c,tp,c) return Duel.GetMZoneCount(1-tp,g,tp)>0
end
function c102380.filter2(c,tp,mc)
local mg=Group.FromCards(c,mc)
return Duel.GetMZoneCount(1-tp,mg,tp)>0
end end
function c102380.spcon(e,c) function c102380.spcon(e,c)
if c==nil then return true end if c==nil then return true end
local tp=c:GetControler() local tp=c:GetControler()
local rg=Duel.GetMatchingGroup(Card.IsReleasable,tp,0,LOCATION_MZONE,nil) local rg=Duel.GetMatchingGroup(Card.IsReleasable,tp,0,LOCATION_MZONE,nil)
return rg:IsExists(c102380.filter1,1,nil,tp,rg) return rg:CheckSubGroup(c102380.fselect,2,2,tp)
end end
function c102380.spop(e,tp,eg,ep,ev,re,r,rp,c) function c102380.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
local rg=Duel.GetMatchingGroup(Card.IsReleasable,tp,0,LOCATION_MZONE,nil) local rg=Duel.GetMatchingGroup(Card.IsReleasable,tp,0,LOCATION_MZONE,nil)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
local g=rg:FilterSelect(tp,c102380.filter1,1,1,nil,tp,rg) local sg=rg:SelectSubGroup(tp,c102380.fselect,true,2,2,tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) if sg then
local g2=rg:FilterSelect(tp,c102380.filter2,1,1,g:GetFirst(),tp,g:GetFirst()) sg:KeepAlive()
g:Merge(g2) e:SetLabelObject(sg)
return true
else return false end
end
function c102380.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g=e:GetLabelObject()
Duel.Release(g,REASON_COST) Duel.Release(g,REASON_COST)
g:DeleteGroup()
end end
function c102380.damcon(e,tp,eg,ep,ev,re,r,rp) function c102380.damcon(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetTurnPlayer()==tp return Duel.GetTurnPlayer()==tp
......
...@@ -14,6 +14,7 @@ function c13250922.initial_effect(c) ...@@ -14,6 +14,7 @@ function c13250922.initial_effect(c)
e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e2:SetRange(LOCATION_HAND) e2:SetRange(LOCATION_HAND)
e2:SetCondition(c13250922.spcon) e2:SetCondition(c13250922.spcon)
e2:SetTarget(c13250922.sptg)
e2:SetOperation(c13250922.spop) e2:SetOperation(c13250922.spop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
--destroy --destroy
...@@ -34,13 +35,24 @@ function c13250922.spfilter(c) ...@@ -34,13 +35,24 @@ function c13250922.spfilter(c)
end end
function c13250922.spcon(e,c) function c13250922.spcon(e,c)
if c==nil then return true end if c==nil then return true end
return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 local tp=c:GetControler()
and Duel.IsExistingMatchingCard(c13250922.spfilter,c:GetControler(),LOCATION_ONFIELD,0,2,nil) local g=Duel.GetMatchingGroup(c13250922.spfilter,tp,LOCATION_ONFIELD,0,nil)
return g:CheckSubGroup(aux.mzctcheck,2,2,tp)
end end
function c13250922.spop(e,tp,eg,ep,ev,re,r,rp,c) function c13250922.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
local g=Duel.GetMatchingGroup(c13250922.spfilter,tp,LOCATION_ONFIELD,0,nil)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local g=Duel.SelectMatchingCard(tp,c13250922.spfilter,tp,LOCATION_ONFIELD,0,2,2,nil) local sg=g:SelectSubGroup(tp,aux.mzctcheck,true,2,2,tp)
if sg then
sg:KeepAlive()
e:SetLabelObject(sg)
return true
else return false end
end
function c13250922.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g=e:GetLabelObject()
Duel.SendtoGrave(g,REASON_COST) Duel.SendtoGrave(g,REASON_COST)
g:DeleteGroup()
end end
function c13250922.filter(c) function c13250922.filter(c)
return c:IsType(TYPE_SPELL+TYPE_TRAP) return c:IsType(TYPE_SPELL+TYPE_TRAP)
......
...@@ -8,6 +8,7 @@ function c14466224.initial_effect(c) ...@@ -8,6 +8,7 @@ function c14466224.initial_effect(c)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_HAND) e1:SetRange(LOCATION_HAND)
e1:SetCondition(c14466224.spcon) e1:SetCondition(c14466224.spcon)
e1:SetTarget(c14466224.sptg)
e1:SetOperation(c14466224.spop) e1:SetOperation(c14466224.spop)
c:RegisterEffect(e1) c:RegisterEffect(e1)
--equip --equip
...@@ -26,20 +27,32 @@ end ...@@ -26,20 +27,32 @@ end
function c14466224.gfilter(c) function c14466224.gfilter(c)
return c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost() return c:IsType(TYPE_MONSTER) and c:IsAbleToRemoveAsCost()
end end
function c14466224.fcheck(c,g)
return c:IsLocation(LOCATION_GRAVE) and g:IsExists(Card.IsLocation,2,c,LOCATION_MZONE)
end
function c14466224.fselect(g,tp)
return aux.mzctcheck(g,tp) and g:IsExists(c14466224.fcheck,1,nil,g)
end
function c14466224.spcon(e,c) function c14466224.spcon(e,c)
if c==nil then return true end if c==nil then return true end
local tp=c:GetControler() local tp=c:GetControler()
return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 local g=Duel.GetMatchingGroup(c14466224.gfilter,tp,LOCATION_MZONE+LOCATION_GRAVE,0,nil)
and Duel.IsExistingMatchingCard(Card.IsAbleToRemoveAsCost,tp,LOCATION_MZONE,0,2,nil) return g:CheckSubGroup(c14466224.fselect,3,3,tp)
and Duel.IsExistingMatchingCard(c14466224.gfilter,tp,LOCATION_GRAVE,0,1,nil)
end end
function c14466224.spop(e,tp,eg,ep,ev,re,r,rp,c) function c14466224.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
local g=Duel.GetMatchingGroup(c14466224.gfilter,tp,LOCATION_MZONE+LOCATION_GRAVE,0,nil)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
local g1=Duel.SelectMatchingCard(tp,Card.IsAbleToRemoveAsCost,tp,LOCATION_MZONE,0,2,2,nil) local sg=g:SelectSubGroup(tp,c14466224.fselect,true,3,3,tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) if sg then
local g2=Duel.SelectMatchingCard(tp,c14466224.gfilter,tp,LOCATION_GRAVE,0,1,1,nil) sg:KeepAlive()
g1:Merge(g2) e:SetLabelObject(sg)
Duel.Remove(g1,POS_FACEUP,REASON_COST) return true
else return false end
end
function c14466224.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g=e:GetLabelObject()
Duel.Remove(g,POS_FACEUP,REASON_COST)
g:DeleteGroup()
end end
function c14466224.eqcon(e,tp,eg,ep,ev,re,r,rp) function c14466224.eqcon(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
......
...@@ -14,6 +14,7 @@ function c14799437.initial_effect(c) ...@@ -14,6 +14,7 @@ function c14799437.initial_effect(c)
e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e2:SetRange(LOCATION_HAND+LOCATION_GRAVE) e2:SetRange(LOCATION_HAND+LOCATION_GRAVE)
e2:SetCondition(c14799437.spcon) e2:SetCondition(c14799437.spcon)
e2:SetTarget(c14799437.sptg)
e2:SetOperation(c14799437.spop) e2:SetOperation(c14799437.spop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
--destroy --destroy
...@@ -55,42 +56,27 @@ function c14799437.spcon(e,c) ...@@ -55,42 +56,27 @@ function c14799437.spcon(e,c)
local tp=c:GetControler() local tp=c:GetControler()
local sum=Duel.GetMatchingGroup(c14799437.sumfilter,tp,LOCATION_MZONE,0,nil):GetSum(c14799437.lv_or_rk) local sum=Duel.GetMatchingGroup(c14799437.sumfilter,tp,LOCATION_MZONE,0,nil):GetSum(c14799437.lv_or_rk)
if sum>8 then return false end if sum>8 then return false end
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local loc=LOCATION_GRAVE+LOCATION_HAND
if ft<-2 then return false end if c:IsHasEffect(34822850) then loc=loc+LOCATION_MZONE end
if c:IsHasEffect(34822850) then local g=Duel.GetMatchingGroup(c14799437.spfilter,tp,loc,0,c)
if ft>0 then return g:CheckSubGroup(aux.mzctcheck,3,3,tp)
return Duel.IsExistingMatchingCard(c14799437.spfilter,tp,LOCATION_MZONE+LOCATION_GRAVE+LOCATION_HAND,0,3,c)
else
local ct=-ft+1
return Duel.IsExistingMatchingCard(c14799437.spfilter,tp,LOCATION_MZONE,0,ct,nil)
and Duel.IsExistingMatchingCard(c14799437.spfilter,tp,LOCATION_MZONE+LOCATION_GRAVE+LOCATION_HAND,0,3,c)
end
else
return ft>0 and Duel.IsExistingMatchingCard(c14799437.spfilter,tp,LOCATION_GRAVE+LOCATION_HAND,0,3,c)
end
end end
function c14799437.spop(e,tp,eg,ep,ev,re,r,rp,c) function c14799437.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local loc=LOCATION_GRAVE+LOCATION_HAND
local g=nil if c:IsHasEffect(34822850) then loc=loc+LOCATION_MZONE end
local g=Duel.GetMatchingGroup(c14799437.spfilter,tp,loc,0,c)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
if c:IsHasEffect(34822850) then local sg=g:SelectSubGroup(tp,aux.mzctcheck,true,3,3,tp)
if ft>0 then if sg then
g=Duel.SelectMatchingCard(tp,c14799437.spfilter,tp,LOCATION_MZONE+LOCATION_GRAVE+LOCATION_HAND,0,3,3,c) sg:KeepAlive()
else e:SetLabelObject(sg)
local sg=Duel.GetMatchingGroup(c14799437.spfilter,tp,LOCATION_MZONE+LOCATION_GRAVE+LOCATION_HAND,0,c) return true
local ct=-ft+1 else return false end
g=sg:FilterSelect(tp,Card.IsLocation,ct,ct,nil,LOCATION_MZONE) end
if ct<3 then function c14799437.spop(e,tp,eg,ep,ev,re,r,rp,c)
sg:Sub(g) local g=e:GetLabelObject()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
local g2=sg:Select(tp,3-ct,3-ct,nil)
g:Merge(g2)
end
end
else
g=Duel.SelectMatchingCard(tp,c14799437.spfilter,tp,LOCATION_GRAVE+LOCATION_HAND,0,3,3,c)
end
Duel.Remove(g,POS_FACEUP,REASON_COST) Duel.Remove(g,POS_FACEUP,REASON_COST)
g:DeleteGroup()
end end
function c14799437.destg(e,tp,eg,ep,ev,re,r,rp,chk) function c14799437.destg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(aux.TRUE,tp,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) end if chk==0 then return Duel.IsExistingMatchingCard(aux.TRUE,tp,LOCATION_MZONE,LOCATION_MZONE,1,e:GetHandler()) end
......
...@@ -8,6 +8,7 @@ function c15574615.initial_effect(c) ...@@ -8,6 +8,7 @@ function c15574615.initial_effect(c)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_HAND) e1:SetRange(LOCATION_HAND)
e1:SetCondition(c15574615.spcon) e1:SetCondition(c15574615.spcon)
e1:SetTarget(c15574615.sptg)
e1:SetOperation(c15574615.spop) e1:SetOperation(c15574615.spop)
c:RegisterEffect(e1) c:RegisterEffect(e1)
--spsummon --spsummon
...@@ -33,11 +34,20 @@ function c15574615.spcon(e,c) ...@@ -33,11 +34,20 @@ function c15574615.spcon(e,c)
local g=Duel.GetMatchingGroup(c15574615.spcostfilter,tp,LOCATION_HAND+LOCATION_MZONE,0,nil) local g=Duel.GetMatchingGroup(c15574615.spcostfilter,tp,LOCATION_HAND+LOCATION_MZONE,0,nil)
return g:CheckSubGroupEach(c15574615.spchecks,aux.mzctcheck,tp) return g:CheckSubGroupEach(c15574615.spchecks,aux.mzctcheck,tp)
end end
function c15574615.spop(e,tp,eg,ep,ev,re,r,rp,c) function c15574615.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
local g=Duel.GetMatchingGroup(c15574615.spcostfilter,tp,LOCATION_HAND+LOCATION_MZONE,0,nil) local g=Duel.GetMatchingGroup(c15574615.spcostfilter,tp,LOCATION_HAND+LOCATION_MZONE,0,nil)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local sg=g:SelectSubGroupEach(tp,c15574615.spchecks,false,aux.mzctcheck,tp) local sg=g:SelectSubGroupEach(tp,c15574615.spchecks,true,aux.mzctcheck,tp)
Duel.SendtoGrave(sg,REASON_COST) if sg then
sg:KeepAlive()
e:SetLabelObject(sg)
return true
else return false end
end
function c15574615.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g=e:GetLabelObject()
Duel.SendtoGrave(g,REASON_COST)
g:DeleteGroup()
end end
function c15574615.cost(e,tp,eg,ep,ev,re,r,rp,chk) function c15574615.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():IsReleasable() end if chk==0 then return e:GetHandler():IsReleasable() end
......
...@@ -36,6 +36,7 @@ function c16306932.initial_effect(c) ...@@ -36,6 +36,7 @@ function c16306932.initial_effect(c)
e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e4:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e4:SetRange(LOCATION_HAND) e4:SetRange(LOCATION_HAND)
e4:SetCondition(c16306932.hspcon) e4:SetCondition(c16306932.hspcon)
e4:SetTarget(c16306932.hsptg)
e4:SetOperation(c16306932.hspop) e4:SetOperation(c16306932.hspop)
c:RegisterEffect(e4) c:RegisterEffect(e4)
--tohand --tohand
...@@ -70,6 +71,7 @@ function c16306932.initial_effect(c) ...@@ -70,6 +71,7 @@ function c16306932.initial_effect(c)
e8:SetOperation(c16306932.tdop) e8:SetOperation(c16306932.tdop)
c:RegisterEffect(e8) c:RegisterEffect(e8)
end end
c16306932.spchecks=aux.CreateChecks(Card.IsType,{TYPE_FUSION,TYPE_SYNCHRO,TYPE_XYZ})
function c16306932.psplimit(e,c,tp,sumtp,sumpos) function c16306932.psplimit(e,c,tp,sumtp,sumpos)
return not c:IsRace(RACE_DRAGON) and bit.band(sumtp,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM return not c:IsRace(RACE_DRAGON) and bit.band(sumtp,SUMMON_TYPE_PENDULUM)==SUMMON_TYPE_PENDULUM
end end
...@@ -92,44 +94,26 @@ function c16306932.spop(e,tp,eg,ep,ev,re,r,rp) ...@@ -92,44 +94,26 @@ function c16306932.spop(e,tp,eg,ep,ev,re,r,rp)
Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP) Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)
end end
end end
function c16306932.hspfilter1(c,g,ft)
local rg=Group.FromCards(c)
local ct=ft
if c:IsLocation(LOCATION_MZONE) and c:GetSequence()<5 then ct=ct+1 end
return c:IsType(TYPE_FUSION) and g:IsExists(c16306932.hspfilter2,1,rg,g,rg,ft)
end
function c16306932.hspfilter2(c,g,rg,ft)
local rg2=rg:Clone()
rg2:AddCard(c)
local ct=ft
if c:IsLocation(LOCATION_MZONE) and c:GetSequence()<5 then ct=ct+1 end
return c:IsType(TYPE_SYNCHRO) and g:IsExists(c16306932.hspfilter3,1,rg2,ft)
end
function c16306932.hspfilter3(c,ft)
local ct=ft
if c:IsLocation(LOCATION_MZONE) and c:GetSequence()<5 then ct=ct+1 end
return c:IsType(TYPE_XYZ) and ct>0
end
function c16306932.hspcon(e,c) function c16306932.hspcon(e,c)
if c==nil then return true end if c==nil then return true end
local tp=c:GetControler() local tp=c:GetControler()
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
if ft<-2 then return false end
local g=Duel.GetReleaseGroup(tp):Filter(Card.IsRace,nil,RACE_DRAGON) local g=Duel.GetReleaseGroup(tp):Filter(Card.IsRace,nil,RACE_DRAGON)
return g:IsExists(c16306932.hspfilter1,1,nil,g,ft) return g:CheckSubGroupEach(c16306932.spchecks,aux.mzctcheckrel,tp)
end end
function c16306932.hspop(e,tp,eg,ep,ev,re,r,rp,c) function c16306932.hsptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
local g=Duel.GetReleaseGroup(tp):Filter(Card.IsRace,nil,RACE_DRAGON) local g=Duel.GetReleaseGroup(tp):Filter(Card.IsRace,nil,RACE_DRAGON)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
local g1=g:FilterSelect(tp,c16306932.hspfilter1,1,1,nil,g,ft) local sg=g:SelectSubGroupEach(tp,c16306932.spchecks,true,aux.mzctcheckrel,tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) if sg then
local g2=g:FilterSelect(tp,c16306932.hspfilter2,1,1,g1,g,g1,ft) sg:KeepAlive()
g1:Merge(g2) e:SetLabelObject(sg)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) return true
local g3=g:FilterSelect(tp,c16306932.hspfilter3,1,1,g1,ft) else return false end
g1:Merge(g3) end
Duel.Release(g1,REASON_COST+REASON_MATERIAL) function c16306932.hspop(e,tp,eg,ep,ev,re,r,rp,c)
local g=e:GetLabelObject()
Duel.Release(g,REASON_COST)
g:DeleteGroup()
end end
function c16306932.thcost(e,tp,eg,ep,ev,re,r,rp,chk) function c16306932.thcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():IsDiscardable() and Duel.CheckLPCost(tp,500) end if chk==0 then return e:GetHandler():IsDiscardable() and Duel.CheckLPCost(tp,500) end
......
...@@ -16,6 +16,7 @@ function c16886617.initial_effect(c) ...@@ -16,6 +16,7 @@ function c16886617.initial_effect(c)
e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e2:SetRange(LOCATION_HAND) e2:SetRange(LOCATION_HAND)
e2:SetCondition(c16886617.spcon) e2:SetCondition(c16886617.spcon)
e2:SetTarget(c16886617.sptg)
e2:SetOperation(c16886617.spop) e2:SetOperation(c16886617.spop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
--destroy --destroy
...@@ -33,34 +34,26 @@ end ...@@ -33,34 +34,26 @@ end
function c16886617.rfilter(c) function c16886617.rfilter(c)
return c:IsFaceup() and c:IsAttack(0) and c:IsReleasable() return c:IsFaceup() and c:IsAttack(0) and c:IsReleasable()
end end
function c16886617.mzfilter(c)
return c:IsFaceup() and c:IsAttack(0) and c:IsReleasable() and c:GetSequence()<5
end
function c16886617.spcon(e,c) function c16886617.spcon(e,c)
if c==nil then return true end if c==nil then return true end
local tp=c:GetControler() local tp=c:GetControler()
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local rg=Duel.GetMatchingGroup(c16886617.rfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil)
local ct=-ft+1 return rg:CheckSubGroup(aux.mzctcheck,2,2,tp)
if ct>2 then return false end
if ct>0 and not Duel.IsExistingMatchingCard(c16886617.mzfilter,tp,LOCATION_MZONE,0,ct,nil) then return false end
return Duel.IsExistingMatchingCard(c16886617.rfilter,tp,LOCATION_MZONE,LOCATION_MZONE,2,nil)
end end
function c16886617.spop(e,tp,eg,ep,ev,re,r,rp,c) function c16886617.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local rg=Duel.GetMatchingGroup(c16886617.rfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil)
local ct=-ft+1
if ct<0 then ct=0 end
local g=Group.CreateGroup()
if ct>0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
local sg=Duel.SelectMatchingCard(tp,c16886617.mzfilter,tp,LOCATION_MZONE,0,ct,ct,nil)
g:Merge(sg)
end
if ct<2 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
local sg=Duel.SelectMatchingCard(tp,c16886617.rfilter,tp,LOCATION_MZONE,LOCATION_MZONE,2-ct,2-ct,g:GetFirst()) local sg=rg:SelectSubGroup(tp,aux.mzctcheck,true,2,2,tp)
g:Merge(sg) if sg then
end sg:KeepAlive()
e:SetLabelObject(sg)
return true
else return false end
end
function c16886617.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g=e:GetLabelObject()
Duel.Release(g,REASON_COST) Duel.Release(g,REASON_COST)
g:DeleteGroup()
end end
function c16886617.desfilter(c) function c16886617.desfilter(c)
return c:IsFaceup() return c:IsFaceup()
......
...@@ -16,6 +16,7 @@ function c17132130.initial_effect(c) ...@@ -16,6 +16,7 @@ function c17132130.initial_effect(c)
e2:SetRange(LOCATION_HAND) e2:SetRange(LOCATION_HAND)
e2:SetValue(SUMMON_VALUE_SELF) e2:SetValue(SUMMON_VALUE_SELF)
e2:SetCondition(c17132130.spcon) e2:SetCondition(c17132130.spcon)
e2:SetTarget(c17132130.sptg)
e2:SetOperation(c17132130.spop) e2:SetOperation(c17132130.spop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
--special summon success --special summon success
...@@ -30,52 +31,29 @@ end ...@@ -30,52 +31,29 @@ end
function c17132130.rfilter(c,tp) function c17132130.rfilter(c,tp)
return c:IsSetCard(0xc008) and (c:IsControler(tp) or c:IsFaceup()) return c:IsSetCard(0xc008) and (c:IsControler(tp) or c:IsFaceup())
end end
function c17132130.mzfilter(c,tp) function c17132130.fselect(g,tp)
return c:IsControler(tp) and c:GetSequence()<5 return g:IsExists(c17132130.rfilter,1,nil,tp) and aux.mzctcheckrel(g,tp)
end
function c17132130.rmzfilter(c,tp)
return c:IsSetCard(0xc008) and c:IsControler(tp) and c:GetSequence()<5
end end
function c17132130.spcon(e,c) function c17132130.spcon(e,c)
if c==nil then return true end if c==nil then return true end
local tp=c:GetControler() local tp=c:GetControler()
local rg=Duel.GetReleaseGroup(tp) local rg=Duel.GetReleaseGroup(tp)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) return rg:CheckSubGroup(c17132130.fselect,3,3,tp)
local ct=-ft+1
return ft>-3 and rg:GetCount()>2 and rg:IsExists(c17132130.rfilter,1,nil,tp)
and (ft>0 or rg:IsExists(c17132130.mzfilter,ct,nil,tp))
and (ft>-2 or rg:IsExists(c17132130.rmzfilter,1,nil,tp))
end end
function c17132130.spop(e,tp,eg,ep,ev,re,r,rp,c) function c17132130.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
local rg=Duel.GetReleaseGroup(tp) local rg=Duel.GetReleaseGroup(tp)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
local g=nil
if ft>-2 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
g=rg:FilterSelect(tp,Card.IsSetCard,1,1,nil,0xc008)
else
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
g=rg:FilterSelect(tp,c17132130.rmzfilter,1,1,nil,tp)
end
local tc=g:GetFirst()
if tc:IsControler(tp) and tc:GetSequence()<5 then ft=ft+1 end
if ft>0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
local g2=rg:Select(tp,2,2,tc)
g:Merge(g2)
elseif ft>-1 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
local g2=rg:FilterSelect(tp,c17132130.mzfilter,1,1,tc,tp) local sg=rg:SelectSubGroup(tp,c17132130.fselect,true,3,3,tp)
g:Merge(g2) if sg then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) sg:KeepAlive()
local g3=rg:Select(tp,1,1,g) e:SetLabelObject(sg)
g:Merge(g3) return true
else else return false end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) end
local g2=rg:FilterSelect(tp,c17132130.mzfilter,2,2,tc,tp) function c17132130.spop(e,tp,eg,ep,ev,re,r,rp,c)
g:Merge(g2) local g=e:GetLabelObject()
end
Duel.Release(g,REASON_COST) Duel.Release(g,REASON_COST)
g:DeleteGroup()
end end
function c17132130.lp(e,tp,eg,ep,ev,re,r,rp) function c17132130.lp(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+SUMMON_VALUE_SELF return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+SUMMON_VALUE_SELF
......
...@@ -15,6 +15,7 @@ function c18631392.initial_effect(c) ...@@ -15,6 +15,7 @@ function c18631392.initial_effect(c)
e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e2:SetRange(LOCATION_HAND) e2:SetRange(LOCATION_HAND)
e2:SetCondition(c18631392.spcon) e2:SetCondition(c18631392.spcon)
e2:SetTarget(c18631392.sptg)
e2:SetOperation(c18631392.spop) e2:SetOperation(c18631392.spop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
--announce 3 cards --announce 3 cards
...@@ -27,23 +28,32 @@ function c18631392.initial_effect(c) ...@@ -27,23 +28,32 @@ function c18631392.initial_effect(c)
e3:SetTarget(c18631392.anctg) e3:SetTarget(c18631392.anctg)
c:RegisterEffect(e3) c:RegisterEffect(e3)
end end
function c18631392.spfilter(c,rac) function c18631392.spfilter(c)
return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_LIGHT) and c:IsRace(rac) and c:IsAbleToGraveAsCost() return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_LIGHT) and c:IsAbleToGraveAsCost()
end
function c18631392.fselect(g,tp)
return aux.mzctcheck(g,tp) and aux.gfcheck(g,Card.IsRace,RACE_FAIRY,RACE_DRAGON)
end end
function c18631392.spcon(e,c) function c18631392.spcon(e,c)
if c==nil then return true end if c==nil then return true end
local tp=c:GetControler() local tp=c:GetControler()
return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 local g=Duel.GetMatchingGroup(c18631392.spfilter,tp,LOCATION_MZONE,0,nil)
and Duel.IsExistingMatchingCard(c18631392.spfilter,tp,LOCATION_MZONE,0,1,nil,RACE_FAIRY) return g:CheckSubGroup(c18631392.fselect,2,2,tp)
and Duel.IsExistingMatchingCard(c18631392.spfilter,tp,LOCATION_MZONE,0,1,nil,RACE_DRAGON)
end end
function c18631392.spop(e,tp,eg,ep,ev,re,r,rp,c) function c18631392.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) local g=Duel.GetMatchingGroup(c18631392.spfilter,tp,LOCATION_MZONE,0,nil)
local g1=Duel.SelectMatchingCard(tp,c18631392.spfilter,tp,LOCATION_MZONE,0,1,1,nil,RACE_FAIRY)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local g2=Duel.SelectMatchingCard(tp,c18631392.spfilter,tp,LOCATION_MZONE,0,1,1,nil,RACE_DRAGON) local sg=g:SelectSubGroup(tp,c18631392.fselect,true,2,2,tp)
g1:Merge(g2) if sg then
Duel.SendtoGrave(g1,REASON_COST) sg:KeepAlive()
e:SetLabelObject(sg)
return true
else return false end
end
function c18631392.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g=e:GetLabelObject()
Duel.SendtoGrave(g,REASON_COST)
g:DeleteGroup()
end end
function c18631392.anctg(e,tp,eg,ep,ev,re,r,rp,chk) function c18631392.anctg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then if chk==0 then
......
...@@ -7,6 +7,7 @@ function c19028307.initial_effect(c) ...@@ -7,6 +7,7 @@ function c19028307.initial_effect(c)
e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) e1:SetProperty(EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_HAND) e1:SetRange(LOCATION_HAND)
e1:SetCondition(c19028307.spcon) e1:SetCondition(c19028307.spcon)
e1:SetTarget(c19028307.sptg)
e1:SetOperation(c19028307.spop) e1:SetOperation(c19028307.spop)
c:RegisterEffect(e1) c:RegisterEffect(e1)
--no battle damage --no battle damage
...@@ -27,9 +28,18 @@ function c19028307.spcon(e,c) ...@@ -27,9 +28,18 @@ function c19028307.spcon(e,c)
local g=Duel.GetMatchingGroup(c19028307.spcostfilter,tp,LOCATION_MZONE+LOCATION_HAND+LOCATION_GRAVE,0,c) local g=Duel.GetMatchingGroup(c19028307.spcostfilter,tp,LOCATION_MZONE+LOCATION_HAND+LOCATION_GRAVE,0,c)
return g:CheckSubGroup(c19028307.spcheck,2,2,tp) return g:CheckSubGroup(c19028307.spcheck,2,2,tp)
end end
function c19028307.spop(e,tp,eg,ep,ev,re,r,rp,c) function c19028307.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
local g=Duel.GetMatchingGroup(c19028307.spcostfilter,tp,LOCATION_MZONE+LOCATION_HAND+LOCATION_GRAVE,0,c) local g=Duel.GetMatchingGroup(c19028307.spcostfilter,tp,LOCATION_MZONE+LOCATION_HAND+LOCATION_GRAVE,0,c)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
local sg=g:SelectSubGroup(tp,c19028307.spcheck,false,2,2,tp) local sg=g:SelectSubGroup(tp,c19028307.spcheck,true,2,2,tp)
Duel.Remove(sg,POS_FACEUP,REASON_COST) if sg then
sg:KeepAlive()
e:SetLabelObject(sg)
return true
else return false end
end
function c19028307.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g=e:GetLabelObject()
Duel.Remove(g,POS_FACEUP,REASON_COST)
g:DeleteGroup()
end end
...@@ -7,6 +7,7 @@ function c21390858.initial_effect(c) ...@@ -7,6 +7,7 @@ function c21390858.initial_effect(c)
e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) e1:SetProperty(EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_HAND+LOCATION_DECK) e1:SetRange(LOCATION_HAND+LOCATION_DECK)
e1:SetCondition(c21390858.spcon) e1:SetCondition(c21390858.spcon)
e1:SetTarget(c21390858.sptg)
e1:SetOperation(c21390858.spop) e1:SetOperation(c21390858.spop)
e1:SetValue(SUMMON_VALUE_SELF) e1:SetValue(SUMMON_VALUE_SELF)
c:RegisterEffect(e1) c:RegisterEffect(e1)
...@@ -27,26 +28,32 @@ function c21390858.initial_effect(c) ...@@ -27,26 +28,32 @@ function c21390858.initial_effect(c)
e3:SetCondition(c21390858.condition) e3:SetCondition(c21390858.condition)
c:RegisterEffect(e3) c:RegisterEffect(e3)
end end
function c21390858.spfilter1(c,tp) function c21390858.spfilter(c)
return c:IsFaceup() and c:IsCode(19327348) and c:IsAbleToGraveAsCost() return c:IsFaceup() and c:IsAbleToGraveAsCost()
and Duel.IsExistingMatchingCard(c21390858.spfilter2,tp,LOCATION_MZONE,0,1,c)
end end
function c21390858.spfilter2(c) function c21390858.fselect(g,tp)
return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_DARK) and c:IsAbleToGraveAsCost() return aux.mzctcheck(g,tp) and aux.gffcheck(g,Card.IsCode,19327348,Card.IsAttribute,ATTRIBUTE_DARK)
end end
function c21390858.spcon(e,c) function c21390858.spcon(e,c)
if c==nil then return true end if c==nil then return true end
local tp=c:GetControler() local tp=c:GetControler()
return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 local g=Duel.GetMatchingGroup(c21390858.spfilter,tp,LOCATION_MZONE,0,nil)
and Duel.IsExistingMatchingCard(c21390858.spfilter1,tp,LOCATION_MZONE,0,1,nil,tp) return g:CheckSubGroup(c21390858.fselect,2,2,tp)
end end
function c21390858.spop(e,tp,eg,ep,ev,re,r,rp,c) function c21390858.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) local g=Duel.GetMatchingGroup(c21390858.spfilter,tp,LOCATION_MZONE,0,nil)
local g1=Duel.SelectMatchingCard(tp,c21390858.spfilter1,tp,LOCATION_MZONE,0,1,1,nil,tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local g2=Duel.SelectMatchingCard(tp,c21390858.spfilter2,tp,LOCATION_MZONE,0,1,1,g1:GetFirst()) local sg=g:SelectSubGroup(tp,c21390858.fselect,true,2,2,tp)
g1:Merge(g2) if sg then
Duel.SendtoGrave(g1,REASON_COST) sg:KeepAlive()
e:SetLabelObject(sg)
return true
else return false end
end
function c21390858.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g=e:GetLabelObject()
Duel.SendtoGrave(g,REASON_COST)
g:DeleteGroup()
end end
function c21390858.tfilter(c) function c21390858.tfilter(c)
return c:IsLevel(3,4) and c:IsAttribute(ATTRIBUTE_LIGHT) and c:IsRace(RACE_SPELLCASTER) and c:IsAbleToHand() return c:IsLevel(3,4) and c:IsAttribute(ATTRIBUTE_LIGHT) and c:IsRace(RACE_SPELLCASTER) and c:IsAbleToHand()
......
...@@ -14,6 +14,7 @@ function c23440231.initial_effect(c) ...@@ -14,6 +14,7 @@ function c23440231.initial_effect(c)
e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e2:SetRange(LOCATION_HAND+LOCATION_GRAVE) e2:SetRange(LOCATION_HAND+LOCATION_GRAVE)
e2:SetCondition(c23440231.spcon) e2:SetCondition(c23440231.spcon)
e2:SetTarget(c23440231.sptg)
e2:SetOperation(c23440231.spop) e2:SetOperation(c23440231.spop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
--destroy --destroy
...@@ -53,42 +54,27 @@ function c23440231.spcon(e,c) ...@@ -53,42 +54,27 @@ function c23440231.spcon(e,c)
local tp=c:GetControler() local tp=c:GetControler()
local sum=Duel.GetMatchingGroup(c23440231.sumfilter,tp,LOCATION_MZONE,0,nil):GetSum(c23440231.lv_or_rk) local sum=Duel.GetMatchingGroup(c23440231.sumfilter,tp,LOCATION_MZONE,0,nil):GetSum(c23440231.lv_or_rk)
if sum>8 then return false end if sum>8 then return false end
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local loc=LOCATION_GRAVE+LOCATION_HAND
if ft<-2 then return false end if c:IsHasEffect(34822850) then loc=loc+LOCATION_MZONE end
if c:IsHasEffect(34822850) then local g=Duel.GetMatchingGroup(c23440231.spfilter,tp,loc,0,c)
if ft>0 then return g:CheckSubGroup(aux.mzctcheck,3,3,tp)
return Duel.IsExistingMatchingCard(c23440231.spfilter,tp,LOCATION_MZONE+LOCATION_GRAVE+LOCATION_HAND,0,3,c)
else
local ct=-ft+1
return Duel.IsExistingMatchingCard(c23440231.spfilter,tp,LOCATION_MZONE,0,ct,nil)
and Duel.IsExistingMatchingCard(c23440231.spfilter,tp,LOCATION_MZONE+LOCATION_GRAVE+LOCATION_HAND,0,3,c)
end
else
return ft>0 and Duel.IsExistingMatchingCard(c23440231.spfilter,tp,LOCATION_GRAVE+LOCATION_HAND,0,3,c)
end
end end
function c23440231.spop(e,tp,eg,ep,ev,re,r,rp,c) function c23440231.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local loc=LOCATION_GRAVE+LOCATION_HAND
local g=nil if c:IsHasEffect(34822850) then loc=loc+LOCATION_MZONE end
local g=Duel.GetMatchingGroup(c23440231.spfilter,tp,loc,0,c)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
if c:IsHasEffect(34822850) then local sg=g:SelectSubGroup(tp,aux.mzctcheck,true,3,3,tp)
if ft>0 then if sg then
g=Duel.SelectMatchingCard(tp,c23440231.spfilter,tp,LOCATION_MZONE+LOCATION_GRAVE+LOCATION_HAND,0,3,3,c) sg:KeepAlive()
else e:SetLabelObject(sg)
local sg=Duel.GetMatchingGroup(c23440231.spfilter,tp,LOCATION_MZONE+LOCATION_GRAVE+LOCATION_HAND,0,c) return true
local ct=-ft+1 else return false end
g=sg:FilterSelect(tp,Card.IsLocation,ct,ct,nil,LOCATION_MZONE) end
if ct<3 then function c23440231.spop(e,tp,eg,ep,ev,re,r,rp,c)
sg:Sub(g) local g=e:GetLabelObject()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
local g2=sg:Select(tp,3-ct,3-ct,nil)
g:Merge(g2)
end
end
else
g=Duel.SelectMatchingCard(tp,c23440231.spfilter,tp,LOCATION_GRAVE+LOCATION_HAND,0,3,3,c)
end
Duel.Remove(g,POS_FACEUP,REASON_COST) Duel.Remove(g,POS_FACEUP,REASON_COST)
g:DeleteGroup()
end end
function c23440231.desfilter(c) function c23440231.desfilter(c)
return (c:IsFacedown() or not c:IsSetCard(0xc5)) and c:IsType(TYPE_SPELL+TYPE_TRAP) return (c:IsFacedown() or not c:IsSetCard(0xc5)) and c:IsType(TYPE_SPELL+TYPE_TRAP)
......
...@@ -7,6 +7,7 @@ function c2521011.initial_effect(c) ...@@ -7,6 +7,7 @@ function c2521011.initial_effect(c)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_HAND) e1:SetRange(LOCATION_HAND)
e1:SetCondition(c2521011.spcon) e1:SetCondition(c2521011.spcon)
e1:SetTarget(c2521011.sptg)
e1:SetOperation(c2521011.spop) e1:SetOperation(c2521011.spop)
c:RegisterEffect(e1) c:RegisterEffect(e1)
--set --set
...@@ -38,13 +39,24 @@ function c2521011.spfilter(c) ...@@ -38,13 +39,24 @@ function c2521011.spfilter(c)
end end
function c2521011.spcon(e,c) function c2521011.spcon(e,c)
if c==nil then return true end if c==nil then return true end
return Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)>0 local tp=c:GetControler()
and Duel.IsExistingMatchingCard(c2521011.spfilter,c:GetControler(),LOCATION_ONFIELD,0,3,nil) local g=Duel.GetMatchingGroup(c2521011.spfilter,tp,LOCATION_ONFIELD,0,nil)
return g:CheckSubGroup(aux.mzctcheck,3,3,tp)
end end
function c2521011.spop(e,tp,eg,ep,ev,re,r,rp,c) function c2521011.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
local g=Duel.GetMatchingGroup(c2521011.spfilter,tp,LOCATION_ONFIELD,0,nil)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local g=Duel.SelectMatchingCard(tp,c2521011.spfilter,tp,LOCATION_ONFIELD,0,3,3,nil) local sg=g:SelectSubGroup(tp,aux.mzctcheck,true,3,3,tp)
if sg then
sg:KeepAlive()
e:SetLabelObject(sg)
return true
else return false end
end
function c2521011.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g=e:GetLabelObject()
Duel.SendtoGrave(g,REASON_COST) Duel.SendtoGrave(g,REASON_COST)
g:DeleteGroup()
end end
function c2521011.filter(c) function c2521011.filter(c)
return c:IsSetCard(0x7c) and c:IsType(TYPE_TRAP) and c:IsSSetable() return c:IsSetCard(0x7c) and c:IsType(TYPE_TRAP) and c:IsSSetable()
......
...@@ -14,6 +14,7 @@ function c25811989.initial_effect(c) ...@@ -14,6 +14,7 @@ function c25811989.initial_effect(c)
e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e2:SetRange(LOCATION_HAND+LOCATION_GRAVE) e2:SetRange(LOCATION_HAND+LOCATION_GRAVE)
e2:SetCondition(c25811989.spcon) e2:SetCondition(c25811989.spcon)
e2:SetTarget(c25811989.sptg)
e2:SetOperation(c25811989.spop) e2:SetOperation(c25811989.spop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
--handes --handes
...@@ -55,42 +56,27 @@ function c25811989.spcon(e,c) ...@@ -55,42 +56,27 @@ function c25811989.spcon(e,c)
local tp=c:GetControler() local tp=c:GetControler()
local sum=Duel.GetMatchingGroup(c25811989.sumfilter,tp,LOCATION_MZONE,0,nil):GetSum(c25811989.lv_or_rk) local sum=Duel.GetMatchingGroup(c25811989.sumfilter,tp,LOCATION_MZONE,0,nil):GetSum(c25811989.lv_or_rk)
if sum>8 then return false end if sum>8 then return false end
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local loc=LOCATION_GRAVE+LOCATION_HAND
if ft<-1 then return false end if c:IsHasEffect(34822850) then loc=loc+LOCATION_MZONE end
if c:IsHasEffect(34822850) then local g=Duel.GetMatchingGroup(c25811989.spfilter,tp,loc,0,c)
if ft>0 then return g:CheckSubGroup(aux.mzctcheck,2,2,tp)
return Duel.IsExistingMatchingCard(c25811989.spfilter,tp,LOCATION_MZONE+LOCATION_GRAVE+LOCATION_HAND,0,2,c)
else
local ct=-ft+1
return Duel.IsExistingMatchingCard(c25811989.spfilter,tp,LOCATION_MZONE,0,ct,nil)
and Duel.IsExistingMatchingCard(c25811989.spfilter,tp,LOCATION_MZONE+LOCATION_GRAVE+LOCATION_HAND,0,2,c)
end
else
return ft>0 and Duel.IsExistingMatchingCard(c25811989.spfilter,tp,LOCATION_GRAVE+LOCATION_HAND,0,2,c)
end
end end
function c25811989.spop(e,tp,eg,ep,ev,re,r,rp,c) function c25811989.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local loc=LOCATION_GRAVE+LOCATION_HAND
local g=nil if c:IsHasEffect(34822850) then loc=loc+LOCATION_MZONE end
local g=Duel.GetMatchingGroup(c25811989.spfilter,tp,loc,0,c)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
if c:IsHasEffect(34822850) then local sg=g:SelectSubGroup(tp,aux.mzctcheck,true,2,2,tp)
if ft>0 then if sg then
g=Duel.SelectMatchingCard(tp,c25811989.spfilter,tp,LOCATION_MZONE+LOCATION_GRAVE+LOCATION_HAND,0,2,2,c) sg:KeepAlive()
else e:SetLabelObject(sg)
local sg=Duel.GetMatchingGroup(c25811989.spfilter,tp,LOCATION_MZONE+LOCATION_GRAVE+LOCATION_HAND,0,c) return true
local ct=-ft+1 else return false end
g=sg:FilterSelect(tp,Card.IsLocation,ct,ct,nil,LOCATION_MZONE) end
if ct<2 then function c25811989.spop(e,tp,eg,ep,ev,re,r,rp,c)
sg:Sub(g) local g=e:GetLabelObject()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
local g2=sg:Select(tp,1,1,nil)
g:Merge(g2)
end
end
else
g=Duel.SelectMatchingCard(tp,c25811989.spfilter,tp,LOCATION_GRAVE+LOCATION_HAND,0,2,2,c)
end
Duel.Remove(g,POS_FACEUP,REASON_COST) Duel.Remove(g,POS_FACEUP,REASON_COST)
g:DeleteGroup()
end end
function c25811989.thcon(e,tp,eg,ep,ev,re,r,rp) function c25811989.thcon(e,tp,eg,ep,ev,re,r,rp)
return ep~=tp and Duel.GetAttacker()==e:GetHandler() and Duel.GetAttackTarget()~=nil return ep~=tp and Duel.GetAttacker()==e:GetHandler() and Duel.GetAttackTarget()~=nil
......
...@@ -8,22 +8,29 @@ function c25833572.initial_effect(c) ...@@ -8,22 +8,29 @@ function c25833572.initial_effect(c)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_HAND) e1:SetRange(LOCATION_HAND)
e1:SetCondition(c25833572.spcon) e1:SetCondition(c25833572.spcon)
e1:SetTarget(c25833572.sptg)
e1:SetOperation(c25833572.spop) e1:SetOperation(c25833572.spop)
c:RegisterEffect(e1) c:RegisterEffect(e1)
end end
c25833572.spchecks=aux.CreateChecks(Card.IsCode,{25955164,62340868,98434877})
function c25833572.spcon(e,c) function c25833572.spcon(e,c)
if c==nil then return true end if c==nil then return true end
local tp=c:GetControler() local tp=c:GetControler()
return Duel.GetLocationCount(tp,LOCATION_MZONE)>-3 local g=Duel.GetReleaseGroup(tp)
and Duel.CheckReleaseGroup(tp,Card.IsCode,1,nil,25955164) return g:CheckSubGroupEach(c25833572.spchecks,aux.mzctcheckrel,tp)
and Duel.CheckReleaseGroup(tp,Card.IsCode,1,nil,62340868) end
and Duel.CheckReleaseGroup(tp,Card.IsCode,1,nil,98434877) function c25833572.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
local g=Duel.GetReleaseGroup(tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
local sg=g:SelectSubGroupEach(tp,c25833572.spchecks,true,aux.mzctcheckrel,tp)
if sg then
sg:KeepAlive()
e:SetLabelObject(sg)
return true
else return false end
end end
function c25833572.spop(e,tp,eg,ep,ev,re,r,rp,c) function c25833572.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g1=Duel.SelectReleaseGroup(tp,Card.IsCode,1,1,nil,25955164) local g=e:GetLabelObject()
local g2=Duel.SelectReleaseGroup(tp,Card.IsCode,1,1,nil,62340868) Duel.Release(g,REASON_COST)
local g3=Duel.SelectReleaseGroup(tp,Card.IsCode,1,1,nil,98434877) g:DeleteGroup()
g1:Merge(g2)
g1:Merge(g3)
Duel.Release(g1,REASON_COST)
end end
...@@ -7,6 +7,7 @@ function c31764353.initial_effect(c) ...@@ -7,6 +7,7 @@ function c31764353.initial_effect(c)
e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) e1:SetProperty(EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_HAND+LOCATION_DECK) e1:SetRange(LOCATION_HAND+LOCATION_DECK)
e1:SetCondition(c31764353.spcon) e1:SetCondition(c31764353.spcon)
e1:SetTarget(c31764353.sptg)
e1:SetOperation(c31764353.spop) e1:SetOperation(c31764353.spop)
e1:SetValue(SUMMON_VALUE_SELF) e1:SetValue(SUMMON_VALUE_SELF)
c:RegisterEffect(e1) c:RegisterEffect(e1)
...@@ -17,26 +18,32 @@ function c31764353.initial_effect(c) ...@@ -17,26 +18,32 @@ function c31764353.initial_effect(c)
e2:SetCondition(c31764353.condition) e2:SetCondition(c31764353.condition)
c:RegisterEffect(e2) c:RegisterEffect(e2)
end end
function c31764353.spfilter1(c,tp) function c31764353.spfilter(c)
return c:IsFaceup() and c:IsCode(37744402) and c:IsAbleToGraveAsCost() return c:IsFaceup() and c:IsAbleToGraveAsCost()
and Duel.IsExistingMatchingCard(c31764353.spfilter2,tp,LOCATION_MZONE,0,1,c)
end end
function c31764353.spfilter2(c) function c31764353.fselect(g,tp)
return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_WIND) and c:IsAbleToGraveAsCost() return aux.mzctcheck(g,tp) and aux.gffcheck(g,Card.IsCode,37744402,Card.IsAttribute,ATTRIBUTE_WIND)
end end
function c31764353.spcon(e,c) function c31764353.spcon(e,c)
if c==nil then return true end if c==nil then return true end
local tp=c:GetControler() local tp=c:GetControler()
return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 local g=Duel.GetMatchingGroup(c31764353.spfilter,tp,LOCATION_MZONE,0,nil)
and Duel.IsExistingMatchingCard(c31764353.spfilter1,tp,LOCATION_MZONE,0,1,nil,tp) return g:CheckSubGroup(c31764353.fselect,2,2,tp)
end end
function c31764353.spop(e,tp,eg,ep,ev,re,r,rp,c) function c31764353.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) local g=Duel.GetMatchingGroup(c31764353.spfilter,tp,LOCATION_MZONE,0,nil)
local g1=Duel.SelectMatchingCard(tp,c31764353.spfilter1,tp,LOCATION_MZONE,0,1,1,nil,tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local g2=Duel.SelectMatchingCard(tp,c31764353.spfilter2,tp,LOCATION_MZONE,0,1,1,g1:GetFirst()) local sg=g:SelectSubGroup(tp,c31764353.fselect,true,2,2,tp)
g1:Merge(g2) if sg then
Duel.SendtoGrave(g1,REASON_COST) sg:KeepAlive()
e:SetLabelObject(sg)
return true
else return false end
end
function c31764353.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g=e:GetLabelObject()
Duel.SendtoGrave(g,REASON_COST)
g:DeleteGroup()
end end
function c31764353.condition(e,tp,eg,ep,ev,re,r,rp) function c31764353.condition(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+SUMMON_VALUE_SELF return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+SUMMON_VALUE_SELF
......
...@@ -7,6 +7,7 @@ function c31887905.initial_effect(c) ...@@ -7,6 +7,7 @@ function c31887905.initial_effect(c)
e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) e1:SetProperty(EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_HAND+LOCATION_DECK) e1:SetRange(LOCATION_HAND+LOCATION_DECK)
e1:SetCondition(c31887905.spcon) e1:SetCondition(c31887905.spcon)
e1:SetTarget(c31887905.sptg)
e1:SetOperation(c31887905.spop) e1:SetOperation(c31887905.spop)
e1:SetValue(SUMMON_VALUE_SELF) e1:SetValue(SUMMON_VALUE_SELF)
c:RegisterEffect(e1) c:RegisterEffect(e1)
...@@ -17,26 +18,32 @@ function c31887905.initial_effect(c) ...@@ -17,26 +18,32 @@ function c31887905.initial_effect(c)
e2:SetCondition(c31887905.condition) e2:SetCondition(c31887905.condition)
c:RegisterEffect(e2) c:RegisterEffect(e2)
end end
function c31887905.spfilter1(c,tp) function c31887905.spfilter(c)
return c:IsFaceup() and c:IsCode(37970940) and c:IsAbleToGraveAsCost() return c:IsFaceup() and c:IsAbleToGraveAsCost()
and Duel.IsExistingMatchingCard(c31887905.spfilter2,tp,LOCATION_MZONE,0,1,c)
end end
function c31887905.spfilter2(c) function c31887905.fselect(g,tp)
return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_EARTH) and c:IsAbleToGraveAsCost() return aux.mzctcheck(g,tp) and aux.gffcheck(g,Card.IsCode,37970940,Card.IsAttribute,ATTRIBUTE_EARTH)
end end
function c31887905.spcon(e,c) function c31887905.spcon(e,c)
if c==nil then return true end if c==nil then return true end
local tp=c:GetControler() local tp=c:GetControler()
return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 local g=Duel.GetMatchingGroup(c31887905.spfilter,tp,LOCATION_MZONE,0,nil)
and Duel.IsExistingMatchingCard(c31887905.spfilter1,tp,LOCATION_MZONE,0,1,nil,tp) return g:CheckSubGroup(c31887905.fselect,2,2,tp)
end end
function c31887905.spop(e,tp,eg,ep,ev,re,r,rp,c) function c31887905.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) local g=Duel.GetMatchingGroup(c31887905.spfilter,tp,LOCATION_MZONE,0,nil)
local g1=Duel.SelectMatchingCard(tp,c31887905.spfilter1,tp,LOCATION_MZONE,0,1,1,nil,tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local g2=Duel.SelectMatchingCard(tp,c31887905.spfilter2,tp,LOCATION_MZONE,0,1,1,g1:GetFirst()) local sg=g:SelectSubGroup(tp,c31887905.fselect,true,2,2,tp)
g1:Merge(g2) if sg then
Duel.SendtoGrave(g1,REASON_COST) sg:KeepAlive()
e:SetLabelObject(sg)
return true
else return false end
end
function c31887905.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g=e:GetLabelObject()
Duel.SendtoGrave(g,REASON_COST)
g:DeleteGroup()
end end
function c31887905.condition(e,tp,eg,ep,ev,re,r,rp) function c31887905.condition(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+SUMMON_VALUE_SELF return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+SUMMON_VALUE_SELF
......
...@@ -7,6 +7,7 @@ function c32750510.initial_effect(c) ...@@ -7,6 +7,7 @@ function c32750510.initial_effect(c)
e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) e1:SetProperty(EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_HAND) e1:SetRange(LOCATION_HAND)
e1:SetCondition(c32750510.spcon) e1:SetCondition(c32750510.spcon)
e1:SetTarget(c32750510.sptg)
e1:SetOperation(c32750510.spop) e1:SetOperation(c32750510.spop)
c:RegisterEffect(e1) c:RegisterEffect(e1)
--add counter --add counter
...@@ -34,35 +35,26 @@ end ...@@ -34,35 +35,26 @@ end
function c32750510.rfilter(c,tp) function c32750510.rfilter(c,tp)
return c:IsAttribute(ATTRIBUTE_WATER) and (c:IsControler(tp) or c:IsFaceup()) return c:IsAttribute(ATTRIBUTE_WATER) and (c:IsControler(tp) or c:IsFaceup())
end end
function c32750510.mzfilter(c,tp)
return c:IsControler(tp) and c:GetSequence()<5
end
function c32750510.spcon(e,c) function c32750510.spcon(e,c)
if c==nil then return true end if c==nil then return true end
local tp=c:GetControler() local tp=c:GetControler()
local rg=Duel.GetReleaseGroup(tp):Filter(c32750510.rfilter,nil,tp) local rg=Duel.GetReleaseGroup(tp):Filter(c32750510.rfilter,nil,tp)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) return rg:CheckSubGroup(aux.mzctcheckrel,2,2,tp)
local ct=-ft+1
return ft>-2 and rg:GetCount()>1 and (ft>0 or rg:IsExists(c32750510.mzfilter,ct,nil,tp))
end end
function c32750510.spop(e,tp,eg,ep,ev,re,r,rp,c) function c32750510.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
local rg=Duel.GetReleaseGroup(tp):Filter(c32750510.rfilter,nil,tp) local rg=Duel.GetReleaseGroup(tp):Filter(c32750510.rfilter,nil,tp)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
local g=nil
if ft>0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
g=rg:Select(tp,2,2,nil)
elseif ft==0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
g=rg:FilterSelect(tp,c32750510.mzfilter,1,1,nil,tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
local g2=rg:Select(tp,1,1,g:GetFirst()) local sg=rg:SelectSubGroup(tp,aux.mzctcheckrel,true,2,2,tp)
g:Merge(g2) if sg then
else sg:KeepAlive()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) e:SetLabelObject(sg)
g=rg:FilterSelect(tp,c32750510.mzfilter,2,2,nil,tp) return true
end else return false end
end
function c32750510.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g=e:GetLabelObject()
Duel.Release(g,REASON_COST) Duel.Release(g,REASON_COST)
g:DeleteGroup()
end end
function c32750510.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc) function c32750510.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsCanAddCounter(0x1015,1) end if chkc then return chkc:IsCanAddCounter(0x1015,1) end
......
...@@ -14,6 +14,7 @@ function c34079868.initial_effect(c) ...@@ -14,6 +14,7 @@ function c34079868.initial_effect(c)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_HAND) e1:SetRange(LOCATION_HAND)
e1:SetCondition(c34079868.spcon) e1:SetCondition(c34079868.spcon)
e1:SetTarget(c34079868.sptg)
e1:SetOperation(c34079868.spop) e1:SetOperation(c34079868.spop)
c:RegisterEffect(e1) c:RegisterEffect(e1)
--Negate --Negate
...@@ -41,22 +42,29 @@ function c34079868.initial_effect(c) ...@@ -41,22 +42,29 @@ function c34079868.initial_effect(c)
e3:SetOperation(c34079868.operation) e3:SetOperation(c34079868.operation)
c:RegisterEffect(e3) c:RegisterEffect(e3)
end end
function c34079868.rfilter(c,tp) function c34079868.fselect(g,tp)
return c:IsSetCard(0xc7) and Duel.CheckReleaseGroup(tp,Card.IsSetCard,1,c,0xda) return aux.mzctcheckrel(g,tp) and aux.gfcheck(g,Card.IsSetCard,0xc7,0xda)
end end
function c34079868.spcon(e,c) function c34079868.spcon(e,c)
if c==nil then return true end if c==nil then return true end
local tp=c:GetControler() local tp=c:GetControler()
return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 local g=Duel.GetReleaseGroup(tp)
and Duel.CheckReleaseGroup(tp,c34079868.rfilter,1,nil,tp) return g:CheckSubGroup(c34079868.fselect,2,2,tp)
end end
function c34079868.spop(e,tp,eg,ep,ev,re,r,rp,c) function c34079868.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) local g=Duel.GetReleaseGroup(tp)
local g1=Duel.SelectReleaseGroup(tp,c34079868.rfilter,1,1,nil,tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
local g2=Duel.SelectReleaseGroup(tp,Card.IsSetCard,1,1,g1:GetFirst(),0xda) local sg=g:SelectSubGroup(tp,c34079868.fselect,true,2,2,tp)
g1:Merge(g2) if sg then
Duel.Release(g1,REASON_COST) sg:KeepAlive()
e:SetLabelObject(sg)
return true
else return false end
end
function c34079868.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g=e:GetLabelObject()
Duel.Release(g,REASON_COST)
g:DeleteGroup()
end end
function c34079868.discon(e,tp,eg,ep,ev,re,r,rp) function c34079868.discon(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
......
...@@ -14,6 +14,7 @@ function c3775068.initial_effect(c) ...@@ -14,6 +14,7 @@ function c3775068.initial_effect(c)
e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e2:SetRange(LOCATION_HAND) e2:SetRange(LOCATION_HAND)
e2:SetCondition(c3775068.sprcon) e2:SetCondition(c3775068.sprcon)
e2:SetTarget(c3775068.sprtg)
e2:SetOperation(c3775068.sprop) e2:SetOperation(c3775068.sprop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
--damage --damage
...@@ -42,36 +43,26 @@ end ...@@ -42,36 +43,26 @@ end
function c3775068.spcfilter(c) function c3775068.spcfilter(c)
return c:IsFaceup() and c:IsSetCard(0xe3) and c:IsAbleToGraveAsCost() return c:IsFaceup() and c:IsSetCard(0xe3) and c:IsAbleToGraveAsCost()
end end
function c3775068.mzfilter(c)
return c:GetSequence()<5
end
function c3775068.sprcon(e,c) function c3775068.sprcon(e,c)
if c==nil then return true end if c==nil then return true end
local tp=c:GetControler() local tp=c:GetControler()
local mg=Duel.GetMatchingGroup(c3775068.spcfilter,tp,LOCATION_MZONE,0,nil) local mg=Duel.GetMatchingGroup(c3775068.spcfilter,tp,LOCATION_MZONE,0,nil)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) return mg:CheckSubGroup(aux.mzctcheck,3,3,tp)
local ct=-ft+1
return ft>-3 and mg:GetCount()>2 and (ft>0 or mg:IsExists(c3775068.mzfilter,ct,nil))
end end
function c3775068.sprop(e,tp,eg,ep,ev,re,r,rp,c) function c3775068.sprtg(e,tp,eg,ep,ev,re,r,rp,chk,c)
local mg=Duel.GetMatchingGroup(c3775068.spcfilter,tp,LOCATION_MZONE,0,nil) local mg=Duel.GetMatchingGroup(c3775068.spcfilter,tp,LOCATION_MZONE,0,nil)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
local g=nil
if ft>0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
g=mg:Select(tp,3,3,nil)
elseif ft>-2 then
local ct=-ft+1
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
g=mg:FilterSelect(tp,c3775068.mzfilter,ct,ct,nil) local sg=mg:SelectSubGroup(tp,aux.mzctcheck,true,3,3,tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) if sg then
local g2=mg:Select(tp,3-ct,3-ct,g) sg:KeepAlive()
g:Merge(g2) e:SetLabelObject(sg)
else return true
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) else return false end
g=mg:FilterSelect(tp,c3775068.mzfilter,3,3,nil) end
end function c3775068.sprop(e,tp,eg,ep,ev,re,r,rp,c)
local g=e:GetLabelObject()
Duel.SendtoGrave(g,REASON_COST) Duel.SendtoGrave(g,REASON_COST)
g:DeleteGroup()
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_UPDATE_ATTACK) e1:SetCode(EFFECT_UPDATE_ATTACK)
......
...@@ -9,6 +9,7 @@ function c38369349.initial_effect(c) ...@@ -9,6 +9,7 @@ function c38369349.initial_effect(c)
e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e2:SetRange(LOCATION_HAND) e2:SetRange(LOCATION_HAND)
e2:SetCondition(c38369349.spcon) e2:SetCondition(c38369349.spcon)
e2:SetTarget(c38369349.sptg)
e2:SetOperation(c38369349.spop) e2:SetOperation(c38369349.spop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
--destroy --destroy
...@@ -53,36 +54,27 @@ end ...@@ -53,36 +54,27 @@ end
function c38369349.cfilter(c) function c38369349.cfilter(c)
return c:IsFaceup() and c:IsCode(15259703) return c:IsFaceup() and c:IsCode(15259703)
end end
function c38369349.mzfilter(c,tp)
return c:IsControler(tp) and c:GetSequence()<5
end
function c38369349.spcon(e,c) function c38369349.spcon(e,c)
if c==nil then return true end if c==nil then return true end
local tp=c:GetControler() local tp=c:GetControler()
local rg=Duel.GetReleaseGroup(tp) local rg=Duel.GetReleaseGroup(tp)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
local ct=-ft+1
return Duel.IsExistingMatchingCard(c38369349.cfilter,tp,LOCATION_ONFIELD,0,1,nil) return Duel.IsExistingMatchingCard(c38369349.cfilter,tp,LOCATION_ONFIELD,0,1,nil)
and ft>-2 and rg:GetCount()>1 and (ft>0 or rg:IsExists(c38369349.mzfilter,ct,nil,tp)) and rg:CheckSubGroup(aux.mzctcheckrel,2,2,tp)
end end
function c38369349.spop(e,tp,eg,ep,ev,re,r,rp,c) function c38369349.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
local rg=Duel.GetReleaseGroup(tp) local rg=Duel.GetReleaseGroup(tp)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
local g=nil
if ft>0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
g=rg:Select(tp,2,2,nil)
elseif ft==0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
g=rg:FilterSelect(tp,c38369349.mzfilter,1,1,nil,tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
local g2=rg:Select(tp,1,1,g:GetFirst()) local sg=rg:SelectSubGroup(tp,aux.mzctcheckrel,true,2,2,tp)
g:Merge(g2) if sg then
else sg:KeepAlive()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) e:SetLabelObject(sg)
g=rg:FilterSelect(tp,c38369349.mzfilter,2,2,nil,tp) return true
end else return false end
end
function c38369349.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g=e:GetLabelObject()
Duel.Release(g,REASON_COST) Duel.Release(g,REASON_COST)
g:DeleteGroup()
end end
function c38369349.sfilter(c) function c38369349.sfilter(c)
return c:IsReason(REASON_DESTROY) and c:IsPreviousPosition(POS_FACEUP) and c:GetPreviousCodeOnField()==15259703 and c:IsPreviousLocation(LOCATION_ONFIELD) return c:IsReason(REASON_DESTROY) and c:IsPreviousPosition(POS_FACEUP) and c:GetPreviousCodeOnField()==15259703 and c:IsPreviousLocation(LOCATION_ONFIELD)
......
...@@ -7,6 +7,7 @@ function c40542825.initial_effect(c) ...@@ -7,6 +7,7 @@ function c40542825.initial_effect(c)
e1:SetCode(EFFECT_SPSUMMON_PROC) e1:SetCode(EFFECT_SPSUMMON_PROC)
e1:SetRange(LOCATION_HAND+LOCATION_DECK) e1:SetRange(LOCATION_HAND+LOCATION_DECK)
e1:SetCondition(c40542825.spcon) e1:SetCondition(c40542825.spcon)
e1:SetTarget(c40542825.sptg)
e1:SetOperation(c40542825.spop) e1:SetOperation(c40542825.spop)
e1:SetValue(SUMMON_VALUE_SELF) e1:SetValue(SUMMON_VALUE_SELF)
c:RegisterEffect(e1) c:RegisterEffect(e1)
...@@ -27,26 +28,32 @@ function c40542825.initial_effect(c) ...@@ -27,26 +28,32 @@ function c40542825.initial_effect(c)
e3:SetCondition(c40542825.condition) e3:SetCondition(c40542825.condition)
c:RegisterEffect(e3) c:RegisterEffect(e3)
end end
function c40542825.spfilter1(c,tp) function c40542825.spfilter(c)
return c:IsFaceup() and c:IsCode(73318863) and c:IsAbleToGraveAsCost() return c:IsFaceup() and c:IsAbleToGraveAsCost()
and Duel.IsExistingMatchingCard(c40542825.spfilter2,tp,LOCATION_MZONE,0,1,c)
end end
function c40542825.spfilter2(c) function c40542825.fselect(g,tp)
return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_LIGHT) and c:IsAbleToGraveAsCost() return aux.mzctcheck(g,tp) and aux.gffcheck(g,Card.IsCode,73318863,Card.IsAttribute,ATTRIBUTE_LIGHT)
end end
function c40542825.spcon(e,c) function c40542825.spcon(e,c)
if c==nil then return true end if c==nil then return true end
local tp=c:GetControler() local tp=c:GetControler()
return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 local g=Duel.GetMatchingGroup(c40542825.spfilter,tp,LOCATION_MZONE,0,nil)
and Duel.IsExistingMatchingCard(c40542825.spfilter1,tp,LOCATION_MZONE,0,1,nil,tp) return g:CheckSubGroup(c40542825.fselect,2,2,tp)
end end
function c40542825.spop(e,tp,eg,ep,ev,re,r,rp,c) function c40542825.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) local g=Duel.GetMatchingGroup(c40542825.spfilter,tp,LOCATION_MZONE,0,nil)
local g1=Duel.SelectMatchingCard(tp,c40542825.spfilter1,tp,LOCATION_MZONE,0,1,1,nil,tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local g2=Duel.SelectMatchingCard(tp,c40542825.spfilter2,tp,LOCATION_MZONE,0,1,1,g1:GetFirst()) local sg=g:SelectSubGroup(tp,c40542825.fselect,true,2,2,tp)
g1:Merge(g2) if sg then
Duel.SendtoGrave(g1,REASON_COST) sg:KeepAlive()
e:SetLabelObject(sg)
return true
else return false end
end
function c40542825.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g=e:GetLabelObject()
Duel.SendtoGrave(g,REASON_COST)
g:DeleteGroup()
end end
function c40542825.thfilter(c) function c40542825.thfilter(c)
return c:IsDefense(1500) and c:IsRace(RACE_SPELLCASTER) and not c:IsCode(40542825) and c:IsAbleToHand() return c:IsDefense(1500) and c:IsRace(RACE_SPELLCASTER) and not c:IsCode(40542825) and c:IsAbleToHand()
......
...@@ -8,6 +8,7 @@ function c4068622.initial_effect(c) ...@@ -8,6 +8,7 @@ function c4068622.initial_effect(c)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_HAND) e1:SetRange(LOCATION_HAND)
e1:SetCondition(c4068622.spcon) e1:SetCondition(c4068622.spcon)
e1:SetTarget(c4068622.sptg)
e1:SetOperation(c4068622.spop) e1:SetOperation(c4068622.spop)
c:RegisterEffect(e1) c:RegisterEffect(e1)
--special summon --special summon
...@@ -28,30 +29,38 @@ function c4068622.initial_effect(c) ...@@ -28,30 +29,38 @@ function c4068622.initial_effect(c)
e3:SetValue(aux.FALSE) e3:SetValue(aux.FALSE)
c:RegisterEffect(e3) c:RegisterEffect(e3)
end end
function c4068622.spfilter1(c,ft,tp) function c4068622.spfilter(c)
if c:GetSequence()<5 then ft=ft+1 end return c:IsFaceup() and c:IsAbleToRemoveAsCost()
return c:IsFaceup() and c:IsSetCard(0x33) and c:IsType(TYPE_TUNER) and c:IsAbleToRemove()
and ft>-1 and Duel.IsExistingMatchingCard(c4068622.spfilter2,tp,LOCATION_MZONE,0,1,nil,ft)
end end
function c4068622.spfilter2(c,ft) function c4068622.spfilter1(c)
return c:IsFaceup() and not c:IsType(TYPE_TUNER) and c:IsAbleToRemove() and (ft>0 or c:GetSequence()<5) return c:IsSetCard(0x33) and c:IsType(TYPE_TUNER)
end
function c4068622.spfilter2(c)
return not c:IsType(TYPE_TUNER)
end
function c4068622.fselect(g,tp)
return aux.mzctcheck(g,tp) and aux.gffcheck(g,c4068622.spfilter1,nil,c4068622.spfilter2,nil)
end end
function c4068622.spcon(e,c) function c4068622.spcon(e,c)
if c==nil then return true end if c==nil then return true end
local tp=c:GetControler() local tp=c:GetControler()
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local g=Duel.GetMatchingGroup(c4068622.spfilter,tp,LOCATION_MZONE,0,nil)
return ft>-2 and Duel.IsExistingMatchingCard(c4068622.spfilter1,tp,LOCATION_MZONE,0,1,nil,ft,tp) return g:CheckSubGroup(c4068622.fselect,2,2,tp)
end end
function c4068622.spop(e,tp,eg,ep,ev,re,r,rp,c) function c4068622.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local g=Duel.GetMatchingGroup(c4068622.spfilter,tp,LOCATION_MZONE,0,nil)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
local g1=Duel.SelectMatchingCard(tp,c4068622.spfilter1,tp,LOCATION_MZONE,0,1,1,nil,ft,tp) local sg=g:SelectSubGroup(tp,c4068622.fselect,true,2,2,tp)
local tc=g1:GetFirst() if sg then
if tc:GetSequence()<5 then ft=ft+1 end sg:KeepAlive()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) e:SetLabelObject(sg)
local g2=Duel.SelectMatchingCard(tp,c4068622.spfilter2,tp,LOCATION_MZONE,0,1,1,nil,ft) return true
g1:Merge(g2) else return false end
Duel.Remove(g1,POS_FACEUP,REASON_COST) end
function c4068622.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g=e:GetLabelObject()
Duel.Remove(g,POS_FACEUP,REASON_COST)
g:DeleteGroup()
end end
function c4068622.filter(c) function c4068622.filter(c)
return c:IsSetCard(0x33) and c:IsAbleToRemove() return c:IsSetCard(0x33) and c:IsAbleToRemove()
......
...@@ -7,6 +7,7 @@ function c410904.initial_effect(c) ...@@ -7,6 +7,7 @@ function c410904.initial_effect(c)
e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) e1:SetProperty(EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_HAND+LOCATION_DECK) e1:SetRange(LOCATION_HAND+LOCATION_DECK)
e1:SetCondition(c410904.spcon) e1:SetCondition(c410904.spcon)
e1:SetTarget(c410904.sptg)
e1:SetOperation(c410904.spop) e1:SetOperation(c410904.spop)
e1:SetValue(SUMMON_VALUE_SELF) e1:SetValue(SUMMON_VALUE_SELF)
c:RegisterEffect(e1) c:RegisterEffect(e1)
...@@ -34,26 +35,35 @@ function c410904.initial_effect(c) ...@@ -34,26 +35,35 @@ function c410904.initial_effect(c)
e3:SetOperation(c410904.thop) e3:SetOperation(c410904.thop)
c:RegisterEffect(e3) c:RegisterEffect(e3)
end end
function c410904.spfilter1(c,tp) function c410904.spfilter(c)
return c:IsFaceup() and c:IsRace(RACE_SPELLCASTER) and c:IsAbleToGraveAsCost() return c:IsFaceup() and c:IsAbleToGraveAsCost()
and Duel.IsExistingMatchingCard(c410904.spfilter2,tp,LOCATION_MZONE,0,1,c)
end end
function c410904.spfilter2(c) function c410904.spfilter2(c)
return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_WIND) and c:IsAbleToGraveAsCost() and c:IsLevelBelow(4) return c:IsAttribute(ATTRIBUTE_WIND) and c:IsLevelBelow(4)
end
function c410904.fselect(g,tp)
return aux.mzctcheck(g,tp) and aux.gffcheck(g,Card.IsRace,RACE_SPELLCASTER,c410904.spfilter2,nil)
end end
function c410904.spcon(e,c) function c410904.spcon(e,c)
if c==nil then return true end if c==nil then return true end
local tp=c:GetControler() local tp=c:GetControler()
return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 local g=Duel.GetMatchingGroup(c410904.spfilter,tp,LOCATION_MZONE,0,nil)
and Duel.IsExistingMatchingCard(c410904.spfilter1,tp,LOCATION_MZONE,0,1,nil,tp) return g:CheckSubGroup(c410904.fselect,2,2,tp)
end end
function c410904.spop(e,tp,eg,ep,ev,re,r,rp,c) function c410904.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) local g=Duel.GetMatchingGroup(c410904.spfilter,tp,LOCATION_MZONE,0,nil)
local g1=Duel.SelectMatchingCard(tp,c410904.spfilter1,tp,LOCATION_MZONE,0,1,1,nil,tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local g2=Duel.SelectMatchingCard(tp,c410904.spfilter2,tp,LOCATION_MZONE,0,1,1,g1:GetFirst()) local sg=g:SelectSubGroup(tp,c410904.fselect,true,2,2,tp)
g1:Merge(g2) if sg then
Duel.SendtoGrave(g1,REASON_COST) sg:KeepAlive()
e:SetLabelObject(sg)
return true
else return false end
end
function c410904.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g=e:GetLabelObject()
Duel.SendtoGrave(g,REASON_COST)
g:DeleteGroup()
end end
function c410904.condition(e,tp,eg,ep,ev,re,r,rp) function c410904.condition(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+SUMMON_VALUE_SELF return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+SUMMON_VALUE_SELF
......
...@@ -8,6 +8,7 @@ function c42901635.initial_effect(c) ...@@ -8,6 +8,7 @@ function c42901635.initial_effect(c)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_HAND) e1:SetRange(LOCATION_HAND)
e1:SetCondition(c42901635.spcon) e1:SetCondition(c42901635.spcon)
e1:SetTarget(c42901635.sptg)
e1:SetOperation(c42901635.spop) e1:SetOperation(c42901635.spop)
c:RegisterEffect(e1) c:RegisterEffect(e1)
--destroy --destroy
...@@ -42,11 +43,20 @@ function c42901635.spcon(e,c) ...@@ -42,11 +43,20 @@ function c42901635.spcon(e,c)
local g=Duel.GetMatchingGroup(c42901635.spcostfilter,tp,LOCATION_HAND+LOCATION_MZONE+LOCATION_GRAVE,0,nil) local g=Duel.GetMatchingGroup(c42901635.spcostfilter,tp,LOCATION_HAND+LOCATION_MZONE+LOCATION_GRAVE,0,nil)
return g:CheckSubGroupEach(c42901635.spchecks,aux.mzctcheck,tp) return g:CheckSubGroupEach(c42901635.spchecks,aux.mzctcheck,tp)
end end
function c42901635.spop(e,tp,eg,ep,ev,re,r,rp,c) function c42901635.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
local g=Duel.GetMatchingGroup(c42901635.spcostfilter,tp,LOCATION_HAND+LOCATION_MZONE+LOCATION_GRAVE,0,nil) local g=Duel.GetMatchingGroup(c42901635.spcostfilter,tp,LOCATION_HAND+LOCATION_MZONE+LOCATION_GRAVE,0,nil)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
local sg=g:SelectSubGroupEach(tp,c42901635.spchecks,false,aux.mzctcheck,tp) local sg=g:SelectSubGroupEach(tp,c42901635.spchecks,true,aux.mzctcheck,tp)
Duel.Remove(sg,POS_FACEUP,REASON_COST) if sg then
sg:KeepAlive()
e:SetLabelObject(sg)
return true
else return false end
end
function c42901635.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g=e:GetLabelObject()
Duel.Remove(g,POS_FACEUP,REASON_COST)
g:DeleteGroup()
end end
function c42901635.costfilter(c) function c42901635.costfilter(c)
return c:IsType(TYPE_MONSTER) and c:IsSetCard(0x2066) and c:IsLevelBelow(4) and c:IsAbleToRemoveAsCost() return c:IsType(TYPE_MONSTER) and c:IsSetCard(0x2066) and c:IsLevelBelow(4) and c:IsAbleToRemoveAsCost()
......
...@@ -8,6 +8,7 @@ function c4335427.initial_effect(c) ...@@ -8,6 +8,7 @@ function c4335427.initial_effect(c)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_HAND) e1:SetRange(LOCATION_HAND)
e1:SetCondition(c4335427.spcon) e1:SetCondition(c4335427.spcon)
e1:SetTarget(c4335427.sptg)
e1:SetOperation(c4335427.spop) e1:SetOperation(c4335427.spop)
c:RegisterEffect(e1) c:RegisterEffect(e1)
local e2=Effect.CreateEffect(c) local e2=Effect.CreateEffect(c)
...@@ -41,11 +42,20 @@ function c4335427.spcon(e,c) ...@@ -41,11 +42,20 @@ function c4335427.spcon(e,c)
local g=Duel.GetMatchingGroup(c4335427.spcostfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) local g=Duel.GetMatchingGroup(c4335427.spcostfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil)
return g:CheckSubGroupEach(c4335427.spchecks,aux.mzctcheck,tp) return g:CheckSubGroupEach(c4335427.spchecks,aux.mzctcheck,tp)
end end
function c4335427.spop(e,tp,eg,ep,ev,re,r,rp,c) function c4335427.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
local g=Duel.GetMatchingGroup(c4335427.spcostfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil) local g=Duel.GetMatchingGroup(c4335427.spcostfilter,tp,LOCATION_MZONE,LOCATION_MZONE,nil)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
local sg=g:SelectSubGroupEach(tp,c4335427.spchecks,false,aux.mzctcheck,tp) local sg=g:SelectSubGroupEach(tp,c4335427.spchecks,true,aux.mzctcheck,tp)
Duel.Remove(sg,POS_FACEUP,REASON_COST) if sg then
sg:KeepAlive()
e:SetLabelObject(sg)
return true
else return false end
end
function c4335427.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g=e:GetLabelObject()
Duel.Remove(g,POS_FACEUP,REASON_COST)
g:DeleteGroup()
end end
function c4335427.rmtg(e,tp,eg,ep,ev,re,r,rp,chk) function c4335427.rmtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end if chk==0 then return true end
......
...@@ -7,6 +7,7 @@ function c4376658.initial_effect(c) ...@@ -7,6 +7,7 @@ function c4376658.initial_effect(c)
e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) e1:SetProperty(EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_HAND+LOCATION_DECK) e1:SetRange(LOCATION_HAND+LOCATION_DECK)
e1:SetCondition(c4376658.spcon) e1:SetCondition(c4376658.spcon)
e1:SetTarget(c4376658.sptg)
e1:SetOperation(c4376658.spop) e1:SetOperation(c4376658.spop)
e1:SetValue(SUMMON_VALUE_SELF) e1:SetValue(SUMMON_VALUE_SELF)
c:RegisterEffect(e1) c:RegisterEffect(e1)
...@@ -17,26 +18,32 @@ function c4376658.initial_effect(c) ...@@ -17,26 +18,32 @@ function c4376658.initial_effect(c)
e2:SetCondition(c4376658.condition) e2:SetCondition(c4376658.condition)
c:RegisterEffect(e2) c:RegisterEffect(e2)
end end
function c4376658.spfilter1(c,tp) function c4376658.spfilter(c)
return c:IsFaceup() and c:IsCode(759393) and c:IsAbleToGraveAsCost() return c:IsFaceup() and c:IsAbleToGraveAsCost()
and Duel.IsExistingMatchingCard(c4376658.spfilter2,tp,LOCATION_MZONE,0,1,c)
end end
function c4376658.spfilter2(c) function c4376658.fselect(g,tp)
return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_FIRE) and c:IsAbleToGraveAsCost() return aux.mzctcheck(g,tp) and aux.gffcheck(g,Card.IsCode,759393,Card.IsAttribute,ATTRIBUTE_FIRE)
end end
function c4376658.spcon(e,c) function c4376658.spcon(e,c)
if c==nil then return true end if c==nil then return true end
local tp=c:GetControler() local tp=c:GetControler()
return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 local g=Duel.GetMatchingGroup(c4376658.spfilter,tp,LOCATION_MZONE,0,nil)
and Duel.IsExistingMatchingCard(c4376658.spfilter1,tp,LOCATION_MZONE,0,1,nil,tp) return g:CheckSubGroup(c4376658.fselect,2,2,tp)
end end
function c4376658.spop(e,tp,eg,ep,ev,re,r,rp,c) function c4376658.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) local g=Duel.GetMatchingGroup(c4376658.spfilter,tp,LOCATION_MZONE,0,nil)
local g1=Duel.SelectMatchingCard(tp,c4376658.spfilter1,tp,LOCATION_MZONE,0,1,1,nil,tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local g2=Duel.SelectMatchingCard(tp,c4376658.spfilter2,tp,LOCATION_MZONE,0,1,1,g1:GetFirst()) local sg=g:SelectSubGroup(tp,c4376658.fselect,true,2,2,tp)
g1:Merge(g2) if sg then
Duel.SendtoGrave(g1,REASON_COST) sg:KeepAlive()
e:SetLabelObject(sg)
return true
else return false end
end
function c4376658.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g=e:GetLabelObject()
Duel.SendtoGrave(g,REASON_COST)
g:DeleteGroup()
end end
function c4376658.condition(e,tp,eg,ep,ev,re,r,rp) function c4376658.condition(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+SUMMON_VALUE_SELF return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+SUMMON_VALUE_SELF
......
...@@ -14,6 +14,7 @@ function c45148985.initial_effect(c) ...@@ -14,6 +14,7 @@ function c45148985.initial_effect(c)
e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e2:SetRange(LOCATION_HAND) e2:SetRange(LOCATION_HAND)
e2:SetCondition(c45148985.sprcon) e2:SetCondition(c45148985.sprcon)
e2:SetTarget(c45148985.sprtg)
e2:SetOperation(c45148985.sprop) e2:SetOperation(c45148985.sprop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
--indes --indes
...@@ -49,24 +50,31 @@ end ...@@ -49,24 +50,31 @@ end
function c45148985.sprfilter(c) function c45148985.sprfilter(c)
return c:IsSetCard(0x105) and c:IsAbleToRemoveAsCost() and (c:IsLocation(LOCATION_GRAVE) or c:IsFaceup()) return c:IsSetCard(0x105) and c:IsAbleToRemoveAsCost() and (c:IsLocation(LOCATION_GRAVE) or c:IsFaceup())
end end
function c45148985.mzfilter(c)
return c:GetSequence()<5 and c:IsLocation(LOCATION_MZONE)
end
function c45148985.sprcon(e,c) function c45148985.sprcon(e,c)
if c==nil then return true end if c==nil then return true end
local tp=c:GetControler() local tp=c:GetControler()
local g=Duel.GetMatchingGroup(c45148985.sprfilter,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,nil) local g=Duel.GetMatchingGroup(c45148985.sprfilter,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,nil)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) aux.GCheckAdditional=aux.dncheck
local ct=-ft+1 local res=g:CheckSubGroup(aux.mzctcheck,5,5,tp)
return ft>-5 and g:GetClassCount(Card.GetCode)>=5 and (ft>0 or g:IsExists(c45148985.mzfilter,ct,nil)) aux.GCheckAdditional=nil
return res
end end
function c45148985.sprop(e,tp,eg,ep,ev,re,r,rp,c) function c45148985.sprtg(e,tp,eg,ep,ev,re,r,rp,chk,c)
local g=Duel.GetMatchingGroup(c45148985.sprfilter,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,nil) local g=Duel.GetMatchingGroup(c45148985.sprfilter,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,nil)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
aux.GCheckAdditional=aux.dncheck aux.GCheckAdditional=aux.dncheck
local rg=g:SelectSubGroup(tp,aux.mzctcheck,false,5,5,tp) local sg=g:SelectSubGroup(tp,aux.mzctcheck,true,5,5,tp)
aux.GCheckAdditional=nil aux.GCheckAdditional=nil
Duel.Remove(rg,POS_FACEUP,REASON_COST) if sg then
sg:KeepAlive()
e:SetLabelObject(sg)
return true
else return false end
end
function c45148985.sprop(e,tp,eg,ep,ev,re,r,rp,c)
local g=e:GetLabelObject()
Duel.Remove(g,POS_FACEUP,REASON_COST)
g:DeleteGroup()
end end
function c45148985.rmlimit(e,c,tp,r) function c45148985.rmlimit(e,c,tp,r)
return c==e:GetHandler() and r==REASON_EFFECT return c==e:GetHandler() and r==REASON_EFFECT
......
...@@ -8,6 +8,7 @@ function c48948935.initial_effect(c) ...@@ -8,6 +8,7 @@ function c48948935.initial_effect(c)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_HAND) e1:SetRange(LOCATION_HAND)
e1:SetCondition(c48948935.spcon) e1:SetCondition(c48948935.spcon)
e1:SetTarget(c48948935.sptg)
e1:SetOperation(c48948935.spop) e1:SetOperation(c48948935.spop)
c:RegisterEffect(e1) c:RegisterEffect(e1)
--equip --equip
...@@ -22,37 +23,29 @@ function c48948935.initial_effect(c) ...@@ -22,37 +23,29 @@ function c48948935.initial_effect(c)
e2:SetOperation(c48948935.eqop) e2:SetOperation(c48948935.eqop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
end end
function c48948935.spfilter(c,g,ft,tp) function c48948935.fselect(g,tp)
if c:IsControler(tp) and c:GetSequence()<5 then ft=ft+1 end return g:IsExists(Card.IsCode,1,nil,13676474,86569121) and aux.mzctcheckrel(g,tp)
return c:IsCode(13676474,86569121) and (c:IsControler(tp) or c:IsFaceup())
and (ft>0 or g:IsExists(c48948935.mzfilter,1,c,tp))
end
function c48948935.mzfilter(c,tp)
return c:IsControler(tp) and c:GetSequence()<5
end end
function c48948935.spcon(e,c) function c48948935.spcon(e,c)
if c==nil then return true end if c==nil then return true end
local tp=c:GetControler() local tp=c:GetControler()
local rg=Duel.GetReleaseGroup(tp) local rg=Duel.GetReleaseGroup(tp)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) return rg:CheckSubGroup(c48948935.fselect,2,2,tp)
return ft>-2 and rg:GetCount()>1 and rg:IsExists(c48948935.spfilter,1,nil,rg,ft,tp)
end end
function c48948935.spop(e,tp,eg,ep,ev,re,r,rp,c) function c48948935.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
local rg=Duel.GetReleaseGroup(tp) local rg=Duel.GetReleaseGroup(tp)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
local g1=rg:FilterSelect(tp,c48948935.spfilter,1,1,nil,rg,ft,tp)
local tc=g1:GetFirst()
if tc:IsControler(tp) and tc:GetSequence()<5 then ft=ft+1 end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
if ft>0 then local sg=rg:SelectSubGroup(tp,c48948935.fselect,true,2,2,tp)
local g2=rg:Select(tp,1,1,tc) if sg then
g1:Merge(g2) sg:KeepAlive()
else e:SetLabelObject(sg)
local g2=rg:FilterSelect(tp,c48948935.mzfilter,1,1,tc,tp) return true
g1:Merge(g2) else return false end
end end
Duel.Release(g1,REASON_COST) function c48948935.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g=e:GetLabelObject()
Duel.Release(g,REASON_COST)
g:DeleteGroup()
end end
function c48948935.eqcon(e,tp,eg,ep,ev,re,r,rp) function c48948935.eqcon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD) return e:GetHandler():IsPreviousLocation(LOCATION_ONFIELD)
......
...@@ -14,6 +14,7 @@ function c4998619.initial_effect(c) ...@@ -14,6 +14,7 @@ function c4998619.initial_effect(c)
e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e2:SetRange(LOCATION_HAND) e2:SetRange(LOCATION_HAND)
e2:SetCondition(c4998619.spcon) e2:SetCondition(c4998619.spcon)
e2:SetTarget(c4998619.sptg)
e2:SetOperation(c4998619.spop) e2:SetOperation(c4998619.spop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
--extra att --extra att
...@@ -36,36 +37,26 @@ end ...@@ -36,36 +37,26 @@ end
function c4998619.filter(c) function c4998619.filter(c)
return c:IsFaceup() and c:IsSetCard(0xe3) and c:IsAbleToGraveAsCost() return c:IsFaceup() and c:IsSetCard(0xe3) and c:IsAbleToGraveAsCost()
end end
function c4998619.mzfilter(c)
return c:GetSequence()<5
end
function c4998619.spcon(e,c) function c4998619.spcon(e,c)
if c==nil then return true end if c==nil then return true end
local tp=c:GetControler() local tp=c:GetControler()
local mg=Duel.GetMatchingGroup(c4998619.filter,tp,LOCATION_MZONE,0,nil) local mg=Duel.GetMatchingGroup(c4998619.filter,tp,LOCATION_MZONE,0,nil)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) return mg:CheckSubGroup(aux.mzctcheck,3,3,tp)
local ct=-ft+1
return ft>-3 and mg:GetCount()>2 and (ft>0 or mg:IsExists(c4998619.mzfilter,ct,nil))
end end
function c4998619.spop(e,tp,eg,ep,ev,re,r,rp,c) function c4998619.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
local mg=Duel.GetMatchingGroup(c4998619.filter,tp,LOCATION_MZONE,0,nil) local mg=Duel.GetMatchingGroup(c4998619.filter,tp,LOCATION_MZONE,0,nil)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
local ct=-ft+1
local g=nil
if ft>0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
g=mg:Select(tp,3,3,nil)
elseif ft>-2 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
g=mg:FilterSelect(tp,c4998619.mzfilter,ct,ct,nil) local sg=mg:SelectSubGroup(tp,aux.mzctcheck,true,3,3,tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) if sg then
local g2=mg:Select(tp,3-ct,3-ct,g) sg:KeepAlive()
g:Merge(g2) e:SetLabelObject(sg)
else return true
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) else return false end
g=mg:FilterSelect(tp,c4998619.mzfilter,3,3,nil) end
end function c4998619.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g=e:GetLabelObject()
Duel.SendtoGrave(g,REASON_COST) Duel.SendtoGrave(g,REASON_COST)
g:DeleteGroup()
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_UPDATE_ATTACK) e1:SetCode(EFFECT_UPDATE_ATTACK)
......
...@@ -15,6 +15,7 @@ function c5126490.initial_effect(c) ...@@ -15,6 +15,7 @@ function c5126490.initial_effect(c)
e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e2:SetRange(LOCATION_HAND) e2:SetRange(LOCATION_HAND)
e2:SetCondition(c5126490.spcon) e2:SetCondition(c5126490.spcon)
e2:SetTarget(c5126490.sptg)
e2:SetOperation(c5126490.spop) e2:SetOperation(c5126490.spop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
--damage&recover --damage&recover
...@@ -36,26 +37,32 @@ function c5126490.initial_effect(c) ...@@ -36,26 +37,32 @@ function c5126490.initial_effect(c)
e4:SetValue(1) e4:SetValue(1)
c:RegisterEffect(e4) c:RegisterEffect(e4)
end end
function c5126490.spfilter1(c,tp) function c5126490.spfilter(c,tp)
return c:IsFaceup() and c:IsCode(89943723) and c:IsAbleToGraveAsCost() return c:IsFaceup() and c:IsAbleToGraveAsCost()
and Duel.IsExistingMatchingCard(c5126490.spfilter2,tp,LOCATION_MZONE,0,1,c)
end end
function c5126490.spfilter2(c) function c5126490.fselect(g,tp)
return c:IsFaceup() and c:IsCode(78371393) and c:IsAbleToGraveAsCost() return aux.mzctcheck(g,tp) and aux.gfcheck(g,Card.IsCode,89943723,78371393)
end end
function c5126490.spcon(e,c) function c5126490.spcon(e,c)
if c==nil then return true end if c==nil then return true end
local tp=c:GetControler() local tp=c:GetControler()
return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 local g=Duel.GetMatchingGroup(c5126490.spfilter,tp,LOCATION_MZONE,0,nil)
and Duel.IsExistingMatchingCard(c5126490.spfilter1,tp,LOCATION_MZONE,0,1,nil,tp) return g:CheckSubGroup(c5126490.fselect,2,2,tp)
end end
function c5126490.spop(e,tp,eg,ep,ev,re,r,rp,c) function c5126490.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) local g=Duel.GetMatchingGroup(c5126490.spfilter,tp,LOCATION_MZONE,0,nil)
local g1=Duel.SelectMatchingCard(tp,c5126490.spfilter1,tp,LOCATION_MZONE,0,1,1,nil,tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local g2=Duel.SelectMatchingCard(tp,c5126490.spfilter2,tp,LOCATION_MZONE,0,1,1,g1:GetFirst()) local sg=g:SelectSubGroup(tp,c5126490.fselect,true,2,2,tp)
g1:Merge(g2) if sg then
Duel.SendtoGrave(g1,REASON_COST) sg:KeepAlive()
e:SetLabelObject(sg)
return true
else return false end
end
function c5126490.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g=e:GetLabelObject()
Duel.SendtoGrave(g,REASON_COST)
g:DeleteGroup()
end end
function c5126490.damtg(e,tp,eg,ep,ev,re,r,rp,chk) function c5126490.damtg(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler() local c=e:GetHandler()
......
...@@ -14,6 +14,7 @@ function c51316684.initial_effect(c) ...@@ -14,6 +14,7 @@ function c51316684.initial_effect(c)
e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e2:SetRange(LOCATION_HAND+LOCATION_GRAVE) e2:SetRange(LOCATION_HAND+LOCATION_GRAVE)
e2:SetCondition(c51316684.spcon) e2:SetCondition(c51316684.spcon)
e2:SetTarget(c51316684.sptg)
e2:SetOperation(c51316684.spop) e2:SetOperation(c51316684.spop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
--remove --remove
...@@ -57,42 +58,27 @@ function c51316684.spcon(e,c) ...@@ -57,42 +58,27 @@ function c51316684.spcon(e,c)
local tp=c:GetControler() local tp=c:GetControler()
local sum=Duel.GetMatchingGroup(c51316684.sumfilter,tp,LOCATION_MZONE,0,nil):GetSum(c51316684.lv_or_rk) local sum=Duel.GetMatchingGroup(c51316684.sumfilter,tp,LOCATION_MZONE,0,nil):GetSum(c51316684.lv_or_rk)
if sum>8 then return false end if sum>8 then return false end
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local loc=LOCATION_GRAVE+LOCATION_HAND
if ft<-1 then return false end if c:IsHasEffect(34822850) then loc=loc+LOCATION_MZONE end
if c:IsHasEffect(34822850) then local g=Duel.GetMatchingGroup(c51316684.spfilter,tp,loc,0,c)
if ft>0 then return g:CheckSubGroup(aux.mzctcheck,2,2,tp)
return Duel.IsExistingMatchingCard(c51316684.spfilter,tp,LOCATION_MZONE+LOCATION_GRAVE+LOCATION_HAND,0,2,c)
else
local ct=-ft+1
return Duel.IsExistingMatchingCard(c51316684.spfilter,tp,LOCATION_MZONE,0,ct,nil)
and Duel.IsExistingMatchingCard(c51316684.spfilter,tp,LOCATION_MZONE+LOCATION_GRAVE+LOCATION_HAND,0,2,c)
end
else
return ft>0 and Duel.IsExistingMatchingCard(c51316684.spfilter,tp,LOCATION_GRAVE+LOCATION_HAND,0,2,c)
end
end end
function c51316684.spop(e,tp,eg,ep,ev,re,r,rp,c) function c51316684.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local loc=LOCATION_GRAVE+LOCATION_HAND
local g=nil if c:IsHasEffect(34822850) then loc=loc+LOCATION_MZONE end
local g=Duel.GetMatchingGroup(c51316684.spfilter,tp,loc,0,c)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
if c:IsHasEffect(34822850) then local sg=g:SelectSubGroup(tp,aux.mzctcheck,true,2,2,tp)
if ft>0 then if sg then
g=Duel.SelectMatchingCard(tp,c51316684.spfilter,tp,LOCATION_MZONE+LOCATION_GRAVE+LOCATION_HAND,0,2,2,c) sg:KeepAlive()
else e:SetLabelObject(sg)
local sg=Duel.GetMatchingGroup(c51316684.spfilter,tp,LOCATION_MZONE+LOCATION_GRAVE+LOCATION_HAND,0,c) return true
local ct=-ft+1 else return false end
g=sg:FilterSelect(tp,Card.IsLocation,ct,ct,nil,LOCATION_MZONE) end
if ct<2 then function c51316684.spop(e,tp,eg,ep,ev,re,r,rp,c)
sg:Sub(g) local g=e:GetLabelObject()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
local g2=sg:Select(tp,1,1,nil)
g:Merge(g2)
end
end
else
g=Duel.SelectMatchingCard(tp,c51316684.spfilter,tp,LOCATION_GRAVE+LOCATION_HAND,0,2,2,c)
end
Duel.Remove(g,POS_FACEUP,REASON_COST) Duel.Remove(g,POS_FACEUP,REASON_COST)
g:DeleteGroup()
end end
function c51316684.rmcon(e,tp,eg,ep,ev,re,r,rp) function c51316684.rmcon(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetTurnPlayer()==tp and e:GetHandler():GetBattledGroup():GetCount()>0 return Duel.GetTurnPlayer()==tp and e:GetHandler():GetBattledGroup():GetCount()>0
......
...@@ -14,6 +14,7 @@ function c52085072.initial_effect(c) ...@@ -14,6 +14,7 @@ function c52085072.initial_effect(c)
e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e2:SetRange(LOCATION_HAND+LOCATION_GRAVE) e2:SetRange(LOCATION_HAND+LOCATION_GRAVE)
e2:SetCondition(c52085072.spcon) e2:SetCondition(c52085072.spcon)
e2:SetTarget(c52085072.sptg)
e2:SetOperation(c52085072.spop) e2:SetOperation(c52085072.spop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
--cannot attack --cannot attack
...@@ -39,36 +40,26 @@ end ...@@ -39,36 +40,26 @@ end
function c52085072.spcfilter(c) function c52085072.spcfilter(c)
return c:IsFaceup() and c:IsLevel(1) and c:IsAbleToGraveAsCost() return c:IsFaceup() and c:IsLevel(1) and c:IsAbleToGraveAsCost()
end end
function c52085072.mzfilter(c,tp)
return c:GetSequence()<5
end
function c52085072.spcon(e,c) function c52085072.spcon(e,c)
if c==nil then return true end if c==nil then return true end
local tp=c:GetControler() local tp=c:GetControler()
local sg=Duel.GetMatchingGroup(c52085072.spcfilter,tp,LOCATION_MZONE,0,nil) local sg=Duel.GetMatchingGroup(c52085072.spcfilter,tp,LOCATION_MZONE,0,nil)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) return sg:CheckSubGroup(aux.mzctcheck,4,4,tp)
local ct=-ft+1
return ft>-4 and sg:GetCount()>3 and (ft>0 or sg:IsExists(c52085072.mzfilter,ct,nil,tp))
end end
function c52085072.spop(e,tp,eg,ep,ev,re,r,rp,c) function c52085072.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
local sg=Duel.GetMatchingGroup(c52085072.spcfilter,tp,LOCATION_MZONE,0,nil) local sg=Duel.GetMatchingGroup(c52085072.spcfilter,tp,LOCATION_MZONE,0,nil)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
local g=nil
if ft>0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
g=sg:Select(tp,4,4,nil)
elseif ft>-3 then
local ct=-ft+1
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
g=sg:FilterSelect(tp,c52085072.mzfilter,ct,ct,nil,tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local g2=sg:Select(tp,4-ct,4-ct,g) local g=sg:SelectSubGroup(tp,aux.mzctcheck,true,4,4,tp)
g:Merge(g2) if g then
else g:KeepAlive()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) e:SetLabelObject(g)
g=sg:FilterSelect(tp,c52085072.mzfilter,4,4,nil,tp) return true
end else return false end
end
function c52085072.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g=e:GetLabelObject()
Duel.SendtoGrave(g,REASON_COST) Duel.SendtoGrave(g,REASON_COST)
g:DeleteGroup()
end end
function c52085072.antarget(e,c) function c52085072.antarget(e,c)
return c~=e:GetHandler() return c~=e:GetHandler()
......
...@@ -9,6 +9,7 @@ function c53183600.initial_effect(c) ...@@ -9,6 +9,7 @@ function c53183600.initial_effect(c)
e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e2:SetRange(LOCATION_HAND) e2:SetRange(LOCATION_HAND)
e2:SetCondition(c53183600.spcon) e2:SetCondition(c53183600.spcon)
e2:SetTarget(c53183600.sptg)
e2:SetOperation(c53183600.spop) e2:SetOperation(c53183600.spop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
--destroy --destroy
...@@ -53,36 +54,27 @@ end ...@@ -53,36 +54,27 @@ end
function c53183600.cfilter(c) function c53183600.cfilter(c)
return c:IsFaceup() and c:IsCode(15259703) return c:IsFaceup() and c:IsCode(15259703)
end end
function c53183600.mzfilter(c,tp)
return c:IsControler(tp) and c:GetSequence()<5
end
function c53183600.spcon(e,c) function c53183600.spcon(e,c)
if c==nil then return true end if c==nil then return true end
local tp=c:GetControler() local tp=c:GetControler()
local rg=Duel.GetReleaseGroup(tp) local rg=Duel.GetReleaseGroup(tp)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
local ct=-ft+1
return Duel.IsExistingMatchingCard(c53183600.cfilter,tp,LOCATION_ONFIELD,0,1,nil) return Duel.IsExistingMatchingCard(c53183600.cfilter,tp,LOCATION_ONFIELD,0,1,nil)
and ft>-2 and rg:GetCount()>1 and (ft>0 or rg:IsExists(c53183600.mzfilter,ct,nil,tp)) and rg:CheckSubGroup(aux.mzctcheckrel,2,2,tp)
end end
function c53183600.spop(e,tp,eg,ep,ev,re,r,rp,c) function c53183600.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
local rg=Duel.GetReleaseGroup(tp) local rg=Duel.GetReleaseGroup(tp)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
local g=nil
if ft>0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
g=rg:Select(tp,2,2,nil)
elseif ft==0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
g=rg:FilterSelect(tp,c53183600.mzfilter,1,1,nil,tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
local g2=rg:Select(tp,1,1,g:GetFirst()) local sg=rg:SelectSubGroup(tp,aux.mzctcheckrel,true,2,2,tp)
g:Merge(g2) if sg then
else sg:KeepAlive()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) e:SetLabelObject(sg)
g=rg:FilterSelect(tp,c53183600.mzfilter,2,2,nil,tp) return true
end else return false end
end
function c53183600.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g=e:GetLabelObject()
Duel.Release(g,REASON_COST) Duel.Release(g,REASON_COST)
g:DeleteGroup()
end end
function c53183600.sfilter(c) function c53183600.sfilter(c)
return c:IsReason(REASON_DESTROY) and c:IsPreviousPosition(POS_FACEUP) and c:GetPreviousCodeOnField()==15259703 and c:IsPreviousLocation(LOCATION_ONFIELD) return c:IsReason(REASON_DESTROY) and c:IsPreviousPosition(POS_FACEUP) and c:GetPreviousCodeOnField()==15259703 and c:IsPreviousLocation(LOCATION_ONFIELD)
......
...@@ -8,6 +8,7 @@ function c58330108.initial_effect(c) ...@@ -8,6 +8,7 @@ function c58330108.initial_effect(c)
e1:SetCode(EFFECT_SPSUMMON_PROC) e1:SetCode(EFFECT_SPSUMMON_PROC)
e1:SetRange(LOCATION_HAND) e1:SetRange(LOCATION_HAND)
e1:SetCondition(c58330108.spcon) e1:SetCondition(c58330108.spcon)
e1:SetTarget(c58330108.sptg)
e1:SetOperation(c58330108.spop) e1:SetOperation(c58330108.spop)
c:RegisterEffect(e1) c:RegisterEffect(e1)
--atk gain --atk gain
...@@ -35,29 +36,23 @@ end ...@@ -35,29 +36,23 @@ end
function c58330108.spcon(e,c) function c58330108.spcon(e,c)
if c==nil then return true end if c==nil then return true end
local tp=c:GetControler() local tp=c:GetControler()
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
local g=Duel.GetMatchingGroup(c58330108.cfilter,tp,LOCATION_MZONE+LOCATION_HAND,0,c) local g=Duel.GetMatchingGroup(c58330108.cfilter,tp,LOCATION_MZONE+LOCATION_HAND,0,c)
return g:GetCount()>=2 and ft>-2 and g:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)>-ft return g:CheckSubGroup(aux.mzctcheck,2,2,tp)
end end
function c58330108.spop(e,tp,eg,ep,ev,re,r,rp,c) function c58330108.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
local ct=-ft+1
local g=Duel.GetMatchingGroup(c58330108.cfilter,tp,LOCATION_MZONE+LOCATION_HAND,0,c) local g=Duel.GetMatchingGroup(c58330108.cfilter,tp,LOCATION_MZONE+LOCATION_HAND,0,c)
local sg=nil
if ft<=0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
sg=g:FilterSelect(tp,Card.IsLocation,ct,ct,nil,LOCATION_MZONE)
if ct<2 then
g:Sub(sg)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local sg1=g:Select(tp,2-ct,2-ct,nil)
sg:Merge(sg1)
end
else
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
sg=g:Select(tp,2,2,nil) local sg=g:SelectSubGroup(tp,aux.mzctcheck,true,2,2,tp)
end if sg then
Duel.SendtoGrave(sg,REASON_COST) sg:KeepAlive()
e:SetLabelObject(sg)
return true
else return false end
end
function c58330108.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g=e:GetLabelObject()
Duel.SendtoGrave(g,REASON_COST)
g:DeleteGroup()
end end
function c58330108.value(e,c) function c58330108.value(e,c)
return Duel.GetFieldGroupCount(c:GetControler(),LOCATION_REMOVED,LOCATION_REMOVED)*300 return Duel.GetFieldGroupCount(c:GetControler(),LOCATION_REMOVED,LOCATION_REMOVED)*300
......
...@@ -8,6 +8,7 @@ function c5861892.initial_effect(c) ...@@ -8,6 +8,7 @@ function c5861892.initial_effect(c)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_HAND) e1:SetRange(LOCATION_HAND)
e1:SetCondition(c5861892.spcon) e1:SetCondition(c5861892.spcon)
e1:SetTarget(c5861892.sptg)
e1:SetOperation(c5861892.spop) e1:SetOperation(c5861892.spop)
c:RegisterEffect(e1) c:RegisterEffect(e1)
--cannot special summon --cannot special summon
...@@ -30,36 +31,26 @@ c5861892.toss_coin=true ...@@ -30,36 +31,26 @@ c5861892.toss_coin=true
function c5861892.spfilter(c) function c5861892.spfilter(c)
return c:IsAbleToGraveAsCost() return c:IsAbleToGraveAsCost()
end end
function c5861892.mzfilter(c)
return c:GetSequence()<5
end
function c5861892.spcon(e,c) function c5861892.spcon(e,c)
if c==nil then return true end if c==nil then return true end
local tp=c:GetControler() local tp=c:GetControler()
local mg=Duel.GetMatchingGroup(c5861892.spfilter,tp,LOCATION_MZONE,0,nil) local mg=Duel.GetMatchingGroup(c5861892.spfilter,tp,LOCATION_MZONE,0,nil)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) return mg:CheckSubGroup(aux.mzctcheck,3,3,tp)
local ct=-ft+1
return ft>-3 and mg:GetCount()>2 and (ft>0 or mg:IsExists(c5861892.mzfilter,ct,nil))
end end
function c5861892.spop(e,tp,eg,ep,ev,re,r,rp,c) function c5861892.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
local mg=Duel.GetMatchingGroup(c5861892.spfilter,tp,LOCATION_MZONE,0,nil) local mg=Duel.GetMatchingGroup(c5861892.spfilter,tp,LOCATION_MZONE,0,nil)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
local ct=-ft+1
local g=nil
if ft>0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
g=mg:Select(tp,3,3,nil)
elseif ft>-2 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
g=mg:FilterSelect(tp,c5861892.mzfilter,ct,ct,nil)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local g2=mg:Select(tp,3-ct,3-ct,g) local sg=mg:SelectSubGroup(tp,aux.mzctcheck,true,3,3,tp)
g:Merge(g2) if sg then
else sg:KeepAlive()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) e:SetLabelObject(sg)
g=mg:FilterSelect(tp,c5861892.mzfilter,3,3,nil) return true
end else return false end
end
function c5861892.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g=e:GetLabelObject()
Duel.SendtoGrave(g,REASON_COST) Duel.SendtoGrave(g,REASON_COST)
g:DeleteGroup()
end end
function c5861892.cointg(e,tp,eg,ep,ev,re,r,rp,chk) function c5861892.cointg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end if chk==0 then return true end
......
...@@ -14,6 +14,7 @@ function c63845230.initial_effect(c) ...@@ -14,6 +14,7 @@ function c63845230.initial_effect(c)
e2:SetCode(EFFECT_SPSUMMON_PROC) e2:SetCode(EFFECT_SPSUMMON_PROC)
e2:SetRange(LOCATION_HAND) e2:SetRange(LOCATION_HAND)
e2:SetCondition(c63845230.spcon) e2:SetCondition(c63845230.spcon)
e2:SetTarget(c63845230.sptg)
e2:SetOperation(c63845230.spop) e2:SetOperation(c63845230.spop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
--atk/def --atk/def
...@@ -65,30 +66,23 @@ end ...@@ -65,30 +66,23 @@ end
function c63845230.spcon(e,c) function c63845230.spcon(e,c)
if c==nil then return true end if c==nil then return true end
local tp=c:GetControler() local tp=c:GetControler()
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
local ct=-ft+1
local g=Duel.GetMatchingGroup(Card.IsAbleToRemoveAsCost,tp,LOCATION_HAND+LOCATION_ONFIELD+LOCATION_EXTRA,0,c,POS_FACEDOWN) local g=Duel.GetMatchingGroup(Card.IsAbleToRemoveAsCost,tp,LOCATION_HAND+LOCATION_ONFIELD+LOCATION_EXTRA,0,c,POS_FACEDOWN)
return g:GetCount()>=5 and (ft>0 or g:IsExists(Card.IsLocation,ct,nil,LOCATION_MZONE)) return g:CheckSubGroup(aux.mzctcheck,5,#g,tp)
end end
function c63845230.spop(e,tp,eg,ep,ev,re,r,rp,c) function c63845230.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
local ct=-ft+1
local g=Duel.GetMatchingGroup(Card.IsAbleToRemoveAsCost,tp,LOCATION_HAND+LOCATION_ONFIELD+LOCATION_EXTRA,0,c,POS_FACEDOWN) local g=Duel.GetMatchingGroup(Card.IsAbleToRemoveAsCost,tp,LOCATION_HAND+LOCATION_ONFIELD+LOCATION_EXTRA,0,c,POS_FACEDOWN)
local rg=nil
if ft<=0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
rg=g:FilterSelect(tp,Card.IsLocation,ct,ct,nil,LOCATION_MZONE)
if ct<5 then
g:Sub(rg)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
local g1=g:Select(tp,5-ct,99-ct,nil)
rg:Merge(g1)
end
else
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
rg=g:Select(tp,5,99,nil) local sg=g:SelectSubGroup(tp,aux.mzctcheck,true,5,#g,tp)
end if sg then
Duel.Remove(rg,POS_FACEDOWN,REASON_COST) sg:KeepAlive()
e:SetLabelObject(sg)
return true
else return false end
end
function c63845230.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g=e:GetLabelObject()
Duel.Remove(g,POS_FACEDOWN,REASON_COST)
g:DeleteGroup()
end end
function c63845230.val(e,c) function c63845230.val(e,c)
return Duel.GetMatchingGroupCount(Card.IsFacedown,0,LOCATION_REMOVED,LOCATION_REMOVED,nil)*100 return Duel.GetMatchingGroupCount(Card.IsFacedown,0,LOCATION_REMOVED,LOCATION_REMOVED,nil)*100
......
...@@ -7,6 +7,7 @@ function c65268179.initial_effect(c) ...@@ -7,6 +7,7 @@ function c65268179.initial_effect(c)
e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) e1:SetProperty(EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_HAND+LOCATION_DECK) e1:SetRange(LOCATION_HAND+LOCATION_DECK)
e1:SetCondition(c65268179.spcon) e1:SetCondition(c65268179.spcon)
e1:SetTarget(c65268179.sptg)
e1:SetOperation(c65268179.spop) e1:SetOperation(c65268179.spop)
e1:SetValue(SUMMON_VALUE_SELF) e1:SetValue(SUMMON_VALUE_SELF)
c:RegisterEffect(e1) c:RegisterEffect(e1)
...@@ -34,26 +35,35 @@ function c65268179.initial_effect(c) ...@@ -34,26 +35,35 @@ function c65268179.initial_effect(c)
e3:SetOperation(c65268179.thop) e3:SetOperation(c65268179.thop)
c:RegisterEffect(e3) c:RegisterEffect(e3)
end end
function c65268179.spfilter1(c,tp) function c65268179.spfilter1(c)
return c:IsFaceup() and c:IsRace(RACE_SPELLCASTER) and c:IsAbleToGraveAsCost() return c:IsFaceup() and c:IsAbleToGraveAsCost()
and Duel.IsExistingMatchingCard(c65268179.spfilter2,tp,LOCATION_MZONE,0,1,c)
end end
function c65268179.spfilter2(c) function c65268179.spfilter2(c)
return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_EARTH) and c:IsAbleToGraveAsCost() and c:IsLevelBelow(4) return c:IsAttribute(ATTRIBUTE_EARTH) and c:IsLevelBelow(4)
end
function c65268179.fselect(g,tp)
return aux.mzctcheck(g,tp) and aux.gffcheck(g,Card.IsRace,RACE_SPELLCASTER,c65268179.spfilter2,nil)
end end
function c65268179.spcon(e,c) function c65268179.spcon(e,c)
if c==nil then return true end if c==nil then return true end
local tp=c:GetControler() local tp=c:GetControler()
return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 local g=Duel.GetMatchingGroup(c65268179.spfilter1,tp,LOCATION_MZONE,0,nil)
and Duel.IsExistingMatchingCard(c65268179.spfilter1,tp,LOCATION_MZONE,0,1,nil,tp) return g:CheckSubGroup(c65268179.fselect,2,2,tp)
end end
function c65268179.spop(e,tp,eg,ep,ev,re,r,rp,c) function c65268179.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) local g=Duel.GetMatchingGroup(c65268179.spfilter1,tp,LOCATION_MZONE,0,nil)
local g1=Duel.SelectMatchingCard(tp,c65268179.spfilter1,tp,LOCATION_MZONE,0,1,1,nil,tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local g2=Duel.SelectMatchingCard(tp,c65268179.spfilter2,tp,LOCATION_MZONE,0,1,1,g1:GetFirst()) local sg=g:SelectSubGroup(tp,c65268179.fselect,true,2,2,tp)
g1:Merge(g2) if sg then
Duel.SendtoGrave(g1,REASON_COST) sg:KeepAlive()
e:SetLabelObject(sg)
return true
else return false end
end
function c65268179.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g=e:GetLabelObject()
Duel.SendtoGrave(g,REASON_COST)
g:DeleteGroup()
end end
function c65268179.condition(e,tp,eg,ep,ev,re,r,rp) function c65268179.condition(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+SUMMON_VALUE_SELF return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+SUMMON_VALUE_SELF
......
...@@ -7,6 +7,7 @@ function c68881649.initial_effect(c) ...@@ -7,6 +7,7 @@ function c68881649.initial_effect(c)
e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) e1:SetProperty(EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_HAND+LOCATION_DECK) e1:SetRange(LOCATION_HAND+LOCATION_DECK)
e1:SetCondition(c68881649.spcon) e1:SetCondition(c68881649.spcon)
e1:SetTarget(c68881649.sptg)
e1:SetOperation(c68881649.spop) e1:SetOperation(c68881649.spop)
e1:SetValue(SUMMON_VALUE_SELF) e1:SetValue(SUMMON_VALUE_SELF)
c:RegisterEffect(e1) c:RegisterEffect(e1)
...@@ -17,26 +18,32 @@ function c68881649.initial_effect(c) ...@@ -17,26 +18,32 @@ function c68881649.initial_effect(c)
e2:SetCondition(c68881649.condition) e2:SetCondition(c68881649.condition)
c:RegisterEffect(e2) c:RegisterEffect(e2)
end end
function c68881649.spfilter1(c,tp) function c68881649.spfilter(c)
return c:IsFaceup() and c:IsCode(74364659) and c:IsAbleToGraveAsCost() return c:IsFaceup() and c:IsAbleToGraveAsCost()
and Duel.IsExistingMatchingCard(c68881649.spfilter2,tp,LOCATION_MZONE,0,1,c)
end end
function c68881649.spfilter2(c) function c68881649.fselect(g,tp)
return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_WATER) and c:IsAbleToGraveAsCost() return aux.mzctcheck(g,tp) and aux.gffcheck(g,Card.IsCode,74364659,Card.IsAttribute,ATTRIBUTE_WATER)
end end
function c68881649.spcon(e,c) function c68881649.spcon(e,c)
if c==nil then return true end if c==nil then return true end
local tp=c:GetControler() local tp=c:GetControler()
return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 local g=Duel.GetMatchingGroup(c68881649.spfilter,tp,LOCATION_MZONE,0,nil)
and Duel.IsExistingMatchingCard(c68881649.spfilter1,tp,LOCATION_MZONE,0,1,nil,tp) return g:CheckSubGroup(c68881649.fselect,2,2,tp)
end end
function c68881649.spop(e,tp,eg,ep,ev,re,r,rp,c) function c68881649.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) local g=Duel.GetMatchingGroup(c68881649.spfilter,tp,LOCATION_MZONE,0,nil)
local g1=Duel.SelectMatchingCard(tp,c68881649.spfilter1,tp,LOCATION_MZONE,0,1,1,nil,tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local g2=Duel.SelectMatchingCard(tp,c68881649.spfilter2,tp,LOCATION_MZONE,0,1,1,g1:GetFirst()) local sg=g:SelectSubGroup(tp,c68881649.fselect,true,2,2,tp)
g1:Merge(g2) if sg then
Duel.SendtoGrave(g1,REASON_COST) sg:KeepAlive()
e:SetLabelObject(sg)
return true
else return false end
end
function c68881649.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g=e:GetLabelObject()
Duel.SendtoGrave(g,REASON_COST)
g:DeleteGroup()
end end
function c68881649.condition(e,tp,eg,ep,ev,re,r,rp) function c68881649.condition(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+SUMMON_VALUE_SELF return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+SUMMON_VALUE_SELF
......
...@@ -8,6 +8,7 @@ function c69831560.initial_effect(c) ...@@ -8,6 +8,7 @@ function c69831560.initial_effect(c)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_HAND) e1:SetRange(LOCATION_HAND)
e1:SetCondition(c69831560.spcon) e1:SetCondition(c69831560.spcon)
e1:SetTarget(c69831560.sptg)
e1:SetOperation(c69831560.spop) e1:SetOperation(c69831560.spop)
c:RegisterEffect(e1) c:RegisterEffect(e1)
--cannot special summon --cannot special summon
...@@ -30,36 +31,26 @@ c69831560.toss_coin=true ...@@ -30,36 +31,26 @@ c69831560.toss_coin=true
function c69831560.spfilter(c) function c69831560.spfilter(c)
return c:IsAbleToGraveAsCost() return c:IsAbleToGraveAsCost()
end end
function c69831560.mzfilter(c)
return c:GetSequence()<5
end
function c69831560.spcon(e,c) function c69831560.spcon(e,c)
if c==nil then return true end if c==nil then return true end
local tp=c:GetControler() local tp=c:GetControler()
local mg=Duel.GetMatchingGroup(c69831560.spfilter,tp,LOCATION_MZONE,0,nil) local mg=Duel.GetMatchingGroup(c69831560.spfilter,tp,LOCATION_MZONE,0,nil)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) return mg:CheckSubGroup(aux.mzctcheck,3,3,tp)
local ct=-ft+1
return ft>-3 and mg:GetCount()>2 and (ft>0 or mg:IsExists(c69831560.mzfilter,ct,nil))
end end
function c69831560.spop(e,tp,eg,ep,ev,re,r,rp,c) function c69831560.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
local mg=Duel.GetMatchingGroup(c69831560.spfilter,tp,LOCATION_MZONE,0,nil) local mg=Duel.GetMatchingGroup(c69831560.filter,tp,LOCATION_MZONE,0,nil)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
local ct=-ft+1
local g=nil
if ft>0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
g=mg:Select(tp,3,3,nil)
elseif ft>-2 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
g=mg:FilterSelect(tp,c69831560.mzfilter,ct,ct,nil)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local g2=mg:Select(tp,3-ct,3-ct,g) local sg=mg:SelectSubGroup(tp,aux.mzctcheck,true,3,3,tp)
g:Merge(g2) if sg then
else sg:KeepAlive()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) e:SetLabelObject(sg)
g=mg:FilterSelect(tp,c69831560.mzfilter,3,3,nil) return true
end else return false end
end
function c69831560.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g=e:GetLabelObject()
Duel.SendtoGrave(g,REASON_COST) Duel.SendtoGrave(g,REASON_COST)
g:DeleteGroup()
end end
function c69831560.cointg(e,tp,eg,ep,ev,re,r,rp,chk) function c69831560.cointg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end if chk==0 then return true end
......
...@@ -15,6 +15,7 @@ function c69890967.initial_effect(c) ...@@ -15,6 +15,7 @@ function c69890967.initial_effect(c)
e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e2:SetRange(LOCATION_HAND) e2:SetRange(LOCATION_HAND)
e2:SetCondition(c69890967.spcon) e2:SetCondition(c69890967.spcon)
e2:SetTarget(c69890967.sptg)
e2:SetOperation(c69890967.spop) e2:SetOperation(c69890967.spop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
--token --token
...@@ -42,36 +43,26 @@ end ...@@ -42,36 +43,26 @@ end
function c69890967.rfilter(c,tp) function c69890967.rfilter(c,tp)
return c:IsRace(RACE_FIEND) and (c:IsControler(tp) or c:IsFaceup()) return c:IsRace(RACE_FIEND) and (c:IsControler(tp) or c:IsFaceup())
end end
function c69890967.mzfilter(c,tp)
return c:IsControler(tp) and c:GetSequence()<5
end
function c69890967.spcon(e,c) function c69890967.spcon(e,c)
if c==nil then return true end if c==nil then return true end
local tp=c:GetControler() local tp=c:GetControler()
local rg=Duel.GetReleaseGroup(tp):Filter(c69890967.rfilter,nil,tp) local rg=Duel.GetReleaseGroup(tp):Filter(c69890967.rfilter,nil,tp)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) return rg:CheckSubGroup(aux.mzctcheckrel,3,3,tp)
local ct=-ft+1
return ft>-3 and rg:GetCount()>2 and (ft>0 or rg:IsExists(c69890967.mzfilter,ct,nil,tp))
end end
function c69890967.spop(e,tp,eg,ep,ev,re,r,rp,c) function c69890967.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
local rg=Duel.GetReleaseGroup(tp):Filter(c69890967.rfilter,nil,tp) local rg=Duel.GetReleaseGroup(tp):Filter(c69890967.rfilter,nil,tp)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
local g=nil
if ft>0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
g=rg:Select(tp,3,3,nil)
elseif ft>-2 then
local ct=-ft+1
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
g=rg:FilterSelect(tp,c69890967.mzfilter,ct,ct,nil,tp) local sg=rg:SelectSubGroup(tp,aux.mzctcheckrel,true,3,3,tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) if sg then
local g2=rg:Select(tp,3-ct,3-ct,g) sg:KeepAlive()
g:Merge(g2) e:SetLabelObject(sg)
else return true
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) else return false end
g=rg:FilterSelect(tp,c69890967.mzfilter,3,3,nil,tp) end
end function c69890967.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g=e:GetLabelObject()
Duel.Release(g,REASON_COST) Duel.Release(g,REASON_COST)
g:DeleteGroup()
end end
function c69890967.tkcon(e,tp,eg,ep,ev,re,r,rp) function c69890967.tkcon(e,tp,eg,ep,ev,re,r,rp)
return ep~=tp return ep~=tp
......
...@@ -7,6 +7,7 @@ function c74426895.initial_effect(c) ...@@ -7,6 +7,7 @@ function c74426895.initial_effect(c)
e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) e1:SetProperty(EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_HAND+LOCATION_DECK) e1:SetRange(LOCATION_HAND+LOCATION_DECK)
e1:SetCondition(c74426895.spcon) e1:SetCondition(c74426895.spcon)
e1:SetTarget(c74426895.sptg)
e1:SetOperation(c74426895.spop) e1:SetOperation(c74426895.spop)
e1:SetValue(SUMMON_VALUE_SELF) e1:SetValue(SUMMON_VALUE_SELF)
c:RegisterEffect(e1) c:RegisterEffect(e1)
...@@ -34,26 +35,35 @@ function c74426895.initial_effect(c) ...@@ -34,26 +35,35 @@ function c74426895.initial_effect(c)
e3:SetOperation(c74426895.thop) e3:SetOperation(c74426895.thop)
c:RegisterEffect(e3) c:RegisterEffect(e3)
end end
function c74426895.spfilter1(c,tp) function c74426895.spfilter(c)
return c:IsFaceup() and c:IsRace(RACE_SPELLCASTER) and c:IsAbleToGraveAsCost() return c:IsFaceup() and c:IsAbleToGraveAsCost()
and Duel.IsExistingMatchingCard(c74426895.spfilter2,tp,LOCATION_MZONE,0,1,c)
end end
function c74426895.spfilter2(c) function c74426895.spfilter2(c)
return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_WATER) and c:IsAbleToGraveAsCost() and c:IsLevelBelow(4) return c:IsAttribute(ATTRIBUTE_WATER) and c:IsLevelBelow(4)
end
function c74426895.fselect(g,tp)
return aux.mzctcheck(g,tp) and aux.gffcheck(g,Card.IsRace,RACE_SPELLCASTER,c74426895.spfilter2,nil)
end end
function c74426895.spcon(e,c) function c74426895.spcon(e,c)
if c==nil then return true end if c==nil then return true end
local tp=c:GetControler() local tp=c:GetControler()
return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 local g=Duel.GetMatchingGroup(c74426895.spfilter,tp,LOCATION_MZONE,0,nil)
and Duel.IsExistingMatchingCard(c74426895.spfilter1,tp,LOCATION_MZONE,0,1,nil,tp) return g:CheckSubGroup(c74426895.fselect,2,2,tp)
end end
function c74426895.spop(e,tp,eg,ep,ev,re,r,rp,c) function c74426895.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) local g=Duel.GetMatchingGroup(c74426895.spfilter,tp,LOCATION_MZONE,0,nil)
local g1=Duel.SelectMatchingCard(tp,c74426895.spfilter1,tp,LOCATION_MZONE,0,1,1,nil,tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local g2=Duel.SelectMatchingCard(tp,c74426895.spfilter2,tp,LOCATION_MZONE,0,1,1,g1:GetFirst()) local sg=g:SelectSubGroup(tp,c74426895.fselect,true,2,2,tp)
g1:Merge(g2) if sg then
Duel.SendtoGrave(g1,REASON_COST) sg:KeepAlive()
e:SetLabelObject(sg)
return true
else return false end
end
function c74426895.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g=e:GetLabelObject()
Duel.SendtoGrave(g,REASON_COST)
g:DeleteGroup()
end end
function c74426895.condition(e,tp,eg,ep,ev,re,r,rp) function c74426895.condition(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+SUMMON_VALUE_SELF return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+SUMMON_VALUE_SELF
......
...@@ -8,6 +8,7 @@ function c75347539.initial_effect(c) ...@@ -8,6 +8,7 @@ function c75347539.initial_effect(c)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_HAND) e1:SetRange(LOCATION_HAND)
e1:SetCondition(c75347539.spcon) e1:SetCondition(c75347539.spcon)
e1:SetTarget(c75347539.sptg)
e1:SetOperation(c75347539.spop) e1:SetOperation(c75347539.spop)
c:RegisterEffect(e1) c:RegisterEffect(e1)
--special summon --special summon
...@@ -22,20 +23,30 @@ function c75347539.initial_effect(c) ...@@ -22,20 +23,30 @@ function c75347539.initial_effect(c)
e2:SetOperation(c75347539.operation) e2:SetOperation(c75347539.operation)
c:RegisterEffect(e2) c:RegisterEffect(e2)
end end
c75347539.spchecks=aux.CreateChecks(Card.IsCode,{99785935,39256679,11549357})
function c75347539.fselect(g,tp)
return aux.mzctcheck(g,tp) and Duel.CheckReleaseGroupEx(tp,aux.IsInGroup,#g,nil,g)
end
function c75347539.spcon(e,c) function c75347539.spcon(e,c)
if c==nil then return true end if c==nil then return true end
local tp=c:GetControler() local tp=c:GetControler()
return Duel.CheckReleaseGroupEx(tp,Card.IsCode,1,nil,99785935) local g=Duel.GetReleaseGroup(tp,true)
and Duel.CheckReleaseGroupEx(tp,Card.IsCode,1,nil,39256679) return g:CheckSubGroupEach(c75347539.spchecks,c75347539.fselect,tp)
and Duel.CheckReleaseGroupEx(tp,Card.IsCode,1,nil,11549357) end
function c75347539.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
local g=Duel.GetReleaseGroup(tp,true)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
local sg=g:SelectSubGroupEach(tp,c75347539.spchecks,true,c75347539.fselect,tp)
if sg then
sg:KeepAlive()
e:SetLabelObject(sg)
return true
else return false end
end end
function c75347539.spop(e,tp,eg,ep,ev,re,r,rp,c) function c75347539.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g1=Duel.SelectReleaseGroupEx(tp,Card.IsCode,1,1,nil,99785935) local g=e:GetLabelObject()
local g2=Duel.SelectReleaseGroupEx(tp,Card.IsCode,1,1,nil,39256679) Duel.Release(g,REASON_COST)
local g3=Duel.SelectReleaseGroupEx(tp,Card.IsCode,1,1,nil,11549357) g:DeleteGroup()
g1:Merge(g2)
g1:Merge(g3)
Duel.Release(g1,REASON_COST)
end end
function c75347539.cost(e,tp,eg,ep,ev,re,r,rp,chk) function c75347539.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():IsReleasable() end if chk==0 then return e:GetHandler():IsReleasable() end
......
...@@ -8,6 +8,7 @@ function c77387463.initial_effect(c) ...@@ -8,6 +8,7 @@ function c77387463.initial_effect(c)
e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e2:SetRange(LOCATION_HAND) e2:SetRange(LOCATION_HAND)
e2:SetCondition(c77387463.spcon) e2:SetCondition(c77387463.spcon)
e2:SetTarget(c77387463.sptg)
e2:SetOperation(c77387463.spop) e2:SetOperation(c77387463.spop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
--Damage --Damage
...@@ -33,35 +34,26 @@ end ...@@ -33,35 +34,26 @@ end
function c77387463.filter(c) function c77387463.filter(c)
return c:IsFaceup() and c:IsSetCard(0xe3) and c:IsAbleToGraveAsCost() return c:IsFaceup() and c:IsSetCard(0xe3) and c:IsAbleToGraveAsCost()
end end
function c77387463.mzfilter(c)
return c:GetSequence()<5
end
function c77387463.spcon(e,c) function c77387463.spcon(e,c)
if c==nil then return true end if c==nil then return true end
local tp=c:GetControler() local tp=c:GetControler()
local mg=Duel.GetMatchingGroup(c77387463.filter,tp,LOCATION_MZONE,0,nil) local mg=Duel.GetMatchingGroup(c77387463.filter,tp,LOCATION_MZONE,0,nil)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) return mg:CheckSubGroup(aux.mzctcheck,2,2,tp)
local ct=-ft+1
return ft>-2 and mg:GetCount()>1 and (ft>0 or mg:IsExists(c77387463.mzfilter,ct,nil))
end end
function c77387463.spop(e,tp,eg,ep,ev,re,r,rp,c) function c77387463.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
local mg=Duel.GetMatchingGroup(c77387463.filter,tp,LOCATION_MZONE,0,nil) local mg=Duel.GetMatchingGroup(c77387463.filter,tp,LOCATION_MZONE,0,nil)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
local g=nil
if ft>0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
g=mg:Select(tp,2,2,nil)
elseif ft==0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
g=mg:FilterSelect(tp,c77387463.mzfilter,1,1,nil) local sg=mg:SelectSubGroup(tp,aux.mzctcheck,true,2,2,tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) if sg then
local g2=mg:Select(tp,1,1,g) sg:KeepAlive()
g:Merge(g2) e:SetLabelObject(sg)
else return true
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) else return false end
g=mg:FilterSelect(tp,c77387463.mzfilter,2,2,nil) end
end function c77387463.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g=e:GetLabelObject()
Duel.SendtoGrave(g,REASON_COST) Duel.SendtoGrave(g,REASON_COST)
g:DeleteGroup()
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_UPDATE_ATTACK) e1:SetCode(EFFECT_UPDATE_ATTACK)
......
...@@ -8,6 +8,7 @@ function c78509901.initial_effect(c) ...@@ -8,6 +8,7 @@ function c78509901.initial_effect(c)
e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e2:SetRange(LOCATION_HAND) e2:SetRange(LOCATION_HAND)
e2:SetCondition(c78509901.spcon) e2:SetCondition(c78509901.spcon)
e2:SetTarget(c78509901.sptg)
e2:SetOperation(c78509901.spop) e2:SetOperation(c78509901.spop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
--extra att --extra att
...@@ -30,35 +31,26 @@ end ...@@ -30,35 +31,26 @@ end
function c78509901.filter(c) function c78509901.filter(c)
return c:IsFaceup() and c:IsSetCard(0xe3) and c:IsAbleToGraveAsCost() return c:IsFaceup() and c:IsSetCard(0xe3) and c:IsAbleToGraveAsCost()
end end
function c78509901.mzfilter(c)
return c:GetSequence()<5
end
function c78509901.spcon(e,c) function c78509901.spcon(e,c)
if c==nil then return true end if c==nil then return true end
local tp=c:GetControler() local tp=c:GetControler()
local mg=Duel.GetMatchingGroup(c78509901.filter,tp,LOCATION_MZONE,0,nil) local mg=Duel.GetMatchingGroup(c78509901.filter,tp,LOCATION_MZONE,0,nil)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) return mg:CheckSubGroup(aux.mzctcheck,2,2,tp)
local ct=-ft+1
return ft>-2 and mg:GetCount()>1 and (ft>0 or mg:IsExists(c78509901.mzfilter,ct,nil))
end end
function c78509901.spop(e,tp,eg,ep,ev,re,r,rp,c) function c78509901.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
local mg=Duel.GetMatchingGroup(c78509901.filter,tp,LOCATION_MZONE,0,nil) local mg=Duel.GetMatchingGroup(c78509901.filter,tp,LOCATION_MZONE,0,nil)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
local g=nil
if ft>0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
g=mg:Select(tp,2,2,nil)
elseif ft==0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
g=mg:FilterSelect(tp,c78509901.mzfilter,1,1,nil) local sg=mg:SelectSubGroup(tp,aux.mzctcheck,true,2,2,tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) if sg then
local g2=mg:Select(tp,1,1,g) sg:KeepAlive()
g:Merge(g2) e:SetLabelObject(sg)
else return true
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) else return false end
g=mg:FilterSelect(tp,c78509901.mzfilter,2,2,nil) end
end function c78509901.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g=e:GetLabelObject()
Duel.SendtoGrave(g,REASON_COST) Duel.SendtoGrave(g,REASON_COST)
g:DeleteGroup()
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_UPDATE_ATTACK) e1:SetCode(EFFECT_UPDATE_ATTACK)
......
...@@ -23,6 +23,7 @@ function c80776622.initial_effect(c) ...@@ -23,6 +23,7 @@ function c80776622.initial_effect(c)
e3:SetProperty(EFFECT_FLAG_UNCOPYABLE) e3:SetProperty(EFFECT_FLAG_UNCOPYABLE)
e3:SetRange(LOCATION_HAND) e3:SetRange(LOCATION_HAND)
e3:SetCondition(c80776622.spcon) e3:SetCondition(c80776622.spcon)
e3:SetTarget(c80776622.sptg)
e3:SetOperation(c80776622.spop) e3:SetOperation(c80776622.spop)
c:RegisterEffect(e3) c:RegisterEffect(e3)
--disable --disable
...@@ -92,11 +93,20 @@ function c80776622.spcon(e,c) ...@@ -92,11 +93,20 @@ function c80776622.spcon(e,c)
local rg=Duel.GetReleaseGroup(tp):Filter(c80776622.rfilter,nil,tp) local rg=Duel.GetReleaseGroup(tp):Filter(c80776622.rfilter,nil,tp)
return rg:CheckSubGroup(aux.mzctcheckrel,2,2,tp) return rg:CheckSubGroup(aux.mzctcheckrel,2,2,tp)
end end
function c80776622.spop(e,tp,eg,ep,ev,re,r,rp,c) function c80776622.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
local rg=Duel.GetReleaseGroup(tp):Filter(c80776622.rfilter,nil,tp) local rg=Duel.GetReleaseGroup(tp):Filter(c80776622.rfilter,nil,tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
local sg=rg:SelectSubGroup(tp,aux.mzctcheckrel,false,2,2,tp) local sg=rg:SelectSubGroup(tp,aux.mzctcheckrel,true,2,2,tp)
Duel.Release(sg,REASON_COST) if sg then
sg:KeepAlive()
e:SetLabelObject(sg)
return true
else return false end
end
function c80776622.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g=e:GetLabelObject()
Duel.Release(g,REASON_COST)
g:DeleteGroup()
end end
function c80776622.pfilter(c) function c80776622.pfilter(c)
return c:GetCurrentScale()%2~=0 return c:GetCurrentScale()%2~=0
......
...@@ -16,6 +16,7 @@ function c83965310.initial_effect(c) ...@@ -16,6 +16,7 @@ function c83965310.initial_effect(c)
e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e2:SetRange(LOCATION_HAND) e2:SetRange(LOCATION_HAND)
e2:SetCondition(c83965310.spcon) e2:SetCondition(c83965310.spcon)
e2:SetTarget(c83965310.sptg)
e2:SetOperation(c83965310.spop) e2:SetOperation(c83965310.spop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
--equip --equip
...@@ -38,36 +39,26 @@ function c83965310.initial_effect(c) ...@@ -38,36 +39,26 @@ function c83965310.initial_effect(c)
e4:SetCode(EFFECT_DISABLE) e4:SetCode(EFFECT_DISABLE)
c:RegisterEffect(e4) c:RegisterEffect(e4)
end end
function c83965310.mzfilter(c,tp)
return c:IsControler(tp) and c:GetSequence()<5
end
function c83965310.spcon(e,c) function c83965310.spcon(e,c)
if c==nil then return true end if c==nil then return true end
local tp=c:GetControler() local tp=c:GetControler()
local rg=Duel.GetReleaseGroup(tp) local rg=Duel.GetReleaseGroup(tp)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) return rg:CheckSubGroup(aux.mzctcheckrel,3,3,tp)
local ct=-ft+1
return ft>-3 and rg:GetCount()>2 and (ft>0 or rg:IsExists(c83965310.mzfilter,ct,nil,tp))
end end
function c83965310.spop(e,tp,eg,ep,ev,re,r,rp,c) function c83965310.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
local rg=Duel.GetReleaseGroup(tp) local rg=Duel.GetReleaseGroup(tp)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
local g=nil
if ft>0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
g=rg:Select(tp,3,3,nil)
elseif ft>-2 then
local ct=-ft+1
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
g=rg:FilterSelect(tp,c83965310.mzfilter,ct,ct,nil,tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
local g2=rg:Select(tp,3-ct,3-ct,g) local sg=rg:SelectSubGroup(tp,aux.mzctcheckrel,true,3,3,tp)
g:Merge(g2) if sg then
else sg:KeepAlive()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) e:SetLabelObject(sg)
g=rg:FilterSelect(tp,c83965310.mzfilter,3,3,nil,tp) return true
end else return false end
end
function c83965310.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g=e:GetLabelObject()
Duel.Release(g,REASON_COST) Duel.Release(g,REASON_COST)
g:DeleteGroup()
end end
function c83965310.cfilter(c) function c83965310.cfilter(c)
return c:GetFlagEffect(83965310)>0 return c:GetFlagEffect(83965310)>0
......
...@@ -14,6 +14,7 @@ function c88301393.initial_effect(c) ...@@ -14,6 +14,7 @@ function c88301393.initial_effect(c)
e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e2:SetRange(LOCATION_HAND+LOCATION_GRAVE) e2:SetRange(LOCATION_HAND+LOCATION_GRAVE)
e2:SetCondition(c88301393.spcon) e2:SetCondition(c88301393.spcon)
e2:SetTarget(c88301393.sptg)
e2:SetOperation(c88301393.spop) e2:SetOperation(c88301393.spop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
--chain attack --chain attack
...@@ -53,42 +54,27 @@ function c88301393.spcon(e,c) ...@@ -53,42 +54,27 @@ function c88301393.spcon(e,c)
local tp=c:GetControler() local tp=c:GetControler()
local sum=Duel.GetMatchingGroup(c88301393.sumfilter,tp,LOCATION_MZONE,0,nil):GetSum(c88301393.lv_or_rk) local sum=Duel.GetMatchingGroup(c88301393.sumfilter,tp,LOCATION_MZONE,0,nil):GetSum(c88301393.lv_or_rk)
if sum>8 then return false end if sum>8 then return false end
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local loc=LOCATION_GRAVE+LOCATION_HAND
if ft<-1 then return false end if c:IsHasEffect(34822850) then loc=loc+LOCATION_MZONE end
if c:IsHasEffect(34822850) then local g=Duel.GetMatchingGroup(c88301393.spfilter,tp,loc,0,c)
if ft>0 then return g:CheckSubGroup(aux.mzctcheck,2,2,tp)
return Duel.IsExistingMatchingCard(c88301393.spfilter,tp,LOCATION_MZONE+LOCATION_GRAVE+LOCATION_HAND,0,2,c)
else
local ct=-ft+1
return Duel.IsExistingMatchingCard(c88301393.spfilter,tp,LOCATION_MZONE,0,ct,nil)
and Duel.IsExistingMatchingCard(c88301393.spfilter,tp,LOCATION_MZONE+LOCATION_GRAVE+LOCATION_HAND,0,2,c)
end
else
return ft>0 and Duel.IsExistingMatchingCard(c88301393.spfilter,tp,LOCATION_GRAVE+LOCATION_HAND,0,2,c)
end
end end
function c88301393.spop(e,tp,eg,ep,ev,re,r,rp,c) function c88301393.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local loc=LOCATION_GRAVE+LOCATION_HAND
local g=nil if c:IsHasEffect(34822850) then loc=loc+LOCATION_MZONE end
local g=Duel.GetMatchingGroup(c88301393.spfilter,tp,loc,0,c)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
if c:IsHasEffect(34822850) then local sg=g:SelectSubGroup(tp,aux.mzctcheck,true,2,2,tp)
if ft>0 then if sg then
g=Duel.SelectMatchingCard(tp,c88301393.spfilter,tp,LOCATION_MZONE+LOCATION_GRAVE+LOCATION_HAND,0,2,2,c) sg:KeepAlive()
else e:SetLabelObject(sg)
local sg=Duel.GetMatchingGroup(c88301393.spfilter,tp,LOCATION_MZONE+LOCATION_GRAVE+LOCATION_HAND,0,c) return true
local ct=-ft+1 else return false end
g=sg:FilterSelect(tp,Card.IsLocation,ct,ct,nil,LOCATION_MZONE) end
if ct<2 then function c88301393.spop(e,tp,eg,ep,ev,re,r,rp,c)
sg:Sub(g) local g=e:GetLabelObject()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
local g2=sg:Select(tp,1,1,nil)
g:Merge(g2)
end
end
else
g=Duel.SelectMatchingCard(tp,c88301393.spfilter,tp,LOCATION_GRAVE+LOCATION_HAND,0,2,2,c)
end
Duel.Remove(g,POS_FACEUP,REASON_COST) Duel.Remove(g,POS_FACEUP,REASON_COST)
g:DeleteGroup()
end end
function c88301393.atcon(e,tp,eg,ep,ev,re,r,rp) function c88301393.atcon(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
......
...@@ -15,6 +15,7 @@ function c88619463.initial_effect(c) ...@@ -15,6 +15,7 @@ function c88619463.initial_effect(c)
e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e2:SetRange(LOCATION_HAND) e2:SetRange(LOCATION_HAND)
e2:SetCondition(c88619463.spcon) e2:SetCondition(c88619463.spcon)
e2:SetTarget(c88619463.sptg)
e2:SetOperation(c88619463.spop) e2:SetOperation(c88619463.spop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
--negate --negate
...@@ -33,35 +34,26 @@ end ...@@ -33,35 +34,26 @@ end
function c88619463.rfilter(c,tp) function c88619463.rfilter(c,tp)
return c:IsRace(RACE_SPELLCASTER) and c:IsLevelAbove(6) and (c:IsControler(tp) or c:IsFaceup()) return c:IsRace(RACE_SPELLCASTER) and c:IsLevelAbove(6) and (c:IsControler(tp) or c:IsFaceup())
end end
function c88619463.mzfilter(c,tp)
return c:IsControler(tp) and c:GetSequence()<5
end
function c88619463.spcon(e,c) function c88619463.spcon(e,c)
if c==nil then return true end if c==nil then return true end
local tp=c:GetControler() local tp=c:GetControler()
local rg=Duel.GetReleaseGroup(tp):Filter(c88619463.rfilter,nil,tp) local rg=Duel.GetReleaseGroup(tp):Filter(c88619463.rfilter,nil,tp)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) return rg:CheckSubGroup(aux.mzctcheckrel,2,2,tp)
local ct=-ft+1
return ft>-2 and rg:GetCount()>1 and (ft>0 or rg:IsExists(c88619463.mzfilter,ct,nil,tp))
end end
function c88619463.spop(e,tp,eg,ep,ev,re,r,rp,c) function c88619463.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
local rg=Duel.GetReleaseGroup(tp):Filter(c88619463.rfilter,nil,tp) local rg=Duel.GetReleaseGroup(tp):Filter(c88619463.rfilter,nil,tp)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
local g=nil
if ft>0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
g=rg:Select(tp,2,2,nil)
elseif ft==0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
g=rg:FilterSelect(tp,c88619463.mzfilter,1,1,nil,tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
local g2=rg:Select(tp,1,1,g:GetFirst()) local sg=rg:SelectSubGroup(tp,aux.mzctcheckrel,true,2,2,tp)
g:Merge(g2) if sg then
else sg:KeepAlive()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) e:SetLabelObject(sg)
g=rg:FilterSelect(tp,c88619463.mzfilter,2,2,nil,tp) return true
end else return false end
end
function c88619463.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g=e:GetLabelObject()
Duel.Release(g,REASON_COST) Duel.Release(g,REASON_COST)
g:DeleteGroup()
end end
function c88619463.discon(e,tp,eg,ep,ev,re,r,rp) function c88619463.discon(e,tp,eg,ep,ev,re,r,rp)
return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED) return not e:GetHandler():IsStatus(STATUS_BATTLE_DESTROYED)
......
...@@ -8,6 +8,7 @@ function c91588074.initial_effect(c) ...@@ -8,6 +8,7 @@ function c91588074.initial_effect(c)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_HAND) e1:SetRange(LOCATION_HAND)
e1:SetCondition(c91588074.spcon) e1:SetCondition(c91588074.spcon)
e1:SetTarget(c91588074.sptg)
e1:SetOperation(c91588074.spop) e1:SetOperation(c91588074.spop)
c:RegisterEffect(e1) c:RegisterEffect(e1)
local e2=Effect.CreateEffect(c) local e2=Effect.CreateEffect(c)
...@@ -34,22 +35,33 @@ end ...@@ -34,22 +35,33 @@ end
function c91588074.spcon(e,c) function c91588074.spcon(e,c)
if c==nil then return true end if c==nil then return true end
local tp=c:GetControler() local tp=c:GetControler()
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local g=Duel.GetMatchingGroup(Card.IsAbleToDeckOrExtraAsCost,tp,LOCATION_HAND+LOCATION_ONFIELD,0,c)
local ct=-ft+1 aux.GCheckAdditional=aux.dncheck
local g=Duel.GetMatchingGroup(Card.IsAbleToDeckOrExtraAsCost,c:GetControler(),LOCATION_HAND+LOCATION_ONFIELD,0,c) local res=g:CheckSubGroup(aux.mzctcheck,10,10,tp)
return g:GetClassCount(Card.GetCode)>=10 and (ft>0 or g:IsExists(Card.IsLocation,ct,nil,LOCATION_MZONE)) aux.GCheckAdditional=nil
return res
end end
function c91588074.spop(e,tp,eg,ep,ev,re,r,rp,c) function c91588074.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
local g=Duel.GetMatchingGroup(Card.IsAbleToDeckOrExtraAsCost,tp,LOCATION_HAND+LOCATION_ONFIELD,0,c) local g=Duel.GetMatchingGroup(Card.IsAbleToDeckOrExtraAsCost,tp,LOCATION_HAND+LOCATION_ONFIELD,0,c)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK)
aux.GCheckAdditional=aux.dncheck aux.GCheckAdditional=aux.dncheck
local rg=g:SelectSubGroup(tp,aux.mzctcheck,false,10,10,tp) local sg=g:SelectSubGroup(tp,aux.mzctcheck,true,10,10,tp)
aux.GCheckAdditional=nil aux.GCheckAdditional=nil
local cg=rg:Filter(Card.IsFacedown,nil) if sg then
sg:KeepAlive()
e:SetLabelObject(sg)
return true
else return false end
end
function c91588074.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g=e:GetLabelObject()
local cg=g:Filter(Card.IsFacedown,nil)
if cg:GetCount()>0 then if cg:GetCount()>0 then
Duel.ConfirmCards(1-tp,cg) Duel.ConfirmCards(1-tp,cg)
end end
Duel.SendtoDeck(rg,nil,SEQ_DECKSHUFFLE,REASON_COST) Duel.SendtoDeck(g,nil,SEQ_DECKSHUFFLE,REASON_COST)
g:DeleteGroup()
end end
function c91588074.tdfilter(c) function c91588074.tdfilter(c)
return (c:IsLocation(0x1e) or (c:IsFaceup() and c:IsType(TYPE_PENDULUM))) and c:IsAbleToDeck() return (c:IsLocation(0x1e) or (c:IsFaceup() and c:IsType(TYPE_PENDULUM))) and c:IsAbleToDeck()
......
...@@ -7,6 +7,7 @@ function c92652813.initial_effect(c) ...@@ -7,6 +7,7 @@ function c92652813.initial_effect(c)
e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) e1:SetProperty(EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_HAND+LOCATION_DECK) e1:SetRange(LOCATION_HAND+LOCATION_DECK)
e1:SetCondition(c92652813.spcon) e1:SetCondition(c92652813.spcon)
e1:SetTarget(c92652813.sptg)
e1:SetOperation(c92652813.spop) e1:SetOperation(c92652813.spop)
e1:SetValue(SUMMON_VALUE_SELF) e1:SetValue(SUMMON_VALUE_SELF)
c:RegisterEffect(e1) c:RegisterEffect(e1)
...@@ -34,26 +35,35 @@ function c92652813.initial_effect(c) ...@@ -34,26 +35,35 @@ function c92652813.initial_effect(c)
e3:SetOperation(c92652813.thop) e3:SetOperation(c92652813.thop)
c:RegisterEffect(e3) c:RegisterEffect(e3)
end end
function c92652813.spfilter1(c,tp) function c92652813.spfilter(c)
return c:IsFaceup() and c:IsRace(RACE_SPELLCASTER) and c:IsAbleToGraveAsCost() return c:IsFaceup() and c:IsAbleToGraveAsCost()
and Duel.IsExistingMatchingCard(c92652813.spfilter2,tp,LOCATION_MZONE,0,1,c)
end end
function c92652813.spfilter2(c) function c92652813.spfilter2(c)
return c:IsFaceup() and c:IsAttribute(ATTRIBUTE_FIRE) and c:IsAbleToGraveAsCost() and c:IsLevelBelow(4) return c:IsAttribute(ATTRIBUTE_FIRE) and c:IsLevelBelow(4)
end
function c92652813.fselect(g,tp)
return aux.mzctcheck(g,tp) and aux.gffcheck(g,Card.IsRace,RACE_SPELLCASTER,c92652813.spfilter2,nil)
end end
function c92652813.spcon(e,c) function c92652813.spcon(e,c)
if c==nil then return true end if c==nil then return true end
local tp=c:GetControler() local tp=c:GetControler()
return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 local g=Duel.GetMatchingGroup(c92652813.spfilter,tp,LOCATION_MZONE,0,nil)
and Duel.IsExistingMatchingCard(c92652813.spfilter1,tp,LOCATION_MZONE,0,1,nil,tp) return g:CheckSubGroup(c92652813.fselect,2,2,tp)
end end
function c92652813.spop(e,tp,eg,ep,ev,re,r,rp,c) function c92652813.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) local g=Duel.GetMatchingGroup(c92652813.spfilter,tp,LOCATION_MZONE,0,nil)
local g1=Duel.SelectMatchingCard(tp,c92652813.spfilter1,tp,LOCATION_MZONE,0,1,1,nil,tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local g2=Duel.SelectMatchingCard(tp,c92652813.spfilter2,tp,LOCATION_MZONE,0,1,1,g1:GetFirst()) local sg=g:SelectSubGroup(tp,c92652813.fselect,true,2,2,tp)
g1:Merge(g2) if sg then
Duel.SendtoGrave(g1,REASON_COST) sg:KeepAlive()
e:SetLabelObject(sg)
return true
else return false end
end
function c92652813.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g=e:GetLabelObject()
Duel.SendtoGrave(g,REASON_COST)
g:DeleteGroup()
end end
function c92652813.condition(e,tp,eg,ep,ev,re,r,rp) function c92652813.condition(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+SUMMON_VALUE_SELF return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+SUMMON_VALUE_SELF
......
...@@ -7,6 +7,7 @@ function c93717133.initial_effect(c) ...@@ -7,6 +7,7 @@ function c93717133.initial_effect(c)
e1:SetProperty(EFFECT_FLAG_UNCOPYABLE) e1:SetProperty(EFFECT_FLAG_UNCOPYABLE)
e1:SetRange(LOCATION_HAND) e1:SetRange(LOCATION_HAND)
e1:SetCondition(c93717133.spcon) e1:SetCondition(c93717133.spcon)
e1:SetTarget(c93717133.sptg)
e1:SetOperation(c93717133.spop) e1:SetOperation(c93717133.spop)
c:RegisterEffect(e1) c:RegisterEffect(e1)
--remove --remove
...@@ -26,35 +27,26 @@ end ...@@ -26,35 +27,26 @@ end
function c93717133.rfilter(c,tp) function c93717133.rfilter(c,tp)
return c:IsAttackAbove(2000) and (c:IsControler(tp) or c:IsFaceup()) return c:IsAttackAbove(2000) and (c:IsControler(tp) or c:IsFaceup())
end end
function c93717133.mzfilter(c,tp)
return c:IsControler(tp) and c:GetSequence()<5
end
function c93717133.spcon(e,c) function c93717133.spcon(e,c)
if c==nil then return true end if c==nil then return true end
local tp=c:GetControler() local tp=c:GetControler()
local rg=Duel.GetReleaseGroup(tp):Filter(c93717133.rfilter,nil,tp) local rg=Duel.GetReleaseGroup(tp):Filter(c93717133.rfilter,nil,tp)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) return rg:CheckSubGroup(aux.mzctcheckrel,2,2,tp)
local ct=-ft+1
return ft>-2 and rg:GetCount()>1 and (ft>0 or rg:IsExists(c93717133.mzfilter,ct,nil,tp))
end end
function c93717133.spop(e,tp,eg,ep,ev,re,r,rp,c) function c93717133.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
local rg=Duel.GetReleaseGroup(tp):Filter(c93717133.rfilter,nil,tp) local rg=Duel.GetReleaseGroup(tp):Filter(c93717133.rfilter,nil,tp)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
local g=nil
if ft>0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
g=rg:Select(tp,2,2,nil)
elseif ft==0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
g=rg:FilterSelect(tp,c93717133.mzfilter,1,1,nil,tp)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
local g2=rg:Select(tp,1,1,g:GetFirst())
g:Merge(g2)
else
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
g=rg:FilterSelect(tp,c93717133.mzfilter,2,2,nil,tp) local sg=rg:SelectSubGroup(tp,aux.mzctcheckrel,true,2,2,tp)
end if sg then
sg:KeepAlive()
e:SetLabelObject(sg)
return true
else return false end
end
function c93717133.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g=e:GetLabelObject()
Duel.Release(g,REASON_COST) Duel.Release(g,REASON_COST)
g:DeleteGroup()
c:RegisterFlagEffect(0,RESET_EVENT+0x4fc0000,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(93717133,1)) c:RegisterFlagEffect(0,RESET_EVENT+0x4fc0000,EFFECT_FLAG_CLIENT_HINT,1,0,aux.Stringid(93717133,1))
end end
function c93717133.rmcon(e,tp,eg,ep,ev,re,r,rp) function c93717133.rmcon(e,tp,eg,ep,ev,re,r,rp)
......
...@@ -14,6 +14,7 @@ function c96055137.initial_effect(c) ...@@ -14,6 +14,7 @@ function c96055137.initial_effect(c)
e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE) e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e2:SetRange(LOCATION_HAND+LOCATION_GRAVE) e2:SetRange(LOCATION_HAND+LOCATION_GRAVE)
e2:SetCondition(c96055137.spcon) e2:SetCondition(c96055137.spcon)
e2:SetTarget(c96055137.sptg)
e2:SetOperation(c96055137.spop) e2:SetOperation(c96055137.spop)
c:RegisterEffect(e2) c:RegisterEffect(e2)
--remove --remove
...@@ -52,42 +53,27 @@ function c96055137.spcon(e,c) ...@@ -52,42 +53,27 @@ function c96055137.spcon(e,c)
local tp=c:GetControler() local tp=c:GetControler()
local sum=Duel.GetMatchingGroup(c96055137.sumfilter,tp,LOCATION_MZONE,0,nil):GetSum(c96055137.lv_or_rk) local sum=Duel.GetMatchingGroup(c96055137.sumfilter,tp,LOCATION_MZONE,0,nil):GetSum(c96055137.lv_or_rk)
if sum>8 then return false end if sum>8 then return false end
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local loc=LOCATION_GRAVE+LOCATION_HAND
if ft<-1 then return false end if c:IsHasEffect(34822850) then loc=loc+LOCATION_MZONE end
if c:IsHasEffect(34822850) then local g=Duel.GetMatchingGroup(c96055137.spfilter,tp,loc,0,c)
if ft>0 then return g:CheckSubGroup(aux.mzctcheck,2,2,tp)
return Duel.IsExistingMatchingCard(c96055137.spfilter,tp,LOCATION_MZONE+LOCATION_GRAVE+LOCATION_HAND,0,2,c)
else
local ct=-ft+1
return Duel.IsExistingMatchingCard(c96055137.spfilter,tp,LOCATION_MZONE,0,ct,nil)
and Duel.IsExistingMatchingCard(c96055137.spfilter,tp,LOCATION_MZONE+LOCATION_GRAVE+LOCATION_HAND,0,2,c)
end
else
return ft>0 and Duel.IsExistingMatchingCard(c96055137.spfilter,tp,LOCATION_GRAVE+LOCATION_HAND,0,2,c)
end
end end
function c96055137.spop(e,tp,eg,ep,ev,re,r,rp,c) function c96055137.sptg(e,tp,eg,ep,ev,re,r,rp,chk,c)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local loc=LOCATION_GRAVE+LOCATION_HAND
local g=nil if c:IsHasEffect(34822850) then loc=loc+LOCATION_MZONE end
local g=Duel.GetMatchingGroup(c96055137.spfilter,tp,loc,0,c)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
if c:IsHasEffect(34822850) then local sg=g:SelectSubGroup(tp,aux.mzctcheck,true,2,2,tp)
if ft>0 then if sg then
g=Duel.SelectMatchingCard(tp,c96055137.spfilter,tp,LOCATION_MZONE+LOCATION_GRAVE+LOCATION_HAND,0,2,2,c) sg:KeepAlive()
else e:SetLabelObject(sg)
local sg=Duel.GetMatchingGroup(c96055137.spfilter,tp,LOCATION_MZONE+LOCATION_GRAVE+LOCATION_HAND,0,c) return true
local ct=-ft+1 else return false end
g=sg:FilterSelect(tp,Card.IsLocation,ct,ct,nil,LOCATION_MZONE) end
if ct<2 then function c96055137.spop(e,tp,eg,ep,ev,re,r,rp,c)
sg:Sub(g) local g=e:GetLabelObject()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
local g2=sg:Select(tp,1,1,nil)
g:Merge(g2)
end
end
else
g=Duel.SelectMatchingCard(tp,c96055137.spfilter,tp,LOCATION_GRAVE+LOCATION_HAND,0,2,2,c)
end
Duel.Remove(g,POS_FACEUP,REASON_COST) Duel.Remove(g,POS_FACEUP,REASON_COST)
g:DeleteGroup()
end end
function c96055137.rmtg1(e,tp,eg,ep,ev,re,r,rp,chk) function c96055137.rmtg1(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,0,LOCATION_EXTRA,1,nil) end if chk==0 then return Duel.IsExistingMatchingCard(Card.IsAbleToRemove,tp,0,LOCATION_EXTRA,1,nil) 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