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 ...@@ -60,6 +60,10 @@ end
function RushDuel.IsPlayerDrawInThisTurn(player) function RushDuel.IsPlayerDrawInThisTurn(player)
return Duel.GetFlagEffect(player, FLAG_HAS_DRAW_IN_TURN) ~= 0 return Duel.GetFlagEffect(player, FLAG_HAS_DRAW_IN_TURN) ~= 0
end end
-- 条件: 玩家在这个回合没有发动过特定卡名的效果
function RushDuel.IsPlayerNoActivateInThisTurn(player, code)
return not RD.ActivateCodes[player][code]
end
-- 条件: 守备力为 def -- 条件: 守备力为 def
function RushDuel.IsDefense(card, def) function RushDuel.IsDefense(card, def)
return card:IsDefense(def) and not RushDuel.IsMaximumMode(card) return card:IsDefense(def) and not RushDuel.IsMaximumMode(card)
......
...@@ -3,6 +3,8 @@ RushDuel = RushDuel or {} ...@@ -3,6 +3,8 @@ RushDuel = RushDuel or {}
-- 需要洗切手卡 -- 需要洗切手卡
RushDuel.NeedShuffleHand = {false, false} RushDuel.NeedShuffleHand = {false, false}
-- 已发动过的卡名
RushDuel.ActivateCodes = {{}, {}}
-- 初始化 -- 初始化
function RushDuel.Init() function RushDuel.Init()
...@@ -63,9 +65,11 @@ function RushDuel.InitRule() ...@@ -63,9 +65,11 @@ function RushDuel.InitRule()
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, p = Duel.GetChainInfo(ev, CHAININFO_TRIGGERING_EFFECT, CHAININFO_TRIGGERING_PLAYER)
local tc=te:GetHandler()
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, 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) end)
-- 同一时点只能发动一张陷阱卡 -- 同一时点只能发动一张陷阱卡
local function is_trap(e) local function is_trap(e)
...@@ -83,6 +87,10 @@ function RushDuel.InitRule() ...@@ -83,6 +87,10 @@ function RushDuel.InitRule()
RushDuel.CreatePlayerTargetGlobalEffect(EFFECT_SKIP_M2) RushDuel.CreatePlayerTargetGlobalEffect(EFFECT_SKIP_M2)
-- 手卡无限制 -- 手卡无限制
RushDuel.CreatePlayerTargetGlobalEffect(EFFECT_HAND_LIMIT, 100) 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() RushDuel.InitMaximum()
end end
......
...@@ -8,7 +8,6 @@ function cm.initial_effect(c) ...@@ -8,7 +8,6 @@ function cm.initial_effect(c)
e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_GRAVE_SPSUMMON) e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_GRAVE_SPSUMMON)
e1:SetType(EFFECT_TYPE_ACTIVATE) e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN) e1:SetCode(EVENT_FREE_CHAIN)
e1:SetCountLimit(1,list[1]+EFFECT_COUNT_CODE_OATH)
e1:SetCondition(cm.condition) e1:SetCondition(cm.condition)
e1:SetTarget(cm.target) e1:SetTarget(cm.target)
e1:SetOperation(cm.activate) e1:SetOperation(cm.activate)
...@@ -19,7 +18,7 @@ function cm.spfilter(c,e,tp) ...@@ -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) return c:IsType(TYPE_NORMAL) and c:IsRace(RACE_DRAGON) and RD.IsCanBeSpecialSummoned(c,e,tp,POS_FACEUP)
end end
function cm.condition(e,tp,eg,ep,ev,re,r,rp) 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 end
function cm.target(e,tp,eg,ep,ev,re,r,rp,chk) function cm.target(e,tp,eg,ep,ev,re,r,rp,chk)
if chk==0 then return Duel.GetMZoneCount(tp)>0 if chk==0 then return Duel.GetMZoneCount(tp)>0
......
...@@ -8,7 +8,7 @@ function cm.initial_effect(c) ...@@ -8,7 +8,7 @@ function cm.initial_effect(c)
e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON) e1:SetCategory(CATEGORY_SPECIAL_SUMMON+CATEGORY_FUSION_SUMMON)
e1:SetType(EFFECT_TYPE_ACTIVATE) e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN) e1:SetCode(EVENT_FREE_CHAIN)
e1:SetCountLimit(1,120285065+EFFECT_COUNT_CODE_OATH) e1:SetCondition(cm.condition)
e1:SetTarget(cm.target) e1:SetTarget(cm.target)
e1:SetOperation(cm.activate) e1:SetOperation(cm.activate)
c:RegisterEffect(e1) c:RegisterEffect(e1)
...@@ -31,6 +31,9 @@ function cm.spfilter(c,e,tp,tc,code) ...@@ -31,6 +31,9 @@ function cm.spfilter(c,e,tp,tc,code)
and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false) and c:IsCanBeSpecialSummoned(e,SUMMON_TYPE_FUSION,tp,false,false)
and Duel.GetLocationCountFromEx(tp,tp,tc,c)>0 and Duel.GetLocationCountFromEx(tp,tp,tc,c)>0
end 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) 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 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) Duel.SetOperationInfo(0,CATEGORY_SPECIAL_SUMMON,nil,1,tp,LOCATION_EXTRA)
......
...@@ -8,7 +8,7 @@ function cm.initial_effect(c) ...@@ -8,7 +8,7 @@ function cm.initial_effect(c)
e1:SetCategory(CATEGORY_TOHAND+CATEGORY_GRAVE_ACTION) e1:SetCategory(CATEGORY_TOHAND+CATEGORY_GRAVE_ACTION)
e1:SetType(EFFECT_TYPE_ACTIVATE) e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN) e1:SetCode(EVENT_FREE_CHAIN)
e1:SetCountLimit(1,list[1]+EFFECT_COUNT_CODE_OATH) e1:SetCondition(cm.condition)
e1:SetTarget(cm.target) e1:SetTarget(cm.target)
e1:SetOperation(cm.activate) e1:SetOperation(cm.activate)
c:RegisterEffect(e1) c:RegisterEffect(e1)
...@@ -17,6 +17,9 @@ end ...@@ -17,6 +17,9 @@ end
function cm.filter(c) function cm.filter(c)
return c:IsLevelBelow(5) and c:IsRace(RACE_GALAXY) and c:IsAttack(900) and c:IsAbleToHand() return c:IsLevelBelow(5) and c:IsRace(RACE_GALAXY) and c:IsAttack(900) and c:IsAbleToHand()
end 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) 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 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) Duel.SetOperationInfo(0,CATEGORY_TOHAND,nil,1,tp,LOCATION_GRAVE)
......
...@@ -10,7 +10,7 @@ function cm.initial_effect(c) ...@@ -10,7 +10,7 @@ function cm.initial_effect(c)
e1:SetCategory(CATEGORY_SPECIAL_SUMMON) e1:SetCategory(CATEGORY_SPECIAL_SUMMON)
e1:SetType(EFFECT_TYPE_ACTIVATE) e1:SetType(EFFECT_TYPE_ACTIVATE)
e1:SetCode(EVENT_FREE_CHAIN) e1:SetCode(EVENT_FREE_CHAIN)
e1:SetCountLimit(1,list[1]+EFFECT_COUNT_CODE_OATH) e1:SetCondition(cm.condition)
c:RegisterEffect(e1) c:RegisterEffect(e1)
end end
function cm.ritual_mat_filter(c) function cm.ritual_mat_filter(c)
...@@ -20,3 +20,6 @@ end ...@@ -20,3 +20,6 @@ end
function cm.spfilter(c) function cm.spfilter(c)
return c:IsCode(list[1]) return c:IsCode(list[1])
end 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