Commit 79b49deb authored by xiaoye's avatar xiaoye

fix

parent ca32cbf1
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
local cm,m,o=GetID() local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
vgd.XOD(c,10101009) vgd.OverDress(c,10101009)
vgd.EffectTypeTrigger(c,m,LOCATION_MZONE,EFFECT_TYPE_SINGLE,EVENT_ATTACK_ANNOUNCE,cm.operation,nil,cm.condition) vgd.EffectTypeTrigger(c,m,LOCATION_MZONE,EFFECT_TYPE_SINGLE,EVENT_ATTACK_ANNOUNCE,cm.operation,nil,cm.condition)
end end
function cm.operation(e,tp,eg,ep,ev,re,r,rp) function cm.operation(e,tp,eg,ep,ev,re,r,rp)
......
local cm,m,o=GetID() local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
vgd.XOD(c,cm.filter) vgd.OverDress(c,cm.filter)
vgd.EffectTypeContinuousChangeAttack(c,m,LOCATION_MZONE,EFFECT_TYPE_SINGLE,cm.val,cm.con) vgd.EffectTypeContinuousChangeAttack(c,m,LOCATION_MZONE,EFFECT_TYPE_SINGLE,cm.val,cm.con)
vgd.EffectTypeTriggerWhenHitting(c,m,LOCATION_MZONE,EFFECT_TYPE_SINGLE,cm.op,cm.cost,cm.con) vgd.EffectTypeTriggerWhenHitting(c,m,LOCATION_MZONE,EFFECT_TYPE_SINGLE,cm.op,cm.cost,cm.con)
end end
......
local cm,m,o=GetID() local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
vgd.XOD(c,10101009) vgd.OverDress(c,10101009)
vgd.EffectTypeTrigger(c,m,nil,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.op,vgf.DamageCost(1),cm.con) vgd.EffectTypeTrigger(c,m,nil,EFFECT_TYPE_SINGLE,EVENT_SPSUMMON_SUCCESS,cm.op,vgf.DamageCost(1),cm.con)
end end
function cm.con(e,tp,eg,ep,ev,re,r,rp) function cm.con(e,tp,eg,ep,ev,re,r,rp)
......
local cm,m,o=GetID() local cm,m,o=GetID()
function cm.initial_effect(c) function cm.initial_effect(c)
vgd.VgCard(c) vgd.VgCard(c)
vgd.XOD(c,10101009) vgd.OverDress(c,10101009)
vgd.EffectTypeTrigger(c,m,LOCATION_HAND,EFFECT_TYPE_FIELD,EVENT_BATTLED,cm.op,vgf.OverlayCost(2),cm.con) vgd.EffectTypeTrigger(c,m,LOCATION_HAND,EFFECT_TYPE_FIELD,EVENT_BATTLED,cm.op,vgf.OverlayCost(2),cm.con)
vgd.EffectTypeContinuousChangeAttack(c,m,LOCATION_MZONE,EFFECT_TYPE_SINGLE,10000,cm.con2) vgd.EffectTypeContinuousChangeAttack(c,m,LOCATION_MZONE,EFFECT_TYPE_SINGLE,10000,cm.con2)
vgd.EffectTypeContinuousChangeDefense(c,m,EFFECT_TYPE_SINGLE,10000,cm.con2) vgd.EffectTypeContinuousChangeDefense(c,m,EFFECT_TYPE_SINGLE,10000,cm.con2)
...@@ -14,7 +14,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp) ...@@ -14,7 +14,7 @@ function cm.op(e,tp,eg,ep,ev,re,r,rp)
g=g:Select(tp,1,1,nil) g=g:Select(tp,1,1,nil)
end end
if g:GetCount()>0 then if g:GetCount()>0 then
vgf.Sendto(LOCATION_MZONE,c,SUMMON_VALUE_OverDress,tp,vgf.SequenceToGlobal(tp,g:GetFirst():GetLocation(),g:GetFirst():GetSequence())) vgf.Sendto(LOCATION_MZONE,c,SUMMON_VALUE_OVERDRESS,tp,vgf.SequenceToGlobal(tp,g:GetFirst():GetLocation(),g:GetFirst():GetSequence()))
end end
end end
vgf.OverlayFill(1)(e,tp,eg,ep,ev,re,r,rp) vgf.OverlayFill(1)(e,tp,eg,ep,ev,re,r,rp)
......
...@@ -852,7 +852,7 @@ end ...@@ -852,7 +852,7 @@ end
---@param c Card 要注册超限舞装功能的卡 ---@param c Card 要注册超限舞装功能的卡
---@param filter number 卡名为 filter 的后防者,或符合 filter 的后防者等 ---@param filter number 卡名为 filter 的后防者,或符合 filter 的后防者等
---@return Effect 这个效果 ---@return Effect 这个效果
function VgD.XOD(c, filter) function VgD.OverDress(c, filter)
local e1 = Effect.CreateEffect(c) local e1 = Effect.CreateEffect(c)
e1:SetDescription(VgF.Stringid(VgID, 9)) e1:SetDescription(VgF.Stringid(VgID, 9))
e1:SetType(EFFECT_TYPE_FIELD) e1:SetType(EFFECT_TYPE_FIELD)
...@@ -860,33 +860,33 @@ function VgD.XOD(c, filter) ...@@ -860,33 +860,33 @@ function VgD.XOD(c, filter)
e1:SetRange(LOCATION_HAND) e1:SetRange(LOCATION_HAND)
e1:SetProperty(EFFECT_FLAG_SPSUM_PARAM) e1:SetProperty(EFFECT_FLAG_SPSUM_PARAM)
e1:SetTargetRange(POS_FACEUP_ATTACK, 0) e1:SetTargetRange(POS_FACEUP_ATTACK, 0)
e1:SetCondition(VgD.XODCondition(filter)) e1:SetCondition(VgD.OverDressCondition(filter))
e1:SetOperation(VgD.XODOperation(filter)) e1:SetOperation(VgD.OverDressOperation(filter))
c:RegisterEffect(e1) c:RegisterEffect(e1)
local e2 = Effect.CreateEffect(c) local e2 = Effect.CreateEffect(c)
e2:SetType(EFFECT_TYPE_SINGLE + EFFECT_TYPE_CONTINUOUS) e2:SetType(EFFECT_TYPE_SINGLE + EFFECT_TYPE_CONTINUOUS)
e2:SetCode(EVENT_SPSUMMON_SUCCESS) e2:SetCode(EVENT_SPSUMMON_SUCCESS)
e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE) e2:SetProperty(EFFECT_FLAG_CANNOT_DISABLE)
e2:SetOperation(VgD.XODSum) e2:SetOperation(VgD.OverDressSum)
c:RegisterEffect(e2) c:RegisterEffect(e2)
return e1 return e1
end end
function VgD.XODCondition(filter) function VgD.OverDressCondition(filter)
return function (e, c) return function (e, c)
if c == nil then return true end if c == nil then return true end
local tp = e:GetHandlerPlayer() local tp = e:GetHandlerPlayer()
return VgF.LvCondition(e) and VgF.IsExistingMatchingCard(VgD.XODFilter, tp, LOCATION_MZONE, 0, 1, nil, filter) return VgF.LvCondition(e) and VgF.IsExistingMatchingCard(VgD.OverDressFilter, tp, LOCATION_MZONE, 0, 1, nil, filter)
end end
end end
function VgD.XODFilter(c, filter, tp, zone) function VgD.OverDressFilter(c, filter, tp, zone)
if not c:IsFaceup() then return false end if not c:IsFaceup() then return false end
if zone and zone ~= VgF.SequenceToGlobal(tp, c:GetLocation(), c:GetSequence()) then return false end if zone and zone ~= VgF.SequenceToGlobal(tp, c:GetLocation(), c:GetSequence()) then return false end
return not filter or (type(filter) == "function" and filter(c)) or (type(filter) == "number" and c:IsCode(filter)) return not filter or (type(filter) == "function" and filter(c)) or (type(filter) == "number" and c:IsCode(filter))
end end
function VgD.XODOperation(filter) function VgD.OverDressOperation(filter)
return function(e, tp, eg, ep, ev, re, r, rp) return function(e, tp, eg, ep, ev, re, r, rp)
local c = e:GetHandler() local c = e:GetHandler()
local g = Duel.GetMatchingGroup(VgD.XODFilter, tp, LOCATION_MZONE, 0, nil, filter, tp) local g = Duel.GetMatchingGroup(VgD.OverDressFilter, tp, LOCATION_MZONE, 0, nil, filter, tp)
local zone, szone = 0, 0 local zone, szone = 0, 0
for tc in VgF.Next(g) do for tc in VgF.Next(g) do
zone = bit.bor(zone, VgF.SequenceToGlobal(tp, tc:GetLocation(), tc:GetSequence())) zone = bit.bor(zone, VgF.SequenceToGlobal(tp, tc:GetLocation(), tc:GetSequence()))
...@@ -895,18 +895,18 @@ function VgD.XODOperation(filter) ...@@ -895,18 +895,18 @@ function VgD.XODOperation(filter)
zone = bit.bnot(zone) zone = bit.bnot(zone)
Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_CallZONE) Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_CallZONE)
szone = Duel.SelectField(tp, 1, LOCATION_MZONE, 0, zone) szone = Duel.SelectField(tp, 1, LOCATION_MZONE, 0, zone)
e:SetValue(function () return SUMMON_VALUE_CALL + SUMMON_VALUE_OverDress, szone end) e:SetValue(function () return SUMMON_VALUE_CALL + SUMMON_VALUE_OVERDRESS, szone end)
local mg = Duel.GetMatchingGroup(VgD.XODFilter, tp, LOCATION_MZONE, 0, nil, filter, tp, szone) local mg = Duel.GetMatchingGroup(VgD.OverDressFilter, tp, LOCATION_MZONE, 0, nil, filter, tp, szone)
if #mg == 0 then return end if #mg == 0 then return end
local og = tc:GetOverlayGroup() local og = mg:GetFirst():GetOverlayGroup()
if #og ~= 0 then if #og ~= 0 then
VgF.Sendto(LOCATION_OVERLAY, og, c) VgF.Sendto(LOCATION_OVERLAY, og, c)
end end
c:SetMaterial(Group.FromCards(tc)) c:SetMaterial(mg)
VgF.Sendto(LOCATION_OVERLAY, mg, c) VgF.Sendto(LOCATION_OVERLAY, mg, c)
end end
end end
function VgD.XODSum(e, tp, eg, ep, ev, re, r, rp) function VgD.OverDressSum(e, tp, eg, ep, ev, re, r, rp)
e:GetHandler():RegisterFlagEffect(FLAG_CONDITION, RESET_EVENT + RESETS_STANDARD, EFFECT_FLAG_CLIENT_HINT, 1, 201, VgF.Stringid(10101006, 0)) e:GetHandler():RegisterFlagEffect(FLAG_CONDITION, RESET_EVENT + RESETS_STANDARD, EFFECT_FLAG_CLIENT_HINT, 1, 201, VgF.Stringid(10101006, 0))
end end
...@@ -940,7 +940,7 @@ end ...@@ -940,7 +940,7 @@ end
---@param op function|nil 作为指令卡的效果 ---@param op function|nil 作为指令卡的效果
---@param cost function|nil 作为指令卡的发动费用 ---@param cost function|nil 作为指令卡的发动费用
---@param con function|nil 作为指令卡的发动条件 ---@param con function|nil 作为指令卡的发动条件
---@return Effect 这个效果 ---@return Effect|nil 这个效果
function VgD.SpellActivate(c, m, op, cost, con) function VgD.SpellActivate(c, m, op, cost, con)
-- check func -- check func
local fchk = VgF.IllegalFunctionCheck("SpellActivate", c) local fchk = VgF.IllegalFunctionCheck("SpellActivate", c)
...@@ -1283,7 +1283,7 @@ end ...@@ -1283,7 +1283,7 @@ end
---@param cost function|nil 作为指令卡的发动费用 ---@param cost function|nil 作为指令卡的发动费用
---@param con function|nil 作为指令卡的发动条件 ---@param con function|nil 作为指令卡的发动条件
---@param tg function|nil 作为指令卡的发动检查 ---@param tg function|nil 作为指令卡的发动检查
---@return Effect 这个效果 ---@return Effect|nil 这个效果
function VgD.QuickSpell(c, op, cost, con, tg) function VgD.QuickSpell(c, op, cost, con, tg)
-- check func -- check func
local fchk = VgF.IllegalFunctionCheck("QuickSpell", c) local fchk = VgF.IllegalFunctionCheck("QuickSpell", c)
...@@ -1310,7 +1310,7 @@ end ...@@ -1310,7 +1310,7 @@ end
---@param cost function|nil 作为指令卡的发动费用 ---@param cost function|nil 作为指令卡的发动费用
---@param con function|nil 作为指令卡的发动条件 ---@param con function|nil 作为指令卡的发动条件
---@param tg function|nil 作为指令卡的发动检查 ---@param tg function|nil 作为指令卡的发动检查
---@return Effect 这个效果 ---@return Effect|nil 这个效果
function VgD.ContinuousSpell(c, cost, con, tg) function VgD.ContinuousSpell(c, cost, con, tg)
-- check func -- check func
local fchk = VgF.IllegalFunctionCheck("ContinuousSpell", c) local fchk = VgF.IllegalFunctionCheck("ContinuousSpell", c)
...@@ -1347,7 +1347,7 @@ end ...@@ -1347,7 +1347,7 @@ end
---@param count number|nil 同一回合内最多发动的次数 ---@param count number|nil 同一回合内最多发动的次数
---@param property number|nil 这个效果的特殊属性。 ---@param property number|nil 这个效果的特殊属性。
---@param id number|nil 提示脚本的卡号索引 ---@param id number|nil 提示脚本的卡号索引
---@return Effect 这个效果 ---@return Effect|nil 这个效果
function VgD.EffectTypeTrigger(c, m, loc, typ, code, op, cost, con, tg, count, property, id) function VgD.EffectTypeTrigger(c, m, loc, typ, code, op, cost, con, tg, count, property, id)
-- check func -- check func
local fchk = VgF.IllegalFunctionCheck("EffectTypeTrigger", c) local fchk = VgF.IllegalFunctionCheck("EffectTypeTrigger", c)
...@@ -1386,7 +1386,7 @@ end ...@@ -1386,7 +1386,7 @@ end
---@param p number|nil 被击中的卡的控制者 ---@param p number|nil 被击中的卡的控制者
---@param property number|nil 这个效果的特殊属性。 ---@param property number|nil 这个效果的特殊属性。
---@param id number|nil 提示脚本的卡号索引 ---@param id number|nil 提示脚本的卡号索引
---@return Effect 这个效果 *回传两个效果* ---@return Effect|nil 这个效果 *回传两个效果*
function VgD.EffectTypeTriggerWhenHitting(c, m, loc, typ, op, cost, con, tg, count, p, property, id) function VgD.EffectTypeTriggerWhenHitting(c, m, loc, typ, op, cost, con, tg, count, p, property, id)
-- check func -- check func
local fchk = VgF.IllegalFunctionCheck("EffectTypeTriggerWhenHitting", c) local fchk = VgF.IllegalFunctionCheck("EffectTypeTriggerWhenHitting", c)
...@@ -1412,7 +1412,7 @@ end ...@@ -1412,7 +1412,7 @@ end
---@param op function|nil 这个效果的处理函数 ---@param op function|nil 这个效果的处理函数
---@param cost function|nil 这个效果的费用函数 ---@param cost function|nil 这个效果的费用函数
---@param con function|nil 这个效果的条件函数 ---@param con function|nil 这个效果的条件函数
---@return Effect 这个效果 ---@return Effect|nil 这个效果
function VgD.CardToG(c, m, op, cost, con) function VgD.CardToG(c, m, op, cost, con)
-- check func -- check func
local fchk = VgF.IllegalFunctionCheck("CardToG", c) local fchk = VgF.IllegalFunctionCheck("CardToG", c)
......
...@@ -159,7 +159,7 @@ SUMMON_TYPE_LINK = 0x4c000000 --连接召唤 ...@@ -159,7 +159,7 @@ SUMMON_TYPE_LINK = 0x4c000000 --连接召唤
--Summon Value --特定的召唤方式 --Summon Value --特定的召唤方式
SUMMON_VALUE_CALL = 0x1 --通常CALL出场 SUMMON_VALUE_CALL = 0x1 --通常CALL出场
SUMMON_VALUE_REVOLT = 0x2 --反抗舞装 SUMMON_VALUE_REVOLT = 0x2 --反抗舞装
SUMMON_VALUE_OverDress = 0x4 --超限舞装 SUMMON_VALUE_OVERDRESS = 0x4 --超限舞装
SUMMON_VALUE_DARK_SANCTUARY = 0x12 --暗黑圣域 SUMMON_VALUE_DARK_SANCTUARY = 0x12 --暗黑圣域
SUMMON_VALUE_MONSTER_REBORN = 0x13 --死者苏生(千年的启示) SUMMON_VALUE_MONSTER_REBORN = 0x13 --死者苏生(千年的启示)
SUMMON_VALUE_MASK_CHANGE = 0x14 -- SUMMON_VALUE_MASK_CHANGE = 0x14 --
......
...@@ -328,7 +328,7 @@ function VgF.Call(g, sumtype, tp, zone, pos) ...@@ -328,7 +328,7 @@ function VgF.Call(g, sumtype, tp, zone, pos)
end end
elseif VgF.IsExistingMatchingCard(VgD.CallFilter, tp, LOCATION_MZONE, 0, 1, nil, tp, szone) then elseif VgF.IsExistingMatchingCard(VgD.CallFilter, tp, LOCATION_MZONE, 0, 1, nil, tp, szone) then
local tc = Duel.GetMatchingGroup(VgD.CallFilter, tp, LOCATION_MZONE, 0, nil, tp, szone):GetFirst() local tc = Duel.GetMatchingGroup(VgD.CallFilter, tp, LOCATION_MZONE, 0, nil, tp, szone):GetFirst()
if bit.band(sumtype, SUMMON_VALUE_OverDress) > 0 then VgF.Sendto(LOCATION_OVERLAY, Group.FromCards(tc), sc) if bit.band(sumtype, SUMMON_VALUE_OVERDRESS) > 0 then VgF.Sendto(LOCATION_OVERLAY, Group.FromCards(tc), sc)
else VgF.Sendto(LOCATION_DROP, tc, REASON_COST) else VgF.Sendto(LOCATION_DROP, tc, REASON_COST)
end end
end end
...@@ -531,7 +531,7 @@ function VgF.DamageFill(val) ...@@ -531,7 +531,7 @@ function VgF.DamageFill(val)
return function (e, tp, eg, ep, ev, re, r, rp) return function (e, tp, eg, ep, ev, re, r, rp)
local c = e:GetHandler() local c = e:GetHandler()
Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_POSCHANGE) Duel.Hint(HINT_SELECTMSG, tp, HINTMSG_POSCHANGE)
local g = Duel.SelectMatchingCard(tp, Card.IsFaceup, tp, LOCATION_DAMAGE, 0, val, val, nil) local g = Duel.SelectMatchingCard(tp, Card.IsFacedown, tp, LOCATION_DAMAGE, 0, val, val, nil)
Duel.ChangePosition(g, POS_FACEUP_ATTACK) Duel.ChangePosition(g, POS_FACEUP_ATTACK)
return Duel.GetOperatedGroup():GetCount() return Duel.GetOperatedGroup():GetCount()
end 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