@army_commander_vulnerable_to_health_problems_value = good_health @court_medic_able_to_help_value = very_high_skill_rating @random_harm_standard_skill_check_value = very_high_skill_rating @random_harm_easy_skill_check_value = mediocre_skill_rating namespace = harm ################################################## # #Responsive Incapability Events # 0001 - 0010 Ailing with Age - You're growing old and your health is ailing. # 0011 - 0020 Broken by Battle - You take brain damage during a battle. # # #Random Incapability Events # 0501 - 0510 Best in Breed - Inbreeding has left you increasingly vapid and feeble-minded. # 0511 - 0520 A Little Tumble - You fall from your horse/camel/elephant/donkey. # 0521 - 0530 Gurgling & Grasping - Whilst at sea, you fall overboard and drown long enough to endanger your brain. # 0531 - 0540 The World Slipping - Struck down by a stroke. # 0541 - 0550 Chilled to the Bones - Crippling arthritis, chiefly in colder regions, can hurt the elderly. # 0551 - 0560 A Thud & A Snap - A child falls from a tree. # 0561 - 0570 The Descent - An old person falls down some stairs. # 0571 - 0580 A Trip During Training - A fighting ruler is whacked on the bonce whilst training. # 0581 - 0590 Slippery when Wet - Slipping getting out of the tub. # 0591 - 0600 Death from Above - A peasant's falling pot leaves you incapable. # 0601 - 0610 What's the Harm? - Children playing goes horribly wrong. # 0611 - 0620 Dizzying Heights - As a cripplingly feeble character, stand up way, way too fast. # 0621 - 0630 A Jolly Good Time - Drunken shenanigans. # 0631 - 0640 A Rollicking Good Time - Heart attack whilst vigorously bonking. # 0641 - 0650 Some Slight Swelling - Dropsy renders you bed-ridden. # # #Random Death Events # 1001 - 1010 Choke On It - Choking at a feast. # 1011 - 1020 Ride or Die - Something spooks your horse and it goes flying out of control. # 1021 - 1030 Finger-Licking Good - Eating too much exotic food. # 1031 - 1040 A Clogged Throat - Quinsy-induced choking. # 1041 - 1050 Probably Safe - Fall into a body of water. # 1051 - 1060 Flickering Flames - A small fire gets out of hand. # 1061 - 1070 A Moderate Tumble - Falling out of a window whilst admiring the view. # 1071 - 1080 Crimes of Passion - A scuffle between two rivals sees you accidentally stabbed. # 1081 - 1090 Storm's Wrath - Death in a storm, due to a lightning hit/being crushed by a falling tree/twatted by a falling rock/catching a terminal chill. # 1091 - 1100 Aching Minds - Struck down by an aneurysm. # 1101 - 1110 Street Safety - Run over by a rider/run-away cart. # 1111 - 1120 People's Justice - Stabbed by a servant in your capital that hates you. # # #Random Death Battle Events # 2001 - 2010 Camp Fever - Terrible siege conditions cause you strife. # 2011 - 2020 Marching Malaise - Terrible marching conditions are problematic. # 2021 - 2030 So... Cold... - Frostbite claims you. # 2031 - 2040 So... Hot... - Heat-stroke claims you. # 2041 - 2050 For the Realm - Aggrieved soldiers at war too long assassinate you. # 2051 - 2060 Starvation - Complications due to starvation from lack of supply. # 2061 - 2070 Harried Each Step - Retreating from battle and caught by enemy soldiers. # 2071 - 2080 A Disastrous Victory - Pursuing too far ahead in battle and caught by enemy soldiers. ################################################## ################################################## # MISC SCRIPTED TRIGGERS & EFFECTS # Can this dynasty/house get another random horrific accident? ## Note: this only applies to the foreboding events. If a family is unlucky enough to roll two foreboding events in a row before the next one hits, well, that's only gonna reset their cooldown. scripted_trigger harm_0000_not_on_dynastic_cooldown_trigger = { # Are we a player? trigger_if = { limit = { is_ai = no } NOT = { # We structure it like this so that the variable registers as used by the game, avoiding the need for an error suppression event. dynasty ?= { has_variable = player_random_harm_cooldown } } } # No? Ok, then try our house. trigger_if = { limit = { is_ai = yes exists = house } NOT = { # We structure it like this so that the variable registers as used by the game, avoiding the need for an error suppression event. house ?= { has_variable = ai_random_harm_cooldown} } } } # Apply appropriate cooldowns so that we don't repeatedly kill/incapacitate the same people. scripted_effect harm_0000_apply_dynastic_cooldowns_effect = { # Are we a player? if = { limit = { is_ai = no } # Right, then we want to set a cooldown on our dynasty. dynasty = { set_variable = { name = player_random_harm_cooldown value = yes years = 50 } } } else_if = { limit = { exists = house } house = { set_variable = { name = ai_random_harm_cooldown value = yes years = 30 } } } } # Grab our court physician and apply the correct scope _if_ we wouldn't be better off treating ourselves. scripted_effect harm_0000_grab_available_court_physician_effect = { if = { limit = { # Check to see if we'd be better of treating ourselves. $PERSONAL_SKILL$ < @random_harm_standard_skill_check_value # Else, try to grab the physician. any_court_position_holder = { type = court_physician_court_position is_available_adult = yes location = root.location } } random_court_position_holder = { type = court_physician_court_position limit = { is_available_adult = yes location = root.location } save_scope_as = medic } } } # Run the chance of a court physician saving us if we're at risk of becoming incapable. scripted_effect harm_0000_physic_rescue_chance_incapable_effect = { random_list = { # You aren't permanently hurt. 0 = { modifier = { add = harm_event_random_list_medium_odd_success_value } desc = harm.0000.tt.incapable.success send_interface_toast = { type = event_toast_effect_good title = harm.0000.tt.incapable.success left_icon = root custom_tooltip = harm.0000.tt.no_permanent_damage } } # The experience leaves you feeble. 0 = { modifier = { add = harm_event_random_list_medium_odd_failure_value } desc = harm.0000.tt.incapable.failure send_interface_toast = { type = event_toast_effect_bad title = harm.0000.tt.incapable.failure left_icon = root upgrade_infirm_to_incapable_effect = yes create_character_memory = { type = became_incapable_generic } } } } # Having someone to call on for this type of thing offloads the "what do I do?!" panic. stress_impact = { base = minor_stress_impact_gain calm = minor_stress_impact_loss } } # Run the chance of a court physician saving us if we're at risk of death. scripted_effect harm_0000_physic_rescue_chance_death_effect = { random_list = { # You live. 0 = { modifier = { add = harm_event_random_list_medium_odd_success_value } desc = harm.0000.tt.death.success send_interface_toast = { type = event_toast_effect_good title = harm.0000.tt.death.success left_icon = root custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes } } # You die. 0 = { modifier = { add = harm_event_random_list_medium_odd_failure_value } desc = harm.0000.tt.death.failure send_interface_toast = { type = event_toast_effect_bad title = harm.0000.tt.death.failure left_icon = root death = { death_reason = $DEATH_REASON$ } log_harm_event_death_as_variable_effect = yes } } } # Having someone to call on for this type of thing offloads the "what do I do?!" panic. stress_impact = { base = minor_stress_impact_gain calm = minor_stress_impact_loss } } ################################################## # RESPONSIVE INCAPABILITY EVENTS ################################################## # Ailing with Age # by Ewan Cowhig Croft # 0001 - 0010 ################################################## scripted_trigger harm_0001_general_requirements_trigger = { # Standard checks. harm_game_rule_enablement_trigger = yes # Mustn't _already_ have a trait granting you this. is_incapable = no # Health checks. age_ranked_health_vulnerability_threshold_trigger = yes } scripted_effect harm_0001_age_gracefully_or_stress_loss_effect = { if = { limit = { NOT = { has_character_modifier = aging_gracefully_modifier } } add_character_modifier = aging_gracefully_modifier } else = { add_stress = medium_stress_loss } } # You're growing old and your health is ailing. harm.0001 = { type = character_event title = harm.0001.t desc = harm.0001.desc theme = physical_health left_portrait = { character = root animation = sick outfit_tags = { nightgown } } override_background = { reference = bedchamber } # See you next time... cooldown = { years = 10 } trigger = { # Must've had the foreshadowing events. has_character_flag = had_event_harm_0002 has_character_flag = had_event_harm_0003 # Then our general reqs. harm_0001_general_requirements_trigger = yes } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Weight up a bit for infirm characters. modifier = { add = 0.25 has_trait = infirm } } immediate = { play_music_cue = "mx_cue_stress" } # I'll be around for donkey's years yet, I'm sure. option = { name = harm.0001.a duel = { skill = prowess value = very_high_skill_rating # Your body is healthy, your mind is clear. 50 = { compare_modifier = { value = scope:duel_value multiplier = 3.5 # Always give _some_ chance. min = -39 } desc = harm.0001.a.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.0001.a.tt.success left_icon = root harm_0001_age_gracefully_or_stress_loss_effect = yes } } # You're not as fit as you thought you were. 50 = { compare_modifier = { value = scope:duel_value multiplier = -3.5 # Limit how low the off-chance can go. min = -19 } desc = harm.0001.a.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.0001.a.tt.failure left_icon = root # Upgrade our incapability. upgrade_infirm_to_incapable_effect = yes create_character_memory = { type = became_incapable_due_to_age } } } } stress_impact = { brave = miniscule_stress_impact_loss craven = minor_stress_impact_gain } ai_chance = { base = 1 ai_value_modifier = { ai_boldness = 1 ai_energy = 1 } } } # Perhaps I could live a little cleaner... option = { name = harm.0001.b duel = { skill = learning value = very_high_skill_rating # You make a few necessary changes. 50 = { compare_modifier = { value = scope:duel_value multiplier = 3.5 # Always give _some_ chance. min = -39 } desc = harm.0001.b.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.0001.b.tt.success left_icon = root harm_0001_age_gracefully_or_stress_loss_effect = yes } } # Nothing stops the march of time. 50 = { compare_modifier = { value = scope:duel_value multiplier = -3.5 # Limit how low the off-chance can go. min = -19 } desc = harm.0001.b.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.0001.b.tt.failure left_icon = root # Upgrade our incapability. upgrade_infirm_to_incapable_effect = yes create_character_memory = { type = became_incapable_due_to_age } } } } stress_impact = { patient = miniscule_stress_impact_loss impatient = minor_stress_impact_gain eccentric = minor_stress_impact_gain } ai_chance = { base = 1 ai_value_modifier = { ai_rationality = 1 ai_zeal = 0.5 } } } # Stubborn: I'll go when I'm good and ready, DeathDeityName, not before. option = { name = harm.0001.c trigger = { has_trait = stubborn } trait = stubborn # Stubborness & will alone keep you going. add_stress = major_stress_gain # We're just awarding stress directly here, so no stress impact. ai_chance = { # The AI should essentially always take this option. base = 1000 } } # I'm not the youth I once was. option = { name = harm.0001.d # Welp, you've got some kinda chance. random_list = { 0 = { modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.0001.d.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.0001.d.tt.success left_icon = root harm_0001_age_gracefully_or_stress_loss_effect = yes } } 0 = { modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.0001.d.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.0001.d.tt.failure left_icon = root # Upgrade our incapability. upgrade_infirm_to_incapable_effect = yes create_character_memory = { type = became_incapable_due_to_age } } } } stress_impact = { lazy = miniscule_stress_impact_loss humble = miniscule_stress_impact_loss diligent = minor_stress_impact_gain arrogant = medium_stress_impact_gain } ai_chance = { base = 1 ai_value_modifier = { ai_rationality = 0.25 ai_energy = -0.5 ai_boldness = -0.5 } } } } # Your mind fogs. harm.0002 = { type = character_event title = harm.0002.t desc = harm.0002.desc theme = physical_health left_portrait = { character = root animation = paranoia } override_background = { reference = bedchamber } trigger = { NOT = { has_character_flag = had_event_harm_0002 } harm_0001_general_requirements_trigger = yes } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Weight up a bit for infirm characters. modifier = { add = 0.25 has_trait = infirm } } immediate = { # Flag this event as taken for .0001. add_character_flag = had_event_harm_0002 } # What was I thinking about? option = { name = harm.0002.a flavor = harm.0002.a.tt # No effects, this event is just foreshadowing. stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # Only one option, so what we do is unimportant. base = 1 } } } # Your bones creak. harm.0003 = { type = character_event title = harm.0003.t desc = { desc = harm.0003.desc.intro first_valid = { triggered_desc = { trigger = { has_trait = blind } desc = harm.0003.desc.blind } desc = harm.0003.desc.sighted } desc = harm.0003.desc.outro } theme = physical_health left_portrait = { character = root animation = worry } override_background = { reference = bedchamber } trigger = { NOT = { has_character_flag = had_event_harm_0003 } harm_0001_general_requirements_trigger = yes } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Weight up a bit for infirm characters. modifier = { add = 0.25 has_trait = infirm } } immediate = { # Flag this event as taken for .0001. add_character_flag = had_event_harm_0003 } # Gah, do everyone's joints #EMP creak#! like this? option = { name = harm.0003.a flavor = harm.0003.a.tt # No effects, this is just foreshadowing. stress_impact = { base = medium_stress_impact_gain stubborn = minor_stress_impact_loss } ai_chance = { # Only one option, so what we do is unimportant. base = 1 } } } ################################################## # Broken by Battle # by Ewan Cowhig Croft # 0011 - 0020 ################################################## scripted_trigger harm_0011_valid_emergency_medic_trigger = { OR = { # Court physician is with the army. has_court_position = court_physician_court_position # Any knight with the physician trait is with the army. has_trait = lifestyle_physician # Any character with obscenely high learning will also do. learning >= 26 } NOT = { has_any_bad_relationship_with_character_trigger = { CHARACTER = root.side_commander } } } # You take brain damage during a battle. harm.0011 = { type = character_event title = harm.0011.t desc = { desc = harm.0011.desc.default_body first_valid = { triggered_desc = { trigger = { exists = scope:medic } desc = harm.0011.desc.medic_present } desc = harm.0011.desc.no_medic } } theme = physical_health left_portrait = { character = root animation = stress } right_portrait = { character = scope:medic animation = shock } override_background = { reference = battlefield } # Trigger taken care of in harm.0012. # Weight_multiplier taken care of in harm.0012, too. # Harm.0012 is where it's all happening, basically. immediate = { play_music_cue = "mx_cue_stress" } # I'm fine! I-I'm fine... option = { name = harm.0011.a random_list = { 0 = { modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.0011.a.tt.success # You recover, given time. send_interface_toast = { type = event_toast_effect_good title = harm.0011.a.tt.success left_icon = root # Natural proclivity saves you. random_list = { 50 = { desc = harm.0011.a.tt.success.bone add_character_modifier = { modifier = thick_skulled_modifier years = 20 } } 50 = { desc = harm.0011.a.tt.success.brain add_character_modifier = { modifier = strong_willed_modifier years = 20 } } } } } 0 = { modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.0011.a.tt.failure # But you were not fine. send_interface_toast = { type = event_toast_effect_bad title = harm.0011.a.tt.failure left_icon = root upgrade_infirm_to_incapable_effect = yes create_character_memory = { type = became_incapable_due_to_battle_concussion } # We have to do this weird double-scoping due to some kind of dark pact with Code, else things won't work. scope:new_memory = { save_scope_as = battle_memory } scope:battle_memory = { set_variable = { name = battle_location value = scope:battle_location } } } } } stress_impact = { base = major_stress_impact_gain } ai_chance = { # AI should only pick this option if there's not a chance to call for a medic. base = 1 } } # Scope:medic. Please. My #EMP head.#! option = { name = harm.0011.b trigger = { exists = scope:medic } # Scope:medic battles to save your thinker. scope:medic = { duel = { skill = learning value = very_high_skill_rating # With HerHis aid, you pull through. 0 = { modifier = { add = harm_event_random_list_medium_odd_success_value } compare_modifier = { value = scope:duel_value multiplier = 3.5 min = -49 } desc = harm.0011.b.tt.success root = { send_interface_toast = { type = event_toast_effect_good title = harm.0011.b.tt.success left_icon = root right_icon = scope:medic # Clearly you were well-fortified. random_list = { 0 = { modifier = { add = harm_event_random_list_medium_odd_success_value } desc = harm.0011.a.tt.success.bone add_character_modifier = { modifier = thick_skulled_modifier years = 20 } } 0 = { modifier = { add = harm_event_random_list_medium_odd_failure_value } desc = harm.0011.a.tt.success.brain add_character_modifier = { modifier = strong_willed_modifier years = 20 } } } # Good start to a friendship. progress_towards_friend_effect = { REASON = friend_emergency_surgery CHARACTER = scope:medic OPINION = 0 } } } } # HerHis best just wasn't good enough. 0 = { modifier = { add = harm_event_random_list_medium_odd_failure_value } compare_modifier = { value = scope:duel_value multiplier = -3.5 min = -49 } # Without recent or prolonged experience on behalf of your physic, your odds are much worse. modifier = { add = 25 NOR = { has_trait = lifestyle_physician has_court_position = court_physician_court_position } } desc = harm.0011.b.tt.failure root = { send_interface_toast = { type = event_toast_effect_bad title = harm.0011.b.tt.failure left_icon = root right_icon = scope:medic upgrade_infirm_to_incapable_effect = yes create_character_memory = { type = became_incapable_due_to_battle_concussion } # We have to do this weird double-scoping due to some kind of dark pact with Code, else things won't work. scope:new_memory = { save_scope_as = battle_memory } scope:battle_memory = { set_variable = { name = battle_location value = scope:battle_location } } # And uhhh, you're not happy. add_opinion = { target = scope:medic modifier = botched_my_treatment_crime_opinion } } } } } } stress_impact = { base = major_stress_impact_gain trusting = minor_stress_impact_loss stubborn = minor_stress_impact_gain paranoid = medium_stress_impact_gain } ai_chance = { # AI should be picking this if it's available. base = 1000 } } } scripted_trigger harm_0012_valid_commander_trigger = { # Standard checks. harm_game_rule_enablement_trigger = yes # Mustn't _already_ have a trait granting you this. is_incapable = no } # Setup event for harm.0011. # Due to mechanical constraints, currently only fires for the leaders on either side. harm.0012 = { hidden = yes scope = combat_side trigger = { side_commander ?= { harm_0012_valid_commander_trigger = yes } } weight_multiplier = { base = 0 # Add the weightings. ## We have to be a bit weird checking this one: there's not an easy way to weight the chance of the event by any commander potentially fulfilling the event, so we weight by a random valid one. modifier = { add = side_commander.harm_game_rule_likelihood_value exists = side_commander } # We deliberately weight only a _little_ bit for prowess - you've got a retinue and we still want bad luck to strike, so a mild rebate is all you get. modifier = { add = -0.25 side_commander ?= { OR = { prowess >= extremely_high_skill_rating has_trait = lifestyle_blademaster } } } } immediate = { # Grab our location. combat.location = { save_scope_as = battle_location } # Try to grab a physician, if there's one available. if = { limit = { any_side_knight = { harm_0011_valid_emergency_medic_trigger = yes } } # Pick out the appropriate knights. every_side_knight = { limit = { harm_0011_valid_emergency_medic_trigger = yes } add_to_list = potential_medics_list } # Then grab someone at random - medics are likely to be busy, so we don't just grab the best one. random_in_list = { list = potential_medics_list weight = { base = 0 # You're important, so there's more likelihood of better medics being rushed to you. modifier = { add = learning } # But we weight down if they're not part of your army. modifier = { factor = 0.5 NOT = { knight_army = root.side_commander.commanding_army } } } save_scope_as = medic } } # Then we fire the next event. side_commander = { trigger_event = harm.0011 } } } ################################################## # RANDOM INCAPABILITY EVENTS ################################################## # Best in Breed # by Ewan Cowhig Croft # 0501 - 0510 ################################################## # Inbreeding has left you increasingly vapid and feeble-minded. harm.0501 = { type = character_event title = harm.0501.t desc = harm.0501.desc theme = physical_health left_portrait = { character = root animation = pain } override_background = { reference = courtyard } trigger = { # Standard checks. is_available_adult = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_0501 } has_character_flag = had_event_harm_0502 # We don't recheck your inbreeding situation because your genetic heritage can't have changed and you already have a character flag indicating you went through this once, so there's no need. } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Weight up if you're _already_ inbred. modifier = { add = 0.5 has_trait = inbred } } immediate = { # We don't want to see this event twice. add_character_flag = had_event_harm_0501 # Give a little protection against spam. harm_0000_apply_dynastic_cooldowns_effect = yes # If you weren't obviously inbred before, you are now. if = { limit = { NOT = { has_trait = inbred } } add_trait = inbred } } # Where... where am I? option = { name = harm.0501.a random_list = { # You aren't permanently hurt. 0 = { modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.0501.a.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.0501.a.tt.success left_icon = root custom_tooltip = harm.0000.tt.no_permanent_damage } } # The experience leaves you feeble. 0 = { modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.0501.a.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.0501.a.tt.failure left_icon = root upgrade_infirm_to_incapable_effect = yes create_character_memory = { type = became_incapable_generic } } } } stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # Unless they've got a special option, the AI should always choose this. base = 1 } } # I can #EMP control myself#!. option = { name = harm.0501.b trigger = { has_trait = whole_of_body } trait = whole_of_body custom_tooltip = harm.0000.tt.no_permanent_damage # Always gain stress from trait opt-outs. stress_impact = { base = massive_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # The AI should essentially always take this option. base = 1000 } } # My mind is sharper than this. option = { name = harm.0501.c trigger = { learning >= @random_harm_standard_skill_check_value } skill = learning random_list = { # You aren't permanently hurt. 0 = { modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.0501.c.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.0501.c.tt.success left_icon = root custom_tooltip = harm.0000.tt.no_permanent_damage } } # The experience leaves you feeble. 0 = { modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.0501.c.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.0501.c.tt.failure left_icon = root upgrade_infirm_to_incapable_effect = yes create_character_memory = { type = became_incapable_generic } } } } # Always gain stress from skill tests. stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # The AI should take this option if a better one isn't available. base = 100 } } } # Attached foreboding event. harm.0502 = { type = character_event title = harm.0502.t desc = harm.0502.desc theme = physical_health left_portrait = { character = root animation = pain } override_background = { reference = courtyard } trigger = { # Standard checks. is_available_adult = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_0502 } # Right, let's check your inbreeding situation. ## First, we filter out creepy pure-blooded types, because they're homozygous and thus aren't affected by these things. NOT = { has_trait = pure_blooded } ## Now, let's check what the immediate inbreeding situation is like and grab some scopes. ### First, you need both parents or we'll get errors. any_parent = { count >= 2 } ### Right, now let's check for recent inbreeding and get those parents saved up. any_parent = { save_temporary_scope_as = char_temp_1 } any_parent = { this != scope:char_temp_1 is_close_or_extended_family_of = scope:char_temp_1 save_temporary_scope_as = char_temp_2 } ## Then we want to make sure you've got all six parents'n'grandparents available so we can iterate through them. ### Check they're there. scope:char_temp_1 = { any_parent = { count >= 2 } } scope:char_temp_2 = { any_parent = { count >= 2 } } ### Then grab the scopes so we don't constantly reiterate for them. scope:char_temp_1 = { any_parent = { save_temporary_scope_as = char_temp_3 } any_parent = { this != scope:char_temp_3 save_temporary_scope_as = char_temp_4 } } scope:char_temp_2 = { any_parent = { save_temporary_scope_as = char_temp_5 } any_parent = { this != scope:char_temp_5 save_temporary_scope_as = char_temp_6 } } ## Sweet, we've got this far, so check what our degrees of incest are. OR = { # We'll take an extra generation of close kin on either grandparental side. scope:char_temp_3 = { is_close_family_of = scope:char_temp_4 } scope:char_temp_5 = { is_close_family_of = scope:char_temp_6 } # Alternatively, if all of your grandparents were vaguely related to their partner, that works too. AND = { scope:char_temp_3 = { is_close_or_extended_family_of = scope:char_temp_4 } scope:char_temp_5 = { is_close_or_extended_family_of = scope:char_temp_5 } } } } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Weight up if you're _already_ inbred. modifier = { add = 0.5 has_trait = inbred } } immediate = { # Flag this event as taken for the follow-up. add_character_flag = had_event_harm_0502 } # What strange malady is this? option = { name = harm.0502.a # Foreshadow. custom_tooltip = harm.0502.a.tt # No stress. Yet. ai_chance = { # Only one option, so what we do is unimportant. base = 1 } } after = { # Random chance of immediately skipping on to the following event in a few years. hidden_effect = { random = { chance = 50 trigger_event = { id = harm.0501 years = { 2 4 } } } } } } ################################################## # A Little Tumble # by Ewan Cowhig Croft # 0511 - 0520 ################################################## scripted_trigger harm_0511_rides_horses_trigger = { OR = { # Either you're not a tribe. NOT = { government_has_flag = government_is_tribal } # Or you have Horse Lords. mpo_can_recruit_nomad_maa_trigger = yes culture = { culture_has_archer_cavalry_maa = yes } has_trait = nomadic_philosophy } } # You fall from your horse/camel/elephant/donkey. harm.0511 = { type = character_event title = harm.0511.t desc = harm.0511.desc theme = physical_health left_portrait = { character = root animation = loss_1 } override_background = { reference = wilderness } trigger = { # Standard checks. is_available_adult = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_0511 } has_character_flag = had_event_harm_0512 # Are we expected to ride a horse regularly? harm_0511_rides_horses_trigger = yes } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } } immediate = { # We don't want to see this event twice. add_character_flag = had_event_harm_0511 # Give a little protection against spam. harm_0000_apply_dynastic_cooldowns_effect = yes } # Wait, n-! option = { name = harm.0511.a random_list = { # You aren't permanently hurt. 0 = { modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.0511.a.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.0511.a.tt.success left_icon = root custom_tooltip = harm.0000.tt.no_permanent_damage } } # The experience leaves you feeble. 0 = { modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.0511.a.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.0511.a.tt.failure left_icon = root upgrade_infirm_to_incapable_effect = yes create_character_memory = { type = became_incapable_generic } } } } stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # Unless they've got a special option, the AI should always choose this. base = 1 } } # Duck and roll. option = { name = harm.0511.b trigger = { OR = { has_trait = brave has_trait_xp = { trait = tourney_participant track = horse value >= 75 } has_trait_xp = { trait = lifestyle_hunter track = hunter value >= 75 } } } trait = brave trait = tourney_participant trait = lifestyle_hunter custom_tooltip = harm.0000.tt.no_permanent_damage # Always gain stress from trait opt-outs. stress_impact = { base = massive_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # The AI should essentially always take this option. base = 1000 } } # Take it on the shoulder. option = { name = harm.0511.c trigger = { martial >= @random_harm_standard_skill_check_value } skill = martial random_list = { # You aren't permanently hurt. 0 = { modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.0511.c.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.0511.c.tt.success left_icon = root custom_tooltip = harm.0000.tt.no_permanent_damage } } # The experience leaves you feeble. 0 = { modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.0511.c.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.0511.c.tt.failure left_icon = root upgrade_infirm_to_incapable_effect = yes create_character_memory = { type = became_incapable_generic } } } } # Always gain stress from skill tests. stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # The AI should take this option if a better one isn't available. base = 100 } } } # Attached foreboding event. harm.0512 = { type = character_event title = harm.0512.t desc = harm.0512.desc theme = physical_health left_portrait = { character = root animation = jockey_walk camera = camera_event_horse_left } override_background = { reference = wilderness } trigger = { # Standard checks. is_available_adult = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_0512 } # Are we expected to ride a horse regularly? harm_0511_rides_horses_trigger = yes } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } } immediate = { # Flag this event as taken for the follow-up. add_character_flag = had_event_harm_0512 } # Heh, not letting #EMP that#! happen again. option = { name = harm.0512.a # Foreshadow. custom_tooltip = harm.0512.a.tt stress_impact = { base = medium_stress_impact_loss } ai_chance = { # Only one option, so what we do is unimportant. base = 1 } } after = { # Random chance of immediately skipping on to the following event in a few years. hidden_effect = { random = { chance = 50 trigger_event = { id = harm.0511 years = { 2 4 } } } } } } ################################################## # Gurgling & Grasping # by Ewan Cowhig Croft # 0521 - 0530 ################################################## scripted_trigger harm_0521_has_waterside_capital_trigger = { location = { OR = { is_sea_province = yes # Now we check for county so that your capital barony doesn't have to be literally _on_ the sea. county ?= { OR = { is_coastal_county = yes is_riverside_county = yes } } } } } scripted_trigger harm_0521_cultural_tradition_encourages_swimming_trigger = { culture = { OR = { has_cultural_parameter = next_level_trade_ports has_cultural_parameter = maritime_mercantilism_coastal_holdings has_cultural_parameter = trade_ports_stationed_maa_bonus has_cultural_parameter = trade_ports_enabled_for_tribals has_cultural_parameter = coastal_holdings_give_defensive_bonus has_cultural_parameter = trade_ports_give_control_growth has_cultural_parameter = trade_ports_give_levies } } } # Whilst at sea, you fall overboard and drown long enough to endanger your brain. harm.0521 = { type = character_event title = harm.0521.t desc = { first_valid = { triggered_desc = { trigger = { location = { is_sea_province = yes } } desc = harm.0521.desc.sea } triggered_desc = { trigger = { location.county = { is_riverside_county = yes } } desc = harm.0521.desc.river } desc = harm.0521.desc.coastal } desc = harm.0521.desc.outro } theme = physical_health left_portrait = { character = root animation = fear } override_background = { reference = fp1_ocean } trigger = { # Standard checks. is_available_adult = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_0521 } has_character_flag = had_event_harm_0522 # Do we have an opportunity to drown? harm_0521_has_waterside_capital_trigger = yes } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } } immediate = { # We don't want to see this event twice. add_character_flag = had_event_harm_0521 # Give a little protection against spam. harm_0000_apply_dynastic_cooldowns_effect = yes } # A rope, a net, a plank, something! option = { name = harm.0521.a random_list = { # You aren't permanently hurt. 0 = { modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.0521.a.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.0521.a.tt.success left_icon = root custom_tooltip = harm.0000.tt.no_permanent_damage } } # The experience leaves you feeble. 0 = { modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.0521.a.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.0521.a.tt.failure left_icon = root upgrade_infirm_to_incapable_effect = yes create_character_memory = { type = became_incapable_generic } } } } stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # Unless they've got a special option, the AI should always choose this. base = 1 } } # Break for the surface! option = { name = harm.0521.b trigger = { OR = { # Strong swimmers. has_trait = athletic # Not their first time falling overboard. AND = { has_trait = viking can_raid_across_water_trigger = yes } # Has some cultural affinity for the water. harm_0521_cultural_tradition_encourages_swimming_trigger = yes } } trait = athletic trait = viking if = { limit = { harm_0521_cultural_tradition_encourages_swimming_trigger = yes } custom_tooltip = harm.0521.b.tt.unlocked_by_cultrad } custom_tooltip = harm.0000.tt.no_permanent_damage # Always gain stress from trait opt-outs. stress_impact = { base = massive_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # The AI should essentially always take this option. base = 1000 } } # Swim, #EMP swim#!! option = { name = harm.0521.c trigger = { prowess >= @random_harm_standard_skill_check_value } skill = prowess random_list = { # You aren't permanently hurt. 0 = { modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.0521.c.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.0521.c.tt.success left_icon = root custom_tooltip = harm.0000.tt.no_permanent_damage } } # The experience leaves you feeble. 0 = { modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.0521.c.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.0521.c.tt.failure left_icon = root upgrade_infirm_to_incapable_effect = yes create_character_memory = { type = became_incapable_generic } } } } # Always gain stress from skill tests. stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # The AI should take this option if a better one isn't available. base = 100 } } } # Attached foreboding event. harm.0522 = { type = character_event title = harm.0522.t desc = { first_valid = { triggered_desc = { trigger = { location = { is_sea_province = yes } } desc = harm.0522.desc.sea } triggered_desc = { trigger = { location.county = { is_riverside_county = yes } } desc = harm.0522.desc.river } desc = harm.0522.desc.coastal } desc = harm.0522.desc.outro } theme = physical_health left_portrait = { character = root animation = admiration } override_background = { reference = fp1_ocean } trigger = { # Standard checks. is_available_adult_or_is_commanding = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_0522 } # Do we have an opportunity to drown? harm_0521_has_waterside_capital_trigger = yes } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } } immediate = { # Flag this event as taken for the follow-up. add_character_flag = had_event_harm_0522 } # The water is almost hypnotic... option = { name = harm.0522.a # Foreshadow. custom_tooltip = harm.0522.a.tt stress_impact = { base = medium_stress_impact_loss } ai_chance = { # Only one option, so what we do is unimportant. base = 1 } } after = { # Random chance of immediately skipping on to the following event in a few years. hidden_effect = { random = { chance = 50 trigger_event = { id = harm.0521 years = { 2 4 } } } } } } ################################################## # The World Slipping # by Ewan Cowhig Croft # 0531 - 0540 ################################################## # Struck down by a stroke. harm.0531 = { type = character_event title = harm.0531.t desc = harm.0531.desc theme = physical_health left_portrait = { character = root animation = pain } lower_right_portrait = scope:medic override_background = { reference = sitting_room } trigger = { # Standard checks. is_available_adult = yes # Medicine checks. character_can_easily_self_treat_trigger = no # Harm filter checks. NOT = { has_character_flag = had_event_harm_0531 } has_character_flag = had_event_harm_0532 # Are you at a health risk? OR = { # Due to blood pressure... potential_victim_of_apoplexy_trigger = yes # ... or just age. age_ranked_health_vulnerability_threshold_trigger = yes } } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Plus some other factors apply. modifier = { add = 0.25 potential_victim_of_apoplexy_trigger = yes } } immediate = { # We don't want to see this event twice. add_character_flag = had_event_harm_0531 # Give a little protection against spam. harm_0000_apply_dynastic_cooldowns_effect = yes # Try to grab our court physician. harm_0000_grab_available_court_physician_effect = { PERSONAL_SKILL = learning } } # My mind is... on #EMP fire#!... option = { name = harm.0531.a random_list = { # You aren't permanently hurt. 0 = { modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.0531.a.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.0531.a.tt.success left_icon = root custom_tooltip = harm.0000.tt.no_permanent_damage } } # The experience leaves you feeble. 0 = { modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.0531.a.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.0531.a.tt.failure left_icon = root upgrade_infirm_to_incapable_effect = yes create_character_memory = { type = became_incapable_generic } } } } stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # Unless they've got a special option, the AI should always choose this. base = 1 } } # I know myself, and this will pass. option = { name = harm.0531.b trigger = { has_trait = whole_of_body } trait = whole_of_body custom_tooltip = harm.0000.tt.no_permanent_damage # Always gain stress from trait opt-outs. stress_impact = { base = massive_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # The AI should essentially always take this option. base = 1000 } } # Call for your physic. option = { name = harm.0000.tt.physician trigger = { exists = scope:medic scope:medic.learning >= @court_medic_able_to_help_value } show_as_unavailable = { scope:medic.learning < @court_medic_able_to_help_value } # Random roll & stress handled in this effect. harm_0000_physic_rescue_chance_incapable_effect = yes ai_chance = { # The AI should take this option if a better one isn't available. base = 10 } } # HealthGodName, give me strength. option = { name = harm.0531.c trigger = { learning >= @random_harm_standard_skill_check_value } skill = learning random_list = { # You aren't permanently hurt. 0 = { modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.0531.c.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.0531.c.tt.success left_icon = root custom_tooltip = harm.0000.tt.no_permanent_damage } } # The experience leaves you feeble. 0 = { modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.0531.c.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.0531.c.tt.failure left_icon = root upgrade_infirm_to_incapable_effect = yes create_character_memory = { type = became_incapable_generic } } } } # Always gain stress from skill tests. stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # The AI should take this option if a better one isn't available. base = 100 } } } # Attached foreboding event. harm.0532 = { type = character_event title = harm.0532.t desc = harm.0532.desc theme = physical_health left_portrait = { character = root animation = stress } override_background = { reference = sitting_room } trigger = { # Standard checks. is_available_adult = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_0532 } # Are you at a health risk? OR = { # Due to blood pressure... potential_victim_of_apoplexy_trigger = yes # ... or just age. age_ranked_health_vulnerability_threshold_trigger = yes } } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Plus some other factors apply. modifier = { add = 0.25 potential_victim_of_apoplexy_trigger = yes } } immediate = { # Flag this event as taken for the follow-up. add_character_flag = had_event_harm_0532 } # These infernal headaches, will they never cease? option = { name = harm.0532.a # Foreshadow. custom_tooltip = harm.0532.a.tt stress_impact = { base = medium_stress_impact_gain } ai_chance = { # Only one option, so what we do is unimportant. base = 1 } } after = { # Random chance of immediately skipping on to the following event in a few years. hidden_effect = { random = { chance = 50 trigger_event = { id = harm.0531 years = { 2 4 } } } } } } ################################################## # Chilled to the Bones # by Ewan Cowhig Croft # 0541 - 0550 ################################################## # Is the winter here bad enough to hurt someone of your age? scripted_trigger harm_0541_bad_winter_trigger = { OR = { AND = { OR = { # Adults. age >= 55 # Young children. child_not_teen_trigger = yes } location = { has_province_modifier = winter_harsh_modifier } } AND = { OR = { # Adults. age >= 65 # Very young children. child_is_infant_trigger = yes } location = { has_province_modifier = winter_normal_modifier } } } # Now check our health. trigger_if = { limit = { is_adult = yes } age_ranked_health_vulnerability_threshold_trigger = yes } trigger_else = { health <= medium_health } } # Are you paying enough in court amenity costs to have people who'd notice and help whilst there's still time? scripted_trigger harm_0541_saved_by_court_amenities_trigger = { has_royal_court = yes # We'll take either lodgings or servants. OR = { amenity_level = { target = court_lodging_standards value >= 3 } amenity_level = { target = court_servants value >= 3 } } } # Crippling arthritis, chiefly in colder regions, can hurt the elderly whilst the young freeze to death. harm.0541 = { type = character_event title = harm.0541.t desc = { first_valid = { triggered_desc = { trigger = { child_is_infant_trigger = yes } desc = harm.0541.desc.baby } desc = harm.0541.desc.fallback } } theme = physical_health left_portrait = { character = root animation = pain outfit_tags = { nightgown } } override_background = { reference = bedchamber } trigger = { # Standard checks. is_available_adult = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_0541 } ## Exemption here so that babies can still freeze to death every now and then. OR = { has_character_flag = had_event_harm_0542 child_is_infant_trigger = yes } # Check winter + age stuff. harm_0541_bad_winter_trigger = yes # Lastly, are you paying other people to deal with this who should notice? harm_0541_saved_by_court_amenities_trigger = no } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # If your body is poorly set up, then you're more accutely vulnerable. modifier = { add = 0.25 has_weak_physical_health_traits_trigger = yes } } immediate = { # We don't want to see this event twice. add_character_flag = had_event_harm_0541 # Give a little protection against spam. harm_0000_apply_dynastic_cooldowns_effect = yes } # ... option = { name = harm.0541.a random_list = { # You aren't permanently hurt. 0 = { modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.0541.a.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.0541.a.tt.success left_icon = root custom_tooltip = harm.0000.tt.no_permanent_damage } } # The experience leaves you feeble. 0 = { modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.0541.a.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.0541.a.tt.failure left_icon = root # Infants are at extra risk. if = { limit = { child_is_infant_trigger = yes } death = { death_reason = death_froze } log_harm_event_death_as_variable_effect = yes } # Though everyone else isn't having a _great_ time. else = { upgrade_infirm_to_incapable_effect = yes create_character_memory = { type = became_incapable_generic } } } } } stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # Unless they've got a special option, the AI should always choose this. base = 1 } } # I've faced worse than this. option = { name = harm.0541.b trigger = { OR = { has_trait = winter_soldier has_trait = stubborn } } trait = winter_soldier trait = stubborn custom_tooltip = harm.0000.tt.no_permanent_damage # Always gain stress from trait opt-outs. stress_impact = { base = massive_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # The AI should essentially always take this option. base = 1000 } } # I will not be laid low by #EMP frost#!! option = { name = harm.0541.c trigger = { prowess >= @random_harm_standard_skill_check_value } skill = prowess random_list = { # You aren't permanently hurt. 0 = { modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.0541.c.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.0541.c.tt.success left_icon = root custom_tooltip = harm.0000.tt.no_permanent_damage } } # The experience leaves you feeble. 0 = { modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.0541.c.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.0541.c.tt.failure left_icon = root upgrade_infirm_to_incapable_effect = yes create_character_memory = { type = became_incapable_generic } } } } # Always gain stress from skill tests. stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # The AI should take this option if a better one isn't available. base = 100 } } } # Attached foreboding event. harm.0542 = { type = character_event title = harm.0542.t desc = { first_valid = { triggered_desc = { trigger = { child_is_infant_trigger = yes } desc = harm.0542.desc.baby } desc = harm.0542.desc.fallback } } theme = physical_health left_portrait = { character = root animation = stress outfit_tags = { nightgown } } override_background = { reference = bedchamber } trigger = { # Standard checks. is_available_adult = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_0542 } # Check winter + age stuff. harm_0541_bad_winter_trigger = yes # Lastly, are you paying other people to deal with this who should notice? harm_0541_saved_by_court_amenities_trigger = no } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # If your body is poorly set up, then you're more accutely vulnerable. modifier = { add = 0.25 has_weak_physical_health_traits_trigger = yes } } immediate = { # Flag this event as taken for the follow-up. add_character_flag = had_event_harm_0542 } # I so wish it were warmer... option = { name = harm.0542.a # Foreshadow. custom_tooltip = harm.0542.a.tt # No stress. Yet. ai_chance = { # Only one option, so what we do is unimportant. base = 1 } } after = { # Random chance of immediately skipping on to the following event in a few years. hidden_effect = { random = { chance = 50 trigger_event = { id = harm.0541 years = { 2 4 } } } } } } ################################################## # A Thud & A Snap # by Ewan Cowhig Croft # 0551 - 0560 ################################################## scripted_trigger harm_0551_child_might_be_outside_trigger = { # Must have sufficient health that they're outside. health >= medium_health has_short_disease_trigger = no NOT = { has_trait_with_flag = debilitating_illness } } scripted_trigger harm_0551_child_location_has_trees_trigger = { location = { OR = { terrain = drylands terrain = farmlands terrain = floodplains terrain = forest terrain = hills terrain = jungle terrain = mountains terrain = oasis terrain = plains terrain = taiga terrain = wetlands } } } # A child falls from a tree. harm.0551 = { type = character_event title = harm.0551.t desc = harm.0551.desc theme = physical_health left_portrait = { character = root animation = fear } override_background = { reference = wilderness } trigger = { # Standard checks. is_available = yes child_not_infant_trigger = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_0551 } has_character_flag = had_event_harm_0552 # Do we have trees to climb? harm_0551_child_location_has_trees_trigger = yes # Would this child actually attempt this? harm_0551_child_might_be_outside_trigger = yes } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Plus some other factors apply. modifier = { add = 0.25 OR = { has_trait = rowdy has_trait = brave } } } immediate = { # We don't want to see this event twice. add_character_flag = had_event_harm_0551 # Give a little protection against spam. harm_0000_apply_dynastic_cooldowns_effect = yes } # Just... gotta be careful... option = { name = harm.0551.a random_list = { # You aren't permanently hurt. 0 = { modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.0551.a.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.0551.a.tt.success left_icon = root custom_tooltip = harm.0000.tt.no_permanent_damage } } # The experience leaves you feeble. 0 = { modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.0551.a.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.0551.a.tt.failure left_icon = root upgrade_infirm_to_incapable_effect = yes create_character_memory = { type = became_incapable_generic } } } } stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # Unless they've got a special option, the AI should always choose this. base = 1 } } # Help. Help! HELP! option = { name = harm.0551.b trigger = { OR = { has_trait = craven has_trait = pensive } } trait = craven trait = pensive custom_tooltip = harm.0000.tt.no_permanent_damage # Always gain stress from trait opt-outs. stress_impact = { base = massive_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # The AI should essentially always take this option. base = 1000 } } # How hard can it be? option = { name = harm.0551.c trigger = { prowess >= @random_harm_easy_skill_check_value } skill = prowess random_list = { # You aren't permanently hurt. 0 = { modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.0551.c.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.0551.c.tt.success left_icon = root custom_tooltip = harm.0000.tt.no_permanent_damage } } # The experience leaves you feeble. 0 = { modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.0551.c.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.0551.c.tt.failure left_icon = root upgrade_infirm_to_incapable_effect = yes create_character_memory = { type = became_incapable_generic } } } } # Always gain stress from skill tests. stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # The AI should take this option if a better one isn't available. base = 100 } } } # Attached foreboding event. harm.0552 = { type = character_event title = harm.0552.t desc = harm.0552.desc theme = physical_health left_portrait = { character = root animation = happiness } override_background = { reference = wilderness } trigger = { # Standard checks. is_available = yes child_not_infant_trigger = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_0552 } # Do we have trees to climb? harm_0551_child_location_has_trees_trigger = yes # Would this child actually attempt this? harm_0551_child_might_be_outside_trigger = yes } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Plus some other factors apply. modifier = { add = 0.25 OR = { has_trait = rowdy has_trait = brave } } } immediate = { # Flag this event as taken for the follow-up. add_character_flag = had_event_harm_0552 } # What fun! option = { name = harm.0552.a # Foreshadow. custom_tooltip = harm.0552.a.tt stress_impact = { base = medium_stress_impact_loss } ai_chance = { # Only one option, so what we do is unimportant. base = 1 } } after = { # Random chance of immediately skipping on to the following event in a few years. hidden_effect = { random = { chance = 50 trigger_event = { id = harm.0551 years = { 2 4 } } } } } } ################################################## # The Descent # by Ewan Cowhig Croft # 0561 - 0570 ################################################## # An old person falls down some stairs. harm.0561 = { type = character_event title = harm.0561.t desc = { first_valid = { triggered_desc = { trigger = { has_government = landless_adventurer_government } desc = harm.0561.desc_adventurer } desc = harm.0561.desc } } theme = physical_health left_portrait = { character = root animation = fear } override_background = { reference = corridor_day } trigger = { # Standard checks. is_available_adult = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_0561 } has_character_flag = had_event_harm_0562 # Health checks. age_ranked_health_vulnerability_threshold_trigger = yes # Do you have lots of stairs to walk down? location_has_multi_story_buildings_trigger = { LOCATION = root.location } } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } } immediate = { # We don't want to see this event twice. add_character_flag = had_event_harm_0561 # Give a little protection against spam. harm_0000_apply_dynastic_cooldowns_effect = yes } # Oh — wait — NOO- option = { name = harm.0561.a random_list = { # You aren't permanently hurt. 0 = { modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.0561.a.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.0561.a.tt.success left_icon = root custom_tooltip = harm.0000.tt.no_permanent_damage } } # The experience leaves you feeble. 0 = { modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.0561.a.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.0561.a.tt.failure left_icon = root upgrade_infirm_to_incapable_effect = yes create_character_memory = { type = became_incapable_generic } } } } stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # Unless they've got a special option, the AI should always choose this. base = 1 } } # One foot in front of the other, stay calm. option = { name = harm.0561.b trigger = { OR = { has_trait = diligent has_trait = patient } } trait = diligent trait = patient custom_tooltip = harm.0000.tt.no_permanent_damage # Always gain stress from trait opt-outs. stress_impact = { base = massive_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # The AI should essentially always take this option. base = 1000 } } # They're just #EMP stairs#!. option = { name = { trigger = { is_landless_adventurer = no } text = harm.0561.c } name = { trigger = { has_government = landless_adventurer_government } text = harm.0561.c.adventurer } trigger = { prowess >= @random_harm_standard_skill_check_value } skill = prowess random_list = { # You aren't permanently hurt. 0 = { modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.0561.c.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.0561.c.tt.success left_icon = root custom_tooltip = harm.0000.tt.no_permanent_damage } } # The experience leaves you feeble. 0 = { modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.0561.c.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.0561.c.tt.failure left_icon = root upgrade_infirm_to_incapable_effect = yes create_character_memory = { type = became_incapable_generic } } } } # Always gain stress from skill tests. stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # The AI should take this option if a better one isn't available. base = 100 } } } # Attached foreboding event. harm.0562 = { type = character_event title = harm.0562.t desc = { first_valid = { triggered_desc = { trigger = { has_government = landless_adventurer_government } desc = harm.0562.desc_adventurer } desc = harm.0562.desc } } theme = physical_health left_portrait = { character = root animation = worry } override_background = { reference = corridor_day } trigger = { # Standard checks. is_available_adult = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_0562 } # Health checks. age_ranked_health_vulnerability_threshold_trigger = yes # Do you have lots of stairs to walk down? location_has_multi_story_buildings_trigger = { LOCATION = root.location } } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } } immediate = { # Flag this event as taken for the follow-up. add_character_flag = had_event_harm_0562 } # Troubling. option = { name = harm.0562.a # Foreshadow. custom_tooltip = harm.0562.a.tt # No stress. Yet. ai_chance = { # Only one option, so what we do is unimportant. base = 1 } } after = { # Random chance of immediately skipping on to the following event in a few years. hidden_effect = { random = { chance = 50 trigger_event = { id = harm.0561 years = { 2 4 } } } } } } ################################################## # A Trip During Training # by Ewan Cowhig Croft # 0571 - 0580 ################################################## scripted_trigger harm_0571_suitable_sparring_partner_trigger = { prowess <= root.prowess calc_true_if = { amount >= 3 # People who suck as knights are dangerous to fight with. prowess <= low_skill_rating # If you're quite skilled and they're quite bad, then their thinking is lateral enough to pose a bit of a risk. AND = { root.prowess >= very_high_skill_rating prowess <= mediocre_skill_rating } # Various traits make you less predictable or more furiously uncontrolled. has_trait = wrathful has_trait = deceitful has_trait = ambitious has_trait = arbitrary has_trait = cynical has_trait = callous has_trait = sadistic has_trait = stubborn has_trait = vengeful # Plus never rule out malice. opinion = { target = root value <= high_negative_opinion } } } # A fighting ruler is whacked on the bonce whilst training. harm.0571 = { type = character_event title = harm.0571.t desc = harm.0571.desc theme = physical_health left_portrait = { character = root animation = fear } right_portrait = { character = scope:sparring_partner animation = aggressive_sword } override_background = { reference = courtyard } trigger = { # Standard checks. is_available_adult = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_0571 } has_character_flag = had_event_harm_0572 # Craven and lazy characters generally won't be in this situation. NOR = { has_trait = craven has_trait = lazy } # Must be expected to train. NOT = { has_trait = blind } can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = root } # And you need someone who's over-eager. any_knight = { harm_0571_suitable_sparring_partner_trigger = yes } } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Plus some other factors apply. modifier = { add = 0.25 has_trait = brave } } immediate = { # We don't want to see this event twice. add_character_flag = had_event_harm_0571 # Give a little protection against spam. harm_0000_apply_dynastic_cooldowns_effect = yes # Is our last guy still valid? if = { limit = { OR = { NOT = { exists = scope:sparring_partner } scope:sparring_partner ?= { harm_0571_suitable_sparring_partner_trigger = no } } } # Ok, if they're not, grab a new one. ordered_knight = { limit = { harm_0571_suitable_sparring_partner_trigger = yes } # Get our worst knight. order_by = { value = prowess multiply = -1 } save_scope_as = sparring_partner } } } # By TricksterGodName, you fool, that was my head! option = { name = harm.0571.a random_list = { # You aren't permanently hurt. 0 = { modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.0571.a.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.0571.a.tt.success left_icon = root custom_tooltip = harm.0000.tt.no_permanent_damage } } # The experience leaves you feeble. 0 = { modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.0571.a.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.0571.a.tt.failure left_icon = root upgrade_infirm_to_incapable_effect = yes create_character_memory = { type = became_incapable_generic } } } } stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # Unless they've got a special option, the AI should always choose this. base = 1 } } # Barely a scratch. option = { name = harm.0571.b trigger = { has_trait = stubborn } trait = stubborn custom_tooltip = harm.0000.tt.no_permanent_damage # Always gain stress from trait opt-outs. stress_impact = { base = massive_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # The AI should essentially always take this option. base = 1000 } } # Breath — it could be worse. option = { name = harm.0571.c trigger = { prowess >= @random_harm_standard_skill_check_value } skill = prowess random_list = { # You aren't permanently hurt. 0 = { modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.0571.c.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.0571.c.tt.success left_icon = root custom_tooltip = harm.0000.tt.no_permanent_damage } } # The experience leaves you feeble. 0 = { modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.0571.c.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.0571.c.tt.failure left_icon = root upgrade_infirm_to_incapable_effect = yes create_character_memory = { type = became_incapable_generic } } } } # Always gain stress from skill tests. stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # The AI should take this option if a better one isn't available. base = 100 } } } # Attached foreboding event. harm.0572 = { type = character_event title = harm.0572.t desc = harm.0572.desc theme = physical_health left_portrait = { character = root animation = sword_yield_start } right_portrait = { character = scope:sparring_partner animation = aggressive_sword } override_background = { reference = courtyard } trigger = { # Standard checks. is_available_adult = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_0572 } # Craven and lazy characters generally won't be in this situation. NOR = { has_trait = craven has_trait = lazy } # Must be expected to train. NOT = { has_trait = blind } can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = root } # And you need someone who's over-eager. any_knight = { harm_0571_suitable_sparring_partner_trigger = yes } } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Plus some other factors apply. modifier = { add = 0.25 has_trait = brave } } immediate = { # Flag this event as taken for the follow-up. add_character_flag = had_event_harm_0572 # Save a sparring partner. ordered_knight = { limit = { harm_0571_suitable_sparring_partner_trigger = yes } # Get our worst knight. order_by = { value = prowess multiply = -1 } save_scope_as = sparring_partner } } # Be careful, you lout! option = { name = harm.0572.a # Foreshadow. custom_tooltip = harm.0572.a.tt # No stress. Yet. ai_chance = { # Only one option, so what we do is unimportant. base = 1 } } after = { # Random chance of immediately skipping on to the following event in a few years. hidden_effect = { random = { chance = 50 trigger_event = { id = harm.0571 years = { 2 4 } } } } } } ################################################## # Slippery when Wet # by Ewan Cowhig Croft # 0581 - 0590 ################################################## # Slipping getting out of the tub. harm.0581 = { type = character_event title = harm.0581.t desc = harm.0581.desc theme = physical_health left_portrait = { character = root animation = shock } override_background = { reference = relaxing_room } trigger = { # Standard checks. is_available_adult = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_0581 } has_character_flag = had_event_harm_0582 # Medieval mores being what they were, some characters are just never going to have a private bath. NOT = { has_trait = gregarious } } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Some characters are more likely to take baths. modifier = { add = 0.25 OR = { has_trait = lazy has_perk = wash_your_hands_perk has_character_modifier = fp1_bathing_health_modifier has_character_modifier = fp1_bathing_attraction_modifier } } } immediate = { # We don't want to see this event twice. add_character_flag = had_event_harm_0581 # Give a little protection against spam. harm_0000_apply_dynastic_cooldowns_effect = yes add_character_flag = { flag = is_naked days = 30 } } # Wait, FateGodName, n— option = { name = harm.0581.a random_list = { # You aren't permanently hurt. 0 = { modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.0581.a.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.0581.a.tt.success left_icon = root custom_tooltip = harm.0000.tt.no_permanent_damage } } # The experience leaves you feeble. 0 = { modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.0581.a.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.0581.a.tt.failure left_icon = root upgrade_infirm_to_incapable_effect = yes create_character_memory = { type = became_incapable_generic } } } } stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # Unless they've got a special option, the AI should always choose this. base = 1 } } # Take it slow, take it safe. option = { name = harm.0581.b trigger = { OR = { has_trait = diligent has_trait = craven has_trait = patient } } trait = diligent trait = craven trait = patient custom_tooltip = harm.0000.tt.no_permanent_damage # Always gain stress from trait opt-outs. stress_impact = { base = massive_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # The AI should essentially always take this option. base = 1000 } } after = { remove_character_flag = is_naked } } # Attached foreboding event. harm.0582 = { type = character_event title = harm.0582.t desc = harm.0582.desc theme = physical_health left_portrait = { character = root animation = personality_bold } override_background = { reference = relaxing_room } trigger = { # Standard checks. is_available_adult = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_0582 } # Medieval mores being what they were, some characters are just never going to have a private bath. NOT = { has_trait = gregarious } } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Some characters are more likely to take baths. modifier = { add = 0.25 OR = { has_trait = lazy has_perk = wash_your_hands_perk has_character_modifier = fp1_bathing_health_modifier has_character_modifier = fp1_bathing_attraction_modifier } } } immediate = { # Flag this event as taken for the follow-up. add_character_flag = had_event_harm_0582 add_character_flag = { flag = is_naked days = 30 } } # I should be more careful, I suppose. option = { name = harm.0582.a # Foreshadow. custom_tooltip = harm.0582.a.tt # No stress. Yet. ai_chance = { # Only one option, so what we do is unimportant. base = 1 } } after = { # Random chance of immediately skipping on to the following event in a few years. hidden_effect = { random = { chance = 50 trigger_event = { id = harm.0581 years = { 2 4 } } } } remove_character_flag = is_naked } } ################################################## # Death from Above # by Ewan Cowhig Croft # 0591 - 0600 ################################################## scripted_trigger harm_0591_likely_to_go_to_town_trigger = { # Shy'n'lazy characters don't bother going out. NOR = { has_trait = shy has_trait = lazy # Humble characters _do_ go out, but the tone is narratively inconsistent for them, so we avoid it. has_trait = humble } } # A peasant's falling pot leaves you incapable. harm.0591 = { type = character_event title = harm.0591.t desc = harm.0591.desc theme = physical_health left_portrait = { character = root animation = jockey_walk camera = camera_event_horse_left } override_background = { reference = alley_day } trigger = { # Standard checks. is_available_adult = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_0591 } has_character_flag = had_event_harm_0592 # Would they be out for this? harm_0591_likely_to_go_to_town_trigger = yes # Town location = { OR = { has_holding_type = city_holding has_holding_type = castle_holding has_holding_type = church_holding } } } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Plus some other factors apply. modifier = { add = 0.25 has_trait = gregarious } } immediate = { # We don't want to see this event twice. add_character_flag = had_event_harm_0591 # Give a little protection against spam. harm_0000_apply_dynastic_cooldowns_effect = yes } # Throw yourself to the side. option = { name = harm.0591.a random_list = { # You aren't permanently hurt. 0 = { modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.0591.a.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.0591.a.tt.success left_icon = root custom_tooltip = harm.0000.tt.no_permanent_damage } } # The experience leaves you feeble. 0 = { modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.0591.a.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.0591.a.tt.failure left_icon = root upgrade_infirm_to_incapable_effect = yes create_character_memory = { type = became_incapable_generic } } } } stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # Unless they've got a special option, the AI should always choose this. base = 1 } } # #EMP Am I never safe?!!#! option = { name = harm.0591.b flavor = harm.0591.b.tt trigger = { OR = { has_trait = craven has_trait = paranoid } } trait = craven trait = paranoid custom_tooltip = harm.0000.tt.no_permanent_damage # Always gain stress from trait opt-outs. stress_impact = { base = massive_stress_impact_gain calm = minor_stress_impact_loss # Paranoid characters get reduced stress loss so that they don't get nuts just for taking their opt-out. paranoid = major_stress_loss } ai_chance = { # The AI should essentially always take this option. base = 1000 } } # I'm already moving. option = { name = harm.0591.c trigger = { intrigue >= @random_harm_standard_skill_check_value } skill = intrigue random_list = { # You aren't permanently hurt. 0 = { modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.0591.c.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.0591.c.tt.success left_icon = root custom_tooltip = harm.0000.tt.no_permanent_damage } } # The experience leaves you feeble. 0 = { modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.0591.c.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.0591.c.tt.failure left_icon = root upgrade_infirm_to_incapable_effect = yes create_character_memory = { type = became_incapable_generic } } } } # Always gain stress from skill tests. stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # The AI should take this option if a better one isn't available. base = 100 } } } # Attached foreboding event. harm.0592 = { type = character_event title = harm.0592.t desc = harm.0592.desc theme = physical_health left_portrait = { character = root animation = jockey_idle camera = camera_event_horse_left } override_background = { reference = alley_day } trigger = { # Standard checks. is_available_adult = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_0592 } # Would they be out for this? harm_0591_likely_to_go_to_town_trigger = yes } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Plus some other factors apply. modifier = { add = 0.25 has_trait = gregarious } } immediate = { # Flag this event as taken for the follow-up. add_character_flag = had_event_harm_0592 } # These #EMP peasants#!. option = { name = harm.0592.a # Foreshadow. custom_tooltip = harm.0592.a.tt # No stress. Yet. ai_chance = { # Only one option, so what we do is unimportant. base = 1 } } after = { # Random chance of immediately skipping on to the following event in a few years. hidden_effect = { random = { chance = 50 trigger_event = { id = harm.0591 years = { 2 4 } } } } } } ################################################## # What's the Harm? # by Ewan Cowhig Croft # 0601 - 0610 ################################################## scripted_trigger harm_0601_valid_playmate_trigger = { is_available = yes child_not_infant_trigger = yes # Must be within certain bounds. ## Not too young. age >= { value = root.age add = -5 } ## Not too old. age <= { value = root.age add = 5 } NOR = { has_trait = pensive has_trait = craven has_trait = compassionate } opinion = { target = root value >= 1 } } scripted_effect harm_0601_grab_valid_playmate_effect = { random_courtier = { limit = { harm_0601_valid_playmate_trigger = yes OR = { has_trait = callous has_trait = sadistic has_trait = wrathful } } alternative_limit = { harm_0601_valid_playmate_trigger = yes has_trait = rowdy } alternative_limit = { harm_0601_valid_playmate_trigger = yes } save_scope_as = playmate } } # Children playing goes horribly wrong. harm.0601 = { type = character_event title = harm.0601.t desc = harm.0601.desc theme = physical_health left_portrait = { character = root animation = pain } right_portrait = { character = scope:playmate animation = fear } override_background = { reference = corridor_day } trigger = { # Standard checks. is_available = yes child_not_infant_trigger = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_0601 } has_character_flag = had_event_harm_0602 # Some traits stop this happening. NOR = { # Craven children give up earlier and are thus safe. has_trait = craven # Paranoid children fear some trick earlier, and are thus also safe. has_trait = paranoid } # And someone to play rough with. any_courtier = { harm_0601_valid_playmate_trigger = yes } } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Plus some other factors apply. modifier = { add = 0.25 OR = { has_trait = rowdy has_trait = brave } } } immediate = { # We don't want to see this event twice. add_character_flag = had_event_harm_0601 # Give a little protection against spam. harm_0000_apply_dynastic_cooldowns_effect = yes # Pick a new playmate if our old one isn't valid. if = { limit = { OR = { NOT = { exists = scope:playmate } scope:playmate ?= { harm_0601_valid_playmate_trigger = no } } } harm_0601_grab_valid_playmate_effect = yes } } # I... don't feel so good... option = { name = harm.0601.a random_list = { # You aren't permanently hurt. 0 = { modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.0601.a.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.0601.a.tt.success left_icon = root custom_tooltip = harm.0000.tt.no_permanent_damage } } # The experience leaves you feeble. 0 = { modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.0601.a.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.0601.a.tt.failure left_icon = root upgrade_infirm_to_incapable_effect = yes create_character_memory = { type = became_incapable_generic } } } } stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # Unless they've got a special option, the AI should always choose this. base = 1 } } } # Attached foreboding event. harm.0602 = { type = character_event title = harm.0602.t desc = harm.0602.desc theme = physical_health left_portrait = { character = root animation = admiration } right_portrait = { character = scope:playmate animation = happiness } override_background = { reference = corridor_day } trigger = { # Standard checks. is_available = yes child_not_infant_trigger = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_0602 } # Some traits stop this happening. NOR = { # Craven children give up earlier and are thus safe. has_trait = craven # Paranoid children fear some trick earlier, and are thus also safe. has_trait = paranoid } # And someone to play rough with. any_courtier = { harm_0601_valid_playmate_trigger = yes } } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Plus some other factors apply. modifier = { add = 0.25 OR = { has_trait = rowdy has_trait = brave } } } immediate = { # Flag this event as taken for the follow-up. add_character_flag = had_event_harm_0602 # Grab a playmate. harm_0601_grab_valid_playmate_effect = yes } # This is a great idea! option = { name = harm.0602.a # Foreshadow. custom_tooltip = harm.0602.a.tt # If relevant, let's set up a potential friendship. if = { limit = { can_set_relation_potential_friend_trigger = { CHARACTER = scope:playmate } } set_relation_potential_friend = scope:playmate } # No stress. Yet. ai_chance = { # Only one option, so what we do is unimportant. base = 1 } } after = { # Random chance of immediately skipping on to the following event in a few years. hidden_effect = { random = { chance = 50 trigger_event = { id = harm.0601 years = { 2 4 } } } } } } ################################################## # Dizzying Heights # by Ewan Cowhig Croft # 0611 - 0620 ################################################## # As a cripplingly feeble character, stand up way, way too fast. ## The term is orthostatic hypotension, and yes, if you're in poor health, it can and will absolutely killed you. harm.0611 = { type = character_event title = harm.0611.t desc = { desc = harm.0611.desc.intro first_valid = { triggered_desc = { trigger = { has_trait = blind } desc = harm.0611.desc.blind } desc = harm.0611.desc.fallback } } theme = physical_health left_portrait = { character = root animation = fear } lower_right_portrait = scope:medic override_background = { reference = sitting_room } trigger = { # Standard checks. is_available_adult = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_0611 } has_character_flag = had_event_harm_0612 # Does this type of thing pose a danger to you? OR = { has_weak_physical_health_traits_trigger = yes age_ranked_health_vulnerability_threshold_trigger = yes } } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } } immediate = { # We don't want to see this event twice. add_character_flag = had_event_harm_0611 # Give a little protection against spam. harm_0000_apply_dynastic_cooldowns_effect = yes # Try to grab our court physician. harm_0000_grab_available_court_physician_effect = { PERSONAL_SKILL = learning } } # Wait.. wha... my... option = { name = harm.0611.a random_list = { # You aren't permanently hurt. 0 = { modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.0611.a.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.0611.a.tt.success left_icon = root custom_tooltip = harm.0000.tt.no_permanent_damage } } # The experience leaves you feeble. 0 = { modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.0611.a.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.0611.a.tt.failure left_icon = root upgrade_infirm_to_incapable_effect = yes create_character_memory = { type = became_incapable_generic } } } } stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # Unless they've got a special option, the AI should always choose this. base = 1 } } # Grit your teeth against the rush. option = { name = harm.0611.b trigger = { has_trait = whole_of_body } trait = whole_of_body custom_tooltip = harm.0000.tt.no_permanent_damage # Always gain stress from trait opt-outs. stress_impact = { base = massive_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # The AI should essentially always take this option. base = 1000 } } # Call for your physic. option = { name = harm.0000.tt.physician trigger = { exists = scope:medic scope:medic.learning >= @court_medic_able_to_help_value } show_as_unavailable = { scope:medic.learning < @court_medic_able_to_help_value } # Random roll & stress handled in this effect. harm_0000_physic_rescue_chance_incapable_effect = yes ai_chance = { # The AI should take this option if a better one isn't available. base = 10 } } # Focus. Clarity. #EMP Focus#!. option = { name = harm.0611.c trigger = { learning >= @random_harm_standard_skill_check_value } skill = learning random_list = { # You aren't permanently hurt. 0 = { modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.0611.c.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.0611.c.tt.success left_icon = root custom_tooltip = harm.0000.tt.no_permanent_damage } } # The experience leaves you feeble. 0 = { modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.0611.c.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.0611.c.tt.failure left_icon = root upgrade_infirm_to_incapable_effect = yes create_character_memory = { type = became_incapable_generic } } } } # Always gain stress from skill tests. stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # The AI should take this option if a better one isn't available. base = 100 } } } # Attached foreboding event. harm.0612 = { type = character_event title = harm.0612.t desc = harm.0612.desc theme = physical_health left_portrait = { character = root animation = worry } override_background = { reference = sitting_room } trigger = { # Standard checks. is_available_adult = yes # Medicine checks. character_can_easily_self_treat_trigger = no NOT = { has_character_flag = had_event_harm_0612 } # Does this type of thing pose a danger to you? OR = { has_weak_physical_health_traits_trigger = yes age_ranked_health_vulnerability_threshold_trigger = yes } } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } } immediate = { # Flag this event as taken for the follow-up. add_character_flag = had_event_harm_0612 } # I'm still dizzy. option = { name = harm.0612.a # Foreshadow. custom_tooltip = harm.0612.a.tt # No stress. Yet. ai_chance = { # Only one option, so what we do is unimportant. base = 1 } } after = { # Random chance of immediately skipping on to the following event in a few years. hidden_effect = { random = { chance = 50 trigger_event = { id = harm.0611 years = { 2 4 } } } } } } ################################################## # A Jolly Good Time # by Ewan Cowhig Croft # 0621 - 0630 ################################################## scripted_trigger harm_0621_alcohol_problem_trigger = { OR = { has_trait = drunkard AND = { has_trait_xp = { trait = lifestyle_reveler value >= 50 } drinks_alcohol_trigger = yes } } } scripted_trigger harm_0621_social_drinker_trigger = { NOR = { has_trait = shy has_trait = reclusive } } # Drunken shenanigans. harm.0621 = { type = character_event title = harm.0621.t desc = harm.0621.desc theme = physical_health left_portrait = { character = root animation = fear } override_background = { trigger = { harm_0621_social_drinker_trigger = yes } reference = tavern } override_background = { trigger = { harm_0621_social_drinker_trigger = no } reference = bedchamber } trigger = { # Standard checks. is_available_adult = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_0621 } has_character_flag = had_event_harm_0622 # Must have something of an alcohol problem. harm_0621_alcohol_problem_trigger = yes } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } } immediate = { # We don't want to see this event twice. add_character_flag = had_event_harm_0621 # Give a little protection against spam. harm_0000_apply_dynastic_cooldowns_effect = yes } # *HIC*... *hic*... ... option = { name = harm.0621.a random_list = { # You aren't permanently hurt. 0 = { modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.0621.a.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.0621.a.tt.success left_icon = root custom_tooltip = harm.0000.tt.no_permanent_damage } } # The experience leaves you feeble. 0 = { modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.0621.a.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.0621.a.tt.failure left_icon = root upgrade_infirm_to_incapable_effect = yes create_character_memory = { type = became_incapable_generic } } } } stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # Unless they've got a special option, the AI should always choose this. base = 1 } } # Hehe, guess I'm gonna feel that in the morning. option = { name = harm.0621.b trigger = { OR = { has_trait = stubborn has_trait = gregarious } } trait = stubborn trait = gregarious custom_tooltip = harm.0000.tt.no_permanent_damage # Always gain stress from trait opt-outs. stress_impact = { base = massive_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # The AI should essentially always take this option. base = 1000 } } # Ooph, my head. That was a bad one, eh? option = { name = harm.0621.c trigger = { diplomacy >= @random_harm_standard_skill_check_value } skill = diplomacy random_list = { # You aren't permanently hurt. 0 = { modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.0621.c.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.0621.c.tt.success left_icon = root custom_tooltip = harm.0000.tt.no_permanent_damage } } # The experience leaves you feeble. 0 = { modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.0621.c.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.0621.c.tt.failure left_icon = root upgrade_infirm_to_incapable_effect = yes create_character_memory = { type = became_incapable_generic } } } } # Always gain stress from skill tests. stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # The AI should take this option if a better one isn't available. base = 100 } } } # Attached foreboding event. harm.0622 = { type = character_event title = harm.0622.t desc = harm.0622.desc theme = physical_health left_portrait = { character = root triggered_animation = { trigger = { NOR = { location.culture ?= { has_graphical_india_culture_group_trigger = yes } location.culture ?= { has_graphical_mena_culture_group_trigger = yes } location.culture ?= { has_building_gfx = iranian_building_gfx } location.culture ?= { has_graphical_african_culture_group_trigger = yes } location.culture ?= { has_graphical_steppe_culture_group_trigger = yes } } harm_0621_social_drinker_trigger = yes } animation = drink } animation = drink_goblet } override_background = { trigger = { harm_0621_social_drinker_trigger = yes } reference = tavern } override_background = { trigger = { harm_0621_social_drinker_trigger = no } reference = bedchamber } trigger = { # Standard checks. is_available_adult = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_0622 } # Must have some an alcohol problem. harm_0621_alcohol_problem_trigger = yes } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } } immediate = { # Flag this event as taken for the follow-up. add_character_flag = had_event_harm_0622 } # Life is good. option = { name = harm.0622.a # Foreshadow. custom_tooltip = harm.0622.a.tt # No stress. Yet. ai_chance = { # Only one option, so what we do is unimportant. base = 1 } } after = { # Random chance of immediately skipping on to the following event in a few years. hidden_effect = { random = { chance = 50 trigger_event = { id = harm.0621 years = { 2 4 } } } } } } ################################################## # A Rollicking Good Time # by Ewan Cowhig Croft # 0631 - 0640 ################################################## # A few people get auto-filtered immediately. scripted_trigger harm_0631_bonk_pre_filter_enthusiasm_trigger = { NOR = { # Asexual characters can still enjoy sex but are less likely to be doing it enough to be in this situation. has_sexuality = asexual # Likewise for chaste characters. has_trait = chaste # Celibate characters aren't having sex _at all_. has_trait = celibate # Some characters are too obsessed with work. AND = { has_trait = ambitious has_trait = diligent OR = { AND = { is_ruler = yes stress_level >= 1 } is_councillor = yes has_any_court_position = yes } } # Zealous characters might be religious compelled not to engage in sex for pleasure. AND = { has_trait = zealous faith = { OR = { trait_is_virtue = chaste trait_is_sin = lustful trait_is_sin = deviant } } } # Eunuchs omitted - they absolutely can still have sex. ## Quite a lot of it, according to various sources, and depending on the method of castration, it could even still be penetrative. } } # Do you have a partner who might be able to ride you into the proverbial ground? scripted_trigger harm_0631_bonk_partner_trigger = { location = root.location is_ai = yes # Filter out a few folks before we start. harm_0631_bonk_pre_filter_enthusiasm_trigger = yes # The sex has to be really rather vigorous to induce this in you. OR = { # Always give their all. has_trait = deviant has_trait = lustful has_relation_soulmate = root # Selfless lovers. AND = { has_trait = compassionate ai_energy >= very_high_positive_ai_value } # Selfish lovers but you're into it. AND = { OR = { has_trait = sadistic has_trait = callous } root = { has_trait = flagellant } } # Religious compulsion. AND = { faith = { OR = { trait_is_virtue = lustful trait_is_virtue = deviant trait_is_sin = chaste } } has_trait = zealous } # Last but by no means least, dramatically different relative ages! age <= root.vigorous_sex_age_difference_value } # Either you've got a fantastic connection or you've got an. Ahem. Positively-manifesting negative feedback loop. OR = { # Loves you. opinion = { target = root value >= very_high_positive_opinion } # Hates you. opinion = { target = root value <= very_high_negative_opinion } } } # Would we be engaging in enthusiastic sex on the regular? scripted_trigger harm_0631_bonk_enthusiast_trigger = { # Knock out some folks. harm_0631_bonk_pre_filter_enthusiasm_trigger = yes # And you've got to enjoy/prioritise a healthy sex life. OR = { # If your health is low enough, this can happen at any time. AND = { age <= 49 health <= medium_health OR = { # Naturally. has_trait = deviant has_trait = lustful # When you've got plenty of time on your hands... has_trait = lazy has_trait = content # Hormones ablaze. AND = { is_adult = yes age <= 30 } # Might suffer from heart conditions. potential_victim_of_apoplexy_trigger = yes } } # Otherwise, it's more of an age concern. age_ranked_health_vulnerability_threshold_trigger = yes } # Must have a sufficiently vigorous lover available. OR = { any_consort = { harm_0631_bonk_partner_trigger = yes } any_relation = { type = lover harm_0631_bonk_partner_trigger = yes } } } scripted_effect harm_grab_suitable_partner_effect = { every_consort = { limit = { harm_0631_bonk_partner_trigger = yes } add_to_list = bonkable_bartners } every_relation = { type = lover limit = { harm_0631_bonk_partner_trigger = yes } add_to_list = bonkable_bartners } random_in_list = { list = bonkable_bartners save_scope_as = bonker } } scripted_effect harm_0631_process_partner_stress_effect = { # Do they have any affection for you? if = { limit = { opinion = { target = root value >= 1 } } # Cool, are they your soulmate? if = { limit = { has_relation_soulmate = root } # Yes we put in a manual number to make it larger than monumental. ## This would probably destroy you as a person. add_stress = 250 } # If not, apply some stress without going overboard. else = { add_stress = major_stress_gain } } } # Heart attack whilst vigorously bonking. harm.0631 = { type = character_event title = harm.0631.t desc = harm.0631.desc theme = physical_health left_portrait = { character = root animation = fear } right_portrait = { character = scope:bonker animation = shock } override_background = { reference = bedchamber } trigger = { # Standard checks. is_available_adult = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_0631 } has_character_flag = had_event_harm_0632 # Check that we've got a partner who might cause us some strife. harm_0631_bonk_enthusiast_trigger = yes } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Plus some other factors apply. modifier = { add = 0.25 has_trait = lustful } } immediate = { # We don't want to see this event twice. add_character_flag = had_event_harm_0631 # Give a little protection against spam. harm_0000_apply_dynastic_cooldowns_effect = yes # Do we need a fresh bonk buddy or is the old one still good? if = { limit = { OR = { NOT = { exists = scope:bonker } scope:bonker ?= { harm_0631_bonk_enthusiast_trigger = no } } } harm_grab_suitable_partner_effect = yes } # And bonk away. had_sex_with_effect = { CHARACTER = scope:bonker PREGNANCY_CHANCE = pregnancy_chance } add_character_flag = { flag = is_naked days = 30 } scope:bonker = { add_character_flag = { flag = is_naked days = 30 } } } # Wait — I can't — my chest! option = { name = harm.0631.a random_list = { # You aren't permanently hurt. 0 = { modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.0631.a.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.0631.a.tt.success left_icon = root custom_tooltip = harm.0000.tt.no_permanent_damage } } # The experience leaves you feeble. 0 = { modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.0631.a.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.0631.a.tt.failure left_icon = root upgrade_infirm_to_incapable_effect = yes create_character_memory = { type = became_incapable_generic } } # Plus your partner probably isn't happy. scope:bonker = { harm_0631_process_partner_stress_effect = yes } } } stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # Unless they've got a special option, the AI should always choose this. base = 1 } } # N-no you don't, heart, not #EMP now#!... option = { name = harm.0631.b trigger = { has_trait = stubborn } trait = stubborn custom_tooltip = harm.0000.tt.no_permanent_damage # Always gain stress from trait opt-outs. stress_impact = { base = massive_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # The AI should essentially always take this option. base = 1000 } } # I just need to ride this out. ## Ahem. option = { name = harm.0631.c trigger = { intrigue >= @random_harm_standard_skill_check_value } skill = intrigue random_list = { # You aren't permanently hurt. 0 = { modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.0631.c.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.0631.c.tt.success left_icon = root custom_tooltip = harm.0000.tt.no_permanent_damage } } # The experience leaves you feeble. 0 = { modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.0631.c.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.0631.c.tt.failure left_icon = root upgrade_infirm_to_incapable_effect = yes create_character_memory = { type = became_incapable_generic } } # Plus your partner probably isn't happy. scope:bonker = { harm_0631_process_partner_stress_effect = yes } } } # Always gain stress from skill tests. stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # The AI should take this option if a better one isn't available. base = 100 } } after = { remove_character_flag = is_naked scope:bonker = { remove_character_flag = is_naked } } } # Attached foreboding event. harm.0632 = { type = character_event title = harm.0632.t desc = harm.0632.desc theme = physical_health left_portrait = { character = root animation = personality_bold } right_portrait = { character = scope:bonker animation = admiration } override_background = { reference = bedchamber } trigger = { # Standard checks. is_available_adult = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_0632 } # Check that we've got a partner who might cause us some strife. harm_0631_bonk_enthusiast_trigger = yes } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Plus some other factors apply. modifier = { add = 0.25 has_trait = lustful } } immediate = { # Flag this event as taken for the follow-up. add_character_flag = had_event_harm_0632 # Grab us a bonk-buddy. harm_grab_suitable_partner_effect = yes # And bonk away. had_sex_with_effect = { CHARACTER = scope:bonker PREGNANCY_CHANCE = pregnancy_chance } add_character_flag = is_naked scope:bonker = { add_character_flag = is_naked } } # Scope:lover makes me feel so #EMP alive#!. option = { name = harm.0632.a # Foreshadow. custom_tooltip = harm.0632.a.tt # No stress. Yet. ai_chance = { # Only one option, so what we do is unimportant. base = 1 } } after = { # Random chance of immediately skipping on to the following event in a few years. hidden_effect = { random = { chance = 50 trigger_event = { id = harm.0631 years = { 2 4 } } } } remove_character_flag = is_naked scope:bonker = { remove_character_flag = is_naked } } } ################################################## # Some Slight Swelling # by Ewan Cowhig Croft # 0641 - 0650 ################################################## scripted_trigger harm_0641_saved_by_court_amenities_trigger = { has_royal_court = yes # Good food'll keep you out of this. amenity_level = { target = court_food_quality value >= 3 } } # Dropsy renders you bed-ridden. harm.0641 = { type = character_event title = harm.0641.t desc = harm.0641.desc theme = physical_health left_portrait = { character = root animation = pain } lower_right_portrait = scope:medic override_background = { reference = bedchamber } trigger = { # Standard checks. is_available_adult = yes # Medicine checks. character_can_easily_self_treat_trigger = no # Harm filter checks. NOT = { has_character_flag = had_event_harm_0641 } has_character_flag = had_event_harm_0642 # Some characters just won't have this problem. NOR = { has_trait = gluttonous has_trait = comfort_eater } # Make sure we wouldn't be saved by our court amenities. harm_0641_saved_by_court_amenities_trigger = no } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Plus some other factors apply. modifier = { add = 0.25 OR = { has_trait = temperate has_trait = inappetetic } } } immediate = { # We don't want to see this event twice. add_character_flag = had_event_harm_0641 # Give a little protection against spam. harm_0000_apply_dynastic_cooldowns_effect = yes # Try to grab our court physician. harm_0000_grab_available_court_physician_effect = { PERSONAL_SKILL = learning } } # What is... wrong with me... option = { name = harm.0641.a random_list = { # You aren't permanently hurt. 0 = { modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.0641.a.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.0641.a.tt.success left_icon = root custom_tooltip = harm.0000.tt.no_permanent_damage } } # The experience leaves you feeble. 0 = { modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.0641.a.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.0641.a.tt.failure left_icon = root upgrade_infirm_to_incapable_effect = yes create_character_memory = { type = became_incapable_generic } } } } stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # Unless they've got a special option, the AI should always choose this. base = 1 } } # This will pass. option = { name = harm.0641.b trigger = { has_trait = whole_of_body } trait = whole_of_body custom_tooltip = harm.0000.tt.no_permanent_damage # Always gain stress from trait opt-outs. stress_impact = { base = massive_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # The AI should essentially always take this option. base = 1000 } } # Call for your physic. option = { name = harm.0000.tt.physician trigger = { exists = scope:medic scope:medic.learning >= @court_medic_able_to_help_value } show_as_unavailable = { scope:medic.learning < @court_medic_able_to_help_value } # Random roll & stress handled in this effect. harm_0000_physic_rescue_chance_incapable_effect = yes ai_chance = { # The AI should take this option if a better one isn't available. base = 10 } } # Surely this must be treatable? option = { name = harm.0641.c trigger = { learning >= @random_harm_standard_skill_check_value } skill = learning random_list = { # You aren't permanently hurt. 0 = { modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.0641.c.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.0641.c.tt.success left_icon = root custom_tooltip = harm.0000.tt.no_permanent_damage } } # The experience leaves you feeble. 0 = { modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.0641.c.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.0641.c.tt.failure left_icon = root upgrade_infirm_to_incapable_effect = yes create_character_memory = { type = became_incapable_generic } } } } # Always gain stress from skill tests. stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # The AI should take this option if a better one isn't available. base = 100 } } } # Attached foreboding event. harm.0642 = { type = character_event title = harm.0642.t desc = harm.0642.desc theme = physical_health left_portrait = { character = root animation = worry } override_background = { reference = bedchamber } trigger = { # Standard checks. is_available_adult = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_0642 } # Some characters just won't have this problem. NOR = { has_trait = gluttonous has_trait = comfort_eater } # Make sure we wouldn't be saved by our court amenities. harm_0641_saved_by_court_amenities_trigger = no } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Plus some other factors apply. modifier = { add = 0.25 OR = { has_trait = temperate has_trait = inappetetic } } } immediate = { # Flag this event as taken for the follow-up. add_character_flag = had_event_harm_0642 } # Aggh, that's a little tender. option = { name = harm.0642.a # Foreshadow. custom_tooltip = harm.0642.a.tt # No stress. Yet. ai_chance = { # Only one option, so what we do is unimportant. base = 1 } } after = { # Random chance of immediately skipping on to the following event in a few years. hidden_effect = { random = { chance = 50 trigger_event = { id = harm.0641 years = { 2 4 } } } } } } ################################################## # RANDOM DEATH EVENTS ################################################## # Choke On It # by Ewan Cowhig Croft # 1001 - 1010 ################################################## # Choking at a feast. harm.1001 = { type = character_event title = harm.1001.t desc = harm.1001.desc theme = skull left_portrait = { character = root animation = poison } override_background = { reference = feast } trigger = { # Standard checks. is_available_adult = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_1001 } has_character_flag = had_event_harm_1002 } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Plus some other factors apply. modifier = { add = 0.25 has_trait = gluttonous } } immediate = { # Flag this event so the same character can't get it again. add_character_flag = had_event_harm_1001 # Give a little protection against spam. harm_0000_apply_dynastic_cooldowns_effect = yes } # Try to cough it out. option = { name = harm.1001.a random_list = { # You survive. 0 = { modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.1001.a.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.1001.a.tt.success left_icon = root custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes } } # You perish. 0 = { modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.1001.a.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.1001.a.tt.failure left_icon = root death = { death_reason = death_choked } log_harm_event_death_as_variable_effect = yes } } } if = { limit = { is_alive = yes } stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } } ai_chance = { # Unless they've got a special option, the AI should always choose this. base = 1 } } # Calm, breath. option = { name = harm.1001.b trigger = { has_trait = temperate } trait = temperate custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes # Always gain stress from trait opt-outs. stress_impact = { base = massive_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # The AI should essentially always take this option. base = 1000 } } # Thump at your chest and lungs. option = { name = harm.1001.c trigger = { prowess >= @random_harm_standard_skill_check_value } skill = prowess random_list = { # You survive. 0 = { modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.1001.c.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.1001.c.tt.success left_icon = root custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes } } # You perish. 0 = { modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.1001.c.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.1001.c.tt.failure left_icon = root death = { death_reason = death_choked } log_harm_event_death_as_variable_effect = yes } } } # Always gain stress from skill tests. if = { limit = { is_alive = yes } stress_impact = { base = major_stress_impact_gain calm = minor_stress_impact_loss } } ai_chance = { # The AI should take this option if a better one isn't available. base = 100 } } } # Attached foreboding event. harm.1002 = { type = character_event title = harm.1002.t desc = harm.1002.desc theme = physical_health left_portrait = { character = root animation = personality_greedy } override_background = { reference = feast } trigger = { # Standard checks. is_available_adult = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_1002 } } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Plus some other factors apply. modifier = { add = 0.25 has_trait = gluttonous } } immediate = { # Flag this event as taken for the follow-up. add_character_flag = had_event_harm_1002 } # I'm really enjoying food lately. option = { name = harm.1002.a # Foreshadow. custom_tooltip = harm.1002.a.tt # No stress. Yet. ai_chance = { # Only one option, so what we do is unimportant. base = 1 } } after = { # Random chance of immediately skipping on to the following event in a few years. hidden_effect = { random = { chance = 50 trigger_event = { id = harm.1001 years = { 3 8 } } } } } } ################################################## # Ride or Die # by Ewan Cowhig Croft # 1011 - 1020 ################################################## # Something spooks your horse and it goes flying out of control. harm.1011 = { type = character_event title = harm.1011.t desc = harm.1011.desc theme = skull left_portrait = { character = root animation = jockey_gallop camera = camera_event_horse_left } override_background = { reference = wilderness } trigger = { # Standard checks. is_available_adult = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_1011 } has_character_flag = had_event_harm_1012 harm_0511_rides_horses_trigger = yes # Some characters will never go riding for pleasure. NOT = { has_trait = lazy } } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Plus some other factors apply. modifier = { add = 0.25 has_trait = diligent } } immediate = { # Flag this event so the same character can't get it again. add_character_flag = had_event_harm_1011 # Give a little protection against spam. harm_0000_apply_dynastic_cooldowns_effect = yes } # Hang on for dear life. option = { name = harm.1011.a random_list = { # You survive. 0 = { modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.1011.a.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.1011.a.tt.success left_icon = root custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes } } # You perish. 0 = { modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.1011.a.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.1011.a.tt.failure left_icon = root death = { death_reason = death_horse_riding_accident } log_harm_event_death_as_variable_effect = yes } } } if = { limit = { is_alive = yes } stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } } ai_chance = { # Unless they've got a special option, the AI should always choose this. base = 1 } } # Head down, cling hard. option = { name = harm.1011.b trigger = { OR = { has_trait = craven has_trait_xp = { trait = tourney_participant track = horse value >= 75 } has_trait_xp = { trait = lifestyle_hunter track = hunter value >= 75 } } } trait = craven trait = tourney_participant trait = lifestyle_hunter custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes # Always gain stress from trait opt-outs. stress_impact = { base = massive_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # The AI should essentially always take this option. base = 1000 } } # This isn't your first spooked horse. option = { name = harm.1011.c trigger = { martial >= @random_harm_standard_skill_check_value } skill = martial random_list = { # You survive. 0 = { modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.1011.c.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.1011.c.tt.success left_icon = root custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes } } # You perish. 0 = { modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.1011.c.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.1011.c.tt.failure left_icon = root death = { death_reason = death_horse_riding_accident } log_harm_event_death_as_variable_effect = yes } } } # Always gain stress from skill tests. if = { limit = { is_alive = yes } stress_impact = { base = major_stress_impact_gain calm = minor_stress_impact_loss } } ai_chance = { # The AI should take this option if a better one isn't available. base = 100 } } } # Attached foreboding event. harm.1012 = { type = character_event title = harm.1012.t desc = harm.1012.desc theme = physical_health left_portrait = { character = root animation = jockey_idle camera = camera_event_horse_left } override_background = { reference = wilderness } trigger = { # Standard checks. is_available_adult = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_1012 } harm_0511_rides_horses_trigger = yes # Some characters will never go riding for pleasure. NOT = { has_trait = lazy } } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Plus some other factors apply. modifier = { add = 0.25 has_trait = diligent } } immediate = { # Flag this event as taken for the follow-up. add_character_flag = had_event_harm_1012 } # Whoah there, girl, calm down... option = { name = harm.1012.a # Foreshadow. custom_tooltip = harm.1012.a.tt # No stress. Yet. ai_chance = { # Only one option, so what we do is unimportant. base = 1 } } after = { # Random chance of immediately skipping on to the following event in a few years. hidden_effect = { random = { chance = 50 trigger_event = { id = harm.1011 years = { 3 8 } } } } } } ################################################## # Finger-Licking Good # by Ewan Cowhig Croft # 1021 - 1030 ################################################## scripted_trigger harm_1021_saved_by_court_amenities_trigger = { trigger_if = { limit = { has_royal_court = yes } # Bad food'll keep you out of this. amenity_level = { target = court_food_quality # So if you _aren't_ paying for decent food, you have no worries of sudden stomach upsets because you're enjoying it so much. ## Just a drab, dreary existence. value >= 3 } } } # Eating too much exotic food. harm.1021 = { type = character_event title = harm.1021.t desc = harm.1021.desc theme = skull left_portrait = { character = root animation = poison } lower_right_portrait = scope:medic override_background = { reference = feast } trigger = { # Standard checks. is_available_adult = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_1021 } has_character_flag = had_event_harm_1022 # Some characters can avoid this entirely. harm_1021_saved_by_court_amenities_trigger = yes NOT = { has_trait = inappetetic } } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Plus some other factors apply. modifier = { add = 0.25 OR = { has_trait = gluttonous has_trait = gout_ridden } } } immediate = { # Flag this event so the same character can't get it again. add_character_flag = had_event_harm_1021 # Give a little protection against spam. harm_0000_apply_dynastic_cooldowns_effect = yes # Try to grab our court physician. harm_0000_grab_available_court_physician_effect = { PERSONAL_SKILL = stewardship } } # I... don't feel so good... option = { name = harm.1021.a random_list = { # You survive. 0 = { modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.1021.a.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.1021.a.tt.success left_icon = root custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes } } # You perish. 0 = { modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.1021.a.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.1021.a.tt.failure left_icon = root death = { death_reason = death_tumultuous_guts } log_harm_event_death_as_variable_effect = yes } } } if = { limit = { is_alive = yes } stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } } ai_chance = { # Unless they've got a special option, the AI should always choose this. base = 1 } } # Bring me cool water — I need to lie down. Now. option = { name = harm.1021.b trigger = { has_trait = temperate } trait = temperate custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes # Always gain stress from trait opt-outs. stress_impact = { base = massive_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # The AI should essentially always take this option. base = 1000 } } # Call for your physic. option = { name = harm.0000.tt.physician trigger = { exists = scope:medic scope:medic.learning >= @court_medic_able_to_help_value } show_as_unavailable = { scope:medic.learning < @court_medic_able_to_help_value } # Random roll & stress handled in this effect. harm_0000_physic_rescue_chance_death_effect = { DEATH_REASON = death_tumultuous_guts } ai_chance = { # The AI should take this option if a better one isn't available. base = 10 } } # We must have some kind of medicine in stock for this! option = { name = harm.1021.c trigger = { stewardship >= @random_harm_standard_skill_check_value } skill = stewardship random_list = { # You survive. 0 = { modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.1021.c.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.1021.c.tt.success left_icon = root custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes } } # You perish. 0 = { modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.1021.c.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.1021.c.tt.failure left_icon = root death = { death_reason = death_tumultuous_guts } log_harm_event_death_as_variable_effect = yes } } } # Always gain stress from skill tests. if = { limit = { is_alive = yes } stress_impact = { base = major_stress_impact_gain calm = minor_stress_impact_loss } } ai_chance = { # The AI should take this option if a better one isn't available. base = 100 } } } # Attached foreboding event. harm.1022 = { type = character_event title = harm.1022.t desc = harm.1022.desc theme = physical_health left_portrait = { character = root animation = worry } override_background = { reference = feast } trigger = { # Standard checks. is_available_adult = yes # Medicine checks. character_can_easily_self_treat_trigger = no # Harm filter checks. NOT = { has_character_flag = had_event_harm_1022 } # Some characters can avoid this entirely. harm_1021_saved_by_court_amenities_trigger = yes NOT = { has_trait = inappetetic } } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Plus some other factors apply. modifier = { add = 0.25 OR = { has_trait = gluttonous has_trait = gout_ridden } } } immediate = { # Flag this event as taken for the follow-up. add_character_flag = had_event_harm_1022 } # I'm glad that passed quickly. option = { name = harm.1022.a # Foreshadow. custom_tooltip = harm.1022.a.tt # No stress. Yet. ai_chance = { # Only one option, so what we do is unimportant. base = 1 } } after = { # Random chance of immediately skipping on to the following event in a few years. hidden_effect = { random = { chance = 50 trigger_event = { id = harm.1021 years = { 3 8 } } } } } } ################################################## # A Clogged Throat # by Ewan Cowhig Croft # 1031 - 1040 ################################################## # Quinsy-induced choking. harm.1031 = { type = character_event title = harm.1031.t desc = harm.1031.desc theme = skull left_portrait = { character = root animation = poison } lower_right_portrait = scope:medic override_background = { reference = bedchamber } trigger = { # Standard checks. is_available_adult = yes # Medicine checks. character_can_easily_self_treat_trigger = no # Harm filter checks. NOT = { has_character_flag = had_event_harm_1031 } has_character_flag = had_event_harm_1032 # Must be below a certain level of health to suffer from this. health <= medium_health } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Plus some other factors apply. modifier = { add = -0.75 has_perk = wash_your_hands_perk } } immediate = { # Flag this event so the same character can't get it again. add_character_flag = had_event_harm_1031 # Give a little protection against spam. harm_0000_apply_dynastic_cooldowns_effect = yes # Try to grab our court physician. harm_0000_grab_available_court_physician_effect = { PERSONAL_SKILL = learning } } # Can't... breath... option = { name = harm.1031.a random_list = { # You survive. 0 = { modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.1031.a.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.1031.a.tt.success left_icon = root custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes } } # You perish. 0 = { modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.1031.a.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.1031.a.tt.failure left_icon = root death = { death_reason = death_choked_pus } log_harm_event_death_as_variable_effect = yes } } } if = { limit = { is_alive = yes } stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } } ai_chance = { # Unless they've got a special option, the AI should always choose this. base = 1 } } # I just need to control my breathing till I can find a physic. option = { name = harm.1031.b trigger = { has_trait = whole_of_body } trait = whole_of_body custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes # Always gain stress from trait opt-outs. stress_impact = { base = massive_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # The AI should essentially always take this option. base = 1000 } } # Call for your physic. option = { name = harm.0000.tt.physician trigger = { exists = scope:medic scope:medic.learning >= @court_medic_able_to_help_value } show_as_unavailable = { scope:medic.learning < @court_medic_able_to_help_value } # Random roll & stress handled in this effect. harm_0000_physic_rescue_chance_death_effect = { DEATH_REASON = death_choked_pus } ai_chance = { # The AI should take this option if a better one isn't available. base = 10 } } # Calm. Small breaths. To the physician. option = { name = harm.1031.c trigger = { learning >= @random_harm_standard_skill_check_value } skill = learning random_list = { # You survive. 0 = { modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.1031.c.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.1031.c.tt.success left_icon = root custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes } } # You perish. 0 = { modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.1031.c.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.1031.c.tt.failure left_icon = root death = { death_reason = death_choked_pus } log_harm_event_death_as_variable_effect = yes } } } # Always gain stress from skill tests. if = { limit = { is_alive = yes } stress_impact = { base = major_stress_impact_gain calm = minor_stress_impact_loss } } ai_chance = { # The AI should take this option if a better one isn't available. base = 100 } } } # Attached foreboding event. harm.1032 = { type = character_event title = harm.1032.t desc = harm.1032.desc theme = physical_health left_portrait = { character = root animation = worry } override_background = { reference = bedchamber } trigger = { # Standard checks. is_available_adult = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_1032 } # Must be below a certain level of health to suffer from this. health <= medium_health } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Plus some other factors apply. modifier = { add = -0.75 has_perk = wash_your_hands_perk } } immediate = { # Flag this event as taken for the follow-up. add_character_flag = had_event_harm_1032 } # These things usually pass. option = { name = harm.1032.a # Foreshadow. custom_tooltip = harm.1032.a.tt # No stress. Yet. ai_chance = { # Only one option, so what we do is unimportant. base = 1 } } after = { # Random chance of immediately skipping on to the following event in a few years. hidden_effect = { random = { chance = 50 trigger_event = { id = harm.1031 years = { 3 8 } } } } } } ################################################## # Probably Safe # by Ewan Cowhig Croft # 1041 - 1050 ################################################## # Which characters wouldn't find themselves in this situation? scripted_trigger harm_1041_characters_to_exclude_trigger = { NOR = { # Paranoid characters wouldn't be caught in this situation has_trait = paranoid # Whilst gregarious characters wouldn't be caught _alone_. has_trait = gregarious # Lazy characters don't like rides. has_trait = lazy # And blind characters, though capable of great independence, probably aren't going to dismiss their guards like this. has_trait = blind } } # Fall into a body of water. harm.1041 = { type = character_event title = harm.1041.t desc = harm.1041.desc theme = skull left_portrait = { character = root animation = fear } override_background = { reference = wilderness } trigger = { # Standard checks. is_available_adult = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_1041 } has_character_flag = had_event_harm_1042 # Some characters wouldn't have this happen. harm_1041_characters_to_exclude_trigger = yes } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Plus some other factors apply. modifier = { add = 0.25 OR = { has_trait = brave has_trait = athletic } } } immediate = { # Flag this event so the same character can't get it again. add_character_flag = had_event_harm_1041 # Give a little protection against spam. harm_0000_apply_dynastic_cooldowns_effect = yes add_character_flag = is_naked } # Try to come to your senses. option = { name = harm.1041.a random_list = { # You survive. 0 = { modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.1041.a.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.1041.a.tt.success left_icon = root custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes } } # You perish. 0 = { modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.1041.a.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.1041.a.tt.failure left_icon = root death = { death_reason = death_drowned } log_harm_event_death_as_variable_effect = yes } } } if = { limit = { is_alive = yes } stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } } ai_chance = { # Unless they've got a special option, the AI should always choose this. base = 1 } } # Fight-or-flight selects _flight_. option = { name = harm.1041.b trigger = { has_trait = craven } trait = craven custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes # Always gain stress from trait opt-outs. stress_impact = { base = massive_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # The AI should essentially always take this option. base = 1000 } } after = { if = { limit = { is_alive = yes } remove_character_flag = is_naked } } } # Attached foreboding event. harm.1042 = { type = character_event title = harm.1042.t desc = harm.1042.desc theme = physical_health left_portrait = { character = root animation = personality_bold } override_background = { reference = wilderness } trigger = { # Standard checks. is_available_adult = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_1042 } # Some characters wouldn't have this happen. harm_1041_characters_to_exclude_trigger = yes } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Plus some other factors apply. modifier = { add = 0.25 OR = { has_trait = brave has_trait = athletic } } } immediate = { # Flag this event as taken for the follow-up. add_character_flag = had_event_harm_1042 } # A nice spot, this. option = { name = harm.1042.a # Foreshadow. custom_tooltip = harm.1042.a.tt # No stress. Yet. ai_chance = { # Only one option, so what we do is unimportant. base = 1 } } after = { # Random chance of immediately skipping on to the following event in a few years. hidden_effect = { random = { chance = 50 trigger_event = { id = harm.1041 years = { 3 8 } } } } } } ################################################## # Flickering Flames # by Ewan Cowhig Croft # 1051 - 1060 ################################################## # A small fire gets out of hand. harm.1051 = { type = character_event title = harm.1051.t desc = harm.1051.desc theme = skull left_portrait = { character = root animation = fear outfit_tags = { nightgown } } override_background = { reference = sitting_room } widget = { gui = "event_window_widget_vfx_conclusion_smoke" container = "background_shader_vfx_container" } trigger = { # Standard checks. is_available_adult = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_1051 } has_character_flag = had_event_harm_1052 # Paranoid & diligent characters wouldn't be caught in this situation. NOR = { has_trait = paranoid has_trait = diligent } } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Plus some other factors apply. modifier = { add = 0.25 has_trait = brave } } immediate = { # Flag this event so the same character can't get it again. add_character_flag = had_event_harm_1051 # Give a little protection against spam. harm_0000_apply_dynastic_cooldowns_effect = yes } # The only way out is through! option = { name = harm.1051.a random_list = { # You survive. 0 = { modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.1051.a.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.1051.a.tt.success left_icon = root custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes } } # You perish. 0 = { modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.1051.a.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.1051.a.tt.failure left_icon = root death = { death_reason = death_burned } log_harm_event_death_as_variable_effect = yes } } } if = { limit = { is_alive = yes } stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } } ai_chance = { # Unless they've got a special option, the AI should always choose this. base = 1 } } # That way, that's the fastest route out! option = { name = harm.1051.b trigger = { has_trait = craven } trait = craven custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes # Always gain stress from trait opt-outs. stress_impact = { base = massive_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # The AI should essentially always take this option. base = 1000 } } } # Attached foreboding event. harm.1052 = { type = character_event title = harm.1052.t desc = harm.1052.desc theme = physical_health left_portrait = { character = root animation = worry outfit_tags = { nightgown } } override_background = { reference = sitting_room } trigger = { # Standard checks. is_available_adult = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_1052 } # Paranoid & diligent characters wouldn't be caught in this situation. NOR = { has_trait = paranoid has_trait = diligent } } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Plus some other factors apply. modifier = { add = 0.25 has_trait = brave } } immediate = { # Flag this event as taken for the follow-up. add_character_flag = had_event_harm_1052 } # I must be more careful about these candles... option = { name = harm.1052.a # Foreshadow. custom_tooltip = harm.1052.a.tt # No stress. Yet. ai_chance = { # Only one option, so what we do is unimportant. base = 1 } } after = { # Random chance of immediately skipping on to the following event in a few years. hidden_effect = { random = { chance = 50 trigger_event = { id = harm.1051 years = { 3 8 } } } } } } ################################################## # A Moderate Tumble # by Ewan Cowhig Croft # 1061 - 1070 ################################################## # Some characters would never take this risk or else have no reason to. scripted_trigger harm_1061_admires_window_view_trigger = { NOR = { has_trait = paranoid has_trait = blind # Doesn't appreciate beauty. has_trait = callous } } # Falling out of a window whilst admiring the view. harm.1061 = { type = character_event title = harm.1061.t desc = harm.1061.desc theme = skull left_portrait = { character = root animation = fear } override_background = { reference = bedchamber } trigger = { # No multi-story tents is_landless_adventurer = no # Standard checks. is_available_adult = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_1061 } has_character_flag = had_event_harm_1062 # Can't be tribal, must have enough development that you've got a tall building. location_has_multi_story_buildings_trigger = { LOCATION = location } # Some characters would never take this risk or else have no reason to. harm_1061_admires_window_view_trigger = yes } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Plus some other factors apply. modifier = { add = 0.25 has_trait = brave } } immediate = { # Flag this event so the same character can't get it again. add_character_flag = had_event_harm_1061 # Give a little protection against spam. harm_0000_apply_dynastic_cooldowns_effect = yes } # Grab for the window frame. option = { name = harm.1061.a random_list = { # You survive. 0 = { modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.1061.a.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.1061.a.tt.success left_icon = root custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes } } # You perish. 0 = { modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.1061.a.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.1061.a.tt.failure left_icon = root death = { death_reason = death_fell_bedchamber } log_harm_event_death_as_variable_effect = yes } } } if = { limit = { is_alive = yes } stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } } ai_chance = { # Unless they've got a special option, the AI should always choose this. base = 1 } } # grab-grab-grab-GRAB! option = { name = harm.1061.b trigger = { has_trait = craven } trait = craven custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes # Always gain stress from trait opt-outs. stress_impact = { base = massive_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # The AI should essentially always take this option. base = 1000 } } # Rely on your quick reflexes. option = { name = harm.1061.c trigger = { prowess >= @random_harm_standard_skill_check_value } skill = prowess random_list = { # You survive. 0 = { modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.1061.c.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.1061.c.tt.success left_icon = root custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes } } # You perish. 0 = { modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.1061.c.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.1061.c.tt.failure left_icon = root death = { death_reason = death_fell_bedchamber } log_harm_event_death_as_variable_effect = yes } } } # Always gain stress from skill tests. if = { limit = { is_alive = yes } stress_impact = { base = major_stress_impact_gain calm = minor_stress_impact_loss } } ai_chance = { # The AI should take this option if a better one isn't available. base = 100 } } } # Attached foreboding event. harm.1062 = { type = character_event title = harm.1062.t desc = harm.1062.desc theme = physical_health left_portrait = { character = root animation = happiness } override_background = { reference = bedchamber } trigger = { # No multi-story tents is_landless_adventurer = no # Standard checks. is_available_adult = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_1062 } # Can't be tribal, must have enough development that you've got a tall building. location_has_multi_story_buildings_trigger = { LOCATION = location } # Some characters would never take this risk or else have no reason to. harm_1061_admires_window_view_trigger = yes } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Plus some other factors apply. modifier = { add = 0.25 has_trait = lazy } } immediate = { # Flag this event as taken for the follow-up. add_character_flag = had_event_harm_1062 } # What a lovely view! option = { name = harm.1062.a # Foreshadow. custom_tooltip = harm.1062.a.tt # No stress. Yet. ai_chance = { # Only one option, so what we do is unimportant. base = 1 } } after = { # Random chance of immediately skipping on to the following event in a few years. hidden_effect = { random = { chance = 50 trigger_event = { id = harm.1061 years = { 3 8 } } } } } } ################################################## # Crimes of Passion # by Ewan Cowhig Croft # 1071 - 1080 ################################################## # Do we have two courtiers who might stab each other? scripted_trigger harm_1071_rival_courtiers_trigger = { NOT = { has_trait = forgiving } any_relation = { type = rival NOT = { has_trait = forgiving } is_courtier_of = root } } # Grab two appropriate courtiers. scripted_effect harm_1071_grab_rival_courtiers_effect = { # Grab our courtiers. random_courtier = { limit = { has_trait = vengeful harm_1071_rival_courtiers_trigger = yes } alternative_limit = { harm_1071_rival_courtiers_trigger = yes } save_scope_as = killer random_relation = { type = rival limit = { has_trait = vengeful harm_1071_rival_courtiers_trigger = yes } alternative_limit = { harm_1071_rival_courtiers_trigger = yes } save_scope_as = other } } } # A scuffle between two rivals sees you accidentally stabbed. harm.1071 = { type = character_event title = harm.1071.t desc = harm.1071.desc theme = skull left_portrait = { character = root animation = fear } right_portrait = { character = scope:killer animation = assassin } lower_right_portrait = scope:other override_background = { reference = corridor_day } trigger = { # Standard checks. is_available_adult = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_1071 } has_character_flag = had_event_harm_1072 # Must have suitable courtiers. any_courtier = { harm_1071_rival_courtiers_trigger = yes } # Paranoid characters wouldn't be caught in this situation. NOT = { has_trait = paranoid } } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Plus some other factors apply. modifier = { add = 0.25 has_royal_court = yes OR = { has_court_type = court_warlike has_court_type = court_intrigue has_court_type = court_tribal has_court_type = court_nomadic } } modifier = { add = -0.75 has_royal_court = yes OR = { has_court_type = court_diplomatic has_court_type = court_scholarly } } } immediate = { # Flag this event so the same character can't get it again. add_character_flag = had_event_harm_1071 # Give a little protection against spam. harm_0000_apply_dynastic_cooldowns_effect = yes # Process stabby courtiers. ## If our old ones aren't still good, then we need to set up new ones. if = { limit = { OR = { NOR = { exists = scope:killer exists = scope:other } NOT = { scope:killer ?= { is_alive = yes is_imprisoned = no is_courtier_of = root harm_1071_rival_courtiers_trigger = yes } scope:other ?= { is_alive = yes is_imprisoned = no is_courtier_of = root harm_1071_rival_courtiers_trigger = yes } } } } harm_1071_grab_rival_courtiers_effect = yes } } # Dodge the knife. option = { name = harm.1071.a random_list = { # You survive. 0 = { modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.1071.a.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.1071.a.tt.success left_icon = root custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes } } # You perish. 0 = { modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.1071.a.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.1071.a.tt.failure left_icon = root death = { death_reason = death_courtier_mistakenly_stabbed killer = scope:killer } log_harm_event_death_as_variable_effect = yes # Do some stealthy stuff to keep the toast neat whilst propagating out consequences. hidden_effect = { scope:killer = { add_trait = murderer add_kinslayer_trait_or_nothing_effect = { VICTIM = root } } } } } } if = { limit = { is_alive = yes } stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } } ai_chance = { # Unless they've got a special option, the AI should always choose this. base = 1 } } # Easily duck aside from the blade. option = { name = harm.1071.b trigger = { OR = { has_trait = brave has_trait = lifestyle_blademaster } } trait = brave trait = lifestyle_blademaster custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes # Always gain stress from trait opt-outs. stress_impact = { base = massive_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # The AI should essentially always take this option. base = 1000 } } # Rely on your reflexes. option = { name = harm.1071.c trigger = { prowess >= @random_harm_standard_skill_check_value } skill = prowess random_list = { # You survive. 0 = { modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.1071.c.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.1071.c.tt.success left_icon = root custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes } } # You perish. 0 = { modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.1071.c.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.1071.c.tt.failure left_icon = root death = { death_reason = death_courtier_mistakenly_stabbed killer = scope:killer } log_harm_event_death_as_variable_effect = yes # Do some stealthy stuff to keep the toast neat whilst propagating out consequences. hidden_effect = { scope:killer = { add_trait = murderer add_kinslayer_trait_or_nothing_effect = { VICTIM = root } } } } } } # Always gain stress from skill tests. if = { limit = { is_alive = yes } stress_impact = { base = major_stress_impact_gain calm = minor_stress_impact_loss } } ai_chance = { # The AI should take this option if a better one isn't available. base = 100 } } after = { if = { limit = { scope:killer = { is_alive = yes liege ?= { is_alive = yes } } } # Yeahhhh. Yeah you're goin' down for this'un. rightfully_imprison_character_effect = { TARGET = scope:killer IMPRISONER = scope:killer.liege } } } } # Attached foreboding event. harm.1072 = { type = character_event title = harm.1072.t desc = harm.1072.desc theme = physical_health left_portrait = { character = scope:killer animation = rage } right_portrait = { character = scope:other animation = dismissal } override_background = { reference = corridor_day } trigger = { # Standard checks. is_available_adult = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_1072 } # Must have suitable courtiers. any_courtier = { harm_1071_rival_courtiers_trigger = yes } # Paranoid characters wouldn't be caught in this situation. NOT = { has_trait = paranoid } } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Plus some other factors apply. modifier = { add = 0.25 has_royal_court = yes OR = { has_court_type = court_warlike has_court_type = court_intrigue has_court_type = court_tribal has_court_type = court_nomadic } } modifier = { add = -0.75 has_royal_court = yes OR = { has_court_type = court_diplomatic has_court_type = court_scholarly } } } immediate = { # Flag this event as taken for the follow-up. add_character_flag = had_event_harm_1072 # Set up our courtiers. harm_1071_grab_rival_courtiers_effect = yes } # Just another exciting day at court, eh? option = { name = harm.1072.a # Foreshadow. custom_tooltip = harm.1072.a.tt # No stress. Yet. ai_chance = { # Only one option, so what we do is unimportant. base = 1 } } after = { # Random chance of immediately skipping on to the following event in a few years. hidden_effect = { random = { chance = 50 trigger_event = { id = harm.1071 years = { 3 8 } } } } } } ################################################## # Storm's Wrath # by Ewan Cowhig Croft # 1081 - 1090 ################################################## scripted_trigger harm_1081_normal_storms_trigger = { location = { OR = { terrain = drylands terrain = farmlands terrain = floodplains terrain = forest terrain = hills terrain = jungle terrain = mountains terrain = plains terrain = taiga terrain = wetlands terrain = steppe } } } # Death in a storm, due to a lightning hit/being crushed by a falling tree/twatted by a falling rock/catching a terminal chill. harm.1081 = { type = character_event title = harm.1081.t desc = harm.1081.desc theme = skull left_portrait = { character = root animation = jockey_gallop camera = camera_event_horse_left } override_background = { reference = wilderness } widget = { gui = "event_window_widget_vfx_lightning_storm" container = "foreground_shader_vfx_container" } trigger = { # Standard checks. is_available_adult = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_1081 } has_character_flag = had_event_harm_1082 # Paranoid characters wouldn't be caught in this situation. NOT = { has_trait = paranoid } # Check to see if we're likely to have to deal with such storms. ## Not that you _don't_ get storms in the desert, but it's more difficult to frame. harm_1081_normal_storms_trigger = yes } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Plus some other factors apply. modifier = { add = 0.25 has_trait = brave } } immediate = { # Flag this event so the same character can't get it again. add_character_flag = had_event_harm_1081 # Give a little protection against spam. harm_0000_apply_dynastic_cooldowns_effect = yes } # If we ride hard enough, we can reach home. option = { name = harm.1081.a random_list = { # You survive. 0 = { modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.1081.a.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.1081.a.tt.success left_icon = root custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes } } # You perish. 0 = { modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.1081.a.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.1081.a.tt.failure left_icon = root death = { death_reason = death_violent_storm } log_harm_event_death_as_variable_effect = yes } } } if = { limit = { is_alive = yes } stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } } ai_chance = { # Unless they've got a special option, the AI should always choose this. base = 1 } } # There, that hollow, we can shelter there! option = { name = harm.1081.b trigger = { has_trait = craven } trait = craven custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes # Always gain stress from trait opt-outs. stress_impact = { base = massive_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # The AI should essentially always take this option. base = 1000 } } # I — I think I might have a hide-away near hear? option = { name = harm.1081.c trigger = { intrigue >= @random_harm_standard_skill_check_value } skill = intrigue random_list = { # You survive. 0 = { modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.1081.c.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.1081.c.tt.success left_icon = root custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes } } # You perish. 0 = { modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.1081.c.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.1081.c.tt.failure left_icon = root death = { death_reason = death_violent_storm } log_harm_event_death_as_variable_effect = yes } } } # Always gain stress from skill tests. if = { limit = { is_alive = yes } stress_impact = { base = major_stress_impact_gain calm = minor_stress_impact_loss } } ai_chance = { # The AI should take this option if a better one isn't available. base = 100 } } } # Attached foreboding event. harm.1082 = { type = character_event title = harm.1082.t desc = harm.1082.desc theme = physical_health left_portrait = { character = root animation = survey } override_background = { reference = wilderness } widget = { gui = "event_window_widget_vfx_rainy_fog" container = "foreground_shader_vfx_container" } trigger = { # Standard checks. is_available_adult = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_1082 } # Paranoid characters wouldn't be caught in this situation. NOT = { has_trait = paranoid } # Check to see if we're likely to have to deal with such storms. ## Not that you _don't_ get storms in the desert, but it's more difficult to frame. harm_1081_normal_storms_trigger = yes } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Plus some other factors apply. modifier = { add = 0.25 has_trait = brave } } immediate = { # Flag this event as taken for the follow-up. add_character_flag = had_event_harm_1082 } # I hope FateGodName isn't signalling something... option = { name = harm.1082.a # Foreshadow. custom_tooltip = harm.1082.a.tt # No stress. Yet. ai_chance = { # Only one option, so what we do is unimportant. base = 1 } } after = { # Random chance of immediately skipping on to the following event in a few years. hidden_effect = { random = { chance = 50 trigger_event = { id = harm.1082 years = { 2 8 } } } } } } ################################################## # Aching Minds # by Ewan Cowhig Croft # 1091 - 1100 ################################################## # Struck down by an aneurysm. harm.1091 = { type = character_event title = harm.1091.t desc = harm.1091.desc theme = skull left_portrait = { character = root animation = pain } lower_right_portrait = scope:medic override_background = { reference = study } trigger = { # Standard checks. is_available_adult = yes # Medicine checks. character_can_easily_self_treat_trigger = no # Harm filter checks. NOT = { has_character_flag = had_event_harm_1091 } has_character_flag = had_event_harm_1092 } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Plus some other factors apply. modifier = { add = 0.25 potential_victim_of_apoplexy_trigger = yes } } immediate = { # Flag this event so the same character can't get it again. add_character_flag = had_event_harm_1091 # Give a little protection against spam. harm_0000_apply_dynastic_cooldowns_effect = yes # Try to grab our court physician. harm_0000_grab_available_court_physician_effect = { PERSONAL_SKILL = diplomacy } } # #EMP My mind?!#!. ## Obligatory "There's no one else here". ### 2015/08/30. option = { name = harm.1091.a random_list = { # You survive. 0 = { modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.1091.a.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.1091.a.tt.success left_icon = root custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes } } # You perish. 0 = { modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.1091.a.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.1091.a.tt.failure left_icon = root death = { death_reason = death_apoplexy } log_harm_event_death_as_variable_effect = yes } } } if = { limit = { is_alive = yes } stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } } ai_chance = { # Unless they've got a special option, the AI should always choose this. base = 1 } } # I. Will. Endure. option = { name = harm.1091.b trigger = { OR = { has_trait = calm has_trait = stubborn } } trait = calm trait = stubborn custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes # Always gain stress from trait opt-outs. stress_impact = { base = massive_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # The AI should essentially always take this option. base = 1000 } } # Call for your physic. option = { name = harm.0000.tt.physician trigger = { exists = scope:medic scope:medic.learning >= @court_medic_able_to_help_value } show_as_unavailable = { scope:medic.learning < @court_medic_able_to_help_value } # Random roll & stress handled in this effect. harm_0000_physic_rescue_chance_death_effect = { DEATH_REASON = death_apoplexy } ai_chance = { # The AI should take this option if a better one isn't available. base = 10 } } # Clarity, clarity, I need #EMP clarity#!. option = { name = harm.1091.c trigger = { diplomacy >= @random_harm_standard_skill_check_value } skill = diplomacy random_list = { # You survive. 0 = { modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.1091.c.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.1091.c.tt.success left_icon = root custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes } } # You perish. 0 = { modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.1091.c.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.1091.c.tt.failure left_icon = root death = { death_reason = death_apoplexy } log_harm_event_death_as_variable_effect = yes } } } # Always gain stress from skill tests. if = { limit = { is_alive = yes } stress_impact = { base = major_stress_impact_gain calm = minor_stress_impact_loss } } ai_chance = { # The AI should take this option if a better one isn't available. base = 100 } } } # Attached foreboding event. harm.1092 = { type = character_event title = harm.1092.t desc = { desc = harm.1092.desc.intro first_valid = { triggered_desc = { trigger = { has_trait = blind } desc = harm.1092.desc.blind } desc = harm.1092.desc.fallback } } theme = physical_health left_portrait = { character = root animation = worry } override_background = { reference = study } trigger = { # Standard checks. is_available_adult = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_1092 } } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Plus some other factors apply. modifier = { add = 0.25 potential_victim_of_apoplexy_trigger = yes } } immediate = { # Flag this event as taken for the follow-up. add_character_flag = had_event_harm_1092 } # Uggh, my head... option = { name = harm.1092.a # Foreshadow. custom_tooltip = harm.1092.a.tt # No stress. Yet. ai_chance = { # Only one option, so what we do is unimportant. base = 1 } } after = { # Random chance of immediately skipping on to the following event in a few years. hidden_effect = { random = { chance = 50 trigger_event = { id = harm.1091 years = { 3 8 } } } } } } ################################################## # Street Safety # by Ewan Cowhig Croft # 1101 - 1110 ################################################## # Run over by a rider/run-away cart. harm.1101 = { type = character_event title = harm.1101.t desc = harm.1101.desc theme = skull left_portrait = { character = root animation = fear } override_background = { reference = alley_day } trigger = { # Standard checks. is_available_adult = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_1101 } has_character_flag = had_event_harm_1102 # Neither Paranoid characters nor Reclusive ones would be caught in this situation. NOR = { has_trait = paranoid has_trait = reclusive } # And some danger of fast-moving carts. location_has_fast_traffic_trigger = { LOCATION = root.location } } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Plus some other factors apply. modifier = { add = 0.25 has_trait = gregarious } } immediate = { # Flag this event so the same character can't get it again. add_character_flag = had_event_harm_1101 # Give a little protection against spam. harm_0000_apply_dynastic_cooldowns_effect = yes } # Jump backwards. option = { name = harm.1101.a random_list = { # You survive. 0 = { modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.1101.a.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.1101.a.tt.success left_icon = root custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes } } # You perish. 0 = { modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.1101.a.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.1101.a.tt.failure left_icon = root death = { death_reason = death_run_over_cart } log_harm_event_death_as_variable_effect = yes } } } if = { limit = { is_alive = yes } stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } } ai_chance = { # Unless they've got a special option, the AI should always choose this. base = 1 } } # Leap backwards with all your might. option = { name = harm.1101.b trigger = { OR = { has_trait = shy has_trait = craven } } trait = shy trait = craven custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes # Always gain stress from trait opt-outs. stress_impact = { base = massive_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # The AI should essentially always take this option. base = 1000 } } # Throw yourself forwards. option = { name = harm.1101.c trigger = { prowess >= @random_harm_standard_skill_check_value } skill = prowess random_list = { # You survive. 0 = { modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.1101.c.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.1101.c.tt.success left_icon = root custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes } } # You perish. 0 = { modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.1101.c.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.1101.c.tt.failure left_icon = root death = { death_reason = death_run_over_cart } log_harm_event_death_as_variable_effect = yes } } } # Always gain stress from skill tests. if = { limit = { is_alive = yes } stress_impact = { base = major_stress_impact_gain calm = minor_stress_impact_loss } } ai_chance = { # The AI should take this option if a better one isn't available. base = 100 } } } # Attached foreboding event. harm.1102 = { type = character_event title = harm.1102.t desc = harm.1102.desc theme = physical_health left_portrait = { character = root animation = personality_bold } override_background = { reference = alley_day } trigger = { # Standard checks. is_available_adult = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_1102 } # Neither Paranoid characters nor Reclusive ones would be caught in this situation. NOR = { has_trait = paranoid has_trait = reclusive } # And some danger of fast-moving carts. location_has_fast_traffic_trigger = { LOCATION = root.location } } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Plus some other factors apply. modifier = { add = 0.25 has_trait = gregarious } } immediate = { # Flag this event as taken for the follow-up. add_character_flag = had_event_harm_1102 } # The commoners do need to see their GetTitleAsName. option = { name = harm.1102.a # Foreshadow. custom_tooltip = harm.1102.a.tt # No stress. Yet. ai_chance = { # Only one option, so what we do is unimportant. base = 1 } } after = { # Random chance of immediately skipping on to the following event in a few years. hidden_effect = { random = { chance = 50 trigger_event = { id = harm.1101 years = { 3 8 } } } } } } ################################################## # People's Justice # by Ewan Cowhig Croft # 1111 - 1120 ################################################## scripted_trigger harm_1111_capital_hates_you_trigger = { capital_county.county_opinion <= -80 } scripted_trigger harm_1111_saved_by_court_amenities_trigger = { trigger_if = { limit = { has_royal_court = yes } # Must have enough servants for one to slip through unnoticed. amenity_level = { target = court_servants value >= 3 } } } # Some characters wouldn't be caught near people like this. scripted_trigger harm_1111_traits_filter_trigger = { NOR = { # Doesn't take risks. has_trait = paranoid # Is never near people. has_trait = reclusive has_trait = shy # Narrative taste. has_trait = pregnant } } # Stabbed by a servant in your capital that hates you. harm.1111 = { type = character_event title = harm.1111.t desc = harm.1111.desc theme = skull left_portrait = { character = root animation = fear } right_portrait = { character = scope:killer animation = assassin outfit_tags = { beggar_rags } } override_background = { reference = corridor_day } trigger = { # Standard checks. is_available_adult = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_1111 } has_character_flag = had_event_harm_1112 # Must be landed for this'un... is_landed_or_landless_administrative = yes # ... because your capital _really_ does not like you. harm_1111_capital_hates_you_trigger = yes # Must have enough servants for this to be a potential problem. harm_1111_saved_by_court_amenities_trigger = yes # Some characters wouldn't be caught near people like this. harm_1111_traits_filter_trigger = yes } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Plus some other factors apply. modifier = { add = 0.25 OR = { has_trait = arbitrary has_trait = trusting } } } immediate = { # Flag this event so the same character can't get it again. add_character_flag = had_event_harm_1111 # Give a little protection against spam. harm_0000_apply_dynastic_cooldowns_effect = yes # Stab root. increase_wounds_no_death_effect = { REASON = fight } # Create our killer. create_character = { age = { 25 45 } culture = root.capital_county.culture faith = root.capital_county.faith dynasty = none gender_female_chance = 50 # Traits. ## Education. random_traits_list = { count = 1 education_diplomacy_1 = {} education_martial_1 = {} education_stewardship_1 = {} education_intrigue_1 = {} education_learning_1 = {} } ## Personality. trait = vengeful trait = brave ## Plus a little bit of variety is nice. random_traits_list = { count = 1 stubborn = {} impatient = {} humble = {} wrathful = {} } # Skills. intrigue = { min_template_decent_skill max_template_decent_skill } prowess = { min_template_decent_skill max_template_decent_skill } employer = root save_scope_as = killer } # Alright, welcome to the world, scope:killer! ## Now you die. scope:killer = { death = { death_reason = death_slaughtered_by_guards } log_harm_event_death_as_variable_effect = yes } } # Gah, I am undone! option = { name = harm.1111.a trigger = { NOR = { has_trait = stubborn dread >= 50 } } random_list = { # You survive. 0 = { modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.1111.a.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.1111.a.tt.success left_icon = root custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes } } # You perish. 0 = { modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.1111.a.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.1111.a.tt.failure left_icon = root death = { death_reason = death_murder killer = scope:killer } log_harm_event_death_as_variable_effect = yes } } } if = { limit = { is_alive = yes } stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } } ai_chance = { # Unless they've got a special option, the AI should always choose this. base = 1 } } # It'll take more than that to kill #EMP me#!. option = { name = harm.1111.b trigger = { has_trait = stubborn } trait = stubborn custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes # Always gain stress from trait opt-outs. stress_impact = { base = massive_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # The AI should essentially always take this option. base = 1000 } } # #EMP Another#! assassin? Pathetic! option = { name = harm.1111.c trigger = { dread >= 50 } custom_tooltip = harm.1111.c.tt.dread random_list = { # You survive. 0 = { modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.1111.c.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.1111.c.tt.success left_icon = root custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes } } # You perish. 0 = { modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.1111.c.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.1111.c.tt.failure left_icon = root death = { death_reason = death_choked } log_harm_event_death_as_variable_effect = yes } } } # Always gain stress from skill tests. if = { limit = { is_alive = yes } stress_impact = { base = major_stress_impact_gain calm = minor_stress_impact_loss } } ai_chance = { # The AI should take this option if a better one isn't available. base = 100 } } } # Attached foreboding event. harm.1112 = { type = character_event title = harm.1112.t desc = harm.1112.desc theme = physical_health left_portrait = { character = root animation = dismissal } override_background = { reference = corridor_day } trigger = { # Standard checks. is_available_adult = yes # Harm filter checks. NOT = { has_character_flag = had_event_harm_1112 } # Must be landed for this'un... is_landed_or_landless_administrative = yes # ... because your capital _really_ does not like you. harm_1111_capital_hates_you_trigger = yes # Must have enough servants for this to be a potential problem. harm_1111_saved_by_court_amenities_trigger = yes # Some characters wouldn't be caught near people like this. harm_1111_traits_filter_trigger = yes } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Plus some other factors apply. modifier = { add = 0.25 OR = { has_trait = arbitrary has_trait = trusting } } } immediate = { # Flag this event as taken for the follow-up. add_character_flag = had_event_harm_1112 } # As long as they know their place. option = { name = harm.1112.a # Foreshadow. custom_tooltip = harm.1112.a.tt # No stress. Yet. ai_chance = { # Only one option, so what we do is unimportant. base = 1 } } after = { # Random chance of immediately skipping on to the following event in a few years. hidden_effect = { random = { chance = 50 trigger_event = { id = harm.1111 years = { 3 8 } } } } } } ################################################## # RANDOM DEATH BATTLE EVENTS ################################################## # Camp Fever # by Ewan Cowhig Croft # 2001 - 2010 ################################################## # Terrible siege conditions cause you strife. harm.2001 = { type = character_event title = harm.2001.t desc = harm.2001.desc theme = skull left_portrait = { character = root animation = sick } override_background = { reference = battlefield } cooldown = { years = 30 } trigger = { # Standard checks. harm_game_rule_enablement_trigger = yes # Medicine checks. character_can_easily_self_treat_trigger = no # Army checks. commanding_army = { # Gotta be at a siege. is_army_in_siege = yes # But _not_ currently fighting, as that'll mess the narrative up. is_army_in_combat = no } NOR = { health >= @army_commander_vulnerable_to_health_problems_value has_trait = logistician has_trait = military_engineer } commander_in_terrain_specialisation = no } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Characters in poor health shouldn't campaign. ## Medium health modifier = { add = 0.25 health <= medium_health } ## Fine health (which is somehow lower than medium) modifier = { add = 0.25 health <= fine_health } ## Poor health modifier = { add = 0.25 health <= poor_health } # Some characters do better on campaign. ## Martially educated characters are better able to cope with these harsh realities. modifier = { add = -0.45 has_trait = education_martial } ## Stubborn characters will stomach all manner of pains. modifier = { add = -0.5 has_trait = stubborn } } # My — my guts... eurgh... option = { name = harm.2001.a random_list = { # You survive. 0 = { modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.2001.a.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.2001.a.tt.success left_icon = root custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes } } # You perish. 0 = { modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.2001.a.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.2001.a.tt.failure left_icon = root death = { death_reason = death_camp_fever } log_harm_event_death_as_variable_effect = yes } } } if = { limit = { is_alive = yes } stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } } ai_chance = { # Unless they've got a special option, the AI should always choose this. base = 1 } } # I will not end here. option = { name = harm.2001.b trigger = { has_trait = whole_of_body } trait = whole_of_body custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes # Always gain stress from trait opt-outs. stress_impact = { base = massive_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # The AI should essentially always take this option. base = 1000 } } # I know what I need. Get me... get me... option = { name = harm.2001.c trigger = { learning >= @random_harm_standard_skill_check_value } skill = learning random_list = { # You survive. 0 = { modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.2001.c.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.2001.c.tt.success left_icon = root custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes } } # You perish. 0 = { modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.2001.c.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.2001.c.tt.failure left_icon = root death = { death_reason = death_camp_fever } log_harm_event_death_as_variable_effect = yes } } } # Always gain stress from skill tests. if = { limit = { is_alive = yes } stress_impact = { base = major_stress_impact_gain calm = minor_stress_impact_loss } } ai_chance = { # The AI should take this option if a better one isn't available. base = 100 } } } ################################################## # Marching Malaise # by Ewan Cowhig Croft # 2011 - 2020 ################################################## # Terrible marching conditions are problematic. harm.2011 = { type = character_event title = harm.2011.t desc = harm.2011.desc theme = skull left_portrait = { character = root animation = sick } override_background = { reference = wilderness } cooldown = { years = 30 } trigger = { # Standard checks. harm_game_rule_enablement_trigger = yes # Medicine checks. character_can_easily_self_treat_trigger = no # Army checks. commanding_army = { # Army must be mobile. army_is_moving = yes is_army_in_combat = no } NOR = { health >= @army_commander_vulnerable_to_health_problems_value has_trait = logistician has_trait = organizer } commander_in_terrain_specialisation = no } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Characters in poor health shouldn't campaign. ## Medium health modifier = { add = 0.25 health <= medium_health } ## Fine health (which is somehow lower than medium) modifier = { add = 0.25 health <= fine_health } ## Poor health modifier = { add = 0.25 health <= poor_health } # Some characters do better on campaign. ## Martially educated characters are better able to cope with these harsh realities. modifier = { add = -0.45 has_trait = education_martial } ## Stubborn characters will stomach all manner of pains. modifier = { add = -0.5 has_trait = stubborn } } # Why is... what is... option = { name = harm.2011.a random_list = { # You survive. 0 = { modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.2011.a.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.2011.a.tt.success left_icon = root custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes } } # You perish. 0 = { modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.2011.a.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.2011.a.tt.failure left_icon = root death = { death_reason = death_march_malaise } log_harm_event_death_as_variable_effect = yes } } } if = { limit = { is_alive = yes } stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } } ai_chance = { # Unless they've got a special option, the AI should always choose this. base = 1 } } # My soldiers suffer only what I can suffer. option = { name = harm.2011.b trigger = { OR = { has_trait = diligent has_trait = athletic has_trait = stubborn } # Some characters can't motivate themselves in this fashion. NOR = { has_trait = callous has_trait = sadistic } } trait = diligent trait = athletic trait = stubborn custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes # Always gain stress from trait opt-outs. stress_impact = { base = massive_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # The AI should essentially always take this option. base = 1000 } } # I've endured worse, surely? option = { name = harm.2011.c trigger = { OR = { martial >= very_high_skill_rating prowess >= extremely_high_skill_rating } } skill = martial skill = prowess random_list = { # You survive. 0 = { modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.2011.c.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.2011.c.tt.success left_icon = root custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes } } # You perish. 0 = { modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.2011.c.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.2011.c.tt.failure left_icon = root death = { death_reason = death_march_malaise } log_harm_event_death_as_variable_effect = yes } } } # Always gain stress from skill tests. if = { limit = { is_alive = yes } stress_impact = { base = major_stress_impact_gain calm = minor_stress_impact_loss } } ai_chance = { # The AI should take this option if a better one isn't available. base = 100 } } } ################################################## # So... Cold... # by Ewan Cowhig Croft # 2021 - 2030 ################################################## # Frostbite claims you. harm.2021 = { type = character_event title = harm.2021.t desc = harm.2021.desc theme = skull left_portrait = { character = root animation = sick } override_background = { reference = ep2_hunt_snowy_forest } widget = { gui = "event_window_widget_vfx_snow" container = "foreground_shader_vfx_container" } cooldown = { years = 30 } trigger = { # Standard checks. harm_game_rule_enablement_trigger = yes # Medicine checks. character_can_easily_self_treat_trigger = no # Winter checks. location_has_harsh_winter_trigger = yes # Exempt some peoples. NOR = { health >= @army_commander_vulnerable_to_health_problems_value has_trait = winter_soldier # Winter soldier bonuses. culture = { has_cultural_parameter = winter_trait_bonuses } } commander_in_terrain_specialisation = no } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Characters in poor health shouldn't campaign. ## Medium health or harsh winter modifier = { add = 0.25 health <= medium_health location = { has_province_modifier = winter_harsh_modifier } } ## Fine health (which is somehow lower than medium) or normal winter modifier = { add = 0.25 health <= fine_health location = { OR = { has_province_modifier = winter_harsh_modifier has_province_modifier = winter_normal_modifier } } } ## Poor health or mild winter modifier = { add = 0.25 health <= poor_health location = { OR = { has_province_modifier = winter_harsh_modifier has_province_modifier = winter_normal_modifier has_province_modifier = winter_mild_modifier } } } # Some characters do better on campaign. ## Martially educated characters are better able to cope with these harsh realities. modifier = { add = -0.45 has_trait = education_martial } ## Stubborn characters will stomach all manner of pains. modifier = { add = -0.5 has_trait = stubborn } } # ... option = { name = harm.2021.a random_list = { # You survive. 0 = { modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.2021.a.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.2021.a.tt.success left_icon = root custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes } } # You perish. 0 = { modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.2021.a.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.2021.a.tt.failure left_icon = root death = { death_reason = death_froze } log_harm_event_death_as_variable_effect = yes } } } if = { limit = { is_alive = yes } stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } } ai_chance = { # Unless they've got a special option, the AI should always choose this. base = 1 } } # I. Have. A higher. Destiny. option = { name = harm.2021.b trigger = { has_trait = ambitious } trait = ambitious custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes # Always gain stress from trait opt-outs. stress_impact = { base = massive_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # The AI should essentially always take this option. base = 1000 } } # I. Will not. End. option = { name = harm.2021.c trigger = { prowess >= @random_harm_standard_skill_check_value } skill = prowess random_list = { # You survive. 0 = { modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.2021.c.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.2021.c.tt.success left_icon = root custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes } } # You perish. 0 = { modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.2021.c.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.2021.c.tt.failure left_icon = root death = { death_reason = death_froze } log_harm_event_death_as_variable_effect = yes } } } # Always gain stress from skill tests. if = { limit = { is_alive = yes } stress_impact = { base = major_stress_impact_gain calm = minor_stress_impact_loss } } ai_chance = { # The AI should take this option if a better one isn't available. base = 100 } } } ################################################## # So... Hot... # by Ewan Cowhig Croft # 2031 - 2040 ################################################## # Heat-stroke claims you. harm.2031 = { type = character_event title = harm.2031.t desc = harm.2031.desc theme = skull left_portrait = { character = root animation = stress } override_background = { reference = wilderness } cooldown = { years = 30 } trigger = { # Standard checks. harm_game_rule_enablement_trigger = yes # Medicine checks. character_can_easily_self_treat_trigger = no # Terrain checks. tropical_seasons_trigger = { LOCATION = root.location } NOT = { is_nice_season_to_be_outside_trigger = { LOCATION = root.location } } # Exempt some peoples. NOR = { health >= @army_commander_vulnerable_to_health_problems_value # Desert cultural bonuses. culture = { has_cultural_parameter = desert_warrior_trait_is_better } # *sigh* And SOME people are just too into the sun. faith = { has_doctrine_parameter = trial_by_sun_active } } commander_in_terrain_specialisation = no } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Characters in poor health shouldn't campaign. ## Medium health modifier = { add = 0.25 health <= medium_health } ## Fine health (which is somehow lower than medium) modifier = { add = 0.25 health <= fine_health } ## Poor health modifier = { add = 0.25 health <= poor_health } # Some characters do better on campaign. ## Martially educated characters are better able to cope with these harsh realities. modifier = { add = -0.45 has_trait = education_martial } ## Stubborn characters will stomach all manner of pains. modifier = { add = -0.5 has_trait = stubborn } # Are we not in the desert? If not, reduce _markedly. modifier = { factor = 0.25 location = { NOR = { terrain = desert terrain = desert_mountains } } } } # Is DeathGodName calling for me? option = { name = harm.2031.a random_list = { # You survive. 0 = { modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.2031.a.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.2031.a.tt.success left_icon = root custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes } } # You perish. 0 = { modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.2031.a.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.2031.a.tt.failure left_icon = root death = { death_reason = death_heatstroke } log_harm_event_death_as_variable_effect = yes } } } if = { limit = { is_alive = yes } stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } } ai_chance = { # Unless they've got a special option, the AI should always choose this. base = 1 } } # I. Have. A higher. Destiny. option = { name = harm.2031.b trigger = { has_trait = ambitious } trait = ambitious custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes # Always gain stress from trait opt-outs. stress_impact = { base = massive_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # The AI should essentially always take this option. base = 1000 } } # I am not DeathGodNamePossessive's fool. option = { name = harm.2031.c trigger = { prowess >= @random_harm_standard_skill_check_value } skill = prowess random_list = { # You survive. 0 = { modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.2031.c.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.2031.c.tt.success left_icon = root custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes } } # You perish. 0 = { modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.2031.c.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.2031.c.tt.failure left_icon = root death = { death_reason = death_heatstroke } log_harm_event_death_as_variable_effect = yes } } } # Always gain stress from skill tests. if = { limit = { is_alive = yes } stress_impact = { base = major_stress_impact_gain calm = minor_stress_impact_loss } } ai_chance = { # The AI should take this option if a better one isn't available. base = 100 } } } ################################################## # For the Realm # by Ewan Cowhig Croft # 2041 - 2050 ################################################## # Aggrieved soldiers at war too long assassinate you. harm.2041 = { type = character_event title = harm.2041.t desc = harm.2041.desc theme = skull left_portrait = { character = root animation = fear } right_portrait = { character = scope:killer animation = aggressive_sword } override_background = { reference = bp1_bonfire } cooldown = { years = 30 } trigger = { # Standard checks. harm_game_rule_enablement_trigger = yes # Requires you to be landed so we know where to pull the soldier from. is_landed_or_landless_administrative = yes # Army checks. NOT = { faith = { has_doctrine_parameter = warmonger } } days_of_continuous_war >= 9125 } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Some characters aren't popular with soldiers. modifier = { add = 0.5 OR = { has_trait = shy has_trait = wrathful has_trait = impatient has_trait = callous has_trait = sadistic has_trait = irritable } } # And some characters can persuade their soldiers through thick'n'thin. modifier = { add = -0.75 OR = { has_trait = gregarious has_trait = calm has_trait = patient has_trait = compassionate } } } immediate = { # Generate a suitable soldier to use. create_character = { template = retired_mercenary location = root.location culture = root.capital_county.culture faith = root.capital_county.faith gender_female_chance = root_soldier_female_chance dynasty = none save_scope_as = killer } } # Traitors! TRAITORS! option = { name = harm.2041.a random_list = { # You survive. 0 = { modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.2041.a.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.2041.a.tt.success left_icon = root custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes } } # You perish. 0 = { modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.2041.a.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.2041.a.tt.failure left_icon = root death = { death_reason = death_assassinated_by_soldiers } log_harm_event_death_as_variable_effect = yes } } } if = { limit = { is_alive = yes } stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } } ai_chance = { # Unless they've got a special option, the AI should always choose this. base = 1 } } # Only five? Have at thee, milksops! option = { name = harm.2041.b trigger = { has_trait = lifestyle_blademaster } trait = lifestyle_blademaster custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes # Always gain stress from trait opt-outs. stress_impact = { base = massive_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # The AI should essentially always take this option. base = 1000 } } # I'll make you bleed! option = { name = harm.2041.c trigger = { OR = { prowess >= very_high_skill_rating has_trait = berserker has_trait = shieldmaiden } } skill = prowess trait = berserker trait = shieldmaiden random_list = { # You survive. 0 = { modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.2041.c.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.2041.c.tt.success left_icon = root custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes } } # You perish. 0 = { modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.2041.c.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.2041.c.tt.failure left_icon = root death = { death_reason = death_assassinated_by_soldiers } log_harm_event_death_as_variable_effect = yes } } } # Always gain stress from skill tests. if = { limit = { is_alive = yes } stress_impact = { base = major_stress_impact_gain calm = minor_stress_impact_loss } } ai_chance = { # The AI should take this option if a better one isn't available. base = 100 } } } ################################################## # Starvation # by Ewan Cowhig Croft # 2051 - 2060 ################################################## # Complications due to starvation from lack of supply. harm.2051 = { type = character_event title = harm.2051.t desc = harm.2051.desc theme = skull left_portrait = { character = root animation = sick } override_background = { reference = wilderness } cooldown = { years = 30 } trigger = { # Standard checks. harm_game_rule_enablement_trigger = yes # Army checks. # TIT-44620 always = no } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Characters in poor health shouldn't campaign. ## Medium health modifier = { add = 0.25 health <= medium_health } ## Fine health (which is somehow lower than medium) modifier = { add = 0.25 health <= fine_health } ## Poor health modifier = { add = 0.25 health <= poor_health } # Some characters do better on campaign. ## Martially educated characters are better able to cope with these harsh realities. modifier = { add = -0.45 has_trait = education_martial } ## Stubborn characters will stomach all manner of pains. modifier = { add = -0.5 has_trait = stubborn } } # My skin... like paper... option = { name = harm.2051.a random_list = { # You survive. 0 = { modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.2051.a.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.2051.a.tt.success left_icon = root custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes } } # You perish. 0 = { modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.2051.a.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.2051.a.tt.failure left_icon = root death = { death_reason = death_starved } log_harm_event_death_as_variable_effect = yes } } } if = { limit = { is_alive = yes } stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } } ai_chance = { # Unless they've got a special option, the AI should always choose this. base = 1 } } # The situation is still salvageable. option = { name = harm.2051.b trigger = { OR = { has_trait = logistician AND = { has_trait = desert_warrior location = { OR = { terrain = desert terrain = desert_mountains } } } AND = { has_trait = jungle_stalker location = { terrain = jungle } } AND = { has_trait = open_terrain_expert location = { OR = { terrain = drylands terrain = farmlands terrain = plains terrain = steppe } } } AND = { has_trait = rough_terrain_expert location = { OR = { terrain = hills terrain = mountains terrain = wetlands terrain = desert_mountains } } } AND = { has_trait = forest_fighter location = { OR = { terrain = forest terrain = taiga } } } AND = { has_trait = winter_soldier location_has_winter_trigger = yes } } } trait = logistician trait = desert_warrior trait = jungle_stalker trait = open_terrain_expert trait = rough_terrain_expert trait = forest_fighter trait = winter_soldier custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes # Always gain stress from trait opt-outs. stress_impact = { base = massive_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # The AI should essentially always take this option. base = 1000 } } # We have reserves, we _must_ have reserves! option = { name = harm.2051.c trigger = { stewardship >= @random_harm_standard_skill_check_value } skill = stewardship random_list = { # You survive. 0 = { modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.2051.c.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.2051.c.tt.success left_icon = root custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes } } # You perish. 0 = { modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.2051.c.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.2051.c.tt.failure left_icon = root death = { death_reason = death_starved } log_harm_event_death_as_variable_effect = yes } } } # Always gain stress from skill tests. if = { limit = { is_alive = yes } stress_impact = { base = major_stress_impact_gain calm = minor_stress_impact_loss } } ai_chance = { # The AI should take this option if a better one isn't available. base = 100 } } } ################################################## # Harried Each Step # by Ewan Cowhig Croft # 2061 - 2070 ################################################## # Retreating from battle and caught by enemy soldiers. harm.2061 = { type = character_event title = harm.2061.t desc = harm.2061.desc theme = skull left_portrait = { character = root animation = fear } right_portrait = { character = scope:killer animation = aggressive_spear hide_info = yes } override_background = { reference = battlefield } cooldown = { years = 30 } trigger = { # Standard checks. harm_game_rule_enablement_trigger = yes # Army checks. commanding_army = { is_army_in_combat = yes } # TIT-44621 always = no } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Maybe you like forward charges. modifier = { add = 0.25 OR = { has_trait = brave has_trait = reckless has_trait = unyielding_defender } } # Maybe you don't. modifier = { add = -0.75 OR = { has_trait = craven # Focused on coordination. has_trait = logistician } } } immediate = { # Generate a suitable soldier to use. # TIT-44621 } # Get away from me, you bastards! option = { name = harm.2061.a random_list = { # You survive. 0 = { modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.2061.a.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.2061.a.tt.success left_icon = root custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes } } # You perish. 0 = { modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.2061.a.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.2061.a.tt.failure left_icon = root death = { death_reason = death_cut_off_by_enemy_troops_defensive } log_harm_event_death_as_variable_effect = yes } } } if = { limit = { is_alive = yes } stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } } ai_chance = { # Unless they've got a special option, the AI should always choose this. base = 1 } } # FLEE! option = { name = harm.2061.b trigger = { has_trait = craven } trait = craven custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes # Always gain stress from trait opt-outs. stress_impact = { base = massive_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # The AI should essentially always take this option. base = 1000 } } # Blast the horn, the TitleAsName requires aid! option = { name = harm.2061.c trigger = { martial >= @random_harm_standard_skill_check_value } skill = martial random_list = { # You survive. 0 = { modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.2061.c.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.2061.c.tt.success left_icon = root custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes } } # You perish. 0 = { modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.2061.c.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.2061.c.tt.failure left_icon = root death = { death_reason = death_cut_off_by_enemy_troops_defensive } log_harm_event_death_as_variable_effect = yes } } } # Always gain stress from skill tests. if = { limit = { is_alive = yes } stress_impact = { base = major_stress_impact_gain calm = minor_stress_impact_loss } } ai_chance = { # The AI should take this option if a better one isn't available. base = 100 } } } ################################################## # A Disastrous Victory # by Ewan Cowhig Croft # 2071 - 2080 ################################################## # Pursuing too far ahead in battle and caught by enemy soldiers. harm.2071 = { type = character_event title = harm.2071.t desc = harm.2071.desc theme = skull left_portrait = { character = root animation = fear } right_portrait = { character = scope:killer animation = aggressive_spear hide_info = yes } override_background = { reference = battlefield } cooldown = { years = 30 } trigger = { # Standard checks. harm_game_rule_enablement_trigger = yes # Army checks. commanding_army = { is_army_in_combat = yes involved_combat_side = { OR = { is_combat_side_pursuing = yes enemy_side = { is_combat_side_retreating = yes } } } exists = enemy_side.side_primary_participant } } weight_multiplier = { base = 0 # Add the weightings. modifier = { add = harm_game_rule_likelihood_value } # Maybe you like forward charges. modifier = { add = 0.25 OR = { has_trait = brave has_trait = reckless has_trait = aggressive_attacker } } # Maybe you don't. modifier = { add = -0.75 OR = { has_trait = craven # Focused on coordination. has_trait = logistician } } } immediate = { # Generate a suitable soldier to use. commanding_army.involved_combat_side.enemy_side.side_primary_participant = { save_scope_as = actor } create_character = { gender_female_chance = actor_soldier_female_chance location = root.location template = new_warrior_character faith = scope:actor.faith culture = scope:actor.culture save_scope_as = killer } scope:killer = { add_character_flag = wear_armor } } # You'll not claim me, DeathGodName! option = { name = harm.2071.a random_list = { # You survive. 0 = { modifier = { add = harm_event_random_list_low_odd_success_value } desc = harm.2071.a.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.2071.a.tt.success left_icon = root custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes } } # You perish. 0 = { modifier = { add = harm_event_random_list_low_odd_failure_value } desc = harm.2071.a.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.2071.a.tt.failure left_icon = root death = { death_reason = death_cut_off_by_enemy_troops_offensive } log_harm_event_death_as_variable_effect = yes } } } if = { limit = { is_alive = yes } stress_impact = { base = medium_stress_impact_gain calm = minor_stress_impact_loss } } ai_chance = { # Unless they've got a special option, the AI should always choose this. base = 1 } } # FLEE! option = { name = harm.2071.b trigger = { has_trait = craven } trait = craven custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes # Always gain stress from trait opt-outs. stress_impact = { base = massive_stress_impact_gain calm = minor_stress_impact_loss } ai_chance = { # The AI should essentially always take this option. base = 1000 } } # Rally! Rally to the TitleAsName! option = { name = harm.2071.c trigger = { martial >= @random_harm_standard_skill_check_value } skill = martial random_list = { # You survive. 0 = { modifier = { add = harm_event_random_list_high_odd_success_value } desc = harm.2071.c.tt.success send_interface_toast = { type = event_toast_effect_good title = harm.2071.c.tt.success left_icon = root custom_tooltip = harm.0000.tt.spared_for_now log_harm_event_spared_as_variable_effect = yes } } # You perish. 0 = { modifier = { add = harm_event_random_list_high_odd_failure_value } desc = harm.2071.c.tt.failure send_interface_toast = { type = event_toast_effect_bad title = harm.2071.c.tt.failure left_icon = root death = { death_reason = death_cut_off_by_enemy_troops_offensive } log_harm_event_death_as_variable_effect = yes } } } # Always gain stress from skill tests. if = { limit = { is_alive = yes } stress_impact = { base = major_stress_impact_gain calm = minor_stress_impact_loss } } ai_chance = { # The AI should take this option if a better one isn't available. base = 100 } } after = { hidden_effect = { scope:killer = { death = { death_reason = death_vanished } } } } } ################################################## # RESPONSIVE INCAPABILITY EVENTS ################################################## # Various Maintenance Events # by Ewan Cowhig Croft # 9501 - 9550 ################################################## # Maintenance event fire the on_action containing the randoms.. harm.9501 = { hidden = yes trigger = { # Standard checks. is_ruler = yes harm_0000_not_on_dynastic_cooldown_trigger = yes harm_game_rule_enablement_trigger = yes # Mustn't _already_ have a trait rendering you senseless. is_incapable = no } immediate = { trigger_event = { on_action = harm_events_pulse } } }