Skip to content

Mine press-detonation window should be the PGREAT range, not GOOD (LR2) #141

@nulltask

Description

@nulltask

Context

Found by reverse-engineering the actual LR2 (LR2body.exe, beta3) history.txt changelog during the LR2-alignment work. Refines the mine model landed in commit d0bb321 (A-3).

First-party evidence

LR2 changelog history.txt, the original mine-implementation entry (080114):

まさかの地雷実装。キー押したまま地雷通過、もしくはピカグレ範囲内でキーを押すと爆発します。

Translation: "Mine implementation. A mine explodes when you pass through it while holding the key, or when you press the key within the PIKAGRE (PGREAT) range."

  • Hold-through detonation: matches our implementation. ✓
  • Press detonation window: LR2 uses the PGREAT window, not GOOD. ✗

No later changelog entry changes this, so PGREAT is LR2's final mine press window.

Current behavior

processLandminePassage in packages/player/src/core/engine.ts detonates a held/pressed mine within the GOOD window (judgeWindows.good). That is far too wide (GOOD is ±40–120ms depending on rank vs PGREAT ±8–21ms).

Note on the source conflict

The wave-3 implementation followed losak's secondary writeup ("GOOD・GREATで爆発"), which disagrees with LR2's own changelog (PGREAT). The primary source (LR2 changelog) should win; losak may have tested a different LR2 build.

Fix

  • Use the PGREAT window for the press/hold detonation range instead of judgeWindows.good. The judge-window resolver already exposes pgreat; thread it into the mine passage processor.
  • Update the mine tests (the "press outside the GOOD window" / hold-through cases) and the mine sections in docs/player-spec.md / docs/bms-spec.md (+ .ja.md).

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions