From da50aa28d2f8126d2c5bac01ff784f7203cf3183 Mon Sep 17 00:00:00 2001 From: Ilan Schemoul Date: Fri, 14 Mar 2025 17:45:40 +0100 Subject: [PATCH] feat: more trade when there are few ports worldwide (#242) --- src/core/configuration/Config.ts | 2 +- src/core/configuration/DefaultConfig.ts | 7 ++++++- src/core/execution/PortExecution.ts | 5 ++++- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/core/configuration/Config.ts b/src/core/configuration/Config.ts index aac2822b0..96bf6052f 100644 --- a/src/core/configuration/Config.ts +++ b/src/core/configuration/Config.ts @@ -160,7 +160,7 @@ export interface Config { defaultDonationAmount(sender: Player): number; unitInfo(type: UnitType): UnitInfo; tradeShipGold(dist: number): Gold; - tradeShipSpawnRate(): number; + tradeShipSpawnRate(numberOfPorts: number): number; defensePostRange(): number; defensePostDefenseBonus(): number; falloutDefenseModifier(percentOfFallout: number): number; diff --git a/src/core/configuration/DefaultConfig.ts b/src/core/configuration/DefaultConfig.ts index 741577742..82b11b8f8 100644 --- a/src/core/configuration/DefaultConfig.ts +++ b/src/core/configuration/DefaultConfig.ts @@ -156,7 +156,12 @@ export class DefaultConfig implements Config { tradeShipGold(dist: number): Gold { return 10000 + 150 * Math.pow(dist, 1.1); } - tradeShipSpawnRate(): number { + tradeShipSpawnRate(numberOfPorts: number): number { + if (numberOfPorts <= 3) return 180; + if (numberOfPorts <= 5) return 250; + if (numberOfPorts <= 8) return 350; + if (numberOfPorts <= 10) return 400; + if (numberOfPorts <= 12) return 450; return 500; } diff --git a/src/core/execution/PortExecution.ts b/src/core/execution/PortExecution.ts index a6f85d89f..5aafe9cee 100644 --- a/src/core/execution/PortExecution.ts +++ b/src/core/execution/PortExecution.ts @@ -66,7 +66,10 @@ export class PortExecution implements Execution { return; } - if (!this.random.chance(this.mg.config().tradeShipSpawnRate())) { + const totalNbOfPorts = this.mg.units(UnitType.Port).length; + if ( + !this.random.chance(this.mg.config().tradeShipSpawnRate(totalNbOfPorts)) + ) { return; }