Skip to content

five-on-it / packages/missions/src/phone / PhoneContext

Interface: PhoneContext ​

Defined in: packages/missions/src/phone.ts:200

The runtime's view of a player's step, which the phone acts through.

Properties ​

at ​

at: Point

Defined in: packages/missions/src/phone.ts:206

Where the player is.


has ​

has: boolean

Defined in: packages/missions/src/phone.ts:204

Whether the player carries a phone.


mission ​

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"; })[]; apps: object[]; blurb?: string; contacts: object[]; counters: Record<string, number>; dialogues: object[]; helpline?: string; id: string; 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?: ... | ...; failed?: ... | ...; }; team?: string; text?: string; timeLimit?: number; to: string; verb: "goto"; } | { checkpoint?: boolean; failText?: string; hint?: string; id: string; marker?: string; next?: { done?: ... | ...; failed?: ... | ...; }; 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?: ... | ...; failed?: ... | ...; }; 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?: ... | ...; failed?: ... | ...; }; team?: string; text?: string; timeLimit?: number; verb: "pickup"; } | { checkpoint?: boolean; count: number; failText?: string; hint?: string; id: string; marker?: string; next?: { done?: ... | ...; failed?: ... | ...; }; tag: string; team?: string; text?: string; timeLimit?: number; verb: "collect"; } | { checkpoint?: boolean; failText?: string; hint?: string; id: string; interactable: string; marker?: string; next?: { done?: ... | ...; failed?: ... | ...; }; team?: string; text?: string; timeLimit?: number; verb: "use"; } | { checkpoint?: boolean; failText?: string; hint?: string; id: string; marker?: string; next?: { done?: ... | ...; failed?: ... | ...; }; seconds: number; team?: string; text?: string; timeLimit?: number; verb: "survive"; } | { checkpoint?: boolean; failIf?: Condition; failText?: string; hint?: string; id: string; marker?: string; next?: { done?: ... | ...; failed?: ... | ...; }; 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?: ... | ...; failed?: ... | ...; }; seconds: number; team?: string; text?: string; timeLimit?: number; verb: "lose"; } | { checkpoint?: boolean; failText?: string; group?: string; hint?: string; id: string; marker?: string; next?: { done?: ... | ...; failed?: ... | ...; }; 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?: ... | ...; failed?: ... | ...; }; 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?: ... | ...; failed?: ... | ...; }; 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?: ... | ...; failed?: ... | ...; }; team?: string; text?: string; timeLimit?: number; verb: "talk"; } | { checkpoint?: boolean; failText?: string; hint?: string; id: string; marker?: string; next?: { done?: ... | ...; failed?: ... | ...; }; 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?: ... | ...; failed?: ... | ...; }; 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?: ... | ...; failed?: ... | ...; }; 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?: ... | ...; failed?: ... | ...; }; team?: string; text?: string; timeLimit?: number; to: string; verb: "escort"; } | { checkpoint?: boolean; failText?: string; hint?: string; id: string; marker?: string; next?: { done?: ... | ...; failed?: ... | ...; }; 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?: ... | ...; failed?: ... | ...; }; place?: string; team?: string; text?: string; timeLimit?: number; verb: "photograph"; } | { checkpoint?: boolean; failText?: string; hint?: string; id: string; marker?: string; next?: { done?: ... | ...; failed?: ... | ...; }; 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?: ... | ...; failed?: ... | ...; }; seconds?: number; team?: string; text?: string; timeLimit?: number; verb: "escape"; } | { checkpoint?: boolean; failText?: string; hint?: string; id: string; marker?: string; next?: { done?: ... | ...; failed?: ... | ...; }; targets: string[]; team?: string; text?: string; timeLimit?: number; verb: "destroy"; } | { checkpoint?: boolean; count?: number; failText?: string; hint?: string; id: string; marker?: string; next?: { done?: ... | ...; failed?: ... | ...; }; 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[]; }; reward?: { cash: number; 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: ...; } | { 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"; }; })[]; if?: Condition; repeat: boolean; when: string; } | { enter?: ({ 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: ... | ... | ... | ...; }; })[]; every?: { do: ({ showText: string; } | { sendMessage: { from: ...; id?: ...; text: ...; }; } | { setFlag: string; } | { clearFlag: string; } | { startTimer: { id: ...; seconds: ...; }; } | { stopTimer: string; } | { add: { counter: ...; value: ...; }; } | { set: { counter: ...; value: ...; }; } | { spawn: { at?: ...; count?: ...; group: ...; }; } | { setWanted: number; } | { give: { count: ...; item: ...; }; } | { take: { count?: ...; tag: ...; }; } | { lock: { door: ...; }; } | { unlock: { door: ...; }; } | { lockVehicle: string; } | { unlockVehicle: string; } | { giveKey: string; } | { spawnItem: { at: ...; count: ...; item: ...; }; } | { alert: { npc?: ...; }; } | { calm: { npc?: ...; }; } | { cameraOff: { camera: ...; }; } | { cameraOn: { camera: ...; }; } | { reward: { cash: ...; rep: ...; }; } | { complete: true; } | { fail: ... | ...; } | { win: string; } | { message: { choices?: ...; from: ...; id?: ...; text: ...; }; } | { call: { dialogue: ...; from: ...; }; } | { addContact: { contact: ...; dialogue?: ...; }; } | { removeContact: string; } | { installApp: string; } | { removeApp: string; } | { waypoint: string; } | { clearWaypoint: true; } | { setClock: string; } | { setPace: number; } | { setWeather: { intensity: ...; kind: ...; minutes?: ...; over: ...; }; } | { skipTime: { hours: ...; text?: ...; }; } | { setSignal: { group?: ...; junction: ...; seconds?: ...; state: ...; }; })[]; if?: Condition; seconds: number; }; exit?: ({ 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: ... | ... | ... | ...; }; })[]; while: Condition; })[]; start: { on: "join"; } | { on: "enter"; zone: string; }; stealth?: { bonus?: { cash: number; rep: number; }; unseen?: "fail" | "bonus"; withoutAlerts?: "fail" | "bonus"; withoutKills?: "fail" | "bonus"; }; title: string; } | undefined

Defined in: packages/missions/src/phone.ts:208

The mission running, and its run (0 for none).


run ​

run: number

Defined in: packages/missions/src/phone.ts:209


tick ​

tick: number

Defined in: packages/missions/src/phone.ts:202

The tick.

Methods ​

act() ​

act(actions, form?): void

Defined in: packages/missions/src/phone.ts:213

Runs actions in the mission, with a form's fields.

Parameters ​

actions ​

readonly ({ 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: { players: { caught?: true; group?: string; in?: string; near?: { place: ...; radius: ...; }; tag?: string; team?: string; }; } | { enemies: { caught?: true; group?: string; in?: string; near?: { place: ...; radius: ...; }; tag?: string; team?: string; }; } | { vehicles: { caught?: true; group?: string; in?: string; near?: { place: ...; radius: ...; }; tag?: string; team?: string; }; } | { items: { caught?: true; group?: string; in?: string; near?: { place: ...; radius: ...; }; tag?: string; team?: string; }; }; } | { distance: ["player" | { actor: string; } | { place: string; } | { team: string; }, "player" | { actor: string; } | { place: string; } | { team: string; }]; } | { health: "player" | { actor: string; } | { place: string; } | { team: string; }; } | { wanted: true; } | { phaseOf: string; } | { phase: "search" | "normal" | "alert" | "caution" | "suspicious"; } | { kills: true; } | { alerts: true; } | { seen: true; } | { form: string; } | { time: true; }; }; } | { set: { counter: string; value: number | { counter: string; } | { timeLeft: true; } | { elapsed: true; } | { count: { players: { caught?: true; group?: string; in?: string; near?: { place: ...; radius: ...; }; tag?: string; team?: string; }; } | { enemies: { caught?: true; group?: string; in?: string; near?: { place: ...; radius: ...; }; tag?: string; team?: string; }; } | { vehicles: { caught?: true; group?: string; in?: string; near?: { place: ...; radius: ...; }; tag?: string; team?: string; }; } | { items: { caught?: true; group?: string; in?: string; near?: { place: ...; radius: ...; }; tag?: string; team?: string; }; }; } | { distance: ["player" | { actor: string; } | { place: string; } | { team: string; }, "player" | { actor: string; } | { place: string; } | { team: string; }]; } | { health: "player" | { actor: string; } | { place: string; } | { team: string; }; } | { wanted: true; } | { phaseOf: string; } | { phase: "search" | "normal" | "alert" | "caution" | "suspicious"; } | { 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"; }; })[]

form? ​

Readonly<Record<string, string>>

Returns ​

void


actorAt() ​

actorAt(actor): Point & object | undefined

Defined in: packages/missions/src/phone.ts:221

Where one of the mission's actors (a person, a terminal, a door) stands now, and whether a person is down; nothing once it is gone.

Parameters ​

actor ​

string

Returns ​

Point & object | undefined


emit() ​

emit(event): void

Defined in: packages/missions/src/phone.ts:215

An event for the mission's rules (handled on its next step).

Parameters ​

event ​

string

Returns ​

void


fill() ​

fill(text): string

Defined in: packages/missions/src/phone.ts:227

A text with its counters filled in.

Parameters ​

text ​

string

Returns ​

string


give() ​

give(actor): boolean

Defined in: packages/missions/src/phone.ts:231

The interaction key at a person: hands over what a give to them asks for; whether it did (else they talk).

Parameters ​

actor ​

string

Returns ​

boolean


hint() ​

hint(): string | undefined

Defined in: packages/missions/src/phone.ts:235

What the mission's help line says about the step under way; nothing without a help line.

Returns ​

string | undefined


holds() ​

holds(condition, form?): boolean

Defined in: packages/missions/src/phone.ts:211

Whether a condition holds in the mission's scope, with a form's fields.

Parameters ​

condition ​

Condition

form? ​

Readonly<Record<string, string>>

Returns ​

boolean


objectiveDialogue() ​

objectiveDialogue(who): string | undefined

Defined in: packages/missions/src/phone.ts:223

The dialogue a call to a contact (or a talk to an NPC actor) plays now: a talk objective's, when one is under way with them.

Parameters ​

who ​
actor? ​

string

contact? ​

string

Returns ​

string | undefined


openDoor() ​

openDoor(actor): void

Defined in: packages/missions/src/phone.ts:225

Unlocks a door actor and opens it away from the player (the keypad's right code).

Parameters ​

actor ​

string

Returns ​

void


photo() ​

photo(): PhotoNote

Defined in: packages/missions/src/phone.ts:233

What the player's photo of this step says (the host framed it).

Returns ​

PhotoNote


place() ​

place(id): Point | undefined

Defined in: packages/missions/src/phone.ts:229

A place by id.

Parameters ​

id ​

string

Returns ​

Point | undefined


talked() ​

talked(key): void

Defined in: packages/missions/src/phone.ts:217

Counts a conversation ended (<dialogue>) or a choice picked (<dialogue>.<choice>) for talk.

Parameters ​

key ​

string

Returns ​

void


used() ​

used(actor): void

Defined in: packages/missions/src/phone.ts:219

Counts a terminal used, for use.

Parameters ​

actor ​

string

Returns ​

void