Delta Story Format¶
Game version: 1.32a
← Moddable tables index · Documentation index
Library table: Delta Story Format (ID 1) · S&S Editor slot: 1 · Template: 1 delta_story_format.csv
Each row is a Story with up to 4 Decisions. The Delta format is the workhorse story table; Epsilon (split over 2 tables), Ferdinand (major-diplomacy) and Gustav (hooks/linked) are variants with the same column ideas. A story is instanced per the INSTANCETYPE scope (col 2), offered when its IF (col 3) passes, and its decisions drive result logic. The decision block (cols 15-32) repeats 4x with an 18-column stride (Decision 2 = 33-50, Decision 3 = 51-68, Decision 4 = 69-86).
Scope & logic¶
Per-row, selected by the instance_type column (story scopes — see Logic Scopes — what's available where).
Logic-bearing columns (build-time scope-checked): if, set, decisions[].if, decisions[].result_set, decisions[].result_if, decisions[].result_if_set, after_dec_logic[].check, after_dec_logic[].set, immediate_logic[].check, immediate_logic[].set, cinematics[].check
Columns¶
Column names + count are read from the live template (the game's own headers); descriptions are curated.
| Col | Name | Description |
|---|---|---|
| 0 | COMPLEX STORY ID | Complex Story ID — blank/0 to not use Complex Stories (see the story-group complex limit). |
| 1 | TITLE | Title — shown atop the story document and in the list. Limited UDS coding. |
| 2 | INSTANCETYPE | INSTANCETYPE — the scope this story is instanced in (selects which flags resolve; see Logic Scopes — what's available where). Values: 0 = global / national (secretary); 1 = org (per org, org leader); 2 = diplomatic (per other regime; sets TARGETREGIMEID/TARGETWAR/…); 3 = zone (per owned zone; ZONEID/ZONEKEY resolve here); 4 = character (per character); 5 = unit (per historical unit, non-HQ); 6 = unit-commander (per historical unit, HQ); 7 = trade (per trade; sets TRADEID) |
| 3 | IF | IF — story is a candidate when blank or this tests >0 (e.g. dth(1,100)<10). Scope-checked: flags must be available in the col-2 scope. |
| 4 | SET | SET — executed when the story is DISPLAYED (use for TEMP1.. setup only). For once-per-turn-while-present logic use Immediate Logic Set further along the row. |
| 5 | SENTENCE1regular | SENTENCE1regular — default opening text after the title (UDS coding allowed). Cols 6-7 are witty/low-IQ variants; sentences 2-3 follow (cols 8-13). |
| 6 | SENTENCE1witty | |
| 7 | SENTENCE1lowIq | |
| 8 | SENTENCE2regular | |
| 9 | SENTENCE2witty | |
| 10 | SENTENCE2lowIq | |
| 11 | SENTENCE3regular | |
| 12 | SENTENCE3witty | |
| 13 | SENTENCE3lowIq | |
| 14 | KEY QUESTION | KEY QUESTION — text placed between the sentences and the decisions. |
| 15 | DECISION1_IF | DECISION1_IF — IF gate; the decision is offered when blank or >0. |
| 16 | DECISION1 TEXT | DECISION1 TEXT — the decision button text (blank = no decision here). |
| 17 | REGIMEKEY | REGIMEKEY — optional extra cost key to pick this decision (e.g. credits, PP). Col 18 is the qty. |
| 18 | QTY | |
| 19 | TRAIT1A | TRAIT1A — optional Regime Profile used to compute the leader's attitude to this decision; col 20 is its delta. Cols 21-22 are an optional second trait. |
| 20 | TRAIT DELTA | |
| 21 | TRAIT 1B | |
| 22 | TRAIT DELTA | |
| 23 | ADVISE1A_TEXT | ADVISE1A_TEXT — advice speech-bubble text; col 24 is its talk code (use 1; see Talk Codes). Advice B/C in cols 25-28. |
| 24 | ADVISE1A_TALKCODE | |
| 25 | ADVISE1B_TEXT (sardonic) | |
| 26 | ASVISE1B_TALKCODE | |
| 27 | ADVISE1C_TEXT (auth+demo) | |
| 28 | ADVISE1C_TALKCODE | |
| 29 | RESULT1_SUCCES_TEXT | RESULT1_SUCCES_TEXT — text shown after this decision is chosen. |
| 30 | RESULT_SET | RESULT_SET — SET logic run when this decision is chosen (effect logic; scope-checked). |
| 31 | RESULT_IF | RESULT_IF — optional IF gating the RESULT_IF_SET (col 32). |
| 32 | RESULT_IF_SET | |
| 33 | DECISION2_IF | |
| 34 | DECISION2 TEXT | |
| 35 | REGIMEKEY | |
| 36 | QTY | |
| 37 | TRAIT2A | |
| 38 | TRAIT DELTA | |
| 39 | TRAIT 2B | |
| 40 | TRAIT DELTA | |
| 41 | ADVISE2A_TEXT | |
| 42 | ADVISE2A_TALKCODE | |
| 43 | ADVISE2B_TEXT (sardonic) | |
| 44 | ASVISE2B_TALKCODE | |
| 45 | ADVISE2C_TEXT | |
| 46 | ADVISE2C_TALKCODE | |
| 47 | RESULT2_SUCCES_TEXT | |
| 48 | RESULT_SET | |
| 49 | RESULT_IF | |
| 50 | RESULT_IF_SET | |
| 51 | DECISION3_IF | |
| 52 | DECISION3 TEXT | |
| 53 | REGIMEKEY | |
| 54 | QTY | |
| 55 | TRAIT3A | |
| 56 | TRAIT DELTA | |
| 57 | TRAIT 3B | |
| 58 | TRAIT DELTA | |
| 59 | ADVISE3A_TEXT | |
| 60 | ADVISE3A_TALKCODE | |
| 61 | ADVISE3B_TEXT | |
| 62 | ASVISE3B_TALKCODE | |
| 63 | ADVISE3C_TEXT | |
| 64 | ADVISE3C_TALKCODE | |
| 65 | RESULT3_SUCCES_TEXT | |
| 66 | RESULT_SET | |
| 67 | RESULT_IF | |
| 68 | RESULT_IF_SET | |
| 69 | DECISION4_IF | |
| 70 | DECISION4 TEXT | |
| 71 | REGIMEKEY | |
| 72 | QTY | |
| 73 | TRAIT4A | |
| 74 | TRAIT DELTA | |
| 75 | TRAIT 4B | |
| 76 | TRAIT DELTA | |
| 77 | ADVISE4A_TEXT | |
| 78 | ADVISE4A_TALKCODE | |
| 79 | ADVISE4B_TEXT | |
| 80 | ASVISE4B_TALKCODE | |
| 81 | ADVISE4C_TEXT | |
| 82 | ADVISE4C_TALKCODE | |
| 83 | RESULT4_SUCCES_TEXT | |
| 84 | RESULT_SET | |
| 85 | RESULT_IF | |
| 86 | RESULT_IF_SET | |
| 87 | DEFAULT DECISION NUMBER | Default Decision number — the secretary's pick if the player skips the turn. |
| 88 | TRAITSNOTASPROFILE | Traits-not-as-profile flag. |
| 89 | MAXRUNS | Max runs — how many times this story may run (1 typical). |
| 90 | STORY GROUP ID | Story Group ID — the group that gates how many of these run per turn (must exist). |
| 91 | COMPLEX_SPECIAL | Complex special. |
| 92 | MAX_1_INSTANCE_WEIGHT | Max weight — selection weight when multiple stories qualify (also the 'max 1 instance' weight). |
| 93 | AFTER_DEC_ALL_LOGIC_CHECK | |
| 94 | AFTER_DEC_ALL_LOGIC_SET | |
| 95 | AFTER_DEC_ALL_LOGIC_TEXT | |
| 96 | AFTER_DEC_ALL_LOGIC_CHECK | |
| 97 | AFTER_DEC_ALL_LOGIC_SET | |
| 98 | AFTER_DEC_ALL_LOGIC_TEXT | |
| 99 | AFTER_DEC_ALL_LOGIC_CHECK | |
| 100 | AFTER_DEC_ALL_LOGIC_SET | |
| 101 | AFTER_DEC_ALL_LOGIC_TEXT | |
| 102 | AFTER_DEC_ALL_LOGIC_CHECK | |
| 103 | AFTER_DEC_ALL_LOGIC_SET | |
| 104 | AFTER_DEC_ALL_LOGIC_TEXT | |
| 105 | AFTER_DEC_ALL_LOGIC_CHECK | |
| 106 | AFTER_DEC_ALL_LOGIC_SET | |
| 107 | AFTER_DEC_ALL_LOGIC_TEXT | |
| 108 | AFTER_DEC_ALL_LOGIC_CHECK | |
| 109 | AFTER_DEC_ALL_LOGIC_SET | |
| 110 | AFTER_DEC_ALL_LOGIC_TEXT | |
| 111 | IMMEDIATE_LOGIC_CHECK | |
| 112 | IMMEDIATE_LOGIC_SET | |
| 113 | IMMEDIATE_LOGIC_CHECK | |
| 114 | IMMEDIATE_LOGIC_SET | |
| 115 | IMMEDIATE_LOGIC_CHECK | |
| 116 | IMMEDIATE_LOGIC_SET | |
| 117 | IMMEDIATE_LOGIC_CHECK | |
| 118 | IMMEDIATE_LOGIC_SET | |
| 119 | IMMEDIATE_LOGIC_CHECK | |
| 120 | IMMEDIATE_LOGIC_SET | |
| 121 | IMMEDIATE_LOGIC_CHECK | |
| 122 | IMMEDIATE_LOGIC_SET | |
| 123 | IMMEDIATE_CINEMATIC_CHECK | |
| 124 | IMMEDIATE_CINEMATIC_TITLE | |
| 125 | IMMEDIATE_CINEMATIC_TEXT | |
| 126 | IMMEDIATE_CINEMATIC_ILLUSTR | |
| 127 | IMMEDIATE_CINEMATIC_BACKGROUND_ILLUSTR | |
| 128 | IMMEDIATE_CINEMATIC_GUI_MODE | |
| 129 | IMMEDIATE_CINEMATIC_CHECK | |
| 130 | IMMEDIATE_CINEMATIC_TITLE | |
| 131 | IMMEDIATE_CINEMATIC_TEXT | |
| 132 | IMMEDIATE_CINEMATIC_ILLUSTR | |
| 133 | IMMEDIATE_CINEMATIC_BACKGROUND_ILLUSTR | |
| 134 | IMMEDIATE_CINEMATIC_GUI_MODE |
Notes¶
-
After the tail come repeating logic/cinematic blocks: after_dec_logic (check/set/text), immediate_logic (check/set), cinematics (check/title/text/illustr/bg/gui_mode). immediate_logic runs once per turn while the story is present; after_dec_logic runs after a decision. Both are scope-checked.
-
ZONEKEY is safe in immediate_logic but NOT in after_dec_logic (it Mid()-errors there) — stash zone stats into REGKEYs from immediate_logic.
This doc was generated from extracting data from Shadow Empire version 1.32a on 2026-06-05 06:56 UTC.