3.0 KiB
LANE 9 — the fun layer: still scales, the Roomba, the incident report, chair riding
Spec'd and executed by Fable, 2026-08-03. Owns game/ only.
Four features, one commit each, every one riding systems that already exist. House rule respected throughout: the game never says so — no tutorials, no popups explaining.
0. The scales sleep at spawn (bug fix — restores a red gate)
probe_levels reads 0.48 m/s residual in the grocer: the scale pan (Main.gd:391,
angular_damp = 0.25, origin at the pivot) is near-neutrally balanced, so spawn jitter
never dies. Fix: after the joint has resolved (~0.6 s), zero the pan's velocities and put
it to sleep. The swing feel after a hit is untouched — this is a spawn-settle, same spirit
as the spawn guard. Gate: all six sites back to 0.00 m/s.
1. The Roomba (scripts/Roomba.gd)
A robot vacuum that patrols the site eating your debris — the anti-combo antagonist.
class_name Roomba extends Smashable,kind = "steel"— so the weapon matrix already works: bare hands are futile (clank), a crowbar dents it, a sledge can genuinely kill it (and the payslip bills you for it, because it's company property).- Wander: slow patrol; when debris (group
debris) is within sniff range it steers there. - Eat: an Area3D mouth; debris it touches shrinks and vanishes with a little vacuum
whirr, and each item eaten deducts score (
Main._score), with an occasional smug beep. - Dent it and it panics: beeps, flees fast for a few seconds.
- Procedural audio (beeps + whirr) synthesized in
_ready— no assets, house style. - Spawns in every site EXCEPT LEVEL 0 (
_backrooms == nullcheck) — nothing cute in the Backrooms — and not in the Gauntlet round itself.
2. The incident report (scripts/Receipt.gd)
When a meltdown ends (Rage.calmed after a SNAP), a dot-matrix incident report prints,
line by line, itemizing what you broke during that window: OBJECT · unit $ · ×N,
then TOTAL DAMAGES, then DEDUCTED FROM PAY. One synth chirp per printed line.
Collected via Main._on_smashed while Rage.is_meltdown(). Any key (or 5 s) dismisses.
All drawn/synthesized in code — no textures, no audio files.
3. Ride the office chair (scripts/ChairRide.gd + Player hooks)
E on an office chair (piece named office-chair, within 2.5 m, hands empty) mounts it.
- The chair stays a real RigidBody3D; the player follows it kinematically (collision paused), camera up top. WASD pushes it (strong forward, weak steering — deliberately bad), momentum is real, the floor is the office. Space/E hops off with a small dismount.
- Ramming does what physics says: mass × speed scatters furniture; brittle things
(vinyl, glass, produce) break on impact via their existing
brittle_speed— no new damage code. - If the chair shatters mid-ride (it's
plastic; you CAN sledge your own vehicle), the ride ends on the spot, comedically.
Gates (each commit)
Headless smoke clean · probe_levels all sites 0.00 m/s · probe_overlap CLEAN.
README controls table updated in the final commit.