Create / Modding reference

Modding reference

The complete catalog of the RON authoring vocabulary: every event, filter, action, object kind and expression node the scenario engine understands, each with its field table (types, defaults, units), a copyable snippet and its cross-references. Everything the base game ships is written in this vocabulary; anything it does, your content can do.

Learning rather than looking up? Follow Create your first scenario and Publish a mod first. Return here when you want the complete format for campaigns, scenarios, sections, ships, styles, or more advanced mission logic.

How RON content is written

The five spelling rules behind every snippet in these pages:

  • The loader is STRICT: an unknown or misspelled field is a hard parse error, not a silent default. Field names are load-bearing.
  • Constructs are newtype enum variants: Name((field: value, ...)) - double parens, even for one field. Event names are bare (OnStart); a few inner enums use single parens with named fields (Light(Directional(...)), Box(min: .., max: ..)).
  • Option fields keep their variant: Some(12.0), never a bare value. Omitting a defaulted field is always legal.
  • Tuples: positions are (x, y, z), rotations (x, y, z, w) quaternions; colors are tagged - Srgba((red: .., green: .., blue: .., alpha: ..)).
  • Asset paths are SCHEMED strings, never bare: self:// (your bundle), dep://base/ (base game - see the base content catalog), dep://<id>/ (a declared dependency).

The reference pages

The vocabulary by family

family constructs
Mod structure bundle and content files, Campaign, Scenario, Section, Ship, Style
Handler fields name, once, filters, actions
Events (16) OnStart, OnUpdate, OnTimerEnd, OnDefeated, OnDestroyed, OnNeutralized, OnEnter, OnExit, OnOrbitStart, OnOrbitStable, OnOrbitUnstable, OnOrbitEnd, OnTravelLockStart, OnTravelLockEnd, OnCombatLockStart, OnCombatLockEnd
Filters (4) Entity, Timer, Expression, Conditional (Not / And / Or)
Actions (26) spawning: SpawnScenarioObject, ScatterObjects, DespawnScenarioObject, CreateScenarioArea - mission: Objective, ObjectiveComplete, ObjectiveMarkerAttach, ObjectiveMarkerDetach, StoryMessage, HudReadout, HintEmphasisSet, HintEmphasisClear - pacing: Sequence - flow: Outcome, NextScenario - ships: SetSpeedCap, SetControllerVerb, SetAllegiance, ForceTorpedoLaunch - state: VariableSet, TimerStart, TimerCancel, DebugMessage - view: SetCamera, Screenshot, SetSkybox
Objects (6) Anchor, Asteroid, Spaceship, Beacon, SalvageCrate, Light (Directional / Point)
Damage effects (3) Cracks, Sparks, Plume - the looks a section wears as it is damaged, authored in base.damage_effects
Expression nodes (16) values: Number, String, Boolean - atoms: Literal, Name, Query, Parens - terms: Factor, Multiply, Divide - expressions: Term, Add, Subtract - conditions: LessThan, GreaterThan, Equal
Base ids & assets section prototypes, scenario ids, ship ids, style ids, dep://base/ assets

The wiki search (sidebar) indexes every construct name, so typing ScatterObjects or OnEnter up there jumps straight to the right page.

Every construct, A to Z

A - Add (expression node), AI (ship controller), Anchor (object), And (filter combinator), Asteroid (object)

B - Beacon (object), Boolean (literal), Box (scatter region)

C - Campaign (content item), Conditional (filter), Cracks (damage effect), CreateScenarioArea (action)

D - DebugMessage (action), DespawnScenarioObject (action), Directional (light method), DisableVerb (section modification), Divide (expression node)

E - Entity (filter), Equal (condition), Expression (filter)

F - Factor (expression node), ForceTorpedoLaunch (action)

G - GreaterThan (condition)

H - HintEmphasisClear, HintEmphasisSet, HudReadout (actions)

I - Inline (section source)

K - Keyboard / Mouse / Gamepad (input bindings)

L - LessThan (condition), Light (object), Literal (expression node)

M - Multiply (expression node)

N - Name (expression node), NextScenario (action), Not (filter combinator), Number (literal)

O - Objective, ObjectiveComplete, ObjectiveMarkerAttach, ObjectiveMarkerDetach (actions), OnCombatLockStart, OnCombatLockEnd, OnDefeated, OnDestroyed, OnEnter, OnExit, OnNeutralized, OnOrbitStart, OnOrbitStable, OnOrbitUnstable, OnOrbitEnd, OnStart, OnTimerEnd, OnTravelLockStart, OnTravelLockEnd, OnUpdate (events), once (handler field), Or (filter combinator), Outcome (action)

P - Parens (expression node), Player (ship controller), Plume (damage effect), Point (light method), Prototype (section source)

Q - Query (expression node)

R - Rename (section modification), Ring (scatter region)

S - SalvageCrate (object), ScatterObjects (action), Scenario (content item), Screenshot (action), Section (content item), Sequence (action), SetAllegiance, SetCamera, SetControllerVerb (actions), SetAmmo (section modification), SetHealth (section modification), SetSkybox, SetSpeedCap, Ship (content item), Sparks (damage effect), SpawnScenarioObject (actions), Spaceship (object), StoryMessage (action), String (literal), Style (content item), Subtract (expression node)

T - Term (expression node), Timer (filter), TimerCancel, TimerStart (actions)

V - VariableSet (action)

Typed queries and their auto-updating watched variables also belong to the vocabulary: queries and watched variables.

Extending the vocabulary

A construct that does not exist here cannot be authored in RON - adding an event, filter, action or object kind is a small Rust change, covered in the developer book. If you add one, its entry lands on these pages in the same task.