Commit e9a0148f authored by VanillaSalt's avatar VanillaSalt

fix

parent 2d9657cd
...@@ -39,24 +39,31 @@ function c12678870.initial_effect(c) ...@@ -39,24 +39,31 @@ function c12678870.initial_effect(c)
e4:SetOperation(c12678870.spop) e4:SetOperation(c12678870.spop)
c:RegisterEffect(e4) c:RegisterEffect(e4)
end end
function c12678870.spfilter1(c,tp) function c12678870.matfilter(c)
return c:IsFusionSetCard(0x10b5) and c:IsAbleToRemoveAsCost() and c:IsCanBeFusionMaterial() return (c:IsFusionSetCard(0x10b5) or c:IsFusionSetCard(0x20b5))
and Duel.IsExistingMatchingCard(c12678870.spfilter2,tp,LOCATION_MZONE,0,1,c) and c:IsAbleToRemoveAsCost() and c:IsCanBeFusionMaterial()
end end
function c12678870.spfilter2(c) function c12678870.spfilter1(c,tp,g)
return c:IsFusionSetCard(0x20b5) and c:IsAbleToRemoveAsCost() and c:IsCanBeFusionMaterial() return g:IsExists(c12678870.spfilter2,1,c,tp,c)
end
function c12678870.spfilter2(c,tp,mc)
return (c:IsFusionSetCard(0x10b5) and mc:IsFusionSetCard(0x20b5)
or c:IsFusionSetCard(0x20b5) and mc:IsFusionSetCard(0x10b5))
and Duel.GetLocationCountFromEx(tp,tp,Group.FromCards(c,mc))>0
end end
function c12678870.sprcon(e,c) function c12678870.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()
return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 local g=Duel.GetMatchingGroup(c12678870.matfilter,tp,LOCATION_MZONE,0,nil)
and Duel.IsExistingMatchingCard(c12678870.spfilter1,tp,LOCATION_MZONE,0,1,nil,tp) return g:IsExists(c12678870.spfilter1,1,nil,tp,g)
end end
function c12678870.sprop(e,tp,eg,ep,ev,re,r,rp,c) function c12678870.sprop(e,tp,eg,ep,ev,re,r,rp,c)
local g=Duel.GetMatchingGroup(c12678870.matfilter,tp,LOCATION_MZONE,0,nil)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
local g1=Duel.SelectMatchingCard(tp,c12678870.spfilter1,tp,LOCATION_MZONE,0,1,1,nil,tp) local g1=g:FilterSelect(tp,c12678870.spfilter1,1,1,nil,tp,g)
local mc=g1:GetFirst()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
local g2=Duel.SelectMatchingCard(tp,c12678870.spfilter2,tp,LOCATION_MZONE,0,1,1,g1:GetFirst()) local g2=g:FilterSelect(tp,c12678870.spfilter2,1,1,mc,tp,mc)
g1:Merge(g2) g1:Merge(g2)
c:SetMaterial(g1) c:SetMaterial(g1)
Duel.Remove(g1,POS_FACEUP,REASON_COST) Duel.Remove(g1,POS_FACEUP,REASON_COST)
......
...@@ -51,54 +51,46 @@ end ...@@ -51,54 +51,46 @@ end
function c1561110.splimit(e,se,sp,st) function c1561110.splimit(e,se,sp,st)
return not e:GetHandler():IsLocation(LOCATION_EXTRA) return not e:GetHandler():IsLocation(LOCATION_EXTRA)
end end
function c1561110.rmfilter(c) function c1561110.cfilter(c)
return c:IsAbleToRemoveAsCost() and c:IsCanBeFusionMaterial() return c:IsFusionCode(30012506,77411244,3405259) and c:IsAbleToRemoveAsCost() and c:IsCanBeFusionMaterial()
end end
function c1561110.rmfilter1(c,mg,ft) function c1561110.fcheck(c,sg,g,code,...)
local mg2=mg:Clone() if not c:IsFusionCode(code) then return false end
mg2:RemoveCard(c) if ... then
local ct=ft g:AddCard(c)
if c:IsLocation(LOCATION_MZONE) then ct=ct+1 end local res=sg:IsExists(c1561110.fcheck,1,g,sg,g,...)
return c:IsFusionCode(30012506) and mg2:IsExists(c1561110.rmfilter2,1,nil,mg2,ct) g:RemoveCard(c)
end return res
function c1561110.rmfilter2(c,mg,ft) else return true end
local mg2=mg:Clone() end
mg2:RemoveCard(c) function c1561110.fselect(c,tp,mg,sg,...)
local ct=ft sg:AddCard(c)
if c:IsLocation(LOCATION_MZONE) then ct=ct+1 end local res=false
return c:IsFusionCode(77411244) and mg2:IsExists(c1561110.rmfilter3,1,nil,ct) if sg:GetCount()<3 then
end res=mg:IsExists(c1561110.fselect,1,sg,tp,mg,sg,...)
function c1561110.rmfilter3(c,ft) elseif Duel.GetLocationCountFromEx(tp,tp,sg)>0 then
local ct=ft local g=Group.CreateGroup()
if c:IsLocation(LOCATION_MZONE) then ct=ct+1 end res=sg:IsExists(c1561110.fcheck,1,nil,sg,g,...)
return c:IsFusionCode(3405259) and ct>0 end
sg:RemoveCard(c)
return res
end end
function c1561110.spcon(e,c) function c1561110.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 mg=Duel.GetMatchingGroup(c1561110.cfilter,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,nil)
if ft<-2 then return false end local sg=Group.CreateGroup()
local mg=Duel.GetMatchingGroup(c1561110.rmfilter,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,nil) return mg:IsExists(c1561110.fselect,1,nil,tp,mg,sg,30012506,77411244,3405259)
return mg:IsExists(c1561110.rmfilter1,1,nil,mg,ft)
end end
function c1561110.spop(e,tp,eg,ep,ev,re,r,rp,c) function c1561110.spop(e,tp,eg,ep,ev,re,r,rp,c)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local mg=Duel.GetMatchingGroup(c1561110.cfilter,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,nil)
local mg=Duel.GetMatchingGroup(c1561110.rmfilter,tp,LOCATION_ONFIELD+LOCATION_GRAVE,0,nil) local sg=Group.CreateGroup()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) while sg:GetCount()<3 do
local g1=mg:FilterSelect(tp,c1561110.rmfilter1,1,1,nil,mg,ft) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
local tc1=g1:GetFirst() local g=mg:FilterSelect(tp,c1561110.fselect,1,1,sg,tp,mg,sg,30012506,77411244,3405259)
mg:RemoveCard(tc1) sg:Merge(g)
if tc1:IsLocation(LOCATION_MZONE) then ft=ft+1 end end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) Duel.Remove(sg,POS_FACEUP,REASON_COST)
local g2=mg:FilterSelect(tp,c1561110.rmfilter2,1,1,nil,mg,ft)
local tc2=g2:GetFirst()
if tc2:IsLocation(LOCATION_MZONE) then ft=ft+1 end
mg:RemoveCard(tc2)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
local g3=mg:FilterSelect(tp,c1561110.rmfilter3,1,1,nil,ft)
g1:Merge(g2)
g1:Merge(g3)
Duel.Remove(g1,POS_FACEUP,REASON_COST)
end end
function c1561110.rmcost(e,tp,eg,ep,ev,re,r,rp,chk) function c1561110.rmcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,e:GetHandler()) end if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,e:GetHandler()) end
......
...@@ -52,60 +52,50 @@ c17032740.material_setcode=0x8 ...@@ -52,60 +52,50 @@ c17032740.material_setcode=0x8
function c17032740.splimit(e,se,sp,st) function c17032740.splimit(e,se,sp,st)
return not e:GetHandler():IsLocation(LOCATION_EXTRA) return not e:GetHandler():IsLocation(LOCATION_EXTRA)
end end
function c17032740.spfilter(c,code1,code2,code3) function c17032740.cfilter(c)
return c:IsAbleToDeckOrExtraAsCost() and (c:IsFusionCode(code1) or c:IsFusionCode(code2) or c:IsFusionCode(code3)) return c:IsFusionCode(89943723,43237273,17732278) and c:IsAbleToDeckOrExtraAsCost()
end end
function c17032740.spfilter1(c,mg,ft) function c17032740.fcheck(c,sg,g,code,...)
local mg2=mg:Clone() if not c:IsFusionCode(code) then return false end
mg2:RemoveCard(c) if ... then
if c:IsLocation(LOCATION_MZONE) then ft=ft+1 end g:AddCard(c)
return ft>=-1 and c:IsFusionCode(89943723) and c:IsAbleToDeckOrExtraAsCost() and c:IsCanBeFusionMaterial() local res=sg:IsExists(c17032740.fcheck,1,g,sg,g,...)
and mg2:IsExists(c17032740.spfilter2,1,nil,mg2,ft) g:RemoveCard(c)
return res
else return true end
end end
function c17032740.spfilter2(c,mg,ft) function c17032740.fselect(c,tp,mg,sg,...)
local mg2=mg:Clone() sg:AddCard(c)
mg2:RemoveCard(c) local res=false
if c:IsLocation(LOCATION_MZONE) then ft=ft+1 end if sg:GetCount()<3 then
return ft>=0 and c:IsFusionCode(43237273) and c:IsAbleToDeckOrExtraAsCost() and c:IsCanBeFusionMaterial() res=mg:IsExists(c17032740.fselect,1,sg,tp,mg,sg,...)
and mg2:IsExists(c17032740.spfilter3,1,nil,ft) elseif Duel.GetLocationCountFromEx(tp,tp,sg)>0 then
end local g=Group.CreateGroup()
function c17032740.spfilter3(c,ft) res=sg:IsExists(c17032740.fcheck,1,nil,sg,g,...)
if c:IsLocation(LOCATION_MZONE) then ft=ft+1 end end
return ft>=1 and c:IsFusionCode(17732278) and c:IsAbleToDeckOrExtraAsCost() and c:IsCanBeFusionMaterial() sg:RemoveCard(c)
return res
end end
function c17032740.spcon(e,c) function c17032740.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 mg=Duel.GetMatchingGroup(c17032740.cfilter,tp,LOCATION_ONFIELD,0,nil)
if ft<-2 then return false end local sg=Group.CreateGroup()
local mg=Duel.GetMatchingGroup(c17032740.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723,43237273,17732278) return mg:IsExists(c17032740.fselect,1,nil,tp,mg,sg,89943723,43237273,17732278)
return mg:IsExists(c17032740.spfilter1,1,nil,mg,ft)
end end
function c17032740.spop(e,tp,eg,ep,ev,re,r,rp,c) function c17032740.spop(e,tp,eg,ep,ev,re,r,rp,c)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local mg=Duel.GetMatchingGroup(c17032740.cfilter,tp,LOCATION_ONFIELD,0,nil)
local mg=Duel.GetMatchingGroup(c17032740.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723,43237273,17732278) local sg=Group.CreateGroup()
local g=Group.CreateGroup() while sg:GetCount()<3 do
local tc=nil
for i=1,3 do
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK)
if i==1 then local g=mg:FilterSelect(tp,c17032740.fselect,1,1,sg,tp,mg,sg,89943723,43237273,17732278)
tc=mg:FilterSelect(tp,c17032740.spfilter1,1,1,nil,mg,ft):GetFirst() sg:Merge(g)
end
if i==2 then
tc=mg:FilterSelect(tp,c17032740.spfilter2,1,1,nil,mg,ft):GetFirst()
end
if i==3 then
tc=mg:FilterSelect(tp,c17032740.spfilter3,1,1,nil,ft):GetFirst()
end
g:AddCard(tc)
mg:RemoveCard(tc)
if tc:IsLocation(LOCATION_MZONE) then ft=ft+1 end
end end
local cg=g:Filter(Card.IsFacedown,nil) local cg=sg: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(g,nil,2,REASON_COST) Duel.SendtoDeck(sg,nil,2,REASON_COST)
end end
function c17032740.retcon1(e,tp,eg,ep,ev,re,r,rp) function c17032740.retcon1(e,tp,eg,ep,ev,re,r,rp)
return not e:GetHandler():IsHasEffect(42015635) return not e:GetHandler():IsHasEffect(42015635)
......
...@@ -52,17 +52,28 @@ end ...@@ -52,17 +52,28 @@ end
function c2129638.spfilter(c,fc) function c2129638.spfilter(c,fc)
return c:IsFusionCode(89631139) and c:IsCanBeFusionMaterial(fc) and c:IsAbleToGraveAsCost() return c:IsFusionCode(89631139) and c:IsCanBeFusionMaterial(fc) and c:IsAbleToGraveAsCost()
end end
function c2129638.spfilter1(c,tp,g)
return g:IsExists(c2129638.spfilter2,1,c,tp,c)
end
function c2129638.spfilter2(c,tp,mc)
return Duel.GetLocationCountFromEx(tp,tp,Group.FromCards(c,mc))>0
end
function c2129638.spcon(e,c) function c2129638.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(c2129638.spfilter,tp,LOCATION_MZONE,0,nil,c)
and Duel.IsExistingMatchingCard(c2129638.spfilter,tp,LOCATION_MZONE,0,2,nil,c) return g:IsExists(c2129638.spfilter1,1,nil,tp,g)
end end
function c2129638.spop(e,tp,eg,ep,ev,re,r,rp,c) function c2129638.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g=Duel.GetMatchingGroup(c2129638.spfilter,tp,LOCATION_MZONE,0,nil,c)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local g1=g:FilterSelect(tp,c2129638.spfilter1,1,1,nil,tp,g)
local mc=g1:GetFirst()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local g=Duel.SelectMatchingCard(tp,c2129638.spfilter,tp,LOCATION_MZONE,0,2,2,nil,c) local g2=g:FilterSelect(tp,c2129638.spfilter2,1,1,mc,tp,mc)
c:SetMaterial(g) g1:Merge(g2)
Duel.SendtoGrave(g,REASON_COST) c:SetMaterial(g1)
Duel.SendtoGrave(g1,REASON_COST)
end end
function c2129638.rmcon(e,tp,eg,ep,ev,re,r,rp) function c2129638.rmcon(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler() local c=e:GetHandler()
......
...@@ -48,22 +48,29 @@ end ...@@ -48,22 +48,29 @@ end
function c22638495.splimit(e,se,sp,st) function c22638495.splimit(e,se,sp,st)
return e:GetHandler():GetLocation()~=LOCATION_EXTRA return e:GetHandler():GetLocation()~=LOCATION_EXTRA
end end
function c22638495.spfilter1(c,tp,fc) function c22638495.rfilter(c,fc)
return c:IsFusionSetCard(0xc7) and c:IsType(TYPE_PENDULUM) and c:IsCanBeFusionMaterial(fc)
and Duel.CheckReleaseGroup(tp,c22638495.spfilter2,1,c,fc)
end
function c22638495.spfilter2(c,fc)
return c:IsType(TYPE_PENDULUM) and c:IsCanBeFusionMaterial(fc) return c:IsType(TYPE_PENDULUM) and c:IsCanBeFusionMaterial(fc)
end end
function c22638495.spfilter1(c,tp,g)
return g:IsExists(c22638495.spfilter2,1,c,tp,c)
end
function c22638495.spfilter2(c,tp,mc)
return (c:IsFusionSetCard(0xc7) or mc:IsFusionSetCard(0xc7))
and Duel.GetLocationCountFromEx(tp,tp,Group.FromCards(c,mc))>0
end
function c22638495.spcon(e,c) function c22638495.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 rg=Duel.GetReleaseGroup(tp):Filter(c22638495.rfilter,nil,c)
and Duel.CheckReleaseGroup(tp,c22638495.spfilter1,1,nil,tp,c) return rg:IsExists(c22638495.spfilter1,1,nil,tp,rg)
end end
function c22638495.spop(e,tp,eg,ep,ev,re,r,rp,c) function c22638495.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g1=Duel.SelectReleaseGroup(tp,c22638495.spfilter1,1,1,nil,tp,c) local rg=Duel.GetReleaseGroup(tp):Filter(c22638495.rfilter,nil,c)
local g2=Duel.SelectReleaseGroup(tp,c22638495.spfilter2,1,1,g1:GetFirst(),c) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
local g1=rg:FilterSelect(tp,c22638495.spfilter1,1,1,nil,tp,rg)
local mc=g1:GetFirst()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
local g2=rg:FilterSelect(tp,c22638495.spfilter2,1,1,mc,tp,mc)
g1:Merge(g2) g1:Merge(g2)
c:SetMaterial(g1) c:SetMaterial(g1)
Duel.Release(g1,REASON_COST+REASON_FUSION+REASON_MATERIAL) Duel.Release(g1,REASON_COST+REASON_FUSION+REASON_MATERIAL)
......
...@@ -37,31 +37,47 @@ end ...@@ -37,31 +37,47 @@ end
function c27346636.splimit(e,se,sp,st) function c27346636.splimit(e,se,sp,st)
return e:GetHandler():GetLocation()~=LOCATION_EXTRA return e:GetHandler():GetLocation()~=LOCATION_EXTRA
end end
function c27346636.spfilter1(c,tp) function c27346636.cfilter(c)
return c:IsFusionCode(78868776) and c:IsAbleToDeckOrExtraAsCost() and c:IsCanBeFusionMaterial() return (c:IsFusionCode(78868776) or c:IsFusionSetCard(0x19) and c:IsType(TYPE_MONSTER))
and Duel.IsExistingMatchingCard(c27346636.spfilter2,tp,LOCATION_MZONE,0,2,c) and c:IsCanBeFusionMaterial() and c:IsAbleToDeckOrExtraAsCost()
end end
function c27346636.spfilter2(c) function c27346636.fcheck(c,sg)
return c:IsFusionSetCard(0x19) and c:IsCanBeFusionMaterial() and c:IsAbleToDeckOrExtraAsCost() return c:IsFusionCode(78868776) and sg:IsExists(c27346636.fcheck2,2,c)
end
function c27346636.fcheck2(c)
return c:IsFusionSetCard(0x19) and c:IsType(TYPE_MONSTER)
end
function c27346636.fselect(c,tp,mg,sg)
sg:AddCard(c)
local res=false
if sg:GetCount()<3 then
res=mg:IsExists(c27346636.fselect,1,sg,tp,mg,sg)
elseif Duel.GetLocationCountFromEx(tp,tp,sg)>0 then
res=sg:IsExists(c27346636.fcheck,1,nil,sg)
end
sg:RemoveCard(c)
return res
end end
function c27346636.sprcon(e,c) function c27346636.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()
return Duel.GetLocationCount(tp,LOCATION_MZONE)>-3 local mg=Duel.GetMatchingGroup(c27346636.cfilter,tp,LOCATION_ONFIELD,0,nil)
and Duel.IsExistingMatchingCard(c27346636.spfilter1,tp,LOCATION_ONFIELD,0,1,nil,tp) local sg=Group.CreateGroup()
return mg:IsExists(c27346636.fselect,1,nil,tp,mg,sg)
end end
function c27346636.sprop(e,tp,eg,ep,ev,re,r,rp,c) function c27346636.sprop(e,tp,eg,ep,ev,re,r,rp,c)
Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(27346636,2)) local mg=Duel.GetMatchingGroup(c27346636.cfilter,tp,LOCATION_ONFIELD,0,nil)
local g1=Duel.SelectMatchingCard(tp,c27346636.spfilter1,tp,LOCATION_ONFIELD,0,1,1,nil,tp) local sg=Group.CreateGroup()
Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(27346636,3)) while sg:GetCount()<3 do
local g2=Duel.SelectMatchingCard(tp,c27346636.spfilter2,tp,LOCATION_MZONE,0,2,2,g1:GetFirst()) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK)
g1:Merge(g2) local g=mg:FilterSelect(tp,c27346636.fselect,1,1,sg,tp,mg,sg)
local tc=g1:GetFirst() sg:Merge(g)
while tc do end
if not tc:IsFaceup() then Duel.ConfirmCards(1-tp,tc) end local cg=sg:Filter(Card.IsFacedown,nil)
tc=g1:GetNext() if cg:GetCount()>0 then
Duel.ConfirmCards(1-tp,cg)
end end
Duel.SendtoDeck(g1,nil,2,REASON_COST) Duel.SendtoDeck(sg,nil,2,REASON_COST)
end end
function c27346636.discon(e,tp,eg,ep,ev,re,r,rp) function c27346636.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)
......
...@@ -54,20 +54,37 @@ end ...@@ -54,20 +54,37 @@ end
function c29357956.spfilter(c) function c29357956.spfilter(c)
return c:IsFusionSetCard(0x19) and c:IsCanBeFusionMaterial() and c:IsAbleToDeckOrExtraAsCost() return c:IsFusionSetCard(0x19) and c:IsCanBeFusionMaterial() and c:IsAbleToDeckOrExtraAsCost()
end end
function c29357956.sprcon(e,c) function c22638495.fselect(c,tp,mg,sg)
sg:AddCard(c)
local res=false
if sg:GetCount()<3 then
res=mg:IsExists(c22638495.fselect,1,sg,tp,mg,sg)
else
res=Duel.GetLocationCountFromEx(tp,tp,sg)>0
end
sg:RemoveCard(c)
return res
end
function c22638495.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()
return Duel.GetLocationCount(tp,LOCATION_MZONE)>-3 local mg=Duel.GetMatchingGroup(c22638495.spfilter,tp,LOCATION_MZONE,0,nil)
and Duel.IsExistingMatchingCard(c29357956.spfilter,tp,LOCATION_MZONE,0,3,nil) local sg=Group.CreateGroup()
return mg:IsExists(c22638495.fselect,1,nil,tp,mg,sg)
end end
function c29357956.sprop(e,tp,eg,ep,ev,re,r,rp,c) function c22638495.spop(e,tp,eg,ep,ev,re,r,rp,c)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) local mg=Duel.GetMatchingGroup(c22638495.spfilter,tp,LOCATION_MZONE,0,nil)
local g=Duel.SelectMatchingCard(tp,c29357956.spfilter,tp,LOCATION_MZONE,0,3,3,nil) local sg=Group.CreateGroup()
local cg=g:Filter(Card.IsFacedown,nil) while sg:GetCount()<3 do
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK)
local g=mg:FilterSelect(tp,c22638495.fselect,1,1,sg,tp,mg,sg)
sg:Merge(g)
end
local cg=sg: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(g,nil,2,REASON_COST) Duel.SendtoDeck(sg,nil,2,REASON_COST)
end end
function c29357956.actcon(e) function c29357956.actcon(e)
return Duel.GetAttacker()==e:GetHandler() or Duel.GetAttackTarget()==e:GetHandler() return Duel.GetAttacker()==e:GetHandler() or Duel.GetAttackTarget()==e:GetHandler()
......
...@@ -38,27 +38,46 @@ end ...@@ -38,27 +38,46 @@ end
function c43378048.splimit(e,se,sp,st) function c43378048.splimit(e,se,sp,st)
return e:GetHandler():GetLocation()~=LOCATION_EXTRA return e:GetHandler():GetLocation()~=LOCATION_EXTRA
end end
function c43378048.spfilter(c,code) function c43378048.cfilter(c)
return c:IsFaceup() and c:IsFusionCode(code) and c:IsAbleToRemoveAsCost() return c:IsFaceup() and c:IsFusionCode(6007213,32491822,69890967) and c:IsAbleToRemoveAsCost()
end
function c43378048.fcheck(c,sg,g,code,...)
if not c:IsFusionCode(code) then return false end
if ... then
g:AddCard(c)
local res=sg:IsExists(c43378048.fcheck,1,g,sg,g,...)
g:RemoveCard(c)
return res
else return true end
end
function c43378048.fselect(c,tp,mg,sg,...)
sg:AddCard(c)
local res=false
if sg:GetCount()<3 then
res=mg:IsExists(c43378048.fselect,1,sg,tp,mg,sg,...)
elseif Duel.GetLocationCountFromEx(tp,tp,sg)>0 then
local g=Group.CreateGroup()
res=sg:IsExists(c43378048.fcheck,1,nil,sg,g,...)
end
sg:RemoveCard(c)
return res
end end
function c43378048.spcon(e,c) function c43378048.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 mg=Duel.GetMatchingGroup(c43378048.cfilter,tp,LOCATION_ONFIELD,0,nil)
and Duel.IsExistingMatchingCard(c43378048.spfilter,tp,LOCATION_ONFIELD,0,1,nil,6007213) local sg=Group.CreateGroup()
and Duel.IsExistingMatchingCard(c43378048.spfilter,tp,LOCATION_ONFIELD,0,1,nil,32491822) return mg:IsExists(c43378048.fselect,1,nil,tp,mg,sg,6007213,32491822,69890967)
and Duel.IsExistingMatchingCard(c43378048.spfilter,tp,LOCATION_ONFIELD,0,1,nil,69890967)
end end
function c43378048.spop(e,tp,eg,ep,ev,re,r,rp,c) function c43378048.spop(e,tp,eg,ep,ev,re,r,rp,c)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) local mg=Duel.GetMatchingGroup(c43378048.cfilter,tp,LOCATION_ONFIELD,0,nil)
local g1=Duel.SelectMatchingCard(tp,c43378048.spfilter,tp,LOCATION_ONFIELD,0,1,1,nil,6007213) local sg=Group.CreateGroup()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) while sg:GetCount()<3 do
local g2=Duel.SelectMatchingCard(tp,c43378048.spfilter,tp,LOCATION_ONFIELD,0,1,1,nil,32491822) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) local g=mg:FilterSelect(tp,c43378048.fselect,1,1,sg,tp,mg,sg,6007213,32491822,69890967)
local g3=Duel.SelectMatchingCard(tp,c43378048.spfilter,tp,LOCATION_ONFIELD,0,1,1,nil,69890967) sg:Merge(g)
g1:Merge(g2) end
g1:Merge(g3) Duel.Remove(sg,POS_FACEUP,REASON_COST)
Duel.Remove(g1,POS_FACEUP,REASON_COST)
end end
function c43378048.atkcon(e) function c43378048.atkcon(e)
return Duel.GetTurnPlayer()==e:GetHandlerPlayer() return Duel.GetTurnPlayer()==e:GetHandlerPlayer()
......
...@@ -43,24 +43,31 @@ function c48063985.initial_effect(c) ...@@ -43,24 +43,31 @@ function c48063985.initial_effect(c)
e4:SetOperation(c48063985.spop) e4:SetOperation(c48063985.spop)
c:RegisterEffect(e4) c:RegisterEffect(e4)
end end
function c48063985.spfilter1(c,tp) function c48063985.matfilter(c)
return c:IsFusionSetCard(0x10b5) and c:IsAbleToRemoveAsCost() and c:IsCanBeFusionMaterial() return (c:IsFusionSetCard(0x10b5) or c:IsFusionSetCard(0x20b5))
and Duel.IsExistingMatchingCard(c48063985.spfilter2,tp,LOCATION_MZONE,0,1,c) and c:IsAbleToRemoveAsCost() and c:IsCanBeFusionMaterial()
end end
function c48063985.spfilter2(c) function c48063985.spfilter1(c,tp,g)
return c:IsFusionSetCard(0x20b5) and c:IsAbleToRemoveAsCost() and c:IsCanBeFusionMaterial() return g:IsExists(c48063985.spfilter2,1,c,tp,c)
end
function c48063985.spfilter2(c,tp,mc)
return (c:IsFusionSetCard(0x10b5) and mc:IsFusionSetCard(0x20b5)
or c:IsFusionSetCard(0x20b5) and mc:IsFusionSetCard(0x10b5))
and Duel.GetLocationCountFromEx(tp,tp,Group.FromCards(c,mc))>0
end end
function c48063985.sprcon(e,c) function c48063985.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()
return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 local g=Duel.GetMatchingGroup(c48063985.matfilter,tp,LOCATION_MZONE,0,nil)
and Duel.IsExistingMatchingCard(c48063985.spfilter1,tp,LOCATION_MZONE,0,1,nil,tp) return g:IsExists(c48063985.spfilter1,1,nil,tp,g)
end end
function c48063985.sprop(e,tp,eg,ep,ev,re,r,rp,c) function c48063985.sprop(e,tp,eg,ep,ev,re,r,rp,c)
local g=Duel.GetMatchingGroup(c48063985.matfilter,tp,LOCATION_MZONE,0,nil)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
local g1=Duel.SelectMatchingCard(tp,c48063985.spfilter1,tp,LOCATION_MZONE,0,1,1,nil,tp) local g1=g:FilterSelect(tp,c48063985.spfilter1,1,1,nil,tp,g)
local mc=g1:GetFirst()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
local g2=Duel.SelectMatchingCard(tp,c48063985.spfilter2,tp,LOCATION_MZONE,0,1,1,g1:GetFirst()) local g2=g:FilterSelect(tp,c48063985.spfilter2,1,1,mc,tp,mc)
g1:Merge(g2) g1:Merge(g2)
c:SetMaterial(g1) c:SetMaterial(g1)
Duel.Remove(g1,POS_FACEUP,REASON_COST) Duel.Remove(g1,POS_FACEUP,REASON_COST)
......
...@@ -45,29 +45,35 @@ end ...@@ -45,29 +45,35 @@ end
function c48156348.splimit(e,se,sp,st) function c48156348.splimit(e,se,sp,st)
return e:GetHandler():GetLocation()~=LOCATION_EXTRA return e:GetHandler():GetLocation()~=LOCATION_EXTRA
end end
function c48156348.spfilter1(c,tp) function c48156348.cfilter(c)
return c:IsFusionCode(41470137) and c:IsAbleToDeckOrExtraAsCost() and c:IsCanBeFusionMaterial() return (c:IsFusionCode(41470137) or c:IsFusionSetCard(0x19) and c:IsType(TYPE_MONSTER))
and Duel.IsExistingMatchingCard(c48156348.spfilter2,tp,LOCATION_MZONE,0,1,c) and c:IsCanBeFusionMaterial() and c:IsAbleToDeckOrExtraAsCost()
end end
function c48156348.spfilter2(c) function c48156348.spfilter1(c,tp,g)
return c:IsFusionSetCard(0x19) and c:IsCanBeFusionMaterial() and c:IsAbleToDeckOrExtraAsCost() return g:IsExists(c48156348.spfilter2,1,c,tp,c)
end
function c48156348.spfilter2(c,tp,mc)
return (c:IsFusionCode(41470137) and mc:IsFusionSetCard(0x19) and mc:IsType(TYPE_MONSTER)
or c:IsFusionSetCard(0x19) and c:IsType(TYPE_MONSTER) and mc:IsFusionCode(41470137))
and Duel.GetLocationCountFromEx(tp,tp,Group.FromCards(c,mc))>0
end end
function c48156348.sprcon(e,c) function c48156348.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()
return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 local g=Duel.GetMatchingGroup(c48156348.cfilter,tp,LOCATION_ONFIELD,0,nil)
and Duel.IsExistingMatchingCard(c48156348.spfilter1,tp,LOCATION_ONFIELD,0,1,nil,tp) return g:IsExists(c48156348.spfilter1,1,nil,tp,g)
end end
function c48156348.sprop(e,tp,eg,ep,ev,re,r,rp,c) function c48156348.sprop(e,tp,eg,ep,ev,re,r,rp,c)
Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(48156348,2)) local g=Duel.GetMatchingGroup(c48156348.cfilter,tp,LOCATION_ONFIELD,0,nil)
local g1=Duel.SelectMatchingCard(tp,c48156348.spfilter1,tp,LOCATION_ONFIELD,0,1,1,nil,tp) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK)
Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(48156348,3)) local g1=g:FilterSelect(tp,c48156348.spfilter1,1,1,nil,tp,g)
local g2=Duel.SelectMatchingCard(tp,c48156348.spfilter2,tp,LOCATION_MZONE,0,1,1,g1:GetFirst()) local mc=g1:GetFirst()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK)
local g2=g:FilterSelect(tp,c48156348.spfilter2,1,1,mc,tp,mc)
g1:Merge(g2) g1:Merge(g2)
local tc=g1:GetFirst() local cg=g1:Filter(Card.IsFacedown,nil)
while tc do if cg:GetCount()>0 then
if not tc:IsFaceup() then Duel.ConfirmCards(1-tp,tc) end Duel.ConfirmCards(1-tp,cg)
tc=g1:GetNext()
end end
Duel.SendtoDeck(g1,nil,2,REASON_COST) Duel.SendtoDeck(g1,nil,2,REASON_COST)
end end
......
...@@ -60,60 +60,50 @@ c49352945.material_setcode=0x8 ...@@ -60,60 +60,50 @@ c49352945.material_setcode=0x8
function c49352945.splimit(e,se,sp,st) function c49352945.splimit(e,se,sp,st)
return not e:GetHandler():IsLocation(LOCATION_EXTRA) return not e:GetHandler():IsLocation(LOCATION_EXTRA)
end end
function c49352945.spfilter(c,code1,code2,code3) function c49352945.cfilter(c)
return c:IsAbleToDeckOrExtraAsCost() and (c:IsFusionCode(code1) or c:IsFusionCode(code2) or c:IsFusionCode(code3)) return c:IsFusionCode(89943723,17955766,54959865) and c:IsAbleToDeckOrExtraAsCost()
end end
function c49352945.spfilter1(c,mg,ft) function c49352945.fcheck(c,sg,g,code,...)
local mg2=mg:Clone() if not c:IsFusionCode(code) then return false end
mg2:RemoveCard(c) if ... then
if c:IsLocation(LOCATION_MZONE) then ft=ft+1 end g:AddCard(c)
return ft>=-1 and c:IsFusionCode(89943723) and c:IsAbleToDeckOrExtraAsCost() and c:IsCanBeFusionMaterial() local res=sg:IsExists(c49352945.fcheck,1,g,sg,g,...)
and mg2:IsExists(c49352945.spfilter2,1,nil,mg2,ft) g:RemoveCard(c)
end return res
function c49352945.spfilter2(c,mg,ft) else return true end
local mg2=mg:Clone() end
mg2:RemoveCard(c) function c49352945.fselect(c,tp,mg,sg,...)
if c:IsLocation(LOCATION_MZONE) then ft=ft+1 end sg:AddCard(c)
return ft>=0 and c:IsFusionCode(17955766) and c:IsAbleToDeckOrExtraAsCost() and c:IsCanBeFusionMaterial() local res=false
and mg2:IsExists(c49352945.spfilter3,1,nil,ft) if sg:GetCount()<3 then
end res=mg:IsExists(c49352945.fselect,1,sg,tp,mg,sg,...)
function c49352945.spfilter3(c,ft) elseif Duel.GetLocationCountFromEx(tp,tp,sg)>0 then
if c:IsLocation(LOCATION_MZONE) then ft=ft+1 end local g=Group.CreateGroup()
return ft>=1 and c:IsFusionCode(54959865) and c:IsAbleToDeckOrExtraAsCost() and c:IsCanBeFusionMaterial() res=sg:IsExists(c49352945.fcheck,1,nil,sg,g,...)
end
sg:RemoveCard(c)
return res
end end
function c49352945.spcon(e,c) function c49352945.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 mg=Duel.GetMatchingGroup(c49352945.cfilter,tp,LOCATION_ONFIELD,0,nil)
if ft<-2 then return false end local sg=Group.CreateGroup()
local mg=Duel.GetMatchingGroup(c49352945.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723,17955766,54959865) return mg:IsExists(c49352945.fselect,1,nil,tp,mg,sg,89943723,17955766,54959865)
return mg:IsExists(c49352945.spfilter1,1,nil,mg,ft)
end end
function c49352945.spop(e,tp,eg,ep,ev,re,r,rp,c) function c49352945.spop(e,tp,eg,ep,ev,re,r,rp,c)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local mg=Duel.GetMatchingGroup(c49352945.cfilter,tp,LOCATION_ONFIELD,0,nil)
local mg=Duel.GetMatchingGroup(c49352945.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723,17955766,54959865) local sg=Group.CreateGroup()
local g=Group.CreateGroup() while sg:GetCount()<3 do
local tc=nil
for i=1,3 do
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK)
if i==1 then local g=mg:FilterSelect(tp,c49352945.fselect,1,1,sg,tp,mg,sg,89943723,17955766,54959865)
tc=mg:FilterSelect(tp,c49352945.spfilter1,1,1,nil,mg,ft):GetFirst() sg:Merge(g)
end
if i==2 then
tc=mg:FilterSelect(tp,c49352945.spfilter2,1,1,nil,mg,ft):GetFirst()
end
if i==3 then
tc=mg:FilterSelect(tp,c49352945.spfilter3,1,1,nil,ft):GetFirst()
end
g:AddCard(tc)
mg:RemoveCard(tc)
if tc:IsLocation(LOCATION_MZONE) then ft=ft+1 end
end end
local cg=g:Filter(Card.IsFacedown,nil) local cg=sg: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(g,nil,2,REASON_COST) Duel.SendtoDeck(sg,nil,2,REASON_COST)
end end
function c49352945.retcon1(e,tp,eg,ep,ev,re,r,rp) function c49352945.retcon1(e,tp,eg,ep,ev,re,r,rp)
return not e:GetHandler():IsHasEffect(42015635) return not e:GetHandler():IsHasEffect(42015635)
......
...@@ -45,27 +45,46 @@ function c53315891.initial_effect(c) ...@@ -45,27 +45,46 @@ function c53315891.initial_effect(c)
e5:SetOperation(c53315891.spop) e5:SetOperation(c53315891.spop)
c:RegisterEffect(e5) c:RegisterEffect(e5)
end end
function c53315891.sprfilter(c,code) function c53315891.cfilter(c)
return c:IsFusionCode(code) and c:IsAbleToGraveAsCost() return c:IsFusionCode(80019195,85800949,84565800) and c:IsAbleToGraveAsCost()
end
function c53315891.fcheck(c,sg,g,code,...)
if not c:IsFusionCode(code) then return false end
if ... then
g:AddCard(c)
local res=sg:IsExists(c53315891.fcheck,1,g,sg,g,...)
g:RemoveCard(c)
return res
else return true end
end
function c53315891.fselect(c,tp,mg,sg,...)
sg:AddCard(c)
local res=false
if sg:GetCount()<3 then
res=mg:IsExists(c53315891.fselect,1,sg,tp,mg,sg,...)
elseif Duel.GetLocationCountFromEx(tp,tp,sg)>0 then
local g=Group.CreateGroup()
res=sg:IsExists(c53315891.fcheck,1,nil,sg,g,...)
end
sg:RemoveCard(c)
return res
end end
function c53315891.sprcon(e,c) function c53315891.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()
return Duel.GetLocationCount(tp,LOCATION_MZONE)>-3 local mg=Duel.GetMatchingGroup(c53315891.cfilter,tp,LOCATION_ONFIELD,0,nil)
and Duel.IsExistingMatchingCard(c53315891.sprfilter,tp,LOCATION_ONFIELD,0,1,nil,80019195) local sg=Group.CreateGroup()
and Duel.IsExistingMatchingCard(c53315891.sprfilter,tp,LOCATION_ONFIELD,0,1,nil,85800949) return mg:IsExists(c53315891.fselect,1,nil,tp,mg,sg,80019195,85800949,84565800)
and Duel.IsExistingMatchingCard(c53315891.sprfilter,tp,LOCATION_ONFIELD,0,1,nil,84565800)
end end
function c53315891.sprop(e,tp,eg,ep,ev,re,r,rp,c) function c53315891.sprop(e,tp,eg,ep,ev,re,r,rp,c)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) local mg=Duel.GetMatchingGroup(c53315891.cfilter,tp,LOCATION_ONFIELD,0,nil)
local g1=Duel.SelectMatchingCard(tp,c53315891.sprfilter,tp,LOCATION_ONFIELD,0,1,1,nil,80019195) local sg=Group.CreateGroup()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) while sg:GetCount()<3 do
local g2=Duel.SelectMatchingCard(tp,c53315891.sprfilter,tp,LOCATION_ONFIELD,0,1,1,nil,85800949) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) local g=mg:FilterSelect(tp,c53315891.fselect,1,1,sg,tp,mg,sg,80019195,85800949,84565800)
local g3=Duel.SelectMatchingCard(tp,c53315891.sprfilter,tp,LOCATION_ONFIELD,0,1,1,nil,84565800) sg:Merge(g)
g1:Merge(g2) end
g1:Merge(g3) Duel.SendtoGrave(sg,REASON_COST)
Duel.SendtoGrave(g1,REASON_COST)
end end
function c53315891.efilter(e,te) function c53315891.efilter(e,te)
return te:GetOwner()~=e:GetOwner() return te:GetOwner()~=e:GetOwner()
......
...@@ -26,42 +26,48 @@ function c56655675.initial_effect(c) ...@@ -26,42 +26,48 @@ function c56655675.initial_effect(c)
e3:SetOperation(c56655675.operation) e3:SetOperation(c56655675.operation)
c:RegisterEffect(e3) c:RegisterEffect(e3)
end end
function c56655675.spfilter1(c,mg) function c56655675.cfilter(c)
local mg2=mg:Clone() return (c:IsFusionSetCard(0x40b5) or c:IsFusionSetCard(0x10b5) or c:IsFusionSetCard(0x20b5))
mg2:RemoveCard(c) and c:IsAbleToRemoveAsCost() and c:IsCanBeFusionMaterial()
return c:IsFusionSetCard(0x40b5) and c:IsAbleToRemoveAsCost() and c:IsCanBeFusionMaterial()
and mg2:IsExists(c56655675.spfilter2,1,nil,mg2)
end end
function c56655675.spfilter2(c,mg) function c56655675.fcheck(c,sg,g,code,...)
local mg2=mg:Clone() if not c:IsFusionSetCard(code) then return false end
mg2:RemoveCard(c) if ... then
return c:IsFusionSetCard(0x10b5) and c:IsAbleToRemoveAsCost() and c:IsCanBeFusionMaterial() g:AddCard(c)
and mg2:IsExists(c56655675.spfilter3,1,nil) local res=sg:IsExists(c56655675.fcheck,1,g,sg,g,...)
g:RemoveCard(c)
return res
else return true end
end end
function c56655675.spfilter3(c) function c56655675.fselect(c,tp,mg,sg,...)
return c:IsFusionSetCard(0x20b5) and c:IsAbleToRemoveAsCost() and c:IsCanBeFusionMaterial() sg:AddCard(c)
local res=false
if sg:GetCount()<3 then
res=mg:IsExists(c56655675.fselect,1,sg,tp,mg,sg,...)
elseif Duel.GetLocationCountFromEx(tp,tp,sg)>0 then
local g=Group.CreateGroup()
res=sg:IsExists(c56655675.fcheck,1,nil,sg,g,...)
end
sg:RemoveCard(c)
return res
end end
function c56655675.spcon(e,c) function c56655675.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(Card.IsFusionSetCard,tp,LOCATION_MZONE,0,nil,0xb5) local mg=Duel.GetMatchingGroup(c56655675.cfilter,tp,LOCATION_MZONE,0,nil)
return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 local sg=Group.CreateGroup()
and mg:IsExists(c56655675.spfilter1,1,nil,mg) return mg:IsExists(c56655675.fselect,1,nil,tp,mg,sg,0x40b5,0x10b5,0x20b5)
end end
function c56655675.spop(e,tp,eg,ep,ev,re,r,rp,c) function c56655675.spop(e,tp,eg,ep,ev,re,r,rp,c)
local mg=Duel.GetMatchingGroup(Card.IsFusionSetCard,tp,LOCATION_MZONE,0,nil,0xb5) local mg=Duel.GetMatchingGroup(c56655675.cfilter,tp,LOCATION_MZONE,0,nil)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) local sg=Group.CreateGroup()
local g1=mg:FilterSelect(tp,c56655675.spfilter1,1,1,nil,mg) while sg:GetCount()<3 do
mg:RemoveCard(g1:GetFirst()) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) local g=mg:FilterSelect(tp,c56655675.fselect,1,1,sg,tp,mg,sg,0x40b5,0x10b5,0x20b5)
local g2=mg:FilterSelect(tp,c56655675.spfilter2,1,1,nil,mg) sg:Merge(g)
mg:RemoveCard(g2:GetFirst()) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) c:SetMaterial(sg)
local g3=mg:FilterSelect(tp,c56655675.spfilter3,1,1,nil) Duel.Remove(sg,POS_FACEUP,REASON_COST)
g1:Merge(g2)
g1:Merge(g3)
c:SetMaterial(g1)
Duel.Remove(g1,POS_FACEUP,REASON_COST)
end end
function c56655675.condition(e,tp,eg,ep,ev,re,r,rp) function c56655675.condition(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1 return e:GetHandler():GetSummonType()==SUMMON_TYPE_SPECIAL+1
......
...@@ -42,22 +42,31 @@ end ...@@ -42,22 +42,31 @@ end
function c72378329.splimit(e,se,sp,st) function c72378329.splimit(e,se,sp,st)
return bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION return bit.band(st,SUMMON_TYPE_FUSION)==SUMMON_TYPE_FUSION
end end
function c72378329.spfilter1(c,tp,fc) function c72378329.rfilter(c,fc)
return c:IsRace(RACE_DRAGON) and c:IsAttribute(ATTRIBUTE_DARK) and c:IsCanBeFusionMaterial(fc) return (c:IsRace(RACE_DRAGON) and c:IsAttribute(ATTRIBUTE_DARK) or c:IsRace(RACE_BEAST))
and Duel.CheckReleaseGroup(tp,c72378329.spfilter2,1,c,fc) and c:IsCanBeFusionMaterial(fc)
end end
function c72378329.spfilter2(c,fc) function c72378329.spfilter1(c,tp,g)
return c:IsRace(RACE_BEAST) and c:IsCanBeFusionMaterial(fc) return g:IsExists(c72378329.spfilter2,1,c,tp,c)
end
function c72378329.spfilter2(c,tp,mc)
return (c:IsRace(RACE_DRAGON) and c:IsAttribute(ATTRIBUTE_DARK) and mc:IsRace(RACE_BEAST)
or c:IsRace(RACE_BEAST) and mc:IsRace(RACE_DRAGON) and mc:IsAttribute(ATTRIBUTE_DARK))
and Duel.GetLocationCountFromEx(tp,tp,Group.FromCards(c,mc))>0
end end
function c72378329.spcon(e,c) function c72378329.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 rg=Duel.GetReleaseGroup(tp):Filter(c72378329.rfilter,nil,c)
and Duel.CheckReleaseGroup(tp,c72378329.spfilter1,1,nil,tp,c) return rg:IsExists(c72378329.spfilter1,1,nil,tp,rg)
end end
function c72378329.spop(e,tp,eg,ep,ev,re,r,rp,c) function c72378329.spop(e,tp,eg,ep,ev,re,r,rp,c)
local g1=Duel.SelectReleaseGroup(tp,c72378329.spfilter1,1,1,nil,tp,c) local rg=Duel.GetReleaseGroup(tp):Filter(c72378329.rfilter,nil,c)
local g2=Duel.SelectReleaseGroup(tp,c72378329.spfilter2,1,1,g1:GetFirst(),c) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
local g1=rg:FilterSelect(tp,c72378329.spfilter1,1,1,nil,tp,rg)
local mc=g1:GetFirst()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_RELEASE)
local g2=rg:FilterSelect(tp,c72378329.spfilter2,1,1,mc,tp,mc)
g1:Merge(g2) g1:Merge(g2)
c:SetMaterial(g1) c:SetMaterial(g1)
Duel.Release(g1,REASON_COST+REASON_FUSION+REASON_MATERIAL) Duel.Release(g1,REASON_COST+REASON_FUSION+REASON_MATERIAL)
......
...@@ -26,19 +26,25 @@ end ...@@ -26,19 +26,25 @@ end
function c73285669.spfilter(c) function c73285669.spfilter(c)
return c:IsFusionSetCard(0x19) and c:IsCanBeFusionMaterial() and c:IsAbleToDeckOrExtraAsCost() return c:IsFusionSetCard(0x19) and c:IsCanBeFusionMaterial() and c:IsAbleToDeckOrExtraAsCost()
end end
function c73285669.spfilter1(c,tp,g)
return g:IsExists(c73285669.spfilter2,1,c,tp,c)
end
function c73285669.spfilter2(c,tp,mc)
return Duel.GetLocationCountFromEx(tp,tp,Group.FromCards(c,mc))>0
end
function c73285669.sprcon(e,c) function c73285669.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()
return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 local g=Duel.GetMatchingGroup(c73285669.spfilter,tp,LOCATION_MZONE,0,nil)
and Duel.IsExistingMatchingCard(c73285669.spfilter,tp,LOCATION_MZONE,0,2,nil) return g:IsExists(c73285669.spfilter1,1,nil,tp,g)
end end
function c73285669.sprop(e,tp,eg,ep,ev,re,r,rp,c) function c73285669.sprop(e,tp,eg,ep,ev,re,r,rp,c)
local g=Duel.GetMatchingGroup(c73285669.spfilter,tp,LOCATION_MZONE,0,nil)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK)
local g1=g:FilterSelect(tp,c73285669.spfilter1,1,1,nil,tp,g)
local mc=g1:GetFirst()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK)
local g=Duel.SelectMatchingCard(tp,c73285669.spfilter,tp,LOCATION_MZONE,0,2,2,nil) local g2=g:FilterSelect(tp,c73285669.spfilter2,1,1,mc,tp,mc)
local tc=g:GetFirst() g1:Merge(g2)
while tc do Duel.SendtoDeck(g1,nil,2,REASON_COST)
if not tc:IsFaceup() then Duel.ConfirmCards(1-tp,tc) end
tc=g:GetNext()
end
Duel.SendtoDeck(g,nil,2,REASON_COST)
end end
...@@ -58,57 +58,50 @@ c78512663.material_setcode=0x8 ...@@ -58,57 +58,50 @@ c78512663.material_setcode=0x8
function c78512663.splimit(e,se,sp,st) function c78512663.splimit(e,se,sp,st)
return not e:GetHandler():IsLocation(LOCATION_EXTRA) return not e:GetHandler():IsLocation(LOCATION_EXTRA)
end end
function c78512663.spfilter(c,code) function c78512663.cfilter(c)
return c:IsAbleToDeckOrExtraAsCost() and c:IsFusionCode(code) return c:IsFusionCode(89943723,89621922,80344569) and c:IsAbleToDeckOrExtraAsCost()
end
function c78512663.fcheck(c,sg,g,code,...)
if not c:IsFusionCode(code) then return false end
if ... then
g:AddCard(c)
local res=sg:IsExists(c78512663.fcheck,1,g,sg,g,...)
g:RemoveCard(c)
return res
else return true end
end
function c78512663.fselect(c,tp,mg,sg,...)
sg:AddCard(c)
local res=false
if sg:GetCount()<3 then
res=mg:IsExists(c78512663.fselect,1,sg,tp,mg,sg,...)
elseif Duel.GetLocationCountFromEx(tp,tp,sg)>0 then
local g=Group.CreateGroup()
res=sg:IsExists(c78512663.fcheck,1,nil,sg,g,...)
end
sg:RemoveCard(c)
return res
end end
function c78512663.spcon(e,c) function c78512663.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 mg=Duel.GetMatchingGroup(c78512663.cfilter,tp,LOCATION_ONFIELD,0,nil)
if ft<-2 then return false end local sg=Group.CreateGroup()
local g1=Duel.GetMatchingGroup(c78512663.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723) return mg:IsExists(c78512663.fselect,1,nil,tp,mg,sg,89943723,89621922,80344569)
local g2=Duel.GetMatchingGroup(c78512663.spfilter,tp,LOCATION_ONFIELD,0,nil,89621922)
local g3=Duel.GetMatchingGroup(c78512663.spfilter,tp,LOCATION_ONFIELD,0,nil,80344569)
if g1:GetCount()==0 or g2:GetCount()==0 or g3:GetCount()==0 then return false end
if ft>0 then return true end
local f1=g1:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)>0 and 1 or 0
local f2=g2:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)>0 and 1 or 0
local f3=g3:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)>0 and 1 or 0
if ft==-2 then return f1+f2+f3==3
elseif ft==-1 then return f1+f2+f3>=2
else return f1+f2+f3>=1 end
end end
function c78512663.spop(e,tp,eg,ep,ev,re,r,rp,c) function c78512663.spop(e,tp,eg,ep,ev,re,r,rp,c)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local mg=Duel.GetMatchingGroup(c78512663.cfilter,tp,LOCATION_ONFIELD,0,nil)
local g1=Duel.GetMatchingGroup(c78512663.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723) local sg=Group.CreateGroup()
local g2=Duel.GetMatchingGroup(c78512663.spfilter,tp,LOCATION_ONFIELD,0,nil,89621922) while sg:GetCount()<3 do
local g3=Duel.GetMatchingGroup(c78512663.spfilter,tp,LOCATION_ONFIELD,0,nil,80344569)
g1:Merge(g2)
g1:Merge(g3)
local g=Group.CreateGroup()
local tc=nil
for i=1,3 do
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK)
if ft<=0 then local g=mg:FilterSelect(tp,c78512663.fselect,1,1,sg,tp,mg,sg,89943723,89621922,80344569)
tc=g1:FilterSelect(tp,Card.IsLocation,1,1,nil,LOCATION_MZONE):GetFirst() sg:Merge(g)
else
tc=g1:Select(tp,1,1,nil):GetFirst()
end
g:AddCard(tc)
if tc:IsFusionCode(89943723) then
g1:Remove(Card.IsFusionCode,nil,89943723)
elseif tc:IsFusionCode(89621922) then
g1:Remove(Card.IsFusionCode,nil,89621922)
elseif tc:IsFusionCode(80344569) then
g1:Remove(Card.IsFusionCode,nil,80344569)
end
ft=ft+1
end end
local cg=g:Filter(Card.IsFacedown,nil) local cg=sg: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(g,nil,2,REASON_COST) Duel.SendtoDeck(sg,nil,2,REASON_COST)
end end
function c78512663.atkval(e,c) function c78512663.atkval(e,c)
return Duel.GetFieldGroupCount(0,LOCATION_ONFIELD,LOCATION_ONFIELD)*400 return Duel.GetFieldGroupCount(0,LOCATION_ONFIELD,LOCATION_ONFIELD)*400
......
...@@ -30,49 +30,49 @@ end ...@@ -30,49 +30,49 @@ end
function c79229522.splimit(e,se,sp,st) function c79229522.splimit(e,se,sp,st)
return e:GetHandler():GetLocation()~=LOCATION_EXTRA return e:GetHandler():GetLocation()~=LOCATION_EXTRA
end end
function c79229522.spfilter1(c,tp,ft) function c79229522.cfilter(c,tp)
if c:IsFusionCode(70095154) and c:IsAbleToGraveAsCost() and c:IsCanBeFusionMaterial() and (c:IsControler(tp) or c:IsFaceup()) then return (c:IsFusionCode(70095154) or c:IsRace(RACE_MACHINE) and c:IsType(TYPE_MONSTER))
if ft>0 or (c:IsControler(tp) and c:IsLocation(LOCATION_MZONE)) then and c:IsCanBeFusionMaterial() and c:IsAbleToDeckOrExtraAsCost() and (c:IsControler(tp) or c:IsFaceup())
return Duel.IsExistingMatchingCard(c79229522.spfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,1,c,tp)
else
return Duel.IsExistingMatchingCard(c79229522.spfilter2,tp,LOCATION_MZONE,0,1,c,tp)
end
else return false end
end end
function c79229522.spfilter2(c,tp) function c79229522.fcheck(c,sg)
return c:IsRace(RACE_MACHINE) and c:IsAbleToGraveAsCost() and c:IsCanBeFusionMaterial() and (c:IsControler(tp) or c:IsFaceup()) return c:IsFusionCode(70095154) and sg:FilterCount(c79229522.fcheck2,c)+1==sg:GetCount()
end
function c79229522.fcheck2(c)
return c:IsRace(RACE_MACHINE) and c:IsType(TYPE_MONSTER)
end
function c79229522.fgoal(c,tp,sg)
return sg:GetCount()>1 and Duel.GetLocationCountFromEx(tp,tp,sg)>0 and sg:IsExists(c79229522.fcheck,1,nil,sg)
end
function c79229522.fselect(c,tp,mg,sg)
sg:AddCard(c)
local res=c79229522.fgoal(c,tp,sg) or mg:IsExists(c79229522.fselect,1,sg,tp,mg,sg)
sg:RemoveCard(c)
return res
end end
function c79229522.sprcon(e,c) function c79229522.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 ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local mg=Duel.GetMatchingGroup(c79229522.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil,tp)
return ft>-1 and Duel.IsExistingMatchingCard(c79229522.spfilter1,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,nil,tp,ft) local sg=Group.CreateGroup()
return mg:IsExists(c79229522.fselect,1,nil,tp,mg,sg)
end end
function c79229522.sprop(e,tp,eg,ep,ev,re,r,rp,c) function c79229522.sprop(e,tp,eg,ep,ev,re,r,rp,c)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local mg=Duel.GetMatchingGroup(c79229522.cfilter,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,nil,tp)
Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(79229522,0)) local sg=Group.CreateGroup()
local g1=Duel.SelectMatchingCard(tp,c79229522.spfilter1,tp,LOCATION_ONFIELD,LOCATION_ONFIELD,1,1,nil,tp,ft) while true do
local tc=g1:GetFirst() local cg=mg:Filter(c79229522.fselect,sg,tp,mg,sg)
local g=Duel.GetMatchingGroup(c79229522.spfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,tc,tp) if cg:GetCount()==0
local g2=nil or (c79229522.fgoal(c,tp,sg) and not Duel.SelectYesNo(tp,210)) then break end
Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(79229522,1)) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
if ft>0 or (tc:IsControler(tp) and tc:IsLocation(LOCATION_MZONE)) then local g=cg:Select(tp,1,1,nil)
g2=g:Select(tp,1,10,nil) sg:Merge(g)
else
g2=g:FilterSelect(tp,Card.IsControler,1,1,nil,tp)
if g:GetCount()>1 and Duel.SelectYesNo(tp,210) then
Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(79229522,1))
local g3=g:Select(tp,1,9,g2:GetFirst())
g2:Merge(g3)
end
end end
g1:Merge(g2) Duel.SendtoGrave(sg,REASON_COST)
Duel.SendtoGrave(g1,REASON_COST)
--spsummon condition --spsummon condition
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE) e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_SET_BASE_ATTACK) e1:SetCode(EFFECT_SET_BASE_ATTACK)
e1:SetReset(RESET_EVENT+0xff0000) e1:SetReset(RESET_EVENT+0xff0000)
e1:SetValue(g1:GetCount()*1000) e1:SetValue(sg:GetCount()*1000)
c:RegisterEffect(e1) c:RegisterEffect(e1)
end end
...@@ -40,24 +40,30 @@ function c80532587.initial_effect(c) ...@@ -40,24 +40,30 @@ function c80532587.initial_effect(c)
e4:SetOperation(c80532587.desop) e4:SetOperation(c80532587.desop)
c:RegisterEffect(e4) c:RegisterEffect(e4)
end end
function c80532587.sprfilter1(c,tp,fc) function c80532587.cfilter(c,fc)
return c:IsType(TYPE_SYNCHRO) and c:IsAbleToGraveAsCost() and c:IsCanBeFusionMaterial(fc) return c:IsFusionType(TYPE_SYNCHRO+TYPE_XYZ) and c:IsCanBeFusionMaterial(fc) and c:IsAbleToGraveAsCost()
and Duel.IsExistingMatchingCard(c80532587.sprfilter2,tp,LOCATION_MZONE,0,1,c,fc)
end end
function c80532587.sprfilter2(c,fc) function c80532587.spfilter1(c,tp,g)
return c:IsType(TYPE_XYZ) and c:IsAbleToGraveAsCost() and c:IsCanBeFusionMaterial(fc) return g:IsExists(c80532587.spfilter2,1,c,tp,c)
end
function c80532587.spfilter2(c,tp,mc)
return (c:IsFusionType(TYPE_SYNCHRO) and mc:IsFusionType(TYPE_XYZ)
or c:IsFusionType(TYPE_XYZ) and mc:IsFusionType(TYPE_SYNCHRO))
and Duel.GetLocationCountFromEx(tp,tp,Group.FromCards(c,mc))>0
end end
function c80532587.sprcon(e,c) function c80532587.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()
return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 local mg=Duel.GetMatchingGroup(c80532587.cfilter,tp,LOCATION_MZONE,0,nil,c)
and Duel.IsExistingMatchingCard(c80532587.sprfilter1,tp,LOCATION_MZONE,0,1,nil,tp,c) return mg:IsExists(c80532587.spfilter1,1,nil,tp,mg)
end end
function c80532587.sprop(e,tp,eg,ep,ev,re,r,rp,c) function c80532587.sprop(e,tp,eg,ep,ev,re,r,rp,c)
local mg=Duel.GetMatchingGroup(c80532587.cfilter,tp,LOCATION_MZONE,0,nil,c)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local g1=Duel.SelectMatchingCard(tp,c80532587.sprfilter1,tp,LOCATION_MZONE,0,1,1,nil,tp,c) local g1=mg:FilterSelect(tp,c80532587.spfilter1,1,1,nil,tp,mg)
local mc=g1:GetFirst()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local g2=Duel.SelectMatchingCard(tp,c80532587.sprfilter2,tp,LOCATION_MZONE,0,1,1,g1:GetFirst(),c) local g2=mg:FilterSelect(tp,c80532587.spfilter2,1,1,mc,tp,mc)
g1:Merge(g2) g1:Merge(g2)
c:SetMaterial(g1) c:SetMaterial(g1)
Duel.SendtoGrave(g1,REASON_COST) Duel.SendtoGrave(g1,REASON_COST)
......
...@@ -49,57 +49,36 @@ c81566151.material_setcode=0x8 ...@@ -49,57 +49,36 @@ c81566151.material_setcode=0x8
function c81566151.splimit(e,se,sp,st) function c81566151.splimit(e,se,sp,st)
return not e:GetHandler():IsLocation(LOCATION_EXTRA) return not e:GetHandler():IsLocation(LOCATION_EXTRA)
end end
function c81566151.spfilter(c,code) function c81566151.matfilter(c)
return c:IsAbleToDeckOrExtraAsCost() and c:IsFusionCode(code) return c:IsFusionCode(89943723,89621922) and c:IsAbleToDeckOrExtraAsCost()
end
function c81566151.spfilter1(c,tp,g)
return g:IsExists(c81566151.spfilter2,1,c,tp,c)
end
function c81566151.spfilter2(c,tp,mc)
return (c:IsFusionCode(89943723) and mc:IsFusionCode(89621922)
or c:IsFusionCode(89621922) and mc:IsFusionCode(89943723))
and Duel.GetLocationCountFromEx(tp,tp,Group.FromCards(c,mc))>0
end end
function c81566151.spcon(e,c) function c81566151.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(c81566151.matfilter,tp,LOCATION_ONFIELD,0,nil)
if ft<-1 then return false end return g:IsExists(c81566151.spfilter1,1,nil,tp,g)
local g1=Duel.GetMatchingGroup(c81566151.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723)
local g2=Duel.GetMatchingGroup(c81566151.spfilter,tp,LOCATION_ONFIELD,0,nil,89621922)
if g1:GetCount()==0 or g2:GetCount()==0 then return false end
if g1:GetCount()==1 and g2:GetCount()==1 and g1:GetFirst()==g2:GetFirst() then return false end
if ft>0 then return true end
local f1=g1:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)
local f2=g2:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)
if ft==-1 then return f1>0 and f2>0
else return f1>0 or f2>0 end
end end
function c81566151.spop(e,tp,eg,ep,ev,re,r,rp,c) function c81566151.spop(e,tp,eg,ep,ev,re,r,rp,c)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local g=Duel.GetMatchingGroup(c81566151.matfilter,tp,LOCATION_ONFIELD,0,nil)
local g1=Duel.GetMatchingGroup(c81566151.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK)
local g2=Duel.GetMatchingGroup(c81566151.spfilter,tp,LOCATION_ONFIELD,0,nil,89621922) local g1=g:FilterSelect(tp,c81566151.spfilter1,1,1,nil,tp,g)
local mc=g1:GetFirst()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK)
local g2=g:FilterSelect(tp,c81566151.spfilter2,1,1,mc,tp,mc)
g1:Merge(g2) g1:Merge(g2)
local g=Group.CreateGroup() local cg=g1:Filter(Card.IsFacedown,nil)
local tc=nil
for i=1,2 do
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK)
if ft<=0 then
tc=g1:FilterSelect(tp,Card.IsLocation,1,1,nil,LOCATION_MZONE):GetFirst()
ft=ft+1
else
tc=g1:Select(tp,1,1,nil):GetFirst()
end
g:AddCard(tc)
if i==1 then
g1:Clear()
if tc:IsFusionCode(89943723) then
local sg=Duel.GetMatchingGroup(c81566151.spfilter,tp,LOCATION_ONFIELD,0,tc,89621922)
g1:Merge(sg)
end
if tc:IsFusionCode(89621922) then
local sg=Duel.GetMatchingGroup(c81566151.spfilter,tp,LOCATION_ONFIELD,0,tc,89943723)
g1:Merge(sg)
end
end
end
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(g,nil,2,REASON_COST) Duel.SendtoDeck(g1,nil,2,REASON_COST)
end end
function c81566151.retcon1(e,tp,eg,ep,ev,re,r,rp) function c81566151.retcon1(e,tp,eg,ep,ev,re,r,rp)
return not e:GetHandler():IsHasEffect(42015635) return not e:GetHandler():IsHasEffect(42015635)
......
...@@ -44,53 +44,32 @@ end ...@@ -44,53 +44,32 @@ end
function c84243274.splimit(e,se,sp,st) function c84243274.splimit(e,se,sp,st)
return not e:GetHandler():IsLocation(LOCATION_EXTRA) return not e:GetHandler():IsLocation(LOCATION_EXTRA)
end end
function c84243274.spfilter(c,code) function c84243274.matfilter(c)
return c:IsFusionCode(code) and c:IsAbleToRemoveAsCost() return c:IsFusionCode(58859575,91998119) and c:IsAbleToRemoveAsCost()
end
function c84243274.spfilter1(c,tp,g)
return g:IsExists(c84243274.spfilter2,1,c,tp,c)
end
function c84243274.spfilter2(c,tp,mc)
return (c:IsFusionCode(58859575) and mc:IsFusionCode(91998119)
or c:IsFusionCode(91998119) and mc:IsFusionCode(58859575))
and Duel.GetLocationCountFromEx(tp,tp,Group.FromCards(c,mc))>0
end end
function c84243274.spcon(e,c) function c84243274.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(c84243274.matfilter,tp,LOCATION_ONFIELD,0,nil)
if ft<-1 then return false end return g:IsExists(c84243274.spfilter1,1,nil,tp,g)
local g1=Duel.GetMatchingGroup(c84243274.spfilter,tp,LOCATION_ONFIELD,0,nil,58859575)
local g2=Duel.GetMatchingGroup(c84243274.spfilter,tp,LOCATION_ONFIELD,0,nil,91998119)
if g1:GetCount()==0 or g2:GetCount()==0 then return false end
if g1:GetCount()==1 and g2:GetCount()==1 and g1:GetFirst()==g2:GetFirst() then return false end
if ft>0 then return true end
local f1=g1:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)
local f2=g2:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)
if ft==-1 then return f1>0 and f2>0
else return f1>0 or f2>0 end
end end
function c84243274.spop(e,tp,eg,ep,ev,re,r,rp,c) function c84243274.spop(e,tp,eg,ep,ev,re,r,rp,c)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local g=Duel.GetMatchingGroup(c84243274.matfilter,tp,LOCATION_ONFIELD,0,nil)
local g1=Duel.GetMatchingGroup(c84243274.spfilter,tp,LOCATION_ONFIELD,0,nil,58859575) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
local g2=Duel.GetMatchingGroup(c84243274.spfilter,tp,LOCATION_ONFIELD,0,nil,91998119) local g1=g:FilterSelect(tp,c84243274.spfilter1,1,1,nil,tp,g)
local mc=g1:GetFirst()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
local g2=g:FilterSelect(tp,c84243274.spfilter2,1,1,mc,tp,mc)
g1:Merge(g2) g1:Merge(g2)
local g=Group.CreateGroup() Duel.Remove(g1,POS_FACEUP,REASON_COST)
local tc=nil
for i=1,2 do
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
if ft<=0 then
tc=g1:FilterSelect(tp,Card.IsLocation,1,1,nil,LOCATION_MZONE):GetFirst()
ft=ft+1
else
tc=g1:Select(tp,1,1,nil):GetFirst()
end
g:AddCard(tc)
if i==1 then
g1:Clear()
if tc:IsFusionCode(91998119) then
local sg=Duel.GetMatchingGroup(c84243274.spfilter,tp,LOCATION_ONFIELD,0,tc,58859575)
g1:Merge(sg)
end
if tc:IsFusionCode(58859575) then
local sg=Duel.GetMatchingGroup(c84243274.spfilter,tp,LOCATION_ONFIELD,0,tc,91998119)
g1:Merge(sg)
end
end
end
Duel.Remove(g,POS_FACEUP,REASON_COST)
end end
function c84243274.rmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc) function c84243274.rmtg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and chkc:IsAbleToRemove() end if chkc then return chkc:IsOnField() and chkc:IsControler(1-tp) and chkc:IsAbleToRemove() end
......
...@@ -53,57 +53,36 @@ c85507811.material_setcode=0x8 ...@@ -53,57 +53,36 @@ c85507811.material_setcode=0x8
function c85507811.splimit(e,se,sp,st) function c85507811.splimit(e,se,sp,st)
return not e:GetHandler():IsLocation(LOCATION_EXTRA) return not e:GetHandler():IsLocation(LOCATION_EXTRA)
end end
function c85507811.spfilter(c,code) function c85507811.matfilter(c)
return c:IsAbleToDeckOrExtraAsCost() and c:IsFusionCode(code) return c:IsFusionCode(89943723,17732278) and c:IsAbleToDeckOrExtraAsCost()
end
function c85507811.spfilter1(c,tp,g)
return g:IsExists(c85507811.spfilter2,1,c,tp,c)
end
function c85507811.spfilter2(c,tp,mc)
return (c:IsFusionCode(89943723) and mc:IsFusionCode(17732278)
or c:IsFusionCode(17732278) and mc:IsFusionCode(89943723))
and Duel.GetLocationCountFromEx(tp,tp,Group.FromCards(c,mc))>0
end end
function c85507811.spcon(e,c) function c85507811.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(c85507811.matfilter,tp,LOCATION_ONFIELD,0,nil)
if ft<-1 then return false end return g:IsExists(c85507811.spfilter1,1,nil,tp,g)
local g1=Duel.GetMatchingGroup(c85507811.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723)
local g2=Duel.GetMatchingGroup(c85507811.spfilter,tp,LOCATION_ONFIELD,0,nil,17732278)
if g1:GetCount()==0 or g2:GetCount()==0 then return false end
if g1:GetCount()==1 and g2:GetCount()==1 and g1:GetFirst()==g2:GetFirst() then return false end
if ft>0 then return true end
local f1=g1:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)
local f2=g2:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)
if ft==-1 then return f1>0 and f2>0
else return f1>0 or f2>0 end
end end
function c85507811.spop(e,tp,eg,ep,ev,re,r,rp,c) function c85507811.spop(e,tp,eg,ep,ev,re,r,rp,c)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local g=Duel.GetMatchingGroup(c85507811.matfilter,tp,LOCATION_ONFIELD,0,nil)
local g1=Duel.GetMatchingGroup(c85507811.spfilter,tp,LOCATION_ONFIELD,0,nil,89943723) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK)
local g2=Duel.GetMatchingGroup(c85507811.spfilter,tp,LOCATION_ONFIELD,0,nil,17732278) local g1=g:FilterSelect(tp,c85507811.spfilter1,1,1,nil,tp,g)
local mc=g1:GetFirst()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK)
local g2=g:FilterSelect(tp,c85507811.spfilter2,1,1,mc,tp,mc)
g1:Merge(g2) g1:Merge(g2)
local g=Group.CreateGroup() local cg=g1:Filter(Card.IsFacedown,nil)
local tc=nil
for i=1,2 do
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK)
if ft<=0 then
tc=g1:FilterSelect(tp,Card.IsLocation,1,1,nil,LOCATION_MZONE):GetFirst()
ft=ft+1
else
tc=g1:Select(tp,1,1,nil):GetFirst()
end
g:AddCard(tc)
if i==1 then
g1:Clear()
if tc:IsFusionCode(89943723) then
local sg=Duel.GetMatchingGroup(c85507811.spfilter,tp,LOCATION_ONFIELD,0,tc,17732278)
g1:Merge(sg)
end
if tc:IsFusionCode(17732278) then
local sg=Duel.GetMatchingGroup(c85507811.spfilter,tp,LOCATION_ONFIELD,0,tc,89943723)
g1:Merge(sg)
end
end
end
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(g,nil,2,REASON_COST) Duel.SendtoDeck(g1,nil,2,REASON_COST)
end end
function c85507811.retcon1(e,tp,eg,ep,ev,re,r,rp) function c85507811.retcon1(e,tp,eg,ep,ev,re,r,rp)
return not e:GetHandler():IsHasEffect(42015635) return not e:GetHandler():IsHasEffect(42015635)
......
...@@ -37,24 +37,31 @@ function c86274272.initial_effect(c) ...@@ -37,24 +37,31 @@ function c86274272.initial_effect(c)
e4:SetOperation(c86274272.spop) e4:SetOperation(c86274272.spop)
c:RegisterEffect(e4) c:RegisterEffect(e4)
end end
function c86274272.spfilter1(c,tp) function c86274272.matfilter(c)
return c:IsFusionSetCard(0x10b5) and c:IsAbleToRemoveAsCost() and c:IsCanBeFusionMaterial() return (c:IsFusionSetCard(0x10b5) or c:IsFusionSetCard(0x20b5))
and Duel.IsExistingMatchingCard(c86274272.spfilter2,tp,LOCATION_MZONE,0,1,c) and c:IsAbleToRemoveAsCost() and c:IsCanBeFusionMaterial()
end end
function c86274272.spfilter2(c) function c86274272.spfilter1(c,tp,g)
return c:IsFusionSetCard(0x20b5) and c:IsAbleToRemoveAsCost() and c:IsCanBeFusionMaterial() return g:IsExists(c86274272.spfilter2,1,c,tp,c)
end
function c86274272.spfilter2(c,tp,mc)
return (c:IsFusionSetCard(0x10b5) and mc:IsFusionSetCard(0x20b5)
or c:IsFusionSetCard(0x20b5) and mc:IsFusionSetCard(0x10b5))
and Duel.GetLocationCountFromEx(tp,tp,Group.FromCards(c,mc))>0
end end
function c86274272.sprcon(e,c) function c86274272.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()
return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 local g=Duel.GetMatchingGroup(c86274272.matfilter,tp,LOCATION_MZONE,0,nil)
and Duel.IsExistingMatchingCard(c86274272.spfilter1,tp,LOCATION_MZONE,0,1,nil,tp) return g:IsExists(c86274272.spfilter1,1,nil,tp,g)
end end
function c86274272.sprop(e,tp,eg,ep,ev,re,r,rp,c) function c86274272.sprop(e,tp,eg,ep,ev,re,r,rp,c)
local g=Duel.GetMatchingGroup(c86274272.matfilter,tp,LOCATION_MZONE,0,nil)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
local g1=Duel.SelectMatchingCard(tp,c86274272.spfilter1,tp,LOCATION_MZONE,0,1,1,nil,tp) local g1=g:FilterSelect(tp,c86274272.spfilter1,1,1,nil,tp,g)
local mc=g1:GetFirst()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
local g2=Duel.SelectMatchingCard(tp,c86274272.spfilter2,tp,LOCATION_MZONE,0,1,1,g1:GetFirst()) local g2=g:FilterSelect(tp,c86274272.spfilter2,1,1,mc,tp,mc)
g1:Merge(g2) g1:Merge(g2)
c:SetMaterial(g1) c:SetMaterial(g1)
Duel.Remove(g1,POS_FACEUP,REASON_COST) Duel.Remove(g1,POS_FACEUP,REASON_COST)
......
...@@ -46,29 +46,35 @@ end ...@@ -46,29 +46,35 @@ end
function c90957527.splimit(e,se,sp,st) function c90957527.splimit(e,se,sp,st)
return e:GetHandler():GetLocation()~=LOCATION_EXTRA return e:GetHandler():GetLocation()~=LOCATION_EXTRA
end end
function c90957527.spfilter1(c,tp) function c90957527.cfilter(c)
return c:IsFusionCode(79580323) and c:IsAbleToDeckOrExtraAsCost() and c:IsCanBeFusionMaterial() return (c:IsFusionCode(79580323) or c:IsFusionSetCard(0x19) and c:IsType(TYPE_MONSTER))
and Duel.IsExistingMatchingCard(c90957527.spfilter2,tp,LOCATION_MZONE,0,1,c) and c:IsCanBeFusionMaterial() and c:IsAbleToDeckOrExtraAsCost()
end end
function c90957527.spfilter2(c) function c90957527.spfilter1(c,tp,g)
return c:IsFusionSetCard(0x19) and c:IsCanBeFusionMaterial() and c:IsAbleToDeckOrExtraAsCost() return g:IsExists(c90957527.spfilter2,1,c,tp,c)
end
function c90957527.spfilter2(c,tp,mc)
return (c:IsFusionCode(79580323) and mc:IsFusionSetCard(0x19) and mc:IsType(TYPE_MONSTER)
or c:IsFusionSetCard(0x19) and c:IsType(TYPE_MONSTER) and mc:IsFusionCode(79580323))
and Duel.GetLocationCountFromEx(tp,tp,Group.FromCards(c,mc))>0
end end
function c90957527.sprcon(e,c) function c90957527.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()
return Duel.GetLocationCount(tp,LOCATION_MZONE)>-2 local g=Duel.GetMatchingGroup(c90957527.cfilter,tp,LOCATION_ONFIELD,0,nil)
and Duel.IsExistingMatchingCard(c90957527.spfilter1,tp,LOCATION_ONFIELD,0,1,nil,tp) return g:IsExists(c90957527.spfilter1,1,nil,tp,g)
end end
function c90957527.sprop(e,tp,eg,ep,ev,re,r,rp,c) function c90957527.sprop(e,tp,eg,ep,ev,re,r,rp,c)
Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(90957527,2)) local g=Duel.GetMatchingGroup(c90957527.cfilter,tp,LOCATION_ONFIELD,0,nil)
local g1=Duel.SelectMatchingCard(tp,c90957527.spfilter1,tp,LOCATION_ONFIELD,0,1,1,nil,tp) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK)
Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(90957527,3)) local g1=g:FilterSelect(tp,c90957527.spfilter1,1,1,nil,tp,g)
local g2=Duel.SelectMatchingCard(tp,c90957527.spfilter2,tp,LOCATION_MZONE,0,1,1,g1:GetFirst()) local mc=g1:GetFirst()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TODECK)
local g2=g:FilterSelect(tp,c90957527.spfilter2,1,1,mc,tp,mc)
g1:Merge(g2) g1:Merge(g2)
local tc=g1:GetFirst() local cg=g1:Filter(Card.IsFacedown,nil)
while tc do if cg:GetCount()>0 then
if not tc:IsFaceup() then Duel.ConfirmCards(1-tp,tc) end Duel.ConfirmCards(1-tp,cg)
tc=g1:GetNext()
end end
Duel.SendtoDeck(g1,nil,2,REASON_COST) Duel.SendtoDeck(g1,nil,2,REASON_COST)
end end
......
...@@ -34,53 +34,46 @@ end ...@@ -34,53 +34,46 @@ end
function c91998119.splimit(e,se,sp,st) function c91998119.splimit(e,se,sp,st)
return not e:GetHandler():IsLocation(LOCATION_EXTRA+LOCATION_GRAVE) return not e:GetHandler():IsLocation(LOCATION_EXTRA+LOCATION_GRAVE)
end end
function c91998119.spfilter(c,code) function c91998119.cfilter(c)
return c:IsFusionCode(code) and c:IsAbleToRemoveAsCost() return c:IsFusionCode(62651957,65622692,64500000) and c:IsAbleToRemoveAsCost() and c:IsCanBeFusionMaterial()
end
function c91998119.fcheck(c,sg,g,code,...)
if not c:IsFusionCode(code) then return false end
if ... then
g:AddCard(c)
local res=sg:IsExists(c91998119.fcheck,1,g,sg,g,...)
g:RemoveCard(c)
return res
else return true end
end
function c91998119.fselect(c,tp,mg,sg,...)
sg:AddCard(c)
local res=false
if sg:GetCount()<3 then
res=mg:IsExists(c91998119.fselect,1,sg,tp,mg,sg,...)
elseif Duel.GetLocationCountFromEx(tp,tp,sg)>0 then
local g=Group.CreateGroup()
res=sg:IsExists(c91998119.fcheck,1,nil,sg,g,...)
end
sg:RemoveCard(c)
return res
end end
function c91998119.spcon(e,c) function c91998119.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 mg=Duel.GetMatchingGroup(c91998119.cfilter,tp,LOCATION_ONFIELD,0,nil)
if ft<-2 then return false end local sg=Group.CreateGroup()
local g1=Duel.GetMatchingGroup(c91998119.spfilter,tp,LOCATION_ONFIELD,0,nil,62651957) return mg:IsExists(c91998119.fselect,1,nil,tp,mg,sg,62651957,65622692,64500000)
local g2=Duel.GetMatchingGroup(c91998119.spfilter,tp,LOCATION_ONFIELD,0,nil,65622692)
local g3=Duel.GetMatchingGroup(c91998119.spfilter,tp,LOCATION_ONFIELD,0,nil,64500000)
if g1:GetCount()==0 or g2:GetCount()==0 or g3:GetCount()==0 then return false end
if ft>0 then return true end
local f1=g1:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)>0 and 1 or 0
local f2=g2:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)>0 and 1 or 0
local f3=g3:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)>0 and 1 or 0
if ft==-2 then return f1+f2+f3==3
elseif ft==-1 then return f1+f2+f3>=2
else return f1+f2+f3>=1 end
end end
function c91998119.spop(e,tp,eg,ep,ev,re,r,rp,c) function c91998119.spop(e,tp,eg,ep,ev,re,r,rp,c)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local mg=Duel.GetMatchingGroup(c91998119.cfilter,tp,LOCATION_ONFIELD,0,nil)
local g1=Duel.GetMatchingGroup(c91998119.spfilter,tp,LOCATION_ONFIELD,0,nil,62651957) local sg=Group.CreateGroup()
local g2=Duel.GetMatchingGroup(c91998119.spfilter,tp,LOCATION_ONFIELD,0,nil,65622692) while sg:GetCount()<3 do
local g3=Duel.GetMatchingGroup(c91998119.spfilter,tp,LOCATION_ONFIELD,0,nil,64500000)
g1:Merge(g2)
g1:Merge(g3)
local g=Group.CreateGroup()
local tc=nil
for i=1,3 do
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
if ft<=0 then local g=mg:FilterSelect(tp,c91998119.fselect,1,1,sg,tp,mg,sg,62651957,65622692,64500000)
tc=g1:FilterSelect(tp,Card.IsLocation,1,1,nil,LOCATION_MZONE):GetFirst() sg:Merge(g)
else
tc=g1:Select(tp,1,1,nil):GetFirst()
end
g:AddCard(tc)
if tc:IsFusionCode(62651957) then
g1:Remove(Card.IsFusionCode,nil,62651957)
elseif tc:IsFusionCode(65622692) then
g1:Remove(Card.IsFusionCode,nil,65622692)
elseif tc:IsFusionCode(64500000) then
g1:Remove(Card.IsFusionCode,nil,64500000)
end
ft=ft+1
end end
Duel.Remove(g,POS_FACEUP,REASON_COST) Duel.Remove(sg,POS_FACEUP,REASON_COST)
end end
function c91998119.descost(e,tp,eg,ep,ev,re,r,rp,chk) function c91998119.descost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end
......
...@@ -34,53 +34,32 @@ end ...@@ -34,53 +34,32 @@ end
function c99724761.splimit(e,se,sp,st) function c99724761.splimit(e,se,sp,st)
return not e:GetHandler():IsLocation(LOCATION_EXTRA+LOCATION_GRAVE) return not e:GetHandler():IsLocation(LOCATION_EXTRA+LOCATION_GRAVE)
end end
function c99724761.spfilter(c,code) function c99724761.matfilter(c)
return c:IsFusionCode(code) and c:IsAbleToRemoveAsCost() return c:IsFusionCode(62651957,64500000) and c:IsAbleToRemoveAsCost()
end
function c99724761.spfilter1(c,tp,g)
return g:IsExists(c99724761.spfilter2,1,c,tp,c)
end
function c99724761.spfilter2(c,tp,mc)
return (c:IsFusionCode(62651957) and mc:IsFusionCode(64500000)
or c:IsFusionCode(64500000) and mc:IsFusionCode(62651957))
and Duel.GetLocationCountFromEx(tp,tp,Group.FromCards(c,mc))>0
end end
function c99724761.spcon(e,c) function c99724761.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(c99724761.matfilter,tp,LOCATION_ONFIELD,0,nil)
if ft<-1 then return false end return g:IsExists(c99724761.spfilter1,1,nil,tp,g)
local g1=Duel.GetMatchingGroup(c99724761.spfilter,tp,LOCATION_ONFIELD,0,nil,62651957)
local g2=Duel.GetMatchingGroup(c99724761.spfilter,tp,LOCATION_ONFIELD,0,nil,64500000)
if g1:GetCount()==0 or g2:GetCount()==0 then return false end
if g1:GetCount()==1 and g2:GetCount()==1 and g1:GetFirst()==g2:GetFirst() then return false end
if ft>0 then return true end
local f1=g1:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)
local f2=g2:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)
if ft==-1 then return f1>0 and f2>0
else return f1>0 or f2>0 end
end end
function c99724761.spop(e,tp,eg,ep,ev,re,r,rp,c) function c99724761.spop(e,tp,eg,ep,ev,re,r,rp,c)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE) local g=Duel.GetMatchingGroup(c99724761.matfilter,tp,LOCATION_ONFIELD,0,nil)
local g1=Duel.GetMatchingGroup(c99724761.spfilter,tp,LOCATION_ONFIELD,0,nil,62651957) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
local g2=Duel.GetMatchingGroup(c99724761.spfilter,tp,LOCATION_ONFIELD,0,nil,64500000) local g1=g:FilterSelect(tp,c99724761.spfilter1,1,1,nil,tp,g)
local mc=g1:GetFirst()
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
local g2=g:FilterSelect(tp,c99724761.spfilter2,1,1,mc,tp,mc)
g1:Merge(g2) g1:Merge(g2)
local g=Group.CreateGroup() Duel.Remove(g1,POS_FACEUP,REASON_COST)
local tc=nil
for i=1,2 do
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_REMOVE)
if ft<=0 then
tc=g1:FilterSelect(tp,Card.IsLocation,1,1,nil,LOCATION_MZONE):GetFirst()
ft=ft+1
else
tc=g1:Select(tp,1,1,nil):GetFirst()
end
g:AddCard(tc)
if i==1 then
g1:Clear()
if tc:IsFusionCode(64500000) then
local sg=Duel.GetMatchingGroup(c99724761.spfilter,tp,LOCATION_ONFIELD,0,tc,62651957)
g1:Merge(sg)
end
if tc:IsFusionCode(62651957) then
local sg=Duel.GetMatchingGroup(c99724761.spfilter,tp,LOCATION_ONFIELD,0,tc,64500000)
g1:Merge(sg)
end
end
end
Duel.Remove(g,POS_FACEUP,REASON_COST)
end end
function c99724761.descost(e,tp,eg,ep,ev,re,r,rp,chk) function c99724761.descost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,1,nil) end if chk==0 then return Duel.IsExistingMatchingCard(Card.IsDiscardable,tp,LOCATION_HAND,0,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