[Parity][motion-input][S1][R] 选中单位按"地面落点 2.5 子格欧氏半径"判断,而且地面物品无条件优先 #582

Closed
opened 2026-10-02 11:42:41 +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 公认行为。

来源审计项:motion-input#2 — [S1][R] 2. 选中单位按"地面落点 2.5 子格欧氏半径"判断,而且地面物品无条件优先

  • 位置:command-mapper.ts:225-241(resolvePointerTarget,默认 hitRadiusSubtiles = 2.5),:247-287(pickUnitAtSubtile::253-263 先查物品,命中就直接返回;:265-284 再查怪物、物体、传送口、玩家)
  • 代码:resolvePointerTarget(screenX, screenY, hitRadiusSubtiles = 2.5);if (bestUnit) return bestUnit(物品优先)
  • 原版:D2Client 用单位当前 DCC/DC6 帧在屏幕上的包围盒做命中,光标落在精灵身上就算选中,和地面落点离脚底多远无关(K-高;具体函数本地未逆向)。
  • 影响:子格投影是 32×16 px。光标放在怪物脚底上方约 50 px(普通怪物的躯干位置)时,地面落点已经偏出约 dx+dy≈6 子格,超过 2.5,选不中,点击就变成走路。高大的怪物和 NPC 只有点脚下才有效。怪物脚边有掉落物时,点怪物会变成捡东西。悬停名牌(#559)也依赖这套选择逻辑。
  • 建议:按单位当前帧的屏幕包围盒(DCC 帧框加偏移)命中,按原版绘制层级和优先级挑选(光标下最上层的精灵优先;Alt 标签另外处理)。
  • 已有 issue:和 #559(名牌)、#555(拾取)部分相关,但两者都没指出选择算法本身的问题。
> **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 公认行为。 ### 来源审计项:`motion-input#2` — [S1][R] 2. 选中单位按"地面落点 2.5 子格欧氏半径"判断,而且地面物品无条件优先 - 位置:`command-mapper.ts:225-241`(`resolvePointerTarget`,默认 `hitRadiusSubtiles = 2.5`),`:247-287`(`pickUnitAtSubtile`:`:253-263` 先查物品,命中就直接返回;`:265-284` 再查怪物、物体、传送口、玩家) - 代码:`resolvePointerTarget(screenX, screenY, hitRadiusSubtiles = 2.5)`;`if (bestUnit) return bestUnit`(物品优先) - 原版:D2Client 用单位当前 DCC/DC6 帧在屏幕上的包围盒做命中,光标落在精灵身上就算选中,和地面落点离脚底多远无关(K-高;具体函数本地未逆向)。 - 影响:子格投影是 32×16 px。光标放在怪物脚底上方约 50 px(普通怪物的躯干位置)时,地面落点已经偏出约 dx+dy≈6 子格,超过 2.5,选不中,点击就变成走路。高大的怪物和 NPC 只有点脚下才有效。怪物脚边有掉落物时,点怪物会变成捡东西。悬停名牌(#559)也依赖这套选择逻辑。 - 建议:按单位当前帧的屏幕包围盒(DCC 帧框加偏移)命中,按原版绘制层级和优先级挑选(光标下最上层的精灵优先;Alt 标签另外处理)。 - 已有 issue:和 #559(名牌)、#555(拾取)部分相关,但两者都没指出选择算法本身的问题。
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#582
No description provided.