Commit 7b4424b1 authored by xiaoye's avatar xiaoye

fix

parent e51622a5
......@@ -2,5 +2,5 @@
local cm,m,o=GetID()
function cm.initial_effect(c)
vgd.VgCard(c)
vgd.CannotBeTarget(c,m,LOCATION_RZONE)
vgd.CannotBeTarget(c,m,LOCATION_R_CIRCLE)
end
\ No newline at end of file
......@@ -6,7 +6,7 @@ function cm.initial_effect(c)
vgd.AbilityAuto(c,m,LOCATION_MZONE,EFFECT_TYPE_FIELD,EVENT_BATTLED,cm.operation,vgf.DisCardCost(1),cm.condition,nil,1)
vgd.GlobalCheckEffect(c,m,EVENT_MOVE,cm.checkcon,cm.checkop)
--【永】【V】:你的回合中,你所有的等级3的单位的力量+2000。
vgd.AbilityContChangeAttack(c,m,LOCATION_MZONE,EFFECT_TYPE_FIELD,2000,cm.con,cm.target,LOCATION_MZONE+LOCATION_GCIRCLE,0)
vgd.AbilityContChangeAttack(c,m,LOCATION_MZONE,EFFECT_TYPE_FIELD,2000,cm.con,cm.target,LOCATION_MZONE+LOCATION_G_CIRCLE,0)
end
function cm.checkfilter(c,tp)
return c:IsLocation(LOCATION_TRIGGER) and c:IsLevel(3) and c:IsControler(tp)
......
......@@ -25,5 +25,5 @@ function cm.cost(e,tp,eg,ep,ev,re,r,rp,chk)
end
function cm.condition(e,c)
local tp=e:GetHandlerPlayer()
return vgf.RMonsterCondition(e) and vgf.IsExistingMatchingCard(Card.IsLevel,tp,LOCATION_MZONE+LOCATION_GCIRCLE,0,3,nil,3) and Duel.GetTurnPlayer()==tp
return vgf.RMonsterCondition(e) and vgf.IsExistingMatchingCard(Card.IsLevel,tp,LOCATION_MZONE+LOCATION_G_CIRCLE,0,3,nil,3) and Duel.GetTurnPlayer()==tp
end
\ No newline at end of file
......@@ -5,7 +5,7 @@ function cm.initial_effect(c)
end
function cm.con(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
return c:IsLocation(LOCATION_GCIRCLE) and c:IsPreviousLocation(LOCATION_MZONE) and re:IsHasCategory(CATEGORY_DEFENDER) and vgf.GetVMonster(tp):GetOverlayGroup():FilterCount(Card.IsSetCard,nil,0x76)>=1
return c:IsLocation(LOCATION_G_CIRCLE) and c:IsPreviousLocation(LOCATION_MZONE) and re:IsHasCategory(CATEGORY_DEFENDER) and vgf.GetVMonster(tp):GetOverlayGroup():FilterCount(Card.IsSetCard,nil,0x76)>=1
end
function cm.filter(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
......
......@@ -18,7 +18,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
end
end
function cm.con(e,tp,eg,ep,ev,re,r,rp)
return vgf.RMonsterCondition(e) and vgf.IsExistingMatchingCard(Card.IsLevel,tp,LOCATION_MZONE+LOCATION_GCIRCLE,0,3,nil,3)
return vgf.RMonsterCondition(e) and vgf.IsExistingMatchingCard(Card.IsLevel,tp,LOCATION_MZONE+LOCATION_G_CIRCLE,0,3,nil,3)
end
function cm.op1(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
......
local cm,m,o=GetID()
function cm.initial_effect(c)
vgd.VgCard(c)
vgd.CannotBeTarget(c,m,LOCATION_RZONE)
vgd.CannotBeTarget(c,m,LOCATION_R_CIRCLE)
vgd.AbilityAuto(c,m,LOCATION_MZONE,EFFECT_TYPE_SINGLE,EVENT_HITTING,cm.op,nil,vgf.RMonsterCondition)
end
function cm.op(e,tp,eg,ep,ev,re,r,rp)
......
local cm,m,o=GetID()
function cm.initial_effect(c)
vgd.VgCard(c)
vgd.CannotBeTarget(c,m,LOCATION_RZONE)
vgd.CannotBeTarget(c,m,LOCATION_R_CIRCLE)
end
\ No newline at end of file
......@@ -18,5 +18,5 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
end
end
function cm.con(e,tp,eg,ep,ev,re,r,rp)
return vgf.IsExistingMatchingCard(Card.IsLevel,tp,LOCATION_MZONE+LOCATION_GCIRCLE,0,3,nil,3) and vgf.RMonsterCondition(e)
return vgf.IsExistingMatchingCard(Card.IsLevel,tp,LOCATION_MZONE+LOCATION_G_CIRCLE,0,3,nil,3) and vgf.RMonsterCondition(e)
end
\ No newline at end of file
......@@ -10,5 +10,5 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
end
function cm.con(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
return c:IsLocation(LOCATION_GCIRCLE) and c:IsPreviousLocation(LOCATION_MZONE) and re:IsHasCategory(CATEGORY_DEFENDER)
return c:IsLocation(LOCATION_G_CIRCLE) and c:IsPreviousLocation(LOCATION_MZONE) and re:IsHasCategory(CATEGORY_DEFENDER)
end
\ No newline at end of file
......@@ -25,13 +25,13 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
end
function cm.costtg(e,re,tp)
e:SetLabelObject(re:GetHandler())
return re:IsHasCategory(CATEGORY_DEFENDER) and re:GetHandler():IsLocation(LOCATION_HAND) and re:GetHandlerPlayer()==tp and not vgf.IsExistingMatchingCard(nil,tp,LOCATION_GCIRCLE,0,1,nil) and Duel.GetAttacker()==e:GetHandler() and re:IsActiveType(TYPE_MONSTER)
return re:IsHasCategory(CATEGORY_DEFENDER) and re:GetHandler():IsLocation(LOCATION_HAND) and re:GetHandlerPlayer()==tp and not vgf.IsExistingMatchingCard(nil,tp,LOCATION_G_CIRCLE,0,1,nil) and Duel.GetAttacker()==e:GetHandler() and re:IsActiveType(TYPE_MONSTER)
end
function cm.costchk(e,re,tp)
return vgf.IsExistingMatchingCard(vgf.IsAbleToGcircle,tp,LOCATION_HAND,0,1,re:GetHandler(),LOCATION_HAND)
return vgf.IsExistingMatchingCard(vgf.IsAbleToGCircle,tp,LOCATION_HAND,0,1,re:GetHandler(),LOCATION_HAND)
end
function cm.costop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetLabelObject()
local g=vgf.SelectMatchingCard(HINTMSG_TO_GCIRCLE,e,tp,vgf.IsAbleToGcircle,tp,LOCATION_HAND,0,1,1,c,LOCATION_HAND)
vgf.Sendto(LOCATION_GCIRCLE,g,tp,POS_FACEUP,REASON_EFFECT)
local g=vgf.SelectMatchingCard(HINTMSG_TO_G_CIRCLE,e,tp,vgf.IsAbleToGCircle,tp,LOCATION_HAND,0,1,1,c,LOCATION_HAND)
vgf.Sendto(LOCATION_G_CIRCLE,g,tp,POS_FACEUP,REASON_EFFECT)
end
\ No newline at end of file
......@@ -5,7 +5,7 @@ function cm.initial_effect(c)
end
function cm.val(e)
local tp=e:GetHandlerPlayer()
local ct=vgf.GetMatchingGroupCount(Card.IsLevel,tp,LOCATION_MZONE+LOCATION_GCIRCLE,0,nil,3)
local ct=vgf.GetMatchingGroupCount(Card.IsLevel,tp,LOCATION_MZONE+LOCATION_G_CIRCLE,0,nil,3)
local val=math.floor(ct/2)*5000
return val
end
......
local cm,m,o=GetID()
function cm.initial_effect(c)
vgd.VgCard(c)
vgd.CannotCallToGcircleWhenAttack(c, m, function (e,re,tp)
vgd.CannotCallToGCircleWhenAttack(c, m, function (e,re,tp)
return re:GetHandler():IsLocation(LOCATION_HAND)
end)
vgd.AbilityAuto(c,m,LOCATION_MZONE,EFFECT_TYPE_SINGLE,EVENT_HITTING,cm.op,cm.cost,nil,nil,1)
......
local cm,m,o=GetID()
function cm.initial_effect(c)
vgd.VgCard(c)
vgd.CannotBeTarget(c,m,LOCATION_RZONE,EFFECT_TYPE_FIELD,nil,nil,cm.tg)
vgd.CannotBeTarget(c,m,LOCATION_R_CIRCLE,EFFECT_TYPE_FIELD,nil,nil,cm.tg)
local e1=Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetCode(EFFECT_CANMOVE_PARALLEL)
......
......@@ -3,11 +3,11 @@ function cm.initial_effect(c)
vgd.VgCard(c)
vgd.AbilityAuto(c,m,nil,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.op,vgf.CostAnd(vgf.DamageCost(1),vgf.LeaveFieldCost(vgf.RMonsterFilter,1,1,c)))
vgd.GlobalCheckEffect(c,m,EVENT_TO_GRAVE,cm.chkcon)
vgd.AbilityContChangeAttack(c,m,LOCATION_RZONE,EFFECT_TYPE_SINGLE,5000,cm.con)
vgd.AbilityContChangeAttack(c,m,LOCATION_R_CIRCLE,EFFECT_TYPE_SINGLE,5000,cm.con)
end
function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local g=vgf.SelectMatchingCard(HINTMSG_RMONSTER,e,tp,nil,tp,0,LOCATION_VZONE,1,1,nil)
local g=vgf.SelectMatchingCard(HINTMSG_RMONSTER,e,tp,nil,tp,0,LOCATION_V_CIRCLE,1,1,nil)
vgf.Sendto(LOCATION_DROP,g,REASON_EFFECT)
vgd.TriggerCountUp(c, m, 1, nil, RESET_PHASE+PHASE_END)
end
......
......@@ -2,7 +2,7 @@ local cm,m,o=GetID()
function cm.initial_effect(c)
vgd.VgCard(c)
cm.is_has_continuous = true
local loc, con = vgf.GetLocCondition(LOCATION_RZONE,cm.con)
local loc, con = vgf.GetLocCondition(LOCATION_R_CIRCLE,cm.con)
local e1 = Effect.CreateEffect(c)
e1:SetType(EFFECT_TYPE_FIELD)
e1:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
......@@ -13,5 +13,5 @@ function cm.initial_effect(c)
c:RegisterEffect(e1)
end
function cm.con(e,tp,eg,ep,ev,re,r,rp)
return vgf.IsExistingMatchingCard(Card.IsSetCard,tp,LOCATION_VZONE,0,1,nil,0x78)
return vgf.IsExistingMatchingCard(Card.IsSetCard,tp,LOCATION_V_CIRCLE,0,1,nil,0x78)
end
\ No newline at end of file
......@@ -33,7 +33,7 @@ function cm.op2(e,tp,eg,ep,ev,re,r,rp)
local e2 = Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_FIELD)
e2:SetProperty(EFFECT_FLAG_PLAYER_TARGET)
e2:SetCode(AFFECT_CODE_DEFENDER_CANNOT_TO_GCIRCLE)
e2:SetCode(AFFECT_CODE_DEFENDER_CANNOT_TO_G_CIRCLE)
e2:SetTargetRange(0,1)
Duel.RegisterEffect(e2,tp)
vgf.EffectReset(c,{e1,e2},EVENT_BATTLED)
......
......@@ -7,7 +7,7 @@ function cm.initial_effect(c)
-- 白翼-【起】【V】【1回合1次】:通过【费用】[计数爆发1],这个回合中,这个单位的☆+1。
vgd.AbilityAct(c,m,LOCATION_MZONE,cm.op2,vgf.DamageCost(1),cm.con2,nil,1)
-- 黑翼-【永】【V】:这个单位攻击的战斗中,对手不能将触发单位卡从手牌CALL到G上。
VgD.CannotCallToGcircleWhenAttack(c,m,function (e,re,tp)
VgD.CannotCallToGCircleWhenAttack(c,m,function (e,re,tp)
return re:GetHandler():IsType(TYPE_TRIIGER) and re:GetHandler():IsLocation(LOCATION_HAND)
end,cm.con3)
end
......
......@@ -14,7 +14,7 @@ end
function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local g=vgf.SelectMatchingCard(HINTMSG_ATOHAND,e,tp,nil,tp,LOCATION_RZONE+LOCATION_OVERLAY,0,0,1,nil)
local g=vgf.SelectMatchingCard(HINTMSG_ATOHAND,e,tp,nil,tp,LOCATION_R_CIRCLE+LOCATION_OVERLAY,0,0,1,nil)
if #g>0 then
local tc=g:GetFirst()
vgf.Sendto(LOCATION_HAND,tc,tp)
......
local cm,m,o=GetID()
function cm.initial_effect(c)
vgd.VgCard(c)
vgd.AbilityAct(c,m,LOCATION_RZONE,cm.op,vgf.CostAnd(vgf.DamageCost(1), vgf.ToOverlayCost))
vgd.CannotBeTarget(c, m, LOCATION_VZONE, EFFECT_TYPE_SINGLE, nil, vgf.DarkWing)
vgd.CannotBeAttackTarget(c, m, LOCATION_VZONE, EFFECT_TYPE_SINGLE, cm.val, vgf.DarkWing)
vgd.AbilityAct(c,m,LOCATION_R_CIRCLE,cm.op,vgf.CostAnd(vgf.DamageCost(1), vgf.ToOverlayCost))
vgd.CannotBeTarget(c, m, LOCATION_V_CIRCLE, EFFECT_TYPE_SINGLE, nil, vgf.DarkWing)
vgd.CannotBeAttackTarget(c, m, LOCATION_V_CIRCLE, EFFECT_TYPE_SINGLE, cm.val, vgf.DarkWing)
end
function cm.val(e,c)
return vgf.RMonsterFilter(c)
......
......@@ -17,7 +17,7 @@ end
function cm.op(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local g=vgf.SelectMatchingCard(HINTMSG_VMONSTER,e,tp,nil,tp,LOCATION_VZONE,0,nil)
local g=vgf.SelectMatchingCard(HINTMSG_VMONSTER,e,tp,nil,tp,LOCATION_V_CIRCLE,0,nil)
vgf.StarUp(c,g,1,nil)
end
......
......@@ -14,7 +14,7 @@ function cm.initial_effect(c)
end
function cm.op1(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetHandler()
local g=vgf.SelectMatchingCard(HINTMSG_VMONSTER,e,tp,nil,tp,LOCATION_VZONE,0,1,1,nil)
local g=vgf.SelectMatchingCard(HINTMSG_VMONSTER,e,tp,nil,tp,LOCATION_V_CIRCLE,0,1,1,nil)
vgf.AtkUp(c,g,5000)
end
......
......@@ -24,13 +24,13 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
end
function cm.costtg(e,re,tp)
e:SetLabelObject(re:GetHandler())
return re:IsHasCategory(CATEGORY_DEFENDER) and re:GetHandler():IsLocation(LOCATION_HAND) and re:GetHandlerPlayer()==tp and not vgf.IsExistingMatchingCard(nil,tp,LOCATION_GCIRCLE,0,1,nil) and Duel.GetAttacker()==e:GetHandler() and re:IsActiveType(TYPE_MONSTER)
return re:IsHasCategory(CATEGORY_DEFENDER) and re:GetHandler():IsLocation(LOCATION_HAND) and re:GetHandlerPlayer()==tp and not vgf.IsExistingMatchingCard(nil,tp,LOCATION_G_CIRCLE,0,1,nil) and Duel.GetAttacker()==e:GetHandler() and re:IsActiveType(TYPE_MONSTER)
end
function cm.costchk(e,re,tp)
return vgf.IsExistingMatchingCard(vgf.IsAbleToGcircle,tp,LOCATION_HAND,0,1,re:GetHandler(),LOCATION_HAND)
return vgf.IsExistingMatchingCard(vgf.IsAbleToGCircle,tp,LOCATION_HAND,0,1,re:GetHandler(),LOCATION_HAND)
end
function cm.costop(e,tp,eg,ep,ev,re,r,rp)
local c=e:GetLabelObject()
local g=vgf.SelectMatchingCard(HINTMSG_TO_GCIRCLE,e,tp,vgf.IsAbleToGcircle,tp,LOCATION_HAND,0,1,1,c,LOCATION_HAND)
vgf.Sendto(LOCATION_GCIRCLE,g,tp,POS_FACEUP,REASON_EFFECT)
local g=vgf.SelectMatchingCard(HINTMSG_TO_G_CIRCLE,e,tp,vgf.IsAbleToGCircle,tp,LOCATION_HAND,0,1,1,c,LOCATION_HAND)
vgf.Sendto(LOCATION_G_CIRCLE,g,tp,POS_FACEUP,REASON_EFFECT)
end
\ No newline at end of file
......@@ -8,7 +8,7 @@ function cm.initial_effect(c)
end
function cm.con(e,tp,eg,ep,ev,re,r,rp)
local c = e:GetHandler()
return c:IsLocation(LOCATION_GCIRCLE)
return c:IsLocation(LOCATION_G_CIRCLE)
end
function cm.op(e,tp,eg,ep,ev,re,r,rp)
......
......@@ -18,5 +18,5 @@ end
function cm.con(e,tp,eg,ep,ev,re,r,rp)
local c = e:GetHandler()
return c:IsLocation(LOCATION_GCIRCLE)
return c:IsLocation(LOCATION_G_CIRCLE)
end
......@@ -7,7 +7,7 @@ function cm.initial_effect(c)
end
function cm.con(e,tp,eg,ep,ev,re,r,rp)
local c = e:GetHandler()
return c:IsLocation(LOCATION_GCIRCLE)
return c:IsLocation(LOCATION_G_CIRCLE)
end
function cm.op(e,tp,eg,ep,ev,re,r,rp)
......
......@@ -32,7 +32,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
Duel.RegisterEffect(e4,tp)
end
function cm.repfilter(c,tp)
return c:IsControler(tp) and (c:IsLocation(LOCATION_GCIRCLE) or vgf.RMonsterFilter(c)) and c:GetDestination()==LOCATION_DROP and c:IsType(TYPE_MONSTER) and c:IsFaceup() and not cm.filter(c)
return c:IsControler(tp) and (c:IsLocation(LOCATION_G_CIRCLE) or vgf.RMonsterFilter(c)) and c:GetDestination()==LOCATION_DROP and c:IsType(TYPE_MONSTER) and c:IsFaceup() and not cm.filter(c)
end
function cm.reptg(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return eg:IsExists(cm.repfilter,1,nil,tp) end
......
......@@ -767,7 +767,7 @@ function VgD.MonsterBattle(c)
end
return atk
elseif Duel.GetAttackTarget() == e:GetHandler() then
local g = Duel.GetMatchingGroup(nil, tp, LOCATION_GCIRCLE, 0, nil)
local g = Duel.GetMatchingGroup(nil, tp, LOCATION_G_CIRCLE, 0, nil)
for tc in VgF.Next(g) do
local def = tc:GetDefense()
if def < 0 then def = 0 end
......@@ -792,10 +792,10 @@ function VgD.MonsterBattle(c)
return bc and bc:IsControler(tp) and bc ~= e:GetHandler()
end)
e7:SetTarget(function (e, tp, eg, ep, ev, re, r, rp, chk)
if chk == 0 then return VgF.IsAbleToGcircle(e:GetHandler()) end
if chk == 0 then return VgF.IsAbleToGCircle(e:GetHandler()) end
end)
e7:SetOperation(function (e, tp, eg, ep, ev, re, r, rp)
VgF.Sendto(LOCATION_GCIRCLE, e:GetHandler(), tp, POS_FACEUP, REASON_EFFECT)
VgF.Sendto(LOCATION_G_CIRCLE, e:GetHandler(), tp, POS_FACEUP, REASON_EFFECT)
end)
c:RegisterEffect(e7)
local e8 = Effect.CreateEffect(c)
......@@ -805,7 +805,7 @@ function VgD.MonsterBattle(c)
e8:SetRange(LOCATION_ALL)
e8:SetCondition(VgF.RuleCardCondtion)
e8:SetOperation(function (e, tp, eg, ep, ev, re, r, rp)
local g = Duel.GetFieldGroup(tp, LOCATION_GCIRCLE, 0)
local g = Duel.GetFieldGroup(tp, LOCATION_G_CIRCLE, 0)
if g:GetCount() > 0 then VgF.Sendto(LOCATION_DROP, g, REASON_RULE) end
end)
c:RegisterEffect(e8)
......@@ -1416,7 +1416,7 @@ function VgD.AbilityAuto(c, m, loc, typ, code, op, cost, con, tg, count, propert
e1:SetCode(EVENT_MOVE)
if cost then e1:SetCost(cost) end
e1:SetCondition(function(e, tp, eg, ep, ev, re, r, rp)
return (not con or con(e, tp, eg, ep, ev, re, r, rp)) and e:GetHandler():IsLocation(LOCATION_GCIRCLE) and Duel.GetAttackTarget()
return (not con or con(e, tp, eg, ep, ev, re, r, rp)) and e:GetHandler():IsLocation(LOCATION_G_CIRCLE) and Duel.GetAttackTarget()
end)
e1:SetOperation(op)
c:RegisterEffect(e1)
......@@ -1567,7 +1567,7 @@ end
---@param loc_op number|nil 这个效果影响的对方区域,影响全域范围才需填
---@param reset number|nil 效果的重置条件
---@param hc Card|nil 效果的拥有者, 没有则为 c
---@return Effect|nil 这个效果
---@return Effect|nil, Effect|nil 这个效果
function VgD.AbilityCont(c, m, loc, typ, code, val, con, tg, loc_self, loc_op, reset, hc)
-- check func
local fchk = VgF.IllegalFunctionCheck("AbilityCont", c)
......@@ -1575,6 +1575,11 @@ function VgD.AbilityCont(c, m, loc, typ, code, val, con, tg, loc_self, loc_op, r
-- set param
local cm = _G["c"..(m or c:GetOriginalCode())]
cm.is_has_continuous = cm.is_has_continuous or not reset
if code == EFFECT_UPDATE_CRITICAL then
local e1 = VgD.AbilityCont(c, m, LOCATION_MZONE, typ, EFFECT_UPDATE_LSCALE, val, con, tg, loc_self, loc_op, reset, hc)
local e2 = VgD.AbilityCont(c, m, LOCATION_MZONE, typ, EFFECT_UPDATE_RSCALE, val, con, tg, loc_self, loc_op, reset, hc)
return e1, e2
end
loc, con = VgF.GetLocCondition(loc, con)
hc = hc or c
-- set effect
......@@ -1591,57 +1596,6 @@ function VgD.AbilityCont(c, m, loc, typ, code, val, con, tg, loc_self, loc_op, r
return e
end
---【永】力量数值变更
---@param c Card 效果的创建者
---@param m number|nil 效果的创建者的卡号
---@param loc number 生效的区域
---@param typ number 只影响自己,则填EFFECT_TYPE_SINGLE;<br>影响场上,则填EFFECT_TYPE_FIELD。
---@param val function|number 变更的数值
---@param con function|nil 这个效果的条件函数
---@param tg function|nil 这个效果的影响目标(全域)
---@param loc_self number|nil 这个效果影响的自己区域,影响全域范围才需填
---@param loc_op number|nil 这个效果影响的对方区域,影响全域范围才需填
---@param reset number|nil 效果的重置条件
---@param hc Card|nil 效果的拥有者, 没有则为 c
---@return Effect|nil 这个效果
function VgD.AbilityContChangeAttack(c, m, loc, typ, val, con, tg, loc_self, loc_op, reset, hc)
return VgD.AbilityCont(c, m, loc, typ, EFFECT_UPDATE_ATTACK, val, con, tg, loc_self, loc_op, reset, hc)
end
---【永】盾护数值变更
---@param c Card 效果的创建者
---@param m number|nil 效果的创建者的卡号
---@param typ number 只影响自己,则填EFFECT_TYPE_SINGLE;<br>影响场上,则填EFFECT_TYPE_FIELD。
---@param val function|number 变更的数值
---@param con function|nil 这个效果的条件函数
---@param tg function|nil 这个效果的影响目标(全域)
---@param loc_self number|nil 这个效果影响的自己区域,影响全域范围才需填
---@param loc_op number|nil 这个效果影响的对方区域,影响全域范围才需填
---@param reset number|nil 效果的重置条件
---@param hc Card|nil 效果的拥有者, 没有则为 c
---@return Effect 这个效果
function VgD.AbilityContChangeDefense(c, m, typ, val, con, tg, loc_self, loc_op, reset, hc)
return VgD.AbilityCont(c, m, LOCATION_GCIRCLE, typ, EFFECT_UPDATE_DEFENSE, val, con, tg, loc_self, loc_op, reset, hc)
end
---【永】暴击数值变更
---@param c Card 效果的创建者
---@param m number|nil 效果的创建者的卡号
---@param typ number 只影响自己,则填EFFECT_TYPE_SINGLE;<br>影响场上,则填EFFECT_TYPE_FIELD。
---@param val number 变更的数值
---@param con function|nil 这个效果的条件函数
---@param tg function|nil 这个效果的影响目标(全域)
---@param loc_self number|nil 这个效果影响的自己区域,影响全域范围才需填
---@param loc_op number|nil 这个效果影响的对方区域,影响全域范围才需填
---@param reset number|nil 效果的重置条件
---@param hc Card|nil 效果的拥有者, 没有则为 c
---@return Effect 两个效果
function VgD.AbilityContChangeStar(c, m, typ, val, con, tg, loc_self, loc_op, reset, hc)
local e1 = VgD.AbilityCont(c, m, LOCATION_MZONE, typ, EFFECT_UPDATE_LSCALE, val, con, tg, loc_self, loc_op, reset, hc)
local e2 = VgD.AbilityCont(c, m, LOCATION_MZONE, typ, EFFECT_UPDATE_RSCALE, val, con, tg, loc_self, loc_op, reset, hc)
return e1, e2
end
---【永】驱动数值变更
---@param c Card 效果的创建者
---@param m number|nil 效果的创建者的卡号
......@@ -1769,7 +1723,7 @@ end
---@param reset number|nil 效果的重置条件
---@param hc Card|nil 效果的拥有者, 没有则为 c
---@return Effect|nil 这个效果
function VgD.CannotCallToGcircleWhenAttack(c, m, val, condition, reset, hc)
function VgD.CannotCallToGCircleWhenAttack(c, m, val, condition, reset, hc)
-- set param
local cm = _G["c"..(m or c:GetOriginalCode())]
cm.is_has_continuous = cm.is_has_continuous or not reset
......
......@@ -23,17 +23,17 @@ LOCATION_EXILE = 0x400 --除外区
LOCATION_DAMAGE = 0x800 --伤害区
LOCATION_ORDER = 0x1000 --指令区
LOCATION_SPARE = 0x2000 --备用格子(用于怪物箱等)
LOCATION_GCIRCLE = 0x4000 --G区域
LOCATION_G_CIRCLE = 0x4000 --G区域
LOCATION_EMBLEM = 0x8000 --纹章区
LOCATION_RIDE =LOCATION_EXTRA
LOCATION_DROP =LOCATION_GRAVE
LOCATION_LOCK =LOCATION_REMOVED
LOCATION_ALL = 0xffff
LOCATION_RZONE = 0x10000
LOCATION_VZONE = 0x20000
LOCATION_R_CIRCLE = 0x10000 -- 后防者圆阵
LOCATION_V_CIRCLE = 0x20000 -- 先导者圆阵
LOCATION_LIST={0x1, 0x2, 0x4, 0x10, 0x20, 0x40, 0x80, 0x400, 0x800, 0x1000, 0x2000, 0x4000, 0x8000}
--LOCATION_LIST={LOCATION_HAND, LOCATION_MZONE, LOCATION_DROP, LOCATION_LOCK, LOCATION_RIDE, LOCATION_OVERLAY, LOCATION_EXILE, LOCATION_DAMAGE, LOCATION_ORDER, LOCATION_SPARE, LOCATION_GCIRCLE, LOCATION_EMBLEM}
LOCATION_LIST_STRING={"LOCATION_DECK", "LOCATION_HAND", "LOCATION_MZONE", "LOCATION_DROP", "LOCATION_LOCK", "LOCATION_RIDE", "LOCATION_OVERLAY", "LOCATION_EXILE", "LOCATION_DAMAGE", "LOCATION_ORDER", "LOCATION_SPARE", "LOCATION_GCIRCLE", "LOCATION_EMBLEM"}
--LOCATION_LIST={LOCATION_HAND, LOCATION_MZONE, LOCATION_DROP, LOCATION_LOCK, LOCATION_RIDE, LOCATION_OVERLAY, LOCATION_EXILE, LOCATION_DAMAGE, LOCATION_ORDER, LOCATION_SPARE, LOCATION_G_CIRCLE, LOCATION_EMBLEM}
LOCATION_LIST_STRING={"LOCATION_DECK", "LOCATION_HAND", "LOCATION_MZONE", "LOCATION_DROP", "LOCATION_LOCK", "LOCATION_RIDE", "LOCATION_OVERLAY", "LOCATION_EXILE", "LOCATION_DAMAGE", "LOCATION_ORDER", "LOCATION_SPARE", "LOCATION_G_CIRCLE", "LOCATION_EMBLEM"}
--Locations (for redirect) 若在重定向类效果中仅指定LOCATION_DECK则为弹回卡组顶部
LOCATION_DECKBOT = 0x10001 --弹回卡组底部
LOCATION_DECKSHF = 0x20001 --弹回卡组并洗牌
......@@ -415,6 +415,7 @@ EFFECT_MSET_COST = 94 --怪兽放置代价
EFFECT_SSET_COST = 95 --魔陷放置代价
EFFECT_ATTACK_COST = 96 --攻击代价(霞之谷猎鹰)
EFFECT_CANMOVE_PARALLEL = 97 --横向移动
EFFECT_UPDATE_CRITICAL = 98 --增减暴击值
EFFECT_UPDATE_ATTACK = 100 --增减攻击力
EFFECT_SET_ATTACK = 101 --设置自身攻击力、攻击力变成X特殊召唤、持续改变攻击力
......@@ -747,7 +748,7 @@ HINTMSG_FACEDOWN = 515 --请选择里侧表示的卡
HINTMSG_ATTACK = 516 --请选择攻击表示的怪兽
HINTMSG_DEFENSE = 517 --请选择守备表示的怪兽
HINTMSG_EQUIP = 518 --请选择要装备的卡
HINTMSG_TO_GCIRCLE = 519 --请选择要CALL到防卫者圆阵的卡
HINTMSG_TO_G_CIRCLE = 519 --请选择要CALL到防卫者圆阵的卡
HINTMSG_VMONSTER = 522 --请选择先导者
HINTMSG_RMONSTER = 523 --请选择后防者
HINTMSG_MONSTER = 524 --请选择单位
......@@ -879,7 +880,7 @@ AFFECT_CODE_BOTH_WING = VgID + 2 --你的卡片的白翼能力和黑翼能力
AFFECT_CODE_NIGHT = VgID + 3 --黑夜
AFFECT_CODE_DEEP_NIGHT = VgID + 4 --深渊黑夜
AFFECT_CODE_OVERLAY_COST_FREE_WHEN_ALCHEMAGIC = VgID + 5 --魔合成可以不支付灵魂爆发
AFFECT_CODE_DEFENDER_CANNOT_TO_GCIRCLE = VgID + 6 --不能将守护者从手牌CALL到G上
AFFECT_CODE_DEFENDER_CANNOT_TO_G_CIRCLE = VgID + 6 --不能将守护者从手牌CALL到G上
AFFECT_CODE_OVERLAY_INSTEAD_WHEN_RIDE =10501082 --不执行『选择手牌中的1张卡,舍弃』而是执行『灵魂爆发1』来将卡RIDE
......
......@@ -558,9 +558,9 @@ end
---判断c是否可以以规则的手段到G区域。
---@param c Card 要判断的卡
---@return boolean 指示c能否去到G区域。
function VgF.IsAbleToGcircle(c)
function VgF.IsAbleToGCircle(c)
if c:IsLocation(LOCATION_HAND) then
if Duel.IsPlayerAffectedByEffect(c:GetControler(), AFFECT_CODE_DEFENDER_CANNOT_TO_GCIRCLE) and c:GetBaseDefense() == 0 then return false end
if Duel.IsPlayerAffectedByEffect(c:GetControler(), AFFECT_CODE_DEFENDER_CANNOT_TO_G_CIRCLE) and c:GetBaseDefense() == 0 then return false end
return c:IsType(TYPE_MONSTER)
elseif c:IsLocation(LOCATION_MZONE) then
return c:IsAttribute(SKILL_BLOCK) and VgF.IsSequence(c, 0, 4) and c:IsLocation(LOCATION_MZONE) and c:IsFaceup()
......@@ -820,7 +820,7 @@ function VgF.CardsFromTo(reason ,loc_to, loc_from, f, int_max, int_min, ...)
local ext_params = {...}
return function (e, tp, eg, ep, ev, re, r, rp)
if not loc_to or not loc_from then return 0 end
if loc_from == LOCATION_RZONE then loc_from = LOCATION_MZONE end
if loc_from == LOCATION_R_CIRCLE then loc_from = LOCATION_MZONE end
if VgF.GetValueType(int_max) ~= "number" then int_max = 1 end
if VgF.GetValueType(int_min) ~= "number" then int_min = int_max end
if loc_to == LOCATION_HAND then
......@@ -830,7 +830,7 @@ function VgF.CardsFromTo(reason ,loc_to, loc_from, f, int_max, int_min, ...)
if g:GetCount() > 0 then
return VgF.Sendto(loc_to, g, nil, reason)
end
elseif loc_to == LOCATION_VZONE then
elseif loc_to == LOCATION_V_CIRCLE then
local g = VgF.SelectMatchingCard(HINTMSG_CALL, e, tp, function (c)
if not VgF.IsCanBeCalled(c, e, tp) then return false end
return VgF.GetValueType(f) ~= "function" or f(c, table.unpack(ext_params))
......@@ -1132,37 +1132,37 @@ function VgF.SelectMatchingCard(hintmsg, e, select_tp, f, tp, loc_self, loc_op,
local g = Group.CreateGroup()
local loc_self_f = VgF.True
local loc_op_f = VgF.True
if bit.band(loc_self, LOCATION_VZONE) > 0 and bit.band(loc_self, LOCATION_RZONE) > 0 then
loc_self = loc_self - LOCATION_VZONE - LOCATION_RZONE
if bit.band(loc_self, LOCATION_V_CIRCLE) > 0 and bit.band(loc_self, LOCATION_R_CIRCLE) > 0 then
loc_self = loc_self - LOCATION_V_CIRCLE - LOCATION_R_CIRCLE
if bit.band(loc_self, LOCATION_MZONE) == 0 then
loc_self = loc_self + LOCATION_MZONE
end
elseif bit.band(loc_self, LOCATION_VZONE) > 0 then
loc_self = loc_self - LOCATION_VZONE
elseif bit.band(loc_self, LOCATION_V_CIRCLE) > 0 then
loc_self = loc_self - LOCATION_V_CIRCLE
loc_self_f = VgF.VMonsterFilter
if bit.band(loc_self, LOCATION_MZONE) == 0 then
loc_self = loc_self + LOCATION_MZONE
end
elseif bit.band(loc_self, LOCATION_RZONE) > 0 then
loc_self = loc_self - LOCATION_RZONE
elseif bit.band(loc_self, LOCATION_R_CIRCLE) > 0 then
loc_self = loc_self - LOCATION_R_CIRCLE
loc_self_f = VgF.RMonsterFilter
if bit.band(loc_self, LOCATION_MZONE) == 0 then
loc_self = loc_self + LOCATION_MZONE
end
end
if bit.band(loc_op, LOCATION_VZONE) > 0 and bit.band(loc_op, LOCATION_RZONE) > 0 then
loc_op = loc_op - LOCATION_VZONE - LOCATION_RZONE
if bit.band(loc_op, LOCATION_V_CIRCLE) > 0 and bit.band(loc_op, LOCATION_R_CIRCLE) > 0 then
loc_op = loc_op - LOCATION_V_CIRCLE - LOCATION_R_CIRCLE
if bit.band(loc_op, LOCATION_MZONE) == 0 then
loc_op = loc_op + LOCATION_MZONE
end
elseif bit.band(loc_op, LOCATION_VZONE) > 0 then
loc_op = loc_op - LOCATION_VZONE
elseif bit.band(loc_op, LOCATION_V_CIRCLE) > 0 then
loc_op = loc_op - LOCATION_V_CIRCLE
loc_op_f = VgF.VMonsterFilter
if bit.band(loc_op, LOCATION_MZONE) == 0 then
loc_op = loc_op + LOCATION_MZONE
end
elseif bit.band(loc_op, LOCATION_RZONE) > 0 then
loc_op = loc_op - LOCATION_RZONE
elseif bit.band(loc_op, LOCATION_R_CIRCLE) > 0 then
loc_op = loc_op - LOCATION_R_CIRCLE
loc_op_f = VgF.RMonsterFilter
if bit.band(loc_op, LOCATION_MZONE) == 0 then
loc_op = loc_op + LOCATION_MZONE
......@@ -1220,37 +1220,37 @@ end
function VgF.GetMatchingGroup(f, tp, loc_self, loc_op, except_g, ...)
local loc_self_f = VgF.True
local loc_op_f = VgF.True
if bit.band(loc_self, LOCATION_VZONE) > 0 and bit.band(loc_self, LOCATION_RZONE) > 0 then
loc_self = loc_self - LOCATION_VZONE - LOCATION_RZONE
if bit.band(loc_self, LOCATION_V_CIRCLE) > 0 and bit.band(loc_self, LOCATION_R_CIRCLE) > 0 then
loc_self = loc_self - LOCATION_V_CIRCLE - LOCATION_R_CIRCLE
if bit.band(loc_self, LOCATION_MZONE) == 0 then
loc_self = loc_self + LOCATION_MZONE
end
elseif bit.band(loc_self, LOCATION_VZONE) > 0 then
loc_self = loc_self - LOCATION_VZONE
elseif bit.band(loc_self, LOCATION_V_CIRCLE) > 0 then
loc_self = loc_self - LOCATION_V_CIRCLE
loc_self_f = VgF.VMonsterFilter
if bit.band(loc_self, LOCATION_MZONE) == 0 then
loc_self = loc_self + LOCATION_MZONE
end
elseif bit.band(loc_self, LOCATION_RZONE) > 0 then
loc_self = loc_self - LOCATION_RZONE
elseif bit.band(loc_self, LOCATION_R_CIRCLE) > 0 then
loc_self = loc_self - LOCATION_R_CIRCLE
loc_self_f = VgF.RMonsterFilter
if bit.band(loc_self, LOCATION_MZONE) == 0 then
loc_self = loc_self + LOCATION_MZONE
end
end
if bit.band(loc_op, LOCATION_VZONE) > 0 and bit.band(loc_op, LOCATION_RZONE) > 0 then
loc_op = loc_op - LOCATION_VZONE - LOCATION_RZONE
if bit.band(loc_op, LOCATION_V_CIRCLE) > 0 and bit.band(loc_op, LOCATION_R_CIRCLE) > 0 then
loc_op = loc_op - LOCATION_V_CIRCLE - LOCATION_R_CIRCLE
if bit.band(loc_op, LOCATION_MZONE) == 0 then
loc_op = loc_op + LOCATION_MZONE
end
elseif bit.band(loc_op, LOCATION_VZONE) > 0 then
loc_op = loc_op - LOCATION_VZONE
elseif bit.band(loc_op, LOCATION_V_CIRCLE) > 0 then
loc_op = loc_op - LOCATION_V_CIRCLE
loc_op_f = VgF.VMonsterFilter
if bit.band(loc_op, LOCATION_MZONE) == 0 then
loc_op = loc_op + LOCATION_MZONE
end
elseif bit.band(loc_op, LOCATION_RZONE) > 0 then
loc_op = loc_op - LOCATION_RZONE
elseif bit.band(loc_op, LOCATION_R_CIRCLE) > 0 then
loc_op = loc_op - LOCATION_R_CIRCLE
loc_op_f = VgF.RMonsterFilter
if bit.band(loc_op, LOCATION_MZONE) == 0 then
loc_op = loc_op + LOCATION_MZONE
......@@ -1515,9 +1515,9 @@ end
---检查并转换 loc 以及 con 用于【起】等模板函数
function VgF.GetLocCondition(loc, con)
local con_exf = VgF.True
if loc == LOCATION_RZONE then
if loc == LOCATION_R_CIRCLE then
loc, con_exf = LOCATION_MZONE, VgF.RMonsterCondition
elseif loc == LOCATION_VZONE then
elseif loc == LOCATION_V_CIRCLE then
loc, con_exf = LOCATION_MZONE, VgF.VMonsterCondition
end
loc = loc or LOCATION_MZONE
......
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