47 Commits
Author SHA1 Message Date
Quintine 988e04b2d4 0.9.3
Restore 2D 0.9.2, ignore Meshy refs, double Spinal Tap, Marrow Draught beam ammo, Second Stomach hearts fill overflow shields.
2026-08-14 23:31:39 +10:00
Quintine c41ce5fdb0 fix: persistent mute toggle, 25%/floor shield regen, halved pressure relief, shielded hits no relief, drop Scavenger perk (0.9.2) 2026-08-13 17:24:27 +10:00
Quintine 683e7a47ec revert: restore original dash length and post-dash slow 2026-08-13 16:21:25 +10:00
Quintine 85238be844 feat: clickable pause buttons, 2x dash with 30% slow, cleaver melee sweep 2026-08-13 13:50:50 +10:00
Quintine d60baa6b29 perf: cache static walls, fast-path sprite draws, cache canvas rect (0.9.1, v57) 2026-08-13 13:11:16 +10:00
Quintine 8c2141c3f1 perf: decode-ahead sprite cache; cache bust v56
Sprites.load() now awaits img.decode() before a tier image counts as
ready, so every sprite is fully decoded during the title screen and
first-draw decode jitter disappears on weak machines. Headless smoke
keeps working via the typeof-decode fallback. Asset URLs bump to v=56.
2026-08-12 18:05:11 +10:00
Quintine 4b9e4a1e97 feat: dash ability; ammo pressure scaling, full-HP hearts, muzzle alignment, holstered debug ammo
- 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).
2026-08-12 18:04:58 +10:00
Quintine 6b4e7091a9 release: bump to 0.8.0 (HD Remaster) with docs, cache bust, and smoke coverage
Cache-bust v=54 -> v=55 across index.html and sfxbank.js, bump the game
version to 0.8.0, document the HD Remaster setting in gameplay.md and the
changelog, and extend the smoke suite with 4x sheet-geometry bounds checks,
HD loader fallback URL assertions, and toggle persistence/reload checks.
2026-08-12 10:11:23 +10:00
Quintine c09a66ae9e feat: tiered sprite loader with per-sprite SD fallback
Sprites.load() serves assets/hd/<name>.webp in HD mode and falls back once
to the SD PNG per sprite; sheet frame sizes derive from sheet geometry
(width/8 for actor and legs sheets, height for the one-row death strip) so
both tiers address correctly.
2026-08-12 10:04:49 +10:00
Quintine ea354d0153 feat: HD Remaster toggle with 4x canvas render path
G.hdRemaster persisted in localStorage (meatslicer_hd_remaster), toggled
from the title screen via H key or the bottom-left tag; activation reloads
so the asset tier and canvas resolution swap at boot. draw() applies a
uniform hdScale() transform, the room-layer cache renders at render scale,
and image smoothing follows the tier.
2026-08-12 10:04:49 +10:00
Quintine 50826d568d docs: sync gameplay/items/perks/weapons with 0.7.0 QoL batch; release: bump to 0.7.2 2026-08-11 19:31:28 +10:00
Quintine c0d909eebd release: bump game and memory versions to 0.7.0 2026-08-11 19:06:36 +10:00
Quintine 717a106119 feat: peek big-room camera toward walls, shorten perk-selection guard to 0.4s 2026-08-11 19:03:36 +10:00
Quintine b41dcd8ebb feat: QoL weapon/UI batch — door fix, Red Right Hand + flamethrower right-offset, fire slowdown, literal armor dodge, persistent pedestals, menu shot-lock 2026-08-11 18:25:34 +10:00
Quintine d9a921a1ea Merge commit integrating big-rooms + linux-and-qol (keep both features) 2026-08-11 17:35:02 +10:00
Quintine 16efccd912 release: bump game and memory versions to 0.6.0 (big rooms) 2026-08-11 08:56:33 +10:00
Quintine 96815f6685 feat: big rooms with Isaac-style camera, extra-large and odd rooms 2026-08-11 08:56:33 +10:00
Quintine 5d5eb3d265 feat: room-entry reaction buffer, 1.5s perk-selection lock, nearby-item toasts, Sine Weave stagger perk 2026-08-10 18:31:36 +10:00
Quintine f77b4fd402 feat: crimson metronome lends ½ heart, repaid on a clean room clear 2026-08-09 14:22:26 +10:00
Quintine e801c02ef6 feat: 2.5s lockout before dropped weapons can be re-picked 2026-08-09 13:56:41 +10:00
Quintine 7aee2f5f64 fix: don't fire weapon when choosing upgrade from level-up menu 2026-08-09 13:56:38 +10:00
MeatSlicer Developer a7e48a0465 Document debug console in help manual and README 2026-07-31 09:30:26 +10:00
MeatSlicer Developer 3f76998fab Add hidden dev debug console (v0.5.0) 2026-07-31 08:49:39 +10:00
MeatSlicer Developer b8b5c360f2 Disable desktop exit in browsers 2026-07-30 23:48:49 +10:00
MeatSlicer Developer 92491dd06e Seal boss stairs after victory 2026-07-30 23:37:26 +10:00
MeatSlicer Developer d96d492a43 Polish pause actions and duplicate weapons 2026-07-30 22:57:36 +10:00
MeatSlicer Developer 3e603c349d Document v0.4.0 expansion 2026-07-30 22:47:39 +10:00
MeatSlicer Developer 74edcf5491 Add five pressure-monster archetypes 2026-07-30 22:44:15 +10:00
MeatSlicer Developer 61a41049f2 Expand pressure dial to twenty-one notches 2026-07-30 22:32:16 +10:00
MeatSlicer Developer 11f9341b46 Add variable room shapes and themes 2026-07-30 22:29:04 +10:00
MeatSlicer Developer 0eab705ed3 Add locked gore death and enemy health pips 2026-07-30 22:18:44 +10:00
MeatSlicer Developer 2f1769a528 Add confirmed menu and desktop exits 2026-07-30 22:11:11 +10:00
MeatSlicer Developer d9eae34df4 Normalize ammo economy: per-weapon refill, stream drain, behavior fixes
- 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
2026-07-30 22:06:10 +10:00
MeatSlicer Developer 7d33e36c1e v0.2.0: item pickups hold their toast for 5.5s
Toast durations are now per-toast (addToast third arg); passive item and
active item pickups display for 5.5s instead of the default 2.5s.
Cache v=43.
2026-07-30 17:49:14 +10:00
MeatSlicer Developer 64ac53434b Doom-style weapon audio batch + remove footsteps
- Regenerated all 13 weapon fire one-shots and 4 weapon loops via the audio
  specialist (ElevenLabs) with a 1993 Doom style brief: chunky, bass-heavy,
  crunchy 90s FPS sounds
- New clips wired into SfxBank: ui_active, ui_active_empty (active items),
  ui_curse (legendary pickups, replaces the normal item jingle), plr_revive
  (Second Skin revive)
- Footstep system removed entirely (never worked right): Sfx.footstep, 8
  plr_step* samples and bank entries, player.js call site, smoke test block
- Cache v=42
2026-07-30 17:41:31 +10:00
MeatSlicer Developer 4dad22d087 Ammo economy: 25% less ammo per box, 25% fewer ammo drops
- 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
2026-07-30 17:18:11 +10:00
MeatSlicer Developer 0ec12cd72c Phase 5: active items — room-clear charged, dedicated pedestals, Space to use
- ACTIVES table with 10 actives (Bone Nova, Offal Bomb, Blood Transfusion,
  Cleaver Storm, Butcher's Bell, Marrow Draught, Slaughter Time, Panic Room,
  Skinner's Coin, Gut Reroll); charges accrue +1/combat room, +2/boss
- Dedicated 'active' pickup with weapon-style swap-drop; 30% boss / 15% item-room
  bonus pedestal spawns; flat +2 powerScore while held
- HUD active slot with charge pips + READY state; ACTIVES help page (12 pages);
  teal medallion frame variant in draw_sprites.py; 10 generated icons
- Procedural Sfx.active()/activeEmpty() (real clips deferred to audio batch)
- Fix: toast panel width now fits the wider of title/subtitle and clamps to screen
- Bump asset cache to v=40
2026-07-30 17:14:25 +10:00
MeatSlicer Developer f71d202850 Rebalance weapon tiers via quantitative DPS/range/accuracy/pool scoring
tools/score_weapons.js ranks the arsenal with a behavior-aware model:
effective DPS (bounce/boomerang/AoE/DoT multipliers), real engagement range,
spread-based accuracy, and damage pool per ammo load. Tier moves:
- Cleaver Cadence 0->1 (440px range + return re-hit outguns the starters)
- Bile Blunderbuss 1->2 (134 effDPS + slow + pools is secretly a heavy)
- The Cauterizer 2->3 (252 effDPS, highest sustained DPS in the game)
- The Tenderizer 2->3 (134 effDPS AoE, outscores Spinal Tap)

Tiers now: T0 repeater/marrow, T1 cleaver/saw/hemophage/eye,
T2 bile/guthook/fleshmasher/trapqueen/redhand, T3 cauterizer/tenderizer/
spinaltap/swarmjar. Smoke test pins the 2/4/5/4 distribution.
2026-07-30 16:35:21 +10:00
MeatSlicer Developer d5b1828df4 Fix help manual layout: shrink tabs to fit panel, space implant rows
- 10+ tabs at fixed 108px overflowed the 920px panel; tabs now shrink to fit
- Implant rows grew a rarity/cap sub-line but kept 20px spacing; now 26px
  with 10 rows per column (20 items/page, 5 pages for 82 items)
- Bump asset cache to v=39; smoke test asserts tabs stay on-screen
2026-07-30 16:17:20 +10:00
MeatSlicer Developer f9552326c2 Phase 4: 10 boss-exclusive legendaries + ammo/HP balance fixes
Legendaries (cap 1, boss-only): Butcher's Oath, Second Skin, Twin Sidearm,
Crimson Metronome, Abattoir Engine, Gore Crown, Thousand Teeth, Hollow Father,
The Last Cut, Meat Grinder. Once-per-floor flags reset in nextFloor.

Balance fixes: Ghoul Heart now +4 HP (2 full hearts); Brass Magazine ammo
efficiency uses the same diminishing additive formula as Scrap Feed.
2026-07-30 16:06:20 +10:00
MeatSlicer Developer a93802ebd9 Phase 3: 12 hook passives with conditional damage, auras, and kill/room effects
- dmgLiveMul live damage channel wired into fireWeapon, sawTick, fireBeam, orbitals
- Dead Weight (execute), Cauterized Veins (burn bonus), Pain Engine, Iron Lung,
  Slaughter Rhythm, Hollow Choir, Sawbone Coil, Glutton's Gut, Thresher Plate,
  Blood Moat, Meat Hook, Blood Debt
- Iron Lung re-armed per room in enterRoom; Slaughter Rhythm stamps kills
- Targeted smoke tests for the five stat-conditional effects; icons + docs
2026-07-30 15:44:31 +10:00
MeatSlicer Developer 4f46d54e99 Item system overhaul: rarity bands, per-item caps, source pools + 14 new passives
- Add ITEM_RARITY (common/uncommon/rare/legendary) with per-item tier caps
- Weighted pools per source: elites favour common, item rooms uncommon,
  bosses rare/legendary; legendaries are boss-exclusive; capped items excluded
- Rarity-weighted powerScore so deep common stacks inflate difficulty less
- Differentiate duplicates: Grafted Trigger, Crow Bait, Hollow Bones, Twin Hearts
- 14 new clean passives incl. Chill Gland (activates slowOnHit) and Hooked Sinew
  (activates magnetPull); revive magnetPull in pickups
- Rarity-tinted pedestal glow + nameplates, rarity-sorted HUD implant tray,
  dynamic help implant pages (8 -> 9)
- Generate 14 item icons via gen_assets.py; bump asset cache to v=38
- Update smoke tests for 60 items, per-item caps, pools, weighted power
2026-07-30 15:21:02 +10:00
MeatSlicer Developer a02cff52cf Add pressure dial, wave spawn telegraphs, and readability pass
- Bigger gore-red Minis (r10->14, sprite 32->48) with regenerated art
- Wider, walkable doorways: clear passage for open, teeth only when locked
- 500ms spawn telegraph so wave spawns no longer blindside the player
- Item stickiness ramps 10%/owned item (cap 50%) instead of flat 50%
- Title-screen Pressure Dial (-5..+5) tunes rise/relief; score x live pressure
- Vitals HUD: two-row hearts, half-container outlines, half-heart shield pips
- Readable 8-page field manual (bigger panel + fonts, implants split)
- HUD opacity slider in pause menu (boss bar + toasts stay opaque)
- Scrap Feed now has diminishing returns like Thick Hide
- Docs, cache-bust v37, and smoke coverage for all of the above
2026-07-30 00:01:06 +10:00
MeatSlicer Developer 3f856e416a Add in-game field manual on the pause screen
A [?] HELP button (or H key) on the pause screen opens a seven-page
technical manual: controls, run loop, arsenal, mutations, implants,
bestiary and pressure/defense math. List pages render live from the
WEAPONS/ITEMS/PERKS/ENEMY_TYPES/BOSS_DEFS tables so values never drift.
Also unifies the sfxbank fetch cache-buster with the v36 bump.
2026-07-29 21:35:52 +10:00
MeatSlicer Developer 8cf9932999 Make Bone Knit a chance-based room heal
The perk now grants a 3% roll per stack to mend half a heart on combat
room clears instead of a guaranteed heal. Worm Gut's guaranteed room
heal is unchanged; the new roomHealChance stat is separate.
2026-07-29 20:50:08 +10:00
MeatSlicer Developer 9ba0e22ce5 Add generated perk and item icons 2026-07-29 19:24:11 +10:00
MeatSlicer Developer 8ab0857ee0 Add adaptive progression and item expansion 2026-07-29 18:30:21 +10:00