From d6e596f7d8821bfdfda37cd3e89f0733ee09fc2b Mon Sep 17 00:00:00 2001 From: PilkeySEK <156579268+PilkeySEK@users.noreply.github.com> Date: Sun, 30 Mar 2025 19:43:24 +0200 Subject: [PATCH] fix: Make bots not attack teammates (#368) Bug report: https://discord.com/channels/1284581928254701718/1355194642592694412 ## Please complete the following: - [X] I have added screenshots for all UI updates - [X] I confirm I have thoroughly tested these changes and take full responsibility for any bugs introduced - [X] I understand that submitting code with bugs that could have been caught through manual testing blocks releases and new features for all contributors ## Please put your Discord username so you can be contacted if a bug or regression is found: PilkeySEK --- src/core/execution/BotExecution.ts | 1 + src/core/execution/FakeHumanExecution.ts | 8 +++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/core/execution/BotExecution.ts b/src/core/execution/BotExecution.ts index cda58140b..c129dd9a2 100644 --- a/src/core/execution/BotExecution.ts +++ b/src/core/execution/BotExecution.ts @@ -98,6 +98,7 @@ export class BotExecution implements Execution { } sendAttack(toAttack: Player | TerraNullius) { + if (toAttack.isPlayer() && this.bot.isOnSameTeam(toAttack)) return; this.mg.addExecution( new AttackExecution( this.bot.troops() / 20, diff --git a/src/core/execution/FakeHumanExecution.ts b/src/core/execution/FakeHumanExecution.ts index 8b90528da..929fb9a70 100644 --- a/src/core/execution/FakeHumanExecution.ts +++ b/src/core/execution/FakeHumanExecution.ts @@ -192,6 +192,9 @@ export class FakeHumanExecution implements Execution { } private shouldAttack(other: Player): boolean { + if (this.player.isOnSameTeam(other)) { + return false; + } if (this.player.isFriendly(other)) { if (this.shouldDiscourageAttack(other)) { return this.random.chance(200); @@ -290,7 +293,8 @@ export class FakeHumanExecution implements Execution { if ( this.player.units(UnitType.MissileSilo).length == 0 || this.player.gold() < - this.mg.config().unitInfo(UnitType.AtomBomb).cost(this.player) + this.mg.config().unitInfo(UnitType.AtomBomb).cost(this.player) || + this.player.isOnSameTeam(other) ) { return; } @@ -315,6 +319,7 @@ export class FakeHumanExecution implements Execution { } private maybeSendBoatAttack(other: Player) { + if (this.player.isOnSameTeam(other)) return; const closest = closestTwoTiles( this.mg, Array.from(this.player.borderTiles()).filter((t) => @@ -580,6 +585,7 @@ export class FakeHumanExecution implements Execution { } sendAttack(toAttack: Player | TerraNullius) { + if (toAttack.isPlayer() && this.player.isOnSameTeam(toAttack)) return; this.mg.addExecution( new AttackExecution( this.player.troops() / 5,