Commit 35cc5293 authored by POLYMER's avatar POLYMER

fix

parent 72d5cc21
...@@ -129,19 +129,27 @@ function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -129,19 +129,27 @@ function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
return (Duel.GetFlagEffect(0,11451901)>0 or Duel.CheckEvent(EVENT_CUSTOM+11451902)) and ft>0 and Duel.GetFlagEffect(tp,11451902)>0 return (Duel.GetFlagEffect(0,11451901)>0 or Duel.CheckEvent(EVENT_CUSTOM+11451902)) and ft>0 and Duel.GetFlagEffect(tp,11451902)>0
end end
Duel.ResetFlagEffect(tp,11451902) Duel.ResetFlagEffect(tp,11451902)
if Duel.GetFlagEffect(1,11451901)==0 then local e1=Effect.CreateEffect(e:GetHandler())
--change code e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
local e3=Effect.CreateEffect(e:GetHandler()) e1:SetCode(EVENT_CHAIN_SOLVED)
e3:SetType(EFFECT_TYPE_FIELD) e1:SetOperation(function(e)
e3:SetCode(EFFECT_CHANGE_CODE) if Duel.GetFlagEffect(1,11451901)==0 and Duel.GetCurrentChain()==e:GetLabel() then
e3:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_REPEAT+EFFECT_FLAG_DELAY+EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_OATH) --change code
e3:SetTargetRange(0xff,0xff) local e3=Effect.CreateEffect(e:GetHandler())
e3:SetTarget(function(e,c) return Duel.IsExistingMatchingCard(Card.IsOriginalCodeRule,0,LOCATION_GRAVE,LOCATION_GRAVE,1,c,table.unpack({c:GetOriginalCodeRule()})) end) e3:SetType(EFFECT_TYPE_FIELD)
e3:SetValue(function(e,c) return c:GetOriginalCode()+0x527+c:GetFieldID() end) e3:SetCode(EFFECT_CHANGE_CODE)
e3:SetReset(RESET_PHASE+PHASE_END) e3:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_REPEAT+EFFECT_FLAG_DELAY+EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_OATH)
Duel.RegisterEffect(e3,tp) e3:SetTargetRange(0xff,0xff)
end e3:SetTarget(function(e,c) return Duel.IsExistingMatchingCard(Card.IsOriginalCodeRule,0,LOCATION_GRAVE,LOCATION_GRAVE,1,c,table.unpack({c:GetOriginalCodeRule()})) end)
Duel.RegisterFlagEffect(1,11451901,RESET_PHASE+PHASE_END,EFFECT_FLAG_OATH,1) e3:SetValue(function(e,c) return c:GetOriginalCode()+0x527+c:GetFieldID() end)
e3:SetReset(RESET_PHASE+PHASE_END)
Duel.RegisterEffect(e3,tp)
end
Duel.RegisterFlagEffect(1,11451901,RESET_PHASE+PHASE_END,EFFECT_FLAG_OATH,1)
end)
e1:SetReset(RESET_CHAIN)
e1:SetLabel(Duel.GetCurrentChain())
Duel.RegisterEffect(e1,tp)
end end
function cm.nmfilter(c) function cm.nmfilter(c)
return c:GetFlagEffect(11451908)==0 and Duel.IsExistingMatchingCard(Card.IsOriginalCodeRule,0,LOCATION_GRAVE,LOCATION_GRAVE,1,c,table.unpack({c:GetOriginalCodeRule()})) return c:GetFlagEffect(11451908)==0 and Duel.IsExistingMatchingCard(Card.IsOriginalCodeRule,0,LOCATION_GRAVE,LOCATION_GRAVE,1,c,table.unpack({c:GetOriginalCodeRule()}))
......
...@@ -159,19 +159,27 @@ function cm.cpcost2(e,tp,eg,ep,ev,re,r,rp,chk) ...@@ -159,19 +159,27 @@ function cm.cpcost2(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return ft>0 and Duel.GetFlagEffect(tp,11451902)>0 and e:GetHandler():GetFlagEffect(m)==0 end if chk==0 then return ft>0 and Duel.GetFlagEffect(tp,11451902)>0 and e:GetHandler():GetFlagEffect(m)==0 end
e:GetHandler():RegisterFlagEffect(m,RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END,0,1) e:GetHandler():RegisterFlagEffect(m,RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END,0,1)
Duel.ResetFlagEffect(tp,11451902) Duel.ResetFlagEffect(tp,11451902)
if Duel.GetFlagEffect(1,11451901)==0 then local e1=Effect.CreateEffect(e:GetHandler())
--change code e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
local e3=Effect.CreateEffect(e:GetHandler()) e1:SetCode(EVENT_CHAIN_SOLVED)
e3:SetType(EFFECT_TYPE_FIELD) e1:SetOperation(function(e)
e3:SetCode(EFFECT_CHANGE_CODE) if Duel.GetFlagEffect(1,11451901)==0 and Duel.GetCurrentChain()==e:GetLabel() then
e3:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_REPEAT+EFFECT_FLAG_DELAY+EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_OATH) --change code
e3:SetTargetRange(0xff,0xff) local e3=Effect.CreateEffect(e:GetHandler())
e3:SetTarget(function(e,c) return Duel.IsExistingMatchingCard(Card.IsOriginalCodeRule,0,LOCATION_GRAVE,LOCATION_GRAVE,1,c,table.unpack({c:GetOriginalCodeRule()})) end) e3:SetType(EFFECT_TYPE_FIELD)
e3:SetValue(function(e,c) return c:GetOriginalCode()+0x527+c:GetFieldID() end) e3:SetCode(EFFECT_CHANGE_CODE)
e3:SetReset(RESET_PHASE+PHASE_END) e3:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_REPEAT+EFFECT_FLAG_DELAY+EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_OATH)
Duel.RegisterEffect(e3,tp) e3:SetTargetRange(0xff,0xff)
end e3:SetTarget(function(e,c) return Duel.IsExistingMatchingCard(Card.IsOriginalCodeRule,0,LOCATION_GRAVE,LOCATION_GRAVE,1,c,table.unpack({c:GetOriginalCodeRule()})) end)
Duel.RegisterFlagEffect(1,11451901,RESET_PHASE+PHASE_END,EFFECT_FLAG_OATH,1) e3:SetValue(function(e,c) return c:GetOriginalCode()+0x527+c:GetFieldID() end)
e3:SetReset(RESET_PHASE+PHASE_END)
Duel.RegisterEffect(e3,tp)
end
Duel.RegisterFlagEffect(1,11451901,RESET_PHASE+PHASE_END,EFFECT_FLAG_OATH,1)
end)
e1:SetReset(RESET_CHAIN)
e1:SetLabel(Duel.GetCurrentChain())
Duel.RegisterEffect(e1,tp)
end end
function cm.nmfilter(c) function cm.nmfilter(c)
return c:GetFlagEffect(11451908)==0 and Duel.IsExistingMatchingCard(Card.IsOriginalCodeRule,0,LOCATION_GRAVE,LOCATION_GRAVE,1,c,table.unpack({c:GetOriginalCodeRule()})) return c:GetFlagEffect(11451908)==0 and Duel.IsExistingMatchingCard(Card.IsOriginalCodeRule,0,LOCATION_GRAVE,LOCATION_GRAVE,1,c,table.unpack({c:GetOriginalCodeRule()}))
......
...@@ -73,21 +73,31 @@ function cm.initial_effect(c) ...@@ -73,21 +73,31 @@ function cm.initial_effect(c)
end end
function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk) function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
local ft=Duel.GetLocationCount(tp,LOCATION_SZONE) local ft=Duel.GetLocationCount(tp,LOCATION_SZONE)
if chk==0 then return ft>0 and Duel.GetFlagEffect(tp,11451902)>0 end if chk==0 then
Duel.ResetFlagEffect(tp,11451902) return ft>0 and Duel.GetFlagEffect(tp,11451902)>0
if Duel.GetFlagEffect(1,11451901)==0 then
--change code
local e3=Effect.CreateEffect(e:GetHandler())
e3:SetType(EFFECT_TYPE_FIELD)
e3:SetCode(EFFECT_CHANGE_CODE)
e3:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_REPEAT+EFFECT_FLAG_DELAY+EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_OATH)
e3:SetTargetRange(0xff,0xff)
e3:SetTarget(function(e,c) return Duel.IsExistingMatchingCard(Card.IsOriginalCodeRule,0,LOCATION_GRAVE,LOCATION_GRAVE,1,c,table.unpack({c:GetOriginalCodeRule()})) end)
e3:SetValue(function(e,c) return c:GetOriginalCode()+0x527+c:GetFieldID() end)
e3:SetReset(RESET_PHASE+PHASE_END)
Duel.RegisterEffect(e3,tp)
end end
Duel.RegisterFlagEffect(1,11451901,RESET_PHASE+PHASE_END,EFFECT_FLAG_OATH,1) Duel.ResetFlagEffect(tp,11451902)
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetCode(EVENT_CHAIN_SOLVED)
e1:SetOperation(function(e)
if Duel.GetFlagEffect(1,11451901)==0 and Duel.GetCurrentChain()==e:GetLabel() then
--change code
local e3=Effect.CreateEffect(e:GetHandler())
e3:SetType(EFFECT_TYPE_FIELD)
e3:SetCode(EFFECT_CHANGE_CODE)
e3:SetProperty(EFFECT_FLAG_UNCOPYABLE+EFFECT_FLAG_IGNORE_IMMUNE+EFFECT_FLAG_CANNOT_DISABLE+EFFECT_FLAG_REPEAT+EFFECT_FLAG_DELAY+EFFECT_FLAG_SET_AVAILABLE+EFFECT_FLAG_OATH)
e3:SetTargetRange(0xff,0xff)
e3:SetTarget(function(e,c) return Duel.IsExistingMatchingCard(Card.IsOriginalCodeRule,0,LOCATION_GRAVE,LOCATION_GRAVE,1,c,table.unpack({c:GetOriginalCodeRule()})) end)
e3:SetValue(function(e,c) return c:GetOriginalCode()+0x527+c:GetFieldID() end)
e3:SetReset(RESET_PHASE+PHASE_END)
Duel.RegisterEffect(e3,tp)
end
Duel.RegisterFlagEffect(1,11451901,RESET_PHASE+PHASE_END,EFFECT_FLAG_OATH,1)
end)
e1:SetReset(RESET_CHAIN)
e1:SetLabel(Duel.GetCurrentChain())
Duel.RegisterEffect(e1,tp)
end end
function cm.nmfilter(c) function cm.nmfilter(c)
return c:GetFlagEffect(11451908)==0 and Duel.IsExistingMatchingCard(Card.IsOriginalCodeRule,0,LOCATION_GRAVE,LOCATION_GRAVE,1,c,table.unpack({c:GetOriginalCodeRule()})) return c:GetFlagEffect(11451908)==0 and Duel.IsExistingMatchingCard(Card.IsOriginalCodeRule,0,LOCATION_GRAVE,LOCATION_GRAVE,1,c,table.unpack({c:GetOriginalCodeRule()}))
......
...@@ -21,7 +21,7 @@ function cm.initial_effect(c) ...@@ -21,7 +21,7 @@ function cm.initial_effect(c)
e2:SetCode(EVENT_DESTROYED) e2:SetCode(EVENT_DESTROYED)
e2:SetProperty(EFFECT_FLAG_DELAY) e2:SetProperty(EFFECT_FLAG_DELAY)
e2:SetRange(LOCATION_GRAVE) e2:SetRange(LOCATION_GRAVE)
e2:SetCountLimit(1,13131309) e2:SetCountLimit(1,13131310)
e2:SetCondition(cm.spcon2) e2:SetCondition(cm.spcon2)
e2:SetTarget(cm.sptg) e2:SetTarget(cm.sptg)
e2:SetOperation(cm.spop) e2:SetOperation(cm.spop)
......
...@@ -135,7 +135,7 @@ function yume.QuickDualSelectCheck(g1,g2,uniqf,...) ...@@ -135,7 +135,7 @@ function yume.QuickDualSelectCheck(g1,g2,uniqf,...)
--Experimental quick algorithm for checking if there are two cards from two groups, one for each group --Experimental quick algorithm for checking if there are two cards from two groups, one for each group
--param uniqf is a function for extra unique restrictions like different card names(currently unimplemented) --param uniqf is a function for extra unique restrictions like different card names(currently unimplemented)
local g3=g1&g2 local g3=g1&g2
return #g1>0 and #g2>0 and not (#g1==#g3 and #g2==#g3 and #g1==1) end return #g1>0 and #g2>0 and not (#g1==#g3 and #g2==#g3 and #g1==1)
end end
function yume.QuickDualSelect(tp,g1,g2,msg1,msg2,opf,...) function yume.QuickDualSelect(tp,g1,g2,msg1,msg2,opf,...)
--Experimental quick algorithm for selecting two cards from two groups, one for each group --Experimental quick algorithm for selecting two cards from two groups, one for each group
......
...@@ -50,27 +50,34 @@ function s.initial_effect(c) ...@@ -50,27 +50,34 @@ function s.initial_effect(c)
Duel.RegisterEffect(ge1,0) Duel.RegisterEffect(ge1,0)
local ge2=ge1:Clone() local ge2=ge1:Clone()
Duel.RegisterEffect(ge2,1) Duel.RegisterEffect(ge2,1)
local g=Duel.GetMatchingGroup(s.actfilter,0,0xff,0xff,nil) local e0=Effect.CreateEffect(c)
for tc in aux.Next(g) do e0:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
local te=tc:GetActivateEffect() e0:SetCode(EVENT_ADJUST)
if te:IsHasType(EFFECT_TYPE_ACTIVATE) and te:GetCode()==EVENT_FREE_CHAIN then e0:SetOperation(function(e,tp,eg,ep,ev,re,r,rp)
local ge2=te:Clone() e:Reset()
local con=ge2:GetCondition() local g=Duel.GetMatchingGroup(s.actfilter,0,0xff,0xff,nil)
local property=ge2:GetProperty() for tc in aux.Next(g) do
--ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O) local te=tc:GetActivateEffect()
ge2:SetCode(EVENT_CUSTOM+id) if te:IsHasType(EFFECT_TYPE_ACTIVATE) and te:GetCode()==EVENT_FREE_CHAIN then
ge2:SetRange(LOCATION_DECK+LOCATION_GRAVE) local ge2=te:Clone()
if property then local con=ge2:GetCondition()
ge2:SetProperty(property|EFFECT_FLAG_DELAY) local property=ge2:GetProperty()
else --ge2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O)
ge2:SetProperty(EFFECT_FLAG_DELAY) ge2:SetCode(EVENT_CUSTOM+id)
end ge2:SetRange(LOCATION_DECK+LOCATION_GRAVE)
ge2:SetCondition(function (e,tp,eg,ep,ev,re,r,rp) if property then
return rp==tp and (not con or con(e,tp,eg,ep,ev,re,r,rp)) ge2:SetProperty(property|EFFECT_FLAG_DELAY)
end) else
tc:RegisterEffect(ge2) ge2:SetProperty(EFFECT_FLAG_DELAY)
end end
end ge2:SetCondition(function (e,tp,eg,ep,ev,re,r,rp)
return rp==tp and (not con or con(e,tp,eg,ep,ev,re,r,rp))
end)
tc:RegisterEffect(ge2)
end
end
end)
Duel.RegisterEffect(e0,0)
end end
end end
function s.spcfilter1(c) function s.spcfilter1(c)
......
...@@ -8,9 +8,9 @@ function c91060017.initial_effect(c) ...@@ -8,9 +8,9 @@ function c91060017.initial_effect(c)
e3:SetCondition(cm.handcon) e3:SetCondition(cm.handcon)
c:RegisterEffect(e3) c:RegisterEffect(e3)
local e13=e3:Clone() local e13=e3:Clone()
e2:SetCode(EFFECT_TRAP_ACT_IN_HAND) e13:SetCode(EFFECT_TRAP_ACT_IN_HAND)
e2:SetCondition(cm.handcon2) e13:SetCondition(cm.handcon1)
c:RegisterEffect(e2) c:RegisterEffect(e13)
if not cm.global_check then if not cm.global_check then
cm.global_check=true cm.global_check=true
local ge1=Effect.CreateEffect(c) local ge1=Effect.CreateEffect(c)
...@@ -48,11 +48,14 @@ end ...@@ -48,11 +48,14 @@ end
function cm.handcon1(e) function cm.handcon1(e)
return Duel.GetFieldGroupCount(e:GetHandlerPlayer(),LOCATION_ONFIELD,0)==0 return Duel.GetFieldGroupCount(e:GetHandlerPlayer(),LOCATION_ONFIELD,0)==0
end end
function cm.cfilter(c) function cm.cfilter(c,e)
return c:IsAbleToGrave() return c:IsAbleToGrave() and c:IsType(TYPE_MONSTER)and not c:IsImmuneToEffect(e)
end end
function cm.filter(c,e,tp) function cm.filter(c,e,tp)
return c:IsType(TYPE_FUSION+TYPE_SYNCHRO+TYPE_LINK+TYPE_XYZ) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) return c:IsType(TYPE_FUSION+TYPE_SYNCHRO+TYPE_LINK+TYPE_XYZ) and c:IsCanBeSpecialSummoned(e,0,tp,false,false)
end
function cm.filter2(c,e,tp,g)
return c:IsType(TYPE_FUSION+TYPE_SYNCHRO+TYPE_LINK+TYPE_XYZ) and c:IsCanBeSpecialSummoned(e,0,tp,false,false) and (c:CheckFusionMaterial(g) or c:IsSynchroSummonable(nil,g) or c:IsLinkSummonable(g) or c:IsXyzSummonable(g))
end end
function cm.chk(g,e,tp) function cm.chk(g,e,tp)
local sg=Duel.GetMatchingGroup(cm.filter,tp,LOCATION_EXTRA,0,nil,e,tp) local sg=Duel.GetMatchingGroup(cm.filter,tp,LOCATION_EXTRA,0,nil,e,tp)
...@@ -60,22 +63,24 @@ function cm.chk(g,e,tp) ...@@ -60,22 +63,24 @@ function cm.chk(g,e,tp)
or sg:IsExists(Card.IsSynchroSummonable,1,nil,nil,g) or sg:IsExists(Card.IsLinkSummonable,1,nil,g) or sg:IsExists(Card.IsXyzSummonable,1,nil,g) or sg:IsExists(Card.IsSynchroSummonable,1,nil,nil,g) or sg:IsExists(Card.IsLinkSummonable,1,nil,g) or sg:IsExists(Card.IsXyzSummonable,1,nil,g)
end end
function cm.target2(e,tp,eg,ep,ev,re,r,rp,chk) function cm.target2(e,tp,eg,ep,ev,re,r,rp,chk)
local mg=Duel.GetMatchingGroup(cm.cfilter,tp,LOCATION_MZONE,0,nil) local mg=Duel.GetMatchingGroup(cm.cfilter,tp,LOCATION_MZONE,0,nil,e)
if chk==0 then return mg:CheckSubGroup(cm.chk,1,99,e,tp) end if chk==0 then return mg:CheckSubGroup(cm.chk,1,99,e,tp) end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA)
end end
function cm.spfit(c,g) function cm.spfit(c,g)
return c:CheckFusionMaterial(g) or c:IsSynchroSummonable(nil,g) or c:IsLinkSummonable(g) or c:IsXyzSummonable(g) return c:CheckFusionMaterial(g) or c:IsSynchroSummonable(nil,g) or c:IsLinkSummonable(g) or c:IsXyzSummonable(g)
end end
function cm.spfit2(g,c)
return c:CheckFusionMaterial(g) or c:IsSynchroSummonable(nil,g) or c:IsLinkSummonable(g) or c:IsXyzSummonable(g)
end
function cm.activate2(e,tp,eg,ep,ev,re,r,rp) function cm.activate2(e,tp,eg,ep,ev,re,r,rp)
local mg=Duel.GetMatchingGroup(cm.cfilter,tp,LOCATION_MZONE,0,nil) local mg=Duel.GetMatchingGroup(cm.cfilter,tp,LOCATION_MZONE,0,nil,e)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
local g=mg:SelectSubGroup(tp,cm.chk,false,1,99,e,tp)
Duel.SendtoGrave(g,REASON_EFFECT)
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON) Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_SPSUMMON)
local fg=Duel.SelectMatchingCard(tp,cm.spfit,tp,LOCATION_EXTRA,0,1,1,nil,g) local fc=Duel.SelectMatchingCard(tp,cm.spfit,tp,LOCATION_EXTRA,0,1,1,nil,mg):GetFirst()
if #fg>0 then Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_TOGRAVE)
Duel.SpecialSummon(fg,0,tp,tp,false,false,POS_FACEUP) local g=mg:SelectSubGroup(tp,cm.spfit2,false,1,99,fc)
if Duel.SendtoGrave(g,REASON_EFFECT)>0 and fc then
Duel.SpecialSummon(fc,0,tp,tp,false,false,POS_FACEUP)
end end
end end
function cm.desfilter(c,atk) function cm.desfilter(c,atk)
......
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