mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-07-04 15:32:18 +02:00
Fixed counter move logic using inverted conditional
This commit is contained in:
parent
1018e1f7ff
commit
cd25df2491
@ -586,6 +586,7 @@ export class MovePhase extends BattlePhase {
|
|||||||
*
|
*
|
||||||
* If there is no last attacker or they are no longer on the field, a message is displayed and the
|
* If there is no last attacker or they are no longer on the field, a message is displayed and the
|
||||||
* move is marked for failure.
|
* move is marked for failure.
|
||||||
|
* @todo Make this a feature of the move rather than basing logic on {@linkcode BattlerIndex.ATTACKER}
|
||||||
*/
|
*/
|
||||||
protected resolveCounterAttackTarget(): void {
|
protected resolveCounterAttackTarget(): void {
|
||||||
if (this.targets.length !== 1 || this.targets[0] !== BattlerIndex.ATTACKER) {
|
if (this.targets.length !== 1 || this.targets[0] !== BattlerIndex.ATTACKER) {
|
||||||
@ -594,24 +595,23 @@ export class MovePhase extends BattlePhase {
|
|||||||
|
|
||||||
// TODO: This should be covered in move conditions
|
// TODO: This should be covered in move conditions
|
||||||
if (this.pokemon.turnData.attacksReceived.length === 0) {
|
if (this.pokemon.turnData.attacksReceived.length === 0) {
|
||||||
this.targets[0] = this.pokemon.turnData.attacksReceived[0].sourceBattlerIndex;
|
|
||||||
|
|
||||||
// account for metal burst and comeuppance hitting remaining targets in double battles
|
|
||||||
// counterattack will redirect to remaining ally if original attacker faints
|
|
||||||
if (
|
|
||||||
globalScene.currentBattle.double &&
|
|
||||||
this.move.getMove().hasFlag(MoveFlags.REDIRECT_COUNTER) &&
|
|
||||||
globalScene.getField()[this.targets[0]].hp === 0
|
|
||||||
) {
|
|
||||||
const opposingField = this.pokemon.isPlayer() ? globalScene.getEnemyField() : globalScene.getPlayerField();
|
|
||||||
this.targets[0] = opposingField.find(p => p.hp > 0)?.getBattlerIndex() ?? BattlerIndex.ATTACKER;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.targets[0] === BattlerIndex.ATTACKER) {
|
|
||||||
this.fail();
|
this.fail();
|
||||||
this.showMoveText();
|
this.showMoveText();
|
||||||
this.showFailedText();
|
this.showFailedText();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.targets[0] = this.pokemon.turnData.attacksReceived[0].sourceBattlerIndex;
|
||||||
|
|
||||||
|
// account for metal burst and comeuppance hitting remaining targets in double battles
|
||||||
|
// counterattack will redirect to remaining ally if original attacker faints
|
||||||
|
if (
|
||||||
|
globalScene.currentBattle.double &&
|
||||||
|
this.move.getMove().hasFlag(MoveFlags.REDIRECT_COUNTER) &&
|
||||||
|
globalScene.getField()[this.targets[0]].hp === 0
|
||||||
|
) {
|
||||||
|
const opposingField = this.pokemon.isPlayer() ? globalScene.getEnemyField() : globalScene.getPlayerField();
|
||||||
|
this.targets[0] = opposingField.find(p => p.hp > 0)?.getBattlerIndex() ?? BattlerIndex.ATTACKER;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user