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).
Context
Found by reverse-engineering the actual LR2 (LR2body.exe, beta3)
history.txtchangelog 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."
No later changelog entry changes this, so PGREAT is LR2's final mine press window.
Current behavior
processLandminePassageinpackages/player/src/core/engine.tsdetonates 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
judgeWindows.good. The judge-window resolver already exposespgreat; thread it into the mine passage processor.docs/player-spec.md/docs/bms-spec.md(+.ja.md).