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:
MeatSlicer Developer committed 2026-07-30 00:01:06 +10:00
1 parent d255be5e39
commit a02cff52cf
24 files changed
+667 -201

No files matched your search

+19 -2
View File
@@ -26,6 +26,7 @@ const G = {
perkChoices: null,
autoPerk: false,
pressure: 1,
pressureDial: 0,
streak: 0,
roomDamaged: false,
roomEnterT: 0,
@@ -36,6 +37,7 @@ const G = {
helpPage: 0,
sfxVol: 0.45,
musicVol: 0.55,
hudAlpha: 1,
imagesLoaded: false,
roomLayer: null,
roomLayerKey: '',
@@ -43,7 +45,18 @@ const G = {
};
const PERK_POWER_WEIGHT = 0.5;
const PRESSURE_MIN = 0.75, PRESSURE_MAX = 1.60, PRESSURE_GAIN = 0.01;
const PRESSURE_MIN = 0.75, PRESSURE_MAX = 1.60;
const PRESSURE_UNIT = 0.01; // one "point" on the dial scale
const PRESSURE_GAIN = PRESSURE_UNIT; // retained: dial 0 == 1 point
const PRESSURE_DROP_BASE = 3; // dial 0 == 0.03 relief base
const PRESSURE_DIAL_MIN = -5, PRESSURE_DIAL_MAX = 5;
// -5 -> 0 units, 0 -> 1 unit, +5 -> 5 units (piecewise linear)
function pressureGainUnits(dial) { const d = clamp(dial, PRESSURE_DIAL_MIN, PRESSURE_DIAL_MAX); return d <= 0 ? 1 + d * 0.2 : 1 + d * 0.8; }
// -5 -> 5 units, 0 -> 3 units, +5 -> 0 units (piecewise linear)
function pressureDropUnits(dial) { const d = clamp(dial, PRESSURE_DIAL_MIN, PRESSURE_DIAL_MAX); return d <= 0 ? 3 - d * 0.4 : 3 - d * 0.6; }
function pressureGain() { return pressureGainUnits(G.pressureDial) * PRESSURE_UNIT; }
function pressureDropScale() { return pressureDropUnits(G.pressureDial) / PRESSURE_DROP_BASE; }
// total player power: perks drafted (level - 1) + item tiers owned.
// monsters scale against this so difficulty tracks the build.
@@ -60,4 +73,8 @@ function addToast(text, sub) {
G.toasts.push({ text, sub: sub || '', t: 0 });
if (G.toasts.length > 3) G.toasts.shift();
}
function addScore(n) { G.score += n; }
function addScore(n) {
if (!n) return;
const scaled = Math.round(n * (G.pressure || 1));
G.score += n > 0 ? Math.max(1, scaled) : scaled;
}