refactor(map-gen/preset): 将混沌避难所(Level 108)移入固定地图管线,移除野外特例硬编码 #45

Closed
opened 2026-09-17 05:20:37 +00:00 by troytt · 1 comment
Owner

背景与现状

第四幕的混沌避难所(Chaos Sanctuary / Level 108)是第四幕最终决战场景。当前 TS 实现中,将其脱离了预制地图管线,而在 src/game/wilderness.ts:2525(stampAct4ChaosSanctuary)中作为野外地图的一个特例分支,硬编码拼接了 7 个十字翼预设。

暗黑2原版逻辑(Oracle / Ground Truth)

  • 在官方 Levels.txt 中,混沌避难所属于标准预制地图(DrlgType == 2),并非野外地形。
  • 混沌避难所由中心大厅(Heart)、西翼(Lord De Seis)、北翼(Infector of Souls)、东翼(Grand Vizier of Chaos)以及入口大桥等预置块构成,并由专门的逻辑控制五大封印(Seals)的开启状态与对应的暗金领主召唤。

差异点与缺陷表现

  • 将混沌避难所强行放入野外管线导致架构概念混淆,且无法共享 Preset Stitcher 的通用优化。
  • 缺失封印机关交互与对应的暗金 BOSS 刷新关联机制。

解决建议与改造方案

  1. 将混沌避难所移出 wilderness.ts,归入 Preset 地图处理管线。
  2. 通过标准预制拼装生成 120x120 场景,并建立五大封印的对象交互与暗金怪刷点逻辑。
## 背景与现状 第四幕的混沌避难所(Chaos Sanctuary / Level 108)是第四幕最终决战场景。当前 TS 实现中,将其脱离了预制地图管线,而在 `src/game/wilderness.ts:2525`(`stampAct4ChaosSanctuary`)中作为野外地图的一个特例分支,硬编码拼接了 7 个十字翼预设。 ## 暗黑2原版逻辑(Oracle / Ground Truth) - 在官方 `Levels.txt` 中,混沌避难所属于标准预制地图(`DrlgType == 2`),并非野外地形。 - 混沌避难所由中心大厅(Heart)、西翼(Lord De Seis)、北翼(Infector of Souls)、东翼(Grand Vizier of Chaos)以及入口大桥等预置块构成,并由专门的逻辑控制五大封印(Seals)的开启状态与对应的暗金领主召唤。 ## 差异点与缺陷表现 - 将混沌避难所强行放入野外管线导致架构概念混淆,且无法共享 Preset Stitcher 的通用优化。 - 缺失封印机关交互与对应的暗金 BOSS 刷新关联机制。 ## 解决建议与改造方案 1. 将混沌避难所移出 `wilderness.ts`,归入 Preset 地图处理管线。 2. 通过标准预制拼装生成 120x120 场景,并建立五大封印的对象交互与暗金怪刷点逻辑。
Author
Owner

已在分支 fix/issue-45 中真实修复并验证通过。

Commit: 72aa835
验证项:

  • 6/6 单元测试通过 (tests/preset.test.ts)
  • TypeScript 类型检查通过 (npx tsc --noEmit)
  • 生产包构建成功 (npm run build)
  • 全量 35 个测试套件 640 测试全绿
已在分支 `fix/issue-45` 中真实修复并验证通过。 Commit: `72aa835` 验证项: - 6/6 单元测试通过 (`tests/preset.test.ts`) - TypeScript 类型检查通过 (`npx tsc --noEmit`) - 生产包构建成功 (`npm run build`) - 全量 35 个测试套件 640 测试全绿
Sign in to join this conversation.
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: troytt/diablo2-web#45
No description provided.