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
This commit is contained in:
PilkeySEK
2025-03-30 19:43:24 +02:00
committed by GitHub
parent 80ece56268
commit d6e596f7d8
2 changed files with 8 additions and 1 deletions
+1
View File
@@ -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,
+7 -1
View File
@@ -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,