diff --git a/docs/README.md b/docs/README.md index 8b6b211..de11f10 100644 --- a/docs/README.md +++ b/docs/README.md @@ -14,12 +14,7 @@ MeatSlicer is an endless top-down arena roguelite. You are the Butcher, descendi | [Perks](perks.md) | All 23 Mutation Draft perks, XP curve, draft mechanics | | [Enemies](enemies.md) | All 11 enemy types, elites, drops, wave and scaling formulas | | [Bosses](bosses.md) | All 9 bosses: rotation, scaling, full attack patterns, counters | - -For developers: - -| Doc | Contents | -|---|---| -| [Debug Console](dev-debug.md) | Hidden dev-only cheat/inspection toolset (backtick `` ` `` key, `--dev` flag): all 8 tabs, run tainting, stat-rebuild internals | +| [Debug Console](dev-debug.md) | In-game cheat/inspection toolset (backtick `` ` `` key, `--dev` flag): all 8 tabs, run tainting, stat-rebuild internals | | [Changelog](CHANGELOG.md) | Release history by version | ### Quick numbers @@ -64,6 +59,15 @@ npm test Runs the smoke test (`test/smoke.js`). +### Debug console + +An in-game cheat/inspection panel is available in dev builds. Launch with the +dev flag โ€” `MeatSlicer.exe --dev`, `npm start -- --dev`, or `play-dev.bat` / +`http://localhost:8123/?dev=1` in a browser โ€” then press the **backtick `` ` ``** +key in play or pause. Eight tabs cover health, weapons, items, perks, pressure, +spawning enemies/bosses, timescale, visualizers, and a live stats readout. Using +mutating actions voids the run's best score. See [Debug Console](dev-debug.md). + ## Tech overview - **Stack:** plain JavaScript + HTML5 canvas, no framework. Electron wrapper for desktop. diff --git a/docs/dev-debug.md b/docs/dev-debug.md index f7da314..a2afc81 100644 --- a/docs/dev-debug.md +++ b/docs/dev-debug.md @@ -1,7 +1,8 @@ -# Debug Console (dev only) +# Debug Console -A hidden in-game cheat / inspection toolset. Not linked from the player-facing -help manual โ€” it is meant to stay undiscovered in normal play. +An in-game cheat / inspection toolset. It is gated behind a dev launch flag so +it doesn't interfere with normal play, and it's documented here because the +game is still in development โ€” testers and players are welcome to use it. ## Enabling it diff --git a/index.html b/index.html index 3cef805..2e8a8c0 100644 --- a/index.html +++ b/index.html @@ -6,32 +6,32 @@ MEATSLICER - +
- - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + diff --git a/js/help.js b/js/help.js index 7b9c699..af06aec 100644 --- a/js/help.js +++ b/js/help.js @@ -105,6 +105,10 @@ function drawHelpControls(ctx, px, py) { 'ENTER / SPACE / CLICK โ€” START RUN ยท R / ENTER โ€” RESTART AFTER DEATH', 'PICKUPS ARE COLLECTED BY WALKING OVER THEM โ€” NO INTERACT KEY', ] }, + { head: 'DEBUG CONSOLE (DEV BUILD)', lines: [ + '` / ~ โ€” CHEAT & INSPECTION PANEL ยท ENABLE WITH --dev OR ?dev=1', + 'SET STATS / ITEMS / PRESSURE, SPAWN ENEMIES & BOSSES โ€” SEE docs/dev-debug.md', + ] }, ], HELP_PANEL.w - 80); } diff --git a/js/sfxbank.js b/js/sfxbank.js index 8ef54b2..2ad8586 100644 --- a/js/sfxbank.js +++ b/js/sfxbank.js @@ -111,7 +111,7 @@ const SfxBank = { if (this.buffers.has(name) || this.pending.has(name) || this.failed.has(name)) return; const file = this.FILES[name]; if (!file || !this.ctx || typeof fetch !== 'function') return; - const job = fetch('/assets/sfx/' + encodeURIComponent(file) + '?v=49') + const job = fetch('/assets/sfx/' + encodeURIComponent(file) + '?v=51') .then(r => { if (!r.ok) throw new Error('HTTP ' + r.status); return r.arrayBuffer(); }) .then(bytes => this.ctx.decodeAudioData(bytes)) .then(buffer => this.buffers.set(name, this.trim(buffer))) diff --git a/js/sprites.js b/js/sprites.js index 8b3eef0..a5d87e3 100644 --- a/js/sprites.js +++ b/js/sprites.js @@ -86,7 +86,7 @@ const Sprites = { const img = new Image(); img.onload = () => { this.imgs[name] = img; if (--pending === 0) G.imagesLoaded = true; }; img.onerror = () => { if (--pending === 0) G.imagesLoaded = true; }; - img.src = 'assets/' + name + '.png?v=49'; + img.src = 'assets/' + name + '.png?v=51'; } },