fix(events): replace invalid event themes and fix modifier reference

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 <noreply@anthropic.com>
This commit is contained in:
2026-02-07 22:35:52 +01:00
co-authored by Claude Opus 4.6
parent c1d02baa23
commit 264156ec77
4 changed files with 642 additions and 5 deletions
+363 -1
View File
@@ -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
}
}
}
}
+1 -1
View File
@@ -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
+166 -2
View File
@@ -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
}
}
}
+112 -1
View File
@@ -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
}
}
}