From 37a82a94b405622d7a83bcd023915aa88689a6bf Mon Sep 17 00:00:00 2001 From: Fishedotjpg Date: Fri, 30 Oct 2026 18:39:30 +0000 Subject: [PATCH] many edits incoming --- common/achievements/ep3_achievements.txt | 6 +- .../00_major_decisions_east_europe.txt | 4 +- common/decisions/10_religious_decisions.txt | 4 +- common/decisions/80_major_decisions.txt | 2 +- .../80_major_decisions_central_asia.txt | 2 +- .../80_major_decisions_middle_east.txt | 2 +- .../80_major_decisions_middle_europe.txt | 2 +- common/decisions/80_major_decisions_roman.txt | 2 +- .../80_major_decisions_south_asia.txt | 2 +- .../decisions/dlc_decisions/ep3_decisions.txt | 20 +- .../ep_3/06_ep3_admin_decisions.txt | 8 +- .../ep_3/06_ep3_laamp_decisions.txt | 6 +- .../dlc_decisions/tgp/tgp_japan_decisions.txt | 10 +- .../dlc_decisions/tgp/tgp_korea_decisions.txt | 2 +- common/dynasty_houses/NEOW_dynasty_houses.txt | 2 +- common/factions/00_factions.txt | 6 +- common/game_concepts/neow_game_concepts.txt | 2 +- .../neow_religion_game_concepts.txt | 3 - common/important_actions/pam_actions.txt | 1583 ++++++++ common/on_action/game_start.txt | 8 +- .../script_values/99_casus_belli_values.txt | 356 +- .../10_dlc_tgp_japan_scripted_effects.txt | 12 +- common/scripted_guis/pam_scripted_guis.txt | 1 + .../pam_scripted_triggers.txt | 1104 +++--- .../NEOW_succession_elections.txt | 88 +- .../roman_restoration_events.txt | 2 +- gui/coat_of_arms.gui | 3210 ++++++++++++++++ gui/hud.gui | 1285 ++++--- gui/window_faith.gui | 2 +- gui/window_intrigue.gui | 3314 +++++++++++++++++ .../common/landed_titles/05_goryeo.txt | 2 +- .../zz_NEOW_dynasty_names_l_english.yml | 1 + .../10_natural_disaster_regions.txt | 2 +- 33 files changed, 9764 insertions(+), 1291 deletions(-) create mode 100644 common/important_actions/pam_actions.txt create mode 100644 common/scripted_guis/pam_scripted_guis.txt create mode 100644 gui/coat_of_arms.gui create mode 100644 gui/window_intrigue.gui diff --git a/common/achievements/ep3_achievements.txt b/common/achievements/ep3_achievements.txt index 95d706f08..38dd8f8e1 100644 --- a/common/achievements/ep3_achievements.txt +++ b/common/achievements/ep3_achievements.txt @@ -167,7 +167,7 @@ # happened = { # custom_description = { # text = chaos_is_a_ladder_achievement_trigger -# government_allows = administrative +# government_has_mechanic = administrative # house ?= { is_dominant_family = yes } # } # } @@ -258,7 +258,7 @@ # has_diarchy_type = co_emperorship # diarch ?= root # } -# government_allows = administrative +# government_has_mechanic = administrative # highest_held_title_tier = tier_kingdom # } # } @@ -277,7 +277,7 @@ # any_house_member = { # count >= 5 # top_liege != this -# government_allows = administrative +# government_has_mechanic = administrative # highest_held_title_tier >= tier_duchy # top_liege = root.top_liege # this != root diff --git a/common/decisions/00_major_decisions_east_europe.txt b/common/decisions/00_major_decisions_east_europe.txt index e7c4af973..ced60e693 100644 --- a/common/decisions/00_major_decisions_east_europe.txt +++ b/common/decisions/00_major_decisions_east_europe.txt @@ -625,7 +625,7 @@ # #Must be feudalised. # OR = { # government_has_flag = government_is_feudal -# government_allows = administrative +# government_has_mechanic = administrative # } # #Must be something other than pagan. # NOT = { @@ -895,7 +895,7 @@ # OR = { # government_has_flag = government_is_feudal # government_has_flag = government_is_clan -# government_allows = administrative +# government_has_mechanic = administrative # } # } # diff --git a/common/decisions/10_religious_decisions.txt b/common/decisions/10_religious_decisions.txt index 4abe179d4..78491a9fe 100644 --- a/common/decisions/10_religious_decisions.txt +++ b/common/decisions/10_religious_decisions.txt @@ -65,7 +65,7 @@ appoint_a_righteous_caliph_decision = { # Appoint a righteous caliph government_has_flag = government_is_tribal government_has_flag = government_is_feudal government_has_flag = government_is_clan - government_allows = administrative + government_has_mechanic = administrative } } @@ -1444,7 +1444,7 @@ ai_create_head_of_faith_decision = { government_has_flag = government_is_tribal government_has_flag = government_is_feudal government_has_flag = government_is_clan - government_allows = administrative + government_has_mechanic = administrative } } diff --git a/common/decisions/80_major_decisions.txt b/common/decisions/80_major_decisions.txt index 9b70473e2..e62aec6c2 100644 --- a/common/decisions/80_major_decisions.txt +++ b/common/decisions/80_major_decisions.txt @@ -2554,7 +2554,7 @@ found_duchy_decision = { has_game_rule = on_custom_duchies } NOR = { - government_allows = administrative + government_has_mechanic = administrative government_has_flag = government_is_nomadic government_is_japanese_trigger = yes } diff --git a/common/decisions/80_major_decisions_central_asia.txt b/common/decisions/80_major_decisions_central_asia.txt index f26d85e0b..d8a6ee181 100644 --- a/common/decisions/80_major_decisions_central_asia.txt +++ b/common/decisions/80_major_decisions_central_asia.txt @@ -178,7 +178,7 @@ # OR = { # government_has_flag = government_is_feudal # government_has_flag = government_is_clan -# government_allows = administrative +# government_has_mechanic = administrative # government_has_flag = government_is_landless_adventurer # } # capital_province = { diff --git a/common/decisions/80_major_decisions_middle_east.txt b/common/decisions/80_major_decisions_middle_east.txt index c74a42d5f..56c29937e 100644 --- a/common/decisions/80_major_decisions_middle_east.txt +++ b/common/decisions/80_major_decisions_middle_east.txt @@ -612,7 +612,7 @@ # government_has_flag = government_is_feudal # government_has_flag = government_is_republic # government_has_flag = government_is_clan -# government_allows = administrative +# government_has_mechanic = administrative # government_has_flag = government_is_landless_adventurer # } # } diff --git a/common/decisions/80_major_decisions_middle_europe.txt b/common/decisions/80_major_decisions_middle_europe.txt index 8a93dd0cd..c76176ec0 100644 --- a/common/decisions/80_major_decisions_middle_europe.txt +++ b/common/decisions/80_major_decisions_middle_europe.txt @@ -722,7 +722,7 @@ # OR = { #Government conditions. # government_has_flag = government_is_feudal # government_has_flag = government_is_clan -# government_allows = administrative +# government_has_mechanic = administrative # } # exists = faith.religious_head # } diff --git a/common/decisions/80_major_decisions_roman.txt b/common/decisions/80_major_decisions_roman.txt index 97ff75b6c..a24c6c2a9 100644 --- a/common/decisions/80_major_decisions_roman.txt +++ b/common/decisions/80_major_decisions_roman.txt @@ -33,7 +33,7 @@ # government_has_flag = government_is_feudal # government_has_flag = government_is_republic # government_has_flag = government_is_clan -# government_allows = administrative +# government_has_mechanic = administrative # } # } # diff --git a/common/decisions/80_major_decisions_south_asia.txt b/common/decisions/80_major_decisions_south_asia.txt index 582b9284b..486227d14 100644 --- a/common/decisions/80_major_decisions_south_asia.txt +++ b/common/decisions/80_major_decisions_south_asia.txt @@ -559,7 +559,7 @@ # OR = { #Government conditions. # government_has_flag = government_is_feudal # government_has_flag = government_is_clan -# government_allows = administrative +# government_has_mechanic = administrative # government_has_flag = government_is_landless_adventurer # } # OR = { diff --git a/common/decisions/dlc_decisions/ep3_decisions.txt b/common/decisions/dlc_decisions/ep3_decisions.txt index 486da39f4..2a9e77c3a 100644 --- a/common/decisions/dlc_decisions/ep3_decisions.txt +++ b/common/decisions/dlc_decisions/ep3_decisions.txt @@ -1611,7 +1611,7 @@ hold_triumph_decision = { # # is_shown = { # has_ep3_dlc_trigger = yes -# government_allows = administrative +# government_has_mechanic = administrative # primary_title.tier ?= tier_empire # dynasty ?= { has_dynasty_perk = ep3_administrative_legacy_5 } # } @@ -2019,7 +2019,7 @@ adopt_state_faith = { if = { limit = { NOT = { has_character_flag = adopted_state_faith } } if = { - limit = { government_allows = administrative } + limit = { government_has_mechanic = administrative } change_influence = monumental_influence_gain } add_piety = massive_piety_gain @@ -2388,7 +2388,7 @@ commission_icon_decision = { is_valid_showing_failures_only = { trigger_if = { limit = { - government_allows = administrative + government_has_mechanic = administrative } domicile ?= { has_domicile_building_or_higher = temple_monastery_04 @@ -2772,7 +2772,7 @@ establish_silk_production_decision = { is_shown = { has_ep3_dlc_trigger = yes - government_allows = administrative + government_has_mechanic = administrative OR = { this = house.house_head AND = { @@ -2887,7 +2887,7 @@ commission_silk_regalia_decision = { is_shown = { has_dlc_feature = roads_to_power - government_allows = administrative + government_has_mechanic = administrative this = house.house_head domicile ?= { has_domicile_parameter = estate_unlock_silk_regalia_decision @@ -3012,7 +3012,7 @@ foster_integration_decision = { has_dlc_feature = roads_to_power is_adult = yes this = house.house_head - government_allows = administrative + government_has_mechanic = administrative domicile ?= { is_domicile_type = estate } @@ -3144,7 +3144,7 @@ foster_integration_decision = { } ai_potential = { - government_allows = administrative + government_has_mechanic = administrative exists = top_liege root.top_liege != root } @@ -3180,7 +3180,7 @@ gather_faction_support_decision = { is_shown = { has_dlc_feature = roads_to_power - government_allows = administrative + government_has_mechanic = administrative exists = top_liege top_liege != root is_adult = yes @@ -3239,7 +3239,7 @@ gather_faction_support_decision = { } ai_potential = { - government_allows = administrative + government_has_mechanic = administrative exists = top_liege top_liege != root } @@ -3409,7 +3409,7 @@ gather_faction_support_decision = { # show_as_tooltip = { # if = { # limit = { -# government_allows = administrative +# government_has_mechanic = administrative # } # custom_tooltip = legitimize_latin_holder_influence_tt # } diff --git a/common/decisions/dlc_decisions/ep_3/06_ep3_admin_decisions.txt b/common/decisions/dlc_decisions/ep_3/06_ep3_admin_decisions.txt index 07e880630..a48d4c41f 100644 --- a/common/decisions/dlc_decisions/ep_3/06_ep3_admin_decisions.txt +++ b/common/decisions/dlc_decisions/ep_3/06_ep3_admin_decisions.txt @@ -667,7 +667,7 @@ consolidate_rule_decision = { } is_valid = { - government_allows = administrative + government_has_mechanic = administrative } is_valid_showing_failures_only = { @@ -788,14 +788,14 @@ convert_to_administrative_decision = { } trigger_if = { limit = { top_liege != this } - liege = { government_allows = administrative } + liege = { government_has_mechanic = administrative } } } is_valid = { trigger_if = { limit = { top_liege != this } - liege = { government_allows = administrative } + liege = { government_has_mechanic = administrative } } trigger_else = { OR = { @@ -1319,7 +1319,7 @@ convert_to_feudalism_from_administrative_decision = { limit = { has_title = title:h_china } NOT = { government_has_flag = government_is_celestial } } - government_allows = administrative + government_has_mechanic = administrative tgp_is_ceremonial_liege_trigger = no tgp_is_ceremonial_regent_trigger = no tgp_is_any_minister = no diff --git a/common/decisions/dlc_decisions/ep_3/06_ep3_laamp_decisions.txt b/common/decisions/dlc_decisions/ep_3/06_ep3_laamp_decisions.txt index 94bd85d6b..5c0108199 100644 --- a/common/decisions/dlc_decisions/ep_3/06_ep3_laamp_decisions.txt +++ b/common/decisions/dlc_decisions/ep_3/06_ep3_laamp_decisions.txt @@ -64,7 +64,7 @@ become_landless_adventurer_decision = { is_landed = yes AND = { is_ai = no - government_allows = administrative + government_has_mechanic = administrative top_liege = this is_landed = no } @@ -77,7 +77,7 @@ become_landless_adventurer_decision = { has_character_modifier = tgp_gave_up_modifier AND = { is_ai = no - government_allows = administrative + government_has_mechanic = administrative top_liege = this is_landed = no } @@ -114,7 +114,7 @@ become_landless_adventurer_decision = { limit = { NAND = { is_ai = no - government_allows = administrative + government_has_mechanic = administrative top_liege = this is_landed = no } diff --git a/common/decisions/dlc_decisions/tgp/tgp_japan_decisions.txt b/common/decisions/dlc_decisions/tgp/tgp_japan_decisions.txt index 6d12e7df0..cf7b6d319 100644 --- a/common/decisions/dlc_decisions/tgp/tgp_japan_decisions.txt +++ b/common/decisions/dlc_decisions/tgp/tgp_japan_decisions.txt @@ -92,7 +92,7 @@ # trigger_if = { # limit = { # top_liege = { -# government_allows = administrative +# government_has_mechanic = administrative # NOT = { government_has_flag = government_is_japan_feudal } # } # } @@ -152,7 +152,7 @@ # if = { # limit = { # is_independent_ruler = no -# top_liege = { government_allows = administrative } +# top_liege = { government_has_mechanic = administrative } # NOR = { # var:petition_liege_house_fief_allowed_flag ?= scope:new_head.top_liege # top_liege = { @@ -344,7 +344,7 @@ # limit = { # is_landed = yes # top_liege = root.top_liege -# NOT = { government_allows = administrative } +# NOT = { government_has_mechanic = administrative } # } # add = 30 # } @@ -468,7 +468,7 @@ # # Crown Authority # trigger_if = { # limit = { -# top_liege = { government_allows = administrative } +# top_liege = { government_has_mechanic = administrative } # } # custom_tooltip = { # text = tgp_japan_establish_house_fief_centralization_trigger @@ -1511,7 +1511,7 @@ # completely_controls = title:d_west_bando # completely_controls = title:d_north_saikaido # OR = { -# government_allows = administrative +# government_has_mechanic = administrative # government_allows = create_cadet_branches # } # } diff --git a/common/decisions/dlc_decisions/tgp/tgp_korea_decisions.txt b/common/decisions/dlc_decisions/tgp/tgp_korea_decisions.txt index 4279a97e4..d6b98494c 100644 --- a/common/decisions/dlc_decisions/tgp/tgp_korea_decisions.txt +++ b/common/decisions/dlc_decisions/tgp/tgp_korea_decisions.txt @@ -45,7 +45,7 @@ # } # # is_valid = { -# government_allows = administrative +# government_has_mechanic = administrative # highest_held_title_tier < tier_empire # OR = { # has_title = title:k_silla diff --git a/common/dynasty_houses/NEOW_dynasty_houses.txt b/common/dynasty_houses/NEOW_dynasty_houses.txt index 776d1a5d7..c86ff389f 100644 --- a/common/dynasty_houses/NEOW_dynasty_houses.txt +++ b/common/dynasty_houses/NEOW_dynasty_houses.txt @@ -1,4 +1,4 @@ - + house_belgium_oranje_nassau_weilburg = { name = "dynn_belgium_oranje_nassau_weilburg" dynasty = belgium_dynasty # belgium diff --git a/common/factions/00_factions.txt b/common/factions/00_factions.txt index c51bc6985..61499d307 100644 --- a/common/factions/00_factions.txt +++ b/common/factions/00_factions.txt @@ -1051,7 +1051,7 @@ claimant_faction = { } modifier = { add = 20 - government_allows = administrative + government_has_mechanic = administrative } } @@ -1216,7 +1216,7 @@ claimant_faction = { modifier = { desc = "FACTION_REASON_CLAIMANT_DISGRUNTLED_VASSALS" add = 15 - government_allows = administrative + government_has_mechanic = administrative } } @@ -1296,7 +1296,7 @@ claimant_faction = { modifier = { desc = "FACTION_REASON_CLAIMANT_DISGRUNTLED_VASSALS" add = 10 - government_allows = administrative + government_has_mechanic = administrative } } diff --git a/common/game_concepts/neow_game_concepts.txt b/common/game_concepts/neow_game_concepts.txt index 60d3aa1fb..db6899922 100644 --- a/common/game_concepts/neow_game_concepts.txt +++ b/common/game_concepts/neow_game_concepts.txt @@ -14,7 +14,7 @@ chemical_weapons = { } minority_community_building = { texture = "gfx/interface/icons/government_types/landless_minority_government.dds" - alias = { minority_community_buildings minority_community_building } + alias = { minority_community_buildings } parent = domicile_building } minority_community = { diff --git a/common/game_concepts/neow_religion_game_concepts.txt b/common/game_concepts/neow_religion_game_concepts.txt index 7f6a62683..ff74d5b9d 100644 --- a/common/game_concepts/neow_religion_game_concepts.txt +++ b/common/game_concepts/neow_religion_game_concepts.txt @@ -25,9 +25,6 @@ neow_fathers_of_europe = { neow_european_spring = { texture = "gfx/interface/icons/faith/mysteriosophy.dds" } -neow_sevillian_church = { - texture = "gfx/interface/icons/faith/sevillian.dds" -} neow_charlemagne = { texture = "gfx/interface/icons/faith/carolingian.dds" } diff --git a/common/important_actions/pam_actions.txt b/common/important_actions/pam_actions.txt new file mode 100644 index 000000000..94a263a35 --- /dev/null +++ b/common/important_actions/pam_actions.txt @@ -0,0 +1,1583 @@ +# PAM player alerts for excommunication. +# +# action_excommunicated_recovery - shown while excommunicated. Click opens the right absolution path local bishop (Declaration of Repentance) OR travel-to-Rome petition (Lift Excommunication). +# action_excommunication_at_risk - warns the player they may be excommunicated soon. +# action_losing_realm_to_clerical_region - warns the player they may lose their current land if inheriting a region +# +action_excommunicated_recovery = { + type = alert + icon = action_take_decision + priority = 900 + + check_create_action = { + if = { + limit = { + has_pam_dlc_trigger = yes + has_trait = excommunicated + } + # Find a local bishop for the Declaration of Repentance path (skipped if player must petition Rome). + excommunicated_recovery_find_cleric_effect = yes + if = { + limit = { + exists = scope:repentance_cleric + } + try_create_important_action = { + important_action_type = action_excommunicated_recovery + actor = root + recipient = scope:repentance_cleric + } + } + # Still show the alert even with no bishop found; description explains other options. + else = { + try_create_important_action = { + important_action_type = action_excommunicated_recovery + actor = root + } + } + } + } + + effect = { + # Year of penance: no absolution yet; tell the player to wait. + if = { + limit = { + has_character_modifier = recent_excommunication + } + send_interface_toast = { + type = event_toast_text_bad + title = action_excommunicated_recovery_penance_toast + desc = action_excommunicated_recovery_penance_toast_desc + left_icon = root + } + } + # Must petition the Head of Faith (kings+, or anyone the Head of Faith excommunicated personally) + # We save religious_head_or_challenger, not religious_head + # Antipope followers opened an empty window otherwise + else_if = { + limit = { + petition_head_of_faith_repentance_requires_petition_trigger = yes + } + petition_head_of_faith_save_religious_authority_effect = { SCOPE = petition_religious_authority } + open_interaction_window = { + interaction = petition_head_of_faith_repentance_setup_interaction + actor = root + recipient = scope:petition_religious_authority + } + } + # Local excommunication: open Declaration of Repentance with the bishop we found earlier. + else_if = { + limit = { + exists = scope:recipient + } + open_interaction_window = { + interaction = declaration_of_repentance_interaction + actor = scope:actor + recipient = scope:recipient + } + } + # Fallback if no bishop was stored on the alert when it was created. + else = { + excommunicated_recovery_find_cleric_effect = yes + if = { + limit = { + exists = scope:repentance_cleric + } + open_interaction_window = { + interaction = declaration_of_repentance_interaction + actor = root + recipient = scope:repentance_cleric + } + } + else = { + send_interface_toast = { + type = event_toast_text_bad + title = action_excommunicated_recovery_no_cleric_toast + desc = action_excommunicated_recovery_no_cleric_toast_desc + left_icon = root + } + } + } + } +} + +# Warns the player before excommunication lands: hostile Pope, or a neighbor who could request it. +action_excommunication_at_risk = { + priority = 400 + combine_into_one = yes + is_dangerous = yes + type = action + icon = action_take_decision + + check_create_action = { + if = { + limit = { + is_ai = no + has_pam_dlc_trigger = yes + exists = faith.religious_head + NOR = { + has_trait = excommunicated + faith.religious_head = root + } + faith = { faith_has_sacraments_central_trigger = yes } + faith = faith.religious_head.faith + # No warning for an antipope's obedience, which the Pope they rejected cannot excommunicate + NOT = { + pam_antipope_protected_from_excommunication_trigger = { EXCOMMUNICATOR = faith.religious_head } + } + OR = { + has_relation_rival = faith.religious_head + has_relation_nemesis = faith.religious_head + is_at_war_with = faith.religious_head + AND = { + opinion = { + target = faith.religious_head + value < 0 + } + any_neighboring_top_liege_realm_owner = { + faith = root.faith + NOT = { this = root } + OR = { + has_relation_rival = root + has_relation_nemesis = root + is_at_war_with = root + } + root = { save_temporary_scope_as = secondary_recipient } + save_temporary_scope_as = puppet_or_actor + piety >= request_excommunication_piety_cost_value + } + } + } + NOR = { + AND = { + opinion = { + target = faith.religious_head + value >= 50 + } + NOR = { + has_relation_rival = faith.religious_head + has_relation_nemesis = faith.religious_head + is_at_war_with = faith.religious_head + } + } + } + } + # Pope may excommunicate you directly. + if = { + limit = { + OR = { + has_relation_rival = faith.religious_head + has_relation_nemesis = faith.religious_head + is_at_war_with = faith.religious_head + } + } + try_create_important_action = { + important_action_type = action_excommunication_at_risk + actor = root + recipient = faith.religious_head + secondary_recipient = faith.religious_head + } + } + # A hostile neighbor with enough piety could request your excommunication. + if = { + limit = { + opinion = { + target = faith.religious_head + value < 0 + } + } + every_neighboring_top_liege_realm_owner = { + limit = { + faith = root.faith + NOT = { this = root } + OR = { + has_relation_rival = root + has_relation_nemesis = root + is_at_war_with = root + } + root = { save_temporary_scope_as = secondary_recipient } + save_temporary_scope_as = puppet_or_actor + piety >= request_excommunication_piety_cost_value + } + try_create_important_action = { + important_action_type = action_excommunication_at_risk + actor = root + recipient = this + secondary_recipient = root.faith.religious_head + } + } + } + } + } + + effect = { + if = { + limit = { exists = scope:secondary_recipient } + scope:secondary_recipient = { + open_view_data = { + view = character + player = scope:actor + } + } + } + } +} + +# warns the player they may lose their current land if inheriting a region +action_losing_realm_to_clerical_region = { + priority = 450 + combine_into_one = no + is_dangerous = yes + type = alert + icon = action_take_decision + + check_create_action = { + if = { + limit = { + is_ai = no + has_pam_dlc_trigger = yes + is_in_line_for_external_clerical_region = yes + } + try_create_important_action = { + important_action_type = action_losing_realm_to_clerical_region + actor = root + } + } + } + + effect = { + faith = { + random_clerical_region_title = { + limit = { + not = { + root = { + has_clerical_region_in_realm = prev + } + } + any_title_heir = { + this = root + } + "place_in_line_of_succession(root)" = 1 + } + open_view_data = { view = title_view_window } + } + } + } +} + +action_in_line_for_local_clerical_region = { + type = action + icon = action_take_decision + priority = 300 + + check_create_action = { + if = { + limit = { + is_ai = no + has_pam_dlc_trigger = yes + is_landed = yes + government_has_flag = government_is_theocracy + capital_county ?= { + clerical_region_title ?= { + is_local_clerical_region_succession_notification_trigger = { CHARACTER = root } + } + } + } + capital_county.clerical_region_title = { + try_create_important_action = { + important_action_type = action_in_line_for_local_clerical_region + actor = root + recipient = holder + landed_title = this + } + } + } + } + + effect = { + scope:landed_title = { + open_view_data = { view = title_view_window } + } + } +} + +action_can_request_new_clerical_region = { + type = action + icon = action_take_decision + priority = 400 + + check_create_action = { + if = { + limit = { + is_ai = no + has_pam_dlc_trigger = yes + is_landed = yes + faith = { has_doctrine_parameter = has_clerical_regions } + NOT = { + any_held_title = { + has_clerical_region = yes + } + } + trigger_if = { + limit = { government_has_flag = government_is_ecclesiastical } + capital_county ?= { + NOT = { exists = clerical_region_title } + } + } + trigger_else = { + NOT = { pam_government_is_religious_playable_trigger = yes } + highest_held_title_tier >= tier_duchy + } + } + if = { + limit = { exists = religious_head_or_challenger } + religious_head_or_challenger = { + save_temporary_scope_as = clerical_region_authority + } + } + else_if = { + limit = { exists = faith.main_rite.head_of_rite } + faith.main_rite.head_of_rite = { + save_temporary_scope_as = clerical_region_authority + } + } + if = { + limit = { + exists = scope:clerical_region_authority + is_character_interaction_valid = { + interaction = request_ecclesiastical_title_creation_interaction + recipient = scope:clerical_region_authority + } + } + ordered_held_title = { + order_by = { + value = tier + if = { + limit = { title_capital_county = root.capital_county } + add = 100 + } + } + max = 1 + check_range_bounds = no + limit = { + pam_valid_new_clerical_region_anchor_trigger = { PETITIONER = root } + } + save_temporary_scope_as = clerical_region_anchor + root = { + try_create_important_action = { + important_action_type = action_can_request_new_clerical_region + actor = root + recipient = scope:clerical_region_authority + target_title = scope:clerical_region_anchor + } + } + } + } + } + } + + unimportant = { + scope:target_title = { save_temporary_scope_as = target } + piety < pam_new_clerical_region_cost_value + } + + effect = { + open_interaction_window = { + interaction = request_ecclesiastical_title_creation_interaction + actor = scope:actor + recipient = scope:recipient + target_title = scope:target_title + } + } +} + +action_can_request_clerical_region_expansion = { + type = action + icon = action_take_decision + priority = 400 + + check_create_action = { + if = { + limit = { + is_ai = no + has_pam_dlc_trigger = yes + is_landed = yes + pam_government_is_religious_playable_trigger = yes + faith = { has_doctrine_parameter = has_clerical_regions } + NOT = { pam_is_clerical_title_authority_trigger = yes } + capital_county ?= { + clerical_region_title ?= { + has_clerical_region = yes + is_head_of_faith = no + holder ?= root + } + } + } + if = { + limit = { exists = religious_head_or_challenger } + religious_head_or_challenger = { + save_temporary_scope_as = clerical_region_authority + } + } + else_if = { + limit = { exists = faith.main_rite.head_of_rite } + faith.main_rite.head_of_rite = { + save_temporary_scope_as = clerical_region_authority + } + } + if = { + limit = { + exists = scope:clerical_region_authority + scope:clerical_region_authority != root + } + capital_county.clerical_region_title = { + save_temporary_scope_as = acting_clerical_region + every_county_in_clerical_region = { + every_neighboring_county = { + limit = { + exists = duchy + NOT = { clerical_region_title ?= scope:acting_clerical_region } + } + duchy = { + if = { + limit = { + NOR = { + is_in_list = preferred_clerical_region_expansion_targets + is_in_list = clerical_region_expansion_targets + } + save_temporary_scope_as = clerical_region_expansion_candidate + root = { + has_variable_list = clergy_expands + any_in_list = { + variable = clergy_expands + this = scope:clerical_region_expansion_candidate + } + } + } + add_to_temporary_list = preferred_clerical_region_expansion_targets + } + else_if = { + limit = { + NOR = { + is_in_list = preferred_clerical_region_expansion_targets + is_in_list = clerical_region_expansion_targets + } + } + add_to_temporary_list = clerical_region_expansion_targets + } + } + } + } + } + ordered_in_list = { + list = preferred_clerical_region_expansion_targets + max = 1 + check_range_bounds = no + limit = { + save_temporary_scope_as = clerical_region_expansion_candidate + root = { + is_character_interaction_potentially_accepted = { + interaction = request_ecclesiastical_title_expansion_interaction + recipient = scope:clerical_region_authority + target_title = scope:clerical_region_expansion_candidate + } + } + } + save_temporary_scope_as = clerical_region_expansion_target + } + if = { + limit = { NOT = { exists = scope:clerical_region_expansion_target } } + ordered_in_list = { + list = clerical_region_expansion_targets + max = 1 + check_range_bounds = no + limit = { + save_temporary_scope_as = clerical_region_expansion_candidate + root = { + is_character_interaction_potentially_accepted = { + interaction = request_ecclesiastical_title_expansion_interaction + recipient = scope:clerical_region_authority + target_title = scope:clerical_region_expansion_candidate + } + } + } + save_temporary_scope_as = clerical_region_expansion_target + } + } + if = { + limit = { exists = scope:clerical_region_expansion_target } + try_create_important_action = { + important_action_type = action_can_request_clerical_region_expansion + actor = root + recipient = scope:clerical_region_authority + target_title = scope:clerical_region_expansion_target + } + } + } + } + } + + effect = { + open_interaction_window = { + interaction = request_ecclesiastical_title_expansion_interaction + actor = scope:actor + recipient = scope:recipient + target_title = scope:target_title + } + } +} + +action_can_request_enforce_succession = { + type = action + icon = action_take_decision + priority = 400 + combine_into_one = yes + + check_create_action = { + if = { + limit = { + is_ai = no + has_pam_dlc_trigger = yes + is_ruler = yes + religion ?= religion:christianity_religion + NOT = { + government_has_flag = government_is_theocracy + } + has_legitimacy = yes + legitimacy_level >= 3 + any_claim = { } + capital_county.clerical_region_title ?= { + exists = holder + holder != root + } + } + capital_county.clerical_region_title.holder = { + save_temporary_scope_as = local_archbishop + } + every_claim = { + limit = { + save_temporary_scope_as = enforce_succession_title_candidate + pam_valid_enforce_succession_title_trigger = { + TITLE = scope:enforce_succession_title_candidate + ACTOR = root + } + root = { + is_character_interaction_potentially_accepted = { + interaction = request_enforce_succession_interaction + recipient = scope:local_archbishop + target_title = scope:enforce_succession_title_candidate + } + } + } + try_create_important_action = { + important_action_type = action_can_request_enforce_succession + actor = root + recipient = scope:local_archbishop + landed_title = this + } + } + } + } + + effect = { + open_interaction_window = { + interaction = request_enforce_succession_interaction + actor = scope:actor + recipient = scope:recipient + target_title = scope:landed_title + } + } +} + +action_can_demand_church_succession = { + type = action + icon = action_take_decision + priority = 400 + combine_into_one = yes + + check_create_action = { + if = { + limit = { + is_ai = no + has_pam_dlc_trigger = yes + government_has_flag = government_is_theocracy + is_landed = yes + is_available_adult = yes + piety_level >= medium_piety_level + piety >= massive_piety_value + treasury_or_gold >= medium_treasury_or_gold_value + NOR = { + has_trait = excommunicated + faith.religious_head ?= this + } + } + every_neighboring_top_liege_realm_owner = { + limit = { + pam_demand_church_succession_cs_candidate_trigger = { ACTOR = root } + NOT = { is_in_list = demand_church_succession_cs_candidates } + } + add_to_temporary_list = demand_church_succession_cs_candidates + } + if = { + limit = { + exists = liege + liege != this + } + liege = { + every_vassal = { + limit = { + character_is_realm_neighbor = root + pam_demand_church_succession_cs_candidate_trigger = { ACTOR = root } + NOT = { is_in_list = demand_church_succession_cs_candidates } + } + add_to_temporary_list = demand_church_succession_cs_candidates + } + } + } + every_held_title = { + limit = { has_clerical_region = yes } + every_county_in_clerical_region = { + limit = { + holder ?= { + pam_demand_church_succession_cs_candidate_trigger = { ACTOR = root } + NOT = { is_in_list = demand_church_succession_cs_candidates } + } + } + holder = { + add_to_temporary_list = demand_church_succession_cs_candidates + } + } + } + every_in_list = { + list = demand_church_succession_cs_candidates + limit = { + save_temporary_scope_as = demand_church_succession_target + root = { + is_character_interaction_potentially_accepted = { + interaction = demand_church_succession_interaction + recipient = scope:demand_church_succession_target + } + } + } + add_to_temporary_list = demand_church_succession_cs_valid + } + ordered_in_list = { + list = demand_church_succession_cs_valid + max = 3 + check_range_bounds = no + order_by = highest_held_title_tier + try_create_important_action = { + important_action_type = action_can_demand_church_succession + actor = root + recipient = this + } + } + } + } + + effect = { + open_interaction_window = { + interaction = demand_church_succession_interaction + actor = scope:actor + recipient = scope:recipient + } + } +} + +action_pam_decision_confession = { + type = alert + icon = action_take_decision + + check_create_action = { + if = { + limit = { + has_pam_dlc_trigger = yes + spiritual_fulfillment < 0 + can_execute_decision = pam_decision_confession + } + try_create_important_action = { + important_action_type = action_pam_decision_confession + actor = root + } + } + } + + effect = { + decision:pam_decision_confession = { open_view_data = decision_detail } + } +} + +# Can select a personal tenet +action_can_select_personal_tenet = { + type = alert + icon = action_can_select_personal_tenet + + check_create_action = { + if = { + limit = { + free_personal_tenet_slots > 0 + } + + try_create_important_action = { + important_action_type = action_can_select_personal_tenet + } + } + } + + effect = { + root.rite = { + open_view_data = { + view = personal_beliefs_window + data = root + player = root + } + } + } +} + +action_can_request_preach_legitimacy = { + type = action + icon = legitimacy + combine_into_one = yes + + check_create_action = { + + if = { + limit = { + has_pam_dlc_trigger = yes + has_legitimacy = yes + NOT = { has_trait = excommunicated } + OR = { + any_powerful_vassal = { + NOT = { + root = { + meets_legitimacy_expectation_of = prev + } + } + } + any_vassal = { + NOT = { + root = { + meets_legitimacy_expectation_of = prev + } + } + } + } + OR = { + #One of your vassals that would accept + any_vassal_or_below = { + highest_held_title_tier >= tier_duchy + pam_request_legitimacy_priest_trigger = { CHARACTER = root } + add_to_temporary_list = possible_priests + } + #Bishop in same area + primary_title ?= { + any_clerical_region_in_dejure_title = { + holder ?= { + highest_held_title_tier >= tier_duchy + pam_request_legitimacy_priest_trigger = { CHARACTER = root } + + add_to_temporary_list = possible_priests + } + } + } + #Head of faith + religious_head_or_challenger ?= { + highest_held_title_tier >= tier_duchy + pam_request_legitimacy_priest_trigger = { CHARACTER = root } + add_to_temporary_list = possible_priests + } + } + + any_in_list = { + list = possible_priests + root = { + is_character_interaction_potentially_accepted = { + recipient = prev + interaction = request_legitimacy_interaction + } + } + + save_temporary_scope_as = target_priest + } + } + try_create_important_action = { + important_action_type = action_can_request_preach_legitimacy + actor = root + recipient = scope:target_priest + } + } + } + + effect = { + open_interaction_window = { + interaction = request_legitimacy_interaction + actor = scope:actor + recipient = scope:recipient + } + } +} + +action_targeted_by_mass_rite_conversion = { + type = alert + icon = action_being_raided + soundeffect = "event:/SFX/UI/War/sfx_ui_war_declare_war" + check_create_action = { + if = { + limit = { + any_great_project = { + save_temporary_scope_as = great_project + great_project_type = pam_mass_rite_conversion + great_project_owner != root + great_project_location = { + province_owner.top_liege = { + OR = { + any_liege_or_above = { + this = root + } + this = root + } + } + } + } + NOR = { + any_character_war = { + using_non_ghw_holy_war_cb_trigger = yes + } + is_vassal_or_below_of = scope:great_project.great_project_owner + } + } + scope:great_project = { + try_create_important_action = { + important_action_type = action_targeted_by_mass_rite_conversion + actor = root + great_project = scope:great_project + } + } + } + } + + effect = { + scope:great_project = { + open_view_data = { + view = great_project + player = scope:actor + } + } + } +} + +action_sanctify_artifact = { + icon = generic_reactive_advice + + check_create_action = { + if = { + limit = { + faith.religious_head ?= { this != root } + is_character_interaction_valid = { + recipient = faith.religious_head + interaction = sanctify_artifact_interaction + } + } + try_create_important_action = { + important_action_type = action_sanctify_artifact + actor = root + recipient = faith.religious_head + } + } + else_if = { + limit = { + NOT = { exists = faith.religious_head } + cp:councillor_court_chaplain ?= { + this != root + faith = root.faith + } + is_character_interaction_valid = { + recipient = cp:councillor_court_chaplain + interaction = sanctify_artifact_interaction + } + } + try_create_important_action = { + important_action_type = action_sanctify_artifact + actor = root + recipient = cp:councillor_court_chaplain + } + } + } + + effect = { + open_interaction_window = { + interaction = sanctify_artifact_interaction + actor = scope:actor + recipient = scope:recipient + } + } +} + +# Grabs the 5 Archbishops with the highest piety +action_can_appoint_cardinals = { + priority = 400 + icon = action_take_decision + combine_into_one = yes + + check_create_action = { + if = { + limit = { + has_pam_dlc_trigger = yes + is_adult = yes + is_incapable = no + religion = religion:christianity_religion + pam_leads_college_of_cardinals_trigger = yes + faith = { + has_doctrine_parameter = has_clerical_electors + any_clerical_elector_title = { + count < 15 + } + } + } + faith = { + ordered_clerical_region_title = { + limit = { + holder ?= { + this != root + is_incapable = no + NOT = { has_trait = excommunicated } + NOT = { exists = clerical_elector_title } # Not already a cardinal + pam_can_hold_cardinalate_trigger = yes + pam_pope_is_head_of_faith_or_rite_trigger = yes + } + } + order_by = holder.piety_level + max = 5 + check_range_bounds = no + holder = { + try_create_important_action = { + important_action_type = action_can_appoint_cardinals + actor = root + recipient = this + } + } + } + } + } + } + + effect = { + open_interaction_window = { + interaction = appoint_cardinal_interaction + actor = scope:actor + recipient = scope:recipient + secondary_actor = scope:actor + } + } +} + +action_can_make_clerical_puppet = { + type = action + icon = theological_agent_puppet + + check_create_action = { + if = { + limit = { + can_have_realm_priest_puppet_trigger = yes # is_character_interaction_potentially_accepted does not check is_available for now + cp:councillor_court_chaplain ?= { + root = { + is_character_interaction_potentially_accepted = { + recipient = prev + interaction = make_clerical_puppet_interaction + } + } + } + } + try_create_important_action = { + important_action_type = action_can_make_clerical_puppet + actor = root + recipient = cp:councillor_court_chaplain + } + } + } + + effect = { + open_interaction_window = { + interaction = make_clerical_puppet_interaction + actor = scope:actor + recipient = scope:recipient + } + } +} + +action_can_make_external_clerical_puppet = { + type = action + icon = external_theological_agent_puppet + combine_into_one = yes + + check_create_action = { + if = { + limit = { + can_have_theological_agent_puppet_trigger = yes + } + faith = { + ordered_faith_playable_ruler = { + max = 30 + check_range_bounds = no + order_by = highest_held_title_tier + limit = { + save_temporary_scope_as = clergy_temp + is_clergy = yes + NOT = { this = root } + trigger_if = { + limit = { + root = { is_clergy = yes } + } + highest_held_title_tier >= root.highest_held_title_tier_minus_one + OR = { + root.faith.religious_head ?= this + root.cp:councillor_court_chaplain.superior ?= this + exists = clerical_elector_title + AND = { + any_held_title = { + has_clerical_region = yes + any_county_in_clerical_region = { + holder.top_liege = root.top_liege + } + } + } + top_liege = root.top_liege + top_liege = { + any_character_to_title_neighboring_county = { + holder = { + target_is_same_character_or_above = root + } + } + } + root = { has_hook = scope:clergy_temp } + AND = { + exists = house + house.house_head = root + } + has_any_moderate_good_relationship_with_character_trigger = { CHARACTER = root } + is_imprisoned_by = root + AND = { + has_variable_list = puppeteers + any_in_list = { + variable = puppeteers + this = root + } + } + } + } + root = { + is_character_interaction_potentially_accepted = { + recipient = prev + interaction = make_external_clerical_puppet_interaction + } + } + } + try_create_important_action = { + important_action_type = action_can_make_external_clerical_puppet + actor = root + recipient = this + } + } + } + } + } + + effect = { + open_interaction_window = { + interaction = make_external_clerical_puppet_interaction + actor = scope:actor + recipient = scope:recipient + } + } +} + +action_can_make_external_ruler_puppet = { + type = action + icon = external_ruler_puppet + combine_into_one = yes + + check_create_action = { + if = { + limit = { + can_have_external_ruler_puppet_trigger = yes + } + faith = { + ordered_faith_playable_ruler = { + order_by = highest_held_title_tier + max = 30 + check_range_bounds = no + limit = { + save_temporary_scope_as = external_ruler_puppet_candidate + NOT = { this = root } + is_landed = yes + is_clergy = no + highest_held_title_tier >= root.highest_held_title_tier_minus_one + trigger_if = { + limit = { root.highest_held_title_tier < tier_kingdom } + OR = { + top_liege = root.top_liege + root = { + is_landed = yes + any_character_to_title_neighboring_county = { + holder.top_liege = scope:external_ruler_puppet_candidate + } + } + root = { + any_held_title = { + has_clerical_region = yes + any_county_in_clerical_region = { + OR = { + holder ?= { + target_is_same_character_or_above = scope:external_ruler_puppet_candidate + } + any_neighboring_county = { + holder ?= { + target_is_same_character_or_above = scope:external_ruler_puppet_candidate + } + } + } + } + } + } + } + } + root = { + is_character_interaction_potentially_accepted = { + recipient = prev + interaction = make_external_ruler_puppet_interaction + } + } + } + try_create_important_action = { + important_action_type = action_can_make_external_ruler_puppet + actor = root + recipient = this + } + } + } + } + } + + effect = { + open_interaction_window = { + interaction = make_external_ruler_puppet_interaction + actor = scope:actor + recipient = scope:recipient + } + } +} + +action_opportunity_to_study_scripture = { + type = action + priority = 500 + + check_create_action = { + if = { + limit = { + can_execute_decision = pam_study_scripture_decision + stress_level < 1 + } + try_create_important_action = { + important_action_type = action_opportunity_to_study_scripture + actor = root + } + } + } + + effect = { + decision:pam_study_scripture_decision = { open_view_data = decision_detail } + } +} + +action_can_upgrade_great_cathedral = { + type = action + + check_create_action = { + if = { + limit = { + root = { + pam_cathedral_project_requirements_trigger = yes + OR = { + can_plan_great_project = great_project_type:pam_cathedral_01 + can_plan_great_project = great_project_type:pam_cathedral_02 + can_plan_great_project = great_project_type:pam_cathedral_03 + } + } + } + try_create_important_action = { + important_action_type = action_can_upgrade_great_cathedral + actor = root + recipient = this + } + } + } + + effect = { + open_view_data = { + view = decisions + data = flag:great_projects + } + } +} + +action_can_plan_mass_conversion = { + type = action + + check_create_action = { + if = { + limit = { + root = { + pam_mass_rite_conversion_requirements_trigger = yes + can_plan_great_project = great_project_type:pam_mass_rite_conversion + } + } + try_create_important_action = { + important_action_type = action_can_plan_mass_conversion + actor = root + recipient = this + } + } + } + + effect = { + open_view_data = { + view = decisions + data = flag:great_projects + } + } +} + +# Holdouts of another rite in the archbishop's own diocese, split by whether a petition can be sent +# is_character_interaction_potentially_accepted with no ai_accept is a send check +action_can_sway_ruler_to_rite = { + type = action + priority = 450 + combine_into_one = yes + + check_create_action = { + if = { + limit = { + is_ai = no + has_pam_dlc_trigger = yes + NOT = { has_trait = excommunicated } + faith = { has_doctrine_parameter = has_clerical_regions } + any_held_title = { + has_clerical_region = yes + is_head_of_faith = no + } + } + every_held_title = { + limit = { + has_clerical_region = yes + is_head_of_faith = no + } + every_county_in_clerical_region = { + limit = { + exists = holder + holder = { save_temporary_scope_as = sway_to_rite_target } + scope:sway_to_rite_target = { + pam_sway_to_rite_diocese_candidate_trigger = { ARCHBISHOP = root } + } + pam_sway_to_rite_variant_can_send_trigger = { + ARCHBISHOP = root + TARGET = scope:sway_to_rite_target + } + } + holder = { save_scope_as = sway_to_rite_candidate } + root = { + try_create_important_action = { + important_action_type = action_can_sway_ruler_to_rite + actor = root + recipient = scope:sway_to_rite_candidate + } + } + } + } + } + } + + effect = { + pam_open_sway_to_rite_variant_effect = yes + } +} + +action_can_ask_subordinates_for_gold = { + type = action + priority = 400 + icon = action_tax_collector + combine_into_one = yes + + check_create_action = { + if = { + limit = { + is_ai = no + has_pam_dlc_trigger = yes + is_adult = yes + pam_is_clerical_comprehensive_trigger = yes + } + every_subordinate = { + limit = { + save_temporary_scope_as = ask_subordinates_for_gold_target + root = { + is_character_interaction_potentially_accepted = { + recipient = scope:ask_subordinates_for_gold_target + interaction = pam_ask_subordinates_for_gold_interaction + } + } + } + save_scope_as = ask_subordinates_for_gold_candidate + root = { + try_create_important_action = { + important_action_type = action_can_ask_subordinates_for_gold + actor = root + recipient = scope:ask_subordinates_for_gold_candidate + } + } + } + } + } + + effect = { + open_interaction_window = { + interaction = pam_ask_subordinates_for_gold_interaction + actor = scope:actor + recipient = scope:recipient + } + } +} + +action_sway_ruler_to_rite_unlikely = { + type = action + priority = 449 + combine_into_one = yes + + check_create_action = { + if = { + limit = { + is_ai = no + has_pam_dlc_trigger = yes + NOT = { has_trait = excommunicated } + faith = { has_doctrine_parameter = has_clerical_regions } + any_held_title = { + has_clerical_region = yes + is_head_of_faith = no + } + } + every_held_title = { + limit = { + has_clerical_region = yes + is_head_of_faith = no + } + every_county_in_clerical_region = { + limit = { + exists = holder + holder = { save_temporary_scope_as = sway_to_rite_target } + scope:sway_to_rite_target = { + pam_sway_to_rite_diocese_candidate_trigger = { ARCHBISHOP = root } + } + NOT = { + pam_sway_to_rite_variant_can_send_trigger = { + ARCHBISHOP = root + TARGET = scope:sway_to_rite_target + } + } + } + holder = { save_scope_as = sway_to_rite_candidate } + root = { + try_create_important_action = { + important_action_type = action_sway_ruler_to_rite_unlikely + actor = root + recipient = scope:sway_to_rite_candidate + } + } + } + } + } + } + + effect = { + pam_open_sway_to_rite_variant_effect = yes + } +} + +# Prelates of adjacent dioceses who follow another rite, split by whether the petition can be sent +# check_create_action allows interface effects only +# try_create_important_action skips repeat hits +action_can_sway_prelate_to_rite = { + type = action + priority = 448 + combine_into_one = yes + + check_create_action = { + if = { + limit = { + is_ai = no + has_pam_dlc_trigger = yes + NOT = { has_trait = excommunicated } + faith = { has_doctrine_parameter = has_clerical_regions } + piety_level >= high_piety_level + any_held_title = { + has_clerical_region = yes + is_head_of_faith = no + } + } + every_held_title = { + limit = { + has_clerical_region = yes + is_head_of_faith = no + } + save_temporary_scope_as = pam_sway_own_region + every_county_in_clerical_region = { + every_neighboring_county = { + limit = { + exists = clerical_region_title + NOT = { clerical_region_title = scope:pam_sway_own_region } + exists = clerical_region_title.holder + clerical_region_title.holder = { save_temporary_scope_as = pam_sway_prelate_target } + scope:pam_sway_prelate_target = { + pam_sway_to_rite_adjacent_prelate_candidate_trigger = { ARCHBISHOP = root } + } + pam_sway_to_rite_variant_can_send_trigger = { + ARCHBISHOP = root + TARGET = scope:pam_sway_prelate_target + } + } + clerical_region_title.holder = { save_scope_as = pam_sway_prelate_candidate } + root = { + try_create_important_action = { + important_action_type = action_can_sway_prelate_to_rite + actor = root + recipient = scope:pam_sway_prelate_candidate + } + } + } + } + } + } + } + + effect = { + pam_open_sway_to_rite_variant_effect = yes + } +} + +action_sway_prelate_to_rite_unlikely = { + type = action + priority = 447 + combine_into_one = yes + + check_create_action = { + if = { + limit = { + is_ai = no + has_pam_dlc_trigger = yes + NOT = { has_trait = excommunicated } + faith = { has_doctrine_parameter = has_clerical_regions } + any_held_title = { + has_clerical_region = yes + is_head_of_faith = no + } + } + every_held_title = { + limit = { + has_clerical_region = yes + is_head_of_faith = no + } + save_temporary_scope_as = pam_sway_own_region + every_county_in_clerical_region = { + every_neighboring_county = { + limit = { + exists = clerical_region_title + NOT = { clerical_region_title = scope:pam_sway_own_region } + exists = clerical_region_title.holder + clerical_region_title.holder = { save_temporary_scope_as = pam_sway_prelate_target } + scope:pam_sway_prelate_target = { + pam_sway_to_rite_adjacent_prelate_candidate_trigger = { ARCHBISHOP = root } + } + NOT = { + pam_sway_to_rite_variant_can_send_trigger = { + ARCHBISHOP = root + TARGET = scope:pam_sway_prelate_target + } + } + } + clerical_region_title.holder = { save_scope_as = pam_sway_prelate_candidate } + root = { + try_create_important_action = { + important_action_type = action_sway_prelate_to_rite_unlikely + actor = root + recipient = scope:pam_sway_prelate_candidate + } + } + } + } + } + } + } + + effect = { + pam_open_sway_to_rite_variant_effect = yes + } +} + +action_can_found_holy_site_in_capital = { + type = action + priority = 400 + icon = action_take_decision + + check_create_action = { + if = { + limit = { + is_landed = yes + NOT = { has_variable = holy_site_creation_cooldown } + capital_barony ?= { + is_leased_out = no + is_holy_site = no + } + can_create_faith_holy_site_trigger = { BARONY = root.capital_barony } + faith = { + list_size:holy_site < religion.holy_sites_max + faith_holy_site_kingdom_unused_trigger = { BARONY = root.capital_barony } + } + OR = { + any_character_artifact = { + is_equipped = no + is_holy_relic_for = root.faith + rarity_level >= famed + } + AND = { + any_character_artifact = { + is_equipped = no + is_holy_relic_for = root.faith + rarity_level >= masterwork + } + any_character_artifact = { + count >= 2 + is_equipped = no + is_holy_relic_for = root.faith + } + } + any_character_artifact = { + count >= 3 + is_equipped = no + is_holy_relic_for = root.faith + } + } + } + try_create_important_action = { + important_action_type = action_can_found_holy_site_in_capital + actor = root + landed_title = capital_county + } + } + } + + effect = { + scope:actor.faith = { + open_view_data = { + view = holy_site_creation + player = scope:actor + } + } + } +} diff --git a/common/on_action/game_start.txt b/common/on_action/game_start.txt index 25c6efdbd..1756eeccc 100644 --- a/common/on_action/game_start.txt +++ b/common/on_action/game_start.txt @@ -23,7 +23,7 @@ on_game_start = { if = { limit = { - government_allows = administrative + government_has_mechanic = administrative is_house_head = yes trigger_if = { # This trigger is intentionally different from the similar effecy in on_title_gain up above. We want all direct vassals of the top liege to have a family title if they can @@ -4477,7 +4477,7 @@ on_game_start_after_lobby = { limit = { highest_held_title_tier >= tier_kingdom NOR = { - government_allows = administrative + government_has_mechanic = administrative is_landed = no } } @@ -4490,7 +4490,7 @@ on_game_start_after_lobby = { limit = { highest_held_title_tier >= tier_kingdom NOR = { - government_allows = administrative + government_has_mechanic = administrative is_landed = no } has_trait = august @@ -15281,7 +15281,7 @@ on_game_start_after_lobby = { } ### EP3 ADMIN SETUP ### if = { - limit = { government_allows = administrative } + limit = { government_has_mechanic = administrative } save_scope_as = top_liege ### EP3 NOBLE FAMILIES & DOMICILE SETUP ### random_held_title = { # May be removed once every_noble_family includes liege (TIT-51212) diff --git a/common/script_values/99_casus_belli_values.txt b/common/script_values/99_casus_belli_values.txt index 86e054da0..97a06079a 100644 --- a/common/script_values/99_casus_belli_values.txt +++ b/common/script_values/99_casus_belli_values.txt @@ -1188,184 +1188,184 @@ ancestor_cb_prestige_cost = { } ##### Multi-Currency Costs -# -#struggle_cb_phase_modifier_cost = { -# # Phase modifiers. -# ## Note that these aren't hooked up to the actual _parameters_ for tooltip reasons: we'd have to check what the phase is anyway, so we just check off of the phase to begin with and save ourselves a worthless parameter check. -# add = { -# value = 0 -# # Cheap. -# if = { -# limit = { -# scope:attacker = { -# any_character_struggle = { -# involvement = involved -# is_struggle_type = iberian_struggle -# is_struggle_phase = struggle_iberia_phase_hostility -# is_secondary_character_involvement_either_trigger = { CHAR = scope:defender } -# } -# } -# } -# add = { -# every_in_list = { -# list = target_titles -# limit = { tier = tier_county } -# add = { -# value = minor_prestige_value -# } -# } -# multiply = { -# value = 0.9 -# every_in_list = { -# list = target_titles -# limit = { tier = tier_county } -# add = { -# value = 0.1 -# } -# } -# max = 2 -# } -# desc = CB_COST_STRUGGLE_PHASE_HOSTILITY -# } -# } -# # Standard. -# if = { -# limit = { -# scope:attacker = { -# any_character_struggle = { -# involvement = involved -# is_struggle_type = iberian_struggle -# is_struggle_phase = struggle_iberia_phase_opportunity -# is_secondary_character_involvement_either_trigger = { CHAR = scope:defender } -# } -# } -# } -# add = { -# every_in_list = { -# list = target_titles -# limit = { tier = tier_county } -# add = { -# value = medium_prestige_value -# } -# } -# multiply = { -# value = 0.9 -# every_in_list = { -# list = target_titles -# limit = { tier = tier_county } -# add = { -# value = 0.1 -# } -# } -# max = 2 -# } -# desc = CB_COST_STRUGGLE_PHASE_OPPORTUNITY -# } -# } -# # Expensive. -# if = { -# limit = { -# scope:attacker = { -# any_character_struggle = { -# involvement = involved -# is_struggle_type = iberian_struggle -# is_struggle_phase = struggle_iberia_phase_compromise -# is_secondary_character_involvement_either_trigger = { CHAR = scope:defender } -# } -# } -# } -# add = { -# every_in_list = { -# list = target_titles -# limit = { tier = tier_county } -# add = { -# value = major_prestige_value -# } -# } -# multiply = { -# value = 0.9 -# every_in_list = { -# list = target_titles -# limit = { tier = tier_county } -# add = { -# value = 0.1 -# } -# } -# max = 2 -# } -# desc = CB_COST_STRUGGLE_PHASE_COMPROMISE -# } -# } -# if = { -# limit = { -# scope:attacker = { -# any_character_struggle = { -# involvement = involved -# is_struggle_type = iberian_struggle -# is_struggle_phase = struggle_iberia_phase_conciliation -# is_secondary_character_involvement_either_trigger = { CHAR = scope:defender } -# } -# } -# } -# add = { -# every_in_list = { -# list = target_titles -# limit = { tier = tier_county } -# add = { -# value = major_prestige_value -# } -# } -# multiply = { -# value = 0.9 -# every_in_list = { -# list = target_titles -# limit = { tier = tier_county } -# add = { -# value = 0.1 -# } -# } -# max = 2 -# } -# desc = CB_COST_STRUGGLE_PHASE_CONCILIATION -# } -# } -# if = { # Post Struggle cost -# limit = { -# scope:attacker = { -# exists = scope:attacker.house -# scope:attacker.house = { -# OR ={ -# has_house_modifier = fp2_struggle_hostility_house_combined_modifier -# has_house_modifier = fp2_struggle_hostility_house_faith_modifier -# has_house_modifier = fp2_struggle_hostility_house_culture_modifier -# } -# } -# } -# } -# add = { -# every_in_list = { -# list = target_titles -# limit = { tier = tier_county } -# add = { -# value = major_prestige_value -# } -# } -# multiply = { -# value = 0.9 -# every_in_list = { -# list = target_titles -# limit = { tier = tier_county } -# add = { -# value = 0.1 -# } -# } -# max = 2 -# } -# desc = CB_BASE_COST -# } -# } -# } -#} + +struggle_cb_phase_modifier_cost = { + # Phase modifiers. + ## Note that these aren't hooked up to the actual _parameters_ for tooltip reasons: we'd have to check what the phase is anyway, so we just check off of the phase to begin with and save ourselves a worthless parameter check. + add = { + value = 0 + # Cheap. + if = { + limit = { + scope:attacker = { + any_character_struggle = { + involvement = involved + is_struggle_type = iberian_struggle + is_struggle_phase = struggle_iberia_phase_hostility + is_secondary_character_involvement_either_trigger = { CHAR = scope:defender } + } + } + } + add = { + every_in_list = { + list = target_titles + limit = { tier = tier_county } + add = { + value = minor_prestige_value + } + } + multiply = { + value = 0.9 + every_in_list = { + list = target_titles + limit = { tier = tier_county } + add = { + value = 0.1 + } + } + max = 2 + } + desc = CB_COST_STRUGGLE_PHASE_HOSTILITY + } + } + # Standard. + if = { + limit = { + scope:attacker = { + any_character_struggle = { + involvement = involved + is_struggle_type = iberian_struggle + is_struggle_phase = struggle_iberia_phase_opportunity + is_secondary_character_involvement_either_trigger = { CHAR = scope:defender } + } + } + } + add = { + every_in_list = { + list = target_titles + limit = { tier = tier_county } + add = { + value = medium_prestige_value + } + } + multiply = { + value = 0.9 + every_in_list = { + list = target_titles + limit = { tier = tier_county } + add = { + value = 0.1 + } + } + max = 2 + } + desc = CB_COST_STRUGGLE_PHASE_OPPORTUNITY + } + } + # Expensive. + if = { + limit = { + scope:attacker = { + any_character_struggle = { + involvement = involved + is_struggle_type = iberian_struggle + is_struggle_phase = struggle_iberia_phase_compromise + is_secondary_character_involvement_either_trigger = { CHAR = scope:defender } + } + } + } + add = { + every_in_list = { + list = target_titles + limit = { tier = tier_county } + add = { + value = major_prestige_value + } + } + multiply = { + value = 0.9 + every_in_list = { + list = target_titles + limit = { tier = tier_county } + add = { + value = 0.1 + } + } + max = 2 + } + desc = CB_COST_STRUGGLE_PHASE_COMPROMISE + } + } + if = { + limit = { + scope:attacker = { + any_character_struggle = { + involvement = involved + is_struggle_type = iberian_struggle + is_struggle_phase = struggle_iberia_phase_conciliation + is_secondary_character_involvement_either_trigger = { CHAR = scope:defender } + } + } + } + add = { + every_in_list = { + list = target_titles + limit = { tier = tier_county } + add = { + value = major_prestige_value + } + } + multiply = { + value = 0.9 + every_in_list = { + list = target_titles + limit = { tier = tier_county } + add = { + value = 0.1 + } + } + max = 2 + } + desc = CB_COST_STRUGGLE_PHASE_CONCILIATION + } + } + if = { # Post Struggle cost + limit = { + scope:attacker = { + exists = scope:attacker.house + scope:attacker.house = { + OR ={ + has_house_modifier = fp2_struggle_hostility_house_combined_modifier + has_house_modifier = fp2_struggle_hostility_house_faith_modifier + has_house_modifier = fp2_struggle_hostility_house_culture_modifier + } + } + } + } + add = { + every_in_list = { + list = target_titles + limit = { tier = tier_county } + add = { + value = major_prestige_value + } + } + multiply = { + value = 0.9 + every_in_list = { + list = target_titles + limit = { tier = tier_county } + add = { + value = 0.1 + } + } + max = 2 + } + desc = CB_BASE_COST + } + } + } +} common_claim_reduction_cost_multiplier_core = { value = 1 diff --git a/common/scripted_effects/10_dlc_tgp_japan_scripted_effects.txt b/common/scripted_effects/10_dlc_tgp_japan_scripted_effects.txt index a7f6f471e..d6e3c3154 100644 --- a/common/scripted_effects/10_dlc_tgp_japan_scripted_effects.txt +++ b/common/scripted_effects/10_dlc_tgp_japan_scripted_effects.txt @@ -2571,7 +2571,7 @@ # tgp_restore_japanese_monarchy_yamato_scion_effect = yes # add_prestige = major_prestige_value # if = { -# limit = { government_allows = administrative } +# limit = { government_has_mechanic = administrative } # change_influence = major_influence_value # } # else = { add_piety = medium_piety_value } @@ -2826,7 +2826,7 @@ # limit = { # is_ai = yes # NOR = { -# government_allows = administrative +# government_has_mechanic = administrative # is_allied_to = scope:prime_minister # } # opinion = { @@ -2848,7 +2848,7 @@ # ordered_vassal = { # limit = { # is_ai = yes -# NOT = { government_allows = administrative } +# NOT = { government_has_mechanic = administrative } # opinion = { # target = scope:prime_minister # value < 25 @@ -3351,7 +3351,7 @@ # # Crime to prime_minister # if = { # limit = { -# top_liege = { government_allows = administrative } +# top_liege = { government_has_mechanic = administrative } # } # # Message for attacker # send_interface_toast = { @@ -3600,7 +3600,7 @@ # if = { # limit = { # holder = { -# NOT = { government_allows = administrative } +# NOT = { government_has_mechanic = administrative } # highest_held_title_tier <= tier_county # } # } @@ -3615,7 +3615,7 @@ # limit = { # holder = { # OR = { -# government_allows = administrative +# government_has_mechanic = administrative # this = root.top_liege # } # } diff --git a/common/scripted_guis/pam_scripted_guis.txt b/common/scripted_guis/pam_scripted_guis.txt new file mode 100644 index 000000000..5f282702b --- /dev/null +++ b/common/scripted_guis/pam_scripted_guis.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/common/scripted_triggers/pam_scripted_triggers.txt b/common/scripted_triggers/pam_scripted_triggers.txt index af9aeda3a..cc1f0e9d8 100644 --- a/common/scripted_triggers/pam_scripted_triggers.txt +++ b/common/scripted_triggers/pam_scripted_triggers.txt @@ -2,7 +2,7 @@ has_personal_tenet_flag = consolamentum_grief_immunity } -# Character scope. Keep this cheap for relation/war-enemy iterators; full target validation is below. + Character scope. Keep this cheap for relation/war-enemy iterators; full target validation is below. pam_adorcism_curse_target_is_living_adult_trigger = { is_available_quick = { adult = yes @@ -37,10 +37,10 @@ pam_adorcism_has_available_curse_target_trigger = { } } -# The liturgical language triggers below only evaluate in a rite scope; call them through -# main_rite from a faith and through rite from a character. -# Pre-scripted rites skip the Head of Rite culture fallback. Slavic, Georgian, Antiochian, -# heresies, and custom divergences keep that fallback. + The liturgical language triggers below only evaluate in a rite scope; call them through + main_rite from a faith and through rite from a character. + Pre-scripted rites skip the Head of Rite culture fallback. Slavic, Georgian, Antiochian, + heresies, and custom divergences keep that fallback. rite_has_pre_scripted_liturgical_language_trigger = { OR = { religion = religion:catholic_religion @@ -53,7 +53,7 @@ rite_has_pre_scripted_liturgical_language_trigger = { } } -# These are founding-see rites in rite scope, not map-wide or ordinary swap traditions + These are founding-see rites in rite scope, not map-wide or ordinary swap traditions pam_rite_is_regional_trigger = { OR = { this = rite:celtic_rite @@ -142,13 +142,13 @@ can_hold_ecumenical_council_trigger = { } } -#has_current_phase_any_debate_trigger = { -# OR = { -# has_current_phase = ecumenical_council_phase_first_debate -# has_current_phase = ecumenical_council_phase_second_debate -# has_current_phase = ecumenical_council_phase_third_debate -# } -#} +has_current_phase_any_debate_trigger = { + OR = { + has_current_phase = ecumenical_council_phase_first_debate + has_current_phase = ecumenical_council_phase_second_debate + has_current_phase = ecumenical_council_phase_third_debate + } +} pam_is_clerical_region_holder_trigger = { any_held_title = { @@ -179,50 +179,50 @@ pam_ecumenical_council_has_quorum_trigger = { } } -#the_christian_church_radical_change_allowed_trigger = { -# situation:the_christian_church ?= { -# OR = { -# has_situation_top_phase_parameter = era_type_instability -# has_situation_top_phase_parameter = era_type_crisis -# } -# } -#} +the_christian_church_radical_change_allowed_trigger = { + situation:the_christian_church ?= { + OR = { + has_situation_top_phase_parameter = era_type_instability + has_situation_top_phase_parameter = era_type_crisis + } + } +} -#pam_mass_rite_conversion_conversion_phase_trigger = { -# situation:the_christian_church ?= { -# has_situation_top_phase_parameter = the_christian_church_mass_rite_conversion_decision -# } -#} +pam_mass_rite_conversion_conversion_phase_trigger = { + situation:the_christian_church ?= { + has_situation_top_phase_parameter = the_christian_church_mass_rite_conversion_decision + } +} -#pam_mass_rite_conversion_requirements_trigger = { -# has_pam_dlc_trigger = yes -# highest_held_title_tier >= tier_duchy -#} +pam_mass_rite_conversion_requirements_trigger = { + has_pam_dlc_trigger = yes + highest_held_title_tier >= tier_duchy +} -# Great Schism: progress can still change. Any scope -#pam_great_schism_progress_can_change_trigger = { -# NOT = { has_global_variable = pam_great_schism_decision_taken } -# exists = situation:the_christian_church -#} + Great Schism: progress can still change. Any scope +pam_great_schism_progress_can_change_trigger = { + NOT = { has_global_variable = pam_great_schism_decision_taken } + exists = situation:the_christian_church +} -#pam_can_pick_great_schism_stance_trigger = { -# situation:the_christian_church ?= { -# var:pam_great_schism_status ?= flag:ongoing -# pam_great_schism_progress_can_change_trigger = yes -# exists = var:schism_mainline_rite -# exists = var:schism_competitor_rite -# } -# is_ruler = yes -# faith = faith:christian_faith -#} +pam_can_pick_great_schism_stance_trigger = { + situation:the_christian_church ?= { + var:pam_great_schism_status ?= flag:ongoing + pam_great_schism_progress_can_change_trigger = yes + exists = var:schism_mainline_rite + exists = var:schism_competitor_rite + } + is_ruler = yes + faith = faith:christian_faith +} -# pam_save_schism_head_of_faith_effect saves the see first, then we run in character scope -# Uses situation main-power faith so this works before 0062 saves christianity -#pam_schism_can_seat_head_of_faith_trigger = { -# this = scope:schism_peacemaker -# exists = scope:new_head_of_faith -# situation:the_christian_church.var:tcc_main_power_faith ?= { NOT = { has_doctrine = doctrine_temporal_head } } -#} + pam_save_schism_head_of_faith_effect saves the see first, then we run in character scope + Uses situation main-power faith so this works before 0062 saves christianity +pam_schism_can_seat_head_of_faith_trigger = { + this = scope:schism_peacemaker + exists = scope:new_head_of_faith + situation:the_christian_church.var:tcc_main_power_faith ?= { NOT = { has_doctrine = doctrine_temporal_head } } +} pam_is_ecumenical_patriarch_trigger = { faith = faith:orthodox_faith @@ -234,124 +234,124 @@ pam_is_ecumenical_patriarch_trigger = { } } -# Great Schism: schism stance champions $RITE$ ($OTHER_RITE$ is the opposing side). Character scope -#pam_schism_stance_supports_rite_trigger = { -# OR = { -# AND = { -# var:pam_schism_stance ?= flag:mainline -# faith:christian_faith.main_rite ?= rite:$RITE$ -# } -# AND = { -# var:pam_schism_stance ?= flag:competitor -# faith:christian_faith.main_rite ?= rite:$OTHER_RITE$ -# } -# } -#} + Great Schism: schism stance champions $RITE$ ($OTHER_RITE$ is the opposing side). Character scope +pam_schism_stance_supports_rite_trigger = { + OR = { + AND = { + var:pam_schism_stance ?= flag:mainline + faith:christian_faith.main_rite ?= rite:$RITE$ + } + AND = { + var:pam_schism_stance ?= flag:competitor + faith:christian_faith.main_rite ?= rite:$OTHER_RITE$ + } + } +} -#pam_schism_is_chalcedonian_trigger = { -# OR = { -# faith = scope:schism_western_faith -# faith = scope:schism_eastern_faith -# faith = faith:christian_faith -# } -#} +pam_schism_is_chalcedonian_trigger = { + OR = { + faith = scope:schism_western_faith + faith = scope:schism_eastern_faith + faith = faith:christian_faith + } +} -# Great Schism: has a personal tenet dear to $RITE$. Character scope -#pam_has_personal_tenet_of_rite_trigger = { -# any_personal_tenet = { -# rite:$RITE$ ?= { rite_has_tenet = prev } -# } -#} + Great Schism: has a personal tenet dear to $RITE$. Character scope +pam_has_personal_tenet_of_rite_trigger = { + any_personal_tenet = { + rite:$RITE$ ?= { rite_has_tenet = prev } + } +} -# The delegate's rite is $RITE$, not the judging host's, on a character -#pam_ecumenical_council_rite_delegate_trigger = { -# this != root -# rite = rite:$RITE$ -#} + The delegate's rite is $RITE$, not the judging host's, on a character +pam_ecumenical_council_rite_delegate_trigger = { + this != root + rite = rite:$RITE$ +} -# Heading a rite does not make the holder follow it -#pam_is_head_of_schism_pair_rite_trigger = { -# OR = { -# AND = { -# rite = rite:roman_rite -# rite:roman_rite.head_of_rite ?= this -# } -# AND = { -# rite = rite:byzantine_rite -# rite:byzantine_rite.head_of_rite ?= this -# } -# } -#} + Heading a rite does not make the holder follow it +pam_is_head_of_schism_pair_rite_trigger = { + OR = { + AND = { + rite = rite:roman_rite + rite:roman_rite.head_of_rite ?= this + } + AND = { + rite = rite:byzantine_rite + rite:byzantine_rite.head_of_rite ?= this + } + } +} -# Great Schism: $FIRST$ and $SECOND$ follow opposite schism-pair rites. False if unset. Any scope -#pam_schism_characters_in_opposite_pair_rites_trigger = { -# situation:the_christian_church ?= { -# exists = var:schism_mainline_rite -# exists = var:schism_competitor_rite -# OR = { -# AND = { -# $FIRST$.rite ?= var:schism_mainline_rite -# $SECOND$.rite ?= var:schism_competitor_rite -# } -# AND = { -# $FIRST$.rite ?= var:schism_competitor_rite -# $SECOND$.rite ?= var:schism_mainline_rite -# } -# } -# } -#} + Great Schism: $FIRST$ and $SECOND$ follow opposite schism-pair rites. False if unset. Any scope +pam_schism_characters_in_opposite_pair_rites_trigger = { + situation:the_christian_church ?= { + exists = var:schism_mainline_rite + exists = var:schism_competitor_rite + OR = { + AND = { + $FIRST$.rite ?= var:schism_mainline_rite + $SECOND$.rite ?= var:schism_competitor_rite + } + AND = { + $FIRST$.rite ?= var:schism_competitor_rite + $SECOND$.rite ?= var:schism_mainline_rite + } + } + } +} -# Great Schism: $HEAD$ heads one schism-pair rite; $OTHER$ follows the opposing. False if unset. Any scope -#pam_schism_head_of_rite_and_opposing_character_trigger = { -# situation:the_christian_church ?= { -# exists = var:schism_mainline_rite -# exists = var:schism_competitor_rite -# OR = { -# AND = { -# var:schism_mainline_rite.head_of_rite ?= $HEAD$ -# $OTHER$.rite ?= var:schism_competitor_rite -# } -# AND = { -# var:schism_competitor_rite.head_of_rite ?= $HEAD$ -# $OTHER$.rite ?= var:schism_mainline_rite -# } -# } -# } -#} + Great Schism: $HEAD$ heads one schism-pair rite; $OTHER$ follows the opposing. False if unset. Any scope +pam_schism_head_of_rite_and_opposing_character_trigger = { + situation:the_christian_church ?= { + exists = var:schism_mainline_rite + exists = var:schism_competitor_rite + OR = { + AND = { + var:schism_mainline_rite.head_of_rite ?= $HEAD$ + $OTHER$.rite ?= var:schism_competitor_rite + } + AND = { + var:schism_competitor_rite.head_of_rite ?= $HEAD$ + $OTHER$.rite ?= var:schism_mainline_rite + } + } + } +} -# $RITE$ must be absolute (scope:/root./rite:), and this works in any scope -# A bare rite link silently resolves to nothing inside the situation -#pam_schism_rite_in_pair_trigger = { -# situation:the_christian_church ?= { -# exists = var:schism_mainline_rite -# exists = var:schism_competitor_rite -# OR = { -# $RITE$ ?= var:schism_mainline_rite -# $RITE$ ?= var:schism_competitor_rite -# } -# } -#} + $RITE$ must be absolute (scope:/root./rite:), and this works in any scope + A bare rite link silently resolves to nothing inside the situation +pam_schism_rite_in_pair_trigger = { + situation:the_christian_church ?= { + exists = var:schism_mainline_rite + exists = var:schism_competitor_rite + OR = { + $RITE$ ?= var:schism_mainline_rite + $RITE$ ?= var:schism_competitor_rite + } + } +} -# Great Schism: $COUNTY$'s rite is one of the schism-pair rites. False if unset. Any scope -#pam_schism_county_rite_in_pair_trigger = { -# situation:the_christian_church ?= { -# exists = var:schism_mainline_rite -# exists = var:schism_competitor_rite -# OR = { -# $COUNTY$.rite ?= var:schism_mainline_rite -# $COUNTY$.rite ?= var:schism_competitor_rite -# } -# } -#} + Great Schism: $COUNTY$'s rite is one of the schism-pair rites. False if unset. Any scope +pam_schism_county_rite_in_pair_trigger = { + situation:the_christian_church ?= { + exists = var:schism_mainline_rite + exists = var:schism_competitor_rite + OR = { + $COUNTY$.rite ?= var:schism_mainline_rite + $COUNTY$.rite ?= var:schism_competitor_rite + } + } +} -# Root is the converting ruler, this is the one who stayed on $RITE$ -#pam_schism_rite_dissenter_valid_trigger = { -# this != root -# is_alive = yes -# is_adult = yes -# is_imprisoned = no -# rite ?= $RITE$ -#} + Root is the converting ruler, this is the one who stayed on $RITE$ +pam_schism_rite_dissenter_valid_trigger = { + this != root + is_alive = yes + is_adult = yes + is_imprisoned = no + rite ?= $RITE$ +} is_clerical_appointment_valid_trigger = { $TITLE$ = { save_temporary_scope_as = title_temp } @@ -359,7 +359,7 @@ is_clerical_appointment_valid_trigger = { $TOP_LIEGE$ = { save_temporary_scope_as = top_liege_temp } trigger_if = { limit = { exists = scope:title_temp } - custom_tooltip = { # Has relevant law + custom_tooltip = { Has relevant law text = has_appointment_succession_tt $TITLE$ = { OR = { @@ -368,7 +368,7 @@ is_clerical_appointment_valid_trigger = { } } } - custom_tooltip = { # Titles below the holder's primary tier are inherited alongside it, so they cannot be contested on their own + custom_tooltip = { Titles below the holder's primary tier are inherited alongside it, so they cannot be contested on their own text = follows_other_title_appointment_tt scope:title_temp.holder ?= { primary_title.tier = scope:title_temp.tier } } @@ -379,7 +379,7 @@ is_clerical_appointment_valid_trigger = { } } -# Secular crowns only reach sees in their realm, while ecclesiastical and Head of Rite are unrestricted + Secular crowns only reach sees in their realm, while ecclesiastical and Head of Rite are unrestricted pam_clerical_candidacy_reach_limited_trigger = { scope:actor = { NOR = { @@ -438,7 +438,7 @@ influence_head_of_faith_candidacy_target_trigger = { text = influence_head_of_faith_candidacy_not_created_tt exists = scope:target.holder } - # has_order_of_succession resolves the holder's realm laws, so both checks stay behind the holder check + has_order_of_succession resolves the holder's realm laws, so both checks stay behind the holder check trigger_if = { limit = { exists = scope:target.holder } custom_tooltip = { @@ -457,11 +457,11 @@ is_clerical_appointment_valid_base_trigger = { $TOP_LIEGE$ = { save_temporary_scope_as = top_liege_temp } scope:candidate_temp = { is_adult = yes - faith = scope:top_liege_temp.faith # Must be of the same faith + faith = scope:top_liege_temp.faith Must be of the same faith custom_tooltip = { text = can_be_appointed_interaction_tt OR = { - can_be_granted_theocratic_titles_by = { RULER = scope:top_liege_temp } # Gender checks + can_be_granted_theocratic_titles_by = { RULER = scope:top_liege_temp } Gender checks AND = { is_diarch_of_target = scope:top_liege_temp scope:top_liege_temp = { has_diarchy_active_parameter = diarchy_is_co_rulership } @@ -470,24 +470,24 @@ is_clerical_appointment_valid_base_trigger = { } custom_tooltip = { text = can_be_appointed_interaction_clergy_tt - OR = { # Clergy or Lay Clergy + OR = { Clergy or Lay Clergy is_clergy = yes - rite = { rite_has_parameter = lay_clergy } # HoF cannot be temporal if you have Theocratic clergy, so no need to check for that - this = scope:top_liege_temp.player_heir # Designated Theocratic Heir + rite = { rite_has_parameter = lay_clergy } HoF cannot be temporal if you have Theocratic clergy, so no need to check for that + this = scope:top_liege_temp.player_heir Designated Theocratic Heir AND = { is_landless_adventurer = yes this = scope:top_liege_temp } } } - custom_tooltip = { # Only theocracies + custom_tooltip = { Only theocracies text = only_theocratic_tt OR = { government_has_flag = government_is_theocracy is_landed = no } } - custom_tooltip = { # Barred from holding titles + custom_tooltip = { Barred from holding titles text = can_be_appointed_interaction_can_inherit_tt NOR = { has_trait = order_member @@ -498,7 +498,7 @@ is_clerical_appointment_valid_base_trigger = { } } -# Expects interaction scopes actor/target/secondary_recipient + Expects interaction scopes actor/target/secondary_recipient pam_clerical_self_candidacy_restriction_trigger = { trigger_if = { limit = { @@ -535,7 +535,7 @@ pam_clerical_self_candidacy_restriction_trigger = { pam_investiture_supports_spiritual_revocable_trigger = { - # Both flag values are read so neither is flagged "set but never used". + Both flag values are read so neither is flagged "set but never used". trigger_if = { limit = { has_variable = investiture_stance @@ -551,7 +551,7 @@ pam_investiture_supports_spiritual_revocable_trigger = { always = no } trigger_else = { - # is_clergy too: landless chaplains have no government, so the flag would count them as secular + is_clergy too: landless chaplains have no government, so the flag would count them as secular OR = { government_is_religious_trigger = yes is_clergy = yes @@ -585,20 +585,20 @@ pam_investiture_council_voter_has_locked_stance_trigger = { } } -#pam_can_use_investiture_conflict_cb_trigger = { -# has_pam_dlc_trigger = yes -# faith = { religion = religion:christianity_religion } -# situation:the_christian_church ?= { -# has_situation_top_phase_parameter = the_christian_church_investiture_controversy -# } -# # We block new conflicts while the council is pending, as a war would pull the host away and cancel it -# custom_tooltip = { -# text = pam_investiture_cb_council_pending_tt -# NOT = { faith = { has_variable = investiture_council_pending } } -# } -#} +pam_can_use_investiture_conflict_cb_trigger = { + has_pam_dlc_trigger = yes + faith = { religion = religion:christianity_religion } + situation:the_christian_church ?= { + has_situation_top_phase_parameter = the_christian_church_investiture_controversy + } + We block new conflicts while the council is pending, as a war would pull the host away and cancel it + custom_tooltip = { + text = pam_investiture_cb_council_pending_tt + NOT = { faith = { has_variable = investiture_council_pending } } + } +} -# scope:attacker is the aggressor, and the defender is root + scope:attacker is the aggressor, and the defender is root pam_valid_investiture_conflict_target_trigger = { this != scope:attacker faith = scope:attacker.faith @@ -611,18 +611,18 @@ pam_valid_investiture_conflict_target_trigger = { } } -#pam_main_power_faith_conditional_appointment_trigger = { -# situation:the_christian_church.var:tcc_main_power_faith ?= { -# has_doctrine = doctrine_clerical_succession_conditional -# } -#} +pam_main_power_faith_conditional_appointment_trigger = { + situation:the_christian_church.var:tcc_main_power_faith ?= { + has_doctrine = doctrine_clerical_succession_conditional + } +} -#pam_investiture_crisis_has_contested_faith_trigger = { -# situation:the_christian_church.var:tcc_main_power_faith ?= { -# has_doctrine = doctrine_clerical_succession_conditional -# exists = religious_head -# } -#} +pam_investiture_crisis_has_contested_faith_trigger = { + situation:the_christian_church.var:tcc_main_power_faith ?= { + has_doctrine = doctrine_clerical_succession_conditional + exists = religious_head + } +} pam_available_investiture_hof_ai_trigger = { is_ai = yes @@ -638,19 +638,19 @@ pam_valid_investiture_council_host_trigger = { is_ai = yes is_available_adult = yes is_landed = yes - # PAM archbishops often fail the is_clergy org match + PAM archbishops often fail the is_clergy org match government_has_flag = government_is_ecclesiastical can_hold_ecumenical_council_trigger = yes NOT = { faith.religious_head = this } - # any_held_title avoids the landless context-switch primary_title would cause + any_held_title avoids the landless context-switch primary_title would cause any_held_title = { tier >= tier_duchy has_clerical_region = yes } } -###Sell Claim### -# True if TARGET, a county title, lies within a clerical region the scoped character holds. +Sell Claim + True if TARGET, a county title, lies within a clerical region the scoped character holds. pam_sell_claim_target_in_own_clerical_region_trigger = { exists = $TARGET$.clerical_region_title any_held_title = { @@ -659,7 +659,7 @@ pam_sell_claim_target_in_own_clerical_region_trigger = { } } -# Shared with has_valid_target_showing_failures_only: can_be_picked_title is not rechecked on send + Shared with has_valid_target_showing_failures_only: can_be_picked_title is not rechecked on send pam_can_sell_claim_on_target_trigger = { scope:target = { is_landless_type_title = no @@ -690,7 +690,7 @@ pam_can_sell_claim_on_target_trigger = { } } } - # Realm scan, so it sits behind the cheap ownership and claim gates + Realm scan, so it sits behind the cheap ownership and claim gates custom_tooltip = { text = sell_claim_recipient_must_border_target_tt scope:target ?= { @@ -699,7 +699,7 @@ pam_can_sell_claim_on_target_trigger = { } } -###Gift Claim### +Gift Claim pam_gift_claim_recipient_in_own_clerical_region_trigger = { exists = $TARGET$.capital_county.clerical_region_title any_held_title = { @@ -793,7 +793,7 @@ can_influence_clerical_appointment_trigger = { } } } - # Capital see filled by appointment still matters even if the realm priest is landless + Capital see filled by appointment still matters even if the realm priest is landless capital_county.clerical_region_title ?= { OR = { has_title_law = clerical_appointment_law @@ -809,7 +809,7 @@ pam_cathedral_project_requirements_trigger = { has_spiritual_fulfillment_type = christian_fulfillment } -# Landless clerical titles: title_capital_county is the holder's current location, not the fixed see + Landless clerical titles: title_capital_county is the holder's current location, not the fixed see is_valid_cathedral_clerical_region_capital_trigger = { trigger_if = { limit = { exists = county.clerical_region_title } @@ -1055,11 +1055,11 @@ pam_rite_values_martial_clergy_trigger = { } } -# We skip is_landed because ecclesiastical government is landless_playable + We skip is_landed because ecclesiastical government is landless_playable pam_court_wants_monk_courtiers_trigger = { has_pam_dlc_trigger = yes is_ruler = yes - highest_held_title_tier >= tier_county # A village priest is not a bishop with a familia + highest_held_title_tier >= tier_county A village priest is not a bishop with a familia OR = { religion = religion:catholic_religion religion = religion:protestant_religion @@ -1074,7 +1074,7 @@ pam_court_wants_monk_courtiers_trigger = { } } -# Province holds a temple leased to a monastic order + Province holds a temple leased to a monastic order pam_province_has_monastic_lease_trigger = { has_holding_type = church_holding barony = { @@ -1083,7 +1083,7 @@ pam_province_has_monastic_lease_trigger = { } } -# The courtier is the scope so kin stay eligible for appointment standing + The courtier is the scope so kin stay eligible for appointment standing pam_clerical_court_ordain_candidate_trigger = { is_adult = yes is_available = yes @@ -1099,7 +1099,7 @@ pam_clerical_court_ordain_candidate_trigger = { } } -# Court cleric with room left to grow under the develop-clerical-court caps. Evaluated on the courtier. + Court cleric with room left to grow under the develop-clerical-court caps. Evaluated on the courtier. pam_clerical_court_pupil_trigger = { is_adult = yes is_available = yes @@ -1141,8 +1141,8 @@ faith_has_sacraments_trigger = { } } -#SCRIPTED TRIGGER FOR GENERAL HOLY ORDER INTERACTIONS, TO FIND ORDERS WITH LEASED HOLDINGS NEARBY -#Find leased title within a believe range that you would reasonable have access to or care about +SCRIPTED TRIGGER FOR GENERAL HOLY ORDER INTERACTIONS, TO FIND ORDERS WITH LEASED HOLDINGS NEARBY +Find leased title within a believe range that you would reasonable have access to or care about holy_order_range_trigger = { custom_tooltip = { text = monastic_holdings_too_distant_tt @@ -1186,46 +1186,46 @@ government_is_religious_trigger = { } } -#pam_better_siphon_treasury_trigger = { -# top_participant_group:the_christian_church ?= { -# has_participant_group_parameter = the_christian_church_better_siphon_treasury -# } -#} +pam_better_siphon_treasury_trigger = { + top_participant_group:the_christian_church ?= { + has_participant_group_parameter = the_christian_church_better_siphon_treasury + } +} -# No Annoinments during the Investiture Crisis -#pam_the_christian_church_no_coronation_trigger = { -# top_participant_group:the_christian_church ?= { -# has_participant_group_parameter = the_christian_church_no_coronation -# } -#} + No Annoinments during the Investiture Crisis +pam_the_christian_church_no_coronation_trigger = { + top_participant_group:the_christian_church ?= { + has_participant_group_parameter = the_christian_church_no_coronation + } +} -# Secular rulers who follow an Antipope can be anointed by them while the mainline hierarchy refuses -#pam_the_christian_church_antipope_coronations_trigger = { -# top_participant_group:the_christian_church ?= { -# has_participant_group_parameter = the_christian_church_antipope_coronations -# } -#} + Secular rulers who follow an Antipope can be anointed by them while the mainline hierarchy refuses +pam_the_christian_church_antipope_coronations_trigger = { + top_participant_group:the_christian_church ?= { + has_participant_group_parameter = the_christian_church_antipope_coronations + } +} -# Anointment is sought from this authority, and $RULER$ is the ruler seeking it -# We still let an antipope anoint their followers, otherwise Investiture Crisis blocks the mainline -#pam_the_christian_church_no_anointment_trigger = { -# save_temporary_scope_as = pam_anointment_authority_check -# trigger_if = { -# limit = { -# pam_is_antipope_trigger = yes -# $RULER$ = { -# pam_the_christian_church_antipope_coronations_trigger = yes -# religious_head_or_challenger ?= scope:pam_anointment_authority_check -# } -# } -# always = no -# } -# trigger_else = { -# pam_the_christian_church_no_coronation_trigger = yes -# } -#} + Anointment is sought from this authority, and $RULER$ is the ruler seeking it + We still let an antipope anoint their followers, otherwise Investiture Crisis blocks the mainline +pam_the_christian_church_no_anointment_trigger = { + save_temporary_scope_as = pam_anointment_authority_check + trigger_if = { + limit = { + pam_is_antipope_trigger = yes + $RULER$ = { + pam_the_christian_church_antipope_coronations_trigger = yes + religious_head_or_challenger ?= scope:pam_anointment_authority_check + } + } + always = no + } + trigger_else = { + pam_the_christian_church_no_coronation_trigger = yes + } +} -# Any living ruler of kingdom tier or above whose capital lies in Europe and follows a non-Christian religion + Any living ruler of kingdom tier or above whose capital lies in Europe and follows a non-Christian religion pam_non_christian_kingdom_holder_in_europe_trigger = { any_ruler = { is_alive = yes @@ -1239,7 +1239,7 @@ pam_non_christian_kingdom_holder_in_europe_trigger = { capital_province = { geographical_region = world_europe } - NOT = { has_variable = pam_non_christian_kingdom_holder_in_europe_trigger_var } # To avoid the same ruler counting every year + NOT = { has_variable = pam_non_christian_kingdom_holder_in_europe_trigger_var } To avoid the same ruler counting every year } } @@ -1281,13 +1281,13 @@ can_have_realm_priest_puppet_trigger = { NOT = { government_has_flag = government_is_nomadic } } -# Ecclesiastical government is landless_playable, so do not filter these on is_landed + Ecclesiastical government is landless_playable, so do not filter these on is_landed pam_landless_playable_cleric_trigger = { has_pam_dlc_trigger = yes government_has_flag = government_is_ecclesiastical } -# Archbishop (clerical region title holder) or above them in the hierarchy: Head of Rite or Head of Faith + Archbishop (clerical region title holder) or above them in the hierarchy: Head of Rite or Head of Faith pam_is_archbishop_or_higher_trigger = { OR = { any_held_title = { has_clerical_region = yes } @@ -1295,7 +1295,7 @@ pam_is_archbishop_or_higher_trigger = { } } -# A cardinal, Head of Rite, or archbishop of $CHARACTER$'s faith + A cardinal, Head of Rite, or archbishop of $CHARACTER$'s faith pam_is_senior_cleric_of_character_trigger = { has_pam_dlc_trigger = yes OR = { @@ -1312,7 +1312,7 @@ pam_is_senior_cleric_of_character_trigger = { } } -# A character is a theological puppet if they have a puppeteer who keeps them as a (external) theological puppet. + A character is a theological puppet if they have a puppeteer who keeps them as a (external) theological puppet. is_theological_agent_puppet_trigger = { trigger_if = { limit = { @@ -1330,7 +1330,7 @@ is_theological_agent_puppet_trigger = { } } -# A character has a theological puppet if they keep either an internal or external theological puppet. + A character has a theological puppet if they keep either an internal or external theological puppet. has_theological_agent_puppet_trigger = { custom_tooltip = { text = no_clerical_puppet_tt @@ -1346,8 +1346,8 @@ puppet_action_puppet_is_secular_ruler_trigger = { puppet:external_ruler_puppet ?= scope:puppet } -# The acting character is the scope, and on the puppet action path that is the puppet -# A puppet standing in for a missing Head of Faith defers to its puppeteer + The acting character is the scope, and on the puppet action path that is the puppet + A puppet standing in for a missing Head of Faith defers to its puppeteer can_manage_faith_holy_sites_trigger = { trigger_if = { limit = { exists = faith.religious_head } @@ -1371,12 +1371,12 @@ can_manage_faith_holy_sites_trigger = { } } -# Substitute authority for a faith with no head of faith: a realm priest puppet plus piety standing. + Substitute authority for a faith with no head of faith: a realm priest puppet plus piety standing. can_manage_faith_holy_sites_without_hof_trigger = { OR = { custom_tooltip = { text = manage_holy_sites_realm_priest_puppet_tt - # puppet: errors on non-playable characters, so we only check playable ones and tooltips never run it + puppet: errors on non-playable characters, so we only check playable ones and tooltips never run it trigger_if = { limit = { is_playable_character = yes } exists = puppet:theological_agent_puppet @@ -1427,7 +1427,7 @@ holy_site_free_action_show_usage_trigger = { } } -# The attendee is the teacher, and root is the student receiving the activity event + The attendee is the teacher, and root is the student receiving the activity event ecumenical_shareable_unknown_tenet_for_root_trigger = { save_temporary_scope_as = ecumenical_tenet_teacher any_character_tenet = { @@ -1511,7 +1511,7 @@ pam_not_antipope_when_recipient_is_hof_tt = { } } -#Does the province have a domicile that whose owner is the same rite as the character in question and also has a cathedral school level 3 (has_domicile_parameter = domicile_building_is_university) +Does the province have a domicile that whose owner is the same rite as the character in question and also has a cathedral school level 3 (has_domicile_parameter = domicile_building_is_university) has_domicile_building_cathedral_school = { $LOCATION$ = { any_province_domicile = { @@ -1524,7 +1524,7 @@ has_domicile_building_cathedral_school = { } } -# Kingdom of Heaven — no other character of your faith has a higher Piety Level (ties at same level allowed) + Kingdom of Heaven — no other character of your faith has a higher Piety Level (ties at same level allowed) pam_kingdom_of_heaven_has_highest_piety_level_in_faith_trigger = { NOT = { root.faith = { @@ -1536,7 +1536,7 @@ pam_kingdom_of_heaven_has_highest_piety_level_in_faith_trigger = { } } -# Either there is no independent emperor-tier ruler of your faith, or you have a hook on each of them + Either there is no independent emperor-tier ruler of your faith, or you have a hook on each of them pam_kingdom_of_heaven_hooks_on_all_faith_emperors_or_none_trigger = { NOT = { any_independent_ruler = { @@ -1552,12 +1552,12 @@ pam_kingdom_of_heaven_hooks_on_all_faith_emperors_or_none_trigger = { } } -# At least half of the worldwide same faith counties are in your realm + At least half of the worldwide same faith counties are in your realm pam_kingdom_of_heaven_half_faith_in_realm_trigger = { pam_koh_same_faith_realm_counties_value >= pam_koh_half_faith_counties_required_value } -# For identifying religious player trigger (Theocratic ruler events) + For identifying religious player trigger (Theocratic ruler events) pam_government_is_religious_playable_trigger = { OR = { government_has_flag = government_is_theocracy @@ -1595,7 +1595,7 @@ pam_recipient_is_clerical_title_authority_trigger = { } } -# secondary_recipient if present (replace), else recipient (grant) + secondary_recipient if present (replace), else recipient (grant) pam_grant_ecclesiastical_title_appointee_changes_rite_trigger = { trigger_if = { limit = { exists = scope:secondary_recipient } @@ -1606,7 +1606,7 @@ pam_grant_ecclesiastical_title_appointee_changes_rite_trigger = { } } -# Non-military clergy ruler: generic theocracy, Christian ecclesiastical, or monastic holy order. + Non-military clergy ruler: generic theocracy, Christian ecclesiastical, or monastic holy order. pam_is_clergy_ruler_trigger = { OR = { government_has_flag = government_is_theocracy @@ -1615,8 +1615,8 @@ pam_is_clergy_ruler_trigger = { } } -# Dynastic approval is a separate authority and still applies -# We require the DLC because government_is_theocracy already exists in the base game + Dynastic approval is a separate authority and still applies + We require the DLC because government_is_theocracy already exists in the base game pam_grants_own_divorce_trigger = { has_pam_dlc_trigger = yes pam_is_clergy_ruler_trigger = yes @@ -1631,7 +1631,7 @@ pam_clergy_continence_expected_trigger = { } } -# Antipopes are filed as subordinates of the top superior + Antipopes are filed as subordinates of the top superior pam_court_scene_resident_subordinate_trigger = { exists = location location = scope:ruler.capital_province @@ -1644,7 +1644,7 @@ pam_court_scene_resident_subordinate_trigger = { pam_clergy_interactions_faith_trigger = { faith = { NOT = { has_doctrine_parameter = unreformed } } OR = { - #Has a theocratic head of faith + Has a theocratic head of faith faith = { has_doctrine_parameter = spiritual_head_of_faith } rite = { rite_has_parameter = theocracy_temple_lease } } @@ -1655,7 +1655,7 @@ claim_valid_faith_subordinate_trigger = { is_at_war_with = scope:puppet_or_actor has_trait = excommunicated } - # Also used to populate the recipient list, where no recipient exists yet + Also used to populate the recipient list, where no recipient exists yet trigger_if = { limit = { exists = scope:recipient } NOR = { @@ -1672,16 +1672,16 @@ claim_valid_faith_subordinate_trigger = { } highest_held_title_tier >= tier_duchy OR = { - #Is head of faith + Is head of faith scope:puppet_or_actor.religious_head_or_challenger ?= scope:recipient clergy_claim_title_responsibility_trigger = yes - #you gotta be able to use your puppet + you gotta be able to use your puppet scope:puppeteer ?= scope:puppet_or_actor } } clergy_claim_title_responsibility_trigger = { OR = { - #Clerical region overlaps + Clerical region overlaps AND = { any_held_title = { has_clerical_region = yes @@ -1692,16 +1692,16 @@ clergy_claim_title_responsibility_trigger = { } } } - #Landed title overlaps + Landed title overlaps AND = { is_landed = yes any_held_title = { OR = { - #they have a title beneath recipient's titles + they have a title beneath recipient's titles any_this_title_or_de_jure_above = { holder ?= scope:recipient } - #they have a title that presides over recipient's titles + they have a title that presides over recipient's titles any_in_de_jure_hierarchy = { holder ?= scope:recipient } @@ -1726,7 +1726,7 @@ clergy_claims_hof_trigger = { } } -#When AI should be bothering player clergy with requests +When AI should be bothering player clergy with requests pam_should_bother_clergy_interaction_trigger = { $PRIEST$ = { trigger_if = { @@ -1754,7 +1754,7 @@ pam_should_bother_clergy_interaction_trigger = { } } -# Show the Offer Pilgrimage send option at all - hidden for rites that cannot pilgrimage + Show the Offer Pilgrimage send option at all - hidden for rites that cannot pilgrimage pam_offer_pilgrimage_option_shown_trigger = { NOT = { $ACTOR$.rite = { @@ -1783,7 +1783,7 @@ pam_offer_pilgrimage_option_valid_trigger = { } } -# Clerical interactions are blocked while a promised pilgrimage is unfulfilled + Clerical interactions are blocked while a promised pilgrimage is unfulfilled pam_not_promised_pilgrimage_trigger = { $ACTOR$ = { custom_tooltip = { @@ -1817,21 +1817,21 @@ pam_ai_deposable_cleric_trigger = { } } -# We set this just under the default heresy threshold so rites convert before heresy fires -# Phase first: outside Reform the global lookup ends this before the per-see checks -#pam_ai_reform_rite_replacement_trigger = { -# situation:the_christian_church ?= { situation_current_phase = reform_phase } -# scope:actor.faith = { fervor < 50 } -# scope:target.holder ?= { -# rite != scope:actor.rite -# is_ai = yes -# rite = { -# "divergence(faith.main_rite)" >= 45 -# } -# } -# scope:recipient = { rite = scope:actor.rite } -# years_from_game_start >= 25 -#} + We set this just under the default heresy threshold so rites convert before heresy fires + Phase first: outside Reform the global lookup ends this before the per-see checks +pam_ai_reform_rite_replacement_trigger = { + situation:the_christian_church ?= { situation_current_phase = reform_phase } + scope:actor.faith = { fervor < 50 } + scope:target.holder ?= { + rite != scope:actor.rite + is_ai = yes + rite = { + "divergence(faith.main_rite)" >= 45 + } + } + scope:recipient = { rite = scope:actor.rite } + years_from_game_start >= 25 +} pam_beseech_claims_access_trigger = { has_pam_dlc_trigger = yes @@ -1857,7 +1857,7 @@ pam_actor_has_simony_trigger = { } } -# Head of Rite dies while still subject to short_reign on their primary title. + Head of Rite dies while still subject to short_reign on their primary title. pam_head_of_rite_had_short_reign_trigger = { has_pam_dlc_trigger = yes OR = { @@ -1872,7 +1872,7 @@ pam_head_of_rite_had_short_reign_trigger = { } } -# Recipient is the scope, and we check the pointers before scanning counties + Recipient is the scope, and we check the pointers before scanning counties pam_rite_sway_connected_recipient_trigger = { OR = { is_courtier_of = $ACTOR$ @@ -1885,7 +1885,7 @@ pam_rite_sway_connected_recipient_trigger = { } } -# We keep this in sync with sway_ruler_to_my_rite_interaction is_shown and is_valid + We keep this in sync with sway_ruler_to_my_rite_interaction is_shown and is_valid pam_sway_to_rite_diocese_candidate_trigger = { this != $ARCHBISHOP$ is_ruler = yes @@ -1900,7 +1900,7 @@ pam_sway_to_rite_diocese_candidate_trigger = { capital_county.clerical_region_title.holder ?= $ARCHBISHOP$ } -# These are prelates of other dioceses still on another rite, for the peer petition important actions + These are prelates of other dioceses still on another rite, for the peer petition important actions pam_sway_to_rite_adjacent_prelate_candidate_trigger = { this != $ARCHBISHOP$ is_ruler = yes @@ -1915,7 +1915,7 @@ pam_sway_to_rite_adjacent_prelate_candidate_trigger = { any_held_title = { has_clerical_region = yes } } -# A Head of Faith on the mainline rite may call other Heads of Rite back to it, which Sway to Rite otherwise forbids + A Head of Faith on the mainline rite may call other Heads of Rite back to it, which Sway to Rite otherwise forbids pam_sway_to_rite_head_of_faith_reclaims_trigger = { $ACTOR$ = { faith.religious_head ?= this @@ -1923,7 +1923,7 @@ pam_sway_to_rite_head_of_faith_reclaims_trigger = { } } -# Sway to Rite reach lane: petitioning a fellow prelate. + Sway to Rite reach lane: petitioning a fellow prelate. pam_rite_sway_peer_prelate_lane_trigger = { $RECIPIENT$ = { any_held_title = { has_clerical_region = yes } @@ -1934,13 +1934,13 @@ pam_rite_sway_peer_prelate_lane_trigger = { } } -# Sway to Rite reach lane: petitioning the liege chain. + Sway to Rite reach lane: petitioning the liege chain. pam_rite_sway_liege_lane_trigger = { $RECIPIENT$ = { is_liege_or_above_of = $ACTOR$ } $ACTOR$ = { piety_level >= very_high_piety_level } } -# $ACTOR$ and $RECIPIENT$ dioceses border or are nearby, and the scan is bounded by the actor's diocese + $ACTOR$ and $RECIPIENT$ dioceses border or are nearby, and the scan is bounded by the actor's diocese pam_rite_sway_adjacent_diocese_trigger = { OR = { $ACTOR$.capital_county.clerical_region_title ?= { @@ -1951,7 +1951,7 @@ pam_rite_sway_adjacent_diocese_trigger = { } } AND = { - # No diocese seat on the far end means there is no adjacent diocese to measure + No diocese seat on the far end means there is no adjacent diocese to measure exists = $RECIPIENT$.capital_county.clerical_region_title.title_capital_county $ACTOR$.capital_county.clerical_region_title.title_capital_county ?= { squared_distance = { @@ -1963,7 +1963,7 @@ pam_rite_sway_adjacent_diocese_trigger = { } } -# We put quick checks first and leave the bordering realm scan last, behind a capital distance check + We put quick checks first and leave the bordering realm scan last, behind a capital distance check pam_rite_sway_clergy_reach_trigger = { OR = { custom_tooltip = { @@ -1997,7 +1997,7 @@ pam_rite_sway_clergy_reach_trigger = { } custom_tooltip = { text = sway_ruler_to_my_rite_interaction_border_reach_tt - # A landless recipient has no capital county for the distance pre-gate to measure + A landless recipient has no capital county for the distance pre-gate to measure exists = $RECIPIENT$.capital_county $ACTOR$.capital_county ?= { squared_distance = { @@ -2012,20 +2012,20 @@ pam_rite_sway_clergy_reach_trigger = { } } -# Sway to Rite: landed house or bloc kin, as with Demand Conversion. Lives on the vassal variant. + Sway to Rite: landed house or bloc kin, as with Demand Conversion. Lives on the vassal variant. pam_rite_sway_house_lane_trigger = { $RECIPIENT$ = { is_ruler = yes } $ACTOR$ = { is_house_head = yes } OR = { $RECIPIENT$.house ?= $ACTOR$.house - $RECIPIENT$.house.house_confederation ?= { # House Bloc + $RECIPIENT$.house.house_confederation ?= { House Bloc $ACTOR$.house.house_confederation ?= this has_cohesion_level_parameter = bloc_members_join_leaders_faith } } } -# Iterates the faith's few holy sites instead of scanning the recipient's whole sub-realm + Iterates the faith's few holy sites instead of scanning the recipient's whole sub-realm pam_sway_recipient_holds_holy_site_trigger = { scope:puppet_or_actor.faith ?= { any_holy_site = { @@ -2040,7 +2040,7 @@ pam_sway_recipient_holds_holy_site_trigger = { } } -# We keep this in sync with how the three Sway to Rite variants split is_shown + We keep this in sync with how the three Sway to Rite variants split is_shown pam_sway_to_rite_variant_can_send_trigger = { trigger_if = { limit = { $TARGET$ = { is_courtier_of = $ARCHBISHOP$ } } @@ -2081,7 +2081,7 @@ pam_sway_to_rite_variant_can_send_trigger = { } } -# As above, but also demands the given ai_accept threshold from the matching variant. + As above, but also demands the given ai_accept threshold from the matching variant. pam_sway_to_rite_variant_acceptance_trigger = { trigger_if = { limit = { $TARGET$ = { is_courtier_of = $ARCHBISHOP$ } } @@ -2125,7 +2125,7 @@ pam_sway_to_rite_variant_acceptance_trigger = { } } -# Runs in the ruler's scope + Runs in the ruler's scope pam_rite_locally_present_trigger = { any_sub_realm_county = { OR = { @@ -2277,7 +2277,7 @@ pam_the_christian_church_civil_war_in_christian_kingdom_trigger = { pam_the_christian_church_ruler_died_in_battle_against_non_christian_catalyst_trigger = { has_pam_dlc_trigger = yes is_ruler = yes - # death_reason errors on living characters; in on_death the dier is still is_alive = yes, so use has_variable = battle_death_enemy there. + death_reason errors on living characters; in on_death the dier is still is_alive = yes, so use has_variable = battle_death_enemy there. trigger_if = { limit = { is_alive = no } death_reason = death_battle @@ -2324,39 +2324,39 @@ pam_ecclesiastic_transfer_land_access_trigger = { government_has_flag = government_is_ecclesiastical } } -#The recipient of the "Give me land" interaction will back down without any convincing required -#The crit, the instant success +The recipient of the "Give me land" interaction will back down without any convincing required +The crit, the instant success pam_instant_negotiate_land_success_trigger = { scope:recipient = { is_ai = yes } OR = { - #They don't have the legitimacy or piety + They don't have the legitimacy or piety scope:recipient = { piety_level <= 0 legitimacy_level <= 0 } - #You have the pope in your pocket + You have the pope in your pocket trigger_if = { limit = { exists = scope:secondary_recipient } pam_negotiate_land_instant_pope_hook_trigger = yes } - #You intimidate them militarily or through dread + You intimidate them militarily or through dread OR = { - #Mostly milstrength + Mostly milstrength AND = { - #Milstrength 4x as high + Milstrength 4x as high half_current_military_strength >= scope:recipient.twice_current_military_strength has_dread_level_towards = { target = scope:recipient level >= 1 } } - #Milstrength and intimidation + Milstrength and intimidation AND = { - #Milstrength twice as high + Milstrength twice as high current_military_strength >= scope:recipient.twice_current_military_strength has_dread_level_towards = { target = scope:recipient @@ -2370,7 +2370,7 @@ pam_instant_negotiate_land_success_trigger = { pam_negotiate_land_instant_pope_hook_trigger = { has_strong_hook = scope:secondary_recipient highest_held_title_tier >= scope:recipient.highest_held_title_tier - #Won't give away primary title or its aboves + Won't give away primary title or its aboves scope:target = { NOR = { this = scope:recipient.primary_title @@ -2390,7 +2390,7 @@ pam_negotiate_land_instant_pope_hook_trigger = { } } -#You DEFINITELY can force the recipient to give in, if you sacrifice +You DEFINITELY can force the recipient to give in, if you sacrifice pam_forced_negotiate_land_success_trigger = { OR = { pam_negotiate_land_forced_hook_trigger = yes @@ -2401,7 +2401,7 @@ pam_forced_negotiate_land_success_trigger = { } } -#There is a CHANCE you can convince the recipient to give +There is a CHANCE you can convince the recipient to give pam_possible_negotiate_land_success_trigger = { OR = { pam_negotiate_land_possible_hook_trigger = yes @@ -2415,7 +2415,7 @@ pam_possible_negotiate_land_success_trigger = { pam_intimidate_clerical_transfer_recipient_trigger = { scope:recipient = { is_ai = yes - #Needs non-combative personality + Needs non-combative personality NOR = { has_trait = greatest_of_khans has_trait = conqueror @@ -2425,7 +2425,7 @@ pam_intimidate_clerical_transfer_recipient_trigger = { pam_negotiate_land_forced_hook_trigger = { has_usable_hook = scope:recipient has_strong_hook = scope:recipient - #Isn't root's capital county/doesn't contain recipient's capital county + Isn't root's capital county/doesn't contain recipient's capital county trigger_if = { limit = { exists = scope:target @@ -2493,7 +2493,7 @@ pam_negotiate_land_forced_gold_trigger = { OR = { debt_level >= 4 treasury_debt_level >= 4 - #Losing a war and needs the money + Losing a war and needs the money AND = { is_at_war = yes any_character_war = { @@ -2519,7 +2519,7 @@ pam_negotiate_land_forced_gold_trigger = { } } pam_negotiate_land_possible_hook_trigger = { - #Hook + Hook has_usable_hook = scope:recipient scope:recipient = { is_ai = yes @@ -2527,24 +2527,24 @@ pam_negotiate_land_possible_hook_trigger = { } pam_negotiate_land_possible_relation_trigger = { OR = { - #Strong relations you can destroy + Strong relations you can destroy has_relation_friend = scope:recipient has_relation_soulmate = scope:recipient has_relation_disciple = scope:recipient } } pam_negotiate_land_possible_piety_level_trigger = { - #Superior devotion + Superior devotion piety_level > scope:recipient.piety_level } pam_negotiate_land_possible_legitimacy_level_trigger = { has_legitimacy = yes scope:recipient = { has_legitimacy = yes } - #Superior legitimacy + Superior legitimacy legitimacy_level > scope:recipient.legitimacy_level } pam_negotiate_land_possible_gold_trigger = { - #Gold to pay for land + Gold to pay for land treasury_or_gold >= scope:recipient.pam_transfer_land_gold_value } @@ -2564,28 +2564,28 @@ pam_clergy_land_interaction_likely_acceptance_no_methods_trigger = { scope:recipient = { ai_greed <= medium_negative_ai_value } } } - #You intimidate them militarily or through dread + You intimidate them militarily or through dread OR = { - #Mostly milstrength + Mostly milstrength AND = { - #Milstrength 2x as high + Milstrength 2x as high current_military_strength >= scope:recipient.twice_current_military_strength has_dread_level_towards = { target = scope:recipient level >= 1 } } - #Milstrength and intimidation + Milstrength and intimidation AND = { - #Milstrength higher + Milstrength higher current_military_strength > scope:recipient.twice_current_military_strength has_dread_level_towards = { target = scope:recipient level >= 2 } } - #Milstrength - #Milstrength 4x as high + Milstrength + Milstrength 4x as high half_current_military_strength >= scope:recipient.twice_current_military_strength } } @@ -2644,7 +2644,7 @@ pam_tenet_can_be_prohibited_no_actor_trigger = { } } -# Tenet scope. Practices a Christian church reads as corruption rather than doctrine. + Tenet scope. Practices a Christian church reads as corruption rather than doctrine. pam_tenet_is_christian_vice_trigger = { OR = { this = tenet:tenet_simony @@ -2657,7 +2657,7 @@ pam_tenet_is_christian_vice_trigger = { } } -# Tenet scope. Christologies settled against by Nicaea, Chalcedon and Antioch. + Tenet scope. Christologies settled against by Nicaea, Chalcedon and Antioch. pam_tenet_is_christological_heresy_trigger = { OR = { this = tenet:tenet_monophysitism @@ -2666,8 +2666,8 @@ pam_tenet_is_christological_heresy_trigger = { } } -# Decision-side counterpart of pam_ec_tenet_is_christian_abomination_trigger -# We leave Ritual Cannibalism off because the Eucharist already invites the charge + Decision-side counterpart of pam_ec_tenet_is_christian_abomination_trigger + We leave Ritual Cannibalism off because the Eucharist already invites the charge pam_tenet_is_christian_abomination_trigger = { OR = { this = tenet:tenet_human_sacrifice @@ -2677,7 +2677,7 @@ pam_tenet_is_christian_abomination_trigger = { } } -# We pool these in tenet scope, since prohibit and core checks already close the wrong paths per faith + We pool these in tenet scope, since prohibit and core checks already close the wrong paths per faith pam_tenet_is_christian_dogma_trigger = { OR = { this = tenet:tenet_apostolic_succession @@ -2697,8 +2697,8 @@ pam_tenet_is_christian_dogma_trigger = { } } -# $CHARACTER$ is the Head of Faith deciding, and the tenet is the scope -# We only apply this to the AI, so players keep the full list + $CHARACTER$ is the Head of Faith deciding, and the tenet is the scope + We only apply this to the AI, so players keep the full list pam_tenet_ai_may_permit_trigger = { trigger_if = { limit = { @@ -2735,7 +2735,7 @@ pam_tenet_ai_may_prohibit_trigger = { } } -# Phase first: this runs per candidate tenet, so outside Reform the global lookup ends it at once + Phase first: this runs per candidate tenet, so outside Reform the global lookup ends it at once pam_tenet_ai_should_purge_trigger = { situation:the_christian_church ?= { situation_current_phase = reform_phase } OR = { @@ -2808,7 +2808,7 @@ pam_faith_is_at_core_tenet_cap_trigger = { } } -# $CHARACTER$'s faith supplies the popularity, from tenet scope + $CHARACTER$'s faith supplies the popularity, from tenet scope pam_tenet_is_overwhelmingly_popular_trigger = { save_temporary_scope_as = pam_popularity_tenet $CHARACTER$.faith = { @@ -2817,7 +2817,7 @@ pam_tenet_is_overwhelmingly_popular_trigger = { } } -# At or above the Popular display tier + At or above the Popular display tier pam_tenet_is_at_least_popular_trigger = { save_temporary_scope_as = pam_popularity_tenet $CHARACTER$.faith = { @@ -2826,7 +2826,7 @@ pam_tenet_is_at_least_popular_trigger = { } } -# As above, but for the Very Popular display tier. + As above, but for the Very Popular display tier. pam_tenet_is_at_least_very_popular_trigger = { save_temporary_scope_as = pam_popularity_tenet $CHARACTER$.faith = { @@ -2835,7 +2835,7 @@ pam_tenet_is_at_least_very_popular_trigger = { } } -# Below the Neutral display tier: the faithful have turned against it, not merely indifferent + Below the Neutral display tier: the faithful have turned against it, not merely indifferent pam_tenet_is_unpopular_trigger = { save_temporary_scope_as = pam_popularity_tenet $CHARACTER$.faith = { @@ -3000,7 +3000,7 @@ pam_ai_pentarchy_christian_actor_trigger = { culture = culture:greek culture = { has_same_culture_language = culture:greek } rite ?= { pam_greek_as_liturgical_language_trigger = yes } - # Alexandria and Antioch are Oriental Orthodox sees, so those churches count the five as their own. + Alexandria and Antioch are Oriental Orthodox sees, so those churches count the five as their own. pam_ai_oriental_christian_actor_trigger = yes } } @@ -3025,7 +3025,7 @@ pam_ai_mountain_capital_actor_trigger = { } } -# title_preferred_capital_county is the de jure capital even if k_papal_state is uncreated + title_preferred_capital_county is the de jure capital even if k_papal_state is uncreated pam_catholic_hof_weak_papal_state_control_trigger = { has_pam_dlc_trigger = yes title:k_papal_state = { @@ -3044,22 +3044,22 @@ pam_catholic_hof_weak_papal_state_control_trigger = { } } -# Holder of the Byzantine Empire (or Eastern Roman hegemony) with a non-Christian religion -#pam_byzantine_emperor_non_christian_trigger = { -# OR = { -# title:e_byzantium.holder ?= { -# is_alive = yes -# religion != religion:christianity_religion -# } -# title:h_eastern_roman_empire.holder ?= { -# is_alive = yes -# religion != religion:christianity_religion -# } -# } -#} + Holder of the Byzantine Empire (or Eastern Roman hegemony) with a non-Christian religion +pam_byzantine_emperor_non_christian_trigger = { + OR = { + title:e_byzantium.holder ?= { + is_alive = yes + religion != religion:christianity_religion + } + title:h_eastern_roman_empire.holder ?= { + is_alive = yes + religion != religion:christianity_religion + } + } +} -# Used by demand_child_as_monk_interaction. -# True if scope:recipient genuinely cares about losing scope:secondary_recipient, either their own direct child, or any child betrothed to one of their close family members. + Used by demand_child_as_monk_interaction. + True if scope:recipient genuinely cares about losing scope:secondary_recipient, either their own direct child, or any child betrothed to one of their close family members. pam_demand_child_recipient_cares_trigger = { OR = { scope:secondary_recipient = { is_child_of = scope:recipient } @@ -3099,8 +3099,8 @@ pam_ai_can_consider_forbidden_personal_tenet_trigger = { has_trait = humble has_trait = content } - # Clergy: a prohibited personal tenet is a criminal secret, so the elected pontiff never considers one - # This goes last because it iterates held titles, unlike the simple checks above + Clergy: a prohibited personal tenet is a criminal secret, so the elected pontiff never considers one + This goes last because it iterates held titles, unlike the simple checks above pam_holds_college_elected_church_seat_trigger = no } @@ -3135,7 +3135,7 @@ pam_is_western_christian_trigger = { } } -# Character scope. The College is a faith-locked doctrine (Catholicism). + Character scope. The College is a faith-locked doctrine (Catholicism). pam_can_hold_cardinalate_trigger = { faith ?= { has_doctrine_parameter = has_clerical_electors } trigger_if = { @@ -3144,7 +3144,7 @@ pam_can_hold_cardinalate_trigger = { } } -# Character scope. Before the Great Schism, AI only chooses Western candidates. + Character scope. Before the Great Schism, AI only chooses Western candidates. pam_ai_cardinal_candidate_is_immersive_trigger = { OR = { has_global_variable = pam_great_schism_decision_taken @@ -3154,7 +3154,7 @@ pam_ai_cardinal_candidate_is_immersive_trigger = { } } -# Character scope. The seat carries no government of its own, so a lay ruler handed one stays lay. + Character scope. The seat carries no government of its own, so a lay ruler handed one stays lay. pam_can_receive_cardinalate_trigger = { OR = { government_has_flag = government_is_theocracy @@ -3164,7 +3164,7 @@ pam_can_receive_cardinalate_trigger = { pam_is_antipope_trigger = no } -# Held title scope. Any faith's cardinalate - faith.any_clerical_elector_title only lists its own. + Held title scope. Any faith's cardinalate - faith.any_clerical_elector_title only lists its own. pam_title_is_clerical_elector_trigger = { holder.clerical_elector_title ?= this } @@ -3177,9 +3177,9 @@ pam_church_background_location_is_mediterranean_or_urban_trigger = { } } -# Grand cathedral is the highest church background + Grand cathedral is the highest church background pam_church_event_background_is_grand_western_trigger = { - #Gothic movement starts in 12th century + Gothic movement starts in 12th century current_year >= 1130 trigger_if = { limit = { @@ -3226,51 +3226,51 @@ pam_church_event_background_is_grand_western_trigger = { } } } -#pam_church_event_background_is_grand_western_pre_gothic_trigger = { -# #Gothic movement starts in 12th century -# current_year < 1130 -# trigger_if = { -# limit = { -# scope:activity.activity_location ?= { -# faith.religion = religion:christianity_religion -# } -# } -# scope:activity.activity_location.rite = { -# rite_has_doctrine = special_doctrine_is_western_christian_faith -# } -# } -# trigger_else_if = { -# limit = { -# exists = scope:activity.activity_host -# } -# scope:activity.activity_host.rite = { -# rite_has_doctrine = special_doctrine_is_western_christian_faith -# } -# } -# trigger_else = { -# location.rite ?= { -# rite_has_doctrine = special_doctrine_is_western_christian_faith -# } -# } -# OR = { -# AND = { -# this = faith.religious_head -# highest_held_title_tier >= tier_kingdom -# capital_county.faith ?= faith -# } -# domicile ?= { has_domicile_building_or_higher = ecclesiastical_domicile_main_03 } -# capital_county ?= { -# any_county_province = { -# has_building_with_flag = { flag = grand_cathedral_flag } -# } -# } -# holy_order ?= { -# num_leased_titles >= 12 -# } -# } -#} +pam_church_event_background_is_grand_western_pre_gothic_trigger = { + #Gothic movement starts in 12th century + current_year < 1130 + trigger_if = { + limit = { + scope:activity.activity_location ?= { + faith.religion = religion:christianity_religion + } + } + scope:activity.activity_location.rite = { + rite_has_doctrine = special_doctrine_is_western_christian_faith + } + } + trigger_else_if = { + limit = { + exists = scope:activity.activity_host + } + scope:activity.activity_host.rite = { + rite_has_doctrine = special_doctrine_is_western_christian_faith + } + } + trigger_else = { + location.rite ?= { + rite_has_doctrine = special_doctrine_is_western_christian_faith + } + } + OR = { + AND = { + this = faith.religious_head + highest_held_title_tier >= tier_kingdom + capital_county.faith ?= faith + } + domicile ?= { has_domicile_building_or_higher = ecclesiastical_domicile_main_03 } + capital_county ?= { + any_county_province = { + has_building_with_flag = { flag = grand_cathedral_flag } + } + } + holy_order ?= { + num_leased_titles >= 12 + } + } +} -#For using the Hagia Sophia background +For using the Hagia Sophia background pam_church_event_background_is_grand_eastern_trigger = { trigger_if = { limit = { @@ -3319,7 +3319,7 @@ pam_church_event_background_is_grand_eastern_trigger = { } -# This grandeur check does not care about religion, so the call site checks religion + This grandeur check does not care about religion, so the call site checks religion pam_church_event_background_is_developed_trigger = { OR = { domicile ?= { has_domicile_building_or_higher = ecclesiastical_domicile_main_02 } @@ -3331,7 +3331,7 @@ pam_church_event_background_is_developed_trigger = { OR = { has_building_or_higher = temple_02 has_building_with_flag = holy_building - #A wooden church looks wrong here + A wooden church looks wrong here geographical_region = world_middle_east geographical_region = world_africa geographical_region = world_steppe_tarim @@ -3353,7 +3353,7 @@ pam_church_event_background_is_developed_trigger = { } } -# Khachkar is removed when a county leaves the commissioning dynasty (like runestones). + Khachkar is removed when a county leaves the commissioning dynasty (like runestones). pam_remove_khachkar_new_holder_trigger = { $TITLE$ = { exists = var:pam_khachkar_ancestor @@ -3367,7 +3367,7 @@ pam_remove_khachkar_new_holder_trigger = { } } -# Cheap pre-filter for HoF split secular ruler lists (since split_clerical_region_size might not be performant) + Cheap pre-filter for HoF split secular ruler lists (since split_clerical_region_size might not be performant) pam_potential_secular_clerical_split_ruler_trigger = { $RULER$ = { is_alive = yes @@ -3385,11 +3385,11 @@ pam_potential_secular_clerical_split_ruler_trigger = { capital_county = { exists = clerical_region_title clerical_region_title.holder = scope:recipient - # We always keep the region capital, because splitting it off would leave the new region with no capital + We always keep the region capital, because splitting it off would leave the new region with no capital NOT = { this = clerical_region_title.title_preferred_capital_county } } } - # any_sub_realm_county, not any_realm_county: for a vassal the latter is the liege's whole realm + any_sub_realm_county, not any_realm_county: for a vassal the latter is the liege's whole realm trigger_if = { limit = { scope:recipient = scope:actor } $RULER$ = { @@ -3402,7 +3402,7 @@ pam_potential_secular_clerical_split_ruler_trigger = { } } -# Full validation including code-side split size calc — use sparingly + Full validation including code-side split size calc — use sparingly pam_valid_secular_clerical_split_ruler_trigger = { pam_potential_secular_clerical_split_ruler_trigger = { RULER = $RULER$ } $RULER$ = { @@ -3410,8 +3410,8 @@ pam_valid_secular_clerical_split_ruler_trigger = { } } -# This has to be the region at their capital, which is what the clerical_region pickers list -# Hides the interaction when a landed archbishop's capital sits in someone else's region + This has to be the region at their capital, which is what the clerical_region pickers list + Hides the interaction when a landed archbishop's capital sits in someone else's region pam_acting_clerical_region_trigger = { $ARCHBISHOP$ = { save_temporary_scope_as = acting_archbishop_temp @@ -3426,12 +3426,12 @@ pam_acting_clerical_region_trigger = { } } -# Cheap pre-filter for HoF merge clerical region title list + Cheap pre-filter for HoF merge clerical region title list pam_potential_merge_clerical_region_title_trigger = { $TITLE$ = { has_clerical_region = yes is_head_of_faith = no - # Absorbed regions stay as empty picker shells until reload + Absorbed regions stay as empty picker shells until reload clerical_region_size > 0 custom_tooltip = { text = pam_potential_merge_clerical_region_title_same_title_trigger @@ -3471,7 +3471,7 @@ pam_potential_merge_clerical_region_title_trigger = { } } -# True when the scoped clerical region title covers at most three distinct de jure duchies (TIT-76192) + True when the scoped clerical region title covers at most three distinct de jure duchies (TIT-76192) pam_clerical_region_at_most_three_duchies_trigger = { NAND = { any_county_in_clerical_region = { @@ -3518,7 +3518,7 @@ pam_has_adjacent_mergeable_clerical_region_trigger = { } } -# Same-faith land in another de jure kingdom + Same-faith land in another de jure kingdom pam_expand_target_is_same_faith_outside_home_kingdom_trigger = { exists = $TITLE$.kingdom exists = $ARCHBISHOP$.capital_county.kingdom @@ -3534,8 +3534,8 @@ pam_expand_target_is_same_faith_outside_home_kingdom_trigger = { } } -# Picked title only chooses the see, then create_clerical_region fills from that county's de jure kingdom -# The lowest tier decides who may petition, not how large the region ends up + Picked title only chooses the see, then create_clerical_region fills from that county's de jure kingdom + The lowest tier decides who may petition, not how large the region ends up pam_valid_new_clerical_region_anchor_trigger = { trigger_if = { limit = { $PETITIONER$ ?= { has_government = ecclesiastical_government } } @@ -3551,7 +3551,7 @@ pam_valid_new_clerical_region_anchor_trigger = { title_capital_county = { NOT = { exists = clerical_region_title } exists = holder - faith = $PETITIONER$.faith # the region takes its faith from this county, and a mismatch destroys the new title + faith = $PETITIONER$.faith the region takes its faith from this county, and a mismatch destroys the new title OR = { holder = $PETITIONER$ holder = { @@ -3563,7 +3563,7 @@ pam_valid_new_clerical_region_anchor_trigger = { } } -# At least one eligible title exists + At least one eligible title exists pam_valid_expand_ecclesiastical_title_target_trigger = { $ARCHBISHOP$ = { save_temporary_scope_as = archbishop_temp } $TITLE$ = { @@ -3593,7 +3593,7 @@ pam_valid_expand_ecclesiastical_title_target_trigger = { has_clerical_region = yes is_head_of_faith = no holder ?= scope:archbishop_temp - is_adjacent_to_clerical_region = $TITLE$ # very unperformant + is_adjacent_to_clerical_region = $TITLE$ very unperformant } } } @@ -3607,10 +3607,10 @@ pam_valid_expand_ecclesiastical_title_target_trigger = { } } -# At least one selectable expand target exists + At least one selectable expand target exists pam_has_eligible_expand_ecclesiastical_title_target_trigger = { save_temporary_scope_as = archbishop_temp - capital_county.clerical_region_title = { # must work like this due to clerical_region_adjacent_duchies behaviour + capital_county.clerical_region_title = { must work like this due to clerical_region_adjacent_duchies behaviour has_clerical_region = yes is_head_of_faith = no holder ?= scope:archbishop_temp @@ -3629,7 +3629,7 @@ pam_has_eligible_expand_ecclesiastical_title_target_trigger = { pam_can_expand_clerical_region_after_war_trigger = { exists = scope:target - #You hold a clerical region that neighbors or is within target + You hold a clerical region that neighbors or is within target save_temporary_scope_as = archbishop_temp any_held_title = { has_clerical_region = yes @@ -3645,11 +3645,11 @@ pam_can_expand_clerical_region_after_war_trigger = { this = scope:target NOT = { exists = clerical_region_title } } - #The rest of the duchy needs to be ready + The rest of the duchy needs to be ready scope:target = { duchy = { - #All counties must have no clerical region - #All counties must be within recipient's realm OR held by a same-faith ruler + All counties must have no clerical region + All counties must be within recipient's realm OR held by a same-faith ruler any_de_jure_county = { count >= all NOT = { exists = clerical_region_title } @@ -3676,8 +3676,8 @@ pam_can_expand_clerical_region_after_war_trigger = { NOT = { exists = scope:clerical_region_title } } scope:target = { - #All counties must have no clerical region - #All counties must be within recipient's realm OR held by a same-faith ruler + All counties must have no clerical region + All counties must be within recipient's realm OR held by a same-faith ruler any_de_jure_county = { count >= all NOT = { exists = clerical_region_title } @@ -3699,8 +3699,8 @@ pam_can_expand_clerical_region_after_war_trigger = { } scope:target = { any_direct_de_jure_vassal_title = { - #All counties must have no clerical region - #All counties must be within recipient's realm OR held by a same-faith ruler + All counties must have no clerical region + All counties must be within recipient's realm OR held by a same-faith ruler any_de_jure_county = { count >= all NOT = { @@ -3724,7 +3724,7 @@ pam_can_expand_clerical_region_after_war_trigger = { } } -# Evaluated in county scope for the Convert Faith cardinal order. + Evaluated in county scope for the Convert Faith cardinal order. pam_cardinal_order_convert_faith_in_region_county_trigger = { faith != $CARDINAL$.faith exists = holder @@ -3788,7 +3788,7 @@ pam_ai_can_proclaim_armed_pilgrimages_core_trigger = { pam_ai_can_proclaim_struggle_submission_core_trigger = { faith.religion = { this = religion:islam_religion - exists = var:variable_ghw_unlocked # You've entered the Age of Crusades + exists = var:variable_ghw_unlocked You've entered the Age of Crusades } faith = { main_rite = { @@ -3878,7 +3878,7 @@ amicable_infertile_divorce_trigger = { } } -# Mendicant Preachers personal tenet: guests a preaching host can win over at an activity + Mendicant Preachers personal tenet: guests a preaching host can win over at an activity pam_mendicant_preachers_apa_convert_trigger = { this != $PREACHER$ highest_held_title_tier < tier_duchy @@ -3891,8 +3891,8 @@ pam_mendicant_preachers_apa_convert_trigger = { } } -# PAM Reincarnation personal tenet: a parent or grandparent that root could claim as a past life -# Checked in the forebear's scope, with root as the character doing the remembering + PAM Reincarnation personal tenet: a parent or grandparent that root could claim as a past life + Checked in the forebear's scope, with root as the character doing the remembering pam_recallable_forebear_trigger = { save_temporary_scope_as = candidate_forebear is_alive = no @@ -3931,7 +3931,7 @@ divorce_can_cause_house_feud_trigger = { scope:secondary_recipient = { house ?= { any_house_relation = { - #Not already feuding or quite fond of one another + Not already feuding or quite fond of one another OR = { has_house_relation_level = quarrel has_house_relation_level = rivalry @@ -3962,7 +3962,7 @@ divorce_can_cause_holy_order_lease_trigger = { diplomacy >= decent_skill_rating } OR = { - #Monastic lease + Monastic lease scope:divorcer = { any_held_title = { title_tier = county @@ -3981,7 +3981,7 @@ divorce_can_cause_holy_order_lease_trigger = { } } } - #Military lease + Military lease scope:divorcer = { any_held_title = { title_tier = county @@ -4055,17 +4055,17 @@ divorce_can_put_spouse_in_monastery_trigger = { } } -# Would a priest consider marriage in Saeculum Obscurum? + Would a priest consider marriage in Saeculum Obscurum? saeculum_obscurum_clergy_would_marry_trigger = { - # Older priests just don't bother + Older priests just don't bother age < 50 - # Must be somewhat inclined + Must be somewhat inclined NOR = { has_trait = chaste has_trait = celibate } OR = { - # Strict personality/actions + Strict personality/actions has_trait = lustful has_trait = seducer has_trait = rakish @@ -4081,18 +4081,18 @@ saeculum_obscurum_clergy_would_marry_trigger = { this = tenet:tenet_be_fruitful_and_multiply } } - # General vibes + General vibes saeculum_obscurum_clergy_marry_ai_value_trigger = yes } } saeculum_obscurum_would_marry_clergy_trigger = { - # General vibes + General vibes saeculum_obscurum_clergy_marry_ai_value_trigger = yes } saeculum_obscurum_clergy_marry_ai_value_trigger = { - # Higher tiers need less honor and zeal, and more boldness + Higher tiers need less honor and zeal, and more boldness trigger_if = { limit = { highest_held_title_tier > tier_duchy } ai_honor < low_negative_ai_value @@ -4154,7 +4154,7 @@ can_request_priest_from_recipient_trigger = { superior.superior ?= $RECIPIENT$ } } - # A realm under an antipope asks them instead + A realm under an antipope asks them instead religious_head_or_challenger ?= $RECIPIENT$ trigger_if = { limit = { NOT = { exists = faith.religious_head } } @@ -4163,7 +4163,7 @@ can_request_priest_from_recipient_trigger = { } } -# Gates the tenet popularity system, for PAM it's only for Christian faiths. Runs in a faith scope. + Gates the tenet popularity system, for PAM it's only for Christian faiths. Runs in a faith scope. has_tenet_popularity_trigger = { OR = { religion = religion:catholic_religion @@ -4318,7 +4318,7 @@ pam_clergy_title_interaction_player_recipient_auto_accept_trigger = { clerical_hesitation_from_potential_defender_value <= -2 } situation:the_christian_church ?= { - any_participant_group = { # Both characters are involved in the situation + any_participant_group = { Both characters are involved in the situation any_situation_group_participant = { this = scope:puppet_or_actor } @@ -4445,7 +4445,7 @@ pam_clergy_title_interaction_player_recipient_auto_accept_trigger = { scope:secondary_recipient = { is_allied_to = scope:recipient } - #Must be neighboring or overlapping + Must be neighboring or overlapping scope:target ?= { NOR = { any_de_jure_county = { @@ -4469,7 +4469,7 @@ pam_clergy_title_interaction_player_recipient_auto_accept_trigger = { } } } -# PAM Peace of God: is prosecuting an offensive war against a ruler of their own faith. + PAM Peace of God: is prosecuting an offensive war against a ruler of their own faith. pam_peace_of_god_coreligionist_aggressor_trigger = { save_temporary_scope_as = pam_aggressor any_character_war = { @@ -4495,8 +4495,8 @@ pam_valid_excommunication_target_trigger = { } } } - #always valid if Hof - #This trigger is only relevant if excommunicator is not + always valid if Hof + This trigger is only relevant if excommunicator is not trigger_if = { limit = { scope:target_char = { need_hof_for_clergy_interaction_trigger = yes } @@ -4516,19 +4516,19 @@ pam_valid_excommunication_target_trigger = { } } trigger_else = { - # If there is no HoF, a clergy HoR can take it + If there is no HoF, a clergy HoR can take it trigger_if = { limit = { NOT = { exists = scope:target_char.faith.religious_head } scope:target_char.rite.head_of_rite ?= $EXCOMMUNICATOR$ } } - #Wanderers and courtiers + Wanderers and courtiers trigger_else_if = { limit = { is_ruler = no } - #Courtiers + Courtiers trigger_if = { limit = { exists = liege @@ -4559,7 +4559,7 @@ pam_valid_excommunication_target_trigger = { } } } - #Wanderers + Wanderers trigger_else = { custom_tooltip = { text = bishop_excommunication_target_wanderer_tt @@ -4587,7 +4587,7 @@ pam_valid_excommunication_target_trigger = { } } } - #Theocrats/ecclesiasticals + Theocrats/ecclesiasticals trigger_else_if = { limit = { government_has_flag = government_is_theocracy @@ -4620,7 +4620,7 @@ pam_valid_excommunication_target_trigger = { } } - #Secular rulers + Secular rulers trigger_else = { custom_tooltip = { text = bishop_excommunication_target_secular_tt @@ -4961,11 +4961,11 @@ incite_claim_war_title_can_be_picked_trigger = { } } incite_holy_war_ai_invalidation_trigger = { - #One condition must be true, and none of the NOR true + One condition must be true, and none of the NOR true OR = { $SECONDARY$ = { ai_zeal >= 80 } $SECONDARY$ = { ai_boldness >= 100 } - #Being forced to (despite having precariously comparable mil strength) + Being forced to (despite having precariously comparable mil strength) scope:use_hook ?= yes trigger_if = { limit = { @@ -4980,7 +4980,7 @@ incite_holy_war_ai_invalidation_trigger = { scope:join_war ?= yes scope:puppet_or_actor.current_military_strength >= $RECIPIENT$.half_current_military_strength } - #Can probably win + Can probably win trigger_if = { limit = { exists = $SECONDARY$ @@ -5153,7 +5153,7 @@ pam_request_white_peace_war_with_enemy_trigger = { } pam_request_victory_war_with_enemy_trigger = { has_valid_casus_belli = yes - #A war the design will not let you negotiate to a white peace is not one the clergy may rule won either + A war the design will not let you negotiate to a white peace is not one the clergy may rule won either is_white_peace_possible = yes NOR = { using_cb = undirected_great_holy_war @@ -5177,10 +5177,10 @@ pam_request_victory_war_with_enemy_trigger = { } } -#A war that can already be won outright, so there is nothing for the clergy to do +A war that can already be won outright, so there is nothing for the clergy to do pam_request_victory_war_already_won_trigger = { has_valid_casus_belli = yes - #Kept in step with pam_request_victory_war_with_enemy_trigger so an ineligible war cannot block an eligible one + Kept in step with pam_request_victory_war_with_enemy_trigger so an ineligible war cannot block an eligible one is_white_peace_possible = yes NOR = { using_cb = undirected_great_holy_war @@ -5489,8 +5489,8 @@ pam_evangelize_selected_tenet_prohibited_trigger = { } } -# scope:pam_evangelize_tenet_check is the tenet being weighed on a character -# Saved scope not $TENET$: a macro inside a quoted script value drops the opening parenthesis + scope:pam_evangelize_tenet_check is the tenet being weighed on a character + Saved scope not $TENET$: a macro inside a quoted script value drops the opening parenthesis pam_evangelize_tenet_below_very_popular_trigger = { "faith.tenet_popularity(scope:pam_evangelize_tenet_check)" < tenet_popularity_very_popular_threshold } @@ -5545,8 +5545,8 @@ pam_pope_is_head_of_faith_or_rite_trigger = { } } -# Cardinal scope needs $POPE$ here -# Both dynasty sides need exists or two lowborn prelates match each other + Cardinal scope needs $POPE$ here + Both dynasty sides need exists or two lowborn prelates match each other pam_cardinal_is_nepotistic_appointment_trigger = { OR = { AND = { @@ -5559,8 +5559,8 @@ pam_cardinal_is_nepotistic_appointment_trigger = { } } -# $TITLE$ is the seat that heads this character's Church, and this runs on a character -# Rome is named directly: headless Chalcedonianism has no religious_head_title to compare + $TITLE$ is the seat that heads this character's Church, and this runs on a character + Rome is named directly: headless Chalcedonianism has no religious_head_title to compare pam_title_is_church_seat_trigger = { OR = { $TITLE$ = title:k_papal_state @@ -5583,7 +5583,7 @@ pam_holds_christian_patriarch_title_trigger = { } } -# While Chalcedonianism is headless the Pope heads it as head of rite + While Chalcedonianism is headless the Pope heads it as head of rite pam_holds_church_seat_trigger = { OR = { any_held_title = { is_head_of_faith = yes } @@ -5594,7 +5594,7 @@ pam_holds_church_seat_trigger = { pam_college_election_title_has_electors_trigger = { trigger_if = { limit = { exists = faith.religious_head_title } - # any_elector rather than a bare exists: is_candidate_from_set errors on a title with no election law. + any_elector rather than a bare exists: is_candidate_from_set errors on a title with no election law. faith.religious_head_title = { any_elector = {} } } trigger_else = { @@ -5612,7 +5612,7 @@ pam_college_election_title_is_theocratic_elective_trigger = { } } -# Character scope. Do they sit on the Church seat the College of Cardinals elects? + Character scope. Do they sit on the Church seat the College of Cardinals elects? pam_holds_college_elected_church_seat_trigger = { pam_holds_church_seat_trigger = yes pam_college_election_title_has_electors_trigger = yes @@ -5636,12 +5636,12 @@ pam_is_college_election_candidate_trigger = { } } } - trigger_else = { # Error log suppressing + trigger_else = { Error log suppressing always = no } } -# We check the clerical title, because the government flag and is_clergy miss many PAM prelates + We check the clerical title, because the government flag and is_clergy miss many PAM prelates pam_is_investiture_clergy_trigger = { OR = { any_held_title = { has_clerical_region = yes } @@ -5650,7 +5650,7 @@ pam_is_investiture_clergy_trigger = { } } -# Only landed county tier and above, because temple baronies match has_clerical_region and flood the guests + Only landed county tier and above, because temple baronies match has_clerical_region and flood the guests pam_is_investiture_landed_prelate_trigger = { is_landed = yes highest_held_title_tier >= tier_county @@ -5666,7 +5666,7 @@ pam_valid_ecumenical_council_voter_trigger = { pam_is_investiture_clergy_trigger = yes rite.head_of_rite ?= this has_variable = investiture_stance - # puppet:X errors on non-playable characters, and only landed county tier rulers own that puppet + puppet:X errors on non-playable characters, and only landed county tier rulers own that puppet AND = { is_landed = yes highest_held_title_tier >= tier_county @@ -5735,7 +5735,7 @@ pam_ec_doctrine_is_change_trigger = { } } -# The AI Conservative named to oppose the host in this debate; stands down while a player argues the Conservative side + The AI Conservative named to oppose the host in this debate; stands down while a player argues the Conservative side pam_ec_is_active_counterplayer_trigger = { is_ai = yes is_in_guest_subset = { name = conservative } @@ -5751,7 +5751,7 @@ pam_ec_is_active_counterplayer_trigger = { } } -# AI proposers who may skip the nearest-step rule at an Ecumenical Council + AI proposers who may skip the nearest-step rule at an Ecumenical Council pam_ec_doctrine_extremist_proposer_trigger = { OR = { has_trait = herald @@ -5763,7 +5763,7 @@ pam_ec_doctrine_extremist_proposer_trigger = { } } -# The proposed scope:ec_step_to is the closest step from the held scope:ec_step_from that the rite can choose + The proposed scope:ec_step_to is the closest step from the held scope:ec_step_from that the rite can choose pam_ec_doctrine_is_nearest_step_trigger = { NOT = { root = { @@ -5865,7 +5865,7 @@ pam_custom_kingdom_can_claim_duchy_exclave_trigger = { kingdom.title_capital_county ?= this } } - #Is not only duchy in kingdom + Is not only duchy in kingdom kingdom = { any_direct_de_jure_vassal_title = { tier = tier_duchy @@ -5881,7 +5881,7 @@ pam_custom_kingdom_can_claim_duchy_exclave_trigger = { } } } - #Is not controlled by de jure liege + Is not controlled by de jure liege trigger_if = { limit = { exists = kingdom.holder @@ -5896,7 +5896,7 @@ pam_custom_kingdom_can_claim_duchy_exclave_trigger = { } } } - #Not bordering any other county of de jure kingdom (not held by new king) + Not bordering any other county of de jure kingdom (not held by new king) NOT = { any_de_jure_county = { save_temporary_scope_as = county_temp @@ -5949,7 +5949,7 @@ pam_custom_empire_can_claim_kingdom_exclave_trigger = { empire.title_capital_county ?= this } } - #Is not only kingdom in empire + Is not only kingdom in empire empire = { any_direct_de_jure_vassal_title = { tier = tier_kingdom @@ -5965,7 +5965,7 @@ pam_custom_empire_can_claim_kingdom_exclave_trigger = { } } } - #Is not controlled by de jure liege + Is not controlled by de jure liege trigger_if = { limit = { exists = empire.holder @@ -5980,7 +5980,7 @@ pam_custom_empire_can_claim_kingdom_exclave_trigger = { } } } - #Not bordering any other county of de jure empire (not held by new empire) + Not bordering any other county of de jure empire (not held by new empire) NOT = { any_de_jure_county = { save_temporary_scope_as = county_temp @@ -6023,7 +6023,7 @@ ai_religious_request_blocker_trigger = { is_ai = yes scope:recipient = { is_ai = no } } - # Each religious request has its own cooldown against a player Head of Faith + Each religious request has its own cooldown against a player Head of Faith NOT = { scope:recipient = { has_character_flag = $INTERACTION$_received_cooldown } } } } @@ -6066,7 +6066,7 @@ target_valid_ecclesiastical_de_jure_shifting_trigger = { } } } - #AI should only do direct borders, not over water - ew gross + AI should only do direct borders, not over water - ew gross trigger_if = { limit = { scope:puppet_or_actor = { @@ -6117,7 +6117,7 @@ clergy_interaction_generic_piety_level_or_puppet_req_trigger = { } } -#Title scope. An uncreated title the petitioner already has a foothold in; scope:puppet_or_actor is the petitioning ruler. +Title scope. An uncreated title the petitioner already has a foothold in; scope:puppet_or_actor is the petitioning ruler. target_valid_request_unformed_title_trigger = { is_landless_type_title = no is_head_of_faith = no @@ -6474,7 +6474,7 @@ pam_reaffirm_doctrine_consanguinity_accept_trigger = { } skill_support_trigger = { - #AI precautions + AI precautions trigger_if = { limit = { is_ai = yes @@ -6497,7 +6497,7 @@ skill_support_trigger = { } } piety_support_trigger = { - #AI precautions + AI precautions trigger_if = { limit = { is_ai = yes @@ -6556,7 +6556,7 @@ piety_support_trigger = { } } dread_support_trigger = { - #AI precautions + AI precautions trigger_if = { limit = { is_ai = yes @@ -6583,7 +6583,7 @@ dread_support_secular_trigger = { } } friendly_support_base_trigger = { - #AI precautions + AI precautions trigger_if = { limit = { is_ai = yes @@ -6634,7 +6634,7 @@ friendly_support_secular_trigger = { } } lunacy_support_trigger = { - #AI precautions + AI precautions trigger_if = { limit = { is_ai = yes @@ -6696,8 +6696,8 @@ lunacy_support_trigger = { } } -# 5+ counties so small dukes do not found theocracies -# When no theocratic vassal exists we skip the percent scan so this stays fast + 5+ counties so small dukes do not found theocracies + When no theocratic vassal exists we skip the percent scan so this stays fast realm_theocratic_county_share_ai_below_cap_trigger = { any_sub_realm_county = { count >= 5 @@ -6721,7 +6721,7 @@ realm_theocratic_county_share_player_below_cap_trigger = { } } -# The granting ruler is root, and scope:title is the highest-tier title being granted + The granting ruler is root, and scope:title is the highest-tier title being granted pam_nomad_grant_settled_government_trigger = { OR = { government_has_flag = government_is_nomadic @@ -6741,7 +6741,7 @@ pam_nomad_grant_settled_government_trigger = { } } -# Follows settle_people_decision ai_potential so an AI nomad always or never grants settled holdings + Follows settle_people_decision ai_potential so an AI nomad always or never grants settled holdings pam_nomad_inclined_to_settle_trigger = { NOR = { has_trait = greatest_of_khans @@ -6760,18 +6760,18 @@ pam_nomad_inclined_to_settle_trigger = { } } -# Artifact scope + Artifact scope pam_holy_weapon_trigger = { is_equipped = yes artifact_slot_type = primary_armament is_holy_relic_for = artifact_owner.faith } -############################################### -# Harmonious Society - the Five Bonds -############################################### -# A bond only counts while it is actually kept, so each one asks for a living partner who thinks -# well of the scoped character. 50 opinion is the threshold throughout. + + Harmonious Society - the Five Bonds + + A bond only counts while it is actually kept, so each one asks for a living partner who thinks + well of the scoped character. 50 opinion is the threshold throughout. pam_five_bonds_ruler_subject_trigger = { OR = { @@ -6841,7 +6841,7 @@ pam_five_bonds_friend_trigger = { } } -# Same rules as release_from_prison_interaction and only valid inside that interaction + Same rules as release_from_prison_interaction and only valid inside that interaction tenet_benevolent_governance_unconditional_release_trigger = { scope:demand_conversion = no scope:renounce_claims = no @@ -6864,11 +6864,11 @@ theocratic_lay_clergy_trigger = { rite = { rite_has_doctrine = doctrine_theocracy_lay_clergy } } OR = { - # Cardinals + Cardinals exists = clerical_elector_title - # Archdioceses + Archdioceses primary_title ?= { has_clerical_region = yes } - # Other landless explicit clergy + Other landless explicit clergy AND = { is_landed = no is_clergy = yes @@ -6879,13 +6879,13 @@ theocratic_lay_clergy_trigger = { pam_is_clerical_comprehensive_trigger = { OR = { - # Cardinals + Cardinals exists = clerical_elector_title - # Archdioceses + Archdioceses primary_title ?= { has_clerical_region = yes } - # Landed and landless ecclesiastical rulers + Landed and landless ecclesiastical rulers government_has_flag = government_is_ecclesiastical - # Other landless explicit clergy + Other landless explicit clergy AND = { is_landed = no is_clergy = yes @@ -6893,7 +6893,7 @@ pam_is_clerical_comprehensive_trigger = { } } -# Current scope is a faith and root is the character choosing the personal tenet + Current scope is a faith and root is the character choosing the personal tenet pam_personal_syncretism_faith_matches_trigger = { OR = { AND = { @@ -6935,12 +6935,12 @@ pam_personal_syncretism_faith_matches_trigger = { } } -# Exile pool eligibility probe for the personal syncretism decision tooltip. + Exile pool eligibility probe for the personal syncretism decision tooltip. pam_personal_syncretism_exile_rite_probe_trigger = { pam_personal_syncretism_exile_rite_trigger = yes } -# Valid exile pool entry for the personal syncretism decision. + Valid exile pool entry for the personal syncretism decision. pam_personal_syncretism_exile_rite_trigger = { exists = var:converted_development var:converted_development >= 1 @@ -6992,7 +6992,7 @@ pam_personal_syncretism_invite_exiles_available_trigger = { } pam_personal_syncretism_county_bonus_trigger = { - # The yearly pulse evaluates this on a held county; root is its ruler. + The yearly pulse evaluates this on a held county; root is its ruler. root = { has_personal_tenet_flag = tenet_syncretism_county_bonus } @@ -7001,11 +7001,11 @@ pam_personal_syncretism_county_bonus_trigger = { } } -############################################### -# Holy Myron -# Until pam_holy_myron.0002 destroys it, an emptied vessel stays as an artifact -# trigger_if keeps the variable fetch from evaluating on ordinary artifacts + Holy Myron + + Until pam_holy_myron.0002 destroys it, an emptied vessel stays as an artifact + trigger_if keeps the variable fetch from evaluating on ordinary artifacts pam_is_holy_myron_artifact_trigger = { trigger_if = { limit = { has_variable = pam_holy_myron_charges } @@ -7016,7 +7016,7 @@ pam_is_holy_myron_artifact_trigger = { } } -# Character scope: owns an ampulla with oil left to spend. + Character scope: owns an ampulla with oil left to spend. pam_has_usable_holy_myron_trigger = { any_character_artifact = { pam_is_holy_myron_artifact_trigger = yes @@ -7043,8 +7043,8 @@ eligible_for_pam_legacy_trigger = { } } -############################################### -# Religious Study scheme + + Religious Study scheme pam_study_scripture_pursuit_of_knowledge_trigger = { OR = { @@ -7067,7 +7067,7 @@ pam_study_scripture_confession_tenet_trigger = { } } -# An eloquent cleric root could learn homiletics from + An eloquent cleric root could learn homiletics from pam_study_scripture_preacher_trigger = { diplomacy >= 8 is_physically_able_ai_adult = yes @@ -7100,7 +7100,7 @@ pam_study_scripture_mysticism_trigger = { } } -# A vow of chastity, or a marriage the Church has just dissolved, keeps a character off the marriage market. + A vow of chastity, or a marriage the Church has just dissolved, keeps a character off the marriage market. pam_under_clerical_marriage_restraint_trigger = { OR = { has_character_modifier = clerical_chastity_vow_modifier @@ -7108,7 +7108,7 @@ pam_under_clerical_marriage_restraint_trigger = { } } -# Only the AI is held to this: a player may still discard the vow's intent and arrange the match anyway. + Only the AI is held to this: a player may still discard the vow's intent and arrange the match anyway. pam_ai_marriage_respects_clerical_restraint_trigger = { trigger_if = { limit = { @@ -7121,7 +7121,7 @@ pam_ai_marriage_respects_clerical_restraint_trigger = { } } -# $SLOT$ is the papabile shortlist seat being claimed + $SLOT$ is the papabile shortlist seat being claimed pam_papabile_slot_open_to_trigger = { exists = clerical_elector_title NOT = { has_variable = pam_refuses_papacy } @@ -7151,13 +7151,13 @@ pam_papabile_barred_by_clerical_gender_trigger = { } } -# Divergent rites only: an Ecumenical Council can give the main rite Lay Clergy, and its College must still have candidates + Divergent rites only: an Ecumenical Council can give the main rite Lay Clergy, and its College must still have candidates pam_papabile_barred_by_lay_clergy_trigger = { rite ?= { rite_has_doctrine = doctrine_theocracy_lay_clergy } rite != faith.main_rite } -# Only the patron's own personal tenets may be imposed, and not one the order already advocates. + Only the patron's own personal tenets may be imposed, and not one the order already advocates. pam_reform_order_tenet_option_shown_trigger = { scope:actor = { has_personal_tenet = $TENET$ @@ -7212,7 +7212,7 @@ monastic_movement_non_order_size_reqs_trigger = { } } -# Core tenet or personal pick; shared by scheme success/prediction + Core tenet or personal pick; shared by scheme success/prediction pam_study_rite_tenet_bonus_trigger = { OR = { rite ?= { rite_has_parameter = $PARAM$ } diff --git a/common/succession_election/NEOW_succession_elections.txt b/common/succession_election/NEOW_succession_elections.txt index da0e20ae9..1a332857a 100644 --- a/common/succession_election/NEOW_succession_elections.txt +++ b/common/succession_election/NEOW_succession_elections.txt @@ -54,22 +54,44 @@ } electors = { - add = holder - add = { - type = holder_direct_vassals - limit = { - OR = { #Is either a vassal, or a somewhat respected elder - AND = { - is_adult = yes - piety_level >= 2 + character_sets = { + + theomonarchy_electors_holder = { + type = holder + } + theomonarchy_electors_dejure_vassals = { + type = holder_direct_vassals + limit = { + OR = { #Is either a vassal, or a somewhat respected elder + AND = { + is_adult = yes + piety_level >= 2 + } + AND = { + highest_held_title_tier >= scope:title.holder.highest_held_title_tier_minus_two_landed + target_is_de_facto_liege_or_above = scope:character + } } - AND = { - highest_held_title_tier >= scope:title.holder.highest_held_title_tier_minus_two_landed - target_is_de_facto_liege_or_above = scope:character - } + rite = scope:title.holder.rite + NOT = { has_trait = incapable } + } + } + theomonarchy_theocratic_electors_dejure_vassals = { + type = same_faith_clergy + limit = { + OR = { #Is either a vassal, or a somewhat respected elder + AND = { + is_adult = yes + piety_level >= 2 + } + AND = { + highest_held_title_tier >= scope:title.holder.highest_held_title_tier_minus_two_landed + target_is_de_facto_liege_or_above = scope:character + } + } + faith = scope:title.holder.faith + NOT = { has_trait = incapable } } - faith = scope:title.holder.faith - NOT = { has_trait = incapable } } } } @@ -100,26 +122,28 @@ #scope:candidate = Candidate, scope:title = Title, scope:holder_candidate = Candidate currently selected by ruler. candidates = { - add = { - type = title_claimants - limit = { - feudal_elective_potential_landless_claimant_candidate_trigger = yes - faith = scope:title.holder.faith + character_sets = { + feudal_elective_claimants = { + type = title_claimants + limit = { + feudal_elective_potential_landless_claimant_candidate_trigger = yes + rite = scope:title.holder.rite + } } - } - add = { - type = holder_direct_vassals - limit = { - feudal_elective_potential_landed_candidate_trigger = yes - highest_held_title_tier >= tier_county - faith = scope:title.holder.faith + feudal_elective_direct_vassals = { + type = holder_direct_vassals + limit = { + feudal_elective_potential_landed_candidate_trigger = yes + highest_held_title_tier >= tier_county + rite = scope:title.holder.rite + } } - } - add = { - type = holder_dynasty - limit = { - feudal_elective_potential_landless_dynastic_candidate_trigger = yes - faith = scope:title.holder.faith + theomonarchy_elective_holder_dynasty = { + type = holder_dynasty + limit = { + feudal_elective_potential_landless_dynastic_candidate_trigger = yes + rite = scope:title.holder.rite + } } } } diff --git a/events/decisions_events/roman_restoration_events.txt b/events/decisions_events/roman_restoration_events.txt index 2f95f5423..14f89a557 100644 --- a/events/decisions_events/roman_restoration_events.txt +++ b/events/decisions_events/roman_restoration_events.txt @@ -3039,7 +3039,7 @@ # NOT = { capital_county = title:c_byzantion } # } # if = { -# limit = { government_allows = administrative } +# limit = { government_has_mechanic = administrative } # change_influence = medium_influence_gain # } # add_legitimacy = minor_legitimacy_gain diff --git a/gui/coat_of_arms.gui b/gui/coat_of_arms.gui new file mode 100644 index 000000000..4b3b7e059 --- /dev/null +++ b/gui/coat_of_arms.gui @@ -0,0 +1,3210 @@ +###################################################### +#################### COAT OF ARMS #################### +###################################################### + +# Standard Realm Coa of Arms types + +@overlay_alpha = 0.4 + +template coat_of_arms_icon_data +{ + gfxtype = coatofarmsgfx + shaderfile = "gfx/FX/gui_coatofarms.shader" + alwaystransparent = yes + allow_outside = yes +} + +types CoATypes +{ + type coat_of_arms_icon = icon { + using = coat_of_arms_icon_data + } + + type drag_drop_coat_of_arms_icon = drag_drop_icon { + using = coat_of_arms_icon_data + alwaystransparent = no + drag_drop_base_type = "coat_of_arms_icon" + } + + #################################### + ########### REALM SHIELDS ########## + #################################### + + ## Tiny Realm CoA + type coa_realm_tiny_crown = coa_realm_tiny { + blockoverride "crown" + { + visible = "[And4( Not(Character.GetPrimaryTitle.IsMercenaryCompany), Not(Character.GetPrimaryTitle.IsHolyOrder), Not(Character.GetGovernment.IsType('landless_adventurer_government')), Not(Character.GetGovernment.IsType('ecclesiastical_government')) )]" + } + } + + type coa_realm_tiny = button_group { + using = CoA_Realm_Defaults + + block "government_datacontext" + { + datacontext = "[Character.GetGovernment]" + } + + flowcontainer = { + direction = vertical + ignoreinvisible = yes + spacing = 2 + + icon = { + name = "crown" + texture = "gfx/interface/coat_of_arms/crown_strip_28.dds" + frame = "[Character.GetPrimaryTitle.GetTierFrame]" + framesize = { 32 22 } + + block "crown" { + visible = no + } + } + + icon = { + name = "adventurer_top_decor" + visible = "[GovernmentType.IsType('landless_adventurer_government')]" + parentanchor = hcenter + size = { 32 22 } + texture = "gfx/interface/coat_of_arms/landless_adventurer_topframe_28.dds" + } + + icon = { + name = "mercenary" + visible = "[Character.GetPrimaryTitle.IsMercenaryCompany]" + visible_at_creation = no + parentanchor = hcenter + size = { 32 22 } + texture = "gfx/interface/coat_of_arms/mercenary_topframe_28.dds" + } + + icon = { + name = "holy_order" + visible = "[Character.GetPrimaryTitle.IsHolyOrder]" + visible_at_creation = no + parentanchor = hcenter + size = { 32 22 } + texture = "gfx/interface/coat_of_arms/holyorder_topframe_28.dds" + } + + icon = { + name = "ecclesiastic_top_decor" + visible = "[And( Character.GetGovernment.IsType('ecclesiastical_government'), Not( Character.GetPrimaryTitle.HasClericalElector ) )]" + parentanchor = hcenter + size = { 32 22 } + texture = "gfx/interface/coat_of_arms/ecclesiastic_topframe_28.dds" + + block "top_decor_visible" {} + } + + icon = { + name = "cardinal_top_decor" + visible = "[And( Character.GetGovernment.IsType('ecclesiastical_government'), Character.GetPrimaryTitle.HasClericalElector )]" + parentanchor = hcenter + size = { 32 22 } + texture = "gfx/interface/coat_of_arms/cardinal_topframe_28.dds" + + block "top_decor_visible" {} + } + + widget = { + visible = "[Character.HasLandedTitles]" + size = { 32 32 } + + coa_realm_shadow = { + texture = "[GovernmentType.GetRealmFrameShadow('(int32)28')]" + size = { 32 32 } + framesize = { 32 32 } + + using = CoA_Realm_Hover_Glow + } + + coat_of_arms_icon = { + parentanchor = center + size = { 32 32 } + coat_of_arms = "[Character.GetPrimaryTitle.GetTitleCoA.GetTexture('(int32)56','(int32)56')]" + coat_of_arms_slot = "[Character.GetPrimaryTitle.GetTitleCoA.GetSlot('(int32)56','(int32)56')]" + coat_of_arms_mask = "[GovernmentType.GetRealmMask]" + coat_of_arms_offset = "[GovernmentType.GetRealmMaskOffset]" + coat_of_arms_scale = "[GovernmentType.GetRealmMaskScale]" + + block "coa_icon_additions" {} + + modify_texture = { + texture = "[GovernmentType.GetRealmMask]" + blend_mode = overlay + } + + coa_realm_overlay = { + texture = "[GovernmentType.GetRealmFrame('(int32)28')]" + size = { 32 32 } + framesize = { 32 32 } + } + + coa_realm_topframe = { + texture ="gfx/interface/coat_of_arms/topframe_28.dds" + position = { 0 -6 } + size = { 32 32 } + framesize = { 32 32 } + frame = "[Character.GetPrimaryTitle.GetTierFrame]" + } + } + } + } + } + + + ## Small Realm CoA + type coa_realm_small_crown = coa_realm_small { + blockoverride "crown" + { + visible = "[And4( Not(Character.GetPrimaryTitle.IsMercenaryCompany), Not(Character.GetPrimaryTitle.IsHolyOrder), Not(Character.GetGovernment.IsType('landless_adventurer_government')), Not(Character.GetGovernment.IsType('ecclesiastical_government')) )]" + } + } + + type coa_realm_small = button_group { + using = CoA_Realm_Defaults + + flowcontainer = { + direction = vertical + ignoreinvisible = yes + spacing = 3 + + block "government_datacontext" + { + datacontext = "[Character.GetGovernment]" + } + + icon = { + name = "crown" + parentanchor = hcenter + framesize = { 52 32 } + texture = "gfx/interface/coat_of_arms/crown_strip_44.dds" + frame = "[Character.GetPrimaryTitle.GetTierFrame]" + + block "crown" { + visible = no + } + } + + icon = { + name = "adventurer_top_decor" + visible = "[Character.GetGovernment.IsType('landless_adventurer_government')]" + parentanchor = hcenter + size = { 52 32 } + texture = "gfx/interface/coat_of_arms/landless_adventurer_topframe_44.dds" + + block "top_decor_visible" {} + } + + icon = { + name = "mercenary" + visible = "[Character.GetPrimaryTitle.IsMercenaryCompany]" + visible_at_creation = no + parentanchor = hcenter + size = { 52 32 } + texture = "gfx/interface/coat_of_arms/mercenary_topframe_44.dds" + } + + icon = { + name = "holy_order" + visible = "[Character.GetPrimaryTitle.IsHolyOrder]" + visible_at_creation = no + parentanchor = hcenter + size = { 52 32 } + texture = "gfx/interface/coat_of_arms/holyorder_topframe_44.dds" + } + + icon = { + name = "ecclesiastic_top_decor" + visible = "[And( Character.GetGovernment.IsType('ecclesiastical_government'), Not( Character.GetPrimaryTitle.HasClericalElector ) )]" + parentanchor = hcenter + size = { 52 32 } + texture = "gfx/interface/coat_of_arms/ecclesiastic_topframe_44.dds" + + block "top_decor_visible" {} + } + + icon = { + name = "cardinal_top_decor" + visible = "[And( Character.GetGovernment.IsType('ecclesiastical_government'), Character.GetPrimaryTitle.HasClericalElector )]" + parentanchor = hcenter + size = { 52 32 } + texture = "gfx/interface/coat_of_arms/cardinal_topframe_44.dds" + + block "top_decor_visible" {} + } + + widget = { + size = { 52 52 } + + coa_realm_shadow = { + texture = "[GovernmentType.GetRealmFrameShadow('(int32)44')]" + size = { 52 52 } + framesize = { 52 52 } + using = CoA_Realm_Hover_Glow + } + visible = "[Character.HasLandedTitles]" + + coat_of_arms_icon = { + parentanchor = center + size = { 52 52 } + coat_of_arms = "[Character.GetPrimaryTitle.GetTitleCoA.GetTexture('(int32)88','(int32)88')]" + coat_of_arms_slot = "[Character.GetPrimaryTitle.GetTitleCoA.GetSlot('(int32)88','(int32)88')]" + coat_of_arms_mask = "[GovernmentType.GetRealmMask]" + coat_of_arms_offset = "[GovernmentType.GetRealmMaskOffset]" + coat_of_arms_scale = "[GovernmentType.GetRealmMaskScale]" + + block "coa_icon_additions" {} + + modify_texture = { + texture = "[GovernmentType.GetRealmMask]" + blend_mode = overlay + alpha = @overlay_alpha + } + + coa_realm_overlay = { + texture = "[GovernmentType.GetRealmFrame('(int32)44')]" + size = { 52 52 } + framesize = { 52 52 } + } + + coa_realm_topframe = { + texture ="gfx/interface/coat_of_arms/topframe_44.dds" + position = { 0 -7 } + size = { 52 52 } + framesize = { 52 52 } + frame = "[Character.GetPrimaryTitle.GetTierFrame]" + } + } + } + } + } + + + ## Medium Realm CoA + type coa_realm_medium_crown = coa_realm_medium { + blockoverride "crown" + { + visible = "[And4( Not(Character.GetPrimaryTitle.IsMercenaryCompany), Not(Character.GetPrimaryTitle.IsHolyOrder), Not(Character.GetGovernment.IsType('landless_adventurer_government')), Not(Character.GetGovernment.IsType('ecclesiastical_government')) )]" + } + } + + type coa_realm_medium = button_group { + using = CoA_Realm_Defaults + + block "government_datacontext" + { + datacontext = "[Character.GetGovernment]" + } + + flowcontainer = { + direction = vertical + spacing = 3 + + ignoreinvisible = yes + + icon = { + name = "crown" + parentanchor = hcenter + texture = "gfx/interface/coat_of_arms/crown_strip_62.dds" + frame = "[Character.GetPrimaryTitle.GetTierFrame]" + framesize = { 64 40 } + + block "crown" { + visible = no + } + } + + icon = { + name = "adventurer_top_decor" + visible = "[GovernmentType.IsType('landless_adventurer_government')]" + parentanchor = hcenter + size = { 64 40 } + texture = "gfx/interface/coat_of_arms/landless_adventurer_topframe_62.dds" + } + + icon = { + name = "mercenary" + visible = "[Character.GetPrimaryTitle.IsMercenaryCompany]" + visible_at_creation = no + parentanchor = hcenter + size = { 64 40 } + texture = "gfx/interface/coat_of_arms/mercenary_topframe_62.dds" + } + + icon = { + name = "holy_order" + visible = "[Character.GetPrimaryTitle.IsHolyOrder]" + visible_at_creation = no + parentanchor = hcenter + size = { 64 40 } + texture = "gfx/interface/coat_of_arms/holyorder_topframe_62.dds" + } + + icon = { + name = "ecclesiastic_top_decor" + visible = "[And( Character.GetGovernment.IsType('ecclesiastical_government'), Not( Character.GetPrimaryTitle.HasClericalElector ) )]" + parentanchor = hcenter + size = { 64 40 } + texture = "gfx/interface/coat_of_arms/ecclesiastic_topframe_62.dds" + + block "top_decor_visible" {} + } + + icon = { + name = "cardinal_top_decor" + visible = "[And( Character.GetGovernment.IsType('ecclesiastical_government'), Character.GetPrimaryTitle.HasClericalElector )]" + parentanchor = hcenter + size = { 64 40 } + texture = "gfx/interface/coat_of_arms/cardinal_topframe_62.dds" + + block "top_decor_visible" {} + } + + widget = { + size = { 64 64 } + + coa_realm_shadow = { + texture = "[GovernmentType.GetRealmFrameShadow('(int32)62')]" + size = { 64 64 } + framesize = { 64 64 } + + using = CoA_Realm_Hover_Glow + } + + coat_of_arms_icon = { + parentanchor = center + size = { 64 64 } + + block "coa_icon_additions" {} + + block "coat_of_arms" + { + coat_of_arms = "[Character.GetPrimaryTitle.GetTitleCoA.GetTexture('(int32)124','(int32)124')]" + coat_of_arms_slot = "[Character.GetPrimaryTitle.GetTitleCoA.GetSlot('(int32)124','(int32)124')]" + } + + coat_of_arms_offset = "[GovernmentType.GetRealmMaskOffset]" + coat_of_arms_scale = "[GovernmentType.GetRealmMaskScale]" + + modify_texture = { + texture = "[GovernmentType.GetRealmMask]" + blend_mode = overlay + alpha = @overlay_alpha + } + + coa_realm_overlay = { + texture = "[GovernmentType.GetRealmFrame('(int32)62')]" + size = { 64 64 } + framesize = { 64 64 } + } + + coa_realm_topframe = { + texture ="gfx/interface/coat_of_arms/topframe_62.dds" + position = { 0 -9 } + size = { 64 64 } + framesize = { 64 64 } + } + } + } + } + } + + + ## Big Realm CoA + type coa_realm_big_crown = coa_realm_big { + blockoverride "crown" + { + visible = "[And4( Not(Character.GetPrimaryTitle.IsMercenaryCompany), Not(Character.GetPrimaryTitle.IsHolyOrder), Not(Character.GetGovernment.IsType('landless_adventurer_government')), Not(Character.GetGovernment.IsType('ecclesiastical_government')) )]" + } + } + + type coa_realm_big = button_group { + using = CoA_Realm_Defaults + + flowcontainer = { + direction = vertical + ignoreinvisible = yes + spacing = 4 + + block "government_datacontext" + { + datacontext = "[Character.GetGovernment]" + } + + icon = { + name = "crown" + parentanchor = hcenter + texture = "gfx/interface/coat_of_arms/crown_strip_86.dds" + frame = "[Character.GetPrimaryTitle.GetTierFrame]" + framesize = { 96 60 } + + block "crown" { + visible = no + } + } + + icon = { + name = "adventurer_top_decor" + visible = "[GovernmentType.IsType('landless_adventurer_government')]" + parentanchor = hcenter + size = { 96 60 } + texture = "gfx/interface/coat_of_arms/landless_adventurer_topframe_86.dds" + } + + icon = { + name = "mercenary" + visible = "[Character.GetPrimaryTitle.IsMercenaryCompany]" + visible_at_creation = no + parentanchor = hcenter + size = { 96 60 } + texture = "gfx/interface/coat_of_arms/mercenary_topframe_86.dds" + } + + icon = { + name = "holy_order" + visible = "[Character.GetPrimaryTitle.IsHolyOrder]" + visible_at_creation = no + parentanchor = hcenter + size = { 96 60 } + texture = "gfx/interface/coat_of_arms/holyorder_topframe_86.dds" + } + + icon = { + name = "ecclesiastic_top_decor" + visible = "[And( Character.GetGovernment.IsType('ecclesiastical_government'), Not( Character.GetPrimaryTitle.HasClericalElector ) )]" + parentanchor = hcenter + size = { 96 60 } + texture = "gfx/interface/coat_of_arms/ecclesiastic_topframe_86.dds" + + block "top_decor_visible" {} + } + + icon = { + name = "cardinal_top_decor" + visible = "[And( Character.GetGovernment.IsType('ecclesiastical_government'), Character.GetPrimaryTitle.HasClericalElector )]" + parentanchor = hcenter + size = { 96 60 } + texture = "gfx/interface/coat_of_arms/cardinal_topframe_86.dds" + + block "top_decor_visible" {} + } + + widget = { + size = { 96 96 } + + coa_realm_shadow = { + texture = "[GovernmentType.GetRealmFrameShadow('(int32)86')]" + size = { 96 96 } + framesize = { 96 96 } + + using = CoA_Realm_Hover_Glow + } + + coat_of_arms_icon = { + parentanchor = center + size = { 96 96 } + + block "coa_icon_additions" {} + + block "coat_of_arms" + { + coat_of_arms = "[Character.GetPrimaryTitle.GetTitleCoA.GetTexture('(int32)172','(int32)172')]" + coat_of_arms_slot = "[Character.GetPrimaryTitle.GetTitleCoA.GetSlot('(int32)172','(int32)172')]" + } + + coat_of_arms_mask = "[GovernmentType.GetRealmMask]" + coat_of_arms_offset = "[GovernmentType.GetRealmMaskOffset]" + coat_of_arms_scale = "[GovernmentType.GetRealmMaskScale]" + + modify_texture = { + texture = "[GovernmentType.GetRealmMask]" + blend_mode = overlay + alpha = @overlay_alpha + } + + coa_realm_overlay = { + texture = "[GovernmentType.GetRealmFrame('(int32)86')]" + size = { 96 96 } + framesize = { 96 96 } + } + + coa_realm_topframe = { + texture ="gfx/interface/coat_of_arms/topframe_86.dds" + position = { 0 -14 } + size = { 96 96 } + framesize = { 96 94 } + } + } + } + } + } + + ## Huge Realm CoA + type coa_realm_huge_crown = coa_realm_huge { + blockoverride "crown" + { + visible = "[And4( Not(Character.GetPrimaryTitle.IsMercenaryCompany), Not(Character.GetPrimaryTitle.IsHolyOrder), Not(Character.GetGovernment.IsType('landless_adventurer_government')), Not(Character.GetGovernment.IsType('ecclesiastical_government')) )]" + } + } + + type coa_realm_huge = button_group { + using = CoA_Realm_Defaults + + flowcontainer = { + direction = vertical + ignoreinvisible = yes + spacing = 2 + + block "government_datacontext" + { + datacontext = "[Character.GetGovernment]" + } + + icon = { + name = "crown" + parentanchor = hcenter + texture = "gfx/interface/coat_of_arms/crown_strip_115.dds" + frame = "[Character.GetPrimaryTitle.GetTierFrame]" + framesize = { 128 80 } + + block "crown" { + visible = no + } + } + + icon = { + name = "adventurer_top_decor" + visible = "[GovernmentType.IsType('landless_adventurer_government')]" + parentanchor = hcenter + size = { 128 80 } + texture = "gfx/interface/coat_of_arms/landless_adventurer_topframe_115.dds" + } + + icon = { + name = "mercenary" + visible = "[Character.GetPrimaryTitle.IsMercenaryCompany]" + parentanchor = hcenter + size = { 128 80 } + texture = "gfx/interface/coat_of_arms/mercenary_topframe_115.dds" + } + + icon = { + name = "holy_order" + visible = "[Character.GetPrimaryTitle.IsHolyOrder]" + visible_at_creation = no + parentanchor = hcenter + size = { 128 80 } + texture = "gfx/interface/coat_of_arms/holyorder_topframe_115.dds" + } + + icon = { + name = "ecclesiastic_top_decor" + visible = "[And( Character.GetGovernment.IsType('ecclesiastical_government'), Not( Character.GetPrimaryTitle.HasClericalElector ) )]" + parentanchor = hcenter + size = { 128 80 } + texture = "gfx/interface/coat_of_arms/ecclesiastic_topframe_115.dds" + + block "top_decor_visible" {} + } + + icon = { + name = "cardinal_top_decor" + visible = "[And( Character.GetGovernment.IsType('ecclesiastical_government'), Character.GetPrimaryTitle.HasClericalElector )]" + parentanchor = hcenter + size = { 128 80 } + texture = "gfx/interface/coat_of_arms/cardinal_topframe_115.dds" + + block "top_decor_visible" {} + } + + widget = { + parentanchor = hcenter + size = { 128 128 } + + coa_realm_shadow = { + texture = "[GovernmentType.GetRealmFrameShadow('(int32)115')]" + size = { 128 128 } + framesize = { 128 128 } + + using = CoA_Realm_Hover_Glow + } + + coat_of_arms_icon = { + parentanchor = center + size = { 128 128 } + coat_of_arms = "[Character.GetPrimaryTitle.GetTitleCoA.GetTexture('(int32)230','(int32)230')]" + coat_of_arms_slot = "[Character.GetPrimaryTitle.GetTitleCoA.GetSlot('(int32)230','(int32)230')]" + coat_of_arms_mask = "[GovernmentType.GetRealmMask]" + coat_of_arms_offset = "[GovernmentType.GetRealmMaskOffset]" + coat_of_arms_scale = "[GovernmentType.GetRealmMaskScale]" + + block "coa_icon_additions" {} + + modify_texture = { + texture = "[GovernmentType.GetRealmMask]" + blend_mode = overlay + alpha = @overlay_alpha + } + + coa_realm_overlay = { + texture = "[GovernmentType.GetRealmFrame('(int32)115')]" + size = { 128 128 } + framesize = { 128 128 } + } + + coa_realm_topframe = { + texture ="gfx/interface/coat_of_arms/topframe_115.dds" + position = { 0 -14 } + size = { 128 128 } + framesize = { 128 128 } + } + } + } + } + } + + # The frame around the Realm CoA texture + type coa_realm_overlay = highlight_icon { + name = "coa_overlay" + parentanchor = center + frame = "[Character.GetPrimaryTitle.GetTierFrame]" + texture = "[Character.GetGovernment.GetRealmFrame('(int32)230')]" + size = { 128 128 } + framesize = { 128 128 } + } + + type coa_realm_shadow = highlight_icon { + name = "coa_shadow" + parentanchor = center + frame = "[Character.GetPrimaryTitle.GetTierFrame]" + texture = "[Character.GetGovernment.GetRealmFrameShadow('(int32)230')]" + size = { 128 128 } + framesize = { 128 128 } + } + + type coa_realm_topframe = highlight_icon { + name = "coa_topframe" + parentanchor = center + frame = "[Character.GetPrimaryTitle.GetTierFrame]" + texture ="gfx/interface/coat_of_arms/topframe_115.dds" + size = { 128 128 } + framesize = { 128 128 } + } + + #################################### + ############## TITLES ############## + #################################### + + # Standard Ttile Coa of Arms types + + ## Tiny Title CoA + type coa_title_tiny_crown = coa_title_tiny { + blockoverride "crown" {} + } + + type coa_title_tiny = button_group { + using = CoA_Title_Defaults + + flowcontainer = { + direction = vertical + + block "position" { + position = { 0 -10 } + } + + spacing = -4 + ignoreinvisible = yes + + icon = { + name = "crown" + parentanchor = hcenter + texture = "gfx/interface/coat_of_arms/crown_strip_28.dds" + frame = "[Title.GetTierFrame]" + framesize = { 32 22 } + + block "crown" { + visible = no + } + } + + widget = { + parentanchor = hcenter + size = { 36 36 } + + coat_of_arms_icon = { + parentanchor = center + size = { 28 28 } + coat_of_arms = "[Title.GetTitleCoA.GetTexture('(int32)56','(int32)56')]" + coat_of_arms_slot = "[Title.GetTitleCoA.GetSlot('(int32)56','(int32)56')]" + coat_of_arms_mask = "gfx/interface/coat_of_arms/title_mask.dds" + coat_of_arms_offset = "[DefaultCoATitleMaskOffset]" + coat_of_arms_scale = "[DefaultCoATitleMaskScale]" + + using = CoA_Title_Hover_Glow + + block "coa_icon" {} + + coa_title_frame = { + parentanchor = center + texture = "gfx/interface/coat_of_arms/title_28.dds" + size = { 36 36 } + } + + coa_title_frame_no_holder = { + parentanchor = center + texture = "gfx/interface/coat_of_arms/title_no_holder_28.dds" + size = { 36 36 } + } + } + } + } + } + + ## Small Title CoA + type coa_title_small_crown = coa_title_small { + blockoverride "crown" {} + } + + # type coa_title_small = coa_title_tiny {} + + type coa_title_small = button_group { + using = CoA_Title_Defaults + + flowcontainer = { + direction = vertical + spacing = -3 + ignoreinvisible = yes + + icon = { + name = "crown" + parentanchor = hcenter + texture = "gfx/interface/coat_of_arms/crown_strip_44.dds" + frame = "[Title.GetTierFrame]" + framesize = { 52 32 } + + block "crown" { + visible = no + } + } + + widget = { + parentanchor = hcenter + size = { 52 52 } + + coat_of_arms_icon = { + parentanchor = center + size = { 44 44 } + coat_of_arms = "[Title.GetTitleCoA.GetTexture('(int32)88','(int32)88')]" + coat_of_arms_slot = "[Title.GetTitleCoA.GetSlot('(int32)88','(int32)88')]" + coat_of_arms_mask = "gfx/interface/coat_of_arms/title_mask.dds" + coat_of_arms_offset = "[DefaultCoATitleMaskOffset]" + coat_of_arms_scale = "[DefaultCoATitleMaskScale]" + + using = CoA_Title_Hover_Glow + + coa_title_frame = { + parentanchor = center + texture = "gfx/interface/coat_of_arms/title_44.dds" + size = { 52 52 } + } + + coa_title_frame_no_holder = { + parentanchor = center + texture = "gfx/interface/coat_of_arms/title_no_holder_44.dds" + size = { 56 56 } + } + } + } + } + } + + ## Medium Title CoA + type coa_title_medium_crown = coa_title_medium { + blockoverride "crown" {} + } + + type coa_title_medium = button_group { + using = CoA_Title_Defaults + + flowcontainer = { + direction = vertical + spacing = -3 + ignoreinvisible = yes + + icon = { + name = "crown" + parentanchor = hcenter + texture = "gfx/interface/coat_of_arms/crown_strip_62.dds" + frame = "[Title.GetTierFrame]" + framesize = { 64 40 } + + block "crown" { + visible = no + } + } + + widget = { + parentanchor = hcenter + size = { 72 72 } + + coat_of_arms_icon = { + parentanchor = center + size = { 62 62 } + coat_of_arms = "[Title.GetTitleCoA.GetTexture('(int32)124','(int32)124')]" + coat_of_arms_slot = "[Title.GetTitleCoA.GetSlot('(int32)124','(int32)124')]" + coat_of_arms_mask = "gfx/interface/coat_of_arms/title_mask.dds" + coat_of_arms_offset = "[DefaultCoATitleMaskOffset]" + coat_of_arms_scale = "[DefaultCoATitleMaskScale]" + + using = CoA_Title_Hover_Glow + + coa_title_frame = { + parentanchor = center + texture = "gfx/interface/coat_of_arms/title_62.dds" + size = { 72 72 } + } + + coa_title_frame_no_holder = { + parentanchor = center + texture = "gfx/interface/coat_of_arms/title_no_holder_62.dds" + size = { 80 80 } + } + } + } + } + } + + ## Big Title CoA + type coa_title_big_crown = coa_title_big { + blockoverride "crown" {} + } + + type coa_title_big = button_group { + using = CoA_Title_Defaults + + flowcontainer = { + direction = vertical + spacing = -3 + ignoreinvisible = yes + + icon = { + name = "crown" + parentanchor = hcenter + texture = "gfx/interface/coat_of_arms/crown_strip_115.dds" + frame = "[Title.GetTierFrame]" + framesize = { 128 80 } + + block "crown" { + visible = no + } + } + + widget = { + parentanchor = hcenter + size = { 96 96 } + + coat_of_arms_icon = { + parentanchor = center + size = { 86 86 } + coat_of_arms = "[Title.GetTitleCoA.GetTexture('(int32)172','(int32)172')]" + coat_of_arms_slot = "[Title.GetTitleCoA.GetSlot('(int32)172','(int32)172')]" + coat_of_arms_mask = "gfx/interface/coat_of_arms/title_mask.dds" + coat_of_arms_offset = "[DefaultCoATitleMaskOffset]" + coat_of_arms_scale = "[DefaultCoATitleMaskScale]" + + using = CoA_Title_Hover_Glow + + coa_title_frame = { + texture = "gfx/interface/coat_of_arms/title_86.dds" + size = { 96 96 } + } + + coa_title_frame_no_holder = { + texture = "gfx/interface/coat_of_arms/title_no_holder_86.dds" + size = { 104 104 } + } + } + } + } + } + + ## The frames around the Title CoA texture + type coa_title_frame = highlight_icon { + name = "coa_title_frame" + parentanchor = center + texture = "gfx/interface/coat_of_arms/title_86.dds" + } + + type coa_title_frame_no_holder = highlight_icon { + name = "coa_title_frame_noholder" + visible = "[Not(Title.HasHolder)]" + parentanchor = center + texture = "gfx/interface/coat_of_arms/title_no_holder_86.dds" + } + + #################################### + ############## DYNASTY ############# + #################################### + + type coa_lowborn_icon = vbox + { + icon = { + block "icon_size" + { + size = { 62 62 } + } + texture = "gfx/interface/coat_of_arms/lowborn.dds" + block "lowborn_tooltip" { + tooltip = "[lowborn|E]" + } + } + } + + type coa_dynasty_widget = button_group + { + visible = "[Dynasty.IsValid]" + } + + type coa_dynasty_lowborn_widget = widget + { + visible = "[Not( Dynasty.IsValid )]" + coa_lowborn_icon = {} + } + + type coa_dynasty_tiny = widget + { + size = { 48 48 } + + hbox = { + margin = { 4 4 } + + coa_dynasty_lowborn_widget = { + size = { 40 40 } + + blockoverride "icon_size" + { + size = { 28 28 } + } + } + + coa_dynasty_widget = { + size = { 40 40 } + using = CoA_Dynasty_Defaults + + coat_of_arms_icon = { + parentanchor = center + size = { 28 28 } + coat_of_arms = "[Dynasty.GetDynastyCoA.GetTexture('(int32)56','(int32)56')]" + coat_of_arms_slot = "[Dynasty.GetDynastyCoA.GetSlot('(int32)56','(int32)56')]" + coat_of_arms_mask = "[Dynasty.GetCulture.GetCultureDynastyCoAMask]" + coat_of_arms_offset = "[Dynasty.GetCulture.GetCultureDynastyCoAOffset]" + coat_of_arms_scale = "[Dynasty.GetCulture.GetCultureDynastyCoAScale]" + + modify_texture = { + texture = "gfx/interface/coat_of_arms/coa_overlay.dds" + blend_mode = overlay + alpha = @overlay_alpha + } + } + + coa_dynasty_frame = { + size = { 40 40 } + texture = "[Dynasty.GetCulture.GetCultureDynastyCoAFrame]" + } + } + } + } + + type coa_dynasty_small = widget + { + size = { 64 64 } + + hbox = { + margin = { 4 4 } + + coa_dynasty_lowborn_widget = { + size = { 56 56 } + blockoverride "icon_size" + { + size = { 44 44 } + } + } + + coa_dynasty_widget = { + size = { 56 56 } + using = CoA_Dynasty_Defaults + + coat_of_arms_icon = { + parentanchor = center + size = { 44 44 } + coat_of_arms = "[Dynasty.GetDynastyCoA.GetTexture('(int32)88','(int32)88')]" + coat_of_arms_slot = "[Dynasty.GetDynastyCoA.GetSlot('(int32)88','(int32)88')]" + coat_of_arms_mask = "[Dynasty.GetCulture.GetCultureDynastyCoAMask]" + coat_of_arms_offset = "[Dynasty.GetCulture.GetCultureDynastyCoAOffset]" + coat_of_arms_scale = "[Dynasty.GetCulture.GetCultureDynastyCoAScale]" + + modify_texture = { + texture = "gfx/interface/coat_of_arms/coa_overlay.dds" + blend_mode = overlay + alpha = @overlay_alpha + } + } + + coa_dynasty_frame = { + size = { 56 56 } + texture = "[Dynasty.GetCulture.GetCultureDynastyCoAFrame]" + } + } + } + } + + type coa_dynasty_medium = widget + { + size = { 96 96 } + + coa_dynasty_lowborn_widget = { + parentanchor = center + size = { 80 80 } + blockoverride "icon_size" + { + size = { 64 64 } + } + } + + coa_dynasty_widget = { + size = { 80 80 } + using = CoA_Dynasty_Defaults + parentanchor = center + + coat_of_arms_icon = { + parentanchor = center + size = { 72 72 } + coat_of_arms = "[Dynasty.GetDynastyCoA.GetTexture('(int32)124','(int32)124')]" + coat_of_arms_slot = "[Dynasty.GetDynastyCoA.GetSlot('(int32)124','(int32)124')]" + coat_of_arms_mask = "[Dynasty.GetCulture.GetCultureDynastyCoAMask]" + coat_of_arms_offset = "[Dynasty.GetCulture.GetCultureDynastyCoAOffset]" + coat_of_arms_scale = "[Dynasty.GetCulture.GetCultureDynastyCoAScale]" + + modify_texture = { + texture = "gfx/interface/coat_of_arms/coa_overlay.dds" + blend_mode = overlay + alpha = @overlay_alpha + } + } + + coa_dynasty_frame = { + size = { 96 96 } + texture = "[Dynasty.GetCulture.GetCultureDynastyCoAFrame]" + } + } + } + + type coa_dynasty_big = widget + { + size = { 120 120 } + + hbox = { + margin = { 3 5 } + + coa_dynasty_lowborn_widget = { + size = { 112 112 } + blockoverride "icon_size" + { + size = { 86 86 } + } + } + + coa_dynasty_widget = { + size = { 112 112 } + using = CoA_Dynasty_Defaults + + coat_of_arms_icon = { + parentanchor = center + size = { 86 86 } + coat_of_arms = "[Dynasty.GetDynastyCoA.GetTexture('(int32)172','(int32)172')]" + coat_of_arms_slot = "[Dynasty.GetDynastyCoA.GetSlot('(int32)172','(int32)172')]" + coat_of_arms_mask = "[Dynasty.GetCulture.GetCultureDynastyCoAMask]" + coat_of_arms_offset = "[Dynasty.GetCulture.GetCultureDynastyCoAOffset]" + coat_of_arms_scale = "[Dynasty.GetCulture.GetCultureDynastyCoAScale]" + + modify_texture = { + texture = "gfx/interface/coat_of_arms/coa_overlay.dds" + blend_mode = overlay + alpha = @overlay_alpha + } + } + + coa_dynasty_frame = { + size = { 112 112 } + texture = "[Dynasty.GetCulture.GetCultureDynastyCoAFrame]" + } + } + } + } + + type coa_dynasty_huge = widget + { + size = { 172 172 } + + coa_dynasty_lowborn_widget = { + parentanchor = center + size = { 156 156 } + blockoverride "icon_size" + { + size = { 112 112 } + } + } + + coa_dynasty_widget = { + parentanchor = center + size = { 152 152 } + using = CoA_Dynasty_Defaults + + coat_of_arms_icon = { + parentanchor = center + size = { 120 120 } + coat_of_arms = "[Dynasty.GetDynastyCoA.GetTexture('(int32)230','(int32)230')]" + coat_of_arms_slot = "[Dynasty.GetDynastyCoA.GetSlot('(int32)230','(int32)230')]" + coat_of_arms_mask = "[Dynasty.GetCulture.GetCultureDynastyCoAMask]" + coat_of_arms_offset = "[Dynasty.GetCulture.GetCultureDynastyCoAOffset]" + coat_of_arms_scale = "[Dynasty.GetCulture.GetCultureDynastyCoAScale]" + + modify_texture = { + texture = "gfx/interface/coat_of_arms/coa_overlay.dds" + blend_mode = overlay + alpha = @overlay_alpha + } + } + + coa_dynasty_frame = { + texture = "[Dynasty.GetCulture.GetCultureDynastyCoAFrame]" + size = { 172 172 } + } + } + } + + type coa_dynasty_frame = highlight_icon { + name = "house_frame" + parentanchor = center + + block "coa_dynasty_frame_size" {} + + block "frame_override" + { + frame = "[Dynasty.GetPrestigeFrame]" + } + texture = "[Dynasty.GetCulture.GetCultureDynastyCoAFrame]" + framesize = { 160 160 } + size = { 172 172 } + } + + #################################### + ############### HOUSE ############## + #################################### + + type coa_house_widget = button_group + { + layoutpolicy_horizontal = expanding + visible = "[DynastyHouse.IsValid]" + } + + + ## House relation icon + # + # Show the House Relation level between the players house, + # and this house. + # + type icon_house_relation = icon { + visible = "[DynastyHouse.HasHouseRelationWith( GetPlayer.GetHouse )]" + size = { 16 16 } + + texture = "[DynastyHouse.GetHouseRelationWith( GetPlayer.GetHouse ).GetLevel.GetFlatIcon]" + } + + + type coa_house_lowborn_widget = widget + { + layoutpolicy_horizontal = shrinking + visible = "[Not( DynastyHouse.IsValid )]" + coa_lowborn_icon = {} + } + + type coa_house_tiny = widget + { + size = { 48 48 } + + hbox = { + margin = { 4 4 } + + block "culture_template_data_datacontext" + { + datacontext = "[DynastyHouse.GetCulture.GetTemplateData]" + } + + coa_house_lowborn_widget = { + size = { 40 40 } + + blockoverride "icon_size" + { + size = { 28 28 } + } + } + + coa_house_widget = { + size = { 40 40 } + using = CoA_House_Defaults + + coat_of_arms_icon = { + parentanchor = center + size = { 28 28 } + coat_of_arms = "[DynastyHouse.GetHouseCoA.GetTexture('(int32)56','(int32)56')]" + coat_of_arms_slot = "[DynastyHouse.GetHouseCoA.GetSlot('(int32)56','(int32)56')]" + coat_of_arms_mask = "[CultureTemplateData.GetCultureHouseCoAMask]" + coat_of_arms_offset = "[CultureTemplateData.GetCultureHouseCoAOffset]" + coat_of_arms_scale = "[CultureTemplateData.GetCultureHouseCoAScale]" + + modify_texture = { + texture = "gfx/interface/coat_of_arms/coa_overlay.dds" + blend_mode = overlay + alpha = @overlay_alpha + } + } + + coa_house_frame = { + size = { 40 40 } + texture = "[CultureTemplateData.GetCultureHouseCoAFrame]" + } + } + } + } + + type coa_house_microscopic = widget + { + size = { 24 24 } + + hbox = { + + block "culture_template_data_datacontext" + { + datacontext = "[DynastyHouse.GetCulture.GetTemplateData]" + } + + coa_house_lowborn_widget = { + size = { 18 18 } + blockoverride "icon_size" + { + size = { 16 16 } + } + } + + coa_house_widget = { + size = { 24 24 } + using = CoA_House_Defaults + + coat_of_arms_icon = { + parentanchor = center + size = { 16 16 } + coat_of_arms = "[DynastyHouse.GetHouseCoA.GetTexture('(int32)56','(int32)56')]" + coat_of_arms_slot = "[DynastyHouse.GetHouseCoA.GetSlot('(int32)56','(int32)56')]" + coat_of_arms_mask = "[CultureTemplateData.GetCultureHouseCoAMask]" + coat_of_arms_offset = "[CultureTemplateData.GetCultureHouseCoAOffset]" + coat_of_arms_scale = "[CultureTemplateData.GetCultureHouseCoAScale]" + + modify_texture = { + texture = "gfx/interface/coat_of_arms/coa_overlay.dds" + blend_mode = overlay + alpha = @overlay_alpha + } + } + + coa_house_frame = { + size = { 24 24 } + texture = "[CultureTemplateData.GetCultureHouseCoAFrame]" + } + } + } + } + type coa_house_small = widget + { + size = { 64 64 } + + hbox = { + margin = { 4 4 } + + block "culture_template_data_datacontext" + { + datacontext = "[DynastyHouse.GetCulture.GetTemplateData]" + } + + coa_house_lowborn_widget = { + size = { 56 56 } + blockoverride "icon_size" + { + size = { 44 44 } + } + } + + coa_house_widget = { + size = { 56 56 } + using = CoA_House_Defaults + + coat_of_arms_icon = { + parentanchor = center + size = { 44 44 } + coat_of_arms = "[DynastyHouse.GetHouseCoA.GetTexture('(int32)88','(int32)88')]" + coat_of_arms_slot = "[DynastyHouse.GetHouseCoA.GetSlot('(int32)88','(int32)88')]" + coat_of_arms_mask = "[CultureTemplateData.GetCultureHouseCoAMask]" + coat_of_arms_offset = "[CultureTemplateData.GetCultureHouseCoAOffset]" + coat_of_arms_scale = "[CultureTemplateData.GetCultureHouseCoAScale]" + + modify_texture = { + texture = "gfx/interface/coat_of_arms/coa_overlay.dds" + blend_mode = overlay + alpha = @overlay_alpha + } + } + + coa_house_frame = { + size = { 56 56 } + texture = "[CultureTemplateData.GetCultureHouseCoAFrame]" + } + } + } + } + + type coa_house_medium = widget + { + size = { 88 88 } + + hbox = { + margin = { 4 4 } + + block "culture_template_data_datacontext" + { + datacontext = "[DynastyHouse.GetCulture.GetTemplateData]" + } + + coa_house_lowborn_widget = { + size = { 80 80 } + blockoverride "icon_size" + { + size = { 64 64 } + } + } + + coa_house_widget = { + size = { 80 80 } + using = CoA_House_Defaults + + coat_of_arms_icon = { + parentanchor = center + size = { 64 64 } + coat_of_arms = "[DynastyHouse.GetHouseCoA.GetTexture('(int32)124','(int32)124')]" + coat_of_arms_slot = "[DynastyHouse.GetHouseCoA.GetSlot('(int32)124','(int32)124')]" + coat_of_arms_mask = "[CultureTemplateData.GetCultureHouseCoAMask]" + coat_of_arms_offset = "[CultureTemplateData.GetCultureHouseCoAOffset]" + coat_of_arms_scale = "[CultureTemplateData.GetCultureHouseCoAScale]" + + + modify_texture = { + texture = "gfx/interface/coat_of_arms/coa_overlay.dds" + blend_mode = overlay + alpha = @overlay_alpha + } + } + + coa_house_frame = { + size = { 80 80 } + texture = "[CultureTemplateData.GetCultureHouseCoAFrame]" + } + } + } + } + + type coa_house_big = widget + { + size = { 120 120 } + + hbox = { + margin = { 3 5 } + + block "culture_template_data_datacontext" + { + datacontext = "[DynastyHouse.GetCulture.GetTemplateData]" + } + + coa_house_lowborn_widget = { + size = { 112 112 } + blockoverride "icon_size" + { + size = { 86 86 } + } + } + + coa_house_widget = { + size = { 112 112 } + using = CoA_House_Defaults + + coat_of_arms_icon = { + parentanchor = center + size = { 86 86 } + coat_of_arms = "[DynastyHouse.GetHouseCoA.GetTexture('(int32)172','(int32)172')]" + coat_of_arms_slot = "[DynastyHouse.GetHouseCoA.GetSlot('(int32)172','(int32)172')]" + coat_of_arms_mask = "[CultureTemplateData.GetCultureHouseCoAMask]" + coat_of_arms_offset = "[CultureTemplateData.GetCultureHouseCoAOffset]" + coat_of_arms_scale = "[CultureTemplateData.GetCultureHouseCoAScale]" + + modify_texture = { + texture = "gfx/interface/coat_of_arms/coa_overlay.dds" + blend_mode = overlay + alpha = @overlay_alpha + } + } + + coa_house_frame = { + size = { 112 112 } + texture = "[CultureTemplateData.GetCultureHouseCoAFrame]" + } + } + } + } + + type coa_house_huge = widget + { + size = { 160 160 } + + hbox = { + margin = { 3 5 } + + block "culture_template_data_datacontext" + { + datacontext = "[DynastyHouse.GetCulture.GetTemplateData]" + } + + coa_house_lowborn_widget = { + size = { 156 156 } + blockoverride "icon_size" + { + size = { 120 120 } + } + } + + coa_house_widget = { + size = { 156 156 } + using = CoA_House_Defaults + + coat_of_arms_icon = { + parentanchor = center + size = { 120 120 } + coat_of_arms = "[DynastyHouse.GetHouseCoA.GetTexture('(int32)230','(int32)230')]" + coat_of_arms_slot = "[DynastyHouse.GetHouseCoA.GetSlot('(int32)230','(int32)230')]" + coat_of_arms_mask = "[CultureTemplateData.GetCultureHouseCoAMask]" + coat_of_arms_offset = "[CultureTemplateData.GetCultureHouseCoAOffset]" + coat_of_arms_scale = "[CultureTemplateData.GetCultureHouseCoAScale]" + + + modify_texture = { + texture = "gfx/interface/coat_of_arms/coa_overlay.dds" + blend_mode = overlay + alpha = @overlay_alpha + } + } + + coa_house_frame = { + texture = "[CultureTemplateData.GetCultureHouseCoAFrame]" + size = { 156 156 } + } + + block "house_relation_icon" + { + icon_house_relation = { + parentanchor = left|bottom + position = { 16 -16 } + size = { 32 32 } + } + } + } + } + } + + # Frame used at the front of all House CoAs + type coa_house_frame = highlight_icon { + name = "house_frame" + parentanchor = center + + block "frame_override" + { + frame = "[DynastyHouse.GetDynasty.GetPrestigeFrame]" + } + + texture = "[CultureTemplateData.GetCultureHouseCoAFrame]" + framesize = { 160 160 } + size = { 156 156 } + } + + #################################### + ########## CONFEDERATION ########### + #################################### + + type coa_confederation_frame = icon { + name = "coa_confederation_frame" + parentanchor = center + texture = "gfx/interface/coat_of_arms/title_86.dds" + } + + type coa_confederation_tiny = button_group { + visible = "[Confederation.IsValid]" + using = CoA_Confederation_Defaults + + widget = { + parentanchor = hcenter + size = { 36 36 } + + coat_of_arms_icon = { + parentanchor = center + size = { 28 28 } + coat_of_arms = "[Confederation.GetConfederationCoA.GetTexture('(int32)56','(int32)56')]" + coat_of_arms_slot = "[Confederation.GetConfederationCoA.GetSlot('(int32)56','(int32)56')]" + coat_of_arms_mask = "gfx/interface/coat_of_arms/title_mask.dds" + coat_of_arms_offset = "[DefaultCoATitleMaskOffset]" + coat_of_arms_scale = "[DefaultCoATitleMaskScale]" + + block "glow" { + using = CoA_Confederation_Hover_Glow + } + + modify_texture = { + texture = "gfx/interface/coat_of_arms/coa_overlay.dds" + blend_mode = overlay + alpha = @overlay_alpha + } + + coa_confederation_frame = { + parentanchor = center + texture = "gfx/interface/coat_of_arms/title_44.dds" + size = { 36 36 } + } + } + } + } + + type coa_confederation_microscopic = button_group { + visible = "[Confederation.IsValid]" + size = { 24 24 } + + using = CoA_Confederation_Defaults + + coat_of_arms_icon = { + parentanchor = center + size = { 18 18 } + coat_of_arms = "[Confederation.GetConfederationCoA.GetTexture('(int32)56','(int32)56')]" + coat_of_arms_slot = "[Confederation.GetConfederationCoA.GetSlot('(int32)56','(int32)56')]" + coat_of_arms_mask = "gfx/interface/coat_of_arms/title_mask.dds" + coat_of_arms_offset = "[DefaultCoATitleMaskOffset]" + coat_of_arms_scale = "[DefaultCoATitleMaskScale]" + + block "glow" { + using = CoA_Confederation_Hover_Glow + } + + modify_texture = { + texture = "gfx/interface/coat_of_arms/coa_overlay.dds" + blend_mode = overlay + alpha = @overlay_alpha + } + + coa_confederation_frame = { + size = { 18 18 } + } + } + } + + type coa_confederation_small = button_group { + visible = "[Confederation.IsValid]" + size = { 52 52 } + + using = CoA_Confederation_Defaults + + coat_of_arms_icon = { + parentanchor = center + size = { 44 44 } + coat_of_arms = "[Confederation.GetConfederationCoA.GetTexture('(int32)88','(int32)88')]" + coat_of_arms_slot = "[Confederation.GetConfederationCoA.GetSlot('(int32)88','(int32)88')]" + coat_of_arms_mask = "gfx/interface/coat_of_arms/title_mask.dds" + coat_of_arms_offset = "[DefaultCoATitleMaskOffset]" + coat_of_arms_scale = "[DefaultCoATitleMaskScale]" + + block "glow" { + using = CoA_Confederation_Hover_Glow + } + + modify_texture = { + texture = "gfx/interface/coat_of_arms/coa_overlay.dds" + blend_mode = overlay + alpha = @overlay_alpha + } + + coa_confederation_frame = { + parentanchor = center + texture = "gfx/interface/coat_of_arms/title_44.dds" + size = { 52 52 } + } + } + } + + type coa_confederation_medium = button_group { + visible = "[Confederation.IsValid]" + size = { 72 72 } + + using = CoA_Confederation_Defaults + + coat_of_arms_icon = { + parentanchor = center + size = { 62 62 } + coat_of_arms = "[Confederation.GetConfederationCoA.GetTexture('(int32)124','(int32)124')]" + coat_of_arms_slot = "[Confederation.GetConfederationCoA.GetSlot('(int32)124','(int32)124')]" + coat_of_arms_mask = "gfx/interface/coat_of_arms/title_mask.dds" + coat_of_arms_offset = "[DefaultCoATitleMaskOffset]" + coat_of_arms_scale = "[DefaultCoATitleMaskScale]" + + block "glow" { + using = CoA_Confederation_Hover_Glow + } + + modify_texture = { + texture = "gfx/interface/coat_of_arms/coa_overlay.dds" + blend_mode = overlay + alpha = @overlay_alpha + } + + coa_confederation_frame = { + parentanchor = center + texture = "gfx/interface/coat_of_arms/title_62.dds" + size = { 72 72 } + } + } + } + + type coa_confederation_big = button_group { + visible = "[Confederation.IsValid]" + size = { 96 96 } + + using = CoA_Confederation_Defaults + + coat_of_arms_icon = { + parentanchor = center + size = { 86 86 } + coat_of_arms = "[Confederation.GetConfederationCoA.GetTexture('(int32)172','(int32)172')]" + coat_of_arms_slot = "[Confederation.GetConfederationCoA.GetSlot('(int32)172','(int32)172')]" + coat_of_arms_mask = "gfx/interface/coat_of_arms/title_mask.dds" + coat_of_arms_offset = "[DefaultCoATitleMaskOffset]" + coat_of_arms_scale = "[DefaultCoATitleMaskScale]" + + block "glow" { + using = CoA_Confederation_Hover_Glow + } + + modify_texture = { + texture = "gfx/interface/coat_of_arms/coa_overlay.dds" + blend_mode = overlay + alpha = @overlay_alpha + } + + coa_confederation_frame = { + parentanchor = center + texture = "gfx/interface/coat_of_arms/title_86.dds" + size = { 96 96 } + } + } + } + + type coa_confederation_huge = button_group { + visible = "[Confederation.IsValid]" + size = { 115 115 } + + using = CoA_Confederation_Defaults + + coat_of_arms_icon = { + parentanchor = center + size = { 115 115 } + coat_of_arms = "[Confederation.GetConfederationCoA.GetTexture('(int32)230','(int32)230')]" + coat_of_arms_slot = "[Confederation.GetConfederationCoA.GetSlot('(int32)230','(int32)230')]" + coat_of_arms_mask = "gfx/interface/coat_of_arms/title_mask.dds" + coat_of_arms_offset = "[DefaultCoATitleMaskOffset]" + coat_of_arms_scale = "[DefaultCoATitleMaskScale]" + + block "glow" { + using = CoA_Confederation_Hover_Glow + } + + modify_texture = { + texture = "gfx/interface/coat_of_arms/coa_overlay.dds" + blend_mode = overlay + alpha = @overlay_alpha + } + + coa_confederation_frame = { + parentanchor = center + size = { 115 115 } + } + } + } + + type coa_bloc_microscopic = button_group { + visible = "[Confederation.IsValid]" + size = { 24 24 } + + using = CoA_Confederation_Defaults + + coa_confederation_frame = { + parentanchor = center + texture = "gfx/interface/coat_of_arms/frames/bloc_frame.dds" + size = { 24 24 } + position = { 2 0 } + } + + coat_of_arms_icon = { + parentanchor = center + size = { 24 24 } + coat_of_arms = "[Confederation.GetConfederationCoA.GetTexture('(int32)56','(int32)56')]" + coat_of_arms_slot = "[Confederation.GetConfederationCoA.GetSlot('(int32)56','(int32)56')]" + coat_of_arms_mask = "gfx/interface/coat_of_arms/frames/bloc_frame_mask.dds" + coat_of_arms_offset = { -0.02 -0.01 } + coat_of_arms_scale = { 0.8 0.8 } + + block "glow" { + using = CoA_Bloc_Hover_Glow + } + + modify_texture = { + texture = "gfx/interface/coat_of_arms/coa_overlay.dds" + blend_mode = overlay + alpha = @overlay_alpha + } + } + } + + type coa_bloc_tiny = button_group { + visible = "[Confederation.IsValid]" + size = { 36 36 } + + using = CoA_Confederation_Defaults + + coa_confederation_frame = { + parentanchor = center + texture = "gfx/interface/coat_of_arms/frames/bloc_frame.dds" + size = { 36 36 } + position = { 2 0 } + } + + coat_of_arms_icon = { + parentanchor = center + size = { 36 36 } + coat_of_arms = "[Confederation.GetConfederationCoA.GetTexture('(int32)88','(int32)88')]" + coat_of_arms_slot = "[Confederation.GetConfederationCoA.GetSlot('(int32)88','(int32)88')]" + coat_of_arms_mask = "gfx/interface/coat_of_arms/frames/bloc_frame_mask.dds" + coat_of_arms_offset = { -0.02 -0.01 } + coat_of_arms_scale = { 0.8 0.8 } + + block "glow" { + using = CoA_Bloc_Hover_Glow + } + + modify_texture = { + texture = "gfx/interface/coat_of_arms/coa_overlay.dds" + blend_mode = overlay + alpha = @overlay_alpha + } + } + } + + type coa_bloc_small = button_group { + visible = "[Confederation.IsValid]" + size = { 52 52 } + + using = CoA_Confederation_Defaults + + coa_confederation_frame = { + parentanchor = center + texture = "gfx/interface/coat_of_arms/frames/bloc_frame.dds" + size = { 52 52 } + position = { 2 0 } + } + + coat_of_arms_icon = { + parentanchor = center + size = { 52 52 } + coat_of_arms = "[Confederation.GetConfederationCoA.GetTexture('(int32)88','(int32)88')]" + coat_of_arms_slot = "[Confederation.GetConfederationCoA.GetSlot('(int32)88','(int32)88')]" + coat_of_arms_mask = "gfx/interface/coat_of_arms/frames/bloc_frame_mask.dds" + coat_of_arms_offset = { -0.02 -0.01 } + coat_of_arms_scale = { 0.8 0.8 } + + block "glow" { + using = CoA_Bloc_Hover_Glow + } + + modify_texture = { + texture = "gfx/interface/coat_of_arms/coa_overlay.dds" + blend_mode = overlay + alpha = @overlay_alpha + } + } + } + + type coa_bloc_medium = button_group { + visible = "[Confederation.IsValid]" + size = { 72 72 } + + using = CoA_Confederation_Defaults + + coa_confederation_frame = { + parentanchor = center + texture = "gfx/interface/coat_of_arms/frames/bloc_frame.dds" + size = { 72 72 } + position = { 2 0 } + } + + coat_of_arms_icon = { + parentanchor = center + size = { 72 72 } + coat_of_arms = "[Confederation.GetConfederationCoA.GetTexture('(int32)124','(int32)124')]" + coat_of_arms_slot = "[Confederation.GetConfederationCoA.GetSlot('(int32)124','(int32)124')]" + coat_of_arms_mask = "gfx/interface/coat_of_arms/frames/bloc_frame_mask.dds" + coat_of_arms_offset = { -0.02 -0.01 } + coat_of_arms_scale = { 0.8 0.8 } + + block "glow" { + using = CoA_Bloc_Hover_Glow + } + + modify_texture = { + texture = "gfx/interface/coat_of_arms/coa_overlay.dds" + blend_mode = overlay + alpha = @overlay_alpha + } + } + } + + type coa_bloc_big = button_group { + visible = "[Confederation.IsValid]" + size = { 96 96 } + + using = CoA_Confederation_Defaults + + coa_confederation_frame = { + parentanchor = center + texture = "gfx/interface/coat_of_arms/frames/bloc_frame.dds" + size = { 86 86 } + position = { 2 0 } + } + + coat_of_arms_icon = { + parentanchor = center + size = { 86 86 } + coat_of_arms = "[Confederation.GetConfederationCoA.GetTexture('(int32)124','(int32)124')]" + coat_of_arms_slot = "[Confederation.GetConfederationCoA.GetSlot('(int32)124','(int32)124')]" + coat_of_arms_mask = "gfx/interface/coat_of_arms/frames/bloc_frame_mask.dds" + coat_of_arms_offset = { -0.02 -0.01 } + coat_of_arms_scale = { 0.8 0.8 } + + block "glow" { + using = CoA_Bloc_Hover_Glow + } + + modify_texture = { + texture = "gfx/interface/coat_of_arms/coa_overlay.dds" + blend_mode = overlay + alpha = @overlay_alpha + } + } + } + + #################################### + ############# SAVEGAME ############# + #################################### + + type coa_savegame = button_group { + alwaystransparent = yes + + flowcontainer = { + direction = vertical + ignoreinvisible = yes + + icon = { + name = "crown" + visible = "[SaveGameItem.HasCoatOfArms]" + parentanchor = hcenter + texture = "gfx/interface/coat_of_arms/crown_strip_44.dds" + frame = "[SaveGameItem.GetPlayerTier]" + framesize = { 52 32 } + } + + widget = { + size = { 52 52 } + visible = "[SaveGameItem.HasCoatOfArms]" + + coa_realm_shadow = { + texture = "[SaveGameItem.GetPlayerGovernment.GetRealmFrameShadow('(int32)44')]" + size = { 52 52 } + framesize = { 52 52 } + frame = 1 + } + + coat_of_arms_icon = { + parentanchor = center + size = { 52 52 } + coat_of_arms = "[SaveGameItem.GetCoatOfArms.GetTexture('(int32)88','(int32)88')]" + coat_of_arms_slot = "[SaveGameItem.GetCoatOfArms.GetSlot('(int32)88','(int32)88')]" + coat_of_arms_mask = "[SaveGameItem.GetPlayerGovernment.GetRealmMask]" + coat_of_arms_offset = "[SaveGameItem.GetPlayerGovernment.GetRealmMaskOffset]" + coat_of_arms_scale = "[SaveGameItem.GetPlayerGovernment.GetRealmMaskScale]" + + modify_texture = { + texture = "[SaveGameItem.GetPlayerGovernment.GetRealmMask]" + blend_mode = overlay + alpha = @overlay_alpha + } + + coa_realm_overlay = { + texture = "[SaveGameItem.GetPlayerGovernment.GetRealmFrame('(int32)44')]" + frame = "[SaveGameItem.GetPlayerTier]" + framesize = { 52 52 } + size = { 52 52 } + } + + coa_realm_topframe = { + texture ="gfx/interface/coat_of_arms/topframe_44.dds" + frame = "[SaveGameItem.GetPlayerTier]" + framesize = { 52 52 } + position = { 0 -7 } + size = { 52 52 } + } + } + } + + widget = { + size = { 52 52 } + visible = "[Not( SaveGameItem.HasCoatOfArms )]" + + icon = { + size = { 52 52 } + texture = "gfx/interface/_default_icon.dds" + } + } + } + } + + type coa_savegame_house = container { + + coat_of_arms_icon = { + size = { 44 44 } + parentanchor = center + coat_of_arms = "[SaveGameItem.GetHouseCoatOfArms.GetTexture('(int32)88','(int32)88')]" + coat_of_arms_slot = "[SaveGameItem.GetHouseCoatOfArms.GetSlot('(int32)88','(int32)88')]" + coat_of_arms_mask = "[SaveGameItem.GetSaveGameItemHouseCoAMask]" + coat_of_arms_offset = "[SaveGameItem.GetSaveGameItemHouseCoAOffset]" + coat_of_arms_scale = "[SaveGameItem.GetSaveGameItemHouseCoAScale]" + + modify_texture = { + texture = "gfx/interface/coat_of_arms/coa_overlay.dds" + blend_mode = overlay + alpha = 0.4 + } + } + + coa_house_frame = { + size = { 56 56 } + parentanchor = center + frame = "[SaveGameItem.GetDynastyFrame]" + texture = "[SaveGameItem.GetSaveGameItemHouseCoAFrame]" + } + } + + #################################### + ############# BOOKMARK ############# + #################################### + + type coa_dynasty_bookmark = button_group { + + block "character" { + onclick = "[GameSetup.SetSelectedCharacter( BookmarkCharacter.Self )]" + } + + tooltip = "[SelectLocalization( Or( BookmarkCharacter.HasDynastyTemplate, BookmarkCharacter.HasDynastyHouse ), 'BOOKMARK_DYNASTY_OR_HOUSE_TOOLTIP', 'BOOKMARK_CHARACTER_REALM' )]" + + flowcontainer = { + margin = { 3 0 } + margin_top = 5 + + widget = { + size = { 56 56 } + + # Dynasty CoA and frame + coat_of_arms_icon = { + visible = "[And( BookmarkCharacter.HasDynastyTemplate, Not( BookmarkCharacter.HasDynastyHouse ) )]" + parentanchor = center + size = { 44 44 } + coat_of_arms = "[BookmarkCharacter.GetDynastyTemplate.GetCoA.GetTexture('(int32)88','(int32)88')]" + coat_of_arms_slot = "[BookmarkCharacter.GetDynastyTemplate.GetCoA.GetSlot('(int32)88','(int32)88')]" + coat_of_arms_mask = "[BookmarkCharacter.GetDynastyTemplate.GetCultureTemplate.GetCultureTemplateDynastyCoAMask]" + coat_of_arms_offset = "[BookmarkCharacter.GetDynastyTemplate.GetCultureTemplate.GetCultureTemplateDynastyCoAOffset]" + coat_of_arms_scale = "[BookmarkCharacter.GetDynastyTemplate.GetCultureTemplate.GetCultureTemplateDynastyCoAScale]" + + modify_texture = { + texture = "gfx/interface/coat_of_arms/coa_overlay.dds" + blend_mode = overlay + } + } + + coa_house_frame = { + visible = "[And( BookmarkCharacter.HasDynastyTemplate, Not( BookmarkCharacter.HasDynastyHouse ) )]" + blockoverride "frame_override" + { + frame = "[BookmarkCharacter.GetDynastySplendorFrame]" + } + size = { 56 56 } + texture = "[BookmarkCharacter.GetDynastyTemplate.GetCultureTemplate.GetCultureTemplateDynastyCoAFrame]" + } + + # House CoA and frame + coat_of_arms_icon = { + visible = "[BookmarkCharacter.HasDynastyHouse]" + parentanchor = center + size = { 48 52 } + coat_of_arms = "[BookmarkCharacter.GetDynastyHouseTemplate.GetCoA.GetTexture('(int32)88','(int32)88')]" + coat_of_arms_slot = "[BookmarkCharacter.GetDynastyHouseTemplate.GetCoA.GetSlot('(int32)88','(int32)88')]" + coat_of_arms_mask = "[BookmarkCharacter.GetDynastyHouseTemplate.GetCultureTemplate.GetCultureTemplateHouseCoAMask]" + coat_of_arms_offset = "[BookmarkCharacter.GetDynastyTemplate.GetCultureTemplate.GetCultureTemplateHouseCoAOffset]" + coat_of_arms_scale = "[BookmarkCharacter.GetDynastyTemplate.GetCultureTemplate.GetCultureTemplateHouseCoAScale]" + + modify_texture = { + texture = "gfx/interface/coat_of_arms/coa_overlay.dds" + blend_mode = overlay + } + } + + coa_house_frame = { + visible = "[BookmarkCharacter.HasDynastyHouse]" + blockoverride "frame_override" + { + frame = "[BookmarkCharacter.GetDynastySplendorFrame]" + } + size = { 56 56 } + texture = "[BookmarkCharacter.GetDynastyTemplate.GetCultureTemplate.GetCultureTemplateHouseCoAFrame]" + } + + # Fallback for non-dynastic bookmarks: use primary title CoA + coat_of_arms_icon = { + visible = "[And( BookmarkCharacter.StartAsExistingRuler, Not( Or( BookmarkCharacter.HasDynastyTemplate, BookmarkCharacter.HasDynastyHouse ) ) )]" + parentanchor = center + size = { 52 52 } + coat_of_arms = "[BookmarkCharacter.GetLandedTitleTemplate.GetCoA.GetTexture('(int32)88','(int32)88')]" + coat_of_arms_slot = "[BookmarkCharacter.GetLandedTitleTemplate.GetCoA.GetSlot('(int32)88','(int32)88')]" + coat_of_arms_mask = "[BookmarkCharacter.GetGovernmentType.GetRealmMask]" + coat_of_arms_offset = "[BookmarkCharacter.GetGovernmentType.GetRealmMaskOffset]" + coat_of_arms_scale = "[BookmarkCharacter.GetGovernmentType.GetRealmMaskScale]" + + modify_texture = { + texture = "[BookmarkCharacter.GetGovernmentType.GetRealmMask]" + blend_mode = overlay + alpha = @overlay_alpha + } + + coa_realm_overlay = { + texture = "[BookmarkCharacter.GetGovernmentType.GetRealmFrame('(int32)44')]" + frame = "[BookmarkCharacter.GetTier]" + size = { 52 52 } + framesize = { 52 52 } + } + + coa_realm_topframe = { + texture = "gfx/interface/coat_of_arms/topframe_44.dds" + position = { 0 -7 } + size = { 52 52 } + framesize = { 52 52 } + frame = "[BookmarkCharacter.GetTier]" + } + } + } + } + } + + type coa_realm_bookmark = container { + flowcontainer = { + direction = vertical + ignoreinvisible = yes + spacing = 3 + + icon = { + name = "crown" + parentanchor = hcenter + texture = "gfx/interface/coat_of_arms/crown_strip_62.dds" + frame = "[BookmarkCharacter.GetTier]" + framesize = { 64 40 } + visible = "[Not(BookmarkCharacter.GetGovernmentType.IsType('ecclesiastical_government'))]" + } + + icon = { + name = "ecclesiastic_top_decor" + visible = "[BookmarkCharacter.GetGovernmentType.IsType('ecclesiastical_government')]" + parentanchor = hcenter + size = { 64 40 } + texture = "gfx/interface/coat_of_arms/ecclesiastic_topframe_62.dds" + } + + widget = { + size = { 64 64 } + + coa_realm_shadow = { + parentanchor = center + texture = "[BookmarkCharacter.GetGovernmentType.GetRealmFrameShadow('(int32)62')]" + size = { 64 64 } + framesize = { 64 64 } + frame = 1 + } + + coat_of_arms_icon = { + visible = "[Not(BookmarkCharacter.GetGovernmentType.IsType('ecclesiastical_government'))]" + parentanchor = center + size = { 64 64 } + alwaystransparent = yes + + coat_of_arms = "[BookmarkCharacter.GetLandedTitleTemplate.GetCoA.GetTexture('(int32)124','(int32)124')]" + coat_of_arms_slot = "[BookmarkCharacter.GetLandedTitleTemplate.GetCoA.GetSlot('(int32)124','(int32)124')]" + coat_of_arms_mask = "[BookmarkCharacter.GetGovernmentType.GetRealmMask]" + coat_of_arms_offset = "[BookmarkCharacter.GetGovernmentType.GetRealmMaskOffset]" + coat_of_arms_scale = "[BookmarkCharacter.GetGovernmentType.GetRealmMaskScale]" + + modify_texture = { + texture = "[BookmarkCharacter.GetGovernmentType.GetRealmMask]" + blend_mode = overlay + alpha = @overlay_alpha + } + + coa_realm_overlay = { + texture = "[BookmarkCharacter.GetGovernmentType.GetRealmFrame('(int32)62')]" + size = { 64 64 } + frame = 1 + framesize = { 64 64 } + inherit_visual_state = no + } + + coa_realm_topframe = { + inherit_visual_state = no + texture ="gfx/interface/coat_of_arms/topframe_62.dds" + position = { 0 -8 } + framesize = { 64 64 } + size = { 64 64 } + frame = "[BookmarkCharacter.GetTier]" + } + } + coat_of_arms_icon = { + visible = "[BookmarkCharacter.GetGovernmentType.IsType('ecclesiastical_government')]" + parentanchor = center + size = { 64 64 } + alwaystransparent = yes + + coat_of_arms = "[BookmarkCharacter.GetLandedTitleTemplate.GetCoA.GetTexture('(int32)124','(int32)124')]" + coat_of_arms_slot = "[BookmarkCharacter.GetLandedTitleTemplate.GetCoA.GetSlot('(int32)124','(int32)124')]" + coat_of_arms_mask = "[BookmarkCharacter.GetGovernmentType.GetRealmMask]" + coat_of_arms_offset = "[BookmarkCharacter.GetGovernmentType.GetRealmMaskOffset]" + coat_of_arms_scale = "[BookmarkCharacter.GetGovernmentType.GetRealmMaskScale]" + + modify_texture = { + texture = "[BookmarkCharacter.GetGovernmentType.GetRealmMask]" + blend_mode = overlay + alpha = @overlay_alpha + } + + coa_realm_overlay = { + texture = "[BookmarkCharacter.GetGovernmentType.GetRealmFrame('(int32)62')]" + size = { 64 64 } + frame = 1 + framesize = { 64 64 } + inherit_visual_state = no + } + + coa_realm_topframe = { + inherit_visual_state = no + texture ="gfx/interface/coat_of_arms/topframe_62.dds" + position = { 0 -8 } + framesize = { 64 64 } + size = { 64 64 } + frame = "[BookmarkCharacter.GetTier]" + } + + } + } + } + } + + type coa_clan_bookmark = container { + flowcontainer = { + direction = vertical + ignoreinvisible = yes + spacing = 3 + + icon = { + name = "crown" + parentanchor = hcenter + texture = "gfx/interface/coat_of_arms/crown_strip_62.dds" + frame = "[BookmarkCharacter.GetTier]" + framesize = { 64 40 } + } + + widget = { + size = { 64 64 } + + coa_realm_shadow = { + parentanchor = center + texture = "[BookmarkCharacter.GetGovernmentType.GetRealmFrameShadow('(int32)62')]" + size = { 64 64 } + framesize = { 64 64 } + frame = 1 + } + + coat_of_arms_icon = { + parentanchor = center + size = { 64 64 } + alwaystransparent = yes + visible = "[Not(BookmarkCharacter.HasDynastyHouse)]" + + coat_of_arms = "[BookmarkCharacter.GetDynastyTemplate.GetCoA.GetTexture('(int32)124','(int32)124')]" + coat_of_arms_slot = "[BookmarkCharacter.GetDynastyTemplate.GetCoA.GetSlot('(int32)124','(int32)124')]" + coat_of_arms_mask = "[BookmarkCharacter.GetGovernmentType.GetRealmMask]" + coat_of_arms_offset = "[BookmarkCharacter.GetGovernmentType.GetRealmMaskOffset]" + coat_of_arms_scale = "[BookmarkCharacter.GetGovernmentType.GetRealmMaskScale]" + + modify_texture = { + texture = "[BookmarkCharacter.GetGovernmentType.GetRealmMask]" + blend_mode = overlay + alpha = @overlay_alpha + } + + coa_realm_overlay = { + texture = "[BookmarkCharacter.GetGovernmentType.GetRealmFrame('(int32)62')]" + size = { 64 64 } + framesize = { 64 64 } + frame = 1 + inherit_visual_state = no + } + + coa_realm_topframe = { + inherit_visual_state = no + texture ="gfx/interface/coat_of_arms/topframe_62.dds" + framesize = { 64 64 } + size = { 64 64 } + frame = "[BookmarkCharacter.GetTier]" + position = { 0 -8 } + } + } + + coat_of_arms_icon = { + parentanchor = center + size = { 64 64 } + alwaystransparent = yes + visible = "[BookmarkCharacter.HasDynastyHouse]" + + coat_of_arms = "[BookmarkCharacter.GetDynastyHouseTemplate.GetCoA.GetTexture('(int32)124','(int32)124')]" + coat_of_arms_slot = "[BookmarkCharacter.GetDynastyHouseTemplate.GetCoA.GetSlot('(int32)124','(int32)124')]" + coat_of_arms_mask = "[BookmarkCharacter.GetGovernmentType.GetRealmMask]" + coat_of_arms_offset = "[BookmarkCharacter.GetGovernmentType.GetRealmMaskOffset]" + coat_of_arms_scale = "[BookmarkCharacter.GetGovernmentType.GetRealmMaskScale]" + + modify_texture = { + texture = "[BookmarkCharacter.GetGovernmentType.GetRealmMask]" + blend_mode = overlay + alpha = @overlay_alpha + } + + coa_realm_overlay = { + texture = "[BookmarkCharacter.GetGovernmentType.GetRealmFrame('(int32)62')]" + size = { 64 64 } + inherit_visual_state = no + frame = 1 + framesize = { 64 64 } + } + + coa_realm_topframe = { + inherit_visual_state = no + texture ="gfx/interface/coat_of_arms/topframe_62.dds" + framesize = { 64 64 } + size = { 64 64 } + frame = "[BookmarkCharacter.GetTier]" + position = { 0 -8 } + } + } + } + } + } + + type coa_admin_nodlc_bookmark = container { + flowcontainer = { + direction = vertical + ignoreinvisible = yes + spacing = 3 + + icon = { + name = "crown" + parentanchor = hcenter + texture = "gfx/interface/coat_of_arms/crown_strip_62.dds" + frame = "[BookmarkCharacter.GetTier]" + framesize = { 64 40 } + } + + widget = { + size = { 64 64 } + + coa_realm_shadow = { + parentanchor = center + texture = "[BookmarkCharacter.GetGovernmentType.GetRealmFrameShadow('(int32)62')]" + size = { 64 64 } + framesize = { 64 64 } + frame = 1 + } + + coat_of_arms_icon = { + parentanchor = center + size = { 64 64 } + alwaystransparent = yes + + coat_of_arms = "[BookmarkCharacter.GetLandedTitleTemplate.GetCoA.GetTexture('(int32)124','(int32)124')]" + coat_of_arms_slot = "[BookmarkCharacter.GetLandedTitleTemplate.GetCoA.GetSlot('(int32)124','(int32)124')]" + coat_of_arms_mask = "[GetGovernment('feudal_government').GetRealmMask]" + coat_of_arms_offset = "[GetGovernment('feudal_government').GetRealmMaskOffset]" + coat_of_arms_scale = "[GetGovernment('feudal_government').GetRealmMaskScale]" + + modify_texture = { + texture = "[GetGovernment('feudal_government').GetRealmMask]" + blend_mode = overlay + alpha = @overlay_alpha + } + + coa_realm_overlay = { + texture = "[GetGovernment('feudal_government').GetRealmFrame('(int32)62')]" + size = { 64 64 } + inherit_visual_state = no + frame = 1 + framesize = { 64 64 } + } + + coa_realm_topframe = { + inherit_visual_state = no + texture ="gfx/interface/coat_of_arms/topframe_62.dds" + position = { 0 -2 } + framesize = { 64 64 } + size = { 64 64 } + frame = "[BookmarkCharacter.GetTier]" + } + } + } + } + } + + type coa_adventurer_bookmark = container { + flowcontainer = { + direction = vertical + ignoreinvisible = yes + spacing = 4 + + icon = { + name = "crown" + parentanchor = hcenter + texture = "gfx/interface/coat_of_arms/landless_adventurer_topframe_62.dds" + size = { 62 30 } + } + + widget = { + size = { 64 64 } + + coa_realm_shadow = { + parentanchor = center + texture = "[BookmarkCharacter.GetGovernmentType.GetRealmFrameShadow('(int32)62')]" + size = { 64 64 } + framesize = { 64 64 } + frame = 1 + } + + coat_of_arms_icon = { + parentanchor = center + size = { 64 64 } + alwaystransparent = yes + visible = "[Not(BookmarkCharacter.HasDynastyHouse)]" + + coat_of_arms = "[BookmarkCharacter.GetDynastyTemplate.GetCoA.GetTexture('(int32)124','(int32)124')]" + coat_of_arms_slot = "[BookmarkCharacter.GetDynastyTemplate.GetCoA.GetSlot('(int32)124','(int32)124')]" + coat_of_arms_mask = "[BookmarkCharacter.GetGovernmentType.GetRealmMask]" + coat_of_arms_offset = "[BookmarkCharacter.GetGovernmentType.GetRealmMaskOffset]" + coat_of_arms_scale = "[BookmarkCharacter.GetGovernmentType.GetRealmMaskScale]" + + modify_texture = { + texture = "[BookmarkCharacter.GetGovernmentType.GetRealmMask]" + blend_mode = overlay + alpha = @overlay_alpha + } + + coa_realm_overlay = { + texture = "[BookmarkCharacter.GetGovernmentType.GetRealmFrame('(int32)62')]" + size = { 64 64 } + inherit_visual_state = no + frame = 1 + framesize = { 64 64 } + } + + coa_realm_topframe = { + inherit_visual_state = no + texture ="gfx/interface/coat_of_arms/topframe_62.dds" + framesize = { 64 64 } + size = { 64 64 } + frame = "[BookmarkCharacter.GetTier]" + position = { 0 -8 } + } + } + + coat_of_arms_icon = { + parentanchor = center + size = { 64 64 } + alwaystransparent = yes + visible = "[BookmarkCharacter.HasDynastyHouse]" + + coat_of_arms = "[BookmarkCharacter.GetDynastyHouseTemplate.GetCoA.GetTexture('(int32)124','(int32)124')]" + coat_of_arms_slot = "[BookmarkCharacter.GetDynastyHouseTemplate.GetCoA.GetSlot('(int32)124','(int32)124')]" + coat_of_arms_mask = "[BookmarkCharacter.GetGovernmentType.GetRealmMask]" + coat_of_arms_offset = "[BookmarkCharacter.GetGovernmentType.GetRealmMaskOffset]" + coat_of_arms_scale = "[BookmarkCharacter.GetGovernmentType.GetRealmMaskScale]" + + modify_texture = { + texture = "[BookmarkCharacter.GetGovernmentType.GetRealmMask]" + blend_mode = overlay + alpha = @overlay_alpha + } + + coa_realm_overlay = { + texture = "[BookmarkCharacter.GetGovernmentType.GetRealmFrame('(int32)62')]" + size = { 64 64 } + inherit_visual_state = no + frame = 1 + framesize = { 64 64 } + } + + coa_realm_topframe = { + inherit_visual_state = no + texture ="gfx/interface/coat_of_arms/topframe_62.dds" + framesize = { 64 64 } + size = { 64 64 } + frame = "[BookmarkCharacter.GetTier]" + position = { 0 -8 } + } + } + } + } + } + + ######################################### + ######### COAT OF ARMS DESIGNER ######### + ######################################### + # These widgets require a "CoatOfArms" datacontext (CCoatOfArmsSprite in code) + + # modelled after coa_realm_huge_crown + type coa_preview_realm_huge_crown = button_group { + alwaystransparent = yes + + flowcontainer = { + direction = vertical + ignoreinvisible = yes + spacing = -2 + + icon = { + name = "crown" + parentanchor = hcenter + texture = "gfx/interface/coat_of_arms/crown_strip_115.dds" + + block "frame_override" + { + frame = 2 + } + framesize = { 128 80 } + + block "crown" + { + visible = yes + } + } + + icon = { + name = "mercenary" + + block "mercenary_visible" + { + visible = no + } + + parentanchor = hcenter + texture = "gfx/interface/coat_of_arms/mercenary_topframe_115.dds" + } + + icon = { + name = "holy_order" + + block "holy_order_visible" + { + visible = no + } + + parentanchor = hcenter + texture = "gfx/interface/coat_of_arms/holyorder_topframe_115.dds" + } + + widget = { + parentanchor = hcenter + size = { 128 128 } + + coa_realm_shadow = { + parentanchor = center + texture = "gfx/interface/icons/realm_frames/_default_115_shadow.dds" + size = { 128 128 } + } + + coat_of_arms_icon = { + parentanchor = center + size = { 128 128 } + coat_of_arms = "[CoatOfArms.GetTexture('(int32)230','(int32)230')]" + coat_of_arms_slot = "[CoatOfArms.GetSlot('(int32)230','(int32)230')]" + + block "coa_icon_additions" {} + + block "coat_of_arms_mask" + { + coat_of_arms_mask = "gfx/interface/icons/realm_frames/_default_mask.dds" + coat_of_arms_offset = { 0.0 0.07 } + coat_of_arms_scale = { 0.9 0.9 } + } + + modify_texture = { + block "realm_mask_texture" + { + texture = "gfx/interface/icons/realm_frames/_default_mask.dds" + } + blend_mode = overlay + alpha = @overlay_alpha + } + + coa_realm_overlay = { + block "realm_frame_texture" + { + texture = "gfx/interface/icons/realm_frames/_default_115_frame.dds" + } + size = { 128 128 } + } + + coa_realm_topframe = { + texture ="gfx/interface/coat_of_arms/topframe_115.dds" + block "frame_override" + { + frame = 2 + } + size = { 128 128 } + framesize = { 128 128 } + position = { 0 -12} + } + } + } + } + } + + # modelled after coa_title_big_crown + type coa_preview_title_big_crown = button_group { + alwaystransparent = yes + + flowcontainer = { + margin = { 3 7 } + direction = vertical + spacing = -3 + ignoreinvisible = yes + + icon = { + name = "crown" + parentanchor = hcenter + texture = "gfx/interface/coat_of_arms/crown_strip_115.dds" + block "frame_override" + { + frame = 2 + } + framesize = { 128 80 } + + block "crown" + { + visible = yes + } + } + + widget = { + parentanchor = hcenter + size = { 96 96 } + + coat_of_arms_icon = { + parentanchor = center + size = { 86 86 } + coat_of_arms = "[CoatOfArms.GetTexture('(int32)172','(int32)172')]" + coat_of_arms_slot = "[CoatOfArms.GetSlot('(int32)172','(int32)172')]" + coat_of_arms_mask = "gfx/interface/coat_of_arms/title_mask.dds" + coat_of_arms_offset = "[DefaultCoATitleMaskOffset]" + coat_of_arms_scale = "[DefaultCoATitleMaskScale]" + + coa_title_frame = { + texture = "gfx/interface/coat_of_arms/title_86.dds" + size = { 96 96 } + alwaystransparent = yes + } + } + } + } + } + + # modelled after coa_title_tiny + type coa_preview_title_tiny = button_group { + alwaystransparent = yes + + flowcontainer = { + margin = { 3 7 } + direction = vertical + spacing = -4 + ignoreinvisible = yes + + spacer = { + name = "crown" + size = { 18 12 } + visible = no + } + + widget = { + parentanchor = hcenter + size = { 36 35 } + + coat_of_arms_icon = { + parentanchor = center + size = { 28 28 } + coat_of_arms = "[CoatOfArms.GetTexture('(int32)56','(int32)56')]" + coat_of_arms_slot = "[CoatOfArms.GetSlot('(int32)56','(int32)56')]" + coat_of_arms_mask = "gfx/interface/coat_of_arms/title_mask.dds" + coat_of_arms_offset = "[DefaultCoATitleMaskOffset]" + coat_of_arms_scale = "[DefaultCoATitleMaskScale]" + + coa_title_frame = { + parentanchor = center + texture = "gfx/interface/coat_of_arms/title_28.dds" + size = { 34 34 } + } + } + } + } + } + + # modelled after coa_dynasty_huge + type coa_preview_dynasty_huge = widget + { + size = { 172 172 } + + #block "coa_widget_size" + + button_group = { + parentanchor = center + size = { 156 156 } + alwaystransparent = yes + + coat_of_arms_icon = { + parentanchor = center + size = { 128 128 } + coat_of_arms = "[CoatOfArms.GetTexture('(int32)230','(int32)230')]" + coat_of_arms_slot = "[CoatOfArms.GetSlot('(int32)230','(int32)230')]" + coat_of_arms_mask = "[Culture.GetCultureDynastyCoAMask]" + coat_of_arms_offset = "[Culture.GetCultureDynastyCoAOffset]" + coat_of_arms_scale = "[Culture.GetCultureDynastyCoAScale]" + + modify_texture = { + texture = "gfx/interface/coat_of_arms/coa_overlay.dds" + blend_mode = overlay + alpha = @overlay_alpha + } + } + + coa_dynasty_frame = { + texture = "[Culture.GetCultureDynastyCoAFrame]" + size = { 172 172 } + alwaystransparent = yes + + #block "coa_frame_size" {} + + blockoverride "frame_override" + { + frame = 2 + } + } + } + } + + # modelled after coa_house_huge + type coa_preview_house_huge = widget + { + size = { 160 160 } + + hbox = { + margin = { 4 4 } + + coa_house_widget = { + visible = yes + size = { 156 156 } + alwaystransparent = yes + + coat_of_arms_icon = { + parentanchor = center + size = { 120 120 } + coat_of_arms = "[CoatOfArms.GetTexture('(int32)230','(int32)230')]" + coat_of_arms_slot = "[CoatOfArms.GetSlot('(int32)230','(int32)230')]" + coat_of_arms_mask = "[Culture.GetCultureHouseCoAMask]" + coat_of_arms_offset = "[Culture.GetCultureHouseCoAOffset]" + coat_of_arms_scale = "[Culture.GetCultureHouseCoAScale]" + alwaystransparent = yes + + modify_texture = { + texture = "gfx/interface/coat_of_arms/coa_overlay.dds" + blend_mode = overlay + alpha = @overlay_alpha + } + } + + coa_house_frame = { + texture = "[Culture.GetCultureHouseCoAFrame]" + size = { 156 156 } + alwaystransparent = yes + + blockoverride "frame_override" + { + frame = 2 + } + } + } + } + } + + #################################### + ######### CULTURE PREVIEW ########## + #################################### + + type coa_hybridize_window = widget + { + size = { 128 128 } + + button_group = { + size = { 84 84 } + using = CoA_Dynasty_Defaults + parentanchor = center + + coat_of_arms_icon = { + parentanchor = center + using = Mask_Rough_Edges + + size = { 84 84 } + coat_of_arms = "[DesignerCoA.GetCoA.GetTexture('(int32)124','(int32)124')]" + coat_of_arms_slot = "[DesignerCoA.GetCoA.GetSlot('(int32)124','(int32)124')]" + block "mask" + { + coat_of_arms_mask = "[Culture.GetCultureDynastyCoAMask]" + coat_of_arms_offset = "[Culture.GetCultureDynastyCoAOffset]" + coat_of_arms_scale = "[Culture.GetCultureDynastyCoAScale]" + } + + modify_texture = { + texture = "gfx/interface/coat_of_arms/coa_overlay.dds" + blend_mode = overlay + alpha = @overlay_alpha + } + + } + + block "frame" + { + coa_dynasty_frame = { + size = { 128 128 } + texture = "[Culture.GetCultureDynastyCoAFrame]" + } + } + } + } + + type coa_hybridize_frame_preview = widget + { + size = { 128 128 } + + button_group = { + size = { 84 84 } + using = CoA_Dynasty_Defaults + parentanchor = center + + coa_dynasty_frame = { + size = { 128 128 } + texture = "[Culture.GetCultureDynastyCoAFrame]" + } + } + } + + ##### Sigil Coat of Arms + type coa_character_sigil = widget + { + block "size" + { + size = { 45 30 } + } + + widget = { + parentanchor = center + + icon = { + name = "sigil_bg" + texture = "gfx/interface/skinned/window_letter/sigil_bg.dds" + alwaystransparent = yes + parentanchor = center + + block "size" + { + size = { 50 50 } + } + } + + icon = { + name = "sigil" + block "sigil_coa" + { + visible = "[Character.HasSealCoA]" + datacontext = "[Character.GetSealCoA]" + } + gfxtype = coatofarmsgfx + shaderfile = "gfx/FX/gui_coatofarms.shader" + effectname = PdxGuiSeal + alwaystransparent = yes + coat_of_arms_slot = "[CoatOfArms.GetSlot('(int32)88','(int32)88')]" + coat_of_arms = "[CoatOfArms.GetTexture('(int32)88','(int32)88')]" + coat_of_arms_mask = "gfx/interface/skinned/window_letter/sigil_center.dds" + parentanchor = center + + block "sigil_size" + { + size = { 34 34 } + } + } + + icon = { + name = "sigil_lowborn" + block "sigil_lowborn_visible" + { + visible = "[Not( Character.HasSealCoA )]" + } + texture = "gfx/interface/skinned/window_letter/sigil_center_lowborn.dds" + alwaystransparent = yes + parentanchor = center + + block "sigil_size" + { + size = { 34 34 } + } + } + } + + coa_house_widget = { + using = CoA_House_Defaults + visible = "[And(Character.HasSealCoA, Character.GetHouse.IsValid)]" + datacontext = "[Character.GetHouse]" + parentanchor = center + + block "sigil_size" + { + size = { 34 34 } + } + + coat_of_arms_icon = { + parentanchor = center + block "sigil_size" + { + size = { 34 34 } + } + coat_of_arms = "[DynastyHouse.GetHouseCoA.GetTexture('(int32)124','(int32)124')]" + coat_of_arms_slot = "[DynastyHouse.GetHouseCoA.GetSlot('(int32)124','(int32)124')]" + coat_of_arms_mask = "gfx/interface/skinned/window_letter/asia_house_mask.dds" + + modify_texture = { + texture = "gfx/interface/coat_of_arms/coa_overlay.dds" + blend_mode = overlay + alpha = @overlay_alpha + } + } + } + } + + type coa_house_sigil = widget + { + block "size" + { + size = { 45 30 } + } + + widget = { + parentanchor = center + + icon = { + name = "sigil_bg" + texture = "gfx/interface/skinned/window_letter/sigil_bg.dds" + alwaystransparent = yes + parentanchor = center + + block "size" + { + size = { 50 50 } + } + } + + icon = { + name = "sigil" + block "sigil_coa" + { + visible = "[Character.GetHouse.IsValid]" + datacontext = "[Character.GetHouse.GetHouseCoA]" + } + gfxtype = coatofarmsgfx + shaderfile = "gfx/FX/gui_coatofarms.shader" + effectname = PdxGuiSeal + alwaystransparent = yes + coat_of_arms_slot = "[CoatOfArms.GetSlot('(int32)88','(int32)88')]" + coat_of_arms = "[CoatOfArms.GetTexture('(int32)88','(int32)88')]" + coat_of_arms_mask = "gfx/interface/skinned/window_letter/sigil_center.dds" + parentanchor = center + + block "sigil_size" + { + size = { 34 34 } + } + } + + icon = { + name = "sigil_lowborn" + block "sigil_lowborn_visible" + { + visible = "[Not( Character.GetHouse.IsValid )]" + } + texture = "gfx/interface/skinned/window_letter/sigil_center_lowborn.dds" + alwaystransparent = yes + parentanchor = center + + block "sigil_size" + { + size = { 34 34 } + } + } + } + + coa_house_widget = { + using = CoA_House_Defaults + visible = "[And(Character.HasSealCoA, Character.GetHouse.IsValid)]" + datacontext = "[Character.GetHouse]" + parentanchor = center + + block "sigil_size" + { + size = { 34 34 } + } + + coat_of_arms_icon = { + parentanchor = center + block "sigil_size" + { + size = { 34 34 } + } + coat_of_arms = "[DynastyHouse.GetHouseCoA.GetTexture('(int32)124','(int32)124')]" + coat_of_arms_slot = "[DynastyHouse.GetHouseCoA.GetSlot('(int32)124','(int32)124')]" + coat_of_arms_mask = "gfx/interface/skinned/window_letter/asia_house_mask.dds" + + modify_texture = { + texture = "gfx/interface/coat_of_arms/coa_overlay.dds" + blend_mode = overlay + alpha = @overlay_alpha + } + } + } + } +} + +###################################################### +##################### TEMPLATES ###################### +###################################################### + +## Default values for Title CoA buttons +template CoA_Title_Defaults +{ + block "coa_button" + { + block "coa_tooltip" + { + tooltipwidget = { + using = LandedTitleTooltip + } + } + block "coa_onclick" + { + onclick = "[DefaultOnCoatOfArmsClick(Title.GetID)]" + onrightclick = "[DefaultOnCoatOfArmsRightClick(Title.GetID)]" + button_ignore = none + } + } + using = State_Title_MouseEntry +} + +template CoA_Title_Hover_Glow +{ + glow = { + block "coa_hover_glow_visible" + { + visible = "[Title.IsHovered]" + } + using = Color_Bright_Yellow + glow_radius = 8 + + glow_generation_rules = { + glow_alpha_mask = 0 + glow_blur_passes = 10 + glow_texture_downscale = 2.5f + glow_ignore_inside_pixels = yes + } + } + + using = Animation_Glow_Pulse +} + +template CoA_Realm_Hover_Glow +{ + glow = { + block "coa_hover_glow_visible" + { + visible = "[Character.IsHovered]" + } + using = Color_Bright_Yellow + glow_radius = 4 + + glow_generation_rules = { + glow_alpha_mask = 0 + glow_blur_passes = 5 + glow_texture_downscale = 2.5f + glow_ignore_inside_pixels = yes + } + } + + using = Animation_Glow_Pulse +} + +template CoA_Confederation_Hover_Glow +{ + glow = { + block "coa_hover_glow_visible" + { + visible = "[Confederation.IsHovered]" + } + using = Color_Bright_Yellow + glow_radius = 8 + + glow_generation_rules = { + glow_alpha_mask = 0 + glow_blur_passes = 10 + glow_texture_downscale = 2.5f + glow_ignore_inside_pixels = yes + } + } + + using = Animation_Glow_Pulse +} + +template CoA_Bloc_Hover_Glow +{ + glow = { + block "coa_hover_glow_visible" + { + visible = "[Confederation.IsHovered]" + } + using = Color_Bright_Yellow + glow_radius = 4 + + glow_generation_rules = { + glow_alpha_mask = 0 + glow_blur_passes = 10 + glow_texture_downscale = 2.5f + glow_ignore_inside_pixels = yes + } + } + + using = Animation_Glow_Pulse +} + + +## Default values for Realm CoA buttons +template CoA_Realm_Defaults +{ + block "coa_button" + { + tooltip = "[Character.GetDefaultRealmFlagTooltip]" + onclick = "[DefaultOnRealmFlagClick(Character.GetID)]" + onrightclick = "[DefaultOnCharacterRightClick(Character.GetID)]" + button_ignore = none + tooltip_visible = "[Not(IsInteractionMenuOpenForCharacter(Character.GetID))]" + } + + block "coa_realm_mouse_entry" + { + using = State_Realm_MouseEntry + } +} + +## Default values for Dynasty CoA buttons +template CoA_Dynasty_Defaults +{ + block "coa_button" + { + block "coa_tooltip" + { + tooltipwidget = { + using = DynastyTooltip + } + } + block "OnClickDefault" + { + onclick = "[DefaultOnDynastyCoatOfArmsClick(Dynasty.GetID)]" + } + } +} + +## Default values for House CoA buttons +template CoA_House_Defaults +{ + block "coa_button" + { + block "coa_tooltip" + { + tooltipwidget = { + using = dynasty_house_tooltip + } + } + onclick = "[DefaultOnHouseCoatOfArmsClick(DynastyHouse.GetID)]" + } +} + +## Default values for Confederation CoA buttons +template CoA_Confederation_Defaults +{ + block "coa_button" + { + block "coa_tooltip" + { + } + } + using = Confederation_Mouse_Entry +} diff --git a/gui/hud.gui b/gui/hud.gui index e0eb93f81..39cb00ddd 100644 --- a/gui/hud.gui +++ b/gui/hud.gui @@ -1,5 +1,5 @@ -###################################################### -#################### BOTTOM ####################### +###################################################### +###################### BOTTOM ######################## ###################################################### widget = { @@ -79,31 +79,19 @@ widget = { widget = { size = { 320 400 } parentanchor = hcenter|bottom + allow_outside = yes - vbox = { - margin_bottom = 20 + # Main errorlog widget + widget = { + size = { 180 80 } + position = { 0 -10 } + parentanchor = left|bottom + widgetanchor = right|bottom + visible = "[And( Not(IsGameViewOpen('barbershop')), And( Not( IsPauseMenuShown ), Not(ReleaseMode) ) )]" - expand = {} - - hbox = { - error_horse = { - visible = "[And( Not(IsGameViewOpen('barbershop')), And( Not( IsPauseMenuShown ), Not(ReleaseMode) ) )]" - } - - loaded_mods_icon = { - visible = "[And( Not( IsPauseMenuShown ), And( HasLoadedMods, Not(ReleaseMode) ) )]" - tooltip = "[GetLoadedMods]" - } - } - - widget = { - size = { 320 100 } - datacontext = "[GetPlayer]" - visible = "[And(Not(Character.HasActiveCompanionAISetting('raise_armies')),Or(And( Character.IsAtWar, Not(Character.HasRaisedRegiments)),PlayerShouldDisbandAll))]" - } + error_horse = {} } - ### Raise/Disband armies ### container = { @@ -232,7 +220,6 @@ widget = { } } } - } } @@ -388,12 +375,12 @@ widget = { using = Animation_Curve_Default } - hbox = { + vbox = { name = "tab_government_administration" #tutorial uses this widget_hud_main_tab = { datacontext = "[GetPlayer.GetTopLiege]" - visible = "[And(Character.GetGovernment.HasRule( 'noble_families' ),Not(Or(GetPlayer.GetGovernment.IsType( 'celestial_government' ),Or(GetPlayer.GetGovernment.IsType( 'japan_administrative_government' ),GetPlayer.GetGovernment.IsType( 'japan_feudal_government' )))))]" + visible = "[And(Or(Character.GetGovernment.HasMechanic( 'administrative' ), Character.GetGovernment.HasRule( 'noble_families' )),Not(Or(GetPlayer.GetGovernment.IsType( 'celestial_government' ),Or(GetPlayer.GetGovernment.IsType( 'japan_administrative_government' ),GetPlayer.GetGovernment.IsType( 'japan_feudal_government' )))))]" blockoverride "maintab_button" { @@ -440,7 +427,6 @@ widget = { } widget_hud_main_tab = { - datacontext = "[GetPlayer.GetTopLiege]" visible = "[GetPlayer.GetGovernment.IsType( 'celestial_government' )]" @@ -455,11 +441,28 @@ widget = { tooltip = "ADMINISTRATIVE_BUTTON" } } + + widget_hud_main_tab = { + name = "hud_college_of_cardinals_button_tutorial_uses_this" + datacontext = "[GetPlayer.GetFaith]" + visible = "[And3( Faith.HasParameterByKey( 'has_clerical_electors' ), Faith.GetCollegeElectionTitle.HasElectionType( 'theocratic_elective' ), GetPlayer.GetGovernment.IsType( 'ecclesiastical_government' ) )]" + + blockoverride "maintab_button" + { + texture = "gfx/interface/skinned/hud_maintab/maintab_college_of_cardinals.dds" + + onclick = "[ToggleGameView( 'cardinals_window' )]" + down = "[IsGameViewOpen('cardinals_window')]" + shortcut = "college_of_cardinals" + + tooltip = "COLLEGE_OF_CARDINALS_TT" + } + } } widget = { datacontext = "[GetPlayer.GetTopLiege]" - visible = "[And(Or( Character.GetGovernment.HasRule( 'noble_families' ), Character.GetGovernment.HasRule( 'administrative' ) ), And( Not( IsPauseMenuShown ), And(Or(Not(IsObserver), GetPlayer.IsValid), IsDefaultGUIMode)))]" + visible = "[NotZero( PdxGuiWidget.AccessParent.FindChild( 'tab_government_administration' ).CountVisibleChildren )]" layoutpolicy_horizontal = expanding size = { 0 15 } @@ -712,14 +715,16 @@ widget = { allow_outside = yes name = "royal_court_button_tutorial_uses_this" - tooltipwidget = { - container_royal_court_tooltip = {} - } - blockoverride "maintab_button" { texture = "gfx/interface/skinned/hud_maintab/maintab_courtview.dds" onclick = "[Character.OpenRoyalCourtView( 'throne' )]" + shortcut = "royal_court" + + tooltipwidget = { + container_royal_court_tooltip = {} + } + using = tooltip_ws # Looping glow when you have unhandled court events or first get your royal court using = Animation_Glow_Pulse @@ -916,6 +921,7 @@ widget = { } widget_stress_sounds = {} + widget_fulfillment_sounds = {} } ### Time Controls @@ -979,15 +985,27 @@ icon = { } hotkeys_HUD = {} - + # hotkeys that should'be available in the lobby container = { + button = { + datacontext = "[GetPlayer.GetRite]" + visible = "[GetPlayer.IsValid]" + onclick = "[ToggleGameViewData( 'faith', Rite.Self )]" + shortcut = "hud_faith" + } + button = { + datacontext = "[GetPlayer.GetCulture]" + visible = "[GetPlayer.IsValid]" + onclick = "[ToggleGameViewData( 'culture_window', Culture.GetID )]" + shortcut = "hud_culture" + } button_normal = { name = "ledger_shortcut" onclick = "[ToggleGameView('ledger')]" onclick = "[GetVariableSystem.Clear( 'extra_buttons_expand' )]" shortcut = "ledger_window" - } + } button_normal = { onclick = "[OnGoToPlayerCapital]" onclick = "[ToggleGameViewData('holding_view', GetPlayer.GetCapitalLocation)]" @@ -998,6 +1016,16 @@ icon = { onclick = "[ToggleMessageSettings]" shortcut = "message_settings" } + container = { + visible = "[GetPlayer.IsValid]" + button = { + datacontext = "[GetPlayer.GetFaith]" + visible = "[And( Faith.HasParameterByKey( 'has_clerical_electors' ), Faith.GetCollegeElectionTitle.HasElectionType( 'theocratic_elective' ) )]" + + onclick = "[OpenGameView( 'cardinals_window' )]" + shortcut = "college_of_cardinals" + } + } } ### Extra Buttons @@ -1142,7 +1170,7 @@ icon = { button_icon = { name = "ledger_window" size = { 32 32 } - + tooltip = "OPEN_LEDGER" onclick = "[ToggleGameView('ledger')]" shortcut = "ledger_window" @@ -1639,7 +1667,7 @@ widget = { using = Animation_ShowHide_Quick - #### DYNAMIC BACKGROUND BEHIND THE CHARACTER PORTRAIT + #### DYNAMIC BACKGROUND BEHIND THE CHARACTER PORTRAIT THAT PUSHES THE NOMAD WIDGET TO THE RIGHT PLACE widget = { parentanchor = bottom|left position = { -100 -100} @@ -1650,7 +1678,7 @@ widget = { spacer = { visible = "[LessThanOrEqualTo_int32( InGameBottomBar.GetHudOptionalItemsCount, '(int32)1' )]" - size = { 364 1 } + size = { 315 1 } } spacer = { @@ -1660,22 +1688,17 @@ widget = { spacer = { visible = "[EqualTo_int32( InGameBottomBar.GetHudOptionalItemsCount, '(int32)3' )]" - size = { 484 1 } + size = { 495 1 } } spacer = { visible = "[EqualTo_int32( InGameBottomBar.GetHudOptionalItemsCount, '(int32)4' )]" - size = { 544 1 } + size = { 555 1 } } spacer = { - visible = "[EqualTo_int32( InGameBottomBar.GetHudOptionalItemsCount, '(int32)5' )]" - size = { 604 1 } - } - - spacer = { - visible = "[GreaterThanOrEqualTo_int32( InGameBottomBar.GetHudOptionalItemsCount, '(int32)6' )]" - size = { 664 1 } + visible = "[GreaterThanOrEqualTo_int32( InGameBottomBar.GetHudOptionalItemsCount, '(int32)5' )]" + size = { 605 1 } } icon = { @@ -2130,335 +2153,8 @@ widget = { allow_outside = yes item = { - button_normal = { - name = "tutorial_highlight_lifestyle_HUD_button" - onclick = "[BottomBarSchemeItem.OnClick]" - onrightclick = "[BottomBarSchemeItem.OnClick]" - onrightclick = "[PostCommand( BottomBarSchemeItem.TriggerSchemeHudClick )]" - button_ignore = none + button_hud_scheme = { datacontext = "[BottomBarSchemeItem.GetScheme]" - tooltip = "BOTTOMBAR_SCHEME_TOOLTIP" - size = { 90 112 } - - ### Scheme exposed animation - icon = { - visible = "[Scheme.IsExposed]" - parentanchor = center - position = { 0 0 } - size = { 120 135 } - texture = "gfx/interface/colors/white.dds" - using = Color_Red - - shaderfile = "gfx/FX/pdxgui_repeat_texture.shader" - - modify_texture = { - name = "clouds" - texture = "gfx/interface/component_masks/mask_clouds.dds" - blend_mode = alphamultiply - spriteType = corneredtiled - texture_density = 3 - } - - modify_texture = { - texture = "gfx/interface/component_masks/mask_glow.dds" - mirror = vertical - blend_mode = alphamultiply - } - - state = { - name = mask_a - next = mask_b - trigger_on_create = yes - - modify_texture = { - name = "clouds" - translate_uv = { 0 -1 } - } - } - - state = { - name = mask_b - next = mask_a - duration = 8 - - modify_texture = { - name = "clouds" - translate_uv = { 0 1 } - } - } - } - - # Glow pulse animation when you have an opportunity - icon = { - visible = "[GreaterThan_int32( Scheme.GetAgentCharges, '(int32)0' )]" - parentanchor = center - position = { 0 4 } - size = { 100 114 } - texture = "gfx/interface/window_scheme/scheme_hud_bg_glow.dds" - using = Color_Bright_Yellow - alpha = 0 - - modify_texture = { - texture = "gfx/interface/component_masks/mask_clouds.dds" - blend_mode = alphamultiply - alpha = 0.8 - } - - state = { - name = a - next = b - trigger_on_create = yes - - alpha = 0 - duration = 0 - scale = 1 - - using = Animation_Curve_Default - } - - state = { - name = b - next = c - - alpha = 1 - duration = 0.3 - scale = 1.07 - - using = Animation_Curve_Default - } - - state = { - name = c - next = d - alpha = 0 - duration = 0.5 - scale = 1.1 - - using = Animation_Curve_Default - } - - state = { - name = d - next = a - - alpha = 0 - duration = 0 - delay = 3 - scale = 1 - } - } - - highlight_icon = { - texture = "gfx/interface/window_scheme/scheme_hud_bg.dds" - size = { 100% 100% } - } - - # Pogressbar & frame - highlight_icon = { - name = "progress_frame" - texture = "gfx/interface/window_scheme/scheme_hud_bg_progress_frame.dds" - size = { 100% 100% } - parentanchor = center - alpha = 0.5 - } - - progresspie = { - name = "progress" - position = { 0.3 -2.5 } - size = { 76 76 } - texture = "gfx/interface/progressbars/action_progress_thin.dds" - framesize = { 128 128 } - frame = 2 - widgetanchor = center - parentanchor = center - value = "[Scheme.GetProgressBar]" - min = 0 - max = 1 - mirror = vertical|horizontal - } - - # Target - container = { - parentanchor = center - - # Character Target - container = { - datacontext = "[Scheme.GetTargetCharacter]" - visible = "[Character.IsValid]" - parentanchor = center - position = { 0 9 } - - portrait_scheme_hud = {} - } - - # Title Target - container = { - datacontext = "[Scheme.GetTargetTitle]" - visible = "[Title.IsValid]" - parentanchor = center - position = { 0 -12 } - - coa_title_tiny = { - tooltip_visible = no - alwaystransparent = yes - } - } - - # Faith Target - container = { - datacontext = "[Scheme.GetTargetFaith]" - visible = "[Faith.IsValid]" - parentanchor = center - position = { 0 -12 } - - icon = { - name = "faith_icon" - texture = "[Faith.GetIcon]" - size = { 40 40 } - } - } - - # Culture Target - container = { - datacontext = "[Scheme.GetTargetCulture]" - visible = "[Culture.IsValid]" - parentanchor = center - position = { 0 -12 } - - text_single = { - text = "HUD_GETCULTURE" - } - } - } - - # Scheme type icon & bg - widget = { - parentanchor = bottom|hcenter - position = { 0 -16 } - - highlight_icon = { - parentanchor = center - size = { 32 32 } - texture = "gfx/interface/window_scheme/scheme_hud_icon_bg.dds" - alwaystransparent = yes - } - - highlight_icon = { - texture = "[Scheme.GetSchemeType.GetIcon]" - size = { 30 30 } - alwaystransparent = yes - parentanchor = center - } - } - - # Scheme success chance - hbox = { - parentanchor = center - position = { 0 14 } - maximumsize = { 30 20 } - spacing = 2 - - background = { - using = Background_Area_Dark - } - - icon = { - name = success_icon - size = { 20 20 } - texture = "gfx/interface/icons/schemes/icon_scheme_success.dds" - } - - text_single = { - name = "success" - text = "SCHEME_WIDGET_SUCCESS_CHANCE" - align = nobaseline - fontsize = 13 # Smallest allowed fontsize - } - - icon = { - visible = "[Scheme.IsExposed]" - size = { 20 20 } - alwaystransparent = yes - texture = "gfx/interface/icons/schemes/icon_discovered_scheme.dds" - - tooltip = "INTRIGUE_WINDOW_AGENT_DISCOVERED_TT" - } - } - - # Opportunities - widget = { - visible = "[GreaterThan_int32( Scheme.GetAgentCharges, '(int32)0' )]" - parentanchor = top|right - position = { 5 8 } - size = { 45 22 } - alwaystransparent = yes - - background = { - using = Background_Area_Dark - margin_right = 10 - - modify_texture = { - texture = "gfx/interface/component_masks/mask_fade_horizontal_middle.dds" - blend_mode = alphamultiply - } - } - - flowcontainer = { - parentanchor = center - - icon = { - parentanchor = vcenter - size = { 20 20 } - texture = "gfx/interface/icons/schemes/icon_scheme_opportunity.dds" - } - - text_single = { - text = "[Scheme.GetAgentCharges]" - default_format = "#high" - max_width = 25 - align = nobaseline - } - } - } - - ### Countermeasure icon - widget = { - visible = "[And(Scheme.GetSchemeCountermeasureProtectingTarget.IsValid, Scheme.GetSchemeType.IsHostile)]" - datacontext = "[Scheme.GetSchemeCountermeasureProtectingTarget]" - parentanchor = top|left - position = { 0 2 } - size = { 30 30 } - - tooltip = "SCHEME_COUNTERMEASURE_PROTECTING_TARGET" - - background = { - using = Background_Area_ExtraDark - margin = { 2 2 } - - modify_texture = { - texture = "gfx/interface/component_masks/mask_circle.dds" - blend_mode = alphamultiply - } - } - - # The frame - icon = { - parentanchor = center - size = { 30 30 } - alwaystransparent = yes - - texture = "gfx/interface/icons/scheme_countermeasure_types/frame_purple.dds" - } - - icon = { - visible = "[SchemeCountermeasureType.IsValid]" - parentanchor = center - size = { 30 30 } - alwaystransparent = yes - - texture = "[SchemeCountermeasureType.GetIcon]" - } - } } } } @@ -2743,7 +2439,64 @@ widget = { blockoverride "tooltipwidget" { - tooltip = "DYNASTIC_CYCLE_OPEN_CYCLE_TT" + + tooltipwidget = { + container = { + alwaystransparent = no + block "datacontext" {} + + object_tooltip_pop_out = { + blockoverride "header_additions" + { + hbox = { + margin_right = 10 + margin_top = 8 + margin_left = -4 + + icon = { + size = { 52 52 } + texture = "[Situation.GetIcon]" + } + } + } + + blockoverride "title_text" { + margin = { 0 5 } + text = "[Situation.GetNameNoTooltip]" + default_format = "#T" + } + + blockoverride "main_description" { + vbox = { + name = "current_phase_information" + datacontext = "[Situation.GetTopSubRegion.GetCurrentPhase]" + layoutpolicy_horizontal = expanding + + cooltip_paragraph = { + visible = "[Situation.GetParticipantGroupByCharacter( GetPlayer.Self ).IsValid]" + text = "SITUATION_TOOLTIP_INVOLVEMENT" + } + + cooltip_paragraph = { + text = "SITUATION_TOOLTIP_CURRENT_PHASE" + } + + cooltip_paragraph = { + text = "DYNASTIC_CYCLE_FUTURE_ERA_TT" + } + + cooltip_paragraph = { + margin_top = 10 + text = "CLICK_TO_VIEW" + } + + } + } + + blockoverride "concept_link" {} + } + } + } using = tooltip_ne } @@ -2830,24 +2583,23 @@ notifications_suggestions = { ################ TYPES AND TEMPLATES ################# ###################################################### - types HUD { type icon_hud_background_container = container { icon_hud_background = { visible = "[LessThanOrEqualTo_int32( InGameBottomBar.GetHudOptionalItemsCount, '(int32)1' )]" - size = { 420 64 } + size = { 410 64 } } icon_hud_background = { visible = "[EqualTo_int32( InGameBottomBar.GetHudOptionalItemsCount, '(int32)2' )]" - size = { 480 64 } + size = { 470 64 } } icon_hud_background = { visible = "[EqualTo_int32( InGameBottomBar.GetHudOptionalItemsCount, '(int32)3' )]" - size = { 535 64 } + size = { 530 64 } } icon_hud_background = { @@ -2856,16 +2608,11 @@ types HUD } icon_hud_background = { - visible = "[EqualTo_int32( InGameBottomBar.GetHudOptionalItemsCount, '(int32)5' )]" - size = { 640 64 } + visible = "[GreaterThanOrEqualTo_int32( InGameBottomBar.GetHudOptionalItemsCount, '(int32)5' )]" + size = { 650 64 } } - - icon_hud_background = { - visible = "[GreaterThanOrEqualTo_int32( InGameBottomBar.GetHudOptionalItemsCount, '(int32)6' )]" - size = { 720 64 } - } - } + type bottom_left_temporary_statuses = flowcontainer { name = "bottom_left_bar_temporary_statuses" @@ -3012,6 +2759,7 @@ types HUD alpha = 0 } + ### CoA widget = { parentanchor = vcenter size = { 64 65 } @@ -3033,18 +2781,7 @@ types HUD } } - # coa_house_small = { - # name = "house_button" - # datacontext = "[GetPlayer.GetHouse]" - # parentanchor = vcenter - - # using = tooltip_ne - - # tooltipwidget = { - # using = dynasty_house_tooltip - # } - # } - + ### Legitimacy button_normal = { name = "legitimacy_button" datacontext = "[Character.GetLegitimacyType]" @@ -3179,6 +2916,7 @@ types HUD } } + ### Stress widget = { name = "stress_widget" parentanchor = vcenter @@ -3597,6 +3335,7 @@ types HUD } } + ### Situational Buttons flowcontainer = { parentanchor = vcenter ignoreinvisible = yes @@ -3707,10 +3446,6 @@ types HUD default_format = "#high" max_width = 180 align = nobaseline - - # animation_attention = { - # visible = "[GreaterThan_int32( GetPlayer.GetTotalPerkPoints, '(int32)0' )]" - # } } } @@ -3720,6 +3455,7 @@ types HUD } } + # Education button_normal = { name = "education_button" visible = "[Not(GetPlayer.IsAdult)]" @@ -3747,7 +3483,7 @@ types HUD } } - + # Inventory widget = { size = { 56 56 } @@ -3805,6 +3541,7 @@ types HUD } + # Camp button_round = { name = "hud_camp_button" #tutorial uses this widgetid = "hud_camp_button" @@ -3845,6 +3582,28 @@ types HUD } } + # Potential Domicile + button_round = { + datacontext = "[Character.GetGovernment]" + visible = "[InGameBottomBar.ShouldShowPotentialDomicileInHUD]" + parentanchor = left + size = { 56 56 } + using = tooltip_ne + + enabled = no + tooltip = "[GovernmentType.GetPotentialDomicileTooltip( Character.Self )]" + + icon_round_button_base = {} + + button_icon = { + size = { 40 40 } + position = { 0 -1 } + parentanchor = center + alwaystransparent = yes + texture = "[GovernmentType.GetDomicileType.GetIcon]" + } + } + # Bloc button_normal = { name = "confederation_button" #tutorial uses this @@ -3881,7 +3640,7 @@ types HUD datacontext = "[Character.GetHouse]" datacontext = "[DynastyHouse.GetHouseAspiration]" - visible = "[And(InGameBottomBar.ShouldShowHousePowerInHUD, Not( Or(GetPlayer.GetGovernment.IsType( 'landless_adventurer_government' ), GetPlayer.GetGovernment.IsType( 'landless_minority_government' )) ) )]" + visible = "[And(InGameBottomBar.ShouldShowHousePowerInHUD, Not( IsLandlessAdventurer( GetPlayer ) ) )]" size = { 56 56 } @@ -4077,7 +3836,7 @@ types HUD progresspie = { name = "progress" - size = { 42 42 } + size = { 40 40 } texture = "gfx/interface/progressbars/action_progress_thin_blue.dds" framesize = { 128 128 } @@ -4947,6 +4706,11 @@ types HUD position = { 0 25 } tooltip_visible = no alwaystransparent = yes + + blockoverride "top_decor_visible" + { + visible = no + } } text_single = { @@ -4967,6 +4731,7 @@ types HUD state = { name = _show + duration = 0.1 start_sound = { soundeffect = "event:/SFX/UI/War/sfx_ui_war_enforce_demand" @@ -5032,6 +4797,7 @@ types HUD name = "situation_banner_item" size = { 90 90 } + onclick = "[ToggleGameViewData(Situation.GetWindowName, Situation.GetID)]" block "tooltipwidget" @@ -5046,6 +4812,12 @@ types HUD visible = "[Or(EqualTo_string( 'impact' , Situation.GetTopCurrentPhase.GetType.GetKey ), EqualTo_string( 'warning' , Situation.GetTopCurrentPhase.GetType.GetKey ))]" } + widget = { + name = "christian_situation_highlight" + size = { 100% 100% } + visible = "[EqualTo_string(Situation.GetName, GetSituation('the_christian_church').GetName)]" + } + icon = { name = "below_glow" block "glow_visible" @@ -5706,6 +5478,347 @@ types HUD } } + type button_hud_scheme = button { + name = "tutorial_highlight_lifestyle_HUD_button" + + block "click_behavior" + { + onclick = "[BottomBarSchemeItem.OnClick]" + onrightclick = "[BottomBarSchemeItem.OnClick]" + onrightclick = "[PostCommand( BottomBarSchemeItem.TriggerSchemeHudClick )]" + button_ignore = none + } + + tooltip = "BOTTOMBAR_SCHEME_TOOLTIP" + size = { 90 112 } + + ### Scheme exposed animation + icon = { + visible = "[Scheme.IsExposed]" + parentanchor = center + position = { 0 0 } + size = { 120 135 } + texture = "gfx/interface/colors/white.dds" + using = Color_Red + + shaderfile = "gfx/FX/pdxgui_repeat_texture.shader" + + modify_texture = { + name = "clouds" + texture = "gfx/interface/component_masks/mask_clouds.dds" + blend_mode = alphamultiply + spriteType = corneredtiled + texture_density = 3 + } + + modify_texture = { + texture = "gfx/interface/component_masks/mask_glow.dds" + mirror = vertical + blend_mode = alphamultiply + } + + state = { + name = mask_a + next = mask_b + trigger_on_create = yes + + modify_texture = { + name = "clouds" + translate_uv = { 0 -1 } + } + } + + state = { + name = mask_b + next = mask_a + duration = 8 + + modify_texture = { + name = "clouds" + translate_uv = { 0 1 } + } + } + } + + # Glow pulse animation when you have an opportunity + icon = { + visible = "[GreaterThan_int32( Scheme.GetAgentCharges, '(int32)0' )]" + parentanchor = center + position = { 0 4 } + size = { 100 114 } + texture = "gfx/interface/window_scheme/scheme_hud_bg_glow.dds" + using = Color_Bright_Yellow + alpha = 0 + + modify_texture = { + texture = "gfx/interface/component_masks/mask_clouds.dds" + blend_mode = alphamultiply + alpha = 0.8 + } + + state = { + name = a + next = b + trigger_on_create = yes + + alpha = 0 + duration = 0 + scale = 1 + + using = Animation_Curve_Default + } + + state = { + name = b + next = c + + alpha = 1 + duration = 0.3 + scale = 1.07 + + using = Animation_Curve_Default + } + + state = { + name = c + next = d + alpha = 0 + duration = 0.5 + scale = 1.1 + + using = Animation_Curve_Default + } + + state = { + name = d + next = a + + alpha = 0 + duration = 0 + delay = 3 + scale = 1 + } + } + + block "background_texture" { + highlight_icon = { + texture = "gfx/interface/window_scheme/scheme_hud_bg.dds" + size = { 100% 100% } + } + } + + # Pogressbar & frame + highlight_icon = { + name = "progress_frame" + texture = "gfx/interface/window_scheme/scheme_hud_bg_progress_frame.dds" + size = { 100% 100% } + parentanchor = center + alpha = 0.5 + } + + progresspie = { + name = "progress" + position = { 0.3 -2.5 } + size = { 76 76 } + texture = "gfx/interface/progressbars/action_progress_thin.dds" + framesize = { 128 128 } + frame = 2 + widgetanchor = center + parentanchor = center + value = "[Scheme.GetProgressBar]" + min = 0 + max = 1 + mirror = vertical|horizontal + } + + # Target + container = { + parentanchor = center + + # Character Target + container = { + datacontext = "[Scheme.GetTargetCharacter]" + visible = "[Character.IsValid]" + parentanchor = center + position = { 0 9 } + + portrait_scheme_hud = {} + } + + # Title Target + container = { + datacontext = "[Scheme.GetTargetTitle]" + visible = "[Title.IsValid]" + parentanchor = center + position = { 0 -12 } + + coa_title_tiny = { + tooltip_visible = no + alwaystransparent = yes + } + } + + # Faith Target + container = { + datacontext = "[Scheme.GetTargetFaith]" + visible = "[Faith.IsValid]" + parentanchor = center + position = { 0 -12 } + + icon = { + name = "faith_icon" + texture = "[Faith.GetIcon]" + size = { 40 40 } + } + } + + # Culture Target + container = { + datacontext = "[Scheme.GetTargetCulture]" + visible = "[Culture.IsValid]" + parentanchor = center + position = { 0 -12 } + + text_single = { + text = "HUD_GETCULTURE" + } + } + } + + # Scheme type icon & bg + + widget = { + parentanchor = bottom|hcenter + position = { 0 -16 } + + block "scheme_type_icon_and_background" + { + highlight_icon = { + parentanchor = center + size = { 32 32 } + texture = "gfx/interface/window_scheme/scheme_hud_icon_bg.dds" + alwaystransparent = yes + } + + highlight_icon = { + texture = "[Scheme.GetSchemeType.GetIcon]" + size = { 30 30 } + alwaystransparent = yes + parentanchor = center + } + } + } + + # Scheme success chance + hbox = { + parentanchor = center + position = { 0 14 } + maximumsize = { 30 20 } + spacing = 2 + + background = { + using = Background_Area_Dark + } + + icon = { + name = success_icon + size = { 20 20 } + texture = "gfx/interface/icons/schemes/icon_scheme_success.dds" + } + + text_single = { + name = "success" + text = "SCHEME_WIDGET_SUCCESS_CHANCE" + align = nobaseline + fontsize = 13 # Smallest allowed fontsize + } + + icon = { + visible = "[Scheme.IsExposed]" + size = { 20 20 } + alwaystransparent = yes + texture = "gfx/interface/icons/schemes/icon_discovered_scheme.dds" + + tooltip = "INTRIGUE_WINDOW_AGENT_DISCOVERED_TT" + } + } + + # Opportunities + widget = { + visible = "[And( GreaterThan_int32( Scheme.GetAgentCharges, '(int32)0' ), ObjectsEqual( Scheme.GetOwner, GetPlayer.Self ) )]" + parentanchor = top|right + position = { 5 8 } + size = { 45 22 } + alwaystransparent = yes + + background = { + using = Background_Area_Dark + margin_right = 10 + + modify_texture = { + texture = "gfx/interface/component_masks/mask_fade_horizontal_middle.dds" + blend_mode = alphamultiply + } + } + + flowcontainer = { + parentanchor = center + + icon = { + parentanchor = vcenter + size = { 20 20 } + texture = "gfx/interface/icons/schemes/icon_scheme_opportunity.dds" + } + + text_single = { + text = "[Scheme.GetAgentCharges]" + default_format = "#high" + max_width = 25 + align = nobaseline + } + } + } + + ### Countermeasure icon + widget = { + visible = "[And(Scheme.GetSchemeCountermeasureProtectingTarget.IsValid, Scheme.GetSchemeType.IsHostile)]" + datacontext = "[Scheme.GetSchemeCountermeasureProtectingTarget]" + parentanchor = top|left + position = { 0 2 } + size = { 30 30 } + + tooltip = "SCHEME_COUNTERMEASURE_PROTECTING_TARGET" + + background = { + using = Background_Area_ExtraDark + margin = { 2 2 } + + modify_texture = { + texture = "gfx/interface/component_masks/mask_circle.dds" + blend_mode = alphamultiply + } + } + + # The frame + icon = { + parentanchor = center + size = { 30 30 } + alwaystransparent = yes + + texture = "gfx/interface/icons/scheme_countermeasure_types/frame_purple.dds" + } + + icon = { + visible = "[SchemeCountermeasureType.IsValid]" + parentanchor = center + size = { 30 30 } + alwaystransparent = yes + + texture = "[SchemeCountermeasureType.GetIcon]" + } + } + } + type button_ghw_banner = button_normal { size = { 78 82 } onclick = "[OpenGameViewData( 'great_holy_war', GreatHolyWar.GetID )]" @@ -6011,6 +6124,7 @@ types HUD button_normal = { onclick = "[SetMapMode('religions')]" + onclick = "[ClearExploredFaiths]" shortcut = "map_mode_3" shortcut = "mapmode_faith_secondary" } @@ -6023,14 +6137,14 @@ types HUD button_normal = { onclick = "[SetMapMode('houses')]" - onclick = "[ClearExploringHouses]" + onclick = "[ClearExploredHouses]" shortcut = "map_mode_4" shortcut = "mapmode_house_secondary" } button_normal = { onclick = "[SetMapMode('realms')]" - onclick = "[ClearExploringRealms]" + onclick = "[ClearExploredRealms]" shortcut = "map_mode_1" } @@ -6109,6 +6223,15 @@ types HUD shortcut = "map_mode_confederations" } + button_normal = { + onclick = "[SetMapMode( 'holy_orders' )]" + shortcut = "map_mode_holy_orders" + } + + button_normal = { + onclick = "[SetMapMode( 'clerical_regions' )]" + shortcut = "map_mode_clerical_regions" + } button_normal = { name = "find_title_shortcut" onclick = "[ToggleGameView( 'find_title' )]" @@ -6315,6 +6438,7 @@ types HUD hbox = { layoutpolicy_horizontal = expanding + expand = {} hbox = { @@ -6369,9 +6493,11 @@ types HUD } } } + spacer = { - size = { 10 1} + size = { 20 1} } + divider_light = { layoutpolicy_vertical = expanding alpha = 0.8 @@ -6434,6 +6560,55 @@ types HUD using = tooltip_ne } + ### Width set to 0 to not take up any horizontal space to be able to place it right on the divider in between sections + ### Allow outside works around this to make buttons clickable + widget = { + size = { 0 40 } + allow_outside = yes + + flowcontainer = { + parentanchor = center + position = { -2 0 } + direction = vertical + ignoreinvisible = yes + + spacing = -5 + + button_icon = { + datacontext = "[GetPlayer]" + datacontext = "[GetDecisionWithKey( 'extract_gold_from_treasury' )]" + visible = "[Decision.IsShownForPlayer]" + + size = { 20 20 } + texture = "gfx/interface/icons/flat_icons/transfer_left.dds" + + enabled = "[Decision.IsPossibleForPlayer]" + onclick = "[OpenGameViewData( 'decision_detail', Decision.Self)]" + + tooltip = "TRANSFER_TREASURY_TO_GOLD_DECISION_TOOLTIP" + tooltip_offset = { 0 -8 } + using = tooltip_se + } + + button_icon = { + name = "transfer_gold_to_treasury_button_tutorial_uses_this" + datacontext = "[GetPlayer]" + + size = { 20 20 } + texture = "gfx/interface/icons/flat_icons/transfer_right.dds" + + enabled = "[Character.CanSendPlayerInteraction('transfer_small_gold_amount_to_treasury_interaction')]" + onclick = "[Character.SendPlayerInteraction( Select_CString( IsCtrlDown, 'transfer_huge_gold_amount_to_treasury_interaction', 'transfer_small_gold_amount_to_treasury_interaction' ) )]" + onrightclick = "[Character.SendPlayerInteraction( 'transfer_large_gold_amount_to_treasury_interaction' )]" + button_ignore = none + + tooltip = "TRANSFER_GOLD_TO_TREASURY_INTERACTION_TOOLTIP" + tooltip_offset = { 0 10 } + using = tooltip_se + } + } + } + background = { texture = "gfx/interface/skinned/resource_panel_piece.dds" } @@ -6446,63 +6621,11 @@ types HUD layoutpolicy_horizontal = expanding allow_outside = yes - widget = { - size = { 20 40 } - allow_outside = yes - - vbox = { - position = { -10 0 } - parentanchor = center - - button_round = { - size = { 20 20 } - - datacontext = "[GetPlayer]" - datacontext = "[GetDecisionWithKey( 'extract_gold_from_treasury' )]" - - visible = "[Decision.IsShownForPlayer]" - onclick = "[OpenGameViewData( 'decision_detail', Decision.Self)]" - - tooltip = "TRANSFER_TREASURY_TO_GOLD_DECISION_TOOLTIP" - using = tooltip_se - - button_icon = { - size = { 100% 100% } - alwaystransparent = yes - texture = "gfx/interface/icons/flat_icons/transfer_left.dds" - enabled = "[Decision.IsPossibleForPlayer]" - } - } - - button_round = { - size = { 20 20 } - - name = "transfer_gold_to_treasury_button_tutorial_uses_this" - datacontext = "[GetPlayer]" - enabled = "[Character.CanSendPlayerInteraction('transfer_small_gold_amount_to_treasury_interaction')]" - onclick = "[Character.SendPlayerInteraction( Select_CString( IsCtrlDown, 'transfer_huge_gold_amount_to_treasury_interaction', 'transfer_small_gold_amount_to_treasury_interaction' ) )]" - onrightclick = "[Character.SendPlayerInteraction( 'transfer_large_gold_amount_to_treasury_interaction' )]" - button_ignore = none - tooltip = "TRANSFER_GOLD_TO_TREASURY_INTERACTION_TOOLTIP" - using = tooltip_se - - button_icon = { - size = { 100% 100% } - alwaystransparent = yes - texture = "gfx/interface/icons/flat_icons/transfer_right.dds" - } - - tooltip_offset = { 0 10 } - } - } - } - expand = {} hbox = { - spacing = 7 - name = "treasury_tutorial_uses_this" + spacing = 7 icon = { name = "treasury_icon" @@ -6554,9 +6677,7 @@ types HUD } } - spacer = { - size = { 10 1} - } + expand = {} divider_light = { layoutpolicy_vertical = expanding @@ -6733,7 +6854,7 @@ types HUD button = { size = { 112 45 } - onclick = "[OpenGameViewData( 'faith', GetPlayer.GetFaith.GetID )]" + onclick = "[OpenGameViewData( 'faith', GetPlayer.GetFaith.Self )]" using = tooltip_ne tooltipwidget = { @@ -6793,7 +6914,7 @@ types HUD widget = { name = "provisions" - visible = "[Or(GetPlayer.GetGovernment.IsType( 'landless_adventurer_government' ), GetPlayer.GetGovernment.IsType( 'landless_minority_government' ))]" + visible = "[IsLandlessAdventurer( GetPlayer )]" size = { 112 70 } widget = { @@ -6901,7 +7022,7 @@ types HUD widget = { name = "influence" datacontext = "[InGameTopbar.GetInfluenceItem]" - visible = "[GetPlayer.GetGovernment.HasGovernmentFlag( 'government_has_influence' )]" + visible = "[GetPlayer.GetGovernment.HasMechanic( 'administrative' )]" size = { 112 70 } widget = { @@ -7056,7 +7177,7 @@ types HUD name = "herd" datacontext = "[GetPlayer]" datacontext = "[Character.GetDomicile]" - visible = "[Or( IsNomad( GetPlayer ), Character.GetGovernment.HasGovernmentFlag( 'government_is_prepublic') )]" + visible = "[IsNomad( GetPlayer )]" size = { 112 70 } state = { @@ -7231,7 +7352,7 @@ types HUD widget = { name = "domain_limit" - visible = "[Not( Or(GetPlayer.GetGovernment.IsType( 'landless_adventurer_government' ), GetPlayer.GetGovernment.IsType( 'landless_minority_government' )))]" + visible = "[Not( IsLandlessAdventurer( GetPlayer ) )]" layoutpolicy_vertical = expanding @@ -7297,7 +7418,6 @@ types HUD object_tooltip_pop_out = { blockoverride "title_text" { - margin = { 0 8 } text = "ROYAL_COURT" default_format = "#T" } @@ -7335,6 +7455,11 @@ types HUD } } } + + blockoverride "tooltip_text_shortcut" { + align = right + margin_right = 0 + } } } @@ -9009,4 +9134,222 @@ types HUD align = nobaseline } } + + type hud_fulfillment_horizontal_widget = widget_spiritual_fulfillment_bar_horizontal { + allow_outside = yes + blockoverride "fulfillment_datacontext" + { + datacontext = "[InGameBottomBar.GetFulfillmentBar]" + } + } + + type hud_personal_beliefs_header_art = widget { + size = { 200 74 } + + proportional_icon = { + size = { 100% 100% } + + block "art_texture" {} + + using = Mask_Rough_Edges + + modify_texture = { + texture = "gfx/interface/component_masks/mask_fade_horizontal_right.dds" + blend_mode = alphaMultiply + } + } + } + + type hud_personal_beliefs_tooltip_container = object_tooltip_pop_out + { + datacontext = "[GetPlayer]" + datacontext = "[Character.GetSpiritualFulfillmentType]" + datacontext = "[Character.GetSpiritualFulfillmentLevel]" + block "fulfillment_bar_datacontext" + { + datacontext = "[InGameBottomBar.GetFulfillmentBar]" + } + + blockoverride "title_text" + { + margin = { 0 8 } + text = "hud_personal_belief_tt" + default_format = "#T" + } + + blockoverride "subheading" + { + text_single = { + layoutpolicy_horizontal = expanding + autoresize = yes + fontsize_min = 14 + using = Font_Size_Small + text = "hud_personal_belief_tt_subheading" + default_format = "#weak" + fonttintcolor = "[TooltipInfo.GetTintColor]" + max_width = 400 + + margin_top = -4 + } + } + + blockoverride "concept_link" + { + text = "[spiritual_fulfillment|E]" + } + + blockoverride "header_additions" + { + widget = { + size = { 120 74 } + + hud_personal_beliefs_header_art = { + position = { -15 0 } + + visible = "[LessThan_int32( Character.GetRelativeFulfillmentLevel, '(int32)0' )]" + blockoverride "art_texture" + { + texture = "gfx/interface/window_faith/pam_spiritual_fulfillment_background_low.dds" + } + } + hud_personal_beliefs_header_art = { + position = { -15 0 } + + visible = "[EqualTo_int32( Character.GetRelativeFulfillmentLevel, '(int32)0' )]" + blockoverride "art_texture" + { + texture = "gfx/interface/window_faith/pam_spiritual_fulfillment_background_neutral.dds" + } + } + hud_personal_beliefs_header_art = { + position = { -15 0 } + + visible = "[GreaterThan_int32( Character.GetRelativeFulfillmentLevel, '(int32)0' )]" + blockoverride "art_texture" + { + texture = "gfx/interface/window_faith/pam_spiritual_fulfillment_background_high.dds" + } + } + } + } + + blockoverride "main_description" + { + vbox = { + layoutpolicy_horizontal = expanding + spacing = 5 + margin = { 10 0 } + allow_outside = yes + + text_single = { + margin_top = 15 + layoutpolicy_horizontal = expanding + text = "CONTRACT_EFFECTS_HEADER" + align = top + fonttintcolor = "[TooltipInfo.GetTintColor]" + default_format = "#S" + } + text_multi = { + layoutpolicy_horizontal = expanding + min_width = 340 + max_width = 500 + margin_top = -7 + margin_bottom = 5 + text = "[SpiritualFulfillmentLevel.GetSpiritualFulfillmentLevelEffects]" + autoresize = yes + fonttintcolor = "[TooltipInfo.GetTintColor]" + } + + hbox = { + visible = "[GreaterThanOrEqualTo_CFixedPoint( Character.GetSpiritualFulfillment, '(CFixedPoint)0' )]" + layoutpolicy_horizontal = expanding + spacing = 5 + margin_left = -10 + min_height = 45 + + background = { + using = Background_Area + margin = { -5 -5 } + + modify_texture = { + texture = "gfx/interface/component_masks/mask_fade_horizontal_right.dds" + blend_mode = alphaMultiply + } + } + + icon_spiritual_fulfillment = {} + + text_single = { + text = "hud_personal_belief_positive_fulfillment_level" + layoutpolicy_horizontal = expanding + align = nobaseline + } + } + + hbox = { + visible = "[LessThan_CFixedPoint( Character.GetSpiritualFulfillment, '(CFixedPoint)0' )]" + layoutpolicy_horizontal = expanding + spacing = 5 + margin_left = -10 + min_height = 45 + + background = { + using = Background_Area + margin = { -5 -5 } + + modify_texture = { + texture = "gfx/interface/component_masks/mask_fade_horizontal_right.dds" + blend_mode = alphaMultiply + } + } + + icon_spiritual_fulfillment = {} + + text_single = { + text = "hud_personal_belief_negative_fulfillment_level" + layoutpolicy_horizontal = expanding + align = nobaseline + } + } + + block "fulfillment_meter" + { + hbox = { + layoutpolicy_horizontal = expanding + allow_outside = yes + + hud_fulfillment_horizontal_widget = { + visible = "[GreaterThanOrEqualTo_CFixedPoint( Character.GetSpiritualFulfillment, '(CFixedPoint)0' )]" + allow_outside = yes + } + hud_fulfillment_horizontal_widget = { + visible = "[LessThan_CFixedPoint( Character.GetSpiritualFulfillment, '(CFixedPoint)0' )]" + allow_outside = yes + + blockoverride "fulfillment_filled" + { + background = { + texture = "gfx/interface/progressbars/progress_red.dds" + } + } + } + } + } + + hbox = { + layoutpolicy_horizontal = expanding + + text_single = { + text = "hud_personal_belief_click_to_view" + } + + expand = {} + + text_single = { + text = "HUD_PERSONAL_BELIEFS_SHORTCUT" + } + } + } + } + } } diff --git a/gui/window_faith.gui b/gui/window_faith.gui index 076065d2a..58446ba0b 100644 --- a/gui/window_faith.gui +++ b/gui/window_faith.gui @@ -2375,7 +2375,7 @@ types FaithWindow ###Religion Defined highlight_icon = {#default system defined in religion name = "doctrine_group_bg_def" - visible = "[Not(Or(Faith.HasDoctrineByKey( 'special_doctrine_banner_novelist' ),Faith.HasDoctrineByKey( 'special_doctrine_banner_europeanist' ),Faith.HasDoctrineByKey( 'special_doctrine_banner_britannic' )))]" + visible = "[Not(Or(Or(Faith.HasDoctrineByKey( 'special_doctrine_banner_novelist' ),Faith.HasDoctrineByKey( 'special_doctrine_banner_europeanist' )), Faith.HasDoctrineByKey( 'special_doctrine_banner_britannic' )))]" size = { 130 200 } texture = "[Faith.GetTenetBackgroundIcon( Rite.Self, TenetType.Self )]" } diff --git a/gui/window_intrigue.gui b/gui/window_intrigue.gui new file mode 100644 index 000000000..4c49bdfa5 --- /dev/null +++ b/gui/window_intrigue.gui @@ -0,0 +1,3314 @@ +###################################################### +##################### INTRIGUE ####################### +###################################################### + +window = { + name = "intrigue_window" + widgetid = "intrigue_window" + parentanchor = top|right + layer = windows_layer + movable = no + allow_outside = yes + + using = Window_Size_MainTab + + state = { + name = _show + using = Animation_FadeIn_Quick + using = Sound_WindowShow_Standard + using = Window_Position_MainTab + + on_start = "[IntrigueWindow.SetTab( 'schemes' )]" + on_start = "[GetVariableSystem.Set( 'secrets_show_all', 'true' )]" + on_start = "[GetVariableSystem.Set( 'own_scheme_expand', 'true' )]" + } + + state = { + name = _hide + using = Animation_FadeOut_Quick + using = Sound_WindowHide_Standard + using = Window_Position_MainTab_Hide + } + + margin_widget = { + size = { 100% 100% } + margin_top = 30 + margin_bottom = 25 + margin_right = 13 + + widget = { + size = { 100% 100% } + + vbox = { + using = Window_Margins + + header_pattern = { + layoutpolicy_horizontal = expanding + size = { 0 60 } + + blockoverride "header_text" + { + text = "INTRIGUE_VIEW" + } + + blockoverride "button_close" + { + onclick = "[IntrigueWindow.Close]" + } + } + + hbox = { + name = "tabs" + layoutpolicy_horizontal = expanding + + button_tab = { + name = "open_scheme_tab" #tutorial uses this + onclick = "[IntrigueWindow.SetTab( 'schemes' )]" + down = "[IntrigueWindow.IsTabShown( 'schemes' )]" + shortcut = "tab_1" + + alwaystransparent = "[IntrigueWindow.IsTabShown( 'schemes' )]" + + blockoverride "tab_label" + { + text = "OPEN_SCHEMES_TAB" + max_width = 140 + } + + blockoverride "icon_visible" {} + + blockoverride "tab_icon" + { + texture = "gfx/interface/icons/flat_icons/scheme.dds" + down = "[IntrigueWindow.IsTabShown( 'schemes' )]" + } + + using = tooltip_above + } + + button_tab = { + name = "open_hooks_and_secrets_tab" + onclick = "[IntrigueWindow.SetTab( 'hooks_and_secrets' )]" + down = "[IntrigueWindow.IsTabShown( 'hooks_and_secrets' )]" + shortcut = "tab_2" + + alwaystransparent = "[IntrigueWindow.IsTabShown( 'hooks_and_secrets' )]" + + blockoverride "tab_label" + { + text = "OPEN_HOOKS_AND_SECRETS_TAB" + max_width = 140 + } + + blockoverride "icon_visible" {} + + blockoverride "tab_icon" + { + texture = "gfx/interface/icons/flat_icons/hooks_and_secrets.dds" + down = "[IntrigueWindow.IsTabShown( 'hooks_and_secrets' )]" + } + + using = tooltip_above + } + + button_tab = { + name = "open_puppets_tab" + visible = "[IntrigueWindow.HasPuppets]" + onclick = "[IntrigueWindow.SetTab( 'puppets' )]" + down = "[IntrigueWindow.IsTabShown( 'puppets' )]" + shortcut = "tab_3" + + alwaystransparent = "[IntrigueWindow.IsTabShown( 'puppets' )]" + + blockoverride "tab_label" + { + text = "puppets_section_title" + max_width = 140 + } + + blockoverride "icon_visible" {} + + blockoverride "tab_icon" + { + texture = "gfx/interface/icons/flat_icons/puppet.dds" + down = "[IntrigueWindow.IsTabShown( 'puppets' )]" + } + + using = tooltip_above + } + } + + vbox = { + layoutpolicy_horizontal = expanding + layoutpolicy_vertical = expanding + + ### SCHEMES + schemes_tab_vbox = {} + + ### HOOKS AND SECRETS + hooks_secrets_scrollbox = {} + + ### Puppets + vbox_puppet_section = { + name = "vbox_puppet_section" + widgetid = "vbox_puppet_section" + } + } + } + } + } +} + +###################################################### +################ TYPES AND TEMPLATES ################# +###################################################### + +types IntrigueWindow +{ + type widget_own_scheme_item = widget { + name = "my_own_scheme" + datacontext = "[SchemeItem.GetScheme]" + + widget = { + visible = "[Scheme.IsExposed]" + parentanchor = bottom|hcenter + size = { 99% 92% } + + icon = { + position = { 0 -5 } + size = { 100% 101% } + texture = "gfx/interface/colors/white.dds" + alpha = 0.3 + using = Color_Red + using = Mask_Rough_Edges + + shaderfile = "gfx/FX/pdxgui_repeat_texture.shader" + + modify_texture = { + texture = "gfx/interface/component_masks/mask_vignette.dds" + blend_mode = alphamultiply + } + + state = { + trigger_on_create = yes + name = a + next = b + alpha = 0.4 + duration = 2 + using = Animation_Curve_Default + } + + state = { + name = b + next = a + alpha = 0.2 + duration = 2.5 + using = Animation_Curve_Default + } + + modify_texture = { + name = "clouds" + texture = "gfx/interface/component_masks/mask_clouds.dds" + blend_mode = alphamultiply + spriteType = corneredtiled + texture_density = 1 + } + + state = { + name = mask_a + next = mask_b + trigger_on_create = yes + + modify_texture = { + name = "clouds" + translate_uv = { 0 -1 } + } + } + + state = { + name = mask_b + next = mask_a + duration = 40 + + modify_texture = { + name = "clouds" + translate_uv = { 0 1 } + } + } + } + } + + vbox = { + set_parent_size_to_minimum = yes + + background = { + using = Background_Area + } + + background = { + using = Background_Frame + + modify_texture = { + texture = "gfx/interface/component_masks/mask_fade_corner.dds" + blend_mode = alphamultiply + mirror = horizontal + } + } + + hbox = { + name = "my_own_scheme_header" + layoutpolicy_horizontal = expanding + + margin = { 0 5 } + margin_left = 20 + margin_right = 5 + + background = { + texture = "gfx/interface/window_scheme/scheme_panel_header_banner.dds" + margin_top = -2 + margin_bottom = -3 + } + + hbox = { + layoutpolicy_horizontal = expanding + + icon = { + texture = "[Scheme.GetSchemeType.GetIcon]" + size = { 30 30 } + alwaystransparent = yes + + tooltip = "SCHEME_WINDOW_TT_ITEM" + + background = { + texture = "gfx/interface/window_scheme/scheme_panel_header_icon_bg.dds" + margin = { 13 13 } + } + } + + text_single = { + text = "SCHEME_WINDOW_ITEM_NAME" + using = Font_Size_Medium + align = nobaseline + max_width = 430 + margin_left = 15 + } + + icon = { + visible = "[Scheme.IsExposed]" + size = { 30 30 } + texture = "gfx/interface/icons/schemes/icon_discovered_scheme.dds" + + tooltip = "SCHEME_WINDOW_EXPOSED_TOOLTIP" + + glow = { + using = Color_Red + using = Glow_Standard + glow_radius = 3 + } + + state = { + trigger_on_create = yes + + name = max_glow + next = min_glow + duration = 1 + using = Animation_Curve_Default + + glow_alpha = 0.8 + } + + state = { + name = min_glow + next = max_glow + duration = 1.6 + using = Animation_Curve_Default + + glow_alpha = 0.2 + } + } + + expand = {} + } + + button_cancel = { + name = "cancel_button" + size = { 30 30 } + + onclick = "[SchemeItem.OnCancelClick]" + enabled = "[SchemeItem.CanCancelScheme]" + tooltip = "[SchemeItem.GetCancelSchemeDescription]" + } + } + + hbox = { + layoutpolicy_horizontal = expanding + margin = { 10 0 } + margin_top = 5 + spacing = 5 + + widget = { + name = "scheme_target_portrait_and_countermeasure" + size = { 110 120 } + + # Target + container = { + parentanchor = center + + # Character Target + container = { + datacontext = "[Scheme.GetTargetCharacter]" + visible = "[Character.IsValid]" + + portrait_head = { + datacontext = "[Scheme.GetTargetCharacter]" + using = tooltip_es + + blockoverride "portrait_button" + { + tooltip = "SCHEME_WINDOW_SCHEME_TARGET" + } + } + } + + # Title Target + container = { + datacontext = "[Scheme.GetTargetTitle]" + visible = "[Title.IsValid]" + parentanchor = center + + coa_title_big = { + tooltip_visible = no + alwaystransparent = yes + } + } + + # Faith Target + container = { + datacontext = "[Scheme.GetTargetFaith]" + visible = "[Faith.IsValid]" + + icon = { + name = "faith_icon" + size = { 100 100 } + texture = "[Faith.GetIcon]" + } + } + + # Culture Target + container = { + datacontext = "[Scheme.GetTargetCulture]" + visible = "[Culture.IsValid]" + + text_single = { + text = "INTRIGUE_WINDOW_GETCULTURE" + } + } + } + + widget = { + visible = "[Scheme.GetSchemeCountermeasureProtectingTarget.IsValid]" + datacontext = "[Scheme.GetSchemeCountermeasureProtectingTarget]" + parentanchor = top|left + size = { 30 30 } + + tooltip = "SCHEME_COUNTERMEASURE_PROTECTING_TARGET" + + background = { + using = Background_Area_ExtraDark + margin = { 2 2 } + + modify_texture = { + texture = "gfx/interface/component_masks/mask_circle.dds" + blend_mode = alphamultiply + } + } + + # The frame + icon = { + parentanchor = center + size = { 30 30 } + alwaystransparent = yes + + texture = "gfx/interface/icons/scheme_countermeasure_types/frame_purple.dds" + } + + # The countermeasure icon + icon = { + visible = "[SchemeCountermeasureType.IsValid]" + parentanchor = center + size = { 30 30 } + alwaystransparent = yes + + texture = "[SchemeCountermeasureType.GetIcon]" + } + } + } + + vbox = { + layoutpolicy_horizontal = expanding + layoutpolicy_vertical = expanding + + widget = { + visible = "[Not(SchemeItem.GetScheme.GetSchemeType.IsBasic)]" + size = { 390 30 } + allow_outside = yes + layoutpolicy_horizontal = expanding + + tooltip = "SCHEME_WINDOW_SUCCESS_TOOLTIP" + + widget = { + name = "scheme_success_progressbar" + datacontext = "[SchemeItem.GetProgressLevels]" + parentanchor = right|vcenter + position = { -8 0 } + size = { 350 16 } + allow_outside = yes + + icon = { + parentanchor = center + size = { 372 26 } + texture = "gfx/interface/window_scheme/scheme_success_progressbar_bg.dds" + } + + hbox_complex_bar_progress_next = { + blockoverride "texture_decrease" { + texture = "gfx/interface/progressbars/progress_standard.dds" + } + + blockoverride "texture_filled" { + texture = "gfx/interface/progressbars/progress_grandeur_increase.dds" + } + } + + icon = { + name = "success_icon" + size = { 30 30 } + texture = "gfx/interface/icons/schemes/icon_scheme_success.dds" + position = { -32 -8} + } + + hbox_complex_bar_levels = { + layoutpolicy_horizontal = expanding + + blockoverride "marker" { + widget_level_marker = { + allow_outside = yes + scale = 0.80 + + blockoverride "visible_active" { + visible = "[EqualTo_CFixedPoint( Scheme.GetSuccessChance, ComplexBarItem.GetValue )]" + } + + text_single = { + parentanchor = center + + text = "[ComplexBarItem.GetValue|0%/]" + tooltip = "[SchemeItem.GetProgressLevelTooltips( PdxGuiWidget.GetIndexInDataModel )]" + align = nobaseline + + using = Font_Size_Medium + } + } + } + } + } + } + + hbox = { + layoutpolicy_horizontal = expanding + + vbox = { + layoutpolicy_horizontal = expanding + + hbox = { + datacontext = "[SchemeItem.GetScheme]" + visible = "[Scheme.GetSchemeType.IsBasic]" + layoutpolicy_horizontal = expanding + spacing = 5 + + tooltip = "SCHEME_WINDOW_SUCCESS_BASIC_TOOLTIP" + + icon = { + name = "success_icon" + size = { 30 30 } + + texture = "gfx/interface/icons/schemes/icon_scheme_success.dds" + } + + text_single = { + name = "success_chance" + text = "SCHEME_WINDOW_SUCCESS_CHANCE" + align = nobaseline + max_width = 310 + } + + expand = {} + } + + hbox = { + layoutpolicy_horizontal = expanding + spacing = 5 + + tooltip = "SCHEME_WINDOW_PROGRESS_INFO_BREAKDOWN" + + icon = { + name = "speed_icon" + size = { 30 30 } + + texture = "gfx/interface/icons/schemes/icon_scheme_speed.dds" + } + + text_single = { + name = "speed" + visible = "[Scheme.IsUnfrozen]" + text = "[SelectLocalization(Scheme.GetSchemeType.IsBasic, 'SCHEME_WINDOW_PROGRESS_INFO_BASIC', 'SCHEME_WINDOW_PROGRESS_INFO')]" + align = nobaseline + max_width = 310 + } + + text_single = { + name = "scheme_frozen" + visible = "[Scheme.IsFrozen]" + text = "SCHEME_WINDOW_PROGRESS_FROZEN" + align = nobaseline + max_width = 310 + } + + expand = {} + } + + hbox = { + visible = "[Scheme.IsSecret]" + layoutpolicy_horizontal = expanding + spacing = 5 + + tooltip = "SCHEME_WINDOW_SECRECY_TOOLTIP" + + icon = { + name = "secrecy_icon" + size = { 30 30 } + texture = "gfx/interface/icons/schemes/icon_secrecy.dds" + } + + text_single = { + name = "secrecy" + text = "SCHEME_WINDOW_SECRECY" + align = nobaseline + max_width = 310 + } + + expand = {} + } + + hbox = { + visible = "[Scheme.IsSecret]" + layoutpolicy_horizontal = expanding + spacing = 5 + + icon = { + name = "breach_not_in_grace_period" + visible = "[LessThanOrEqualTo_CFixedPoint( Scheme.MakeScope.Var('secrecy_grace_period').GetValue, '(CFixedPoint)0' )]" + size = { 30 30 } + texture = "gfx/interface/icons/schemes/icon_scheme_breach.dds" + } + + icon = { + name = "breach_in_grace_period" + visible = "[Not( LessThanOrEqualTo_CFixedPoint( Scheme.MakeScope.Var('secrecy_grace_period').GetValue, '(CFixedPoint)0' ))]" + size = { 30 30 } + texture = "gfx/interface/icons/schemes/icon_scheme_breach_grace_period.dds" + } + + text_single = { + name = "breaches" + text = "SCHEME_WINDOW_BREACHES" + align = nobaseline + max_width = 310 + } + + expand = {} + } + + text_multi = { + visible = "[And( Scheme.HasTaskContract, InDebugMode )]" + layoutpolicy_horizontal = expanding + raw_text= "#D Contract: [Scheme.GetTaskContract.GetNameNoTooltip]#!" + } + + expand = {} + + hbox = { + widget = { + visible = "[SchemeItem.GetScheme.GetSchemeType.IsBasic]" + size = { 384 0 } + } + } + } + } + + expand = {} + } + } + + spacer = { + visible = "[IsDataModelEmpty(Scheme.GetModifiers)]" + size = { 0 10 } + } + + hbox = { + visible = "[Not( IsDataModelEmpty(Scheme.GetModifiers))]" + layoutpolicy_horizontal = expanding + margin_bottom = 5 + margin_left = 10 + + hbox = { + layoutpolicy_horizontal = expanding + margin = { 5 5 } + spacing = 5 + + background = { + using = Background_Area + + modify_texture = { + texture = "gfx/interface/component_masks/mask_fade_horizontal_thick.dds" + blend_mode = alphamultiply + mirror = horizontal + } + } + + text_single = { + text = "SCHEME_WINDOW_MODIFIERS" + align = nobaseline + margin_left = 10 + } + + fixedgridbox = { + addcolumn = 30 + addrow = 25 + flipdirection = yes + datamodel_wrap = 10 + maxhorizontalslots = 10 + maxverticalslots = 1 + + datamodel = "[Scheme.GetModifiers]" + item = { + widget = { + parentanchor = vcenter + size = { 25 25 } + + datacontext = "[SchemeModifier.GetStaticModifier]" + + icon = { + name = "scheme_modifier_icon" + size = { 100% 100% } + texture = "[SchemeModifier.GetIcon]" + } + + tooltipwidget = { + static_modifier_tooltip = { + + blockoverride "description_text_data" + { + text = "[SchemeModifier.GetDesc]" + } + } + } + } + } + } + + expand = {} + } + } + + button_standard = { + name = "open_scheme_prep" + visible = "[Not(SchemeItem.GetScheme.GetSchemeType.IsBasic)]" + size = { 490 44 } + + onclick = "[PostCommand( SchemeItem.TriggerSchemeHudClick )]" + onrightclick = "[PostCommand( SchemeItem.TriggerSchemeHudClick )]" + + tooltip = "SCHEME_WINDOW_OPEN_PREP_EXPLANATION_TT" + + icon = { + parentanchor = vcenter + position = { 2 0 } + size = { 98 56 } + texture = "gfx/interface/window_scheme/scheme_opportunity_illustration.dds" + alpha = 0.6 + scale = 0.7 + + modify_texture = { + texture = "gfx/interface/component_masks/mask_fade_horizontal_extended.dds" + blend_mode = alphamultiply + } + } + + icon = { + parentanchor = center + size = { 99.3% 40 } + + texture = "gfx/interface/component_tiles/tile_vignette_3px.dds" + spriteType = Corneredtiled + spriteborder = { 5 5 } + } + + hbox = { + datacontext = "[SchemeItem.GetScheme]" + layoutpolicy_horizontal = expanding + + text_single = { + alwaystransparent = yes + text = "SCHEME_WINDOW_OPEN_PREP_TT" + align = left|nobaseline + max_width = 480 + } + } + + widget = { + parentanchor = right|vcenter + position = { -10 0 } + + hbox = { + widgetanchor = right|vcenter + parentanchor = center + layoutpolicy_horizontal = preferred + + icon = { + size = { 30 30 } + texture = "gfx/interface/icons/schemes/icon_scheme_opportunity.dds" + visible = "[Not( SchemeHasExecutableAdvantages( Scheme ) )]" + } + + icon = { + size = { 30 30 } + texture = "gfx/interface/icons/schemes/icon_scheme_opportunity.dds" + visible = "[SchemeHasExecutableAdvantages( Scheme )]" + + glow = { + glow_radius = 3 + using = Glow_Standard + using = Color_Green + alpha = 0 + } + + state = { + name = start_glow + next = a + duration = 3 + glow_alpha = 0.3 + trigger_on_create = yes + } + + state = { + name = a + next = b + duration = 3 + glow_alpha = 0.5 + } + + state = { + name = b + next = a + duration = 3 + glow_alpha = 0.1 + } + } + + text_single = { + text = "[Scheme.GetAgentCharges]" + align = nobaseline|right + } + } + } + } + + vbox = { + visible = "[Not(SchemeItem.GetScheme.GetSchemeType.IsBasic)]" + layoutpolicy_horizontal = expanding + + margin = { 0 10 } + + hbox = { + layoutpolicy_horizontal = expanding + margin = { 15 0 } + margin_bottom = 5 + spacing = 10 + + ### MEMBERS BUTTONS + button_expandable_toggle_field = { + name = "my_own_scheme_buttons" + visible = "[Not(SchemeItem.GetScheme.GetSchemeType.IsBasic)]" + layoutpolicy_horizontal = expanding + + enabled = "[SchemeItem.HasAgents]" + + blockoverride "button_expand" + { + frame = "[SelectFrame( 'own_scheme_expand' )]" + } + + blockoverride "onclick" + { + onclick = "[GetVariableSystem.Toggle( 'own_scheme_expand')]" + } + + blockoverride "text" + { + text = "SCHEME_WINDOW_SHOW_MEMBERS" + } + + + } + } + + ### MEMBERS + vbox = { + name = "my_own_scheme_members" + visible = "[And(GetVariableSystem.Exists( 'own_scheme_expand' ), Not(SchemeItem.GetScheme.GetSchemeType.IsBasic))]" + layoutpolicy_horizontal = expanding + margin = { 10 0 } + + fixedgridbox = { + name = "owner_member_grid" + addcolumn = 100 + addrow = 152 + flipdirection = yes + datamodel_wrap = 5 + + datamodel = "[SchemeItem.GetAgentSlots]" + item = { + widget_scheme_agent_slot_item = {} + } + } + } + } + } + } +} + +types IntrigueWindowTypes +{ + type schemes_tab_vbox = vbox { + layoutpolicy_horizontal = expanding + layoutpolicy_vertical = expanding + + visible = "[IntrigueWindow.IsTabShown( 'schemes' )]" + + hbox = { + margin = { 0 10 } + + ## My Scheme Countermeasures + widget_scheme_countermeasures = {} + } + + ### SCHEMES + scrollbox = { + name = "schemes" + layoutpolicy_horizontal = expanding + layoutpolicy_vertical = expanding + + state = { + name = _show + using = Animation_FadeIn_Quick + } + + state = { + name = _hide + alpha = 0 + } + + background = { + texture = "gfx/interface/skinned/illustrations/council/bg_council_spymaster.dds" + margin = { -5 0 } + fittype = end + alpha = 0.3 + + modify_texture = { + texture = "gfx/interface/component_masks/mask_fade_vertical.dds" + blend_mode = alphamultiply + mirror = vertical + } + } + + blockoverride "scrollbox_content" + { + ## My Schemes + vbox = { + name = "my_own_schemes" + widgetid = "my_own_schemes" + layoutpolicy_horizontal = expanding + spacing = 10 + + vbox = { + name = "my_contract_schemes" + visible = "[SkillSchemeGroup.HasSchemes]" + datacontext = "[IntrigueWindow.GetContractSchemes]" + layoutpolicy_horizontal = expanding + + text_label_center = { + layoutpolicy_horizontal = expanding + text = "[contract_schemes|E]" + } + + vbox = { + name = "my_own_contract_schemes" + visible = "[SkillSchemeGroup.HasSchemes]" + layoutpolicy_horizontal = expanding + + datamodel = "[SkillSchemeGroup.GetSchemes]" + item = { + widget_own_scheme_item = { + layoutpolicy_horizontal = expanding + } + } + } + } + + vbox = { + name = "my_hostile_schemes" + datacontext = "[IntrigueWindow.GetHostileSchemes]" + layoutpolicy_horizontal = expanding + + text_label_center = { + layoutpolicy_horizontal = expanding + text = "[hostile_schemes|E]" + } + + vbox = { + name = "my_own_hostile_schemes" + visible = "[SkillSchemeGroup.HasSchemes]" + layoutpolicy_horizontal = expanding + + datamodel = "[SkillSchemeGroup.GetSchemes]" + item = { + widget_own_scheme_item = { + layoutpolicy_horizontal = expanding + } + } + } + + text_multi = { + name = "no_own_hostile_schemes" + visible = "[Not(SkillSchemeGroup.HasSchemes)]" + layoutpolicy_horizontal = expanding + minimumsize = { 0 110 } + + text = "SCHEME_WINDOW_NOT_OWNED_SCHEMES" + default_format = "#low;italic" + align = center + + background = { + using = Background_Area + } + } + } + + vbox = { + name = "my_personal_schemes" + datacontext = "[IntrigueWindow.GetPersonalSchemes]" + layoutpolicy_horizontal = expanding + + text_label_center = { + layoutpolicy_horizontal = expanding + text = "[personal_schemes|E]" + } + + vbox = { + name = "my_own_personal_schemes" + widgetid = "my_own_personal_schemes" + visible = "[SkillSchemeGroup.HasSchemes]" + layoutpolicy_horizontal = expanding + + datamodel = "[SkillSchemeGroup.GetSchemes]" + item = { + widget_own_scheme_item = { + layoutpolicy_horizontal = expanding + } + } + } + + text_multi = { + name = "no_own_personal_schemes" + visible = "[Not(SkillSchemeGroup.HasSchemes)]" + layoutpolicy_horizontal = expanding + minimumsize = { 0 110 } + + text = "SCHEME_WINDOW_NOT_OWNED_SCHEMES" + default_format = "#low;italic" + align = center + + background = { + using = Background_Area + } + } + } + + vbox = { + name = "my_political_schemes" + datacontext = "[IntrigueWindow.GetPoliticalSchemes]" + datacontext = "[IntrigueWindow.GetCharacter]" + visible = "[Or4( Character.GetGovernment.HasMechanic( 'administrative' ), Character.GetGovernment.IsType( 'japan_feudal_government' ), Character.GetTopLiege.GetGovernment.HasMechanic( 'administrative' ), Character.GetGovernment.IsType( 'mandala_government' ) )]" + layoutpolicy_horizontal = expanding + + text_label_center = { + layoutpolicy_horizontal = expanding + text = "[political_schemes|E]" + } + + vbox = { + name = "my_own_political_schemes" + visible = "[SkillSchemeGroup.HasSchemes]" + layoutpolicy_horizontal = expanding + + datamodel = "[SkillSchemeGroup.GetSchemes]" + item = { + widget_own_scheme_item = { + layoutpolicy_horizontal = expanding + } + } + } + + text_multi = { + name = "no_own_political_schemes" + visible = "[Not( SkillSchemeGroup.HasSchemes )]" + layoutpolicy_horizontal = expanding + minimumsize = { 0 110 } + + text = "SCHEME_WINDOW_NOT_OWNED_SCHEMES" + default_format = "#low;italic" + align = center + + background = { + using = Background_Area + } + } + } + } + + ## Known schemes + vbox = { + name = "discovered_schemes" + layoutpolicy_horizontal = expanding + margin_top = 10 + + hbox = { + layoutpolicy_horizontal = expanding + + expand = {} + + margin = { 0 -4 } #Uses a negative margin to make the header be the same height as regular text labels. Doesn't affect any of the content. + margin_right = 35 #Margin to offset the icon size + + background = { + margin_left = 40 + margin_right = 40 + + texture = "gfx/interface/component_tiles/tile_title_bg_01.dds" + spriteType = Corneredtiled + spriteborder = { 40 8 } + texture_density = 2 + + modify_texture = { + name = "mask" + texture = "gfx/interface/component_masks/mask_fade_horizontal_middle_thick.dds" + spriteType = Corneredstretched + spriteborder = { 0 0 } + blend_mode = alphamultiply + } + } + + icon = { + name = "discovered_icon" + size = { 35 35 } + texture = "gfx/interface/icons/schemes/icon_discovered_scheme.dds" + } + + text_single = { + text = "SCHEME_WINDOW_KNOWN_SCHEMES_TITLE" + align = nobaseline + } + + expand = {} + } + + vbox = { + name = "known_schemes_grid" + visible = "[IntrigueWindow.HasKnownSchemes]" + layoutpolicy_horizontal = expanding + + datamodel = "[IntrigueWindow.GetKnownSchemes]" + item = { + vbox_discovered_scheme_item = { + layoutpolicy_horizontal = expanding + } + } + } + + text_multi = { + name = "no_own_schemes" + visible = "[Not(IntrigueWindow.HasKnownSchemes)]" + layoutpolicy_horizontal = expanding + minimumsize = { 0 110 } + + text = "SCHEME_WINDOW_NOT_KNOWN_SCHEMES" + default_format = "#low" + align = center + + background = { + using = Background_Area + } + } + } + } + } + + ## Autofill agent button + hbox = { + layoutpolicy_horizontal = expanding + margin = { 10 10 } + spacing = 5 + + tooltip = "SCHEME_WINDOW_AUTO_ASSIGN_AGENTS_TOOLTIP" + + divider = { + layoutpolicy_horizontal = expanding + + modify_texture = { + texture = "gfx/interface/component_masks/mask_fade_horizontal_thick.dds" + blend_mode = alphamultiply + } + } + + icon = { + size = { 30 30 } + texture = "gfx/interface/icons/message_feed/spy_master.dds" + } + + button_checkbox_label = { + size = { 30 30 } + onclick = "[IntrigueWindow.ToggleAutoAssigningAgents]" + + blockoverride "checkbox" + { + checked = "[IntrigueWindow.IsAutoAssigningAgents]" + } + + blockoverride "text" + { + text = "SCHEME_WINDOW_AUTO_ASSIGN_AGENTS" + } + } + + divider = { + layoutpolicy_horizontal = expanding + + modify_texture = { + texture = "gfx/interface/component_masks/mask_fade_horizontal_thick.dds" + blend_mode = alphamultiply + mirror = horizontal + } + } + } + } + + type hooks_secrets_scrollbox = vbox + { + name = "hooks_and_secrets" + widgetid = "hooks_and_secrets" + visible = "[IntrigueWindow.IsTabShown( 'hooks_and_secrets' )]" + layoutpolicy_horizontal = expanding + layoutpolicy_vertical = expanding + + scrollbox = { + layoutpolicy_horizontal = expanding + layoutpolicy_vertical = expanding + + state = { + name = _show + using = Animation_FadeIn_Quick + } + + state = { + name = _hide + alpha = 0 + } + + background = { + texture = "gfx/interface/illustrations/event_scenes/alley.dds" + fittype = end + alpha = 0.6 + + using = Mask_Rough_Edges + + modify_texture = { + texture = "gfx/interface/component_masks/mask_fade_vertical.dds" + blend_mode = alphamultiply + mirror = vertical + } + } + + blockoverride "scrollbox_content" + { + spacing = 10 + + # My Hooks + vbox = { + name = "my_hooks" + layoutpolicy_horizontal = expanding + spacing = 2 + + widget = { + size = { -1 24 } + layoutpolicy_horizontal = expanding + + hbox = { + text_label_center = { + layoutpolicy_horizontal = expanding + align = center + text = "INTRIGUE_WINDOW_MY_HOOKS_TITLE" + } + } + + hbox = { + margin = { 10 0 } + spacing = 10 + + expand = {} + + hbox = { + spacing = 4 + tooltip = "INTRIGUE_WINDOW_WEAK_HOOKS_COUNT" + + icon = { + size = { 14 14 } + texture = "gfx/interface/icons/portraits/hook_secret_small.dds" + framesize = { 28 28 } + frame = 1 + } + + text_single = { + text = "[IntrigueWindow.GetMyWeakHooksCount]" + } + } + + hbox = { + spacing = 4 + tooltip = "INTRIGUE_WINDOW_STRONG_HOOKS_COUNT" + + icon = { + size = { 14 14 } + texture = "gfx/interface/icons/portraits/hook_secret_small.dds" + framesize = { 28 28 } + frame = 2 + } + + text_single = { + text = "[IntrigueWindow.GetMyStrongHooksCount]" + } + } + + spacer = {} + + hbox = { + + button_expand = { + name = "show" + visible = "[GreaterThan_int32(GetDataModelSize(IntrigueWindow.GetMyHooks), '(int32)4')]" + frame = "[Select_int32( GetVariableSystem.Exists( 'hooks_expand' ), '(int32)2', '(int32)1' )]" + onclick = "[GetVariableSystem.Toggle( 'hooks_expand' )]" + + using = tooltip_ws + tooltip = "EXPAND_FILTER" + } + } + } + } + + hbox = { + layoutpolicy_horizontal = expanding + + fixedgridbox = { + visible = "[And( GetVariableSystem.Exists( 'hooks_expand' ), DataModelHasItems( IntrigueWindow.GetMyHooks ) )]" + flipdirection = yes + maxhorizontalslots = 4 + datamodel_wrap = 4 + + addcolumn = 116 + addrow = 120 + + datamodel = "[IntrigueWindow.GetMyHooks]" + item = { + portrait_head = { + datacontext = "[IntrigueWindowHookItem.GetCharacter]" + } + } + } + + fixedgridbox = { + visible = "[And( Not( GetVariableSystem.Exists( 'hooks_expand' ) ), DataModelHasItems( IntrigueWindow.GetMyHooks ) )]" + flipdirection = yes + maxhorizontalslots = 4 + + addcolumn = 116 + addrow = 120 + + datamodel = "[IntrigueWindow.GetMyHooks]" + item = { + portrait_head = { + datacontext = "[IntrigueWindowHookItem.GetCharacter]" + } + } + } + + expand = {} + + text_single = { + visible = "[And( Not( GetVariableSystem.Exists( 'hooks_expand' ) ), GreaterThan_int32(GetDataModelSize(IntrigueWindow.GetMyHooks), '(int32)4') )]" + layoutpolicy_vertical = growing + layoutpolicy_horizontal = expanding + + text = "[GetNumberAbove_int32(GetDataModelSize(IntrigueWindow.GetMyHooks), '(int32)4' )|=]" + align = center + default_format = "#weak" + using = Font_Size_Medium + } + } + + text_multi = { + visible = "[IsDataModelEmpty( IntrigueWindow.GetMyHooks )]" + layoutpolicy_horizontal = expanding + minimumsize = { 0 120 } + text = "MY_HOOKS_ARE_EMPTY" + align = center + + background = { + using = Background_Area + } + } + } + + # Secrets known to me + vbox = { + name = "secrets_known_to_me" + layoutpolicy_horizontal = expanding + spacing = 2 + + widget = { + size = { -1 24 } + layoutpolicy_horizontal = expanding + + hbox = { + text_label_center = { + layoutpolicy_horizontal = expanding + text = "INTRIGUE_WINDOW_SECRETS_KNOWN_TO_ME_TITLE" + } + } + + hbox = { + expand = {} + + hbox = { + margin_right = 15 + spacing = 5 + tooltip = "INTRIGUE_WINDOW_HOOK_SHOW_ALL" + + button_checkbox = { + name = "show_all_secrets" + onclick = "[GetVariableSystem.Toggle( 'secrets_show_all' )]" + checked = "[GetVariableSystem.Exists( 'secrets_show_all' )]" + } + + icon = { + size = { 20 20 } + texture = "gfx/interface/icons/portraits/hook_secret.dds" + framesize = { 40 40 } + frame = 4 + } + } + } + } + + vbox = { + layoutpolicy_horizontal = expanding + spacing = 7 + + datamodel = "[IntrigueWindow.GetSecretsKnownToMe]" + item = { + hbox_secret_item = { + layoutpolicy_horizontal = expanding + + blockoverride "portrait" + { + datacontext = "[IntrigueWindowSecretGroup.GetCharacter]" + } + } + } + } + + text_multi = { + visible = "[IsDataModelEmpty( IntrigueWindow.GetSecretsKnownToMe )]" + layoutpolicy_horizontal = expanding + minimumsize = { 0 120 } + text = "SECRETS_KNOWN_TO_ME_IS_EMPTY" + align = center + + background = { + using = Background_Area + } + } + } + + # Hooks on you + vbox = { + name = "hooks_on_me" + layoutpolicy_horizontal = expanding + spacing = 2 + + text_label_center = { + layoutpolicy_horizontal = expanding + align = center + text = "INTRIGUE_WINDOW_HOOKS_ON_ME_TITLE" + + hbox = { + margin = { 10 0 } + spacing = 10 + + expand = {} + + hbox = { + spacing = 4 + tooltip = "INTRIGUE_WINDOW_WEAK_HOOKS_COUNT" + + icon = { + size = { 14 14 } + texture = "gfx/interface/icons/portraits/hook_secret_small.dds" + framesize = { 28 28 } + frame = 1 + } + + text_single = { + text = "[IntrigueWindow.GetWeakHooksOnMeCount]" + } + } + + hbox = { + spacing = 4 + tooltip = "INTRIGUE_WINDOW_STRONG_HOOKS_COUNT" + + icon = { + size = { 14 14 } + texture = "gfx/interface/icons/portraits/hook_secret_small.dds" + framesize = { 28 28 } + frame = 2 + } + + text_single = { + text = "[IntrigueWindow.GetStrongHooksOnMeCount]" + } + } + } + } + + vbox = { + visible = "[DataModelHasItems( IntrigueWindow.GetHooksOnMe )]" + layoutpolicy_horizontal = expanding + spacing = 3 + + datamodel = "[IntrigueWindow.GetHooksOnMe]" + item = { + hbox = { + layoutpolicy_horizontal = expanding + datacontext = "[IntrigueWindowHookItem.GetHook]" + + background = { + using = Background_Area + } + + portrait_head_small = { + datacontext = "[IntrigueWindowHookItem.GetCharacter]" + } + + vbox = { + layoutpolicy_horizontal = expanding + margin_left = 15 + + hbox = { + layoutpolicy_horizontal = expanding + + icon = { + size = { 20 20 } + texture = "gfx/interface/icons/portraits/hook_secret.dds" + framesize = { 40 40 } + frame = "[Hook.GetHookFrame]" + } + + text_single = { + layoutpolicy_horizontal = expanding + raw_text = "intrigue_window_hook_strength_state" + align = nobaseline + } + } + + hbox = { + layoutpolicy_horizontal = expanding + spacing = 5 + + text_single = { + text = "[Hook.GetName]" + } + + text_single = { + layoutpolicy_horizontal = expanding + visible = "[Hook.HasExpirationDate]" + text = "INTRIGUE_WINDOW_HOOK_EXPIRATION" + default_format = "#low" + autoresize = no + } + + expand = {} + } + } + + expand = {} + } + } + } + + text_multi = { + visible = "[IsDataModelEmpty( IntrigueWindow.GetHooksOnMe )]" + layoutpolicy_horizontal = expanding + minimumsize = { 0 120 } + text = "NOBODY_HAS_HOOKS_ON_ME" + align = center + + background = { + using = Background_Area + } + } + } + + # My secrets + vbox = { + name = "my_secrets" + layoutpolicy_horizontal = expanding + spacing = 2 + + text_label_center = { + layoutpolicy_horizontal = expanding + text = "INTRIGUE_WINDOW_MY_SECRETS_TITLE" + } + + vbox = { + name = "my_secrets_grid" + visible = "[DataModelHasItems( IntrigueWindow.GetMySecrets )]" + layoutpolicy_horizontal = expanding + + datamodel = "[IntrigueWindow.GetMySecrets]" + item = { + vbox = { + datacontext = "[IntrigueWindowSecretItem.GetSecret]" + visible = "[Secret.IsValid]" + layoutpolicy_horizontal = expanding + + + hbox = { + layoutpolicy_horizontal = expanding + margin_left = 10 + spacing = 5 + + tooltip = "[Secret.GetTooltipDesc]" + + background = { + using = Background_Area + + modify_texture = { + texture = "gfx/interface/component_masks/mask_fade_horizontal_thick.dds" + blend_mode = alphamultiply + mirror = horizontal + } + } + + icon = { + texture = "[Secret.GetType.GetIcon]" + size = { 30 30 } + } + + text_multi = { + layoutpolicy_horizontal = expanding + text = "INTRIGUE_WINDOW_SECRET_DESC" + align = nobaseline + max_width = 450 + } + + expand = {} + } + + vbox = { + layoutpolicy_horizontal = expanding + spacing = 7 + + datamodel = "[IntrigueWindow.GetSecretsKnownToMe]" + item = { + hbox_secret_item = { + visible = "[IntrigueWindowSecretItem.IsExpanded]" + datamodel = "[IntrigueWindowSecretItem.GetKnownBy]" + layoutpolicy_horizontal = expanding + + blockoverride "portrait_context" + { + } + } + } + } + } + } + } + + text_multi = { + visible = "[IsDataModelEmpty( IntrigueWindow.GetMySecrets )]" + layoutpolicy_horizontal = expanding + minimumsize = { 0 290 } + text = "I_HAVE_NO_SECRETS" + align = center + } + } + } + } + } + + type widget_scheme_agent_slot_item = widget { + datacontext = "[SchemeAgentSlotItem.GetCharacter]" + size = { 96 150 } + + background = { + using = Background_Area + } + + background = { + using = Background_Frame + } + + vbox = { + margin_top = 5 + margin_bottom = 10 + + selectable_target_portrait_widget = { + blockoverride "empty_slot" + { + onclick = "[SchemeItem.ShowPotentialAgents(SchemeAgentSlotItem.Self)]" + } + + blockoverride "filled_slot" + { + button_round = { + + parentanchor = top|right + size = { 25 25 } + + onclick = "[CreateCommandPopup( SchemeAgentSlotItem.RemoveAgent )]" + + tooltip = "INTRIGUE_WINDOW_REMOVE_AGENT_TT" + + button_close = { + alwaystransparent = yes + datacontext = "[SchemeAgentSlotItem.GetCharacter]" + parentanchor = center + size = { 15 15 } + } + } + } + + icon = { + visible = "[SchemeAgentSlotItem.IsExposed]" + parentanchor = top|left + size = { 25 25 } + alwaystransparent = yes + texture = "gfx/interface/icons/schemes/icon_discovered_scheme.dds" + + tooltip = "INTRIGUE_WINDOW_AGENT_DISCOVERED_TT" + + background = { + using = Background_Area_Dark + + modify_texture = { + texture = "gfx/interface/component_masks/mask_glow.dds" + blend_mode = alphamultiply + } + } + + glow = { + using = Color_Red + using = Glow_Standard + glow_radius = 3 + } + + state = { + trigger_on_create = yes + + name = max_glow + next = min_glow + duration = 1 + using = Animation_Curve_Default + + glow_alpha = 0.8 + } + + state = { + name = min_glow + next = max_glow + duration = 1.6 + using = Animation_Curve_Default + + glow_alpha = 0.2 + } + } + } + + vbox = { + name = "scheme_agent_info" + + text_single = { + text = "[SchemeAgentSlotItem.GetSlot.GetSlotType.GetName]" + align = nobaseline + max_width = 70 + + tooltip = "[SchemeAgentSlotItem.GetSlot.GetSlotType.GetDesc]" + } + + hbox = { + name = "scheme_agent_contribution" + spacing = 5 + + tooltip = "[SelectLocalization(SchemeAgentSlotItem.IsFilled, 'INTRIGUE_WINDOW_SCHEME_CONTRIBUTION_TT', 'INTRIGUE_WINDOW_SCHEME_CONTRIBUTION_TT_AGENT_SLOT_EMPTY')]" + + icon = { + name = contribution_icon + size = { 25 25 } + texture = "[SchemeAgentSlotItem.GetContributionIcon]" + } + + text_single = { + text = "[SchemeAgentSlotItem.GetContribution|0]" + align = nobaseline + default_format = "#high" + } + } + } + } + } + + type widget_scheme_countermeasures = widget { + size = { 400 80 } + + vbox = { + # Scheme Countermeasures heading + text_label_center = { + text = "[scheme_countermeasures|E]" + } + + ## Countermeasure icons + hbox = { + name = "scheme_countermeasure_icons" + datamodel = "[IntrigueWindow.GetCountermeasures]" + + background = { + texture = "gfx/interface/window_scheme/scheme_countermeasures_bg.dds" + margin = { 45 -6 } + } + + item = { + container = { + visible = "[IntrigueWindowCountermeasureItem.IsVisible]" + + datacontext = "[IntrigueWindowCountermeasureItem.GetType]" + tooltip = "[IntrigueWindowCountermeasureItem.GetTooltip]" + using = tooltip_se + + widget = { + size = { 50 50 } + + # Selection halo + icon = { + visible = "[IntrigueWindowCountermeasureItem.IsActive]" + texture = "gfx/particles/halo.dds" + parentanchor = center + size = { 60 60 } + color = { 1 0.85 0.6 1 } + } + + button_round = { + parentanchor = center + size = { 48 48 } + + onclick = "[IntrigueWindowCountermeasureItem.SetCounterMeasure( IntrigueWindow.GetCharacter.Self )]" + alwaystransparent = "[And( IntrigueWindowCountermeasureItem.IsSelectable(), IntrigueWindowCountermeasureItem.IsActive )]" + #enabled = "[And( IntrigueWindowCountermeasureItem.IsSelectable(), Not( IntrigueWindowCountermeasureItem.IsActive ) )]" + + # Frame + highlight_icon = { + parentanchor = center + size = { 38 38 } + alwaystransparent = yes + + texture = "gfx/interface/icons/scheme_countermeasure_types/frame_purple.dds" + enabled = "[IntrigueWindowCountermeasureItem.IsSelectable()]" + } + + # Countermeasure icon + highlight_icon = { + visible = "[SchemeCountermeasureType.IsValid]" + parentanchor = center + size = { 38 38 } + alwaystransparent = yes + + texture = "[IntrigueWindowCountermeasureItem.GetType.GetIcon]" + enabled = "[IntrigueWindowCountermeasureItem.IsSelectable()]" + } + + # No countermeasure icon + highlight_icon = { + visible = "[Not( SchemeCountermeasureType.IsValid )]" + parentanchor = center + size = { 38 38 } + alwaystransparent = yes + + texture = "gfx/interface/icons/scheme_countermeasure_types/no_countermeasure.dds" + enabled = "[IntrigueWindowCountermeasureItem.IsSelectable()]" + } + + # Countermeasure tier + highlight_icon = { + visible = "[SchemeCountermeasureType.IsValid]" + parentanchor = center + position = { 0 2 } + size = { 48 48 } + alwaystransparent = yes + + texture = "[SchemeCountermeasureType.GetFrame]" + } + + # AI debug info + text_single = { + visible = "[AIWatchWindowsEnabled]" + parentanchor = bottom|left + position = { 0 15 } + text = "INTRIGUE_WINDOW_SCHEME_COUNTERMEASURE_ITEM_AI_VALUE_LABLE" + } + } + } + } + } + } + } + } + + type vbox_discovered_scheme_item = vbox { + name = "known_scheme" + datacontext = "[SchemeItem.GetScheme]" + + background = { + using = Background_Area + margin_bottom = -2 + } + + background = { + using = Background_Frame + + modify_texture = { + texture = "gfx/interface/component_masks/mask_fade_corner.dds" + blend_mode = alphamultiply + mirror = horizontal + } + } + + vbox = { + name = "my_own_scheme_header" + layoutpolicy_horizontal = expanding + + hbox = { + name = "my_own_scheme_header" + layoutpolicy_horizontal = expanding + + margin = { 0 5 } + margin_left = 20 + margin_right = 5 + + background = { + texture = "gfx/interface/window_scheme/scheme_panel_header_banner_red.dds" + margin_top = -2 + margin_bottom = -3 + } + + hbox = { + layoutpolicy_horizontal = expanding + + icon = { + texture = "[Scheme.GetSchemeType.GetIcon]" + size = { 30 30 } + alwaystransparent = yes + + tooltip = "SCHEME_WINDOW_TT_ITEM" + + background = { + texture = "gfx/interface/window_scheme/scheme_panel_header_icon_bg_red.dds" + margin = { 13 13 } + } + } + + text_single = { + text = "SCHEME_WINDOW_ITEM_NAME" + using = Font_Size_Medium + align = nobaseline + max_width = 480 + margin_left = 15 + } + + expand = {} + } + } + + hbox = { + layoutpolicy_horizontal = expanding + + margin = { 10 5 } + spacing = 5 + + portrait_head = { + name = "target_portrait" + datacontext = "[Scheme.GetTargetCharacter]" + + using = tooltip_es + + blockoverride "portrait_button" + { + tooltip = "SCHEME_WINDOW_SCHEME_TARGET" + } + } + + vbox = { + layoutpolicy_vertical = expanding + layoutpolicy_horizontal = expanding + + text_single = { + datacontext = "[SchemeItem.GetScheme.GetOwner]" + text = "SCHEME_WINDOW_OWNER_PUPPET" + default_format = "#D" + layoutpolicy_horizontal = expanding + block owner_section_visible + { + visible = no + } + + using = Font_Size_Medium + align = nobaseline + } + + hbox = { + layoutpolicy_horizontal = expanding + spacing = 5 + + tooltip = "SCHEME_WINDOW_SUCCESS_DISCOVERED_TOOLTIP" + + icon = { + name = success_icon + size = { 30 30 } + + texture = "gfx/interface/icons/schemes/icon_scheme_success.dds" + } + + text_multi = { + name = "success" + autoresize = yes + text = "SCHEME_WINDOW_SUCCESS_CHANCE_MAIN" + align = nobaseline + max_width = 350 + } + + expand = {} + } + + hbox = { + visible = "[Scheme.IsSecret]" + layoutpolicy_horizontal = expanding + spacing = 5 + + tooltip = "SCHEME_WINDOW_SECRECY_DISCOVERED_TOOLTIP" + + icon = { + name = "secrecy_icon" + size = { 30 30 } + texture = "gfx/interface/icons/schemes/icon_secrecy.dds" + } + + text_single = { + name = "secrecy" + text = "SCHEME_WINDOW_SECRECY" + align = nobaseline + max_width = 350 + } + + expand = {} + } + + expand = {} + } + + expand = {} + } + } + + vbox = { + name = "known_scheme_members" + layoutpolicy_horizontal = expanding + margin = { 10 0 } + spacing = 5 + + background = { + using = Background_Area + } + + text_single = { + layoutpolicy_horizontal = expanding + text = "SCHEME_WINDOW_MEMBER_LIST" + align = center|nobaseline + margin = { 0 5 } + + background = { + using = Background_Area + margin = { 5 0 } + } + } + + hbox = { + layoutpolicy_horizontal = expanding + + fixedgridbox = { + name = "owner_member_grid" + addcolumn = 95 + addrow = 95 + datamodel_wrap = 5 + flipdirection = yes + + datamodel = "[SchemeItem.GetAgentSlots]" + item = { + portrait_head_small = { + datacontext = "[SchemeAgentSlotItem.GetCharacter]" + visible = "[SchemeAgentSlotItem.IsFilled]" + } + } + } + + expand = {} + } + + hbox = { + visible = "[Not(SchemeItem.HasAgents)]" + layoutpolicy_horizontal = expanding + margin_bottom = 15 + + text_single = { + text = "SCHEME_WINDOW_NO_KNOWN_AGENTS" + align = center|nobaseline + default_format = "#low;italic" + } + } + + expand = {} + } + } + + type hbox_secret_item = hbox { + visible = "[Or( IntrigueWindowSecretGroup.HasUnspentHooks, GetVariableSystem.Exists( 'secrets_show_all' ) )]" + layoutpolicy_horizontal = expanding + + background = { + using = Background_Area + } + + portrait_head_small = { + block "portrait" {} + } + + vbox = { + datacontext = "[IntrigueWindowSecretGroup.GetCharacter]" + layoutpolicy_horizontal = expanding + layoutpolicy_vertical = expanding + + margin_right = 10 + margin_top = 5 + margin_bottom = 10 + + vbox = { + name = "secrets" + datamodel = "[IntrigueWindowSecretGroup.GetSecrets]" + visible = "[DataModelHasItems( IntrigueWindowSecretGroup.GetSecrets )]" + layoutpolicy_horizontal = expanding + + margin = { 5 5 } + spacing = 5 + + item = { + hbox = { + datacontext = "[IntrigueWindowSecretItem.GetSecret]" + visible = "[And( Secret.IsValid, Or( Not( IntrigueWindowSecretItem.IsSpent ), GetVariableSystem.Exists( 'secrets_show_all' ) ) )]" + layoutpolicy_horizontal = expanding + + spacing = 5 + + icon = { + texture = "[Secret.GetType.GetIcon]" + size = { 30 30 } + tooltip = "INTRIGUE_WINDOW_SECRET_TOOLTIP" + } + + text_multi = { + layoutpolicy_horizontal = expanding + text = "INTRIGUE_WINDOW_SECRET_DESC" + align = nobaseline + autoresize = yes + max_width = 300 + } + + expand = {} + + icon = { + visible = "[IntrigueWindowSecretItem.IsWeakHook( Character.Self )]" + size = { 20 20 } + texture = "gfx/interface/icons/portraits/hook_secret.dds" + framesize = {40 40 } + frame = 1 + + tooltip = "INTRIGUE_WINDOW_BLACKMAIL_WEAK_HOOK_TT" + } + + icon = { + visible = "[IntrigueWindowSecretItem.IsStrongHook( Character.Self )]" + size = { 20 20 } + texture = "gfx/interface/icons/portraits/hook_secret.dds" + framesize = { 40 40 } + frame = 2 + + tooltip = "INTRIGUE_WINDOW_BLACKMAIL_STRONG_HOOK_TT" + } + + warning_icon = { + visible = "[Not( Character.IsPlayerInteractionWithTargetSecretValid( 'blackmail_interaction', Secret.Self ) )]" + size = { 20 20 } + + tooltip = "[Character.GetPlayerInteractionWithTargetSecretTooltip( 'blackmail_interaction', Secret.Self )]" + } + } + } + } + + expand = {} + + hbox = { + visible = "[Character.IsPlayerInteractionShown('blackmail_interaction')]" + layoutpolicy_horizontal = expanding + margin_right = 5 + spacing = 5 + + expand = {} + + button_standard_small = { + name = "blackmail_button" + datacontext = "[IntrigueWindowSecretGroup.GetFirstSecret.GetSecret]" + size = { 120 25 } + enabled = "[IntrigueWindowSecretGroup.CanBlackmail]" + onclick = "[Character.OpenPlayerInteraction( 'blackmail_interaction' )]" + text = "INTRIGUE_WINDOW_SECRET_KNOWN_TO_ME_BLACKMAIL" + + tooltip = "INTRIGUE_WINDOW_SECRET_BLACKMAIL_TT" + using = tooltip_se + } + + button_tertiary = { + name = "expose_button" + datacontext = "[IntrigueWindowSecretGroup.GetFirstSecret.GetSecret]" + size = { 120 25 } + onclick = "[Character.OpenPlayerInteraction( 'expose_secret_interaction' )]" + #"[IntrigueWindow.ExposeSecret( Character.Self, 'blackmail_interaction', Secret.Self )]" + text = "INTRIGUE_WINDOW_SECRET_EXPOSE" + + tooltip = "INTRIGUE_WINDOW_SECRET_EXPOSE_TT" + using = tooltip_se + } + + + } + } + + + expand = {} + } +} + +types PuppetTypes +{ + type vbox_puppet_section = vbox { + layoutpolicy_horizontal = expanding + layoutpolicy_vertical = expanding + + visible = "[IntrigueWindow.IsTabShown( 'puppets' )]" + + # text_label_center = { + # layoutpolicy_horizontal = expanding + # text = "puppets_section_title" + # default_format = "#T" + # } + + ## PUPPET ACTIONS + scrollbox = { + name = "scroll_puppet_decisions" + layoutpolicy_horizontal = expanding + layoutpolicy_vertical = expanding + + blockoverride "scrollbox_content" + { + vbox = { + name = "puppets" + layoutpolicy_horizontal = expanding + spacing = 10 + + datamodel = "[IntrigueWindow.GetPuppets]" + + item = { + widget_puppet_entry = {} + } + } + } + } + } + + type widget_puppet_interaction_group_base = widget { + size = { 50 50 } + + # Template to have better control on colors of icon background + using = Puppet_Interaction_Group_Background + + icon = { + datacontext = "[PuppetInteractionGroup]" + parentanchor = center + widgetanchor = center + size = { 45 45 } + texture = "[PuppetInteractionGroup.GetCategory.GetIcon]" + + block "group_tooltip" {} + using = tooltip_se + } + + text_single = { + position = { 0 3 } + parentanchor = bottom|hcenter + + background = { + margin = { 5 0 } + margin_top = -5 + using = Background_Area_Dark + } + + block "group_count" {} + default_format = "#glow_color:{0.1,0.1,0.1,1.0}" + } + } + + type widget_puppet_interaction_group = widget_puppet_interaction_group_base { + visible = "[DataModelHasItems( PuppetInteractionGroup.GetSpecialInteractions )]" + + blockoverride "group_tooltip" { + tooltipwidget = { + using = puppet_interaction_group_tooltip + } + } + + blockoverride "group_count" { + text = "[GetDataModelSize( PuppetInteractionGroup.GetSpecialInteractions )]" + } + } + + type widget_puppet_generic_category_icon = widget_puppet_interaction_group_base { + visible = "[DataModelHasItems( PuppetInteractionGroup.GetGenericInteractions )]" + + blockoverride "group_tooltip" { + tooltip = "puppet_generic_interaction_category_tt" + } + + blockoverride "group_count" { + text = "[GetDataModelSize( PuppetInteractionGroup.GetGenericInteractions )]" + } + } + + type widget_puppet_summary_button = widget { + size = { 50 50 } + + icon = { + parentanchor = center + size = { 45 45 } + texture = "gfx/interface/icons/interaction_category_background.dds" + block "button_color" {} + + block "button_tooltip" {} + using = tooltip_se + } + + icon = { + parentanchor = center + size = { 45 45 } + block "button_texture" {} + alwaystransparent = yes + } + } + + type widget_puppet_generic_interactions_button = widget_puppet_summary_button { + blockoverride "button_color" { + using = Color_Puppet_Generic_Interactions + } + + blockoverride "button_tooltip" { + tooltipwidget = { + using = puppet_generic_interactions_tooltip + } + } + + blockoverride "button_texture" { + texture = "gfx/interface/icons/icon_puppeteer.dds" + } + } + + type widget_puppet_other_actions_button = widget_puppet_summary_button { + visible = "[Or3( DataModelHasItems( PuppetEntry.GetDecisions ), DataModelHasItems( PuppetEntry.GetGreatProjects ), DataModelHasItems( PuppetEntry.GetOtherActions ) )]" + + blockoverride "button_color" { + using = Color_Puppet_Other_Actions + } + + blockoverride "button_tooltip" { + tooltipwidget = { + using = puppet_other_actions_tooltip + } + } + + blockoverride "button_texture" { + texture = "gfx/interface/icons/character_interactions/puppet.dds" + } + } + + type puppet_tooltip_pop_out = object_tooltip_pop_out { + blockoverride "title_text" + { + margin = { 0 8 } + block "puppet_tooltip_title" {} + default_format = "#T" + } + + blockoverride "subheading" {} + + blockoverride "main_description" + { + vbox = { + layoutpolicy_horizontal = expanding + + spacing = 5 + text_multi = { + layoutpolicy_horizontal = expanding + layoutpolicy_vertical = expanding + margin_top = 10 + + block "puppet_tooltip_header" {} + autoresize = yes + max_width = 420 + } + + block "puppet_tooltip_content" {} + } + } + + blockoverride "concept_link" { + text = "[puppets|E]" + } + + blockoverride "header_additions" + { + header_icon = { + margin_right = 10 + + blockoverride "header_texture" + { + block "puppet_tooltip_icon" {} + } + } + } + } + + type vbox_puppet_other_actions_section = vbox { + layoutpolicy_horizontal = expanding + + text_multi = { + layoutpolicy_horizontal = expanding + autoresize = yes + max_width = 420 + block "section_header" {} + align = nobaseline + } + + vbox = { + layoutpolicy_horizontal = expanding + block "section_items" {} + + item = { + text_multi = { + layoutpolicy_horizontal = expanding + text = "puppet_other_actions_tt_item" + autoresize = yes + max_width = 420 + } + } + } + } + + type widget_puppet_entry = widget + { + size = { 525 320 } + scissor = yes + + background = { + texture = "[PuppetEntry.GetPuppetType.GetBackground( PuppetEntry.GetPuppet )]" + fittype = centercrop + alpha = 0.7 + using = Mask_Rough_Edges + + margin_top = -56 + + modify_texture = { + texture = "gfx/interface/component_masks/mask_fade_horizontal_extended.dds" + blend_mode = alphamultiply + } + } + + background = { + using = Background_Frame + + margin = { 2 2 } + + modify_texture = { + texture = "gfx/interface/component_masks/mask_fade_corner.dds" + blend_mode = alphamultiply + mirror = horizontal + } + } + + background = { + using = Background_Frame + + margin = { 2 2 } + + modify_texture = { + texture = "gfx/interface/component_masks/mask_fade_corner.dds" + blend_mode = alphamultiply + mirror = vertical + } + } + + ## Puppet portrait and CoA, opinion & status icon overlay + widget = { + parentanchor = left|bottom + size = { 180 250 } + + # Puppet portrait + portrait_council = { + datacontext = "[PuppetEntry.GetPuppet]" + visible = "[Character.IsValid]" + parentanchor = bottom + size = { 100% 100% } + + blockoverride "portrait_texture_block" + { + portrait_texture = "[Character.GetAnimatedPortrait('environment_council', 'camera_council', PuppetEntry.GetPuppetType.GetAnimation( Character.Self ), PdxGetWidgetScreenSize(PdxGuiWidget.Self))]" + scale = 1.1 + mask = "gfx/portraits/portrait_mask_council.dds" + effectname = "NoHighlight" + } + + blockoverride "portrait_button_no_character_text" + { + text = "puppet_window_choose_puppet_tt" + } + } + + # Empty Puppet portrait + portrait_council = { + datacontext = "[PuppetEntry.GetPuppet]" + visible = "[Not(Character.IsValid)]" + parentanchor = bottom + position = { 0 -20 } + size = { 100% 100% } + scale = 1.1 + + blockoverride "portrait_texture_block" + { + position = { 0 18 } + portrait_texture = "[Character.GetAnimatedPortrait('environment_council', 'camera_council', PuppetEntry.GetPuppetType.GetAnimation( Character.Self ), PdxGetWidgetScreenSize(PdxGuiWidget.Self))]" + mask = "gfx/portraits/portrait_mask_council.dds" + effectname = "NoHighlight" + } + + blockoverride "portrait_button_no_character_text" + { + text = "puppet_window_choose_puppet_tt" + } + + blockoverride "onclick" + { + onclick = "[PuppetEntry.OpenPuppetSelectionList]" + + button_icon = { + parentanchor = center + size = { 40 40 } + position = { 0 80 } + + alwaystransparent = yes + texture = "gfx/interface/icons/flat_icons/plus.dds" + } + } + } + + # CoA, opinion & status icons + widget = { + datacontext = "[PuppetEntry.GetPuppet]" + visible = "[Character.IsValid]" + parentanchor = bottom|hcenter + position = { 0 -63 } + size = { 100% 100% } + + coa_realm_small_crown = { + visible = "[Character.HasLandedTitles]" + parentanchor = bottom|left + } + + portrait_opinion = { + visible = "[And(Character.IsValid, Not(Character.IsLocalPlayer) )]" + parentanchor = bottom|hcenter + position = { 15 0 } + + blockoverride "opinion_text" + { + text = "[Character.GetOpinionOf( Character.GetLiege )|=]" + fonttintcolor = "[Character.GetOpinionOfTint( Character.GetLiege )]" + } + + blockoverride "ott_heading_text" + { + text = "[Character.GetOpinionHeadingText( Character.GetLiege )]" + } + + blockoverride "ott_opinion_value_text" + { + text = "[Character.GetOpinionOf( Character.GetLiege )|=]" + fonttintcolor = "[Character.GetOpinionOfTint( Character.GetLiege )]" + } + + blockoverride "ott_opinion_breakdown_text" + { + text = "[Character.GetOpinionBreakdownText( Character.GetLiege )|=]" + } + } + + portrait_status_icons = { + parentanchor = bottom|right + position = { 0 -5 } + + background = { + using = Background_Area_Dark + margin = { 2 4 } + } + } + } + } + + vbox = { + layoutpolicy_horizontal = expanding + layoutpolicy_vertical = expanding + + # Header + hbox = { + datacontext = "[PuppetEntry.GetPuppetType]" + layoutpolicy_horizontal = expanding + margin = { 5 5 } + + # Parentwidget set to 50x50 to always make the header be 50px height + widget = { + size = { 50 50 } + + icon = { + parentanchor = center + size = { 45 45 } + alwaystransparent = yes + + texture = "[PuppetEntry.GetPuppetType.GetIcon( PuppetEntry.GetPuppet )]" + } + } + + vbox = { + layoutpolicy_horizontal = expanding + + expand = {} + + text_single = { + layoutpolicy_horizontal = expanding + + text = "puppet_entry_title" + align = nobaseline + } + + text_single = { + visible = "[PuppetEntry.GetPuppet.IsValid]" + layoutpolicy_horizontal = expanding + + text = "puppet_entry_title_puppet_subheader" + align = nobaseline + } + + expand = {} + } + + hbox = { + datacontext = "[PuppetEntry.GetPuppet]" + visible = "[Character.IsValid]" + spacing = 16 + margin_right = 10 + background = { + using = Background_Area + using = Mask_Rough_Edges + margin = { 5 15 } + margin_left = 10 + modify_texture = { + texture = "gfx/interface/component_masks/mask_fade_horizontal.dds" + blend_mode = alphamultiply + } + } + + hbox = { + spacing = 4 + + tooltip = "[Character.GetGoldTooltipWithBalance]" + using = tooltip_se + + icon = { + size = { 30 30 } + texture = "gfx/interface/icons/icon_gold.dds" + } + + text_single = { + text = "[Character.GetGold|0]" + default_format = "#high" + align = center|nobaseline + max_width = 50 + } + } + + hbox = { + spacing = 4 + + tooltip = "[Character.GetPietyTooltipWithBalance]" + using = tooltip_se + + icon = { + size = { 30 30 } + texture = "[Character.GetPietyLevelTexture]" + } + + text_single = { + text = "[Character.GetPiety|0]" + default_format = "#high" + align = center|nobaseline + max_width = 50 + } + } + } + + background = { + using = Background_Area_Dark + alpha = 0.5 + + modify_texture = { + texture = "gfx/interface/component_masks/mask_fade_horizontal_extended.dds" + blend_mode = alphamultiply + } + } + + background = { + using = GenericObjectCardHeaderBackground + color = "[PuppetEntry.GetPuppetType.GetColor]" + alpha = 0.3 + } + + tooltipwidget = { + using = puppet_type_tooltip + } + + using = tooltip_ws + } + + hbox = { + datamodel = "[PuppetEntry.GetSchemes]" + allow_outside = yes + + item = { + widget = { + size = { 90 112 } + + allow_outside = yes + + button_hud_scheme = { + alwaystransparent = yes + + blockoverride "click_behavior" {} + + blockoverride "background_texture" { + icon = { + texture = "gfx/interface/window_scheme/scheme_hud_bg.dds" + size = { 100% 100% } + } + } + + blockoverride "scheme_type_icon_and_background" + { + icon = { + parentanchor = center + size = { 32 32 } + texture = "gfx/interface/window_scheme/scheme_hud_icon_bg.dds" + alwaystransparent = yes + } + + icon = { + texture = "[Scheme.GetSchemeType.GetIcon]" + size = { 30 30 } + alwaystransparent = yes + parentanchor = center + } + } + + tooltip = "PUPPET_VIEW_SCHEME_TOOLTIP" + } + + button_close = { + widgetanchor = top|right + parentanchor = top|right + position = { 5 8 } + + allow_outside = yes + + onclick = "[IntrigueWindow.OnCancelSchemeClicked( Scheme.Self )]" + + tooltip = "puppet_cancel_scheme_tt" + + background = { + using = Background_Area_Dark + margin = { 2 2 } + } + } + } + } + } + + expand = {} + + hbox = { + visible = "[DataModelHasItems( PuppetEntry.GetInteractions )]" + layoutpolicy_horizontal = expanding + min_height = 60 + margin = { 15 5 } + spacing = 5 + alwaystransparent = no + + background = { + using = Background_Area_Dark + } + + widget_puppet_generic_interactions_button = {} + + divider_light = { + layoutpolicy_vertical = expanding + } + + hbox = { + datamodel = "[PuppetEntry.GetInteractions]" + + item = { + widget_puppet_interaction_group = {} + } + } + + expand = {} + + widget_puppet_other_actions_button = {} + } + + hbox = { + visible = "[IsDataModelEmpty( PuppetEntry.GetInteractions )]" + layoutpolicy_horizontal = expanding + min_height = 60 + margin = { 15 5 } + + background = { + using = Background_Area_Dark + } + + text_single = { + text = "puppet_interaction_no_interactions_available" + default_format = "#low;weak" + align = nobaseline + } + } + } + + hbox = { + parentanchor = right|vcenter + position = { -10 57 } + + expand = {} + + text_multi = { + autoresize = yes + text = "[PuppetEntry.GetPuppetType.GetDescription]" + margin = { 15 10 } + maximumsize = { 320 80 } + default_format = "#F" + + background = { + using = Background_Area_Dark + } + } + } + } + + type puppet_action_decision_vbox = vbox + { + layoutpolicy_horizontal = expanding + margin = { 10 5 } + margin_right = 30 + + button_dynastic_cycle_decision = { + layoutpolicy_horizontal = expanding + visible = yes + + enabled = "[PuppetActionItem.IsEnabled]" + datacontext = "[PuppetActionItem.GetDecision]" + onclick = "[PuppetActionItem.OpenPuppetDecision]" + } + } + + type puppet_action_interaction_vbox = vbox + { + layoutpolicy_horizontal = expanding + margin = { 10 5 } + margin_right = 30 + hbox = { + layoutpolicy_horizontal = expanding + + tooltip_visible = "[Not( PuppetActionItem.IsEnabled )]" + tooltip = "puppet_action_disabled_tt" + + icon_placeholder = { + enabled = "[PuppetActionItem.IsEnabled]" + } + + text_single = { + text = "[PuppetActionItem.GetText]" + align = nobaseline + } + + expand = {} + } + } + + type puppet_action_other_vbox = vbox + { + layoutpolicy_horizontal = expanding + margin = { 10 5 } + margin_right = 30 + hbox = { + layoutpolicy_horizontal = expanding + + tooltip_visible = "[Not( PuppetActionItem.IsEnabled )]" + tooltip = "puppet_action_disabled_tt" + + icon_placeholder = { + enabled = "[PuppetActionItem.IsEnabled]" + } + + text_single = { + text = "[PuppetActionItem.GetText]" + align = nobaseline + } + + expand = {} + } + } + + type puppet_great_project_vbox = vbox + { + layoutpolicy_horizontal = expanding + margin = { 10 5 } + margin_right = 30 + + button_standard = { + layoutpolicy_horizontal = expanding + datacontext = "[PuppetActionItem.GetGreatProject]" + + tooltip = "[GreatProjectType.GetGreatProjectItemDescriptionTooltip( PuppetActionItem.GetPuppet.Self )]" + onclick = "[OpenGameViewData( 'plan_great_project', GreatProjectType.Self ) ]" + + margin_widget = { + parentanchor = right|vcenter + scissor = yes + + margin = { 2 2 } + + size = { 100% 100% } + + proportional_icon = { + name = "illustration" + visible = "[PuppetActionItem.IsEnabled]" + parentanchor = right|top + size = { 45% 100% } + mirror = horizontal + + alpha = 0.6 + texture = "[GreatProjectType.GetIllustration( PuppetActionItem.GetPuppet.Self )]" + + modify_texture = { + texture = "gfx/interface/component_masks/mask_fade_horizontal_extended.dds" + blend_mode = alphamultiply + } + } + + proportional_icon = { + visible = "[Not( PuppetActionItem.IsEnabled )]" + parentanchor = right|top + size = { 45% 100% } + mirror = horizontal + + enabled = no + alpha = 0.6 + texture = "[GreatProjectType.GetIllustration( PuppetActionItem.GetPuppet.Self )]" + + modify_texture = { + texture = "gfx/interface/component_masks/mask_fade_horizontal_extended.dds" + blend_mode = alphamultiply + } + } + } + + # Vignette + margin_widget = { + parentanchor = center + size = { 100% 100% } + + margin = { 2 2 } + + icon = { + parentanchor = center + size = { 100% 100% } + + texture = "gfx/interface/component_tiles/tile_vignette_3px.dds" + spriteType = Corneredtiled + spriteborder = { 5 5 } + } + } + + hbox = { + margin = { 15 0 } + margin_right = 10 + + text_single = { + name = "title" + visible = "[PuppetActionItem.IsEnabled]" + layoutpolicy_horizontal = growing + autoresize = no + + text = "[GreatProjectType.GetNameForCharacter( PuppetActionItem.GetPuppet.Self )]" + align = nobaseline + default_format = "#clickable" + } + + text_single = { + name = "title2" + visible = "[Not( PuppetActionItem.IsEnabled )]" + layoutpolicy_horizontal = growing + autoresize = no + + text = "[GreatProjectType.GetNameForCharacter( PuppetActionItem.GetPuppet.Self )]" + align = nobaseline + default_format = "#low" + } + + highlight_icon = { + name = "not_possible" + visible = "[Not( PuppetActionItem.IsEnabled )]" + size = { 30 30 } + + texture = "gfx/interface/icons/symbols/icon_cross.dds" + } + } + } + } +} + +template puppet_interaction_group_tooltip { + container = { + alwaystransparent = no + + puppet_tooltip_pop_out = { + blockoverride "puppet_tooltip_title" { + text = "puppet_interaction_category_tt_title" + } + + blockoverride "puppet_tooltip_header" { + text = "puppet_interaction_category_tt_header" + } + + blockoverride "puppet_tooltip_content" + { + text_multi = { + layoutpolicy_horizontal = expanding + layoutpolicy_vertical = expanding + text = "puppet_interaction_category_tt_special_content" + autoresize = yes + } + + text_single = { + visible = "[DataModelHasItems( PuppetInteractionGroup.GetGenericInteractions )]" + layoutpolicy_horizontal = expanding + layoutpolicy_vertical = expanding + text = "puppet_interaction_category_tt_generic_interactions" + tooltip = "puppet_interaction_category_tt_generic_content" + autoresize = yes + using = tooltip_se + } + } + + blockoverride "puppet_tooltip_icon" { + size = { 52 52 } + texture = "[PuppetInteractionGroup.GetCategory.GetIcon]" + } + } + } +} + +template puppet_generic_interactions_tooltip { + container = { + alwaystransparent = no + + puppet_tooltip_pop_out = { + blockoverride "puppet_tooltip_title" { + text = "puppet_generic_interactions_tt_title" + } + + blockoverride "puppet_tooltip_header" { + text = "puppet_generic_interactions_tt_header" + } + + blockoverride "puppet_tooltip_content" + { + hbox = { + layoutpolicy_horizontal = expanding + margin = { 5 5 } + + background = { + using = Background_Area + modify_texture = { + texture = "gfx/interface/component_masks/mask_fade_horizontal.dds" + blend_mode = alphamultiply + mirror = horizontal + } + } + + hbox = { + datamodel = "[PuppetEntry.GetInteractions]" + + item = { + widget_puppet_generic_category_icon = {} + } + } + + expand = {} + } + } + + blockoverride "puppet_tooltip_icon" { + size = { 45 45 } + texture = "gfx/interface/icons/icon_puppeteer.dds" + } + } + } +} + +template puppet_other_actions_tooltip { + container = { + alwaystransparent = no + + puppet_tooltip_pop_out = { + blockoverride "puppet_tooltip_title" { + text = "puppet_other_actions_tt_title" + } + + blockoverride "puppet_tooltip_header" { + text = "puppet_other_actions_tt_header" + } + + blockoverride "puppet_tooltip_content" + { + vbox_puppet_other_actions_section = { + visible = "[DataModelHasItems( PuppetEntry.GetDecisions )]" + + blockoverride "section_header" { + text = "puppet_other_actions_tt_decisions" + } + + blockoverride "section_items" { + datamodel = "[PuppetEntry.GetDecisions]" + } + } + + vbox_puppet_other_actions_section = { + visible = "[DataModelHasItems( PuppetEntry.GetGreatProjects )]" + + blockoverride "section_header" { + text = "puppet_other_actions_tt_great_projects" + } + + blockoverride "section_items" { + datamodel = "[PuppetEntry.GetGreatProjects]" + } + } + + vbox_puppet_other_actions_section = { + visible = "[DataModelHasItems( PuppetEntry.GetOtherActions )]" + + blockoverride "section_header" { + text = "puppet_other_actions_tt_additional" + } + + blockoverride "section_items" { + datamodel = "[PuppetEntry.GetOtherActions]" + } + } + } + + blockoverride "puppet_tooltip_icon" { + size = { 45 45 } + texture = "gfx/interface/icons/character_interactions/puppet.dds" + } + } + } +} + +template Puppet_Interaction_Group_Background { + # Diplomacy + icon = { + visible = "[EqualTo_string( PuppetInteractionGroup.GetCategory.GetDescription, Localize( 'DIPLOMACY_ACTIONS' ) )]" + parentanchor = center + widgetanchor = center + size = { 45 45 } + texture = "gfx/interface/icons/interaction_category_background.dds" + using = Color_Puppet_Interaction_Diplomacy + + modify_texture = { + texture = "gfx/interface/colors/white.dds" + blend_mode = overlay + alpha = 0.25 + } + } + + # Religion + icon = { + visible = "[EqualTo_string( PuppetInteractionGroup.GetCategory.GetDescription, Localize( 'RELIGIOUS_ACTIONS' ) )]" + parentanchor = center + widgetanchor = center + size = { 45 45 } + texture = "gfx/interface/icons/interaction_category_background.dds" + using = Color_Puppet_Interaction_Religion + + modify_texture = { + texture = "gfx/interface/colors/white.dds" + blend_mode = overlay + alpha = 0.1 + } + } + + # Hostile + icon = { + visible = "[EqualTo_string( PuppetInteractionGroup.GetCategory.GetDescription, Localize( 'HOSTILE_ACTIONS' ) )]" + parentanchor = center + widgetanchor = center + size = { 45 45 } + texture = "gfx/interface/icons/interaction_category_background.dds" + using = Color_Puppet_Interaction_Hostile + } + + # Friendly + icon = { + visible = "[EqualTo_string( PuppetInteractionGroup.GetCategory.GetDescription, Localize( 'FRIENDLY_ACTIONS' ) )]" + parentanchor = center + widgetanchor = center + size = { 45 45 } + texture = "gfx/interface/icons/interaction_category_background.dds" + using = Color_Puppet_Interaction_Friendly + + modify_texture = { + texture = "gfx/interface/colors/white.dds" + blend_mode = colordodge + alpha = 0.1 + } + } + + # Vassal + icon = { + visible = "[EqualTo_string( PuppetInteractionGroup.GetCategory.GetDescription, Localize( 'VASSAL_ACTIONS' ) )]" + parentanchor = center + widgetanchor = center + size = { 45 45 } + texture = "gfx/interface/icons/interaction_category_background.dds" + using = Color_Puppet_Interaction_Vassal + + modify_texture = { + texture = "gfx/interface/colors/white.dds" + blend_mode = overlay + alpha = 0.1 + } + } + + # Laamp & Diarchy (Note: shares color since they're mutually exclusive) + icon = { + visible = "[Or( EqualTo_string( PuppetInteractionGroup.GetCategory.GetDescription, Localize( 'LAAMP_ACTIONS' ) ), EqualTo_string( PuppetInteractionGroup.GetCategory.GetDescription, Localize( 'DIARCH_ACTIONS' ) ) )]" + parentanchor = center + widgetanchor = center + size = { 45 45 } + texture = "gfx/interface/icons/interaction_category_background.dds" + using = Color_Puppet_Interaction_Laamp_Diarch + } + + # Succession + icon = { + visible = "[EqualTo_string( PuppetInteractionGroup.GetCategory.GetDescription, Localize( 'SUCCESSION_ACTIONS' ) )]" + parentanchor = center + widgetanchor = center + size = { 45 45 } + texture = "gfx/interface/icons/interaction_category_background.dds" + using = Color_Puppet_Interaction_Succession + } + + # Prison + icon = { + visible = "[EqualTo_string( PuppetInteractionGroup.GetCategory.GetDescription, Localize( 'IMPRISOMENT_ACTIONS' ) )]" + parentanchor = center + widgetanchor = center + size = { 45 45 } + texture = "gfx/interface/icons/interaction_category_background.dds" + using = Color_Puppet_Interaction_Prison + } +} diff --git a/holder for later/common/landed_titles/05_goryeo.txt b/holder for later/common/landed_titles/05_goryeo.txt index 363330536..ccad76d7f 100644 --- a/holder for later/common/landed_titles/05_goryeo.txt +++ b/holder for later/common/landed_titles/05_goryeo.txt @@ -20,7 +20,7 @@ e_goryeo = { } custom_tooltip = { text = unify_goryeo_decision_requirement_tt - NOT = { government_allows = administrative } + NOT = { government_has_mechanic = administrative } } } } diff --git a/localization/english/replace/zz_NEOW_dynasty_names_l_english.yml b/localization/english/replace/zz_NEOW_dynasty_names_l_english.yml index d6d894388..b9ae4b79d 100644 --- a/localization/english/replace/zz_NEOW_dynasty_names_l_english.yml +++ b/localization/english/replace/zz_NEOW_dynasty_names_l_english.yml @@ -6310,6 +6310,7 @@ dynn_Pinheiro:0 "Pinheiro" dynn_Pinto:0 "Pinto" dynn_Piotrowski:0 "Piotrowski" + dynn_Comrat:0 "Comrat" dynn_piratiko:0 "Piratiko" dynn_Pirc:0 "Pirc" dynn_Pires:0 "Pires" diff --git a/map_data/geographical_regions/10_natural_disaster_regions.txt b/map_data/geographical_regions/10_natural_disaster_regions.txt index 116b9002b..06eee08e8 100644 --- a/map_data/geographical_regions/10_natural_disaster_regions.txt +++ b/map_data/geographical_regions/10_natural_disaster_regions.txt @@ -1,4 +1,4 @@ -global_flood_region = { +global_flood_region = { regions = { yellow_river_region yangtze_river_region pearl_river_region tigris_river_region irrawaddy_river_region mekong_river_region amur_river_region nile_river_region niger_river_region po_river_region rhine_river_region elbe_river_region rhone_river_region garonne_river_region seine_river_region loire_river_region vistula_river_region danube_river_region dniester_river_region dnieper_river_region daugava_river_region lovat_river_region volga_river_region don_river_region guadiana_river_region guadalquivir_river_region ganges_river_region indus_river_region kaveri_river_region godavari_river_region mahanadi_river_region tapti_river_region }