Skip to content

five-on-it / apps/server/src/seat-bots / botGoalsOf

Function: botGoalsOf() ​

botGoalsOf(game, mission, team): Point[]

Defined in: apps/server/src/seat-bots.ts:102

The places an AI player of a team goes to in turn: its team's objectives' (and those everyone plays) in the mission's order; none for a team whose objectives name no place.

Parameters ​

game ​

blurb? ​

string = ...

id ​

string = ...

level ​

string = ...

missions ​

object[] = ...

paths ​

Record<string, { gates: string[]; laps: number; } | { loop: boolean; patrol: string[]; }> = ...

places ​

Record<string, { name?: string; role?: "players" | "police" | "traffic" | "guards" | "hospital"; tags?: string[]; x: number; y?: number; yaw?: number; z: number; }> = ...

rules ​

{ clock?: { pace: number; start: string; }; dropMissionItems: boolean; fallDamage: boolean; garages?: { respray?: number; store?: number; }; ghostSeconds: number; loadout?: object[]; maxPlayers: number; mode?: "solo" | "coop" | "versus"; partyRewards: "split" | "shared"; phone: boolean; playerDamage: "on" | "off" | "rivals"; police: boolean; prices?: Record<string, number>; respawn: "hospital" | "mission"; safeZones: string[]; traffic: number; vehicleFire: boolean; weather?: { changes: boolean; climate?: "none" | "temperate" | "meadow" | "forest" | "alpine" | "farmland" | "steppe" | "desert" | "autumn" | "coast"; intensity: number; start?: "clear" | "overcast" | "rain" | "storm" | "fog" | "snow"; }; } = ...

rules.clock? ​

{ pace: number; start: string; } = ...

The room clock (GAME_DESIGN §5.7): the time the room starts at and its pace, game minutes per real second (1 is an hour a minute, a day in 24 minutes; 0 stops it; up to 60 for a day in 24 seconds).

rules.clock.pace ​

number = ...

rules.clock.start ​

string = ...

rules.dropMissionItems ​

boolean = ...

Whether a character that dies drops the items a mission defined that it carried, where it fell (GAME_DESIGN §7.4).

rules.fallDamage ​

boolean = ...

Whether a long fall hurts (from about 4 m) and a very long one kills (from about 12 m).

rules.garages? ​

{ respray?: number; store?: number; } = ...

What every garage of the level charges ($), over the level's own prices (GAME_DESIGN §5.5).

rules.garages.respray? ​

number = ...

rules.garages.store? ​

number = ...

rules.ghostSeconds ​

number = ...

Seconds a player is a ghost after coming back (passing through cars and people, taking no harm).

rules.loadout? ​

object[] = ...

What every player starts with (GAME_DESIGN §7.4): stacks of items by id (weapons and their ammunition are items), each in the slot of the strip it names (1 to 16; the number keys select the first nine, and the slot a key selects is the weapon held) or the first free one. Absent: free roam's arsenal, the fists' slot 1 left empty, the pistol, shotgun, rifle, rocket launcher, grenades and tranquilizer on 2 to 7 and the guns' ammunition from 9 on; an empty list: nothing but the phone.

rules.maxPlayers ​

number = ...

How many players a room of this game takes.

rules.mode? ​

"solo" | "coop" | "versus" = ...

How the game is played, one mode for all its missions (its creator's pick): single player (solo: no mission has a play, and every room of it is its opener's alone), co-op (coop: every mission is co-op, played by a crew in a run's room from a lobby) or versus (versus: every mission pits two teams or more against each other). Absent: the missions say, each its own (a curated game's mix).

rules.partyRewards ​

"split" | "shared" = ...

How a party's mission reward is paid: each member the whole of it (shared), or the reward divided among them (split).

rules.phone ​

boolean = ...

Whether every character starts with a phone (GAME_DESIGN §7.5); a mission may give one.

rules.playerDamage ​

"on" | "off" | "rivals" = ...

Whether players hurt each other: never, only rivals (players outside one's party), or always.

rules.police ​

boolean = ...

Whether the room has police: crimes raise a Wanted level and police cars come (GAME_DESIGN §12).

rules.prices? ​

Record<string, number> = ...

What the shops charge ($), by item id, over the items' own prices (GAME_DESIGN §14).

rules.respawn ​

"hospital" | "mission" = ...

Where a player who went down comes back: the nearest spawn point (hospital), or where their mission started (mission).

rules.safeZones ​

string[] = ...

The game's zones where players cannot hurt each other and no car is carjacked.

rules.traffic ​

number = ...

Ambient cars driving the level's roads around the players: none unless the game asks (at most 64).

rules.vehicleFire ​

boolean = ...

Whether a car brought low catches fire, burns and blows up, its blast lighting the cars beside it.

rules.weather? ​

{ changes: boolean; climate?: "none" | "temperate" | "meadow" | "forest" | "alpine" | "farmland" | "steppe" | "desert" | "autumn" | "coast"; intensity: number; start?: "clear" | "overcast" | "rain" | "storm" | "fog" | "snow"; } = ...

The room's weather (GAME_DESIGN §5.7): its climate (the level's by default: a region's biome, temperate for a town; none is always clear), the weather it opens with (start, at an intensity), and whether it changes on its own from there (a front every half an hour, by the climate's odds) or holds. Missions change it (setWeather).

rules.weather.changes ​

boolean = ...

rules.weather.climate? ​

"none" | "temperate" | "meadow" | "forest" | "alpine" | "farmland" | "steppe" | "desert" | "autumn" | "coast" = ...

rules.weather.intensity ​

number = ...

rules.weather.start? ​

"clear" | "overcast" | "rain" | "storm" | "fog" | "snow" = ...

schemaVersion? ​

number = ...

The document's format (migrate.ts): 1 when absent; a newer one is migrated away before this reads it.

state? ​

{ counters: Record<string, number>; flags: string[]; } = ...

state.counters ​

Record<string, number> = ...

state.flags ​

string[] = ...

title ​

string = ...

zones ​

Record<string, { kind?: "pickup" | "spawn" | "restricted" | "race_gate" | "safe" | "checkpoint" | "dropoff"; place: string; radius: number; raises?: "alert" | "heat"; role?: "players" | "police" | "traffic" | "guards" | "hospital"; } | { kind?: "pickup" | "spawn" | "restricted" | "race_gate" | "safe" | "checkpoint" | "dropoff"; polygon: object[]; raises?: "alert" | "heat"; role?: "players" | "police" | "traffic" | "guards" | "hospital"; y?: number; }> = ...

mission ​

actors ​

({ at: string; class: string | string[]; id: string; key?: string; locked: boolean; owner: "nobody" | "npc" | "mission"; tags: string[]; type: "vehicle"; } | { armed: boolean; at: string; class?: string; count: number; crew: number; id: string; max?: number; mode: "car" | "foot"; profile: "guard" | "pursuit" | "tail" | "aggressive"; tags: string[]; targets?: { team: string; }; type: "chasers"; } | { at: string; count: number; id: string; item: string; type: "item"; } | { at: string; id: string; items: object[]; kind: "crate" | "locker"; lock?: string; type: "container"; } | { at: string; code?: string; id: string; lock?: string; locked?: boolean; type: "door"; } | { at: string; id: string; loop: boolean; path?: string; patrol?: string[]; pockets: object[]; role: "guard" | "civilian"; schedule?: object[]; tags: string[]; turn?: number; type: "npc"; weapon: "none" | "pistol" | "shotgun" | "rifle" | "fists"; } | { at: string; follow?: string; id: string; loop: boolean; path?: string; role: "driver"; route?: string[]; speed?: number; tags: string[]; type: "npc"; vehicle: string; } | { at: string; id: string; loop: boolean; path?: string; patrol?: string[]; pockets: object[]; refuge?: string; role: "target"; schedule?: object[]; tags: string[]; type: "npc"; } | { at: string; id: string; role: "vip"; tags: string[]; type: "npc"; } | { at: string; contact: string; dialogue: string; id: string; role: "contact"; type: "npc"; } | { at: string; id: string; on?: boolean; type: "camera"; } | { app: string; at: string; id: string; kind: "atm" | "terminal" | "keypad" | "vending" | "counter"; prompt: "use" | "hack"; screen?: string; type: "terminal"; } | { at: string; id: string; type: "garage"; } | { at: string; id: string; kind: "terminal" | "vending" | "counter"; sells: object[]; type: "shop"; } | { at: string; id: string; type: "prop"; })[] = ...

after? ​

string[] = ...

apps ​

object[] = ...

blurb? ​

string = ...

contacts ​

object[] = ...

counters ​

Record<string, number> = ...

dialogues ​

object[] = ...

helpline? ​

string = ...

id ​

string = Id

items ​

object[] = ...

objectives ​

({ checkpoint?: boolean; failText?: string; hint?: string; id: string; marker?: string; next?: { done?: string; failed?: string; }; team?: string; text?: string; timeLimit?: number; to: string; verb: "goto"; } | { checkpoint?: boolean; failText?: string; hint?: string; id: string; marker?: string; next?: { done?: string; failed?: string; }; target: string; team?: string; text?: string; timeLimit?: number; verb: "steal_vehicle"; } | { checkpoint?: boolean; count?: number; failText?: string; hint?: string; id: string; item?: string; marker?: string; maxDamage?: number; next?: { done?: string; failed?: string; }; team?: string; text?: string; timeLimit?: number; to: string; vehicle?: string; verb: "deliver"; } | { checkpoint?: boolean; failText?: string; hint?: string; id: string; item: string; marker?: string; next?: { done?: string; failed?: string; }; team?: string; text?: string; timeLimit?: number; verb: "pickup"; } | { checkpoint?: boolean; count: number; failText?: string; hint?: string; id: string; marker?: string; next?: { done?: string; failed?: string; }; tag: string; team?: string; text?: string; timeLimit?: number; verb: "collect"; } | { checkpoint?: boolean; failText?: string; hint?: string; id: string; interactable: string; marker?: string; next?: { done?: string; failed?: string; }; team?: string; text?: string; timeLimit?: number; verb: "use"; } | { checkpoint?: boolean; failText?: string; hint?: string; id: string; marker?: string; next?: { done?: string; failed?: string; }; seconds: number; team?: string; text?: string; timeLimit?: number; verb: "survive"; } | { checkpoint?: boolean; failIf?: Condition; failText?: string; hint?: string; id: string; marker?: string; next?: { done?: string; failed?: string; }; seconds: number; team?: string; text?: string; timeLimit?: number; verb: "defend"; zone: string; } | { checkpoint?: boolean; distance: number; failText?: string; group: string; hint?: string; id: string; marker?: string; next?: { done?: string; failed?: string; }; seconds: number; team?: string; text?: string; timeLimit?: number; verb: "lose"; } | { checkpoint?: boolean; failText?: string; group?: string; hint?: string; id: string; marker?: string; next?: { done?: string; failed?: string; }; nonLethal: boolean; targets?: { team: string; }; team?: string; text?: string; timeLimit?: number; verb: "eliminate"; } | { checkpoint?: boolean; failText?: string; hint?: string; id: string; marker?: string; next?: { done?: string; failed?: string; }; nonLethal: boolean; targets: string[]; team?: string; text?: string; timeLimit?: number; verb: "incapacitate"; } | { checkpoint?: boolean; failText?: string; hint?: string; id: string; marker?: string; maxPhase: "search" | "normal" | "alert" | "caution" | "suspicious"; next?: { done?: string; failed?: string; }; team?: string; text?: string; timeLimit?: number; verb: "sneak"; zone: string; } | { actor?: string; checkpoint?: boolean; choice?: string; contact?: string; dialogue: string; failText?: string; hint?: string; id: string; marker?: string; next?: { done?: string; failed?: string; }; team?: string; text?: string; timeLimit?: number; verb: "talk"; } | { checkpoint?: boolean; failText?: string; hint?: string; id: string; marker?: string; next?: { done?: string; failed?: string; }; target: string; team?: string; text?: string; timeLimit?: number; verb: "unlock"; } | { checkpoint?: boolean; countdown: number; failText?: string; hint?: string; id: string; laps?: number; marker?: string; next?: { done?: string; failed?: string; }; path: string; rivals: string[]; team?: string; text?: string; timeLimit?: number; verb: "race"; } | { checkpoint?: boolean; count: number; failText?: string; hint?: string; id: string; item: string; marker?: string; next?: { done?: string; failed?: string; }; team?: string; text?: string; timeLimit?: number; to: string; verb: "give"; } | { actor: string; checkpoint?: boolean; failText?: string; hint?: string; id: string; marker?: string; maxDamage?: number; next?: { done?: string; failed?: string; }; team?: string; text?: string; timeLimit?: number; to: string; verb: "escort"; } | { checkpoint?: boolean; failText?: string; hint?: string; id: string; marker?: string; next?: { done?: string; failed?: string; }; radius: number; target: string; team?: string; text?: string; timeLimit?: number; to?: string; verb: "chase"; } | { actor?: string; checkpoint?: boolean; failText?: string; from: string; hint?: string; id: string; marker?: string; next?: { done?: string; failed?: string; }; place?: string; team?: string; text?: string; timeLimit?: number; verb: "photograph"; } | { checkpoint?: boolean; failText?: string; hint?: string; id: string; marker?: string; next?: { done?: string; failed?: string; }; seconds: number; team?: string; text?: string; timeLimit?: number; verb: "wait"; zone?: string; } | { checkpoint?: boolean; distance?: number; failText?: string; from: string[] | "police"; hint?: string; id: string; marker?: string; next?: { done?: string; failed?: string; }; seconds?: number; team?: string; text?: string; timeLimit?: number; verb: "escape"; } | { checkpoint?: boolean; failText?: string; hint?: string; id: string; marker?: string; next?: { done?: string; failed?: string; }; targets: string[]; team?: string; text?: string; timeLimit?: number; verb: "destroy"; } | { checkpoint?: boolean; count?: number; failText?: string; hint?: string; id: string; marker?: string; next?: { done?: string; failed?: string; }; radius: number; seconds: number; targets: { team: string; }; team?: string; text?: string; timeLimit?: number; verb: "catch"; } | { checkpoint?: boolean; failIf?: Condition; failText?: string; hint?: string; id: string; marker?: string; need?: number; next?: { done?: string; failed?: string; }; objectives: ({ checkpoint?: boolean; failText?: string; hint?: string; id: string; marker?: string; next?: { done?: string; failed?: string; }; team?: string; text?: string; timeLimit?: number; to: string; verb: "goto"; } | { checkpoint?: boolean; failText?: string; hint?: string; id: string; marker?: string; next?: { done?: string; failed?: string; }; target: string; team?: string; text?: string; timeLimit?: number; verb: "steal_vehicle"; } | { checkpoint?: boolean; count?: number; failText?: string; hint?: string; id: string; item?: string; marker?: string; maxDamage?: number; next?: { done?: string; failed?: string; }; team?: string; text?: string; timeLimit?: number; to: string; vehicle?: string; verb: "deliver"; } | { checkpoint?: boolean; failText?: string; hint?: string; id: string; item: string; marker?: string; next?: { done?: string; failed?: string; }; team?: string; text?: string; timeLimit?: number; verb: "pickup"; } | { checkpoint?: boolean; count: number; failText?: string; hint?: string; id: string; marker?: string; next?: { done?: string; failed?: string; }; tag: string; team?: string; text?: string; timeLimit?: number; verb: "collect"; } | { checkpoint?: boolean; failText?: string; hint?: string; id: string; interactable: string; marker?: string; next?: { done?: string; failed?: string; }; team?: string; text?: string; timeLimit?: number; verb: "use"; } | { checkpoint?: boolean; failText?: string; hint?: string; id: string; marker?: string; next?: { done?: string; failed?: string; }; seconds: number; team?: string; text?: string; timeLimit?: number; verb: "survive"; } | { checkpoint?: boolean; failIf?: Condition; failText?: string; hint?: string; id: string; marker?: string; next?: { done?: string; failed?: string; }; seconds: number; team?: string; text?: string; timeLimit?: number; verb: "defend"; zone: string; } | { checkpoint?: boolean; distance: number; failText?: string; group: string; hint?: string; id: string; marker?: string; next?: { done?: string; failed?: string; }; seconds: number; team?: string; text?: string; timeLimit?: number; verb: "lose"; } | { checkpoint?: boolean; failText?: string; group?: string; hint?: string; id: string; marker?: string; next?: { done?: string; failed?: string; }; nonLethal: boolean; targets?: { team: string; }; team?: string; text?: string; timeLimit?: number; verb: "eliminate"; } | { checkpoint?: boolean; failText?: string; hint?: string; id: string; marker?: string; next?: { done?: string; failed?: string; }; nonLethal: boolean; targets: string[]; team?: string; text?: string; timeLimit?: number; verb: "incapacitate"; } | { checkpoint?: boolean; failText?: string; hint?: string; id: string; marker?: string; maxPhase: "search" | "normal" | "alert" | "caution" | "suspicious"; next?: { done?: string; failed?: string; }; team?: string; text?: string; timeLimit?: number; verb: "sneak"; zone: string; } | { actor?: string; checkpoint?: boolean; choice?: string; contact?: string; dialogue: string; failText?: string; hint?: string; id: string; marker?: string; next?: { done?: string; failed?: string; }; team?: string; text?: string; timeLimit?: number; verb: "talk"; } | { checkpoint?: boolean; failText?: string; hint?: string; id: string; marker?: string; next?: { done?: string; failed?: string; }; target: string; team?: string; text?: string; timeLimit?: number; verb: "unlock"; } | { checkpoint?: boolean; countdown: number; failText?: string; hint?: string; id: string; laps?: number; marker?: string; next?: { done?: string; failed?: string; }; path: string; rivals: string[]; team?: string; text?: string; timeLimit?: number; verb: "race"; } | { checkpoint?: boolean; count: number; failText?: string; hint?: string; id: string; item: string; marker?: string; next?: { done?: string; failed?: string; }; team?: string; text?: string; timeLimit?: number; to: string; verb: "give"; } | { actor: string; checkpoint?: boolean; failText?: string; hint?: string; id: string; marker?: string; maxDamage?: number; next?: { done?: string; failed?: string; }; team?: string; text?: string; timeLimit?: number; to: string; verb: "escort"; } | { checkpoint?: boolean; failText?: string; hint?: string; id: string; marker?: string; next?: { done?: string; failed?: string; }; radius: number; target: string; team?: string; text?: string; timeLimit?: number; to?: string; verb: "chase"; } | { actor?: string; checkpoint?: boolean; failText?: string; from: string; hint?: string; id: string; marker?: string; next?: { done?: string; failed?: string; }; place?: string; team?: string; text?: string; timeLimit?: number; verb: "photograph"; } | { checkpoint?: boolean; failText?: string; hint?: string; id: string; marker?: string; next?: { done?: string; failed?: string; }; seconds: number; team?: string; text?: string; timeLimit?: number; verb: "wait"; zone?: string; } | { checkpoint?: boolean; distance?: number; failText?: string; from: string[] | "police"; hint?: string; id: string; marker?: string; next?: { done?: string; failed?: string; }; seconds?: number; team?: string; text?: string; timeLimit?: number; verb: "escape"; } | { checkpoint?: boolean; failText?: string; hint?: string; id: string; marker?: string; next?: { done?: string; failed?: string; }; targets: string[]; team?: string; text?: string; timeLimit?: number; verb: "destroy"; } | { checkpoint?: boolean; count?: number; failText?: string; hint?: string; id: string; marker?: string; next?: { done?: string; failed?: string; }; radius: number; seconds: number; targets: { team: string; }; team?: string; text?: string; timeLimit?: number; verb: "catch"; })[]; team?: string; text?: string; timeLimit?: number; verb: "group"; })[] = ...

play? ​

{ ambient?: { pedestrians?: number; traffic?: number; }; friendlyFire: boolean; joinInProgress: "never" | "untilCheckpoint" | "always"; lives?: { count: number; per: "player" | "team"; }; mode: "solo" | "coop" | "versus"; onDeath?: "checkpoint" | "spectate" | "teamSpawn"; players?: { max: number; min: number; }; respect?: { min: number; }; retries?: number; teams?: "each" | object[]; } = ...

play.ambient? ​

{ pedestrians?: number; traffic?: number; } = ...

play.ambient.pedestrians? ​

number = ...

play.ambient.traffic? ​

number = ...

play.friendlyFire ​

boolean = ...

play.joinInProgress ​

"never" | "untilCheckpoint" | "always" = ...

play.lives? ​

{ count: number; per: "player" | "team"; } = ...

play.lives.count ​

number = ...

play.lives.per ​

"player" | "team" = ...

play.mode ​

"solo" | "coop" | "versus" = ...

play.onDeath? ​

"checkpoint" | "spectate" | "teamSpawn" = ...

play.players? ​

{ max: number; min: number; } = ...

play.players.max ​

number = ...

play.players.min ​

number = ...

play.respect? ​

{ min: number; } = ...

play.respect.min ​

number = ...

play.retries? ​

number = ...

play.teams? ​

"each" | object[] = ...

reward? ​

{ cash: number; rep: number; } = ...

reward.cash ​

number = ...

reward.rep ​

number = ...

rules ​

({ do: ({ showText: string; } | { sendMessage: { from: string; id?: string; text: string; }; } | { setFlag: string; } | { clearFlag: string; } | { startTimer: { id: string; seconds: number; }; } | { stopTimer: string; } | { add: { counter: string; value: number | { counter: string; } | { timeLeft: true; } | { elapsed: true; } | { count: ... | ... | ... | ...; } | { distance: [..., ...]; } | { health: ... | ... | ... | ...; } | { wanted: true; } | { phaseOf: string; } | { phase: ... | ... | ... | ... | ...; } | { kills: true; } | { alerts: true; } | { seen: true; } | { form: string; } | { time: true; }; }; } | { set: { counter: string; value: number | { counter: string; } | { timeLeft: true; } | { elapsed: true; } | { count: ... | ... | ... | ...; } | { distance: [..., ...]; } | { health: ... | ... | ... | ...; } | { wanted: true; } | { phaseOf: string; } | { phase: ... | ... | ... | ... | ...; } | { kills: true; } | { alerts: true; } | { seen: true; } | { form: string; } | { time: true; }; }; } | { spawn: { at?: string; count?: number; group: string; }; } | { setWanted: number; } | { give: { count: number; item: string; }; } | { take: { count?: number; tag: string; }; } | { lock: { door: string; }; } | { unlock: { door: string; }; } | { lockVehicle: string; } | { unlockVehicle: string; } | { giveKey: string; } | { spawnItem: { at: string; count: number; item: string; }; } | { alert: { npc?: string; }; } | { calm: { npc?: string; }; } | { cameraOff: { camera: string; }; } | { cameraOn: { camera: string; }; } | { reward: { cash: number; rep: number; }; } | { complete: true; } | { fail: true | { text: string; }; } | { win: string; } | { message: { choices?: Reply[]; from: string; id?: string; text: string; }; } | { call: { dialogue: string; from: string; }; } | { addContact: { contact: string; dialogue?: string; }; } | { removeContact: string; } | { installApp: string; } | { removeApp: string; } | { waypoint: string; } | { clearWaypoint: true; } | { setClock: string; } | { setPace: number; } | { setWeather: { intensity: number; kind: "clear" | "overcast" | "rain" | "storm" | "fog" | "snow"; minutes?: number; over: number; }; } | { skipTime: { hours: number; text?: string; }; } | { setSignal: { group?: "north-south" | "east-west"; junction: string; seconds?: number; state: "green" | "red" | "flashing" | "auto"; }; })[]; if?: Condition; repeat: boolean; when: string; } | { enter?: ({ showText: string; } | { sendMessage: { from: string; id?: string; text: string; }; } | { setFlag: string; } | { clearFlag: string; } | { startTimer: { id: string; seconds: number; }; } | { stopTimer: string; } | { add: { counter: string; value: number | { counter: ...; } | { timeLeft: ...; } | { elapsed: ...; } | { count: ...; } | { distance: ...; } | { health: ...; } | { wanted: ...; } | { phaseOf: ...; } | { phase: ...; } | { kills: ...; } | { alerts: ...; } | { seen: ...; } | { form: ...; } | { time: ...; }; }; } | { set: { counter: string; value: number | { counter: ...; } | { timeLeft: ...; } | { elapsed: ...; } | { count: ...; } | { distance: ...; } | { health: ...; } | { wanted: ...; } | { phaseOf: ...; } | { phase: ...; } | { kills: ...; } | { alerts: ...; } | { seen: ...; } | { form: ...; } | { time: ...; }; }; } | { spawn: { at?: string; count?: number; group: string; }; } | { setWanted: number; } | { give: { count: number; item: string; }; } | { take: { count?: number; tag: string; }; } | { lock: { door: string; }; } | { unlock: { door: string; }; } | { lockVehicle: string; } | { unlockVehicle: string; } | { giveKey: string; } | { spawnItem: { at: string; count: number; item: string; }; } | { alert: { npc?: string; }; } | { calm: { npc?: string; }; } | { cameraOff: { camera: string; }; } | { cameraOn: { camera: string; }; } | { reward: { cash: number; rep: number; }; } | { complete: true; } | { fail: true | { text: string; }; } | { win: string; } | { message: { choices?: ...[]; from: string; id?: string; text: string; }; } | { call: { dialogue: string; from: string; }; } | { addContact: { contact: string; dialogue?: string; }; } | { removeContact: string; } | { installApp: string; } | { removeApp: string; } | { waypoint: string; } | { clearWaypoint: true; } | { setClock: string; } | { setPace: number; } | { setWeather: { intensity: number; kind: "clear" | "overcast" | "rain" | "storm" | "fog" | "snow"; minutes?: number; over: number; }; } | { skipTime: { hours: number; text?: string; }; } | { setSignal: { group?: "north-south" | "east-west"; junction: string; seconds?: number; state: "green" | "red" | "flashing" | "auto"; }; })[]; every?: { do: ({ showText: string; } | { sendMessage: { from: string; id?: ... | ...; text: string; }; } | { setFlag: string; } | { clearFlag: string; } | { startTimer: { id: string; seconds: number; }; } | { stopTimer: string; } | { add: { counter: string; value: ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ...; }; } | { set: { counter: string; value: ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ...; }; } | { spawn: { at?: ... | ...; count?: ... | ...; group: string; }; } | { setWanted: number; } | { give: { count: number; item: string; }; } | { take: { count?: ... | ...; tag: string; }; } | { lock: { door: string; }; } | { unlock: { door: string; }; } | { lockVehicle: string; } | { unlockVehicle: string; } | { giveKey: string; } | { spawnItem: { at: string; count: number; item: string; }; } | { alert: { npc?: ... | ...; }; } | { calm: { npc?: ... | ...; }; } | { cameraOff: { camera: string; }; } | { cameraOn: { camera: string; }; } | { reward: { cash: number; rep: number; }; } | { complete: true; } | { fail: true | { text: ...; }; } | { win: string; } | { message: { choices?: ... | ...; from: string; id?: ... | ...; text: string; }; } | { call: { dialogue: string; from: string; }; } | { addContact: { contact: string; dialogue?: ... | ...; }; } | { removeContact: string; } | { installApp: string; } | { removeApp: string; } | { waypoint: string; } | { clearWaypoint: true; } | { setClock: string; } | { setPace: number; } | { setWeather: { intensity: number; kind: ... | ... | ... | ... | ... | ...; minutes?: ... | ...; over: number; }; } | { skipTime: { hours: number; text?: ... | ...; }; } | { setSignal: { group?: ... | ... | ...; junction: string; seconds?: ... | ...; state: ... | ... | ... | ...; }; })[]; if?: Condition; seconds: number; }; exit?: ({ showText: string; } | { sendMessage: { from: string; id?: string; text: string; }; } | { setFlag: string; } | { clearFlag: string; } | { startTimer: { id: string; seconds: number; }; } | { stopTimer: string; } | { add: { counter: string; value: number | { counter: ...; } | { timeLeft: ...; } | { elapsed: ...; } | { count: ...; } | { distance: ...; } | { health: ...; } | { wanted: ...; } | { phaseOf: ...; } | { phase: ...; } | { kills: ...; } | { alerts: ...; } | { seen: ...; } | { form: ...; } | { time: ...; }; }; } | { set: { counter: string; value: number | { counter: ...; } | { timeLeft: ...; } | { elapsed: ...; } | { count: ...; } | { distance: ...; } | { health: ...; } | { wanted: ...; } | { phaseOf: ...; } | { phase: ...; } | { kills: ...; } | { alerts: ...; } | { seen: ...; } | { form: ...; } | { time: ...; }; }; } | { spawn: { at?: string; count?: number; group: string; }; } | { setWanted: number; } | { give: { count: number; item: string; }; } | { take: { count?: number; tag: string; }; } | { lock: { door: string; }; } | { unlock: { door: string; }; } | { lockVehicle: string; } | { unlockVehicle: string; } | { giveKey: string; } | { spawnItem: { at: string; count: number; item: string; }; } | { alert: { npc?: string; }; } | { calm: { npc?: string; }; } | { cameraOff: { camera: string; }; } | { cameraOn: { camera: string; }; } | { reward: { cash: number; rep: number; }; } | { complete: true; } | { fail: true | { text: string; }; } | { win: string; } | { message: { choices?: ...[]; from: string; id?: string; text: string; }; } | { call: { dialogue: string; from: string; }; } | { addContact: { contact: string; dialogue?: string; }; } | { removeContact: string; } | { installApp: string; } | { removeApp: string; } | { waypoint: string; } | { clearWaypoint: true; } | { setClock: string; } | { setPace: number; } | { setWeather: { intensity: number; kind: "clear" | "overcast" | "rain" | "storm" | "fog" | "snow"; minutes?: number; over: number; }; } | { skipTime: { hours: number; text?: string; }; } | { setSignal: { group?: "north-south" | "east-west"; junction: string; seconds?: number; state: "green" | "red" | "flashing" | "auto"; }; })[]; while: Condition; })[] = ...

start ​

{ on: "join"; } | { on: "enter"; zone: string; } | { from: string; on: "message"; text?: string; } | { from: string; on: "call"; text?: string; } = ...

stealth? ​

{ bonus?: { cash: number; rep: number; }; unseen?: "fail" | "bonus"; withoutAlerts?: "fail" | "bonus"; withoutKills?: "fail" | "bonus"; } = ...

stealth.bonus? ​

{ cash: number; rep: number; } = ...

stealth.bonus.cash ​

number = ...

stealth.bonus.rep ​

number = ...

stealth.unseen? ​

"fail" | "bonus" = ...

stealth.withoutAlerts? ​

"fail" | "bonus" = ...

stealth.withoutKills? ​

"fail" | "bonus" = ...

title ​

string = ...

team ​

string

Returns ​

Point[]