[P2][D16] 拾取校准:pickupRadius 对齐 1.13c + 药水优先自动入腰带 #425

Closed
opened 2026-09-24 03:25:59 +00:00 by troytt · 1 comment
Owner

现状

  1. src/scene/act-scene.ts:5047 设置 pickupRadius: 64,需与 1.13c 实际拾取距离对齐后确认。
  2. src/scene/act-scene.ts:2334 拾取后直接调 inventory.autoPlaceInGrid(item),
    药水不会优先进腰带。

1.13c 真实行为

  • 拾取判定基于物品碰撞盒的固定像素距离(需以 1.13c 反编译取值为准,勿凭感觉设常量)。
  • 拾取药水时,引擎先尝试放入腰带中同类药水所在列的空槽,失败再尝试任意空列,最后才进背包格。
  • 背包也满时给出「背包已满」提示(M10 的 #392 已实现反馈动画)。

验收标准

  • 从 1.13c 取得拾取半径真值并落为带注释的常量(禁止拍脑袋数字)。
  • 实现腰带优先入位:同类列 → 任意空列 → 背包格 → 拒收。
  • vitest:覆盖 同类列优先、腰带满溢出到背包、背包也满时拒收并触发反馈。
## 现状 1. `src/scene/act-scene.ts:5047` 设置 `pickupRadius: 64`,需与 1.13c 实际拾取距离对齐后确认。 2. `src/scene/act-scene.ts:2334` 拾取后直接调 `inventory.autoPlaceInGrid(item)`, 药水不会优先进腰带。 ## 1.13c 真实行为 - 拾取判定基于物品碰撞盒的固定像素距离(需以 1.13c 反编译取值为准,勿凭感觉设常量)。 - 拾取药水时,引擎先尝试放入腰带中**同类药水所在列**的空槽,失败再尝试任意空列,最后才进背包格。 - 背包也满时给出「背包已满」提示(M10 的 #392 已实现反馈动画)。 ## 验收标准 - [ ] 从 1.13c 取得拾取半径真值并落为带注释的常量(禁止拍脑袋数字)。 - [ ] 实现腰带优先入位:同类列 → 任意空列 → 背包格 → 拒收。 - [ ] vitest:覆盖 同类列优先、腰带满溢出到背包、背包也满时拒收并触发反馈。
troytt added this to the [M18] 打怪掉落物品:怪物死亡掉落全链路 1.13c 还原 milestone 2026-09-24 03:25:59 +00:00
Author
Owner

Resolution Summary (Issue #425 — Commit 9022579)

  • Aligned item pickup reach to 1.13c 2-subtile collision box edge distance (D2_PICKUP_SUBTILE_REACH_PX = 64) in src/game/ground-items.ts, src/game/engine.ts, and src/scene/act-scene.ts.\n- Implemented 2-pass BeltHud.autoPlacePotion (INVENTORY_GetFreeBeltSlot 0x6fd90d40) in src/ui/belt.ts.

  • Verification: npx tsc --noEmit (0 errors), full Vitest drop/combat/item/E2E parity suites (100% pass), and scripts/verify-m5.ts / scripts/verify-net.ts (0 problems).

### Resolution Summary (Issue #425 — Commit `9022579`) - Aligned item pickup reach to 1.13c 2-subtile collision box edge distance (`D2_PICKUP_SUBTILE_REACH_PX = 64`) in `src/game/ground-items.ts`, `src/game/engine.ts`, and `src/scene/act-scene.ts`.\n- Implemented 2-pass `BeltHud.autoPlacePotion` (`INVENTORY_GetFreeBeltSlot` `0x6fd90d40`) in `src/ui/belt.ts`. - **Verification**: `npx tsc --noEmit` (0 errors), full Vitest drop/combat/item/E2E parity suites (100% pass), and `scripts/verify-m5.ts` / `scripts/verify-net.ts` (0 problems).
Sign in to join this conversation.
No Label
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#425
No description provided.