Commit 5cf70d82 authored by mercury233's avatar mercury233

update & fix Auxiliary.AddFusionProcShaddoll

parent 35916a63
--エルシャドール・アノマリリス --エルシャドール・アノマリリス
function c19261966.initial_effect(c) function c19261966.initial_effect(c)
c:EnableReviveLimit()
--fusion material --fusion material
local e1=Effect.CreateEffect(c) c:EnableReviveLimit()
e1:SetType(EFFECT_TYPE_SINGLE) aux.AddFusionProcShaddoll(c,ATTRIBUTE_WATER)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e1:SetCode(EFFECT_FUSION_MATERIAL)
e1:SetCondition(c19261966.fuscon)
e1:SetOperation(c19261966.fusop)
c:RegisterEffect(e1)
--splimit --splimit
local e2=Effect.CreateEffect(c) local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_SINGLE) e2:SetType(EFFECT_TYPE_SINGLE)
...@@ -37,73 +31,6 @@ function c19261966.initial_effect(c) ...@@ -37,73 +31,6 @@ function c19261966.initial_effect(c)
e4:SetOperation(c19261966.thop) e4:SetOperation(c19261966.thop)
c:RegisterEffect(e4) c:RegisterEffect(e4)
end end
function c19261966.ffilter(c,fc)
return (c19261966.ffilter1(c) or c19261966.ffilter2(c)) and c:IsCanBeFusionMaterial(fc) and not c:IsHasEffect(6205579)
end
function c19261966.exfilter(c,fc)
return c:IsFaceup() and c19261966.ffilter(c,fc)
end
function c19261966.ffilter1(c)
return c:IsFusionSetCard(0x9d)
end
function c19261966.ffilter2(c)
return c:IsFusionAttribute(ATTRIBUTE_WATER) or c:IsHasEffect(4904633)
end
function c19261966.spfilter1(c,tp,mg,exg)
return mg:IsExists(c19261966.spfilter2,1,c,tp,c) or (exg and exg:IsExists(c19261966.spfilter2,1,c,tp,c))
end
function c19261966.spfilter2(c,tp,mc)
local sg=Group.FromCards(c,mc)
if sg:IsExists(aux.FCheckTuneMagicianX,1,nil,sg) then return false end
return (c19261966.ffilter1(c) and c19261966.ffilter2(mc)
or c19261966.ffilter2(c) and c19261966.ffilter1(mc))
and Duel.GetLocationCountFromEx(tp,tp,sg)>0
end
function c19261966.fuscon(e,g,gc,chkf)
if g==nil then return true end
local c=e:GetHandler()
local mg=g:Filter(c19261966.ffilter,nil,c)
local tp=e:GetHandlerPlayer()
local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5)
local exg=nil
if fc and fc:IsHasEffect(81788994) and fc:IsCanRemoveCounter(tp,0x16,3,REASON_EFFECT) then
exg=Duel.GetMatchingGroup(c19261966.exfilter,tp,0,LOCATION_MZONE,mg,c)
end
if gc then
if not mg:IsContains(gc) then return false end
return c19261966.spfilter1(gc,tp,mg,exg)
end
return mg:IsExists(c19261966.spfilter1,1,nil,tp,mg,exg)
end
function c19261966.fusop(e,tp,eg,ep,ev,re,r,rp,gc,chkf)
local c=e:GetHandler()
local mg=eg:Filter(c19261966.ffilter,nil,c)
local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5)
local exg=nil
if fc and fc:IsHasEffect(81788994) and fc:IsCanRemoveCounter(tp,0x16,3,REASON_EFFECT) then
exg=Duel.GetMatchingGroup(c19261966.exfilter,tp,0,LOCATION_MZONE,mg,c)
end
local g=nil
if gc then
g=Group.FromCards(gc)
mg:RemoveCard(gc)
else
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
g=mg:FilterSelect(tp,c19261966.spfilter1,1,1,nil,tp,mg,exg)
mg:Sub(g)
end
if exg and (mg:GetCount()==0 or (exg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(81788994,0)))) then
fc:RemoveCounter(tp,0x16,3,REASON_EFFECT)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
local sg=exg:FilterSelect(tp,c19261966.spfilter2,1,1,nil,tp,g:GetFirst())
g:Merge(sg)
else
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
local sg=mg:FilterSelect(tp,c19261966.spfilter2,1,1,nil,tp,g:GetFirst())
g:Merge(sg)
end
Duel.SetFusionMaterial(g)
end
function c19261966.splimit(e,se,sp,st) function c19261966.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 c20366274.initial_effect(c) function c20366274.initial_effect(c)
c:EnableReviveLimit()
--fusion material --fusion material
local e1=Effect.CreateEffect(c) c:EnableReviveLimit()
e1:SetType(EFFECT_TYPE_SINGLE) aux.AddFusionProcShaddoll(c,ATTRIBUTE_LIGHT)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e1:SetCode(EFFECT_FUSION_MATERIAL)
e1:SetCondition(c20366274.fuscon)
e1:SetOperation(c20366274.fusop)
c:RegisterEffect(e1)
--cannot spsummon --cannot spsummon
local e2=Effect.CreateEffect(c) local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_SINGLE) e2:SetType(EFFECT_TYPE_SINGLE)
...@@ -48,73 +42,6 @@ function c20366274.initial_effect(c) ...@@ -48,73 +42,6 @@ function c20366274.initial_effect(c)
e5:SetOperation(c20366274.thop) e5:SetOperation(c20366274.thop)
c:RegisterEffect(e5) c:RegisterEffect(e5)
end end
function c20366274.ffilter(c,fc)
return (c20366274.ffilter1(c) or c20366274.ffilter2(c)) and c:IsCanBeFusionMaterial(fc) and not c:IsHasEffect(6205579)
end
function c20366274.exfilter(c,fc)
return c:IsFaceup() and c20366274.ffilter(c,fc)
end
function c20366274.ffilter1(c)
return c:IsFusionSetCard(0x9d)
end
function c20366274.ffilter2(c)
return c:IsFusionAttribute(ATTRIBUTE_LIGHT) or c:IsHasEffect(4904633)
end
function c20366274.spfilter1(c,tp,mg,exg)
return mg:IsExists(c20366274.spfilter2,1,c,tp,c) or (exg and exg:IsExists(c20366274.spfilter2,1,c,tp,c))
end
function c20366274.spfilter2(c,tp,mc)
local sg=Group.FromCards(c,mc)
if sg:IsExists(aux.FCheckTuneMagicianX,1,nil,sg) then return false end
return (c20366274.ffilter1(c) and c20366274.ffilter2(mc)
or c20366274.ffilter2(c) and c20366274.ffilter1(mc))
and Duel.GetLocationCountFromEx(tp,tp,sg)>0
end
function c20366274.fuscon(e,g,gc,chkf)
if g==nil then return true end
local c=e:GetHandler()
local mg=g:Filter(c20366274.ffilter,nil,c)
local tp=e:GetHandlerPlayer()
local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5)
local exg=nil
if fc and fc:IsHasEffect(81788994) and fc:IsCanRemoveCounter(tp,0x16,3,REASON_EFFECT) then
exg=Duel.GetMatchingGroup(c20366274.exfilter,tp,0,LOCATION_MZONE,mg,c)
end
if gc then
if not mg:IsContains(gc) then return false end
return c20366274.spfilter1(gc,tp,mg,exg)
end
return mg:IsExists(c20366274.spfilter1,1,nil,tp,mg,exg)
end
function c20366274.fusop(e,tp,eg,ep,ev,re,r,rp,gc,chkf)
local c=e:GetHandler()
local mg=eg:Filter(c20366274.ffilter,nil,c)
local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5)
local exg=nil
if fc and fc:IsHasEffect(81788994) and fc:IsCanRemoveCounter(tp,0x16,3,REASON_EFFECT) then
exg=Duel.GetMatchingGroup(c20366274.exfilter,tp,0,LOCATION_MZONE,mg,c)
end
local g=nil
if gc then
g=Group.FromCards(gc)
mg:RemoveCard(gc)
else
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
g=mg:FilterSelect(tp,c20366274.spfilter1,1,1,nil,tp,mg,exg)
mg:Sub(g)
end
if exg and (mg:GetCount()==0 or (exg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(81788994,0)))) then
fc:RemoveCounter(tp,0x16,3,REASON_EFFECT)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
local sg=exg:FilterSelect(tp,c20366274.spfilter2,1,1,nil,tp,g:GetFirst())
g:Merge(sg)
else
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
local sg=mg:FilterSelect(tp,c20366274.spfilter2,1,1,nil,tp,g:GetFirst())
g:Merge(sg)
end
Duel.SetFusionMaterial(g)
end
function c20366274.splimit(e,se,sp,st) function c20366274.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 c48424886.initial_effect(c) function c48424886.initial_effect(c)
c:EnableReviveLimit()
--fusion material --fusion material
local e1=Effect.CreateEffect(c) c:EnableReviveLimit()
e1:SetType(EFFECT_TYPE_SINGLE) aux.AddFusionProcShaddoll(c,ATTRIBUTE_FIRE)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e1:SetCode(EFFECT_FUSION_MATERIAL)
e1:SetCondition(c48424886.fuscon)
e1:SetOperation(c48424886.fusop)
c:RegisterEffect(e1)
--cannot spsummon --cannot spsummon
local e2=Effect.CreateEffect(c) local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_SINGLE) e2:SetType(EFFECT_TYPE_SINGLE)
...@@ -40,73 +34,6 @@ function c48424886.initial_effect(c) ...@@ -40,73 +34,6 @@ function c48424886.initial_effect(c)
e4:SetOperation(c48424886.thop) e4:SetOperation(c48424886.thop)
c:RegisterEffect(e4) c:RegisterEffect(e4)
end end
function c48424886.ffilter(c,fc)
return (c48424886.ffilter1(c) or c48424886.ffilter2(c)) and c:IsCanBeFusionMaterial(fc) and not c:IsHasEffect(6205579)
end
function c48424886.exfilter(c,fc)
return c:IsFaceup() and c48424886.ffilter(c,fc)
end
function c48424886.ffilter1(c)
return c:IsFusionSetCard(0x9d)
end
function c48424886.ffilter2(c)
return c:IsFusionAttribute(ATTRIBUTE_FIRE) or c:IsHasEffect(4904633)
end
function c48424886.spfilter1(c,tp,mg,exg)
return mg:IsExists(c48424886.spfilter2,1,c,tp,c) or (exg and exg:IsExists(c48424886.spfilter2,1,c,tp,c))
end
function c48424886.spfilter2(c,tp,mc)
local sg=Group.FromCards(c,mc)
if sg:IsExists(aux.FCheckTuneMagicianX,1,nil,sg) then return false end
return (c48424886.ffilter1(c) and c48424886.ffilter2(mc)
or c48424886.ffilter2(c) and c48424886.ffilter1(mc))
and Duel.GetLocationCountFromEx(tp,tp,sg)>0
end
function c48424886.fuscon(e,g,gc,chkf)
if g==nil then return true end
local c=e:GetHandler()
local mg=g:Filter(c48424886.ffilter,nil,c)
local tp=e:GetHandlerPlayer()
local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5)
local exg=nil
if fc and fc:IsHasEffect(81788994) and fc:IsCanRemoveCounter(tp,0x16,3,REASON_EFFECT) then
exg=Duel.GetMatchingGroup(c48424886.exfilter,tp,0,LOCATION_MZONE,mg,c)
end
if gc then
if not mg:IsContains(gc) then return false end
return c48424886.spfilter1(gc,tp,mg,exg)
end
return mg:IsExists(c48424886.spfilter1,1,nil,tp,mg,exg)
end
function c48424886.fusop(e,tp,eg,ep,ev,re,r,rp,gc,chkf)
local c=e:GetHandler()
local mg=eg:Filter(c48424886.ffilter,nil,c)
local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5)
local exg=nil
if fc and fc:IsHasEffect(81788994) and fc:IsCanRemoveCounter(tp,0x16,3,REASON_EFFECT) then
exg=Duel.GetMatchingGroup(c48424886.exfilter,tp,0,LOCATION_MZONE,mg,c)
end
local g=nil
if gc then
g=Group.FromCards(gc)
mg:RemoveCard(gc)
else
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
g=mg:FilterSelect(tp,c48424886.spfilter1,1,1,nil,tp,mg,exg)
mg:Sub(g)
end
if exg and (mg:GetCount()==0 or (exg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(81788994,0)))) then
fc:RemoveCounter(tp,0x16,3,REASON_EFFECT)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
local sg=exg:FilterSelect(tp,c48424886.spfilter2,1,1,nil,tp,g:GetFirst())
g:Merge(sg)
else
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
local sg=mg:FilterSelect(tp,c48424886.spfilter2,1,1,nil,tp,g:GetFirst())
g:Merge(sg)
end
Duel.SetFusionMaterial(g)
end
function c48424886.splimit(e,se,sp,st) function c48424886.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 c74009824.initial_effect(c) function c74009824.initial_effect(c)
c:EnableReviveLimit()
--fusion material --fusion material
local e1=Effect.CreateEffect(c) c:EnableReviveLimit()
e1:SetType(EFFECT_TYPE_SINGLE) aux.AddFusionProcShaddoll(c,ATTRIBUTE_WIND)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e1:SetCode(EFFECT_FUSION_MATERIAL)
e1:SetCondition(c74009824.fuscon)
e1:SetOperation(c74009824.fusop)
c:RegisterEffect(e1)
--cannot spsummon --cannot spsummon
local e2=Effect.CreateEffect(c) local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_SINGLE) e2:SetType(EFFECT_TYPE_SINGLE)
...@@ -39,73 +33,6 @@ function c74009824.initial_effect(c) ...@@ -39,73 +33,6 @@ function c74009824.initial_effect(c)
e4:SetOperation(c74009824.thop) e4:SetOperation(c74009824.thop)
c:RegisterEffect(e4) c:RegisterEffect(e4)
end end
function c74009824.ffilter(c,fc)
return (c74009824.ffilter1(c) or c74009824.ffilter2(c)) and c:IsCanBeFusionMaterial(fc) and not c:IsHasEffect(6205579)
end
function c74009824.exfilter(c,fc)
return c:IsFaceup() and c74009824.ffilter(c,fc)
end
function c74009824.ffilter1(c)
return c:IsFusionSetCard(0x9d)
end
function c74009824.ffilter2(c)
return c:IsFusionAttribute(ATTRIBUTE_WIND) or c:IsHasEffect(4904633)
end
function c74009824.spfilter1(c,tp,mg,exg)
return mg:IsExists(c74009824.spfilter2,1,c,tp,c) or (exg and exg:IsExists(c74009824.spfilter2,1,c,tp,c))
end
function c74009824.spfilter2(c,tp,mc)
local sg=Group.FromCards(c,mc)
if sg:IsExists(aux.FCheckTuneMagicianX,1,nil,sg) then return false end
return (c74009824.ffilter1(c) and c74009824.ffilter2(mc)
or c74009824.ffilter2(c) and c74009824.ffilter1(mc))
and Duel.GetLocationCountFromEx(tp,tp,sg)>0
end
function c74009824.fuscon(e,g,gc,chkf)
if g==nil then return true end
local c=e:GetHandler()
local mg=g:Filter(c74009824.ffilter,nil,c)
local tp=e:GetHandlerPlayer()
local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5)
local exg=nil
if fc and fc:IsHasEffect(81788994) and fc:IsCanRemoveCounter(tp,0x16,3,REASON_EFFECT) then
exg=Duel.GetMatchingGroup(c74009824.exfilter,tp,0,LOCATION_MZONE,mg,c)
end
if gc then
if not mg:IsContains(gc) then return false end
return c74009824.spfilter1(gc,tp,mg,exg)
end
return mg:IsExists(c74009824.spfilter1,1,nil,tp,mg,exg)
end
function c74009824.fusop(e,tp,eg,ep,ev,re,r,rp,gc,chkf)
local c=e:GetHandler()
local mg=eg:Filter(c74009824.ffilter,nil,c)
local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5)
local exg=nil
if fc and fc:IsHasEffect(81788994) and fc:IsCanRemoveCounter(tp,0x16,3,REASON_EFFECT) then
exg=Duel.GetMatchingGroup(c74009824.exfilter,tp,0,LOCATION_MZONE,mg,c)
end
local g=nil
if gc then
g=Group.FromCards(gc)
mg:RemoveCard(gc)
else
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
g=mg:FilterSelect(tp,c74009824.spfilter1,1,1,nil,tp,mg,exg)
mg:Sub(g)
end
if exg and (mg:GetCount()==0 or (exg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(81788994,0)))) then
fc:RemoveCounter(tp,0x16,3,REASON_EFFECT)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
local sg=exg:FilterSelect(tp,c74009824.spfilter2,1,1,nil,tp,g:GetFirst())
g:Merge(sg)
else
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
local sg=mg:FilterSelect(tp,c74009824.spfilter2,1,1,nil,tp,g:GetFirst())
g:Merge(sg)
end
Duel.SetFusionMaterial(g)
end
function c74009824.splimit(e,se,sp,st) function c74009824.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 c74822425.initial_effect(c) function c74822425.initial_effect(c)
c:EnableReviveLimit()
--fusion material --fusion material
local e1=Effect.CreateEffect(c) c:EnableReviveLimit()
e1:SetType(EFFECT_TYPE_SINGLE) aux.AddFusionProcShaddoll(c,ATTRIBUTE_EARTH)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e1:SetCode(EFFECT_FUSION_MATERIAL)
e1:SetCondition(c74822425.fuscon)
e1:SetOperation(c74822425.fusop)
c:RegisterEffect(e1)
--cannot spsummon --cannot spsummon
local e2=Effect.CreateEffect(c) local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_SINGLE) e2:SetType(EFFECT_TYPE_SINGLE)
...@@ -41,73 +35,6 @@ function c74822425.initial_effect(c) ...@@ -41,73 +35,6 @@ function c74822425.initial_effect(c)
e4:SetOperation(c74822425.thop) e4:SetOperation(c74822425.thop)
c:RegisterEffect(e4) c:RegisterEffect(e4)
end end
function c74822425.ffilter(c,fc)
return (c74822425.ffilter1(c) or c74822425.ffilter2(c)) and c:IsCanBeFusionMaterial(fc) and not c:IsHasEffect(6205579)
end
function c74822425.exfilter(c,fc)
return c:IsFaceup() and c74822425.ffilter(c,fc)
end
function c74822425.ffilter1(c)
return c:IsFusionSetCard(0x9d)
end
function c74822425.ffilter2(c)
return c:IsFusionAttribute(ATTRIBUTE_EARTH) or c:IsHasEffect(4904633)
end
function c74822425.spfilter1(c,tp,mg,exg)
return mg:IsExists(c74822425.spfilter2,1,c,tp,c) or (exg and exg:IsExists(c74822425.spfilter2,1,c,tp,c))
end
function c74822425.spfilter2(c,tp,mc)
local sg=Group.FromCards(c,mc)
if sg:IsExists(aux.FCheckTuneMagicianX,1,nil,sg) then return false end
return (c74822425.ffilter1(c) and c74822425.ffilter2(mc)
or c74822425.ffilter2(c) and c74822425.ffilter1(mc))
and Duel.GetLocationCountFromEx(tp,tp,sg)>0
end
function c74822425.fuscon(e,g,gc,chkf)
if g==nil then return true end
local c=e:GetHandler()
local mg=g:Filter(c74822425.ffilter,nil,c)
local tp=e:GetHandlerPlayer()
local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5)
local exg=nil
if fc and fc:IsHasEffect(81788994) and fc:IsCanRemoveCounter(tp,0x16,3,REASON_EFFECT) then
exg=Duel.GetMatchingGroup(c74822425.exfilter,tp,0,LOCATION_MZONE,mg,c)
end
if gc then
if not mg:IsContains(gc) then return false end
return c74822425.spfilter1(gc,tp,mg,exg)
end
return mg:IsExists(c74822425.spfilter1,1,nil,tp,mg,exg)
end
function c74822425.fusop(e,tp,eg,ep,ev,re,r,rp,gc,chkf)
local c=e:GetHandler()
local mg=eg:Filter(c74822425.ffilter,nil,c)
local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5)
local exg=nil
if fc and fc:IsHasEffect(81788994) and fc:IsCanRemoveCounter(tp,0x16,3,REASON_EFFECT) then
exg=Duel.GetMatchingGroup(c74822425.exfilter,tp,0,LOCATION_MZONE,mg,c)
end
local g=nil
if gc then
g=Group.FromCards(gc)
mg:RemoveCard(gc)
else
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
g=mg:FilterSelect(tp,c74822425.spfilter1,1,1,nil,tp,mg,exg)
mg:Sub(g)
end
if exg and (mg:GetCount()==0 or (exg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(81788994,0)))) then
fc:RemoveCounter(tp,0x16,3,REASON_EFFECT)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
local sg=exg:FilterSelect(tp,c74822425.spfilter2,1,1,nil,tp,g:GetFirst())
g:Merge(sg)
else
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
local sg=mg:FilterSelect(tp,c74822425.spfilter2,1,1,nil,tp,g:GetFirst())
g:Merge(sg)
end
Duel.SetFusionMaterial(g)
end
function c74822425.splimit(e,se,sp,st) function c74822425.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 c94977269.initial_effect(c) function c94977269.initial_effect(c)
Duel.EnableGlobalFlag(GLOBALFLAG_SPSUMMON_COUNT) Duel.EnableGlobalFlag(GLOBALFLAG_SPSUMMON_COUNT)
c:EnableReviveLimit()
--fusion material --fusion material
local e1=Effect.CreateEffect(c) c:EnableReviveLimit()
e1:SetType(EFFECT_TYPE_SINGLE) aux.AddFusionProcShaddoll(c,ATTRIBUTE_DARK)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_UNCOPYABLE)
e1:SetCode(EFFECT_FUSION_MATERIAL)
e1:SetCondition(c94977269.fuscon)
e1:SetOperation(c94977269.fusop)
c:RegisterEffect(e1)
--splimit --splimit
local e2=Effect.CreateEffect(c) local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_SINGLE) e2:SetType(EFFECT_TYPE_SINGLE)
...@@ -46,73 +40,6 @@ function c94977269.initial_effect(c) ...@@ -46,73 +40,6 @@ function c94977269.initial_effect(c)
e5:SetOperation(c94977269.thop) e5:SetOperation(c94977269.thop)
c:RegisterEffect(e5) c:RegisterEffect(e5)
end end
function c94977269.ffilter(c,fc)
return (c94977269.ffilter1(c) or c94977269.ffilter2(c)) and c:IsCanBeFusionMaterial(fc) and not c:IsHasEffect(6205579)
end
function c94977269.exfilter(c,fc)
return c:IsFaceup() and c94977269.ffilter(c,fc)
end
function c94977269.ffilter1(c)
return c:IsFusionSetCard(0x9d)
end
function c94977269.ffilter2(c)
return c:IsFusionAttribute(ATTRIBUTE_DARK) or c:IsHasEffect(4904633)
end
function c94977269.spfilter1(c,tp,mg,exg)
return mg:IsExists(c94977269.spfilter2,1,c,tp,c) or (exg and exg:IsExists(c94977269.spfilter2,1,c,tp,c))
end
function c94977269.spfilter2(c,tp,mc)
local sg=Group.FromCards(c,mc)
if sg:IsExists(aux.FCheckTuneMagicianX,1,nil,sg) then return false end
return (c94977269.ffilter1(c) and c94977269.ffilter2(mc)
or c94977269.ffilter2(c) and c94977269.ffilter1(mc))
and Duel.GetLocationCountFromEx(tp,tp,sg)>0
end
function c94977269.fuscon(e,g,gc,chkf)
if g==nil then return true end
local c=e:GetHandler()
local mg=g:Filter(c94977269.ffilter,nil,c)
local tp=e:GetHandlerPlayer()
local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5)
local exg=nil
if fc and fc:IsHasEffect(81788994) and fc:IsCanRemoveCounter(tp,0x16,3,REASON_EFFECT) then
exg=Duel.GetMatchingGroup(c94977269.exfilter,tp,0,LOCATION_MZONE,mg,c)
end
if gc then
if not mg:IsContains(gc) then return false end
return c94977269.spfilter1(gc,tp,mg,exg)
end
return mg:IsExists(c94977269.spfilter1,1,nil,tp,mg,exg)
end
function c94977269.fusop(e,tp,eg,ep,ev,re,r,rp,gc,chkf)
local c=e:GetHandler()
local mg=eg:Filter(c94977269.ffilter,nil,c)
local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5)
local exg=nil
if fc and fc:IsHasEffect(81788994) and fc:IsCanRemoveCounter(tp,0x16,3,REASON_EFFECT) then
exg=Duel.GetMatchingGroup(c94977269.exfilter,tp,0,LOCATION_MZONE,mg,c)
end
local g=nil
if gc then
g=Group.FromCards(gc)
mg:RemoveCard(gc)
else
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
g=mg:FilterSelect(tp,c94977269.spfilter1,1,1,nil,tp,mg,exg)
mg:Sub(g)
end
if exg and (mg:GetCount()==0 or (exg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(81788994,0)))) then
fc:RemoveCounter(tp,0x16,3,REASON_EFFECT)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
local sg=exg:FilterSelect(tp,c94977269.spfilter2,1,1,nil,tp,g:GetFirst())
g:Merge(sg)
else
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
local sg=mg:FilterSelect(tp,c94977269.spfilter2,1,1,nil,tp,g:GetFirst())
g:Merge(sg)
end
Duel.SetFusionMaterial(g)
end
function c94977269.splimit(e,se,sp,st) function c94977269.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
......
...@@ -1250,6 +1250,88 @@ end ...@@ -1250,6 +1250,88 @@ end
function Auxiliary.AddFusionProcCode2FunRep(c,code1,code2,f,minc,maxc,sub,insf) function Auxiliary.AddFusionProcCode2FunRep(c,code1,code2,f,minc,maxc,sub,insf)
Auxiliary.AddFusionProcMixRep(c,sub,insf,f,minc,maxc,code1,code2) Auxiliary.AddFusionProcMixRep(c,sub,insf,f,minc,maxc,code1,code2)
end end
--Fusion monster, Shaddoll materials
function Auxiliary.AddFusionProcShaddoll(c,attr)
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(Auxiliary.FShaddollCondition(attr))
e1:SetOperation(Auxiliary.FShaddollOperation(attr))
c:RegisterEffect(e1)
end
function Auxiliary.FShaddollFilter(c,fc,attr)
return (Auxiliary.FShaddollFilter1(c) or Auxiliary.FShaddollFilter2(c,attr)) and c:IsCanBeFusionMaterial(fc) and not c:IsHasEffect(6205579)
end
function Auxiliary.FShaddollExFilter(c,fc,attr)
return c:IsFaceup() and Auxiliary.FShaddollFilter(c,fc,attr)
end
function Auxiliary.FShaddollFilter1(c)
return c:IsFusionSetCard(0x9d)
end
function Auxiliary.FShaddollFilter2(c,attr)
return c:IsFusionAttribute(attr) or c:IsHasEffect(4904633)
end
function Auxiliary.FShaddollSpFilter1(c,tp,mg,exg,attr)
return mg:IsExists(Auxiliary.FShaddollSpFilter2,1,c,tp,c,attr) or (exg and exg:IsExists(Auxiliary.FShaddollSpFilter2,1,c,tp,c,attr))
end
function Auxiliary.FShaddollSpFilter2(c,tp,mc,attr)
local sg=Group.FromCards(c,mc)
if sg:IsExists(Auxiliary.FCheckTuneMagicianX,1,nil,sg) then return false end
return ((Auxiliary.FShaddollFilter1(c) and Auxiliary.FShaddollFilter2(mc,attr))
or (Auxiliary.FShaddollFilter2(c,attr) and Auxiliary.FShaddollFilter1(mc)))
and Duel.GetLocationCountFromEx(tp,tp,sg)>0
end
function Auxiliary.FShaddollCondition(attr)
return function(e,g,gc,chkf)
if g==nil then return true end
local c=e:GetHandler()
local mg=g:Filter(Auxiliary.FShaddollFilter,nil,c,attr)
local tp=e:GetHandlerPlayer()
local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5)
local exg=nil
if fc and fc:IsHasEffect(81788994) and fc:IsCanRemoveCounter(tp,0x16,3,REASON_EFFECT) then
exg=Duel.GetMatchingGroup(Auxiliary.FShaddollExFilter,tp,0,LOCATION_MZONE,mg,c,attr)
end
if gc then
if not mg:IsContains(gc) then return false end
return Auxiliary.FShaddollSpFilter1(gc,tp,mg,exg,attr)
end
return mg:IsExists(Auxiliary.FShaddollSpFilter1,1,nil,tp,mg,exg,attr)
end
end
function Auxiliary.FShaddollOperation(attr)
return function(e,tp,eg,ep,ev,re,r,rp,gc,chkf)
local c=e:GetHandler()
local mg=eg:Filter(Auxiliary.FShaddollFilter,nil,c,attr)
local fc=Duel.GetFieldCard(tp,LOCATION_SZONE,5)
local exg=nil
if fc and fc:IsHasEffect(81788994) and fc:IsCanRemoveCounter(tp,0x16,3,REASON_EFFECT) then
exg=Duel.GetMatchingGroup(Auxiliary.FShaddollExFilter,tp,0,LOCATION_MZONE,mg,c,attr)
end
local g=nil
if gc then
g=Group.FromCards(gc)
mg:RemoveCard(gc)
else
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
g=mg:FilterSelect(tp,Auxiliary.FShaddollSpFilter1,1,1,nil,tp,mg,exg,attr)
mg:Sub(g)
end
if exg and exg:IsExists(Auxiliary.FShaddollSpFilter2,1,nil,tp,g:GetFirst(),attr)
and (mg:GetCount()==0 or (exg:GetCount()>0 and Duel.SelectYesNo(tp,aux.Stringid(81788994,0)))) then
fc:RemoveCounter(tp,0x16,3,REASON_EFFECT)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
local sg=exg:FilterSelect(tp,Auxiliary.FShaddollSpFilter2,1,1,nil,tp,g:GetFirst(),attr)
g:Merge(sg)
else
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
local sg=mg:FilterSelect(tp,Auxiliary.FShaddollSpFilter2,1,1,nil,tp,g:GetFirst(),attr)
g:Merge(sg)
end
Duel.SetFusionMaterial(g)
end
end
--Ritual Summon, geq fixed lv --Ritual Summon, geq fixed lv
function Auxiliary.AddRitualProcGreater(c,filter) function Auxiliary.AddRitualProcGreater(c,filter)
local e1=Effect.CreateEffect(c) local e1=Effect.CreateEffect(c)
......
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