diff --git a/src/core/execution/nation/NationAllianceBehavior.ts b/src/core/execution/nation/NationAllianceBehavior.ts index 186a3b556..410e1a63e 100644 --- a/src/core/execution/nation/NationAllianceBehavior.ts +++ b/src/core/execution/nation/NationAllianceBehavior.ts @@ -76,6 +76,11 @@ export class NationAllianceBehavior { otherPlayer: Player, isResponse: boolean, ): boolean { + // Reject alliance requests during the spawn phase + if (this.game.inSpawnPhase()) { + return false; + } + // Easy (dumb) nations sometimes get confused and accept/reject randomly (Just like dumb humans do) if (this.isConfused()) { return this.random.chance(2); diff --git a/tests/NationAllianceBehavior.test.ts b/tests/NationAllianceBehavior.test.ts index ea2c74077..2849ac75b 100644 --- a/tests/NationAllianceBehavior.test.ts +++ b/tests/NationAllianceBehavior.test.ts @@ -51,6 +51,10 @@ describe("AllianceBehavior.handleAllianceRequests", () => { player, new NationEmojiBehavior(random, game, player), ); + + while (game.inSpawnPhase()) { + game.executeNextTick(); + } }); function setupAllianceRequest({ @@ -92,6 +96,16 @@ describe("AllianceBehavior.handleAllianceRequests", () => { return mockRequest; } + test("should reject alliance during spawn phase", () => { + vi.spyOn(game, "inSpawnPhase").mockReturnValue(true); + const request = setupAllianceRequest({}); + + allianceBehavior.handleAllianceRequests(); + + expect(request.accept).not.toHaveBeenCalled(); + expect(request.reject).toHaveBeenCalled(); + }); + test("should accept alliance when all conditions are met", () => { const request = setupAllianceRequest({});