- Shift dash: 0.45*v*0.6 instant burst then 0.6s of 50% slow (net 95% of
walking distance); slow doubles as cooldown, no dash while idle/slowed.
- Generic ammo refills scale with the live pressure dial at 80% of the HP
multiplier via ammoPressureMul().
- Hearts at full HP stay on the floor (magnet ignores them) instead of
converting to score.
- Muzzle audit: flame FX and pellets share one right-hand origin, Spinal
Tap beam starts at the muzzle, saw flash suppressed (blade sparks are
the effect).
- Debug REFILL/INF AMMO and the ammo row now cover a spent special
holstered behind the Bone Popper.
- Sfx.duck() defaults its args; a no-arg call crashed the loop with a
non-finite AudioParam value (found via the dash E2E).
- Every special weapon gets an explicit 'refill' (units per ammo pickup,
tuned so one pickup funds ~10 kills) replacing the ammoRefillFraction
log2 heuristic and ammoWeight overrides
- Bile Blunderbuss + The Cauterizer join Red Right Hand as time-denominated
stream weapons ('drain' per second) instead of per-shot cost
- Sawblades ricochet through enemies (bounce fix), traps catch 3 victims,
lobbed projectiles arc overhead and always trigger at the target point
(Flesh Masher / Trap Queen / Swarm Jar payloads now actually deploy)
- Boss rooms stock one ammo on entry and drop one guaranteed on death
- Cauterizer burn trimmed (2.2s x2 -> 1.5s x0.8), bile acid pools trimmed
(3.5s x1.5 -> 2.5s x0.8), Marrow Draught now covers stream drain
- New tools/ammo_sim.js calibrates every weapon into the 8-13 kills/refill
band (all 15 pass); smoke test guards the ammo structure
- v0.3.0, cache bump v=44
- AMMO_REFILL_SCALE 0.75 on ammoRefillFraction (smaller refills)
- AMMO_DROP_SCALE 0.75 on all three ammo spawn sites (room clear, elite,
normal kill); help/gameplay drop-rate text updated; cache v=41