Ostranaut Explorer

user story · EXPLORER

User story — Starter Ship Plus Mod

Source mod: test-data/mods/FreeTraits_and_StarterShipPlus/StarterShipPlusMod/ Original mod by: jwebmeister — https://github.com/jwebmeister Mod version: 0.3 (game version 0.12.0.6)


The goal

A modder has played enough Ostranauts to know that the default starter ships are small and burdened with a mortgage. They want a mod that replaces the starter ship selection with high-tier ships — Halberd, Mesa, Ocelot — fully owned, no mortgage, starting near Ok-Leg station with some damage already on the hull (so it doesn't feel like a cheat, just a different premise).

They know what they want in the game. They do not know where character-creation ship selection lives in the data, or how "no mortgage" is expressed.


The journey

Step 1 — Find where character creation hands the player a ship

The modder searches for a ship name they know from character creation — say Halberd. The explorer returns loot:CGEncShipHalberd with strType: ship and aCOs: ["Halberd=1.0x1"].

The incoming refs panel shows lifeevents:CGEncShipHalberdTake referencing it via strShipRewards. That life-event entry has bShipOwned: true and fShipMortgage: 0.0.

Explorer outcome: The modder learns the chain:

Step 2 — Understand the ship encounter structure

From the CGEncShipHalberdTake life event the modder follows outgoing refs and finds the chain:

CGEncShipbreakerShipEvents (loot, strType:lifeevent)
  aCOs → CGEncShipHalberdIntro | CGEncShipMesaIntro | CGEncShipOcelotIntro  [triggers]
  each trigger → CGEncShipXTake  [life event]
  CGEncShipXTake.strShipRewards → CGEncShipX  [loot, strType:ship]
  CGEncShipX.aCOs → Halberd / Mesa / Ocelot  [condowners, strType:ship]

The starting-ship loot table CGEncShipbreakerShipEvents is the entry point. It is referenced by the Shipbreaker career via aEventsShip.

Explorer outcome: The modder can see the full chain without reading raw JSON. They know which entries to override and in which order.

Step 3 — Understand fShipDmgMax and fStartATCRange

On the CGEncShipHalberdTake detail page, the Fields block shows:

The inline field descriptions explain what each controls.

Explorer outcome: The modder knows the exact fields to tune for starting conditions without reverse-engineering the game's character-creation screen.


Files in the mod's implementation

FileWhat it does
data/loot/loot_startershipmod.jsonOverrides CGEncShipbreakerShipEvents (the ship-selection loot table) to offer Halberd, Mesa, Ocelot as equal-probability picks. Also defines the CGEncShipX ship-loot entries pointing at the ship condowners, plus the trigger stubs (CGEncShipXIntro/Cont/Take) with empty interaction payloads that hand off to the life events.
data/lifeevents/lifeevents.jsonOverrides the CGEncShipXTake life events with bShipOwned: true, fShipMortgage: 0.0, fShipDmgMax: 0.6, fStartATCRange: 7.0, strStartATC: "OKLG". This is where "no mortgage, starts near Ok-Leg" lives.
data/interactions/interactions.jsonOverrides the CGEncShipXIntro/Cont/Take interaction stubs — these chain the life-event triggers together. The mod versions clear the interaction body so the vanilla encounter dialog doesn't fire.
mod_info.jsonLoader identification.

What the explorer needs to show for this story to succeed