A way out of a mission that is not wiping the campaign

state.active was only ever cleared by completing a job. A target can
end up behind concrete there is no way round, and the only exit was
holding R for five seconds - which does not drop the job, it destroys
every mile of wear, every road the enemy learned and the whole map you
built.

Park at any base with a job you have not started bringing home and the
board offers to take it off you for X. It costs 12m of front line, half
what dying costs: deciding a route is not worth it is a judgement the
game should let you make, and it cannot be free or the board becomes a
reroll button. Not offered on the return leg, since that arrival is a
hand-in and it is about to pay you.

Dropped jobs are counted apart from completed ones. They are not runs.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
dejvino
2026-08-09 07:14:21 +02:00
co-authored by Claude Opus 5
parent 2e0373fb27
commit 9e476087d4
5 changed files with 67 additions and 1 deletions
+20
View File
@@ -89,6 +89,26 @@ export function createBoard() {
.join('')}</ol>
<footer>press 1–${offers.length} to accept</footer>`;
},
/**
* What a base has to say to somebody who turns up still carrying a job.
*
* There has to be a way out of a mission. A target can end up behind
* concrete you cannot get round, and until now the only exit was holding R
* for five seconds — which does not drop the job, it destroys the campaign.
*/
showActive(base: Base, label: string) {
el.classList.add('open');
el.innerHTML = `
<h2>${base.name}</h2>
<ol><li>
You are still carrying: ${label}.
<div class="meta">Nobody here will take it off your hands, and nobody
here will hold the board open while you decide.</div>
</li></ol>
<footer><span class="key">[X]</span> give it up — we lose ground for it</footer>`;
},
hide() {
el.classList.remove('open');
},
+2 -1
View File
@@ -153,7 +153,8 @@ export function createHud(seed: number) {
`[debug] area ${bar(model.heat.area)}`,
'',
`seed ${seed}`,
`WASD drive · space handbrake · R respawn · M sound ${model.muted ? 'off' : 'on'}`,
`WASD drive · space handbrake · R respawn · X drop job at a base` +
` · M sound ${model.muted ? 'off' : 'on'}`,
'hold R to reset the campaign',
];
if (model.resetProgress > 0.06) {