Commit e206b55a authored by wind2009's avatar wind2009

Fix

parent e9d90e5e
Pipeline #43411 passed with stages
in 3 minutes and 32 seconds
......@@ -19,37 +19,35 @@ function s.xyzfiltr(c,g)
return c:IsSetCard(0x8f,0x54,0x59,0x82,0x206f,0x6d,0x48,0x107e,0x207e)
and c:IsXyzSummonable(g,2,2)
end
function s.CreateTempSwapLevelEffect(ec,c1,c2,reset)
local reset_flag=reset and RESET_EVENT+RESETS_STANDARD or 0
function s.CreateTempSwapLevelEffect(ec,c1,c2)
local e1=Effect.CreateEffect(ec)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_XYZ_LEVEL)
e1:SetValue(s.xyzlv)
e1:SetLabel(c2:GetLevel())
e1:SetReset(reset_flag)
e1:SetReset(RESET_EVENT+RESETS_STANDARD)
c1:RegisterEffect(e1,true)
return e1
end
function s.SetTempSwapLevel(ec,c,reset,callback)
local e1=nil
local e2=nil
if ec:IsLevelAbove(1) then
e1=s.CreateTempSwapLevelEffect(ec,c,ec,reset)
e1=s.CreateTempSwapLevelEffect(ec,c,ec)
end
if c:IsLevelAbove(1) then
e2=s.CreateTempSwapLevelEffect(c,ec,c,reset)
e2=s.CreateTempSwapLevelEffect(c,ec,c)
end
local res=callback()
if e1 then e1:Reset() end
if e2 then e2:Reset() end
if reset then
if e1 then e1:Reset() end
if e2 then e2:Reset() end
end
return res
end
function s.spfilter(c,e,tp,ec)
if not (not c:IsCode(id) and c:IsSetCard(0x8f,0x54,0x59,0x82) and c:IsLevelAbove(1) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)) then return false end
return s.SetTempSwapLevel(ec,c,false,function()
return s.SetTempSwapLevel(ec,c,true,function()
return Duel.IsExistingMatchingCard(s.xyzfiltr,tp,LOCATION_EXTRA,0,1,nil,Group.FromCards(c,ec))
end)
end
......@@ -75,7 +73,7 @@ function s.spop(e,tp,eg,ep,ev,re,r,rp)
if Duel.SpecialSummon(g,0,tp,tp,false,false,POS_FACEUP)==2
and g:IsExists(Card.IsLocation,2,nil,LOCATION_MZONE)
and g:IsExists(Card.IsFaceup,2,nil) then
s.SetTempSwapLevel(c,tc,true,function()
s.SetTempSwapLevel(c,tc,false,function()
Duel.AdjustAll()
local xyzg=Duel.GetMatchingGroup(s.xyzfiltr,tp,LOCATION_EXTRA,0,nil,g)
if xyzg:GetCount()>0 then
......
......@@ -33,21 +33,20 @@ end
function s.spcon(e,tp,eg,ep,ev,re,r,rp)
return eg:IsExists(s.cfilter,1,nil,1-tp)
end
function s.CreateTempLevelEffect(ec,level_source,reset)
local reset_flag=reset and RESET_EVENT+RESETS_STANDARD or 0
function s.CreateTempLevelEffect(ec,level_source)
local e1=Effect.CreateEffect(ec)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_XYZ_LEVEL)
e1:SetValue(s.xyzlv)
e1:SetLabel(level_source:GetLevel())
e1:SetReset(reset_flag)
e1:SetReset(RESET_EVENT+RESETS_STANDARD)
ec:RegisterEffect(e1,true)
return e1
end
function s.SetTempLevel(ec,level_source,reset,callback)
local e1=s.CreateTempLevelEffect(ec,level_source,reset)
local e1=s.CreateTempLevelEffect(ec,level_source)
local res=callback()
if e1 then e1:Reset() end
if e1 and reset then e1:Reset() end
return res
end
function s.xyzlv(e,c,rc)
......@@ -56,7 +55,7 @@ end
function s.xyzfilter(c,tp,mc)
if not c:IsFaceup() or not c:IsLevelAbove(1) then return false end
local mg=Group.FromCards(c,mc)
return s.SetTempLevel(mc,c,false,function()
return s.SetTempLevel(mc,c,true,function()
return Duel.IsExistingMatchingCard(Card.IsXyzSummonable,tp,LOCATION_EXTRA,0,1,nil,mg,2,2)
end)
end
......@@ -78,7 +77,7 @@ function s.spop(e,tp,eg,ep,ev,re,r,rp)
if not tc:IsRelateToChain() or tc:IsFacedown() or not tc:IsControler(tp) then return end
local mg=Group.FromCards(c,tc)
if mg:FilterCount(Card.IsLocation,nil,LOCATION_MZONE)<2 then return end
s.SetTempLevel(c,tc,true,function()
s.SetTempLevel(c,tc,false,function()
Duel.AdjustAll()
local xyzg=Duel.GetMatchingGroup(Card.IsXyzSummonable,tp,LOCATION_EXTRA,0,nil,mg,2,2)
if xyzg:GetCount()>0 then
......
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