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