fix(tiles): 参照 1.13c DRLGROOM_LoadDt1Files 补充常驻全局通用 DT1 (InvisWal / Blank / Warp) #112
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
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?
背景与问题描述
在 #111 全地图走查中,发现 Act 5 Hell 1 (Level 125) 与 Pandemonium 3 (Level 135) 各有 1 处地表穿孔:
missingRefs:floor style=49 sequence=7:0 @cell(30,18)。根因剖析 (1.13c 对比)
LevelType 35 (Act 5 - Lava),随机地牢拼块使用了暴雪官方 DS1 文件LavaNS.ds1/LavaN.ds1。D2Common.dll反汇编证据 (DRLGROOM_LoadDt1Files@0x6fdb8400~0x6fdb8506):引擎在遍历LvlTypes.txt载入 1~32 个插槽后,必然会无条件全局常驻加载 3 个底层 DT1:data\global\tiles\Act1\Outdoors\Blank.dt1data\global\tiles\Act1\Barracks\InvisWal.dt1data\global\tiles\Act1\Barracks\Warp.dt1style=49, sequence=7的地表瓦片(位于InvisWal.dt1,属于隐形碰撞墙)。src/game/acts.ts的resolveLevelLibraries仅解析了LvlTypes.txt声明的插槽,缺少原版引擎对通用 DT1 的常驻加载保证,导致该瓦片在图集打包时判定为 missing。修复要求
src/game/acts.ts的resolveLevelLibraries(及相关 DT1 解析路径)中,严格按照 1.13c 原版逻辑追加加载全局通用 DT1:data/global/tiles/ACT1/OUTDOORS/blank.dt1data/global/tiles/ACT1/BARRACKS/inviswal.dt1data/global/tiles/ACT1/BARRACKS/warp.dt1scripts/pack-act-assets.ts与scripts/verify-acts.ts/scripts/verify-tiles.ts能正确解析style=49 sequence=7瓦片。tests/global-dt1-load.test.ts,验证所有关卡库均包含常驻通用 DT1 且能正确解析 InvisWal 瓦片。npm run typecheck、npx vitest run。关联主 Issue: #111
修复完成并已合并至 main
ed344259a1a6ace52be967ee71cbd089e15954e4(Merge:0535a63)DRLGROOM_LoadDt1Files(0x6fdb8400) 行为,在src/game/acts.ts的resolveLevelLibraries中无条件常驻追加Blank.dt1,InvisWal.dt1,Warp.dt1。InvisWal.dt1(style=49 sequence=7 行走阻挡隐形墙) missingTile 报错。tests/global-dt1-load.test.ts验证全局常驻 DT1 加载与 style=49 识别。npm run typecheck0 errors,全量vitest run测试通过。