diff --git a/src/core/configuration/Config.ts b/src/core/configuration/Config.ts index 2e5d095d0..c22b9acb8 100644 --- a/src/core/configuration/Config.ts +++ b/src/core/configuration/Config.ts @@ -120,7 +120,8 @@ export interface Config { defensePostRange(): number; SAMCooldown(): number; SiloCooldown(): number; - defensePostDefenseBonus(): number; + defensePostSpeedMultiplier(): number; + defensePostLossMultiplier(): number; falloutDefenseModifier(percentOfFallout: number): number; difficultyModifier(difficulty: Difficulty): number; warshipPatrolRange(): number; diff --git a/src/core/configuration/DefaultConfig.ts b/src/core/configuration/DefaultConfig.ts index b3c822823..773b112a9 100644 --- a/src/core/configuration/DefaultConfig.ts +++ b/src/core/configuration/DefaultConfig.ts @@ -218,8 +218,11 @@ export class DefaultConfig implements Config { defensePostRange(): number { return 40; } - defensePostDefenseBonus(): number { - return 5; + defensePostLossMultiplier(): number { + return 6; + } + defensePostSpeedMultiplier(): number { + return 3; } numPlayerTeams(): number { return this._gameConfig.numPlayerTeams ?? 0; @@ -465,8 +468,8 @@ export class DefaultConfig implements Config { UnitType.DefensePost, )) { if (dp.unit.owner() == defender) { - mag *= this.defensePostDefenseBonus(); - speed *= this.defensePostDefenseBonus(); + mag *= this.defensePostLossMultiplier(); + speed *= this.defensePostSpeedMultiplier(); break; } } @@ -506,7 +509,7 @@ export class DefaultConfig implements Config { const attackratio = defenderTroops / attackTroops; return { attackerTroopLoss: - mag * 20 + + mag * 16 + defenderdensity * mag * (defender.isTraitor() ? this.traitorDefenseDebuff() : 1), @@ -520,7 +523,7 @@ export class DefaultConfig implements Config { }; } else { return { - attackerTroopLoss: attackerType == PlayerType.Bot ? mag * 20 : mag * 20, + attackerTroopLoss: attackerType == PlayerType.Bot ? mag * 16 : mag * 16, defenderTroopLoss: 0, tilesPerTickUsed: 31 * speed, // * (10_000 / attackTroops) ** 0.5, }; diff --git a/src/core/game/PlayerImpl.ts b/src/core/game/PlayerImpl.ts index 39be52c36..7ec46c2db 100644 --- a/src/core/game/PlayerImpl.ts +++ b/src/core/game/PlayerImpl.ts @@ -649,7 +649,7 @@ export class PlayerImpl implements Player { for (const city of this.units(UnitType.City)) { const created = city.createdAtTick(); const age = created != null ? this.mg.ticks() - created : Infinity; - const ramp = Math.min(age / 600, 1); // 60 seconds at 10 ticks/sec + const ramp = Math.min(age / 450, 1); // 45 seconds at 10 ticks/sec cityPop += ramp * 500_000; }