Skip to content

five-on-it / apps/api/src/missions-index / isRace

Function: isRace() ​

isRace(mission): boolean

Defined in: apps/api/src/missions-index.ts:92

Whether a mission is a race between the players: versus, with a race among its objectives.

Parameters ​

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 = 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; } = ...

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 = ...

Returns ​

boolean