N3OW/events/dlc/tgp/tgp_tribute_mission_events.txt
2026-05-23 20:45:31 -04:00

4739 lines
122 KiB
Text

namespace = tribute_mission
# 0001 -> Hidden: Set the parameters
## Character Events ##
# 1000 -> Tributary: Fork over Tribute, try to influence reward
# 1002 -> Overlord: Do you want the Human Tribute?
# 1005 -> Overlord: Decide the reward
# 1006 -> Overlord: CHINA - Decide whether to grant a Seal of Investiture or not
# 1007 -> Tributary: CHINA - Receive the Seal of Investiture
# 1008 -> Tributary: HEGEMON - Decide whether to become a Tributary or not
# 1010 -> Tributary: Receive reward, go home
## Court Events ##
# 3000 -> Tributary: Fork over Tribute, try to influence reward
# 3002 -> Overlord: Do you want the Human Tribute? ###DEPRECATED
# 3005 -> Overlord: Decide the reward ###DEPRECATED
# 3010 -> Tributary: Receive reward, go home
## Letter Events ##
# 9000 -> Tributary: Overlord is informing you of your imminent loss of tributary-status (unless you Tribute Mission)
# 9500 -> Tributary: You ignored the Tribute Mission, Overlord goes bye-bye
## Travel Events ##
# 9750 -> Tributary: You lost your Human Tribute
# 9760 -> Tributary: Your to-be Eunuch is trying to escape
# Note on scope naming: 'overlord_scope' and 'tributary_scope' can be misleading since it's technically possible for some
# non-tributaries to go on tribute missions as well. Consider these equivalent to "tribute receiver" and "tribute payer".
scripted_trigger tribute_mission_1000_available_receiver_trigger = {
is_available = yes
location = scope:overlord_scope.capital_province
}
#Hidden: Set the parameters
tribute_mission.0001 = {
hidden = yes
immediate = {
#Determine who is who
save_scope_as = tributary_scope
var:tribute_mission_target_scope ?= { save_scope_as = overlord_scope }
#Who is the receiving character?
scope:overlord_scope = {
#Overlord
if = {
limit = {
is_available = yes
is_adult = yes
}
save_scope_as = receiving_character
}
#Diarch
else_if = {
limit = {
diarch ?= { tribute_mission_1000_available_receiver_trigger = yes }
}
diarch = { save_scope_as = receiving_character }
}
#Councillor
else_if = {
limit = {
OR = {
cp:councillor_court_chaplain ?= { tribute_mission_1000_available_receiver_trigger = yes }
cp:councillor_chancellor ?= { tribute_mission_1000_available_receiver_trigger = yes }
cp:councillor_steward ?= { tribute_mission_1000_available_receiver_trigger = yes }
cp:councillor_marshal ?= { tribute_mission_1000_available_receiver_trigger = yes }
cp:councillor_spymaster ?= { tribute_mission_1000_available_receiver_trigger = yes }
}
}
if = {
limit = {
cp:councillor_steward ?= { tribute_mission_1000_available_receiver_trigger = yes }
}
cp:councillor_steward = { save_scope_as = receiving_character }
}
if = {
limit = {
NOT = { exists = scope:receiving_character }
cp:councillor_chancellor ?= { tribute_mission_1000_available_receiver_trigger = yes }
}
cp:councillor_chancellor = { save_scope_as = receiving_character }
}
if = {
limit = {
NOT = { exists = scope:receiving_character }
cp:councillor_spymaster ?= { tribute_mission_1000_available_receiver_trigger = yes }
}
cp:councillor_spymaster = { save_scope_as = receiving_character }
}
if = {
limit = {
NOT = { exists = scope:receiving_character }
cp:councillor_court_chaplain ?= { tribute_mission_1000_available_receiver_trigger = yes }
}
cp:councillor_court_chaplain = { save_scope_as = receiving_character }
}
if = {
limit = {
NOT = { exists = scope:receiving_character }
cp:councillor_marshal ?= { tribute_mission_1000_available_receiver_trigger = yes }
}
cp:councillor_marshal = { save_scope_as = receiving_character }
}
}
#Random attendant
else = {
create_character = {
template = servant_character
location = scope:overlord_scope.capital_province
culture = scope:overlord_scope.capital_province.culture
faith = scope:overlord_scope.capital_province.faith
dynasty = none
save_scope_as = receiving_character
}
scope:receiving_character = {
remove_character_flag = peasant_outfit
add_character_flag = created_attendant
}
scope:overlord_scope = {
hidden_effect = { add_courtier = scope:receiving_character }
}
}
# Save Overlord's opinion of the Tributary
save_opinion_value_as = {
name = opinion_of_tributary
target = scope:tributary_scope
}
}
#Set up the human tribute scopes
if = {
limit = { var:tribute_mission_type ?= flag:concubine_tribute }
var:offered_concubine ?= { save_scope_as = concubine_character }
}
if = {
limit = { var:tribute_mission_type ?= flag:eunuch_tribute }
var:offered_eunuch ?= {
save_scope_as = eunuch_character
if = {
limit = { is_eunuch_trigger = no }
remove_opinion = {
modifier = slated_for_castration_opinion
target = scope:tributary_scope
}
add_trait = eunuch_1
add_opinion = {
modifier = castration_opinion
target = scope:tributary_scope
opinion = -50
}
add_character_flag = {
flag = tribute_mission_recently_castrated
days = 30
}
}
}
}
#... or the non-living scopes
if = {
limit = { var:tribute_mission_type ?= flag:artifact_tribute }
var:offered_artifact ?= { save_scope_as = artifact_to_tribute }
}
if = {
limit = { var:tribute_mission_type ?= flag:bunga_mas_tribute }
var:offered_bunga_mas ?= { save_scope_as = artifact_to_tribute }
}
#Hol' up while we're here
hidden_effect = {
current_travel_plan ?= { pause_travel_plan = yes }
}
#Roll for Bunga Mas
if = {
limit = {
is_ai = yes
scope:overlord_scope = {
government_has_flag = government_is_mandala
NOT = { has_variable = bunga_mas_cooldown }
}
}
random = {
chance = 1
modifier = {
scope:overlord_scope = { has_unruined_mandala_capital_trigger = yes }
add = {
value = scope:overlord_scope.mandala_radiance_value
divide = 10
}
}
scope:overlord_scope = {
get_artifact_quality_effect = yes
get_artifact_wealth_effect = yes
set_variable = {
name = bunga_mas_cooldown
years = 5
}
}
hidden_effect_new_object = {
scope:tributary_scope = {
create_bunga_mas_artifact_effect = yes
}
scope:newly_created_bunga_mas = {
remove_artifact_modifier = artifact_placeholder_modifier
if = {
limit = { rarity = illustrious }
set_artifact_description = tribute_mission_illustrious_bunga_mas_desc
add_artifact_modifier = artifact_legitimacy_gain_mult_5_modifier
add_artifact_modifier = artifact_health_gain_3_modifier
if = {
limit = {
scope:overlord_scope = {
house = { has_house_aspiration_parameter = aspect_of_creation }
}
}
add_artifact_modifier = artifact_seduce_scheme_phase_duration_add_3_modifier
add_artifact_modifier = artifact_fertility_gain_3_modifier
add_artifact_modifier = artifact_build_gold_cost_3_modifier
}
if = {
limit = {
scope:overlord_scope = {
house = { has_house_aspiration_parameter = aspect_of_serenity }
}
}
add_artifact_modifier = artifact_befriend_scheme_phase_duration_add_3_modifier
add_artifact_modifier = artifact_scheme_resistance_add_3_modifier
add_artifact_modifier = artifact_stress_gain_4_modifier
}
if = {
limit = {
scope:overlord_scope = {
house = { has_house_aspiration_parameter = aspect_of_destruction }
}
}
add_artifact_modifier = artifact_pursue_efficiency_2_modifier
add_artifact_modifier = artifact_prowess_4_modifier
add_artifact_modifier = artifact_knight_limit_1_modifier
}
if = {
limit = {
scope:overlord_scope = {
house = { has_house_aspiration_parameter = aspect_of_trickery }
}
}
add_artifact_modifier = artifact_owned_hostile_scheme_success_chance_add_10_modifier
add_artifact_modifier = artifact_owned_personal_scheme_success_chance_add_10_modifier
add_artifact_modifier = artifact_owned_scheme_secrecy_add_10_modifier
}
}
else_if = {
limit = { rarity = famed }
set_artifact_description = tribute_mission_famed_bunga_mas_desc
add_artifact_modifier = artifact_legitimacy_gain_mult_4_modifier
add_artifact_modifier = artifact_health_gain_2_modifier
if = {
limit = {
scope:overlord_scope = {
house = { has_house_aspiration_parameter = aspect_of_creation }
}
}
add_artifact_modifier = artifact_seduce_scheme_phase_duration_add_2_modifier
add_artifact_modifier = artifact_fertility_gain_1_modifier
add_artifact_modifier = artifact_build_gold_cost_1_modifier
}
if = {
limit = {
scope:overlord_scope = {
house = { has_house_aspiration_parameter = aspect_of_serenity }
}
}
add_artifact_modifier = artifact_befriend_scheme_phase_duration_add_2_modifier
add_artifact_modifier = artifact_scheme_resistance_add_1_modifier
add_artifact_modifier = artifact_stress_gain_2_modifier
}
if = {
limit = {
scope:overlord_scope = {
house = { has_house_aspiration_parameter = aspect_of_destruction }
}
}
add_artifact_modifier = artifact_pursue_efficiency_1_modifier
add_artifact_modifier = artifact_prowess_2_modifier
}
if = {
limit = {
scope:overlord_scope = {
house = { has_house_aspiration_parameter = aspect_of_trickery }
}
}
add_artifact_modifier = artifact_owned_hostile_scheme_success_chance_add_5_modifier
add_artifact_modifier = artifact_owned_personal_scheme_success_chance_add_5_modifier
add_artifact_modifier = artifact_owned_scheme_secrecy_add_5_modifier
}
}
else_if = {
limit = { rarity = masterwork }
set_artifact_description = tribute_mission_masterwork_bunga_mas_desc
add_artifact_modifier = artifact_legitimacy_gain_mult_3_modifier
add_artifact_modifier = artifact_health_gain_1_modifier
}
else = {
set_artifact_description = tribute_mission_common_bunga_mas_desc
add_artifact_modifier = artifact_legitimacy_gain_mult_2_modifier
}
}
}
}
}
#Do they have a royal court and is the overlord available? Trigger court event for the tributary
if = {
limit = {
scope:overlord_scope = {
has_royal_court = yes
this = scope:receiving_character
}
}
trigger_event = tribute_mission.3000
}
else = { trigger_event = tribute_mission.1000 }
}
}
tribute_mission.0002 = {
hidden = yes
#Double-check the status of the human tribute
immediate = {
if = {
limit = {
OR = {
AND = {
var:tribute_mission_type ?= flag:concubine_tribute
var:offered_concubine ?= { is_alive = no }
}
AND = {
var:tribute_mission_type ?= flag:eunuch_tribute
var:offered_eunuch ?= { is_alive = no }
}
}
}
add_character_flag = revisit_tribute_mission_0001
trigger_event = tribute_mission.9750
}
else = { trigger_event = tribute_mission.0001 }
}
}
#Make any stray created attendant disappear
tribute_mission.0005 = {
hidden = yes
immediate = { silent_disappearance_effect = yes }
}
### TRIBUTES ###
#Gold
scripted_trigger tribute_mission_1000_gold_tributary_trigger = {
scope:tributary_scope = { has_variable = offered_gold_value }
}
scripted_effect tribute_mission_1000_fork_over_gold_effect = {
scope:overlord_scope = { add_gold = scope:tributary_scope.var:offered_gold_value }
}
#Herd
scripted_trigger tribute_mission_1000_herd_tributary_trigger = {
scope:tributary_scope = { has_variable = offered_herd_value }
}
scripted_effect tribute_mission_1000_fork_over_herd_effect = {
scope:overlord_scope = { add_gold = herd_conversion_tribute_value }
}
#Concubine
scripted_trigger tribute_mission_1000_concubine_tributary_trigger = {
scope:tributary_scope = { has_variable = offered_concubine }
}
scripted_effect tribute_mission_1000_common_arrival_effect = {
#Save the concubine
if = {
limit = { exists = scope:concubine_character }
scope:concubine_character = { save_scope_as = human_tribute }
}
#Save the eunuch
if = {
limit = { exists = scope:eunuch_character }
scope:eunuch_character = { save_scope_as = human_tribute }
}
#If we're gifting an artifact
scope:artifact_to_tribute ?= {
set_variable = {
name = suppress_artifact_notifications
value = yes
days = 10
}
}
#Or a Bunga Mas
scope:newly_created_bunga_mas ?= {
set_variable = {
name = suppress_artifact_notifications
value = yes
days = 10
}
}
#Grant Legitimacy to Hegemonic Suzerains depending on the tier of the tributary
if = {
limit = { scope:overlord_scope = { highest_held_title_tier = tier_hegemony } }
save_temporary_scope_value_as = {
name = legitimacy_gain
value = {
switch = {
trigger = scope:tributary_scope.primary_title.tier
tier_county = {
add = miniscule_legitimacy_gain
}
tier_duchy = {
add = minor_legitimacy_gain
}
tier_kingdom = {
add = medium_legitimacy_gain
}
tier_empire = {
add = major_legitimacy_gain
}
}
}
}
scope:overlord_scope = {
send_interface_toast = {
type = event_toast_effect_good
title = tribute_mission_suzerain_legitimacy_gain_title
left_icon = scope:tributary_scope
right_icon = this
add_legitimacy_effect = { LEGITIMACY = scope:legitimacy_gain }
}
}
}
}
scripted_effect tribute_mission_1000_make_concubine_effect = {
hidden_effect = {
scope:tributary_scope = {
current_travel_plan ?= { remove_character = scope:concubine_character }
}
}
make_concubine = scope:concubine_character # make_concubine inherently also adds them as a courtier first, for reference
}
scripted_effect tribute_mission_1000_make_courtier_effect = {
hidden_effect = {
scope:tributary_scope = {
current_travel_plan ?= { remove_character = $HUMAN_TRIB$ }
}
}
if = {
limit = {
$HUMAN_TRIB$ = {
employer != scope:overlord_scope
}
}
scope:overlord_scope = { add_courtier = $HUMAN_TRIB$ }
}
}
scripted_trigger tribute_mission_1000_overlord_can_employ_concubine_trigger = {
scope:overlord_scope = { allowed_more_concubines = yes }
}
scripted_effect tribute_mission_1000_fork_over_concubine_effect = {
scope:overlord_scope = {
#If the overlord is AI, they've already accepted the concubine via the interaction so just assign them right away
if = {
limit = { is_ai = yes }
if = {
limit = { tribute_mission_1000_overlord_can_employ_concubine_trigger = yes }
tribute_mission_1000_make_concubine_effect = yes
}
else = {
tribute_mission_1000_make_courtier_effect = { HUMAN_TRIB = scope:concubine_character }
}
}
}
}
#Eunuch
scripted_trigger tribute_mission_1000_eunuch_tributary_trigger = {
scope:tributary_scope = { has_variable = offered_eunuch }
}
#Artifact
scripted_trigger tribute_mission_1000_artifact_tributary_trigger = {
scope:tributary_scope = { has_variable = offered_artifact }
}
scripted_effect tribute_mission_1000_fork_over_artifact_effect = {
scope:artifact_to_tribute = { set_owner = scope:overlord_scope }
}
#Bunga Mas
scripted_trigger tribute_mission_1000_bunga_mas_tributary_trigger = {
scope:tributary_scope = { has_variable = offered_bunga_mas }
}
scripted_effect tribute_mission_1000_determine_bunga_mas_scale_effect = {
if = {
limit = { var:tribute_mission_type ?= flag:bunga_mas_tribute }
if = {
limit = {
scope:artifact_to_tribute = { rarity = illustrious }
}
set_variable = {
name = bunga_mas_tribute_modifier
value = 3
years = 10
}
}
else_if = {
limit = {
scope:artifact_to_tribute = { rarity = famed }
}
set_variable = {
name = bunga_mas_tribute_modifier
value = 2
years = 10
}
}
else_if = {
limit = {
scope:artifact_to_tribute = { rarity = masterwork }
}
random_list = {
50 = {
set_variable = {
name = bunga_mas_tribute_modifier
value = 2
years = 10
}
}
50 = {
set_variable = {
name = bunga_mas_tribute_modifier
value = 1
years = 10
}
}
}
}
else = {
set_variable = {
name = bunga_mas_tribute_modifier
value = 1
years = 10
}
}
}
}
#Give the actual Tribute
scripted_effect tribute_mission_1000_fork_over_tribute_effect = {
if = {
limit = { tribute_mission_1000_gold_tributary_trigger = yes }
tribute_mission_1000_fork_over_gold_effect = yes
}
if = {
limit = { tribute_mission_1000_herd_tributary_trigger = yes }
tribute_mission_1000_fork_over_herd_effect = yes
}
if = {
limit = { tribute_mission_1000_concubine_tributary_trigger = yes }
tribute_mission_1000_fork_over_concubine_effect = yes
}
if = {
limit = { tribute_mission_1000_eunuch_tributary_trigger = yes }
tribute_mission_1000_make_courtier_effect = { HUMAN_TRIB = scope:eunuch_character }
}
if = {
limit = { tribute_mission_1000_artifact_tributary_trigger = yes }
tribute_mission_1000_fork_over_artifact_effect = yes
}
#Bunga Mas!
if = {
limit = { exists = scope:newly_created_bunga_mas }
scope:newly_created_bunga_mas = { set_owner = scope:overlord_scope }
}
if = {
limit = { tribute_mission_1000_bunga_mas_tributary_trigger = yes }
tribute_mission_1000_fork_over_artifact_effect = yes #We should be able to reuse this
}
#Some Mandala piety
tribute_mission_mandala_piety_effect = yes
}
#If the Overlord is not AI and are away, notify them what they got
scripted_effect tribute_mission_1000_fork_over_with_notification_effect = {
if = {
limit = {
scope:overlord_scope != scope:receiving_character
scope:overlord_scope = { is_ai = no }
}
#If the overlord isn't available and is a player, let them know what happened
scope:overlord_scope = {
send_interface_message = {
type = event_tribute_good_with_text
title = tribute_mission_notification.title
left_icon = scope:tributary_scope
desc = tribute_mission_notification.desc
tribute_mission_1000_fork_over_tribute_effect = yes
}
}
}
else = { tribute_mission_1000_fork_over_tribute_effect = yes }
}
#What options should an AI receiver be able to use when the Overlord is an unavailable player
scripted_trigger tribute_mission_1000_is_available_to_ai_receiver_trigger = {
scope:overlord_scope != scope:receiving_character
scope:receiving_character = { is_ai = yes }
scope:overlord_scope = {
is_ai = no
#Mainly for Hegemons
has_treasury = yes
}
}
### REWARDS ###
scripted_effect tribute_mission_1000_display_potential_rewards_effect = {
show_as_tooltip = {
random_list = {
#Treasury
10 = {
trigger = { tribute_mission_1000_can_give_treasury_trigger = yes }
show_chance = no
desc = tribute_mission.1000.abstain.treasury.desc
tribute_mission_1000_give_treasury_effect = yes
}
#Artifact
10 = {
trigger = { tribute_mission_1000_can_set_artifact_reward_trigger = yes }
show_chance = no
desc = tribute_mission.1000.abstain.artifact.desc
custom_tooltip = tribute_mission.1000.artifact.tt
}
#Innovation
10 = {
trigger = { tribute_mission_1000_can_set_innovation_reward_trigger = yes }
show_chance = no
desc = tribute_mission.1000.abstain.innovation.desc
custom_tooltip = tribute_mission.1000.innovation.tt
}
#Development
10 = {
trigger = { tribute_mission_1000_eligible_development_trigger = yes }
show_chance = no
desc = tribute_mission.1000.abstain.development.desc
tribute_mission_1000_give_development_effect = yes
}
#Monk
10 = {
trigger = { tribute_mission_1000_eligible_for_monk_trigger = yes }
show_chance = no
desc = tribute_mission.1000.abstain.monk.desc
custom_tooltip = tribute_mission.1000.monk.tt
}
#Generic Legitimacy
10 = {
show_chance = no
desc = tribute_mission.1000.abstain.legitimacy.desc
tribute_mission_1000_give_legitimacy_effect = yes
}
}
if = {
limit = { var:tribute_mission_type ?= flag:bunga_mas_tribute }
add_character_modifier = {
modifier = bunga_mas_tribute_modifier
years = 10
}
}
}
}
#China: Treasury / Trade Goods
scripted_trigger tribute_mission_1000_can_give_treasury_trigger = {
trigger_if = {
limit = {
scope:overlord_scope = { has_treasury = yes }
}
scope:overlord_scope.treasury > tribute_treasury_reward_value
}
trigger_else = { always = no }
tribute_mission_1000_is_available_to_ai_receiver_trigger = no
}
scripted_effect tribute_mission_1000_set_treasury_reward_effect = {
if = {
limit = {
NOT = { exists = scope:tribute_reward_type_treasury }
}
save_scope_value_as = {
name = tribute_reward_type_treasury
value = tribute_treasury_reward_value
}
}
}
#Artifact
scripted_trigger tribute_mission_1000_can_set_artifact_reward_trigger = {
tribute_mission_1000_is_available_to_ai_receiver_trigger = no
}
scripted_trigger tribute_mission_1000_eligible_smith_trigger = {
is_physically_able_ai_adult = yes
OR = {
#Someone new?
AND = {
has_no_particular_noble_roots_trigger = yes
}
#A previous smithy
has_variable = tribute_mission_1000_smith
}
}
scripted_effect tribute_mission_1000_eligible_smith_scope_effect = {
if = {
limit = {
any_pool_character = {
province = scope:overlord_scope.capital_province
tribute_mission_1000_eligible_smith_trigger = yes
}
}
random_pool_character = {
province = scope:overlord_scope.capital_province
limit = { tribute_mission_1000_eligible_smith_trigger = yes }
save_scope_as = smith_character
}
}
else = {
create_character = {
template = merchant_template
location = scope:overlord_scope.capital_province
culture = scope:overlord_scope.capital_province.culture
faith = scope:overlord_scope.capital_province.faith
dynasty = none
save_scope_as = smith_character
after_creation = { set_variable = tribute_mission_1000_smith }
}
}
if = {
limit = { NOT = { exists = scope:smith_character } }
error_log = "Failed to create a valid smith in tribute_mission_1000_eligible_smith_scope_effect!"
}
}
scripted_effect tribute_mission_1000_reward_cost_effect = {
#A small fee for human players
if = {
limit = { is_ai = no }
if = {
limit = { scope:overlord_scope = { has_treasury = yes } }
remove_treasury = scope:overlord_scope.tribute_reward_treasury_cost
}
else = {
remove_short_term_gold = miniscule_gold_value
}
}
}
scripted_effect tribute_mission_1000_set_artifact_reward_effect = {
scope:overlord_scope = {
#A small fee for human players
tribute_mission_1000_reward_cost_effect = yes
hidden_effect = {
#Randomize the quality, somewhat
random_list = {
50 = {
get_artifact_quality_effect = yes
get_artifact_wealth_effect = yes
}
25 = { set_artifact_rarity_famed = yes }
10 = {
trigger = { has_relation_best_friend = scope:tributary_scope }
set_artifact_rarity_illustrious = yes
}
}
#Create the artifact
hidden_effect_new_object = {
#Who is making it
tribute_mission_1000_eligible_smith_scope_effect = yes
#What are we making
random_list = {
10 = {
create_artifact_armor_effect = {
OWNER = scope:overlord_scope
CREATOR = scope:smith_character
SET_ARMOR_TYPE = flag:no
}
}
10 = {
create_artifact_regalia_effect = {
OWNER = scope:overlord_scope
SMITH = scope:smith_character
}
}
10 = {
create_artifact_brooch_effect = {
OWNER = scope:overlord_scope
SMITH = scope:smith_character
}
}
10 = {
create_artifact_necklace_effect = {
OWNER = scope:overlord_scope
SMITH = scope:smith_character
}
}
10 = {
create_artifact_ring_effect = {
OWNER = scope:overlord_scope
SMITH = scope:smith_character
}
}
10 = {
create_artifact_weapon_effect = {
OWNER = scope:overlord_scope
CREATOR = scope:smith_character
SET_WEAPON_TYPE = flag:artifact_weapon_type_dagger
}
}
}
scope:newly_created_artifact = {
save_scope_as = tribute_reward_type_artifact
add_artifact_modifier = artifact_legitimacy_gain_mult_4_modifier
set_variable = {
name = suppress_artifact_notifications
value = yes
days = 10
}
}
}
}
}
}
#Innovation
scripted_trigger tribute_mission_1000_eligible_innovation_trigger = {
NOT = { is_known_by_culture = scope:tributary_scope.culture }
culture_can_know_innovation = scope:tributary_scope.culture
}
scripted_trigger tribute_mission_1000_can_set_innovation_reward_trigger = {
NOT = { scope:tributary_scope.culture = scope:overlord_scope.culture }
OR = {
#Either they have a fascination we can feed/progress
scope:tributary_scope.culture = { culture_has_any_fascination = yes }
#Or we have an innovation they can unlock to research
scope:overlord_scope.culture = {
any_known_innovation = { tribute_mission_1000_eligible_innovation_trigger = yes }
}
}
}
scripted_effect tribute_mission_1000_set_innovation_reward_effect = {
if = {
limit = {
scope:overlord_scope.culture = {
any_known_innovation = { tribute_mission_1000_eligible_innovation_trigger = yes }
}
}
scope:saved_innovation = { save_scope_as = tribute_reward_type_innovation }
}
else = {
save_scope_value_as = {
name = tribute_reward_type_innovation # This scope still needs to exist and be consistent for loc triggers and other things
value = yes
}
scope:tributary_scope = {
set_variable = {
name = tribute_reward_fascination_progress # But the comparison will break if the scope can be two different things, so we use a variable
value = yes
}
}
}
}
#Development
scripted_trigger tribute_mission_1000_eligible_development_trigger = {
scope:overlord_scope.capital_province != scope:tributary_scope.capital_province
scope:tributary_scope.capital_county = {
NOT = { has_county_modifier = suzerain_trade_post_modifier }
}
tribute_mission_1000_is_available_to_ai_receiver_trigger = no
}
scripted_effect tribute_mission_1000_set_development_reward_effect = {
scope:overlord_scope = {
#A small fee for human players
tribute_mission_1000_reward_cost_effect = yes
save_scope_value_as = {
name = tribute_reward_type_development
value = yes
}
}
}
#Mandala: Priest
scripted_trigger tribute_mission_1000_eligible_for_monk_trigger = {
scope:overlord_scope = {
government_has_flag = government_is_mandala
NOR = {
faith = { has_doctrine_parameter = unreformed }
faith = scope:tributary_scope.faith
}
}
scope:tributary_scope.faith = { has_doctrine_parameter = unreformed }
}
scripted_effect tribute_mission_1000_set_monk_reward_effect = {
scope:overlord_scope = {
#A small fee for human players
tribute_mission_1000_reward_cost_effect = yes
}
hidden_effect_new_object = {
create_character = {
location = scope:overlord_scope.capital_province
template = monk_character_template
culture = scope:overlord_scope.culture
faith = scope:overlord_scope.faith
save_scope_as = new_monk
after_creation = {
add_character_flag = suzerains_missionary
}
}
}
save_scope_value_as = {
name = tribute_reward_type_monk
value = scope:new_monk
}
}
#Generic Legitimacy
scripted_trigger tribute_mission_1000_eligible_legitimacy_trigger = {
scope:receiving_character = scope:overlord_scope
}
scripted_effect tribute_mission_1000_set_legitimacy_reward_effect = {
save_scope_value_as = {
name = tribute_reward_type_legitimacy
value = yes
}
}
#Determine the reward
scripted_effect tribute_mission_1000_generate_reward_effect = {
#Were we successfully influenced?
if = {
limit = { scope:successful_influence ?= flag:treasury }
tribute_mission_1000_set_treasury_reward_effect = yes
save_scope_value_as = {
name = decided_on_treasury_reward
value = flag:yes
}
}
else_if = {
limit = { scope:successful_influence ?= flag:artifact }
tribute_mission_1000_set_artifact_reward_effect = yes
}
else_if = {
limit = { scope:successful_influence ?= flag:innovation }
tribute_mission_1000_set_innovation_reward_effect = yes
}
else_if = {
limit = { scope:successful_influence ?= flag:development }
tribute_mission_1000_set_development_reward_effect = yes
}
else = {
hidden_effect = {
random_list = {
#Treasury
10 = {
trigger = { tribute_mission_1000_can_give_treasury_trigger = yes }
tribute_mission_1000_set_treasury_reward_effect = yes
save_scope_value_as = {
name = decided_on_treasury_reward
value = flag:yes
}
}
#Artifact
10 = {
tribute_mission_1000_set_artifact_reward_effect = yes
}
#Innovation
10 = {
trigger = { tribute_mission_1000_can_set_innovation_reward_trigger = yes }
tribute_mission_1000_set_innovation_reward_effect = yes
}
#Development
10 = {
trigger = { tribute_mission_1000_eligible_development_trigger = yes }
tribute_mission_1000_set_development_reward_effect = yes
}
#Priest
50 = {
trigger = { tribute_mission_1000_eligible_for_monk_trigger = yes }
tribute_mission_1000_set_monk_reward_effect = yes
}
#Generic Legitimacy
25 = {
trigger = { tribute_mission_1000_eligible_legitimacy_trigger = yes }
tribute_mission_1000_set_legitimacy_reward_effect = yes
}
}
}
}
}
#These are re-used for when the player Overlord picks the reward
scripted_effect tribute_mission_1000_give_treasury_effect = {
scope:overlord_scope = { remove_treasury = scope:tribute_reward_type_treasury }
scope:tributary_scope = { add_gold = scope:tribute_reward_type_treasury }
}
scripted_effect tribute_mission_1000_give_artifact_effect = {
scope:tribute_reward_type_artifact = { set_owner = scope:tributary_scope }
}
scripted_effect tribute_mission_1000_give_innovation_progress_effect = {
if = {
limit = {
scope:tributary_scope = {
has_variable = tribute_reward_fascination_progress
}
}
scope:tributary_scope.culture = {
add_fascination_progress = tribute_reward_fascination_progress_value
}
}
else = {
scope:tributary_scope.culture = {
add_innovation_progress = {
value = tribute_reward_innovation_progress_value
target = scope:tribute_reward_type_innovation
}
}
}
}
scripted_effect tribute_mission_1000_give_development_effect = {
scope:tributary_scope.capital_county = {
add_county_modifier = {
modifier = suzerain_trade_post_modifier
years = 10
}
}
}
scripted_effect tribute_mission_1000_give_monk_effect = {
scope:tributary_scope = {
add_courtier = scope:new_monk
current_travel_plan = {
add_companion = scope:new_monk
}
}
scope:overlord_scope.faith = {
change_fervor = {
value = 5
desc = fervor_gain_suzerain_missionaries
}
}
}
scripted_effect tribute_mission_1000_give_legitimacy_effect = {
scope:tributary_scope = {
add_legitimacy_effect = { LEGITIMACY = tribute_generic_legitimacy_reward_value }
}
}
scripted_effect tribute_mission_1000_rejection_effect = {
scope:tributary_scope = {
add_legitimacy = {
value = tribute_legitimacy_reward_value
multiply = -1
}
add_opinion = {
target = scope:overlord_scope
modifier = annoyed_opinion
opinion = -50
}
}
}
scripted_effect tribute_mission_1000_generic_reward_effect = {
scope:tributary_scope = {
if = {
limit = { is_ai = yes }
add_opinion = {
modifier = pleased_opinion
opinion = 40
target = scope:overlord_scope
}
}
if = {
limit = { exists = scope:tribute_reward_type_legitimacy }
tribute_mission_1000_give_legitimacy_effect = yes
}
else = {
add_legitimacy_effect = { LEGITIMACY = tribute_legitimacy_reward_value }
}
#Disburse the Bunga Mas modifier!
if = {
limit = { var:tribute_mission_type ?= flag:bunga_mas_tribute }
add_character_modifier = {
modifier = bunga_mas_tribute_modifier
years = 10
}
}
}
}
#Actually disburse the reward
scripted_effect tribute_mission_1000_disburse_reward_effect = {
if = {
limit = {
exists = scope:tribute_reward_type_treasury
scope:decided_on_treasury_reward = flag:yes
}
tribute_mission_1000_give_treasury_effect = yes
}
if = {
limit = { exists = scope:tribute_reward_type_artifact }
tribute_mission_1000_give_artifact_effect = yes
}
if = {
limit = { exists = scope:tribute_reward_type_innovation }
tribute_mission_1000_give_innovation_progress_effect = yes
}
if = {
limit = { exists = scope:tribute_reward_type_development }
tribute_mission_1000_give_development_effect = yes
}
if = {
limit = { exists = scope:tribute_reward_type_monk }
tribute_mission_1000_give_monk_effect = yes
}
#Generic Legitimacy is baked into the tribute_mission_1000_generic_reward_effect
scope:tributary_scope = {
if = { # if the contract uses Subject Standing, grant some
limit = { subject_standing >= 0 }
hidden_effect = {
send_interface_toast = {
type = event_toast_effect_good
title = tribute_mission_tributary_subject_standing_gain_title
left_icon = this
right_icon = scope:overlord_scope
# add minimum 5, maximum 30, average 10 (if unsuccessful) or 17.5 (if successful)
add_subject_standing = {
value = 10
if = {
limit = { exists = scope:successful_influence }
add = {
integer_range = {
min = 0
max = 15
}
}
}
add = {
integer_range = {
min = -5
max = 5
}
}
}
}
}
if = {
limit = { exists = scope:successful_influence }
custom_tooltip = tribute_mission_tributary_subject_standing_gain_tt_major
}
else = {
custom_tooltip = tribute_mission_tributary_subject_standing_gain_tt_minor
}
}
}
tribute_mission_1000_generic_reward_effect = yes
}
### INFLUENCE ###
#Influence duel
scripted_effect tribute_mission_1000_determine_duel_skill_effect = {
random_list = {
10 = {
trigger = {
scope:tributary_scope = { highest_skill = diplomacy }
}
tribute_mission_1000_duel_effect = {
INFLUENCED_REWARD = $INFLUENCED_REWARD$
REWARD_INCREMENT = $REWARD_INCREMENT$
SKILL = diplomacy
}
}
10 = {
trigger = {
scope:tributary_scope = { highest_skill = martial }
}
tribute_mission_1000_duel_effect = {
INFLUENCED_REWARD = $INFLUENCED_REWARD$
REWARD_INCREMENT = $REWARD_INCREMENT$
SKILL = martial
}
}
10 = {
trigger = {
scope:tributary_scope = { highest_skill = stewardship }
}
tribute_mission_1000_duel_effect = {
INFLUENCED_REWARD = $INFLUENCED_REWARD$
REWARD_INCREMENT = $REWARD_INCREMENT$
SKILL = stewardship
}
}
10 = {
trigger = {
scope:tributary_scope = { highest_skill = intrigue }
}
tribute_mission_1000_duel_effect = {
INFLUENCED_REWARD = $INFLUENCED_REWARD$
REWARD_INCREMENT = $REWARD_INCREMENT$
SKILL = intrigue
}
}
10 = {
trigger = {
scope:tributary_scope = { highest_skill = learning }
}
tribute_mission_1000_duel_effect = {
INFLUENCED_REWARD = $INFLUENCED_REWARD$
REWARD_INCREMENT = $REWARD_INCREMENT$
SKILL = learning
}
}
}
}
#Actual duel
scripted_effect tribute_mission_1000_duel_effect = {
duel = {
skill = $SKILL$
target = scope:receiving_character
#You convince them
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
}
modifier = {
culture = { has_cultural_parameter = more_successful_kowtows }
add = 25
}
desc = tribute_mission.1000.success.desc
send_interface_toast = {
type = event_toast_effect_good
title = tribute_mission.1000.success.t
left_icon = scope:tributary_scope
right_icon = scope:receiving_character
#Woo!
save_scope_value_as = {
name = successful_influence
value = flag:$INFLUENCED_REWARD$
}
if = {
limit = { $REWARD_INCREMENT$ = 0 }
show_as_tooltip = { tribute_mission_1000_give_treasury_effect = yes }
}
if = {
limit = { $REWARD_INCREMENT$ = 1 }
custom_tooltip = tribute_mission.1000.artifact.tt
}
if = {
limit = { $REWARD_INCREMENT$ = 2 }
custom_tooltip = tribute_mission.1000.innovation.tt
}
if = {
limit = { $REWARD_INCREMENT$ = 3 }
show_as_tooltip = { tribute_mission_1000_give_development_effect = yes }
}
}
}
#Hmm no
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
}
desc = tribute_mission.1000.failure.desc
send_interface_toast = {
type = event_toast_effect_bad
title = tribute_mission.1000.failure.t
left_icon = scope:tributary_scope
right_icon = scope:receiving_character
custom_tooltip = tribute_mission.1000.failure.tt
#Ayy
stress_impact = { base = miniscule_stress_impact_gain }
}
}
}
}
#Tributary: Fork over Tribute
tribute_mission.1000 = {
type = character_event
title = tribute_mission.1000.t
desc = {
desc = tribute_mission.1000.intro
#Who is greeting us?
first_valid = {
triggered_desc = {
trigger = { scope:overlord_scope = scope:receiving_character }
desc = tribute_mission.1000.intro.overlord
}
triggered_desc = {
trigger = { scope:overlord_scope.diarch ?= scope:receiving_character }
desc = tribute_mission.1000.intro.diarch
}
triggered_desc = {
trigger = {
OR = {
scope:overlord_scope.cp:councillor_steward ?= scope:receiving_character
scope:overlord_scope.cp:councillor_chancellor ?= scope:receiving_character
scope:overlord_scope.cp:councillor_spymaster ?= scope:receiving_character
scope:overlord_scope.cp:councillor_court_chaplain ?= scope:receiving_character
scope:overlord_scope.cp:councillor_marshal ?= scope:receiving_character
}
}
desc = tribute_mission.1000.intro.councillor
}
desc = tribute_mission.1000.intro.attendant
}
desc = tribute_mission.1000.desc.segway
#What did we bring?
first_valid = {
triggered_desc = {
trigger = { var:tribute_mission_type ?= flag:bunga_mas_tribute }
desc = tribute_mission.1000.desc.bunga_mas
}
triggered_desc = {
trigger = { var:tribute_mission_type ?= flag:small_gold_tribute }
desc = tribute_mission.1000.desc.small_gold
}
triggered_desc = {
trigger = { var:tribute_mission_type ?= flag:adequate_gold_tribute }
desc = tribute_mission.1000.desc.adequate_gold
}
triggered_desc = {
trigger = { var:tribute_mission_type ?= flag:excessive_gold_tribute }
desc = tribute_mission.1000.desc.excessive_gold
}
triggered_desc = {
trigger = { var:tribute_mission_type ?= flag:small_herd_tribute }
desc = tribute_mission.1000.desc.small_herd
}
triggered_desc = {
trigger = { var:tribute_mission_type ?= flag:adequate_herd_tribute }
desc = tribute_mission.1000.desc.adequate_herd
}
triggered_desc = {
trigger = { var:tribute_mission_type ?= flag:excessive_herd_tribute }
desc = tribute_mission.1000.desc.excessive_herd
}
triggered_desc = {
trigger = { exists = scope:concubine_character }
desc = tribute_mission.1000.desc.concubine
}
triggered_desc = {
trigger = { exists = scope:eunuch_character }
desc = tribute_mission.1000.desc.eunuch
}
triggered_desc = {
trigger = { exists = scope:artifact_to_tribute }
desc = tribute_mission.1000.desc.artifact
}
}
first_valid = {
triggered_desc = {
trigger = {
scope:receiving_character = { has_character_flag = created_attendant }
}
desc = tribute_mission.1000.outro.attendant
}
desc = tribute_mission.1000.outro
}
}
theme = tributary
left_portrait = {
character = root
animation = personality_rational
}
right_portrait = {
character = scope:receiving_character
triggered_animation = {
trigger = {
scope:tributary_scope = { var:tribute_mission_type ?= flag:bunga_mas_tribute }
}
animation = shock
}
animation = personality_honorable
}
lower_center_portrait = {
character = scope:human_tribute
trigger = { exists = scope:human_tribute }
}
#Artifact Tribute
artifact = {
trigger = { exists = scope:artifact_to_tribute }
target = scope:artifact_to_tribute
position = lower_left_portrait
}
immediate = {
tribute_mission_1000_common_arrival_effect = yes
#For the tooltip
if = {
limit = { tribute_mission_1000_can_give_treasury_trigger = yes }
tribute_mission_1000_set_treasury_reward_effect = yes
}
if = {
limit = {
scope:overlord_scope.culture = {
any_known_innovation = { tribute_mission_1000_eligible_innovation_trigger = yes }
}
}
scope:overlord_scope.culture = {
random_known_innovation = {
limit = { tribute_mission_1000_eligible_innovation_trigger = yes }
save_scope_as = saved_innovation
}
}
}
else = {
save_scope_as = grant_fascination
}
#What level of Bunga Mas modifier?
tribute_mission_1000_determine_bunga_mas_scale_effect = yes
}
#China: Duel for Treasury
option = {
name = tribute_mission.1000.treasury
trigger = {
scope:receiving_character = { is_ai = yes }
tribute_mission_1000_can_give_treasury_trigger = yes
}
tribute_mission_1000_determine_duel_skill_effect = { INFLUENCED_REWARD = treasury REWARD_INCREMENT = 0 }
ai_chance = { base = 100 }
}
#Duel for Artifact
option = {
name = tribute_mission.1000.artifact
trigger = {
scope:receiving_character = { is_ai = yes }
tribute_mission_1000_can_set_artifact_reward_trigger = yes
}
tribute_mission_1000_determine_duel_skill_effect = { INFLUENCED_REWARD = artifact REWARD_INCREMENT = 1 }
ai_chance = { base = 150 }
}
#Duel for Innovation
option = {
name = tribute_mission.1000.innovation
trigger = {
scope:receiving_character = { is_ai = yes }
tribute_mission_1000_can_set_innovation_reward_trigger = yes
}
tribute_mission_1000_determine_duel_skill_effect = { INFLUENCED_REWARD = innovation REWARD_INCREMENT = 2 }
ai_chance = { base = 200 }
}
#Duel for Development
option = {
name = tribute_mission.1000.development
trigger = {
scope:receiving_character = { is_ai = yes }
tribute_mission_1000_eligible_development_trigger = yes
}
tribute_mission_1000_determine_duel_skill_effect = { INFLUENCED_REWARD = development REWARD_INCREMENT = 3 }
ai_chance = { base = 100 }
}
#I'm sure it'll be fine
option = {
name = tribute_mission.1000.abstain
tribute_mission_1000_display_potential_rewards_effect = yes
ai_chance = {
base = 100
modifier = {
has_trait = arbitrary
add = 200
}
}
}
after = {
#Non-AI Receiving person: Decide on if you want to accept the human tribute
if = {
limit = {
OR = {
exists = scope:concubine_character
exists = scope:eunuch_character
}
AND = {
#If the overlord is an AI, they've already said yay/nay
scope:overlord_scope = { is_ai = no }
#... so if we're a player diarch of a player ruler, you get to decide
scope:receiving_character = { is_ai = no }
}
}
show_as_tooltip = { tribute_mission_1000_fork_over_with_notification_effect = yes }
scope:receiving_character = { trigger_event = tribute_mission.1002 }
}
#Or the Non-AI Receiving person / Hegemon gets to decide the reward
else_if = {
limit = {
scope:receiving_character = {
OR = {
is_ai = no
scope:overlord_scope = { highest_held_title_tier = tier_hegemony }
}
}
}
show_as_tooltip = { tribute_mission_1000_fork_over_with_notification_effect = yes }
scope:receiving_character = { trigger_event = tribute_mission.1005 }
}
#Or if the Receiving person is AI then we we skip the event and just generate the reward
else = {
tribute_mission_1000_fork_over_with_notification_effect = yes
scope:overlord_scope = { tribute_mission_1000_generate_reward_effect = yes }
scope:tributary_scope = { trigger_event = tribute_mission.1010 }
}
}
}
#What's their personality like?
scripted_trigger 1002_human_tribute_shy_personality_trigger = {
has_trait = shy
}
scripted_trigger 1002_human_tribute_bold_personality_trigger = {
OR = {
has_trait = brave
has_trait = gregarious
}
}
scripted_trigger 1002_human_tribute_callous_personality_trigger = {
OR = {
has_trait = cynical
has_trait = callous
}
}
scripted_trigger 1002_human_tribute_angry_personality_trigger = {
OR = {
has_trait = wrathful
has_trait = irritable
has_trait = arrogant
}
}
#Recipient: Decide on the human tribute
tribute_mission.1002 = {
type = character_event
title = tribute_mission.1002.t
desc = {
desc = tribute_mission.1002.segway
first_valid = {
triggered_desc = {
trigger = { exists = scope:concubine_character }
desc = tribute_mission.1002.desc.concubine
}
triggered_desc = {
trigger = {
scope:eunuch_character ?= { has_character_flag = tribute_mission_recently_castrated }
}
desc = tribute_mission.1002.desc.new_eunuch
}
triggered_desc = {
trigger = { exists = scope:eunuch_character }
desc = tribute_mission.1002.desc.eunuch
}
}
#Some descriptive exterior words
first_valid = {
#Beauty
triggered_desc = {
trigger = {
exists = scope:concubine_character
scope:human_tribute = {
OR = {
has_trait = beauty_good_1
has_trait = beauty_good_2
has_trait = beauty_good_3
}
}
}
desc = tribute_mission.1002.beauty.concubine.good
}
#Bad Beauty
triggered_desc = {
trigger = {
exists = scope:concubine_character
scope:human_tribute = {
OR = {
has_trait = beauty_bad_1
has_trait = beauty_bad_2
has_trait = beauty_bad_3
}
}
}
desc = tribute_mission.1002.beauty.concubine.bad
}
#Physique
triggered_desc = {
trigger = {
exists = scope:concubine_character
scope:human_tribute = {
OR = {
has_trait = physique_good_1
has_trait = physique_good_2
has_trait = physique_good_3
}
}
}
desc = tribute_mission.1002.physique.concubine.good
}
#Bad Physique
triggered_desc = {
trigger = {
exists = scope:concubine_character
scope:human_tribute = {
OR = {
has_trait = physique_bad_1
has_trait = physique_bad_2
has_trait = physique_bad_3
}
}
}
desc = tribute_mission.1002.physique.concubine.bad
}
#Fallback
triggered_desc = {
trigger = { exists = scope:concubine_character }
desc = tribute_mission.1002.exterior.plain
}
}
#Some descriptive personality words
first_valid = {
#Shy
triggered_desc = {
trigger = {
scope:human_tribute = { 1002_human_tribute_shy_personality_trigger = yes }
}
desc = tribute_mission.1002.personality.shy
}
#Bold
triggered_desc = {
trigger = {
scope:human_tribute = { 1002_human_tribute_bold_personality_trigger = yes }
}
desc = tribute_mission.1002.personality.bold
}
#Cynical
triggered_desc = {
trigger = {
scope:human_tribute = { 1002_human_tribute_callous_personality_trigger = yes }
}
desc = tribute_mission.1002.personality.cynical
}
#Angry
triggered_desc = {
trigger = {
scope:human_tribute = { 1002_human_tribute_angry_personality_trigger = yes }
}
desc = tribute_mission.1002.personality.angry
}
#Fallback
desc = tribute_mission.1002.personality.fallback
}
}
theme = tributary
left_portrait = {
character = scope:receiving_character
animation = interested
}
right_portrait = {
character = scope:human_tribute
triggered_animation = {
trigger = { has_character_flag = tribute_mission_recently_castrated }
animation = severelywounded
}
triggered_animation = {
trigger = { 1002_human_tribute_shy_personality_trigger = yes }
animation = shame
}
triggered_animation = {
trigger = { 1002_human_tribute_bold_personality_trigger = yes }
animation = personality_bold
}
triggered_animation = {
trigger = { 1002_human_tribute_callous_personality_trigger = yes }
animation = personality_cynical
}
triggered_animation = {
trigger = { 1002_human_tribute_angry_personality_trigger = yes }
animation = disapproval
}
animation = personality_honorable
}
lower_right_portrait = {
character = scope:tributary_scope
}
immediate = {
tribute_mission_1000_fork_over_with_notification_effect = yes
}
#Add 'em to court
option = {
name = tribute_mission.1002.a
if = {
limit = { exists = scope:concubine_character }
tribute_mission_1000_make_courtier_effect = { HUMAN_TRIB = scope:concubine_character }
}
else = {
tribute_mission_1000_make_courtier_effect = { HUMAN_TRIB = scope:eunuch_character }
}
ai_chance = { base = 100 }
}
#Make 'em your concubine
option = {
name = tribute_mission.1002.b
trigger = {
exists = scope:concubine_character
scope:overlord_scope = scope:receiving_character
tribute_mission_1000_overlord_can_employ_concubine_trigger = yes
}
flavor = tribute_mission.1002.b.flavor
tribute_mission_1000_make_concubine_effect = yes
save_scope_value_as = {
name = appointed_concubine
value = flag:yes
}
ai_chance = {
base = 100
modifier = {
add = {
value = 50
multiply = scope:concubine_character.num_of_good_genetic_traits
}
scope:concubine_character = {
num_of_good_genetic_traits > 0
trigger_if = {
limit = {
is_female = yes
}
is_aging_character = no
}
}
}
modifier = {
add = 50
scope:concubine_character = {
is_lowborn = no
trigger_if = {
limit = {
is_female = yes
}
is_aging_character = no
}
}
}
modifier = {
add = {
value = -50
multiply = scope:concubine_character.num_of_bad_genetic_traits
}
scope:concubine_character = {
num_of_bad_genetic_traits > 0
trigger_if = {
limit = {
is_female = yes
}
is_aging_character = no
}
}
}
modifier = {
add = {
value = -50
}
scope:concubine_character = {
is_lowborn = yes
num_of_good_genetic_traits = 0
trigger_if = {
limit = {
is_female = yes
}
is_aging_character = no
}
}
}
opinion_modifier = { # Opinion of you
who = scope:overlord_scope
opinion_target = scope:tributary_scope
multiplier = 1.0
desc = AI_OPINION_REASON
}
opinion_modifier = { # Opinion of concubine
who = scope:overlord_scope
opinion_target = scope:concubine_character
multiplier = 0.25
desc = AI_OPINION_REASON
}
compare_modifier = { # Recipient is reluctant to marry old women (procreation is a key factor)
trigger = {
scope:concubine_character = {
is_young_character = no
is_female = yes
}
}
target = scope:concubine_character
value = age
multiplier = -5
step = 1
offset = -29
}
modifier = {
add = 50
scope:overlord_scope = {
is_attracted_to_gender_of = scope:concubine_character
}
}
#More/Less likely based on difference in rank between tributary_scope and overlord_scope
modifier = {
add = 50
scope:tributary_scope = {
tier_difference = {
target = scope:overlord_scope
value > 1
}
}
}
modifier = {
add = -20
scope:tributary_scope = {
tier_difference = {
target = scope:overlord_scope
value < 1
}
}
}
}
}
#Appoint 'em head Eunuch
option = {
name = tribute_mission.1002.c
trigger = {
exists = scope:eunuch_character
scope:overlord_scope = scope:receiving_character
can_employ_court_position_type = chief_eunuch_court_position
}
#Make 'em courtier
tribute_mission_1000_make_courtier_effect = { HUMAN_TRIB = scope:eunuch_character }
#Gain obligation hook
custom_tooltip = obligation_hook_tt
add_hook = {
type = obligation_hook
target = scope:eunuch_character
}
#Replace current Chief Eunuch
if = {
limit = {
employs_court_position = chief_eunuch_court_position
}
every_court_position_holder = {
type = chief_eunuch_court_position
save_temporary_scope_as = current_chief_eunuch
}
replace_court_position = {
recipient = scope:eunuch_character
holder = scope:current_chief_eunuch
court_position = chief_eunuch_court_position
}
}
#Or simply appoint new Eunuch
else = {
appoint_court_position = {
recipient = scope:eunuch_character
court_position = chief_eunuch_court_position
}
}
save_scope_value_as = {
name = appointed_eunuch
value = flag:yes
}
ai_chance = {
base = 100
opinion_modifier = {
who = scope:overlord_scope
opinion_target = scope:tributary_scope
multiplier = 0.5
}
opinion_modifier = {
who = scope:overlord_scope
opinion_target = scope:eunuch_character
multiplier = 0.5
}
modifier = {
add = {
value = 50
subtract = scope:eunuch_character.age
}
}
modifier = {
add = {
add = scope:eunuch_character.diplomacy
add = scope:eunuch_character.intrigue
add = scope:eunuch_character.stewardship
add = scope:eunuch_character.martial
add = scope:eunuch_character.learning
}
}
modifier = {
scope:eunuch_character = { has_trait = beardless_eunuch }
add = 25
}
}
}
#Um... nah
option = {
name = tribute_mission.1002.d
custom_tooltip = tribute_mission.1002.d.tt
if = {
limit = { exists = scope:concubine_character }
save_scope_value_as = {
name = rejected_concubine
value = flag:yes
}
}
else = {
save_scope_value_as = {
name = rejected_eunuch
value = flag:yes
}
}
ai_chance = {
base = 10
modifier = {
has_trait = paranoid
add = 1000
}
}
}
after = {
#Moving on
trigger_event = tribute_mission.1005
}
}
#Recipient: What do you give?
tribute_mission.1005 = {
type = character_event
title = {
first_valid = {
triggered_desc = { # Bunga Mas
trigger = { exists = scope:newly_created_bunga_mas }
desc = tribute_mission.1005.t.ai.bunga_mas
}
triggered_desc = { # Bunga Mas
trigger = { tribute_mission_1000_bunga_mas_tributary_trigger = yes }
desc = tribute_mission.1005.t.bunga_mas
}
triggered_desc = { # Gold
trigger = { tribute_mission_1000_gold_tributary_trigger = yes }
desc = tribute_mission.1005.t.gold
}
triggered_desc = { # Herd
trigger = { tribute_mission_1000_herd_tributary_trigger = yes }
desc = tribute_mission.1005.t.herd
}
triggered_desc = { # Concubine
trigger = { tribute_mission_1000_concubine_tributary_trigger = yes }
desc = tribute_mission.1005.t.concubine
}
triggered_desc = { # Eunuch
trigger = { tribute_mission_1000_eunuch_tributary_trigger = yes }
desc = tribute_mission.1005.t.eunuch
}
triggered_desc = { # Artifact
trigger = { tribute_mission_1000_artifact_tributary_trigger = yes }
desc = tribute_mission.1005.t.artifact
}
desc = tribute_mission.1005.t
}
}
desc = {
first_valid = {
triggered_desc = {
trigger = {
OR = {
exists = scope:concubine_character
exists = scope:eunuch_character
}
}
desc = tribute_mission.1005.intro.human_tribute
}
desc = tribute_mission.1005.intro
}
first_valid = {
triggered_desc = {
trigger = {
OR = {
exists = scope:newly_created_bunga_mas
tribute_mission_1000_bunga_mas_tributary_trigger = yes
}
}
desc = tribute_mission.1005.desc.bunga_mas
}
triggered_desc = {
trigger = { scope:tributary_scope.var:tribute_mission_type ?= flag:small_gold_tribute }
desc = tribute_mission.1005.desc.small_gold
}
triggered_desc = {
trigger = { scope:tributary_scope.var:tribute_mission_type ?= flag:adequate_gold_tribute }
desc = tribute_mission.1005.desc.adequate_gold
}
triggered_desc = {
trigger = { scope:tributary_scope.var:tribute_mission_type ?= flag:excessive_gold_tribute }
desc = tribute_mission.1005.desc.excessive_gold
}
triggered_desc = {
trigger = { scope:tributary_scope.var:tribute_mission_type ?= flag:small_herd_tribute }
desc = tribute_mission.1005.desc.small_herd
}
triggered_desc = {
trigger = { scope:tributary_scope.var:tribute_mission_type ?= flag:adequate_herd_tribute }
desc = tribute_mission.1005.desc.adequate_herd
}
triggered_desc = {
trigger = { scope:tributary_scope.var:tribute_mission_type ?= flag:excessive_herd_tribute }
desc = tribute_mission.1005.desc.excessive_herd
}
triggered_desc = {
trigger = { exists = scope:rejected_concubine }
desc = tribute_mission.1005.desc.rejected_concubine
}
triggered_desc = {
trigger = { exists = scope:appointed_concubine }
desc = tribute_mission.1005.desc.appointed_concubine
}
triggered_desc = {
trigger = { exists = scope:concubine_character }
desc = tribute_mission.1005.desc.concubine
}
triggered_desc = {
trigger = { exists = scope:rejected_eunuch }
desc = tribute_mission.1005.desc.rejected_eunuch
}
triggered_desc = {
trigger = { exists = scope:appointed_eunuch }
desc = tribute_mission.1005.desc.appointed_eunuch
}
triggered_desc = {
trigger = { exists = scope:eunuch_character }
desc = tribute_mission.1005.desc.eunuch
}
triggered_desc = {
trigger = { exists = scope:artifact_to_tribute }
desc = tribute_mission.1005.desc.artifact
}
#Fallback
desc = tribute_mission.1005.desc
}
}
theme = tributary
left_portrait = {
character = root
triggered_animation = {
trigger = { exists = scope:newly_created_bunga_mas }
animation = disbelief
}
animation = personality_rational
}
right_portrait = {
character = scope:tributary_scope
triggered_animation = {
trigger = { exists = scope:newly_created_bunga_mas }
animation = admiration
}
animation = personality_honorable
}
#Human Tribute
lower_center_portrait = {
trigger = { exists = scope:human_tribute }
character = scope:human_tribute
}
#Artifact Tribute
artifact = {
trigger = { exists = scope:artifact_to_tribute }
target = scope:artifact_to_tribute
position = lower_left_portrait
}
#Bunga Mas
artifact = {
trigger = { exists = scope:newly_created_bunga_mas }
target = scope:newly_created_bunga_mas
position = lower_right_portrait
}
immediate = {
#For the tooltip
if = {
limit = {
scope:overlord_scope.culture = {
any_known_innovation = { tribute_mission_1000_eligible_innovation_trigger = yes }
}
}
scope:overlord_scope.culture = {
random_known_innovation = {
limit = { tribute_mission_1000_eligible_innovation_trigger = yes }
save_scope_as = saved_innovation
}
}
}
else = {
save_scope_as = grant_fascination
}
#Ful-fix
save_scope_value_as = {
name = decided_on_treasury_reward
value = flag:no
}
}
#China: Treasury / Trade Goods
option = {
name = tribute_mission.1005.treasury
trigger = { tribute_mission_1000_can_give_treasury_trigger = yes }
show_as_tooltip = { tribute_mission_1000_give_treasury_effect = yes }
#Default is set in the immediate
save_scope_value_as = {
name = decided_on_treasury_reward
value = flag:yes
}
ai_chance = {
base = 0
# If we were not influenced, just add a base chance
modifier = {
NOT = { exists = scope:successful_influence }
add = 20
}
# Always choose this option if we were successfully influenced
modifier = {
scope:successful_influence ?= flag:treasury
add = 1000
}
}
}
#Artifact
option = {
name = tribute_mission.1005.artifact
trigger = { tribute_mission_1000_can_set_artifact_reward_trigger = yes }
#Inform the player what will happen (since the artifact doesn't exist yet)
custom_tooltip = tribute_mission.1005.artifact.tt
tribute_mission_1000_set_artifact_reward_effect = yes
ai_chance = {
base = 0
# If we were not influenced, just add a base chance
modifier = {
NOT = { exists = scope:successful_influence }
add = 20
}
# Always choose this option if we were successfully influenced
modifier = {
scope:successful_influence ?= flag:artifact
add = 1000
}
}
}
#Innovation
option = {
name = tribute_mission.1005.innovation
trigger = { tribute_mission_1000_can_set_innovation_reward_trigger = yes }
tribute_mission_1000_set_innovation_reward_effect = yes
#Display the effects
show_as_tooltip = {
if = {
limit = { exists = scope:saved_innovation }
scope:tributary_scope.culture = {
add_innovation_progress = {
value = tribute_reward_innovation_progress_value
target = scope:saved_innovation
}
}
}
if = {
limit = { exists = scope:grant_fascination }
scope:tributary_scope.culture = {
add_fascination_progress = tribute_reward_fascination_progress_value
}
}
}
ai_chance = {
base = 0
# If we were not influenced, just add a base chance
modifier = {
NOT = { exists = scope:successful_influence }
add = 20
}
# Always choose this option if we were successfully influenced
modifier = {
scope:successful_influence ?= flag:innovation
add = 1000
}
}
}
#Development
option = {
name = tribute_mission.1005.development
trigger = { tribute_mission_1000_eligible_development_trigger = yes }
show_as_tooltip = { tribute_mission_1000_give_development_effect = yes }
tribute_mission_1000_set_development_reward_effect = yes
ai_chance = {
base = 0
# If we were not influenced, just add a base chance
modifier = {
NOT = { exists = scope:successful_influence }
add = 20
}
# Always choose this option if we were successfully influenced
modifier = {
scope:successful_influence ?= flag:development
add = 1000
}
}
}
#Monk
option = {
name = tribute_mission.1005.monk
trigger = { tribute_mission_1000_eligible_for_monk_trigger = yes }
show_as_tooltip = { tribute_mission_1000_give_monk_effect = yes }
tribute_mission_1000_set_monk_reward_effect = yes
ai_chance = {
base = 0
# If we were not influenced, just add a base chance
modifier = {
NOT = { exists = scope:successful_influence }
add = 100
}
}
}
#Generic Legitimacy
option = {
name = tribute_mission.1005.legitimacy
show_as_tooltip = { tribute_mission_1000_give_legitimacy_effect = yes }
tribute_mission_1000_set_legitimacy_reward_effect = yes
ai_chance = {
base = 100
}
}
#Rejection
option = {
name = imperial_examination.7100.b.singular #I refuse to accept mediocrity not a tributary we can reject them.
trigger = {
NOT = { government_has_flag = government_is_mandala }
}
show_as_tooltip = { tribute_mission_1000_rejection_effect = yes }
scope:tributary_scope = { set_variable = new_overlord_unable_to_accept_tribute }
save_scope_value_as = {
name = tribute_reward_type_rejection
value = flag:yes
}
ai_chance = {
base = 0
}
}
after = {
if = {
limit = {
scope:tributary_scope = { has_variable = new_overlord_unable_to_accept_tribute }
}
scope:tributary_scope = { trigger_event = tribute_mission.9800 }
}
else = {
tribute_mission_1000_fork_over_with_notification_effect = yes
show_as_tooltip = { tribute_mission_1000_common_arrival_effect = yes }
if = {
limit = {
scope:tributary_scope = {
subject_standing > seal_of_investiture_minimum_subject_standing
NOT = {
any_character_artifact = {
OR = {
artifact_type = seal_of_investiture
artifact_type = seal_of_investiture_court
}
}
}
}
scope:overlord_scope = {
primary_title = title:h_china
this = scope:receiving_character
}
}
trigger_event = tribute_mission.1006
}
else_if = {
limit = { scope:tributary_scope = { is_tributary = no } }
scope:tributary_scope = {
if = {
limit = {
scope:overlord_scope = { has_royal_court = yes }
scope:overlord_scope = scope:receiving_character
}
trigger_event = tribute_mission.3008
}
else = { trigger_event = tribute_mission.1008 }
}
}
else = {
scope:tributary_scope = {
if = {
limit = {
scope:overlord_scope = { has_royal_court = yes }
scope:overlord_scope = scope:receiving_character
}
trigger_event = tribute_mission.3010
}
else = { trigger_event = tribute_mission.1010 }
}
}
}
}
}
scripted_trigger tribute_mission_1006_eligible_scribe_trigger = {
is_physically_able_ai_adult = yes
OR = {
#Someone new?
AND = {
has_no_particular_noble_roots_trigger = yes
learning > 10
culture = scope:overlord_scope.culture
}
#A previous scribe
has_variable = tribute_mission_1006_scribe
}
}
scripted_effect tribute_mission_1006_eligible_scribe_scope_effect = {
scope:overlord_scope = {
# Try to grab someone from a suitable court position first
random_courtier = {
limit = { has_court_position = court_artificer_court_position }
save_scope_as = scribe_character
set_variable = tribute_mission_1006_scribe
}
if = {
limit = { NOT = { exists = scope:scribe_character } }
court_position:chronicler_court_position ?= {
save_scope_as = scribe_character
set_variable = tribute_mission_1006_scribe
}
}
if = {
limit = { NOT = { exists = scope:scribe_character } }
court_position:antiquarian_court_position ?= {
save_scope_as = scribe_character
set_variable = tribute_mission_1006_scribe
}
}
# If we can't find an official scribe, try to find one in the crowd
if = {
limit = { NOT = { exists = scope:scribe_character } }
random_courtier = {
limit = { tribute_mission_1006_eligible_scribe_trigger = yes }
save_scope_as = scribe_character
set_variable = tribute_mission_1006_scribe
}
}
# Or in the city
if = {
limit = { NOT = { exists = scope:scribe_character } }
random_pool_character = {
province = scope:overlord_scope.capital_province
limit = { tribute_mission_1006_eligible_scribe_trigger = yes }
save_scope_as = scribe_character
set_variable = tribute_mission_1006_scribe
}
}
# If all else fails, make one
if = {
limit = { NOT = { exists = scope:scribe_character } }
create_character = {
template = random_learned_eunuch_character
location = scope:overlord_scope.capital_province
culture = scope:overlord_scope.capital_province.culture
faith = scope:overlord_scope.capital_province.faith
dynasty = none
save_scope_as = scribe_character
after_creation = { set_variable = tribute_mission_1006_scribe }
}
}
}
if = {
limit = { NOT = { exists = scope:scribe_character } }
error_log = "Failed to create a valid scribe in tribute_mission_1006_eligible_scribe_scope_effect!"
}
}
#Overlord: Decide whether to grant a Seal of Investiture or not
tribute_mission.1006 = {
type = character_event
title = tribute_mission.1006.t
desc = tribute_mission.1006.desc
theme = tributary
override_sound = { reference = "event:/SFX/Events/Themes/sfx_event_theme_type_duty" }
immediate = {
tribute_mission_1006_eligible_scribe_scope_effect = yes
}
left_portrait = {
character = root
animation = personality_honorable
}
right_portrait = {
character = scope:tributary_scope
animation = personality_rational
}
#Grant the Seal
option = {
name = tribute_mission.1006.grant
trigger = {
trigger_if = {
limit = {
scope:receiving_character = {
is_ai = yes
}
}
treasury > tribute_seal_of_investiture_cost
}
trigger_else = {
always = yes #Humans can always get one
}
}
show_as_unavailable = { always = yes }
custom_tooltip = {
text = tribute_mission.1006.grant.tt
create_artifact_imperial_seal_effect = {
OWNER = scope:receiving_character
SMITH = scope:scribe_character
}
}
remove_treasury = tribute_seal_of_investiture_cost
add_legitimacy = 50
scope:tributary_scope = {
if = {
limit = {
scope:overlord_scope = { has_royal_court = yes }
}
trigger_event = tribute_mission.3007
}
else = { trigger_event = tribute_mission.1007 }
}
# do not change from making this only the scripted value; add additions to the value itself if needed
ai_will_select = scope:tributary_scope.tribute_mission_seal_of_investiture_ai_will_select
}
#Decline to grant the Seal
option = {
name = {
text = {
first_valid = {
triggered_desc = {
trigger = { treasury < tribute_seal_of_investiture_cost }
desc = tribute_mission.1006.decline.no_money
}
desc = tribute_mission.1006.decline.dont_wanna
}
}
}
add_legitimacy = -50
reverse_add_opinion = {
target = scope:tributary_scope
modifier = refused_seal_of_investiture_opinion
opinion = -50
}
scope:tributary_scope = {
if = {
limit = {
scope:overlord_scope = { has_royal_court = yes }
}
trigger_event = tribute_mission.3010
}
else = { trigger_event = tribute_mission.1010 }
}
# do not change from making this only the scripted value; add additions to the value itself if needed
ai_will_select = scope:tributary_scope.tribute_mission_no_seal_of_investiture_ai_will_select
}
}
### IS THIS ACTUALLY USED? (Hegemons that receive Tributary scopes should always have Royal Courts)
#Tributary: Receive the Seal of Investiture
tribute_mission.1007 = {
type = character_event
title = tribute_mission.1007.t
desc = tribute_mission.1007.desc
theme = tributary
override_sound = { reference = "event:/SFX/Events/Themes/sfx_event_theme_type_duty" }
left_portrait = {
character = root
animation = personality_rational
}
artifact = {
trigger = { exists = scope:tribute_reward_type_artifact }
target = scope:seal_of_investiture_scope
position = lower_center_portrait
}
right_portrait = {
character = scope:receiving_character
animation = personality_honorable
}
#Grant the Seal
option = {
name = tribute_mission.1007.a
scope:seal_of_investiture_scope = {
set_owner = scope:tributary_scope
}
}
after = {
scope:tributary_scope = {
if = {
limit = {
scope:overlord_scope = { has_royal_court = yes }
}
trigger_event = tribute_mission.3010
}
else = { trigger_event = tribute_mission.1010 }
}
}
}
### ARE THESE ACTUALLY USED? (Hegemons that receive Tributary scopes should always have Royal Courts)
#Tributary: Decide whether to become a Tributary or not
tribute_mission.1008 = {
type = character_event
title = tribute_mission.1008.t
desc = tribute_mission.1008.desc
theme = tributary
override_sound = { reference = "event:/SFX/Events/Themes/sfx_event_theme_type_duty" }
left_portrait = {
character = root
animation = personality_rational
}
right_portrait = {
character = scope:receiving_character
animation = personality_honorable
}
#Become a Tributary
option = {
name = tribute_mission.1008.a
start_tributary_interaction_effect = {
TRIBUTARY = scope:tributary_scope
SUZERAIN = scope:overlord_scope
}
scope:overlord_scope = {
send_interface_message = {
type = event_tribute_good_text
title = tribute_mission.new_tributary.title
left_icon = scope:tributary_scope
desc = tribute_mission.new_tributary.desc
}
}
}
#No thanks
option = {
name = tribute_mission.1008.b
}
after = {
trigger_event = tribute_mission.1010
}
}
scripted_effect tribute_mission_1010_complete_effect = {
scope:tributary_scope = {
#Scaling grace
if = {
limit = {
OR = {
var:tribute_mission_type ?= flag:excessive_gold_tribute
var:tribute_mission_type ?= flag:excessive_herd_tribute
AND = {
var:tribute_mission_type ?= flag:artifact_tribute
scope:artifact_to_tribute ?= {
OR = {
rarity = famed
rarity = illustrious
}
}
}
exists = scope:appointed_concubine
exists = scope:appointed_eunuch
}
}
set_variable = {
name = tribute_mission_grace
value = scope:overlord_scope
years = tribute_mission_cooldown_most_years
}
}
else_if = {
limit = {
OR = {
var:tribute_mission_type ?= flag:adequate_gold_tribute
var:tribute_mission_type ?= flag:adequate_herd_tribute
AND = {
var:tribute_mission_type ?= flag:artifact_tribute
scope:artifact_to_tribute ?= { rarity = masterwork }
}
exists = scope:concubine_character
exists = scope:eunuch_character
}
}
set_variable = {
name = tribute_mission_grace
value = scope:overlord_scope
years = tribute_mission_cooldown_more_years
}
}
else = {
set_variable = {
name = tribute_mission_grace
value = scope:overlord_scope
years = tribute_mission_cooldown_years
}
}
#Clean up & head back home
tribute_mission_clean_up_variables_effect = yes
tribute_mission_clean_up_request_variables_effect = yes
current_travel_plan ?= { resume_travel_plan = yes }
}
scope:receiving_character = {
if = {
limit = { has_character_flag = created_attendant }
#Clean 'em up
trigger_event = tribute_mission.0005
}
}
scope:artifact_to_tribute ?= {
remove_variable = is_tribute_mission_artifact
set_variable = {
name = given_via_tribute_mission
value = scope:tributary_scope
}
if = {
limit = { has_variable = given_via_tribute_mission }
#Error supression
}
}
}
#Tributary: Receive reward, go home
tribute_mission.1010 = {
type = character_event
title = {
first_valid = {
#Treasury
triggered_desc = {
trigger = { exists = scope:tribute_reward_type_treasury }
desc = tribute_mission.1010.t.treasury
}
#Artifact
triggered_desc = {
trigger = { exists = scope:tribute_reward_type_artifact }
desc = tribute_mission.1010.t.artifact
}
#Innovation
triggered_desc = {
trigger = { exists = scope:tribute_reward_type_innovation }
desc = tribute_mission.1010.t.innovation
}
#Development
triggered_desc = {
trigger = { exists = scope:tribute_reward_type_development }
desc = tribute_mission.1010.t.development
}
#Monk
triggered_desc = {
trigger = { exists = scope:tribute_reward_type_monk }
desc = tribute_mission.1010.t.monk
}
#Legitimacy
triggered_desc = {
trigger = { exists = scope:tribute_reward_type_legitimacy }
desc = tribute_mission.1010.t.legitimacy
}
desc = tribute_mission.1010.t
}
}
desc = {
first_valid = {
triggered_desc = {
trigger = { exists = scope:seal_of_investiture_scope }
desc = tribute_mission.1010.intro.postseal
}
triggered_desc = {
trigger = {
scope:receiving_character = { has_character_flag = created_attendant }
}
desc = tribute_mission.1010.intro.attendant
}
desc = tribute_mission.1010.intro
}
first_valid = {
#Treasury
triggered_desc = {
trigger = { exists = scope:tribute_reward_type_treasury }
desc = tribute_mission.1010.desc.treasury
}
#Artifact
triggered_desc = {
trigger = { exists = scope:tribute_reward_type_artifact }
desc = tribute_mission.1010.desc.artifact
}
#Innovation
triggered_desc = {
trigger = { exists = scope:tribute_reward_type_innovation }
desc = tribute_mission.1010.desc.innovation
}
#Development
triggered_desc = {
trigger = { exists = scope:tribute_reward_type_development }
desc = tribute_mission.1010.desc.development
}
#Monk
triggered_desc = {
trigger = { exists = scope:tribute_reward_type_monk }
desc = tribute_mission.1010.desc.monk
}
#Legitimacy
triggered_desc = {
trigger = { exists = scope:tribute_reward_type_legitimacy }
desc = tribute_mission.1010.desc.legitimacy
}
}
desc = tribute_mission.1010.outro
}
theme = tributary
left_portrait = {
character = root
animation = personality_rational
}
artifact = {
trigger = { exists = scope:tribute_reward_type_artifact }
target = scope:tribute_reward_type_artifact
position = lower_center_portrait
}
right_portrait = {
character = scope:receiving_character
animation = personality_honorable
}
immediate = {
tribute_mission_1000_disburse_reward_effect = yes
}
#Thanks, bye!
option = {
name = tribute_mission.1010.a
}
after = {
#Clean up variables & set up cooldown
tribute_mission_1010_complete_effect = yes
}
}
### COURT EVENTS ###
#Tributary: Fork over Tribute, try to influence reward
tribute_mission.3000 = {
type = court_event
title = tribute_mission.3000.t
desc = {
desc = tribute_mission.3000.intro
#Who is greeting us?
first_valid = {
triggered_desc = {
trigger = { scope:overlord_scope = scope:receiving_character }
desc = tribute_mission.3000.intro.overlord
}
triggered_desc = {
trigger = { scope:overlord_scope.diarch ?= scope:receiving_character }
desc = tribute_mission.3000.intro.diarch
}
triggered_desc = {
trigger = {
OR = {
scope:overlord_scope.cp:councillor_steward ?= scope:receiving_character
scope:overlord_scope.cp:councillor_chancellor ?= scope:receiving_character
scope:overlord_scope.cp:councillor_spymaster ?= scope:receiving_character
scope:overlord_scope.cp:councillor_court_chaplain ?= scope:receiving_character
scope:overlord_scope.cp:councillor_marshal ?= scope:receiving_character
}
}
desc = tribute_mission.3000.intro.councillor
}
desc = tribute_mission.3000.intro.attendant
}
desc = tribute_mission.3000.desc.segway
#What did we bring?
first_valid = {
triggered_desc = {
trigger = { var:tribute_mission_type ?= flag:bunga_mas_tribute }
desc = tribute_mission.3000.desc.bunga_mas
}
triggered_desc = {
trigger = { var:tribute_mission_type ?= flag:small_gold_tribute }
desc = tribute_mission.3000.desc.small_gold
}
triggered_desc = {
trigger = { var:tribute_mission_type ?= flag:adequate_gold_tribute }
desc = tribute_mission.3000.desc.adequate_gold
}
triggered_desc = {
trigger = { var:tribute_mission_type ?= flag:excessive_gold_tribute }
desc = tribute_mission.3000.desc.excessive_gold
}
triggered_desc = {
trigger = { var:tribute_mission_type ?= flag:small_herd_tribute }
desc = tribute_mission.3000.desc.small_herd
}
triggered_desc = {
trigger = { var:tribute_mission_type ?= flag:adequate_herd_tribute }
desc = tribute_mission.3000.desc.adequate_herd
}
triggered_desc = {
trigger = { var:tribute_mission_type ?= flag:excessive_herd_tribute }
desc = tribute_mission.3000.desc.excessive_herd
}
triggered_desc = {
trigger = { exists = scope:concubine_character }
desc = tribute_mission.3000.desc.concubine
}
triggered_desc = {
trigger = { exists = scope:eunuch_character }
desc = tribute_mission.3000.desc.eunuch
}
triggered_desc = {
trigger = { exists = scope:artifact_to_tribute }
desc = tribute_mission.3000.desc.artifact
}
}
first_valid = {
triggered_desc = {
trigger = {
scope:receiving_character = { has_character_flag = created_attendant }
}
desc = tribute_mission.3000.outro.attendant
}
desc = tribute_mission.3000.outro
}
}
theme = tributary
override_sound = { reference = "event:/SFX/Events/Themes/sfx_event_theme_type_duty" }
court_scene = {
button_position_character = scope:receiving_character
court_owner = scope:overlord_scope
court_event_force_open = no
show_timeout_info = yes
should_pause_time = yes
roles = {
scope:tributary_scope = {
group = petition_liege_group
animation = throne_room_kneel_1
}
scope:human_tribute = {
group = petition_liege_group
animation = throne_room_kneel_1
}
}
}
immediate = {
scope:overlord_scope = {
open_view_data = {
view = royal_court
secondary_actor = scope:tributary_scope
player = scope:tributary_scope
}
}
tribute_mission_1000_common_arrival_effect = yes
#For the tooltips
if = {
limit = { tribute_mission_1000_can_give_treasury_trigger = yes }
tribute_mission_1000_set_treasury_reward_effect = yes
}
if = {
limit = {
scope:overlord_scope.culture = {
any_known_innovation = { tribute_mission_1000_eligible_innovation_trigger = yes }
}
}
scope:overlord_scope.culture = {
random_known_innovation = {
limit = { tribute_mission_1000_eligible_innovation_trigger = yes }
save_scope_as = saved_innovation
}
}
}
else = {
save_scope_as = grant_fascination
}
#What level of Bunga Mas modifier?
tribute_mission_1000_determine_bunga_mas_scale_effect = yes
}
#China: Duel for Treasury
option = {
name = tribute_mission.3000.treasury
trigger = {
scope:receiving_character = { is_ai = yes }
tribute_mission_1000_can_give_treasury_trigger = yes
}
tribute_mission_1000_determine_duel_skill_effect = { INFLUENCED_REWARD = treasury REWARD_INCREMENT = 0 }
ai_chance = { base = 100 }
}
#Duel for Artifact
option = {
name = tribute_mission.3000.artifact
trigger = {
scope:receiving_character = { is_ai = yes }
tribute_mission_1000_can_set_artifact_reward_trigger = yes
}
tribute_mission_1000_determine_duel_skill_effect = { INFLUENCED_REWARD = artifact REWARD_INCREMENT = 1 }
ai_chance = { base = 150 }
}
#Duel for Innovation
option = {
name = tribute_mission.3000.innovation
trigger = {
scope:receiving_character = { is_ai = yes }
tribute_mission_1000_can_set_innovation_reward_trigger = yes
}
tribute_mission_1000_determine_duel_skill_effect = { INFLUENCED_REWARD = innovation REWARD_INCREMENT = 2 }
ai_chance = { base = 200 }
}
#Duel for Development
option = {
name = tribute_mission.3000.development
trigger = {
scope:receiving_character = { is_ai = yes }
tribute_mission_1000_eligible_development_trigger = yes
}
tribute_mission_1000_determine_duel_skill_effect = { INFLUENCED_REWARD = development REWARD_INCREMENT = 3 }
ai_chance = { base = 150 }
}
#I'm sure it'll be fine
option = {
name = tribute_mission.3000.abstain
tribute_mission_1000_display_potential_rewards_effect = yes
ai_chance = {
base = 100
modifier = {
has_trait = arbitrary
add = 200
}
}
}
after = {
#Non-AI Receiving person: Decide on if you want to accept the human tribute
if = {
limit = {
OR = {
exists = scope:concubine_character
exists = scope:eunuch_character
}
AND = {
#If the overlord is an AI, they've already said yay/nay
scope:overlord_scope = { is_ai = no }
#... so if we're a player diarch of a player ruler, you get to decide
scope:receiving_character = { is_ai = no }
}
}
show_as_tooltip = { tribute_mission_1000_fork_over_with_notification_effect = yes }
scope:receiving_character = { trigger_event = tribute_mission.1002 }
}
#Or the Non-AI Receiving person / Hegemon gets to decide the reward
else_if = {
limit = {
scope:receiving_character = {
OR = {
is_ai = no
scope:overlord_scope = { highest_held_title_tier = tier_hegemony }
}
}
}
show_as_tooltip = { tribute_mission_1000_fork_over_with_notification_effect = yes }
scope:receiving_character = { trigger_event = tribute_mission.1005 }
}
#Or if the Receiving person is AI then we we skip the event and just generate the reward
else = {
tribute_mission_1000_fork_over_with_notification_effect = yes
scope:overlord_scope = { tribute_mission_1000_generate_reward_effect = yes }
scope:tributary_scope = { trigger_event = tribute_mission.3010 }
}
}
}
###DEPRECATED
#Recipient: Decide on the human tribute
tribute_mission.3002 = {
orphan = yes
type = court_event
title = tribute_mission.3002.t
desc = {
desc = tribute_mission.3002.segway
first_valid = {
triggered_desc = {
trigger = { exists = scope:concubine_character }
desc = tribute_mission.3002.desc.concubine
}
triggered_desc = {
trigger = {
scope:eunuch_character ?= { has_character_flag = tribute_mission_recently_castrated }
}
desc = tribute_mission.3002.desc.new_eunuch
}
triggered_desc = {
trigger = { exists = scope:eunuch_character }
desc = tribute_mission.3002.desc.eunuch
}
}
#Some descriptive exterior words
first_valid = {
#Beauty
triggered_desc = {
trigger = {
exists = scope:concubine_character
scope:human_tribute = {
OR = {
has_trait = beauty_good_1
has_trait = beauty_good_2
has_trait = beauty_good_3
}
}
}
desc = tribute_mission.3002.beauty.concubine.good
}
#Bad Beauty
triggered_desc = {
trigger = {
exists = scope:concubine_character
scope:human_tribute = {
OR = {
has_trait = beauty_bad_1
has_trait = beauty_bad_2
has_trait = beauty_bad_3
}
}
}
desc = tribute_mission.3002.beauty.concubine.bad
}
#Physique
triggered_desc = {
trigger = {
exists = scope:concubine_character
scope:human_tribute = {
OR = {
has_trait = physique_good_1
has_trait = physique_good_2
has_trait = physique_good_3
}
}
}
desc = tribute_mission.3002.physique.concubine.good
}
#Bad Physique
triggered_desc = {
trigger = {
exists = scope:concubine_character
scope:human_tribute = {
OR = {
has_trait = physique_bad_1
has_trait = physique_bad_2
has_trait = physique_bad_3
}
}
}
desc = tribute_mission.3002.physique.concubine.bad
}
#Fallback
triggered_desc = {
trigger = { exists = scope:concubine_character }
desc = tribute_mission.3002.exterior.plain
}
}
#Some descriptive personality words
first_valid = {
#Shy
triggered_desc = {
trigger = {
scope:human_tribute = { 1002_human_tribute_shy_personality_trigger = yes }
}
desc = tribute_mission.3002.personality.shy
}
#Bold
triggered_desc = {
trigger = {
scope:human_tribute = { 1002_human_tribute_bold_personality_trigger = yes }
}
desc = tribute_mission.3002.personality.bold
}
#Cynical
triggered_desc = {
trigger = {
scope:human_tribute = { 1002_human_tribute_callous_personality_trigger = yes }
}
desc = tribute_mission.3002.personality.cynical
}
#Angry
triggered_desc = {
trigger = {
scope:human_tribute = { 1002_human_tribute_angry_personality_trigger = yes }
}
desc = tribute_mission.3002.personality.angry
}
#Fallback
desc = tribute_mission.3002.personality.fallback
}
}
theme = tributary
left_portrait = {
character = scope:receiving_character
animation = interested
}
right_portrait = {
character = scope:human_tribute
triggered_animation = {
trigger = { has_character_flag = tribute_mission_recently_castrated }
animation = severelywounded
}
triggered_animation = {
trigger = { 1002_human_tribute_shy_personality_trigger = yes }
animation = shame
}
triggered_animation = {
trigger = { 1002_human_tribute_bold_personality_trigger = yes }
animation = personality_bold
}
triggered_animation = {
trigger = { 1002_human_tribute_callous_personality_trigger = yes }
animation = personality_cynical
}
triggered_animation = {
trigger = { 1002_human_tribute_angry_personality_trigger = yes }
animation = disapproval
}
animation = personality_honorable
}
lower_right_portrait = {
character = scope:tributary_scope
}
court_scene = {
button_position_character = scope:receiving_character
court_owner = scope:overlord_scope
court_event_force_open = no
show_timeout_info = yes
should_pause_time = yes
roles = {
scope:tributary_scope = {
group = petition_liege_group
animation = throne_room_kneel_1
}
scope:human_tribute = {
group = petition_liege_group
animation = throne_room_kneel_1
}
}
}
immediate = {
tribute_mission_1000_fork_over_with_notification_effect = yes
}
#Add 'em to court
option = {
name = tribute_mission.3002.a
if = {
limit = { exists = scope:concubine_character }
tribute_mission_1000_make_courtier_effect = { HUMAN_TRIB = scope:concubine_character }
}
else = {
tribute_mission_1000_make_courtier_effect = { HUMAN_TRIB = scope:eunuch_character }
}
ai_chance = { base = 100 }
}
#Make 'em your concubine
option = {
name = tribute_mission.3002.b
trigger = {
exists = scope:concubine_character
scope:overlord_scope = scope:receiving_character
tribute_mission_1000_overlord_can_employ_concubine_trigger = yes
}
flavor = tribute_mission.3002.b.flavor
tribute_mission_1000_make_concubine_effect = yes
save_scope_value_as = {
name = appointed_concubine
value = flag:yes
}
ai_chance = {
base = 100
modifier = {
add = {
value = 50
multiply = scope:concubine_character.num_of_good_genetic_traits
}
scope:concubine_character = {
num_of_good_genetic_traits > 0
trigger_if = {
limit = {
is_female = yes
}
is_aging_character = no
}
}
}
modifier = {
add = 50
scope:concubine_character = {
is_lowborn = no
trigger_if = {
limit = {
is_female = yes
}
is_aging_character = no
}
}
}
modifier = {
add = {
value = -50
multiply = scope:concubine_character.num_of_bad_genetic_traits
}
scope:concubine_character = {
num_of_bad_genetic_traits > 0
trigger_if = {
limit = {
is_female = yes
}
is_aging_character = no
}
}
}
modifier = {
add = {
value = -50
}
scope:concubine_character = {
is_lowborn = yes
num_of_good_genetic_traits = 0
trigger_if = {
limit = {
is_female = yes
}
is_aging_character = no
}
}
}
opinion_modifier = { # Opinion of you
who = scope:overlord_scope
opinion_target = scope:tributary_scope
multiplier = 1.0
desc = AI_OPINION_REASON
}
opinion_modifier = { # Opinion of concubine
who = scope:overlord_scope
opinion_target = scope:concubine_character
multiplier = 0.25
desc = AI_OPINION_REASON
}
compare_modifier = { # Recipient is reluctant to marry old women (procreation is a key factor)
trigger = {
scope:concubine_character = {
is_young_character = no
is_female = yes
}
}
target = scope:concubine_character
value = age
multiplier = -5
step = 1
offset = -29
}
modifier = {
add = 50
scope:overlord_scope = {
is_attracted_to_gender_of = scope:concubine_character
}
}
#More/Less likely based on difference in rank between tributary_scope and overlord_scope
modifier = {
add = 50
scope:tributary_scope = {
tier_difference = {
target = scope:overlord_scope
value > 1
}
}
}
modifier = {
add = -20
scope:tributary_scope = {
tier_difference = {
target = scope:overlord_scope
value < 1
}
}
}
}
}
#Appoint 'em head Eunuch
option = {
name = tribute_mission.3002.c
trigger = {
exists = scope:eunuch_character
scope:overlord_scope = scope:receiving_character
can_employ_court_position_type = chief_eunuch_court_position
}
#Make 'em courtier
tribute_mission_1000_make_courtier_effect = { HUMAN_TRIB = scope:eunuch_character }
#Gain obligation hook
custom_tooltip = obligation_hook_tt
add_hook = {
type = obligation_hook
target = scope:eunuch_character
}
#Replace current Chief Eunuch
if = {
limit = {
employs_court_position = chief_eunuch_court_position
}
every_court_position_holder = {
type = chief_eunuch_court_position
save_temporary_scope_as = current_chief_eunuch
}
replace_court_position = {
recipient = scope:eunuch_character
holder = scope:current_chief_eunuch
court_position = chief_eunuch_court_position
}
}
#Or simply appoint new Eunuch
else = {
appoint_court_position = {
recipient = scope:eunuch_character
court_position = chief_eunuch_court_position
}
}
save_scope_value_as = {
name = appointed_eunuch
value = flag:yes
}
ai_chance = {
base = 100
opinion_modifier = {
who = scope:overlord_scope
opinion_target = scope:tributary_scope
multiplier = 0.5
}
opinion_modifier = {
who = scope:overlord_scope
opinion_target = scope:eunuch_character
multiplier = 0.5
}
modifier = {
add = {
value = 50
subtract = scope:eunuch_character.age
}
}
modifier = {
add = {
add = scope:eunuch_character.diplomacy
add = scope:eunuch_character.intrigue
add = scope:eunuch_character.stewardship
add = scope:eunuch_character.martial
add = scope:eunuch_character.learning
}
}
modifier = {
scope:eunuch_character = { has_trait = beardless_eunuch }
add = 25
}
}
}
#Um... nah
option = {
name = tribute_mission.3002.d
custom_tooltip = tribute_mission.3002.d.tt
if = {
limit = { exists = scope:concubine_character }
save_scope_value_as = {
name = rejected_concubine
value = flag:yes
}
}
else = {
save_scope_value_as = {
name = rejected_eunuch
value = flag:yes
}
}
ai_chance = {
base = 10
modifier = {
has_trait = paranoid
add = 1000
}
}
}
after = {
#Moving on
trigger_event = tribute_mission.3005
}
}
###DEPRECATED
#Recipient: What do you give?
tribute_mission.3005 = {
type = court_event
title = {
first_valid = {
triggered_desc = { # Gold
trigger = { tribute_mission_1000_gold_tributary_trigger = yes }
desc = tribute_mission.3005.t.gold
}
triggered_desc = { # Herd
trigger = { tribute_mission_1000_herd_tributary_trigger = yes }
desc = tribute_mission.3005.t.herd
}
triggered_desc = { # Concubine
trigger = { tribute_mission_1000_concubine_tributary_trigger = yes }
desc = tribute_mission.3005.t.concubine
}
triggered_desc = { # Eunuch
trigger = { tribute_mission_1000_eunuch_tributary_trigger = yes }
desc = tribute_mission.3005.t.eunuch
}
triggered_desc = { # Artifact
trigger = { tribute_mission_1000_artifact_tributary_trigger = yes }
desc = tribute_mission.3005.t.artifact
}
desc = tribute_mission.3005.t
}
}
desc = {
first_valid = {
triggered_desc = {
trigger = {
OR = {
exists = scope:concubine_character
exists = scope:eunuch_character
}
}
desc = tribute_mission.3005.intro.human_tribute
}
desc = tribute_mission.3005.intro
}
first_valid = {
triggered_desc = {
trigger = { scope:tributary_scope.var:tribute_mission_type ?= flag:small_gold_tribute }
desc = tribute_mission.3005.desc.small_gold
}
triggered_desc = {
trigger = { scope:tributary_scope.var:tribute_mission_type ?= flag:adequate_gold_tribute }
desc = tribute_mission.3005.desc.adequate_gold
}
triggered_desc = {
trigger = { scope:tributary_scope.var:tribute_mission_type ?= flag:excessive_gold_tribute }
desc = tribute_mission.3005.desc.excessive_gold
}
triggered_desc = {
trigger = { scope:tributary_scope.var:tribute_mission_type ?= flag:small_herd_tribute }
desc = tribute_mission.3005.desc.small_herd
}
triggered_desc = {
trigger = { scope:tributary_scope.var:tribute_mission_type ?= flag:adequate_herd_tribute }
desc = tribute_mission.3005.desc.adequate_herd
}
triggered_desc = {
trigger = { scope:tributary_scope.var:tribute_mission_type ?= flag:excessive_herd_tribute }
desc = tribute_mission.3005.desc.excessive_herd
}
triggered_desc = {
trigger = { exists = scope:rejected_concubine }
desc = tribute_mission.3005.desc.rejected_concubine
}
triggered_desc = {
trigger = { exists = scope:appointed_concubine }
desc = tribute_mission.3005.desc.appointed_concubine
}
triggered_desc = {
trigger = { exists = scope:concubine_character }
desc = tribute_mission.3005.desc.concubine
}
triggered_desc = {
trigger = { exists = scope:rejected_eunuch }
desc = tribute_mission.3005.desc.rejected_eunuch
}
triggered_desc = {
trigger = { exists = scope:appointed_eunuch }
desc = tribute_mission.3005.desc.appointed_eunuch
}
triggered_desc = {
trigger = { exists = scope:eunuch_character }
desc = tribute_mission.3005.desc.eunuch
}
triggered_desc = {
trigger = { exists = scope:artifact_to_tribute }
desc = tribute_mission.3005.desc.artifact
}
#Fallback
desc = tribute_mission.3005.desc
}
}
theme = tributary
override_sound = { reference = "event:/SFX/Events/Themes/sfx_event_theme_type_duty" }
court_scene = {
button_position_character = scope:receiving_character
court_owner = scope:overlord_scope
court_event_force_open = no
show_timeout_info = yes
should_pause_time = yes
roles = {
scope:tributary_scope = {
group = petition_liege_group
animation = throne_room_kneel_1
}
scope:human_tribute = {
group = petition_liege_group
animation = throne_room_kneel_1
}
}
}
immediate = {
tribute_mission_1000_fork_over_with_notification_effect = yes
}
#China: Treasury / Trade Goods
option = {
name = tribute_mission.3005.treasury
trigger = { tribute_mission_1000_can_give_treasury_trigger = yes }
show_as_tooltip = { tribute_mission_1000_give_treasury_effect = yes }
tribute_mission_1000_set_treasury_reward_effect = yes
ai_chance = {
base = 0
# If we were not influenced, just add a base chance
modifier = {
NOT = { exists = scope:successful_influence }
add = 20
}
# Always choose this option if we were successfully influenced
modifier = {
scope:successful_influence ?= flag:treasury
add = 1000
}
}
}
#Artifact
option = {
name = tribute_mission.3005.artifact
#Inform the player what will happen (since the artifact doesn't exist yet)
custom_tooltip = tribute_mission.3005.artifact.tt
tribute_mission_1000_set_artifact_reward_effect = yes
ai_chance = {
base = 0
# If we were not influenced, just add a base chance
modifier = {
NOT = { exists = scope:successful_influence }
add = 20
}
# Always choose this option if we were successfully influenced
modifier = {
scope:successful_influence ?= flag:artifact
add = 1000
}
}
}
#Innovation
option = {
name = tribute_mission.3005.innovation
trigger = { tribute_mission_1000_can_set_innovation_reward_trigger = yes }
tribute_mission_1000_set_innovation_reward_effect = yes
#Display the effects
show_as_tooltip = {
if = {
limit = { exists = scope:saved_innovation }
scope:tributary_scope.culture = {
add_innovation_progress = {
value = tribute_reward_innovation_progress_value
target = scope:saved_innovation
}
}
}
if = {
limit = { exists = scope:grant_fascination }
scope:tributary_scope.culture = {
add_fascination_progress = tribute_reward_fascination_progress_value
}
}
}
ai_chance = {
base = 0
# If we were not influenced, just add a base chance
modifier = {
NOT = { exists = scope:successful_influence }
add = 20
}
# Always choose this option if we were successfully influenced
modifier = {
scope:successful_influence ?= flag:innovation
add = 1000
}
}
}
#Development
option = {
name = tribute_mission.3005.development
trigger = { tribute_mission_1000_eligible_development_trigger = yes }
show_as_tooltip = { tribute_mission_1000_give_development_effect = yes }
tribute_mission_1000_set_development_reward_effect = yes
ai_chance = {
base = 0
# If we were not influenced, just add a base chance
modifier = {
NOT = { exists = scope:successful_influence }
add = 20
}
# Always choose this option if we were successfully influenced
modifier = {
scope:successful_influence ?= flag:development
add = 1000
}
}
}
#Monk
option = {
name = tribute_mission.3005.monk
trigger = { tribute_mission_1000_eligible_for_monk_trigger = yes }
show_as_tooltip = { tribute_mission_1000_give_monk_effect = yes }
tribute_mission_1000_set_monk_reward_effect = yes
ai_chance = {
base = 0
# If we were not influenced, just add a base chance
modifier = {
NOT = { exists = scope:successful_influence }
add = 100
}
}
}
#Generic Legitimacy
option = {
name = tribute_mission.3005.legitimacy
show_as_tooltip = { tribute_mission_1000_give_legitimacy_effect = yes }
tribute_mission_1000_set_legitimacy_reward_effect = yes
ai_chance = {
base = 100
}
}
after = {
if = {
limit = {
scope:tributary_scope = {
subject_standing > seal_of_investiture_minimum_subject_standing
NOT = {
any_character_artifact = {
OR = {
artifact_type = seal_of_investiture
artifact_type = seal_of_investiture_court
}
}
}
}
}
trigger_event = { id = tribute_mission.3006 }
}
else_if = {
limit = { scope:tributary_scope = { is_tributary = no } }
scope:tributary_scope = { trigger_event = tribute_mission.3008 }
}
else = {
scope:tributary_scope = {
trigger_event = { id = tribute_mission.3010 }
}
}
}
}
###DEPRECATED
#Overlord: Decide whether to grant a Seal of Investiture or not
tribute_mission.3006 = {
type = court_event
title = tribute_mission.3006.t
desc = tribute_mission.3006.desc
theme = tributary
override_sound = { reference = "event:/SFX/Events/Themes/sfx_event_theme_type_duty" }
court_scene = {
button_position_character = scope:receiving_character
court_owner = scope:overlord_scope
court_event_force_open = no
show_timeout_info = yes
should_pause_time = yes
roles = {
scope:tributary_scope = {
group = petition_liege_group
animation = throne_room_kneel_1
}
}
}
immediate = {
tribute_mission_1006_eligible_scribe_scope_effect = yes
}
#Grant the Seal
option = {
name = tribute_mission.3006.grant
trigger = {
trigger_if = {
limit = {
scope:receiving_character = {
is_ai = yes
}
}
treasury > tribute_seal_of_investiture_cost
}
trigger_else = {
always = yes #Humans can always get one
}
}
show_as_unavailable = { always = yes }
custom_tooltip = {
text = tribute_mission.3006.grant.tt
create_artifact_imperial_seal_effect = {
OWNER = scope:receiving_character
SMITH = scope:scribe_character
}
}
remove_treasury = tribute_seal_of_investiture_cost
add_legitimacy = 50
scope:tributary_scope = {
trigger_event = tribute_mission.3007
}
ai_chance = {
base = 50
modifier = {
exists = scope:successful_influence
add = 50
}
modifier = {
always = yes
add = scope:tributary_scope.subject_standing
add = -50
}
ai_value_modifier = {
ai_greed = -0.5
ai_honor = 0.5
}
}
}
#Decline to grant the Seal
option = {
name = {
text = {
first_valid = {
triggered_desc = {
trigger = { treasury < tribute_seal_of_investiture_cost }
desc = tribute_mission.3006.decline.no_money
}
desc = tribute_mission.3006.decline.dont_wanna
}
}
}
add_legitimacy = -50
reverse_add_opinion = {
target = scope:tributary_scope
modifier = refused_seal_of_investiture_opinion
opinion = -50
}
scope:tributary_scope = {
trigger_event = {
id = tribute_mission.3010
}
}
ai_chance = {
base = 10
}
}
}
#Tributary: Receive the Seal of Investiture
tribute_mission.3007 = {
type = court_event
title = tribute_mission.3007.t
desc = tribute_mission.3007.desc
theme = tributary
override_sound = { reference = "event:/SFX/Events/Themes/sfx_event_theme_type_duty" }
court_scene = {
button_position_character = scope:receiving_character
court_owner = scope:overlord_scope
court_event_force_open = no
show_timeout_info = yes
should_pause_time = yes
roles = {
scope:receiving_character = {
group = petition_liege_group
}
scope:scribe_character = {
group = petition_liege_group
}
scope:tributary_scope = {
group = petition_liege_group
animation = throne_room_kneel_1
}
}
}
#Grant the Seal
option = {
name = tribute_mission.3007.a
scope:seal_of_investiture_scope = {
set_owner = scope:tributary_scope
}
}
after = {
scope:tributary_scope = {
trigger_event = tribute_mission.3010
}
}
}
#Tributary: Decide whether to become a Tributary or not
tribute_mission.3008 = {
type = court_event
title = tribute_mission.3008.t
desc = tribute_mission.3008.desc
theme = tributary
override_sound = { reference = "event:/SFX/Events/Themes/sfx_event_theme_type_duty" }
court_scene = {
button_position_character = scope:receiving_character
court_owner = scope:overlord_scope
court_event_force_open = no
show_timeout_info = yes
should_pause_time = yes
roles = {
scope:receiving_character = {
group = petition_liege_group
}
scope:tributary_scope = {
group = petition_liege_group
animation = throne_room_kneel_1
}
}
}
#Become a Tributary
option = {
name = tribute_mission.3008.a
start_tributary_interaction_effect = {
TRIBUTARY = scope:tributary_scope
SUZERAIN = scope:overlord_scope
}
scope:overlord_scope = {
send_interface_message = {
type = event_tribute_good_text
title = tribute_mission.new_tributary.title
left_icon = scope:tributary_scope
desc = tribute_mission.new_tributary.desc
}
}
if = {
limit = { has_variable = wants_to_become_tributary_of_china }
debug_log = "wants_to_become_tributary_of_china realized!"
}
else = {
debug_log = "Became tributary through tribute mission"
}
ai_chance = { # essentially a copy of the ai_chance for become_tributary_interaction
base = -50
modifier = { # Special case for Hegemonic Tributaries
scope:overlord_scope = {
highest_held_title_tier >= tier_hegemony
}
add = {
add = 25
if = {
limit = {
OR = {
NOT = { scope:overlord_scope.primary_title = title:h_china }
government_has_flag = government_is_meritocratic
}
}
add = 25
}
}
desc = tributary_interaction_aibehavior_recipient_hegemon_tier_tt
}
modifier = { # Special case for Hegemonic Tributaries in the Dynastic Cycle - Stable Phase
scope:overlord_scope = {
highest_held_title_tier >= tier_hegemony
any_character_situation = {
situation_type = dynastic_cycle
}
}
add = {
if = { # Unstable Phase
limit = {
any_character_situation = {
situation_type = dynastic_cycle
OR = {
situation_current_phase = situation_dynastic_cycle_phase_instability
situation_current_phase = situation_dynastic_cycle_phase_instability_conquest
}
}
}
add = -50
desc = tributary_interaction_aibehavior_recipient_unstable_cycle_tt
}
else = { # Stable Phase
if = {
limit = {
scope:overlord_scope.legitimacy_level < dynastic_cycle_legitimacy_expectation
}
add = -25
desc = tributary_interaction_aibehavior_recipient_low_legitimacy_tt
}
else_if = {
limit = {
scope:overlord_scope.legitimacy_level >= dynastic_cycle_legitimacy_expectation
}
add = 25
desc = tributary_interaction_aibehavior_recipient_high_legitimacy_tt
}
}
}
desc = ai_will_do_debug # For debugging, not shown to players
}
#A devaraja should never willingly _offer_ to become a tributary
modifier = {
trigger = {
government_has_flag = government_is_mandala
OR = {
has_unruined_mandala_capital_trigger = yes
has_mandala_aspect_trigger = yes
}
}
add = -1000
}
#MINOR MODIFIERS
ai_military_threat_modifier = {
SENDER = scope:tributary_scope
RECEIVER = scope:overlord_scope
MULTIPLIER = 0.5
}
modifier = {
is_obedient_to = scope:overlord_scope
add = 40
desc = obedient_interaction_reason
}
modifier = {
highest_held_title_tier <= tier_duchy
OR = {
government_has_flag = government_is_feudal
government_has_flag = government_is_tribal_excluding_wanua
}
add = 25
}
modifier = {
OR = {
NOT = {
any_neighboring_top_liege_realm_owner = {
always = yes # no neighbors, i.e. island
}
}
any_neighboring_top_liege_realm_owner = {
top_suzerain = scope:overlord_scope # this includes direct neighbors with overlord
}
}
add = 25
}
modifier = { # Rivalry modifier.
desc = offer_vassalization_interaction_aibehavior_rival_tt
trigger = {
scope:tributary_scope = {
has_relation_rival = scope:overlord_scope
NOT = { has_relation_nemesis = scope:overlord_scope }
}
}
add = -10
}
modifier = { # Nemesis modifier.
desc = offer_vassalization_interaction_aibehavior_nemesis_tt
trigger = {
scope:tributary_scope = {
has_relation_nemesis = scope:overlord_scope
}
}
add = -100
}
modifier = { # Different faith, no pluralism.
desc = offer_vassalization_interaction_aibehavior_differentfaith_tt
trigger = {
scope:tributary_scope = {
NOR = { # Of two different faiths AND the potential vassal's faith is not pluralistic.
faith = scope:overlord_scope.faith
faith = { has_doctrine = doctrine_pluralism_pluralistic }
}
}
}
add = {
value = -25
if = {
limit = {
scope:tributary_scope.faith = {
faith_hostility_level = {
target = scope:overlord_scope.faith
value >= faith_hostile_level
}
}
}
add = -10
}
if = {
limit = {
scope:tributary_scope.faith = {
faith_hostility_level = {
target = scope:overlord_scope.faith
value >= faith_evil_level
}
}
}
add = -25
}
}
}
modifier = { # Cultural Acceptance
scope:tributary_scope = {
NOT = { # cultural condition below doesn't have to apply if both actor and recipient have nomadic_philosophy
has_trait = nomadic_philosophy
scope:overlord_scope = { has_trait = nomadic_philosophy }
}
NOT = { has_same_culture_as = scope:overlord_scope }
culture = {
cultural_acceptance = { target = scope:overlord_scope.culture value < 50 }
}
}
add = {
add = -10
if = {
limit = { scope:tributary_scope.culture = { has_cultural_pillar = ethos_bellicose } }
add = -10
}
}
desc = cultural_acceptance_interaction_reason
}
modifier = { # Same language
add = 5
desc = speaks_same_language_interaction_reason
trigger = {
scope:tributary_scope = {
knows_language_of_culture = scope:overlord_scope.culture
}
}
}
}
}
#No thanks
option = {
name = tribute_mission.3008.b
ai_chance = 10
}
after = {
trigger_event = tribute_mission.3010
}
}
#Tributary: Receive reward, go home
tribute_mission.3010 = {
type = court_event
title = {
first_valid = {
#Treasury
triggered_desc = {
trigger = { exists = scope:tribute_reward_type_treasury }
desc = tribute_mission.3010.t.treasury
}
#Artifact
triggered_desc = {
trigger = { exists = scope:tribute_reward_type_artifact }
desc = tribute_mission.3010.t.artifact
}
#Innovation
triggered_desc = {
trigger = { exists = scope:tribute_reward_type_innovation }
desc = tribute_mission.3010.t.innovation
}
#Development
triggered_desc = {
trigger = { exists = scope:tribute_reward_type_development }
desc = tribute_mission.3010.t.development
}
#Monk
triggered_desc = {
trigger = { exists = scope:tribute_reward_type_monk }
desc = tribute_mission.3010.t.monk
}
#Monk
triggered_desc = {
trigger = { exists = scope:tribute_reward_type_legitimacy }
desc = tribute_mission.3010.t.legitimacy
}
desc = tribute_mission.3010.t
}
}
desc = {
first_valid = {
triggered_desc = {
trigger = { exists = scope:seal_of_investiture_scope }
desc = tribute_mission.3010.intro.postseal
}
triggered_desc = {
trigger = {
scope:receiving_character = { has_character_flag = created_attendant }
}
desc = tribute_mission.3010.intro.attendant
}
desc = tribute_mission.3010.intro
}
first_valid = {
#Treasury
triggered_desc = {
trigger = { exists = scope:tribute_reward_type_treasury }
desc = tribute_mission.3010.desc.treasury
}
#Artifact
triggered_desc = {
trigger = { exists = scope:tribute_reward_type_artifact }
desc = tribute_mission.3010.desc.artifact
}
#Innovation
triggered_desc = {
trigger = { exists = scope:tribute_reward_type_innovation }
desc = tribute_mission.3010.desc.innovation
}
#Development
triggered_desc = {
trigger = { exists = scope:tribute_reward_type_development }
desc = tribute_mission.3010.desc.development
}
#Monk
triggered_desc = {
trigger = { exists = scope:tribute_reward_type_monk }
desc = tribute_mission.3010.desc.monk
}
#Legitimacy
triggered_desc = {
trigger = { exists = scope:tribute_reward_type_legitimacy }
desc = tribute_mission.3010.desc.legitimacy
}
}
desc = tribute_mission.3010.outro
}
theme = tributary
override_sound = { reference = "event:/SFX/Events/Themes/sfx_event_theme_type_duty" }
artifact = {
trigger = { exists = scope:tribute_reward_type_artifact }
target = scope:tribute_reward_type_artifact
position = lower_center_portrait
}
court_scene = {
button_position_character = scope:receiving_character
court_owner = scope:overlord_scope
court_event_force_open = no
show_timeout_info = yes
should_pause_time = yes
roles = {
scope:tributary_scope = {
group = petition_liege_group
animation = throne_room_kneel_1
}
}
}
immediate = {
tribute_mission_1000_disburse_reward_effect = yes
}
#Thanks, bye!
option = {
name = tribute_mission.3010.a
}
after = {
close_view = {
view = royal_court
player = scope:tributary_scope
}
#Clean up variables & set up cooldown
tribute_mission_1010_complete_effect = yes
}
}
### LETTER EVENTS ###
#Your Tributary refused your Exact Tribute Interaction
tribute_mission.9000 = {
type = letter_event
opening = tribute_mission.9000.opening
desc = tribute_mission.9000.desc
sender = scope:recipient
immediate = {
scope:recipient = {
show_as_tooltip = {
add_legitimacy = minor_legitimacy_loss
if = {
limit = { is_ai = yes }
add_opinion = {
modifier = declined_tribute_mission_opinion
opinion = -30
target = scope:actor
}
}
}
}
}
#Hokay...
option = {
name = tribute_mission.9000.a
ai_chance = {
base = 25
ai_value_modifier = {
ai_greed = -1
ai_boldness = -1
}
}
}
}
#Tributary is going on a mission!
tribute_mission.9010 = {
type = letter_event
opening = tribute_mission.9010.opening
desc = tribute_mission.9010.desc
sender = scope:recipient
immediate = {
}
#Yay!
option = {
name = tribute_mission.9010.a
ai_chance = {
base = 25
ai_value_modifier = {
ai_greed = -1
ai_boldness = -1
}
}
}
}
#Tributary: You ignored the Requested Tribute Mission, have some penalty
tribute_mission.9500 = {
type = letter_event
opening = tribute_mission.9500.opening
desc = tribute_mission.9500.desc
sender = scope:overlord
trigger = {
is_tributary = yes
has_variable = requested_tribute_mission
var:requested_tribute_mission = overlord
#We're going, we're going...
NOT = {
has_variable = tribute_mission_type
exists = current_travel_plan
}
}
on_trigger_fail = {
set_variable = invalidation_should_fail_ongoing_requested_tribute_mission
}
immediate = {
add_legitimacy = minor_legitimacy_loss
if = {
limit = {
NOT = { exists = scope:overlord }
}
overlord = {
save_scope_as = overlord
}
}
scope:overlord = {
if = {
limit = { is_ai = yes }
add_opinion = {
modifier = declined_tribute_mission_opinion
opinion = -30
target = root
}
}
}
#Clean up Requested Tribute Mission variables
requested_tribute_mission_clean_up_variables_effect = yes
}
#Hokay...
option = {
name = tribute_mission.9500.a
ai_chance = {
base = 25
ai_value_modifier = {
ai_greed = -1
ai_boldness = -1
}
}
}
}
### TRAVEL EVENTS ###
#Your human tribute is not available any more
tribute_mission.9750 = {
type = character_event
title = tribute_mission.9750.t
desc = tribute_mission.9750.desc
theme = travel
override_icon = { reference = "gfx/interface/icons/event_types/type_tributary.dds" }
left_portrait = {
character = root
animation = stress
}
right_portrait = {
character = scope:human_tribute
trigger = {
NOT = { has_character_flag = tribute_mission_escaped_eunuch }
}
triggered_animation = {
trigger = { is_alive = no }
animation = dead
}
animation = prisonhouse
}
immediate = {
#Hol' up
current_travel_plan ?= { pause_travel_plan = yes }
#Save the concubine
if = {
limit = { has_variable = offered_concubine }
var:offered_concubine = { save_scope_as = human_tribute }
}
#Save the eunuch
if = {
limit = { has_variable = offered_eunuch }
var:offered_eunuch = { save_scope_as = human_tribute }
}
}
#Swap to gold?
option = {
name = tribute_mission.9750.a
show_as_unavailable = { always = yes }
#Define how much gold it is
set_variable = {
name = tribute_mission_type
value = flag:adequate_gold_tribute
}
set_variable = {
name = offered_gold_value
value = adequate_gold_tribute_value
}
#Clear out the old variables
remove_variable = offered_concubine
remove_variable = offered_eunuch
#Stash the gold so you don't use it elsewhere on your trip to the capital
custom_tooltip = {
text = tribute_mission.adequate_reserved_gold
hidden_effect = { remove_short_term_gold = adequate_gold_tribute_value }
}
#Keep on keeping on
current_travel_plan ?= { resume_travel_plan = yes }
if = {
limit = { has_character_flag = revisit_tribute_mission_0001 }
trigger_event = {
id = tribute_mission.0001
delayed = yes
}
}
}
#Or go home
option = {
name = tribute_mission.9750.b
current_travel_plan = {
if = {
limit = { can_cancel = yes }
cancel_travel_plan = yes
}
}
custom_tooltip = tribute_mission.9750.tt
#Keep on keeping on
hidden_effect = {
current_travel_plan ?= { resume_travel_plan = yes }
}
tribute_mission_clean_up_variables_effect = yes
tribute_mission_clean_up_request_variables_effect = yes
}
after = {
if = {
limit = { has_character_flag = revisit_tribute_mission_0001 }
remove_character_flag = revisit_tribute_mission_0001
}
}
}
scripted_effect tribute_mission_9760_escape_effect = {
scope:escapee_eunuch = {
add_character_flag = {
flag = tribute_mission_escaped_eunuch
days = 30
}
}
current_travel_plan = { remove_character = scope:escapee_eunuch }
hidden_effect = {
scope:escapee_eunuch = { move_to_pool_at = root.location }
}
trigger_event = {
id = tribute_mission.9750
delayed = yes
}
}
#Your slated eunuch is trying to escape
tribute_mission.9760 = {
type = character_event
title = tribute_mission.9760.t
desc = {
first_valid = {
triggered_desc = {
trigger = { exists = scope:vengeful_eunuch }
desc = tribute_mission.9760.desc.vengeful
}
desc = tribute_mission.9760.desc
}
}
theme = travel
override_icon = { reference = "gfx/interface/icons/event_types/type_tributary.dds" }
override_background = { reference = bedchamber }
left_portrait = {
character = root
animation = disbelief
}
right_portrait = {
character = scope:escapee_eunuch
triggered_animation = {
trigger = { exists = scope:vengeful_eunuch }
animation = menacing
}
animation = shock
}
trigger = {
is_tributary = yes
location != var:tribute_mission_target_scope.capital_province
has_variable = offered_eunuch
var:offered_eunuch = { has_character_flag = tribute_mission_attempt_escape }
}
immediate = {
#Save the eunuch
if = {
limit = { has_variable = offered_eunuch }
var:offered_eunuch = { save_scope_as = escapee_eunuch }
}
scope:escapee_eunuch = {
if = {
limit = {
OR = {
1002_human_tribute_angry_personality_trigger = yes
has_trait = sadistic
has_trait = just
}
}
save_scope_as = vengeful_eunuch
}
}
}
#Vengeful eunuch
option = {
name = tribute_mission.9760.a
trigger = { exists = scope:vengeful_eunuch }
duel = {
skill = prowess
target = scope:vengeful_eunuch
#You overpower them
50 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
}
desc = tribute_mission.9760.a.success
custom_tooltip = tribute_mission.9760.a.success.tt
#You learned something!
random = {
chance = 10
add_prowess_skill = 1
}
}
#You get injured
40 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
}
desc = tribute_mission.9760.a.failure
increase_wounds_effect = { REASON = fight }
#Hmmm, vindication
if = {
limit = { is_female = no }
random = {
chance = 5
add_trait = eunuch_1
}
}
tribute_mission_9760_escape_effect = yes
}
}
}
#Guards!!!
option = {
name = tribute_mission.9760.b
trigger = {
NOT = { exists = scope:vengeful_eunuch }
}
scope:escapee_eunuch = {
duel = {
skill = prowess
value = very_high_skill_rating
#Eunuch is overpowered
30 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
}
desc = tribute_mission.9760.b.success
custom_tooltip = tribute_mission.9760.a.success.tt
}
#Eunuch escapes
60 = {
compare_modifier = {
value = scope:duel_value
multiplier = 3.5
}
desc = tribute_mission.9760.b.failure
tribute_mission_9760_escape_effect = yes
}
#Eunuch is killed in the process
5 = {
compare_modifier = {
value = scope:duel_value
multiplier = -3.5
min = 5
}
desc = tribute_mission.9760.b.critical_failure
death = { death_reason = death_fight }
trigger_event = {
id = tribute_mission.9750
delayed = yes
}
}
}
}
}
#Let 'em go
option = {
name = tribute_mission.9760.c
tribute_mission_9760_escape_effect = yes
}
after = {
scope:escapee_eunuch = {
if = {
limit = { is_alive = yes }
remove_character_flag = tribute_mission_attempt_escape
}
}
}
}
#Somehow your Tribute Mission invalidated, refund and return home
tribute_mission.9800 = {
type = character_event
title = tribute_mission.9800.t
desc = {
first_valid = {
#New overlord can't accept my tribute
triggered_desc = {
trigger = { has_variable = new_overlord_unable_to_accept_tribute }
desc = tribute_mission.9800.desc.unable_to_accept_tribute
}
#Hmm got vassalized by Suzerain
triggered_desc = {
trigger = {
is_tributary = no
liege = var:tribute_mission_target_scope
}
desc = tribute_mission.9800.desc.suzerain_turned_liege
}
#No longer Tributary
triggered_desc = {
trigger = { is_tributary = no }
desc = tribute_mission.9800.desc.no_longer_tributary
}
#New overlord has a different end destination
triggered_desc = {
trigger = { has_variable = new_overlord_somewhere_else }
desc = tribute_mission.9800.desc.different_end_location
}
}
}
theme = travel
override_icon = { reference = "gfx/interface/icons/event_types/type_tributary.dds" }
left_portrait = {
character = root
animation = thinking
}
lower_right_portrait = scope:current_overlord
immediate = {
overlord = {
if = {
limit = { this != root }
save_scope_as = current_overlord
}
}
#Refunds
if = {
limit = { has_variable = offered_gold_value }
add_short_term_gold = var:offered_gold_value
}
if = {
limit = { has_variable = offered_herd_value }
domicile ?= {
change_herd = { add = var:offered_herd_value }
}
}
}
#Oh well
option = {
name = tribute_mission.9800.a
current_travel_plan = {
if = {
limit = { can_cancel = yes }
cancel_travel_plan = yes
}
}
}
after = {
tribute_mission_clean_up_variables_effect = yes
tribute_mission_clean_up_request_variables_effect = yes
remove_variable = new_overlord_unable_to_accept_tribute
if = {
limit = { exists = scope:tribute_reward_type_rejection }
tribute_mission_1000_rejection_effect = yes
}
}
}