Commit c2f1a836 authored by Tachibana's avatar Tachibana

E

parent 7429eb38
Pipeline #15748 passed with stages
in 27 minutes and 11 seconds
......@@ -22,41 +22,20 @@ function c1110113.initial_effect(c)
--
end
--
function c1110113.exfilter1(c,fc)
if c==fc then return false end
return c1110113.allfilter1(c,fc)
function c1110113.ExFusFilter(c,fc)
return c1110113.AllFusFilter(c,fc)
end
function c1110113.allfilter1(c,fc)
return c:IsCanBeFusionMaterial(fc) and c:IsFusionType(TYPE_MONSTER)
and (c:IsRace(RACE_SPELLCASTER) or c:IsLevel(1))
function c1110113.AllFusFilter(c,fc)
return c:IsCanBeFusionMaterial(fc) and c:IsFusionType(TYPE_MONSTER) and (c1110113.CheckFusFilter1(c) or c1110113.CheckFusFilter2(c))
end
--
function c1110113.CheckFusionFilter1(c,sg,tc)
local check1=0
local check2=0
local sc=sg:GetFirst()
while sc do
if sc:IsLevel(1) then check1=1 end
if sc:IsRace(RACE_SPELLCASTER) then check2=1 end
sc=sg:GetNext()
end
return (check1==0 and tc:IsLevel(1))
or (check2==0 and tc:IsRace(RACE_SPELLCASTER))
function c1110113.CheckFusFilter1(c)
return c:IsLevel(1)
end
function c1110113.CheckRecursive1(c,mg,sg,exg,tp,fc,chkf)
if exg and exg:IsContains(c) and not sg:IsExists(Card.IsLocation,1,nil,LOCATION_HAND) then return false end
if sg:GetCount()>0 and not sg:IsExists(c1110113.CheckFusionFilter1,1,nil,sg,c) then return false end
sg:AddCard(c)
if Duel.GetLocationCountFromEx(tp,tp,sg,c)<1 then return false end
local res=false
if sg:GetCount()==2 then
res=(chkf==PLAYER_NONE or Duel.GetLocationCountFromEx(chkf,tp,sg,fc)>0)
if aux.FCheckAdditional and not aux.FCheckAdditional(tp,sg,fc) then res=false end
else
res=mg:IsExists(c1110113.CheckRecursive1,1,sg,mg,sg,exg,tp,fc,PLAYER_NONE)
end
sg:RemoveCard(c)
return res
function c1110113.CheckFusFilter2(c)
return c:IsRace(RACE_SPELLCASTER)
end
function c1110113.CheckGroupFilter(sg,lc)
return (not lc) or (lc and sg:IsContains(lc))
end
--
function c1110113.con1(e,g,gc,chkfnf)
......@@ -65,27 +44,28 @@ function c1110113.con1(e,g,gc,chkfnf)
local chkf=(chkfnf & 0xff)
local c=e:GetHandler()
local tp=c:GetControler()
local mg=g:Filter(c1110113.allfilter1,nil,c)
local exg=Duel.GetMatchingGroup(c1110113.exfilter1,tp,LOCATION_EXTRA,0,mg,c)
local mg=g:Filter(c1110113.AllFusFilter,nil,c)
local exg=Duel.GetMatchingGroup(c1110113.ExFusFilter,tp,LOCATION_EXTRA,0,mg,c)
if exg:IsContains(c) then
exg:RemoveCard(c)
end
mg:Merge(exg)
if gc then return c1110113.allfilter1(gc,c)
and c1110113.CheckRecursive1(gc,mg,sg,exg,tp,c,chkf) end
return mg:IsExists(c1110113.CheckRecursive1,1,sg,mg,sg,exg,tp,c,chkf)
local checks={c1110113.CheckFusFilter1,c1110113.CheckFusFilter2}
return mg:CheckSubGroupEach(checks,c1110113.CheckGroupFilter,gc)
end
--
function c1110113.op1(e,tp,eg,ep,ev,re,r,rp,gc,chkfnf)
local c=e:GetHandler()
local chkf=(chkfnf & 0xff)
local mg=eg:Filter(c1110113.allfilter1,nil,c)
local exg=Duel.GetMatchingGroup(c1110113.exfilter1,tp,LOCATION_EXTRA,0,mg,c)
local mg=eg:Filter(c1110113.AllFusFilter,nil,c)
local exg=Duel.GetMatchingGroup(c1110113.ExFusFilter,tp,LOCATION_EXTRA,0,mg,c)
if exg:IsContains(c) then
exg:RemoveCard(c)
end
mg:Merge(exg)
local sg=Group.CreateGroup()
if gc then sg:AddCard(gc) end
repeat
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
local g=mg:FilterSelect(tp,c1110113.CheckRecursive1,1,1,sg,mg,sg,exg,tp,c,chkf)
sg:Merge(g)
until sg:GetCount()==2
local checks={c1110113.CheckFusFilter1,c1110113.CheckFusFilter2}
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
local sg=mg:SelectSubGroupEach(tp,checks,false,c1110113.CheckGroupFilter,gc)
Duel.SetFusionMaterial(sg)
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