mirror of
https://github.com/openfrontio/OpenFrontIO.git
synced 2026-08-18 09:14:09 +00:00
bugfix: transport ship was using start troops, not ship troops to determine attack (#1576)
## Description: This caused an issue when getting nuked, the transport ships were not decreasing ## Please complete the following: - [x] I have added screenshots for all UI updates - [x] I process any text displayed to the user through translateText() and I've added it to the en.json file - [x] I have added relevant tests to the test directory - [x] I confirm I have thoroughly tested these changes and take full responsibility for any bugs introduced - [x] I have read and accepted the CLA agreement (only required once). ## Please put your Discord username so you can be contacted if a bug or regression is found: evan
This commit is contained in:
@@ -37,7 +37,7 @@ export class TransportShipExecution implements Execution {
|
|||||||
private attacker: Player,
|
private attacker: Player,
|
||||||
private targetID: PlayerID | null,
|
private targetID: PlayerID | null,
|
||||||
private ref: TileRef,
|
private ref: TileRef,
|
||||||
private troops: number,
|
private startTroops: number,
|
||||||
private src: TileRef | null,
|
private src: TileRef | null,
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
@@ -88,11 +88,11 @@ export class TransportShipExecution implements Execution {
|
|||||||
this.target = mg.player(this.targetID);
|
this.target = mg.player(this.targetID);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.troops ??= this.mg
|
this.startTroops ??= this.mg
|
||||||
.config()
|
.config()
|
||||||
.boatAttackAmount(this.attacker, this.target);
|
.boatAttackAmount(this.attacker, this.target);
|
||||||
|
|
||||||
this.troops = Math.min(this.troops, this.attacker.troops());
|
this.startTroops = Math.min(this.startTroops, this.attacker.troops());
|
||||||
|
|
||||||
this.dst = targetTransportTile(this.mg, this.ref);
|
this.dst = targetTransportTile(this.mg, this.ref);
|
||||||
if (this.dst === null) {
|
if (this.dst === null) {
|
||||||
@@ -130,7 +130,7 @@ export class TransportShipExecution implements Execution {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.boat = this.attacker.buildUnit(UnitType.TransportShip, this.src, {
|
this.boat = this.attacker.buildUnit(UnitType.TransportShip, this.src, {
|
||||||
troops: this.troops,
|
troops: this.startTroops,
|
||||||
});
|
});
|
||||||
|
|
||||||
// Notify the target player about the incoming naval invasion
|
// Notify the target player about the incoming naval invasion
|
||||||
@@ -145,7 +145,9 @@ export class TransportShipExecution implements Execution {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Record stats
|
// Record stats
|
||||||
this.mg.stats().boatSendTroops(this.attacker, this.target, this.troops);
|
this.mg
|
||||||
|
.stats()
|
||||||
|
.boatSendTroops(this.attacker, this.target, this.boat.troops());
|
||||||
}
|
}
|
||||||
|
|
||||||
tick(ticks: number) {
|
tick(ticks: number) {
|
||||||
@@ -180,16 +182,16 @@ export class TransportShipExecution implements Execution {
|
|||||||
// Record stats
|
// Record stats
|
||||||
this.mg
|
this.mg
|
||||||
.stats()
|
.stats()
|
||||||
.boatArriveTroops(this.attacker, this.target, this.troops);
|
.boatArriveTroops(this.attacker, this.target, this.boat.troops());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.attacker.conquer(this.dst);
|
this.attacker.conquer(this.dst);
|
||||||
if (this.target.isPlayer() && this.attacker.isFriendly(this.target)) {
|
if (this.target.isPlayer() && this.attacker.isFriendly(this.target)) {
|
||||||
this.attacker.addTroops(this.troops);
|
this.attacker.addTroops(this.boat.troops());
|
||||||
} else {
|
} else {
|
||||||
this.mg.addExecution(
|
this.mg.addExecution(
|
||||||
new AttackExecution(
|
new AttackExecution(
|
||||||
this.troops,
|
this.boat.troops(),
|
||||||
this.attacker,
|
this.attacker,
|
||||||
this.targetID,
|
this.targetID,
|
||||||
this.dst,
|
this.dst,
|
||||||
@@ -203,7 +205,7 @@ export class TransportShipExecution implements Execution {
|
|||||||
// Record stats
|
// Record stats
|
||||||
this.mg
|
this.mg
|
||||||
.stats()
|
.stats()
|
||||||
.boatArriveTroops(this.attacker, this.target, this.troops);
|
.boatArriveTroops(this.attacker, this.target, this.boat.troops());
|
||||||
return;
|
return;
|
||||||
case PathFindResultType.NextTile:
|
case PathFindResultType.NextTile:
|
||||||
this.boat.move(result.node);
|
this.boat.move(result.node);
|
||||||
@@ -213,7 +215,7 @@ export class TransportShipExecution implements Execution {
|
|||||||
case PathFindResultType.PathNotFound:
|
case PathFindResultType.PathNotFound:
|
||||||
// TODO: add to poisoned port list
|
// TODO: add to poisoned port list
|
||||||
console.warn(`path not found to dst`);
|
console.warn(`path not found to dst`);
|
||||||
this.attacker.addTroops(this.troops);
|
this.attacker.addTroops(this.boat.troops());
|
||||||
this.boat.delete(false);
|
this.boat.delete(false);
|
||||||
this.active = false;
|
this.active = false;
|
||||||
return;
|
return;
|
||||||
|
|||||||
Reference in New Issue
Block a user