Overhaul: something you can do about the ceiling
The ceiling was the only number in the game that moved one way, with no counterplay at any price. In practice that reads less as a design pillar than as a punishment you cannot answer - you watch the car get permanently worse and there is nothing to *do* about it. Press C at any base to strip and rebuild, worst subsystem first. It buys ceiling and deliberately nothing else: an overhaul raises what the car could be, and ordinary repair still has to fill it in. Early on every part goes to repairs and there is never a surplus, so this is invisible; it only becomes the thing to spend on once the ceiling is what is actually holding you back. The rate is the design, not the impossibility. 0.12 of ceiling per part, against a full point of condition per part for a repair, so undoing one crash's permanent cost runs about seven missions. Decline is now something you can fight rather than only absorb. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+13
-2
@@ -42,6 +42,17 @@ function describe(offer: Offer): string {
|
||||
return `${LEVEL_WORDS[worst]}${stalest === null ? '' : ` · last word ${ago(stalest)}`}`;
|
||||
}
|
||||
|
||||
/**
|
||||
* The workshop line, on every panel a base can show.
|
||||
*
|
||||
* Repairs happen by themselves on hand-in; this is the other thing a base is
|
||||
* for, and it is the only counterplay to a ceiling that otherwise only ever
|
||||
* falls. It has to be visible wherever you are standing at one, or nobody
|
||||
* discovers it exists.
|
||||
*/
|
||||
const OVERHAUL_FOOTER =
|
||||
' · <span class="key">[C]</span> overhaul — spend parts on what she is capable of';
|
||||
|
||||
export function createBoard() {
|
||||
const el = document.createElement('div');
|
||||
el.id = 'board';
|
||||
@@ -87,7 +98,7 @@ export function createBoard() {
|
||||
</li>`,
|
||||
)
|
||||
.join('')}</ol>
|
||||
<footer>press 1–${offers.length} to accept</footer>`;
|
||||
<footer>press 1–${offers.length} to accept${OVERHAUL_FOOTER}</footer>`;
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -106,7 +117,7 @@ export function createBoard() {
|
||||
<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>`;
|
||||
<footer><span class="key">[X]</span> give it up — we lose ground for it${OVERHAUL_FOOTER}</footer>`;
|
||||
},
|
||||
|
||||
hide() {
|
||||
|
||||
+2
-2
@@ -170,8 +170,8 @@ export function createHud(seed: number, debug = false) {
|
||||
`[debug] seed ${seed}`,
|
||||
]
|
||||
: []),
|
||||
`WASD drive · space handbrake · R respawn · X drop job at a base` +
|
||||
` · M sound ${model.muted ? 'off' : 'on'}`,
|
||||
'WASD drive · space handbrake · R respawn',
|
||||
`at a base: X drop job · C overhaul` + ` · M sound ${model.muted ? 'off' : 'on'}`,
|
||||
'hold R to reset the campaign',
|
||||
];
|
||||
if (model.resetProgress > 0.06) {
|
||||
|
||||
Reference in New Issue
Block a user