guts/.claude/launch.json
type-two 7709484ea7 [lane B] The Pyloric Guardian: the first boss, built to C's spec
GUTS has had three bosses designed and none implemented. This is the first, and the framework
the other two should reuse. Built to LANE_C_NOTES §Boss specs, phase table and all.

WHY IT IS SMALL. A boss here is not a parallel entity system, it is a SCHEDULE over the enemy
pool. The nodes and vents are ordinary enemies, so weapons hit them, the InstancedMesh draws
them and enemy:die reports them for free; the fight's identity lives entirely in WHEN they can
be hurt, which is two flags (`invuln`, `armor`) honoured by enemies.hurt(). boss.js is a state
machine and nothing else.

Faithful to C's table:
  P1  4 rim nodes, iris opens 2.5s every 8s
  P2  4 nodes, opens 1.8s every 5s, TWO armoured — and only the antacid torpedo strips them
  P3  the core alone, 60hp = C's "x5 hits", plus the 25s doom timer that kills you if you stall
Telegraphs are C's too: a "deep gulp" 2s before each window (boss:telegraph + audio), and nodes
go amber -> white-hot exactly when they become shootable — one uniform driven off `invuln`, so
the thing that glows IS the thing you can hurt, always.

Vents are turrets at fixed arcs: a turret already fires a telegraphed homing projectile on a
cooldown, which is what an acid vent is.

hp is B's call (C: "numbers need B's framework to tune against"). 150 per rim node means a ring
outlives its first window, so you must come back for it — which is what lets the stomach's
coat-drain be the real clock. C's pillar, verified: parked in the lair for 20s without fighting
back, coat goes 100 -> 0. "A race against your coat, not its hp."

Verified end-to-end: a paced pilot (11 shots/s, ~70% uptime) wins in 38.8s across 9 windows at
0.38 open-duty (spec: 31-36%); phases report 4/0 armoured, 4/2 armoured, 1 core; damage is
refused while the iris is shut; the two armoured nodes consumed exactly 2 torpedo strips.

Not included: C's arena churn (a force on the player, the one part of the spec that is a feel
change rather than a schedule) — noted for the round that tunes it.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-25 22:50:56 +10:00

101 lines
1.7 KiB
JSON

{
"version": "0.0.1",
"configurations": [
{
"name": "guts",
"runtimeExecutable": "python3",
"runtimeArgs": [
"-m",
"http.server",
"8140",
"--directory",
"web"
],
"port": 8140
},
{
"name": "guts-f",
"runtimeExecutable": "python3",
"runtimeArgs": [
"-m",
"http.server",
"8141",
"--directory",
"web"
],
"port": 8141
},
{
"name": "guts-a",
"runtimeExecutable": "python3",
"runtimeArgs": [
"-m",
"http.server",
"8145",
"--directory",
"web"
],
"port": 8145
},
{
"name": "guts-e",
"runtimeExecutable": "python3",
"runtimeArgs": [
"-m",
"http.server",
"8146",
"--directory",
"web"
],
"port": 8146
},
{
"name": "guts-b",
"runtimeExecutable": "python3",
"runtimeArgs": [
"-m",
"http.server",
"8142",
"--directory",
"web"
],
"port": 8142
},
{
"name": "guts-boss",
"runtimeExecutable": "python3",
"runtimeArgs": [
"-m",
"http.server",
"8143",
"--directory",
"web"
],
"port": 8143
},
{
"name": "guts-boss2",
"runtimeExecutable": "python3",
"runtimeArgs": [
"-m",
"http.server",
"8144",
"--directory",
"web"
],
"port": 8144
},
{
"name": "guts-boss3",
"runtimeExecutable": "python3",
"runtimeArgs": [
"-m",
"http.server",
"8148",
"--directory",
"web"
],
"port": 8148
}
]
}