Commit 31ace102 authored by salix5's avatar salix5
parent 5aa0f079
......@@ -8,7 +8,7 @@ function c12644061.initial_effect(c)
--attribute
local e2=Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_FIELD)
e2:SetRange(LOCATION_SZONE)
e2:SetRange(LOCATION_FZONE)
e2:SetTargetRange(LOCATION_MZONE+LOCATION_GRAVE,LOCATION_MZONE+LOCATION_GRAVE)
e2:SetCode(EFFECT_CHANGE_ATTRIBUTE)
e2:SetTarget(aux.TargetBoolFunction(Card.IsSetCard,0x1034))
......@@ -18,7 +18,7 @@ function c12644061.initial_effect(c)
local e3=Effect.CreateEffect(c)
e3:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e3:SetCode(EVENT_ATTACK_ANNOUNCE)
e3:SetRange(LOCATION_SZONE)
e3:SetRange(LOCATION_FZONE)
e3:SetCondition(c12644061.discon)
e3:SetOperation(c12644061.disop)
c:RegisterEffect(e3)
......@@ -26,8 +26,8 @@ function c12644061.initial_effect(c)
local e4=Effect.CreateEffect(c)
e4:SetDescription(aux.Stringid(12644061,0))
e4:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_TRIGGER_O)
e4:SetCode(EVENT_PRE_BATTLE_DAMAGE)
e4:SetRange(LOCATION_SZONE)
e4:SetCode(EVENT_PRE_DAMAGE_CALCULATE)
e4:SetRange(LOCATION_FZONE)
e4:SetCondition(c12644061.damcon)
e4:SetCost(c12644061.damcost)
e4:SetOperation(c12644061.damop)
......@@ -67,6 +67,15 @@ function c12644061.damcost(e,tp,eg,ep,ev,re,r,rp,chk)
Duel.SendtoGrave(g,REASON_COST)
end
function c12644061.damop(e,tp,eg,ep,ev,re,r,rp)
if not e:GetHandler():IsRelateToEffect(e) then return end
local c=e:GetHandler()
if not c:IsRelateToEffect(e) then return end
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetCode(EVENT_PRE_BATTLE_DAMAGE)
e1:SetRange(LOCATION_FZONE)
e1:SetOperation(c12644061.dop)
c:RegisterEffect(e1,tp)
end
function c12644061.dop(e,tp,eg,ep,ev,re,r,rp)
Duel.ChangeBattleDamage(tp,0)
end
......@@ -3,20 +3,24 @@ function c16674846.initial_effect(c)
--no damage
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_PRE_BATTLE_DAMAGE)
e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE)
e1:SetCondition(c16674846.condition)
e1:SetOperation(c16674846.operation)
c:RegisterEffect(e1)
end
function c16674846.condition(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetTurnPlayer()~=tp and ep==tp
return Duel.GetTurnPlayer()~=tp
end
function c16674846.filter(c)
return c:IsDefenceBelow(1500) and c:IsType(TYPE_TUNER) and c:IsRace(RACE_WARRIOR)
and c:IsAbleToHand() and not c:IsHasEffect(EFFECT_NECRO_VALLEY)
end
function c16674846.operation(e,tp,eg,ep,ev,re,r,rp)
Duel.ChangeBattleDamage(ep,0)
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetCode(EVENT_PRE_BATTLE_DAMAGE)
e1:SetOperation(c16674846.damop)
Duel.RegisterEffect(e1,tp)
local g=Duel.GetMatchingGroup(c16674846.filter,tp,LOCATION_GRAVE,0,nil)
if g:GetCount()~=0 and Duel.SelectYesNo(tp,aux.Stringid(16674846,0)) then
Duel.Hint(HINT_SELECTMSG,tp,HINTMSG_ATOHAND)
......@@ -25,3 +29,6 @@ function c16674846.operation(e,tp,eg,ep,ev,re,r,rp)
Duel.ConfirmCards(1-tp,sg)
end
end
function c16674846.damop(e,tp,eg,ep,ev,re,r,rp)
Duel.ChangeBattleDamage(tp,0)
end
......@@ -3,20 +3,27 @@ function c24268052.initial_effect(c)
--
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_PRE_BATTLE_DAMAGE)
e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE)
e1:SetCondition(c24268052.condition)
e1:SetTarget(c24268052.target)
e1:SetOperation(c24268052.operation)
c:RegisterEffect(e1)
end
function c24268052.condition(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetTurnPlayer()~=tp and ep==tp
return Duel.GetTurnPlayer()~=tp
end
function c24268052.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsPlayerCanDraw(tp,1) end
Duel.SetOperationInfo(0,CATEGORY_DRAW,nil,0,tp,1)
end
function c24268052.operation(e,tp,eg,ep,ev,re,r,rp)
Duel.ChangeBattleDamage(ep,0)
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetCode(EVENT_PRE_BATTLE_DAMAGE)
e1:SetOperation(c24268052.damop)
Duel.RegisterEffect(e1,tp)
Duel.Draw(tp,1,REASON_EFFECT)
end
function c24268052.damop(e,tp,eg,ep,ev,re,r,rp)
Duel.ChangeBattleDamage(tp,0)
end
......@@ -4,14 +4,29 @@ function c29389368.initial_effect(c)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCategory(CATEGORY_RECOVER)
e1:SetCode(EVENT_PRE_BATTLE_DAMAGE)
e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE)
e1:SetCondition(c29389368.condition)
e1:SetTarget(c29389368.target)
e1:SetOperation(c29389368.activate)
c:RegisterEffect(e1)
end
function c29389368.condition(e,tp,eg,ep,ev,re,r,rp)
return ep==tp and Duel.GetBattleDamage(tp)>=2000
local ar=Duel.GetAttacker()
local at=Duel.GetAttackTarget()
local v1=0
if ar:IsPosition(POS_DEFENCE) and ar:IsHasEffect(EFFECT_DEFENCE_ATTACK) then v1=ar:GetDefence()
else v1=ar:GetAttack() end
if at then
if at:IsPosition(POS_ATTACK) then
return v1-at:GetAttack()>=2000
elseif ar:IsHasEffect(EFFECT_PIERCE)
return v1-at:GetDefence()>=2000
else
return false
end
else
return v1>=2000
end
end
function c29389368.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end
......
......@@ -5,19 +5,26 @@ function c40640057.initial_effect(c)
e1:SetDescription(aux.Stringid(40640057,0))
e1:SetType(EFFECT_TYPE_QUICK_O+EFFECT_TYPE_FIELD)
e1:SetRange(LOCATION_HAND)
e1:SetCode(EVENT_PRE_BATTLE_DAMAGE)
e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE)
e1:SetCondition(c40640057.con)
e1:SetCost(c40640057.cost)
e1:SetOperation(c40640057.op)
c:RegisterEffect(e1)
end
function c40640057.con(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetTurnPlayer()~=tp and ep==tp
return Duel.GetTurnPlayer()~=tp
end
function c40640057.cost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():IsDiscardable() end
Duel.SendtoGrave(e:GetHandler(),REASON_COST+REASON_DISCARD)
end
function c40640057.op(e,tp,eg,ep,ev,re,r,rp)
Duel.ChangeBattleDamage(ep,0)
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetCode(EVENT_PRE_BATTLE_DAMAGE)
e1:SetOperation(c40640057.damop)
Duel.RegisterEffect(e1,tp)
end
function c40640057.damop(e,tp,eg,ep,ev,re,r,rp)
Duel.ChangeBattleDamage(tp,0)
end
......@@ -6,7 +6,7 @@ function c47432275.initial_effect(c)
e1:SetCategory(CATEGORY_RECOVER+CATEGORY_TOHAND)
e1:SetType(EFFECT_TYPE_QUICK_O+EFFECT_TYPE_FIELD)
e1:SetRange(LOCATION_MZONE)
e1:SetCode(EVENT_PRE_BATTLE_DAMAGE)
e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE)
e1:SetCountLimit(1)
e1:SetCondition(c47432275.con)
e1:SetTarget(c47432275.target)
......@@ -14,8 +14,7 @@ function c47432275.initial_effect(c)
c:RegisterEffect(e1)
end
function c47432275.con(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
return Duel.GetAttackTarget()==c and ep==tp
return Duel.GetAttackTarget()==e:GetHandler()
end
function c47432275.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end
......@@ -26,8 +25,15 @@ function c47432275.target(e,tp,eg,ep,ev,re,r,rp,chk)
end
function c47432275.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
Duel.ChangeBattleDamage(ep,0)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetCode(EVENT_PRE_BATTLE_DAMAGE)
e1:SetOperation(c47432275.damop)
Duel.RegisterEffect(e1,tp)
local p,d=Duel.GetChainInfo(0,CHAININFO_TARGET_PLAYER,CHAININFO_TARGET_PARAM)
Duel.Recover(p,d,REASON_EFFECT)
Duel.SendtoHand(c,nil,REASON_EFFECT)
end
function c47432275.damop(e,tp,eg,ep,ev,re,r,rp)
Duel.ChangeBattleDamage(tp,0)
end
......@@ -5,7 +5,7 @@ function c60953118.initial_effect(c)
e1:SetDescription(aux.Stringid(60953118,1))
e1:SetType(EFFECT_TYPE_QUICK_O+EFFECT_TYPE_FIELD)
e1:SetRange(LOCATION_HAND)
e1:SetCode(EVENT_PRE_BATTLE_DAMAGE)
e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE)
e1:SetCondition(c60953118.damcon)
e1:SetCost(c60953118.damcost)
e1:SetOperation(c60953118.damop)
......@@ -27,14 +27,21 @@ function c60953118.initial_effect(c)
c:RegisterEffect(e4)
end
function c60953118.damcon(e,tp,eg,ep,ev,re,r,rp)
return ep==tp
return true
end
function c60953118.damcost(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return e:GetHandler():IsAbleToGraveAsCost() end
Duel.SendtoGrave(e:GetHandler(),REASON_COST)
end
function c60953118.damop(e,tp,eg,ep,ev,re,r,rp)
Duel.ChangeBattleDamage(ep,0)
local e1=Effect.CreateEffect(e:GetHandler())
e1:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e1:SetCode(EVENT_PRE_BATTLE_DAMAGE)
e1:SetOperation(c60953118.dop)
Duel.RegisterEffect(e1,tp)
end
function c60953118.dop(e,tp,eg,ep,ev,re,r,rp)
Duel.ChangeBattleDamage(tp,0)
end
function c60953118.cointg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return true end
......
......@@ -6,7 +6,7 @@ function c99733359.initial_effect(c)
e1:SetCategory(CATEGORY_SPECIAL_SUMMON)
e1:SetType(EFFECT_TYPE_QUICK_O+EFFECT_TYPE_FIELD)
e1:SetRange(LOCATION_GRAVE)
e1:SetCode(EVENT_PRE_BATTLE_DAMAGE)
e1:SetCode(EVENT_PRE_DAMAGE_CALCULATE)
e1:SetCountLimit(1,99733359)
e1:SetCondition(c99733359.condition)
e1:SetCost(c99733359.cost)
......@@ -36,6 +36,13 @@ function c99733359.operation(e,tp,eg,ep,ev,re,r,rp)
e1:SetReset(RESET_EVENT+0x47e0000)
e1:SetValue(LOCATION_REMOVED)
c:RegisterEffect(e1,true)
Duel.ChangeBattleDamage(tp,0)
local e2=Effect.CreateEffect(e:GetHandler())
e2:SetType(EFFECT_TYPE_FIELD+EFFECT_TYPE_CONTINUOUS)
e2:SetCode(EVENT_PRE_BATTLE_DAMAGE)
e2:SetOperation(c99733359.damop)
Duel.RegisterEffect(e2,tp)
end
end
function c99733359.damop(e,tp,eg,ep,ev,re,r,rp)
Duel.ChangeBattleDamage(tp,0)
end
......@@ -228,7 +228,7 @@ EFFECT_TYPE_TRIGGER_O =0x0080 --诱发选发效果
EFFECT_TYPE_QUICK_O =0x0100 --诱发即时效果
EFFECT_TYPE_TRIGGER_F =0x0200 --诱发必发效果
EFFECT_TYPE_QUICK_F =0x0400 --诱发即时必发效果(熊猫龙等)
EFFECT_TYPE_CONTINUOUS =0x0800 --不入连锁的发效果
EFFECT_TYPE_CONTINUOUS =0x0800 --不入连锁的发效果
--========== Flags ========== --效果的特殊性质
EFFECT_FLAG_INITIAL =0x0001 --可以发动的
EFFECT_FLAG_FUNC_VALUE =0x0002 --此效果的Value属性是函数
......@@ -510,7 +510,7 @@ EVENT_BATTLE_START =1132 --伤害步骤开始时(反转前)
EVENT_BATTLE_CONFIRM =1133 --伤害计算前(反转後)
EVENT_PRE_DAMAGE_CALCULATE =1134 --伤害计算时(羽斬)
EVENT_DAMAGE_CALCULATING =1135 --伤害计算(摩天樓)
EVENT_PRE_BATTLE_DAMAGE =1136 --即将产生战斗伤害
EVENT_PRE_BATTLE_DAMAGE =1136 --即将产生战斗伤害(EFFECT_TYPE_CONTINUOUS)
EVENT_BATTLE_END =1137 --(N/A)
EVENT_BATTLED =1138 --伤害计算后(异女、同反转效果时点)
EVENT_BATTLE_DESTROYING =1139 --战斗破坏送去墓地时(BF-苍炎之修罗)
......
......@@ -1086,33 +1086,34 @@ function Auxiliary.disfilter1(c)
return c:IsFaceup() and not c:IsDisabled()
and (c:IsType(TYPE_SPELL+TYPE_TRAP+TYPE_EFFECT) or bit.band(c:GetOriginalType(),TYPE_EFFECT)>0)
end
--reset op of chain attack
function Auxiliary.atrst(e,tp,eg,ep,ev,re,r,rp)
--reset of chain attack
local e1=e:GetLabelObject()
if eg:GetFirst()~=e1:GetHandler() then e1:Reset() end
end
--condition of EVENT_BATTLE_DESTROYING
function Auxiliary.bdcon(e,tp,eg,ep,ev,re,r,rp)
--condition of EVENT_BATTLE_DESTROYING
local c=e:GetHandler()
return c:IsRelateToBattle()
end
--condition of EVENT_BATTLE_DESTROYING + opponent monster
function Auxiliary.bdocon(e,tp,eg,ep,ev,re,r,rp)
--condition of EVENT_BATTLE_DESTROYING + opponent monster
local c=e:GetHandler()
return c:IsRelateToBattle() and c:IsStatus(STATUS_OPPO_BATTLE)
end
--condition of EVENT_BATTLE_DESTROYING + to_grave
function Auxiliary.bdgcon(e,tp,eg,ep,ev,re,r,rp)
--condition of EVENT_BATTLE_DESTROYING + to_grave
local c=e:GetHandler()
local bc=c:GetBattleTarget()
return c:IsRelateToBattle() and bc:IsLocation(LOCATION_GRAVE) and bc:IsType(TYPE_MONSTER)
end
--condition of EVENT_BATTLE_DESTROYING + opponent monster + to_grave
function Auxiliary.bdogcon(e,tp,eg,ep,ev,re,r,rp)
--condition of EVENT_BATTLE_DESTROYING + opponent monster + to_grave
local c=e:GetHandler()
local bc=c:GetBattleTarget()
return c:IsRelateToBattle() and c:IsStatus(STATUS_OPPO_BATTLE) and bc:IsLocation(LOCATION_GRAVE) and bc:IsType(TYPE_MONSTER)
end
--flag effect for spell counter
function Auxiliary.chainreg(e,tp,eg,ep,ev,re,r,rp)
if e:GetHandler():GetFlagEffect(1)==0 then
e:GetHandler():RegisterFlagEffect(1,RESET_EVENT+0x1fc0000+RESET_CHAIN,0,1)
......
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