mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-07-19 14:52:19 +02:00
Add considerations for Metronome mode in evolutions
This commit is contained in:
parent
82702d0b46
commit
1a56f43c29
@ -14,6 +14,8 @@ import { DamageMoneyRewardModifier, ExtraModifierModifier, MoneyMultiplierModifi
|
|||||||
import { SpeciesFormKey } from "#enums/species-form-key";
|
import { SpeciesFormKey } from "#enums/species-form-key";
|
||||||
import { speciesStarterCosts } from "./starters";
|
import { speciesStarterCosts } from "./starters";
|
||||||
import i18next from "i18next";
|
import i18next from "i18next";
|
||||||
|
import { Challenges } from "#enums/challenges";
|
||||||
|
import { Stat } from "#enums/stat";
|
||||||
|
|
||||||
|
|
||||||
export enum SpeciesWildEvolutionDelay {
|
export enum SpeciesWildEvolutionDelay {
|
||||||
@ -179,7 +181,7 @@ class TimeOfDayEvolutionCondition extends SpeciesEvolutionCondition {
|
|||||||
class MoveEvolutionCondition extends SpeciesEvolutionCondition {
|
class MoveEvolutionCondition extends SpeciesEvolutionCondition {
|
||||||
public move: Moves;
|
public move: Moves;
|
||||||
constructor(move: Moves) {
|
constructor(move: Moves) {
|
||||||
super(p => p.moveset.filter(m => m?.moveId === move).length > 0);
|
super(p => p.moveset.filter(m => m?.moveId === move).length > 0 || globalScene.gameMode.hasChallenge(Challenges.METRONOME));
|
||||||
this.move = move;
|
this.move = move;
|
||||||
const moveKey = Moves[this.move].split("_").filter(f => f).map((f, i) => i ? `${f[0]}${f.slice(1).toLowerCase()}` : f.toLowerCase()).join("");
|
const moveKey = Moves[this.move].split("_").filter(f => f).map((f, i) => i ? `${f[0]}${f.slice(1).toLowerCase()}` : f.toLowerCase()).join("");
|
||||||
this.description = i18next.t("pokemonEvolutions:move", { move: i18next.t(`move:${moveKey}.name`) });
|
this.description = i18next.t("pokemonEvolutions:move", { move: i18next.t(`move:${moveKey}.name`) });
|
||||||
@ -218,7 +220,12 @@ class FriendshipMoveTypeEvolutionCondition extends SpeciesEvolutionCondition {
|
|||||||
public amount: number;
|
public amount: number;
|
||||||
public type: PokemonType;
|
public type: PokemonType;
|
||||||
constructor(amount: number, type: PokemonType) {
|
constructor(amount: number, type: PokemonType) {
|
||||||
super(p => p.friendship >= amount && !!p.getMoveset().find(m => m?.getMove().type === type));
|
super(p =>
|
||||||
|
p.friendship >= amount &&
|
||||||
|
(!!p.getMoveset().find(m => m?.getMove().type === type ||
|
||||||
|
(globalScene.gameMode.hasChallenge(Challenges.METRONOME) &&
|
||||||
|
!!globalScene.getPlayerParty().find(p => p.getTypes(false, false, true).indexOf(type) > -1)
|
||||||
|
))));
|
||||||
this.amount = amount;
|
this.amount = amount;
|
||||||
this.type = type;
|
this.type = type;
|
||||||
this.description = i18next.t("pokemonEvolutions:friendshipMoveType", { type: i18next.t(`pokemonInfo:Type.${PokemonType[this.type]}`) });
|
this.description = i18next.t("pokemonEvolutions:friendshipMoveType", { type: i18next.t(`pokemonInfo:Type.${PokemonType[this.type]}`) });
|
||||||
@ -262,7 +269,9 @@ class WeatherEvolutionCondition extends SpeciesEvolutionCondition {
|
|||||||
class MoveTypeEvolutionCondition extends SpeciesEvolutionCondition {
|
class MoveTypeEvolutionCondition extends SpeciesEvolutionCondition {
|
||||||
public type: PokemonType;
|
public type: PokemonType;
|
||||||
constructor(type: PokemonType) {
|
constructor(type: PokemonType) {
|
||||||
super(p => p.moveset.filter(m => m?.getMove().type === type).length > 0);
|
super(p => p.moveset.filter(m => m?.getMove().type === type).length > 0 ||
|
||||||
|
(globalScene.gameMode.hasChallenge(Challenges.METRONOME) &&
|
||||||
|
!!globalScene.getPlayerParty().find(p => p.getTypes(false, false, true).indexOf(type) > -1)));
|
||||||
this.type = type;
|
this.type = type;
|
||||||
this.description = i18next.t("pokemonEvolutions:moveType", { type: i18next.t(`pokemonInfo:Type.${PokemonType[this.type]}`) });
|
this.description = i18next.t("pokemonEvolutions:moveType", { type: i18next.t(`pokemonInfo:Type.${PokemonType[this.type]}`) });
|
||||||
}
|
}
|
||||||
@ -282,6 +291,11 @@ class TyrogueEvolutionCondition extends SpeciesEvolutionCondition {
|
|||||||
public move: Moves;
|
public move: Moves;
|
||||||
constructor(move: Moves) {
|
constructor(move: Moves) {
|
||||||
super(p =>
|
super(p =>
|
||||||
|
(globalScene.gameMode.hasChallenge(Challenges.METRONOME) && ( // Metronome mode = no moves, do it the old fashioned way
|
||||||
|
(move === Moves.LOW_SWEEP && p.stats[Stat.ATK] > p.stats[Stat.DEF]) ||
|
||||||
|
(move === Moves.MACH_PUNCH && p.stats[Stat.DEF] > p.stats[Stat.ATK]) ||
|
||||||
|
(move === Moves.RAPID_SPIN && p.stats[Stat.DEF] === p.stats[Stat.ATK])
|
||||||
|
)) ||
|
||||||
p.getMoveset(true).find(m => m && [ Moves.LOW_SWEEP, Moves.MACH_PUNCH, Moves.RAPID_SPIN ].includes(m?.moveId))?.moveId === move);
|
p.getMoveset(true).find(m => m && [ Moves.LOW_SWEEP, Moves.MACH_PUNCH, Moves.RAPID_SPIN ].includes(m?.moveId))?.moveId === move);
|
||||||
this.move = move;
|
this.move = move;
|
||||||
const moveKey = Moves[this.move].split("_").filter(f => f).map((f, i) => i ? `${f[0]}${f.slice(1).toLowerCase()}` : f.toLowerCase()).join("");
|
const moveKey = Moves[this.move].split("_").filter(f => f).map((f, i) => i ? `${f[0]}${f.slice(1).toLowerCase()}` : f.toLowerCase()).join("");
|
||||||
@ -303,11 +317,17 @@ class MoveTimeOfDayEvolutionCondition extends SpeciesEvolutionCondition {
|
|||||||
public timesOfDay: TimeOfDay[];
|
public timesOfDay: TimeOfDay[];
|
||||||
constructor(move: Moves, tod: "day" | "night") {
|
constructor(move: Moves, tod: "day" | "night") {
|
||||||
if (tod === "day") {
|
if (tod === "day") {
|
||||||
super(p => p.moveset.filter(m => m?.moveId === move).length > 0 && (globalScene.arena.getTimeOfDay() === TimeOfDay.DAWN || globalScene.arena.getTimeOfDay() === TimeOfDay.DAY));
|
super(p =>
|
||||||
|
(p.moveset.filter(m => m?.moveId === move).length > 0 ||
|
||||||
|
globalScene.gameMode.hasChallenge(Challenges.METRONOME)) &&
|
||||||
|
(globalScene.arena.getTimeOfDay() === TimeOfDay.DAWN || globalScene.arena.getTimeOfDay() === TimeOfDay.DAY));
|
||||||
this.move = move;
|
this.move = move;
|
||||||
this.timesOfDay = [ TimeOfDay.DAWN, TimeOfDay.DAY ];
|
this.timesOfDay = [ TimeOfDay.DAWN, TimeOfDay.DAY ];
|
||||||
} else if (tod === "night") {
|
} else if (tod === "night") {
|
||||||
super(p => p.moveset.filter(m => m?.moveId === move).length > 0 && (globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT));
|
super(p =>
|
||||||
|
(p.moveset.filter(m => m?.moveId === move).length > 0 ||
|
||||||
|
globalScene.gameMode.hasChallenge(Challenges.METRONOME)) &&
|
||||||
|
(globalScene.arena.getTimeOfDay() === TimeOfDay.DUSK || globalScene.arena.getTimeOfDay() === TimeOfDay.NIGHT));
|
||||||
this.move = move;
|
this.move = move;
|
||||||
this.timesOfDay = [ TimeOfDay.DUSK, TimeOfDay.NIGHT ];
|
this.timesOfDay = [ TimeOfDay.DUSK, TimeOfDay.NIGHT ];
|
||||||
} else {
|
} else {
|
||||||
@ -332,7 +352,7 @@ class DunsparceEvolutionCondition extends SpeciesEvolutionCondition {
|
|||||||
constructor() {
|
constructor() {
|
||||||
super(p => {
|
super(p => {
|
||||||
let ret = false;
|
let ret = false;
|
||||||
if (p.moveset.filter(m => m?.moveId === Moves.HYPER_DRILL).length > 0) {
|
if (p.moveset.filter(m => m?.moveId === Moves.HYPER_DRILL).length > 0 || globalScene.gameMode.hasChallenge(Challenges.METRONOME)) {
|
||||||
globalScene.executeWithSeedOffset(() => ret = !Utils.randSeedInt(4), p.id);
|
globalScene.executeWithSeedOffset(() => ret = !Utils.randSeedInt(4), p.id);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
|
Loading…
Reference in New Issue
Block a user