diff --git a/src/core/execution/ConstructionExecution.ts b/src/core/execution/ConstructionExecution.ts index c37c802fe..eddd3f85c 100644 --- a/src/core/execution/ConstructionExecution.ts +++ b/src/core/execution/ConstructionExecution.ts @@ -37,6 +37,15 @@ export class ConstructionExecution implements Execution { init(mg: Game, ticks: number): void { this.mg = mg; + + if (this.mg.config().isUnitDisabled(this.constructionType)) { + console.warn( + `cannot build construction ${this.constructionType} because it is disabled`, + ); + this.active = false; + return; + } + if (this.tileOrCell instanceof Cell) { if (!this.mg.isValidCoord(this.tileOrCell.x, this.tileOrCell.y)) { console.warn( diff --git a/src/core/execution/TrainStationExecution.ts b/src/core/execution/TrainStationExecution.ts index 81008e3ef..358899ca7 100644 --- a/src/core/execution/TrainStationExecution.ts +++ b/src/core/execution/TrainStationExecution.ts @@ -1,4 +1,4 @@ -import { Execution, Game, Player, Unit } from "../game/Game"; +import { Execution, Game, Player, Unit, UnitType } from "../game/Game"; import { TrainStation } from "../game/TrainStation"; import { PseudoRandom } from "../PseudoRandom"; import { TrainExecution } from "./TrainExecution"; @@ -21,6 +21,13 @@ export class TrainStationExecution implements Execution { init(mg: Game, ticks: number): void { this.mg = mg; + + if (this.mg.config().isUnitDisabled(UnitType.Train)) { + this.active = false; + console.warn(`train station is disabled`); + return; + } + this.random = new PseudoRandom(mg.ticks()); this.unit = this.player.units().find((unit) => unit.id() === this.unitId); diff --git a/src/server/MapPlaylist.ts b/src/server/MapPlaylist.ts index c6c07c0ce..6c5c85f3f 100644 --- a/src/server/MapPlaylist.ts +++ b/src/server/MapPlaylist.ts @@ -1,5 +1,11 @@ import { getServerConfigFromServer } from "../core/configuration/ConfigLoader"; -import { Difficulty, GameMapType, GameMode, GameType } from "../core/game/Game"; +import { + Difficulty, + GameMapType, + GameMode, + GameType, + UnitType, +} from "../core/game/Game"; import { PseudoRandom } from "../core/PseudoRandom"; import { GameConfig } from "../core/Schemas"; import { logger } from "./Logger"; @@ -61,6 +67,7 @@ export class MapPlaylist { gameMode: mode, playerTeams: numPlayerTeams, bots: 400, + disabledUnits: [UnitType.Train, UnitType.Factory], } satisfies GameConfig; }