From 668a995127bfb8b84b6a8df8df28dc9ac4e08e5f Mon Sep 17 00:00:00 2001 From: Restart2008 Date: Sat, 25 Oct 2025 19:09:44 -0700 Subject: [PATCH 1/5] feat: Implement hyperbolic defense bonus and upgradability for Defense Posts --- src/core/configuration/Config.ts | 2 +- src/core/configuration/DefaultConfig.ts | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/core/configuration/Config.ts b/src/core/configuration/Config.ts index 0fb16b4903..8fe4a0f6bc 100644 --- a/src/core/configuration/Config.ts +++ b/src/core/configuration/Config.ts @@ -151,7 +151,7 @@ export interface Config { defensePostRange(): number; SAMCooldown(): number; SiloCooldown(): number; - defensePostDefenseBonus(): number; + defensePostDefenseBonus(level: number): number; defensePostSpeedBonus(): number; falloutDefenseModifier(percentOfFallout: number): number; difficultyModifier(difficulty: Difficulty): number; diff --git a/src/core/configuration/DefaultConfig.ts b/src/core/configuration/DefaultConfig.ts index ee7b8d1ab6..033329b0f0 100644 --- a/src/core/configuration/DefaultConfig.ts +++ b/src/core/configuration/DefaultConfig.ts @@ -306,8 +306,11 @@ export class DefaultConfig implements Config { return 30; } - defensePostDefenseBonus(): number { - return 5; + defensePostDefenseBonus(level: number): number { + const baseValue = 5; + const maxIncrease = 10; + const k = 2; + return baseValue + maxIncrease * ((level - 1) / (level - 1 + k)); } defensePostSpeedBonus(): number { @@ -496,6 +499,7 @@ export class DefaultConfig implements Config { ), territoryBound: true, constructionDuration: this.instantBuild() ? 0 : 5 * 10, + upgradable: true, }; case UnitType.SAMLauncher: return { @@ -665,7 +669,7 @@ export class DefaultConfig implements Config { UnitType.DefensePost, )) { if (dp.unit.owner() === defender) { - mag *= this.defensePostDefenseBonus(); + mag *= this.defensePostDefenseBonus(dp.unit.level()); speed *= this.defensePostSpeedBonus(); break; } From 07a2ef06a9f546c261ec7f154f63ecb4c67362a3 Mon Sep 17 00:00:00 2001 From: Restart2008 Date: Sun, 26 Oct 2025 15:37:41 -0700 Subject: [PATCH 2/5] fix: Add input validation and tune down hyperbolic defense bonus for Defense Posts --- src/core/configuration/DefaultConfig.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/core/configuration/DefaultConfig.ts b/src/core/configuration/DefaultConfig.ts index 033329b0f0..c85213e9cd 100644 --- a/src/core/configuration/DefaultConfig.ts +++ b/src/core/configuration/DefaultConfig.ts @@ -307,8 +307,13 @@ export class DefaultConfig implements Config { } defensePostDefenseBonus(level: number): number { + if (level < 1) { + throw new Error( + `Invalid defense post level: ${level}. Level must be >= 1`, + ); + } const baseValue = 5; - const maxIncrease = 10; + const maxIncrease = 5; const k = 2; return baseValue + maxIncrease * ((level - 1) / (level - 1 + k)); } From e9346979c2550f5d1c0a9a30d528e31ea1180536 Mon Sep 17 00:00:00 2001 From: Restart2008 Date: Mon, 27 Oct 2025 17:16:52 -0700 Subject: [PATCH 3/5] chore: Minor comment addition to trigger deployment --- src/core/configuration/DefaultConfig.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/core/configuration/DefaultConfig.ts b/src/core/configuration/DefaultConfig.ts index c85213e9cd..cff4076c38 100644 --- a/src/core/configuration/DefaultConfig.ts +++ b/src/core/configuration/DefaultConfig.ts @@ -319,6 +319,7 @@ export class DefaultConfig implements Config { } defensePostSpeedBonus(): number { + // This bonus is currently a fixed value. return 3; } From 9aa95e00130480e1b9813f31618e48323b15107a Mon Sep 17 00:00:00 2001 From: Restart2008 Date: Thu, 30 Oct 2025 21:47:18 -0700 Subject: [PATCH 4/5] Update maxIncrease to 2.5 value --- src/core/configuration/DefaultConfig.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/configuration/DefaultConfig.ts b/src/core/configuration/DefaultConfig.ts index cff4076c38..b554c76c05 100644 --- a/src/core/configuration/DefaultConfig.ts +++ b/src/core/configuration/DefaultConfig.ts @@ -313,7 +313,7 @@ export class DefaultConfig implements Config { ); } const baseValue = 5; - const maxIncrease = 5; + const maxIncrease = 2.5; const k = 2; return baseValue + maxIncrease * ((level - 1) / (level - 1 + k)); } From 3e03c289582b070a32a4cd3e9af3187071e9859d Mon Sep 17 00:00:00 2001 From: Restart2008 Date: Sat, 1 Nov 2025 21:20:49 -0700 Subject: [PATCH 5/5] changed maxIncrease value to 1.5 --- src/core/configuration/DefaultConfig.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/configuration/DefaultConfig.ts b/src/core/configuration/DefaultConfig.ts index b554c76c05..932345abbc 100644 --- a/src/core/configuration/DefaultConfig.ts +++ b/src/core/configuration/DefaultConfig.ts @@ -313,7 +313,7 @@ export class DefaultConfig implements Config { ); } const baseValue = 5; - const maxIncrease = 2.5; + const maxIncrease = 1.5; const k = 2; return baseValue + maxIncrease * ((level - 1) / (level - 1 + k)); }