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
This commit is contained in:
1 parent
d255be5e39
commit
a02cff52cf
24 files changed
+667
-201
No files matched your search
+1
-1
@@ -66,4 +66,4 @@ Runs the smoke test (`test/smoke.js`).
|
||||
|
||||
## The fantasy in one paragraph
|
||||
|
||||
Rooms lock behind you. The meat waves come in threes. Elites gleam gold and drop the good stuff. The Pressure gauge climbs the longer you stay flawless, and every boss — saw, crown, mother, flenser, choir, father, auger, scald — cycles back around, deeper and meaner, until the meat finally wins. Take the meat. Take the stairs.
|
||||
Rooms lock behind you. The meat waves come in threes. Elites gleam gold and drop the good stuff. Set the Pressure Dial before you descend — the gauge climbs the longer you stay flawless, and every point of score rides it. Every boss — saw, crown, mother, flenser, choir, father, auger, scald — cycles back around, deeper and meaner, until the meat finally wins. Take the meat. Take the stairs.
|
||||
+7
-3
@@ -65,11 +65,11 @@ Chaser that **splits into 2 Minis on death** (non-elite Splitters only). Slightl
|
||||
| Base HP | 6 |
|
||||
| Base speed | 120 |
|
||||
| Contact damage | 1 |
|
||||
| Hitbox radius | 10 |
|
||||
| Hitbox radius | 14 |
|
||||
| XP | 1 |
|
||||
| First appears | Only from Splitter deaths and boss summons |
|
||||
|
||||
Tiny, quick chaser with a small hitbox. Never spawns directly from room waves.
|
||||
Small, vicious gore-red chaser. Never spawns directly from room waves. Splitter splits and boss summons appear instantly; room-wave enemies telegraph first (see below).
|
||||
|
||||
### Exploder
|
||||
|
||||
@@ -135,7 +135,11 @@ base speed × (1 + 0.04 × (floor − 1) + 0.01 × power) × (elite ? 0.9 : 1)
|
||||
|
||||
**Contact damage:** flat per type (elites +1) — it **never scales with floor**. What kills you late-game is volume, speed, and HP pools, not bigger hit numbers.
|
||||
|
||||
**Pressure** (see [gameplay.md](gameplay.md#pressure-dynamic-difficulty)) ranges 0.75–1.60 and multiplies both HP and speed. Playing flawlessly pushes it up; getting hit pulls it down.
|
||||
**Pressure** (see [gameplay.md](gameplay.md#pressure-dynamic-difficulty)) ranges 0.75–1.60 and multiplies both HP and speed. Playing flawlessly pushes it up; getting hit pulls it down. The title-screen **Pressure Dial** (−5…+5) tunes how fast it rises per clean room and how much relief each hit grants — and every point of score is multiplied by the live pressure value.
|
||||
|
||||
### Wave spawn telegraph
|
||||
|
||||
When a combat-room wave spawns, each enemy first appears as a **pulsing red sigil** for 0.5 s — frozen, harmless, but targetable. After the telegraph it materializes and becomes dangerous. Splitter splits and boss-summoned minions appear instantly (no telegraph).
|
||||
|
||||
### Example: Floor 10 Shambler
|
||||
|
||||
|
||||
+25
-10
@@ -72,9 +72,11 @@ Your best score is saved in `localStorage` as `meatslicer_best` and shown on the
|
||||
|---|---|
|
||||
| **- / =** | SFX volume down / up |
|
||||
| **, / .** | Music volume down / up |
|
||||
| **; / '** | HUD opacity down / up (25%–100%) |
|
||||
| **[ / ]** or **Left / Right arrows** | Previous / next music track |
|
||||
| **Click arrows** | Cycle music tracks |
|
||||
| **H / [?] button** | Open the Field Manual (7 pages: controls, loop, arsenal, mutations, implants, bestiary, pressure) |
|
||||
| **Drag sliders** | SFX / Music / HUD opacity bars are click-and-drag |
|
||||
| **H / [?] button** | Open the Field Manual (8 pages: controls, loop, arsenal, mutations, implants I, implants II, bestiary, pressure) |
|
||||
|
||||
### Menus
|
||||
|
||||
@@ -106,7 +108,7 @@ Right-click is disabled (context menu suppressed). There is **no dash, no intera
|
||||
|
||||
- Every hit taken deals a **minimum of 1 damage** (`max(1, round(dmg))`).
|
||||
- **Armor** gives a chance to completely ignore a hit: block chance = `armor / (1 + armor)`, capped at 75%. A blocked hit shows "BLOCKED" and grants only 0.2 s of invulnerability.
|
||||
- **Shield hearts** (cyan pips) absorb damage before real HP. They come from the Bone Plate item and Shield Heart perk, and are refilled to full at the start of each floor. Losing your last shield pip triggers a "SHIELD DOWN" warning.
|
||||
- **Shield hearts** (cyan) absorb damage before real HP. They come from the Bone Plate item and Shield Heart perk, and are refilled to full at the start of each floor. Losing your last shield triggers a "SHIELD DOWN" warning. On the HUD they render at half-heart granularity — **2 shield HP = one full cyan heart**, matching red hearts (2 HP = 1 heart).
|
||||
- Getting hit knocks you back 14 px, shakes the screen, and flashes a red vignette.
|
||||
|
||||
### Healing
|
||||
@@ -207,15 +209,25 @@ Clearing a combat room drops:
|
||||
|
||||
## Pressure (Dynamic Difficulty)
|
||||
|
||||
The **PRESSURE** meter on the HUD is a run-long adaptive difficulty multiplier applied to enemy and boss **HP and speed at spawn time**:
|
||||
The **PRESSURE** meter on the HUD is a run-long adaptive difficulty multiplier applied to enemy and boss **HP and speed at spawn time**. It also **multiplies every point of score you earn** — the higher the pressure, the more each kill, room, and floor is worth.
|
||||
|
||||
- Range: **0.75 – 1.60** (starts at 1.00).
|
||||
- **+0.01** for every room cleared **without taking damage** (flawless streak).
|
||||
- Gains for rooms cleared **without taking damage** (flawless streak).
|
||||
- Taking damage **relieves** pressure, scaled by how big the hit was, how low your HP is, and how many recent hits you've taken.
|
||||
- Decays passively at 0.02/s while below 35% HP, or 0.008/s if you stall in a room for 90+ seconds.
|
||||
- Decays passively while below 35% HP, or if you stall in a room for 90+ seconds.
|
||||
- Only affects enemies spawned *after* the change — living enemies keep their stats.
|
||||
|
||||
In short: playing flawlessly slowly raises the heat; getting hurt cools things down.
|
||||
### The Pressure Dial
|
||||
|
||||
The title screen has a **PRESSURE DIAL** (−5 … +5) that tunes how pressure responds. It sets two curves — how fast pressure **rises** per clean room, and how much **relief** each hit grants (which also scales the passive decay). The midpoint (0) is the standard tuning; the dial persists between sessions.
|
||||
|
||||
| Dial | Rise / clean room | Relief on hit (base) | Behaviour |
|
||||
|---|---|---|---|
|
||||
| **−5** | 0 | 0.050 (max) | Mercy — pressure can only ever fall; score capped at 1.00× |
|
||||
| **0** | +0.010 | 0.030 | Standard — today's balance |
|
||||
| **+5** | +0.050 | 0 (none) | Ratchet — pressure can only ever rise; score floored at 1.00× |
|
||||
|
||||
Values between the ends interpolate linearly (rise: 0→1→5 units; relief: 5→3→0 units, 1 unit = 0.01). At −5 pressure never rises so your score multiplier stays ≤ 1.00×; at +5 it never falls, so pressure climbs to the 1.60× cap and your score climbs with it. **Cranking the dial up is how you chase the BEST CUT.**
|
||||
|
||||
### Streak
|
||||
|
||||
@@ -239,10 +251,11 @@ Full formulas are in [enemies.md](enemies.md) and [bosses.md](bosses.md).
|
||||
|
||||
## HUD Reference
|
||||
|
||||
- **Top-left — BUTCHER // VITALS:** level, hearts (red) and shield hearts (cyan), XP bar, active weapon + ammo (red when below 25%), holstered weapon with `[R]` swap hint.
|
||||
- **Top-left — BUTCHER // VITALS:** level, hearts (red, 2 HP per heart; half containers render as half outlines) and shield hearts (cyan, 2 shield HP per heart), shown on up to two rows, XP bar, active weapon + ammo (red when below 25%), holstered weapon with `[R]` swap hint.
|
||||
- **Item tray** (below vitals): up to 24 item icons with tier numerals I–IX.
|
||||
- **Top-right — SECTOR MAP:** minimap. White = current room, red = boss, gold = item, gray = cleared, maroon = uncleared. Includes floor number.
|
||||
- **Bottom-right — RUN DATA:** floor, kills, score, PRESSURE %, STREAK, pressure bar.
|
||||
- **Bottom-right — RUN DATA:** floor, kills, score (with the live pressure multiplier), PRESSURE % (with the dial setting), STREAK, pressure bar.
|
||||
- **HUD opacity** is adjustable from the pause menu (`;` / `'` or the HUD slider, 25%–100%). The boss HP bar and toast notifications always stay fully opaque.
|
||||
- **Bottom-center:** boss HP bar (during boss fights).
|
||||
- **Top-center:** toast notifications (pickups, floor intros, boss events).
|
||||
|
||||
@@ -250,8 +263,8 @@ Full formulas are in [enemies.md](enemies.md) and [bosses.md](bosses.md).
|
||||
|
||||
| Screen | What it offers |
|
||||
|---|---|
|
||||
| **Title** | INITIATE DESCENT, control reference, best score |
|
||||
| **Pause** | Jukebox (track cycling), SFX/music volume, resume/swap/auto/mute hints, Field Manual (`H` / `?` button) |
|
||||
| **Title** | INITIATE DESCENT, PRESSURE DIAL (−5…+5), control reference, best score |
|
||||
| **Pause** | Jukebox (track cycling), SFX/music volume + HUD opacity sliders, resume/swap/auto/mute hints, Field Manual (`H` / `?` button) |
|
||||
| **Mutation Draft** | 3 perk cards, random cut, reroll, auto-draft |
|
||||
| **Game Over ("BUTCHERED")** | Floor, kills, score, NEW BEST CUT tag, restart |
|
||||
|
||||
@@ -265,5 +278,7 @@ Stored in `localStorage` between sessions:
|
||||
- `meatslicer_sfx_volume` (default 0.45)
|
||||
- `meatslicer_music_volume` (default 0.55)
|
||||
- `meatslicer_autoperk` — auto-draft toggle
|
||||
- `meatslicer_pressure_dial` — Pressure Dial setting (−5…+5, default 0)
|
||||
- `meatslicer_hud_alpha` — HUD opacity (default 1.0)
|
||||
|
||||
Nothing else carries over: no unlocks, no meta-currency, no saved runs. Every descent starts fresh with a Bone Popper and 6 HP.
|
||||
+2
-2
@@ -77,7 +77,7 @@ All of these trigger from your weapon hits (orbital knives proc at half chance).
|
||||
| **Iron Stomach** | +½ heart container, heal ½ heart | `maxHp +1`, heal 1 |
|
||||
| **Ghoul Heart** | +2 max HP, heal 2 | `maxHp +2`, heal 2 |
|
||||
| **Twin Hearts** | +1 max heart, heal 1 heart | `maxHp +2`, heal 2 (identical to Ghoul Heart) |
|
||||
| **Bone Plate** | +½ shield heart each floor | `shieldPerk +1`, `shieldHp +1` — shields refill every floor |
|
||||
| **Bone Plate** | +½ shield heart each floor | `shieldPerk +1`, `shieldHp +1` — shields refill every floor (1 shield HP = ½ heart, renders as half a cyan pip) |
|
||||
| **Second Stomach** | +½ heart and excess healing shields | `maxHp +1`, heal 1, `overShield +1` — overflow healing becomes shield HP |
|
||||
| **Tanned Hide** | +8% chance to ignore damage | `armor +0.087` — block chance `armor / (1 + armor)`, cap 75% |
|
||||
| **Dead Man's Clock** | +0.25s hurt immunity | `invBonus +0.25` — post-hit invulnerability 0.9 s → 1.15 s at tier I |
|
||||
@@ -103,7 +103,7 @@ All of these trigger from your weapon hits (orbital knives proc at half chance).
|
||||
| **Magnet Maw** | +60% pickup radius | `magnet ×1.6` — magnet radius 46 × magnet px |
|
||||
| **Gorging Leech** | +20% XP gained | `xpMul ×1.20` |
|
||||
| **Reroll Rib** | +1 perk reroll each level | `rerollPerLevel +1` and +1 reroll immediately |
|
||||
| **Brass Magazine** | 15% less ammo use, +20% ammo found | `ammoEff ×1.15`, `ammoPickupMul ×1.20` |
|
||||
| **Brass Magazine** | 15% less ammo use, +20% ammo found | `ammoEff ×1.15`, `ammoPickupMul ×1.20` (the ×1.15 stays multiplicative; the **Scrap Feed** perk's additive stacks sit underneath it) |
|
||||
| **Hollow Bones** | +12% move speed | `speedMul ×1.12` (178 → ~199 px/s at tier I) |
|
||||
|
||||
---
|
||||
|
||||
+1
-1
@@ -70,7 +70,7 @@ XP comes from gems dropped by kills, room clears, and bosses, scaled by your `xp
|
||||
| **Carrion Sense** | +8% pickup radius and pull speed | `magnet ×1.08`, `magnetPull ×1.08` *(note: pull speed is not currently wired into pickup movement — the radius half works)* |
|
||||
| **Scavenger** | +4% drop luck | `luck +0.04` |
|
||||
| **Bloodrush** | +5% XP gain, bonus crystal chance | `xpMul ×1.05` |
|
||||
| **Scrap Feed** | 5% less ammo consumed | `ammoEff ×1.05` |
|
||||
| **Scrap Feed** | 5% less ammo (diminishing) | `ammoEff +0.05` per stack — saving fraction = rating/(1+rating), so each extra stack helps less (like Thick Hide) |
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in new issue
Block a user