Add Gender Doctrine group to M3 task 3.8 with three options: male_preference (Steel Ministry), equal (Survivorism, Terris), irrelevant (Cult of Ruin). Women can hold titles, serve in council, and wield Allomancy in all faiths — only inheritance order is affected. Add gender preference to M4 government types. Remove integrated ideas from IDEAS.md (unlanded crew → M5, debug decisions → TESTING.md). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
128 KiB
M4: Scadrial on the Map
The vanilla map feels like Scadrial. The mod is shareable.
Prerequisites
- M3: The Final Empire must be complete -- canonical characters exist, Lord
Ruler holds
e_final_empireand is Steel Ministry religious head, special buildings functional, custom name lists in place, religions polished. - The outputs from M3 that M4 directly depends on:
history/characters/00_mistborn_characters.txt-- all canonical characters with correct traits and dynasty assignmentshistory/titles/00_mistborn_titles.txt-- title holder assignments finalizedcommon/landed_titles/00_landed_titles.txt-- barony-to-province mappings stable (M4 relabels these but does not change the structure)common/modifiers/00_mistborn_modifiers.txt--ash_blightandkoloss_rampagemodifiers already definedcommon/religion/religions/00_scadrial_religions.txt-- religions finalized (needed for CB triggers that reference faith)common/scripted_triggers/mistborn_triggers.txt-- cultural/political triggers available for CB/scheme conditions
Current State
The mod uses vanilla Swiss/Swabian/Burgundy/Lombard provinces, which means players see "Bern", "Zurich", "Lyon" etc. in the map view. Vanilla events and decisions bleed through. No custom wars or schemes exist.
Province Localization (localization/english/mistborn_titles_l_english.yml):
- 261 lines of localization covering empire, kingdoms, duchies, counties, and baronies. County and barony names are already Scadrial-themed ("Luthadel", "Fellise", "Pits of Hathsin"). However, the underlying vanilla province names still show in tooltips and certain UI elements.
Province Modifiers (common/modifiers/00_mistborn_modifiers.txt):
ash_blightandkoloss_rampageprovince modifiers already defined.- No province-level modifiers for
mist_heavyorfertile_ashlandyet. - No province history assigns any province modifiers at game start.
Vanilla Suppression:
- M1 creates empty replacement files for vanilla decisions. M4 must expand this to cover vanilla events, vanilla GUI text bleed-through, and vanilla casus belli that break immersion.
Casus Belli: common/casus_belli_types/ directory does not exist.
Schemes: common/schemes/ directory does not exist.
Terrain/Map: The mod uses vanilla terrain assignments. No custom terrain modifiers are applied. The vanilla terrain types (farmland, mountains, forest, etc.) are used as-is.
Implementation Tasks
4.1 -- Relabel Vanilla Province Names via Localization
Context: Although the mod's landed_titles already have Scadrial names for counties and baronies, vanilla province IDs map to real-world locations. Some UI elements (tooltips, province map mode) may still show the vanilla province names. We need localization overrides for every vanilla province ID used by the mod to display Scadrial names instead.
Steps:
-
Create
localization/english/mistborn_provinces_l_english.ymlto override vanilla province names. For every province ID referenced incommon/landed_titles/00_landed_titles.txt, add an override entry. CK3 province name localization keys follow the pattern:PROV<number>:0 "Scadrial Name"Extract all province IDs from the landed titles file. The complete list from the codebase (by Dominance):
Central Dominance:
- 2046 = "Kredik Shaw" (b_kredik_shaw)
- 2047 = "Luthadel City" (b_luthadel_city)
- 2048 = "Luthadel Slums" (b_luthadel_slums)
- 2049 = "Fellise" (b_fellise)
- 2037 = "Fellise Estates" (b_fellise_estates)
- 2051 = "Holstep" (b_holstep)
- 2461 = "Holstep Mines" (b_holstep_mines)
- 2050 = "Valtroux" (b_valtroux)
- 2053 = "Valtroux Keep" (b_valtroux_keep)
- 2054 = "Tavring" (b_tavring)
- 2055 = "Tavring Fields" (b_tavring_fields)
- 2035 = "Austrex" (b_austrex)
- 2034 = "Austrex Docks" (b_austrex_docks)
- 2460 = "Haverfrex" (b_haverfrex)
- 2074 = "Haverfrex Mills" (b_haverfrex_mills)
- 3107 = "Kalling" (b_kalling)
- 2052 = "Kalling Plantations" (b_kalling_plantations)
- 2038 = "South Seran" (b_south_seran)
- 2039 = "Conventical of Seran" (b_conventical_of_seran)
- 2036 = "Suisna" (b_suisna)
- 2031 = "Suisna Farms" (b_suisna_farms)
Northern Dominance:
- 2768 = "Urteau" (b_urteau)
- 2769 = "Urteau Canal" (b_urteau_canal)
- 2773 = "Terristown" (b_terristown)
- 2767 = "Terris Synod" (b_terris_synod)
- 2748 = "Erlnest" (b_erlnest)
- 2749 = "Erlnest Steading" (b_erlnest_steading)
- 2746 = "Tathingdwen" (b_tathingdwen)
- 2747 = "Great Library of Tathingdwen" (b_tathingdwen_library)
- 2763 = "Bindal" (b_bindal)
- 2764 = "Bindal Pastures" (b_bindal_pastures)
- 2765 = "Vennsat" (b_vennsat)
- 2771 = "Vennsat Highlands" (b_vennsat_highlands)
- 2766 = "Torinost" (b_torinost)
- 2770 = "Torinost Fort" (b_torinost_fort)
- 2755 = "Mantiz" (b_mantiz)
- 2756 = "Mantiz Garrison" (b_mantiz_garrison)
- 2757 = "Nordel" (b_nordel)
- 2758 = "Nordel Mines" (b_nordel_mines)
Eastern Dominance:
- 2950 = "Fadrex City" (b_fadrex)
- 2953 = "Fadrex Garrison" (b_fadrex_garrison)
- 2954 = "Vetitan" (b_vetitan)
- 2955 = "Vetitan Quarry" (b_vetitan_quarry)
- 2952 = "Tremredare" (b_tremredare)
- 2951 = "Tremredare Walls" (b_tremredare_walls)
- 2945 = "East Austrex" (b_austrex_east)
- 2946 = "East Austrex Port" (b_austrex_east_port)
- 2947 = "Doriel" (b_doriel)
- 2949 = "Doriel Fields" (b_doriel_fields)
- 2948 = "Salmont" (b_salmont)
- 2942 = "Salmont Warehouses" (b_salmont_warehouses)
- 2943 = "Statlin City" (b_statlin)
- 2939 = "Statlin Market" (b_statlin_market)
- 2957 = "Benton" (b_benton)
- 2958 = "Benton Farms" (b_benton_farms)
- 2959 = "Elming" (b_elming)
- 2961 = "Elming Forge" (b_elming_forge)
Western Dominance:
- 2065 = "Hassedel" (b_hassedel)
- 2070 = "Hassedel Keep" (b_hassedel_keep)
- 2030 = "Turenval" (b_turenval)
- 2033 = "Turenval Orchards" (b_turenval_orchards)
- 2032 = "Wesring" (b_wesring)
- 2068 = "Wesring Tower" (b_wesring_tower)
- 2076 = "Longsfollow" (b_longsfollow)
- 2077 = "Longsfollow Inn" (b_longsfollow_inn)
- 2075 = "Kanton" (b_kanton)
- 2459 = "Kanton Mills" (b_kanton_mills)
- 2071 = "Brennin" (b_brennin)
- 2073 = "Brennin Vineyards" (b_brennin_vineyards)
- 2380 = "Charneost" (b_charneost)
- 2382 = "Charneost Garrison" (b_charneost_garrison)
- 2348 = "Dalling" (b_dalling)
- 2376 = "Dalling Stables" (b_dalling_stables)
Southern Dominance:
- 2482 = "The Pits of Hathsin" (b_pits_of_hathsin)
- 2481 = "Pits Garrison" (b_pits_garrison)
- 2480 = "Latten" (b_latten)
- 2479 = "Latten Outpost" (b_latten_outpost)
- 2477 = "Grenford" (b_grenford)
- 2478 = "Grenford Walls" (b_grenford_walls)
- 2041 = "Veldence" (b_veldence)
- 2045 = "Veldence Estate" (b_veldence_estate)
- 2043 = "Torining" (b_torining)
- 2044 = "Torining Watch" (b_torining_watch)
- 2469 = "Balefire" (b_balefire)
- 2467 = "Balefire Beacon" (b_balefire_beacon)
- 2494 = "South Keep" (b_south_keep)
- 2493 = "South Keep Barracks" (b_south_keep_barracks)
- 2499 = "Darriston" (b_darriston)
- 2495 = "Darriston Harbor" (b_darriston_harbor)
Remote Dominance:
- 2721 = "Remote Edge" (b_remote_edge)
- 2722 = "Remote Edge Watchtower" (b_remote_edge_watchtower)
- 2723 = "Ashfield" (b_ashfield)
- 2751 = "Ashfield Settlement" (b_ashfield_settlement)
- 2750 = "Misthollow" (b_misthollow)
- 2752 = "Misthollow Ruins" (b_misthollow_ruins)
- 2717 = "Farmost" (b_farmost)
- 2719 = "Farmost Outpost" (b_farmost_outpost)
- 2057 = "Koloss Range" (b_koloss_range)
- 2058 = "Koloss Range Fort" (b_koloss_range_fort)
- 2720 = "Deepness Border" (b_deepness_border)
- 2056 = "Deepness Watchtower" (b_deepness_watchtower)
- 2759 = "The Frontier" (b_frontier)
- 2760 = "Frontier Garrison" (b_frontier_garrison)
- 2761 = "Ashmount View" (b_ashmount_view)
- 2762 = "Ashmount View Shelter" (b_ashmount_view_shelter)
Write all entries in the format:
PROV2046:0 "Kredik Shaw" PROV2047:0 "Luthadel City"etc. for all ~105 province IDs.
-
Also override any vanilla geographical region names that appear in the UI. CK3 may display region names from
map_data/geographical_regions/. Create override localization for any visible region that references real-world names. The mod does not have custom map_data, so check which vanilla region names appear for the used province cluster (Swiss/Swabian area) and override them:world_europe_west:0 "The Final Empire" # etc. as needed -
Test: switch to province map mode and verify every province within the mod's borders shows a Scadrial name, not a vanilla European name.
Files:
localization/english/mistborn_provinces_l_english.yml-- create
References:
- Province IDs extracted from:
common/landed_titles/00_landed_titles.txt - Existing barony localization:
localization/english/mistborn_titles_l_english.yml:156-260
4.2 -- Apply Scadrial Terrain Flavoring via Province Modifiers
Context: The vanilla map terrain (mountains, plains, forest) cannot be
changed without a custom map. However, we can apply province modifiers at game
start to evoke Scadrial's terrain: ashmount-adjacent provinces get ash_blight,
misty lowlands get mist_heavy, and fertile regions get fertile_ashland.
Steps:
-
Define two new province modifiers in
common/modifiers/00_mistborn_modifiers.txt:# Heavy mist region - the mists are particularly thick here mist_heavy = { icon = "gfx/interface/icons/modifiers/modifier_mist_heavy.dds" development_growth_factor = -0.05 county_opinion_add = -5 } # Fertile ashland - one of the few productive regions fertile_ashland = { icon = "gfx/interface/icons/modifiers/modifier_fertile_ashland.dds" development_growth_factor = 0.15 tax_mult = 0.1 } -
Apply province modifiers at game start via
common/on_action/mistborn_on_actions.txt. In theon_game_starteffect block, add modifier assignments by county title:Ash blight -- provinces near "ashmounts" (Remote Dominance frontier, Ashmount View, portions of the Southern Dominance):
title:c_ashmount_view.title_province = { add_province_modifier = { modifier = ash_blight } } title:c_koloss_range.title_province = { add_province_modifier = { modifier = ash_blight } } title:c_deepness_border.title_province = { add_province_modifier = { modifier = ash_blight } } title:c_frontier.title_province = { add_province_modifier = { modifier = ash_blight } } title:c_balefire.title_province = { add_province_modifier = { modifier = ash_blight } }Heavy mist -- lowland areas, particularly Central Dominance and parts of Southern Dominance:
title:c_luthadel.title_province = { add_province_modifier = { modifier = mist_heavy } } title:c_fellise.title_province = { add_province_modifier = { modifier = mist_heavy } } title:c_suisna.title_province = { add_province_modifier = { modifier = mist_heavy } } title:c_pits_of_hathsin.title_province = { add_province_modifier = { modifier = mist_heavy } } title:c_misthollow.title_province = { add_province_modifier = { modifier = mist_heavy } }Fertile ashland -- the few productive regions (Central Dominance breadbasket, parts of Eastern Dominance):
title:c_holstep.title_province = { add_province_modifier = { modifier = fertile_ashland } } title:c_kalling.title_province = { add_province_modifier = { modifier = fertile_ashland } } title:c_turenval.title_province = { add_province_modifier = { modifier = fertile_ashland } } title:c_benton.title_province = { add_province_modifier = { modifier = fertile_ashland } } title:c_brennin.title_province = { add_province_modifier = { modifier = fertile_ashland } }Note: the exact CK3 syntax for applying province modifiers in on_actions may differ. The pattern
title:c_xxx.title_provinceis one approach. An alternative is to use the province history files to assign modifiers directly. Test both approaches; prefer whichever is cleaner. -
Add localization for the new modifiers in
localization/english/mistborn_modifiers_l_english.yml:mist_heavy:0 "Heavy Mists" mist_heavy_desc:0 "The mists are unnaturally thick in this region, rolling in every evening and lingering well past dawn. Most dare not venture out at night." fertile_ashland:0 "Fertile Ashland" fertile_ashland_desc:0 "Despite the constant ashfall, this region's soil has been enriched by centuries of careful cultivation. It is one of the few truly productive areas in the Final Empire." -
Also add localization for the existing
ash_blightandkoloss_rampagemodifiers if not already present:ash_blight:0 "Ash Blight" ash_blight_desc:0 "Thick layers of volcanic ash choke the land, stunting crops and covering buildings. Workers must clear the streets daily." koloss_rampage:0 "Koloss Rampage" koloss_rampage_desc:0 "Koloss have rampaged through this county, leaving destruction and terror in their wake."
Files:
common/modifiers/00_mistborn_modifiers.txt-- modify (add mist_heavy, fertile_ashland)common/on_action/mistborn_on_actions.txt-- modify (apply modifiers at game start)localization/english/mistborn_modifiers_l_english.yml-- modify
References:
- Existing province modifiers:
common/modifiers/00_mistborn_modifiers.txt:137-154 - Existing on_game_start:
common/on_action/mistborn_on_actions.txt:97-110 - Lore terrain descriptions:
docs/lore/mistborn-universe.md-- ashmounts, mists, ash
4.3 -- Suppress Vanilla Bleed-Through
Context: As a total conversion, any vanilla content that appears in the UI breaks immersion. Vanilla events (crusades, Vikings, plagues), decisions (found a kingdom, consecrate bloodline), and GUI text must be suppressed. M1 handles basic vanilla decision suppression. M4 does a thorough sweep.
Steps:
-
Vanilla event suppression. Create empty replacement event files in
events/for vanilla event groups that fire in the mod's geographic area and time period. CK3 mods can override vanilla files by placing a file with the same name in the mod directory. Key vanilla event files to suppress:events/dlc/fp1/fp1_*.txt-- Northern Lords Viking events (if any fire)events/activities/hold_court_events/*.txt-- vanilla hold court events that reference Christianity, Islam, etc.events/religion_events/*.txt-- vanilla religious events (crusades, pilgrimages, etc.)- Any vanilla event that fires during gameplay and mentions real-world religions, cultures, or locations.
For each file, create a matching file in the mod's
events/directory containing only a comment:# Suppressed by Lords of Ash total conversionImportant: Do NOT suppress ALL vanilla events. Many core game events (court events, lifestyle events, intrigue events) are culture/religion-neutral and should keep firing. Only suppress events that explicitly reference real-world content. Identify which events fire by playing a 20-year test game and logging which event IDs appear.
-
Vanilla casus belli suppression. Create empty replacement files in
common/casus_belli_types/for vanilla CB types that break immersion:- Crusade/Jihad/Great Holy War CBs
- "County Conquest" is fine to keep (it's generic)
- "Claim" is fine to keep
- Suppress religious-specific war types
Create
common/casus_belli_types/00_vanilla_suppressed.txt:# Vanilla CBs suppressed by Lords of Ash total conversion # See 00_mistborn_casus_belli.txt for custom replacements -
Vanilla GUI text overrides. Suppress vanilla text that bleeds through by overriding localization keys. Create
localization/english/mistborn_vanilla_overrides_l_english.ymlwith overrides for common vanilla text that appears:# Override vanilla text that mentions Christianity, Europe, etc. # Only override keys that actually appear in mod gameplaySpecific keys to override will be identified during testing. Common candidates:
holy_war_*localization keyscrusade_*localization keys- Any vanilla text that mentions "Pope", "Christ", "Muslim", "Viking", etc.
-
Suppress the Legend system. CK3's Legends of the Dead DLC adds a legend creation/spreading mechanic that does not fit the Final Empire — the Lord Ruler actively suppresses individual fame and historical memory. Suppress by creating empty replacement files:
common/legends/legend_types/— empty replacements for all vanilla legend type filescommon/legends/legend_chronicles/— empty replacementscommon/legends/legend_seeds/— empty replacements- Suppress legend-related decisions in
common/decisions/(identify via grep forlegendin vanilla decision files) - Override legend UI localization keys to prevent any legend text from appearing in tooltips or UI elements Note: if a future milestone wants Kelsier's martyrdom to function as a "legend-like" mechanic, build it as a custom modifier/flag system rather than reusing the vanilla Legend framework.
-
Vanilla lifestyle suppression assessment. Check whether vanilla lifestyle events (education, stress, romance) are safe to keep. Most should be fine (they are generic). Flag any that reference real-world content for localization override.
-
Test by playing a 20-year game and noting any text, event, or decision that references the real world. Fix each instance by either suppressing the source file or overriding the localization key.
Files:
events/-- create multiple empty suppression files (identified during testing)common/casus_belli_types/00_vanilla_suppressed.txt-- createlocalization/english/mistborn_vanilla_overrides_l_english.yml-- create
References:
- M1 Foundation: vanilla decision suppression already in place
- CK3 modding: mods override vanilla files by placing identically-named files
4.4 -- Create Custom Casus Belli Types
Context: The Final Empire needs custom war types that fit the setting: house wars between noble houses, skaa rebellions, Inquisition purges of heretics, and Dominance claims. These replace the generic/religious vanilla CBs.
Steps:
-
Create
common/casus_belli_types/00_mistborn_casus_belli.txtwith four custom CB types. -
House War CB -- Noble house vs noble house. The standard war type for Great House conflicts. Available to
noble_scadrianculture rulers with at least duchy-tier titles.house_war_cb = { group = claim combine_into_one = yes should_show_war_goal_subview = yes mutually_exclusive_titles = { always = yes } allowed_for_character = { is_noble_scadrian_trigger = yes highest_held_title_tier >= tier_duchy } allowed_against_character = { is_noble_scadrian_trigger = yes } target_titles = neighbor_land_or_water target_title_tier = tier_county valid_to_start = { scope:attacker = { prestige >= 500 NOT = { has_truce = scope:defender } } } cost = { prestige = { value = 500 } } on_declaration = { scope:attacker = { increase_lord_ruler_attention_effect = yes } } on_victory_desc = { first_valid = { triggered_desc = { trigger = { always = yes } desc = house_war_cb_victory_desc } } } on_victory = { scope:attacker = { every_in_list = { list = target_titles add_to_temporary_list = transferred_titles } } create_title_and_vassal_change = { type = conquest save_scope_as = change add_claim_on_loss = yes } every_in_list = { list = target_titles change_title_holder = { holder = scope:attacker change = scope:change } } resolve_title_and_vassal_change = scope:change } on_defeat = { scope:attacker = { pay_short_term_gold = { target = scope:defender gold = 200 } add_prestige = -300 } } on_white_peace = { scope:attacker = { add_prestige = -150 } } should_invalidate = { NOT = { any_in_list = { list = target_titles any_in_de_jure_hierarchy = { tier = tier_county holder = { target_is_same_character_or_above = scope:defender } } } } } max_defender_score_from_battles = 100 max_attacker_score_from_battles = 100 war_score_from_battles_factor = 1 war_score_from_occupation_ticking = yes max_ai_diplo_range_to_title = 500 } -
Rebellion CB -- Skaa or rebel characters rising against a noble lord or the Lord Ruler. Available to skaa culture characters or any character with
religion = survivorism.rebellion_cb = { group = claim combine_into_one = yes should_show_war_goal_subview = yes allowed_for_character = { OR = { is_skaa_trigger = yes religion = religion:survivorist_religion } } allowed_against_character = { is_noble_scadrian_trigger = yes } target_titles = neighbor_land_or_water target_title_tier = tier_county valid_to_start = { scope:attacker = { prestige >= 200 } } cost = { prestige = { value = 200 } } on_declaration = { scope:attacker = { # Rebellion draws massive Lord Ruler attention increase_lord_ruler_attention_effect = yes increase_lord_ruler_attention_effect = yes } } on_victory_desc = { first_valid = { triggered_desc = { trigger = { always = yes } desc = rebellion_cb_victory_desc } } } on_victory = { create_title_and_vassal_change = { type = conquest save_scope_as = change add_claim_on_loss = yes } every_in_list = { list = target_titles change_title_holder = { holder = scope:attacker change = scope:change } } resolve_title_and_vassal_change = scope:change scope:attacker = { add_prestige = 500 } } on_defeat = { scope:attacker = { add_prestige = -500 # Rebellion crushed -- devastating consequences increase_lord_ruler_attention_effect = yes } } on_white_peace = { scope:attacker = { add_prestige = -200 } } max_defender_score_from_battles = 100 max_attacker_score_from_battles = 100 war_score_from_battles_factor = 1.5 war_score_from_occupation_ticking = yes } -
Inquisition Purge CB -- Steel Ministry/Inquisitors purging heretics. Available to Steel Ministry characters with high piety.
inquisition_purge_cb = { group = religious combine_into_one = yes should_show_war_goal_subview = yes allowed_for_character = { religion = religion:steel_ministry_religion piety >= 500 } allowed_against_character = { NOT = { religion = religion:steel_ministry_religion } } target_titles = neighbor_land_or_water target_title_tier = tier_county valid_to_start = { scope:attacker = { piety >= 500 } } cost = { piety = { value = 500 } } on_declaration = { scope:attacker = { add_piety = 200 } } on_victory_desc = { first_valid = { triggered_desc = { trigger = { always = yes } desc = inquisition_purge_cb_victory_desc } } } on_victory = { create_title_and_vassal_change = { type = conquest save_scope_as = change add_claim_on_loss = no } every_in_list = { list = target_titles change_title_holder = { holder = scope:attacker change = scope:change } } resolve_title_and_vassal_change = scope:change # Force conversion of the conquered lands scope:defender = { set_character_faith = faith:steel_ministry } } on_defeat = { scope:attacker = { add_piety = -500 add_prestige = -300 } } on_white_peace = { scope:attacker = { add_piety = -200 } } max_defender_score_from_battles = 100 max_attacker_score_from_battles = 100 war_score_from_battles_factor = 1 war_score_from_occupation_ticking = yes } -
Dominance Claim CB -- Claim an entire Dominance (kingdom-tier title). Available only to very powerful rulers.
dominance_claim_cb = { group = claim combine_into_one = yes should_show_war_goal_subview = yes allowed_for_character = { highest_held_title_tier >= tier_duchy prestige >= 2000 } allowed_against_character = { highest_held_title_tier >= tier_kingdom } target_titles = all target_title_tier = tier_kingdom valid_to_start = { scope:attacker = { prestige >= 2000 NOT = { has_truce = scope:defender } } } cost = { prestige = { value = 2000 } gold = { value = 500 } } on_declaration = { # Claiming a Dominance is a massive act of defiance scope:attacker = { increase_lord_ruler_attention_effect = yes increase_lord_ruler_attention_effect = yes increase_lord_ruler_attention_effect = yes } } on_victory_desc = { first_valid = { triggered_desc = { trigger = { always = yes } desc = dominance_claim_cb_victory_desc } } } on_victory = { create_title_and_vassal_change = { type = conquest save_scope_as = change add_claim_on_loss = yes } every_in_list = { list = target_titles change_title_holder = { holder = scope:attacker change = scope:change } } resolve_title_and_vassal_change = scope:change scope:attacker = { add_prestige = 1000 } } on_defeat = { scope:attacker = { pay_short_term_gold = { target = scope:defender gold = 500 } add_prestige = -1000 increase_lord_ruler_attention_effect = yes } } on_white_peace = { scope:attacker = { add_prestige = -500 } } max_defender_score_from_battles = 100 max_attacker_score_from_battles = 100 war_score_from_battles_factor = 1 war_score_from_occupation_ticking = yes } -
Add localization for all CBs in
localization/english/mistborn_casus_belli_l_english.yml:house_war_cb:0 "House War" house_war_cb_desc:0 "Declare war against a rival noble house to seize their territories. A costly affair that draws the attention of the Lord Ruler." house_war_cb_victory_desc:0 "The defeated house cedes the contested territories." rebellion_cb:0 "Rebellion" rebellion_cb_desc:0 "Rise up against noble oppression. The skaa have suffered long enough. The Lord Ruler will take notice." rebellion_cb_victory_desc:0 "The rebels have overthrown their oppressors and seized control." inquisition_purge_cb:0 "Inquisition Purge" inquisition_purge_cb_desc:0 "The Steel Ministry demands the destruction of heretics. The Canton of Inquisition will purge these lands of false faith." inquisition_purge_cb_victory_desc:0 "The heretics have been purged. The Steel Ministry's authority is restored." dominance_claim_cb:0 "Dominance Claim" dominance_claim_cb_desc:0 "Stake your claim to an entire Dominance. Only the most ambitious and powerful lords would dare such an act of defiance." dominance_claim_cb_victory_desc:0 "The Dominance has been claimed. A new order emerges."
Files:
common/casus_belli_types/00_mistborn_casus_belli.txt-- createlocalization/english/mistborn_casus_belli_l_english.yml-- create
References:
- CK3 vanilla CB format:
common/casus_belli_types/in vanilla game data - Existing scripted effects for attention:
common/scripted_effects/mistborn_effects.txt:44-73 - Existing cultural triggers:
common/scripted_triggers/mistborn_triggers.txt:96-114
4.5 -- Create Custom Schemes
Context: Three custom schemes bring Mistborn's espionage flavor to life: Noble Infiltration (spy on houses via balls/agents), Raid House Vault (steal resources), and False Flag (frame a third party). Schemes are CK3's mechanic for long-term covert actions.
Steps:
-
Create the directory
common/schemes/if it does not exist. -
Create
common/schemes/00_mistborn_schemes.txtwith three scheme types. -
Noble Infiltration scheme -- a hostile scheme targeting another ruler. The schemer plants agents in the target's court to gather intelligence.
noble_infiltration = { skill = intrigue desc = noble_infiltration_desc is_secret = yes is_valid = { NOT = { scope:target = scope:owner } scope:owner = { is_noble_scadrian_trigger = yes is_ruler = yes } scope:target = { is_noble_scadrian_trigger = yes is_ruler = yes } } is_valid_showing_failures_only = { scope:owner = { is_available_adult = yes } } valid_target_character = { scope:target = { is_ruler = yes NOT = { this = scope:owner } } } base_success_chance = { base = 5 # Higher intrigue improves chances modifier = { add = { value = scope:owner.intrigue multiply = 2 } desc = scheme_skill_bonus } # Smokers (coppercloud) are better at infiltration modifier = { add = 15 scope:owner = { has_trait = trait_misting_smoker } desc = scheme_smoker_bonus } # Seekers can detect the target's Allomancers modifier = { add = 10 scope:owner = { has_trait = trait_misting_seeker } desc = scheme_seeker_bonus } # Mistborn get a large bonus modifier = { add = 20 scope:owner = { has_trait = trait_mistborn } desc = scheme_mistborn_bonus } # Target's intrigue defends modifier = { add = { value = scope:target.intrigue multiply = -2 } desc = scheme_target_defense } } agent_join_chance = { base = 10 } maximum_success = 95 maximum_secrecy = 95 on_ready = { trigger_event = mistborn_scheme.0001 } on_exposed = { scope:owner = { add_prestige = -200 increase_lord_ruler_attention_effect = yes } } base_speed = 5 cooldown = { months = 12 } } -
Raid House Vault scheme -- a hostile scheme to steal gold and reduce the target's control. Represents the kind of heist Kelsier's crew would pull.
raid_house_vault = { skill = intrigue desc = raid_house_vault_desc is_secret = yes is_valid = { NOT = { scope:target = scope:owner } scope:owner = { is_ruler = yes intrigue >= 10 } scope:target = { is_ruler = yes gold >= 100 } } is_valid_showing_failures_only = { scope:owner = { is_available_adult = yes } } valid_target_character = { scope:target = { is_ruler = yes NOT = { this = scope:owner } } } base_success_chance = { base = 0 modifier = { add = { value = scope:owner.intrigue multiply = 3 } desc = scheme_skill_bonus } # Coinshots are great at vault raids (Push/Pull metals) modifier = { add = 15 scope:owner = { OR = { has_trait = trait_misting_coinshot has_trait = trait_misting_lurcher } } desc = scheme_allomancy_bonus } modifier = { add = 25 scope:owner = { has_trait = trait_mistborn } desc = scheme_mistborn_bonus } modifier = { add = { value = scope:target.intrigue multiply = -2 } desc = scheme_target_defense } } agent_join_chance = { base = 5 } maximum_success = 90 maximum_secrecy = 85 on_ready = { trigger_event = mistborn_scheme.0010 } on_exposed = { scope:owner = { add_prestige = -300 increase_lord_ruler_attention_effect = yes } scope:target = { add_opinion = { modifier = angry_opinion target = scope:owner opinion = -50 } } } base_speed = 4 cooldown = { months = 24 } } -
False Flag scheme -- a hostile scheme against one target that frames a third party. On success, the target blames the framed party, not the schemer.
false_flag = { skill = intrigue desc = false_flag_desc is_secret = yes is_valid = { NOT = { scope:target = scope:owner } scope:owner = { is_ruler = yes intrigue >= 14 } scope:target = { is_ruler = yes } } is_valid_showing_failures_only = { scope:owner = { is_available_adult = yes } } valid_target_character = { scope:target = { is_ruler = yes NOT = { this = scope:owner } } } base_success_chance = { base = 0 modifier = { add = { value = scope:owner.intrigue multiply = 3 } desc = scheme_skill_bonus } # Soothers and Rioters excel at manipulation modifier = { add = 15 scope:owner = { OR = { has_trait = trait_misting_soother has_trait = trait_misting_rioter } } desc = scheme_emotional_allomancy_bonus } modifier = { add = 25 scope:owner = { has_trait = trait_mistborn } desc = scheme_mistborn_bonus } modifier = { add = { value = scope:target.intrigue multiply = -2 } desc = scheme_target_defense } } agent_join_chance = { base = 5 } maximum_success = 85 maximum_secrecy = 90 on_ready = { trigger_event = mistborn_scheme.0020 } on_exposed = { scope:owner = { add_prestige = -500 increase_lord_ruler_attention_effect = yes increase_lord_ruler_attention_effect = yes } } base_speed = 3 cooldown = { months = 36 } } -
Create scheme events in
events/scheme_events.txt. Each scheme needs at minimum a success event (fired byon_ready):Noble Infiltration success (
mistborn_scheme.0001):- Reveal a random secret trait of the target or one of their courtiers
- Grant an opinion/intrigue modifier
- Option: use the intelligence for blackmail or political gain
Raid House Vault success (
mistborn_scheme.0010):- Steal gold from target (200-500 based on roll)
- Reduce target's county control by 10-20
- Lord Ruler attention risk
False Flag success (
mistborn_scheme.0020):- Choose a third party to frame
- Target gains rivalry/hostile opinion toward the framed party
- Target loses opinion of the framed party, not the schemer
- If the framed party is another Great House, can trigger a House War
Use the
mistborn_schemeevent namespace. Each event should have 2-3 options representing different ways to exploit the scheme's success. -
Add localization for all schemes and events in
localization/english/mistborn_schemes_l_english.yml:noble_infiltration:0 "Noble Infiltration" noble_infiltration_desc:0 "Plant agents in a rival house's court to gather intelligence on their secrets, alliances, and Allomantic assets." raid_house_vault:0 "Raid House Vault" raid_house_vault_desc:0 "Send a crew to break into a rival house's vault, stealing gold and disrupting their operations." false_flag:0 "False Flag" false_flag_desc:0 "Orchestrate a hostile action against a target while framing a third party for the deed. Sow discord between your enemies." scheme_smoker_bonus:0 "Smoker: Coppercloud concealment" scheme_seeker_bonus:0 "Seeker: Allomantic detection" scheme_mistborn_bonus:0 "Mistborn: Complete Allomantic advantage" scheme_allomancy_bonus:0 "Allomantic advantage" scheme_emotional_allomancy_bonus:0 "Emotional Allomancy: Manipulation" scheme_skill_bonus:0 "Scheme skill" scheme_target_defense:0 "Target's defenses"Add event localization in
localization/english/mistborn_events_l_english.ymlformistborn_scheme.0001,mistborn_scheme.0010,mistborn_scheme.0020.
Files:
common/schemes/00_mistborn_schemes.txt-- createevents/scheme_events.txt-- createlocalization/english/mistborn_schemes_l_english.yml-- createlocalization/english/mistborn_events_l_english.yml-- modify (add scheme events)
References:
- CK3 vanilla scheme format:
common/schemes/in vanilla game data (e.g., murder, seduce) - Existing triggers:
common/scripted_triggers/mistborn_triggers.txt - Existing effects:
common/scripted_effects/mistborn_effects.txt:44-73(attention) - Lore:
docs/bookmarks/the end of an empire/events.md-- House Wars, False Flag, Raids
4.6 -- Custom Lifestyles, Focuses, and Perk Trees
Context: Vanilla CK3 lifestyles (Diplomacy, Martial, Stewardship, Intrigue, Learning) don't reflect the Mistborn world. "Chivalry" and "Pilgrimage" have no meaning in the Final Empire. Custom lifestyles define the moment-to-moment gameplay feel — they're what players interact with every session. Replacing them with Mistborn-themed lifestyles transforms how the game plays.
This task group replaces all 5 vanilla lifestyles with Mistborn-specific ones. Each lifestyle has 3 focuses and a perk tree of ~15 perks. Lifestyle events are added to give each focus narrative depth.
Steps:
-
Create
common/lifestyles/00_mistborn_lifestyles.txtdefining 5 lifestyles. Suppress vanilla lifestyles by creating empty replacement files for the vanilla lifestyle definitions.Lifestyle 1: Metallic Arts For Allomancers, Feruchemists, and those studying the metallic arts. XP skill: Martial (combat application) or Learning (theoretical study).
Focuses:
- Allomantic Mastery — Focuses on pushing Allomantic abilities to their peak. Events: intense metal-burning training, discovering new techniques, risk of savant burnout. Bonuses: prowess, martial, stress from overuse.
- Feruchemical Study — Focuses on understanding and storing attributes. Events: long meditative storage sessions, coppermind knowledge discoveries, metalwork crafting. Bonuses: learning, health, monthly piety.
- Hemalurgic Research — The dark path. Studying how to steal powers via
spikes. Events: experimenting on prisoners, Ruin's whispers growing
louder, moral degradation. Bonuses: intrigue, prowess, dread. Penalties:
piety loss, stress, Ruin influence. Requires
trait_knows_hemalurgy.
Perk tree (~15 perks):
- Metal Flaring — Burn metals harder for stronger effects. +2 prowess.
- Allomantic Efficiency — Extends
metal_reserves_abundantduration by 1 year (synergy with M2 metal supply system). - Metalmind Mastery — +50% to Feruchemical artifact stat bonuses.
- Compounding Insight — If character has both arts, unlock special Compounding events earlier. +3 health.
- Savant's Edge — Accept savant consequences for extreme power. +5 prowess, -1 health, +2 stress/month.
- Spike Crafter — Reduce cost/risk of Hemalurgic spike decisions.
- Allomantic Instinct — +20% chance to detect hidden Allomancers (for Seekers/Mistborn, integrates with bronze detection).
- Metal Whisperer — +2 to all Allomantic skill checks in events.
- Keeper's Discipline — +2 learning, -0.1 stress/month. Feruchemist only.
- Metalborn Reputation — +10 same-trait opinion, +5 monthly prestige for being known as a powerful metalborn.
- Iron Will — Resistance to Emotional Allomancy (Soothing/Rioting). -30% hostile scheme power from Soothers/Rioters.
- Pewter Drag — Burn pewter for extended periods. +4 prowess during wars, but risk of collapse (health event) when it ends.
- Tin Sentinel — Enhanced senses reveal secrets. +3 intrigue, +10% scheme discovery chance.
- Duralumin Burst — Once per lifetime, massively amplify a single Allomantic action. Triggers a unique event with extreme effect.
- Atium Shadow — If character has atium access, +8 prowess in duels (seeing the future). Extremely powerful capstone perk.
Lifestyle 2: Noble Intrigue For Great House politics, ball culture, and social maneuvering. XP skill: Diplomacy.
Focuses:
- Ball Culture — The art of noble gatherings. Events: hosting lavish balls, making alliances over wine, discovering secrets through dance. Bonuses: diplomacy, prestige, attraction opinion.
- House Espionage — Spying on rival houses. Events: planting agents, intercepting messages, blackmail. Bonuses: intrigue, scheme power.
- Contract & Commerce — Wealth and atium contracts. Events: trade negotiations, obligator-witnessed deals, atium bidding wars. Bonuses: stewardship, gold income, prestige.
Perk tree (~15 perks):
- Grand Host — Balls grant +50% prestige and better outcomes.
- Whisper Network — +15% personal scheme power.
- Atium Broker — +20% chance to win atium contract auctions.
- Noble Façade — +3 diplomacy, hide your true intentions.
- Alliance Weaver — +2 max alliances. Easier marriage negotiations.
- House Loyalty — +15 vassal opinion, +10 house member opinion.
- Informant Ring — Discover rival schemes 25% faster.
- Social Predator — Ball events have additional manipulation options.
- Contractual Leverage — +0.5 monthly gold per obligator contract.
- False Face — -20% chance of scheme exposure (for false flags).
- Power Broker — Can arrange marriages between other houses (matchmaker).
- Master of Whispers — Reveal 1 secret per year at balls automatically.
- Golden Tongue — +4 diplomacy. Personal schemes 20% faster.
- House Patriarch/Matriarch — All dynasty members gain +5 opinion of you.
- Puppeteer — Capstone. Can install a puppet ruler in a rival house through scheme.
Lifestyle 3: Steel Ministry For those aligned with the Lord Ruler's theocratic order. XP skill: Learning (theology/bureaucracy).
Focuses:
- Obligator's Path — The administrative arm. Events: contract witnessing, tax collection, census management. Bonuses: stewardship, learning, piety.
- Inquisition — The enforcement arm. Events: heresy investigations, prisoner interrogation, Allomancer hunts. Bonuses: dread, intrigue, martial.
- Canton Authority — Rise through the cantonal hierarchy. Events: canton politics, doctrinal disputes, Lord Ruler's favor. Bonuses: diplomacy, piety, monthly prestige.
Perk tree (~15 perks):
- Obligator Networks — +2 stewardship, +10% tax income.
- Steel Ministry Favor — -5 Lord Ruler attention per year.
- Inquisitorial Authority — Can imprison heretics without tyranny.
- Canton of Finance — +0.5 monthly gold, +1 stewardship.
- Canton of Orthodoxy — +2 piety/month, +10 clergy opinion.
- Canton of Inquisition — +3 dread, +2 intrigue.
- Lord Ruler's Eye — Gain attention slower (+25% attention decay).
- Doctrinal Purity — Conversion speed +50%.
- Ministry Spy — Acts as a built-in spymaster for the Ministry. Reveal 1 heretic per 2 years.
- Iron Fist — +20 dread, +2 martial. Counties under your control have +10% control growth.
- Theocratic Mandate — Can revoke titles from heretics without opinion penalty.
- Inquisitor's Blessing — If you denounce an Allomancer, gain piety and attention reduction.
- Canton Head — +1 domain limit, +0.3 monthly prestige.
- Voice of the Lord Ruler — +3 diplomacy when dealing with Ministry matters. Major opinion bonus with obligators.
- Sliver's Shadow — Capstone. The Lord Ruler considers you a trusted agent. Attention maximum reduced to 60 (you can get away with more).
Lifestyle 4: Underground For rebels, thieves, and skaa resistance fighters. XP skill: Intrigue.
Focuses:
- Crew Leadership — Running a thieving crew or rebel cell. Events: planning heists, recruiting specialists, managing crew loyalty. Bonuses: intrigue, martial, prestige among skaa.
- Guerrilla Warfare — Hit-and-run tactics against the Empire. Events: ambushes, supply raids, hideout management, close calls with Inquisitors. Bonuses: martial, prowess, MaA damage bonus.
- Shadow Network — Building an underground information and smuggling network. Events: safe house establishment, informant recruitment, message courier systems. Bonuses: intrigue, scheme power, gold.
Perk tree (~15 perks):
- Street Savvy — +2 intrigue, +10% hostile scheme resistance.
- Crew Loyalty — Crew members gain +15 opinion, -50% chance of betrayal.
- Safe Houses — -10% chance of skaa army discovery (M6 synergy).
- Smuggler Contacts — Black market metal acquisition is cheaper and safer.
- Guerrilla Tactics — +15% MaA advantage in skirmish phase.
- Mist Runner — Movement speed +25% at night. +2 prowess when fighting in mist provinces.
- Underground Railroad — Can smuggle characters out of prison/execution.
- Informant Network — +20% scheme discovery chance.
- Rebel Inspiration — +5 popular opinion. Skaa uprising strength +10%.
- Ghost of the Mists — -25% chance of being caught during raids.
- Heist Planner — Raid events have additional high-reward options.
- Skaa Champion — +10 skaa opinion, +2 martial. Named as a folk hero.
- Cell Structure — If arrested, your network survives. No cascade failure.
- Kelsier's Legacy — +3 to all skills when leading a rebellion. Only available after Kelsier's martyrdom.
- Survivor — Capstone. You've survived the Pits, the Inquisitors, and the Lord Ruler's wrath. +5 prowess, +3 intrigue, immune to execution (escape event fires instead).
Lifestyle 5: Scholarship For knowledge seekers, Keepers, and those who study the world's secrets. XP skill: Learning.
Focuses:
- Keeper's Path — Preserving and recovering forbidden knowledge. Events: transcribing oral histories into copperminds, discovering lost texts, risking exposure to the Ministry. Bonuses: learning, piety, stress loss.
- Metallurgic Theory — Understanding the deeper nature of the metals. Events: experimenting with alloys, theorizing about god-metals, mapping Allomantic bloodlines. Bonuses: learning, intrigue (secret knowledge).
- Imperial History — Studying the Final Empire's political history and the Lord Ruler's thousand-year reign. Events: uncovering cover-ups, reading Ministry archives, debating with obligators. Bonuses: diplomacy, learning.
Perk tree (~15 perks):
- Dedicated Scholar — +2 learning, +10% lifestyle XP gain.
- Coppermind Efficiency — Coppermind artifacts grant +2 additional learning.
- Lost Knowledge — Yearly chance to discover a lost technology or art. Grants temporary province modifier.
- Worldbringer's Oath — +3 piety, +1 learning. Terris Keeper identity.
- Allomantic Genealogist — Can identify characters with hidden Allomantic potential. +15% chance to discover skaa Allomancers.
- Metallurgic Theorist — +2 learning. Unlock Compounding theory events earlier.
- Archival Access — +1 intrigue. Can access Ministry archives (event chain revealing historical secrets).
- Linguistic Scholar — +2 diplomacy. Can communicate with Terris, skaa, and nobles equally (removes culture opinion penalty).
- Prophecy Student — Reading prophecy texts grants piety and learning. Can interpret the Hero of Ages prophecy.
- Medical Knowledge — +1 health, +0.5 health to courtiers (physician bonuses from preserved medical knowledge).
- Memory Palace — -0.2 stress/month. Enhanced memory from Feruchemical or scholarly techniques.
- Natural Philosopher — +3 learning. Understand ashfall patterns, predict eruptions. Province bonus to ashmount-adjacent holdings.
- Forbidden Texts — Access to suppressed knowledge. Can discover
Hemalurgy theory without a teacher (+flag
trait_knows_hemalurgy). - Keeper Elder — +4 learning, +2 diplomacy. Recognized as a master Keeper. All Terris characters gain +20 opinion.
- Truth Seeker — Capstone. You have uncovered the truth about the
Deepness, the Lord Ruler, and the nature of Preservation and Ruin.
+5 learning, +3 piety, grants
knows_cosmere_truthflag (flavor).
-
Create
common/lifestyles/focuses/00_mistborn_focuses.txtdefining all 15 focuses (3 per lifestyle). Each focus needs:lifestylereferenceskill(which stat grants XP)modifier(bonuses while this focus is active)auto_selection_weight(AI preference)- Events that can fire while this focus is active
-
Create
common/lifestyles/perks/00_mistborn_perks.txtdefining all ~75 perks. Each perk needs:lifestylereferencepositionin the perk tree (x/y grid)prerequisite_perks(which perks must be taken first)effectblock (what the perk grants)- Localization key for name + description
-
Create vanilla lifestyle suppression files:
common/lifestyles/00_lifestyles.txt— empty (overrides vanilla)common/lifestyles/focuses/00_focuses.txt— emptycommon/lifestyles/perks/00_perks.txt— empty- Verify which vanilla files need suppression by checking the CK3 game install directory structure.
-
Create lifestyle events in
events/lifestyle_events.txt(or split into multiple files per lifestyle). Each focus should have at least 3-5 events that can fire while that focus is active:- Metallic Arts: training events, savant risk, Compounding discovery
- Noble Intrigue: ball politics, espionage encounters, trade negotiations
- Steel Ministry: heresy investigations, canton politics, obligator duties
- Underground: heist planning, safe house events, close calls
- Scholarship: knowledge discovery, coppermind events, prophecy reading Estimate: 50-75 events total across all lifestyles.
-
Update all existing events that grant
add_X_lifestyle_xpto reference the new lifestyle XP types. Map the old references:add_diplomacy_lifestyle_xp→add_noble_intrigue_lifestyle_xp(or equivalent — depends on CK3 lifestyle XP API)add_martial_lifestyle_xp→add_metallic_arts_lifestyle_xpadd_intrigue_lifestyle_xp→add_underground_lifestyle_xpadd_learning_lifestyle_xp→add_scholarship_lifestyle_xpadd_stewardship_lifestyle_xp→ split between Noble Intrigue and Steel Ministry based on context
-
Add complete localization in
localization/english/mistborn_lifestyles_l_english.yml(new file):- 5 lifestyle names + descriptions
- 15 focus names + descriptions
- ~75 perk names + descriptions + tooltips
- 50-75 event titles + descriptions + options
- Estimate: 400-600 localization keys
Files:
common/lifestyles/00_mistborn_lifestyles.txt— createcommon/lifestyles/focuses/00_mistborn_focuses.txt— createcommon/lifestyles/perks/00_mistborn_perks.txt— createcommon/lifestyles/00_lifestyles.txt— create (vanilla suppression)common/lifestyles/focuses/00_focuses.txt— create (vanilla suppression)common/lifestyles/perks/00_perks.txt— create (vanilla suppression)events/lifestyle_events.txt— create (or split into per-lifestyle files)- All existing event files — modify (update lifestyle XP references)
localization/english/mistborn_lifestyles_l_english.yml— create
References:
- Vanilla lifestyle structure: check CK3 game install
common/lifestyles/,common/lifestyles/focuses/,common/lifestyles/perks/for format and syntax - Existing lifestyle XP grants:
events/ball_events.txt:185,events/mistborn_misc_events.txt:47,63,208,332,402,events/atium_events.txt:64,events/skaa_allomancer_events.txt:49,69,170 - Metal supply system (M2 task 2.7): synergizes with Allomantic Efficiency perk
- Ball events: synergize with Ball Culture focus and Grand Host perk
- Lord Ruler attention: synergizes with Steel Ministry's attention decay perks
- Rebellion mechanics (M6): synergize with Underground lifestyle perks
4.7 -- Activity System: Core Activities and Vanilla Replacement
Context: CK3's activity system (feasts, hunts, pilgrimages, tournaments) bleeds through and breaks immersion in a total conversion. Meanwhile the defining social activity of the Final Empire — the noble ball — is currently implemented as a simple decision + 4 events rather than a proper multi-phase activity. This task group suppresses vanilla activities, rethemes salvageable ones, and promotes the noble ball to a full activity with phases, guest lists, and branching outcomes.
Deeper Mistborn-specific activities (heists, tribunals, etc.) are deferred to M7 (task 7.12) to keep M4 focused on making the world shareable.
Steps:
-
Suppress vanilla activities. Create empty replacement files in
common/activities/that override vanilla activity definitions. Activities to suppress entirely:- Pilgrimage — no equivalent in the Steel Ministry
- Tournament — no chivalric combat tradition
- Grand Tour — no educational travel tradition
Verify suppression filenames by checking the CK3 game install's
common/activities/directory structure.
-
Retheme salvageable vanilla activities:
Feast → Noble Banquet: Rename and retheme the feast activity. A formal dinner hosted by a Great House — less grand than a ball, more intimate. Modify the activity definition to:
- Rename all localization to "Noble Banquet" / "House Dinner"
- Replace food-themed events with Scadrian fare (ashyam dishes, wine from Southern vineyards, imported Terris spices)
- Add an Allomantic display event (a house Soother calms the guests, a Tineye entertains with enhanced perceptions)
- Remove any medieval/religious event variants
- Keep the core guest list and opinion mechanics
Hunt → Mist Patrol: Retheme the hunt as a martial expedition into the mists. Noble houses send armed patrols to secure their holdings against koloss bands, skaa bandits, or mysterious mist creatures. Modify to:
- Rename to "Mist Patrol" / "Ashmount Expedition"
- Replace prey animals with koloss sightings, skaa bandit camps, mist wraith encounters
- Add Allomantic advantage events (Tineyes spot threats, Coinshots dispatch enemies at range)
- Replace hunting dog events with Hazekiller squad events
- Dangerous variant: "Deep Mist Expedition" into heavy mist zones with snapping potential for young Allomancers
Grand Wedding → House Alliance Ceremony: Retheme the wedding activity. In the Final Empire, marriages are political contracts witnessed by obligators. Modify to:
- Rename to "House Alliance Ceremony"
- Add obligator blessing events (piety cost, Lord Ruler attention if the marriage displeases the Ministry)
- Add "contract negotiation" phase (stewardship/diplomacy checks)
- Replace religious ceremony events with Steel Ministry rites
- Add Allomantic display events (the houses show off their Mistborn/ Mistings at the ceremony)
- Add intrigue variant: assassination attempt during the ceremony
-
Promote Noble Ball to full multi-phase activity. The ball is the centerpiece of noble Scadrian social life. Migrate the existing decision
- event chain (
host_a_ball_decision+mistborn_ball.*events) into a proper CK3 activity with phases. Define incommon/activities/:
Activity: Noble Ball (
noble_ball_activity)- Guest phase: Select which houses to invite. Each invitation has diplomatic consequences. Snubbing a house = opinion penalty. Inviting a rival = intrigue opportunities.
- Preparation phase: Choose the ball's character — grand display (prestige focus, expensive), intimate gathering (diplomacy focus, cheaper), or political summit (intrigue focus, scheme opportunities).
- Arrival phase: Guests arrive. Introduction events. First impressions. Hidden Allomancers may be detected by Seekers. Smokers conceal their house's Allomancers.
- Dance phase: Social interaction events. Alliance building, rumor spreading, romantic connections. Soothers and Rioters can manipulate emotions during conversations.
- Political phase: Backroom dealing. Scheme advancement for active schemes against attendees. Atium contract discussions. House rivalry escalation or de-escalation.
- Climax phase: Something dramatic happens (weighted random):
- Allomantic display (a young Misting shows off — prestige or embarrassment)
- Assassination attempt (the Ball Assassination arc from M7.4 integrates here)
- Scandal revealed (a secret is exposed — affairs, skaa heritage, etc.)
- Nothing dramatic (a pleasant, uneventful ball — rare but possible)
- Departure phase: Wrap-up. Opinion changes finalized. Aftermath events. Potential new alliances or rivalries formed. Lord Ruler attention check if anything conspicuous happened.
Update the existing
host_a_ball_decisionto launch this activity instead of directly firingmistborn_ball.0001. The existing ball events can be refactored into phase events. - event chain (
-
Add localization for all rethemed and new activity content in
localization/english/mistborn_activities_l_english.yml(new file).
Files:
common/activities/— new directory with activity definitionscommon/activities/noble_ball_activity.txt— createcommon/activities/noble_banquet_activity.txt— create (rethemed feast)common/activities/mist_patrol_activity.txt— create (rethemed hunt)common/activities/house_alliance_ceremony.txt— create (rethemed wedding)common/activities/— vanilla suppression files (empty overrides)events/ball_events.txt— major refactor into activity phasescommon/decisions/00_mistborn_decisions.txt— modify (ball decision launches activity)localization/english/mistborn_activities_l_english.yml— create
References:
- Existing ball events:
events/ball_events.txt:1-450(refactor into phases) - Existing ball decision:
common/decisions/00_mistborn_decisions.txt:1-50 - Vanilla activity structure: check CK3 game install
common/activities/for phase definitions, guest list mechanics, event hooks - Ball culture lore:
docs/lore/mistborn-universe.md— nobles attend elaborate balls as the primary venue for political maneuvering, showing off Allomantic power, and forming alliances
4.8 -- Council Positions, Court Roles, and Court Types
Context: Vanilla CK3's council positions (Chancellor, Marshal, Steward, Spymaster, Court Chaplain) and Royal Court court positions use medieval European framing. For a total conversion, every role must be rethemed and given custom tasks that interact with Mistborn systems (Lord Ruler attention, metal supply, Allomantic traits, skaa unrest). Court positions (Royal Court DLC) provide additional slots for Mistborn-specific advisors.
Steps:
-
Retheme the 5 council positions. Create
common/council_positions/00_mistborn_council.txt(or override vanilla via empty replacement + new definitions). Each position gets a new name, custom icon reference (placeholder until M8), and 2 custom council tasks alongside rethemed vanilla tasks.Vanilla Role Mistborn Role Lore Basis Chancellor Obligator Liaison Noble houses conduct diplomacy through obligators who witness contracts and mediate disputes Marshal Hazemaster Military commander who coordinates Hazekillers and conventional forces against Allomantic threats Steward House Comptroller Manages house finances, plantation output, and atium reserves Spymaster House Informant Runs the house's spy network — informants among the skaa, agents in rival courts Court Chaplain Ministry Preceptor The Steel Ministry's representative in the noble house; enforces orthodoxy and reports to the Canton -
Create custom council tasks. In
common/council_tasks/(new directory), define 2 custom tasks per position (10 total). Each task is a scripted effect that fires monthly and interacts with mod systems:Obligator Liaison (Chancellor replacement):
council_task_canton_diplomacy— Improve relations with the Steel Ministry. Monthly: +0.1 piety, small chance of Lord Ruler attention reduction (-2). Requires: councillor haslearning >= 8. Rethemes "Improve Relations."council_task_suppress_unrest— Dispatch obligators to calm skaa populations. Monthly: +0.5 county control in assigned province. If province hasash_blightmodifier, effectiveness halved. Chance of discovering skaa allomancers (triggersmistborn_skaa_allomancerevent if province has skaa population flag).
Hazemaster (Marshal replacement):
council_task_hunt_allomancers— Search for hidden skaa Mistings in the assigned province. Monthly check: councillor martial × 2% chance of discovering a hidden Allomancer. On success, fire event with options: capture (gain prisoner), kill (gain dread), recruit (gain courtier with Misting trait). Lord Ruler attention +3 if recruit option chosen.council_task_train_hazekillers— Improve anti-Allomancer military readiness. After 12 months of continuous training, grants province modifierhazekiller_training_ground(+15% hazekiller MaA damage, +5% toughness). Stacks with existing Hazekiller MaA bonuses from M2.
House Comptroller (Steward replacement):
council_task_manage_atium— Interact with the atium supply system (M2). Monthly: if province holds atium source, +5% atium income efficiency. If metal supply is "depleted," chance of discovering a hidden cache (triggersmistborn_atiumevent). Councillor stewardship adds to check.council_task_oversee_plantations— Maximize skaa labor output. Monthly: +0.3 gold income in assigned province. Annual event check: 15% chance of skaa unrest event (work conditions trigger rebellion sentiment). Trade-off: gold vs. stability.
House Informant (Spymaster replacement):
council_task_monitor_underground— Surveillance of skaa communities in the assigned province. Monthly check: councillor intrigue × 1.5% chance of discovering rebel cells. On success: fire event with options — arrest leaders (control +5, attention +2), infiltrate (gain scheme power vs. rebels), ignore (attention -1, risk grows). Allomantic Seeker councillor gets +20% detection bonus.council_task_deploy_smoker_network— Establish a coppercloud over your own court's activities. While active: -20% hostile scheme power against your court. If councillor hastrait_misting_smokerortrait_mistborn: bonus increases to -35%. Lord Ruler attention decay +1/year while active (your activities are hidden).
Ministry Preceptor (Court Chaplain replacement):
council_task_inspect_bloodlines— Investigate courtiers and vassals for Allomantic potential. Monthly check: councillor learning × 1% chance per courtier of revealing hiddentrait_allomantic_potential. On discovery, event fires with options: report to Ministry (piety +20, attention -5), keep secret (intrigue +1, attention +3 if discovered later), recruit for house (courtier gains snapping event queue).council_task_root_out_heresy— Suppress non-orthodox faiths (Terris Keepers, Survivorists, Cult of Ruin). Monthly: +0.3 piety. If province contains characters of non-Steel Ministry faith, 10% monthly chance of triggering persecution event. Success: convert character, piety +15. Failure: character flees, heresy spreads to adjacent province.
-
Retheme vanilla council tasks. The vanilla tasks that remain should have Mistborn-appropriate names and tooltips:
- "Fabricate Claim" → "File Canton Petition" (same mechanics, new flavor)
- "Increase Control" → "Pacify Dominance"
- "Collect Taxes" → "Extract Plantation Revenue"
- "Find Secrets" → "Infiltrate Rival House"
- "Convert Faith" → "Enforce Steel Ministry Orthodoxy"
Localization overrides in
localization/english/mistborn_council_l_english.yml.
-
Define custom court positions. In
common/court_positions/00_mistborn_court_positions.txt, create 7 Mistborn-specific court positions (Royal Court DLC). Each has a salary, stat requirements, and passive bonuses:Court Position Stat Requirement Passive Bonus Special Effect Terris Steward stewardship >= 8 +2 stewardship, +1 learning If character is Feruchemist: +1 additional learning, coppermind event access Kandra Agent intrigue >= 10, has kandra trait or flag +3 intrigue, +10 scheme power Unlocks "Replace a Courtier" interaction (M7). Requires kandra contract (M3 kandra trait) Allomantic Advisor has any Allomantic trait +2 to stat matching metal type (Coinshot→martial, Soother→diplomacy, etc.) Allomantic-themed court events. If Mistborn: +1 to all stats Hazekiller Captain prowess >= 12, martial >= 8 +3 prowess, +5 dread -15% hostile scheme success against liege. Anti-Allomancer security events Obligator Witness piety >= 100, Steel Ministry faith +0.2 monthly piety -3 Lord Ruler attention/year (Ministry presence = compliance). Trigger: reports unusual activity to Canton (event) Court Smoker has trait_misting_smokerortrait_mistborn-25% hostile scheme power in court Coppercloud over court: enemy Seekers cannot detect your Allomancers. Hides trait information from visitors Master of Revels diplomacy >= 10 +2 diplomacy, +0.1 monthly prestige Noble Ball activity bonuses (+10% guest acceptance). Ball events are richer when this position is filled -
Suppress vanilla court positions that don't fit. Create empty replacement files for court positions that are too medieval (e.g., Court Jester, Court Poet if they break immersion). Keep positions that are culture-neutral (Bodyguard → retheme as "Personal Hazekiller," Court Physician → retheme as "House Healer"). Localization overrides for rethemed positions.
-
Localization. Create
localization/english/mistborn_council_l_english.ymlwith all new keys:- 5 council position names + descriptions (~20 keys)
- 10 custom council task names + descriptions + tooltips (~40 keys)
- Rethemed vanilla council task names (~10 keys)
- 7 court position names + descriptions + hire/fire tooltips (~35 keys)
- Rethemed vanilla court position names (~10 keys)
- Total: ~115 new localization keys
Files:
common/council_positions/00_mistborn_council.txt-- createcommon/council_tasks/00_mistborn_council_tasks.txt-- createcommon/court_positions/00_mistborn_court_positions.txt-- createlocalization/english/mistborn_council_l_english.yml-- create- Vanilla council suppression files as needed -- create (empty replacements)
- Vanilla court position suppression files as needed -- create (empty replacements)
References:
- Vanilla council positions: CK3 game install
common/council_positions/00_council_positions.txt - Vanilla council tasks: CK3 game install
common/council_tasks/ - Vanilla court positions: CK3 game install
common/court_positions/ - Lord Ruler attention system:
common/scripted_effects/mistborn_effects.txt - Metal supply system: M2 task 2.7
- Kandra trait: M3 task 3.7
- Allomantic traits:
common/traits/00_allomancy_traits.txt
4.9 -- Caste Laws and Consequences
Context: The noble/skaa divide is the central tension of the Final Empire. Nobles rule, skaa are property. Cross-caste relationships happen (Vin's backstory) but carry severe consequences — half-skaa children are supposed to be killed. This needs both structural enforcement (laws that gate what skaa can do) and personal drama (events when the rules are broken). Post-rebellion, these laws can be repealed, tying into the innovation/era unlock system (4.10).
Steps:
-
Define Caste Laws. In
common/laws/00_mistborn_laws.txt(new directory/ file), create a "Caste Law" law group with 3 tiers:caste_law_strict(default under the Lord Ruler):- Skaa characters cannot hold titles above barony tier
- Skaa characters cannot be appointed to council positions
- Cross-caste marriage is forbidden (AI will not propose, player gets a confirmation warning + consequences)
- Skaa characters have -20 opinion with noble rulers
- Noble characters get +0.1 monthly prestige (caste privilege)
- Modifier:
strict_caste_law_modifier
caste_law_relaxed(available post-rebellion or with high autonomy):- Skaa can hold titles up to county tier
- Skaa can be appointed to some council positions (not Ministry Preceptor)
- Cross-caste marriage is permitted but carries -10 opinion with traditional nobles
- Modifier:
relaxed_caste_law_modifier
caste_law_abolished(available only post-Lord Ruler fall):- No restrictions based on culture/caste
- All opinion penalties from caste removed
- Unlocks "Integrate Skaa Nobility" decision
- Modifier:
caste_abolished_modifier(+10 popular opinion, -10 opinion with traditional noble vassals for 20 years)
The law group should use:
caste_laws = { default = caste_law_strict flag = caste_law # Can only change if conditions are met } -
Create cross-caste consequence events. In
events/caste_events.txt(new file), namespacemistborn_caste:-
mistborn_caste.0001— Noble-skaa affair discovered. Fires when a noble ruler has a skaa lover/consort (yearly check, 20% chance of discovery). Options: deny (intrigue check), confess and beg Ministry forgiveness (piety -50, attention +5), eliminate the skaa lover (dread +10, stress +20), marry them (only ifcaste_law_relaxed, attention +10). -
mistborn_caste.0002— Half-skaa child born. Fires on birth of a child where one parent is noble_scadrian and the other is skaa. Undercaste_law_strict: event gives options — kill the child (dread +5, stress +30, attention -5), hide the child (intrigue check, child gainshidden_skaa_heritageflag, discovery risk), acknowledge openly (attention +15, massive opinion penalty, but child gains legitimacy). -
mistborn_caste.0003— Hidden heritage discovered. A character withhidden_skaa_heritageis exposed. This can fire from: Inquisitor investigation (M3.11), Ministry Preceptor "Inspect Bloodlines" task (M4 4.8), or random yearly event (5% chance). Consequences: the character loses any noble titles, opinion collapse, Lord Ruler attention +10 for their lord. -
mistborn_caste.0004— Skaa protests caste restrictions. Province event undercaste_law_strict. Yearly pulse, 10% chance in provinces with high skaa population. Options: crush protest (control +3, popular opinion -10), make concessions (control -2, popular opinion +5, attention +3), ignore (50% chance of escalation to rebellion CB). -
mistborn_caste.0005— Skaa Allomancer in noble court. A skaa courtier with hidden Allomantic abilities is discovered. Undercaste_law_strict: the character must be surrendered to the Ministry or hidden (intrigue check, attention +8 if caught). Undercaste_law_relaxed: you can legitimize them as a house agent.
-
-
Wire caste laws into existing systems. Update triggers and effects:
- Marriage proposals: check caste compatibility based on active law
- Council appointment: check caste eligibility per law tier
- Title grant: check tier restrictions per law
- AI behavior: nobles under strict caste law won't befriend skaa, won't choose skaa councillors, won't arrange cross-caste marriages
- Add
caste_law_check_triggertomistborn_triggers.txtfor reuse
-
Localization. Add entries for:
- 3 law names + descriptions (~12 keys)
- 3 law modifier names + descriptions (~6 keys)
- ~5 caste events (title + description + 3-4 options each, ~50 keys)
- Law change decision text (~5 keys)
- Total: ~73 new localization keys
Files:
common/laws/00_mistborn_laws.txt-- createcommon/modifiers/00_mistborn_modifiers.txt-- modify (add caste modifiers)events/caste_events.txt-- createcommon/scripted_triggers/mistborn_triggers.txt-- modify (caste checks)localization/english/mistborn_laws_l_english.yml-- create
References:
- Vanilla law format: CK3 game install
common/laws/ - Caste Doctrine (M3 task 3.8):
doctrine_caste_divine_orderetc. — doctrine interacts with caste law (Steel Ministry doctrine reinforces strict law) - Lord Ruler attention:
common/scripted_effects/mistborn_effects.txt - Vin's backstory: half-skaa child of a noble, mother killed, grew up on the streets — this is exactly the kind of drama the caste events should produce
- Post-rebellion unlock: ties to innovation system (4.10)
4.10 -- Cultural Innovations: Imperial Stagnation and Post-Rebellion Era
Context: CK3's innovation system represents technological and cultural advancement. In the Final Empire, the Lord Ruler enforces 1,000 years of stagnation — progress is forbidden. The innovation system should reflect this: everything is locked during the Lord Ruler's reign, and a new era of discovery opens only after his fall. This creates a powerful mechanical contrast between the suffocating status quo and the explosive potential of liberation.
Steps:
-
Define the "Imperial Stagnation" era. In
common/culture/innovations/(new directory), create a custom era system. CK3 innovations are grouped by eras (Tribal, Early Medieval, etc.). For Scadrial:Era 1: "Age of the Lord Ruler" (active at game start) All innovations in this era are pre-unlocked at game start. They represent the technological ceiling the Lord Ruler permits:
innovation_plantation_agriculture— Skaa farming techniques. Grants: basic building slots, food production.innovation_ashland_engineering— Building in ash-covered terrain. Grants: ash-resistant buildings, canal construction.innovation_allomantic_metallurgy— Basic metal refining for Allomancy. Grants: metal vial crafting (M3 artifacts), allomantic training.innovation_hazekiller_tactics— Anti-Allomancer military techniques. Grants: Hazekiller MaA upgrades.innovation_obligator_bureaucracy— Steel Ministry administrative system. Grants: obligator-related council tasks, canton administration.innovation_caste_codification— The legal framework of noble/skaa separation. Grants: caste laws (task 4.9). Pre-unlocked because the system is already established.innovation_canal_networks— Transport infrastructure. Grants: trade route bonuses, movement speed.innovation_keep_architecture— Fortified noble keeps. Grants: defensive buildings, keep upgrades. Total: ~8 pre-unlocked innovations representing the Empire's static technological state.
-
Define the "Age of Liberation" era. This era is locked until the Lord Ruler falls (triggered by M7 endgame). Innovations become discoverable only after the
lord_ruler_fallenglobal flag is set:innovation_free_metallurgy— Unrestricted metal research. Grants: improved allomantic training, new metal alloy weapons, metal supply efficiency +20%.innovation_printing_press— Knowledge can spread freely. Grants: +30% development growth, learning bonus, Keeper knowledge spreads faster.innovation_skaa_citizenship— Former slaves gain rights. Grants: unlockcaste_law_abolished, skaa characters can hold any title, skaa recruitment bonuses.innovation_democratic_councils— Post-rebellion governance experiments. Grants: new council task options, elective succession available.innovation_feruchemical_scholarship— Feruchemy studied openly. Grants: Feruchemist training decisions for non-Terris characters, coppermind sharing bonuses, Terris Synod activity improvements (M7).innovation_allomantic_theory— Systematic study of Allomancy. Grants: improved snapping event outcomes (+10% Mistborn chance), allomantic strength training decisions, Allomantic Exhibition activity bonuses (M7).innovation_koloss_integration— Taming koloss for civil use. Grants: koloss MaA improved, koloss characters can be courtiers, koloss labor for province development.innovation_inter_dominance_trade— Free trade between dominances. Grants: trade route income +30%, atium can be traded freely, trade agreement CBs replaced by peaceful negotiation. Total: ~8 post-rebellion innovations representing the explosion of progress.
-
Implement the era gate. The "Age of Liberation" era requires:
can_progress = { has_global_variable = lord_ruler_fallen }This variable is set by the Fall of Kredik Shaw endgame event (M7 task 7.7). Before this variable exists, no character can research Age of Liberation innovations.
The innovation UI should show the locked era with a tooltip explaining: "The Lord Ruler forbids progress. Only his fall can unlock a new age." (Localization override for era description.)
-
Suppress vanilla eras. Create empty replacement files for vanilla innovation definitions:
common/culture/innovations/00_tribal_innovations.txt— emptycommon/culture/innovations/00_early_medieval_innovations.txt— emptycommon/culture/innovations/00_high_medieval_innovations.txt— emptycommon/culture/innovations/00_late_medieval_innovations.txt— empty Verify the exact file names against the CK3 game install.
-
Keeper Network synergy. Each Keeper character in your realm (M3.11) provides +5% innovation research speed for Age of Liberation innovations. This represents the Keepers' preserved knowledge accelerating the post- rebellion renaissance. Implement as a realm modifier that scales with Keeper count:
keeper_knowledge_bonus = { # Applied via yearly pulse, scaled by number of Keepers culture_innovation_progress_mult = 0.05 # per Keeper, up to +25% } -
Localization. Add entries for:
- 2 era names + descriptions (~8 keys)
- ~16 innovation names + descriptions (~64 keys)
- Era gate tooltip (~2 keys)
- Keeper synergy modifier (~2 keys)
- Total: ~76 new localization keys
Files:
common/culture/innovations/00_scadrial_innovations.txt-- createcommon/culture/innovations/00_tribal_innovations.txt-- create (empty, suppress vanilla)common/culture/innovations/00_early_medieval_innovations.txt-- create (empty, suppress vanilla)common/culture/innovations/00_high_medieval_innovations.txt-- create (empty, suppress vanilla)common/culture/innovations/00_late_medieval_innovations.txt-- create (empty, suppress vanilla)common/modifiers/00_mistborn_modifiers.txt-- modify (keeper bonus)localization/english/mistborn_innovations_l_english.yml-- create
References:
- Vanilla innovation format: CK3 game install
common/culture/innovations/ - Fall of Kredik Shaw endgame: M7 task 7.7 (sets
lord_ruler_fallenflag) - Keeper Network: M3 task 3.11
- Caste law system: M4 task 4.9 (innovations gate law changes)
- Lore:
docs/lore/mistborn-universe.md— Lord Ruler suppresses progress, post-rebellion society rapidly advances (Era 2 themes)
4.11 -- Custom Government Types
Context: The Final Empire is not feudal. The Lord Ruler appoints house lords, there is no partition inheritance, and the Steel Ministry runs a parallel theocratic governance structure. CK3 supports custom government types that change succession rules, available laws, council behavior, and UI presentation. Multiple government types are needed to reflect the different power structures at play.
Steps:
-
Define "Imperial Appointment" government. In
common/governments/(new directory), create the primary government type for noble houses:imperial_appointment_government = { # No partition — succession is by appointment # The Lord Ruler (or liege) designates the heir # Vassals cannot change succession law while Lord Ruler lives }Properties:
- Succession: designated heir (liege picks). Under Lord Ruler: the Lord Ruler technically appoints all lords. Mechanically: realm succession is "House Seniority" or "Designation" to prevent partition.
- Gender: male preference — sons inherit before daughters of equal standing, but women can hold all titles, lead armies, and participate fully in politics and Allomancy. Driven by the faith's gender doctrine (M3.8).
- No elective, no partition, no gavelkind
- Cannot change succession law while
lord_ruler_fallenis false - Domain limit: based on title tier (duchy +2, kingdom +4, empire +8)
- Available laws: caste laws (M4.9), Standard obligation laws (rethemed)
- Council: uses rethemed council positions from M4.8
- UI flag: custom government icon (placeholder until M8)
-
Define "Theocratic Ministry" government. For Steel Ministry holdings (Conventical of Seran, any canton holdings):
theocratic_ministry_government = { # Succession: appointment by religious head (Lord Ruler) # Cannot declare war independently # Can excommunicate and investigate }Properties:
- Succession: theocratic appointment (religious head picks)
- Gender: male preference (follows faith gender doctrine)
- Cannot declare war independently (must have Lord Ruler's approval or use Inquisition Purge CB)
- Gets +50% piety income
- Gets access to Inquisitor interactions without "Request" decision
- Available laws: Ministry-specific laws (canton administration)
- Reduced tax income but high levy contribution from faithful
-
Define "Post-Rebellion Elective" government. Available only after
lord_ruler_fallenflag is set:elective_council_government = { # Succession: council election (like CK3 Scandinavian Elective) # Available after the Lord Ruler falls # Represents the power vacuum and transition period }Properties:
- Succession: elective among council members and powerful vassals
- Gender: equal (post-rebellion faiths use equal gender doctrine; the old patriarchal order is one of many things the rebellion sweeps away)
- Can change laws freely
- Unlocks
caste_law_abolished - Unlocks new council tasks (M4.8) for post-rebellion governance
- Unlocks Age of Liberation innovations (M4.10)
-
Adventurer government (Roads to Power) is already handled by M5 for Kelsier's crew. No custom definition needed — use vanilla RtP adventurer.
-
Assign governments at game start. Update
on_game_starteffects:- All noble house holders:
imperial_appointment_government - Steel Ministry holdings:
theocratic_ministry_government - After Lord Ruler falls: event offers transition to
elective_council_governmentor keepingimperial_appointment_government(the "seize the throne" choice from M7)
- All noble house holders:
-
Suppress vanilla governments that don't fit (tribal, republic if present). Keep feudal as a hidden fallback.
-
Localization. ~30 keys (3 government names + descriptions, succession descriptions, law availability tooltips).
Files:
common/governments/00_mistborn_governments.txt-- createcommon/on_action/mistborn_on_actions.txt-- modify (government assignment)- Vanilla government suppression files -- create (empty replacements)
localization/english/mistborn_governments_l_english.yml-- create
References:
- Vanilla government format: CK3 game install
common/governments/ - Caste laws: M4 task 4.9
- Innovation eras: M4 task 4.10
- Lord Ruler attention:
common/scripted_effects/mistborn_effects.txt - Post-endgame choice: M7 task 7.7
4.12 -- Custom Factions
Context: CK3's faction system lets characters organize against their liege with demands and ultimatums. The Final Empire has natural factions: skaa rebels plotting in secret, Ministry loyalists enforcing orthodoxy, reform-minded nobles questioning the status quo, and Keeper preservationists working underground. Custom factions replace vanilla ones (independence, claimant, liberty) with Mistborn-specific organizations that interact with Lord Ruler attention, Allomantic traits, and the rebellion arc.
Steps:
-
Define 5 custom factions. In
common/factions/00_mistborn_factions.txt(new directory):Skaa Rebellion Faction (
faction_skaa_rebellion):- Join condition: skaa culture OR Survivorist faith OR has
rebel_sympathyflag - Demand: abolish caste laws, remove liege from power
- Ultimatum: civil war with Rebellion CB
- Power threshold: 80% of liege's military (standard)
- Special: faction members share intelligence (scheme power bonus). If Kelsier is alive, he is always faction leader. Ties directly into M6 rebellion arc.
- Lord Ruler attention: faction activity increases attention for all members (+2/year while faction exists)
- Discontent driver: strict caste laws, high lord_ruler_attention in realm, skaa population events
Ministry Loyalist Faction (
faction_ministry_loyalist):- Join condition: Steel Ministry faith, piety >= 100, NOT faction leader of any other faction
- Demand: liege must appoint Obligator Witness court position AND increase Ministry tithe (vassal contract change)
- Ultimatum: if refused, faction members refuse levy contribution and report liege to the Lord Ruler (attention +20)
- Power threshold: 50% (lower — they have Lord Ruler backing)
- Special: Ministry Loyalists can request Inquisitor investigation of their liege. If liege's attention is > 75, the Lord Ruler may intervene directly (event chain).
Noble Reform Faction (
faction_noble_reform):- Join condition: noble_scadrian culture, diplomacy >= 10 OR has
reformisttrait, NOT Steel Ministry faith (or secret Survivorist) - Demand: liege must change to
caste_law_relaxedAND reduce Ministry influence (remove Obligator Witness) - Ultimatum: faction members form a coalition and demand reform. If refused, they join the rebellion or attempt to replace the liege with a reformist claimant.
- Power threshold: 60%
- Special: reformists gain scheme power bonus against Ministry loyalists.
Post-rebellion, reformists push for
elective_council_government.
Keeper Underground Faction (
faction_keeper_underground):- Join condition: has
keeper_identityorkeeper_initiateflag, terris culture, OR learning >= 15 with Terris Worldbringer faith - Demand: no direct demand on liege. This is a passive/defensive faction. Members share knowledge (learning bonus +1 per member, up to +5).
- Special: NOT a traditional faction — operates more like a secret society. Members don't make demands but pool resources for knowledge preservation. If a Keeper is captured, other faction members can attempt a rescue scheme (special faction scheme).
- Discovery risk: if the faction grows too large (>10 members), yearly 5% chance of Ministry discovering the network. Discovery triggers a purge event chain.
Cult of Ruin Faction (
faction_cult_of_ruin):- Join condition:
cult_of_ruinfaith OR has hemalurgic spike traits, intrigue >= 12 - Demand: liege must allow hemalurgic experimentation (remove heresy laws) OR sacrifice prisoners for Ruin
- Ultimatum: if refused, faction members begin hemalurgic assassinations (murder schemes against liege's court)
- Power threshold: 40% (they're desperate and violent)
- Special: faction members gain +5 dread while active. Faction generates "Ruin's Influence" modifier in provinces where members hold titles. Extremely dangerous but small.
- Join condition: skaa culture OR Survivorist faith OR has
-
Suppress vanilla factions. Create empty replacement files for vanilla faction definitions (independence, claimant, liberty, populist).
-
Faction interaction with Lord Ruler. Add scripted triggers:
- If the Lord Ruler detects a faction (attention-based check), he can send Inquisitors to disband it. Event chain: Inquisitor arrives, investigates faction members, arrests or kills leaders.
- Post-rebellion: the Lord Ruler no longer suppresses factions. All factions can operate freely.
-
Localization. ~80 keys (5 faction names + descriptions, demands, ultimatums, event text for faction activities).
Files:
common/factions/00_mistborn_factions.txt-- create- Vanilla faction suppression files -- create (empty replacements)
common/scripted_triggers/mistborn_triggers.txt-- modify (faction checks)events/faction_events.txt-- create (faction-specific events)localization/english/mistborn_factions_l_english.yml-- create
References:
- Vanilla faction format: CK3 game install
common/factions/ - Rebellion arc: M6 (skaa rebellion faction drives the plot)
- Caste laws: M4 task 4.9 (faction demands reference law changes)
- Keeper Network: M3 task 3.11 (Keeper faction is the network's political arm)
- Lord Ruler attention:
common/scripted_effects/mistborn_effects.txt
4.13 -- Custom Vassal Contracts
Context: CK3 vassal contracts define obligations between lord and vassal: tax rates, levy contributions, title revocation rights, etc. In the Final Empire, these obligations are dictated by the Lord Ruler through the Steel Ministry. Custom contract terms reflect Mistborn's unique power dynamics: atium tithes, Allomantic service requirements, and Ministry access rights.
Steps:
-
Define custom contract obligations. In
common/vassal_contracts/(new directory), replace vanilla contract terms with Mistborn equivalents:Contract Term Levels Effect Lore Plantation Tribute (replaces Tax) Low/Medium/High/Extortionate 10%/20%/30%/50% tax to liege Skaa plantation output flows upward House Guard Obligation (replaces Levy) Minimal/Standard/Extended/Total 10%/25%/40%/60% levy to liege Military service to the Lord Ruler Atium Tithe (new) None/Symbolic/Significant/Ruinous 0/5%/15%/30% of atium income The most valuable resource in the Empire — lords who hold atium sources must share Allomantic Service (new) None/Voluntary/Required/Conscription Various None: no obligation. Voluntary: lord can offer Mistings for wars. Required: must provide Mistings when called (+5 opinion). Conscription: all Allomancers drafted in wartime (-15 opinion, +Mistborn Agent MaA) Inquisition Access (new) Denied/Limited/Full Various Denied: Inquisitors cannot investigate your court (-0.2 monthly piety, attention +3/year). Limited: Inquisitors can investigate with your permission (default). Full: Inquisitors have unrestricted access (-10% hostile scheme in court, attention -2/year, but your secrets are at risk) Title Revocation (rethemed) Protected/Standard/Vulnerable Various Protected: liege cannot revoke titles (costs prestige to demand). Vulnerable: liege can revoke freely (vassal lives in fear) -
Default contract templates by government type.
imperial_appointment_government: Medium Tribute, Standard Guard, Symbolic Atium Tithe, Voluntary Allomantic Service, Limited Inquisitiontheocratic_ministry_government: High Tribute, Extended Guard, no Atium (Ministry doesn't mine), Required Allomantic Service, Full Inquisition- Post-rebellion: contracts become negotiable (vassal can propose changes)
-
Contract negotiation events. When a vassal proposes changing contract terms, events fire:
mistborn_contract.0001— Vassal requests reduced Atium Tithe. Options: accept (lose atium income, +10 opinion), refuse (attention check — are you hoarding?), counter-offer (diplomacy check).mistborn_contract.0002— Lord Ruler demands increased Inquisition Access (yearly event if attention > 50). Options: comply (Full Access, attention -10), negotiate (diplomacy check for Limited), refuse (attention +15, risk Inquisitor arriving anyway).
-
Localization. ~50 keys (6 contract terms × multiple levels + event text).
Files:
common/vassal_contracts/00_mistborn_contracts.txt-- create- Vanilla vassal contract suppression files -- create (empty replacements)
events/contract_events.txt-- createlocalization/english/mistborn_contracts_l_english.yml-- create
References:
- Vanilla vassal contract format: CK3 game install
common/vassal_contracts/ - Atium economy: M2 task 2.7, M7 task 7.6
- Inquisitor mechanics: M3 task 3.11
- Government types: M4 task 4.11
4.14 -- Custom Secret Types and Hooks
Context: CK3 tracks character secrets (hidden faith, lovers, crimes) and hooks (leverage for demands). Mistborn is built on secrets — hidden Allomancers, concealed skaa heritage, Keeper identities, kandra imposters. Custom secret types formalize these into the CK3 secret system so they interact properly with schemes, Inquisitor investigations, and the intrigue lifestyle.
Steps:
-
Define custom secret types. In
common/secret_types/(new directory):Secret Type Who Has It Discovery Method Blackmail Value secret_allomancerCharacters hiding Allomantic ability (skaa Mistings, nobles hiding weak abilities) Seeker detection, Inquisitor investigation, Ministry Preceptor "Inspect Bloodlines" High — can be reported to Ministry or recruited secret_skaa_heritageHalf-skaa characters passing as noble (Vin's backstory) Inquisitor investigation, random exposure event, genealogy research Very High — exposure means loss of titles and possible execution secret_keeper_identityTerris Keepers hiding their true role Inquisitor investigation (enhanced detection), Seeker probing Critical — exposure means death and network compromise secret_kandra_imposterKandra who has replaced a character (M4.8 court position, M7 interactions) Observation events (behavioral slip-ups), Seeker detection (kandra don't burn metals normally) Critical — total identity collapse on exposure secret_atium_hoardCharacters hiding private atium reserves from the Lord Ruler Stewardship investigation, Inquisitor search, informant event High — Lord Ruler demands all atium secret_crew_membershipCharacters secretly part of a rebel crew Informant betrayal, Inquisitor interrogation of captured members High — membership means execution under strict caste law secret_ministry_informantCharacters secretly reporting to the Steel Ministry Counter-intelligence (Smoker detection), behavioral observation Moderate — discovery by rebels means death secret_survivoristCharacters secretly following Survivorism while publicly Steel Ministry Secret faith mechanic, Seeker/Inquisitor detection High — heresy under strict caste law -
Wire secrets into existing systems. Update:
- Inquisitor "Investigate Heresy" interaction (M3.11): now discovers formal secrets, not just flags
- Ministry Preceptor "Inspect Bloodlines" task (M4.8): discovers
secret_allomancerandsecret_skaa_heritage - Smoker council task (M4.8): protects secrets from discovery
- Kandra replacement interaction (M7.12): creates
secret_kandra_imposter - Caste events (M4.9):
secret_skaa_heritagereplaces ad-hochidden_skaa_heritageflag
-
Define custom hook types. Hooks created from discovering secrets:
hook_allomancer_knowledge— you know someone is a hidden Allomancer. Can demand: Allomantic service, gold, or silence.hook_heritage_knowledge— you know someone's skaa heritage. Can demand: anything (this is existential leverage).hook_crew_knowledge— you know someone is in a rebel crew. Can demand: information about the crew, or betray them to the Ministry.
-
Localization. ~60 keys (8 secret types + descriptions, 3 hook types, discovery event text, blackmail options).
Files:
common/secret_types/00_mistborn_secrets.txt-- createcommon/hooks/00_mistborn_hooks.txt-- create (or modify vanilla)common/scripted_triggers/mistborn_triggers.txt-- modify (secret checks)localization/english/mistborn_secrets_l_english.yml-- create
References:
- Vanilla secret types: CK3 game install
common/secret_types/ - Inquisitor investigation: M3 task 3.11
- Council tasks: M4 task 4.8
- Kandra replacement: M7 task 7.12
- Caste events: M4 task 4.9
4.15 -- Court Types (Royal Court)
Context: Royal Court DLC defines court types that affect court grandeur, available events, and visual presentation. The Final Empire has distinct spaces of power: grand noble keeps where houses scheme and display wealth, austere Ministry cantons where obligators administer the Empire, and cramped underground hideouts where rebels plot in secret. Each should feel mechanically and atmospherically different.
Steps:
-
Define 3 custom court types. In
common/court_types/(new directory):Noble Keep (
court_type_noble_keep):- Available to:
imperial_appointment_government, noble_scadrian culture - Grandeur bonuses: +0.3 monthly prestige, +5 attraction opinion
- Court events: ball invitations, house rivalry gossip, Allomantic demonstrations, marriage proposals, artisan metalworker visits
- Amenities: best food (plantation cuisine), fine clothing, musicians
- Unique: "Display House Power" interaction — spend gold to increase grandeur temporarily (+20 for 1 year). Impresses visitors.
- Visual theme: grand, opulent, ash-dusted luxury (M8 art)
Ministry Canton (
court_type_ministry_canton):- Available to:
theocratic_ministry_government, Steel Ministry faith - Grandeur bonuses: +0.2 monthly piety, +5 same-faith opinion
- Court events: obligator petitions, doctrinal debates, heresy reports, breeding program reviews, tithe collections
- Amenities: austere food, practical clothing, no entertainment
- Unique: "Canton Inspection" interaction — inspect a vassal's books. Stewardship check. Success: discover tax fraud (hook) or confirm compliance (+5 opinion).
- Visual theme: bureaucratic, grey stone, iron records (M8 art)
Underground Hideout (
court_type_underground_hideout):- Available to: adventurer government (Kelsier's crew), skaa culture
rulers, any ruler with
rebel_leaderflag - Grandeur: minimal (grandeur doesn't matter in a cave). Replace grandeur with "Crew Morale" if Royal Court supports custom metrics, otherwise use low base grandeur with morale-as-prestige.
- Court events: crew planning sessions, informant reports, supply runs, close calls with patrols, underground network rumors
- Amenities: scrounged food, practical gear, no luxury
- Unique: "Secure the Hideout" interaction — spend gold to improve security. Reduces Inquisitor discovery chance for 2 years.
- Visual theme: cave/basement, dim lighting, maps on walls (M8 art)
- Available to:
-
Suppress vanilla court types that don't fit. Create empty replacement files. Keep any that are sufficiently generic.
-
Localization. ~40 keys (3 court type names + descriptions, amenity names, unique interaction tooltips).
Files:
common/court_types/00_mistborn_court_types.txt-- create- Vanilla court type suppression files -- create (empty replacements)
localization/english/mistborn_court_types_l_english.yml-- create
References:
- Vanilla court types: CK3 game install
common/court_types/ - Government types: M4 task 4.11
- Royal Court DLC: required dependency
- Council/court positions: M4 task 4.8
- Band system: M5 (underground hideout is the crew's court type)
4.16 -- Portrait Modifiers (System Definition)
Context: CK3's portrait modifier system allows dynamic visual changes to characters based on traits, modifiers, or conditions. For Mistborn, this means hemalurgic spike eyes on Inquisitors, ash-stained clothing on frontier characters, Allomancer burn marks, Terris robes, and mistcloaks. The actual art assets are M8 scope, but the system definitions (which conditions trigger which visual changes) should be defined in M4 so M8 artists know what to create.
Steps:
-
Define portrait modifier triggers. In
common/portrait_modifiers/00_mistborn_portrait_modifiers.txt(new file):Modifier Trigger Condition Visual Effect (M8) portrait_hemalurgic_eyesHas any trait_hemalurgic_spike_*traitSteel spikes through eyes, pale skin portrait_allomancer_marksHas trait_allomantic_strength_savantBurn marks on hands, intense eyes portrait_ash_stainedLives in province with ash_blightmodifierGrey dust on clothing, darker skin tone portrait_mistcloakHas mistcloakartifact equippedTasseled cloak visible on portrait portrait_terris_robesCulture = terris Traditional Terris robes and jewelry portrait_ministry_tattoosSteel Ministry faith + theocratic_ministry_governmentFacial tattoos (obligator rank markings) portrait_noble_finerynoble_scadrian culture + tier >= duchy Elaborate noble clothing, house colors portrait_skaa_ragsskaa culture + no title OR tier = barony Worn clothing, lean appearance portrait_pewter_buildHas trait_misting_thugor savant strengthNoticeably muscular build portrait_keeper_earringsHas keeper_identityflagMultiple metallic earrings (metalminds) -
This task defines the system only — placeholder icon references that M8 will replace with actual art assets. The triggers and conditions are what matter for M4.
-
Localization. Minimal — portrait modifiers don't have player-facing text. ~10 keys for tooltip descriptions if any.
Files:
common/portrait_modifiers/00_mistborn_portrait_modifiers.txt-- createlocalization/english/mistborn_portraits_l_english.yml-- create (minimal)
References:
- Vanilla portrait modifiers: CK3 game install
common/portrait_modifiers/ - Hemalurgic traits:
common/traits/(spike types) - Allomantic strength:
common/traits/(savant tier) - M8 graphics scope: docs/milestones/M8-the-art-of-metals.md
4.17 -- Full Testing Pass and Error Cleanup
Context: With all M4 features in place, a thorough testing pass ensures the mod is shareable. The goal is: a friend can install the mod, start a game, and experience Scadrial with no vanilla anachronisms and no error.log noise.
Steps:
-
Error.log review. Launch the mod, check
error.login the CK3 logs directory (typically~/.local/share/Paradox Interactive/Crusader Kings III/logs/on Linux). Fix every error and warning related to the mod. Common issues:- Missing localization keys
- Invalid scope references in triggers/effects
- Missing icon file references (acceptable for now -- icons are M8)
- Invalid trait/modifier references
-
20-year playthrough as Straff Venture. Start from the "End of an Empire" bookmark, play as Straff Venture (Central Dominance), and observe:
- Do any vanilla event popups mention real-world content? If so, suppress.
- Do province names display correctly as Scadrial names?
- Do generated characters have Scadrial-appropriate names?
- Do custom CBs appear and function when declared?
- Does the Lord Ruler exist and function as religious head?
- Do special buildings show correct bonuses?
- Do province modifiers (ash_blight, mist_heavy) appear on the province view?
-
20-year playthrough as a skaa/rebel character (if any are landed, or use console to play as Kelsier). Verify:
- Rebellion CB is available
- Lord Ruler attention system triggers correctly
- Custom schemes appear in the scheme list
- Survivorism religion functions correctly
-
Check for vanilla anachronisms. Make a list of any remaining vanilla content that breaks immersion:
- Vanilla county/barony names visible anywhere
- Vanilla culture/religion names in tooltips
- Vanilla event text referencing Christianity, Islam, paganism
- Vanilla decisions that shouldn't be available For each, create a suppression entry (localization override or empty file).
-
Performance check. Observe game speed over the 20-year run. If the game noticeably slows down, check
on_yearly_pulseandon_birthdayactions for excessive event firing. The yearly pulse currently fires 5 events for every character -- ensure they have properis_ruleror similar limits to avoid firing for all 30k+ characters. -
Document any remaining issues in
REVIEW_NOTES.txtfor future milestones.
Files:
- Various files as issues are discovered during testing -- modify
REVIEW_NOTES.txt-- modify (update status)
References:
- Existing review notes:
REVIEW_NOTES.txt - CK3 error log location: game logs directory
Testing Checkpoints
See
docs/TESTING.mdfor the full testing protocol, debug decisions, log analysis commands, and helper scripts.
-
After 4.1 (Province Relabeling):
- Test: Start a game, open the province map mode, hover over every province within the mod's borders.
- Expected: Every province shows a Scadrial name (e.g., "Kredik Shaw" not "Bern"). No vanilla European names visible.
-
After 4.2 (Province Modifiers):
- Test: Start a game, check the province view for Ashmount View (should
have
ash_blight), Luthadel (should havemist_heavy), Holstep (should havefertile_ashland). - Expected: Appropriate province modifiers visible with correct bonuses.
- Test: Start a game, check the province view for Ashmount View (should
have
-
After 4.3 (Vanilla Suppression):
- Test: Play for 10 years, watch for any vanilla event popups or decisions that reference real-world content. Check that the Legend system is fully suppressed (no "Create Legend" decision, no legend UI elements).
- Expected: No crusade calls, no pilgrimages to Mecca, no Viking raids. No legend creation or spreading. Only Mistborn-themed content appears.
-
After 4.4 (Custom CBs):
- Test: As a noble house lord, attempt to declare a House War against a neighboring house. As a pious Steel Ministry ruler, attempt an Inquisition Purge against a non-Steel Ministry character.
- Expected: Custom CB types appear in the war declaration screen. Declaring war costs prestige/piety as defined. Lord Ruler attention increases. Victory transfers the target title.
-
After 4.5 (Custom Schemes):
- Test: As a noble with intrigue >= 10, start a Noble Infiltration scheme against a rival lord. Check scheme progress screen for Allomancy bonuses.
- Expected: Scheme appears in the scheme list. Success chance is modified by Allomantic traits (Smoker gets +15). Scheme fires its completion event.
-
After 4.6 (Custom Lifestyles):
- Test: Start a game. Open the lifestyle selection screen. Verify 5 Mistborn lifestyles appear (Metallic Arts, Noble Intrigue, Steel Ministry, Underground, Scholarship). Select each one, verify 3 focuses appear. Select Metallic Arts → Allomantic Mastery as a Misting character. Play 5 years and verify lifestyle events fire and perk tree is navigable.
- Expected: No vanilla lifestyles visible. All 5 custom lifestyles have 3 focuses each. Perk trees display correctly with ~15 perks per lifestyle. Lifestyle events fire for the active focus. XP accumulates and perks can be purchased.
-
After 4.7 (Activities):
- Test: Start a game. Host a Noble Ball via decision — verify it launches as a multi-phase activity with guest selection, dance phase, political phase, and climax. Host a Noble Banquet — verify rethemed feast content. Initiate a Mist Patrol — verify rethemed hunt with koloss/mist encounters. Check that pilgrimage and tournament are NOT available.
- Expected: Noble Ball has 6+ phases with branching events. Banquet and Mist Patrol feel Scadrian (no medieval references). Pilgrimage and tournament are suppressed. Alliance Ceremony has obligator events.
-
After 4.8 (Council & Court):
- Test: Start a game as a landed noble. Open the council screen. Verify 5 Mistborn-themed positions appear (Obligator Liaison, Hazemaster, House Comptroller, House Informant, Ministry Preceptor). Assign each councillor and select a custom task (e.g., Hazemaster → "Hunt Skaa Allomancers"). Play 3 years. Verify custom task effects fire (province modifier from training, discovery events from hunting). Open the court positions screen. Verify 7 custom court positions exist. Appoint a Terris Steward and Court Smoker. Verify passive bonuses apply.
- Expected: No vanilla council position names visible. Custom tasks have monthly effects. Court positions grant correct stat bonuses. Smoker position reduces hostile scheme power. Obligator Witness reduces attention.
-
After 4.9 (Caste Laws):
- Test: Start as a noble house. Check laws screen — verify "Caste Laws" group with "Strict Caste Law" active. Try to marry a skaa character — verify warning/prohibition. Use console to add a skaa lover. Play 3 years — verify affair discovery event fires. Force a noble-skaa birth — verify half-skaa child event with options (kill, hide, acknowledge). Check that skaa characters cannot hold duchy+ titles under strict law.
- Expected: Caste Laws function with 3 tiers. Cross-caste events fire with appropriate consequences. Hidden heritage discovery chain works. Law tier gates title holding and council appointment correctly.
-
After 4.10 (Innovations):
- Test: Start a game. Open the innovation screen. Verify "Age of the
Lord Ruler" era with ~8 pre-unlocked innovations. Verify "Age of
Liberation" era is visible but locked with tooltip explanation. Use console
to set
lord_ruler_fallenflag. Verify Age of Liberation innovations become researchable. Check that no vanilla era names appear. - Expected: Imperial Stagnation innovations are pre-unlocked. Liberation innovations are gated behind Lord Ruler's fall. Vanilla eras suppressed. Keeper characters in realm provide innovation speed bonus.
- Test: Start a game. Open the innovation screen. Verify "Age of the
Lord Ruler" era with ~8 pre-unlocked innovations. Verify "Age of
Liberation" era is visible but locked with tooltip explanation. Use console
to set
-
After 4.11 (Government Types):
- Test: Start a game. Check government type for Straff Venture — verify
"Imperial Appointment" (not feudal). Check succession law — verify no
partition. Check a Ministry holding — verify "Theocratic Ministry." Use
console to set
lord_ruler_fallen. Verify Elective Council becomes available as a government transition option. - Expected: 3 custom government types functional. Succession rules match government type. Male preference active under Imperial Appointment (women can hold titles but sons inherit first). Post-rebellion Elective uses equal gender. Post-rebellion transition works.
- Test: Start a game. Check government type for Straff Venture — verify
"Imperial Appointment" (not feudal). Check succession law — verify no
partition. Check a Ministry holding — verify "Theocratic Ministry." Use
console to set
-
After 4.12 (Factions):
- Test: Start as a skaa character. Verify Skaa Rebellion faction is joinable. As a noble, verify Ministry Loyalist and Noble Reform factions exist. Check that vanilla factions (independence, claimant) are gone. Let rebellion faction reach power threshold — verify ultimatum fires.
- Expected: 5 custom factions replace vanilla ones. Faction demands match Mistborn setting. Lord Ruler can intervene against factions.
-
After 4.13 (Vassal Contracts):
- Test: Open vassal contract view. Verify custom terms appear (Atium Tithe, Allomantic Service, Inquisition Access). Change Inquisition Access to "Denied" — verify attention increases. Set Allomantic Service to "Conscription" — verify opinion penalty.
- Expected: 6 custom contract terms with multiple levels. Contract changes produce correct mechanical effects.
-
After 4.14 (Secrets/Hooks):
- Test: Use console to give a character
secret_allomancer. Verify it appears in the secrets screen. Use Inquisitor "Investigate" — verify it can discover the secret. Check that discovering a secret creates the appropriate hook type. - Expected: 8 custom secret types functional. Secrets integrate with Inquisitor investigation and council tasks. 3 custom hook types work.
- Test: Use console to give a character
-
After 4.15 (Court Types):
- Test: As a noble house lord with Royal Court, check court type — verify "Noble Keep." Check a Ministry holding — verify "Ministry Canton." As Kelsier (if playable) — verify "Underground Hideout." Use "Display House Power" interaction.
- Expected: 3 court types with distinct events and amenities. Vanilla court types suppressed.
-
After 4.16 (Portrait Modifiers):
- Test: Verify portrait modifier file loads without errors. Triggers are defined correctly (console check: add spike trait, verify modifier activates). Actual visual changes are M8 scope — system only.
- Expected: Portrait modifier triggers defined. No error.log entries.
-
After 4.17 (Full Testing Pass):
- Test: Start a fresh game, play 20 years. Review error.log.
- Expected: Error.log has no mod-related errors. No vanilla anachronisms observed. Game runs at acceptable speed. The world feels like Scadrial.
Acceptance Criteria
- Every province used by the mod shows a Scadrial name in the province map mode (no "Bern", "Zurich", "Lyon" visible)
- Province localization file
mistborn_provinces_l_english.ymlcontainsPROV<id>entries for all ~105 province IDs mist_heavyandfertile_ashlandprovince modifiers are defined with appropriate stat effectsash_blightmodifier is applied at game start to frontier/ashmount provincesmist_heavymodifier is applied at game start to lowland/Central Dominance provincesfertile_ashlandmodifier is applied at game start to productive agricultural provinces- No vanilla events referencing Christianity, Islam, Vikings, or other real-world content fire during a 20-year playthrough
- Legend system fully suppressed (no legend types, seeds, chronicles, or decisions available)
- No vanilla CBs for crusades/holy wars are available to any character
house_war_cbis available to noble Scadrian duchy+ rulers and costs 500 prestigerebellion_cbis available to skaa/Survivorist characters and triggers Lord Ruler attentioninquisition_purge_cbis available to Steel Ministry characters against heretics and costs 500 pietydominance_claim_cbis available to duchy+ rulers with 2000+ prestige and targets kingdom-tier titles- All four CBs have complete localization (name, description, victory text)
noble_infiltrationscheme is available and grants Allomantic bonuses (Smoker +15, Seeker +10, Mistborn +20)raid_house_vaultscheme is available to rulers with intrigue >= 10false_flagscheme is available to rulers with intrigue >= 14- All three schemes have events that fire on completion
- All three schemes have complete localization
error.loghas no mod-related errors after a fresh game start- 5 custom lifestyles replace all vanilla lifestyles: Metallic Arts, Noble Intrigue, Steel Ministry, Underground, Scholarship
- Each lifestyle has 3 focuses with active bonuses and event triggers
- Each lifestyle has ~15 perks in a navigable perk tree
- Vanilla lifestyles are fully suppressed (no Diplomacy, Martial, etc.)
- All existing
add_X_lifestyle_xpreferences updated to new lifestyles - Lifestyle events fire for the active focus (~50-75 events total)
- Underground lifestyle perks synergize with rebellion (M6) and raids (M7)
- Metallic Arts perks synergize with metal supply system (M2)
- All lifestyle content has complete localization (400-600 keys)
- Vanilla pilgrimage, tournament, and grand tour activities are suppressed
- Noble Ball is a full multi-phase activity (guest, prep, arrival, dance, political, climax, departure phases)
- Noble Banquet (rethemed feast) has Scadrian food/culture flavor
- Mist Patrol (rethemed hunt) has koloss/mist encounters and Allomantic advantages
- House Alliance Ceremony (rethemed wedding) has obligator blessing events
- All activity content has complete localization
- 5 council positions rethemed: Obligator Liaison, Hazemaster, House Comptroller, House Informant, Ministry Preceptor
- No vanilla council position names visible (Chancellor, Marshal, etc.)
- 10 custom council tasks defined (2 per position) with monthly effects
- Hazemaster "Hunt Skaa Allomancers" discovers hidden Mistings
- Hazemaster "Train Hazekillers" grants province modifier after 12 months
- House Informant "Deploy Smoker Network" reduces hostile scheme power
- Ministry Preceptor "Inspect Bloodlines" reveals allomantic potential
- Vanilla council tasks rethemed with Mistborn localization
- 7 court positions defined: Terris Steward, Kandra Agent, Allomantic Advisor, Hazekiller Captain, Obligator Witness, Court Smoker, Master of Revels
- Court Smoker reduces hostile scheme power by 25% (35% if Mistborn)
- Obligator Witness reduces Lord Ruler attention by 3/year
- Allomantic Advisor stat bonus matches metal type
- Vanilla court positions that break immersion are suppressed or rethemed
- Council and court position localization complete (~115 keys)
- Caste Law group defined with 3 tiers: Strict, Relaxed, Abolished
- Strict Caste Law is default and prevents skaa from holding duchy+ titles
- Cross-caste marriage produces warning under Strict, permitted under Relaxed
- Noble-skaa affair discovery event fires with appropriate options
- Half-skaa child birth event fires with kill/hide/acknowledge options
- Hidden skaa heritage discovery chain works via Inquisitor or random event
- Caste law change is gated (Abolished requires
lord_ruler_fallen) - ~5 caste events with full localization (~73 keys)
- "Age of the Lord Ruler" era with ~8 pre-unlocked innovations
- "Age of Liberation" era with ~8 innovations locked behind Lord Ruler's fall
- Vanilla innovation eras fully suppressed (no Tribal, Medieval, etc.)
- Innovation era gate tooltip explains Lord Ruler's stagnation
- Keeper Network provides +5% innovation speed per Keeper (post-rebellion)
- Innovation localization complete (~76 keys)
- 3 custom government types: Imperial Appointment, Theocratic Ministry, Post-Rebellion Elective
- Imperial Appointment prevents partition and locks succession while Lord Ruler lives
- Gender: male preference under Imperial Appointment and Theocratic Ministry (sons inherit first, women can hold all titles and participate fully); equal under Post-Rebellion Elective
- Theocratic Ministry grants piety bonuses and Inquisitor access
- Elective Council available only after
lord_ruler_fallen - Vanilla governments suppressed (no feudal/tribal in UI)
- 5 custom factions: Skaa Rebellion, Ministry Loyalist, Noble Reform, Keeper Underground, Cult of Ruin
- Faction demands match Mistborn setting (caste law changes, Ministry influence, hemalurgic rights)
- Lord Ruler can intervene against factions via Inquisitor events
- Vanilla factions suppressed
- 6 custom vassal contract terms: Plantation Tribute, House Guard, Atium Tithe, Allomantic Service, Inquisition Access, Title Revocation
- Contract terms have correct mechanical effects (attention, opinion, income changes)
- Contract negotiation events fire for Atium Tithe and Inquisition Access
- 8 custom secret types: secret_allomancer, secret_skaa_heritage, secret_keeper_identity, secret_kandra_imposter, secret_atium_hoard, secret_crew_membership, secret_ministry_informant, secret_survivorist
- Secrets integrate with Inquisitor investigation and council tasks
- 3 custom hook types created from secret discovery
- 3 custom court types: Noble Keep, Ministry Canton, Underground Hideout
- Court types have distinct events and amenities
- Portrait modifier system defined with ~10 triggers for M8 art assets
- A 20-year playthrough as Straff Venture completes without crashes
- No vanilla anachronisms (names, events, decisions) visible during normal gameplay
Risks & Mitigations
-
Province localization not overriding. CK3 may use the title localization (which already works) rather than province-level localization for the map view. Test whether
PROV<id>keys actually control what is displayed. If not, the title localization already covers county and barony names -- the gap may only be in certain tooltips or map modes. -
Vanilla event suppression scope. It is impractical to suppress every vanilla event. Focus on events that actually fire during gameplay in the mod's province cluster and time period. Some vanilla events (lifestyle, court) are culture/religion-neutral and should be kept. Be surgical, not scorched-earth.
-
CB balance. The cost values (500 prestige for House War, 2000 for Dominance Claim) are initial estimates. They may need adjustment after playtesting. The Lord Ruler attention integration (attention increases on war declaration) creates a natural deterrent that may be too harsh or too lenient.
-
Scheme syntax compatibility. CK3's scheme system has evolved across DLCs and patches. The scheme format above is based on vanilla CK3 1.12+ patterns. Verify against CK3 1.18 vanilla schemes (murder, seduce, etc.) and adjust field names if the API has changed.
-
Performance impact of game-start province modifiers. Applying ~15+ province modifiers in
on_game_startshould be negligible, but test to ensure no lag spike at game start. -
Scheme events as stubs. The scheme completion events (
mistborn_scheme.0001/0010/0020) need to be fully written. If they are left as stubs, the schemes will fire but produce no visible outcome. Prioritize writing at least a basic success event for each scheme.
Open Questions
-
Province localization format. Does CK3 1.18 still use
PROV<number>as the localization key for province names? Verify against vanilla localization files. If the format has changed, adjust the key pattern. -
Vanilla event file names. The exact set of vanilla event files that need suppression depends on which events actually fire during gameplay. This requires a test playthrough to identify. The implementer should maintain a running list during the testing pass.
-
False Flag "frame target" selection. The False Flag scheme needs a mechanism for the schemer to select which third party to frame. CK3 schemes typically target a single character. Options: (a) the frame target is selected during the completion event via player choice, (b) the frame target is a second scope saved at scheme start. Option (a) is simpler for M4.
-
Scheme agent system depth. CK3's agent system for schemes can be complex (agent join chance, power contribution, exposure risk). For M4, keep agent mechanics simple. Deeper agent integration (using Allomancer courtiers as specialized scheme agents) can be added in M7.
-
Interaction between CBs and Lord Ruler. Should the Lord Ruler actively intervene in wars? For M4, the Lord Ruler is passive (attention system fires events separately). Active intervention (Lord Ruler sending Inquisitors to stop wars) is M7 scope.