"0.34 parts" read as a fraction of something unnamed. It is a payment,
so it now looks like one: ¤34. The symbol is Unicode's generic currency
sign - it looks like money and is nobody's actual money, which is right
for a place whose banks are somebody else's problem.
The scale moves with it. FUNDS_PER_CONDITION fixes the exchange rate in
one place, so every balance number stays in the unit it is actually
about and how large the currency reads stays a presentational decision.
A supply run pays ¤34, an overhaul runs ¤200 to undo a crash's
permanent cost, and a full rebuild after a bad one is about a dozen
missions.
The debug panel gets ±¤ next to the existing condition levers, so the
workshop and the board can be exercised without first driving eight
missions to afford looking at them.
Save format bumped: quests.parts is now quests.funds.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
A patrol working a road now takes a little off the district around it as well,
at roughly a tenth of the rate it takes off the road. Deliberately feeble: any
faster and sitting still while patrols came and went would quietly launder your
reputation, and district heat exists precisely to be the part you cannot patrol
away. Passed as a position rather than a district id, so the unit sim still does
not need to know how areas are gridded.
Adds a debug panel under ?debug=1 with buttons to wear the car down or patch it
up. Driving a wrecked car is something you want to try while driving, not while
typing at a console. An earlier version of the console helper took an amount and
ignored it, which would have made it silently useless.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Nothing on a road simply appears any more. A road that turns notorious gets a
patrol dispatched to it: it starts at a junction a few hundred metres away,
drives there, sweeps the road for about a minute, and while it works the road it
brings the heat down — then leaves. Checkpoints are built rather than placed. At
turret level an engineer is sent, the tower rises over forty seconds of someone
standing on site, and a gunner mans it once it stands, up on top so he clears his
own barricade. Let the road cool and the whole thing is abandoned. heat.ts now
only pours concrete; everything living has to arrive.
Civilian traffic routes across the network with somewhere to be, people wander on
foot, and both scatter when shooting starts.
Skirmishes break out between the two armies on contested and occupied ground
regardless of where the player is. Rounds are real objects in flight rather than
instant hits between combatants — that is the point of the feature. If shots
resolved instantly, driving through a battle would cost nothing and "the only
road to the target runs through a firefight" would not be a decision. Strays hit
bystanders, civilians and the player alike; buildings stop them, so cover means
something; hits go through the same wear model as a crash, so being shot costs
ceiling too.
The enemy does not shoot at an undercover driver by default. They open up only
past the line and only on a road they have already checkpointed.
Reload was being counted in stepUnits while firing lived in stepCombat, so combat
stepped on its own never reloaded. A test caught it; ownership now sits with the
module that fires.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The pane this build runs in does not composite, so requestAnimationFrame never
fires, the loop stalls, and nothing can be screenshotted from outside. Adds a
`?debug=1` handle that steps the simulation by hand and renders on demand, plus
a dev-only endpoint that takes a POSTed frame and writes it to shots/. Moving
the image as bytes rather than a pasted data URL matters: a truncated base64
string decodes to nothing.
Looking at the result immediately found a real problem. Base beacons were wide
translucent cylinders — legible from a distance, a solid green wall from inside,
and the car parks in the middle of one. Now a slim pillar plus a ring on the
ground that marks where to stop. Also raised the sky and fog brightness, which
was dark enough to read as night.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>