From 10c7e56b62a12dbb65ca2c6fd832cf928a8dad13 Mon Sep 17 00:00:00 2001 From: Benjamin Date: Sat, 14 Oct 2023 13:08:53 +0200 Subject: [PATCH 01/15] removed redundant file --- .cursorignore | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 .cursorignore diff --git a/.cursorignore b/.cursorignore deleted file mode 100644 index 5afa2292b..000000000 --- a/.cursorignore +++ /dev/null @@ -1,3 +0,0 @@ -gfx* -scenario_tests* -.vscode* From f744a115fea78c3df8fa285104c939e9d61fb94f Mon Sep 17 00:00:00 2001 From: Benjamin Date: Sat, 14 Oct 2023 13:28:52 +0200 Subject: [PATCH 02/15] updated deprecated stuff in workflows --- .github/workflows/create_release.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/create_release.yml b/.github/workflows/create_release.yml index aa36b7337..64e1d47ac 100644 --- a/.github/workflows/create_release.yml +++ b/.github/workflows/create_release.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Get current date and time in CEST, and compatible version from descriptor.mod id: get-version @@ -22,8 +22,8 @@ jobs: # Get current date and time in CEST date_time=$(TZ="Europe/Paris" date +'%d-%m-%Y_%H-%M') - echo "::set-output name=compatible_version::$compatible_version" - echo "::set-output name=date_time::$date_time" + echo "compatible_version=$compatible_version" >> $GITHUB_OUTPUT + echo "name=date_time=$date_time" >> $GITHUB_OUTPUT - name: Create Release id: create_release From d5a0cea6435616e49737d5d9b2fe8c801bb4de7c Mon Sep 17 00:00:00 2001 From: Benjamin Date: Sat, 14 Oct 2023 13:56:33 +0200 Subject: [PATCH 03/15] further correction --- .github/workflows/create_release.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/create_release.yml b/.github/workflows/create_release.yml index 64e1d47ac..f8f7fd544 100644 --- a/.github/workflows/create_release.yml +++ b/.github/workflows/create_release.yml @@ -9,6 +9,8 @@ jobs: build: name: Create Release runs-on: ubuntu-latest + permissions: + contents: write steps: - name: Checkout code uses: actions/checkout@v4 @@ -23,16 +25,16 @@ jobs: date_time=$(TZ="Europe/Paris" date +'%d-%m-%Y_%H-%M') echo "compatible_version=$compatible_version" >> $GITHUB_OUTPUT - echo "name=date_time=$date_time" >> $GITHUB_OUTPUT + echo "date_time=$date_time" >> $GITHUB_OUTPUT - name: Create Release id: create_release - uses: actions/create-release@v1 + uses: ncipollo/release-action@v1.13.0 env: GITHUB_TOKEN: ${{ secrets.LOTR_MOD_RELEASE_TOKEN }} with: - tag_name: ${{ steps.get-version.outputs.date_time }} - release_name: ${{ steps.get-version.outputs.date_time }} + tag: ${{ steps.get-version.outputs.date_time }} + name: ${{ steps.get-version.outputs.date_time }} body: | Compatible HoI4 Version: v${{ steps.get-version.outputs.compatible_version }} draft: false From e7d27af0e70b50315cfcb58a81758c8da2406921 Mon Sep 17 00:00:00 2001 From: RubenVermaat Date: Wed, 11 Oct 2023 16:15:16 +0200 Subject: [PATCH 04/15] Worked on AI and custom game rules --- .../ai_strategy_plans/ANG_strategy_plans.txt | 73 +++++++++++- common/difficulty_settings/00_difficulty.txt | 24 ++++ common/game_rules/00_game_rules.txt | 110 ++++++++---------- common/national_focus/angmar.txt | 36 ++++-- common/national_focus/mordor.txt | 12 +- common/scripted_effects/00_gameplan.txt | 86 ++++++++++---- .../diplomacy_scripted_triggers.txt | 48 ++------ history/general/lotr_men_generic_advisors.txt | 4 + .../english/custom_game_rules_l_english.yml | 5 + 9 files changed, 266 insertions(+), 132 deletions(-) create mode 100644 localisation/english/custom_game_rules_l_english.yml diff --git a/common/ai_strategy_plans/ANG_strategy_plans.txt b/common/ai_strategy_plans/ANG_strategy_plans.txt index 35c8d069f..70f794635 100644 --- a/common/ai_strategy_plans/ANG_strategy_plans.txt +++ b/common/ai_strategy_plans/ANG_strategy_plans.txt @@ -8,7 +8,7 @@ ANG_historical_plan = { enable = { OR = { - AND = { + ANG = { is_historical_focus_on = yes OR = { has_game_rule = { @@ -46,4 +46,75 @@ ANG_historical_plan = { construction_effort_2 ANG_request_investment_neighbours } +} + +ANG_belligerent_plan = { + name = "Angmar Belligerent plan" + desc = "Belligerent behavior for Angmar" + + allowed = { + original_tag = ANG + } + + enable = { + OR = { + ANG = { + is_historical_focus_on = no + has_country_flag = gamplan_going_belligerent + } + } + } + abort = { + always = no + } + + ai_national_focuses = { + thefateofangmar + industrial_effort + ANG_seek_former_glory + ANG_boost_the_industry + ANG_civil_unrest + ANG_boost_the_industry_civilian + ANG_back_to_the_old_ways + ANG_seek_help_from_mordor + construction_effort_2 + ANG_join_forces_with_orcs + ANG_strengthen_the_new_goverment + } +} + +ANG_cooperative_plan = { + name = "Angmar Cooperative plan" + desc = "Cooperative behavior for Angmar" + + allowed = { + original_tag = ANG + } + + enable = { + OR = { + ANG = { + is_historical_focus_on = no + has_country_flag = gameplan_going_cooperative + } + } + } + abort = { + always = no + } + + ai_national_focuses = { + thefateofangmar + industrial_effort + ANG_stay_true_to_the_people + ANG_boost_the_industry + ANG_grow_a_forest + ANG_boost_the_industry_civilian + ANG_invest_in_the_people + ANG_establish_democratic_goverment + construction_effort + ANG_denounce_the_witch_king + ANG_reconcile_with_arnor + ANG_boost_the_industry_civilian_2 + } } \ No newline at end of file diff --git a/common/difficulty_settings/00_difficulty.txt b/common/difficulty_settings/00_difficulty.txt index b5a645ba6..fd15ce054 100644 --- a/common/difficulty_settings/00_difficulty.txt +++ b/common/difficulty_settings/00_difficulty.txt @@ -1,2 +1,26 @@ difficulty_settings = { + difficulty_setting = { + key = "custom_diff_strong_mor" + modifier = diff_strong_ai_generic + countries = { MOR } + multiplier = 2.0 + } + difficulty_setting = { + key = "custom_diff_strong_gon" + modifier = diff_strong_ai_generic + countries = { GON } + multiplier = 2.0 + } + difficulty_setting = { + key = "custom_diff_strong_ise" + modifier = diff_strong_ai_generic + countries = { ISE } + multiplier = 2.0 + } + difficulty_setting = { + key = "custom_diff_strong_roh" + modifier = diff_strong_ai_generic + countries = { ROH } + multiplier = 2.0 + } } diff --git a/common/game_rules/00_game_rules.txt b/common/game_rules/00_game_rules.txt index 5a1ea879f..dcf6c7db6 100644 --- a/common/game_rules/00_game_rules.txt +++ b/common/game_rules/00_game_rules.txt @@ -60,21 +60,6 @@ allow_wargoals = { text = RULE_OPTION_FOCUSES_ONLY desc = "RULE_ALLOW_WARGOALS_FOCUSES_ONLY_DESC" } - option = { - name = "FOCUSES_ONLY_UNTIL_38" - text = RULE_OPTION_FOCUSES_ONLY_38 - desc = "RULE_ALLOW_WARGOALS_FOCUSES_ONLY_38_DESC" - } - option = { - name = "FOCUSES_ONLY_UNTIL_39" - text = RULE_OPTION_FOCUSES_ONLY_39 - desc = "RULE_ALLOW_WARGOALS_FOCUSES_ONLY_39_DESC" - } - option = { - name = "FOCUSES_ONLY_UNTIL_40" - text = RULE_OPTION_FOCUSES_ONLY_40 - desc = "RULE_ALLOW_WARGOALS_FOCUSES_ONLY_40_DESC" - } } allow_access = { name = "RULE_ALLOW_MILITARY_ACCESS" @@ -355,22 +340,6 @@ allow_party_boosting = { ### ### # ### ## ### ## # # # ### # # # ### # # # ### ## -allow_paratroopers = { - name = "RULE_ALLOW_PARATROOPERS" - group = "RULE_GROUP_GAMEPLAY" - icon = "GFX_paradrops" - option = { - name = yes - text = "RULE_OPTION_ALLOWED" - desc = "RULE_ALLOW_PARATROOPERS_ALLOWED_DESC" - } - option = { - name = no - text = "RULE_OPTION_BLOCKED" - desc = "RULE_ALLOW_PARATROOPERS_BLOCKED_DESC" - } -} - #minimum_division_width = { # name = "RULE_MINIMUM_WIDTH" # group = "RULE_GROUP_DIVISION_TEMPLATES" @@ -597,40 +566,45 @@ MOR_ai_behavior = { } option = { name = BELLIGERENT_HISTORICAL - text = "MOR_RULE_OPTION_FASCIST" - desc = "MOR_RULE_OPTION_FASCIST_AI_DESC" - } -} - -RHU_ai_behavior = { - name = "RHU_AI_BEHAVIOR" - group = "RULE_GROUP_AI_BEHAVIOR" - default = { - name = DEFAULT - text = "RULE_OPTION_DEFAULT" - desc = "RULE_OPTION_DEFAULT_AI_DESC" + text = "MOR_RULE_OPTION_BELLIGERENT" + desc = "MOR_RULE_OPTION_BELLIGERENT_AI_DESC" } option = { - name = BELLIGERENT_HISTORICAL - text = "RHU_RULE_OPTION_FASCIST" - desc = "RHU_RULE_OPTION_FASCIST_AI_DESC" + name = REVOLUTIONARY_PLAN + text = "MOR_RULE_OPTION_REVOLUTIONARY" + desc = "MOR_RULE_OPTION_REVOLUTIONARY_AI_DESC" } } -HAR_ai_behavior = { - name = "HAR_AI_BEHAVIOR" - group = "RULE_GROUP_AI_BEHAVIOR" - default = { - name = DEFAULT - text = "RULE_OPTION_DEFAULT" - desc = "RULE_OPTION_DEFAULT_AI_DESC" - } - option = { - name = BELLIGERENT_HISTORICAL - text = "HAR_RULE_OPTION_FASCIST" - desc = "HAR_RULE_OPTION_FASCIST_AI_DESC" - } -} +#RHU_ai_behavior = { +# name = "RHU_AI_BEHAVIOR" +# group = "RULE_GROUP_AI_BEHAVIOR" +# default = { +# name = DEFAULT +# text = "RULE_OPTION_DEFAULT" +# desc = "RULE_OPTION_DEFAULT_AI_DESC" +# } +# option = { +# name = BELLIGERENT_HISTORICAL +# text = "RHU_RULE_OPTION_FASCIST" +# desc = "RHU_RULE_OPTION_FASCIST_AI_DESC" +# } +#} + +#HAR_ai_behavior = { +# name = "HAR_AI_BEHAVIOR" +# group = "RULE_GROUP_AI_BEHAVIOR" +# default = { +# name = DEFAULT +# text = "RULE_OPTION_DEFAULT" +# desc = "RULE_OPTION_DEFAULT_AI_DESC" +# } +# option = { +# name = BELLIGERENT_HISTORICAL +# text = "HAR_RULE_OPTION_FASCIST" +# desc = "HAR_RULE_OPTION_FASCIST_AI_DESC" +# } +#} ANG_ai_behavior = { name = "ANG_AI_BEHAVIOR" @@ -641,9 +615,19 @@ ANG_ai_behavior = { desc = "RULE_OPTION_DEFAULT_AI_DESC" } option = { - name = BELLIGERENT_HISTORICAL - text = "ANG_RULE_OPTION_FASCIST" - desc = "ANG_RULE_OPTION_FASCIST_AI_DESC" + name = UNALIGNED_HISTORICAL + text = "ANG_RULE_OPTION_UNALIGNED" + desc = "ANG_RULE_OPTION_UNALIGNED_AI_DESC" + } + option = { + name = BELLIGERENT_PLAN + text = "ANG_RULE_OPTION_BELLIGERENT" + desc = "ANG_RULE_OPTION_BELLIGERENT_AI_DESC" + } + option = { + name = COOPERATIVE_PLAN + text = "ANG_RULE_OPTION_COOPERATIVE" + desc = "ANG_RULE_OPTION_COOPERATIVE_AI_DESC" } } ## ## # # ### ## ### ### # # ### diff --git a/common/national_focus/angmar.txt b/common/national_focus/angmar.txt index 0d7e5dd97..12cbb8fcd 100644 --- a/common/national_focus/angmar.txt +++ b/common/national_focus/angmar.txt @@ -22,10 +22,13 @@ shared_focus = industrial_effort #Focus for The Fate of Angmar focus = { id = ANG_steady_as_we_go - icon = GFX_goal_support_unaligned - ai_will_do = { - factor = 1 - modifier = { factor = 0 is_going_unaligned = no } + icon = GFX_goal_support_unalligned + ai_will_do = { + base = 0 + modifier = { + add = 100 + has_country_flag = gameplan_going_unaligned + } } search_filters = { FOCUS_FILTER_POLITICAL } mutually_exclusive = { focus = thefateofangmar } @@ -313,7 +316,16 @@ focus = { id = thefateofangmar icon = GFX_goal_angmar_unaligned search_filters = { FOCUS_FILTER_POLITICAL } - ai_will_do = { factor = 4 } + ai_will_do = { + base = 0 + modifier = { + add = 100 + OR = { + has_country_flag = gameplan_going_belligerent + has_country_flag = gameplan_going_cooperative + } + } + } mutually_exclusive = { focus = ANG_steady_as_we_go } x = 25 y = 0 @@ -328,8 +340,11 @@ focus = { icon = GFX_goal_support_cooperative search_filters = { FOCUS_FILTER_POLITICAL } ai_will_do = { - factor = 5 - modifier = { factor = 0 is_going_cooperative = no } + base = 0 + modifier = { + add = 25 + has_country_flag = gameplan_going_cooperative + } } relative_position_id = thefateofangmar x = -4 @@ -1282,8 +1297,11 @@ focus = { relative_position_id = thefateofangmar search_filters = { FOCUS_FILTER_POLITICAL } ai_will_do = { - factor = 5 - modifier = { factor = 0 is_going_belligerent = no } + base = 0 + modifier = { + add = 25 + has_country_flag = gameplan_going_belligerent + } } x = 13 y = 1 diff --git a/common/national_focus/mordor.txt b/common/national_focus/mordor.txt index 22a7844c8..fc4e4fa69 100644 --- a/common/national_focus/mordor.txt +++ b/common/national_focus/mordor.txt @@ -76,7 +76,11 @@ default = no id = resistsauron icon = GFX_goal_mor_azog_orc_revolt ai_will_do = { - factor = 25 + factor = 0 + modifier = { + add = 100 + has_country_flag = gameplan_going_revolutionary + } } bypass = { has_global_flag = mordor_civil_war has_government = revolutionary} x = -7 @@ -1788,7 +1792,11 @@ focus = { id = submittosauron icon = GFX_goal_sauron_eye ai_will_do = { - factor = 75 + factor = 0 + modifier = { + add = 100 + has_country_flag = gameplan_going_belligerent + } } available = { has_government = belligerent } x = 3 diff --git a/common/scripted_effects/00_gameplan.txt b/common/scripted_effects/00_gameplan.txt index ccf604288..10fdd2d3a 100644 --- a/common/scripted_effects/00_gameplan.txt +++ b/common/scripted_effects/00_gameplan.txt @@ -139,23 +139,49 @@ set_gameplan_generic = { set_gameplan_ANG = { - random_list = { - 10 = { - modifier = { - is_historical_focus_on = yes - factor=0 + if = { + limit = { + has_game_rule = { + rule = ANG_AI_BEHAVIOR + option = UNALIGNED_HISTORICAL } - set_country_flag = gamplan_going_belligerent } - 10 = { - modifier = { - is_historical_focus_on = yes - factor=0 + set_country_flag = gameplan_going_unaligned + }else_if = { + limit = { + has_game_rule = { + rule = ANG_AI_BEHAVIOR + option = BELLIGERENT_PLAN } - set_country_flag = gameplan_going_cooperative } - 10 = { - set_country_flag = gameplan_going_unaligned + set_country_flag = gameplan_going_belligerent + }else_if = { + limit = { + has_game_rule = { + rule = ANG_AI_BEHAVIOR + option = COOPERATIVE_PLAN + } + } + set_country_flag = gameplan_going_cooperative + }else = { + random_list = { + 10 = { + modifier = { + is_historical_focus_on = yes + factor=0 + } + set_country_flag = gameplan_going_belligerent + } + 10 = { + modifier = { + is_historical_focus_on = yes + factor=0 + } + set_country_flag = gameplan_going_cooperative + } + 10 = { + set_country_flag = gameplan_going_unaligned + } } } } @@ -415,16 +441,34 @@ set_gameplan_MIR = { set_gameplan_MOR = { - random_list = { - 75 = { - set_country_flag = gamplan_going_belligerent + if = { + limit = { + has_game_rule = { + rule = MOR_AI_BEHAVIOR + option = BELLIGERENT_HISTORICAL + } } - 15 = { - modifier = { - is_historical_focus_on = yes - factor=0 + set_country_flag = gameplan_going_belligerent + }else_if = { + limit = { + has_game_rule = { + rule = MOR_AI_BEHAVIOR + option = REVOLUTIONARY_PLAN + } + } + set_country_flag = gameplan_going_revolutionary + }else = { + random_list = { + 75 = { + set_country_flag = gameplan_going_belligerent + } + 15 = { + modifier = { + is_historical_focus_on = yes + factor=0 + } + set_country_flag = gameplan_going_revolutionary } - set_country_flag = gameplan_going_revolutionary } } } diff --git a/common/scripted_triggers/diplomacy_scripted_triggers.txt b/common/scripted_triggers/diplomacy_scripted_triggers.txt index 97c6ed088..f96f56b61 100644 --- a/common/scripted_triggers/diplomacy_scripted_triggers.txt +++ b/common/scripted_triggers/diplomacy_scripted_triggers.txt @@ -506,42 +506,18 @@ DIPLOMACY_GENERATE_WARGOAL_ENABLE_TRIGGER = { always = no } } - if = { - limit = { - has_game_rule = { - rule = allow_wargoals - option = FOCUSES_ONLY_UNTIL_38 - } - } - custom_trigger_tooltip = { - tooltip = RULE_ALLOW_WARGOALS_FOCUSES_ONLY_38_DESC - date > 1938.1.1 - } - } - if = { - limit = { - has_game_rule = { - rule = allow_wargoals - option = FOCUSES_ONLY_UNTIL_39 - } - } - custom_trigger_tooltip = { - tooltip = RULE_ALLOW_WARGOALS_FOCUSES_ONLY_39_DESC - date > 1939.1.1 - } - } - if = { - limit = { - has_game_rule = { - rule = allow_wargoals - option = FOCUSES_ONLY_UNTIL_40 - } - } - custom_trigger_tooltip = { - tooltip = RULE_ALLOW_WARGOALS_FOCUSES_ONLY_40_DESC - date > 1940.1.1 - } - } + #if = { + # limit = { + # has_game_rule = { + # rule = allow_wargoals + # option = FOCUSES_ONLY_UNTIL_40 + # } + # } + # custom_trigger_tooltip = { + # tooltip = RULE_ALLOW_WARGOALS_FOCUSES_ONLY_40_DESC + # date > 1940.1.1 + # } + #} } DIPLOMACY_BOOST_PARTY_POPULARITY_ENABLE_TRIGGER = { if = { diff --git a/history/general/lotr_men_generic_advisors.txt b/history/general/lotr_men_generic_advisors.txt index 0ad75b0ac..3de884084 100644 --- a/history/general/lotr_men_generic_advisors.txt +++ b/history/general/lotr_men_generic_advisors.txt @@ -137,6 +137,10 @@ every_possible_country = { traits = { benevolent_protector } ai_will_do = { factor = 15 + modifier = { + add = 25 + has_country_flag = gameplan_going_cooperative + } } available = { if = { diff --git a/localisation/english/custom_game_rules_l_english.yml b/localisation/english/custom_game_rules_l_english.yml new file mode 100644 index 000000000..b51ed7723 --- /dev/null +++ b/localisation/english/custom_game_rules_l_english.yml @@ -0,0 +1,5 @@ +l_english: + custom_diff_strong_mor:0 "Strengthen Mordor" + custom_diff_strong_gon:0 "Strengthen Gondor" + custom_diff_strong_ise:0 "Strengthen Isengard" + custom_diff_strong_roh:0 "Strengthen Rohan" \ No newline at end of file From f7c3c4b30f826a689b557242502521162d955883 Mon Sep 17 00:00:00 2001 From: RubenVermaat Date: Tue, 17 Oct 2023 10:41:38 +0200 Subject: [PATCH 05/15] Worked on custom rules --- .../ai_strategy_plans/ANG_strategy_plans.txt | 4 +- .../ai_strategy_plans/GON_strategy_plans.txt | 64 ++++++++++++- .../ai_strategy_plans/LTH_strategy_plans.txt | 6 +- .../ai_strategy_plans/MOR_strategy_plans.txt | 2 +- common/game_rules/00_game_rules.txt | 80 +++++++++++------ common/national_focus/angmar.txt | 3 + common/national_focus/gondor.txt | 8 +- common/scripted_effects/00_gameplan.txt | 90 +++++++++++++------ common/scripted_triggers/00_gameplan.txt | 2 +- events/Isengard.txt | 4 +- history/general/lotr_men_generic_advisors.txt | 6 +- .../english/custom_game_rules_l_english.yml | 30 ++++++- 12 files changed, 228 insertions(+), 71 deletions(-) diff --git a/common/ai_strategy_plans/ANG_strategy_plans.txt b/common/ai_strategy_plans/ANG_strategy_plans.txt index 70f794635..9d70cd0c0 100644 --- a/common/ai_strategy_plans/ANG_strategy_plans.txt +++ b/common/ai_strategy_plans/ANG_strategy_plans.txt @@ -19,7 +19,7 @@ ANG_historical_plan = { } has_game_rule = { rule = ANG_AI_BEHAVIOR - option = BELLIGERENT_HISTORICAL + option = UNALIGNED_HISTORICAL } } } @@ -60,7 +60,7 @@ ANG_belligerent_plan = { OR = { ANG = { is_historical_focus_on = no - has_country_flag = gamplan_going_belligerent + has_country_flag = gameplan_going_belligerent } } } diff --git a/common/ai_strategy_plans/GON_strategy_plans.txt b/common/ai_strategy_plans/GON_strategy_plans.txt index 4f1be0017..2d94d8610 100644 --- a/common/ai_strategy_plans/GON_strategy_plans.txt +++ b/common/ai_strategy_plans/GON_strategy_plans.txt @@ -7,7 +7,13 @@ GON_historical_plan = { } enable = { - is_historical_focus_on = yes + OR = { + is_historical_focus_on = yes + has_game_rule = { + rule = GON_AI_BEHAVIOR + option = COOPERATIVE_PLAN + } + } } abort = { always = no @@ -27,6 +33,9 @@ GON_historical_plan = { GON_prepare_for_the_growing_theat_north GON_improve_infrastructure_west + GON_develop_the_south + GON_develop_the_west + GON_limit_denethor_political_power GON_declare_aragorn_the_rightful_heir @@ -40,6 +49,7 @@ GON_historical_plan = { GON_send_faramir_with_the_fellowship = 0 GON_delegitimize_aragorns_claim = 0 GON_persuade_aragorn_to_come_to_Gondor = 0 + GON_send_help_towards_aragorn = 0 } } @@ -59,8 +69,30 @@ GON_cooperative_unhistorical = { always = no } - focus_factors = { - GON_delegitimize_aragorns_claim = 0 + ai_national_focuses = { + GON_internal_policy_department + GON_reinforce_osgilliath + GON_expand_the_military_production + GON_where_is_the_string + GON_university_of_minas_tirith + + GON_honor_isildurs_legacy + GON_prepare_for_the_king_return + GON_rally_support_from_the_people + GON_limit_denethor_militair_power + + GON_prepare_for_the_growing_theat_north + GON_improve_infrastructure_west + + GON_develop_the_south + GON_develop_the_west + + GON_limit_denethor_political_power + GON_declare_aragorn_the_rightful_heir + + GON_invite_aragorn_to_minas_tirith + GON_crown_aragorn_king + GON_restore_the_kingdom_of_gondor } } @@ -115,6 +147,32 @@ GON_unaligned_unhistorical = { always = no } + ai_national_focuses = { + GON_delegitimize_aragorns_claim + GON_change_the_law + + GON_internal_policy_department + GON_reinforce_osgilliath + GON_expand_the_military_production + GON_where_is_the_string + GON_university_of_minas_tirith + + GON_purge_the_crown_loyalists + GON_enforce_militair_loyalty + GON_gondor_propaganda + GON_publish_statement + + GON_prepare_for_the_growing_theat_north + GON_improve_infrastructure_west + + GON_develop_the_south + GON_develop_the_west + + GON_steward_of_the_people + GON_rally_the_nation + + } + focus_factors = { GON_honor_isildurs_legacy = 0 GON_gondor_needs_no_king = 0 diff --git a/common/ai_strategy_plans/LTH_strategy_plans.txt b/common/ai_strategy_plans/LTH_strategy_plans.txt index fd65678aa..722f53fb0 100644 --- a/common/ai_strategy_plans/LTH_strategy_plans.txt +++ b/common/ai_strategy_plans/LTH_strategy_plans.txt @@ -358,7 +358,7 @@ LTH_gameplan_belligerent = { } enable = { - has_country_flag = gamplan_going_belligerent + has_country_flag = gameplan_going_belligerent NOT = { has_country_flag = gameplan_bully_elves } NOT = { has_country_flag = gameplan_bully_mortals } NOT = { has_country_flag = gamplan_harmonic_ascendancy } @@ -447,7 +447,7 @@ LTH_gameplan_belligerent_bully_elves = { } enable = { - has_country_flag = gamplan_going_belligerent + has_country_flag = gameplan_going_belligerent has_country_flag = gameplan_bully_elves NOT = { has_country_flag = gamplan_harmonic_ascendancy } } @@ -543,7 +543,7 @@ LTH_gameplan_belligerent_bully_mortals = { } enable = { - has_country_flag = gamplan_going_belligerent + has_country_flag = gameplan_going_belligerent has_country_flag = gameplan_bully_mortals NOT = { has_country_flag = gamplan_harmonic_ascendancy } } diff --git a/common/ai_strategy_plans/MOR_strategy_plans.txt b/common/ai_strategy_plans/MOR_strategy_plans.txt index 20a630d30..44be6373c 100644 --- a/common/ai_strategy_plans/MOR_strategy_plans.txt +++ b/common/ai_strategy_plans/MOR_strategy_plans.txt @@ -77,7 +77,7 @@ MOR_belligerent_unhistorical = { } enable = { - has_country_flag = gamplan_going_belligerent + has_country_flag = gameplan_going_belligerent is_historical_focus_on = no } abort = { diff --git a/common/game_rules/00_game_rules.txt b/common/game_rules/00_game_rules.txt index dcf6c7db6..c725cf0d4 100644 --- a/common/game_rules/00_game_rules.txt +++ b/common/game_rules/00_game_rules.txt @@ -576,6 +576,61 @@ MOR_ai_behavior = { } } +GON_ai_behavior = { + name = "GON_AI_BEHAVIOR" + group = "RULE_GROUP_AI_BEHAVIOR" + default = { + name = DEFAULT + text = "RULE_OPTION_DEFAULT" + desc = "RULE_OPTION_DEFAULT_AI_DESC" + } + option = { + name = UNALIGNED_PLAN + text = "ANG_RULE_OPTION_UNALIGNED" + desc = "ANG_RULE_OPTION_UNALIGNED_AI_DESC" + } + option = { + name = REVOLUTIONARY_PLAN + text = "ANG_RULE_OPTION_REVOLUTIONARY" + desc = "ANG_RULE_OPTION_REVOLUTIONARY_AI_DESC" + } + option = { + name = COOPERATIVE_UNHISTORICAL + text = "ANG_RULE_OPTION_COOPERATIVE_UNHISTORICAL" + desc = "ANG_RULE_OPTION_COOPERATIVE_UNHISTORICAL_AI_DESC" + } + option = { + name = COOPERATIVE_PLAN + text = "ANG_RULE_OPTION_COOPERATIVE" + desc = "ANG_RULE_OPTION_COOPERATIVE_AI_DESC" + } +} + +ANG_ai_behavior = { + name = "ANG_AI_BEHAVIOR" + group = "RULE_GROUP_AI_BEHAVIOR" + default = { + name = DEFAULT + text = "RULE_OPTION_DEFAULT" + desc = "RULE_OPTION_DEFAULT_AI_DESC" + } + option = { + name = UNALIGNED_HISTORICAL + text = "ANG_RULE_OPTION_UNALIGNED" + desc = "ANG_RULE_OPTION_UNALIGNED_AI_DESC" + } + option = { + name = BELLIGERENT_PLAN + text = "ANG_RULE_OPTION_BELLIGERENT" + desc = "ANG_RULE_OPTION_BELLIGERENT_AI_DESC" + } + option = { + name = COOPERATIVE_PLAN + text = "ANG_RULE_OPTION_COOPERATIVE" + desc = "ANG_RULE_OPTION_COOPERATIVE_AI_DESC" + } +} + #RHU_ai_behavior = { # name = "RHU_AI_BEHAVIOR" # group = "RULE_GROUP_AI_BEHAVIOR" @@ -605,31 +660,6 @@ MOR_ai_behavior = { # desc = "HAR_RULE_OPTION_FASCIST_AI_DESC" # } #} - -ANG_ai_behavior = { - name = "ANG_AI_BEHAVIOR" - group = "RULE_GROUP_AI_BEHAVIOR" - default = { - name = DEFAULT - text = "RULE_OPTION_DEFAULT" - desc = "RULE_OPTION_DEFAULT_AI_DESC" - } - option = { - name = UNALIGNED_HISTORICAL - text = "ANG_RULE_OPTION_UNALIGNED" - desc = "ANG_RULE_OPTION_UNALIGNED_AI_DESC" - } - option = { - name = BELLIGERENT_PLAN - text = "ANG_RULE_OPTION_BELLIGERENT" - desc = "ANG_RULE_OPTION_BELLIGERENT_AI_DESC" - } - option = { - name = COOPERATIVE_PLAN - text = "ANG_RULE_OPTION_COOPERATIVE" - desc = "ANG_RULE_OPTION_COOPERATIVE_AI_DESC" - } -} ## ## # # ### ## ### ### # # ### # # # ## ## # # # # # # # # # ## #### # # # ## # ## # # # ### diff --git a/common/national_focus/angmar.txt b/common/national_focus/angmar.txt index 12cbb8fcd..81664a1c8 100644 --- a/common/national_focus/angmar.txt +++ b/common/national_focus/angmar.txt @@ -48,6 +48,9 @@ focus = { ai_will_do = { factor = 15 } + available = { + has_country_flag = gameplan_going_belligerent + } search_filters = { FOCUS_FILTER_POLITICAL } relative_position_id = ANG_steady_as_we_go x = 0 diff --git a/common/national_focus/gondor.txt b/common/national_focus/gondor.txt index 0cbb15be0..9f1b71330 100644 --- a/common/national_focus/gondor.txt +++ b/common/national_focus/gondor.txt @@ -25,7 +25,7 @@ continuous_focus_position = { x = 50 y = 1700 } available_if_capitulated = yes search_filters = { FOCUS_FILTER_POLITICAL } completion_reward = { - add_timed_idea = { days = 365 idea = generic_unaligned } + add_timed_idea = { days = 365 idea = generic_unaligned_intermediate } } } @@ -108,6 +108,10 @@ continuous_focus_position = { x = 50 y = 1700 } search_filters = { FOCUS_FILTER_ARMY_XP } completion_reward = { army_experience = 25 + add_popularity = { + ideology = unaligned + popularity = 0.05 + } if = { limit = { denethor_is_leader = yes } denethor_gets_less_paranoid = yes @@ -2808,7 +2812,7 @@ continuous_focus_position = { x = 50 y = 1700 } search_filters = { FOCUS_FILTER_STABILITY FOCUS_FILTER_POLITICAL } completion_reward = { # Add idea that gives revo + unaligned support and takes away coop support - add_ideas = GON_popular_support_campaign + add_timed_idea = { idea = GON_popular_support_campaign days = 356 } add_stability = 0.1 add_popularity = { ideology = revolutionary diff --git a/common/scripted_effects/00_gameplan.txt b/common/scripted_effects/00_gameplan.txt index 10fdd2d3a..7897ba3e4 100644 --- a/common/scripted_effects/00_gameplan.txt +++ b/common/scripted_effects/00_gameplan.txt @@ -25,7 +25,7 @@ set_gameplan_generic = { NOT = { has_government = belligerent } } - set_country_flag = gamplan_going_belligerent + set_country_flag = gameplan_going_belligerent } # REVOLUTIONARY @@ -194,7 +194,7 @@ set_gameplan_ART = { is_historical_focus_on = yes factor=0 } - set_country_flag = gamplan_going_belligerent + set_country_flag = gameplan_going_belligerent } 10 = { modifier = { @@ -213,7 +213,7 @@ set_gameplan_ART = { set_gameplan_RHU = { random_list = { 8 = { - set_country_flag = gamplan_going_belligerent + set_country_flag = gameplan_going_belligerent } 0 = { modifier = { @@ -233,7 +233,7 @@ set_gameplan_ENT = { is_historical_focus_on = yes factor=0 } - set_country_flag = gamplan_going_belligerent + set_country_flag = gameplan_going_belligerent } 10 = { modifier = { @@ -263,7 +263,7 @@ set_gameplan_ERE = { is_historical_focus_on = yes factor=0 } - set_country_flag = gamplan_going_belligerent + set_country_flag = gameplan_going_belligerent } 6 = { modifier = { @@ -280,23 +280,57 @@ set_gameplan_ERE = { set_gameplan_GON = { - random_list = { - 2 = { - modifier = { - is_historical_focus_on = yes - factor=0 - } - set_country_flag = gameplan_going_revolutionary + if = { + limit = { + has_game_rule = { + rule = GON_AI_BEHAVIOR + option = UNALIGNED_PLAN + } } - 6 = { - modifier = { - is_historical_focus_on = yes - factor=0 - } - set_country_flag = gameplan_going_unaligned + set_country_flag = gameplan_going_unaligned + } else_if = { + limit = { + has_game_rule = { + rule = GON_AI_BEHAVIOR + option = REVOLUTIONARY_PLAN + } } - 13 = { - set_country_flag = gameplan_going_cooperative + set_country_flag = gameplan_going_revolutionary + } else_if = { + limit = { + has_game_rule = { + rule = GON_AI_BEHAVIOR + option = COOPERATIVE_UNHISTORICAL + } + } + set_country_flag = gameplan_going_cooperative + } else_if = { + limit = { + has_game_rule = { + rule = GON_AI_BEHAVIOR + option = COOPERATIVE_PLAN + } + } + set_country_flag = gameplan_going_cooperative + } else = { + random_list = { + 2 = { + modifier = { + is_historical_focus_on = yes + factor=0 + } + set_country_flag = gameplan_going_revolutionary + } + 6 = { + modifier = { + is_historical_focus_on = yes + factor=0 + } + set_country_flag = gameplan_going_unaligned + } + 13 = { + set_country_flag = gameplan_going_cooperative + } } } } @@ -304,14 +338,14 @@ set_gameplan_GON = { set_gameplan_HAR = { # There is no alternate paths for HAR afaik - set_country_flag = gamplan_going_belligerent + set_country_flag = gameplan_going_belligerent } set_gameplan_ISE = { random_list = { 65 = { - set_country_flag = gamplan_going_belligerent + set_country_flag = gameplan_going_belligerent } 15 = { modifier = { @@ -362,7 +396,7 @@ set_gameplan_LTH = { } # belligerent 6 = { - set_country_flag = gamplan_going_belligerent + set_country_flag = gameplan_going_belligerent random_list = { 5 = { } 3 = { @@ -380,7 +414,7 @@ set_gameplan_LTH = { # mix/harmonic ascendancy 2 = { set_country_flag = gameplan_going_revolutionary - set_country_flag = gamplan_going_belligerent + set_country_flag = gameplan_going_belligerent set_country_flag = gamplan_harmonic_ascendancy } } @@ -423,7 +457,7 @@ set_gameplan_MIR = { is_historical_focus_on = yes factor=0 } - set_country_flag = gamplan_going_belligerent + set_country_flag = gameplan_going_belligerent } 7 = { modifier = { @@ -491,7 +525,7 @@ set_gameplan_RIV = { is_historical_focus_on = yes factor=0 } - set_country_flag = gamplan_going_belligerent + set_country_flag = gameplan_going_belligerent } 15 = { modifier = { @@ -525,7 +559,7 @@ set_gameplan_ROH = { is_historical_focus_on = yes factor=0 } - set_country_flag = gamplan_going_belligerent + set_country_flag = gameplan_going_belligerent } 25 = { set_country_flag = gameplan_going_cooperative @@ -541,7 +575,7 @@ set_gameplan_SHI = { is_historical_focus_on = yes factor=0 } - set_country_flag = gamplan_going_belligerent + set_country_flag = gameplan_going_belligerent } 15 = { set_country_flag = gameplan_going_cooperative diff --git a/common/scripted_triggers/00_gameplan.txt b/common/scripted_triggers/00_gameplan.txt index d806b5ac2..92906fa08 100644 --- a/common/scripted_triggers/00_gameplan.txt +++ b/common/scripted_triggers/00_gameplan.txt @@ -66,7 +66,7 @@ is_going_cooperative = { } is_going_belligerent = { - has_country_flag = gamplan_going_belligerent + has_country_flag = gameplan_going_belligerent } is_going_revolutionary = { diff --git a/events/Isengard.txt b/events/Isengard.txt index a87839032..3dfe723bd 100644 --- a/events/Isengard.txt +++ b/events/Isengard.txt @@ -119,7 +119,7 @@ country_event = { } # Adjust gameplan flag - set_country_flag = gamplan_going_belligerent + set_country_flag = gameplan_going_belligerent clr_country_flag = gameplan_going_cooperative add_ideas = ISE_commited_to_the_dark @@ -155,7 +155,7 @@ country_event = { # Adjust gameplan flag set_country_flag = gameplan_going_cooperative - clr_country_flag = gamplan_going_belligerent + clr_country_flag = gameplan_going_belligerent # Complete focuses if = { diff --git a/history/general/lotr_men_generic_advisors.txt b/history/general/lotr_men_generic_advisors.txt index 3de884084..15b088169 100644 --- a/history/general/lotr_men_generic_advisors.txt +++ b/history/general/lotr_men_generic_advisors.txt @@ -24,10 +24,10 @@ every_possible_country = { cost = 150 traits = { superiority_preacher } ai_will_do = { - factor = 15 + base = 15 modifier = { - has_idea = generic_unaligned - add = -25 + has_country_flag = gameplan_going_belligerent + add = 25 } } available = { diff --git a/localisation/english/custom_game_rules_l_english.yml b/localisation/english/custom_game_rules_l_english.yml index b51ed7723..e4a2a39c7 100644 --- a/localisation/english/custom_game_rules_l_english.yml +++ b/localisation/english/custom_game_rules_l_english.yml @@ -2,4 +2,32 @@ custom_diff_strong_mor:0 "Strengthen Mordor" custom_diff_strong_gon:0 "Strengthen Gondor" custom_diff_strong_ise:0 "Strengthen Isengard" - custom_diff_strong_roh:0 "Strengthen Rohan" \ No newline at end of file + custom_diff_strong_roh:0 "Strengthen Rohan" + + RULE_GROUP_AI_BEHAVIOR:0 "AI behavior" + RULE_OPTION_DEFAULT:0 "Default" + RULE_OPTION_DEFAULT_AI_DESC:0 "AI will randomly choose a path to go down at the start of the game" + + MOR_AI_BEHAVIOR:0 "Mordor behavior" + MOR_RULE_OPTION_BELLIGERENT:0 "Belligerent path" + MOR_RULE_OPTION_BELLIGERENT_AI_DESC:0 "AI will try to conquer Middle-earth as Sauron" + MOR_RULE_OPTION_REVOLUTIONARY:0 "Revolutionary path" + MOR_RULE_OPTION_REVOLUTIONARY_AI_DESC:0 "The AI will go down the Orc Revolutionary path" + + GON_AI_BEHAVIOR:0 "Gondor behavior" + ANG_RULE_OPTION_UNALIGNED:0 "Unaligned path" + ANG_RULE_OPTION_UNALIGNED_AI_DESC:0 "The AI will go down the Denethor as ruler path" + ANG_RULE_OPTION_REVOLUTIONARY:0 "Revolutionary path" + ANG_RULE_OPTION_REVOLUTIONARY_AI_DESC:0 "The AI will go down the Revolutionary path" + ANG_RULE_OPTION_COOPERATIVE_UNHISTORICAL:0 "Cooperative unhistorical path" + ANG_RULE_OPTION_COOPERATIVE_UNHISTORICAL_AI_DESC:0 "AI will go down the cooperative path in his own way" + ANG_RULE_OPTION_COOPERATIVE:0 "Cooperative path" + ANG_RULE_OPTION_COOPERATIVE_AI_DESC:0 "AI will try to go down the cooperative path as close to the lore as possible" + + ANG_AI_BEHAVIOR:0 "Angmar behavior" + ANG_RULE_OPTION_BELLIGERENT:0 "Belligerent path" + ANG_RULE_OPTION_BELLIGERENT_AI_DESC:0 "AI will try to get the Witch-king back into power and expend its territory" + ANG_RULE_OPTION_UNALIGNED:0 "Neutrallity path" + ANG_RULE_OPTION_UNALIGNED_AI_DESC:0 "AI will go down its Neutrallity path" + ANG_RULE_OPTION_COOPERATIVE:0 "Cooperative path" + ANG_RULE_OPTION_COOPERATIVE_AI_DESC:0 "AI will try to go down the cooperative path" \ No newline at end of file From ef5d6fecf13362017103e895421bb8257429f82b Mon Sep 17 00:00:00 2001 From: RubenVermaat Date: Tue, 17 Oct 2023 12:33:53 +0200 Subject: [PATCH 06/15] Worked on ANG belligerent path --- .../00_traits_advisors_lotr.txt | 2 +- common/national_focus/angmar.txt | 20 +++++++++++++------ history/general/lotr_men_generic_advisors.txt | 7 ++----- 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/common/country_leader/00_traits_advisors_lotr.txt b/common/country_leader/00_traits_advisors_lotr.txt index 831706a1b..387e9c792 100644 --- a/common/country_leader/00_traits_advisors_lotr.txt +++ b/common/country_leader/00_traits_advisors_lotr.txt @@ -51,7 +51,7 @@ leader_traits = { } modifier = { is_going_belligerent = yes - date > 3020.01.01 + date > 3019.01.01 add = 10 } } diff --git a/common/national_focus/angmar.txt b/common/national_focus/angmar.txt index 81664a1c8..c798ce9f4 100644 --- a/common/national_focus/angmar.txt +++ b/common/national_focus/angmar.txt @@ -1803,7 +1803,7 @@ focus = { cost = 5 available_if_capitulated = yes completion_reward = { - add_stability = 0.10 + add_stability = 0.025 152 = { add_building_construction = { type = bunker level = 3 instant_build = yes province = 306 } } @@ -1827,7 +1827,7 @@ focus = { available_if_capitulated = yes completion_reward = { #148 1863 - add_stability = 0.10 + add_stability = 0.05 set_capital = {state = 148} add_state_core = 148 148 = { @@ -1864,7 +1864,13 @@ focus = { id = ANG_reclaim_rhudaur icon = GFX_goal_generic_major_war search_filters = { FOCUS_FILTER_ANNEXATION } - ai_will_do = { factor = 8 } + ai_will_do = { + factor = 8 + modifier = { + add = -25 + has_completed_focus = ANG_find_a_new_leader + } + } bypass = { controls_state = 62 controls_state = 63 @@ -1980,7 +1986,9 @@ focus = { id = ANG_avenge_rivendell icon = GFX_goal_riv_elrond search_filters = { FOCUS_FILTER_ANNEXATION } - ai_will_do = { factor = 25 } + ai_will_do = { + factor = 5 + } available = { RIV = { exists = yes @@ -2001,7 +2009,7 @@ focus = { id = ANG_expend_to_the_east icon = GFX_goal_generic_more_territorial_claims search_filters = { FOCUS_FILTER_ANNEXATION } - ai_will_do = { factor = 25 } + ai_will_do = { factor = 5 } available = { VAL = { exists = yes @@ -2076,7 +2084,7 @@ focus = { focus = { id = ANG_reorder_production - icon = GFX_goal_generic_construct_mil_factory + icon = GFX_goal_generic_anvil search_filters = { FOCUS_FILTER_INDUSTRY } ai_will_do = { factor = 25 } relative_position_id = ANG_the_return_of_sauron diff --git a/history/general/lotr_men_generic_advisors.txt b/history/general/lotr_men_generic_advisors.txt index 15b088169..4e0c048e9 100644 --- a/history/general/lotr_men_generic_advisors.txt +++ b/history/general/lotr_men_generic_advisors.txt @@ -24,11 +24,8 @@ every_possible_country = { cost = 150 traits = { superiority_preacher } ai_will_do = { - base = 15 - modifier = { - has_country_flag = gameplan_going_belligerent - add = 25 - } + factor = 1 + #traits modifiers seem to be more important } available = { if = { From 95c7eedde0527945c37414e88e9e36ef79c0732f Mon Sep 17 00:00:00 2001 From: Benjamin Date: Tue, 17 Oct 2023 20:10:31 +0200 Subject: [PATCH 07/15] fixed MIO trait-queue --- .../industrial_organization_detail.gui | 58 +++++++++++++++---- 1 file changed, 46 insertions(+), 12 deletions(-) diff --git a/interface/military_industrial_organization/industrial_organization_detail.gui b/interface/military_industrial_organization/industrial_organization_detail.gui index 56faaee37..53896e9c3 100644 --- a/interface/military_industrial_organization/industrial_organization_detail.gui +++ b/interface/military_industrial_organization/industrial_organization_detail.gui @@ -19,7 +19,7 @@ guiTypes = { font = "hoi_36header" borderSize = {x = 0 y = 0} text = "INDUSTRIAL_ORG_DETAIL_WINDOW_TITLE" - maxWidth = 430 + maxWidth = 480 maxHeight = 20 fixedsize = yes format = left @@ -28,7 +28,7 @@ guiTypes = { containerWindowType = { name = "tabs" - position = { x=370 y=14 } + position = { x=480 y=14 } size = { width = 100%% height = 30 } buttonType = { @@ -66,14 +66,14 @@ guiTypes = { iconType = { name = "icon" - position = { x=5 y=15 } + position = { x=15 y=15 } alwaystransparent = yes spriteType = "GFX_land_battle_leader_skill_bg" } containerWindowType = { name = "size_icon_window" - position = { x = 65 y = 25 } + position = { x = 80 y = 25 } size = { width=42 height=60 } iconType = { @@ -97,7 +97,7 @@ guiTypes = { instantTextboxType = { name = "points" - position = { x = 110 y = 35 } + position = { x = 120 y = 25 } font = "hoi_18mbs" text = "POINTS" maxWidth = 150 @@ -108,7 +108,7 @@ guiTypes = { positionType = { name = "funds_progressbar_position" - position = { x = 110 y = 55 } + position = { x = 120 y = 55 } } } @@ -139,12 +139,21 @@ guiTypes = { spriteType ="GFX_tiled_window2_1b_border" } + buttonType = { + name = "open_queue_button" + position = { x=15 y=0 } + quadTextureSprite ="GFX_button_221x34" + buttonText = INDUSTRIAL_ORG_DETAIL_WINDOW_OPEN_QUEUE_BUTTON + buttonFont = "hoi_16mbs" + clicksound = click_default + } + smoothListBoxType = { # contains industrial_organisation_detail_modifier_item, industrial_organisation_detail_bonus_item, industrial_organisation_equipment_type_window # or industrial_organisation_detail_separator name = "aggregated_bonus_list" - position = { x = 0 y = 0 } - size = { x=268 y=450 } + position = { x = 0 y = 40 } + size = { x=268 y=410 } scrollbartype = "standardlistbox_slider" } } @@ -164,7 +173,7 @@ guiTypes = { # either show the "open policy" text, or the currently attached policy instantTextboxType = { name = "open_policies_text" - position = { x = 0 y = 30 } + position = { x = 0 y = 10 } font = "hoi_20b" text = "INDUSTRIAL_ORG_POLICY_BUTTON" maxWidth = 268 @@ -174,7 +183,7 @@ guiTypes = { } instantTextboxType = { name = "click_to_open_policies_text" - position = { x = 0 y = 45 } + position = { x = 0 y = 35 } text = "INDUSTRIAL_ORG_POLICY_WINDOW_INSTRUCTION_TT" font = "hoi_20b" maxWidth = 268 @@ -400,7 +409,7 @@ guiTypes = { containerWindowType = { name = "industrial_organisation_equipment_type_window" - size = { width=260 height=73 } + size = { width=260 height=60 } background = { name = "Background" @@ -410,7 +419,7 @@ guiTypes = { iconType ={ name = "equipment_type_icon" spriteType = "GFX_generic_mio_department_icon_infantry_offense" - position = {x=10 y=10} + position = {x=5 y=10} alwaystransparent = yes } @@ -528,6 +537,31 @@ guiTypes = { position = { x=-21 y=-32 } alwaystransparent = yes } + + containerWindowType = { + name = "queue_number_window" + position = { x=20 y=05 } + + iconType = { + name = "queue_number_frame" + spriteType = "GFX_topbar_alert_bg" + position = { x=0 y=0 } + alwaystransparent = yes + frame = 4 + scale = 1.3 + } + + instantTextBoxType = { + name ="queue_number" + position = { x=1 y=3 } + font = "hoi_16mbs" + text = "99" + format = center + maxWidth = 20 + maxHeight = 24 + fixedsize = yes + } + } } instantTextboxType = { From 41665bfa64a7fa35b5c6844b1a369c93bbc6eb70 Mon Sep 17 00:00:00 2001 From: Benjamin Date: Wed, 18 Oct 2023 19:19:47 +0200 Subject: [PATCH 08/15] extracted ring localizations --- interface/lotr_ring_details_view.gui | 24 +++++++++---------- .../0_lotr_core/lotr_ring_l_english.yml | 10 ++++++++ 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/interface/lotr_ring_details_view.gui b/interface/lotr_ring_details_view.gui index 3e6dc9363..12cda29ba 100644 --- a/interface/lotr_ring_details_view.gui +++ b/interface/lotr_ring_details_view.gui @@ -29,7 +29,7 @@ guiTypes = { name = "switch" position = { x = 0 y = 26 } font = "hoi_20b" - text = "Details on the current status of the Fellowship" + text = "quest_for_the_one_ring_status_desc" maxWidth = 1000 maxHeight = 20 format = center @@ -68,7 +68,7 @@ guiTypes = { name = "current_state" position = { x = 25 y = 410 } font = "merienda_13" - text = "Current Location: [?global.fs_currentstate.GetName]" + text = "ring_current_state" maxWidth = 500 maxHeight = 30 format = left @@ -78,7 +78,7 @@ guiTypes = { name = "next_state" position = { x = 25 y = 425 } font = "merienda_13" - text = "Moving Towards: [?global.fs_path_stack^0.GetName]" + text = "ring_next_state" maxWidth = 500 maxHeight = 30 format = left @@ -88,7 +88,7 @@ guiTypes = { name = "days_left" position = { x = 25 y = 440 } font = "merienda_13" - text = "Days Remaining: [?global.fs_days_left_in_state]" + text = "ring_days_left" maxWidth = 500 maxHeight = 30 format = left @@ -666,20 +666,20 @@ guiTypes = { } instantTextboxType = { - name = "title" + name = "eventlog_title" position = { x = 0 y = 10 } font = "merienda_16" - text = "Event-Log" + text = "ring_eventlog_title" maxWidth = 610 maxHeight = 20 format = center } instantTextboxType = { - name = "switch" + name = "eventlog_desc" position = { x = 0 y = 35 } font = "merienda_10" - text = "The last 25 fellowship-related events" + text = "ring_eventlog_desc" maxWidth = 610 maxHeight = 20 format = center @@ -707,20 +707,20 @@ guiTypes = { } instantTextboxType = { - name = "title" + name = "fellowship_title" position = { x = 610 y = 18 } font = "merienda_16" - text = "The Fellowship of the Ring" + text = "ring_fellowship_title" maxWidth = 380 maxHeight = 20 format = center } instantTextboxType = { - name = "switch" + name = "fellowship_desc" position = { x = 610 y = 40 } font = "merienda_10" - text = "Current Fellowship Members" + text = "ring_fellowship_desc" maxWidth = 380 maxHeight = 20 format = center diff --git a/localisation/english/0_lotr_core/lotr_ring_l_english.yml b/localisation/english/0_lotr_core/lotr_ring_l_english.yml index b1e3d94dc..c3b58341f 100644 --- a/localisation/english/0_lotr_core/lotr_ring_l_english.yml +++ b/localisation/english/0_lotr_core/lotr_ring_l_english.yml @@ -278,3 +278,13 @@ ring_corruption_good_t:0 "§G-[?global.fs_ring_owner:power_balance_value|0%]§!" ring_corruption_bad_t:0 "[?global.fs_ring_owner:power_balance_value|-0%]" ring_corruption_decisions_bop:0 "The One Ring" + + quest_for_the_one_ring:0 "Quest for the One Ring" + quest_for_the_one_ring_status_desc:0 "Details on the current status of the Fellowship" + ring_current_state:0 "Current Location: [?global.fs_currentstate.GetName]" + ring_next_state:0 "Moving Towards: [?global.fs_path_stack^0.GetName]" + ring_days_left:0 "Days Remaining: [?global.fs_days_left_in_state]" + ring_eventlog_title:0 "Event-Log" + ring_eventlog_desc:0 "The last 25 fellowship-related events" + ring_fellowship_title:0 "The Fellowship of the Ring" + ring_fellowship_desc:0 "Current Fellowship Members" From b87b2b57b0abe89e4bd0e6eaa021785eff392079 Mon Sep 17 00:00:00 2001 From: RubenVermaat Date: Wed, 18 Oct 2023 20:50:37 +0200 Subject: [PATCH 09/15] Small fixes --- common/country_leader/00_traits_lotr.txt | 2 +- common/ideas/gondor.txt | 5 ++--- common/national_focus/angmar.txt | 6 +++++- common/national_focus/gondor.txt | 10 ++++++---- 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/common/country_leader/00_traits_lotr.txt b/common/country_leader/00_traits_lotr.txt index b84def4b7..3639de37c 100644 --- a/common/country_leader/00_traits_lotr.txt +++ b/common/country_leader/00_traits_lotr.txt @@ -123,7 +123,7 @@ leader_traits = { GON_power_hunger = { random = no - stability_factor = -0.05 + stability_factor = -0.025 political_power_factor = 0.05 unaligned_drift = 0.05 } diff --git a/common/ideas/gondor.txt b/common/ideas/gondor.txt index 4f9451f54..225b57785 100644 --- a/common/ideas/gondor.txt +++ b/common/ideas/gondor.txt @@ -428,7 +428,7 @@ ideas = { war_support_factor = -0.30 army_org_factor = -0.15 army_attack_factor = -0.15 - army_morale = -0.20 + army_morale_factor = -0.10 production_speed_industrial_complex_factor = -0.1 production_speed_arms_factory_factor = -0.1 production_speed_bunker_factor = 0.05 @@ -443,7 +443,7 @@ ideas = { war_support_factor = -0.20 army_org_factor = -0.10 army_attack_factor = -0.10 - army_morale = -0.15 + army_morale_factor = -0.05 production_speed_industrial_complex_factor = -0.1 production_speed_arms_factory_factor = -0.1 production_speed_bunker_factor = 0.05 @@ -457,7 +457,6 @@ ideas = { war_support_factor = -0.1 army_org_factor = -0.1 army_attack_factor = -0.1 - army_morale = -0.1 } } diff --git a/common/national_focus/angmar.txt b/common/national_focus/angmar.txt index c798ce9f4..f5da626f9 100644 --- a/common/national_focus/angmar.txt +++ b/common/national_focus/angmar.txt @@ -1195,10 +1195,14 @@ focus = { completion_reward = { GON = { add_opinion_modifier = { - target = GON + target = ANG modifier = medium_increase } } + add_opinion_modifier = { + target = GON + modifier = medium_increase + } } } diff --git a/common/national_focus/gondor.txt b/common/national_focus/gondor.txt index 9f1b71330..e03b8fd52 100644 --- a/common/national_focus/gondor.txt +++ b/common/national_focus/gondor.txt @@ -213,10 +213,8 @@ continuous_focus_position = { x = 50 y = 1700 } search_filters = { FOCUS_FILTER_POLITICAL FOCUS_FILTER_STABILITY FOCUS_FILTER_MANPOWER FOCUS_FILTER_INDUSTRY } available_if_capitulated = yes completion_reward = { - swap_ideas = { - remove_idea = GON_kingdom_without_king_1 - add_idea = GON_defeatist_0 - } + remove_ideas = GON_kingdom_without_king_1 + add_ideas = GON_defeatist_0 remove_denethor_paranoid = yes hidden_effect = { if = { @@ -1834,6 +1832,10 @@ continuous_focus_position = { x = 50 y = 1700 } cost = 10 search_filters = { FOCUS_FILTER_INDUSTRY } available_if_capitulated = yes + available = { + controls_state = 20 + controls_state = 136 + } completion_reward = { 20 = { add_building_construction = { type = infrastructure level = 2 instant_build = yes } From 547c4aef5bef2bfd877c2ed6ef0340c3b97d9ca0 Mon Sep 17 00:00:00 2001 From: RubenVermaat Date: Thu, 19 Oct 2023 11:29:53 +0200 Subject: [PATCH 10/15] Added Lothlorien to the custom game rules --- common/game_rules/00_game_rules.txt | 35 ++++ common/scripted_effects/00_gameplan.txt | 153 +++++++++++++----- .../english/custom_game_rules_l_english.yml | 14 +- 3 files changed, 158 insertions(+), 44 deletions(-) diff --git a/common/game_rules/00_game_rules.txt b/common/game_rules/00_game_rules.txt index c725cf0d4..81ceda4f5 100644 --- a/common/game_rules/00_game_rules.txt +++ b/common/game_rules/00_game_rules.txt @@ -631,6 +631,41 @@ ANG_ai_behavior = { } } +LTH_ai_behavior = { + name = "LTH_AI_BEHAVIOR" + group = "RULE_GROUP_AI_BEHAVIOR" + default = { + name = DEFAULT + text = "RULE_OPTION_DEFAULT" + desc = "RULE_OPTION_DEFAULT_AI_DESC" + } + option = { + name = UNALIGNED_HISTORICAL + text = "LTH_RULE_OPTION_UNALIGNED_HISTORICAL" + desc = "LTH_RULE_OPTION_UNALIGNED_HISTORICAL_AI_DESC" + } + option = { + name = UNALIGNED_UNHISTORICAL + text = "LTH_RULE_OPTION_UNALIGNED_UNHISTORICAL" + desc = "LTH_RULE_OPTION_UNALIGNED_UNHISTORICAL_AI_DESC" + } + option = { + name = COOPERATIVE_UNHISTORICAL + text = "LTH_RULE_OPTION_COOPERATIVE" + desc = "LTH_RULE_OPTION_COOPERATIVE_AI_DESC" + } + option = { + name = BELLIGERENT_UNHISTORICAL + text = "LTH_RULE_OPTION_BELLIGERENT" + desc = "LTH_RULE_OPTION_BELLIGERENT_AI_DESC" + } + option = { + name = REVOLUTIONARY_UNHISTORICAL + text = "LTH_RULE_OPTION_REVOLUTIONARY" + desc = "LTH_RULE_OPTION_REVOLUTIONARY_AI_DESC" + } +} + #RHU_ai_behavior = { # name = "RHU_AI_BEHAVIOR" # group = "RULE_GROUP_AI_BEHAVIOR" diff --git a/common/scripted_effects/00_gameplan.txt b/common/scripted_effects/00_gameplan.txt index 7897ba3e4..ebe05cee5 100644 --- a/common/scripted_effects/00_gameplan.txt +++ b/common/scripted_effects/00_gameplan.txt @@ -360,62 +360,129 @@ set_gameplan_ISE = { set_gameplan_LTH = { if = { - limit = { is_historical_focus_on = yes } + limit = { + OR = { + is_historical_focus_on = yes + has_game_rule = { + rule = LTH_AI_BEHAVIOR + option = UNALIGNED_HISTORICAL + } + } + } set_country_flag = gameplan_going_unaligned set_country_flag = gameplan_historical set_country_flag = gameplan_limited_intervention } - else = { - random_list = { - # unaligned - 35 = { - set_country_flag = gameplan_going_unaligned - random_list = { - 8 = { - set_country_flag = gameplan_limited_intervention - } - 5 = { - set_country_flag = gameplan_total_isolation - } + if = { + limit = { + has_game_rule = { + rule = LTH_AI_BEHAVIOR + option = UNALIGNED_UNHISTORICAL } } - # cooperative - 12 = { - set_country_flag = gameplan_going_cooperative - random_list = { - 10 = { } - 2 = { - set_country_flag = gameplan_white_council - } - 2 = { - set_country_flag = gameplan_elven_alliance - } + set_country_flag = gameplan_going_unaligned + random_list = { + 8 = { + set_country_flag = gameplan_limited_intervention + } + 5 = { + set_country_flag = gameplan_total_isolation } } - # belligerent - 6 = { - set_country_flag = gameplan_going_belligerent - random_list = { - 5 = { } - 3 = { - set_country_flag = gameplan_bully_elves - } - 3 = { - set_country_flag = gameplan_bully_mortals - } + } else_if = { + limit = { + has_game_rule = { + rule = LTH_AI_BEHAVIOR + option = COOPERATIVE_UNHISTORICAL } } - #revo - 4 = { - set_country_flag = gameplan_going_revolutionary + set_country_flag = gameplan_going_cooperative + random_list = { + 10 = { } + 2 = { + set_country_flag = gameplan_white_council + } + 2 = { + set_country_flag = gameplan_elven_alliance + } } - # mix/harmonic ascendancy - 2 = { - set_country_flag = gameplan_going_revolutionary - set_country_flag = gameplan_going_belligerent - set_country_flag = gamplan_harmonic_ascendancy + }else_if = { + limit = { + has_game_rule = { + rule = LTH_AI_BEHAVIOR + option = BELLIGERENT_UNHISTORICAL + } + } + set_country_flag = gameplan_going_belligerent + random_list = { + 5 = { } + 3 = { + set_country_flag = gameplan_bully_elves + } + 3 = { + set_country_flag = gameplan_bully_mortals + } + } + }else_if = { + limit = { + has_game_rule = { + rule = LTH_AI_BEHAVIOR + option = REVOLUTIONARY_UNHISTORICAL + } + } + set_country_flag = gameplan_going_revolutionary + } else = { + random_list = { + # unaligned + 35 = { + set_country_flag = gameplan_going_unaligned + random_list = { + 8 = { + set_country_flag = gameplan_limited_intervention + } + 5 = { + set_country_flag = gameplan_total_isolation + } + } + } + # cooperative + 12 = { + set_country_flag = gameplan_going_cooperative + random_list = { + 10 = { } + 2 = { + set_country_flag = gameplan_white_council + } + 2 = { + set_country_flag = gameplan_elven_alliance + } + } + } + # belligerent + 6 = { + set_country_flag = gameplan_going_belligerent + random_list = { + 5 = { } + 3 = { + set_country_flag = gameplan_bully_elves + } + 3 = { + set_country_flag = gameplan_bully_mortals + } + } + } + #revo + 4 = { + set_country_flag = gameplan_going_revolutionary + } + # mix/harmonic ascendancy + 2 = { + set_country_flag = gameplan_going_revolutionary + set_country_flag = gameplan_going_belligerent + set_country_flag = gamplan_harmonic_ascendancy + } } } diff --git a/localisation/english/custom_game_rules_l_english.yml b/localisation/english/custom_game_rules_l_english.yml index e4a2a39c7..9f46375b7 100644 --- a/localisation/english/custom_game_rules_l_english.yml +++ b/localisation/english/custom_game_rules_l_english.yml @@ -30,4 +30,16 @@ ANG_RULE_OPTION_UNALIGNED:0 "Neutrallity path" ANG_RULE_OPTION_UNALIGNED_AI_DESC:0 "AI will go down its Neutrallity path" ANG_RULE_OPTION_COOPERATIVE:0 "Cooperative path" - ANG_RULE_OPTION_COOPERATIVE_AI_DESC:0 "AI will try to go down the cooperative path" \ No newline at end of file + ANG_RULE_OPTION_COOPERATIVE_AI_DESC:0 "AI will try to go down the cooperative path" + + LTH_AI_BEHAVIOR:0 "Lothlorien behavior" + LTH_RULE_OPTION_UNALIGNED_HISTORICAL:0 "Neutrallity path historical" + LTH_RULE_OPTION_UNALIGNED_HISTORICAL_AI_DESC:0 "" + LTH_RULE_OPTION_UNALIGNED_UNHISTORICAL:0 "Neutrallity path unhistorical" + LTH_RULE_OPTION_UNALIGNED_UNHISTORICAL_AI_DESC:0 "" + LTH_RULE_OPTION_BELLIGERENT:0 "Belligerent path" + LTH_RULE_OPTION_BELLIGERENT_AI_DESC:0 "" + LTH_RULE_OPTION_COOPERATIVE:0 "Cooperative path" + LTH_RULE_OPTION_COOPERATIVE_AI_DESC:0 "" + LTH_RULE_OPTION_REVOLUTIONARY:0 "Revolutionary path" + LTH_RULE_OPTION_REVOLUTIONARY_AI_DESC:0 "" \ No newline at end of file From 1fdfd40f500f85abcf0a4076cef7a71aae960203 Mon Sep 17 00:00:00 2001 From: RubenVermaat Date: Thu, 19 Oct 2023 12:55:50 +0200 Subject: [PATCH 11/15] Added Rhun game rules --- .../ai_strategy_plans/HAR_strategy_plans.txt | 16 +---- .../ai_strategy_plans/MOR_strategy_plans.txt | 10 +-- .../ai_strategy_plans/RHU_strategy_plans.txt | 59 +++++++++++++----- common/game_rules/00_game_rules.txt | 33 +++++----- common/scripted_effects/00_gameplan.txt | 13 +--- .../RHU/rhu_nazghul_ringwraith_khamul.dds | Bin 8928 -> 4528 bytes .../english/custom_game_rules_l_english.yml | 10 ++- 7 files changed, 74 insertions(+), 67 deletions(-) diff --git a/common/ai_strategy_plans/HAR_strategy_plans.txt b/common/ai_strategy_plans/HAR_strategy_plans.txt index 05db2ea24..d7c711446 100644 --- a/common/ai_strategy_plans/HAR_strategy_plans.txt +++ b/common/ai_strategy_plans/HAR_strategy_plans.txt @@ -7,21 +7,7 @@ HAR_historical_plan = { } enable = { - OR = { - AND = { - is_historical_focus_on = yes - OR = { - has_game_rule = { - rule = HAR_AI_BEHAVIOR - option = DEFAULT - } - } - } - has_game_rule = { - rule = HAR_AI_BEHAVIOR - option = BELLIGERENT_HISTORICAL - } - } + is_historical_focus_on = yes } abort = { always = no diff --git a/common/ai_strategy_plans/MOR_strategy_plans.txt b/common/ai_strategy_plans/MOR_strategy_plans.txt index 44be6373c..ca05a9d52 100644 --- a/common/ai_strategy_plans/MOR_strategy_plans.txt +++ b/common/ai_strategy_plans/MOR_strategy_plans.txt @@ -8,15 +8,7 @@ MOR_historical_plan = { enable = { OR = { - AND = { - is_historical_focus_on = yes - OR = { - has_game_rule = { - rule = MOR_AI_BEHAVIOR - option = DEFAULT - } - } - } + is_historical_focus_on = yes has_game_rule = { rule = MOR_AI_BEHAVIOR option = BELLIGERENT_HISTORICAL diff --git a/common/ai_strategy_plans/RHU_strategy_plans.txt b/common/ai_strategy_plans/RHU_strategy_plans.txt index 365ca890d..a9f92497e 100644 --- a/common/ai_strategy_plans/RHU_strategy_plans.txt +++ b/common/ai_strategy_plans/RHU_strategy_plans.txt @@ -1,4 +1,4 @@ -RHU_historical_plan = { +RHU_belligerent_historical_plan = { name = "Rhun historical plan" desc = "Historical behavior for Rhun" @@ -7,21 +7,15 @@ RHU_historical_plan = { } enable = { + has_country_flag = gameplan_going_belligerent OR = { - AND = { - is_historical_focus_on = yes - OR = { - has_game_rule = { - rule = RHU_AI_BEHAVIOR - option = DEFAULT - } - } - } - has_game_rule = { - rule = RHU_AI_BEHAVIOR - option = BELLIGERENT_HISTORICAL - } - } + is_historical_focus_on = yes + has_game_rule = { + rule = RHU_AI_BEHAVIOR + option = BELLIGERENT_HISTORICAL + } + } + } abort = { always = no @@ -59,4 +53,39 @@ RHU_historical_plan = { RHU_look_to_our_neighbours RHU_lay_claim_on_the_iron } +} + +RHU_belligerent_unhistorical_plan = { + name = "Rhun unhistorical plan" + desc = "Historical behavior for Rhun" + + allowed = { + original_tag = RHU + } + + enable = { + has_country_flag = gameplan_going_belligerent + is_historical_focus_on = no + has_game_rule = { + rule = RHU_AI_BEHAVIOR + option = BELLIGERENT_UNHISTORICAL + } + } + abort = { + always = no + } + + ai_national_focuses = { + RHU_follow_the_dark_lord + RHU_kill_the_blue_wizards + RHU_develop_the_industry + RHU_develop_the_south + RHU_army_focus + RHU_develop_the_north + power_to_khamul + RHU_develop_military_south + RHU_develop_the_east + RHU_create_faction + RHU_honor_morgoth + } } \ No newline at end of file diff --git a/common/game_rules/00_game_rules.txt b/common/game_rules/00_game_rules.txt index 81ceda4f5..9f0b2e0b8 100644 --- a/common/game_rules/00_game_rules.txt +++ b/common/game_rules/00_game_rules.txt @@ -666,20 +666,25 @@ LTH_ai_behavior = { } } -#RHU_ai_behavior = { -# name = "RHU_AI_BEHAVIOR" -# group = "RULE_GROUP_AI_BEHAVIOR" -# default = { -# name = DEFAULT -# text = "RULE_OPTION_DEFAULT" -# desc = "RULE_OPTION_DEFAULT_AI_DESC" -# } -# option = { -# name = BELLIGERENT_HISTORICAL -# text = "RHU_RULE_OPTION_FASCIST" -# desc = "RHU_RULE_OPTION_FASCIST_AI_DESC" -# } -#} +RHU_ai_behavior = { + name = "RHU_AI_BEHAVIOR" + group = "RULE_GROUP_AI_BEHAVIOR" + default = { + name = DEFAULT + text = "RULE_OPTION_DEFAULT" + desc = "RULE_OPTION_DEFAULT_AI_DESC" + } + option = { + name = BELLIGERENT_HISTORICAL + text = "RHU_RULE_OPTION_BELLIGERENT" + desc = "RHU_RULE_OPTION_BELLIGERENT_AI_DESC" + } + option = { + name = BELLIGERENT_UNHISTORICAL + text = "RHU_RULE_OPTION_BELLIGERENT_UNHISTORICAL" + desc = "RHU_RULE_OPTION_BELLIGERENT_UNHISTORICAL_AI_DESC" + } +} #HAR_ai_behavior = { # name = "HAR_AI_BEHAVIOR" diff --git a/common/scripted_effects/00_gameplan.txt b/common/scripted_effects/00_gameplan.txt index ebe05cee5..6fb87f7c3 100644 --- a/common/scripted_effects/00_gameplan.txt +++ b/common/scripted_effects/00_gameplan.txt @@ -211,18 +211,7 @@ set_gameplan_ART = { set_gameplan_RHU = { - random_list = { - 8 = { - set_country_flag = gameplan_going_belligerent - } - 0 = { - modifier = { - is_historical_focus_on = yes - factor=0 - } - set_country_flag = gameplan_going_cooperative - } - } + set_country_flag = gameplan_going_belligerent } diff --git a/gfx/interface/goals/RHU/rhu_nazghul_ringwraith_khamul.dds b/gfx/interface/goals/RHU/rhu_nazghul_ringwraith_khamul.dds index 78e64e296ec27df99a87363ed768ec848a4e9a23..ae4644115af63cc62e8969dee7563e25c1be109c 100644 GIT binary patch literal 4528 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 literal 8928 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 diff --git a/localisation/english/custom_game_rules_l_english.yml b/localisation/english/custom_game_rules_l_english.yml index 9f46375b7..506db7ca1 100644 --- a/localisation/english/custom_game_rules_l_english.yml +++ b/localisation/english/custom_game_rules_l_english.yml @@ -6,7 +6,7 @@ RULE_GROUP_AI_BEHAVIOR:0 "AI behavior" RULE_OPTION_DEFAULT:0 "Default" - RULE_OPTION_DEFAULT_AI_DESC:0 "AI will randomly choose a path to go down at the start of the game" + RULE_OPTION_DEFAULT_AI_DESC:0 "If historical AI is off, AI will randomly choose a path to go down at the start of the game" MOR_AI_BEHAVIOR:0 "Mordor behavior" MOR_RULE_OPTION_BELLIGERENT:0 "Belligerent path" @@ -42,4 +42,10 @@ LTH_RULE_OPTION_COOPERATIVE:0 "Cooperative path" LTH_RULE_OPTION_COOPERATIVE_AI_DESC:0 "" LTH_RULE_OPTION_REVOLUTIONARY:0 "Revolutionary path" - LTH_RULE_OPTION_REVOLUTIONARY_AI_DESC:0 "" \ No newline at end of file + LTH_RULE_OPTION_REVOLUTIONARY_AI_DESC:0 "" + + RHU_AI_BEHAVIOR:0 "Rhun behavior" + RHU_RULE_OPTION_BELLIGERENT:0 "Belligerent path historical" + RHU_RULE_OPTION_BELLIGERENT_AI_DESC:0 "Will try to join Mordor" + RHU_RULE_OPTION_BELLIGERENT_UNHISTORICAL:0 "Belligerent path unhistorical" + RHU_RULE_OPTION_BELLIGERENT_UNHISTORICAL_AI_DESC:0 "Will try to create its own faction" \ No newline at end of file From d25a2b70566375d9672770345978695508e6cb74 Mon Sep 17 00:00:00 2001 From: Benjamin Date: Fri, 20 Oct 2023 10:57:46 +0200 Subject: [PATCH 12/15] Lowered Mirkwood DGU manpower losses --- events/Mirkwood.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/events/Mirkwood.txt b/events/Mirkwood.txt index 84492a7ba..a7de537bf 100644 --- a/events/Mirkwood.txt +++ b/events/Mirkwood.txt @@ -171,7 +171,7 @@ country_event = { option = { name = mirkwood.4.a set_global_flag = mirkwood_spider_warning - add_manpower = -60000 + add_manpower = -10000 82 = { remove_core_of = MIR } SPI = { add_state_core = 82 @@ -290,7 +290,7 @@ country_event = { option = { name = mirkwood.6.a set_global_flag = mirkwood_dolguldur_warning - add_manpower = -80000 + add_manpower = -20000 87 = { remove_core_of = MIR } } From 43d2637803a2a7880f0ff36ee0ed4148c5672cf0 Mon Sep 17 00:00:00 2001 From: Benjamin Date: Fri, 20 Oct 2023 10:59:19 +0200 Subject: [PATCH 13/15] typo fixes --- localisation/english/gondor/gondor_misc_l_english.yml | 4 ++-- localisation/english/replace/newsevents_l_english.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/localisation/english/gondor/gondor_misc_l_english.yml b/localisation/english/gondor/gondor_misc_l_english.yml index 122a0f4dc..a8d795746 100644 --- a/localisation/english/gondor/gondor_misc_l_english.yml +++ b/localisation/english/gondor/gondor_misc_l_english.yml @@ -6,12 +6,12 @@ ################################# GON_trade_agremeent:0 "Angmar trade agremeent" GON_orthanc_payment:0 "Payment for Orthanc" -GON_power_hunger:0 "Power hungery" +GON_power_hunger:0 "Power Hungry" GON_isildur_heir:0 "Isildur heir" GON_restored_monarchy:0 "Restored Monarchy" gondor_research_name:0 "Gondor Alliance Research Sharing Group" gondor_research_desc:0 "Reduced research time for technologies researched by other faction members." -fs_has_breakup:0 "Fellowship has brokenup" +fs_has_breakup:0 "Fellowship has broken up" fs_aragorn_in_fellowship:0 "Aragorn is in the fellowship" fs_aragorn_isnt_in_fellowship:0 "Aragorn isnt in the fellowship" GON_aragorn_leaves_the_fellowship:0 "§YAragorn§! leaves the fellowship" diff --git a/localisation/english/replace/newsevents_l_english.yml b/localisation/english/replace/newsevents_l_english.yml index f8c0d100a..703da0238 100644 --- a/localisation/english/replace/newsevents_l_english.yml +++ b/localisation/english/replace/newsevents_l_english.yml @@ -285,7 +285,7 @@ news.332.a:0 "Mysterious." ###################################### news.331.t:0 "Paranormal Activities in the Shire" - news.331.d:0 "The north Arthedian region, commonly knwon as the Shire, has been subject to recent commotion when one of their eldest members mysteriously vanished during his birithday celebrations. Bilbo Baggins, the oldest living Hobbit (age 111), was just giving his birthday speech when he reportedly 'vanished into thin air'. Hobbit authorities are investigating the happening. Allegedly the disappearance occured shortly after the arrival of firework specialist Gandalf the Grey at the village. He is being detained as a suspect for now. "Bilbo was always a quiet and reserved type of person, but I didn't imagine he would just leave so suddenly!" said Josephine Maxwell Baggins." + news.331.d:0 "The north Arthedian region, commonly known as the Shire, has been subject to recent commotion when one of their eldest members mysteriously vanished during his birthday celebrations. Bilbo Baggins, the oldest living Hobbit (age 111), was just giving his birthday speech when he reportedly 'vanished into thin air'. Hobbit authorities are investigating the happening. Allegedly the disappearance occured shortly after the arrival of firework specialist Gandalf the Grey at the village. He is being detained as a suspect for now. "Bilbo was always a quiet and reserved type of person, but I didn't imagine he would just leave so suddenly!" said Josephine Maxwell Baggins." news.331.a:0 "Worrying..." news.331.a.tt:0 "Unlocks the §YQuest for the Ring§! decisions." ######################### FELLOWSHIP NEWS EVENTS From 4912987c80302e5aba7f84b083c4b233d2255cde Mon Sep 17 00:00:00 2001 From: Benjamin Date: Fri, 20 Oct 2023 11:00:18 +0200 Subject: [PATCH 14/15] typo fix --- localisation/english/custom_game_rules_l_english.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/localisation/english/custom_game_rules_l_english.yml b/localisation/english/custom_game_rules_l_english.yml index 506db7ca1..d559d5497 100644 --- a/localisation/english/custom_game_rules_l_english.yml +++ b/localisation/english/custom_game_rules_l_english.yml @@ -27,15 +27,15 @@ ANG_AI_BEHAVIOR:0 "Angmar behavior" ANG_RULE_OPTION_BELLIGERENT:0 "Belligerent path" ANG_RULE_OPTION_BELLIGERENT_AI_DESC:0 "AI will try to get the Witch-king back into power and expend its territory" - ANG_RULE_OPTION_UNALIGNED:0 "Neutrallity path" - ANG_RULE_OPTION_UNALIGNED_AI_DESC:0 "AI will go down its Neutrallity path" + ANG_RULE_OPTION_UNALIGNED:0 "Unaligned path" + ANG_RULE_OPTION_UNALIGNED_AI_DESC:0 "AI will go down its Unaligned path" ANG_RULE_OPTION_COOPERATIVE:0 "Cooperative path" ANG_RULE_OPTION_COOPERATIVE_AI_DESC:0 "AI will try to go down the cooperative path" LTH_AI_BEHAVIOR:0 "Lothlorien behavior" - LTH_RULE_OPTION_UNALIGNED_HISTORICAL:0 "Neutrallity path historical" + LTH_RULE_OPTION_UNALIGNED_HISTORICAL:0 "Unaligned path historical" LTH_RULE_OPTION_UNALIGNED_HISTORICAL_AI_DESC:0 "" - LTH_RULE_OPTION_UNALIGNED_UNHISTORICAL:0 "Neutrallity path unhistorical" + LTH_RULE_OPTION_UNALIGNED_UNHISTORICAL:0 "Unaligned path unhistorical" LTH_RULE_OPTION_UNALIGNED_UNHISTORICAL_AI_DESC:0 "" LTH_RULE_OPTION_BELLIGERENT:0 "Belligerent path" LTH_RULE_OPTION_BELLIGERENT_AI_DESC:0 "" From 3db240b88eb1eeea3815b8be40eea6fbabd5ee22 Mon Sep 17 00:00:00 2001 From: Benjamin Date: Fri, 20 Oct 2023 11:02:06 +0200 Subject: [PATCH 15/15] GFX search update --- ...GFX_goal_rhu_nazghul_ringwraith_khamul.png | Bin 15176 -> 12459 bytes .../spirits/GFX_idea_gon_white_tree.png | Bin 605 -> 605 bytes .../__pycache__/gfxparser.cpython-310.pyc | Bin 555 -> 0 bytes .../__pycache__/gfxparser.cpython-311.pyc | Bin 851 -> 0 bytes .../imageconverter.cpython-310.pyc | Bin 857 -> 0 bytes .../imageconverter.cpython-311.pyc | Bin 1554 -> 0 bytes .../settingsreader.cpython-310.pyc | Bin 638 -> 0 bytes .../settingsreader.cpython-311.pyc | Bin 1034 -> 0 bytes .../templatebuilder.cpython-310.pyc | Bin 550 -> 0 bytes .../templatebuilder.cpython-311.pyc | Bin 997 -> 0 bytes 10 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 tools/gfx_search/subscripts/__pycache__/gfxparser.cpython-310.pyc delete mode 100644 tools/gfx_search/subscripts/__pycache__/gfxparser.cpython-311.pyc delete mode 100644 tools/gfx_search/subscripts/__pycache__/imageconverter.cpython-310.pyc delete mode 100644 tools/gfx_search/subscripts/__pycache__/imageconverter.cpython-311.pyc delete mode 100644 tools/gfx_search/subscripts/__pycache__/settingsreader.cpython-310.pyc delete mode 100644 tools/gfx_search/subscripts/__pycache__/settingsreader.cpython-311.pyc delete mode 100644 tools/gfx_search/subscripts/__pycache__/templatebuilder.cpython-310.pyc delete mode 100644 tools/gfx_search/subscripts/__pycache__/templatebuilder.cpython-311.pyc diff --git a/tools/gfx_search/images/focuses/GFX_goal_rhu_nazghul_ringwraith_khamul.png b/tools/gfx_search/images/focuses/GFX_goal_rhu_nazghul_ringwraith_khamul.png index d773231c76908515c5979928cf202f5987c633cb..8930c6836cd1f9df816bbb4caf81088d802616a4 100644 GIT binary patch literal 12459 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 delta 15131 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

`I&nSKoPX{%iIcx8xQ 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 diff --git a/tools/gfx_search/images/spirits/GFX_idea_gon_white_tree.png b/tools/gfx_search/images/spirits/GFX_idea_gon_white_tree.png index 41f649124a7d078095b5019266fc26e2ff8a3737..92c0121f808de90213d4721550fba5eb8e92000b 100644 GIT binary patch delta 105 zcmcc1a+hU735N(LqfEe5{-TXF(Tt)-1|bF(RwiavrUu#u237_J+OzllpZtbV22&>L m7@PBCStfZ!kRD4b14An#3y7ZGSr_Lp0D-5gpUXO@geCw3{~WIX delta 105 zcmcc1a+hU72?rmSj@a6ct%@6Kq8UXEjYAC0tPD-8j7_u+46FSO={Pgg&ebxsLQ09#TX00000 diff --git a/tools/gfx_search/subscripts/__pycache__/gfxparser.cpython-310.pyc b/tools/gfx_search/subscripts/__pycache__/gfxparser.cpython-310.pyc deleted file mode 100644 index 5b7706c393026337b0b76ffc0e615b90ec653d74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 555 zcmZuuL2pwr40e(?RzW*)Ks%zRiUUuTCUHeTL7OxR(?Hq)Q355rr0YZJ%afBr2kmLx z`3u{TzmzK{_z64VbOP;wE!&^tIQ|s7PUk9+{I-R8&j5a=ezAImNgI+#W6DxOIIh)cIFP|$^+RgI; zwWBIS^~uP`Mq%)|8|MRbbv}40r%p@j0?Oc=^)fN=bg7(3Kl|WItQvZXP8)?ZWUD!j z8!I^a%T=V$PfXgZ#jXp^Z=GYC(t_g}g%w^gz2vS@A-3+(?3pzW(n|fsF5CPMLbi{3 diff --git a/tools/gfx_search/subscripts/__pycache__/gfxparser.cpython-311.pyc b/tools/gfx_search/subscripts/__pycache__/gfxparser.cpython-311.pyc deleted file mode 100644 index 276ca4fce4df3c8df786e304217be82adf6d099f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 851 zcmZuv&ubGw6n?Y2NsN#bOAv`aNTX1fU_nq1qK43d3b7s%53Q?l%}z|}W_Ov{kfcqZ z2M@Vcgn01KQ&jR-RPbIwp)3f3CvPdK5PIsHXp)L~kNx=GkNMu4W!{HECjm|SJWrny zfS)25ne>SDL3T2gm*yycLxF) zxCmE)D^;l`uRxU$SOJ1=U`3UeJ;K)Sa)*^%nyouDc00DA@r0$91&t>!KYkk5tS1RI zo?J*IU0QQ1j224fv}#lJd5Y~&%TpND4Nqd!3lvJ0p_``XUwW8LrPHe7g!YUaxQKhLpw|_-qap(%DDDYFPd7Bnr2DQ>)Jj0{6Dct6PaTiB{mZAEM{pMRzY*yH536ed7RNoh(ZG0MR80 z1H@MN$ISU&2+s}$Ca^E`4g^ec)7W4zn3kU8_$gd=>qaUf??jZ;nZV9jf~ZO?fcfE- tK0+TUurR{miCbmcsF?H)o5fH(OFoa#lL;Yv5ZoMkPYDp*>wjQk*b(gW#pnP4 diff --git a/tools/gfx_search/subscripts/__pycache__/imageconverter.cpython-310.pyc b/tools/gfx_search/subscripts/__pycache__/imageconverter.cpython-310.pyc deleted file mode 100644 index 4e3849fd03f5fa03b03ce305f4f9c69e7b5af70f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 857 zcmY*WL2J}N6rMLpcGJ3>t%w&-D|l!;6ue0(BGigYp$MxMLm-Tq>27K^6J}<++a)W) zdKIsN2zu;a%GHzp1i|8)tcCi*dwDbS&G+WLPjun62 zaLCC7A^@AyoJN#8-2FfzhkLw*f0xrC3EMvrO+u)>!Gw*(QEF+f%*DhO-AC7-F&J_R z-)IHjL2VhQA}hcMD|k!Q7Kb5O+%;~6fpQ4QjPs4m|9ZT5HLms%(tAF^>CKauHlA_}A9=S(p! z=lwxpgkq`5&P4o7FlBUKp7aMw7X87icp`b6OQT{VWv=7V$vn{rO2@IDzR{`5N~CJu zo66!$DCF8H&+FjdDlsxCi;-1J-@(vTzF$4t!6tKI53QobwcueRu@fzW7Ul-2G7SbbS$wImw=Z4Nk1v676LMPf>58H~M zZXhV?l|tD$Pg%Z}z>cw*r3!3jpL7dd+oS_6O5xt0W;gVr%^55BPD9z$Ql7nHTWb(& Yn*RxFe-DQ|&BY_z{F;^c;L}d;FN-w8$^ZZW diff --git a/tools/gfx_search/subscripts/__pycache__/imageconverter.cpython-311.pyc b/tools/gfx_search/subscripts/__pycache__/imageconverter.cpython-311.pyc deleted file mode 100644 index 6c89569e9596880dfd6e1349cfb27bb583e0b494..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1554 zcmaJ>&ube;6rS1H^=kFQO6@|ZYt_LvQa2`nLQ5bCDsf4xKx-%_(3l0W)o!#KuXe@E zC~}HyLJ3s#()LtATkxexLrUqtU|)KbiVkAIP$)g*rr;bzPIu3qR zhnQTKw#W@shXcHUF!Z5^C&#GEh-S74Pme8@)F3~hU!;>63Iq#nlN};3hFTrh(GXuJ zYY%Z4yXktiZ&vKD)T@*R^x_#k7D@pN<*Lb@aLV3t8E4^i+2%!8+*Z*snM1`5g)%d5 z+o5)Kt7KQX8~CA8rLNC)IaCE|(e;P$#h}JR;#SHbwwVko&p>&&Li*fbr_ zaBRCivcI@q61aCSN~?`>z(hNj=IoQ7y3w2W)Bi?wQ`-rVmGn) ztN-U0oov3F&HtUqw-fnZa;Eule@a#|2dSCXC+*a7C$-#7E%y=D-u;dAlIiaX-xgX< zv(QQAy2)HSnd=j9MgB-U5s^=Y7~5W{4F-c(`Xa~Rzr>rMD4DT1h^3m97H(FWl}>EF z8=G&x>;dEfe3_DgkzIxp*(0Y`WwbYY`pN~ecQzsP3-Xmq>fR+H^gI^&heF?%ACKa08FaSQJhPicIv$f_Pmy=+YV$^`=Wh zB5KSn`zEhZTPIZuYw`6j>QuZ^i+tk?PXeY$FGZGqR@ZPa^!)$ zqW*zbR9y+Ff}+Uq!0_P(pr$V%r!N&oKN$1Vt1r z$e1Xmq7P(D6&;Z@{)rPZ%<%S|MVPfP`WXHr!fGGL8gFmdr`>A`^ebD_Z}ghIL(Ld{ z6H&6pYD5l*e{@MH34V%k+l>iC%Y)l4#EPxSXQHAn(FU2Ps4+qfpy!Qc|Be&aoW?fi zlBCUHMct}%?3{In{3I_l@2-+AHx~HRE{y7}_WutD=0X;^;x9(8hB$L`2|PDQXWd@f ztYTYgQ^n`rA{JJv>OqhjS~v+hwMf+{U2b5!8#In|W|gk{X;ihRNS>4uW>p;0aXTnY zlmz*mxbP^yp?@gecp4%xOIBWRe zt(aRS3JXqvwS^aF)2oR`QZ^HQ@!n@HFHy>CfZUvUr=`-aS1zk|NGD;L@QVI10;37~ x&fg~6yJ@n7?$IW_Un9G52@+D~Vm#`+-hB)1;h<_g!EF|Wej0v>58M_>*gq(!1uQ)6VFQjWf%eXPT@a z(ZOSM(a6G+5?+E1L7nU`SYZz`un=_W5*v0{q@eE`ch@BQzL^i7_xqr!yF+n4g^<0 zNJB3$K2Od1fSxA6l=>d=UB*UhYJn1Meb`pP6GXYxAB`4XqT z!j&?H&UBA|4pmk6?_C?#9(X48v`2c*)^et8TY6U4Zn|Ta&fRtyz2h1hb6wlhrY7ez zo~hGpPV;6TdRc1anWuRsW0o`JQByZe+Mj>oE1YI{D;mQtyp#7GVF@aN66z>N+Mg#@ z(>sx#QlzH>L^->DzueiirmXk9jIG6%$0{QFfhrZ)jwOT#S{Uz2}lsl{C za90I{P{$#Z-HjLDk4Rr5GJKcy{Du zNlq5!WUZp1>`^*NY?IWf8Iq;iX_zq!xll{1<3D=KcZM C+VpJz diff --git a/tools/gfx_search/subscripts/__pycache__/templatebuilder.cpython-310.pyc b/tools/gfx_search/subscripts/__pycache__/templatebuilder.cpython-310.pyc deleted file mode 100644 index 9224a7a0ab9a69f8c33a9df23985467bde75e920..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 550 zcmYjP!HyF#47D>e?PzGrenQ1W=`e4 zztB1IOSy9658#BSP-$)1vHfhvR$|8E42XW|T)jeopS|;t7&&iA+=!F}iQi!kl3hX` z6%mDwl#q&YG2jI*70+(()`R6^;&Jb1cnvb|)z_}DWks!yQ(V`jmdZY>?!x4-)8dHq vujWojjWER%oM6T>%<#!?+XpXlJe-G#AE?KKh4eMeP;2#uegn9^(Fp$nA&HXN diff --git a/tools/gfx_search/subscripts/__pycache__/templatebuilder.cpython-311.pyc b/tools/gfx_search/subscripts/__pycache__/templatebuilder.cpython-311.pyc deleted file mode 100644 index c74b1e7be17153ce1d3a135e0f4afdcc3f057903..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 997 zcmZ`%-)qxQ6h5~}+NQQz=Tzv1><60^=0MOFmBBV2RNMv|f|E$ek~>?LnUb5>4N~yI zhjbJ+eOaHRPZQaHvHze_a9j`{#P`a47{iC1WNmDfop4XiIp25g`R+|VrBVq%`}6T8 zy-xss_({hw59}z3uU*jL9lQXYEI~G+32n@OMREE0(IR&2g5BxEl8gMk2*5tBGrJ3A z!4>LVoDKr8hv9yhmPI#G5BtJ02EDw8@Nz&wURf$fU9sM+ENpTmH`=SCELI15loCDi z4SDM>SKx|!sDD2^0|8`8U4$^~RZ8#<{ik=1UtNMxxD8A!MK*+GC=mk7K=ARA ztT4}s#Yrg}<)T@nueoSZRp(N{rt6HyELt>FjdH1EVTDVYVKSPH^Ay5}*fdvE?L5C= zI(E^q&yr-jDW?}So5wp$PHZl$(M>MBQ4NQ3vdZFkmZ7$tEY99jo-t}MWlhZ+N}d`< zLDf{{k@@(}t*54K&6&Dlo2J2(SF0O2MpaA8E6iD8npG&;Oz8|-aSDb`t;ymhzZl5Q zbr7o`2l`)~eMk2ezR4+Xy|&blhnwF@W^3i{A*_7OJ<^x znQUezTR`OTz*U}jvpZK0)0cPU4{~j^<}}h{&GeWz?M?qorgsKvS|d5qOpf3dad|to z726?|L^a_h+G$0u%AVZ1gd>Bwf&1kv`0cyDwR5B6I9ONEox~rko4RArDeF3>{=dg=plb<)kd_!HDCmD@T|>$#T|3-<