Commit 61f0d7a5 authored by mercury233's avatar mercury233 Committed by GitHub

fix cannot activate effects when monsters summoned (#2083)

parent 4a463fb6
......@@ -37,12 +37,30 @@ function c12755462.cedcon(e,tp,eg,ep,ev,re,r,rp)
return eg:GetFirst()~=e:GetHandler()
end
function c12755462.cedop(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetCurrentChain()==0 then
Duel.SetChainLimitTillChainEnd(c12755462.chlimit2)
elseif Duel.GetCurrentChain()==1 then
e:GetHandler():RegisterFlagEffect(12755462,RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END,0,1)
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetCode(EVENT_CHAINING)
e1:SetOperation(c12755462.resetop)
Duel.RegisterEffect(e1,tp)
local e2=e1:Clone()
e2:SetCode(EVENT_BREAK_EFFECT)
e2:SetReset(RESET_CHAIN)
Duel.RegisterEffect(e2,tp)
end
end
function c12755462.resetop(e,tp,eg,ep,ev,re,r,rp)
e:GetHandler():ResetFlagEffect(12755462)
e:Reset()
end
function c12755462.cedop2(e,tp,eg,ep,ev,re,r,rp)
if Duel.CheckEvent(EVENT_SPSUMMON_SUCCESS) then
if e:GetHandler():GetFlagEffect(12755462)>0 then
Duel.SetChainLimitTillChainEnd(c12755462.chlimit2)
end
e:GetHandler():ResetFlagEffect(12755462)
end
function c12755462.chlimit2(re,rp,tp)
return not re:GetHandler():IsType(TYPE_TRAP) or not re:IsHasType(EFFECT_TYPE_ACTIVATE) or not re:GetHandler():IsSetCard(0x4c)
......
......@@ -38,7 +38,8 @@ function c44843954.activate(e,tp,eg,ep,ev,re,r,rp)
and Duel.IsExistingMatchingCard(aux.AND(Card.IsFaceup,Card.IsCode),tp,LOCATION_EXTRA,0,1,nil,70155677) then
Duel.BreakEffect()
Duel.Hint(HINT_CARD,0,70155677)
local e1=Effect.CreateEffect(e:GetHandler())
local c=e:GetHandler()
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetCode(EVENT_SUMMON_SUCCESS)
e1:SetCondition(c44843954.sumcon)
......@@ -48,6 +49,11 @@ function c44843954.activate(e,tp,eg,ep,ev,re,r,rp)
local e2=e1:Clone()
e2:SetCode(EVENT_SPSUMMON_SUCCESS)
Duel.RegisterEffect(e2,tp)
local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e3:SetCode(EVENT_CHAIN_END)
e3:SetOperation(c44843954.limop2)
Duel.RegisterEffect(e3,tp)
end
end
function c44843954.sumfilter(c)
......@@ -57,9 +63,32 @@ function c44843954.sumcon(e,tp,eg,ep,ev,re,r,rp)
return eg:IsExists(c44843954.sumfilter,1,nil)
end
function c44843954.sumsuc(e,tp,eg,ep,ev,re,r,rp)
Duel.SetChainLimitTillChainEnd(c44843954.efun)
if Duel.GetCurrentChain()==0 then
Duel.SetChainLimitTillChainEnd(c44843954.chainlm)
elseif Duel.GetCurrentChain()==1 then
Duel.RegisterFlagEffect(tp,44843954,RESET_PHASE+PHASE_END,0,1)
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetCode(EVENT_CHAINING)
e1:SetOperation(c44843954.resetop)
Duel.RegisterEffect(e1,tp)
local e2=e1:Clone()
e2:SetCode(EVENT_BREAK_EFFECT)
e2:SetReset(RESET_CHAIN)
Duel.RegisterEffect(e2,tp)
end
end
function c44843954.resetop(e,tp,eg,ep,ev,re,r,rp)
Duel.ResetFlagEffect(tp,44843954)
e:Reset()
end
function c44843954.limop2(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetFlagEffect(tp,44843954)>0 then
Duel.SetChainLimitTillChainEnd(c44843954.chainlm)
end
Duel.ResetFlagEffect(tp,44843954)
end
function c44843954.efun(e,ep,tp)
function c44843954.chainlm(e,ep,tp)
return ep==tp
end
function c44843954.mvcost(e,tp,eg,ep,ev,re,r,rp,chk)
......
......@@ -55,8 +55,21 @@ function c56638325.limop(e,tp,eg,ep,ev,re,r,rp)
Duel.SetChainLimitTillChainEnd(c56638325.chainlm)
elseif Duel.GetCurrentChain()==1 then
e:GetHandler():RegisterFlagEffect(56638325,RESET_EVENT+RESETS_STANDARD+RESET_PHASE+PHASE_END,0,1)
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetCode(EVENT_CHAINING)
e1:SetOperation(c56638325.resetop)
Duel.RegisterEffect(e1,tp)
local e2=e1:Clone()
e2:SetCode(EVENT_BREAK_EFFECT)
e2:SetReset(RESET_CHAIN)
Duel.RegisterEffect(e2,tp)
end
end
function c56638325.resetop(e,tp,eg,ep,ev,re,r,rp)
e:GetHandler():ResetFlagEffect(56638325)
e:Reset()
end
function c56638325.limop2(e,tp,eg,ep,ev,re,r,rp)
if e:GetHandler():GetOverlayCount()>0 and e:GetHandler():GetFlagEffect(56638325)~=0 then
Duel.SetChainLimitTillChainEnd(c56638325.chainlm)
......
......@@ -27,9 +27,10 @@ function c84117021.target(e,tp,eg,ep,ev,re,r,rp,chk)
end
end
function c84117021.activate(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local opt=Duel.GetChainInfo(0,CHAININFO_TARGET_PARAM)
if opt==0 then
local e1=Effect.CreateEffect(e:GetHandler())
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_CANNOT_DISABLE_SUMMON)
e1:SetProperty(EFFECT_FLAG_IGNORE_RANGE+EFFECT_FLAG_SET_AVAILABLE)
......@@ -42,7 +43,7 @@ function c84117021.activate(e,tp,eg,ep,ev,re,r,rp)
local e3=e1:Clone()
e3:SetCode(EFFECT_CANNOT_DISABLE_FLIP_SUMMON)
Duel.RegisterEffect(e3,tp)
local e4=Effect.CreateEffect(e:GetHandler())
local e4=Effect.CreateEffect(c)
e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e4:SetCode(EVENT_SUMMON_SUCCESS)
e4:SetCondition(c84117021.sumcon)
......@@ -55,10 +56,15 @@ function c84117021.activate(e,tp,eg,ep,ev,re,r,rp)
local e6=e4:Clone()
e6:SetCode(EVENT_FLIP_SUMMON_SUCCESS)
Duel.RegisterEffect(e6,tp)
local e7=Effect.CreateEffect(c)
e7:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e7:SetCode(EVENT_CHAIN_END)
e7:SetOperation(c84117021.limop2)
Duel.RegisterEffect(e7,tp)
else
local tc=Duel.GetFirstTarget()
if tc:IsFaceup() and tc:IsRelateToEffect(e) then
local e1=Effect.CreateEffect(e:GetHandler())
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_CONTINUOUS)
e1:SetCode(EVENT_ATTACK_ANNOUNCE)
e1:SetOperation(c84117021.atkop)
......@@ -67,7 +73,7 @@ function c84117021.activate(e,tp,eg,ep,ev,re,r,rp)
end
end
if e:IsHasType(EFFECT_TYPE_ACTIVATE) then
local e1=Effect.CreateEffect(e:GetHandler())
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_CHANGE_DAMAGE)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
......@@ -85,9 +91,32 @@ function c84117021.sumcon(e,tp,eg,ep,ev,re,r,rp)
return eg:IsExists(c84117021.filter,1,nil)
end
function c84117021.sumsuc(e,tp,eg,ep,ev,re,r,rp)
Duel.SetChainLimitTillChainEnd(c84117021.efun)
if Duel.GetCurrentChain()==0 then
Duel.SetChainLimitTillChainEnd(c84117021.chainlm)
elseif Duel.GetCurrentChain()==1 then
Duel.RegisterFlagEffect(tp,84117021,RESET_PHASE+PHASE_END,0,1)
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetCode(EVENT_CHAINING)
e1:SetOperation(c84117021.resetop)
Duel.RegisterEffect(e1,tp)
local e2=e1:Clone()
e2:SetCode(EVENT_BREAK_EFFECT)
e2:SetReset(RESET_CHAIN)
Duel.RegisterEffect(e2,tp)
end
end
function c84117021.resetop(e,tp,eg,ep,ev,re,r,rp)
Duel.ResetFlagEffect(tp,84117021)
e:Reset()
end
function c84117021.limop2(e,tp,eg,ep,ev,re,r,rp)
if Duel.GetFlagEffect(tp,84117021)>0 then
Duel.SetChainLimitTillChainEnd(c84117021.chainlm)
end
Duel.ResetFlagEffect(tp,84117021)
end
function c84117021.efun(e,ep,tp)
function c84117021.chainlm(e,ep,tp)
return ep==tp
end
function c84117021.atkop(e,tp,eg,ep,ev,re,r,rp)
......
......@@ -17,23 +17,35 @@ function c8632967.initial_effect(c)
e3:SetRange(LOCATION_SZONE)
e3:SetCode(EVENT_CHAIN_END)
e3:SetOperation(c8632967.cedop)
e3:SetLabelObject(e2)
c:RegisterEffect(e3)
end
function c8632967.chainlm(e,rp,tp)
return tp==rp
end
function c8632967.sucfilter(c)
local st=c:GetSummonType()
return c:IsSetCard(0x304e) and st&SUMMON_VALUE_EVOLTILE>0
return c:IsSummonType(SUMMON_VALUE_EVOLTILE)
end
function c8632967.sucop(e,tp,eg,ep,ev,re,r,rp)
if eg:IsExists(c8632967.sucfilter,1,nil) then
e:SetLabel(1)
else e:SetLabel(0) end
if eg:IsExists(c8632967.sucfilter,1,nil) and Duel.GetCurrentChain()==1 then
e:GetHandler():RegisterFlagEffect(8632967,RESET_EVENT+RESETS_STANDARD,0,1)
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetCode(EVENT_CHAINING)
e1:SetOperation(c8632967.resetop)
Duel.RegisterEffect(e1,tp)
local e2=e1:Clone()
e2:SetCode(EVENT_BREAK_EFFECT)
e2:SetReset(RESET_CHAIN)
Duel.RegisterEffect(e2,tp)
end
end
function c8632967.resetop(e,tp,eg,ep,ev,re,r,rp)
e:GetHandler():ResetFlagEffect(8632967)
e:Reset()
end
function c8632967.cedop(e,tp,eg,ep,ev,re,r,rp)
if Duel.CheckEvent(EVENT_SPSUMMON_SUCCESS) and e:GetLabelObject():GetLabel()==1 then
if e:GetHandler():GetFlagEffect(8632967)~=0 then
Duel.SetChainLimitTillChainEnd(c8632967.chainlm)
end
e:GetHandler():ResetFlagEffect(8632967)
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