Commit 3a347bdd authored by 未闻皂名's avatar 未闻皂名

2023/10/24 事务局调整

parent 23379d7e
Pipeline #23835 passed with stages
in 7 minutes and 19 seconds
...@@ -18,6 +18,8 @@ EFFECT_CANNOT_DOUBLE_TRIBUTE = 120120029 -- 魔将 雅灭鲁拉 (不能使用: ...@@ -18,6 +18,8 @@ EFFECT_CANNOT_DOUBLE_TRIBUTE = 120120029 -- 魔将 雅灭鲁拉 (不能使用:
EFFECT_PLAYER_CANNOT_ATTACK = 120155054 -- 幻刃封锁 (对方不能攻击时不能发动) EFFECT_PLAYER_CANNOT_ATTACK = 120155054 -- 幻刃封锁 (对方不能攻击时不能发动)
EFFECT_PLAYER_RACE_CANNOT_ATTACK = 120155055 -- 幻刃封锁 (不能选择不能攻击的种族) EFFECT_PLAYER_RACE_CANNOT_ATTACK = 120155055 -- 幻刃封锁 (不能选择不能攻击的种族)
FLAG_NOT_SUMMON_TURN = 120000001 -- 召唤·特殊召唤的回合被盖放, 不再符合召唤·特殊召唤的回合的条件
-- 创建效果: 玩家对象的全局效果 -- 创建效果: 玩家对象的全局效果
function RushDuel.CreatePlayerTargetGlobalEffect(code, value) function RushDuel.CreatePlayerTargetGlobalEffect(code, value)
local e1 = Effect.GlobalEffect() local e1 = Effect.GlobalEffect()
......
...@@ -7,11 +7,11 @@ function RushDuel.IsMaximumMode(card) ...@@ -7,11 +7,11 @@ function RushDuel.IsMaximumMode(card)
end end
-- 条件: 这张卡召唤的回合 -- 条件: 这张卡召唤的回合
function RushDuel.IsSummonTurn(card) function RushDuel.IsSummonTurn(card)
return card:IsReason(REASON_SUMMON) and card:IsStatus(STATUS_SUMMON_TURN) return card:IsReason(REASON_SUMMON) and card:IsStatus(STATUS_SUMMON_TURN) and card:GetFlagEffect(FLAG_NOT_SUMMON_TURN) == 0
end end
-- 条件: 这张卡特殊召唤的回合 -- 条件: 这张卡特殊召唤的回合
function RushDuel.IsSpecialSummonTurn(card) function RushDuel.IsSpecialSummonTurn(card)
return card:IsReason(REASON_SPSUMMON) and card:IsStatus(STATUS_SPSUMMON_TURN) return card:IsReason(REASON_SPSUMMON) and card:IsStatus(STATUS_SPSUMMON_TURN) and card:GetFlagEffect(FLAG_NOT_SUMMON_TURN) == 0
end end
-- 条件: 玩家的LP在 lp 以上 -- 条件: 玩家的LP在 lp 以上
function RushDuel.IsLPAbove(player, lp) function RushDuel.IsLPAbove(player, lp)
......
-- Rush Duel 规则 -- Rush Duel 规则
RushDuel = RushDuel or {} RushDuel = RushDuel or {}
-- 初始化 -- 初始化
function RushDuel.Init() function RushDuel.Init()
RushDuel.InitRule() RushDuel.InitRule()
Duel.BreakEffect = function() Duel.BreakEffect = function()
-- "那之后" 不打断时点 -- "那之后" 不打断时点
end end
-- 决斗开始 -- 决斗开始
RushDuel.CreateFieldGlobalEffect(true, EVENT_PHASE_START + PHASE_DRAW, function(e) RushDuel.CreateFieldGlobalEffect(true, EVENT_PHASE_START + PHASE_DRAW, function(e)
-- 先攻抽卡 -- 先攻抽卡
if not Auxiliary.Load2PickRule then if not Auxiliary.Load2PickRule then
Duel.Draw(0, 1, REASON_RULE) Duel.Draw(0, 1, REASON_RULE)
end end
-- 传说卡 -- 传说卡
RushDuel.InitLegend() RushDuel.InitLegend()
e:Reset() e:Reset()
end) end)
end end
-- 初始化规则 -- 初始化规则
function RushDuel.InitRule() function RushDuel.InitRule()
-- 禁用最左与最右列 -- 禁用最左与最右列
RushDuel.CreateFieldGlobalEffect(false, EFFECT_DISABLE_FIELD, function(e, tp) RushDuel.CreateFieldGlobalEffect(false, EFFECT_DISABLE_FIELD, function(e, tp)
return 0x11711171 return 0x11711171
end) end)
-- 抽卡阶段, 抽卡至5张, 超过5张时改为抽1张 -- 抽卡阶段, 抽卡至5张, 超过5张时改为抽1张
RushDuel.CreatePlayerTargetGlobalEffect(EFFECT_DRAW_COUNT, function(e) RushDuel.CreatePlayerTargetGlobalEffect(EFFECT_DRAW_COUNT, function(e)
return math.max(1, 5 - Duel.GetFieldGroupCount(Duel.GetTurnPlayer(), LOCATION_HAND, 0)) return math.max(1, 5 - Duel.GetFieldGroupCount(Duel.GetTurnPlayer(), LOCATION_HAND, 0))
end) end)
-- 跳过准备阶段 -- 跳过准备阶段
RushDuel.CreatePlayerTargetGlobalEffect(EFFECT_SKIP_SP) RushDuel.CreatePlayerTargetGlobalEffect(EFFECT_SKIP_SP)
-- 召唤次数无限制 -- 召唤次数无限制
RushDuel.CreatePlayerTargetGlobalEffect(EFFECT_SET_SUMMON_COUNT_LIMIT, 100) RushDuel.CreatePlayerTargetGlobalEffect(EFFECT_SET_SUMMON_COUNT_LIMIT, 100)
-- 场上的怪兽的效果强制1回合1次 -- 场上的怪兽的效果强制1回合1次
local function get_effect_owner_code(e) local function get_effect_owner_code(e)
if e:GetType() & EFFECT_TYPE_XMATERIAL == EFFECT_TYPE_XMATERIAL then if e:GetType() & EFFECT_TYPE_XMATERIAL == EFFECT_TYPE_XMATERIAL then
-- 极大怪兽的L/R部分的效果分开计算 -- 极大怪兽的L/R部分的效果分开计算
return e:GetLabel() return e:GetLabel()
else else
return e:GetOwner():GetOriginalCode() return e:GetOwner():GetOriginalCode()
end end
end end
RushDuel.CreatePlayerTargetGlobalEffect(EFFECT_CANNOT_ACTIVATE, function(e, re, tp) RushDuel.CreatePlayerTargetGlobalEffect(EFFECT_CANNOT_ACTIVATE, function(e, re, tp)
return re:GetHandler():GetFlagEffect(get_effect_owner_code(re)) ~= 0 return re:GetHandler():GetFlagEffect(get_effect_owner_code(re)) ~= 0
end) end)
RushDuel.CreateFieldGlobalEffect(true, EVENT_CHAIN_SOLVING, function(e, tp, eg, ep, ev, re, r, rp) RushDuel.CreateFieldGlobalEffect(true, EVENT_CHAIN_SOLVING, function(e, tp, eg, ep, ev, re, r, rp)
local te = Duel.GetChainInfo(ev, CHAININFO_TRIGGERING_EFFECT) local te = Duel.GetChainInfo(ev, CHAININFO_TRIGGERING_EFFECT)
local code = get_effect_owner_code(te) local code = get_effect_owner_code(te)
te:GetHandler():RegisterFlagEffect(code, RESET_EVENT + RESETS_STANDARD + RESET_PHASE + PHASE_END, 0, 1) te:GetHandler():RegisterFlagEffect(code, RESET_EVENT + RESETS_STANDARD + RESET_PHASE + PHASE_END, 0, 1)
end) end)
-- 同一时点只能发动一张陷阱卡 -- 同一时点只能发动一张陷阱卡
local function is_trap(e) local function is_trap(e)
return e:IsHasType(EFFECT_TYPE_ACTIVATE) and e:IsActiveType(TYPE_TRAP) return e:IsHasType(EFFECT_TYPE_ACTIVATE) and e:IsActiveType(TYPE_TRAP)
end end
local function tarp_limit(e, rp, tp) local function tarp_limit(e, rp, tp)
return not is_trap(e) return not is_trap(e)
end end
RushDuel.CreateFieldGlobalEffect(true, EVENT_CHAINING, function(e, tp, eg, ep, ev, re, r, rp) RushDuel.CreateFieldGlobalEffect(true, EVENT_CHAINING, function(e, tp, eg, ep, ev, re, r, rp)
if is_trap(re) then if is_trap(re) then
Duel.SetChainLimit(tarp_limit) Duel.SetChainLimit(tarp_limit)
end end
end) end)
-- 跳过主要阶段2 -- 跳过主要阶段2
RushDuel.CreatePlayerTargetGlobalEffect(EFFECT_SKIP_M2) RushDuel.CreatePlayerTargetGlobalEffect(EFFECT_SKIP_M2)
-- 手卡无限制 -- 手卡无限制
RushDuel.CreatePlayerTargetGlobalEffect(EFFECT_HAND_LIMIT, 100) RushDuel.CreatePlayerTargetGlobalEffect(EFFECT_HAND_LIMIT, 100)
-- 极大怪兽 -- 极大怪兽
RushDuel.InitMaximum() RushDuel.InitMaximum()
end -- 调整: 召唤·特殊召唤的回合被盖放, 不再符合召唤·特殊召唤的回合的条件
local function is_turn_set(c)
return c:IsPreviousPosition(POS_FACEUP) and c:IsFacedown()
end
RushDuel.CreateFieldGlobalEffect(true, EVENT_CHANGE_POS, function(e, tp, eg, ep, ev, re, r, rp)
local g = eg:Filter()
g:ForEach(function(tc)
tc:RegisterFlagEffect(FLAG_NOT_SUMMON_TURN, RESET_EVENT + RESETS_STANDARD - RESET_TURN_SET, 0, 1)
end)
end)
end
...@@ -14,7 +14,7 @@ function cm.initial_effect(c) ...@@ -14,7 +14,7 @@ function cm.initial_effect(c)
end end
--Destroy --Destroy
function cm.costfilter(c) function cm.costfilter(c)
return c:IsFaceup() and c:IsRace(RACE_BEASTWARRIOR) and c:IsAbleToGraveAsCost() return c:IsFaceup() and c:IsRace(RACE_BEASTWARRIOR) and c:GetBaseAttack()>0 and c:IsAbleToGraveAsCost()
end end
function cm.posfilter(c) function cm.posfilter(c)
return RD.IsCanChangePosition(c) return RD.IsCanChangePosition(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