minor changes to CanLearnMoveRequirement
This commit is contained in:
parent
53f178fde2
commit
0a212b3f81
|
@ -26,11 +26,23 @@ export class CanLearnMoveRequirement extends EncounterPokemonRequirement {
|
||||||
private readonly excludeEggMoves?: boolean;
|
private readonly excludeEggMoves?: boolean;
|
||||||
private readonly includeFainted?: boolean;
|
private readonly includeFainted?: boolean;
|
||||||
|
|
||||||
constructor(requiredMoves: Moves | Moves[], options: CanlearnMoveRequirementOptions = {}) {
|
constructor(
|
||||||
|
requiredMoves: Moves | Moves[],
|
||||||
|
options: CanlearnMoveRequirementOptions = {}
|
||||||
|
) {
|
||||||
super();
|
super();
|
||||||
this.requiredMoves = Array.isArray(requiredMoves) ? requiredMoves : [requiredMoves];
|
this.requiredMoves = Array.isArray(requiredMoves)
|
||||||
|
? requiredMoves
|
||||||
|
: [requiredMoves];
|
||||||
|
|
||||||
const { excludeLevelMoves, excludeTmMoves, excludeEggMoves, includeFainted, minNumberOfPokemon, invertQuery } = options;
|
const {
|
||||||
|
excludeLevelMoves,
|
||||||
|
excludeTmMoves,
|
||||||
|
excludeEggMoves,
|
||||||
|
includeFainted,
|
||||||
|
minNumberOfPokemon,
|
||||||
|
invertQuery,
|
||||||
|
} = options;
|
||||||
|
|
||||||
this.excludeLevelMoves = excludeLevelMoves ?? false;
|
this.excludeLevelMoves = excludeLevelMoves ?? false;
|
||||||
this.excludeTmMoves = excludeTmMoves ?? false;
|
this.excludeTmMoves = excludeTmMoves ?? false;
|
||||||
|
@ -41,7 +53,11 @@ export class CanLearnMoveRequirement extends EncounterPokemonRequirement {
|
||||||
}
|
}
|
||||||
|
|
||||||
override meetsRequirement(scene: BattleScene): boolean {
|
override meetsRequirement(scene: BattleScene): boolean {
|
||||||
const partyPokemon = scene.getParty().filter((pkm) => (this.includeFainted ? pkm.isAllowed() : pkm.isAllowedInBattle()));
|
const partyPokemon = scene
|
||||||
|
.getParty()
|
||||||
|
.filter((pkm) =>
|
||||||
|
this.includeFainted ? pkm.isAllowed() : pkm.isAllowedInBattle()
|
||||||
|
);
|
||||||
|
|
||||||
if (isNullOrUndefined(partyPokemon) || this?.requiredMoves?.length < 0) {
|
if (isNullOrUndefined(partyPokemon) || this?.requiredMoves?.length < 0) {
|
||||||
return false;
|
return false;
|
||||||
|
@ -54,19 +70,26 @@ export class CanLearnMoveRequirement extends EncounterPokemonRequirement {
|
||||||
if (!this.invertQuery) {
|
if (!this.invertQuery) {
|
||||||
return partyPokemon.filter((pokemon) =>
|
return partyPokemon.filter((pokemon) =>
|
||||||
// every required move should be included
|
// every required move should be included
|
||||||
this.requiredMoves.every((requiredMove) => this.getAllPokemonMoves(pokemon).includes(requiredMove))
|
this.requiredMoves.every((requiredMove) =>
|
||||||
|
this.getAllPokemonMoves(pokemon).includes(requiredMove)
|
||||||
|
)
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
return partyPokemon.filter(
|
return partyPokemon.filter(
|
||||||
(pokemon) =>
|
(pokemon) =>
|
||||||
// none of the "required" moves should be included
|
// none of the "required" moves should be included
|
||||||
!this.requiredMoves.some((requiredMove) => this.getAllPokemonMoves(pokemon).includes(requiredMove))
|
!this.requiredMoves.some((requiredMove) =>
|
||||||
|
this.getAllPokemonMoves(pokemon).includes(requiredMove)
|
||||||
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override getDialogueToken(scene: BattleScene, pokemon?: PlayerPokemon): [string, string] {
|
override getDialogueToken(
|
||||||
return pokemon ? ["pokemonCanLearnMove", pokemon.name] : null;
|
_scene: BattleScene,
|
||||||
|
_pokemon?: PlayerPokemon
|
||||||
|
): [string, string] {
|
||||||
|
return ["requiredMoves", this.requiredMoves.join(", ")];
|
||||||
}
|
}
|
||||||
|
|
||||||
private getPokemonLevelMoves(pkm: PlayerPokemon): Moves[] {
|
private getPokemonLevelMoves(pkm: PlayerPokemon): Moves[] {
|
||||||
|
@ -80,11 +103,11 @@ export class CanLearnMoveRequirement extends EncounterPokemonRequirement {
|
||||||
allPokemonMoves.push(...this.getPokemonLevelMoves(pkm));
|
allPokemonMoves.push(...this.getPokemonLevelMoves(pkm));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.excludeTmMoves) {
|
if (!this.excludeTmMoves) {
|
||||||
allPokemonMoves.push(...pkm.compatibleTms);
|
allPokemonMoves.push(...pkm.compatibleTms);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.excludeEggMoves) {
|
if (!this.excludeEggMoves) {
|
||||||
allPokemonMoves.push(...pkm.getEggMoves());
|
allPokemonMoves.push(...pkm.getEggMoves());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue