Commit 0085b746 authored by 未闻皂名's avatar 未闻皂名

2025/10/27 添加未发动过同名卡的判断

parent bd7f6efb
Pipeline #41294 passed with stages
in 7 minutes and 1 second
......@@ -60,6 +60,10 @@ end
function RushDuel.IsPlayerDrawInThisTurn(player)
return Duel.GetFlagEffect(player, FLAG_HAS_DRAW_IN_TURN) ~= 0
end
-- 条件: 玩家在这个回合没有发动过特定卡名的效果
function RushDuel.IsPlayerNoActivateInThisTurn(player, code)
return not RD.ActivateCodes[player][code]
end
-- 条件: 守备力为 def
function RushDuel.IsDefense(card, def)
return card:IsDefense(def) and not RushDuel.IsMaximumMode(card)
......
......@@ -3,6 +3,8 @@ RushDuel = RushDuel or {}
-- 需要洗切手卡
RushDuel.NeedShuffleHand = {false, false}
-- 已发动过的卡名
RushDuel.ActivateCodes = {{}, {}}
-- 初始化
function RushDuel.Init()
......@@ -63,9 +65,11 @@ function RushDuel.InitRule()
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 te, p = Duel.GetChainInfo(ev, CHAININFO_TRIGGERING_EFFECT, CHAININFO_TRIGGERING_PLAYER)
local tc=te:GetHandler()
local code = get_effect_owner_code(te)
te:GetHandler():RegisterFlagEffect(code, RESET_EVENT + RESETS_STANDARD + RESET_PHASE + PHASE_END, EFFECT_FLAG_CLIENT_HINT, 1, 0, HINTMSG_EFFECT_USED)
tc:RegisterFlagEffect(code, RESET_EVENT + RESETS_STANDARD + RESET_PHASE + PHASE_END, EFFECT_FLAG_CLIENT_HINT, 1, 0, HINTMSG_EFFECT_USED)
RushDuel.ActivateCodes[p][tc:GetCode()] = true
end)
-- 同一时点只能发动一张陷阱卡
local function is_trap(e)
......@@ -83,6 +87,10 @@ function RushDuel.InitRule()
RushDuel.CreatePlayerTargetGlobalEffect(EFFECT_SKIP_M2)
-- 手卡无限制
RushDuel.CreatePlayerTargetGlobalEffect(EFFECT_HAND_LIMIT, 100)
-- 结束阶段重置计数
RushDuel.CreateFieldGlobalEffect(true, EVENT_PHASE + PHASE_END, function(e, tp, eg, ep, ev, re, r, rp)
RushDuel.ActivateCodes = {{}, {}}
end)
-- 极大怪兽
RushDuel.InitMaximum()
end
......
......@@ -8,7 +8,6 @@ function cm.initial_effect(c)
e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_GRAVE_SPSUMMON)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetCountLimit(1,list[1]+EFFECT_COUNT_CODE_OATH)
e1:SetCondition(cm.condition)
e1:SetTarget(cm.target)
e1:SetOperation(cm.activate)
......@@ -19,7 +18,7 @@ function cm.spfilter(c,e,tp)
return c:IsType(TYPE_NORMAL) and c:IsRace(RACE_DRAGON) and RD.IsCanBeSpecialSummoned(c,e,tp,POS_FACEUP)
end
function cm.condition(e,tp,eg,ep,ev,re,r,rp)
return Duel.GetCustomActivityCount(m,tp,ACTIVITY_CHAIN)==0
return RD.IsPlayerNoActivateInThisTurn(tp,list[1])
end
function cm.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetMZoneCount(tp)>0
......
......@@ -8,7 +8,7 @@ function cm.initial_effect(c)
e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetCountLimit(1,120285065+EFFECT_COUNT_CODE_OATH)
e1:SetCondition(cm.condition)
e1:SetTarget(cm.target)
e1:SetOperation(cm.activate)
c:RegisterEffect(e1)
......@@ -31,6 +31,9 @@ function cm.spfilter(c,e,tp,tc,code)
and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false)
and Duel.GetLocationCountFromEx(tp,tp,tc,c)>0
end
function cm.condition(e,tp,eg,ep,ev,re,r,rp)
return RD.IsPlayerNoActivateInThisTurn(tp,list[1])
end
function cm.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(cm.matfilter,tp,LOCATION_MZONE,0,1,nil,e,tp) end
Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA)
......
......@@ -8,7 +8,7 @@ function cm.initial_effect(c)
e1:SetCategory(CATEGORY_TOHAND+CATEGORY_GRAVE_ACTION)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetCountLimit(1,list[1]+EFFECT_COUNT_CODE_OATH)
e1:SetCondition(cm.condition)
e1:SetTarget(cm.target)
e1:SetOperation(cm.activate)
c:RegisterEffect(e1)
......@@ -17,6 +17,9 @@ end
function cm.filter(c)
return c:IsLevelBelow(5) and c:IsRace(RACE_GALAXY) and c:IsAttack(900) and c:IsAbleToHand()
end
function cm.condition(e,tp,eg,ep,ev,re,r,rp)
return RD.IsPlayerNoActivateInThisTurn(tp,list[1])
end
function cm.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.IsExistingMatchingCard(cm.filter,tp,LOCATION_GRAVE,0,1,nil) end
Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_GRAVE)
......
......@@ -10,7 +10,7 @@ function cm.initial_effect(c)
e1:SetCategory(CATEGORY_SPECIAL_SUMMON)
e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN)
e1:SetCountLimit(1,list[1]+EFFECT_COUNT_CODE_OATH)
e1:SetCondition(cm.condition)
c:RegisterEffect(e1)
end
function cm.ritual_mat_filter(c)
......@@ -19,4 +19,7 @@ end
--Activate
function cm.spfilter(c)
return c:IsCode(list[1])
end
function cm.condition(e,tp,eg,ep,ev,re,r,rp)
return RD.IsPlayerNoActivateInThisTurn(tp,list[1])
end
\ No newline at end of file
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