diff --git a/src/core/configuration/DefaultConfig.ts b/src/core/configuration/DefaultConfig.ts index 790bce23c..2a6d53e6f 100644 --- a/src/core/configuration/DefaultConfig.ts +++ b/src/core/configuration/DefaultConfig.ts @@ -161,8 +161,8 @@ export class DefaultConfig implements Config { return (player.manpowerReserve() * 1.2 - player.troops()) / 1000 } troopAdjustmentRate(player: Player): number { - const maxDiff = player.totalManpower() / 300 - const target = player.totalManpower() * player.targetTroopRatio() + const maxDiff = player.maxTroops() / 300 + const target = player.maxTroops() * player.targetTroopRatio() const diff = target - player.troops() if (Math.abs(diff) < maxDiff) { return diff diff --git a/src/core/execution/PlayerExecution.ts b/src/core/execution/PlayerExecution.ts index 8e6a3475b..641cd2b75 100644 --- a/src/core/execution/PlayerExecution.ts +++ b/src/core/execution/PlayerExecution.ts @@ -30,7 +30,9 @@ export class PlayerExecution implements Execution { if (ticks < this.config.numSpawnPhaseTurns()) { return } + this.player.addManpowerReserve(this.config.manpowerAdditionRate(this.player)) + this.player.setMaxTroops(Math.max(this.player.numTilesOwned() * 100, 50000)) this.player.addGold(this.config.goldAdditionRate(this.player)) const adjustRate = this.config.troopAdjustmentRate(this.player) this.player.addTroops(adjustRate) diff --git a/src/core/game/Game.ts b/src/core/game/Game.ts index 0c06da885..6e2f1c783 100644 --- a/src/core/game/Game.ts +++ b/src/core/game/Game.ts @@ -200,6 +200,7 @@ export interface Player { manpowerReserve(): number // Number between 0, 1 targetTroopRatio(): number + maxTroops(): number } export interface MutablePlayer extends Player { @@ -228,6 +229,7 @@ export interface MutablePlayer extends Player { addManpowerReserve(toAdd: number): void removeManpowerReserve(toRemove: number): void setTargetTroopRatio(target: number): void + setMaxTroops(maxTroops: number): void } export interface Game { diff --git a/src/core/game/PlayerImpl.ts b/src/core/game/PlayerImpl.ts index 8c6243999..c7f02e56e 100644 --- a/src/core/game/PlayerImpl.ts +++ b/src/core/game/PlayerImpl.ts @@ -24,6 +24,7 @@ export class PlayerImpl implements MutablePlayer { private _troops: number private _reserves: number private _targetTroopRatio: number + private _maxTroops: number isTraitor_ = false @@ -49,6 +50,7 @@ export class PlayerImpl implements MutablePlayer { this._troops = manpower * this._targetTroopRatio; this._reserves = manpower * (1 - this._targetTroopRatio) this._gold = 0 + this._maxTroops = 0 } name(): string { @@ -319,6 +321,13 @@ export class PlayerImpl implements MutablePlayer { this._targetTroopRatio = target } + maxTroops(): number { + return this._maxTroops + } + setMaxTroops(maxTroops: number): void { + this._maxTroops = maxTroops + } + hash(): number { return simpleHash(this.id()) * (this.totalManpower() + this.numTilesOwned()); }