﻿namespace = travel_danger_events

#########################################
# Travel Danger Events			        #
# travel_danger_events.7000-7999		#
# by Ariana Tranumn						#
#########################################

# travel_danger_events.7000 - Illness, an entourage member is bitten by a snake
scripted_effect travel_danger_events_7000_success_effect = {
    send_interface_toast = {
        type = event_toast_effect_good
        title = travel_danger_events.7000.treatment_good
        left_icon = root
        right_icon = scope:snake_victim
        scope:snake_victim = { remove_trait = ill }
    }
    scope:snake_victim = {
        add_opinion = {
            target = root
            modifier = cared_for_my_health_opinion
            opinion = 20
        }
    }
    current_travel_plan = {
        every_entourage_character = {
            custom_tooltip = every_victim_relation_tt
            limit = {
                NOR = {
                    this = scope:snake_victim
                    this = root
                }
                is_close_or_extended_family_of = scope:snake_victim
            }
            add_opinion = {
                target = root
                modifier = grateful_opinion
                opinion = 15
            }
        }
    }
}
scripted_effect travel_danger_events_7000_fail_effect = {
    if = {
        limit = {
            has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:snake_victim }
        }
        send_interface_toast = {
            title = travel_danger_events.7000.treatment_bad
            type = event_toast_effect_neutral
            left_icon = root
            right_icon = scope:snake_victim
            scope:snake_victim = {
                add_opinion = {
                    target = root
                    modifier = disappointed_opinion
                    opinion = -30
                }
            }
            hidden_effect = {
                stress_impact = {
                    callous = major_stress_impact_loss
                    sadistic = major_stress_impact_loss
                }
            }
        }

    }
    else = {
        send_interface_toast = {
            title = travel_danger_events.7000.treatment_bad
            type = event_toast_effect_bad
            left_icon = root
            right_icon = scope:snake_victim
            scope:snake_victim = {
                add_opinion = {
                    target = root
                    modifier = disappointed_opinion
                    opinion = -20
                }
            }
            hidden_effect = {
                stress_impact = {
                    callous = medium_stress_impact_loss
                    sadistic = medium_stress_impact_loss
                }
            }
        }
    }

}
travel_danger_events.7000 = {
    type = character_event
    title = travel_danger_events.7000.t
    desc = {
        desc = travel_danger_events.7000.desc_intro
        random_valid = {
            triggered_desc = {
                trigger = {
                    OR = {
                        location = { terrain = desert }
                        location = { terrain = desert_mountains }
                    }
                }
                desc = travel_danger_events.7000.desc_desert
            }
            triggered_desc = {
                trigger = {
                    location = { terrain = oasis }
                }
                desc = travel_danger_events.7000.desc_oasis
            }
            triggered_desc = {
                trigger = {
                    OR = {
                        location = { terrain = mountains }
                        location = { terrain = taiga }
                        location = { terrain = jungle }
                        location = { terrain = forest }
                    }
                }
                desc = travel_danger_events.7000.desc_mountains
            }
            triggered_desc = {
                trigger = {
                    OR = {
                        location = { terrain = plains }
                        location = { terrain = hills }
                        location = { terrain = steppe }
                        location = { terrain = drylands }
                        location = { terrain = farmlands }
                    }
                }
                desc = travel_danger_events.7000.desc_hills
            }
            triggered_desc = {
                trigger = {
                    OR = {
                        location = { terrain = floodplains }
                        location = { terrain = wetlands }
                    }
                }
                desc = travel_danger_events.7000.desc_floodplains
            }
        }
        desc = travel_danger_events.7000.desc
        triggered_desc = {
            trigger = {
                scope:snake_victim = { has_character_flag = bit_by_snake_recently }
            }
            desc = travel_danger_events.7000.desc_recent
        }
    }
    theme = travel_danger
    left_portrait = {
        character = root
        triggered_animation = {
            trigger = {
                OR = {
                    has_relation_rival = scope:snake_victim
                    has_relation_nemesis = scope:snake_victim
                    has_trait = callous
                    has_trait = sadistic
                }
            }
            animation = personality_callous
        }
        triggered_animation = {
            trigger = {
                scope:snake_victim = { has_character_flag = bit_by_snake_recently }
            }
            animation = stress
        }
        animation = worry
    }
    right_portrait = {
        character = scope:snake_victim
        animation = sick
    }
    lower_center_portrait = {
        trigger = {
            exists = scope:treatment_giver
        }
        character = scope:treatment_giver
    }
    trigger = {
        is_location_valid_for_travel_event_on_land = yes
        OR = {
            has_government = nomad_government
            is_landless_adventurer = yes
        }
        current_travel_plan ?= {
            any_entourage_character = {
                is_adult = yes
                count >= 2
                NOT = {
                    this = root
                    has_any_illness = yes
                    has_character_flag = travel_danger_recently_ill
                }
            }
        }
        exists = location #Unop: Just in case character is lost in limbo 
        location = { is_sea_province = no } #Unop: Prevent this event to fire at sea
    }
    cooldown = { months = 6 }

    immediate = {
        mp_delay_travel_plan = { DAYS = 30 }
        current_travel_plan = {
            if = {
                limit = {
                    any_entourage_character = {
                        has_court_position = court_physician_court_position
                        NOT = {
                            this = root
                        }
                    }
                }
                random_entourage_character = {
                    limit = {
                        has_court_position = court_physician_court_position
                        NOT = {
                            this = root
                        }
                    }
                    save_scope_as = treatment_giver
                }
            }
            else_if = {
                limit = {
                    any_entourage_character = {
                        NOT = {
                            this = root
                        }
                    }
                }
                ordered_entourage_character = {
                    limit = {
                        learning >= high_skill_rating
                        is_adult = yes
                        NOT = {
                            this = root
                        }
                    }
                    order_by = {
                        add = learning
                        if = {
                            limit = {
                                has_trait = lifestyle_physician
                            }
                            add = 10
                        }
                    }
                    save_scope_as = treatment_giver
                }
            }
            random_entourage_character = {
                limit = {
                    is_adult = yes
                    NOT = {
                        this = root
                        scope:treatment_giver ?= this
                        has_any_illness = yes
                        has_character_flag = travel_danger_recently_ill
                    }
                }
                add_character_flag = {
                    flag = travel_danger_recently_ill
                    months = 12
                }
                contract_disease_effect = { DISEASE = ill TREATMENT_EVENT = no }
                save_scope_as = snake_victim
            }
            #Save destination scope
            next_destination_province = { save_scope_as = destination }
        }
        location = { save_scope_as = current_location }
    }

    option = { # Just wait for them to get better
        name = {
            text = {
                desc = {
                    random_valid = {
                        desc = travel_danger_events.7000.a_1
                        desc = travel_danger_events.7000.a_2
                        desc = travel_danger_events.7000.a_3
                    }
                }
            }
        }
        current_travel_plan = {
            delay_travel_plan = { days = 90 }
        }
        random_list = {
            69 = {
                desc = travel_danger_events.7000.a_recover
                show_chance = no
                send_interface_toast = {
                    type = event_toast_effect_good
                    title = travel_danger_events.7000.a_recover
                    left_icon = root
                    right_icon = scope:snake_victim
                    scope:snake_victim = { remove_trait = ill }
                    add_prestige = minor_prestige_gain
                }
                current_travel_plan = {
                    every_entourage_character = {
                        custom_tooltip = every_victim_relation_tt
                        limit = {
                            NOR = {
                                this = scope:snake_victim
                                this = root
                            }
                            is_close_or_extended_family_of = scope:snake_victim
                        }
                        add_opinion = {
                            target = root
                            modifier = grateful_opinion
                            opinion = 15
                        }
                    }
                }
            }
            30 = {
                modifier = {
                    add = 10
                    has_character_flag = bit_by_snake_recently
                }
                desc = travel_danger_events.7000.a_dont_recover
                show_chance = no
                send_interface_toast = {
                    type = event_toast_effect_neutral
                    title = travel_danger_events.7000.a_dont_recover
                    left_icon = root
                    right_icon = scope:snake_victim
                }
            }
            1 = {
                modifier = {
                    add = 2
                    has_character_flag = bit_by_snake_recently
                }
                modifier = {
                    add = 1
                    has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:snake_victim }
                }
                desc = travel_danger_events.7000.a_dont_recover_die
                if = {
                    limit = {
                        has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:snake_victim }
                    }
                    send_interface_toast = {
                        type = event_toast_effect_neutral
                        title = travel_danger_events.7000.a_dont_recover_die
                        left_icon = root
                        right_icon = scope:snake_victim
                        scope:snake_victim = {
                            death = {
                                death_reason = death_snake
                            }
                        }
                        hidden_effect = {
                            stress_impact = {
                                base = minor_stress_impact_loss
                            }
                        }
                    }
                }
                else = {
                    send_interface_toast = {
                        type = event_toast_effect_bad
                        title = travel_danger_events.7000.a_dont_recover_die
                        left_icon = root
                        right_icon = scope:snake_victim
                        scope:snake_victim = {
                            death = {
                                death_reason = death_snake
                            }
                        }
                    }
                }
            }
        }
        scope:snake_victim = {
            if = {
                limit = {
                    has_any_bad_relationship_with_character_trigger = { CHARACTER = root }
                }
                add_opinion = {
                    target = root
                    modifier = cared_for_my_health_opinion
                    opinion = 10
                }
            }
            else = {
                add_opinion = {
                    target = root
                    modifier = cared_for_my_health_opinion
                    opinion = 20
                }
            }
        }
        if = {
            limit = {
                has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:snake_victim }
            }
            stress_impact = {
                compassionate = minor_stress_impact_loss
                vengeful = medium_stress_impact_gain
                callous = major_stress_impact_gain
                impatient = medium_stress_impact_gain
            }
        }
        else = {
            stress_impact = {
                compassionate = medium_stress_impact_loss
                impatient = medium_stress_impact_gain
                callous = medium_stress_impact_gain
            }
        }
        ai_chance = {
            base = 100
            ai_value_modifier = {
                ai_compassion = 0.75
                ai_rationality = 0.1
            }
            modifier = {
                has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:snake_victim }
                factor = 0.1
            }
            modifier = {
                OR = {
                    has_any_good_relationship_with_character_trigger = { CHARACTER = scope:snake_victim }
                    is_close_or_extended_family_of = scope:snake_victim
                }
                factor = 1.5
            }
            modifier = {
                exists = scope:treatment_giver
                factor = 0
            }
        }
    }

    option = { #Treat them yourself (learning)
        name = travel_danger_events.7000.b
        trigger = {
            # To prevent too many options
            OR = {
                has_trait = whole_of_body
                has_trait = lifestyle_herbalist
                has_trait = lifestyle_physician
                learning >= high_skill_rating
            }
        }
        flavor = travel_danger_events.7000.b_flavor
        duel = {
            skill = learning
            value = high_skill_rating
            75 = {
                compare_modifier = {
                    value = scope:duel_value
                    multiplier = 3.5
                }
                desc = travel_danger_events.7000.treatment_good
                travel_danger_events_7000_success_effect = yes
                if = {
                    limit = {
                        has_trait = lifestyle_physician
                        has_trait_xp = {
                            trait = lifestyle_physician
                            value < 100
                        }
                    }
                    add_trait_xp = {
                        trait = lifestyle_physician
                        value = 10
                    }
                }
            }
            25 = {
                compare_modifier = {
                    value = scope:duel_value
                    multiplier = -3.5
                }
                modifier = {
                    add = 5
                    has_character_flag = bit_by_snake_recently
                }
                desc = travel_danger_events.7000.treatment_bad
                travel_danger_events_7000_fail_effect = yes
            }
        }
        if = {
            limit = {
                has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:snake_victim }
            }
            stress_impact = {
                compassionate = medium_stress_impact_loss
                vengeful = medium_stress_impact_gain
                callous = major_stress_impact_gain
            }
        }
        else = {
            stress_impact = {
                compassionate = major_stress_impact_loss
                callous = medium_stress_impact_gain
            }
        }

        ai_chance = {
            base = 100
            ai_value_modifier = {
                ai_compassion = 0.75
                ai_rationality = 0.5
            }
            modifier = {
                OR = {
                    has_any_good_relationship_with_character_trigger = { CHARACTER = scope:snake_victim }
                    is_close_or_extended_family_of = scope:snake_victim
                }
                factor = 1.5
            }
            modifier = {
                has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:snake_victim }
                factor = 0.1
            }
        }
    }

    option = { # Find someone local to treat them
        name = {
            text = {
                first_valid = {
                    triggered_desc = {
                        trigger = {
                            OR = {
                                scope:current_location.county.holder = { is_contact_of = root }
                                has_any_good_relationship_with_character_trigger = { CHARACTER = scope:current_location.county.holder }
                            }
                        }
                        desc = travel_danger_events.7000.c_known
                    }
                    desc = travel_danger_events.7000.c
                }
            }
        }
        trigger = {
            NOR = {
                # To prevent too many options
                has_trait = whole_of_body
                has_trait = lifestyle_herbalist
                has_trait = lifestyle_physician
                learning >= high_skill_rating
                exists = scope:treatment_giver
            }
            #cant be in your own realm
            OR = {
                NOT = {
                    any_sub_realm_title = { this = root.location.barony }
                }
                is_landed = no
            }
        }
        if = {
            limit = {
                OR = {
                    scope:current_location.county.holder = { is_contact_of = root }
                    has_any_good_relationship_with_character_trigger = { CHARACTER = scope:current_location.county.holder }
                }
            }
            remove_short_term_gold = minor_gold_value
            custom_tooltip = travel_danger_events.7000.c_known_tt
            travel_danger_events_7000_success_effect = yes
        }
        else = {
            custom_tooltip = travel_danger_events.7000.c_tt
            remove_short_term_gold = medium_gold_value
            #complete rng
            random_list = {
                60 = {
                    show_chance = no
                    desc = travel_danger_events.7000.treatment_good
                    travel_danger_events_7000_success_effect = yes
                }
                40 = {
                    modifier = {
                        add = 5
                        has_character_flag = bit_by_snake_recently
                    }
                    show_chance = no
                    desc = travel_danger_events.7000.treatment_bad
                    travel_danger_events_7000_fail_effect = yes
                }
            }
        }


        if = {
            limit = {
                has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:snake_victim }
            }
            stress_impact = {
                compassionate = medium_stress_impact_loss
                vengeful = medium_stress_impact_gain
                callous = major_stress_impact_gain
                greedy = medium_stress_impact_gain
            }
        }
        else = {
            stress_impact = {
                compassionate = major_stress_impact_loss
                callous = medium_stress_impact_gain
                greedy = medium_stress_impact_gain
            }
        }
        ai_chance = {
            base = 100
            ai_value_modifier = {
                ai_compassion = 0.75
                ai_greed = 0.1
                ai_rationality = 0.5
            }
            modifier = {
                OR = {
                    has_any_good_relationship_with_character_trigger = { CHARACTER = scope:snake_victim }
                    is_close_or_extended_family_of = scope:snake_victim
                }
                factor = 1.5
            }
            modifier = {
                has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:snake_victim }
                factor = 0.1
            }
        }
    }

    option = { # Have the treatment person attempt to heal them
        name = {
            text = {
                first_valid = {
                    triggered_desc = {
                        trigger = {
                            scope:treatment_giver = {
                                has_court_position = court_physician_court_position
                            }
                        }
                        desc = travel_danger_events.7000.d_physician
                    }
                    desc = travel_danger_events.7000.d
                }
            }
        }
        trigger = {
            exists = scope:treatment_giver
        }
        if = {
            limit = {
                scope:treatment_giver = {
                    has_court_position = court_physician_court_position
                }
            }
            custom_tooltip = travel_danger_events.7000.d_tt_phys
            travel_danger_events_7000_success_effect = yes
        }
        else = {
            custom_tooltip = travel_danger_events.7000.d_tt
            scope:treatment_giver = {
                duel = {
                    skill = learning
                    value = high_skill_rating
                    75 = {
                        compare_modifier = {
                            value = scope:duel_value
                            multiplier = 3.5
                        }
                        desc = travel_danger_events.7000.treatment_good
                        travel_danger_events_7000_success_effect = yes
                        if = {
                            limit = {
                                has_trait = lifestyle_physician
                                has_trait_xp = {
                                    trait = lifestyle_physician
                                    value < 100
                                }
                            }
                            add_trait_xp = {
                                trait = lifestyle_physician
                                value = 10
                            }
                        }
                    }
                    25 = {
                        compare_modifier = {
                            value = scope:duel_value
                            multiplier = -3.5
                        }
                        modifier = {
                            add = 5
                            has_character_flag = bit_by_snake_recently
                        }
                        desc = travel_danger_events.7000.treatment_bad
                        travel_danger_events_7000_fail_effect = yes
                    }
                }
            }
        }
        if = {
            limit = {
                has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:snake_victim }
            }
            stress_impact = {
                compassionate = medium_stress_impact_loss
                vengeful = medium_stress_impact_gain
                callous = major_stress_impact_gain
            }
        }
        else = {
            stress_impact = {
                compassionate = major_stress_impact_loss
                callous = medium_stress_impact_gain
            }
        }

        ai_chance = {
            base = 100
            ai_value_modifier = {
                ai_compassion = 0.75
                ai_rationality = 0.5
            }
            modifier = {
                OR = {
                    has_any_good_relationship_with_character_trigger = { CHARACTER = scope:snake_victim }
                    is_close_or_extended_family_of = scope:snake_victim
                }
                factor = 1.5
            }
            modifier = {
                has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:snake_victim }
                factor = 0.1
            }
        }
    }

    option = { # Give them some food
        name = travel_danger_events.7000.e
        trigger = {
            is_landless_adventurer = yes
            domicile ?= {
                provisions >= minor_provisions_value
            }
            NOR = {
                has_trait = whole_of_body
                has_trait = lifestyle_herbalist
                has_trait = lifestyle_physician
                learning >= high_skill_rating
                exists = scope:treatment_giver
            }
        }
        flavor = travel_danger_events.7000.e_flavor
        current_travel_plan = {
            delay_travel_plan = { days = 30 }
        }
        domicile = {
            change_provisions = minor_provisions_loss
        }
        random_list = {
            80 = {
                desc = travel_danger_events.7000.a_recover
                show_chance = no
                send_interface_toast = {
                    type = event_toast_effect_good
                    title = travel_danger_events.7000.a_recover
                    left_icon = root
                    right_icon = scope:snake_victim
                    scope:snake_victim = { remove_trait = ill }
                    add_prestige = minor_prestige_gain
                }
                current_travel_plan = {
                    every_entourage_character = {
                        custom_tooltip = every_victim_relation_tt
                        limit = {
                            NOR = {
                                this = scope:snake_victim
                                this = root
                            }
                            is_close_or_extended_family_of = scope:snake_victim
                        }
                        add_opinion = {
                            target = root
                            modifier = grateful_opinion
                            opinion = 15
                        }
                    }
                }
            }
            20 = {
                modifier = {
                    add = 10
                    has_character_flag = bit_by_snake_recently
                }
                desc = travel_danger_events.7000.a_dont_recover
                show_chance = no
                send_interface_toast = {
                    type = event_toast_effect_neutral
                    title = travel_danger_events.7000.a_dont_recover
                    left_icon = root
                    right_icon = scope:snake_victim
                }
            }
        }

        scope:snake_victim = {
            if = {
                limit = {
                    has_any_bad_relationship_with_character_trigger = { CHARACTER = root }
                }
                add_opinion = {
                    target = root
                    modifier = cared_for_my_health_opinion
                    opinion = 10
                }
            }
            else = {
                add_opinion = {
                    target = root
                    modifier = cared_for_my_health_opinion
                    opinion = 20
                }
            }
        }
        if = {
            limit = {
                has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:snake_victim }
            }
            stress_impact = {
                compassionate = minor_stress_impact_loss
                vengeful = medium_stress_impact_gain
                impatient = medium_stress_impact_gain
                greedy = medium_stress_impact_gain
            }
        }
        else = {
            stress_impact = {
                compassionate = medium_stress_impact_loss
                callous = medium_stress_impact_gain
                greedy = medium_stress_impact_gain
            }
        }

        ai_chance = {
            base = 100
            ai_value_modifier = {
                ai_compassion = 0.75
                ai_greed = 0.1
                ai_rationality = 0.1
            }
            modifier = {
                has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:snake_victim }
                factor = 0.1
            }
            modifier = {
                OR = {
                    has_any_good_relationship_with_character_trigger = { CHARACTER = scope:snake_victim }
                    is_close_or_extended_family_of = scope:snake_victim
                }
                factor = 1.5
            }
            modifier = {
                exists = scope:treatment_giver
                factor = 0
            }
        }
    }

    option = { # Leave them behind
        name = {
            text = {
                first_valid = {
                    triggered_desc = {
                        trigger = {
                            location = {
                                is_sea_province = yes
                            }
                        }
                        desc = travel_danger_events.7000.f_sea
                    }
                    desc = travel_danger_events.7000.f
                }
            }
        }

        trigger = {
            OR = {
                has_trait = callous
                has_trait = sadistic
                has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:snake_victim }
            }
        }

        current_travel_plan = {
            remove_character = scope:snake_victim
        }

        scope:snake_victim = {
            add_opinion = {
                target = root
                modifier = hurt_opinion
                opinion = -40
            }
        }

        random = {
            chance = 20
            send_interface_toast = {
                type = event_toast_effect_neutral
                title = travel_danger_events.7000.a_dont_recover_die
                left_icon = root
                right_icon = scope:snake_victim
                scope:snake_victim = {
                    death = {
                        death_reason = death_snake
                    }
                }
            }
        }

        if = {
            limit = {
                has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:snake_victim }
            }
            stress_impact = {
                compassionate = medium_stress_impact_gain
                vengeful = medium_stress_impact_loss
                callous = major_stress_impact_loss
                sadistic = major_stress_impact_loss
            }
        }
        else = {
            stress_impact = {
                compassionate = major_stress_impact_gain
                callous = medium_stress_impact_loss
                sadistic = medium_stress_impact_loss
            }
        }

        ai_chance = {
            base = 100
            modifier = {
                OR = {
                    has_any_good_relationship_with_character_trigger = { CHARACTER = scope:snake_victim }
                    is_close_or_extended_family_of = scope:snake_victim
                }
                factor = 0.1
            }
            modifier = {
                has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:snake_victim }
                factor = 1.5
            }
        }
    }

    option = { # Ok idc lol
        name = travel_danger_events.7000.g
        trigger = {
            # To prevent too many options
            NOR = {
                has_trait = callous
                has_trait = sadistic
                has_any_bad_relationship_with_character_trigger = { CHARACTER = scope:snake_victim }
            }
        }

        scope:snake_victim = {
            add_opinion = {
                target = root
                modifier = hurt_opinion
                opinion = -20
            }
        }

        random = {
            chance = 5
            send_interface_toast = {
                type = event_toast_effect_bad
                title = travel_danger_events.7000.a_dont_recover_die
                left_icon = root
                right_icon = scope:snake_victim
                scope:snake_victim = {
                    death = {
                        death_reason = death_snake
                    }
                }
            }
        }

        stress_impact = {
            compassionate = medium_stress_impact_gain
        }

        ai_chance = {
            base = 100
            ai_value_modifier = {
                ai_compassion = 0.25
            }
            modifier = {
                OR = {
                    has_any_good_relationship_with_character_trigger = { CHARACTER = scope:snake_victim }
                    is_close_or_extended_family_of = scope:snake_victim
                }
                factor = 0.1
            }
            modifier = {
                exists = scope:treatment_giver
                factor = 0.25
            }
        }
    }

    after = {
		if = {
			limit = { scope:snake_victim = { is_alive = yes } }
			scope:snake_victim = {
				add_character_flag = {
					flag = bit_by_snake_recently
					years = 2
				}
			}
		}
        mp_resume_travel_plan = yes
    }
}