guts/web/js
type-two b9d9d816ad [lane B+E] Stop the game lying: the death sting at living players, the stuck hiss, and a crew naming the wrong organ
Four audio/comms cues wired to the wrong condition. All four are written content that has been
in the repo for rounds, firing at the wrong moment or never firing at all.

THE DEATH STING PLAYED AT LIVING PLAYERS. finish() mapped every non-win outcome to `death` — and
`death` is not a stinger, it is a ~12 s noise table (synth.js). So surviving L1's Mast Cell
("degranulated"), outrunning the Tapeworm ("escaped") and clearing the Sovereign's Toll all told
an alive player they had died, over the top of the next twelve seconds of play. Outcomes are
classified now: won/spared/communion triumph, alive-but-it-went-badly gets a downbeat, actually
dead gets the sting, and housekeeping (reset/dispose) is silent because nothing happened to the
player at all. Verified: surviving the Mast Cell no longer emits `death`; dying still does.

THE PHASE TELL WAS A SUSTAINING HISS. boss.js used `overheat` as its phase-change cue, but that
layer sustains until the engine sends `overheat_clear` on a combat:state.overheated falling edge
— which a boss never produces. Every phase change leaked a ~12 s steam hiss and ducked the mix
under it for the rest of the fight. Three sites, now short cues.

THE CREW HAS NEVER MENTIONED HULL DAMAGE. comms.js gates its two hull lines on
`kind === 'hull_hit'`, but `kind` is the damage SOURCE ('dart'|'acid'|'gas'…), so that branch has
never once been true in the game's life and every hit read as a coat graze. damage() already
computes `leak > 0` for its own audio cue — the bus event now carries it as `hull`.

AND IT NAMED THE WRONG ORGAN. There was exactly ONE boss line — "that is the pylorus. it does not
open for you." — fired for all five bosses, so the tutorial's Mast Cell and the campaign's final
boss were both announced as a stomach valve. Per-boss lines now, off boss:start (which is the only
place the id is known, and for the Sovereign whether there is a fight at all). The Mast Cell's is
doing real work: "wait — wait. that is a mast cell. it is not hunting you." / "do NOT shoot it."
The crew is the game's only tutorialisation channel, and that is the lesson L1 exists to teach.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-26 19:45:29 +10:00
..
audio [lane E] The game finds its voice: procedural synth bank, the WebAudio graph, the damage feed, and the medal/title/pause cards 2026-07-19 13:57:38 +10:00
combat [lane B+E] Stop the game lying: the death sting at living players, the stuck hiss, and a crew naming the wrong organ 2026-07-26 19:45:29 +10:00
core [lane B+C+D] Microbes, friend and foe: the GLB loader, a friendly commensal, and a distinct-mesh yeast 2026-07-19 15:13:30 +10:00
flight [lane B+E] Stop the game lying: the death sting at living players, the stuck hiss, and a crew naming the wrong organ 2026-07-26 19:45:29 +10:00
levels [lane B+C+E+F] Playtest blockers: the game never taught its controls, deleted bosses on death, and shipped an unwinnable tutorial 2026-07-26 19:04:25 +10:00
stub [lane F] Round 1 integration + ROUND2 instructions: the game is a game 2026-07-16 14:39:02 +10:00
ui [lane B+E] Stop the game lying: the death sting at living players, the stuck hiss, and a crew naming the wrong organ 2026-07-26 19:45:29 +10:00
world [lane A] Procedural epithelium: a Voronoi cell pavement in the wall shader 2026-07-25 23:53:26 +10:00
boot.js [lane B+C+E+F] Playtest blockers: the game never taught its controls, deleted bosses on death, and shipped an unwinnable tutorial 2026-07-26 19:04:25 +10:00