diff --git a/lua/core/skill_skeleton.lua b/lua/core/skill_skeleton.lua index 100744cb81cb86a18160eb6437e4a84c6bcfd42d..fa99f1cd31eff1b0733e762696932ae4f31935f7 100644 --- a/lua/core/skill_skeleton.lua +++ b/lua/core/skill_skeleton.lua @@ -520,6 +520,8 @@ function SkillSkeleton:createViewAsSkill(_skill, idx, key, attr, spec) if spec.click_count then skill.click_count = spec.click_count end + skill.enabledAtNullification = spec.enabled_at_nullification + skill.handly_pile = spec.handly_pile skill.mute_card = spec.mute_card diff --git a/lua/core/skill_type/cardskill.lua b/lua/core/skill_type/cardskill.lua index b04583d9c3eb19c9cce90ae201479a53dcfaf3f7..98723be605ca99ef8f9df898e4e525f700090c2b 100644 --- a/lua/core/skill_type/cardskill.lua +++ b/lua/core/skill_type/cardskill.lua @@ -309,6 +309,8 @@ function CardSkill:preEffect(room, cardEffectData) if s.pattern and Exppattern:Parse("nullification"):matchExp(s.pattern) and + s:enabledAtNullification(p, cardEffectData) and + s:enabledAtResponse(p) and ( cardEffectData.use == nil or not ( diff --git a/lua/core/skill_type/view_as.lua b/lua/core/skill_type/view_as.lua index c5da38a9cc6a799d216f6578070f9f719220a7c0..3a7893a56d0cedaa22132cc3ad07dbafc7046d15 100644 --- a/lua/core/skill_type/view_as.lua +++ b/lua/core/skill_type/view_as.lua @@ -63,4 +63,12 @@ function ViewAsSkill:afterResponse(player, response) end ---@param extra_data any function ViewAsSkill:prompt(player, selected_cards, selected_targets, extra_data) return "" end +--- 转化无懈是否对特定的牌有效 +---@param player Player +---@param data CardEffectData @ 被响应的牌的数据 +---@return boolean? +function ViewAsSkill:enabledAtNullification(player, data) + return true +end + return ViewAsSkill diff --git a/lua/fk_ex.lua b/lua/fk_ex.lua index c1844f5e11f1c26e1d31cddf2899c1ff0b216feb..6a142ba02afc6bccdcd5ff58ec5723c296975488 100644 --- a/lua/fk_ex.lua +++ b/lua/fk_ex.lua @@ -147,6 +147,7 @@ end ---@field public handly_pile? boolean @ 是否能够选择“如手牌使用或打出”的牌 ---@field public mute_card? boolean @ 是否不播放卡牌特效和语音 ---@field public click_count? boolean @ 是否在点击按钮瞬间就计数并播放特效和语音 +---@field public enabled_at_nullification? fun(self: ViewAsSkill, player: Player, data: CardEffectData): boolean? @ 判断一张牌是否能被此技能转化无懈来响应 ---@class DistanceSpec: StatusSkillSpec ---@field public correct_func? fun(self: DistanceSkill, from: Player, to: Player): integer?