From 94a05afd49b55c66bb03ccd6df176abcf29922a5 Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Sat, 31 Oct 2026 07:35:16 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=AD=E4=BB=A346=E5=8D=A1A-T1(=E8=AF=8D?= =?UTF-8?q?=E8=A1=A8=E6=89=A9=E7=AD=BE):=20EVENTS+refresh=5Frequest/board?= =?UTF-8?q?=5Frefreshed(20=E2=86=9222)=C2=B7MINE=5FEVENTS=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=E6=8D=A2=E5=9B=BE=E5=88=B7=E6=96=B0=E9=9D=A2=C2=B7EFF?= =?UTF-8?q?ECT=5FKINDS+grant=5Freserve=5Fap/apply=5Fdiscount(32=E2=86=9234?= =?UTF-8?q?)=C2=B7=E9=9B=B6fact/op/DO=5FKEYS=E6=96=B0=E5=A2=9E=C2=B7forge?= =?UTF-8?q?=5Ftable=E8=AE=A1=E6=95=B0=E6=96=AD=E8=A8=8020/32=E2=86=9222/34?= =?UTF-8?q?=E6=8D=A2=E4=BB=A3=C2=B7effect=5Fwords=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E4=B8=A4=E4=BA=8B=E4=BB=B6=E4=B8=A4=E6=95=88=E6=9E=9C=E5=9C=A8?= =?UTF-8?q?=E5=86=8C=E6=96=AD=E8=A8=80(=E6=97=A7=E5=87=BA=E5=9F=9F?= =?UTF-8?q?=E8=B4=9F=E4=BE=8B=E5=85=A8=E4=BF=9D=E7=95=99)=C2=B7=E5=AD=A4?= =?UTF-8?q?=E7=AB=8B=E9=AA=8C=E8=AF=81=E4=B8=A4=E4=BB=B6=E5=85=A8=E7=BB=BF?= =?UTF-8?q?(20=20checks/exit0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game/core/effect_engine.gd | 16 ++++++++++++---- game/tests/unit/core/effect_words_t1_test.gd | 5 +++++ game/tests/unit/data_config/forge_table_test.gd | 8 ++++---- 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/game/core/effect_engine.gd b/game/core/effect_engine.gd index 4033eb64..c2d3a331 100644 --- a/game/core/effect_engine.gd +++ b/game/core/effect_engine.gd @@ -12,11 +12,15 @@ extends RefCounted const EVENTS := ["dig_reveal", "dig_paid", "seal_hit", "mine_hit", "attack_commit", "clamp_check", "armor_roll", "kill", "damage_taken", "enemy_hp_threshold", "round_start", "seal_settle", "round_end", "reward_roll", "treasure_used", "charge_full", "dig_stop", "battle_won", "seal_missed", - "board_installed"] + "board_installed", + # 换图系双事件(refresh_request=玩家请求刷新〔省力周转 apply_discount 订阅面——折扣只改门槛 + # 与扣费不改拒绝判据〕;board_refreshed=成功刷新事实〔换图系七件订阅主挂点——装新板后才发射〕) + "refresh_request", "board_refreshed"] ## 扫雷侧事件集(🔴 流派扫雷触发铁律新形态:每流派 ≥1 行订阅本集事件——schema 加载校验。 -## 原 MINE_HOOKS 的同义迁移:挖掘/封印/轮末结算面事件) -const MINE_EVENTS := ["dig_reveal", "dig_paid", "seal_hit", "mine_hit", "seal_settle", "round_end", "reward_roll"] +## 原 MINE_HOOKS 的同义迁移:挖掘/封印/轮末结算面事件+轮内刷新面〔换图系〕) +const MINE_EVENTS := ["dig_reveal", "dig_paid", "seal_hit", "mine_hit", "seal_settle", "round_end", "reward_roll", + "refresh_request", "board_refreshed"] ## 效果类型词汇(解释器 switch 闭集——词表实数以 EFFECT_KINDS 常量为准,含共享行拆型: ## grant_gp/bias_wallet、counter_add/counter_spend、reveal_tiles/remove_mines/refresh_pick、 @@ -40,7 +44,11 @@ const EFFECT_KINDS := ["add_ticket_rider", "modify_ticket", "damage_mult", "open "mine_count_preview", # forgive_seal_miss=完美保险(本场首次封印落空不计入完美 # 封印判定——订阅 seal_missed 的豁免效果,消费点在授予段;feats.tres 首例 domain=battle 行) - "forgive_seal_miss"] + "forgive_seal_miss", + # 换图系两效果(grant_reserve_ap=矿脉储能·付费挖格产 RAP〔消费点在行动经济 dig_paid + # 受理后一次性入池〕;apply_discount=省力周转·刷新成本折扣〔mode=refresh cost_mult 百分比, + # floor 取整——只改门槛与扣费、不改拒绝判据〕) + "grant_reserve_ap", "apply_discount"] ## fact 条件词汇(封闭枚举——payload 同名键直读面〔fact 取值序 payload ## 优先——effect_engine._fact_value 既有机制〕。new_resource_type=首开资源类型〔地质学家〕; diff --git a/game/tests/unit/core/effect_words_t1_test.gd b/game/tests/unit/core/effect_words_t1_test.gd index 3f5d44f1..12a17964 100644 --- a/game/tests/unit/core/effect_words_t1_test.gd +++ b/game/tests/unit/core/effect_words_t1_test.gd @@ -14,6 +14,11 @@ func _init() -> void: # ① 词表在册断言(扩签面:2 事件+8 事实+7 效果类型+1 算子) Kit.check_quiet(EffectEngineScript.EVENTS.has("dig_stop") and EffectEngineScript.EVENTS.has("battle_won"), "新事件在册:dig_stop/battle_won〔专长批 V1〕") + # ①-a 换图系两事件两效果在册(迭代 46 扩签——旧出域负例全部保留) + Kit.check_quiet(EffectEngineScript.EVENTS.has("refresh_request") and EffectEngineScript.EVENTS.has("board_refreshed"), + "换图系新事件在册:refresh_request/board_refreshed〔换图系批 V1〕") + Kit.check_quiet(EffectEngineScript.EFFECT_KINDS.has("grant_reserve_ap") and EffectEngineScript.EFFECT_KINDS.has("apply_discount"), + "换图系新效果在册:grant_reserve_ap/apply_discount〔换图系批 V1〕") Kit.check_quiet(EffectEngineScript.FACTS.has("hp_ratio") and EffectEngineScript.FACTS.has("is_edge_cell") and EffectEngineScript.FACTS.has("new_resource_type") and EffectEngineScript.FACTS.has("dug_under_seal") and EffectEngineScript.FACTS.has("ap_exhausted_last") and EffectEngineScript.FACTS.has("ap_left") diff --git a/game/tests/unit/data_config/forge_table_test.gd b/game/tests/unit/data_config/forge_table_test.gd index c1a75a4e..370bc4b5 100644 --- a/game/tests/unit/data_config/forge_table_test.gd +++ b/game/tests/unit/data_config/forge_table_test.gd @@ -199,7 +199,7 @@ func _test_negative_cases() -> void: # 现行 31;本套件零扩签,钉现行数(将来任何加词即转红提示复核)。 func _test_effect_kinds_closed() -> void: - Kit.check("效果引擎效果类型闭集 32 种(锻造工坊批零新增口径随迭代 31 卡② 扩签 forgive_seal_miss 换代)〔锻造工坊批 V11〕", - EffectEngineScript.EFFECT_KINDS.size() == 32) - Kit.check("效果引擎事件词表在册 20 种(本批零扩签参照面)〔锻造工坊批 V11〕", - EffectEngineScript.EVENTS.size() == 20) + Kit.check("效果引擎效果类型闭集 34 种(迭代 46 换图系扩签 grant_reserve_ap/apply_discount 换代)〔锻造工坊批 V11〕", + EffectEngineScript.EFFECT_KINDS.size() == 34) + Kit.check("效果引擎事件词表在册 22 种(迭代 46 换图系扩签 refresh_request/board_refreshed 换代)〔锻造工坊批 V11〕", + EffectEngineScript.EVENTS.size() == 22)