A story campaign has a character identity and a timeline position. They are related values with different jobs. SlugcatStats.Name identifies the selected character and save slot. SlugcatStats.Timeline selects chronological world variants. SlugBase’s world_state feature supplies timeline priorities for a custom character.
SlugBase is optional for Rain World mods and required for the JSON feature described here. The behavior on this page was checked against SlugBase source commit dac343359d0f6e311de9f89345954f9ad2b25f3e. Compatibility with the current released package remains unverified.
Character identity enters the story session
The StoryGameSession(SlugcatStats.Name saveStateNumber, RainWorldGame game) constructor stores the supplied name, assigns it to RainWorld.lastActiveSaveSlot, and asks PlayerProgression.GetOrInitiateSaveState for the matching SaveState. It also creates SlugcatStats for that name.
SaveState retains the identity in saveStateNumber. Its constructor derives currentTimelinePosition by calling SlugcatStats.SlugcatToTimeline(saveStateNumber). The installed game also exposes SlugcatTimelineOrder, AtOrBeforeTimeline, and AtOrAfterTimeline. Code that checks campaign identity should use the story character or save slot name. Code that chooses chronological world content should use the timeline APIs.
Changing inherited world content does not rename the save slot. A custom character can remain LanternWren while inheriting Survivor’s White timeline content.
Set world priorities
SlugBase registers world_state as GameFeature<SlugcatStats.Timeline[]>. A single string is accepted as a one item list. Multiple values are checked in listed order. This original example gives the character’s own world content first and Survivor’s timeline second:
{
"id": "LanternWren",
"name": "The Lantern Wren",
"description": "A traveler following the glow of old shelters.",
"features": {
"karma": 1,
"karma_cap": 4,
"start_room": "SU_S01",
"world_state": ["LanternWren", "White"]
}
}Putting the character’s ID first lets character specific world files take precedence. In the pinned source, SlugBase also creates a character timeline when the first world_state value matches the character ID and no conflicting registered timeline owns it. White supplies the fallback.
The list is a priority order, but each content type has its own selection rule:
| Content | Selection rule in the pinned guide |
|---|---|
| Room settings, maps, region properties, and display names | First matching suffixed file |
| World files | First listed timeline mentioned anywhere in the file |
| Spawn override files | First matching Spawns_XX-name.txt file |
| Object filters, tokens, and triggers | First character name in the list |
For a world file, a listed character counts only when the file mentions that character. A no-op conditional link such as LanternWren : DISCONNECTED is enough to make the character eligible for that file. If the character is not mentioned, selection continues to the next timeline. Rooms and regions covers the surrounding region and room file structure.
Bound the inheritance claim
The SlugBase guide includes room connections, spawns, and accessible regions in world state. It excludes iterator states, echoes, and campaign cutscenes. A Hunter or Survivor fallback therefore gives the custom campaign those world variants where the selection rules find them. It does not reproduce that campaign’s complete narrative or saved history.
start_room is another separate choice. The example’s SU_S01 exists in the inspected base installation, but source inspection did not establish shelter suitability, entry behavior, or campaign readiness. Those need a game check with the intended region files and enabled mod set.
Dialogue and prior visits belong to saved campaign facts rather than timeline selection. See Campaign save data for those facts and Oracle dialogue for oracle dispatch. The JSON on this page was source checked only. It was not loaded in the game.
Sources
global::StoryGameSession,global::SaveState, andglobal::SlugcatStatsinAssembly-CSharp.dll, SHA-256B6BE1D4E18CE219D21091B51564CB6A11C1E4106B41DE903EB8E58849CB16FDB. See Runtime reference.- SlugBase world state guide at the pinned commit
- SlugBase timeline selection hook
- SlugBase character timeline registration