mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-07-04 15:32:18 +02:00
Fixed up documentation for speed order functions
This commit is contained in:
parent
4dc53d2ee3
commit
e6e4445a09
@ -20,16 +20,16 @@ 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[]} the battle indices of all pokemon on the field ordered by speed
|
* @returns An array of {@linkcode BattlerIndex}es containing all on-field Pokemon sorted in speed order.
|
||||||
*/
|
*/
|
||||||
getSpeedOrder(): BattlerIndex[] {
|
getSpeedOrder(): BattlerIndex[] {
|
||||||
const playerField = globalScene.getPlayerField().filter(p => p.isActive()) as Pokemon[];
|
const playerField = globalScene.getPlayerField().filter(p => p.isActive());
|
||||||
const enemyField = globalScene.getEnemyField().filter(p => p.isActive()) as Pokemon[];
|
const enemyField = globalScene.getEnemyField().filter(p => p.isActive());
|
||||||
|
|
||||||
// We shuffle the list before sorting so speed ties produce random results
|
// Shuffle the list before sorting so speed ties produce random results
|
||||||
let orderedTargets: Pokemon[] = playerField.concat(enemyField);
|
// This is seeded with the current turn to prevent turn order varying
|
||||||
// We seed it with the current turn to prevent an inconsistency where it
|
// based on how long since you last reloaded.
|
||||||
// was varying based on how long since you last reloaded
|
let orderedTargets = (playerField as Pokemon[]).concat(enemyField);
|
||||||
globalScene.executeWithSeedOffset(
|
globalScene.executeWithSeedOffset(
|
||||||
() => {
|
() => {
|
||||||
orderedTargets = randSeedShuffle(orderedTargets);
|
orderedTargets = randSeedShuffle(orderedTargets);
|
||||||
@ -38,25 +38,25 @@ export class TurnStartPhase extends FieldPhase {
|
|||||||
globalScene.waveSeed,
|
globalScene.waveSeed,
|
||||||
);
|
);
|
||||||
|
|
||||||
// Next, a check for Trick Room is applied to determine sort order.
|
// Check for Trick Room and reverse sort order if active.
|
||||||
|
// Notably, Pokerogue does NOT have the "outspeed trick room" glitch at >1809 spd.
|
||||||
const speedReversed = new BooleanHolder(false);
|
const speedReversed = new BooleanHolder(false);
|
||||||
globalScene.arena.applyTags(TrickRoomTag, false, speedReversed);
|
globalScene.arena.applyTags(TrickRoomTag, false, speedReversed);
|
||||||
|
|
||||||
// Adjust the sort function based on whether Trick Room is active.
|
|
||||||
orderedTargets.sort((a: Pokemon, b: Pokemon) => {
|
orderedTargets.sort((a: Pokemon, b: Pokemon) => {
|
||||||
const aSpeed = a?.getEffectiveStat(Stat.SPD) ?? 0;
|
const aSpeed = a.getEffectiveStat(Stat.SPD);
|
||||||
const bSpeed = b?.getEffectiveStat(Stat.SPD) ?? 0;
|
const bSpeed = b.getEffectiveStat(Stat.SPD);
|
||||||
|
|
||||||
return speedReversed.value ? aSpeed - bSpeed : bSpeed - aSpeed;
|
return speedReversed.value ? aSpeed - bSpeed : bSpeed - aSpeed;
|
||||||
});
|
});
|
||||||
|
|
||||||
return orderedTargets.map(t => t.getFieldIndex() + (!t.isPlayer() ? BattlerIndex.ENEMY : BattlerIndex.PLAYER));
|
return orderedTargets.map(t => t.getFieldIndex() + (t.isEnemy() ? BattlerIndex.ENEMY : BattlerIndex.PLAYER));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This takes the result of getSpeedOrder and applies priority / bypass speed attributes to it.
|
* This takes the result of getSpeedOrder and applies priority / bypass speed attributes to it.
|
||||||
* This also considers the priority levels of various commands and changes the result of getSpeedOrder based on such.
|
* This also considers the priority levels of various commands and changes the result of `getSpeedOrder` based on such.
|
||||||
* @returns {@linkcode BattlerIndex[]} the final sequence of commands for this turn
|
* @returns An array of {@linkcode BattlerIndex}es containing all on-field Pokemon sorted in action order.
|
||||||
*/
|
*/
|
||||||
getCommandOrder(): BattlerIndex[] {
|
getCommandOrder(): BattlerIndex[] {
|
||||||
let moveOrder = this.getSpeedOrder();
|
let moveOrder = this.getSpeedOrder();
|
||||||
@ -113,7 +113,8 @@ export class TurnStartPhase extends FieldPhase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// If there is no difference between the move's calculated priorities, the game checks for differences in battlerBypassSpeed and returns the result.
|
// If there is no difference between the move's calculated priorities,
|
||||||
|
// check for differences in battlerBypassSpeed and returns the result.
|
||||||
if (battlerBypassSpeed[a].value !== battlerBypassSpeed[b].value) {
|
if (battlerBypassSpeed[a].value !== battlerBypassSpeed[b].value) {
|
||||||
return battlerBypassSpeed[a].value ? -1 : 1;
|
return battlerBypassSpeed[a].value ? -1 : 1;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user