diff --git a/common/activities/ave_maria_roman_adminstration_activity_tzykanion.txt b/common/activities/ave_maria_roman_adminstration_activity_tzykanion.txt new file mode 100644 index 00000000..e995310e --- /dev/null +++ b/common/activities/ave_maria_roman_adminstration_activity_tzykanion.txt @@ -0,0 +1,210 @@ +activity_tzykanion = { + expiration_days = 100 + has_activity_window = yes + days_until_auto_start = 10 + frame = 2 + color = { 0.853906 0.867188 0.105469 1 } + valid = { + activity_owner = { + is_alive = yes + is_imprisoned = no + } + } + on_spawn = { + invite_character_to_activity = activity_owner + accept_invitation_for_character = activity_owner + + activity_owner = { + ## Invite friends first + every_sibling = { + limit = { + has_relation_friend = prev + is_available_for_activity_trigger = yes + is_adult = yes + is_female = no + age <= 50 + NOT = { has_trait = devoted } + } + add_to_temporary_list = tzykanion_potential_guests + } + every_vassal = { + limit = { + has_relation_friend = prev + is_available_for_activity_trigger = yes + is_adult = yes + is_female = no + age <= 50 + NOT = { has_government = theocracy_government } + } + add_to_temporary_list = tzykanion_potential_guests + } + every_courtier = { + limit = { + has_relation_friend = prev + is_available_for_activity_trigger = yes + is_adult = yes + is_female = no + age <= 50 + NOT = { has_trait = devoted } + } + add_to_temporary_list = tzykanion_potential_guests + } + any_liege_or_above = { + any_vassal = { + limit = { + has_relation_friend = prev + is_available_for_activity_trigger = yes + is_adult = yes + is_female = no + age <= 50 + NOT = { has_government = theocracy_government } + } + add_to_temporary_list = tzykanion_potential_guests + } + } + + ## Rest + every_sibling = { + limit = { + is_available_for_activity_trigger = yes + is_adult = yes + is_female = no + age <= 50 + NOT = { has_trait = devoted } + } + add_to_temporary_list = tzykanion_potential_guests + } + every_vassal = { + limit = { + is_available_for_activity_trigger = yes + is_adult = yes + is_female = no + age <= 50 + NOT = { has_government = theocracy_government } + } + add_to_temporary_list = tzykanion_potential_guests + } + every_courtier = { + limit = { + is_available_for_activity_trigger = yes + is_adult = yes + is_female = no + age <= 50 + NOT = { has_trait = devoted } + } + add_to_temporary_list = tzykanion_potential_guests + } + any_liege_or_above = { + any_vassal = { + limit = { + is_available_for_activity_trigger = yes + is_adult = yes + is_female = no + age <= 50 + NOT = { has_government = theocracy_government } + } + add_to_temporary_list = tzykanion_potential_guests + } + } + every_in_list = { + list = tzykanion_potential_guests + scope:activity = { + invite_character_to_activity = prev + } + trigger_event = { + id = ave_maria_roman_administration_sports_events.0001 + days = { 1 3 } + } + } + + } + } + on_activate = { + if = { + limit = { + # Check that there are guests apart from the feast host. + NOT = { + any_participant = { + NOT = { this = scope:activity.activity_owner } + } + } + } + # If there are no other guests, throw this event. + activity_owner = { + trigger_event = ave_maria_roman_administration_sports_events.2003 + } + } + else = { + # If there are guests present + activity_owner = { # The host gets their events + ## Event for host triggering team assignation and subsequent event for every participant + trigger_event = ave_maria_roman_administration_sports_events.0002 + } + every_participant = { + limit = { NOT = { this = scope:activity.activity_owner } } + #Remove blocker for invitations to feasts (the feast is now active and will work as a blocker) + remove_variable = booked_for_a_party + } + } + } + on_complete = { + every_participant = { + remove_variable = tzykanion_team_1 + remove_variable = tzykanion_team_members + } + activity_owner = { + remove_variable = tzykanion_team_members + } + } + on_expire = { # Should never happen - kept as fallback for weirdness only + activity_owner = { + trigger_event = feast.2002 + } + } + + on_participant_death = { + + } + on_invalidated = { + activity_owner = { + save_scope_as = host + } + every_participant = { + limit = { + NOT = { this = scope:host } + } + add_to_list = tzykanion_participants + } + complete_activity = yes + if = { + limit = { + scope:host = { + is_alive = no + } + } + #Host died + every_in_list = { + list = tzykanion_participants + trigger_event = { + id = ave_maria_roman_administration_sports_events.5003 + days = 2 #So you don't get spammed + } + } + } + else_if = { + limit = { + scope:host = { + is_imprisoned = yes + } + } + #Host has been imprisoned + every_in_list = { + list = feast_participants + trigger_event = ave_maria_roman_administration_sports_events.5005 + } + scope:host = { + trigger_event = ave_maria_roman_administration_sports_events.5004 + } + } + } +} diff --git a/common/casus_belli_types/00_dejure_war.txt b/common/casus_belli_types/00_dejure_war.txt index cea59e1e..0f98a676 100644 --- a/common/casus_belli_types/00_dejure_war.txt +++ b/common/casus_belli_types/00_dejure_war.txt @@ -915,7 +915,7 @@ individual_duchy_de_jure_cb = { list = target_titles every_in_de_jure_hierarchy = { # goes down, not up limit = { tier = tier_county } - add = 100 + add = 50 } } desc = CB_CLAIM_COST_TARGET_TITLES diff --git a/common/character_interactions/00_education_interactions.txt b/common/character_interactions/00_education_interactions.txt new file mode 100644 index 00000000..5d857b83 --- /dev/null +++ b/common/character_interactions/00_education_interactions.txt @@ -0,0 +1,2480 @@ +#Interactions relating to the education of children + + +# Designate guardian and ward in your own court +#This interaction is referenced in code! If it's renamed you have to ping a coder +educate_child_interaction = { + category = interaction_category_friendly + common_interaction = yes + + send_name = SEND_PROPOSAL + + + desc = educate_child_interaction_desc + + redirect = { + scope:actor = { + if = { + limit = { + is_physically_able_adult = no + num_of_relation_guardian = 0 + } + save_scope_as = secondary_recipient + } + else_if = { + limit = { + is_physically_able_adult = yes + num_of_relation_ward < 2 + NOT = { scope:recipient = scope:secondary_recipient } + } + save_scope_as = secondary_actor + } + else_if = { + limit = { + any_courtier = { + is_physically_able_adult = yes + num_of_relation_ward < 2 + } + } + random_courtier = { + limit = { + is_physically_able_adult = yes + num_of_relation_ward < 2 + } + weight = { + base = 1 + modifier = { + add = 5 + culture = scope:actor.culture + } + modifier = { + add = 2 + faith = scope:actor.faith + } + modifier = { + add = 10 + has_council_position = councillor_court_chaplain + } + modifier = { + add = 2 + is_councillor = yes + } + modifier = { + add = 3 + this.dynasty = scope:actor.dynasty + } + modifier = { + add = 2 + has_education_rank_4_trigger = yes + } + modifier = { + add = 1 + has_education_rank_3_trigger = yes + } + } + save_scope_as = secondary_actor + } + } + if = { + limit = { + exists = employer + NOT = { employer = scope:actor } + } + + employer = { + save_scope_as = actor + } + } + } + + scope:recipient = { + if = { + limit = { + is_physically_able_adult = yes + num_of_relation_ward < 2 + } + save_scope_as = secondary_actor + } + else = { + save_scope_as = secondary_recipient + } + + if = { + limit = { + exists = employer + NOT = { employer = scope:recipient } + } + + employer = { + save_scope_as = recipient + } + } + } + } + + populate_actor_list = { + scope:actor = { + if = { + limit = { + is_physically_able_adult = yes + num_of_relation_ward < 2 + is_imprisoned = no + NOT = { has_trait = incapable } + } + add_to_list = characters + } + every_courtier = { + limit = { + is_physically_able_adult = yes + num_of_relation_ward < 2 + is_imprisoned = no + NOT = { has_trait = incapable } + } + add_to_list = characters + } + } + } + + populate_recipient_list = { + scope:recipient = { + if = { + limit = { + is_physically_able_adult = no + num_of_relation_guardian = 0 + is_imprisoned = no + NOT = { has_trait = incapable } + } + add_to_list = characters + } + every_courtier = { + limit = { + is_physically_able_adult = no + num_of_relation_guardian = 0 + is_imprisoned = no + NOT = { has_trait = incapable } + } + add_to_list = characters + } + } + } + + greeting = positive + notification_text = { + first_valid = { + triggered_desc = { + trigger = { + scope:actor = scope:secondary_actor + NOT = { scope:recipient = scope:secondary_recipient } + } + desc = EDUCATE_RECIPIENT_CHILD_PERSONALLY_REQUEST + } + triggered_desc = { + trigger = { + scope:actor = scope:secondary_actor + scope:recipient = scope:secondary_recipient + } + desc = EDUCATE_RECIPIENT_PERSONALLY_REQUEST + } + triggered_desc = { + trigger = { + NOT = { scope:recipient = scope:secondary_recipient } + NOT = { scope:actor = scope:secondary_actor } + } + desc = EDUCATE_RECIPIENT_CHILD_REQUEST + } + triggered_desc = { + trigger = { + scope:recipient = scope:secondary_recipient + NOT = { scope:actor = scope:secondary_actor } + } + desc = EDUCATE_RECIPIENT_REQUEST + } + } + } + + prompt = { + first_valid = { + triggered_desc = { + trigger = { + NOT = { exists = scope:secondary_actor } + } + desc = EDUCATE_SELECT_YOUR_GUARDIAN + } + triggered_desc = { + trigger = { + NOT = { exists = scope:secondary_recipient } + } + desc = EDUCATE_SELECT_YOUR_WARD + } + } + } + + is_shown = { + scope:recipient = { + is_in_the_same_court_as = scope:actor + } + trigger_if = { + limit = { + exists = scope:secondary_actor + } + scope:secondary_actor = { + is_adult = yes + num_of_relation_ward < 2 + } + } + trigger_if = { + limit = { + exists = scope:secondary_recipient + } + scope:secondary_recipient = { + is_adult = no + num_of_relation_guardian = 0 + } + } + } + + is_valid_showing_failures_only = { + scope:recipient = { + is_imprisoned = no + NOT = { has_trait = incapable } + trigger_if = { + limit = { + NOT = { this = scope:actor } + } + is_courtier_of = scope:actor + } + + } + trigger_if = { + limit = { + exists = scope:secondary_actor + } + scope:secondary_actor = { + is_imprisoned = no + NOT = { has_trait = incapable } + } + } + trigger_if = { + limit = { + exists = scope:secondary_recipient + } + scope:secondary_recipient = { + is_imprisoned = no + NOT = { has_trait = incapable } + } + } + custom_description = { + text = character_to_guard_exists + subject = scope:actor + scope:actor = { + OR = { + any_courtier = { + is_adult = yes + num_of_relation_ward < 2 + is_imprisoned = no + NOT = { has_trait = incapable } + } + AND = { + is_adult = yes + num_of_relation_ward < 2 + is_imprisoned = no + NOT = { has_trait = incapable } + } + } + } + } + custom_description = { + text = character_to_educate_exists + object = scope:actor + scope:actor = { + OR = { + any_courtier = { + is_adult = no + num_of_relation_guardian = 0 + is_imprisoned = no + NOT = { has_trait = incapable } + } + AND = { + is_adult = no + num_of_relation_guardian = 0 + is_imprisoned = no + NOT = { has_trait = incapable } + } + } + } + } + } + + can_be_picked = { + is_at_home = yes + } + + on_accept = { + scope:secondary_recipient = { + save_scope_as = ward + scope:secondary_actor = { save_scope_as = guardian } + scope:recipient = { save_scope_as = ward_liege } + scope:actor = { save_scope_as = guardian_liege } + } + + educate_child_interaction_effect = yes + + #University? + if = { + limit = { + scope:ward.host = { + any_realm_province = { + OR = { + has_university_building_trigger = yes + has_building_or_higher = hagia_sophia_01 + } + + } + } + } + scope:ward = { + add_character_flag = { + flag = studying_at_university + years = 11 + } + } + } + + scope:actor = { + hidden_effect = { + send_interface_message = { + type = event_generic_neutral + title = educate_child_interaction_notification + left_icon = scope:guardian + right_icon = scope:ward + show_as_tooltip = { + educate_child_interaction_effect = yes + } + } + } + } + } + + auto_accept = yes + + ai_accept = { + base = 100 + } + + send_option = { + is_shown = { + exists = scope:secondary_actor + exists = scope:secondary_recipient + NOT = { scope:secondary_actor.culture = scope:secondary_recipient.culture } + } + flag = convert_culture + localization = EDUCATE_CHILD_OPTION_CONVERT_CULTURE + current_description = { + first_valid = { + triggered_desc = { + trigger = { + exists = scope:secondary_actor + scope:secondary_actor = { is_adult = no } + } + desc = EDUCATE_CHILD_OPTION_CONVERT_CULTURE_TT_TO_RECIPIENT + } + triggered_desc = { + trigger = { + exists = scope:secondary_recipient + scope:secondary_recipient = { is_adult = no } + } + desc = EDUCATE_CHILD_OPTION_CONVERT_CULTURE_TT_TO_ACTOR + } + } + } + } + send_option = { + is_shown = { + exists = scope:secondary_actor + exists = scope:secondary_recipient + NOT = { scope:secondary_actor.faith = scope:secondary_recipient.faith } + } + flag = convert_faith + localization = EDUCATE_CHILD_OPTION_CONVERT_FAITH + current_description = { + first_valid = { + triggered_desc = { + trigger = { + exists = scope:secondary_actor + scope:secondary_actor = { is_adult = no } + } + desc = EDUCATE_CHILD_OPTION_CONVERT_FAITH_TT_TO_RECIPIENT + } + triggered_desc = { + trigger = { + exists = scope:secondary_recipient + scope:secondary_recipient = { is_adult = no } + } + desc = EDUCATE_CHILD_OPTION_CONVERT_FAITH_TT_TO_ACTOR + } + } + } + } + send_option = { + is_valid = { + scope:actor = { + has_usable_hook = scope:recipient + } + } + flag = education_hook + localization = EDUCATION_HOOK + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + send_options_exclusive = no + + ai_targets = { + ai_recipients = self + } + ai_target_quick_trigger = { + adult = no + } + ai_frequency = 24 + + ai_potential = { + always = yes + } + + ai_will_do = { + base = 100 + + modifier = { # Slight preference for older heirs + add = scope:secondary_recipient.age + } + + modifier = { # Prefer to educate your own heirs + add = 900 + scope:actor = scope:secondary_actor + scope:secondary_recipient = { + is_heir_of = scope:actor + } + } + + modifier = { # Otherwise, find a good educator for them + add = 200 + scope:secondary_actor = { + OR = { + has_education_rank_4_trigger = yes + has_education_rank_3_trigger = yes + } + } + scope:secondary_recipient = { + is_heir_of = scope:actor + } + } + + modifier = { # Generally prefer your own flesh & blood to educate children + add = 200 + exists = scope:secondary_actor.dynasty + exists = scope:actor.dynasty + scope:secondary_actor.dynasty = scope:actor.dynasty + } + + modifier = { # Also prefer friends & lovers + add = 100 + scope:secondary_actor = { + OR = { + has_relation_lover = scope:actor + has_relation_friend = scope:actor + has_secret_relation_lover = scope:actor + has_relation_soulmate = scope:actor + has_relation_best_friend = scope:actor + } + } + } + + modifier = { # The AI shouldn't change culture/faith of their children + add = -1000 + scope:secondary_recipient.culture = scope:actor.culture + scope:secondary_recipient.faith = scope:actor.faith + OR = { + scope:convert_culture = yes + scope:convert_faith = yes + } + } + + modifier = { # If your kids aren't of your culture/faith, make them so! + add = 900 + scope:secondary_actor.culture = scope:actor.culture + scope:secondary_actor.faith = scope:actor.faith + NOR = { + scope:secondary_recipient.culture = scope:actor.culture + scope:secondary_recipient.faith = scope:actor.faith + } + scope:convert_culture = yes + scope:convert_faith = yes + } + + modifier = { # If your kids aren't of your culture/faith, make them so! + add = 500 + scope:secondary_actor.culture = scope:actor.culture + NOT = { scope:secondary_recipient.culture = scope:actor.culture } + scope:convert_culture = yes + } + + modifier = { # If your kids aren't of your culture/faith, make them so! + add = 500 + scope:secondary_actor.faith = scope:actor.faith + NOT = { scope:secondary_recipient.faith = scope:actor.faith } + scope:convert_faith = yes + } + + modifier = { # Rivals are not welcome + add = -1000 + scope:secondary_recipient = { + OR = { + has_relation_rival = scope:actor + has_relation_nemesis = scope:actor + } + } + } + + modifier = { # Random peasants can only dream about educating noble children! + add = -1000 + scope:actor = { + is_lowborn = no + } + scope:secondary_recipient = { + is_lowborn = yes + NOR = { + is_councillor = yes + is_knight = yes + } + } + } + + modifier = { # Don't care about random children + factor = 0 + scope:secondary_recipient = { + NOT = { + is_close_family_of = scope:actor + } + } + } + } +} + + +#Offer a ward to a landed character +#This interaction is referenced in code! If it's renamed you have to ping a coder +offer_ward_interaction = { + category = interaction_category_friendly + + desc = offer_ward_interaction_desc + + send_name = SEND_PROPOSAL + + redirect = { + scope:recipient = { + if = { + limit = { + exists = employer + NOT = { employer = scope:recipient } + } + save_scope_as = secondary_recipient + employer = { + save_scope_as = recipient + } + } + } + } + + populate_actor_list = { + scope:actor = { + if = { + limit = { + is_adult = no + num_of_relation_guardian = 0 + } + add_to_list = characters + } + every_courtier = { + limit = { + is_adult = no + num_of_relation_guardian = 0 + } + add_to_list = characters + } + } + } + + populate_recipient_list = { + scope:recipient = { + if = { + limit = { + is_adult = yes + num_of_relation_ward < 2 + } + add_to_list = characters + } + every_courtier = { + limit = { + is_adult = yes + num_of_relation_ward < 2 + + NOR = { + is_theocratic_lessee = yes + is_consort_of = scope:recipient + } + } + add_to_list = characters + } + } + } + + greeting = positive + notification_text = { + first_valid = { + triggered_desc = { + trigger = { + scope:actor = scope:secondary_actor + NOT = { scope:recipient = scope:secondary_recipient } + } + desc = EDUCATE_ACTOR_REQUEST + } + triggered_desc = { + trigger = { + scope:actor = scope:secondary_actor + scope:recipient = scope:secondary_recipient + } + desc = EDUCATE_ACTOR_PERSONALLY_REQUEST + } + triggered_desc = { + trigger = { + NOT = { scope:recipient = scope:secondary_recipient } + NOT = { scope:actor = scope:secondary_actor } + } + desc = EDUCATE_ACTOR_CHILD_REQUEST + } + triggered_desc = { + trigger = { + scope:recipient = scope:secondary_recipient + NOT = { scope:actor = scope:secondary_actor } + } + desc = EDUCATE_ACTOR_CHILD_PERSONALLY_REQUEST + } + } + } + + prompt = { + first_valid = { + triggered_desc = { + trigger = { + exists = scope:secondary_actor + scope:actor = scope:recipient + } + desc = EDUCATE_SELECT_YOUR_GUARDIAN + } + triggered_desc = { + trigger = { + exists = scope:secondary_actor + scope:secondary_actor = { + is_adult = no + } + } + desc = EDUCATE_SELECT_THEIR_GUARDIAN + } + desc = EDUCATE_SELECT_YOUR_WARD + } + } + + is_shown = { + scope:recipient = { + NOT = { this = scope:actor } + is_landed = yes + } + trigger_if = { + limit = { + exists = scope:secondary_recipient + } + scope:secondary_recipient = { + is_adult = yes + NOR = { + is_theocratic_lessee = yes + is_consort_of = scope:recipient + } + } + } + } + + + is_valid_showing_failures_only = { + custom_description = { + text = character_to_guard_exists + subject = scope:recipient + scope:recipient = { + OR = { + any_courtier = { + is_adult = yes + num_of_relation_ward < 2 + } + AND = { + is_adult = yes + num_of_relation_ward < 2 + } + } + } + } + custom_description = { + text = character_to_educate_exists + object = scope:actor + scope:actor = { + OR = { + any_courtier = { + is_adult = no + num_of_relation_guardian = 0 + } + AND = { + is_adult = no + num_of_relation_guardian = 0 + } + } + } + } + scope:recipient = { + is_imprisoned = no + is_diplomatically_available = yes + } + trigger_if = { + limit = { + exists = scope:secondary_recipient + } + scope:secondary_recipient = { + is_imprisoned = no + is_diplomatically_available = yes + } + } + } + + + on_accept = { + scope:secondary_actor = { + save_scope_as = ward + scope:secondary_recipient = { save_scope_as = guardian } + scope:actor = { save_scope_as = ward_liege } + scope:recipient = { save_scope_as = guardian_liege } + } + + offer_ward_interaction_effect = yes + + scope:actor = { + if = { + limit = { NOT = { this = scope:recipient } } + trigger_event = char_interaction.0080 + } + } + } + + on_decline = { + scope:actor = { + trigger_event = char_interaction.0081 + } + } + + auto_accept = { + custom_description = { + text = "spending_hook" + subject = scope:actor + object = scope:recipient + scope:education_hook = yes + scope:actor = { has_strong_hook = scope:recipient } + } + } + + ai_accept = { + base = 0 + + # AI should always accept children the Player has jurisdiction over + # You can always send your own child away + modifier = { + add = 200 + scope:secondary_actor = { + is_adult = no + is_child_of = scope:actor + } + desc = AI_YOUR_OWN_CHILD + } + # Including you + modifier = { + add = 200 + scope:secondary_actor = scope:actor + desc = AI_EDUCATE_YOU + } + # You can always send your courtier's child away + modifier = { + add = 200 + scope:secondary_actor = { + is_adult = no + NOT = { is_child_of = scope:actor } + is_courtier_of = scope:actor + } + #But only if you are of interest to the educator. To educate the courtier of a count is of no interest to a foreign emperor. + scope:secondary_recipient = { + OR = { + is_of_major_or_minor_interest_trigger = { CHARACTER = scope:actor } + is_of_major_or_minor_interest_trigger = { CHARACTER = scope:secondary_actor } + highest_held_title_tier <= scope:actor.highest_held_title_tier + } + } + desc = AI_YOUR_COURTIER_CHILD + } + + #Weak hook: extra points + modifier = { + scope:education_hook = yes + add = 100 + scope:actor = { NOT = { has_strong_hook = scope:recipient } } + desc = SCHEME_WEAK_HOOK_USED + } + + modifier = { # Respect the liege + add = 50 + scope:recipient = { target_is_liege_or_above = scope:actor } + desc = EDUCATE_CHILD_ACTOR_IS_MY_LIEGE + } + + #If the child is theirs they are more likely to accept + modifier = { + add = 100 + scope:secondary_actor = { + is_child_of = scope:recipient + is_adult = no + } + desc = AI_MY_CHILD + } + + #If the child is the educator's child they should be more likely to accept + modifier = { + add = 100 + scope:secondary_actor = { + is_adult = no + is_child_of = scope:secondary_recipient + } + desc = AI_MY_CHILD + } + + #Their opinion of you matters! + opinion_modifier = { + opinion_target = scope:actor + who = scope:recipient + multiplier = 0.5 + desc = AI_OPINION_REASON + } + + #Make less likely that they accept if they are of another culture + modifier = { + add = -10 + trigger = { + scope:secondary_actor = { + has_same_culture_group_as = scope:recipient + NOT = { has_same_culture_as = scope:recipient } + } + } + desc = AI_NOT_CULTURE + } + + modifier = { + add = -20 + trigger = { + scope:secondary_actor = { + NOT = { has_same_culture_group_as = scope:recipient } + } + } + desc = AI_NOT_CULTURE + } + + #Less likely if they don't like other religion + modifier = { + add = { + value = -5 + if = { + limit = { + scope:recipient.faith = { + faith_hostility_level = { + target = scope:actor.faith + value >= faith_hostile_level + } + } + } + subtract = 5 + } + if = { + limit = { + scope:recipient.faith = { + faith_hostility_level = { + target = scope:actor.faith + value >= faith_evil_level + } + } + } + subtract = 10 + } + } + trigger = { + NOT = { scope:recipient.faith = scope:actor.faith } + } + desc = AI_RELIGION + } + + #The better the educator is at a skill, the less likely they are to accept + compare_modifier = { + trigger = { + scope:secondary_recipient = { + diplomacy >= 10 + } + NOT = { scope:actor = scope:secondary_actor } + } + target = scope:secondary_recipient + value = diplomacy + step = 4 + multiplier = -0.5 + offset = -2 + max = 0 + desc = AI_GUARDIAN_SKILL_DIPLOMACY + } + compare_modifier = { + trigger = { + scope:secondary_recipient = { + martial >= 10 + } + NOT = { scope:actor = scope:secondary_actor } + } + target = scope:secondary_recipient + value = martial + step = 4 + multiplier = -0.5 + offset = -2 + max = 0 + desc = AI_GUARDIAN_SKILL_MARTIAL + } + compare_modifier = { + trigger = { + scope:secondary_recipient = { + stewardship >= 10 + } + NOT = { scope:actor = scope:secondary_actor } + } + target = scope:secondary_recipient + value = stewardship + step = 4 + multiplier = -0.5 + offset = -2 + max = 0 + desc = AI_GUARDIAN_SKILL_STEWARDSHIP + } + compare_modifier = { + trigger = { + scope:secondary_recipient = { + intrigue >= 10 + } + NOT = { scope:actor = scope:secondary_actor } + } + target = scope:secondary_recipient + value = intrigue + step = 4 + multiplier = -0.5 + offset = -2 + max = 0 + desc = AI_GUARDIAN_SKILL_INTRIGUE + } + compare_modifier = { + trigger = { + scope:secondary_recipient = { + learning >= 10 + } + NOT = { scope:actor = scope:secondary_actor } + } + target = scope:secondary_recipient + value = learning + step = 4 + multiplier = -0.5 + offset = -2 + max = 0 + desc = AI_GUARDIAN_SKILL_LEARNING + } + + #The better you as an educator is at a skill, the more likely they are to accept + compare_modifier = { + trigger = { + AND = { + scope:actor = scope:secondary_actor + scope:actor = { + diplomacy >= 11 + } + } + } + target = scope:actor + value = diplomacy + step = 4 + multiplier = 0.75 + offset = -5 + min = 0 + desc = AI_GUARDIAN_SKILL_DIPLOMACY + } + compare_modifier = { + trigger = { + AND = { + scope:actor = scope:secondary_actor + scope:actor = { + martial >= 11 + } + } + } + target = scope:actor + value = martial + step = 4 + multiplier = 0.75 + offset = -5 + min = 0 + desc = AI_GUARDIAN_SKILL_MARTIAL + } + compare_modifier = { + trigger = { + AND = { + scope:actor = scope:secondary_actor + scope:actor = { + stewardship >= 11 + } + } + } + target = scope:actor + value = stewardship + step = 4 + multiplier = 0.75 + offset = -5 + min = 0 + desc = AI_GUARDIAN_SKILL_STEWARDSHIP + } + compare_modifier = { + trigger = { + AND = { + scope:actor = scope:secondary_actor + scope:actor = { + intrigue >= 11 + } + } + } + target = scope:actor + value = intrigue + step = 4 + multiplier = 0.75 + offset = -5 + min = 0 + desc = AI_GUARDIAN_SKILL_INTRIGUE + } + compare_modifier = { + trigger = { + AND = { + scope:actor = scope:secondary_actor + scope:actor = { + learning >= 11 + } + } + } + target = scope:actor + value = learning + step = 4 + multiplier = 0.75 + offset = -5 + min = 0 + desc = AI_GUARDIAN_SKILL_LEARNING + } + + #More/Less likely based on difference in rank between actor and recipient + modifier = { + add = 20 + scope:actor = { + tier_difference = { + target = scope:recipient + value = 1 + } + } + desc = AI_RANK_DIFF + } + modifier = { + add = 30 + scope:actor = { + tier_difference = { + target = scope:recipient + value = 2 + } + } + desc = AI_RANK_DIFF + } + modifier = { + add = 40 + scope:actor = { + tier_difference = { + target = scope:recipient + value = 3 + } + } + desc = AI_RANK_DIFF + } + modifier = { + add = 50 + scope:actor = { + tier_difference = { + target = scope:recipient + value = 4 + } + } + desc = AI_RANK_DIFF + } + modifier = { + add = 60 + scope:actor = { + tier_difference = { + target = scope:recipient + value = 5 + } + } + desc = AI_RANK_DIFF + } + modifier = { + add = -20 + scope:actor = { + tier_difference = { + target = scope:recipient + value = -1 + } + } + desc = AI_RANK_DIFF + } + modifier = { + add = -30 + scope:actor = { + tier_difference = { + target = scope:recipient + value = -2 + } + } + desc = AI_RANK_DIFF + } + modifier = { + add = -40 + scope:actor = { + tier_difference = { + target = scope:recipient + value = -3 + } + } + desc = AI_RANK_DIFF + } + modifier = { + add = -50 + scope:actor = { + tier_difference = { + target = scope:recipient + value = -4 + } + } + desc = AI_RANK_DIFF + } + modifier = { + add = -60 + scope:actor = { + tier_difference = { + target = scope:recipient + value = -5 + } + } + desc = AI_RANK_DIFF + } + + modifier = { + add = 50 + scope:recipient = { + target_is_liege_or_above = scope:actor + has_dread_level_towards = { + target = scope:actor + level = 1 + } + } + desc = INTIMIDATED_REASON + } + modifier = { + add = 100 + scope:recipient = { + target_is_liege_or_above = scope:actor + has_dread_level_towards = { + target = scope:actor + level = 2 + } + } + desc = COWED_REASON + } + + modifier = { + add = 10 + scope:recipient = { + NOT = { target_is_liege_or_above = scope:actor } + has_dread_level_towards = { + target = scope:actor + level = 1 + } + } + desc = INTIMIDATED_REASON + } + modifier = { + add = 20 + scope:recipient = { + NOT = { target_is_liege_or_above = scope:actor } + has_dread_level_towards = { + target = scope:actor + level = 2 + } + } + desc = COWED_REASON + } + } + + send_option = { + is_shown = { + exists = scope:secondary_actor + exists = scope:secondary_recipient + NOT = { scope:secondary_actor.culture = scope:secondary_recipient.culture } + } + flag = convert_culture + localization = EDUCATE_CHILD_OPTION_CONVERT_CULTURE + current_description = { + first_valid = { + triggered_desc = { + trigger = { + exists = scope:secondary_actor + scope:secondary_actor = { is_adult = no } + } + desc = EDUCATE_CHILD_OPTION_CONVERT_CULTURE_TT_TO_RECIPIENT + } + triggered_desc = { + trigger = { + exists = scope:secondary_recipient + scope:secondary_recipient = { is_adult = no } + } + desc = EDUCATE_CHILD_OPTION_CONVERT_CULTURE_TT_TO_ACTOR + } + } + } + } + send_option = { + is_shown = { + exists = scope:secondary_actor + exists = scope:secondary_recipient + NOT = { scope:secondary_actor.faith = scope:secondary_recipient.faith } + } + flag = convert_faith + localization = EDUCATE_CHILD_OPTION_CONVERT_FAITH + current_description = { + first_valid = { + triggered_desc = { + trigger = { + exists = scope:secondary_actor + scope:secondary_actor = { is_adult = no } + } + desc = EDUCATE_CHILD_OPTION_CONVERT_FAITH_TT_TO_RECIPIENT + } + triggered_desc = { + trigger = { + exists = scope:secondary_recipient + scope:secondary_recipient = { is_adult = no } + } + desc = EDUCATE_CHILD_OPTION_CONVERT_FAITH_TT_TO_ACTOR + } + } + } + } + send_option = { + is_valid = { + scope:actor = { + has_usable_hook = scope:recipient + } + } + flag = education_hook + localization = EDUCATION_HOOK + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + send_options_exclusive = no +} + +#Request guardianship +offer_guardianship_interaction = { + category = interaction_category_friendly + + send_name = SEND_PROPOSAL + + desc = offer_guardianship_interaction_desc + + redirect = { + scope:recipient = { + if = { + limit = { + exists = employer + NOT = { employer = scope:recipient } + } + if = { + limit = { + is_adult = no + #num_of_relation_guardian = 0 + } + save_scope_as = secondary_recipient + } + employer = { + save_scope_as = recipient + } + } + else_if = { + limit = { + is_ruler = yes + is_adult = no + } + save_scope_as = recipient + save_scope_as = secondary_recipient + } + } + } + + populate_actor_list = { + scope:actor = { + if = { + limit = { + is_adult = yes + num_of_relation_ward < 2 + } + add_to_list = characters + } + every_courtier = { + limit = { + is_adult = yes + num_of_relation_ward < 2 + + NOR = { + is_theocratic_lessee = yes + is_consort_of = scope:actor + } + } + add_to_list = characters + } + } + } + + populate_recipient_list = { + scope:recipient = { + if = { + limit = { + is_adult = no + #num_of_relation_guardian = 0 + } + } + add_to_list = characters + every_courtier = { + limit = { + is_adult = no + #num_of_relation_guardian = 0 + } + add_to_list = characters + } + } + } + + greeting = positive + notification_text = { + first_valid = { + triggered_desc = { + trigger = { + # I assign, myself, to educate not you, but your... + scope:actor = scope:secondary_actor + NOT = { scope:recipient = scope:secondary_recipient } + } + desc = EDUCATE_RECIPIENT_CHILD_PERSONALLY_REQUEST + } + triggered_desc = { + trigger = { + # I assign, myself, to educate you, yourself! + scope:actor = scope:secondary_actor + scope:recipient = scope:secondary_recipient + } + desc = EDUCATE_RECIPIENT_PERSONALLY_REQUEST + } + triggered_desc = { + trigger = { + # I assign, not myself, to educate not you, but your... + NOT = { scope:recipient = scope:secondary_recipient } + NOT = { scope:actor = scope:secondary_actor } + } + desc = EDUCATE_RECIPIENT_CHILD_REQUEST + } + triggered_desc = { + trigger = { + # I assign, not myself, to educate you, yourself + scope:recipient = scope:secondary_recipient + NOT = { scope:actor = scope:secondary_actor } + } + desc = EDUCATE_RECIPIENT_REQUEST + } + } + } + + prompt = { + first_valid = { + triggered_desc = { + trigger = { + NOT = { exists = scope:secondary_actor } + } + desc = EDUCATE_SELECT_YOUR_GUARDIAN + } + triggered_desc = { + trigger = { + NOT = { exists = scope:secondary_recipient } + } + desc = EDUCATE_SELECT_THEIR_WARD + } + desc = EDUCATE_SELECT_YOUR_WARD_OR_GUARDIAN + } + } + + is_shown = { + scope:recipient = { + NOT = { this = scope:actor } + is_landed = yes + } + trigger_if = { + limit = { + exists = scope:secondary_recipient + } + scope:secondary_recipient = { is_adult = no } + } + } + + + is_valid_showing_failures_only = { + custom_description = { + text = character_to_educate_exists + object = scope:recipient + scope:recipient = { + OR = { + any_courtier = { + is_adult = no + #num_of_relation_guardian = 0 + } + AND = { + is_adult = no + #num_of_relation_guardian = 0 + } + } + } + } + custom_description = { + text = character_to_guard_exists + subject = scope:recipient + scope:recipient = { + OR = { + any_courtier = { + is_adult = yes + num_of_relation_ward < 2 + } + AND = { + is_adult = yes + num_of_relation_ward < 2 + } + } + } + } + scope:recipient = { + is_imprisoned = no + is_diplomatically_available = yes + } + trigger_if = { + limit = { + exists = scope:secondary_recipient + } + scope:secondary_recipient = { + is_imprisoned = no + is_diplomatically_available = yes + } + } + } + + + on_accept = { + scope:secondary_actor = { + save_scope_as = guardian + scope:secondary_recipient = { save_scope_as = ward } + scope:actor = { save_scope_as = ward_liege } + scope:recipient = { save_scope_as = guardian_liege } + } + + if = { #To block against too many wards + limit = { + scope:guardian = { + num_of_relation_ward < 2 + } + } + offer_guardianship_interaction = yes + + save_scope_value_as = { #To give right tooltip in char_interaction.0080 + name = offer_guardianship_interaction + value = yes + } + + scope:actor = { + if = { + limit = { NOT = { this = scope:recipient } } + trigger_event = char_interaction.0080 + } + } + } + else = { #Notifications about the relationship being blocked because actor tried to set it with too many + scope:recipient = { + trigger_event = char_interaction.0078 + } + scope:actor = { + trigger_event = char_interaction.0079 + } + } + } + + on_decline = { + scope:actor = { + trigger_event = char_interaction.0081 + add_opinion = { + modifier = declined_guardianship_opinion + target = scope:recipient + opinion = -15 + } + } + } + + auto_accept = { + custom_description = { + text = "spending_hook" + subject = scope:actor + object = scope:recipient + scope:education_hook = yes + scope:actor = { has_strong_hook = scope:recipient } + } + } + + ai_accept = { + base = -50 + + #Weak hook: extra points + modifier = { + scope:education_hook = yes + add = 200 + scope:actor = { NOT = { has_strong_hook = scope:recipient } } + desc = SCHEME_WEAK_HOOK_USED + } + + modifier = { # Respect the liege + add = 100 + scope:recipient = { target_is_liege_or_above = scope:actor } + desc = EDUCATE_CHILD_ACTOR_IS_MY_LIEGE + } + + #If the child is the educator's child they should be more likely to accept + modifier = { + add = 100 + scope:secondary_recipient = { + is_adult = no + is_child_of = scope:secondary_actor + } + desc = AI_GUARDIANS_OWN_CHILD + } + + modifier = { + add = -100 + scope:secondary_actor.court_owner = { + NOR = { + this = scope:recipient.court_owner + this = scope:secondary_recipient.court_owner + } + } + NOT = { scope:secondary_recipient = { is_child_of = scope:recipient } } + NOT = { scope:recipient = { target_is_liege_or_above = scope:actor } } + desc = AI_FOREIGN_COURT + } + + modifier = { + add = -200 + scope:secondary_actor.court_owner = { + NOR = { + this = scope:recipient.court_owner + this = scope:secondary_recipient.court_owner + } + } + scope:secondary_recipient = { is_child_of = scope:recipient } + NOT = { scope:recipient = { target_is_liege_or_above = scope:actor } } + desc = AI_CHILD_TO_FOREIGN_COURT + } + + modifier = { + add = -100 + scope:convert_culture = yes + scope:secondary_recipient.culture = scope:recipient.culture + desc = AI_CONVERT_CULTURE + } + + modifier = { + add = -100 + scope:convert_faith = yes + scope:secondary_recipient.faith = scope:recipient.faith + desc = AI_CONVERT_FAITH + } + + modifier = { + add = 50 + scope:recipient = { has_relation_friend = scope:actor } + desc = AI_YOUR_FRIEND + } + + modifier = { + add = -50 + scope:recipient = { has_relation_rival = scope:actor } + desc = AI_YOUR_RIVAL + } + + # If the guardian is the child's secret father, the mother is more likely to send them + modifier = { + add = 100 + exists = scope:secondary_recipient.mother + scope:recipient = scope:secondary_recipient.mother + OR = { + scope:actor = { + any_known_secret = { + OR = { + secret_type = secret_unmarried_illegitimate_child + secret_type = secret_disputed_heritage + } + exists = secret_target + secret_target = scope:secondary_recipient + } + } + scope:secondary_recipient = { has_trait = disputed_heritage } + AND = { + scope:secondary_recipient = { has_trait = bastard } + NOT = { exists = scope:secondary_recipient.father } + } + } + exists = scope:secondary_recipient.real_father + scope:secondary_recipient.real_father = scope:secondary_actor + desc = AI_YOU_ARE_THE_FATHER + } + + #Their opinion of you matters! + opinion_modifier = { + opinion_target = scope:actor + who = scope:recipient + multiplier = 1 + desc = AI_OPINION_REASON + } + + #Make less likely that they accept you as educator if they are of another culture + modifier = { + add = -5 + trigger = { + scope:actor = { + this = scope:secondary_actor + has_same_culture_group_as = scope:recipient + NOT = { has_same_culture_as = scope:recipient } + } + } + desc = AI_NOT_CULTURE + } + + modifier = { + add = -10 + trigger = { + scope:actor = { + this = scope:secondary_actor + NOT = { has_same_culture_group_as = scope:recipient } + } + } + desc = AI_NOT_CULTURE + } + + #Less likely if they don't like other religion + modifier = { + add = { + value = -5 + if = { + limit = { + scope:recipient.faith = { + faith_hostility_level = { + target = scope:actor.faith + value >= faith_hostile_level + } + } + } + subtract = 5 + } + if = { + limit = { + scope:recipient.faith = { + faith_hostility_level = { + target = scope:actor.faith + value >= faith_evil_level + } + } + } + subtract = 10 + } + } + trigger = { + NOT = { scope:recipient.faith = scope:actor.faith } + } + desc = AI_RELIGION + } + + #The better the educator is at a skill, the more likely they are to accept + compare_modifier = { + trigger = { + scope:secondary_actor = { + diplomacy >= 11 + } + } + target = scope:secondary_actor + value = diplomacy + step = 4 + multiplier = 0.75 + offset = -5 + min = 0 + desc = AI_GUARDIAN_SKILL_DIPLOMACY + } + compare_modifier = { + trigger = { + scope:secondary_actor = { + martial >= 11 + } + } + target = scope:secondary_actor + value = martial + step = 4 + multiplier = 0.75 + offset = -5 + min = 0 + desc = AI_GUARDIAN_SKILL_MARTIAL + } + compare_modifier = { + trigger = { + scope:secondary_actor = { + stewardship >= 11 + } + } + target = scope:secondary_actor + value = stewardship + step = 4 + multiplier = 0.75 + offset = -5 + min = 0 + desc = AI_GUARDIAN_SKILL_STEWARDSHIP + } + compare_modifier = { + trigger = { + scope:secondary_actor = { + intrigue >= 11 + } + } + target = scope:secondary_actor + value = intrigue + step = 4 + multiplier = 0.75 + offset = -5 + min = 0 + desc = AI_GUARDIAN_SKILL_INTRIGUE + } + compare_modifier = { + trigger = { + scope:secondary_actor = { + learning >= 11 + } + } + target = scope:secondary_actor + value = learning + step = 4 + multiplier = 0.75 + offset = -5 + min = 0 + desc = AI_GUARDIAN_SKILL_LEARNING + } + + #More/Less likely based on difference in rank between actor and recipient + modifier = { + add = 30 + scope:actor = { + tier_difference = { + target = scope:recipient + value = 1 + } + } + desc = AI_RANK_DIFF + } + modifier = { + add = 40 + scope:actor = { + tier_difference = { + target = scope:recipient + value = 2 + } + } + desc = AI_RANK_DIFF + } + modifier = { + add = 50 + scope:actor = { + tier_difference = { + target = scope:recipient + value = 3 + } + } + desc = AI_RANK_DIFF + } + modifier = { + add = 60 + scope:actor = { + tier_difference = { + target = scope:recipient + value = 4 + } + } + desc = AI_RANK_DIFF + } + modifier = { + add = 70 + scope:actor = { + tier_difference = { + target = scope:recipient + value = 5 + } + } + desc = AI_RANK_DIFF + } + modifier = { + add = -30 + scope:actor = { + tier_difference = { + target = scope:recipient + value = -1 + } + } + desc = AI_RANK_DIFF + } + modifier = { + add = -40 + scope:actor = { + tier_difference = { + target = scope:recipient + value = -2 + } + } + desc = AI_RANK_DIFF + } + modifier = { + add = -50 + scope:actor = { + tier_difference = { + target = scope:recipient + value = -3 + } + } + desc = AI_RANK_DIFF + } + modifier = { + add = -60 + scope:actor = { + tier_difference = { + target = scope:recipient + value = -4 + } + } + desc = AI_RANK_DIFF + } + modifier = { + add = -70 + scope:actor = { + tier_difference = { + target = scope:recipient + value = -5 + } + } + desc = AI_RANK_DIFF + } + + #More likely to accept if you have an alliance + modifier = { + add = 40 + scope:actor = { is_allied_to = scope:recipient } + desc = AI_HAS_ALLIANCE + } + + modifier = { + add = 50 + scope:recipient = { + target_is_liege_or_above = scope:actor + has_dread_level_towards = { + target = scope:actor + level = 1 + } + } + desc = INTIMIDATED_REASON + } + modifier = { + add = 100 + scope:recipient = { + target_is_liege_or_above = scope:actor + has_dread_level_towards = { + target = scope:actor + level = 2 + } + } + desc = COWED_REASON + } + + modifier = { + add = 10 + scope:recipient = { + NOT = { target_is_liege_or_above = scope:actor } + has_dread_level_towards = { + target = scope:actor + level = 1 + } + } + desc = INTIMIDATED_REASON + } + modifier = { + add = 20 + scope:recipient = { + NOT = { target_is_liege_or_above = scope:actor } + has_dread_level_towards = { + target = scope:actor + level = 2 + } + } + desc = COWED_REASON + } + } + + send_option = { + is_shown = { + exists = scope:secondary_actor + exists = scope:secondary_recipient + NOT = { scope:secondary_actor.culture = scope:secondary_recipient.culture } + } + flag = convert_culture + localization = EDUCATE_CHILD_OPTION_CONVERT_CULTURE + current_description = { + first_valid = { + triggered_desc = { + trigger = { + exists = scope:secondary_actor + scope:secondary_actor = { is_adult = no } + } + desc = EDUCATE_CHILD_OPTION_CONVERT_CULTURE_TT_TO_RECIPIENT + } + triggered_desc = { + trigger = { + exists = scope:secondary_recipient + scope:secondary_recipient = { is_adult = no } + } + desc = EDUCATE_CHILD_OPTION_CONVERT_CULTURE_TT_TO_ACTOR + } + } + } + } + send_option = { + is_shown = { + exists = scope:secondary_actor + exists = scope:secondary_recipient + NOT = { scope:secondary_actor.faith = scope:secondary_recipient.faith } + } + flag = convert_faith + localization = EDUCATE_CHILD_OPTION_CONVERT_FAITH + current_description = { + first_valid = { + triggered_desc = { + trigger = { + exists = scope:secondary_actor + scope:secondary_actor = { is_adult = no } + } + desc = EDUCATE_CHILD_OPTION_CONVERT_FAITH_TT_TO_RECIPIENT + } + triggered_desc = { + trigger = { + exists = scope:secondary_recipient + scope:secondary_recipient = { is_adult = no } + } + desc = EDUCATE_CHILD_OPTION_CONVERT_FAITH_TT_TO_ACTOR + } + } + } + } + send_option = { + is_valid = { + scope:actor = { + has_usable_hook = scope:recipient + } + } + flag = education_hook + localization = EDUCATION_HOOK + } + should_use_extra_icon = { + scope:actor = { has_usable_hook = scope:recipient } + } + extra_icon = "gfx/interface/icons/character_interactions/hook_icon.dds" + + send_options_exclusive = no + + ai_targets = { + ai_recipients = vassals + } + + ai_frequency = 24 + + ai_potential = { + is_imprisoned = no + NOT = { has_trait = incapable } + } + + ai_will_do = { + base = 0 + + modifier = { # Liege's should want to culture/faith convert their vassal's children + add = 100 + + scope:convert_culture = yes + scope:convert_faith = yes + + scope:secondary_actor = { + culture = scope:actor.culture + faith = scope:actor.faith + } + scope:secondary_recipient = { + OR = { + is_heir_of = scope:recipient + scope:secondary_recipient = scope:recipient + } + } + } + + modifier = { # Liege's should want to culture/faith convert their vassal's children + add = 95 + + scope:convert_culture = yes + + scope:secondary_actor = { + culture = scope:actor.culture + } + scope:secondary_recipient = { + OR = { + is_heir_of = scope:recipient + scope:secondary_recipient = scope:recipient + } + } + } + + modifier = { # Liege's should want to culture/faith convert their vassal's children + add = 90 + + scope:convert_faith = yes + + scope:secondary_actor = { + faith = scope:actor.faith + } + scope:secondary_recipient = { + OR = { + is_heir_of = scope:recipient + scope:secondary_recipient = scope:recipient + } + } + } + + modifier = { # Players shouldn't be spammed + add = -90 + + scope:secondary_recipient = { + is_ai = no + } + } + + modifier = { # Don't ask to convert faith if that's already a thing + factor = 0 + + scope:convert_faith = yes + NOT = { scope:convert_culture = yes } + + scope:secondary_recipient = { + any_relation = { + faith = scope:actor.faith + type = guardian + has_relation_flag = { + target = scope:secondary_recipient + relation = ward + flag = convert_faith + } + } + } + } + + modifier = { # Don't ask to convert culture if that's already a thing + factor = 0 + + scope:convert_culture = yes + NOT = { scope:convert_faith = yes } + + scope:secondary_recipient = { + any_relation = { + culture = scope:actor.culture + type = guardian + has_relation_flag = { + target = scope:secondary_recipient + relation = ward + flag = convert_culture + } + } + } + } + + modifier = { # Don't ask to convert culture and faith if that's already a thing + factor = 0 + + scope:convert_culture = yes + scope:convert_faith = yes + + scope:secondary_recipient = { + any_relation = { + culture = scope:actor.culture + faith = scope:actor.faith + type = guardian + has_relation_flag = { + target = scope:secondary_recipient + relation = ward + flag = convert_culture + } + } + } + } + } +} + +remove_guardian_interaction = { + category = interaction_category_friendly + desc = remove_guardian_interaction_desc + + force_notification = yes + greeting = positive + notification_text = REMOVE_GUARDIAN_INTERACTION + use_diplomatic_range = no + + is_shown = { + scope:actor = { is_ruler = yes } + OR = { + scope:recipient = { + any_relation = { + type = ward + remove_guardian_interaction_visible_ward_trigger = yes + } + } + scope:recipient = { + remove_guardian_interaction_visible_ward_trigger = yes + any_relation = { type = guardian always = yes } + } + } + } + + is_valid_showing_failures_only = { + scope:recipient = { + #RECIPIENT = GUARDIAN + trigger_if = { + limit = { scope:recipient = { is_adult = yes } } + + #Diplo availability/not imprisoned + #is_diplomatically_available = yes + + any_relation = { + type = ward + + remove_guardian_interaction_visible_ward_trigger = yes + remove_guardian_interaction_available_ward_trigger = yes + } + + + #War blocker + NOR = { + is_at_war_with = scope:actor + any_liege_or_above = { is_at_war_with = scope:actor } + } + } + #RECIPIENT = WARD + trigger_else = { + + #Diplo availability + remove_guardian_interaction_visible_ward_trigger = yes + remove_guardian_interaction_available_ward_trigger = yes + + any_relation = { + type = guardian + #is_diplomatically_available = yes + } + + #War blocker + any_relation = { + type = guardian + NOR = { + is_at_war_with = scope:actor + any_liege_or_above = { is_at_war_with = scope:actor } + } + } + } + } + + #Misc + #scope:actor = { is_imprisoned = no } + } + + auto_accept = yes + + ai_min_reply_days = 1 + ai_max_reply_days = 3 + + on_accept = { + #Save guardian scope + if = { + limit = { scope:recipient = { is_adult = yes } } + scope:recipient = { + save_scope_as = guardian + } + } + else = { + scope:recipient = { every_relation = { type = guardian save_scope_as = guardian } } + } + + #Save ward(s) scope(s) + scope:guardian = { + #If the recipient is the ward, always pick them as ward + if = { + limit = { + NOT = { this = scope:recipient } + } + scope:recipient = { save_scope_as = ward } + } + #If recipient is the guardian, pick a random ward as ward 1 and if there is an additional one, set is as ward 2 + else = { + random_relation = { + type = ward + limit = { + remove_guardian_interaction_visible_ward_trigger = yes + remove_guardian_interaction_available_ward_trigger = yes + } + save_scope_as = ward + save_scope_as = secondary_recipient + } + if = { + limit = { + any_relation = { + type = ward + remove_guardian_interaction_visible_ward_trigger = yes + remove_guardian_interaction_available_ward_trigger = yes + NOR = { + this = scope:ward + scope:ward = scope:recipient #because if we target a specific child, no 2nd ward + } + } + } + random_relation = { + type = ward + limit = { + remove_guardian_interaction_visible_ward_trigger = yes + remove_guardian_interaction_available_ward_trigger = yes + NOR = { + this = scope:ward + this = scope:recipient + } + } + save_scope_as = ward_2 + } + } + } + } + + #Letter event to guardian + if = { + limit = { + NOT = { + scope:guardian = scope:actor + } + } + scope:guardian = { + trigger_event = char_interaction.0090 + } + } + + #Handling the wards and feedback to actor + scope:actor = { + send_interface_message = { + type = event_generic_neutral + title = remove_guardian_interaction_notification + left_icon = scope:guardian + right_icon = scope:ward + + scope:ward = { + remove_relation_guardian = scope:guardian + + if = { + limit = { + NOR = { + host = liege + is_landed = yes + } + } + return_to_court = yes + } + } + if = { + limit = { exists = scope:ward_2 } + scope:ward_2 = { + remove_relation_guardian = scope:guardian + if = { + limit = { + NOR = { + host = liege + is_landed = yes + } + } + return_to_court = yes + } + } + } + scope:guardian = { + if = { + limit = { + NOR = { + host = liege + is_landed = yes + any_relation = { #They're not at another ward's court + type = ward + is_landed = yes + this = scope:guardian.host + } + } + } + return_to_court = yes + } + } + + #Was education promised in interaction or in vassal.2001? Then you get an opinion penalty + if = { + limit = { + exists = scope:ward.var:character_requested_as_educator + scope:ward.var:character_requested_as_educator = scope:guardian + exists = scope:ward.var:character_making_education_request + scope:ward.var:character_making_education_request = { + is_alive = yes + OR = { + this = scope:guardian + scope:guardian = { is_courtier_of = prev } + } + NOT = { this = scope:actor } + } + } + scope:ward.var:character_making_education_request = { + add_opinion = { + modifier = insult_opinion + target = scope:actor + opinion = -15 + } + } + } + } + } + + #Remove guardian opinion from guardian/guardian's liege + #Ward + if = { + limit = { scope:actor = scope:ward.liege } #Only show if actor is ward's liege + guardian_remove_opinion_effect = { + GUARDIAN = scope:guardian + WARD = scope:ward + WARD_LIEGE = scope:ward.liege + } + } + else = { + hidden_effect = { #Else hide it + guardian_remove_opinion_effect = { + GUARDIAN = scope:guardian + WARD = scope:ward + WARD_LIEGE = scope:ward.liege + } + } + } + #Ward_2 + if = { + limit = { + exists = scope:ward_2 + scope:actor = scope:ward_2.liege #Only show guardian opinion removed if actor is ward_2's liege + NOT = { scope:actor = scope:ward.liege } #also don't show it twice if both wards' are actor's + } + guardian_remove_opinion_effect = { + GUARDIAN = scope:guardian + WARD = scope:ward_2 + WARD_LIEGE = scope:ward_2.liege + } + } + else_if = { + limit = { + exists = scope:ward_2 + } + hidden_effect = { #Else hide it + guardian_remove_opinion_effect = { + GUARDIAN = scope:guardian + WARD = scope:ward_2 + WARD_LIEGE = scope:ward_2.liege + } + } + } + + #Make the liege of the ward(s) insulted if actor is not the liege of the ward + if = { + limit = { + NOR = { + scope:ward.liege = scope:actor + scope:ward = scope:actor + } + } + scope:ward.liege = { + add_opinion = { + modifier = insulted_opinion + target = scope:actor + opinion = -15 + } + } + } + if = { + limit = { + exists = scope:ward_2 + NOR = { + scope:ward_2.liege = scope:actor + scope:ward_2.liege = scope:ward.liege + scope:ward_2 = scope:actor + } + } + scope:ward_2.liege = { + add_opinion = { + modifier = insulted_opinion + target = scope:actor + opinion = -15 + } + } + } + } +} diff --git a/common/character_interactions/00_modifiy_vassal_contract.txt b/common/character_interactions/00_modifiy_vassal_contract.txt index b494b36c..6d592907 100644 --- a/common/character_interactions/00_modifiy_vassal_contract.txt +++ b/common/character_interactions/00_modifiy_vassal_contract.txt @@ -20,7 +20,14 @@ vassal_contract_has_modifiable_obligations = yes } scope:actor = { - uses_roman_govt = no + trigger_if = { + limit = { + uses_roman_govt = yes + } + any_held_title = { + this = title:e_byzantium + } + } } } @@ -180,7 +187,14 @@ vassal_modify_vassal_contract_interaction = { vassal_contract_has_modifiable_obligations = yes } scope:recipient = { - uses_roman_govt = no + trigger_if = { + limit = { + uses_roman_govt = yes + } + any_held_title = { + this = title:e_byzantium + } + } } } @@ -279,10 +293,10 @@ ai_only_liege_modify_vassal_contract_interaction = { scope:actor = { is_ai = yes has_usable_hook = scope:recipient -uses_roman_govt = no + uses_roman_govt = no } scope:recipient = { -uses_roman_govt = no + uses_roman_govt = no NOT = { this = scope:actor } NOT = { has_strong_hook = scope:actor @@ -350,7 +364,7 @@ ai_only_vassal_modify_vassal_contract_interaction = { is_shown = { scope:actor = { -uses_roman_govt = no + uses_roman_govt = no is_ai = yes is_independent_ruler = no has_usable_hook = scope:recipient @@ -359,7 +373,7 @@ uses_roman_govt = no uses_roman_govt = no } scope:recipient = { -uses_roman_govt = no + uses_roman_govt = no NOT = { this = scope:actor } is_ruler = yes NOT = { diff --git a/common/character_interactions/ave_maria_roman_administration_interactions.txt b/common/character_interactions/ave_maria_roman_administration_interactions.txt index 50635a5c..9e231d29 100644 --- a/common/character_interactions/ave_maria_roman_administration_interactions.txt +++ b/common/character_interactions/ave_maria_roman_administration_interactions.txt @@ -444,8 +444,9 @@ roman_administration_name_junior_emperor = { NOT = { has_trait = junior_emperor } - NOT = { + NOR = { has_government = theocracy_government + has_government = feudal_government } } } @@ -728,7 +729,12 @@ roman_administration_fire_bureaucrat = { scope:recipient = { roman_administration_character_is_in_the_empire = yes highest_held_title_tier >= tier_duchy - NOT = { has_government = theocracy_government } + NOR = { + has_government = theocracy_government + has_government = feudal_government + has_government = clan_government + has_government = tribal_government + } } } @@ -989,7 +995,12 @@ roman_administration_replace_bureaucrat = { scope:recipient = { roman_administration_character_is_in_the_empire = yes highest_held_title_tier >= tier_duchy - NOT = { has_government = theocracy_government } + NOR = { + has_government = theocracy_government + has_government = feudal_government + has_government = clan_government + has_government = tribal_government + } } } diff --git a/common/council_positions/00_council_positions.txt b/common/council_positions/00_council_positions.txt index 93f6299c..bd693f16 100644 --- a/common/council_positions/00_council_positions.txt +++ b/common/council_positions/00_council_positions.txt @@ -4,10 +4,10 @@ name = councillor_chancellor valid_position = { - NOR = { - has_title = title:e_byzantium - has_title = title:e_roman_empire - } + # NOR = { + # has_title = title:e_byzantium + # has_title = title:e_roman_empire + # } } tooltip = game_concept_chancellor_desc @@ -51,10 +51,10 @@ councillor_steward = { skill = stewardship valid_position = { - NOR = { - has_title = title:e_byzantium - has_title = title:e_roman_empire - } + # NOR = { + # has_title = title:e_byzantium + # has_title = title:e_roman_empire + # } } name = councillor_steward @@ -100,10 +100,10 @@ councillor_marshal = { skill = martial valid_position = { - NOR = { - has_title = title:e_byzantium - has_title = title:e_roman_empire - } + # NOR = { + # has_title = title:e_byzantium + # has_title = title:e_roman_empire + # } } name = councillor_marshal @@ -144,10 +144,10 @@ councillor_spymaster = { skill = intrigue valid_position = { - NOR = { - has_title = title:e_byzantium - has_title = title:e_roman_empire - } + # NOR = { + # has_title = title:e_byzantium + # has_title = title:e_roman_empire + # } } name = councillor_spymaster @@ -192,10 +192,10 @@ councillor_court_chaplain = { auto_fill = yes valid_position = { - NOR = { - has_title = title:e_byzantium - has_title = title:e_roman_empire - } + # NOR = { + # has_title = title:e_byzantium + # has_title = title:e_roman_empire + # } } can_fire = { custom_description = { diff --git a/common/council_positions/ave_maria_roman_administration_council_positions.txt b/common/council_positions/ave_maria_roman_administration_council_positions.txt index 9777a084..d97d1212 100644 --- a/common/council_positions/ave_maria_roman_administration_council_positions.txt +++ b/common/council_positions/ave_maria_roman_administration_council_positions.txt @@ -15,302 +15,260 @@ ## VANILLA COUNCILLORS REPLACEMENT ## Chancellor -roman_councillor_drome = { - skill = diplomacy +# roman_councillor_drome = { +# skill = diplomacy - valid_position = { - OR = { - has_title = title:e_byzantium - has_title = title:e_roman_empire - } - } +# valid_position = { +# OR = { +# has_title = title:e_byzantium +# has_title = title:e_roman_empire +# } +# } - name = "Logothetes" +# name = "Logothetes" - tooltip = game_concept_chancellor_desc +# tooltip = game_concept_chancellor_desc - modifier = { - name = councillor_chancellor_modifier - fellow_vassal_opinion = 5 - monthly_diplomacy_lifestyle_xp_gain_mult = 0.05 - scale = council_scaled_by_liege_tier - } +# modifier = { +# name = councillor_chancellor_modifier +# fellow_vassal_opinion = 5 +# monthly_diplomacy_lifestyle_xp_gain_mult = 0.05 +# scale = council_scaled_by_liege_tier +# } - modifier = { - name = councillor_chancellor_modifier - monthly_prestige = 1 - scale = council_scaled_monthly_income - } +# modifier = { +# name = councillor_chancellor_modifier +# monthly_prestige = 1 +# scale = council_scaled_monthly_income +# } - council_owner_modifier = { - name = learn_on_the_job_modifier - diplomacy = 1 - scale = chancellor_learn_on_the_job_scale - } +# council_owner_modifier = { +# name = learn_on_the_job_modifier +# diplomacy = 1 +# scale = chancellor_learn_on_the_job_scale +# } - valid_character = { - exists = root.liege_or_court_owner - can_be_chancellor_trigger = { COURT_OWNER = root.liege_or_court_owner } - } +# valid_character = { +# exists = root.liege_or_court_owner +# can_be_chancellor_trigger = { COURT_OWNER = root.liege_or_court_owner } +# } - on_get_position = { - got_council_position_effect = yes - } +# on_get_position = { +# got_council_position_effect = yes +# } - on_fired_from_position = { - fired_from_council_position_effect = yes - } +# on_fired_from_position = { +# fired_from_council_position_effect = yes +# } - portrait_animation = chancellor -} -## Steward -roman_councillor_sakellarios= { - skill = stewardship +# portrait_animation = chancellor +# } +# ## Steward +# roman_councillor_sakellarios= { +# skill = stewardship - valid_position = { - OR = { - has_title = title:e_byzantium - has_title = title:e_roman_empire - } - } +# valid_position = { +# OR = { +# has_title = title:e_byzantium +# has_title = title:e_roman_empire +# } +# } - name = "Sakellarios" - tooltip = game_concept_steward_desc +# name = "Sakellarios" +# tooltip = game_concept_steward_desc - modifier = { - name = councillor_steward_modifier - monthly_income = 1 - scale = council_scaled_monthly_income - } +# modifier = { +# name = councillor_steward_modifier +# monthly_income = 1 +# scale = council_scaled_monthly_income +# } - modifier = { - name = councillor_steward_modifier - build_gold_cost = -0.05 - monthly_stewardship_lifestyle_xp_gain_mult = 0.05 - domain_tax_mult = 0.05 - scale = council_scaled_by_liege_tier - } +# modifier = { +# name = councillor_steward_modifier +# build_gold_cost = -0.05 +# monthly_stewardship_lifestyle_xp_gain_mult = 0.05 +# domain_tax_mult = 0.05 +# scale = council_scaled_by_liege_tier +# } - council_owner_modifier = { - name = learn_on_the_job_modifier - stewardship = 1 - scale = steward_learn_on_the_job_scale - } +# council_owner_modifier = { +# name = learn_on_the_job_modifier +# stewardship = 1 +# scale = steward_learn_on_the_job_scale +# } - valid_character = { - exists = root.liege_or_court_owner - can_be_steward_trigger = { COURT_OWNER = root.liege_or_court_owner } - } +# valid_character = { +# exists = root.liege_or_court_owner +# can_be_steward_trigger = { COURT_OWNER = root.liege_or_court_owner } +# } - on_get_position = { - got_council_position_effect = yes - } +# on_get_position = { +# got_council_position_effect = yes +# } - on_fired_from_position = { - fired_from_council_position_effect = yes - } +# on_fired_from_position = { +# fired_from_council_position_effect = yes +# } - portrait_animation = steward -} -## marshall -roman_councillor_domestikos = { - skill = martial +# portrait_animation = steward +# } +# ## marshall +# roman_councillor_domestikos = { +# skill = martial - valid_position = { - OR = { - has_title = title:e_byzantium - has_title = title:e_roman_empire - } - } +# valid_position = { +# OR = { +# has_title = title:e_byzantium +# has_title = title:e_roman_empire +# } +# } - name = "Domestikos" - tooltip = game_concept_marshal_desc - - modifier = { - name = councillor_marshal_modifier - prowess = 1 - army_maintenance_mult = -0.05 - monthly_martial_lifestyle_xp_gain_mult = 0.05 - levy_size = 0.05 - scale = council_scaled_by_liege_tier - } +# name = "Domestikos" +# tooltip = game_concept_marshal_desc + +# modifier = { +# name = councillor_marshal_modifier +# prowess = 1 +# army_maintenance_mult = -0.05 +# monthly_martial_lifestyle_xp_gain_mult = 0.05 +# levy_size = 0.05 +# scale = council_scaled_by_liege_tier +# } - council_owner_modifier = { - name = learn_on_the_job_modifier - martial = 1 - scale = marshal_learn_on_the_job_scale - } +# council_owner_modifier = { +# name = learn_on_the_job_modifier +# martial = 1 +# scale = marshal_learn_on_the_job_scale +# } - valid_character = { - exists = root.liege_or_court_owner - can_be_marshal_trigger = { COURT_OWNER = root.liege_or_court_owner } - } +# valid_character = { +# exists = root.liege_or_court_owner +# can_be_marshal_trigger = { COURT_OWNER = root.liege_or_court_owner } +# } - on_get_position = { - got_council_position_effect = yes - } +# on_get_position = { +# got_council_position_effect = yes +# } - on_fired_from_position = { - fired_from_council_position_effect = yes - } +# on_fired_from_position = { +# fired_from_council_position_effect = yes +# } - portrait_animation = marshal -} -## Spymaster -roman_councillor_kanikleios = { - skill = intrigue +# portrait_animation = marshal +# } +# ## Spymaster +# roman_councillor_kanikleios = { +# skill = intrigue - valid_position = { - OR = { - has_title = title:e_byzantium - has_title = title:e_roman_empire - } - } +# valid_position = { +# OR = { +# has_title = title:e_byzantium +# has_title = title:e_roman_empire +# } +# } - name = "Kanikleios" - tooltip = game_concept_spymaster_desc - - modifier = { - name = councillor_spymaster_modifier - hostile_scheme_power_add = 5 - owned_hostile_scheme_success_chance_add = 2 - monthly_intrigue_lifestyle_xp_gain_mult = 0.05 - dread_baseline_add = 10 - scale = council_scaled_by_liege_tier - } +# name = "Kanikleios" +# tooltip = game_concept_spymaster_desc + +# modifier = { +# name = councillor_spymaster_modifier +# hostile_scheme_power_add = 5 +# owned_hostile_scheme_success_chance_add = 2 +# monthly_intrigue_lifestyle_xp_gain_mult = 0.05 +# dread_baseline_add = 10 +# scale = council_scaled_by_liege_tier +# } - council_owner_modifier = { - name = learn_on_the_job_modifier - intrigue = 1 - scale = spymaster_learn_on_the_job_scale - } +# council_owner_modifier = { +# name = learn_on_the_job_modifier +# intrigue = 1 +# scale = spymaster_learn_on_the_job_scale +# } - valid_character = { - exists = root.liege_or_court_owner - can_be_spymaster_trigger = { COURT_OWNER = root.liege_or_court_owner } - NOT = { - has_government = theocracy_government - } - } +# valid_character = { +# exists = root.liege_or_court_owner +# can_be_spymaster_trigger = { COURT_OWNER = root.liege_or_court_owner } +# NOT = { +# has_government = theocracy_government +# } +# } - on_get_position = { - got_council_position_effect = yes - } +# on_get_position = { +# got_council_position_effect = yes +# } - on_fired_from_position = { - fired_from_council_position_effect = yes - } +# on_fired_from_position = { +# fired_from_council_position_effect = yes +# } - use_for_scheme_power = yes - use_for_scheme_resistance = yes +# use_for_scheme_power = yes +# use_for_scheme_resistance = yes - portrait_animation = spymaster -} -## Court Chaplain -roman_councillor_synkellos = { - skill = learning +# portrait_animation = spymaster +# } +# ## Court Chaplain +# roman_councillor_synkellos = { +# skill = learning - valid_position = { - OR = { - has_title = title:e_byzantium - has_title = title:e_roman_empire - } - } +# valid_position = { +# OR = { +# has_title = title:e_byzantium +# has_title = title:e_roman_empire +# } +# } - auto_fill = yes - can_fire = { - custom_description = { - text = "court_chaplain_cant_fire_doctrines" - faith = { - NOT = { - has_doctrine_parameter = clerical_appointment_fixed - } - } - } - } +# auto_fill = yes +# inherit = no - can_reassign = { - custom_description = { - text = "court_chaplain_cant_reassign_doctrines" - faith = { - has_doctrine_parameter = clerical_appointment_ruler - } - } - } - - can_change_once = { - faith = { - has_doctrine_parameter = clerical_appointment_fixed - } - } - - inherit = no - - councillor_cooldown_days = { - value = 0 - if = { - limit = { - faith = { - NOT = { - has_doctrine_parameter = clerical_appointment_fixed - } - } - } - add = 3650 - } - } - - name = "Synkellos" - - tooltip = { - first_valid = { - triggered_desc = { - trigger = { - scope:councillor_liege.faith = { has_doctrine = doctrine_theocracy_temporal } - } - desc = game_concept_realm_priest_desc - } - desc = game_concept_court_chaplain_desc - } - } - - modifier = { - name = councillor_court_chaplain_modifier - county_opinion_add = 5 - monthly_learning_lifestyle_xp_gain_mult = 0.05 - scale = council_scaled_by_liege_tier - } +# name = "Synkellos" + +# tooltip = { +# first_valid = { +# triggered_desc = { +# trigger = { +# scope:councillor_liege.faith = { has_doctrine = doctrine_theocracy_temporal } +# } +# desc = game_concept_realm_priest_desc +# } +# desc = game_concept_court_chaplain_desc +# } +# } - modifier = { - name = councillor_court_chaplain_modifier - monthly_piety = 1 - scale = council_scaled_monthly_income - } +# modifier = { +# name = councillor_court_chaplain_modifier +# county_opinion_add = 5 +# monthly_learning_lifestyle_xp_gain_mult = 0.05 +# scale = council_scaled_by_liege_tier +# } - council_owner_modifier = { - name = learn_on_the_job_modifier - learning = 1 - scale = court_chaplain_learn_on_the_job_scale - } +# modifier = { +# name = councillor_court_chaplain_modifier +# monthly_piety = 1 +# scale = council_scaled_monthly_income +# } - pool_character_config = pool_court_chaplain +# council_owner_modifier = { +# name = learn_on_the_job_modifier +# learning = 1 +# scale = court_chaplain_learn_on_the_job_scale +# } - valid_character = { - exists = root.liege_or_court_owner - is_landed = no - age >=16 - } +# valid_character = { +# exists = root.liege_or_court_owner +# is_ruler = no +# age >=16 +# } - on_get_position = { - got_council_position_effect = yes - } +# on_get_position = { +# got_council_position_effect = yes +# } - on_fired_from_position = { - fired_from_council_position_effect = yes - } +# on_fired_from_position = { +# fired_from_council_position_effect = yes +# } - portrait_animation = chaplain -} +# portrait_animation = chaplain +# } ## NEW COUNCILLORS @@ -353,135 +311,135 @@ roman_councillor_coemperor = { portrait_animation = personality_callous } -## First Sword bearer -roman_dignities_protospatharios = { - name = roman_dignities_protospatharios - tooltip = roman_dignities_protospatharios_desc +# ## First Sword bearer +# roman_dignities_protospatharios = { +# name = roman_dignities_protospatharios +# tooltip = roman_dignities_protospatharios_desc - modifier = { - name = roman_councillor_coemperor_modifier - monthly_prestige = 1 - scale = council_scaled_monthly_income - } +# modifier = { +# name = roman_councillor_coemperor_modifier +# monthly_prestige = 1 +# scale = council_scaled_monthly_income +# } - valid_position = { - OR = { - has_title = title:e_byzantium - has_title = title:e_roman_empire - } - } - valid_character = { - is_female = no - NOT = { - has_government = theocracy_government - } - } - on_get_position = { - got_council_position_effect = yes - } - on_fired_from_position = { - fired_from_council_position_effect = yes - } +# valid_position = { +# OR = { +# has_title = title:e_byzantium +# has_title = title:e_roman_empire +# } +# } +# valid_character = { +# is_female = no +# NOT = { +# has_government = theocracy_government +# } +# } +# on_get_position = { +# got_council_position_effect = yes +# } +# on_fired_from_position = { +# fired_from_council_position_effect = yes +# } - portrait_animation = marshal -} +# portrait_animation = marshal +# } -roman_dignities_patrikios = { - name = roman_dignities_patrikios - tooltip = roman_dignities_patrikios_desc - portrait_animation = personality_content +# roman_dignities_patrikios = { +# name = roman_dignities_patrikios +# tooltip = roman_dignities_patrikios_desc +# portrait_animation = personality_content - modifier = { - name = roman_councillor_coemperor_modifier - monthly_prestige = 1 - scale = council_scaled_monthly_income - } +# modifier = { +# name = roman_councillor_coemperor_modifier +# monthly_prestige = 1 +# scale = council_scaled_monthly_income +# } - valid_position = { - OR = { - has_title = title:e_byzantium - has_title = title:e_roman_empire - } - } - valid_character = { - is_female = no - NOT = { - has_government = theocracy_government - } - } - on_get_position = { - got_council_position_effect = yes - } - on_fired_from_position = { - fired_from_council_position_effect = yes - } -} +# valid_position = { +# OR = { +# has_title = title:e_byzantium +# has_title = title:e_roman_empire +# } +# } +# valid_character = { +# is_female = no +# NOT = { +# has_government = theocracy_government +# } +# } +# on_get_position = { +# got_council_position_effect = yes +# } +# on_fired_from_position = { +# fired_from_council_position_effect = yes +# } +# } -roman_dignities_anthypatos = { - name = roman_dignities_anthypatos - tooltip = roman_dignities_anthypatos_desc - portrait_animation = chancellor +# roman_dignities_anthypatos = { +# name = roman_dignities_anthypatos +# tooltip = roman_dignities_anthypatos_desc +# portrait_animation = chancellor - modifier = { - name = roman_councillor_coemperor_modifier - monthly_prestige = 1 - scale = council_scaled_monthly_income - } +# modifier = { +# name = roman_councillor_coemperor_modifier +# monthly_prestige = 1 +# scale = council_scaled_monthly_income +# } - valid_position = { - OR = { - has_title = title:e_byzantium - has_title = title:e_roman_empire - } - } - valid_character = { - is_female = no - NOT = { - has_government = theocracy_government - } - } - on_get_position = { - got_council_position_effect = yes - } - on_fired_from_position = { - fired_from_council_position_effect = yes - } -} +# valid_position = { +# OR = { +# has_title = title:e_byzantium +# has_title = title:e_roman_empire +# } +# } +# valid_character = { +# is_female = no +# NOT = { +# has_government = theocracy_government +# } +# } +# on_get_position = { +# got_council_position_effect = yes +# } +# on_fired_from_position = { +# fired_from_council_position_effect = yes +# } +# } -roman_dignities_magistros = { - name = roman_dignities_magistros - tooltip = roman_dignities_magistros_desc - portrait_animation = war_defender +# roman_dignities_magistros = { +# name = roman_dignities_magistros +# tooltip = roman_dignities_magistros_desc +# portrait_animation = war_defender - modifier = { - name = roman_councillor_coemperor_modifier - monthly_prestige = 1 - scale = council_scaled_monthly_income - } +# modifier = { +# name = roman_councillor_coemperor_modifier +# monthly_prestige = 1 +# scale = council_scaled_monthly_income +# } - valid_position = { - OR = { - has_title = title:e_byzantium - has_title = title:e_roman_empire - } - } - valid_character = { - is_female = no - NOT = { - has_government = theocracy_government - } - } - on_get_position = { - got_council_position_effect = yes - } - on_fired_from_position = { - fired_from_council_position_effect = yes - } -} +# valid_position = { +# OR = { +# has_title = title:e_byzantium +# has_title = title:e_roman_empire +# } +# } +# valid_character = { +# is_female = no +# NOT = { +# has_government = theocracy_government +# } +# } +# on_get_position = { +# got_council_position_effect = yes +# } +# on_fired_from_position = { +# fired_from_council_position_effect = yes +# } +# } ## Removed to make space to co emperor # roman_dignities_vestarches = { @@ -505,34 +463,34 @@ roman_dignities_magistros = { # } # } -roman_dignities_proedros = { - name = roman_dignities_proedros - tooltip = roman_dignities_proedros_desc - portrait_animation = flirtation +# roman_dignities_proedros = { +# name = roman_dignities_proedros +# tooltip = roman_dignities_proedros_desc +# portrait_animation = flirtation - modifier = { - name = roman_councillor_coemperor_modifier - monthly_prestige = 1 - scale = council_scaled_monthly_income - } +# modifier = { +# name = roman_councillor_coemperor_modifier +# monthly_prestige = 1 +# scale = council_scaled_monthly_income +# } - valid_position = { - OR = { - has_title = title:e_byzantium - has_title = title:e_roman_empire - } - } - valid_character = { - is_female = no - NOT = { - has_government = theocracy_government - } - } - on_get_position = { - got_council_position_effect = yes - } - on_fired_from_position = { - fired_from_council_position_effect = yes - } -} +# valid_position = { +# OR = { +# has_title = title:e_byzantium +# has_title = title:e_roman_empire +# } +# } +# valid_character = { +# is_female = no +# NOT = { +# has_government = theocracy_government +# } +# } +# on_get_position = { +# got_council_position_effect = yes +# } +# on_fired_from_position = { +# fired_from_council_position_effect = yes +# } +# } diff --git a/common/decisions/ave_maria_roman_administration_major_decisions.txt b/common/decisions/ave_maria_roman_administration_major_decisions.txt index 425b18be..be0e795f 100644 --- a/common/decisions/ave_maria_roman_administration_major_decisions.txt +++ b/common/decisions/ave_maria_roman_administration_major_decisions.txt @@ -80,11 +80,9 @@ ave_maria_roman_administration_junior_emperor_coronation_decision = { has_title = title:e_roman_empire } has_trait = basileus - exists = cp:roman_councillor_coemperor - cp:roman_councillor_coemperor = { - NOT = { - has_trait = junior_emperor - } + any_relation = { + type = junior_emperor + NOT = { has_trait = junior_emperor } } NOT = { has_character_flag = imperial_coronation_started_preparations @@ -99,11 +97,9 @@ ave_maria_roman_administration_junior_emperor_coronation_decision = { has_title = title:e_roman_empire } has_trait = basileus - exists = cp:roman_councillor_coemperor - cp:roman_councillor_coemperor = { - NOT = { - has_trait = junior_emperor - } + any_relation = { + type = junior_emperor + NOT = { has_trait = junior_emperor } } NOT = { has_character_flag = imperial_coronation_started_preparations @@ -234,4 +230,110 @@ ave_maria_roman_administration_imperial_expedition = { trigger_event = ave_maria_roman_administration_imperial_expedition_events.0001 } } +} + +## Play a game of Tzykanion +ave_maria_roman_administration_tzykanion_game = { + picture = "gfx/interface/illustrations/decisions/z_ave_maria_decision_tzykanion_game.dds" + desc = ave_maria_roman_administration_tzykanion_game_desc + selection_tooltip = ave_maria_roman_administration_tzykanion_game_tooltip + ai_check_interval = 60 + + cost = { + gold = 25 + } + + cooldown = { days = 180 } + + is_shown = { + is_ruler = yes + highest_held_title_tier > tier_barony + has_culture_group = culture_group:byzantine_group + is_female = no + age < 50 + age >= 16 + } + + is_valid_showing_failures_only = { + is_available_adult = yes + } + + effect = { + custom_tooltip = ave_maria_roman_administration_tzykanion_game + + #Stress loss + if = { + limit = { + has_trait = lazy + } + custom_tooltip = ave_maria_roman_administration_tzykanion_game_lazy + } + else = { + stress_impact = { + base = hunt_stress_loss_value + + athletic = activity_stress_loss_impact + + gregarious = activity_stress_loss_impact + lively = activity_stress_loss_impact + sociable = activity_stress_loss_impact + talkative = activity_stress_loss_impact + cheerful = activity_stress_loss_impact + + brave = activity_stress_loss_impact + tough = activity_stress_loss_impact + independent = activity_stress_loss_impact + selfassured = activity_stress_loss_impact + stable = activity_stress_loss_impact + + } + } + + custom_tooltip = ave_maria_roman_administration_tzykanion_game_prestige + + hidden_effect = { + capital_barony = { + title_province = { + spawn_activity = { + type = activity_tzykanion + owner = root + } + } + } + } + } + + ai_potential = { + short_term_gold > standard_activity_cost + } + + ai_will_do = { + base = 70 + + ai_value_modifier = { + ai_energy = 1 + ai_greed = -0.5 + ai_compassion = -0.5 + } + + modifier = { + add = 10 + has_trait_rank = { + trait = education_martial + rank > 0 + } + } + modifier = { + add = 10 + has_trait_rank = { + trait = education_martial + rank > 2 + } + } + + modifier = { + add = 35 + stress > low_stress + } + } } \ No newline at end of file diff --git a/common/event_backgrounds/ave_maria_event_backgrounds.txt b/common/event_backgrounds/ave_maria_event_backgrounds.txt index a64d4889..2a264435 100644 --- a/common/event_backgrounds/ave_maria_event_backgrounds.txt +++ b/common/event_backgrounds/ave_maria_event_backgrounds.txt @@ -245,7 +245,13 @@ ave_maria_hippodrome_2 = { } } - +ave_maria_tzykanion_field = { + background = { + reference = "gfx/interface/illustrations/event_scenes/z_ave_maria_tzykanion_field.dds" + environment = "environment_event_market_west" + ambience = "event:/SFX/Events/Backgrounds/town_market_middleeastern_day" + } +} diff --git a/common/focuses/ave_maria_roman_administration_focuses.txt b/common/focuses/ave_maria_roman_administration_focuses.txt new file mode 100644 index 00000000..758adfea --- /dev/null +++ b/common/focuses/ave_maria_roman_administration_focuses.txt @@ -0,0 +1,67 @@ +basileus_lifestyle_rulership_focus = { + lifestyle = basileus_lifestyle + + desc = { + desc = basileus_lifestyle_rulership_focus_desc + desc = line_break + } + modifier = { + diplomacy = 1 + stewardship = 2 + monthly_prestige = 1 + } + + auto_selection_weight = { + value = 11 + + } + + focus_id = 15 +} + +basileus_lifestyle_military_focus = { + lifestyle = basileus_lifestyle + + desc = { + desc = basileus_lifestyle_military_focus_desc + desc = line_break + } + + modifier = { + martial = 3 + advantage = 5 + prowess = 3 + } + + + + auto_selection_weight = { + value = 11 + + + } + + focus_id = 16 +} + +basileus_lifestyle_scholarship_focus = { + lifestyle = basileus_lifestyle + + desc = { + desc = basileus_lifestyle_scholarship_focus_desc + desc = line_break + } + + modifier = { + stewardship = 1 + learning = 1 + cultural_head_fascination_add = 5 + monthly_piety = 0.5 + } + + auto_selection_weight = { + value = 11 + } + + focus_id = 17 +} \ No newline at end of file diff --git a/common/lifestyle_perks/_lifestyle_perks.info b/common/lifestyle_perks/_lifestyle_perks.info new file mode 100644 index 00000000..5d8191f1 --- /dev/null +++ b/common/lifestyle_perks/_lifestyle_perks.info @@ -0,0 +1,31 @@ +Perks belong to a given lifestyle. Lifestyle perk points can be used to unlock them + +key = { + name = { ... } # Dynamic description. If not set, generated loc key will be used. Character scope + + tree = tree_name # Which tree does it belong to? Only used for GUI layout + position = { x y } # What is its positioning within the tree? Only used for GUI layout. Multiplied with PERK_X_OFFSET and PERK_Y_OFFSET + + icon = some_key # What key to use for the icon; if not defined, will use the key of the perk + + lifestyle = some_key # Which lifestyle the perk belongs to + + parent = some_key # Parent perk. Needed to unlock this perk + parent = some_key # Multiple parents can be defined + + can_be_picked = { ... } # Trigger in character scope + can_be_auto_selected = { ... } # Trigger in character scope. Used in addition to can_be_picked and the parent perks to determine if a character can get a given perk on auto-selection (campaign start, and when becoming landed) + effect = { ... } # Run on unlock. Character scope + character_modifier = { ... }# Applied to characters with the perk + + doctrine_character_modifier = { # Additional modifier applied to characters with the perk and their faith having the specified doctrine + doctrine = ... + ... + } + + auto_selection_weight = { ... } # Script value for weight for auto-selection. Defaults to 1000 +} + +Generated loc keys: +key + _name + diff --git a/common/lifestyles/ave_maria_roman_administration_lifestyles.txt b/common/lifestyles/ave_maria_roman_administration_lifestyles.txt new file mode 100644 index 00000000..cdb99f8a --- /dev/null +++ b/common/lifestyles/ave_maria_roman_administration_lifestyles.txt @@ -0,0 +1,9 @@ +basileus_lifestyle = { + is_valid = { + any_held_title = { + this = title:e_byzantium + } + } + xp_per_level = 1000 + base_xp_gain = 1 +} \ No newline at end of file diff --git a/common/on_action/ave_maria_on_actions/activities/tzykanion_on_actions.txt b/common/on_action/ave_maria_on_actions/activities/tzykanion_on_actions.txt new file mode 100644 index 00000000..adf5a8b0 --- /dev/null +++ b/common/on_action/ave_maria_on_actions/activities/tzykanion_on_actions.txt @@ -0,0 +1,10 @@ +# On actions for the Feast activity + + +# Picks out a start event +tzykanion_start_events = { + events = { + ave_maria_roman_administration_sports_events.2001 + ave_maria_roman_administration_sports_events.2501 + } +} \ No newline at end of file diff --git a/common/on_action/war_on_actions.txt b/common/on_action/war_on_actions.txt index ed529ac9..f57c4e5d 100644 --- a/common/on_action/war_on_actions.txt +++ b/common/on_action/war_on_actions.txt @@ -406,6 +406,9 @@ on_war_won_attacker = { has_government = roman_administration_kouratoreia_government } is_independent_ruler = yes + NOT = { + this = title:e_byzantium.holder + } } change_government = roman_administration_government add_realm_law = ave_maria_roman_administration_imperial @@ -422,10 +425,16 @@ on_war_won_attacker = { } # remove_variable = roman_administration_imperial_expedition remove_character_flag = roman_administration_imperial_expedition - trigger_event = { - id = ave_maria_roman_administration_imperial_expedition_events.0003 - days = 1 - } + if = { + limit = { + this = scope:attacker + } + trigger_event = { + id = ave_maria_roman_administration_imperial_expedition_events.0003 + days = 1 + } + } + } } } @@ -445,6 +454,9 @@ on_war_won_attacker = { has_government = roman_administration_sekreton_government } is_independent_ruler = yes + NOT = { + this = title:e_byzantium.holder + } } change_government = roman_administration_government every_vassal = { @@ -593,10 +605,19 @@ on_war_won_defender = { } # remove_variable = roman_administration_imperial_expedition remove_character_flag = roman_administration_imperial_expedition - trigger_event = { - id = ave_maria_roman_administration_imperial_expedition_events.0003 - days = 1 - } + if = { + limit = { + this = scope:defender + } + trigger_event = { + id = ave_maria_roman_administration_imperial_expedition_events.0003 + days = 1 + } + } + # trigger_event = { + # id = ave_maria_roman_administration_imperial_expedition_events.0003 + # days = 1 + # } } } } diff --git a/common/on_action/yearly_on_actions.txt b/common/on_action/yearly_on_actions.txt new file mode 100644 index 00000000..b78c2824 --- /dev/null +++ b/common/on_action/yearly_on_actions.txt @@ -0,0 +1,544 @@ +# Called every Jan 1st +# Root does not exist +yearly_global_pulse = { + effect = { + + ##KJH Monthly pulse + trigger_event = { id = monthly_pulse.01 } + trigger_event = { id = monthly_pulse.02 days = 31 } + trigger_event = { id = monthly_pulse.03 days = 59 } + trigger_event = { id = monthly_pulse.04 days = 90 } + trigger_event = { id = monthly_pulse.05 days = 120 } + trigger_event = { id = monthly_pulse.06 days = 151 } + trigger_event = { id = monthly_pulse.07 days = 181 } + trigger_event = { id = monthly_pulse.08 days = 212 } + trigger_event = { id = monthly_pulse.09 days = 243 } + trigger_event = { id = monthly_pulse.10 days = 273 } + trigger_event = { id = monthly_pulse.11 days = 304 } + trigger_event = { id = monthly_pulse.12 days = 334 } + + trigger_event = { id = monthly_pulse.13 } + trigger_event = { id = monthly_pulse.13 days = 31 } + trigger_event = { id = monthly_pulse.13 days = 59 } + trigger_event = { id = monthly_pulse.13 days = 90 } + trigger_event = { id = monthly_pulse.13 days = 120 } + trigger_event = { id = monthly_pulse.13 days = 151 } + trigger_event = { id = monthly_pulse.13 days = 181 } + trigger_event = { id = monthly_pulse.13 days = 212 } + trigger_event = { id = monthly_pulse.13 days = 243 } + trigger_event = { id = monthly_pulse.13 days = 273 } + trigger_event = { id = monthly_pulse.13 days = 304 } + trigger_event = { id = monthly_pulse.13 days = 334 } + + # Visigothic culture split + if = { + limit = { + current_date <= 920.1.1 # No need to check this in later starts + NOT = { has_global_variable = visigothic_culture_split } + current_date >= 850.1.1 + } + random = { + chance = 0 # No chance the first year of play if starting in 867 + modifier = { + add = 10 + current_date >= 868.1.1 + } + modifier = { + add = 10 # 20% chance + current_date >= 875.1.1 + } + modifier = { + add = 10 # 30% chance + current_date >= 890.1.1 + } + set_global_variable = { + name = visigothic_culture_split + value = yes + } + trigger_event = { + id = global_culture.0001 + days = { 60 300 } + } + } + } + # Norse culture split. + if = { + limit = { + current_date < 990.1.1 + NOT = { has_global_variable = norse_culture_split } + current_date >= 950.1.1 + } + random = { + chance = 10 + modifier = { + add = 20 # 30% chance + current_date >= 960.1.1 + } + modifier = { + add = 30 # 60% chance + current_date >= 970.1.1 + } + modifier = { + add = 40 # 100% chance + current_date >= 980.1.1 + } + set_global_variable = { + name = norse_culture_split + value = yes + } + trigger_event = { + id = global_culture.0011 + days = { 60 300 } + } + } + } + # Suebi -> Portugese Culture Shift + if = { + limit = { + current_date <= 1000.1.1 # No need to check this in later starts + NOT = { has_global_variable = portuguese_culture_creation } + current_date >= 900.1.1 + } + random = { + chance = 10 + modifier = { + add = 20 # 20% chance + current_date >= 925.1.1 + } + modifier = { + add = 30 # 30% chance + current_date >= 950.1.1 + } + modifier = { + add = 40 # 100% chance + current_date >= 975.1.1 + } + set_global_variable = { + name = portuguese_culture_creation + value = yes + } + trigger_event = { + id = global_culture.0021 + days = { 60 300 } + } + } + } + # Anglo-Saxon -> Scottish Culture Shift + if = { + limit = { + current_date <= 950.1.1 # No need to check this in later starts + NOT = { has_global_variable = scottish_culture_creation } + current_date >= 850.1.1 + } + random = { + chance = 0 # No chance the first year of play if starting in 867 + modifier = { + add = 10 + current_date >= 868.1.1 + } + modifier = { + add = 10 # 20% chance + current_date >= 875.1.1 + } + modifier = { + add = 10 # 30% chance + current_date >= 890.1.1 + } + set_global_variable = { + name = scottish_culture_creation + value = yes + } + trigger_event = { + id = global_culture.0031 + days = { 60 300 } + } + } + } + # Mongol Invasion + if = { + limit = { + has_game_rule = never_mongol_invasion + } + } + else_if = { + limit = { + has_game_rule = random_mongol_invasion + NOT = { has_global_variable = mongols_have_appeared} + } + random = { + chance = temujin_appearance_base_chance + modifier = { + factor = 0.25 + current_date < 1180.1.1 + } + modifier = { + add = 3 + current_date > 1200.1.1 + } + modifier = { + add = 5 + current_date > 1220.1.1 + } + modifier = { + add = 5 + current_date > 1235.1.1 + } + set_global_variable = { + name = mongols_have_appeared + value = yes + } + debug_log = "Attempting to spawn mongol invasion within 240 days" + trigger_event = { + id = mongol_invasion.0001 + days = { 2 240 } + } + } + } + else = { + if = { + limit = { + current_date > 1180.1.1 + current_date < 1250.1.1 + NOT = { has_global_variable = mongols_have_appeared } + } + debug_log = "Checking for chance of spawning mongols under historical settings" + random = { + chance = temujin_appearance_base_chance + modifier = { + add = 9 + current_date > 1200.1.1 + } + modifier = { + add = 10 + current_date > 1220.1.1 + } + modifier = { + add = 20 + current_date > 1235.1.1 + } + set_global_variable = { + name = mongols_have_appeared + value = yes + } + debug_log = "Attempting to spawn mongol invasion within 240 days" + trigger_event = { + id = mongol_invasion.0001 + days = { 2 240 } + } + } + } + } + # Almohad Invasion + if = { + limit = { + current_date >= 1110.1.1 + current_date < 1150.1.1 + NOT = { has_global_variable = spawned_almohads } + } + random = { + chance = almohad_appearance_base_chance + modifier = { + add = 3 + current_date >= 1130.1.1 + } + modifier = { + add = 3 + current_date >= 1140.1.1 + } + debug_log = "Attempting to spawn Almohads within 240 days" + trigger_event = { + id = almohad.0001 + days = { 2 240 } + } + } + } + } +} + +# Called from code once a year for "playable" (count+) characters. +# Root is the character +yearly_playable_pulse = { + events = { + adultery.0001 #Suspected spouse/soulmate of cheating (increased chance when there is a lover, but can also trigger otherwise) + health.3010 #Invalidate court physician + + coa.1 # Switch to another coat of arms if appropriate + } + on_actions = { + ai_character_pulse + delay = { days = 75 } + + pagan_conversion_pulse + } +} + +# Called from code once every three years for "playable" (count+) characters. +# Root is the character +three_year_playable_pulse = { + random_events = { + 800 = 0 + 200 = global_culture.3011 + 600 = global_culture.3012 + } +} + +# Called from code once every five years for "playable" (count+) characters. +# Root is the character +five_year_playable_pulse = { + events = { + courtier_guest_management.3001 # Courtiers and guests getting relationships & secrets + game_rule.1 # De Jure Requirement Game Rule + } +} + +# Called from code once a quarter for "playable" (count+) characters. +# Root is the character +# scope:quarter is which quarter it's for, from 1 to 4. Note that scope:quarter = 1 isn't necessarily in Q1 by calendar time +quarterly_playable_pulse = { + on_actions = { + realm_maintenance_quarterly_pulse + relation_upgrade_quarterly_pulse + #Event pools + stewardship_lifestyle_progress_pulse + intrigue_lifestyle_progress_pulse + diplomacy_lifestyle_progress_pulse + martial_lifestyle_progress_pulse + learning_lifestyle_progress_pulse + #Relation pulses are spread out across the four quarterly pulses a year + lover_quarterly_pulse + friendship_quarterly_pulse + rival_quarterly_pulse + mentor_student_quarterly_pulse + } +} + +# Called from code once a year for all "playable" characters, at a random point that year (individually for each character). Different time from the random_yearly_everyone_pulse (coincides by random 1 time out of 365) +# Root is the character +random_yearly_playable_pulse = { + trigger = { + basic_is_valid_for_yearly_events_trigger = yes + } + random_on_action = { + chance_of_no_event = { + value = 0 + if = { + limit = { + is_ai = yes + highest_held_title_tier < tier_duchy + } + add = 75 # AI counts aren't particularly important + } + } + 5 = on_yearly_events + 1 = ongoing_trait_events + 1 = friendship_ongoing + 1 = rivalry_ongoing + 1 = vassal_ongoing + 1 = bishop_ongoing + 1 = spouse_ongoing + 1 = parent_ongoing + 1 = lover_ongoing + 1 = lover_ongoing_distance + 1 = secrets_ongoing + } +} + +# Called from code once a year for all characters, at a random point that year (individually for each character) +# Root is the character +random_yearly_everyone_pulse = { + on_actions = { + yearly_health_pulse + stress_pulse + prison_maintenance_pulse + } + random_on_action = { + chance_of_no_event = { + value = 95 + } + 1 = assign_trait_events + } + events = { + holy_order.0206 #To increment the years passed since loan + marriage_interaction.0007 #One of the betrothed became part of clergy that doesn't allow marriage + } + random_events = { + 500 = 0 + 100 = holy_order.0202 #Holy order demands payment + } +} + +# Called from code once every five years for all characters. +# Root is the character +five_year_everyone_pulse = { + on_actions = { + disease_outbreak_pulse # moved from health_on_actions.txt + } + events = { + murder_scheme_maintenance.1 # Murder schemes for the AI, including unlanded characters + } +} + +# Called from code once every 3 years for pool characters +# root = the character +three_year_pool_pulse = { + trigger = { + is_pool_character = yes # Can cease to be in the pool between it queuing and executing + } + events = { + courtier_guest_management.2001 #"Develops" the character and gives those without location a location + } +} + +#Only triggered if you actually have prisoners +prison_maintenance_pulse = { + trigger = { + any_prisoner = { count >= 1 } + } + on_actions = { + #Set up quarterly pulses + delay = { days = 45 } + quarterly_prison_maintenance_pulse + delay = { days = 135 } + quarterly_prison_maintenance_pulse + delay = { days = 225 } + quarterly_prison_maintenance_pulse + delay = { days = 315 } + quarterly_prison_maintenance_pulse + } +} + + +#Pulse for various AI stuff +ai_character_pulse = { + trigger = { + is_ai = yes + } + random_events = { + chance_to_happen = 25 + 500 = 0 + 100 = learn_commander_trait.0001 + 100 = holy_order.0100 #Give pilgrim trait to holy order members + } +} + + +on_yearly_events = { + random_events = { + chance_to_happen = 25 + 200 = 0 + + 50 = yearly.0001 #Skill Tutoring + 100 = yearly.0002 #Indiscreet Councillor + 5 = yearly.0003 #Forbidden Love + 25 = yearly.0011 #Comet Sighted! + + 75 = yearly.1001 #Someone else's spouse makes a move at you + 50 = yearly.1010 #Person you care about is abducted by rival + 10 = yearly.1020 #High-up ruler wants you to deal with pesky enemy + 100 = yearly.1030 #Someone you have hooked offers up other character's secret + 50 = yearly.1040 #Courtier is hiding a letter - surprise or secret? + 100 = yearly.1050 #Heir fancies themselves a duelist + 100 = yearly.1060 #The oldest joke in the book + 100 = yearly.1070 #Someone is your potential soulmate + 100 = yearly.1080 #You are being paranoid + 100 = yearly.1090 #Foreign guests + + 80 = yearly.3001 #Dedication to Loyalty + 100 = yearly.3011 #An Impression Twice Made + 100 = yearly.3021 #On Their Deathbed + 100 = yearly.3031 #Getting Ahead + 50 = yearly.3040 #A Good FaithPracticioner + 100 = yearly.3041 #Chafing Under Secular Laws + 100 = yearly.3051 #By Right + 20 = yearly.3061 #Cagots + 1 = yearly.3071 #A terrible nightmare + 2 = party_baron.0001 # Start the Party Baron story cycle + + 100 = yearly.4001 #A powerful vassal has angered neighboring ruler + 100 = yearly.4011 #Heir is spending a lot of time with one of your powerful vassals + 5 = yearly.4021 #Mamaaaa, just killed a child + 7 = yearly.4031 #Who keeps leaving dead bodies all around the castle?! + 10 = yearly.4051 #Get a gift from a neighboring ruler (triggered here so you can't know for sure if someone has a scheme towards you) + + 50 = yearly.5001 #Catching Lover and Spouse fighting. + 50 = yearly.5010 #Vassal shows compassion to stressed/sick ruler, incurs in the jealousy of another vassal + 50 = yearly.5020 #Councilor offers to teach heir + 50 = yearly.5030 #Powerful Vassal offers to reveal secret of other Powerful Vassal to liege. + 50 = yearly.5040 #Two unimportant courtiers caught talking about powerful vassal. + 50 = yearly.5050 #Spouse feels slighted by courtier. + + 10 = stress_trait_coping_decisions.2002 #Your stuff got stolen by a person in a brothel! + + #'Nice' events (positive effects) + 100 = yearly.8000 # Vassal offers liege a gift + 100 = yearly.8100 # The peasantry of a Domain province gives you a gift + 100 = yearly.8200 # Your realm priest offers you part of a large donation + 100 = yearly.8300 # A group of vassals collectively wish to contribute to your war effort + 10 = yearly.8400 # Discover a guest's Deviant secret (Strong Hook), and get the potential to send them to a rival's court + 50 = yearly.8500 # Your Head of Faith sends you a gift if you're fighting heathens + + #Ai value events + 100 = trait_specific_ongoing.2010 # Positive zeal: which god/saint is talking to me? + 100 = witch.4001 # Negative zeal: annoying clergy + + #Adultery events + 50 = adultery.2001 #Is the father suspicious of child or not? + 10 = adultery.3001 #Mother tells child the secret about them + + # Stress Events + 100 = stress_trait_ongoing.0501 # A relaxing evening with some hashish cakes. + 100 = stress_trait_ongoing.0506 # Self-medicating pain away with hashish. + 100 = stress_trait_ongoing.0511 # An elderly person laments the follies of hashish-consuming youth. + 100 = stress_trait_ongoing.0516 # You zone out whilst eating hashish in an important meeting. + 100 = stress_trait_ongoing.1501 # Rake fantasizes about courtier. + 100 = stress_trait_ongoing.4501 # Comfort Eater runs out of favorite food. + 100 = stress_trait_ongoing.4502 # Cannibal needs to satisfy their craving! + 100 = stress_trait_ongoing.5001 # Inappetetic has a important character prepare a feast for them. + + #Elephant events for India + 100 = yearly.9020 # A Mighty Elephant + + # Tribal events + 100 = tribal.1101 #Holmgang with a rival + 100 = tribal.1201 #Horse Racing + 100 = tribal.1301 #Crocodile Encounter + 100 = tribal.1303 #Irrigate Oasis + + #Clan events + 100 = clan.1001 #Powerful vassal requests marriage + 100 = clan.1011 #A vassal asks for a perk + 100 = clan.1101 #Vassal Resents Nepotism + 100 = clan.1201 #Culture seeks Representation + + #Muslim-specific events (mostly about Islamic centers of learning) + 100 = yearly.4061 #A wise man visits your court + 100 = yearly.4071 #You're very educated! + 100 = yearly.4081 #Sponsor the translation of a book from Greek + 100 = yearly.4091 #Your ward and you visit scholars + + # Saharan regional flavour events. + ## Marginally bumped some weightings for regional effect. + 200 = yearly_saharan.0001 # An organised faith's merchants try to convert a pagan county in your domain. + 200 = yearly_saharan.0021 # Desert nomads wish to move to one of your non-nomadic Saharan counties. + 100 = yearly_saharan.0031 # Local slave raids intensify (aggressor). + 100 = yearly_saharan.0032 # Local slave raids intensify (defender). + + # Persion regional flavor events + 200 = yearly_persian.1001 # Nowruz, or Persian New Year + 200 = yearly_persian.1101 # Shu'ubiyya, or Persian Nationalism (From the foreign side) + + # Varangian Guard + 400 = varangian.0001 # A Courtier wants to join the Varangian Guard + + #Pet story cycles + 10 = pet_animal.5001 # Rival has cat... + 10 = pet_animal.5002 # Rival has dog... + + #Holy Order + 50 = holy_order.2001 # Child wishes to join Holy Order + 50 = holy_order.2002 # Sibling wants to join a Holy Order + 50 = holy_order.2003 # Holy Order suggests you send them a child + 50 = holy_order.2004 # Child returns to pick up the mantle + 50 = holy_order.2005 # A - Possibly Undesirable - Child Returns Home + } +} \ No newline at end of file diff --git a/common/scripted_effects/00_almohad_invasion_effects.txt b/common/scripted_effects/00_almohad_invasion_effects.txt index f2f37a9f..e78fe77f 100644 --- a/common/scripted_effects/00_almohad_invasion_effects.txt +++ b/common/scripted_effects/00_almohad_invasion_effects.txt @@ -105,6 +105,7 @@ create_almohads_effect = { location = scope:almohad_county.title_province dynasty_house = house_tumert save_scope_as = ibn_tumart + after_creation = { add_random_hexaco_personality_trait = { WHO = this } } } faith:masmudi = { change_fervor = 50 @@ -143,6 +144,7 @@ create_almohads_effect = { employer = scope:ibn_tumart dynasty_house = house_almohad save_scope_as = al_mumin + after_creation = { add_random_hexaco_personality_trait = { WHO = this } } } scope:al_mumin = { add_pressed_claim = title:k_maghreb diff --git a/common/scripted_effects/00_courtier_guest_management_effects.txt b/common/scripted_effects/00_courtier_guest_management_effects.txt new file mode 100644 index 00000000..99e64899 --- /dev/null +++ b/common/scripted_effects/00_courtier_guest_management_effects.txt @@ -0,0 +1,1051 @@ +### +#fallback_move_to_pool_effect +#select_and_move_to_pool_effect - Use this to move courtiers/guests to pool + + +fallback_move_to_pool_effect = { + save_temporary_scope_as = mover + + if = { + limit = { exists = host } + set_variable = { + name = last_visited_ruler + value = this.host + days = 1825 + } + } + else = { #I.e. if we're in the pool + set_variable = { + name = last_visited_ruler + value = dummy_female #Because you must have a character value to compare it with another + days = 1825 + } + } + + if = { + limit = { + any_independent_ruler = { + exists = capital_province + } + } + random_independent_ruler = { + limit = { + exists = capital_province + capital_province = { local_pool_is_full_trigger = no } + OR = { + has_same_culture_group_as = scope:mover + faith = scope:mover.faith + } + faith = { + faith_hostility_level = { + target = scope:mover.faith + value < faith_evil_level + } + } + NOT = { this = scope:mover.host } + } + alternative_limit = { + exists = capital_province + NOT = { this = scope:mover.host } + } + alternative_limit = { exists = capital_province } + capital_province = { save_scope_as = destination } + } + } + else = { + host.capital_province = { save_scope_as = destination } + } + + every_traveling_family_member = { + limit = { + NOT = { is_in_pool_at = scope:destination } + } + move_to_pool_at = scope:destination + } +} + + +select_and_move_to_pool_effect = { + save_temporary_scope_as = mover + ###TOOLTIP FOR HOST### + show_as_tooltip = { + host = { + remove_courtier_or_guest = scope:mover + } + } + hidden_effect = { + ###CLAIMANT HANDLING### + if = { + limit = { any_claim = { tier <= tier_kingdom } } + random = { + chance = 20 + + every_traveling_family_member = { + add_to_temporary_list = claimant_family + } + + #Player if possible + random_player = { + limit = { + save_temporary_scope_as = player + scope:mover = { any_claim = { useful_courtier_or_guest_claim_trigger = { RULER = scope:player } } } + any_in_list = { + list = claimant_family + count = all + guest_allowed_to_arrive_trigger = { HOST = scope:player } + } + exists = capital_province + } + capital_province = { save_scope_as = destination } + } + + #Otherwise some independent ruler + if = { + limit = { NOT = { exists = scope:destination } } + random_independent_ruler = { + limit = { + save_temporary_scope_as = independent_ruler + scope:mover = { any_claim = { useful_courtier_or_guest_claim_trigger = { RULER = scope:independent_ruler } } } + any_in_list = { + list = claimant_family + count = all + guest_allowed_to_arrive_trigger = { HOST = scope:independent_ruler } + } + exists = capital_province + } + capital_province = { save_scope_as = destination } + } + } + } + } + + if = { + limit = { NOT = { exists = scope:destination } } + + ###PICK THE NEW LOCATION### + random_list = { + #Close or extended family + 5 = { + trigger = { any_close_or_extended_family_member = { is_visitable_relation_trigger = { CHARACTER = scope:mover } } } + random_close_or_extended_family_member = { + limit = { is_visitable_relation_trigger = { CHARACTER = scope:mover } } + capital_province = { save_scope_as = destination } + } + } + #Other dynasty members + 5 = { + trigger = { + exists = dynasty + dynasty = { + any_dynasty_member = { + is_visitable_relation_trigger = { CHARACTER = scope:mover } + NOT = { is_close_or_extended_family_of = scope:mover } + } + } + } + dynasty = { + random_dynasty_member = { + limit = { + is_visitable_relation_trigger = { CHARACTER = scope:mover } + NOT = { is_close_or_extended_family_of = scope:mover } + } + capital_province = { save_scope_as = destination } + } + } + } + #Lovers + 5 = { + trigger = { + any_relation = { + type = lover + is_visitable_relation_trigger = { CHARACTER = scope:mover } + } + } + random_relation = { + type = lover + limit = { any_close_or_extended_family_member = { is_visitable_relation_trigger = { CHARACTER = scope:mover } } } + capital_province = { save_scope_as = destination } + } + } + #Friends + 5 = { + trigger = { + any_relation = { + type = lover + is_visitable_relation_trigger = { CHARACTER = scope:mover } + } + } + random_relation = { + type = lover + limit = { any_close_or_extended_family_member = { is_visitable_relation_trigger = { CHARACTER = scope:mover } } } + capital_province = { save_scope_as = destination } + } + } + #Within the realm (only for kingdoms/empires) + 15 = { + trigger = { + exists = host + host.top_liege = { + highest_held_title_tier >= tier_kingdom + OR = { + is_visitable_relation_trigger = { CHARACTER = scope:mover } + any_vassal = { + highest_held_title_tier >= tier_county + is_visitable_relation_trigger = { CHARACTER = scope:mover } + } + } + } + } + host.top_liege = { + if = { + limit = { + is_visitable_relation_trigger = { CHARACTER = scope:mover } + } + add_to_temporary_list = same_realm_list + } + every_vassal_or_below = { + limit = { + highest_held_title_tier >= tier_county + is_visitable_relation_trigger = { CHARACTER = scope:mover } + } + add_to_temporary_list = same_realm_list + } + } + random_in_list = { + list = same_realm_list + limit = { + is_visitable_relation_trigger = { CHARACTER = scope:mover } + } + capital_province = { save_scope_as = destination } + } + } + #Neighboring realm (overseas) + 5 = { + trigger = { + exists = host + host = { + any_neighboring_and_across_water_top_liege_realm_owner = { + OR = { + is_visitable_relation_trigger = { CHARACTER = scope:mover } + any_vassal = { + highest_held_title_tier >= tier_county + is_visitable_relation_trigger = { CHARACTER = scope:mover } + } + } + } + } + } + host = { + random_neighboring_and_across_water_top_liege_realm_owner = { + if = { + limit = { + is_visitable_relation_trigger = { CHARACTER = scope:mover } + } + add_to_temporary_list = other_realm_list + } + every_vassal_or_below = { + limit = { + highest_held_title_tier >= tier_county + is_visitable_relation_trigger = { CHARACTER = scope:mover } + } + add_to_temporary_list = other_realm_list + } + } + } + random_in_list = { + list = other_realm_list + limit = { + is_visitable_relation_trigger = { CHARACTER = scope:mover } + } + capital_province = { save_scope_as = destination } + } + } + #Neighboring realm (not overseas) + 15 = { + trigger = { + exists = host + host = { + any_neighboring_top_liege_realm_owner = { + OR = { + is_visitable_relation_trigger = { CHARACTER = scope:mover } + any_vassal = { + highest_held_title_tier >= tier_county + is_visitable_relation_trigger = { CHARACTER = scope:mover } + } + } + } + } + } + host = { + random_neighboring_top_liege_realm_owner = { + if = { + limit = { + is_visitable_relation_trigger = { CHARACTER = scope:mover } + } + add_to_temporary_list = other_realm_list + } + every_vassal_or_below = { + limit = { + highest_held_title_tier >= tier_county + is_visitable_relation_trigger = { CHARACTER = scope:mover } + } + add_to_temporary_list = other_realm_list + } + } + } + random_in_list = { + list = other_realm_list + limit = { + is_visitable_relation_trigger = { CHARACTER = scope:mover } + } + capital_province = { save_scope_as = destination } + } + } + #Secret Witch + 5 = { + trigger = { + any_secret = { + secret_type = secret_witch + any_secret_knower = { + is_visitable_relation_trigger = { CHARACTER = scope:mover } + is_witch_trigger = yes + } + } + } + + random_secret = { + limit = { secret_type = secret_witch } + random_secret_knower = { + limit = { + is_visitable_relation_trigger = { CHARACTER = scope:mover } + is_witch_trigger = yes + } + capital_province = { save_scope_as = destination } + } + } + } + } + } + + + #Is this person really close to your old host? Perhaps you should go someplace else + if = { + limit = { + exists = scope:destination + scope:destination = { + province_owner = { + NOR = { + is_close_or_extended_family_of = scope:mover + AND = { + exists = dynasty + scope:mover = { exists = dynasty } + dynasty = scope:mover.dynasty + } + has_relation_friend = scope:mover + has_relation_lover = scope:mover + } + } + exists = scope:mover.host.capital_province + squared_distance = { + target = scope:mover.host.capital_province + value < squared_distance_small + } + } + } + random = { + chance = 33 + save_temporary_scope_as = fallback_effect + } + } + + ###MOVE OR FIND FALLBACK DESTINATION### + if = { + limit = { + exists = scope:destination + NOT = { exists = scope:fallback_effect } + } + set_variable = { + name = last_visited_ruler + value = this.host + days = 3650 + } + every_traveling_family_member = { + limit = { + NOT = { is_in_pool_at = scope:destination } + is_ruler = no + trigger_if = { + limit = { + is_child_of = scope:mover.host + } + NOT = { dynasty = scope:mover.host.dynasty } + } + } + move_to_pool_at = scope:destination + } + } + else = { + fallback_move_to_pool_effect = yes + } + } +} + +courtier_guest_pool_character_secret_giving_effect = { + random_list = { + # Deviant + 200 = { + trigger = { + NOR = { + has_trait = celibate + has_trait = chaste + any_secret = { secret_type = secret_deviant } + has_trait = deviant + } + } + modifier = { + has_trait = lustful + add = 50 + } + + give_deviant_secret_or_trait_effect = yes + } + # Homosexual + 100 = { + trigger = { + is_male = yes + OR = { + has_sexuality = homosexual + has_sexuality = bisexual + } + NOT = { has_trait = celibate } + NOR = { + any_secret = { secret_type = secret_homosexual } + has_trait = sodomite + } + } + modifier = { + has_trait = chaste + add = -50 + } + + give_homosexual_secret_or_nothing_effect = yes + } + # Cannibal + 100 = { + trigger = { + OR = { + has_trait = lunatic + has_trait = possessed + ai_compassion <= high_negative_ai_value + } + NOR = { + any_secret = { secret_type = secret_cannibal } + has_trait = cannibal + } + } + ai_compassion_target_modifier = { VALUE = -50 } + + give_cannibal_secret_or_trait_effect = yes + } + # Non-believer + 500 = { + trigger = { + NOR = { + has_trait = zealous + any_secret = { secret_type = secret_non_believer } + has_character_modifier = known_non_believer + } + } + ai_zeal_target_modifier = { VALUE = -50 } + give_non_believer_secret_effect = yes + } + # Witch + 100 = { + trigger = { + NOR = { + has_trait = zealous + any_secret = { secret_type = secret_witch } + has_trait = witch + } + } + modifier = { + OR = { + has_trait = lifestyle_mystic + has_trait = lifestyle_herbalist + } + add = 50 + } + ai_greed_target_modifier = { VALUE = 50 } + } + } +} + +pool_character_development_effect = { + ###POSIBLE EFFECTS### + # Increase a low skill + # Get married + # Get a scripted relation + # Get a lifestyle trait + # Get a commander trait + # Get an interesting trait + # Get a secret + # Kill someone + + save_temporary_scope_as = pool_character + + + random_list = { + # INCREASE A LOW SKILL + 100 = { + trigger = { diplomacy < medium_skill_rating } + add_diplomacy_skill = 1 + } + 100 = { + trigger = { martial < medium_skill_rating } + add_martial_skill = 1 + } + 100 = { + trigger = { stewardship < medium_skill_rating } + add_stewardship_skill = 1 + } + 100 = { + trigger = { intrigue < medium_skill_rating } + add_intrigue_skill = 1 + } + 100 = { + trigger = { learning < medium_skill_rating } + add_learning_skill = 1 + } + 100 = { + trigger = { prowess < medium_skill_rating } + modifier = { + NOT = { can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = scope:pool_character } } + factor = 0.1 + } + add_prowess_skill = 1 + } + + # GET MARRIED + 15 = { + trigger = { + is_physically_able_adult = yes + age <= 40 + is_married = no + can_marry_trigger = yes + is_concubine = no + is_lowborn = no + #The triggers below are here to avoid low fertility marriages + OR = { + has_sexuality = heterosexual + has_sexuality = bisexual + } + NOR = { + has_trait = celibate + has_trait = chaste + } + fertility > low_fertility + } + + save_temporary_scope_as = template + + if = { + limit = { + exists = scope:pool_character.location + any_pool_character = { + province = scope:pool_character.location + sex_opposite_of = scope:pool_character + is_physically_able_adult = yes + age <= 40 + is_married = no + can_marry_trigger = yes + is_concubine = no + is_attracted_to_gender_of = scope:pool_character + } + } + random_pool_character = { + province = scope:pool_character.location + limit = { + sex_opposite_of = scope:pool_character + is_physically_able_adult = yes + age <= 40 + is_married = no + can_marry_trigger = yes + is_concubine = no + is_attracted_to_gender_of = scope:pool_character + } + save_temporary_scope_as = spouse + } + } + else = { + create_character = { + location = scope:template.location + opposite_gender = scope:template + template = pool_repopulate_spouse + save_temporary_scope_as = spouse + after_creation = { add_random_hexaco_personality_trait = { WHO = scope:spouse } } + } + } + + + marry = scope:spouse + + scope:spouse = { + if = { + limit = { + exists = scope:template.host + } + visit_court_of = scope:template.host + } + } + } + + # GET A LIFESTYLE TRAIT + 50 = { + trigger = { + number_of_lifestyle_traits <= 2 + is_adult = yes + } + modifier = { + number_of_lifestyle_traits = 0 + factor = 2 + } + + random_list = { + 100 = { #REVELER + trigger = { + NOT = { has_trait = reveler_3 } + NOR = { + has_trait = shy + has_trait = celibate + has_trait = temperate + has_trait = chaste + ai_greed < 0 + } + } + modifier = { + has_trait = lifestyle_reveler + factor = 5 + } + change_trait_rank = { + trait = lifestyle_reveler + rank = 1 + max = 3 + } + } + 100 = { #BLADEMASTER + trigger = { + NOT = { has_trait = blademaster_3 } + prowess >= decent_skill_rating + } + modifier = { + has_trait = lifestyle_blademaster + factor = 5 + } + modifier = { + NOT = { can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = scope:pool_character } } + factor = 0.1 + } + change_trait_rank = { + trait = lifestyle_blademaster + rank = 1 + max = 3 + } + } + 100 = { #HUNTER + trigger = { + NOT = { has_trait = hunter_3 } + ai_boldness >= medium_positive_ai_value + ai_energy >= low_positive_ai_value + ai_compassion < high_positive_ai_value + } + modifier = { + has_trait = lifestyle_hunter + factor = 5 + } + change_trait_rank = { + trait = lifestyle_hunter + rank = 1 + max = 3 + } + } + 100 = { #PHYSICIAN + trigger = { + NOT = { has_trait = physician_3 } + learning >= decent_skill_rating + } + modifier = { + has_trait = lifestyle_physician + factor = 5 + } + change_trait_rank = { + trait = lifestyle_physician + rank = 1 + max = 3 + } + } + 100 = { #MYSTIC + trigger = { + NOT = { has_trait = mystic_3 } + learning >= decent_skill_rating + } + modifier = { + has_trait = lifestyle_mystic + factor = 5 + } + modifier = { + ai_zeal > 0 + factor = 0.5 + } + modifier = { + is_witch_trigger = yes + factor = 3 + } + change_trait_rank = { + trait = lifestyle_mystic + rank = 1 + max = 3 + } + } + 100 = { #HERBALIST + trigger = { + NOT = { has_trait = lifestyle_herbalist } + learning >= decent_skill_rating + } + modifier = { + ai_zeal > 0 + factor = 0.5 + } + modifier = { + is_witch_trigger = yes + factor = 3 + } + add_trait = lifestyle_herbalist + } + } + } + + #GET A COMMANDER TRAIT + 100 = { + trigger = { + has_trait = education_martial + number_of_commander_traits < commander_trait_limit + } + + random_list = { + 1 = { + trigger = { NOT = { has_trait = logistician } } + add_trait = logistician + } + 1 = { + trigger = { NOT = { has_trait = military_engineer } } + add_trait = military_engineer + } + 1 = { + trigger = { NOT = { has_trait = aggressive_attacker } } + add_trait = aggressive_attacker + } + 1 = { + trigger = { NOT = { has_trait = unyielding_defender } } + add_trait = unyielding_defender + } + 1 = { + trigger = { NOT = { has_trait = forder } } + add_trait = forder + } + 1 = { + trigger = { NOT = { has_trait = holy_warrior } } + add_trait = holy_warrior + } + 1 = { + trigger = { NOT = { has_trait = reckless } } + add_trait = reckless + } + 1 = { + trigger = { NOT = { has_trait = cautious_leader } } + add_trait = cautious_leader + } + 1 = { + trigger = { NOT = { has_trait = rough_terrain_expert } } + add_trait = rough_terrain_expert + } + 1 = { + trigger = { NOT = { has_trait = open_terrain_expert } } + add_trait = open_terrain_expert + } + } + } + + # GET AN INTERESTING TRAIT + 20 = { + trigger = { is_adult = yes } + random_list = { + 1 = { + trigger = { NOT = { has_trait = lunatic } } + add_trait = lunatic_1 + } + 1 = { + trigger = { NOT = { has_trait = possessed } } + add_trait = possessed_1 + } + 1 = { + trigger = { NOT = { has_trait = scarred } } + add_trait = scarred + } + 1 = { + trigger = { + can_be_drunkard = yes + } + add_trait = drunkard + } + 1 = { + trigger = { #Does not use the can_be_rakish to reduce performance hit + NOR = { + has_trait = rakish + has_trait = celibate + has_trait = chaste + has_sexuality = asexual + } + } + add_trait = rakish + } + 1 = { #Does not use the can_be_flagellant to reduce performance hit + trigger = { NOT = { has_trait = flagellant } } + add_trait = flagellant + } + 1 = { #Does not use the can_be_contrite to reduce performance hit + trigger = { + NOR = { + has_trait = deceitful + has_trait = contrite + } + } + add_trait = contrite + } + 1 = { #Does not use the can_be_journaller to reduce performance hit + trigger = { NOT = { has_trait = journaller } } + add_trait = journaller + } + 1 = { + trigger = { + NOT = { has_trait = eunuch } + is_male = yes + } + add_trait = eunuch + } + 1 = { + trigger = { NOT = { has_trait = blind } } + add_trait = blind + } + 1 = { + trigger = { + NOR = { + has_trait = intellect_bad + has_trait = dull + has_trait = shrewd + } + } + add_trait = shrewd + } + 1 = { + trigger = { + NOR = { + has_trait = weak + has_trait = physique_bad + has_trait = strong + } + } + add_trait = strong + } + } + } + + # GET A SECRET + 30 = { + trigger = { + NOT = { any_secret = { always = yes } } + is_adult = yes + } + + courtier_guest_pool_character_secret_giving_effect = yes + } + } #RANDOM_LIST ENDS HERE + + while = { + limit = { + gold >= 1000 + NOT = { + any_player = { + exists = dynasty + dynasty = scope:pool_character.dynasty + } + } + } + random_list = { + 100 = { # Spend gold on getting a friend + trigger = { + ai_sociability > low_negative_ai_value + is_physically_able_adult = yes + NOR = { + has_trait = shy + has_trait = reclusive + } + exists = scope:pool_character.location + any_pool_character = { + province = scope:pool_character.location + is_physically_able_adult = yes + NOT = { this = scope:pool_character } + NOT = { has_any_scripted_relation = scope:pool_character } + } + } + random_pool_character = { + province = scope:pool_character.location + limit = { + is_physically_able_adult = yes + NOT = { this = scope:pool_character } + NOT = { has_any_scripted_relation = scope:pool_character } + } + save_temporary_scope_as = new_friend + } + add_prestige = major_prestige_value + set_relation_friend = scope:new_friend + pay_short_term_gold = { + target = scope:new_friend + gold = 500 + } + } + + 150 = { # Spend gold on for religious purposes + trigger = { + ai_zeal >= medium_positive_ai_value + learning < 30 + } + add_learning_skill = 3 + add_piety = major_piety_value + remove_short_term_gold = 500 + } + + 200 = { # Spend gold on gaining prestige and training prowess! + trigger = { + can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = scope:pool_character } + prowess < 30 + } + knight_increase_prowess_chance_effect = yes + add_prestige = major_prestige_value + remove_short_term_gold = 500 + } + + 100 = { # Spend gold on gaining prestige and skill! + trigger = { + can_be_combatant_based_on_gender_trigger = { ARMY_OWNER = scope:pool_character } + martial < 25 + } + add_martial_skill = 2 + add_prestige = major_prestige_value + remove_short_term_gold = 500 + } + + 100 = { # Spend gold on gaining prestige and skill! + trigger = { + intrigue < 25 + } + add_intrigue_skill = 3 + add_prestige = major_prestige_value + remove_short_term_gold = 500 + } + + 100 = { # Spend gold on gaining prestige and skill! + trigger = { + stewardship < 25 + } + add_stewardship_skill = 3 + add_prestige = major_prestige_value + remove_short_term_gold = 500 + } + + 100 = { # Spend gold on gaining prestige and skill! + trigger = { + diplomacy < 25 + } + add_diplomacy_skill = 3 + add_prestige = major_prestige_value + remove_short_term_gold = 500 + } + + 100 = { # Lavish wedding! + trigger = { + is_physically_able_adult = yes + age <= 40 + is_married = no + can_marry_trigger = yes + is_concubine = no + #The triggers below are here to avoid low fertility marriages + OR = { + has_sexuality = heterosexual + has_sexuality = bisexual + } + NOR = { + has_trait = celibate + has_trait = chaste + } + fertility > low_fertility + } + + save_temporary_scope_as = template + + if = { + limit = { + exists = scope:pool_character.location + any_pool_character = { + province = scope:pool_character.location + sex_opposite_of = scope:pool_character + is_physically_able_adult = yes + age <= 40 + is_married = no + can_marry_trigger = yes + is_concubine = no + is_attracted_to_gender_of = scope:pool_character + } + } + random_pool_character = { + province = scope:pool_character.location + limit = { + sex_opposite_of = scope:pool_character + is_physically_able_adult = yes + age <= 40 + is_married = no + can_marry_trigger = yes + is_concubine = no + is_attracted_to_gender_of = scope:pool_character + } + save_temporary_scope_as = spouse + } + } + else = { + create_character = { + location = scope:template.location + opposite_gender = scope:template + template = pool_repopulate_spouse + save_temporary_scope_as = spouse + after_creation = { add_random_hexaco_personality_trait = { WHO = scope:spouse } } + } + } + + + marry = scope:spouse + + scope:spouse = { + if = { + limit = { + exists = scope:template.host + } + visit_court_of = scope:template.host + } + } + remove_short_term_gold = 500 + } + 500 = { # Just waste the gold on nonsense + add_prestige = minor_prestige_value + remove_short_term_gold = 500 + } + } + } +} diff --git a/common/scripted_effects/00_education_effects.txt b/common/scripted_effects/00_education_effects.txt new file mode 100644 index 00000000..2df7147d --- /dev/null +++ b/common/scripted_effects/00_education_effects.txt @@ -0,0 +1,1436 @@ +#Scripted effects relating to education + +##################################################################### +# EFFECT LIST +##################################################################### +# !!! Remember to add all new effects with a short description here !!! + +#education_point_acquisition_effect - Rolls a random chance for assigning education points based on a number of factors. Run in a pulse event every half year of childhood. + +#education_complete_notification_effect - Identifies characters for the "Education Completed" notification events and sends the events. + +#save_childhood_trait_as_variable_effect - Saves childhood trait as a variable flag + +#assign_commander_trait_effect - To assign a commander trait to a child with a martial education + +#wrap_up_education_effect - Additional effects run to wrap up education + +#rank_up_education_effect - Increases your education by 1 rank unless it's at 4 (or you don't have any) + +###################################################################### +# EFFECTS +###################################################################### + + +#Education point acquisition + +education_point_acquisition_effect = { + if = { + limit = { has_focus = education_diplomacy } + education_point_acquisition_support_effect = { SKILL = diplomacy } + } + else_if = { + limit = { has_focus = education_martial } + education_point_acquisition_support_effect = { SKILL = martial } + } + else_if = { + limit = { has_focus = education_stewardship } + education_point_acquisition_support_effect = { SKILL = stewardship } + } + else_if = { + limit = { has_focus = education_intrigue } + education_point_acquisition_support_effect = { SKILL = intrigue } + } + else_if = { + limit = { has_focus = education_learning } + education_point_acquisition_support_effect = { SKILL = learning } + } +} + + +education_point_acquisition_support_effect = { + #Save educator + if = { + limit = { + any_relation = { + type = guardian + always = yes + } + } + random_relation = { + type = guardian + save_scope_as = educator + } + } + + #Set variables if they don't exist + if = { + limit = { + NOT = { has_variable = education_$SKILL$_variable } + } + set_variable = { + name = education_$SKILL$_variable + value = 0 + } + } + + #Randomize success or failure + random_list = { + #Success + 60 = { + #Child intelligence + modifier = { + has_trait = intellect_good_3 + add = 20 + } + modifier = { + has_trait = intellect_good_2 + add = 15 + } + modifier = { + OR = { + has_trait = intellect_good_1 + has_trait = shrewd + } + add = 10 + } + #Educator intelligence & skill + modifier = { + exists = scope:educator + add = { + #Intelligence + if = { + limit = { scope:educator = { has_trait = intellect_good_3 } } + value = 15 + } + else_if = { + limit = { scope:educator = { has_trait = intellect_good_2 } } + value = 10 + } + else_if = { + limit = { + scope:educator = { + OR = { + has_trait = intellect_good_1 + has_trait = shrewd + } + } + } + value = 5 + } + #Specific skill + add = { + value = scope:educator.$SKILL$ + multiply = educator_skill_modifier_factor + } + #Learning skill + add = { + value = scope:educator.learning + multiply = educator_learning_skill_modifier_factor + } + } + } + + #Affinity + modifier = { + has_$SKILL$_education_affinity_childhood_trait_trigger = yes + add = matching_childhood_trait_modifier_value + } + + #Disaffinity + modifier = { + has_$SKILL$_education_disaffinity_childhood_trait_trigger = yes + add = mismatching_childhood_trait_modifier_value + } + + + change_variable = { + name = education_$SKILL$_variable + add = 2 + } + } + #Failure + 40 = { + #Child intelligence + modifier = { + OR = { + has_trait = intellect_bad_3 + has_trait = inbred + } + add = 20 + } + modifier = { + has_trait = intellect_bad_2 + add = 15 + } + modifier = { + OR = { + has_trait = intellect_bad_1 + has_trait = dull + } + add = 10 + } + + #Educator intelligence & skill + modifier = { + exists = scope:educator + add = { + #Intelligence + if = { + limit = { scope:educator = { has_trait = intellect_bad_3 } } + value = 15 + } + else_if = { + limit = { scope:educator = { has_trait = intellect_bad_2 } } + value = 10 + } + else_if = { + limit = { + scope:educator = { + OR = { + has_trait = intellect_bad_1 + has_trait = dull + } + } + } + value = 5 + } + } + } + modifier = { + add = 20 + NOT = { + exists = scope:educator + } + } + } + } +} + + +#Effect to identify characters for the "Education Completed" notification events +education_complete_notification_effect = { + save_scope_as = educated_child + random_relation = { + type = guardian + if = { + limit = { this = { is_parent_of = root } } + save_scope_as = parent_guardian + trigger_event = coming_of_age.1001 + } + else = { + save_scope_as = guardian + if = { + limit = { + scope:educated_child = { + any_parent = { is_alive = no } + any_parent = { is_alive = yes } + } + } + random_parent = { + limit = { is_alive = yes } + save_scope_as = living_parent + } + random_parent = { + limit = { is_alive = no } + save_scope_as = dead_parent + } + trigger_event = coming_of_age.1003 #Event for non-parent guardian when one parent of the child is dead + } + else_if = { + limit = { + scope:educated_child = { + any_parent = { + is_alive = yes + count = 2 + } + } + } + scope:educated_child.father = { save_scope_as = father } + scope:educated_child.mother = { save_scope_as = mother } + trigger_event = coming_of_age.1004 #Event for non-parent guardian when both parents are alive + } + else_if = { + limit = { + OR = { + NOT = { exists = scope:educated_child.father } + NOT = { exists = scope:educated_child.mother } + } + } + if = { + limit = { + exists = scope:educated_child.father + } + scope:educated_child.father = { + save_scope_as = parent + } + } + if = { + limit = { + exists = scope:educated_child.mother + } + scope:educated_child.mother = { + save_scope_as = parent + } + } + if = { + limit = { + NOT = { exists = scope:parent } + } + trigger_event = coming_of_age.1005 + } + trigger_event = coming_of_age.1003 + } + else = { + scope:educated_child.father = { save_scope_as = father } + scope:educated_child.mother = { save_scope_as = mother } + trigger_event = coming_of_age.1005 #Event for non-parent guardian when both parents are dead + } + } + } + every_parent = { + limit = { + OR = { + NOT = { exists = scope:parent_guardian } + AND = { + exists = scope:parent_guardian + NOT = { this = scope:parent_guardian } + } + } + } + trigger_event = coming_of_age.1002 + } +} + +#To extract and save event_targets to use in coming_of_age notification event +save_event_targets_from_childhood_effect = { + if = { + limit = { + any_relation = { type = friend always = yes } + } + random_relation = { + type = friend + save_scope_as = friend + } + } + if = { + limit = { + exists = var:had_childhood_crush_variable + } + var:had_childhood_crush_variable = { + save_scope_as = crush + } + } + if = { + limit = { + exists = var:had_childhood_bully_variable + } + var:had_childhood_bully_variable = { + save_scope_as = bully + } + } + if = { + limit = { + exists = var:had_childhood_victim_variable + } + var:had_childhood_victim_variable = { + save_scope_as = victim + } + } +} + +#To assign a commander trait (based on culture, faith, etc.) to a child with a martial education +assign_commander_trait_effect = { + random_list = { + 100 = { + trigger = { NOT = { has_trait = logistician } } + add_trait = logistician + } + 100 = { + trigger = { NOT = { has_trait = military_engineer } } + add_trait = military_engineer + } + 100 = { + trigger = { NOT = { has_trait = aggressive_attacker } } + add_trait = aggressive_attacker + } + 100 = { + trigger = { NOT = { has_trait = unyielding_defender } } + add_trait = unyielding_defender + } + 100 = { + trigger = { NOT = { has_trait = forder } } + add_trait = forder + } + 100 = { + trigger = { NOT = { has_trait = flexible_leader } } + add_trait = flexible_leader + } + 100 = { + trigger = { + NOT = { has_trait = desert_warrior } + OR = { + any_directly_owned_province = { + terrain = desert + } + AND = { + exists = scope:educator + scope:educator = { + any_directly_owned_province = { + terrain = desert + } + } + } + AND = { + NOT = { exists = scope:educator } + exists = liege + liege = { + any_directly_owned_province = { + terrain = desert + } + } + } + } + } + add_trait = desert_warrior + } + 100 = { + trigger = { + NOT = { has_trait = jungle_stalker } + OR = { + any_directly_owned_province = { + terrain = jungle + } + AND = { + exists = scope:educator + scope:educator = { + any_directly_owned_province = { + terrain = jungle + } + } + } + AND = { + NOT = { exists = scope:educator } + exists = liege + liege = { + any_directly_owned_province = { + terrain = jungle + } + } + } + } + } + add_trait = jungle_stalker + } + 100 = { + trigger = { NOT = { has_trait = reaver } } + add_trait = reaver + } + 100 = { + trigger = { NOT = { has_trait = reckless } } + add_trait = reckless + } + 100 = { + trigger = { NOT = { has_trait = holy_warrior } } + add_trait = holy_warrior + } + } +} + + + +custom_tooltip_learning_coming_of_age_effect = { + if = { + limit = { + has_trait = education_learning_1 + } + custom_tooltip = coming_of_age.0001.tt.1 + } + else_if = { + limit = { + has_trait = education_learning_2 + } + custom_tooltip = coming_of_age.0001.tt.2 + } + else_if = { + limit = { + has_trait = education_learning_3 + } + custom_tooltip = coming_of_age.0001.tt.3 + } + else_if = { + limit = { + has_trait = education_learning_4 + } + custom_tooltip = coming_of_age.0001.tt.4 + } + if = { + limit = { + exists = scope:crush + } + custom_tooltip = coming_of_age.0001.tt.5 + } + if = { + limit = { + exists = scope:victim + } + custom_tooltip = coming_of_age.0001.tt.7 + } + if = { + limit = { + exists = scope:bully + } + custom_tooltip = coming_of_age.0001.tt.9 + } +} + +custom_tooltip_stewardship_coming_of_age_effect = { + if = { + limit = { + has_trait = education_stewardship_1 + } + custom_tooltip = coming_of_age.0001.tt.1 + } + else_if = { + limit = { + has_trait = education_stewardship_2 + } + custom_tooltip = coming_of_age.0001.tt.2 + } + else_if = { + limit = { + has_trait = education_stewardship_3 + } + custom_tooltip = coming_of_age.0001.tt.3 + } + else_if = { + limit = { + has_trait = education_stewardship_4 + } + custom_tooltip = coming_of_age.0001.tt.4 + } + if = { + limit = { + exists = scope:crush + } + custom_tooltip = coming_of_age.0001.tt.5 + } + if = { + limit = { + exists = scope:victim + } + custom_tooltip = coming_of_age.0001.tt.7 + } + if = { + limit = { + exists = scope:bully + } + custom_tooltip = coming_of_age.0001.tt.9 + } +} + +custom_tooltip_martial_coming_of_age_effect = { + if = { + limit = { + has_trait = education_martial_1 + } + custom_tooltip = coming_of_age.0001.tt.1 + } + else_if = { + limit = { + has_trait = education_martial_2 + } + custom_tooltip = coming_of_age.0001.tt.2 + } + else_if = { + limit = { + has_trait = education_martial_3 + } + custom_tooltip = coming_of_age.0001.tt.3 + } + else_if = { + limit = { + has_trait = education_martial_4 + } + custom_tooltip = coming_of_age.0001.tt.4 + } + if = { + limit = { + exists = scope:crush + } + custom_tooltip = coming_of_age.0001.tt.5 + } + if = { + limit = { + exists = scope:victim + } + custom_tooltip = coming_of_age.0001.tt.7 + } + if = { + limit = { + exists = scope:bully + } + custom_tooltip = coming_of_age.0001.tt.9 + } +} + +custom_tooltip_intrigue_coming_of_age_effect = { + if = { + limit = { + has_trait = education_intrigue_1 + } + custom_tooltip = coming_of_age.0001.tt.1 + } + else_if = { + limit = { + has_trait = education_intrigue_2 + } + custom_tooltip = coming_of_age.0001.tt.2 + } + else_if = { + limit = { + has_trait = education_intrigue_3 + } + custom_tooltip = coming_of_age.0001.tt.3 + } + else_if = { + limit = { + has_trait = education_intrigue_4 + } + custom_tooltip = coming_of_age.0001.tt.4 + } + if = { + limit = { + exists = scope:crush + } + custom_tooltip = coming_of_age.0001.tt.5 + } + if = { + limit = { + exists = scope:victim + } + custom_tooltip = coming_of_age.0001.tt.7 + } + if = { + limit = { + exists = scope:bully + } + custom_tooltip = coming_of_age.0001.tt.9 + } +} + +custom_tooltip_diplomacy_coming_of_age_effect = { + if = { + limit = { + has_trait = education_diplomacy_1 + } + custom_tooltip = coming_of_age.0001.tt.1 + } + else_if = { + limit = { + has_trait = education_diplomacy_2 + } + custom_tooltip = coming_of_age.0001.tt.2 + } + else_if = { + limit = { + has_trait = education_diplomacy_3 + } + custom_tooltip = coming_of_age.0001.tt.3 + } + else_if = { + limit = { + has_trait = education_diplomacy_4 + } + custom_tooltip = coming_of_age.0001.tt.4 + } + if = { + limit = { + exists = scope:crush + } + custom_tooltip = coming_of_age.0001.tt.5 + } + if = { + limit = { + exists = scope:victim + } + custom_tooltip = coming_of_age.0001.tt.7 + } + if = { + limit = { + exists = scope:bully + } + custom_tooltip = coming_of_age.0001.tt.9 + } +} + + +remove_variables_and_trait_coming_of_age_effect = { + if = { + limit = { + exists = var:had_childhood_crush_variable + } + remove_variable = had_childhood_crush_variable + } + if = { + limit = { + exists = var:unrequited_crush + } + remove_variable = unrequited_crush + } + if = { + limit = { + exists = var:had_childhood_victim_variable + } + remove_variable = had_childhood_victim_variable + } + if = { + limit = { + exists = var:had_childhood_bully_variable + } + remove_variable = had_childhood_bully_variable + } + if = { + limit = { has_trait = curious } + remove_trait = curious + } + if = { + limit = { has_trait = rowdy } + remove_trait = rowdy + } + if = { + limit = { has_trait = bossy } + remove_trait = bossy + } + if = { + limit = { has_trait = charming } + remove_trait = charming + } + if = { + limit = { has_trait = pensive } + remove_trait = pensive + } + if = { + limit = { + has_character_flag = bully_destroyed_toy + } + remove_character_flag = bully_destroyed_toy + } + if = { + limit = { + has_character_flag = natural_education_progression + } + remove_character_flag = natural_education_progression + } + remove_variable = education_point_gain_variable + if = { + limit = { + has_variable = childhood_trait_type + } + remove_variable = childhood_trait_type + } +} + +#Save childhood trait as a variable flag +save_childhood_trait_as_variable_effect = { + if = { + limit = { has_trait = rowdy } + set_variable = { + name = childhood_trait_type + value = flag:rowdy + } + } + else_if = { + limit = { has_trait = curious } + set_variable = { + name = childhood_trait_type + value = flag:curious + } + } + else_if = { + limit = { has_trait = bossy } + set_variable = { + name = childhood_trait_type + value = flag:bossy + } + } + else_if = { + limit = { has_trait = charming } + set_variable = { + name = childhood_trait_type + value = flag:charming + } + } + else_if = { + limit = { has_trait = pensive } + set_variable = { + name = childhood_trait_type + value = flag:pensive + } + } +} + + +#Display correct trait tooltip +display_correct_education_trait_gain_tooltip_effect = { + if = { + limit = { has_trait = education_diplomacy_1 } + show_as_tooltip = { + add_trait_force_tooltip = education_diplomacy_1 + } + } + if = { + limit = { has_trait = education_diplomacy_2 } + show_as_tooltip = { + add_trait_force_tooltip = education_diplomacy_2 + } + } + if = { + limit = { has_trait = education_diplomacy_3 } + show_as_tooltip = { + add_trait_force_tooltip = education_diplomacy_3 + } + } + if = { + limit = { has_trait = education_diplomacy_4 } + show_as_tooltip = { + add_trait_force_tooltip = education_diplomacy_4 + } + } + if = { + limit = { has_trait = education_martial_1 } + show_as_tooltip = { + add_trait_force_tooltip = education_martial_1 + } + } + if = { + limit = { has_trait = education_martial_2 } + show_as_tooltip = { + add_trait_force_tooltip = education_martial_2 + } + } + if = { + limit = { has_trait = education_martial_3 } + show_as_tooltip = { + add_trait_force_tooltip = education_martial_3 + } + } + if = { + limit = { has_trait = education_martial_4 } + show_as_tooltip = { + add_trait_force_tooltip = education_martial_4 + } + } + if = { + limit = { has_trait = education_stewardship_1 } + show_as_tooltip = { + add_trait_force_tooltip = education_stewardship_1 + } + } + if = { + limit = { has_trait = education_stewardship_2 } + show_as_tooltip = { + add_trait_force_tooltip = education_stewardship_2 + } + } + if = { + limit = { has_trait = education_stewardship_3 } + show_as_tooltip = { + add_trait_force_tooltip = education_stewardship_3 + } + } + if = { + limit = { has_trait = education_stewardship_4 } + show_as_tooltip = { + add_trait_force_tooltip = education_stewardship_4 + } + } + if = { + limit = { has_trait = education_intrigue_1 } + show_as_tooltip = { + add_trait_force_tooltip = education_intrigue_1 + } + } + if = { + limit = { has_trait = education_intrigue_2 } + show_as_tooltip = { + add_trait_force_tooltip = education_intrigue_2 + } + } + if = { + limit = { has_trait = education_intrigue_3 } + show_as_tooltip = { + add_trait_force_tooltip = education_intrigue_3 + } + } + if = { + limit = { has_trait = education_intrigue_4 } + show_as_tooltip = { + add_trait_force_tooltip = education_intrigue_4 + } + } + if = { + limit = { has_trait = education_learning_1 } + show_as_tooltip = { + add_trait_force_tooltip = education_learning_1 + } + } + if = { + limit = { has_trait = education_learning_2 } + show_as_tooltip = { + add_trait_force_tooltip = education_learning_2 + } + } + if = { + limit = { has_trait = education_learning_3 } + show_as_tooltip = { + add_trait_force_tooltip = education_learning_3 + } + } + if = { + limit = { has_trait = education_learning_4 } + show_as_tooltip = { + add_trait_force_tooltip = education_learning_4 + } + } + if = { # Knighthood innovation + limit = { has_trait = education_martial_prowess_1 } + show_as_tooltip = { + add_trait_force_tooltip = education_martial_prowess_1 + } + } + if = { + limit = { has_trait = education_martial_prowess_2 } + show_as_tooltip = { + add_trait_force_tooltip = education_martial_prowess_2 + } + } + if = { + limit = { has_trait = education_martial_prowess_3 } + show_as_tooltip = { + add_trait_force_tooltip = education_martial_prowess_3 + } + } + if = { + limit = { has_trait = education_martial_prowess_4 } + show_as_tooltip = { + add_trait_force_tooltip = education_martial_prowess_4 + } + } + if = { # Esotericism Tenet + limit = { has_trait = mystic_1 } + show_as_tooltip = { + add_trait_force_tooltip = mystic_1 + } + } + if = { + limit = { + has_trait = logistician + } + show_as_tooltip = { + add_trait_force_tooltip = logistician + } + } + if = { + limit = { + has_trait = military_engineer + } + show_as_tooltip = { + add_trait_force_tooltip = military_engineer + } + } + if = { + limit = { + has_trait = aggressive_attacker + } + show_as_tooltip = { + add_trait_force_tooltip = aggressive_attacker + } + } + if = { + limit = { + has_trait = unyielding_defender + } + show_as_tooltip = { + add_trait_force_tooltip = unyielding_defender + } + } + if = { + limit = { + has_trait = forder + } + show_as_tooltip = { + add_trait_force_tooltip = forder + } + } + if = { + limit = { + has_trait = flexible_leader + } + show_as_tooltip = { + add_trait_force_tooltip = flexible_leader + } + } + if = { + limit = { + has_trait = desert_warrior + } + show_as_tooltip = { + add_trait_force_tooltip = desert_warrior + } + } + if = { + limit = { + has_trait = jungle_stalker + } + show_as_tooltip = { + add_trait_force_tooltip = jungle_stalker + } + } + if = { + limit = { + has_trait = reaver + } + show_as_tooltip = { + add_trait_force_tooltip = reaver + } + } + if = { + limit = { + has_trait = reckless + } + show_as_tooltip = { + add_trait_force_tooltip = reckless + } + } + if = { + limit = { + has_trait = holy_warrior + } + show_as_tooltip = { + add_trait_force_tooltip = holy_warrior + } + } +} + + +#To run every time a guardian/ward relationship is set +guardian_add_opinion_effect = { + $GUARDIAN$ = { + if = { + limit = { NOT = { this = $WARD_LIEGE$ } } + + #For educator + if = { + limit = { $WARD_LIEGE$ = { player_heir = $WARD$ } } + add_opinion = { + target = $WARD_LIEGE$ + modifier = guardian_of_heir_opinion + } + } + else_if = { + limit = { $WARD_LIEGE$ = { is_close_family_of = $WARD$ } } + add_opinion = { + target = $WARD_LIEGE$ + modifier = guardian_of_relative_opinion + } + } + + #For educator liege, if educator is courtier + if = { + limit = { + exists = liege + is_ruler = no + NOT = { liege = $WARD_LIEGE$ } + } + liege = { + if = { + limit = { $WARD_LIEGE$ = { player_heir = $WARD$ } } + add_opinion = { + target = $WARD_LIEGE$ + modifier = guardian_of_heir_opinion + } + } + else_if = { + limit = { $WARD_LIEGE$ = { is_close_family_of = $WARD$ } } + add_opinion = { + target = $WARD_LIEGE$ + modifier = guardian_of_relative_opinion + } + } + + scope:ward = { + set_variable = { + name = guardian_liege + value = prev + } + } + } + } + } + } +} + +#To run every time a guardian/ward relationship is ended (should be in all decisions/event options etc. where the relation is removed, but is also run through the on_remove_relation_guardian on_action just in case) +guardian_remove_opinion_effect = { + $GUARDIAN$ = { + if = { + limit = { + has_opinion_modifier = { + modifier = guardian_of_heir_opinion + target = $WARD_LIEGE$ + } + } + remove_opinion = { + modifier = guardian_of_heir_opinion + target = $WARD_LIEGE$ + } + } + else_if = { + limit = { + has_opinion_modifier = { + modifier = guardian_of_relative_opinion + target = $WARD_LIEGE$ + } + } + remove_opinion = { + modifier = guardian_of_relative_opinion + target = $WARD_LIEGE$ + } + } + + $WARD$ = { + if = { + limit = { + exists = var:guardian_liege + var:guardian_liege = { is_alive = yes } + } + var:guardian_liege = { + if = { + limit = { + has_opinion_modifier = { + modifier = guardian_of_heir_opinion + target = $WARD_LIEGE$ + } + } + remove_opinion = { + modifier = guardian_of_heir_opinion + target = $WARD_LIEGE$ + } + } + else_if = { + limit = { + has_opinion_modifier = { + modifier = guardian_of_relative_opinion + target = $WARD_LIEGE$ + } + } + remove_opinion = { + modifier = guardian_of_relative_opinion + target = $WARD_LIEGE$ + } + } + } + remove_variable = guardian_liege + } + } + } +} + +#Additional effects run to wrap up education +wrap_up_education_effect = { + if = { + limit = { exists = scope:educator } + remove_relation_guardian = scope:educator + scope:educator = { + if = { + limit = { + is_foreign_court_guest = yes + NOR = { + host = liege + is_landed = yes + any_relation = { #They're not at another ward's court + type = ward + is_landed = yes + this = scope:guardian.host + } + } + } + return_to_court = yes + } + } + } + + if = { + limit = { + is_foreign_court_guest = yes + NOT = { host = liege } + } + return_to_court = yes + } +} + +rank_up_education_effect = { + if = { + limit = { has_education_rank_4_trigger = no } + if = { + limit = { has_trait = education_diplomacy } + change_trait_rank = { + trait = education_diplomacy + rank = 1 + } + } + else_if = { + limit = { has_trait = education_martial } + change_trait_rank = { + trait = education_martial + rank = 1 + } + } + else_if = { + limit = { has_trait = education_stewardship } + change_trait_rank = { + trait = education_stewardship + rank = 1 + } + } + else_if = { + limit = { has_trait = education_intrigue } + change_trait_rank = { + trait = education_intrigue + rank = 1 + } + } + else_if = { + limit = { has_trait = education_learning } + change_trait_rank = { + trait = education_learning + rank = 1 + } + } + } +} + +results_of_university_education_points_effect = { + if = { + limit = { + has_character_flag = studying_at_university + } + #Adding the points to the current education + if = { + limit = { has_focus = education_diplomacy } + change_variable = { + name = education_diplomacy_variable + add = 12 #They should reach the top if they're not completely dumb + } + } + else_if = { + limit = { has_focus = education_martial } + change_variable = { + name = education_martial_variable + add = 12 #They should reach the top if they're not completely dumb + } + } + else_if = { + limit = { has_focus = education_stewardship } + change_variable = { + name = education_stewardship_variable + add = 12 #They should reach the top if they're not completely dumb + } + } + else_if = { + limit = { has_focus = education_intrigue } + change_variable = { + name = education_intrigue_variable + add = 12 #They should reach the top if they're not completely dumb + } + } + else_if = { + limit = { has_focus = education_learning } + change_variable = { + name = education_learning_variable + add = 12 #They should reach the top if they're not completely dumb + } + } + remove_character_flag = studying_at_university + add_character_flag = studied_at_university + } + + if = { + limit = { + NOT = { + has_trait = drunkard + } + } + hidden_effect = { + random = { + chance = 1 + add_trait = drunkard + } + } + } + + if = { + limit = { + any_liege_or_above = { + uses_roman_govt = yes + } + } + random_list = { + 25 = { + add_trait = rhetorician_1 + modifier = { + factor = 10 + OR = { + has_trait = shallow + has_trait = unimaginative + has_trait = content + has_trait = uninspired + has_trait = simple + } + } + } + 25 = { + add_trait = rhetorician_2 + modifier = { + factor = 10 + OR = { + has_trait = shallow + has_trait = unimaginative + has_trait = content + has_trait = uninspired + has_trait = simple + } + } + } + 25 = { + add_trait = rhetorician_3 + modifier = { + factor = learning + } + modifier = { + factor = 10 + OR = { + has_trait = intellectual + has_trait = creative + has_trait = unconventional + has_trait = innovative + has_trait = thoughtful + } + } + } + 25 = { + add_trait = rhetorician_4 + modifier = { + factor = learning + } + modifier = { + factor = 10 + OR = { + has_trait = intellectual + has_trait = creative + has_trait = unconventional + has_trait = innovative + has_trait = thoughtful + } + } + } + } + } +} + +dynasty_legacy_education_boost_effect = { + if = { + limit = { + has_dynasty = yes + dynasty = { has_dynasty_perk = kin_legacy_2 } + } + + if = { + limit = { has_focus = education_diplomacy } + random_list = { + 60 = { + change_variable = { + name = education_diplomacy_variable + add = 2 + } + } + 40 = { + change_variable = { + name = education_diplomacy_variable + add = 3 + } + } + } + } + else_if = { + limit = { has_focus = education_martial } + random_list = { + 60 = { + change_variable = { + name = education_martial_variable + add = 2 + } + } + 40 = { + change_variable = { + name = education_martial_variable + add = 3 + } + } + } + } + else_if = { + limit = { has_focus = education_stewardship } + random_list = { + 60 = { + change_variable = { + name = education_stewardship_variable + add = 2 + } + } + 40 = { + change_variable = { + name = education_stewardship_variable + add = 3 + } + } + } + } + else_if = { + limit = { has_focus = education_intrigue } + random_list = { + 60 = { + change_variable = { + name = education_intrigue_variable + add = 2 + } + } + 40 = { + change_variable = { + name = education_intrigue_variable + add = 3 + } + } + } + } + else_if = { + limit = { has_focus = education_learning } + random_list = { + 60 = { + change_variable = { + name = education_learning_variable + add = 2 + } + } + 40 = { + change_variable = { + name = education_learning_variable + add = 3 + } + } + } + } + } +} + diff --git a/common/scripted_effects/00_stress_effects.txt b/common/scripted_effects/00_stress_effects.txt index a9e4c74c..14b785de 100644 --- a/common/scripted_effects/00_stress_effects.txt +++ b/common/scripted_effects/00_stress_effects.txt @@ -260,6 +260,7 @@ rakish_brothel_night_effect = { faith = root.faith culture = root.culture save_scope_as = beautiful_peasant + after_creation = { add_random_hexaco_personality_trait = { WHO = scope:beautiful_peasant } } } scope:beautiful_peasant = { set_sexuality = bisexual diff --git a/common/scripted_effects/00_witch_effects.txt b/common/scripted_effects/00_witch_effects.txt new file mode 100644 index 00000000..c90d5b11 --- /dev/null +++ b/common/scripted_effects/00_witch_effects.txt @@ -0,0 +1,203 @@ +###CHILD CONVERSION EFFECTS### + +child_witch_conversion_success_effect = { + scope:guardian = { + send_interface_toast = { + title = child_witch_conversion_success_effect.desc + left_icon = scope:child + } + scope:child = { + give_witch_secret_or_trait_effect = yes + random_secret = { + limit = { secret_type = secret_witch } + reveal_to = scope:guardian + } + add_opinion = { + target = scope:guardian + modifier = impressed_opinion + opinion = 30 + } + } + scope:guardian = { + random_secret = { + limit = { + NOT = { is_known_by = scope:child } + secret_type = secret_witch + } + reveal_to = scope:child + } + if = { + limit = { this = root } + hidden_effect = { + add_opinion = { + target = scope:child + modifier = pleased_opinion + opinion = 20 + } + } + } + else = { + add_opinion = { + target = scope:child + modifier = pleased_opinion + opinion = 20 + } + } + } + } +} + +child_witch_conversion_failure_effect = { + scope:guardian = { + send_interface_toast = { + title = child_witch_conversion_failure_effect.desc + left_icon = scope:child + } + scope:child = { + add_opinion = { + target = scope:guardian + modifier = suspicion_opinion + opinion = -15 + } + } + scope:guardian = { + if = { + limit = { this = root } + hidden_effect = { + add_opinion = { + target = scope:child + modifier = disappointed_opinion + opinion = -15 + } + } + } + else = { + add_opinion = { + target = scope:child + modifier = disappointed_opinion + opinion = -15 + } + } + } + } +} + +child_witch_conversion_critical_failure_effect = { + scope:guardian = { + send_interface_toast = { + title = child_witch_conversion_critical_failure_effect.desc + left_icon = scope:child + + scope:child = { + add_opinion = { + target = scope:guardian + modifier = hate_opinion + opinion = -30 + } + } + } + scope:child = { + scope:guardian = { + random_secret = { + limit = { + secret_type = secret_witch + } + save_scope_as = guardian_witch_secret + if = { + limit = { NOT = { is_known_by = scope:child } } + reveal_to = scope:child + } + if = { + limit = { + exists = scope:child.liege + NOR = { + is_known_by = scope:child.liege + scope:child = { is_ruler = yes } + } + } + scope:child.liege = { + send_interface_message = { + title = child_witch_conversion_critical_failure_effect.liege.desc + left_icon = scope:guardian + right_icon = scope:child + scope:guardian_witch_secret = { reveal_to = scope:child.liege } + } + } + } + } + } + } + scope:guardian = { + if = { + limit = { this = root } + hidden_effect = { + add_opinion = { + target = scope:child + modifier = hate_opinion + opinion = -30 + } + } + } + else = { + add_opinion = { + target = scope:child + modifier = hate_opinion + opinion = -30 + } + } + } + } +} + +#Creates a witch and saves it as created_witch +#WHO is character who will interact with the witch and TEMPLATE is the character whose culture should be used +create_witch_effect = { + #Gender + random_list = { + 50 = { #Female + modifier = { + $WHO$ = { is_attracted_to_women = yes } + add = 30 + } + dummy_female = { save_temporary_scope_as = witch_gender } + } + 50 = { #Male + modifier = { + $WHO$ = { is_attracted_to_men = yes } + add = 30 + } + dummy_male = { save_temporary_scope_as = witch_gender } + } + } + + #Create them + create_character = { + save_temporary_scope_as = created_witch + location = $WHO$.capital_province + culture = $WHO$.culture + faith = $WHO$.faith + gender = scope:witch_gender + template = witchy_template + random_traits = no + after_creation = { add_random_hexaco_personality_trait = { WHO = scope:created_witch } } + } + + scope:created_witch = { + give_witch_secret_or_trait_effect = yes + } + + #Sometimes adjust sexuality to create compatibility with WHO + if = { + limit = { + $WHO$ = { is_attracted_to_gender_of = scope:created_witch } + NOT = { scope:created_witch = { is_attracted_to_gender_of = $WHO$ } } + } + random = { + chance = 65 + scope:created_witch = { + set_sexuality = bisexual + } + } + } +} + diff --git a/common/scripted_effects/ave_maria_roman_administration_effects.txt b/common/scripted_effects/ave_maria_roman_administration_effects.txt index ac4680f9..9212d570 100644 --- a/common/scripted_effects/ave_maria_roman_administration_effects.txt +++ b/common/scripted_effects/ave_maria_roman_administration_effects.txt @@ -885,7 +885,7 @@ roman_administration_accession_to_basileus_effect = { roman_administration_remove_terms_of_office_modifier_and_variable = yes roman_administration_remove_salary_indicator = yes - + roman_administration_remove_salary_cost_modifier = yes roman_administration_update_total_salary_cost = yes ## Remove the junior emperor trait @@ -934,7 +934,6 @@ roman_administration_accession_to_basileus_effect = { } } - every_held_title = { limit = { tier = tier_duchy @@ -1071,6 +1070,8 @@ roman_administration_update_total_salary_cost = { save_scope_as = basileus + + ## Set up High Officials variable set_variable = { name = total_number_of_high_officials diff --git a/common/traits/00_ave_maria_traits.txt b/common/traits/00_ave_maria_traits.txt index f3969773..4c7dea24 100644 --- a/common/traits/00_ave_maria_traits.txt +++ b/common/traits/00_ave_maria_traits.txt @@ -203,6 +203,8 @@ pope = { flag = can_not_marry + random_creation = 0 + desc = { first_valid = { triggered_desc = { @@ -222,6 +224,8 @@ bishop = { flag = can_not_marry + random_creation = 0 + desc = { first_valid = { triggered_desc = { @@ -239,6 +243,8 @@ bishop = { basileus = { index = 470 + random_creation = 0 + vassal_opinion = 5 religious_vassal_opinion = 5 monthly_prestige = 1 @@ -261,6 +267,8 @@ basileus = { junior_emperor = { index = 471 + random_creation = 0 + vassal_opinion = 5 monthly_prestige = 1 @@ -425,3 +433,224 @@ chariot_racer = { ai_energy = 25 ai_boldness = 5 } + +rhetorician_1 = { + index = 479 + + minimum_age = 16 + group = education_learning_rhetorician + level = 1 + + stewardship = 1 + learning = 1 + monthly_learning_lifestyle_xp_gain_mult = 0.1 + + ruler_designer_cost = 40 + + random_creation = 0 + + desc = { + first_valid = { + triggered_desc = { + trigger = { + NOT = { exists = this } + } + desc = trait_rhetorician_1_desc + } + desc = trait_rhetorician_1_character_desc + } + } +} + +rhetorician_2 = { + index = 480 + + minimum_age = 16 + group = education_learning_rhetorician + level = 2 + + stewardship = 2 + learning = 2 + monthly_learning_lifestyle_xp_gain_mult = 0.2 + + ruler_designer_cost = 40 + + random_creation = 0 + + desc = { + first_valid = { + triggered_desc = { + trigger = { + NOT = { exists = this } + } + desc = trait_rhetorician_2_desc + } + desc = trait_rhetorician_2_character_desc + } + } +} + +rhetorician_3 = { + index = 481 + + minimum_age = 16 + group = education_learning_rhetorician + level = 3 + + stewardship = 3 + learning = 3 + monthly_learning_lifestyle_xp_gain_mult = 0.3 + + ruler_designer_cost = 40 + + random_creation = 0 + + desc = { + first_valid = { + triggered_desc = { + trigger = { + NOT = { exists = this } + } + desc = trait_rhetorician_3_desc + } + desc = trait_rhetorician_3_character_desc + } + } +} + +rhetorician_4 = { + index = 480 + + minimum_age = 16 + group = education_learning_rhetorician + level = 4 + + stewardship = 4 + learning = 4 + monthly_learning_lifestyle_xp_gain_mult = 0.4 + + ruler_designer_cost = 40 + + random_creation = 0 + + desc = { + first_valid = { + triggered_desc = { + trigger = { + NOT = { exists = this } + } + desc = trait_rhetorician_4_desc + } + desc = trait_rhetorician_4_character_desc + } + } +} + + +tzykanion_player_1 = { + index = 481 + + minimum_age = 16 + group = tzykanion_player + level = 1 + + prowess = 1 + martial = 1 + + ruler_designer_cost = 40 + + random_creation = 0 + + desc = { + first_valid = { + triggered_desc = { + trigger = { + NOT = { exists = this } + } + desc = trait_tzykanion_player_1_desc + } + desc = trait_tzykanion_player_1_character_desc + } + } +} + +tzykanion_player_2 = { + index = 482 + + minimum_age = 16 + group = tzykanion_player + level = 2 + + prowess = 2 + martial = 1 + + ruler_designer_cost = 40 + + random_creation = 0 + + desc = { + first_valid = { + triggered_desc = { + trigger = { + NOT = { exists = this } + } + desc = trait_tzykanion_player_2_desc + } + desc = trait_tzykanion_player_2_character_desc + } + } +} + +tzykanion_player_3 = { + index = 483 + + minimum_age = 16 + group = tzykanion_player + level = 3 + + prowess = 3 + martial = 2 + + ruler_designer_cost = 40 + + random_creation = 0 + + desc = { + first_valid = { + triggered_desc = { + trigger = { + NOT = { exists = this } + } + desc = trait_tzykanion_player_3_desc + } + desc = trait_tzykanion_player_3_character_desc + } + } +} + +tzykanion_player_4 = { + index = 484 + + minimum_age = 16 + group = tzykanion_player + level = 4 + + prowess = 4 + martial = 2 + + ruler_designer_cost = 40 + + random_creation = 0 + + desc = { + first_valid = { + triggered_desc = { + trigger = { + NOT = { exists = this } + } + desc = trait_tzykanion_player_4_desc + } + desc = trait_tzykanion_player_4_character_desc + } + } +} diff --git a/common/traits/00_traits.txt b/common/traits/00_traits.txt index c6b56729..0cd734d4 100644 --- a/common/traits/00_traits.txt +++ b/common/traits/00_traits.txt @@ -5712,11 +5712,11 @@ thoughtful = { # thoughtful openness_to_experience } opposites = { - shallow - unimaginative - content - uninspired - simple + shallow + unimaginative + content + uninspired + simple } desc = { diff --git a/events/00_ave_maria_events/feodum_events/ave_maria_feodum_events.txt b/events/00_ave_maria_events/feodum_events/ave_maria_feodum_events.txt new file mode 100644 index 00000000..95e1e8ef --- /dev/null +++ b/events/00_ave_maria_events/feodum_events/ave_maria_feodum_events.txt @@ -0,0 +1,76 @@ +######################################################################################## +# # +# AVE MARIA events # +# A Very Extensive Modification for Appropriate Realism and Improved Authenticity # +# # +# DE RE MILITARI events # +# # +######################################################################################## + +# Written by Atreides + +namespace = ave_maria_feodum_events + +# TABLE OF CONTENT: + +##### 1) MAINTENANCE EVENTS +##### Maintenance events + + + +############################################# +# MAINTENANCE # +############################################# + +## triggered event from knights_action +ave_maria_feodum_events.0001 = { + hidden = yes + + + trigger = { + highest_held_title_tier >= tier_kingdom + OR = { + has_government = feudal_government + has_government = tribal_government + } + + } + + immediate = { + + every_vassal = { + save_scope_as = vassal + create_title_and_vassal_change = { + type = independency + save_scope_as = change + add_claim_on_loss = no + } + becomes_independent = { change = scope:change } + resolve_title_and_vassal_change = scope:change + + create_alliance = { + target = root + allied_through_owner = root + allied_through_target = this + } + + every_vassal = { + create_title_and_vassal_change = { + type = independency + save_scope_as = change + add_claim_on_loss = no + } + becomes_independent = { change = scope:change } + resolve_title_and_vassal_change = scope:change + + create_alliance = { + target = prev + allied_through_owner = prev + allied_through_target = this + } + } + + } + } + +} diff --git a/events/00_ave_maria_events/monthly_pulse.txt b/events/00_ave_maria_events/monthly_pulse.txt new file mode 100644 index 00000000..99a68205 --- /dev/null +++ b/events/00_ave_maria_events/monthly_pulse.txt @@ -0,0 +1,640 @@ +namespace = monthly_pulse + +## Start of January +monthly_pulse.01 = { + type = empty + hidden = yes + + immediate = { + ## AVE MARIA MAINTENANCE - OFFICIALS SALARY + title:e_byzantium.holder = { + ## High office salary + every_vassal = { + if = { + limit = { + OR = { + roman_administration_holds_tagma_title_trigger = yes + roman_administration_holds_high_administration_title_trigger = yes + } + } + add_gold = 15 + } + } + ## Strategos salary + every_vassal = { + if = { + limit = { + roman_administration_holds_strategos_title_trigger = yes + } + add_gold = 10 + } + } + ## krites salary + every_vassal = { + if = { + limit = { + roman_administration_holds_strategos_title_trigger = no + roman_administration_holds_tagma_title_trigger = no + has_government = roman_administration_civilian_government + highest_held_title_tier = tier_duchy + } + add_gold = 5 + } + } + } + + ## ORC Malus Distance Application + # every_ruler = { + # if = { + # limit = { + # is_landed = yes + # highest_held_title_tier >= tier_county + # } + # orc_apply_demesne_provinces_distance_malus = yes + # } + # } + } + + option = { + } +} + +## Start of February +monthly_pulse.02 = { + type = empty + hidden = yes + + immediate = { + ## AVE MARIA MAINTENANCE - OFFICIALS SALARY + title:e_byzantium.holder = { + ## High office salary + every_vassal = { + if = { + limit = { + OR = { + roman_administration_holds_tagma_title_trigger = yes + roman_administration_holds_high_administration_title_trigger = yes + } + } + add_gold = 15 + } + } + ## Strategos salary + every_vassal = { + if = { + limit = { + roman_administration_holds_strategos_title_trigger = yes + } + add_gold = 3 + } + } + ## krites salary + every_vassal = { + if = { + limit = { + roman_administration_holds_strategos_title_trigger = no + roman_administration_holds_tagma_title_trigger = no + has_government = roman_administration_civilian_government + highest_held_title_tier = tier_duchy + } + add_gold = 1 + } + } + } + } + + option = { + } +} +## Start of March +monthly_pulse.03 = { + type = empty + hidden = yes + + immediate = { + ## AVE MARIA MAINTENANCE - OFFICIALS SALARY + title:e_byzantium.holder = { + ## High office salary + every_vassal = { + if = { + limit = { + OR = { + roman_administration_holds_tagma_title_trigger = yes + roman_administration_holds_high_administration_title_trigger = yes + } + } + add_gold = 15 + } + } + ## Strategos salary + every_vassal = { + if = { + limit = { + roman_administration_holds_strategos_title_trigger = yes + } + add_gold = 3 + } + } + ## krites salary + every_vassal = { + if = { + limit = { + roman_administration_holds_strategos_title_trigger = no + roman_administration_holds_tagma_title_trigger = no + has_government = roman_administration_civilian_government + highest_held_title_tier = tier_duchy + } + add_gold = 1 + } + } + } + + ## ORC Malus Distance Application + # every_ruler = { + # if = { + # limit = { + # is_landed = yes + # highest_held_title_tier >= tier_county + # } + # orc_apply_demesne_provinces_distance_malus = yes + # } + # } + } + + option = { + } +} +## Start of April +monthly_pulse.04 = { + type = empty + hidden = yes + + immediate = { + ## AVE MARIA MAINTENANCE - OFFICIALS SALARY + title:e_byzantium.holder = { + ## High office salary + every_vassal = { + if = { + limit = { + OR = { + roman_administration_holds_tagma_title_trigger = yes + roman_administration_holds_high_administration_title_trigger = yes + } + } + add_gold = 15 + } + } + ## Strategos salary + every_vassal = { + if = { + limit = { + roman_administration_holds_strategos_title_trigger = yes + } + add_gold = 3 + } + } + ## krites salary + every_vassal = { + if = { + limit = { + roman_administration_holds_strategos_title_trigger = no + roman_administration_holds_tagma_title_trigger = no + has_government = roman_administration_civilian_government + highest_held_title_tier = tier_duchy + } + add_gold = 1 + } + } + } + } + + option = { + } +} +## Start of May +monthly_pulse.05 = { + type = empty + hidden = yes + + immediate = { + ## AVE MARIA MAINTENANCE - OFFICIALS SALARY + title:e_byzantium.holder = { + ## High office salary + every_vassal = { + if = { + limit = { + OR = { + roman_administration_holds_tagma_title_trigger = yes + roman_administration_holds_high_administration_title_trigger = yes + } + } + add_gold = 15 + } + } + ## Strategos salary + every_vassal = { + if = { + limit = { + roman_administration_holds_strategos_title_trigger = yes + } + add_gold = 3 + } + } + ## krites salary + every_vassal = { + if = { + limit = { + roman_administration_holds_strategos_title_trigger = no + roman_administration_holds_tagma_title_trigger = no + has_government = roman_administration_civilian_government + highest_held_title_tier = tier_duchy + } + add_gold = 1 + } + } + } + } + + option = { + } +} +## Start of June +monthly_pulse.06 = { + type = empty + hidden = yes + + immediate = { + ## AVE MARIA MAINTENANCE - OFFICIALS SALARY + title:e_byzantium.holder = { + ## High office salary + every_vassal = { + if = { + limit = { + OR = { + roman_administration_holds_tagma_title_trigger = yes + roman_administration_holds_high_administration_title_trigger = yes + } + } + add_gold = 15 + } + } + ## Strategos salary + every_vassal = { + if = { + limit = { + roman_administration_holds_strategos_title_trigger = yes + } + add_gold = 3 + } + } + ## krites salary + every_vassal = { + if = { + limit = { + roman_administration_holds_strategos_title_trigger = no + roman_administration_holds_tagma_title_trigger = no + has_government = roman_administration_civilian_government + highest_held_title_tier = tier_duchy + } + add_gold = 1 + } + } + } + + ## ORC Malus Distance Application + # every_ruler = { + # if = { + # limit = { + # is_landed = yes + # highest_held_title_tier >= tier_county + # } + # orc_apply_demesne_provinces_distance_malus = yes + # } + # } + } + + option = { + } +} +## Start of July +monthly_pulse.07 = { + type = empty + hidden = yes + + immediate = { + ## AVE MARIA MAINTENANCE - OFFICIALS SALARY + title:e_byzantium.holder = { + ## High office salary + every_vassal = { + if = { + limit = { + OR = { + roman_administration_holds_tagma_title_trigger = yes + roman_administration_holds_high_administration_title_trigger = yes + } + } + add_gold = 15 + } + } + ## Strategos salary + every_vassal = { + if = { + limit = { + roman_administration_holds_strategos_title_trigger = yes + } + add_gold = 3 + } + } + ## krites salary + every_vassal = { + if = { + limit = { + roman_administration_holds_strategos_title_trigger = no + roman_administration_holds_tagma_title_trigger = no + has_government = roman_administration_civilian_government + highest_held_title_tier = tier_duchy + } + add_gold = 1 + } + } + } + } + + option = { + } +} +## Start of August +monthly_pulse.08 = { + type = empty + hidden = yes + + immediate = { + ## AVE MARIA MAINTENANCE - OFFICIALS SALARY + title:e_byzantium.holder = { + ## High office salary + every_vassal = { + if = { + limit = { + OR = { + roman_administration_holds_tagma_title_trigger = yes + roman_administration_holds_high_administration_title_trigger = yes + } + } + add_gold = 15 + } + } + ## Strategos salary + every_vassal = { + if = { + limit = { + roman_administration_holds_strategos_title_trigger = yes + } + add_gold = 3 + } + } + ## krites salary + every_vassal = { + if = { + limit = { + roman_administration_holds_strategos_title_trigger = no + roman_administration_holds_tagma_title_trigger = no + has_government = roman_administration_civilian_government + highest_held_title_tier = tier_duchy + } + add_gold = 1 + } + } + } + } + + option = { + } +} +## Start of September +monthly_pulse.09 = { + type = empty + hidden = yes + + immediate = { + ## AVE MARIA MAINTENANCE - OFFICIALS SALARY + title:e_byzantium.holder = { + ## High office salary + every_vassal = { + if = { + limit = { + OR = { + roman_administration_holds_tagma_title_trigger = yes + roman_administration_holds_high_administration_title_trigger = yes + } + } + add_gold = 15 + } + } + ## Strategos salary + every_vassal = { + if = { + limit = { + roman_administration_holds_strategos_title_trigger = yes + } + add_gold = 3 + } + } + ## krites salary + every_vassal = { + if = { + limit = { + roman_administration_holds_strategos_title_trigger = no + roman_administration_holds_tagma_title_trigger = no + has_government = roman_administration_civilian_government + highest_held_title_tier = tier_duchy + } + add_gold = 1 + } + } + } + + ## ORC Malus Distance Application + # every_ruler = { + # if = { + # limit = { + # is_landed = yes + # highest_held_title_tier >= tier_county + # } + # orc_apply_demesne_provinces_distance_malus = yes + # } + # } + } + + option = { + } +} +## Start of Octobre +monthly_pulse.10 = { + type = empty + hidden = yes + + immediate = { + ## AVE MARIA MAINTENANCE - OFFICIALS SALARY + title:e_byzantium.holder = { + ## High office salary + every_vassal = { + if = { + limit = { + OR = { + roman_administration_holds_tagma_title_trigger = yes + roman_administration_holds_high_administration_title_trigger = yes + } + } + add_gold = 15 + } + } + ## Strategos salary + every_vassal = { + if = { + limit = { + roman_administration_holds_strategos_title_trigger = yes + } + add_gold = 3 + } + } + ## krites salary + every_vassal = { + if = { + limit = { + roman_administration_holds_strategos_title_trigger = no + roman_administration_holds_tagma_title_trigger = no + has_government = roman_administration_civilian_government + highest_held_title_tier = tier_duchy + } + add_gold = 1 + } + } + } + } + + option = { + } +} +## Start of November +monthly_pulse.11 = { + type = empty + hidden = yes + + immediate = { + ## AVE MARIA MAINTENANCE - OFFICIALS SALARY + title:e_byzantium.holder = { + ## High office salary + every_vassal = { + if = { + limit = { + OR = { + roman_administration_holds_tagma_title_trigger = yes + roman_administration_holds_high_administration_title_trigger = yes + } + } + add_gold = 15 + } + } + ## Strategos salary + every_vassal = { + if = { + limit = { + roman_administration_holds_strategos_title_trigger = yes + } + add_gold = 3 + } + } + ## krites salary + every_vassal = { + if = { + limit = { + roman_administration_holds_strategos_title_trigger = no + roman_administration_holds_tagma_title_trigger = no + has_government = roman_administration_civilian_government + highest_held_title_tier = tier_duchy + } + add_gold = 1 + } + } + } + } + + option = { + } +} +## Start of December +monthly_pulse.12 = { + type = empty + hidden = yes + + immediate = { + ## AVE MARIA MAINTENANCE - OFFICIALS SALARY + title:e_byzantium.holder = { + ## Updating Legitimacy and Popularity + roman_administration_update_popularity_variable = yes + roman_administration_update_legitimacy_variable = yes + + every_close_or_extended_family_member = { + roman_administration_update_legitimacy_variable = yes + } + + ## High office salary + every_vassal = { + if = { + limit = { + OR = { + roman_administration_holds_tagma_title_trigger = yes + roman_administration_holds_high_administration_title_trigger = yes + } + } + add_gold = 15 + set_variable = { + name = test_test + value = 1 + } + } + } + ## Strategos salary + every_vassal = { + if = { + limit = { + roman_administration_holds_strategos_title_trigger = yes + } + add_gold = 3 + } + } + ## krites salary + every_vassal = { + if = { + limit = { + roman_administration_holds_strategos_title_trigger = no + roman_administration_holds_tagma_title_trigger = no + has_government = roman_administration_civilian_government + highest_held_title_tier = tier_duchy + } + add_gold = 1 + } + } + + every_vassal = { + ## Updating Legitimacy + roman_administration_update_legitimacy_variable = yes + } + } + } + + option = { + } +} + +monthly_pulse.13 = { + type = empty + hidden = yes + + immediate = { + + } + + option = { + } +} \ No newline at end of file diff --git a/events/00_ave_maria_events/roman_administration_events/ave_maria_roman_administration_reconquests_events.txt b/events/00_ave_maria_events/roman_administration_events/ave_maria_roman_administration_reconquests_events.txt new file mode 100644 index 00000000..ca015d37 --- /dev/null +++ b/events/00_ave_maria_events/roman_administration_events/ave_maria_roman_administration_reconquests_events.txt @@ -0,0 +1,289 @@ +######################################################################################## +# # +# AVE MARIA events # +# A Very Extensive Modification for Appropriate Realism and Improved Authenticity # +# # +# ROMAN ADMINISTRATION EVENTS # +# # +######################################################################################## + +# Written by Atreides + +namespace = ave_maria_roman_administration_reconquest_events + +# ave_maria_roman_administration_reconquest_events + + +# TABLE OF CONTENT: + + + +############################################# +# REPLACE ME # +############################################# + +ave_maria_roman_administration_reconquest_events.0001 = { + type = character_event + title = ave_maria_roman_administration_reconquest_events.0001.title + desc = ave_maria_roman_administration_reconquest_events.0001.desc + theme = crown + override_background = { + event_background = ave_maria_constantinople_great_palace_interior + } + left_portrait = root + + trigger = { + + } + + immediate = { + + } + + ## Make it a theme + option = { + name = ave_maria_roman_administration_reconquest_events.0001.OPT.A + custom_tooltip = ave_maria_roman_administration_reconquest_events.0001.OPT.A.tt + create_character = { + employer = root + template = tagma_commander_character + gender_female_chance = 0 + save_scope_as = new_guy + } + scope:new_guy = { + add_random_hexaco_personality_trait = { WHO = this } + } + hidden_effect = { + scope:title = { + every_in_de_jure_hierarchy = { + limit = { + tier = tier_county + NOT = { + this = { has_title_law = ave_maria_roman_administration_family_succession_law } + has_title_law = ave_maria_roman_administration_family_succession_law + } + NOT = { this = title:c_byzantion } + holder = { + roman_administration_character_is_in_the_empire = yes + } + } + create_title_and_vassal_change = { + type = granted + save_scope_as = change + add_claim_on_loss = yes + } + change_title_holder = { + holder = scope:new_guy + change = scope:change + } + resolve_title_and_vassal_change = scope:change + } + create_title_and_vassal_change = { + type = granted + save_scope_as = change + add_claim_on_loss = yes + } + change_title_holder = { + holder = scope:new_guy + change = scope:change + } + resolve_title_and_vassal_change = scope:change + + add_title_law = ave_maria_roman_administration_tagma_succession_law + add_title_law = male_only_law + } + } + + + ai_chance = { + base = 80 + } + } + + ## Make it a doukaton + option = { + name = ave_maria_roman_administration_reconquest_events.0001.OPT.B + custom_tooltip = ave_maria_roman_administration_reconquest_events.0001.OPT.B.tt + create_character = { + employer = root + template = tagma_commander_character + gender_female_chance = 0 + save_scope_as = new_guy + } + scope:new_guy = { + add_random_hexaco_personality_trait = { WHO = this } + } + hidden_effect = { + scope:title = { + every_in_de_jure_hierarchy = { + limit = { + tier = tier_county + NOT = { + this = { has_title_law = ave_maria_roman_administration_family_succession_law } + has_title_law = ave_maria_roman_administration_family_succession_law + } + NOT = { this = title:c_byzantion } + holder = { + roman_administration_character_is_in_the_empire = yes + } + } + create_title_and_vassal_change = { + type = granted + save_scope_as = change + add_claim_on_loss = yes + } + change_title_holder = { + holder = scope:new_guy + change = scope:change + } + resolve_title_and_vassal_change = scope:change + } + create_title_and_vassal_change = { + type = granted + save_scope_as = change + add_claim_on_loss = yes + } + change_title_holder = { + holder = scope:new_guy + change = scope:change + } + resolve_title_and_vassal_change = scope:change + + add_title_law = ave_maria_roman_administration_tagma_succession_law + add_title_law = male_only_law + + holder = { + change_government = roman_administration_doukaton_government + vassal_contract_set_obligation_level = { + type = ave_maria_roman_administration_special_contract + level = 1 + } + vassal_contract_set_obligation_level = { + type = imperial_obligation_doukaton + level = 5 + } + } + } + } + + ai_chance = { + base = 10 + + modifier = { + factor = 100 + scope:title = { + any_in_de_jure_hierarchy = { + tier = tier_county + #continue = { tier > tier_barony } + any_neighboring_county = { + tier = tier_county + holder = { + NOT = { + any_liege_or_above = { + this = title:e_byzantium.holder + } + } + } + } + } + } + } + } + + } + + ## Make it a kouratoreia + option = { + name = ave_maria_roman_administration_reconquest_events.0001.OPT.C + custom_tooltip = ave_maria_roman_administration_reconquest_events.0001.OPT.C.tt + create_character = { + employer = root + template = eunuch_character + gender_female_chance = 0 + save_scope_as = new_guy + } + scope:new_guy = { + add_trait = rhetorician_2 + add_random_hexaco_personality_trait = { WHO = this } + } + hidden_effect = { + scope:title = { + every_in_de_jure_hierarchy = { + limit = { + tier = tier_county + NOT = { + this = { has_title_law = ave_maria_roman_administration_family_succession_law } + has_title_law = ave_maria_roman_administration_family_succession_law + } + NOT = { this = title:c_byzantion } + holder = { + roman_administration_character_is_in_the_empire = yes + } + } + create_title_and_vassal_change = { + type = granted + save_scope_as = change + add_claim_on_loss = yes + } + change_title_holder = { + holder = scope:new_guy + change = scope:change + } + resolve_title_and_vassal_change = scope:change + } + create_title_and_vassal_change = { + type = granted + save_scope_as = change + add_claim_on_loss = yes + } + change_title_holder = { + holder = scope:new_guy + change = scope:change + } + resolve_title_and_vassal_change = scope:change + + add_title_law = ave_maria_roman_administration_tagma_succession_law + add_title_law = male_only_law + + holder = { + change_government = roman_administration_kouratoreia_government + vassal_contract_set_obligation_level = { + type = ave_maria_roman_administration_special_contract + level = 2 + } + vassal_contract_set_obligation_level = { + type = imperial_obligation_kouratoreia + level = 2 + } + } + } + } + + ai_chance = { + base = 10 + modifier = { + factor = 10 + root = { + has_trait = greedy + } + } + } + } + + ## I'll keep it + option = { + name = ave_maria_roman_administration_reconquest_events.0001.OPT.F + roman_administration_update_popularity_variable = yes + change_variable = { + name = roman_administration_popularity + add = 100 + } + custom_tooltip = ave_maria_roman_administration_reconquest_events.0001.OPT.F.tt.1 + custom_tooltip = ave_maria_roman_administration_reconquest_events.0001.OPT.F.tt.2 + + ai_chance = { + base = 0 + } + } +} + diff --git a/events/00_ave_maria_events/roman_administration_events/ave_maria_roman_administration_sports_events.txt b/events/00_ave_maria_events/roman_administration_events/ave_maria_roman_administration_sports_events.txt new file mode 100644 index 00000000..e927b262 --- /dev/null +++ b/events/00_ave_maria_events/roman_administration_events/ave_maria_roman_administration_sports_events.txt @@ -0,0 +1,3307 @@ +######################################################################################## +# # +# AVE MARIA events # +# A Very Extensive Modification for Appropriate Realism and Improved Authenticity # +# # +# ROMAN ADMINISTRATION EVENTS # +# # +######################################################################################## + +# Written by Atreides + +namespace = ave_maria_roman_administration_sports_events + +# ave_maria_roman_administration_sports_events + + +# TABLE OF CONTENT: + +## TZYKANION GAME FROM DECISION +#### Initial invitation triggered from the activity on_start, triggers the following event once 8 players are found +#### Hidden event to split players into teams (assigning variables and saving scopes) and triggering the next event +#### Event to inform the players of their respective team, start the match by calculating each team's added up prowess and see who is winning + +## TZYKANION GAME FROM INTERACTION/CHOOSING YOUR TEAM + + +############################################# +# TZYKANION GAME FROM DECISION # +############################################# + +##Test filler +ave_maria_roman_administration_sports_events.0000 = { + type = character_event + title = ave_maria_roman_administration_sports_events.0001.title + desc = ave_maria_roman_administration_sports_events.0001.desc + theme = crown + override_background = { + event_background = ave_maria_constantinople_great_palace_interior + } + left_portrait = root + + trigger = { + + } + + immediate = { + + } + + ## + option = { + name = ave_maria_roman_administration_sports_events.0001.OPT.A + + + + ai_chance = { + base = 80 + } + } + + ## + option = { + name = ave_maria_roman_administration_sports_events.0001.OPT.B + + + ai_chance = { + base = 10 + + + } + } + + } + + ## + option = { + name = ave_maria_roman_administration_sports_events.0001.OPT.C + + } + + ai_chance = { + base = 10 + + } + } + + ## + option = { + name = ave_maria_roman_administration_sports_events.0001.OPT.F + + + ai_chance = { + base = 0 + } + } +} + +### Tzykanion - initial invitation +ave_maria_roman_administration_sports_events.0001 = { + type = letter_event + opening = { + desc = ave_maria_roman_administration_sports_events.0001.opening + } + desc = { + desc = ave_maria_roman_administration_sports_events.0001.opening_desc + first_valid = { + triggered_desc = { + trigger = { + reverse_opinion = { + target = scope:sender + value > 50 + } + } + desc = ave_maria_roman_administration_sports_events.0001.host_likes_me + } + triggered_desc = { + trigger = { + reverse_opinion = { + target = scope:sender + value > -1 + } + } + desc = ave_maria_roman_administration_sports_events.0001.host_gets_along_with_me + } + desc = ave_maria_roman_administration_sports_events.0001.host_dislikes_me + } + } + sender = scope:sender + + trigger = { + is_available_for_activity_trigger = yes + exists = scope:activity.activity_owner + NOT = { exists = var:is_handling_tzykanion_invitation } + scope:activity.activity_owner = { + trigger_if = { + limit = { + has_variable = tzykanion_team_members + } + var:tzykanion_team_members < 8 + } + } + } + + on_trigger_fail = { #Trigger invitation again if it was blocked because the character was handling another invitation + if = { + limit = { + is_available_for_activity_trigger = yes + exists = var:is_handling_tzykanion_invitation + scope:activity.activity_owner = { + NOT = { + has_variable = tzykanion_team_members + var:tzykanion_team_members >= 8 + } + } + } + trigger_event = { + id = ave_maria_roman_administration_sports_events.0001 + days = 1 + } + } + } + + immediate = { + scope:activity.activity_owner = { + save_scope_as = sender + } + scope:activity.activity_province = { + barony = { + save_scope_as = barony + } + } + set_variable = { + name = is_handling_tzykanion_invitation + value = scope:sender + days = 20 + } + } + + option = { + name = ave_maria_roman_administration_sports_events.0001.a + trigger = { + opinion = { + target = liege + value >= 0 + } + } + scope:activity = { + accept_invitation_for_character = prev + } + set_variable = { + name = booked_for_a_party + value = scope:sender + days = 20 + } + stress_impact = { + diligent = activity_stress_loss_impact + athletic = activity_stress_loss_impact + brave = activity_stress_loss_impact + } + ## Counting how many players you have + scope:activity.activity_owner = { + if = { + limit = { + NOT = { + has_variable = tzykanion_team_members + } + } + set_variable = { + name = tzykanion_team_members + value = 0 + } + change_variable = { + name = tzykanion_team_members + add = 1 + } + } + if = { + limit = { + has_variable = tzykanion_team_members + } + change_variable = { + name = tzykanion_team_members + add = 1 + } + } + } + ai_chance = { + base = 100 + opinion_modifier = { + opinion_target = scope:sender + } + } + } + + option = { + name = ave_maria_roman_administration_sports_events.0001.b + trigger = { + opinion = { + target = liege + value < 0 + } + } + scope:activity = { + accept_invitation_for_character = prev + } + set_variable = { + name = booked_for_a_party + value = scope:sender + days = 20 + } + stress_impact = { + diligent = major_stress_loss + athletic = major_stress_loss + brave = major_stress_loss + } + ## Counting how many players you have + scope:activity.activity_owner = { + if = { + limit = { + NOT = { + has_variable = tzykanion_team_members + } + } + set_variable = { + name = tzykanion_team_members + value = 0 + } + change_variable = { + name = tzykanion_team_members + add = 1 + } + } + if = { + limit = { + has_variable = tzykanion_team_members + } + change_variable = { + name = tzykanion_team_members + add = 1 + } + } + } + ai_chance = { + base = 100 + opinion_modifier = { + opinion_target = scope:sender + } + } + } + + option = { + name = ave_maria_roman_administration_sports_events.0001.c + trigger = { + opinion = { + target = liege + value > -1 + } + } + scope:activity = { + decline_invitation_for_character = prev + } + stress_impact = { + reclusive = minor_stress_loss + } + ai_chance = { + base = 10 + ai_value_modifier = { + ai_boldness = 0.2 + } + } + } + + option = { + name = ave_maria_roman_administration_sports_events.0001.d + trigger = { + opinion = { + target = liege + value < 0 + } + } + scope:activity = { + decline_invitation_for_character = prev + } + stress_impact = { + reclusive = minor_stress_loss + } + ai_chance = { + base = 10 + ai_value_modifier = { + ai_boldness = 0.2 + } + } + } + + after = { + remove_variable = is_handling_tzykanion_invitation + } +} + +## Hidden event to give participants their events and divide up into teams +ave_maria_roman_administration_sports_events.0002 = { + hidden = yes + + immediate = { + #Look for various conditions for host events to address: + + # Look for a target you're trying to befriend + if = { + limit = { + any_scheme = { + scheme_type = befriend + scheme_target = { + in_activity_with = scope:activity.activity_owner + } + } + } + random_scheme = { + limit = { + scheme_type = befriend + scheme_target = { in_activity_with = scope:activity.activity_owner } + } + scheme_target = { + scope:activity = { + set_variable = { + name = potential_friend + value = prev + } + } + } + scheme_freeze_days = 10 + } + } + + ## Divide participants into teams + if = { + limit = { + scope:activity.activity_owner = { + this = root + } + } + scope:activity = { + every_participant = { + add_to_list = tzykanion_players + + if = { + limit = { + NOT = { + has_variable = roman_administration_tzykanion_xp + } + } + set_variable = { + name = roman_administration_tzykanion_xp + value = 0 + } + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + } + change_variable = { + name = roman_administration_tzykanion_xp + add = 1 + } + } + } + } + ordered_in_list = { + list = tzykanion_players + max = 4 + set_variable = { + name = tzykanion_team_1 + value = this + } + } + ordered_in_list = { + list = tzykanion_players + limit = { + NOT = { + has_variable = tzykanion_team_1 + } + } + max = 4 + set_variable = { + name = tzykanion_team_2 + value = this + } + } + + ## Getting the proper saved scopes for each team member + ## Team 1 - first team member is always root/host + if = { + limit = { + has_variable = tzykanion_team_1 + } + scope:activity.activity_owner = { + save_scope_as = tzykanion_team_1_player_1 + } + every_in_list = { + list = tzykanion_players + limit = { + has_variable = tzykanion_team_1 + } + save_scope_as = tzykanion_team_1_player_2 + } + every_in_list = { + list = tzykanion_players + limit = { + has_variable = tzykanion_team_1 + NOT = { + this = scope:tzykanion_team_1_player_2 + } + } + save_scope_as = tzykanion_team_1_player_3 + } + every_in_list = { + list = tzykanion_players + limit = { + has_variable = tzykanion_team_1 + NOT = { + this = scope:tzykanion_team_1_player_2 + this = scope:tzykanion_team_1_player_3 + } + } + save_scope_as = tzykanion_team_1_player_4 + } + } + ## Team 2 + every_in_list = { + list = tzykanion_players + limit = { + has_variable = tzykanion_team_2 + } + save_scope_as = tzykanion_team_2_player_1 + } + every_in_list = { + list = tzykanion_players + limit = { + has_variable = tzykanion_team_2 + NOT = { + this = scope:tzykanion_team_2_player_1 + } + } + save_scope_as = tzykanion_team_2_player_2 + } + every_in_list = { + list = tzykanion_players + limit = { + has_variable = tzykanion_team_2 + NOT = { + this = scope:tzykanion_team_2_player_1 + this = scope:tzykanion_team_2_player_2 + } + } + save_scope_as = tzykanion_team_2_player_3 + } + every_in_list = { + list = tzykanion_players + limit = { + has_variable = tzykanion_team_2 + NOT = { + this = scope:tzykanion_team_2_player_1 + this = scope:tzykanion_team_2_player_2 + this = scope:tzykanion_team_2_player_3 + } + } + save_scope_as = tzykanion_team_2_player_4 + } + } + + #Give all participants the start of the match event + scope:activity = { + every_participant = { + if = { #You're busy at another party! (invites were sent the same day, but you agreed to another party after this one ) + limit = { + exists = var:booked_for_a_party + var:booked_for_a_party = { NOT = { this = scope:activity.activity_owner } } + } + trigger_event = feast.0010 + } + else = { + trigger_event = ave_maria_roman_administration_sports_events.2001 + } + } + } + } +} + +## Start of the match +ave_maria_roman_administration_sports_events.2001 = { + type = character_event + title = ave_maria_roman_administration_sports_events.2001.title + + theme = crown + override_background = { + event_background = ave_maria_tzykanion_field + } + left_portrait = { + character = scope:tzykanion_team_1_player_1 + # trigger = { + # has_variable = tzykanion_team_1 + # } + animation = war_over_win + } + ## Team 1 portraits - for team 1 root + right_portrait = { + character = scope:tzykanion_team_1_player_2 + trigger = { + root = { + has_variable = tzykanion_team_1 + } + } + animation = war_over_win + } + lower_center_portrait = { + character = scope:tzykanion_team_1_player_3 + trigger = { + root = { + has_variable = tzykanion_team_1 + } + } + animation = war_over_win + } + lower_left_portrait = { + character = scope:tzykanion_team_1_player_4 + trigger = { + root = { + has_variable = tzykanion_team_1 + } + } + animation = war_over_win + } + + desc = { + first_valid = { + triggered_desc = { + trigger = { + scope:activity.activity_owner = { + this = root + } + } + desc = ave_maria_roman_administration_sports_events.2001.desc.host + } + triggered_desc = { + trigger = { + scope:activity.activity_owner = { + NOT = { this = root } + } + } + desc = ave_maria_roman_administration_sports_events.2001.desc.participant + } + } + } + + trigger = { + + } + + immediate = { + ## Getting the prowess of each team added up + if = { + limit = { + scope:activity.activity_owner = { + this = root + } + } + set_variable = { + name = tzykanion_team_1_skill + value = 0 + } + set_variable = { + name = tzykanion_team_2_skill + value = 0 + } + scope:activity = { + every_participant = { + if = { + limit = { + has_variable = tzykanion_team_1 + } + root = { + change_variable = { + name = tzykanion_team_1_skill + add = prev.prowess + } + } + } + } + every_participant = { + if = { + limit = { + has_variable = tzykanion_team_2 + } + root = { + change_variable = { + name = tzykanion_team_2_skill + add = prev.prowess + } + } + } + } + } + } + + + } + + ## start of the match - host team is tzykanion_team_1, tzykanion_team_2 are the other team - deciding the outcome of the match on clicking + option = { + name = ave_maria_roman_administration_sports_events.2001.OPT.A + custom_tooltip = ave_maria_roman_administration_sports_events.2001.OPT.A.tt + ## Trigger the next event from the result of team's skill difference only from the host scope/perspective + if = { + limit = { + scope:activity.activity_owner = { + this = root + } + } + ## Team 1 is winning + if = { + limit = { + var:tzykanion_team_1_skill > var:tzykanion_team_2_skill + } + ## How much are they winning ? + change_variable = { + name = tzykanion_team_1_skill + subtract = var:tzykanion_team_2_skill + } + + ## Setting up the flags on the host for tracking + ## Winning sligthly team 1 + if = { + limit = { + var:tzykanion_team_1_skill <= 5 + } + add_character_flag = team_1_winning_slightly + } + ## Winning normally team 1 + if = { + limit = { + var:tzykanion_team_1_skill > 5 + var:tzykanion_team_1_skill <= 10 + } + add_character_flag = team_1_winning_normally + } + ## Winning easily team 1 + if = { + limit = { + var:tzykanion_team_1_skill > 10 + } + add_character_flag = team_1_winning_easily + } + ## Sending the result event of first matches to each team members + scope:activity = { + every_participant = { + if = { + limit = { + has_variable = tzykanion_team_1 + } + } + ## next event in the chain + trigger_event = ave_maria_roman_administration_sports_events.2002 + } + every_participant = { + if = { + limit = { + has_variable = tzykanion_team_2 + } + } + ## next event in the chain + trigger_event = ave_maria_roman_administration_sports_events.2003 + } + } + + } + ## Team 2 is winning + else_if = { + limit = { + var:tzykanion_team_2_skill > var:tzykanion_team_1_skill + } + ## How much are they winning ? + change_variable = { + name = tzykanion_team_2_skill + subtract = var:tzykanion_team_1_skill + } + + ## Setting up the flags on the host for tracking + ## Winning sligthly team 2 + if = { + limit = { + var:tzykanion_team_1_skill <= 5 + } + add_character_flag = team_2_winning_slightly + } + ## Winning normally team 2 + if = { + limit = { + var:tzykanion_team_1_skill > 5 + var:tzykanion_team_1_skill <= 10 + } + add_character_flag = team_2_winning_normally + } + ## Winning easily team 2 + if = { + limit = { + var:tzykanion_team_1_skill > 10 + } + add_character_flag = team_2_winning_easily + } + ## Sending the result event of first matches to each team members + scope:activity = { + every_participant = { + if = { + limit = { + has_variable = tzykanion_team_1 + } + } + ## next event in the chain + trigger_event = ave_maria_roman_administration_sports_events.2002 + } + every_participant = { + if = { + limit = { + has_variable = tzykanion_team_2 + } + } + ## next event in the chain + trigger_event = ave_maria_roman_administration_sports_events.2003 + } + } + + } + ## tie + else_if = { + limit = { + var:tzykanion_team_1_skill = var:tzykanion_team_2_skill + } + add_character_flag = tie + scope:activity = { + every_participant = { + if = { + limit = { + has_variable = tzykanion_team_1 + } + } + ## next event in the chain for team 1 + trigger_event = ave_maria_roman_administration_sports_events.2002 + } + every_participant = { + if = { + limit = { + has_variable = tzykanion_team_2 + } + } + ## next event in the chain for team 2 + trigger_event = ave_maria_roman_administration_sports_events.2003 + } + } + } + } + } +} + +## Result of first rounds - Team 1 - events are separated because portraits do not seem to support multiple entries/triggers +ave_maria_roman_administration_sports_events.2002 = { + type = character_event + title = ave_maria_roman_administration_sports_events.2001.title + + theme = crown + override_background = { + event_background = ave_maria_tzykanion_field + } + left_portrait = { + character = scope:tzykanion_team_1_player_1 + trigger = { + root = { + has_variable = tzykanion_team_1 + } + } + animation = war_over_win + } + ## Team 1 portraits - for team 1 root + right_portrait = { + character = scope:tzykanion_team_1_player_2 + trigger = { + root = { + has_variable = tzykanion_team_1 + } + } + animation = war_over_win + } + lower_center_portrait = { + character = scope:tzykanion_team_1_player_3 + trigger = { + root = { + has_variable = tzykanion_team_1 + } + } + animation = war_over_win + } + lower_left_portrait = { + character = scope:tzykanion_team_1_player_4 + trigger = { + root = { + has_variable = tzykanion_team_1 + } + } + animation = war_over_win + } + + desc = { + first_valid = { + triggered_desc = { + trigger = { + has_variable = tzykanion_team_1 + scope:activity.activity_owner = { + has_character_flag = team_1_winning_slightly + } + } + desc = ave_maria_roman_administration_sports_events.2002.desc.team_1_winning_slightly + } + triggered_desc = { + trigger = { + has_variable = tzykanion_team_1 + scope:activity.activity_owner = { + has_character_flag = team_1_winning_normally + } + } + desc = ave_maria_roman_administration_sports_events.2002.desc.team_1_winning_normally + } + triggered_desc = { + trigger = { + has_variable = tzykanion_team_1 + scope:activity.activity_owner = { + has_character_flag = team_1_winning_easily + } + } + desc = ave_maria_roman_administration_sports_events.2002.desc.team_1_winning_easily + } + triggered_desc = { + trigger = { + has_variable = tzykanion_team_1 + scope:activity.activity_owner = { + has_character_flag = team_2_winning_slightly + } + } + desc = ave_maria_roman_administration_sports_events.2002.desc.team_2_winning_slightly + } + triggered_desc = { + trigger = { + has_variable = tzykanion_team_1 + scope:activity.activity_owner = { + has_character_flag = team_2_winning_normally + } + } + desc = ave_maria_roman_administration_sports_events.2002.desc.team_2_winning_normally + } + triggered_desc = { + trigger = { + has_variable = tzykanion_team_1 + scope:activity.activity_owner = { + has_character_flag = team_2_winning_easily + } + } + desc = ave_maria_roman_administration_sports_events.2002.desc.team_2_winning_easily + } + triggered_desc = { + trigger = { + has_variable = tzykanion_team_1 + scope:activity.activity_owner = { + has_character_flag = tie + } + } + desc = ave_maria_roman_administration_sports_events.2002.desc.tie + } + } + } + + trigger = { + + } + + immediate = { + + } + + ## Team 1 Winning - Rejoice, gain prestige + ## Team 1 losing slightly - team leader can do a daring manoeuvre to try to win/tie + ## Team 1 losing normally - team leader can do a daring manoeuvre to try to tie + ## Team 1 losing badly - team leader can do a daring manoeuvre to try to have an honourable loss + ## Team 1 losing regardless of gravity - information for all the other players + ## Team 1 losing regardeless of gravity - give up and take an infamouse loss + ## Tie + + + ## Team 1 winning - option for team 1 members + option = { + name = ave_maria_roman_administration_sports_events.2002.OPT.A + trigger = { + has_variable = tzykanion_team_1 + scope:activity.activity_owner = { + OR = { + has_character_flag = team_1_winning_slightly + has_character_flag = team_1_winning_normally + has_character_flag = team_1_winning_easily + } + } + } + add_prestige = 50 + } + + ## Team 2 winning slightly - option for team 1 team 1st member to do a daring manoeuvre against a team 2 player to get victory + option = { + name = ave_maria_roman_administration_sports_events.2002.OPT.B + trigger = { + has_variable = tzykanion_team_1 + this = scope:tzykanion_team_1_player_1 + scope:activity.activity_owner = { + OR = { + has_character_flag = tie + has_character_flag = team_2_winning_slightly + } + } + } + random_in_list = { + list = tzykanion_players + limit = { + has_variable = tzykanion_team_2 + } + save_scope_as = tzykanion_nemesis + } + duel = { + skill = prowess + target = scope:tzykanion_nemesis + + ## Huge success + 15 = { + compare_modifier = { + value = scope:duel_value + multiplier = 1 + } + desc = ave_maria_roman_administration_sports_events.2002.OPT.B.success + add_prestige = 25 + ## subsequent event + scope:activity = { + scope:activity.activity_owner = { + add_character_flag = team_1_clear_victory + } + } + } + ## Success + 50 = { + compare_modifier = { + value = scope:duel_value + multiplier = 2 + } + add_prestige = 25 + desc = ave_maria_roman_administration_sports_events.2002.OPT.B.small_success + ## subsequent event + scope:activity = { + scope:activity.activity_owner = { + add_character_flag = team_1_close_victory + } + } + } + ## Failure + 25 = { + compare_modifier = { + value = scope:duel_value + multiplier = -1 + } + desc = ave_maria_roman_administration_sports_events.2002.OPT.B.failure + add_prestige = -25 + ## subsequent event + scope:activity = { + scope:activity.activity_owner = { + add_character_flag = team_1_honorable_loss + } + } + + } + } + + ai_chance = { + base = 50 + } + } + + ## Team 2 winning normally - option for team 1 team 1st member to do a daring manoeuvre against a team 2 player to get tie + option = { + name = ave_maria_roman_administration_sports_events.2002.OPT.C + trigger = { + has_variable = tzykanion_team_1 + this = scope:tzykanion_team_1_player_1 + scope:activity.activity_owner = { + has_character_flag = team_2_winning_normally + } + } + random_in_list = { + list = tzykanion_players + limit = { + has_variable = tzykanion_team_2 + } + save_scope_as = tzykanion_nemesis + } + duel = { + skill = prowess + target = scope:tzykanion_nemesis + + ## Huge success + 15 = { + compare_modifier = { + value = scope:duel_value + multiplier = 1 + } + desc = ave_maria_roman_administration_sports_events.2002.OPT.C.success + add_prestige = 25 + ## subsequent event + scope:activity = { + scope:activity.activity_owner = { + add_character_flag = team_1_close_victory + } + + } + } + ## Success + 50 = { + compare_modifier = { + value = scope:duel_value + multiplier = 2 + } + add_prestige = 25 + desc = ave_maria_roman_administration_sports_events.2002.OPT.C.small_success + ## subsequent event + scope:activity = { + scope:activity.activity_owner = { + add_character_flag = second_round_tie + } + } + } + ## Failure + 25 = { + compare_modifier = { + value = scope:duel_value + multiplier = -1 + } + desc = ave_maria_roman_administration_sports_events.2002.OPT.C.failure + add_prestige = -25 + ## subsequent event + scope:activity = { + scope:activity.activity_owner = { + add_character_flag = team_1_honorable_loss + } + } + + } + } + + ai_chance = { + base = 60 + } + } + + ## Team 2 winning easily - option for team 1 team 1st member to do a daring manoeuvre against a team 2 player to save face + option = { + name = ave_maria_roman_administration_sports_events.2002.OPT.D + trigger = { + has_variable = tzykanion_team_1 + this = scope:tzykanion_team_1_player_1 + scope:activity.activity_owner = { + has_character_flag = team_2_winning_easily + } + } + random_in_list = { + list = tzykanion_players + limit = { + has_variable = tzykanion_team_2 + } + save_scope_as = tzykanion_nemesis + } + duel = { + skill = prowess + target = scope:tzykanion_nemesis + + ## Huge success - you win ! + 15 = { + compare_modifier = { + value = scope:duel_value + multiplier = 1 + } + desc = ave_maria_roman_administration_sports_events.2002.OPT.C.success + add_prestige = 25 + ## subsequent event + scope:activity = { + scope:activity.activity_owner = { + add_character_flag = team_1_honorable_loss + } + } + } + ## Success - you win + 50 = { + compare_modifier = { + value = scope:duel_value + multiplier = 2 + } + add_prestige = 25 + desc = ave_maria_roman_administration_sports_events.2002.OPT.C.small_success + ## subsequent event + scope:activity = { + scope:activity.activity_owner = { + add_character_flag = team_1_honorable_loss + } + } + } + 25 = { + compare_modifier = { + value = scope:duel_value + multiplier = -1 + } + desc = ave_maria_roman_administration_sports_events.2002.OPT.C.failure + add_prestige = -25 + ## subsequent event + scope:activity = { + scope:activity.activity_owner = { + add_character_flag = team_1_humiliating_loss + } + } + + } + } + + ai_chance = { + base = 60 + } + } + + ## Team 2 winning regardless of gravity - info event for other team players outside of the first + option = { + name = ave_maria_roman_administration_sports_events.2002.OPT.E + trigger = { + has_variable = tzykanion_team_1 + NOT = { + this = scope:tzykanion_team_1_player_1 + } + scope:activity.activity_owner = { + OR = { + has_character_flag = team_2_winning_slightly + has_character_flag = team_2_winning_normally + has_character_flag = team_2_winning_easily + } + } + } + add_prestige = -50 + } + + ## Team 2 winning slightly/normally/easily - give up any hope for team 1 members + option = { + name = ave_maria_roman_administration_sports_events.2002.OPT.F + trigger = { + has_variable = tzykanion_team_1 + this = scope:tzykanion_team_1_player_1 + scope:activity.activity_owner = { + OR = { + has_character_flag = team_2_winning_slightly + has_character_flag = team_2_winning_normally + has_character_flag = team_2_winning_easily + } + } + } + add_prestige = -100 + every_in_list = { + list = tzykanion_players + limit = { + NOT = { this = root } + has_variable = tzykanion_team_1 + } + add_prestige = -50 + } + ai_chance = { + base = 40 + modifier = { + factor = 0 + OR = { + has_trait = ambitious + has_trait = diligent + has_trait = arrogant + has_trait = brave + has_trait = vengeful + has_trait = stubborn + has_trait = wrathful + has_trait = impatient + has_trait = thorough + has_trait = reckless + } + } + modifier = { + factor = 10 + OR = { + has_trait = lazy + has_trait = vulnerable + has_trait = fickle + has_trait = negligent + has_trait = content + } + } + } + } + + ## Tie - info event for other team players outside of the first when tie + option = { + name = ave_maria_roman_administration_sports_events.2002.OPT.G + trigger = { + has_variable = tzykanion_team_1 + NOT = { + this = scope:tzykanion_team_1_player_1 + } + scope:activity.activity_owner = { + has_character_flag = tie + } + } + add_prestige = 25 + } + + after = { + if = { + limit = { + this = scope:tzykanion_team_1_player_1 + } + scope:activity = { + every_participant = { + if = { + limit = { + has_variable = tzykanion_team_1 + } + trigger_event = { id = ave_maria_roman_administration_sports_events.2004 delayed = yes } + } + } + } + + } + if = { + limit = { + this = scope:tzykanion_team_2_player_1 + } + scope:activity = { + every_participant = { + if = { + limit = { + has_variable = tzykanion_team_2 + } + trigger_event = { id = ave_maria_roman_administration_sports_events.2005 delayed = yes } + } + } + } + + } + } +} + +## Result of first rounds - Team 2 - events are separated because portraits do not seem to support multiple entries/triggers +ave_maria_roman_administration_sports_events.2003 = { + type = character_event + title = ave_maria_roman_administration_sports_events.2001.title + theme = crown + override_background = { + event_background = ave_maria_tzykanion_field + } + ## Team 2 portraits - for team 2 root + left_portrait = { + character = scope:tzykanion_team_2_player_1 + trigger = { + root = { + has_variable = tzykanion_team_2 + } + } + animation = war_over_win + } + right_portrait = { + character = scope:tzykanion_team_2_player_2 + trigger = { + root = { + has_variable = tzykanion_team_2 + } + } + animation = war_over_win + } + lower_center_portrait = { + character = scope:tzykanion_team_2_player_3 + trigger = { + root = { + has_variable = tzykanion_team_2 + } + } + animation = war_over_win + } + lower_left_portrait = { + character = scope:tzykanion_team_2_player_4 + trigger = { + root = { + has_variable = tzykanion_team_2 + } + } + animation = war_over_win + } + + desc = { + first_valid = { + triggered_desc = { + trigger = { + has_variable = tzykanion_team_2 + scope:activity.activity_owner = { + has_character_flag = team_2_winning_slightly + } + } + desc = ave_maria_roman_administration_sports_events.2003.desc.team_1_winning_slightly + } + triggered_desc = { + trigger = { + has_variable = tzykanion_team_2 + scope:activity.activity_owner = { + has_character_flag = team_2_winning_normally + } + } + desc = ave_maria_roman_administration_sports_events.2002.desc.team_1_winning_normally + } + triggered_desc = { + trigger = { + has_variable = tzykanion_team_2 + scope:activity.activity_owner = { + has_character_flag = team_2_winning_easily + } + } + desc = ave_maria_roman_administration_sports_events.2002.desc.team_1_winning_easily + } + triggered_desc = { + trigger = { + has_variable = tzykanion_team_2 + scope:activity.activity_owner = { + has_character_flag = team_1_winning_slightly + } + } + desc = ave_maria_roman_administration_sports_events.2002.desc.team_2_winning_slightly + } + triggered_desc = { + trigger = { + has_variable = tzykanion_team_2 + scope:activity.activity_owner = { + has_character_flag = team_1_winning_normally + } + } + desc = ave_maria_roman_administration_sports_events.2002.desc.team_2_winning_normally + } + triggered_desc = { + trigger = { + has_variable = tzykanion_team_2 + scope:activity.activity_owner = { + has_character_flag = team_1_winning_easily + } + } + desc = ave_maria_roman_administration_sports_events.2002.desc.team_2_winning_easily + } + triggered_desc = { + trigger = { + has_variable = tzykanion_team_2 + scope:activity.activity_owner = { + has_character_flag = tie + } + } + desc = ave_maria_roman_administration_sports_events.2002.desc.tie + } + } + } + + trigger = { + + } + + immediate = { + + } + + ## Team 2 Winning - Rejoice, gain prestige + ## Team 2 losing slightly - do a daring manoeuvre to try to win/tie + ## Team 2 losing normally - do a daring manoeuvre to try to tie + ## Team 2 losing badly - do a daring manoeuvre to try to have an honourable loss + ## Team 2 losing regardeless of gravity - give up and take an infamouse loss + + ## Team 1 winning slightly - option for team 2 team 1st member to do a daring manoeuvre against a team 1 player to get victory + option = { + name = ave_maria_roman_administration_sports_events.2001.OPT.A + trigger = { + has_variable = tzykanion_team_2 + this = scope:tzykanion_team_2_player_1 + scope:activity.activity_owner = { + OR = { + has_character_flag = tie + has_character_flag = team_1_winning_slightly + } + } + } + random_in_list = { + list = tzykanion_players + limit = { + has_variable = tzykanion_team_1 + } + save_scope_as = tzykanion_nemesis + } + duel = { + skill = prowess + target = scope:tzykanion_nemesis + + ## Huge success + 15 = { + compare_modifier = { + value = scope:duel_value + multiplier = 1 + } + desc = ave_maria_roman_administration_sports_events.2002.OPT.B.success + add_prestige = 25 + ## subsequent event + scope:activity = { + scope:activity.activity_owner = { + add_character_flag = team_2_clear_victory + } + + } + } + ## Success + 50 = { + compare_modifier = { + value = scope:duel_value + multiplier = 2 + } + add_prestige = 25 + desc = ave_maria_roman_administration_sports_events.2002.OPT.B.small_success + ## subsequent event + scope:activity = { + scope:activity.activity_owner = { + add_character_flag = team_2_close_victory + } + } + } + ## Failure + 25 = { + compare_modifier = { + value = scope:duel_value + multiplier = -1 + } + desc = ave_maria_roman_administration_sports_events.2002.OPT.B.failure + add_prestige = -25 + ## subsequent event + scope:activity = { + scope:activity.activity_owner = { + add_character_flag = team_2_honorable_loss + } + } + + } + } + + ai_chance = { + base = 50 + } + } + + ## Team 1 winning normally - option for team 2 team 1st member to do a daring manoeuvre against a team 1 player to get tie + option = { + name = ave_maria_roman_administration_sports_events.2001.OPT.B + trigger = { + has_variable = tzykanion_team_2 + this = scope:tzykanion_team_2_player_1 + scope:activity.activity_owner = { + has_character_flag = team_1_winning_normally + } + } + random_in_list = { + list = tzykanion_players + limit = { + has_variable = tzykanion_team_1 + } + save_scope_as = tzykanion_nemesis + } + duel = { + skill = prowess + target = scope:tzykanion_nemesis + + ## Huge success + 15 = { + compare_modifier = { + value = scope:duel_value + multiplier = 1 + } + desc = ave_maria_roman_administration_sports_events.2002.OPT.C.success + add_prestige = 25 + ## subsequent event + scope:activity = { + scope:activity.activity_owner = { + add_character_flag = team_2_slight_victory + } + } + } + ## Success + 50 = { + compare_modifier = { + value = scope:duel_value + multiplier = 2 + } + add_prestige = 25 + desc = ave_maria_roman_administration_sports_events.2002.OPT.C.small_success + ## subsequent event + scope:activity = { + scope:activity.activity_owner = { + add_character_flag = second_round_tie + } + } + } + ## Failure + 25 = { + compare_modifier = { + value = scope:duel_value + multiplier = -1 + } + desc = ave_maria_roman_administration_sports_events.2002.OPT.C.failure + add_prestige = -25 + ## subsequent event + scope:activity = { + scope:activity.activity_owner = { + add_character_flag = team_2_honorable_loss + } + } + + } + } + + ai_chance = { + base = 60 + } + } + + ## Team 1 winning easily - option for team 2 team 1st member to do a daring manoeuvre against a team 1 player to save face + option = { + name = ave_maria_roman_administration_sports_events.2001.OPT.C + trigger = { + has_variable = tzykanion_team_2 + this = scope:tzykanion_team_2_player_1 + scope:activity.activity_owner = { + has_character_flag = team_1_winning_easily + } + } + random_in_list = { + list = tzykanion_players + limit = { + has_variable = tzykanion_team_1 + } + save_scope_as = tzykanion_nemesis + } + duel = { + skill = prowess + target = scope:tzykanion_nemesis + + ## Huge success - you win ! + 15 = { + compare_modifier = { + value = scope:duel_value + multiplier = 1 + } + desc = ave_maria_roman_administration_sports_events.2002.OPT.C.success + add_prestige = 25 + ## subsequent event + scope:activity = { + scope:activity.activity_owner = { + add_character_flag = team_2_honorable_loss + } + } + } + ## Success - you win + 50 = { + compare_modifier = { + value = scope:duel_value + multiplier = 2 + } + add_prestige = 25 + desc = ave_maria_roman_administration_sports_events.2002.OPT.C.small_success + ## subsequent event + scope:activity = { + scope:activity.activity_owner = { + add_character_flag = team_2_honorable_loss + } + } + } + 25 = { + compare_modifier = { + value = scope:duel_value + multiplier = -1 + } + desc = ave_maria_roman_administration_sports_events.2002.OPT.C.failure + add_prestige = -25 + ## subsequent event + scope:activity = { + scope:activity.activity_owner = { + add_character_flag = team_2_humiliating_loss + } + } + + } + } + + ai_chance = { + base = 60 + } + } + + ## Team 1 winning slightly/normally/easily - give up any hope option for team 2 members + option = { + name = ave_maria_roman_administration_sports_events.2001.OPT.D + trigger = { + has_variable = tzykanion_team_2 + this = scope:tzykanion_team_2_player_1 + scope:activity.activity_owner = { + OR = { + has_character_flag = team_2_winning_slightly + has_character_flag = team_2_winning_normally + has_character_flag = team_2_winning_easily + } + + } + } + add_prestige = -100 + every_in_list = { + list = tzykanion_players + limit = { + has_variable = tzykanion_team_2 + NOT = { this = root } + } + add_prestige = -50 + } + ai_chance = { + base = 40 + modifier = { + factor = 0 + OR = { + has_trait = ambitious + has_trait = diligent + has_trait = arrogant + has_trait = brave + has_trait = vengeful + has_trait = stubborn + has_trait = wrathful + has_trait = impatient + has_trait = thorough + has_trait = reckless + } + } + modifier = { + factor = 10 + OR = { + has_trait = lazy + has_trait = vulnerable + has_trait = fickle + has_trait = negligent + has_trait = content + } + } + } + } + + ## Team 1 winning regardless of gravity - info event for other team players outside of the first + option = { + name = ave_maria_roman_administration_sports_events.2001.OPT.E + trigger = { + has_variable = tzykanion_team_2 + scope:activity.activity_owner = { + OR = { + has_character_flag = team_1_winning_slightly + has_character_flag = team_1_winning_normally + has_character_flag = team_1_winning_easily + } + } + } + add_prestige = -50 + } + + ## Team 2 winning - option for team 2 members + option = { + name = ave_maria_roman_administration_sports_events.2001.OPT.J + trigger = { + has_variable = tzykanion_team_2 + scope:activity.activity_owner = { + OR = { + has_character_flag = team_2_winning_slightly + has_character_flag = team_2_winning_normally + has_character_flag = team_2_winning_easily + } + + } + } + add_prestige = 50 + } + + ## Tie + option = { + name = ave_maria_roman_administration_sports_events.2002.OPT.F + trigger = { + has_variable = tzykanion_team_2 + NOT = { + this = scope:tzykanion_team_1_player_1 + } + scope:activity.activity_owner = { + OR = { + has_character_flag = tie + } + } + } + add_prestige = 25 + } + + after = { + if = { + limit = { + this = scope:tzykanion_team_1_player_1 + } + scope:activity = { + every_participant = { + if = { + limit = { + has_variable = tzykanion_team_1 + } + trigger_event = { id = ave_maria_roman_administration_sports_events.2004 delayed = yes } + } + } + } + + } + if = { + limit = { + this = scope:tzykanion_team_2_player_1 + } + scope:activity = { + every_participant = { + if = { + limit = { + has_variable = tzykanion_team_2 + } + trigger_event = { id = ave_maria_roman_administration_sports_events.2005 delayed = yes } + } + } + } + + } + } +} + +## Result of second rounds - Team 1 - events are separated because portraits do not seem to support multiple entries/triggers +ave_maria_roman_administration_sports_events.2004 = { + type = character_event + title = ave_maria_roman_administration_sports_events.2001.title + + theme = crown + override_background = { + event_background = ave_maria_tzykanion_field + } + left_portrait = { + character = scope:tzykanion_team_1_player_1 + trigger = { + root = { + has_variable = tzykanion_team_1 + } + } + animation = war_over_win + } + ## Team 1 portraits - for team 1 root + right_portrait = { + character = scope:tzykanion_team_1_player_2 + trigger = { + root = { + has_variable = tzykanion_team_1 + } + } + animation = war_over_win + } + lower_center_portrait = { + character = scope:tzykanion_team_1_player_3 + trigger = { + root = { + has_variable = tzykanion_team_1 + } + } + animation = war_over_win + } + lower_left_portrait = { + character = scope:tzykanion_team_1_player_4 + trigger = { + root = { + has_variable = tzykanion_team_1 + } + } + animation = war_over_win + } + + desc = { + first_valid = { + ## Team 1 results + triggered_desc = { + trigger = { + has_variable = tzykanion_team_1 + scope:activity.activity_owner = { + has_character_flag = team_1_clear_victory + } + } + desc = ave_maria_roman_administration_sports_events.2004.desc.team_1_clear_victory + } + triggered_desc = { + trigger = { + has_variable = tzykanion_team_1 + scope:activity.activity_owner = { + has_character_flag = team_1_close_victory + } + } + desc = ave_maria_roman_administration_sports_events.2004.desc.team_1_close_victory + } + triggered_desc = { + trigger = { + has_variable = tzykanion_team_1 + scope:activity.activity_owner = { + has_character_flag = team_1_honorable_loss + } + } + desc = ave_maria_roman_administration_sports_events.2004.desc.team_1_honorable_loss + } + triggered_desc = { + trigger = { + has_variable = tzykanion_team_1 + scope:activity.activity_owner = { + has_character_flag = second_round_tie + } + } + desc = ave_maria_roman_administration_sports_events.2004.desc.second_round_tie + } + triggered_desc = { + trigger = { + has_variable = tzykanion_team_1 + scope:activity.activity_owner = { + has_character_flag = team_1_humiliating_loss + } + } + desc = ave_maria_roman_administration_sports_events.2004.desc.team_1_humiliating_loss + } + ## Team 2 results + triggered_desc = { + trigger = { + has_variable = tzykanion_team_1 + scope:activity.activity_owner = { + has_character_flag = team_2_clear_victory + } + } + desc = ave_maria_roman_administration_sports_events.2004.desc.team_2_clear_victory + } + triggered_desc = { + trigger = { + has_variable = tzykanion_team_1 + scope:activity.activity_owner = { + has_character_flag = team_2_close_victory + } + } + desc = ave_maria_roman_administration_sports_events.2004.desc.team_2_close_victory + } + triggered_desc = { + trigger = { + has_variable = tzykanion_team_1 + scope:activity.activity_owner = { + has_character_flag = team_2_honorable_loss + } + } + desc = ave_maria_roman_administration_sports_events.2004.desc.team_2_honorable_loss + } + triggered_desc = { + trigger = { + has_variable = tzykanion_team_1 + scope:activity.activity_owner = { + has_character_flag = second_round_tie + } + } + desc = ave_maria_roman_administration_sports_events.2004.desc.second_round_tie + } + triggered_desc = { + trigger = { + has_variable = tzykanion_team_1 + scope:activity.activity_owner = { + has_character_flag = team_2_humiliating_loss + } + } + desc = ave_maria_roman_administration_sports_events.2004.desc.team_2_humiliating_loss + } + } + } + + ## TEAM 1 + ## Clear victory + option = { + name = ave_maria_roman_administration_sports_events.2004.OPT.A.team_1_clear_victory + trigger = { + has_variable = tzykanion_team_1 + scope:activity.activity_owner = { + has_character_flag = team_1_clear_victory + } + } + add_prestige = 100 + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 5 + var:roman_administration_tzykanion_xp <= 10 + } + add_trait = tzykanion_player_1 + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 10 + var:roman_administration_tzykanion_xp <= 15 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 15 + var:roman_administration_tzykanion_xp <= 20 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 20 + var:roman_administration_tzykanion_xp <= 25 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + } + + ## Close victory + option = { + name = ave_maria_roman_administration_sports_events.2004.OPT.A.team_1_close_victory + trigger = { + has_variable = tzykanion_team_1 + scope:activity.activity_owner = { + has_character_flag = team_1_close_victory + } + } + add_prestige = 75 + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 5 + var:roman_administration_tzykanion_xp <= 10 + } + add_trait = tzykanion_player_1 + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 10 + var:roman_administration_tzykanion_xp <= 15 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 15 + var:roman_administration_tzykanion_xp <= 20 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 20 + var:roman_administration_tzykanion_xp <= 25 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + } + + ## honorable_loss + option = { + name = ave_maria_roman_administration_sports_events.2004.OPT.A.team_1_honorable_loss + trigger = { + has_variable = tzykanion_team_1 + scope:activity.activity_owner = { + has_character_flag = team_1_honorable_loss + } + } + add_prestige = 25 + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 5 + var:roman_administration_tzykanion_xp <= 10 + } + add_trait = tzykanion_player_1 + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 10 + var:roman_administration_tzykanion_xp <= 15 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 15 + var:roman_administration_tzykanion_xp <= 20 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 20 + var:roman_administration_tzykanion_xp <= 25 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + } + + ## second_round_tie + option = { + name = ave_maria_roman_administration_sports_events.2004.OPT.A.second_round_tie + trigger = { + has_variable = tzykanion_team_1 + scope:activity.activity_owner = { + has_character_flag = second_round_tie + } + } + add_prestige = 25 + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 5 + var:roman_administration_tzykanion_xp <= 10 + } + add_trait = tzykanion_player_1 + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 10 + var:roman_administration_tzykanion_xp <= 15 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 15 + var:roman_administration_tzykanion_xp <= 20 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 20 + var:roman_administration_tzykanion_xp <= 25 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + } + + ## humiliating_loss + option = { + name = ave_maria_roman_administration_sports_events.2004.OPT.A.team_1_humiliating_loss + + trigger = { + has_variable = tzykanion_team_1 + scope:activity.activity_owner = { + has_character_flag = team_1_humiliating_loss + } + } + add_prestige = -100 + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 5 + var:roman_administration_tzykanion_xp <= 10 + } + add_trait = tzykanion_player_1 + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 10 + var:roman_administration_tzykanion_xp <= 15 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 15 + var:roman_administration_tzykanion_xp <= 20 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 20 + var:roman_administration_tzykanion_xp <= 25 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + } + + ## TEAM 2 + ## Clear victory + option = { + name = ave_maria_roman_administration_sports_events.2004.OPT.A.team_2_clear_victory + trigger = { + has_variable = tzykanion_team_1 + scope:activity.activity_owner = { + has_character_flag = team_2_clear_victory + } + } + add_prestige = -75 + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 5 + var:roman_administration_tzykanion_xp <= 10 + } + add_trait = tzykanion_player_1 + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 10 + var:roman_administration_tzykanion_xp <= 15 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 15 + var:roman_administration_tzykanion_xp <= 20 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 20 + var:roman_administration_tzykanion_xp <= 25 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + } + + ## Close victory + option = { + name = ave_maria_roman_administration_sports_events.2004.OPT.A.team_2_close_victory + trigger = { + has_variable = tzykanion_team_1 + scope:activity.activity_owner = { + has_character_flag = team_2_close_victory + } + } + add_prestige = -25 + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 5 + var:roman_administration_tzykanion_xp <= 10 + } + add_trait = tzykanion_player_1 + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 10 + var:roman_administration_tzykanion_xp <= 15 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 15 + var:roman_administration_tzykanion_xp <= 20 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 20 + var:roman_administration_tzykanion_xp <= 25 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + } + + ## honorable_loss + option = { + name = ave_maria_roman_administration_sports_events.2004.OPT.A.team_2_honorable_loss + trigger = { + has_variable = tzykanion_team_1 + scope:activity.activity_owner = { + has_character_flag = team_2_honorable_loss + } + } + add_prestige = 75 + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 5 + var:roman_administration_tzykanion_xp <= 10 + } + add_trait = tzykanion_player_1 + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 10 + var:roman_administration_tzykanion_xp <= 15 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 15 + var:roman_administration_tzykanion_xp <= 20 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 20 + var:roman_administration_tzykanion_xp <= 25 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + } + + ## second_round_tie + option = { + name = ave_maria_roman_administration_sports_events.2004.OPT.A.second_round_tie + trigger = { + has_variable = tzykanion_team_1 + scope:activity.activity_owner = { + has_character_flag = second_round_tie + } + } + add_prestige = 25 + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 5 + var:roman_administration_tzykanion_xp <= 10 + } + add_trait = tzykanion_player_1 + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 10 + var:roman_administration_tzykanion_xp <= 15 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 15 + var:roman_administration_tzykanion_xp <= 20 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 20 + var:roman_administration_tzykanion_xp <= 25 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + } + + ## humiliating_loss + option = { + name = ave_maria_roman_administration_sports_events.2004.OPT.A.team_2_humiliating_loss + + trigger = { + has_variable = tzykanion_team_1 + scope:activity.activity_owner = { + has_character_flag = team_2_humiliating_loss + } + } + add_prestige = 100 + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 5 + var:roman_administration_tzykanion_xp <= 10 + } + add_trait = tzykanion_player_1 + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 10 + var:roman_administration_tzykanion_xp <= 15 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 15 + var:roman_administration_tzykanion_xp <= 20 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 20 + var:roman_administration_tzykanion_xp <= 25 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + } + + after = { + trigger_event = { id = ave_maria_roman_administration_sports_events.20018 days = 2 } + } +} + +## Result of second rounds - Team 2 - events are separated because portraits do not seem to support multiple entries/triggers +ave_maria_roman_administration_sports_events.2005 = { + type = character_event + title = ave_maria_roman_administration_sports_events.2001.title + theme = crown + override_background = { + event_background = ave_maria_tzykanion_field + } + ## Team 2 portraits - for team 2 root + left_portrait = { + character = scope:tzykanion_team_2_player_1 + trigger = { + root = { + has_variable = tzykanion_team_2 + } + } + animation = war_over_win + } + right_portrait = { + character = scope:tzykanion_team_2_player_2 + trigger = { + root = { + has_variable = tzykanion_team_2 + } + } + animation = war_over_win + } + lower_center_portrait = { + character = scope:tzykanion_team_2_player_3 + trigger = { + root = { + has_variable = tzykanion_team_2 + } + } + animation = war_over_win + } + lower_left_portrait = { + character = scope:tzykanion_team_2_player_4 + trigger = { + root = { + has_variable = tzykanion_team_2 + } + } + animation = war_over_win + } + + desc = { + first_valid = { + triggered_desc = { + trigger = { + has_variable = tzykanion_team_2 + scope:activity.activity_owner = { + has_character_flag = team_2_clear_victory + } + } + desc = ave_maria_roman_administration_sports_events.2005.desc.team_2_clear_victory + } + triggered_desc = { + trigger = { + has_variable = tzykanion_team_2 + scope:activity.activity_owner = { + has_character_flag = team_2_close_victory + } + } + desc = ave_maria_roman_administration_sports_events.2005.desc.team_2_close_victory + } + triggered_desc = { + trigger = { + has_variable = tzykanion_team_2 + scope:activity.activity_owner = { + has_character_flag = team_2_honorable_loss + } + } + desc = ave_maria_roman_administration_sports_events.2002.desc.team_2_honorable_loss + } + triggered_desc = { + trigger = { + has_variable = tzykanion_team_2 + scope:activity.activity_owner = { + has_character_flag = second_round_tie + } + } + desc = ave_maria_roman_administration_sports_events.2005.desc.second_round_tie + } + triggered_desc = { + trigger = { + has_variable = tzykanion_team_2 + scope:activity.activity_owner = { + has_character_flag = team_2_humiliating_loss + } + } + desc = ave_maria_roman_administration_sports_events.2005.desc.team_2_humiliating_loss + } + + ## Team 1 results + triggered_desc = { + trigger = { + has_variable = tzykanion_team_2 + scope:activity.activity_owner = { + has_character_flag = team_1_clear_victory + } + } + desc = ave_maria_roman_administration_sports_events.2004.desc.team_1_clear_victory + } + triggered_desc = { + trigger = { + has_variable = tzykanion_team_2 + scope:activity.activity_owner = { + has_character_flag = team_1_close_victory + } + } + desc = ave_maria_roman_administration_sports_events.2004.desc.team_1_close_victory + } + triggered_desc = { + trigger = { + has_variable = tzykanion_team_2 + scope:activity.activity_owner = { + has_character_flag = team_1_honorable_loss + } + } + desc = ave_maria_roman_administration_sports_events.2002.desc.team_1_honorable_loss + } + triggered_desc = { + trigger = { + has_variable = tzykanion_team_2 + scope:activity.activity_owner = { + has_character_flag = second_round_tie + } + } + desc = ave_maria_roman_administration_sports_events.2004.desc.second_round_tie + } + triggered_desc = { + trigger = { + has_variable = tzykanion_team_2 + scope:activity.activity_owner = { + has_character_flag = team_1_humiliating_loss + } + } + desc = ave_maria_roman_administration_sports_events.2004.desc.team_1_humiliating_loss + } + } + } + + ## TEAM 2 + ## Clear victory + option = { + name = ave_maria_roman_administration_sports_events.2005.OPT.A.team_2_clear_victory + trigger = { + has_variable = tzykanion_team_2 + scope:activity.activity_owner = { + has_character_flag = team_2_clear_victory + } + } + add_prestige = 100 + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 5 + var:roman_administration_tzykanion_xp <= 10 + } + add_trait = tzykanion_player_1 + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 10 + var:roman_administration_tzykanion_xp <= 15 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 15 + var:roman_administration_tzykanion_xp <= 20 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 20 + var:roman_administration_tzykanion_xp <= 25 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + } + + ## Close victory + option = { + name = ave_maria_roman_administration_sports_events.2005.OPT.A.team_2_close_victory + trigger = { + has_variable = tzykanion_team_2 + scope:activity.activity_owner = { + has_character_flag = team_2_close_victory + } + } + add_prestige = 75 + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 5 + var:roman_administration_tzykanion_xp <= 10 + } + add_trait = tzykanion_player_1 + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 10 + var:roman_administration_tzykanion_xp <= 15 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 15 + var:roman_administration_tzykanion_xp <= 20 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 20 + var:roman_administration_tzykanion_xp <= 25 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + } + + ## honorable_loss + option = { + name = ave_maria_roman_administration_sports_events.2005.OPT.A.team_2_honorable_loss + trigger = { + has_variable = tzykanion_team_2 + scope:activity.activity_owner = { + has_character_flag = team_2_honorable_loss + } + } + add_prestige = 25 + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 5 + var:roman_administration_tzykanion_xp <= 10 + } + add_trait = tzykanion_player_1 + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 10 + var:roman_administration_tzykanion_xp <= 15 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 15 + var:roman_administration_tzykanion_xp <= 20 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 20 + var:roman_administration_tzykanion_xp <= 25 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + } + + ## second_round_tie + option = { + name = ave_maria_roman_administration_sports_events.2005.OPT.A.second_round_tie + trigger = { + has_variable = tzykanion_team_2 + scope:activity.activity_owner = { + has_character_flag = second_round_tie + } + } + add_prestige = 25 + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 5 + var:roman_administration_tzykanion_xp <= 10 + } + add_trait = tzykanion_player_1 + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 10 + var:roman_administration_tzykanion_xp <= 15 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 15 + var:roman_administration_tzykanion_xp <= 20 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 20 + var:roman_administration_tzykanion_xp <= 25 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + } + + ## humiliating_loss + option = { + name = ave_maria_roman_administration_sports_events.2005.OPT.A.team_2_humiliating_loss + + trigger = { + has_variable = tzykanion_team_2 + scope:activity.activity_owner = { + has_character_flag = team_2_humiliating_loss + } + } + add_prestige = -100 + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 5 + var:roman_administration_tzykanion_xp <= 10 + } + add_trait = tzykanion_player_1 + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 10 + var:roman_administration_tzykanion_xp <= 15 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 15 + var:roman_administration_tzykanion_xp <= 20 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 20 + var:roman_administration_tzykanion_xp <= 25 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + } + + ## TEAM 1 + ## Clear victory + option = { + name = ave_maria_roman_administration_sports_events.2005.OPT.A.team_1_clear_victory + trigger = { + has_variable = tzykanion_team_2 + scope:activity.activity_owner = { + has_character_flag = team_1_clear_victory + } + } + add_prestige = -100 + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 5 + var:roman_administration_tzykanion_xp <= 10 + } + add_trait = tzykanion_player_1 + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 10 + var:roman_administration_tzykanion_xp <= 15 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 15 + var:roman_administration_tzykanion_xp <= 20 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 20 + var:roman_administration_tzykanion_xp <= 25 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + } + + ## Close victory + option = { + name = ave_maria_roman_administration_sports_events.2005.OPT.A.team_1_close_victory + trigger = { + has_variable = tzykanion_team_2 + scope:activity.activity_owner = { + has_character_flag = team_1_close_victory + } + } + add_prestige = -25 + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 5 + var:roman_administration_tzykanion_xp <= 10 + } + add_trait = tzykanion_player_1 + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 10 + var:roman_administration_tzykanion_xp <= 15 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 15 + var:roman_administration_tzykanion_xp <= 20 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 20 + var:roman_administration_tzykanion_xp <= 25 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + } + + ## honorable_loss + option = { + name = ave_maria_roman_administration_sports_events.2005.OPT.A.team_1_honorable_loss + trigger = { + has_variable = tzykanion_team_2 + scope:activity.activity_owner = { + has_character_flag = team_1_honorable_loss + } + } + add_prestige = 75 + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 5 + var:roman_administration_tzykanion_xp <= 10 + } + add_trait = tzykanion_player_1 + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 10 + var:roman_administration_tzykanion_xp <= 15 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 15 + var:roman_administration_tzykanion_xp <= 20 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 20 + var:roman_administration_tzykanion_xp <= 25 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + } + + ## second_round_tie + option = { + name = ave_maria_roman_administration_sports_events.2005.OPT.A.second_round_tie + trigger = { + has_variable = tzykanion_team_2 + scope:activity.activity_owner = { + has_character_flag = second_round_tie + } + } + add_prestige = 25 + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 5 + var:roman_administration_tzykanion_xp <= 10 + } + add_trait = tzykanion_player_1 + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 10 + var:roman_administration_tzykanion_xp <= 15 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 15 + var:roman_administration_tzykanion_xp <= 20 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 20 + var:roman_administration_tzykanion_xp <= 25 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + } + + ## humiliating_loss + option = { + name = ave_maria_roman_administration_sports_events.2005.OPT.A.team_1_humiliating_loss + + trigger = { + has_variable = tzykanion_team_2 + scope:activity.activity_owner = { + has_character_flag = team_1_humiliating_loss + } + } + add_prestige = 100 + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 5 + var:roman_administration_tzykanion_xp <= 10 + } + add_trait = tzykanion_player_1 + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 10 + var:roman_administration_tzykanion_xp <= 15 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 15 + var:roman_administration_tzykanion_xp <= 20 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + if = { + limit = { + has_variable = roman_administration_tzykanion_xp + var:roman_administration_tzykanion_xp >= 20 + var:roman_administration_tzykanion_xp <= 25 + } + change_trait_rank = { + trait = tzykanion_player + rank = 1 + max = 4 + } + } + } + + after = { + trigger_event = { id = ave_maria_roman_administration_sports_events.20018 days = 2 } + } +} + +## End of the match +ave_maria_roman_administration_sports_events.20018 = { + hidden = yes + + + immediate = { + scope:activity = { + every_participant = { + remove_variable = tzykanion_team_1 + remove_variable = tzykanion_team_2 + remove_variable = tzykanion_team_members + remove_variable = tzykanion_team_1_skill + remove_variable = tzykanion_team_2_skill + remove_character_flag = tie + remove_character_flag = tzykanion_team_1_ + remove_character_flag = team_1_winning_slightly + remove_character_flag = team_1_winning_normally + remove_character_flag = team_1_winning_easily + remove_character_flag = team_2_winning_slightly + remove_character_flag = team_2_winning_normally + remove_character_flag = team_2_winning_easily + remove_character_flag = team_1_humiliating_loss + remove_character_flag = team_2_humiliating_loss + remove_character_flag = second_round_tie + remove_character_flag = team_1_close_victory + remove_character_flag = team_1_honorable_loss + remove_character_flag = team_1_close_victory + remove_character_flag = team_1_clear_victory + remove_character_flag = team_2_close_victory + remove_character_flag = team_2_honorable_loss + remove_character_flag = team_2_close_victory + remove_character_flag = team_2_clear_victory + } + activity_owner = { + remove_variable = tzykanion_team_1 + remove_variable = tzykanion_team_2 + remove_variable = tzykanion_team_members + remove_variable = tzykanion_team_1_skill + remove_variable = tzykanion_team_2_skill + remove_character_flag = tie + remove_character_flag = tzykanion_team_1_ + remove_character_flag = team_1_winning_slightly + remove_character_flag = team_1_winning_normally + remove_character_flag = team_1_winning_easily + remove_character_flag = team_2_winning_slightly + remove_character_flag = team_2_winning_normally + remove_character_flag = team_2_winning_easily + remove_character_flag = team_1_humiliating_loss + remove_character_flag = team_2_humiliating_loss + remove_character_flag = second_round_tie + remove_character_flag = team_1_close_victory + remove_character_flag = team_1_honorable_loss + remove_character_flag = team_1_close_victory + remove_character_flag = team_1_clear_victory + remove_character_flag = team_2_close_victory + remove_character_flag = team_2_honorable_loss + remove_character_flag = team_2_close_victory + remove_character_flag = team_2_clear_victory + } + complete_activity = yes + } + } + + +} + + +## No one showed up +ave_maria_roman_administration_sports_events.4003 = { + +} + +## Start of the match - for guests +ave_maria_roman_administration_sports_events.2501 = { + +} + +## host died +ave_maria_roman_administration_sports_events.5003 = { + +} + +## Host imprison - for the host +ave_maria_roman_administration_sports_events.5004 = { + +} + +## Host imprisoned - for the participants +ave_maria_roman_administration_sports_events.5005 = { + +} \ No newline at end of file diff --git a/gfx/interface/icons/activities/activity_tzykanion.dds b/gfx/interface/icons/activities/activity_tzykanion.dds new file mode 100644 index 00000000..6cdb9aad Binary files /dev/null and b/gfx/interface/icons/activities/activity_tzykanion.dds differ diff --git a/gfx/interface/icons/focuses/basileus_lifestyle_military_focus.dds b/gfx/interface/icons/focuses/basileus_lifestyle_military_focus.dds new file mode 100644 index 00000000..723420f8 Binary files /dev/null and b/gfx/interface/icons/focuses/basileus_lifestyle_military_focus.dds differ diff --git a/gfx/interface/icons/focuses/basileus_lifestyle_rulership_focus.dds b/gfx/interface/icons/focuses/basileus_lifestyle_rulership_focus.dds new file mode 100644 index 00000000..96b84bc8 Binary files /dev/null and b/gfx/interface/icons/focuses/basileus_lifestyle_rulership_focus.dds differ diff --git a/gfx/interface/icons/focuses/basileus_lifestyle_scholarship_focus.dds b/gfx/interface/icons/focuses/basileus_lifestyle_scholarship_focus.dds new file mode 100644 index 00000000..00ce59f8 Binary files /dev/null and b/gfx/interface/icons/focuses/basileus_lifestyle_scholarship_focus.dds differ diff --git a/gfx/interface/icons/lifestyle_tree_backgrounds/basileus_majesty.dds b/gfx/interface/icons/lifestyle_tree_backgrounds/basileus_majesty.dds new file mode 100644 index 00000000..ffc2dca5 Binary files /dev/null and b/gfx/interface/icons/lifestyle_tree_backgrounds/basileus_majesty.dds differ diff --git a/gfx/interface/icons/lifestyle_tree_backgrounds/basileus_scholarship.dds b/gfx/interface/icons/lifestyle_tree_backgrounds/basileus_scholarship.dds new file mode 100644 index 00000000..bbab0a53 Binary files /dev/null and b/gfx/interface/icons/lifestyle_tree_backgrounds/basileus_scholarship.dds differ diff --git a/gfx/interface/icons/lifestyle_tree_backgrounds/basileus_strategy.dds b/gfx/interface/icons/lifestyle_tree_backgrounds/basileus_strategy.dds new file mode 100644 index 00000000..cb978b03 Binary files /dev/null and b/gfx/interface/icons/lifestyle_tree_backgrounds/basileus_strategy.dds differ diff --git a/gfx/interface/icons/lifestyles/basileus_lifestyle.dds b/gfx/interface/icons/lifestyles/basileus_lifestyle.dds new file mode 100644 index 00000000..a44fd0a6 Binary files /dev/null and b/gfx/interface/icons/lifestyles/basileus_lifestyle.dds differ diff --git a/gfx/interface/icons/lifestyles_perks/node_basileus_lifestyle.dds b/gfx/interface/icons/lifestyles_perks/node_basileus_lifestyle.dds new file mode 100644 index 00000000..55600720 Binary files /dev/null and b/gfx/interface/icons/lifestyles_perks/node_basileus_lifestyle.dds differ diff --git a/gfx/interface/icons/traits/chariot_racer.dds b/gfx/interface/icons/traits/chariot_racer.dds index 93ce32ca..2dc36100 100644 Binary files a/gfx/interface/icons/traits/chariot_racer.dds and b/gfx/interface/icons/traits/chariot_racer.dds differ diff --git a/gfx/interface/icons/traits/rhetorician_1.dds b/gfx/interface/icons/traits/rhetorician_1.dds new file mode 100644 index 00000000..32b72982 Binary files /dev/null and b/gfx/interface/icons/traits/rhetorician_1.dds differ diff --git a/gfx/interface/icons/traits/rhetorician_2.dds b/gfx/interface/icons/traits/rhetorician_2.dds new file mode 100644 index 00000000..7b291c68 Binary files /dev/null and b/gfx/interface/icons/traits/rhetorician_2.dds differ diff --git a/gfx/interface/icons/traits/rhetorician_3.dds b/gfx/interface/icons/traits/rhetorician_3.dds new file mode 100644 index 00000000..5701957a Binary files /dev/null and b/gfx/interface/icons/traits/rhetorician_3.dds differ diff --git a/gfx/interface/icons/traits/rhetorician_4.dds b/gfx/interface/icons/traits/rhetorician_4.dds new file mode 100644 index 00000000..a4e2a436 Binary files /dev/null and b/gfx/interface/icons/traits/rhetorician_4.dds differ diff --git a/gfx/interface/icons/traits/tzykanion_player_1.dds b/gfx/interface/icons/traits/tzykanion_player_1.dds new file mode 100644 index 00000000..40cab651 Binary files /dev/null and b/gfx/interface/icons/traits/tzykanion_player_1.dds differ diff --git a/gfx/interface/icons/traits/tzykanion_player_2.dds b/gfx/interface/icons/traits/tzykanion_player_2.dds new file mode 100644 index 00000000..5a7683c1 Binary files /dev/null and b/gfx/interface/icons/traits/tzykanion_player_2.dds differ diff --git a/gfx/interface/icons/traits/tzykanion_player_3.dds b/gfx/interface/icons/traits/tzykanion_player_3.dds new file mode 100644 index 00000000..2c61aca4 Binary files /dev/null and b/gfx/interface/icons/traits/tzykanion_player_3.dds differ diff --git a/gfx/interface/icons/traits/tzykanion_player_4.dds b/gfx/interface/icons/traits/tzykanion_player_4.dds new file mode 100644 index 00000000..14e67fe5 Binary files /dev/null and b/gfx/interface/icons/traits/tzykanion_player_4.dds differ diff --git a/gfx/interface/illustrations/activities/activity_tzykanion.dds b/gfx/interface/illustrations/activities/activity_tzykanion.dds new file mode 100644 index 00000000..a0a4ad78 Binary files /dev/null and b/gfx/interface/illustrations/activities/activity_tzykanion.dds differ diff --git a/gfx/interface/illustrations/decisions/z_ave_maria_decision_tzykanion_game.dds b/gfx/interface/illustrations/decisions/z_ave_maria_decision_tzykanion_game.dds new file mode 100644 index 00000000..d1a189aa Binary files /dev/null and b/gfx/interface/illustrations/decisions/z_ave_maria_decision_tzykanion_game.dds differ diff --git a/gfx/interface/illustrations/event_scenes/z_ave_maria_tzykanion_field.dds b/gfx/interface/illustrations/event_scenes/z_ave_maria_tzykanion_field.dds new file mode 100644 index 00000000..544a8ad5 Binary files /dev/null and b/gfx/interface/illustrations/event_scenes/z_ave_maria_tzykanion_field.dds differ diff --git a/gfx/interface/illustrations/lifestyles_background/basileus_lifestyle.dds b/gfx/interface/illustrations/lifestyles_background/basileus_lifestyle.dds new file mode 100644 index 00000000..01a8a4f6 Binary files /dev/null and b/gfx/interface/illustrations/lifestyles_background/basileus_lifestyle.dds differ diff --git a/gui/window_character_focus.gui b/gui/window_character_focus.gui new file mode 100644 index 00000000..91442984 --- /dev/null +++ b/gui/window_character_focus.gui @@ -0,0 +1,321 @@ +###################################################### +################## EDUCATION FOCUS ################### +###################################################### + +window = { + name = "character_focus_window" + size = { 520 880 } + parentanchor = center + layer = middle + + using = Window_Background + using = Window_Decoration + + vbox = { + using = Window_Margins + + header_pattern = { + layoutpolicy_horizontal = expanding + + blockoverride "header_text" + { + text = "[CharacterFocusWindow.GetWindowTitle]" + } + + blockoverride "button_close" + { + onclick = "[CharacterFocusWindow.Close]" + + } + } + + vbox = { + name = "focus_selection_area" + size = { 500 850 } + + ### PENTAGON W EDUCATION FOCUSES + widget = { + name = "education_focuses_and_portrait" + size = { 350 350 } + + background = { + name = "martial_disposition" + framesize = { 352 352 } + texture = "gfx/interface/window_lifestyles/education_affinity_up_side.dds" + frame = "[CharacterFocusWindow.GetDispositionFrame('1')]" + } + + background = { + name = "diplomacy_disposition" + framesize = { 352 352 } + + texture = "gfx/interface/window_lifestyles/education_affinity_up_side.dds" + mirror = horizontal + frame = "[CharacterFocusWindow.GetDispositionFrame('0')]" + } + + background = { + name = "stewardship_disposition" + framesize = { 352 352 } + + texture = "gfx/interface/window_lifestyles/education_affinity_down_side.dds" + frame = "[CharacterFocusWindow.GetDispositionFrame('2')]" + } + + background = { + name = "learning_disposition" + framesize = { 352 352 } + + texture = "gfx/interface/window_lifestyles/education_affinity_down_side.dds" + mirror = horizontal + frame = "[CharacterFocusWindow.GetDispositionFrame('3')]" + } + + background = { + name = "intrigue_disposition" + framesize = { 352 352 } + + texture = "gfx/interface/window_lifestyles/education_affinity_up.dds" + frame = "[CharacterFocusWindow.GetDispositionFrame('4')]" + } + + ### Diplomacy + button = { + name = "diplomacy_button" + position = { -3 100 } + parentanchor = top|left + texture = "gfx/interface/icons/lifestyles/diplomacy_lifestyle.dds" + framesize = { 160 160 } + size = { 80 80 } + onclick = "[CharacterFocusWindow.OnClickSetSelectedFocus('0')]" + down = "[CharacterFocusWindow.IsSelectedFocus('0')]" + clicksound = "event:/SFX/UI/Unique/CharacterLifestyle/sfx_ui_unique_lifestyle_diplomacy" + datacontext = "[CharacterFocusWindow.GetFocus( '(int32)0' )]" + + highlight_icon = { + visible = "[CharacterFocusWindow.IsCharacterFocus('0')]" + size = { 100% 100%} + texture = "gfx/interface/buttons/button_lifestyles_active_frame.dds" + } + + tooltipwidget = { + container_focus_cooltip = {} + } + } + + ### Martial + button = { + name = "martial_button" + position = { 3 100 } + parentanchor = top|right + texture = "gfx/interface/icons/lifestyles/martial_lifestyle.dds" + framesize = { 160 160 } + size = { 80 80 } + onclick = "[CharacterFocusWindow.OnClickSetSelectedFocus('1')]" + down = "[CharacterFocusWindow.IsSelectedFocus('1')]" + clicksound = "event:/SFX/UI/Unique/CharacterLifestyle/sfx_ui_unique_lifestyle_martial" + datacontext = "[CharacterFocusWindow.GetFocus( '(int32)1' )]" + + highlight_icon = { + visible = "[CharacterFocusWindow.IsCharacterFocus('1')]" + size = { 100% 100%} + texture = "gfx/interface/buttons/button_lifestyles_active_frame.dds" + } + + tooltipwidget = { + container_focus_cooltip = {} + } + } + + ### Stewardship + button = { + name = "stewardship_button" + position = { -45 -4 } + parentanchor = bottom|right + texture = "gfx/interface/icons/lifestyles/stewardship_lifestyle.dds" + framesize = { 160 160 } + size = { 80 80 } + onclick = "[CharacterFocusWindow.OnClickSetSelectedFocus('2')]" + down = "[CharacterFocusWindow.IsSelectedFocus('2')]" + clicksound = "event:/SFX/UI/Unique/CharacterLifestyle/sfx_ui_unique_lifestyle_stewardship" + datacontext = "[CharacterFocusWindow.GetFocus( '(int32)2' )]" + + highlight_icon = { + visible = "[CharacterFocusWindow.IsCharacterFocus('2')]" + size = { 100% 100%} + texture = "gfx/interface/buttons/button_lifestyles_active_frame.dds" + } + + tooltipwidget = { + container_focus_cooltip = {} + } + } + + ### Learning + button = { + name = "learning_button" + position = { 45 -4 } + parentanchor = bottom|left + texture = "gfx/interface/icons/lifestyles/learning_lifestyle.dds" + framesize = { 160 160 } + size = { 80 80 } + onclick = "[CharacterFocusWindow.OnClickSetSelectedFocus('3')]" + down = "[CharacterFocusWindow.IsSelectedFocus('3')]" + clicksound = "event:/SFX/UI/Unique/CharacterLifestyle/sfx_ui_unique_lifestyle_learning" + datacontext = "[CharacterFocusWindow.GetFocus( '(int32)3' )]" + + highlight_icon = { + visible = "[CharacterFocusWindow.IsCharacterFocus('3')]" + size = { 100% 100%} + texture = "gfx/interface/buttons/button_lifestyles_active_frame.dds" + } + + tooltipwidget = { + container_focus_cooltip = {} + } + } + + ### Intrigue + button = { + name = "intrigue_button" + position = { 0 4 } + parentanchor = top|hcenter + texture = "gfx/interface/icons/lifestyles/intrigue_lifestyle.dds" + framesize = { 160 160 } + size = { 80 80 } + onclick = "[CharacterFocusWindow.OnClickSetSelectedFocus('4')]" + down = "[CharacterFocusWindow.IsSelectedFocus('4')]" + clicksound = "event:/SFX/UI/Unique/CharacterLifestyle/sfx_ui_unique_lifestyle_intrigue" + datacontext = "[CharacterFocusWindow.GetFocus( '(int32)4' )]" + + highlight_icon = { + visible = "[CharacterFocusWindow.IsCharacterFocus('4')]" + size = { 100% 100%} + texture = "gfx/interface/buttons/button_lifestyles_active_frame.dds" + } + + tooltipwidget = { + container_focus_cooltip = {} + } + } + + ### Rulership Basileus + # button = { + # name = "am_roman_basileus_button" + # position = { 0 4 } + # parentanchor = top|hcenter + # texture = "gfx/interface/icons/lifestyles/intrigue_lifestyle.dds" + # framesize = { 160 160 } + # size = { 80 80 } + # onclick = "[CharacterFocusWindow.OnClickSetSelectedFocus('4')]" + # down = "[CharacterFocusWindow.IsSelectedFocus('4')]" + # clicksound = "event:/SFX/UI/Unique/CharacterLifestyle/sfx_ui_unique_lifestyle_intrigue" + # datacontext = "[CharacterFocusWindow.GetFocus( '(int32)4' )]" + + # highlight_icon = { + # visible = "[CharacterFocusWindow.IsCharacterFocus('4')]" + # size = { 100% 100%} + # texture = "gfx/interface/buttons/button_lifestyles_active_frame.dds" + # } + + # tooltipwidget = { + # container_focus_cooltip = {} + # } + # } + + portrait_shoulders = { + name = "character_portrait" + datacontext = "[CharacterFocusWindow.GetCharacter]" + parentanchor = center + position = { 0 0 } + blockoverride "coa" {} + blockoverride "status_icons" {} + blockoverride "opinion_box" {} + blockoverride "glow_local_player" {} + blockoverride "glow_selected" {} + + background = { + texture = "gfx/interface/component_masks/mask_fade_circle.dds" + color = { 0.1 0.1 0.1 1 } + margin = { 15 0 } + margin_top = 0 + margin_bottom = 30 + alpha = 0.5 + } + } + } + } + + vbox = { + layoutpolicy_horizontal = expanding + layoutpolicy_vertical = expanding + margin_top = 10 + spacing = 10 + + text_label_center = { + name = "selected_focus_name" + text = "[CharacterFocusWindow.GetSelectedFocusName]" + } + + # Info about Selected Focus + scrollbox = { + name = "focus_info_area" + layoutpolicy_horizontal = expanding + layoutpolicy_vertical = expanding + + blockoverride "scrollbox_content" + { + spacing = 10 + + text_multi = { + autoresize = yes + maximumsize = { 390 -1 } + minimumsize = { 390 -1 } + text = "[CharacterFocusWindow.GetSelectedFocusDescription]" + } + + text_multi = { + autoresize = yes + maximumsize = { 390 -1 } + minimumsize = { 390 -1 } + text = "[CharacterFocusWindow.GetFocusDescriptionFromDatabase]" + } + + text_multi = { + autoresize = yes + maximumsize = { 390 -1 } + minimumsize = { 390 -1 } + text = "[CharacterFocusWindow.GetSelectedFocusEffectDesc]" + } + + text_multi = { + autoresize = yes + maximumsize = { 390 -1 } + minimumsize = { 390 -1 } + text = "[CharacterFocusWindow.GetSelectedFocusModifierDesc]" + } + + } + } + } + + vbox = { + margin = { 15 15 } + spacing = 15 + + text_multi = { + text = "[CharacterFocusWindow.GetWarningText]" + default_format = "#low;italic" + autoresize = yes + maximumsize = { 390 -1 } + } + + button_primary = { + tooltip = "[CharacterFocusWindow.GetCanChangeFocusDescription]" + onclick = "[CharacterFocusWindow.OnClickChangeFocus]" + enabled = "[CharacterFocusWindow.CanChangeFocus]" + text = "CHOOSE_FOCUS" + } + } + } +} \ No newline at end of file diff --git a/gui/window_council.gui b/gui/window_council.gui index c4bc3db0..f68ee092 100644 --- a/gui/window_council.gui +++ b/gui/window_council.gui @@ -24,13 +24,6 @@ window = { on_start = "[GetVariableSystem.Set( 'right_window_open', 'true' )]" on_start = "[GetVariableSystem.Set( 'council_tabs', 'my_council' )]" - - on_start = "[GetVariableSystem.Clear('minor_council')]" - on_start = "[GetVariableSystem.Clear('liege_council')]" - on_start = "[GetVariableSystem.Clear('basileus_dignities')]" - on_start = "[GetVariableSystem.Clear('dignities')]" - on_start = "[GetVariableSystem.Set( 'council', 'true' )]" - on_start = "[CouncilWindow.SetPlayerCouncil]" } state = { @@ -71,16 +64,12 @@ window = { layoutpolicy_horizontal = expanding button_tab = { + visible = "[Not(GetPlayer.IsIndependentRuler)]" layoutpolicy_horizontal = expanding text = "COUNCIL_WINDOW_PLAYER_COUNCIL" - - onclick = "[GetVariableSystem.Clear('minor_council')]" - onclick = "[GetVariableSystem.Clear('liege_council')]" - onclick = "[GetVariableSystem.Clear('basileus_dignities')]" - onclick = "[GetVariableSystem.Clear('dignities')]" - onclick = "[GetVariableSystem.Set( 'council', 'true' )]" + + down = "[CouncilWindow.IsPlayerCouncilShown]" onclick = "[CouncilWindow.SetPlayerCouncil]" - down = "[GetVariableSystem.Exists('council')]" # onclick = "[PdxGuiTriggerAllAnimations('council_refresh')]" @@ -91,69 +80,12 @@ window = { # } } - ## AVE MARIA BUTTON TAB TO OPEN THE DIGNITIES WINDOW (show the dignities widget and hide the vanilla council ones) - button_tab = { - layoutpolicy_horizontal = expanding - text = "DIGNITIES_WINDOW_PLAYER" - - datacontext = "[GetScriptedGui('am_councillor_is_roman_emperor')]" - visible = "[ScriptedGui.IsShown(GuiScope.SetRoot(GetPlayer.MakeScope).End)]" - - onclick = "[GetVariableSystem.Clear('council')]" - onclick = "[GetVariableSystem.Clear('liege_council')]" - onclick = "[GetVariableSystem.Clear('basileus_dignities')]" - onclick = "[GetVariableSystem.Set( 'minor_council', 'true' )]" - onclick = "[GetVariableSystem.Set( 'dignities', 'true' )]" - onclick = "[CouncilWindow.SetPlayerCouncil]" - down = "[GetVariableSystem.Exists('minor_council')]" - } - - ## Vanilla button to see liege's council button_tab = { visible = "[Not(GetPlayer.IsIndependentRuler)]" - layoutpolicy_horizontal = expanding - text = "COUNCIL_WINDOW_LIEGE_COUNCIL" - onclick = "[GetVariableSystem.Clear('basileus_dignities')]" - onclick = "[GetVariableSystem.Clear('minor_council')]" - onclick = "[GetVariableSystem.Clear('council')]" - onclick = "[GetVariableSystem.Clear('dignities')]" - onclick = "[GetVariableSystem.Set( 'liege_council', 'true' )]" - onclick = "[CouncilWindow.SetLiegeCouncil]" - down = "[GetVariableSystem.Exists('liege_council')]" - - # onclick = "[PdxGuiTriggerAllAnimations('council_refresh')]" - - # state = { - # name = _mouse_click - # delay = 0.2 - # on_finish = "[CouncilWindow.SetLiegeCouncil]" - # } - #text_single = { - # minimumsize = { 277 38 } - # margin = { 15 0 } - # text = "COUNCIL_WINDOW_LIEGE_COUNCIL" - # resizeparent = yes - # align = center|nobaseline - # default_format = "#low" - #} - } - - ## Button tab to open the emperor dignities window as a vassal - button_tab = { - #visible = "[Not(GetPlayer.IsIndependentRuler)]" - layoutpolicy_horizontal = expanding - text = "DIGNITIES_WINDOW_LIEGE" - - datacontext = "[GetScriptedGui('am_institutions_roman_administration_can_see_senate')]" - visible = "[And( Not(GetPlayer.IsIndependentRuler), ScriptedGui.IsShown(GuiScope.SetRoot(GetPlayer.MakeScope).End))]" - onclick = "[GetVariableSystem.Clear('liege_council')]" - onclick = "[GetVariableSystem.Clear('minor_council')]" - onclick = "[GetVariableSystem.Clear('council')]" - onclick = "[GetVariableSystem.Set( 'basileus_dignities', 'true' )]" - onclick = "[GetVariableSystem.Set( 'dignities', 'true' )]" + down = "[CouncilWindow.IsLiegeCouncilShown]" onclick = "[CouncilWindow.SetLiegeCouncil]" - down = "[GetVariableSystem.Exists('basileus_dignities')]" + # onclick = "[PdxGuiTriggerAllAnimations('council_refresh')]" @@ -163,6 +95,14 @@ window = { # on_finish = "[CouncilWindow.SetLiegeCouncil]" # } + text_single = { + minimumsize = { 277 38 } + margin = { 15 0 } + text = "COUNCIL_WINDOW_LIEGE_COUNCIL" + resizeparent = yes + align = center|nobaseline + default_format = "#low" + } } } @@ -446,7 +386,6 @@ types CouncilWindow portrait_council = { name = "councillor_portrait" datacontext = "[ActiveCouncilTask.GetCouncillor]" - datacontext = "[GetVariableSystem]" visible = "[Character.IsValid]" parentanchor = bottom position = { 0 4 } @@ -1065,9 +1004,7 @@ types CouncilTaskTypes margin = { 10 0 } spacing = 5 - ## Vanilla Spouse widget_councillor_item = { - visible = "[Not(GetVariableSystem.Exists( 'dignities' ))]" layoutpolicy_horizontal = expanding layoutpolicy_vertical = expanding datacontext = "[CouncilWindow.GetCouncillor('councillor_spouse')]" @@ -1152,11 +1089,7 @@ types CouncilTaskTypes } } - ## Vanilla Court Chaplain widget_councillor_item = { - datacontext = "[GetScriptedGui('am_councillor_not_roman_emperor')]" - #visible = "[Not(GetVariableSystem.Exists( 'dignities' ))]" - visible = "[And( Not(GetVariableSystem.Exists( 'dignities' )), ScriptedGui.IsShown(GuiScope.SetRoot(GetPlayer.MakeScope).End))]" layoutpolicy_horizontal = expanding layoutpolicy_vertical = expanding datacontext = "[CouncilWindow.GetCouncillor('councillor_court_chaplain')]" @@ -1180,114 +1113,6 @@ types CouncilTaskTypes alpha = 0.3 } } - - ## AVE MARIA - ## synkellos - widget_councillor_item = { - datacontext = "[GetScriptedGui('am_councillor_is_roman_emperor')]" - visible = "[And( Not(GetVariableSystem.Exists( 'dignities' )), ScriptedGui.IsShown(GuiScope.SetRoot(GetPlayer.MakeScope).End))]" - layoutpolicy_horizontal = expanding - layoutpolicy_vertical = expanding - datacontext = "[CouncilWindow.GetCouncillor('roman_councillor_synkellos')]" - datacontext = "[GuiCouncilPosition.GetActiveCouncilTask]" - datacontext = "[ActiveCouncilTask.GetPositionType]" - datacontext = "[ActiveCouncilTask.GetCouncillor]" - - background = { - texture = "gfx/interface/illustrations/event_scenes/z_ave_maria_hagia_sophia_aile.dds" - alpha = 0.6 - using = Mask_Rough_Edges - } - background = { - texture = "gfx/interface/component_masks/mask_vignette.dds" - color = { 0.15 0.15 0.15 1 } - alpha = 0.3 - } - } - - ## AVE MARIA - ## Co Emperor - widget_councillor_item = { - visible = "[GetVariableSystem.Exists( 'dignities' )]" - layoutpolicy_horizontal = expanding - layoutpolicy_vertical = expanding - datacontext = "[CouncilWindow.GetCouncillor('roman_councillor_coemperor')]" - datacontext = "[GuiCouncilPosition.GetActiveCouncilTask]" - datacontext = "[ActiveCouncilTask.GetPositionType]" - datacontext = "[ActiveCouncilTask.GetCouncillor]" - - - blockoverride "regular_task" {} - - blockoverride "spouse_task" - { - hbox = { - visible = "[Character.IsValid]" - layoutpolicy_horizontal = expanding - margin = { 5 5 } - spacing = 3 - - button_standard = { - size = { 190 25 } - onclick = "[GuiCouncilPosition.ShowHideTasks]" - tooltip = "[GuiCouncilPosition.GetShowHideTooltip]" - down = "[GuiCouncilPosition.ArePotentialTasksVisible]" - - text_single = { - datacontext = "[ActiveCouncilTask.GetTaskTypeOrDefault]" - parentanchor = vcenter - position = { 10 0 } - text = "[CouncilTaskType.GetName]" - align = nobaseline - } - - button_change = { - name = "show_tasks" - parentanchor = right|vcenter - position = { -5 0 } - alwaystransparent = yes - size = { 25 25 } - } - } - } - } - - background = { - texture = "gfx/interface/illustrations/event_scenes/z_ave_maria_constantinople_daphne_courtyard.dds" - alpha = 0.6 - using = Mask_Rough_Edges - } - background = { - texture = "gfx/interface/component_masks/mask_vignette.dds" - color = { 0.15 0.15 0.15 1 } - alpha = 0.3 - } - } - - ## AVE MARIA - ## Protospatharios - widget_councillor_item = { - visible = "[GetVariableSystem.Exists( 'dignities' )]" - layoutpolicy_horizontal = expanding - layoutpolicy_vertical = expanding - datacontext = "[CouncilWindow.GetCouncillor('roman_dignities_protospatharios')]" - datacontext = "[GuiCouncilPosition.GetActiveCouncilTask]" - datacontext = "[ActiveCouncilTask.GetPositionType]" - datacontext = "[ActiveCouncilTask.GetCouncillor]" - - background = { - texture = "gfx/interface/illustrations/event_scenes/z_ave_maria_constantinople_akkubita_dining_hall.dds" - using = Mask_Rough_Edges - alpha = 0.7 - } - - background = { - texture = "gfx/interface/component_masks/mask_vignette.dds" - color = { 0.15 0.15 0.15 1 } - alpha = 0.3 - } - } - } hbox = { @@ -1296,11 +1121,7 @@ types CouncilTaskTypes margin = { 10 0 } spacing = 5 - ## Vanilla Chancellor widget_councillor_item = { - datacontext = "[GetScriptedGui('am_councillor_not_roman_emperor')]" - #visible = "[Not(GetVariableSystem.Exists( 'dignities' ))]" - visible = "[And( Not(GetVariableSystem.Exists( 'dignities' )), ScriptedGui.IsShown(GuiScope.SetRoot(GetPlayer.MakeScope).End))]" layoutpolicy_horizontal = expanding layoutpolicy_vertical = expanding datacontext = "[CouncilWindow.GetCouncillor('councillor_chancellor')]" @@ -1321,11 +1142,7 @@ types CouncilTaskTypes } } - ## Vanilla Steward widget_councillor_item = { - datacontext = "[GetScriptedGui('am_councillor_not_roman_emperor')]" - #visible = "[Not(GetVariableSystem.Exists( 'dignities' ))]" - visible = "[And( Not(GetVariableSystem.Exists( 'dignities' )), ScriptedGui.IsShown(GuiScope.SetRoot(GetPlayer.MakeScope).End))]" layoutpolicy_horizontal = expanding layoutpolicy_vertical = expanding datacontext = "[CouncilWindow.GetCouncillor('councillor_steward')]" @@ -1345,124 +1162,6 @@ types CouncilTaskTypes alpha = 0.3 } } - - ## AVE MARIA - ## Roman Chancellor - widget_councillor_item = { - datacontext = "[GetScriptedGui('am_councillor_is_roman_emperor')]" - visible = "[And( Not(GetVariableSystem.Exists( 'dignities' )), ScriptedGui.IsShown(GuiScope.SetRoot(GetPlayer.MakeScope).End))]" - layoutpolicy_horizontal = expanding - layoutpolicy_vertical = expanding - datacontext = "[CouncilWindow.GetCouncillor('roman_councillor_drome')]" - datacontext = "[GuiCouncilPosition.GetActiveCouncilTask]" - datacontext = "[ActiveCouncilTask.GetPositionType]" - datacontext = "[ActiveCouncilTask.GetCouncillor]" - - background = { - texture = "gfx/interface/illustrations/event_scenes/z_ave_maria_constantinople_akkubita_dining_hall.dds" - alpha = 0.6 - using = Mask_Rough_Edges - } - background = { - texture = "gfx/interface/component_masks/mask_vignette.dds" - color = { 0.15 0.15 0.15 1 } - alpha = 0.3 - } - } - - ## AVE MARIA - ## Roman Steward - widget_councillor_item = { - datacontext = "[GetScriptedGui('am_councillor_is_roman_emperor')]" - visible = "[And( Not(GetVariableSystem.Exists( 'dignities' )), ScriptedGui.IsShown(GuiScope.SetRoot(GetPlayer.MakeScope).End))]" - layoutpolicy_horizontal = expanding - layoutpolicy_vertical = expanding - datacontext = "[CouncilWindow.GetCouncillor('roman_councillor_sakellarios')]" - datacontext = "[GuiCouncilPosition.GetActiveCouncilTask]" - datacontext = "[ActiveCouncilTask.GetPositionType]" - datacontext = "[ActiveCouncilTask.GetCouncillor]" - - background = { - texture = "gfx/interface/illustrations/event_scenes/z_ave_maria_great_palace_interior.dds" - alpha = 0.6 - using = Mask_Rough_Edges - } - background = { - texture = "gfx/interface/component_masks/mask_vignette.dds" - color = { 0.15 0.15 0.15 1 } - alpha = 0.3 - } - } - - ## AVE MARIA - ## Patrikios - widget_councillor_item = { - visible = "[GetVariableSystem.Exists( 'dignities' )]" - layoutpolicy_horizontal = expanding - layoutpolicy_vertical = expanding - datacontext = "[CouncilWindow.GetCouncillor('roman_dignities_patrikios')]" - datacontext = "[GuiCouncilPosition.GetActiveCouncilTask]" - datacontext = "[ActiveCouncilTask.GetPositionType]" - datacontext = "[ActiveCouncilTask.GetCouncillor]" - - flowcontainer = { - direction = vertical - parentanchor = center - margin = { 0 20 } - icon = { - name = "crown" - visible = "[And(Not(CouncilWindow.IsLiegeCouncilShown),LessThan_int32(GetPlayer.GetPrimaryTitle.GetTierFrame, '(int32)4'))]" - parentanchor = center - texture = "gfx/interface/coat_of_arms/crown_strip_115.dds" - frame = "4" - framesize = { 80 56 } - } - } - - text_label_center = - { - visible = "[And(Not(CouncilWindow.IsLiegeCouncilShown), LessThan_int32(GetPlayer.GetPrimaryTitle.GetTierFrame, '(int32)4'))]" - parentanchor = bottom|hcenter - position = { 0 -10 } - text = "MINOR_TITLE_NOT_AVAILABLE_DUKE" - default_format = "#low;italic" - max_width = 235 - } - background = { - texture = "gfx/interface/illustrations/event_scenes/z_ave_maria_constantinople_great_palace_interior.dds" - alpha = 0.6 - using = Mask_Rough_Edges - } - background = { - texture = "gfx/interface/component_masks/mask_vignette.dds" - color = { 0.15 0.15 0.15 1 } - alpha = 0.3 - } - } - - ## AVE MARIA - ## anthypatos - widget_councillor_item = { - visible = "[GetVariableSystem.Exists( 'dignities' )]" - layoutpolicy_horizontal = expanding - layoutpolicy_vertical = expanding - datacontext = "[CouncilWindow.GetCouncillor('roman_dignities_anthypatos')]" - datacontext = "[GuiCouncilPosition.GetActiveCouncilTask]" - datacontext = "[ActiveCouncilTask.GetPositionType]" - datacontext = "[ActiveCouncilTask.GetCouncillor]" - - background = { - texture = "gfx/interface/illustrations/event_scenes/z_ave_maria_great_palace_interior.dds" - alpha = 0.6 - using = Mask_Rough_Edges - } - background = { - texture = "gfx/interface/component_masks/mask_vignette.dds" - color = { 0.15 0.15 0.15 1 } - alpha = 0.3 - } - } - } hbox = { @@ -1472,11 +1171,7 @@ types CouncilTaskTypes margin_bottom = 5 spacing = 5 - ## Vanilla Marshall widget_councillor_item = { - datacontext = "[GetScriptedGui('am_councillor_not_roman_emperor')]" - #visible = "[Not(GetVariableSystem.Exists( 'dignities' ))]" - visible = "[And( Not(GetVariableSystem.Exists( 'dignities' )), ScriptedGui.IsShown(GuiScope.SetRoot(GetPlayer.MakeScope).End))]" layoutpolicy_horizontal = expanding layoutpolicy_vertical = expanding datacontext = "[CouncilWindow.GetCouncillor('councillor_marshal')]" @@ -1497,11 +1192,7 @@ types CouncilTaskTypes } } - ## Vanilla Spymaster widget_councillor_item = { - datacontext = "[GetScriptedGui('am_councillor_not_roman_emperor')]" - #visible = "[Not(GetVariableSystem.Exists( 'dignities' ))]" - visible = "[And( Not(GetVariableSystem.Exists( 'dignities' )), ScriptedGui.IsShown(GuiScope.SetRoot(GetPlayer.MakeScope).End))]" layoutpolicy_horizontal = expanding layoutpolicy_vertical = expanding datacontext = "[CouncilWindow.GetCouncillor('councillor_spymaster')]" @@ -1521,126 +1212,6 @@ types CouncilTaskTypes alpha = 0.3 } } - - ## AVE MARIA - ## Roman Marshall - widget_councillor_item = { - datacontext = "[GetScriptedGui('am_councillor_is_roman_emperor')]" - visible = "[And( Not(GetVariableSystem.Exists( 'dignities' )), ScriptedGui.IsShown(GuiScope.SetRoot(GetPlayer.MakeScope).End))]" - layoutpolicy_horizontal = expanding - layoutpolicy_vertical = expanding - datacontext = "[CouncilWindow.GetCouncillor('roman_councillor_domestikos')]" - datacontext = "[GuiCouncilPosition.GetActiveCouncilTask]" - datacontext = "[ActiveCouncilTask.GetPositionType]" - datacontext = "[ActiveCouncilTask.GetCouncillor]" - - background = { - texture = "gfx/interface/illustrations/council/bg_council_marshal.dds" - using = Mask_Rough_Edges - alpha = 0.7 - } - - background = { - texture = "gfx/interface/component_masks/mask_vignette.dds" - color = { 0.15 0.15 0.15 1 } - alpha = 0.3 - } - } - - ## AVE MARIA - ## Roman Spymaster - widget_councillor_item = { - datacontext = "[GetScriptedGui('am_councillor_is_roman_emperor')]" - visible = "[And( Not(GetVariableSystem.Exists( 'dignities' )), ScriptedGui.IsShown(GuiScope.SetRoot(GetPlayer.MakeScope).End))]" - layoutpolicy_horizontal = expanding - layoutpolicy_vertical = expanding - datacontext = "[CouncilWindow.GetCouncillor('roman_councillor_kanikleios')]" - datacontext = "[GuiCouncilPosition.GetActiveCouncilTask]" - datacontext = "[ActiveCouncilTask.GetPositionType]" - datacontext = "[ActiveCouncilTask.GetCouncillor]" - - background = { - texture = "gfx/interface/illustrations/council/bg_council_spymaster.dds" - using = Mask_Rough_Edges - alpha = 0.7 - } - - background = { - texture = "gfx/interface/component_masks/mask_vignette.dds" - color = { 0.15 0.15 0.15 1 } - alpha = 0.3 - } - } - - ## AVE MARIA - ## magistros - widget_councillor_item = { - visible = "[GetVariableSystem.Exists( 'dignities' )]" - layoutpolicy_horizontal = expanding - layoutpolicy_vertical = expanding - datacontext = "[CouncilWindow.GetCouncillor('roman_dignities_magistros')]" - datacontext = "[GuiCouncilPosition.GetActiveCouncilTask]" - datacontext = "[ActiveCouncilTask.GetPositionType]" - datacontext = "[ActiveCouncilTask.GetCouncillor]" - - background = { - texture = "gfx/interface/illustrations/event_scenes/z_ave_maria_great_palace_garden.dds" - alpha = 0.6 - using = Mask_Rough_Edges - } - background = { - texture = "gfx/interface/component_masks/mask_vignette.dds" - color = { 0.15 0.15 0.15 1 } - alpha = 0.3 - } - } - - ## AVE MARIA - ## vestarches - # widget_councillor_item = { - # visible = "[GetVariableSystem.Exists( 'dignities' )]" - # layoutpolicy_horizontal = expanding - # layoutpolicy_vertical = expanding - # datacontext = "[CouncilWindow.GetCouncillor('roman_dignities_vestarches')]" - # datacontext = "[GuiCouncilPosition.GetActiveCouncilTask]" - # datacontext = "[ActiveCouncilTask.GetPositionType]" - # datacontext = "[ActiveCouncilTask.GetCouncillor]" - - # background = { - # texture = "gfx/interface/illustrations/event_scenes/z_ave_maria_daphne_palace_window.dds" - # alpha = 0.6 - # using = Mask_Rough_Edges - # } - # background = { - # texture = "gfx/interface/component_masks/mask_vignette.dds" - # color = { 0.15 0.15 0.15 1 } - # alpha = 0.3 - # } - # } - - ## AVE MARIA - ## proedros - widget_councillor_item = { - visible = "[GetVariableSystem.Exists( 'dignities' )]" - layoutpolicy_horizontal = expanding - layoutpolicy_vertical = expanding - datacontext = "[CouncilWindow.GetCouncillor('roman_dignities_proedros')]" - datacontext = "[GuiCouncilPosition.GetActiveCouncilTask]" - datacontext = "[ActiveCouncilTask.GetPositionType]" - datacontext = "[ActiveCouncilTask.GetCouncillor]" - - background = { - texture = "gfx/interface/illustrations/event_scenes/z_ave_maria_constantine_forum_view.dds" - alpha = 0.6 - using = Mask_Rough_Edges - } - background = { - texture = "gfx/interface/component_masks/mask_vignette.dds" - color = { 0.15 0.15 0.15 1 } - alpha = 0.3 - } - } - } } @@ -1648,4 +1219,4 @@ types CouncilTaskTypes layoutpolicy_vertical = growing } } -} +} \ No newline at end of file diff --git a/history/characters/greek.txt b/history/characters/greek.txt index 750339d8..62514247 100644 --- a/history/characters/greek.txt +++ b/history/characters/greek.txt @@ -6363,6 +6363,7 @@ trait = cynical trait = deceitful trait = scholar + trait = rhetorician_4 trait = education_learning_3 1018.1.1 = { birth = "1018.1.1" @@ -6834,6 +6835,7 @@ culture = "greek" trait = just trait = education_stewardship_3 + trait = rhetorician_4 trait = scholar 1017.1.1 = { birth = "1017.1.1" diff --git a/history/characters/norman.txt b/history/characters/norman.txt index 4f5a062c..21153e8a 100644 --- a/history/characters/norman.txt +++ b/history/characters/norman.txt @@ -444,7 +444,9 @@ add_pressed_claim = d_sicily add_pressed_claim = c_palermo create_alliance = { - target = 2008 + target = character:2008 + allied_through_owner = character:1128 + allied_through_target = character:2008 } spawn_army = { name = event_troop_default_name diff --git a/history/titles/history_c_orlanto.txt b/history/titles/history_c_orlanto.txt index 93b8a2e0..69861bd3 100644 --- a/history/titles/history_c_orlanto.txt +++ b/history/titles/history_c_orlanto.txt @@ -11,6 +11,7 @@ c_orlanto = { } 1065.1.1 = { liege = d_apulia + # de_jure_liege = "d_langobardia_roman" holder = 73270 # Geoffroy I di Lecce } 1082.12.1 = { diff --git a/history/titles/history_c_taranto.txt b/history/titles/history_c_taranto.txt index 4aff3c53..0221d4c7 100644 --- a/history/titles/history_c_taranto.txt +++ b/history/titles/history_c_taranto.txt @@ -16,7 +16,8 @@ c_taranto = { } 1054.1.1 = { holder = 171155 # Geoffroy de Conversano - liege = d_apulia + # liege = d_apulia + de_jure_liege = "d_langobardia_roman" } 1104.2.1 = { holder = 30864 # Robert I diff --git a/localization/english/ave_maria_opus_ruralium_commodorum_l_english.yml b/localization/english/ave_maria_opus_ruralium_commodorum_l_english.yml index 72476f71..7394d5f5 100644 --- a/localization/english/ave_maria_opus_ruralium_commodorum_l_english.yml +++ b/localization/english/ave_maria_opus_ruralium_commodorum_l_english.yml @@ -7667,6 +7667,10 @@ c_galatia_charsianon:0 "Mocissus" c_cona_italy:0 "Cona" c_agen:0 "Agen" + c_perpignan:0 "Perpignan" + c_alarcos:0 "Alarcos" + c_segovia:0 "Segovia" + c_monte_faro:0 "Montefaro" cn_athens:0 "Hellas" diff --git a/localization/english/ave_maria_roman_administration_l_english.yml b/localization/english/ave_maria_roman_administration_l_english.yml index 91203e04..1c31e73e 100644 --- a/localization/english/ave_maria_roman_administration_l_english.yml +++ b/localization/english/ave_maria_roman_administration_l_english.yml @@ -160,6 +160,10 @@ activity_roman_administration_imperial_coronation:0 "Coronation" activity_roman_administration_imperial_coronation_owner:0 "Basileus" + activity_tzykanion:0 "Tzykanion Game" + activity_tzykanion_name:0 "Tzykanion Game" + activity_tzykanion_owner:0 "Host" + ### GOVERNMENT NAMES roman_administration_government:0 "Roman" @@ -406,6 +410,12 @@ roman_dignities_magistros:0 "Magistros" roman_dignities_vestarches:0 "Vestarches" roman_dignities_proedros:0 "Proedros" + + game_concept_illor_drome_desc:0 "Logothetes" + game_concept_illor_sakellarios_desc:0 "Sakellarios" + game_concept_illor_domestikos_desc:0 "Domestikos" + game_concept_illor_kanikleios_desc:0 "Kanikleios" + game_concept_illor_synkellos_desc:0 "Synkellos" ### tasks ## Vanilla councillor replacement tasks @@ -574,6 +584,40 @@ trait_chariot_racer_desc:0 "This character is a professional chariot racer competing in chariot races all over the Empire and employed by the factional racing organisations, the Demes." trait_chariot_racer_character_desc:0 "[ROOT.GetCharacter.GetFirstNameNoTooltip] is a professional chariot racer competing in chariot races all over the Empire and employed by the factional racing organisations, the Demes." + rhetorician_1:0 "Amateur Scholar" + trait_rhetorician_1:0 "Amateur Scholar" + trait_rhetorician_1_desc:0 "This character has completed a superior education in Constantinople were he studied law, philosophy, medicine, arithmetic, geometry, astronomy, music, rhetoric and other subjects but has retained little of it." + trait_rhetorician_1_character_desc:0 "[ROOT.GetCharacter.GetFirstNameNoTooltip] has completed a superior education in Constantinople were he studied law, philosophy, medicine, arithmetic, geometry, astronomy, music, rhetoric and other subjects but has retained little of it." + rhetorician_2:0 "Scholar" + trait_rhetorician_2:0 "Scholar" + trait_rhetorician_2_desc:0 "This character has completed a superior education in Constantinople were he studied law, philosophy, medicine, arithmetic, geometry, astronomy, music, rhetoric and other subjects and retained most of it." + trait_rhetorician_2_character_desc:0 "[ROOT.GetCharacter.GetFirstNameNoTooltip] has completed a superior education in Constantinople were he studied law, philosophy, medicine, arithmetic, geometry, astronomy, music, rhetoric and other subjects and retained most of it." + rhetorician_3:0 "Famous Scholar" + trait_rhetorician_3:0 " Famous Scholar" + trait_rhetorician_3_desc:0 "This character has completed a superior education in Constantinople were he studied law, philosophy, medicine, arithmetic, geometry, astronomy, music, rhetoric and other subjects and has been noticed for his erudition." + trait_rhetorician_3_character_desc:0 "[ROOT.GetCharacter.GetFirstNameNoTooltip] has completed a superior education in Constantinople were he studied law, philosophy, medicine, arithmetic, geometry, astronomy, music, rhetoric and other subjects and has been noticed for his erudition." + rhetorician_4:0 "Renowned Scholar" + trait_rhetorician_4:0 "Renowned Scholar" + trait_rhetorician_4_desc:0 "This character has completed a superior education in Constantinople were he studied law, philosophy, medicine, arithmetic, geometry, astronomy, music, rhetoric and other subjects and has been noticed for his erudition and his quality teaching." + trait_rhetorician_4_character_desc:0 "[ROOT.GetCharacter.GetFirstNameNoTooltip] has completed a superior education in Constantinople were he studied law, philosophy, medicine, arithmetic, geometry, astronomy, music, rhetoric and other subjects and has been noticed for his erudition and his quality teaching." + + tzykanion_player_1:0 "Tzykanion Enthusiast" + trait_tzykanion_player_1:0 "Tzykanion Enthusiast" + trait_tzykanion_player_1_desc:0 "This character is passionate about Tzykanion and finds every opportunity to play a game with his friends and entourage." + trait_tzykanion_player_1_character_desc:0 "[ROOT.GetCharacter.GetFirstNameNoTooltip] is passionate about Tzykanion and finds every opportunity to play a game with his friends and entourage." + tzykanion_player_2:0 "Tzykanion Enthusiast" + trait_tzykanion_player_2:0 "Tzykanion Enthusiast" + trait_tzykanion_player_2_desc:0 "This character is passionate about Tzykanion and finds every opportunity to play a game with his friends and entourage as he is widely considered to be a good player." + trait_tzykanion_player_2_character_desc:0 "[ROOT.GetCharacter.GetFirstNameNoTooltip] is passionate about Tzykanion and finds every opportunity to play a game with his friends and entourage as he is widely considered to be a good player." + tzykanion_player_3:0 "Renowned Tzykanion Player" + trait_tzykanion_player_3:0 "Renowned Tzykanion Player" + trait_tzykanion_player_3_desc:0 "This character is passionate about Tzykanion and finds every opportunity to play a game with his friends and entourage as his skills at it are almost peerless." + trait_tzykanion_player_3_character_desc:0 "[ROOT.GetCharacter.GetFirstNameNoTooltip] is passionate about Tzykanion and finds every opportunity to play a game with his friends and entourage as his skills at it are almost peerless." + tzykanion_player_4:0 "Tzykanion Champion" + trait_tzykanion_player_4:0 "Tzykanion Champion" + trait_tzykanion_player_4_desc:0 "This character has been playing Tzykanion his whole life and few can beat him at it." + trait_tzykanion_player_4_character_desc:0 "[ROOT.GetCharacter.GetFirstNameNoTooltip] has been playing Tzykanion his whole life and few can beat him at it." + @@ -606,6 +650,15 @@ ave_maria_roman_administration_imperial_expedition_tooltip:0 "Lead the Army in person.\nYou will be the only commander in the realm." ave_maria_roman_administration_imperial_expedition_confirm:0 "You will be sole Commander." + ave_maria_roman_administration_tzykanion_game:0 "Organize a Game of Tzykanion" + ave_maria_roman_administration_tzykanion_game_desc:0 "Tzykanion is the most noble sport where a man's dexterity, courage and team-spirit is truly shown." + ave_maria_roman_administration_tzykanion_game_prestige:0 "You may get opportunities to increase your [prestige|E]." + ave_maria_roman_administration_tzykanion_game_tooltip:0 "A game of Tzykanion will be held." + ave_maria_roman_administration_tzykanion_game_confirm:0 "Saddle my horse !" + ave_maria_roman_administration_tzykanion_game_lazy:0 "#N You will not lose [stress|E] since you are [GetTrait('lazy').GetName( GetPlayer )]#!" + + + ## Vanilla copied decision for custom art invite_knights_decision_roman:0 "Invite $knight_culture_player_plural_no_tooltip$" invite_knights_decision_roman_confirm:0 "Send the herald" @@ -799,6 +852,82 @@ ave_maria_roman_administration_imperial_expedition_events.0009.OPT_A:0 "Good Games !" ave_maria_roman_administration_imperial_expedition_events.0009.OPT_C:0 "I participated at least !" + ### DUCHY CREATION EVENTS + ave_maria_roman_administration_reconquest_events.0001.title:0 "[title.GetName] Governance" + ave_maria_roman_administration_reconquest_events.0001.desc:0 "With the creation of the new administrative district of [title.GetName] something must be decided about its governance as I cannot manage it myself.\n\n It could be made into a Theme under a Strategos, or a Doukaton led by a Doux to protect from dangerous neighbors or simply be administrated as a Kouratoreia by a loyal Kourator appointed by me." + ave_maria_roman_administration_reconquest_events.0001.OPT.A:0 "Make it a Theme." + ave_maria_roman_administration_reconquest_events.0001.OPT.A.tt:0 "A new Strategos will inherit the Theme and all its de-jure counties." + ave_maria_roman_administration_reconquest_events.0001.OPT.B:0 "Make it a Doukaton." + ave_maria_roman_administration_reconquest_events.0001.OPT.B.tt:0 "A new Doux will inherit the Doukaton and all its de-jure counties." + ave_maria_roman_administration_reconquest_events.0001.OPT.C:0 "Make it a Kouratoreia" + ave_maria_roman_administration_reconquest_events.0001.OPT.C.tt:0 "A new Kourator will inherit the Kouratoreia and all its de-jure counties." + ave_maria_roman_administration_reconquest_events.0001.OPT.F:0 "Actually I will keep it myself." + ave_maria_roman_administration_reconquest_events.0001.OPT.F.tt.1:0 "You will keep the title." + ave_maria_roman_administration_reconquest_events.0001.OPT.F.tt.2:0 "You lose @popularity_icon! #N 100#!" + + ## Tzykanion EVENTS + ave_maria_roman_administration_sports_events.2001.title:0 "Tzykanion Game" + ave_maria_roman_administration_sports_events.2001.desc.host:0 "Everyone is finally arrived for the game of Tzykanion!\n\nMy teamates [tzykanion_team_1_player_2.GetName], [tzykanion_team_1_player_3.GetName] and [tzykanion_team_1_player_4.GetName] are arrayed on our side of the field and ready to show [tzykanion_team_2_player_1.GetName], [tzykanion_team_2_player_2.GetName],[tzykanion_team_2_player_3.GetName] and [tzykanion_team_2_player_4.GetName] how it is done.\n\nThe horses are saddled, referees and judges at the ready, we just need to start !" + ave_maria_roman_administration_sports_events.2001.desc.participant:0 "I have arrived for the game of Tzykanion hosted by [activity.activity_owner.GetName] !\n\n[tzykanion_team_2_player_2.GetName], [tzykanion_team_2_player_3.GetName] and [tzykanion_team_2_player_4.GetName] and I are assembled and ready to show [tzykanion_team_1_player_1.GetName], [tzykanion_team_1_player_2.GetName], [tzykanion_team_1_player_3.GetName] and [tzykanion_team_1_player_4.GetName] how it is done.\n\nThe horses are saddled, referees and judges at the ready, we just need to start !" + ave_maria_roman_administration_sports_events.2001.OPT.A:0 "Let the best team win !" + ave_maria_roman_administration_sports_events.2001.OPT.A.tt:0 "You start the game of Tzykanion" + + ave_maria_roman_administration_sports_events.2002.title:0 "Tzykanion Game" + ave_maria_roman_administration_sports_events.2002.desc.team_1_winning_slightly:0 "We won the first set of rounds with a slight advantage !\n\nOur skills are well matched between each team and the competition has been fierce but we managed to secure a small lead in points scored.\n\nI can see that [tzykanion_team_2_player_2.GetName] is convening with his team to decide on a strategy for the last rounds, in hope to close the small point gap between use I am sure !" + ave_maria_roman_administration_sports_events.2002.desc.team_1_winning_normally:0 "We won the first set of rounds with a clear advantage !\n\nOur team equestrian skills are superior to theirs and managed to secure a solid lead in points scored.\n\nI can see that [tzykanion_team_2_player_2.GetName] is convening with his team to decide on a strategy for the last rounds but they will have trouble in overcoming the gap now !" + ave_maria_roman_administration_sports_events.2002.desc.team_1_winning_easily:0 "We trounced them in the first set of rounds !\n\nOur team equestrian skills are way superior to theirs and this is less of a competition than it is an humiliation.\n\nI can see that [tzykanion_team_2_player_2.GetName] is convening with his team to decide on a strategy for the last rounds but they are so behind in points scored that they will never recover and can only hope to finish the game with an honourable loss !" + ave_maria_roman_administration_sports_events.2002.desc.team_2_winning_slightly:0 "We lost the first set of rounds by a narrow margin !\n\nOur skills are well matched between each team and the competition has been fierce but they managed to secure a small lead in points scored.\n\nI need to convey with my the rest of my team to decide how to proceed from there in order to close the small point gap." + ave_maria_roman_administration_sports_events.2002.desc.team_2_winning_normally:0 "We lost the first set of rounds with a clear disadvantage !\n\nOur team equestrian skills are inferior to theirs and they managed to secure a solid lead in points scored.\n\nI need to convey with my the rest of my team to decide how to proceed from there as it will be much difficult to secure a victory from this situation..." + ave_maria_roman_administration_sports_events.2002.desc.team_2_winning_easily:0 "We have been trounced in the first set of rounds !\n\nOur team equestrian skills are way below theirs and this is less of a competition than it is an humiliation.\n\nI need to convey with my the rest of my team to decide how to proceed from there as we are so behind in points that the best we can hope from this situation is to salvage an honourable loss..." + ave_maria_roman_administration_sports_events.2002.desc.tie:0 "This is intensely tied !" + ave_maria_roman_administration_sports_events.2002.OPT.A:0 "Let us finish this !" + ave_maria_roman_administration_sports_events.2002.OPT.B:0 "We need a daring manoeuvre..." + ave_maria_roman_administration_sports_events.2002.OPT.C:0 "We need a daring manoeuvre..." + ave_maria_roman_administration_sports_events.2002.OPT.E:0 "This is not looking good" + ave_maria_roman_administration_sports_events.2002.OPT.D:0 "We need a daring manoeuvre..." + ave_maria_roman_administration_sports_events.2002.OPT.F:0 "This is hopeless, we will never make it..." + ave_maria_roman_administration_sports_events.2002.OPT.G:0 "This is intensely tied..." + ave_maria_roman_administration_sports_events.2002.OPT.B.success:0 "You succeed in your manoeuvre and secure a clear victory" + ave_maria_roman_administration_sports_events.2002.OPT.B.small_success:0 "You succeed in your manoeuvre and secure a close victory" + ave_maria_roman_administration_sports_events.2002.OPT.B.failure:0 "You fail in your manoeuvre and lose the game honourably" + ave_maria_roman_administration_sports_events.2002.OPT.C.success:0 "You succeed in your manoeuvre and secure a close victory" + ave_maria_roman_administration_sports_events.2002.OPT.C.small_success:0 "You succeed in your manoeuvre and secure a tie" + ave_maria_roman_administration_sports_events.2002.OPT.C.failure:0 "You fail in your manoeuvre and lose the game honourably" + ave_maria_roman_administration_sports_events.2002.OPT.C.success:0 "You succeed in your manoeuvre and secure a tie" + ave_maria_roman_administration_sports_events.2002.OPT.C.small_success:0 "You succeed in your manoeuvre and secure a tie" + ave_maria_roman_administration_sports_events.2002.OPT.C.failure:0 "You fail in your manoeuvre and lose the game in an humiliating loss" + + ave_maria_roman_administration_sports_events.2004.desc.team_1_clear_victory:0 "We won the game fair and square !\n\nThe last rounds have been heavily disputed but we managed to secure enough points to be in a solid lead.\n\nOur manoeuvre and strategy for the last rounds paid off !\n\nI glance at [tzykanion_team_1_player_3.GetName] and share a victorious smile after this hard won victory." + ave_maria_roman_administration_sports_events.2004.desc.team_1_close_victory:0 "We finally managed to win after a gruelling and heavily disputed last round.\n\nOur strategy paid off and I managed to dodge around [tzykanion_nemesis.GetName] to score several points that allowed us this victory.\n\nI glance at [tzykanion_team_1_player_3.GetName] and share a victorious smile after this hard won victory.\n\nThis was a really nice game, and it seems my opponents despite their defeat also think so !" + ave_maria_roman_administration_sports_events.2004.desc.team_1_honorable_loss:0 "We lost the game but the last rounds have not been a total disaster !\n\nWe managed to salvage an honourable loss after [tzykanion_team_1_player_2.GetName] and I pulled off our daring manoeuvre to score enough points to show that we are not total push-overs.\n\nA loss but an honourable one in the end." + ave_maria_roman_administration_sports_events.2004.desc.second_round_tie:0 "The game is tied !\n\nAfter a gruelling and heavily disputed last round each team scored the same amount of points.\n\nOur strategy paid off and I managed to dodge around [tzykanion_team_2_player_1.GetName] to score several points that garnered applauses from the onlookers.\n\nI glance at [tzykanion_team_1_player_3.GetName] and share a warm smile after these hard rounds.\n\nThis was a really nice game, and it seems my opponents despite the inconclusive result also think so !" + ave_maria_roman_administration_sports_events.2004.desc.team_1_humiliating_loss:0 "We failed again and the last rounds have been a total disaster !\n\nWe have lost miserably and it has been an humiliating defeat.\n\n[tzykanion_team_1_player_2.GetName] almost fell off his horse during our supposed daring manoeuvre and I could not get past [tzykanion_nemesis.GetName] to score any points \n\nOverall a terrible game for us..." + ave_maria_roman_administration_sports_events.2004.desc.team_2_clear_victory:0 "We lost the game fair and square...\n\nThe last rounds have been heavily disputed but we failed to secure enough points and the opposite team is in a solid lead.\n\nTheir manoeuvre and strategy for the last rounds paid off.\n\nI glance at [tzykanion_team_1_player_3.GetName] and share a sad smile while we look at [tzykanion_team_2_player_1.GetName] cheering with his team after their victory." + ave_maria_roman_administration_sports_events.2004.desc.team_2_close_victory:0 "We lost the game after a gruelling and heavily disputed last round.\n\nTheir strategy paid off and [tzykanion_team_2_player_1.GetName] managed to dodge around me to score several points that allowed them the victory.\n\nI glance at [tzykanion_team_1_player_3.GetName] and share a satisfied smile while we look at [tzykanion_team_2_player_1.GetName] cheering with his team after their victory.\n\nThis was a really nice competitive game despite our loss !" + ave_maria_roman_administration_sports_events.2004.desc.team_2_honorable_loss:0 "We won the game !\n\nThey managed to salvage an honourable loss after [tzykanion_team_2_player_1.GetName] pulled off a daring manoeuvre and managed to score enough points to show us they are not total push-overs.\n\nA loss for them but an honourable one in the end." + ave_maria_roman_administration_sports_events.2004.desc.team_2_humiliating_loss:0 "They failed again and the last rounds and we kept trouncing them !\n\nThey have lost miserably and it has been an humiliating defeat for them.\n\n[tzykanion_team_2_player_2.GetName] almost fell off his horse during their supposed daring manoeuvre and [tzykanion_team_2_player_1.GetName] could not get past me to score any points \n\nOverall a crushing victory for us and terrible game for them..." + ave_maria_roman_administration_sports_events.2004.OPT.A.team_1_clear_victory:0 "Good Game !" + ave_maria_roman_administration_sports_events.2004.OPT.A.team_1_close_victory.team_1_close_victory:0 "A good game !" + ave_maria_roman_administration_sports_events.2004.OPT.A.second_round_tie:0 "A good game !" + ave_maria_roman_administration_sports_events.2004.OPT.A.team_1_humiliating_loss:0 "A terrible experience..." + ave_maria_roman_administration_sports_events.2004.OPT.A.team_1_honorable_loss:0 "We managed to salvage this." + ave_maria_roman_administration_sports_events.2004.OPT.A.team_2_clear_victory:0 "We will get them next time." + ave_maria_roman_administration_sports_events.2004.OPT.A.team_2_close_victory:0 "Very good !" + ave_maria_roman_administration_sports_events.2004.OPT.A.team_2_honorable_loss:0 "A good game !" + ave_maria_roman_administration_sports_events.2004.OPT.A.team_2_humiliating_loss:0 "Teams were not of equal skill.." + + ave_maria_roman_administration_sports_events.2005.desc.team_2_clear_victory:0 "We won the game fair and square !\n\nThe last rounds have been heavily disputed but we managed to secure enough points to be in a solid lead.\n\nOur manoeuvre and strategy for the last rounds paid off !\n\nI glance at [tzykanion_team_2_player_3.GetName] and share a victorious smile after this hard won victory." + ave_maria_roman_administration_sports_events.2005.desc.team_2_close_victory:0 "We finally managed to win after a gruelling and heavily disputed last round.\n\nOur strategy paid off and I managed to dodge around [tzykanion_nemesis.GetName] to score several points that allowed us this victory.\n\nI glance at [tzykanion_team_2_player_3.GetName] and share a victorious smile after this hard won victory.\n\nThis was a really nice game, and it seems my opponents despite their defeat also think so !" + ave_maria_roman_administration_sports_events.2002.desc.team_2_honorable_loss:0 "We lost the game but the last rounds have not been a total disaster !\n\nWe managed to salvage an honourable loss after [tzykanion_team_2_player_2.GetName] and I pulled off our daring manoeuvre to score enough points to show that we are not total push-overs.\n\nA loss but an honourable one in the end." + ave_maria_roman_administration_sports_events.2005.desc.second_round_tie:0 "The game is tied !\n\nWe managed to tie the game after a gruelling and heavily disputed last round\n\nnOur strategy paid off and I managed to dodge around [tzykanion_nemesis.GetName] to score several points that allowed us to avoid a defeat after the disastrous first rounds.\n\nI glance at [tzykanion_team_2_player_3.GetName] and share a victorious smile after this hard game.\n\nThis was a really nice game, and it seems my opponents despite the inconclusive result also think so !" + ave_maria_roman_administration_sports_events.2005.desc.team_2_humiliating_loss:0 "We failed again and the last rounds have been a total disaster !\n\nWe have lost miserably and it has been an humiliating defeat.\n\n[tzykanion_team_2_player_2.GetName] almost fell off his horse during our supposed daring manoeuvre and I could not get past [tzykanion_nemesis.GetName] to score any points \n\nOverall a terrible game for us..." + ave_maria_roman_administration_sports_events.2005.OPT.A.team_2_clear_victory:0 "Good Game !" + ave_maria_roman_administration_sports_events.2005.OPT.A.team_2_close_victory.team_1_close_victory:0 "A good game !" + ave_maria_roman_administration_sports_events.2005.OPT.A.second_round_tie:0 "A good game !" + ave_maria_roman_administration_sports_events.2005.OPT.A.team_2_humiliating_loss:0 "A terrible experience..." + ave_maria_roman_administration_sports_events.2005.OPT.A.team_2_honorable_loss:0 "We managed to salvage this." + + ave_maria_roman_administration_sports_events.2001.desc.host:0 "[ROOT.Var('tzykanion_team_1_skill').GetValue|0]\n[ROOT.Var('tzykanion_team_2_skill').GetValue|0]" ##Legitimacy and Popularity tooltip ave_maria_roman_administration_massive_popularity_gain.tt:0 "You gain @popularity_icon! #P 20#!" @@ -812,6 +941,21 @@ ave_maria_roman_administration_small_popularity_loss.tt:0 "You lose @popularity_icon! #N 5#!" + ### Lifestyle + basileus_lifestyle_name:0 "Basileus" + basileus_lifestyle_desc:0 "Focus on administrating the Empire of the Romans, lead its armies as well as further arts and science." + + basileus_lifestyle_rulership_focus:0 "Administration Focus" + basileus_lifestyle_rulership_focus_desc:0 "The Administration is the blood of the Empire." + basileus_lifestyle_rulership_focus_effect_desc:0 "Focusing on Administration will grants:" + basileus_lifestyle_military_focus:0 "Military Focus" + basileus_lifestyle_military_focus_effect_desc:0 "Focusing on Military will grants:" + basileus_lifestyle_military_focus_desc:0 "The heart of the Empire lies with its armies." + basileus_lifestyle_scholarship_focus:0 "Scholarship Focus" + basileus_lifestyle_scholarship_focus_desc:0 "Philosophy and Arts make us civilized." + basileus_lifestyle_scholarship_focus_effect_desc:0 "Focusing on Scholarship will grants:" + + ### CHARACTERS Abulchares:0 "Abulchares"