fix(waypoint): 修复冰冷之原等 14 处场景小站未渲染缺陷并消除全量跨幕 ID 冲突 (#409) #429
Loading…
Reference in New Issue
No description provided.
Delete Branch "fix/issue-409-waypoint-rendering"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
概述
修复 Issue #409:冰冷之原等 14 处场景小站未渲染以及亚瑞特高原贴图与交互坐标脱节缺陷。严格遵循 Diablo II v1.13c 原版标准,根除全量跨幕局部 DS1 物体 ID 混淆。
核心修复点
导出权威小站判定辅助函数 (
src/game/object-lookup.ts)WAYPOINT_OBJECTS_TXT_IDS(17 种小站Objects.txt行号)与WAYPOINT_TOKENS。isWaypointDs1Object(act, type, id),按幕精确解析 DS1 对象,隔离跨幕局部 ID 混淆。根除野外跨幕 ID 冲突 (
src/game/wilderness.ts)ALL_WAYPOINT_IDS集合。isWaypointDs1Object(effectiveAct, o.type, o.id)检索预设小站,避免普通火把(id=1)、活板门(id=0)、丛林树木(id=0)或武器架(id=12)被误判为小站而提前中断生成。修复神秘避难所中心房变体覆盖与小站统计 (
src/game/maze.ts)assignVariants中跳过神秘避难所(Level 74),严格保留arcaneSanctuary显式分配的level.first.variant = 4(SanctNSEW4.ds1,内嵌小站与传送门)。stamp中改用isWaypointDs1Object探测迷宫房间内嵌的小站实体,使 Level 74 中心房以及各幕迷宫内嵌小站均能精确记录坐标到stats.waypoints。消除打包管线漏识别与名称规范化 (
scripts/pack-act-assets.ts)isWaypointObjectsTxtId识别Objects.txt行号 38(Token: WT,Name: Dummy,亚瑞特高原野外小站)。Waypoint,并将其加入waypointCells,彻底解决亚瑞特高原(Level 112)贴图实体与交互热区source: 'placed'坐标脱节缺陷。加固静态包校验门禁与专项回归测试
scripts/verify-packs.ts中新增 Waypoint Ground-Truth Invariant:严格断言所有小站场景变体必须具备source: 'object',且scene.objects中必须存在渲染实体。tests/waypoint-fidelity-regression.test.ts,全量校验 39 个小站场景共 109 个变体。验证结果
source: 'object'与完全重合的渲染实体对象。npm run verify:packs2122/2122 项断言 100% 通过。Closes #409