Commit d11e82a4 authored by VanillaSalt's avatar VanillaSalt

update

parent 356fb070
......@@ -70,7 +70,7 @@ function c10833828.spop1(e,tp,eg,ep,ev,re,r,rp)
Duel.SpecialSummonComplete()
end
function c10833828.spfilter2(c,e)
return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e)
return not c:IsImmuneToEffect(e)
end
function c10833828.spfilter3(c,e,tp,m,g,f,chkf)
return c:IsType(TYPE_FUSION) and c:IsRace(RACE_FIEND) and (not f or f(c))
......@@ -84,7 +84,7 @@ function c10833828.sptg2(e,tp,eg,ep,ev,re,r,rp,chk)
local g=e:GetHandler():GetCardTarget():Filter(Card.IsControler,nil,tp)
if g:GetCount()==0 then return false end
local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp
local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_HAND+LOCATION_MZONE,0,nil)
local mg1=Duel.GetFusionMaterial(tp)
local res=Duel.IsExistingMatchingCard(c10833828.spfilter3,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,g,nil,chkf)
if not res then
local ce=Duel.GetChainMaterial(tp)
......@@ -107,7 +107,7 @@ function c10833828.spop2(e,tp,eg,ep,ev,re,r,rp)
g:Remove(Card.IsImmuneToEffect,nil,e)
if g:GetCount()==0 then return false end
local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp
local mg1=Duel.GetMatchingGroup(c10833828.spfilter2,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e)
local mg1=Duel.GetFusionMaterial(tp):Filter(c10833828.spfilter2,nil,e)
local sg1=Duel.GetMatchingGroup(c10833828.spfilter3,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,g,nil,chkf)
local mg2=nil
local sg2=nil
......
......@@ -55,7 +55,7 @@ function c11493868.cost(e,tp,eg,ep,ev,re,r,rp,chk)
Duel.SendtoGrave(e:GetHandler(),REASON_COST)
end
function c11493868.filter1(c,e)
return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e)
return c:IsOnField() and not c:IsImmuneToEffect(e)
end
function c11493868.filter2(c,e,tp,m,f,chkf)
return c:IsType(TYPE_FUSION) and c:IsSetCard(0x9b) and (not f or f(c))
......@@ -64,7 +64,7 @@ end
function c11493868.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then
local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp
local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_MZONE,0,nil)
local mg1=Duel.GetFusionMaterial(tp):Filter(Card.IsOnField,nil)
local res=Duel.IsExistingMatchingCard(c11493868.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf)
if not res then
local ce=Duel.GetChainMaterial(tp)
......@@ -81,7 +81,7 @@ function c11493868.target(e,tp,eg,ep,ev,re,r,rp,chk)
end
function c11493868.activate(e,tp,eg,ep,ev,re,r,rp)
local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp
local mg1=Duel.GetMatchingGroup(c11493868.filter1,tp,LOCATION_MZONE,0,nil,e)
local mg1=Duel.GetFusionMaterial(tp):Filter(c11493868.filter1,nil,e)
local sg1=Duel.GetMatchingGroup(c11493868.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf)
local mg2=nil
local sg2=nil
......
......@@ -9,11 +9,8 @@ function c12071500.initial_effect(c)
e1:SetOperation(c12071500.activate)
c:RegisterEffect(e1)
end
function c12071500.filter0(c)
return c:IsCanBeFusionMaterial() and c:IsAbleToRemove()
end
function c12071500.filter1(c,e)
return c:IsCanBeFusionMaterial() and c:IsAbleToRemove() and not c:IsImmuneToEffect(e)
return c:IsAbleToRemove() and not c:IsImmuneToEffect(e)
end
function c12071500.filter2(c,e,tp,m,f,chkf)
return c:IsType(TYPE_FUSION) and c.dark_calling and (not f or f(c))
......@@ -22,7 +19,7 @@ end
function c12071500.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then
local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp
local mg1=Duel.GetMatchingGroup(c12071500.filter0,tp,LOCATION_HAND+LOCATION_GRAVE,0,nil)
local mg1=Duel.GetFusionMaterial(tp):Filter(Card.IsAbleToRemove,nil)
local res=Duel.IsExistingMatchingCard(c12071500.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf)
if not res then
local ce=Duel.GetChainMaterial(tp)
......@@ -39,7 +36,7 @@ function c12071500.target(e,tp,eg,ep,ev,re,r,rp,chk)
end
function c12071500.activate(e,tp,eg,ep,ev,re,r,rp)
local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp
local mg1=Duel.GetMatchingGroup(c12071500.filter1,tp,LOCATION_GRAVE+LOCATION_HAND,0,nil,e)
local mg1=Duel.GetFusionMaterial(tp):Filter(c12071500.filter1,nil,e)
local sg1=Duel.GetMatchingGroup(c12071500.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf)
local mg2=nil
local sg2=nil
......
......@@ -21,7 +21,7 @@ function c1264319.initial_effect(c)
c:RegisterEffect(e2)
end
function c1264319.filter1(c,e)
return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e)
return not c:IsImmuneToEffect(e)
end
function c1264319.filter2(c,e,tp,m,f,chkf)
return c:IsType(TYPE_FUSION) and c:IsSetCard(0x1047) and (not f or f(c))
......@@ -30,7 +30,7 @@ end
function c1264319.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then
local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp
local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_HAND+LOCATION_MZONE,0,nil)
local mg1=Duel.GetFusionMaterial(tp)
local res=Duel.IsExistingMatchingCard(c1264319.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf)
if not res then
local ce=Duel.GetChainMaterial(tp)
......@@ -47,7 +47,7 @@ function c1264319.target(e,tp,eg,ep,ev,re,r,rp,chk)
end
function c1264319.activate(e,tp,eg,ep,ev,re,r,rp)
local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp
local mg1=Duel.GetMatchingGroup(c1264319.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e)
local mg1=Duel.GetFusionMaterial(tp):Filter(c1264319.filter1,nil,e)
local sg1=Duel.GetMatchingGroup(c1264319.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf)
local mg2=nil
local sg2=nil
......
......@@ -11,7 +11,7 @@ function c17236839.initial_effect(c)
c:RegisterEffect(e1)
end
function c17236839.filter1(c,e)
return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e)
return c:IsOnField() and not c:IsImmuneToEffect(e)
end
function c17236839.filter2(c,e,tp,m,f,chkf)
return c:IsType(TYPE_FUSION) and (not f or f(c))
......@@ -20,7 +20,7 @@ end
function c17236839.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then
local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp
local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_MZONE,0,nil)
local mg1=Duel.GetFusionMaterial(tp):Filter(Card.IsOnField,nil)
local res=Duel.IsExistingMatchingCard(c17236839.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf)
if not res then
local ce=Duel.GetChainMaterial(tp)
......@@ -37,7 +37,7 @@ function c17236839.target(e,tp,eg,ep,ev,re,r,rp,chk)
end
function c17236839.activate(e,tp,eg,ep,ev,re,r,rp)
local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp
local mg1=Duel.GetMatchingGroup(c17236839.filter1,tp,LOCATION_MZONE,0,nil,e)
local mg1=Duel.GetFusionMaterial(tp):Filter(c17236839.filter1,nil,e)
local sg1=Duel.GetMatchingGroup(c17236839.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf)
local mg2=nil
local sg2=nil
......
......@@ -10,7 +10,7 @@ function c23299957.initial_effect(c)
c:RegisterEffect(e1)
end
function c23299957.filter1(c,e)
return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e)
return not c:IsImmuneToEffect(e)
end
function c23299957.filter2(c,e,tp,m,f,chkf)
return c:IsType(TYPE_FUSION) and c:IsSetCard(0x1016) and (not f or f(c))
......@@ -19,7 +19,7 @@ end
function c23299957.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then
local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp
local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_HAND+LOCATION_MZONE,0,nil)
local mg1=Duel.GetFusionMaterial(tp)
local res=Duel.IsExistingMatchingCard(c23299957.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf)
if not res then
local ce=Duel.GetChainMaterial(tp)
......@@ -36,7 +36,7 @@ function c23299957.target(e,tp,eg,ep,ev,re,r,rp,chk)
end
function c23299957.activate(e,tp,eg,ep,ev,re,r,rp)
local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp
local mg1=Duel.GetMatchingGroup(c23299957.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e)
local mg1=Duel.GetFusionMaterial(tp):Filter(c23299957.filter1,nil,e)
local sg1=Duel.GetMatchingGroup(c23299957.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf)
local mg2=nil
local sg2=nil
......
......@@ -10,7 +10,7 @@ function c24094653.initial_effect(c)
c:RegisterEffect(e1)
end
function c24094653.filter1(c,e)
return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e)
return not c:IsImmuneToEffect(e)
end
function c24094653.filter2(c,e,tp,m,f,chkf)
return c:IsType(TYPE_FUSION) and (not f or f(c))
......@@ -19,7 +19,7 @@ end
function c24094653.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then
local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp
local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_HAND+LOCATION_MZONE,0,nil)
local mg1=Duel.GetFusionMaterial(tp)
local res=Duel.IsExistingMatchingCard(c24094653.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf)
if not res then
local ce=Duel.GetChainMaterial(tp)
......@@ -36,7 +36,7 @@ function c24094653.target(e,tp,eg,ep,ev,re,r,rp,chk)
end
function c24094653.activate(e,tp,eg,ep,ev,re,r,rp)
local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp
local mg1=Duel.GetMatchingGroup(c24094653.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e)
local mg1=Duel.GetFusionMaterial(tp):Filter(c24094653.filter1,nil,e)
local sg1=Duel.GetMatchingGroup(c24094653.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf)
local mg2=nil
local sg2=nil
......
......@@ -10,7 +10,7 @@ function c26841274.initial_effect(c)
c:RegisterEffect(e1)
end
function c26841274.filter1(c,e)
return c:IsCanBeFusionMaterial() and c:IsSetCard(0xc008) and not c:IsImmuneToEffect(e)
return c:IsOnField() and c:IsSetCard(0xc008) and (not e or not c:IsImmuneToEffect(e))
end
function c26841274.filter2(c,e,tp,m,f,chkf)
return c:IsType(TYPE_FUSION) and (not f or f(c))
......@@ -22,7 +22,7 @@ end
function c26841274.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then
local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp
local mg1=Duel.GetMatchingGroup(c26841274.filter3,tp,LOCATION_MZONE,0,nil)
local mg1=Duel.GetFusionMaterial(tp):Filter(c26841274.filter1,nil)
local res=Duel.IsExistingMatchingCard(c26841274.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf)
if not res then
local ce=Duel.GetChainMaterial(tp)
......@@ -39,7 +39,7 @@ function c26841274.target(e,tp,eg,ep,ev,re,r,rp,chk)
end
function c26841274.activate(e,tp,eg,ep,ev,re,r,rp)
local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp
local mg1=Duel.GetMatchingGroup(c26841274.filter1,tp,LOCATION_MZONE,0,nil,e)
local mg1=Duel.GetFusionMaterial(tp):Filter(c26841274.filter1,nil,e)
local sg1=Duel.GetMatchingGroup(c26841274.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf)
local mg2=nil
local sg2=nil
......
......@@ -2,13 +2,7 @@
function c28016193.initial_effect(c)
--fusion material
c:EnableReviveLimit()
local e0=Effect.CreateEffect(c)
e0:SetType(EFFECT_TYPE_SINGLE)
e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e0:SetCode(EFFECT_FUSION_MATERIAL)
e0:SetCondition(c28016193.fscon)
e0:SetOperation(c28016193.fsop)
c:RegisterEffect(e0)
aux.AddFusionProcFunRep(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0xe1),2,false)
--pierce
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD)
......@@ -35,63 +29,6 @@ function c28016193.initial_effect(c)
e3:SetOperation(c28016193.desop)
c:RegisterEffect(e3)
end
function c28016193.filter(c)
return c:IsFusionSetCard(0xe1) and not c:IsHasEffect(6205579)
end
function c28016193.fscon(e,g,gc,chkfnf)
if g==nil then return true end
local f=c28016193.filter
local cc=2
local chkf=bit.band(chkfnf,0xff)
local tp=e:GetHandlerPlayer()
local fg=Duel.GetMatchingGroup(Card.IsHasEffect,tp,LOCATION_MZONE,0,nil,77693536)
local fc=fg:GetFirst()
while fc do
g:Merge(fc:GetEquipGroup():Filter(Card.IsControler,nil,tp))
fc=fg:GetNext()
end
local mg=g:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler())
if gc then
if not gc:IsCanBeFusionMaterial(e:GetHandler()) then return false end
return f(gc) and mg:IsExists(f,cc-1,gc) end
local g1=mg:Filter(f,nil)
if chkf~=PLAYER_NONE then
return g1:FilterCount(Card.IsOnField,nil)~=0 and g1:GetCount()>=cc
else return g1:GetCount()>=cc end
end
function c28016193.fsop(e,tp,eg,ep,ev,re,r,rp,gc,chkfnf)
local f=c28016193.filter
local cc=2
local chkf=bit.band(chkfnf,0xff)
local fg=Duel.GetMatchingGroup(Card.IsHasEffect,tp,LOCATION_MZONE,0,nil,77693536)
local fc=fg:GetFirst()
while fc do
eg:Merge(fc:GetEquipGroup():Filter(Card.IsControler,nil,tp))
fc=fg:GetNext()
end
local g=eg:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler())
if gc then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
local g1=g:FilterSelect(tp,f,cc-1,cc-1,gc)
Duel.SetFusionMaterial(g1)
return
end
local sg=g:Filter(f,nil)
if chkf==PLAYER_NONE or sg:GetCount()==cc then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
local g1=sg:Select(tp,cc,cc,nil)
Duel.SetFusionMaterial(g1)
return
end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
local g1=sg:FilterSelect(tp,Auxiliary.FConditionCheckF,1,1,nil,chkf)
if cc>1 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
local g2=sg:Select(tp,cc-1,cc-1,g1:GetFirst())
g1:Merge(g2)
end
Duel.SetFusionMaterial(g1)
end
function c28016193.damcon(e,tp,eg,ep,ev,re,r,rp)
local tc=eg:GetFirst()
return ep~=tp and tc:IsSetCard(0xe1) and tc:GetBattleTarget()~=nil and tc:GetBattleTarget():IsDefensePos()
......
......@@ -16,11 +16,8 @@ function c33550694.initial_effect(c)
e2:SetOperation(c33550694.operation)
c:RegisterEffect(e2)
end
function c33550694.filter0(c)
return c:IsCanBeFusionMaterial() and c:IsAbleToRemove()
end
function c33550694.filter1(c,e)
return c:IsCanBeFusionMaterial() and c:IsAbleToRemove() and not c:IsImmuneToEffect(e)
return c:IsAbleToRemove() and not c:IsImmuneToEffect(e)
end
function c33550694.filter2(c,e,tp,m,f,chkf)
return c:IsType(TYPE_FUSION) and (not f or f(c))
......@@ -29,7 +26,7 @@ end
function c33550694.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then
local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp
local mg1=Duel.GetMatchingGroup(c33550694.filter0,tp,LOCATION_HAND+LOCATION_MZONE,0,nil)
local mg1=Duel.GetFusionMaterial(tp):Filter(Card.IsAbleToRemove,nil)
local res=Duel.IsExistingMatchingCard(c33550694.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf)
if not res then
local ce=Duel.GetChainMaterial(tp)
......@@ -47,7 +44,7 @@ end
function c33550694.operation(e,tp,eg,ep,ev,re,r,rp)
local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp
if not e:GetHandler():IsRelateToEffect(e) then return end
local mg1=Duel.GetMatchingGroup(c33550694.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e)
local mg1=Duel.GetFusionMaterial(tp):Filter(c33550694.filter1,nil,e)
local sg1=Duel.GetMatchingGroup(c33550694.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf)
local mg2=nil
local sg2=nil
......
......@@ -24,7 +24,7 @@ function c34325937.initial_effect(c)
c:RegisterEffect(e2)
end
function c34325937.filter1(c,e)
return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e)
return not c:IsImmuneToEffect(e)
end
function c34325937.filter2(c,e,tp,m,f,chkf)
return c:IsType(TYPE_FUSION) and c:IsSetCard(0xe3) and (not f or f(c))
......@@ -33,7 +33,7 @@ end
function c34325937.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then
local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp
local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_HAND+LOCATION_MZONE,0,nil)
local mg1=Duel.GetFusionMaterial(tp)
local res=Duel.IsExistingMatchingCard(c34325937.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf)
if not res then
local ce=Duel.GetChainMaterial(tp)
......@@ -50,7 +50,7 @@ function c34325937.target(e,tp,eg,ep,ev,re,r,rp,chk)
end
function c34325937.activate(e,tp,eg,ep,ev,re,r,rp)
local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp
local mg1=Duel.GetMatchingGroup(c34325937.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e)
local mg1=Duel.GetFusionMaterial(tp):Filter(c34325937.filter1,nil,e)
local sg1=Duel.GetMatchingGroup(c34325937.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf)
local mg2=nil
local sg2=nil
......
......@@ -10,7 +10,7 @@ function c37630732.initial_effect(c)
c:RegisterEffect(e1)
end
function c37630732.filter1(c,e)
return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e)
return not c:IsImmuneToEffect(e)
end
function c37630732.filter2(c,e,tp,m,f,chkf)
return c:IsType(TYPE_FUSION) and c:IsRace(RACE_MACHINE) and (not f or f(c))
......@@ -19,7 +19,7 @@ end
function c37630732.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then
local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp
local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_HAND+LOCATION_MZONE,0,nil)
local mg1=Duel.GetFusionMaterial(tp)
local res=Duel.IsExistingMatchingCard(c37630732.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf)
if not res then
local ce=Duel.GetChainMaterial(tp)
......@@ -36,7 +36,7 @@ function c37630732.target(e,tp,eg,ep,ev,re,r,rp,chk)
end
function c37630732.activate(e,tp,eg,ep,ev,re,r,rp)
local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp
local mg1=Duel.GetMatchingGroup(c37630732.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e)
local mg1=Duel.GetFusionMaterial(tp):Filter(c37630732.filter1,nil,e)
local sg1=Duel.GetMatchingGroup(c37630732.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf)
local mg2=nil
local sg2=nil
......
......@@ -22,7 +22,7 @@ function c39261576.initial_effect(c)
c:RegisterEffect(e2)
end
function c39261576.filter1(c,e)
return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e)
return c:IsOnField() and not c:IsImmuneToEffect(e)
end
function c39261576.filter2(c,e,tp,m,f,chkf)
return c:IsType(TYPE_FUSION) and c:IsSetCard(0x1047) and (not f or f(c))
......@@ -31,7 +31,7 @@ end
function c39261576.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then
local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp
local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_MZONE,0,nil)
local mg1=Duel.GetFusionMaterial(tp):Filter(Card.IsOnField,nil)
local res=Duel.IsExistingMatchingCard(c39261576.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf)
if not res then
local ce=Duel.GetChainMaterial(tp)
......@@ -48,7 +48,7 @@ function c39261576.target(e,tp,eg,ep,ev,re,r,rp,chk)
end
function c39261576.activate(e,tp,eg,ep,ev,re,r,rp)
local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp
local mg1=Duel.GetMatchingGroup(c39261576.filter1,tp,LOCATION_MZONE,0,nil,e)
local mg1=Duel.GetFusionMaterial(tp):Filter(c39261576.filter1,nil,e)
local sg1=Duel.GetMatchingGroup(c39261576.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf)
local mg2=nil
local sg2=nil
......
......@@ -11,7 +11,7 @@ function c39564736.initial_effect(c)
c:RegisterEffect(e1)
end
function c39564736.filter1(c,e)
return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e)
return not c:IsImmuneToEffect(e)
end
function c39564736.filter2(c,e,tp,m,f,chkf)
return c:IsType(TYPE_FUSION) and c:IsSetCard(0xe1) and (not f or f(c))
......@@ -20,7 +20,7 @@ end
function c39564736.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then
local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp
local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_HAND+LOCATION_MZONE,0,nil)
local mg1=Duel.GetFusionMaterial(tp)
local res=Duel.IsExistingMatchingCard(c39564736.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf)
if not res then
local ce=Duel.GetChainMaterial(tp)
......@@ -37,7 +37,7 @@ function c39564736.target(e,tp,eg,ep,ev,re,r,rp,chk)
end
function c39564736.activate(e,tp,eg,ep,ev,re,r,rp)
local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp
local mg1=Duel.GetMatchingGroup(c39564736.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e)
local mg1=Duel.GetFusionMaterial(tp):Filter(c39564736.filter1,nil,e)
local sg1=Duel.GetMatchingGroup(c39564736.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf)
local mg2=nil
local sg2=nil
......
......@@ -23,7 +23,7 @@ function c42002073.initial_effect(c)
c:RegisterEffect(e6)
end
function c42002073.filter1(c,e)
return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e)
return c:IsOnField() and not c:IsImmuneToEffect(e)
end
function c42002073.filter2(c,e,tp,m,f,gc)
return c:IsType(TYPE_FUSION) and (not f or f(c))
......@@ -32,7 +32,7 @@ end
function c42002073.target(e,tp,eg,ep,ev,re,r,rp,chk)
local c=e:GetHandler()
if chk==0 then
local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_MZONE,0,c)
local mg1=Duel.GetFusionMaterial(tp):Filter(Card.IsOnField,c)
local res=Duel.IsExistingMatchingCard(c42002073.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,c)
if not res then
local ce=Duel.GetChainMaterial(tp)
......@@ -50,7 +50,7 @@ end
function c42002073.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if c:IsFacedown() or not c:IsRelateToEffect(e) or c:IsImmuneToEffect(e) then return end
local mg1=Duel.GetMatchingGroup(c42002073.filter1,tp,LOCATION_MZONE,0,c,e)
local mg1=Duel.GetFusionMaterial(tp):Filter(c42002073.filter1,c,e)
local sg1=Duel.GetMatchingGroup(c42002073.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,c)
local mg2=nil
local sg2=nil
......
......@@ -48,7 +48,7 @@ function c42878636.actcon(e)
return Duel.GetAttacker()==e:GetHandler()
end
function c42878636.spfilter1(c,e)
return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e)
return not c:IsImmuneToEffect(e)
end
function c42878636.spfilter2(c,e,tp,m,f,chkf)
return c:IsType(TYPE_FUSION) and c:IsSetCard(0x7) and (not f or f(c))
......@@ -57,7 +57,7 @@ end
function c42878636.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then
local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp
local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_HAND+LOCATION_MZONE,0,nil)
local mg1=Duel.GetFusionMaterial(tp)
local res=Duel.IsExistingMatchingCard(c42878636.spfilter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf)
if not res then
local ce=Duel.GetChainMaterial(tp)
......@@ -74,7 +74,7 @@ function c42878636.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
end
function c42878636.spop(e,tp,eg,ep,ev,re,r,rp)
local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp
local mg1=Duel.GetMatchingGroup(c42878636.spfilter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e)
local mg1=Duel.GetFusionMaterial(tp):Filter(c42878636.spfilter1,nil,e)
local sg1=Duel.GetMatchingGroup(c42878636.spfilter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf)
local mg2=nil
local sg2=nil
......
......@@ -36,7 +36,7 @@ function c43698897.spcost(e,tp,eg,ep,ev,re,r,rp,chk)
Duel.Remove(g,POS_FACEUP,REASON_COST)
end
function c43698897.filter1(c,e)
return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e)
return not c:IsImmuneToEffect(e)
end
function c43698897.filter2(c,e,tp,m,f,chkf)
return c:IsType(TYPE_FUSION) and c:IsSetCard(0xad) and (not f or f(c))
......@@ -45,7 +45,7 @@ end
function c43698897.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then
local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp
local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_HAND+LOCATION_MZONE,0,nil)
local mg1=Duel.GetFusionMaterial(tp)
local res=Duel.IsExistingMatchingCard(c43698897.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf)
if not res then
local ce=Duel.GetChainMaterial(tp)
......@@ -63,7 +63,7 @@ end
function c43698897.spop(e,tp,eg,ep,ev,re,r,rp)
if not e:GetHandler():IsRelateToEffect(e) then return end
local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp
local mg1=Duel.GetMatchingGroup(c43698897.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e)
local mg1=Duel.GetFusionMaterial(tp):Filter(c43698897.filter1,nil,e)
local sg1=Duel.GetMatchingGroup(c43698897.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf)
local mg2=nil
local sg2=nil
......
......@@ -23,7 +23,7 @@ function c44771289.initial_effect(c)
c:RegisterEffect(e2)
end
function c44771289.filter1(c,e)
return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e)
return not c:IsImmuneToEffect(e)
end
function c44771289.filter2(c,e,tp,m,f,chkf)
return c:IsType(TYPE_FUSION) and c:IsSetCard(0xb1) and (not f or f(c))
......@@ -32,7 +32,7 @@ end
function c44771289.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then
local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp
local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_HAND+LOCATION_MZONE,0,nil)
local mg1=Duel.GetFusionMaterial(tp)
local res=Duel.IsExistingMatchingCard(c44771289.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf)
if not res then
local ce=Duel.GetChainMaterial(tp)
......@@ -49,7 +49,7 @@ function c44771289.target(e,tp,eg,ep,ev,re,r,rp,chk)
end
function c44771289.activate(e,tp,eg,ep,ev,re,r,rp)
local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp
local mg1=Duel.GetMatchingGroup(c44771289.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e)
local mg1=Duel.GetFusionMaterial(tp):Filter(c44771289.filter1,nil,e)
local sg1=Duel.GetMatchingGroup(c44771289.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf)
local mg2=nil
local sg2=nil
......
......@@ -2,13 +2,7 @@
function c4688231.initial_effect(c)
--fusion material
c:EnableReviveLimit()
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e1:SetCode(EFFECT_FUSION_MATERIAL)
e1:SetCondition(c4688231.fscon)
e1:SetOperation(c4688231.fsop)
c:RegisterEffect(e1)
aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0xe1),aux.FilterBoolFunction(Card.IsFusionType,TYPE_PENDULUM),true)
--return
local e2=Effect.CreateEffect(c)
e2:SetCategory(CATEGORY_TODECK+CATEGORY_TOHAND)
......@@ -30,77 +24,6 @@ function c4688231.initial_effect(c)
e3:SetOperation(c4688231.spop)
c:RegisterEffect(e3)
end
function c4688231.filter1(c)
return c:IsFusionSetCard(0xe1) and not c:IsHasEffect(6205579)
end
function c4688231.filter2(c)
return c:IsFusionType(TYPE_PENDULUM) and not c:IsHasEffect(6205579)
end
function c4688231.fscon(e,g,gc,chkfnf)
if g==nil then return true end
local f1=c4688231.filter1
local f2=c4688231.filter2
local chkf=bit.band(chkfnf,0xff)
local tp=e:GetHandlerPlayer()
local fg=Duel.GetMatchingGroup(Card.IsHasEffect,tp,LOCATION_MZONE,0,nil,77693536)
local fc=fg:GetFirst()
while fc do
g:Merge(fc:GetEquipGroup():Filter(Card.IsControler,nil,tp))
fc=fg:GetNext()
end
local mg=g:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler())
if gc then
if not gc:IsCanBeFusionMaterial(e:GetHandler()) then return false end
return (f1(gc) and mg:IsExists(f2,1,gc))
or (f2(gc) and mg:IsExists(f1,1,gc)) end
local g1=Group.CreateGroup() local g2=Group.CreateGroup() local fs=false
local tc=mg:GetFirst()
while tc do
if f1(tc) then g1:AddCard(tc) if aux.FConditionCheckF(tc,chkf) then fs=true end end
if f2(tc) then g2:AddCard(tc) if aux.FConditionCheckF(tc,chkf) then fs=true end end
tc=mg:GetNext()
end
if chkf~=PLAYER_NONE then
return fs and g1:IsExists(aux.FConditionFilterF2,1,nil,g2)
else return g1:IsExists(aux.FConditionFilterF2,1,nil,g2) end
end
function c4688231.fsop(e,tp,eg,ep,ev,re,r,rp,gc,chkfnf)
local f1=c4688231.filter1
local f2=c4688231.filter2
local chkf=bit.band(chkfnf,0xff)
local fg=Duel.GetMatchingGroup(Card.IsHasEffect,tp,LOCATION_MZONE,0,nil,77693536)
local fc=fg:GetFirst()
while fc do
eg:Merge(fc:GetEquipGroup():Filter(Card.IsControler,nil,tp))
fc=fg:GetNext()
end
local g=eg:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler())
if gc then
local sg=Group.CreateGroup()
if f1(gc) then sg:Merge(g:Filter(f2,gc)) end
if f2(gc) then sg:Merge(g:Filter(f1,gc)) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
local g1=sg:Select(tp,1,1,nil)
Duel.SetFusionMaterial(g1)
return
end
local sg=g:Filter(aux.FConditionFilterF2c,nil,f1,f2)
local g1=nil
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
if chkf~=PLAYER_NONE then
g1=sg:FilterSelect(tp,aux.FConditionCheckF,1,1,nil,chkf)
else g1=sg:Select(tp,1,1,nil) end
local tc1=g1:GetFirst()
sg:RemoveCard(tc1)
local b1=f1(tc1)
local b2=f2(tc1)
if b1 and not b2 then sg:Remove(aux.FConditionFilterF2r,nil,f1,f2) end
if b2 and not b1 then sg:Remove(aux.FConditionFilterF2r,nil,f2,f1) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
local g2=sg:Select(tp,1,1,nil)
g1:Merge(g2)
Duel.SetFusionMaterial(g1)
end
function c4688231.retfilter1(c)
return c:IsSetCard(0xe1) and c:IsAbleToDeck()
end
......
......@@ -10,11 +10,8 @@ function c48144509.initial_effect(c)
e1:SetOperation(c48144509.activate)
c:RegisterEffect(e1)
end
function c48144509.filter0(c)
return c:IsCanBeFusionMaterial() and c:IsAbleToGrave()
end
function c48144509.filter1(c,e)
return c:IsCanBeFusionMaterial() and c:IsAbleToGrave() and not c:IsImmuneToEffect(e)
return c:IsAbleToGrave() and not c:IsImmuneToEffect(e)
end
function c48144509.exfilter0(c)
return c:IsSetCard(0x99) and c:IsCanBeFusionMaterial() and c:IsAbleToGrave()
......@@ -40,7 +37,7 @@ end
function c48144509.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then
local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp
local mg1=Duel.GetMatchingGroup(c48144509.filter0,tp,LOCATION_HAND+LOCATION_MZONE,0,nil)
local mg1=Duel.GetFusionMaterial(tp):Filter(Card.IsAbleToGrave,nil)
if Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>1 then
local sg=Duel.GetMatchingGroup(c48144509.exfilter0,tp,LOCATION_EXTRA,0,nil)
mg1:Merge(sg)
......@@ -61,7 +58,7 @@ function c48144509.target(e,tp,eg,ep,ev,re,r,rp,chk)
end
function c48144509.activate(e,tp,eg,ep,ev,re,r,rp)
local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp
local mg1=Duel.GetMatchingGroup(c48144509.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e)
local mg1=Duel.GetFusionMaterial(tp):Filter(c48144509.filter1,nil,e)
if Duel.GetFieldGroupCount(tp,LOCATION_MZONE,0)==0 and Duel.GetFieldGroupCount(tp,0,LOCATION_MZONE)>1 then
local sg=Duel.GetMatchingGroup(c48144509.exfilter1,tp,LOCATION_EXTRA,0,nil,e)
mg1:Merge(sg)
......
......@@ -51,20 +51,24 @@ function c48424886.exfilter(c,g)
end
function c48424886.fuscon(e,g,gc,chkf)
if g==nil then return true end
local mg=g:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler())
local tp=e:GetHandlerPlayer()
local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5)
local exg=Group.CreateGroup()
if fc and fc:IsHasEffect(81788994) and fc:IsCanRemoveCounter(tp,0x16,3,REASON_EFFECT) then
local sg=Duel.GetMatchingGroup(c48424886.exfilter,tp,0,LOCATION_MZONE,nil,g)
local sg=Duel.GetMatchingGroup(c48424886.exfilter,tp,0,LOCATION_MZONE,nil,mg)
exg:Merge(sg)
end
if gc then return (c48424886.ffilter1(gc) and (g:IsExists(c48424886.ffilter2,1,gc) or exg:IsExists(c48424886.ffilter2,1,gc)))
or (c48424886.ffilter2(gc) and (g:IsExists(c48424886.ffilter1,1,gc) or exg:IsExists(c48424886.ffilter1,1,gc))) end
if gc then
if not gc:IsCanBeFusionMaterial(e:GetHandler()) then return false end
return (c48424886.ffilter1(gc) and (mg:IsExists(c48424886.ffilter2,1,gc) or exg:IsExists(c48424886.ffilter2,1,gc)))
or (c48424886.ffilter2(gc) and (mg:IsExists(c48424886.ffilter1,1,gc) or exg:IsExists(c48424886.ffilter1,1,gc)))
end
local g1=Group.CreateGroup()
local g2=Group.CreateGroup()
local g3=Group.CreateGroup()
local g4=Group.CreateGroup()
local tc=g:GetFirst()
local tc=mg:GetFirst()
while tc do
if c48424886.ffilter1(tc) then
g1:AddCard(tc)
......@@ -74,7 +78,7 @@ function c48424886.fuscon(e,g,gc,chkf)
g2:AddCard(tc)
if aux.FConditionCheckF(tc,chkf) then g4:AddCard(tc) end
end
tc=g:GetNext()
tc=mg:GetNext()
end
local exg1=exg:Filter(c48424886.ffilter1,nil)
local exg2=exg:Filter(c48424886.ffilter2,nil)
......@@ -90,21 +94,22 @@ function c48424886.fuscon(e,g,gc,chkf)
end
end
function c48424886.fusop(e,tp,eg,ep,ev,re,r,rp,gc,chkf)
local g=eg:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler())
local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5)
local exg=Group.CreateGroup()
if fc and fc:IsHasEffect(81788994) and fc:IsCanRemoveCounter(tp,0x16,3,REASON_EFFECT) then
local sg=Duel.GetMatchingGroup(c48424886.exfilter,tp,0,LOCATION_MZONE,nil,eg)
local sg=Duel.GetMatchingGroup(c48424886.exfilter,tp,0,LOCATION_MZONE,nil,g)
exg:Merge(sg)
end
if gc then
local sg1=Group.CreateGroup()
local sg2=Group.CreateGroup()
if c48424886.ffilter1(gc) then
sg1:Merge(eg:Filter(c48424886.ffilter2,gc))
sg1:Merge(g:Filter(c48424886.ffilter2,gc))
sg2:Merge(exg:Filter(c48424886.ffilter2,gc))
end
if c48424886.ffilter2(gc) then
sg1:Merge(eg:Filter(c48424886.ffilter1,gc))
sg1:Merge(g:Filter(c48424886.ffilter1,gc))
sg2:Merge(exg:Filter(c48424886.ffilter1,gc))
end
local g1=nil
......@@ -119,7 +124,7 @@ function c48424886.fusop(e,tp,eg,ep,ev,re,r,rp,gc,chkf)
Duel.SetFusionMaterial(g1)
return
end
local sg=eg:Filter(aux.FConditionFilterF2c,nil,c48424886.ffilter1,c48424886.ffilter2)
local sg=g:Filter(aux.FConditionFilterF2c,nil,c48424886.ffilter1,c48424886.ffilter2)
local g1=nil
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
if chkf~=PLAYER_NONE then
......
......@@ -57,7 +57,7 @@ function c51858200.spcost(e,tp,eg,ep,ev,re,r,rp,chk)
Duel.Remove(e:GetHandler(),POS_FACEUP,REASON_COST)
end
function c51858200.spfilter1(c,e)
return c:IsCanBeFusionMaterial() and c:IsSetCard(0x10f3) and not c:IsImmuneToEffect(e)
return c:IsSetCard(0x10f3) and not c:IsImmuneToEffect(e)
end
function c51858200.spfilter2(c,e,tp,m,f,chkf)
return c:IsType(TYPE_FUSION) and (not f or f(c))
......@@ -69,7 +69,7 @@ end
function c51858200.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then
local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp
local mg1=Duel.GetMatchingGroup(c51858200.spfilter3,tp,LOCATION_HAND+LOCATION_MZONE,0,nil)
local mg1=Duel.GetFusionMaterial(tp):Filter(Card.IsSetCard,nil,0x10f3)
local res=Duel.IsExistingMatchingCard(c51858200.spfilter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf)
if not res then
local ce=Duel.GetChainMaterial(tp)
......@@ -86,7 +86,7 @@ function c51858200.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
end
function c51858200.spop(e,tp,eg,ep,ev,re,r,rp)
local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp
local mg1=Duel.GetMatchingGroup(c51858200.spfilter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e)
local mg1=Duel.GetFusionMaterial(tp):Filter(c51858200.spfilter1,nil,e)
local sg1=Duel.GetMatchingGroup(c51858200.spfilter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf)
local mg2=nil
local sg2=nil
......
......@@ -47,7 +47,7 @@ function c52963531.spop(e,tp,eg,ep,ev,re,r,rp)
end
end
function c52963531.filter1(c,e)
return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e)
return c:IsOnField() and not c:IsImmuneToEffect(e)
end
function c52963531.filter2(c,e,tp,m,f,chkf)
return c:IsType(TYPE_FUSION) and c:IsRace(RACE_DRAGON) and (not f or f(c))
......@@ -56,7 +56,7 @@ end
function c52963531.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then
local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp
local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_MZONE,0,nil)
local mg1=Duel.GetFusionMaterial(tp):Filter(Card.IsOnField,nil)
local res=Duel.IsExistingMatchingCard(c52963531.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf)
if not res then
local ce=Duel.GetChainMaterial(tp)
......@@ -73,7 +73,7 @@ function c52963531.target(e,tp,eg,ep,ev,re,r,rp,chk)
end
function c52963531.operation(e,tp,eg,ep,ev,re,r,rp)
local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp
local mg1=Duel.GetMatchingGroup(c52963531.filter1,tp,LOCATION_MZONE,0,nil,e)
local mg1=Duel.GetFusionMaterial(tp):Filter(c52963531.filter1,nil,e)
local sg1=Duel.GetMatchingGroup(c52963531.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf)
local mg2=nil
local sg2=nil
......
......@@ -2,152 +2,5 @@
function c54401832.initial_effect(c)
--fusion material
c:EnableReviveLimit()
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e1:SetCode(EFFECT_FUSION_MATERIAL)
e1:SetCondition(c54401832.fscon)
e1:SetOperation(c54401832.fsop)
c:RegisterEffect(e1)
end
function c54401832.filter1(c)
return c:IsFusionSetCard(0xe1) and not c:IsHasEffect(6205579)
end
function c54401832.filter2(c)
return c:IsAttackBelow(3000) and not c:IsHasEffect(6205579)
end
function c54401832.fscon(e,g,gc,chkfnf)
if g==nil then return true end
local f1=c54401832.filter1
local f2=c54401832.filter2
local minc=2
local chkf=bit.band(chkfnf,0xff)
local tp=e:GetHandlerPlayer()
local fg=Duel.GetMatchingGroup(Card.IsHasEffect,tp,LOCATION_MZONE,0,nil,77693536)
local fc=fg:GetFirst()
while fc do
g:Merge(fc:GetEquipGroup():Filter(Card.IsControler,nil,tp))
fc=fg:GetNext()
end
local mg=g:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler())
if gc then
if not gc:IsCanBeFusionMaterial(e:GetHandler()) then return false end
if aux.FConditionFilterFFR(gc,f1,f2,mg,minc,chkf) then
return true
elseif f2(gc) then
mg:RemoveCard(gc)
if aux.FConditionCheckF(gc,chkf) then chkf=PLAYER_NONE end
return mg:IsExists(aux.FConditionFilterFFR,1,nil,f1,f2,mg,minc-1,chkf)
else return false end
end
return mg:IsExists(aux.FConditionFilterFFR,1,nil,f1,f2,mg,minc,chkf)
end
function c54401832.fsop(e,tp,eg,ep,ev,re,r,rp,gc,chkfnf)
local f1=c54401832.filter1
local f2=c54401832.filter2
local chkf=bit.band(chkfnf,0xff)
local fg=Duel.GetMatchingGroup(Card.IsHasEffect,tp,LOCATION_MZONE,0,nil,77693536)
local fc=fg:GetFirst()
while fc do
eg:Merge(fc:GetEquipGroup():Filter(Card.IsControler,nil,tp))
fc=fg:GetNext()
end
local g=eg:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler())
local minct=2
local maxct=2
if gc then
g:RemoveCard(gc)
if aux.FConditionFilterFFR(gc,f1,f2,g,minct,chkf) then
if aux.FConditionCheckF(gc,chkf) then chkf=PLAYER_NONE end
local g1=Group.CreateGroup()
if f2(gc) then
local mg1=g:Filter(aux.FConditionFilterFFR,nil,f1,f2,g,minct-1,chkf)
if mg1:GetCount()>0 then
--if gc fits both, should allow an extra material that fits f1 but doesn't fit f2
local mg2=g:Filter(f2,nil)
mg1:Merge(mg2)
if chkf~=PLAYER_NONE then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
local sg=mg1:FilterSelect(tp,aux.FConditionCheckF,1,1,nil,chkf)
g1:Merge(sg)
mg1:Sub(sg)
minct=minct-1
maxct=maxct-1
if not f2(sg:GetFirst()) then
if mg1:GetCount()>0 and maxct>0 and (minct>0 or Duel.SelectYesNo(tp,93)) then
if minct<=0 then minct=1 end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
local sg=mg1:FilterSelect(tp,f2,minct,maxct,nil)
g1:Merge(sg)
end
Duel.SetFusionMaterial(g1)
return
end
end
if maxct>1 and (minct>1 or Duel.SelectYesNo(tp,93)) then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
local sg=mg1:FilterSelect(tp,f2,minct-1,maxct-1,nil)
g1:Merge(sg)
mg1:Sub(sg)
local ct=sg:GetCount()
minct=minct-ct
maxct=maxct-ct
end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
local sg=mg1:Select(tp,1,1,nil)
g1:Merge(sg)
mg1:Sub(sg)
minct=minct-1
maxct=maxct-1
if mg1:GetCount()>0 and maxct>0 and (minct>0 or Duel.SelectYesNo(tp,93)) then
if minct<=0 then minct=1 end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
local sg=mg1:FilterSelect(tp,f2,minct,maxct,nil)
g1:Merge(sg)
end
Duel.SetFusionMaterial(g1)
return
end
end
local mg=g:Filter(f2,nil)
if chkf~=PLAYER_NONE then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
local sg=mg:FilterSelect(tp,aux.FConditionCheckF,1,1,nil,chkf)
g1:Merge(sg)
mg:Sub(sg)
minct=minct-1
maxct=maxct-1
end
if mg:GetCount()>0 and maxct>0 and (minct>0 or Duel.SelectYesNo(tp,93)) then
if minct<=0 then minct=1 end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
local sg=mg:Select(tp,minct,maxct,nil)
g1:Merge(sg)
end
Duel.SetFusionMaterial(g1)
return
else
if aux.FConditionCheckF(gc,chkf) then chkf=PLAYER_NONE end
minct=minct-1
maxct=maxct-1
end
end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
local g1=g:FilterSelect(tp,aux.FConditionFilterFFR,1,1,nil,f1,f2,g,minct,chkf)
local mg=g:Filter(f2,g1:GetFirst())
if chkf~=PLAYER_NONE and not aux.FConditionCheckF(g1:GetFirst(),chkf) then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
local sg=mg:FilterSelect(tp,aux.FConditionCheckF,1,1,nil,chkf)
g1:Merge(sg)
mg:Sub(sg)
minct=minct-1
maxct=maxct-1
end
if mg:GetCount()>0 and maxct>0 and (minct>0 or Duel.SelectYesNo(tp,93)) then
if minct<=0 then minct=1 end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
local sg=mg:Select(tp,minct,maxct,nil)
g1:Merge(sg)
end
Duel.SetFusionMaterial(g1)
aux.AddFusionProcFunFunRep(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0xe1),aux.FilterBoolFunction(Card.IsAttackBelow,3000),2,2,true)
end
......@@ -10,7 +10,7 @@ function c55824220.initial_effect(c)
c:RegisterEffect(e1)
end
function c55824220.filter1(c,e)
return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e)
return not c:IsImmuneToEffect(e)
end
function c55824220.filter2(c,e,tp,m,f,chkf)
return c:IsType(TYPE_FUSION) and c:IsSetCard(0x1047) and (not f or f(c))
......@@ -19,7 +19,7 @@ end
function c55824220.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then
local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp
local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_HAND+LOCATION_MZONE,0,nil)
local mg1=Duel.GetFusionMaterial(tp)
local res=Duel.IsExistingMatchingCard(c55824220.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf)
if not res then
local ce=Duel.GetChainMaterial(tp)
......@@ -36,7 +36,7 @@ function c55824220.target(e,tp,eg,ep,ev,re,r,rp,chk)
end
function c55824220.activate(e,tp,eg,ep,ev,re,r,rp)
local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp
local mg1=Duel.GetMatchingGroup(c55824220.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e)
local mg1=Duel.GetFusionMaterial(tp):Filter(c55824220.filter1,nil,e)
local sg1=Duel.GetMatchingGroup(c55824220.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf)
local mg2=nil
local sg2=nil
......
......@@ -58,7 +58,7 @@ function c60226558.operation(e,tp,eg,ep,ev,re,r,rp)
end
end
function c60226558.filter1(c,e)
return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e)
return not c:IsImmuneToEffect(e)
end
function c60226558.filter2(c,e,tp,m,ec,f,chkf)
return c:IsType(TYPE_FUSION) and c:IsSetCard(0x9d) and (not f or f(c))
......@@ -69,7 +69,8 @@ function c60226558.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
local ec=e:GetHandler():GetEquipTarget()
if ec:IsControler(1-tp) then return false end
local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp
local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_HAND+LOCATION_MZONE,0,ec)
local mg1=Duel.GetFusionMaterial(tp)
mg1:RemoveCard(ec)
local res=Duel.IsExistingMatchingCard(c60226558.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,ec,nil,chkf)
if not res then
local ce=Duel.GetChainMaterial(tp)
......@@ -90,7 +91,7 @@ function c60226558.spop(e,tp,eg,ep,ev,re,r,rp)
local ec=c:GetEquipTarget()
if ec:IsControler(1-tp) or ec:IsImmuneToEffect(e) then return end
local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp
local mg1=Duel.GetMatchingGroup(c60226558.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,ec,e)
local mg1=Duel.GetFusionMaterial(tp):Filter(c60226558.filter1,ec,e)
local sg1=Duel.GetMatchingGroup(c60226558.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,ec,nil,chkf)
local mg2=nil
local sg2=nil
......
......@@ -21,7 +21,7 @@ function c73594093.initial_effect(c)
c:RegisterEffect(e2)
end
function c73594093.filter1(c,e)
return c:IsCanBeFusionMaterial() and not c:IsImmuneToEffect(e)
return not c:IsImmuneToEffect(e)
end
function c73594093.filter2(c,e,tp,m,f,chkf)
return c:IsType(TYPE_FUSION) and c:IsSetCard(0xe1) and (not f or f(c))
......@@ -30,7 +30,7 @@ end
function c73594093.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then
local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp
local mg1=Duel.GetMatchingGroup(Card.IsCanBeFusionMaterial,tp,LOCATION_HAND+LOCATION_MZONE,0,nil)
local mg1=Duel.GetFusionMaterial(tp)
local res=Duel.IsExistingMatchingCard(c73594093.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,mg1,nil,chkf)
if not res then
local ce=Duel.GetChainMaterial(tp)
......@@ -47,7 +47,7 @@ function c73594093.target(e,tp,eg,ep,ev,re,r,rp,chk)
end
function c73594093.activate(e,tp,eg,ep,ev,re,r,rp)
local chkf=Duel.GetLocationCount(tp,LOCATION_MZONE)>0 and PLAYER_NONE or tp
local mg1=Duel.GetMatchingGroup(c73594093.filter1,tp,LOCATION_HAND+LOCATION_MZONE,0,nil,e)
local mg1=Duel.GetFusionMaterial(tp):Filter(c73594093.filter1,nil,e)
local sg1=Duel.GetMatchingGroup(c73594093.filter2,tp,LOCATION_EXTRA,0,nil,e,tp,mg1,nil,chkf)
local mg2=nil
local sg2=nil
......
......@@ -2,13 +2,7 @@
function c77693536.initial_effect(c)
--fusion material
c:EnableReviveLimit()
local e0=Effect.CreateEffect(c)
e0:SetType(EFFECT_TYPE_SINGLE)
e0:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e0:SetCode(EFFECT_FUSION_MATERIAL)
e0:SetCondition(c77693536.fscon)
e0:SetOperation(c77693536.fsop)
c:RegisterEffect(e0)
aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0xe1),aux.FilterBoolFunction(Card.IsFusionType,TYPE_NORMAL),true)
--spsummon condition
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
......@@ -32,83 +26,14 @@ function c77693536.initial_effect(c)
c:RegisterEffect(e2)
--equip fusion material
local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_SINGLE)
e3:SetCode(77693536)
e3:SetProperty(EFFECT_FLAG_SINGLE_RANGE)
e3:SetType(EFFECT_TYPE_FIELD)
e3:SetCode(EFFECT_EXTRA_FUSION_MATERIAL)
e3:SetRange(LOCATION_MZONE)
e3:SetTargetRange(LOCATION_SZONE,0)
e3:SetTarget(c77693536.mttg)
e3:SetValue(c77693536.mtval)
c:RegisterEffect(e3)
end
function c77693536.filter1(c)
return c:IsFusionSetCard(0xe1) and not c:IsHasEffect(6205579)
end
function c77693536.filter2(c)
return c:IsFusionType(TYPE_NORMAL) and not c:IsHasEffect(6205579)
end
function c77693536.fscon(e,g,gc,chkfnf)
if g==nil then return true end
local f1=c77693536.filter1
local f2=c77693536.filter2
local chkf=bit.band(chkfnf,0xff)
local tp=e:GetHandlerPlayer()
local fg=Duel.GetMatchingGroup(Card.IsHasEffect,tp,LOCATION_MZONE,0,nil,77693536)
local fc=fg:GetFirst()
while fc do
g:Merge(fc:GetEquipGroup():Filter(Card.IsControler,nil,tp))
fc=fg:GetNext()
end
local mg=g:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler())
if gc then
if not gc:IsCanBeFusionMaterial(e:GetHandler()) then return false end
return (f1(gc) and mg:IsExists(f2,1,gc))
or (f2(gc) and mg:IsExists(f1,1,gc)) end
local g1=Group.CreateGroup() local g2=Group.CreateGroup() local fs=false
local tc=mg:GetFirst()
while tc do
if f1(tc) then g1:AddCard(tc) if aux.FConditionCheckF(tc,chkf) then fs=true end end
if f2(tc) then g2:AddCard(tc) if aux.FConditionCheckF(tc,chkf) then fs=true end end
tc=mg:GetNext()
end
if chkf~=PLAYER_NONE then
return fs and g1:IsExists(aux.FConditionFilterF2,1,nil,g2)
else return g1:IsExists(aux.FConditionFilterF2,1,nil,g2) end
end
function c77693536.fsop(e,tp,eg,ep,ev,re,r,rp,gc,chkfnf)
local f1=c77693536.filter1
local f2=c77693536.filter2
local chkf=bit.band(chkfnf,0xff)
local fg=Duel.GetMatchingGroup(Card.IsHasEffect,tp,LOCATION_MZONE,0,nil,77693536)
local fc=fg:GetFirst()
while fc do
eg:Merge(fc:GetEquipGroup():Filter(Card.IsControler,nil,tp))
fc=fg:GetNext()
end
local g=eg:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler())
if gc then
local sg=Group.CreateGroup()
if f1(gc) then sg:Merge(g:Filter(f2,gc)) end
if f2(gc) then sg:Merge(g:Filter(f1,gc)) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
local g1=sg:Select(tp,1,1,nil)
Duel.SetFusionMaterial(g1)
return
end
local sg=g:Filter(aux.FConditionFilterF2c,nil,f1,f2)
local g1=nil
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
if chkf~=PLAYER_NONE then
g1=sg:FilterSelect(tp,aux.FConditionCheckF,1,1,nil,chkf)
else g1=sg:Select(tp,1,1,nil) end
local tc1=g1:GetFirst()
sg:RemoveCard(tc1)
local b1=f1(tc1)
local b2=f2(tc1)
if b1 and not b2 then sg:Remove(aux.FConditionFilterF2r,nil,f1,f2) end
if b2 and not b1 then sg:Remove(aux.FConditionFilterF2r,nil,f2,f1) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
local g2=sg:Select(tp,1,1,nil)
g1:Merge(g2)
Duel.SetFusionMaterial(g1)
end
function c77693536.eqcon(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetTurnPlayer()~=tp
end
......@@ -152,3 +77,9 @@ end
function c77693536.eqlimit(e,c)
return e:GetOwner()==c
end
function c77693536.mttg(e,c)
return c:GetEquipTarget()==e:GetHandler()
end
function c77693536.mtval(e,c)
return c:IsSetCard(0xe1)
end
......@@ -2,82 +2,5 @@
function c81612598.initial_effect(c)
--fusion material
c:EnableReviveLimit()
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e1:SetCode(EFFECT_FUSION_MATERIAL)
e1:SetCondition(c81612598.fscon)
e1:SetOperation(c81612598.fsop)
c:RegisterEffect(e1)
end
function c81612598.filter1(c)
return c:IsFusionSetCard(0xe1) and not c:IsHasEffect(6205579)
end
function c81612598.filter2(c)
return c:IsAttackBelow(2500) and not c:IsHasEffect(6205579)
end
function c81612598.fscon(e,g,gc,chkfnf)
if g==nil then return true end
local f1=c81612598.filter1
local f2=c81612598.filter2
local chkf=bit.band(chkfnf,0xff)
local tp=e:GetHandlerPlayer()
local fg=Duel.GetMatchingGroup(Card.IsHasEffect,tp,LOCATION_MZONE,0,nil,77693536)
local fc=fg:GetFirst()
while fc do
g:Merge(fc:GetEquipGroup():Filter(Card.IsControler,nil,tp))
fc=fg:GetNext()
end
local mg=g:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler())
if gc then
if not gc:IsCanBeFusionMaterial(e:GetHandler()) then return false end
return (f1(gc) and mg:IsExists(f2,1,gc))
or (f2(gc) and mg:IsExists(f1,1,gc)) end
local g1=Group.CreateGroup() local g2=Group.CreateGroup() local fs=false
local tc=mg:GetFirst()
while tc do
if f1(tc) then g1:AddCard(tc) if aux.FConditionCheckF(tc,chkf) then fs=true end end
if f2(tc) then g2:AddCard(tc) if aux.FConditionCheckF(tc,chkf) then fs=true end end
tc=mg:GetNext()
end
if chkf~=PLAYER_NONE then
return fs and g1:IsExists(aux.FConditionFilterF2,1,nil,g2)
else return g1:IsExists(aux.FConditionFilterF2,1,nil,g2) end
end
function c81612598.fsop(e,tp,eg,ep,ev,re,r,rp,gc,chkfnf)
local f1=c81612598.filter1
local f2=c81612598.filter2
local chkf=bit.band(chkfnf,0xff)
local fg=Duel.GetMatchingGroup(Card.IsHasEffect,tp,LOCATION_MZONE,0,nil,77693536)
local fc=fg:GetFirst()
while fc do
eg:Merge(fc:GetEquipGroup():Filter(Card.IsControler,nil,tp))
fc=fg:GetNext()
end
local g=eg:Filter(Card.IsCanBeFusionMaterial,nil,e:GetHandler())
if gc then
local sg=Group.CreateGroup()
if f1(gc) then sg:Merge(g:Filter(f2,gc)) end
if f2(gc) then sg:Merge(g:Filter(f1,gc)) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
local g1=sg:Select(tp,1,1,nil)
Duel.SetFusionMaterial(g1)
return
end
local sg=g:Filter(aux.FConditionFilterF2c,nil,f1,f2)
local g1=nil
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
if chkf~=PLAYER_NONE then
g1=sg:FilterSelect(tp,aux.FConditionCheckF,1,1,nil,chkf)
else g1=sg:Select(tp,1,1,nil) end
local tc1=g1:GetFirst()
sg:RemoveCard(tc1)
local b1=f1(tc1)
local b2=f2(tc1)
if b1 and not b2 then sg:Remove(aux.FConditionFilterF2r,nil,f1,f2) end
if b2 and not b1 then sg:Remove(aux.FConditionFilterF2r,nil,f2,f1) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
local g2=sg:Select(tp,1,1,nil)
g1:Merge(g2)
Duel.SetFusionMaterial(g1)
aux.AddFusionProcFun2(c,aux.FilterBoolFunction(Card.IsFusionSetCard,0xe1),aux.FilterBoolFunction(Card.IsAttackBelow,2500),true)
end
......@@ -497,6 +497,7 @@ EFFECT_OLDUNION_STATUS =348 --旧同盟状态
EFFECT_ADD_FUSION_ATTRIBUTE =349 --reserve
EFFECT_REMOVE_FUSION_ATTRIBUTE =350 --reserve
EFFECT_CHANGE_FUSION_ATTRIBUTE =351 --用作融合素材时的属性
EFFECT_EXTRA_FUSION_MATERIAL =352 --
--下面是诱发效果的诱发事件、时点 (如果是TYPE_SINGLE则自己发生以下事件后触发,如果TYPE_FIELD则场上任何卡发生以下事件都触发)
EVENT_STARTUP =1000 --游戏开始时
......
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