From 9723c1524bef34f743f65815e5e93c777056b8ed Mon Sep 17 00:00:00 2001 From: DKChan <524912269@qq.com> Date: Fri, 16 Oct 2026 03:05:26 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E5=B1=8F=E8=94=BD):=20=E8=B4=AB=E7=9F=BF?= =?UTF-8?q?=E8=84=89=E5=9C=B0=E5=BD=A2=E5=8F=98=E5=BC=82=E5=88=A0=E8=A1=8C?= =?UTF-8?q?=E2=80=94=E2=80=94=E7=94=A8=E6=88=B7=E4=BB=A4=E3=80=8C=E7=89=B9?= =?UTF-8?q?=E5=BC=82=E5=85=B3=E5=8D=A1=E5=90=8E=E7=BB=AD=E9=87=8D=E6=96=B0?= =?UTF-8?q?=E8=AE=BE=E8=AE=A1=EF=BC=8C=E5=85=88=E5=B1=8F=E8=94=BD=E3=80=8D?= =?UTF-8?q?=EF=BC=882026-10-16=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - variation.tres 删 skewed_veins 行(scope=global/resource_face/effect_value=30): Boss/精英图全局池空 → _resolve_global_variant 空行回落 → region 布置原路兜底, 玩家面零横幅零角标零资源偏斜;删行依据与首发批裁决记录改写为屏蔽注记(git 历史可溯) - smoke_all.gd 7 处断言换代为「全局池空→region 兜底回落」路径: 行数 7→6 / boss 池去 skewed_veins / L2 boss+elite 全局决议改断言空行 / Boss 图改断言恰一行 region 变异+格子级布置恢复+取号恢复 / 快照投影与板载一致 / 同种子确定性(region 路径);节头与 print 同步换代 - resource_face 机制代码(RewardEconomy 偏斜投影/schema 互锁/负样本)零触碰, 重建设计直接加行即可 --- game/data/tables/variation.tres | 23 ++++++---------------- game/smoke/smoke_all.gd | 35 +++++++++++++++++---------------- 2 files changed, 24 insertions(+), 34 deletions(-) diff --git a/game/data/tables/variation.tres b/game/data/tables/variation.tres index d60de9b2..5f7b2636 100644 --- a/game/data/tables/variation.tres +++ b/game/data/tables/variation.tres @@ -73,17 +73,6 @@ rows = [{ "placement": "any", "board_types": ["deep_underdark"], "counter_items": [] -}, { -"variant_id": "skewed_veins", -"display_name": "贫矿脉", -"unlock_level": 2, -"scope": "global", -"effect": "resource_face", -"effect_value": 30, -"trigger": "always", -"placement": "any", -"board_types": [], -"counter_items": [] }] ; 地形变异 首批类型定稿批(2026-09-19 用户拍板)——四行两轴×两关: @@ -110,9 +99,9 @@ rows = [{ ; M-3 迭代 5 返工批(2026-09-29 U2 推翻 C3 裁 C1 两刀):percent_of_cells 4→5 回退;岩浆 1 与 per_level_bonus 0 维持——C1 终态; ; C1+v1 AC 组合读数归返工批全量确认(裁断全录 design/qa/m3-iter5-u2-gate-2026-09-29.md)。 ; -; 全局作用域变异首发批(2026-10-04,迭代 14 ③号卡):skewed_veins 贫矿脉——首发型 scope=global -; 案A 资源面·微贫向偏斜(P2+Q1 裁决):L2/L3 Boss 图恒定一型整图变异(P4 甲恒定制;board_types ∅ -; 通配,L2/L3 双关同型由 unlock_level=2+门控节点身份承载——Q2 甲),替换制:带全局型的 Boss 图不再 -; 布 region 片(P3 甲);effect_value=30=生存族权重下调百分比(provisional 调参项,域 [0,50], -; 0=中性 off 锚;总期望微降 3-5% 为 provisional 设计目标,精确方向与幅度归读数批只测不判); -; trigger=always=板级恒在无触发时机。行值全 provisional 归出口追认单。 +; 屏蔽记录(2026-10-16 用户令):skewed_veins 贫矿脉行已删除——用户裁「地形变异特异关卡后续重新做 +; 设计,先屏蔽」。删除后 Boss/精英图全局池空 → _resolve_global_variant 空行回落 → region 布置原路 +; 兜底(battle_orchestrator.gd 既有回落路径),玩家面零横幅零角标零资源偏斜。删除行内容与首发批 +; 裁决依据(2026-10-04 迭代 14 ③号卡:案A 资源面微贫向偏斜、effect_value=30 provisional、域 [0,50]、 +; 0=中性 off 锚)见 git 历史;resource_face 机制代码(RewardEconomy 偏斜投影/schema 互锁/负样本 +; 断言)全部保留,重建设计直接加行即可。 diff --git a/game/smoke/smoke_all.gd b/game/smoke/smoke_all.gd index 0bbb82f4..2bb72023 100644 --- a/game/smoke/smoke_all.gd +++ b/game/smoke/smoke_all.gd @@ -2245,8 +2245,8 @@ func _mk_stream(stream_name: String, scope: int) -> RandomNumberGenerator: func _smoke_variation_framework() -> void: print("--- 地形变异 框架面(首批四类型 + 候选池门控 + 跨字段互锁)---") - check(_db.variation.rows.size() == 7, "变异清单 7 行(荆棘丛/藤蔓缠绕/岩浆/烬覆 + 落石/矿尘 + 贫矿脉——首批类型定稿批 + 第三关内容批 + 全局作用域变异首发批)") - check(_db.variation.validate().is_empty(), "变异表校验零错误(7 行全过域与跨字段互锁——含 scope=global 三互锁)") + check(_db.variation.rows.size() == 6, "变异清单 6 行(荆棘丛/藤蔓缠绕/岩浆/烬覆 + 落石/矿尘——首批类型定稿批 + 第三关内容批;贫矿脉 2026-10-16 用户令屏蔽删行)") + check(_db.variation.validate().is_empty(), "变异表校验零错误(6 行全过域与跨字段互锁——含 scope=global 三互锁负样本)") var pool1_ids: Array = [] for r in _db.variant_pool(1, "dungeon"): pool1_ids.append(String(r.variant_id)) @@ -2280,10 +2280,10 @@ func _errs_has_cross_field(errs: Array) -> bool: return false -# ---- 全局作用域变异 首发批断言面(2026-10-04 迭代 14 ③号卡——T0-T5 集中:互锁/门控三维/ -# 替换制/零取号/资源面偏斜守恒与合成序/快照投影/呈现面锚)---- +# ---- 全局作用域变异 断言面(2026-10-04 迭代 14 ③号卡首发批立面;2026-10-16 用户令屏蔽贫矿脉删行后 +# 改测「全局池空 → region 兜底回落」路径——互锁负样本/门控三维/资源面偏斜守恒与合成序/快照投影不变)---- -# 取号计数桩(variant_place 零取号断言——子类拦截计数,派生与取数语义零改动) +# 取号计数桩(variant_place 取号断言——子类拦截计数,派生与取数语义零改动) class _CountVariantRng extends RngServiceCore: var variant_calls := 0 func open_stream(purpose: String) -> RandomNumberGenerator: @@ -2302,7 +2302,7 @@ class _BoardRowStub: func _smoke_global_variant() -> void: - print("--- 全局作用域变异 首发批(门控三维 + 替换制 + 资源面偏斜)---") + print("--- 全局作用域变异(门控三维 + 全局池空兜底回落 + 资源面偏斜)---") # ① 跨字段互锁负样本(resource_face ⟺ scope=global 三条 + effect_value 新域 [0,50]) var vt = load("res://data/schemas/variation_table.gd").new() vt.rows.assign([{"variant_id": "g1", "display_name": "负甲", "unlock_level": 2, "scope": "region", @@ -2334,7 +2334,7 @@ func _smoke_global_variant() -> void: var pool_boss_ids: Array = [] for r in _db.variant_pool(2, "underdark", "boss"): pool_boss_ids.append(String(r.variant_id)) - check(pool_boss_ids == ["magma", "ash", "skewed_veins"], "门控三维:L2 underdark boss 池 = region 两行 + 贫矿脉(board_types ∅ 通配)") + check(pool_boss_ids == ["magma", "ash"], "门控三维:L2 underdark boss 池 = region 两行(贫矿脉 2026-10-16 屏蔽删行后无 global 行)") var pool_battle_ids: Array = [] for r in _db.variant_pool(2, "underdark", "battle"): pool_battle_ids.append(String(r.variant_id)) @@ -2343,31 +2343,32 @@ func _smoke_global_variant() -> void: "门控三维:缺省双参调用 = global 行跳过(既有调用口径零扰动)") check(_db.variant_pool(1, "underdark", "boss").is_empty(), "L1 Boss 免疫:unlock_level=2 门控在 boss 节点同样生效(教学保护带 B)") check(_db.global_variant_row(2, "underdark", "battle").is_empty(), "全局决议:battle 节点恒无全局型") - check(_db.global_variant_row(2, "underdark", "boss").get("variant_id", "") == "skewed_veins", "全局决议:L2 boss 取贫矿脉(确定性单行)") + check(_db.global_variant_row(2, "underdark", "boss").is_empty(), "全局决议:L2 boss 全局池空 → 空行(贫矿脉屏蔽后兜底回落承载)") check(_db.global_variant_row(1, "underdark", "boss").is_empty() and _db.global_variant_row(1, "dungeon", "boss").is_empty(), "全局决议:L1 boss 全局池空 → 空行(兜底回落承载)") - check(_db.global_variant_row(2, "underdark", "elite").get("variant_id", "") == "skewed_veins", "elite 前向词位:boss 同池(首发零 elite 表行——词表位不造行)") - # ③ 替换制 + 零取号:L2 Boss 图恰一行板级变异 + 零 region 格 + variant_place 零消费 + check(_db.global_variant_row(2, "underdark", "elite").is_empty(), "elite 前向词位:boss 同池恒空(贫矿脉屏蔽后——词表位不造行)") + # ③ 兜底回落:全局池空 → Boss 图改走 region 候选池(恰一行 region 变异 + 格子级布置 + 正常取号) var crng = _CountVariantRng.new() crng.set_master_seed(42) var boss_settlement = load("res://core/battle_orchestrator.gd").new(_db, crng) var boss_ok: bool = boss_settlement.begin_battle({"level_index": 2, "node_depth": 4, "hero_hp": int(_db.hero.max_hp), "node_type": "boss"}) - check(boss_ok, "L2 Boss 战斗启动(node_depth=4 boss 节点——替换制断言载体)") + check(boss_ok, "L2 Boss 战斗启动(node_depth=4 boss 节点——兜底回落断言载体)") if boss_ok: var bb = boss_settlement.minesweeper.current_board() - check(_arr_str_eq(bb.board_variant_ids(), ["skewed_veins"]), "替换制:Boss 图 board_variants 恰一行 = 贫矿脉") - check(bb.variants.is_empty(), "替换制:Boss 图零 region 变异格(无格子级变异标记——呈现件闲置合法态)") - check(crng.variant_calls == 0, "零取号合法态:Boss 图 variant_place 零消费(全局取用确定性)") + check(bb.board_variant_ids().size() == 1 and (String(bb.board_variant_ids()[0]) in ["magma", "ash"]), + "屏蔽后回落:Boss 图改走 region 候选池(恰一行 region 变异,无全局型——全局池空回落路径)") + check(not bb.variants.is_empty(), "屏蔽后回落:Boss 图恢复 region 变异格布置(原替换制跳过 region 的逻辑随全局池空失效)") + check(crng.variant_calls > 0, "屏蔽后回落:variant_place 恢复取号(原全局取用零取号态消失)") var snap: Dictionary = boss_settlement.presentation_snapshot() - check(_arr_str_eq(snap.get("board_variants", []), ["skewed_veins"]), "快照投影:board_variants 呈现面(横幅/角标唯一读取面)") + check(_arr_str_eq(snap.get("board_variants", []), bb.board_variant_ids()), "快照投影:board_variants 与板载 region 行一致(横幅/角标唯一读取面)") # Boss 图确定性:同种子两遍逐位相同 var crng2 = _CountVariantRng.new() crng2.set_master_seed(42) var boss2 = load("res://core/battle_orchestrator.gd").new(_db, crng2) if boss2.begin_battle({"level_index": 2, "node_depth": 4, "hero_hp": int(_db.hero.max_hp), "node_type": "boss"}): var bb2 = boss2.minesweeper.current_board() - check(_arr_str_eq(bb2.board_variant_ids(), ["skewed_veins"]) and crng2.variant_calls == 0, - "确定性:同种子 Boss 图两遍 board_variants/取号逐位相同") + check(_arr_str_eq(bb2.board_variant_ids(), bb.board_variant_ids()) and crng2.variant_calls == crng.variant_calls, + "确定性:同种子 Boss 图两遍 board_variants/取号逐位相同(region 布置路径)") # ④ 资源面偏斜投影(RewardEconomy 纯函数面——守恒/白名单/构造例/合成序) var eco = load("res://core/reward_economy.gd").new(_db, load("res://core/rng_service.gd").new()) var base_rows: Array = eco._rollable_rows()