• We have updated our Community Code of Conduct. Please read through the new rules for the forum that are an integral part of Paradox Interactive’s User Agreement.

Lord Haleth

Corporal
25 Badges
Sep 1, 2016
43
4
  • Crusader Kings II: Charlemagne
  • Crusader Kings II: Legacy of Rome
  • Crusader Kings II: The Old Gods
  • Crusader Kings II
  • Crusader Kings II: Sons of Abraham
  • Crusader Kings III: Royal Edition
  • Crusader Kings III
  • Crusader Kings II: Holy Fury
  • Stellaris: Apocalypse
  • Stellaris: Humanoids Species Pack
  • Crusader Kings II: Jade Dragon
  • Stellaris - Path to Destruction bundle
  • Crusader Kings II: Monks and Mystics
  • Stellaris: Leviathans Story Pack
  • Stellaris: Digital Anniversary Edition
  • Crusader Kings II: Reapers Due
  • Stellaris
  • Crusader Kings II: Conclave
  • Crusader Kings II: Horse Lords
  • Crusader Kings II: Way of Life
  • Stellaris: Synthetic Dawn
  • Crusader Kings II: Sword of Islam
  • Crusader Kings II: Sunset Invasion
  • Crusader Kings II: The Republic
  • Crusader Kings II: Rajas of India
Hey all,

I'm looking into modding the Conclave education mechanism. Not because I hate it, but because I love it and am looking into making more than the usual two or three (Thrift, Duty or Struggle) childhood foci valid options. However, I can't find the proper files. Internet searches haven't helped. Do you know which are the relevant files? Is it even moddable or is it hardcoded?

Kind regards,
Haleth
 

richvh

Preserver of the Light
63 Badges
Dec 1, 2001
14.691
1.999
Visit site
  • Stellaris: Leviathans Story Pack
  • Pillars of Eternity
  • Crusader Kings II: Horse Lords
  • Cities: Skylines - After Dark
  • Knights of Pen and Paper 2
  • Crusader Kings II: Conclave
  • Stellaris
  • Hearts of Iron IV Sign-up
  • Stellaris Sign-up
  • Crusader Kings II: Reapers Due
  • Tyranny: Archon Edition
  • Tyranny: Archon Edition
  • Tyranny: Gold Edition
  • Crusader Kings II: Way of Life
  • Crusader Kings II: Monks and Mystics
  • Stellaris - Path to Destruction bundle
  • Surviving Mars
  • Stellaris: Synthetic Dawn
  • Tyranny - Tales from the Tiers
  • Tyranny - Bastards Wound
  • Age of Wonders III
  • Age of Wonders: Shadow Magic
  • Age of Wonders
  • Age of Wonders II
  • Crusader Kings II: Jade Dragon
  • Crusader Kings III: Royal Edition
  • Europa Universalis IV: Call to arms event
  • Crusader Kings II
  • Crusader Kings II: Charlemagne
  • Crusader Kings II: Legacy of Rome
  • Crusader Kings II: The Old Gods
  • Crusader Kings II: Rajas of India
  • Crusader Kings II: The Republic
  • Crusader Kings II: Sons of Abraham
  • Crusader Kings II: Sunset Invasion
  • Crusader Kings II: Sword of Islam
  • Europa Universalis IV
  • Europa Universalis IV: Conquest of Paradise
  • Europa Universalis IV: Wealth of Nations
  • A Game of Dwarves
  • King Arthur II
  • Knights of Pen and Paper +1 Edition
  • Magicka
  • Majesty 2 Collection
  • Europa Universalis IV: Res Publica
  • Europa Universalis: Rome
  • Rome Gold
  • Rome: Vae Victis
  • 500k Club
  • Cities: Skylines
Hey all,

I'm looking into modding the Conclave education mechanism. Not because I hate it, but because I love it and am looking into making more than the usual two or three (Thrift, Duty or Struggle) childhood foci valid options. However, I can't find the proper files. Internet searches haven't helped. Do you know which are the relevant files? Is it even moddable or is it hardcoded?

Kind regards,
Haleth
Not hard coded at all.

The focuses are in objectives/00_zeus_childhood_focuses.txt and 00_zeus_education_focuses.txt. The events are in events/ze_childhood_events.txt and ze_education_events.txt. (The code name for Conclave was Zeus, and for once the code name got preserved in the game files.)
 

Lord Haleth

Corporal
25 Badges
Sep 1, 2016
43
4
  • Crusader Kings II: Charlemagne
  • Crusader Kings II: Legacy of Rome
  • Crusader Kings II: The Old Gods
  • Crusader Kings II
  • Crusader Kings II: Sons of Abraham
  • Crusader Kings III: Royal Edition
  • Crusader Kings III
  • Crusader Kings II: Holy Fury
  • Stellaris: Apocalypse
  • Stellaris: Humanoids Species Pack
  • Crusader Kings II: Jade Dragon
  • Stellaris - Path to Destruction bundle
  • Crusader Kings II: Monks and Mystics
  • Stellaris: Leviathans Story Pack
  • Stellaris: Digital Anniversary Edition
  • Crusader Kings II: Reapers Due
  • Stellaris
  • Crusader Kings II: Conclave
  • Crusader Kings II: Horse Lords
  • Crusader Kings II: Way of Life
  • Stellaris: Synthetic Dawn
  • Crusader Kings II: Sword of Islam
  • Crusader Kings II: Sunset Invasion
  • Crusader Kings II: The Republic
  • Crusader Kings II: Rajas of India
I came across the haughty maturing event. And I was wondering if I'am I reading this correctly. If I look at the modifiers the chances for haughty turning into groomed are potentially much higher, since there is no modifiers for proud, arbitrary or cruel guardians to enhance the chances for those traits to mature. The rowdy event does have these modifiers for brawny, honest or slow/imbecile guardians.

Am I reading the code correctly? And if so, is this WAD to nerf bad traits or did the dev's forget to add the modifiers for haughty?

#############################################
# Haughty #
#############################################

# Haughty turns into Proud, Arbitrary, Cruel or Groomed.
character_event = {
id = ZE.13000

hide_window = yes

is_triggered_only = yes

only_capable = yes

trigger = {
trait = haughty
}

immediate = {
set_character_flag = was_haughty
random_list = { # Select outcome
10 = {
set_character_flag = haughty_to_proud
modifier = {
factor = 0
OR = {
trait = humble
trait = proud
}
}
}
10 = {
set_character_flag = haughty_to_arbitrary
modifier = {
factor = 0
OR = {
trait = just
trait = arbitrary
}
}
}
10 = {
set_character_flag = haughty_to_cruel
modifier = {
factor = 0
OR = {
trait = kind
trait = cruel
}
}
}
10 = {
set_character_flag = haughty_to_groomed
modifier = {
factor = 0
OR = {
trait = groomed
trait = uncouth
}
}
modifier = {
factor = 1.5
educator = {
trait = proud
}
}
modifier = {
factor = 1.5
has_focus = focus_ch_pride
}
modifier = {
factor = 1.75
has_focus = focus_ch_etiquette
}
modifier = {
factor = 1.75
has_focus = focus_ed_diplomacy
}
modifier = {
factor = 1.5
is_female = yes
NOT = { educator = { has_religion_feature = religion_matriarchal } }
}
}
}
if = {
limit = {
AND = {
OR = {
trait = humble
trait = proud
}
OR = {
trait = just
trait = arbitrary
}
OR = {
trait = kind
trait = cruel
}
OR = {
trait = groomed
trait = uncouth
}
}
}
change_martial = 2
remove_trait = haughty
break = yes
}
if = {
limit = {
NOT = { trait = ambitious }
educator = { trait = ambitious }
prisoner = no
}
educator = { character_event = { id = ZE.13002 } } # Let educator decide on intervention
break = yes
}
character_event = { id = ZE.13001 } # Go direct to trait change
}
}

character_event = {
id = ZE.13001
picture = GFX_evt_courtiers_talking

desc = {
text = EVTDESCA_ZE_13001
trigger = {
FROM = { has_character_flag = haughty_to_proud }
}
}
desc = {
text = EVTDESCB_ZE_13001
trigger = {
FROM = { has_character_flag = haughty_to_arbitrary }
}
}
desc = {
text = EVTDESCC_ZE_13001
trigger = {
FROM = { has_character_flag = haughty_to_cruel }
}
}
desc = {
text = EVTDESCDHFP20800_HAUGHTY_GROOMED
trigger = {
FROM = { has_character_flag = haughty_to_groomed }
}
}

is_triggered_only = yes

only_capable = yes

option = {
name = EVTOPTA_ZE_13001
trigger = {
has_character_flag = haughty_to_proud
}
remove_trait = haughty
add_trait = proud
clr_character_flag = haughty_to_proud
}
option = {
name = EVTOPTB_ZE_13001
trigger = {
has_character_flag = haughty_to_arbitrary
}
remove_trait = haughty
add_trait = arbitrary
clr_character_flag = haughty_to_arbitrary
}
option = {
name = EVTOPTC_ZE_13001
trigger = {
has_character_flag = haughty_to_cruel
}
remove_trait = haughty
add_trait = cruel
clr_character_flag = haughty_to_cruel
}
option = {
name = EVTOPTAHFP20800_HAUGHTY_GROOMED
trigger = {
has_character_flag = haughty_to_groomed
}
remove_trait = haughty
add_trait = groomed
balance_weight_small_effect = yes
clr_character_flag = haughty_to_groomed
}
}


# Ambitious educator may make child Ambitious instead
character_event = {
id = ZE.13002
picture = GFX_evt_courtiers_talking

desc = {
text = EVTDESCA_ZE_13002
trigger = {
FROM = { has_character_flag = haughty_to_proud }
}
}
desc = {
text = EVTDESCB_ZE_13002
trigger = {
FROM = { has_character_flag = haughty_to_arbitrary }
}
}
desc = {
text = EVTDESCC_ZE_13002
trigger = {
FROM = { has_character_flag = haughty_to_cruel }
}
}
desc = {
text = EVTDESCDHFP20800_HAUGHTY_GROOMED_ED
trigger = {
FROM = { has_character_flag = haughty_to_groomed }
}
}

is_triggered_only = yes

only_capable = yes

option = {
name = EVTOPTA_ZE_13002 # The child will be like me
FROM = {
custom_tooltip = { text = haughty_may_become_ambitious }
}
hidden_tooltip = { FROM = { character_event = { id = ZE.13004 } } }
show_trait = ambitious
}
option = {
name = EVTOPTB_ZE_13002 # Do not intervene
hidden_tooltip = { FROM = { character_event = { id = ZE.13001 } } } # Go to normal trait change
if = {
limit = { FROM = { has_character_flag = haughty_to_proud } }
tooltip = { FROM = { remove_trait = haughty add_trait = proud } }
}
if = {
limit = { FROM = { has_character_flag = haughty_to_arbitrary } }
tooltip = { FROM = { remove_trait = haughty add_trait = arbitrary } }
}
if = {
limit = { FROM = { has_character_flag = haughty_to_cruel } }
tooltip = { FROM = { remove_trait = haughty add_trait = cruel } }
}
if = {
limit = { FROM = { has_character_flag = haughty_to_groomed } }
tooltip = { FROM = { remove_trait = haughty add_trait = groomed } }
}
}
}

# Notify child of Educator intervention and result
character_event = {
id = ZE.13004
picture = GFX_evt_courtiers_talking

desc = {
text = EVTDESCA_ZE_13004
trigger = {
FROM = { has_character_flag = haughty_to_proud }
}
}
desc = {
text = EVTDESCB_ZE_13004
trigger = {
FROM = { has_character_flag = haughty_to_arbitrary }
}
}
desc = {
text = EVTDESCC_ZE_13004
trigger = {
FROM = { has_character_flag = haughty_to_cruel }
}
}
desc = {
text = EVTDESCDHFP20800_HAUGHTY_GROOMED_RESP
trigger = {
FROM = { has_character_flag = haughty_to_groomed }
}
}

is_triggered_only = yes

only_capable = yes

option = {
name = EVTOPTA_ZE_13004
remove_trait = haughty
add_trait = ambitious
clr_character_flag = haughty_to_proud
clr_character_flag = haughty_to_arbitrary
clr_character_flag = haughty_to_cruel
clr_character_flag = haughty_to_groomed
if = {
limit = {
educator = { ai = no }
}
educator = { set_character_flag = achievement_follow_me }
}
}
option = {
name = EVTOPTB_ZE_13004
trigger = {
has_character_flag = haughty_to_proud
}
remove_trait = haughty
add_trait = proud
clr_character_flag = haughty_to_proud
}
option = {
name = EVTOPTC_ZE_13004
trigger = {
has_character_flag = haughty_to_arbitrary
}
remove_trait = haughty
add_trait = arbitrary
clr_character_flag = haughty_to_arbitrary
}
option = {
name = EVTOPTD_ZE_13004
trigger = {
has_character_flag = haughty_to_cruel
}
remove_trait = haughty
add_trait = cruel
clr_character_flag = haughty_to_cruel
}
option = {
name = EVTOPTAHFP20800_HAUGHTY_GROOMED_RESP
trigger = {
has_character_flag = haughty_to_groomed
}
remove_trait = haughty
add_trait = groomed
balance_weight_small_effect = yes
clr_character_flag = haughty_to_groomed
}
}

#############################################
# Rowdy #
#############################################

character_event = {
id = ZE.13030

hide_window = yes

is_triggered_only = yes

only_capable = yes

trigger = {
trait = rowdy
}

immediate = {
set_character_flag = was_rowdy
random_list = { # Select outcome
10 = {
set_character_flag = rowdy_to_strong
modifier = {
factor = 0
OR = {
is_strong_trigger = yes
is_weak_trigger = yes
}
}
modifier = {
factor = 1.5
educator = {
trait = robust
}
}
}
10 = {
set_character_flag = rowdy_to_honest
modifier = {
factor = 0
OR = {
trait = honest
trait = deceitful
}
}
modifier = {
factor = 1.5
educator = {
trait = honest
}
}
}
10 = {
modifier = {
factor = 0
OR = {
is_dumb_trigger = yes
has_character_flag = child_became_smarter
}
}
modifier = {
factor = 1.35
educator = {
trait = slow
}
}
modifier = {
factor = 1.65
educator = {
trait = imbecile
}
}
set_character_flag = rowdy_to_imbecile
set_character_flag = child_became_less_smart
}
10 = {
set_character_flag = rowdy_to_uncouth
modifier = {
factor = 0
OR = {
trait = groomed
trait = uncouth
}
}
modifier = {
factor = 1.5
educator = {
trait = shy
}
}
modifier = {
factor = 1.5
has_focus = focus_ed_martial
}
}
}
if = {
limit = {
AND = {
OR = {
is_strong_trigger = yes
is_weak_trigger = yes
}
OR = {
trait = honest
trait = deceitful
}
OR = {
is_dumb_trigger = yes
has_character_flag = child_became_smarter
}
OR = {
trait = groomed
trait = uncouth
}
}
}
change_martial = 2
remove_trait = rowdy
break = yes
}
if = {
limit = {
NOT = { trait = brave }
educator = { trait = brave }
prisoner = no
}
educator = { character_event = { id = ZE.13032 } } # Let educator decide on intervention
break = yes
}
character_event = { id = ZE.13031 } # Go direct to trait change
}
}

character_event = {
id = ZE.13031
picture = GFX_evt_courtiers_talking

desc = {
text = EVTDESCA_ZE_13031
trigger = {
FROM = { has_character_flag = rowdy_to_strong }
}
}
desc = {
text = EVTDESCB_ZE_13031
trigger = {
FROM = { has_character_flag = rowdy_to_honest }
}
}
desc = {
text = EVTDESCC_ZE_13031
trigger = {
FROM = { has_character_flag = rowdy_to_imbecile }
}
}
desc = {
text = EVTDESCDHFP20800_ROWDY_UNCOUTH
trigger = {
FROM = { has_character_flag = rowdy_to_uncouth }
}
}

is_triggered_only = yes

only_capable = yes

immediate = {
if = {
limit = {
has_character_flag = rowdy_to_imbecile
trait = genius
}
set_character_flag = rowdy_genius_to_quick
break = yes
}
if = {
limit = {
has_character_flag = rowdy_to_imbecile
trait = quick
}
set_character_flag = rowdy_quick_to_normal
break = yes
}
if = {
limit = {
has_character_flag = rowdy_to_imbecile
trait = slow
}
set_character_flag = rowdy_slow_to_imbecile
break = yes
}
if = {
limit = {
has_character_flag = rowdy_to_imbecile
}
set_character_flag = rowdy_normal_to_slow
}
}

option = {
name = EVTOPTA_ZE_13031
trigger = {
has_character_flag = rowdy_to_strong
}
remove_trait = rowdy
add_trait = robust
clr_character_flag = rowdy_to_strong
}
option = {
name = EVTOPTB_ZE_13031
trigger = {
has_character_flag = rowdy_to_honest
}
remove_trait = rowdy
add_trait = honest
clr_character_flag = rowdy_to_honest
}
option = {
name = EVTOPTC_ZE_13031
trigger = {
has_character_flag = rowdy_to_imbecile
}
clr_character_flag = rowdy_to_imbecile
if = {
limit = { has_character_flag = rowdy_genius_to_quick }
remove_trait = rowdy
remove_trait = genius
add_trait = quick
clr_character_flag = rowdy_genius_to_quick
}
if = {
limit = { has_character_flag = rowdy_quick_to_normal }
remove_trait = rowdy
remove_trait = quick
clr_character_flag = rowdy_quick_to_normal
}
if = {
limit = { has_character_flag = rowdy_normal_to_slow }
remove_trait = rowdy
add_trait = dull
clr_character_flag = rowdy_normal_to_slow
}
if = {
limit = { has_character_flag = rowdy_slow_to_imbecile }
remove_trait = rowdy
add_trait = dull
clr_character_flag = rowdy_slow_to_imbecile
}
}
option = {
name = EVTOPTDHFP20800_ROWDY_UNCOUTH
trigger = {
has_character_flag = rowdy_to_uncouth
}
remove_trait = rowdy
add_trait = uncouth
clr_character_flag = rowdy_to_uncouth
}
}


# Brave educator may make child Brave instead
character_event = {
id = ZE.13032
picture = GFX_evt_courtiers_talking

desc = {
text = EVTDESCA_ZE_13032
trigger = {
FROM = { has_character_flag = rowdy_to_strong }
}
}
desc = {
text = EVTDESCB_ZE_13032
trigger = {
FROM = { has_character_flag = rowdy_to_honest }
}
}
desc = {
text = EVTDESCC_ZE_13032
trigger = {
FROM = { has_character_flag = rowdy_to_imbecile }
}
}
desc = {
text = EVTDESCEHFP20800_ROWDY_UNCOUTH_ED
trigger = {
FROM = { has_character_flag = rowdy_to_uncouth }
}
}

is_triggered_only = yes

only_capable = yes

option = {
name = EVTOPTA_ZE_13032 # The child will be like me
FROM = {
custom_tooltip = { text = rowdy_may_become_brave }
}
hidden_tooltip = { FROM = { character_event = { id = ZE.13034 } } }
show_trait = brave
}
option = {
name = EVTOPTB_ZE_13032 # Do not intervene
hidden_tooltip = { FROM = { character_event = { id = ZE.13031 } } } # Go to normal trait change
if = {
limit = { FROM = { has_character_flag = rowdy_to_strong } }
tooltip = { FROM = { remove_trait = rowdy add_trait = robust } }
}
if = {
limit = { FROM = { has_character_flag = rowdy_to_honest } }
tooltip = { FROM = { remove_trait = rowdy add_trait = honest } }
}
if = {
limit = { FROM = { has_character_flag = rowdy_to_uncouth } }
tooltip = { FROM = { remove_trait = rowdy add_trait = uncouth } }
}
if = {
limit = {
FROM = {
has_character_flag = rowdy_to_imbecile
trait = genius
}
}
tooltip = {
FROM = {
remove_trait = rowdy
remove_trait = genius
add_trait = quick
}
}
}
if = {
limit = {
FROM = {
has_character_flag = rowdy_to_imbecile
trait = quick
}
}
tooltip = {
FROM = {
remove_trait = rowdy
remove_trait = quick
}
}
}
if = {
limit = {
FROM = {
has_character_flag = rowdy_to_imbecile
trait = slow
}
}
tooltip = {
FROM = {
remove_trait = rowdy
remove_trait = slow
add_trait = imbecile
}
}
}
if = {
limit = {
FROM = {
has_character_flag = rowdy_to_imbecile
NOT = { trait = genius }
NOT = { trait = quick }
NOT = { trait = slow }
}
}
tooltip = {
FROM = {
remove_trait = rowdy
add_trait = dull
}
}
}
}
}

# Notify child of Educator intervention and result
character_event = {
id = ZE.13034
picture = GFX_evt_courtiers_talking

desc = {
text = EVTDESCA_ZE_13034
trigger = {
FROM = { has_character_flag = rowdy_to_strong }
}
}
desc = {
text = EVTDESCB_ZE_13034
trigger = {
FROM = { has_character_flag = rowdy_to_honest }
}
}
desc = {
text = EVTDESCC_ZE_13034
trigger = {
FROM = { has_character_flag = rowdy_to_imbecile }
}
}
desc = {
text = EVTDESCDHFP20800_ROWDY_UNCOUTH_RESP
trigger = {
FROM = { has_character_flag = rowdy_to_uncouth }
}
}

is_triggered_only = yes

only_capable = yes

immediate = {
if = {
limit = {
has_character_flag = rowdy_to_imbecile
trait = genius
}
set_character_flag = rowdy_genius_to_quick
break = yes
}
if = {
limit = {
has_character_flag = rowdy_to_imbecile
trait = quick
}
set_character_flag = rowdy_quick_to_normal
break = yes
}
if = {
limit = {
has_character_flag = rowdy_to_imbecile
trait = slow
}
set_character_flag = rowdy_slow_to_imbecile
break = yes
}
if = {
limit = {
has_character_flag = rowdy_to_imbecile
}
set_character_flag = rowdy_normal_to_slow
}
}

option = {
name = EVTOPTA_ZE_13034
remove_trait = rowdy
add_trait = brave
clr_character_flag = rowdy_to_strong
clr_character_flag = rowdy_to_honest
clr_character_flag = rowdy_to_imbecile
clr_character_flag = rowdy_to_uncouth
if = {
limit = {
educator = { ai = no }
}
educator = { set_character_flag = achievement_follow_me }
}
}
option = {
name = EVTOPTB_ZE_13034
trigger = {
has_character_flag = rowdy_to_strong
}
remove_trait = rowdy
add_trait = robust
clr_character_flag = rowdy_to_strong
}
option = {
name = EVTOPTC_ZE_13034
trigger = {
has_character_flag = rowdy_to_honest
}
remove_trait = rowdy
add_trait = honest
clr_character_flag = rowdy_to_honest
}
option = {
name = EVTOPTCHFP20800_ROWDY_UNCOUTH_RESP
trigger = {
has_character_flag = rowdy_to_uncouth
}
remove_trait = rowdy
add_trait = uncouth
clr_character_flag = rowdy_to_uncouth
}
option = {
name = EVTOPTD_ZE_13034
trigger = {
has_character_flag = rowdy_to_imbecile
}
clr_character_flag = rowdy_to_imbecile
if = {
limit = { has_character_flag = rowdy_genius_to_quick }
remove_trait = rowdy
remove_trait = genius
add_trait = quick
clr_character_flag = rowdy_genius_to_quick
}
if = {
limit = { has_character_flag = rowdy_quick_to_normal }
remove_trait = rowdy
remove_trait = quick
clr_character_flag = rowdy_quick_to_normal
}
if = {
limit = { has_character_flag = rowdy_normal_to_slow }
remove_trait = rowdy
add_trait = dull
clr_character_flag = rowdy_normal_to_slow
}
if = {
limit = { has_character_flag = rowdy_slow_to_imbecile }
remove_trait = rowdy
add_trait = dull
clr_character_flag = rowdy_slow_to_imbecile
}
}
}