mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-07-05 16:02:20 +02:00
innerthunder's fixes
This commit is contained in:
parent
cd67efb481
commit
6d241346af
@ -28,7 +28,7 @@ export class TurnStartPhase extends FieldPhase {
|
|||||||
/**
|
/**
|
||||||
* This orders the active Pokemon on the field by speed into an BattlerIndex array and returns that array.
|
* This orders the active Pokemon on the field by speed into an BattlerIndex array and returns that array.
|
||||||
* It also checks for Trick Room and reverses the array if it is present.
|
* It also checks for Trick Room and reverses the array if it is present.
|
||||||
* @returns {@linkcode BattlerIndex[]}
|
* @returns {@linkcode BattlerIndex[]} the battle indices of all pokemon on the field ordered by speed
|
||||||
*/
|
*/
|
||||||
getSpeedOrder(): BattlerIndex[] {
|
getSpeedOrder(): BattlerIndex[] {
|
||||||
const playerField = this.scene.getPlayerField().filter(p => p.isActive()) as Pokemon[];
|
const playerField = this.scene.getPlayerField().filter(p => p.isActive()) as Pokemon[];
|
||||||
@ -97,18 +97,18 @@ export class TurnStartPhase extends FieldPhase {
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
} else if (aCommand?.command === Command.FIGHT) {
|
} else if (aCommand?.command === Command.FIGHT) {
|
||||||
const aMove = allMoves[aCommand.move!.move];//TODO: is the bang correct here?
|
const aMove = allMoves[aCommand.move!.move];
|
||||||
const bMove = allMoves[bCommand!.move!.move];//TODO: is the bang correct here?
|
const bMove = allMoves[bCommand!.move!.move];
|
||||||
|
|
||||||
// The game now considers priority and applies the relevant move and ability attributes
|
// The game now considers priority and applies the relevant move and ability attributes
|
||||||
const aPriority = new Utils.IntegerHolder(aMove.priority);
|
const aPriority = new Utils.IntegerHolder(aMove.priority);
|
||||||
const bPriority = new Utils.IntegerHolder(bMove.priority);
|
const bPriority = new Utils.IntegerHolder(bMove.priority);
|
||||||
|
|
||||||
applyMoveAttrs(IncrementMovePriorityAttr, this.scene.getField().find(p => p?.isActive() && p.getBattlerIndex() === a)!, null, aMove, aPriority); //TODO: is the bang correct here?
|
applyMoveAttrs(IncrementMovePriorityAttr, this.scene.getField().find(p => p?.isActive() && p.getBattlerIndex() === a)!, null, aMove, aPriority);
|
||||||
applyMoveAttrs(IncrementMovePriorityAttr, this.scene.getField().find(p => p?.isActive() && p.getBattlerIndex() === b)!, null, bMove, bPriority); //TODO: is the bang correct here?
|
applyMoveAttrs(IncrementMovePriorityAttr, this.scene.getField().find(p => p?.isActive() && p.getBattlerIndex() === b)!, null, bMove, bPriority);
|
||||||
|
|
||||||
applyAbAttrs(ChangeMovePriorityAbAttr, this.scene.getField().find(p => p?.isActive() && p.getBattlerIndex() === a)!, null, false, aMove, aPriority); //TODO: is the bang correct here?
|
applyAbAttrs(ChangeMovePriorityAbAttr, this.scene.getField().find(p => p?.isActive() && p.getBattlerIndex() === a)!, null, false, aMove, aPriority);
|
||||||
applyAbAttrs(ChangeMovePriorityAbAttr, this.scene.getField().find(p => p?.isActive() && p.getBattlerIndex() === b)!, null, false, bMove, bPriority); //TODO: is the bang correct here?
|
applyAbAttrs(ChangeMovePriorityAbAttr, this.scene.getField().find(p => p?.isActive() && p.getBattlerIndex() === b)!, null, false, bMove, bPriority);
|
||||||
|
|
||||||
// The game now checks for differences in priority levels.
|
// The game now checks for differences in priority levels.
|
||||||
// If the moves share the same original priority bracket, it can check for differences in battlerBypassSpeed and return the result.
|
// If the moves share the same original priority bracket, it can check for differences in battlerBypassSpeed and return the result.
|
||||||
|
@ -76,30 +76,24 @@ describe("Battle order", () => {
|
|||||||
Species.BLASTOISE,
|
Species.BLASTOISE,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const playerParty = game.scene.getParty();
|
const playerPokemon = game.scene.getPlayerField();
|
||||||
const playerPokemon1 = playerParty[0];
|
const enemyPokemon = game.scene.getEnemyField();
|
||||||
const playerPokemon2 = playerParty[1];
|
|
||||||
const enemyPokemon1 = game.scene.currentBattle.enemyParty[0];
|
playerPokemon.forEach(p => p.stats[Stat.SPD] = 50);
|
||||||
const enemyPokemon2 = game.scene.currentBattle.enemyParty[1];
|
enemyPokemon.forEach(p => p.stats[Stat.SPD] = 150);
|
||||||
playerPokemon1.stats[Stat.SPD] = 50;
|
const playerIndices = playerPokemon.map(p => p?.getBattlerIndex());
|
||||||
playerPokemon2.stats[Stat.SPD] = 50;
|
const enemyIndices = enemyPokemon.map(p => p?.getBattlerIndex());
|
||||||
enemyPokemon1.stats[Stat.SPD] = 150;
|
|
||||||
enemyPokemon2.stats[Stat.SPD] = 150;
|
|
||||||
|
|
||||||
game.move.select(Moves.TACKLE);
|
game.move.select(Moves.TACKLE);
|
||||||
game.move.select(Moves.TACKLE, 1);
|
game.move.select(Moves.TACKLE, 1);
|
||||||
await game.phaseInterceptor.runFrom(SelectTargetPhase).to(TurnStartPhase, false);
|
await game.phaseInterceptor.runFrom(SelectTargetPhase).to(TurnStartPhase, false);
|
||||||
|
|
||||||
const pp1Index = playerPokemon1?.getBattlerIndex();
|
|
||||||
const pp2Index = playerPokemon2?.getBattlerIndex();
|
|
||||||
const ep1Index = enemyPokemon1?.getBattlerIndex();
|
|
||||||
const ep2Index = enemyPokemon2?.getBattlerIndex();
|
|
||||||
const phase = game.scene.getCurrentPhase() as TurnStartPhase;
|
const phase = game.scene.getCurrentPhase() as TurnStartPhase;
|
||||||
const order = phase.getCommandOrder();
|
const order = phase.getCommandOrder();
|
||||||
expect(order.slice(0,2).includes(ep1Index)).toBe(true);
|
expect(order.slice(0,2).includes(enemyIndices[0])).toBe(true);
|
||||||
expect(order.slice(0,2).includes(ep2Index)).toBe(true);
|
expect(order.slice(0,2).includes(enemyIndices[1])).toBe(true);
|
||||||
expect(order.slice(2,4).includes(pp1Index)).toBe(true);
|
expect(order.slice(2,4).includes(playerIndices[0])).toBe(true);
|
||||||
expect(order.slice(2,4).includes(pp2Index)).toBe(true);
|
expect(order.slice(2,4).includes(playerIndices[1])).toBe(true);
|
||||||
}, 20000);
|
}, 20000);
|
||||||
|
|
||||||
it("double - speed tie except 1 - 100/100 vs 100/150", async () => {
|
it("double - speed tie except 1 - 100/100 vs 100/150", async () => {
|
||||||
@ -108,30 +102,25 @@ describe("Battle order", () => {
|
|||||||
Species.BULBASAUR,
|
Species.BULBASAUR,
|
||||||
Species.BLASTOISE,
|
Species.BLASTOISE,
|
||||||
]);
|
]);
|
||||||
const playerParty = game.scene.getParty();
|
|
||||||
const playerPokemon1 = playerParty[0];
|
const playerPokemon = game.scene.getPlayerField();
|
||||||
const playerPokemon2 = playerParty[1];
|
const enemyPokemon = game.scene.getEnemyField();
|
||||||
const enemyPokemon1 = game.scene.currentBattle.enemyParty[0];
|
playerPokemon.forEach(p => p.stats[Stat.SPD] = 100);
|
||||||
const enemyPokemon2 = game.scene.currentBattle.enemyParty[1];
|
enemyPokemon[0].stats[Stat.SPD] = 100;
|
||||||
playerPokemon1.stats[Stat.SPD] = 100;
|
enemyPokemon[1].stats[Stat.SPD] = 150;
|
||||||
playerPokemon2.stats[Stat.SPD] = 100;
|
const playerIndices = playerPokemon.map(p => p?.getBattlerIndex());
|
||||||
enemyPokemon1.stats[Stat.SPD] = 100;
|
const enemyIndices = enemyPokemon.map(p => p?.getBattlerIndex());
|
||||||
enemyPokemon2.stats[Stat.SPD] = 150;
|
|
||||||
|
|
||||||
game.move.select(Moves.TACKLE);
|
game.move.select(Moves.TACKLE);
|
||||||
game.move.select(Moves.TACKLE, 1);
|
game.move.select(Moves.TACKLE, 1);
|
||||||
await game.phaseInterceptor.runFrom(SelectTargetPhase).to(TurnStartPhase, false);
|
await game.phaseInterceptor.runFrom(SelectTargetPhase).to(TurnStartPhase, false);
|
||||||
|
|
||||||
const pp1Index = playerPokemon1?.getBattlerIndex();
|
|
||||||
const pp2Index = playerPokemon2?.getBattlerIndex();
|
|
||||||
const ep1Index = enemyPokemon1?.getBattlerIndex();
|
|
||||||
const ep2Index = enemyPokemon2?.getBattlerIndex();
|
|
||||||
const phase = game.scene.getCurrentPhase() as TurnStartPhase;
|
const phase = game.scene.getCurrentPhase() as TurnStartPhase;
|
||||||
const order = phase.getCommandOrder();
|
const order = phase.getCommandOrder();
|
||||||
expect(order[0]).toBe(ep2Index);
|
expect(order[0]).toBe(enemyIndices[1]);
|
||||||
expect(order.slice(1,4).includes(ep1Index)).toBe(true);
|
expect(order.slice(1,4).includes(enemyIndices[0])).toBe(true);
|
||||||
expect(order.slice(1,4).includes(pp2Index)).toBe(true);
|
expect(order.slice(1,4).includes(playerIndices[0])).toBe(true);
|
||||||
expect(order.slice(1,4).includes(pp1Index)).toBe(true);
|
expect(order.slice(1,4).includes(playerIndices[1])).toBe(true);
|
||||||
}, 20000);
|
}, 20000);
|
||||||
|
|
||||||
it("double - speed tie 100/150 vs 100/150", async () => {
|
it("double - speed tie 100/150 vs 100/150", async () => {
|
||||||
@ -140,29 +129,25 @@ describe("Battle order", () => {
|
|||||||
Species.BULBASAUR,
|
Species.BULBASAUR,
|
||||||
Species.BLASTOISE,
|
Species.BLASTOISE,
|
||||||
]);
|
]);
|
||||||
const playerParty = game.scene.getParty();
|
|
||||||
const playerPokemon1 = playerParty[0];
|
const playerPokemon = game.scene.getPlayerField();
|
||||||
const playerPokemon2 = playerParty[1];
|
const enemyPokemon = game.scene.getEnemyField();
|
||||||
const enemyPokemon1 = game.scene.currentBattle.enemyParty[0];
|
playerPokemon[0].stats[Stat.SPD] = 100;
|
||||||
const enemyPokemon2 = game.scene.currentBattle.enemyParty[1];
|
playerPokemon[1].stats[Stat.SPD] = 150;
|
||||||
playerPokemon1.stats[Stat.SPD] = 100;
|
enemyPokemon[0].stats[Stat.SPD] = 100;
|
||||||
playerPokemon2.stats[Stat.SPD] = 150;
|
enemyPokemon[1].stats[Stat.SPD] = 150;
|
||||||
enemyPokemon1.stats[Stat.SPD] = 100;
|
const playerIndices = playerPokemon.map(p => p?.getBattlerIndex());
|
||||||
enemyPokemon2.stats[Stat.SPD] = 150;
|
const enemyIndices = enemyPokemon.map(p => p?.getBattlerIndex());
|
||||||
|
|
||||||
game.move.select(Moves.TACKLE);
|
game.move.select(Moves.TACKLE);
|
||||||
game.move.select(Moves.TACKLE, 1);
|
game.move.select(Moves.TACKLE, 1);
|
||||||
await game.phaseInterceptor.runFrom(SelectTargetPhase).to(TurnStartPhase, false);
|
await game.phaseInterceptor.runFrom(SelectTargetPhase).to(TurnStartPhase, false);
|
||||||
|
|
||||||
const pp1Index = playerPokemon1?.getBattlerIndex();
|
|
||||||
const pp2Index = playerPokemon2?.getBattlerIndex();
|
|
||||||
const ep1Index = enemyPokemon1?.getBattlerIndex();
|
|
||||||
const ep2Index = enemyPokemon2?.getBattlerIndex();
|
|
||||||
const phase = game.scene.getCurrentPhase() as TurnStartPhase;
|
const phase = game.scene.getCurrentPhase() as TurnStartPhase;
|
||||||
const order = phase.getCommandOrder();
|
const order = phase.getCommandOrder();
|
||||||
expect(order.slice(0,2).includes(pp2Index)).toBe(true);
|
expect(order.slice(0,2).includes(playerIndices[1])).toBe(true);
|
||||||
expect(order.slice(0,2).includes(ep2Index)).toBe(true);
|
expect(order.slice(0,2).includes(enemyIndices[1])).toBe(true);
|
||||||
expect(order.slice(2,4).includes(ep1Index)).toBe(true);
|
expect(order.slice(2,4).includes(playerIndices[0])).toBe(true);
|
||||||
expect(order.slice(2,4).includes(pp1Index)).toBe(true);
|
expect(order.slice(2,4).includes(enemyIndices[0])).toBe(true);
|
||||||
}, 20000);
|
}, 20000);
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user