[Parity][map][S1][R] 每个关卡都会凭空画出一个"小站"图标(cel 309,实为水井图标,无视迷雾),每个出口再画一个 Seal 图标(cel 306) #623

Closed
opened 2026-10-02 11:42:48 +00:00 by troytt · 0 comments
Owner

1.13c 客户端保真度审计立项(基准快照:7bd1090 / main @ 77a20c7)

证据标记说明:V-data = 1.13c MPQ 数据表 (.txt / animdata.d2 / .tbl / pal.pl2);V-src = D2MOO 逆向源码;V-bin = 1.13c DLL 反汇编;K = 1.13c 公认行为。

来源审计项:map#2 — [S1][R] 每个关卡都会凭空画出一个"小站"图标(cel 309,实为水井图标,无视迷雾),每个出口再画一个 Seal 图标(cel 306)

位置:

  • src/client/automap/automap-view.ts:448-457:对每个可见关卡,在 revealedRooms[0] 的中心造一个 warpMarker。
    • 'level'/'act' 模式下 revealedRooms = view.rooms(432-437),也就是第一个房间。
  • automap-view.ts:578-584:kind: wm.toAreaId === this.currentAreaId ? 'waypoint' : 'exit'。当前关卡自己的标记永远是 'waypoint',不管该关卡有没有小站。
  • automap-view.ts:586-597:view.entrances 中每个 toLevelId>0 的入口都变成 'exit' 标记。
  • src/client/ui/minimap.ts:1420-1446:'waypoint' 放进 extras 层画 cel 309;'exit' 放进 objects 层画 cel 306。
  • minimap.ts:1027:extras 层用 ignoreFogOfWar=true 绘制。
  • minimap.ts:1166-1184:已探索的 'exit' 再加白色 Font6 目的地名。

代码:

kind: wm.toAreaId === this.currentAreaId ? 'waypoint' : 'exit',      // automap-view.ts:581
if (marker.kind === 'waypoint') { extras.push({ cellNo: 309, ... }) } // minimap.ts:1424-1426

原版:

  • 小站图标来自小站地砖:automap.txt Waypoint 行 → cel 307。例如 #78、#92、#225、#329、#368、#837、#983……
  • Act5 小站来自 objects.txt AutoMap=307:Id 402/494/496/511/539,对应行 #402/#495/#497/#512/#540。V-data。
  • 只有真正存在小站的关卡才有,并且跟随迷雾揭示。
  • 出口的图形来自出口地砖本身的 automap.txt cel,不存在额外的 Seal 图标。
  • cel 309 = 水井、306 = 封印(objects.txt),见上一条。V-data。

影响:

  • 每个关卡的地图上都有一个与小站无关的水井图标(MaxiMap cel 309),开图即可见,不受迷雾限制。
  • 每个出口位置都有一个 Seal 图标。
  • 'act' 模式下,其他关卡的标记也用各自的房间坐标减去当前关卡原点来定位,位置没有意义。

建议: 删除凭空构造的 warpMarker 和 marker→cel 映射。小站、出口图标改由 automap.txt / objects.txt 的 AutoMap 列经 buildLevelAutomap 产生。

已有 issue: —

> **1.13c 客户端保真度审计立项**(基准快照:`7bd1090` / `main @ 77a20c7`) > 证据标记说明:`V-data` = 1.13c MPQ 数据表 (`.txt` / `animdata.d2` / `.tbl` / `pal.pl2`);`V-src` = D2MOO 逆向源码;`V-bin` = 1.13c DLL 反汇编;`K` = 1.13c 公认行为。 ### 来源审计项:`map#2` — [S1][R] 每个关卡都会凭空画出一个"小站"图标(cel 309,实为水井图标,无视迷雾),每个出口再画一个 Seal 图标(cel 306) **位置:** - `src/client/automap/automap-view.ts:448-457`:对每个可见关卡,在 `revealedRooms[0]` 的中心造一个 `warpMarker`。 - 'level'/'act' 模式下 `revealedRooms = view.rooms`(432-437),也就是第一个房间。 - `automap-view.ts:578-584`:`kind: wm.toAreaId === this.currentAreaId ? 'waypoint' : 'exit'`。当前关卡自己的标记永远是 'waypoint',不管该关卡有没有小站。 - `automap-view.ts:586-597`:`view.entrances` 中每个 `toLevelId>0` 的入口都变成 'exit' 标记。 - `src/client/ui/minimap.ts:1420-1446`:'waypoint' 放进 extras 层画 cel 309;'exit' 放进 objects 层画 cel 306。 - `minimap.ts:1027`:extras 层用 `ignoreFogOfWar=true` 绘制。 - `minimap.ts:1166-1184`:已探索的 'exit' 再加白色 Font6 目的地名。 **代码:** ```ts kind: wm.toAreaId === this.currentAreaId ? 'waypoint' : 'exit', // automap-view.ts:581 if (marker.kind === 'waypoint') { extras.push({ cellNo: 309, ... }) } // minimap.ts:1424-1426 ``` **原版:** - 小站图标来自小站地砖:automap.txt `Waypoint` 行 → cel 307。例如 #78、#92、#225、#329、#368、#837、#983…… - Act5 小站来自 objects.txt `AutoMap=307`:Id 402/494/496/511/539,对应行 #402/#495/#497/#512/#540。V-data。 - 只有真正存在小站的关卡才有,并且跟随迷雾揭示。 - 出口的图形来自出口地砖本身的 automap.txt cel,不存在额外的 Seal 图标。 - cel 309 = 水井、306 = 封印(objects.txt),见上一条。V-data。 **影响:** - 每个关卡的地图上都有一个与小站无关的水井图标(MaxiMap cel 309),开图即可见,不受迷雾限制。 - 每个出口位置都有一个 Seal 图标。 - 'act' 模式下,其他关卡的标记也用各自的房间坐标减去当前关卡原点来定位,位置没有意义。 **建议:** 删除凭空构造的 warpMarker 和 marker→cel 映射。小站、出口图标改由 automap.txt / objects.txt 的 `AutoMap` 列经 `buildLevelAutomap` 产生。 **已有 issue:** —
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#623
No description provided.