mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-07-03 23:12:20 +02:00
Add move header queue to fix ordering
This commit is contained in:
parent
c790f2e84f
commit
0128d673b5
@ -24,6 +24,6 @@ export type PhaseClass = PhaseConstructorMap[keyof PhaseConstructorMap];
|
||||
*/
|
||||
export type PhaseString = keyof PhaseMap;
|
||||
|
||||
export type DynamicPhaseString = "PostSummonPhase" | "SwitchSummonPhase" | "MovePhase";
|
||||
export type DynamicPhaseString = "PostSummonPhase" | "SwitchSummonPhase" | "MovePhase" | "MoveHeaderPhase";
|
||||
|
||||
export type StaticPhaseString = Exclude<PhaseString, DynamicPhaseString>;
|
||||
|
@ -6883,7 +6883,6 @@ export class PokemonTurnData {
|
||||
public singleHitDamageDealt = 0;
|
||||
public damageTaken = 0;
|
||||
public attacksReceived: AttackMoveResult[] = [];
|
||||
public order: number;
|
||||
public statStagesIncreased = false;
|
||||
public statStagesDecreased = false;
|
||||
public moveEffectiveness: TypeDamageMultiplier | null = null;
|
||||
|
@ -1,29 +1,27 @@
|
||||
import { applyMoveAttrs } from "#app/data/moves/apply-attrs";
|
||||
import type { PokemonMove } from "#app/data/moves/pokemon-move";
|
||||
import type Pokemon from "#app/field/pokemon";
|
||||
import { BattlePhase } from "./battle-phase";
|
||||
import { PokemonPhase } from "#app/phases/pokemon-phase";
|
||||
import type { BattlerIndex } from "#enums/battler-index";
|
||||
|
||||
export class MoveHeaderPhase extends BattlePhase {
|
||||
export class MoveHeaderPhase extends PokemonPhase {
|
||||
public readonly phaseName = "MoveHeaderPhase";
|
||||
public pokemon: Pokemon;
|
||||
public move: PokemonMove;
|
||||
|
||||
constructor(pokemon: Pokemon, move: PokemonMove) {
|
||||
super();
|
||||
constructor(battlerIndex: BattlerIndex, move: PokemonMove) {
|
||||
super(battlerIndex);
|
||||
|
||||
this.pokemon = pokemon;
|
||||
this.move = move;
|
||||
}
|
||||
|
||||
canMove(): boolean {
|
||||
return this.pokemon.isActive(true) && this.move.isUsable(this.pokemon);
|
||||
return this.getPokemon().isActive(true) && this.move.isUsable(this.getPokemon());
|
||||
}
|
||||
|
||||
start() {
|
||||
super.start();
|
||||
|
||||
if (this.canMove()) {
|
||||
applyMoveAttrs("MoveHeaderAttr", this.pokemon, null, this.move.getMove());
|
||||
applyMoveAttrs("MoveHeaderAttr", this.getPokemon(), null, this.move.getMove());
|
||||
}
|
||||
this.end();
|
||||
}
|
||||
|
@ -58,8 +58,6 @@ export class TurnStartPhase extends FieldPhase {
|
||||
const activeField = globalScene.getField(true);
|
||||
const moveOrder = this.getCommandOrder();
|
||||
|
||||
let orderIndex = 0;
|
||||
|
||||
applyInSpeedOrder(activeField, (p: Pokemon) => {
|
||||
const preTurnCommand = globalScene.currentBattle.preTurnCommands[p.getBattlerIndex()];
|
||||
|
||||
@ -91,7 +89,6 @@ export class TurnStartPhase extends FieldPhase {
|
||||
case Command.FIGHT:
|
||||
{
|
||||
const queuedMove = turnCommand.move;
|
||||
pokemon.turnData.order = orderIndex++;
|
||||
if (!queuedMove) {
|
||||
continue;
|
||||
}
|
||||
@ -99,7 +96,7 @@ export class TurnStartPhase extends FieldPhase {
|
||||
pokemon.getMoveset().find(m => m.moveId === queuedMove.move && m.ppUsed < m.getMovePp()) ||
|
||||
new PokemonMove(queuedMove.move);
|
||||
if (move.getMove().hasAttr("MoveHeaderAttr")) {
|
||||
phaseManager.unshiftNew("MoveHeaderPhase", pokemon, move);
|
||||
phaseManager.pushNew("MoveHeaderPhase", pokemon.getBattlerIndex(), move);
|
||||
}
|
||||
if (pokemon.isPlayer()) {
|
||||
if (turnCommand.cursor === -1) {
|
||||
|
@ -3,8 +3,10 @@ import type { DynamicPhaseString, PhaseString } from "#app/@types/phase-types";
|
||||
import type { PokemonMove } from "#app/data/moves/pokemon-move";
|
||||
import type Pokemon from "#app/field/pokemon";
|
||||
import type { Phase } from "#app/phase";
|
||||
import type { MoveHeaderPhase } from "#app/phases/move-header-phase";
|
||||
import { MovePhasePriorityQueue } from "#app/queues/move-phase-priority-queue";
|
||||
import type { PhasePriorityQueue } from "#app/queues/phase-priority-queue";
|
||||
import { PokemonPhasePriorityQueue } from "#app/queues/pokemon-phase-priority-queue";
|
||||
import { PostSummonPhasePriorityQueue } from "#app/queues/post-summon-phase-priority-queue";
|
||||
import { SwitchSummonPhasePriorityQueue } from "#app/queues/switch-summon-phase-priority-queue";
|
||||
import type { BattlerIndex } from "#enums/battler-index";
|
||||
@ -16,6 +18,7 @@ export class DynamicQueueManager {
|
||||
constructor() {
|
||||
this.dynamicPhaseMap = new Map();
|
||||
this.dynamicPhaseMap.set("SwitchSummonPhase", new SwitchSummonPhasePriorityQueue());
|
||||
this.dynamicPhaseMap.set("MoveHeaderPhase", new PokemonPhasePriorityQueue<MoveHeaderPhase>());
|
||||
this.dynamicPhaseMap.set("PostSummonPhase", new PostSummonPhasePriorityQueue());
|
||||
this.dynamicPhaseMap.set("MovePhase", new MovePhasePriorityQueue());
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user