feat(敌人表深度带): 遭遇行集寻址改为 (关卡, row_kind, 深度带)

敌人行集不再按 (level_index, node_depth) 精确点寻址,改为 (level_index, row_kind, depth_band):
带切法单点 EnemyTable.band_of 取首个不小于请求深度的带(偏难一侧),高于顶带返回 -1 交
resolver 取顶带并发 resolve_depth_clamp(四元组去重不变);resolver 与 ConfigDb 门面同步
加 row_kind 第三参;unit_container.spawn 与 BattleOrchestrator 透传行类(battle/boss)。

敌人表 20 行键迁移(原 node_depth 数值就地成为新带键,值列零变更),新增 row_kind 列;
schema 校验随键换代:row_kind 封闭枚举、dup_key/rowset_rule 新键串、每关 battle 带 0 锚
与每关 boss 行集 ≥1;跨表校验 ④ 敌侧改带寻址,新增同日图多 Boss 同带报错与顶带消解报错。

读数:基线冒烟 1156 项 0 失败;本轮冒烟 1161 项 0 失败;单元 35 套件全绿;探针 --click 全绿。
This commit is contained in:
DKChan committed 2026-10-22 04:17:21 +08:00
1 parent 603eba3117
commit 07f3eb55e3
8 files changed
+191 -72

No files matched your search

+1 -1
View File
@@ -73,7 +73,7 @@ static func boss_name(runner, db) -> String:
if runner != null:
var node: Dictionary[Variant, Variant] = runner.current_node()
if String(node.get("type", "")) == "boss":
var rowset: Array[Variant] = db.resolve_enemy_rowset(int(runner.level_row.level_index), int(node.get("node_depth", -1)))
var rowset: Array[Variant] = db.resolve_enemy_rowset(int(runner.level_row.level_index), int(node.get("node_depth", -1)), "boss")
if not rowset.is_empty():
return String(rowset[0].get("display_name", ""))
return "遗迹守卫"