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