From fde01bc585b07b591dfdfa041b8a7f910d89f2a0 Mon Sep 17 00:00:00 2001 From: Pelmen323 Date: Fri, 13 Oct 2023 15:18:53 +0400 Subject: [PATCH 01/72] Add `display_individual_scopes` support --- Config/effects.cwt | 22 ++++++++++++++++++++++ Config/effects_bba.cwt | 4 ++++ Config/effects_new.cwt | 8 ++++++++ Config/effects_nsb.cwt | 8 ++++++++ 4 files changed, 42 insertions(+) diff --git a/Config/effects.cwt b/Config/effects.cwt index e48cd968..a116df27 100644 --- a/Config/effects.cwt +++ b/Config/effects.cwt @@ -178,6 +178,8 @@ alias[effect:every_country] = { ## cardinality = 0..1 random_select_amount = int[1..inf] ## cardinality = 0..1 + display_individual_scopes = bool + ## cardinality = 0..1 limit = { alias_name[trigger] = alias_match_left[trigger] } @@ -209,6 +211,8 @@ alias[effect:every_neighbor_country] = { ## cardinality = 0..1 random_select_amount = int[1..inf] ## cardinality = 0..1 + display_individual_scopes = bool + ## cardinality = 0..1 limit = { alias_name[trigger] = alias_match_left[trigger] } @@ -240,6 +244,8 @@ alias[effect:every_enemy_country] = { ## cardinality = 0..1 random_select_amount = int[1..inf] ## cardinality = 0..1 + display_individual_scopes = bool + ## cardinality = 0..1 limit = { alias_name[trigger] = alias_match_left[trigger] } @@ -1067,6 +1073,8 @@ alias[effect:every_state] = { ## cardinality = 0..1 random_select_amount = int[1..inf] ## cardinality = 0..1 + display_individual_scopes = bool + ## cardinality = 0..1 limit = { alias_name[trigger] = alias_match_left[trigger] } @@ -1084,6 +1092,8 @@ alias[effect:every_owned_state] = { ## cardinality = 0..1 random_select_amount = int[1..inf] ## cardinality = 0..1 + display_individual_scopes = bool + ## cardinality = 0..1 limit = { alias_name[trigger] = alias_match_left[trigger] } @@ -1101,6 +1111,8 @@ alias[effect:every_neighbor_state] = { ## cardinality = 0..1 random_select_amount = int[1..inf] ## cardinality = 0..1 + display_individual_scopes = bool + ## cardinality = 0..1 limit = { alias_name[trigger] = alias_match_left[trigger] } @@ -1837,6 +1849,8 @@ alias[effect:every_other_country] = { ## cardinality = 0..1 random_select_amount = int[1..inf] ## cardinality = 0..1 + display_individual_scopes = bool + ## cardinality = 0..1 limit = { alias_name[trigger] = alias_match_left[trigger] } @@ -2184,6 +2198,8 @@ alias[effect:every_unit_leader] = { ## cardinality = 0..1 random_select_amount = int[1..inf] ## cardinality = 0..1 + display_individual_scopes = bool + ## cardinality = 0..1 limit = { alias_name[trigger] = alias_match_left[trigger] } @@ -2215,6 +2231,8 @@ alias[effect:every_army_leader] = { ## cardinality = 0..1 random_select_amount = int[1..inf] ## cardinality = 0..1 + display_individual_scopes = bool + ## cardinality = 0..1 limit = { alias_name[trigger] = alias_match_left[trigger] } @@ -2246,6 +2264,8 @@ alias[effect:every_navy_leader] = { ## cardinality = 0..1 random_select_amount = int[1..inf] ## cardinality = 0..1 + display_individual_scopes = bool + ## cardinality = 0..1 limit = { alias_name[trigger] = alias_match_left[trigger] } @@ -2384,6 +2404,8 @@ alias[effect:global_every_army_leader] = { ### Apply the effect to this number of randomly selected entities ## cardinality = 0..1 random_select_amount = int[1..inf] + ## cardinality = 0..1 + display_individual_scopes = bool limit = { alias_name[trigger] = alias_match_left[trigger] } diff --git a/Config/effects_bba.cwt b/Config/effects_bba.cwt index 2e83b948..c476f7cd 100644 --- a/Config/effects_bba.cwt +++ b/Config/effects_bba.cwt @@ -104,6 +104,8 @@ alias[effect:every_country_division] = { ### Apply the effect to this number of randomly selected entities ## cardinality = 0..1 random_select_amount = int[1..inf] + ## cardinality = 0..1 + display_individual_scopes = bool ## cardinality = 0..1 limit = { alias_name[trigger] = alias_match_left[trigger] @@ -119,6 +121,8 @@ alias[effect:every_state_division] = { ### Apply the effect to this number of randomly selected entities ## cardinality = 0..1 random_select_amount = int[1..inf] + ## cardinality = 0..1 + display_individual_scopes = bool ## cardinality = 0..1 limit = { alias_name[trigger] = alias_match_left[trigger] diff --git a/Config/effects_new.cwt b/Config/effects_new.cwt index 9e114e03..5f3caa9f 100644 --- a/Config/effects_new.cwt +++ b/Config/effects_new.cwt @@ -156,6 +156,8 @@ alias[effect:every_operative] = { ### Apply the effect to this number of randomly selected entities ## cardinality = 0..1 random_select_amount = int[1..inf] + ## cardinality = 0..1 + display_individual_scopes = bool ## cardinality = 0..1 limit = { alias_name[trigger] = alias_match_left[trigger] @@ -349,6 +351,8 @@ alias[effect:every_controlled_state] = { ### Apply the effect to this number of randomly selected entities ## cardinality = 0..1 random_select_amount = int[1..inf] + ## cardinality = 0..1 + display_individual_scopes = bool ## cardinality = 0..1 limit = { alias_name[trigger] = alias_match_left[trigger] @@ -425,6 +429,8 @@ alias[effect:every_occupied_country] = { ### Apply the effect to this number of randomly selected entities ## cardinality = 0..1 random_select_amount = int[1..inf] + ## cardinality = 0..1 + display_individual_scopes = bool ## cardinality = 0..1 limit = { alias_name[trigger] = alias_match_left[trigger] @@ -501,6 +507,8 @@ alias[effect:every_country_with_original_tag] = { ### Apply the effect to this number of randomly selected entities ## cardinality = 0..1 random_select_amount = int[1..inf] + ## cardinality = 0..1 + display_individual_scopes = bool original_tag_to_check = enum[country_tags] original_tag_to_check = scope[country] ## cardinality = 0..1 diff --git a/Config/effects_nsb.cwt b/Config/effects_nsb.cwt index 5421a862..d4ced8fe 100644 --- a/Config/effects_nsb.cwt +++ b/Config/effects_nsb.cwt @@ -5,6 +5,8 @@ alias[effect:every_core_state] = { ## cardinality = 0..1 random_select_amount = int[1..inf] ## cardinality = 0..1 + display_individual_scopes = bool + ## cardinality = 0..1 limit = { alias_name[trigger] = alias_match_left[trigger] } @@ -84,6 +86,8 @@ alias[effect:every_character] = { ## cardinality = 0..1 random_select_amount = int[1..inf] ## cardinality = 0..1 + display_individual_scopes = bool + ## cardinality = 0..1 limit = { alias_name[trigger] = alias_match_left[trigger] } @@ -629,6 +633,8 @@ alias[effect:every_subject_country] = { ### Apply the effect to this number of randomly selected entities ## cardinality = 0..1 random_select_amount = int[1..inf] + ## cardinality = 0..1 + display_individual_scopes = bool ## cardinality = 0..1 limit = { alias_name[trigger] = alias_match_left[trigger] @@ -657,6 +663,8 @@ alias[effect:every_possible_country] = { ### Apply the effect to this number of randomly selected entities ## cardinality = 0..1 random_select_amount = int[1..inf] + ## cardinality = 0..1 + display_individual_scopes = bool ## cardinality = 0..1 limit = { alias_name[trigger] = alias_match_left[trigger] From d7c5af9d548bba39eaf257c6a4940ba42da204ec Mon Sep 17 00:00:00 2001 From: Pelmen323 Date: Fri, 13 Oct 2023 18:20:57 +0400 Subject: [PATCH 02/72] Split land units category, add verification that 5th row is not occupied by regiments (locked behind doctrine) --- Config/common/units.cwt | 252 +++++++++++++++++++++++++++++++++++----- Config/effects.cwt | 16 ++- Config/history/oobs.cwt | 16 ++- 3 files changed, 247 insertions(+), 37 deletions(-) diff --git a/Config/common/units.cwt b/Config/common/units.cwt index 73018f16..5d466967 100644 --- a/Config/common/units.cwt +++ b/Config/common/units.cwt @@ -3,6 +3,27 @@ types = { skip_root_key = sub_units path = "game/common/units" path_strict = yes + subtype[infantry] = { + group = infantry + } + subtype[armor] = { + group = armor + } + subtype[mobile] = { + group = mobile + } + subtype[combat_support] = { + group = combat_support + } + subtype[armor_combat_support] = { + group = armor_combat_support + } + subtype[mobile_combat_support] = { + group = mobile_combat_support + } + subtype[support_unit] = { + group = support + } subtype[air_unit] = { type = enum[air_units] type = { @@ -13,21 +34,6 @@ types = { subtype[ship_unit] = { map_icon_category = enum[ship_map_icons] } - subtype[support_unit] = { - group = support - } - subtype[land_unit] = { - map_icon_category = enum[land_map_icons] - } - subtype[armor_unit] = { - type = { - armor - ## cardinality = 0..8 - enum[land_units] - } - } - subtype[catch] = { - } } type[division_name] = { path = "game/common/units/names_divisions" @@ -43,52 +49,199 @@ unit = { ### 3D map asset. sprite = scalar #enum[unit_sprites] - subtype[land_unit] = { + subtype[infantry] = { + group = infantry + need = { ## cardinality = ~1..inf = int ## cardinality = 0..1 value[nsb_armor_variants] = int } + ai_priority = int ### map icon map_icon_category = enum[land_map_icons] ## cardinality = 0..1 - ### Cavalry cavalry = bool - ## cardinality = 0..1 - ### counts against special forces limit special_forces = bool - ## cardinality = 0..1 - ### Marines ooh-rah marines = bool + ## cardinality = 0..1 + mountaineers = bool + ## cardinality = 0..1 + can_be_parachuted = bool + ## cardinality = 0..1 + can_exfiltrate_from_coast = bool + ## cardinality = 0..1 + affects_speed = bool + + ## cardinality = 0..1 + ### use this equipment for speed + transport = + + ### unit type + type = { + ## cardinality = ~1..inf + enum[land_units] + } + } + subtype[armor] = { + group = armor + + need = { + ## cardinality = ~1..inf + = int + ## cardinality = 0..1 + value[nsb_armor_variants] = int + } + + ai_priority = int + + ### map icon + map_icon_category = enum[land_map_icons] ## cardinality = 0..1 - ### Mountaineers + cavalry = bool + ## cardinality = 0..1 + special_forces = bool + ## cardinality = 0..1 + marines = bool + ## cardinality = 0..1 mountaineers = bool + ## cardinality = 0..1 + can_be_parachuted = bool + ## cardinality = 0..1 + can_exfiltrate_from_coast = bool + ## cardinality = 0..1 + affects_speed = bool + + ## cardinality = 0..1 + ### use this equipment for speed + transport = + + ### unit type + type = { + ## cardinality = ~1..inf + enum[land_units] + } + } + subtype[mobile] = { + group = mobile + + need = { + ## cardinality = ~1..inf + = int + ## cardinality = 0..1 + value[nsb_armor_variants] = int + } + ai_priority = int + + ### map icon + map_icon_category = enum[land_map_icons] + + ## cardinality = 0..1 + cavalry = bool + ## cardinality = 0..1 + special_forces = bool + ## cardinality = 0..1 + marines = bool + ## cardinality = 0..1 + mountaineers = bool ## cardinality = 0..1 - ### Paratroopers can_be_parachuted = bool + ## cardinality = 0..1 + can_exfiltrate_from_coast = bool + ## cardinality = 0..1 + affects_speed = bool ## cardinality = 0..1 - affects_speed = no + ### use this equipment for speed + transport = + ### unit type + type = { + ## cardinality = ~1..inf + enum[land_units] + } + } + subtype[combat_support] = { + group = combat_support + + need = { + ## cardinality = ~1..inf + = int + ## cardinality = 0..1 + value[nsb_armor_variants] = int + } + + ai_priority = int + + ### map icon + map_icon_category = enum[land_map_icons] + + ## cardinality = 0..1 + cavalry = bool + ## cardinality = 0..1 + special_forces = bool + ## cardinality = 0..1 + marines = bool + ## cardinality = 0..1 + mountaineers = bool + ## cardinality = 0..1 + can_be_parachuted = bool ## cardinality = 0..1 - ### Marine commando can_exfiltrate_from_coast = bool + ## cardinality = 0..1 + affects_speed = bool ## cardinality = 0..1 ### use this equipment for speed transport = + ### unit type + type = { + ## cardinality = ~1..inf + enum[land_units] + } + } + subtype[armor_combat_support] = { + group = armor_combat_support + + need = { + ## cardinality = ~1..inf + = int + ## cardinality = 0..1 + value[nsb_armor_variants] = int + } + + ai_priority = int + + ### map icon + map_icon_category = enum[land_map_icons] + + ## cardinality = 0..1 + cavalry = bool + ## cardinality = 0..1 + special_forces = bool + ## cardinality = 0..1 + marines = bool + ## cardinality = 0..1 + mountaineers = bool + ## cardinality = 0..1 + can_be_parachuted = bool + ## cardinality = 0..1 + can_exfiltrate_from_coast = bool + ## cardinality = 0..1 + affects_speed = bool + ## cardinality = 0..1 - ### division designer group - group = scalar + ### use this equipment for speed + transport = ### unit type type = { @@ -96,8 +249,48 @@ unit = { enum[land_units] } } + subtype[mobile_combat_support] = { + group = mobile_combat_support + + need = { + ## cardinality = ~1..inf + = int + ## cardinality = 0..1 + value[nsb_armor_variants] = int + } + + ai_priority = int + + ### map icon + map_icon_category = enum[land_map_icons] + ## cardinality = 0..1 + cavalry = bool + ## cardinality = 0..1 + special_forces = bool + ## cardinality = 0..1 + marines = bool + ## cardinality = 0..1 + mountaineers = bool + ## cardinality = 0..1 + can_be_parachuted = bool + ## cardinality = 0..1 + can_exfiltrate_from_coast = bool + ## cardinality = 0..1 + affects_speed = bool + + ## cardinality = 0..1 + ### use this equipment for speed + transport = + + ### unit type + type = { + ## cardinality = ~1..inf + enum[land_units] + } + } subtype[support_unit] = { + group = support need = { ## cardinality = ~1..inf = int @@ -131,9 +324,6 @@ unit = { ### Use this equipment for speed. transport = - ## cardinality = 0..1 - ### Division designer group. - group = scalar ### Unit type. type = { ## cardinality = ~1..inf @@ -310,7 +500,7 @@ division_name = { ## cardinality = ~0..1 division_types = { ## cardinality = ~1..inf - + } ## cardinality = 0..1 link_numbering_with = { diff --git a/Config/effects.cwt b/Config/effects.cwt index a116df27..96c4f65c 100644 --- a/Config/effects.cwt +++ b/Config/effects.cwt @@ -610,13 +610,23 @@ alias[effect:division_template] = { ## cardinality = 0..1 division_cap = int regiments = { - ## cardinality = 1..25 - = { x = int[0..4] y = int[0..4] } + ## cardinality = 0..25 + = { x = int[0..4] y = int[0..3] } + ## cardinality = 0..25 + = { x = int[0..4] y = int[0..3] } + ## cardinality = 0..25 + = { x = int[0..4] y = int[0..3] } + ## cardinality = 0..25 + = { x = int[0..4] y = int[0..3] } + ## cardinality = 0..25 + = { x = int[0..4] y = int[0..3] } + ## cardinality = 0..25 + = { x = int[0..4] y = int[0..3] } } ## cardinality = 0..1 support = { ## cardinality = ~1..5 - = { x = 0 y = int[0..4] } + = { x = 0 y = int[0..4] } } ## cardinality = 0..1 template_counter = int diff --git a/Config/history/oobs.cwt b/Config/history/oobs.cwt index 87e65668..e6d9ab12 100644 --- a/Config/history/oobs.cwt +++ b/Config/history/oobs.cwt @@ -33,13 +33,23 @@ oob = { ## cardinality = 0..1 division_cap = int regiments = { - ## cardinality = 1..25 - = { x = int[0..4] y = int[0..4] } + ## cardinality = 0..25 + = { x = int[0..4] y = int[0..3] } + ## cardinality = 0..25 + = { x = int[0..4] y = int[0..3] } + ## cardinality = 0..25 + = { x = int[0..4] y = int[0..3] } + ## cardinality = 0..25 + = { x = int[0..4] y = int[0..3] } + ## cardinality = 0..25 + = { x = int[0..4] y = int[0..3] } + ## cardinality = 0..25 + = { x = int[0..4] y = int[0..3] } } ## cardinality = 0..1 support = { ## cardinality = ~1..5 - = { x = 0 y = int[0..5] } + = { x = 0 y = int[0..4] } } ## cardinality = 0..1 template_counter = int From c3cb3f8a7fe8fa591e86733abcc12c50d77100da Mon Sep 17 00:00:00 2001 From: AngriestBird Date: Sat, 14 Oct 2023 00:24:07 -0400 Subject: [PATCH 03/72] Build Airplane --- Config/common/ai_strategy.cwt | 1 + 1 file changed, 1 insertion(+) diff --git a/Config/common/ai_strategy.cwt b/Config/common/ai_strategy.cwt index a49148f3..e705e772 100644 --- a/Config/common/ai_strategy.cwt +++ b/Config/common/ai_strategy.cwt @@ -458,6 +458,7 @@ enums = { enum[ai_role_strats] = { role_ratio build_army + build_airplane } enum[building_strats] = { building_target From e37a63ef0c1855a71471a6f43ed30998dbb339d2 Mon Sep 17 00:00:00 2001 From: AngriestBird Date: Sat, 14 Oct 2023 19:11:34 -0400 Subject: [PATCH 04/72] Fixed some BBA related issues --- Config/common/consolidated_ai.cwt | 13 ++++++++ Config/common/equipment.cwt | 50 +++++++++++++++++++++++++++++++ Config/common/scripted_guis.cwt | 1 + Config/effects.cwt | 2 +- Config/shared_enums.cwt | 21 ++++++++++++- Config/temp_modifiers.cwt | 1 + 6 files changed, 86 insertions(+), 2 deletions(-) diff --git a/Config/common/consolidated_ai.cwt b/Config/common/consolidated_ai.cwt index 9a07554d..8564ec4d 100644 --- a/Config/common/consolidated_ai.cwt +++ b/Config/common/consolidated_ai.cwt @@ -447,7 +447,20 @@ values = { modern_armor # planes + fighter cas + naval_bomber + tactical_bomber + heavy_fighter + interceptor + scout_plane + suicide + strategic_bomber + cv_fighter + cv_cas + cv_naval_bomber + cv_suicide + cv_interceptor # ships naval_capital diff --git a/Config/common/equipment.cwt b/Config/common/equipment.cwt index 81a8632b..602ec278 100644 --- a/Config/common/equipment.cwt +++ b/Config/common/equipment.cwt @@ -378,6 +378,16 @@ upgrade = { ## cardinality = 0..1 build_cost_ic = float } + + ## cardinality = 0..1 + ### Multiples the provided stats to the given equipment type + multiply_stats = { + alias_name[unit_stat] = alias_match_left[naval_stat] + alias_name[naval_stat] = alias_match_left[naval_stat] + alias_name[air_stat] = alias_match_left[air_stat] + ## cardinality = 0..1 + build_cost_ic = float + } } module = { @@ -470,6 +480,46 @@ module = { enum[allowed_air_unit_missions] } + ## cardinality = 0..1 + mission_type_stats = { + ## cardinality = 1..1 + limit = { + enum[allowed_air_unit_missions] + } + + ## cardinality = 0..1 + ### Adds the provided stats to the given module + add_stats = { + alias_name[unit_stat] = alias_match_left[naval_stat] + alias_name[naval_stat] = alias_match_left[naval_stat] + alias_name[air_stat] = alias_match_left[air_stat] + ## cardinality = 0..1 + build_cost_ic = float + } + + ## cardinality = 0..1 + ### Adds the average value of the stats to the given module + add_average_stats = { + alias_name[unit_stat] = alias_match_left[naval_stat] + alias_name[naval_stat] = alias_match_left[naval_stat] + alias_name[air_stat] = alias_match_left[air_stat] + } + + ## cardinality = 0..1 + ### Multiples the stats of a given airframe + multiply_stats = { + alias_name[unit_stat] = alias_match_left[naval_stat] + alias_name[naval_stat] = alias_match_left[naval_stat] + alias_name[air_stat] = alias_match_left[air_stat] + } + } + + ## cardinality = 0..1 + ### Prevents equipment module types from being added + forbid_equipment_type_exact_match_for_category = { + alias_name[module_categories] = enum[unit_types] + } + ## cardinality = 0..1 xp_cost = int } diff --git a/Config/common/scripted_guis.cwt b/Config/common/scripted_guis.cwt index 5a9bb1f7..5bc038c4 100644 --- a/Config/common/scripted_guis.cwt +++ b/Config/common/scripted_guis.cwt @@ -398,6 +398,7 @@ enums = { enum[parent_window_token] = { top_bar #(attached to top bar that contains resources and stuff) + topbar # 8 tabs that shows up when you click on buttons next to your country flag decision_tab diff --git a/Config/effects.cwt b/Config/effects.cwt index 96c4f65c..872095e0 100644 --- a/Config/effects.cwt +++ b/Config/effects.cwt @@ -1889,7 +1889,7 @@ alias[effect:random_other_country] = { alias[effect:add_equipment_to_stockpile] = { type = type = value[nsb_armor_variants] - type = enum[bba_air_equipment] + type = enum[bba_air_variants] type = value[variable] amount = int_variable_field diff --git a/Config/shared_enums.cwt b/Config/shared_enums.cwt index a25d5482..1aaf6a4d 100644 --- a/Config/shared_enums.cwt +++ b/Config/shared_enums.cwt @@ -69,7 +69,7 @@ enums = { navy air } - + enum[command_cap] = { @tier1 @tier2 @@ -134,5 +134,24 @@ enums = { medium_plane_scout_plane_airframe large_plane_airframe large_plane_maritime_patrol_plane_airframe + + # Millennium Dawn Unique Airframes + small_plane_strike_airframe + small_plane_suicide_airframe + cv_small_plane_suicide_airframe + cv_small_plane_strike_airframe + medium_plane_cas_airframe + medium_plane_suicide_airframe + medium_plane_maritime_patrol_airframe + medium_plane_air_transport_airframe + cv_medium_plane_fighter_airframe + cv_medium_plane_cas_airframe + cv_medium_plane_scout_airframe + cv_medium_plane_maritime_patrol_airframe + cv_medium_plane_air_transport_airframe + large_plane_maritime_patrol_airframe + large_plane_awacs_airframe + large_plane_cas_airframe + large_plane_air_transport_airframe } } diff --git a/Config/temp_modifiers.cwt b/Config/temp_modifiers.cwt index bc21dbce..1c8931df 100644 --- a/Config/temp_modifiers.cwt +++ b/Config/temp_modifiers.cwt @@ -145,6 +145,7 @@ alias[air_stat:default_carrier_composition_weight] = float alias[air_stat:naval_strike_attack] = float alias[air_stat:naval_strike_targetting] = float alias[air_stat:thrust] = float +alias[air_stat:night_penalty] = float #for terrain modifiers alias[unit_stat:] = { alias_name[unit_stat] = alias_match_left[unit_stat] } From 3f31fc54f70e3fa403c9973d152114cd4d18c3df Mon Sep 17 00:00:00 2001 From: AngriestBird Date: Mon, 16 Oct 2023 15:27:04 -0400 Subject: [PATCH 05/72] Added a tooltip to the officer --- Config/history/oobs.cwt | 1 + 1 file changed, 1 insertion(+) diff --git a/Config/history/oobs.cwt b/Config/history/oobs.cwt index e6d9ab12..ab814dbb 100644 --- a/Config/history/oobs.cwt +++ b/Config/history/oobs.cwt @@ -111,6 +111,7 @@ oob = { } } ## cardinality = 0..inf + ### Defines a unique name for the division's commander officer = { name = scalar } From 2e428db24524f9f6dd8f66c36f8942915ea82d7c Mon Sep 17 00:00:00 2001 From: Alpinia Date: Mon, 16 Oct 2023 22:07:59 -0300 Subject: [PATCH 06/72] Added support for dynamic icons in foci --- Config/common/national_focus.cwt | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Config/common/national_focus.cwt b/Config/common/national_focus.cwt index 0c3fb268..25f20a01 100644 --- a/Config/common/national_focus.cwt +++ b/Config/common/national_focus.cwt @@ -85,6 +85,18 @@ focus_tree = { ## severity = warning icon = + ## cardinality = 0..inf + icon = { + ## cardinality = 0..1 + trigger = { + ## cardinality = ~1..inf + alias_name[trigger] = alias_match_left[trigger] + } + + ## cardinality = ~1..1 + value = + } + ## severity = warning cost = float From b72a7bf732c5965d43524d476fcf15269955f04e Mon Sep 17 00:00:00 2001 From: Alpinia Date: Mon, 16 Oct 2023 22:08:59 -0300 Subject: [PATCH 07/72] Added some more optimisation suggestions. --- Config/settings.cwt | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/Config/settings.cwt b/Config/settings.cwt index 33e1d741..0e0413e8 100644 --- a/Config/settings.cwt +++ b/Config/settings.cwt @@ -1,4 +1,18 @@ list_merge_optimisations = { + any_owned_state = { any_state is_owned_by } + every_owned_state = { every_state limit is_owned_by } + any_controlled_state = { any_state is_controlled_by } every_controlled_state = { every_state limit is_controlled_by } -} \ No newline at end of file + + any_core_state = { any_state is_core_of } + every_core_state = { every_state limit is_core_of } + + every_country_with_original_tag = { every_country limit original_tag } + + any_subject_country = { any_country is_subject_of } + every_subject_country = { every_country limit is_subject_of } + + any_neighbor_country = { any_country is_neighbor_of } + every_neighbor_country = { every_country limit is_neighbor_of } +} From 1ccf2c2bfab729dad793ab04d9f163b8098e7d58 Mon Sep 17 00:00:00 2001 From: Alpinia Date: Mon, 16 Oct 2023 22:13:43 -0300 Subject: [PATCH 08/72] Added random_select_amount and display_individual_scopes for every_military_industrial_organization --- Config/effects_aat.cwt | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Config/effects_aat.cwt b/Config/effects_aat.cwt index 907d9c29..6a2406af 100644 --- a/Config/effects_aat.cwt +++ b/Config/effects_aat.cwt @@ -2,12 +2,16 @@ ## scope = country ## push_scope = military_industrial_organization alias[effect:every_military_industrial_organization] = { - ## cardinality = 0..1 - tooltip = localisation - ## cardinality = 0..1 + ### Apply the effect to this number of randomly selected entities + ## cardinality = 0..1 + random_select_amount = int[1..inf] + ## cardinality = 0..1 + display_individual_scopes = bool limit = { alias_name[trigger] = alias_match_left[trigger] } + ## cardinality = 0..1 + tooltip = localisation ## cardinality = 1..inf alias_name[effect] = alias_match_left[effect] } From 53946fb2bb39f69fd8d33a8d87edd7cb1142e9ca Mon Sep 17 00:00:00 2001 From: AngriestBird Date: Tue, 17 Oct 2023 11:43:19 -0400 Subject: [PATCH 09/72] Fixed a CWtools Config Issue --- Config/history/oobs.cwt | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Config/history/oobs.cwt b/Config/history/oobs.cwt index ab814dbb..3d2928a6 100644 --- a/Config/history/oobs.cwt +++ b/Config/history/oobs.cwt @@ -82,17 +82,6 @@ oob = { ## cardinality = ~1..inf scalar } - ### Defines a unique portraits for this unit'ss division commander - ## cardinality = 0..1 - portraits = { - ### Portrait(s), army and/or civilian - ## cardinality = ~1..2 - army = { - ### Portrait(s), large (leader) and/or small (advisor) - ## cardinality = ~1..2 - enum[character_portrait_sizes] = scalar - } - } ## cardinality = 0..1 start_experience_factor = float[0..1] ## cardinality = 0..1 @@ -114,6 +103,17 @@ oob = { ### Defines a unique name for the division's commander officer = { name = scalar + ### Defines a unique portraits for this unit'ss division commander + ## cardinality = 0..1 + portraits = { + ### Portrait(s), army and/or civilian + ## cardinality = ~1..2 + army = { + ### Portrait(s), large (leader) and/or small (advisor) + ## cardinality = ~1..2 + enum[character_portrait_sizes] = scalar + } + } } } From 731101ec688e9f1316e0653f02637c5e967c4066 Mon Sep 17 00:00:00 2001 From: Pelmen323 Date: Fri, 20 Oct 2023 18:23:13 +0400 Subject: [PATCH 10/72] Fix some flase positives (mio position args support float, every mio doesn't need limit as mandatory arg) --- Config/common/military_industrial_organizations.cwt | 12 ++++++------ Config/effects_aat.cwt | 1 + 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/Config/common/military_industrial_organizations.cwt b/Config/common/military_industrial_organizations.cwt index c02dbc1d..de155f4f 100644 --- a/Config/common/military_industrial_organizations.cwt +++ b/Config/common/military_industrial_organizations.cwt @@ -226,8 +226,8 @@ military_industrial_organization = { ### Defines where the trait will be positioned in the tree grid. x=0 y=0 is the top left position. ### Do not reuse the same position twice. position = { - x = int - y = int + x = float + y = float } ### By default position is the absolute coordinate in the tree grid. ### If relative_position_id is provided, it becomes a delta applied to the input trait position @@ -373,8 +373,8 @@ military_industrial_organization = { ### Defines where the trait will be positioned in the tree grid. x=0 y=0 is the top left position. ### Do not reuse the same position twice. position = { - x = int - y = int + x = float + y = float } ### By default position is the absolute coordinate in the tree grid. ### If relative_position_id is provided, it becomes a delta applied to the input trait position @@ -487,8 +487,8 @@ military_industrial_organization = { ### Do not reuse the same position twice. ## cardinality = 0..1 position = { - x = int - y = int + x = float + y = float } ### By default position is the absolute coordinate in the tree grid. ### If relative_position_id is provided, it becomes a delta applied to the input trait position diff --git a/Config/effects_aat.cwt b/Config/effects_aat.cwt index 6a2406af..8774bf91 100644 --- a/Config/effects_aat.cwt +++ b/Config/effects_aat.cwt @@ -7,6 +7,7 @@ alias[effect:every_military_industrial_organization] = { random_select_amount = int[1..inf] ## cardinality = 0..1 display_individual_scopes = bool + ## cardinality = 0..1 limit = { alias_name[trigger] = alias_match_left[trigger] } From 5136062f2c4425ad9e6e2523bac01a05b3e63b46 Mon Sep 17 00:00:00 2001 From: AngriestBird Date: Fri, 20 Oct 2023 19:38:01 -0400 Subject: [PATCH 11/72] Added an Md Unique phase --- Config/common/combat_tactics.cwt | 1 + 1 file changed, 1 insertion(+) diff --git a/Config/common/combat_tactics.cwt b/Config/common/combat_tactics.cwt index 816cdebc..7a1fd430 100644 --- a/Config/common/combat_tactics.cwt +++ b/Config/common/combat_tactics.cwt @@ -55,6 +55,7 @@ enums = { # MD Phase main + city_combat } enum[attack_defend] = { attacker From 17e53cf504c4d2ae2ae5244e1a4783a6eb09840a Mon Sep 17 00:00:00 2001 From: AngriestBird Date: Sat, 21 Oct 2023 16:20:51 -0400 Subject: [PATCH 12/72] Fixed some random bugs --- Config/common/equipment.cwt | 29 ++++++++++++++++++++++++++--- Config/common/national_focus.cwt | 5 ++--- Config/common/units.cwt | 7 ++++++- 3 files changed, 34 insertions(+), 7 deletions(-) diff --git a/Config/common/equipment.cwt b/Config/common/equipment.cwt index 602ec278..0cfe620d 100644 --- a/Config/common/equipment.cwt +++ b/Config/common/equipment.cwt @@ -104,6 +104,9 @@ equipment = { ## cardinality = 0..1 is_convertable = bool + ## cardinality = 0..1 + one_use_only = bool + ## cardinality = 0..1 ### Determines if this equipment is available without unlocking from a technology. active = bool @@ -369,6 +372,15 @@ upgrade = { cost_by_level_for_licensed_equipment = int } + ## cardinality = 0..1 + ### Resource values defined here will increase the resource cost construction + resource_cost_thresholds = { + scalar = { + ## cardinality = ~1..10 + = int + } + } + ## cardinality = 0..1 ### Adds the provided stats to the given equipment type add_stats = { @@ -406,6 +418,11 @@ module = { ## cardinality = 0..1 add_equipment_type = enum[unit_types] ## cardinality = 0..1 + add_equipment_type = { + ## cardinality = 0..inf + enum[unit_types] + } + ## cardinality = 0..1 ### Adds the provided stats to the given module add_stats = { alias_name[unit_stat] = alias_match_left[naval_stat] @@ -480,10 +497,11 @@ module = { enum[allowed_air_unit_missions] } - ## cardinality = 0..1 + ## cardinality = 0..inf mission_type_stats = { ## cardinality = 1..1 limit = { + ## cardinality = 1..inf enum[allowed_air_unit_missions] } @@ -515,9 +533,10 @@ module = { } ## cardinality = 0..1 - ### Prevents equipment module types from being added + ### Prevents equipment module from being added to a specific plane airframe type forbid_equipment_type_exact_match_for_category = { - alias_name[module_categories] = enum[unit_types] + ## cardinality = 0..inf + enum[module_categories] = enum[unit_types] } ## cardinality = 0..1 @@ -567,6 +586,9 @@ enums = { interface_category_screen_ships interface_category_other_ships interface_category_air + + # Missile + missile } enum[allowed_ai_type_planes] = { cv_fighter @@ -575,6 +597,7 @@ enums = { cv_naval_bomber cv_suicide heavy_fighter + interceptor } complex_enum[module_slots] = { path = "game/common/units/equipment" diff --git a/Config/common/national_focus.cwt b/Config/common/national_focus.cwt index 25f20a01..1a3eead1 100644 --- a/Config/common/national_focus.cwt +++ b/Config/common/national_focus.cwt @@ -81,11 +81,10 @@ focus_tree = { ## cardinality = 0..1 text = localisation - ## cardinality = ~1..1 - ## severity = warning + ## cardinality = ~1..inf icon = - ## cardinality = 0..inf + ## cardinality = ~1..inf icon = { ## cardinality = 0..1 trigger = { diff --git a/Config/common/units.cwt b/Config/common/units.cwt index 5d466967..9c969332 100644 --- a/Config/common/units.cwt +++ b/Config/common/units.cwt @@ -320,6 +320,9 @@ unit = { ### Paratroopers. can_be_parachuted = bool + ## cardinality = 0..1 + can_exfiltrate_from_coast = bool + ## cardinality = 0..1 ### Use this equipment for speed. transport = @@ -620,7 +623,7 @@ enums = { light_cruiser screen_ship submarine - + # MD Specific corvette frigate @@ -628,6 +631,8 @@ enums = { missile_submarine helicopter_operator stealth_destroyer + anti_air + artillery } enum[allowed_air_unit_missions] = { paradrop From c943d241ce1a767bb8275881ba6f4f696d552f46 Mon Sep 17 00:00:00 2001 From: Pelmen323 Date: Thu, 26 Oct 2023 23:02:27 +0400 Subject: [PATCH 13/72] Cwtools wil lceck if mio icons exist --- Config/common/military_industrial_organizations.cwt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Config/common/military_industrial_organizations.cwt b/Config/common/military_industrial_organizations.cwt index de155f4f..70d74a8b 100644 --- a/Config/common/military_industrial_organizations.cwt +++ b/Config/common/military_industrial_organizations.cwt @@ -16,7 +16,7 @@ military_industrial_organization = { ### If gfx key GFX_my_MIO_token exists, use it. ### Else use GFX_idea_unknown ## cardinality = 0..1 - icon = scalar + icon = ## cardinality = 0..1 include = ## replace_scope = { this = country } @@ -113,7 +113,7 @@ military_industrial_organization = { ## cardinality = 0..1 name = scalar ## cardinality = 0..1 - icon = scalar + icon = ## cardinality = 0..1 limit_to_equipment_type = { ## cardinality = 0..inf @@ -145,7 +145,7 @@ military_industrial_organization = { ## cardinality = 0..1 name = scalar ## cardinality = 0..1 - icon = scalar + icon = ### If yes, trait background will be golden to indicate an interesting trait ## cardinality = 0..1 special_trait_background = yes @@ -292,7 +292,7 @@ military_industrial_organization = { ## cardinality = 0..1 name = scalar ## cardinality = 0..1 - icon = scalar + icon = ### If yes, trait background will be golden to indicate an interesting trait ## cardinality = 0..1 special_trait_background = yes @@ -405,7 +405,7 @@ military_industrial_organization = { ## cardinality = 0..1 name = scalar ## cardinality = 0..1 - icon = scalar + icon = ### If yes, trait background will be golden to indicate an interesting trait ## cardinality = 0..1 special_trait_background = yes From f636b153f07e028a8cba3ef6a2293ccdbbd37377 Mon Sep 17 00:00:00 2001 From: Alpinia Date: Tue, 7 Nov 2023 18:53:11 -0300 Subject: [PATCH 14/72] Added 'embargo' to the diplomatic relation enum. --- Config/shared_enums.cwt | 1 + 1 file changed, 1 insertion(+) diff --git a/Config/shared_enums.cwt b/Config/shared_enums.cwt index 1aaf6a4d..c0a42a16 100644 --- a/Config/shared_enums.cwt +++ b/Config/shared_enums.cwt @@ -36,6 +36,7 @@ enums = { improve_relation befriend market_access_rights + embargo } enum[add_factor] = { From 59b7cfe17b0030a0dbf3035555b283b1f82216e2 Mon Sep 17 00:00:00 2001 From: Alpinia Date: Tue, 7 Nov 2023 18:59:23 -0300 Subject: [PATCH 15/72] Added single_target_only parameter for add_to_war --- Config/effects.cwt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Config/effects.cwt b/Config/effects.cwt index 872095e0..d898cf18 100644 --- a/Config/effects.cwt +++ b/Config/effects.cwt @@ -1724,6 +1724,8 @@ alias[effect:add_to_war] = { enemy = enum[country_tags] ## cardinality = 0..1 hostility_reason = localisation + ## cardinality = 0..1 + single_target_only = bool } ### Show what idea does. From 3e701bf95ff8c1774dbab28ebfe088fcc425379b Mon Sep 17 00:00:00 2001 From: Alpinia Date: Tue, 7 Nov 2023 19:01:59 -0300 Subject: [PATCH 16/72] Added is_chassis parameter for equipment. --- Config/common/equipment.cwt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Config/common/equipment.cwt b/Config/common/equipment.cwt index 0cfe620d..278e39e2 100644 --- a/Config/common/equipment.cwt +++ b/Config/common/equipment.cwt @@ -9,6 +9,8 @@ types = { ## cardinality = 0..1 only_duplicate_archetype = yes ## cardinality = 0..1 + is_chassis = bool + ## cardinality = 0..1 variant_name = { ## cardinality = 1..inf value_set[equipment_variant] = From 7bf20e363e2e517596203fb658ab3dbfa36d2814 Mon Sep 17 00:00:00 2001 From: Alpinia Date: Tue, 7 Nov 2023 19:09:11 -0300 Subject: [PATCH 17/72] Added is_mio_visible, has_mio_trait. --- Config/triggers_aat.cwt | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Config/triggers_aat.cwt b/Config/triggers_aat.cwt index 874a4aaa..d397ae42 100644 --- a/Config/triggers_aat.cwt +++ b/Config/triggers_aat.cwt @@ -27,6 +27,14 @@ alias[trigger:has_mio_equipment_type] = ## scope = country alias[trigger:has_military_industrial_organization] = -### Checks if MIO is available +### Checks if MIO is available AND visible ## scope = military_industrial_organization alias[trigger:is_mio_available] = bool + +### Checks if MIO is visible +## scope = military_industrial_organization +alias[trigger:is_mio_visible] = bool + +### Checks if MIO is visible +## scope = military_industrial_organization +alias[trigger:has_mio_trait] = value[mio_token] From 83c1667e96c1d4640929d7f43d779f577af19e18 Mon Sep 17 00:00:00 2001 From: Pelmen323 Date: Sat, 25 Nov 2023 21:34:47 +0400 Subject: [PATCH 18/72] Fix treat trigger for mio --- Config/triggers.cwt | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Config/triggers.cwt b/Config/triggers.cwt index baa5fe78..b2d28855 100644 --- a/Config/triggers.cwt +++ b/Config/triggers.cwt @@ -193,10 +193,6 @@ alias[trigger:area] = ## scope = any alias[trigger:threat] = float[0..1] -### Check the global threat value. 0-100 value. -## scope = any -alias[trigger:threat] = float[0..100] - ### Always returns specified value. ## scope = any alias[trigger:always] = bool From 96012a1a00d4330107eb80da03c0e107a6ed4064 Mon Sep 17 00:00:00 2001 From: Pelmen323 Date: Sat, 25 Nov 2023 22:54:27 +0400 Subject: [PATCH 19/72] Fix threat trigger --- Config/triggers.cwt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Config/triggers.cwt b/Config/triggers.cwt index b2d28855..b9a08df2 100644 --- a/Config/triggers.cwt +++ b/Config/triggers.cwt @@ -2232,11 +2232,11 @@ alias[trigger:days_since_last_strategic_bombing] = int ### A trigger to check how dangerous enemy mines are for a country. Controlled by NAVAL_MINE_DANGER defines. Returns a value between 0 and 1. Example: mine_threat > 0.5. ## scope = country -alias[trigger:mine_threat] = float +alias[trigger:mine_threat] = float[0..1] ### A trigger to check convoy threat for a country. Controlled by NAVAL_CONVOY_DANGER defines. Returns a value between 0 and 1. Example: convoy_threat > 0.5. ## scope = country -alias[trigger:convoy_threat] = float +alias[trigger:convoy_threat] = float[0..1] ### Checks the casualties infliced by the speficied country to the scopped country. ## scope = country From fc1c2f26d67a338c6a5a33e62d55a773846cc1e3 Mon Sep 17 00:00:00 2001 From: Pelmen323 Date: Sat, 25 Nov 2023 22:54:52 +0400 Subject: [PATCH 20/72] Add a bunch of new variables (can't use madge) --- Config/common/buildings.cwt | 2 +- Config/variables.cwt | 99 +++++++++++++++++++++++++++++++++++-- 2 files changed, 97 insertions(+), 4 deletions(-) diff --git a/Config/common/buildings.cwt b/Config/common/buildings.cwt index 05a7dea9..dc045761 100644 --- a/Config/common/buildings.cwt +++ b/Config/common/buildings.cwt @@ -1,6 +1,6 @@ types = { type[building] = { - path = "game/common/building" + path = "game/common/buildings" skip_root_key = buildings localisation = { ## required diff --git a/Config/variables.cwt b/Config/variables.cwt index 3fb46e7f..e6cfc2e7 100644 --- a/Config/variables.cwt +++ b/Config/variables.cwt @@ -504,9 +504,102 @@ values = { ### (Trigger) Checks the target conscription amount of the country. target_conscription_amount - ### (Trigger) Power balance value of a country - power_balance_value - + ### (Trigger) Total constructions of air_base + total_constructed_air_base + ### (Trigger) Total constructions of anti_air + total_constructed_anti_air + ### (Trigger) Total constructions of civilian_factory + total_constructed_civilian_factory + ### (Trigger) Total constructions of dockyard + total_constructed_dockyard + ### (Trigger) Total constructions of fuel_silo + total_constructed_fuel_silo + ### (Trigger) Total constructions of infrastructure + total_constructed_infrastructure + ### (Trigger) Total constructions of land_fort + total_constructed_land_fort + ### (Trigger) Total constructions of military_factory + total_constructed_military_factory + ### (Trigger) Total constructions of naval_fort + total_constructed_naval_fort + ### (Trigger) Total constructions of nuclear_reactor + total_constructed_nuclear_reactor + ### (Trigger) Total constructions of other + total_constructed_other + ### (Trigger) Total constructions of port + total_constructed_port + ### (Trigger) Total constructions of radar + total_constructed_radar + ### (Trigger) Total constructions of refinery + total_constructed_refinery + ### (Trigger) Total constructions of rocket_site + total_constructed_rocket_site + ### (Trigger) Total constructions of supply_node + total_constructed_supply_node + ### (Trigger) Total produced equipment of type + total_equipment_produced_ + ### (Trigger) Total produced equipment of typeair_transport + total_equipment_produced_air_transport + ### (Trigger) Total produced equipment of typeamphibious + total_equipment_produced_amphibious + ### (Trigger) Total produced equipment of typeanti_air + total_equipment_produced_anti_air + ### (Trigger) Total produced equipment of typeanti_tank + total_equipment_produced_anti_tank + ### (Trigger) Total produced equipment of typearmor + total_equipment_produced_armor + ### (Trigger) Total produced equipment of typeartillery + total_equipment_produced_artillery + ### (Trigger) Total produced equipment of typecapital_ship + total_equipment_produced_capital_ship + ### (Trigger) Total produced equipment of typecarrier + total_equipment_produced_carrier + ### (Trigger) Total produced equipment of typecas + total_equipment_produced_cas + ### (Trigger) Total produced equipment of typeconvoy + total_equipment_produced_convoy + ### (Trigger) Total produced equipment of typefighter + total_equipment_produced_fighter + ### (Trigger) Total produced equipment of typeflame + total_equipment_produced_flame + ### (Trigger) Total produced equipment of typefloating_harbor + total_equipment_produced_floating_harbor + ### (Trigger) Total produced equipment of typeheavy_fighter + total_equipment_produced_heavy_fighter + ### (Trigger) Total produced equipment of typeinfantry + total_equipment_produced_infantry + ### (Trigger) Total produced equipment of typeinterceptor + total_equipment_produced_interceptor + ### (Trigger) Total produced equipment of typemaritime_patrol_plane + total_equipment_produced_maritime_patrol_plane + ### (Trigger) Total produced equipment of typemechanized + total_equipment_produced_mechanized + ### (Trigger) Total produced equipment of typemissile + total_equipment_produced_missile + ### (Trigger) Total produced equipment of typemotorized + total_equipment_produced_motorized + ### (Trigger) Total produced equipment of typenaval_bomber + total_equipment_produced_naval_bomber + ### (Trigger) Total produced equipment of typerailway_gun + total_equipment_produced_railway_gun + ### (Trigger) Total produced equipment of typerocket + total_equipment_produced_rocket + ### (Trigger) Total produced equipment of typescout_plane + total_equipment_produced_scout_plane + ### (Trigger) Total produced equipment of typescreen_ship + total_equipment_produced_screen_ship + ### (Trigger) Total produced equipment of typestrategic_bomber + total_equipment_produced_strategic_bomber + ### (Trigger) Total produced equipment of typesubmarine + total_equipment_produced_submarine + ### (Trigger) Total produced equipment of typesuicide + total_equipment_produced_suicide + ### (Trigger) Total produced equipment of typesupport + total_equipment_produced_support + ### (Trigger) Total produced equipment of typetactical_bomber + total_equipment_produced_tactical_bomber + ### (Trigger) Total produced equipment of typetrain + total_equipment_produced_train # ======================= # STATE DYNAMIC VARIABLES From 7a806917ec3888f186e33332f2b810e631d86b6a Mon Sep 17 00:00:00 2001 From: AngriestBird Date: Tue, 28 Nov 2023 15:01:27 -0500 Subject: [PATCH 21/72] Added Contract Scope Triggers TODO add contract scope --- Config/triggers.cwt | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Config/triggers.cwt b/Config/triggers.cwt index b9a08df2..657575bd 100644 --- a/Config/triggers.cwt +++ b/Config/triggers.cwt @@ -1916,6 +1916,18 @@ alias[trigger:stockpile_ratio] = { ratio = float } +### Checks the deal completion with the target value +alias[trigger:contract_contains_equipment] = + +### Checks if the buyer is +alias[trigger:buyer] = scope[country] + +### Checks if the buyer is +alias[trigger:buyer] = scope[country] + +### Checks the deal completion with the target value +alias[trigger:deal_completion] = float[0..1] + ### Checks for state strategic value. ## scope = state alias[trigger:state_strategic_value] = int From 4505d862261e11eb81c91be572fdeac9295caa5c Mon Sep 17 00:00:00 2001 From: AngriestBird Date: Thu, 14 Dec 2023 19:04:44 -0500 Subject: [PATCH 22/72] Seller --- Config/triggers.cwt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Config/triggers.cwt b/Config/triggers.cwt index 657575bd..6b651fde 100644 --- a/Config/triggers.cwt +++ b/Config/triggers.cwt @@ -1922,8 +1922,8 @@ alias[trigger:contract_contains_equipment] = ### Checks if the buyer is alias[trigger:buyer] = scope[country] -### Checks if the buyer is -alias[trigger:buyer] = scope[country] +### Checks if the seller is +alias[trigger:seller] = scope[country] ### Checks the deal completion with the target value alias[trigger:deal_completion] = float[0..1] From d4c42fb43810eed7ad9cc224bb7f1d9999b69f00 Mon Sep 17 00:00:00 2001 From: AngriestBird Date: Fri, 15 Dec 2023 10:00:29 -0500 Subject: [PATCH 23/72] Fixed Unit Type missing --- Config/common/units.cwt | 1 + 1 file changed, 1 insertion(+) diff --git a/Config/common/units.cwt b/Config/common/units.cwt index 9c969332..7678f80d 100644 --- a/Config/common/units.cwt +++ b/Config/common/units.cwt @@ -581,6 +581,7 @@ enums = { cv_naval_bomber cv_cas cv_fighter + cv_interceptor heavy_fighter amphibious } From 825e5e7769a238a912c413f77d6cb27bc7f4591f Mon Sep 17 00:00:00 2001 From: AngriestBird Date: Fri, 15 Dec 2023 10:03:26 -0500 Subject: [PATCH 24/72] Added equipment_market_for_sale_threshold to equipment ai strategy enum --- Config/common/ai_strategy.cwt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Config/common/ai_strategy.cwt b/Config/common/ai_strategy.cwt index e705e772..141b89b0 100644 --- a/Config/common/ai_strategy.cwt +++ b/Config/common/ai_strategy.cwt @@ -387,7 +387,8 @@ enums = { equipment_market_buying_threshold equipment_market_for_sale_threshold equipment_market_for_sale_factor - equipment_market_min_for_sale + equipment_market_min_for_sale + equipment_market_max_for_sale } enum[no_id_strats] = { added_military_to_civilian_factory_ratio From bb30f97780b26d97e9fbc1f39cfe6a585ebdcff0 Mon Sep 17 00:00:00 2001 From: AngriestBird Date: Fri, 15 Dec 2023 10:26:28 -0500 Subject: [PATCH 25/72] Fixed MD validation error w/ unique airframe types (added todo) --- Config/shared_enums.cwt | 149 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 143 insertions(+), 6 deletions(-) diff --git a/Config/shared_enums.cwt b/Config/shared_enums.cwt index c0a42a16..6e7405ea 100644 --- a/Config/shared_enums.cwt +++ b/Config/shared_enums.cwt @@ -137,22 +137,159 @@ enums = { large_plane_maritime_patrol_plane_airframe # Millennium Dawn Unique Airframes - small_plane_strike_airframe + # TODO: We need to create a system for validating the unique type of airframes. MD uses this in our plane designer where a sub category can be a different version i.e. small_plane_strike_airframe_1 + small_plane_airframe_0 + small_plane_airframe_1 + small_plane_airframe_2 + small_plane_airframe_3 + small_plane_airframe_4 + cv_small_plane_airframe_0 + cv_small_plane_airframe_1 + cv_small_plane_airframe_2 + cv_small_plane_airframe_3 + cv_small_plane_airframe_4 + small_plane_cas_airframe_0 + small_plane_cas_airframe_1 + small_plane_cas_airframe_2 + small_plane_cas_airframe_3 + small_plane_cas_airframe_4 + cv_small_plane_cas_airframe_0 + cv_small_plane_cas_airframe_1 + cv_small_plane_cas_airframe_2 + cv_small_plane_cas_airframe_3 + cv_small_plane_cas_airframe_4 + small_plane_naval_bomber_airframe_0 + small_plane_naval_bomber_airframe_1 + small_plane_naval_bomber_airframe_2 + small_plane_naval_bomber_airframe_3 + small_plane_naval_bomber_airframe_4 + cv_small_plane_naval_bomber_airframe_0 + cv_small_plane_naval_bomber_airframe_1 + cv_small_plane_naval_bomber_airframe_2 + cv_small_plane_naval_bomber_airframe_3 + cv_small_plane_naval_bomber_airframe_4 small_plane_suicide_airframe - cv_small_plane_suicide_airframe + small_plane_suicide_airframe_0 + small_plane_suicide_airframe_1 + small_plane_suicide_airframe_2 + small_plane_suicide_airframe_3 + small_plane_suicide_airframe_4 + small_plane_strike_airframe + small_plane_strike_airframe_0 + small_plane_strike_airframe_1 + small_plane_strike_airframe_2 + small_plane_strike_airframe_3 + small_plane_strike_airframe_4 cv_small_plane_strike_airframe + cv_small_plane_strike_airframe_0 + cv_small_plane_strike_airframe_1 + cv_small_plane_strike_airframe_2 + cv_small_plane_strike_airframe_3 + cv_small_plane_strike_airframe_4 + cv_small_plane_suicide_airframe + cv_small_plane_suicide_airframe_0 + cv_small_plane_suicide_airframe_1 + cv_small_plane_suicide_airframe_2 + cv_small_plane_suicide_airframe_3 + cv_small_plane_suicide_airframe_4 + medium_plane_airframe_0 + medium_plane_airframe_1 + medium_plane_airframe_2 + medium_plane_airframe_3 + medium_plane_airframe_4 + medium_plane_fighter_airframe_0 + medium_plane_fighter_airframe_1 + medium_plane_fighter_airframe_2 + medium_plane_fighter_airframe_3 + medium_plane_fighter_airframe_4 medium_plane_cas_airframe + medium_plane_cas_airframe_0 + medium_plane_cas_airframe_1 + medium_plane_cas_airframe_2 + medium_plane_cas_airframe_3 + medium_plane_cas_airframe_4 + cv_medium_plane_cas_airframe + cv_medium_plane_cas_airframe_0 + cv_medium_plane_cas_airframe_1 + cv_medium_plane_cas_airframe_2 + cv_medium_plane_cas_airframe_3 + cv_medium_plane_cas_airframe_4 medium_plane_suicide_airframe + medium_plane_suicide_airframe_0 + medium_plane_suicide_airframe_1 + medium_plane_suicide_airframe_2 + medium_plane_suicide_airframe_3 + medium_plane_suicide_airframe_4 medium_plane_maritime_patrol_airframe + medium_plane_maritime_patrol_airframe_0 + medium_plane_maritime_patrol_airframe_1 + medium_plane_maritime_patrol_airframe_2 + medium_plane_maritime_patrol_airframe_3 + medium_plane_maritime_patrol_airframe_4 medium_plane_air_transport_airframe - cv_medium_plane_fighter_airframe - cv_medium_plane_cas_airframe + medium_plane_air_transport_airframe_0 + medium_plane_air_transport_airframe_1 + medium_plane_air_transport_airframe_2 + medium_plane_air_transport_airframe_3 + medium_plane_air_transport_airframe_4 cv_medium_plane_scout_airframe + cv_medium_plane_scout_airframe_0 + cv_medium_plane_scout_airframe_1 + cv_medium_plane_scout_airframe_2 + cv_medium_plane_scout_airframe_3 + cv_medium_plane_scout_airframe_4 cv_medium_plane_maritime_patrol_airframe + cv_medium_plane_maritime_patrol_airframe_0 + cv_medium_plane_maritime_patrol_airframe_1 + cv_medium_plane_maritime_patrol_airframe_2 + cv_medium_plane_maritime_patrol_airframe_3 + cv_medium_plane_maritime_patrol_airframe_4 cv_medium_plane_air_transport_airframe - large_plane_maritime_patrol_airframe + cv_medium_plane_air_transport_airframe_0 + cv_medium_plane_air_transport_airframe_1 + cv_medium_plane_air_transport_airframe_2 + cv_medium_plane_air_transport_airframe_3 + cv_medium_plane_air_transport_airframe_4 + cv_medium_plane_fighter_airframe + cv_medium_plane_fighter_airframe_0 + cv_medium_plane_fighter_airframe_1 + cv_medium_plane_fighter_airframe_2 + cv_medium_plane_fighter_airframe_3 + cv_medium_plane_fighter_airframe_4 + cv_medium_plane_airframe + cv_medium_plane_airframe_0 + cv_medium_plane_airframe_1 + cv_medium_plane_airframe_2 + cv_medium_plane_airframe_3 + cv_medium_plane_airframe_4 + large_plane_airframe_0 + large_plane_airframe_1 + large_plane_airframe_2 + large_plane_airframe_3 + large_plane_airframe_4 + large_plane_air_transport_airframe + large_plane_air_transport_airframe_0 + large_plane_air_transport_airframe_1 + large_plane_air_transport_airframe_2 + large_plane_air_transport_airframe_3 + large_plane_air_transport_airframe_4 large_plane_awacs_airframe + large_plane_awacs_airframe_0 + large_plane_awacs_airframe_1 + large_plane_awacs_airframe_2 + large_plane_awacs_airframe_3 + large_plane_awacs_airframe_4 + large_plane_maritime_patrol_airframe + large_plane_maritime_patrol_airframe_0 + large_plane_maritime_patrol_airframe_1 + large_plane_maritime_patrol_airframe_2 + large_plane_maritime_patrol_airframe_3 + large_plane_maritime_patrol_airframe_4 large_plane_cas_airframe - large_plane_air_transport_airframe + large_plane_cas_airframe_0 + large_plane_cas_airframe_1 + large_plane_cas_airframe_2 + large_plane_cas_airframe_3 + large_plane_cas_airframe_4 } } From 4fb5cd716e4e835291ca6e8ab17d692c8fb0d23f Mon Sep 17 00:00:00 2001 From: Pelmen323 Date: Sun, 21 Jan 2024 16:01:56 +0400 Subject: [PATCH 26/72] Add trigger `num_planes_stationed_in_regions` --- Config/triggers_aat.cwt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Config/triggers_aat.cwt b/Config/triggers_aat.cwt index d397ae42..004671a6 100644 --- a/Config/triggers_aat.cwt +++ b/Config/triggers_aat.cwt @@ -38,3 +38,13 @@ alias[trigger:is_mio_visible] = bool ### Checks if MIO is visible ## scope = military_industrial_organization alias[trigger:has_mio_trait] = value[mio_token] + +### Checks num of planes stationed in a region +## scope = country +alias[trigger:num_planes_stationed_in_regions] = { + value = int + regions = { + ## cardinality = 1..inf + + } +} From fc9774deb847fea32738195dbb233b1d946b8c06 Mon Sep 17 00:00:00 2001 From: Pelmen323 Date: Sun, 21 Jan 2024 16:09:00 +0400 Subject: [PATCH 27/72] Add more variables --- Config/modifiers.cwt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Config/modifiers.cwt b/Config/modifiers.cwt index 6b77c15d..4cb51d2c 100644 --- a/Config/modifiers.cwt +++ b/Config/modifiers.cwt @@ -96,6 +96,7 @@ modifiers = { ai_license_acceptance = ai # air + ace_effectiveness_factor = air air_accidents = air air_accidents_factor = air air_ace_bonuses_factor = air @@ -207,6 +208,7 @@ modifiers = { cavalry_attack_factor = army cavalry_defence_factor = army combat_width_factor = army + coastal_bunker_effectiveness_factor = army coordination_bonus = army defence = army defense_bonus_against = army @@ -224,6 +226,7 @@ modifiers = { female_random_army_leader_chance = army heat_attrition = army heat_attrition_factor = army + land_bunker_effectiveness_factor = army land_night_attack = army local_org_regain = army max_commander_army_size = army @@ -488,6 +491,9 @@ modifiers = { weekly_casualties_war_support = country weekly_convoys_war_support = country weekly_bombing_war_support = country + air_spirit_category_type_cost_factor = country + land_spirit_category_type_cost_factor = country + navy_spirit_category_type_cost_factor = country # defensive armor_factor = defensive From ce235eebe3385a852dbad5f567f9d363eaaae562 Mon Sep 17 00:00:00 2001 From: Pelmen323 Date: Sun, 21 Jan 2024 16:25:59 +0400 Subject: [PATCH 28/72] More generic fixes --- Config/effects.cwt | 7 ++++++- Config/effects_aat.cwt | 8 ++++++++ Config/effects_bba.cwt | 2 +- Config/effects_nsb.cwt | 2 ++ Config/triggers_new.cwt | 2 ++ Config/variables.cwt | 3 +++ 6 files changed, 22 insertions(+), 2 deletions(-) diff --git a/Config/effects.cwt b/Config/effects.cwt index d898cf18..883f550f 100644 --- a/Config/effects.cwt +++ b/Config/effects.cwt @@ -1537,11 +1537,16 @@ alias[effect:add_resource] = { ## scope = country alias[effect:remove_unit_leader] = value[unit_leader_ids] -### Add time limited idea to country idea, add_timed_idea = { idea = id days = number_of_days }. +### Add time limited idea to country idea, supports days/months/years. ## scope = country alias[effect:add_timed_idea] = { idea = enum[idea_name] + ## cardinality = 0..1 days = int_variable_field + ## cardinality = 0..1 + months = int_variable_field + ## cardinality = 0..1 + years = int_variable_field } ### Stops specefied country being a puppet of current country. diff --git a/Config/effects_aat.cwt b/Config/effects_aat.cwt index 8774bf91..40631c96 100644 --- a/Config/effects_aat.cwt +++ b/Config/effects_aat.cwt @@ -82,3 +82,11 @@ alias[effect:add_equipment_subsidy] = { scope[country] } } + +### Change MIO name +## scope = military_industrial_organization +alias[effect:set_mio_name_key] = localisation + +### Change MIO icon +## scope = military_industrial_organization +alias[effect:set_mio_icon] = diff --git a/Config/effects_bba.cwt b/Config/effects_bba.cwt index c476f7cd..b125fdea 100644 --- a/Config/effects_bba.cwt +++ b/Config/effects_bba.cwt @@ -40,7 +40,7 @@ alias[effect:remove_power_balance_side] = { ## scope = country alias[effect:add_power_balance_value] = { id = - value = float[-1..1] + value = float[-2..2] ## cardinality = 0..1 tooltip_side = localisation } diff --git a/Config/effects_nsb.cwt b/Config/effects_nsb.cwt index d4ced8fe..0644336e 100644 --- a/Config/effects_nsb.cwt +++ b/Config/effects_nsb.cwt @@ -795,6 +795,7 @@ alias[effect:generate_character] = { token_base = value_set[advisor_token] ## cardinality = 0..1 name = localisation + ## cardinality = 0..1 advisor = { slot = value[character_advisor_slot] ## cardinality = 0..1 @@ -866,6 +867,7 @@ alias[effect:generate_character] = { ## cardinality = 0..1 can_be_fired = bool } + ## cardinality = 0..1 ### Should have at least one portrait defined portraits = { ### Portrait(s), army and/or civilian diff --git a/Config/triggers_new.cwt b/Config/triggers_new.cwt index db4417c8..d9267401 100644 --- a/Config/triggers_new.cwt +++ b/Config/triggers_new.cwt @@ -479,6 +479,8 @@ alias[trigger:has_allowed_idea_with_traits] = { ## cardinality = 0..1 ### # if specified, these ideas will be ignored. ignore = enum[idea_name] + ## cardinality = 0..1 + characters = bool } ###Is leading volunteers in the target. diff --git a/Config/variables.cwt b/Config/variables.cwt index e6cfc2e7..c5bf764c 100644 --- a/Config/variables.cwt +++ b/Config/variables.cwt @@ -651,6 +651,9 @@ values = { ### Checks the current resistance target. resistance_target + ### Checks the current resistance target value that is not modifier by law. + resistance_target_without_law + ### (Trigger) Checks for state strategic value. state_and_terrain_strategic_value From 563f5c599a75c549e90f513d78081c94077e0ae1 Mon Sep 17 00:00:00 2001 From: Pelmen323 Date: Sun, 21 Jan 2024 16:37:47 +0400 Subject: [PATCH 29/72] Update remember_old_capital to support bool --- Config/effects.cwt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Config/effects.cwt b/Config/effects.cwt index 883f550f..a3b06347 100644 --- a/Config/effects.cwt +++ b/Config/effects.cwt @@ -22,14 +22,14 @@ alias[effect:event_option_tooltip] = localisation alias[effect:set_capital] = { state = scope[state] ## cardinality = 0..1 - remember_old_capital = no + remember_old_capital = bool } ### Move capital to state. ## scope = country alias[effect:set_capital] = { state = ## cardinality = 0..1 - remember_old_capital = no + remember_old_capital = bool } ### Add core on state. From 4f311ea6f62a4abba4347eb8c51ce84ba946230c Mon Sep 17 00:00:00 2001 From: Pelmen323 Date: Sun, 21 Jan 2024 16:46:33 +0400 Subject: [PATCH 30/72] I hate variables in cwtools --- Config/effects.cwt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Config/effects.cwt b/Config/effects.cwt index a3b06347..cfd5b6da 100644 --- a/Config/effects.cwt +++ b/Config/effects.cwt @@ -2559,6 +2559,15 @@ alias[effect:add_max_trait] = int ## scope = { character unit_leader } alias[effect:add_skill_level] = int +### Adds a value or a variable to a temp variable. +## scope = any +alias[effect:add_to_temp_variable] = { + ## cardinality = 1..2 + value_set[variable] = value[variable] + ## cardinality = 0..1 + tooltip = localisation +} + ### Adds a value or a variable to a temp variable. ## scope = any alias[effect:add_to_temp_variable] = { @@ -2567,6 +2576,7 @@ alias[effect:add_to_temp_variable] = { ## cardinality = 0..1 tooltip = localisation } + ### Adds a value or a variable to a temp variable. ## scope = any alias[effect:add_to_temp_variable] = { From 71bb0784eef3353ac44c2d48f95da0e9d7d2b0dd Mon Sep 17 00:00:00 2001 From: Pelmen323 Date: Mon, 22 Jan 2024 17:51:36 +0400 Subject: [PATCH 31/72] Update `targeted_decisions_state_map_modes` enum --- Config/common/decisions.cwt | 1 + 1 file changed, 1 insertion(+) diff --git a/Config/common/decisions.cwt b/Config/common/decisions.cwt index e37c8abb..97ed7078 100644 --- a/Config/common/decisions.cwt +++ b/Config/common/decisions.cwt @@ -590,6 +590,7 @@ enums = { enum[targeted_decisions_state_map_modes] = { map_only + decision_view_only map_and_decisions_view } } From 4b3d17896c47a3e2cf9531ca428ace495c78b524 Mon Sep 17 00:00:00 2001 From: Pelmen323 Date: Mon, 22 Jan 2024 18:16:06 +0400 Subject: [PATCH 32/72] Update scorers targets --- Config/common/scorers.cwt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Config/common/scorers.cwt b/Config/common/scorers.cwt index ef68e8d3..6632babf 100644 --- a/Config/common/scorers.cwt +++ b/Config/common/scorers.cwt @@ -22,6 +22,16 @@ country_scorer = { value[variable] ## cardinality = 0..inf variable_field + ## cardinality = 0..inf + scope[country] + ## cardinality = 0..inf + enum[country_tags], + ## cardinality = 0..inf + value[variable], + ## cardinality = 0..inf + variable_field, + ## cardinality = 0..inf + scope[country], } ## cardinality = 0..1 From 09409378d772eb474373fac2801dbd52b93afae6 Mon Sep 17 00:00:00 2001 From: AngriestBird Date: Sun, 4 Feb 2024 16:32:04 -0500 Subject: [PATCH 33/72] Fixed Bookmark False Positive minor = yes in non-country tag --- Config/common/bookmarks.cwt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Config/common/bookmarks.cwt b/Config/common/bookmarks.cwt index d2355466..4e41c370 100644 --- a/Config/common/bookmarks.cwt +++ b/Config/common/bookmarks.cwt @@ -47,6 +47,9 @@ bookmark = { ## cardinality = ~0..1 "---" = { + ## cardinality = 0..1 + minor = yes + history = localisation } From 70d854866fd0931b6f4989bb200f65c8b2773958 Mon Sep 17 00:00:00 2001 From: AngriestBird Date: Sun, 4 Feb 2024 16:43:47 -0500 Subject: [PATCH 34/72] Implemented a temp workaround for false positives for MD. Can be used for other mods until I figure a way to dupe archetype validation --- Config/common/consolidated_ai.cwt | 1 + Config/effects.cwt | 4 ++++ Config/shared_enums.cwt | 3 ++- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/Config/common/consolidated_ai.cwt b/Config/common/consolidated_ai.cwt index 8564ec4d..0f18585f 100644 --- a/Config/common/consolidated_ai.cwt +++ b/Config/common/consolidated_ai.cwt @@ -342,6 +342,7 @@ ai_equipment_design_group = { type = type = value[nsb_armor_variants] type = value[bba_air_variants] + type = enum[md_unique_dupe_archetypes] # TODO: Remove this once we have system for creating custom duplicate archetype things ### The matching requirements on individual module slots. ## cardinality = 0..1 diff --git a/Config/effects.cwt b/Config/effects.cwt index cfd5b6da..d6a10fbe 100644 --- a/Config/effects.cwt +++ b/Config/effects.cwt @@ -1761,6 +1761,8 @@ alias[effect:create_equipment_variant] = { type = value[nsb_armor_variants] type = value[bba_air_variants] type = enum[equipment_bonus_type] + type = enum[md_unique_dupe_archetypes] # TODO: Remove this once we have system for creating custom duplicate archetype things + ## cardinality = 0..1 name_group = ## cardinality = 0..1 @@ -1801,6 +1803,7 @@ alias[effect:add_equipment_production] = { type = type = value[nsb_armor_variants] type = value[bba_air_variants] + type = enum[md_unique_dupe_archetypes] # TODO: Remove this once we have system for creating custom duplicate archetype things ## cardinality = 0..1 creator = enum[country_tags] ## cardinality = 0..1 @@ -1898,6 +1901,7 @@ alias[effect:add_equipment_to_stockpile] = { type = value[nsb_armor_variants] type = enum[bba_air_variants] type = value[variable] + type = enum[md_unique_dupe_archetypes] # TODO: Remove this once we have system for creating custom duplicate archetype things amount = int_variable_field ## cardinality = 0..1 diff --git a/Config/shared_enums.cwt b/Config/shared_enums.cwt index 6e7405ea..d215c4d6 100644 --- a/Config/shared_enums.cwt +++ b/Config/shared_enums.cwt @@ -135,8 +135,9 @@ enums = { medium_plane_scout_plane_airframe large_plane_airframe large_plane_maritime_patrol_plane_airframe + } - # Millennium Dawn Unique Airframes + enum[md_unique_dupe_archetypes] = { # TODO: We need to create a system for validating the unique type of airframes. MD uses this in our plane designer where a sub category can be a different version i.e. small_plane_strike_airframe_1 small_plane_airframe_0 small_plane_airframe_1 From 2a944adff5aa900170ceb10425319ad0806567cc Mon Sep 17 00:00:00 2001 From: BiscuitCookies <25040791+BiscuitCookies@users.noreply.github.com> Date: Thu, 8 Feb 2024 22:51:50 +0100 Subject: [PATCH 35/72] various fixes and additions changed some unit_leader to operative scope where applicable Added character_token value for generate_character effect --- Config/common/ai_strategy.cwt | 11 +- Config/common/characters.cwt | 12 +- Config/common/map_modes.cwt | 8 +- .../military_industrial_organizations.cwt | 22 +- Config/common/scripted_guis.cwt | 139 +- Config/common/traits.cwt | 6 + Config/common/units.cwt | 3 + Config/effects.cwt | 28 +- Config/effects_aat.cwt | 17 +- Config/effects_bba.cwt | 17 +- Config/effects_new.cwt | 65 +- Config/effects_nsb.cwt | 65 +- Config/history/oobs.cwt | 12 +- Config/interface/gui.cwt | 48 +- Config/links.cwt | 2 +- Config/modifiers.cwt | 6 + Config/scopes.cwt | 3 + Config/script_documentation.json | 3578 +++++------------ Config/triggers.cwt | 12 +- Config/triggers_bba.cwt | 7 + Config/triggers_new.cwt | 14 +- Config/triggers_nsb.cwt | 13 + 22 files changed, 1420 insertions(+), 2668 deletions(-) diff --git a/Config/common/ai_strategy.cwt b/Config/common/ai_strategy.cwt index 141b89b0..b350e195 100644 --- a/Config/common/ai_strategy.cwt +++ b/Config/common/ai_strategy.cwt @@ -358,13 +358,20 @@ enums = { enum[ai_diplo_strats] = { alliance antagonize + avoid_starting_wars + asking_foreign_garrison befriend conquer consider_weak contain declare_war + diplo_action_acceptance + diplo_action_desire dont_defend_ally_borders + dont_join_wars_with + equipment_market_trade_desire force_defend_ally_borders + front_armor_score ignore ignore_claim influence @@ -375,9 +382,6 @@ enums = { send_lend_lease_desire send_volunteers_desire support - front_armor_score - equipment_market_trade_desire - avoid_starting_wars } enum[equipment_strats] = { equipment_variant_production_factor @@ -442,6 +446,7 @@ enums = { naval_convoy_raid_region naval_avoid_region strategic_air_importance + strike_force_home_base } enum[strat_region_strats_without_value] = { strike_force_home_base diff --git a/Config/common/characters.cwt b/Config/common/characters.cwt index 1fd8ecec..e81586a2 100644 --- a/Config/common/characters.cwt +++ b/Config/common/characters.cwt @@ -39,7 +39,7 @@ types = { ## cardinality = ~2..inf instance = { corps_commander = { - + } } } @@ -111,6 +111,10 @@ character = { name = localisation ## cardinality = 0..1 gender = female + ## cardinality = 0..1 + gender = male + ## cardinality = 0..1 + gender = undefined } subtype[country_leader] = { ## cardinality = 1..inf @@ -321,7 +325,7 @@ character = { instance = { ## replace_scope = { this = character root = country } allowed = { - alias_name[trigger] = alias_match_left[trigger] + alias_name[trigger] = alias_match_left[trigger] } name = localisation ### Should have at least one portrait defined @@ -339,6 +343,10 @@ character = { ## cardinality = 0..1 gender = female ## cardinality = 0..1 + gender = male + ## cardinality = 0..1 + gender = undefined + ## cardinality = 0..1 ## replace_scope = { this = character root = country } allowed_civil_war = { alias_name[trigger] = alias_match_left[trigger] diff --git a/Config/common/map_modes.cwt b/Config/common/map_modes.cwt index 3793b9a8..84fbfd71 100644 --- a/Config/common/map_modes.cwt +++ b/Config/common/map_modes.cwt @@ -22,11 +22,11 @@ types = { scripted_map_modes = { subtype[map_mode] = { top = { - type = + type = enum[map_mode_type] ### type represents which borders will be used for rendering for this layer or it can be represented with one of the harded coder map mode layers ## cardinality = 1..2 - type = + type = enum[map_mode_type] ### This section will be used for setting the color of as specific border. If trigger returns trigger then it will render that border. ## cardinality = 1..2 @@ -49,7 +49,7 @@ scripted_map_modes = { ### type represents which borders will be used for rendering for this layer or it can be represented with one of the harded coder map mode layers ## cardinality = 1..2 - type = + type = enum[map_mode_type] ### This section will be used for setting the color of as specific border. If trigger returns trigger then it will render that border. ## cardinality = 1..2 @@ -68,7 +68,7 @@ scripted_map_modes = { } ### if we want to show text on the map set this to one of the types available - far_text = + far_text = enum[far_text_type] ### If yes, the game wil update the map mode daily_update, otherwise force_update_map_mode effect can be used update_daily = bool diff --git a/Config/common/military_industrial_organizations.cwt b/Config/common/military_industrial_organizations.cwt index 70d74a8b..27825144 100644 --- a/Config/common/military_industrial_organizations.cwt +++ b/Config/common/military_industrial_organizations.cwt @@ -41,11 +41,17 @@ military_industrial_organization = { enum[equipment_bonus_type] ## cardinality = 0..inf + ## cardinality = 0..inf + } ## cardinality = 0..1 research_categories = { ## cardinality = ~1..inf enum[tech_category] + ## cardinality = 0..inf + + ## cardinality = 0..inf + } ## cardinality = 0..1 @@ -86,7 +92,7 @@ military_industrial_organization = { ### default is define DEFAULT_INITIAL_TASK_CAPACITY ## cardinality = 0..1 task_capacity = int - + ### Flavor texts are displayed above the trait tree. They are typically here to describe a column of traits - there is only room for 1 line! ### You can have several flavor texts - repeat the tree_flavor_text block. ### Use x to choose where to put the text on the horizontal axis. x should be the horizontal coordinate of the cell where the center of the text will be. @@ -120,6 +126,8 @@ military_industrial_organization = { enum[equipment_bonus_type] ## cardinality = 0..inf + ## cardinality = 0..inf + enum[tech_category] } ## cardinality = 0..1 equipment_bonus = { @@ -162,7 +170,7 @@ military_industrial_organization = { } ### The number of parents that needs to be unlocked, default 1 ## cardinality = 0..1 - num_parents_needed = int[1..inf] + num_parents_needed = int[1..inf] } ### Short hand for "parent = { traits = { parent traits } num_parents_needed = 1 }" ## cardinality = 0..inf @@ -206,6 +214,8 @@ military_industrial_organization = { enum[equipment_bonus_type] ## cardinality = 0..inf + ## cardinality = 0..inf + enum[tech_category] } ## cardinality = 0..1 equipment_bonus = { @@ -309,7 +319,7 @@ military_industrial_organization = { } ### The number of parents that needs to be unlocked, default 1 ## cardinality = 0..1 - num_parents_needed = int[1..inf] + num_parents_needed = int[1..inf] } ### Short hand for "parent = { traits = { parent traits } num_parents_needed = 1 }" ## cardinality = 0..inf @@ -353,6 +363,8 @@ military_industrial_organization = { enum[equipment_bonus_type] ## cardinality = 0..inf + ## cardinality = 0..inf + enum[tech_category] } ## cardinality = 0..1 equipment_bonus = { @@ -422,7 +434,7 @@ military_industrial_organization = { } ### The number of parents that needs to be unlocked, default 1 ## cardinality = 0..1 - num_parents_needed = int[1..inf] + num_parents_needed = int[1..inf] } ### Short hand for "parent = { traits = { parent traits } num_parents_needed = 1 }" ## cardinality = 0..inf @@ -466,6 +478,8 @@ military_industrial_organization = { enum[equipment_bonus_type] ## cardinality = 0..inf + ## cardinality = 0..inf + enum[tech_category] } ## cardinality = 0..1 equipment_bonus = { diff --git a/Config/common/scripted_guis.cwt b/Config/common/scripted_guis.cwt index 5bc038c4..fcd1abb5 100644 --- a/Config/common/scripted_guis.cwt +++ b/Config/common/scripted_guis.cwt @@ -14,6 +14,14 @@ types = { context_type = global_context } ## only_if_not = { any_context } + subtype[state_mapicon_context] = { + context_type = state_mapicon + } + ## only_if_not = { any_context } + subtype[country_mapicon_context] = { + context_type = country_mapicon + } + ## only_if_not = { any_context } subtype[state_context] = { context_type = selected_state_context } @@ -297,6 +305,100 @@ scripted_gui = { } } + subtype[country_mapicon_context] = { + ## cardinality = 0..1 + ## replace_scope = { root = country this = country } + visible = { + alias_name[trigger] = alias_match_left[trigger] + } + + ## cardinality = 0..1 + effects = { + ## cardinality = ~1..inf + ## replace_scope = { root = country this = country } + scalar = { + ## cardinality = ~1..inf + alias_name[effect] = alias_match_left[effect] + } + } + + ## cardinality = 0..1 + triggers = { + ## cardinality = ~1..inf + ## replace_scope = { root = country this = country } + scalar = { + ## cardinality = ~1..inf + alias_name[trigger] = alias_match_left[trigger] + } + } + + ## cardinality = 0..1 + mapicon_targets = { + ## cardinality = 0..1 + target_array = value[array] + ## cardinality = 0..1 + target_array = variable_field + } + ## cardinality = 0..inf + ### Limits AI to selected scopes. When used multiple times, will use all matching scopes. + ai_test_scopes = enum[ai_test_scope_state] + + ## cardinality = 0..1 + ## replace_scope = { root = country this = state } + ### AI makes a final check on each target scope:ai_check_scope. If this trigger is false, AI will ignore that scope. + ai_check_scope = { + ## cardinality = ~1..inf + alias_name[trigger] = alias_match_left[trigger] + } + } + + subtype[state_mapicon_context] = { + ## cardinality = 0..1 + ## replace_scope = { root = country this = state } + visible = { + alias_name[trigger] = alias_match_left[trigger] + } + + ## cardinality = 0..1 + effects = { + ## cardinality = ~1..inf + ## replace_scope = { root = country this = state } + scalar = { + ## cardinality = ~1..inf + alias_name[effect] = alias_match_left[effect] + } + } + + ## cardinality = 0..1 + triggers = { + ## cardinality = ~1..inf + ## replace_scope = { root = country this = state } + scalar = { + ## cardinality = ~1..inf + alias_name[trigger] = alias_match_left[trigger] + } + } + + ## cardinality = 0..1 + mapicon_targets = { + ## cardinality = 0..1 + target_array = value[array] + ## cardinality = 0..1 + target_array = variable_field + } + ## cardinality = 0..inf + ### Limits AI to selected scopes. When used multiple times, will use all matching scopes. + ai_test_scopes = enum[ai_test_scope_state] + + ## cardinality = 0..1 + ## replace_scope = { root = country this = state } + ### AI makes a final check on each target scope:ai_check_scope. If this trigger is false, AI will ignore that scope. + ai_check_scope = { + ## cardinality = ~1..inf + alias_name[trigger] = alias_match_left[trigger] + } + } + ## cardinality = 0..1 ## replace_scope = { root = country this = country } ### Ai_enabled entry is the best optimization you can set. While initialization AI, it will check every scripted GUI for every country and will test ai_enabled with its country scope. If ai_enabled is false, AI will ignore that scripted GUI forever. @@ -380,6 +482,36 @@ scripted_gui = { alias_name[modifier_rule] = alias_match_left[modifier_rule] } } + subtype[country_mapicon_context] = { + ## replace_scope = { root = country this = country } + ai_will_do = { + ## cardinality = 0..1 + enum[base_factor] = variable_field + alias_name[modifier_rule] = alias_match_left[modifier_rule] + } + ## cardinality = 0..1 + ## replace_scope = { root = country this = country } + ignore_lower_weights = { + ## cardinality = 0..1 + enum[base_factor] = variable_field + alias_name[modifier_rule] = alias_match_left[modifier_rule] + } + } + subtype[state_mapicon_context] = { + ## replace_scope = { root = country this = state } + ai_will_do = { + ## cardinality = 0..1 + enum[base_factor] = variable_field + alias_name[modifier_rule] = alias_match_left[modifier_rule] + } + ## cardinality = 0..1 + ## replace_scope = { root = country this = state } + ignore_lower_weights = { + ## cardinality = 0..1 + enum[base_factor] = variable_field + alias_name[modifier_rule] = alias_match_left[modifier_rule] + } + } } } } @@ -389,11 +521,12 @@ enums = { global_context player_context - decision_category - selected_state_context - selected_country_context + decision_category + diplomatic_action + country_mapicon + state_mapicon } enum[parent_window_token] = { diff --git a/Config/common/traits.cwt b/Config/common/traits.cwt index ef19028c..67d5faac 100644 --- a/Config/common/traits.cwt +++ b/Config/common/traits.cwt @@ -15,9 +15,15 @@ types = { subtype[naval_commander] = { type = navy } + subtype[naval_commander] = { + type = { navy } + } subtype[land_commander] = { type = land } + subtype[land_commander] = { + type = { land } + } subtype[land_naval_commander] = { type = { land navy } } diff --git a/Config/common/units.cwt b/Config/common/units.cwt index 7678f80d..db8e4fd8 100644 --- a/Config/common/units.cwt +++ b/Config/common/units.cwt @@ -6,6 +6,9 @@ types = { subtype[infantry] = { group = infantry } + subtype[infantry] = { + group = { infantry } + } subtype[armor] = { group = armor } diff --git a/Config/effects.cwt b/Config/effects.cwt index cfd5b6da..dc82b38a 100644 --- a/Config/effects.cwt +++ b/Config/effects.cwt @@ -611,17 +611,17 @@ alias[effect:division_template] = { division_cap = int regiments = { ## cardinality = 0..25 - = { x = int[0..4] y = int[0..3] } + = { x = int[0..4] y = int[0..4] } ## cardinality = 0..25 - = { x = int[0..4] y = int[0..3] } + = { x = int[0..4] y = int[0..4] } ## cardinality = 0..25 - = { x = int[0..4] y = int[0..3] } + = { x = int[0..4] y = int[0..4] } ## cardinality = 0..25 - = { x = int[0..4] y = int[0..3] } + = { x = int[0..4] y = int[0..4] } ## cardinality = 0..25 - = { x = int[0..4] y = int[0..3] } + = { x = int[0..4] y = int[0..4] } ## cardinality = 0..25 - = { x = int[0..4] y = int[0..3] } + = { x = int[0..4] y = int[0..4] } } ## cardinality = 0..1 support = { @@ -706,7 +706,7 @@ alias[effect:add_ideas] = enum[idea_name] ### Add idea(s) to country. ## scope = country alias[effect:add_ideas] = { - ## cardinality = 1..inf + ## cardinality = 0..inf enum[idea_name] ## cardinality = 0..inf value[advisor_token] @@ -718,7 +718,7 @@ alias[effect:remove_ideas] = enum[idea_name] ### Remove idea(s) from country. ## scope = country alias[effect:remove_ideas] = { - ## cardinality = 1..inf + ## cardinality = 0..inf enum[idea_name] ## cardinality = 0..inf value[advisor_token] @@ -1744,6 +1744,8 @@ alias[effect:show_ideas_tooltip] = value[advisor_token] ## scope = country alias[effect:show_unit_leaders_tooltip] = ## scope = country +alias[effect:show_unit_leaders_tooltip] = value[character_token] +## scope = country alias[effect:show_unit_leaders_tooltip] = value[variable] ## scope = country alias[effect:show_unit_leaders_tooltip] = value[event_target] @@ -2356,7 +2358,7 @@ alias[effect:retire] = bool ### Add command power to country. ## scope = country -alias[effect:add_command_power] = float +alias[effect:add_command_power] = variable_field ### Show what decision does. ## scope = country @@ -2785,7 +2787,7 @@ alias[effect:set_division_template_lock] = { ## scope = country alias[effect:set_division_template_cap] = { division_template = localisation_inline - division_cap = int + division_cap = int_variable_field } ### Remove cap for a division template. @@ -3029,6 +3031,10 @@ alias[effect:give_resource_rights] = { ## scope = country alias[effect:remove_resource_rights] = +### Remove resource right to state for scope country. remove_resource_rights = ID. +## scope = country +alias[effect:remove_resource_rights] = scope[state] + ### Copies over technology state from target. ## scope = country alias[effect:inherit_technology] = enum[country_tags] @@ -3499,7 +3505,7 @@ alias[effect:end_exile] = enum[country_tags] alias[effect:end_exile] = scope[country] ### Give supply to units being controlled by this leader. -## scope = unit_leader +## scope = { unit_leader combat character } alias[effect:supply_units] = int ### Sets the number of convoys. diff --git a/Config/effects_aat.cwt b/Config/effects_aat.cwt index 40631c96..e2af7bb3 100644 --- a/Config/effects_aat.cwt +++ b/Config/effects_aat.cwt @@ -57,6 +57,21 @@ alias[effect:unlock_military_industrial_organization_tooltip] = mio: +### Displays a tooltip that says that the policy is made available. +## scope = country +unlock_mio_policy_tooltip = +### Displays a tooltip that says that the policy is made available. +## scope = country +unlock_mio_policy_tooltip = { + policy = + ## error_if_only_match = This is the default value and can be omitted + ## severity = info + ## cardinality = 0..1 + show_modifiers = yes + ## cardinality = 0..1 + show_modifiers = no +} + ### Add CIC funds to the tag ## scope = country alias[effect:add_cic] = variable_field @@ -80,7 +95,7 @@ alias[effect:add_equipment_subsidy] = { enum[country_tags] ## cardinality = 0..inf scope[country] - } + } } ### Change MIO name diff --git a/Config/effects_bba.cwt b/Config/effects_bba.cwt index b125fdea..69566984 100644 --- a/Config/effects_bba.cwt +++ b/Config/effects_bba.cwt @@ -73,9 +73,10 @@ alias[effect:remove_all_power_balance_modifiers] = { id = } -## scope = character +## scope = unit alias[effect:add_random_valid_trait_from_unit] = { character = + character = value_set[character_token] character = value[variable] character = value[event_target] character = value[global_event_target] @@ -86,6 +87,8 @@ alias[effect:set_can_be_fired_in_advisor_role] = { ## cardinality = 0..1 character = ## cardinality = 0..1 + character = value_set[character_token] + ## cardinality = 0..1 character = value[variable] ## cardinality = 0..1 character = value[event_target] @@ -132,18 +135,6 @@ alias[effect:every_state_division] = { alias_name[effect] = alias_match_left[effect] } -## scope = state -## push_scope = unit -alias[effect:any_state_division] = { - ## cardinality = 0..1 - limit = { - alias_name[trigger] = alias_match_left[trigger] - } - ## cardinality = 0..1 - tooltip = localisation - alias_name[effect] = alias_match_left[effect] -} - ### Change divisions in scope to selected template ## scope = unit alias[effect:change_division_template] = { diff --git a/Config/effects_new.cwt b/Config/effects_new.cwt index 5f3caa9f..ba1f7c1c 100644 --- a/Config/effects_new.cwt +++ b/Config/effects_new.cwt @@ -51,11 +51,11 @@ alias[effect:delete_unit] = { } ###Free an operative. Can be used from a scope and a target that is either a country or a unit leader. -## scopes = { UNIT_LEADER } +## scopes = { operative } alias[effect:free_operative] = enum[country_tags] ###Free an operative. Can be used from a scope and a target that is either a country or a unit leader. -## scopes = { UNIT_LEADER } +## scopes = { operative } alias[effect:free_operative] = scope[country] ###Free an operative. Can be used from a scope and a target that is either a country or a unit leader. @@ -66,6 +66,17 @@ alias[effect:free_operative] = value[unit_leader_ids] ## scopes = { COUNTRY } alias[effect:free_operative] = scope[unit_leader] +###Free an operative. Can be used from a scope and a target that is either a country or a unit leader. +## scopes = { operative } +alias[effect:free_operative] = { + captured_by = enum[country_tags] +} +###Free an operative. Can be used from a scope and a target that is either a country or a unit leader. +## scopes = { operative } +alias[effect:free_operative] = { + captured_by = scope[country] +} + ###Free a random captured operative of a certain tag by a certain tag. Can be used from a country scope of the operative in question.`all` is optional, default value is no - if set to yes it will free all operatives captured by the target country. ## scopes = { COUNTRY } alias[effect:free_random_operative] = { @@ -120,26 +131,28 @@ alias[effect:create_operative_leader] = { ###Capture an operative. Can be used from a scope and a target that is either a country or a unit leader. ## scopes = { COUNTRY } -alias[effect:capture_operative] = scope[unit_leader] +alias[effect:capture_operative] = scope[operative] ###Capture an operative. Can be used from a scope and a target that is either a country or a unit leader. ## scopes = { COUNTRY } alias[effect:capture_operative] = { - operative = scope[unit_leader] + operative = scope[operative] ## cardinality = 0..1 ignore_death_chance = bool } ###Capture an operative. Can be used from a scope and a target that is either a country or a unit leader. -## scopes = { UNIT_LEADER } +## scopes = { operative } alias[effect:capture_operative] = { captured_by = scope[country] captured_by = enum[country_tags] + ## cardinality = 0..1 + ignore_death_chance = bool } ###Executes children effects on a random operatives that fulfils the "limit" trigger. ## scopes = { COUNTRY OPERATION } -## push_scope = unit_leader +## push_scope = operative alias[effect:random_operative] = { ## cardinality = 0..1 limit = { @@ -151,7 +164,7 @@ alias[effect:random_operative] = { ###Executes children effects on operatives that fulfils the "limit" trigger. tooltip=key can be added to override tooltip title ## scopes = { COUNTRY OPERATION } -## push_scope = unit_leader +## push_scope = operative alias[effect:every_operative] = { ### Apply the effect to this number of randomly selected entities ## cardinality = 0..1 @@ -304,7 +317,7 @@ alias[effect:steal_random_tech_bonus] = { ## scopes = { STATE } alias[effect:teleport_armies] = { ## cardinality = 0..1 - ## push_scope = country + ## replace_scope = { this = country } limit = { alias_name[trigger] = alias_match_left[trigger] } @@ -316,10 +329,11 @@ alias[effect:teleport_armies] = { ## scopes = { STATE } alias[effect:teleport_armies] = { ## cardinality = 0..1 - ## push_scope = country + ## replace_scope = { this = country } limit = { alias_name[trigger] = alias_match_left[trigger] } + ## cardinality = ~1..1 to_state_array = value_set[array] } @@ -327,10 +341,11 @@ alias[effect:teleport_armies] = { ## scopes = { STATE } alias[effect:teleport_armies] = { ## cardinality = 0..1 - ## push_scope = country + ## replace_scope = { this = country } limit = { alias_name[trigger] = alias_match_left[trigger] } + ## cardinality = ~1..1 to_province = enum[provinces] } @@ -338,7 +353,7 @@ alias[effect:teleport_armies] = { ## scopes = { STATE } alias[effect:teleport_armies] = { ## cardinality = 0..1 - ## push_scope = country + ## replace_scope = { this = country } limit = { alias_name[trigger] = alias_match_left[trigger] } @@ -765,12 +780,12 @@ alias[effect:randomize_variable] = { } ###Harm an operative. The specified value is subject to modifiers. -## scopes = { UNIT_LEADER } +## scopes = { operative } alias[effect:harm_operative_leader] = variable_field ###Force an operative into hiding, preventing them from performing mission. The specified values is subject to modifiers. -## scopes = { UNIT_LEADER } -alias[effect:force_operative_leader_into_hiding] = variable_field +## scopes = { operative } +alias[effect:force_operative_leader_into_hiding] = bool ###Add the specified amount of intel over a specified country. ## scopes = { COUNTRY } @@ -788,7 +803,7 @@ alias[effect:add_intel] = { } ###Fires a operative leader event for owner country. -## scopes = { UNIT_LEADER } +## scopes = { operative } alias[effect:operative_leader_event] = { ### The event to fire. id = @@ -868,16 +883,16 @@ alias[effect:operative_leader_event] = { ###Kills an operative. This will temporarily lock the slot they occupy. ## scopes = { COUNTRY } -alias[effect:kill_operative] = scope[unit_leader] +alias[effect:kill_operative] = scope[operativwr] ###Kills an operative. This will temporarily lock the slot they occupy. ## scopes = { COUNTRY } alias[effect:kill_operative] = { - operative = scope[unit_leader] + operative = scope[operative] } ###Kills an operative. This will temporarily lock the slot they occupy. -## scopes = { UNIT_LEADER } +## scopes = { operative } alias[effect:kill_operative] = { killed_by = scope[country] killed_by = enum[country_tags] @@ -961,11 +976,11 @@ alias[effect:execute_operation_coordinated_strike] = { } ###Add the specified nationality to the scoped-in operative. -## scopes = { UNIT_LEADER } +## scopes = { operative } alias[effect:add_nationality] = scope[country] ###Add the specified nationality to the scoped-in operative. -## scopes = { UNIT_LEADER } +## scopes = { operative } alias[effect:add_nationality] = enum[country_tags] ###The scoped in country recall the volunteers sent to the target country. @@ -978,16 +993,16 @@ alias[effect:recall_volunteers_from] = enum[country_tags] ###An operative is turned by the specified country. This transfers the operative to the target country and make it appear as killed to the country of origin (increases the death counter and lock the slot). This fires the on_action on_operative_death with as killer the target country. If the target country is the owner of the operative, this has no effect and an error is logged. WARN: the on_action might execute immediately, before any effect listed after the occurrence of turn_operative. ## scopes = { COUNTRY } -alias[effect:turn_operative] = scope[unit_leader] +alias[effect:turn_operative] = scope[operative] ###An operative is turned by the specified country. This transfers the operative to the target country and make it appear as killed to the country of origin (increases the death counter and lock the slot). This fires the on_action on_operative_death with as killer the target country. If the target country is the owner of the operative, this has no effect and an error is logged. WARN: the on_action might execute immediately, before any effect listed after the occurrence of turn_operative. ## scopes = { COUNTRY } alias[effect:turn_operative] = { - operative = scope[unit_leader] + operative = scope[operative] } ###An operative is turned by the specified country. This transfers the operative to the target country and make it appear as killed to the country of origin (increases the death counter and lock the slot). This fires the on_action on_operative_death with as killer the target country. If the target country is the owner of the operative, this has no effect and an error is logged. WARN: the on_action might execute immediately, before any effect listed after the occurrence of turn_operative. -## scopes = { UNIT_LEADER } +## scopes = { operative } alias[effect:turn_operative] = { turned_by = scope[country] turned_by = enum[country_tags] @@ -1130,6 +1145,10 @@ alias[effect:start_peace_conference] = { ## scopes = { country } alias[effect:set_occupation_law_where_available] = +### Sets specific occupation law where available +## scopes = { state } +alias[effect:set_occupation_law] = + ###Randomize a temporary variable. ## scopes = { any } alias[effect:randomize_temp_variable] = variable_field diff --git a/Config/effects_nsb.cwt b/Config/effects_nsb.cwt index 0644336e..a2e3568f 100644 --- a/Config/effects_nsb.cwt +++ b/Config/effects_nsb.cwt @@ -115,6 +115,9 @@ alias[effect:add_corps_commander_role] = { character = ### required in country scope, optional in character scope ## cardinality = 0..1 + character = value_set[character_token] + ### required in country scope, optional in character scope + ## cardinality = 0..1 character = value[variable] ### required in country scope, optional in character scope ## cardinality = 0..1 @@ -164,6 +167,7 @@ alias[effect:remove_unit_leader_role] = bool ### Remove unit leader role to character ## scope = { country } alias[effect:remove_unit_leader_role] = +alias[effect:remove_unit_leader_role] = value[character_token] ### Remove unit leader role to character ## scope = { country } @@ -185,6 +189,7 @@ alias[effect:remove_unit_leader_role] = scope[character] ## scope = { country } alias[effect:remove_unit_leader_role] = { character = + character = value_set[character_token] character = value[variable] character = value[event_target] character = value[global_event_target] @@ -198,6 +203,9 @@ alias[effect:add_field_marshal_role] = { character = ### required in country scope, optional in character scope ## cardinality = 0..1 + character = value_set[character_token] + ### required in country scope, optional in character scope + ## cardinality = 0..1 character = value[variable] ### required in country scope, optional in character scope ## cardinality = 0..1 @@ -223,6 +231,7 @@ alias[effect:add_field_marshal_role] = { ## cardinality = 0..1 legacy_id = value_set[unit_leader_ids] ## cardinality = 0..1 + ## replace_scope = { this = character root = country } visible = { alias_name[trigger] = alias_match_left[trigger] } @@ -235,6 +244,9 @@ alias[effect:add_naval_commander_role] = { character = ### required in country scope, optional in character scope ## cardinality = 0..1 + character = value_set[character_token] + ### required in country scope, optional in character scope + ## cardinality = 0..1 character = value[variable] ### required in country scope, optional in character scope ## cardinality = 0..1 @@ -272,6 +284,9 @@ alias[effect:add_country_leader_role] = { character = ### required in country scope, optional in character scope ## cardinality = 0..1 + character = value_set[character_token] + ### required in country scope, optional in character scope + ## cardinality = 0..1 character = value[variable] ### required in country scope, optional in character scope ## cardinality = 0..1 @@ -308,6 +323,9 @@ alias[effect:remove_country_leader_role] = { character = ### required in country scope, optional in character scope ## cardinality = 0..1 + character = value_set[character_token] + ### required in country scope, optional in character scope + ## cardinality = 0..1 character = value[variable] ### required in country scope, optional in character scope ## cardinality = 0..1 @@ -330,6 +348,9 @@ alias[effect:add_advisor_role] = { character = ### required in country scope, optional in character scope ## cardinality = 0..1 + character = value_set[character_token] + ### required in country scope, optional in character scope + ## cardinality = 0..1 character = value[variable] ### required in country scope, optional in character scope ## cardinality = 0..1 @@ -375,6 +396,11 @@ alias[effect:add_advisor_role] = { } ## cardinality = 0..1 + research_bonus = { + ## cardinality = 1..inf + enum[tech_category] = float + } + ## cardinality = 0..1 ledger = enum[ledgers] ### overrides default cost of advisor ## cardinality = 0..1 @@ -422,6 +448,9 @@ alias[effect:remove_advisor_role] = { character = ### required in country scope, optional in character scope ## cardinality = 0..1 + character = value_set[character_token] + ### required in country scope, optional in character scope + ## cardinality = 0..1 character = value[variable] ### required in country scope, optional in character scope ## cardinality = 0..1 @@ -436,8 +465,11 @@ alias[effect:remove_advisor_role] = { } ### removes character from all roles and availability -## scope = { any } +## scope = { country } alias[effect:retire_character] = +### removes character from all roles and availability +## scope = { country } +alias[effect:retire_character] = value[character_token] ### removes character from all roles and availability ## scope = { any } @@ -464,6 +496,8 @@ alias[effect:set_character_name] = { ## cardinality = 0..1 character = ## cardinality = 0..1 + character = value[character_token] + ## cardinality = 0..1 character = value[variable] ## cardinality = 0..1 character = value[event_target] @@ -479,8 +513,12 @@ alias[effect:set_character_name] = { alias[effect:promote_character] = ### makes character head of their ideology party ## scope = { country } +alias[effect:promote_character] = value[character_token] +### makes character head of their ideology party +## scope = { country } alias[effect:promote_character] = { character = + character = value[character_token] ### must match the character's country leader sub-ideology ideology = enum[sub_ideology] ideology = @@ -545,6 +583,8 @@ alias[effect:add_trait] = { ## cardinality = 0..1 character = ## cardinality = 0..1 + character = value[character_token] + ## cardinality = 0..1 character = value[variable] ## cardinality = 0..1 character = value[event_target] @@ -560,6 +600,8 @@ alias[effect:add_trait] = { ## cardinality = 0..1 character = ## cardinality = 0..1 + character = value[character_token] + ## cardinality = 0..1 character = scope[character] ## cardinality = 0..1 character = value[variable] @@ -582,6 +624,8 @@ alias[effect:remove_trait] = { ## cardinality = 0..1 character = ## cardinality = 0..1 + character = value[character_token] + ## cardinality = 0..1 character = scope[character] ## cardinality = 0..1 character = value[variable] @@ -590,7 +634,7 @@ alias[effect:remove_trait] = { ## cardinality = 0..1 character = value[global_event_target] ## cardinality = 0..1 - character = scope[character] + character = scope[character] trait = trait = ## cardinality = 0..1 @@ -605,6 +649,7 @@ alias[effect:set_nationality] = { target_country = scope[country] target_country = enum[country_tags] character = + character = value[character_token] character = value[variable] character = value[event_target] character = value[global_event_target] @@ -690,6 +735,8 @@ alias[effect:set_portraits] = { ## cardinality = 0..1 character = ## cardinality = 0..1 + character = value[character_token] + ## cardinality = 0..1 character = value[variable] ## cardinality = 0..1 character = value[event_target] @@ -748,6 +795,7 @@ alias[effect:damage_units] = { ## cardinality = 0..1 region = ## cardinality = 0..1 + ## replace_scope = { this = country } limit = { alias_name[trigger] = alias_match_left[trigger] } @@ -775,7 +823,7 @@ alias[effect:damage_units] = { ## scope = { country } alias[effect:force_update_map_mode] = { ## cardinality = ~1..2 - mapmode = + mapmode = enum[scripted_map_modes] } ### Create railway gun effect @@ -786,13 +834,13 @@ alias[effect:create_railway_gun] = { name = localisation_inline ### optional, created in capital otherwise ## cardinality = 0..1 - location = enum[provinces] + location = enum[provinces] } ### Generate character ## scopes = { country } alias[effect:generate_character] = { - token_base = value_set[advisor_token] + token_base = value_set[character_token] ## cardinality = 0..1 name = localisation ## cardinality = 0..1 @@ -803,7 +851,7 @@ alias[effect:generate_character] = { ## cardinality = 0..1 desc = localisation ## cardinality = 0..1 - idea_token = value_set[variable] + idea_token = value_set[advisor_token] ## replace_scope = { this = character root = country } ## cardinality = 0..1 allowed = { @@ -829,6 +877,11 @@ alias[effect:generate_character] = { } ## cardinality = 0..1 + research_bonus = { + ## cardinality = 1..inf + enum[tech_category] = float + } + ## cardinality = 0..1 ledger = enum[ledgers] ### overrides default cost of advisor ## cardinality = 0..1 diff --git a/Config/history/oobs.cwt b/Config/history/oobs.cwt index 3d2928a6..6e8ec582 100644 --- a/Config/history/oobs.cwt +++ b/Config/history/oobs.cwt @@ -34,17 +34,17 @@ oob = { division_cap = int regiments = { ## cardinality = 0..25 - = { x = int[0..4] y = int[0..3] } + = { x = int[0..4] y = int[0..4] } ## cardinality = 0..25 - = { x = int[0..4] y = int[0..3] } + = { x = int[0..4] y = int[0..4] } ## cardinality = 0..25 - = { x = int[0..4] y = int[0..3] } + = { x = int[0..4] y = int[0..4] } ## cardinality = 0..25 - = { x = int[0..4] y = int[0..3] } + = { x = int[0..4] y = int[0..4] } ## cardinality = 0..25 - = { x = int[0..4] y = int[0..3] } + = { x = int[0..4] y = int[0..4] } ## cardinality = 0..25 - = { x = int[0..4] y = int[0..3] } + = { x = int[0..4] y = int[0..4] } } ## cardinality = 0..1 support = { diff --git a/Config/interface/gui.cwt b/Config/interface/gui.cwt index accb1860..1b96281f 100644 --- a/Config/interface/gui.cwt +++ b/Config/interface/gui.cwt @@ -389,10 +389,10 @@ alias[gui:positionType] = { ## cardinality = ~1..1 name = scalar position = { - x = int - x = float - y = int - y = float + x = int[-3840..3840] + x = float[-3840..3840] + y = int[-2160..2160] + y = float[-2160..2160] } ## cardinality = 0..1 scale = float @@ -566,10 +566,10 @@ alias[gui:extendedScrollbarType] = { name = scalar alias_name[gui_image] = alias_match_left[gui_image] position = { - x = int - x = float - y = int - y = float + x = int[-3840..3840] + x = float[-3840..3840] + y = int[-2160..2160] + y = float[-2160..2160] } alias_name[gui_localization] = alias_match_left[gui_localization] } @@ -579,10 +579,10 @@ alias[gui:extendedScrollbarType] = { name = scalar alias_name[gui_image] = alias_match_left[gui_image] position = { - x = int - x = float - y = int - y = float + x = int[-3840..3840] + x = float[-3840..3840] + y = int[-2160..2160] + y = float[-2160..2160] } alias_name[gui_localization] = alias_match_left[gui_localization] } @@ -593,10 +593,10 @@ alias[gui:extendedScrollbarType] = { alias_name[gui_image] = alias_match_left[gui_image] alias_name[gui_sound] = alias_match_left[gui_sound] position = { - x = int - x = float - y = int - y = float + x = int[-3840..3840] + x = float[-3840..3840] + y = int[-2160..2160] + y = float[-2160..2160] } alias_name[gui_localization] = alias_match_left[gui_localization] } @@ -607,10 +607,10 @@ alias[gui:extendedScrollbarType] = { alias_name[gui_image] = alias_match_left[gui_image] alias_name[gui_sound] = alias_match_left[gui_sound] position = { - x = int - x = float - y = int - y = float + x = int[-3840..3840] + x = float[-3840..3840] + y = int[-2160..2160] + y = float[-2160..2160] } alias_name[gui_localization] = alias_match_left[gui_localization] } @@ -620,10 +620,10 @@ alias[gui:extendedScrollbarType] = { name = scalar alias_name[gui_image] = alias_match_left[gui_image] position = { - x = int - x = float - y = int - y = float + x = int[-3840..3840] + x = float[-3840..3840] + y = int[-2160..2160] + y = float[-2160..2160] } alias_name[gui_localization] = alias_match_left[gui_localization] } diff --git a/Config/links.cwt b/Config/links.cwt index 5fe2b26d..389c4259 100644 --- a/Config/links.cwt +++ b/Config/links.cwt @@ -19,7 +19,7 @@ links = { # Custom data links #### owner = { output_scope = country - input_scopes = { unit_leader combat state country unit military_industrial_organization } + input_scopes = { unit_leader operative character combat state country unit military_industrial_organization } } controller = { diff --git a/Config/modifiers.cwt b/Config/modifiers.cwt index 4cb51d2c..32b6b74f 100644 --- a/Config/modifiers.cwt +++ b/Config/modifiers.cwt @@ -338,6 +338,7 @@ modifiers = { enemy_operative_harmed_time_factor = country enemy_operative_intel_extraction_rate = country enemy_spy_negative_status_factor = country + embargo_threshold_factor = country equipment_capture = country equipment_capture_factor = country equipment_conversion_speed = country @@ -493,6 +494,7 @@ modifiers = { weekly_bombing_war_support = country air_spirit_category_type_cost_factor = country land_spirit_category_type_cost_factor = country + army_spirit_category_type_cost_factor = country navy_spirit_category_type_cost_factor = country # defensive @@ -695,6 +697,7 @@ modifiers = { drift_defence_factor = politics guarantee_cost = politics master_ideology_drift = politics + power_balance_weekly = politics # state army_speed_factor_for_controller = state @@ -743,6 +746,9 @@ modifiers = { resistance_target_on_our_occupied_states = state starting_compliance = state state_production_speed_buildings_factor = state + state_repair_speed_air_base_factor = state + state_repair_speed_arms_factory_factor = state + state_repair_speed_industrial_complex_factor = state state_repair_speed_infrastructure_factor = state state_resources_factor = state supply_factor = state diff --git a/Config/scopes.cwt b/Config/scopes.cwt index 8edcdcef..1b6e8e29 100644 --- a/Config/scopes.cwt +++ b/Config/scopes.cwt @@ -88,6 +88,9 @@ scopes = { "Unit Leader" = { aliases = { unit_leader unitleader } } + Operative = { + aliases = { operative } + } Combat = { aliases = { combat } } diff --git a/Config/script_documentation.json b/Config/script_documentation.json index 3908cf84..86482a70 100644 --- a/Config/script_documentation.json +++ b/Config/script_documentation.json @@ -23,7 +23,7 @@ "set_capital": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "move capital to state" + "description": "move capital to state\nExample:\nset_capital = {\n\tstate = 1234\n\tremember_old_capital = no #default = yes\n}" }, "add_state_core": { "supported_scope": ["COUNTRY"], @@ -170,15 +170,35 @@ "supported_target": ["any"], "description": "Add opinion modifier(s) to target(s)" }, + "teleport_railway_guns_to_deploy_province": { + "supported_scope": ["COUNTRY"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "Teleport the target country's railway guns to the province to which railway guns are deployed." + }, "remove_opinion_modifier": { "supported_scope": ["COUNTRY"], "supported_target": ["any"], "description": "Remove opinion modifier from target" }, + "create_railway_gun": { + "supported_scope": ["any"], + "supported_target": ["none"], + "description": "Create railway gun effect, just like in OOB, example:\ncreate_railway_gun = {\n\tequipment = railway_gun_equipment_1\n\tname = \"Created Railway Gun\" #optional\n\tlocation = 12406 #optional, created in capital otherwise\n}" + }, "create_country_leader": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "creates a leader and adds it to proper party in country\n\nExample:\ncreate_country_leader = {\n\tname = \"Leader Name\"\n\tdesc = \"LEADER_DESC_LOCALIZATION_TAG\"\n\tpicture = \"Portrait_leader_name.dds\" # picture = \"....\" also supported for backwards compatibility\n\texpire = \"1965.1.1\"\n\tideology = despotism\n\ttraits = {\n\t\tthe_director\n\t}\n}" + "description": "creates a leader and adds it to proper party in country\nif a character with the same token, or the same name already exists, then just add the country leader role.\n\nExample:\ncreate_country_leader = {\n\tname = \"Leader Name\"\n\tname = XXX_leader_name # optional, faster to find an already existing character\n\tdesc = \"LEADER_DESC_LOCALIZATION_TAG\"\n\tpicture = \"Portrait_leader_name.dds\" # picture = \"....\" also supported for backwards compatibility\n\texpire = \"1965.1.1\"\n\tideology = despotism\n\ttraits = {\n\t\tthe_director\n\t}\n}" + }, + "random_subject_country": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "Executes child effects on random subject country that fulfills the limit." + }, + "every_subject_country": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "Executes children effects on every subject country that fulfills the \"limit\" trigger. tooltip=key can be defined to override tooltip title" }, "log": { "supported_scope": ["any"], @@ -190,13 +210,33 @@ "supported_target": ["none"], "description": "Create unit effect, just like in OOB, example: \ncreate_unit = { \n\t# unit detauls \n\tdivision = \"name = \\\"1. Northern Redemption Army\\\" division_template = \\\"Redemption Army\\\" start_experience_factor = 0.5\" \n\t# country to spawn unit for \n\towner = MAN \n\t \n\t \n\t# a prov id can be specified \n\tprioritize_location = 12406 \n\t \n\t# can be set to yes to be able to spawn units on enemy provs. \n\tallow_spawning_on_enemy_provs = no \n\t# province controllers can be scored using this scorer. otherwise it will prio your owned provs first, friendly provs second. \n\t# it will also prio provs with scores and less units firstl \n\tcountry_score = { \n\t\tbase = 100 \n\t\t \n\t\tmodifier = { \n\t\t\ttag = MAN \n\t\t\tadd = 100 \n\t\t} \n\t} \n count = 1 # can be specified to spawn more than one units \n id = 42 # an id can be given to delete units later on}" }, + "activate_advisor": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "Place an advisor in their respective role slot\n\nExample:\nactivate_advisor = GER_character_token_air_chief\n" + }, + "deactivate_advisor": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "Dismiss an advisor from their currently occupied role slot\n\nExample:\ndeactivate_advisor = GER_character_token_air_chief\n" + }, "sound_effect": { "supported_scope": ["any"], "supported_target": ["none"], "description": "Plays sound effect" }, + "add_trait": { + "supported_scope": ["COUNTRY", "CHARACTER"], + "supported_target": ["none"], + "description": "add trait from specified list to character.\nadd_trait = {\n\tcharacter = GER_character_token # optional if inside character scope\n\ttrait = brilliant_strategist\n\tslot = political_advisor #Only required for updating advisor\n\tideology = fascism_ideology #Only required for updating country leader\n}" + }, + "remove_trait": { + "supported_scope": ["COUNTRY", "CHARACTER"], + "supported_target": ["none"], + "description": "remove trait from specified list to character.\nremove_trait = {\n\tcharacter = GER_character_token # optional if inside character scope\n\ttrait = brilliant_strategist\n\tslot = political_advisor #Only required for updating advisor\n\tideology = fascism_ideology #Only required for updating country leader\n}" + }, "promote_leader": { - "supported_scope": ["UNIT_LEADER"], + "supported_scope": ["CHARACTER"], "supported_target": ["none"], "description": "promotes general to field marshal" }, @@ -216,14 +256,14 @@ "description": "change the ideology of active leader" }, "add_country_leader_trait": { - "supported_scope": ["COUNTRY"], + "supported_scope": ["COUNTRY", "CHARACTER"], "supported_target": ["none"], - "description": "add trait to active country leader" + "description": "Add country leader trait to the scoped character or scoped country's leader.\nIn scoped character, will need to give the ideology if the character has several country leader roles.\nExample 1: SOV_joseph_stalin = { add_country_leader_trait = underage_monarch }\nExample 2: HUN_mikl�s_horthy = { add_country_leader_trait = { ideology = oligarchism trait = anti_communist } }\nExample 3: SOV = { add_country_leader_trait = underage_monarch }" }, "remove_country_leader_trait": { - "supported_scope": ["COUNTRY"], + "supported_scope": ["COUNTRY", "CHARACTER"], "supported_target": ["none"], - "description": "remove trait from active country leader" + "description": "Remove country leader trait from the scoped character or scoped country's leader.\nIn scoped character, will need to give the ideology if the character has several country leader roles.\nExample 1: SOV_joseph_stalin = { remove_country_leader_trait = underage_monarch }\nExample 2: HUN_mikl�s_horthy = { remove_country_leader_trait = { ideology = oligarchism trait = anti_communist } }\nExample 3: SOV = { remove_country_leader_trait = underage_monarch }" }, "set_political_party": { "supported_scope": ["COUNTRY"], @@ -233,7 +273,7 @@ "set_politics": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "set country political status" + "description": "set_politics: \nruling_party = key of new ruling ideology\nelections_allowed = yes/no\noptional (renames the ruling party and displays correct loc):\nlong_name = loc_key\nname = loc_key" }, "add_ideas": { "supported_scope": ["COUNTRY"], @@ -261,7 +301,7 @@ "description": "sets technology level(s) on country. example : set_technology = { \n\tinfantry_weapons = 1 \n\tinfantry_weapons1 = 1 \n\tinfantry_weapons2 = 1 \n\timproved_infantry_weapons = 1 \n\tpopup = no # default is yes. if set to no, no pop up will display for player \n}" }, "gain_xp": { - "supported_scope": ["UNIT_LEADER"], + "supported_scope": ["CHARACTER"], "supported_target": ["any"], "description": "Grant experience to the scoped in unit leader. Cannot be used to remove experience.\nThe unit leader is promoted to the next skill level if applicable.\nExample:\ngain_xp = 5\n" }, @@ -271,19 +311,14 @@ "description": "create navy leader for country" }, "remove_unit_leader_trait": { - "supported_scope": ["UNIT_LEADER", "CHARACTER"], + "supported_scope": ["CHARACTER"], "supported_target": ["none"], - "description": "remove trait from unit leader" + "description": "Remove trait from unit leader\nExample: SOV_konstantin_rokossovsky = { remove_unit_leader_trait = media_personality }" }, "add_unit_leader_trait": { - "supported_scope": ["UNIT_LEADER"], + "supported_scope": ["CHARACTER"], "supported_target": ["none"], - "description": "add trait to unit leader" - }, - "add_namespace": { - "supported_scope": ["any"], - "supported_target": ["none"], - "description": "adds new namespace" + "description": "Add trait to unit leader.\nExample: SOV_konstantin_rokossovsky = { add_unit_leader_trait = media_personality }" }, "set_state_owner": { "supported_scope": ["COUNTRY"], @@ -428,7 +463,7 @@ "start_civil_war": { "supported_scope": ["COUNTRY"], "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], - "description": "Given ideology starts a civil war in the country.\nstart_civil_war = {\n\tideology = revolting ideology\n\truling party = ruling party for country\n\tsize = 0-1 Size modifier of the revolt. Affects stockpile, army, air and navy as well\n\tarmy_ratio = 0-1 Overrides size modifier for army\n\tnavy_ratio = 0-1 Overrides size modifier for navy\n\tair_ratio = 0-1 Overrides size modifier for air\n\tkeep_unit_leaders specify ID of unit leaders that remain with the original country\n\tkeep_unit_leaders_trigger Trigger for unit leaders to remain with the original country\n\tstates States that go to the revolter. Use \"all\" to include all states.\n\tstates_filter States that go to the revolter. Filtering trigger on the states scripted to go to the revolter.\n\t ... effect list ... # you can list effects that will run on civil war country\n}" + "description": "Given ideology starts a civil war in the country.\nstart_civil_war = {\n\tideology = revolting ideology\n\truling_party = ruling party for country\n\tsize = 0-1 Size modifier of the revolt. Affects stockpile, army, air and navy as well\n\tarmy_ratio = 0-1 Overrides size modifier for army\n\tnavy_ratio = 0-1 Overrides size modifier for navy\n\tair_ratio = 0-1 Overrides size modifier for air\n\tkeep_unit_leaders specify ID of unit leaders that remain with the original country\n\tkeep_unit_leaders_trigger Trigger for unit leaders to remain with the original country\n\tstates States that go to the revolter. Use \"all\" to include all states.\n\tstates_filter States that go to the revolter. Filtering trigger on the states scripted to go to the revolter.\n\tkeep_political_leader = yes/no # optional, default is no; If yes, the party leader of the revolting ideology will not join the revolter as its leader.\n\tkeep_political_party_members = yes/no # optional, default is no; If yes, it will keep the non main leaders of the party leaders in original country\n\t ... effect list ... # you can list effects that will run on civil war country\n}" }, "retire_country_leader": { "supported_scope": ["COUNTRY"], @@ -553,7 +588,7 @@ "set_rule": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "Adds rule to country" + "description": "Adds rule to country. This one overrides all other rules on country \nset_rule = { \n desc = desc_key # a description can be given to rule (you can get original tooltip using DESC key) \n can_not_declare_war = yes \n}" }, "diplomatic_relation": { "supported_scope": ["COUNTRY"], @@ -571,7 +606,7 @@ "description": "Adds/removes resource production to state\n\nExample:\nadd_resource = {\n type = steel #resource type to add/destroy amount = 5 #amount to add\n state = 42 #can be also read from scope\n days = 60 #a resource can be added/removed temporarily}\n" }, "remove_unit_leader": { - "supported_scope": ["COUNTRY", "UNIT_LEADER"], + "supported_scope": ["COUNTRY", "CHARACTER"], "supported_target": ["none"], "description": "remove a unit leader ( remove_unit_leader=ID )" }, @@ -638,7 +673,7 @@ "complete_national_focus": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "unlocks a focus for a country" + "description": "completes a focus for a country" }, "set_party_name": { "supported_scope": ["COUNTRY"], @@ -668,7 +703,7 @@ "create_equipment_variant": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "Creates a new equipment variant.\nExample:\ncreate_equipment_variant = {\n\tname = \"Yorktown Class\"\n\ttype = ship_hull_carrier_2\n\tparent_version = 1 #default = 0\n\tobsolete = yes #default = no\n\tname_group = ship_name_group_name #default = empty/none\n\trole_icon_index = 3 #default just inherits from parent or remains unset\n\trole_icon_index = 0 #alternative, explicitly unset\n\trole_icon_index = auto #uses AI design logic to pick\n\tupgrades = { #optional, inherits from parent\n\t\tship_deckspace_upgrade = 1\n\t\tcarrier_armor_upgrade = 2\n\t}\n\tmodules = { #optional, inherits from parent\n\t\tfixed_ship_deck_slot_1 = ship_deck_space\n\t\tfront_1_custom_slot = ship_armor_carrier_deck\n\t\tfixed_ship_deck_slot_2 = empty #overrides parent\n\t}\n}" + "description": "Creates a new equipment variant.\nExample:\ncreate_equipment_variant = {\n\tname = \"Yorktown Class\"\n\ttype = ship_hull_carrier_2\n\tparent_version = 1 #default = 0\n\tobsolete = yes #default = no\n\tname_group = ship_name_group_name #default = empty/none\n\trole_icon_index = 3 #default just inherits from parent or remains unset\n\trole_icon_index = 0 #alternative, explicitly unset\n\trole_icon_index = auto #uses AI design logic to pick\n\tupgrades = { #optional, inherits from parent\n\t\tship_deckspace_upgrade = 1\n\t\tcarrier_armor_upgrade = 2\n\t}\n\tmodules = { #optional, inherits from parent\n\t\tfixed_ship_deck_slot_1 = ship_deck_space\n\t\tfront_1_custom_slot = ship_armor_carrier_deck\n\t\tfixed_ship_deck_slot_2 = empty #overrides parent\n\t}\n\tmodel = \"GER_light_armor_2_entity\"\n\ticon = \"gfx/interface/technologies/ger_basic_light_tank.dds\" #can also use GFX name e.g: \"GFX_GER_basic_light_tank_medium\"\n}\n" }, "add_equipment_production": { "supported_scope": ["COUNTRY"], @@ -723,7 +758,7 @@ "set_autonomy": { "supported_scope": ["COUNTRY"], "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], - "description": "makes autonomy of specified level and country.\nExample:\nset_autonomy = {\ntarget=ENG\nautonomy_state = nautonomy_puppet\nfreedom_level=0.5\n}" + "description": "makes autonomy of specified level and country.\nExample:\nset_autonomy = {\n target=ENG \n autonomy_state = autonomy_puppet \n freedom_level=0.5 \n end_wars = yes # default yes. will not cancel non civil wars if set to no\n end_civil_wars = yes # default yes. will not cancel civil wars if set to no\n}" }, "add_to_tech_sharing_group": { "supported_scope": ["COUNTRY"], @@ -813,7 +848,7 @@ "create_production_license": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "Creates production license\nExample: create_production_license = {\n\ttarget = TAG # target for licensing\n\tcost_factor = 1.0 # cost factor for the deal\n\tequipment = { # classical equipment reference\n\t\ttype = light_tank_equipment_2\n\t\tversion = 0\n\t}\n}" + "description": "Creates production license\nExample: create_production_license = {\n\ttarget = TAG # target for licensing\n\tcost_factor = 1.0 # cost factor for the deal\n\tequipment = { # classical equipment reference\n\t\ttype = light_tank_equipment_2\n\t\tversion = 0\n\t\tnew_prioritised = no ## default yes, you can force using version control this way\n\t}\n}" }, "add_relation_modifier": { "supported_scope": ["COUNTRY"], @@ -886,34 +921,34 @@ "description": "Destroys ships of specified country and amount\nExample: \nENG={ \n\tdestroy_ships = {\n\t\ttype=light_cruiser\n\t\tcount=all #or number\n\t}\n}" }, "set_unit_leader_flag": { - "supported_scope": ["UNIT_LEADER"], + "supported_scope": ["CHARACTER"], "supported_target": ["none"], - "description": "set unit leader flag" + "description": "set unit leader flag\nThis effect is deprecated in favor of set_character_flag." }, "modify_unit_leader_flag": { - "supported_scope": ["UNIT_LEADER"], + "supported_scope": ["CHARACTER"], "supported_target": ["none"], - "description": "modify unit leader flag. Only modifies if flag already exists.\nExample: _modify_unit_leader_flag_ = { flag = value = }" + "description": "modify unit leader flag. Only modifies if flag already exists.\nExample: _modify_unit_leader_flag_ = { flag = value = }\nThis effect is deprecated in favor of modify_character_flag." }, "clr_unit_leader_flag": { - "supported_scope": ["UNIT_LEADER"], + "supported_scope": ["CHARACTER"], "supported_target": ["none"], - "description": "clear unit leader flag" + "description": "clear unit leader flag\nThis effect is deprecated in favor of clr_character_flag." }, "set_nationality": { - "supported_scope": ["UNIT_LEADER"], + "supported_scope": ["COUNTRY", "CHARACTER"], "supported_target": ["none"], - "description": "Set the new country owner for the scoped in unit leader.\nNote that this is not related to operative nationalities added via add_nationality.\nNote that for operative, this will temporarily lock their slot on the country of origin.\n" + "description": "Transfer from one country to another for the character in scope.\nNote that this is not related to operative nationalities added via add_nationality.\nNote that for operative, this will temporarily lock their slot on the country of origin.\n\nExamples:\nSOV = { # origin country\n\tmy_character = {\n\tset_nationality = POL # target country\n}\nSOV = { # origin country\n\tset_nationality = {\n\t\ttarget_country = POL\n\t\tcharacter = my_character\n\t}\n}\n" }, "demote_leader": { - "supported_scope": ["UNIT_LEADER"], + "supported_scope": ["CHARACTER"], "supported_target": ["none"], "description": "Demotes field marshal to general" }, "retire": { - "supported_scope": ["UNIT_LEADER"], + "supported_scope": ["CHARACTER"], "supported_target": ["none"], - "description": "Retires scope unit leader" + "description": "Retires character, use in character scope" }, "add_command_power": { "supported_scope": ["COUNTRY"], @@ -926,12 +961,12 @@ "description": "show what decision does\nExample: unlock_decision_tooltip = some_decision_here\nExample:\nunlock_decision_tooltip = {\n decision = \n show_effect_tooltip = yes # default is no\n show_modifiers = yes # default is no\n}\n" }, "add_temporary_buff_to_units": { - "supported_scope": ["UNIT_LEADER"], + "supported_scope": ["CHARACTER"], "supported_target": ["none"], "description": "Add buffs to units that are belongs to the army group/navy of this unit leader" }, "boost_planning": { - "supported_scope": ["UNIT_LEADER"], + "supported_scope": ["CHARACTER"], "supported_target": ["none"], "description": "Boost planning of units that are belongs to the army group/navy of this unit leader" }, @@ -976,17 +1011,17 @@ "description": "Clears a variable\nExample: clear_variable = num_dogs" }, "add_attack": { - "supported_scope": ["UNIT_LEADER"], + "supported_scope": ["CHARACTER"], "supported_target": ["none"], - "description": "Adds attack skill to a unit leader\nExample: add_attack = 1" + "description": "Adds attack skill to a character\nExample: add_attack = 1" }, "add_defense": { - "supported_scope": ["UNIT_LEADER"], + "supported_scope": ["CHARACTER"], "supported_target": ["none"], "description": "Adds defense skill to a unit leader\nExample: add_defense = 1" }, "add_planning": { - "supported_scope": ["UNIT_LEADER"], + "supported_scope": ["CHARACTER"], "supported_target": ["none"], "description": "Adds planning skill to a unit leader\nExample: add_planning = 1" }, @@ -1006,7 +1041,7 @@ "description": "Sets what focus tree a country uses, retains finished shared focuses." }, "add_logistics": { - "supported_scope": ["UNIT_LEADER"], + "supported_scope": ["CHARACTER"], "supported_target": ["none"], "description": "Adds logistics skill to a unit leader\nExample: add_logistics = 1" }, @@ -1016,12 +1051,12 @@ "description": "Add an offsite building to a country" }, "replace_unit_leader_trait": { - "supported_scope": ["UNIT_LEADER"], + "supported_scope": ["CHARACTER"], "supported_target": ["none"], "description": "add trait to unit leader" }, "free_operative": { - "supported_scope": ["COUNTRY", "UNIT_LEADER"], + "supported_scope": ["COUNTRY", "CHARACTER"], "supported_target": ["THIS", "ROOT", "PREV", "FROM"], "description": "Free an operative\nCan be used from a scope and a target that is either a country or a unit leader.\nGER = { free_operative = PREV } # where PREV is an operative (unit leader)\nfree_operative = { captured_by = GER } # where the scope is an unit leader\n" }, @@ -1031,12 +1066,12 @@ "description": "Free a random captured operative of a certain tag by a certain tag\nCan be used from a country scope of the operative in question.\n`all` is optional, default value is no - if set to yes it will free all operatives captured by the target country\nGER = { free_random_operative = { all = yes captured_by = ENG } }\n" }, "add_max_trait": { - "supported_scope": ["UNIT_LEADER"], + "supported_scope": ["CHARACTER"], "supported_target": ["none"], "description": "Adds a max assignable trait slot for a general\nExample: add_max_trait = 1" }, "add_skill_level": { - "supported_scope": ["UNIT_LEADER"], + "supported_scope": ["CHARACTER"], "supported_target": ["none"], "description": "Adds a skill level to a unit leader\nExample: add_skill_level = 1" }, @@ -1066,7 +1101,7 @@ "description": "Sets a temp variable to a value or another variable\nExample: set_temp_variable = {\nvar = num_dogs\n\tvalue = 42\n\ttooltip = loc_str_id_with_LEFT_and_RIGHT #localized text with LEFT and RIGHT tokens in it, tokens will replaced by values\n}" }, "add_timed_unit_leader_trait": { - "supported_scope": ["UNIT_LEADER"], + "supported_scope": ["CHARACTER"], "supported_target": ["none"], "description": "add a timed trait to unit leader" }, @@ -1106,7 +1141,7 @@ "description": "Delete a template and its units\nExample: delete_unit_template_and_units = { \ndivision_template = \ndisband = no #if yes, will refund equipment/manpower. default is no\n}" }, "print_variables": { - "supported_scope": ["STATE", "COUNTRY", "UNIT_LEADER"], + "supported_scope": ["STATE", "COUNTRY", "CHARACTER"], "supported_target": ["none"], "description": "prints all variables in scope and temp variables to a file\nExample: print_variables = {\nfile = log_file\ntext = header_text\nappend = yes\nprint_global = yes\nvar_list = { a b c } #optional\n}" }, @@ -1156,7 +1191,7 @@ "description": "Rounds a variable\nExample: round_variable = num_dogs" }, "unit_leader_event": { - "supported_scope": ["UNIT_LEADER"], + "supported_scope": ["CHARACTER"], "supported_target": ["none"], "description": "Fires a unit leader event for owner country.\nExample:\nunit_leader_event = {\n\tid = generic.17 # The event to fire.\n\t# Optional Fields:\n\thours = 12 # The number of hours to wait before firing the event.\n\tdays = 5 # The number of days to wait before firing the event.\n\tmonths = 1 # The number of months to wait before firing the event, where a month is treated as 30 days.\n\t\t# Note: hours, days, and months can all be used and will simply be added together.\n\trandom_hours = 18 # A random amount of hours to be added to the delay before firing, from 0 up to but not including random_hours.\n\trandom_days = 2 # A random amount of days to be added to the delay before firing, from 0 up to but one hour less than random_days.\n\t\t# Note: random_hours and random_days can both be used and will simply be added together.\n\trandom = 6 # Equivalent to random_hours; preserverd for backwards compatibility.\n\trandom = { chance = 50 ... } # Specify a set of child effects to execute as part of this effect, with a percentage chance of randomly happening or not (as a group, not individually).\n\ttooltip = generic.17.t # Manually specify which tooltip to use for this effect.\n}\n" }, @@ -1168,10 +1203,10 @@ "create_operative_leader": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "create operative for country\ncreate_operative_leader = {\n\tbypass_recruitment = no # whether the operative is directly added to the list of available operatives \n\tavailable_to_spy_master = yes # whether the operative can be recruited by the spy master. Only makes sense if bypass_recruitment is 'no'.\n\tportrait_tag_override = TAG # when selectiong the portrait for the operative, consider that tag instead of the country the operative will operate for\t# Additionally supports the common token to other create_x_leader effects\n}\n" + "description": "create operative for country\ncreate_operative_leader = {\n\tbypass_recruitment = no # whether the operative is directly added to the list of available operatives \n\tavailable_to_spy_master = yes # whether the operative can be recruited by the spy master. Only makes sense if bypass_recruitment is 'no'.\n\tportrait_tag_override = TAG # when selectiong the portrait for the operative, consider that tag instead of the country the operative will operate for gfx = GFX_portrait_alexander_rado # specify the GFX entry that the portrait will be based on, otherwise a random one will be generated.\n\t# Additionally supports the common token to other create_x_leader effects\n}\n" }, "capture_operative": { - "supported_scope": ["COUNTRY", "UNIT_LEADER"], + "supported_scope": ["COUNTRY", "CHARACTER"], "supported_target": ["THIS", "ROOT", "PREV", "FROM"], "description": "Capture an operative\nCan be used from a scope and a target that is either a country or a unit leader.\nExamples:\nGER = {\n capture_operative = PREV # where PREV is an operative (unit leader)\n # or capture_operative = {\n operative = PREV\n ignore_death_chance = yes # optional: whether the death chance on capture should be ignored\n }\n}\n\ncapture_operative = { captured_by = GER } # where the scope is an unit leader\n" }, @@ -1211,12 +1246,12 @@ "description": "swap 2 traits on current ruler. \n Syntax: swap_ruler_traits = { remove = add = }" }, "add_random_trait": { - "supported_scope": ["UNIT_LEADER"], + "supported_scope": ["CHARACTER"], "supported_target": ["none"], "description": "add random trait from specified list to unit leader. add_random_trait = { old_guard brilliant_strategist inflexible_strategist }" }, "remove_exile_tag": { - "supported_scope": ["UNIT_LEADER"], + "supported_scope": ["CHARACTER"], "supported_target": ["none"], "description": "remove exile tag from scope unit leader. remove_exile_tag = yes" }, @@ -1236,12 +1271,12 @@ "description": "set_faction_name = NEW_LOC_KEY. Sets the faction name to whatever the new key localises to." }, "add_maneuver": { - "supported_scope": ["UNIT_LEADER"], + "supported_scope": ["CHARACTER"], "supported_target": ["none"], "description": "Adds maneuver skill to a unit leader\nExample: add_maneuver = 1" }, "add_coordination": { - "supported_scope": ["UNIT_LEADER"], + "supported_scope": ["CHARACTER"], "supported_target": ["none"], "description": "Adds maneuver skill to a unit leader\nExample: add_coordination = 1" }, @@ -1266,9 +1301,9 @@ "description": "Rounds a temporary variable\nExample: round_temp_variable = num_dogs" }, "supply_units": { - "supported_scope": ["UNIT_LEADER"], + "supported_scope": ["CHARACTER"], "supported_target": ["none"], - "description": "Give supply to units being controlled by this leader. \nExample supply_units = 24" + "description": "Give [hours] of supply to units being controlled by this leader. \nExample supply_units = 24" }, "set_faction_leader": { "supported_scope": ["COUNTRY"], @@ -1356,17 +1391,17 @@ "description": "Runs the effect for a random element in array\nExample: random_scope_in_array = {\n\tarray = array_name\n\tlimit = { ... trigger ... } a trigger to limit scopes\n\tbreak = break_name #optional (default 'break') set this temp variable to non zero to break the loop\n #effect 1\n #effect 2 ...\n}" }, "force_update_dynamic_modifier": { - "supported_scope": ["STATE", "COUNTRY", "UNIT_LEADER"], + "supported_scope": ["STATE", "COUNTRY", "CHARACTER"], "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "updates the modifiers in current scope (use if you don't want to wait for daily update to update them):\nforce_update_dynamic_modifier = yes\n" }, "remove_dynamic_modifier": { - "supported_scope": ["STATE", "COUNTRY", "UNIT_LEADER"], + "supported_scope": ["STATE", "COUNTRY", "CHARACTER"], "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "removes a dynamic modifier from country/state/unit leader:\nremove_dynamic_modifier = {\n modifier = dynamic_modifier_name\n scope = GER #optional, specify if it is specified while adding the modifier\n}\n" }, "add_dynamic_modifier": { - "supported_scope": ["STATE", "COUNTRY", "UNIT_LEADER"], + "supported_scope": ["STATE", "COUNTRY", "CHARACTER"], "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "adds a dynamic modifier to country/state/unit leader. Updates the cooldown if exists:\nadd_dynamic_modifier = {\n modifier = dynamic_modifier_name\n days = 42 #will be temporary if specified scope = GER #optional, state or country tag or a variable contains that. if specified the dynamic variable will target that scope\n}\n" }, @@ -1385,6 +1420,16 @@ "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "meta effects can be used for building effects from strings and running them. following example will give Germany 42 pp:\nmeta_effect = {\n text = {\n [COUNTRY] = {\n add_political_power = [POW]\n }\n }\n COUNTRY = \"GER\"\n POW = 42\n debug = no #set to yes if you want to see what game actually executes\n}\n" }, + "add_victory_points": { + "supported_scope": ["any"], + "supported_target": ["any"], + "description": "adds victory point to province\nadd_victory_points = {\n province = 42\n value = 5\n}" + }, + "set_victory_points": { + "supported_scope": ["any"], + "supported_target": ["any"], + "description": "sets victory points for a province\nset_victory_points = {\n province = 42\n value = 5\n}" + }, "launch_nuke": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], @@ -1408,7 +1453,7 @@ "add_mines": { "supported_scope": ["COUNTRY"], "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], - "description": "Add mines to a strategic region for scoped country.\n add_mines = { region = 42 amount = 100 }" + "description": "Add mines to a strategic region for scoped country.\n add_mines = { region = 42 mines = 100 }" }, "set_fuel_ratio": { "supported_scope": ["COUNTRY"], @@ -1420,6 +1465,11 @@ "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "Ends the exile of of the current scope's country" }, + "remove_advisor_role": { + "supported_scope": ["COUNTRY", "CHARACTER"], + "supported_target": ["none"], + "description": "remove advisor role to character\n\nExample:\nremove_advisor_role = {\n\tcharacter = \"GER_Character_Token\" # optional if inside character scope\n\tslot = air_chief}\n" + }, "kill_ideology_leader": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], @@ -1616,12 +1666,12 @@ "description": "refer to randomize_temp_variable" }, "harm_operative_leader": { - "supported_scope": ["UNIT_LEADER"], + "supported_scope": ["CHARACTER"], "supported_target": ["none"], "description": "Harm an operative. The specified value is subject to modifiers.\nharm_operative_leader = 12\n" }, "force_operative_leader_into_hiding": { - "supported_scope": ["UNIT_LEADER"], + "supported_scope": ["CHARACTER"], "supported_target": ["none"], "description": "Force an operative into hiding, preventing him from performing mission. The specified values is subject to modifiers\nforce_operative_leader_into_hiding = 12\n" }, @@ -1631,12 +1681,12 @@ "description": "Add the specified amount of intel over a specified country\nGER = {\n add_intel = {\n target = POL\n civilian_intel = 3\n army_intel = 1\n # zero field can be omitted\n # navy_intel = 0\n # airforce_intel = 0\n }\n}\n" }, "operative_leader_event": { - "supported_scope": ["UNIT_LEADER"], + "supported_scope": ["CHARACTER"], "supported_target": ["none"], "description": "Fires a operative leader event for owner country.\nExample:\noperative_leader_event = {\n\tid = generic.17 # The event to fire.\n\t# Optional Fields:\n\toriginator = TAG # The originator of the event (default to the owner of the operative)\n\trecipient = TAG # The recipient of the event (default to the owner of the operative)\n\thours = 12 # The number of hours to wait before firing the event.\n\tdays = 5 # The number of days to wait before firing the event.\n\tmonths = 1 # The number of months to wait before firing the event, where a month is treated as 30 days.\n\t\t# Note: hours, days, and months can all be used and will simply be added together.\n\trandom_hours = 18 # A random amount of hours to be added to the delay before firing, from 0 up to but not including random_hours.\n\trandom_days = 2 # A random amount of days to be added to the delay before firing, from 0 up to but one hour less than random_days.\n\t\t# Note: random_hours and random_days can both be used and will simply be added together.\n\trandom = 6 # Equivalent to random_hours; preserverd for backwards compatibility.\n\trandom = { chance = 50 ... } # Specify a set of child effects to execute as part of this effect, with a percentage chance of randomly happening or not (as a group, not individually).\n\ttooltip = generic.17.t # Manually specify which tooltip to use for this effect.\n\tset_from = TAG # Set the scope of the From in the scripted localization\n\tset_from_from = TAG # Set the scope of the From.From in the scripted localization\n\tset_root = TAG # Set the scope of the Root in the scripted localization\n}\n" }, "kill_operative": { - "supported_scope": ["COUNTRY", "UNIT_LEADER"], + "supported_scope": ["COUNTRY", "CHARACTER"], "supported_target": ["THIS", "ROOT", "PREV", "FROM"], "description": "Kills an operative. This will temporarily lock the slot they occupy\nExamples:\nGER = {\n kill_operative = PREV # where PREV is an operative (unit leader)\n # or\n kill_operative = {\n operative = PREV\n }\n}\n\nkill_operative = { killed_by = GER } # where the scope is an unit leader\n" }, @@ -1653,7 +1703,7 @@ "add_civil_war_target": { "supported_scope": ["COUNTRY"], "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], - "description": "Adds a civil war target to a specific country\n Usage: add_civil_war_target = TAG" + "description": "Adds a civil war target to a specific country\n Usage: civill_war_target = TAG" }, "modulo_temp_variable": { "supported_scope": ["any"], @@ -1696,12 +1746,12 @@ "description": "sets a variable to a random value. example \nset_variable_to_random = num_dogs #sets num_dogs a random value between [0, 1) \nset_variable_to_random = { \n\tvar = num_dogs #variable to set \n\tmin = 5 #default 0. value will be set in between [min, max) \n\tmax = 10 #default 1. value will be set in between [min, max) \n\tinteger = yes #default no. if yes the number value will be an integer \n} \n" }, "set_leader_name": { - "supported_scope": ["UNIT_LEADER"], + "supported_scope": ["CHARACTER"], "supported_target": ["any"], "description": "changes the name of unit leader. no tooltip is generated\nset_leader_name = \"James Boned\"\n" }, "set_leader_portrait": { - "supported_scope": ["UNIT_LEADER"], + "supported_scope": ["CHARACTER"], "supported_target": ["any"], "description": "changes the portrait of unit leader. no tooltip is generated\nset_leader_portrait = \"GFX_portrait_italy_emperor_mussolini\"\n" }, @@ -1711,7 +1761,7 @@ "description": "changes the description of country leader. no tooltip is generated\nset_country_leader_name = {\n ideology = neutrality # can be ommitted. if so it will change the portrait of current ruler\n desc = \"DESC_KEY\"\n}" }, "set_leader_description": { - "supported_scope": ["UNIT_LEADER"], + "supported_scope": ["CHARACTER"], "supported_target": ["any"], "description": "changes the description of unit leader. no tooltip is generated\nset_leader_description = \"DESC_KEY\"\n" }, @@ -1721,7 +1771,7 @@ "description": "Special effect for executing the Coordinated Strike Operation. amount determines how often the simulation is run" }, "add_nationality": { - "supported_scope": ["UNIT_LEADER"], + "supported_scope": ["CHARACTER"], "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "Add the specified nationalty to the scoped-in operative. Examples:\nadd_nationality = ROOT\nadd_nationality = FRA\n" }, @@ -1731,15 +1781,80 @@ "description": "The scoped in country recall the volunteers sent to the target country.\nExample:\n# FRA recalls the volunteers it sent to SPR\nFRA = { recall_volunteers_from = SPR }\n" }, "turn_operative": { - "supported_scope": ["COUNTRY", "UNIT_LEADER"], + "supported_scope": ["COUNTRY", "CHARACTER"], "supported_target": ["THIS", "ROOT", "PREV", "FROM"], "description": "An operative is turned by the specified country.\nThis transfers the operative to the target country and make it appear as killed to the country of origin (increases the death counter and lock the slot).\nThis fires the on_action on_operative_death with as killer the target country.\nIf the target country is the owner of the operative, this has no effect and an error is logged.\n\nWARN: the on_action might execute immediatly, before any effect listed after the occurence of turn_operative.\n\nExamples:\nGER = {\n turn_operative = PREV # where PREV is an operative (unit leader)\n # or\n turn_operative = {\n operative = PREV\n }\n}\n\nturn_operative = { turned_by = GER } # where the scope is an unit leader\n" }, + "every_character": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "Executes children effects on every character that fulfills the \"limit\" trigger." + }, + "random_character": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "Executes children effects on random characters that fulfills the \"limit\" trigger. tooltip=key can be added to override tooltip title" + }, + "add_doctrine_cost_reduction": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "adds a limited use cost reduction for doctrines" + }, "set_garrison_strength": { "supported_scope": ["STATE"], "supported_target": ["any"], "description": "set initial garrison strength. Example: set_garrison_strength = 0.5" }, + "add_corps_commander_role": { + "supported_scope": ["COUNTRY", "CHARACTER"], + "supported_target": ["none"], + "description": "add corps commander role to character\n\nExample:\nadd_corps_commander_role = {\n\tcharacter = GER_Character_token # optional if inside character scope\n\ttraits = { }\n\tskill = 4\n\tattack_skill = 2\n\tdefense_skill = 3\n\tplanning_skill = 3\n\tlogistics_skill = 5\n\t}\n}" + }, + "add_field_marshal_role": { + "supported_scope": ["COUNTRY", "CHARACTER"], + "supported_target": ["none"], + "description": "add field marshall role to character\n\nExample:\nadd_field_marshal_role = {\n\tcharacter = GER_Character_token # optional if inside character scope\n\ttraits = { }\n\tskill = 4\n\tattack_skill = 2\n\tdefense_skill = 3\n\tplanning_skill = 3\n\tlogistics_skill = 5\n\t}\n}" + }, + "add_naval_commander_role": { + "supported_scope": ["COUNTRY", "CHARACTER"], + "supported_target": ["none"], + "description": "Add naval commander to character\n\nExample:\nadd_naval_commander_role = {\n\tcharacter = GER_Character_token # optional if inside character scope\n\ttraits = { spotter }\n\tskill = 4\n\tattack_skill = 3\n\tdefense_skill = 3\n\tmaneuvering_skill = 3\n\tcoordination_skill = 4\n\t}\n}" + }, + "add_country_leader_role": { + "supported_scope": ["COUNTRY", "CHARACTER"], + "supported_target": ["none"], + "description": "add country leader role to character\n\nExample:\nadd_country_leader_role = {\n\tcharacter = \"GER_Character_Token\" # optional if inside character scope\n\tpromote_leader = yes\n\tcountry_leader = {\n\t\tideology = socialism\n\t\texpire = \"1965.1.1.1\"\n\t\ttraits = {\n\t\t\twar_industrialist\n\t\t}\n\t}\n}\n" + }, + "add_advisor_role": { + "supported_scope": ["COUNTRY", "CHARACTER"], + "supported_target": ["none"], + "description": "add advisor role to character\nMay directly activate (aka hire) using activate = yes\n\nExample:\nadd_advisor_role = {\n\tcharacter = \"GER_Character_Token\" # optional if inside character scope\n\tadvisor = {\n\t\tslot = air_chief\n\t\tcost = 50\n\t\tidea_token = GER_character_token_air_chief\n\t\ttraits = {\n\t\t\tair_chief_ground_support_2\n\t\t}\n\t\tallowed = {...}\n\t}\n\tactivate = yes\n}\n" + }, + "retire_character": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "Un-assigns a character from a nation and all its corresponding jobs, advisor, unit leader, country leader\n\nExample:\nretire_character = GER_Character_Token\n" + }, + "recruit_character": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "Attach a character to a country. Must be in country scope.\n\nExample:\nGER = { recruit_character = GER_Character_token }\n" + }, + "promote_character": { + "supported_scope": ["COUNTRY", "CHARACTER"], + "supported_target": ["none"], + "description": "promotes character to the head of their political party.If this is the ruling party, the character becomes country leader.if the character has several country leader role (i.e. several ideologies), then it is mandatory to provide the ideology to promote.\n\nExample in country scope:\npromote_character = GER_erwin_rommel\npromote_character = {\n character = GER_erwin_rommel\n ideology = nazism\n}\n\n\nExample in character scope:\npromote_character = yes\npromote_character = nazism\npromote_character = {\n ideology = nazism\n}" + }, + "play_song": { + "supported_scope": ["any"], + "supported_target": ["none"], + "description": "Plays song from database" + }, + "scoped_play_song": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "Plays song from database only on in current scope's player" + }, "release_on_controlled": { "supported_scope": ["COUNTRY"], "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], @@ -1749,12 +1864,167 @@ "supported_scope": ["COUNTRY"], "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "releases specified country as puppet using states you own or control" + }, + "create_entity": { + "supported_scope": ["any"], + "supported_target": ["any"], + "description": "creates an entity on map\ncreate_entity = {\n entity = entity_name #gfx entry \n id = 123 # can be ommitted. if given you can use this id to access entity in later times. will replace existing entity if it exists\n var = var_name # can be ommitted. if given the id will be stored in this value so the entity can be accessed in later times \n # position can be set using following. you can specify a province/state or can enter a manual coordinate. you can do both and the coordinate will shift the state/province coordinate \n x = 42 \n y = 21 \n province = 123 \n state = 42 \n z = 3 #if wanted you can specify a z to shift height of the entity\n rotation = 1.2 # angle in radians \n scale = 10.0 # scale of entity \n min_zoom = 100.0 # min zoom needed to show entity \n visible = scripted_trigger_name # a scripted trigger name to show or hide an entity. scope is player country}" + }, + "destroy_entity": { + "supported_scope": ["any"], + "supported_target": ["any"], + "description": "destroys an existing entity\ndestroy_entity = 123 #id\n" + }, + "set_entity_movement": { + "supported_scope": ["any"], + "supported_target": ["any"], + "description": "sets the position & rotation of an existing entity using two coordinates\nset_entity_movement = {\n id = 123 # id of entity \n start = { \n # position can be set using following \n x = 42 \n y = 21 \n province = 123 \n state = 42 \n z = 3 #if wanted you can specify a z to shift height of the entity\n } \n target = { \n # position can be set using following \n x = 42 \n y = 21 \n province = 123 \n state = 42 \n z = 3 #if wanted you can specify a z to shift height of the entity\n } \n ratio = 0.5 # a ratio in between 0 - 1. the entity is positioned in between start & target position using this ratio \n rotation = 1.2 # angle in radio, entity is rotated using the direction and this angle is added after that \n}" + }, + "set_entity_position": { + "supported_scope": ["any"], + "supported_target": ["any"], + "description": "sets the position of existing entity\nset_entity_position = {\n id = 123 # id of entity \n # position can be set using following \n x = 42 \n y = 21 \n province = 123 \n state = 42 \n z = 3 #if wanted you can specify a z to shift height of the entity\n}" + }, + "set_entity_rotation": { + "supported_scope": ["any"], + "supported_target": ["any"], + "description": "sets the rotation of existing entity\nset_entity_rotation = {\n id = 123 # id of entity \n rotation = 0.23 # angle in radians \n}" + }, + "set_entity_scale": { + "supported_scope": ["any"], + "supported_target": ["any"], + "description": "sets the scale of existing entity\nset_entity_scale = {\n id = 123 # id of entity \n scale = 5.0 \n}" + }, + "remove_decision_on_cooldown": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "Removes decision on cooldown to reactivate or remove. \nExample: remove_decision_on_cooldown = some_decision_here" + }, + "force_update_map_mode": { + "supported_scope": ["any"], + "supported_target": ["any"], + "description": "force rebuilds map mode. no tooltip generated.\nforce_update_map_mode = { \n limit = { always = yes } # limit to check against player\n mapmode = scripted_map_mode_name\n" + }, + "damage_units": { + "supported_scope": ["any"], + "supported_target": ["any"], + "description": "damages units for given conditions. no tooltip generated\ndamage_units = {\n #specify a location\n province = 42\n state = 5\n region = 5\n limit = { always = yes } #you can add a trigger for country check\n damage = 0.5 #if defined will damage both org & str damage with this amount\n org_damage = 0.5\n str_damage = 0.5\n ratio = yes #will damage a ratio damage to total org/str of unit if set\n template = \"template_name\" #you can limit army templates to damage army = yes #will damage armies\n navy = yes #will damage navies\n}" + }, + "uncomplete_national_focus": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "uncompletes a focus for a country. If specified, the 'on_uncomplete' effect will be executed on each uncompleted focus.\nExample: uncomplete_national_focus = {\n\tfocus = GER_oppose_hitler\n\tuncomplete_children = yes # Optional. Default is no. If yes, all proceeding focuses will also be uncompleted if their prerequisite aren't met after the preceeding focuses are uncompleted.\n\trefund_political_power = no # Optional. Default is no. If yes, the country is refunded the political power invested in the current focus if it's canceled as a result of its prerequisites being uncompleted.\n}\n" + }, + "build_railway": { + "supported_scope": ["any"], + "supported_target": ["any"], + "description": "Builds/adds railway level between two provinces or along a path. Example:\nbuild_railway = {\n level = 1 # Defaults to 1\n build_only_on_allied = yes # No by default. If yes and the effect scope is country, it will only build on allied territories for the country\n\n # You can specify a weight function that will be used in pathing. The scope will be the controller of the province it is trying to path to.\n # A negative value will make it not to path to that controller.\n # Non-negative values will be used as a path cost for that province.\n controller_priority = {\n base = 1\n\n modifier = {\n tag = MAN\n add = 2\n }\n }\n\n # The following options are used for picking a path. You can specify multiple options and it will pick in following order:\n fallback = yes # Default no. If yes, each option will try to fallback to next one.\n # option 1: List of provinces to draw railways. If fallback = yes uses start and end provinces of the path as fallback in option 2.\n path = { 10 20 30 40 }\n # option 2: Specify start & end province IDs. It will pick the shortest path. If provinces are not valid and if fallback = yes it will use states of those provs and use in option 3.\n start_province = 42\n target_province = 84\n # option 3: Specify start & end state IDs. It will pick provinces with the best node (capital > nodes > naval )\n start_state = 50\n target_state = 100\n}\n" + }, + "remove_wargoal": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "removes war goal type targetting nation targetExample:\nremove_wargoal = {\n\ttype = take_state\n\ttarget = FRA\n}" + }, + "set_entity_animation": { + "supported_scope": ["any"], + "supported_target": ["any"], + "description": "sets the rotation of existing entity\nset_entity_animation = {\n id = 123 # id of entity \n animation = \"shoot_lasers\" \n}" + }, + "swap_country_leader_traits": { + "supported_scope": ["CHARACTER"], + "supported_target": ["none"], + "description": "swap 2 traits on a country leader. \n Syntax: swap_country_leader_traits = { remove = add = [ideology = ] }" + }, + "set_character_flag": { + "supported_scope": ["CHARACTER"], + "supported_target": ["none"], + "description": "set character flag" + }, + "modify_character_flag": { + "supported_scope": ["CHARACTER"], + "supported_target": ["none"], + "description": "modify character flag. Only modifies if flag already exists.\nExample: _modify_character_flag_ = { flag = value = }" + }, + "clr_character_flag": { + "supported_scope": ["CHARACTER"], + "supported_target": ["none"], + "description": "clear character flag" + }, + "every_core_state": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "Executes children effects on every core state that fulfills the \"limit\" trigger. tooltip=key can be added to override tooltip title" + }, + "random_core_state": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "Executes children effects on random core state that fulfills the \"limit\" trigger. \nprioritize = { } to pick those states first if they fulfull the limit" + }, + "transfer_state_to": { + "supported_scope": ["STATE"], + "supported_target": ["THIS"], + "description": "Set owner and controller of a state to a given country\nExample:\\n\"\nUSA {\n\tevery_core_state = {\n\t\ttransfer_state_to = JAM\n\t}\n}\n" + }, + "set_state_owner_to": { + "supported_scope": ["STATE"], + "supported_target": ["THIS"], + "description": "Set owner of a state to a given country\nExample:\\n\"\nUSA {\n\trandom_core_state = {\n\t\tset_state_owner_to = JAM\n\t}\n}\n" + }, + "set_state_controller_to": { + "supported_scope": ["STATE"], + "supported_target": ["THIS"], + "description": "Set controller of a state to a given country\nExample:\\n\"\nUSA {\n\trandom_core_state = {\n\t\tset_state_controller_to = JAM\n\t}\n}\n" + }, + "remove_country_leader_role": { + "supported_scope": ["COUNTRY", "CHARACTER"], + "supported_target": ["none"], + "description": "Remove country leader role from character.\nExample:\nremove_country_leader_role = {\n\tcharacter = \"GER_Character_Token\" # optional if inside character scope\n\tideology = socialism\n}\n" + }, + "party_leader": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "Executes children effects on random characters that fulfills the \"limit\" trigger.\nHas to use has_ideology in limit to determine the party (with ideology group)\ntooltip=key can be added to override tooltip title\n\nparty_leader = {\n\tlimit = { has_ideology = communism }\n\tset_character_flag = whatever_flag\n}" + }, + "generate_character": { + "supported_scope": ["COUNTRY"], + "supported_target": ["any"], + "description": "Generates a character. Use in every_country in order to generates one copy of the character per country satisfying the limit conditions.\nevery_country = {\n\tlimit = { OR = { original_tag = KOR original_tag = SER original_tag = ICE } }\n\tgenerate_character = { #create + recruit\n\t\ttoken_base = army_chief_defensive_1 # mandatory, character token will be token_base\n\t\tname = \"Character's Name\" # optional, no name provided means random name for each generated character\n\t\t# then whatever you would put when writing character\n\t\tadvisor = {\n\t\t\tidea_token = ac # full idea token will be token_base_idea_token (to ensure unicity). optional, slot will be used if missing.\n\t\t\tslot = army_chief\n\t\t\tallowed = { original_tag = PREV }\n\t\t\ttraits = { army_chief_defensive_1 }\n\t\t}\n\t}\n}" + }, + "every_possible_country": { + "supported_scope": ["any"], + "supported_target": ["none"], + "description": "Executes children effects on every country that fulfills the \"limit\" trigger.\nDifference with every_country is that it includes countries not yet present on the map.\ntooltip=key can be defined to override tooltip title." + }, + "show_unit_leaders_tooltip": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "show unit leader's name" + }, + "character_list_tooltip": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "Display in tooltip every character that fulfills the \"limit\" trigger." + }, + "remove_unit_leader_role": { + "supported_scope": ["COUNTRY", "CHARACTER"], + "supported_target": ["none"], + "description": "Remove unit leader role to character\n\nExample:\nremove_corps_commander_role = {\n\tcharacter = GER_Character_token \n}\nremove_corps_commander_role = yes # inside a character scope\n" + }, + "set_portraits": { + "supported_scope": ["COUNTRY", "CHARACTER"], + "supported_target": ["none"], + "description": "set portraits for the target character. Syntax is similar to character files.\n\nexample:\nset_portraits = {\n\t\tcharacter = my_character # optional, use if not in a character scope\t\tarmy = { small =\"MySmallCharacterGFX\"}\n\t\tcivilian = { large =\"MyLargeCharacterGFX\" }\n}\n" + }, + "set_character_name": { + "supported_scope": ["COUNTRY", "CHARACTER"], + "supported_target": ["none"], + "description": "\"set name for the target character. Either localization key or direct name.\nexample:\nset_character_name = {\n\tcharacter = my_character # optional, use if not in a character scope\n\tname = my_name # either loc key or direct name\n}\nmy_character = {\n\tset_character_name = my_name # only possible in character scope\n}" } }, "triggers": { "state": { "supported_scope": ["STATE"], - "supported_target": ["none"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "CAPITAL"], "description": "check state id" }, "if": { @@ -1762,21 +2032,61 @@ "supported_target": ["none"], "description": "if_, CIfTrigger, A conditional trigger\nif = { limit = { } }" }, + "can_build_railway": { + "supported_scope": ["any"], + "supported_target": ["any"], + "description": "Checks if a railway can be built according to specifications. Example:\ncan_build_railway = {\n build_only_on_allied = yes # No by default. If yes and the effect scope is country, it will only build on allied territories for the country\n\n # You can specify a weight function that will be used in pathing. The scope will be the controller of the province it is trying to path to.\n # A negative value will make it not to path to that controller.\n # Non-negative values will be used as a path cost for that province.\n controller_priority = {\n base = 1\n\n modifier = {\n tag = MAN\n add = 2\n }\n }\n\n # The following options are used for picking a path. You can specify multiple options and it will pick in following order:\n fallback = yes # Default no. If yes, each option will try to fallback to next one.\n # option 1: List of provinces to draw railways. If fallback = yes uses start and end provinces of the path as fallback in option 2.\n path = { 10 20 30 40 }\n # option 2: Specify start & end province IDs. It will pick the shortest path. If provinces are not valid and if fallback = yes it will use states of those provs and use in option 3.\n start_province = 42\n target_province = 84\n # option 3: Specify start & end state IDs. It will pick provinces with the best node (capital > nodes > naval )\n start_state = 50\n target_state = 100\n}\n" + }, + "num_of_supply_nodes": { + "supported_scope": ["COUNTRY"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "check amount of supply nodes" + }, "date": { "supported_scope": ["any"], "supported_target": ["none"], "description": "checks for a specific date" }, "skill": { - "supported_scope": ["UNIT_LEADER", "COMBATANT"], + "supported_scope": ["CHARACTER", "COMBATANT"], "supported_target": ["none"], "description": "compare leader skill levels" }, + "any_subject_country": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "check if any subject country meets the trigger. tooltip=key can be defined to override title" + }, + "all_subject_countries": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "check if all subject countries meet the trigger. tooltip=key can be defined to override title" + }, + "has_railway_level": { + "supported_scope": ["any"], + "supported_target": ["any"], + "description": "Checks if a state contains a railway at or above the specified level. Example:\nhas_railway_level = {\n level = 3\n state = 1234\n}\n" + }, "phase": { "supported_scope": ["COMBATANT"], "supported_target": ["none"], "description": "check if we are in this combat phase" }, + "has_railway_connection": { + "supported_scope": ["any"], + "supported_target": ["any"], + "description": "Checks for an existing rail connection. Uses same params as can_build_railway. Example:\nhas_railway_connection = {\n build_only_on_allied = yes # No by default. If yes and the effect scope is country, it will only build on allied territories for the country\n\n # The following options are used for picking a path. You can specify multiple options and it will pick in following order:\n fallback = yes # Default no. If yes, each option will try to fallback to next one.\n # option 1: List of provinces to draw railways. If fallback = yes uses start and end provinces of the path as fallback in option 2.\n path = { 10 20 30 40 }\n # option 2: Specify start & end province IDs. It will pick the shortest path. If provinces are not valid and if fallback = yes it will use states of those provs and use in option 3.\n start_province = 42\n target_province = 84\n # option 3: Specify start & end state IDs. It will pick provinces with the best node (capital > nodes > naval )\n start_state = 50\n target_state = 100\n}\n\n" + }, + "num_of_controlled_factories": { + "supported_scope": ["COUNTRY"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "check the number of factories in controlled states excluding any gained or lost through trade, relations, modifiers etc." + }, + "num_of_owned_factories": { + "supported_scope": ["COUNTRY"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "check the number of factories in owned states excluding any gained or lost through trade, relations, modifiers etc." + }, "and": { "supported_scope": ["any"], "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], @@ -1824,7 +2134,7 @@ }, "tag": { "supported_scope": ["COUNTRY", "COMBATANT"], - "supported_target": ["any"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "country tag trigger" }, "any_country": { @@ -1888,12 +2198,12 @@ "description": "Checks if player has a DLC.\nExample: has_dlc = \"name of the dlc\"" }, "hidden_trigger": { - "supported_scope": ["STATE", "COUNTRY", "UNIT_LEADER", "COMBATANT", "ACE", "STRATEGIC_REGION", "OPERATION"], + "supported_scope": ["STATE", "COUNTRY", "CHARACTER", "COMBATANT", "ACE", "STRATEGIC_REGION", "OPERATION"], "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "a hidden trigger, anything in it not shown in tooltips" }, "is_female": { - "supported_scope": ["COUNTRY", "UNIT_LEADER", "ACE"], + "supported_scope": ["COUNTRY", "CHARACTER", "ACE"], "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "checks if scoped unit leader, ace or country is female" }, @@ -1924,7 +2234,7 @@ }, "is_subject_of": { "supported_scope": ["COUNTRY"], - "supported_target": ["any"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "Checks if the country is subject of specified country" }, "all_neighbor_country": { @@ -1984,12 +2294,12 @@ }, "owns_state": { "supported_scope": ["COUNTRY"], - "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "CAPITAL"], "description": "check owner for state(s)" }, "controls_state": { "supported_scope": ["COUNTRY"], - "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "CAPITAL"], "description": "check controller for state(s)" }, "has_government": { @@ -2245,7 +2555,7 @@ "has_available_idea_with_traits": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "Checks if country has available ideas with specific traits more than limit. Example: \nhas_available_idea_with_traits = { \n\tidea = head_of_intelligence # trait names. can be a list of traits in { } \n\tlimit = 1 \n\tignore = generic_head_of_intelligence # if specified, these ideas will be ignored. can be a list of ideas in { }\n} \n" + "description": "Checks if country has available ideas with specific traits more than limit. Example: \nhas_available_idea_with_traits = { \n\tidea = head_of_intelligence # trait names. can be a list of traits in { } \n\tlimit = 1 \n\tcharacters = yes/no - only runs this trigger on characters \n\tignore = generic_head_of_intelligence # if specified, these ideas will be ignored. can be a list of ideas in { }\n} \n" }, "is_claimed_by": { "supported_scope": ["STATE"], @@ -2263,7 +2573,7 @@ "description": "Checks if country is AI controlled." }, "has_trait": { - "supported_scope": ["UNIT_LEADER", "COMBATANT"], + "supported_scope": ["CHARACTER", "COMBATANT"], "supported_target": ["none"], "description": "check if sides leader has trait" }, @@ -2359,7 +2669,7 @@ }, "is_puppet_of": { "supported_scope": ["COUNTRY"], - "supported_target": ["any"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "Checks if the country is puppet of specified country" }, "ships_in_state_ports": { @@ -2725,7 +3035,7 @@ "has_country_leader": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "check if country has leader with specified ID. Don't localize this. Tooltip only for debug.\nhas_country_leader = {\n\tid = \n\truling_only = yes/no (default = yes)\n\tname = \n}" + "description": "check if country has leader with specified ID. Don't localize this. Tooltip only for debug.\nhas_country_leader = {\n\truling_only = yes/no (default = yes)\n\tcharacter = # recommended criteria\n\tname = # alternative criteria\n\tid = # alternative criteria\n}" }, "has_army_experience": { "supported_scope": ["COUNTRY"], @@ -2744,7 +3054,7 @@ }, "has_full_control_of_state": { "supported_scope": ["COUNTRY"], - "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "CAPITAL"], "description": "check controller for state(s)" }, "num_divisions": { @@ -2789,7 +3099,7 @@ }, "is_licensing_any_to": { "supported_scope": ["COUNTRY"], - "supported_target": ["any"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "Current country is licensing something to target country\nExample: is_licensing_any_to = ENG" }, "is_licensing_to": { @@ -2903,24 +3213,24 @@ "description": "check if any unit leader meets the trigger. tooltip=key can be defined to override title" }, "is_assigned": { - "supported_scope": ["UNIT_LEADER"], + "supported_scope": ["CHARACTER"], "supported_target": ["none"], "description": "is_assigned = yes/no - Checks if the current unit leader is assigned to command an army/navy" }, "num_units": { - "supported_scope": ["UNIT_LEADER"], + "supported_scope": ["CHARACTER"], "supported_target": ["none"], "description": "Check number of units commanded by the unit leader \n num_units > 2" }, "is_field_marshal": { - "supported_scope": ["UNIT_LEADER"], + "supported_scope": ["CHARACTER"], "supported_target": ["none"], "description": "is_field_marshal = yes/no - Checks if the current unit leader is a field marshall" }, "has_unit_leader_flag": { - "supported_scope": ["UNIT_LEADER"], + "supported_scope": ["CHARACTER"], "supported_target": ["any"], - "description": "has unit leader flag been setCheck flag val date set and days since set.\nExample: has_unit_leader_flag = test_flag\nhas_unit_leader_flag = { \n\tflag = (mandatory)\n\tvalue < (optional)\n\tdate > (optional)\n\tdays > (optional)\n}" + "description": "This trigger is deprecated in favor of has_character_flag (which does the same)has a character flag been setCheck flag val date set and days since set.\nExample: has_unit_leader_flag = test_flag\nhas_unit_leader_flag = { \n\tflag = (mandatory)\n\tvalue < (optional)\n\tdate > (optional)\n\tdays > (optional)\n}" }, "has_decision": { "supported_scope": ["COUNTRY"], @@ -2939,11 +3249,11 @@ }, "is_fully_controlled_by": { "supported_scope": ["STATE"], - "supported_target": ["any"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "Checks if state is fully controlled by specified tag" }, "has_ability": { - "supported_scope": ["UNIT_LEADER"], + "supported_scope": ["CHARACTER"], "supported_target": ["any"], "description": "does unit leader have the abilityCheck if a unit leader has the ability.\nExample: has_ability = force_attack" }, @@ -2953,12 +3263,12 @@ "description": "Checks if a variable exists in a scope" }, "has_id": { - "supported_scope": ["UNIT_LEADER"], + "supported_scope": ["CHARACTER"], "supported_target": ["none"], "description": "check unit leader has specified ID. Don't localize this. Tooltip only for debug." }, "can_select_trait": { - "supported_scope": ["UNIT_LEADER", "COMBATANT"], + "supported_scope": ["CHARACTER", "COMBATANT"], "supported_target": ["none"], "description": "check if leader can select a trait" }, @@ -3018,7 +3328,7 @@ "description": "Checks if a there is any border wars for country/state" }, "is_border_war": { - "supported_scope": ["UNIT_LEADER", "COMBATANT"], + "supported_scope": ["CHARACTER", "COMBATANT"], "supported_target": ["any"], "description": "Checks if a the combatant or leader has a border war" }, @@ -3033,37 +3343,37 @@ "description": "Checks if a there is a border against a state/country" }, "average_stats": { - "supported_scope": ["UNIT_LEADER", "COMBATANT"], + "supported_scope": ["CHARACTER", "COMBATANT"], "supported_target": ["none"], "description": "Compares the average stats for a unit leader.\nExample: average_stats > 10" }, "attack_skill_level": { - "supported_scope": ["UNIT_LEADER", "COMBATANT"], + "supported_scope": ["CHARACTER", "COMBATANT"], "supported_target": ["none"], "description": "Compares attack skill level of a unit leader.\nExample: attack_skill_level > 5" }, "defense_skill_level": { - "supported_scope": ["UNIT_LEADER", "COMBATANT"], + "supported_scope": ["CHARACTER", "COMBATANT"], "supported_target": ["none"], "description": "Compares defense skill level of a unit leader.\nExample: defense_skill_level > 5" }, "logistics_skill_level": { - "supported_scope": ["UNIT_LEADER", "COMBATANT"], + "supported_scope": ["CHARACTER", "COMBATANT"], "supported_target": ["none"], "description": "Compares logistics skill level of a unit leader.\nExample: logistics_skill_level > 5" }, "planning_skill_level": { - "supported_scope": ["UNIT_LEADER", "COMBATANT"], + "supported_scope": ["CHARACTER", "COMBATANT"], "supported_target": ["none"], "description": "Compares planning skill level of a unit leader.\nExample: planning_skill_level > 5" }, "is_leading_army_group": { - "supported_scope": ["UNIT_LEADER"], + "supported_scope": ["CHARACTER"], "supported_target": ["none"], "description": "is_leading_army_group = yes/no - Checks if the current unit leader is leading an army group (not single army)" }, "is_leading_army": { - "supported_scope": ["UNIT_LEADER"], + "supported_scope": ["CHARACTER"], "supported_target": ["none"], "description": "is_leading_army = yes/no - Checks if the current unit leader is leading a single army (not army group)" }, @@ -3098,22 +3408,22 @@ "description": "Checks for amount manpower currently the target state with option to specify a type.\nExample:\narmy_manpower_in_state = {\n\tstate = (variables supported)\n\tamount < (variables supported)\n\ttype > (armor, infantry, etc.)" }, "is_exiled_leader": { - "supported_scope": ["UNIT_LEADER"], + "supported_scope": ["CHARACTER"], "supported_target": ["none"], "description": "Checks if scope leader is from an exiled government. is_exiled_leader = yes" }, "is_exiled_in": { "supported_scope": ["COUNTRY"], - "supported_target": ["any"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "Checks if scope country is a government in exile in target tag. is_exiled_in = ENG" }, "is_hosting_exile": { "supported_scope": ["COUNTRY"], - "supported_target": ["any"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "Checks if scope country is hosting target tag as an exile. is_hosting_exile = FRA" }, "is_exiled_leader_from": { - "supported_scope": ["UNIT_LEADER"], + "supported_scope": ["CHARACTER"], "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "Checks if scope leader is from specified exiled government. is_exiled_leader_from = FRA" }, @@ -3154,7 +3464,7 @@ }, "has_subject": { "supported_scope": ["COUNTRY"], - "supported_target": ["any"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "Checks if the country has for subject the given country" }, "has_game_rule": { @@ -3220,7 +3530,7 @@ "has_country_leader_with_trait": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "check if current country has specified trait.\nhas_country_leader_with_trait = big_fat_idiot" + "description": "check if current country leader has specified trait.\nhas_country_leader_with_trait = big_fat_idiot" }, "has_legitimacy": { "supported_scope": ["COUNTRY"], @@ -3248,12 +3558,12 @@ "description": "Check the amount of casualties in thousands a country has suffered in all of it's wars" }, "meta_trigger": { - "supported_scope": ["STATE", "COUNTRY", "UNIT_LEADER", "COMBATANT", "ACE", "STRATEGIC_REGION", "OPERATION"], + "supported_scope": ["STATE", "COUNTRY", "CHARACTER", "COMBATANT", "ACE", "STRATEGIC_REGION", "OPERATION"], "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "meta triggers can be used for building triggers from strings and running them. following example will test if Germany has 42 pp:\nmeta_trigger = {\n text = {\n [COUNTRY] = {\n political_power > [POW]\n }\n }\n COUNTRY = \"GER\"\n POW = 42\n debug = no #set to yes if you want to see what game actually executes\n}\n" }, "has_dynamic_modifier": { - "supported_scope": ["STATE", "COUNTRY", "UNIT_LEADER"], + "supported_scope": ["STATE", "COUNTRY", "CHARACTER"], "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "Checks if scope has a dynamic modifier.\nhas_dynamic_modifier = {\n modifier = dynamic_modifier_name\n scope = GER #optional, if the original modifier has been targeted\n}\n" }, @@ -3344,7 +3654,7 @@ }, "occupied_country_tag": { "supported_scope": ["STATE"], - "supported_target": ["any"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "compares occupied country that creates resistance to a tag. Example: occupied_country_tag = ITA" }, "resistance_target": { @@ -3404,7 +3714,7 @@ }, "is_ally_with": { "supported_scope": ["COUNTRY"], - "supported_target": ["any"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "checks if a country is ally with another country. will check if two countries are same/in same faction/has subject master relation\nExample: is_ally_with = ITA \n" }, "get_highest_scored_country_temp": { @@ -3472,8 +3782,13 @@ "supported_target": ["none"], "description": "Checks the number of upgrade done in the intelligence agency. \nagency_upgrade_number > 4" }, + "is_dynamic_country": { + "supported_scope": ["COUNTRY"], + "supported_target": ["any"], + "description": "returns true if the country is a dynamic country (tag is D01-D50)" + }, "operative_leader_mission": { - "supported_scope": ["UNIT_LEADER"], + "supported_scope": ["CHARACTER"], "supported_target": ["none"], "description": "Checks whether the operative is performing the given mission:\noperative_leader_mission = build_intel_network" }, @@ -3493,7 +3808,7 @@ "description": "check if any operatives meets the trigger. tooltip=key can be defined to override title" }, "is_operative_captured": { - "supported_scope": ["UNIT_LEADER"], + "supported_scope": ["CHARACTER"], "supported_target": ["none"], "description": "Checks whether the operative has the matching captured status\n" }, @@ -3623,7 +3938,7 @@ "description": "Number of researched technologies" }, "operative_leader_operation": { - "supported_scope": ["UNIT_LEADER"], + "supported_scope": ["CHARACTER"], "supported_target": ["none"], "description": "Checks whether the operative is performing the given operation:\noperative_leader_operation = operation_rescue_operative" }, @@ -3633,7 +3948,7 @@ "description": "checks if the country could potentially declare a war on the target ( according to game rules, relationship, etc... ). Example can_declare_war_on = GER" }, "has_nationality": { - "supported_scope": ["UNIT_LEADER"], + "supported_scope": ["CHARACTER"], "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "Checks whether the operative has the specified nationality.\nNOTE: this is invalid on non-operatives.\nExamples:\nhas_nationality = GER\n" }, @@ -3642,13 +3957,178 @@ "supported_target": ["none"], "description": "checks network national coverage you have over a country. Example: \nnetwork_national_coverage = { \n target = GER\n value > 0.5\n} \n" }, + "any_character": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "check if any character meets the trigger. tooltip=key can be defined to override title" + }, + "all_character": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "check if all characters meets the trigger. tooltip=key can be defined to override title" + }, + "is_army_chief": { + "supported_scope": ["CHARACTER"], + "supported_target": ["none"], + "description": "is_army_chief = yes/no - Checks if the current character is an army chief" + }, + "is_advisor": { + "supported_scope": ["CHARACTER"], + "supported_target": ["none"], + "description": "is_advisor = yes/no - Checks if the current character is an advisor" + }, + "is_country_leader": { + "supported_scope": ["CHARACTER"], + "supported_target": ["none"], + "description": "is_country_leader = yes/no - Checks if the current character is a country leader" + }, + "is_unit_leader": { + "supported_scope": ["CHARACTER"], + "supported_target": ["none"], + "description": "is_unit_leader = yes/no - Checks if the current character is a unit leader" + }, + "is_army_leader": { + "supported_scope": ["CHARACTER"], + "supported_target": ["none"], + "description": "is_army_leader = yes/no - Checks if the current character is a army leader" + }, + "is_corps_commander": { + "supported_scope": ["CHARACTER"], + "supported_target": ["none"], + "description": "is_corps_commander = yes/no - Checks if the current character is a corps commander" + }, + "is_character": { + "supported_scope": ["CHARACTER"], + "supported_target": ["none"], + "description": "Checks whether the character matches the character ID" + }, + "is_navy_leader": { + "supported_scope": ["CHARACTER"], + "supported_target": ["none"], + "description": "is_navy_leader = yes/no - Checks if the current character is a navy leader" + }, + "is_operative": { + "supported_scope": ["CHARACTER"], + "supported_target": ["none"], + "description": "is_operative = yes/no - Checks if the current character is an operative" + }, + "is_political_advisor": { + "supported_scope": ["CHARACTER"], + "supported_target": ["none"], + "description": "is_political_advisor = yes/no - Checks if the current character is a political advisor" + }, + "is_theorist": { + "supported_scope": ["CHARACTER"], + "supported_target": ["none"], + "description": "is_theorist = yes/no - Checks if the current character is a theorist" + }, + "is_navy_chief": { + "supported_scope": ["CHARACTER"], + "supported_target": ["none"], + "description": "_is_navy_chief_ = yes/no - Checks if the current character is a navy chief" + }, + "is_air_chief": { + "supported_scope": ["CHARACTER"], + "supported_target": ["none"], + "description": "_is_air_chief = yes/no - Checks if the current character is an air chief" + }, + "is_high_command": { + "supported_scope": ["CHARACTER"], + "supported_target": ["none"], + "description": "_is_high_command_ = yes/no - Checks if the current character is in high command" + }, + "has_army_ledger": { + "supported_scope": ["CHARACTER"], + "supported_target": ["none"], + "description": "has_army_ledger = yes/no - Checks if the current character has an army ledger" + }, + "has_navy_ledger": { + "supported_scope": ["CHARACTER"], + "supported_target": ["none"], + "description": "has_navy_ledger = yes/no - Checks if the current character has a navy ledger" + }, + "has_air_ledger": { + "supported_scope": ["CHARACTER"], + "supported_target": ["none"], + "description": "has_air_ledger = yes/no - Checks if the current character has an air ledger" + }, + "is_character_slot": { + "supported_scope": ["CHARACTER"], + "supported_target": ["none"], + "description": "is_character_slot = 'character_slot_name' - Checks if the current character is in the character slot" + }, + "can_be_country_leader": { + "supported_scope": ["COUNTRY", "CHARACTER"], + "supported_target": ["none"], + "description": "Returns true if specified character can be country leader.\n\nExample:\ncan_be_country_leader = GER_erwin_rommelcan_be_country_leader = yes" + }, + "has_character": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "Returns true if scoped country has character.\n\nExample:\nhas_character = GER_erwin_rommel" + }, "has_allowed_idea_with_traits": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "Checks if country has allowed ideas with specific traits more than limit. Example: \nhas_available_idea_with_traits = { \n\tidea = head_of_intelligence # trait names. can be a list of traits in { } \n\tlimit = 1 \n\tignore = generic_head_of_intelligence # if specified, these ideas will be ignored. can be a list of ideas in { }\n} \n" - } - }, - "modifiers": [{ + "description": "Checks if country has allowed ideas with specific traits more than limit. Example: \nhas_available_idea_with_traits = { \n\tidea = head_of_intelligence # trait names. can be a list of traits in { } \n\tlimit = 1 \n\tcharacters = yes/no - only runs this trigger on characters \n\tignore = generic_head_of_intelligence # if specified, these ideas will be ignored. can be a list of ideas in { }\n} \n" + }, + "is_leading_volunteer_group_with_original_country": { + "supported_scope": ["CHARACTER", "COMBATANT"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "is_leading_volunteer_group_with_original_country = FRA" + }, + "is_leading_volunteer_group": { + "supported_scope": ["CHARACTER", "COMBATANT"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "is_leading_volunteer_group = FRA" + }, + "has_design_based_on": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "check if country has a buildable non-obsolete design based on an archetype" + }, + "has_terrain": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "Checks if a country has any province of the specified terrain type.\nExample: has_terrain = mountain" + }, + "has_character_flag": { + "supported_scope": ["CHARACTER"], + "supported_target": ["any"], + "description": "has a character flag been setCheck flag val date set and days since set.\nExample: has_unit_leader_flag = test_flag\nhas_character_flag = { \n\tflag = (mandatory)\n\tvalue < (optional)\n\tdate > (optional)\n\tdays > (optional)\n}" + }, + "any_core_state": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "Check if any of the country core states for scope meets the trigger. tooltip=key can be defined to override title" + }, + "all_core_state": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "Check if all of the country core states for the scope meets the trigger. tooltip=key can be defined to override title" + }, + "has_ideology": { + "supported_scope": ["CHARACTER"], + "supported_target": ["none"], + "description": "has_ideology = stalinism - Checks if the current character has a country leader role matching the sub-ideology" + }, + "not_already_hired_except_as": { + "supported_scope": ["CHARACTER"], + "supported_target": ["none"], + "description": "not_already_hired_except_as = - For characters with several advisor roles, checks if the current character is already assigned in another advisor slot.\nexample: let's say a character can be a political advisor and a theorist. But they should only be hired in one role, never both at the same time.\nthen you may set in the advisor available trigger :\n\tadvisor = {\n\t\tslot = political_advisor\n\t\tavailable = { not_already_hired_except_as = political_advisor } \n\t\t...\n\t}\n\tadvisor = {\n\t\tslot = theorist\n\t\tavailable = { not_already_hired_except_as = theorist } \n\t\t...\n\t}\n" + }, + "has_country_leader_ideology": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "Checks the Ideology of the active country leader" + }, + "has_ideology_group": { + "supported_scope": ["CHARACTER"], + "supported_target": ["none"], + "description": "has_ideology_group = communism - Checks if the current character has a country leader role matching the ideology group" + } + }, + "modifiers": [{ "name": "air_detection", "type": "number", "decimal_places": 1, @@ -3728,6 +4208,21 @@ "type": "number", "decimal_places": 1, "categories": ["air"] + }, { + "name": "air_manpower_requirement_factor", + "type": "number", + "decimal_places": 2, + "categories": ["air"] + }, { + "name": "air_close_air_support_org_damage_factor", + "type": "number", + "decimal_places": 0, + "categories": ["air"] + }, { + "name": "air_advisor_cost_factor", + "type": "number", + "decimal_places": 0, + "categories": ["air"] }, { "name": "naval_strike", "type": "number", @@ -3768,6 +4263,11 @@ "type": "number", "decimal_places": 0, "categories": ["naval", "unit_leader"] + }, { + "name": "navy_advisor_cost_factor", + "type": "number", + "decimal_places": 0, + "categories": ["naval"] }, { "name": "transport_capacity", "type": "number", @@ -3783,6 +4283,11 @@ "type": "number", "decimal_places": 0, "categories": ["naval", "unit_leader", "aggressive"] + }, { + "name": "carrier_night_traffic", + "type": "number", + "decimal_places": 2, + "categories": ["air"] }, { "name": "sortie_efficiency", "type": "number", @@ -3993,6 +4498,11 @@ "type": "number", "decimal_places": 1, "categories": ["army", "aggressive"] + }, { + "name": "org_loss_at_low_org_factor", + "type": "number", + "decimal_places": 2, + "categories": ["army"] }, { "name": "attrition", "type": "number", @@ -4038,6 +4548,21 @@ "type": "number", "decimal_places": 0, "categories": ["naval", "unit_leader", "defensive"] + }, { + "name": "naval_retreat_chance_after_initial_combat", + "type": "number", + "decimal_places": 0, + "categories": ["naval", "unit_leader", "defensive"] + }, { + "name": "naval_retreat_speed_after_initial_combat", + "type": "number", + "decimal_places": 0, + "categories": ["naval", "unit_leader", "defensive"] + }, { + "name": "naval_enemy_positioning_in_initial_attack", + "type": "number", + "decimal_places": 0, + "categories": ["naval", "unit_leader", "aggressive"] }, { "name": "naval_retreat_speed", "type": "number", @@ -4096,7 +4621,7 @@ }, { "name": "consumer_goods_factor", "type": "number", - "decimal_places": 0, + "decimal_places": 1, "categories": ["country", "war_production"] }, { "name": "civilian_factory_use", @@ -4137,6 +4662,26 @@ "type": "number", "decimal_places": 0, "categories": ["air"] + }, { + "name": "air_ace_bonuses_factor", + "type": "number", + "decimal_places": 0, + "categories": ["air"] + }, { + "name": "air_untrained_pilots_penalty_factor", + "type": "number", + "decimal_places": 0, + "categories": ["air"] + }, { + "name": "air_home_defence_factor", + "type": "number", + "decimal_places": 0, + "categories": ["air"] + }, { + "name": "air_power_projection_factor", + "type": "number", + "decimal_places": 0, + "categories": ["air"] }, { "name": "air_strategic_bomber_attack_factor", "type": "number", @@ -4267,6 +4812,11 @@ "type": "number", "decimal_places": 2, "categories": ["army"] + }, { + "name": "army_strength_factor", + "type": "number", + "decimal_places": 2, + "categories": ["army"] }, { "name": "dig_in_speed", "type": "number", @@ -4867,6 +5417,16 @@ "type": "number", "decimal_places": 2, "categories": ["air"] + }, { + "name": "naval_night_attack", + "type": "number", + "decimal_places": 1, + "categories": ["naval", "aggressive"] + }, { + "name": "night_spotting_chance", + "type": "number", + "decimal_places": 1, + "categories": ["naval"] }, { "name": "pocket_penalty", "type": "number", @@ -4887,6 +5447,11 @@ "type": "number", "decimal_places": 1, "categories": ["naval", "unit_leader", "aggressive"] + }, { + "name": "air_carrier_night_penalty_reduction_factor", + "type": "number", + "decimal_places": 2, + "categories": ["air"] }, { "name": "convoy_escort_efficiency", "type": "number", @@ -5215,6 +5780,11 @@ "type": "number", "decimal_places": 0, "categories": ["country"] + }, { + "name": "command_abilities_cost_factor", + "type": "number", + "decimal_places": 2, + "categories": ["country"] }, { "name": "acclimatization_cold_climate_gain_factor", "type": "number", @@ -5225,6 +5795,11 @@ "type": "number", "decimal_places": 1, "categories": ["army"] + }, { + "name": "army_advisor_cost_factor", + "type": "number", + "decimal_places": 0, + "categories": ["army"] }, { "name": "army_leader_start_attack_level", "type": "number", @@ -5648,6 +6223,11 @@ "type": "number", "decimal_places": 1, "categories": ["naval", "unit_leader"] + }, { + "name": "screening_without_screens", + "type": "number", + "decimal_places": 1, + "categories": ["naval", "country"] }, { "name": "exile_manpower_factor", "type": "number", @@ -5833,6 +6413,11 @@ "type": "number", "decimal_places": 2, "categories": ["state", "army"] + }, { + "name": "army_attack_speed_factor", + "type": "number", + "decimal_places": 2, + "categories": ["army"] }, { "name": "disable_strategic_redeployment", "type": "bool", @@ -6194,1940 +6779,162 @@ "decimal_places": 0, "categories": ["country"] }, { - "name": "operation_outcome", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_cost", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_infiltrate_outcome", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "democratic_drift", - "type": "number", - "decimal_places": 2, - "categories": ["politics"] - }, { - "name": "democratic_acceptance", - "type": "number", - "decimal_places": 0, - "categories": ["politics"] - }, { - "name": "communism_drift", - "type": "number", - "decimal_places": 2, - "categories": ["politics"] - }, { - "name": "communism_acceptance", + "name": "supply_factor", "type": "number", "decimal_places": 0, - "categories": ["politics"] - }, { - "name": "fascism_drift", - "type": "number", - "decimal_places": 2, - "categories": ["politics"] + "categories": ["country", "state"] }, { - "name": "fascism_acceptance", + "name": "supply_node_range", "type": "number", "decimal_places": 0, - "categories": ["politics"] + "categories": ["country"] }, { - "name": "neutrality_drift", + "name": "truck_attrition", "type": "number", "decimal_places": 2, - "categories": ["politics"] - }, { - "name": "neutrality_acceptance", - "type": "number", - "decimal_places": 0, - "categories": ["politics"] - }, { - "name": "production_cost_max_convoy", - "type": "number", - "decimal_places": 0, - "categories": ["naval"] - }, { - "name": "production_cost_max_ship_hull_carrier", - "type": "number", - "decimal_places": 0, - "categories": ["naval"] - }, { - "name": "production_cost_max_ship_hull_cruiser", - "type": "number", - "decimal_places": 0, - "categories": ["naval"] - }, { - "name": "production_cost_max_ship_hull_heavy", - "type": "number", - "decimal_places": 0, - "categories": ["naval"] - }, { - "name": "production_cost_max_ship_hull_light", - "type": "number", - "decimal_places": 0, - "categories": ["naval"] - }, { - "name": "production_cost_max_ship_hull_submarine", - "type": "number", - "decimal_places": 0, - "categories": ["naval"] + "categories": ["country", "state"] }, { - "name": "experience_gain_fighter_training_factor", + "name": "truck_attrition_factor", "type": "number", "decimal_places": 0, - "categories": ["naval", "country"] + "categories": ["country", "state"] }, { - "name": "experience_gain_fighter_combat_factor", + "name": "floating_harbor_supply", "type": "number", "decimal_places": 0, - "categories": ["naval", "country"] + "categories": ["country"] }, { - "name": "experience_gain_scout_plane_training_factor", + "name": "floating_harbor_range", "type": "number", "decimal_places": 0, - "categories": ["naval", "country"] + "categories": ["country"] }, { - "name": "experience_gain_scout_plane_combat_factor", + "name": "floating_harbor_duration", "type": "number", "decimal_places": 0, - "categories": ["naval", "country"] + "categories": ["country"] }, { - "name": "experience_gain_cv_fighter_training_factor", + "name": "army_attack_against_major_factor", "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] + "decimal_places": 1, + "categories": ["army", "aggressive"] }, { - "name": "experience_gain_cv_fighter_combat_factor", + "name": "army_breakthrough_against_major_factor", "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] + "decimal_places": 1, + "categories": ["army", "defensive"] }, { - "name": "experience_gain_heavy_fighter_training_factor", + "name": "army_defence_against_major_factor", "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] + "decimal_places": 1, + "categories": ["army", "defensive"] }, { - "name": "experience_gain_heavy_fighter_combat_factor", + "name": "army_attack_against_minor_factor", "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] + "decimal_places": 1, + "categories": ["army", "aggressive"] }, { - "name": "experience_gain_jet_fighter_training_factor", + "name": "army_defence_against_minor_factor", "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] + "decimal_places": 1, + "categories": ["army", "defensive"] }, { - "name": "experience_gain_jet_fighter_combat_factor", + "name": "army_breakthrough_against_minor_factor", "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] + "decimal_places": 1, + "categories": ["army", "defensive"] }, { - "name": "experience_gain_cas_training_factor", + "name": "air_doctrine_cost_factor", "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] + "decimal_places": 2, + "categories": ["country"] }, { - "name": "experience_gain_cas_combat_factor", + "name": "land_doctrine_cost_factor", "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] + "decimal_places": 2, + "categories": ["country"] }, { - "name": "experience_gain_cv_cas_training_factor", + "name": "naval_doctrine_cost_factor", "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] + "decimal_places": 2, + "categories": ["country"] }, { - "name": "experience_gain_cv_cas_combat_factor", + "name": "navy_weather_penalty", "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] + "decimal_places": 2, + "categories": ["air"] }, { - "name": "experience_gain_nav_bomber_training_factor", + "name": "assign_army_leader_cp_cost", "type": "number", "decimal_places": 0, - "categories": ["naval", "country"] + "categories": ["country", "army"] }, { - "name": "experience_gain_nav_bomber_combat_factor", + "name": "assign_navy_leader_cp_cost", "type": "number", "decimal_places": 0, "categories": ["naval", "country"] }, { - "name": "experience_gain_cv_nav_bomber_training_factor", + "name": "intel_from_combat_factor", "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] + "decimal_places": 2, + "categories": ["country"] }, { - "name": "experience_gain_cv_nav_bomber_combat_factor", + "name": "exiled_government_weekly_manpower", "type": "number", "decimal_places": 0, - "categories": ["naval", "country"] + "categories": ["country", "war_production"] }, { - "name": "experience_gain_tac_bomber_training_factor", + "name": "choose_preferred_tactics_cost", "type": "number", "decimal_places": 0, - "categories": ["naval", "country"] + "categories": ["country"] }, { - "name": "experience_gain_tac_bomber_combat_factor", + "name": "railway_gun_bombardment_factor", "type": "number", "decimal_places": 0, - "categories": ["naval", "country"] + "categories": ["country"] }, { - "name": "experience_gain_jet_tac_bomber_training_factor", + "name": "unit_leader_as_advisor_cp_cost_factor", "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] + "decimal_places": 1, + "categories": ["unit_leader", "country"] }, { - "name": "experience_gain_jet_tac_bomber_combat_factor", + "name": "initiative_factor", "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] + "decimal_places": 1, + "categories": ["unit_leader", "country"] }, { - "name": "experience_gain_strat_bomber_training_factor", + "name": "naval_invasion_planning_bonus_speed", "type": "number", "decimal_places": 0, - "categories": ["naval", "country"] + "categories": ["army", "aggressive"] }, { - "name": "experience_gain_strat_bomber_combat_factor", + "name": "terrain_trait_xp_gain_factor", "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] + "decimal_places": 2, + "categories": ["naval", "country", "army"] }, { - "name": "experience_gain_jet_strat_bomber_training_factor", + "name": "supply_combat_penalties_on_core_factor", "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] + "decimal_places": 1, + "categories": ["army", "aggressive"] }, { - "name": "experience_gain_jet_strat_bomber_combat_factor", + "name": "coordination_bonus", "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_transport_plane_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_transport_plane_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_rocket_interceptor_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_rocket_interceptor_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_guided_missile_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_guided_missile_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_suicide_craft_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_suicide_craft_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_amphibious_armor_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_amphibious_armor_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_amphibious_mechanized_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_amphibious_mechanized_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_anti_air_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_anti_air_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_anti_air_brigade_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_anti_air_brigade_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_mot_anti_air_brigade_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_mot_anti_air_brigade_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_anti_tank_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_anti_tank_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_anti_tank_brigade_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_anti_tank_brigade_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_mot_anti_tank_brigade_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_mot_anti_tank_brigade_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_armored_car_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_armored_car_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_artillery_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_artillery_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_rocket_artillery_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_rocket_artillery_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_artillery_brigade_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_artillery_brigade_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_mot_artillery_brigade_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_mot_artillery_brigade_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_rocket_artillery_brigade_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_rocket_artillery_brigade_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_mot_rocket_artillery_brigade_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_mot_rocket_artillery_brigade_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_motorized_rocket_brigade_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_motorized_rocket_brigade_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_battle_cruiser_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_battle_cruiser_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_battleship_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_battleship_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_carrier_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_carrier_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_cavalry_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_cavalry_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_destroyer_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_destroyer_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_engineer_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_engineer_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_field_hospital_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_field_hospital_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_heavy_armor_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_heavy_armor_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_heavy_cruiser_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_heavy_cruiser_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_infantry_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_infantry_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_bicycle_battalion_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_bicycle_battalion_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_marine_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_marine_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_mountaineers_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_mountaineers_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_paratrooper_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_paratrooper_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_motorized_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_motorized_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_mechanized_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_mechanized_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_fake_intel_unit_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_fake_intel_unit_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_light_armor_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_light_armor_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_light_cruiser_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_light_cruiser_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_logistics_company_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_logistics_company_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_maintenance_company_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_maintenance_company_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_medium_armor_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_medium_armor_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_military_police_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_military_police_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_modern_armor_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_modern_armor_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_recon_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_recon_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_mot_recon_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_mot_recon_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_armored_car_recon_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_armored_car_recon_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_light_tank_recon_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_light_tank_recon_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_signal_company_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_signal_company_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_light_sp_anti_air_brigade_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_light_sp_anti_air_brigade_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_medium_sp_anti_air_brigade_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_medium_sp_anti_air_brigade_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_heavy_sp_anti_air_brigade_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_heavy_sp_anti_air_brigade_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_super_heavy_sp_anti_air_brigade_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_super_heavy_sp_anti_air_brigade_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_modern_sp_anti_air_brigade_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_modern_sp_anti_air_brigade_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_light_sp_artillery_brigade_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_light_sp_artillery_brigade_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_medium_sp_artillery_brigade_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_medium_sp_artillery_brigade_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_heavy_sp_artillery_brigade_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_heavy_sp_artillery_brigade_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_super_heavy_sp_artillery_brigade_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_super_heavy_sp_artillery_brigade_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_modern_sp_artillery_brigade_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_modern_sp_artillery_brigade_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_submarine_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_submarine_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_super_heavy_armor_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_super_heavy_armor_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_light_tank_destroyer_brigade_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_light_tank_destroyer_brigade_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_medium_tank_destroyer_brigade_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_medium_tank_destroyer_brigade_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_heavy_tank_destroyer_brigade_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_heavy_tank_destroyer_brigade_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_super_heavy_tank_destroyer_brigade_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_super_heavy_tank_destroyer_brigade_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_modern_tank_destroyer_brigade_training_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "experience_gain_modern_tank_destroyer_brigade_combat_factor", - "type": "number", - "decimal_places": 0, - "categories": ["naval", "country"] - }, { - "name": "state_resource_oil", - "type": "number", - "decimal_places": 0, - "categories": ["state"] - }, { - "name": "temporary_state_resource_oil", - "type": "number", - "decimal_places": 0, - "categories": ["state"] - }, { - "name": "state_resource_cost_oil", - "type": "number", - "decimal_places": 0, - "categories": ["state"] - }, { - "name": "country_resource_oil", - "type": "number", - "decimal_places": 0, - "categories": ["state"] - }, { - "name": "country_resource_cost_oil", - "type": "number", - "decimal_places": 0, - "categories": ["state"] - }, { - "name": "state_resource_aluminium", - "type": "number", - "decimal_places": 0, - "categories": ["state"] - }, { - "name": "temporary_state_resource_aluminium", - "type": "number", - "decimal_places": 0, - "categories": ["state"] - }, { - "name": "state_resource_cost_aluminium", - "type": "number", - "decimal_places": 0, - "categories": ["state"] - }, { - "name": "country_resource_aluminium", - "type": "number", - "decimal_places": 0, - "categories": ["state"] - }, { - "name": "country_resource_cost_aluminium", - "type": "number", - "decimal_places": 0, - "categories": ["state"] - }, { - "name": "state_resource_rubber", - "type": "number", - "decimal_places": 0, - "categories": ["state"] - }, { - "name": "temporary_state_resource_rubber", - "type": "number", - "decimal_places": 0, - "categories": ["state"] - }, { - "name": "state_resource_cost_rubber", - "type": "number", - "decimal_places": 0, - "categories": ["state"] - }, { - "name": "country_resource_rubber", - "type": "number", - "decimal_places": 0, - "categories": ["state"] - }, { - "name": "country_resource_cost_rubber", - "type": "number", - "decimal_places": 0, - "categories": ["state"] - }, { - "name": "state_resource_tungsten", - "type": "number", - "decimal_places": 0, - "categories": ["state"] - }, { - "name": "temporary_state_resource_tungsten", - "type": "number", - "decimal_places": 0, - "categories": ["state"] - }, { - "name": "state_resource_cost_tungsten", - "type": "number", - "decimal_places": 0, - "categories": ["state"] - }, { - "name": "country_resource_tungsten", - "type": "number", - "decimal_places": 0, - "categories": ["state"] - }, { - "name": "country_resource_cost_tungsten", - "type": "number", - "decimal_places": 0, - "categories": ["state"] - }, { - "name": "state_resource_steel", - "type": "number", - "decimal_places": 0, - "categories": ["state"] - }, { - "name": "temporary_state_resource_steel", - "type": "number", - "decimal_places": 0, - "categories": ["state"] - }, { - "name": "state_resource_cost_steel", - "type": "number", - "decimal_places": 0, - "categories": ["state"] - }, { - "name": "country_resource_steel", - "type": "number", - "decimal_places": 0, - "categories": ["state"] - }, { - "name": "country_resource_cost_steel", - "type": "number", - "decimal_places": 0, - "categories": ["state"] - }, { - "name": "state_resource_chromium", - "type": "number", - "decimal_places": 0, - "categories": ["state"] - }, { - "name": "temporary_state_resource_chromium", - "type": "number", - "decimal_places": 0, - "categories": ["state"] - }, { - "name": "state_resource_cost_chromium", - "type": "number", - "decimal_places": 0, - "categories": ["state"] - }, { - "name": "country_resource_chromium", - "type": "number", - "decimal_places": 0, - "categories": ["state"] - }, { - "name": "country_resource_cost_chromium", - "type": "number", - "decimal_places": 0, - "categories": ["state"] - }, { - "name": "production_speed_infrastructure_factor", - "type": "number", - "decimal_places": 2, - "categories": ["country"] - }, { - "name": "state_production_speed_infrastructure_factor", - "type": "number", - "decimal_places": 2, - "categories": ["state"] - }, { - "name": "repair_speed_infrastructure_factor", - "type": "number", - "decimal_places": 2, - "categories": ["country"] - }, { - "name": "state_repair_speed_infrastructure_factor", - "type": "number", - "decimal_places": 2, - "categories": ["state"] - }, { - "name": "production_speed_arms_factory_factor", - "type": "number", - "decimal_places": 2, - "categories": ["country"] - }, { - "name": "state_production_speed_arms_factory_factor", - "type": "number", - "decimal_places": 2, - "categories": ["state"] - }, { - "name": "repair_speed_arms_factory_factor", - "type": "number", - "decimal_places": 2, - "categories": ["country"] - }, { - "name": "state_repair_speed_arms_factory_factor", - "type": "number", - "decimal_places": 2, - "categories": ["state"] - }, { - "name": "production_speed_industrial_complex_factor", - "type": "number", - "decimal_places": 2, - "categories": ["country"] - }, { - "name": "state_production_speed_industrial_complex_factor", - "type": "number", - "decimal_places": 2, - "categories": ["state"] - }, { - "name": "repair_speed_industrial_complex_factor", - "type": "number", - "decimal_places": 2, - "categories": ["country"] - }, { - "name": "state_repair_speed_industrial_complex_factor", - "type": "number", - "decimal_places": 2, - "categories": ["state"] - }, { - "name": "production_speed_air_base_factor", - "type": "number", - "decimal_places": 2, - "categories": ["country"] - }, { - "name": "state_production_speed_air_base_factor", - "type": "number", - "decimal_places": 2, - "categories": ["state"] - }, { - "name": "repair_speed_air_base_factor", - "type": "number", - "decimal_places": 2, - "categories": ["country"] - }, { - "name": "state_repair_speed_air_base_factor", - "type": "number", - "decimal_places": 2, - "categories": ["state"] - }, { - "name": "production_speed_naval_base_factor", - "type": "number", - "decimal_places": 2, - "categories": ["country"] - }, { - "name": "state_production_speed_naval_base_factor", - "type": "number", - "decimal_places": 2, - "categories": ["state"] - }, { - "name": "repair_speed_naval_base_factor", - "type": "number", - "decimal_places": 2, - "categories": ["country"] - }, { - "name": "state_repair_speed_naval_base_factor", - "type": "number", - "decimal_places": 2, - "categories": ["state"] - }, { - "name": "production_speed_bunker_factor", - "type": "number", - "decimal_places": 2, - "categories": ["country"] - }, { - "name": "state_production_speed_bunker_factor", - "type": "number", - "decimal_places": 2, - "categories": ["state"] - }, { - "name": "repair_speed_bunker_factor", - "type": "number", - "decimal_places": 2, - "categories": ["country"] - }, { - "name": "state_repair_speed_bunker_factor", - "type": "number", - "decimal_places": 2, - "categories": ["state"] - }, { - "name": "production_speed_coastal_bunker_factor", - "type": "number", - "decimal_places": 2, - "categories": ["country"] - }, { - "name": "state_production_speed_coastal_bunker_factor", - "type": "number", - "decimal_places": 2, - "categories": ["state"] - }, { - "name": "repair_speed_coastal_bunker_factor", - "type": "number", - "decimal_places": 2, - "categories": ["country"] - }, { - "name": "state_repair_speed_coastal_bunker_factor", - "type": "number", - "decimal_places": 2, - "categories": ["state"] - }, { - "name": "production_speed_dockyard_factor", - "type": "number", - "decimal_places": 2, - "categories": ["country"] - }, { - "name": "state_production_speed_dockyard_factor", - "type": "number", - "decimal_places": 2, - "categories": ["state"] - }, { - "name": "repair_speed_dockyard_factor", - "type": "number", - "decimal_places": 2, - "categories": ["country"] - }, { - "name": "state_repair_speed_dockyard_factor", - "type": "number", - "decimal_places": 2, - "categories": ["state"] - }, { - "name": "production_speed_anti_air_building_factor", - "type": "number", - "decimal_places": 2, - "categories": ["country"] - }, { - "name": "state_production_speed_anti_air_building_factor", - "type": "number", - "decimal_places": 2, - "categories": ["state"] - }, { - "name": "repair_speed_anti_air_building_factor", - "type": "number", - "decimal_places": 2, - "categories": ["country"] - }, { - "name": "state_repair_speed_anti_air_building_factor", - "type": "number", - "decimal_places": 2, - "categories": ["state"] - }, { - "name": "production_speed_synthetic_refinery_factor", - "type": "number", - "decimal_places": 2, - "categories": ["country"] - }, { - "name": "state_production_speed_synthetic_refinery_factor", - "type": "number", - "decimal_places": 2, - "categories": ["state"] - }, { - "name": "repair_speed_synthetic_refinery_factor", - "type": "number", - "decimal_places": 2, - "categories": ["country"] - }, { - "name": "state_repair_speed_synthetic_refinery_factor", - "type": "number", - "decimal_places": 2, - "categories": ["state"] - }, { - "name": "production_speed_fuel_silo_factor", - "type": "number", - "decimal_places": 2, - "categories": ["country"] - }, { - "name": "state_production_speed_fuel_silo_factor", - "type": "number", - "decimal_places": 2, - "categories": ["state"] - }, { - "name": "repair_speed_fuel_silo_factor", - "type": "number", - "decimal_places": 2, - "categories": ["country"] - }, { - "name": "state_repair_speed_fuel_silo_factor", - "type": "number", - "decimal_places": 2, - "categories": ["state"] - }, { - "name": "production_speed_radar_station_factor", - "type": "number", - "decimal_places": 2, - "categories": ["country"] - }, { - "name": "state_production_speed_radar_station_factor", - "type": "number", - "decimal_places": 2, - "categories": ["state"] - }, { - "name": "repair_speed_radar_station_factor", - "type": "number", - "decimal_places": 2, - "categories": ["country"] - }, { - "name": "state_repair_speed_radar_station_factor", - "type": "number", - "decimal_places": 2, - "categories": ["state"] - }, { - "name": "production_speed_rocket_site_factor", - "type": "number", - "decimal_places": 2, - "categories": ["country"] - }, { - "name": "state_production_speed_rocket_site_factor", - "type": "number", - "decimal_places": 2, - "categories": ["state"] - }, { - "name": "repair_speed_rocket_site_factor", - "type": "number", - "decimal_places": 2, - "categories": ["country"] - }, { - "name": "state_repair_speed_rocket_site_factor", - "type": "number", - "decimal_places": 2, - "categories": ["state"] - }, { - "name": "production_speed_nuclear_reactor_factor", - "type": "number", - "decimal_places": 2, - "categories": ["country"] - }, { - "name": "state_production_speed_nuclear_reactor_factor", - "type": "number", - "decimal_places": 2, - "categories": ["state"] - }, { - "name": "repair_speed_nuclear_reactor_factor", - "type": "number", - "decimal_places": 2, - "categories": ["country"] - }, { - "name": "state_repair_speed_nuclear_reactor_factor", - "type": "number", - "decimal_places": 2, - "categories": ["state"] - }, { - "name": "political_advisor_cost_factor", - "type": "number", - "decimal_places": 0, - "categories": ["country"] - }, { - "name": "army_chief_cost_factor", - "type": "number", - "decimal_places": 0, - "categories": ["country"] - }, { - "name": "air_chief_cost_factor", - "type": "number", - "decimal_places": 0, - "categories": ["country"] - }, { - "name": "navy_chief_cost_factor", - "type": "number", - "decimal_places": 0, - "categories": ["country"] - }, { - "name": "high_command_cost_factor", - "type": "number", - "decimal_places": 0, - "categories": ["country"] - }, { - "name": "theorist_cost_factor", - "type": "number", - "decimal_places": 0, - "categories": ["country"] - }, { - "name": "aircraft_manufacturer_cost_factor", - "type": "number", - "decimal_places": 0, - "categories": ["country"] - }, { - "name": "economy_cost_factor", - "type": "number", - "decimal_places": 0, - "categories": ["country"] - }, { - "name": "trade_laws_cost_factor", - "type": "number", - "decimal_places": 0, - "categories": ["country"] - }, { - "name": "country_cost_factor", - "type": "number", - "decimal_places": 0, - "categories": ["country"] - }, { - "name": "mobilization_laws_cost_factor", - "type": "number", - "decimal_places": 0, - "categories": ["country"] - }, { - "name": "industrial_concern_cost_factor", - "type": "number", - "decimal_places": 0, - "categories": ["country"] - }, { - "name": "tank_manufacturer_cost_factor", - "type": "number", - "decimal_places": 0, - "categories": ["country"] - }, { - "name": "naval_manufacturer_cost_factor", - "type": "number", - "decimal_places": 0, - "categories": ["country"] - }, { - "name": "materiel_manufacturer_cost_factor", - "type": "number", - "decimal_places": 0, - "categories": ["country"] - }, { - "name": "hidden_ideas_cost_factor", - "type": "number", - "decimal_places": 0, - "categories": ["country"] - }, { - "name": "operation_rescue_operative_cost", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_rescue_operative_outcome", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_rescue_operative_risk", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_infiltrate_risk", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_risk", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_infiltrate_cost", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_infiltrate_civilian_cost", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_infiltrate_civilian_outcome", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_infiltrate_civilian_risk", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_fake_intel_cost", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_fake_intel_outcome", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_fake_intel_risk", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_capture_cipher_cost", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_capture_cipher_outcome", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_capture_cipher_risk", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_infiltrate_armed_forces_army_cost", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_infiltrate_armed_forces_army_outcome", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_infiltrate_armed_forces_army_risk", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_infiltrate_armed_forces_navy_cost", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_infiltrate_armed_forces_navy_outcome", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_infiltrate_armed_forces_navy_risk", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_infiltrate_armed_forces_airforce_cost", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_infiltrate_armed_forces_airforce_outcome", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_infiltrate_armed_forces_airforce_risk", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_coup_cost", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_coup_government_cost", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_coup_government_outcome", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_coup_government_risk", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_boost_resistance_cost", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_boost_resistance_outcome", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_boost_resistance_risk", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_make_resistance_contacts_cost", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_make_resistance_contacts_outcome", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_make_resistance_contacts_risk", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_collaboration_government_cost", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_collaboration_government_outcome", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_collaboration_government_risk", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_coordinated_strike_cost", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_coordinated_strike_outcome", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_coordinated_strike_risk", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_steal_tech_risk", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_steal_tech_outcome", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_steal_tech_civilian_cost", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_steal_tech_civilian_outcome", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_steal_tech_civilian_risk", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "target_sabotage_risk", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "target_sabotage_cost", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_targeted_sabotage_industry_cost", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_targeted_sabotage_industry_outcome", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_targeted_sabotage_industry_risk", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_targeted_sabotage_infrastructure_cost", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_targeted_sabotage_infrastructure_outcome", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_targeted_sabotage_infrastructure_risk", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_targeted_sabotage_resources_cost", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_targeted_sabotage_resources_outcome", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_targeted_sabotage_resources_risk", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_steal_tech_army_cost", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_steal_tech_army_outcome", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_steal_tech_army_risk", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_steal_tech_navy_cost", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_steal_tech_navy_outcome", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_steal_tech_navy_risk", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_steal_tech_airforce_cost", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_steal_tech_airforce_outcome", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "operation_steal_tech_airforce_risk", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "FRA_instigate_workers_revolution_britain_cost", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "FRA_instigate_workers_revolution_britain_outcome", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "FRA_instigate_workers_revolution_britain_risk", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "FRA_instigate_workers_revolution_italy_cost", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "FRA_instigate_workers_revolution_italy_outcome", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "FRA_instigate_workers_revolution_italy_risk", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "FRA_instigate_workers_revolution_spain_cost", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "FRA_instigate_workers_revolution_spain_outcome", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "FRA_instigate_workers_revolution_spain_risk", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "FRA_instigate_workers_revolution_germany_cost", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "FRA_instigate_workers_revolution_germany_outcome", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "FRA_instigate_workers_revolution_germany_risk", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "FRA_coup_in_north_africa_cost", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "FRA_coup_in_north_africa_outcome", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "FRA_coup_in_north_africa_risk", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "FRA_coup_in_syria_cost", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "FRA_coup_in_syria_outcome", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "FRA_coup_in_syria_risk", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "FRA_coup_in_indochina_cost", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "FRA_coup_in_indochina_outcome", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "FRA_coup_in_indochina_risk", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "FRA_coup_in_central_africa_cost", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "FRA_coup_in_central_africa_outcome", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "FRA_coup_in_central_africa_risk", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "FRA_coup_in_west_africa_cost", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "FRA_coup_in_west_africa_outcome", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "FRA_coup_in_west_africa_risk", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "FRA_coup_in_madagascar_cost", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "FRA_coup_in_madagascar_outcome", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "FRA_coup_in_madagascar_risk", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "heavy_water_raid_cost", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "heavy_water_raid_outcome", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "heavy_water_raid_risk", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "bruneval_raid_cost", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "bruneval_raid_outcome", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "bruneval_raid_risk", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "capture_tito_cost", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "capture_tito_outcome", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "capture_tito_risk", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "rescue_mussolini_cost", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "rescue_mussolini_outcome", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] - }, { - "name": "rescue_mussolini_risk", - "type": "number", - "decimal_places": 0, - "categories": ["intelligence_agency"] + "decimal_places": 1, + "categories": ["army", "aggressive"] }], "dynamic_variables": { "global": { "year": { "description": "current year" }, - "operations": { - "description": "array of objects in operations database" + "province_controllers": { + "description": "get array of all province controllers. Example: province_controllers^4135" }, "majors": { "description": "get array of all majors (including non existing" }, - "technology": { - "description": "array of objects in technology database" - }, "num_days": { "description": "current total days" }, @@ -8137,16 +6944,8 @@ "countries": { "description": "get array of all countries (including non existing" }, - "ideology_groups": { - "description": "array of objects in ideology_groups database" - }, - "difficulty": { - "description": "check if the difficulty is above or below specified value 0-2 (difficulty enum). Example: difficulty > 0 (above easy)", - "is_trigger": true - }, - "threat": { - "description": "check the global threat value. 0-1 value", - "is_trigger": true + "states": { + "description": "get array of all states" } }, "country": { @@ -8165,10 +6964,6 @@ "overlord": { "description": "master of this subject" }, - "num_of_nukes": { - "description": "check amount of nukes", - "is_trigger": true - }, "command_power": { "description": "total command power of country" }, @@ -8184,12 +6979,6 @@ "manpower_k": { "description": "total manpower of country in thousands" }, - "num_battalions": { - "description": "number of battalions" - }, - "max_manpower": { - "description": "DEPRECATED, MAY OVERFLOW. maximum manpower of country" - }, "faction_members": { "description": "array of faction members" }, @@ -8202,22 +6991,21 @@ "num_owned_controlled_states": { "description": "number of owned and core states" }, - "agency_upgrade_number": { - "description": "Checks the number of upgrade done in the intelligence agency. \nagency_upgrade_number > 4", - "is_trigger": true - }, "max_available_manpower": { "description": "DEPRECATED, MAY OVERFLOW. total available manpower of country" }, - "ai_strategy_dont_defend_ally_borders": { - "description": "ai strategy value dont_defend_ally_borders against country. Example: GER.ai_strategy_dont_defend_ally_borders@ENG" - }, "max_available_manpower_k": { "description": "total available manpower of country in thousands" }, "opinion": { "description": "opinion of a country targeted on another one. example GER.opinion@ENG" }, + "num_battalions": { + "description": "number of battalions" + }, + "max_manpower": { + "description": "DEPRECATED, MAY OVERFLOW. maximum manpower of country" + }, "owned_states": { "description": "array of owned states" }, @@ -8230,43 +7018,24 @@ "army_experience": { "description": "army experience of a country" }, - "conscription_ratio": { - "description": "Checks conscription ratio of the country compared to target conscription ratio.\n", - "is_trigger": true - }, "navy_experience": { "description": "navy experience of a country" }, "air_experience": { "description": "air experience of a country" }, - "any_war_score": { - "description": "compares the warscore of all wars in a country to see if any fullfills the comparison condition 0-100 - Example: any_war_score > 40", - "is_trigger": true - }, "num_armies": { "description": "number of armies" }, - "ai_strategy_ignore_claim": { - "description": "ai strategy value ignore_claim against country. Example: GER.ai_strategy_ignore_claim@ENG" - }, "party_popularity": { "description": "popularity of targeted party [0.00, 1.00]. example party_popularity@democratic. May also target ruling_party. This also supports country variables, so you can party_popularity@my_var_name for variables that store ideologies" }, "num_ships": { "description": "number of ships" }, - "enemies_naval_strength_ratio": { - "description": "Compares the estimated navy strength between the scope country and all its enemies", - "is_trigger": true - }, "num_deployed_planes": { "description": "number of deployed planes" }, - "command_power_daily": { - "description": "Checks if daily command power increase is more or less that specified value \n command_power_daily > 1.5", - "is_trigger": true - }, "num_deployed_planes_with_type": { "description": "number of deployed planes with equipment type. example num_deployed_planes_with_type@fighter" }, @@ -8297,6 +7066,9 @@ "modifier": { "description": "a modifier stored in country scope" }, + "party_popularity_100": { + "description": "popularity of targeted party [0.00, 100.00]. example party_popularity_100@democratic. May also target ruling_party. This also supports country variables, so you can party_popularity_100@my_var_name for variables that store ideologies" + }, "highest_party_ideology": { "description": "ideology of the most popular party. Can exclude the ruling party by using @exclude_ruling_party. Example: highest_party_ideology OR highest_party_ideology@exclude_ruling_party" }, @@ -8309,10 +7081,6 @@ "current_party_ideology_group": { "description": "returns the token for current party ideology group" }, - "alliance_naval_strength_ratio": { - "description": "Compares the estimated naval strength between the scope country, his allies and his enemies.", - "is_trigger": true - }, "resource": { "description": "number of surplus resources in country, resource type is defined in target resource@steel" }, @@ -8358,6 +7126,9 @@ "host": { "description": "exile host of this country" }, + "days_decision_timeout": { + "description": "timeout in days for a specific timed decision, decision type token is defined in target. example: days_decision_timeout@SOV_propaganda_knowledge" + }, "exiles": { "description": "exile host of this country" }, @@ -8367,353 +7138,77 @@ "allies": { "description": "array of allies (faction members). prefer using faction_members instead" }, - "faction_leader": { - "description": "faction leader of this country's faction" - }, - "ai_attitude_protective_weight": { - "description": "weight for an ai attitude attitude_protectiveagainst country. Example: GER.ai_attitude_protective_weight@ENG" - }, - "resource_exported": { - "description": "number of resources exported by country, resource type is defined in target resource_exported@steel" - }, - "num_equipment_in_armies": { - "description": "number of equipment in armies of the country, equipment type token is defined in target. example num_equipment_in_armies@infantry_equipment" - }, - "resource_imported": { - "description": "number of resources imported by country, resource type is defined in target resource_imported@steel" - }, - "num_target_equipment_in_armies": { - "description": "number of equipment required in armies of the country, equipment type token is defined in target. example num_target_equipment_in_armies@infantry_equipment" - }, - "num_equipment": { - "description": "number of equipment in country. example num_equipment@infantry_equipment" - }, - "num_of_operatives": { - "description": "Checks the number of operatives the country controls", - "is_trigger": true - }, - "num_equipment_in_armies_k": { - "description": "number of equipment in armies of the country in thousands, equipment type token is defined in target. example num_equipment_in_armies_k@infantry_equipment" - }, - "num_target_equipment_in_armies_k": { - "description": "number of equipment required in armies of the country in thousands, equipment type token is defined in target. example num_target_equipment_in_armies_k@infantry_equipment" - }, - "autonomy_ratio": { - "description": "autonomy of scope country. -1 if not a subject" - }, - "ai_attitude_wants_antagonize": { - "description": "returns 1 if ai wants antagonize" - }, - "ai_attitude_wants_weaken": { - "description": "returns 1 if ai wants weaken" - }, - "ai_attitude_wants_ally": { - "description": "returns 1 if ai wants ally" - }, - "ai_attitude_wants_protect": { - "description": "returns 1 if ai wants protect" - }, - "ai_attitude_wants_ignore": { - "description": "returns 1 if ai wants ignore" - }, - "ai_attitude_is_threatened": { - "description": "returns 1 if ai is threatened" - }, - "core_compliance": { - "description": "returns core compliance of target country" - }, - "occupied_countries": { - "description": "array of occupied countries" - }, - "original_tag": { - "description": "returns the original tag of a country" - }, - "decryption_speed": { - "description": "total encryption strength of a country that is needed" - }, - "cryptology_defense_level": { - "description": "cryptology defense level of a country" - }, - "army_leaders": { - "description": "all army leaders of a country" - }, - "navy_leaders": { - "description": "all navy leaders of a country" - }, - "operatives": { - "description": "all operatives of a country" - }, - "num_of_military_factories": { - "description": "check amount of military factories", - "is_trigger": true - }, - "num_of_civilian_factories": { - "description": "check amount of civilian factories", - "is_trigger": true - }, - "num_of_naval_factories": { - "description": "check amount of naval factories", - "is_trigger": true - }, - "foreign_manpower": { - "description": "check the amount of foreign garrison manpower we have", - "is_trigger": true - }, - "has_manpower": { - "description": "check amount of manpower", - "is_trigger": true - }, - "num_subjects": { - "description": "check the number of subjects of nation", - "is_trigger": true - }, - "has_political_power": { - "description": "check amount of political power", - "is_trigger": true - }, - "num_of_available_military_factories": { - "description": "check amount of available military factories", - "is_trigger": true - }, - "num_of_available_naval_factories": { - "description": "check amount of available naval factories", - "is_trigger": true - }, - "num_of_available_civilian_factories": { - "description": "check amount of available civilian factories", - "is_trigger": true - }, - "surrender_progress": { - "description": "check if a country is close to surrendering", - "is_trigger": true - }, - "political_power_daily": { - "description": "Checks if daily political power increase is more or less that specified value \n political_power_daily > 1.5", - "is_trigger": true - }, - "land_doctrine_level": { - "description": "checks researched land doctrine level", - "is_trigger": true - }, - "casualties": { - "description": "Check the amount of casualties a country has suffered in all of it's wars", - "is_trigger": true - }, - "num_of_factories": { - "description": "check amount of total factories", - "is_trigger": true - }, - "num_of_controlled_states": { - "description": "check amount of controlled stats", - "is_trigger": true - }, - "has_added_tension_amount": { - "description": "Compare if the country has added above or below the specified ammount of tension", - "is_trigger": true - }, - "ai_irrationality": { - "description": "check the ai irrationality value", - "is_trigger": true - }, - "ai_strategy_antagonize": { - "description": "ai strategy value antagonize against country. Example: GER.ai_strategy_antagonize@ENG" - }, - "num_divisions": { - "description": "Will compare towards the amount of divisions a country has control over, if strength matters use has_army_size.", - "is_trigger": true - }, - "original_research_slots": { - "description": "check number of research slots at start of game", - "is_trigger": true - }, - "ai_wants_divisions": { - "description": "Will compare towards the amount of divisions an ai wants to have.", - "is_trigger": true - }, - "alliance_strength_ratio": { - "description": "Compares the estimated army strength between the scope country, his allies and his enemies.", - "is_trigger": true - }, - "num_faction_members": { - "description": "Compares the number of members in the faction for the current country. \n Example: num_faction_members > 10", - "is_trigger": true - }, - "enemies_strength_ratio": { - "description": "Compares the estimated army strength between the scope country and all its enemies", - "is_trigger": true - }, - "compare_autonomy_progress_ratio": { - "description": "check if autonomy progress ratio is higher than value, example:\ncompare_autonomy_progress_ratio > 0.5", - "is_trigger": true - }, - "num_tech_sharing_groups": { - "description": "checks how many groups a nation is a member of", - "is_trigger": true - }, - "ai_strategy_invade": { - "description": "ai strategy value invade against country. Example: GER.ai_strategy_invade@ENG" - }, - "num_occupied_states": { - "description": "check the number of states occupied by nation", - "is_trigger": true - }, - "amount_research_slots": { - "description": "check number of research current research slots \n amount_research_slots > 2", - "is_trigger": true - }, - "manpower_per_military_factory": { - "description": "Number of available manpower per factory the country has. Excluding dockyards.\nmanpower_per_military_factory < 1000", - "is_trigger": true - }, - "has_stability": { - "description": "check value of stability 0-1: Example has_stability < 0.6", - "is_trigger": true - }, - "has_war_support": { - "description": "check value of war_support 0-1: Example has_war_support < 0.6", - "is_trigger": true - }, - "num_of_civilian_factories_available_for_projects": { - "description": "check amount of civilian factories available for a new project to use", - "is_trigger": true - }, - "political_power_growth": { - "description": "Check the value of political power daily growth.Exacmple: political_power_growth > 0", - "is_trigger": true - }, - "amount_manpower_in_deployment_queue": { - "description": "Checks for amount manpower currently in deploymentview. amount_manpower_in_training > 10", - "is_trigger": true - }, - "has_legitimacy": { - "description": "Check scope country legitimacy 0-100: Example has_legitimacy < 60", - "is_trigger": true - }, - "casualties_k": { - "description": "Check the amount of casualties in thousands a country has suffered in all of it's wars", - "is_trigger": true - }, - "fuel_ratio": { - "description": "Compares the fuel ratio to a variable.\nExample: fuel_ratio > 0.5", - "is_trigger": true - }, - "days_since_capitulated": { - "description": "Checks the number of days since the country last capitulated, even if it is no longer capitulated.\n\tIf it has not ever capitulated, the value is extremely large.\n\tIt is recommended to combine this with has_capitulated = yes when you specifically want to ignore non-active capitulations.\nExamples:\n\tHOL = { has_capitulated = yes days_since_capitulated > 60 } # The Netherlands has been capitulated for more than two months\n\tFRA = { has_capitulated = yes days_since_capitulated < 21 } # France has capitulated sometime within the past three weeks\n\tGER = { OR = { has_capitulated = no days_since_capitulated > 14 } } # Germany is not both actively and recently capitulated\n", - "is_trigger": true - }, - "mine_threat": { - "description": "A trigger to check how dangerous enemy mines are for a country. Controlled by NAVAL_MINE_DANGER defines. Returns a value between 0 and 1. Example mine_threat > 0.5 ", - "is_trigger": true - }, - "convoy_threat": { - "description": "A trigger to check convoy threat for a country. Controlled by NAVAL_CONVOY_DANGER defines. Returns a value between 0 and 1. Example convoy_threat > 0.5 ", - "is_trigger": true - }, - "decryption_progress": { - "description": "checks decryption ratio against a country. Example: \ndecryption_progress = { \n target = GER\n value > 0.5\n} \n#or decryption_progress@GER as variable\n", - "is_trigger": true - }, - "garrison_manpower_need": { - "description": "check the amount of manpower needed by garrisons", - "is_trigger": true - }, - "num_operative_slots": { - "description": "Checks the number of available operative slots a country has.\nIf this differs from the number of operative, this does not mean the country can recruit an operative, but that it will eventually be able to.", - "is_trigger": true - }, - "num_free_operative_slots": { - "description": "Checks the number of operative a country can recruit right now.\nNote that this is not necessarily greater than zero if num_operative_slots returned a number greater than the number of operative.", - "is_trigger": true - }, - "num_fake_intel_divisions": { - "description": "Will compare towards the amount of fake intel divisions a country has control over. .", - "is_trigger": true - }, - "has_collaboration": { - "description": "checks the collaboration in a target country with our currently scoped country. Example: \nhas_collaboration = { \n target = GER\n value > 0.5\n} \n#or has_collaboration@GER as variable\n", - "is_trigger": true - }, - "target_conscription_amount": { - "description": "Checks the target conscription amount of the country.\n", - "is_trigger": true - }, - "current_conscription_amount": { - "description": "Checks the current conscription amount of the country.\n", - "is_trigger": true - }, - "num_researched_technologies": { - "description": "Number of researched technologies", - "is_trigger": true + "faction_leader": { + "description": "faction leader of this country's faction" }, - "network_national_coverage": { - "description": "checks network national coverage you have over a country. Example: \nnetwork_national_coverage = { \n target = GER\n value > 0.5\n} \n", - "is_trigger": true + "resource_exported": { + "description": "number of resources exported by country, resource type is defined in target resource_exported@steel" }, - "ai_strategy_conquer": { - "description": "ai strategy value conquer against country. Example: GER.ai_strategy_conquer@ENG" + "resource_imported": { + "description": "number of resources imported by country, resource type is defined in target resource_imported@steel" }, - "ai_strategy_befriend": { - "description": "ai strategy value befriend against country. Example: GER.ai_strategy_befriend@ENG" + "num_equipment": { + "description": "number of equipment in country. example num_equipment@infantry_equipment" }, - "ai_strategy_consider_weak": { - "description": "ai strategy value consider_weak against country. Example: GER.ai_strategy_consider_weak@ENG" + "num_equipment_in_armies": { + "description": "number of equipment in armies of the country, equipment type token is defined in target. example num_equipment_in_armies@infantry_equipment" }, - "ai_strategy_protect": { - "description": "ai strategy value protect against country. Example: GER.ai_strategy_protect@ENG" + "num_target_equipment_in_armies": { + "description": "number of equipment required in armies of the country, equipment type token is defined in target. example num_target_equipment_in_armies@infantry_equipment" }, - "ai_strategy_alliance": { - "description": "ai strategy value alliance against country. Example: GER.ai_strategy_alliance@ENG" + "num_equipment_in_armies_k": { + "description": "number of equipment in armies of the country in thousands, equipment type token is defined in target. example num_equipment_in_armies_k@infantry_equipment" }, - "ai_strategy_contain": { - "description": "ai strategy value contain against country. Example: GER.ai_strategy_contain@ENG" + "num_target_equipment_in_armies_k": { + "description": "number of equipment required in armies of the country in thousands, equipment type token is defined in target. example num_target_equipment_in_armies_k@infantry_equipment" }, - "ai_strategy_support": { - "description": "ai strategy value support against country. Example: GER.ai_strategy_support@ENG" + "autonomy_ratio": { + "description": "autonomy of scope country. -1 if not a subject" }, - "ai_strategy_force_defend_ally_borders": { - "description": "ai strategy value force_defend_ally_borders against country. Example: GER.ai_strategy_force_defend_ally_borders@ENG" + "ai_attitude_wants_antagonize": { + "description": "returns 1 if ai wants antagonize" }, - "ai_strategy_influence": { - "description": "ai strategy value influence against country. Example: GER.ai_strategy_influence@ENG" + "ai_attitude_wants_weaken": { + "description": "returns 1 if ai wants weaken" }, - "ai_strategy_ignore": { - "description": "ai strategy value ignore against country. Example: GER.ai_strategy_ignore@ENG" + "ai_attitude_wants_ally": { + "description": "returns 1 if ai wants ally" }, - "ai_strategy_send_volunteers_desire": { - "description": "ai strategy value send_volunteers_desire against country. Example: GER.ai_strategy_send_volunteers_desire@ENG" + "ai_attitude_wants_protect": { + "description": "returns 1 if ai wants protect" }, - "ai_strategy_occupation_policy": { - "description": "ai strategy value occupation_policy against country. Example: GER.ai_strategy_occupation_policy@ENG" + "ai_attitude_wants_ignore": { + "description": "returns 1 if ai wants ignore" }, - "ai_strategy_declare_war": { - "description": "ai strategy value declare_war against country. Example: GER.ai_strategy_declare_war@ENG" + "ai_attitude_is_threatened": { + "description": "returns 1 if ai is threatened" }, - "ai_strategy_prepare_for_war": { - "description": "ai strategy value prepare_for_war against country. Example: GER.ai_strategy_prepare_for_war@ENG" + "core_compliance": { + "description": "returns core compliance of target country" }, - "ai_strategy_decrypt_target": { - "description": "ai strategy value decrypt_target against country. Example: GER.ai_strategy_decrypt_target@ENG" + "occupied_countries": { + "description": "array of occupied countries" }, - "ai_strategy_activate_crypto": { - "description": "ai strategy value activate_crypto against country. Example: GER.ai_strategy_activate_crypto@ENG" + "original_tag": { + "description": "returns the original tag of a country" }, - "ai_attitude_neutral_weight": { - "description": "weight for an ai attitude attitude_neutralagainst country. Example: GER.ai_attitude_neutral_weight@ENG" + "decryption_speed": { + "description": "total encryption strength of a country that is needed" }, - "ai_attitude_hostile_weight": { - "description": "weight for an ai attitude attitude_hostileagainst country. Example: GER.ai_attitude_hostile_weight@ENG" + "cryptology_defense_level": { + "description": "cryptology defense level of a country" }, - "ai_attitude_friendly_weight": { - "description": "weight for an ai attitude attitude_friendlyagainst country. Example: GER.ai_attitude_friendly_weight@ENG" + "army_leaders": { + "description": "all army leaders of a country" }, - "ai_attitude_outraged_weight": { - "description": "weight for an ai attitude attitude_outragedagainst country. Example: GER.ai_attitude_outraged_weight@ENG" + "navy_leaders": { + "description": "all navy leaders of a country" }, - "ai_attitude_threatened_weight": { - "description": "weight for an ai attitude attitude_threatenedagainst country. Example: GER.ai_attitude_threatened_weight@ENG" + "operatives": { + "description": "all operatives of a country" }, - "ai_attitude_allied_weight": { - "description": "weight for an ai attitude attitude_alliedagainst country. Example: GER.ai_attitude_allied_weight@ENG" + "num_orders_groups": { + "description": "number of orders groups" } }, "state": { @@ -8729,16 +7224,9 @@ "industrial_complex_level": { "description": "civilian factor level in the state" }, - "core_countries": { - "description": "countries that cores the state" - }, "infrastructure_level": { "description": "infrastructure level in the state" }, - "days_since_last_strategic_bombing": { - "description": "Checks the days since last strategic bombing.\ndays_since_last_strategic_bombing < 10\n", - "is_trigger": true - }, "distance_to": { "description": "distance to another state, uses target as another state. example: 123.distance_to@124" }, @@ -8748,6 +7236,9 @@ "building_level": { "description": "building level of a building with type, uses target as building type. example building_level@arms_factory" }, + "core_countries": { + "description": "countries that cores the state" + }, "resource": { "description": "resources produced in state. example resource@steel" }, @@ -8756,42 +7247,6 @@ }, "controller": { "description": "controller of the state" - }, - "resistance": { - "description": "Compares the current resistance level of a state to a value. Example: resistance > 50 ", - "is_trigger": true - }, - "state_population": { - "description": "check the population in the state", - "is_trigger": true - }, - "state_strategic_value": { - "description": "Checks for state strategic value", - "is_trigger": true - }, - "state_and_terrain_strategic_value": { - "description": "Checks for state strategic value", - "is_trigger": true - }, - "state_population_k": { - "description": "check the population in the state in thousands (use to avoid variable overflows)", - "is_trigger": true - }, - "compliance": { - "description": "Compares the current compliance level of a state to a value. Example: compliance > 50 ", - "is_trigger": true - }, - "compliance_speed": { - "description": "Compares the current compliance speed of a state to a value. Example: compliance_speed > 50 ", - "is_trigger": true - }, - "resistance_speed": { - "description": "Compares the current resistance speed of a state to a value. Example: resistance_speed > 50 ", - "is_trigger": true - }, - "resistance_target": { - "description": "Compares the target resistance level of a state to a value. Example: resistance_target > 50 ", - "is_trigger": true } }, "unit_leader": { @@ -8828,12 +7283,6 @@ "num_target_equipment": { "description": "number of equipment required in army of a leader, equipment type token is defined in target. example num_target_equipment@infantry_equipment" }, - "logistics_level": { - "description": "logistics level of the leader" - }, - "num_infantry": { - "description": "number of units with infantry dominant type" - }, "num_units_defensive_combats_on": { "description": "number of units that are defensively fighting on a terrain, terrain type is defined as target. example: num_units_defensive_combats_on@plains" }, @@ -8846,6 +7295,12 @@ "num_ships": { "description": "number of ships controlled by leader" }, + "logistics_level": { + "description": "logistics level of the leader" + }, + "num_infantry": { + "description": "number of units with infantry dominant type" + }, "num_armored": { "description": "number of units with armored dominant type" }, @@ -8855,21 +7310,21 @@ "num_special": { "description": "number of units with special dominant type" }, - "num_mechanized": { - "description": "number of units with mechanized dominant type" - }, "attack_level": { "description": "attack level of the leader" }, "num_personality_traits": { "description": "number of personality traits a leader has" }, - "num_motorized": { - "description": "number of units with motorized dominant type" + "num_mechanized": { + "description": "number of units with mechanized dominant type" }, "maneuvering_level": { "description": "maneuvering level of the leader" }, + "num_motorized": { + "description": "number of units with motorized dominant type" + }, "num_battalions_with_type": { "description": "number of battalions with sub unit type, sub unit type is defined in target. example: num_battalions_with_type@light_armor" }, @@ -8888,16 +7343,12 @@ "num_status_traits": { "description": "number of status traits a leader has" }, - "defense_skill_level": { - "description": "Compares defense skill level of a unit leader.\nExample: defense_skill_level > 5", - "is_trigger": true + "leader_modifier": { + "description": "value of a modifier stored in leader modifier, modifier token is defined in target. example leader_modifier@navy_max_range" }, "num_assigned_traits": { "description": "number of assigned traits the leader has" }, - "leader_modifier": { - "description": "value of a modifier stored in leader modifier, modifier token is defined in target. example leader_modifier@navy_max_range" - }, "num_terrain_traits": { "description": "number of terrain traits a leader has" }, @@ -8913,10 +7364,6 @@ "army_attack_level": { "description": "attack level of the leader" }, - "attack_skill_level": { - "description": "Compares attack skill level of a unit leader.\nExample: attack_skill_level > 5", - "is_trigger": true - }, "army_defense_level": { "description": "defense level of the leader" }, @@ -8938,12 +7385,12 @@ "average_stats": { "description": "average stats of unit leader" }, - "avg_offensive_combat_status": { - "description": "average progress of offensive combats" - }, "operation_type": { "description": "returns the operation token the operative is assigned" }, + "avg_offensive_combat_status": { + "description": "average progress of offensive combats" + }, "sum_unit_terrain_modifier": { "description": "sum of terrain modifiers of each army's location, terrain type is defined in target. example: sum_unit_terrain_modifier@sickness_chance " }, @@ -8965,10 +7412,6 @@ "num_units_offensive_combats": { "description": "number of units in offensive combats" }, - "planning_skill_level": { - "description": "Compares planning skill level of a unit leader.\nExample: planning_skill_level > 5", - "is_trigger": true - }, "unit_ratio_ready_for_plan": { "description": "ratio of units that are ready for plan" }, @@ -8981,19 +7424,11 @@ "own_forced_into_hiding_time_factor": { "description": "The time factor applied to the status \"forced into hiding\". Takes into account the country it is operating for and the country it is operating against." }, - "skill": { - "description": "compare leader skill levels", - "is_trigger": true - }, "intel_yield_factor_on_capture": { "description": "Rate at which intel is extracted from this operative by an enemy country." }, "operative_captor": { "description": "returns the country tag that captured the operative" - }, - "logistics_skill_level": { - "description": "Compares logistics skill level of a unit leader.\nExample: logistics_skill_level > 5", - "is_trigger": true } } }, @@ -9002,77 +7437,6 @@ "rendertype": { "description": "Reports what render backend is used" }, - "CrashReporter.SimulateCrash": { - "description": "Simulates a crash (resulting in the game exiting)." - }, - "CrashReporter.UploadCrash": { - "description": "Upload the latest crash dump." - }, - "CrashReporter.DeleteCrashData": { - "description": "Delete local crash dumps older than X days." - }, - "pdxmp_netstats": { - "description": "Reports PDX MP network statistics" - }, - "pdxmp_status": { - "description": "Reports whether PDX MP is online and connected." - }, - "pops_account_login": { - "available_in_release_build": false, - "arguments": ["email", "password"], - "description": "Login to a POPS Account" - }, - "pops_account_logout": { - "available_in_release_build": false, - "description": "Login to a POPS Account" - }, - "pops_account_status": { - "available_in_release_build": false, - "description": "Show whether you are currently logged into POPS or not." - }, - "social_debuginfo": { - "available_in_release_build": false, - "description": "Print debug info about the social layer" - }, - "social_joinroom": { - "available_in_release_build": false, - "arguments": ["Context Index", "Room Name", "Nick Name"], - "description": "Join a chat room using the given social context" - }, - "social_sendmessage": { - "available_in_release_build": false, - "arguments": ["Context Index", "Room Name", "Message"], - "description": "Send a message to a chat room." - }, - "social_addfriend": { - "available_in_release_build": false, - "arguments": ["Context Index", "Account ID"], - "description": "Add a friend to friends list" - }, - "collaboration": { - "description": "Adds collaborations against selected country. Right click to select a country and use \"collaboration 0.3\"" - }, - "add_fake_armies": { - "description": "Creates fake intel armies for the player" - }, - "tweakergui": { - "description": "Spawns a tweaker GUI" - }, - "reload": { - "arguments": ["file name"], - "description": "Reloads assets", - "argument_completion_support": true - }, - "time": { - "description": "What time is it?" - }, - "reloadfx": { - "arguments": ["Arguments: map/mapname/postfx or *.fx filename"], - "description": "Reloads the shader" - }, - "particle_editor": { - "description": "Spawns a particle editor" - }, "add_mines": { "arguments": [""], "aliases": ["mines"], @@ -9214,6 +7578,9 @@ "traderoutes": { "description": "Toggle visibility of trade routes" }, + "railroads": { + "description": "Toggle rendering of railroads" + }, "debug_norender": { "description": "Toggle rendering of map" }, @@ -9240,15 +7607,15 @@ "description": "Allows to execute all operations." }, "operation_test_phase_selection": { - "arguments": [], + "arguments": ["Operation ID", "Target Tag"], "description": "Test an operation phase." }, "operation_debug": { - "arguments": [], + "arguments": ["Operation ID", "Target Tag"], "description": "Allows to execute all operations." }, "operation_start": { - "arguments": [], + "arguments": ["Operation ID", "Target Tag"], "description": "Allows to execute all operations." }, "debug_nuking": { @@ -9262,10 +7629,6 @@ "aliases": ["nuke"], "description": "add nukes" }, - "reloadsupply": { - "aliases": ["relsup"], - "description": "Reinitializes the supply systems." - }, "rebuildlayers": { "description": "Reload mapmodes." }, @@ -9299,11 +7662,9 @@ "description": "adds temporary buff to selected units" }, "list_temporary_buffs": { - "arguments": [], "description": "lists all temporary buffs on selected units" }, "unit_stats": { - "arguments": [], "description": "lists stats of selected units" }, "trigger_ability": { @@ -9320,9 +7681,16 @@ "nopausetext": { "description": "Toggles the pausebanner for nicer screenshots." }, + "time": { + "description": "What time is it?" + }, "combatsound": { "description": "How often does the combat view give a random sound? 0-50" }, + "Audio.PlayEffect": { + "arguments": ["effect_name"], + "description": "Play the specified sound effect" + }, "morehumans": { "arguments": ["num"], "aliases": ["humans"], @@ -9350,13 +7718,16 @@ "description": "Reloads OOBs" }, "createarmygroup": { - "arguments": [], "description": "Create field marshal group from selected groups" }, "combat_analyzer": { "arguments": ["", "", "", "", " OPTIONAL", " OPTIONAL"], "description": "Runs a combat between the 2 OOBs owned by the two TAGs either until done or for the specified number of days. \nUsing the combat will be run multiple times and the averages are printed" }, + "reloadfx": { + "arguments": ["Arguments: map/mapname/postfx or *.fx filename"], + "description": "Reloads the shader" + }, "update_loc": { "arguments": ["localization tag"], "description": "Updates the localization tag file" @@ -9381,6 +7752,14 @@ "arguments": [""], "description": "Begin annex/annexes the specified tag" }, + "puppet": { + "arguments": [""], + "description": "Puppets the specified tag" + }, + "focus_count": { + "arguments": [""], + "description": "Counts how many focuses a tag has. For science" + }, "no_wargoal": { "description": "No need to have a wargoal for declaring war" }, @@ -9499,7 +7878,6 @@ "description": "Remove core" }, "debug_zoom": { - "available_in_release_build": false, "description": "Zooms in the game" }, "debug_types": { @@ -9516,6 +7894,9 @@ "debug_events": { "description": "Start Counting events" }, + "dump_garrison_templates": { + "description": "Dump garrison templates to game log" + }, "debug_dumpevents": { "description": "Dump Event data to game log" }, @@ -9538,7 +7919,6 @@ "description": "Toggle framesmoothing" }, "debug_nomouse": { - "available_in_release_build": false, "description": "Toggles mouse scrollwheel on/off" }, "debug_terrain": { @@ -9584,7 +7964,6 @@ "description": "Toggles Bloom on/off" }, "debug_tooltip": { - "available_in_release_build": false, "description": "Toggles Tooltips on/off" }, "flagsoutput": { @@ -9603,13 +7982,7 @@ "debug_nogui": { "description": "Toggles GUI on/off" }, - "debug_volume": { - "available_in_release_build": false, - "arguments": [""], - "description": "Modifies music volume" - }, "debug_lockcamera": { - "available_in_release_build": false, "description": "Toggles Camera locked on/off" }, "debug_lines": { @@ -9658,7 +8031,6 @@ "description": "Moves a unit to a province" }, "spawnactor": { - "available_in_release_build": false, "arguments": ["", "", " OPTIONAL"], "description": "Spawns an actor with an optional animation" }, @@ -9672,7 +8044,6 @@ "description": "Toggles GUI bounds debug" }, "cameraclamp": { - "available_in_release_build": false, "description": "Toggles the camera clamping" }, "provtooltipdebug": { @@ -9691,6 +8062,19 @@ "aliases": ["dbg_cas"], "description": "Toggle debug mode for air vs land combat." }, + "supply_toggle_flow_penalties": { + "available_in_release_build": false, + "description": "Toggle the supply penalties due to bad supply flow" + }, + "add_temp_supply_node": { + "available_in_release_build": false, + "description": "Add temp supply node" + }, + "debug_validate_supply": { + "available_in_release_build": false, + "aliases": ["dbg_sply"], + "description": "Toggle debug validate supply cache." + }, "mapnames": { "description": "Toggle map names" }, @@ -9716,10 +8100,6 @@ "arguments": ["country tag", "province id"], "description": "Sets province controller" }, - "profilelog": { - "available_in_release_build": false, - "description": "Prints out the profiling informations into time.log" - }, "gamestate_timer": { "arguments": ["on / off"], "aliases": ["gstimer"], @@ -9776,6 +8156,9 @@ "eval_effect": { "description": "Runs the inlined effect on a selected scope" }, + "eval_trigger": { + "description": "Runs the inlined trigger on a selected scope" + }, "trigger": { "arguments": [" scripted_trigger_name"], "aliases": ["t"], @@ -9913,7 +8296,7 @@ }, "metrics": { "available_in_release_build": false, - "aliases": [], + "arguments": ["log_units|log_pools|player|air_mission|global|unit_assignments |decision|log|file<=file_name>|tag=|add_tag="], "description": "Toggles collecting metrics" }, "ai_research_log": { @@ -9981,17 +8364,16 @@ "description": "Drops 'cosmetic tag' for a specified country" }, "add_ideas": { - "arguments": [], + "arguments": ["all| ...>"], "description": "Adds ideas (ministers or national spirits) with to the country. Use 'all' to add them all", "argument_completion_support": true }, "remove_ideas": { - "arguments": [], + "arguments": ["all| ..."], "description": "Removes ideas (ministers or national spirits) with to the country. Use 'all' to remove them all", "argument_completion_support": true }, "list_ideas": { - "arguments": [], "description": "Dump all ideas to console (ministers or national spirits)" }, "add_party_popularity": { @@ -10058,7 +8440,6 @@ "dbg_prov": { "available_in_release_build": false, "arguments": [""], - "aliases": [], "description": "Sets type of debugging information on provinces." }, "random_seed": { @@ -10173,6 +8554,67 @@ "arguments": ["", " (optional)"], "aliases": ["sel"], "description": "select object by id" + }, + "reload_video_player": { + "available_in_release_build": false, + "description": "Reload video data in the video player and database" + }, + "reset_played_videos": { + "available_in_release_build": false, + "description": "Reset played videos" + }, + "railwaygun": { + "available_in_release_build": false, + "aliases": ["rg"], + "description": "create railway gun in supply capital" + }, + "railwaygun_damage": { + "available_in_release_build": false, + "aliases": ["rg_damage"], + "description": "damage railway guns" + }, + "loc_check_focuses": { + "description": "Check national focuses for missing localization" + }, + "loc_check_events": { + "description": "Check events for missing localization" + }, + "loc_check_modifiers": { + "description": "Check modifiers for missing localization" + }, + "loc_check_decisions": { + "description": "Check decisions for missing localization" + }, + "loc_check_national_spirits": { + "description": "Check national spirits for missing localization" + }, + "loc_check_characters": { + "description": "Check characters for missing localization" + }, + "loc_check": { + "description": "Check for missing localization" + }, + "set_weather": { + "arguments": [""], + "description": "Sets the weather for the selected province (and corresponding region)" + }, + "set_mud": { + "description": "Sets mud for the selected province" + }, + "add_rain": { + "arguments": [""], + "description": "Adds rain to the selected province" + }, + "add_snow": { + "arguments": [""], + "description": "Adds snow to the selected province" + }, + "dump_equipment_loc": { + "arguments": ["desc: Dump equipment descriptions instead of the names", ": Multiple allowed. Only include loc strings for the given countries. Generic loc strings are included if no tags are given, or with argument 'generic'.", ": Multiple allowed. Only include equipment that are all of the given types, e.g. 'armor anti_tank' will only include tank destroyers.", "path=: File path to write the dump to. Default is 'logs/equipment_loc.csv'."], + "description": "Dumps equipment loc strings to file. All arguments are optional." + }, + "print_controllers": { + "description": "Prints countries controlled by human players." } }, "tweakables": { @@ -10182,6 +8624,9 @@ "IntelNetwork.Instant": { "type": "bool" }, + "Debug.OldCombat": { + "type": "bool" + }, "Focus.NoChecks": { "type": "bool" }, @@ -10198,37 +8643,40 @@ "available_in_release_build": false, "type": "bool" }, - "Draw.Objects": { + "BattleSound.PlayBackground": { "available_in_release_build": false, "type": "bool" }, - "Draw.Transparent": { + "BattleSound.Debug": { "available_in_release_build": false, "type": "bool" }, - "Draw.Shadows": { - "available_in_release_build": false, + "Decision.NoChecks": { "type": "bool" }, - "Draw.ShadowBlur": { + "Draw.Objects": { "available_in_release_build": false, "type": "bool" }, - "PostEffectVolumes.Draw": { + "Draw.Transparent": { "available_in_release_build": false, "type": "bool" }, - "Decision.NoChecks": { + "Draw.Shadows": { + "available_in_release_build": false, "type": "bool" }, - "BattleSound.PlayBackground": { + "Draw.ShadowBlur": { "available_in_release_build": false, "type": "bool" }, - "BattleSound.Debug": { + "PostEffectVolumes.Draw": { "available_in_release_build": false, "type": "bool" }, + "ShowBorderTypes": { + "type": "bool" + }, "resistance_system": { "type": "bool" }, @@ -10285,12 +8733,44 @@ "available_in_release_build": false, "type": "bool" }, + "supply_debug.show_debug_lines_rail": { + "type": "bool" + }, + "supply_debug.show_debug_lines_train": { + "type": "bool" + }, + "supply_debug.show_debug_lines_supply": { + "type": "bool" + }, + "supply_debug.show_debug_rivers": { + "type": "bool" + }, "ShowTechBonus": { "type": "bool" }, "CounterIntelligence.TestShieldColors": { "type": "bool" }, + "ApplicationUtils.Update": { + "available_in_release_build": false, + "type": "bool" + }, + "Audio.DebugMin": { + "available_in_release_build": false, + "type": "bool" + }, + "Audio.DebugMax": { + "available_in_release_build": false, + "type": "bool" + }, + "Audio.Debug.LevelsSampleRate": { + "available_in_release_build": false, + "type": "integer" + }, + "Audio.Debug.Levels": { + "available_in_release_build": false, + "type": "bool" + }, "guibounds": { "type": "bool" }, @@ -10344,26 +8824,6 @@ "available_in_release_build": false, "type": "bool" }, - "ApplicationUtils.Update": { - "available_in_release_build": false, - "type": "bool" - }, - "Audio.DebugMin": { - "available_in_release_build": false, - "type": "bool" - }, - "Audio.DebugMax": { - "available_in_release_build": false, - "type": "bool" - }, - "Audio.Debug.LevelsSampleRate": { - "available_in_release_build": false, - "type": "integer" - }, - "Audio.Debug.Levels": { - "available_in_release_build": false, - "type": "bool" - }, "Audio.Debug": { "available_in_release_build": false, "type": "bool" @@ -10378,4 +8838,4 @@ } } } -} +} \ No newline at end of file diff --git a/Config/triggers.cwt b/Config/triggers.cwt index 6b651fde..2288fc60 100644 --- a/Config/triggers.cwt +++ b/Config/triggers.cwt @@ -361,10 +361,18 @@ alias[trigger:controls_state] = ## scope = country alias[trigger:has_government] = +### Does country government (ruling party) belong to ideology group. +## scope = country +alias[trigger:has_government] = enum[sub_ideology] + ### Does country government (ruling party) belong to ideology group. ## scope = country alias[trigger:has_country_leader_ideology] = +### Does country government (ruling party) belong to ideology group. +## scope = country +alias[trigger:has_country_leader_ideology] = enum[sub_ideology] + ### Does country government (ruling party) belong to ideology group. ## scope = country alias[trigger:has_government] = scope[country] @@ -420,6 +428,8 @@ alias[trigger:country_exists] = enum[country_tags] alias[trigger:ships_in_area] = { ## cardinality = 0..1 type = + ## cardinality = 0..1 + type = enum[ship_units] area = size = int } @@ -1239,7 +1249,7 @@ alias[trigger:has_cavalry_ratio] = float ### Check the number of states occupied by nation. ## scope = country -alias[trigger:num_occupied_states] = int +alias[trigger:num_occupied_states] = int_variable_field ### Check for damaged buildings of nation. ## scope = country diff --git a/Config/triggers_bba.cwt b/Config/triggers_bba.cwt index 78868fe8..158ef4d6 100644 --- a/Config/triggers_bba.cwt +++ b/Config/triggers_bba.cwt @@ -63,6 +63,13 @@ alias[trigger:any_country_division] = { alias_name[trigger] = alias_match_left[trigger] } +## scope = state +## push_scope = unit +alias[trigger:any_state_division] = { + ## cardinality = 1..inf + alias_name[trigger] = alias_match_left[trigger] +} + ### Check if division has this battalion in template ## scope = unit alias[trigger:division_has_battalion_in_template] = diff --git a/Config/triggers_new.cwt b/Config/triggers_new.cwt index d9267401..08f25e2a 100644 --- a/Config/triggers_new.cwt +++ b/Config/triggers_new.cwt @@ -228,7 +228,7 @@ alias[trigger:garrison_manpower_need] = variable_field alias[trigger:agency_upgrade_number] = variable_field ###Checks whether the operative is performing the given mission. -## scopes = { UNIT_LEADER } +## scopes = { operative } alias[trigger:operative_leader_mission] = enum[operative_missions] ###Compare the intel of the scoped country with the specified one. @@ -246,7 +246,7 @@ alias[trigger:compare_intel_with] = { ###Check if all operatives meets the trigger. tooltip=key can be defined to override title. ## scopes = { COUNTRY OPERATION } -## push_scope = UNIT_LEADER +## push_scope = operative alias[trigger:all_operative_leader] = { ## cardinality = 0..1 tooltip = localisation @@ -255,7 +255,7 @@ alias[trigger:all_operative_leader] = { ###Check if any operatives meets the trigger. tooltip=key can be defined to override title. ## scopes = { COUNTRY OPERATION } -## push_scope = UNIT_LEADER +## push_scope = operative alias[trigger:any_operative_leader] = { ## cardinality = 0..1 tooltip = localisation @@ -263,7 +263,7 @@ alias[trigger:any_operative_leader] = { } ###Checks whether the operative has the matching captured status. -## scopes = { UNIT_LEADER } +## scopes = { operative } alias[trigger:is_operative_captured] = bool ###Compare the absolute, percentage based, intel level the scoped country has over the specified one. @@ -426,7 +426,7 @@ alias[trigger:is_preparing_operation] = { } ###Checks whether the operative is performing the given operation. -## scopes = { UNIT_LEADER } +## scopes = { operative } alias[trigger:operative_leader_operation] = ###Checks if the country could potentially declare a war on the target (according to game rules, relationship, etc... ). @@ -438,11 +438,11 @@ alias[trigger:can_declare_war_on] = scope[country] alias[trigger:can_declare_war_on] = enum[country_tags] ###Checks whether the operative has the specified nationality. NOTE: this is invalid on non-operatives. -## scopes = { UNIT_LEADER } +## scopes = { operative } alias[trigger:has_nationality] = scope[country] ###Checks whether the operative has the specified nationality. NOTE: this is invalid on non-operatives. -## scopes = { UNIT_LEADER } +## scopes = { operative } alias[trigger:has_nationality] = enum[country_tags] ###Checks network national coverage you have over a country. diff --git a/Config/triggers_nsb.cwt b/Config/triggers_nsb.cwt index 338c14e0..3a93f990 100644 --- a/Config/triggers_nsb.cwt +++ b/Config/triggers_nsb.cwt @@ -114,6 +114,9 @@ alias[trigger:has_character_flag] = { alias[trigger:has_character] = ###Returns true if scoped country has character. ## scope = country +alias[trigger:has_character] = value[character_token] +###Returns true if scoped country has character. +## scope = country alias[trigger:has_character] = value[variable] ###Returns true if scoped country has character. ## scope = country @@ -128,6 +131,9 @@ alias[trigger:has_character] = scope[character] ### Checks whether the character matches the character ID ## scope = { character unit_leader } alias[trigger:is_character] = +### Checks whether the character matches the character ID +## scope = { character unit_leader } +alias[trigger:is_character] = value[character_token] ### Checks whether the character matches the variable ## scope = { character unit_leader } alias[trigger:is_character] = value[variable] @@ -147,6 +153,7 @@ alias[trigger:has_country_leader] = { ## cardinality = 0..1 ruling_only = bool character = + character = value[character_token] character = value[variable] character = value[event_target] character = value[global_event_target] @@ -171,6 +178,9 @@ alias[trigger:has_country_leader] = { alias[trigger:has_country_leader] = ###Check if country has character with specified ID. ## scope = country +alias[trigger:has_country_leader] = value[character_token] +###Check if country has character with specified ID. +## scope = country alias[trigger:has_country_leader] = value[variable] ###Check if country has character with specified ID. ## scope = country @@ -187,6 +197,9 @@ alias[trigger:has_country_leader] = scope[character] alias[trigger:can_be_country_leader] = ###Can the character be a country leader. ## scope = country +alias[trigger:can_be_country_leader] = value[character_token] +###Can the character be a country leader. +## scope = country alias[trigger:can_be_country_leader] = value[variable] ###Can the character be a country leader. ## scope = country From 61c35ad55939261e02f6d7e7e2227deab4d2a8bc Mon Sep 17 00:00:00 2001 From: BiscuitCookies <25040791+BiscuitCookies@users.noreply.github.com> Date: Thu, 8 Feb 2024 22:52:28 +0100 Subject: [PATCH 36/72] additions for targeted decisions --- Config/common/decisions.cwt | 41 +++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/Config/common/decisions.cwt b/Config/common/decisions.cwt index 97ed7078..d17b129c 100644 --- a/Config/common/decisions.cwt +++ b/Config/common/decisions.cwt @@ -10,6 +10,18 @@ types = { state_target = yes days_mission_timeout = scalar } + subtype[state_mission] = { + state_target = enum[continents] + days_mission_timeout = scalar + } + subtype[state_mission] = { + state_target = any_owned_state + days_mission_timeout = scalar + } + subtype[state_mission] = { + state_target = any_controlled_state + days_mission_timeout = scalar + } ## only_if_not = { state_mission } subtype[mission] = { days_mission_timeout = scalar @@ -17,6 +29,15 @@ types = { subtype[state_targeted] = { state_target = yes } + subtype[state_targeted] = { + state_target = enum[continents] + } + subtype[state_targeted] = { + state_target = any_owned_state + } + subtype[state_targeted] = { + state_target = any_controlled_state + } ## only_if_not = { state_targeted } subtype[targeted] = { target_trigger = { @@ -217,6 +238,10 @@ decision = { ### Tell the AI how much the decision would cost if it had a normal PP cost (use when custom_cost_trigger is used) ## cardinality = 0..1 ai_hint_pp_cost = int + ## error_if_only_match = This is the default value and can be omitted + ## severity = info + ## cardinality = 0..1 + state_target = no subtype[country] = { ### Check if this decision can be activated. @@ -396,6 +421,15 @@ decision = { alias_name[effect] = alias_match_left[effect] } + ## cardinality = 0..1 + state_target = yes + ## cardinality = 0..1 + state_target = enum[continents] + ## cardinality = 0..1 + state_target = any_owned_state + ## cardinality = 0..1 + state_target = any_controlled_state + ### Can select this mission like a regular decision. ## cardinality = 0..1 selectable_mission = bool @@ -538,7 +572,14 @@ decision = { alias_name[trigger] = alias_match_left[trigger] } + ## cardinality = 0..1 state_target = yes + ## cardinality = 0..1 + state_target = enum[continents] + ## cardinality = 0..1 + state_target = any_owned_state + ## cardinality = 0..1 + state_target = any_controlled_state ## cardinality = 0..1 targets = { From e8019f058092f909026d40d8d2eb48ed496f6043 Mon Sep 17 00:00:00 2001 From: BiscuitCookies <25040791+BiscuitCookies@users.noreply.github.com> Date: Thu, 8 Feb 2024 22:52:48 +0100 Subject: [PATCH 37/72] support for joint_focus as subtype of shared_focus --- Config/common/national_focus.cwt | 103 +++++++++++++++++++++++++++++-- 1 file changed, 98 insertions(+), 5 deletions(-) diff --git a/Config/common/national_focus.cwt b/Config/common/national_focus.cwt index 1a3eead1..c8a15ca1 100644 --- a/Config/common/national_focus.cwt +++ b/Config/common/national_focus.cwt @@ -1,4 +1,11 @@ types = { + ## unique = yes + ## type_key_filter = style + type[focus_style] = { + path = "game/common/national_focus" + name_field = "name" + } + ## unique = yes ## type_key_filter = focus_tree type[focus_tree] = { @@ -15,10 +22,22 @@ types = { } ## unique = yes - ## type_key_filter = shared_focus + ## replace_scope = { root = country this = country } + ## type_key_filter = { joint_focus shared_focus } type[shared_focus] = { path = "game/common/national_focus" name_field = "id" + + ## only_if_not = { joint_focus } + ## type_key_filter = shared_focus + subtype[shared] = { + } + + ## only_if_not = { shared_focus } + ## type_key_filter = joint_focus + subtype[joint_focus] = { + } + } } @@ -75,6 +94,7 @@ focus_tree = { } ## cardinality = 0..inf + ## push_scope = country focus = { id = localisation @@ -84,9 +104,13 @@ focus_tree = { ## cardinality = ~1..inf icon = + ## cardinality = 0..1 + text_icon = + ## cardinality = ~1..inf icon = { ## cardinality = 0..1 + ## replace_scope = { root = country this = country } trigger = { ## cardinality = ~1..inf alias_name[trigger] = alias_match_left[trigger] @@ -112,6 +136,7 @@ focus_tree = { ## cardinality = 0..1 y = int ## cardinality = 0..1 + ## replace_scope = { root = country this = country } trigger = { alias_name[trigger] = alias_match_left[trigger] } @@ -191,24 +216,28 @@ focus_tree = { } ## cardinality = 0..1 + ## replace_scope = { root = country this = country } bypass = { ## cardinality = ~1..inf alias_name[trigger] = alias_match_left[trigger] } ## cardinality = 0..1 + ## replace_scope = { root = country this = country } allow_branch = { ## cardinality = ~1..inf alias_name[trigger] = alias_match_left[trigger] } ## cardinality = 0..1 + ## replace_scope = { root = country this = country } available = { ## cardinality = ~1..inf alias_name[trigger] = alias_match_left[trigger] } ## cardinality = 0..1 + ## replace_scope = { root = country this = country } cancel = { ## cardinality = ~1..inf alias_name[trigger] = alias_match_left[trigger] @@ -221,6 +250,7 @@ focus_tree = { } ## cardinality = 0..1 + ## replace_scope = { root = country this = country } select_effect = { ## cardinality = ~1..inf alias_name[effect] = alias_match_left[effect] @@ -234,12 +264,14 @@ focus_tree = { } ## cardinality = 0..1 + ## replace_scope = { root = country this = country } on_uncomplete = { ## cardinality = ~1..inf alias_name[effect] = alias_match_left[effect] } ## cardinality = ~1..1 + ## replace_scope = { root = country this = country } completion_reward = { ## cardinality = ~1..inf alias_name[effect] = alias_match_left[effect] @@ -272,12 +304,16 @@ shared_focus = { ## cardinality = 0..inf icon = { ## cardinality = 0..1 + ## replace_scope = { root = country this = country } trigger = { ## cardinality = 0..inf alias_name[trigger] = alias_match_left[trigger] } value = } + ## cardinality = 0..1 + text_icon = + cost = float x = int y = int @@ -368,29 +404,62 @@ shared_focus = { } ## cardinality = 0..1 + ## replace_scope = { root = country this = country } bypass = { ## cardinality = ~1..inf alias_name[trigger] = alias_match_left[trigger] } ## cardinality = 0..1 + ## replace_scope = { root = country this = country } allow_branch = { ## cardinality = ~1..inf alias_name[trigger] = alias_match_left[trigger] } ## cardinality = 0..1 + ## replace_scope = { root = country this = country } available = { ## cardinality = ~1..inf alias_name[trigger] = alias_match_left[trigger] } ## cardinality = 0..1 + ## replace_scope = { root = country this = country } cancel = { ## cardinality = ~1..inf alias_name[trigger] = alias_match_left[trigger] } + subtype[joint_focus] = { + ### Check if country is considered joint for the focus. + ## cardinality = ~1..1 + ## replace_scope = { root = country this = country } + joint_trigger = { + ## cardinality = ~1..inf + alias_name[trigger] = alias_match_left[trigger] + } + + ## cardinality = 0..1 + ## replace_scope = { root = country this = country } + completion_reward_joint_originator = { + ## cardinality = ~1..inf + alias_name[effect] = alias_match_left[effect] + } + ## cardinality = 0..1 + ## replace_scope = { root = country this = country } + completion_reward_joint_member = { + ## cardinality = ~1..inf + alias_name[effect] = alias_match_left[effect] + } + ## cardinality = 0..1 + ## replace_scope = { root = country this = country } + completion_reward = { + ## cardinality = ~1..inf + alias_name[effect] = alias_match_left[effect] + } + } + ## cardinality = 0..1 historical_ai = { ## cardinality = ~1..inf @@ -416,10 +485,13 @@ shared_focus = { alias_name[effect] = alias_match_left[effect] } - ## cardinality = ~1..1 - completion_reward = { - ## cardinality = ~1..inf - alias_name[effect] = alias_match_left[effect] + subtype[shared] = { + ## cardinality = ~1..1 + ## replace_scope = { root = country this = country } + completion_reward = { + ## cardinality = ~1..inf + alias_name[effect] = alias_match_left[effect] + } } ## cardinality = 0..1 @@ -435,3 +507,24 @@ shared_focus = { value_set[focus_filter] } } + + +style = { + ## cardinality = 1..1 + name = scalar + + ## cardinality = 0..1 + default = yes + ## cardinality = 0..1 + ## error_if_only_match = This is the default value and can be omitted + default = no + + ## cardinality = 1..1 + unavailable = + ## cardinality = 1..1 + completed = + ## cardinality = 1..1 + available = + ## cardinality = 1..1 + current = +} \ No newline at end of file From f829ff1747953acc4a16420b33e0a5beba84d137 Mon Sep 17 00:00:00 2001 From: BiscuitCookies <25040791+BiscuitCookies@users.noreply.github.com> Date: Thu, 8 Feb 2024 22:54:02 +0100 Subject: [PATCH 38/72] on_actions type rework contains some attempts at workarounds for on_daily_ as on_daily_enum[country_tags] does not work --- Config/on_actions.cwt | 2062 ++++++++++++----------------------------- 1 file changed, 573 insertions(+), 1489 deletions(-) diff --git a/Config/on_actions.cwt b/Config/on_actions.cwt index 0e044bf1..c10514b7 100644 --- a/Config/on_actions.cwt +++ b/Config/on_actions.cwt @@ -1,1508 +1,592 @@ types = { - type[on_action] = { - path = "game/common/on_actions" - skip_root_key = on_actions - ## type_key_filter = on_new_term_election - ### - subtype[on_new_term_election] = { } - ## type_key_filter = on_ace_promoted - ### - subtype[on_ace_promoted] = { } - ## type_key_filter = on_aces_killed_each_other - ### - subtype[on_aces_killed_each_other] = { } - ## type_key_filter = on_ace_killed_by_ace - ### - subtype[on_ace_killed_by_ace] = { } - ## type_key_filter = on_ace_killed_other_ace - ### - subtype[on_ace_killed_other_ace] = { } - ## type_key_filter = on_ace_killed - ### - subtype[on_ace_killed] = { } - ## type_key_filter = on_justifying_wargoal_pulse - ### - subtype[on_justifying_wargoal_pulse] = { } - ## type_key_filter = on_wargoal_expire - ### - subtype[on_wargoal_expire] = { } - ## type_key_filter = on_nuke_drop - ### - subtype[on_nuke_drop] = { } - ## type_key_filter = on_border_war_lost - ### - subtype[on_border_war_lost] = { } - ## type_key_filter = on_leave_faction - ### - subtype[on_leave_faction] = { } - ## type_key_filter = on_create_faction - ### - subtype[on_create_faction] = { } - ## type_key_filter = on_offer_join_faction - ### - subtype[on_offer_join_faction] = { } - ## type_key_filter = on_join_faction - ### - subtype[on_join_faction] = { } - ## type_key_filter = on_declare_war - ### - subtype[on_declare_war] = { } - ## type_key_filter = on_faction_formed - ### - subtype[on_faction_formed] = { } - ## type_key_filter = on_capitulation - ### - subtype[on_capitulation] = { } - ## type_key_filter = on_capitulation_immediate - ### - subtype[on_capitulation_immediate] = { } - ## type_key_filter = on_uncapitulation - ### - subtype[on_uncapitulation] = { } - ## type_key_filter = on_government_change - ### - subtype[on_government_change] = { } - ## type_key_filter = on_naval_invasion - ### - subtype[on_naval_invasion] = { } - ## type_key_filter = on_coup_succeeded - ### - subtype[on_coup_succeeded] = { } - ## type_key_filter = on_civil_war_end - ### - subtype[on_civil_war_end] = { } - ## type_key_filter = on_puppet - ### - subtype[on_puppet] = { } - ## type_key_filter = on_release_as_puppet - ### - subtype[on_release_as_puppet] = { } - ## type_key_filter = on_annex - ### - subtype[on_annex] = { } - ## type_key_filter = on_subject_free - ### - subtype[on_subject_free] = { } - ## type_key_filter = on_subject_autonomy_level_change - ### - subtype[on_subject_autonomy_level_change] = { } - ## type_key_filter = on_subject_annexed - ### - subtype[on_subject_annexed] = { } - ## type_key_filter = on_release_as_free - ### - subtype[on_release_as_free] = { } - ## type_key_filter = on_peaceconference_ended - ### - subtype[on_peaceconference_ended] = { } - ## type_key_filter = on_generate_wargoal - ### - subtype[on_generate_wargoal] = { } - ## type_key_filter = on_military_access - ### - subtype[on_guarantee] = { } - ## type_key_filter = on_guarantee - ### - subtype[on_military_access] = { } - ## type_key_filter = on_offer_military_access - ### - subtype[on_offer_military_access] = { } - ## type_key_filter = on_call_allies - ### - subtype[on_call_allies] = { } - ## type_key_filter = on_join_allies - ### - subtype[on_join_allies] = { } - ## type_key_filter = on_lend_lease - ### - subtype[on_lend_lease] = { } - ## type_key_filter = on_incoming_lend_lease - ### - subtype[on_incoming_lend_lease] = { } - ## type_key_filter = on_incoming_lend_lease - ### - subtype[on_incoming_lend_lease] = { } - ## type_key_filter = on_send_volunteers - ### - subtype[on_send_volunteers] = { } - ## type_key_filter = on_send_expeditionary_force - ### - subtype[on_send_expeditionary_force] = { } - ## type_key_filter = on_return_expeditionary_forces - ### - subtype[on_return_expeditionary_forces] = { } - ## type_key_filter = on_request_expeditionary_forces - ### - subtype[on_request_expeditionary_forces] = { } - ## type_key_filter = on_ask_for_state_control - ### - subtype[on_ask_for_state_control] = { } - ## type_key_filter = on_give_state_control - ### - subtype[on_give_state_control] = { } - ## type_key_filter = on_war_relation_added - ### - subtype[on_war_relation_added] = { } - ## type_key_filter = on_liberate - ### - subtype[on_liberate] = { } - ## type_key_filter = on_startup - ### - subtype[on_startup] = { } - ## type_key_filter = on_daily - ### - subtype[on_daily] = { } - ### - subtype[on_daily[country_tags]] = { } - ## type_key_filter = on_weekly - ### - subtype[on_weekly] = { } - ### - subtype[on_weekly[country_tags]] = { } - ## type_key_filter = on_monthly - ### - subtype[on_monthly] = { } - ### - subtype[on_monthly_enum[country_tags]] = { } - ## type_key_filter = on_yearly - ### - subtype[on_yearly] = { } - ## type_key_filter = on_bi_yearly_pulse - ### - subtype[on_bi_yearly_pulse] = { } - ## type_key_filter = on_thri_yearly_pulse - ### - subtype[on_thri_yearly_pulse] = { } - ## type_key_filter = on_state_control_changed - ### - subtype[on_state_control_changed] = { } - ## type_key_filter = on_unit_leader_created - ### - subtype[on_unit_leader_created] = { } - ## type_key_filter = on_unit_leader_level_up - ### - subtype[on_unit_leader_level_up] = { } - ## type_key_filter = on_army_leader_daily - ### - subtype[on_army_leader_daily] = { } - ## type_key_filter = on_army_leader_won_combat - ### - subtype[on_army_leader_won_combat] = { } - ## type_key_filter = on_army_leader_lost_combat - ### - subtype[on_army_leader_lost_combat] = { } - ## type_key_filter = on_army_leader_promoted - ### - subtype[on_army_leader_promoted] = { } - ## type_key_filter = on_host_changed_from_capitulation - ### - subtype[on_host_changed_from_capitulation] = { } - ## type_key_filter = on_exile_government_reinstated - ### - subtype[on_exile_government_reinstated] = { } - ## type_key_filter = on_civil_war_end_before_annexation - ### - subtype[on_civil_war_end_before_annexation] = { } - ## type_key_filter = on_government_exiled - ### - subtype[on_government_exiled] = { } - ## type_key_filter = on_pride_of_the_fleet_sunk - ### - subtype[on_pride_of_the_fleet_sunk] = { } - ## type_key_filter = on_assume_faction_leadership - ### - subtype[on_assume_faction_leadership] = { } - ## type_key_filter = on_war - ### - subtype[on_war] = { } - ## type_key_filter = on_peace - ### - subtype[on_peace] = { } - ## type_key_filter = on_peace_proposal - ### - subtype[on_peace_proposal] = { } - ## type_key_filter = on_operative_on_mission_spotted - ### - subtype[on_operative_on_mission_spotted] = { } - ## type_key_filter = on_operative_captured - ### - subtype[on_operative_captured] = { } - ## type_key_filter = on_operative_death - ### - subtype[on_operative_death] = { } - ## type_key_filter = on_operative_detected_during_operation - ### - subtype[on_operative_detected_during_operation] = { } - ## type_key_filter = on_operative_created - ### - subtype[on_operative_created] = { } - ## type_key_filter = on_operative_recruited - ### - subtype[on_operative_recruited] = { } - ## type_key_filter = on_operation_completed - ### - subtype[on_operation_completed] = { } - ## type_key_filter = on_fully_decrypted_cipher - ### - subtype[on_fully_decrypted_cipher] = { } - ## type_key_filter = on_activated_active_decryption_bonuses - ### - subtype[on_activated_active_decryption_bonuses] = { } - ## type_key_filter = on_paradrop - ### - subtype[on_paradrop] = { } - ## type_key_filter = on_ruling_party_change - ### - subtype[on_ruling_party_change] = { } - ## type_key_filter = on_stage_coup - ### - subtype[on_stage_coup] = { } - ## type_key_filter = on_peaceconference_started - ### - subtype[on_peaceconference_started] = { } - ## type_key_filter = on_unit_leader_promote_from_ranks_veteran - ### - subtype[on_unit_leader_promote_from_ranks_veteran] = { } - ## type_key_filter = on_unit_leader_promote_from_ranks_green - ### - subtype[on_unit_leader_promote_from_ranks_green] = { } - ## type_key_filter = on_add_history - ### - subtype[on_add_history] = { } - } -} -on_action = { - - ## replace_scope = { THIS = country ROOT = country } - subtype[on_new_term_election] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country root = country FROM = any } - subtype[on_ace_promoted] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country root = country FROM = any prev = any } - subtype[on_aces_killed_each_other] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country root = country FROM = any prev = any } - subtype[on_ace_killed_by_ace] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country root = country FROM = any prev = any } - subtype[on_ace_killed_other_ace] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country root = country FROM = any } - subtype[on_ace_killed] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country FROM = country } - subtype[on_justifying_wargoal_pulse] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country FROM = country } - subtype[on_wargoal_expire] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country FROM = state } - subtype[on_nuke_drop] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country } - subtype[on_border_war_lost] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country } - subtype[on_leave_faction] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country ROOT = country } - subtype[on_create_faction] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country FROM = country } - subtype[on_offer_join_faction] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country FROM = country } - subtype[on_join_faction] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country FROM = country } - subtype[on_declare_war] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country } - subtype[on_faction_formed] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country FROM = country } - subtype[on_capitulation] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country FROM = country } - subtype[on_capitulation_immediate] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country } - subtype[on_uncapitulation] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country } - subtype[on_government_change] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = state ROOT = country FROM = state } - subtype[on_naval_invasion] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country } - subtype[on_coup_succeeded] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country FROM = country } - subtype[on_civil_war_end] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country FROM = country } - subtype[on_puppet] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country FROM = country } - subtype[on_release_as_puppet] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country FROM = country } - subtype[on_annex] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country FROM = country } - subtype[on_subject_free] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country FROM = country } - subtype[on_subject_autonomy_level_change] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country FROM = country } - subtype[on_subject_annexed] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country FROM = country } - subtype[on_release_as_free] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country FROM = country } - subtype[on_peaceconference_ended] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country FROM = country } - subtype[on_generate_wargoal] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country FROM = country } - subtype[on_guarantee] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country FROM = country } - subtype[on_military_access] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country FROM = country } - subtype[on_offer_military_access] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country FROM = country } - subtype[on_call_allies] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country FROM = country } - subtype[on_join_allies] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country FROM = country } - subtype[on_lend_lease] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country FROM = country } - subtype[on_incoming_lend_lease] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country FROM = country } - subtype[on_incoming_lend_lease] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country FROM = country } - subtype[on_send_volunteers] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country FROM = country } - subtype[on_send_expeditionary_force] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country FROM = country } - subtype[on_return_expeditionary_forces] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country FROM = country } - subtype[on_request_expeditionary_forces] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country FROM = country } - subtype[on_ask_for_state_control] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country FROM = country } - subtype[on_give_state_control] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country FROM = country } - subtype[on_war_relation_added] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country FROM = country } - subtype[on_liberate] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } + type[on_action] = { + path = "game/common/on_actions" + } + type[on_action_tag] = { + path = "game/common/on_actions" + skip_root_key = on_actions + starts_with = on_daily_ } - ## replace_scope = { THIS = no_scope ROOT = no_scope } - subtype[on_startup] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } + type[on_action_tag] = { + path = "game/common/on_actions" + skip_root_key = on_actions + starts_with = on_weekly_ } - ## replace_scope = { THIS = country ROOT = country } - subtype[on_daily] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } + type[on_action_tag] = { + path = "game/common/on_actions" + skip_root_key = on_actions + starts_with = on_monthly_ } +} +### Tag isn't checked for validity +## replace_scope = { THIS = country ROOT = country } +on_action_tag = single_alias_right[country_event_effect] + +on_action = { + ## cardinality = 0..inf + alias_name[on_act] = alias_match_left[on_act] + ### Tag isn't checked for validity ## replace_scope = { THIS = country ROOT = country } - subtype[on_daily_enum[country_tags]] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } + ## cardinality = 0..inf + = single_alias_right[country_event_effect] +} + +### Trigger the following commands whenever an election happens or is called by the hold_election command. +## replace_scope = { THIS = country ROOT = country } +alias[on_act:on_new_term_election] = single_alias_right[country_event_effect] + +### Trigger the following commands whenever an ace is created. FROM = Ace +## replace_scope = { THIS = country root = country FROM = any } +alias[on_act:on_ace_promoted] = single_alias_right[country_event_effect] + +### Trigger the following commands whenever two aces kill each other in air duel. FROM = our ace, PREV = enemy ace, has killed FROM. +## replace_scope = { THIS = country root = country FROM = any prev = any } +alias[on_act:on_aces_killed_each_other] = single_alias_right[country_event_effect] + +### Trigger the following commands whenever an aces is killed by another ace. FROM = our ace, PREV = enemy ace, has killed FROM. +## replace_scope = { THIS = country root = country FROM = any prev = any } +alias[on_act:on_ace_killed_by_ace] = single_alias_right[country_event_effect] + +### Trigger the following commands whenever an aces is killed by another ace (surviving ace side). FROM = our ace, PREV = enemy ace, killed by FROM. +## replace_scope = { THIS = country root = country FROM = any prev = any } +alias[on_act:on_ace_killed_other_ace] = single_alias_right[country_event_effect] + +### Trigger the following commands whenever an aces is killed. FROM = ace +## replace_scope = { THIS = country root = country FROM = any } +alias[on_act:on_ace_killed] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country root = country FROM = any } +alias[on_act:on_ace_killed_on_accident] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country root = country FROM = any } +alias[on_act:on_non_ace_killed_other_ace] = single_alias_right[country_event_effect] + +### Trigger the following commands whenever the country is targeted by a wargoal under justification. FROM = target nation. Checked every day. +## replace_scope = { THIS = country ROOT = country FROM = country } +alias[on_act:on_justifying_wargoal_pulse] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country FROM = country } +alias[on_act:on_wargoal_expire] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country FROM = state } +alias[on_act:on_nuke_drop] = single_alias_right[country_event_effect] + +### Trigger the following commands whenever a country loses a border war. "Border war" refers to the state-based border wars enabled with set_border_war, represented with orange stripes over the state, rather than border wars that simulate combat between countries. The default scope is the state that lost the border war. +## replace_scope = { THIS = state ROOT = country } +alias[on_act:on_border_war_lost] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country } +alias[on_act:on_leave_faction] = single_alias_right[country_event_effect] + +### Trigger the following commands whenever a country create a faction. FROM is the one that joins the faction. +## replace_scope = { THIS = country ROOT = country from = country } +alias[on_act:on_create_faction] = single_alias_right[country_event_effect] + +### Trigger the following commands whenever a country joins a faction after being invited. FROM is the country invited, THIS and ROOT are the faction leader. +## replace_scope = { THIS = country ROOT = country FROM = country } +alias[on_act:on_offer_join_faction] = single_alias_right[country_event_effect] + +### Trigger the following commands for a faction leader whenever a country joins after they ask to do so. FROM is faction leader, ROOT and THIS are the country that joins. +## replace_scope = { THIS = country ROOT = country FROM = country } +alias[on_act:on_join_faction] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country FROM = country } +alias[on_act:on_declare_war] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country } +alias[on_act:on_faction_formed] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country FROM = country } +alias[on_act:on_capitulation] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country FROM = country } +alias[on_act:on_capitulation_immediate] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country } +alias[on_act:on_uncapitulation] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country } +alias[on_act:on_government_change] = single_alias_right[country_event_effect] + +### Triggers the following commands whenever a sea invasion is made. THIS (default scope) is the invaded state, ROOT is the country that invades, FROM is the state where the invasion started +## replace_scope = { THIS = state ROOT = country FROM = state } +alias[on_act:on_naval_invasion] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country } +alias[on_act:on_coup_succeeded] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country FROM = country } +alias[on_act:on_civil_war_end] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country FROM = country } +alias[on_act:on_puppet] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country FROM = country } +alias[on_act:on_release_as_puppet] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country FROM = country } +alias[on_act:on_annex] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country FROM = country } +alias[on_act:on_subject_free] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country FROM = country } +alias[on_act:on_subject_autonomy_level_change] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country FROM = country } +alias[on_act:on_subject_annexed] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country FROM = country } +alias[on_act:on_release_as_free] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country FROM = country } +alias[on_act:on_peaceconference_ended] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country FROM = country } +alias[on_act:on_generate_wargoal] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country FROM = country } +alias[on_act:on_guarantee] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country FROM = country } +alias[on_act:on_military_access] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country FROM = country } +alias[on_act:on_offer_military_access] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country FROM = country } +alias[on_act:on_call_allies] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country FROM = country } +alias[on_act:on_join_allies] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country FROM = country } +alias[on_act:on_lend_lease] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country FROM = country } +alias[on_act:on_incoming_lend_lease] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country FROM = country } +alias[on_act:on_incoming_lend_lease] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country FROM = country } +alias[on_act:on_send_volunteers] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country FROM = country } +alias[on_act:on_send_expeditionary_force] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country FROM = country } +alias[on_act:on_return_expeditionary_forces] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country FROM = country } +alias[on_act:on_request_expeditionary_forces] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country FROM = country } +alias[on_act:on_ask_for_state_control] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country FROM = country } +alias[on_act:on_give_state_control] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country FROM = country } +alias[on_act:on_war_relation_added] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country FROM = country } +alias[on_act:on_liberate] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = invalid ROOT = invalid from = invalid } +alias[on_act:on_startup] = { + ## cardinality = 0..1 + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = } - ## replace_scope = { THIS = country ROOT = country } - subtype[on_weekly] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country } - subtype[on_weekly_enum[country_tags]] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] } - ## replace_scope = { THIS = country ROOT = country } - subtype[on_monthly] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } +} + +## replace_scope = { THIS = country ROOT = country } +alias[on_act:on_daily] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country } +alias[on_act:on_daily_enum[country_tags]] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country } +alias[on_act:on_weekly] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country } +alias[on_act:on_weekly_enum[country_tags]] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country } +alias[on_act:on_monthly] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country } +alias[on_act:on_monthly_enum[country_tags]] = single_alias_right[country_event_effect] +alias[on_act:on_yearly] = single_alias_right[country_event_effect] + +alias[on_act:on_thri_yearly_pulse] = single_alias_right[country_event_effect] + +alias[on_act:on_bi_yearly_pulse] = single_alias_right[country_event_effect] + +## replace_scope = { ROOT = country THIS = country FROM = country FROMFROM = state } +alias[on_act:on_state_control_changed] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = unit_leader ROOT = unit_leader from = country } +alias[on_act:on_unit_leader_created] = { + ## cardinality = 0..1 + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = } - ## replace_scope = { THIS = country ROOT = country } - subtype[on_monthly_enum[country_tags]] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] } - subtype[on_yearly] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } +} + +## replace_scope = { THIS = unit_leader ROOT = unit_leader from = country } +alias[on_act:on_unit_leader_level_up] = { + ## cardinality = 0..1 + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = } - subtype[on_thri_yearly_pulse] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] } - subtype[on_bi_yearly_pulse] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country FROM = country FROMFROM = state } - subtype[on_state_control_changed] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = unit_leader ROOT = unit_leader } - subtype[on_unit_leader_created] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = unit_leader ROOT = unit_leader } - subtype[on_unit_leader_level_up] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = unit_leader ROOT = unit_leader FROM = country } - subtype[on_army_leader_daily] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = unit_leader ROOT = unit_leader FROM = country } - subtype[on_army_leader_won_combat] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = unit_leader ROOT = unit_leader FROM = country } - subtype[on_army_leader_lost_combat] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = unit_leader ROOT = unit_leader } - subtype[on_army_leader_promoted] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country FROM = country FROMFROM = country } - subtype[on_host_changed_from_capitulation] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country FROM = country FROMFROM = country } - subtype[on_exile_government_reinstated] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country FROM = country } - subtype[on_civil_war_end_before_annexation] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country } - subtype[on_government_exiled] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country FROM = country } - subtype[on_pride_of_the_fleet_sunk] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country FROM = country } - subtype[on_assume_faction_leadership] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country FROM = country } - subtype[on_war] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country FROM = country } - subtype[on_peace] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } +} + +## replace_scope = { THIS = unit_leader ROOT = unit_leader FROM = country } +alias[on_act:on_army_leader_daily] = { + ## cardinality = 0..1 + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = } - ## replace_scope = { THIS = country ROOT = country FROM = country } - subtype[on_peace_proposal] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = unit_leader ROOT = country FROM = country } - subtype[on_operative_on_mission_spotted] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = unit_leader ROOT = country FROM = country } - subtype[on_operative_captured] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = unit_leader ROOT = country FROM = country } - subtype[on_operative_death] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = unit_leader ROOT = unit_leader FROM = unit_leader FROMFROM = state } - subtype[on_operative_detected_during_operation] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = unit_leader ROOT = unit_leader FROM = country } - subtype[on_operative_created] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = unit_leader ROOT = unit_leader FROM = country } - subtype[on_operative_recruited] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = operation ROOT = country FROM = country } - subtype[on_operation_completed] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country FROM = country } - subtype[on_fully_decrypted_cipher] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country FROM = country } - subtype[on_activated_active_decryption_bonuses] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = state ROOT = country FROM = state } - subtype[on_paradrop] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## replace_scope = { THIS = country ROOT = country } - subtype[on_ruling_party_change] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] } +} - subtype[on_stage_coup] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } +## replace_scope = { THIS = unit_leader ROOT = unit_leader FROM = country } +alias[on_act:on_army_leader_won_combat] = { + ## cardinality = 0..1 + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = + } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] } +} - ## replace_scope = { ROOT = country FROM = country } - subtype[on_peaceconference_started] = { - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } +## replace_scope = { THIS = unit_leader ROOT = unit_leader FROM = country } +alias[on_act:on_army_leader_lost_combat] = { + ## cardinality = 0..1 + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = + } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } +} - ## replace_scope = { ROOT = character } - subtype[on_unit_leader_promote_from_ranks_veteran] = { - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } +## replace_scope = { THIS = unit_leader ROOT = unit_leader from = country } +alias[on_act:on_army_leader_promoted] = { + ## cardinality = 0..1 + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = + } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } +} + +## replace_scope = { THIS = country ROOT = country FROM = country FROMFROM = country } +alias[on_act:on_host_changed_from_capitulation] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country FROM = country FROMFROM = country } +alias[on_act:on_exile_government_reinstated] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country FROM = country } +alias[on_act:on_civil_war_end_before_annexation] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country } +alias[on_act:on_government_exiled] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country FROM = country } +alias[on_act:on_pride_of_the_fleet_sunk] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country FROM = country } +alias[on_act:on_assume_faction_leadership] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country FROM = country } +alias[on_act:on_war] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country FROM = country } +alias[on_act:on_peace] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country FROM = country } +alias[on_act:on_peace_proposal] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = operative ROOT = country FROM = country } +alias[on_act:on_operative_on_mission_spotted] = { + ## cardinality = 0..1 + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = + } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } +} + +## replace_scope = { THIS = operative ROOT = country FROM = country } +alias[on_act:on_operative_captured] = { + ## cardinality = 0..1 + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = + } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } +} + +## replace_scope = { THIS = operative ROOT = country FROM = country } +alias[on_act:on_operative_death] = { + ## cardinality = 0..1 + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = + } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } +} + +## replace_scope = { THIS = operative ROOT = country FROM = country FROMFROM = state } +alias[on_act:on_operative_detected_during_operation] = { + ## cardinality = 0..1 + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = + } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } +} + +## replace_scope = { THIS = operative ROOT = operative FROM = country } +alias[on_act:on_operative_created] = { + ## cardinality = 0..1 + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = + } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } +} + +## replace_scope = { THIS = operative ROOT = operative FROM = country } +alias[on_act:on_operative_recruited] = { + ## cardinality = 0..1 + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = + } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } +} + +## replace_scope = { THIS = operative ROOT = country FROM = country } +alias[on_act:on_operation_completed] = { + ## cardinality = 0..1 + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = + } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } +} + +## replace_scope = { THIS = country ROOT = country FROM = country } +alias[on_act:on_fully_decrypted_cipher] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country FROM = country } +alias[on_act:on_activated_active_decryption_bonuses] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = state ROOT = country FROM = country } +alias[on_act:on_units_paradropped_in_state] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = state ROOT = country FROM = state } +alias[on_act:on_paradrop] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country } +alias[on_act:on_ruling_party_change] = single_alias_right[country_event_effect] + +alias[on_act:on_stage_coup] = single_alias_right[country_event_effect] + +## replace_scope = { ROOT = country FROM = country } +alias[on_act:on_peaceconference_started] = { + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } +} + +## replace_scope = { ROOT = unit_leader from = unit } +alias[on_act:on_unit_leader_promote_from_ranks_veteran] = { + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } +} + +## replace_scope = { ROOT = unit_leader from = unit } +alias[on_act:on_unit_leader_promote_from_ranks_green] = { + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } +} + +## replace_scope = { ROOT = unit } +alias[on_act:on_add_history] = { + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } +} + +# NB : all the following also exist at MIO level +# use on-action here if the purpose is to execute for any MIO +# use on-action at MIO level to execute just for one precise MIO +# i.e. don't use this here : if = { limit = { is_military_industrial_organisation = ... } } } +## cardinality = 0..1 +## replace_scope = { this = military_industrial_organization } +alias[on_act:on_mio_size_increased] = { + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } +} + +## replace_scope = { this = military_industrial_organization } +alias[on_act:on_mio_design_team_assigned_to_tech] = { + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } +} + +## replace_scope = { this = military_industrial_organization } +alias[on_act:on_mio_design_team_assigned_to_variant] = { + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } +} + +## replace_scope = { this = military_industrial_organization } +alias[on_act:on_mio_industrial_manufacturer_assigned] = { + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } +} + +## replace_scope = { this = military_industrial_organization } +alias[on_act:on_mio_tech_research_cancelled] = { + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } +} + +## replace_scope = { this = military_industrial_organization } +alias[on_act:on_mio_tech_research_completed] = { + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } +} + +## replace_scope = { this = military_industrial_organization } +alias[on_act:on_mio_industrial_manufacturer_unassigned] = { + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } +} + +## replace_scope = { THIS = country ROOT = country } +alias[on_act:on_daily_] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country } +alias[on_act:on_weekly_] = single_alias_right[country_event_effect] + +## replace_scope = { THIS = country ROOT = country } +alias[on_act:on_monthly_] = single_alias_right[country_event_effect] + +single_alias[country_event_effect] = { + ## cardinality = 0..1 + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = + } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } +} - ## replace_scope = { ROOT = character } - subtype[on_unit_leader_promote_from_ranks_green] = { - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - subtype[on_add_history] = { - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } -} \ No newline at end of file From 88312f0cd6ac4f35265b831de96d4daedc979284 Mon Sep 17 00:00:00 2001 From: BiscuitCookies <25040791+BiscuitCookies@users.noreply.github.com> Date: Thu, 8 Feb 2024 22:54:09 +0100 Subject: [PATCH 39/72] Update variables.cwt --- Config/variables.cwt | 47 ++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 43 insertions(+), 4 deletions(-) diff --git a/Config/variables.cwt b/Config/variables.cwt index c5bf764c..186f7960 100644 --- a/Config/variables.cwt +++ b/Config/variables.cwt @@ -25,27 +25,34 @@ values = { ### Weight for an AI attitude attitude_allied against country. Example: GER.ai_attitude_allied_weight@ENG. ai_attitude_allied_weight@scope[country] + ai_attitude_allied_weight@enum[country_tags] ### Weight for an AI attitude attitude_friendly against country. Example: GER.ai_attitude_friendly_weight@ENG. ai_attitude_friendly_weight@scope[country] + ai_attitude_friendly_weight@enum[country_tags] ### Weight for an AI attitude attitude_hostile against country. Example: GER.ai_attitude_hostile_weight@ENG. ai_attitude_hostile_weight@scope[country] + ai_attitude_hostile_weight@enum[country_tags] ### Returns 1 if AI is threatened. ai_attitude_is_threatened ### Weight for an AI attitude attitude_neutral against country. Example: GER.ai_attitude_neutral_weight@ENG. ai_attitude_neutral_weight@scope[country] + ai_attitude_neutral_weight@enum[country_tags] ### Weight for an AI attitude attitude_outraged against country. Example: GER.ai_attitude_outraged_weight@ENG. ai_attitude_outraged_weight@scope[country] + ai_attitude_outraged_weight@enum[country_tags] ### Weight for an AI attitude attitude_protective against country. Example: GER.ai_attitude_protective_weight@ENG. ai_attitude_protective_weight@scope[country] + ai_attitude_protective_weight@enum[country_tags] ### Weight for an AI attitude attitude_threatened against country. Example: GER.ai_attitude_threatened_weight@ENG. ai_attitude_threatened_weight@scope[country] + ai_attitude_threatened_weight@enum[country_tags] ### Returns 1 if AI wants ally. ai_attitude_wants_ally @@ -67,66 +74,87 @@ values = { ### AI strategy value activate_crypto against country. Example: GER.ai_strategy_activate_crypto@ENG. ai_strategy_activate_crypto@scope[country] + ai_strategy_activate_crypto@enum[country_tags] ### AI strategy value alliance against country. Example: GER.ai_strategy_alliance@ENG. ai_strategy_alliance@scope[country] + ai_strategy_alliance@enum[country_tags] ### AI strategy value antagonize against country. Example: GER.ai_strategy_antagonize@ENG. ai_strategy_antagonize@scope[country] + ai_strategy_antagonize@enum[country_tags] ### AI strategy value befriend against country. Example: GER.ai_strategy_befriend@ENG. ai_strategy_befriend@scope[country] + ai_strategy_befriend@enum[country_tags] ### AI strategy value conquer against country. Example: GER.ai_strategy_conquer@ENG. ai_strategy_conquer@scope[country] + ai_strategy_conquer@enum[country_tags] ### AI strategy value consider_weak against country. Example: GER.ai_strategy_consider_weak@ENG. ai_strategy_consider_weak@scope[country] + ai_strategy_consider_weak@enum[country_tags] ### AI strategy value contain against country. Example: GER.ai_strategy_contain@ENG. ai_strategy_contain@scope[country] + ai_strategy_contain@enum[country_tags] ### AI strategy value declare_war against country. Example: GER.ai_strategy_declare_war@ENG. ai_strategy_declare_war@scope[country] + ai_strategy_declare_war@enum[country_tags] ### AI strategy value decrypt_target against country. Example: GER.ai_strategy_decrypt_target@ENG. ai_strategy_decrypt_target@scope[country] + ai_strategy_decrypt_target@enum[country_tags] ### AI strategy value dont_defend_ally_borders against country. Example: GER.ai_strategy_dont_defend_ally_borders@ENG. ai_strategy_dont_defend_ally_borders@scope[country] + ai_strategy_dont_defend_ally_borders@enum[country_tags] ### AI strategy value force_defend_ally_borders against country. Example: GER.ai_strategy_force_defend_ally_borders@ENG. ai_strategy_force_defend_ally_borders@scope[country] + ai_strategy_force_defend_ally_borders@enum[country_tags] ### AI strategy value ignore against country. Example: GER.ai_strategy_ignore@ENG. ai_strategy_ignore@scope[country] + ai_strategy_ignore@enum[country_tags] ### AI strategy value ignore_claim against country. Example: GER.ai_strategy_ignore_claim@ENG. ai_strategy_ignore_claim@scope[country] + ai_strategy_ignore_claim@enum[country_tags] ### AI strategy value influence against country. Example: GER.ai_strategy_influence@ENG. ai_strategy_influence@scope[country] + ai_strategy_influence@enum[country_tags] ### AI strategy value invade against country. Example: GER.ai_strategy_invade@ENG. ai_strategy_invade@scope[country] + ai_strategy_invade@enum[country_tags] ### AI strategy value occupation_policy against country. Example: GER.ai_strategy_occupation_policy@ENG. ai_strategy_occupation_policy@scope[country] + ai_strategy_occupation_policy@enum[country_tags] ### AI strategy value prepare_for_war against country. Example: GER.ai_strategy_prepare_for_war@ENG. ai_strategy_prepare_for_war@scope[country] + ai_strategy_prepare_for_war@enum[country_tags] ### AI strategy value protect against country. Example: GER.ai_strategy_protect@ENG. ai_strategy_protect@scope[country] + ai_strategy_protect@enum[country_tags] ### AI strategy value send_volunteers_desire against country. Example: GER.ai_strategy_send_volunteers_desire@ENG. ai_strategy_send_volunteers_desire@scope[country] + ai_strategy_send_volunteers_desire@enum[country_tags] ### AI strategy value support against country. Example: GER.ai_strategy_support@ENG. ai_strategy_support@scope[country] + ai_strategy_support@enum[country_tags] ### Air intel against a target country. example GER.air_intel@ENG. air_intel@scope[country] + air_intel@enum[country_tags] ### KR-specific variable to manage tag ambition areas ambition_area_enum[country_tags] @@ -136,6 +164,7 @@ values = { ### Army intel against a target country. example GER.army_intel@ENG. army_intel@scope[country] + army_intel@enum[country_tags] # Country-scope ### Autonomy of scope country. -1 if not a subject. @@ -147,6 +176,7 @@ values = { ### Civilian intel against a target country. example GER.civilian_intel@ENG. civilian_intel@scope[country] + civilian_intel@enum[country_tags] ### Total command power of country. command_power @@ -229,12 +259,14 @@ values = { ### Navy intel against a target country. example GER.navy_intel@ENG. navy_intel@scope[country] + navy_intel@enum[country_tags] ### Number of armies. num_armies ### Number of armies in state, state is in target. Example num_armies_in_state@123. num_armies_in_state@ + num_armies_in_state@scope[state] ### Number of armies with dominant type, dominant type is defined in target. Example: num_armies_with_type@light_armor. num_armies_with_type@ @@ -285,12 +317,12 @@ values = { num_target_equipment_in_armies_k@ ### Opinion of a country targeted on another one. Example GER.opinion@ENG. + opinion@scope[country] opinion@enum[country_tags] opinion@ROOT opinion@FROM opinion@PREV opinion@THIS - opinion@scope[country] ### Returns the original tag of a country. original_tag @@ -374,6 +406,7 @@ values = { ### (Trigger) Checks decryption ratio against a country. Example: decryption_progress@GER. decryption_progress@scope[country] + decryption_progress@enum[country_tags] ### (Trigger) Compares the estimated navy strength between the scope country and all its enemies. enemies_naval_strength_ratio @@ -395,6 +428,7 @@ values = { ### (Trigger) Checks the collaboration in a target country with our currently scoped country. Example has_collaboration@GER. has_collaboration@scope[country] + has_collaboration@enum[country_tags] ### (Trigger) Check scope country legitimacy 0-100: Example has_legitimacy < 60. has_legitimacy @@ -422,6 +456,7 @@ values = { ### (Trigger) Will compare towards the amount of divisions a country has control over, if strength matters use has_army_size. network_national_coverage@scope[country] + network_national_coverage@enum[country_tags] ### (Trigger) Will compare towards the amount of divisions a country has control over, if strength matters use has_army_size. num_divisions @@ -619,6 +654,7 @@ values = { ### Distance to another state, uses target as another state. Example: 123.distance_to@124. distance_to@ + distance_to@scope[state] ### Civilian factor level in the state. industrial_complex_level @@ -864,6 +900,7 @@ values = { ### Number of units controlled by leader in state, state is in target. Example num_units_in_state@123. num_units_in_state@ + num_units_in_state@scope[state] ### Number of units in offensive combats. num_units_offensive_combats @@ -1032,9 +1069,11 @@ values = { ### Array of subjects of a tag. subject_countries@scope[country] + subject_countries@enum[country_tags] ### Array of states onwned by subjects of a tag. subject_states@scope[country] + subject_states@enum[country_tags] #State dynamic variables ### Array of countries with cores on the scope state. @@ -1049,13 +1088,13 @@ values = { ### Variable to access current theorist theorist - + ### Variable to access current army chief army_chief - + ### Variable to access current navy chief navy_chief - + ### Variable to access current air chief air_chief From a3e1c4dc41574c75098c3f819ef0ebca6b34c124 Mon Sep 17 00:00:00 2001 From: BiscuitCookies <25040791+BiscuitCookies@users.noreply.github.com> Date: Fri, 9 Feb 2024 01:09:59 +0100 Subject: [PATCH 40/72] added warnings for deprecated repush? --- Config/common/scripted_guis.cwt | 11 ++++++++++- Config/effects.cwt | 31 ++++++++++++++++++++++++++----- Config/effects_nsb.cwt | 2 +- Config/triggers.cwt | 8 +++++--- 4 files changed, 42 insertions(+), 10 deletions(-) diff --git a/Config/common/scripted_guis.cwt b/Config/common/scripted_guis.cwt index fcd1abb5..d5840de5 100644 --- a/Config/common/scripted_guis.cwt +++ b/Config/common/scripted_guis.cwt @@ -25,11 +25,20 @@ types = { subtype[state_context] = { context_type = selected_state_context } + + ## only_if_not = { any_context } + subtype[country_context] = { + context_type = diplomatic_action + } + ## only_if_not = { any_context } + subtype[country_context] = { + context_type = decision_category + } ## only_if_not = { any_context } subtype[country_context] = { context_type = selected_country_context } - ## only_if_not = { any_context country_context state_context global_context } + ## only_if_not = { any_context country_context state_context global_context country_mapicon_context state_mapicon_context } subtype[player_context] = { } } diff --git a/Config/effects.cwt b/Config/effects.cwt index 49c610a0..4ffa281d 100644 --- a/Config/effects.cwt +++ b/Config/effects.cwt @@ -520,6 +520,8 @@ alias[effect:remove_opinion_modifier] = { } ### Creates a leader and adds it to proper party in country. +## error_if_only_match = This is a deprecated command. Use add_country_leader_role instead when possible. +## severity = warning ## scope = country alias[effect:create_country_leader] = { name = scalar @@ -742,6 +744,8 @@ alias[effect:set_technology] = { } ### Creates an admiral for country in scope. +## error_if_only_match = This is a deprecated command. Use add_naval_commander_role instead when possible. The created admiral will not be able to have a portrait if assigned to be a minister via officer corps, causing errors. +## severity = warning ## scope = country alias[effect:create_navy_leader] = { name = scalar @@ -779,11 +783,11 @@ alias[effect:create_navy_leader] = { } ### Remove trait from unit leader. -## scope = { character unit_leader } +## scope = { character unit_leader operative } alias[effect:remove_unit_leader_trait] = ### Add trait to unit leader. -## scope = { character unit_leader } +## scope = { character unit_leader operative } alias[effect:add_unit_leader_trait] = ### Adds new namespace. @@ -791,9 +795,13 @@ alias[effect:add_unit_leader_trait] = alias[effect:add_namespace] = scalar ### Set owner for state. +## error_if_only_match = This can fail to carry over the control, so it's recommended to instead use transfer_state unless transferring the ownership without transferring over the control. +## severity = info ## scope = country alias[effect:set_state_owner] = scope[state] ### Set owner for state. +## error_if_only_match = This can fail to carry over the control, so it's recommended to instead use transfer_state unless transferring the ownership without transferring over the control. +## severity = info ## scope = country alias[effect:set_state_owner] = @@ -1533,7 +1541,9 @@ alias[effect:add_resource] = { show_state_in_tooltip = bool } -### Remove a unit leader ( remove_unit_leader=ID ). +### Remove a unit leader by their legacy ID ( remove_unit_leader=ID ). +## error_if_only_match = Does not work with the character ID. Instead, remove_unit_leader_role within the scope of the character is recommended when possible. +## severity = info ## scope = country alias[effect:remove_unit_leader] = value[unit_leader_ids] @@ -1604,6 +1614,8 @@ alias[effect:set_province_controller] = enum[provinces] alias[effect:set_major] = bool ### Creates a field marshal for country in scope. +## error_if_only_match = This is an deprecated command. Uadd_field_marshal_role instead when possible. The created field marshal will not be able to have a portrait if assigned to be a minister via officer corps, causing errors. +## severity = warning ## scope = country alias[effect:create_field_marshal] = { name = scalar @@ -1640,6 +1652,8 @@ alias[effect:create_field_marshal] = { } ### Creates a corps commander for country in scope. +## error_if_only_match = This is an deprecated command. use add_corps_commander_role instead when possible. The created corps commander will not be able to have a portrait if assigned to be a minister via officer corps, causing errors. +## severity = warning ## scope = country alias[effect:create_corps_commander] = { ## cardinality = 0..1 @@ -2318,10 +2332,14 @@ alias[effect:destroy_ships] = { } ### Set unit leader flag. -## scope = { unit_leader character } +## scope = { unit_leader character operative } +## error_if_only_match: Is deprecated. Use set_character_flag instead +## severity = warning alias[effect:set_unit_leader_flag] = value_set[leader_flag] ### Set unit leader flag. -## scope = { unit_leader character } +## scope = { unit_leader character operative } +## error_if_only_match: Is deprecated. Use set_character_flag instead +## severity = warning alias[effect:set_unit_leader_flag] = { flag = value_set[leader_flag] ## cardinality = 0..1 @@ -2331,6 +2349,8 @@ alias[effect:set_unit_leader_flag] = { } ### Modify unit leader flag. Only modifies if flag already exists. +## error_if_only_match = This is a deprecated command. Use clr_character_flag instead +## severity = warning ## scope = { unit_leader character } alias[effect:modify_unit_leader_flag] = { flag = value[leader_flag] @@ -2342,6 +2362,7 @@ alias[effect:modify_unit_leader_flag] = { ### Clear unit leader flag. ## scope = { unit_leader character } +## error_if_only_match = This is a deprecated command. Use clr_character_flag instead ## severity = warning alias[effect:clr_unit_leader_flag] = value[leader_flag] diff --git a/Config/effects_nsb.cwt b/Config/effects_nsb.cwt index a2e3568f..be771886 100644 --- a/Config/effects_nsb.cwt +++ b/Config/effects_nsb.cwt @@ -823,7 +823,7 @@ alias[effect:damage_units] = { ## scope = { country } alias[effect:force_update_map_mode] = { ## cardinality = ~1..2 - mapmode = enum[scripted_map_modes] + mapmode = } ### Create railway gun effect diff --git a/Config/triggers.cwt b/Config/triggers.cwt index 2288fc60..55f85fae 100644 --- a/Config/triggers.cwt +++ b/Config/triggers.cwt @@ -757,7 +757,7 @@ alias[trigger:is_core_of] = enum[country_tags] alias[trigger:is_ai] = bool ### Check if sides leader has trait. -## scope = { character unit_leader combat } +## scope = { character unit_leader combat operative } alias[trigger:has_trait] = ### Check if sides leader has trait. @@ -1607,12 +1607,14 @@ alias[trigger:num_units] = int alias[trigger:is_field_marshal] = bool ### Has unit leader flag been setCheck flag val date set and days since set. -## scope = { unit_leader combat character } +## scope = { unit_leader combat character operative } +## error_if_only_match: Is deprecated. Use has_character_flag instead ## severity = warning alias[trigger:has_unit_leader_flag] = value[leader_flag] ### Has unit leader flag been setCheck flag val date set and days since set. -## scope = { unit_leader combat character } +## scope = { unit_leader combat character operative } +## error_if_only_match: Is deprecated. Use has_character_flag instead ## severity = warning alias[trigger:has_unit_leader_flag] = { flag = value[leader_flag] From a1c3147556785770fa1c1a40611a9ef0bc3c61e8 Mon Sep 17 00:00:00 2001 From: BiscuitCookies <25040791+BiscuitCookies@users.noreply.github.com> Date: Fri, 9 Feb 2024 01:46:27 +0100 Subject: [PATCH 41/72] trait and equipment aditions --- Config/common/equipment.cwt | 18 ++++++++++++++++-- Config/common/traits.cwt | 2 +- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/Config/common/equipment.cwt b/Config/common/equipment.cwt index 278e39e2..f6a8b982 100644 --- a/Config/common/equipment.cwt +++ b/Config/common/equipment.cwt @@ -76,6 +76,7 @@ types = { cost = land } } + ## type_key_filter <> limit type[module] = { skip_root_key = equipment_modules path = "game/common/units/equipment/modules" @@ -361,6 +362,15 @@ upgrade = { subtype[land_upgrade] = { ### The experience type that is used by the designer cost = land + + ## cardinality = 0..1 + level_requirement = { + ## cardinality = 0..inf + int = { + alias_name[trigger] = alias_match_left[trigger] + } + } + } ## cardinality = 0..1 @@ -377,7 +387,8 @@ upgrade = { ## cardinality = 0..1 ### Resource values defined here will increase the resource cost construction resource_cost_thresholds = { - scalar = { + ## cardinality = 0..inf + int = { ## cardinality = ~1..10 = int } @@ -456,7 +467,10 @@ module = { alias_name[naval_stat] = alias_match_left[naval_stat] alias_name[air_stat] = alias_match_left[air_stat] } - + ## cardinality = 0..1 + forbid_module_categories = { + enum[module_categories] + } ## cardinality = 0..10 can_convert_from = { ## cardinality = 0..1 diff --git a/Config/common/traits.cwt b/Config/common/traits.cwt index 67d5faac..7346b29f 100644 --- a/Config/common/traits.cwt +++ b/Config/common/traits.cwt @@ -92,7 +92,7 @@ unit_leader_trait = { } ## cardinality = 0..1 trait_type = enum[trait_types] - subtype[!naval_commander] = { + subtype[land_commander] = { ## cardinality = 0..4 ### Direct bonus to this skill. enum[unit_leader_skills] = int From 225a79e9d90bb42c9618eb3be4bfdffd3ffae5f1 Mon Sep 17 00:00:00 2001 From: BiscuitCookies <25040791+BiscuitCookies@users.noreply.github.com> Date: Tue, 13 Feb 2024 22:25:24 +0100 Subject: [PATCH 42/72] typo fixes also attempting spritetype shenanigans --- Config/common/decisions.cwt | 8 ++++---- Config/effects_aat.cwt | 4 ++-- Config/effects_new.cwt | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Config/common/decisions.cwt b/Config/common/decisions.cwt index d17b129c..df54df9b 100644 --- a/Config/common/decisions.cwt +++ b/Config/common/decisions.cwt @@ -73,11 +73,11 @@ types = { decision_category = { ## cardinality = 0..inf - icon = scalar + icon = ## replace_scope = { this = country root = country } ## cardinality = 0..inf icon = { - key = scalar + key = trigger = { alias_name[trigger] = alias_match_left[trigger] } @@ -206,11 +206,11 @@ decision_category = { decision = { ## cardinality = 0..inf - icon = scalar + icon = ## replace_scope = { this = country root = country } ## cardinality = 0..inf icon = { - key = scalar + key = trigger = { alias_name[trigger] = alias_match_left[trigger] } diff --git a/Config/effects_aat.cwt b/Config/effects_aat.cwt index e2af7bb3..28f2bc8e 100644 --- a/Config/effects_aat.cwt +++ b/Config/effects_aat.cwt @@ -59,10 +59,10 @@ alias[effect:show_mio_tooltip] = ### Displays a tooltip that says that the policy is made available. ## scope = country -unlock_mio_policy_tooltip = +alias[unlock_mio_policy_tooltip] = ### Displays a tooltip that says that the policy is made available. ## scope = country -unlock_mio_policy_tooltip = { +alias[unlock_mio_policy_tooltip] = { policy = ## error_if_only_match = This is the default value and can be omitted ## severity = info diff --git a/Config/effects_new.cwt b/Config/effects_new.cwt index ba1f7c1c..43a25039 100644 --- a/Config/effects_new.cwt +++ b/Config/effects_new.cwt @@ -883,7 +883,7 @@ alias[effect:operative_leader_event] = { ###Kills an operative. This will temporarily lock the slot they occupy. ## scopes = { COUNTRY } -alias[effect:kill_operative] = scope[operativwr] +alias[effect:kill_operative] = scope[operative] ###Kills an operative. This will temporarily lock the slot they occupy. ## scopes = { COUNTRY } From 046736fb94d1e9c4afbba87ee6c6da2f9e226fde Mon Sep 17 00:00:00 2001 From: BiscuitCookies <25040791+BiscuitCookies@users.noreply.github.com> Date: Tue, 13 Feb 2024 22:42:03 +0100 Subject: [PATCH 43/72] Update decisions.cwt --- Config/common/decisions.cwt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Config/common/decisions.cwt b/Config/common/decisions.cwt index df54df9b..d17b129c 100644 --- a/Config/common/decisions.cwt +++ b/Config/common/decisions.cwt @@ -73,11 +73,11 @@ types = { decision_category = { ## cardinality = 0..inf - icon = + icon = scalar ## replace_scope = { this = country root = country } ## cardinality = 0..inf icon = { - key = + key = scalar trigger = { alias_name[trigger] = alias_match_left[trigger] } @@ -206,11 +206,11 @@ decision_category = { decision = { ## cardinality = 0..inf - icon = + icon = scalar ## replace_scope = { this = country root = country } ## cardinality = 0..inf icon = { - key = + key = scalar trigger = { alias_name[trigger] = alias_match_left[trigger] } From 11f83d7c08ec660555ec22c3768d78b21a15cfad Mon Sep 17 00:00:00 2001 From: BiscuitCookies <25040791+BiscuitCookies@users.noreply.github.com> Date: Thu, 15 Feb 2024 00:15:32 +0100 Subject: [PATCH 44/72] dlc files reading attempt Added portrait and designer database rules --- Config/common/characters.cwt | 13 +- Config/dlc/dlc_path.cwt | 313 ++++++++++++++++++++++++++++++++++ Config/effects.cwt | 4 +- Config/folders.cwt | 2 + Config/gfx/graphic_db.cwt | 152 +++++++++++++++++ Config/gfx/model_entities.cwt | 135 ++++++++++++++- Config/interface/gfx.cwt | 50 +++++- Config/portraits.cwt | 135 +++++++++++++++ Config/triggers_nsb.cwt | 2 +- 9 files changed, 787 insertions(+), 19 deletions(-) create mode 100644 Config/dlc/dlc_path.cwt create mode 100644 Config/gfx/graphic_db.cwt create mode 100644 Config/portraits.cwt diff --git a/Config/common/characters.cwt b/Config/common/characters.cwt index e81586a2..0ff77f12 100644 --- a/Config/common/characters.cwt +++ b/Config/common/characters.cwt @@ -98,8 +98,8 @@ character = { ## cardinality = ~1..2 enum[character_portrait_types] = { ### Portrait(s), large (leader) and/or small (advisor) - ## cardinality = ~1..2 - enum[character_portrait_sizes] = scalar + ## cardinality = ~1..2 + alias_name[portraitset] = alias_match_left[portraitset] } } ## cardinality = 0..1 @@ -335,7 +335,7 @@ character = { enum[character_portrait_types] = { ### Portrait(s), large and/or small ## cardinality = ~1..2 - enum[character_portrait_sizes] = scalar + alias_name[portraitset] = alias_match_left[portraitset] } } ## cardinality = 0..1 @@ -570,3 +570,10 @@ enums = { small } } + + + +alias[portraitset:large] = +alias[portraitset:large] = filepath +alias[portraitset:small] = +alias[portraitset:small] = filepath \ No newline at end of file diff --git a/Config/dlc/dlc_path.cwt b/Config/dlc/dlc_path.cwt new file mode 100644 index 00000000..eb2bc258 --- /dev/null +++ b/Config/dlc/dlc_path.cwt @@ -0,0 +1,313 @@ +# file = "path" +## severity = hint +alias[dlc_path_file:file] = filepath +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc001_german_historical_portraits/] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc002_polish_content_pack/] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc003_rocket_launcher_unit_pack/] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc004_famous_battleships_unit_pack/] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc005_heavy_cruisers_unit_pack/] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc006_soviet_tanks_unit_pack/] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc007_german_tanks_unit_pack/] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc008_french_tanks_unit_pack/] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc009_british_tanks_unit_pack/] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc010_us_tanks_unit_pack/] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc011_german_march_order_music_pack/] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc012_allied_radio_music_pack/] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc013_sabaton/] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc014_wallpaper/] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc016_artbook/] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc017_original_soundtrack/] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc018_together_for_victory/] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc019_sabaton_vol2/] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc020_death_or_dishonor/] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc021_anniversary_pack/] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc022_waking_the_tiger/] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc023_man_the_guns/] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc024_man_the_guns_wallpaper/] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc025_axis_armor_pack/] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc026_radio_pack/] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc027_la_resistance_preorder_bonus/] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc028_la_resistance/] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc029_allied_armor_pack/] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc030_allied_speeches_pack/] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc031_battle_for_the_bosporus/] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc032_eastern_front_planes_pack/] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc033_songs_of_the_eastern_front/] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc034_no_step_back/] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc035_no_step_back_preorder_bonus/] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc036_by_blood_alone/] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc037_by_blood_alone_preorder_bonus/] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc038_arms_against_tyranny/] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc039_arms_against_tyranny_preorder_bonus/] + +# file = "/path" +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc001_german_historical_portraits] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc002_polish_content_pack] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc003_rocket_launcher_unit_pack] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc004_famous_battleships_unit_pack] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc005_heavy_cruisers_unit_pack] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc006_soviet_tanks_unit_pack] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc007_german_tanks_unit_pack] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc008_french_tanks_unit_pack] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc009_british_tanks_unit_pack] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc010_us_tanks_unit_pack] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc011_german_march_order_music_pack] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc012_allied_radio_music_pack] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc013_sabaton] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc014_wallpaper] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc016_artbook] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc017_original_soundtrack] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc018_together_for_victory] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc019_sabaton_vol2] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc020_death_or_dishonor] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc021_anniversary_pack] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc022_waking_the_tiger] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc023_man_the_guns] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc024_man_the_guns_wallpaper] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc025_axis_armor_pack] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc026_radio_pack] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc027_la_resistance_preorder_bonus] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc028_la_resistance] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc029_allied_armor_pack] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc030_allied_speeches_pack] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc031_battle_for_the_bosporus] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc032_eastern_front_planes_pack] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc033_songs_of_the_eastern_front] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc034_no_step_back] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc035_no_step_back_preorder_bonus] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc036_by_blood_alone] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc037_by_blood_alone_preorder_bonus] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc038_arms_against_tyranny] +## severity = hint +alias[dlc_path_file:file] = filepath[dlc/dlc039_arms_against_tyranny_preorder_bonus] + +# textureFile = "path" +alias[dlc_path_textureFile:textureFile] = filepath +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc001_german_historical_portraits/] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc002_polish_content_pack/] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc003_rocket_launcher_unit_pack/] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc004_famous_battleships_unit_pack/] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc005_heavy_cruisers_unit_pack/] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc006_soviet_tanks_unit_pack/] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc007_german_tanks_unit_pack/] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc008_french_tanks_unit_pack/] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc009_british_tanks_unit_pack/] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc010_us_tanks_unit_pack/] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc011_german_march_order_music_pack/] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc012_allied_radio_music_pack/] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc013_sabaton/] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc014_wallpaper/] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc016_artbook/] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc017_original_soundtrack/] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc018_together_for_victory/] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc019_sabaton_vol2/] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc020_death_or_dishonor/] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc021_anniversary_pack/] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc022_waking_the_tiger/] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc023_man_the_guns/] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc024_man_the_guns_wallpaper/] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc025_axis_armor_pack/] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc026_radio_pack/] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc027_la_resistance_preorder_bonus/] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc028_la_resistance/] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc029_allied_armor_pack/] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc030_allied_speeches_pack/] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc031_battle_for_the_bosporus/] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc032_eastern_front_planes_pack/] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc033_songs_of_the_eastern_front/] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc034_no_step_back/] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc035_no_step_back_preorder_bonus/] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc036_by_blood_alone/] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc037_by_blood_alone_preorder_bonus/] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc038_arms_against_tyranny/] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc039_arms_against_tyranny_preorder_bonus/] +# textureFile = "/path" +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc001_german_historical_portraits] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc002_polish_content_pack] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc003_rocket_launcher_unit_pack] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc004_famous_battleships_unit_pack] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc005_heavy_cruisers_unit_pack] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc006_soviet_tanks_unit_pack] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc007_german_tanks_unit_pack] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc008_french_tanks_unit_pack] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc009_british_tanks_unit_pack] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc010_us_tanks_unit_pack] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc011_german_march_order_music_pack] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc012_allied_radio_music_pack] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc013_sabaton] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc014_wallpaper] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc016_artbook] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc017_original_soundtrack] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc018_together_for_victory] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc019_sabaton_vol2] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc020_death_or_dishonor] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc021_anniversary_pack] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc022_waking_the_tiger] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc023_man_the_guns] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc024_man_the_guns_wallpaper] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc025_axis_armor_pack] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc026_radio_pack] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc027_la_resistance_preorder_bonus] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc028_la_resistance] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc029_allied_armor_pack] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc030_allied_speeches_pack] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc031_battle_for_the_bosporus] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc032_eastern_front_planes_pack] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc033_songs_of_the_eastern_front] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc034_no_step_back] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc035_no_step_back_preorder_bonus] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc036_by_blood_alone] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc037_by_blood_alone_preorder_bonus] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc038_arms_against_tyranny] +## severity = hint +alias[dlc_path_textureFile:textureFile] = filepath[dlc/dlc039_arms_against_tyranny_preorder_bonus] \ No newline at end of file diff --git a/Config/effects.cwt b/Config/effects.cwt index 4ffa281d..a8e213e0 100644 --- a/Config/effects.cwt +++ b/Config/effects.cwt @@ -1804,9 +1804,9 @@ alias[effect:create_equipment_variant] = { ## cardinality = 0..1 icon = filepath ## cardinality = 0..1 - icon = scalar + icon = ## cardinality = 0..1 - model = scalar + model = ### Who designed that equipment ## cardinality = 0..1 design_team = mio: diff --git a/Config/folders.cwt b/Config/folders.cwt index f5a6da1a..d0c6f576 100644 --- a/Config/folders.cwt +++ b/Config/folders.cwt @@ -4,4 +4,6 @@ gfx history interface localisation +portraits map +dlc \ No newline at end of file diff --git a/Config/gfx/graphic_db.cwt b/Config/gfx/graphic_db.cwt new file mode 100644 index 00000000..fa0d5872 --- /dev/null +++ b/Config/gfx/graphic_db.cwt @@ -0,0 +1,152 @@ +types = { + ## graph_related_types = { } + type[graphic_db] = { + path = "game/gfx/interface/equipmentdesigner/graphic_db" + ## type_key_filter = default + subtype[default] = { + } + ## only_if_not = { default } + subtype[country] = { + } + } +} + +graphic_db = { + ## cardinality = 1..inf + enum[equipment_bonus_type] ={ + ## cardinality = 1..inf + pool = { + ## cardinality = 0..1 + limit = { + alias_name[trigger] = alias_match_left[trigger] + } + ## cardinality = 0..1 + weight = float + ## cardinality = 0..1 + icons = { + ## cardinality = 0..inf + + ## cardinality = 0..inf + filepath + ## cardinality = 0..inf + ## severity = hint + filepath[dlc/dlc001_german_historical_portraits/] + ## cardinality = 0..inf + ## severity = hint + filepath[dlc/dlc002_polish_content_pack/] + ## cardinality = 0..inf + ## severity = hint + filepath[dlc/dlc003_rocket_launcher_unit_pack/] + ## cardinality = 0..inf + filepath[dlc/dlc004_famous_battleships_unit_pack/] + ## cardinality = 0..inf + ## severity = hint + filepath[dlc/dlc005_heavy_cruisers_unit_pack/] + ## cardinality = 0..inf + ## severity = hint + filepath[dlc/dlc006_soviet_tanks_unit_pack/] + ## cardinality = 0..inf + ## severity = hint + filepath[dlc/dlc007_german_tanks_unit_pack/] + ## cardinality = 0..inf + ## severity = hint + filepath[dlc/dlc008_french_tanks_unit_pack/] + ## cardinality = 0..inf + ## severity = hint + filepath[dlc/dlc009_british_tanks_unit_pack/] + ## cardinality = 0..inf + ## severity = hint + filepath[dlc/dlc010_us_tanks_unit_pack/] + ## cardinality = 0..inf + ## severity = hint + filepath[dlc/dlc011_german_march_order_music_pack/] + ## cardinality = 0..inf + ## severity = hint + filepath[dlc/dlc012_allied_radio_music_pack/] + ## cardinality = 0..inf + ## severity = hint + filepath[dlc/dlc013_sabaton/] + ## cardinality = 0..inf + ## severity = hint + filepath[dlc/dlc014_wallpaper/] + ## cardinality = 0..inf + ## severity = hint + filepath[dlc/dlc016_artbook/] + ## cardinality = 0..inf + ## severity = hint + filepath[dlc/dlc017_original_soundtrack/] + ## cardinality = 0..inf + ## severity = hint + filepath[dlc/dlc018_together_for_victory/] + ## cardinality = 0..inf + ## severity = hint + filepath[dlc/dlc019_sabaton_vol2/] + ## cardinality = 0..inf + ## severity = hint + filepath[dlc/dlc020_death_or_dishonor/] + ## cardinality = 0..inf + ## severity = hint + filepath[dlc/dlc021_anniversary_pack/] + ## cardinality = 0..inf + ## severity = hint + filepath[dlc/dlc022_waking_the_tiger/] + ## cardinality = 0..inf + ## severity = hint + filepath[dlc/dlc023_man_the_guns/] + ## cardinality = 0..inf + ## severity = hint + filepath[dlc/dlc024_man_the_guns_wallpaper/] + ## cardinality = 0..inf + ## severity = hint + filepath[dlc/dlc025_axis_armor_pack/] + ## cardinality = 0..inf + ## severity = hint + filepath[dlc/dlc026_radio_pack/] + ## cardinality = 0..inf + ## severity = hint + filepath[dlc/dlc027_la_resistance_preorder_bonus/] + ## cardinality = 0..inf + ## severity = hint + filepath[dlc/dlc028_la_resistance/] + ## cardinality = 0..inf + ## severity = hint + filepath[dlc/dlc029_allied_armor_pack/] + ## cardinality = 0..inf + ## severity = hint + filepath[dlc/dlc030_allied_speeches_pack/] + ## cardinality = 0..inf + ## severity = hint + filepath[dlc/dlc031_battle_for_the_bosporus/] + ## cardinality = 0..inf + ## severity = hint + filepath[dlc/dlc032_eastern_front_planes_pack/] + ## cardinality = 0..inf + ## severity = hint + filepath[dlc/dlc033_songs_of_the_eastern_front/] + ## cardinality = 0..inf + ## severity = hint + filepath[dlc/dlc034_no_step_back/] + ## cardinality = 0..inf + ## severity = hint + filepath[dlc/dlc035_no_step_back_preorder_bonus/] + ## cardinality = 0..inf + ## severity = hint + filepath[dlc/dlc036_by_blood_alone/] + ## cardinality = 0..inf + ## severity = hint + filepath[dlc/dlc037_by_blood_alone_preorder_bonus/] + ## cardinality = 0..inf + ## severity = hint + filepath[dlc/dlc038_arms_against_tyranny/] + ## cardinality = 0..inf + ## severity = hint + filepath[dlc/dlc039_arms_against_tyranny_preorder_bonus/] + } + ## cardinality = 0..1 + models = { + ## cardinality = 0..inf + + } + } + } +} diff --git a/Config/gfx/model_entities.cwt b/Config/gfx/model_entities.cwt index 2e50f124..029ceab9 100644 --- a/Config/gfx/model_entities.cwt +++ b/Config/gfx/model_entities.cwt @@ -2,26 +2,143 @@ types = { ## type_key_filter = pdxmesh type[pdxmesh] = { skip_root_key = objectTypes - path = "game/gfx" + path = "gfx" + path = "dlc/dlc001_german_historical_portraits/gfx" + path = "dlc/dlc002_polish_content_pack/gfx" + path = "dlc/dlc003_rocket_launcher_unit_pack/gfx" + path = "dlc/dlc004_famous_battleships_unit_pack/gfx" + path = "dlc/dlc005_heavy_cruisers_unit_pack/gfx" + path = "dlc/dlc006_soviet_tanks_unit_pack/gfx" + path = "dlc/dlc007_german_tanks_unit_pack/gfx" + path = "dlc/dlc008_french_tanks_unit_pack/gfx" + path = "dlc/dlc009_british_tanks_unit_pack/gfx" + path = "dlc/dlc010_us_tanks_unit_pack/gfx" + path = "dlc/dlc011_german_march_order_music_pack/gfx" + path = "dlc/dlc012_allied_radio_music_pack/gfx" + path = "dlc/dlc013_sabaton/gfx" + path = "dlc/dlc014_wallpaper/gfx" + path = "dlc/dlc016_artbook/gfx" + path = "dlc/dlc017_original_soundtrack/gfx" + path = "dlc/dlc018_together_for_victory/gfx" + path = "dlc/dlc019_sabaton_vol2/gfx" + path = "dlc/dlc020_death_or_dishonor/gfx" + path = "dlc/dlc021_anniversary_pack/gfx" + path = "dlc/dlc022_waking_the_tiger/gfx" + path = "dlc/dlc023_man_the_guns/gfx" + path = "dlc/dlc024_man_the_guns_wallpaper/gfx" + path = "dlc/dlc025_axis_armor_pack/gfx" + path = "dlc/dlc026_radio_pack/gfx" + path = "dlc/dlc027_la_resistance_preorder_bonus/gfx" + path = "dlc/dlc028_la_resistance/gfx" + path = "dlc/dlc029_allied_armor_pack/gfx" + path = "dlc/dlc030_allied_speeches_pack/gfx" + path = "dlc/dlc031_battle_for_the_bosporus/gfx" + path = "dlc/dlc032_eastern_front_planes_pack/gfx" + path = "dlc/dlc033_songs_of_the_eastern_front/gfx" + path = "dlc/dlc034_no_step_back/gfx" + path = "dlc/dlc035_no_step_back_preorder_bonus/gfx" + path = "dlc/dlc036_by_blood_alone/gfx" + path = "dlc/dlc037_by_blood_alone_preorder_bonus/gfx" + path = "dlc/dlc038_arms_against_tyranny/gfx" + path = "dlc/dlc039_arms_against_tyranny_preorder_bonus/gfx" + path_extension = .gfx name_field = "name" } ## type_key_filter = entity type[entity] = { - path = "game/gfx" + path = "gfx" + path = "dlc/dlc001_german_historical_portraits/gfx" + path = "dlc/dlc002_polish_content_pack/gfx" + path = "dlc/dlc003_rocket_launcher_unit_pack/gfx" + path = "dlc/dlc004_famous_battleships_unit_pack/gfx" + path = "dlc/dlc005_heavy_cruisers_unit_pack/gfx" + path = "dlc/dlc006_soviet_tanks_unit_pack/gfx" + path = "dlc/dlc007_german_tanks_unit_pack/gfx" + path = "dlc/dlc008_french_tanks_unit_pack/gfx" + path = "dlc/dlc009_british_tanks_unit_pack/gfx" + path = "dlc/dlc010_us_tanks_unit_pack/gfx" + path = "dlc/dlc011_german_march_order_music_pack/gfx" + path = "dlc/dlc012_allied_radio_music_pack/gfx" + path = "dlc/dlc013_sabaton/gfx" + path = "dlc/dlc014_wallpaper/gfx" + path = "dlc/dlc016_artbook/gfx" + path = "dlc/dlc017_original_soundtrack/gfx" + path = "dlc/dlc018_together_for_victory/gfx" + path = "dlc/dlc019_sabaton_vol2/gfx" + path = "dlc/dlc020_death_or_dishonor/gfx" + path = "dlc/dlc021_anniversary_pack/gfx" + path = "dlc/dlc022_waking_the_tiger/gfx" + path = "dlc/dlc023_man_the_guns/gfx" + path = "dlc/dlc024_man_the_guns_wallpaper/gfx" + path = "dlc/dlc025_axis_armor_pack/gfx" + path = "dlc/dlc026_radio_pack/gfx" + path = "dlc/dlc027_la_resistance_preorder_bonus/gfx" + path = "dlc/dlc028_la_resistance/gfx" + path = "dlc/dlc029_allied_armor_pack/gfx" + path = "dlc/dlc030_allied_speeches_pack/gfx" + path = "dlc/dlc031_battle_for_the_bosporus/gfx" + path = "dlc/dlc032_eastern_front_planes_pack/gfx" + path = "dlc/dlc033_songs_of_the_eastern_front/gfx" + path = "dlc/dlc034_no_step_back/gfx" + path = "dlc/dlc035_no_step_back_preorder_bonus/gfx" + path = "dlc/dlc036_by_blood_alone/gfx" + path = "dlc/dlc037_by_blood_alone_preorder_bonus/gfx" + path = "dlc/dlc038_arms_against_tyranny/gfx" + path = "dlc/dlc039_arms_against_tyranny_preorder_bonus/gfx" + path_extension = .asset name_field = "name" } ## type_key_filter = animation type[model_animation] = { - path = "game/gfx" + path = "gfx" + path = "dlc/dlc001_german_historical_portraits/gfx" + path = "dlc/dlc002_polish_content_pack/gfx" + path = "dlc/dlc003_rocket_launcher_unit_pack/gfx" + path = "dlc/dlc004_famous_battleships_unit_pack/gfx" + path = "dlc/dlc005_heavy_cruisers_unit_pack/gfx" + path = "dlc/dlc006_soviet_tanks_unit_pack/gfx" + path = "dlc/dlc007_german_tanks_unit_pack/gfx" + path = "dlc/dlc008_french_tanks_unit_pack/gfx" + path = "dlc/dlc009_british_tanks_unit_pack/gfx" + path = "dlc/dlc010_us_tanks_unit_pack/gfx" + path = "dlc/dlc011_german_march_order_music_pack/gfx" + path = "dlc/dlc012_allied_radio_music_pack/gfx" + path = "dlc/dlc013_sabaton/gfx" + path = "dlc/dlc014_wallpaper/gfx" + path = "dlc/dlc016_artbook/gfx" + path = "dlc/dlc017_original_soundtrack/gfx" + path = "dlc/dlc018_together_for_victory/gfx" + path = "dlc/dlc019_sabaton_vol2/gfx" + path = "dlc/dlc020_death_or_dishonor/gfx" + path = "dlc/dlc021_anniversary_pack/gfx" + path = "dlc/dlc022_waking_the_tiger/gfx" + path = "dlc/dlc023_man_the_guns/gfx" + path = "dlc/dlc024_man_the_guns_wallpaper/gfx" + path = "dlc/dlc025_axis_armor_pack/gfx" + path = "dlc/dlc026_radio_pack/gfx" + path = "dlc/dlc027_la_resistance_preorder_bonus/gfx" + path = "dlc/dlc028_la_resistance/gfx" + path = "dlc/dlc029_allied_armor_pack/gfx" + path = "dlc/dlc030_allied_speeches_pack/gfx" + path = "dlc/dlc031_battle_for_the_bosporus/gfx" + path = "dlc/dlc032_eastern_front_planes_pack/gfx" + path = "dlc/dlc033_songs_of_the_eastern_front/gfx" + path = "dlc/dlc034_no_step_back/gfx" + path = "dlc/dlc035_no_step_back_preorder_bonus/gfx" + path = "dlc/dlc036_by_blood_alone/gfx" + path = "dlc/dlc037_by_blood_alone_preorder_bonus/gfx" + path = "dlc/dlc038_arms_against_tyranny/gfx" + path = "dlc/dlc039_arms_against_tyranny_preorder_bonus/gfx" + path_extension = .asset name_field = "name" } } pdxmesh = { name = scalar - file = filepath + alias_name[dlc_path_file] = alias_match_left[dlc_path_file] ## cardinality = 0..1 scale = float @@ -60,6 +177,8 @@ pdxmesh = { entity = { + ## cardinality = 0..1 + clone = name = scalar ## cardinality = 0..1 @@ -259,7 +378,7 @@ enums = { } complex_enum[model_animations] = { - path = "game/gfx" + path = "gfx" start_from_root = yes name = { objectTypes = { @@ -273,7 +392,7 @@ enums = { } complex_enum[model_states] = { - path = "game/gfx" + path = "gfx" start_from_root = yes name = { entity = { @@ -285,7 +404,7 @@ enums = { } complex_enum[model_locators] = { - path = "game/gfx" + path = "gfx" start_from_root = yes name = { entity = { @@ -297,7 +416,7 @@ enums = { } complex_enum[model_attachments] = { - path = "game/gfx" + path = "gfx" start_from_root = yes name = { entity = { diff --git a/Config/interface/gfx.cwt b/Config/interface/gfx.cwt index c3cfc19a..c3cc3ff1 100644 --- a/Config/interface/gfx.cwt +++ b/Config/interface/gfx.cwt @@ -1,11 +1,51 @@ types = { type[spriteType] = { - path = "game/interface" + path = "interface" + path = "dlc/dlc001_german_historical_portraits/interface" + path = "dlc/dlc002_polish_content_pack/interface" + path = "dlc/dlc003_rocket_launcher_unit_pack/interface" + path = "dlc/dlc004_famous_battleships_unit_pack/interface" + path = "dlc/dlc005_heavy_cruisers_unit_pack/interface" + path = "dlc/dlc006_soviet_tanks_unit_pack/interface" + path = "dlc/dlc007_german_tanks_unit_pack/interface" + path = "dlc/dlc008_french_tanks_unit_pack/interface" + path = "dlc/dlc009_british_tanks_unit_pack/interface" + path = "dlc/dlc010_us_tanks_unit_pack/interface" + path = "dlc/dlc011_german_march_order_music_pack/interface" + path = "dlc/dlc012_allied_radio_music_pack/interface" + path = "dlc/dlc013_sabaton/interface" + path = "dlc/dlc014_wallpaper/interface" + path = "dlc/dlc016_artbook/interface" + path = "dlc/dlc017_original_soundtrack/interface" + path = "dlc/dlc018_together_for_victory/interface" + path = "dlc/dlc019_sabaton_vol2/interface" + path = "dlc/dlc020_death_or_dishonor/interface" + path = "dlc/dlc021_anniversary_pack/interface" + path = "dlc/dlc022_waking_the_tiger/interface" + path = "dlc/dlc023_man_the_guns/interface" + path = "dlc/dlc024_man_the_guns_wallpaper/interface" + path = "dlc/dlc025_axis_armor_pack/interface" + path = "dlc/dlc026_radio_pack/interface" + path = "dlc/dlc027_la_resistance_preorder_bonus/interface" + path = "dlc/dlc028_la_resistance/interface" + path = "dlc/dlc029_allied_armor_pack/interface" + path = "dlc/dlc030_allied_speeches_pack/interface" + path = "dlc/dlc031_battle_for_the_bosporus/interface" + path = "dlc/dlc032_eastern_front_planes_pack/interface" + path = "dlc/dlc033_songs_of_the_eastern_front/interface" + path = "dlc/dlc034_no_step_back/interface" + path = "dlc/dlc035_no_step_back_preorder_bonus/interface" + path = "dlc/dlc036_by_blood_alone/interface" + path = "dlc/dlc037_by_blood_alone_preorder_bonus/interface" + path = "dlc/dlc038_arms_against_tyranny/interface" + path = "dlc/dlc039_arms_against_tyranny_preorder_bonus/interface" skip_root_key = spriteTypes path_extension = .gfx name_field = "name" ## type_key_filter = spriteType subtype[spriteType] = { } + ## type_key_filter = SpriteType + subtype[spriteType] = { } ## type_key_filter = frameAnimatedSpriteType subtype[spriteType] = { } ## type_key_filter = corneredTileSpriteType @@ -76,13 +116,13 @@ spriteType = { ## cardinality = 0..1 generate_mip_maps = bool subtype[spriteType] = { - textureFile = filepath + alias_name[dlc_path_textureFile] = alias_match_left[dlc_path_textureFile] } subtype[frameAnimatedSpriteType] = { - textureFile = filepath + alias_name[dlc_path_textureFile] = alias_match_left[dlc_path_textureFile] } subtype[corneredTileSpriteType] = { - textureFile = filepath + alias_name[dlc_path_textureFile] = alias_match_left[dlc_path_textureFile] borderSize = { x = int y = int } ## cardinality = 0..1 tilingCenter = bool @@ -95,7 +135,7 @@ spriteType = { textureFile2 = scalar } subtype[textSpriteType] = { - textureFile = filepath + alias_name[dlc_path_textureFile] = alias_match_left[dlc_path_textureFile] ## cardinality = 0..1 clicksound = click } diff --git a/Config/portraits.cwt b/Config/portraits.cwt new file mode 100644 index 00000000..25a05d42 --- /dev/null +++ b/Config/portraits.cwt @@ -0,0 +1,135 @@ +types = { + ## graph_related_types = { } + type[portrait] = { + path = "game/portraits" + ## type_key_filter = default + subtype[default] = { + } + ## type_key_filter = continent + subtype[contintent] = { + name = scalar + } + ## only_if_not = { default continent } + subtype[country] = { + unique = yes + } + } +} + +portrait = { + subtype[contintent] = { + ## cardinality = 0..1 + name = enum[continents] + } + ## cardinality = 0..1 + male = single_alias[genderportrait] + ## cardinality = 0..1 + female = single_alias[genderportrait] + + ## cardinality = 0..1 + army = single_alias_right[portraits] + + ## cardinality = 0..1 + navy = single_alias_right[portraits] + + ## cardinality = 0..1 + operative = single_alias_right[portraits] + + ## cardinality = 0..1 + political = { + ## cardinality = 0..inf + enum[sub_ideology] = single_alias_right[portraits] + ## cardinality = 0..inf + = single_alias_right[portraits] + } +} + +single_alias[portraits] = { + ## cardinality = 0..1 + male = single_alias_right[genderportrait] + ## cardinality = 0..1 + female = single_alias_right[genderportrait] +} + +single_alias[genderportrait] = { + ## cardinality = 0..inf + + ## cardinality = 0..inf + filepath + ## cardinality = 0..inf + filepath[dlc/dlc001_german_historical_portraits/] + ## cardinality = 0..inf + filepath[dlc/dlc002_polish_content_pack/] + ## cardinality = 0..inf + filepath[dlc/dlc003_rocket_launcher_unit_pack/] + ## cardinality = 0..inf + filepath[dlc/dlc004_famous_battleships_unit_pack/] + ## cardinality = 0..inf + filepath[dlc/dlc005_heavy_cruisers_unit_pack/] + ## cardinality = 0..inf + filepath[dlc/dlc006_soviet_tanks_unit_pack/] + ## cardinality = 0..inf + filepath[dlc/dlc007_german_tanks_unit_pack/] + ## cardinality = 0..inf + filepath[dlc/dlc008_french_tanks_unit_pack/] + ## cardinality = 0..inf + filepath[dlc/dlc009_british_tanks_unit_pack/] + ## cardinality = 0..inf + filepath[dlc/dlc010_us_tanks_unit_pack/] + ## cardinality = 0..inf + filepath[dlc/dlc011_german_march_order_music_pack/] + ## cardinality = 0..inf + filepath[dlc/dlc012_allied_radio_music_pack/] + ## cardinality = 0..inf + filepath[dlc/dlc013_sabaton/] + ## cardinality = 0..inf + filepath[dlc/dlc014_wallpaper/] + ## cardinality = 0..inf + filepath[dlc/dlc016_artbook/] + ## cardinality = 0..inf + filepath[dlc/dlc017_original_soundtrack/] + ## cardinality = 0..inf + filepath[dlc/dlc018_together_for_victory/] + ## cardinality = 0..inf + filepath[dlc/dlc019_sabaton_vol2/] + ## cardinality = 0..inf + filepath[dlc/dlc020_death_or_dishonor/] + ## cardinality = 0..inf + filepath[dlc/dlc021_anniversary_pack/] + ## cardinality = 0..inf + filepath[dlc/dlc022_waking_the_tiger/] + ## cardinality = 0..inf + filepath[dlc/dlc023_man_the_guns/] + ## cardinality = 0..inf + filepath[dlc/dlc024_man_the_guns_wallpaper/] + ## cardinality = 0..inf + filepath[dlc/dlc025_axis_armor_pack/] + ## cardinality = 0..inf + filepath[dlc/dlc026_radio_pack/] + ## cardinality = 0..inf + filepath[dlc/dlc027_la_resistance_preorder_bonus/] + ## cardinality = 0..inf + filepath[dlc/dlc028_la_resistance/] + ## cardinality = 0..inf + filepath[dlc/dlc029_allied_armor_pack/] + ## cardinality = 0..inf + filepath[dlc/dlc030_allied_speeches_pack/] + ## cardinality = 0..inf + filepath[dlc/dlc031_battle_for_the_bosporus/] + ## cardinality = 0..inf + filepath[dlc/dlc032_eastern_front_planes_pack/] + ## cardinality = 0..inf + filepath[dlc/dlc033_songs_of_the_eastern_front/] + ## cardinality = 0..inf + filepath[dlc/dlc034_no_step_back/] + ## cardinality = 0..inf + filepath[dlc/dlc035_no_step_back_preorder_bonus/] + ## cardinality = 0..inf + filepath[dlc/dlc036_by_blood_alone/] + ## cardinality = 0..inf + filepath[dlc/dlc037_by_blood_alone_preorder_bonus/] + ## cardinality = 0..inf + filepath[dlc/dlc038_arms_against_tyranny/] + ## cardinality = 0..inf + filepath[dlc/dlc039_arms_against_tyranny_preorder_bonus/] +} \ No newline at end of file diff --git a/Config/triggers_nsb.cwt b/Config/triggers_nsb.cwt index 3a93f990..a42c8241 100644 --- a/Config/triggers_nsb.cwt +++ b/Config/triggers_nsb.cwt @@ -264,7 +264,7 @@ alias[trigger:is_corps_commander] = bool alias[trigger:is_navy_leader] = bool ###Checks if the current character is an operative. -## scope = character +## scope = { character unit_leader operative } alias[trigger:is_operative] = bool ###Checks if the current character has an army ledger. From 7b474e0951b3742df08fd39016cd50d58c6bdc5c Mon Sep 17 00:00:00 2001 From: BiscuitCookies <25040791+BiscuitCookies@users.noreply.github.com> Date: Thu, 15 Feb 2024 21:39:53 +0100 Subject: [PATCH 45/72] Update national_focus.cwt --- Config/common/national_focus.cwt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Config/common/national_focus.cwt b/Config/common/national_focus.cwt index c8a15ca1..308c3011 100644 --- a/Config/common/national_focus.cwt +++ b/Config/common/national_focus.cwt @@ -19,6 +19,7 @@ types = { path = "game/common/national_focus" skip_root_key = focus_tree name_field = "id" + unique = yes } ## unique = yes @@ -27,6 +28,7 @@ types = { type[shared_focus] = { path = "game/common/national_focus" name_field = "id" + unique = yes ## only_if_not = { joint_focus } ## type_key_filter = shared_focus From 93992ee041a817ad282a9500e14ebb55bf2b9696 Mon Sep 17 00:00:00 2001 From: BiscuitCookies <25040791+BiscuitCookies@users.noreply.github.com> Date: Sat, 24 Feb 2024 23:24:16 +0100 Subject: [PATCH 46/72] fixing push_scope and scope instances with more than one scope --- Config/common/national_focus.cwt | 10 ++++++---- .../scripted_effects_locs_and_triggers.cwt | 3 +++ Config/effects.cwt | 20 ++++++------------- Config/effects_nsb.cwt | 2 +- Config/scopes.cwt | 2 +- Config/triggers.cwt | 4 ---- 6 files changed, 17 insertions(+), 24 deletions(-) diff --git a/Config/common/national_focus.cwt b/Config/common/national_focus.cwt index 308c3011..25e4fdbe 100644 --- a/Config/common/national_focus.cwt +++ b/Config/common/national_focus.cwt @@ -4,26 +4,30 @@ types = { type[focus_style] = { path = "game/common/national_focus" name_field = "name" + unique = yes } ## unique = yes - ## type_key_filter = focus_tree + ## type_key_filter = { focus_tree continuous_focus_palette } type[focus_tree] = { path = "game/common/national_focus" + path = "game/common/continuous_focuss" name_field = "id" + unique = yes } ## unique = yes ## type_key_filter = focus type[focus] = { path = "game/common/national_focus" + path = "game/common/continuous_focus" skip_root_key = focus_tree + skip_root_key = continuous_focus_palette name_field = "id" unique = yes } ## unique = yes - ## replace_scope = { root = country this = country } ## type_key_filter = { joint_focus shared_focus } type[shared_focus] = { path = "game/common/national_focus" @@ -43,7 +47,6 @@ types = { } } -## replace_scope = { root = country this = country } focus_tree = { id = localisation @@ -96,7 +99,6 @@ focus_tree = { } ## cardinality = 0..inf - ## push_scope = country focus = { id = localisation diff --git a/Config/common/scripted_effects_locs_and_triggers.cwt b/Config/common/scripted_effects_locs_and_triggers.cwt index 4bf2790a..fe71765d 100644 --- a/Config/common/scripted_effects_locs_and_triggers.cwt +++ b/Config/common/scripted_effects_locs_and_triggers.cwt @@ -2,12 +2,15 @@ types = { type[scripted_trigger] = { path = "game/common/scripted_triggers" + unique = yes } type[scripted_effect] = { path = "game/common/scripted_effects" + unique = yes } type[scripted_loc] = { name_field = "name" + unique = yes path = "game/common/scripted_loc" } } diff --git a/Config/effects.cwt b/Config/effects.cwt index a8e213e0..336c59d8 100644 --- a/Config/effects.cwt +++ b/Config/effects.cwt @@ -2215,7 +2215,7 @@ alias[effect:set_war_support] = variable_field[0..1] ### Executes children effects on random unit leader that fulfills the "limit" trigger. ## scope = country -## push_scope = { character unit_leader } +## push_scope = unit_leader alias[effect:random_unit_leader] = { ## cardinality = 0..1 limit = { @@ -2229,7 +2229,7 @@ alias[effect:random_unit_leader] = { ### Executes children effects on unit leaders that fulfills the "limit" trigger. ## scope = country -## push_scope = { character unit_leader } +## push_scope = unit_leader alias[effect:every_unit_leader] = { ### Apply the effect to this number of randomly selected entities ## cardinality = 0..1 @@ -2248,7 +2248,7 @@ alias[effect:every_unit_leader] = { ### Executes children effects on random army leader that fulfills the "limit" trigger. ## scope = country -## push_scope = { character unit_leader } +## push_scope = unit_leader alias[effect:random_army_leader] = { ## cardinality = 0..1 limit = { @@ -2262,7 +2262,7 @@ alias[effect:random_army_leader] = { ### Executes children effects on army leaders that fulfills the "limit" trigger. ## scope = country -## push_scope = { unit_leader character } +## push_scope = unit_leader alias[effect:every_army_leader] = { ### Apply the effect to this number of randomly selected entities ## cardinality = 0..1 @@ -2281,7 +2281,7 @@ alias[effect:every_army_leader] = { ### Executes children effects on random navy leader that fulfills the "limit" trigger. ## scope = country -## push_scope = any +## push_scope = unit_leader alias[effect:random_navy_leader] = { ## cardinality = 0..1 limit = { @@ -2295,7 +2295,7 @@ alias[effect:random_navy_leader] = { ### Executes children effects on navy leaders that fulfills the "limit" trigger. ## scope = country -## push_scope = any +## push_scope = unit_leader alias[effect:every_navy_leader] = { ### Apply the effect to this number of randomly selected entities ## cardinality = 0..1 @@ -2333,13 +2333,9 @@ alias[effect:destroy_ships] = { ### Set unit leader flag. ## scope = { unit_leader character operative } -## error_if_only_match: Is deprecated. Use set_character_flag instead -## severity = warning alias[effect:set_unit_leader_flag] = value_set[leader_flag] ### Set unit leader flag. ## scope = { unit_leader character operative } -## error_if_only_match: Is deprecated. Use set_character_flag instead -## severity = warning alias[effect:set_unit_leader_flag] = { flag = value_set[leader_flag] ## cardinality = 0..1 @@ -2349,8 +2345,6 @@ alias[effect:set_unit_leader_flag] = { } ### Modify unit leader flag. Only modifies if flag already exists. -## error_if_only_match = This is a deprecated command. Use clr_character_flag instead -## severity = warning ## scope = { unit_leader character } alias[effect:modify_unit_leader_flag] = { flag = value[leader_flag] @@ -2362,8 +2356,6 @@ alias[effect:modify_unit_leader_flag] = { ### Clear unit leader flag. ## scope = { unit_leader character } -## error_if_only_match = This is a deprecated command. Use clr_character_flag instead -## severity = warning alias[effect:clr_unit_leader_flag] = value[leader_flag] ### Sets the country that owns current scope general. diff --git a/Config/effects_nsb.cwt b/Config/effects_nsb.cwt index be771886..c2373eab 100644 --- a/Config/effects_nsb.cwt +++ b/Config/effects_nsb.cwt @@ -783,7 +783,7 @@ alias[effect:add_ideas] = value[advisor_token] alias[effect:remove_ideas] = value[advisor_token] ### damages units for given conditions. no tooltip generated -## scope = { country state } +## scope = { country state unit_leader } alias[effect:damage_units] = { ### specify a location ## cardinality = 0..1 diff --git a/Config/scopes.cwt b/Config/scopes.cwt index 1b6e8e29..fb485e25 100644 --- a/Config/scopes.cwt +++ b/Config/scopes.cwt @@ -54,7 +54,7 @@ alias[effect:OVERLORD] = { alias_name[effect] = alias_match_left[effect] } ## push_Scope = country alias[effect:CONTROLLER] = { alias_name[effect] = alias_match_left[effect] } -## scope = country state +## scope = country ## push_scope = state alias[effect:capital_scope] = { alias_name[effect] = alias_match_left[effect] } diff --git a/Config/triggers.cwt b/Config/triggers.cwt index 55f85fae..bab2f8d8 100644 --- a/Config/triggers.cwt +++ b/Config/triggers.cwt @@ -1608,14 +1608,10 @@ alias[trigger:is_field_marshal] = bool ### Has unit leader flag been setCheck flag val date set and days since set. ## scope = { unit_leader combat character operative } -## error_if_only_match: Is deprecated. Use has_character_flag instead -## severity = warning alias[trigger:has_unit_leader_flag] = value[leader_flag] ### Has unit leader flag been setCheck flag val date set and days since set. ## scope = { unit_leader combat character operative } -## error_if_only_match: Is deprecated. Use has_character_flag instead -## severity = warning alias[trigger:has_unit_leader_flag] = { flag = value[leader_flag] ## cardinality = 0..1 From 1d202d100d36813c55898fd7c1fee84060e7ee4c Mon Sep 17 00:00:00 2001 From: BiscuitCookies <25040791+BiscuitCookies@users.noreply.github.com> Date: Sat, 24 Feb 2024 23:24:44 +0100 Subject: [PATCH 47/72] another attempt at on_actions --- Config/on_actions.cwt | 1622 ++++++++++++++++++++++++++++++----------- 1 file changed, 1177 insertions(+), 445 deletions(-) diff --git a/Config/on_actions.cwt b/Config/on_actions.cwt index c10514b7..965f287b 100644 --- a/Config/on_actions.cwt +++ b/Config/on_actions.cwt @@ -1,582 +1,1316 @@ types = { type[on_action] = { - path = "game/common/on_actions" - } - type[on_action_tag] = { - path = "game/common/on_actions" - skip_root_key = on_actions - starts_with = on_daily_ - } - type[on_action_tag] = { - path = "game/common/on_actions" - skip_root_key = on_actions - starts_with = on_weekly_ - } - type[on_action_tag] = { - path = "game/common/on_actions" - skip_root_key = on_actions - starts_with = on_monthly_ - } + path = "game/common/on_actions" + ## starts_with = on_daily_ + subtype[on_action_daily] = { + starts_with = "on_daily_" + on_daily_enum[country_tags] = { } + } + ## starts_with = on_weekly_ + subtype[on_action_weekly] = { + skip_root_key = on_actions + starts_with = "on_weekly_" + } + ## starts_with = on_monthly_ + subtype[on_action_monthly] = { + skip_root_key = on_actions + starts_with = "on_monthly_" + } + ### + subtype[on_new_term_election] = { + on_new_term_election = { } + } + ### + subtype[on_ace_promoted] = { + on_ace_promoted = { } + } + ### + subtype[on_aces_killed_each_other] = { + on_aces_killed_each_other = { } + } + ### + subtype[on_ace_killed_by_ace] = { + on_ace_killed_by_ace = { } + } + ### + subtype[on_ace_killed_other_ace] = { + on_ace_killed_other_ace = { } + } + ### + subtype[on_ace_killed] = { + on_ace_killed = { } + } + ### + subtype[on_ace_killed_on_accident] = { + on_ace_killed_on_accident = { } + } + + subtype[on_non_ace_killed_other_ace] = { + on_non_ace_killed_other_ace = { } + } + ### + subtype[on_justifying_wargoal_pulse] = { + on_justifying_wargoal_pulse = { } + } + ### + subtype[on_wargoal_expire] = { + on_wargoal_expire = { } + } + ### + subtype[on_nuke_drop] = { + on_nuke_drop = { } + } + ### + subtype[on_border_war_lost] = { + on_border_war_lost = { } + } + ### + subtype[on_leave_faction] = { + on_leave_faction = { } + } + ### + subtype[on_create_faction] = { + on_create_faction = { } + } + ### + subtype[on_offer_join_faction] = { + on_offer_join_faction = { } + } + ### + subtype[on_join_faction] = { + on_join_faction = { } + } + ### + subtype[on_declare_war] = { + on_declare_war = { } + } + ### + subtype[on_faction_formed] = { + on_faction_formed = { } + } + ### + subtype[on_capitulation] = { + on_capitulation = { } + } + ### + subtype[on_capitulation_immediate] = { + on_capitulation_immediate = { } + } + ### + subtype[on_uncapitulation] = { + on_uncapitulation = { } + } + ### + subtype[on_government_change] = { + on_government_change = { } + } + ### + subtype[on_naval_invasion] = { + on_naval_invasion = { } + } + ### + subtype[on_coup_succeeded] = { + on_coup_succeeded = { } + } + ### + subtype[on_civil_war_end] = { + on_civil_war_end = { } + } + ### + subtype[on_puppet] = { + on_puppet = { } + } + ### + subtype[on_release_as_puppet] = { + on_release_as_puppet = { } + } + ### + subtype[on_annex] = { + on_annex = { } + } + ### + subtype[on_subject_free] = { + on_subject_free = { } + } + ### + subtype[on_subject_autonomy_level_change] = { + on_subject_autonomy_level_change = { } + } + ### + subtype[on_subject_annexed] = { + on_subject_annexed = { } + } + ### + subtype[on_release_as_free] = { + on_release_as_free = { } + } + ### + subtype[on_peaceconference_ended] = { + on_peaceconference_ended = { } + } + ### + subtype[on_generate_wargoal] = { + on_generate_wargoal = { } + } + ### + subtype[on_guarantee] = { + on_guarantee = { } + } + ### + subtype[on_military_access] = { + on_military_access = { } + } + ### + subtype[on_offer_military_access] = { + on_offer_military_access = { } + } + ### + subtype[on_call_allies] = { + on_call_allies = { } + } + ### + subtype[on_join_allies] = { + on_join_allies = { } + } + ### + subtype[on_lend_lease] = { + on_lend_lease = { } + } + ### + subtype[on_incoming_lend_lease] = { + on_incoming_lend_lease = { } + } + ### + subtype[on_incoming_lend_lease] = { + on_incoming_lend_lease = { } + } + ### + subtype[on_send_volunteers] = { + on_send_volunteers = { } + } + ### + subtype[on_send_expeditionary_force] = { + on_send_expeditionary_force = { } + } + ### + subtype[on_return_expeditionary_forces] = { + on_return_expeditionary_forces = { } + } + ### + subtype[on_request_expeditionary_forces] = { + on_request_expeditionary_forces = { } + } + ### + subtype[on_ask_for_state_control] = { + on_ask_for_state_control = { } + } + ### + subtype[on_give_state_control] = { + on_give_state_control = { } + } + ### + subtype[on_war_relation_added] = { + on_war_relation_added = { } + } + ### + subtype[on_liberate] = { + on_liberate = { } + } + ### + subtype[on_startup] = { + on_startup = { } + } + ### + subtype[on_daily] = { + on_daily = { } + } + ### + subtype[on_daily_tag] = { + on_daily_enum[country_tags] = { } + } + ### + subtype[on_weekly] = { + on_weekly = { } + } + ### + subtype[on_weekly_tag] = { + on_weekly_enum[country_tags] = { } + } + ### + subtype[on_monthly] = { + on_monthly = { } + } + ### + subtype[on_monthly_tag] = { + on_monthly_enum[country_tags] = { } + } + ### + subtype[on_yearly] = { + on_yearly = { } + } + ### + subtype[on_bi_yearly_pulse] = { + on_bi_yearly_pulse = { } + } + ### + subtype[on_thri_yearly_pulse] = { + on_thri_yearly_pulse = { } + } + ### + subtype[on_state_control_changed] = { + on_state_control_changed = { } + } + ### + subtype[on_unit_leader_created] = { + on_unit_leader_created = { } + } + ### + subtype[on_unit_leader_level_up] = { + on_unit_leader_level_up = { } + } + ### + subtype[on_army_leader_daily] = { + on_army_leader_daily = { } + } + ### + subtype[on_army_leader_won_combat] = { + on_army_leader_won_combat = { } + } + ### + subtype[on_army_leader_lost_combat] = { + on_army_leader_lost_combat = { } + } + ### + subtype[on_army_leader_promoted] = { + on_army_leader_promoted = { } + } + ### + subtype[on_host_changed_from_capitulation] = { + on_host_changed_from_capitulation = { } + } + ### + subtype[on_exile_government_reinstated] = { + on_exile_government_reinstated = { } + } + ### + subtype[on_civil_war_end_before_annexation] = { + on_civil_war_end_before_annexation = { } + } + ### + subtype[on_government_exiled] = { + on_government_exiled = { } + } + ### + subtype[on_pride_of_the_fleet_sunk] = { + on_pride_of_the_fleet_sunk = { } + } + ### + subtype[on_assume_faction_leadership] = { + on_assume_faction_leadership = { } + } + ### + subtype[on_war] = { + on_war = { } + } + ### + subtype[on_peace] = { + on_peace = { } + } + ### + subtype[on_peace_proposal] = { + on_peace_proposal = { } + } + ### + subtype[on_operative_on_mission_spotted] = { + on_operative_on_mission_spotted = { } + } + ### + subtype[on_operative_captured] = { + on_operative_captured = { } + } + ### + subtype[on_operative_death] = { + on_operative_death = { } + } + ### + subtype[on_operative_detected_during_operation] = { + on_operative_detected_during_operation = { } + } + ### + subtype[on_operative_created] = { + on_operative_created = { } + } + ### + subtype[on_operative_recruited] = { + on_operative_recruited = { } + } + ### + subtype[on_operation_completed] = { + on_operation_completed = { } + } + ### + subtype[on_fully_decrypted_cipher] = { + on_fully_decrypted_cipher = { } + } + ### + subtype[on_activated_active_decryption_bonuses] = { + on_activated_active_decryption_bonuses = { } + } + ### + subtype[on_paradrop] = { + on_paradrop = { } + } + ### + subtype[on_ruling_party_change] = { + on_ruling_party_change = { } + } + ### + subtype[on_stage_coup] = { + on_stage_coup = { } + } + ### + subtype[on_peaceconference_started] = { + on_peaceconference_started = { } + } + ### + subtype[on_unit_leader_promote_from_ranks_veteran] = { + on_unit_leader_promote_from_ranks_veteran = { } + } + ### + subtype[on_unit_leader_promote_from_ranks_green] = { + on_unit_leader_promote_from_ranks_green = { } + } + ### + subtype[on_add_history] = { + on_add_history = { } + } + subtype[on_send_attache] = { + on_send_attache = { } + } + } } -### Tag isn't checked for validity -## replace_scope = { THIS = country ROOT = country } -on_action_tag = single_alias_right[country_event_effect] + +# replace_scope = { THIS = country ROOT = country } +# on_action_tag = single_alias_right[country_event_effect] on_action = { + # cardinality = 0..inf + # alias_name[on_act] = alias_match_left[on_act] + # Tag isn't checked for validity + # replace_scope = { THIS = country ROOT = country } + # cardinality = 0..inf + # = { + # cardinality = 0..inf + # replace_scope = { THIS = country ROOT = country } + #random_events = { + ## cardinality = 0..inf + #int = 0 + ## cardinality = 0..inf + #int = + #} + # cardinality = 0..1 + # replace_scope = { THIS = country ROOT = country } + #effect = { + #alias_name[effect] = alias_match_left[effect] + #} + #} + + subtype[on_action_daily] = { + ### Triggered daily for the specified country. Tag isn't checked for validity + ## replace_scope = { THIS = country ROOT = country } + ## cardinality = 0..inf + on_daily_enum[country_tags] = single_alias_right[country_event_effect] + } ## cardinality = 0..inf - alias_name[on_act] = alias_match_left[on_act] - ### Tag isn't checked for validity - ## replace_scope = { THIS = country ROOT = country } + subtype[on_action_weekly] = { + ### Triggered weekly for the specified country. Tag isn't checked for validity + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country } + ## cardinality = 0..inf + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = + } + ## replace_scope = { THIS = country ROOT = country } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } + } ## cardinality = 0..inf - = single_alias_right[country_event_effect] -} - -### Trigger the following commands whenever an election happens or is called by the hold_election command. -## replace_scope = { THIS = country ROOT = country } -alias[on_act:on_new_term_election] = single_alias_right[country_event_effect] - -### Trigger the following commands whenever an ace is created. FROM = Ace -## replace_scope = { THIS = country root = country FROM = any } -alias[on_act:on_ace_promoted] = single_alias_right[country_event_effect] - -### Trigger the following commands whenever two aces kill each other in air duel. FROM = our ace, PREV = enemy ace, has killed FROM. -## replace_scope = { THIS = country root = country FROM = any prev = any } -alias[on_act:on_aces_killed_each_other] = single_alias_right[country_event_effect] - -### Trigger the following commands whenever an aces is killed by another ace. FROM = our ace, PREV = enemy ace, has killed FROM. -## replace_scope = { THIS = country root = country FROM = any prev = any } -alias[on_act:on_ace_killed_by_ace] = single_alias_right[country_event_effect] - -### Trigger the following commands whenever an aces is killed by another ace (surviving ace side). FROM = our ace, PREV = enemy ace, killed by FROM. -## replace_scope = { THIS = country root = country FROM = any prev = any } -alias[on_act:on_ace_killed_other_ace] = single_alias_right[country_event_effect] - -### Trigger the following commands whenever an aces is killed. FROM = ace -## replace_scope = { THIS = country root = country FROM = any } -alias[on_act:on_ace_killed] = single_alias_right[country_event_effect] - -## replace_scope = { THIS = country root = country FROM = any } -alias[on_act:on_ace_killed_on_accident] = single_alias_right[country_event_effect] - -## replace_scope = { THIS = country root = country FROM = any } -alias[on_act:on_non_ace_killed_other_ace] = single_alias_right[country_event_effect] - -### Trigger the following commands whenever the country is targeted by a wargoal under justification. FROM = target nation. Checked every day. -## replace_scope = { THIS = country ROOT = country FROM = country } -alias[on_act:on_justifying_wargoal_pulse] = single_alias_right[country_event_effect] - -## replace_scope = { THIS = country ROOT = country FROM = country } -alias[on_act:on_wargoal_expire] = single_alias_right[country_event_effect] - -## replace_scope = { THIS = country ROOT = country FROM = state } -alias[on_act:on_nuke_drop] = single_alias_right[country_event_effect] - -### Trigger the following commands whenever a country loses a border war. "Border war" refers to the state-based border wars enabled with set_border_war, represented with orange stripes over the state, rather than border wars that simulate combat between countries. The default scope is the state that lost the border war. -## replace_scope = { THIS = state ROOT = country } -alias[on_act:on_border_war_lost] = single_alias_right[country_event_effect] - -## replace_scope = { THIS = country ROOT = country } -alias[on_act:on_leave_faction] = single_alias_right[country_event_effect] - -### Trigger the following commands whenever a country create a faction. FROM is the one that joins the faction. -## replace_scope = { THIS = country ROOT = country from = country } -alias[on_act:on_create_faction] = single_alias_right[country_event_effect] + subtype[on_action_monthly] = { + ### Triggered monthly for the specified country. Tag isn't checked for validity + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country } + ## cardinality = 0..inf + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = + } + ## replace_scope = { THIS = country ROOT = country } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } + } -### Trigger the following commands whenever a country joins a faction after being invited. FROM is the country invited, THIS and ROOT are the faction leader. -## replace_scope = { THIS = country ROOT = country FROM = country } -alias[on_act:on_offer_join_faction] = single_alias_right[country_event_effect] + subtype[on_new_term_election] = { + ### Trigger the following commands whenever an election happens or is called by the hold_election command. + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country } + on_new_term_election = single_alias_right[country_event_effect] + } -### Trigger the following commands for a faction leader whenever a country joins after they ask to do so. FROM is faction leader, ROOT and THIS are the country that joins. -## replace_scope = { THIS = country ROOT = country FROM = country } -alias[on_act:on_join_faction] = single_alias_right[country_event_effect] + subtype[on_ace_promoted] = { + ### Trigger the following commands whenever an ace is created. FROM = Ace + ## cardinality = 1..inf + ## replace_scope = { THIS = country root = country FROM = any } + on_ace_promoted = single_alias_right[country_event_effect] + } -## replace_scope = { THIS = country ROOT = country FROM = country } -alias[on_act:on_declare_war] = single_alias_right[country_event_effect] + subtype[on_aces_killed_each_other] = { + ### Trigger the following commands whenever two aces kill each other in air duel. FROM = our ace, PREV = enemy ace, has killed FROM. + ## cardinality = 1..inf + ## replace_scope = { THIS = country root = country FROM = any prev = any } + on_aces_killed_each_other = single_alias_right[country_event_effect] + } -## replace_scope = { THIS = country ROOT = country } -alias[on_act:on_faction_formed] = single_alias_right[country_event_effect] + subtype[on_ace_killed_by_ace] = { + ### Trigger the following commands whenever an aces is killed by another ace. FROM = our ace, PREV = enemy ace, has killed FROM. + ## cardinality = 1..inf + ## replace_scope = { THIS = country root = country FROM = any prev = any } + on_ace_killed_by_ace = single_alias_right[country_event_effect] + } -## replace_scope = { THIS = country ROOT = country FROM = country } -alias[on_act:on_capitulation] = single_alias_right[country_event_effect] + subtype[on_ace_killed_other_ace] = { + ### Trigger the following commands whenever an aces is killed by another ace (surviving ace side). FROM = our ace, PREV = enemy ace, killed by FROM. + ## cardinality = 1..inf + ## replace_scope = { THIS = country root = country FROM = any prev = any } + on_ace_killed_other_ace = single_alias_right[country_event_effect] + } -## replace_scope = { THIS = country ROOT = country FROM = country } -alias[on_act:on_capitulation_immediate] = single_alias_right[country_event_effect] + subtype[on_ace_killed] = { + ### Trigger the following commands whenever an aces is killed. FROM = ace + ## cardinality = 1..inf + ## replace_scope = { THIS = country root = country FROM = any } + on_ace_killed = single_alias_right[country_event_effect] + } -## replace_scope = { THIS = country ROOT = country } -alias[on_act:on_uncapitulation] = single_alias_right[country_event_effect] + subtype[on_ace_killed_on_accident] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country root = country FROM = any } + on_ace_killed_on_accident = single_alias_right[country_event_effect] + } -## replace_scope = { THIS = country ROOT = country } -alias[on_act:on_government_change] = single_alias_right[country_event_effect] + subtype[on_non_ace_killed_other_ace] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country root = country FROM = any } + on_non_ace_killed_other_ace = single_alias_right[country_event_effect] + } -### Triggers the following commands whenever a sea invasion is made. THIS (default scope) is the invaded state, ROOT is the country that invades, FROM is the state where the invasion started -## replace_scope = { THIS = state ROOT = country FROM = state } -alias[on_act:on_naval_invasion] = single_alias_right[country_event_effect] + subtype[on_justifying_wargoal_pulse] = { + ### Trigger the following commands whenever the country is targeted by a wargoal under justification. FROM = target nation. Checked every day. + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_justifying_wargoal_pulse = single_alias_right[country_event_effect] + } -## replace_scope = { THIS = country ROOT = country } -alias[on_act:on_coup_succeeded] = single_alias_right[country_event_effect] + subtype[on_wargoal_expire] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_wargoal_expire = single_alias_right[country_event_effect] + } -## replace_scope = { THIS = country ROOT = country FROM = country } -alias[on_act:on_civil_war_end] = single_alias_right[country_event_effect] + subtype[on_nuke_drop] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country FROM = state } + on_nuke_drop = single_alias_right[country_event_effect] + } -## replace_scope = { THIS = country ROOT = country FROM = country } -alias[on_act:on_puppet] = single_alias_right[country_event_effect] + subtype[on_border_war_lost] = { + ### Trigger the following commands whenever a country loses a border war. "Border war" refers to the state-based border wars enabled with set_border_war, represented with orange stripes over the state, rather than border wars that simulate combat between countries. The default scope is the state that lost the border war. + ## cardinality = 1..inf + ## replace_scope = { THIS = state ROOT = country } + on_border_war_lost = single_alias_right[country_event_effect] + } -## replace_scope = { THIS = country ROOT = country FROM = country } -alias[on_act:on_release_as_puppet] = single_alias_right[country_event_effect] + subtype[on_leave_faction] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country } + on_leave_faction = single_alias_right[country_event_effect] + } -## replace_scope = { THIS = country ROOT = country FROM = country } -alias[on_act:on_annex] = single_alias_right[country_event_effect] + subtype[on_create_faction] = { + ### Trigger the following commands whenever a country create a faction. FROM is the one that joins the faction. + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country from = country } + on_create_faction = single_alias_right[country_event_effect] + } -## replace_scope = { THIS = country ROOT = country FROM = country } -alias[on_act:on_subject_free] = single_alias_right[country_event_effect] + subtype[on_offer_join_faction] = { + ### Trigger the following commands whenever a country joins a faction after being invited. FROM is the country invited, THIS and ROOT are the faction leader. + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_offer_join_faction = single_alias_right[country_event_effect] + } -## replace_scope = { THIS = country ROOT = country FROM = country } -alias[on_act:on_subject_autonomy_level_change] = single_alias_right[country_event_effect] + subtype[on_join_faction] = { + ### Trigger the following commands for a faction leader whenever a country joins after they ask to do so. FROM is faction leader, ROOT and THIS are the country that joins. + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_join_faction = single_alias_right[country_event_effect] + } -## replace_scope = { THIS = country ROOT = country FROM = country } -alias[on_act:on_subject_annexed] = single_alias_right[country_event_effect] + subtype[on_declare_war] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_declare_war = single_alias_right[country_event_effect] + } -## replace_scope = { THIS = country ROOT = country FROM = country } -alias[on_act:on_release_as_free] = single_alias_right[country_event_effect] + subtype[on_faction_formed] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country } + on_faction_formed = single_alias_right[country_event_effect] + } -## replace_scope = { THIS = country ROOT = country FROM = country } -alias[on_act:on_peaceconference_ended] = single_alias_right[country_event_effect] + subtype[on_capitulation] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_capitulation = single_alias_right[country_event_effect] + } -## replace_scope = { THIS = country ROOT = country FROM = country } -alias[on_act:on_generate_wargoal] = single_alias_right[country_event_effect] + subtype[on_capitulation_immediate] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_capitulation_immediate = single_alias_right[country_event_effect] + } -## replace_scope = { THIS = country ROOT = country FROM = country } -alias[on_act:on_guarantee] = single_alias_right[country_event_effect] + subtype[on_uncapitulation] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country } + on_uncapitulation = single_alias_right[country_event_effect] + } -## replace_scope = { THIS = country ROOT = country FROM = country } -alias[on_act:on_military_access] = single_alias_right[country_event_effect] + subtype[on_government_change] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country } + on_government_change = single_alias_right[country_event_effect] + } -## replace_scope = { THIS = country ROOT = country FROM = country } -alias[on_act:on_offer_military_access] = single_alias_right[country_event_effect] + subtype[on_naval_invasion] = { + ### Triggers the following commands whenever a sea invasion is made. THIS (default scope) is the invaded state, ROOT is the country that invades, FROM is the state where the invasion started + ## cardinality = 1..inf + ## replace_scope = { THIS = state ROOT = country FROM = state } + on_naval_invasion = single_alias_right[country_event_effect] + } -## replace_scope = { THIS = country ROOT = country FROM = country } -alias[on_act:on_call_allies] = single_alias_right[country_event_effect] + subtype[on_coup_succeeded] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country } + on_coup_succeeded = single_alias_right[country_event_effect] + } -## replace_scope = { THIS = country ROOT = country FROM = country } -alias[on_act:on_join_allies] = single_alias_right[country_event_effect] + subtype[on_civil_war_end] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_civil_war_end = single_alias_right[country_event_effect] + } -## replace_scope = { THIS = country ROOT = country FROM = country } -alias[on_act:on_lend_lease] = single_alias_right[country_event_effect] + subtype[on_puppet] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_puppet = single_alias_right[country_event_effect] + } -## replace_scope = { THIS = country ROOT = country FROM = country } -alias[on_act:on_incoming_lend_lease] = single_alias_right[country_event_effect] + subtype[on_release_as_puppet] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_release_as_puppet = single_alias_right[country_event_effect] + } -## replace_scope = { THIS = country ROOT = country FROM = country } -alias[on_act:on_incoming_lend_lease] = single_alias_right[country_event_effect] + subtype[on_annex] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_annex = single_alias_right[country_event_effect] + } -## replace_scope = { THIS = country ROOT = country FROM = country } -alias[on_act:on_send_volunteers] = single_alias_right[country_event_effect] + subtype[on_subject_free] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_subject_free = single_alias_right[country_event_effect] + } -## replace_scope = { THIS = country ROOT = country FROM = country } -alias[on_act:on_send_expeditionary_force] = single_alias_right[country_event_effect] + subtype[on_subject_autonomy_level_change] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_subject_autonomy_level_change = single_alias_right[country_event_effect] + } -## replace_scope = { THIS = country ROOT = country FROM = country } -alias[on_act:on_return_expeditionary_forces] = single_alias_right[country_event_effect] + subtype[on_subject_annexed] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_subject_annexed = single_alias_right[country_event_effect] + } -## replace_scope = { THIS = country ROOT = country FROM = country } -alias[on_act:on_request_expeditionary_forces] = single_alias_right[country_event_effect] + subtype[on_release_as_free] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_release_as_free = single_alias_right[country_event_effect] + } -## replace_scope = { THIS = country ROOT = country FROM = country } -alias[on_act:on_ask_for_state_control] = single_alias_right[country_event_effect] + subtype[on_peaceconference_ended] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_peaceconference_ended = single_alias_right[country_event_effect] + } -## replace_scope = { THIS = country ROOT = country FROM = country } -alias[on_act:on_give_state_control] = single_alias_right[country_event_effect] + subtype[on_generate_wargoal] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_generate_wargoal = single_alias_right[country_event_effect] + } -## replace_scope = { THIS = country ROOT = country FROM = country } -alias[on_act:on_war_relation_added] = single_alias_right[country_event_effect] + subtype[on_guarantee] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_guarantee = single_alias_right[country_event_effect] + } -## replace_scope = { THIS = country ROOT = country FROM = country } -alias[on_act:on_liberate] = single_alias_right[country_event_effect] + subtype[on_military_access] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_military_access = single_alias_right[country_event_effect] + } -## replace_scope = { THIS = invalid ROOT = invalid from = invalid } -alias[on_act:on_startup] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = + subtype[on_offer_military_access] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_offer_military_access = single_alias_right[country_event_effect] } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] + + subtype[on_call_allies] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_call_allies = single_alias_right[country_event_effect] } -} -## replace_scope = { THIS = country ROOT = country } -alias[on_act:on_daily] = single_alias_right[country_event_effect] + subtype[on_join_allies] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_join_allies = single_alias_right[country_event_effect] + } -## replace_scope = { THIS = country ROOT = country } -alias[on_act:on_daily_enum[country_tags]] = single_alias_right[country_event_effect] + subtype[on_lend_lease] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_lend_lease = single_alias_right[country_event_effect] + } -## replace_scope = { THIS = country ROOT = country } -alias[on_act:on_weekly] = single_alias_right[country_event_effect] + subtype[on_incoming_lend_lease] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_incoming_lend_lease = single_alias_right[country_event_effect] + } -## replace_scope = { THIS = country ROOT = country } -alias[on_act:on_weekly_enum[country_tags]] = single_alias_right[country_event_effect] + subtype[on_incoming_lend_lease] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_incoming_lend_lease = single_alias_right[country_event_effect] + } -## replace_scope = { THIS = country ROOT = country } -alias[on_act:on_monthly] = single_alias_right[country_event_effect] + subtype[on_send_volunteers] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_send_volunteers = single_alias_right[country_event_effect] + } -## replace_scope = { THIS = country ROOT = country } -alias[on_act:on_monthly_enum[country_tags]] = single_alias_right[country_event_effect] -alias[on_act:on_yearly] = single_alias_right[country_event_effect] + subtype[on_send_expeditionary_force] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_send_expeditionary_force = single_alias_right[country_event_effect] + } -alias[on_act:on_thri_yearly_pulse] = single_alias_right[country_event_effect] + subtype[on_return_expeditionary_forces] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_return_expeditionary_forces = single_alias_right[country_event_effect] + } -alias[on_act:on_bi_yearly_pulse] = single_alias_right[country_event_effect] + subtype[on_request_expeditionary_forces] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_request_expeditionary_forces = single_alias_right[country_event_effect] + } -## replace_scope = { ROOT = country THIS = country FROM = country FROMFROM = state } -alias[on_act:on_state_control_changed] = single_alias_right[country_event_effect] + subtype[on_ask_for_state_control] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_ask_for_state_control = single_alias_right[country_event_effect] + } -## replace_scope = { THIS = unit_leader ROOT = unit_leader from = country } -alias[on_act:on_unit_leader_created] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = + subtype[on_give_state_control] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_give_state_control = single_alias_right[country_event_effect] } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] + + subtype[on_war_relation_added] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_war_relation_added = single_alias_right[country_event_effect] } -} -## replace_scope = { THIS = unit_leader ROOT = unit_leader from = country } -alias[on_act:on_unit_leader_level_up] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = + subtype[on_liberate] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_liberate = single_alias_right[country_event_effect] } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] + + subtype[on_startup] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = invalid ROOT = invalid from = invalid } + on_startup = { + ## cardinality = 0..1 + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = + } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } + } } -} -## replace_scope = { THIS = unit_leader ROOT = unit_leader FROM = country } -alias[on_act:on_army_leader_daily] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = + subtype[on_daily] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country } + on_daily = single_alias_right[country_event_effect] } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] + + subtype[on_daily_tag] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country } + on_daily_enum[country_tags] = single_alias_right[country_event_effect] } -} -## replace_scope = { THIS = unit_leader ROOT = unit_leader FROM = country } -alias[on_act:on_army_leader_won_combat] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = + subtype[on_weekly] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country } + on_weekly = single_alias_right[country_event_effect] } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] + + subtype[on_weekly_tag] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country } + on_weekly_enum[country_tags] = single_alias_right[country_event_effect] } -} -## replace_scope = { THIS = unit_leader ROOT = unit_leader FROM = country } -alias[on_act:on_army_leader_lost_combat] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = + subtype[on_monthly] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country } + on_monthly = single_alias_right[country_event_effect] } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] + + subtype[on_monthly_tag] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country } + on_monthly_enum[country_tags] = single_alias_right[country_event_effect] } -} -## replace_scope = { THIS = unit_leader ROOT = unit_leader from = country } -alias[on_act:on_army_leader_promoted] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = + subtype[on_yearly] = { + on_yearly = single_alias_right[country_event_effect] } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] + + subtype[on_thri_yearly_pulse] = { + on_thri_yearly_pulse = single_alias_right[country_event_effect] } -} -## replace_scope = { THIS = country ROOT = country FROM = country FROMFROM = country } -alias[on_act:on_host_changed_from_capitulation] = single_alias_right[country_event_effect] + subtype[on_bi_yearly_pulse] = { + on_bi_yearly_pulse = single_alias_right[country_event_effect] + } -## replace_scope = { THIS = country ROOT = country FROM = country FROMFROM = country } -alias[on_act:on_exile_government_reinstated] = single_alias_right[country_event_effect] + subtype[on_state_control_changed] = { + ## cardinality = 1..inf + ## replace_scope = { ROOT = country THIS = country FROM = country FROMFROM = state } + on_state_control_changed = single_alias_right[country_event_effect] + } -## replace_scope = { THIS = country ROOT = country FROM = country } -alias[on_act:on_civil_war_end_before_annexation] = single_alias_right[country_event_effect] + subtype[on_unit_leader_created] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = unit_leader ROOT = unit_leader from = country } + on_unit_leader_created = { + ## cardinality = 0..1 + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = + } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } + } + } -## replace_scope = { THIS = country ROOT = country } -alias[on_act:on_government_exiled] = single_alias_right[country_event_effect] + subtype[on_unit_leader_level_up] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = unit_leader ROOT = unit_leader from = country } + on_unit_leader_level_up = { + ## cardinality = 0..1 + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = + } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } + } + } -## replace_scope = { THIS = country ROOT = country FROM = country } -alias[on_act:on_pride_of_the_fleet_sunk] = single_alias_right[country_event_effect] + subtype[on_army_leader_daily] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = unit_leader ROOT = unit_leader FROM = country } + on_army_leader_daily = { + ## cardinality = 0..1 + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = + } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } + } + } -## replace_scope = { THIS = country ROOT = country FROM = country } -alias[on_act:on_assume_faction_leadership] = single_alias_right[country_event_effect] + subtype[on_army_leader_won_combat] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = unit_leader ROOT = unit_leader FROM = country } + on_army_leader_won_combat = { + ## cardinality = 0..1 + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = + } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } + } + } -## replace_scope = { THIS = country ROOT = country FROM = country } -alias[on_act:on_war] = single_alias_right[country_event_effect] + subtype[on_army_leader_lost_combat] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = unit_leader ROOT = unit_leader FROM = country } + on_army_leader_lost_combat = { + ## cardinality = 0..1 + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = + } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } + } + } -## replace_scope = { THIS = country ROOT = country FROM = country } -alias[on_act:on_peace] = single_alias_right[country_event_effect] + subtype[on_army_leader_promoted] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = unit_leader ROOT = unit_leader from = country } + on_army_leader_promoted = { + ## cardinality = 0..1 + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = + } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } + } + } -## replace_scope = { THIS = country ROOT = country FROM = country } -alias[on_act:on_peace_proposal] = single_alias_right[country_event_effect] + subtype[on_host_changed_from_capitulation] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country FROM = country FROMFROM = country } + on_host_changed_from_capitulation = single_alias_right[country_event_effect] + } -## replace_scope = { THIS = operative ROOT = country FROM = country } -alias[on_act:on_operative_on_mission_spotted] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = + subtype[on_exile_government_reinstated] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country FROM = country FROMFROM = country } + on_exile_government_reinstated = single_alias_right[country_event_effect] } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] + + subtype[on_civil_war_end_before_annexation] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_civil_war_end_before_annexation = single_alias_right[country_event_effect] } -} -## replace_scope = { THIS = operative ROOT = country FROM = country } -alias[on_act:on_operative_captured] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = + subtype[on_government_exiled] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country } + on_government_exiled = single_alias_right[country_event_effect] } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] + + subtype[on_pride_of_the_fleet_sunk] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_pride_of_the_fleet_sunk = single_alias_right[country_event_effect] } -} -## replace_scope = { THIS = operative ROOT = country FROM = country } -alias[on_act:on_operative_death] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = + subtype[on_assume_faction_leadership] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_assume_faction_leadership = single_alias_right[country_event_effect] } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] + + subtype[on_war] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_war = single_alias_right[country_event_effect] } -} -## replace_scope = { THIS = operative ROOT = country FROM = country FROMFROM = state } -alias[on_act:on_operative_detected_during_operation] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = + subtype[on_peace] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_peace = single_alias_right[country_event_effect] } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] + + subtype[on_peace_proposal] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_peace_proposal = single_alias_right[country_event_effect] } -} -## replace_scope = { THIS = operative ROOT = operative FROM = country } -alias[on_act:on_operative_created] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = + subtype[on_operative_on_mission_spotted] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = operative ROOT = country FROM = country } + on_operative_on_mission_spotted = { + ## cardinality = 0..1 + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = + } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } + } } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] + + subtype[on_operative_captured] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = operative ROOT = country FROM = country } + on_operative_captured = { + ## cardinality = 0..1 + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = + } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } + } } -} -## replace_scope = { THIS = operative ROOT = operative FROM = country } -alias[on_act:on_operative_recruited] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = + subtype[on_operative_death] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = operative ROOT = country FROM = country } + on_operative_death = { + ## cardinality = 0..1 + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = + } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } + } } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] + + subtype[on_operative_detected_during_operation] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = operative ROOT = country FROM = country FROMFROM = state } + on_operative_detected_during_operation = { + ## cardinality = 0..1 + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = + } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } + } } -} -## replace_scope = { THIS = operative ROOT = country FROM = country } -alias[on_act:on_operation_completed] = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = + subtype[on_operative_created] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = operative ROOT = operative FROM = country } + on_operative_created = { + ## cardinality = 0..1 + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = + } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } + } } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] + + subtype[on_operative_recruited] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = operative ROOT = operative FROM = country } + on_operative_recruited = { + ## cardinality = 0..1 + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = + } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } + } } -} -## replace_scope = { THIS = country ROOT = country FROM = country } -alias[on_act:on_fully_decrypted_cipher] = single_alias_right[country_event_effect] + subtype[on_operation_completed] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = operative ROOT = country FROM = country } + on_operation_completed = { + ## cardinality = 0..1 + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = + } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } + } + } -## replace_scope = { THIS = country ROOT = country FROM = country } -alias[on_act:on_activated_active_decryption_bonuses] = single_alias_right[country_event_effect] + subtype[on_fully_decrypted_cipher] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_fully_decrypted_cipher = single_alias_right[country_event_effect] + } -## replace_scope = { THIS = state ROOT = country FROM = country } -alias[on_act:on_units_paradropped_in_state] = single_alias_right[country_event_effect] + subtype[on_activated_active_decryption_bonuses] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_activated_active_decryption_bonuses = single_alias_right[country_event_effect] + } -## replace_scope = { THIS = state ROOT = country FROM = state } -alias[on_act:on_paradrop] = single_alias_right[country_event_effect] + subtype[on_units_paradropped_in_state] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = state ROOT = country FROM = country } + on_units_paradropped_in_state = single_alias_right[country_event_effect] + } -## replace_scope = { THIS = country ROOT = country } -alias[on_act:on_ruling_party_change] = single_alias_right[country_event_effect] + subtype[on_paradrop] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = state ROOT = country FROM = state } + on_paradrop = single_alias_right[country_event_effect] + } -alias[on_act:on_stage_coup] = single_alias_right[country_event_effect] + subtype[on_ruling_party_change] = { + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country } + on_ruling_party_change = single_alias_right[country_event_effect] -## replace_scope = { ROOT = country FROM = country } -alias[on_act:on_peaceconference_started] = { - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] + on_stage_coup = single_alias_right[country_event_effect] } -} -## replace_scope = { ROOT = unit_leader from = unit } -alias[on_act:on_unit_leader_promote_from_ranks_veteran] = { - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] + subtype[on_peaceconference_started] = { + ## cardinality = 1..inf + ## replace_scope = { ROOT = country FROM = country } + on_peaceconference_started = { + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } + } } -} -## replace_scope = { ROOT = unit_leader from = unit } -alias[on_act:on_unit_leader_promote_from_ranks_green] = { - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] + subtype[on_unit_leader_promote_from_ranks_veteran] = { + ## cardinality = 1..inf + ## replace_scope = { ROOT = unit_leader from = unit } + on_unit_leader_promote_from_ranks_veteran = { + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } + } } -} -## replace_scope = { ROOT = unit } -alias[on_act:on_add_history] = { - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] + subtype[on_unit_leader_promote_from_ranks_green] = { + ## cardinality = 1..inf + ## replace_scope = { ROOT = unit_leader from = unit } + on_unit_leader_promote_from_ranks_green = { + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } + } } -} -# NB : all the following also exist at MIO level -# use on-action here if the purpose is to execute for any MIO -# use on-action at MIO level to execute just for one precise MIO -# i.e. don't use this here : if = { limit = { is_military_industrial_organisation = ... } } } -## cardinality = 0..1 -## replace_scope = { this = military_industrial_organization } -alias[on_act:on_mio_size_increased] = { - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] + subtype[on_add_history] = { + ## cardinality = 1..inf + ## replace_scope = { ROOT = unit } + on_add_history = { + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } + } } -} -## replace_scope = { this = military_industrial_organization } -alias[on_act:on_mio_design_team_assigned_to_tech] = { - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] + subtype[on_send_attache] = { + ### Triggers actions on an attache being sent. Default scope is sender, FROM = receiver + ## cardinality = 1..inf + ## replace_scope = { ROOT = country THIS = country FROM = country } + on_send_attache = single_alias_right[country_event_effect] + } + # NB : all the following also exist at MIO level + # use on-action here if the purpose is to execute for any MIO + # use on-action at MIO level to execute just for one precise MIO + # i.e. don't use this here : if = { limit = { is_military_industrial_organisation = ... } } } + subtype[on_mio_size_increased] = { + ## cardinality = 0..1 + ## cardinality = 1..inf + ## replace_scope = { this = military_industrial_organization } + on_mio_size_increased = { + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } + } } -} -## replace_scope = { this = military_industrial_organization } -alias[on_act:on_mio_design_team_assigned_to_variant] = { - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] + subtype[on_mio_design_team_assigned_to_tech] = { + ## cardinality = 1..inf + ## replace_scope = { this = military_industrial_organization } + on_mio_design_team_assigned_to_tech = { + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } + } } -} -## replace_scope = { this = military_industrial_organization } -alias[on_act:on_mio_industrial_manufacturer_assigned] = { - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] + subtype[on_mio_design_team_assigned_to_variant] = { + ## cardinality = 1..inf + ## replace_scope = { this = military_industrial_organization } + on_mio_design_team_assigned_to_variant = { + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } + } } -} -## replace_scope = { this = military_industrial_organization } -alias[on_act:on_mio_tech_research_cancelled] = { - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] + subtype[on_mio_industrial_manufacturer_assigned] = { + ## cardinality = 1..inf + ## replace_scope = { this = military_industrial_organization } + on_mio_industrial_manufacturer_assigned = { + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } + } } -} -## replace_scope = { this = military_industrial_organization } -alias[on_act:on_mio_tech_research_completed] = { - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] + subtype[on_mio_tech_research_cancelled] = { + ## cardinality = 1..inf + ## replace_scope = { this = military_industrial_organization } + on_mio_tech_research_cancelled = { + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } + } } -} -## replace_scope = { this = military_industrial_organization } -alias[on_act:on_mio_industrial_manufacturer_unassigned] = { - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] + subtype[on_mio_tech_research_completed] = { + ## cardinality = 1..inf + ## replace_scope = { this = military_industrial_organization } + on_mio_tech_research_completed = { + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } + } } -} -## replace_scope = { THIS = country ROOT = country } -alias[on_act:on_daily_] = single_alias_right[country_event_effect] + subtype[on_mio_industrial_manufacturer_unassigned] = { + ## cardinality = 1..inf + ## replace_scope = { this = military_industrial_organization } + on_mio_industrial_manufacturer_unassigned = { + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } + } + } -## replace_scope = { THIS = country ROOT = country } -alias[on_act:on_weekly_] = single_alias_right[country_event_effect] + #subtype[on_daily_] = { + # replace_scope = { THIS = country ROOT = country } + #on_daily_ = single_alias_right[country_event_effect] + #} -## replace_scope = { THIS = country ROOT = country } -alias[on_act:on_monthly_] = single_alias_right[country_event_effect] + #subtype[on_weekly_] = { + # replace_scope = { THIS = country ROOT = country } + #on_weekly_ = single_alias_right[country_event_effect] + #} + #subtype[on_monthly_] = { + # replace_scope = { THIS = country ROOT = country } + #on_monthly_ = single_alias_right[country_event_effect] + #} +} single_alias[country_event_effect] = { - ## cardinality = 0..1 + ## cardinality = 0..inf random_events = { ## cardinality = 0..inf int = 0 @@ -588,5 +1322,3 @@ single_alias[country_event_effect] = { alias_name[effect] = alias_match_left[effect] } } - - From 3742cbfda1bcfe18599db1c5748501ac75cf7829 Mon Sep 17 00:00:00 2001 From: BiscuitCookies <25040791+BiscuitCookies@users.noreply.github.com> Date: Sun, 25 Feb 2024 00:40:42 +0100 Subject: [PATCH 48/72] fixed map_modes rules --- Config/common/map_modes.cwt | 97 ++++++++++++++++++++++++++----------- 1 file changed, 68 insertions(+), 29 deletions(-) diff --git a/Config/common/map_modes.cwt b/Config/common/map_modes.cwt index 84fbfd71..283e2622 100644 --- a/Config/common/map_modes.cwt +++ b/Config/common/map_modes.cwt @@ -1,17 +1,27 @@ types = { - ## unique = yes - ## type_key_filter = map_mode type[scripted_map_modes] = { path = "game/common/map_modes" - path_strict = yes - skip_root_key = yes + skip_root_key = scripted_map_modes + unique = yes - subtype[map_mode] = { - ## cardinality = 1..2 + subtype[map_mode_top_none] = { + top = { + type = none + } + } + ## only_if_not = map_mode_top_none + subtype[map_mode_top] = { top = { } - ## cardinality = 1..2 + } + subtype[map_mode_bot_non] = { + bottom = { + type = none + } + } + ## only_if_not = map_mode_bot_none + subtype[map_mode_bot] = { bottom = { } @@ -20,61 +30,91 @@ types = { } scripted_map_modes = { - subtype[map_mode] = { + subtype[map_mode_top_none] = { + ### There are two layers for a map mode. Bottom & top they are essentially the same except they will be rendered in that order. For each layer the game will figure out what borders to render and will ask the script to pick a color for those + top = { + type = none + } + } + subtype[map_mode_top] = { + ### There are two layers for a map mode. Bottom & top they are essentially the same except they will be rendered in that order. For each layer the game will figure out what borders to render and will ask the script to pick a color for those top = { - type = enum[map_mode_type] ### type represents which borders will be used for rendering for this layer or it can be represented with one of the harded coder map mode layers - ## cardinality = 1..2 + ## cardinality = 1..1 type = enum[map_mode_type] - + ### This section will be used for setting the color of as specific border. If trigger returns trigger then it will render that border. - ## cardinality = 1..2 + ## cardinality = 0..1 color = { + ## cardinality = 0..inf + alias_name[trigger] = alias_match_left[trigger] + ## cardinality = 0..inf alias_name[trigger] = alias_match_left[trigger] } - + ### A target list that can be used to limit which scopes will be rendered on map similar to a targeted decisions. It is highly recommended for performance purposes, otherwise it will try to render for every scope + ## cardinality = 0..1 targets = { alias_name[trigger] = alias_match_left[trigger] } - - + + ### If the border has thickness then set this to yes + ## cardinality = 0..1 thickness = bool + ### if we want to show text on the map set this to one of the types available + ## cardinality = 0..1 } - + } + subtype[map_mode_bot_none] = { + ### There are two layers for a map mode. Bottom & top they are essentially the same except they will be rendered in that order. For each layer the game will figure out what borders to render and will ask the script to pick a color for those + bottom = { + type = none + } + } + subtype[map_mode_bot] = { ### There are two layers for a map mode. Bottom & top they are essentially the same except they will be rendered in that order. For each layer the game will figure out what borders to render and will ask the script to pick a color for those bottom = { ### type represents which borders will be used for rendering for this layer or it can be represented with one of the harded coder map mode layers - ## cardinality = 1..2 + ## cardinality = 1..1 type = enum[map_mode_type] - + ### This section will be used for setting the color of as specific border. If trigger returns trigger then it will render that border. - ## cardinality = 1..2 + ## cardinality = 0..1 color = { + ## cardinality = 0..inf + alias_name[trigger] = alias_match_left[trigger] + ## cardinality = 0..inf alias_name[trigger] = alias_match_left[trigger] } - + ### A target list that can be used to limit which scopes will be rendered on map similar to a targeted decisions. It is highly recommended for performance purposes, otherwise it will try to render for every scope + ## cardinality = 0..1 targets = { alias_name[trigger] = alias_match_left[trigger] } - - + + ### If the border has thickness then set this to yes + ## cardinality = 0..1 thickness = bool + ### if we want to show text on the map set this to one of the types available + ## cardinality = 0..1 } - - ### if we want to show text on the map set this to one of the types available - far_text = enum[far_text_type] - - ### If yes, the game wil update the map mode daily_update, otherwise force_update_map_mode effect can be used - update_daily = bool } + far_text = enum[far_text_type] + ### if we want to show text on the map set this to one of the types available + ## cardinality = 0..1 + near_text = enum[far_text_type] + + ### If yes, the game wil update the map mode daily_update, otherwise force_update_map_mode effect can be used + ## cardinality = 0..1 + update_daily = bool } + enums = { enum[map_modes] = { name @@ -102,4 +142,3 @@ enums = { game_map_mode_ideology } } - From 4a4624542ef01b173f66ed2ca39f72e3fc2037a3 Mon Sep 17 00:00:00 2001 From: BiscuitCookies <25040791+BiscuitCookies@users.noreply.github.com> Date: Mon, 26 Feb 2024 21:23:36 +0100 Subject: [PATCH 49/72] on_action another try also some fixes --- Config/common/country_tag_aliases.cwt | 3 - Config/on_actions.cwt | 1702 ++++++++----------------- Config/portraits.cwt | 4 +- 3 files changed, 537 insertions(+), 1172 deletions(-) diff --git a/Config/common/country_tag_aliases.cwt b/Config/common/country_tag_aliases.cwt index d6a67b9e..a26f043e 100644 --- a/Config/common/country_tag_aliases.cwt +++ b/Config/common/country_tag_aliases.cwt @@ -4,15 +4,12 @@ types = { subtype[variable] = { variable = variable_field } - ## only_if_not = { variable } subtype[global_event_target] = { global_event_target = value[global_event_target] } - ## only_if_not = { variable global_event_target } subtype[event_target] = { event_target = value[event_target] } - ## only_if_not = { variable global_event_target event_target } subtype[triggered] = { } diff --git a/Config/on_actions.cwt b/Config/on_actions.cwt index 965f287b..eb212769 100644 --- a/Config/on_actions.cwt +++ b/Config/on_actions.cwt @@ -1,1314 +1,676 @@ types = { type[on_action] = { path = "game/common/on_actions" - ## starts_with = on_daily_ - subtype[on_action_daily] = { - starts_with = "on_daily_" - on_daily_enum[country_tags] = { } - } - ## starts_with = on_weekly_ - subtype[on_action_weekly] = { - skip_root_key = on_actions - starts_with = "on_weekly_" - } - ## starts_with = on_monthly_ - subtype[on_action_monthly] = { - skip_root_key = on_actions - starts_with = "on_monthly_" - } - ### - subtype[on_new_term_election] = { - on_new_term_election = { } - } - ### - subtype[on_ace_promoted] = { - on_ace_promoted = { } - } - ### - subtype[on_aces_killed_each_other] = { - on_aces_killed_each_other = { } - } - ### - subtype[on_ace_killed_by_ace] = { - on_ace_killed_by_ace = { } - } - ### - subtype[on_ace_killed_other_ace] = { - on_ace_killed_other_ace = { } - } - ### - subtype[on_ace_killed] = { - on_ace_killed = { } - } - ### - subtype[on_ace_killed_on_accident] = { - on_ace_killed_on_accident = { } - } - - subtype[on_non_ace_killed_other_ace] = { - on_non_ace_killed_other_ace = { } - } - ### - subtype[on_justifying_wargoal_pulse] = { - on_justifying_wargoal_pulse = { } - } - ### - subtype[on_wargoal_expire] = { - on_wargoal_expire = { } - } - ### - subtype[on_nuke_drop] = { - on_nuke_drop = { } - } - ### - subtype[on_border_war_lost] = { - on_border_war_lost = { } - } - ### - subtype[on_leave_faction] = { - on_leave_faction = { } - } - ### - subtype[on_create_faction] = { - on_create_faction = { } - } - ### - subtype[on_offer_join_faction] = { - on_offer_join_faction = { } - } - ### - subtype[on_join_faction] = { - on_join_faction = { } - } - ### - subtype[on_declare_war] = { - on_declare_war = { } - } - ### - subtype[on_faction_formed] = { - on_faction_formed = { } - } - ### - subtype[on_capitulation] = { - on_capitulation = { } - } - ### - subtype[on_capitulation_immediate] = { - on_capitulation_immediate = { } - } - ### - subtype[on_uncapitulation] = { - on_uncapitulation = { } - } - ### - subtype[on_government_change] = { - on_government_change = { } - } - ### - subtype[on_naval_invasion] = { - on_naval_invasion = { } - } - ### - subtype[on_coup_succeeded] = { - on_coup_succeeded = { } - } - ### - subtype[on_civil_war_end] = { - on_civil_war_end = { } - } - ### - subtype[on_puppet] = { - on_puppet = { } - } - ### - subtype[on_release_as_puppet] = { - on_release_as_puppet = { } - } - ### - subtype[on_annex] = { - on_annex = { } - } - ### - subtype[on_subject_free] = { - on_subject_free = { } - } - ### - subtype[on_subject_autonomy_level_change] = { - on_subject_autonomy_level_change = { } - } - ### - subtype[on_subject_annexed] = { - on_subject_annexed = { } - } - ### - subtype[on_release_as_free] = { - on_release_as_free = { } - } - ### - subtype[on_peaceconference_ended] = { - on_peaceconference_ended = { } - } - ### - subtype[on_generate_wargoal] = { - on_generate_wargoal = { } - } - ### - subtype[on_guarantee] = { - on_guarantee = { } - } - ### - subtype[on_military_access] = { - on_military_access = { } - } - ### - subtype[on_offer_military_access] = { - on_offer_military_access = { } - } - ### - subtype[on_call_allies] = { - on_call_allies = { } - } - ### - subtype[on_join_allies] = { - on_join_allies = { } - } - ### - subtype[on_lend_lease] = { - on_lend_lease = { } - } - ### - subtype[on_incoming_lend_lease] = { - on_incoming_lend_lease = { } - } - ### - subtype[on_incoming_lend_lease] = { - on_incoming_lend_lease = { } - } - ### - subtype[on_send_volunteers] = { - on_send_volunteers = { } - } - ### - subtype[on_send_expeditionary_force] = { - on_send_expeditionary_force = { } - } - ### - subtype[on_return_expeditionary_forces] = { - on_return_expeditionary_forces = { } - } - ### - subtype[on_request_expeditionary_forces] = { - on_request_expeditionary_forces = { } - } - ### - subtype[on_ask_for_state_control] = { - on_ask_for_state_control = { } - } - ### - subtype[on_give_state_control] = { - on_give_state_control = { } - } - ### - subtype[on_war_relation_added] = { - on_war_relation_added = { } - } - ### - subtype[on_liberate] = { - on_liberate = { } - } - ### - subtype[on_startup] = { - on_startup = { } - } - ### - subtype[on_daily] = { - on_daily = { } - } - ### - subtype[on_daily_tag] = { - on_daily_enum[country_tags] = { } - } - ### - subtype[on_weekly] = { - on_weekly = { } - } - ### - subtype[on_weekly_tag] = { - on_weekly_enum[country_tags] = { } - } - ### - subtype[on_monthly] = { - on_monthly = { } - } - ### - subtype[on_monthly_tag] = { - on_monthly_enum[country_tags] = { } - } - ### - subtype[on_yearly] = { - on_yearly = { } - } - ### - subtype[on_bi_yearly_pulse] = { - on_bi_yearly_pulse = { } - } - ### - subtype[on_thri_yearly_pulse] = { - on_thri_yearly_pulse = { } - } - ### - subtype[on_state_control_changed] = { - on_state_control_changed = { } - } - ### - subtype[on_unit_leader_created] = { - on_unit_leader_created = { } - } - ### - subtype[on_unit_leader_level_up] = { - on_unit_leader_level_up = { } - } - ### - subtype[on_army_leader_daily] = { - on_army_leader_daily = { } - } - ### - subtype[on_army_leader_won_combat] = { - on_army_leader_won_combat = { } - } - ### - subtype[on_army_leader_lost_combat] = { - on_army_leader_lost_combat = { } - } - ### - subtype[on_army_leader_promoted] = { - on_army_leader_promoted = { } - } - ### - subtype[on_host_changed_from_capitulation] = { - on_host_changed_from_capitulation = { } - } - ### - subtype[on_exile_government_reinstated] = { - on_exile_government_reinstated = { } - } - ### - subtype[on_civil_war_end_before_annexation] = { - on_civil_war_end_before_annexation = { } - } - ### - subtype[on_government_exiled] = { - on_government_exiled = { } - } - ### - subtype[on_pride_of_the_fleet_sunk] = { - on_pride_of_the_fleet_sunk = { } - } - ### - subtype[on_assume_faction_leadership] = { - on_assume_faction_leadership = { } - } - ### - subtype[on_war] = { - on_war = { } - } - ### - subtype[on_peace] = { - on_peace = { } - } - ### - subtype[on_peace_proposal] = { - on_peace_proposal = { } - } - ### - subtype[on_operative_on_mission_spotted] = { - on_operative_on_mission_spotted = { } - } - ### - subtype[on_operative_captured] = { - on_operative_captured = { } - } - ### - subtype[on_operative_death] = { - on_operative_death = { } - } - ### - subtype[on_operative_detected_during_operation] = { - on_operative_detected_during_operation = { } - } - ### - subtype[on_operative_created] = { - on_operative_created = { } - } - ### - subtype[on_operative_recruited] = { - on_operative_recruited = { } - } - ### - subtype[on_operation_completed] = { - on_operation_completed = { } - } - ### - subtype[on_fully_decrypted_cipher] = { - on_fully_decrypted_cipher = { } - } - ### - subtype[on_activated_active_decryption_bonuses] = { - on_activated_active_decryption_bonuses = { } - } - ### - subtype[on_paradrop] = { - on_paradrop = { } - } - ### - subtype[on_ruling_party_change] = { - on_ruling_party_change = { } - } - ### - subtype[on_stage_coup] = { - on_stage_coup = { } - } - ### - subtype[on_peaceconference_started] = { - on_peaceconference_started = { } - } - ### - subtype[on_unit_leader_promote_from_ranks_veteran] = { - on_unit_leader_promote_from_ranks_veteran = { } - } - ### - subtype[on_unit_leader_promote_from_ranks_green] = { - on_unit_leader_promote_from_ranks_green = { } - } - ### - subtype[on_add_history] = { - on_add_history = { } - } - subtype[on_send_attache] = { - on_send_attache = { } - } + } + ## starts_with = on_daily_ + type[on_action_daily] = { + path = "game/common/on_actions" + skip_root_key = on_actions + starts_with = "on_daily_" + } + ## starts_with = on_weekly_ + type[on_action_weekly] = { + path = "game/common/on_actions" + skip_root_key = on_actions + starts_with = "on_weekly_" + } + ## starts_with = on_monthly_ + type[on_action_monthly] = { + path = "game/common/on_actions" + skip_root_key = on_actions + starts_with = "on_monthly_" } } -# replace_scope = { THIS = country ROOT = country } -# on_action_tag = single_alias_right[country_event_effect] - -on_action = { - # cardinality = 0..inf - # alias_name[on_act] = alias_match_left[on_act] - # Tag isn't checked for validity - # replace_scope = { THIS = country ROOT = country } - # cardinality = 0..inf - # = { - # cardinality = 0..inf - # replace_scope = { THIS = country ROOT = country } - #random_events = { - ## cardinality = 0..inf - #int = 0 - ## cardinality = 0..inf - #int = - #} - # cardinality = 0..1 - # replace_scope = { THIS = country ROOT = country } - #effect = { - #alias_name[effect] = alias_match_left[effect] - #} - #} - - subtype[on_action_daily] = { - ### Triggered daily for the specified country. Tag isn't checked for validity - ## replace_scope = { THIS = country ROOT = country } - ## cardinality = 0..inf - on_daily_enum[country_tags] = single_alias_right[country_event_effect] +## replace_scope = { THIS = country ROOT = country } +on_action_daily = { + ### Triggered daily for the specified country. Tag isn't checked for validity + ## replace_scope = { THIS = country ROOT = country } + ## cardinality = 0..inf + effect = { + alias_name[effect] = alias_match_left[effect] } +} + +## replace_scope = { THIS = country ROOT = country } +on_action_weekly = { + ### Triggered weekly for the specified country. Tag isn't checked for validity + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country } ## cardinality = 0..inf - subtype[on_action_weekly] = { - ### Triggered weekly for the specified country. Tag isn't checked for validity - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country } + random_events = { ## cardinality = 0..inf - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## replace_scope = { THIS = country ROOT = country } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } + int = 0 + ## cardinality = 0..inf + int = + } + ## replace_scope = { THIS = country ROOT = country } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] } +} + +## replace_scope = { THIS = country ROOT = country } +on_action_monthly = { + ### Triggered monthly for the specified country. Tag isn't checked for validity + ## cardinality = 1..inf + ## replace_scope = { THIS = country ROOT = country } ## cardinality = 0..inf - subtype[on_action_monthly] = { - ### Triggered monthly for the specified country. Tag isn't checked for validity - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country } + random_events = { ## cardinality = 0..inf - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## replace_scope = { THIS = country ROOT = country } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } + int = 0 + ## cardinality = 0..inf + int = } - - subtype[on_new_term_election] = { - ### Trigger the following commands whenever an election happens or is called by the hold_election command. - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country } - on_new_term_election = single_alias_right[country_event_effect] + ## replace_scope = { THIS = country ROOT = country } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] } +} - subtype[on_ace_promoted] = { - ### Trigger the following commands whenever an ace is created. FROM = Ace - ## cardinality = 1..inf - ## replace_scope = { THIS = country root = country FROM = any } - on_ace_promoted = single_alias_right[country_event_effect] - } +on_action = { - subtype[on_aces_killed_each_other] = { - ### Trigger the following commands whenever two aces kill each other in air duel. FROM = our ace, PREV = enemy ace, has killed FROM. - ## cardinality = 1..inf - ## replace_scope = { THIS = country root = country FROM = any prev = any } - on_aces_killed_each_other = single_alias_right[country_event_effect] - } + ### Triggered daily for the specified country. Tag isn't checked for validity + ## replace_scope = { THIS = country ROOT = country } + ## cardinality = 0..inf + = single_alias_right[on_action_effect] - subtype[on_ace_killed_by_ace] = { - ### Trigger the following commands whenever an aces is killed by another ace. FROM = our ace, PREV = enemy ace, has killed FROM. - ## cardinality = 1..inf - ## replace_scope = { THIS = country root = country FROM = any prev = any } - on_ace_killed_by_ace = single_alias_right[country_event_effect] - } + ### Triggered weekly for the specified country. Tag isn't checked for validity + ## replace_scope = { THIS = country ROOT = country } + ## cardinality = 0..inf + = single_alias_right[on_action_effect] - subtype[on_ace_killed_other_ace] = { - ### Trigger the following commands whenever an aces is killed by another ace (surviving ace side). FROM = our ace, PREV = enemy ace, killed by FROM. - ## cardinality = 1..inf - ## replace_scope = { THIS = country root = country FROM = any prev = any } - on_ace_killed_other_ace = single_alias_right[country_event_effect] - } + ### Triggered monthly for the specified country. Tag isn't checked for validity + ## replace_scope = { THIS = country ROOT = country } + ## cardinality = 0..inf + = single_alias_right[on_action_effect] - subtype[on_ace_killed] = { - ### Trigger the following commands whenever an aces is killed. FROM = ace - ## cardinality = 1..inf - ## replace_scope = { THIS = country root = country FROM = any } - on_ace_killed = single_alias_right[country_event_effect] - } + ### Trigger the following commands whenever an election happens or is called by the hold_election command. + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country } + on_new_term_election = single_alias_right[country_event_effect] - subtype[on_ace_killed_on_accident] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country root = country FROM = any } - on_ace_killed_on_accident = single_alias_right[country_event_effect] - } + ### Trigger the following commands whenever an ace is created. FROM = Ace + ## cardinality = 0..inf + ## replace_scope = { THIS = country root = country FROM = any } + on_ace_promoted = single_alias_right[country_event_effect] - subtype[on_non_ace_killed_other_ace] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country root = country FROM = any } - on_non_ace_killed_other_ace = single_alias_right[country_event_effect] - } + ### Trigger the following commands whenever two aces kill each other in air duel. FROM = our ace, PREV = enemy ace, has killed FROM. + ## cardinality = 0..inf + ## replace_scope = { THIS = country root = country FROM = any prev = any } + on_aces_killed_each_other = single_alias_right[country_event_effect] - subtype[on_justifying_wargoal_pulse] = { - ### Trigger the following commands whenever the country is targeted by a wargoal under justification. FROM = target nation. Checked every day. - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_justifying_wargoal_pulse = single_alias_right[country_event_effect] - } + ### Trigger the following commands whenever an aces is killed by another ace. FROM = our ace, PREV = enemy ace, has killed FROM. + ## cardinality = 0..inf + ## replace_scope = { THIS = country root = country FROM = any prev = any } + on_ace_killed_by_ace = single_alias_right[country_event_effect] - subtype[on_wargoal_expire] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_wargoal_expire = single_alias_right[country_event_effect] - } + ### Trigger the following commands whenever an aces is killed by another ace (surviving ace side). FROM = our ace, PREV = enemy ace, killed by FROM. + ## cardinality = 0..inf + ## replace_scope = { THIS = country root = country FROM = any prev = any } + on_ace_killed_other_ace = single_alias_right[country_event_effect] - subtype[on_nuke_drop] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country FROM = state } - on_nuke_drop = single_alias_right[country_event_effect] - } + ### Trigger the following commands whenever an aces is killed. FROM = ace + ## cardinality = 0..inf + ## replace_scope = { THIS = country root = country FROM = any } + on_ace_killed = single_alias_right[country_event_effect] - subtype[on_border_war_lost] = { - ### Trigger the following commands whenever a country loses a border war. "Border war" refers to the state-based border wars enabled with set_border_war, represented with orange stripes over the state, rather than border wars that simulate combat between countries. The default scope is the state that lost the border war. - ## cardinality = 1..inf - ## replace_scope = { THIS = state ROOT = country } - on_border_war_lost = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country root = country FROM = any } + on_ace_killed_on_accident = single_alias_right[country_event_effect] - subtype[on_leave_faction] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country } - on_leave_faction = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country root = country FROM = any } + on_non_ace_killed_other_ace = single_alias_right[country_event_effect] - subtype[on_create_faction] = { - ### Trigger the following commands whenever a country create a faction. FROM is the one that joins the faction. - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country from = country } - on_create_faction = single_alias_right[country_event_effect] - } + ### Trigger the following commands whenever the country is targeted by a wargoal under justification. FROM = target nation. Checked every day. + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_justifying_wargoal_pulse = single_alias_right[country_event_effect] - subtype[on_offer_join_faction] = { - ### Trigger the following commands whenever a country joins a faction after being invited. FROM is the country invited, THIS and ROOT are the faction leader. - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_offer_join_faction = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_wargoal_expire = single_alias_right[country_event_effect] - subtype[on_join_faction] = { - ### Trigger the following commands for a faction leader whenever a country joins after they ask to do so. FROM is faction leader, ROOT and THIS are the country that joins. - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_join_faction = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = state } + on_nuke_drop = single_alias_right[country_event_effect] - subtype[on_declare_war] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_declare_war = single_alias_right[country_event_effect] - } + ### Trigger the following commands whenever a country loses a border war. "Border war" refers to the state-based border wars enabled with set_border_war, represented with orange stripes over the state, rather than border wars that simulate combat between countries. The default scope is the state that lost the border war. + ## cardinality = 0..inf + ## replace_scope = { THIS = state ROOT = country } + on_border_war_lost = single_alias_right[country_event_effect] - subtype[on_faction_formed] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country } - on_faction_formed = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country } + on_leave_faction = single_alias_right[country_event_effect] - subtype[on_capitulation] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_capitulation = single_alias_right[country_event_effect] - } + ### Trigger the following commands whenever a country create a faction. FROM is the one that joins the faction. + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country from = country } + on_create_faction = single_alias_right[country_event_effect] - subtype[on_capitulation_immediate] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_capitulation_immediate = single_alias_right[country_event_effect] - } + ### Trigger the following commands whenever a country joins a faction after being invited. FROM is the country invited, THIS and ROOT are the faction leader. + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_offer_join_faction = single_alias_right[country_event_effect] - subtype[on_uncapitulation] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country } - on_uncapitulation = single_alias_right[country_event_effect] - } + ### Trigger the following commands for a faction leader whenever a country joins after they ask to do so. FROM is faction leader, ROOT and THIS are the country that joins. + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_join_faction = single_alias_right[country_event_effect] - subtype[on_government_change] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country } - on_government_change = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_declare_war = single_alias_right[country_event_effect] - subtype[on_naval_invasion] = { - ### Triggers the following commands whenever a sea invasion is made. THIS (default scope) is the invaded state, ROOT is the country that invades, FROM is the state where the invasion started - ## cardinality = 1..inf - ## replace_scope = { THIS = state ROOT = country FROM = state } - on_naval_invasion = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country } + on_faction_formed = single_alias_right[country_event_effect] - subtype[on_coup_succeeded] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country } - on_coup_succeeded = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_capitulation = single_alias_right[country_event_effect] - subtype[on_civil_war_end] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_civil_war_end = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_capitulation_immediate = single_alias_right[country_event_effect] - subtype[on_puppet] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_puppet = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country } + on_uncapitulation = single_alias_right[country_event_effect] - subtype[on_release_as_puppet] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_release_as_puppet = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country } + on_government_change = single_alias_right[country_event_effect] - subtype[on_annex] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_annex = single_alias_right[country_event_effect] - } + ### Triggers the following commands whenever a sea invasion is made. THIS (default scope) is the invaded state, ROOT is the country that invades, FROM is the state where the invasion started + ## cardinality = 0..inf + ## replace_scope = { THIS = state ROOT = country FROM = state } + on_naval_invasion = single_alias_right[country_event_effect] - subtype[on_subject_free] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_subject_free = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country } + on_coup_succeeded = single_alias_right[country_event_effect] - subtype[on_subject_autonomy_level_change] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_subject_autonomy_level_change = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_civil_war_end = single_alias_right[country_event_effect] - subtype[on_subject_annexed] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_subject_annexed = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_puppet = single_alias_right[country_event_effect] - subtype[on_release_as_free] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_release_as_free = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_release_as_puppet = single_alias_right[country_event_effect] - subtype[on_peaceconference_ended] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_peaceconference_ended = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_annex = single_alias_right[country_event_effect] - subtype[on_generate_wargoal] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_generate_wargoal = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_subject_free = single_alias_right[country_event_effect] - subtype[on_guarantee] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_guarantee = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_subject_autonomy_level_change = single_alias_right[country_event_effect] - subtype[on_military_access] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_military_access = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_subject_annexed = single_alias_right[country_event_effect] - subtype[on_offer_military_access] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_offer_military_access = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_release_as_free = single_alias_right[country_event_effect] - subtype[on_call_allies] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_call_allies = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_peaceconference_ended = single_alias_right[country_event_effect] - subtype[on_join_allies] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_join_allies = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_generate_wargoal = single_alias_right[country_event_effect] - subtype[on_lend_lease] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_lend_lease = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_guarantee = single_alias_right[country_event_effect] - subtype[on_incoming_lend_lease] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_incoming_lend_lease = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_military_access = single_alias_right[country_event_effect] - subtype[on_incoming_lend_lease] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_incoming_lend_lease = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_offer_military_access = single_alias_right[country_event_effect] - subtype[on_send_volunteers] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_send_volunteers = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_call_allies = single_alias_right[country_event_effect] - subtype[on_send_expeditionary_force] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_send_expeditionary_force = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_join_allies = single_alias_right[country_event_effect] - subtype[on_return_expeditionary_forces] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_return_expeditionary_forces = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_lend_lease = single_alias_right[country_event_effect] - subtype[on_request_expeditionary_forces] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_request_expeditionary_forces = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_incoming_lend_lease = single_alias_right[country_event_effect] - subtype[on_ask_for_state_control] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_ask_for_state_control = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_incoming_lend_lease = single_alias_right[country_event_effect] - subtype[on_give_state_control] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_give_state_control = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_send_volunteers = single_alias_right[country_event_effect] - subtype[on_war_relation_added] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_war_relation_added = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_send_expeditionary_force = single_alias_right[country_event_effect] - subtype[on_liberate] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_liberate = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_return_expeditionary_forces = single_alias_right[country_event_effect] - subtype[on_startup] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = invalid ROOT = invalid from = invalid } - on_startup = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_request_expeditionary_forces = single_alias_right[country_event_effect] - subtype[on_daily] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country } - on_daily = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_ask_for_state_control = single_alias_right[country_event_effect] - subtype[on_daily_tag] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country } - on_daily_enum[country_tags] = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_give_state_control = single_alias_right[country_event_effect] - subtype[on_weekly] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country } - on_weekly = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_war_relation_added = single_alias_right[country_event_effect] - subtype[on_weekly_tag] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country } - on_weekly_enum[country_tags] = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_liberate = single_alias_right[country_event_effect] - subtype[on_monthly] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country } - on_monthly = single_alias_right[country_event_effect] + ## cardinality = 0..inf + ## replace_scope = { THIS = invalid ROOT = invalid from = invalid } + on_startup = { + ## cardinality = 0..1 + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = + } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } } - subtype[on_monthly_tag] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country } - on_monthly_enum[country_tags] = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country } + on_daily = single_alias_right[country_event_effect] - subtype[on_yearly] = { - on_yearly = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country } + on_weekly = single_alias_right[country_event_effect] - subtype[on_thri_yearly_pulse] = { - on_thri_yearly_pulse = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country } + on_monthly = single_alias_right[country_event_effect] - subtype[on_bi_yearly_pulse] = { - on_bi_yearly_pulse = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + on_yearly = single_alias_right[country_event_effect] - subtype[on_state_control_changed] = { - ## cardinality = 1..inf - ## replace_scope = { ROOT = country THIS = country FROM = country FROMFROM = state } - on_state_control_changed = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + on_thri_yearly_pulse = single_alias_right[country_event_effect] + + ## cardinality = 0..inf + on_bi_yearly_pulse = single_alias_right[country_event_effect] + + ## cardinality = 0..inf + ## replace_scope = { ROOT = country THIS = country FROM = country FROMFROM = state } + on_state_control_changed = single_alias_right[country_event_effect] - subtype[on_unit_leader_created] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = unit_leader ROOT = unit_leader from = country } - on_unit_leader_created = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = unit_leader ROOT = unit_leader from = country } + on_unit_leader_created = { + ## cardinality = 0..1 + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = + } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] } } - subtype[on_unit_leader_level_up] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = unit_leader ROOT = unit_leader from = country } - on_unit_leader_level_up = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = unit_leader ROOT = unit_leader from = country } + on_unit_leader_level_up = { + ## cardinality = 0..1 + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = + } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] } } - subtype[on_army_leader_daily] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = unit_leader ROOT = unit_leader FROM = country } - on_army_leader_daily = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = unit_leader ROOT = unit_leader FROM = country } + on_army_leader_daily = { + ## cardinality = 0..1 + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = + } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] } } - subtype[on_army_leader_won_combat] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = unit_leader ROOT = unit_leader FROM = country } - on_army_leader_won_combat = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = unit_leader ROOT = unit_leader FROM = country } + on_army_leader_won_combat = { + ## cardinality = 0..1 + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = + } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] } } - subtype[on_army_leader_lost_combat] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = unit_leader ROOT = unit_leader FROM = country } - on_army_leader_lost_combat = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = unit_leader ROOT = unit_leader FROM = country } + on_army_leader_lost_combat = { + ## cardinality = 0..1 + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = + } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] } } - subtype[on_army_leader_promoted] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = unit_leader ROOT = unit_leader from = country } - on_army_leader_promoted = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = unit_leader ROOT = unit_leader from = country } + on_army_leader_promoted = { + ## cardinality = 0..1 + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = + } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] } } - subtype[on_host_changed_from_capitulation] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country FROM = country FROMFROM = country } - on_host_changed_from_capitulation = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country FROMFROM = country } + on_host_changed_from_capitulation = single_alias_right[country_event_effect] - subtype[on_exile_government_reinstated] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country FROM = country FROMFROM = country } - on_exile_government_reinstated = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country FROMFROM = country } + on_exile_government_reinstated = single_alias_right[country_event_effect] - subtype[on_civil_war_end_before_annexation] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_civil_war_end_before_annexation = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_civil_war_end_before_annexation = single_alias_right[country_event_effect] - subtype[on_government_exiled] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country } - on_government_exiled = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country } + on_government_exiled = single_alias_right[country_event_effect] - subtype[on_pride_of_the_fleet_sunk] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_pride_of_the_fleet_sunk = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_pride_of_the_fleet_sunk = single_alias_right[country_event_effect] - subtype[on_assume_faction_leadership] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_assume_faction_leadership = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_assume_faction_leadership = single_alias_right[country_event_effect] - subtype[on_war] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_war = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_war = single_alias_right[country_event_effect] - subtype[on_peace] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_peace = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_peace = single_alias_right[country_event_effect] - subtype[on_peace_proposal] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_peace_proposal = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_peace_proposal = single_alias_right[country_event_effect] - subtype[on_operative_on_mission_spotted] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = operative ROOT = country FROM = country } - on_operative_on_mission_spotted = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = operative ROOT = country FROM = country } + on_operative_on_mission_spotted = { + ## cardinality = 0..1 + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = + } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] } } - subtype[on_operative_captured] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = operative ROOT = country FROM = country } - on_operative_captured = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = operative ROOT = country FROM = country } + on_operative_captured = { + ## cardinality = 0..1 + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = + } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] } } - subtype[on_operative_death] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = operative ROOT = country FROM = country } - on_operative_death = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = operative ROOT = country FROM = country } + on_operative_death = { + ## cardinality = 0..1 + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = + } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] } } - subtype[on_operative_detected_during_operation] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = operative ROOT = country FROM = country FROMFROM = state } - on_operative_detected_during_operation = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = operative ROOT = country FROM = country FROMFROM = state } + on_operative_detected_during_operation = { + ## cardinality = 0..1 + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = + } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] } } - subtype[on_operative_created] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = operative ROOT = operative FROM = country } - on_operative_created = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = operative ROOT = operative FROM = country } + on_operative_created = { + ## cardinality = 0..1 + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = + } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] } } - subtype[on_operative_recruited] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = operative ROOT = operative FROM = country } - on_operative_recruited = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = operative ROOT = operative FROM = country } + on_operative_recruited = { + ## cardinality = 0..1 + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = + } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] } } - subtype[on_operation_completed] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = operative ROOT = country FROM = country } - on_operation_completed = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = operative ROOT = country FROM = country } + on_operation_completed = { + ## cardinality = 0..1 + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = + } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] } } - subtype[on_fully_decrypted_cipher] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_fully_decrypted_cipher = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_fully_decrypted_cipher = single_alias_right[country_event_effect] - subtype[on_activated_active_decryption_bonuses] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_activated_active_decryption_bonuses = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_activated_active_decryption_bonuses = single_alias_right[country_event_effect] - subtype[on_units_paradropped_in_state] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = state ROOT = country FROM = country } - on_units_paradropped_in_state = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = state ROOT = country FROM = country } + on_units_paradropped_in_state = single_alias_right[country_event_effect] - subtype[on_paradrop] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = state ROOT = country FROM = state } - on_paradrop = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { THIS = state ROOT = country FROM = state } + on_paradrop = single_alias_right[country_event_effect] - subtype[on_ruling_party_change] = { - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country } - on_ruling_party_change = single_alias_right[country_event_effect] + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country } + on_ruling_party_change = single_alias_right[country_event_effect] + + ## cardinality = 0..inf + on_stage_coup = single_alias_right[country_event_effect] - on_stage_coup = single_alias_right[country_event_effect] - } + ## cardinality = 0..inf + ## replace_scope = { ROOT = country FROM = country } + on_peaceconference_started = single_alias_right[on_action_effect] - subtype[on_peaceconference_started] = { - ## cardinality = 1..inf - ## replace_scope = { ROOT = country FROM = country } - on_peaceconference_started = { - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - } + ## cardinality = 0..inf + ## replace_scope = { ROOT = unit_leader from = unit } + on_unit_leader_promote_from_ranks_veteran = single_alias_right[on_action_effect] - subtype[on_unit_leader_promote_from_ranks_veteran] = { - ## cardinality = 1..inf - ## replace_scope = { ROOT = unit_leader from = unit } - on_unit_leader_promote_from_ranks_veteran = { - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - } + ## cardinality = 0..inf + ## replace_scope = { ROOT = unit_leader from = unit } + on_unit_leader_promote_from_ranks_green = single_alias_right[on_action_effect] - subtype[on_unit_leader_promote_from_ranks_green] = { - ## cardinality = 1..inf - ## replace_scope = { ROOT = unit_leader from = unit } - on_unit_leader_promote_from_ranks_green = { - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - } + ## cardinality = 0..inf + ## replace_scope = { ROOT = unit } + on_add_history = single_alias_right[on_action_effect] - subtype[on_add_history] = { - ## cardinality = 1..inf - ## replace_scope = { ROOT = unit } - on_add_history = { - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - } + ### Triggers actions on an attache being sent. Default scope is sender, FROM = receiver + ## cardinality = 0..inf + ## replace_scope = { ROOT = country THIS = country FROM = country } + on_send_attache = single_alias_right[country_event_effect] - subtype[on_send_attache] = { - ### Triggers actions on an attache being sent. Default scope is sender, FROM = receiver - ## cardinality = 1..inf - ## replace_scope = { ROOT = country THIS = country FROM = country } - on_send_attache = single_alias_right[country_event_effect] - } - # NB : all the following also exist at MIO level - # use on-action here if the purpose is to execute for any MIO - # use on-action at MIO level to execute just for one precise MIO - # i.e. don't use this here : if = { limit = { is_military_industrial_organisation = ... } } } - subtype[on_mio_size_increased] = { - ## cardinality = 0..1 - ## cardinality = 1..inf - ## replace_scope = { this = military_industrial_organization } - on_mio_size_increased = { - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - } + ## cardinality = 0..inf + ## replace_scope = { ROOT = state THIS = state FROM = country } + on_units_paradropped_in_state = single_alias_right[on_action_effect] - subtype[on_mio_design_team_assigned_to_tech] = { - ## cardinality = 1..inf - ## replace_scope = { this = military_industrial_organization } - on_mio_design_team_assigned_to_tech = { - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - } + # NB : all the following also exist at MIO level + # use on-action here if the purpose is to execute for any MIO + # use on-action at MIO level to execute just for one precise MIO + # i.e. don't use this here : if = { limit = { is_military_industrial_organisation = ... } } } - subtype[on_mio_design_team_assigned_to_variant] = { - ## cardinality = 1..inf - ## replace_scope = { this = military_industrial_organization } - on_mio_design_team_assigned_to_variant = { - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - } + ## cardinality = 0..inf + ## replace_scope = { this = military_industrial_organization } + on_mio_size_increased = single_alias_right[on_action_effect] - subtype[on_mio_industrial_manufacturer_assigned] = { - ## cardinality = 1..inf - ## replace_scope = { this = military_industrial_organization } - on_mio_industrial_manufacturer_assigned = { - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - } + ## cardinality = 0..inf + ## replace_scope = { this = military_industrial_organization } + on_mio_design_team_assigned_to_tech = single_alias_right[on_action_effect] - subtype[on_mio_tech_research_cancelled] = { - ## cardinality = 1..inf - ## replace_scope = { this = military_industrial_organization } - on_mio_tech_research_cancelled = { - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - } + ## cardinality = 0..inf + ## replace_scope = { this = military_industrial_organization } + on_mio_design_team_assigned_to_variant = single_alias_right[on_action_effect] - subtype[on_mio_tech_research_completed] = { - ## cardinality = 1..inf - ## replace_scope = { this = military_industrial_organization } - on_mio_tech_research_completed = { - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - } + ## cardinality = 0..inf + ## replace_scope = { this = military_industrial_organization } + on_mio_industrial_manufacturer_assigned = single_alias_right[on_action_effect] - subtype[on_mio_industrial_manufacturer_unassigned] = { - ## cardinality = 1..inf - ## replace_scope = { this = military_industrial_organization } - on_mio_industrial_manufacturer_unassigned = { - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - } + ## cardinality = 0..inf + ## replace_scope = { this = military_industrial_organization } + on_mio_tech_research_cancelled = single_alias_right[on_action_effect] - #subtype[on_daily_] = { - # replace_scope = { THIS = country ROOT = country } - #on_daily_ = single_alias_right[country_event_effect] - #} + ## cardinality = 0..inf + ## replace_scope = { this = military_industrial_organization } + on_mio_tech_research_completed = single_alias_right[on_action_effect] - #subtype[on_weekly_] = { - # replace_scope = { THIS = country ROOT = country } - #on_weekly_ = single_alias_right[country_event_effect] - #} + ## cardinality = 0..inf + ## replace_scope = { this = military_industrial_organization } + on_mio_industrial_manufacturer_unassigned = single_alias_right[on_action_effect] - #subtype[on_monthly_] = { - # replace_scope = { THIS = country ROOT = country } - #on_monthly_ = single_alias_right[country_event_effect] - #} + ### ROOT is winner #FROM gets annexed - This fires just before FROM gets annexed, meaning the country and everything it owns still exists. It will also fire on_annex and on_civil_war_end + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_civil_war_end_before_annexation = single_alias_right[on_action_effect] } + single_alias[country_event_effect] = { ## cardinality = 0..inf random_events = { @@ -1322,3 +684,9 @@ single_alias[country_event_effect] = { alias_name[effect] = alias_match_left[effect] } } +single_alias[on_action_effect] = { + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } +} \ No newline at end of file diff --git a/Config/portraits.cwt b/Config/portraits.cwt index 25a05d42..308e0bb9 100644 --- a/Config/portraits.cwt +++ b/Config/portraits.cwt @@ -22,9 +22,9 @@ portrait = { name = enum[continents] } ## cardinality = 0..1 - male = single_alias[genderportrait] + male = single_alias_right[genderportrait] ## cardinality = 0..1 - female = single_alias[genderportrait] + female = single_alias_right[genderportrait] ## cardinality = 0..1 army = single_alias_right[portraits] From bb8e1895ec75850a33169b9a08f425a64c39e65e Mon Sep 17 00:00:00 2001 From: Pelmen323 Date: Thu, 29 Feb 2024 22:20:46 +0400 Subject: [PATCH 50/72] Add a lot of mio triggers and effects --- Config/effects.cwt | 6 ++++-- Config/effects_aat.cwt | 44 +++++++++++++++++++++++++++++++++++++++++ Config/triggers_aat.cwt | 24 +++++++++++++++++++++- 3 files changed, 71 insertions(+), 3 deletions(-) diff --git a/Config/effects.cwt b/Config/effects.cwt index d6a10fbe..60a7952b 100644 --- a/Config/effects.cwt +++ b/Config/effects.cwt @@ -2370,10 +2370,12 @@ alias[effect:unlock_decision_tooltip] = ## scope = country alias[effect:unlock_decision_tooltip] = { decision = + ### default - yes ## cardinality = 0..1 - show_effect_tooltip = yes # default is no + show_effect_tooltip = bool + ### default - yes ## cardinality = 0..1 - show_modifiers = yes # default is no + show_modifiers = bool } ### Add buffs to units that are belongs to the army group/navy of this unit leader. diff --git a/Config/effects_aat.cwt b/Config/effects_aat.cwt index 40631c96..cde716f1 100644 --- a/Config/effects_aat.cwt +++ b/Config/effects_aat.cwt @@ -21,6 +21,14 @@ alias[effect:every_military_industrial_organization] = { ## scope = military_industrial_organization alias[effect:unlock_mio_trait_tooltip] = value[mio_token] +### Unlock MIO trait tooltip +## scope = military_industrial_organization +alias[effect:unlock_mio_trait_tooltip] = { + trait = value[mio_token] + ## cardinality = 0..1 + show_modifiers = bool +} + ### Increase MIO funds gain factor ## scope = military_industrial_organization alias[effect:add_mio_funds_gain_factor] = variable_field @@ -90,3 +98,39 @@ alias[effect:set_mio_name_key] = localisation ### Change MIO icon ## scope = military_industrial_organization alias[effect:set_mio_icon] = + +### Set mio flag +## scope = military_industrial_organization +alias[effect:set_mio_flag] = value_set[mio_flag] + +### Set mio flag. +## scope = military_industrial_organization +alias[effect:set_mio_flag] = { + flag = value_set[mio_flag] + ## cardinality = 0..1 + value = int + ## cardinality = 0..1 + days = int +} + +### Modify mio flag. +## scope = military_industrial_organization +alias[effect:modify_mio_flag] = { + flag = value[mio_flag] + ## cardinality = 0..1 + value = int + ## cardinality = 0..1 + days = int +} + +### Clear mio flag +## scope = military_industrial_organization +alias[effect:clr_mio_flag] = value[mio_flag] + +### Modify mio funds gain factor +## scope = military_industrial_organization +alias[effect:set_mio_funds_gain_factor] = float + +### Modify mio research bonus +## scope = military_industrial_organization +alias[effect:set_mio_research_bonus] = float diff --git a/Config/triggers_aat.cwt b/Config/triggers_aat.cwt index 004671a6..0d862540 100644 --- a/Config/triggers_aat.cwt +++ b/Config/triggers_aat.cwt @@ -35,10 +35,22 @@ alias[trigger:is_mio_available] = bool ## scope = military_industrial_organization alias[trigger:is_mio_visible] = bool -### Checks if MIO is visible +### Checks if MIO is assigned to tast +## scope = military_industrial_organization +alias[trigger:is_mio_assigned_to_task] = bool + +### Checks if MIO has specific trait ## scope = military_industrial_organization alias[trigger:has_mio_trait] = value[mio_token] +### Checks if MIO has specific trait unlocked +## scope = military_industrial_organization +alias[trigger:is_mio_trait_completed] = value[mio_token] + +### Checks if MIO has this number of traits unlocked +## scope = military_industrial_organization +alias[trigger:has_mio_number_of_completed_traits] = int + ### Checks num of planes stationed in a region ## scope = country alias[trigger:num_planes_stationed_in_regions] = { @@ -48,3 +60,13 @@ alias[trigger:num_planes_stationed_in_regions] = { } } + +### Checks mio flag +## scope = military_industrial_organization +alias[effect:has_mio_flag] = { + flag = value[mio_flag] + ## cardinality = 0..1 + value = int + ## cardinality = 0..1 + days = int +} From 2af5caa5263e640268eb32eec0312fb6d4f18cb4 Mon Sep 17 00:00:00 2001 From: BiscuitCookies <25040791+BiscuitCookies@users.noreply.github.com> Date: Fri, 1 Mar 2024 00:38:32 +0100 Subject: [PATCH 51/72] various additions and fixes --- Config/common/countries.cwt | 11 +++++++++++ Config/common/scripted_guis.cwt | 4 ++-- Config/effects.cwt | 28 +++++++++++++++++++++++----- Config/effects_bba.cwt | 12 ++++++++++++ Config/effects_new.cwt | 3 +++ Config/events.cwt | 2 +- Config/links.cwt | 7 ++++++- Config/localisation.cwt | 1 + Config/triggers.cwt | 10 ++++++++-- 9 files changed, 67 insertions(+), 11 deletions(-) diff --git a/Config/common/countries.cwt b/Config/common/countries.cwt index 64793699..fccf44aa 100644 --- a/Config/common/countries.cwt +++ b/Config/common/countries.cwt @@ -18,6 +18,17 @@ types = { subtype[cosmetic] = { } } + type[country_tag_file] = { + path = "game/common/country_tags" + type_per_file = yes + } +} + +country_tag_file = { + ## cardinality = 0..1 + dynamic_tags = yes + ## cardinality = ~1..inf + scalar = filepath[common/] } country_file = { diff --git a/Config/common/scripted_guis.cwt b/Config/common/scripted_guis.cwt index d5840de5..5d31a1dc 100644 --- a/Config/common/scripted_guis.cwt +++ b/Config/common/scripted_guis.cwt @@ -99,10 +99,10 @@ scripted_gui = { country_scope_entry_container = scalar ## cardinality = 0..1 ### current index and value is also stored as temp variables and can be used in effects/triggers if wanted. You can rename them to another temp variables - index = scalar + index = value_set[variable] ## cardinality = 0..1 ### current index and value is also stored as temp variables and can be used in effects/triggers if wanted. You can rename them to another temp variables - value = scalar + value = value_set[variable] ## cardinality = 0..1 ### Ai_weights of lists are stored under its list entry. diff --git a/Config/effects.cwt b/Config/effects.cwt index 336c59d8..ac6efb96 100644 --- a/Config/effects.cwt +++ b/Config/effects.cwt @@ -521,7 +521,7 @@ alias[effect:remove_opinion_modifier] = { ### Creates a leader and adds it to proper party in country. ## error_if_only_match = This is a deprecated command. Use add_country_leader_role instead when possible. -## severity = warning +## severity = info ## scope = country alias[effect:create_country_leader] = { name = scalar @@ -561,6 +561,18 @@ alias[effect:create_unit] = { ## cardinality = 0..1 count = int_variable_field ## cardinality = 0..1 + officer = { + ## cardinality = 0..1 + name = localisation + ## cardinality = 0..1 + portraits = { + army = { + large = + small = + } + } + } + ## cardinality = 0..1 country_score = { ## cardinality = 0..1 base = variable_field @@ -745,7 +757,7 @@ alias[effect:set_technology] = { ### Creates an admiral for country in scope. ## error_if_only_match = This is a deprecated command. Use add_naval_commander_role instead when possible. The created admiral will not be able to have a portrait if assigned to be a minister via officer corps, causing errors. -## severity = warning +## severity = info ## scope = country alias[effect:create_navy_leader] = { name = scalar @@ -1608,6 +1620,9 @@ alias[effect:add_named_threat] = { ### Set controller for province. ## scope = country alias[effect:set_province_controller] = enum[provinces] +### Set controller for province. +## scope = country +alias[effect:set_province_controller] = value[variable] ### Sets mandatory major country flag. ## scope = country @@ -1615,7 +1630,7 @@ alias[effect:set_major] = bool ### Creates a field marshal for country in scope. ## error_if_only_match = This is an deprecated command. Uadd_field_marshal_role instead when possible. The created field marshal will not be able to have a portrait if assigned to be a minister via officer corps, causing errors. -## severity = warning +## severity = info ## scope = country alias[effect:create_field_marshal] = { name = scalar @@ -3449,9 +3464,12 @@ alias[effect:while_loop_effect] = { ### Meta effects can be used for building effects from strings and running them. following example will give Germany 42 pp. ## scope = any alias[effect:meta_effect] = { - text = ignore_field + text = { + ## cardinality = 1..inf + alias_name[effect] = alias_match_left[effect] + } ## cardinality = 1..inf - scalar = scalar + scalar = localisation } ### Launch nuke at a state. usage . diff --git a/Config/effects_bba.cwt b/Config/effects_bba.cwt index 69566984..8281f8bd 100644 --- a/Config/effects_bba.cwt +++ b/Config/effects_bba.cwt @@ -135,6 +135,18 @@ alias[effect:every_state_division] = { alias_name[effect] = alias_match_left[effect] } +## scope = state +## push_scope = unit +alias[effect:random_state_division] = { + ## cardinality = 0..1 + limit = { + alias_name[trigger] = alias_match_left[trigger] + } + ## cardinality = 0..1 + tooltip = localisation + alias_name[effect] = alias_match_left[effect] +} + ### Change divisions in scope to selected template ## scope = unit alias[effect:change_division_template] = { diff --git a/Config/effects_new.cwt b/Config/effects_new.cwt index 43a25039..b50efa35 100644 --- a/Config/effects_new.cwt +++ b/Config/effects_new.cwt @@ -786,6 +786,9 @@ alias[effect:harm_operative_leader] = variable_field ###Force an operative into hiding, preventing them from performing mission. The specified values is subject to modifiers. ## scopes = { operative } alias[effect:force_operative_leader_into_hiding] = bool +###Force an operative into hiding, preventing them from performing mission. The specified values is subject to modifiers. +## scopes = { operative } +alias[effect:force_operative_leader_into_hiding] = int[0..100] ###Add the specified amount of intel over a specified country. ## scopes = { COUNTRY } diff --git a/Config/events.cwt b/Config/events.cwt index d62aee47..74254dbd 100644 --- a/Config/events.cwt +++ b/Config/events.cwt @@ -8,7 +8,7 @@ types = { subtype[country_event] = { } ## type_key_filter = state_event - ## replace_scope = { this = state root = country } + ## push_scope = any subtype[state_event] = { } ## type_key_filter = news_event diff --git a/Config/links.cwt b/Config/links.cwt index 389c4259..f72616a5 100644 --- a/Config/links.cwt +++ b/Config/links.cwt @@ -27,9 +27,14 @@ links = { input_scopes = state } + capital_scope = { + output_scope = state + input_scopes = country + } + capital = { output_scope = state - input_scopes = { country state } + input_scopes = country } global = { diff --git a/Config/localisation.cwt b/Config/localisation.cwt index cb4590a2..ee285a4f 100644 --- a/Config/localisation.cwt +++ b/Config/localisation.cwt @@ -89,4 +89,5 @@ localisation_commands = { GetActiveRangeModDesc = any GetActiveRangeRuleDesc = any GetBopTrendTexticon = any + = any } diff --git a/Config/triggers.cwt b/Config/triggers.cwt index bab2f8d8..bc751b0c 100644 --- a/Config/triggers.cwt +++ b/Config/triggers.cwt @@ -159,6 +159,9 @@ alias[trigger:check_variable] = { ## error_if_only_match = You can compare variables directly, without "var" and "value" ## severity = info value = variable_field_32 + ## error_if_only_match = You can compare variables directly, without "var" and "value" + ## severity = info + value = value[variable] ## cardinality = 0..1 ### Defaults to greater_than_or_equals. compare = enum[var_compares] @@ -2163,9 +2166,12 @@ alias[trigger:casualties_k] = int ### Meta triggers can be used for building triggers from strings and running them. following example will test if Germany has 42 pp. ## scope = any alias[trigger:meta_trigger] = { - text = ignore_field + text = { + ## cardinality = 1..inf + alias_name[trigger] = alias_match_left[trigger] + } ## cardinality = 1..inf - scalar = scalar + scalar = localisation } ### Checks if scope has a dynamic modifier. From 4367256ad25417506b66b1aa0c0099848d2c94e2 Mon Sep 17 00:00:00 2001 From: BiscuitCookies <25040791+BiscuitCookies@users.noreply.github.com> Date: Fri, 1 Mar 2024 00:38:45 +0100 Subject: [PATCH 52/72] added achievements check --- Config/common/achievements.cwt | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 Config/common/achievements.cwt diff --git a/Config/common/achievements.cwt b/Config/common/achievements.cwt new file mode 100644 index 00000000..ec62d169 --- /dev/null +++ b/Config/common/achievements.cwt @@ -0,0 +1,19 @@ +types = { + type[achievement] = { + path = "game/common/achievements" + unique = yes + } +} + +## replace_scope = { ROOT = country THIS = country } +achievement = { + possible = { + ## cardinality = ~1..inf + alias_name[trigger] = alias_match_left[trigger] + } + + happened = { + ## cardinality = ~1..inf + alias_name[trigger] = alias_match_left[trigger] + } +} \ No newline at end of file From d19c5ad53a1ec9628d0db667635663a07cc3c57f Mon Sep 17 00:00:00 2001 From: BiscuitCookies <25040791+BiscuitCookies@users.noreply.github.com> Date: Fri, 1 Mar 2024 00:39:03 +0100 Subject: [PATCH 53/72] added checking for continuous focus --- Config/common/national_focus.cwt | 128 ++++++++++++++++++++++++++++++- 1 file changed, 125 insertions(+), 3 deletions(-) diff --git a/Config/common/national_focus.cwt b/Config/common/national_focus.cwt index 25e4fdbe..8537edaa 100644 --- a/Config/common/national_focus.cwt +++ b/Config/common/national_focus.cwt @@ -8,10 +8,17 @@ types = { } ## unique = yes - ## type_key_filter = { focus_tree continuous_focus_palette } + ## type_key_filter = focus_tree type[focus_tree] = { path = "game/common/national_focus" - path = "game/common/continuous_focuss" + name_field = "id" + unique = yes + } + + ## unique = yes + ## type_key_filter = continuous_focus_palette + type[continous_focus_tree] = { + path = "game/common/continuous_focus" name_field = "id" unique = yes } @@ -20,8 +27,15 @@ types = { ## type_key_filter = focus type[focus] = { path = "game/common/national_focus" - path = "game/common/continuous_focus" skip_root_key = focus_tree + name_field = "id" + unique = yes + } + + ## unique = yes + ## type_key_filter = focus + type[continous_focus] = { + path = "game/common/continuous_focus" skip_root_key = continuous_focus_palette name_field = "id" unique = yes @@ -260,6 +274,13 @@ focus_tree = { alias_name[effect] = alias_match_left[effect] } + ## cardinality = 0..1 + ## replace_scope = { root = country this = country } + cancel_effect = { + ## cardinality = ~1..inf + alias_name[effect] = alias_match_left[effect] + } + ## cardinality = 0..1 ## push_scope = any complete_tooltip = { @@ -512,6 +533,107 @@ shared_focus = { } } +## replace_scope = { root = country this = country } +continous_focus_tree = { + id = localisation + + country = { + ## cardinality = 0..1 + enum[base_factor] = float + alias_name[modifier_rule] = alias_match_left[modifier_rule] + } + + ## cardinality = 0..1 + default = bool + + ## cardinality = 0..1 + reset_on_civilwar = bool + + ## cardinality = 0..1 + position = { + x = int + y = int + } + + ## cardinality = 0..inf + focus = { + id = localisation + + ## cardinality = ~1..inf + icon = + + ## cardinality = ~1..inf + icon = { + ## cardinality = 0..1 + ## replace_scope = { root = country this = country } + trigger = { + ## cardinality = ~1..inf + alias_name[trigger] = alias_match_left[trigger] + } + + ## cardinality = ~1..1 + value = + } + + ### The cost in daily political power gain to take this focus compared to not having any focus selected + ## severity = warning + daily_cost = float + + ## cardinality = 0..1 + available_if_capitulated = yes + ## error_if_only_match = This is the default value and can be ommitted + ## severity = info + ## cardinality = 0..1 + available_if_capitulated = no + + ## cardinality = 0..1 + ## replace_scope = { root = country this = country } + available = { + ## cardinality = ~1..inf + alias_name[trigger] = alias_match_left[trigger] + } + ## replace_scope = { root = country this = country } + ## cardinality = 0..1 + enable = { + ## cardinality = ~1..inf + alias_name[trigger] = alias_match_left[trigger] + } + + ## cardinality = 0..1 + supports_ai_strategy = + + ## cardinality = 0..1 + modifier = { + ## cardinality = ~1..inf + alias_name[modifier] = alias_match_left[modifier] + } + + ## cardinality = 0..1 + idea = enum[idea_name] + + ## cardinality = 0..1 + ## replace_scope = { root = country this = country } + select_effect = { + ## cardinality = ~1..inf + alias_name[effect] = alias_match_left[effect] + } + + ## cardinality = 0..1 + ## replace_scope = { root = country this = country } + cancel_effect = { + ## cardinality = ~1..inf + alias_name[effect] = alias_match_left[effect] + } + + ## cardinality = 0..1 + ai_will_do = { + ## cardinality = 0..1 + enum[base_factor] = float + alias_name[modifier_rule] = alias_match_left[modifier_rule] + } + } +} + style = { ## cardinality = 1..1 From e8bf72b7164eeb0656bcc565b107ab66d9951d87 Mon Sep 17 00:00:00 2001 From: BiscuitCookies <25040791+BiscuitCookies@users.noreply.github.com> Date: Fri, 1 Mar 2024 00:39:22 +0100 Subject: [PATCH 54/72] another on_action rework imo best so far --- Config/on_actions.cwt | 527 +++++++++++++++++++++++++++++++++++++----- 1 file changed, 475 insertions(+), 52 deletions(-) diff --git a/Config/on_actions.cwt b/Config/on_actions.cwt index eb212769..03d6afe4 100644 --- a/Config/on_actions.cwt +++ b/Config/on_actions.cwt @@ -20,54 +20,486 @@ types = { skip_root_key = on_actions starts_with = "on_monthly_" } -} - -## replace_scope = { THIS = country ROOT = country } -on_action_daily = { - ### Triggered daily for the specified country. Tag isn't checked for validity - ## replace_scope = { THIS = country ROOT = country } - ## cardinality = 0..inf - effect = { - alias_name[effect] = alias_match_left[effect] + ## type_key_filter = on_new_term_election + type[on_new_term_election] = { + path = "game/common/on_actions" + skip_root_key = on_actions } -} - -## replace_scope = { THIS = country ROOT = country } -on_action_weekly = { - ### Triggered weekly for the specified country. Tag isn't checked for validity - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country } - ## cardinality = 0..inf - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = + ## type_key_filter = on_ace_promoted + type[on_ace_promoted] = { + path = "game/common/on_actions" + skip_root_key = on_actions } - ## replace_scope = { THIS = country ROOT = country } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] + ## type_key_filter = on_aces_killed_each_other + type[on_aces_killed_each_other] = { + path = "game/common/on_actions" + skip_root_key = on_actions } -} - -## replace_scope = { THIS = country ROOT = country } -on_action_monthly = { - ### Triggered monthly for the specified country. Tag isn't checked for validity - ## cardinality = 1..inf - ## replace_scope = { THIS = country ROOT = country } - ## cardinality = 0..inf - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = + ## type_key_filter = on_ace_killed_by_ace + type[on_ace_killed_by_ace] = { + path = "game/common/on_actions" + skip_root_key = on_actions } - ## replace_scope = { THIS = country ROOT = country } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] + ## type_key_filter = on_ace_killed_other_ace + type[on_ace_killed_other_ace] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_ace_killed + type[on_ace_killed] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_ace_killed_on_accident + type[on_ace_killed_on_accident] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_non_ace_killed_other_ace + type[on_non_ace_killed_other_ace] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_justifying_wargoal_pulse + type[on_justifying_wargoal_pulse] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_wargoal_expire + type[on_wargoal_expire] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_nuke_drop + type[on_nuke_drop] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_border_war_lost + type[on_border_war_lost] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_leave_faction + type[on_leave_faction] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_create_faction + type[on_create_faction] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_offer_join_faction + type[on_offer_join_faction] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_join_faction + type[on_join_faction] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_declare_war + type[on_declare_war] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_faction_formed + type[on_faction_formed] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_capitulation + type[on_capitulation] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_capitulation_immediate + type[on_capitulation_immediate] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_uncapitulation + type[on_uncapitulation] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_government_change + type[on_government_change] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_naval_invasion + type[on_naval_invasion] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_coup_succeeded + type[on_coup_succeeded] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_civil_war_end + type[on_civil_war_end] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_puppet + type[on_puppet] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_release_as_puppet + type[on_release_as_puppet] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_annex + type[on_annex] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_subject_free + type[on_subject_free] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_subject_autonomy_level_change + type[on_subject_autonomy_level_change] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_subject_annexed + type[on_subject_annexed] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_release_as_free + type[on_release_as_free] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_peaceconference_ended + type[on_peaceconference_ended] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_generate_wargoal + type[on_generate_wargoal] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_guarantee + type[on_guarantee] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_military_access + type[on_military_access] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_offer_military_access + type[on_offer_military_access] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_call_allies + type[on_call_allies] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_join_allies + type[on_join_allies] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_lend_lease + type[on_lend_lease] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_incoming_lend_lease + type[on_incoming_lend_lease] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_incoming_lend_lease + type[on_incoming_lend_lease] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_send_volunteers + type[on_send_volunteers] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_send_expeditionary_force + type[on_send_expeditionary_force] = { + path = "game/common/on_actions" + skip_root_key = on_actions } + ## type_key_filter = on_return_expeditionary_forces + type[on_return_expeditionary_forces] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_request_expeditionary_forces + type[on_request_expeditionary_forces] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_ask_for_state_control + type[on_ask_for_state_control] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_give_state_control + type[on_give_state_control] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_war_relation_added + type[on_war_relation_added] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_liberate + type[on_liberate] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_startup + type[on_startup] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_daily + type[on_daily] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_weekly + type[on_weekly] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_monthly + type[on_monthly] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_state_control_changed + type[on_state_control_changed] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_unit_leader_created + type[on_unit_leader_created] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_unit_leader_level_up + type[on_unit_leader_level_up] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_army_leader_daily + type[on_army_leader_daily] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_army_leader_won_combat + type[on_army_leader_won_combat] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_army_leader_lost_combat + type[on_army_leader_lost_combat] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_army_leader_promoted + type[on_army_leader_promoted] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_host_changed_from_capitulation + type[on_host_changed_from_capitulation] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_exile_government_reinstated + type[on_exile_government_reinstated] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_civil_war_end_before_annexation + type[on_civil_war_end_before_annexation] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_government_exiled + type[on_government_exiled] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_pride_of_the_fleet_sunk + type[on_pride_of_the_fleet_sunk] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_assume_faction_leadership + type[on_assume_faction_leadership] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_war + type[on_war] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_peace + type[on_peace] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_peace_proposal + type[on_peace_proposal] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_operative_on_mission_spotted + type[on_operative_on_mission_spotted] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_operative_captured + type[on_operative_captured] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_operative_death + type[on_operative_death] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_operative_detected_during_operation + type[on_operative_detected_during_operation] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_operative_created + type[on_operative_created] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_operative_recruited + type[on_operative_recruited] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_operation_completed + type[on_operation_completed] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_fully_decrypted_cipher + type[on_fully_decrypted_cipher] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_activated_active_decryption_bonuses + type[on_activated_active_decryption_bonuses] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_units_paradropped_in_state + type[on_units_paradropped_in_state] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_paradrop + type[on_paradrop] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_ruling_party_change + type[on_ruling_party_change] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_peaceconference_started + type[on_peaceconference_started] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_unit_leader_promote_from_ranks_veteran + type[on_unit_leader_promote_from_ranks_veteran] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_unit_leader_promote_from_ranks_green + type[on_unit_leader_promote_from_ranks_green] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_add_history + type[on_add_history] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_send_attache + type[on_send_attache] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_units_paradropped_in_state + type[on_units_paradropped_in_state] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_mio_size_increased + type[on_mio_size_increased] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_mio_design_team_assigned_to_tech + type[on_mio_design_team_assigned_to_tech] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_mio_design_team_assigned_to_variant + type[on_mio_design_team_assigned_to_variant] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_mio_industrial_manufacturer_assigned + type[on_mio_industrial_manufacturer_assigned] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_mio_tech_research_cancelled + type[on_mio_tech_research_cancelled] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_mio_tech_research_completed + type[on_mio_tech_research_completed] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_mio_industrial_manufacturer_unassigned + type[on_mio_industrial_manufacturer_unassigned] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_civil_war_end_before_annexation + type[on_civil_war_end_before_annexation] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } } on_action = { @@ -327,15 +759,6 @@ on_action = { ## replace_scope = { THIS = country ROOT = country } on_monthly = single_alias_right[country_event_effect] - ## cardinality = 0..inf - on_yearly = single_alias_right[country_event_effect] - - ## cardinality = 0..inf - on_thri_yearly_pulse = single_alias_right[country_event_effect] - - ## cardinality = 0..inf - on_bi_yearly_pulse = single_alias_right[country_event_effect] - ## cardinality = 0..inf ## replace_scope = { ROOT = country THIS = country FROM = country FROMFROM = state } on_state_control_changed = single_alias_right[country_event_effect] From df4d4164e405547443e52ee7912a1edc4d00ec8a Mon Sep 17 00:00:00 2001 From: BiscuitCookies <25040791+BiscuitCookies@users.noreply.github.com> Date: Fri, 1 Mar 2024 00:55:28 +0100 Subject: [PATCH 55/72] more achievement support --- Config/common/achievements.cwt | 11 +++++++++++ Config/triggers_bba.cwt | 6 ++++++ 2 files changed, 17 insertions(+) diff --git a/Config/common/achievements.cwt b/Config/common/achievements.cwt index ec62d169..b0b4ab84 100644 --- a/Config/common/achievements.cwt +++ b/Config/common/achievements.cwt @@ -16,4 +16,15 @@ achievement = { ## cardinality = ~1..inf alias_name[trigger] = alias_match_left[trigger] } +} + +enums = { + complex_enum[mod_achievement_id] = { + path = "game/common/achievements" + unique = yes + start_from_root = yes + name = { + unique_id = enum_name + } + } } \ No newline at end of file diff --git a/Config/triggers_bba.cwt b/Config/triggers_bba.cwt index 158ef4d6..96c918fc 100644 --- a/Config/triggers_bba.cwt +++ b/Config/triggers_bba.cwt @@ -158,3 +158,9 @@ alias[trigger:has_war_with_wargoal_against] = enum[country_tags] ## scope = character alias[trigger:is_hired_as_advisor] = bool + +## scope = country +alias[trigger:has_completed_custom_achievement] = { + mod = enum[mod_achievement_id] + achievement = +} \ No newline at end of file From dd73b4eee39026c4b6d31628306a916054c6a7b2 Mon Sep 17 00:00:00 2001 From: Pelmen323 Date: Fri, 1 Mar 2024 23:11:46 +0400 Subject: [PATCH 56/72] Add research_bonus mio variable --- Config/variables.cwt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Config/variables.cwt b/Config/variables.cwt index c5bf764c..e702d831 100644 --- a/Config/variables.cwt +++ b/Config/variables.cwt @@ -1067,5 +1067,11 @@ values = { token:federalists token:left_kuomintang token:right_kuomintang + + # ======================== + # MIO VARIABLES + # ======================== + ### How faster is tech researching with mio assigned + research_bonus } } From c45541493f4833992daae00f1423d9f4be05a384 Mon Sep 17 00:00:00 2001 From: BiscuitCookies <25040791+BiscuitCookies@users.noreply.github.com> Date: Mon, 4 Mar 2024 23:54:22 +0100 Subject: [PATCH 57/72] Update operations.cwt --- Config/common/operations.cwt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Config/common/operations.cwt b/Config/common/operations.cwt index 348ccffc..9e6614ae 100644 --- a/Config/common/operations.cwt +++ b/Config/common/operations.cwt @@ -2,6 +2,7 @@ types = { type[operation] = { path = "game/common/operations" path_strict = yes + unique = yes } } @@ -213,7 +214,7 @@ operation = { } ### For description purposes only. This is the effect that generates that text shown as a potential reward for completing the operation - ## scope = any + ## replace_scope = { THIS = country ROOT = country FROM = country FROMFROM = state } ## cardinality = 0..1 outcome_potential = { alias_name[effect] = alias_match_left[effect] @@ -233,14 +234,14 @@ operation = { } ### Executed when the operation has completed [ once per operation ] - ## scope = any + ## replace_scope = { THIS = country ROOT = country FROM = country FROMFROM = state } ## cardinality = 0..1 outcome_execute = { alias_name[effect] = alias_match_left[effect] } ### Same as outcome_execute - ## scope = any + ## replace_scope = { THIS = country ROOT = country FROM = country FROMFROM = state } ## cardinality = 0..1 outcome_extra_execute = { alias_name[effect] = alias_match_left[effect] From ece59c538e7d0e59b466b4525ce0ef9471edeb51 Mon Sep 17 00:00:00 2001 From: BiscuitCookies <25040791+BiscuitCookies@users.noreply.github.com> Date: Thu, 7 Mar 2024 20:51:08 +0100 Subject: [PATCH 58/72] Update script_documentation.json --- Config/script_documentation.json | 3849 ++++++++++++++++++++++++++---- 1 file changed, 3402 insertions(+), 447 deletions(-) diff --git a/Config/script_documentation.json b/Config/script_documentation.json index 86482a70..9b7ca0d4 100644 --- a/Config/script_documentation.json +++ b/Config/script_documentation.json @@ -3,7 +3,7 @@ "add_legitimacy": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "add_legitimacy = 10. Adds legitimacy to scope country. Value has to be 0-100." + "description": "add_legitimacy = 10. Adds legitimacy to Scope country. Value has to be 0-100." }, "add_stability": { "supported_scope": ["COUNTRY"], @@ -78,7 +78,7 @@ "every_country": { "supported_scope": ["any"], "supported_target": ["none"], - "description": "Executes children effects on every country that fulfills the \"limit\" trigger. tooltip=key can be defined to override tooltip title." + "description": "\"Executes children effects on every Country (or \\\"random_select_amount\\\" of random country if specified) that fulfills the \\\"limit\\\" trigger.\ntooltip=key can be added to override tooltip title.\nBy default the effects are only displayed once, you may display them for each matching country with display_individual_scopes.\nex:\nevery_country = {\n\ttooltip = my_loc_key # Optional\n\trandom_select_amount = 3 # Optional\n\tdisplay_individual_scopes = yes # Optional - default = no\n\t... country scope effects ...\n}\"" }, "random_country": { "supported_scope": ["any"], @@ -88,17 +88,27 @@ "every_neighbor_country": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "Executes children effects on every neighbor country that fulfills the \"limit\" trigger. tooltip=key can be defined to override tooltip title" + "description": "\"Executes children effects on every neighbor Country of the country in scope (or \\\"random_select_amount\\\" of random country if specified) that fulfills the \\\"limit\\\" trigger.\ntooltip=key can be added to override tooltip title.\nBy default the effects are only displayed once, you may display them for each matching country with display_individual_scopes.\nex:\nSOV = {\n\tevery_neighbor_country = {\n\t\ttooltip = my_loc_key # Optional\n\t\trandom_select_amount = 3 # Optional\n\t\tdisplay_individual_scopes = yes # Optional - default = no\n\t\t... country scope effects ...\n\t}\n}\"" }, "random_neighbor_country": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], "description": "Executes children effects on random neighbor country that fulfills the \"limit\" trigger." }, + "add_relation_rule_override": { + "supported_scope": ["COUNTRY"], + "supported_target": ["THIS"], + "description": "Adds an override rule to the country's relation to other countries. If there are multiple applicable overrides for a rule, then they are combined using AND logic for positive rules (e.g. can_access_market) and OR logic for negative rules (e.g. can_not_declare_war). \nThe description of the effect is based on the trigger or the target country.The description when using the rule override is based: on the target country; the trigger at the time of effect evaluation; or the provided usage_desc.\nThe following rules are currently supported: can_send_volunteer, can_access_market\nAlternative 1:\nadd_relation_rule_override = { \n target = GER # [Required] Target country usage_desc = REASON_DESCRIPTION # [Optional] usage description can_not_declare_war = yes # [Required] \n}\nAlternative 2:\nadd_relation_rule_override = { \n trigger = is_democratic_country # [Required] Named trigger usage_desc = DEMOCRATIC_COUNTRY # [Optional] usage description can_not_declare_war = yes # [Required] \n}\n" + }, + "remove_relation_rule_override": { + "supported_scope": ["COUNTRY"], + "supported_target": ["THIS"], + "description": "Removes an override rule to the country's relation to other countries.The desc key can be used to supply a custom description for the effect when a named trigger is used as key\nAlternative 1:\nremove_relation_rule_override = { \n target = GER # [Required] Target country can_not_declare_war = yes \n}\nAlternative 2:\nremove_relation_rule_override = { \n trigger = is_democratic_country # [Required] Named trigger can_not_declare_war = yes \n}\n" + }, "every_enemy_country": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "Executes children effects on random enemy country that fulfills the \"limit\" trigger. tooltip=key can be defined to override tooltip title" + "description": "\"Executes children effects on every enemy Country of the country in scope (or \\\"random_select_amount\\\" of random country if specified) that fulfills the \\\"limit\\\" trigger.\ntooltip=key can be added to override tooltip title.\nBy default the effects are only displayed once, you may display them for each matching country with display_individual_scopes.\nex:\nSOV = {\n\tevery_enemy_country = {\n\t\ttooltip = my_loc_key # Optional\n\t\trandom_select_amount = 3 # Optional\n\t\tdisplay_individual_scopes = yes # Optional - default = no\n\t\t... country scope effects ...\n\t}\n}\"" }, "random_enemy_country": { "supported_scope": ["COUNTRY"], @@ -143,10 +153,10 @@ "white_peace": { "supported_scope": ["COUNTRY"], "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], - "description": "white peaces the two countries if at war" + "description": "Makes a white peace between the two countries if at war. ROOT is considered the winner while the target tag is considered the loser (which affects things like name of the PC as well as PC related on-actions).\nExample:\nSOV = {\n white_peace = {\n tag = FIN\n message = FIN_agree_peace\n }\n}" }, "hidden_effect": { - "supported_scope": ["STATE", "COUNTRY"], + "supported_scope": ["any"], "supported_target": ["none"], "description": "Effect not shown in tooltips" }, @@ -185,6 +195,11 @@ "supported_target": ["none"], "description": "Create railway gun effect, just like in OOB, example:\ncreate_railway_gun = {\n\tequipment = railway_gun_equipment_1\n\tname = \"Created Railway Gun\" #optional\n\tlocation = 12406 #optional, created in capital otherwise\n}" }, + "clear_rule": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "Cleares rule added by set_rule. In the example it will clear can_not_declare_war = yes set by set_rule : \nclear_rule = { \n can_not_declare_war = yes \n}" + }, "create_country_leader": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], @@ -198,7 +213,7 @@ "every_subject_country": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "Executes children effects on every subject country that fulfills the \"limit\" trigger. tooltip=key can be defined to override tooltip title" + "description": "\"Executes children effects on every subject Country of the country in scope (or \\\"random_select_amount\\\" of random country if specified) that fulfills the \\\"limit\\\" trigger.\ntooltip=key can be added to override tooltip title.\nBy default the effects are only displayed once, you may display them for each matching country with display_individual_scopes.\nex:\nSOV = {\n\tevery_subject_country = {\n\t\ttooltip = my_loc_key # Optional\n\t\trandom_select_amount = 3 # Optional\n\t\tdisplay_individual_scopes = yes # Optional - default = no\n\t\t... country scope effects ...\n\t}\n}\"" }, "log": { "supported_scope": ["any"], @@ -225,6 +240,16 @@ "supported_target": ["none"], "description": "Plays sound effect" }, + "add_equipment_subsidy": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "\"Adds an equipment subsidy to the country in scope.\nExample:\nGER = {\n\tadd_equipment_subsidy = \n\t{\n\t\tcic = 100 # Amount of CIC for the subsidy.\n\t\tequipment_type = support_equipment # The target archetype of the subsidy\n\t\tseller_tags = {RAJ AST} # The possible sellers that this subsidy can apply to. [Mutually exclusive with seller_trigger]\n\t\tseller_trigger = scripted_trigger_name # The name of a scripted trigger to check whether to apply the subsidy or not. [Mutually exclusive with seller_tags]\n\t}\n}\"" + }, + "remove_civil_war_target": { + "supported_scope": ["COUNTRY"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "Removes a country as a civil war target (removed from both sides)\n\nExample:\nremove_civil_war_target = TAG" + }, "add_trait": { "supported_scope": ["COUNTRY", "CHARACTER"], "supported_target": ["none"], @@ -245,11 +270,61 @@ "supported_target": ["any"], "description": "Randomize weather effect" }, + "break_embargo": { + "supported_scope": ["COUNTRY"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "breaks an existing embargo from ROOT to the specified tag. Note this will only work if used on the sending country" + }, "division_template": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], "description": "add a division template to country" }, + "destroy_unit": { + "supported_scope": [], + "supported_target": ["none"], + "description": "destroy currently scoped unit" + }, + "random_state_division": { + "supported_scope": ["STATE"], + "supported_target": ["CAPITAL"], + "description": "Executes children effects on a random division that fulfill the \"limit\" trigger on a state. tooltip=key can be added to override tooltip title" + }, + "every_state_division": { + "supported_scope": ["STATE"], + "supported_target": ["CAPITAL"], + "description": "\"Executes children effects on every Division currently in the state in scope (or \\\"random_select_amount\\\" of random divisions if specified) that fulfills the \\\"limit\\\" trigger.\ntooltip=key can be added to override tooltip title.\nBy default the effects are only displayed once, you may display them for each matching division with display_individual_scopes.\nex:\nSOV = {\n\tevery_state_division = {\n\t\ttooltip = my_loc_key # Optional\n\t\trandom_select_amount = 3 # Optional\n\t\tdisplay_individual_scopes = yes # Optional - default = no\n\t\t... division scope effects ...\n\t}\n}\"" + }, + "add_history_entry": { + "supported_scope": [], + "supported_target": ["none"], + "description": "add_history_entry = {\nkey = custom_localized_key\nsubject = \"Custom String (not localized)\"\nallow = yes/no (allow medal award)\n}" + }, + "set_air_oob": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "Registers an Order of Battle (OOB) file to be loaded for a country at game start, replacing any previously registered OOB (with key \"air\") on that country.\nOnly intended to be used within history files.\n\nExample:\nset_air_oob = \"ENG_1936_Air\"" + }, + "send_embargo": { + "supported_scope": ["COUNTRY"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "embargos specified tag" + }, + "set_occupation_law": { + "supported_scope": ["STATE", "COUNTRY"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "\"Sets the occupation law for an occupied country, occupied state, or the default occupation law of an occupying country.\n\n- If THIS is a country and it's the same as the PREV country, then THIS's default law is set.\n- If THIS is a country and it's different from the PREV country, then PREV's country law override for THIS is set.\n- If THIS is a state, then PREV's state law override for THIS is set.\n\nThe token default_law is used to remove a country or state override, or to set a country's default law to the law defined with starting_law=yes.\n\nExample:\nGER = { set_occupation_law = foreign_civilian_oversight }\nGER = { POL = { set_occupation_law = default_law } }\nGER = { 123 = { set_occupation_law = military_governor_occupation } }\"" + }, + "change_division_template": { + "supported_scope": [], + "supported_target": ["none"], + "description": "change_division_template = \"My Template Name\"" + }, + "set_occupation_law_where_available": { + "supported_scope": ["STATE", "COUNTRY"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "\"See set_occupation_law for basic functionality. What differentiates this effect is that if the law is not available on the given level it will attempt to set it on a level below. I.e. if the law can't be set as the default law it will try to set it on each country, and if that fails it will try to set it on each state. Any existing law overrides below a level at which a law is successfully set will be cleared.\n\nExample:\nITA = { set_occupation_law_where_available = colonial_police } # Set law in all countries/states where it's available.\nITA = { every_occupied_country = { set_occupation_law_where_available = default_law } } # Remove all country and state overrides.\"" + }, "set_country_leader_ideology": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], @@ -258,12 +333,12 @@ "add_country_leader_trait": { "supported_scope": ["COUNTRY", "CHARACTER"], "supported_target": ["none"], - "description": "Add country leader trait to the scoped character or scoped country's leader.\nIn scoped character, will need to give the ideology if the character has several country leader roles.\nExample 1: SOV_joseph_stalin = { add_country_leader_trait = underage_monarch }\nExample 2: HUN_mikl�s_horthy = { add_country_leader_trait = { ideology = oligarchism trait = anti_communist } }\nExample 3: SOV = { add_country_leader_trait = underage_monarch }" + "description": "Add country leader trait to the scoped character or scoped country's leader.\nIn scoped character, will need to give the ideology if the character has several country leader roles.\nExample 1: SOV_joseph_stalin = { add_country_leader_trait = underage_monarch }\nExample 2: HUN_miklos_horthy = { add_country_leader_trait = { ideology = oligarchism trait = anti_communist } }\nExample 3: SOV = { add_country_leader_trait = underage_monarch }" }, "remove_country_leader_trait": { "supported_scope": ["COUNTRY", "CHARACTER"], "supported_target": ["none"], - "description": "Remove country leader trait from the scoped character or scoped country's leader.\nIn scoped character, will need to give the ideology if the character has several country leader roles.\nExample 1: SOV_joseph_stalin = { remove_country_leader_trait = underage_monarch }\nExample 2: HUN_mikl�s_horthy = { remove_country_leader_trait = { ideology = oligarchism trait = anti_communist } }\nExample 3: SOV = { remove_country_leader_trait = underage_monarch }" + "description": "Remove country leader trait from the scoped character or scoped country's leader.\nIn scoped character, will need to give the ideology if the character has several country leader roles.\nExample 1: SOV_joseph_stalin = { remove_country_leader_trait = underage_monarch }\nExample 2: HUN_miklos_horthy = { remove_country_leader_trait = { ideology = oligarchism trait = anti_communist } }\nExample 3: SOV = { remove_country_leader_trait = underage_monarch }" }, "set_political_party": { "supported_scope": ["COUNTRY"], @@ -295,6 +370,11 @@ "supported_target": ["none"], "description": "set political power for country" }, + "set_division_force_allow_recruiting": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "Force allows division recruiting for a division template\nExample: set_division_force_allow_recruiting = { division_template = force_allow_recruiting = }" + }, "set_technology": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], @@ -328,18 +408,33 @@ "delete_unit": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "delete units of a country. no tooltip is generated. example: \n\nExample:\ndelete_unit = { \n\ttemplate = template_name # can be filtered a specific template \n\tid = 42 # can be filtered to a given id in create unit effect \n\tstate = 64 # can be filtered by a given state \n\tdisband = yes # default is no. if set to yes the game will refund equipment/manpower\n}" + "description": "delete units of a country. no tooltip is generated. example: \n\nExample:\ndelete_unit = { \n\tdivision_template = template_name # can be filtered a specific template \n\tid = 42 # can be filtered to a given id in create unit effect \n\tstate = 64 # can be filtered by a given state \n\tdisband = yes # default is no. if set to yes the game will refund equipment/manpower\n}" }, "puppet": { "supported_scope": ["COUNTRY"], "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], - "description": "puppets specified country" + "description": "Puppets specified country. By default, cancels the puppets existing war relations.\nExample 1:\nENG = {\n puppet = ITA\n}\nExample 2:\nENG = {\n puppet = {\n target = ITA\n end_wars = yes # Optional, default yes. Will not cancel non-civil wars if set to no.\n end_civil_wars = yes # Optional, default yes. Will not cancel civil wars if set to no.\n }\n}\n" }, "set_state_controller": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], "description": "set controller for state" }, + "add_random_valid_trait_from_unit": { + "supported_scope": [], + "supported_target": ["none"], + "description": "for use ONLY with root scope unit, target scope: character add_random_valid_trait_from_unit = FROM" + }, + "add_unit_medal_to_latest_entry": { + "supported_scope": [], + "supported_target": ["none"], + "description": "add_unit_medal_to_latest_entry = { unit_medals = key }" + }, + "add_divisional_commander_xp": { + "supported_scope": [], + "supported_target": ["none"], + "description": "add divisional commander xp to unit: add_divisional_commander_xp = 10" + }, "transfer_state": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], @@ -355,6 +450,11 @@ "supported_target": ["none"], "description": "clear state flag" }, + "set_party_rule": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "Adds rule to the country's party.\nset_party_rule = { \n ideologly = communism # [Required] selection criteria for the party desc = desc_key # a description can be given to rule (you can get original tooltip using DESC key) \n can_not_declare_war = yes \n}" + }, "create_faction": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], @@ -418,17 +518,17 @@ "every_state": { "supported_scope": ["any"], "supported_target": ["none"], - "description": "Executes children effects on every state that fulfills the \"limit\" trigger. tooltip=key can be added to override tooltip title" + "description": "\"Executes children effects on every State (or \\\"random_select_amount\\\" of random state if specified) that fulfills the \\\"limit\\\" trigger.\ntooltip=key can be added to override tooltip title.\nBy default the effects are only displayed once, you may display them for each matching state with display_individual_scopes.\nex:\nevery_state = {\n\ttooltip = my_loc_key # Optional\n\trandom_select_amount = 3 # Optional\n\tdisplay_individual_scopes = yes # Optional - default = no\n\t... state scope effects ...\n}\"" }, "every_owned_state": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "Executes children effects on every owned state that fulfills the \"limit\" trigger. tooltip=key can be added to override tooltip title" + "description": "\"Executes children effects on every State owned by the country in scope (or \\\"random_select_amount\\\" of random state if specified) that fulfills the \\\"limit\\\" trigger.\ntooltip=key can be added to override tooltip title.\nBy default the effects are only displayed once, you may display them for each matching state with display_individual_scopes.\nex:\nSOV = {\n\tevery_owned_state = {\n\t\ttooltip = my_loc_key # Optional\n\t\trandom_select_amount = 3 # Optional\n\t\tdisplay_individual_scopes = yes # Optional - default = no\n\t\t... state scope effects ...\n\t}\n}\"" }, "every_neighbor_state": { "supported_scope": ["STATE"], "supported_target": ["none"], - "description": "Executes children effects on every neighbor state that fulfills the \"limit\" trigger. tooltip=key can be added to override tooltip title" + "description": "\"Executes children effects on every State neighboring the state in scope (or \\\"random_select_amount\\\" of random state if specified) that fulfills the \\\"limit\\\" trigger.\ntooltip=key can be added to override tooltip title.\nBy default the effects are only displayed once, you may display them for each matching state with display_individual_scopes.\nex:\n42 = {\n\tevery_neighbor_state = {\n\t\ttooltip = my_loc_key # Optional\n\t\trandom_select_amount = 3 # Optional\n\t\tdisplay_individual_scopes = yes # Optional - default = no\n\t\t... state scope effects ...\n\t}\n}\"" }, "news_event": { "supported_scope": ["COUNTRY"], @@ -440,6 +540,11 @@ "supported_target": ["none"], "description": "declares war on specified country" }, + "set_relation_rule": { + "supported_scope": ["COUNTRY"], + "supported_target": ["THIS"], + "description": "DEPRECATED: See add_relation_rule_override" + }, "add_scaled_political_power": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], @@ -463,7 +568,12 @@ "start_civil_war": { "supported_scope": ["COUNTRY"], "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], - "description": "Given ideology starts a civil war in the country.\nstart_civil_war = {\n\tideology = revolting ideology\n\truling_party = ruling party for country\n\tsize = 0-1 Size modifier of the revolt. Affects stockpile, army, air and navy as well\n\tarmy_ratio = 0-1 Overrides size modifier for army\n\tnavy_ratio = 0-1 Overrides size modifier for navy\n\tair_ratio = 0-1 Overrides size modifier for air\n\tkeep_unit_leaders specify ID of unit leaders that remain with the original country\n\tkeep_unit_leaders_trigger Trigger for unit leaders to remain with the original country\n\tstates States that go to the revolter. Use \"all\" to include all states.\n\tstates_filter States that go to the revolter. Filtering trigger on the states scripted to go to the revolter.\n\tkeep_political_leader = yes/no # optional, default is no; If yes, the party leader of the revolting ideology will not join the revolter as its leader.\n\tkeep_political_party_members = yes/no # optional, default is no; If yes, it will keep the non main leaders of the party leaders in original country\n\t ... effect list ... # you can list effects that will run on civil war country\n}" + "description": "\"Given ideology starts a civil war in the country.\nstart_civil_war = {\n\tideology = revolting ideology\n\truling_party = ruling party for country\n\tsize = 0-1 Size modifier of the revolt. Affects stockpile, army, air and navy as well\n\tarmy_ratio = 0-1 Overrides size modifier for army\n\tnavy_ratio = 0-1 Overrides size modifier for navy\n\tair_ratio = 0-1 Overrides size modifier for air\n\tstates = {...} States that go to the revolter. Use \\\"all\\\" to include all states.\n\tstates_filter = {...} States that go to the revolter. Filtering trigger on the states scripted to go to the revolter.\n\tkeep_all_characters = yes - keep all characters on target country side - will ignore all following keep_ parameters - default value = no\n\tkeep_unit_leaders = {...} specify ID of unit leaders that remain with the original country\n\tkeep_unit_leaders_trigger = {...} Trigger for unit leaders to remain with the original country\n\tkeep_political_leader = yes/no # optional, default is no; If yes, the party leader of the revolting ideology will not join the revolter as its leader.\n\tkeep_political_party_members = yes/no # optional, default is no; If yes, it will keep the non main leaders of the party leaders in original country\n\t ... effect list ... # you can list effects that will run on civil war country\n}\"" + }, + "set_unit_organization": { + "supported_scope": [], + "supported_target": ["none"], + "description": "set unit organization to current * value: set_unit_organization = 0.5, values between 0 and 1" }, "retire_country_leader": { "supported_scope": ["COUNTRY"], @@ -588,7 +698,7 @@ "set_rule": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "Adds rule to country. This one overrides all other rules on country \nset_rule = { \n desc = desc_key # a description can be given to rule (you can get original tooltip using DESC key) \n can_not_declare_war = yes \n}" + "description": "Adds rule to country. This one overrides all other rules on country \nset_rule = { \n desc = desc_key # A description of why the rule is set (you can get original tooltip using DESC key) \n can_not_declare_war = yes \n}" }, "diplomatic_relation": { "supported_scope": ["COUNTRY"], @@ -596,14 +706,14 @@ "description": "Set up a diplomatic relation between two nations. Example: \ndiplomatic_relation = { \n\tcountry = POR #target country\n\trelation = military_access #type of relation\n\tactive = yes #yes to add relation, no to cancel existing one\n}" }, "effect_tooltip": { - "supported_scope": ["STATE", "COUNTRY"], + "supported_scope": ["any"], "supported_target": ["any"], "description": "Shows just tooltip of effects" }, "add_resource": { "supported_scope": ["STATE", "COUNTRY"], "supported_target": ["none"], - "description": "Adds/removes resource production to state\n\nExample:\nadd_resource = {\n type = steel #resource type to add/destroy amount = 5 #amount to add\n state = 42 #can be also read from scope\n days = 60 #a resource can be added/removed temporarily}\n" + "description": "Adds/removes resource production to state\n\nExample:\nadd_resource = {\n type = steel #resource type to add/destroy amount = 5 #amount to add\n state = 42 #can be also read from scope\n days = 60 #a resource can be added/removed temporarily\n show_state_in_tooltip = no #Should we show in which state we add the resource(default = yes)?\n}\n" }, "remove_unit_leader": { "supported_scope": ["COUNTRY", "CHARACTER"], @@ -613,7 +723,7 @@ "add_timed_idea": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "add time limited idea to country idea, add_timed_idea = { idea = id days = number_of_days }" + "description": "\"Add a time-limited idea to country in scope\nex:\nSOV = {\n\tadd_timed_idea = {\n\t\tidea = my_idea_id\n\t\tdays = 5\n\t}\n\tadd_timed_idea = {\n\t\tidea = my_idea_id\n\t\tyears = 1\n\t\tmonths = 2\n\t\tdays = 5\n\t\t# NB: at least 1 of year/month/days is mandatory\n\t\t# NB: accept positive integer or variables\n\t\t# NB: tooltip will use the same year/month/day format as input\n\t}\n}\"" }, "end_puppet": { "supported_scope": ["COUNTRY"], @@ -643,7 +753,7 @@ "set_major": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "sets mandatory major country flag" + "description": "Sets mandatory major country flag. A country can still become a major if their industry is strong enough and they are not a subject.\nExample:\nDEN = { set_major = yes }" }, "create_field_marshal": { "supported_scope": ["COUNTRY"], @@ -693,7 +803,7 @@ "add_to_war": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "adds country to the specified war" + "description": "adds country to the specified war:\nENG = {\n\tadd_to_war = {\n\t targeted_alliance = SOV # Country to which side we want to join\n\t enemy = PER # Which country we want to declare war on\n\t hostility_reason = asked_to_join # The reason for joining the war\n\t single_target_only = yes # yes if we want to target only the given country and not all enemies of targeted_alliance\n }\n}" }, "show_ideas_tooltip": { "supported_scope": ["COUNTRY"], @@ -703,12 +813,12 @@ "create_equipment_variant": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "Creates a new equipment variant.\nExample:\ncreate_equipment_variant = {\n\tname = \"Yorktown Class\"\n\ttype = ship_hull_carrier_2\n\tparent_version = 1 #default = 0\n\tobsolete = yes #default = no\n\tname_group = ship_name_group_name #default = empty/none\n\trole_icon_index = 3 #default just inherits from parent or remains unset\n\trole_icon_index = 0 #alternative, explicitly unset\n\trole_icon_index = auto #uses AI design logic to pick\n\tupgrades = { #optional, inherits from parent\n\t\tship_deckspace_upgrade = 1\n\t\tcarrier_armor_upgrade = 2\n\t}\n\tmodules = { #optional, inherits from parent\n\t\tfixed_ship_deck_slot_1 = ship_deck_space\n\t\tfront_1_custom_slot = ship_armor_carrier_deck\n\t\tfixed_ship_deck_slot_2 = empty #overrides parent\n\t}\n\tmodel = \"GER_light_armor_2_entity\"\n\ticon = \"gfx/interface/technologies/ger_basic_light_tank.dds\" #can also use GFX name e.g: \"GFX_GER_basic_light_tank_medium\"\n}\n" + "description": "Creates a new equipment variant.\nExample:\ncreate_equipment_variant = {\n\tname = \"Yorktown Class\" # Optional.\n\tname_group = USA_CV_HISTORICAL # Optional. If not set, parent's name group will be inherited.\n\ttype = ship_hull_carrier_1 # Must be a type and not an archetype.\n\tallow_without_tech = yes # Optional. Default no. If yes, create the variant even if the type hasn't been unlocked yet. Otherwise created the variant once the type research completes.\n\tparent_version = 3 # Default 0. If not found the default variant will be used (or created).\n\tobsolete = yes # Optional. Default no.\n\tmark_older_equipment_obsolete = yes # Optional. Default no. Marks all older (non-chassis) equipment variants as obsolete as long as the following matches: Archetype, niche, mission set (for planes).\n\trole_icon_index = 3 # Optional. Default 'auto', leverage AI design logic.\n\tupgrades = { # Optional. The level on each upgrade is inherited from the parent.\n\t\tship_deckspace_upgrade = 1\n\t\tcarrier_armor_upgrade = 2\n\t}\n\tmodules = { # Optional. The module installed in each slot is inherit from the parent.\n\t\tfixed_ship_engine_slot = carrier_ship_engine_2\n\t\tfixed_ship_secondaries_slot = empty # Clears the slot if the parent has any module installed.\n\t}\n\tmodel = \"GER_light_armor_2_entity\" # Optional.\n\ticon = \"gfx/interface/technologies/ger_basic_light_tank.dds\" # Optional. GFX names are also supported e.g. \"GFX_GER_basic_light_tank_medium\".\n design_team = mio:my_mio_token # Optional. accepts mio:token, variable or keyword\n}" }, "add_equipment_production": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "Adds an equipment production" + "description": "\"Creates a new production line for the input equipment.\nex:\nGER = {\n\tadd_equipment_production = {\n\t\t\tequipment = {\n\t\t\t\t\ttype = ship_hull_cruiser_submarine\n\t\t\t\t\tcreator = \"ITA\"\n\t\t\t\t\tversion_name = \"Cagni Class\"\n\t\t\t}\n\t\t\tname = \"Ammiraglio Millo\"\n\t\t\trequested_factories = 1 #Optional\n\t\t\tprogress = 0.35 # Optional\n\t\t\tefficiency = 0.1 # Optional\n\t\t\tamount = 2 # Optional, accepts value or variable\n\t\t\tindustrial_manufacturer = mio:generic_mio_organization_ship_submarine # Optional, accepts mio:token, variable or keyword\n\t}\n}\n}\"" }, "add_ace": { "supported_scope": ["COUNTRY"], @@ -726,9 +836,9 @@ "description": "ai message... ?" }, "every_other_country": { - "supported_scope": ["any"], + "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "Executes children effects on every other country that fulfills the \"limit\" trigger. Excludes current country. tooltip=key can be defined to override tooltip title" + "description": "\"Executes children effects on every Country different from the one in scope (or \\\"random_select_amount\\\" of random country if specified) that fulfills the \\\"limit\\\" trigger.\ntooltip=key can be added to override tooltip title.\nBy default the effects are only displayed once, you may display them for each matching country with display_individual_scopes.\nex:\nSOV = {\n\tevery_other_country = {\n\t\ttooltip = my_loc_key # Optional\n\t\trandom_select_amount = 3 # Optional\n\t\tdisplay_individual_scopes = yes # Optional - default = no\n\t\t... country scope effects ...\n\t}\n}\"" }, "random_other_country": { "supported_scope": ["any"], @@ -738,7 +848,7 @@ "add_equipment_to_stockpile": { "supported_scope": ["COUNTRY"], "supported_target": ["any"], - "description": "Adds equipment to the countries stockpiles. Amount can be a variable. if it is negative it will remove equipment instead. if producer tag is not specified it will remove from all creators. \nExample: add_equipment_to_stockpile = { type = strat_bomber_equipment_2 amount = 100 producer = USA }" + "description": "Add or remove equipment from country stockpiles.\nExample:\nadd_equipment_to_stockpile = {\n\ttype = strat_bomber_equipment_2\n\tamount = 100 # May be a variable. Equipment will be removed if the value is negative.\n\tproducer = USA # Optional. If not specified the effect will be applied to all creators.\n}" }, "swap_ideas": { "supported_scope": ["COUNTRY"], @@ -758,7 +868,7 @@ "set_autonomy": { "supported_scope": ["COUNTRY"], "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], - "description": "makes autonomy of specified level and country.\nExample:\nset_autonomy = {\n target=ENG \n autonomy_state = autonomy_puppet \n freedom_level=0.5 \n end_wars = yes # default yes. will not cancel non civil wars if set to no\n end_civil_wars = yes # default yes. will not cancel civil wars if set to no\n}" + "description": "makes autonomy of specified level and country.\nExample:\nset_autonomy = {\n target=ENG \n autonomy_state = autonomy_puppet \n freedom_level=0.5 \n end_wars = yes # default yes. will not cancel non-civil wars if set to no\n end_civil_wars = yes # default yes. will not cancel civil wars if set to no\n}" }, "add_to_tech_sharing_group": { "supported_scope": ["COUNTRY"], @@ -848,7 +958,7 @@ "create_production_license": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "Creates production license\nExample: create_production_license = {\n\ttarget = TAG # target for licensing\n\tcost_factor = 1.0 # cost factor for the deal\n\tequipment = { # classical equipment reference\n\t\ttype = light_tank_equipment_2\n\t\tversion = 0\n\t\tnew_prioritised = no ## default yes, you can force using version control this way\n\t}\n}" + "description": "Creates an equipment production license. If the selection criteria fails to match a variant no license will be created.\nExample:\ncreate_production_license = {\n\ttarget = TAG # Receiver of the license.\n\tcost_factor = 1.0 # Optional. Cost factor for production of the equipment.\n\tnew_prioritised = no # Optional. Default yes. Ignore 'version' (but not 'version_name') below and instead select the latest variant.\n\tequipment = {\n\t\ttype = small_plane_naval_bomber_airframe # The type of the variant to select. Must be specified.\n\t\tversion = 1 # Optional. Default 0. Select the variant with the given version.\n\t\tversion_name = \"Do 22\" # Optional. Select the variant with the given name.\n\t}\n}" }, "add_relation_modifier": { "supported_scope": ["COUNTRY"], @@ -883,32 +993,32 @@ "random_unit_leader": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "Executes children effects on random unit leader that fulfills the \"limit\" trigger." + "description": "\"Executes children effects on a random Unit Leader of the country in scope, that fulfills the \\\"limit\\\" trigger.\ntooltip=key can be added to override tooltip title.\nex: GER = {\n random_unit_leader = {\n\ttooltip = my_loc_key # Optional\n\tinclude_invisible = yes # Optional - default = no\n ... character scope effects ...\n }\n}\"" }, "every_unit_leader": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "Executes children effects on unit leaders that fulfills the \"limit\" trigger. tooltip=key can be added to override tooltip title" + "description": "\"Executes children effects on every Unit Leader (or \\\"random_select_amount\\\" of random leader if specified) of the country in scope, that fulfills the \\\"limit\\\" trigger.\ntooltip=key can be added to override tooltip title.\nBy default the effects are only displayed once, you may display them for each matching unit leader with display_individual_scopes.\nex: GER = {\n every_unit_leader = {\n\ttooltip = my_loc_key # Optional\n\trandom_select_amount = 3 # Optional\n\tinclude_invisible = yes # Optional - default = no\n\tdisplay_individual_scopes = yes # Optional - default = no\n ... character scope effects ...\n }\n}\"" }, "random_army_leader": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "Executes children effects on random army leader that fulfills the \"limit\" trigger." + "description": "\"Executes children effects on a random Army Leader of the country in scope, that fulfills the \\\"limit\\\" trigger.\ntooltip=key can be added to override tooltip title.\nex: GER = {\n random_army_leader = {\n\ttooltip = my_loc_key # Optional\n\tinclude_invisible = yes # Optional - default = no\n ... character scope effects ...\n }\n}\"" }, "every_army_leader": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "Executes children effects on army leaders that fulfills the \"limit\" trigger. tooltip=key can be added to override tooltip title" + "description": "\"Executes children effects on every Army Leader (or \\\"random_select_amount\\\" of random leader if specified) of the country in scope, that fulfills the \\\"limit\\\" trigger.\ntooltip=key can be added to override tooltip title.\nex: GER = {\n every_army_leader = {\n\ttooltip = my_loc_key # Optional\n\trandom_select_amount = 3 # Optional\n\tinclude_invisible = yes # Optional - default = no\n ... character scope effects ...\n }\n}\"" }, "random_navy_leader": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "Executes children effects on random navy leader that fulfills the \"limit\" trigger." + "description": "\"Executes children effects on a random Navy Leader of the country in scope, that fulfills the \\\"limit\\\" trigger.\ntooltip=key can be added to override tooltip title.\nex: GER = {\n random_navy_leader = {\n\ttooltip = my_loc_key # Optional\n\tinclude_invisible = yes # Optional - default = no\n ... character scope effects ...\n }\n}\"" }, "every_navy_leader": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "Executes children effects on navy leaders that fulfills the \"limit\" trigger. tooltip=key can be added to override tooltip title" + "description": "\"Executes children effects on every Navy Leader (or \\\"random_select_amount\\\" of random leader if specified) of the country in scope, that fulfills the \\\"limit\\\" trigger.\ntooltip=key can be added to override tooltip title.\nBy default the effects are only displayed once, you may display them for each matching unit leader with display_individual_scopes.\nex: GER = {\n every_navy_leader = {\n\ttooltip = my_loc_key # Optional\n\trandom_select_amount = 3 # Optional\n\tinclude_invisible = yes # Optional - default = no\n\tdisplay_individual_scopes = yes # Optional - default = no\n ... character scope effects ...\n }\n}\"" }, "transfer_navy": { "supported_scope": ["COUNTRY"], @@ -960,6 +1070,16 @@ "supported_target": ["none"], "description": "show what decision does\nExample: unlock_decision_tooltip = some_decision_here\nExample:\nunlock_decision_tooltip = {\n decision = \n show_effect_tooltip = yes # default is no\n show_modifiers = yes # default is no\n}\n" }, + "set_can_be_fired_in_advisor_role": { + "supported_scope": ["COUNTRY", "CHARACTER"], + "supported_target": ["none"], + "description": "\"Set the value (yes/no) to the \"can be fired\" flag in Advisor Role. When set to No, the advisor cannot be fired once hired.\n\nExample:\nsome_country_scope = {\n set_can_be_fired_in_advisor_role = {\n character = my_character_token # or keyword, variable...\n slot = political_advisor # mandatory if the character has several advisor role\n value = no\n }\n}\n\nsome_character_scope = {\n set_can_be_fired_in_advisor_role = {\n slot = political_advisor # mandatory if the character has several advisor role\n value = no\n }\n}\"" + }, + "random_military_industrial_organization": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "\"Executes children effects on a random Military Industrial Organisation of the country in scope, that fulfills the \\\"limit\\\" trigger.\ntooltip=key can be added to override tooltip title.\nex: GER = {\n random_military_industrial_organization = {\n\ttooltip = my_loc_key # Optional\n\tinclude_invisible = yes # Optional - default = no\n ... MIO scope effects ...\n }\n}\"" + }, "add_temporary_buff_to_units": { "supported_scope": ["CHARACTER"], "supported_target": ["none"], @@ -983,7 +1103,7 @@ "global_every_army_leader": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "Executes children effects on army leaders for every country in the world that fulfills the \"limit\" trigger. Better to use every_army_leader if you know the country. tooltip=key can be added to override tooltip title" + "description": "\"Executes children effects on every Army Leader (or \\\"random_select_amount\\\" of random leader if specified) for EVERY COUNTRY, that fulfills the \\\"limit\\\" trigger.\nBetter to use every_army_leader if you know the country to search in.\ntooltip=key can be added to override tooltip title.\nBy default the effects are only displayed once, you may display them for each matching unit leader with display_individual_scopes.\nglobal_every_army_leader = {\n\ttooltip = my_loc_key # Optional\n\trandom_select_amount = 3 # Optional\n\tinclude_invisible = yes # Optional - default = no\n\tdisplay_individual_scopes = yes # Optional - default = no\n\t... character scope effects ...\n}\"" }, "add_to_variable": { "supported_scope": ["any"], @@ -1118,7 +1238,7 @@ "start_border_war": { "supported_scope": ["any"], "supported_target": ["none"], - "description": "start a border war between two states. Example:\nstart_border_war = {\n\tchange_state_after_war = no #overrides the transfer of state at the end of war\n\tcombat_width = 80 #combat width for border war\n\tminimum_duration_in_days = 14 #minimum duration for combat\n\tattacker = {\n\t\tstate = 527 # state to start border war\n\t\tnum_provinces = 4 #number of provinces we want border war to be\n\t\ton_win = japan_border_conflict.2 #effect to call if wins\n\t\ton_lose = japan_border_conflict.3 #effect to call if loses\n\t\ton_cancel = japan_border_conflict.4 #effect to call if cancels\n\t\tleader_score = { #score for selecting a leader\n\t\t\tbase = 1\n\t\t\tmodifier = {\n\t\t\t\tcheck_variable = { likes_border_wars = 1 }\n\t\t\t\tadd = 2\n\t\t\t}\n\t\t}\n\t\tmodifier = 0.5 #combat modifier\n\t\tdig_in_factor = 0.5 #dig in modifier factor\n\t\tterrain_factor = 0.5 #terrain modifier factor\n\t}\n\t\n\tdefender = {\n\t\tstate = 408 # state to start border war\n\t\tnum_provinces = 4 #number of provinces we want border war to be\n\t\ton_win = japan_border_conflict.2 #effect to call if wins\n\t\ton_lose = japan_border_conflict.3 #effect to call if loses\n\t\ton_cancel = japan_border_conflict.4 #effect to call if cancels\n\t}\n}\n" + "description": "start a border war between two states. Example:\nstart_border_war = {\n\tchange_state_after_war = no #overrides the transfer of state at the end of war\n\tcombat_width = 80 #combat width for border war\n\tminimum_duration_in_days = 14 #minimum duration for combat\n\tattacker = {\n\t\tstate = 527 # state to start border war\n\t\tnum_provinces = 4 #number of provinces we want border war to be\n\t\ton_win = japan_border_conflict.2 #effect to call if wins\n\t\ton_lose = japan_border_conflict.3 #effect to call if loses\n\t\ton_cancel = japan_border_conflict.4 #effect to call if cancels\n\t\tleader_score = { #score for selecting a leader\n\t\t\tbase = 1\n\t\t\tmodifier = {\n\t\t\t\tcheck_variable = { likes_border_wars = 1 }\n\t\t\t\tadd = 2\n\t\t\t}\n\t\t}\n\t\tmodifier = 0.5 #combat modifier (default value: 0.0)\n\t\tdig_in_factor = 0.5 #dig in modifier factor (default value: 1.0)\n\t\tterrain_factor = 0.5 #terrain modifier factor(default value: 1.0)\n\t}\n\t\n\tdefender = {\n\t\tstate = 408 # state to start border war\n\t\tnum_provinces = 4 #number of provinces we want border war to be\n\t\ton_win = japan_border_conflict.2 #effect to call if wins\n\t\ton_lose = japan_border_conflict.3 #effect to call if loses\n\t\ton_cancel = japan_border_conflict.4 #effect to call if cancels\n\t}\n}\n" }, "set_border_war_data": { "supported_scope": ["any"], @@ -1173,7 +1293,7 @@ "modify_timed_idea": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "Modify amount of days of a timed idea.\n Example: modify_timed_idea = { idea = my_idea_id days = 5 } Adds 5 more days to the idea my_idea_id." + "description": "\"Modify amount of days of a timed idea for the country in scope\nex:\nSOV = {\n\tmodify_timed_idea = {\n\t\tidea = my_idea_id\n\t\tdays = 5\n\t\t# Add 5 days to the my_idea_id time-limit\n\t}\n\tmodify_timed_idea = {\n\t\tidea = my_idea_id\n\t\tdays = -5\n\t\t# Subtract 5 days to the my_idea_id time-limit\n\t}\n\tmodify_timed_idea = {\n\t\tidea = my_idea_id\n\t\tyears = 1\n\t\tmonths = 2\n\t\tdays = variable_name\n\t\t# NB: at least 1 of year/month/days is mandatory\n\t\t# NB: accept integer or variables\n\t\t# NB: tooltip will use the same year/month/day format as input\n\t}\n}\"" }, "activate_decision": { "supported_scope": ["COUNTRY"], @@ -1203,7 +1323,7 @@ "create_operative_leader": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "create operative for country\ncreate_operative_leader = {\n\tbypass_recruitment = no # whether the operative is directly added to the list of available operatives \n\tavailable_to_spy_master = yes # whether the operative can be recruited by the spy master. Only makes sense if bypass_recruitment is 'no'.\n\tportrait_tag_override = TAG # when selectiong the portrait for the operative, consider that tag instead of the country the operative will operate for gfx = GFX_portrait_alexander_rado # specify the GFX entry that the portrait will be based on, otherwise a random one will be generated.\n\t# Additionally supports the common token to other create_x_leader effects\n}\n" + "description": "create operative for country\ncreate_operative_leader = {\n\tbypass_recruitment = no # whether the operative is directly added to the list of available operatives \n\tavailable_to_spy_master = yes # whether the operative can be recruited by the spy master. Only makes sense if bypass_recruitment is 'no'.\n\tportrait_tag_override = TAG # when selectiong the portrait for the operative, consider that tag instead of the country the operative will operate for gfx = GFX_portrait_alexander_rado # specify the GFX entry that the portrait will be based on, otherwise a random one will be generated.\n\t# Additionally supports the common token to other create_x_leader effects\n gender = male # or female. If not defined in script a random gender will be applied.}\n" }, "capture_operative": { "supported_scope": ["COUNTRY", "CHARACTER"], @@ -1218,12 +1338,12 @@ "every_operative": { "supported_scope": ["COUNTRY", "OPERATION"], "supported_target": ["none"], - "description": "Executes children effects on operatives that fulfills the \"limit\" trigger. tooltip=key can be added to override tooltip title" + "description": "\"Executes children effects on every operative (or \\\"random_select_amount\\\" of random operatives if specified) that fulfills the \\\"limit\\\" trigger.\ntooltip=key can be added to override tooltip title.\nBy default the effects are only displayed once, you may display them for each matching operative with display_individual_scopes.\nex: GER = {\n every_operative = {\n\ttooltip = my_loc_key # Optional\n\trandom_select_amount = 3 # Optional\n display_individual_scopes = yes # Optional - default = no\n ... character scope effects ...\n }\n}\"" }, "send_equipment_fraction": { "supported_scope": ["COUNTRY"], "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], - "description": "Sends to target scope specified fraction of equipment.\n_send_equipment_fraction_ = {\n target = FROM\n value = 0.3 # clamped in code to the range [0,1]\n}" + "description": "Sends to target scope specified fraction of equipment.\nExample:\nsend_equipment_fraction = {\n\ttarget = FROM\n\tvalue = 0.3 # Clamped in code to the range [0,1].\n}" }, "transfer_units_fraction": { "supported_scope": ["COUNTRY"], @@ -1283,7 +1403,7 @@ "give_resource_rights": { "supported_scope": ["COUNTRY"], "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], - "description": "Gives rights to take resources from specified state. give_resource_rights = { receiver = state = }" + "description": "\"Gives rights to take resources from specified state.\n\tgive_resource_rights = {\n\t\treceiver = # accepts keyword or variable\n\t\tstate = # accepts keyword or variable\n\t\tresources = {} # [optional] If provided, only gives rights to the prodived resources.\n\t\t\t\t\t\t\t\t\t\t\t\t\tIf not provided gives rights to all resources in the states.\n\t}\"" }, "remove_resource_rights": { "supported_scope": ["COUNTRY"], @@ -1408,7 +1528,7 @@ "for_loop_effect": { "supported_scope": ["any"], "supported_target": ["any"], - "description": "Runs a same effects through a loop. example will run the effects for value_name = -3, 0, 3, 6, 9 and then terminate\nExample: for_loop_effect = {\n\tstart = -3 (default 0) start value of loop\n\tend = 10 (default 0) end value of loop\n\tcompare_type = less_than_or_equals (default less_than) comparison type between start and end val\n\tadd = 3 (default 1) value to add to current value after each iteration\n\tvalue = value_name #optional (default 'v') current value of iteration will be stored in this temp variable\n\tbreak = break_name #optional (default 'break') set this temp variable to non zero to break the loop\n #effect 1\n #effect 2 ...\n}" + "description": "Runs a same effects through a loop. example will run the effects for value_name = -3, 0, 3, 6, 9 and then terminate\nExample: for_loop_effect = {\n\tstart = -3 (default 0) start value of loop\n\tend = 10 (default 0) end value of loop\n\tcompare = less_than_or_equals (default less_than) comparison type between start and end val\n\tadd = 3 (default 1) value to add to current value after each iteration\n\tvalue = value_name #optional (default 'v') current value of iteration will be stored in this temp variable\n\tbreak = break_name #optional (default 'break') set this temp variable to non zero to break the loop\n #effect 1\n #effect 2 ...\n}" }, "while_loop_effect": { "supported_scope": ["any"], @@ -1453,7 +1573,7 @@ "add_mines": { "supported_scope": ["COUNTRY"], "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], - "description": "Add mines to a strategic region for scoped country.\n add_mines = { region = 42 mines = 100 }" + "description": "Add mines to a strategic region for scoped country.\n add_mines = { region = 42 amount = 100 }" }, "set_fuel_ratio": { "supported_scope": ["COUNTRY"], @@ -1470,6 +1590,21 @@ "supported_target": ["none"], "description": "remove advisor role to character\n\nExample:\nremove_advisor_role = {\n\tcharacter = \"GER_Character_Token\" # optional if inside character scope\n\tslot = air_chief}\n" }, + "add_power_balance_modifier": { + "supported_scope": ["any"], + "supported_target": ["none"], + "description": "adds static modifier to power balance\n\nExample:\nadd_power_balance_modifier = {\n\tid = power_balance_id\n\tmodifier = static_modifier_id # this must be defined in the static modifier database\n}" + }, + "remove_power_balance_modifier": { + "supported_scope": ["any"], + "supported_target": ["none"], + "description": "removes static modifier from power balance\n\nExample:\nremove_power_balance_modifier = {\n\tid = power_balance_id\n\tmodifier = static_modifier_id # this must be defined in the static modifier database\n}" + }, + "set_power_balance_gfx": { + "supported_scope": ["any"], + "supported_target": ["none"], + "description": "sets gfx for power balance side\n\nExample:\nset_power_balance_gfx = {\n\tid = power_balance_id\n\tside = power_balance_side_id\n\tgfx = gfx_name\n}" + }, "kill_ideology_leader": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], @@ -1520,6 +1655,211 @@ "supported_target": ["any"], "description": "set compliance of a state. Example: set_compliance = 30" }, + "career_profile_step_missiolini": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "Step completed Mussolini missions by one for the career profile" + }, + "get_supply_vehicles": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "sets a variable to the number of supply vehicles in stockpile or that are needed. example \nget_supply_vehicles = { \n\tvar = num_vehicles #variable to set \n\ttype = truck #can be truck or train \n\tneed = yes #default no. If yes, gets the number of needed vehicles \n} \n" + }, + "get_supply_vehicles_temp": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "sets a temp variable to the number of supply vehicles in stockpile or that are needed. example \nget_supply_vehicles_temp = { \n\tvar = num_vehicles #variable to set \n\ttype = truck #can be truck or train \n\tneed = yes #default no. If yes, gets the number of needed vehicles \n} \n" + }, + "every_military_industrial_organization": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "\"Executes children effects on every Military Industrial Organisation (or \\\"random_select_amount\\\" of random MIOs if specified) of the country in scope, that fulfills the \\\"limit\\\" trigger.\ntooltip=key can be added to override tooltip title.\nBy default the effects are only displayed once, you may display them for each matching MIO with display_individual_scopes.\nex: GER = {\n every_military_industrial_organization = {\n\ttooltip = my_loc_key # Optional\n\trandom_select_amount = 3 # Optional\n\tinclude_invisible = yes # Optional - default = no\n\tdisplay_individual_scopes = yes # Optional - default = no\n ... MIO scope effects ...\n }\n}\"" + }, + "add_mio_funds": { + "supported_scope": ["INDUSTRIAL_ORG"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "\"Add funds to the military industrial organization in scope.\nValue can be negative to substract funds.\nIf the new total funds go over the Size Up limit, the MIO will gain size(s).\nIf the new total funds is negative, it will be capped at 0 without retracting size.\nex:\nvar:my_mio_var = {\n add_mio_funds = 200\n add_mio_funds = -100\n}\"" + }, + "set_mio_funds": { + "supported_scope": ["INDUSTRIAL_ORG"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "\"Set the amount of funds for the military industrial organization in scope.\nInput value cannot be negative.\nIf the new total funds go over the Size Up limit, the MIO will gain size(s).\nex:\nvar:my_mio_var = {\n set_mio_funds = 100\n set_mio_funds = var:my_number_var\n}\"" + }, + "add_mio_size": { + "supported_scope": ["INDUSTRIAL_ORG"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "\"Add size levels to the military industrial organization in scope.\nInput value cannot be negative.\nThe MIO will keep the same amount of funds it had before the effect.\nex:\nvar:my_mio_var = {\n add_mio_size = 2\n add_mio_size = var:my_number_var\n}\"" + }, + "complete_mio_trait": { + "supported_scope": ["INDUSTRIAL_ORG"], + "supported_target": ["none"], + "description": "\"Complete a trait in the military industrial organization in scope.\nThis effect will not take into account the current state of the trait tree and will allow you to unlock a trait even if the one before is not unlocked.\nWill also add 1 size to the MIO so that size and numbers of unlocked traits are always aligned.\nex:\nvar:my_mio_var = {\n complete_mio_trait = my_trait_token\n complete_mio_trait = {\n\ttrait = my_trait_token\n\tshow_modifiers = no # Optional, default = yes\n }\n}\"" + }, + "set_mio_flag": { + "supported_scope": ["INDUSTRIAL_ORG"], + "supported_target": ["none"], + "description": "\"Set flag in the military industrial organization in scope.\nex:\nvar:my_mio_var = {\n set_mio_flag = my_flag\n set_mio_flag = {\n flag = my_flag (mandatory)\n\tvalue = 3 (optional, default = 1)\n days = 12 (optional, default = 0. if > 0, the flag will be deleted after this number of days)\n }\n}\"" + }, + "clr_mio_flag": { + "supported_scope": ["INDUSTRIAL_ORG"], + "supported_target": ["none"], + "description": "\"Clear the matching flag in the military industrial organization in scope.\nex:\nvar:my_mio_var = {\n clr_mio_flag = my_flag\n}\"" + }, + "modify_mio_flag": { + "supported_scope": ["INDUSTRIAL_ORG"], + "supported_target": ["none"], + "description": "\"Modify the matching flag in the military industrial organization in scope. Happens only if the flag already exists.\nex:\nvar:my_mio_var = {\n modify_mio_flag = {\n flag = my_flag\n value = 5 (optional, default = 0. Will be added to the current value)\n days = 13 (optional, default = 0. if > 0, the flag will be deleted after this number of days)\n }\n}\"" + }, + "set_mio_task_capacity": { + "supported_scope": ["INDUSTRIAL_ORG"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "\"Set the maximum task capacity in the military industrial organization in scope.\nThis changes the base value. Modifiers will still apply over it.\nInput value cannot be negative.\nIf the capacity is reduced and the MIO becomes over-assigned, the current tasks will be allowed.\nIt's only later that the player will feel the new restrictions.\nex:\nmio:my_mio = {\n set_mio_task_capacity = 3\n set_mio_task_capacity = var:my_number_var\n}\"" + }, + "add_mio_task_capacity": { + "supported_scope": ["INDUSTRIAL_ORG"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "\"Add to the maximum task capacity in the military industrial organization in scope.\nThis changes the base value. Modifiers will still apply over it.\nValue can be negative to reduce capacity, but final capacity cannot be negative (capped at 0, no error raised)\nIf the capacity is reduced and the MIO becomes over-assigned, the current tasks will be allowed.\nIt's only later that the player will feel the new restrictions.\nex:\nmio:my_mio = {\n add_mio_task_capacity = 1\n add_mio_task_capacity = -1\n add_mio_task_capacity = var:my_number_var\n}\"" + }, + "add_mio_research_bonus": { + "supported_scope": ["INDUSTRIAL_ORG"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "\"Add to the research bonus in the military industrial organization in scope.\nThis changes the base value. Modifiers will still apply over it.\nValue can be negative to reduce research bonus but final research bonus cannot be negative (capped at 0, no error raised)\nex:\nmio:my_mio = {\n add_mio_research_bonus = 0.2\n add_mio_research_bonus = -0.1\n add_mio_research_bonus = var:my_number_var\n}\"" + }, + "set_mio_research_bonus": { + "supported_scope": ["INDUSTRIAL_ORG"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "\"Set the research bonus in the military industrial organization in scope.\nThis changes the base value. Modifiers will still apply over it.\nInput value cannot be negative.\nex:\nmio:my_mio = {\n set_mio_research_bonus = 0.3\n set_research_bonus = var:my_number_var\n}\"" + }, + "set_mio_name_key": { + "supported_scope": ["INDUSTRIAL_ORG"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "\"Set the localisation key used to generate the name of the military industrial organization in scope.\nThe localisation key may be a scripted localisation (triggers evaluated in MIO scope).\nex:\nmio:my_mio = {\n set_mio_name_key = MY_NEW_MIO_NAME_KEY\n}\"" + }, + "add_mio_design_team_assign_cost": { + "supported_scope": ["INDUSTRIAL_ORG"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "\"Add percentage to the daily PP cost to assign to research in the military industrial organization in scope.\nThis changes the base value. Modifiers will still apply over it.\nValue can be negative to reduce assign cost but final value cannot be negative (capped at 0, no error raised)\nex:\nmio:my_mio = {\n add_mio_design_team_assign_cost = 0.2 # increase by 20%\n add_mio_design_team_assign_cost = -0.1 # reduce by 10%\n add_mio_design_team_assign_cost = var:my_number_var\n}\"" + }, + "set_mio_design_team_assign_cost": { + "supported_scope": ["INDUSTRIAL_ORG"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "\"Set the daily PP cost to assign to research in the military industrial organization in scope.\nThis changes the base value. Modifiers will still apply over it.\nInput value cannot be negative.\nex:\nmio:my_mio = {\n set_mio_design_team_assign_cost = 0.3\n set_mio_design_team_assign_cost = var:my_number_var\n}\"" + }, + "add_mio_industrial_manufacturer_assign_cost": { + "supported_scope": ["INDUSTRIAL_ORG"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "\"Add percentage to the daily PP cost to assign to production line in the military industrial organization in scope.\nThis changes the base value. Modifiers will still apply over it.\nValue can be negative to reduce assign cost but final value cannot be negative (capped at 0, no error raised)\nex:\nmio:my_mio = {\n add_mio_industrial_manufacturer_assign_cost = 0.2 # increase by 20%\n add_mio_industrial_manufacturer_assign_cost = -0.1 # reduce by 10%\n add_mio_industrial_manufacturer_assign_cost = var:my_number_var\n}\"" + }, + "set_mio_industrial_manufacturer_assign_cost": { + "supported_scope": ["INDUSTRIAL_ORG"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "\"Set the daily PP cost to assign to production line in the military industrial organization in scope.\nThis changes the base value. Modifiers will still apply over it.\nInput value cannot be negative.\nex:\nmio:my_mio = {\n set_mio_industrial_manufacturer_assign_cost = 0.3\n set_mio_industrial_manufacturer_assign_cost = var:my_number_var\n}\"" + }, + "add_mio_design_team_change_cost": { + "supported_scope": ["INDUSTRIAL_ORG"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "\"Add percentage to the XP cost to change MIO in equipment designer for the military industrial organization in scope.\nThis changes the base value. Modifiers will still apply over it.\nValue can be negative to reduce assign cost but final value cannot be negative (capped at 0, no error raised).\n!!! NOTE that the result is rounded down so that i.e. 5 + 10% is still 5 = 5.5 rounded down !!!\nex:\nmio:my_mio = {\n add_mio_design_team_change_cost = 0.2 # increase by 20%\n add_mio_design_team_change_cost = -0.1 # reduce by 10%\n add_mio_design_team_change_cost = var:my_number_var\n}\"" + }, + "set_mio_design_team_change_cost": { + "supported_scope": ["INDUSTRIAL_ORG"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "\"Set the XP cost to change MIO in equipment designer for the military industrial organization in scope.\nThis changes the base value. Modifiers will still apply over it.\nInput value cannot be negative.\nex:\nmio:my_mio = {\n set_mio_design_team_change_cost = 3\n set_mio_design_team_change_cost = var:my_number_var\n}\"" + }, + "unlock_mio_trait_tooltip": { + "supported_scope": ["INDUSTRIAL_ORG"], + "supported_target": ["none"], + "description": "\"Display a tooltip saying the trait is made available (aka unlocked).\nex:\nmio:my_mio = {\n unlock_mio_trait_tooltip = trait\n unlock_mio_trait_tooltip = {\n\ttrait = my_trait_token\n\tshow_modifiers = no # Optional, default = yes\n }\n}\"" + }, + "add_mio_funds_gain_factor": { + "supported_scope": ["INDUSTRIAL_ORG"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "\"Add to the factor applied when gaining funds in the military industrial organization in scope.\nThis changes the base value. Modifiers will still apply over it.\nValue can be negative to reduce assign cost but final value cannot be negative (capped at 0, no error raised)\nex:\nmio:my_mio = {\n add_mio_funds_gain_factor = 0.2\n add_mio_funds_gain_factor = -0.1\n add_mio_funds_gain_factor = var:my_number_var\n}\"" + }, + "set_mio_funds_gain_factor": { + "supported_scope": ["INDUSTRIAL_ORG"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "\"Set the factor applied when gaining funds in the military industrial organization in scope.\nThis changes the base value. Modifiers will still apply over it.\nInput value cannot be negative.\nex:\nmio:my_mio = {\n set_mio_funds_gain_factor = 0.9\n set_mio_funds_gain_factor = var:my_number_var\n}\"" + }, + "add_mio_size_up_requirement_factor": { + "supported_scope": ["INDUSTRIAL_ORG"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "\"Add to the factor applied to funds required to size up in the military industrial organization in scope.\nThis changes the base value. Modifiers will still apply over it.\nValue can be negative to reduce assign cost but final value cannot be negative (capped at 0, no error raised)\nex:\nmio:my_mio = {\n add_mio_size_up_requirement_factor = 0.2\n add_mio_size_up_requirement_factor = -0.1\n add_mio_size_up_requirement_factor = var:my_number_var\n}\"" + }, + "set_mio_size_up_requirement_factor": { + "supported_scope": ["INDUSTRIAL_ORG"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "\"Set to the factor applied to funds required to size up in the military industrial organization in scope.\nThis changes the base value. Modifiers will still apply over it.\nInput value cannot be negative.\nex:\nmio:my_mio = {\n set_mio_size_up_requirement_factor = 0.9\n set_mio_size_up_requirement_factor = var:my_number_var\n}\"" + }, + "unlock_military_industrial_organization_tooltip": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "\"Display a tooltip saying the MIO is made available (aka unlocked).\nAccepts MIO token, variables or keywords\nex:\nFIN = {\n\tunlock_military_industrial_organization_tooltip = mio:my_mio_token\n\tunlock_military_industrial_organization_tooltip = var:my_mio_var\n}\n\"" + }, + "unlock_mio_policy_tooltip": { + "supported_scope": ["any"], + "supported_target": ["none"], + "description": "\"Display a tooltip saying the MIO policy is made available (aka unlocked).\nex:\nunlock_mio_policy_tooltip = my_policy_token\nunlock_mio_policy_tooltip = {\n\tpolicy = my_policy_token\n\tshow_modifiers = no # show bonuses in tooltip - optional, default = yes\n}\n\"" + }, + "add_mio_policy_cost": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "\"Add to the base cost (in PP) for attaching a policy in the MIO policy, found in country in scope with input policy token.\nThis changes the base value. Modifiers will still apply over it.\nValue can be negative to reduce cost, but final cost cannot be negative (capped at 0, no error raised)\nex:\nSOV = {\n add_mio_policy_cost = {\n\tpolicy = my_policy_token\n\tvalue = 1\n }\n add_mio_policy_cost = {\n\tpolicy = my_policy_token\n\tvalue = -1\n }\n add_mio_policy_cost = {\n\tpolicy = my_policy_token\n\tvalue = var:my_number_var\n }\n}\"" + }, + "set_mio_policy_cost": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "\"Set the base cost (in PP) for attaching a policy in the MIO policy, found in country in scope with input policy\ntoken. This changes the base value. Modifiers will still apply over it. \nInput value cannot be negative.\nex: \nSOV = { \n set_mio_policy_cost = { \n\tpolicy = my_policy_token\n\tvalue = 3\n }\n set_mio_policy_cost = {\n\tpolicy = my_policy_token\n\tvalue = var:my_number_var\n }\n}\"" + }, + "add_mio_policy_cooldown": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "\"Add to the base cooldown (in days) after attaching a policy in the MIO policy, found in country in scope with input policy token.\nThis changes the base value. Modifiers will still apply over it.\nValue can be negative to reduce cost, but final cooldown cannot be negative (capped at 0, no error raised)\nex:\nSOV = {\n add_mio_policy_cooldown = {\n\tpolicy = my_policy_token\n\tvalue = 1\n }\n add_mio_policy_cooldown = {\n\tpolicy = my_policy_token\n\tvalue = -1\n }\n add_mio_policy_cooldown = {\n\tpolicy = my_policy_token\n\tvalue = var:my_number_var\n }\n}\"" + }, + "set_mio_policy_cooldown": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "\"Set the base cooldown (in days) after attaching a policy in the MIO policy, found in country in scope with input policy\ntoken. This changes the base value. Modifiers will still apply over it. \nInput value cannot be negative.\nex:\nSOV = {\n set_mio_policy_cooldown = {\n\tpolicy = my_policy_token\n\tvalue = 3\n }\n set_mio_policy_cooldown = {\n\tpolicy = my_policy_token\n\tvalue = var:my_number_var\n }\n}\"" + }, + "add_cic": { + "supported_scope": ["COUNTRY"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "\"Add founds to the CIC bank of the country in scope.\nValue can be negative to substract funds.\nIf the new total funds is negative, it will be set to 0.\nex:\nvar:my_country_var = {\n add_cic = 200\n add_cic = -100\n}\"" + }, + "event_option_tooltip": { + "supported_scope": ["any"], + "supported_target": ["none"], + "description": "Shows the tooltip text of an event option in other tooltips(root and from scopes are swapped).Example:\nrandom_list = mtg_usa_civil_war_fascists.1.a \n" + }, + "show_mio_tooltip": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "\"Show the name of the input MIO with the name of the initial trait (if any)\nex:\nSOV = {\n\tshow_mio_tooltip = my_mio_token\n\tshow_mio_tooltip = var:my_mio_var\n}\"" + }, + "set_mio_icon": { + "supported_scope": ["INDUSTRIAL_ORG"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "\"Set the icon GFX for the military industrial organization in scope.\nex:\nmio:my_mio = {\n set_mio_icon = MY_NEW_MIO_ICON_GFX\n}\"" + }, + "create_purchase_contract": { + "supported_scope": ["any"], + "supported_target": ["none"], + "description": "\"Creates a purchase contract between the countries.\nExample:\ncreate_purchase_contract = \n{\n\tseller = ENG\n\tbuyer = RAJ\n\tcivilian_factories = 2\n\tequipment = {\n\t\ttype = infantry_equipment\n\t\tamount = 600\n\t}\n\tequipment = {\n\t\ttype = armored_car1\n\t\tamount = 100\n\t}\n}\"" + }, + "random_purchase_contract": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "\"Executes children effects on a random purchase contract of the country in scope, that fulfills the \\\"limit\\\" trigger.\ntooltip = key need to be added to override the tooltip title.\nex: GER = {\n random_purchase_contract = {\n\tlimit = { ... contract scope triggers ... }\n\ttooltip = my_loc_key # Optional\n ... Purchase Contract scope effects ...\n }\n}\"" + }, + "every_purchase_contract": { + "supported_scope": ["any"], + "supported_target": ["none"], + "description": "\"Executes children effects on every purchase contract (or \\\"random_select_amount\\\" of random purchase contracts if specified) of the country in scope, that fulfills the \\\"limit\\\" trigger.\ntooltip = key need to be added to override the tooltip title.\nBy default the effects are only displayed once, you may display them for each matching purchase contract with display_individual_scopes.\nex: GER = {\n every_military_industrial_organization = {\n\tlimit = { ... contract scope triggers ... }\n\ttooltip = my_loc_key # Optional\n\trandom_select_amount = 3 # Optional\n\tdisplay_individual_scopes = yes # Optional - default = no\n ... Purchase Contract scope effects ...\n }\n}\"" + }, + "cancel_purchase_contract": { + "supported_scope": ["PURCHASE_CONTRACT"], + "supported_target": ["none"], + "description": "\"Cancels the scoped purchase contract.\nExample:\ncontract = {cancel_purchase_contract = yes}\"" + }, "add_operation_token": { "supported_scope": ["COUNTRY"], "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], @@ -1543,7 +1883,7 @@ "every_controlled_state": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "Executes children effects on every controlled state that fulfills the \"limit\" trigger. tooltip=key can be added to override tooltip title" + "description": "\"Executes children effects on every State controlled by the country in scope (or \\\"random_select_amount\\\" of random state if specified) that fulfills the \\\"limit\\\" trigger.\ntooltip=key can be added to override tooltip title.\nBy default the effects are only displayed once, you may display them for each matching state with display_individual_scopes.\nex:\nSOV = {\n\tevery_controlled_state = {\n\t\ttooltip = my_loc_key # Optional\n\t\trandom_select_amount = 3 # Optional\n\t\tdisplay_individual_scopes = yes # Optional - default = no\n\t\t... state scope effects ...\n\t}\n}\"" }, "set_state_province_controller": { "supported_scope": ["STATE"], @@ -1578,7 +1918,7 @@ "every_occupied_country": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "Executes children effects on every occupied country that fulfills the \"limit\" trigger. tooltip=key can be defined to override tooltip title" + "description": "\"Executes children effects on every occupied Country by the country in scope (or \\\"random_select_amount\\\" of random country if specified) that fulfills the \\\"limit\\\" trigger.\ntooltip=key can be added to override tooltip title.\nBy default the effects are only displayed once, you may display them for each matching country with display_individual_scopes.\nex:\nSOV = {\n\tevery_occupied_country = {\n\t\ttooltip = my_loc_key # Optional\n\t\trandom_select_amount = 3 # Optional\n\t\tdisplay_individual_scopes = yes # Optional - default = no\n\t\t... country scope effects ...\n\t}\n}\"" }, "add_resistance_target": { "supported_scope": ["STATE"], @@ -1608,7 +1948,7 @@ "every_country_with_original_tag": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "Executes children effects on a all countries with original tag. tooltip=key can be defined to override tooltip title. Example:\nevery_country_with_original_tag = { \n original_tag_to_check = ENG # the effect will only run on countries that has this original tag \n limit = { always = yes } # a limit can be defined to limit scopes\n # ... effects to execute \n}" + "description": "\"Executes children effects on a all countries with original tag (or \\\"random_select_amount\\\" of random country if specified) that fulfills the \\\"limit\\\" trigger.\ntooltip=key can be added to override tooltip title.\nBy default the effects are only displayed once, you may display them for each matching country with display_individual_scopes.\nex:\nevery_country_with_original_tag = {\n\toriginal_tag_to_check = ENG # the effect will only run on countries that has this original tag\n\ttooltip = my_loc_key # Optional\n\trandom_select_amount = 3 # Optional\n\tdisplay_individual_scopes = yes # Optional - default = no\n\t... country scope effects ...\n}\"" }, "add_decryption": { "supported_scope": ["COUNTRY"], @@ -1643,7 +1983,7 @@ "create_ship": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "create a ship from another country and assign it to the reserve fleet.\n'creator' is optional. If not set, it will be the scoped country.\n'name' is optional.\nFRA = {\n create_ship = {\n type = ship_hull_submarine_1\n equipment_variant = \"S Class\"\n creator = ENG\n name = \"My ship name\"\n }\n}\n" + "description": "create a ship from another country and assign it to the reserve fleet.\n'creator' is optional. If not set, it will be the scoped country.\n'name' is optional.\nFRA = {\n create_ship = {\n type = ship_hull_submarine_1\n equipment_variant = \"S Class\"\n creator = ENG\n name = \"My ship name\"\n amount = 5 #amount to add\n }\n}\n" }, "set_faction_spymaster": { "supported_scope": ["COUNTRY"], @@ -1655,6 +1995,11 @@ "supported_target": ["none"], "description": "Lock all the division template at the country level. Note that you need to unlock them in the same way (You can't use 'set_division_template_lock' individually, because the lock at the country level will not be removed)" }, + "remove_all_power_balance_modifiers": { + "supported_scope": ["any"], + "supported_target": ["none"], + "description": "removes all static modifiers from power balance\n\nExample:\nremove_all_power_balance_modifiers = {\n\tid = power_balance_id\n}" + }, "randomize_temp_variable": { "supported_scope": ["any"], "supported_target": ["none"], @@ -1703,7 +2048,7 @@ "add_civil_war_target": { "supported_scope": ["COUNTRY"], "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], - "description": "Adds a civil war target to a specific country\n Usage: civill_war_target = TAG" + "description": "Adds a country as a civil war target (added to both sides)\n\nExample:\nadd_civil_war_target = TAG" }, "modulo_temp_variable": { "supported_scope": ["any"], @@ -1788,7 +2133,7 @@ "every_character": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "Executes children effects on every character that fulfills the \"limit\" trigger." + "description": "\"Executes children effects on every Character (or \\\"random_select_amount\\\" of random character if specified) of the country in scope, that fulfills the \\\"limit\\\" trigger.\ntooltip=key can be added to override tooltip title.\nBy default the effects are only displayed once, you may display them for each matching character with display_individual_scopes.\nex: GER = {\n every_unit_leader = {\n\ttooltip = my_loc_key # Optional\n\trandom_select_amount = 3 # Optional\n\tinclude_invisible = yes # Optional - default = no\n display_individual_scopes = yes # Optional - default = no\n ... character scope effects ...\n }\n}\"" }, "random_character": { "supported_scope": ["COUNTRY"], @@ -1843,7 +2188,7 @@ "promote_character": { "supported_scope": ["COUNTRY", "CHARACTER"], "supported_target": ["none"], - "description": "promotes character to the head of their political party.If this is the ruling party, the character becomes country leader.if the character has several country leader role (i.e. several ideologies), then it is mandatory to provide the ideology to promote.\n\nExample in country scope:\npromote_character = GER_erwin_rommel\npromote_character = {\n character = GER_erwin_rommel\n ideology = nazism\n}\n\n\nExample in character scope:\npromote_character = yes\npromote_character = nazism\npromote_character = {\n ideology = nazism\n}" + "description": "promotes character to the head of their political party.If this is the ruling party, the character becomes country leader.if the character has several country leader role (i.e. several ideologies), then it is mandatory to provide the ideology to promote.\n\nExample in country scope or scripted effects:\npromote_character = GER_erwin_rommel\npromote_character = {\n character = GER_erwin_rommel\n ideology = nazism\n}\n\n\nExample in character scope:\npromote_character = yes\npromote_character = nazism\npromote_character = {\n ideology = nazism\n}" }, "play_song": { "supported_scope": ["any"], @@ -1930,11 +2275,66 @@ "supported_target": ["any"], "description": "sets the rotation of existing entity\nset_entity_animation = {\n id = 123 # id of entity \n animation = \"shoot_lasers\" \n}" }, + "start_peace_conference": { + "supported_scope": ["COUNTRY"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "Starts a limited peace conference between the two countries if at war. Only the specified loser country and their potential subjects are included as losers in the conference. ROOT is the winner while the target tag is the loser.\nExample:\nSOV = {\n start_peace_conference = {\n tag = FIN # main loser\n score_factor = 0.2 # 0-1, the fraction of conference score allocated to winners. Can use a variable like eg PREV.surrender_progress. 0.0 implies a white peace.\n \n # winner_scope and loser_scope can be ALL (all relevant countries), FACTION (members of main country's faction and overlordship), LIMITED_FACTION (faction members if main country is faction leader, and subjects if main country is overlord), and LIMITED (main country and their subjects)\n winner_scope = FACTION # optional, default is LIMITED_FACTION\n loser_scope = FACTION # optional, default is LIMITED_FACTION\n message = FIN_agree_peace # optional, custom message to display in post-conference popup\n }\n}" + }, + "add_units_to_division_template": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "Add units to division template for a country. Example:\nadd_units_to_division_template = {\n template_name = \"Name of template\" # not needed on done on specific division\n regiments = {\n infantry = 0 # (Adds infantry to first available slot on first column (x=0))\n cavalry = 2 # (Adds cavalry to first available slot on third column (x=2))\n }\n support = {\n military_police = 0 # (Adds military_police to first available slot on first (and likely only) column of supports (x=0))\n }\n}" + }, "swap_country_leader_traits": { "supported_scope": ["CHARACTER"], "supported_target": ["none"], "description": "swap 2 traits on a country leader. \n Syntax: swap_country_leader_traits = { remove = add = [ideology = ] }" }, + "random_country_division": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "Executes children effects on a random division that fulfill the \"limit\" trigger. tooltip=key can be added to override tooltip title" + }, + "every_country_division": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "\"Executes children effects on every Division of the country in scope (or \\\"random_select_amount\\\" of random divisions if specified) that fulfills the \\\"limit\\\" trigger.\ntooltip=key can be added to override tooltip title.\nBy default the effects are only displayed once, you may display them for each matching division with display_individual_scopes.\nex:\nSOV = {\n\tevery_country_division = {\n\t\ttooltip = my_loc_key # Optional\n\t\trandom_select_amount = 3 # Optional\n\t\tdisplay_individual_scopes = yes # Optional - default = no\n\t\t... division scope effects ...\n\t}\n}\"" + }, + "reseed_division_commander": { + "supported_scope": [], + "supported_target": ["none"], + "description": "reseed_division_commander = 9999 [Debug & Testing Effect]" + }, + "give_market_access": { + "supported_scope": ["COUNTRY"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "\"Gives market access to the specified country.\nExample:\nFRA = {\n give_market_access = BRA # France and Brazil will now have market access to each other\n}\"" + }, + "set_power_balance": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "sets active power balance for country or sets parameters of the already active power balance\n\nExample:\nset_power_balance = {\n\tid = power_balance_id\n\tleft_side = left_side_id\n\tright_side = right_side_id\n\tset_default = yes/no # default = no\n\tset_value = 0.5 # if used, will set the new value of the power balance\n}" + }, + "remove_power_balance": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "removes power balance from country\n\nExample:\nremove_power_balance = {\n\tid = power_balance_id\n}" + }, + "add_power_balance_value": { + "supported_scope": ["any"], + "supported_target": ["none"], + "description": "adds current value of a power balance\n\nExample:\nadd_power_balance_value = {\n\tid = power_balance_id\n\tvalue = 0.42 # this value is added to the current value of the power balance\n\ttooltip_side = side_id # optional - add this to tell the game to show the name of the specific side in the tooltip\n}" + }, + "set_division_template_cap": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "Set division cap for a division template\nExample: set_division_template_cap = { division_template = division_cap = }" + }, + "clear_division_template_cap": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "Clears division cap for a division template\nExample: clear_division_template_cap = { division_template = }" + }, "set_character_flag": { "supported_scope": ["CHARACTER"], "supported_target": ["none"], @@ -1953,7 +2353,7 @@ "every_core_state": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "Executes children effects on every core state that fulfills the \"limit\" trigger. tooltip=key can be added to override tooltip title" + "description": "\"Executes children effects on every core State of the country in scope (or \\\"random_select_amount\\\" of random state if specified) that fulfills the \\\"limit\\\" trigger.\ntooltip=key can be added to override tooltip title.\nBy default the effects are only displayed once, you may display them for each matching state with display_individual_scopes.\nex:\nSOV = {\n\tevery_core_state = {\n\t\ttooltip = my_loc_key # Optional\n\t\trandom_select_amount = 3 # Optional\n\t\tdisplay_individual_scopes = yes # Optional - default = no\n\t\t... state scope effects ...\n\t}\n}\"" }, "random_core_state": { "supported_scope": ["COUNTRY"], @@ -1993,7 +2393,7 @@ "every_possible_country": { "supported_scope": ["any"], "supported_target": ["none"], - "description": "Executes children effects on every country that fulfills the \"limit\" trigger.\nDifference with every_country is that it includes countries not yet present on the map.\ntooltip=key can be defined to override tooltip title." + "description": "\"Executes children effects on every Country (or \\\"random_select_amount\\\" of random country if specified) that fulfills the \\\"limit\\\" trigger.\nDifference with every_country is that it includes countries not yet present on the map.\ntooltip=key can be added to override tooltip title.\nBy default the effects are only displayed once, you may display them for each matching country with display_individual_scopes.\nex:\nevery_possible_country = {\n\ttooltip = my_loc_key # Optional\n\trandom_select_amount = 3 # Optional\n\tdisplay_individual_scopes = yes # Optional - default = no\n\t... country scope effects ...\n}\"" }, "show_unit_leaders_tooltip": { "supported_scope": ["COUNTRY"], @@ -2003,7 +2403,7 @@ "character_list_tooltip": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "Display in tooltip every character that fulfills the \"limit\" trigger." + "description": "Display in tooltip every character (or \"random_select_amount\" of random characters if specified) that fulfills the \"limit\" trigger." }, "remove_unit_leader_role": { "supported_scope": ["COUNTRY", "CHARACTER"], @@ -2032,6 +2432,16 @@ "supported_target": ["none"], "description": "if_, CIfTrigger, A conditional trigger\nif = { limit = { } }" }, + "is_mio_visible": { + "supported_scope": ["INDUSTRIAL_ORG"], + "supported_target": ["none"], + "description": "\"Checks if the visible trigger in the Military Industrial Organisation in scope returns true.\nex:\nmio:my_mio = {\n\tis_mio_visible = yes\n\tis_mio_visible = no\n}\"" + }, + "is_mio_available": { + "supported_scope": ["INDUSTRIAL_ORG"], + "supported_target": ["none"], + "description": "\"Checks if the available AND visible triggers in the Military Industrial Organisation in scope return true.\nex:\nmio:my_mio = {\n\tis_mio_available = yes\n\tis_mio_available = no\n}\"" + }, "can_build_railway": { "supported_scope": ["any"], "supported_target": ["any"], @@ -2054,12 +2464,12 @@ }, "any_subject_country": { "supported_scope": ["COUNTRY"], - "supported_target": ["none"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "check if any subject country meets the trigger. tooltip=key can be defined to override title" }, "all_subject_countries": { "supported_scope": ["COUNTRY"], - "supported_target": ["none"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "check if all subject countries meet the trigger. tooltip=key can be defined to override title" }, "has_railway_level": { @@ -2119,7 +2529,7 @@ }, "any_neighbor_country": { "supported_scope": ["COUNTRY"], - "supported_target": ["none"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "check if any neighbor country meets the trigger. tooltip=key can be defined to override title" }, "has_country_flag": { @@ -2139,13 +2549,13 @@ }, "any_country": { "supported_scope": ["any"], - "supported_target": ["none"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "check if any country meets the trigger" }, "check_variable": { "supported_scope": ["any"], "supported_target": ["any"], - "description": "Compares a variable to a number" + "description": "\"Compares a variable to a number or another variable\nex:\ncheck_variable = {\n\tvar = varname\n\tvalue = 12\t# accepts variables\n\tcompare = equals\n\t# possible values for compare :\n\t# less_than, less_than_or_equals\n\t# greater_than, greater_than_or_equals\n\t# equals, not_equals\n\ttooltip = loc_str_id_with_LEFT_and_RIGHT #localized text with LEFT and/or RIGHT tokens in it\n}\n# some shorter versions :\ncheck_variable = { varname = 0 }\ncheck_variable = { varname > 12 }\ncheck_variable = { varname < 42 }\ncheck_variable = { varname > another_varname }\n\"" }, "region": { "supported_scope": ["STATE"], @@ -2162,10 +2572,15 @@ "supported_target": ["none"], "description": "check state's strategic area id" }, + "has_war_with_major": { + "supported_scope": ["COUNTRY"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "is country at war with a major" + }, "threat": { "supported_scope": ["any"], "supported_target": ["none"], - "description": "check the global threat value. 0-1 value" + "description": "check the global threat value (world tension). 0-1 value" }, "always": { "supported_scope": ["any"], @@ -2198,7 +2613,7 @@ "description": "Checks if player has a DLC.\nExample: has_dlc = \"name of the dlc\"" }, "hidden_trigger": { - "supported_scope": ["STATE", "COUNTRY", "CHARACTER", "COMBATANT", "ACE", "STRATEGIC_REGION", "OPERATION"], + "supported_scope": ["STATE", "COUNTRY", "CHARACTER", "COMBATANT", "ACE", "STRATEGIC_REGION", "OPERATION", "INDUSTRIAL_ORG", "PURCHASE_CONTRACT"], "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "a hidden trigger, anything in it not shown in tooltips" }, @@ -2214,7 +2629,7 @@ }, "any_enemy_country": { "supported_scope": ["COUNTRY"], - "supported_target": ["none"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "check if any enemy country meets the trigger. tooltip=key can be defined to override title" }, "is_neighbor_of": { @@ -2239,17 +2654,17 @@ }, "all_neighbor_country": { "supported_scope": ["COUNTRY"], - "supported_target": ["none"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "check if all neighbor countries meet the trigger. tooltip=key can be defined to override title" }, "all_country": { "supported_scope": ["any"], - "supported_target": ["none"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "check if all countries meets the trigger. tooltip=key can be defined to override title" }, "all_enemy_country": { "supported_scope": ["COUNTRY"], - "supported_target": ["none"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "check if all enemy countries meet the trigger. tooltip=key can be defined to override title" }, "night": { @@ -2267,11 +2682,41 @@ "supported_target": ["none"], "description": "check combat province temperature" }, + "any_state_division": { + "supported_scope": ["STATE"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "check if any division meets the trigger. tooltip=key can be defined to override title" + }, "armor": { "supported_scope": ["COMBATANT"], "supported_target": ["none"], "description": "Check that average armor level of combatant is over a certain level" }, + "unit_strength": { + "supported_scope": [], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "Check scope unit strength status 0-1: Example unit_strength < 1" + }, + "unit_organization": { + "supported_scope": [], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "Check scope unit organization status 0-1: Example unit_organization < 1" + }, + "division_has_majority_template": { + "supported_scope": [], + "supported_target": ["none"], + "description": "checks if division template has majority of subunit type." + }, + "any_country_division": { + "supported_scope": ["COUNTRY"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "check if any division meets the trigger. tooltip=key can be defined to override title" + }, + "is_unit_template_reserves": { + "supported_scope": [], + "supported_target": ["any"], + "description": "returns true if this unit's template has the reserves priority" + }, "has_war": { "supported_scope": ["COUNTRY"], "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], @@ -2287,6 +2732,16 @@ "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "check if state is owned by" }, + "is_embargoed_by": { + "supported_scope": ["COUNTRY"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "check if embargoed by specified country" + }, + "is_embargoing": { + "supported_scope": ["COUNTRY"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "check if country is embargoing specified country" + }, "skill_advantage": { "supported_scope": ["COMBATANT"], "supported_target": ["none"], @@ -2312,15 +2767,40 @@ "supported_target": ["any"], "description": "has state flag been setCheck flag val date set and days since set.\nExample: has_state_flag = test_flag\nhas_state_flag = { \n\tflag = (mandatory)\n\tvalue < (optional)\n\tdate > (optional)\n\tdays > (optional)\n}" }, - "has_war_with": { - "supported_scope": ["COUNTRY"], + "any_country_with_core": { + "supported_scope": ["STATE"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "check if any country with a core on the scoped state meets the trigger. tooltip=key can be defined to override title" + }, + "has_resources_in_country": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "checks for amount of resources in country (the balance by default)\nExample:\nhas_resources_in_country = {\n\tresource = chromium\n\tamount > 10\n\textracted = no # (optional, default: no) checks extracted amount instead of country balance\n\tbuildings = no # (optional, default: no) checks only amount from local buildings instead of country balance" + }, + "pc_is_state_claimed": { + "supported_scope": ["STATE"], + "supported_target": ["none"], + "description": "Check if state is claimed (and uncontested) in conferenceExample:\npc_is_state_claimed = yes/no" + }, + "division_has_battalion_in_template": { + "supported_scope": [], + "supported_target": ["none"], + "description": "checks if division template has the subunit type." + }, + "has_war_with": { + "supported_scope": ["COUNTRY"], "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "is countries at war" }, + "has_resources_rights": { + "supported_scope": ["STATE", "COUNTRY"], + "supported_target": ["none"], + "description": "Checks for resources rights in state.Warning! this always returns false if the state has no resource.\nExample:\nhas_resources_rights = {\n\tstate = 60 # optional - can be used in state scope instead\n\treceiver = GER # optional - can be used in country scope instead\n\tresources = {steel oil} # optional - if not provided checks all resources." + }, "divisions_in_state": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "checks for amount of divisions in specified state owned by current country." + "description": "checks for amount of divisions in specified state owned by current country. \ndivisions_in_state = { \n state = state_id \n size > 42 \n type = unit type eg. infantry, armor (optional) \n unit = specific unit eg. mountaineers, light_tank (optional) \n}" }, "country_exists": { "supported_scope": ["any"], @@ -2424,42 +2904,42 @@ }, "any_state": { "supported_scope": ["any"], - "supported_target": ["none"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "check if any state meets the trigger. tooltip=key can be defined to override title" }, "any_owned_state": { "supported_scope": ["COUNTRY"], - "supported_target": ["none"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "check if any owned state meets the trigger. tooltip=key can be defined to override title" }, "any_neighbor_state": { "supported_scope": ["STATE"], - "supported_target": ["none"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "check if any neighbor state meets the trigger. tooltip=key can be defined to override title" }, "any_allied_country": { "supported_scope": ["COUNTRY"], - "supported_target": ["none"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "Check if any allied country meets the trigger. Does not include the country itself. tooltip=key can be defined to override title" }, "all_state": { "supported_scope": ["any"], - "supported_target": ["none"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "check if all states meets the trigger. tooltip=key can be defined to override title" }, "all_owned_state": { "supported_scope": ["COUNTRY"], - "supported_target": ["none"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "check if all owned states meets the trigger. tooltip=key can be defined to override title" }, "all_neighbor_state": { "supported_scope": ["STATE"], - "supported_target": ["none"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "check if all neighbor states meets the trigger. tooltip=key can be defined to override title" }, "all_allied_country": { "supported_scope": ["COUNTRY"], - "supported_target": ["none"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "Check if all allied countries meet the trigger. Does not include the country itself. tooltip=key can be defined to override title" }, "surrender_progress": { @@ -2472,6 +2952,21 @@ "supported_target": ["none"], "description": "Checks if daily political power increase is more or less that specified value \n political_power_daily > 1.5" }, + "has_bombing_war_support": { + "supported_scope": ["COUNTRY"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "check value of bombing malus to war support 0-1: Example has_bombing_war_support < 0.1" + }, + "has_casualties_war_support": { + "supported_scope": ["COUNTRY"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "check value of casualties malus to war support 0-1: Example has_casualties_war_support < 0.1" + }, + "has_convoys_war_support": { + "supported_scope": ["COUNTRY"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "check value of convoys sunk malus to war support 0-1: Example has_convoys_war_support < 0.1" + }, "resistance": { "supported_scope": ["STATE"], "supported_target": ["any"], @@ -2655,7 +3150,7 @@ "num_of_factories": { "supported_scope": ["COUNTRY"], "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], - "description": "check amount of total factories" + "description": "Check amount of available factories (excluding temporary sources like trade and lend-lease)\nExample:\nGER = { num_of_factories < 50 }" }, "focus_progress": { "supported_scope": ["COUNTRY"], @@ -2675,7 +3170,7 @@ "ships_in_state_ports": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "checks for amount of ships in specified state's ports. \nships_in_state_ports = { \n type = ship_category \n state = state_id \n size = 42 \n}" + "description": "checks for amount of ships in specified state's ports. \nships_in_state_ports = { \n type = ship_category \n state = state_id (or scopped variable) \n size = 42 \n}" }, "is_major": { "supported_scope": ["COUNTRY"], @@ -2840,7 +3335,7 @@ "has_wargoal_against": { "supported_scope": ["COUNTRY"], "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], - "description": "Checks if country has a wargoal against the target. \nExample: ENG = { has_wargoal_against = GER }" + "description": "Checks if country has a wargoal against the target.\nExample 1:\nENG = { has_wargoal_against = GER }\nExample 2:\nENG = {\n has_wargoal_against = {\n target = GER\n type = take_state # (optional: if not specified any wargoal will do)\n }\n}" }, "is_justifying_wargoal_against": { "supported_scope": ["COUNTRY"], @@ -2857,25 +3352,15 @@ "supported_target": ["none"], "description": "Will compare towards the amount of divisions an ai wants to have." }, - "has_claimed_state_in_peace_conference": { - "supported_scope": ["STATE"], - "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], - "description": "Checks if a state has been claimed by target country in an ongoing peace conference" - }, "num_owned_neighbour_states": { "supported_scope": ["STATE"], "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "Checks if a country owns the amount of states neighbouring the scoped state" }, - "num_claimed_peace_conference_neighbour_states": { - "supported_scope": ["STATE"], - "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], - "description": "Checks if a country owns the amount of states neighbouring the scoped state." - }, "is_island_state": { "supported_scope": ["STATE"], "supported_target": ["any"], - "description": "always returns specified value" + "description": "\"return true if the state is composed exclusively of one-province-islands.\nMore precisly, all provinces in the state have no land neighbor.\nOr if they do they are connected by a strait.\n(cf. is_one_state_island for checking if the state itself is an island)\nex: 145 = {\n\tis_island_state = yes\n\tis_island_state = no\n}\"" }, "has_elections": { "supported_scope": ["COUNTRY"], @@ -2909,12 +3394,12 @@ }, "any_other_country": { "supported_scope": ["any"], - "supported_target": ["none"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "check if any other country meets the trigger. Excludes current country. tooltip=key can be defined to override title" }, "all_other_country": { "supported_scope": ["any"], - "supported_target": ["none"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "check if all other countries meets the trigger. Excludes current country. tooltip=key can be defined to override title" }, "has_non_aggression_pact_with": { @@ -3013,9 +3498,9 @@ "description": "check for damaged buildings of nation" }, "has_resources_amount": { - "supported_scope": ["STATE", "COUNTRY"], + "supported_scope": ["STATE"], "supported_target": ["none"], - "description": "checks for amount of resources in specified state\nExample:\nhas_resources_amount = {\n\tresource = chromium\n\tamount > 10\n\tdelivered = no #check the delivered amount, where all modifiers apply\n\tstate = 31 (optional - can be used in state scope instead)" + "description": "checks for amount of resources in state\nExample:\nhas_resources_amount = {\n\tresource = chromium\n\tamount > 10\n\tstate = 31 (optional - can be used in state scope instead)\n\tdelivered = no # (optional, default: no) check the actual delivered amount from the state to its controller, with all modifiers applied" }, "has_tech_bonus": { "supported_scope": ["COUNTRY"], @@ -3150,7 +3635,7 @@ "amount_taken_ideas": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "has current country picked specified amount of ideas. Category and slot is optional.\nExcludes national_spirit, hidden, law = yes\namount_taken_ideas = {\n\tamount < (mandatory)\n\tcategory = { military_staff } (optional)\n\tslot = { army_chief political_advisor } (optional)\n}" + "description": "has current country picked specified amount of ideas. Category and slots is optional.\nExcludes national_spirit, hidden, law = yes\namount_taken_ideas = {\n\tamount < (mandatory)\n\tcategories = { military_staff } (optional)\n\tslots = { army_chief political_advisor } (optional)\n}" }, "has_carrier_airwings_in_own_combat": { "supported_scope": ["COMBATANT"], @@ -3185,32 +3670,32 @@ "all_unit_leader": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "check if all unit leaders meets the trigger. tooltip=key can be defined to override title" + "description": "\"Checks if all Unit Leaders of the Country in scope match the triggers.\ntooltip=key can be defined to override title.\nex: GER = {\n all_unit_leader = {\n\ttooltip = my_loc_key # Optional\n\tinclude_invisible = yes # Optional - default = no\n ... character scope triggers ...\n }\n}\"" }, "any_unit_leader": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "check if any unit leader meets the trigger. tooltip=key can be defined to override title" + "description": "\"Checks if at least one Unit Leader of the Country in scope matches the triggers.\ntooltip=key can be defined to override title.\nex: GER = {\n any_unit_leader = {\n\ttooltip = my_loc_key # Optional\n\tinclude_invisible = yes # Optional - default = no\n ... character scope triggers ...\n }\n}\"" }, "all_army_leader": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "check if all unit leaders meets the trigger. tooltip=key can be defined to override title" + "description": "\"Checks if All Army Leader of the Country in scope match the triggers.\ntooltip=key can be defined to override title.\nex: GER = {\n all_army_leader = {\n\ttooltip = my_loc_key # Optional\n\tinclude_invisible = yes # Optional - default = no\n ... character scope triggers ...\n }\n}\"" }, "any_army_leader": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "check if any unit leader meets the trigger. tooltip=key can be defined to override title" + "description": "\"Checks if at least one Army Leader of the Country in scope matches the triggers.\ntooltip=key can be defined to override title.\nex: GER = {\n any_army_leader = {\n\ttooltip = my_loc_key # Optional\n\tinclude_invisible = yes # Optional - default = no\n ... character scope triggers ...\n }\n}\"" }, "all_navy_leader": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "check if all unit leaders meets the trigger. tooltip=key can be defined to override title" + "description": "\"Checks if all Navy Leaders of the Country in scope match the triggers.\ntooltip=key can be defined to override title.\nex: GER = {\n all_navy_leader = {\n\ttooltip = my_loc_key # Optional\n\tinclude_invisible = yes # Optional - default = no\n ... character scope triggers ...\n }\n}\"" }, "any_navy_leader": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "check if any unit leader meets the trigger. tooltip=key can be defined to override title" + "description": "\"Checks if at least one Navy Leader of the Country in scope matches the triggers.\ntooltip=key can be defined to override title.\nex: GER = {\n any_navy_leader = {\n\ttooltip = my_loc_key # Optional\n\tinclude_invisible = yes # Optional - default = no\n ... character scope triggers ...\n }\n}\"" }, "is_assigned": { "supported_scope": ["CHARACTER"], @@ -3247,11 +3732,46 @@ "supported_target": ["none"], "description": "Checks if daily command power increase is more or less that specified value \n command_power_daily > 1.5" }, + "has_completed_custom_achievement": { + "supported_scope": ["any"], + "supported_target": ["any"], + "description": "\"Return true if the input achievement is found in currently loaded mods, and if this achievement has been completed (either in current game or in a previous one)\n\nExample:\nhas_completed_custom_achievement = {\n\tmod = my_mod_unique_id # set in common/achievements files\n\tachievement = my_achievement_token\n}\"" + }, + "has_advisor_role": { + "supported_scope": ["CHARACTER"], + "supported_target": ["none"], + "description": "has_advisor_role = 'character_slot_name' - Checks if the character in scope has an advisor role for the given slot" + }, + "advisor_can_be_fired": { + "supported_scope": ["CHARACTER"], + "supported_target": ["none"], + "description": "\"Return true if the character has an advisor role and they can be fired.\nWarning: will return false if the character has no advisor role or it does not match the input slot. You should use has_advisor_role trigger first to really test the can_be_fired flag.\n\nExamples:\nsome_character_scope = {\n advisor_can_be_fired = {\n slot = political_advisor # mandatory if the character has several advisor role\n }\n}\n\nsome_character_scope = {\n advisor_can_be_fired = yes # or no\n}\"" + }, + "is_hired_as_advisor": { + "supported_scope": ["CHARACTER"], + "supported_target": ["none"], + "description": "is_hired_as_advisor = yes/no - Checks if the current character has at least one advisor role for which they are hired" + }, + "all_military_industrial_organization": { + "supported_scope": ["COUNTRY"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "\"Checks if all Military Industrial Organisations of the Country in scope match the triggers.\ntooltip=key can be defined to override title.\nex: GER = {\n any_military_industrial_organization = {\n\ttooltip = my_loc_key # Optional\n\tinclude_invisible = yes # Optional - default = no\n ... MIO scope triggers ...\n }\n}\"" + }, "is_fully_controlled_by": { "supported_scope": ["STATE"], "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "Checks if state is fully controlled by specified tag" }, + "has_military_industrial_organization": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "\"Checks if the Country in scope has a Military Industrial Organisation matching the input token.\nCan use variable as input.\nex: \nGER = { \n has_military_industrial_organization = infantry_mio_token\n has_military_industrial_organization = var:my_mio_var\n}\"" + }, + "any_military_industrial_organization": { + "supported_scope": ["COUNTRY"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "\"Checks if at least one Military Industrial Organisation of the Country in scope matches the triggers.\ntooltip=key can be defined to override title.\nex: GER = {\n any_military_industrial_organization = {\n\ttooltip = my_loc_key # Optional\n\tinclude_invisible = yes # Optional - default = no\n ... MIO scope triggers ...\n }\n}\"" + }, "has_ability": { "supported_scope": ["CHARACTER"], "supported_target": ["any"], @@ -3382,11 +3902,21 @@ "supported_target": ["none"], "description": "prints all variables in scope and temp variables to a file\nExample: print_variables = {\nfile = log_file\ntext = header_text\nappend = yes\nprint_global = yes\nvar_list = { a b c } #optional\n}" }, + "num_planes_stationed_in_regions": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "Will compare the number of planes which have bases in the specified regions. Supports < > =\nExample: num_planes_stationed_in_regions = {\nvalue < 100\nregions = { 18 47 }\n}" + }, "has_active_mission": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], "description": "check if country has an active mission with specified ID. has_active_mission = my_test_mission" }, + "pc_turn": { + "supported_scope": ["any"], + "supported_target": ["none"], + "description": "Checks turn number in PC.\nExample:\npc_turn > 20" + }, "has_attache": { "supported_scope": ["COUNTRY"], "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], @@ -3462,6 +3992,51 @@ "supported_target": ["none"], "description": "Rounds a temporary variable\nExample: round_temp_variable = num_dogs" }, + "pc_is_forced_government_to": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "Checks if country has had their government force-changed to a certain ideology in the peace conference.\nExample:\nCZE = { pc_is_forced_government_to = communism }" + }, + "pc_is_state_outside_influence_for_winner": { + "supported_scope": ["STATE"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "Check if state is outside valid influence range for winner TAG in the current peace conference\nExample:\npc_is_state_outside_influence_for_winner = SOV/ROOT/ROOT.FROM" + }, + "pc_total_score": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "Checks country's total peace conference score. Only usable if the country is on the winning side.\nExample:\nCZE = { pc_total_score > 400 }" + }, + "pc_current_score": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "Checks country's total peace conference score. Only usable if the country is on the winning side.\nExample:\nCZE = { pc_current_score > 400 }" + }, + "pc_is_winner": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "Checks if country is a winner in the peace conference.\nExample:\nENG = { pc_is_winner = yes }" + }, + "pc_is_loser": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "Checks if country is a loser in the peace conference.\nExample:\nENG = { pc_is_loser = yes }" + }, + "pc_is_liberated": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "Checks if country has been liberated in the peace conference.\nExample:\nCZE = { pc_is_liberated = yes }" + }, + "pc_is_puppeted": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "Checks if country is a puppet, or has been released as a puppet in the peace conference.\nExample:\nCZE = { pc_is_puppeted = yes }" + }, + "pc_is_on_winning_side": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "Checks if country is on the winning side in the peace conference.\nExample:\nCZE = { pc_is_on_winning_side = yes }" + }, "has_subject": { "supported_scope": ["COUNTRY"], "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], @@ -3558,7 +4133,7 @@ "description": "Check the amount of casualties in thousands a country has suffered in all of it's wars" }, "meta_trigger": { - "supported_scope": ["STATE", "COUNTRY", "CHARACTER", "COMBATANT", "ACE", "STRATEGIC_REGION", "OPERATION"], + "supported_scope": ["STATE", "COUNTRY", "CHARACTER", "COMBATANT", "ACE", "STRATEGIC_REGION", "OPERATION", "INDUSTRIAL_ORG", "PURCHASE_CONTRACT"], "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "meta triggers can be used for building triggers from strings and running them. following example will test if Germany has 42 pp:\nmeta_trigger = {\n text = {\n [COUNTRY] = {\n political_power > [POW]\n }\n }\n COUNTRY = \"GER\"\n POW = 42\n debug = no #set to yes if you want to see what game actually executes\n}\n" }, @@ -3602,6 +4177,41 @@ "supported_target": ["none"], "description": "Checks the number of days since the country last capitulated, even if it is no longer capitulated.\n\tIf it has not ever capitulated, the value is extremely large.\n\tIt is recommended to combine this with has_capitulated = yes when you specifically want to ignore non-active capitulations.\nExamples:\n\tHOL = { has_capitulated = yes days_since_capitulated > 60 } # The Netherlands has been capitulated for more than two months\n\tFRA = { has_capitulated = yes days_since_capitulated < 21 } # France has capitulated sometime within the past three weeks\n\tGER = { OR = { has_capitulated = no days_since_capitulated > 14 } } # Germany is not both actively and recently capitulated\n" }, + "is_power_balance_in_range": { + "supported_scope": ["any"], + "supported_target": ["none"], + "description": "checks if current value power balance is within a certain range\n\nExample:\nis_power_balance_in_range = {\n\tid = power_balance_id\n\trange = power_balance_range_id\n}" + }, + "has_power_balance": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "checks if power balance is active for country\n\nExample:\nhas_power_balance = {\n\tid = power_balance_id\n}" + }, + "has_any_power_balance": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "checks if country has any active power balance\n\nExample:\nhas_any_power_balance = yes/no" + }, + "power_balance_value": { + "supported_scope": ["any"], + "supported_target": ["none"], + "description": "compares current value of a power balance\n\nExample:\npower_balance_value = {\n\tid = power_balance_id\n\tvalue > 0.5 # supported operators are: >, < and =\n}" + }, + "power_balance_daily_change": { + "supported_scope": ["any"], + "supported_target": ["none"], + "description": "compares current total daily change of a power balance\n\nExample:\npower_balance_daily_change = {\n\tid = power_balance_id\n\tvalue > 0.5 # supported operators are: >, < and =\n}" + }, + "is_power_balance_side_active": { + "supported_scope": ["any"], + "supported_target": ["none"], + "description": "checks if specified side is currently active\n\nExample:\nis_power_balance_side_active = {\n\tid = power_balance_id\n\tside = side_id\n}" + }, + "has_power_balance_modifier": { + "supported_scope": ["any"], + "supported_target": ["none"], + "description": "checks if the power balance has a modifier added to it\n\nExample:\nhas_power_balance_modifier = {\n\tid = power_balance_id\n\tmodifier = static_modifier_id\n}" + }, "mine_threat": { "supported_scope": ["COUNTRY"], "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], @@ -3697,6 +4307,176 @@ "supported_target": ["any"], "description": "Compares the core (average of all occupied states) resistance value of occupied_country_tag that is occuppied by the country in current scope.\nExample:\ncore_resistance = { \n occupied_country_tag = ITA \n value > 35 \n}" }, + "pc_is_state_claimed_and_taken_by": { + "supported_scope": ["STATE"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "Check if state is claimed with a take_states action in conference for TAG\nExample:\npc_is_state_claimed_and_taken_by = SOV/ROOT/ROOT.FROM" + }, + "power_balance_weekly_change": { + "supported_scope": ["any"], + "supported_target": ["none"], + "description": "compares current total weekly change of a power balance\n\nExample:\npower_balance_weekly_change = {\n\tid = power_balance_id\n\tvalue > 0.5 # supported operators are: >, < and =\n}" + }, + "career_profile_check_value": { + "supported_scope": ["any"], + "supported_target": ["any"], + "description": "Compares a career profile value to a number" + }, + "career_profile_check_ratio": { + "supported_scope": ["any"], + "supported_target": ["any"], + "description": "Compares the ratio (first/second) of two career profile values to a number" + }, + "career_profile_set_temp_variable": { + "supported_scope": ["any"], + "supported_target": ["none"], + "description": "Sets a temporary variable to a value or another variable\nExample: career_profile_set_temp_variable = {\nvar = num_dogs\n\tvalue = num_dogs_in_career_profile\n}" + }, + "num_of_career_profile_points": { + "supported_scope": ["any"], + "supported_target": ["any"], + "description": "check amount of gained career points" + }, + "career_profile_check_points": { + "supported_scope": ["any"], + "supported_target": ["any"], + "description": "Compares a career points value to a number" + }, + "career_profile_check_medal": { + "supported_scope": ["any"], + "supported_target": ["any"], + "description": "Checks if the required medal is achieved and collected" + }, + "career_profile_check_ribbon": { + "supported_scope": ["any"], + "supported_target": ["any"], + "description": "Checks if the required ribbon is achieved and collected" + }, + "career_profile_has_player_flag": { + "supported_scope": ["any"], + "supported_target": ["any"], + "description": "Checks if the flag is set for the local player" + }, + "get_supply_vehicles_temp": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "sets a temp variable to the number of supply vehicles in stockpile or that are needed. example \nget_supply_vehicles_temp = { \n\tvar = num_vehicles #variable to set \n\ttype = truck #can be truck or train \n\tneed = yes #default no. If yes, gets the number of needed vehicles \n} \n" + }, + "career_profile_set_temp_playthrough_variable": { + "supported_scope": ["any"], + "supported_target": ["none"], + "description": "Sets a temporary variable to a value or another variable\nExample: career_profile_set_temp_playthrough_variable = {\nvar = num_dogs\n\tvalue = num_dogs_in_career_profile\n}" + }, + "career_profile_check_playthrough_value": { + "supported_scope": ["any"], + "supported_target": ["any"], + "description": "Compares a playthrough value to a number" + }, + "career_profile_check_playthrough_ratio": { + "supported_scope": ["any"], + "supported_target": ["any"], + "description": "Compares the ratio (first/second) of two playthrough values to a number" + }, + "has_mio_size": { + "supported_scope": ["INDUSTRIAL_ORG"], + "supported_target": ["none"], + "description": "\"Make comparaison on the size of the military industrial organization in the scope.\nCan use < or > to compare the value with either a fixed value or with a variable.\nex:\nvar:my_mio_var = {\n\thas_mio_size > 5\n\thas_mio_size < 2\n\thas_mio_size > var:my_number_var\n}\"" + }, + "has_mio_number_of_completed_traits": { + "supported_scope": ["INDUSTRIAL_ORG"], + "supported_target": ["none"], + "description": "\"Make comparaison on the number of unlocked traits of the military industrial organization in the scope.\nCan use < or > to compare the value with either a fixed value or from a variable.\nex:\nvar:my_mio_var = {\n\thas_mio_number_of_completed_traits > 5\n\thas_mio_number_of_completed_traits < 2\n\thas_mio_number_of_completed_traits > var:my_number_var\n}\"" + }, + "has_mio_flag": { + "supported_scope": ["INDUSTRIAL_ORG"], + "supported_target": ["any"], + "description": "\"Check if flag has been set within the military industrial organization in scope.\nMay checks on the value or date/days since last modified date.\nExamples:\nhas_mio_flag = my_flag\nhas_mio_flag = {\n\tflag = my_flag (mandatory)\n\tvalue < 12 (optional)\n\tdate > 1936.3.25 (optional, compare with the date where the flag was last modified )\n\tdays > 365 (optional, compare with the number of days since the flag was last modified )\n}\"" + }, + "pc_is_state_claimed_by": { + "supported_scope": ["STATE"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "Check if state is claimed in conference by TAG\nExample:\npc_is_state_claimed_by = SOV/ROOT/ROOT.FROM" + }, + "is_military_industrial_organization": { + "supported_scope": ["INDUSTRIAL_ORG"], + "supported_target": ["none"], + "description": "\"Checks if the Military Industrial Organisation in scope matches the input token\nex:\nvar:my_mio_var = {\n is_military_industrial_organization = my_mio_token\n}\"" + }, + "has_mio_trait": { + "supported_scope": ["INDUSTRIAL_ORG"], + "supported_target": ["none"], + "description": "\"Checks if the Military Industrial Organisation in scope has a trait matching the input token.\nex:\nmio:my_mio = {\n\thas_mio_trait = my_trait_token\n\thas_mio_trait = {\n\t\ttrait = my_trait_token\n\t}\n}\"" + }, + "is_mio_trait_available": { + "supported_scope": ["INDUSTRIAL_ORG"], + "supported_target": ["none"], + "description": "\"Checks if the Military Industrial Organisation in scope has a trait matching the input token, which is also available.\nex:\nmio:my_mio = {\n\tis_mio_trait_available = my_trait_token\n\tis_mio_trait_available = {\n\t\ttrait = my_trait_token\n\t\tcheck_mio_parent_completed = no # Optional, yes by default\n check_mio_mutually_exclusive = no # Optional, yes by default\n\t}\n}\"" + }, + "is_mio_trait_completed": { + "supported_scope": ["INDUSTRIAL_ORG"], + "supported_target": ["none"], + "description": "\"Checks if the Military Industrial Organisation in scope has a trait matching the input token, which is also completed.\nex:\nmio:my_mio = {\n\tis_mio_trait_completed = my_trait_token\n\tis_mio_trait_completed = {\n\t\ttrait = my_trait_token\n\t}\n}\"" + }, + "is_mio_assigned_to_task": { + "supported_scope": ["INDUSTRIAL_ORG"], + "supported_target": ["none"], + "description": "\"Checks if the Military Industrial Organisation in scope is assigned to at least 1 task.\nex:\nmio:my_mio = {\n\tis_mio_assigned_to_task = yes\n\tis_mio_assigned_to_task = no\n}\"" + }, + "has_mio_policy_active": { + "supported_scope": ["INDUSTRIAL_ORG"], + "supported_target": ["none"], + "description": "\"Checks if the Military Industrial Organisation in scope has an allowed matching the input token, which is currently attached to the MIO.\nex:\nmio:my_mio = {\n\thas_mio_policy_active = my_policy_token\n}\"" + }, + "has_mio_research_category": { + "supported_scope": ["INDUSTRIAL_ORG"], + "supported_target": ["none"], + "description": "\"Checks if the Military Industrial Organisation in scope has the input research category.\nex:\nmio:my_mio = {\n\thas_mio_research_category = my_research_category_token\n}\"" + }, + "has_mio_equipment_type": { + "supported_scope": ["INDUSTRIAL_ORG"], + "supported_target": ["none"], + "description": "\"Checks if the Military Industrial Organisation in scope has the input equipment type.\n(possible values can be found in script_enum_equipment_bonus_type and in common/equipment_groups)\nex:\nmio:my_mio = {\n\thas_mio_equipment_type = my_equipment_type_token\n}\"" + }, + "has_mio_policy": { + "supported_scope": ["INDUSTRIAL_ORG"], + "supported_target": ["none"], + "description": "\"Checks if the Military Industrial Organisation in scope has an allowed policy matching the input token.\nex:\nmio:my_mio = {\n\thas_mio_policy = my_policy_token\n}\"" + }, + "is_one_state_island": { + "supported_scope": ["STATE"], + "supported_target": ["any"], + "description": "\"return true if the state is a one-state-island.\nMore precisely, all provinces in the state have no land neighbor.\nOr if they do they are connected by a strait or the neighbor is inside the state.\nex: 145 = {\n\tis_one_state_island = yes\n\tis_one_state_island = no\n}\"" + }, + "any_purchase_contract": { + "supported_scope": ["COUNTRY"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "\"Checks if at least one Purchase contract of the Country in scope matches the triggers. \ntooltip=key can be defined to override title.\nex: GER = {\n any_purchase_contract = {\n\ttooltip = my_loc_key # Optional\n ... Purchase Contract scope triggers ...\n }\n}\"" + }, + "all_purchase_contracts": { + "supported_scope": ["COUNTRY"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "\"Checks if all purchase contracts of the Country in scope matches the triggers.\ntooltip=key can be defined to override title.\nex: GER = {\n all_purchase_contracts = {\n\ttooltip = my_loc_key # Optional\n ... Purchase Contract scope triggers ...\n }\n}\"" + }, + "contract_contains_equipment": { + "supported_scope": ["PURCHASE_CONTRACT"], + "supported_target": ["none"], + "description": "\"Check if contract contains equipment category, equipment archetype or equipment.\nExample:\n contract_contains_equipment = infantry_equipment\"" + }, + "deal_completion": { + "supported_scope": ["PURCHASE_CONTRACT"], + "supported_target": ["none"], + "description": "Check value of purchase contract completion. Example: deal_completition < 0.6" + }, + "longest_war_length": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "Check number of months the country has been at war" + }, + "war_length_with": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "Check number of months the country has been at war with X for Y months.\n war_length_with = { tag = X months > Y }" + }, "network_strength": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], @@ -3708,9 +4488,9 @@ "description": "Checks if a country has a specific token against another country\nhas_operation_token = {\n\ttag = GER\n\ttoken = some_token_id\n}" }, "occupation_law": { - "supported_scope": ["STATE"], + "supported_scope": ["STATE", "COUNTRY"], "supported_target": ["any"], - "description": "checks occupation law of state. Example: occupation_law = brutally_oppressive_occupation" + "description": "\"Checks the occupation law for an occupied country, occupied state, or the default occupation law of an occupying country.\n\n- If THIS is a country and it's the same as the PREV country, then THIS's default law is checked.\n- If THIS is a country and it's different from the PREV country, then PREV's country law for THIS is checked.\n- If THIS is a state, then the occupier's state law is checked.\n\nExample:\nGER = { occupation_law = autonomous_occupation }\nGER = { POL = { occupation_law = foreign_civilian_oversight } }\n123 = { occupation_law = local_police_force_garrison }\"" }, "is_ally_with": { "supported_scope": ["COUNTRY"], @@ -3734,22 +4514,22 @@ }, "any_occupied_country": { "supported_scope": ["COUNTRY"], - "supported_target": ["none"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "check if any any occupied meets the trigger. tooltip=key can be defined to override title" }, "all_occupied_country": { "supported_scope": ["COUNTRY"], - "supported_target": ["none"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "check if all occupied countries meets the trigger. tooltip=key can be defined to override title" }, "any_country_with_original_tag": { "supported_scope": ["any"], - "supported_target": ["none"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "check if any country with current scope's original tag meets the trigger. Example:\nany_country_with_original_tag = { \n original_tag_to_check = ENG # the trigger check all countries that has this original tag \n # ... triggers to check \n}" }, "all_country_with_original_tag": { "supported_scope": ["any"], - "supported_target": ["none"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "check if all country with current scope's original tag meets the trigger. Example:\nall_country_with_original_tag = { \n original_tag_to_check = ENG # the trigger check all countries that has this original tag \n # ... triggers to check \n}" }, "has_done_agency_upgrade": { @@ -3819,12 +4599,12 @@ }, "any_controlled_state": { "supported_scope": ["COUNTRY"], - "supported_target": ["none"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "check if any of the states controlled by the scope country meets the trigger. tooltip=key can be defined to override title" }, "all_controlled_state": { "supported_scope": ["COUNTRY"], - "supported_target": ["none"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "check if all of the states controlled by the scope country meets the trigger. tooltip=key can be defined to override title" }, "num_of_operatives": { @@ -3874,12 +4654,12 @@ }, "any_guaranteed_country": { "supported_scope": ["COUNTRY"], - "supported_target": ["THIS"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "check if any country with current scoped country guarantees. Example:\nany_guaranteed_country = { \n # ... triggers to check \n}" }, "all_guaranteed_country": { "supported_scope": ["COUNTRY"], - "supported_target": ["THIS"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "check if every country with current scoped country guarantees. Example:\nall_country_with_original_tag = { \n # ... triggers to check \n}" }, "num_finished_operations": { @@ -3910,7 +4690,7 @@ "conscription_ratio": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], - "description": "Checks conscription ratio of the country compared to target conscription ratio.\n" + "description": "Checks conscription ratio of the country compared to target conscription ratio.\n" }, "target_conscription_amount": { "supported_scope": ["COUNTRY"], @@ -3970,7 +4750,7 @@ "is_army_chief": { "supported_scope": ["CHARACTER"], "supported_target": ["none"], - "description": "is_army_chief = yes/no - Checks if the current character is an army chief" + "description": "is_army_chief = yes/no - Checks if the character in scope is hired as an army chief" }, "is_advisor": { "supported_scope": ["CHARACTER"], @@ -4000,7 +4780,7 @@ "is_character": { "supported_scope": ["CHARACTER"], "supported_target": ["none"], - "description": "Checks whether the character matches the character ID" + "description": "Checks whether the character in scope matches the character in input" }, "is_navy_leader": { "supported_scope": ["CHARACTER"], @@ -4015,27 +4795,27 @@ "is_political_advisor": { "supported_scope": ["CHARACTER"], "supported_target": ["none"], - "description": "is_political_advisor = yes/no - Checks if the current character is a political advisor" + "description": "is_political_advisor = yes/no - Checks if the character in scope is hired as a political advisor" }, "is_theorist": { "supported_scope": ["CHARACTER"], "supported_target": ["none"], - "description": "is_theorist = yes/no - Checks if the current character is a theorist" + "description": "is_theorist = yes/no - Checks if the character in scope is hired as a theorist" }, "is_navy_chief": { "supported_scope": ["CHARACTER"], "supported_target": ["none"], - "description": "_is_navy_chief_ = yes/no - Checks if the current character is a navy chief" + "description": "_is_navy_chief_ = yes/no - Checks if the character in scope is hired as a navy chief" }, "is_air_chief": { "supported_scope": ["CHARACTER"], "supported_target": ["none"], - "description": "_is_air_chief = yes/no - Checks if the current character is an air chief" + "description": "_is_air_chief = yes/no - Checks if the character in scope is hired as an air chief" }, "is_high_command": { "supported_scope": ["CHARACTER"], "supported_target": ["none"], - "description": "_is_high_command_ = yes/no - Checks if the current character is in high command" + "description": "_is_high_command_ = yes/no - Checks if the character in scope is hired as high command" }, "has_army_ledger": { "supported_scope": ["CHARACTER"], @@ -4055,12 +4835,12 @@ "is_character_slot": { "supported_scope": ["CHARACTER"], "supported_target": ["none"], - "description": "is_character_slot = 'character_slot_name' - Checks if the current character is in the character slot" + "description": "alias of has_advisor_role" }, "can_be_country_leader": { "supported_scope": ["COUNTRY", "CHARACTER"], "supported_target": ["none"], - "description": "Returns true if specified character can be country leader.\n\nExample:\ncan_be_country_leader = GER_erwin_rommelcan_be_country_leader = yes" + "description": "Returns true if specified character has a least one country leader role.\n\nExample:\ncan_be_country_leader = GER_erwin_rommelGER_erwin_rommel = { can_be_country_leader = yes }" }, "has_character": { "supported_scope": ["COUNTRY"], @@ -4082,29 +4862,84 @@ "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "is_leading_volunteer_group = FRA" }, - "has_design_based_on": { + "pc_is_forced_government_by": { "supported_scope": ["COUNTRY"], - "supported_target": ["none"], - "description": "check if country has a buildable non-obsolete design based on an archetype" + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "Checks if country has had their government force-changed by a certain country in the peace conference.\nExample:\nCZE = { pc_is_forced_government_by = GER }" }, - "has_terrain": { + "pc_is_on_same_side_as": { "supported_scope": ["COUNTRY"], - "supported_target": ["none"], - "description": "Checks if a country has any province of the specified terrain type.\nExample: has_terrain = mountain" + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "Checks if country is on same side (winning or losing side) as another country in the peace conference.\nExample:\nPOL = { pc_is_on_same_side_as = ENG }" }, - "has_character_flag": { - "supported_scope": ["CHARACTER"], + "pc_is_puppeted_by": { + "supported_scope": ["COUNTRY"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "Checks if country is a puppet of a certain country, or has been released as a puppet by a certain country in the peace conference.\nExample:\nCZE = { pc_is_puppeted_by = GER }" + }, + "num_divisions_in_states": { + "supported_scope": ["COUNTRY"], "supported_target": ["any"], - "description": "has a character flag been setCheck flag val date set and days since set.\nExample: has_unit_leader_flag = test_flag\nhas_character_flag = { \n\tflag = (mandatory)\n\tvalue < (optional)\n\tdate > (optional)\n\tdays > (optional)\n}" + "description": "Checks number of divisions in states (optionally filtering on majority division types). Using a custom tooltip is highly recommended since the default tooltip leaves out some information for the sake of readability.\nExample:\nnum_divisions_in_states = {\n\tcount > 5 (or <, =)\n\tstates = { 550 559 }\n\ttypes = { infantry cavalry } [optional - will count all except excluded if not specified]\n\texclude = { light_armor } [optional - will count all (included) if not specified]\n}" }, - "any_core_state": { + "num_battalions_in_states": { "supported_scope": ["COUNTRY"], - "supported_target": ["none"], - "description": "Check if any of the country core states for scope meets the trigger. tooltip=key can be defined to override title" + "supported_target": ["any"], + "description": "Checks number of battalions in states (optionally filtering on battalion types). Using a custom tooltip is highly recommended since the default tooltip leaves out some information for the sake of readability.\nExample:\nnum_battalions_in_states = {\n\tcount > 5 (or <, =)\n\tstates = { 550 559 }\n\ttypes = { infantry cavalry } [optional - will count all except excluded if not specified]\n\texclude = { light_armor } [optional - will count all (included) if not specified]\n}" }, - "all_core_state": { + "has_war_with_wargoal_against": { + "supported_scope": ["COUNTRY"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "Checks if country has a war started with a wargoal against the target.\nExample 1:\nhas_war_with_wargoal_against = {\n target = GER\n type = take_state # (optional: if not specified any wargoal will do)\n}\nExample 2:\nhas_war_with_wargoal_against = GER # (any wargoal will do)" + }, + "pc_is_forced_government": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "Checks if country has had their government force-changed in the peace conference.\nExample:\nCZE = { pc_is_forced_government = yes }" + }, + "seller": { + "supported_scope": ["PURCHASE_CONTRACT"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "Check the seller country. Example: seller = GER" + }, + "buyer": { + "supported_scope": ["PURCHASE_CONTRACT"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "Check the buyer country. Example: buyer = GER" + }, + "has_design_based_on": { + "supported_scope": ["COUNTRY"], + "supported_target": ["none"], + "description": "check if country has a buildable non-obsolete design based on an archetype" + }, + "has_terrain": { "supported_scope": ["COUNTRY"], "supported_target": ["none"], + "description": "Checks if a country has any province of the specified terrain type.\nExample: has_terrain = mountain" + }, + "pc_does_state_stack_dismantled": { + "supported_scope": ["STATE"], + "supported_target": ["none"], + "description": "Checks if state got dismantled stacked on it in the peace conference.\nExample:\nFROM.FROM.FROM = { pc_does_state_stack_dismantled = yes }" + }, + "pc_does_state_stack_demilitarized": { + "supported_scope": ["STATE"], + "supported_target": ["none"], + "description": "Checks if state got demilitarized stacked on it in the peace conference.\nExample:\nFROM.FROM.FROM = { pc_does_state_stack_demilitarized = yes }" + }, + "has_character_flag": { + "supported_scope": ["CHARACTER"], + "supported_target": ["any"], + "description": "has a character flag been setCheck flag val date set and days since set.\nExample: has_unit_leader_flag = test_flag\nhas_character_flag = { \n\tflag = (mandatory)\n\tvalue < (optional)\n\tdate > (optional)\n\tdays > (optional)\n}" + }, + "any_core_state": { + "supported_scope": ["COUNTRY"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "Check if any of the country core states for scope meets the trigger. tooltip=key can be defined to override title" + }, + "all_core_state": { + "supported_scope": ["COUNTRY"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], "description": "Check if all of the country core states for the scope meets the trigger. tooltip=key can be defined to override title" }, "has_ideology": { @@ -4126,2874 +4961,4254 @@ "supported_scope": ["CHARACTER"], "supported_target": ["none"], "description": "has_ideology_group = communism - Checks if the current character has a country leader role matching the ideology group" + }, + "building_count_trigger": { + "supported_scope": ["STATE", "COUNTRY"], + "supported_target": ["none"], + "description": "Checks if the current scope has the specified amount of the specified building. \nUsage: < \nSupported buildings: infrastructure, arms_factory, industrial_complex, air_base, supply_node, rail_way, naval_base, bunker, coastal_bunker, dockyard, anti_air_building, synthetic_refinery, fuel_silo, radar_station, rocket_site, nuclear_reactor." + }, + "resource_count_trigger": { + "supported_scope": ["STATE", "COUNTRY"], + "supported_target": ["none"], + "description": "Checks if the current scope has the specified amount of the specified resource.\nUsage: < \nSupported Resources: oil, aluminium, rubber, tungsten, steel, chromium." + }, + "ideology_support_trigger": { + "supported_scope": ["COUNTRY"], + "supported_target": ["THIS", "ROOT", "PREV", "FROM", "OWNER", "CONTROLLER", "OCCUPIED", "CAPITAL"], + "description": "Checks if the current scope has the specified ideology above the specified amount.\nUsage: < \nSupported Ideologies: democratic, communism, fascism, neutrality." } }, "modifiers": [{ "name": "air_detection", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["air"] }, { "name": "air_maximum_speed_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["air"] }, { "name": "air_bombing_targetting", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["air"] }, { "name": "strategic_bomb_visibility", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["air"] }, { "name": "air_range_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["air"] }, { "name": "air_wing_xp_loss_when_killed_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["air"] }, { "name": "air_ace_generation_chance_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["air"] }, { "name": "air_interception_detect_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["air"] }, { "name": "air_superiority_detect_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["air"] }, { "name": "air_strategic_bomber_bombing_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["air"] }, { "name": "air_superiority_efficiency", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["air"] }, { "name": "air_escort_efficiency", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["air"] }, { "name": "air_intercept_efficiency", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["air"] }, { "name": "air_cas_efficiency", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["air"] }, { "name": "air_nav_efficiency", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["air"] }, { "name": "air_mission_efficiency", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["air"] }, { "name": "air_manpower_requirement_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["air"] }, { "name": "air_close_air_support_org_damage_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["air"] }, { "name": "air_advisor_cost_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["air"] }, { "name": "naval_strike", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["naval", "unit_leader", "aggressive"] }, { "name": "naval_strike_attack_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["air"] }, { "name": "naval_strike_targetting_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["air"] }, { "name": "naval_strike_agility_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["air"] }, { "name": "naval_coordination", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["naval", "unit_leader"] }, { "name": "invasion_preparation", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["naval", "unit_leader"] }, { "name": "amphibious_invasion_defence", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["naval", "unit_leader"] }, { "name": "naval_invasion_penalty", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["naval", "unit_leader"] }, { "name": "navy_advisor_cost_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["naval"] }, { "name": "transport_capacity", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["naval"] }, { "name": "naval_invasion_capacity", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["naval"] }, { "name": "carrier_traffic", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["naval", "unit_leader", "aggressive"] }, { "name": "carrier_night_traffic", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["air"] }, { "name": "sortie_efficiency", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["naval", "unit_leader", "aggressive"] }, { "name": "political_power_gain", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country"] }, { "name": "political_power_cost", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country"] }, { "name": "political_power_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country"] }, { "name": "naval_hit_chance", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["naval", "unit_leader", "aggressive"] }, { "name": "naval_speed_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["naval", "unit_leader"] }, { "name": "naval_detection", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["naval", "unit_leader"] }, { "name": "army_speed_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["army"] }, { "name": "army_armor_speed_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "aggressive"] }, { "name": "experience_gain_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["unit_leader", "military_advancements"] }, { "name": "experience_gain_army", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["army", "military_advancements"] }, { "name": "experience_gain_army_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "military_advancements"] }, { "name": "experience_gain_army_unit_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "military_advancements"] }, { "name": "experience_gain_army_unit", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "military_advancements"] }, { "name": "experience_gain_navy", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["naval", "unit_leader", "military_advancements"] }, { "name": "experience_gain_navy_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["naval", "unit_leader", "military_advancements"] }, { "name": "experience_gain_navy_unit_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["naval", "unit_leader", "military_advancements"] }, { "name": "experience_gain_navy_unit", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["naval", "unit_leader", "military_advancements"] }, { "name": "experience_gain_air", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["air"] }, { "name": "experience_gain_air_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["air"] }, { "name": "submarine_attack", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["naval", "unit_leader", "aggressive"] }, { "name": "local_resources", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["state", "war_production"] }, { "name": "local_resources_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["state", "war_production"] }, { "name": "local_manpower", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["state", "war_production"] }, { "name": "local_non_core_manpower", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["state", "war_production"] }, { "name": "non_core_manpower", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["state", "war_production"] }, { "name": "weekly_manpower", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country", "war_production"] }, { "name": "mobilization_speed", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["state", "war_production"] }, { "name": "local_supplies", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["state", "war_production"] }, { "name": "local_factories", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["state", "war_production"] }, { "name": "training_time_army", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "war_production"] }, { "name": "training_time_army_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "war_production"] }, { "name": "army_org", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "defensive", "aggressive"] }, { "name": "army_org_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "defensive", "aggressive"] }, { "name": "navy_org", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["naval", "unit_leader"] }, { "name": "navy_org_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["naval", "unit_leader"] }, { "name": "monthly_population", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["country", "war_production"] }, { "name": "conscription", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country", "war_production"] }, { "name": "conscription_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country", "war_production"] }, { "name": "local_intel_to_enemies", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["state", "defensive"] }, { "name": "local_factory_sabotage", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["state"] }, { "name": "org_loss_when_moving", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "aggressive"] }, { "name": "org_loss_at_low_org_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["army"] }, { "name": "attrition", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "defensive", "aggressive"] }, { "name": "winter_attrition_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "aggressive"] }, { "name": "winter_attrition", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "aggressive"] }, { "name": "heat_attrition", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "aggressive"] }, { "name": "heat_attrition_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["army", "aggressive"] }, { "name": "unit_upkeep_attrition_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["army"] }, { "name": "spotting_chance", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["naval", "unit_leader"] }, { "name": "ships_at_battle_start", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["naval", "unit_leader"] }, { "name": "naval_retreat_chance", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["naval", "unit_leader", "defensive"] }, { "name": "naval_retreat_chance_after_initial_combat", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["naval", "unit_leader", "defensive"] }, { "name": "naval_retreat_speed_after_initial_combat", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["naval", "unit_leader", "defensive"] }, { "name": "naval_enemy_positioning_in_initial_attack", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["naval", "unit_leader", "aggressive"] }, { "name": "naval_retreat_speed", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["naval", "unit_leader", "defensive"] }, { "name": "sub_retreat_speed", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["naval", "unit_leader", "defensive"] }, { "name": "convoy_retreat_speed", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["naval", "unit_leader", "defensive"] }, { "name": "out_of_supply_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "aggressive"] }, { "name": "offence", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["army", "aggressive"] }, { "name": "defence", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["army", "defensive"] }, { "name": "supply_consumption_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "defensive", "aggressive"] }, { "name": "recon_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "defensive"] }, { "name": "air_training_xp_gain_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["air"] }, { "name": "air_accidents", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["air"] }, { "name": "air_accidents_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["air"] }, { "name": "consumer_goods_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, + "categories": ["country", "war_production"] + }, { + "name": "consumer_goods_expected_value", + "type": "number", + "decimal_places": 1, + "IsDynamic": false, "categories": ["country", "war_production"] }, { "name": "civilian_factory_use", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country", "war_production"] }, { "name": "nuclear_production", "type": "bool", + "IsDynamic": false, "categories": ["country"] }, { "name": "nuclear_production_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country"] }, { "name": "foreign_subversive_activites", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country"] }, { "name": "subversive_activites_upkeep", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country"] }, { "name": "air_attack_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["air"] }, { "name": "air_defence_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["air"] }, { "name": "air_agility_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["air"] }, { "name": "air_ace_bonuses_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["air"] }, { "name": "air_untrained_pilots_penalty_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["air"] }, { "name": "air_home_defence_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["air"] }, { "name": "air_power_projection_factor", "type": "number", "decimal_places": 0, - "categories": ["air"] - }, { - "name": "air_strategic_bomber_attack_factor", - "type": "number", - "decimal_places": 2, - "categories": ["air"] - }, { - "name": "air_interception_attack_factor", - "type": "number", - "decimal_places": 2, - "categories": ["air"] - }, { - "name": "air_air_superiority_attack_factor", - "type": "number", - "decimal_places": 2, - "categories": ["air"] - }, { - "name": "air_close_air_support_attack_factor", - "type": "number", - "decimal_places": 2, - "categories": ["air"] - }, { - "name": "air_paradrop_attack_factor", - "type": "number", - "decimal_places": 2, + "IsDynamic": false, "categories": ["air"] }, { "name": "air_strategic_bomber_defence_factor", "type": "number", "decimal_places": 2, - "categories": ["air"] - }, { - "name": "air_interception_defence_factor", - "type": "number", - "decimal_places": 2, - "categories": ["air"] - }, { - "name": "air_air_superiority_defence_factor", - "type": "number", - "decimal_places": 2, - "categories": ["air"] - }, { - "name": "air_close_air_support_defence_factor", - "type": "number", - "decimal_places": 2, - "categories": ["air"] - }, { - "name": "air_paradrop_defence_factor", - "type": "number", - "decimal_places": 2, - "categories": ["air"] - }, { - "name": "air_strategic_bomber_agility_factor", - "type": "number", - "decimal_places": 2, - "categories": ["air"] - }, { - "name": "air_interception_agility_factor", - "type": "number", - "decimal_places": 2, - "categories": ["air"] - }, { - "name": "air_air_superiority_agility_factor", - "type": "number", - "decimal_places": 2, - "categories": ["air"] - }, { - "name": "air_close_air_support_agility_factor", - "type": "number", - "decimal_places": 2, - "categories": ["air"] - }, { - "name": "air_paradrop_agility_factor", - "type": "number", - "decimal_places": 2, + "IsDynamic": false, "categories": ["air"] }, { "name": "army_morale_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "defensive", "aggressive"] }, { "name": "army_morale", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "defensive", "aggressive"] }, { "name": "military_leader_cost_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["unit_leader"] }, { "name": "army_leader_cost_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["unit_leader"] }, { "name": "navy_leader_cost_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["unit_leader"] }, { "name": "army_leader_start_level", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["unit_leader"] }, { "name": "navy_leader_start_level", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["unit_leader"] }, { "name": "naval_morale", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["naval", "unit_leader"] }, { "name": "naval_morale_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["naval", "unit_leader"] }, { "name": "local_org_regain", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["army"] }, { "name": "army_org_regain", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["army"] }, { "name": "army_strength_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["army"] }, { "name": "dig_in_speed", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["army", "defensive"] }, { "name": "dig_in_speed_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "defensive"] }, { "name": "army_bonus_air_superiority_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["air"] }, { "name": "enemy_army_bonus_air_superiority_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["air"] }, { "name": "air_cas_present_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["air"] }, { "name": "navy_anti_air_attack", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["naval", "unit_leader"] }, { "name": "navy_anti_air_attack_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["naval", "unit_leader"] }, { "name": "navy_max_range", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["naval", "unit_leader"] }, { "name": "navy_max_range_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["naval", "unit_leader"] }, { "name": "amphibious_invasion", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["naval", "unit_leader"] }, { "name": "stability_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country"] }, { "name": "stability_weekly", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country"] }, { "name": "stability_weekly_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country"] }, { "name": "party_popularity_stability_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country"] }, { "name": "war_stability_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country"] }, { "name": "surrender_limit", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country"] }, { "name": "forced_surrender_limit", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country"] }, { "name": "max_surrender_limit_offset", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country"] }, { "name": "war_support_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country"] }, { "name": "war_support_weekly", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country"] }, { "name": "war_support_weekly_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, + "categories": ["country"] + }, { + "name": "power_balance_daily", + "type": "number", + "decimal_places": 2, + "IsDynamic": false, + "categories": ["country"] + }, { + "name": "power_balance_weekly", + "type": "number", + "decimal_places": 2, + "IsDynamic": false, "categories": ["country"] }, { "name": "opinion_gain_monthly", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["country"] }, { "name": "opinion_gain_monthly_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country"] }, { "name": "opinion_gain_monthly_same_ideology", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["country"] }, { "name": "opinion_gain_monthly_same_ideology_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country"] }, { "name": "improve_relations_maintain_cost_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country"] }, { "name": "conversion_cost_mil_to_civ_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country", "war_production"] }, { "name": "conversion_cost_civ_to_mil_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country", "war_production"] }, { "name": "global_building_slots", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country", "war_production"] }, { "name": "global_building_slots_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country", "war_production"] }, { "name": "local_building_slots", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["state", "war_production"] }, { "name": "local_building_slots_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["state", "war_production"] }, { "name": "line_change_production_efficiency_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country", "war_production"] }, { "name": "production_speed_buildings_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country", "war_production"] }, { "name": "production_factory_max_efficiency_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country", "war_production"] }, { "name": "production_factory_efficiency_gain_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country", "war_production"] }, { "name": "production_factory_start_efficiency_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country", "war_production"] }, { "name": "production_lack_of_resource_penalty_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country", "war_production"] }, { "name": "army_attack_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "aggressive"] }, { "name": "army_defence_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "defensive"] }, { "name": "army_core_attack_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "aggressive"] }, { "name": "army_core_defence_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "defensive"] }, { "name": "army_infantry_attack_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "aggressive"] }, { "name": "army_infantry_defence_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "defensive"] }, { "name": "army_armor_attack_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "aggressive"] }, { "name": "army_armor_defence_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "defensive"] }, { "name": "army_artillery_attack_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "aggressive"] }, { "name": "army_artillery_defence_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "defensive"] }, { "name": "special_forces_attack_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "aggressive"] }, { "name": "special_forces_defence_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "defensive"] }, { "name": "motorized_attack_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "aggressive"] }, { "name": "rocket_attack_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "aggressive"] }, { "name": "motorized_defence_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "defensive"] }, { "name": "cavalry_attack_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "aggressive"] }, { "name": "cavalry_defence_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "defensive"] }, { "name": "navy_submarine_attack_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["naval", "unit_leader", "aggressive"] }, { "name": "navy_submarine_defence_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["naval", "unit_leader", "defensive"] }, { "name": "navy_capital_ship_attack_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["naval", "unit_leader", "aggressive"] }, { "name": "navy_capital_ship_defence_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["naval", "unit_leader", "defensive"] }, { "name": "navy_screen_attack_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["naval", "unit_leader", "aggressive"] }, { "name": "navy_screen_defence_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["naval", "unit_leader", "defensive"] }, { "name": "navy_submarine_detection_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["naval", "unit_leader", "defensive"] }, { "name": "navy_carrier_air_attack_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["naval", "unit_leader", "aggressive"] }, { "name": "navy_carrier_air_targetting_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["naval", "unit_leader", "aggressive"] }, { "name": "navy_carrier_air_agility_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["naval", "unit_leader", "aggressive"] }, { "name": "convoy_raiding_efficiency_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["naval", "unit_leader", "aggressive"] }, { "name": "research_speed_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country", "military_advancements"] }, { "name": "research_sharing_per_country_bonus", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country"] }, { "name": "research_sharing_per_country_bonus_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country"] }, { "name": "encryption", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country", "defensive"] }, { "name": "encryption_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country", "defensive"] }, { "name": "decryption", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country", "aggressive"] }, { "name": "decryption_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country", "aggressive"] }, { "name": "industrial_capacity_factory", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country", "war_production"] }, { "name": "industrial_capacity_dockyard", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country", "war_production"] }, { "name": "tech_air_damage_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country", "war_production"] }, { "name": "industry_air_damage_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country", "war_production"] }, { "name": "industry_repair_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country", "war_production"] }, { "name": "industry_free_repair_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country", "war_production"] }, { "name": "equipment_conversion_speed", "type": "number", - "decimal_places": 2, + "decimal_places": 0, + "IsDynamic": false, "categories": ["country", "war_production"] }, { "name": "production_oil_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country", "war_production"] }, { "name": "max_training", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["army", "aggressive"] }, { "name": "training_time_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["army", "aggressive"] }, { "name": "min_export", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country", "war_production"] }, { "name": "trade_opinion_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country", "war_production"] }, { "name": "ground_attack", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["air", "aggressive"] }, { "name": "ground_attack_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["air", "aggressive"] }, { "name": "puppet_cost_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["peace", "defensive"] }, { "name": "annex_cost_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["peace", "aggressive"] }, { "name": "experience_loss_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["country"] }, { "name": "equipment_capture", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["country"] + }, { + "name": "equipment_capture_for_controller", + "type": "number", + "decimal_places": 1, + "IsDynamic": false, + "categories": ["state"] }, { "name": "generate_wargoal_tension", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["country"] }, { "name": "generate_wargoal_tension_against", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["country"] }, { "name": "join_faction_tension", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["country"] }, { "name": "lend_lease_tension", "type": "number", "decimal_places": 1, + "IsDynamic": false, + "categories": ["country"] + }, { + "name": "lend_lease_tension_with_overlord", + "type": "number", + "decimal_places": 1, + "IsDynamic": false, "categories": ["country"] }, { "name": "request_lease_tension", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["country"] }, { "name": "send_volunteers_tension", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["country", "defensive"] }, { "name": "guarantee_tension", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["country", "defensive"] }, { "name": "guarantee_cost", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country", "politics"] }, { "name": "send_volunteer_size", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country"] }, { "name": "send_volunteer_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["country"] }, { "name": "send_volunteer_divisions_required", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["country"] }, { "name": "air_volunteer_cap", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country"] }, { "name": "justify_war_goal_time", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["country", "aggressive"] }, { "name": "justify_war_goal_when_in_major_war_time", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["country", "aggressive"] }, { "name": "enemy_justify_war_goal_time", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["country", "aggressive"] }, { "name": "enemy_declare_war_tension", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["country", "aggressive"] }, { "name": "faction_trade_opinion_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country", "war_production"] }, { "name": "land_reinforce_rate", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["country", "war_production"] }, { "name": "drift_defence_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["politics"] }, { "name": "master_ideology_drift", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["politics"] }, { "name": "planning_speed", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "aggressive"] }, { "name": "max_planning", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "aggressive"] }, { "name": "max_planning_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "aggressive"] }, { "name": "max_dig_in", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "defensive"] }, { "name": "max_dig_in_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "defensive"] }, { "name": "land_night_attack", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "aggressive"] }, { "name": "air_strategic_bomber_night_penalty", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["air"] }, { "name": "air_night_penalty", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["air"] }, { "name": "air_weather_penalty", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["air"] }, { "name": "naval_night_attack", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["naval", "aggressive"] }, { "name": "night_spotting_chance", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["naval"] }, { "name": "pocket_penalty", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "aggressive"] }, { "name": "no_supply_grace", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "aggressive"] }, { "name": "port_strike", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["naval", "unit_leader", "aggressive"] }, { "name": "carrier_capacity_penalty_reduction", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["naval", "unit_leader", "aggressive"] }, { "name": "air_carrier_night_penalty_reduction_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["air"] }, { "name": "convoy_escort_efficiency", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["naval", "unit_leader", "defensive"] }, { "name": "combat_width_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "aggressive"] - }, { - "name": "occupation_cost", - "type": "number", - "decimal_places": 2, - "categories": ["country"] }, { "name": "minimum_training_level", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country", "war_production"] - }, { - "name": "modifier_enemy_port_superiority_limit", - "type": "number", - "decimal_places": 0, - "categories": ["air", "country"] }, { "name": "autonomy_manpower_share", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["autonomy"] }, { "name": "extra_trade_to_overlord_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["autonomy"] }, { "name": "overlord_trade_cost_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["autonomy"] }, { "name": "cic_to_overlord_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["autonomy"] }, { "name": "mic_to_overlord_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["autonomy"] }, { "name": "autonomy_gain_trade", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["autonomy"] }, { "name": "autonomy_gain_trade_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["autonomy"] }, { "name": "autonomy_gain_ll_to_overlord", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["autonomy"] }, { "name": "autonomy_gain_ll_to_overlord_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["autonomy"] }, { "name": "autonomy_gain_ll_to_subject", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["autonomy"] }, { "name": "autonomy_gain_ll_to_subject_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["autonomy"] }, { "name": "autonomy_gain_warscore", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["autonomy"] }, { "name": "autonomy_gain_warscore_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["autonomy"] }, { "name": "autonomy_gain", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["autonomy"] }, { "name": "autonomy_gain_global_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["autonomy"] }, { "name": "license_subject_master_purchase_cost", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["autonomy"] }, { "name": "subjects_autonomy_gain", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["autonomy"] }, { "name": "can_master_build_for_us", "type": "bool", + "IsDynamic": false, "categories": ["autonomy"] }, { "name": "master_build_autonomy_factor", "type": "bool", + "IsDynamic": false, "categories": ["autonomy"] }, { "name": "industrial_factory_donations", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["government_in_exile"] }, { "name": "military_factory_donations", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["government_in_exile"] }, { "name": "dockyard_donations", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["government_in_exile"] }, { "name": "civil_war_involvement_tension", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["country"] }, { "name": "license_purchase_cost", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country"] }, { "name": "license_air_purchase_cost", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country"] }, { "name": "license_infantry_purchase_cost", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country"] }, { "name": "license_armor_purchase_cost", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country"] }, { "name": "license_naval_purchase_cost", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country"] }, { "name": "license_tech_difference_speed", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country"] }, { "name": "license_production_speed", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country"] }, { "name": "license_infantry_eq_tech_difference_speed_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country"] }, { "name": "license_artillery_eq_tech_difference_speed_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country"] }, { "name": "license_light_tank_eq_tech_difference_speed_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country"] }, { "name": "license_anti_tank_eq_tech_difference_speed_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country"] }, { "name": "license_infantry_eq_production_speed_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country"] }, { "name": "license_artillery_eq_production_speed_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country"] }, { "name": "license_light_tank_eq_production_speed_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country"] }, { "name": "license_anti_tank_eq_production_speed_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country"] }, { "name": "license_infantry_eq_cost_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country"] }, { "name": "license_artillery_eq_cost_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country"] }, { "name": "license_light_tank_eq_cost_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country"] }, { "name": "license_anti_tank_eq_cost_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country"] }, { "name": "ai_call_ally_desire_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["ai"] }, { "name": "ai_join_ally_desire_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["ai"] }, { "name": "ai_get_ally_desire_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["ai"] }, { "name": "ai_focus_defense_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["ai"] }, { "name": "ai_focus_aggressive_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["ai"] }, { "name": "ai_focus_war_production_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["ai"] }, { "name": "ai_focus_military_advancements_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["ai"] }, { "name": "ai_focus_peaceful_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["ai"] }, { "name": "ai_focus_naval_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["ai"] }, { "name": "ai_focus_naval_air_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["ai"] }, { "name": "ai_focus_aviation_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["ai"] }, { "name": "ai_badass_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["ai"] }, { "name": "ai_focus_military_equipment_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["ai"] }, { "name": "ai_desired_divisions_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["ai"] }, { "name": "ai_license_acceptance", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["ai"] }, { "name": "command_power_gain", "type": "number", "decimal_places": 2, - "categories": ["country"] + "IsDynamic": false, + "categories": ["country", "army"] }, { "name": "max_command_power", "type": "number", "decimal_places": 0, - "categories": ["country"] + "IsDynamic": false, + "categories": ["country", "army"] }, { "name": "command_power_gain_mult", "type": "number", "decimal_places": 0, - "categories": ["country"] + "IsDynamic": false, + "categories": ["country", "army"] }, { "name": "max_command_power_mult", "type": "number", "decimal_places": 0, - "categories": ["country"] + "IsDynamic": false, + "categories": ["country", "army"] }, { "name": "command_abilities_cost_factor", "type": "number", "decimal_places": 2, - "categories": ["country"] + "IsDynamic": false, + "categories": ["country", "army"] }, { "name": "acclimatization_cold_climate_gain_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army"] }, { "name": "acclimatization_hot_climate_gain_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army"] }, { "name": "army_advisor_cost_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["army"] }, { "name": "army_leader_start_attack_level", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["unit_leader"] }, { "name": "army_leader_start_defense_level", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["unit_leader"] }, { "name": "army_leader_start_logistics_level", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["unit_leader"] }, { "name": "army_leader_start_planning_level", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["unit_leader"] }, { "name": "navy_leader_start_attack_level", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["unit_leader"] }, { "name": "navy_leader_start_defense_level", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["unit_leader"] }, { "name": "navy_leader_start_maneuvering_level", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["unit_leader"] }, { "name": "navy_leader_start_coordination_level", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["unit_leader"] }, { "name": "attack_bonus_against", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army"] }, { "name": "attack_bonus_against_cores", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army"] }, { "name": "defense_bonus_against", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army"] }, { "name": "mechanized_attack_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "aggressive"] }, { "name": "mechanized_defence_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "defensive"] }, { "name": "max_commander_army_size", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["army"] }, { "name": "max_army_group_size", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["unit_leader"] }, { "name": "terrain_penalty_reduction", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "defensive"] }, { "name": "extra_paratrooper_supply_grace", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army"] }, { "name": "extra_marine_supply_grace", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army"] }, { "name": "cas_damage_reduction", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army"] }, { "name": "air_superiority_bonus_in_combat", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army"] }, { "name": "shore_bombardment_bonus", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army"] }, { "name": "recon_factor_while_entrenched", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "defensive"] }, { "name": "skill_bonus_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["unit_leader"] }, { "name": "cannot_use_abilities", "type": "bool", + "IsDynamic": false, "categories": ["unit_leader"] }, { "name": "promote_cost_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["unit_leader"] }, { "name": "sickness_chance", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["unit_leader"] }, { "name": "river_crossing_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["unit_leader"] }, { "name": "dont_lose_dig_in_on_attack", "type": "bool", + "IsDynamic": false, "categories": ["army", "defensive"] }, { "name": "special_forces_cap", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army"] }, { "name": "special_forces_min", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["army"] }, { - "name": "paratrooper_count_per_plane", + "name": "paratrooper_weight_factor", "type": "number", "decimal_places": 1, - "categories": ["unit_leader"] + "IsDynamic": false, + "categories": ["unit_leader", "country"] }, { "name": "paradrop_organization_factor", "type": "number", "decimal_places": 1, - "categories": ["unit_leader"] + "IsDynamic": false, + "categories": ["unit_leader", "country"] }, { "name": "paratrooper_aa_defense", "type": "number", "decimal_places": 1, - "categories": ["unit_leader"] + "IsDynamic": false, + "categories": ["unit_leader", "country"] }, { "name": "fortification_damage", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["unit_leader"] }, { "name": "fortification_collateral_chance", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["unit_leader"] }, { "name": "cic_to_target_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country"] }, { "name": "mic_to_target_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country"] }, { "name": "extra_trade_to_target_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country"] }, { "name": "trade_cost_for_target_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country"] }, { "name": "offensive_war_stability_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country"] }, { "name": "defensive_war_stability_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country"] }, { "name": "special_forces_training_time_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "war_production"] }, { "name": "special_forces_no_supply_grace", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "aggressive"] }, { "name": "special_forces_out_of_supply_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["army", "aggressive"] }, { "name": "wounded_chance_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["unit_leader"] }, { "name": "reassignment_duration_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["unit_leader"] }, { "name": "naval_invasion_prep_speed", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["unit_leader"] }, { "name": "equipment_capture_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["country"] + }, { + "name": "equipment_capture_factor_for_controller", + "type": "number", + "decimal_places": 1, + "IsDynamic": false, + "categories": ["state"] }, { "name": "static_anti_air_damage_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["defensive"] }, { "name": "static_anti_air_hit_chance_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["defensive"] }, { "name": "critical_receive_chance", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["naval", "unit_leader", "country"] }, { "name": "fuel_gain_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country"] }, { "name": "fuel_gain_factor_from_states", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country"] }, { "name": "fuel_gain_from_states", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country"] }, { "name": "fuel_gain", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country"] }, { "name": "max_fuel_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country"] }, { "name": "max_fuel", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country"] }, { "name": "max_fuel_building", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country"] }, { "name": "base_fuel_gain", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country"] }, { "name": "base_fuel_gain_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country"] }, { "name": "fuel_cost", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country"] }, { "name": "army_fuel_capacity_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["army"] }, { "name": "army_fuel_consumption_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["army"] }, { "name": "navy_fuel_consumption_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["naval"] }, { "name": "air_fuel_consumption_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["air"] }, { "name": "navy_visibility", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["naval"] }, { "name": "navy_casualty_on_hit", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["naval"] }, { "name": "navy_casualty_on_sink", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["naval"] }, { "name": "naval_attrition", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["naval"] }, { "name": "mines_planting_by_fleets_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["naval"] }, { "name": "mines_sweeping_by_fleets_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["naval"] }, { "name": "mines_planting_by_air_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["air"] }, { "name": "mines_sweeping_by_air_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["air"] }, { "name": "naval_mines_effect_reduction", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["naval"] }, { "name": "naval_mines_damage_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["naval"] }, { "name": "naval_accidents_chance", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["naval"] }, { "name": "naval_mine_hit_chance", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["naval"] }, { "name": "exiled_divisions_attack_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["unit_leader"] }, { "name": "own_exiled_divisions_attack_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["unit_leader"] }, { "name": "exiled_divisions_defense_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["unit_leader"] }, { "name": "own_exiled_divisions_defense_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["unit_leader"] }, { "name": "legitimacy_daily", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["government_in_exile"] }, { "name": "targeted_legitimacy_daily", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["government_in_exile"] }, { "name": "screening_efficiency", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["naval", "unit_leader"] }, { "name": "positioning", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["naval", "unit_leader"] }, { "name": "screening_without_screens", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["naval", "country"] }, { "name": "exile_manpower_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["government_in_exile"] }, { "name": "air_mission_xp_gain_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["air"] }, { "name": "fighter_sortie_efficiency", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["naval", "unit_leader", "aggressive"] }, { "name": "naval_damage_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["naval", "unit_leader", "aggressive"] }, { "name": "naval_defense_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["naval", "unit_leader"] }, { "name": "naval_enemy_retreat_chance", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["naval", "unit_leader"] }, { "name": "naval_critical_score_chance_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["naval", "unit_leader", "aggressive"] }, { "name": "naval_critical_effect_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["naval", "unit_leader"] }, { "name": "naval_torpedo_reveal_chance_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["naval", "unit_leader"] }, { "name": "naval_torpedo_screen_penetration_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["naval", "unit_leader", "aggressive"] }, { "name": "naval_torpedo_cooldown_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["naval", "unit_leader", "aggressive"] }, { "name": "naval_torpedo_hit_chance_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, + "categories": ["naval", "unit_leader", "aggressive"] + }, { + "name": "naval_light_gun_hit_chance_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": false, + "categories": ["naval", "unit_leader", "aggressive"] + }, { + "name": "naval_heavy_gun_hit_chance_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": false, + "categories": ["naval", "unit_leader", "aggressive"] + }, { + "name": "naval_torpedo_enemy_critical_chance_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": false, + "categories": ["naval", "unit_leader", "defensive"] + }, { + "name": "naval_torpedo_damage_reduction_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": false, + "categories": ["naval", "unit_leader", "defensive"] + }, { + "name": "carrier_sortie_hours_delay", + "type": "number", + "decimal_places": 0, + "IsDynamic": false, "categories": ["naval", "unit_leader", "aggressive"] }, { "name": "naval_enemy_fleet_size_ratio_penalty_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["naval", "unit_leader", "aggressive"] }, { "name": "naval_has_potf_in_combat_attack", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["naval", "unit_leader", "aggressive"] }, { "name": "naval_has_potf_in_combat_defense", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["naval", "unit_leader", "aggressive"] }, { "name": "strike_force_movement_org_loss", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["naval", "unit_leader", "aggressive"] }, { "name": "refit_speed", "type": "number", "decimal_places": 0, - "categories": ["country"] - }, { - "name": "navy_refit_speed", - "type": "number", - "decimal_places": 0, + "IsDynamic": false, "categories": ["country"] }, { "name": "refit_ic_cost", "type": "number", "decimal_places": 0, - "categories": ["country"] - }, { - "name": "navy_refit_ic_cost", - "type": "number", - "decimal_places": 0, + "IsDynamic": false, "categories": ["country"] }, { "name": "equipment_upgrade_xp_cost", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country"] }, { "name": "naval_equipment_upgrade_xp_cost", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country"] }, { "name": "land_equipment_upgrade_xp_cost", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country"] }, { "name": "air_equipment_upgrade_xp_cost", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country"] }, { "name": "repair_speed_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["naval", "country"] }, { "name": "armor_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["army", "defensive"] }, { "name": "breakthrough_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["army", "aggressive"] }, { "name": "resistance_target", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country", "state"] }, { "name": "resistance_target_on_our_occupied_states", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country", "state"] }, { "name": "resistance_decay", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country", "state"] }, { "name": "resistance_growth", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country", "state"] }, { "name": "resistance_decay_on_our_occupied_states", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country", "state"] }, { "name": "resistance_growth_on_our_occupied_states", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country", "state"] }, { "name": "starting_compliance", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country", "state"] }, { "name": "compliance_growth", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country", "state"] }, { "name": "compliance_growth_on_our_occupied_states", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country", "state"] }, { "name": "army_speed_factor_for_controller", "type": "number", "decimal_places": 2, + "IsDynamic": false, + "categories": ["state", "army"] + }, { + "name": "enemy_army_speed_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": false, "categories": ["state", "army"] }, { "name": "army_attack_speed_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["army"] }, { "name": "disable_strategic_redeployment", "type": "bool", + "IsDynamic": false, "categories": ["state", "army"] }, { "name": "disable_strategic_redeployment_for_controller", "type": "bool", + "IsDynamic": false, "categories": ["state", "army"] }, { "name": "local_supplies_for_controller", "type": "number", "decimal_places": 0, + "IsDynamic": false, + "categories": ["state", "war_production"] + }, { + "name": "enemy_local_supplies", + "type": "number", + "decimal_places": 0, + "IsDynamic": false, "categories": ["state", "war_production"] }, { "name": "attrition_for_controller", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "defensive", "aggressive"] + }, { + "name": "enemy_attrition", + "type": "number", + "decimal_places": 1, + "IsDynamic": false, + "categories": ["state", "army", "defensive", "aggressive"] }, { "name": "resistance_garrison_penetration_chance", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country", "state"] }, { "name": "resistance_damage_to_garrison", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country", "state"] }, { "name": "resistance_damage_to_garrison_on_our_occupied_states", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country", "state"] }, { "name": "required_garrison_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country", "state"] }, { "name": "compliance_gain", "type": "number", "decimal_places": 3, + "IsDynamic": false, "categories": ["country", "state"] }, { "name": "no_compliance_gain", "type": "bool", + "IsDynamic": false, "categories": ["country", "state"] }, { "name": "enemy_spy_negative_status_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country", "state"] }, { "name": "recruitable_population", "type": "number", "decimal_places": 3, + "IsDynamic": false, "categories": ["state"] }, { "name": "recruitable_population_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["state"] }, { "name": "resistance_activity", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["country", "state"] }, { "name": "legitimacy_gain_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["government_in_exile"] }, { "name": "civilian_intel_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["intelligence_agency"] }, { "name": "army_intel_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["intelligence_agency"] }, { "name": "navy_intel_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["intelligence_agency"] }, { "name": "airforce_intel_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["intelligence_agency"] }, { "name": "intelligence_agency_defense", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["intelligence_agency"] }, { "name": "root_out_resistance_effectiveness_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["intelligence_agency"] }, { "name": "defense_impact_on_blueprint_stealing", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["intelligence_agency"] }, { "name": "intel_from_operatives_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["intelligence_agency"] }, { "name": "target_sabotage_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["intelligence_agency"] }, { "name": "boost_resistance_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["intelligence_agency"] }, { "name": "operative_death_on_capture_chance", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["intelligence_agency"] }, { "name": "enemy_operative_recruitment_chance", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["intelligence_agency"] }, { "name": "occupied_operative_recruitment_chance", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["intelligence_agency"] }, { "name": "new_operative_slot_bonus", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["intelligence_agency"] }, { "name": "operative_slot", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["intelligence_agency"] }, { "name": "commando_trait_chance_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["intelligence_agency"] }, { "name": "control_trade_mission_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["intelligence_agency"] }, { "name": "diplomatic_pressure_mission_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["intelligence_agency"] }, { "name": "propaganda_mission_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["intelligence_agency"] }, { "name": "boost_ideology_mission_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["intelligence_agency"] }, { "name": "decryption_power", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["intelligence_agency"] }, { "name": "crypto_strength", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["intelligence_agency"] }, { "name": "crypto_department_enabled", "type": "bool", + "IsDynamic": false, "categories": ["intelligence_agency"] }, { "name": "intel_network_gain", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["unit_leader", "country", "state", "intelligence_agency"] }, { "name": "intel_network_gain_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["unit_leader", "country", "state", "intelligence_agency"] }, { "name": "enemy_intel_network_gain_factor_over_occupied_tag", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["state"] }, { "name": "own_operative_detection_chance", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["unit_leader", "country"] }, { "name": "enemy_operative_detection_chance", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["unit_leader", "country"] }, { "name": "enemy_operative_detection_chance_over_occupied_tag", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["unit_leader", "country"] }, { "name": "own_operative_detection_chance_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["unit_leader", "country"] }, { "name": "enemy_operative_detection_chance_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["unit_leader", "country"] }, { "name": "enemy_operative_detection_chance_factor_over_occupied_tag", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["unit_leader", "country"] }, { "name": "own_operative_capture_chance_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["unit_leader", "country"] }, { "name": "enemy_operative_capture_chance_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["unit_leader", "country"] }, { "name": "own_operative_forced_into_hiding_time_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["unit_leader", "country"] }, { "name": "enemy_operative_forced_into_hiding_time_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["unit_leader", "country"] }, { "name": "own_operative_harmed_time_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["unit_leader", "country"] }, { "name": "enemy_operative_harmed_time_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["unit_leader", "country"] }, { "name": "own_operative_intel_extraction_rate", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["unit_leader", "country"] }, { "name": "enemy_operative_intel_extraction_rate", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["unit_leader", "country"] }, { "name": "state_resources_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["state", "war_production"] }, { "name": "state_production_speed_buildings_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["state", "war_production"] }, { "name": "civilian_intel_to_others", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["country"] }, { "name": "army_intel_to_others", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["country"] }, { "name": "navy_intel_to_others", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["country"] }, { "name": "airforce_intel_to_others", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["country"] }, { "name": "breakthrough_bonus_against", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army"] }, { "name": "disabled_ideas", "type": "bool", + "IsDynamic": false, "categories": ["country"] }, { "name": "agency_upgrade_time", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["country"] }, { "name": "civilian_intel_decryption_bonus", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["intelligence_agency"] }, { "name": "army_intel_decryption_bonus", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["intelligence_agency"] }, { "name": "navy_intel_decryption_bonus", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["intelligence_agency"] }, { "name": "airforce_intel_decryption_bonus", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["intelligence_agency"] }, { "name": "decryption_power_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["intelligence_agency"] }, { "name": "female_random_operative_chance", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country", "intelligence_agency"] }, { "name": "female_random_army_leader_chance", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country", "army"] }, { "name": "female_random_admiral_chance", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["naval", "country"] }, { "name": "female_random_country_leader_chance", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country"] }, { "name": "supply_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country", "state"] }, { "name": "supply_node_range", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country"] }, { "name": "truck_attrition", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country", "state"] }, { "name": "truck_attrition_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country", "state"] + }, { + "name": "enemy_truck_attrition_factor", + "type": "number", + "decimal_places": 0, + "IsDynamic": false, + "categories": ["state"] }, { "name": "floating_harbor_supply", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country"] }, { "name": "floating_harbor_range", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country"] }, { "name": "floating_harbor_duration", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country"] }, { "name": "army_attack_against_major_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "aggressive"] }, { "name": "army_breakthrough_against_major_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "defensive"] }, { "name": "army_defence_against_major_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "defensive"] }, { "name": "army_attack_against_minor_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "aggressive"] }, { "name": "army_defence_against_minor_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "defensive"] }, { "name": "army_breakthrough_against_minor_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "defensive"] }, { "name": "air_doctrine_cost_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country"] }, { "name": "land_doctrine_cost_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country"] }, { "name": "naval_doctrine_cost_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country"] }, { "name": "navy_weather_penalty", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["air"] }, { "name": "assign_army_leader_cp_cost", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country", "army"] }, { "name": "assign_navy_leader_cp_cost", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["naval", "country"] }, { "name": "intel_from_combat_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["country"] }, { "name": "exiled_government_weekly_manpower", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country", "war_production"] }, { "name": "choose_preferred_tactics_cost", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country"] }, { "name": "railway_gun_bombardment_factor", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["country"] }, { "name": "unit_leader_as_advisor_cp_cost_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["unit_leader", "country"] }, { "name": "initiative_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["unit_leader", "country"] }, { "name": "naval_invasion_planning_bonus_speed", "type": "number", "decimal_places": 0, + "IsDynamic": false, "categories": ["army", "aggressive"] }, { "name": "terrain_trait_xp_gain_factor", "type": "number", "decimal_places": 2, + "IsDynamic": false, "categories": ["naval", "country", "army"] }, { "name": "supply_combat_penalties_on_core_factor", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "aggressive"] }, { "name": "coordination_bonus", "type": "number", "decimal_places": 1, + "IsDynamic": false, "categories": ["army", "aggressive"] - }], - "dynamic_variables": { - "global": { - "year": { - "description": "current year" - }, - "province_controllers": { - "description": "get array of all province controllers. Example: province_controllers^4135" - }, - "majors": { - "description": "get array of all majors (including non existing" - }, - "num_days": { - "description": "current total days" - }, - "date": { - "description": "get date value that can be comparable to other date values and localized using GetDateString/GetDateStringShortMonth/GetDateStringNoHour/GetDateStringNoHourLong scripted locs" - }, - "countries": { - "description": "get array of all countries (including non existing" - }, - "states": { - "description": "get array of all states" - } - }, - "country": { - "political_power": { - "description": "total political power of country" - }, - "resource_consumed": { - "description": "number of resources consumed by country, resource type is defined in target resource_consumed@steel" - }, - "manpower": { - "description": "DEPRECATED, MAY OVERFLOW. total manpower of country" - }, - "air_intel": { - "description": "air intel against a target country. example GER.air_intel@ENG" - }, - "overlord": { - "description": "master of this subject" - }, - "command_power": { - "description": "total command power of country" - }, - "enemies_of_allies": { - "description": "array of enemies of allies" - }, - "owned_controlled_states": { - "description": "array owned and core states" - }, - "navy_intel": { - "description": "navy intel against a target country. example GER.navy_intel@ENG" - }, - "manpower_k": { - "description": "total manpower of country in thousands" - }, - "faction_members": { - "description": "array of faction members" - }, - "fuel_k": { - "description": "total fuel of country in thousands" - }, + }, { + "name": "embargo_cost_factor", + "type": "number", + "decimal_places": 1, + "IsDynamic": false, + "categories": ["country", "politics"] + }, { + "name": "embargo_threshold_factor", + "type": "number", + "decimal_places": 1, + "IsDynamic": false, + "categories": ["country", "politics"] + }, { + "name": "weekly_casualties_war_support", + "type": "number", + "decimal_places": 2, + "IsDynamic": false, + "categories": ["country"] + }, { + "name": "weekly_convoys_war_support", + "type": "number", + "decimal_places": 2, + "IsDynamic": false, + "categories": ["country"] + }, { + "name": "weekly_bombing_war_support", + "type": "number", + "decimal_places": 2, + "IsDynamic": false, + "categories": ["country"] + }, { + "name": "ace_effectiveness_factor", + "type": "number", + "decimal_places": 1, + "IsDynamic": false, + "categories": ["air"] + }, { + "name": "local_supply_impact_factor", + "type": "number", + "decimal_places": 0, + "IsDynamic": false, + "categories": ["state"] + }, { + "name": "local_non_core_supply_impact_factor", + "type": "number", + "decimal_places": 0, + "IsDynamic": false, + "categories": ["state"] + }, { + "name": "grant_medal_cost_factor", + "type": "number", + "decimal_places": 1, + "IsDynamic": false, + "categories": ["country"] + }, { + "name": "field_officer_promotion_penalty", + "type": "number", + "decimal_places": 0, + "IsDynamic": false, + "categories": ["country"] + }, { + "name": "female_divisional_commander_chance", + "type": "number", + "decimal_places": 0, + "IsDynamic": false, + "categories": ["country"] + }, { + "name": "paratroopers_special_forces_contribution_factor", + "type": "number", + "decimal_places": 0, + "IsDynamic": false, + "categories": ["army"] + }, { + "name": "marines_special_forces_contribution_factor", + "type": "number", + "decimal_places": 0, + "IsDynamic": false, + "categories": ["army"] + }, { + "name": "mountaineers_special_forces_contribution_factor", + "type": "number", + "decimal_places": 0, + "IsDynamic": false, + "categories": ["army"] + }, { + "name": "additional_brigade_column_size", + "type": "number", + "decimal_places": 0, + "IsDynamic": false, + "categories": ["country"] + }, { + "name": "peace_score_ratio_transferred_to_players", + "type": "number", + "decimal_places": 2, + "IsDynamic": false, + "categories": ["peace"] + }, { + "name": "peace_score_ratio_transferred_to_overlord", + "type": "number", + "decimal_places": 2, + "IsDynamic": false, + "categories": ["peace"] + }, { + "name": "military_industrial_organization_research_bonus", + "type": "number", + "decimal_places": 0, + "IsDynamic": false, + "categories": ["war_production"] + }, { + "name": "military_industrial_organization_design_team_assign_cost", + "type": "number", + "decimal_places": 0, + "IsDynamic": false, + "categories": ["war_production"] + }, { + "name": "military_industrial_organization_design_team_change_cost", + "type": "number", + "decimal_places": 0, + "IsDynamic": false, + "categories": ["war_production"] + }, { + "name": "military_industrial_organization_industrial_manufacturer_assign_cost", + "type": "number", + "decimal_places": 0, + "IsDynamic": false, + "categories": ["war_production"] + }, { + "name": "military_industrial_organization_task_capacity", + "type": "number", + "decimal_places": 0, + "IsDynamic": false, + "categories": ["war_production"] + }, { + "name": "military_industrial_organization_size_up_requirement", + "type": "number", + "decimal_places": 0, + "IsDynamic": false, + "categories": ["war_production"] + }, { + "name": "military_industrial_organization_funds_gain", + "type": "number", + "decimal_places": 0, + "IsDynamic": false, + "categories": ["war_production"] + }, { + "name": "military_industrial_organization_policy_cost", + "type": "number", + "decimal_places": 0, + "IsDynamic": false, + "categories": ["war_production"] + }, { + "name": "military_industrial_organization_policy_cooldown", + "type": "number", + "decimal_places": 0, + "IsDynamic": false, + "categories": ["war_production"] + }, { + "name": "cic_construction_boost", + "type": "number", + "decimal_places": 1, + "IsDynamic": false, + "categories": ["country", "war_production"] + }, { + "name": "cic_construction_boost_factor", + "type": "number", + "decimal_places": 1, + "IsDynamic": false, + "categories": ["country", "war_production"] + }, { + "name": "land_bunker_effectiveness_factor", + "type": "number", + "decimal_places": 0, + "IsDynamic": false, + "categories": ["country", "state"] + }, { + "name": "coastal_bunker_effectiveness_factor", + "type": "number", + "decimal_places": 0, + "IsDynamic": false, + "categories": ["country", "state"] + }, { + "name": "special_forces_cap_flat", + "type": "number", + "decimal_places": 0, + "IsDynamic": false, + "categories": ["army"] + }, { + "name": "operation_outcome", + "type": "number", + "decimal_places": 0, + "IsDynamic": true, + "categories": ["intelligence_agency"] + }, { + "name": "operation_cost", + "type": "number", + "decimal_places": 0, + "IsDynamic": true, + "categories": ["intelligence_agency"] + }, { + "name": "operation_infiltrate_outcome", + "type": "number", + "decimal_places": 0, + "IsDynamic": true, + "categories": ["intelligence_agency"] + }, { + "name": "modifier_army_sub_unit_cavalry_attack_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_cavalry_defence_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_cavalry_speed_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_camelry_attack_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_camelry_defence_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_camelry_speed_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_infantry_attack_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_infantry_defence_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_infantry_speed_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_marines_attack_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_marines_defence_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_marines_speed_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_marines_max_org_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_mountaineers_attack_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_mountaineers_defence_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_mountaineers_speed_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_mountaineers_max_org_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_paratrooper_attack_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_paratrooper_defence_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_paratrooper_speed_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_paratrooper_max_org_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_armored_car_attack_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_armored_car_defence_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_armored_car_speed_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_armored_car_max_org_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_armored_car_recon_attack_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_armored_car_recon_defence_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_armored_car_recon_speed_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_armored_car_recon_max_org_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_light_tank_recon_attack_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_light_tank_recon_defence_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_light_tank_recon_speed_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_light_tank_recon_max_org_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_irregular_infantry_attack_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_irregular_infantry_defence_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_irregular_infantry_speed_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_irregular_infantry_max_org_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_militia_attack_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_militia_defence_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_militia_speed_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_militia_max_org_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_militia_org_recovery_cap_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_blackshirt_assault_battalion_attack_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_blackshirt_assault_battalion_defence_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_blackshirt_assault_battalion_speed_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_blackshirt_assault_battalion_max_org_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_military_police_attack_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_military_police_defence_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_military_police_speed_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_military_police_max_org_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_long_range_patrol_support_attack_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_long_range_patrol_support_defence_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "name": "modifier_army_sub_unit_category_special_forces_max_org_factor", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["army"] + }, { + "groupname": "trait__xp_gain_factor", + "desc": "Xp gain factor (used if the trait has not prefix 'trait_').", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["naval", "country", "army"], + "modifiers": ["BALTIC_anti_bolshevik", "BALTIC_ex_russian", "ETH_hero_of_ethiopia", "JAP_communist_sympathizer", "JAP_samurai_lineage", "POL_sanation_left_leader", "POL_sanation_right_leader", "SWE_disillusioned_with_the_government", "SWE_promoted_away_from_power", "SWE_wounded_in_protests", "adaptable", "aggressive_assaulter", "air_controller", "ambusher", "arctic_water_expert", "armor_officer", "ascari_officer", "aviation_enthusiast", "battleship_adherent", "bearer_of_artillery", "big_guns_expert", "blockade_runner", "blue_water_expert", "bold", "brilliant_strategist", "camouflage_expert", "career_officer", "caustic_personality", "cavalry_expert", "cavalry_leader", "cavalry_officer", "chief_engineer", "combined_arms_expert", "commando", "concealment_expert", "craven", "crisis_magician", "cruiser_captain", "cuts_corners", "defensive_doctrine", "demoted", "desert_fox", "destroyer_leader", "disgruntled", "dive_bomber", "engineer_officer", "exiled_leader", "expert_delegator", "expert_improviser", "fast_planner", "fighter_director", "fleet_protector", "flight_deck_manager", "fly_swatter", "fortress_buster", "gentlemanly", "green_water_expert", "ground_pounder", "guerilla_fighter", "gunnery_expert", "harsh_leader", "hidden_sympathies", "hill_fighter", "hunter_killer", "infantry_expert", "infantry_leader", "infantry_officer", "inflexible_strategist", "inshore_fighter", "inspirational_leader", "invader_ii", "ironside", "irregulars_officer", "jaeger", "jungle_rat", "lancer", "loading_drill_master", "logistics_wizard", "lone_wolf", "marksman", "media_personality", "militias_officer", "mine_craft", "naval_invader", "naval_liason", "naval_lineage", "navy_career_officer", "navy_media_personality", "offensive_doctrine", "old_guard", "old_guard_navy", "operative_commando", "operative_demolition_expert", "operative_double_agent", "operative_escape_artist", "operative_infiltrator", "operative_linguist", "operative_master_interrogator", "operative_natural_orator", "operative_safe_cracker", "operative_seducer", "operative_tough", "operative_well_groomed", "organisational_leader", "organizer", "panzer_expert", "panzer_leader", "paratrooper", "peasant_sympathiser", "politically_connected", "promoted_from_the_ranks", "ranger", "reassigned", "recently_promoted", "safety_first", "scavenger", "search_pattern_expert", "seawolf", "sick", "silent_hunter", "skilled_staffer", "skirmisher", "smoke_screen_expert", "spotter", "substance_abuser", "substance_addict", "superior_tactician", "swamp_fox", "thorough_planner", "torpedo_bomber", "torpedo_expert", "trickster", "unyielding_defender", "urban_assault_specialist", "war_hero", "winter_expert", "winter_specialist", "wounded"] + }, { + "groupname": "_acceptance", + "desc": "Ideology acceptance.", + "type": "number", + "decimal_places": 0, + "IsDynamic": true, + "categories": ["politics"], + "modifiers": ["communism", "democratic", "fascism", "neutrality"] + }, { + "groupname": "production_speed__factor", + "desc": "Country building construction speed factor.", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["country"], + "modifiers": ["air_base", "anti_air_building", "arms_factory", "bunker", "coastal_bunker", "dockyard", "fuel_silo", "industrial_complex", "infrastructure", "naval_base", "nuclear_reactor", "radar_station", "rail_way", "rocket_site", "supply_node", "synthetic_refinery"] + }, { + "groupname": "_outcome", + "desc": "Operation outcome modifier.", + "type": "number", + "decimal_places": 0, + "IsDynamic": true, + "categories": ["intelligence_agency"], + "modifiers": ["FRA_coup_in_central_africa", "FRA_coup_in_indochina", "FRA_coup_in_madagascar", "FRA_coup_in_north_africa", "FRA_coup_in_syria", "FRA_coup_in_west_africa", "FRA_instigate_workers_revolution_britain", "FRA_instigate_workers_revolution_germany", "FRA_instigate_workers_revolution_italy", "FRA_instigate_workers_revolution_spain", "bruneval_raid", "capture_tito", "heavy_water_raid", "murder_trotsky", "nuclear_espionage", "operation_boost_resistance", "operation_capture_cipher", "operation_collaboration_government", "operation_coordinated_strike", "operation_coup_government", "operation_fake_intel", "operation_infiltrate_armed_forces_airforce", "operation_infiltrate_armed_forces_army", "operation_infiltrate_armed_forces_navy", "operation_infiltrate_civilian", "operation_make_resistance_contacts", "operation_rescue_operative", "operation_steal_tech", "operation_steal_tech_airforce", "operation_steal_tech_army", "operation_steal_tech_civilian", "operation_steal_tech_navy", "operation_targeted_sabotage_industry", "operation_targeted_sabotage_infrastructure", "operation_targeted_sabotage_resources", "operation_warsaw_uprising", "raid_trotskys_villa", "rescue_mussolini"] + }, { + "groupname": "_preferred_weight_factor", + "desc": "Naval preferred weight factor.", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["country"], + "modifiers": ["nullCombatTactic", "tactic_ambush", "tactic_assault", "tactic_attacker_hb_attack", "tactic_attacker_hb_rush", "tactic_attacker_hb_storm", "tactic_attacker_sb_hold", "tactic_attacker_sb_skillful_defence", "tactic_backhand_blow", "tactic_banzai_charge", "tactic_barrage", "tactic_basic_attack", "tactic_basic_defend", "tactic_blitz", "tactic_breakthrough", "tactic_cc_attack", "tactic_cc_defend", "tactic_cc_local_strong_point", "tactic_cc_storm", "tactic_cc_withdraw", "tactic_counterattack", "tactic_defender_hb_hold", "tactic_defender_hb_skillful_defence", "tactic_defender_sb_assault", "tactic_defender_sb_reckless_assault", "tactic_defender_sb_retake_bridge", "tactic_delay", "tactic_elastic_defense", "tactic_encirclement", "tactic_guerrilla_tactics", "tactic_hold_bridge", "tactic_human_wave_tactics", "tactic_infantry_charge", "tactic_masterful_blitz", "tactic_overwhelming_fire", "tactic_planned_attack", "tactic_relentless_assault", "tactic_seize_bridge", "tactic_shock", "tactic_tactical_withdrawal", "tactic_tw_attack", "tactic_tw_chase", "tactic_tw_defend", "tactic_tw_evade", "tactic_tw_intercept", "tactic_unexpected_thrust"] + }, { + "groupname": "module__design_cost_factor", + "desc": "Module design cost factor.", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["naval", "country", "army"], + "modifiers": ["NOR_rikstanken_turret", "NOR_tank_rikstanken_armor", "additional_machine_guns", "air_air_radar_1", "air_air_radar_2", "air_ground_radar_1", "air_ground_radar_2", "aircraft_cannon_1_1x", "aircraft_cannon_1_2x", "aircraft_cannon_2_1x", "aircraft_cannon_2_2x", "airdropped_mines", "amphibious_drive", "armor_piercing_bomb_locks", "armor_plate_large", "armor_plate_medium", "armor_plate_small", "armor_skirts", "auto_loader", "bomb_locks", "bomb_sights_1", "bomb_sights_2", "cannon_defense_turret", "cannon_defense_turret_2x", "carrier_ship_engine_1", "carrier_ship_engine_2", "carrier_ship_engine_3", "carrier_ship_engine_4", "cruiser_ship_engine_1", "cruiser_ship_engine_2", "cruiser_ship_engine_3", "cruiser_ship_engine_4", "demining_coil", "dive_brakes_small", "dozer_blade", "dp_light_battery_1", "dp_light_battery_2", "dp_light_battery_3", "dp_light_battery_4", "dp_ship_medium_1", "dp_ship_secondaries_1", "dp_ship_secondaries_2", "dp_ship_secondaries_3", "dp_ship_secondaries_4", "drop_tanks", "easy_maintenance", "engine_1_1x", "engine_1_2x", "engine_1_3x", "engine_1_4x", "engine_1_6x", "engine_2_1x", "engine_2_2x", "engine_2_3x", "engine_2_4x", "engine_2_6x", "engine_3_1x", "engine_3_2x", "engine_3_3x", "engine_3_4x", "engine_3_6x", "engine_4_1x", "engine_4_2x", "engine_4_3x", "engine_4_4x", "engine_4_6x", "expanded_fuel_tank", "extra_ammo_storage", "fixed_explosive_charge", "flamethrower", "floats", "flying_boat_large", "flying_boat_medium", "fuel_tanks_large", "fuel_tanks_medium", "fuel_tanks_small", "guided_anti_ship_missile", "heavy_bomb_locks", "heavy_mg_2x", "heavy_mg_4x", "heavy_ship_engine_1", "heavy_ship_engine_2", "heavy_ship_engine_3", "heavy_ship_engine_4", "hmg_defense_turret", "hmg_defense_turret_2x", "jet_engine_1x", "jet_engine_2x", "jet_engine_3x", "jet_engine_4x", "jet_engine_6x", "large_aircraft_cannon_1x", "large_aircraft_cannon_2x", "large_bomb_bay", "light_mg_2x", "light_mg_4x", "light_ship_engine_1", "light_ship_engine_2", "light_ship_engine_3", "light_ship_engine_4", "lmg_defense_turret", "lmg_defense_turret_2x", "medium_bomb_bay", "non_strategic_materials_large", "non_strategic_materials_medium", "non_strategic_materials_small", "radio_navigation_1", "radio_navigation_2", "recon_camera", "rocket_engine_1", "rocket_engine_2", "rocket_engine_3", "rocket_rails", "secondary_turret_hmg", "secondary_turret_small_cannon", "self_sealing_fuel_tanks_large", "self_sealing_fuel_tanks_medium", "self_sealing_fuel_tanks_small", "ship_airplane_launcher_1", "ship_airplane_launcher_2", "ship_anti_air_1", "ship_anti_air_2", "ship_anti_air_3", "ship_anti_air_4", "ship_armor_bb_1", "ship_armor_bb_2", "ship_armor_bb_3", "ship_armor_bc_1", "ship_armor_bc_2", "ship_armor_bc_3", "ship_armor_carrier_deck", "ship_armor_cruiser_1", "ship_armor_cruiser_2", "ship_armor_cruiser_3", "ship_armor_cruiser_4", "ship_armor_shbb", "ship_deck_space", "ship_depth_charge_1", "ship_depth_charge_2", "ship_depth_charge_3", "ship_depth_charge_4", "ship_extra_fuel_tank", "ship_fire_control_system_0", "ship_fire_control_system_1", "ship_fire_control_system_2", "ship_fire_control_system_3", "ship_heavy_battery_1", "ship_heavy_battery_2", "ship_heavy_battery_3", "ship_heavy_battery_4", "ship_light_battery_1", "ship_light_battery_2", "ship_light_battery_3", "ship_light_battery_4", "ship_light_medium_battery_1", "ship_light_medium_battery_2", "ship_light_medium_battery_3", "ship_light_medium_battery_4", "ship_medium_battery_1", "ship_medium_battery_2", "ship_medium_battery_3", "ship_medium_battery_4", "ship_mine_layer_1", "ship_mine_layer_sub", "ship_mine_sweeper_1", "ship_radar_1", "ship_radar_2", "ship_radar_3", "ship_radar_4", "ship_secondaries_1", "ship_secondaries_2", "ship_sonar_1", "ship_sonar_2", "ship_sub_snorkel_1", "ship_sub_snorkel_2", "ship_super_heavy_battery_1", "ship_torpedo_1", "ship_torpedo_2", "ship_torpedo_3", "ship_torpedo_4", "ship_torpedo_sub_1", "ship_torpedo_sub_2", "ship_torpedo_sub_3", "ship_torpedo_sub_4", "sloped_armor", "small_bomb_bay", "smoke_launchers", "squeezebore_adaptor", "stabilizer", "sub_ship_engine_1", "sub_ship_engine_2", "sub_ship_engine_3", "sub_ship_engine_4", "tank_anti_air_cannon", "tank_anti_air_cannon_2", "tank_anti_air_cannon_3", "tank_auto_cannon", "tank_auto_cannon_2", "tank_bogie_suspension", "tank_buster_1", "tank_buster_2", "tank_cast_armor", "tank_christie_suspension", "tank_close_support_gun", "tank_diesel_engine", "tank_gas_turbine_engine", "tank_gasoline_engine", "tank_half_track_suspension", "tank_heavy_cannon", "tank_heavy_cannon_2", "tank_heavy_cannon_3", "tank_heavy_fixed_superstructure_turret", "tank_heavy_howitzer", "tank_heavy_machine_gun", "tank_heavy_three_man_tank_turret", "tank_heavy_two_man_tank_turret", "tank_high_velocity_cannon", "tank_high_velocity_cannon_2", "tank_high_velocity_cannon_3", "tank_interleaved_suspension", "tank_light_fixed_superstructure_turret", "tank_light_one_man_tank_turret", "tank_light_three_man_tank_turret", "tank_light_two_man_tank_turret", "tank_medium_cannon", "tank_medium_cannon_2", "tank_medium_fixed_superstructure_turret", "tank_medium_howitzer", "tank_medium_howitzer_2", "tank_medium_one_man_tank_turret", "tank_medium_three_man_tank_turret", "tank_medium_two_man_tank_turret", "tank_modern_tank_turret", "tank_petrol_electric_engine", "tank_radio_1", "tank_radio_2", "tank_radio_3", "tank_riveted_armor", "tank_rocket_launcher", "tank_rocket_launcher_2", "tank_small_cannon", "tank_small_cannon_2", "tank_super_heavy_cannon", "tank_super_heavy_four_man_tank_turret", "tank_super_heavy_three_man_tank_turret", "tank_torsion_bar_suspension", "tank_welded_armor", "tank_wheeled_suspension", "torpedo_mounting", "torpedo_mounting_2", "torpedo_mounting_3", "wet_ammo_storage"] + }, { + "groupname": "country_resource_cost_", + "desc": "Country resource cost.", + "type": "number", + "decimal_places": 0, + "IsDynamic": true, + "categories": ["state"], + "modifiers": ["aluminium", "chromium", "oil", "rubber", "steel", "tungsten"] + }, { + "groupname": "_xp_gain_factor", + "desc": "Xp gain factor (used if the trait has prefix 'trait_').", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["naval", "country", "army"], + "modifiers": ["trait_BUL_ff_sympathizer", "trait_BUL_tsar_loyalist", "trait_BUL_zveno_member", "trait_GRE_fascist_sympathizer", "trait_GRE_marxist_acolyte", "trait_GRE_stauch_monarchist", "trait_GRE_venezelist_loyalist", "trait_SOV_bukharinist", "trait_SOV_cowed_by_stalin_army", "trait_SOV_cowed_by_stalin_navy", "trait_SOV_determined", "trait_SOV_foreign_military_advisor", "trait_SOV_monarchist_sympathizer", "trait_SOV_stalinist", "trait_SOV_trotskyist", "trait_SPA_carlist_loyalties", "trait_SPA_falangist_loyalties", "trait_SPA_nationalist_sympathies", "trait_SPR_anti_stalinist_loyalties", "trait_SPR_republican_loyalties", "trait_SPR_stalinist_loyalties", "trait_TUR_kemalist_champion", "trait_cautious", "trait_engineer", "trait_mountaineer", "trait_reckless"] + }, { + "groupname": "experience_gain__training_factor", + "desc": "Unit experience gain factor on training.", + "type": "number", + "decimal_places": 0, + "IsDynamic": true, + "categories": ["naval", "country"], + "modifiers": ["airborne_light_armor", "amphibious_armor", "amphibious_heavy_armor", "amphibious_light_armor", "amphibious_mechanized", "amphibious_medium_armor", "anti_air", "anti_air_brigade", "anti_tank", "anti_tank_brigade", "armored_car", "armored_car_recon", "artillery", "artillery_brigade", "battle_cruiser", "battleship", "bicycle_battalion", "blackshirt_assault_battalion", "bus", "camelry", "carrier", "cas", "cavalry", "cv_cas", "cv_fighter", "cv_nav_bomber", "cv_suicide_craft", "destroyer", "engineer", "fake_intel_unit", "field_hospital", "fighter", "guided_missile", "heavy_armor", "heavy_cruiser", "heavy_fighter", "heavy_flame_tank", "heavy_sp_anti_air_brigade", "heavy_sp_artillery_brigade", "heavy_tank_destroyer_brigade", "infantry", "irregular_infantry", "jet_fighter", "jet_strat_bomber", "jet_tac_bomber", "jungle_pioneers_support", "light_armor", "light_cruiser", "light_flame_tank", "light_sp_anti_air_brigade", "light_sp_artillery_brigade", "light_tank_destroyer_brigade", "light_tank_recon", "logistics_company", "long_range_patrol_support", "maintenance_company", "marine", "marine_commando", "maritime_patrol_plane", "mechanized", "medium_armor", "medium_flame_tank", "medium_sp_anti_air_brigade", "medium_sp_artillery_brigade", "medium_tank_destroyer_brigade", "military_police", "militia", "modern_armor", "modern_sp_anti_air_brigade", "modern_sp_artillery_brigade", "modern_tank_destroyer_brigade", "mot_anti_air_brigade", "mot_anti_tank_brigade", "mot_artillery_brigade", "mot_recon", "mot_rocket_artillery_brigade", "motorized", "motorized_rocket_brigade", "mountaineers", "nav_bomber", "paratrooper", "penal_battalion", "pioneer_support", "railway_gun", "rangers_support", "recon", "rocket_artillery", "rocket_artillery_brigade", "rocket_interceptor", "scout_plane", "signal_company", "strat_bomber", "submarine", "suicide_craft", "super_heavy_armor", "super_heavy_sp_anti_air_brigade", "super_heavy_sp_artillery_brigade", "super_heavy_tank_destroyer_brigade", "tac_bomber", "transport_plane", "winter_logistics_support"] + }, { + "groupname": "production_cost_max_", + "desc": "Max naval equipment production cost.", + "type": "number", + "decimal_places": 0, + "IsDynamic": true, + "categories": ["naval"], + "modifiers": ["convoy", "floating_harbor_equipment", "ship_hull_carrier", "ship_hull_cruiser", "ship_hull_heavy", "ship_hull_light", "ship_hull_submarine"] + }, { + "groupname": "_design_cost_factor", + "desc": "Equipment cost factor.", + "type": "number", + "decimal_places": 0, + "IsDynamic": true, + "categories": ["country"], + "modifiers": ["amphibious_mechanized_equipment", "amphibious_tank_chassis", "anti_air_equipment", "anti_tank_equipment", "armored_car_equipment", "artillery_equipment", "convoy", "cv_small_plane_airframe", "cv_small_plane_cas_airframe", "cv_small_plane_cas_airframe_0", "cv_small_plane_cas_airframe_1", "cv_small_plane_cas_airframe_2", "cv_small_plane_cas_airframe_3", "cv_small_plane_cas_airframe_4", "cv_small_plane_naval_bomber_airframe", "cv_small_plane_naval_bomber_airframe_0", "cv_small_plane_naval_bomber_airframe_1", "cv_small_plane_naval_bomber_airframe_2", "cv_small_plane_naval_bomber_airframe_3", "cv_small_plane_naval_bomber_airframe_4", "cv_small_plane_suicide_airframe", "cv_small_plane_suicide_airframe_0", "cv_small_plane_suicide_airframe_1", "cv_small_plane_suicide_airframe_2", "cv_small_plane_suicide_airframe_3", "cv_small_plane_suicide_airframe_4", "floating_harbor_equipment", "guided_missile_equipment", "heavy_tank_aa_chassis", "heavy_tank_aa_chassis_0", "heavy_tank_aa_chassis_1", "heavy_tank_aa_chassis_2", "heavy_tank_aa_chassis_3", "heavy_tank_amphibious_chassis", "heavy_tank_amphibious_chassis_0", "heavy_tank_amphibious_chassis_1", "heavy_tank_amphibious_chassis_2", "heavy_tank_amphibious_chassis_3", "heavy_tank_artillery_chassis", "heavy_tank_artillery_chassis_0", "heavy_tank_artillery_chassis_1", "heavy_tank_artillery_chassis_2", "heavy_tank_artillery_chassis_3", "heavy_tank_chassis", "heavy_tank_destroyer_chassis", "heavy_tank_destroyer_chassis_0", "heavy_tank_destroyer_chassis_1", "heavy_tank_destroyer_chassis_2", "heavy_tank_destroyer_chassis_3", "heavy_tank_flame_chassis", "heavy_tank_flame_chassis_0", "heavy_tank_flame_chassis_1", "heavy_tank_flame_chassis_2", "heavy_tank_flame_chassis_3", "infantry_equipment", "jet_fighter_equipment", "jet_strat_bomber_equipment", "jet_tac_bomber_equipment", "large_plane_airframe", "large_plane_maritime_patrol_plane_airframe", "large_plane_maritime_patrol_plane_airframe_0", "large_plane_maritime_patrol_plane_airframe_1", "large_plane_maritime_patrol_plane_airframe_2", "large_plane_maritime_patrol_plane_airframe_3", "large_plane_maritime_patrol_plane_airframe_4", "light_tank_aa_chassis", "light_tank_aa_chassis_0", "light_tank_aa_chassis_1", "light_tank_aa_chassis_2", "light_tank_aa_chassis_3", "light_tank_amphibious_chassis", "light_tank_amphibious_chassis_0", "light_tank_amphibious_chassis_1", "light_tank_amphibious_chassis_2", "light_tank_amphibious_chassis_3", "light_tank_artillery_chassis", "light_tank_artillery_chassis_0", "light_tank_artillery_chassis_1", "light_tank_artillery_chassis_2", "light_tank_artillery_chassis_3", "light_tank_chassis", "light_tank_destroyer_chassis", "light_tank_destroyer_chassis_0", "light_tank_destroyer_chassis_1", "light_tank_destroyer_chassis_2", "light_tank_destroyer_chassis_3", "light_tank_flame_chassis", "light_tank_flame_chassis_0", "light_tank_flame_chassis_1", "light_tank_flame_chassis_2", "light_tank_flame_chassis_3", "mechanized_equipment", "medium_plane_airframe", "medium_plane_fighter_airframe", "medium_plane_fighter_airframe_0", "medium_plane_fighter_airframe_1", "medium_plane_fighter_airframe_2", "medium_plane_fighter_airframe_3", "medium_plane_fighter_airframe_4", "medium_plane_scout_plane_airframe", "medium_plane_scout_plane_airframe_0", "medium_plane_scout_plane_airframe_1", "medium_plane_scout_plane_airframe_2", "medium_plane_scout_plane_airframe_3", "medium_plane_scout_plane_airframe_4", "medium_tank_aa_chassis", "medium_tank_aa_chassis_0", "medium_tank_aa_chassis_1", "medium_tank_aa_chassis_2", "medium_tank_aa_chassis_3", "medium_tank_amphibious_chassis", "medium_tank_amphibious_chassis_0", "medium_tank_amphibious_chassis_1", "medium_tank_amphibious_chassis_2", "medium_tank_amphibious_chassis_3", "medium_tank_artillery_chassis", "medium_tank_artillery_chassis_0", "medium_tank_artillery_chassis_1", "medium_tank_artillery_chassis_2", "medium_tank_artillery_chassis_3", "medium_tank_chassis", "medium_tank_destroyer_chassis", "medium_tank_destroyer_chassis_0", "medium_tank_destroyer_chassis_1", "medium_tank_destroyer_chassis_2", "medium_tank_destroyer_chassis_3", "medium_tank_flame_chassis", "medium_tank_flame_chassis_0", "medium_tank_flame_chassis_1", "medium_tank_flame_chassis_2", "medium_tank_flame_chassis_3", "modern_tank_aa_chassis", "modern_tank_aa_chassis_1", "modern_tank_artillery_chassis", "modern_tank_artillery_chassis_1", "modern_tank_chassis", "modern_tank_destroyer_chassis", "modern_tank_destroyer_chassis_1", "motorized_equipment", "motorized_rocket_equipment", "railway_gun_equipment", "rocket_artillery_equipment", "rocket_interceptor_equipment", "ship_hull_carrier", "ship_hull_cruiser", "ship_hull_heavy", "ship_hull_light", "ship_hull_submarine", "small_plane_airframe", "small_plane_cas_airframe", "small_plane_cas_airframe_0", "small_plane_cas_airframe_1", "small_plane_cas_airframe_2", "small_plane_cas_airframe_3", "small_plane_cas_airframe_4", "small_plane_naval_bomber_airframe", "small_plane_naval_bomber_airframe_0", "small_plane_naval_bomber_airframe_1", "small_plane_naval_bomber_airframe_2", "small_plane_naval_bomber_airframe_3", "small_plane_naval_bomber_airframe_4", "small_plane_suicide_airframe", "small_plane_suicide_airframe_0", "small_plane_suicide_airframe_1", "small_plane_suicide_airframe_2", "small_plane_suicide_airframe_3", "small_plane_suicide_airframe_4", "super_heavy_tank_aa_chassis", "super_heavy_tank_aa_chassis_1", "super_heavy_tank_artillery_chassis", "super_heavy_tank_artillery_chassis_1", "super_heavy_tank_chassis", "super_heavy_tank_destroyer_chassis", "super_heavy_tank_destroyer_chassis_1", "support_equipment", "train_equipment", "transport_plane_equipment"] + }, { + "groupname": "_cost_factor", + "desc": "Idea group cost factor.", + "type": "number", + "decimal_places": 0, + "IsDynamic": true, + "categories": ["country"], + "modifiers": ["academy_spirit", "air_chief", "air_force_academy_spirit", "air_force_command_spirit", "air_force_spirit", "aircraft_manufacturer", "army_chief", "army_spirit", "country", "division_command_spirit", "economy", "hidden_ideas", "high_command", "industrial_concern", "materiel_manufacturer", "mobilization_laws", "naval_academy_spirit", "naval_command_spirit", "naval_manufacturer", "navy_chief", "navy_spirit", "political_advisor", "tank_manufacturer", "theorist", "trade_laws"] + }, { + "groupname": "_category_type_cost_factor", + "desc": "Idea category type cost factor.", + "type": "number", + "decimal_places": 0, + "IsDynamic": true, + "categories": ["country"], + "modifiers": ["air_spirit", "army_spirit", "navy_spirit"] + }, { + "groupname": "_cost_factor", + "desc": "Technology cost factor.", + "type": "number", + "decimal_places": 0, + "IsDynamic": true, + "categories": ["country"], + "modifiers": ["cat_air_bombs", "cat_air_engine", "cat_air_guns", "cat_anti_air", "cat_anti_tank", "cat_armored_cars", "cat_base_strike", "cat_battlefield_support", "cat_fleet_in_being", "cat_grand_battle_plan", "cat_heavy_armor", "cat_heavy_fighter", "cat_light_armor", "cat_marines_doctrine", "cat_maritime_patrol", "cat_mass_assault", "cat_mechanized_equipment", "cat_medium_armor", "cat_mobile_warfare", "cat_mountaineers_doctrine", "cat_operational_integrity", "cat_paratroopers_doctrine", "cat_production", "cat_scout_plane", "cat_ship_heavy_battery", "cat_ship_light_battery", "cat_ship_medium_battery", "cat_special_forces_generic", "cat_strategic_bomber", "cat_strategic_destruction", "cat_superior_firepower", "cat_synth_oil", "cat_synth_rubber", "cat_torpedoes", "cat_trade_interdiction"] + }, { + "groupname": "state_resource_cost_", + "desc": "State resource cost.", + "type": "number", + "decimal_places": 0, + "IsDynamic": true, + "categories": ["state"], + "modifiers": ["aluminium", "chromium", "oil", "rubber", "steel", "tungsten"] + }, { + "groupname": "_risk", + "desc": "Operation risk modifier.", + "type": "number", + "decimal_places": 0, + "IsDynamic": true, + "categories": ["intelligence_agency"], + "modifiers": ["FRA_coup_in_central_africa", "FRA_coup_in_indochina", "FRA_coup_in_madagascar", "FRA_coup_in_north_africa", "FRA_coup_in_syria", "FRA_coup_in_west_africa", "FRA_instigate_workers_revolution_britain", "FRA_instigate_workers_revolution_germany", "FRA_instigate_workers_revolution_italy", "FRA_instigate_workers_revolution_spain", "bruneval_raid", "capture_tito", "heavy_water_raid", "murder_trotsky", "nuclear_espionage", "operation", "operation_boost_resistance", "operation_capture_cipher", "operation_collaboration_government", "operation_coordinated_strike", "operation_coup_government", "operation_fake_intel", "operation_infiltrate", "operation_infiltrate_armed_forces_airforce", "operation_infiltrate_armed_forces_army", "operation_infiltrate_armed_forces_navy", "operation_infiltrate_civilian", "operation_make_resistance_contacts", "operation_rescue_operative", "operation_steal_tech", "operation_steal_tech_airforce", "operation_steal_tech_army", "operation_steal_tech_civilian", "operation_steal_tech_navy", "operation_targeted_sabotage_industry", "operation_targeted_sabotage_infrastructure", "operation_targeted_sabotage_resources", "operation_warsaw_uprising", "raid_trotskys_villa", "rescue_mussolini", "target_sabotage"] + }, { + "groupname": "temporary_state_resource_", + "desc": "Temporary state resource.", + "type": "number", + "decimal_places": 0, + "IsDynamic": true, + "categories": ["state"], + "modifiers": ["aluminium", "chromium", "oil", "rubber", "steel", "tungsten"] + }, { + "groupname": "_cost", + "desc": "Operation cost modifier.", + "type": "number", + "decimal_places": 0, + "IsDynamic": true, + "categories": ["intelligence_agency"], + "modifiers": ["FRA_coup_in_central_africa", "FRA_coup_in_indochina", "FRA_coup_in_madagascar", "FRA_coup_in_north_africa", "FRA_coup_in_syria", "FRA_coup_in_west_africa", "FRA_instigate_workers_revolution_britain", "FRA_instigate_workers_revolution_germany", "FRA_instigate_workers_revolution_italy", "FRA_instigate_workers_revolution_spain", "bruneval_raid", "capture_tito", "heavy_water_raid", "murder_trotsky", "nuclear_espionage", "operation_boost_resistance", "operation_capture_cipher", "operation_collaboration_government", "operation_coordinated_strike", "operation_coup", "operation_coup_government", "operation_fake_intel", "operation_infiltrate", "operation_infiltrate_armed_forces_airforce", "operation_infiltrate_armed_forces_army", "operation_infiltrate_armed_forces_navy", "operation_infiltrate_civilian", "operation_make_resistance_contacts", "operation_rescue_operative", "operation_steal_tech_airforce", "operation_steal_tech_army", "operation_steal_tech_civilian", "operation_steal_tech_navy", "operation_targeted_sabotage_industry", "operation_targeted_sabotage_infrastructure", "operation_targeted_sabotage_resources", "operation_warsaw_uprising", "raid_trotskys_villa", "rescue_mussolini", "target_sabotage"] + }, { + "groupname": "state_repair_speed__factor", + "desc": "State building repair speed factor.", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["state"], + "modifiers": ["air_base", "anti_air_building", "arms_factory", "bunker", "coastal_bunker", "dockyard", "fuel_silo", "industrial_complex", "infrastructure", "naval_base", "nuclear_reactor", "radar_station", "rail_way", "rocket_site", "supply_node", "synthetic_refinery"] + }, { + "groupname": "experience_gain__combat_factor", + "desc": "Unit experience gain factor in combat.", + "type": "number", + "decimal_places": 0, + "IsDynamic": true, + "categories": ["naval", "country"], + "modifiers": ["airborne_light_armor", "amphibious_armor", "amphibious_heavy_armor", "amphibious_light_armor", "amphibious_mechanized", "amphibious_medium_armor", "anti_air", "anti_air_brigade", "anti_tank", "anti_tank_brigade", "armored_car", "armored_car_recon", "artillery", "artillery_brigade", "battle_cruiser", "battleship", "bicycle_battalion", "blackshirt_assault_battalion", "bus", "camelry", "carrier", "cas", "cavalry", "cv_cas", "cv_fighter", "cv_nav_bomber", "cv_suicide_craft", "destroyer", "engineer", "fake_intel_unit", "field_hospital", "fighter", "guided_missile", "heavy_armor", "heavy_cruiser", "heavy_fighter", "heavy_flame_tank", "heavy_sp_anti_air_brigade", "heavy_sp_artillery_brigade", "heavy_tank_destroyer_brigade", "infantry", "irregular_infantry", "jet_fighter", "jet_strat_bomber", "jet_tac_bomber", "jungle_pioneers_support", "light_armor", "light_cruiser", "light_flame_tank", "light_sp_anti_air_brigade", "light_sp_artillery_brigade", "light_tank_destroyer_brigade", "light_tank_recon", "logistics_company", "long_range_patrol_support", "maintenance_company", "marine", "marine_commando", "maritime_patrol_plane", "mechanized", "medium_armor", "medium_flame_tank", "medium_sp_anti_air_brigade", "medium_sp_artillery_brigade", "medium_tank_destroyer_brigade", "military_police", "militia", "modern_armor", "modern_sp_anti_air_brigade", "modern_sp_artillery_brigade", "modern_tank_destroyer_brigade", "mot_anti_air_brigade", "mot_anti_tank_brigade", "mot_artillery_brigade", "mot_recon", "mot_rocket_artillery_brigade", "motorized", "motorized_rocket_brigade", "mountaineers", "nav_bomber", "paratrooper", "penal_battalion", "pioneer_support", "railway_gun", "rangers_support", "recon", "rocket_artillery", "rocket_artillery_brigade", "rocket_interceptor", "scout_plane", "signal_company", "strat_bomber", "submarine", "suicide_craft", "super_heavy_armor", "super_heavy_sp_anti_air_brigade", "super_heavy_sp_artillery_brigade", "super_heavy_tank_destroyer_brigade", "tac_bomber", "transport_plane", "winter_logistics_support"] + }, { + "groupname": "production_cost__factor", + "desc": "Building construction cost factor.", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["country"], + "modifiers": ["air_base", "anti_air_building", "arms_factory", "bunker", "coastal_bunker", "dockyard", "fuel_silo", "industrial_complex", "infrastructure", "naval_base", "nuclear_reactor", "radar_station", "rail_way", "rocket_site", "supply_node", "synthetic_refinery"] + }, { + "groupname": "unit__design_cost_factor", + "desc": "Unit design cost factor.", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["naval", "country", "army"], + "modifiers": ["airborne_light_armor", "amphibious_armor", "amphibious_heavy_armor", "amphibious_light_armor", "amphibious_mechanized", "amphibious_medium_armor", "anti_air", "anti_air_brigade", "anti_tank", "anti_tank_brigade", "armored_car", "armored_car_recon", "artillery", "artillery_brigade", "battle_cruiser", "battleship", "bicycle_battalion", "blackshirt_assault_battalion", "bus", "camelry", "carrier", "cas", "cavalry", "cv_cas", "cv_fighter", "cv_nav_bomber", "cv_suicide_craft", "destroyer", "engineer", "fake_intel_unit", "field_hospital", "fighter", "guided_missile", "heavy_armor", "heavy_cruiser", "heavy_fighter", "heavy_flame_tank", "heavy_sp_anti_air_brigade", "heavy_sp_artillery_brigade", "heavy_tank_destroyer_brigade", "infantry", "irregular_infantry", "jet_fighter", "jet_strat_bomber", "jet_tac_bomber", "jungle_pioneers_support", "light_armor", "light_cruiser", "light_flame_tank", "light_sp_anti_air_brigade", "light_sp_artillery_brigade", "light_tank_destroyer_brigade", "light_tank_recon", "logistics_company", "long_range_patrol_support", "maintenance_company", "marine", "marine_commando", "maritime_patrol_plane", "mechanized", "medium_armor", "medium_flame_tank", "medium_sp_anti_air_brigade", "medium_sp_artillery_brigade", "medium_tank_destroyer_brigade", "military_police", "militia", "modern_armor", "modern_sp_anti_air_brigade", "modern_sp_artillery_brigade", "modern_tank_destroyer_brigade", "mot_anti_air_brigade", "mot_anti_tank_brigade", "mot_artillery_brigade", "mot_recon", "mot_rocket_artillery_brigade", "motorized", "motorized_rocket_brigade", "mountaineers", "nav_bomber", "paratrooper", "penal_battalion", "pioneer_support", "railway_gun", "rangers_support", "recon", "rocket_artillery", "rocket_artillery_brigade", "rocket_interceptor", "scout_plane", "signal_company", "strat_bomber", "submarine", "suicide_craft", "super_heavy_armor", "super_heavy_sp_anti_air_brigade", "super_heavy_sp_artillery_brigade", "super_heavy_tank_destroyer_brigade", "tac_bomber", "transport_plane", "winter_logistics_support"] + }, { + "groupname": "_drift", + "desc": "Ideology drift.", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["politics"], + "modifiers": ["communism", "democratic", "fascism", "neutrality"] + }, { + "groupname": "country_resource_", + "desc": "Country resource.", + "type": "number", + "decimal_places": 0, + "IsDynamic": true, + "categories": ["state"], + "modifiers": ["aluminium", "chromium", "oil", "rubber", "steel", "tungsten"] + }, { + "groupname": "state_production_speed__factor", + "desc": "State building construction speed factor.", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["state"], + "modifiers": ["air_base", "anti_air_building", "arms_factory", "bunker", "coastal_bunker", "dockyard", "fuel_silo", "industrial_complex", "infrastructure", "naval_base", "nuclear_reactor", "radar_station", "rail_way", "rocket_site", "supply_node", "synthetic_refinery"] + }, { + "groupname": "repair_speed__factor", + "desc": "Country building repair speed factor.", + "type": "number", + "decimal_places": 2, + "IsDynamic": true, + "categories": ["country"], + "modifiers": ["air_base", "anti_air_building", "arms_factory", "bunker", "coastal_bunker", "dockyard", "fuel_silo", "industrial_complex", "infrastructure", "naval_base", "nuclear_reactor", "radar_station", "rail_way", "rocket_site", "supply_node", "synthetic_refinery"] + }, { + "groupname": "state_resource_", + "desc": "State resource.", + "type": "number", + "decimal_places": 0, + "IsDynamic": true, + "categories": ["state"], + "modifiers": ["aluminium", "chromium", "oil", "rubber", "steel", "tungsten"] + }], + "dynamic_variables": { + "global": { + "year": { + "description": "current year" + }, + "province_controllers": { + "description": "get array of all province controllers. Example: province_controllers^4135" + }, + "power_balance_value": { + "description": "compares current value of a power balance\n\nExample:\npower_balance_value = {\n\tid = power_balance_id\n\tvalue > 0.5 # supported operators are: >, < and =\n}", + "is_trigger": true + }, + "technology": { + "description": "array of objects in technology database" + }, + "majors": { + "description": "get array of all majors (including non existing" + }, + "num_days": { + "description": "current total days" + }, + "date": { + "description": "get date value that can be comparable to other date values and localized using GetDateString/GetDateStringShortMonth/GetDateStringNoHour/GetDateStringNoHourLong scripted locs" + }, + "countries": { + "description": "get array of all countries (including non existing" + }, + "states": { + "description": "get array of all states" + }, + "ideology_groups": { + "description": "array of objects in ideology_groups database" + }, + "operations": { + "description": "array of objects in operations database" + }, + "difficulty": { + "description": "check if the difficulty is above or below specified value 0-2 (difficulty enum). Example: difficulty > 0 (above easy)", + "is_trigger": true + }, + "threat": { + "description": "check the global threat value (world tension). 0-1 value", + "is_trigger": true + }, + "pc_turn": { + "description": "Checks turn number in PC.\nExample:\npc_turn > 20", + "is_trigger": true + }, + "power_balance_daily_change": { + "description": "compares current total daily change of a power balance\n\nExample:\npower_balance_daily_change = {\n\tid = power_balance_id\n\tvalue > 0.5 # supported operators are: >, < and =\n}", + "is_trigger": true + }, + "power_balance_weekly_change": { + "description": "compares current total weekly change of a power balance\n\nExample:\npower_balance_weekly_change = {\n\tid = power_balance_id\n\tvalue > 0.5 # supported operators are: >, < and =\n}", + "is_trigger": true + }, + "num_of_career_profile_points": { + "description": "check amount of gained career points", + "is_trigger": true + } + }, + "country": { + "political_power": { + "description": "total political power of country" + }, + "subjects": { + "description": "array of subjects" + }, + "deployed_total_manpower_k": { + "description": "total deployed manpower of country in thousands." + }, + "resource_consumed": { + "description": "number of resources consumed by country, resource type is defined in target resource_consumed@steel" + }, + "total_equipment_produced_mechanized": { + "description": "Total produced equipment of typemechanized" + }, + "manpower": { + "description": "DEPRECATED, MAY OVERFLOW. total manpower of country" + }, + "air_intel": { + "description": "air intel against a target country. example GER.air_intel@ENG" + }, + "overlord": { + "description": "master of this subject" + }, + "num_of_nukes": { + "description": "check amount of nukes", + "is_trigger": true + }, + "command_power": { + "description": "total command power of country" + }, + "enemies_of_allies": { + "description": "array of enemies of allies" + }, + "total_equipment_produced_strategic_bomber": { + "description": "Total produced equipment of typestrategic_bomber" + }, + "owned_controlled_states": { + "description": "array owned and core states" + }, + "resource_produced": { + "description": "number of resources produced by country, resource type is defined in target. example resource_produced@steel" + }, + "core_resistance": { + "description": "returns core resistance of target country" + }, + "num_core_states": { + "description": "number of core states" + }, + "deployed_navy_manpower_k": { + "description": "total deployed navy manpower of country in thousands." + }, + "navy_intel": { + "description": "navy intel against a target country. example GER.navy_intel@ENG" + }, + "manpower_k": { + "description": "total manpower of country in thousands" + }, + "deployed_airforce_manpower_k": { + "description": "total deployed air manpower of country in thousands. Does not include exile manpower" + }, + "deployed_army_manpower_k": { + "description": "total deployed army manpower of country in thousands." + }, + "total_equipment_produced_flame": { + "description": "Total produced equipment of typeflame" + }, + "faction_members": { + "description": "array of faction members" + }, + "fuel_k": { + "description": "total fuel of country in thousands" + }, "max_fuel_k": { "description": "max fuel of country in thousands" }, "num_owned_controlled_states": { "description": "number of owned and core states" }, + "agency_upgrade_number": { + "description": "Checks the number of upgrade done in the intelligence agency. \nagency_upgrade_number > 4", + "is_trigger": true + }, "max_available_manpower": { "description": "DEPRECATED, MAY OVERFLOW. total available manpower of country" }, + "total_equipment_produced_floating_harbor": { + "description": "Total produced equipment of typefloating_harbor" + }, + "ai_strategy_dont_defend_ally_borders": { + "description": "ai strategy value dont_defend_ally_borders against country. Example: GER.ai_strategy_dont_defend_ally_borders@ENG" + }, "max_available_manpower_k": { "description": "total available manpower of country in thousands" }, @@ -7009,6 +9224,9 @@ "owned_states": { "description": "array of owned states" }, + "power_balance_weekly": { + "description": "current total power balance weekly change" + }, "max_manpower_k": { "description": "maximum manpower of country in thousands" }, @@ -7024,30 +9242,48 @@ "air_experience": { "description": "air experience of a country" }, + "any_war_score": { + "description": "compares the warscore of all wars in a country to see if any fullfills the comparison condition 0-100 - Example: any_war_score > 40", + "is_trigger": true + }, "num_armies": { "description": "number of armies" }, + "ai_strategy_ignore_claim": { + "description": "ai strategy value ignore_claim against country. Example: GER.ai_strategy_ignore_claim@ENG" + }, "party_popularity": { "description": "popularity of targeted party [0.00, 1.00]. example party_popularity@democratic. May also target ruling_party. This also supports country variables, so you can party_popularity@my_var_name for variables that store ideologies" }, "num_ships": { "description": "number of ships" }, + "enemies_naval_strength_ratio": { + "description": "Compares the estimated navy strength between the scope country and all its enemies", + "is_trigger": true + }, "num_deployed_planes": { "description": "number of deployed planes" }, + "total_equipment_produced_artillery": { + "description": "Total produced equipment of typeartillery" + }, + "command_power_daily": { + "description": "Checks if daily command power increase is more or less that specified value \n command_power_daily > 1.5", + "is_trigger": true + }, "num_deployed_planes_with_type": { "description": "number of deployed planes with equipment type. example num_deployed_planes_with_type@fighter" }, - "legitimacy": { - "description": "legitimacy of scope country. -1 if not an exile" - }, "researched_techs": { "description": "returns the array of researched technologies" }, "num_armies_in_state": { "description": "number of armies in state, state is in target. example num_armies_in_state@123" }, + "total_equipment_produced_support": { + "description": "Total produced equipment of typesupport" + }, "num_armies_with_type": { "description": "number of armies with dominant type, dominant type is defined in target. example: num_armies_with_type@light_armor" }, @@ -7072,6 +9308,9 @@ "highest_party_ideology": { "description": "ideology of the most popular party. Can exclude the ruling party by using @exclude_ruling_party. Example: highest_party_ideology OR highest_party_ideology@exclude_ruling_party" }, + "total_equipment_produced_train": { + "description": "Total produced equipment of typetrain" + }, "highest_party_popularity": { "description": "popularity size of the most popular party [0.00, 1.00]. Can exclude the ruling party by using @exclude_ruling_party. Example: highest_party_popularity OR highest_party_popularity@exclude_ruling_party" }, @@ -7081,134 +9320,586 @@ "current_party_ideology_group": { "description": "returns the token for current party ideology group" }, + "num_controlled_states": { + "description": "number of controlled states" + }, + "controlled_states": { + "description": "array of controlled states" + }, + "potential_and_current_enemies": { + "description": "array of potential and actual enemies" + }, + "capital": { + "description": "capital state of the country" + }, + "total_equipment_produced_carrier": { + "description": "Total produced equipment of typecarrier" + }, + "encryption_strength": { + "description": "total encryption strength of a country that is needed" + }, + "num_owned_states": { + "description": "number of owned states" + }, + "core_states": { + "description": "array of core states" + }, + "total_constructed_other": { + "description": "Total constructions of other" + }, + "enemies": { + "description": "array of enemies at war with" + }, + "neighbors": { + "description": "array of neighbors" + }, + "host": { + "description": "exile host of this country" + }, + "days_decision_timeout": { + "description": "timeout in days for a specific timed decision, decision type token is defined in target. example: days_decision_timeout@SOV_propaganda_knowledge" + }, + "exiles": { + "description": "exile host of this country" + }, + "days_mission_timeout": { + "description": "timeout in days for a specific timed mission, mission type token is defined in target. example: days_mission_timeout@GER_mefo_bills_mission" + }, + "allies": { + "description": "array of allies (faction members). prefer using faction_members instead" + }, + "faction_leader": { + "description": "faction leader of this country's faction" + }, + "ai_attitude_protective_weight": { + "description": "weight for an ai attitude attitude_protectiveagainst country. Example: GER.ai_attitude_protective_weight@ENG" + }, + "resource_exported": { + "description": "number of resources exported by country, resource type is defined in target resource_exported@steel" + }, + "resource_imported": { + "description": "number of resources imported by country, resource type is defined in target resource_imported@steel" + }, + "alliance_naval_strength_ratio": { + "description": "Compares the estimated naval strength between the scope country, his allies and his enemies.", + "is_trigger": true + }, "resource": { "description": "number of surplus resources in country, resource type is defined in target resource@steel" }, - "num_controlled_states": { - "description": "number of controlled states" + "legitimacy": { + "description": "legitimacy of scope country. -1 if not an exile" + }, + "num_equipment": { + "description": "number of equipment in country. example num_equipment@infantry_equipment" + }, + "num_equipment_in_armies": { + "description": "number of equipment in armies of the country, equipment type token is defined in target. example num_equipment_in_armies@infantry_equipment" + }, + "num_target_equipment_in_armies": { + "description": "number of equipment required in armies of the country, equipment type token is defined in target. example num_target_equipment_in_armies@infantry_equipment" + }, + "num_of_operatives": { + "description": "Checks the number of operatives the country controls", + "is_trigger": true + }, + "num_equipment_in_armies_k": { + "description": "number of equipment in armies of the country in thousands, equipment type token is defined in target. example num_equipment_in_armies_k@infantry_equipment" + }, + "num_target_equipment_in_armies_k": { + "description": "number of equipment required in armies of the country in thousands, equipment type token is defined in target. example num_target_equipment_in_armies_k@infantry_equipment" + }, + "autonomy_ratio": { + "description": "autonomy of scope country. -1 if not a subject" + }, + "ai_attitude_wants_antagonize": { + "description": "returns 1 if ai wants antagonize" + }, + "ai_attitude_wants_weaken": { + "description": "returns 1 if ai wants weaken" + }, + "ai_attitude_wants_ally": { + "description": "returns 1 if ai wants ally" + }, + "ai_attitude_wants_protect": { + "description": "returns 1 if ai wants protect" + }, + "has_bombing_war_support": { + "description": "check value of bombing malus to war support 0-1: Example has_bombing_war_support < 0.1", + "is_trigger": true + }, + "ai_attitude_wants_ignore": { + "description": "returns 1 if ai wants ignore" + }, + "ai_attitude_is_threatened": { + "description": "returns 1 if ai is threatened" + }, + "core_compliance": { + "description": "returns core compliance of target country" + }, + "occupied_countries": { + "description": "array of occupied countries" + }, + "original_tag": { + "description": "returns the original tag of a country" + }, + "decryption_speed": { + "description": "total encryption strength of a country that is needed" + }, + "cryptology_defense_level": { + "description": "cryptology defense level of a country" + }, + "army_leaders": { + "description": "all army leaders of a country" + }, + "navy_leaders": { + "description": "all navy leaders of a country" + }, + "operatives": { + "description": "all operatives of a country" + }, + "num_orders_groups": { + "description": "number of orders groups" + }, + "total_equipment_produced_interceptor": { + "description": "Total produced equipment of typeinterceptor" + }, + "power_balance_value": { + "description": "current power balance value" + }, + "power_balance_daily": { + "description": "current total power balance daily change" + }, + "total_constructed_civilian_factory": { + "description": "Total constructions of civilian_factory" + }, + "num_of_supply_nodes": { + "description": "check amount of supply nodes", + "is_trigger": true + }, + "country_leader": { + "description": "returns the current country leader of the country" + }, + "ai_strategy_alliance": { + "description": "ai strategy value alliance against country. Example: GER.ai_strategy_alliance@ENG" + }, + "theorist": { + "description": "returns the currently hired theorist of the country" + }, + "army_chief": { + "description": "returns the currently hired army chief of the country" + }, + "navy_chief": { + "description": "returns the currently hired navy chief of the country" + }, + "num_subjects": { + "description": "check the number of subjects of nation", + "is_trigger": true + }, + "has_political_power": { + "description": "check amount of political power", + "is_trigger": true + }, + "air_chief": { + "description": "returns the currently hired air chief of the country" + }, + "political_advisor": { + "description": "returns an array with the currently hired political advisors of the country" + }, + "high_command": { + "description": "returns an array with the currently hired high command of the country" + }, + "ai_strategy_declare_war": { + "description": "ai strategy value declare_war against country. Example: GER.ai_strategy_declare_war@ENG" + }, + "num_of_controlled_factories": { + "description": "check the number of factories in controlled states excluding any gained or lost through trade, relations, modifiers etc.", + "is_trigger": true + }, + "num_of_owned_factories": { + "description": "check the number of factories in owned states excluding any gained or lost through trade, relations, modifiers etc.", + "is_trigger": true + }, + "total_equipment_produced_suicide": { + "description": "Total produced equipment of typesuicide" + }, + "num_of_military_factories": { + "description": "check amount of military factories", + "is_trigger": true + }, + "num_of_civilian_factories": { + "description": "check amount of civilian factories", + "is_trigger": true + }, + "num_of_naval_factories": { + "description": "check amount of naval factories", + "is_trigger": true + }, + "foreign_manpower": { + "description": "check the amount of foreign garrison manpower we have", + "is_trigger": true + }, + "has_manpower": { + "description": "check amount of manpower", + "is_trigger": true + }, + "num_of_available_military_factories": { + "description": "check amount of available military factories", + "is_trigger": true + }, + "num_of_available_naval_factories": { + "description": "check amount of available naval factories", + "is_trigger": true + }, + "num_of_available_civilian_factories": { + "description": "check amount of available civilian factories", + "is_trigger": true + }, + "surrender_progress": { + "description": "check if a country is close to surrendering", + "is_trigger": true + }, + "political_power_daily": { + "description": "Checks if daily political power increase is more or less that specified value \n political_power_daily > 1.5", + "is_trigger": true + }, + "has_casualties_war_support": { + "description": "check value of casualties malus to war support 0-1: Example has_casualties_war_support < 0.1", + "is_trigger": true + }, + "has_convoys_war_support": { + "description": "check value of convoys sunk malus to war support 0-1: Example has_convoys_war_support < 0.1", + "is_trigger": true + }, + "land_doctrine_level": { + "description": "checks researched land doctrine level", + "is_trigger": true + }, + "casualties": { + "description": "Check the amount of casualties a country has suffered in all of it's wars", + "is_trigger": true + }, + "num_of_factories": { + "description": "Check amount of available factories (excluding temporary sources like trade and lend-lease)\nExample:\nGER = { num_of_factories < 50 }", + "is_trigger": true + }, + "num_of_controlled_states": { + "description": "check amount of controlled stats", + "is_trigger": true + }, + "has_added_tension_amount": { + "description": "Compare if the country has added above or below the specified ammount of tension", + "is_trigger": true + }, + "total_equipment_produced_screen_ship": { + "description": "Total produced equipment of typescreen_ship" + }, + "ai_irrationality": { + "description": "check the ai irrationality value", + "is_trigger": true + }, + "ai_strategy_antagonize": { + "description": "ai strategy value antagonize against country. Example: GER.ai_strategy_antagonize@ENG" + }, + "num_divisions": { + "description": "Will compare towards the amount of divisions a country has control over, if strength matters use has_army_size.", + "is_trigger": true + }, + "original_research_slots": { + "description": "check number of research slots at start of game", + "is_trigger": true + }, + "ai_wants_divisions": { + "description": "Will compare towards the amount of divisions an ai wants to have.", + "is_trigger": true + }, + "alliance_strength_ratio": { + "description": "Compares the estimated army strength between the scope country, his allies and his enemies.", + "is_trigger": true + }, + "num_faction_members": { + "description": "Compares the number of members in the faction for the current country. \n Example: num_faction_members > 10", + "is_trigger": true + }, + "enemies_strength_ratio": { + "description": "Compares the estimated army strength between the scope country and all its enemies", + "is_trigger": true + }, + "compare_autonomy_progress_ratio": { + "description": "check if autonomy progress ratio is higher than value, example:\ncompare_autonomy_progress_ratio > 0.5", + "is_trigger": true + }, + "num_tech_sharing_groups": { + "description": "checks how many groups a nation is a member of", + "is_trigger": true + }, + "ai_strategy_invade": { + "description": "ai strategy value invade against country. Example: GER.ai_strategy_invade@ENG" + }, + "num_occupied_states": { + "description": "check the number of states occupied by nation", + "is_trigger": true + }, + "amount_research_slots": { + "description": "check number of research current research slots \n amount_research_slots > 2", + "is_trigger": true + }, + "manpower_per_military_factory": { + "description": "Number of available manpower per factory the country has. Excluding dockyards.\nmanpower_per_military_factory < 1000", + "is_trigger": true + }, + "has_stability": { + "description": "check value of stability 0-1: Example has_stability < 0.6", + "is_trigger": true + }, + "has_war_support": { + "description": "check value of war_support 0-1: Example has_war_support < 0.6", + "is_trigger": true + }, + "total_equipment_produced_infantry": { + "description": "Total produced equipment of typeinfantry" + }, + "num_of_civilian_factories_available_for_projects": { + "description": "check amount of civilian factories available for a new project to use", + "is_trigger": true + }, + "political_power_growth": { + "description": "Check the value of political power daily growth.Exacmple: political_power_growth > 0", + "is_trigger": true + }, + "amount_manpower_in_deployment_queue": { + "description": "Checks for amount manpower currently in deploymentview. amount_manpower_in_training > 10", + "is_trigger": true + }, + "pc_total_score": { + "description": "Checks country's total peace conference score. Only usable if the country is on the winning side.\nExample:\nCZE = { pc_total_score > 400 }", + "is_trigger": true + }, + "ai_strategy_conquer": { + "description": "ai strategy value conquer against country. Example: GER.ai_strategy_conquer@ENG" + }, + "pc_current_score": { + "description": "Checks country's total peace conference score. Only usable if the country is on the winning side.\nExample:\nCZE = { pc_current_score > 400 }", + "is_trigger": true + }, + "has_legitimacy": { + "description": "Check scope country legitimacy 0-100: Example has_legitimacy < 60", + "is_trigger": true + }, + "casualties_k": { + "description": "Check the amount of casualties in thousands a country has suffered in all of it's wars", + "is_trigger": true + }, + "fuel_ratio": { + "description": "Compares the fuel ratio to a variable.\nExample: fuel_ratio > 0.5", + "is_trigger": true + }, + "days_since_capitulated": { + "description": "Checks the number of days since the country last capitulated, even if it is no longer capitulated.\n\tIf it has not ever capitulated, the value is extremely large.\n\tIt is recommended to combine this with has_capitulated = yes when you specifically want to ignore non-active capitulations.\nExamples:\n\tHOL = { has_capitulated = yes days_since_capitulated > 60 } # The Netherlands has been capitulated for more than two months\n\tFRA = { has_capitulated = yes days_since_capitulated < 21 } # France has capitulated sometime within the past three weeks\n\tGER = { OR = { has_capitulated = no days_since_capitulated > 14 } } # Germany is not both actively and recently capitulated\n", + "is_trigger": true + }, + "mine_threat": { + "description": "A trigger to check how dangerous enemy mines are for a country. Controlled by NAVAL_MINE_DANGER defines. Returns a value between 0 and 1. Example mine_threat > 0.5 ", + "is_trigger": true + }, + "convoy_threat": { + "description": "A trigger to check convoy threat for a country. Controlled by NAVAL_CONVOY_DANGER defines. Returns a value between 0 and 1. Example convoy_threat > 0.5 ", + "is_trigger": true + }, + "longest_war_length": { + "description": "Check number of months the country has been at war", + "is_trigger": true + }, + "decryption_progress": { + "description": "checks decryption ratio against a country. Example: \ndecryption_progress = { \n target = GER\n value > 0.5\n} \n#or decryption_progress@GER as variable\n", + "is_trigger": true + }, + "garrison_manpower_need": { + "description": "check the amount of manpower needed by garrisons", + "is_trigger": true + }, + "num_operative_slots": { + "description": "Checks the number of available operative slots a country has.\nIf this differs from the number of operative, this does not mean the country can recruit an operative, but that it will eventually be able to.", + "is_trigger": true + }, + "num_free_operative_slots": { + "description": "Checks the number of operative a country can recruit right now.\nNote that this is not necessarily greater than zero if num_operative_slots returned a number greater than the number of operative.", + "is_trigger": true + }, + "num_fake_intel_divisions": { + "description": "Will compare towards the amount of fake intel divisions a country has control over. .", + "is_trigger": true + }, + "has_collaboration": { + "description": "checks the collaboration in a target country with our currently scoped country. Example: \nhas_collaboration = { \n target = GER\n value > 0.5\n} \n#or has_collaboration@GER as variable\n", + "is_trigger": true + }, + "num_researched_technologies": { + "description": "Number of researched technologies", + "is_trigger": true + }, + "network_national_coverage": { + "description": "checks network national coverage you have over a country. Example: \nnetwork_national_coverage = { \n target = GER\n value > 0.5\n} \n", + "is_trigger": true + }, + "ai_strategy_befriend": { + "description": "ai strategy value befriend against country. Example: GER.ai_strategy_befriend@ENG" + }, + "ai_strategy_consider_weak": { + "description": "ai strategy value consider_weak against country. Example: GER.ai_strategy_consider_weak@ENG" + }, + "ai_strategy_protect": { + "description": "ai strategy value protect against country. Example: GER.ai_strategy_protect@ENG" + }, + "ai_strategy_contain": { + "description": "ai strategy value contain against country. Example: GER.ai_strategy_contain@ENG" + }, + "ai_strategy_support": { + "description": "ai strategy value support against country. Example: GER.ai_strategy_support@ENG" + }, + "ai_strategy_force_defend_ally_borders": { + "description": "ai strategy value force_defend_ally_borders against country. Example: GER.ai_strategy_force_defend_ally_borders@ENG" + }, + "ai_strategy_influence": { + "description": "ai strategy value influence against country. Example: GER.ai_strategy_influence@ENG" + }, + "ai_strategy_ignore": { + "description": "ai strategy value ignore against country. Example: GER.ai_strategy_ignore@ENG" + }, + "ai_strategy_send_volunteers_desire": { + "description": "ai strategy value send_volunteers_desire against country. Example: GER.ai_strategy_send_volunteers_desire@ENG" + }, + "ai_strategy_occupation_policy": { + "description": "ai strategy value occupation_policy against country. Example: GER.ai_strategy_occupation_policy@ENG" + }, + "total_constructed_infrastructure": { + "description": "Total constructions of infrastructure" + }, + "ai_strategy_prepare_for_war": { + "description": "ai strategy value prepare_for_war against country. Example: GER.ai_strategy_prepare_for_war@ENG" }, - "controlled_states": { - "description": "array of controlled states" + "ai_strategy_decrypt_target": { + "description": "ai strategy value decrypt_target against country. Example: GER.ai_strategy_decrypt_target@ENG" }, - "potential_and_current_enemies": { - "description": "array of potential and actual enemies" + "ai_strategy_activate_crypto": { + "description": "ai strategy value activate_crypto against country. Example: GER.ai_strategy_activate_crypto@ENG" }, - "capital": { - "description": "capital state of the country" + "ai_attitude_neutral_weight": { + "description": "weight for an ai attitude attitude_neutralagainst country. Example: GER.ai_attitude_neutral_weight@ENG" }, - "encryption_strength": { - "description": "total encryption strength of a country that is needed" + "total_equipment_produced_submarine": { + "description": "Total produced equipment of typesubmarine" }, - "num_owned_states": { - "description": "number of owned states" + "ai_attitude_hostile_weight": { + "description": "weight for an ai attitude attitude_hostileagainst country. Example: GER.ai_attitude_hostile_weight@ENG" }, - "resource_produced": { - "description": "number of resources produced by country, resource type is defined in target. example resource_produced@steel" + "ai_attitude_friendly_weight": { + "description": "weight for an ai attitude attitude_friendlyagainst country. Example: GER.ai_attitude_friendly_weight@ENG" }, - "core_resistance": { - "description": "returns core resistance of target country" + "ai_attitude_outraged_weight": { + "description": "weight for an ai attitude attitude_outragedagainst country. Example: GER.ai_attitude_outraged_weight@ENG" }, - "num_core_states": { - "description": "number of core states" + "ai_attitude_threatened_weight": { + "description": "weight for an ai attitude attitude_threatenedagainst country. Example: GER.ai_attitude_threatened_weight@ENG" }, - "core_states": { - "description": "array of core states" + "ai_attitude_allied_weight": { + "description": "weight for an ai attitude attitude_alliedagainst country. Example: GER.ai_attitude_allied_weight@ENG" }, - "enemies": { - "description": "array of enemies at war with" + "total_equipment_produced_fighter": { + "description": "Total produced equipment of typefighter" }, - "subjects": { - "description": "array of subjects" + "total_constructed_military_factory": { + "description": "Total constructions of military_factory" }, - "neighbors": { - "description": "array of neighbors" + "total_constructed_dockyard": { + "description": "Total constructions of dockyard" }, - "host": { - "description": "exile host of this country" + "total_constructed_port": { + "description": "Total constructions of port" }, - "days_decision_timeout": { - "description": "timeout in days for a specific timed decision, decision type token is defined in target. example: days_decision_timeout@SOV_propaganda_knowledge" + "total_constructed_air_base": { + "description": "Total constructions of air_base" }, - "exiles": { - "description": "exile host of this country" + "total_constructed_rocket_site": { + "description": "Total constructions of rocket_site" }, - "days_mission_timeout": { - "description": "timeout in days for a specific timed mission, mission type token is defined in target. example: days_mission_timeout@GER_mefo_bills_mission" + "total_constructed_radar": { + "description": "Total constructions of radar" }, - "allies": { - "description": "array of allies (faction members). prefer using faction_members instead" + "total_constructed_anti_air": { + "description": "Total constructions of anti_air" }, - "faction_leader": { - "description": "faction leader of this country's faction" + "total_constructed_refinery": { + "description": "Total constructions of refinery" }, - "resource_exported": { - "description": "number of resources exported by country, resource type is defined in target resource_exported@steel" + "total_constructed_fuel_silo": { + "description": "Total constructions of fuel_silo" }, - "resource_imported": { - "description": "number of resources imported by country, resource type is defined in target resource_imported@steel" + "total_constructed_supply_node": { + "description": "Total constructions of supply_node" }, - "num_equipment": { - "description": "number of equipment in country. example num_equipment@infantry_equipment" + "total_constructed_nuclear_reactor": { + "description": "Total constructions of nuclear_reactor" }, - "num_equipment_in_armies": { - "description": "number of equipment in armies of the country, equipment type token is defined in target. example num_equipment_in_armies@infantry_equipment" + "total_constructed_land_fort": { + "description": "Total constructions of land_fort" }, - "num_target_equipment_in_armies": { - "description": "number of equipment required in armies of the country, equipment type token is defined in target. example num_target_equipment_in_armies@infantry_equipment" + "total_constructed_naval_fort": { + "description": "Total constructions of naval_fort" }, - "num_equipment_in_armies_k": { - "description": "number of equipment in armies of the country in thousands, equipment type token is defined in target. example num_equipment_in_armies_k@infantry_equipment" + "total_equipment_produced_convoy": { + "description": "Total produced equipment of typeconvoy" }, - "num_target_equipment_in_armies_k": { - "description": "number of equipment required in armies of the country in thousands, equipment type token is defined in target. example num_target_equipment_in_armies_k@infantry_equipment" + "total_equipment_produced_railway_gun": { + "description": "Total produced equipment of typerailway_gun" }, - "autonomy_ratio": { - "description": "autonomy of scope country. -1 if not a subject" + "total_equipment_produced_armor": { + "description": "Total produced equipment of typearmor" }, - "ai_attitude_wants_antagonize": { - "description": "returns 1 if ai wants antagonize" + "total_equipment_produced_motorized": { + "description": "Total produced equipment of typemotorized" }, - "ai_attitude_wants_weaken": { - "description": "returns 1 if ai wants weaken" + "total_equipment_produced_capital_ship": { + "description": "Total produced equipment of typecapital_ship" }, - "ai_attitude_wants_ally": { - "description": "returns 1 if ai wants ally" + "total_equipment_produced_heavy_fighter": { + "description": "Total produced equipment of typeheavy_fighter" }, - "ai_attitude_wants_protect": { - "description": "returns 1 if ai wants protect" + "total_equipment_produced_tactical_bomber": { + "description": "Total produced equipment of typetactical_bomber" }, - "ai_attitude_wants_ignore": { - "description": "returns 1 if ai wants ignore" + "total_equipment_produced_cas": { + "description": "Total produced equipment of typecas" }, - "ai_attitude_is_threatened": { - "description": "returns 1 if ai is threatened" + "total_equipment_produced_naval_bomber": { + "description": "Total produced equipment of typenaval_bomber" }, - "core_compliance": { - "description": "returns core compliance of target country" + "total_equipment_produced_missile": { + "description": "Total produced equipment of typemissile" }, - "occupied_countries": { - "description": "array of occupied countries" + "total_equipment_produced_scout_plane": { + "description": "Total produced equipment of typescout_plane" }, - "original_tag": { - "description": "returns the original tag of a country" + "total_equipment_produced_maritime_patrol_plane": { + "description": "Total produced equipment of typemaritime_patrol_plane" }, - "decryption_speed": { - "description": "total encryption strength of a country that is needed" + "total_equipment_produced_air_transport": { + "description": "Total produced equipment of typeair_transport" }, - "cryptology_defense_level": { - "description": "cryptology defense level of a country" + "total_equipment_produced_": { + "description": "Total produced equipment of type" }, - "army_leaders": { - "description": "all army leaders of a country" + "total_equipment_produced_amphibious": { + "description": "Total produced equipment of typeamphibious" }, - "navy_leaders": { - "description": "all navy leaders of a country" + "total_equipment_produced_anti_air": { + "description": "Total produced equipment of typeanti_air" }, - "operatives": { - "description": "all operatives of a country" + "total_equipment_produced_anti_tank": { + "description": "Total produced equipment of typeanti_tank" }, - "num_orders_groups": { - "description": "number of orders groups" + "total_equipment_produced_rocket": { + "description": "Total produced equipment of typerocket" } }, "state": { @@ -7227,6 +9918,10 @@ "infrastructure_level": { "description": "infrastructure level in the state" }, + "days_since_last_strategic_bombing": { + "description": "Checks the days since last strategic bombing.\ndays_since_last_strategic_bombing < 10\n", + "is_trigger": true + }, "distance_to": { "description": "distance to another state, uses target as another state. example: 123.distance_to@124" }, @@ -7247,6 +9942,42 @@ }, "controller": { "description": "controller of the state" + }, + "resistance": { + "description": "Compares the current resistance level of a state to a value. Example: resistance > 50 ", + "is_trigger": true + }, + "state_population": { + "description": "check the population in the state", + "is_trigger": true + }, + "state_strategic_value": { + "description": "Checks for state strategic value", + "is_trigger": true + }, + "state_and_terrain_strategic_value": { + "description": "Checks for state strategic value", + "is_trigger": true + }, + "state_population_k": { + "description": "check the population in the state in thousands (use to avoid variable overflows)", + "is_trigger": true + }, + "compliance": { + "description": "Compares the current compliance level of a state to a value. Example: compliance > 50 ", + "is_trigger": true + }, + "compliance_speed": { + "description": "Compares the current compliance speed of a state to a value. Example: compliance_speed > 50 ", + "is_trigger": true + }, + "resistance_speed": { + "description": "Compares the current resistance speed of a state to a value. Example: resistance_speed > 50 ", + "is_trigger": true + }, + "resistance_target": { + "description": "Compares the target resistance level of a state to a value. Example: resistance_target > 50 ", + "is_trigger": true } }, "unit_leader": { @@ -7310,21 +10041,21 @@ "num_special": { "description": "number of units with special dominant type" }, + "num_mechanized": { + "description": "number of units with mechanized dominant type" + }, "attack_level": { "description": "attack level of the leader" }, "num_personality_traits": { "description": "number of personality traits a leader has" }, - "num_mechanized": { - "description": "number of units with mechanized dominant type" + "num_motorized": { + "description": "number of units with motorized dominant type" }, "maneuvering_level": { "description": "maneuvering level of the leader" }, - "num_motorized": { - "description": "number of units with motorized dominant type" - }, "num_battalions_with_type": { "description": "number of battalions with sub unit type, sub unit type is defined in target. example: num_battalions_with_type@light_armor" }, @@ -7343,12 +10074,16 @@ "num_status_traits": { "description": "number of status traits a leader has" }, - "leader_modifier": { - "description": "value of a modifier stored in leader modifier, modifier token is defined in target. example leader_modifier@navy_max_range" + "defense_skill_level": { + "description": "Compares defense skill level of a unit leader.\nExample: defense_skill_level > 5", + "is_trigger": true }, "num_assigned_traits": { "description": "number of assigned traits the leader has" }, + "leader_modifier": { + "description": "value of a modifier stored in leader modifier, modifier token is defined in target. example leader_modifier@navy_max_range" + }, "num_terrain_traits": { "description": "number of terrain traits a leader has" }, @@ -7364,6 +10099,10 @@ "army_attack_level": { "description": "attack level of the leader" }, + "attack_skill_level": { + "description": "Compares attack skill level of a unit leader.\nExample: attack_skill_level > 5", + "is_trigger": true + }, "army_defense_level": { "description": "defense level of the leader" }, @@ -7385,12 +10124,12 @@ "average_stats": { "description": "average stats of unit leader" }, - "operation_type": { - "description": "returns the operation token the operative is assigned" - }, "avg_offensive_combat_status": { "description": "average progress of offensive combats" }, + "operation_type": { + "description": "returns the operation token the operative is assigned" + }, "sum_unit_terrain_modifier": { "description": "sum of terrain modifiers of each army's location, terrain type is defined in target. example: sum_unit_terrain_modifier@sickness_chance " }, @@ -7424,11 +10163,49 @@ "own_forced_into_hiding_time_factor": { "description": "The time factor applied to the status \"forced into hiding\". Takes into account the country it is operating for and the country it is operating against." }, + "skill": { + "description": "compare leader skill levels", + "is_trigger": true + }, "intel_yield_factor_on_capture": { "description": "Rate at which intel is extracted from this operative by an enemy country." }, "operative_captor": { "description": "returns the country tag that captured the operative" + }, + "logistics_skill_level": { + "description": "Compares logistics skill level of a unit leader.\nExample: logistics_skill_level > 5", + "is_trigger": true + }, + "planning_skill_level": { + "description": "Compares planning skill level of a unit leader.\nExample: planning_skill_level > 5", + "is_trigger": true + } + }, + "military_industrial_organization": { + "modifier": { + "description": "Value of the modifier stored in the military industrial organization.\nex: modifier@military_industrial_organization_research_bonus" + }, + "research_bonus": { + "description": "Research bonus of the military industrial organization when assigned to a research slot" + }, + "size": { + "description": "Size of the military industrial organization" + }, + "number_of_currently_assigned_tasks": { + "description": "Number of tasks the military industrial organization is currently assigned to" + }, + "funds": { + "description": "Funds of the military industrial organization" + }, + "max_task_capacity": { + "description": "Maximum task capacity of the military industrial organization." + }, + "number_of_unlocked_traits": { + "description": "Number of unlocked traits of the military industrial organization." + }, + "number_of_unused_trait_points": { + "description": "Number of unused trait points of the military industrial organization" } } }, @@ -7437,6 +10214,25 @@ "rendertype": { "description": "Reports what render backend is used" }, + "CrashReporter.SimulateCrash": { + "description": "Simulates a crash (resulting in the game exiting)." + }, + "CrashReporter.DeleteCrashData": { + "description": "Delete local crash dumps older than X days." + }, + "pops_account_login": { + "available_in_release_build": false, + "arguments": ["email", "password"], + "description": "Login to a POPS Account" + }, + "pops_account_logout": { + "available_in_release_build": false, + "description": "Login to a POPS Account" + }, + "pops_account_status": { + "available_in_release_build": false, + "description": "Show whether you are currently logged into POPS or not." + }, "add_mines": { "arguments": [""], "aliases": ["mines"], @@ -7457,9 +10253,10 @@ "aliases": ["rlog"], "description": "Toggles the random logs." }, - "save": { - "aliases": ["savegame"], - "description": "save a savegame." + "oos_dump": { + "available_in_release_build": false, + "aliases": ["oosdump"], + "description": "Generates an oos dump on demand for local client." }, "acclimatization": { "arguments": ["", ""], @@ -7477,10 +10274,6 @@ "debug": { "description": "Toggle debug mode on/off." }, - "ironman": { - "available_in_release_build": false, - "description": "Applies Ironman status to current game." - }, "deironman": { "available_in_release_build": false, "description": "Removes Ironman status from current game." @@ -7563,8 +10356,8 @@ }, "test_naval_move_danger": { "available_in_release_build": false, - "arguments": ["", ", "], - "description": "Tests if path between two region is blocked" + "arguments": ["", ""], + "description": "Tests if path between two regions is blocked for surface warships" }, "highlight_encirclements": { "description": "Toggle highlighting of detected encirclements" @@ -7696,6 +10489,10 @@ "aliases": ["humans"], "description": "Adds more humans" }, + "morehumanswithcountries": { + "arguments": ["num"], + "description": "Adds more humans and assigns them to the highest scoring countries available" + }, "window": { "arguments": ["Arguments: open/close", "window gui name"], "aliases": ["wnd"], @@ -7741,8 +10538,12 @@ "description": "Researches an technology from research slot or all." }, "research_on_icon_click": { + "aliases": ["roic"], "description": "Research a technology when clicking on technology tree icon" }, + "research_fast": { + "description": "Base cost of every technology is set to 1 RP" + }, "Agency.Instant": { "description": "Activates Operation.Instant, IntelNetwork.Instant, Agency.InstantSlotUnlock and Agency.Autocomplete" }, @@ -7789,14 +10590,6 @@ "resign": { "description": "Resign from the game" }, - "add_interest": { - "arguments": [""], - "description": "Add specified country tag to your interest" - }, - "remove_interest": { - "arguments": [""], - "description": "Removes specified country tag from your interest" - }, "add_diplo": { "description": "Adds diplomatic entroute" }, @@ -7828,6 +10621,12 @@ "ai": { "description": "Toggles the AI on or off" }, + "enable_ai": { + "description": "Enables the AI" + }, + "disable_ai": { + "description": "Disables the AI" + }, "human_ai": { "description": "Toggles AI for Human countries" }, @@ -7848,7 +10647,8 @@ "description": "Toggles debug display of normals/bounding boxes/collision" }, "savegame": { - "description": "Creates an savefile." + "aliases": ["save"], + "description": "Creates a save file." }, "savecheck": { "description": "Makes a savegame (Test_01), loads the savegame, makes a new savegame (Test_02). Those savegames should look the same." @@ -7911,6 +10711,9 @@ "available_in_release_build": false, "description": "Dump diplomatic action data to game log" }, + "debug_checkportraitssanity": { + "description": "Analyse all characters' portraits and write failures in error log" + }, "debug_assert": { "available_in_release_build": false, "description": "Toggles asserts on/off" @@ -8026,6 +10829,9 @@ "available_in_release_build": false, "description": "Enables popups for achievements to debug them" }, + "debug_custom_achievements": { + "description": "For testing custom achievements, clear completion status (delete files on cloud storage) and reload mod achievement files" + }, "moveunit": { "arguments": ["", ""], "description": "Moves a unit to a province" @@ -8057,6 +10863,12 @@ "weather": { "description": "Toggle weather simulation" }, + "enable_weather": { + "description": "Enable weather simulation" + }, + "disable_weather": { + "description": "Disable weather simulation" + }, "debug_air_vs_land": { "available_in_release_build": false, "aliases": ["dbg_cas"], @@ -8070,11 +10882,6 @@ "available_in_release_build": false, "description": "Add temp supply node" }, - "debug_validate_supply": { - "available_in_release_build": false, - "aliases": ["dbg_sply"], - "description": "Toggle debug validate supply cache." - }, "mapnames": { "description": "Toggle map names" }, @@ -8174,7 +10981,8 @@ }, "threat": { "arguments": ["threat amount"], - "description": "Adds or show thread level of player" + "aliases": ["tension"], + "description": "Adds or show threat level of player" }, "add_latest_equipment": { "arguments": ["equipment amount"], @@ -8188,7 +10996,7 @@ }, "pp": { "arguments": ["PP amount"], - "aliases": ["fuhrer_mana", "political_power"], + "aliases": ["political_power"], "description": "Gives political power to player" }, "fuel": { @@ -8323,6 +11131,10 @@ "ai_force_equipment": { "description": "Force the AI to only spend army XP on equipment design" }, + "pause_on_trigger": { + "description": "Pauses the game when trigger activates", + "argument_completion_support": true + }, "pause_in_hours": { "description": "Pauses the game after X hours have passed after command is called" }, @@ -8519,7 +11331,8 @@ "description": "print the role that would be deduced for the selected task force" }, "imgui": { - "description": "Controls ImGui UIs. See the sub commands." + "description": "Controls ImGui UIs. See the sub commands.", + "argument_completion_support": true }, "grow_intel_network": { "description": "Grow the intel network in the specified tag" @@ -8555,14 +11368,6 @@ "aliases": ["sel"], "description": "select object by id" }, - "reload_video_player": { - "available_in_release_build": false, - "description": "Reload video data in the video player and database" - }, - "reset_played_videos": { - "available_in_release_build": false, - "description": "Reset played videos" - }, "railwaygun": { "available_in_release_build": false, "aliases": ["rg"], @@ -8615,6 +11420,147 @@ }, "print_controllers": { "description": "Prints countries controlled by human players." + }, + "bop_show": { + "description": "Shows current country's active power balances." + }, + "bop_set": { + "arguments": [""], + "description": "Activates a power balance for the current country." + }, + "bop_remove": { + "arguments": [""], + "description": "Deactivates a power balance for the current country." + }, + "bop_add": { + "arguments": ["", ""], + "description": "Changes the value of the specified power balance." + }, + "bop_addmod": { + "arguments": ["", ""], + "description": "Adds static modifier to a power balance." + }, + "bop_rmmod": { + "arguments": ["", ""], + "description": "Removes static modifier from a power balance." + }, + "easy_decisions": { + "aliases": ["ezd"], + "description": "Toggles Easy Decisions Mode which makes all decisions with days_remove take only 1 day to be removed, and all decisions with cost not have any cost or cost trigger." + }, + "log_advisor_trait_errors": { + "description": "Logs all instances of unit leader advisors not having the corresponding unit leader traits." + }, + "deleteallairwings": { + "aliases": ["delallair"], + "description": "Delete all airwings." + }, + "ListIncorrectCenterOfRegions": { + "available_in_release_build": false, + "description": "List regions center point that is located within another region" + }, + "InternationalMarket.RequestPurchase": { + "arguments": ["", "", "", "", ""], + "description": "Request Equipment Purchase." + }, + "InternationalMarket.CancelPurchase": { + "arguments": ["", "", ""], + "description": "Cancel the purchase contract between the seller and the buyer" + }, + "InternationalMarket.ReserveToMarketStockpile": { + "arguments": ["", ""], + "description": "Reserve equipment from main stockpile to market stockpile" + }, + "InternationalMarket.ReleaseFromMarketStockpile": { + "arguments": ["", ""], + "description": "Release equipment to main stockpile from market stockpile" + }, + "add_cic_bank": { + "arguments": [""], + "aliases": ["stonks", "cic", "bank"], + "description": "Add CIC to the CIC bank (negative value subtracts)" + }, + "InternationalMarket.SetPriceLevel": { + "arguments": ["", ""], + "description": "Sets the price level for the given equipment in the Market Stockpile" + }, + "InternationalMarket.AddSubsidyForTags": { + "arguments": ["", "", ""], + "description": "Add a Equipment Subsidy to the player's international market." + }, + "InternationalMarket.AddSubsidyForTrigger": { + "arguments": ["", "", " "], + "description": "Add a Equipment Subsidy to the player's international market." + }, + "InternationalMarket.Dev.SetMarketRequestAutomation": { + "arguments": ["", "", ""], + "description": "Set the market requests automation state" + }, + "AddFunds": { + "arguments": [" (optional)", " (optional)"], + "aliases": ["mio.AddFunds", "IndustrialOrganisation.AddFunds"], + "description": "\"Add funds to one or all Military Industrial Organisations\nex:\nAddFunds org_token 2000\nAddFunds org_token // default added funds is NDefines::NIndustrialOrganisation::FUNDS_FOR_SIZE_UP\nAddFunds 2000 // Funds added to all the player's MIOs\nAddFunds // default funds amount added to all the player's MIOs\"", + "argument_completion_support": true + }, + "AddTaskCapacity": { + "arguments": [" (optional)", " (optional)"], + "aliases": ["mio.AddTaskCapacity", "IndustrialOrganisation.AddTaskCapacity"], + "description": "\"Add task capacity to one or all Military Industrial Organisations.\nValue can be negative but final task capacity will be capped at 0.\nex:\nAddTaskCapacity org_token 2\nAddTaskCapacity org_token // adds 1 capacity\nAddTaskCapacity 2 // adds input capacity to all the player's MIOs\nAddTaskCapacity // adds 1 capacity to all the player's MIOs\"", + "argument_completion_support": true + }, + "AddSize": { + "arguments": [" (optional)", " (optional)"], + "aliases": ["mio.AddSize", "IndustrialOrganisation.AddSize"], + "description": "\"Add sizes to one or all Military Industrial Organisations.\nex:\nAddSize org_token 2\nAddSize org_token // adds 1 size\nAddSize 2 // adds input size to all the player's MIOs\nAddSize // adds 1 size to all the player's MIOs\"", + "argument_completion_support": true + }, + "social_debuginfo": { + "available_in_release_build": false, + "description": "Print debug info about the social layer" + }, + "social_joinroom": { + "available_in_release_build": false, + "arguments": ["Context Index", "Room Name", "Nick Name"], + "description": "Join a chat room using the given social context" + }, + "social_sendmessage": { + "available_in_release_build": false, + "arguments": ["Context Index", "Room Name", "Message"], + "description": "Send a message to a chat room." + }, + "social_addfriend": { + "available_in_release_build": false, + "arguments": ["Context Index", "Account ID"], + "description": "Add a friend to friends list" + }, + "collaboration": { + "description": "Adds collaborations against selected country. Right click to select a country and use \"collaboration 0.3\"" + }, + "add_fake_armies": { + "description": "Creates fake intel armies for the player" + }, + "retire_country_leader": { + }, + "clear_tech": { + }, + "add_tech": { + }, + "spawn_3D_models": { + }, + "add_subsidies": { + }, + "add_subsidies_second": { + }, + "tweakergui": { + "description": "Spawns a tweaker GUI" + }, + "reload": { + "arguments": ["file name"], + "description": "Reloads assets", + "argument_completion_support": true + }, + "particle_editor": { + "description": "Spawns a particle editor" } }, "tweakables": { @@ -8639,10 +11585,6 @@ "Focus.IgnorePrerequisites": { "type": "bool" }, - "Debug.DeleteUnitEachTick": { - "available_in_release_build": false, - "type": "bool" - }, "BattleSound.PlayBackground": { "available_in_release_build": false, "type": "bool" @@ -8651,9 +11593,6 @@ "available_in_release_build": false, "type": "bool" }, - "Decision.NoChecks": { - "type": "bool" - }, "Draw.Objects": { "available_in_release_build": false, "type": "bool" @@ -8675,18 +11614,7 @@ "type": "bool" }, "ShowBorderTypes": { - "type": "bool" - }, - "resistance_system": { - "type": "bool" - }, - "Agency.AutoComplete": { - "type": "bool" - }, - "Agency.KeepExcessOperatives": { - "type": "bool" - }, - "Agency.InstantSlotUnlock": { + "available_in_release_build": false, "type": "bool" }, "Draw.Postfx": { @@ -8733,22 +11661,49 @@ "available_in_release_build": false, "type": "bool" }, + "CounterIntelligence.TestShieldColors": { + "type": "bool" + }, "supply_debug.show_debug_lines_rail": { + "available_in_release_build": false, "type": "bool" }, "supply_debug.show_debug_lines_train": { + "available_in_release_build": false, "type": "bool" }, "supply_debug.show_debug_lines_supply": { + "available_in_release_build": false, "type": "bool" }, "supply_debug.show_debug_rivers": { + "available_in_release_build": false, "type": "bool" }, "ShowTechBonus": { + "available_in_release_build": false, "type": "bool" }, - "CounterIntelligence.TestShieldColors": { + "Debug.DeleteUnitEachTick": { + "available_in_release_build": false, + "type": "bool" + }, + "Decision.NoChecks": { + "type": "bool" + }, + "Decision.FastRemove": { + "type": "bool" + }, + "resistance_system": { + "type": "bool" + }, + "Agency.AutoComplete": { + "type": "bool" + }, + "Agency.KeepExcessOperatives": { + "type": "bool" + }, + "Agency.InstantSlotUnlock": { "type": "bool" }, "ApplicationUtils.Update": { From c28a5d1646a035aae571c5426f6cff7298cb1ab8 Mon Sep 17 00:00:00 2001 From: BiscuitCookies <25040791+BiscuitCookies@users.noreply.github.com> Date: Thu, 7 Mar 2024 20:51:43 +0100 Subject: [PATCH 59/72] toa update --- Config/common/ai_strategy.cwt | 6 ++++++ Config/common/equipment.cwt | 2 ++ Config/common/ideologies.cwt | 11 +++++++++++ Config/shared_enums.cwt | 1 + Config/triggers_toa.cwt | 10 ++++++++++ Config/variables.cwt | 12 ++++++++++++ 6 files changed, 42 insertions(+) create mode 100644 Config/triggers_toa.cwt diff --git a/Config/common/ai_strategy.cwt b/Config/common/ai_strategy.cwt index b350e195..c1af8137 100644 --- a/Config/common/ai_strategy.cwt +++ b/Config/common/ai_strategy.cwt @@ -226,6 +226,12 @@ alias[ai_strategy_rule:ai_strategy] = { id = int value = int } +alias[ai_strategy_rule:ai_strategy] = { + type = research_weight_factor + id = + ### Factor the ai_will_do value for the specified technology with this. (50 means 50 % increase, -30 means 30 % decrease, etc) + value = int +} alias[ai_strategy_rule:ai_strategy] = { type = scorched_earth_prio id = scope[country] diff --git a/Config/common/equipment.cwt b/Config/common/equipment.cwt index f6a8b982..234cbf9b 100644 --- a/Config/common/equipment.cwt +++ b/Config/common/equipment.cwt @@ -255,6 +255,8 @@ equipment = { } subtype[designable_equip] = { + ## cardinality = 0..1 + is_frame = bool ## cardinality = 0..1 ### List of module slots and their details. module_slots = { diff --git a/Config/common/ideologies.cwt b/Config/common/ideologies.cwt index b604f0db..c1d0779f 100644 --- a/Config/common/ideologies.cwt +++ b/Config/common/ideologies.cwt @@ -22,6 +22,17 @@ ideology = { ### won't be assigned to randomly generated country leaders ## cardinality = 0..1 can_be_randomly_selected = bool + + ## cardinality = 0..1 + color = { + ## cardinality = 3..3 + int + } + ## cardinality = 0..1 + color = { + ## cardinality = 3..3 + float + } } } diff --git a/Config/shared_enums.cwt b/Config/shared_enums.cwt index d215c4d6..10914242 100644 --- a/Config/shared_enums.cwt +++ b/Config/shared_enums.cwt @@ -11,6 +11,7 @@ enums = { "No Step Back" "By Blood Alone" "Arms Against Tyranny" + "Trial of Allegiance" } enum[hours_days_months] = { diff --git a/Config/triggers_toa.cwt b/Config/triggers_toa.cwt new file mode 100644 index 00000000..facffbce --- /dev/null +++ b/Config/triggers_toa.cwt @@ -0,0 +1,10 @@ +### Check number of months the country has been at war +## scope = country +alias[trigger:longest_war_length] = int + +### Check number of months the country has been at war with X for Y months. +## scope = country +alias[trigger:war_length_with] = { + tag = enum[country_tags] + months = int +} diff --git a/Config/variables.cwt b/Config/variables.cwt index 5dea2696..698384d3 100644 --- a/Config/variables.cwt +++ b/Config/variables.cwt @@ -248,6 +248,18 @@ values = { ### Maximum manpower of country in thousands. max_manpower_k + ### Deployed airforce manpower of country in thousands. + deployed_airforce_manpower_k + + ### Deployed navy manpower of country in thousands. + deployed_navy_manpower_k + + ### Deployed army manpower of country in thousands. + deployed_army_manpower_k + + ### Total deployed manpower of country in thousands. + deployed_total_manpower_k + ### A modifier stored in country scope. modifier@enum[modifier] From 97fb4c9f901e9c02bcbdd9b568cb3cac6c1b7d34 Mon Sep 17 00:00:00 2001 From: BiscuitCookies <25040791+BiscuitCookies@users.noreply.github.com> Date: Thu, 7 Mar 2024 20:51:47 +0100 Subject: [PATCH 60/72] Update effects_nsb.cwt --- Config/effects_nsb.cwt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Config/effects_nsb.cwt b/Config/effects_nsb.cwt index c2373eab..24dcbc1e 100644 --- a/Config/effects_nsb.cwt +++ b/Config/effects_nsb.cwt @@ -488,7 +488,7 @@ alias[effect:retire_character] = value[global_event_target] alias[effect:retire_character] = scope[character] ### renames character -## scope = { character } +## scope = { character unit_leader } alias[effect:set_character_name] = localisation ### renames character ## scope = { country character } From 43951f63a3da4aaacb65e5438435471cb21d0b47 Mon Sep 17 00:00:00 2001 From: BiscuitCookies <25040791+BiscuitCookies@users.noreply.github.com> Date: Thu, 7 Mar 2024 22:14:31 +0100 Subject: [PATCH 61/72] some documentation --- Config/common/consolidated_ai.cwt | 6 +++++- Config/common/military_industrial_organizations.cwt | 3 +++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/Config/common/consolidated_ai.cwt b/Config/common/consolidated_ai.cwt index 0f18585f..a6e860ce 100644 --- a/Config/common/consolidated_ai.cwt +++ b/Config/common/consolidated_ai.cwt @@ -150,6 +150,7 @@ ai_peace = { } ai_template = { + ### The role token that this role-level template entry targets. These tokens are defined by script and are targeted by the 'role_ratio' AI strategy. (This is technically a list but AI is bad at handling AI templates that target multiple roles, so sticking to just one is recommended.) roles = { ## cardinality = ~1..inf value_set[ai_roles] @@ -168,8 +169,11 @@ ai_template = { enum[country_tags] } + ### Deprecated but currently necessary. This parameter has no significant effect, but hasn't been removed yet. match_to_count = float - + + ### The role-level upgrade prio is used for weighted-random selection when the AI chooses which role to upgrade templates for. Set it to zero to prevent the AI from spending XP on upgrading templates for this role. + ### Example: If three role-level templates [A, B, C] have upgrade prio [1, 2, 1] respectively, then the probabilities for upgrading each template is [25%, 50%, 25%] respectively. upgrade_prio = { enum[base_factor] = float alias_name[modifier_rule] = alias_match_left[modifier_rule] diff --git a/Config/common/military_industrial_organizations.cwt b/Config/common/military_industrial_organizations.cwt index 27825144..4a77b7db 100644 --- a/Config/common/military_industrial_organizations.cwt +++ b/Config/common/military_industrial_organizations.cwt @@ -17,6 +17,9 @@ military_industrial_organization = { ### Else use GFX_idea_unknown ## cardinality = 0..1 icon = + ### gfx key of the background image for the Details window,if not specified, one of standard backgrounds will be used based on supported equipment types + ## cardinality = 0..1 + background = ## cardinality = 0..1 include = ## replace_scope = { this = country } From e6dba550e54dd3f55bc3d0c5a3c22ebe7c6ed8d3 Mon Sep 17 00:00:00 2001 From: BiscuitCookies <25040791+BiscuitCookies@users.noreply.github.com> Date: Mon, 11 Mar 2024 14:06:35 +0100 Subject: [PATCH 62/72] removed and added modifiers in toa patch --- Config/modifiers.cwt | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/Config/modifiers.cwt b/Config/modifiers.cwt index 32b6b74f..00d376c6 100644 --- a/Config/modifiers.cwt +++ b/Config/modifiers.cwt @@ -103,17 +103,11 @@ modifiers = { air_ace_generation_chance_factor = air air_advisor_cost_factor = air air_agility_factor = air - air_air_superiority_agility_factor = air - air_air_superiority_attack_factor = air - air_air_superiority_defence_factor = air air_attack_factor = air air_bombing_targetting = air air_carrier_night_penalty_reduction_factor = air air_cas_efficiency = air air_cas_present_factor = air - air_close_air_support_agility_factor = air - air_close_air_support_attack_factor = air - air_close_air_support_defence_factor = air air_close_air_support_org_damage_factor = air air_defence_factor = air air_detection = air @@ -121,9 +115,6 @@ modifiers = { air_fuel_consumption_factor = air air_home_defence_factor = air air_intercept_efficiency = air - air_interception_agility_factor = air - air_interception_attack_factor = air - air_interception_defence_factor = air air_interception_detect_factor = air air_manpower_requirement_factor = air air_maximum_speed_factor = air @@ -131,13 +122,8 @@ modifiers = { air_mission_xp_gain_factor = air air_nav_efficiency = air air_night_penalty = air - air_paradrop_agility_factor = air - air_paradrop_attack_factor = air - air_paradrop_defence_factor = air air_power_projection_factor = air air_range_factor = air - air_strategic_bomber_agility_factor = air - air_strategic_bomber_attack_factor = air air_strategic_bomber_bombing_factor = air air_strategic_bomber_defence_factor = air air_strategic_bomber_night_penalty = air @@ -162,6 +148,8 @@ modifiers = { naval_strike_targetting_factor = air navy_weather_penalty = air strategic_bomb_visibility = air + ground_attack_factor = air + paratrooper_aa_defense = air # army acclimatization_cold_climate_gain_factor = army From 84007770e52c474c63b0a3f7220069b407678c51 Mon Sep 17 00:00:00 2001 From: BiscuitCookies <25040791+BiscuitCookies@users.noreply.github.com> Date: Mon, 11 Mar 2024 14:53:56 +0100 Subject: [PATCH 63/72] adding more merge optimizations --- Config/settings.cwt | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/Config/settings.cwt b/Config/settings.cwt index 0e0413e8..d3f58c8b 100644 --- a/Config/settings.cwt +++ b/Config/settings.cwt @@ -1,18 +1,46 @@ list_merge_optimisations = { + all_owned_state = { all_state is_owned_by } any_owned_state = { any_state is_owned_by } every_owned_state = { every_state limit is_owned_by } + random_owned_state = { random_state limit is_owned_by } + all_controlled_state = { all_state is_controlled_by } any_controlled_state = { any_state is_controlled_by } every_controlled_state = { every_state limit is_controlled_by } + random_controlled_state = { random_state limit is_controlled_by } + all_core_state = { all_state is_core_of } any_core_state = { any_state is_core_of } every_core_state = { every_state limit is_core_of } + random_core_state = { random_state limit is_core_of } + all_country_with_original_tag = { all_country limit original_tag } + any_country_with_original_tag = { any_country limit original_tag } every_country_with_original_tag = { every_country limit original_tag } + random_country_with_original_tag = { every_country limit original_tag } + all_subject_country = { all_country is_subject_of } any_subject_country = { any_country is_subject_of } every_subject_country = { every_country limit is_subject_of } + random_subject_country = { random_country limit is_subject_of } + all_neighbor_country = { all_country is_neighbor_of } any_neighbor_country = { any_country is_neighbor_of } every_neighbor_country = { every_country limit is_neighbor_of } + random_neighbor_country = { random_country limit is_neighbor_of } + + all_unit_leader = { all_character limit is_unit_leader } + any_unit_leader = { any_character limit is_unit_leader } + every_unit_leader = { every_character limit is_unit_leader } + random_unit_leader = { random_character limit is_unit_leader } + + all_army_leader = { all_character limit is_army_leader } + any_army_leader = { any_character limit is_army_leader } + every_army_leader = { every_character limit is_army_leader } + random_army_leader = { random_character limit is_army_leader } + + all_navy_leader = { all_character limit is_navy_leader } + any_navy_leader = { any_character limit is_navy_leader } + every_navy_leader = { every_character limit is_navy_leader } + random_navy_leader = { random_character limit is_navy_leader } } From 0c0db656a655d4f86c7ea81039d547f6f6e4fc63 Mon Sep 17 00:00:00 2001 From: BiscuitCookies <25040791+BiscuitCookies@users.noreply.github.com> Date: Mon, 11 Mar 2024 14:55:38 +0100 Subject: [PATCH 64/72] small tweaks --- Config/common/military_industrial_organizations.cwt | 12 ++++++------ Config/effects.cwt | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Config/common/military_industrial_organizations.cwt b/Config/common/military_industrial_organizations.cwt index 4a77b7db..e3499193 100644 --- a/Config/common/military_industrial_organizations.cwt +++ b/Config/common/military_industrial_organizations.cwt @@ -239,8 +239,8 @@ military_industrial_organization = { ### Defines where the trait will be positioned in the tree grid. x=0 y=0 is the top left position. ### Do not reuse the same position twice. position = { - x = float - y = float + x = int[-9..9] + y = int[-inf..inf] } ### By default position is the absolute coordinate in the tree grid. ### If relative_position_id is provided, it becomes a delta applied to the input trait position @@ -388,8 +388,8 @@ military_industrial_organization = { ### Defines where the trait will be positioned in the tree grid. x=0 y=0 is the top left position. ### Do not reuse the same position twice. position = { - x = float - y = float + x = int[-9..9] + y = int[-inf..inf] } ### By default position is the absolute coordinate in the tree grid. ### If relative_position_id is provided, it becomes a delta applied to the input trait position @@ -504,8 +504,8 @@ military_industrial_organization = { ### Do not reuse the same position twice. ## cardinality = 0..1 position = { - x = float - y = float + x = int[-9..9] + y = int[-inf..inf] } ### By default position is the absolute coordinate in the tree grid. ### If relative_position_id is provided, it becomes a delta applied to the input trait position diff --git a/Config/effects.cwt b/Config/effects.cwt index 8113f2bd..aabf7dc8 100644 --- a/Config/effects.cwt +++ b/Config/effects.cwt @@ -1668,7 +1668,7 @@ alias[effect:create_field_marshal] = { ### Creates a corps commander for country in scope. ## error_if_only_match = This is an deprecated command. use add_corps_commander_role instead when possible. The created corps commander will not be able to have a portrait if assigned to be a minister via officer corps, causing errors. -## severity = warning +## severity = info ## scope = country alias[effect:create_corps_commander] = { ## cardinality = 0..1 From 99b564c424c62a236e8e01a9138ed22461b48763 Mon Sep 17 00:00:00 2001 From: AngriestBird Date: Mon, 11 Mar 2024 17:29:51 -0400 Subject: [PATCH 65/72] Added random_country_division/add_division_comander_xp --- Config/effects_new.cwt | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Config/effects_new.cwt b/Config/effects_new.cwt index 5f3caa9f..b55353a7 100644 --- a/Config/effects_new.cwt +++ b/Config/effects_new.cwt @@ -499,6 +499,18 @@ alias[effect:random_country_with_original_tag] = { alias_name[effect] = alias_match_left[effect] } +random_country_division - Executes children effects on a random division that fulfill the "limit" trigger. tooltip=key can be added to override tooltip title +Supported scopes: country +###Executes children effects on a random division that full the "limit" trigger. tooltip=key can be added to override to override tooltip title +## scopes = { COUNTRY } +alias[effect:random_country_division] = { + ## cardinality = 0..1 + limit = { + alias_name[trigger] = alias_match_left[trigger] + } + alias_name[effect] = alias_match_left[effect] +} + ###Executes children effects on a all countries with original tag. tooltip=key can be defined to override tooltip title. ## scopes = { any } @@ -1191,3 +1203,7 @@ alias[effect:set_temp_variable_to_random] = { ## cardinality = 0..1 integer = bool } + +###Add divisional commander xp to unit +## scopes = { any } +alias[effect:add_divisional_commander_xp] = int \ No newline at end of file From 0110959c88efcd29b590a9dda3a7993e442a35f1 Mon Sep 17 00:00:00 2001 From: Pelmen323 Date: Tue, 12 Mar 2024 21:04:11 +0400 Subject: [PATCH 66/72] Fix has_mio_flag trigger --- Config/triggers_aat.cwt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Config/triggers_aat.cwt b/Config/triggers_aat.cwt index 0d862540..f154fdf6 100644 --- a/Config/triggers_aat.cwt +++ b/Config/triggers_aat.cwt @@ -63,7 +63,7 @@ alias[trigger:num_planes_stationed_in_regions] = { ### Checks mio flag ## scope = military_industrial_organization -alias[effect:has_mio_flag] = { +alias[trigger:has_mio_flag] = { flag = value[mio_flag] ## cardinality = 0..1 value = int From 1a8932160812e759a4334210a7f61b09fb427a20 Mon Sep 17 00:00:00 2001 From: Pelmen323 Date: Tue, 12 Mar 2024 22:05:52 +0400 Subject: [PATCH 67/72] TOA compatibility update: Added AI strategy research_weight_factor Added variable values for deployed_army_manpower_k, deployed_navy_manpower_k, deployed_airforce_manpower_k, and deployed_army_manpower_k Added optional 'is_frame' argument to equipment definitions to let modders define fully designed equipment without the game thinking it's a frame. Added longest_war_length and war_length_with triggers to allow checking how long a nation has been at war --- Config/common/ai_strategy.cwt | 6 +++++- Config/common/equipment.cwt | 4 ++++ Config/triggers.cwt | 4 ++++ Config/triggers_aat.cwt | 12 ++++++++++++ Config/variables.cwt | 9 +++++++++ 5 files changed, 34 insertions(+), 1 deletion(-) diff --git a/Config/common/ai_strategy.cwt b/Config/common/ai_strategy.cwt index 141b89b0..cb631654 100644 --- a/Config/common/ai_strategy.cwt +++ b/Config/common/ai_strategy.cwt @@ -221,7 +221,7 @@ alias[ai_strategy_rule:ai_strategy] = { value = int } alias[ai_strategy_rule:ai_strategy] = { - type = research_tech + type = enum[research_strats] id = id = int value = int @@ -503,4 +503,8 @@ enums = { enum[market_seller_strats] = { equipment_market_buy } + enum[research_strats] = { + research_tech + research_weight_factor + } } diff --git a/Config/common/equipment.cwt b/Config/common/equipment.cwt index 278e39e2..369e963a 100644 --- a/Config/common/equipment.cwt +++ b/Config/common/equipment.cwt @@ -109,6 +109,10 @@ equipment = { ## cardinality = 0..1 one_use_only = bool + ### Default yes for modular equipment, not applicable for non-modular equipment. Frame refers to tank chassis, ship hulls, and airplane frames. + ## cardinality = 0..1 + is_frame = bool + ## cardinality = 0..1 ### Determines if this equipment is available without unlocking from a technology. active = bool diff --git a/Config/triggers.cwt b/Config/triggers.cwt index 6b651fde..283a51ff 100644 --- a/Config/triggers.cwt +++ b/Config/triggers.cwt @@ -1697,6 +1697,8 @@ alias[trigger:multiply_temp_variable] = { ## scope = any alias[trigger:divide_temp_variable] = { value_set[variable] = variable_field_32 + ## cardinality = 0..1 + tooltip = localisation } ### Divies a temporary variable by a value or another variable. @@ -1704,6 +1706,8 @@ alias[trigger:divide_temp_variable] = { alias[trigger:divide_temp_variable] = { var = value_set[variable] value = variable_field_32 + ## cardinality = 0..1 + tooltip = localisation } ### Sets a temporary variable to a value or another variable. diff --git a/Config/triggers_aat.cwt b/Config/triggers_aat.cwt index f154fdf6..ca31489c 100644 --- a/Config/triggers_aat.cwt +++ b/Config/triggers_aat.cwt @@ -70,3 +70,15 @@ alias[trigger:has_mio_flag] = { ## cardinality = 0..1 days = int } + +### How long a nation has been at war (in months) +## scope = country +alias[trigger:longest_war_length] = int + +### How long a nation has been at war with targer +## scope = country +alias[trigger:war_length_with] = { + tag = enum[country_tags] + tag = scope[country] + months = int +} diff --git a/Config/variables.cwt b/Config/variables.cwt index e702d831..349a9476 100644 --- a/Config/variables.cwt +++ b/Config/variables.cwt @@ -218,6 +218,15 @@ values = { ### Maximum manpower of country in thousands. max_manpower_k + ### Deployed army manpower of country in thousands. + deployed_total_manpower_k + + ### Deployed navy manpower of country in thousands. + deployed_navy_manpower_k + + ### Deployed air manpower of country in thousands. + deployed_airforce_manpower_k + ### A modifier stored in country scope. modifier@enum[modifier] From ce1feebee95e0224853d84952fed1215f4e0db8c Mon Sep 17 00:00:00 2001 From: Pelmen323 Date: Tue, 12 Mar 2024 22:06:14 +0400 Subject: [PATCH 68/72] MIO fixes - allow variables to be used with mio effects --- Config/effects_aat.cwt | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/Config/effects_aat.cwt b/Config/effects_aat.cwt index cde716f1..6eeefb3a 100644 --- a/Config/effects_aat.cwt +++ b/Config/effects_aat.cwt @@ -35,11 +35,11 @@ alias[effect:add_mio_funds_gain_factor] = variable_field ### Increase MIO size (level) ## scope = military_industrial_organization -alias[effect:add_mio_size] = int +alias[effect:add_mio_size] = int_variable_field ### Increase MIO research bonus ## scope = military_industrial_organization -alias[effect:add_mio_research_bonus] = float +alias[effect:add_mio_research_bonus] = variable_field ### Complete specific MIO trait. Make sure the trait is actually available for current MIO ## scope = military_industrial_organization @@ -47,11 +47,11 @@ alias[effect:complete_mio_trait] = value[mio_token] ### Change MIO political power assign cost to research tech (base - 0.1 pp daily) ## scope = military_industrial_organization -alias[effect:add_mio_design_team_assign_cost] = float +alias[effect:add_mio_design_team_assign_cost] = variable_field ### Has no effect? ## scope = military_industrial_organization -alias[effect:add_mio_design_team_change_cost] = float +alias[effect:add_mio_design_team_change_cost] = variable_field ### Add MIO funds. Level 1 -> Level 2 to costs 1k, costs increase per each level ## scope = military_industrial_organization @@ -127,10 +127,22 @@ alias[effect:modify_mio_flag] = { ## scope = military_industrial_organization alias[effect:clr_mio_flag] = value[mio_flag] -### Modify mio funds gain factor +### Set mio funds gain factor ## scope = military_industrial_organization -alias[effect:set_mio_funds_gain_factor] = float +alias[effect:set_mio_funds_gain_factor] = variable_field -### Modify mio research bonus +### Set mio research bonus ## scope = military_industrial_organization -alias[effect:set_mio_research_bonus] = float +alias[effect:set_mio_research_bonus] = variable_field + +### Set mio design team assign cost +## scope = military_industrial_organization +alias[effect:set_mio_design_team_assign_cost] = variable_field + +### Give market access to x +## scope = country +alias[effect:give_market_access] = enum[country_tags] + +### Give market access to x +## scope = country +alias[effect:give_market_access] = scope[country] From 8c8d08a9a17da495f41cd1e019ec306dd8f68ba6 Mon Sep 17 00:00:00 2001 From: Pelmen323 Date: Tue, 12 Mar 2024 22:08:37 +0400 Subject: [PATCH 69/72] has_mio_flag - add one-liner trigger --- Config/triggers_aat.cwt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Config/triggers_aat.cwt b/Config/triggers_aat.cwt index ca31489c..e84974f1 100644 --- a/Config/triggers_aat.cwt +++ b/Config/triggers_aat.cwt @@ -61,6 +61,10 @@ alias[trigger:num_planes_stationed_in_regions] = { } } +### Checks mio flag +## scope = military_industrial_organization +alias[trigger:has_mio_flag] = value[mio_flag] + ### Checks mio flag ## scope = military_industrial_organization alias[trigger:has_mio_flag] = { From 9a57a3769df86830c21acc7a5508bb75101e9ab7 Mon Sep 17 00:00:00 2001 From: Alpinia Date: Wed, 13 Mar 2024 17:53:07 -0300 Subject: [PATCH 70/72] Added ToA to the DLC enum --- Config/shared_enums.cwt | 1 + 1 file changed, 1 insertion(+) diff --git a/Config/shared_enums.cwt b/Config/shared_enums.cwt index d215c4d6..10914242 100644 --- a/Config/shared_enums.cwt +++ b/Config/shared_enums.cwt @@ -11,6 +11,7 @@ enums = { "No Step Back" "By Blood Alone" "Arms Against Tyranny" + "Trial of Allegiance" } enum[hours_days_months] = { From e8d2ade3ffac7666f68b16d90679d1b0633f1add Mon Sep 17 00:00:00 2001 From: Alpinia Date: Wed, 13 Mar 2024 17:56:33 -0300 Subject: [PATCH 71/72] Added set_occupation_law and support for default_law in set_occupation_law_where_available --- Config/effects_new.cwt | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/Config/effects_new.cwt b/Config/effects_new.cwt index b55353a7..514f9a5c 100644 --- a/Config/effects_new.cwt +++ b/Config/effects_new.cwt @@ -1138,8 +1138,20 @@ alias[effect:start_peace_conference] = { score_factor = float } -### Sets specific occupation law where available -## scopes = { country } +### Sets the occupation law for an occupied country, occupied state, or the default occupation law of an occupying country. +## scope = { country state } +alias[effect:set_occupation_law] = default_law + +### Sets the occupation law for an occupied country, occupied state, or the default occupation law of an occupying country. +## scope = { country state } +alias[effect:set_occupation_law] = + +### Sets the occupation law for an occupied country, occupied state, or the default occupation law of an occupying country. What differentiates this effect is that if the law is not available on the given level it will attempt to set it on a level below. I.e. if the law can't be set as the default law it will try to set it on each country, and if that fails it will try to set it on each state. Any existing law overrides below a level at which a law is successfully set will be cleared. +## scope = { country state } +alias[effect:set_occupation_law_where_available] = default_law + +### Sets the occupation law for an occupied country, occupied state, or the default occupation law of an occupying country. What differentiates this effect is that if the law is not available on the given level it will attempt to set it on a level below. I.e. if the law can't be set as the default law it will try to set it on each country, and if that fails it will try to set it on each state. Any existing law overrides below a level at which a law is successfully set will be cleared. +## scope = { country state } alias[effect:set_occupation_law_where_available] = ###Randomize a temporary variable. From 98113cb1bf43812d5753f9ea937b31d3a483ce3a Mon Sep 17 00:00:00 2001 From: BiscuitCookies <25040791+BiscuitCookies@users.noreply.github.com> Date: Thu, 14 Mar 2024 16:24:59 +0100 Subject: [PATCH 72/72] reordered on_actions and added documentation --- Config/on_actions.cwt | 1068 +++++++++++++++++++++-------------------- 1 file changed, 540 insertions(+), 528 deletions(-) diff --git a/Config/on_actions.cwt b/Config/on_actions.cwt index 03d6afe4..cb556fe8 100644 --- a/Config/on_actions.cwt +++ b/Config/on_actions.cwt @@ -2,111 +2,110 @@ types = { type[on_action] = { path = "game/common/on_actions" } - ## starts_with = on_daily_ - type[on_action_daily] = { - path = "game/common/on_actions" - skip_root_key = on_actions - starts_with = "on_daily_" - } - ## starts_with = on_weekly_ - type[on_action_weekly] = { + ## type_key_filter = on_startup + type[on_startup] = { path = "game/common/on_actions" skip_root_key = on_actions - starts_with = "on_weekly_" } - ## starts_with = on_monthly_ - type[on_action_monthly] = { + ## type_key_filter = on_daily + type[on_daily] = { path = "game/common/on_actions" skip_root_key = on_actions - starts_with = "on_monthly_" } - ## type_key_filter = on_new_term_election - type[on_new_term_election] = { + ## starts_with = on_daily_ + type[on_action_daily] = { path = "game/common/on_actions" skip_root_key = on_actions + starts_with = "on_daily_" } - ## type_key_filter = on_ace_promoted - type[on_ace_promoted] = { + ## type_key_filter = on_weekly + type[on_weekly] = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_aces_killed_each_other - type[on_aces_killed_each_other] = { + ## starts_with = on_weekly_ + type[on_action_weekly] = { path = "game/common/on_actions" skip_root_key = on_actions + starts_with = "on_weekly_" } - ## type_key_filter = on_ace_killed_by_ace - type[on_ace_killed_by_ace] = { + ## type_key_filter = on_monthly + type[on_monthly] = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_ace_killed_other_ace - type[on_ace_killed_other_ace] = { + ## starts_with = on_monthly_ + type[on_action_monthly] = { path = "game/common/on_actions" skip_root_key = on_actions + starts_with = "on_monthly_" } - ## type_key_filter = on_ace_killed - type[on_ace_killed] = { + + + ## type_key_filter = on_stage_coup + type[on_stage_coup] = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_ace_killed_on_accident - type[on_ace_killed_on_accident] = { + ## type_key_filter = on_coup_succeeded + type[on_coup_succeeded] = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_non_ace_killed_other_ace - type[on_non_ace_killed_other_ace] = { + ## type_key_filter = on_government_change + type[on_government_change] = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_justifying_wargoal_pulse - type[on_justifying_wargoal_pulse] = { + ## type_key_filter = on_ruling_party_change + type[on_ruling_party_change] = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_wargoal_expire - type[on_wargoal_expire] = { + ## type_key_filter = on_new_term_election + type[on_new_term_election] = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_nuke_drop - type[on_nuke_drop] = { + ## type_key_filter = on_peaceconference_ended + type[on_peaceconference_ended] = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_border_war_lost - type[on_border_war_lost] = { + ## type_key_filter = on_peaceconference_started + type[on_peaceconference_started] = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_leave_faction - type[on_leave_faction] = { + + + ## type_key_filter = on_send_volunteers + type[on_send_volunteers] = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_create_faction - type[on_create_faction] = { + ## type_key_filter = on_border_war_lost + type[on_border_war_lost] = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_offer_join_faction - type[on_offer_join_faction] = { + ## type_key_filter = on_war_relation_added + type[on_war_relation_added] = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_join_faction - type[on_join_faction] = { + ## type_key_filter = on_declare_war + type[on_declare_war] = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_declare_war - type[on_declare_war] = { + ## type_key_filter = on_war + type[on_war] = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_faction_formed - type[on_faction_formed] = { + ## type_key_filter = on_peace + type[on_peace] = { path = "game/common/on_actions" skip_root_key = on_actions } @@ -125,18 +124,13 @@ types = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_government_change - type[on_government_change] = { - path = "game/common/on_actions" - skip_root_key = on_actions - } - ## type_key_filter = on_naval_invasion - type[on_naval_invasion] = { + ## type_key_filter = on_annex + type[on_annex] = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_coup_succeeded - type[on_coup_succeeded] = { + ## type_key_filter = on_civil_war_end_before_annexation + type[on_civil_war_end_before_annexation] = { path = "game/common/on_actions" skip_root_key = on_actions } @@ -150,28 +144,8 @@ types = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_release_as_puppet - type[on_release_as_puppet] = { - path = "game/common/on_actions" - skip_root_key = on_actions - } - ## type_key_filter = on_annex - type[on_annex] = { - path = "game/common/on_actions" - skip_root_key = on_actions - } - ## type_key_filter = on_subject_free - type[on_subject_free] = { - path = "game/common/on_actions" - skip_root_key = on_actions - } - ## type_key_filter = on_subject_autonomy_level_change - type[on_subject_autonomy_level_change] = { - path = "game/common/on_actions" - skip_root_key = on_actions - } - ## type_key_filter = on_subject_annexed - type[on_subject_annexed] = { + ## type_key_filter = on_liberate + type[on_liberate] = { path = "game/common/on_actions" skip_root_key = on_actions } @@ -180,13 +154,8 @@ types = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_peaceconference_ended - type[on_peaceconference_ended] = { - path = "game/common/on_actions" - skip_root_key = on_actions - } - ## type_key_filter = on_generate_wargoal - type[on_generate_wargoal] = { + ## type_key_filter = on_release_as_puppet + type[on_release_as_puppet] = { path = "game/common/on_actions" skip_root_key = on_actions } @@ -225,16 +194,6 @@ types = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_incoming_lend_lease - type[on_incoming_lend_lease] = { - path = "game/common/on_actions" - skip_root_key = on_actions - } - ## type_key_filter = on_send_volunteers - type[on_send_volunteers] = { - path = "game/common/on_actions" - skip_root_key = on_actions - } ## type_key_filter = on_send_expeditionary_force type[on_send_expeditionary_force] = { path = "game/common/on_actions" @@ -260,71 +219,67 @@ types = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_war_relation_added - type[on_war_relation_added] = { - path = "game/common/on_actions" - skip_root_key = on_actions - } - ## type_key_filter = on_liberate - type[on_liberate] = { - path = "game/common/on_actions" - skip_root_key = on_actions - } - ## type_key_filter = on_startup - type[on_startup] = { + ## type_key_filter = on_peace_proposal + type[on_peace_proposal] = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_daily - type[on_daily] = { + ## type_key_filter = on_send_attache + type[on_send_attache] = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_weekly - type[on_weekly] = { + + + ## type_key_filter = on_create_faction + type[on_create_faction] = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_monthly - type[on_monthly] = { + ## type_key_filter = on_faction_formed + type[on_faction_formed] = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_state_control_changed - type[on_state_control_changed] = { + ## type_key_filter = on_offer_join_faction + type[on_offer_join_faction] = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_unit_leader_created - type[on_unit_leader_created] = { + ## type_key_filter = on_join_faction + type[on_join_faction] = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_unit_leader_level_up - type[on_unit_leader_level_up] = { + ## type_key_filter = on_assume_faction_leadership + type[on_assume_faction_leadership] = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_army_leader_daily - type[on_army_leader_daily] = { + ## type_key_filter = on_leave_faction + type[on_leave_faction] = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_army_leader_won_combat - type[on_army_leader_won_combat] = { + + + ## type_key_filter = on_subject_free + type[on_subject_free] = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_army_leader_lost_combat - type[on_army_leader_lost_combat] = { + ## type_key_filter = on_subject_autonomy_level_change + type[on_subject_autonomy_level_change] = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_army_leader_promoted - type[on_army_leader_promoted] = { + ## type_key_filter = on_subject_annexed + type[on_subject_annexed] = { path = "game/common/on_actions" skip_root_key = on_actions } + + ## type_key_filter = on_host_changed_from_capitulation type[on_host_changed_from_capitulation] = { path = "game/common/on_actions" @@ -335,88 +290,90 @@ types = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_civil_war_end_before_annexation - type[on_civil_war_end_before_annexation] = { - path = "game/common/on_actions" - skip_root_key = on_actions - } ## type_key_filter = on_government_exiled type[on_government_exiled] = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_pride_of_the_fleet_sunk - type[on_pride_of_the_fleet_sunk] = { + + ## type_key_filter = on_state_control_changed + type[on_state_control_changed] = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_assume_faction_leadership - type[on_assume_faction_leadership] = { + + + ## type_key_filter = on_generate_wargoal + type[on_generate_wargoal] = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_war - type[on_war] = { + ## type_key_filter = on_justifying_wargoal_pulse + type[on_justifying_wargoal_pulse] = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_peace - type[on_peace] = { + ## type_key_filter = on_wargoal_expire + type[on_wargoal_expire] = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_peace_proposal - type[on_peace_proposal] = { + + + ## type_key_filter = on_unit_leader_created + type[on_unit_leader_created] = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_operative_on_mission_spotted - type[on_operative_on_mission_spotted] = { + ## type_key_filter = on_army_leader_daily + type[on_army_leader_daily] = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_operative_captured - type[on_operative_captured] = { + ## type_key_filter = on_army_leader_won_combat + type[on_army_leader_won_combat] = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_operative_death - type[on_operative_death] = { + ## type_key_filter = on_army_leader_lost_combat + type[on_army_leader_lost_combat] = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_operative_detected_during_operation - type[on_operative_detected_during_operation] = { + ## type_key_filter = on_unit_leader_level_up + type[on_unit_leader_level_up] = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_operative_created - type[on_operative_created] = { + ## type_key_filter = on_army_leader_promoted + type[on_army_leader_promoted] = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_operative_recruited - type[on_operative_recruited] = { + ## type_key_filter = on_unit_leader_promote_from_ranks_veteran + type[on_unit_leader_promote_from_ranks_veteran] = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_operation_completed - type[on_operation_completed] = { + ## type_key_filter = on_unit_leader_promote_from_ranks_green + type[on_unit_leader_promote_from_ranks_green] = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_fully_decrypted_cipher - type[on_fully_decrypted_cipher] = { + + + ## type_key_filter = on_nuke_drop + type[on_nuke_drop] = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_activated_active_decryption_bonuses - type[on_activated_active_decryption_bonuses] = { + ## type_key_filter = on_pride_of_the_fleet_sunk + type[on_pride_of_the_fleet_sunk] = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_units_paradropped_in_state - type[on_units_paradropped_in_state] = { + ## type_key_filter = on_naval_invasion + type[on_naval_invasion] = { path = "game/common/on_actions" skip_root_key = on_actions } @@ -425,41 +382,102 @@ types = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_ruling_party_change - type[on_ruling_party_change] = { + ## type_key_filter = on_units_paradropped_in_state + type[on_units_paradropped_in_state] = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_peaceconference_started - type[on_peaceconference_started] = { + ## type_key_filter = on_add_history + type[on_add_history] = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_unit_leader_promote_from_ranks_veteran - type[on_unit_leader_promote_from_ranks_veteran] = { + + + ## type_key_filter = on_ace_promoted + type[on_ace_promoted] = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_unit_leader_promote_from_ranks_green - type[on_unit_leader_promote_from_ranks_green] = { + ## type_key_filter = on_ace_killed + type[on_ace_killed] = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_add_history - type[on_add_history] = { + ## type_key_filter = on_ace_killed_on_accident + type[on_ace_killed_on_accident] = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_send_attache - type[on_send_attache] = { + ## type_key_filter = on_non_ace_killed_other_ace + type[on_non_ace_killed_other_ace] = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_units_paradropped_in_state - type[on_units_paradropped_in_state] = { + ## type_key_filter = on_ace_killed_by_ace + type[on_ace_killed_by_ace] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_ace_killed_other_ace + type[on_ace_killed_other_ace] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_aces_killed_each_other + type[on_aces_killed_each_other] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + + + ## type_key_filter = on_operation_completed + type[on_operation_completed] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_operative_detected_during_operation + type[on_operative_detected_during_operation] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_operative_on_mission_spotted + type[on_operative_on_mission_spotted] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_operative_captured + type[on_operative_captured] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_operative_created + type[on_operative_created] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_operative_death + type[on_operative_death] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_operative_recruited + type[on_operative_recruited] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_fully_decrypted_cipher + type[on_fully_decrypted_cipher] = { + path = "game/common/on_actions" + skip_root_key = on_actions + } + ## type_key_filter = on_activated_active_decryption_bonuses + type[on_activated_active_decryption_bonuses] = { path = "game/common/on_actions" skip_root_key = on_actions } + + ## type_key_filter = on_mio_size_increased type[on_mio_size_increased] = { path = "game/common/on_actions" @@ -495,603 +513,571 @@ types = { path = "game/common/on_actions" skip_root_key = on_actions } - ## type_key_filter = on_civil_war_end_before_annexation - type[on_civil_war_end_before_annexation] = { - path = "game/common/on_actions" - skip_root_key = on_actions - } } on_action = { + # ------------ General on actions ------------ + + ### Trigger the following commands at the first day of a new game, after country selection. Doesn't work with save loading. + ### Has a default scope of none, instead of firing for each country individually as in other Paradox games such as Europa Universalis IV. + ### Many effects that usually can be used in any scope will not work, without manual scoping into countries, states, or elsewhere. + ## cardinality = 0..inf + ## replace_scope = { THIS = invalid ROOT = invalid from = invalid } + on_startup = { + ## cardinality = 0..1 + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = + } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } + } + + ### Triggers each day for every country separately (performance heavy, use carefully) + ### Useful for scripted guis and mods adding new mechanics (can increment a variable daily e.g.). + ### Only use scoping if you're careful to avoid duplicate effects. This being executed for every country separately means that this is essentially equivalent to a single effect executed daily inside of every_country. + ### e.g. effect = { GER = { add_political_power = 1 } } will add ~100 political power to Flag of Germany Germany daily, as there being ~100 countries on the world map means that this will get executed ~100 times per day. + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country } + on_daily = single_alias_right[country_event_effect] - ### Triggered daily for the specified country. Tag isn't checked for validity + ### Triggered daily for the specified country. Only runs the effects if the country exists. Tag isn't checked for validity ## replace_scope = { THIS = country ROOT = country } ## cardinality = 0..inf = single_alias_right[on_action_effect] - ### Triggered weekly for the specified country. Tag isn't checked for validity - ## replace_scope = { THIS = country ROOT = country } + ### Triggers each week for every country separately. Useful for ai scripting. Runs on the beginning of the day if the num_days variable is divisible by 7. ## cardinality = 0..inf - = single_alias_right[on_action_effect] + ## replace_scope = { THIS = country ROOT = country } + on_weekly = single_alias_right[country_event_effect] - ### Triggered monthly for the specified country. Tag isn't checked for validity + ### Triggered weekly for the specified country. Only runs the effects if the country exists. Runs on the beginning of the day if the num_days variable is divisible by 7. Tag isn't checked for validity ## replace_scope = { THIS = country ROOT = country } ## cardinality = 0..inf - = single_alias_right[on_action_effect] + = single_alias_right[on_action_effect] - ### Trigger the following commands whenever an election happens or is called by the hold_election command. + ### Triggers each month for every country separately. ## cardinality = 0..inf ## replace_scope = { THIS = country ROOT = country } - on_new_term_election = single_alias_right[country_event_effect] + on_monthly = single_alias_right[country_event_effect] - ### Trigger the following commands whenever an ace is created. FROM = Ace + ### Triggered monthly for the specified country. Only runs the effects if the country exists. Tag isn't checked for validity + ## replace_scope = { THIS = country ROOT = country } ## cardinality = 0..inf - ## replace_scope = { THIS = country root = country FROM = any } - on_ace_promoted = single_alias_right[country_event_effect] + = single_alias_right[on_action_effect] - ### Trigger the following commands whenever two aces kill each other in air duel. FROM = our ace, PREV = enemy ace, has killed FROM. - ## cardinality = 0..inf - ## replace_scope = { THIS = country root = country FROM = any prev = any } - on_aces_killed_each_other = single_alias_right[country_event_effect] - ### Trigger the following commands whenever an aces is killed by another ace. FROM = our ace, PREV = enemy ace, has killed FROM. + # ------------ Political on actions ------------ + + ### For the non LaR stage coup. ROOT is the country that stages the coup, FROM is the target country. ## cardinality = 0..inf - ## replace_scope = { THIS = country root = country FROM = any prev = any } - on_ace_killed_by_ace = single_alias_right[country_event_effect] + ## replace_scope = { ROOT = state THIS = state FROM = country } + on_stage_coup = single_alias_right[country_event_effect] - ### Trigger the following commands whenever an aces is killed by another ace (surviving ace side). FROM = our ace, PREV = enemy ace, killed by FROM. + ### For the non LaR stage coup action. Trigger the following commands whenever a coup succeeds. ROOT is the country that coup succeeded in, FROM is the stager of the coup ## cardinality = 0..inf - ## replace_scope = { THIS = country root = country FROM = any prev = any } - on_ace_killed_other_ace = single_alias_right[country_event_effect] + ## replace_scope = { THIS = country ROOT = country } + on_coup_succeeded = single_alias_right[country_event_effect] - ### Trigger the following commands whenever an aces is killed. FROM = ace + ### Trigger the following commands whenever a country switches its government. + ### This includes set_politics and start_civil_war (always for both sides) and excludes being puppeted. Will always also trigger on_ruling_party_change. ## cardinality = 0..inf - ## replace_scope = { THIS = country root = country FROM = any } - on_ace_killed = single_alias_right[country_event_effect] + ## replace_scope = { THIS = country ROOT = country } + on_government_change = single_alias_right[country_event_effect] + ### Trigger the following commands whenever a country switches its ideology. + ### old_ideology_token is a temporary variable that stores the old ideology as a token. Alongside what triggers on_government_change, also includes being puppeted or changing the ideology via a console command. ## cardinality = 0..inf - ## replace_scope = { THIS = country root = country FROM = any } - on_ace_killed_on_accident = single_alias_right[country_event_effect] + ## replace_scope = { THIS = country ROOT = country } + on_ruling_party_change = single_alias_right[country_event_effect] + ### Trigger the following commands whenever an election happens or is called by the hold_election command. ## cardinality = 0..inf - ## replace_scope = { THIS = country root = country FROM = any } - on_non_ace_killed_other_ace = single_alias_right[country_event_effect] + ## replace_scope = { THIS = country ROOT = country } + on_new_term_election = single_alias_right[country_event_effect] - ### Trigger the following commands whenever the country is targeted by a wargoal under justification. FROM = target nation. Checked every day. + ### Trigger the following commands whenever a peace conference ends. ROOT is the winner, FROM is the loser. ## cardinality = 0..inf ## replace_scope = { THIS = country ROOT = country FROM = country } - on_justifying_wargoal_pulse = single_alias_right[country_event_effect] + on_peaceconference_ended = single_alias_right[country_event_effect] + ### Trigger the following commands whenever a peace conference starts. ROOT is the winner, FROM is the loser. ## cardinality = 0..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_wargoal_expire = single_alias_right[country_event_effect] + ## replace_scope = { ROOT = country FROM = country } + on_peaceconference_started = single_alias_right[on_action_effect] + + # ------------ Diplomacy/War on actions ------------ + + ### Trigger the following commands whenever a country send volunteers to another. ROOT is sender, FROM is receiver. ## cardinality = 0..inf - ## replace_scope = { THIS = country ROOT = country FROM = state } - on_nuke_drop = single_alias_right[country_event_effect] + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_send_volunteers = single_alias_right[country_event_effect] ### Trigger the following commands whenever a country loses a border war. "Border war" refers to the state-based border wars enabled with set_border_war, represented with orange stripes over the state, rather than border wars that simulate combat between countries. The default scope is the state that lost the border war. ## cardinality = 0..inf ## replace_scope = { THIS = state ROOT = country } on_border_war_lost = single_alias_right[country_event_effect] - ## cardinality = 0..inf - ## replace_scope = { THIS = country ROOT = country } - on_leave_faction = single_alias_right[country_event_effect] - - ### Trigger the following commands whenever a country create a faction. FROM is the one that joins the faction. - ## cardinality = 0..inf - ## replace_scope = { THIS = country ROOT = country from = country } - on_create_faction = single_alias_right[country_event_effect] - - ### Trigger the following commands whenever a country joins a faction after being invited. FROM is the country invited, THIS and ROOT are the faction leader. + ### fired when two countries end up at war with each other (on_war is fired when a country goes to war against anyone and is not fired again when it enters war against another country unless it went to peace first) + ### ROOT is attacker, FROM is defender. ## cardinality = 0..inf ## replace_scope = { THIS = country ROOT = country FROM = country } - on_offer_join_faction = single_alias_right[country_event_effect] + on_war_relation_added = single_alias_right[country_event_effect] - ### Trigger the following commands for a faction leader whenever a country joins after they ask to do so. FROM is faction leader, ROOT and THIS are the country that joins. + ### Trigger the following commands whenever a country declares war. FROM is war target, ROOT is for the country who is declaring war ## cardinality = 0..inf ## replace_scope = { THIS = country ROOT = country FROM = country } - on_join_faction = single_alias_right[country_event_effect] + on_declare_war = single_alias_right[country_event_effect] + ### Trigger the following commands whenever a country has just entered a state of war from initially being at peace. THIS is country that has just gotten into a war. ## cardinality = 0..inf ## replace_scope = { THIS = country ROOT = country FROM = country } - on_declare_war = single_alias_right[country_event_effect] + on_war = single_alias_right[country_event_effect] + ### Trigger the following commands whenever a country is no longer at war. THIS is country that is no longer at war. ## cardinality = 0..inf - ## replace_scope = { THIS = country ROOT = country } - on_faction_formed = single_alias_right[country_event_effect] + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_peace = single_alias_right[country_event_effect] + ### Trigger the following commands whenever a country capitulates, in the middle of the process. + ### ROOT is capitulated country, FROM is winner. Several processes such as the deletion of units and transfer of equipment have already been executed by this point. ## cardinality = 0..inf ## replace_scope = { THIS = country ROOT = country FROM = country } on_capitulation = single_alias_right[country_event_effect] + ### Trigger the following commands whenever a country capitulates, at the beginning of the process. ROOT is capitulated country, FROM is winner ## cardinality = 0..inf ## replace_scope = { THIS = country ROOT = country FROM = country } on_capitulation_immediate = single_alias_right[country_event_effect] + ### Trigger the following commands whenever a country that was previously capitulated changes its status to no longer having capitulated. ROOT is the country affected. ## cardinality = 0..inf ## replace_scope = { THIS = country ROOT = country } on_uncapitulation = single_alias_right[country_event_effect] - ## cardinality = 0..inf - ## replace_scope = { THIS = country ROOT = country } - on_government_change = single_alias_right[country_event_effect] - - ### Triggers the following commands whenever a sea invasion is made. THIS (default scope) is the invaded state, ROOT is the country that invades, FROM is the state where the invasion started - ## cardinality = 0..inf - ## replace_scope = { THIS = state ROOT = country FROM = state } - on_naval_invasion = single_alias_right[country_event_effect] - - ## cardinality = 0..inf - ## replace_scope = { THIS = country ROOT = country } - on_coup_succeeded = single_alias_right[country_event_effect] - - ## cardinality = 0..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_civil_war_end = single_alias_right[country_event_effect] - - ## cardinality = 0..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_puppet = single_alias_right[country_event_effect] - - ## cardinality = 0..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_release_as_puppet = single_alias_right[country_event_effect] - + ### Trigger the following commands whenever a country is annexed. ROOT is winner, FROM gets annexed. For civil wars on_civil_war_end is also fired. ## cardinality = 0..inf ## replace_scope = { THIS = country ROOT = country FROM = country } on_annex = single_alias_right[country_event_effect] + ### Trigger the following commands just before FROM gets annexed, meaning the country and everything it owns still exists. ROOT is winner, FROM gets annexed. It will also fire on_annex and on_civil_war_end ## cardinality = 0..inf ## replace_scope = { THIS = country ROOT = country FROM = country } - on_subject_free = single_alias_right[country_event_effect] + on_civil_war_end_before_annexation = single_alias_right[country_event_effect] + ### Trigger the following commands whenever a civil war ends. ROOT is civil war winner, FROM gets annexed. This will also fire on_annex. ## cardinality = 0..inf ## replace_scope = { THIS = country ROOT = country FROM = country } - on_subject_autonomy_level_change = single_alias_right[country_event_effect] + on_civil_war_end = single_alias_right[country_event_effect] + ### Trigger the following commands whenever a country is puppeted in a peace conference only. ROOT is the nation being puppeted, FROM is the overlord. ## cardinality = 0..inf ## replace_scope = { THIS = country ROOT = country FROM = country } - on_subject_annexed = single_alias_right[country_event_effect] + on_puppet = single_alias_right[country_event_effect] + ### Trigger the following commands whenever a country is liberated in a peace conference only. ROOT is the nation being liberated, FROM is the leader of the liberators. ## cardinality = 0..inf ## replace_scope = { THIS = country ROOT = country FROM = country } - on_release_as_free = single_alias_right[country_event_effect] + on_liberate = single_alias_right[country_event_effect] + ### Trigger the following commands whenever a country is released. ROOT is free nation FROM is releaser. ## cardinality = 0..inf ## replace_scope = { THIS = country ROOT = country FROM = country } - on_peaceconference_ended = single_alias_right[country_event_effect] + on_release_as_free = single_alias_right[country_event_effect] + ### Trigger the following commands whenever puppeting through the occupied territories menu during peace time (or when releasing from non-core but owned territory). + ### ROOT is the nation being released, FROM is the overlord. ## cardinality = 0..inf ## replace_scope = { THIS = country ROOT = country FROM = country } - on_generate_wargoal = single_alias_right[country_event_effect] + on_release_as_puppet = single_alias_right[country_event_effect] + ### Trigger the following commands whenever a country guarantees independence of another country. ROOT is the country which guarantees, FROM is the country that is guaranteed. ## cardinality = 0..inf ## replace_scope = { THIS = country ROOT = country FROM = country } on_guarantee = single_alias_right[country_event_effect] + ### Trigger the following commands whenever a country accepts the request for military access. ROOT is the country which requested, FROM is the country that accepted. ## cardinality = 0..inf ## replace_scope = { THIS = country ROOT = country FROM = country } on_military_access = single_alias_right[country_event_effect] + ### Trigger the following commands whenever a country accepts the offer for military access. ROOT is the country which offered, FROM is the country that accepted. ## cardinality = 0..inf ## replace_scope = { THIS = country ROOT = country FROM = country } on_offer_military_access = single_alias_right[country_event_effect] + ### Trigger the following commands whenever a country accepts the call to war. ROOT is the country which called, FROM is the country that joined. ## cardinality = 0..inf ## replace_scope = { THIS = country ROOT = country FROM = country } on_call_allies = single_alias_right[country_event_effect] + ### Trigger the following commands whenever a country joins a war of an ally. ROOT is the country which joined, FROM is the country whose war was joined. ## cardinality = 0..inf ## replace_scope = { THIS = country ROOT = country FROM = country } on_join_allies = single_alias_right[country_event_effect] + ### Trigger the following commands whenever a country has their lend lease accepted. ROOT is the country that sent the lend lease, FROM is the country that accepted. ## cardinality = 0..inf ## replace_scope = { THIS = country ROOT = country FROM = country } on_lend_lease = single_alias_right[country_event_effect] + ### Trigger the following commands whenever a country accepts a requested lend lease. ROOT is the country that accepted, FROM is the country that requested. ## cardinality = 0..inf ## replace_scope = { THIS = country ROOT = country FROM = country } on_incoming_lend_lease = single_alias_right[country_event_effect] + ### Trigger the following commands whenever a country accepts sent expeditionary forces. ROOT is the country that sent, FROM is the country that accepted. ## cardinality = 0..inf ## replace_scope = { THIS = country ROOT = country FROM = country } - on_incoming_lend_lease = single_alias_right[country_event_effect] + on_send_expeditionary_force = single_alias_right[country_event_effect] + ### Trigger the following commands whenever a country returns their expeditionary forces. ROOT is the owner of the forces, FROM is the country where the forces were sent. ## cardinality = 0..inf ## replace_scope = { THIS = country ROOT = country FROM = country } - on_send_volunteers = single_alias_right[country_event_effect] + on_return_expeditionary_forces = single_alias_right[country_event_effect] + ### Trigger the following commands whenever a country requests expeditionary forces. ROOT is the country that requests, FROM is the target of the request. ## cardinality = 0..inf ## replace_scope = { THIS = country ROOT = country FROM = country } - on_send_expeditionary_force = single_alias_right[country_event_effect] + on_request_expeditionary_forces = single_alias_right[country_event_effect] + ### Trigger the following commands whenever a country accepts the request for control of a state. ROOT is the requester, FROM is the country in control of the state. ## cardinality = 0..inf ## replace_scope = { THIS = country ROOT = country FROM = country } - on_return_expeditionary_forces = single_alias_right[country_event_effect] + on_ask_for_state_control = single_alias_right[country_event_effect] + ### Trigger the following commands whenever a country accepts being given control of a state. ROOT is the giver, FROM is the receiver. ## cardinality = 0..inf ## replace_scope = { THIS = country ROOT = country FROM = country } - on_request_expeditionary_forces = single_alias_right[country_event_effect] + on_give_state_control = single_alias_right[country_event_effect] + ### Trigger the following commands whenever a country accepts a conditional surrender. ROOT is sender of conditional surrender, FROM is the receiver. ## cardinality = 0..inf ## replace_scope = { THIS = country ROOT = country FROM = country } - on_ask_for_state_control = single_alias_right[country_event_effect] + on_peace_proposal = single_alias_right[country_event_effect] + ### Triggers actions on an attache being accepted. Default scope is sender, FROM = receiver ## cardinality = 0..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_give_state_control = single_alias_right[country_event_effect] + ## replace_scope = { ROOT = country THIS = country FROM = country } + on_send_attache = single_alias_right[country_event_effect] + + + # ------------ Faction on actions ------------ + + ### Trigger the following commands whenever a country create a faction. FROM is the one that joins the faction. + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country from = country } + on_create_faction = single_alias_right[country_event_effect] + + ### Trigger the following commands when a faction is formed. + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country } + on_faction_formed = single_alias_right[country_event_effect] + ### Trigger the following commands whenever a country joins a faction after being invited. FROM is the country invited, THIS and ROOT are the faction leader. ## cardinality = 0..inf ## replace_scope = { THIS = country ROOT = country FROM = country } - on_war_relation_added = single_alias_right[country_event_effect] + on_offer_join_faction = single_alias_right[country_event_effect] + ### Trigger the following commands for a faction leader whenever a country joins after they ask to do so. FROM is faction leader, ROOT and THIS are the country that joins. ## cardinality = 0..inf ## replace_scope = { THIS = country ROOT = country FROM = country } - on_liberate = single_alias_right[country_event_effect] + on_join_faction = single_alias_right[country_event_effect] + ### Trigger the following commands whenever a country assumes leadership of a faction. ROOT is the new faction leader FROM is the old faction leader ## cardinality = 0..inf - ## replace_scope = { THIS = invalid ROOT = invalid from = invalid } - on_startup = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_assume_faction_leadership = single_alias_right[country_event_effect] + ### Trigger the following commands whenever a country leaves a faction. FROM is the faction Leader, ROOT is the country leaving the faction ## cardinality = 0..inf ## replace_scope = { THIS = country ROOT = country } - on_daily = single_alias_right[country_event_effect] + on_leave_faction = single_alias_right[country_event_effect] + + # ------------ Autonomy on actions ------------ + + ### Trigger the following commands when a country annex a subject. ROOT is the subject, FROM is the overlord. ## cardinality = 0..inf - ## replace_scope = { THIS = country ROOT = country } - on_weekly = single_alias_right[country_event_effect] + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_subject_annexed = single_alias_right[country_event_effect] + + ### Trigger the following commands when a country grants freedom to a puppet. ROOT is the subject, FROM is the previous overlord. + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_subject_free = single_alias_right[country_event_effect] + ### Trigger the following commands when the autonomy level of a puppet changes. ROOT is the subject, FROM is the overlord. + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_subject_autonomy_level_change = single_alias_right[country_event_effect] + + + # ------------ Governments in Exile on actions ------------ + + ### Trigger the following commands whenever a country becomes a government in exile. ROOT is the government in exile, FROM is the country that is hosting the government in exile. ## cardinality = 0..inf ## replace_scope = { THIS = country ROOT = country } - on_monthly = single_alias_right[country_event_effect] + on_government_exiled = single_alias_right[country_event_effect] + + ### Trigger the following commands whenever a country that is hosting a government in exile has capitulated. + ### ROOT is the government in exile, FROM is the new country hosting the government in exile, FROM.FROM is the old country that was hosting the government in exile. + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country FROMFROM = country } + on_host_changed_from_capitulation = single_alias_right[country_event_effect] + ### Trigger the following commands whenever a country has returned from governing in exile. ROOT is the government in exile, FROM is the country that was hosting the government in exile. + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country FROMFROM = country } + on_exile_government_reinstated = single_alias_right[country_event_effect] + + + # ------------ States on actions ------------ + + ### Trigger the following commands when a state's controller changes. ROOT is new controller, FROM is old controller, FROM.FROM is state ID. ## cardinality = 0..inf ## replace_scope = { ROOT = country THIS = country FROM = country FROMFROM = state } on_state_control_changed = single_alias_right[country_event_effect] + + # ------------ Wargoal on actions ------------ + + ### Trigger the following commands whenever a country generates a wargoal. ROOT is the wargoal owner, FROM is the wargoal target ## cardinality = 0..inf - ## replace_scope = { THIS = unit_leader ROOT = unit_leader from = country } - on_unit_leader_created = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_generate_wargoal = single_alias_right[country_event_effect] + + ### Trigger the following commands whenever the country is targeted by a wargoal under justification. FROM = target nation. Checked every day. + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_justifying_wargoal_pulse = single_alias_right[country_event_effect] + + ### Trigger the following commands whenever a wargoal expire. FROM is the wargoal owner. + ## cardinality = 0..inf + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_wargoal_expire = single_alias_right[country_event_effect] + + + # ------------ Unit Leader on actions ------------ + ### Trigger the following commands when an army leader is created. FROM is owner country, ROOT is the unit leader. ## cardinality = 0..inf ## replace_scope = { THIS = unit_leader ROOT = unit_leader from = country } - on_unit_leader_level_up = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } + on_unit_leader_created = single_alias_right[unit_leader_event_effect] + ### Trigger the following commands on an army leader each day. FROM is owner country, ROOT is the unit leader. ## cardinality = 0..inf ## replace_scope = { THIS = unit_leader ROOT = unit_leader FROM = country } - on_army_leader_daily = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } + on_army_leader_daily = single_alias_right[unit_leader_event_effect] + ### Trigger the following commands whenever an army leader won a combat. FROM is owner country, ROOT is the unit leader. ## cardinality = 0..inf ## replace_scope = { THIS = unit_leader ROOT = unit_leader FROM = country } - on_army_leader_won_combat = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } + on_army_leader_won_combat = single_alias_right[unit_leader_event_effect] + ### Trigger the following commands whenever an army leader lost a combat. FROM is owner country, ROOT is the unit leader. ## cardinality = 0..inf ## replace_scope = { THIS = unit_leader ROOT = unit_leader FROM = country } - on_army_leader_lost_combat = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } + on_army_leader_lost_combat = single_alias_right[unit_leader_event_effect] + ### Trigger the following commands when a leader gain a level. FROM is owner country, ROOT is the unit leader. ## cardinality = 0..inf ## replace_scope = { THIS = unit_leader ROOT = unit_leader from = country } - on_army_leader_promoted = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } + on_unit_leader_level_up = single_alias_right[unit_leader_event_effect] + ### Trigger the following commands whenever a corps commander is promoted to a field marshal. FROM is owner country, ROOT is the unit leader. ## cardinality = 0..inf - ## replace_scope = { THIS = country ROOT = country FROM = country FROMFROM = country } - on_host_changed_from_capitulation = single_alias_right[country_event_effect] + ## replace_scope = { THIS = unit_leader ROOT = unit_leader from = country } + on_army_leader_promoted = single_alias_right[unit_leader_event_effect] + ### Triggers the following commands whenever an unit commander gets promoted to a general. FROM is unit, OWNER is owner country, ROOT is the unit leader. ## cardinality = 0..inf - ## replace_scope = { THIS = country ROOT = country FROM = country FROMFROM = country } - on_exile_government_reinstated = single_alias_right[country_event_effect] + ## replace_scope = { ROOT = unit_leader THIS = unit_leader from = unit } + on_unit_leader_promote_from_ranks_veteran = single_alias_right[unit_leader_event_effect] + ### Triggers the following commands whenever an unit commander gets promoted to a general. FROM is unit, OWNER is owner country, ROOT is the unit leader ## cardinality = 0..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_civil_war_end_before_annexation = single_alias_right[country_event_effect] + ## replace_scope = { ROOT = unit_leader THIS = unit_leader from = unit } + on_unit_leader_promote_from_ranks_green = single_alias_right[unit_leader_event_effect] + + # ------------ Military on actions ------------ + + ### Trigger the following commands whenever a country drops a nuke. ROOT is the country that launched the nuke, FROM is the nuked state. ## cardinality = 0..inf - ## replace_scope = { THIS = country ROOT = country } - on_government_exiled = single_alias_right[country_event_effect] + ## replace_scope = { THIS = country ROOT = country FROM = state } + on_nuke_drop = single_alias_right[country_event_effect] + ### Triggers when a country's pride of the fleet is sunk. FROM is the killer country, ROOT is the country of that lost its pride of the fleet. ## cardinality = 0..inf ## replace_scope = { THIS = country ROOT = country FROM = country } on_pride_of_the_fleet_sunk = single_alias_right[country_event_effect] + ### Triggers the following commands whenever a sea invasion is made. THIS (default scope) is the invaded state, ROOT is the country that invades, FROM is the state where the invasion started ## cardinality = 0..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_assume_faction_leadership = single_alias_right[country_event_effect] + ## replace_scope = { THIS = state ROOT = country FROM = state } + on_naval_invasion = single_alias_right[country_event_effect] + ### Triggers the following commands whenever a landing occurs. THIS (default scope) is the invaded state, ROOT is the country that invades, FROM is the state where the invasion started ## cardinality = 0..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_war = single_alias_right[country_event_effect] + ## replace_scope = { THIS = state ROOT = country FROM = state } + on_paradrop = single_alias_right[country_event_effect] + ### This differs from on_paradrop in that it is run once per paradrop, not once per unit dropped. ROOT is the state that was dropped into, FROM is the dropping country. ## cardinality = 0..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_peace = single_alias_right[country_event_effect] + ## replace_scope = { ROOT = state THIS = state FROM = country } + on_units_paradropped_in_state = single_alias_right[on_action_effect] + ### Triggers the following commands whenever receiving a history entry. ROOT is the unit. ## cardinality = 0..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_peace_proposal = single_alias_right[country_event_effect] + ## replace_scope = { ROOT = unit } + on_add_history = single_alias_right[on_action_effect] - ## cardinality = 0..inf - ## replace_scope = { THIS = operative ROOT = country FROM = country } - on_operative_on_mission_spotted = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } - ## cardinality = 0..inf - ## replace_scope = { THIS = operative ROOT = country FROM = country } - on_operative_captured = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } + # ------------ Aces on actions ------------ + ### Trigger the following commands whenever an ace is created. FROM = Ace ## cardinality = 0..inf - ## replace_scope = { THIS = operative ROOT = country FROM = country } - on_operative_death = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } + ## replace_scope = { THIS = country root = country FROM = any } + on_ace_promoted = single_alias_right[country_event_effect] + ### Trigger the following commands whenever an aces is killed. FROM = ace ## cardinality = 0..inf - ## replace_scope = { THIS = operative ROOT = country FROM = country FROMFROM = state } - on_operative_detected_during_operation = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } + ## replace_scope = { THIS = country root = country FROM = any } + on_ace_killed = single_alias_right[country_event_effect] + ### Trigger the following commands whenever our aces died on accident. FROM = our ace died in accident. ## cardinality = 0..inf - ## replace_scope = { THIS = operative ROOT = operative FROM = country } - on_operative_created = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } + ## replace_scope = { THIS = country root = country FROM = any } + on_ace_killed_on_accident = single_alias_right[country_event_effect] + ### Trigger the following commands whenever non ace killed enemy ace. FROM = enemy ace. ## cardinality = 0..inf - ## replace_scope = { THIS = operative ROOT = operative FROM = country } - on_operative_recruited = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } + ## replace_scope = { THIS = country root = country FROM = any } + on_non_ace_killed_other_ace = single_alias_right[country_event_effect] + ### Trigger the following commands whenever an aces is killed by another ace. FROM = our ace, PREV = enemy ace, has killed FROM. ## cardinality = 0..inf - ## replace_scope = { THIS = operative ROOT = country FROM = country } - on_operation_completed = { - ## cardinality = 0..1 - random_events = { - ## cardinality = 0..inf - int = 0 - ## cardinality = 0..inf - int = - } - ## cardinality = 0..1 - effect = { - alias_name[effect] = alias_match_left[effect] - } - } + ## replace_scope = { THIS = country root = country FROM = any prev = any } + on_ace_killed_by_ace = single_alias_right[country_event_effect] + ### Trigger the following commands whenever an aces is killed by another ace (surviving ace side). FROM = our ace, PREV = enemy ace, killed by FROM. ## cardinality = 0..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_fully_decrypted_cipher = single_alias_right[country_event_effect] + ## replace_scope = { THIS = country root = country FROM = any prev = any } + on_ace_killed_other_ace = single_alias_right[country_event_effect] + ### Trigger the following commands whenever two aces kill each other in air duel. FROM = our ace, PREV = enemy ace, has killed FROM. ## cardinality = 0..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_activated_active_decryption_bonuses = single_alias_right[country_event_effect] + ## replace_scope = { THIS = country root = country FROM = any prev = any } + on_aces_killed_each_other = single_alias_right[country_event_effect] - ## cardinality = 0..inf - ## replace_scope = { THIS = state ROOT = country FROM = country } - on_units_paradropped_in_state = single_alias_right[country_event_effect] + # ------------ La RĂ©sistance on actions ------------ + + ### Trigger the following commands whenever an operative completed. THIS - the operative, ROOT - the initiating country, FROM - the target country. ## cardinality = 0..inf - ## replace_scope = { THIS = state ROOT = country FROM = state } - on_paradrop = single_alias_right[country_event_effect] + ## replace_scope = { THIS = operative ROOT = country FROM = country } + on_operation_completed = single_alias_right[operative_event_effect] + ### Trigger the following commands whenever an operative dies. + ### THIS - the operative, ROOT - the killer country (optional), FROM - the country the operative is operating for, FROM.FROM - operation state (will only be set if the operation has a specific selection_target). ## cardinality = 0..inf - ## replace_scope = { THIS = country ROOT = country } - on_ruling_party_change = single_alias_right[country_event_effect] - + ## replace_scope = { THIS = operative ROOT = country FROM = country FROMFROM = state } + on_operative_detected_during_operation = single_alias_right[operative_event_effect] + + ### Trigger the following commands whenever an operative performing an offensive mission in a country. + ### THIS - the operative, FROM - the country the operative was performing its mission in, ROOT - the country the operative is operating for. ## cardinality = 0..inf - on_stage_coup = single_alias_right[country_event_effect] + ## replace_scope = { THIS = operative ROOT = country FROM = country } + on_operative_on_mission_spotted = single_alias_right[operative_event_effect] + ### Trigger the following commands whenever an operative is captured. + ### THIS - the operative, ROOT - the country the operative was performing its mission in, FROM - the country the operative is operating for. ## cardinality = 0..inf - ## replace_scope = { ROOT = country FROM = country } - on_peaceconference_started = single_alias_right[on_action_effect] + ## replace_scope = { THIS = operative ROOT = country FROM = country } + on_operative_captured = single_alias_right[operative_event_effect] + ### Trigger the following commands whenever an operative is created. + ### THIS - the operative, FROM - the country the operative is created by. ## cardinality = 0..inf - ## replace_scope = { ROOT = unit_leader from = unit } - on_unit_leader_promote_from_ranks_veteran = single_alias_right[on_action_effect] + ## replace_scope = { THIS = operative ROOT = operative FROM = country } + on_operative_created = single_alias_right[operative_event_effect] + ### Trigger the following commands whenever an operative dies. + ### THIS - the operative, ROOT - the killer country (optional), FROM - the country the operative is operating for ## cardinality = 0..inf - ## replace_scope = { ROOT = unit_leader from = unit } - on_unit_leader_promote_from_ranks_green = single_alias_right[on_action_effect] + ## replace_scope = { THIS = operative ROOT = country FROM = country } + on_operative_death = single_alias_right[operative_event_effect] + ### Trigger the following commands whenever an operative is recruited. + ### THIS - the operative, FROM - the country the operative is created by. ## cardinality = 0..inf - ## replace_scope = { ROOT = unit } - on_add_history = single_alias_right[on_action_effect] + ## replace_scope = { THIS = operative ROOT = operative FROM = country } + on_operative_recruited = single_alias_right[operative_event_effect] - ### Triggers actions on an attache being sent. Default scope is sender, FROM = receiver + ### Trigger the following commands whenever a country fully decrypts cipher of a target country. + ### THIS - the target country that its cipher is decrypted, FROM - the decrypter country. ## cardinality = 0..inf - ## replace_scope = { ROOT = country THIS = country FROM = country } - on_send_attache = single_alias_right[country_event_effect] + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_fully_decrypted_cipher = single_alias_right[country_event_effect] + ### Trigger the following commands whenever a country activates its active cipher bonuses against a target. + ### THIS - the target country, FROM - the country that activates its bonuses. ## cardinality = 0..inf - ## replace_scope = { ROOT = state THIS = state FROM = country } - on_units_paradropped_in_state = single_alias_right[on_action_effect] + ## replace_scope = { THIS = country ROOT = country FROM = country } + on_activated_active_decryption_bonuses = single_alias_right[country_event_effect] - # NB : all the following also exist at MIO level - # use on-action here if the purpose is to execute for any MIO - # use on-action at MIO level to execute just for one precise MIO - # i.e. don't use this here : if = { limit = { is_military_industrial_organisation = ... } } } + # ------------ Military Industrial Organization on actions ------------ + + ### Trigger the following commands whenever a MIO increases in size (levels up). + ### ROOT is the Military Industrial Organization, FROM is the owner of the MIO country ## cardinality = 0..inf - ## replace_scope = { this = military_industrial_organization } + ## replace_scope = { ROOT = military_industrial_organization this = military_industrial_organization FROM = COUNTRY } on_mio_size_increased = single_alias_right[on_action_effect] + ### Trigger the following commands whenever a MIO is assigned to technology research. + ### ROOT is the Military Industrial Organization, FROM is the owner of the MIO country ## cardinality = 0..inf - ## replace_scope = { this = military_industrial_organization } + ## replace_scope = { ROOT = military_industrial_organization this = military_industrial_organization FROM = COUNTRY } on_mio_design_team_assigned_to_tech = single_alias_right[on_action_effect] + ### Trigger the following commands whenever a MIO is asigned to a variant. + ### ROOT is the Military Industrial Organization, FROM is the owner of the MIO country ## cardinality = 0..inf - ## replace_scope = { this = military_industrial_organization } + ## replace_scope = { ROOT = military_industrial_organization this = military_industrial_organization FROM = COUNTRY } on_mio_design_team_assigned_to_variant = single_alias_right[on_action_effect] + ### Trigger the following commands whenever a MIO assigned to a production line. + ### ROOT is the Military Industrial Organization, FROM is the owner of the MIO country ## cardinality = 0..inf - ## replace_scope = { this = military_industrial_organization } + ## replace_scope = { ROOT = military_industrial_organization this = military_industrial_organization FROM = COUNTRY } on_mio_industrial_manufacturer_assigned = single_alias_right[on_action_effect] + ### Currently does not work. + ### Trigger the following commands whenever a technology a MIO is assigned to is canceled. + ### ROOT is the Military Industrial Organization, FROM is the owner of the MIO country ## cardinality = 0..inf - ## replace_scope = { this = military_industrial_organization } + ## replace_scope = { ROOT = military_industrial_organization this = military_industrial_organization } on_mio_tech_research_cancelled = single_alias_right[on_action_effect] + ### Currently does not work. + ### Trigger the following commands whenever a technology a MIO is assigned to is completed. + ### ROOT is the Military Industrial Organization, FROM is the owner of the MIO country ## cardinality = 0..inf - ## replace_scope = { this = military_industrial_organization } + ## replace_scope = { ROOT = military_industrial_organization this = military_industrial_organization } on_mio_tech_research_completed = single_alias_right[on_action_effect] + ### Trigger the following commands whenever a MIO is unnasigned from a production line. + ### ROOT is the Military Industrial Organization, FROM is the owner of the MIO country ## cardinality = 0..inf - ## replace_scope = { this = military_industrial_organization } + ## replace_scope = { ROOT = military_industrial_organization this = military_industrial_organization FROM = COUNTRY } on_mio_industrial_manufacturer_unassigned = single_alias_right[on_action_effect] - - ### ROOT is winner #FROM gets annexed - This fires just before FROM gets annexed, meaning the country and everything it owns still exists. It will also fire on_annex and on_civil_war_end - ## cardinality = 0..inf - ## replace_scope = { THIS = country ROOT = country FROM = country } - on_civil_war_end_before_annexation = single_alias_right[on_action_effect] } single_alias[country_event_effect] = { @@ -1107,6 +1093,32 @@ single_alias[country_event_effect] = { alias_name[effect] = alias_match_left[effect] } } +single_alias[unit_leader_event_effect] = { + ## cardinality = 0..1 + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = + } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } +} +single_alias[operative_event_effect] = { + ## cardinality = 0..1 + random_events = { + ## cardinality = 0..inf + int = 0 + ## cardinality = 0..inf + int = + } + ## cardinality = 0..1 + effect = { + alias_name[effect] = alias_match_left[effect] + } +} single_alias[on_action_effect] = { ## cardinality = 0..1 effect = {