####################################################################### # EFFECT LIST ####################################################################### # !!! Remember to add all new effects with a short description here !!! ####################################################################### notify_puppeteer_of_outcome_effect = { if = { limit = { exists = scope:actor exists = scope:puppet_or_actor scope:is_puppet_action ?= yes scope:actor != scope:recipient } scope:actor = { send_interface_toast = { type = $TYPE$ title = $TITLE$ left_icon = scope:puppet_or_actor right_icon = scope:recipient } } } } blackmail_interaction_effect = { if = { limit = { NOT = { exists = scope:puppet_or_actor } } scope:actor = { save_scope_as = puppet_or_actor } } scope:puppet_or_actor = { if = { limit = { exists = scope:target } blackmail_target_with_secret_effect = { SECRET = scope:target TARGET = scope:recipient } reverse_add_opinion = { modifier = blackmailing_me_opinion target = scope:recipient } } if = { limit = { has_government = administrative_government } if = { limit = { scope:target = { is_criminal_for = scope:recipient } } change_influence = medium_influence_gain } else_if = { limit = { scope:target = { is_shunned_for = scope:recipient } } change_influence = minor_influence_gain } else = { change_influence = miniscule_influence_gain } } stress_and_fulfillment_impact = { compassionate = medium_stress_impact_gain trusting = medium_stress_impact_gain honest = minor_stress_impact_gain just = minor_stress_impact_gain forgiving = minor_stress_impact_gain } } scope:target = { if = { limit = { exists = var:promised_not_to_reveal var:promised_not_to_reveal = scope:puppet_or_actor } scope:recipient = { add_opinion = { target = scope:puppet_or_actor modifier = broke_promise } } } } scope:recipient = { #Nudge towards rivalry if = { limit = { NOR = { has_relation_rival = scope:puppet_or_actor has_relation_potential_rival = scope:puppet_or_actor } } set_relation_potential_rival = scope:puppet_or_actor } } } torture_blind_castrate_disfigure_opinion_effect = { if = { limit = { NOT = { exists = scope:puppet_or_actor } } scope:actor = { save_scope_as = puppet_or_actor } } scope:recipient = { add_opinion = { modifier = $VERB$_me target = scope:puppet_or_actor } if = { limit = { has_opinion_modifier = { modifier = grateful_opinion target = scope:puppet_or_actor } } remove_opinion = { modifier = grateful_opinion target = scope:puppet_or_actor } } if = { limit = { primary_spouse ?= { is_alive = yes } NOT = { primary_spouse = { this = scope:puppet_or_actor } } } primary_spouse = { add_to_list = family_of_tortured } } every_close_family_member = { limit = { this != scope:puppet_or_actor } add_to_list = family_of_tortured } if = { limit = { any_in_list = { list = family_of_tortured count = 1 always = yes } } every_in_list = { list = family_of_tortured add_opinion = { target = scope:puppet_or_actor modifier = $VERB$_family_member } } } else_if = { limit = { any_in_list = { list = family_of_tortured count > 1 always = yes } } every_in_list = { list = family_of_tortured custom = all_close_family_and_spouses add_opinion = { target = scope:puppet_or_actor modifier = $VERB$_family_member } } } } } torture_interaction_actor_effect = { if = { limit = { NOT = { exists = scope:puppet_or_actor } } scope:actor = { save_scope_as = puppet_or_actor } } scope:puppet_or_actor = { ###SECRETS### custom_tooltip = torture_interaction_actor_effects.secrets.tt ###STRESS### #Stress loss if they are my rival I hate them if = { limit = { has_relation_rival = scope:recipient } if = { limit = { NOR = { has_trait = sadistic has_trait = vengeful has_trait = compassionate has_trait = forgiving } } add_stress = medium_stress_loss } else = { stress_and_fulfillment_impact = { sadistic = major_stress_impact_loss vengeful = massive_stress_impact_loss compassionate = minor_stress_impact_gain forgiving = minor_stress_impact_gain } } } else_if = { # Torturing infidels is relaxing limit = { has_trait = zealous scope:puppet_or_actor.faith != scope:recipient.faith } if = { limit = { NOR = { has_trait = sadistic has_trait = compassionate has_trait = forgiving } } add_stress = medium_stress_loss } else = { stress_and_fulfillment_impact = { sadistic = major_stress_impact_loss compassionate = minor_stress_impact_gain forgiving = minor_stress_impact_gain } } } else_if = { limit = { NOT = { has_trait = sadistic } scope:recipient = { OR = { is_child_of = scope:puppet_or_actor is_grandchild_of = scope:puppet_or_actor is_great_grandchild_of = scope:puppet_or_actor } } } stress_and_fulfillment_impact = { base = medium_stress_impact_loss compassionate = massive_stress_impact_gain craven = major_stress_impact_gain just = medium_stress_impact_gain forgiving = major_stress_impact_gain generous = medium_stress_impact_gain trusting = minor_stress_impact_gain content = minor_stress_impact_gain family_first = minor_stress_impact_gain } } else = { stress_and_fulfillment_impact = { sadistic = medium_stress_impact_loss compassionate = major_stress_impact_gain craven = major_stress_impact_gain just = medium_stress_impact_gain forgiving = medium_stress_impact_gain generous = medium_stress_impact_gain trusting = minor_stress_impact_gain content = minor_stress_impact_gain } } ###DREAD### if = { limit = { scope:recipient = { OR = { is_powerful_vassal_of = scope:puppet_or_actor # Is your powerful vassal AND = { # Is an Emperor exists = primary_title primary_title.tier >= tier_empire } target_is_vassal_or_below = scope:puppet_or_actor # Your liege/s scope:puppet_or_actor.faith.religious_head = scope:recipient # Your head of faith } } } add_dread = torture_interaction_massive_dread_gain } else_if = { limit = { scope:recipient = { OR = { AND = { # Is your vassal, and higher than Baron is_vassal_of = scope:puppet_or_actor primary_title.tier > tier_barony } AND = { # Is a King exists = primary_title primary_title.tier >= tier_kingdom } } } } add_dread = torture_interaction_major_dread_gain } else_if = { limit = { scope:recipient = { OR = { scope:puppet_or_actor = { # Torturing close family of your vassals is dreadful... any_vassal = { is_close_family_of = scope:recipient } } scope:puppet_or_actor = { # Torturing close family of your liege/s is the same... any_liege_or_above = { is_close_family_of = scope:recipient } } AND = { # Peer Vassals exists = primary_title primary_title.tier > tier_barony liege ?= scope:puppet_or_actor.liege } AND = { # Is a Duke exists = primary_title primary_title.tier >= tier_duchy } } } } add_dread = torture_interaction_medium_dread_gain } else_if = { limit = { scope:recipient = { OR = { is_spouse_of = scope:puppet_or_actor # Your own spouse is_close_or_extended_family_of = scope:puppet_or_actor # Your own family AND = { exists = primary_title primary_title.tier >= tier_county # Is a Count } scope:puppet_or_actor = { # Torturing extended family of your vassals is dreadful... any_vassal = { is_extended_family_of = scope:recipient } } scope:puppet_or_actor = { # Torturing extended family of your liege/s is the same... any_liege_or_above = { is_extended_family_of = scope:recipient } } } } } add_dread = torture_interaction_minor_dread_gain } ###OPINIONS### torture_blind_castrate_disfigure_opinion_effect = { VERB = tortured } ###CHURCH OPINION & PIETY### if = { limit = { NOR = { rite ?= { rite_has_parameter = torturing_prisoners_grants_piety } # Divine Retribution cancels out faith-based penalties has_perk = divine_retribution_perk } } add_piety = medium_piety_loss if = { limit = { any_learning_councillor = { opinion = { target = scope:recipient value >= neutral_opinion } } } random_learning_councillor = { add_opinion = { modifier = impious_opinion opinion = -10 target = scope:puppet_or_actor } } } } else_if = { limit = { rite ?= { rite_has_parameter = torturing_prisoners_grants_piety } } add_piety = medium_piety_gain } } } torturer_interaction_recipient_effect = { scope:recipient = { add_character_modifier = { modifier = recently_tortured years = 5 } # Poetry does not cause lunacy. if = { limit = { NOT = { scope:torture_method = flag:poetry } } random = { chance = 5 modifier = { scope:puppet_or_actor = { has_trait = torturer } add = 10 } add_trait = lunatic_1 } } if = { limit = { OR = { rite ?= { rite_has_parameter = reduced_stress_from_torture } has_personal_tenet_flag = reduced_stress_from_torture } } if = { limit = { is_playable_character = yes } # Only playable characters have spiritual fulfillment change_spiritual_fulfillment = medium_spiritual_fulfillment_value } } else_if = { limit = { NOR = { has_trait = craven has_trait = brave } } add_stress = massive_stress_impact_gain } else = { stress_and_fulfillment_impact = { craven = monumental_stress_gain brave = medium_stress_impact_gain } } if = { # Remove the flag blocking other prison interactions limit = { has_character_flag = is_being_tortured } remove_character_flag = is_being_tortured } torture_memory_effect = { VICTIM = scope:recipient TORTURER = scope:puppet_or_actor TYPE = torture } } } illegal_imprisonment_dread_effect = { ###DREAD### scope:puppet_or_actor = { if = { limit = { NOT = { has_imprisonment_reason = scope:recipient } } if = { limit = { OR = { is_spouse_of = scope:recipient is_close_family_of = scope:recipient scope:recipient = { tier_or_related_liege_tier_greater_or_equal_trigger = { TIER = tier_kingdom } } } } add_dread = medium_dread_gain } else_if = { limit = { OR = { scope:recipient = { tier_or_related_liege_tier_equal_trigger = { TIER = tier_duchy } } scope:recipient = { tier_or_related_liege_tier_equal_trigger = { TIER = tier_county } } } } add_dread = minor_dread_gain } } } } blind_castrate_and_disfigure_effect = { ###STRESS## scope:puppet_or_actor = { if = { limit = { has_relation_rival = scope:recipient } if = { limit = { NOR = { has_trait = sadistic #Extra stress has_trait = vengeful #Extra stress has_trait = compassionate #Lessened impact has_trait = forgiving #Lessened impact } } add_stress = medium_stress_loss } else = { stress_and_fulfillment_impact = { sadistic = major_stress_impact_loss vengeful = major_stress_impact_loss compassionate = minor_stress_impact_gain forgiving = minor_stress_impact_gain } } } #Regular stress else = { stress_and_fulfillment_impact = { sadistic = minor_stress_impact_loss compassionate = massive_stress_impact_gain craven = major_stress_impact_gain just = medium_stress_impact_gain forgiving = medium_stress_impact_gain generous = medium_stress_impact_gain trusting = minor_stress_impact_gain gregarious = minor_stress_impact_gain calm = minor_stress_impact_gain content = minor_stress_impact_gain honest = minor_stress_impact_gain } } ###DREAD### if = { limit = { OR = { is_spouse_of = scope:recipient is_close_family_of = scope:recipient scope:recipient = { tier_or_related_liege_tier_greater_or_equal_trigger = { TIER = tier_kingdom } } #Kingdom & empire } } add_dread = major_dread_gain } else_if = { limit = { OR = { scope:recipient = { tier_or_related_liege_tier_equal_trigger = { TIER = tier_duchy } } scope:recipient = { tier_or_related_liege_tier_equal_trigger = { TIER = tier_county } } } } add_dread = medium_dread_gain } else = { add_dread = minor_dread_gain } } } blind_opinion_effect = { ###OPINIONS### scope:recipient = { add_opinion = { modifier = blinded_me target = scope:actor } if = { limit = { exists = primary_spouse NOT = { primary_spouse = { this = scope:actor } } } primary_spouse = { add_to_list = family_of_blinded } } every_close_family_member = { limit = { this != scope:actor } add_to_list = family_of_blinded } if = { limit = { any_in_list = { list = family_of_blinded count = 1 always = yes } } every_in_list = { list = family_of_blinded add_opinion = { target = scope:actor modifier = blinded_family_member } } } else_if = { limit = { any_in_list = { list = family_of_blinded count > 1 always = yes } } every_in_list = { list = family_of_blinded custom = all_close_family_and_spouses add_opinion = { target = scope:actor modifier = blinded_family_member } } } } } blind_castrated_disfigured_recipient_support_effect = { #To be used in other effects random = { chance = 5 add_trait = lunatic_1 } if = { limit = { NOR = { has_trait = craven has_trait = brave } } add_stress = major_stress_impact_gain } else = { stress_and_fulfillment_impact = { craven = massive_stress_gain brave = medium_stress_impact_gain } } add_character_flag = { #TO make sure that they don't get spammed about the release flag = block_for_prison_release_notification days = 2 } release_from_prison = yes if = { limit = { scope:recruit ?= yes } scope:actor = { add_courtier = scope:recipient } } if = { # Remove the flag blocking other prison interactions limit = { has_character_flag = is_being_tortured } remove_character_flag = is_being_tortured } } blind_recipient_effect = { scope:recipient = { if = { limit = { scope:actor = { is_ai = no } } add_trait_force_tooltip = blind #This is because we want to show a blinded portrait it prison.1020 for players, then we add the trait in the immediate but we still want a tooltip } else = { add_trait = blind } torture_memory_effect = { VICTIM = scope:recipient TORTURER = scope:actor TYPE = blind } add_character_modifier = { modifier = recently_blinded years = 1 } blind_castrated_disfigured_recipient_support_effect = yes } } castrate_recipient_effect = { scope:recipient = { if = { limit = { age < 12 } ep3_child_castration_effect = yes } else = { ep3_youth_castration_effect = yes } blind_castrated_disfigured_recipient_support_effect = yes } } disfigure_recipient_effect = { scope:recipient = { if = { limit = { scope:actor = { is_ai = no } } #This is because we want to show a blinded portrait it prison.1030 for players, then we add the trait in the immediate but we still want a tooltip add_trait_force_tooltip = disfigured } else = { add_trait = disfigured } torture_memory_effect = { VICTIM = scope:recipient TORTURER = scope:actor TYPE = disfigured } add_character_modifier = { modifier = recently_disfigured years = 1 } blind_castrated_disfigured_recipient_support_effect = yes } } maimed_recipient_effect = { scope:recipient = { if = { limit = { scope:maim_type = flag:arm } if = { limit = { scope:actor = { is_ai = no } } #This is because we want to show a blinded portrait it prison.1030 for players, then we add the trait in the immediate but we still want a tooltip apply_maimed_trait_and_modifier_effect = yes } else = { apply_maimed_trait_and_modifier_effect = yes } torture_memory_effect = { VICTIM = scope:recipient TORTURER = scope:actor TYPE = maim_arm } } else_if = { limit = { scope:maim_type = flag:leg } if = { limit = { scope:actor = { is_ai = no } } #This is because we want to show a blinded portrait it prison.1030 for players, then we add the trait in the immediate but we still want a tooltip add_trait_force_tooltip = one_legged } else = { add_trait = one_legged } torture_memory_effect = { VICTIM = scope:recipient TORTURER = scope:actor TYPE = maim_leg } add_character_modifier = { modifier = recently_maimed_modifier years = 1 } } blind_castrated_disfigured_recipient_support_effect = yes } } war_for_imprison_effect = { $LIEGE$ = { save_temporary_scope_as = liege_temp } $REBEL$ = { save_temporary_scope_as = rebel_temp save_scope_value_as = { name = war_for_imprisonment_flavour value = yes } start_war = { casus_belli = refused_liege_demand_war target = scope:liege_temp } } # Disgruntled vassals if = { limit = { scope:liege_temp = { NOT = { has_imprisonment_reason = scope:rebel_temp } } } scope:liege_temp = { every_vassal = { #Vassals joining the rebel. limit = { vassal_would_join_rebel_faction_base_trigger = yes OR = { #Lovers and friends always back rebel (unless also lovers/friends of the liege) vassal_would_join_rebel_faction_relation_trigger = yes #Vassals that either like recipient or have high honor will rally if the liege is being tyrannical. AND = { # Special imprisonment checks NOT = { scope:liege_temp = { has_imprisonment_reason = scope:rebel_temp } } # If they can't join a faction against the liege they should not revolt vassal_would_join_rebel_faction_tyranny_trigger = yes } #And finally, vassals that really hate their liege will join regardless (provided that they also do not hate recipient). AND = { OR = { opinion = { target = scope:rebel_temp value >= -25 } AND = { has_game_rule = hard_difficulty scope:liege_temp = { is_ai = no } opinion = { target = scope:rebel_temp value >= -50 } } AND = { has_game_rule = very_hard_difficulty scope:liege_temp = { is_ai = no } opinion = { target = scope:rebel_temp value >= -75 } } } OR = { opinion = { target = scope:liege_temp value <= -40 } AND = { has_game_rule = hard_difficulty scope:liege_temp = { is_ai = no } opinion = { target = scope:liege_temp value <= -20 } } AND = { has_game_rule = very_hard_difficulty scope:liege_temp = { is_ai = no } opinion = { target = scope:liege_temp value <= 0 } } } } } # TGP bloc members follow their leader trigger_if = { limit = { exists = house.house_confederation.leading_house.house_head } house.house_confederation.leading_house.house_head = this } } add_to_list = joining_vassals } } } # Bloc members join despite legality bloc_member_join_war_effect = yes every_in_list = { list = joining_vassals vassal_join_rebel_war_effect = yes } every_player = { limit = { is_vassal_of = scope:liege_temp } scope:liege_temp = { save_scope_as = actor save_scope_as = puppet_or_actor } scope:rebel_temp = { save_scope_as = recipient } trigger_event = char_interaction.0232 } scope:rebel_temp = { add_opinion = { target = scope:liege_temp modifier = attempted_arrest_opinion } } } vassal_join_rebel_war_effect = { save_temporary_scope_as = joining_vassal scope:liege_temp = { custom_tooltip = tooltip_fellow_vassal_joins_war } #The war has not started when viewing the interaction hidden_effect = { scope:rebel_temp = { every_character_war = { limit = { using_cb = refused_liege_demand_war casus_belli = { primary_attacker = scope:rebel_temp primary_defender = scope:liege_temp } } add_to_list = war_to_join } } every_in_list = { list = war_to_join limit = { # Bloc members are already pulled in by bloc_member_join_war_effect above NOT = { is_participant = scope:joining_vassal } } hidden_effect = { set_called_to = scope:joining_vassal } add_attacker = scope:joining_vassal } } hidden_effect = { scope:liege_temp = { add_opinion = { target = scope:joining_vassal modifier = rebellious_vassal_opinion } } } } vassal_revocation_tyranny_effect = { #Despite its name this is referenced when _retracting_ vassals. if = { limit = { exists = scope:use_strife_not_tyranny } # If you have revocation reason, we allow that. if = { limit = { has_revoke_title_reason = scope:recipient } consume_revoke_title_reason = scope:recipient } else_if = { #Admin liege revoking from admin vassal limit = { government_has_mechanic = administrative scope:recipient = { government_has_mechanic = administrative } } } else = { change_strife_opinion = major_strife_gain } } else_if = { limit = { vassal_revocation_is_tyrannical_trigger = { VASSAL = scope:recipient } } # Special Legitimacy loss if you're revoking without a reason if = { limit = { has_legitimacy = yes } add_legitimacy = minor_legitimacy_loss } add_tyranny = { value = revoke_vassal_tyranny_gain if = { limit = { scope:recipient = { is_imprisoned = yes NOT = { is_imprisoned_by = scope:puppet_or_actor } } NOT = { scope:puppet_or_actor = { has_revoke_title_reason = scope:recipient } } } multiply = 2 } } } else_if = { limit = { has_revoke_title_reason = scope:recipient } custom_tooltip = IS_ALLOWED_TO_REVOKE_VASSAL_DESC } else_if = { limit = { rite = { OR = { rite_has_parameter = pluralism_righteous_revocation_tyranny_reduced rite_has_parameter = pluralism_fundamentalist_revocation_tyranny_minimal } } faith = { faith_hostility_level = { target = scope:recipient.faith value >= faith_hostile_level } } } if = { limit = { rite = { rite_has_parameter = pluralism_fundamentalist_revocation_tyranny_minimal } faith = { faith_hostility_level = { target = scope:recipient.faith value = faith_hostile_level } } } custom_tooltip = IS_ALLOWED_TO_REVOKE_HOSTILE_INFIDEL_VASSAL } else = { custom_tooltip = IS_ALLOWED_TO_REVOKE_EVIL_INFIDEL_VASSAL } every_vassal = { limit = { faith = scope:recipient.faith } custom = INFIDEL_REVOCATION_OPINION add_opinion = { modifier = angry_opinion target = scope:puppet_or_actor opinion = { value = revoke_vassal_tyranny_gain multiply = -1 } } } } } revocation_tyranny_effect = { save_scope_as = liege_temp_scope if = { limit = { exists = scope:use_strife_not_tyranny } # If you have revocation reason, we allow that. if = { limit = { has_revoke_title_reason = $VASSAL$ } consume_revoke_title_reason = $VASSAL$ } else = { change_strife_opinion = major_strife_gain } } else_if = { limit = { title_revocation_is_tyrannical_trigger = { VASSAL = $VASSAL$ } } add_tyranny = revoke_title_tyranny_gain # Special Legitimacy loss if you're revoking without a reason if = { limit = { has_legitimacy = yes NOT = { scope:landed_title ?= { duchy = scope:liege_temp_scope.capital_county.duchy } } } add_legitimacy = medium_legitimacy_loss } #If my culture is different from the recipients if = { limit = { NOT = { culture = $VASSAL$.culture } } $VASSAL$.culture = { change_cultural_acceptance = { target = scope:liege_temp_scope.culture value = revoke_title_culture_acceptance_impact desc = cultural_acceptance_loss_revokation } } } } else = { if = { limit = { title_revocation_is_admin_governor_trigger = { VASSAL = $VASSAL$ } } custom_description = { text = IS_ALLOWED_TO_REVOKE_ADMIN_GOVERNMENT subject = scope:liege_temp_scope object = $VASSAL$ } } else_if = { limit = { exists = scope:landed_title has_claim_on = scope:landed_title } custom_tooltip = IS_ALLOWED_TO_REVOKE_TITLE_FOR_CLAIM_DESC } else_if = { limit = { has_revoke_title_reason = scope:recipient } custom_tooltip = IS_ALLOWED_TO_REVOKE_TITLE_DESC } else_if = { limit = { rite = { OR = { rite_has_parameter = pluralism_righteous_revocation_tyranny_reduced rite_has_parameter = pluralism_fundamentalist_revocation_tyranny_minimal } } faith = { faith_hostility_level = { target = scope:recipient.faith value >= faith_hostile_level } } } if = { limit = { rite = { rite_has_parameter = pluralism_fundamentalist_revocation_tyranny_minimal } faith = { faith_hostility_level = { target = scope:recipient.faith value = faith_hostile_level } } } custom_tooltip = IS_ALLOWED_TO_REVOKE_HOSTILE_INFIDEL_TITLE } else = { custom_tooltip = IS_ALLOWED_TO_REVOKE_EVIL_INFIDEL_TITLE } every_vassal = { limit = { faith = scope:recipient.faith } custom = INFIDEL_REVOCATION_OPINION add_opinion = { modifier = angry_opinion target = scope:puppet_or_actor opinion = { value = revoke_title_tyranny_gain multiply = -1 } } } } } } war_for_revoke_effect = { $LIEGE$ = { save_temporary_scope_as = liege_temp } $REBEL$ = { save_temporary_scope_as = rebel_temp save_scope_value_as = { name = war_for_revocation_flavour value = yes } start_war = { casus_belli = refused_liege_demand_war target = scope:liege_temp } } scope:liege_temp = { # Disgruntled vassals if = { limit = { NOT = { has_revoke_title_reason = scope:rebel_temp } } every_vassal = { #Vassals joining the rebel. custom = vassals_joining_war_tt limit = { vassal_would_join_rebel_faction_base_trigger = yes OR = { #Lovers and friends always back rebel (unless also lovers/friends of the liege) vassal_would_join_rebel_faction_relation_trigger = yes #Vassals that either like recipient or have high honor will rally if the liege is being tyrannical. AND = { # Special retraction checks scope:liege_temp = { NOR = { has_revoke_title_reason = scope:rebel_temp AND = { government_has_mechanic = administrative scope:rebel_temp = { is_governor = yes } trigger_if = { limit = { has_legitimacy = yes } meets_legitimacy_expectation_of = prev } } trigger_if = { limit = { exists = scope:landed_title } has_claim_on = scope:landed_title } } } # If they can't join a faction against the liege they should not revolt vassal_would_join_rebel_faction_tyranny_trigger = yes } #And finally, vassals that really hate their liege will join regardless (provided that they also do not hate recipient). AND = { OR = { opinion = { target = scope:rebel_temp value >= -25 } AND = { has_game_rule = hard_difficulty scope:liege_temp = { is_ai = no } opinion = { target = scope:rebel_temp value >= -50 } } AND = { has_game_rule = very_hard_difficulty scope:liege_temp = { is_ai = no } opinion = { target = scope:rebel_temp value >= -75 } } } OR = { #default threshold opinion = { target = scope:liege_temp value <= -50 } AND = { has_game_rule = hard_difficulty scope:liege_temp = { is_ai = no } opinion = { target = scope:liege_temp value <= -25 } } AND = { has_game_rule = very_hard_difficulty scope:liege_temp = { is_ai = no } opinion = { target = scope:liege_temp value <= 0 } } #If tyrannical, the default threshold will be reached if at this level AND = { scope:liege_temp = { title_revocation_is_tyrannical_trigger = { VASSAL = scope:rebel_temp } } OR = { opinion = { target = scope:liege_temp value <= -30 #revoke_title_tyranny_gain adds -20 } AND = { has_game_rule = hard_difficulty scope:liege_temp = { is_ai = no } opinion = { target = scope:liege_temp value <= -10 } } AND = { has_game_rule = very_hard_difficulty scope:liege_temp = { is_ai = no } opinion = { target = scope:liege_temp value <= 10 } } } } } } } # TGP bloc members follow their leader trigger_if = { limit = { exists = house.house_confederation.leading_house.house_head } house.house_confederation.leading_house.house_head = this } } add_to_list = joining_vassals } } } # Bloc members join despite legality bloc_member_join_war_effect = yes every_in_list = { list = joining_vassals vassal_join_rebel_war_effect = yes } every_player = { limit = { is_vassal_of = scope:liege_temp } scope:rebel_temp = { save_scope_as = recipient } scope:liege_temp = { save_scope_as = actor save_scope_as = puppet_or_actor } trigger_event = char_interaction.0232 } scope:rebel_temp = { add_opinion = { target = scope:liege_temp modifier = attempted_arrest_opinion } } } war_for_retraction_effect = { $LIEGE$ = { save_temporary_scope_as = liege_temp } $SUBVASSAL$ = { save_temporary_scope_as = subvassal_temp } $REBEL$ = { save_temporary_scope_as = rebel_temp save_scope_value_as = { name = war_for_retraction_flavour value = yes } start_war = { casus_belli = refused_liege_demand_war target = scope:liege_temp } } scope:liege_temp = { every_vassal = { #Vassals joining the rebel. limit = { vassal_would_join_rebel_faction_base_trigger = yes OR = { #Lovers and friends always back rebel (unless also lovers/friends of the liege) vassal_would_join_rebel_faction_relation_trigger = yes #Vassals that either like recipient or have high honor will rally if the liege is being tyrannical (taking away de jure vassal). AND = { # Special revocation checks scope:liege_temp = { NOR = { has_revoke_title_reason = scope:rebel_temp AND = { government_has_mechanic = administrative scope:rebel_temp = { is_governor = yes } trigger_if = { limit = { has_legitimacy = yes } meets_legitimacy_expectation_of = prev } } } } scope:rebel_temp = { any_held_title = { is_de_jure_liege_or_above_target = scope:subvassal_temp.primary_title } } # If they can't join a faction against the liege they should not revolt vassal_would_join_rebel_faction_tyranny_trigger = yes } #And finally, vassals that really hate their liege will join regardless (provided that they also do not hate rebel). AND = { OR = { opinion = { target = scope:rebel_temp value >= -25 } AND = { has_game_rule = hard_difficulty scope:liege_temp = { is_ai = no } opinion = { target = scope:rebel_temp value >= -50 } } AND = { has_game_rule = very_hard_difficulty scope:liege_temp = { is_ai = no } opinion = { target = scope:rebel_temp value >= -75 } } } OR = { opinion = { target = scope:liege_temp value <= -40 } AND = { has_game_rule = hard_difficulty scope:liege_temp = { is_ai = no } opinion = { target = scope:liege_temp value <= -20 } } AND = { has_game_rule = very_hard_difficulty scope:liege_temp = { is_ai = no } opinion = { target = scope:liege_temp value <= 0 } } } } } # TGP bloc members follow their leader trigger_if = { limit = { exists = house.house_confederation.leading_house.house_head } house.house_confederation.leading_house.house_head = this } } add_to_list = joining_vassals } } # Bloc members join despite legality bloc_member_join_war_effect = yes every_in_list = { list = joining_vassals vassal_join_rebel_war_effect = yes } every_player = { limit = { is_vassal_of = scope:liege_temp } trigger_event = char_interaction.0232 } scope:rebel_temp = { add_opinion = { target = scope:liege_temp modifier = attempted_arrest_opinion } } } bloc_member_join_war_effect = { if = { limit = { exists = scope:rebel_temp.house.house_confederation trigger_if = { limit = { exists = scope:liege_temp.house.house_confederation } NOT = { scope:rebel_temp = scope:liege_temp.house.house_confederation.leading_house.house_head } } } scope:rebel_temp.top_liege = { every_vassal = { limit = { highest_held_title_tier > tier_barony house.house_confederation ?= scope:rebel_temp.house.house_confederation NOT = { this = scope:liege_temp } } add_to_list = joining_vassals } } } } kick_from_court_interaction_warning_tooltip_effect = { save_temporary_scope_as = kicked if = { limit = { is_councillor_of = scope:puppet_or_actor } custom_tooltip = kick_from_court_councillor_warning_tt } if = { limit = { any_claim = { useful_courtier_or_guest_claim_trigger = { RULER = scope:puppet_or_actor } } } random_claim = { limit = { useful_courtier_or_guest_claim_trigger = { RULER = scope:puppet_or_actor } tier = tier_kingdom } alternative_limit = { useful_courtier_or_guest_claim_trigger = { RULER = scope:puppet_or_actor } tier = tier_duchy } alternative_limit = { useful_courtier_or_guest_claim_trigger = { RULER = scope:puppet_or_actor } tier = tier_county } save_scope_as = kicked_claim } custom_tooltip = kick_from_court_claimant_warning_tt } if = { limit = { is_commanding_army = yes } custom_tooltip = kick_from_court_commander_warning_tt } if = { limit = { is_knight_of = scope:puppet_or_actor } custom_tooltip = kick_from_court_knight_warning_tt } if = { limit = { scope:kicked = { has_any_court_position = yes any_court_position_employer = { this = scope:puppet_or_actor } } } custom_tooltip = kick_from_court_holds_court_title_warning_tt } } kick_from_court_interaction_effect = { select_and_move_to_pool_effect = yes add_opinion = { modifier = kicked_me_from_court target = scope:actor } kick_from_court_interaction_warning_tooltip_effect = yes every_close_family_member = { limit = { NOT = { any_in_list = { list = kicked_relatives_list this = prev } } } add_to_list = kicked_relatives_list } scope:actor = { if = { limit = { has_government = landless_adventurer_government } every_courtier = { limit = { is_adult = yes NOR = { is_close_family_of = scope:recipient has_any_moderate_bad_relationship_with_character_trigger = { CHARACTER = scope:recipient } } } custom = custom.every_adult_follower add_opinion = { target = scope:actor modifier = kicked_follower_from_camp_opinion opinion = -5 } } scope:recipient = { every_relation = { type = rival limit = { is_courtier_of = scope:actor } add_opinion = { target = scope:actor modifier = kicked_rival_from_camp_opinion opinion = 30 } } } } } } disinherit_effect = { save_scope_as = disinherited #Rivalry if = { limit = { NOT = { has_relation_rival = $DISINHERITOR$ } OR = { age >= 8 AND = { age < 8 $DISINHERITOR$ = { is_adult = no } } } OR = { ai_vengefulness >= low_positive_ai_value ai_greed >= low_positive_ai_value } NOR = { has_trait = craven has_trait = forgiving has_trait = content has_trait = humble } } set_relation_rival = { target = $DISINHERITOR$ reason = rival_disinherited } } else_if = { limit = { NOR = { has_trait = forgiving has_trait = content has_trait = humble } } progress_towards_rival_effect = { CHARACTER = $DISINHERITOR$ REASON = rival_disinherited OPINION = 0 } } #Gain rivalry with primary heir if one of your other heirs if = { limit = { is_heir_of = $DISINHERITOR$ $DISINHERITOR$.primary_heir ?= { NOR = { this = scope:disinherited has_any_good_relationship_with_character_trigger = { CHARACTER = scope:disinherited } is_allied_to = scope:disinherited is_child_of = scope:disinherited } } } #Rivalry if = { limit = { NOT = { has_relation_rival = $DISINHERITOR$.primary_heir } OR = { age >= 8 AND = { age < 8 $DISINHERITOR$.primary_heir ?= { is_adult = no } } } OR = { ai_vengefulness >= low_positive_ai_value ai_greed >= low_positive_ai_value } NOR = { has_trait = craven has_trait = forgiving has_trait = content has_trait = humble } } set_relation_rival = { target = $DISINHERITOR$.primary_heir reason = rival_disinherited } } else_if = { limit = { NOR = { has_trait = forgiving has_trait = content has_trait = humble } } progress_towards_rival_effect = { CHARACTER = $DISINHERITOR$.primary_heir REASON = rival_disinherited OPINION = 0 } } } #Gain rivalry with new primary heir if your primary heir else_if = { limit = { is_primary_heir_of = $DISINHERITOR$ $DISINHERITOR$.primary_title = { any_title_heir = { $DISINHERITOR$.primary_title = { place_in_line_of_succession = { target = prev value = 2 } } NOR = { this = scope:disinherited has_any_good_relationship_with_character_trigger = { CHARACTER = scope:disinherited } is_allied_to = scope:disinherited is_child_of = scope:disinherited } } } } $DISINHERITOR$.primary_title = { random_title_heir = { limit = { $DISINHERITOR$.primary_title = { place_in_line_of_succession = { target = prev value = 2 } } } save_scope_as = new_primary_heir } } #Rivalry if = { limit = { NOT = { has_relation_rival = scope:new_primary_heir } OR = { ai_vengefulness >= low_positive_ai_value ai_greed >= low_positive_ai_value } NOR = { has_trait = craven has_trait = forgiving has_trait = content has_trait = humble } OR = { age >= 8 AND = { age < 8 scope:new_primary_heir ?= { is_adult = no } } } } set_relation_rival = { target = scope:new_primary_heir reason = rival_disinherited } } else_if = { limit = { NOR = { has_trait = forgiving has_trait = content has_trait = humble } } progress_towards_rival_effect = { CHARACTER = scope:new_primary_heir REASON = rival_disinherited OPINION = 0 } } } if = { limit = { is_heir_of = $DISINHERITOR$ NOT = { has_trait = disputed_heritage } $DISINHERITOR$ = { any_vassal = { vassal_stance = courtly } } } $DISINHERITOR$ = { custom_tooltip = courtly_vassal_disapproves_disinheriting hidden_effect = { every_vassal = { vassal_stance = courtly add_opinion = { target = $DISINHERITOR$ modifier = courtly_disinherit_opinion } } } } } add_trait = disinherited add_opinion = { modifier = disinherited_opinion target = $DISINHERITOR$ } house = { every_house_member = { limit = { NOT = { house = $DISINHERITOR$.house } } custom = all_house_members add_opinion = { modifier = disinherited_house_member_opinion target = $DISINHERITOR$ } } } if = { limit = { exists = dynasty NOT = { $DISINHERITOR$ = dynasty.dynast } } $DISINHERITOR$.dynasty.dynast = { add_opinion = { target = $DISINHERITOR$ modifier = fp1_usurped_my_authority_opinion years = 20 } } } hidden_effect = { #Nudge towards rivalry if = { limit = { NOR = { has_relation_rival = $DISINHERITOR$ has_relation_potential_rival = $DISINHERITOR$ } } set_relation_potential_rival = $DISINHERITOR$ } } } restore_inheritance_effect = { remove_trait = disinherited if = { limit = { has_opinion_modifier = { modifier = disinherited_opinion target = scope:puppet_or_actor } } remove_opinion = { modifier = disinherited_opinion target = scope:puppet_or_actor } house = { if = { limit = { NOT = { any_house_member = { this != scope:recipient has_opinion_modifier = { modifier = disinherited_opinion target = scope:puppet_or_actor } } } } every_house_member = { custom = all_house_members remove_opinion = { modifier = disinherited_house_member_opinion target = scope:puppet_or_actor single = yes } } } } } else = { if = { limit = { this != scope:puppet_or_actor } add_opinion = { modifier = restored_inheritance_opinion target = scope:puppet_or_actor } } house = { every_house_member = { limit = { this != scope:recipient this != scope:puppet_or_actor } custom = all_house_members add_opinion = { modifier = restored_house_member_inheritance_opinion target = scope:puppet_or_actor } } } } #Remove nithing status, if applicable. hidden_effect = { if = { limit = { has_character_modifier = nithing_fp1_modifier } remove_character_modifier = nithing_fp1_modifier } } } denounce_effect = { add_trait = denounced if = { limit = { NOT = { has_relation_rival = $ACTOR$ } } #Rivalry set_relation_rival = { target = $ACTOR$ reason = rival_denounced } } if = { limit = { $ACTOR$ = { has_hook_of_type = { target = $RECIPIENT$ type = house_head_hook } } } $ACTOR$ = { remove_hook = { target = $RECIPIENT$ type = house_head_hook } } } if = { limit = { has_opinion_modifier = { target = $ACTOR$ modifier = forgave_denounced_opinion } } custom_tooltip = forgiven_changed_to_denounced hidden_effect = { remove_opinion = { target = $ACTOR$ modifier = forgave_denounced_opinion } add_opinion = { modifier = denounced_opinion target = $ACTOR$ } } } else = { add_opinion = { modifier = denounced_opinion target = $ACTOR$ } } if = { limit = { NOT = { is_close_family_of = $ACTOR$ } } house = { every_house_member = { limit = { NOT = { house = $ACTOR$.house } } custom = all_house_members add_opinion = { modifier = denounced_house_member_opinion target = $ACTOR$ } } } } } forgive_effect = { remove_trait = denounced custom_tooltip = denounced_change_to_forgiven hidden_effect = { remove_opinion = { target = scope:puppet_or_actor modifier = denounced_opinion } add_opinion = { modifier = forgave_denounced_opinion target = scope:puppet_or_actor opinion = -25 } } if = { limit = { NOT = { is_close_family_of = scope:puppet_or_actor } } house = { every_house_member = { limit = { house != scope:puppet_or_actor.house } custom = all_house_members add_opinion = { modifier = forgave_house_member_opinion target = scope:puppet_or_actor } } } } } dynast_claim_title_effect = { scope:puppet_or_actor = { add_unpressed_claim = scope:target stress_and_fulfillment_impact = { content = minor_stress_impact_gain generous = minor_stress_impact_gain } } scope:recipient = { add_opinion = { target = scope:puppet_or_actor modifier = claimed_my_title_opinion opinion = -50 } } } dynast_end_dynasty_wars_effect = { scope:puppet_or_actor.dynasty = { add_dynasty_prestige = medium_dynasty_prestige_loss } scope:recipient = { every_character_war = { limit = { primary_defender != scope:puppet_or_actor primary_attacker = scope:recipient primary_defender.dynasty = scope:recipient.dynasty } primary_defender = { trigger_event = char_interaction.0071 } end_war = white_peace } } } educate_child_interaction_effect = { scope:ward = { # Culture/faith conversion + university gold/tooltips education_flags_tooltips_effect = yes } # Travel setup ward_depart_effect = yes } education_flags_tooltips_effect = { #Convert culture if = { limit = { always = scope:convert_culture } scope:ward = { add_character_flag = { flag = convert_culture years = 10 } } if = { limit = { scope:ward.age < 11 } custom_description = { text = "educate_child_option_convert_culture_effect" subject = scope:ward object = scope:guardian.culture } } else_if = { limit = { scope:ward.age >= 11 scope:ward.age < 14 } custom_description = { text = "educate_child_option_convert_culture_likely_effect" subject = scope:ward object = scope:guardian.culture } } else_if = { limit = { scope:ward.age >= 14 } custom_description = { text = "educate_child_option_convert_culture_unlikely_effect" subject = scope:ward object = scope:guardian.culture } } } #Convert faith if = { limit = { always = scope:convert_faith } scope:ward = { add_character_flag = { flag = convert_faith years = 10 } } if = { limit = { scope:ward.age < 11 } custom_description = { text = "educate_child_option_convert_faith_effect" subject = scope:ward object = scope:guardian.rite } } else_if = { limit = { scope:ward.age >= 11 scope:ward.age < 14 } custom_description = { text = "educate_child_option_convert_faith_likely_effect" subject = scope:ward object = scope:guardian.rite } } else_if = { limit = { scope:ward.age >= 14 } custom_description = { text = "educate_child_option_convert_faith_unlikely_effect" subject = scope:ward object = scope:guardian.rite } } } # Knowledge if = { limit = { always = scope:send_to_university OR = { scope:recipient = { OR = { any_realm_province = { is_higher_studies_location = yes save_temporary_scope_as = university } any_realm_county = { has_county_modifier = pandidakterion_university_modifier # Save the province, not the county, because scope:university is only read by a province-scoped trigger title_province ?= { save_temporary_scope_as = university } } } } scope:puppet_or_actor = { this = scope:secondary_actor any_realm_province = { is_higher_studies_location = yes save_temporary_scope_as = university } } } } scope:puppet_or_actor = { remove_short_term_gold = { value = monumental_gold_value if = { limit = { house = { has_house_modifier = ep3_eparch_university_influence_modifier } } multiply = { value = 1 subtract = university_cost_reduction_value } } } } if = { limit = { scope:university ?= { is_province_valid_confucian_education_trigger = yes } NOT = { scope:guardian = { has_trait = confucian_education } } } add_character_modifier = studying_confucian_education_modifier } add_character_modifier = studying_at_university_modifier } # Confucian Education trait if = { limit = { scope:guardian = { has_trait = confucian_education } scope:send_to_university = no } add_character_modifier = studying_confucian_education_modifier custom_tooltip = studying_confucian_education_disciple } } educate_child_event_effect = { scope:ward = { #Set relation and move character set_relation_guardian = scope:guardian if = { limit = { scope:guardian = { is_playable_character = yes } scope:ward = { is_playable_character = no } scope:guardian != scope:ward.host } visit_court_of = scope:guardian } else_if = { limit = { scope:guardian = { is_playable_character = no } scope:ward = { is_playable_character = yes } scope:ward != scope:guardian.host } scope:guardian = { visit_court_of = scope:ward } } else_if = { limit = { scope:guardian = { is_playable_character = no } scope:ward = { is_playable_character = no } exists = scope:guardian.host scope:guardian.host != scope:ward.host } visit_court_of = scope:guardian.host } } #Opinions guardian_add_opinion_effect = { GUARDIAN = scope:guardian WARD_LIEGE = scope:ward_liege WARD = scope:ward } } call_dynasty_member_to_war_interaction_effect = { if = { limit = { exists = scope:target } scope:target = { hidden_effect = { set_called_to = scope:recipient } if = { limit = { is_attacker = scope:puppet_or_actor } add_attacker = scope:recipient } else = { add_defender = scope:recipient } } scope:puppet_or_actor.dynasty = { add_dynasty_prestige = medium_dynasty_prestige_loss } } if = { limit = { always = scope:hook } scope:puppet_or_actor = { use_hook = scope:recipient } } } offer_vassalization_interaction_effect = { create_title_and_vassal_change = { type = swear_fealty save_scope_as = change } scope:recipient = { change_liege = { liege = scope:puppet_or_actor change = scope:change } add_opinion = { modifier = became_vassal target = scope:puppet_or_actor opinion = 10 } } resolve_title_and_vassal_change = scope:change # Special terms for feudal contracts scope:recipient = { if = { limit = { government_has_flag = government_is_feudal } if = { limit = { scope:high_obligations ?= yes } hidden_effect = { if = { limit = { top_liege != this } # To avoid errors during tooltip generation (prior to the contract being generated) vassal_contract_set_obligation_level = { type = feudal_government_taxes level = 3 } vassal_contract_set_obligation_level = { type = feudal_government_levies level = 3 } } } custom_tooltip = high_obligations_taxes custom_tooltip = high_obligations_levies } else_if = { limit = { scope:low_obligations ?= yes } hidden_effect = { if = { limit = { top_liege != this } # To avoid errors during tooltip generation (prior to the contract being generated) vassal_contract_set_obligation_level = { type = feudal_government_taxes level = 1 } vassal_contract_set_obligation_level = { type = feudal_government_levies level = 1 } } } custom_tooltip = low_obligations_taxes custom_tooltip = low_obligations_levies } else_if = { limit = { scope:religious_exemption ?= yes } hidden_effect = { if = { limit = { top_liege != this } # To avoid errors during tooltip generation (prior to the contract being generated) vassal_contract_set_obligation_level = { type = feudal_government_taxes level = 2 } vassal_contract_set_obligation_level = { type = feudal_government_levies level = 1 } vassal_contract_set_obligation_level = { type = religious_rights level = 1 } } } custom_tooltip = normal_obligations_taxes custom_tooltip = low_obligations_levies custom_tooltip = religious_protection_tt } else = { hidden_effect = { if = { limit = { top_liege != this } # To avoid errors during tooltip generation (prior to the contract being generated) vassal_contract_set_obligation_level = { type = feudal_government_taxes level = 2 } vassal_contract_set_obligation_level = { type = feudal_government_levies level = 2 } } } custom_tooltip = normal_obligations_taxes custom_tooltip = normal_obligations_levies } } else_if = { limit = { government_has_flag = government_is_clan scope:religious_exemption_clan ?= yes } hidden_effect = { if = { limit = { top_liege != this } # To avoid errors during tooltip generation (prior to the contract being generated) vassal_contract_set_obligation_level = { type = religious_rights level = 1 } } } custom_tooltip = religious_protection_tt } } # Struggle catalysts. hidden_effect = { fp3_struggle_apply_independent_vassalage_catalyst_effect = { NEW_LIEGE = scope:puppet_or_actor NEW_VASSAL = scope:recipient } } } # Effect to start a tributary relationship from a war # root-scope is the Suzerain # $TRIBUTARY$ = the new tributary # $SUZERAIN$ = their suzerain # $WAR$ = required war scope start_tributary_from_war_effect = { $WAR$ ?= { save_scope_as = tributary_war } if = { limit = { NOT = { exists = $WAR$ } } error_log = "Tried to call start_tributary_from_war_effect without a valid war scope!" } save_scope_value_as = { name = high_obligations value = yes } start_tributary_interaction_effect = { TRIBUTARY = $TRIBUTARY$ SUZERAIN = $SUZERAIN$ } } @starting_subject_standing_value = 10 # Effect to start a tributary relationship, can be called directly without a war or from start_tributary_from_war_effect # $TRIBUTARY$ = the new tributary # $SUZERAIN$ = their suzerain start_tributary_interaction_effect = { # Setup truces depending on how the tributary relationship was created $TRIBUTARY$ = { save_scope_as = tributary_loc } $SUZERAIN$ = { save_scope_as = suzerain_loc } #Mandala Tributaries if = { limit = { should_be_mandala_tributary_trigger = { SUZERAIN = $SUZERAIN$ TRIBUTARY = $TRIBUTARY$ } trigger_if = { limit = { exists = scope:tributary_war } $SUZERAIN$ = { AND = { house = { has_house_head_parameter = can_make_mandala_tributaries_via_war } is_house_head = yes } } } } $TRIBUTARY$ = { if = { limit = { government_has_flag = government_is_tribal } start_tributary = { contract_group = tributary_mandala_tribal suzerain = $SUZERAIN$ } if = { limit = { OR = { scope:high_obligations ?= yes exists = scope:tributary_war } } if = { limit = { is_tributary = yes } # suppress error logging hidden_effect = { tributary_contract_set_obligation_level = { type = mandala_government_taxes level = 3 } tributary_contract_set_obligation_level = { type = mandala_government_prestige level = 2 } tributary_contract_set_obligation_level = { type = mandala_government_levies level = 3 } } } custom_tooltip = high_mandala_tribute_taxes custom_tooltip = high_mandala_tribute_prestige custom_tooltip = high_mandala_tribute_levies } else_if = { limit = { scope:low_obligations ?= yes } if = { limit = { is_tributary = yes } # suppress error logging hidden_effect = { tributary_contract_set_obligation_level = { type = mandala_government_taxes level = 0 } tributary_contract_set_obligation_level = { type = mandala_government_prestige level = 0 } tributary_contract_set_obligation_level = { type = mandala_government_levies level = 0 } } } custom_tooltip = exempt_mandala_tribute_taxes custom_tooltip = low_mandala_tribute_prestige custom_tooltip = exempt_mandala_tribute_levies } else = { if = { limit = { is_tributary = yes } # suppress error logging hidden_effect = { tributary_contract_set_obligation_level = { type = mandala_government_taxes level = 2 } tributary_contract_set_obligation_level = { type = mandala_government_prestige level = 2 } tributary_contract_set_obligation_level = { type = mandala_government_levies level = 1 } } } custom_tooltip = normal_mandala_tribute_taxes custom_tooltip = normal_mandala_tribute_prestige custom_tooltip = low_mandala_tribute_levies } if = { limit = { is_tributary = yes } # suppress error logging tributary_contract_set_obligation_level = { type = mandala_suzerain_war_participation_guarantee level = 1 } } } else = { start_tributary = { contract_group = tributary_mandala suzerain = $SUZERAIN$ } if = { limit = { OR = { scope:high_obligations ?= yes exists = scope:tributary_war } } if = { limit = { is_tributary = yes } # suppress error logging hidden_effect = { tributary_contract_set_obligation_level = { type = mandala_government_taxes level = 3 } tributary_contract_set_obligation_level = { type = mandala_government_piety level = 2 } tributary_contract_set_obligation_level = { type = mandala_government_levies level = 3 } } } custom_tooltip = high_mandala_tribute_taxes custom_tooltip = high_mandala_tribute_piety custom_tooltip = high_mandala_tribute_levies } else_if = { limit = { scope:low_obligations ?= yes } if = { limit = { is_tributary = yes } # suppress error logging hidden_effect = { tributary_contract_set_obligation_level = { type = mandala_government_taxes level = 0 } tributary_contract_set_obligation_level = { type = mandala_government_piety level = 0 } tributary_contract_set_obligation_level = { type = mandala_government_levies level = 0 } } } custom_tooltip = exempt_mandala_tribute_taxes custom_tooltip = low_mandala_tribute_piety custom_tooltip = exempt_mandala_tribute_levies } else = { if = { limit = { is_tributary = yes } # suppress error logging hidden_effect = { tributary_contract_set_obligation_level = { type = mandala_government_taxes level = 2 } tributary_contract_set_obligation_level = { type = mandala_government_piety level = 2 } tributary_contract_set_obligation_level = { type = mandala_government_levies level = 1 } } } custom_tooltip = normal_mandala_tribute_taxes custom_tooltip = normal_mandala_tribute_piety custom_tooltip = low_mandala_tribute_levies } if = { limit = { is_tributary = yes } # suppress error logging tributary_contract_set_obligation_level = { type = mandala_suzerain_war_participation_guarantee level = 1 } } } } } # Wanua Tributaries else_if = { limit = { should_be_wanua_tributary_trigger = { SUZERAIN = $SUZERAIN$ TRIBUTARY = $TRIBUTARY$ } } $TRIBUTARY$ = { start_tributary = { contract_group = tributary_wanua suzerain = $SUZERAIN$ } if = { limit = { OR = { scope:high_obligations ?= yes exists = scope:tributary_war } } if = { limit = { is_tributary = yes } # suppress error logging hidden_effect = { tributary_contract_set_obligation_level = { type = barter_goods_obligations level = barter_goods_high } tributary_contract_set_obligation_level = { type = default_tributary_taxes level = 2 } tributary_contract_set_obligation_level = { type = default_tributary_prestige level = prestige_transfer_normal } } } custom_tooltip = high_wanua_tribute_barter_goods custom_tooltip = high_subjugated_tribute_taxes custom_tooltip = normal_subjugated_tribute_prestige } else_if = { limit = { scope:low_obligations ?= yes } if = { limit = { is_tributary = yes } # suppress error logging hidden_effect = { tributary_contract_set_obligation_level = { type = barter_goods_obligations level = barter_goods_low } tributary_contract_set_obligation_level = { type = default_tributary_taxes level = 1 } tributary_contract_set_obligation_level = { type = default_tributary_prestige level = prestige_transfer_none } } } custom_tooltip = low_wanua_tribute_barter_goods custom_tooltip = low_subjugated_tribute_taxes custom_tooltip = none_subjugated_tribute_prestige } else = { if = { limit = { is_tributary = yes } # suppress error logging hidden_effect = { tributary_contract_set_obligation_level = { type = barter_goods_obligations level = barter_goods_medium } tributary_contract_set_obligation_level = { type = default_tributary_taxes level = 1 } tributary_contract_set_obligation_level = { type = default_tributary_prestige level = prestige_transfer_normal } } } custom_tooltip = medium_wanua_tribute_barter_goods custom_tooltip = low_subjugated_tribute_taxes custom_tooltip = normal_subjugated_tribute_prestige } } } # Nomadic Tributaries else_if = { limit = { $SUZERAIN$ = { has_government = nomad_government } } $TRIBUTARY$ = { if = { limit = { OR = { has_government = nomad_government has_government = herder_government } } start_tributary = { contract_group = tributary_nomadic suzerain = $SUZERAIN$ } } else = { start_tributary = { contract_group = tributary_settled suzerain = $SUZERAIN$ } } # Special terms depending on which options were set if = { # settled tributary limit = { NOR = { has_government = nomad_government has_government = herder_government } } if = { limit = { OR = { scope:high_obligations ?= yes exists = scope:tributary_war } } if = { limit = { is_tributary = yes } # suppress error logging hidden_effect = { tributary_contract_set_obligation_level = { type = default_tributary_taxes level = 2 } tributary_contract_set_obligation_level = { type = default_tributary_levies level = 2 } tributary_contract_set_obligation_level = { type = default_tributary_prestige level = 2 } } } custom_tooltip = high_feudal_tribute_taxes custom_tooltip = high_feudal_tribute_levies custom_tooltip = high_nomad_tribute_prestige } else_if = { limit = { scope:low_obligations ?= yes } if = { limit = { is_tributary = yes } # suppress error logging hidden_effect = { tributary_contract_set_obligation_level = { type = default_tributary_taxes level = 0 } tributary_contract_set_obligation_level = { type = default_tributary_levies level = 0 } tributary_contract_set_obligation_level = { type = default_tributary_prestige level = 0 } } } custom_tooltip = low_feudal_tribute_taxes custom_tooltip = low_feudal_tribute_levies custom_tooltip = none_nomad_tribute_prestige } else = { if = { limit = { is_tributary = yes } # suppress error logging hidden_effect = { tributary_contract_set_obligation_level = { type = default_tributary_taxes level = 1 } tributary_contract_set_obligation_level = { type = default_tributary_levies level = 1 } tributary_contract_set_obligation_level = { type = default_tributary_prestige level = 1 } } } custom_tooltip = normal_feudal_tribute_taxes custom_tooltip = normal_feudal_tribute_levies custom_tooltip = normal_nomad_tribute_prestige } } else = { # nomadic tributary if = { limit = { OR = { scope:high_obligations ?= yes exists = scope:tributary_war } } if = { limit = { is_tributary = yes } # suppress error logging hidden_effect = { tributary_contract_set_obligation_level = { type = nomad_government_herd level = 3 } #herd_tax_high tributary_contract_set_obligation_level = { type = nomad_government_prestige level = 2 } } } custom_tooltip = high_nomad_tribute_herd custom_tooltip = high_nomad_tribute_prestige } else_if = { limit = { scope:low_obligations ?= yes } if = { limit = { is_tributary = yes } # suppress error logging hidden_effect = { tributary_contract_set_obligation_level = { type = nomad_government_herd level = 1 } #herd_tax_low tributary_contract_set_obligation_level = { type = nomad_government_prestige level = 0 } } } custom_tooltip = low_nomad_tribute_herd custom_tooltip = none_nomad_tribute_prestige } else = { if = { limit = { is_tributary = yes } # suppress error logging hidden_effect = { tributary_contract_set_obligation_level = { type = nomad_government_herd level = 2 } #herd_tax_normal tributary_contract_set_obligation_level = { type = nomad_government_prestige level = 1 } } } custom_tooltip = normal_nomad_tribute_herd custom_tooltip = normal_nomad_tribute_prestige } } if = { limit = { is_tributary = yes } # suppress error logging tributary_contract_set_obligation_level = { type = suzerain_war_participation_guarantee level = 0 } tributary_contract_set_obligation_level = { type = tributary_war_participation_obligation level = 0 } custom_tooltip = no_tributary_war_obligations custom_tooltip = no_suzerain_guarantee } } } else_if = { limit = { $SUZERAIN$ = { OR = { has_government = steppe_admin_government has_government = administrative_government has_government = feudal_government has_government = clan_government } } } $TRIBUTARY$ = { if = { limit = { OR = { has_government = nomad_government has_government = herder_government } } start_tributary = { contract_group = tributary_steppe suzerain = $SUZERAIN$ } } else = { start_tributary = { contract_group = tributary_settled suzerain = $SUZERAIN$ } } # Special terms depending on which options were set if = { # settled tributary limit = { NOR = { has_government = nomad_government has_government = herder_government } } if = { limit = { OR = { scope:high_obligations ?= yes exists = scope:tributary_war } } if = { limit = { is_tributary = yes } # suppress error logging hidden_effect = { tributary_contract_set_obligation_level = { type = default_tributary_taxes level = 2 } tributary_contract_set_obligation_level = { type = default_tributary_levies level = 2 } tributary_contract_set_obligation_level = { type = default_tributary_prestige level = 2 } } } custom_tooltip = high_feudal_tribute_taxes custom_tooltip = high_feudal_tribute_levies custom_tooltip = high_nomad_tribute_prestige } else_if = { limit = { scope:low_obligations ?= yes } if = { limit = { is_tributary = yes } # suppress error logging hidden_effect = { tributary_contract_set_obligation_level = { type = default_tributary_taxes level = 0 } tributary_contract_set_obligation_level = { type = default_tributary_levies level = 0 } tributary_contract_set_obligation_level = { type = default_tributary_prestige level = 0 } } } custom_tooltip = low_feudal_tribute_taxes custom_tooltip = low_feudal_tribute_levies custom_tooltip = none_nomad_tribute_prestige } else = { if = { limit = { is_tributary = yes } # suppress error logging hidden_effect = { tributary_contract_set_obligation_level = { type = default_tributary_taxes level = 1 } tributary_contract_set_obligation_level = { type = default_tributary_levies level = 1 } tributary_contract_set_obligation_level = { type = default_tributary_prestige level = 1 } } } custom_tooltip = normal_feudal_tribute_taxes custom_tooltip = normal_feudal_tribute_levies custom_tooltip = normal_nomad_tribute_prestige } } else = { # steppe tributary if = { limit = { OR = { scope:high_obligations ?= yes exists = scope:tributary_war } } if = { limit = { is_tributary = yes } # suppress error logging hidden_effect = { tributary_contract_set_obligation_level = { type = default_tributary_taxes level = 2 } tributary_contract_set_obligation_level = { type = nomad_government_prestige level = 2 } } } custom_tooltip = high_nomad_tribute_herd custom_tooltip = high_nomad_tribute_prestige } else_if = { limit = { scope:low_obligations ?= yes } if = { limit = { is_tributary = yes } # suppress error logging hidden_effect = { tributary_contract_set_obligation_level = { type = default_tributary_taxes level = 1 } tributary_contract_set_obligation_level = { type = nomad_government_prestige level = 0 } } } custom_tooltip = low_nomad_tribute_herd custom_tooltip = none_nomad_tribute_prestige } else = { if = { limit = { is_tributary = yes } # suppress error logging hidden_effect = { tributary_contract_set_obligation_level = { type = default_tributary_taxes level = 2 } tributary_contract_set_obligation_level = { type = nomad_government_prestige level = 1 } } } custom_tooltip = normal_nomad_tribute_herd custom_tooltip = normal_nomad_tribute_prestige } } if = { limit = { is_tributary = yes # suppress error logging government_has_flag = government_is_nomadic NOT = { government_has_flag = government_is_herder } } tributary_contract_set_obligation_level = { type = suzerain_war_participation_guarantee level = 0 } tributary_contract_set_obligation_level = { type = tributary_war_participation_obligation level = 1 } custom_tooltip = tributary_war_obligations custom_tooltip = no_suzerain_guarantee } else_if = { limit = { is_tributary = yes # suppress error logging } tributary_contract_set_obligation_level = { type = suzerain_war_participation_guarantee level = 0 } tributary_contract_set_obligation_level = { type = tributary_war_participation_obligation level = 0 } custom_tooltip = no_tributary_war_obligations custom_tooltip = no_suzerain_guarantee } } } else_if = { limit = { $SUZERAIN$ = { has_government = celestial_government highest_held_title_tier >= tier_hegemony } } $TRIBUTARY$ = { start_tributary = { contract_group = tributary_celestial suzerain = $SUZERAIN$ } if = { limit = { OR = { scope:high_obligations ?= yes exists = scope:tributary_war } } if = { limit = { is_tributary = yes } # suppress error logging hidden_effect = { tributary_contract_set_obligation_level = { type = celestial_tribute_gold level = 2 } tributary_contract_set_obligation_level = { type = celestial_tribute_prestige level = 2 } } } custom_tooltip = normal_celestial_tribute_taxes custom_tooltip = normal_celestial_tribute_prestige } else_if = { limit = { scope:low_obligations ?= yes } if = { limit = { is_tributary = yes } # suppress error logging hidden_effect = { tributary_contract_set_obligation_level = { type = celestial_tribute_gold level = 0 } tributary_contract_set_obligation_level = { type = celestial_tribute_prestige level = 0 } } } custom_tooltip = no_celestial_tribute_taxes custom_tooltip = no_celestial_tribute_prestige } else = { if = { limit = { is_tributary = yes } # suppress error logging hidden_effect = { tributary_contract_set_obligation_level = { type = celestial_tribute_gold level = 1 } tributary_contract_set_obligation_level = { type = celestial_tribute_prestige level = 1 } } } custom_tooltip = low_celestial_tribute_taxes custom_tooltip = low_celestial_tribute_prestige } add_subject_standing = @starting_subject_standing_value custom_tooltip = expected_to_pay_tribute } } else_if = { limit = { $SUZERAIN$ = { highest_held_title_tier = tier_hegemony } } $TRIBUTARY$ = { start_tributary = { contract_group = tributary_hegemonic suzerain = $SUZERAIN$ } if = { limit = { OR = { scope:high_obligations ?= yes exists = scope:tributary_war } } if = { limit = { is_tributary = yes } # suppress error logging hidden_effect = { tributary_contract_set_obligation_level = { type = hegemonic_tribute_gold level = 2 } tributary_contract_set_obligation_level = { type = hegemonic_tribute_prestige level = 2 } } } custom_tooltip = normal_hegemonic_tribute_taxes custom_tooltip = normal_hegemonic_tribute_prestige } else_if = { limit = { scope:low_obligations ?= yes } if = { limit = { is_tributary = yes } # suppress error logging hidden_effect = { tributary_contract_set_obligation_level = { type = hegemonic_tribute_gold level = 0 } tributary_contract_set_obligation_level = { type = hegemonic_tribute_prestige level = 0 } } } custom_tooltip = no_hegemonic_tribute_taxes custom_tooltip = no_hegemonic_tribute_prestige } else = { if = { limit = { is_tributary = yes } # suppress error logging hidden_effect = { tributary_contract_set_obligation_level = { type = hegemonic_tribute_gold level = 1 } tributary_contract_set_obligation_level = { type = hegemonic_tribute_prestige level = 1 } } } custom_tooltip = low_hegemonic_tribute_taxes custom_tooltip = low_hegemonic_tribute_prestige } add_subject_standing = @starting_subject_standing_value custom_tooltip = expected_to_pay_tribute } } else = { # subjugated tributary $TRIBUTARY$ = { start_tributary = { contract_group = tributary_subjugated suzerain = $SUZERAIN$ } if = { limit = { scope:low_obligations ?= yes } if = { limit = { is_tributary = yes } # suppress error logging hidden_effect = { tributary_contract_set_obligation_level = { type = default_tributary_taxes level = 1 } tributary_contract_set_obligation_level = { type = default_tributary_prestige level = 0 } } } custom_tooltip = low_subjugated_tribute_taxes custom_tooltip = none_subjugated_tribute_prestige } else = { if = { limit = { is_tributary = yes } # suppress error logging hidden_effect = { tributary_contract_set_obligation_level = { type = default_tributary_taxes level = 2 } tributary_contract_set_obligation_level = { type = default_tributary_prestige level = 1 } tributary_contract_set_obligation_level = { type = suzerain_war_participation_guarantee level = 1 } tributary_contract_set_obligation_level = { type = tributary_war_participation_obligation level = 0 } } } custom_tooltip = high_subjugated_tribute_taxes custom_tooltip = normal_subjugated_tribute_prestige } custom_tooltip = suzerain_guarantee custom_tooltip = no_tributary_war_obligations } } setup_tributary_truces_effect = { SUZERAIN = $SUZERAIN$ TRIBUTARY = $TRIBUTARY$ } } @truce_duration_war_default = 15 @truce_duration_war_mandala = 5 @truce_duration_negotiated_default = 5 @truce_duration_negotiated_celestial = 25 setup_tributary_truces_effect = { # Setup truces depending on how the tributary relationship was created $TRIBUTARY$ = { save_scope_as = tributary_loc } $SUZERAIN$ = { save_scope_as = suzerain_loc } if = { limit = { exists = scope:tributary_war } # this will exist if invoked from start_tributary_from_war_effect $TRIBUTARY$ = { if = { limit = { should_be_mandala_tributary_trigger = { SUZERAIN = $SUZERAIN$ TRIBUTARY = $TRIBUTARY$ } } add_truce_one_way = { character = $SUZERAIN$ years = @truce_duration_war_mandala war = scope:tributary_war result = defeat } } else = { add_truce_one_way = { character = $SUZERAIN$ years = @truce_duration_war_default war = scope:tributary_war result = defeat } } } } else = { $TRIBUTARY$ = { if = { limit = { $SUZERAIN$ = { government_has_flag = government_is_celestial } } add_truce_both_ways = { character = $SUZERAIN$ years = @truce_duration_negotiated_celestial name = TRUCE_TRIBUTARY } } else = { add_truce_both_ways = { character = $SUZERAIN$ years = @truce_duration_negotiated_default name = TRUCE_TRIBUTARY } } } } } offer_fealty_interaction_effect = { create_title_and_vassal_change = { type = swear_fealty save_scope_as = change } scope:puppet_or_actor = { change_liege = { liege = scope:recipient change = scope:change } stress_and_fulfillment_impact = { ambitious = medium_stress_impact_gain arrogant = medium_stress_impact_gain } } resolve_title_and_vassal_change = scope:change scope:puppet_or_actor = { # Special terms for feudal contracts if = { limit = { government_has_flag = government_is_feudal } if = { limit = { scope:high_obligations = yes } hidden_effect = { if = { limit = { top_liege != this } # To avoid errors during tooltip generation (prior to the contract being generated) vassal_contract_set_obligation_level = { type = feudal_government_taxes level = 3 } vassal_contract_set_obligation_level = { type = feudal_government_levies level = 3 } } } custom_tooltip = high_obligations_taxes custom_tooltip = high_obligations_levies } else_if = { limit = { scope:low_obligations = yes } hidden_effect = { if = { limit = { top_liege != this } # To avoid errors during tooltip generation (prior to the contract being generated) vassal_contract_set_obligation_level = { type = feudal_government_taxes level = 1 } vassal_contract_set_obligation_level = { type = feudal_government_levies level = 1 } } } custom_tooltip = low_obligations_taxes custom_tooltip = low_obligations_levies } else_if = { limit = { scope:religious_taxation = yes } hidden_effect = { if = { limit = { top_liege != this } # To avoid errors during tooltip generation (prior to the contract being generated) vassal_contract_set_obligation_level = { type = feudal_government_taxes level = 3 } vassal_contract_set_obligation_level = { type = feudal_government_levies level = 2 } vassal_contract_set_obligation_level = { type = religious_rights level = 1 } } } custom_tooltip = high_obligations_taxes custom_tooltip = normal_obligations_levies if = { limit = { scope:recipient.faith = { has_doctrine_parameter = unlock_jizya_contract } } custom_tooltip = jizya_religious_protection_tt } else = { custom_tooltip = religious_protection_tt } } else = { hidden_effect = { if = { limit = { top_liege != this } # To avoid errors during tooltip generation (prior to the contract being generated) vassal_contract_set_obligation_level = { type = feudal_government_taxes level = 2 } vassal_contract_set_obligation_level = { type = feudal_government_levies level = 2 } } } custom_tooltip = normal_obligations_taxes custom_tooltip = normal_obligations_levies } } else_if = { limit = { government_has_flag = government_is_clan scope:religious_exemption_clan = yes } hidden_effect = { if = { limit = { top_liege != this } # To avoid errors during tooltip generation (prior to the contract being generated) vassal_contract_set_obligation_level = { type = religious_rights level = 1 } } } custom_tooltip = religious_protection_tt } } # Struggle catalysts. hidden_effect = { fp3_struggle_apply_independent_vassalage_catalyst_effect = { NEW_LIEGE = scope:recipient NEW_VASSAL = scope:puppet_or_actor } } } call_ally_interaction_effect = { if = { limit = { exists = scope:target scope:recipient = { NOR = { is_at_war_with = scope:target.primary_defender is_at_war_with = scope:target.primary_attacker } } } call_ally_interaction_event_effect = yes } } #So that we can show a tooltip in the event about them responding call_ally_interaction_event_effect = { if = { limit = { OR = { scope:actor = { any_home_court_hostage = { warden ?= { is_attacker_in_war = scope:target } } } scope:target = { any_war_attacker = { any_warden_hostage = { home_court ?= scope:actor } } } } } custom_tooltip = hostage_execution_warning_tt } scope:target = { hidden_effect = { set_called_to = scope:recipient } if = { limit = { is_attacker = scope:actor } add_attacker = scope:recipient scope:actor = { #Check for Mandala first if = { limit = { government_has_flag = government_is_mandala scope:recipient = { is_tributary_of = scope:actor } } if = { limit = { scope:recipient.primary_title.tier = tier_barony } add_piety = { add = minor_piety_loss multiply = 2 } } else_if = { limit = { scope:recipient.primary_title.tier = tier_county } add_piety = { add = medium_piety_loss multiply = 2 } } else_if = { limit = { scope:recipient.primary_title.tier = tier_duchy } add_piety = { add = major_piety_loss multiply = 2 } } else_if = { limit = { scope:recipient.primary_title.tier = tier_kingdom } add_piety = { add = massive_piety_loss multiply = 1.5 } } else_if = { limit = { scope:recipient.primary_title.tier = tier_empire } add_piety = { add = monumental_piety_loss multiply = 1.5 } } else_if = { limit = { scope:recipient.primary_title.tier = tier_hegemony } add_piety = { add = monumental_piety_loss multiply = 2.5 } } } #Then do everything else else = { if = { limit = { NOT = { has_relation_blood_brother = scope:recipient } } if = { # PAM - Peace of God PT discount limit = { scope:actor = { faith = scope:recipient.faith has_personal_tenet_flag = tenet_peace_of_god_cheaper_ally_call faith = { faith_hostility_level = { target = scope:target.primary_defender.faith value >= faith_hostile_level } } } } pam_peace_of_god_personal_tenet_cheaper_alliance_call_effect = yes } else = { add_prestige = { value = 0 subtract = scope:recipient.tier_scaled_prestige_value } } } } } } else = { add_defender = scope:recipient } } } pam_peace_of_god_personal_tenet_cheaper_alliance_call_effect = { add_prestige = { value = 0 subtract = scope:recipient.tier_scaled_prestige_value multiply = 0.5 } } seduce_interaction_stress_effect = { if = { limit = { NOT = { scope:recipient = { is_consort_of = scope:puppet_or_actor } } OR = { scope:puppet_or_actor = { is_male = yes rite = { NOT = { rite_has_parameter = adultery_male_accepted } } } scope:puppet_or_actor = { is_female = yes rite = { NOT = { rite_has_parameter = adultery_female_accepted } } } } } scope:puppet_or_actor = { stress_and_fulfillment_impact = { chaste = medium_stress_impact_gain zealous = minor_stress_impact_gain honest = minor_stress_impact_gain just = minor_stress_impact_gain } } } else = { scope:puppet_or_actor = { stress_and_fulfillment_impact = { chaste = medium_stress_impact_gain } } } } retract_vassal_interaction_effect = { scope:puppet_or_actor = { vassal_revocation_tyranny_effect = yes if = { limit = { vassal_revocation_is_tyrannical_trigger = { VASSAL = scope:recipient } } stress_and_fulfillment_impact = { generous = medium_stress_impact_gain just = medium_stress_impact_gain } } else = { stress_and_fulfillment_impact = { generous = medium_stress_impact_gain forgiving = minor_stress_impact_gain } } consume_revoke_title_reason = scope:recipient } create_title_and_vassal_change = { type = revoked save_scope_as = change add_claim_on_loss = no } scope:secondary_recipient = { change_liege = { liege = scope:puppet_or_actor change = scope:change } } resolve_title_and_vassal_change = scope:change scope:recipient = { add_opinion = { target = scope:puppet_or_actor modifier = retracted_vassal } } if = { limit = { always = scope:hook scope:puppet_or_actor ?= { has_hook = scope:recipient } } scope:puppet_or_actor = { use_hook = scope:recipient } } } ask_for_pardon_interaction_effect = { scope:puppet_or_actor = { every_liege_or_above = { if = { limit = { has_imprisonment_reason = scope:puppet_or_actor } send_interface_toast = { title = ask_for_pardon_interaction_accept_toast left_icon = scope:recipient consume_imprisonment_reasons = scope:puppet_or_actor } } if = { limit = { has_banish_reason = scope:puppet_or_actor } send_interface_toast = { title = ask_for_pardon_interaction_accept_toast left_icon = scope:recipient consume_banish_reasons = scope:puppet_or_actor } } if = { limit = { has_execute_reason = scope:puppet_or_actor } send_interface_toast = { title = ask_for_pardon_interaction_accept_toast left_icon = scope:recipient consume_execute_reasons = scope:puppet_or_actor } } if = { limit = { has_revoke_title_reason = scope:puppet_or_actor } send_interface_toast = { title = ask_for_pardon_interaction_accept_toast left_icon = scope:recipient consume_revoke_title_reason = scope:puppet_or_actor } } } stress_and_fulfillment_impact = { stubborn = minor_stress_impact_gain } } if = { limit = { always = scope:hook scope:puppet_or_actor = { # TO make sure you still have a hook on them has_usable_hook = scope:recipient } } scope:puppet_or_actor = { use_hook = scope:recipient } } scope:puppet_or_actor = { if = { limit = { tgp_is_any_minister = yes } if = { limit = { scope:recipient = { OR = { liege = { has_extra_criminal_reason_against_trigger = { CRIMINAL = scope:recipient } } is_close_or_extended_family_of = scope:puppet_or_actor } } } change_strife_opinion = massive_strife_gain if = { limit = { NOT = { scope:hook ?= yes } } situation:dynastic_cycle = { trigger_situation_catalyst = { catalyst = catalyst_minister_pardoned_dangerous_criminal character = scope:puppet_or_actor } } } } else = { if = { limit = { government_has_flag = government_has_influence } change_influence = { value = minor_influence_gain multiply = scope:recipient.highest_held_title_tier } } } } } } revoke_title_interaction_effect = { if = { limit = { scope:recipient = { faith = scope:puppet_or_actor.faith government_has_flag = government_is_theocracy } scope:puppet_or_actor != scope:puppet_or_actor.faith.religious_head } scope:puppet_or_actor = { add_piety = major_piety_loss } if = { limit = { exists = scope:puppet_or_actor.faith.religious_head } scope:puppet_or_actor.faith.religious_head = { add_opinion = { target = scope:puppet_or_actor modifier = impious_opinion opinion = -20 } } } } if = { limit = { exists = scope:puppet_or_actor.faith.religious_head scope:recipient = scope:puppet_or_actor.faith.religious_head } scope:puppet_or_actor = { add_piety_level = -2 } } if = { limit = { scope:landed_title.tier != tier_barony scope:recipient = { NOT = { government_has_flag = government_is_herder } } } scope:puppet_or_actor = { revocation_tyranny_effect = { VASSAL = scope:recipient } title_revocation_stress_effect = { VASSAL = scope:recipient } consume_revoke_title_reason = scope:recipient } scope:recipient = { if = { limit = { NOT = { exists = scope:administrative_revocation } is_landed_or_landless_administrative = no } add_pressed_claim = scope:landed_title } if = { limit = { is_a_faction_member = yes } add_joined_faction_discontent = 25 } } if = { limit = { scope:landed_title.tier = tier_county } scope:landed_title = { change_county_control = { value = -30 if = { limit = { scope:recipient.culture != scope:puppet_or_actor.culture scope:recipient.culture = this.culture } multiply = 1.5 } if = { limit = { scope:recipient.faith != scope:puppet_or_actor.faith scope:recipient.faith = this.faith } multiply = 1.5 } } } } if = { limit = { scope:puppet_or_actor.culture = { has_cultural_parameter = penalty_for_revoking_titles_from_house_members } exists = scope:puppet_or_actor.house exists = scope:recipient.house scope:puppet_or_actor.house = scope:recipient.house } if = { limit = { scope:landed_title.tier = tier_county } scope:puppet_or_actor = { add_prestige = medium_prestige_loss } } else_if = { limit = { scope:landed_title.tier = tier_duchy } scope:puppet_or_actor = { add_prestige = major_prestige_loss } } else_if = { #Empire limit = { scope:landed_title.tier = tier_kingdom } scope:puppet_or_actor = { add_prestige = massive_prestige_loss } } } if = { limit = { scope:puppet_or_actor.culture = { has_cultural_parameter = penalty_for_revoking_titles_from_close_family } exists = scope:puppet_or_actor exists = scope:recipient scope:puppet_or_actor = { is_close_family_of = scope:recipient } } if = { limit = { scope:landed_title.tier = tier_county } scope:puppet_or_actor = { add_prestige = medium_prestige_loss } } else_if = { limit = { scope:landed_title.tier = tier_duchy } scope:puppet_or_actor = { add_prestige = major_prestige_loss } } else_if = { #Empire limit = { scope:landed_title.tier = tier_kingdom } scope:puppet_or_actor = { add_prestige = massive_prestige_loss } } } if = { limit = { scope:puppet_or_actor.culture = { has_cultural_parameter = piety_penalty_for_revoking_titles_from_house_members } exists = scope:puppet_or_actor.house exists = scope:recipient.house scope:puppet_or_actor.house = scope:recipient.house } if = { limit = { scope:landed_title.tier = tier_county } scope:puppet_or_actor = { add_piety = medium_piety_loss } } else_if = { limit = { scope:landed_title.tier = tier_duchy } scope:puppet_or_actor = { add_piety = major_piety_loss } } else = { #Can't revoke empire titles anyway limit = { scope:landed_title.tier = tier_kingdom } scope:puppet_or_actor = { add_piety = massive_piety_loss } } } # If we're a clan this interaction affects unity if = { limit = { scope:puppet_or_actor = { government_has_flag = government_is_clan } scope:recipient = { government_has_flag = government_is_clan } exists = scope:puppet_or_actor.house exists = scope:recipient.house scope:puppet_or_actor.house = scope:recipient.house scope:landed_title.tier >= tier_county } scope:puppet_or_actor.house = { if = { limit = { scope:landed_title.tier = tier_county } save_scope_value_as = { name = revoke_title_unity_loss value = minor_unity_loss } } if = { limit = { scope:landed_title.tier = tier_duchy } save_scope_value_as = { name = revoke_title_unity_loss value = medium_unity_loss } } else_if = { limit = { scope:landed_title.tier = tier_kingdom } save_scope_value_as = { name = revoke_title_unity_loss value = major_unity_loss } } if = { limit = { exists = scope:revoke_title_unity_loss } add_clan_unity_interaction_effect = { CHARACTER = scope:puppet_or_actor TARGET = scope:recipient VALUE = scope:revoke_title_unity_loss DESC = clan_unity_title_revoked.desc REVERSE_NON_HOUSE_TARGET = no } } } } # EP3 - Become Adventurer - Revocation scope:recipient = { if = { limit = { has_ep3_dlc_trigger = yes is_valid_for_laampdom = yes } # Plus for our memory variable. clear_saved_scope = lost_primary_title primary_title = { save_scope_as = lost_primary_title } custom_tooltip = { text = laamp_may_become_adventurer_tt trigger_event = { id = ep3_laamps.0041 delayed = yes } } } } } else = { if = { limit = { NOT = { exists = scope:revoke_title_interaction } } custom_tooltip = IS_ALLOWED_TO_REVOKE_TITLE_BARONY_DESC scope:puppet_or_actor = { if = { limit = { any_vassal = { vassal_stance = barons_and_minor_landholders } } custom_tooltip = barons_and_minor_landholders_disapproves_baron_revocations hidden_effect = { every_vassal = { vassal_stance = barons_and_minor_landholders add_opinion = { target = scope:puppet_or_actor modifier = barons_and_minor_landholders_disapproves_baron_revocations_opinion } } } } } } } scope:puppet_or_actor = { if = { limit = { scope:hook = yes scope:recipient = { is_alive = yes } } use_hook = scope:recipient } if = { limit = { scope:hook_liege ?= yes scope:intermediary ?= { is_alive = yes } } use_hook = scope:intermediary } } if = { limit = { scope:recipient = { government_has_flag = government_is_herder } } scope:recipient = { add_opinion = { target = scope:puppet_or_actor opinion = -10 # Herders don't care much modifier = revoked_title } } } else = { scope:recipient = { add_opinion = { target = scope:puppet_or_actor modifier = revoked_title } if = { #If they recently imprisoned you, or asked for your excommunication, they become your rival limit = { OR = { has_opinion_modifier = { target = scope:puppet_or_actor modifier = released_from_prison } AND = { exists = var:requested_my_excommunication var:requested_my_excommunication = scope:puppet_or_actor } } NOT = { has_relation_rival = scope:puppet_or_actor } } if = { limit = { has_relation_potential_rival = scope:puppet_or_actor } remove_relation_potential_rival = scope:puppet_or_actor } set_relation_rival = { target = scope:puppet_or_actor reason = rival_revoked_title_reversed } } else = { progress_towards_rival_effect = { CHARACTER = scope:puppet_or_actor REASON = rival_revoked_title_progress OPINION = 0 } } # HOUSE RELATION house ?= { if = { limit = { NOT = { this = scope:puppet_or_actor.house } } change_house_relation_effect = { HOUSE = scope:puppet_or_actor.house VALUE = house_relation_damage_medium_value REASON = title_revocation CHAR = scope:puppet_or_actor TARGET_CHAR = scope:recipient TITLE = scope:landed_title } } } } } # Penalty for taking the Party Baron's last title. I mean, come on... if = { limit = { scope:recipient = { has_character_flag = is_party_baron NOT = { any_held_title = { this != scope:landed_title } } } } scope:puppet_or_actor = { add_character_modifier = { modifier = party_baron_ended_the_party_modifier years = 10 } random_owned_story = { type = story_party_baron end_story = yes } } } } call_house_member_to_war_interaction_effect = { if = { limit = { exists = scope:target } scope:target = { hidden_effect = { set_called_to = scope:recipient } if = { limit = { is_attacker = scope:puppet_or_actor } add_attacker = scope:recipient } else = { add_defender = scope:recipient } } } if = { limit = { always = scope:hook } scope:puppet_or_actor = { use_hook = scope:recipient } } } sun_trial_interaction_piety_effect = { #Imprisoner gets piety add_piety = { value = minor_piety_value if = { limit = { has_execute_reason = scope:recipient } add = minor_piety_value } if = { limit = { has_banish_reason = scope:recipient } add = miniscule_piety_value } if = { limit = { has_revoke_title_reason = scope:recipient } add = miniscule_piety_value } } } declaration_of_repentance_interaction_effect = { if = { limit = { scope:declaration_hook = yes } scope:puppet_or_actor = { use_hook = scope:recipient } } scope:puppet_or_actor = { if = { limit = { scope:declaration_hook = no NOT = { rite ?= { rite_has_parameter = tenet_purgatory_absolution_costs_less_prestige } } } #Lose a ton of prestige (e.g., Henry's Walk to Canossa) add_prestige = massive_prestige_loss add_prestige_level = -1 } else_if = { limit = { scope:declaration_hook = no } add_prestige = major_prestige_loss } #Character cannot be excommunicated again for 10 years. remove_trait = excommunicated clear_excommunication_tracking_effect = yes add_character_modifier = { modifier = excommunication_recently_lifted years = 10 } stress_and_fulfillment_impact = { cynical = minor_stress_impact_gain } } scope:recipient = { add_prestige = major_prestige_gain add_opinion = { modifier = repentant_opinion target = scope:puppet_or_actor opinion = 10 } } scope:puppet_or_actor = { if = { limit = { any_character_situation = { situation_type = the_christian_church } situation:the_christian_church ?= { situation_top_has_catalyst = catalyst_declaration_of_repentance } } if = { limit = { highest_held_title_tier >= tier_kingdom } situation:the_christian_church = { trigger_situation_catalyst = catalyst_declaration_of_repentance } } else = { situation:the_christian_church = { trigger_situation_catalyst = catalyst_declaration_of_repentance_minor } } } } } seek_indulgences_interaction_effect = { scope:actor = { if = { limit = { OR = { has_character_flag = seek_indulgences_removed_kinslayer_3 # For the post-interaction letter event AND = { has_trait = kinslayer_3 trait_is_shunned_or_criminal_in_rite_trigger = { RITE = rite TRAIT = trait:kinslayer_3 GENDER_CHARACTER = scope:actor } } } } pay_treasury_or_gold = { target = scope:recipient value = seek_indulgences_major_criminal_trait_value } remove_trait_force_tooltip = kinslayer_3 add_character_flag = { flag = seek_indulgences_removed_kinslayer_3 days = 30 } } else_if = { limit = { OR = { has_character_flag = seek_indulgences_removed_kinslayer_2 # For the post-interaction letter event AND = { has_trait = kinslayer_2 trait_is_shunned_or_criminal_in_rite_trigger = { RITE = rite TRAIT = trait:kinslayer_2 GENDER_CHARACTER = scope:actor } } } } pay_treasury_or_gold = { target = scope:recipient value = seek_indulgences_medium_criminal_trait_value } remove_trait_force_tooltip = kinslayer_2 add_character_flag = { flag = seek_indulgences_removed_kinslayer_2 days = 30 } } else_if = { limit = { OR = { has_character_flag = seek_indulgences_removed_witch # For the post-interaction letter event AND = { has_trait = witch trait_is_shunned_or_criminal_in_rite_trigger = { RITE = rite TRAIT = trait:witch GENDER_CHARACTER = scope:actor } } } } pay_treasury_or_gold = { target = scope:recipient value = seek_indulgences_medium_criminal_trait_value } remove_trait_force_tooltip = witch add_character_flag = { flag = seek_indulgences_removed_witch days = 30 } } else_if = { limit = { OR = { has_character_flag = seek_indulgences_removed_deviant # For the post-interaction letter event AND = { has_trait = deviant trait_is_shunned_or_criminal_in_rite_trigger = { RITE = rite TRAIT = trait:deviant GENDER_CHARACTER = scope:actor } } } } pay_treasury_or_gold = { target = scope:recipient value = seek_indulgences_medium_criminal_trait_value } remove_trait_force_tooltip = deviant add_character_flag = { flag = seek_indulgences_removed_deviant days = 30 } } else_if = { limit = { OR = { has_character_flag = seek_indulgences_removed_sodomite # For the post-interaction letter event AND = { has_trait = sodomite trait_is_shunned_or_criminal_in_rite_trigger = { RITE = rite TRAIT = trait:sodomite GENDER_CHARACTER = scope:actor } } } } pay_treasury_or_gold = { target = scope:recipient value = seek_indulgences_medium_criminal_trait_value } remove_trait_force_tooltip = sodomite add_character_flag = { flag = seek_indulgences_removed_sodomite days = 30 } } else_if = { limit = { OR = { has_character_flag = seek_indulgences_removed_kinslayer_1 # For the post-interaction letter event AND = { has_trait = kinslayer_1 trait_is_shunned_or_criminal_in_rite_trigger = { RITE = rite TRAIT = trait:kinslayer_1 GENDER_CHARACTER = scope:actor } } } } pay_treasury_or_gold = { target = scope:recipient value = seek_indulgences_minor_criminal_trait_value } remove_trait_force_tooltip = kinslayer_1 add_character_flag = { flag = seek_indulgences_removed_kinslayer_1 days = 30 } } else_if = { limit = { OR = { has_character_flag = seek_indulgences_removed_adulterer # For the post-interaction letter event AND = { has_trait = adulterer trait_is_shunned_or_criminal_in_rite_trigger = { RITE = rite TRAIT = trait:adulterer GENDER_CHARACTER = scope:actor } } } } pay_treasury_or_gold = { target = scope:recipient value = seek_indulgences_minor_criminal_trait_value } remove_trait_force_tooltip = adulterer add_character_flag = { flag = seek_indulgences_removed_adulterer days = 30 } } else_if = { limit = { OR = { has_character_flag = seek_indulgences_removed_fornicator # For the post-interaction letter event AND = { has_trait = fornicator trait_is_shunned_or_criminal_in_rite_trigger = { RITE = rite TRAIT = trait:fornicator GENDER_CHARACTER = scope:actor } } } } pay_treasury_or_gold = { target = scope:recipient value = seek_indulgences_minor_criminal_trait_value } remove_trait_force_tooltip = fornicator add_character_flag = { flag = seek_indulgences_removed_fornicator days = 30 } } else_if = { limit = { has_trait = gallowsbait } pay_treasury_or_gold = { target = scope:recipient value = seek_indulgences_minor_criminal_trait_value } if = { limit = { has_trait_xp = { trait = gallowsbait track = bandit value >= wipe_slate_min_xp_to_remove_trait_value } } add_trait_xp = { trait = gallowsbait track = bandit value = -40 } } else_if = { limit = { has_trait_xp = { trait = gallowsbait track = trickster value >= wipe_slate_min_xp_to_remove_trait_value } } add_trait_xp = { trait = gallowsbait track = trickster value = -40 } } else_if = { limit = { has_trait_xp = { trait = gallowsbait track = thief value >= wipe_slate_min_xp_to_remove_trait_value } } add_trait_xp = { trait = gallowsbait track = thief value = -40 } } else_if = { limit = { has_trait_xp = { trait = gallowsbait track = poacher value >= wipe_slate_min_xp_to_remove_trait_value } } add_trait_xp = { trait = gallowsbait track = poacher value = -40 } } else_if = { limit = { has_trait_xp = { trait = gallowsbait track = marauder value >= wipe_slate_min_xp_to_remove_trait_value } } add_trait_xp = { trait = gallowsbait track = marauder value = -40 } } else = { remove_trait = gallowsbait } } if = { limit = { scope:recipient = { pam_antipope_is_sponsored_by_trigger = { SPONSOR = scope:actor } } } send_interface_message = { title = petition_antipope_indulgences_interaction_title right_icon = scope:recipient pay_treasury_or_gold = { target = scope:recipient value = seek_indulgences_antipope_buy_piety_value } add_piety = { value = medium_piety_gain if = { # More Piety during the Saeculum Obscurum phase limit = { situation:the_christian_church ?= { has_situation_top_phase_parameter = the_christian_church_better_indulgences } } add = medium_piety_gain } } } } else = { pay_treasury_or_gold = { target = scope:recipient value = seek_indulgences_buy_piety_value } add_piety = { value = medium_piety_gain if = { # More Piety during the Saeculum Obscurum phase limit = { situation:the_christian_church ?= { has_situation_top_phase_parameter = the_christian_church_better_indulgences } } add = medium_piety_gain } } } change_spiritual_fulfillment = major_spiritual_fulfillment_value if = { limit = { scope:recipient = { is_ai = yes } } reverse_add_opinion = { target = scope:recipient modifier = pleased_opinion opinion = 25 } } stress_and_fulfillment_impact = { greedy = minor_stress_impact_gain cynical = minor_stress_impact_gain } } scope:actor = { if = { limit = { scope:recipient = { is_ai = yes } } if = { limit = { scope:actor = { is_ai = yes } } add_character_modifier = { modifier = pam_granted_indulgences_modifier_small years = 5 desc = granted_indulgences_effect_tt } custom_tooltip = granted_indulgences_ai_personality_effect_tt custom_tooltip = granted_indulgences_ai_war_effect_tt custom_tooltip = granted_indulgences_ai_scheme_effect_tt } else = { add_character_modifier = { modifier = pam_granted_indulgences_modifier_small years = 5 desc = granted_indulgences_player_scheme_effect_tt } custom_tooltip = granted_indulgences_player_scheme_effect_tt } } else = { if = { limit = { scope:actor = { is_ai = yes } } add_character_modifier = { modifier = pam_granted_indulgences_modifier years = 10 desc = granted_indulgences_effect_tt } custom_tooltip = granted_indulgences_ai_personality_effect_tt custom_tooltip = granted_indulgences_ai_war_effect_tt custom_tooltip = granted_indulgences_ai_scheme_effect_tt } else = { add_character_modifier = { modifier = pam_granted_indulgences_modifier years = 10 desc = granted_indulgences_player_scheme_effect_tt } custom_tooltip = granted_indulgences_player_scheme_effect_tt } } } if = { limit = { scope:actor = { any_character_situation = { situation_type = the_christian_church } } situation:the_christian_church ?= { situation_top_has_catalyst = catalyst_seek_indulgences } } if = { limit = { scope:actor = { highest_held_title_tier >= tier_kingdom } } situation:the_christian_church = { trigger_situation_catalyst = catalyst_seek_indulgences } } else = { situation:the_christian_church = { trigger_situation_catalyst = catalyst_seek_indulgences_minor } } } } hof_ask_for_gold_interaction_effect = { scope:recipient = { if = { limit = { has_treasury = yes } if = { limit = { scope:actor = { government_has_flag = government_is_theocracy } } # Theocrats receiving Treasury should should get it as Treasury (it's still church money) pay_treasury_or_gold = { target = scope:actor value = hof_ask_for_gold_request_value } } else = { # Non-Theocrats receiving Treasury should should receive it as Gold, even if they have Treasury (ex: Admin) pay_treasury_to_gold = { target = scope:actor value = hof_ask_for_gold_request_value } } } else = { # Gold sent is always received as Gold (it is not "church money" as a concept) pay_short_term_gold = { target = scope:actor gold = hof_ask_for_gold_request_value } } if = { limit = { is_ai = yes } add_opinion = { target = scope:actor modifier = requested_money_opinion opinion = -20 } } if = { limit = { trigger_if = { limit = { is_ai = yes } OR = { ai_honor < 0 ai_zeal < low_negative_ai_value } } intrigue > high_skill_rating NOT = { any_hooked_character = { this = scope:actor } } } add_hook = { type = favor_hook target = scope:actor } custom_tooltip = ask_for_gold_hook_tt add_piety = { value = miniscule_piety_gain multiply = scope:actor.highest_held_title_tier } } else = { add_piety = { value = minor_piety_gain multiply = scope:actor.highest_held_title_tier } } } scope:actor = { if = { limit = { scope:hook = no } add_piety = major_piety_loss } if = { limit = { always = scope:hook } use_hook = scope:recipient } if = { limit = { any_vassal = { vassal_stance = zealot } } custom_tooltip = zealot_vassal_disapproves_asking_hof_for_gold hidden_effect = { every_vassal = { vassal_stance = zealot add_opinion = { target = scope:actor modifier = zealot_disapproves_of_asking_hof_for_gold_opinion } } } } if = { limit = { scope:actor = { is_landed = yes } situation:the_christian_church ?= { situation_participant_group:christian_regular_main_power_rulers = { participant_group_has_character = scope:actor } OR = { situation_current_phase = reform_phase situation_current_phase = concord_phase } } } if = { limit = { scope:recipient = { is_ai = yes } } if = { limit = { scope:actor = { is_ai = yes } } add_character_modifier = { modifier = ask_for_gold_modifier_small years = 5 desc = ask_for_gold_modifier_ai_behavior_tt } custom_tooltip = ask_for_gold_modifier_ai_behavior_tt } add_character_modifier = { modifier = ask_for_gold_modifier_small years = 5 } } else = { if = { limit = { scope:actor = { is_ai = yes } } add_character_modifier = { modifier = ask_for_gold_modifier years = 10 desc = ask_for_gold_modifier_ai_behavior_tt } custom_tooltip = ask_for_gold_modifier_ai_behavior_tt } else = { add_character_modifier = { modifier = ask_for_gold_modifier years = 10 } } } custom_tooltip = modifier_provided_by_christian_situation_tt } if = { limit = { situation:the_christian_church ?= { situation_participant_group:christian_regular_main_power_rulers = { participant_group_has_character = scope:actor } OR = { situation_current_phase = crusade_phase situation_current_phase = conversion_phase } } } if = { limit = { scope:recipient = { is_ai = yes } } if = { limit = { scope:actor = { is_ai = yes } } add_character_modifier = { modifier = ask_for_gold_zeal_modifier_small years = 5 desc = ask_for_gold_zeal_modifier_ai_behavior_tt } custom_tooltip = ask_for_gold_zeal_modifier_ai_behavior_tt } add_character_modifier = { modifier = ask_for_gold_zeal_modifier_small years = 5 } } else = { if = { limit = { scope:actor = { is_ai = yes } } add_character_modifier = { modifier = ask_for_gold_zeal_modifier years = 10 desc = ask_for_gold_zeal_modifier_ai_behavior_tt } custom_tooltip = ask_for_gold_zeal_modifier_ai_behavior_tt } else = { add_character_modifier = { modifier = ask_for_gold_zeal_modifier years = 10 } } } custom_tooltip = modifier_provided_by_christian_situation_tt } if = { limit = { situation:the_christian_church ?= { situation_participant_group:christian_regular_main_power_rulers = { participant_group_has_character = scope:actor } OR = { situation_current_phase = fragile_unity_phase situation_current_phase = saeculum_obscurum_phase situation_current_phase = investiture_crisis_phase } } } if = { limit = { scope:recipient = { is_ai = yes } } if = { limit = { scope:actor = { is_ai = yes } } add_character_modifier = { modifier = ask_for_gold_crisis_modifier_small years = 5 desc = ask_for_gold_crisis_modifier_ai_behavior_tt } custom_tooltip = ask_for_gold_crisis_modifier_ai_behavior_tt } add_character_modifier = { modifier = ask_for_gold_crisis_modifier_small years = 5 } } else = { if = { limit = { scope:actor = { is_ai = yes } } add_character_modifier = { modifier = ask_for_gold_crisis_modifier years = 10 desc = ask_for_gold_crisis_modifier_ai_behavior_tt } custom_tooltip = ask_for_gold_crisis_modifier_ai_behavior_tt } else = { add_character_modifier = { modifier = ask_for_gold_crisis_modifier years = 10 } } } custom_tooltip = modifier_provided_by_christian_situation_tt } if = { limit = { government_is_religious_trigger = no any_character_situation = { situation_type = the_christian_church } situation:the_christian_church ?= { situation_top_has_catalyst = catalyst_ask_for_gold } } if = { limit = { highest_held_title_tier >= tier_kingdom } situation:the_christian_church = { trigger_situation_catalyst = catalyst_ask_for_gold } } else = { situation:the_christian_church = { trigger_situation_catalyst = catalyst_ask_for_gold_minor } } } } } hof_ask_for_gold_refusal_effect = { clerical_interaction_refusal_major_effect = yes } hof_ask_for_claim_interaction_effect = { scope:secondary_recipient = { add_opinion = { target = scope:actor modifier = claimed_my_title_opinion opinion = -60 } } scope:actor = { add_piety = { value = claim_piety_value multiply = -1 } if = { limit = { always = scope:claim_hook } use_hook = scope:recipient } add_pressed_claim = scope:target } } vassal_claim_liege_title_interaction_effect = { scope:puppet_or_actor = { add_unpressed_claim = scope:target } scope:recipient = { add_opinion = { target = scope:puppet_or_actor modifier = claimed_my_title_opinion opinion = -50 } } } convert_at_war_interaction_effect = { scope:puppet_or_actor = { save_scope_as = convert_at_war every_character_war = { limit = { primary_defender = scope:puppet_or_actor primary_attacker = scope:recipient using_non_ghw_holy_war_cb_trigger = yes } set_variable = { name = invalidate_defender_faith_change #This variable will invalidate the war and send proper invalidation message value = yes } show_as_tooltip = { end_war = invalidated } } faith = { save_scope_as = old_faith } rite = { save_scope_as = old_rite } if = { limit = { NOT = { rite = scope:recipient.rite } } convert_to_rite_with_consequences_effect = { RITE = scope:recipient.rite } trigger_event = faith_conversion.0003 } stress_and_fulfillment_impact = { zealous = medium_stress_impact_gain } } scope:recipient = { add_piety_experience = major_piety_value } } demand_conversion_vassal_ruler_interaction_effect = { demand_conversion_interaction_effect = yes hidden_effect = { if = { limit = { exists = scope:recipient.capital_county scope:recipient.capital_county.faith = scope:recipient.faith } save_scope_value_as = { name = convert_capital value = yes } } } if = { limit = { exists = scope:hook scope:hook = yes scope:puppet_or_actor = { has_usable_hook = scope:recipient } } scope:puppet_or_actor = { use_hook = scope:recipient } } #Negative opinions scope:recipient = { add_opinion = { modifier = demanded_my_conversion_opinion target = scope:puppet_or_actor opinion = -10 } } } demand_conversion_player_ruler_interaction_effect = { demand_conversion_interaction_effect = yes if = { limit = { scope:demand_conversion_hook = yes } scope:puppet_or_actor = { use_hook = scope:recipient } } } title_revocation_stress_effect = { if = { limit = { title_revocation_is_tyrannical_trigger = { VASSAL = $VASSAL$ } } stress_and_fulfillment_impact = { generous = medium_stress_impact_gain just = medium_stress_impact_gain } } else_if = { limit = { NOT = { has_revoke_title_reason = $VASSAL$ } } stress_and_fulfillment_impact = { generous = minor_stress_impact_gain forgiving = minor_stress_impact_gain } } else = { # No stress gain if you have a reason } } revoke_holy_order_lease_effect = { $TARGET$ = { faith = { random_faith_holy_order = { limit = { leader = $TARGET$ } save_scope_as = holy_order } } primary_title = { save_scope_as = holy_order_title } } if = { limit = { scope:holy_order = { num_leased_titles = 1 title = $BARONY$.lessee_title } } custom_tooltip = destroy_holy_order_warning } $TARGET$ = { hidden_effect = { #Nudge towards rivalry if = { limit = { NOR = { has_relation_rival = $CHARACTER$ has_relation_potential_rival = $CHARACTER$ } } set_relation_potential_rival = $CHARACTER$ } } if = { limit = { NOT = { this = $CHARACTER$ } } add_opinion = { target = $CHARACTER$ modifier = revoked_order_lease_opinion opinion = -50 } } if = { limit = { $TARGET$.rite.head_of_rite ?= { NOR = { this = $TARGET$ this = $CHARACTER$ this = faith.religious_head } } } $TARGET$.rite.head_of_rite ?= { add_opinion = { modifier = revoked_order_lease_opinion target = $CHARACTER$ opinion = -30 } } } faith = { if = { limit = { exists = religious_head NOT = { religious_head = $CHARACTER$ } } religious_head = { if = { limit = { rite = $TARGET$.rite } add_opinion = { modifier = revoked_order_lease_opinion target = $CHARACTER$ opinion = -30 } } #military order opinion gets lost if = { limit = { has_opinion_modifier = { target = $CHARACTER$ modifier = founded_holy_order_opinion } $TARGET$ = { government_has_flag = government_is_military_holy_order } } remove_opinion = { target = $CHARACTER$ modifier = founded_holy_order_opinion } } #monastic order opinion gets lost if = { limit = { has_opinion_modifier = { target = $CHARACTER$ modifier = founded_monastic_order_opinion } $TARGET$ = { government_has_flag = government_is_monastic_holy_order } } remove_opinion = { target = $CHARACTER$ modifier = founded_monastic_order_opinion } } } } } } $CHARACTER$ = { send_interface_message = { type = holy_order_lease_revoked_message title = revoke_leased_title_interaction_notification right_icon = $TARGET$ $BARONY$ = { save_scope_as = barony county = { #Scaled development loss based on level of holding change_development_level = revoking_lease_development_cost } } # Zealous costs stress if same-faith. if = { limit = { $CHARACTER$.faith = $TARGET$.faith } if = { limit = { has_personal_tenet_flag = leasing_to_military_order_give_spiritual_fulfillment_personal } change_spiritual_fulfillment = major_spiritual_fulfillment_loss } stress_and_fulfillment_impact = { zealous = massive_stress_impact_gain generous = medium_stress_impact_gain order_member = minor_stress_impact_gain } # if called from interaction or decision, use cost for better visibility if = { limit = { NOT = { exists = scope:cost_paid } } add_piety = { value = 0 subtract = cancel_holy_order_piety_cost } } # No spiritual fulfillment loss if the order's rite is heretical to the revoker if = { limit = { trigger_if = { limit = { exists = $CHARACTER$.rite exists = $TARGET$.rite } $TARGET$.rite = { save_temporary_scope_as = revoked_order_rite } $CHARACTER$.rite = { "divergence(scope:revoked_order_rite)" < faith.heresy_threshold } } } change_spiritual_fulfillment = massive_spiritual_fulfillment_loss } } else_if = { # Bit less but still some if you view the other faith as astray. limit = { $CHARACTER$.faith = { faith_hostility_level = { target = $TARGET$.faith value <= faith_astray_level } } } change_spiritual_fulfillment = medium_spiritual_fulfillment_loss stress_and_fulfillment_impact = { zealous = major_stress_impact_gain generous = medium_stress_impact_gain } # if called from interaction or decision, use cost for better visibility if = { limit = { NOT = { exists = scope:cost_paid } } add_piety = { value = 0 subtract = cancel_astray_holy_order_piety_cost } } } else = { if = { limit = { exists = $CHARACTER$.faith.religious_head } $CHARACTER$.faith.religious_head = { add_opinion = { modifier = pleased_opinion target = $CHARACTER$ opinion = 20 } } } add_piety = { value = 250 } $TARGET$.faith = { save_scope_as = target_faith } $TARGET$ = { custom_tooltip = { text = lease_loss_fervor_gain_tt scope:target_faith = { # Fires once per revoked lease with no cooldown, so it has to stay small. change_fervor = { value = small_fervor_gain desc = fervor_gain_holy_order_expelled_by_force } } } } # If the county has the same faith than the HO, locals are unhappy $BARONY$ = { if = { limit = { title_province.county.faith = $TARGET$.faith } title_province.county = { add_county_modifier = { modifier = lost_holy_order_modifier years = 10 } } } } } if = { limit = { $BARONY$.county.holder = { NOT = { this = $CHARACTER$ } faith = $TARGET$.faith trigger_if = { limit = { exists = rite exists = $TARGET$.rite } $TARGET$.rite = { save_temporary_scope_as = revoked_order_rite } rite = { "divergence(scope:revoked_order_rite)" < faith.heresy_threshold } } this = scope:holy_order.holy_order_patron } } $BARONY$.county.holder = { add_opinion = { modifier = revoked_order_lease_opinion target = $CHARACTER$ opinion = -40 } } } } } # revoke_lease clears $BARONY$.lessee, so it must run after all $TARGET$ (= scope:barony.lessee) checks above. $BARONY$ = { revoke_lease = yes } } revoke_holy_order_duel_victor_apply_effects_effect = { scope:sc_victor = { add_stress = major_stress_loss add_prestige = major_prestige_gain } } add_clan_unity_interaction_effect = { if = { limit = { # Check if unity is relevant $CHARACTER$ = { government_has_flag = government_is_clan } $TARGET$ = { government_has_flag = government_is_clan } exists = $CHARACTER$.house exists = $TARGET$.house $CHARACTER$.house = $TARGET$.house trigger_if = { limit = { exists = scope:actor exists = scope:recipient scope:actor != scope:recipient } NOT = { $CHARACTER$ = $TARGET$ } # As a safety, let's make sure that we are not interacting with ourselves } } apply_clan_unity_interaction_effect = { CHARACTER = $CHARACTER$ TARGET = $TARGET$ DESC = $DESC$ VALUE = $VALUE$ VALUE_REVERSED = no } } else_if = { limit = { # Only apply reversed effect for the house head to keep the gauge in check $REVERSE_NON_HOUSE_TARGET$ = yes $CHARACTER$ = { government_has_flag = government_is_clan } $CHARACTER$.house ?= { house_head = $CHARACTER$ } OR = { AND = { exists = $TARGET$.house NOT = { $CHARACTER$.house = $TARGET$.house } } $TARGET$ = { is_lowborn = yes } } } apply_clan_unity_interaction_effect = { CHARACTER = $CHARACTER$ TARGET = $TARGET$ DESC = $DESC$ VALUE = $VALUE$ VALUE_REVERSED = yes } } } apply_clan_unity_interaction_effect = { # Save scopes for localisation $CHARACTER$ = { save_scope_as = unity_character } $TARGET$ = { save_scope_as = unity_target } $CHARACTER$.house = { save_scope_as = character_house add_unity_value = { value = { value = $VALUE$ if = { # House heads have a larger impact on unity limit = { house_head = $CHARACTER$ } multiply = unity_house_head_multiplier_value } if = { limit = { $VALUE_REVERSED$ = yes } multiply = -1 } } character = $CHARACTER$ desc = $DESC$ } } # Notify human players if they are not involved! if = { limit = { trigger_if = { limit = { $VALUE$ >= 0 } $VALUE$ >= major_unity_value } trigger_else = { $VALUE$ <= major_unity_value } } # Notify human players if they are not involved! notify_players_about_unity_change_effect = { CHARACTER = $CHARACTER$ TARGET = $TARGET$ DESC = $DESC$ } } } diarch_declare_recipient_criminal_effect = { scope:actor = { # First we process the diarch. ## Players get a different tooltip, since they don't want to see opinion. if = { limit = { is_ai = no } custom_tooltip = diarch_imprison_reason_for_player.tt hidden_effect = { add_opinion = { target = scope:recipient modifier = treasonous_disobeyed_diarch } } } ## AI use the standard opinion flow. else = { add_opinion = { target = scope:recipient modifier = treasonous_disobeyed_diarch } } # Then their liege. liege = { # Same flow: players get a different tooltip so that they don't see opinion. if = { limit = { is_ai = no } custom_tooltip = ADD_OPINION_EFFECT_I_HAVE_IMPRISONMENT_REASON_UNUSABLE hidden_effect = { add_opinion = { target = scope:recipient modifier = treasonous_disobeyed_diarch } } } # But AI just get opinion. else = { add_opinion = { target = scope:recipient modifier = treasonous_disobeyed_diarch } } } } } diarch_declare_claim_war_effect = { start_war = { casus_belli = claim_cb target = scope:recipient claimant = scope:actor target_title = scope:landed_title } } diarch_declare_vassalisation_war_effect = { start_war = { casus_belli = diarch_vassalisation_cb target = scope:recipient target_title = scope:secondary_recipient.primary_title } } make_criminal_effect = { random_list = { 10 = { trigger = { trait_is_criminal_in_rite_trigger = { TRAIT = trait:adulterer GENDER_CHARACTER = root RITE = root.rite } NOT = { has_trait = adulterer } } add_trait = adulterer } 10 = { trigger = { trait_is_criminal_in_rite_trigger = { TRAIT = trait:kinslayer_3 GENDER_CHARACTER = root RITE = root.rite } NOT = { has_trait = kinslayer_3 } } add_trait = kinslayer_3 } 10 = { trigger = { trait_is_criminal_in_rite_trigger = { TRAIT = trait:witch GENDER_CHARACTER = root RITE = root.rite } NOT = { has_trait = witch } } add_trait = witch } 10 = { trigger = { trait_is_criminal_in_rite_trigger = { TRAIT = trait:cannibal GENDER_CHARACTER = root RITE = root.rite } NOT = { has_trait = cannibal } } add_trait = cannibal } 10 = { trigger = { trait_is_criminal_in_rite_trigger = { TRAIT = trait:deviant GENDER_CHARACTER = root RITE = root.rite } NOT = { has_trait = deviant } } add_trait = deviant } 10 = { trigger = { trait_is_criminal_in_rite_trigger = { TRAIT = trait:fornicator GENDER_CHARACTER = root RITE = root.rite } NOT = { has_trait = fornicator } } add_trait = fornicator } } } clear_hostile_actions_lock_flag_effect = { if = { limit = { has_character_flag = flag_hostile_actions_disabled_delay } remove_character_flag = flag_hostile_actions_disabled_delay } } ep3_hof_ask_for_influence_interaction_effect = { scope:actor = { if = { limit = { domicile ?= { has_domicile_parameter = influence_gain_from_hof_support_6 } } change_influence = ep3_requested_faith_support_6_value custom_tooltip = requested_faith_support_domicile_tt } else_if = { limit = { domicile ?= { has_domicile_parameter = influence_gain_from_hof_support_5 } } change_influence = ep3_requested_faith_support_5_value custom_tooltip = requested_faith_support_domicile_tt } else_if = { limit = { domicile ?= { has_domicile_parameter = influence_gain_from_hof_support_4 } } change_influence = ep3_requested_faith_support_4_value custom_tooltip = requested_faith_support_domicile_tt } else_if = { limit = { domicile ?= { has_domicile_parameter = influence_gain_from_hof_support_3 } } change_influence = ep3_requested_faith_support_3_value custom_tooltip = requested_faith_support_domicile_tt } else_if = { limit = { domicile ?= { has_domicile_parameter = influence_gain_from_hof_support_2 } } change_influence = ep3_requested_faith_support_2_value custom_tooltip = requested_faith_support_domicile_tt } else_if = { limit = { domicile ?= { has_domicile_parameter = influence_gain_from_hof_support_1 } } change_influence = ep3_requested_faith_support_1_value custom_tooltip = requested_faith_support_domicile_tt } else = { change_influence = ep3_requested_faith_support_0_value } house = { if = { limit = { scope:recipient = { is_ai = no } } add_house_modifier = { modifier = ep3_requested_faith_support_modifier years = 10 desc = cleric_influence_behavior_tt } } else = { add_house_modifier = { modifier = ep3_requested_faith_support_modifier_small years = 10 desc = cleric_influence_behavior_tt } } custom_tooltip = cleric_influence_behavior_tt } if = { limit = { scope:recipient = { is_ai = yes } } reverse_add_opinion = { target = scope:recipient modifier = requested_influence_opinion opinion = -30 } } } scope:actor = { if = { limit = { scope:hook = no } add_piety = massive_piety_loss } if = { limit = { always = scope:hook } use_hook = scope:recipient } if = { limit = { situation:the_christian_church ?= { situation_participant_group:christian_regular_main_power_rulers = { participant_group_has_character = scope:actor } situation_top_has_catalyst = catalyst_ask_for_influence } } situation:the_christian_church = { trigger_situation_catalyst = catalyst_ask_for_influence } } if = { limit = { scope:actor = { is_ai = yes } } add_opinion = { target = scope:recipient modifier = helpful_opinion opinion = 50 } } top_liege = { every_vassal_or_below = { custom = custom.every_non_actor_house_vassal limit = { NOR = { house ?= scope:actor.house this = scope:recipient } } add_opinion = { target = scope:recipient modifier = church_favoring_another_house_opinion opinion = -25 } } } house ?= { set_variable = { name = cleric_support value = scope:recipient years = 10 } } } scope:recipient = { if = { limit = { exists = scope:actor.house } custom_tooltip = clerical_influence_investment_bonus_tt add_to_variable_list = { name = cleric_houses_support target = scope:actor.house years = 10 } } if = { limit = { trigger_if = { limit = { is_ai = yes } OR = { ai_honor < 0 ai_zeal < low_negative_ai_value } } intrigue > decent_skill_rating NOT = { any_hooked_character = { this = scope:actor } } } add_hook = { type = favor_hook target = scope:actor } custom_tooltip = ask_for_gold_hook_tt } if = { limit = { scope:actor = { OR = { AND = { is_independent_ruler = yes highest_held_title_tier >= tier_kingdom } house = { is_dominant_family = yes } } } } add_character_modifier = { modifier = strong_clerical_influence_cleric_modifier years = 10 } } else_if = { limit = { scope:actor.house = { is_powerful_family = yes } } add_character_modifier = { modifier = clerical_influence_cleric_modifier years = 10 } } else = { add_character_modifier = { modifier = weak_clerical_influence_cleric_modifier years = 10 } } if = { limit = { is_ai = no } custom_tooltip = 3_family_support_warning_tt } } } torture_memory_effect = { $VICTIM$ = { create_character_memory = { type = tortured_memory participants = { torturer = $TORTURER$ } } ordered_memory = { memory_type = tortured_memory limit = { any_memory_participant = { this = $TORTURER$ } } order_by = memory_creation_date save_scope_as = tortured_memory set_variable = { name = type value = flag:$TYPE$ } } } $TORTURER$ = { create_character_memory = { type = torturer_memory participants = { victim = $VICTIM$ } } ordered_memory = { memory_type = torturer_memory limit = { any_memory_participant = { this = $VICTIM$ } } order_by = memory_creation_date save_scope_as = torturer_memory set_variable = { name = type value = flag:$TYPE$ } } } } ai_religious_request_blocker_effect = { scope:recipient = { if = { limit = { # AI is requesting from a Player - we don't restrict AI-to-AI is_ai = no scope:puppet_or_actor = { is_ai = yes } } # A player Head of Faith receives this at most once every three years, whatever the asker's tier add_character_flag = { flag = $INTERACTION$_received_cooldown years = 3 } # Not a switch, because unlisted tiers made the blocker always pass and barred emperors if = { limit = { scope:puppet_or_actor = { highest_held_title_tier >= tier_kingdom } } scope:puppet_or_actor = { add_character_flag = { flag = hof_request_cooldown years = 1 } } } else_if = { limit = { scope:puppet_or_actor = { highest_held_title_tier = tier_duchy } } scope:puppet_or_actor = { add_character_flag = { flag = hof_request_cooldown years = 2 } } } else = { scope:puppet_or_actor = { add_character_flag = { flag = hof_request_cooldown years = 4 } } } } } }