Commit 0d0a3bd9 authored by VanillaSalt's avatar VanillaSalt

fix

parent 4f52e1df
...@@ -57,27 +57,14 @@ function c67030233.matfilter(c,syncard) ...@@ -57,27 +57,14 @@ function c67030233.matfilter(c,syncard)
return c:IsFaceup() and c:IsCanBeSynchroMaterial(syncard) return c:IsFaceup() and c:IsCanBeSynchroMaterial(syncard)
end end
function c67030233.synfilter1(c,syncard,lv,g) function c67030233.synfilter1(c,syncard,lv,g)
if not c:IsCode(21159309) then return false end return c:IsCode(21159309) and g:IsExists(c67030233.synfilter2,1,c,syncard,lv,g,c)
local tlv=c:GetSynchroLevel(syncard)
if lv-tlv<=0 then return false end
local t=false
if c:IsType(TYPE_TUNER) then t=true end
local wg=g:Clone()
wg:RemoveCard(c)
return wg:IsExists(c67030233.synfilter2,1,nil,syncard,lv-tlv,wg,t)
end
function c67030233.synfilter2(c,syncard,lv,g,tuner)
if not c:IsCode(70902743) then return false end
local tlv=c:GetSynchroLevel(syncard)
if lv-tlv<=0 then return false end
if not tuner and not c:IsType(TYPE_TUNER) then return false end
return g:IsExists(c67030233.synfilter3,1,c,syncard,lv-tlv)
end end
function c67030233.synfilter3(c,syncard,lv) function c67030233.synfilter2(c,syncard,lv,g,mc)
local mlv=c:GetSynchroLevel(syncard) if not c:IsCode(70902743) then return false end
local lv1=bit.band(mlv,0xffff) if c:IsType(TYPE_TUNER)==mc:IsType(TYPE_TUNER) then return false end
local lv2=bit.rshift(mlv,16) local mg=g:Filter(Card.IsNotTuner,nil)
return c:IsNotTuner() and (lv1==lv or lv2==lv) Duel.SetSelectedCard(Group.FromCards(c,mc))
return mg:CheckWithSumEqual(Card.GetSynchroLevel,lv,1,1,syncard)
end end
function c67030233.syncon(e,c,tuner) function c67030233.syncon(e,c,tuner)
if c==nil then return true end if c==nil then return true end
...@@ -98,18 +85,13 @@ function c67030233.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner) ...@@ -98,18 +85,13 @@ function c67030233.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner)
m1=t1:GetFirst() m1=t1:GetFirst()
g:AddCard(m1) g:AddCard(m1)
end end
lv=lv-m1:GetSynchroLevel(c)
local t=false
if m1:IsType(TYPE_TUNER) then t=true end
mg:RemoveCard(m1)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL)
local t2=mg:FilterSelect(tp,c67030233.synfilter2,1,1,nil,c,lv,mg,t) local t2=mg:FilterSelect(tp,c67030233.synfilter2,1,1,m1,c,lv,mg,m1)
local m2=t2:GetFirst() g:Merge(t2)
g:AddCard(m2) local mg2=mg:Filter(Card.IsNotTuner,nil)
lv=lv-m2:GetSynchroLevel(c) Duel.SetSelectedCard(g)
mg:RemoveCard(m2)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL)
local t3=mg:FilterSelect(tp,c67030233.synfilter3,1,1,nil,c,lv) local t3=mg2:SelectWithSumEqual(tp,Card.GetSynchroLevel,lv,1,1,c)
g:Merge(t3) g:Merge(t3)
c:SetMaterial(g) c:SetMaterial(g)
Duel.SendtoGrave(g,REASON_MATERIAL+REASON_SYNCHRO) Duel.SendtoGrave(g,REASON_MATERIAL+REASON_SYNCHRO)
......
...@@ -59,27 +59,14 @@ function c7841112.matfilter(c,syncard) ...@@ -59,27 +59,14 @@ function c7841112.matfilter(c,syncard)
return c:IsFaceup() and c:IsCanBeSynchroMaterial(syncard) return c:IsFaceup() and c:IsCanBeSynchroMaterial(syncard)
end end
function c7841112.synfilter1(c,syncard,lv,g) function c7841112.synfilter1(c,syncard,lv,g)
if not c:IsCode(21159309) then return false end return c:IsCode(21159309) and g:IsExists(c7841112.synfilter2,1,c,syncard,lv,g,c)
local tlv=c:GetSynchroLevel(syncard)
if lv-tlv<=0 then return false end
local t=false
if c:IsType(TYPE_TUNER) then t=true end
local wg=g:Clone()
wg:RemoveCard(c)
return wg:IsExists(c7841112.synfilter2,1,nil,syncard,lv-tlv,wg,t)
end
function c7841112.synfilter2(c,syncard,lv,g,tuner)
if not c:IsCode(44508094) then return false end
local tlv=c:GetSynchroLevel(syncard)
if lv-tlv<=0 then return false end
if not tuner and not c:IsType(TYPE_TUNER) then return false end
return g:IsExists(c7841112.synfilter3,1,c,syncard,lv-tlv)
end end
function c7841112.synfilter3(c,syncard,lv) function c7841112.synfilter2(c,syncard,lv,g,mc)
local mlv=c:GetSynchroLevel(syncard) if not c:IsCode(44508094) then return false end
local lv1=bit.band(mlv,0xffff) if c:IsType(TYPE_TUNER)==mc:IsType(TYPE_TUNER) then return false end
local lv2=bit.rshift(mlv,16) local mg=g:Filter(Card.IsNotTuner,nil)
return c:IsNotTuner() and (lv1==lv or lv2==lv) Duel.SetSelectedCard(Group.FromCards(c,mc))
return mg:CheckWithSumEqual(Card.GetSynchroLevel,lv,1,1,syncard)
end end
function c7841112.syncon(e,c,tuner) function c7841112.syncon(e,c,tuner)
if c==nil then return true end if c==nil then return true end
...@@ -100,18 +87,13 @@ function c7841112.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner) ...@@ -100,18 +87,13 @@ function c7841112.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner)
m1=t1:GetFirst() m1=t1:GetFirst()
g:AddCard(m1) g:AddCard(m1)
end end
lv=lv-m1:GetSynchroLevel(c)
local t=false
if m1:IsType(TYPE_TUNER) then t=true end
mg:RemoveCard(m1)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL)
local t2=mg:FilterSelect(tp,c7841112.synfilter2,1,1,nil,c,lv,mg,t) local t2=mg:FilterSelect(tp,c7841112.synfilter2,1,1,m1,c,lv,mg,m1)
local m2=t2:GetFirst() g:Merge(t2)
g:AddCard(m2) local mg2=mg:Filter(Card.IsNotTuner,nil)
lv=lv-m2:GetSynchroLevel(c) Duel.SetSelectedCard(g)
mg:RemoveCard(m2)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL)
local t3=mg:FilterSelect(tp,c7841112.synfilter3,1,1,nil,c,lv) local t3=mg2:SelectWithSumEqual(tp,Card.GetSynchroLevel,lv,1,1,c)
g:Merge(t3) g:Merge(t3)
c:SetMaterial(g) c:SetMaterial(g)
Duel.SendtoGrave(g,REASON_MATERIAL+REASON_SYNCHRO) Duel.SendtoGrave(g,REASON_MATERIAL+REASON_SYNCHRO)
......
...@@ -58,32 +58,29 @@ function c93157004.matfilter2(c,syncard) ...@@ -58,32 +58,29 @@ function c93157004.matfilter2(c,syncard)
return c:IsNotTuner() and (c:IsLocation(LOCATION_HAND) or c:IsFaceup()) and c:IsSetCard(0x30) and c:IsCanBeSynchroMaterial(syncard) return c:IsNotTuner() and (c:IsLocation(LOCATION_HAND) or c:IsFaceup()) and c:IsSetCard(0x30) and c:IsCanBeSynchroMaterial(syncard)
end end
function c93157004.synfilter1(c,syncard,lv,g1,g2,g3,g4) function c93157004.synfilter1(c,syncard,lv,g1,g2,g3,g4)
local tlv=c:GetSynchroLevel(syncard)
if lv-tlv<=0 then return false end
local f1=c.tuner_filter local f1=c.tuner_filter
if c:IsHasEffect(EFFECT_HAND_SYNCHRO) then if c:IsHasEffect(EFFECT_HAND_SYNCHRO) then
return g3:IsExists(c93157004.synfilter2,1,c,syncard,lv-tlv,g2,g4,f1,c) return g3:IsExists(c93157004.synfilter2,1,c,syncard,lv,g2,g4,f1,c)
else else
return g1:IsExists(c93157004.synfilter2,1,c,syncard,lv-tlv,g2,g4,f1,c) return g1:IsExists(c93157004.synfilter2,1,c,syncard,lv,g2,g4,f1,c)
end end
end end
function c93157004.synfilter2(c,syncard,lv,g2,g4,f1,tuner1) function c93157004.synfilter2(c,syncard,lv,g2,g4,f1,tuner1)
local tlv=c:GetSynchroLevel(syncard) if c==tuner1 then return false end
if lv-tlv<=0 then return false end
local f2=c.tuner_filter local f2=c.tuner_filter
if f1 and not f1(c) then return false end if f1 and not f1(c) then return false end
if f2 and not f2(tuner1) then return false end if f2 and not f2(tuner1) then return false end
Duel.SetSelectedCard(Group.FromCards(c,tuner1))
if (tuner1:IsHasEffect(EFFECT_HAND_SYNCHRO) and not c:IsLocation(LOCATION_HAND)) or c:IsHasEffect(EFFECT_HAND_SYNCHRO) then if (tuner1:IsHasEffect(EFFECT_HAND_SYNCHRO) and not c:IsLocation(LOCATION_HAND)) or c:IsHasEffect(EFFECT_HAND_SYNCHRO) then
return g4:IsExists(c93157004.synfilter3,1,nil,syncard,lv-tlv,f1,f2) local mg=g4:Filter(c93157004.synfilter3,nil,f1,f2)
return mg:CheckWithSumEqual(Card.GetSynchroLevel,lv,1,1,syncard)
else else
return g2:IsExists(c93157004.synfilter3,1,nil,syncard,lv-tlv,f1,f2) local mg=g2:Filter(c93157004.synfilter3,nil,f1,f2)
return mg:CheckWithSumEqual(Card.GetSynchroLevel,lv,1,1,syncard)
end end
end end
function c93157004.synfilter3(c,syncard,lv,f1,f2) function c93157004.synfilter3(c,f1,f2)
local mlv=c:GetSynchroLevel(syncard) return (not f1 or f1(c)) and (not f2 or f2(c))
local lv1=bit.band(mlv,0xffff)
local lv2=bit.rshift(mlv,16)
return (lv1==lv or lv2==lv) and (not f1 or f1(c)) and (not f2 or f2(c))
end end
function c93157004.syncon(e,c,tuner,mg) function c93157004.syncon(e,c,tuner,mg)
if c==nil then return true end if c==nil then return true end
...@@ -96,8 +93,8 @@ function c93157004.syncon(e,c,tuner,mg) ...@@ -96,8 +93,8 @@ function c93157004.syncon(e,c,tuner,mg)
if mg then if mg then
g1=mg:Filter(c93157004.matfilter1,nil,c) g1=mg:Filter(c93157004.matfilter1,nil,c)
g2=mg:Filter(c93157004.matfilter2,nil,c) g2=mg:Filter(c93157004.matfilter2,nil,c)
g3=mg:Filter(c93157004.matfilter1,nil,c) g3=g1:Clone()
g4=mg:Filter(c93157004.matfilter2,nil,c) g4=g2:Clone()
else else
g1=Duel.GetMatchingGroup(c93157004.matfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) g1=Duel.GetMatchingGroup(c93157004.matfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c)
g2=Duel.GetMatchingGroup(c93157004.matfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) g2=Duel.GetMatchingGroup(c93157004.matfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c)
...@@ -107,13 +104,11 @@ function c93157004.syncon(e,c,tuner,mg) ...@@ -107,13 +104,11 @@ function c93157004.syncon(e,c,tuner,mg)
local pe=Duel.IsPlayerAffectedByEffect(tp,EFFECT_MUST_BE_SMATERIAL) local pe=Duel.IsPlayerAffectedByEffect(tp,EFFECT_MUST_BE_SMATERIAL)
local lv=c:GetLevel() local lv=c:GetLevel()
if tuner then if tuner then
local tlv=tuner:GetSynchroLevel(c)
if lv-tlv<=0 then return false end
local f1=tuner.tuner_filter local f1=tuner.tuner_filter
if not pe then if not pe then
return g1:IsExists(c93157004.synfilter2,1,tuner,c,lv-tlv,g2,g4,f1,tuner) return g1:IsExists(c93157004.synfilter2,1,tuner,c,lv,g2,g4,f1,tuner)
else else
return c93157004.synfilter2(pe:GetOwner(),c,lv-tlv,g2,nil,f1,tuner) return c93157004.synfilter2(pe:GetOwner(),c,lv,g2,nil,f1,tuner)
end end
end end
if not pe then if not pe then
...@@ -131,8 +126,8 @@ function c93157004.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner,mg) ...@@ -131,8 +126,8 @@ function c93157004.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner,mg)
if mg then if mg then
g1=mg:Filter(c93157004.matfilter1,nil,c) g1=mg:Filter(c93157004.matfilter1,nil,c)
g2=mg:Filter(c93157004.matfilter2,nil,c) g2=mg:Filter(c93157004.matfilter2,nil,c)
g3=mg:Filter(c93157004.matfilter1,nil,c) g3=g1:Clone()
g4=mg:Filter(c93157004.matfilter2,nil,c) g4=g2:Clone()
else else
g1=Duel.GetMatchingGroup(c93157004.matfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) g1=Duel.GetMatchingGroup(c93157004.matfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c)
g2=Duel.GetMatchingGroup(c93157004.matfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) g2=Duel.GetMatchingGroup(c93157004.matfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c)
...@@ -143,32 +138,32 @@ function c93157004.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner,mg) ...@@ -143,32 +138,32 @@ function c93157004.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner,mg)
local lv=c:GetLevel() local lv=c:GetLevel()
if tuner then if tuner then
g:AddCard(tuner) g:AddCard(tuner)
local lv1=tuner:GetSynchroLevel(c)
local f1=tuner.tuner_filter local f1=tuner.tuner_filter
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL)
local tuner2=nil local tuner2=nil
if not pe then if not pe then
local t2=g1:FilterSelect(tp,c93157004.synfilter2,1,1,tuner,c,lv-lv1,g2,g4,f1,tuner) local t2=g1:FilterSelect(tp,c93157004.synfilter2,1,1,tuner,c,lv,g2,g4,f1,tuner)
tuner2=t2:GetFirst() tuner2=t2:GetFirst()
else else
tuner2=pe:GetOwner() tuner2=pe:GetOwner()
Group.FromCards(tuner2):Select(tp,1,1,nil) Group.FromCards(tuner2):Select(tp,1,1,nil)
end end
g:AddCard(tuner2) g:AddCard(tuner2)
local lv2=tuner2:GetSynchroLevel(c)
local f2=tuner2.tuner_filter local f2=tuner2.tuner_filter
local m3=nil local m3=nil
Duel.SetSelectedCard(g)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL)
if tuner2:IsHasEffect(EFFECT_HAND_SYNCHRO) then if tuner2:IsHasEffect(EFFECT_HAND_SYNCHRO) then
m3=g4:FilterSelect(tp,c93157004.synfilter3,1,1,nil,c,lv-lv1-lv2,f1,f2) local mg4=g4:Filter(c93157004.synfilter3,nil,f1,f2)
m3=mg4:SelectWithSumEqual(tp,Card.GetSynchroLevel,lv,1,1,c)
else else
m3=g2:FilterSelect(tp,c93157004.synfilter3,1,1,nil,c,lv-lv1-lv2,f1,f2) local mg2=g2:Filter(c93157004.synfilter3,nil,f1,f2)
m3=mg2:SelectWithSumEqual(tp,Card.GetSynchroLevel,lv,1,1,c)
end end
g:Merge(m3) g:Merge(m3)
else else
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL)
local tuner1=nil local tuner1=nil
local hand=nil
if not pe then if not pe then
local t1=g1:FilterSelect(tp,c93157004.synfilter1,1,1,nil,c,lv,g1,g2,g3,g4) local t1=g1:FilterSelect(tp,c93157004.synfilter1,1,1,nil,c,lv,g1,g2,g3,g4)
tuner1=t1:GetFirst() tuner1=t1:GetFirst()
...@@ -177,27 +172,27 @@ function c93157004.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner,mg) ...@@ -177,27 +172,27 @@ function c93157004.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner,mg)
Group.FromCards(tuner1):Select(tp,1,1,nil) Group.FromCards(tuner1):Select(tp,1,1,nil)
end end
g:AddCard(tuner1) g:AddCard(tuner1)
local lv1=tuner1:GetSynchroLevel(c)
local f1=tuner1.tuner_filter local f1=tuner1.tuner_filter
local tuner2=nil local tuner2=nil
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL)
if tuner1:IsHasEffect(EFFECT_HAND_SYNCHRO) then if tuner1:IsHasEffect(EFFECT_HAND_SYNCHRO) then
local t2=g3:FilterSelect(tp,c93157004.synfilter2,1,1,tuner1,c,lv-lv1,g2,g4,f1,tuner1) local t2=g3:FilterSelect(tp,c93157004.synfilter2,1,1,tuner1,c,lv,g2,g4,f1,tuner1)
tuner2=t2:GetFirst() tuner2=t2:GetFirst()
else else
local t2=g1:FilterSelect(tp,c93157004.synfilter2,1,1,tuner1,c,lv-lv1,g2,g4,f1,tuner1) local t2=g1:FilterSelect(tp,c93157004.synfilter2,1,1,tuner1,c,lv,g2,g4,f1,tuner1)
tuner2=t2:GetFirst() tuner2=t2:GetFirst()
end end
g:AddCard(tuner2) g:AddCard(tuner2)
local lv2=tuner2:GetSynchroLevel(c)
local f2=tuner2.tuner_filter local f2=tuner2.tuner_filter
local m3=nil local m3=nil
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL)
if (tuner1:IsHasEffect(EFFECT_HAND_SYNCHRO) and not tuner2:IsLocation(LOCATION_HAND)) if (tuner1:IsHasEffect(EFFECT_HAND_SYNCHRO) and not tuner2:IsLocation(LOCATION_HAND))
or tuner2:IsHasEffect(EFFECT_HAND_SYNCHRO) then or tuner2:IsHasEffect(EFFECT_HAND_SYNCHRO) then
m3=g4:FilterSelect(tp,c93157004.synfilter3,1,1,nil,c,lv-lv1-lv2,f1,f2) local mg4=g4:Filter(c93157004.synfilter3,nil,f1,f2)
m3=mg4:SelectWithSumEqual(tp,Card.GetSynchroLevel,lv,1,1,c)
else else
m3=g2:FilterSelect(tp,c93157004.synfilter3,1,1,nil,c,lv-lv1-lv2,f1,f2) local mg2=g2:Filter(c93157004.synfilter3,nil,f1,f2)
m3=mg2:SelectWithSumEqual(tp,Card.GetSynchroLevel,lv,1,1,c)
end end
g:Merge(m3) g:Merge(m3)
end end
......
...@@ -65,28 +65,23 @@ function c97489701.matfilter2(c,syncard) ...@@ -65,28 +65,23 @@ function c97489701.matfilter2(c,syncard)
return c:IsFaceup() and c:IsCode(70902743) and c:IsCanBeSynchroMaterial(syncard) return c:IsFaceup() and c:IsCode(70902743) and c:IsCanBeSynchroMaterial(syncard)
end end
function c97489701.synfilter1(c,syncard,lv,g1,g2,g3) function c97489701.synfilter1(c,syncard,lv,g1,g2,g3)
local tlv=c:GetSynchroLevel(syncard)
if lv-tlv<=0 then return false end
local f1=c.tuner_filter local f1=c.tuner_filter
if c:IsHasEffect(EFFECT_HAND_SYNCHRO) then if c:IsHasEffect(EFFECT_HAND_SYNCHRO) then
return g3:IsExists(c97489701.synfilter2,1,c,syncard,lv-tlv,g2,f1,c) return g3:IsExists(c97489701.synfilter2,1,c,syncard,lv,g2,f1,c)
else else
return g1:IsExists(c97489701.synfilter2,1,c,syncard,lv-tlv,g2,f1,c) return g1:IsExists(c97489701.synfilter2,1,c,syncard,lv,g2,f1,c)
end end
end end
function c97489701.synfilter2(c,syncard,lv,g2,f1,tuner1) function c97489701.synfilter2(c,syncard,lv,g2,f1,tuner1)
local tlv=c:GetSynchroLevel(syncard)
if lv-tlv<=0 then return false end
local f2=c.tuner_filter local f2=c.tuner_filter
if f1 and not f1(c) then return false end if f1 and not f1(c) then return false end
if f2 and not f2(tuner1) then return false end if f2 and not f2(tuner1) then return false end
return g2:IsExists(c97489701.synfilter3,1,nil,syncard,lv-tlv,f1,f2) local mg=g2:Filter(c97489701.synfilter3,nil,f1,f2)
Duel.SetSelectedCard(Group.FromCards(c,tuner1))
return mg:CheckWithSumEqual(Card.GetSynchroLevel,lv,1,1,syncard)
end end
function c97489701.synfilter3(c,syncard,lv,f1,f2) function c97489701.synfilter3(c,f1,f2)
local mlv=c:GetSynchroLevel(syncard) return (not f1 or f1(c)) and (not f2 or f2(c))
local lv1=bit.band(mlv,0xffff)
local lv2=bit.rshift(mlv,16)
return (lv1==lv or lv2==lv) and (not f1 or f1(c)) and (not f2 or f2(c))
end end
function c97489701.syncon(e,c,tuner,mg) function c97489701.syncon(e,c,tuner,mg)
if c==nil then return true end if c==nil then return true end
...@@ -98,7 +93,7 @@ function c97489701.syncon(e,c,tuner,mg) ...@@ -98,7 +93,7 @@ function c97489701.syncon(e,c,tuner,mg)
if mg then if mg then
g1=mg:Filter(c97489701.matfilter1,nil,c) g1=mg:Filter(c97489701.matfilter1,nil,c)
g2=mg:Filter(c97489701.matfilter2,nil,c) g2=mg:Filter(c97489701.matfilter2,nil,c)
g3=mg:Filter(c97489701.matfilter1,nil,c) g3=g1:Clone()
else else
g1=Duel.GetMatchingGroup(c97489701.matfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) g1=Duel.GetMatchingGroup(c97489701.matfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c)
g2=Duel.GetMatchingGroup(c97489701.matfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) g2=Duel.GetMatchingGroup(c97489701.matfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c)
...@@ -107,19 +102,17 @@ function c97489701.syncon(e,c,tuner,mg) ...@@ -107,19 +102,17 @@ function c97489701.syncon(e,c,tuner,mg)
local pe=Duel.IsPlayerAffectedByEffect(tp,EFFECT_MUST_BE_SMATERIAL) local pe=Duel.IsPlayerAffectedByEffect(tp,EFFECT_MUST_BE_SMATERIAL)
local lv=c:GetLevel() local lv=c:GetLevel()
if tuner then if tuner then
local tlv=tuner:GetSynchroLevel(c)
if lv-tlv<=0 then return false end
local f1=tuner.tuner_filter local f1=tuner.tuner_filter
if not pe then if not pe then
return g1:IsExists(c97489701.synfilter2,1,tuner,c,lv-tlv,g2,f1,tuner) return g1:IsExists(c97489701.synfilter2,1,tuner,c,lv,g2,f1,tuner)
else else
return c97489701.synfilter2(pe:GetOwner(),c,lv-tlv,g2,f1,tuner) return c97489701.synfilter2(pe:GetOwner(),c,lv,g2,f1,tuner)
end end
end end
if not pe then if not pe then
return g1:IsExists(c97489701.synfilter1,1,nil,c,lv,g1,g2,g3) return g1:IsExists(c97489701.synfilter1,1,nil,c,lv,g1,g2,g3)
else else
return c97489701.synfilter1(pe:GetOwner(),c,lv,g1,g2) return c97489701.synfilter1(pe:GetOwner(),c,lv,g1,g2,g3)
end end
end end
function c97489701.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner,mg) function c97489701.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner,mg)
...@@ -130,7 +123,7 @@ function c97489701.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner,mg) ...@@ -130,7 +123,7 @@ function c97489701.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner,mg)
if mg then if mg then
g1=mg:Filter(c97489701.matfilter1,nil,c) g1=mg:Filter(c97489701.matfilter1,nil,c)
g2=mg:Filter(c97489701.matfilter2,nil,c) g2=mg:Filter(c97489701.matfilter2,nil,c)
g3=mg:Filter(c97489701.matfilter1,nil,c) g3=g1:Clone()
else else
g1=Duel.GetMatchingGroup(c97489701.matfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) g1=Duel.GetMatchingGroup(c97489701.matfilter1,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c)
g2=Duel.GetMatchingGroup(c97489701.matfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c) g2=Duel.GetMatchingGroup(c97489701.matfilter2,tp,LOCATION_MZONE,LOCATION_MZONE,nil,c)
...@@ -140,22 +133,22 @@ function c97489701.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner,mg) ...@@ -140,22 +133,22 @@ function c97489701.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner,mg)
local lv=c:GetLevel() local lv=c:GetLevel()
if tuner then if tuner then
g:AddCard(tuner) g:AddCard(tuner)
local lv1=tuner:GetSynchroLevel(c)
local f1=tuner.tuner_filter local f1=tuner.tuner_filter
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL)
local tuner2=nil local tuner2=nil
if not pe then if not pe then
local t2=g1:FilterSelect(tp,c97489701.synfilter2,1,1,tuner,c,lv-lv1,g2,f1,tuner) local t2=g1:FilterSelect(tp,c97489701.synfilter2,1,1,tuner,c,lv,g2,f1,tuner)
tuner2=t2:GetFirst() tuner2=t2:GetFirst()
else else
tuner2=pe:GetOwner() tuner2=pe:GetOwner()
Group.FromCards(tuner2):Select(tp,1,1,nil) Group.FromCards(tuner2):Select(tp,1,1,nil)
end end
g:AddCard(tuner2) g:AddCard(tuner2)
local lv2=tuner2:GetSynchroLevel(c)
local f2=tuner2.tuner_filter local f2=tuner2.tuner_filter
local mg2=g2:Filter(c97489701.synfilter3,nil,f1,f2)
Duel.SetSelectedCard(g)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL)
local m3=g2:FilterSelect(tp,c97489701.synfilter3,1,1,nil,c,lv-lv1-lv2,f1,f2) local m3=mg2:SelectWithSumEqual(tp,Card.GetSynchroLevel,lv,1,1,c)
g:Merge(m3) g:Merge(m3)
else else
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL)
...@@ -168,21 +161,21 @@ function c97489701.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner,mg) ...@@ -168,21 +161,21 @@ function c97489701.synop(e,tp,eg,ep,ev,re,r,rp,c,tuner,mg)
Group.FromCards(tuner1):Select(tp,1,1,nil) Group.FromCards(tuner1):Select(tp,1,1,nil)
end end
g:AddCard(tuner1) g:AddCard(tuner1)
local lv1=tuner1:GetSynchroLevel(c)
local f1=tuner1.tuner_filter local f1=tuner1.tuner_filter
local t2=nil local t2=nil
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL)
if tuner1:IsHasEffect(EFFECT_HAND_SYNCHRO) then if tuner1:IsHasEffect(EFFECT_HAND_SYNCHRO) then
t2=g3:FilterSelect(tp,c97489701.synfilter2,1,1,tuner1,c,lv-lv1,g2,f1,tuner1) t2=g3:FilterSelect(tp,c97489701.synfilter2,1,1,tuner1,c,lv,g2,f1,tuner1)
else else
t2=g1:FilterSelect(tp,c97489701.synfilter2,1,1,tuner1,c,lv-lv1,g2,f1,tuner1) t2=g1:FilterSelect(tp,c97489701.synfilter2,1,1,tuner1,c,lv,g2,f1,tuner1)
end end
local tuner2=t2:GetFirst() local tuner2=t2:GetFirst()
g:AddCard(tuner2) g:AddCard(tuner2)
local lv2=tuner2:GetSynchroLevel(c)
local f2=tuner2.tuner_filter local f2=tuner2.tuner_filter
local mg2=g2:Filter(c97489701.synfilter3,nil,f1,f2)
Duel.SetSelectedCard(g)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SMATERIAL)
local m3=g2:FilterSelect(tp,c97489701.synfilter3,1,1,nil,c,lv-lv1-lv2,f1,f2) local m3=mg2:SelectWithSumEqual(tp,Card.GetSynchroLevel,lv,1,1,c)
g:Merge(m3) g:Merge(m3)
end end
c:SetMaterial(g) c:SetMaterial(g)
......
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