merge: M-3迭代7魔法道具内容+元进度数值标定 T0-T8全落——AuxItemTable六行+掉落投放(解锁门控空集零投放)+库存四步受理+三选一奖励节点+HUD两步交互+叠加层呈现+工坊封存呈现+换算率复核读数(6/9/1 vs 实测1.7/4.1/0.0 U1呈报);重闸全绿(冒烟577/0+五探针+单测12套+doc三闸熵增零新增+机检11/11+MC剥additive 0/400逐位);出口=T9目检(检查单已交);台账259-263

# Conflicts:
#	game/presentation/views/node_overlay.gd
This commit is contained in:
DKChan committed 2026-09-29 08:59:31 +08:00
commit fd39a58aee
35 files changed
+1990 -19

No files matched your search

+12 -6
View File
@@ -2009,12 +2009,14 @@ func _smoke_negative_dictionary() -> void:
# 行为面:逐型负向兑付形态(真实板 + 真实路由路径)
# 数值压缩批(2026-09-17):heal 权重 15→3 后单板五型齐备不再必然(无 heal 板概率 ≈1/3)——
# 改多板扫描,取第一块五型齐备的板做行为断言。
var rng = load("res://core/rng_service.gd").new()
var settlement = null
var board = null
var by_type := {} # cell_type → 首个非封锁格(query_identity 雷安同池——雷格可查)
var rows: Array = []
for seed_i in range(6):
# 每板独立 rng 实例(迭代 7 T1 修正——复用实例重播种触发 set_master_seed 的 _counter==0 守卫;
# 原版第一板即 break 掩盖了该违例,aux 供给挤占后多板扫描暴露)
var rng = load("res://core/rng_service.gd").new()
rng.set_master_seed(20260919 + seed_i)
settlement = load("res://core/battle_orchestrator.gd").new(_db, rng)
rows = []
@@ -2032,9 +2034,13 @@ func _smoke_negative_dictionary() -> void:
if r0.has(c) or by_type.size() == 5:
continue
var ident = settlement.query_reward_identity(c)
if ident != null and not by_type.has(String(ident.cell_type)):
# aux 身份不入五型轴(魔法道具内容批 2026-09-29——五型齐备=格面资源历史断言轴,
# aux 供给挤占不改变本断言语义;扫描排除 aux 身份格)
if ident != null and String(ident.cell_type) != RewardTable.AUX_ITEM_TYPE and not by_type.has(String(ident.cell_type)):
by_type[String(ident.cell_type)] = c
if by_type.size() == 5:
# break 条件=percent_map 三型齐备(迭代 7 T1——aux 供给挤占下 weaken/defense 收集时机漂移,
# 直验可达性优先;五型多样性 check 保留不动)
if by_type.has("attack") and by_type.has("defense") and by_type.has("weaken"):
break
check(by_type.size() == 5, "扫描 6 板内出现五型齐备板(%s)" % str(by_type.keys()))
# attack/defense/weaken:负向字典行走 apply_effect(off_guard 2026-09-18 换装 ac 轴——兑付形态不变)
@@ -3226,8 +3232,8 @@ func _all_entry_boss_paths(nodes: Array) -> Array:
func _smoke_nine_types_gp_stream() -> void:
print("--- 格面资源九型 + gp_drop 流(奖励字典 18 格 + 黄金向量)---")
check(RewardTable.CELL_TYPES.size() == 9 and RewardTable.CELL_TYPES.has("gp"),
"格面资源九型封闭(第九型 gp——九型批 2026-09-20,词表 v1.1)")
check(RewardTable.CELL_TYPES.size() == 10 and RewardTable.CELL_TYPES.has("gp") and RewardTable.CELL_TYPES.has("aux_item"),
"格面资源十型封闭(第九型 gp 九型批 2026-09-20 / 第十型 aux_item 魔法道具内容批 2026-09-29——词表 v1.2)")
var cell_rows := 0
var pos_weight := 0
var gp_pos := -1
@@ -3241,7 +3247,7 @@ func _smoke_nine_types_gp_stream() -> void:
gp_pos = int(row.weight)
if String(row.get("reward_id", "")) == "gp_lose":
gp_neg = int(row.weight)
check(cell_rows == 18, "奖励字典 18 格(九型 × 正负——清图槽 clear_default 独立批尾不计)")
check(cell_rows == 22, "奖励字典 22 行(九型×正负 18 格 + aux 正三投放/负一占位——魔法道具内容批 2026-09-29;清图槽独立批尾不计)")
# 正向权重结构校验(配置推导,2026-09-23 重构):正向 cell 行权重 ≥1(必在池)、负向行权重恒 0(不入池)、
# 合计即配置自身的和(改表自动跟随,不再硬编码合计值)。
var pos_all_in_pool := true