From 7eef3d4688e07747f4e6b82a55d1241b03429293 Mon Sep 17 00:00:00 2001 From: FloPinguin <25036848+FloPinguin@users.noreply.github.com> Date: Mon, 15 Dec 2025 00:20:13 +0100 Subject: [PATCH] =?UTF-8?q?Rebalance=20nation=20configs,=20they=20are=20ge?= =?UTF-8?q?tting=20too=20strong=20to=20beat=20=F0=9F=93=8A=20(#2618)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Resolves #2599 ## Description: For example in #2599 we can see people already struggling with the higher difficulties. With my PR #2606 (nation alliance request logic), an alliance request towards an impossible difficulty nation will probably always get rejected. They have `maxTroops * 2`, and because humans have much less troops, the nation of course won't want to ally with them (unless the human somehow manages to get a similar troop count). This makes them even harder to beat. So I tuned the `maxTroops`, `troopIncreaseRate` and `startManpower` configs towards the setting for humans, following the goal to make difficulties impact the **SMARTNESS** of nations, instead of just their troop count configs (more varied gameplay 😊). The biggest change is in `startManpower`. I thought it was weird that easy nations started with much less troops than a bot (2_500 vs 10_000). Look at this screenshot, a couple of seconds into the game. Bots were bigger than nations. 💀 Turkey in the bottom right corner... Screenshot 2025-12-14 180823 ## Please complete the following: - [X] I have added screenshots for all UI updates - [X] I process any text displayed to the user through translateText() and I've added it to the en.json file - [X] I have added relevant tests to the test directory - [X] I confirm I have thoroughly tested these changes and take full responsibility for any bugs introduced ## Please put your Discord username so you can be contacted if a bug or regression is found: FloPinguin --- src/core/configuration/DefaultConfig.ts | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/core/configuration/DefaultConfig.ts b/src/core/configuration/DefaultConfig.ts index f02f805cc..b646d7024 100644 --- a/src/core/configuration/DefaultConfig.ts +++ b/src/core/configuration/DefaultConfig.ts @@ -826,13 +826,13 @@ export class DefaultConfig implements Config { switch (this._gameConfig.difficulty) { case Difficulty.Easy: - return 2_500 * strength; + return 18_750 * strength; case Difficulty.Medium: - return 5_000 * strength; + return 25_000 * strength; // Like humans case Difficulty.Hard: - return 20_000 * strength; + return 31_250 * strength; case Difficulty.Impossible: - return 50_000 * strength; + return 37_500 * strength; } } return this.infiniteTroops() ? 1_000_000 : 25_000; @@ -859,13 +859,13 @@ export class DefaultConfig implements Config { switch (this._gameConfig.difficulty) { case Difficulty.Easy: - return maxTroops * 0.5; + return maxTroops * 0.75; case Difficulty.Medium: - return maxTroops * 1; + return maxTroops * 1; // Like humans case Difficulty.Hard: - return maxTroops * 1.5; + return maxTroops * 1.25; case Difficulty.Impossible: - return maxTroops * 2; + return maxTroops * 1.5; } } @@ -884,16 +884,16 @@ export class DefaultConfig implements Config { if (player.type() === PlayerType.FakeHuman) { switch (this._gameConfig.difficulty) { case Difficulty.Easy: - toAdd *= 0.9; + toAdd *= 0.95; break; case Difficulty.Medium: - toAdd *= 1; + toAdd *= 1; // Like humans break; case Difficulty.Hard: - toAdd *= 1.1; + toAdd *= 1.05; break; case Difficulty.Impossible: - toAdd *= 1.2; + toAdd *= 1.1; break; } }