N3OW/events/birth_events.txt
2026-01-06 14:25:21 +01:00

4625 lines
105 KiB
Text

#Events for birth on actions
namespace = birth
#All events marked with "BIRTH" are events announcing the birth
##############################################################################################
# 0001-1999: "Ordinary" births and bastard births
# by Petter Vilberg, Linnéa Thimrén & Mathilda Bjarnehed
##############################################################################################
# 0001 - Selects visible birth event based on bastard status and complication rolls (for births without mother and/or child dying)
# 0002 - Reward event for mother who've had many children
# 1001 - BIRTH: Mother: regular birth
# 1002 - BIRTH: Mother: child secretly a bastard
# 1003 - BIRTH: Father: Regular birth or unaware of unknown bastard birth
# 1005 - BIRTH: Mother: Unmarried and father is unknown
# 1006 - BIRTH: Real father: Realizes he is father of newborn (currently only triggered in 1005)
# 1100 - Sends good omen notification
##############################################################################################
# 2001-2999: Legitimization events for bastards
##############################################################################################
# 2001 - For potential legitimizer
# 2002 - Other parent is notified of legitimization
# 2003 - Other parent is notified of lack of legitimization
# 2006 - The spouse of Mother is told when the Father legitimizes
# 2011 - Bastard, but faith does not have bastardy
# 2012 - Event for the "secondary" parent
# 2101 - Mother: the child is unlegitimizable
# 2102 - Mother's spouse: Bastard is unlegitimizable
# 2103 - Father: Bastard is unlegitimizable
# 2104 - Father's spouse: Birth of unlegitimizable bastard
##############################################################################################
# 3000-3999: Problematic childbirth (miscarriages, mother deaths, sickly child, ill mother)
# by Linnéa Thimrén & Mathilda Bjarnehed
##############################################################################################
# 3001 - BIRTH: Mother: Child dies (no child created)
# 3002 - BIRTH: Father: Child dies (no child created)
# 3011 - BIRTH: Mother: Mother dies, child survives
# 3012 - BIRTH: Father: Mother dies, child survives
# 3021 - BIRTH: Mother: Mother and child dies
# 3022 - BIRTH: Father: Mother and child dies
# 3031 - Sickly child - for mother
# 3034 - Sickly child - for father
# 3033 - Sickly child recovery management event
# 3034 - Sickly child recovery - for child
# 3035 - Sickly child recovery - for mother and father
# 3041 - Sickly mother - for mother
#############################################
# 8001-8999: Misc birth management
#############################################
# 8001 - Reincarnation management, by Mathilda Bjarnehed
##############################################################################################
# 9001-9999: Special naming events
# by Mathilda Bjarnehed
###############################################################################################
# 9002 - BIRTH: AI spouse suggests a name (5% change of replacing regular 1001 mother event or 1003 father event)
# 9003 - You said no to their suggestion and pick a name of your own
scripted_trigger allow_naming_on_birth_of_dynasty_child_trigger = {
save_temporary_scope_as = naming_dynasty_member
exists = $CHILD$
is_ai = no
#No parent is naming the kid, and it's not your child (at least not officially...)
$CHILD$ = {
any_parent = {
NOR = {
allow_naming_on_birth_of_child_trigger = { CHILD = $CHILD$ }
this = scope:naming_dynasty_member
}
}
}
$CHILD$.host = scope:naming_dynasty_member
}
#Selects visible birth event based on bastard status and complication rolls (for births without mother and/or child dying)
birth.0001 = {
hidden = yes
trigger = {
birth_will_happen_as_usual_trigger = yes
}
immediate = {
#NOTE: Sets up secrets and notifies real_father and father if the child is a bastard, and they should know the Secret.
pregnancy_maintainance_effect = yes
#It is not a bastard and not complicated
if = {
limit = {
NOR = {
has_character_flag = unmarried_bastard_pregnancy
has_character_flag = bastard_pregnancy
}
}
random_list = {
95 = { #Normal birth event for mother
trigger_event = birth.1001
}
5 = { #Other parent (father) suggest a name
trigger = {
allow_naming_on_birth_of_child_trigger = { CHILD = scope:child }
scope:child = {
father ?= {
is_ai = yes
is_alive = yes
}
NOT = { has_trait = twin }
}
}
opinion_modifier = {
who = scope:child.father
opinion_target = scope:child.mother
min = 0
max = 10
multiplier = 0.1
}
modifier = {
any_child = { is_alive = yes count > 1 }
add = -5
}
modifier = {
scope:child.father = {
OR = {
has_trait = lunatic
has_trait = possessed
}
}
add = 15
}
modifier = { # Event is less common for AI rulers.
scope:child.mother = { is_ai = yes }
factor = 0.25
}
trigger_event = birth.9002
}
}
}
###
# Bastard event firing
###
# Married mother with secret bastard
else_if = {
limit = {
has_character_flag = bastard_pregnancy
NOT = { has_character_flag = pregnancy_real_father_of_bastard_is_known_flag }
}
trigger_event = birth.1002
}
#Unmarried mother with unknown father of child
else_if = {
limit = {
has_character_flag = unmarried_bastard_pregnancy
NOT = { has_character_flag = pregnancy_real_father_of_bastard_is_known_flag }
}
trigger_event = birth.1005
}
#Known bastard
else_if = {
limit = {
OR = {
has_character_flag = bastard_pregnancy
has_character_flag = unmarried_bastard_pregnancy
}
has_character_flag = pregnancy_real_father_of_bastard_is_known_flag
}
if = {
limit = {
exists = scope:child.house
scope:child.house = scope:mother.house
}
scope:mother = {
save_scope_as = legitimizer
}
}
else_if = {
limit = {
exists = scope:child.house
scope:child.house = scope:real_father.house
}
scope:real_father = {
save_scope_as = legitimizer
}
}
if = {
limit = { exists = scope:legitimizer }
scope:legitimizer = {
if = {
limit = {
faith = {
has_doctrine_parameter = bastards_none
}
}
trigger_event = birth.2011
}
else = {
trigger_event = birth.2001
}
}
}
}
scope:mother = {
every_parent = { # Grandparents
limit = {
NOT = { is_parent_of = scope:child } # Don't ask
trigger_if = {
limit = {
scope:child = { tgp_is_in_ceremonial_house_trigger = yes }
}
tgp_is_in_ceremonial_house_trigger = yes
}
}
send_interface_toast = {
type = msg_grandchild_born_toast
title = msg_grandchild_born_toast_title
left_icon = scope:mother
right_icon = scope:child
if = {
limit = {
scope:child = { has_trait = twin }
}
custom_tooltip = msg_grandchild_born_toast_desc_twins
}
else = {
custom_tooltip = msg_grandchild_born_toast_desc
}
}
}
}
scope:father ?= { #Check whether the father should get a regular notification event
if = {
limit = {
OR = {
any_consort = {
this = scope:mother
NOT = { has_character_flag = pregnancy_real_father_of_bastard_is_known_flag }
}
#If you split up before the pregnancy was showing etc.
any_former_spouse = {
this = scope:mother
NOT = { has_character_flag = pregnancy_real_father_of_bastard_is_known_flag }
}
any_former_concubine = {
this = scope:mother
NOT = { has_character_flag = pregnancy_real_father_of_bastard_is_known_flag }
}
any_former_concubinist = {
this = scope:mother
NOT = { has_character_flag = pregnancy_real_father_of_bastard_is_known_flag }
}
}
NOT = { is_in_list = illegitimacy_secret_knowers }
}
random_list = {
95 = { #Normal birth event for father
if = {
limit = { #If you split up before the pregnancy was showing etc. and now the mother isn't around then we just want to give the father a toast
NOT = { is_consort_of = scope:mother }
NOT = { is_at_same_location = scope:mother }
}
send_interface_toast = {
type = msg_child_born_toast
title = birth.father_is_former_consort_toast
left_icon = scope:mother
right_icon = scope:child
if = {
limit = {
scope:child = { has_trait = twin }
}
custom_tooltip = birth.father_is_former_consort_toast_tt_twins
}
else = {
custom_tooltip = birth.father_is_former_consort_toast_tt
}
}
}
else = { #Normal event
trigger_event = birth.1003
}
}
5 = { #Other parent (mother) suggest a name
trigger = {
is_consort_of = scope:mother
allow_naming_on_birth_of_child_trigger = { CHILD = scope:child }
scope:child = {
mother ?= { is_ai = yes }
NOT = { has_trait = twin }
}
}
opinion_modifier = {
who = scope:child.mother
opinion_target = scope:child.father
min = 0
max = 10
multiplier = 0.1
}
modifier = {
any_child = { is_alive = yes count > 1 }
add = -5
}
modifier = {
scope:child.father != scope:child.real_father
add = 5
}
modifier = {
scope:child.mother = {
OR = {
has_trait = lunatic
has_trait = possessed
}
}
add = 15
}
modifier = { # Event is less common for AI rulers.
scope:child.father = { is_ai = yes }
factor = 0.25
}
trigger_event = birth.9002
}
}
every_parent = { # Grandparents
limit = {
NOT = { is_parent_of = scope:child } # Don't ask
trigger_if = {
limit = {
scope:child = { tgp_is_in_ceremonial_house_trigger = yes }
}
tgp_is_in_ceremonial_house_trigger = yes
}
}
send_interface_toast = {
type = msg_grandchild_born_toast
title = msg_grandchild_born_toast_title
left_icon = scope:mother
right_icon = scope:child
if = {
limit = {
scope:child = { has_trait = twin }
}
custom_tooltip = msg_grandchild_born_toast_desc_twins
}
else = {
custom_tooltip = msg_grandchild_born_toast_desc
}
}
}
}
}
#To trigger events for sickly child and ill mother!
if = {
limit = {
has_character_flag = birth_child_will_become_sickly
}
trigger_event = {
id = birth.3031
days = { 10 30 }
}
}
if = {
limit = {
has_character_flag = birth_mother_will_become_ill
}
trigger_event = {
id = birth.3041
days = { 10 30 }
}
}
#Chance to gain cool modifier if you've birthed a lot of kids!
if = {
limit = {
any_child = {
even_if_dead = yes
count >= 4
}
NOT = {
has_character_modifier = mothered_many_children_modifier
}
}
random = {
chance = 10
modifier = {
add = 25
any_child = {
even_if_dead = yes
count >= 5
}
}
modifier = {
add = 25
any_child = {
even_if_dead = yes
count >= 7
}
}
modifier = {
add = 25
any_child = {
even_if_dead = yes
count >= 9
}
}
modifier = {
add = 50
any_child = {
even_if_dead = yes
count >= 10
}
}
trigger_event = {
id = birth.0002
days = { 7 14 }
}
}
}
pregnancy_cleanup_effect = yes
#Special traits from event learning_medicine.1023
if = {
limit = { has_character_flag = medicine_learning_fertility_treamtent_unexpected_trait }
remove_character_flag = medicine_learning_fertility_treamtent_unexpected_trait
scope:child = {
random_list = {
2 = {
trigger = {
NOR = {
has_trait = beauty_good
has_trait = beauty_bad
}
}
add_trait = beauty_good_3
}
1 = {
trigger = {
NOR = {
has_trait = beauty_good
has_trait = beauty_bad
}
}
add_trait = beauty_bad_3
}
2 = {
trigger = {
NOR = {
has_trait = physique_good
has_trait = physique_bad
}
}
add_trait = physique_good_3
}
1 = {
trigger = {
NOR = {
has_trait = physique_good
has_trait = physique_bad
}
}
add_trait = physique_bad_3
}
2 = {
trigger = {
NOR = {
has_trait = intellect_good
has_trait = intellect_bad
}
}
add_trait = intellect_good_3
}
1 = {
trigger = {
NOR = {
has_trait = intellect_good
has_trait = intellect_bad
}
}
add_trait = intellect_bad_3
}
1 = { add_trait = dwarf }
2 = { add_trait = giant }
1 = { add_trait = albino }
}
}
}
#Is a player part of the same dynasty, and my host? Give them the chance to name the child!
scope:child.dynasty ?= {
if = {
limit = {
any_player = {
allow_naming_on_birth_of_dynasty_child_trigger = { CHILD = scope:child }
NOT = { is_parent_of = scope:child } # parents should get their own naming event
dynasty ?= scope:child.dynasty
}
}
random_player = {
limit = {
allow_naming_on_birth_of_dynasty_child_trigger = { CHILD = scope:child }
NOT = { is_parent_of = scope:child }
dynasty ?= scope:child.dynasty
}
trigger_event = birth.1010
}
}
}
# TGP Ceremonial House
scope:child = {
if = {
limit = {
tgp_is_in_ceremonial_house_trigger = yes
any_parent = {
NOT = { tgp_is_in_ceremonial_house_trigger = yes }
}
}
every_parent = {
limit = {
NOT = { tgp_is_in_ceremonial_house_trigger = yes }
}
save_scope_as = non_royal_parent
dynasty ?= { add_dynasty_prestige = minor_dynasty_prestige_gain }
every_player = {
limit = { top_liege = scope:child.top_liege }
send_interface_toast = {
type = msg_royal_child_born_toast
title = msg_royal_child_born_toast_title
left_icon = scope:non_royal_parent
right_icon = scope:child
if = {
limit = {
scope:child = { has_trait = twin }
scope:non_royal_parent = { is_female = yes }
}
custom_tooltip = msg_royal_child_born_toast_desc_twins
}
else_if = {
limit = {
scope:child = { has_trait = twin }
}
custom_tooltip = msg_royal_child_born_toast_desc_twins_father
}
else_if = {
limit = {
scope:non_royal_parent = { is_female = yes }
}
custom_tooltip = msg_royal_child_born_toast_desc
}
else = { custom_tooltip = msg_royal_child_born_toast_desc_father }
show_as_tooltip = {
scope:non_royal_parent.dynasty ?= { add_dynasty_prestige = minor_dynasty_prestige_gain }
}
}
}
}
}
}
}
}
#Reward event for mother who've had many children
birth.0002 = {
type = character_event
title = birth.0002.t
desc = birth.0002.desc
left_portrait = {
character = root
animation = newborn
}
theme = family
override_background = { reference = bedchamber }
immediate = {
play_music_cue = mx_cue_positive_effect
}
option = {
name = birth.0002.a
add_character_modifier = {
modifier = mothered_many_children_modifier
}
}
}
#BIRTH: Mother: regular birth
birth.1001 = {
title = {
first_valid = {
triggered_desc = {
trigger = {
scope:child = {
NOT = { has_trait = twin }
NAND = {
exists = root.player_heir
this = root.player_heir
}
}
}
desc = birth.1001.t
}
triggered_desc = {
trigger = {
scope:child = {
NOT = { has_trait = twin }
AND = {
exists = root.player_heir
this = root.player_heir
}
}
}
desc = birth.1001.heir.t
}
triggered_desc = {
trigger = {
scope:child = {
has_trait = twin
is_female = yes
}
scope:child_2 = { is_female = yes }
}
desc = birth.1001.daughters.t
}
triggered_desc = {
trigger = {
scope:child = {
has_trait = twin
is_male = yes
}
scope:child_2 = { is_male = yes }
}
desc = birth.1001.sons.t
}
desc = birth.1001.children.t
}
}
desc = {
#How do I feel?
random_valid = {
triggered_desc = { #First child and it was cool
trigger = {
NOT = {
any_child = {
even_if_dead = yes
NOR = {
this = scope:child
is_twin_of = scope:child
}
}
}
NOT = { has_trait = craven }
}
desc = birth.1001.first_birth_good.desc
}
triggered_desc = { #First child and it was scary
trigger = {
NOT = {
any_child = {
even_if_dead = yes
NOR = {
this = scope:child
is_twin_of = scope:child
}
}
}
NOT = { has_trait = brave }
}
desc = birth.1001.first_birth_scary.desc
}
triggered_desc = { #Had a lot of babies
trigger = {
any_child = {
even_if_dead = yes
count >= 5
}
}
desc = birth.1001.many_births.desc
}
triggered_desc = {
trigger = {
any_child = {
even_if_dead = yes
NOR = {
this = scope:child
is_twin_of = scope:child
}
}
}
desc = birth.1001.not_first_birth.desc
}
}
#What did you get?
first_valid = {
triggered_desc = {
trigger = {
scope:child = {
NOT = { has_trait = twin }
}
}
desc = birth.1001.sondaughter.desc
}
triggered_desc = {
trigger = {
scope:child = {
has_trait = twin
is_female = yes
}
scope:child_2 = { is_female = yes }
}
desc = birth.1001.daughters.desc
}
triggered_desc = {
trigger = {
scope:child = {
has_trait = twin
is_male = yes
}
scope:child_2 = { is_male = yes }
}
desc = birth.1001.sons.desc
}
desc = birth.1001.children.desc
}
#Conclusion
first_valid = {
# Mystical Birthright
triggered_desc = {
trigger = {
scope:child = { has_character_flag = born_as_taltos }
faith = scope:child.faith
}
desc = birth.1001.taltos.desc
}
triggered_desc = {
trigger = {
scope:child = { has_character_flag = born_as_taltos }
faith != scope:child.faith
}
desc = birth.1001.taltos_unfaithful.desc
}
# Twins
triggered_desc = {
trigger = {
scope:child = { has_trait = twin }
exists = root.player_heir
OR = {
scope:child = root.player_heir
scope:child_2 = root.player_heir
}
}
desc = birth.1001.twins_heir.desc
}
triggered_desc = {
trigger = {
scope:child = { has_trait = twin }
}
desc = birth.1001.twins.desc
}
# Heir
triggered_desc = {
trigger = {
exists = root.player_heir
scope:child = root.player_heir
NOT = { sex_opposite_of = scope:child }
}
desc = birth.1001.same_gender_heir.desc
}
triggered_desc = {
trigger = {
exists = root.player_heir
scope:child = root.player_heir
}
desc = birth.1001.other_gender_heir.desc
}
# Nothing Special
triggered_desc = {
desc = birth.1001.end_fallback.desc
}
}
}
theme = pregnancy
override_background = {
trigger = { scope:mother = { is_travelling = yes } }
reference = terrain_travel
}
override_background = { reference = bedchamber }
left_portrait = {
character = root
animation = newborn
outfit_tags = { nightgown }
}
right_portrait = {
trigger = { exists = scope:second_adult }
character = scope:second_adult
animation = newborn
}
lower_left_portrait = scope:child
lower_center_portrait = scope:child_2
lower_right_portrait = scope:father
trigger = {
root = scope:mother
scope:child.father = scope:child.real_father
scope:child = {
NOT = { has_trait = bastard }
NOT = { has_trait = legitimized_bastard }
}
NOT = {
any_secret = {
type = secret_disputed_heritage
secret_target = {
this = scope:child
}
}
}
birth_will_happen_as_usual_trigger = yes
}
immediate = {
play_music_cue_once = { TRACK = mx_cue_birth }
if = {
limit = {
exists = var:dead_spouse
}
var:dead_spouse = {
save_scope_as = father
}
}
else = {
scope:child.father = {
save_scope_as = father
}
}
scope:child = {
hidden_effect = { set_father = scope:father }
if = {
limit = { has_trait = twin }
random_sibling = {
limit = {
is_twin_of = scope:child
}
save_scope_as = child_2
}
}
}
if = { #To save the child that the father suspects of illegitimacy
limit = {
has_character_flag = father_suspects_this_pregnancy
scope:father = { is_alive = yes }
}
remove_character_flag = father_suspects_this_pregnancy
scope:father = {
set_variable = {
name = suspect_this_child_of_illegitimacy
value = scope:child
}
}
}
#Look for another adult to hold the twin
if = {
limit = { exists = scope:child_2 }
#Let's save the court physician if you have one
if = {
limit = {
court_physician_available_trigger = yes
any_court_position_holder = {
type = court_physician_court_position
has_court_event_flag = no
is_ai = yes
}
}
save_court_physician_as_effect = { SCOPE_NAME = second_adult }
}
#Otherwise look for a relative of the mother
else_if = {
limit = {
scope:mother = {
any_close_or_extended_family_member = {
is_in_the_same_court_as = root
is_adult = yes
NOR = {
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:father }
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:mother }
this = scope:father
this = scope:mother
}
}
}
}
scope:mother = {
random_close_or_extended_family_member = {
limit = {
is_in_the_same_court_as = root
is_adult = yes
has_any_good_relationship_with_character_trigger = { CHARACTER = scope:mother }
NOR = {
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:father }
this = scope:father
this = scope:mother
}
}
alternative_limit = {
is_in_the_same_court_as = root
is_adult = yes
NOR = {
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:father }
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:mother }
this = scope:father
this = scope:mother
}
}
save_scope_as = second_adult
}
}
}
#Then a relative of the father
else_if = {
limit = {
scope:father = {
any_close_or_extended_family_member = {
is_in_the_same_court_as = root
is_adult = yes
is_female = yes
NOR = {
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:father }
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:mother }
this = scope:father
this = scope:mother
}
}
}
}
scope:father = {
random_close_or_extended_family_member = {
limit = {
is_in_the_same_court_as = root
is_adult = yes
is_female = yes
has_any_good_relationship_with_character_trigger = { CHARACTER = scope:mother }
NOR = {
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:father }
this = scope:father
this = scope:mother
}
}
alternative_limit = {
is_in_the_same_court_as = root
is_adult = yes
is_female = yes
opinion = {
target = scope:mother
value >= 10
}
NOR = {
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:father }
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:mother }
this = scope:father
this = scope:mother
}
}
save_scope_as = second_adult
}
}
}
#In lack of that look for a courtier with good relations
else_if = {
limit = {
any_courtier= {
is_adult = yes
is_female = yes
NOR = {
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:father }
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:mother }
this = scope:father
this = scope:mother
}
}
}
random_courtier = {
limit = {
is_adult = yes
is_female = yes
has_any_good_relationship_with_character_trigger = { CHARACTER = scope:mother }
NOR = {
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:father }
this = scope:father
this = scope:mother
}
}
alternative_limit = {
is_adult = yes
is_female = yes
opinion = {
target = scope:mother
value >= 10
}
NOR = {
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:father }
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:mother }
this = scope:father
this = scope:mother
}
}
save_scope_as = second_adult
}
}
}
# Special effects for Taltos
scope:child = {
if = {
limit = {
faith = {
has_doctrine_parameter = mystic_birthright_active
NOT = { has_variable = recent_taltos_born }
}
}
random_list = {
# 1% chance of super rare Taltos birth for AI characters
1 = {
modifier = { # 5% chance for players
add = 4
OR = {
scope:mother = {
is_ai = no
}
scope:father = {
is_ai = no
}
}
}
add_character_flag = born_as_taltos
add_trait = lifestyle_mystic
hidden_effect = {
add_trait_xp = {
trait = lifestyle_mystic
value = 100
}
}
faith = {
set_variable = {
name = recent_taltos_born
value = yes
years = 30
}
}
# Notify other players about the birth of a Taltos.
every_player = {
limit = {
faith = scope:child.faith
NOR = {
this = scope:father
this = scope:mother
}
}
trigger_event = birth.1100
}
}
99 = {
modifier = { # 5% chance for players
add = -4
OR = {
scope:mother = {
is_ai = no
}
scope:father = {
is_ai = no
}
}
}
# 99% chance of normal uninteresting birth
}
}
}
}
}
#NAMING WIDGET
widgets = {
widget = {
is_shown = {
allow_naming_on_birth_of_child_trigger = { CHILD = scope:child }
}
gui = "event_window_widget_name_child"
container = "dynamic_birth_name"
controller = name_character
setup_scope = { scope:child = { save_scope_as = name_character_target } }
}
widget = {
is_shown = {
allow_naming_on_birth_of_child_trigger = { CHILD = scope:child_2 }
}
gui = "event_window_widget_name_child"
container = "dynamic_birth_name"
controller = name_character
setup_scope = { scope:child_2 = { save_scope_as = name_character_target } }
}
}
option = {
name = birth.1001.a
trigger = { scope:child = { NOT = { has_trait = twin } } }
add_prestige = minor_prestige_gain
}
option = {
name = birth.1001.b
trigger = { scope:child = { has_trait = twin } }
add_prestige = minor_prestige_gain
}
}
#BIRTH: Mother: child secretly a bastard
birth.1002 = {
type = character_event
title = {
first_valid = {
triggered_desc = {
trigger = {
scope:child = {
NOT = { has_trait = twin }
NOT = { is_player_heir_of = root }
}
}
desc = birth.1001.t
}
triggered_desc = {
trigger = {
scope:child = {
NOT = { has_trait = twin }
is_player_heir_of = root
}
}
desc = birth.1001.heir.t
}
triggered_desc = {
trigger = {
scope:child = {
has_trait = twin
is_female = yes
}
scope:child_2 = { is_female = yes }
}
desc = birth.1001.daughters.t
}
triggered_desc = {
trigger = {
scope:child = {
has_trait = twin
is_male = yes
}
scope:child_2 = { is_male = yes }
}
desc = birth.1001.sons.t
}
desc = birth.1001.children.t
}
}
desc = {
first_valid = {
triggered_desc = {
trigger = { scope:child = { has_trait = twin } }
desc = birth.1002.opening.twin
}
desc = birth.1002.opening
}
desc = birth.1002.true_father
first_valid = {
triggered_desc = {
trigger = { scope:child = { has_trait = twin } }
desc = birth.1002.twin_name.desc
}
triggered_desc = {
trigger = { scope:child = { is_male = yes } }
desc = birth.1002.boy_name.desc
}
desc = birth.1002.girl_name.desc
}
}
theme = pregnancy
override_background = {
trigger = { scope:mother = { is_travelling = yes } }
reference = terrain_travel
}
override_background = { reference = bedchamber }
left_portrait = {
character = root
animation = newborn
outfit_tags = { nightgown }
}
right_portrait = {
character = scope:real_father
animation = flirtation
}
lower_right_portrait = scope:father
lower_left_portrait = scope:child
lower_center_portrait = {
trigger = { exists = scope:child_2 }
character = scope:child_2
}
immediate = {
play_music_cue = mx_cue_seduction
scope:child = {
if = {
limit = { has_trait = twin }
random_sibling = {
limit = {
is_twin_of = scope:child
}
save_scope_as = child_2
}
if = {
limit = {
any_sibling = {
is_twin_of = scope:child
this != scope:child_2
}
}
random_sibling = {
limit = {
is_twin_of = scope:child
this != scope:child_2
}
save_scope_as = child_3
}
}
}
}
}
#NAMING WIDGET
widgets = {
widget = {
is_shown = {
allow_naming_on_birth_of_child_trigger = { CHILD = scope:child }
}
gui = "event_window_widget_name_child"
container = "dynamic_birth_name"
controller = name_character
setup_scope = { scope:child = { save_scope_as = name_character_target } }
}
widget = {
is_shown = {
allow_naming_on_birth_of_child_trigger = { CHILD = scope:child_2 }
}
gui = "event_window_widget_name_child"
container = "dynamic_birth_name"
controller = name_character
setup_scope = { scope:child_2 = { save_scope_as = name_character_target } }
}
}
option = {
name = birth.1002.a
trigger = { scope:child = { NOT = { has_trait = twin } } }
custom_tooltip = birth.1002.a.tt
}
option = {
name = birth.1002.b
trigger = { scope:child = { has_trait = twin } }
custom_tooltip = birth.1002.b.tt
}
option = {
name = birth.1002.c
trigger = {
any_owned_story = {
type = story_peasant_affair
var:peasant_character = {
this = scope:real_father
}
}
}
add_character_flag = is_looking_for_peasant #To take the story_peasant_affair to the next step
add_character_flag = peasant_affair_already_looking
custom_tooltip = search_for_real_father_tt
}
after = {
bastard_real_father_discovery_on_birth_effect = yes
}
}
#BIRTH: Father: Regular birth or unaware of unknown bastard birth
birth.1003 = {
type = character_event
title = {
first_valid = {
triggered_desc = {
trigger = {
scope:child = {
NOT = { has_trait = twin }
}
player_heir ?= scope:child
}
desc = birth.1001.heir.t
}
triggered_desc = {
trigger = {
scope:child = {
NOT = { has_trait = twin }
}
}
desc = birth.1001.t
}
triggered_desc = {
trigger = {
scope:child = {
has_trait = twin
is_female = yes
}
scope:child_2 = { is_female = yes }
}
desc = birth.1001.daughters.t
}
triggered_desc = {
trigger = {
scope:child = {
has_trait = twin
is_male = yes
}
scope:child_2 = { is_male = yes }
}
desc = birth.1001.sons.t
}
desc = birth.1001.children.t
}
}
desc = {
#Do I care about the mother?
first_valid = {
# Borte's first child
triggered_desc = {
trigger = {
this = character:125501
scope:mother = { has_variable = borte_first_child_var }
}
desc = secret_bastard.0001.assumed_father
}
triggered_desc = {
trigger = {
OR = {
has_relation_lover = scope:child.mother
AND = {
opinion = {
target = scope:child.mother
value >= high_positive_opinion
}
NOR = {
has_trait = sadistic
has_trait = callous
}
}
}
}
desc = birth.1003.loves_mother.desc
}
triggered_desc = {
trigger = {
opinion = {
target = scope:child.mother
value >= low_positive_opinion
}
}
desc = birth.1003.likes_mother.desc
}
desc = birth.1003.dislikes_mother.desc
}
#What did I get?
first_valid = {
# Borte's first child
triggered_desc = {
trigger = {
this = character:125501
scope:mother = { has_variable = borte_first_child_var }
}
desc = birth.1003.desc.empty
}
triggered_desc = {
trigger = {
scope:child = {
NOT = { has_trait = twin }
}
}
desc = birth.1001.sondaughter.desc
}
triggered_desc = {
trigger = {
scope:child = {
has_trait = twin
is_female = yes
}
scope:child_2 = { is_female = yes }
}
desc = birth.1001.daughters.desc
}
triggered_desc = {
trigger = {
scope:child = {
has_trait = twin
is_male = yes
}
scope:child_2 = { is_male = yes }
}
desc = birth.1001.sons.desc
}
desc = birth.1001.children.desc
}
#Conclusion
first_valid = {
# Borte's first child
triggered_desc = {
trigger = {
this = character:125501
scope:mother = { has_variable = borte_first_child_var }
}
desc = birth.1003.desc.borte
}
# Mystical Birthright
triggered_desc = {
trigger = {
scope:child = { has_character_flag = born_as_taltos }
faith = scope:child.faith
}
desc = birth.1001.taltos.desc
}
triggered_desc = {
trigger = {
scope:child = { has_character_flag = born_as_taltos }
faith != scope:child.faith
}
desc = birth.1001.taltos_unfaithful.desc
}
# Twins
triggered_desc = {
trigger = {
scope:child = { has_trait = twin }
exists = player_heir
OR = {
player_heir = scope:child
player_heir = scope:child_2
}
}
desc = birth.1001.twins_heir.desc
}
triggered_desc = {
trigger = {
scope:child = { has_trait = twin }
}
desc = birth.1001.twins.desc
}
# Heir
triggered_desc = {
trigger = {
player_heir ?= scope:child
NOT = { sex_opposite_of = scope:child }
}
desc = birth.1001.same_gender_heir.desc
}
triggered_desc = {
trigger = {
player_heir ?= scope:child
}
desc = birth.1001.other_gender_heir.desc
}
# Nothing Special
triggered_desc = {
desc = birth.1001.end_fallback.desc
}
}
}
theme = pregnancy
override_background = {
trigger = { scope:mother = { is_travelling = yes } }
reference = terrain_travel
}
override_background = { reference = bedchamber }
left_portrait = {
character = scope:mother
outfit_tags = { nightgown }
animation = newborn
}
right_portrait = {
trigger = { exists = scope:second_adult }
character = scope:second_adult
animation = newborn
}
lower_left_portrait = scope:child
lower_center_portrait = scope:child_2
trigger = {
OR = {
scope:father = scope:real_father
AND = {
scope:father != scope:real_father
scope:father = {
NOT = {
any_known_secret = {
secret_owner = scope:mother
AND = {
secret_type = secret_disputed_heritage
secret_target = scope:child
}
}
}
}
}
}
}
immediate = {
play_music_cue_once = { TRACK = mx_cue_birth }
scope:child = {
if = {
limit = { has_trait = twin }
random_sibling = {
limit = {
is_twin_of = scope:child
}
save_scope_as = child_2
}
if = {
limit = {
any_sibling = {
is_twin_of = scope:child
this != scope:child_2
}
}
random_sibling = {
limit = {
is_twin_of = scope:child
this != scope:child_2
}
save_scope_as = child_3
}
}
}
}
#Look for another adult to hold the twin
if = {
limit = { exists = scope:child_2 }
#Let's save the court physician if you have one
if = {
limit = {
court_physician_available_trigger = yes
any_court_position_holder = {
type = court_physician_court_position
has_court_event_flag = no
is_ai = yes
this != scope:mother
}
}
save_court_physician_as_effect = { SCOPE_NAME = second_adult }
}
#Otherwise look for a relative of the mother
else_if = {
limit = {
scope:mother = {
any_close_or_extended_family_member = {
is_in_the_same_court_as = root
is_adult = yes
NOR = {
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:father }
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:mother }
this = scope:father
this = scope:mother
}
}
}
}
scope:mother = {
random_close_or_extended_family_member = {
limit = {
is_in_the_same_court_as = root
is_adult = yes
has_any_good_relationship_with_character_trigger = { CHARACTER = scope:mother }
NOR = {
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:father }
this = scope:father
this = scope:mother
}
}
alternative_limit = {
is_in_the_same_court_as = root
is_adult = yes
NOR = {
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:father }
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:mother }
this = scope:father
this = scope:mother
}
}
save_scope_as = second_adult
}
}
}
#Then a relative of the father
else_if = {
limit = {
scope:father = {
any_close_or_extended_family_member = {
is_in_the_same_court_as = root
is_adult = yes
is_female = yes
NOR = {
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:father }
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:mother }
this = scope:father
this = scope:mother
}
}
}
}
scope:father = {
random_close_or_extended_family_member = {
limit = {
is_in_the_same_court_as = root
is_adult = yes
is_female = yes
has_any_good_relationship_with_character_trigger = { CHARACTER = scope:mother }
NOR = {
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:father }
this = scope:father
this = scope:mother
}
}
alternative_limit = {
is_in_the_same_court_as = root
is_adult = yes
is_female = yes
opinion = {
target = scope:mother
value >= 10
}
NOR = {
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:father }
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:mother }
this = scope:father
this = scope:mother
}
}
save_scope_as = second_adult
}
}
}
#In lack of that look for a courtier with good relations
else_if = {
limit = {
any_courtier= {
is_adult = yes
is_female = yes
NOR = {
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:father }
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:mother }
this = scope:father
this = scope:mother
}
}
}
random_courtier = {
limit = {
is_adult = yes
is_female = yes
has_any_good_relationship_with_character_trigger = { CHARACTER = scope:mother }
NOR = {
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:father }
this = scope:father
this = scope:mother
}
}
alternative_limit = {
is_adult = yes
is_female = yes
opinion = {
target = scope:mother
value >= 10
}
NOR = {
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:father }
has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:mother }
this = scope:father
this = scope:mother
}
}
save_scope_as = second_adult
}
}
}
}
#NAMING WIDGET
widgets = {
widget = {
is_shown = {
allow_naming_on_birth_of_child_trigger = { CHILD = scope:child }
}
gui = "event_window_widget_name_child"
container = "dynamic_birth_name"
controller = name_character
setup_scope = { scope:child = { save_scope_as = name_character_target } }
}
widget = {
is_shown = {
allow_naming_on_birth_of_child_trigger = { CHILD = scope:child_2 }
}
gui = "event_window_widget_name_child"
container = "dynamic_birth_name"
controller = name_character
setup_scope = { scope:child_2 = { save_scope_as = name_character_target } }
}
}
option = {
name = birth.1003.a
trigger = { scope:child = { NOT = { has_trait = twin } } }
if = {
limit = {
scope:mother = {
this = character:172004
has_variable = borte_first_child_var
}
}
scope:child = { add_trait = wild_oat }
scope:child = {
add_secret = {
type = secret_disputed_heritage
target = scope:child
}
}
scope:new_secret = { reveal_to = root }
scope:mother = { remove_variable = borte_first_child_var }
}
}
option = {
name = birth.1003.b
trigger = { scope:child = { has_trait = twin } }
}
}
#BIRTH: Mother: Unmarried and father is unknown
birth.1005 = {
type = character_event
title = birth.1005.t
desc = {
first_valid = {
triggered_desc = {
trigger = { exists = scope:child_2 }
desc = birth.1005.desc.twin
}
desc = birth.1005.desc
}
}
theme = pregnancy
override_background = {
trigger = { scope:mother = { is_travelling = yes } }
reference = terrain_travel
}
override_background = { reference = bedchamber }
left_portrait = {
character = root
animation = newborn
outfit_tags = { nightgown }
}
right_portrait = {
character = scope:child.real_father
animation = flirtation
}
lower_left_portrait = scope:child
lower_center_portrait = scope:child_2
lower_right_portrait = scope:spouse_of_mother
immediate = {
play_music_cue = mx_cue_seduction
if = {
limit = {
exists = scope:mother.primary_spouse
}
scope:mother.primary_spouse = {
save_scope_as = spouse_of_mother
}
}
show_as_tooltip = {
if = {
limit = {
exists = scope:child_2
}
add_secret = {
type = secret_unmarried_illegitimate_child
target = scope:child_2
}
}
add_secret = {
type = secret_unmarried_illegitimate_child
target = scope:child
}
}
}
#NAMING WIDGET
widgets = {
widget = {
is_shown = {
allow_naming_on_birth_of_child_trigger = { CHILD = scope:child }
}
gui = "event_window_widget_name_child"
container = "dynamic_birth_name"
controller = name_character
setup_scope = { scope:child = { save_scope_as = name_character_target } }
}
widget = {
is_shown = {
allow_naming_on_birth_of_child_trigger = { CHILD = scope:child_2 }
}
gui = "event_window_widget_name_child"
container = "dynamic_birth_name"
controller = name_character
setup_scope = { scope:child_2 = { save_scope_as = name_character_target } }
}
}
option = {
name = birth.1005.a
bastard_real_father_discovery_on_birth_effect = yes
}
}
#BIRTH: Real father: Realizes he is father of newborn (currently only triggered in 1005)
birth.1006 = {
type = character_event
title = birth.1006.t
desc = {
desc = birth.1006.opening
first_valid = {
triggered_desc = {
trigger = { exists = scope:child_2 }
desc = birth.1006.desc.twin
}
desc = birth.1006.desc
}
first_valid = {
triggered_desc = {
trigger = {
exists = scope:spouse_of_mother
}
desc = birth.1006.not_known
}
desc = birth.1006.unmarried
}
}
theme = pregnancy
override_background = { reference = bedchamber }
left_portrait = {
character = root
animation = flirtation
}
right_portrait = {
character = scope:mother
animation = newborn
outfit_tags = { nightgown }
}
lower_left_portrait = scope:child
lower_center_portrait = scope:child_2
lower_right_portrait = scope:spouse_of_mother
trigger = {
exists = scope:secret # Chance of Secret invalidating
scope:secret = {
NOT = {
is_known_by = root
}
secret_target.real_father = root
}
}
immediate = {
play_music_cue = mx_cue_seduction
custom_tooltip = birth.1006.bastard_explanation
hidden_effect = {
scope:secret = {
reveal_to_without_events_effect = {
CHARACTER = root
}
}
}
}
option = { #Keep the secret
name = birth.1006.a
custom_tooltip = birth.1006.a.tt
hidden_effect = {
scope:mother = {
send_interface_message = {
type = event_childhood_neutral_text
title = birth.1006.a.message_desc
desc = birth.1006.a.mother_message
left_icon = scope:child.real_father
right_icon = scope:child
}
}
}
ai_chance = {
base = 100
}
}
option = { #Reveal the secret
name = birth.1006.b
scope:secret = {
expose_secret = root
}
scope:child = { remove_inherited_descendent_traits_effect = yes }
if = {
limit = { exists = scope:child_2 }
scope:child_2 = { remove_inherited_descendent_traits_effect = yes }
}
ai_chance = {
base = 10
modifier = { #More likely if the character does not have a player_heir
add = 50
NOT = { exists = player_heir }
age > 25 #Young characters don't care as much
character_gender_can_rule_title_trigger = {
GENDER = scope:child
TITLE = primary_title
}
}
modifier = { #More likely if the character is unlikely to produce any other potential heirs...
add = 50
NOT = { exists = player_heir }
age > 30
fertility <= low_fertility
character_gender_can_rule_title_trigger = {
GENDER = scope:child
TITLE = primary_title
}
}
ai_value_modifier = {
ai_honor = 0.5
}
}
}
}
#Host of the same dynasty (not ai) get to name the child
birth.1010 = {
type = character_event
title = {
first_valid = {
triggered_desc = {
trigger = {
exists = scope:child_2
}
desc = birth.1010.t_twins
}
desc = birth.1010.t
}
}
desc = {
first_valid = {
triggered_desc = {
trigger = { exists = scope:child_2 }
desc = birth.1010.desc.twin
}
desc = birth.1010.desc
}
}
theme = pregnancy
override_background = { reference = bedchamber }
left_portrait = {
character = root
animation = thinking
}
right_portrait = {
character = scope:mother
animation = newborn
outfit_tags = { nightgown }
}
lower_left_portrait = scope:child
lower_center_portrait = scope:child_2
lower_right_portrait = scope:spouse_of_mother
immediate = {
play_music_cue_once = { TRACK = mx_cue_birth }
if = {
limit = {
exists = scope:mother.primary_spouse
}
scope:mother.primary_spouse = {
save_scope_as = spouse_of_mother
}
}
else_if = {
limit = { exists = scope:child.father }
scope:child.father = { save_scope_as = spouse_of_mother }
}
}
#NAMING WIDGET
widgets = {
widget = {
is_shown = {
allow_naming_on_birth_of_dynasty_child_trigger = { CHILD = scope:child }
}
gui = "event_window_widget_name_child"
container = "dynamic_birth_name"
controller = name_character
setup_scope = { scope:child = { save_scope_as = name_character_target } }
}
widget = {
is_shown = {
allow_naming_on_birth_of_dynasty_child_trigger = { CHILD = scope:child_2 }
}
gui = "event_window_widget_name_child"
container = "dynamic_birth_name"
controller = name_character
setup_scope = { scope:child_2 = { save_scope_as = name_character_target } }
}
}
option = {
name = birth.1003.b
}
}
# Sends good omen notification
birth.1100 = {
hidden = yes
immediate = {
play_music_cue_once = { TRACK = mx_cue_birth }
send_interface_message = {
type = event_religious_good_with_text
title = birth.1100.title
desc = birth.1100.message
left_icon = scope:mother
right_icon = scope:child
}
}
}
#KNOWN BASTARD BIRTH
#Event for Potential Legitimizer
birth.2001 = {
type = character_event
title = birth.2001.t
desc = {
triggered_desc = {
trigger = {
is_female = yes
scope:child = { NOT = { has_trait = twin } }
}
desc = birth.2001.desc.mother.standard
}
triggered_desc = {
trigger = {
is_female = yes
scope:child = { has_trait = twin }
}
desc = birth.2001.desc.mother.twins
}
triggered_desc = {
trigger = {
is_male = yes
scope:child = { NOT = { has_trait = twin } }
}
desc = birth.2001.desc.father.standard
}
triggered_desc = {
trigger = {
is_male = yes
scope:child = { has_trait = twin }
}
desc = birth.2001.desc.father.twins
}
}
theme = pregnancy
override_background = { reference = relaxing_room }
lower_left_portrait = scope:child
lower_center_portrait = {
trigger = { exists = scope:child_2 }
character = scope:child_2
}
left_portrait = {
character = scope:other_parent
triggered_animation = {
trigger = {
this = scope:child.mother
}
animation = newborn
}
triggered_animation = {
trigger = { always = yes }
animation = worry
}
}
immediate = {
play_music_cue = mx_cue_seduction
hidden_effect = {
scope:child = { remove_inherited_descendent_traits_effect = yes }
if = {
limit = { exists = scope:child_2 }
scope:child_2 = { remove_inherited_descendent_traits_effect = yes }
}
}
#To get the picture of the other parent, and send correct follow-up events
if = {
limit = {
scope:mother = root
}
scope:real_father = {
save_scope_as = other_parent
}
}
else = {
scope:mother = {
save_scope_as = other_parent
}
}
save_scope_as = legitimizer
if = {
limit = {
exists = house.house_head
}
house.house_head = {
save_scope_as = house_head
}
}
scope:child = {
save_scope_as = bastard #Necessary for the House Head approval calculation
}
}
#NAMING WIDGET
widgets = {
widget = {
is_shown = {
allow_naming_on_birth_of_child_trigger = { CHILD = scope:child }
}
gui = "event_window_widget_name_child"
container = "dynamic_birth_name"
controller = name_character
setup_scope = { scope:child = { save_scope_as = name_character_target } }
}
}
#Legitimize
option = {
name = {
trigger = { scope:child = { NOT = { has_trait = twin } } }
text = birth.2001.a.standard
}
name = {
trigger = { scope:child = { has_trait = twin } }
text = birth.2001.a.twins
}
trigger = {
custom_description = {
text = bastard_not_of_my_house_trigger
object = scope:child
exists = scope:child.house
}
custom_description = {
text = bastard_not_of_my_house_trigger
object = scope:child
house = scope:child.house
}
trigger_if = { # Does the House Head approve?
limit = {
house.house_head != root
}
custom_description = {
text = house_head_would_not_approve_trigger
subject = house.house_head
object = scope:child
house_head_would_approve_legitimization_trigger = {
LEGITIMIZER = root
BASTARD = scope:child
}
}
}
is_allowed_to_legitimize_children_trigger = yes
}
show_as_unavailable = {
always = yes
}
add_prestige = {
value = bastard_legitimization_prestige_cost
multiply = -1
}
#To block multiple notifications
save_scope_value_as = {
name = newborn_legitimization
value = yes
}
legitimize_bastard_interaction_opinions_effect = {
BASTARD = scope:child
HOUSE_HEAD = root.house.house_head
LEGITIMIZER = root
}
if = { # Move the child to the legitimizer's court if relevant
limit = {
scope:child = {
NOT = { is_in_the_same_court_as_or_guest = root }
}
exists = court_owner
}
if = {
limit = {
scope:child = {
NOT = { is_courtier_of = ROOT } # Check that char is not already at your court (theoretical fix)
}
OR = {
this = court_owner
is_courtier_of = court_owner
}
}
add_courtier = scope:child
}
else = {
scope:child = { visit_court_of = root.court_owner }
}
}
hidden_effect = {
scope:mother = {
every_child = {
limit = {
OR = {
this = scope:child
is_twin_of = scope:child
}
}
legitimize_bastard_interaction_opinions_effect = {
BASTARD = this
HOUSE_HEAD = root.house.house_head
LEGITIMIZER = root
}
}
}
scope:other_parent = {
trigger_event = birth.2002
}
}
ai_chance = {
base = 10
modifier = {
is_playable_character = yes
NOT = { exists = player_heir }
NOR = {
AND = {
primary_title ?= { has_title_law = male_only_law }
scope:child = { is_female = yes }
}
AND = {
primary_title ?= { has_title_law = female_only_law }
scope:child = { is_male = yes }
}
}
age > 45
factor = 50
}
modifier = {
is_married = no
factor = 1.5
}
modifier = {
ai_compassion >= high_positive_compassion
factor = 2
}
}
}
#Child remains a normal bastard
option = {
name = {
text = birth.2001.b.standard
}
name = {
text = birth.2001.b.no_legitimization_in_faith
trigger = {
faith = {
has_doctrine_parameter = bastards_always
}
}
}
custom_tooltip = bastard_remains_bastard_tt
#other_parent gets the correct birth event
scope:other_parent = {
trigger_event = birth.2003 #The legitimizer did not legitimize
}
#Spouse of mother must know about baby
if = {
limit = {
scope:mother = {
is_married = yes
primary_spouse != scope:real_father
}
}
scope:mother.primary_spouse = {
trigger_event = birth.2102
}
}
ai_chance = {
base = 100
}
}
}
#Other parent is told that child was legitimized
birth.2002 = {
type = character_event
title = birth.2002.t
desc = {
desc = birth.2002.start
first_valid = {
triggered_desc = {
trigger = { NOT = { scope:child = { has_trait = twin } } }
desc = birth.2002.desc.standard
}
triggered_desc = {
trigger = { scope:child = { has_trait = twin } }
desc = birth.2002.desc.twins
}
}
desc = birth.2002.end
}
theme = pregnancy
override_background = { reference = relaxing_room }
left_portrait = {
character = scope:legitimizer
animation = newborn
}
lower_left_portrait = scope:child
immediate = {
play_music_cue_once = { TRACK = mx_cue_birth }
show_as_tooltip = {
scope:child = {
add_trait_force_tooltip = legitimized_bastard
}
}
}
#Child was legitimized
option = {
name = birth.2002.a
custom_tooltip = legitimized_known_bastard_birth_event_tooltip
}
}
#The legitimizer did not legitimize
birth.2003 = {
type = character_event
title = birth.2003.t
desc = {
first_valid = {
triggered_desc = {
trigger = { scope:child = { has_trait = twin } }
desc = birth.2003.desc.twin_start
}
desc = birth.2003.desc.standard_start
}
first_valid = {
triggered_desc = {
trigger = { scope:legitimizer = { is_playable_character = yes } }
desc = birth.2003.desc.landed_end
}
desc = birth.2003.desc.unlanded_end
}
}
theme = pregnancy
override_background = { reference = relaxing_room }
left_portrait = {
character = scope:legitimizer
animation = dismissal
}
lower_left_portrait = scope:child
immediate = {
play_music_cue = mx_cue_seduction
}
#Child was not legitimized
option = {
name = birth.2003.a
custom_tooltip = known_bastard_birth_event_tooltip
}
}
### Legitimizer's Faith does not have bastardy
birth.2011 = {
type = character_event
title = birth.2011.t
desc = birth.2011.desc
theme = pregnancy
override_background = { reference = relaxing_room }
left_portrait = {
character = scope:other_parent
animation = happiness
}
right_portrait = {
character = scope:mother.primary_partner
animation = disapproval
trigger = {
exists = scope:mother.primary_partner
root != scope:mother.primary_partner
}
}
lower_left_portrait = scope:child
immediate = {
play_music_cue = mx_cue_seduction
#To get the picture of the other parent, and send correct follow-up events
if = {
limit = {
scope:mother = root
}
scope:real_father = {
save_scope_as = other_parent
}
}
else = {
scope:mother = {
save_scope_as = other_parent
}
}
save_scope_as = legitimizer
# It's already added elsewhere, but we want this here for tooltip reasons.
scope:child = {
show_as_tooltip = {
add_bastard_trait_based_on_faith_effect = yes
}
}
}
#NAMING WIDGET
widgets = {
widget = {
is_shown = {
allow_naming_on_birth_of_child_trigger = { CHILD = scope:child }
}
gui = "event_window_widget_name_child"
container = "dynamic_birth_name"
controller = name_character
setup_scope = { scope:child = { save_scope_as = name_character_target } }
}
}
option = {
name = birth.1001.a
scope:other_parent = {
trigger_event = birth.2012
}
#Spouse of mother must know about baby
if = {
limit = {
exists = scope:mother.primary_spouse
scope:mother.primary_spouse = {
NOR = {
this = scope:legitimizer
this = scope:other_parent
this = scope:real_father
}
}
}
scope:mother.primary_spouse = {
trigger_event = birth.2102
}
}
}
}
# Event for "non-legitimizer"
birth.2012 = {
type = character_event
title = birth.2011.t
desc = birth.2011.desc
theme = pregnancy
override_background = { reference = relaxing_room }
left_portrait = {
character = scope:legitimizer
animation = love
}
lower_left_portrait = scope:child
right_portrait = {
trigger = {
exists = primary_partner
}
character = primary_partner
}
immediate = {
scope:child = {
# It's already added elsewhere, but we want this here for tooltip reasons.
show_as_tooltip = {
add_bastard_trait_based_on_faith_effect = yes
}
}
}
option = {
name = birth.1001.a
}
}
###################
# Notifications for the birth of an unlegitimizable bastard
# 2100-2199
##################
#Event for the Mother's Spouse/Concubinist, unlegitimizable bastard
birth.2102 = {
type = character_event
title = birth.2102.t
desc = birth.2102.desc
theme = pregnancy
override_background = { reference = relaxing_room }
left_portrait = {
character = scope:mother
animation = newborn
}
lower_left_portrait = scope:child
right_portrait = {
character = scope:real_father
animation = worry
}
immediate = {
play_music_cue = mx_cue_seduction
}
option = {
name = birth.2102.a
}
}
#Event for the Father's Spouse/Concubinist, unlegitimizable bastard
birth.2104 = {
type = character_event
title = birth.2104.t
orphan = yes
desc = {
first_valid = {
triggered_desc = {
trigger = {
scope:child = { has_trait = twin }
}
desc = birth.2104.desc.twin
}
desc = birth.2104.desc
}
}
theme = pregnancy
override_background = { reference = relaxing_room }
left_portrait = {
character = scope:real_father
animation = flirtation
}
lower_left_portrait = scope:child
right_portrait = {
character = scope:mother
animation = newborn
}
immediate = {
play_music_cue = mx_cue_seduction
}
option = {
name = birth.2104.a
}
}
######################
# Problematic births
# by Linnéa Thimrén
######################
#BIRTH: Mother: Child dies (no child created)
birth.3001 = {
type = character_event
title = birth.3001.t
desc = birth.3001.desc_other_child
theme = death
override_background = { reference = bedchamber}
left_portrait = {
character = root
animation = grief
outfit_tags = { nightgown }
}
right_portrait = {
character = scope:father
trigger = {
exists = scope:father
}
animation = disbelief
}
trigger = {
is_pregnant = yes
}
immediate = {
play_music_cue = mx_cue_death
create_character_memory = {
type = child_stillborn
participants = {
mother = root
}
}
hidden_effect = {
random_dummy_gender_effect = yes
end_pregnancy = yes
}
if = {
limit = {
exists = scope:father
scope:father = {
is_alive = yes
}
}
scope:father = {
trigger_event = birth.3002
}
}
custom_tooltip = birth.3001.a.tt
pregnancy_cleanup_effect = yes
}
#NO NAMING WIDGET
option = {
name = birth.3001.a
}
}
#BIRTH: Father: Child dies (no child created)
birth.3002 = {
type = character_event
title = birth.3001.t
desc = birth.3002.desc
theme = death
override_background = { reference = bedchamber }
left_portrait = {
character = root
animation = stunned
}
right_portrait = {
character = scope:mother
animation = grief
outfit_tags = { nightgown }
}
#NO NAMING WIDGET
immediate = {
play_music_cue = mx_cue_death
create_character_memory = {
type = child_stillborn
participants = {
mother = scope:mother
}
}
custom_tooltip = birth.3001.a.tt
}
option = {
name = birth.3002.a
}
}
#BIRTH: Mother: Mother dies, child survives
birth.3011 = {
type = character_event
title = birth.3001.t
desc = {
first_valid = {
triggered_desc = {
trigger = {
exists = scope:child_2
}
desc = birth.3011.desc_twin
}
desc = birth.3011.desc
}
first_valid = {
triggered_desc = {
trigger = { has_government = landless_adventurer_government }
desc = birth.3011.adventurer
}
desc = birth.3011.landed
}
}
theme = death
override_background = { reference = bedchamber }
left_portrait = {
character = root
animation = newborn
outfit_tags = { nightgown }
}
lower_center_portrait = scope:child
lower_left_portrait = scope:child_2
trigger = {
has_character_flag = birth_mother_will_die
}
immediate = {
play_music_cue = mx_cue_death
pregnancy_maintainance_effect = yes
}
#NAMING WIDGET
widgets = {
widget = {
is_shown = {
allow_naming_on_birth_of_child_trigger = { CHILD = scope:child }
}
gui = "event_window_widget_name_child"
container = "dynamic_birth_name"
controller = name_character
setup_scope = { scope:child = { save_scope_as = name_character_target } }
}
widget = {
is_shown = {
allow_naming_on_birth_of_child_trigger = { CHILD = scope:child_2 }
}
gui = "event_window_widget_name_child"
container = "dynamic_birth_name"
controller = name_character
setup_scope = { scope:child_2 = { save_scope_as = name_character_target } }
}
}
option = {
name = {
trigger = { scope:child = { has_trait = twin } }
text = birth.3011.twin.a
}
name = {
trigger = { scope:child = { NOT = { has_trait = twin } } }
text = birth.3011.a
}
if = {
limit = {
exists = scope:father
scope:father = {
is_alive = yes
}
}
scope:father = {
add_character_flag = {
flag = sent_relevant_death_event
days = 5
}
trigger_event = birth.3012
}
}
hidden_effect = {
remove_trait = pregnant
}
death = {
death_reason = death_childbirth
}
}
}
#BIRTH: Father: Mother dies, child survives
birth.3012 = {
type = character_event
title = birth.3001.t
desc = {
desc = birth.3012.start.desc
first_valid = {
triggered_desc = {
trigger = {
exists = scope:child_2
}
desc = birth.3012.desc_twin
}
desc = birth.3012.desc
}
}
theme = death
override_background = { reference = bedchamber }
left_portrait = {
character = root
animation = newborn
}
right_portrait = {
character = scope:mother
animation = sick
outfit_tags = { nightgown }
}
lower_right_portrait = scope:child
lower_center_portrait = scope:child_2
#NAMING WIDGET
widgets = {
widget = {
is_shown = {
allow_naming_on_birth_of_child_trigger = { CHILD = scope:child }
}
gui = "event_window_widget_name_child"
container = "dynamic_birth_name"
controller = name_character
setup_scope = { scope:child = { save_scope_as = name_character_target } }
}
widget = {
is_shown = {
allow_naming_on_birth_of_child_trigger = { CHILD = scope:child_2 }
}
gui = "event_window_widget_name_child"
container = "dynamic_birth_name"
controller = name_character
setup_scope = { scope:child_2 = { save_scope_as = name_character_target } }
}
}
immediate = {
play_music_cue = mx_cue_death
show_as_tooltip = {
scope:mother = {
death = {
death_reason = death_childbirth
}
}
}
}
option = {
name = birth.3012.a
add_stress = minor_stress_gain
}
}
#BIRTH: Mother: Mother and child dies
birth.3021 = {
type = character_event
title = birth.3001.t
desc = birth.3021.desc
theme = death
override_background = { reference = bedchamber }
left_portrait = {
character = root
animation = pain
outfit_tags = { nightgown }
}
trigger = {
is_pregnant = yes
}
immediate = {
play_music_cue = mx_cue_death
create_character_memory = {
type = child_stillborn
participants = {
mother = root
}
}
hidden_effect = {
random_dummy_gender_effect = yes
end_pregnancy = yes
}
custom_tooltip = birth.3001.a.tt
}
#NO NAMING WIDGET
option = {
name = birth.3021.a
if = {
limit = {
exists = scope:father
scope:father = {
is_alive = yes
}
}
scope:father = {
add_character_flag = {
flag = sent_relevant_death_event
days = 5
}
trigger_event = birth.3022
}
}
hidden_effect = {
remove_trait = pregnant
}
death = {
death_reason = death_childbirth
}
}
}
#BIRTH: Father: Mother and child dies
birth.3022 = {
type = character_event
title = birth.3001.t
desc = birth.3022.desc
theme = death
override_background = { reference = bedchamber}
left_portrait = {
character = root
animation = grief
}
right_portrait = {
character = scope:mother
animation = pain
outfit_tags = { nightgown }
}
immediate = {
play_music_cue = mx_cue_death
create_character_memory = {
type = child_stillborn
participants = {
mother = scope:mother
}
}
show_as_tooltip = {
scope:mother = {
death = {
death_reason = death_childbirth
}
}
}
custom_tooltip = birth.3001.a.tt
}
#NO NAMING WIDGET
option = {
name = {
trigger = { NOT = { faith = { religion_tag = buddhism_religion } } }
text = birth.3022.a
}
name = {
trigger = { faith = { religion_tag = buddhism_religion } }
text = birth.3022.a.buddhism
}
add_stress = medium_stress_gain
}
}
#Sickly child - for mother
birth.3031 = {
type = character_event
title = birth.3031.t
desc = {
desc = birth.3031.start.desc
first_valid = {
triggered_desc = {
trigger = {
scope:child = { any_parent = { highest_held_title_tier >= tier_kingdom } }
}
desc = birth.3031.princessprince.desc
}
desc = birth.3031.daughterson.desc
}
desc = birth.3031.end.desc
}
theme = physical_health
left_portrait = {
character = scope:child
animation = sick
camera = camera_event_table_right_far_2
}
right_portrait = {
character = scope:father
trigger = {
exists = scope:father
}
animation = worry
camera = camera_body
}
immediate = {
play_music_cue = mx_cue_illness
scope:child = {
add_trait = sickly
}
}
option = {
name = birth.3031.a
if = {
limit = {
exists = scope:father
}
scope:father = {
trigger_event = birth.3032
}
}
}
}
#Sickly child - for father
birth.3032 = {
type = character_event
title = birth.3031.t
desc = {
desc = birth.3031.start.desc
first_valid = {
triggered_desc = {
trigger = {
scope:child = { any_parent = { highest_held_title_tier >= tier_kingdom } }
}
desc = birth.3031.princessprince.desc
}
desc = birth.3031.daughterson.desc
}
desc = birth.3031.end.desc
}
theme = physical_health
left_portrait = {
character = scope:mother
animation = worry
camera = camera_body
}
right_portrait = {
character = scope:child
animation = sick
camera = camera_event_table_right_far_2
}
immediate = {
show_as_tooltip = {
scope:child = {
add_trait_force_tooltip = sickly
}
}
}
option = {
name = birth.3031.a
}
}
#Sickly child recovery management event
birth.3033 = {
hidden = yes
trigger = {
has_trait = sickly
}
immediate = {
trigger_event = {
id = birth.3034
days = { 0 180 }
}
}
}
#Sickly child recovery - for child
birth.3034 = {
type = character_event
title = birth.3034.t
desc = birth.3034.desc
theme = physical_health
left_portrait = {
character = root
animation = happiness
}
immediate = {
play_music_cue = mx_cue_positive_effect
save_scope_as = child
set_favorite_toy_effect = yes
if = {
limit = {
exists = mother
}
mother = {
trigger_event = birth.3035
}
}
if = {
limit = {
exists = father
}
father = {
trigger_event = birth.3035
}
}
}
option = {
name = birth.3034.a
remove_trait = sickly
}
}
#Sickly child recovery - for mother and father
birth.3035 = {
type = character_event
title = birth.3034.t
desc = birth.3035.desc
theme = physical_health
left_portrait = {
character = scope:child
animation = happiness
}
immediate = {
play_music_cue = mx_cue_positive_effect
scope:child = {
show_as_tooltip = {
remove_trait_force_tooltip = sickly
}
}
}
option = {
name = birth.3035.a
}
}
#Sickly mother - for mother
birth.3041 = {
type = character_event
title = birth.3041.t
desc = {
desc = birth.3041.start.desc
first_valid = {
triggered_desc = {
trigger = {
exists = scope:child_2
}
desc = birth.3041.desc_twins
}
desc = birth.3041.one_child.desc
}
desc = birth.3041.end
}
theme = healthcare
left_portrait = {
character = root
animation = sick
}
trigger = {
can_contract_disease_trigger = { DISEASE = ill }
}
immediate = {
contract_disease_effect = { DISEASE = ill TREATMENT_EVENT = yes }
}
option = {
name = birth.3041.a
}
}
#############################################
# 8001-8999: Misc birth management
#############################################
birth.8001 = { #by Mathilda Bjarnehed
type = character_event
hidden = yes
trigger = {
can_become_reincarnation_trigger = yes
any_close_or_extended_family_member = {
even_if_dead = yes
is_grandparent_of = root
}
}
weight_multiplier = {
base = 1
}
immediate = {
random = {
chance = reincarnation_chance
modifier = {
OR = {
AND = {
exists = scope:mother.player_heir
this = scope:mother.player_heir
}
AND = {
exists = scope:father.player_heir
this = scope:father.player_heir
}
}
factor = 2
}
###Decide who you're an reincarnation of!###
#Build list of grandparents...
every_close_or_extended_family_member = {
even_if_dead = yes
limit = {
is_grandparent_of = root
}
add_to_list = grandparents_and_great_grandparents
debug_log = "Adding grandparents"
}
#... and great grandparents
every_in_list = {
list = grandparents_and_great_grandparents
every_parent = {
even_if_dead = yes
add_to_list = grandparents_and_great_grandparents
}
debug_log = "Adding great grandparents"
}
#Pick a random appropriate one
random_in_list = {
list = grandparents_and_great_grandparents
limit = {
sex_same_as = root
can_reincarnate_trigger = yes
}
weight = {
base = 1
modifier = {
is_grandparent_of = root
add = 2
}
modifier = {
is_ruler = yes
add = 4
}
}
debug_log = "Finding ancestor"
save_temporary_scope_as = ancestor
}
if = {
limit = {
exists = scope:ancestor
}
set_variable = {
name = reincarnation_of
value = scope:ancestor
}
copy_inheritable_appearance_from = scope:ancestor
}
}
}
}
# Born in the Purple allocation
# by Ewan Cowhig Croft
birth.8011 = {
type = character_event
hidden = yes
trigger = {
any_parent = {
culture = {
has_cultural_parameter = children_can_be_born_in_the_purple
}
trigger_if = {
limit = {
has_ach_dlc_trigger = yes
NOT = { has_game_rule = coronation_laws_off }
}
NOT = { has_realm_law = uncrowned } # Must be coronated
}
trigger_if = {
limit = {
is_diarch = yes
}
liege_has_co_emperorship_trigger = yes
liege = {
is_roman_emperor_trigger = yes
capital_county = title:c_byzantion #Must rule from the Bucoleon Palace.
}
}
trigger_else = {
is_roman_emperor_trigger = yes
capital_county = title:c_byzantion #Must rule from the Bucoleon Palace.
}
}
mother = {
OR = {
AND = { #Landless mothers must be actually at court to use the chamber.
is_ruler = no
exists = location # Security check
OR = {
location = title:c_byzantion.title_province
# Be a bit more lenient with co-emperors.
AND = {
is_diarch = yes
liege_has_co_emperorship_trigger = yes
}
root.father ?= {
is_diarch = yes
liege_has_co_emperorship_trigger = yes
}
}
}
AND = { #Landed rulers can be assumed to make the journey, unless they have some extremely pressing reason not to.
is_ruler = yes
NOT = { is_at_war_with = root.father }
}
}
is_imprisoned = no #Cannot use the purple chamber from prison.
is_commanding_army = no #Cannot use the purple chamber whilst commanding an army.
}
}
immediate = { add_trait = born_in_the_purple }
}
#################
# NAMING EVENTS # by Mathilda Bjarnehed
#################
scripted_trigger birth_9003_same_gender_as_baby_trigger = {
OR = {
AND = {
is_female = yes
scope:child = { is_female = yes }
}
AND = {
is_male = yes
scope:child = { is_male = yes }
}
scope:suggester = { has_trait = lunatic }
}
}
scripted_trigger birth_9002_suggester_relative_trigger = {
OR = {
OR = {
age > scope:suggester.age
is_alive = no
}
any_sibling = { this = scope:suggester }
}
NOT = { is_child_of = scope:suggester }
birth_9003_same_gender_as_baby_trigger = yes
}
scripted_trigger birth_9002_namer_relative_trigger = {
OR = {
OR = {
age > scope:namer.age
is_alive = no
}
any_sibling = { this = scope:namer }
}
NOT = { is_child_of = scope:namer }
birth_9003_same_gender_as_baby_trigger = yes
}
scripted_effect birth_9002_name_setting_effect = {
if = {
limit = {
OR = {
scope:name_type = flag:suggester_relative
scope:name_type = flag:namer_relative
scope:name_type = flag:suggesters_name
scope:name_type = flag:namers_name
}
}
hidden_effect = { scope:child = { change_first_name = { template_character = scope:namesake } } }
custom_tooltip = birth.9002.a.tt.1
}
else_if = {
limit = {
exists = scope:name_suggestion
#Aaaall of this limit is error prevention
OR = {
scope:name_suggestion = flag:Thor
scope:name_suggestion = flag:Balder
scope:name_suggestion = flag:Odin
scope:name_suggestion = flag:Freja
scope:name_suggestion = flag:Idun
scope:name_suggestion = flag:Frigg
scope:name_suggestion = flag:Peter
scope:name_suggestion = flag:Paul
scope:name_suggestion = flag:John
scope:name_suggestion = flag:Maria
scope:name_suggestion = flag:Babby
scope:name_suggestion = flag:Oats
scope:name_suggestion = flag:Mittens
scope:name_suggestion = flag:Glitterhoof
scope:name_suggestion = flag:Lord
scope:name_suggestion = flag:Lady
scope:name_suggestion = flag:Snowflake
scope:name_suggestion = flag:Bambosh
scope:name_suggestion = flag:Fustian
scope:name_suggestion = flag:Nugament
scope:name_suggestion = flag:Pigwash
scope:name_suggestion = flag:Poppycock
scope:name_suggestion = flag:Tootle
scope:name_suggestion = flag:Scripty
scope:name_suggestion = flag:Gandolf
scope:name_suggestion = flag:Anna
scope:name_suggestion = flag:Linda
scope:name_suggestion = flag:Rikard
scope:name_suggestion = flag:Henrik
scope:name_suggestion = flag:Joakim
scope:name_suggestion = flag:Alex
scope:name_suggestion = flag:Petter
scope:name_suggestion = flag:Linnéa
scope:name_suggestion = flag:Mathilda
scope:name_suggestion = flag:Sean
scope:name_suggestion = flag:Stephen
scope:name_suggestion = flag:Maximilian
scope:name_suggestion = flag:Ewan
scope:name_suggestion = flag:Milla
scope:name_suggestion = flag:Tobias
scope:name_suggestion = flag:Ismael
scope:name_suggestion = flag:Sara
scope:name_suggestion = flag:Igor
scope:name_suggestion = flag:Daniel
scope:name_suggestion = flag:Olle
scope:name_suggestion = flag:Lysann
scope:name_suggestion = flag:Pontus
scope:name_suggestion = flag:Carlos
scope:name_suggestion = flag:Jonas
scope:name_suggestion = flag:Emil
scope:name_suggestion = flag:Matt
scope:name_suggestion = flag:Katya
scope:name_suggestion = flag:Filippa
scope:name_suggestion = flag:Satan
scope:name_suggestion = flag:Beelzebub
scope:name_suggestion = flag:Lilith
scope:name_suggestion = flag:Iblis
scope:name_suggestion = flag:Hel
scope:name_suggestion = flag:Deceiver
scope:name_suggestion = flag:Whisperer
scope:name_suggestion = flag:Reaper
scope:name_suggestion = flag:Tengil
scope:name_suggestion = flag:Katla
}
}
hidden_effect = {
scope:child = {
change_first_name = birth.9002.a.rename
}
}
custom_tooltip = birth.9002.a.tt.2
}
}
#AI spouse suggests a name (5% change of replacing regular 1001 mother event or 1003 father event)
birth.9002 = {
type = character_event
title = birth.9002.t
desc = {
desc = birth.9002.start.desc
first_valid = { #Face expression
random_valid = {
triggered_desc = {
trigger = {
OR = {
scope:name_type = flag:lunatic
scope:name_type = flag:creator
scope:name_type = flag:possessed
AND = {
scope:name_type = flag:religious
ai_zeal < 0
}
AND = {
scope:name_type = flag:real_father
scope:suggester = { intrigue < mediocre_skill_rating }
}
}
}
desc = birth.9002.worrying.desc
}
triggered_desc = {
trigger = {
NOR = {
scope:name_type = flag:lunatic
scope:name_type = flag:creator
scope:name_type = flag:possessed
}
scope:suggester = {
OR = {
has_trait = depressed
ai_compassion >= low_positive_ai_value
}
}
}
desc = birth.9002.tears.desc
}
triggered_desc = {
trigger = {
NOR = {
scope:name_type = flag:lunatic
scope:name_type = flag:creator
scope:name_type = flag:possessed
}
scope:suggester = {
OR = {
has_trait = arrogant
has_trait = ambitious
ai_greed >= low_positive_ai_value
}
}
}
desc = birth.9002.pride.desc
}
triggered_desc = {
trigger = {
OR = {
scope:name_type = flag:creator
scope:name_type = flag:possessed
scope:name_type = flag:religious
}
}
desc = birth.9002.conviction.desc
}
triggered_desc = {
trigger = {
OR = {
scope:name_type = flag:lunatic
scope:name_type = flag:creator
scope:name_type = flag:possessed
scope:suggester = { has_personality_emotional_trigger = yes }
}
}
desc = birth.9002.surprisingly_calm.desc
}
triggered_desc = {
trigger = {
NOR = {
scope:name_type = flag:lunatic
scope:name_type = flag:creator
scope:name_type = flag:possessed
}
scope:suggester = {
has_personality_levelheaded_trigger = yes
}
}
desc = birth.9002.calm.desc
}
triggered_desc = {
trigger = {
scope:name_type = flag:namers_name
reverse_opinion = {
target = scope:suggester
value >= 50
}
}
desc = birth.9002.devotion.desc
}
}
#Fallback for facial expression
desc = birth.9002.calm.desc
}
desc = newline.desc
random_valid = { #Addressing you
first_valid = {
triggered_desc = {
trigger = {
reverse_opinion = {
target = scope:suggester
value >= 80
}
}
desc = birth.9002.love.desc
}
triggered_desc = {
trigger = {
reverse_opinion = {
target = scope:suggester
value >= 30
}
}
desc = birth.9002.dear_spouse.desc
}
desc = birth.9002.spouse.desc
}
}
first_valid = { #Suggesting name
triggered_desc = {
trigger = { scope:name_type = flag:suggester_relative }
desc = birth.9002.suggester_relative.desc
}
triggered_desc = {
trigger = { scope:name_type = flag:namer_relative }
desc = birth.9002.namer_relative.desc
}
triggered_desc = {
trigger = { scope:name_type = flag:suggesters_name }
desc = birth.9002.suggesters_name.desc
}
triggered_desc = {
trigger = { scope:name_type = flag:namers_name }
desc = birth.9002.namers_name.desc
}
triggered_desc = {
trigger = {
OR = {
scope:name_type = flag:nice_name_namer_realm
scope:name_type = flag:nice_name_suggester_realm
scope:name_type = flag:real_father
}
}
desc = birth.9002.nice_name.desc
}
triggered_desc = {
trigger = {
scope:name_type = flag:religious
OR = {
scope:name_suggestion = flag:Thor
scope:name_suggestion = flag:Balder
scope:name_suggestion = flag:Odin
}
}
desc = birth.9002.religious_god.desc
}
triggered_desc = {
trigger = {
scope:name_type = flag:religious
OR = {
scope:name_suggestion = flag:Freja
scope:name_suggestion = flag:Idun
scope:name_suggestion = flag:Frigg
}
}
desc = birth.9002.religious_godess.desc
}
triggered_desc = {
trigger = {
scope:name_type = flag:religious
OR = {
scope:name_suggestion = flag:Peter
scope:name_suggestion = flag:Paul
scope:name_suggestion = flag:John
}
}
desc = birth.9002.religious_apostle.desc
}
triggered_desc = {
trigger = {
scope:name_type = flag:religious
scope:name_suggestion = flag:Maria
}
desc = birth.9002.religious_holy_virgin.desc
}
triggered_desc = {
trigger = { scope:name_type = flag:religious }
desc = birth.9002.religious_fallback.desc
}
triggered_desc = {
trigger = { scope:name_type = flag:lunatic }
desc = birth.9002.lunatic.desc
}
triggered_desc = {
trigger = { scope:name_type = flag:creator }
desc = birth.9002.creator.desc
}
triggered_desc = {
trigger = { scope:name_type = flag:possessed }
desc = birth.9002.possessed.desc
}
}
}
theme = family
override_background = { reference = relaxing_room }
left_portrait = {
character = scope:suggester
animation = happiness
}
right_portrait = scope:child
lower_right_portrait = scope:namesake_official
trigger = {
scope:child = { is_alive = yes }
NOT = {
any_parent = { has_variable = borte_first_child_var }
}
# Some cultures do not reuse names - suggest_ancestor_names = no
culture = {
NOR = {
has_name_list = name_list_balhae
has_name_list = name_list_emishi
has_name_list = name_list_han
has_name_list = name_list_korean
has_name_list = name_list_ryukyuan
has_name_list = name_list_vietnamese
has_name_list = name_list_yamato
}
}
}
immediate = {
play_music_cue_once = { TRACK = mx_cue_birth }
hidden_effect = {
save_scope_as = namer
scope:child = {
random_parent = {
limit = { this != scope:namer }
save_scope_as = suggester
}
}
random_list = {
4 = { #Suggester's relatives
trigger = {
scope:suggester = {
any_close_or_extended_family_member = {
even_if_dead = yes
birth_9002_suggester_relative_trigger = yes
trigger_if = {
limit = { is_alive = yes }
reverse_opinion = {
target = scope:suggester
value >= 20
}
}
}
}
}
modifier = {
scope:suggester = {
any_close_or_extended_family_member = {
birth_9002_suggester_relative_trigger = yes
reverse_opinion = {
target = scope:suggester
value >= 40
}
}
}
factor = 2
}
modifier = {
scope:suggester = {
ai_compassion >= medium_positive_ai_value
}
factor = 2
}
modifier = {
scope:suggester = {
ai_honor >= medium_positive_ai_value
}
factor = 2
}
scope:suggester = {
random_close_or_extended_family_member = {
even_if_dead = yes
limit = {
birth_9002_suggester_relative_trigger = yes
trigger_if = {
limit = { is_alive = yes }
reverse_opinion = {
target = scope:suggester
value >= 20
}
}
}
weight = {
modifier = {
reverse_opinion = {
target = scope:suggester
value >= 40
}
factor = 5
}
modifier = {
reverse_opinion = {
target = scope:suggester
value >= 60
}
factor = 3
}
modifier = {
is_playable_character = yes
factor = 2
}
modifier = { #Honor the dead
is_alive = no
factor = 2
}
}
save_scope_as = namesake
save_scope_value_as = {
name = name_type
value = flag:suggester_relative
}
}
}
}
#Namer's relatives
6 = {
trigger = {
any_close_or_extended_family_member = {
even_if_dead = yes
birth_9002_namer_relative_trigger = yes
trigger_if = {
limit = { is_alive = yes }
reverse_opinion = {
target = scope:namer
value >= 20
}
reverse_opinion = {
target = scope:suggester
value >= 10
}
}
}
}
modifier = {
any_close_or_extended_family_member = {
birth_9002_namer_relative_trigger = yes
reverse_opinion = {
target = scope:namer
value >= 40
}
}
factor = 3
}
modifier = {
scope:suggester = {
ai_compassion >= medium_positive_ai_value
}
factor = 2
}
modifier = {
reverse_opinion = {
target = scope:suggester
value < 10
}
factor = 0.2
}
scope:suggester = {
random_close_or_extended_family_member = {
even_if_dead = yes
limit = {
birth_9002_namer_relative_trigger = yes
trigger_if = {
limit = { is_alive = yes }
reverse_opinion = {
target = scope:namer
value >= 20
}
reverse_opinion = {
target = scope:suggester
value >= 10
}
}
}
weight = {
modifier = {
reverse_opinion = {
target = scope:namer
value >= 40
}
factor = 5
}
modifier = {
reverse_opinion = {
target = scope:namer
value >= 60
}
factor = 3
}
modifier = {
is_playable_character = yes
factor = 2
}
modifier = { #Honor the dead
is_alive = no
factor = 2
}
}
save_scope_as = namesake
save_scope_value_as = {
name = name_type
value = flag:namer_relative
}
}
}
}
1 = { #Suggester's name
trigger = {
scope:suggester = {
birth_9003_same_gender_as_baby_trigger = yes
NOT = { has_trait = humble }
}
}
modifier = {
scope:suggester = { has_trait = arrogant }
factor = 5
}
scope:suggester = { save_scope_as = namesake }
save_scope_value_as = {
name = name_type
value = flag:suggesters_name
}
}
1 = { #Namer's name
trigger = {
birth_9003_same_gender_as_baby_trigger = yes
reverse_opinion = {
target = scope:suggester
value >= 20
}
}
modifier = {
reverse_opinion = {
target = scope:suggester
value >= 40
}
factor = 5
}
modifier = {
reverse_opinion = {
target = scope:suggester
value >= 60
}
factor = 3
}
modifier = {
has_relation_lover = scope:suggester
factor = 10
}
scope:namer = { save_scope_as = namesake }
save_scope_value_as = {
name = name_type
value = flag:namers_name
}
}
1 = { #A nice name from your realm
trigger = {
any_vassal_or_below = {
birth_9003_same_gender_as_baby_trigger = yes
this != scope:suggester
}
}
random_vassal_or_below = {
limit = {
birth_9003_same_gender_as_baby_trigger = yes
this != scope:suggester
}
save_scope_as = namesake
save_scope_value_as = {
name = name_type
value = flag:nice_name_namer_realm
}
}
}
1 = { #A nice name from suggester's realm
trigger = {
scope:suggester = {
any_parent = {
is_playable_character = yes
any_vassal_or_below = {
birth_9003_same_gender_as_baby_trigger = yes
}
}
}
}
scope:suggester = {
random_parent = {
limit = {
is_playable_character = yes
any_vassal_or_below = {
birth_9003_same_gender_as_baby_trigger = yes
NOR = {
this = scope:namer
this = scope:suggester
}
}
}
random_vassal_or_below = {
limit = {
birth_9003_same_gender_as_baby_trigger = yes
NOR = {
this = scope:namer
this = scope:suggester
}
}
save_scope_as = namesake
save_scope_value_as = {
name = name_type
value = flag:nice_name_suggester_realm
}
}
}
}
}
4 = { #Real father name
trigger = {
scope:child = {
mother = { this = scope:suggester }
NOT = { real_father = { this = scope:namer } }
}
}
modifier = {
scope:suggester = {
opinion = {
target = scope:child.real_father
value >= 60
}
}
factor = 3
}
scope:child.real_father = {
save_scope_as = namesake
save_scope_value_as = {
name = name_type
value = flag:real_father
}
}
}
1 = { #Religious names
trigger = {
scope:suggester = { ai_zeal > 0 }
scope:child = {
OR = {
faith = { religion_tag = germanic_religion }
faith = { religion_tag = christianity_religion }
}
}
}
modifier = {
scope:suggester = { ai_zeal >= medium_positive_ai_value }
factor = 5
}
random_list = {
1 = {
trigger = {
scope:child = {
is_male = yes
faith = { religion_tag = germanic_religion }
}
}
save_scope_value_as = { name = name_suggestion value = flag:Thor }
}
1 = {
trigger = {
scope:child = {
is_male = yes
faith = { religion_tag = germanic_religion }
}
}
save_scope_value_as = { name = name_suggestion value = flag:Balder }
}
1 = {
trigger = {
scope:child = {
is_male = yes
faith = { religion_tag = germanic_religion }
}
}
save_scope_value_as = { name = name_suggestion value = flag:Odin }
}
1 = {
trigger = {
scope:child = {
is_female = yes
faith = { religion_tag = germanic_religion }
}
}
save_scope_value_as = { name = name_suggestion value = flag:Freja }
}
1 = {
trigger = {
scope:child = {
is_female = yes
faith = { religion_tag = germanic_religion }
}
}
save_scope_value_as = { name = name_suggestion value = flag:Idun }
}
1 = {
trigger = {
scope:child = {
is_female = yes
faith = { religion_tag = germanic_religion }
}
}
save_scope_value_as = { name = name_suggestion value = flag:Frigg }
}
1 = {
trigger = {
scope:child = {
is_male = yes
faith = { religion_tag = christianity_religion }
}
}
save_scope_value_as = { name = name_suggestion value = flag:Peter } #Apostle
}
1 = {
trigger = {
scope:child = {
is_male = yes
faith = { religion_tag = christianity_religion }
}
}
save_scope_value_as = { name = name_suggestion value = flag:Paul } #Apostle
}
1 = {
trigger = {
scope:child = {
is_male = yes
faith = { religion_tag = christianity_religion }
}
}
save_scope_value_as = { name = name_suggestion value = flag:John } #Apostle
}
1 = {
trigger = {
scope:child = {
is_female = yes
faith = { religion_tag = christianity_religion }
}
}
save_scope_value_as = { name = name_suggestion value = flag:Maria } #Holy virgin
}
}
save_scope_value_as = {
name = name_type
value = flag:religious
}
}
20 = { #Lunatic names
trigger = { scope:suggester = { has_trait = lunatic } }
random_list = {
1 = { save_scope_value_as = { name = name_suggestion value = flag:Babby } }
1 = { save_scope_value_as = { name = name_suggestion value = flag:Oats } }
1 = { save_scope_value_as = { name = name_suggestion value = flag:Mittens } }
1 = { save_scope_value_as = { name = name_suggestion value = flag:Glitterhoof } }
1 = { save_scope_value_as = { name = name_suggestion value = flag:Lord } }
1 = { save_scope_value_as = { name = name_suggestion value = flag:Lady } }
1 = { save_scope_value_as = { name = name_suggestion value = flag:Snowflake } }
1 = { save_scope_value_as = { name = name_suggestion value = flag:Bambosh } }
1 = { save_scope_value_as = { name = name_suggestion value = flag:Fustian } }
1 = { save_scope_value_as = { name = name_suggestion value = flag:Nugament } }
1 = { save_scope_value_as = { name = name_suggestion value = flag:Pigwash } }
1 = { save_scope_value_as = { name = name_suggestion value = flag:Poppycock } }
1 = { save_scope_value_as = { name = name_suggestion value = flag:Tootle } }
1 = { save_scope_value_as = { name = name_suggestion value = flag:Scripty } }
1 = { save_scope_value_as = { name = name_suggestion value = flag:Gandolf } }
}
save_scope_value_as = {
name = name_type
value = flag:lunatic
}
}
5 = {
trigger = { #Our creator
scope:suggester = { has_trait = lunatic }
scope:suggester = { has_trait = possessed }
}
random_list = {
1 = {
trigger = { scope:child = { is_female = yes } }
save_scope_value_as = { name = name_suggestion value = flag:Anna } #Project lead
}
1 = {
trigger = { scope:child = { is_female = yes } }
save_scope_value_as = { name = name_suggestion value = flag:Linda } #Project lead
}
1 = {
trigger = { scope:child = { is_male = yes } }
save_scope_value_as = { name = name_suggestion value = flag:Rikard } #Project lead
}
1 = {
trigger = { scope:child = { is_male = yes } }
save_scope_value_as = { name = name_suggestion value = flag:Henrik } #Game Director
}
1 = {
trigger = { scope:child = { is_male = yes } }
save_scope_value_as = { name = name_suggestion value = flag:Joakim } #Designer
}
1 = {
trigger = { scope:child = { is_male = yes } }
save_scope_value_as = { name = name_suggestion value = flag:Alex } #Designer
}
1 = {
trigger = { scope:child = { is_male = yes } }
save_scope_value_as = { name = name_suggestion value = flag:Maximilian } #Content designer
}
1 = {
trigger = { scope:child = { is_male = yes } }
save_scope_value_as = { name = name_suggestion value = flag:Petter } #Content designer
}
1 = {
trigger = { scope:child = { is_female = yes } }
save_scope_value_as = { name = name_suggestion value = flag:Linnéa } #Content designer
}
1 = {
trigger = { scope:child = { is_female = yes } }
save_scope_value_as = { name = name_suggestion value = flag:Mathilda } #Content designer
}
1 = {
trigger = { scope:child = { is_male = yes } }
save_scope_value_as = { name = name_suggestion value = flag:Sean } #Content designer
}
1 = {
trigger = { scope:child = { is_male = yes } }
save_scope_value_as = { name = name_suggestion value = flag:Stephen } #Content designer
}
1 = {
trigger = { scope:child = { is_male = yes } }
save_scope_value_as = { name = name_suggestion value = flag:Tobias } #Content designer
}
1 = {
trigger = { scope:child = { is_male = yes } }
save_scope_value_as = { name = name_suggestion value = flag:Ewan } #Content designer
}
1 = {
trigger = { scope:child = { is_female = yes } }
save_scope_value_as = { name = name_suggestion value = flag:Milla } #Content designer
}
1 = {
trigger = { scope:child = { is_male = yes } }
save_scope_value_as = { name = name_suggestion value = flag:Ismael } #Programmer
}
1 = {
trigger = { scope:child = { is_female = yes } }
save_scope_value_as = { name = name_suggestion value = flag:Sara } #Programmer
}
1 = {
trigger = { scope:child = { is_male = yes } }
save_scope_value_as = { name = name_suggestion value = flag:Igor } #Programmer
}
1 = {
trigger = { scope:child = { is_male = yes } }
save_scope_value_as = { name = name_suggestion value = flag:Daniel } #Programmer
}
1 = {
trigger = { scope:child = { is_male = yes } }
save_scope_value_as = { name = name_suggestion value = flag:Olle } #Programmer
}
1 = {
trigger = { scope:child = { is_female = yes } }
save_scope_value_as = { name = name_suggestion value = flag:Lysann } #Programmer
}
1 = {
trigger = { scope:child = { is_male = yes } }
save_scope_value_as = { name = name_suggestion value = flag:Pontus } #Artist
}
1 = {
trigger = { scope:child = { is_male = yes } }
save_scope_value_as = { name = name_suggestion value = flag:Carlos } #Artist
}
1 = {
trigger = { scope:child = { is_male = yes } }
save_scope_value_as = { name = name_suggestion value = flag:Jonas } #Artist
}
1 = {
trigger = { scope:child = { is_male = yes } }
save_scope_value_as = { name = name_suggestion value = flag:Emil } #QA
}
1 = {
trigger = { scope:child = { is_male = yes } }
save_scope_value_as = { name = name_suggestion value = flag:Matt } #QA
}
1 = {
trigger = { scope:child = { is_female = yes } }
save_scope_value_as = { name = name_suggestion value = flag:Katya } #QA
}
1 = {
trigger = { scope:child = { is_female = yes } }
save_scope_value_as = { name = name_suggestion value = flag:Filippa } #Content designer
}
}
save_scope_value_as = {
name = name_type
value = flag:creator
}
}
20 = {
trigger = { scope:suggester = { has_trait = possessed } }
random_list = {
1 = {
trigger = {
scope:child = {
is_male = yes
OR = {
faith = { religion_tag = christianity_religion }
faith = { religion_tag = judaism_religion }
}
}
}
save_scope_value_as = { name = name_suggestion value = flag:Satan }
}
1 = {
trigger = {
scope:child = {
is_male = yes
OR = {
faith = { religion_tag = christianity_religion }
faith = { religion_tag = judaism_religion }
}
}
}
save_scope_value_as = { name = name_suggestion value = flag:Beelzebub }
}
1 = {
trigger = {
scope:child = {
is_female = yes
OR = {
faith = { religion_tag = christianity_religion }
faith = { religion_tag = judaism_religion }
}
}
}
save_scope_value_as = { name = name_suggestion value = flag:Lilith }
}
1 = {
trigger = {
scope:child = {
is_male = yes
faith = { religion_tag = islam_religion }
}
}
save_scope_value_as = { name = name_suggestion value = flag:Iblis }
}
1 = {
trigger = {
scope:child = {
is_female = yes
faith = { religion_tag = germanic_religion }
}
}
save_scope_value_as = { name = name_suggestion value = flag:Hel }
}
1 = { save_scope_value_as = { name = name_suggestion value = flag:Deceiver } }
1 = { save_scope_value_as = { name = name_suggestion value = flag:Whisperer } }
1 = { save_scope_value_as = { name = name_suggestion value = flag:Reaper } }
1 = { save_scope_value_as = { name = name_suggestion value = flag:Tengil } }
1 = { save_scope_value_as = { name = name_suggestion value = flag:Katla } }
}
save_scope_value_as = {
name = name_type
value = flag:possessed
}
}
}
if = {
limit = {
exists = scope:namesake
NOR = {
scope:namesake = scope:namer
scope:namesake = scope:suggester
scope:name_type = flag:nice_name_namer_realm
scope:name_type = flag:nice_name_suggester_realm
scope:name_type = flag:real_father
}
}
scope:namesake = { save_scope_as = namesake_official }
}
#Fallback (either parents' name)
if = {
limit = {
NOR = {
exists = scope:namesake
exists = scope:name_suggestion
}
}
if = { #Name after father
limit = { scope:child = { is_male = yes } }
scope:child = { father = { save_scope_as = namesake } }
}
else = { #Name after mother
scope:child = { mother = { save_scope_as = namesake } }
}
if = {
limit = { scope:namesake = { this = scope:suggester } }
save_scope_value_as = {
name = name_type
value = flag:suggesters_name
}
}
else = {
save_scope_value_as = {
name = name_type
value = flag:namers_name
}
}
}
#Name them, and then you can rename them later
birth_9002_name_setting_effect = yes
}
}
#Yes
option = {
name = {
trigger = { exists = scope:namesake }
text = birth.9002.a1
}
name = {
trigger = { exists = scope:name_suggestion }
text = birth.9002.a2
}
show_as_tooltip = { birth_9002_name_setting_effect = yes }
reverse_add_opinion = {
target = scope:suggester
modifier = grateful_opinion
opinion = 15
}
if = {
limit = {
exists = scope:namesake_official
scope:namesake_official = { is_alive = yes }
}
reverse_add_opinion = {
target = scope:namesake_official
modifier = grateful_opinion
opinion = 15
}
hidden_effect = {
scope:suggester = {
reverse_add_opinion = {
target = scope:namesake_official
modifier = grateful_opinion
opinion = 15
}
}
}
}
}
#No
option = {
name = {
trigger = {
NOR = {
scope:name_type = flag:lunatic
scope:name_type = flag:creator
scope:name_type = flag:possessed
}
}
text = birth.9002.b1
}
name = {
trigger = {
OR = {
scope:name_type = flag:lunatic
scope:name_type = flag:creator
scope:name_type = flag:possessed
}
}
text = birth.9002.b2
}
custom_tooltip = birth.9002.b.tt
trigger_event = birth.9003
}
after = {
bastard_real_father_discovery_on_birth_effect = yes
}
}
#You said no to their suggestion and pick a name of your own
birth.9003 = { #by Mathilda Bjarnehed
type = character_event
title = birth.9002.t
desc = birth.9003.desc
theme = family
override_background = { reference = relaxing_room }
left_portrait = scope:child
right_portrait = {
character = scope:suggester
animation = happiness
}
#NAMING WIDGET
widgets = {
widget = {
is_shown = {
allow_naming_on_birth_of_child_trigger = { CHILD = scope:child }
}
gui = "event_window_widget_name_child"
container = "dynamic_birth_name"
controller = name_character
setup_scope = { scope:child = { save_scope_as = name_character_target } }
}
}
option = {
name = birth.9003.a
}
}
birth.9004 = {
type = character_event
title = birth.9004.t
desc = {
first_valid = {
#If we're renaming ourself
triggered_desc = {
trigger = {
root = scope:child
}
desc = birth.9004.desc.me
}
#If we're renaming someone else
triggered_desc = {
desc = birth.9004.desc
}
}
}
theme = family
override_background = { reference = relaxing_room }
right_portrait = {
character = scope:child
animation = happiness
}
#NAMING WIDGET
widgets = {
widget = {
is_shown = {
allow_naming_on_birth_of_child_trigger = { CHILD = scope:child }
}
gui = "event_window_widget_name_child"
container = "dynamic_birth_name"
controller = name_character
setup_scope = {
scope:child = { save_scope_as = name_character_target }
}
}
}
#Go ahead
option = {
name = birth.9004.a
}
#On second though...
option = {
name = {
text = {
first_valid = {
#If we're renaming ourself
triggered_desc = {
trigger = { root = scope:child }
desc = birth.9004.b
}
#If we're renaming someone else
triggered_desc = {
desc = birth.9004.b.other
}
}
}
}
flavor = {
first_valid = {
#If we're renaming ourself
triggered_desc = {
trigger = { root = scope:child }
desc = birth.9004.b.tt
}
#If we're renaming someone else
triggered_desc = {
desc = birth.9004.b.tt.other
}
}
}
is_cancel_option = yes
}
}