Commit 978dd040 authored by VanillaSalt's avatar VanillaSalt

fix

parent 655ecc3b
--ルーンアイズ・ペンデュラム・ドラゴン
function c1516510.initial_effect(c)
c:EnableReviveLimit()
--fusion material
c:EnableReviveLimit()
aux.AddFusionProcCodeFun(c,16178681,aux.FilterBoolFunction(Card.IsRace,RACE_SPELLCASTER),1,true,false)
--multi attack
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(aux.FConditionCodeFun(16178681,aux.FilterBoolFunction(Card.IsRace,RACE_SPELLCASTER),1,true,false))
e1:SetOperation(c1516510.fsop)
e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS)
e1:SetCode(EVENT_SPSUMMON_SUCCESS)
e1:SetCondition(c1516510.condition)
e1:SetOperation(c1516510.operation)
c:RegisterEffect(e1)
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_SINGLE)
e2:SetCode(EFFECT_MATERIAL_CHECK)
e2:SetValue(c1516510.valcheck)
e2:SetLabelObject(e1)
c:RegisterEffect(e2)
end
c1516510.material_count=1
c1516510.material={16178681}
function c1516510.imfilter(c)
return c:IsLocation(LOCATION_MZONE) and c:GetSummonType()==SUMMON_TYPE_PENDULUM
function c1516510.condition(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetSummonType()==SUMMON_TYPE_FUSION
end
function c1516510.fsop(e,tp,eg,ep,ev,re,r,rp,gc,chkf)
local g1=nil
local g2=nil
if gc then
g1=Group.FromCards(gc)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
g2=eg:FilterSelect(tp,Card.IsRace,1,1,nil,RACE_SPELLCASTER)
Duel.SetFusionMaterial(g2)
g1:Merge(g2)
else
local sg1=Group.CreateGroup()
local sg2=Group.CreateGroup()
local fs=false
local tc=eg:GetFirst()
while tc do
if tc:IsCode(16178681) or tc:IsHasEffect(EFFECT_FUSION_SUBSTITUTE) then sg1:AddCard(tc) end
if tc:IsRace(RACE_SPELLCASTER) then
sg2:AddCard(tc)
if aux.FConditionCheckF(tc,chkf) then fs=true end
end
tc=eg:GetNext()
end
if sg2:GetCount()==1 then
sg1:Sub(sg2)
end
if chkf~=PLAYER_NONE then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
if fs then g1=sg1:Select(tp,1,1,nil)
else g1=sg1:FilterSelect(tp,aux.FConditionCheckF,1,1,nil,chkf) end
local tc1=g1:GetFirst()
sg2:RemoveCard(tc1)
if aux.FConditionCheckF(tc1,chkf) or sg2:GetCount()==1 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
g2=sg2:Select(tp,1,1,tc1)
else
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
g2=sg2:FilterSelect(tp,aux.FConditionCheckF,1,1,tc1,chkf)
end
function c1516510.operation(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local flag=e:GetLabel()
if bit.band(flag,0x3)~=0 then
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_EXTRA_ATTACK)
e1:SetProperty(EFFECT_FLAG_CLIENT_HINT)
if bit.band(flag,0x1)~=0 then
e1:SetDescription(aux.Stringid(1516510,0))
e1:SetValue(1)
else
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
g1=sg1:Select(tp,1,1,nil)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_FMATERIAL)
g2=sg2:Select(tp,1,1,g1:GetFirst())
e1:SetDescription(aux.Stringid(1516510,1))
e1:SetValue(2)
end
g1:Merge(g2)
Duel.SetFusionMaterial(g1)
e1:SetReset(RESET_EVENT+0x1fe0000)
c:RegisterEffect(e1)
end
local c=e:GetHandler()
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_EXTRA_ATTACK)
e1:SetProperty(EFFECT_FLAG_CLIENT_HINT)
if g2:GetFirst():GetOriginalLevel()<5 then
e1:SetDescription(aux.Stringid(1516510,0))
e1:SetValue(1)
else
e1:SetDescription(aux.Stringid(1516510,1))
e1:SetValue(2)
end
e1:SetReset(RESET_EVENT+0xfe0000)
c:RegisterEffect(e1)
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_SINGLE)
e2:SetCode(EFFECT_CANNOT_DIRECT_ATTACK)
e2:SetCondition(c1516510.dircon)
e2:SetReset(RESET_EVENT+0xfe0000)
e2:SetReset(RESET_EVENT+0x1fe0000)
c:RegisterEffect(e2)
local e3=e2:Clone()
e3:SetCode(EFFECT_CANNOT_ATTACK)
e3:SetCondition(c1516510.atkcon)
c:RegisterEffect(e3)
if g1:IsExists(c1516510.imfilter,1,nil) then
if bit.band(flag,0x4)~=0 then
local e4=Effect.CreateEffect(c)
e4:SetType(EFFECT_TYPE_SINGLE)
e4:SetCode(EFFECT_IMMUNE_EFFECT)
e4:SetValue(c1516510.efilter)
e4:SetReset(RESET_EVENT+0xfe0000+RESET_PHASE+RESET_END)
e4:SetOwnerPlayer(tp)
e4:SetReset(RESET_EVENT+0x1fe0000+RESET_PHASE+RESET_END)
c:RegisterEffect(e4)
end
end
......@@ -102,5 +65,26 @@ function c1516510.atkcon(e)
return e:GetHandler():IsDirectAttacked()
end
function c1516510.efilter(e,re)
return e:GetHandlerPlayer()~=re:GetHandlerPlayer()
return e:GetOwnerPlayer()~=re:GetOwnerPlayer()
end
function c1516510.lvfilter(c)
return not c:IsCode(16178681)
end
function c1516510.imfilter(c)
return c:IsLocation(LOCATION_MZONE) and c:GetSummonType()==SUMMON_TYPE_PENDULUM
end
function c1516510.valcheck(e,c)
local g=c:GetMaterial()
local flag=0
local lg=g:Filter(c1516510.lvfilter,nil)
local lv=lg:GetFirst():GetOriginalLevel()
if lv>0 and lv<5 then
flag=0x1
elseif lv>4 then
flag=0x2
end
if g:IsExists(c1516510.imfilter,1,nil) then
flag=flag+0x4
end
e:GetLabelObject():SetLabel(flag)
end
......@@ -69,7 +69,7 @@ function c20409757.slcon(e)
end
function c20409757.filter(c,tp)
return c:IsControler(tp) and c:IsLocation(LOCATION_SZONE) and (c:GetSequence()==6 or c:GetSequence()==7)
and c:IsReason(REASON_EFFECT) and c:GetReasonPlayer()==1-tp
and c:IsReason(REASON_EFFECT) and c:GetReasonPlayer()==1-tp
end
function c20409757.indtg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return eg:IsExists(c20409757.filter,1,nil,tp) end
......
......@@ -28,7 +28,7 @@ function c23536866.mfilter1(c,exg)
return exg:IsExists(c23536866.mfilter2,1,nil,c)
end
function c23536866.mfilter2(c,mc)
return not c.xyz_filter or c.xyz_filter(mc)
return c.xyz_filter(mc)
end
function c23536866.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return false end
......
......@@ -58,7 +58,7 @@ function c25704359.spcon(e,tp,eg,ep,ev,re,r,rp)
end
function c25704359.spfilter(c,e,tp,att)
return c:IsRace(RACE_SPELLCASTER) and c:GetDefence()==1500 and c:IsAttribute(att)
and (c:IsCanBeSpecialSummoned(e,0,tp,false,false) or c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEDOWN))
and (c:IsCanBeSpecialSummoned(e,0,tp,false,false) or c:IsCanBeSpecialSummoned(e,0,tp,false,false,POS_FACEDOWN))
end
function c25704359.sptg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then
......
......@@ -12,10 +12,10 @@ function c33252803.initial_effect(c)
end
function c33252803.filter1(c,e,tp)
return c:IsFaceup() and c:IsSetCard(0x48) and not c:IsSetCard(0x1048)
and Duel.IsExistingMatchingCard(c33252803.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c:GetRank()+1,c.xyz_number)
and Duel.IsExistingMatchingCard(c33252803.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,c:GetRank()+1,c.xyz_number)
end
function c33252803.filter2(c,e,tp,rank,no)
return c:GetRank()==rank and c:IsSetCard(0x1048) and c.xyz_number==no
function c33252803.filter2(c,e,tp,mc,rk,no)
return c:GetRank()==rk and c:IsSetCard(0x1048) and c.xyz_number==no and mc:IsCanBeXyzMaterial(c,true)
and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false)
end
function c33252803.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
......@@ -31,7 +31,7 @@ function c33252803.activate(e,tp,eg,ep,ev,re,r,rp)
local tc=Duel.GetFirstTarget()
if tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsControler(1-tp) or tc:IsImmuneToEffect(e) then return end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectMatchingCard(tp,c33252803.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc:GetRank()+1,tc.xyz_number)
local g=Duel.SelectMatchingCard(tp,c33252803.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc,tc:GetRank()+1,tc.xyz_number)
local sc=g:GetFirst()
if sc then
local mg=tc:GetOverlayGroup()
......
......@@ -20,8 +20,8 @@ function c36953371.initial_effect(c)
c:RegisterEffect(e2)
end
function c36953371.descon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO and
not Duel.IsExistingMatchingCard(Card.IsType,tp,LOCATION_GRAVE,0,1,nil,TYPE_SPELL+TYPE_TRAP)
return e:GetHandler():GetSummonType()==SUMMON_TYPE_SYNCHRO
and not Duel.IsExistingMatchingCard(Card.IsType,tp,LOCATION_GRAVE,0,1,nil,TYPE_SPELL+TYPE_TRAP)
end
function c36953371.filter(c)
return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsDestructable()
......
......@@ -29,11 +29,11 @@ function c45950291.filter1(c,e,tp)
local rk=c:GetRank()
return rk>0 and c:IsFaceup()
and not Duel.IsExistingMatchingCard(c45950291.cfilter,tp,LOCATION_MZONE,0,1,nil,rk)
and Duel.IsExistingMatchingCard(c45950291.filter2,tp,LOCATION_EXTRA,0,1,nil,rk+2,c:GetRace(),c:GetAttribute(),c:GetCode(),e,tp)
and Duel.IsExistingMatchingCard(c45950291.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,rk+2,c:GetRace(),c:GetAttribute(),c:GetCode())
end
function c45950291.filter2(c,rk,rc,att,code,e,tp)
function c45950291.filter2(c,e,tp,mc,rk,rc,att,code)
if c:IsCode(6165656) and code~=48995978 then return false end
return c:GetRank()==rk and c:IsRace(rc) and c:IsAttribute(att)
return c:GetRank()==rk and c:IsRace(rc) and c:IsAttribute(att) and mc:IsCanBeXyzMaterial(c,true)
and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false)
end
function c45950291.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
......@@ -49,7 +49,7 @@ function c45950291.activate(e,tp,eg,ep,ev,re,r,rp)
local tc=Duel.GetFirstTarget()
if tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsControler(1-tp) or tc:IsImmuneToEffect(e) then return end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectMatchingCard(tp,c45950291.filter2,tp,LOCATION_EXTRA,0,1,1,nil,tc:GetRank()+2,tc:GetRace(),tc:GetAttribute(),tc:GetCode(),e,tp)
local g=Duel.SelectMatchingCard(tp,c45950291.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc,tc:GetRank()+2,tc:GetRace(),tc:GetAttribute(),tc:GetCode())
local sc=g:GetFirst()
if sc then
local mg=tc:GetOverlayGroup()
......
......@@ -12,11 +12,12 @@ function c47660516.initial_effect(c)
end
function c47660516.filter1(c,e,tp)
local rk=c:GetRank()
return rk>0 and c:IsFaceup() and Duel.IsExistingMatchingCard(c47660516.filter2,tp,LOCATION_EXTRA,0,1,nil,rk+1,c:GetRace(),c:GetCode(),e,tp)
return rk>0 and c:IsFaceup()
and Duel.IsExistingMatchingCard(c47660516.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,rk+1,c:GetRace(),c:GetCode())
end
function c47660516.filter2(c,rk,rc,code,e,tp)
function c47660516.filter2(c,e,tp,mc,rk,rc,code)
if c:IsCode(6165656) and code~=48995978 then return false end
return c:GetRank()==rk and c:IsRace(rc) and (c:IsSetCard(0x1048) or c:IsSetCard(0x1073))
return c:GetRank()==rk and c:IsRace(rc) and (c:IsSetCard(0x1048) or c:IsSetCard(0x1073)) and mc:IsCanBeXyzMaterial(c,true)
and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false)
end
function c47660516.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
......@@ -32,7 +33,7 @@ function c47660516.activate(e,tp,eg,ep,ev,re,r,rp)
local tc=Duel.GetFirstTarget()
if tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsControler(1-tp) or tc:IsImmuneToEffect(e) then return end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectMatchingCard(tp,c47660516.filter2,tp,LOCATION_EXTRA,0,1,1,nil,tc:GetRank()+1,tc:GetRace(),tc:GetCode(),e,tp)
local g=Duel.SelectMatchingCard(tp,c47660516.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc,tc:GetRank()+1,tc:GetRace(),tc:GetCode())
local sc=g:GetFirst()
if sc then
local mg=tc:GetOverlayGroup()
......
......@@ -12,11 +12,12 @@ function c48333324.initial_effect(c)
end
function c48333324.filter1(c,e,tp)
local rk=c:GetRank()
return rk>0 and c:IsFaceup() and Duel.IsExistingMatchingCard(c48333324.filter2,tp,LOCATION_EXTRA,0,1,nil,rk+1,c:GetRace(),c:GetCode(),e,tp)
return rk>0 and c:IsFaceup()
and Duel.IsExistingMatchingCard(c48333324.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,rk+1,c:GetRace(),c:GetCode())
end
function c48333324.filter2(c,rk,rc,code,e,tp)
function c48333324.filter2(c,e,tp,mc,rk,rc,code)
if c:IsCode(6165656) and code~=48995978 then return false end
return c:GetRank()==rk and c:IsRace(rc) and c:IsSetCard(0x1048)
return c:GetRank()==rk and c:IsRace(rc) and c:IsSetCard(0x1048) and mc:IsCanBeXyzMaterial(c,true)
and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false)
end
function c48333324.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
......@@ -36,7 +37,7 @@ function c48333324.activate(e,tp,eg,ep,ev,re,r,rp)
local tc=Duel.GetFirstTarget()
if tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsControler(1-tp) or tc:IsImmuneToEffect(e) then return end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectMatchingCard(tp,c48333324.filter2,tp,LOCATION_EXTRA,0,1,1,nil,tc:GetRank()+1,tc:GetRace(),tc:GetCode(),e,tp)
local g=Duel.SelectMatchingCard(tp,c48333324.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc,tc:GetRank()+1,tc:GetRace(),tc:GetCode())
local sc=g:GetFirst()
if sc then
local mg=tc:GetOverlayGroup()
......
--
--閃光の宝札
function c48356796.initial_effect(c)
--Activate
local e1=Effect.CreateEffect(c)
......@@ -28,7 +28,7 @@ end
function c48356796.accon(e,tp,eg,ep,ev,re,r,rp)
local c=Duel.GetLocationCount(tp,LOCATION_SZONE)
if e:GetHandler():IsFacedown() then return c>0 end
return c>1
return c>1
end
function c48356796.filter(c)
return c:IsCode(48356796) and c:IsFaceup()
......
......@@ -29,7 +29,7 @@ function c494922.setcon(e,tp,eg,ep,ev,re,r,rp)
return not Duel.IsExistingMatchingCard(c494922.filter,tp,LOCATION_GRAVE,0,1,nil)
end
function c494922.setfilter(c,tp)
return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsSSetable(true) and (c:IsType(TYPE_FIELD) or Duel.GetLocationCount(tp,LOCATION_SZONE)>0)
return c:IsType(TYPE_SPELL+TYPE_TRAP) and c:IsSSetable(true) and (c:IsType(TYPE_FIELD) or Duel.GetLocationCount(tp,LOCATION_SZONE)>0)
end
function c494922.settg(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsControler(1-tp) and chkc:IsLocation(LOCATION_GRAVE) and c494922.setfilter(chkc,tp) end
......
......@@ -61,7 +61,7 @@ function c49919798.cpop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local tc=Duel.GetFirstTarget()
if c:IsRelateToEffect(e) and c:IsFaceup() and tc:IsRelateToEffect(e) then
local code=tc:GetCode()
local code=tc:GetOriginalCode()
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
......
......@@ -32,7 +32,7 @@ function c56611470.mfilter1(c,exg)
return exg:IsExists(c56611470.mfilter2,1,nil,c)
end
function c56611470.mfilter2(c,mc)
return not c.xyz_filter or c.xyz_filter(mc)
return c.xyz_filter(mc)
end
function c56611470.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return false end
......
......@@ -39,10 +39,11 @@ function c57734012.filter1(c,e,tp)
local no=c.xyz_number
return no and no>=101 and no<=107 and c:IsSetCard(0x48) and not c:IsSetCard(0x1048)
and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and not c:IsHasEffect(EFFECT_NECRO_VALLEY)
and Duel.IsExistingMatchingCard(c57734012.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,no)
and Duel.IsExistingMatchingCard(c57734012.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,no)
end
function c57734012.filter2(c,e,tp,no)
return c.xyz_number==no and c:IsSetCard(0x1048) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false)
function c57734012.filter2(c,e,tp,mc,no)
return c.xyz_number==no and c:IsSetCard(0x1048) and mc:IsCanBeXyzMaterial(c,true)
and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false)
end
function c57734012.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsPlayerCanSpecialSummonCount(tp,2)
......@@ -58,7 +59,7 @@ function c57734012.activate(e,tp,eg,ep,ev,re,r,rp)
local tc1=g1:GetFirst()
if tc1 and Duel.SpecialSummon(tc1,0,tp,tp,false,false,POS_FACEUP)~=0 then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g2=Duel.SelectMatchingCard(tp,c57734012.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc1.xyz_number)
local g2=Duel.SelectMatchingCard(tp,c57734012.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc1,tc1.xyz_number)
local tc2=g2:GetFirst()
if tc2 then
Duel.Overlay(tc2,g1)
......
......@@ -83,6 +83,6 @@ function c59650656.spop(e,tp,eg,ep,ev,re,r,rp)
local tc=Duel.GetFirstTarget()
_replace_count=_replace_count+1
if _replace_count<=_replace_max and tc:IsRelateToEffect(e) then
Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)
Duel.SpecialSummon(tc,0,tp,tp,false,false,POS_FACEUP)
end
end
......@@ -21,7 +21,7 @@ function c61314842.mfilter1(c,exg)
return exg:IsExists(c61314842.mfilter2,1,nil,c)
end
function c61314842.mfilter2(c,mc)
return not c.xyz_filter or c.xyz_filter(mc)
return c.xyz_filter(mc)
end
function c61314842.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return false end
......
......@@ -19,7 +19,7 @@ function c76348260.cfilter(c)
end
function c76348260.condition(e,tp,eg,ep,ev,re,r,rp)
return tp==Duel.GetTurnPlayer() and not Duel.CheckPhaseActivity()
and Duel.IsExistingMatchingCard(c76348260.cfilter,tp,LOCATION_MZONE,0,1,nil)
and Duel.IsExistingMatchingCard(c76348260.cfilter,tp,LOCATION_MZONE,0,1,nil)
end
function c76348260.costfilter(c)
return c:IsType(TYPE_SPELL) and c:IsAbleToGraveAsCost()
......
......@@ -42,7 +42,7 @@ function c82382815.activate1(e,tp,eg,ep,ev,re,r,rp)
end
function c82382815.condition2(e,tp,eg,ep,ev,re,r,rp)
return re:IsHasType(EFFECT_TYPE_ACTIVATE) and Duel.IsChainNegatable(ev)
and Duel.IsExistingMatchingCard(c82382815.cfilter,tp,LOCATION_MZONE,0,1,nil)
and Duel.IsExistingMatchingCard(c82382815.cfilter,tp,LOCATION_MZONE,0,1,nil)
end
function c82382815.target2(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end
......
......@@ -20,7 +20,7 @@ end
function c90200789.filter1(c,tp,slv)
local lv1=c:GetLevel()
return c:IsFaceup() and c:IsSetCard(0x2b) and lv1>0
and Duel.IsExistingTarget(c90200789.filter2,tp,0,LOCATION_MZONE,1,nil,lv1,slv)
and Duel.IsExistingTarget(c90200789.filter2,tp,0,LOCATION_MZONE,1,nil,lv1,slv)
end
function c90200789.filter2(c,lv1,slv)
local lv2=c:GetLevel()
......
......@@ -12,16 +12,16 @@ function c92365601.initial_effect(c)
end
function c92365601.filter1(c,e,tp)
return c:IsFaceup() and c:GetRank()==4
and Duel.IsExistingMatchingCard(c92365601.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c)
end
function c92365601.filter2(c,e,tp)
return c:GetRank()==5 and c:IsSetCard(0x1048)
function c92365601.filter2(c,e,tp,mc)
return c:GetRank()==5 and c:IsSetCard(0x1048) and mc:IsCanBeXyzMaterial(c,true)
and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false)
end
function c92365601.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
if chkc then return chkc:IsControler(tp) and chkc:IsLocation(LOCATION_MZONE) and c92365601.filter1(chkc,e,tp) end
if chk==0 then return Duel.GetLocationCount(tp,LOCATION_MZONE)>-1
and Duel.IsExistingTarget(c92365601.filter1,tp,LOCATION_MZONE,0,1,nil,e,tp)
and Duel.IsExistingMatchingCard(c92365601.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp) end
and Duel.IsExistingTarget(c92365601.filter1,tp,LOCATION_MZONE,0,1,nil,e,tp) end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TARGET)
local g=Duel.SelectTarget(tp,c92365601.filter1,tp,LOCATION_MZONE,0,1,1,nil,e,tp)
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA)
......@@ -31,7 +31,7 @@ function c92365601.activate(e,tp,eg,ep,ev,re,r,rp)
local tc=Duel.GetFirstTarget()
if tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsControler(1-tp) or tc:IsImmuneToEffect(e) then return end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectMatchingCard(tp,c92365601.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp)
local g=Duel.SelectMatchingCard(tp,c92365601.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc)
local sc=g:GetFirst()
if sc then
local mg=tc:GetOverlayGroup()
......
......@@ -39,5 +39,5 @@ function c93108433.activate(e,tp,eg,ep,ev,re,r,rp)
Duel.ShuffleDeck(tp)
Duel.BreakEffect()
Duel.Draw(tp,ct,REASON_EFFECT)
end
end
end
......@@ -25,11 +25,11 @@ end
function c94220427.filter1(c,e,tp)
local rk=c:GetRank()
return rk>4 and c:IsFaceup()
and Duel.IsExistingMatchingCard(c94220427.filter2,tp,LOCATION_EXTRA,0,1,nil,rk+1,c:GetCode(),e,tp)
and Duel.IsExistingMatchingCard(c94220427.filter2,tp,LOCATION_EXTRA,0,1,nil,e,tp,c,rk+1,c:GetCode())
end
function c94220427.filter2(c,rk,code,e,tp)
function c94220427.filter2(c,e,tp,mc,rk,code)
if c:IsCode(6165656) and code~=48995978 then return false end
return c:GetRank()==rk and (c:IsSetCard(0x1048) or c:IsSetCard(0x1073))
return c:GetRank()==rk and (c:IsSetCard(0x1048) or c:IsSetCard(0x1073)) and mc:IsCanBeXyzMaterial(c,true)
and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_XYZ,tp,false,false)
end
function c94220427.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
......@@ -45,7 +45,7 @@ function c94220427.activate(e,tp,eg,ep,ev,re,r,rp)
local tc=Duel.GetFirstTarget()
if tc:IsFacedown() or not tc:IsRelateToEffect(e) or tc:IsControler(1-tp) or tc:IsImmuneToEffect(e) then return end
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local g=Duel.SelectMatchingCard(tp,c94220427.filter2,tp,LOCATION_EXTRA,0,1,1,nil,tc:GetRank()+1,tc:GetCode(),e,tp)
local g=Duel.SelectMatchingCard(tp,c94220427.filter2,tp,LOCATION_EXTRA,0,1,1,nil,e,tp,tc,tc:GetRank()+1,tc:GetCode())
local sc=g:GetFirst()
if sc then
local mg=tc:GetOverlayGroup()
......
......@@ -159,11 +159,18 @@ function Auxiliary.AddSynchroProcedure2(c,f1,f2)
e1:SetValue(SUMMON_TYPE_SYNCHRO)
c:RegisterEffect(e1)
end
function Auxiliary.XyzAlterFilter(c,alterf,xyzc)
return alterf(c) and c:IsCanBeXyzMaterial(xyzc,true)
end
function Auxiliary.AddXyzProcedure(c,f,lv,ct,alterf,desc,maxct,op)
if c.xyz_filter==nil then
local code=c:GetOriginalCode()
local mt=_G["c" .. code]
mt.xyz_filter=f
if f then
mt.xyz_filter=function(mc) return f(mc) and mc:IsXyzLevel(c,lv) end
else
mt.xyz_filter=function(mc) return mc:IsXyzLevel(c,lv) end
end
mt.xyz_count=ct
end
local e1=Effect.CreateEffect(c)
......@@ -210,7 +217,7 @@ function Auxiliary.XyzCondition2(f,lv,minc,maxc,alterf,desc,op)
local ft=Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)
local ct=-ft
if minc<=ct then return false end
if ct<1 and Duel.IsExistingMatchingCard(alterf,c:GetControler(),LOCATION_MZONE,0,1,nil)
if ct<1 and Duel.IsExistingMatchingCard(Auxiliary.XyzAlterFilter,c:GetControler(),LOCATION_MZONE,0,1,nil,alterf,c)
and (not op or op(e,c:GetControler(),0)) then
return true
end
......@@ -223,15 +230,15 @@ function Auxiliary.XyzOperation2(f,lv,minc,maxc,alterf,desc,op)
c:SetMaterial(og)
Duel.Overlay(c,og)
else
local ft=Duel.GetLocationCount(c:GetControler(),LOCATION_MZONE)
local ft=Duel.GetLocationCount(tp,LOCATION_MZONE)
local ct=-ft
local b1=Duel.CheckXyzMaterial(c,f,lv,minc,maxc,og)
local b2=ct<1 and Duel.IsExistingMatchingCard(alterf,tp,LOCATION_MZONE,0,1,nil)
local b2=ct<1 and Duel.IsExistingMatchingCard(Auxiliary.XyzAlterFilter,tp,LOCATION_MZONE,0,1,nil,alterf,c)
and (not op or op(e,tp,0))
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_XMATERIAL)
if b2 and (not b1 or Duel.SelectYesNo(tp,desc)) then
if op then op(e,tp,1) end
local mg=Duel.SelectMatchingCard(tp,alterf,tp,LOCATION_MZONE,0,1,1,nil)
local mg=Duel.SelectMatchingCard(tp,Auxiliary.XyzAlterFilter,tp,LOCATION_MZONE,0,1,1,nil,alterf,c)
local mg2=mg:GetFirst():GetOverlayGroup()
if mg2:GetCount()~=0 then
Duel.Overlay(c,mg2)
......
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