N3OW/common/scripted_effects/00_interaction_effects.txt

5687 lines
136 KiB
Text

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