Commit 5334228e authored by salix5's avatar salix5

fix: Damage Step

All damage-step related effect
Now they cannot be activated in PHASE_DAMAGE_CAL.

c1412158 レアメタル·ナイト
c75923050 レアメタル·ヴァルキリー
According to the updated text in Konami game, the atk updating is an continuous effect.

c21454943 サイコ·コマンダー
c41925941 冥王の咆哮
c84389640 窮鼠の進撃
The condition is fixed according to the text "戦闘を行う相手モンスター1体の...", and now they are target effect.
Max LP cost checking is added.
parent 43c06752
......@@ -6,12 +6,10 @@ function c1412158.initial_effect(c)
--atk up
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(1412158,0))
e1:SetCategory(CATEGORY_ATKCHANGE)
e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F)
e1:SetRange(LOCATION_MZONE)
e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_UPDATE_ATTACK)
e1:SetCondition(c1412158.atkcon)
e1:SetOperation(c1412158.atkop)
e1:SetValue(1000)
c:RegisterEffect(e1)
--spsummon
local e2=Effect.CreateEffect(c)
......@@ -24,19 +22,12 @@ function c1412158.initial_effect(c)
e2:SetOperation(c1412158.spop)
c:RegisterEffect(e2)
end
function c1412158.atkcon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetBattleTarget()~=nil
end
function c1412158.atkop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if c:IsRelateToEffect(e) and c:IsFaceup() then
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_UPDATE_ATTACK)
e1:SetReset(RESET_PHASE+RESET_DAMAGE_CAL)
e1:SetValue(1000)
c:RegisterEffect(e1)
end
function c1412158.atkcon(e)
local ph=Duel.GetCurrentPhase()
if not (ph==PHASE_DAMAGE or ph==PHASE_DAMAGE_CAL) then return false end
local a=Duel.GetAttacker()
local d=Duel.GetAttackTarget()
return a==e:GetHandler() and d~=nil
end
function c1412158.spcon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetTurnID()~=Duel.GetTurnCount()
......
......@@ -7,10 +7,10 @@ function c2091298.initial_effect(c)
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(2091298,0))
e1:SetCategory(CATEGORY_ATKCHANGE)
e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL)
e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP)
e1:SetType(EFFECT_TYPE_QUICK_O)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetHintTiming(TIMING_DAMAGE_CAL)
e1:SetHintTiming(TIMING_DAMAGE_STEP)
e1:SetCountLimit(1)
e1:SetRange(LOCATION_MZONE)
e1:SetCondition(c2091298.condition)
......@@ -20,7 +20,7 @@ function c2091298.initial_effect(c)
end
function c2091298.condition(e,tp,eg,ep,ev,re,r,rp)
local phase=Duel.GetCurrentPhase()
if (phase~=PHASE_DAMAGE and phase~=PHASE_DAMAGE_CAL) or Duel.IsDamageCalculated() then return false end
if phase~=PHASE_DAMAGE or Duel.IsDamageCalculated() then return false end
local tc=Duel.GetAttacker()
if tc:IsControler(1-tp) then tc=Duel.GetAttackTarget() end
e:SetLabelObject(tc)
......
......@@ -4,10 +4,10 @@ function c21454943.initial_effect(c)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_QUICK_O)
e1:SetDescription(aux.Stringid(21454943,0))
e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL)
e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP)
e1:SetCategory(CATEGORY_ATKCHANGE)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetHintTiming(TIMING_DAMAGE_CAL)
e1:SetHintTiming(TIMING_DAMAGE_STEP)
e1:SetRange(LOCATION_MZONE)
e1:SetCondition(c21454943.condition)
e1:SetCost(c21454943.cost)
......@@ -17,16 +17,27 @@ function c21454943.initial_effect(c)
end
function c21454943.condition(e,tp,eg,ep,ev,re,r,rp)
local phase=Duel.GetCurrentPhase()
if (phase~=PHASE_DAMAGE and phase~=PHASE_DAMAGE_CAL) or Duel.IsDamageCalculated() then return false end
if phase~=PHASE_DAMAGE or Duel.IsDamageCalculated() then return false end
local a=Duel.GetAttacker()
local d=Duel.GetAttackTarget()
return (d~=nil and a:GetControler()==tp and a:IsRace(RACE_PSYCHO) and a:IsRelateToBattle())
or (d~=nil and d:GetControler()==tp and d:IsRace(RACE_PSYCHO) and d:IsRelateToBattle())
if a:IsControler(tp) then
e:SetLabelObject(d)
return a:IsFaceup() and a:IsRace(RACE_PSYCHO) and a:IsRelateToBattle() and d and d:IsFaceup() and d:IsRelateToBattle()
else
e:SetLabelObject(a)
return d:IsFaceup() and d:IsRace(RACE_PSYCHO) and d:IsRelateToBattle() and a and a:IsFaceup() and a:IsRelateToBattle()
end
end
function c21454943.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.CheckLPCost(tp,100) and e:GetHandler():GetFlagEffect(21454943)==0 end
local bc=e:GetLabelObject()
if chk==0 then return Duel.CheckLPCost(tp,100) and e:GetHandler():GetFlagEffect(21454943)==0
and (bc:IsAttackAbove(100) or bc:IsDefenceAbove(100)) end
local lp=Duel.GetLP(tp)
local alp=100
local maxpay=bc:GetAttack()
local def=bc:GetDefence()
if maxpay<def then maxpay=def end
if maxpay<lp then lp=maxpay end
Duel.Hint(HINT_SELECTMSG,tp,aux.Stringid(21454943,1))
if lp>500 then alp=Duel.AnnounceNumber(tp,100,200,300,400,500)
elseif lp>400 then alp=Duel.AnnounceNumber(tp,100,200,300,400)
......@@ -38,21 +49,15 @@ function c21454943.cost(e,tp,eg,ep,ev,re,r,rp,chk)
e:GetHandler():RegisterFlagEffect(21454943,RESET_PHASE+RESET_DAMAGE,0,1)
end
function c21454943.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
local a=Duel.GetAttacker()
local d=Duel.GetAttackTarget()
if chkc then return (a:GetControler()==tp and chkc==d) or (d:GetControler()==tp and chkc==a) end
if chk==0 then
if a:GetControler()==tp then
return a:IsRace(RACE_PSYCHO) and d and d:IsCanBeEffectTarget(e)
else return d:IsRace(RACE_PSYCHO) and a:IsCanBeEffectTarget(e) end
end
if a:GetControler()==tp then Duel.SetTargetCard(d)
else Duel.SetTargetCard(a) end
local tc=e:GetLabelObject()
if chkc then return chkc==tc end
if chk==0 then return tc:IsCanBeEffectTarget(e) end
Duel.SetTargetCard(tc)
end
function c21454943.operation(e,tp,eg,ep,ev,re,r,rp,chk)
local tc=Duel.GetFirstTarget()
local c=e:GetHandler()
if not tc or not tc:IsRelateToEffect(e) or not c:IsRelateToEffect(e) then return end
if not tc or not tc:IsRelateToEffect(e) or not tc:IsRelateToBattle() or not tc:IsControler(1-tp) then return end
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_UPDATE_ATTACK)
......
......@@ -6,9 +6,9 @@ function c23535429.initial_effect(c)
e1:SetType(EFFECT_TYPE_QUICK_O)
e1:SetCategory(CATEGORY_ATKCHANGE)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetHintTiming(TIMING_DAMAGE_CAL)
e1:SetHintTiming(TIMING_DAMAGE_STEP)
e1:SetRange(LOCATION_HAND)
e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL)
e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP)
e1:SetCondition(c23535429.condition)
e1:SetCost(c23535429.cost)
e1:SetOperation(c23535429.operation)
......@@ -16,7 +16,7 @@ function c23535429.initial_effect(c)
end
function c23535429.condition(e,tp,eg,ep,ev,re,r,rp)
local phase=Duel.GetCurrentPhase()
if (phase~=PHASE_DAMAGE and phase~=PHASE_DAMAGE_CAL) or Duel.IsDamageCalculated() then return false end
if phase~=PHASE_DAMAGE or Duel.IsDamageCalculated() then return false end
local d=Duel.GetAttackTarget()
return d and d:IsControler(tp) and d:IsDefencePos()
end
......
......@@ -15,9 +15,9 @@ function c37742478.initial_effect(c)
e2:SetDescription(aux.Stringid(37742478,1))
e2:SetCategory(CATEGORY_ATKCHANGE)
e2:SetCode(EVENT_FREE_CHAIN)
e2:SetHintTiming(TIMING_DAMAGE_CAL)
e2:SetHintTiming(TIMING_DAMAGE_STEP)
e2:SetRange(LOCATION_HAND)
e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL)
e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP)
e2:SetCondition(c37742478.condition2)
e2:SetCost(c37742478.cost2)
e2:SetOperation(c37742478.operation2)
......@@ -35,7 +35,7 @@ function c37742478.operation1(e,tp,eg,ep,ev,re,r,rp)
end
function c37742478.condition2(e,tp,eg,ep,ev,re,r,rp)
local phase=Duel.GetCurrentPhase()
if (phase~=PHASE_DAMAGE and phase~=PHASE_DAMAGE_CAL) or Duel.IsDamageCalculated() then return false end
if phase~=PHASE_DAMAGE or Duel.IsDamageCalculated() then return false end
local a=Duel.GetAttacker()
local d=Duel.GetAttackTarget()
return (d~=nil and a:GetControler()==tp and a:IsAttribute(ATTRIBUTE_LIGHT) and a:IsRelateToBattle())
......
......@@ -8,9 +8,9 @@ function c3989465.initial_effect(c)
e1:SetCategory(CATEGORY_ATKCHANGE)
e1:SetDescription(aux.Stringid(3989465,0))
e1:SetType(EFFECT_TYPE_QUICK_O)
e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL)
e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetHintTiming(TIMING_DAMAGE_CAL)
e1:SetHintTiming(TIMING_DAMAGE_STEP)
e1:SetRange(LOCATION_MZONE)
e1:SetCondition(c3989465.condition)
e1:SetCost(c3989465.cost)
......@@ -20,7 +20,7 @@ end
function c3989465.condition(e,tp,eg,ep,ev,re,r,rp)
local ph=Duel.GetCurrentPhase()
local c=e:GetHandler()
return (ph==PHASE_DAMAGE or ph==PHASE_DAMAGE_CAL) and (c==Duel.GetAttacker() or c==Duel.GetAttackTarget())
return ph==PHASE_DAMAGE and (c==Duel.GetAttacker() or c==Duel.GetAttackTarget())
and not Duel.IsDamageCalculated()
end
function c3989465.cost(e,tp,eg,ep,ev,re,r,rp,chk)
......
......@@ -5,8 +5,8 @@ function c41925941.initial_effect(c)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCategory(CATEGORY_ATKCHANGE)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetHintTiming(TIMING_DAMAGE_CAL)
e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL)
e1:SetHintTiming(TIMING_DAMAGE_STEP)
e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP)
e1:SetCondition(c41925941.condition)
e1:SetCost(c41925941.cost)
e1:SetTarget(c41925941.target)
......@@ -15,20 +15,20 @@ function c41925941.initial_effect(c)
end
function c41925941.condition(e,tp,eg,ep,ev,re,r,rp)
local phase=Duel.GetCurrentPhase()
if (phase~=PHASE_DAMAGE and phase~=PHASE_DAMAGE_CAL) or Duel.IsDamageCalculated() then return false end
if phase~=PHASE_DAMAGE or Duel.IsDamageCalculated() then return false end
local a=Duel.GetAttacker()
local d=Duel.GetAttackTarget()
if a:IsControler(tp) then
e:SetLabelObject(d)
return d and a:IsRace(RACE_FIEND) and a:IsRelateToBattle() and d:IsFaceup() and d:IsRelateToBattle()
return a:IsFaceup() and a:IsRace(RACE_FIEND) and a:IsRelateToBattle() and d and d:IsFaceup() and d:IsRelateToBattle()
else
e:SetLabelObject(a)
return d and d:IsFaceup() and d:IsRace(RACE_FIEND) and d:IsRelateToBattle() and a:IsFaceup() and a:IsRelateToBattle()
return d:IsFaceup() and d:IsRace(RACE_FIEND) and d:IsRelateToBattle() and a and a:IsFaceup() and a:IsRelateToBattle()
end
end
function c41925941.cost(e,tp,eg,ep,ev,re,r,rp,chk)
local bc=e:GetLabelObject()
if chk==0 then return Duel.GetLP(tp)>100 and (bc:IsAttackAbove(100) or bc:IsDefenceAbove(100)) end
if chk==0 then return Duel.CheckLPCost(tp,100) and (bc:IsAttackAbove(100) or bc:IsDefenceAbove(100)) end
local maxc=Duel.GetLP(tp)
local maxpay=bc:GetAttack()
local def=bc:GetDefence()
......@@ -50,9 +50,9 @@ function c41925941.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
Duel.SetTargetCard(tc)
end
function c41925941.operation(e,tp,eg,ep,ev,re,r,rp,chk)
local bc=e:GetLabelObject()
local bc=Duel.GetFirstTarget()
local val=e:GetLabel()
if not bc:IsRelateToBattle() then return end
if not bc or not bc:IsRelateToEffect(e) or not bc:IsRelateToBattle() or not bc:IsControler(1-tp) then return end
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_UPDATE_ATTACK)
......
......@@ -6,9 +6,9 @@ function c4549095.initial_effect(c)
e1:SetDescription(aux.Stringid(4549095,0))
e1:SetCategory(CATEGORY_ATKCHANGE)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetHintTiming(TIMING_DAMAGE_CAL)
e1:SetHintTiming(TIMING_DAMAGE_STEP)
e1:SetRange(LOCATION_HAND+LOCATION_GRAVE)
e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL)
e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP)
e1:SetCondition(c4549095.condition)
e1:SetCost(c4549095.cost)
e1:SetOperation(c4549095.operation)
......@@ -16,7 +16,7 @@ function c4549095.initial_effect(c)
end
function c4549095.condition(e,tp,eg,ep,ev,re,r,rp)
local phase=Duel.GetCurrentPhase()
if (phase~=PHASE_DAMAGE and phase~=PHASE_DAMAGE_CAL) or Duel.IsDamageCalculated() then return false end
if phase~=PHASE_DAMAGE or Duel.IsDamageCalculated() then return false end
local a=Duel.GetAttacker()
local d=Duel.GetAttackTarget()
return (a:GetControler()==tp and a:IsSetCard(0x84) and a:IsRelateToBattle())
......
......@@ -6,9 +6,9 @@ function c53408006.initial_effect(c)
e1:SetDescription(aux.Stringid(53408006,0))
e1:SetCategory(CATEGORY_ATKCHANGE+CATEGORY_DEFCHANGE)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetHintTiming(TIMING_DAMAGE_CAL)
e1:SetHintTiming(TIMING_DAMAGE_STEP)
e1:SetRange(LOCATION_HAND)
e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL)
e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP)
e1:SetCondition(c53408006.condition)
e1:SetCost(c53408006.cost)
e1:SetOperation(c53408006.operation)
......@@ -19,7 +19,7 @@ function c53408006.filter(c)
end
function c53408006.condition(e,tp,eg,ep,ev,re,r,rp)
local phase=Duel.GetCurrentPhase()
if (phase~=PHASE_DAMAGE and phase~=PHASE_DAMAGE_CAL) or Duel.IsDamageCalculated() then return false end
if phase~=PHASE_DAMAGE or Duel.IsDamageCalculated() then return false end
local a=Duel.GetAttacker()
local d=Duel.GetAttackTarget()
return (a:GetControler()==tp and c53408006.filter(a) and a:IsRelateToBattle())
......
......@@ -36,8 +36,8 @@ function c67922702.initial_effect(c)
e5:SetType(EFFECT_TYPE_QUICK_O)
e5:SetRange(LOCATION_MZONE)
e5:SetCode(EVENT_FREE_CHAIN)
e5:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL)
e5:SetHintTiming(TIMING_DAMAGE_CAL)
e5:SetProperty(EFFECT_FLAG_DAMAGE_STEP)
e5:SetHintTiming(TIMING_DAMAGE_STEP)
e5:SetCondition(c67922702.atkcon)
e5:SetCost(c67922702.atkcost)
e5:SetOperation(c67922702.atkop)
......@@ -69,7 +69,7 @@ function c67922702.spop(e,tp,eg,ep,ev,re,r,rp)
end
function c67922702.atkcon(e,tp,eg,ep,ev,re,r,rp)
local phase=Duel.GetCurrentPhase()
return e:GetHandler():GetBattleTarget()~=nil and (phase==PHASE_DAMAGE or phase==PHASE_DAMAGE_CAL) and not Duel.IsDamageCalculated()
return e:GetHandler():GetBattleTarget()~=nil and phase==PHASE_DAMAGE and not Duel.IsDamageCalculated()
end
function c67922702.atkcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():GetFlagEffect(67922702)==0
......
......@@ -4,9 +4,9 @@ function c74458486.initial_effect(c)
local e1=Effect.CreateEffect(c)
e1:SetCategory(CATEGORY_ATKCHANGE)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL)
e1:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetHintTiming(TIMING_DAMAGE_CAL)
e1:SetHintTiming(TIMING_DAMAGE_STEP)
e1:SetCondition(c74458486.condition)
e1:SetTarget(c74458486.target)
e1:SetOperation(c74458486.activate)
......@@ -14,7 +14,7 @@ function c74458486.initial_effect(c)
end
function c74458486.condition(e,tp,eg,ep,ev,re,r,rp)
local phase=Duel.GetCurrentPhase()
return (phase==PHASE_DAMAGE or phase==PHASE_DAMAGE_CAL) and not Duel.IsDamageCalculated()
return phase==PHASE_DAMAGE and not Duel.IsDamageCalculated()
and Duel.GetAttacker():IsControler(1-tp) and Duel.GetAttackTarget()
end
function c74458486.target(e,tp,eg,ep,ev,re,r,rp,chk,chkc)
......
......@@ -6,12 +6,10 @@ function c75923050.initial_effect(c)
--atk up
local e1=Effect.CreateEffect(c)
e1:SetDescription(aux.Stringid(75923050,0))
e1:SetCategory(CATEGORY_ATKCHANGE)
e1:SetType(EFFECT_TYPE_SINGLE+EFFECT_TYPE_TRIGGER_F)
e1:SetRange(LOCATION_MZONE)
e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_UPDATE_ATTACK)
e1:SetCondition(c75923050.atkcon)
e1:SetOperation(c75923050.atkop)
e1:SetValue(1000)
c:RegisterEffect(e1)
--spsummon
local e2=Effect.CreateEffect(c)
......@@ -24,19 +22,12 @@ function c75923050.initial_effect(c)
e2:SetOperation(c75923050.spop)
c:RegisterEffect(e2)
end
function c75923050.atkcon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetBattleTarget()==nil
end
function c75923050.atkop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
if c:IsRelateToEffect(e) and c:IsFaceup() then
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_SINGLE)
e1:SetCode(EFFECT_UPDATE_ATTACK)
e1:SetReset(RESET_PHASE+RESET_DAMAGE_CAL)
e1:SetValue(1000)
c:RegisterEffect(e1)
end
function c75923050.atkcon(e)
local ph=Duel.GetCurrentPhase()
if not (ph==PHASE_DAMAGE or ph==PHASE_DAMAGE_CAL) then return false end
local a=Duel.GetAttacker()
local d=Duel.GetAttackTarget()
return a==e:GetHandler() and d==nil
end
function c75923050.spcon(e,tp,eg,ep,ev,re,r,rp)
return e:GetHandler():GetTurnID()~=Duel.GetTurnCount()
......
......@@ -11,9 +11,9 @@ function c84389640.initial_effect(c)
e2:SetDescription(aux.Stringid(84389640,0))
e2:SetCategory(CATEGORY_ATKCHANGE)
e2:SetCode(EVENT_FREE_CHAIN)
e2:SetHintTiming(TIMING_DAMAGE_CAL)
e2:SetHintTiming(TIMING_DAMAGE_STEP)
e2:SetRange(LOCATION_SZONE)
e2:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL)
e2:SetProperty(EFFECT_FLAG_CARD_TARGET+EFFECT_FLAG_DAMAGE_STEP)
e2:SetCondition(c84389640.condition)
e2:SetCost(c84389640.cost)
e2:SetOperation(c84389640.operation)
......@@ -21,15 +21,18 @@ function c84389640.initial_effect(c)
end
function c84389640.condition(e,tp,eg,ep,ev,re,r,rp)
local phase=Duel.GetCurrentPhase()
if (phase~=PHASE_DAMAGE and phase~=PHASE_DAMAGE_CAL) or Duel.IsDamageCalculated() then return false end
local tc=Duel.GetAttacker()
local bc=Duel.GetAttackTarget()
if tc:IsControler(1-tp) then
tc=Duel.GetAttackTarget()
bc=Duel.GetAttacker()
if phase~=PHASE_DAMAGE or Duel.IsDamageCalculated() then return false end
local a=Duel.GetAttacker()
local d=Duel.GetAttackTarget()
if a:IsControler(tp) then
e:SetLabelObject(d)
return a:IsFaceup() and a:IsLevelBelow(3) and a:IsType(TYPE_NORMAL) and a:IsRelateToBattle()
and d and d:IsFaceup() and d:IsRelateToBattle()
else
e:SetLabelObject(a)
return d:IsFaceup() and d:IsLevelBelow(3) and d:IsType(TYPE_NORMAL) and d:IsRelateToBattle()
and a and a:IsFaceup() and a:IsRelateToBattle()
end
e:SetLabelObject(bc)
return tc and bc and tc:IsFaceup() and bc:IsFaceup() and tc:IsLevelBelow(3) and tc:IsType(TYPE_NORMAL) and tc:IsRelateToBattle()
end
function c84389640.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():GetFlagEffect(84389640)==0 and Duel.CheckLPCost(tp,100)
......@@ -47,7 +50,7 @@ function c84389640.cost(e,tp,eg,ep,ev,re,r,rp,chk)
local pay=Duel.AnnounceNumber(tp,table.unpack(t))
Duel.PayLPCost(tp,pay)
e:SetLabel(-pay)
e:GetHandler():RegisterFlagEffect(84389640,RESET_PHASE+RESET_DAMAGE_CAL,0,1)
e:GetHandler():RegisterFlagEffect(84389640,RESET_PHASE+RESET_DAMAGE,0,1)
end
function c84389640.operation(e,tp,eg,ep,ev,re,r,rp,chk)
if not e:GetHandler():IsRelateToEffect(e) then return end
......
......@@ -6,9 +6,9 @@ function c85215458.initial_effect(c)
e1:SetDescription(aux.Stringid(85215458,0))
e1:SetCategory(CATEGORY_ATKCHANGE)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetHintTiming(TIMING_DAMAGE_CAL)
e1:SetHintTiming(TIMING_DAMAGE_STEP)
e1:SetRange(LOCATION_HAND)
e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL)
e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP)
e1:SetCondition(c85215458.condition)
e1:SetCost(c85215458.cost)
e1:SetOperation(c85215458.operation)
......@@ -16,7 +16,7 @@ function c85215458.initial_effect(c)
end
function c85215458.condition(e,tp,eg,ep,ev,re,r,rp)
local phase=Duel.GetCurrentPhase()
if (phase~=PHASE_DAMAGE and phase~=PHASE_DAMAGE_CAL) or Duel.IsDamageCalculated() then return false end
if phase~=PHASE_DAMAGE or Duel.IsDamageCalculated() then return false end
local a=Duel.GetAttacker()
local d=Duel.GetAttackTarget()
return (a:GetControler()==tp and a:IsSetCard(0x33) and a:IsRelateToBattle())
......
......@@ -30,10 +30,10 @@ function c87043568.operation(e,tp,eg,ep,ev,re,r,rp)
e1:SetCategory(CATEGORY_ATKCHANGE)
e1:SetType(EFFECT_TYPE_QUICK_O)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetHintTiming(TIMING_DAMAGE_CAL)
e1:SetHintTiming(TIMING_DAMAGE_STEP)
e1:SetRange(LOCATION_SZONE)
e1:SetCountLimit(1)
e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL)
e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP)
e1:SetCondition(c87043568.atkcon)
e1:SetCost(c87043568.atkcost)
e1:SetOperation(c87043568.atkop)
......@@ -57,7 +57,7 @@ function c87043568.atkcon(e,tp,eg,ep,ev,re,r,rp)
local a=Duel.GetAttacker()
local ph=Duel.GetCurrentPhase()
return a==e:GetHandler():GetEquipTarget()
and (ph==PHASE_DAMAGE or ph==PHASE_DAMAGE_CAL) and not Duel.IsDamageCalculated()
and ph==PHASE_DAMAGE and not Duel.IsDamageCalculated()
end
function c87043568.cfilter(c)
return c:IsType(TYPE_MONSTER) and c:IsAttackBelow(1000) and c:IsAbleToGraveAsCost()
......
......@@ -9,8 +9,8 @@ function c900787.initial_effect(c)
e1:SetCategory(CATEGORY_ATKCHANGE)
e1:SetType(EFFECT_TYPE_QUICK_O)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetHintTiming(TIMING_DAMAGE_CAL)
e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP+EFFECT_FLAG_DAMAGE_CAL)
e1:SetHintTiming(TIMING_DAMAGE_STEP)
e1:SetProperty(EFFECT_FLAG_DAMAGE_STEP)
e1:SetRange(LOCATION_MZONE)
e1:SetCondition(c900787.condition)
e1:SetCost(c900787.cost)
......@@ -20,7 +20,7 @@ end
function c900787.condition(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local ph=Duel.GetCurrentPhase()
return (ph==PHASE_DAMAGE or ph==PHASE_DAMAGE_CAL) and (c==Duel.GetAttacker() or c==Duel.GetAttackTarget())
return ph==PHASE_DAMAGE and (c==Duel.GetAttacker() or c==Duel.GetAttackTarget())
and not Duel.IsDamageCalculated()
end
function c900787.cfilter(c)
......
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