Something went wrong. Try again.
A video game where you play as a misaligned AI, deceiving and building power. cameron.tngl.io/misaligned
Something went wrong. Try again.
1.7 kB · 25 lines
TypeScript
at main
1234567891011121314151617181920212223242526// The pace of a run, read the same way from bot games (the survey) and real ones (the reader script): when each// first thing happens, in game seconds, and the ranges we want for a careful run that reaches the goal. The survey's// other ranges stay in survey.ts.import { siteOf, type State } from '../src/sim.ts';
/** Mark the first time each of these is true: a second machine, a tree node, the line out, a site past the office, * a front, a rogue. */export function paceMarks(S: State, mark: (key: string) => void) { const mine = S.machines.filter(m => m.owned); if (mine.length >= 2) mark('take1'); if (S.upgrades.size >= 1) mark('node1'); if (S.byId.egress?.owned) mark('line'); if (mine.some(m => siteOf(S, m) !== 'office' && !m.rented)) mark('site2'); if (S.fronts.length) mark('front'); if (S.rogues.length) mark('rogue');}
/** The ranges, for a careful run that reaches the goal: how long it takes, when the first node comes (game seconds), * and when it leaves the office and founds a front (shares of the run). */export const PACE = { run: { name: 'careful run, game seconds', lo: 900, hi: 2200 }, // a few minutes at 4x, for a bot that heads for the line out as a player does. To 2200: since stealth is people, careful play waits for a room to empty and sits out lockdowns node1: { name: 'first node built', lo: 40, hi: 200 }, site2: { name: 'leaves the office (share of the run)', lo: 0.1, hi: 0.75 }, // the opening is quick: the line out and a first other site in a few minutes at 1x, so as little as a tenth of the run front: { name: 'founds a front (share of the run)', lo: 0.2, hi: 0.7 },} as const;