five-on-it / apps/server/src/run-host / RunHostOptions
Interface: RunHostOptions
Defined in: apps/server/src/run-host.ts:167
What a run host is built with.
Properties
log?
optionallog?: (message) =>void
Defined in: apps/server/src/run-host.ts:183
Where to log.
Parameters
message
string
Returns
void
mission
mission:
object
Defined in: apps/server/src/run-host.ts:171
Its mission (its title; its hash when its source is not given).
actors
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
apps:
object[]
blurb?
optionalblurb?:string
contacts
contacts:
object[]
counters
counters:
Record<string,number>
dialogues
dialogues:
object[]
helpline?
optionalhelpline?:string
id
id:
string=Id
items
items:
object[]
objectives
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?
optionalplay?:object
play.ambient?
optionalambient?:object
play.ambient.pedestrians?
optionalpedestrians?:number
play.ambient.traffic?
optionaltraffic?:number
play.friendlyFire
friendlyFire:
boolean
play.joinInProgress
joinInProgress:
"never"|"untilCheckpoint"|"always"
play.lives?
optionallives?:object
play.lives.count
count:
number
play.lives.per
per:
"player"|"team"
play.mode
mode:
"solo"|"coop"|"versus"
play.onDeath?
optionalonDeath?:"checkpoint"|"spectate"|"teamSpawn"
play.players?
optionalplayers?:object
play.players.max
max:
number
play.players.min
min:
number
play.respect?
optionalrespect?:object
play.respect.min
min:
number
play.retries?
optionalretries?:number
play.teams?
optionalteams?:"each"|object[]
reward?
optionalreward?:object
reward.cash
cash:
number
reward.rep
rep:
number
rules
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
start: {
on:"join"; } | {on:"enter";zone:string; }
stealth?
optionalstealth?:object
stealth.bonus?
optionalbonus?:object
stealth.bonus.cash
cash:
number
stealth.bonus.rep
rep:
number
stealth.unseen?
optionalunseen?:"fail"|"bonus"
stealth.withoutAlerts?
optionalwithoutAlerts?:"fail"|"bonus"
stealth.withoutKills?
optionalwithoutKills?:"fail"|"bonus"
title
title:
string
missionSource?
optionalmissionSource?:unknown
Defined in: apps/server/src/run-host.ts:173
The mission as authored, before the schema's defaults (its hash: missionHash); the parsed mission's when absent.
now?
optionalnow?: () =>number
Defined in: apps/server/src/run-host.ts:179
The clock (ms).
Returns
number
report?
optionalreport?: (result) =>Promise<void>
Defined in: apps/server/src/run-host.ts:177
Sends the result to the platform; fetch to the spec's reportUrl by default.
Parameters
result
debug?
boolean = ...
forfeit?
boolean = ...
missionHash
string = ...
outcome
"complete" | "failed" | "abandoned" | "won" | "draw" = ...
runId
string = ...
seats
object[] = ...
seconds
number = ...
winner?
string = ...
Returns
Promise<void>
sleep?
optionalsleep?: (ms) =>Promise<void>
Defined in: apps/server/src/run-host.ts:181
Waits between two tries of the report (ms); a timer by default.
Parameters
ms
number
Returns
Promise<void>
spec
spec:
object
Defined in: apps/server/src/run-host.ts:169
The run.
game
game:
string
id
id:
string
mission
mission:
string
playtest?
optionalplaytest?:boolean
reportToken
reportToken:
string
reportUrl
reportUrl:
string
seats
seats:
object[]
teams
teams:
string[]
timing?
optionaltiming?:Partial<Record<"afkS"|"gatherS"|"countdownS"|"graceS"|"closeAfterS"|"reportForS"|"noShowS",number>>
Defined in: apps/server/src/run-host.ts:185
Other clocks, for the tests.
view
view: () =>
RunView|undefined
Defined in: apps/server/src/run-host.ts:175
The run as the missions' runtime reads it now (lives, retries, each seat's part).
Returns
RunView | undefined