#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 } }