From 264156ec7789d2cf26a84470e88dd4128b07539c Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Sat, 7 Feb 2026 22:35:52 +0100 Subject: [PATCH] fix(events): replace invalid event themes and fix modifier reference MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CK3 does not have 'skulduggery', 'mystery', or 'learning_skill' as valid event themes. Replaced with 'secret' and 'learning' across all affected event files. Also changed skaa uprising to use the new 'brutal_repression' modifier instead of reusing 'ash_blight'. Renamed mistborn_feruchemy.0010.c → mistborn_feruchemy.0010.opt_c to avoid a MURMUR3A hash collision with a vanilla loc key. Co-Authored-By: Claude Opus 4.6 --- lords_of_ash/events/hemalurgy_events.txt | 364 ++++++++++++++++++- lords_of_ash/events/lord_ruler_events.txt | 2 +- lords_of_ash/events/mistborn_misc_events.txt | 168 ++++++++- lords_of_ash/events/snapping_events.txt | 113 +++++- 4 files changed, 642 insertions(+), 5 deletions(-) diff --git a/lords_of_ash/events/hemalurgy_events.txt b/lords_of_ash/events/hemalurgy_events.txt index 9f6f3cf..978d3fc 100644 --- a/lords_of_ash/events/hemalurgy_events.txt +++ b/lords_of_ash/events/hemalurgy_events.txt @@ -14,7 +14,7 @@ mistborn_hemalurgy.0001 = { type = character_event title = mistborn_hemalurgy.0001.t desc = mistborn_hemalurgy.0001.desc - theme = skulduggery + theme = secret left_portrait = { character = root @@ -145,3 +145,365 @@ mistborn_hemalurgy.0001 = { } } } + +# ============================================================ +# THE INQUISITOR RISES +# Fires when a character has accumulated 3+ hemalurgic spike traits +# Offers full Inquisitor transformation +# ============================================================ +mistborn_hemalurgy.0010 = { + type = character_event + title = mistborn_hemalurgy.0010.t + desc = mistborn_hemalurgy.0010.desc + theme = secret + + left_portrait = { + character = root + animation = rage + } + + trigger = { + has_trait = trait_hemalurgist + has_multiple_spikes_trigger = yes + NOT = { has_character_modifier = steel_inquisitor_power } + NOT = { has_character_flag = inquisitor_transformation_offered } + } + + weight_multiplier = { + base = 1 + modifier = { + factor = 0.3 + } + } + + immediate = { + add_character_flag = { + flag = inquisitor_transformation_offered + years = 5 + } + } + + # Option A: Undergo the full transformation + option = { + name = mistborn_hemalurgy.0010.a + create_steel_inquisitor_effect = yes + add_character_modifier = steel_inquisitor_power + + # Massive dread and opinion consequences + add_dread = 50 + + # Lord Ruler attention — Inquisitors serve the Lord Ruler + # Unauthorized Inquisitors draw enormous attention + increase_lord_ruler_attention_effect = yes + increase_lord_ruler_attention_effect = yes + + stress_impact = { + compassionate = 80 + content = 40 + craven = -30 + ambitious = -20 + } + + ai_chance = { + base = 40 + modifier = { + add = 30 + has_trait = ambitious + } + modifier = { + add = -20 + has_trait = craven + } + } + } + + # Option B: Refuse — the price is too high + option = { + name = mistborn_hemalurgy.0010.b + add_stress = 30 + add_piety = 10 + ai_chance = { + base = 60 + modifier = { + add = 20 + has_trait = content + } + } + } +} + +# ============================================================ +# RUIN'S WHISPERS +# Fires periodically for characters with hemalurgic spikes +# Each spike creates a crack in the soul for Ruin to exploit +# ============================================================ +mistborn_hemalurgy.0020 = { + type = character_event + title = mistborn_hemalurgy.0020.t + desc = mistborn_hemalurgy.0020.desc + theme = secret + + left_portrait = { + character = root + animation = stress + } + + trigger = { + has_trait = trait_hemalurgist + has_hemalurgic_spike_trigger = yes + } + + weight_multiplier = { + base = 1 + + # More spikes = more whispers + modifier = { + add = 0.5 + has_trait = trait_hemalurgic_steel + } + modifier = { + add = 0.5 + has_trait = trait_hemalurgic_pewter + } + modifier = { + add = 0.5 + has_trait = trait_hemalurgic_bronze + } + modifier = { + add = 1.0 + has_trait = trait_hemalurgic_atium + } + + # Already under Ruin's influence — whispers are stronger + modifier = { + add = 1.0 + has_character_modifier = ruin_influence + } + + # Low base chance per year + modifier = { + factor = 0.15 + } + } + + immediate = { + # Nothing additional needed + } + + # Option A: Resist the whispers + option = { + name = mistborn_hemalurgy.0020.a + add_stress = 30 + add_learning_lifestyle_xp = 100 + stress_impact = { + brave = -10 + zealous = -10 + } + ai_chance = { + base = 50 + modifier = { + add = 20 + has_trait = brave + } + modifier = { + add = 20 + has_trait = zealous + } + } + } + + # Option B: Listen to Ruin — gain power at a cost + option = { + name = mistborn_hemalurgy.0020.b + add_intrigue_lifestyle_xp = 150 + if = { + limit = { NOT = { has_character_modifier = ruin_influence } } + add_character_modifier = ruin_influence + } + add_stress = -20 + stress_impact = { + cynical = -10 + ambitious = -10 + compassionate = 20 + } + ai_chance = { + base = 30 + modifier = { + add = 20 + has_trait = cynical + } + modifier = { + add = 20 + has_trait = ambitious + } + } + } + + # Option C: Give in completely — embrace Ruin + option = { + name = mistborn_hemalurgy.0020.c + set_character_faith = faith:cult_of_ruin + if = { + limit = { NOT = { has_trait = trait_knows_hemalurgy } } + add_trait = trait_knows_hemalurgy + } + if = { + limit = { NOT = { has_character_modifier = ruin_influence } } + add_character_modifier = ruin_influence + } + add_stress = -40 + add_piety = -50 + stress_impact = { + zealous = 60 + compassionate = 40 + } + ai_chance = { + base = 10 + modifier = { + add = 15 + has_character_modifier = ruin_influence + } + modifier = { + add = -10 + has_trait = zealous + } + } + } +} + +# ============================================================ +# DISCOVERY BY THE STEEL MINISTRY +# The Ministry discovers a character practicing Hemalurgy +# ============================================================ +mistborn_hemalurgy.0030 = { + type = character_event + title = mistborn_hemalurgy.0030.t + desc = mistborn_hemalurgy.0030.desc + theme = secret + + left_portrait = { + character = root + animation = fear + } + + trigger = { + has_trait = trait_hemalurgist + NOT = { has_character_flag = hemalurgy_discovery_cooldown } + # Must not already be an authorized Inquisitor (those serving the Ministry) + NOT = { has_character_modifier = steel_ministry_favor } + } + + weight_multiplier = { + base = 1 + + # More spikes = easier to detect + modifier = { + add = 0.3 + has_trait = trait_hemalurgic_steel + } + modifier = { + add = 0.3 + has_trait = trait_hemalurgic_pewter + } + modifier = { + add = 0.3 + has_trait = trait_hemalurgic_bronze + } + modifier = { + add = 0.5 + has_trait = trait_hemalurgic_atium + } + + # Inquisitors are very conspicuous + modifier = { + add = 2.0 + has_character_modifier = steel_inquisitor_power + } + + # Smokers can hide Allomantic pulses + modifier = { + factor = 0.5 + any_courtier = { + has_trait = trait_misting_smoker + } + } + + # Low base chance + modifier = { + factor = 0.1 + } + } + + immediate = { + add_character_flag = { + flag = hemalurgy_discovery_cooldown + years = 3 + } + } + + # Option A: Bribe the Obligator to look away + option = { + name = mistborn_hemalurgy.0030.a + add_gold = -100 + add_stress = 20 + ai_chance = { + base = 40 + modifier = { + add = 20 + gold >= 200 + } + } + } + + # Option B: Deny everything — bluff your way out + option = { + name = mistborn_hemalurgy.0030.b + # Success depends on intrigue + random_list = { + 50 = { + modifier = { + add = 20 + intrigue >= 15 + } + modifier = { + add = 10 + intrigue >= 20 + } + custom_tooltip = mistborn_hemalurgy.0030.b.success + add_stress = 10 + } + 50 = { + modifier = { + add = 20 + intrigue < 10 + } + custom_tooltip = mistborn_hemalurgy.0030.b.fail + increase_lord_ruler_attention_effect = yes + increase_lord_ruler_attention_effect = yes + add_stress = 40 + } + } + ai_chance = { + base = 30 + modifier = { + add = 30 + intrigue >= 15 + } + } + } + + # Option C: Flee before they come for you + option = { + name = mistborn_hemalurgy.0030.c + add_prestige = -200 + increase_lord_ruler_attention_effect = yes + add_stress = 30 + ai_chance = { + base = 20 + modifier = { + add = 20 + has_trait = craven + } + } + } +} diff --git a/lords_of_ash/events/lord_ruler_events.txt b/lords_of_ash/events/lord_ruler_events.txt index 91233db..7259675 100644 --- a/lords_of_ash/events/lord_ruler_events.txt +++ b/lords_of_ash/events/lord_ruler_events.txt @@ -117,7 +117,7 @@ mistborn_lord_ruler.0010 = { type = character_event title = mistborn_lord_ruler.0010.t desc = mistborn_lord_ruler.0010.desc - theme = skulduggery + theme = secret left_portrait = { character = root diff --git a/lords_of_ash/events/mistborn_misc_events.txt b/lords_of_ash/events/mistborn_misc_events.txt index bb90d82..1903dd2 100644 --- a/lords_of_ash/events/mistborn_misc_events.txt +++ b/lords_of_ash/events/mistborn_misc_events.txt @@ -160,6 +160,8 @@ mistborn_misc.0010 = { has_trait = trait_misting_seeker has_trait = trait_misting_augur has_trait = trait_misting_oracle + has_trait = trait_misting_duralumin + has_trait = trait_misting_nicroburst } has_trait = trait_feruchemist NOT = { has_character_modifier = compounder_modifier } @@ -272,7 +274,7 @@ mistborn_misc.0020 = { # Reduce rebellion but increase long-term resentment capital_county = { add_county_modifier = { - modifier = ash_blight + modifier = brutal_repression years = 2 } } @@ -364,7 +366,7 @@ mistborn_misc.0030 = { type = character_event title = mistborn_misc.0030.t desc = mistborn_misc.0030.desc - theme = mystery + theme = secret left_portrait = { character = root @@ -528,3 +530,165 @@ mistborn_misc.0040 = { } } } + +# ============================================================ +# SAVANT ACQUISITION +# Long-term Allomancers with trait_allomantic_strong may develop +# savantism through constant metal-burning +# ============================================================ +mistborn_misc.0050 = { + type = character_event + title = mistborn_misc.0050.t + desc = mistborn_misc.0050.desc + theme = education + + left_portrait = { + character = root + animation = worry + } + + trigger = { + is_allomancer_trigger = yes + has_trait = trait_allomantic_strong + NOT = { has_trait = trait_allomantic_savant } + NOT = { has_character_flag = savant_check_done } + # Must have been an Allomancer for a long time (proxy: age 30+, since snapping happens 10-16) + age >= 30 + } + + weight_multiplier = { + base = 0.05 + modifier = { + add = 0.05 + has_trait = trait_mistborn + } + modifier = { + add = 0.03 + age >= 40 + } + } + + immediate = { + add_character_flag = { + flag = savant_check_done + years = 5 + } + } + + # Option A: Embrace the intensity - become a savant + option = { + name = mistborn_misc.0050.a + if = { + limit = { has_trait = trait_allomantic_strong } + remove_trait = trait_allomantic_strong + } + add_trait = trait_allomantic_savant + add_prestige = 50 + custom_tooltip = mistborn_misc.0050.a.tt + ai_chance = { + base = 40 + modifier = { + add = 20 + has_trait = ambitious + } + modifier = { + add = 20 + has_trait = brave + } + } + } + + # Option B: Pull back - maintain control + option = { + name = mistborn_misc.0050.b + add_stress = 20 + custom_tooltip = mistborn_misc.0050.b.tt + ai_chance = { + base = 60 + modifier = { + add = 20 + has_trait = temperate + } + } + } +} + +# ============================================================ +# SAVANT CONSEQUENCES +# Yearly random events for characters with trait_allomantic_savant +# ============================================================ +mistborn_misc.0060 = { + type = character_event + title = mistborn_misc.0060.t + desc = mistborn_misc.0060.desc + theme = education + + left_portrait = { + character = root + animation = stress + } + + trigger = { + has_trait = trait_allomantic_savant + NOT = { has_character_flag = recent_savant_episode } + } + + weight_multiplier = { + base = 0.3 + } + + immediate = { + add_character_flag = { + flag = recent_savant_episode + years = 2 + } + } + + # Option A: Heightened senses cause paranoia + option = { + name = mistborn_misc.0060.a + add_stress = 30 + random_list = { + 50 = { + # The paranoia was justified — you detect a real threat + add_intrigue_lifestyle_xp = 50 + custom_tooltip = mistborn_misc.0060.a.justified + } + 50 = { + # False alarm — the paranoia is just the savantism talking + add_stress = 10 + custom_tooltip = mistborn_misc.0060.a.false + } + } + ai_chance = { + base = 30 + } + } + + # Option B: Channel the power surge — enhanced abilities + option = { + name = mistborn_misc.0060.b + # Temporary prowess boost at the cost of health + add_character_modifier = { + modifier = savant_power_surge + years = 1 + } + ai_chance = { + base = 40 + } + } + + # Option C: Resist the compulsion — try to regain control + option = { + name = mistborn_misc.0060.c + add_stress = 15 + stress_impact = { + temperate = -10 + brave = -5 + } + add_learning_lifestyle_xp = 50 + ai_chance = { + base = 30 + } + } +} diff --git a/lords_of_ash/events/snapping_events.txt b/lords_of_ash/events/snapping_events.txt index 7fedb11..7ba61dd 100644 --- a/lords_of_ash/events/snapping_events.txt +++ b/lords_of_ash/events/snapping_events.txt @@ -82,7 +82,7 @@ mistborn_snapping.0010 = { type = character_event title = mistborn_snapping.0010.t desc = mistborn_snapping.0010.desc - theme = skulduggery + theme = secret left_portrait = { character = root @@ -461,6 +461,23 @@ mistborn_snapping.0030 = { modifier = disappointed_opinion opinion = -15 } + # If the child was injured during snapping, father feels guilt + if = { + limit = { + root = { + OR = { + has_trait = wounded_1 + has_trait = wounded_2 + has_trait = wounded_3 + } + } + } + add_opinion = { + target = root + modifier = guilty_about_snapping_opinion + opinion = -10 + } + } } } ai_chance = { @@ -468,3 +485,97 @@ mistborn_snapping.0030 = { } } } + +# ============================================================ +# LATE SNAPPING - Traumatic life events for older characters +# Fires for characters age 17-30 with dormant potential +# Triggered by imprisonment, combat, near-death experiences +# ============================================================ +mistborn_snapping.0040 = { + type = character_event + title = mistborn_snapping.0040.t + desc = mistborn_snapping.0040.desc + theme = secret + + left_portrait = { + character = root + animation = pain + } + + trigger = { + OR = { + has_trait = trait_allomantic_potential + has_trait = trait_mistborn_potential + } + age >= 17 + age <= 30 + NOT = { has_trait = trait_mistborn } + NOT = { is_allomancer_trigger = yes } + NOT = { has_character_flag = late_snapping_attempted } + } + + weight_multiplier = { + base = 1 + modifier = { + add = 0.5 + is_imprisoned = yes + } + modifier = { + add = 0.3 + has_trait = brave + } + modifier = { + add = 0.3 + has_trait = wrathful + } + } + + immediate = { + add_character_flag = { + flag = late_snapping_attempted + years = 3 + } + } + + # The trauma triggers a late Snapping + option = { + name = mistborn_snapping.0040.a + # Late snapping has lower success chance (15%) + random_list = { + 15 = { + # Success - late Snapping occurs + trigger_event = { + id = mistborn_snapping.0020 + days = 1 + } + } + 75 = { + # Failure - the moment passes + add_stress = 20 + custom_tooltip = mistborn_snapping.0040.a.fail + } + 10 = { + # Injury from the trauma + add_trait = wounded_1 + add_stress = 30 + custom_tooltip = mistborn_snapping.0040.a.injured + } + } + ai_chance = { + base = 100 + } + } + + # Resist the trauma - refuse to break + option = { + name = mistborn_snapping.0040.b + add_stress = 10 + stress_impact = { + brave = -10 + craven = 10 + } + ai_chance = { + base = 20 + } + } +}