The pack
oidsRescue
function oidsRescue(): Pack<{ oidsRescue: typeof api }>
Install the oids-rescue API (game.oidsRescue): its rules for cave-flyer and its preset.
Helpers
OIDS_RESCUE
const OIDS_RESCUE: RescueOptions
Oids' rescue rules as the preset plays them: release, walking, boarding, docking, scoring and the journey.
OIDS_SHIP_OUTLINE
const OIDS_SHIP_OUTLINE: Vec2[]
The V-Wing drawn upright: a delta, the two rear corners its landing feet.
oidsBaseKinds
function oidsBaseKinds(rate = 1): Record<string, BaseKind>
Base kinds (sizes, toughness, guns). Rates are scaled by the difficulty.
oidsFlyers
function oidsFlyers(rate = 1): Record<string, FlyerKind>
Flyer kinds: the home bases' Hell Jets and the shielded Biocrete mothership.
oidsLeft
function oidsLeft(game: CaveFlyer): number
Free Oids left to collect on this planet (in factories, out, walking).
oidsPlanets
function oidsPlanets(kinds: Record<string, BaseKind> = oidsBaseKinds()): CavePlanetDef[]
The introductory galaxy: three planetoids in the style of the original's Novoids.
oidsPreset
function oidsPreset(o: OidsPresetOptions = {}): CaveFlyerDef
Oids (1987). Arcade is the hardest of the original's per-planetoid difficulty settings as we estimate it; Normal and Easy scale Biocrete fire, launch rates and projectile speed (x0.7 and x0.45 fire, x0.85 and x0.7 speed).
oidsProjectiles
function oidsProjectiles(speed = 1): Record<string, ProjectileKind>
Projectile kinds: photons, hunting spheres, heat-seeking missiles.
oidsRidge
function oidsRidge(points: Array<[number, number]>, seed = 1, jitter = 2.5): Vec2[]
A jagged mountain line through control points: horizontal stretches stay perfectly flat (landing ground), sloping stretches are broken every ~9 units by a fixed sideways jitter, the ST's crumbling ridges.
PROBE
const PROBE: 22
Length of the mothership's docking probe below its centre.
probeTip
function probeTip(game: CaveFlyer): { x: number; y: number }
The mothership's probe tip, where it hangs now.
rescueOf
function rescueOf(state: CaveState): RescueState | undefined
The rescue's state in a session, or undefined without rescueRule.
rescueRule
function rescueRule(R: RescueOptions): CaveRule
Oids' rescue. The ship needs capacity for its hold, and exhaust if the flame should kill.
treesOf
function treesOf(state: CaveState): TreeState[] | undefined
The trees' state in a session, or undefined without treesRule.
treesRule
function treesRule(o: TreesOptions = {}): CaveRule
Scenery that burns down when shot or caught in a bomb's blast (Oids' trees and bushes).
Types
FactoryState
interface FactoryState
A factory's live state.
id: string— Stable id.open: boolean— Blasted open.inside: number— Oids still inside.releaseT: number— Seconds to the next Oid leaving.
MothershipState
interface MothershipState
The mothership.
present: boolean— Waiting for the ship to dock.leaving: boolean— Climbing away after a drop-off or a relaunch.reason: "full" | "last" | null— Why it came: a full hold or the planet's last Oid.probe: number— How far the docking probe has dropped, 0 to 1.x: number— Centre x, world units.y: number— Centre y, world units (y down).t: number— Seconds in this state.
OidsPresetOptions
interface OidsPresetOptions
Options for oidsPreset.
difficulty?: CaveDifficulty— Easy, Normal or Arcade. Default 'arcade'.seed?: number— Seed.lives?: number— Spare V-Wings. Default 3 (four ships).bombs?: number— NovaBombs carried. Default 4.capacity?: number— Oids a full load holds. Default 8.gravity?: number— Multiply every planetoid's gravity. Default 1.planets?: number[]— Which planetoids, by index, in play order. Default all three.view?: number— View scale: 1 shows 320 x 200 world units (the ST screen at 1:1); larger shows more of the planetoid. Default 1.6.arrive?: "above" | "drop-off"— Where the mothership comes for a load: above the ship (the play review's choice) or at the drop-off point (the manual's wording). Default 'above'.
OidState
interface OidState
An Oid.
id: string— Stable id.phase: "inside" | "out" | "walk" | "aboard" | "rescued" | "dead"— Inside a factory, out (wandering, waving), walking to the ship, aboard, rescued, dead.factory: string— The factory it came from.x: number— Feet x, world units.y: number— Feet y (the ground it stands on).dir: number— Facing: -1 left, 1 right.t: number— Seconds in this state.
RescueOptions
interface RescueOptions
Oids' rescue rules.
release: number— Seconds between Oids leaving an open factory.walk: number— Walking speed, units/s.board: number— A landed ship within this walking distance is boarded.climb: number— Steepest step an Oid walks up or down per unit of distance.height: number— Oid height (for hits and drawing).dockTime: number— Seconds docked (refuelling, unloading) before relaunch.dock: { reach: number; tilt: number; speed: number }— Docking: the nose within this distance of the probe tip, tilt and speed under these.loseAboard?: boolean— Oids aboard die with the ship. Default true.arrive?: { at?: "above" | "drop-off"; y?: number }— Where the mothership arrives when the hold is full or the planet's last Oid is aboard:abovethe ship at the top of the play area (at heighty, default 40), or at thedrop-offpoint (the planet'smothershippoint, or above the start). Defaultdrop-off.probe?: { range: number; time: number }— The docking probe drops only when the ship comes withinrange, overtimeseconds. Omit: always down.score?: number— Points for each Oid delivered. Default 0.extraLifePer?: number— An extra ship for every this many Oids rescued (a running total). Default none.depart?: number— Seconds the mothership carries the ship away from a cleared planet. Default 2.warp?: number— Seconds of the journey to the next planet. Default 5.
RescueState
interface RescueState
The rescue's state.
oids: OidState[]— Every Oid on the planet.factories: FactoryState[]— Factories of Oids.aboard: number— Oids aboard.rescued: number— Oids rescued this game.mothership: MothershipState— The mothership.transit: { to: number; loop: number; name: string; t: number; time: number } | null— The journey between planets: the destination, its pass and name, and the seconds elapsed oftime.
TreesOptions
interface TreesOptions
Options for treesRule.
burn?: number— Seconds a shot tree burns before only its stump is left. Default 3.score?: number— Points for a tree burnt down. Default 0 (none, as in Oids).
TreeState
interface TreeState
A tree: standing, burning or a stump, and seconds in that state.
id: string— Stable id.x: number— Trunk x.y: number— The ground it stands on.phase: "standing" | "burning" | "stump"— Standing, burning or a stump.t: number— Seconds in this phase.


