mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-07-04 15:32:18 +02:00
Rename Species
to SpeciesId
This commit is contained in:
parent
5e38a388ee
commit
8c4e20b12f
@ -134,7 +134,7 @@ import type { ExpNotification } from "#enums/exp-notification";
|
||||
import { MoneyFormat } from "#enums/money-format";
|
||||
import { MoveId } from "#enums/move-id";
|
||||
import { PlayerGender } from "#enums/player-gender";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import { UiTheme } from "#enums/ui-theme";
|
||||
import { TimedEventManager } from "#app/timed-event-manager";
|
||||
import type { PokemonAnimType } from "#enums/pokemon-anim-type";
|
||||
@ -1501,7 +1501,7 @@ export default class BattleScene extends SceneBase {
|
||||
pokemon.resetTera();
|
||||
applyPostBattleInitAbAttrs(PostBattleInitAbAttr, pokemon);
|
||||
if (
|
||||
pokemon.hasSpecies(Species.TERAPAGOS) ||
|
||||
pokemon.hasSpecies(SpeciesId.TERAPAGOS) ||
|
||||
(this.gameMode.isClassic && this.currentBattle.waveIndex > 180 && this.currentBattle.waveIndex <= 190)
|
||||
) {
|
||||
this.arena.playerTerasUsed = 0;
|
||||
@ -1599,7 +1599,7 @@ export default class BattleScene extends SceneBase {
|
||||
!isNullOrUndefined(this.currentBattle.trainer) &&
|
||||
this.currentBattle.trainer.config.hasSpecialtyType()
|
||||
) {
|
||||
if (species.speciesId === Species.WORMADAM) {
|
||||
if (species.speciesId === SpeciesId.WORMADAM) {
|
||||
switch (this.currentBattle.trainer.config.specialtyType) {
|
||||
case PokemonType.GROUND:
|
||||
return 1; // Sandy Cloak
|
||||
@ -1609,7 +1609,7 @@ export default class BattleScene extends SceneBase {
|
||||
return 0; // Plant Cloak
|
||||
}
|
||||
}
|
||||
if (species.speciesId === Species.ROTOM) {
|
||||
if (species.speciesId === SpeciesId.ROTOM) {
|
||||
switch (this.currentBattle.trainer.config.specialtyType) {
|
||||
case PokemonType.FLYING:
|
||||
return 4; // Fan Rotom
|
||||
@ -1625,7 +1625,7 @@ export default class BattleScene extends SceneBase {
|
||||
return 3; // Frost Rotom
|
||||
}
|
||||
}
|
||||
if (species.speciesId === Species.ORICORIO) {
|
||||
if (species.speciesId === SpeciesId.ORICORIO) {
|
||||
switch (this.currentBattle.trainer.config.specialtyType) {
|
||||
case PokemonType.GHOST:
|
||||
return 3; // Sensu Style
|
||||
@ -1637,7 +1637,7 @@ export default class BattleScene extends SceneBase {
|
||||
return 2; // Pa'u Style
|
||||
}
|
||||
}
|
||||
if (species.speciesId === Species.PALDEA_TAUROS) {
|
||||
if (species.speciesId === SpeciesId.PALDEA_TAUROS) {
|
||||
switch (this.currentBattle.trainer.config.specialtyType) {
|
||||
case PokemonType.FIRE:
|
||||
return 1; // Blaze Breed
|
||||
@ -1645,41 +1645,41 @@ export default class BattleScene extends SceneBase {
|
||||
return 2; // Aqua Breed
|
||||
}
|
||||
}
|
||||
if (species.speciesId === Species.SILVALLY || species.speciesId === Species.ARCEUS) {
|
||||
if (species.speciesId === SpeciesId.SILVALLY || species.speciesId === SpeciesId.ARCEUS) {
|
||||
// Would probably never happen, but might as well
|
||||
return this.currentBattle.trainer.config.specialtyType;
|
||||
}
|
||||
}
|
||||
|
||||
switch (species.speciesId) {
|
||||
case Species.UNOWN:
|
||||
case Species.SHELLOS:
|
||||
case Species.GASTRODON:
|
||||
case Species.BASCULIN:
|
||||
case Species.DEERLING:
|
||||
case Species.SAWSBUCK:
|
||||
case Species.SCATTERBUG:
|
||||
case Species.SPEWPA:
|
||||
case Species.VIVILLON:
|
||||
case Species.FLABEBE:
|
||||
case Species.FLOETTE:
|
||||
case Species.FLORGES:
|
||||
case Species.FURFROU:
|
||||
case Species.PUMPKABOO:
|
||||
case Species.GOURGEIST:
|
||||
case Species.ORICORIO:
|
||||
case Species.MAGEARNA:
|
||||
case Species.ZARUDE:
|
||||
case Species.SQUAWKABILLY:
|
||||
case Species.TATSUGIRI:
|
||||
case Species.PALDEA_TAUROS:
|
||||
case SpeciesId.UNOWN:
|
||||
case SpeciesId.SHELLOS:
|
||||
case SpeciesId.GASTRODON:
|
||||
case SpeciesId.BASCULIN:
|
||||
case SpeciesId.DEERLING:
|
||||
case SpeciesId.SAWSBUCK:
|
||||
case SpeciesId.SCATTERBUG:
|
||||
case SpeciesId.SPEWPA:
|
||||
case SpeciesId.VIVILLON:
|
||||
case SpeciesId.FLABEBE:
|
||||
case SpeciesId.FLOETTE:
|
||||
case SpeciesId.FLORGES:
|
||||
case SpeciesId.FURFROU:
|
||||
case SpeciesId.PUMPKABOO:
|
||||
case SpeciesId.GOURGEIST:
|
||||
case SpeciesId.ORICORIO:
|
||||
case SpeciesId.MAGEARNA:
|
||||
case SpeciesId.ZARUDE:
|
||||
case SpeciesId.SQUAWKABILLY:
|
||||
case SpeciesId.TATSUGIRI:
|
||||
case SpeciesId.PALDEA_TAUROS:
|
||||
return randSeedInt(species.forms.length);
|
||||
case Species.PIKACHU:
|
||||
case SpeciesId.PIKACHU:
|
||||
if (this.currentBattle?.battleType === BattleType.TRAINER && this.currentBattle?.waveIndex < 30) {
|
||||
return 0; // Ban Cosplay and Partner Pika from Trainers before wave 30
|
||||
}
|
||||
return randSeedInt(8);
|
||||
case Species.EEVEE:
|
||||
case SpeciesId.EEVEE:
|
||||
if (
|
||||
this.currentBattle?.battleType === BattleType.TRAINER &&
|
||||
this.currentBattle?.waveIndex < 30 &&
|
||||
@ -1688,27 +1688,27 @@ export default class BattleScene extends SceneBase {
|
||||
return 0; // No Partner Eevee for Wave 12 Preschoolers
|
||||
}
|
||||
return randSeedInt(2);
|
||||
case Species.FROAKIE:
|
||||
case Species.FROGADIER:
|
||||
case Species.GRENINJA:
|
||||
case SpeciesId.FROAKIE:
|
||||
case SpeciesId.FROGADIER:
|
||||
case SpeciesId.GRENINJA:
|
||||
if (this.currentBattle?.battleType === BattleType.TRAINER && !isEggPhase) {
|
||||
return 0; // Don't give trainers Battle Bond Greninja, Froakie or Frogadier
|
||||
}
|
||||
return randSeedInt(2);
|
||||
case Species.URSHIFU:
|
||||
case SpeciesId.URSHIFU:
|
||||
return randSeedInt(2);
|
||||
case Species.ZYGARDE:
|
||||
case SpeciesId.ZYGARDE:
|
||||
return randSeedInt(4);
|
||||
case Species.MINIOR:
|
||||
case SpeciesId.MINIOR:
|
||||
return randSeedInt(7);
|
||||
case Species.ALCREMIE:
|
||||
case SpeciesId.ALCREMIE:
|
||||
return randSeedInt(9);
|
||||
case Species.MEOWSTIC:
|
||||
case Species.INDEEDEE:
|
||||
case Species.BASCULEGION:
|
||||
case Species.OINKOLOGNE:
|
||||
case SpeciesId.MEOWSTIC:
|
||||
case SpeciesId.INDEEDEE:
|
||||
case SpeciesId.BASCULEGION:
|
||||
case SpeciesId.OINKOLOGNE:
|
||||
return gender === Gender.FEMALE ? 1 : 0;
|
||||
case Species.TOXTRICITY: {
|
||||
case SpeciesId.TOXTRICITY: {
|
||||
const lowkeyNatures = [
|
||||
Nature.LONELY,
|
||||
Nature.BOLD,
|
||||
@ -1728,7 +1728,7 @@ export default class BattleScene extends SceneBase {
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
case Species.GIMMIGHOUL:
|
||||
case SpeciesId.GIMMIGHOUL:
|
||||
// Chest form can only be found in Mysterious Chest Encounter, if this is a game mode with MEs
|
||||
if (this.gameMode.hasMysteryEncounters && !isEggPhase) {
|
||||
return 1; // Wandering form
|
||||
@ -1738,10 +1738,10 @@ export default class BattleScene extends SceneBase {
|
||||
|
||||
if (ignoreArena) {
|
||||
switch (species.speciesId) {
|
||||
case Species.BURMY:
|
||||
case Species.WORMADAM:
|
||||
case Species.ROTOM:
|
||||
case Species.LYCANROC:
|
||||
case SpeciesId.BURMY:
|
||||
case SpeciesId.WORMADAM:
|
||||
case SpeciesId.ROTOM:
|
||||
case SpeciesId.LYCANROC:
|
||||
return randSeedInt(species.forms.length);
|
||||
}
|
||||
return 0;
|
||||
@ -3475,7 +3475,7 @@ export default class BattleScene extends SceneBase {
|
||||
fc => fc.findTrigger(formChangeTriggerType) && fc.canChange(pokemon),
|
||||
);
|
||||
let matchingFormChange: SpeciesFormChange | null;
|
||||
if (pokemon.species.speciesId === Species.NECROZMA && matchingFormChangeOpts.length > 1) {
|
||||
if (pokemon.species.speciesId === SpeciesId.NECROZMA && matchingFormChangeOpts.length > 1) {
|
||||
// Ultra Necrozma is changing its form back, so we need to figure out into which form it devolves.
|
||||
const formChangeItemModifiers = (
|
||||
this.findModifiers(
|
||||
|
180
src/battle.ts
180
src/battle.ts
@ -22,7 +22,7 @@ import { BattleSpec } from "#enums/battle-spec";
|
||||
import type { MoveId } from "#enums/move-id";
|
||||
import { PlayerGender } from "#enums/player-gender";
|
||||
import { MusicPreference } from "#app/system/settings/settings";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import { TrainerType } from "#enums/trainer-type";
|
||||
import i18next from "#app/plugins/i18n";
|
||||
import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter";
|
||||
@ -264,14 +264,14 @@ export default class Battle {
|
||||
if (pokemon.species.legendary || pokemon.species.subLegendary || pokemon.species.mythical) {
|
||||
if (globalScene.musicPreference === MusicPreference.GENFIVE) {
|
||||
switch (pokemon.species.speciesId) {
|
||||
case Species.REGIROCK:
|
||||
case Species.REGICE:
|
||||
case Species.REGISTEEL:
|
||||
case Species.REGIGIGAS:
|
||||
case Species.REGIDRAGO:
|
||||
case Species.REGIELEKI:
|
||||
case SpeciesId.REGIROCK:
|
||||
case SpeciesId.REGICE:
|
||||
case SpeciesId.REGISTEEL:
|
||||
case SpeciesId.REGIGIGAS:
|
||||
case SpeciesId.REGIDRAGO:
|
||||
case SpeciesId.REGIELEKI:
|
||||
return "battle_legendary_regis_g5";
|
||||
case Species.KYUREM:
|
||||
case SpeciesId.KYUREM:
|
||||
return "battle_legendary_kyurem";
|
||||
default:
|
||||
if (pokemon.species.legendary) {
|
||||
@ -282,80 +282,80 @@ export default class Battle {
|
||||
}
|
||||
if (globalScene.musicPreference === MusicPreference.ALLGENS) {
|
||||
switch (pokemon.species.speciesId) {
|
||||
case Species.ARTICUNO:
|
||||
case Species.ZAPDOS:
|
||||
case Species.MOLTRES:
|
||||
case Species.MEWTWO:
|
||||
case Species.MEW:
|
||||
case SpeciesId.ARTICUNO:
|
||||
case SpeciesId.ZAPDOS:
|
||||
case SpeciesId.MOLTRES:
|
||||
case SpeciesId.MEWTWO:
|
||||
case SpeciesId.MEW:
|
||||
return "battle_legendary_kanto";
|
||||
case Species.RAIKOU:
|
||||
case SpeciesId.RAIKOU:
|
||||
return "battle_legendary_raikou";
|
||||
case Species.ENTEI:
|
||||
case SpeciesId.ENTEI:
|
||||
return "battle_legendary_entei";
|
||||
case Species.SUICUNE:
|
||||
case SpeciesId.SUICUNE:
|
||||
return "battle_legendary_suicune";
|
||||
case Species.LUGIA:
|
||||
case SpeciesId.LUGIA:
|
||||
return "battle_legendary_lugia";
|
||||
case Species.HO_OH:
|
||||
case SpeciesId.HO_OH:
|
||||
return "battle_legendary_ho_oh";
|
||||
case Species.REGIROCK:
|
||||
case Species.REGICE:
|
||||
case Species.REGISTEEL:
|
||||
case Species.REGIGIGAS:
|
||||
case Species.REGIDRAGO:
|
||||
case Species.REGIELEKI:
|
||||
case SpeciesId.REGIROCK:
|
||||
case SpeciesId.REGICE:
|
||||
case SpeciesId.REGISTEEL:
|
||||
case SpeciesId.REGIGIGAS:
|
||||
case SpeciesId.REGIDRAGO:
|
||||
case SpeciesId.REGIELEKI:
|
||||
return "battle_legendary_regis_g6";
|
||||
case Species.GROUDON:
|
||||
case Species.KYOGRE:
|
||||
case SpeciesId.GROUDON:
|
||||
case SpeciesId.KYOGRE:
|
||||
return "battle_legendary_gro_kyo";
|
||||
case Species.RAYQUAZA:
|
||||
case SpeciesId.RAYQUAZA:
|
||||
return "battle_legendary_rayquaza";
|
||||
case Species.DEOXYS:
|
||||
case SpeciesId.DEOXYS:
|
||||
return "battle_legendary_deoxys";
|
||||
case Species.UXIE:
|
||||
case Species.MESPRIT:
|
||||
case Species.AZELF:
|
||||
case SpeciesId.UXIE:
|
||||
case SpeciesId.MESPRIT:
|
||||
case SpeciesId.AZELF:
|
||||
return "battle_legendary_lake_trio";
|
||||
case Species.HEATRAN:
|
||||
case Species.CRESSELIA:
|
||||
case Species.DARKRAI:
|
||||
case Species.SHAYMIN:
|
||||
case SpeciesId.HEATRAN:
|
||||
case SpeciesId.CRESSELIA:
|
||||
case SpeciesId.DARKRAI:
|
||||
case SpeciesId.SHAYMIN:
|
||||
return "battle_legendary_sinnoh";
|
||||
case Species.DIALGA:
|
||||
case Species.PALKIA:
|
||||
case SpeciesId.DIALGA:
|
||||
case SpeciesId.PALKIA:
|
||||
if (pokemon.species.getFormSpriteKey(pokemon.formIndex) === SpeciesFormKey.ORIGIN) {
|
||||
return "battle_legendary_origin_forme";
|
||||
}
|
||||
return "battle_legendary_dia_pal";
|
||||
case Species.GIRATINA:
|
||||
case SpeciesId.GIRATINA:
|
||||
return "battle_legendary_giratina";
|
||||
case Species.ARCEUS:
|
||||
case SpeciesId.ARCEUS:
|
||||
return "battle_legendary_arceus";
|
||||
case Species.COBALION:
|
||||
case Species.TERRAKION:
|
||||
case Species.VIRIZION:
|
||||
case Species.KELDEO:
|
||||
case Species.TORNADUS:
|
||||
case Species.LANDORUS:
|
||||
case Species.THUNDURUS:
|
||||
case Species.MELOETTA:
|
||||
case Species.GENESECT:
|
||||
case SpeciesId.COBALION:
|
||||
case SpeciesId.TERRAKION:
|
||||
case SpeciesId.VIRIZION:
|
||||
case SpeciesId.KELDEO:
|
||||
case SpeciesId.TORNADUS:
|
||||
case SpeciesId.LANDORUS:
|
||||
case SpeciesId.THUNDURUS:
|
||||
case SpeciesId.MELOETTA:
|
||||
case SpeciesId.GENESECT:
|
||||
return "battle_legendary_unova";
|
||||
case Species.KYUREM:
|
||||
case SpeciesId.KYUREM:
|
||||
return "battle_legendary_kyurem";
|
||||
case Species.XERNEAS:
|
||||
case Species.YVELTAL:
|
||||
case Species.ZYGARDE:
|
||||
case SpeciesId.XERNEAS:
|
||||
case SpeciesId.YVELTAL:
|
||||
case SpeciesId.ZYGARDE:
|
||||
return "battle_legendary_xern_yvel";
|
||||
case Species.TAPU_KOKO:
|
||||
case Species.TAPU_LELE:
|
||||
case Species.TAPU_BULU:
|
||||
case Species.TAPU_FINI:
|
||||
case SpeciesId.TAPU_KOKO:
|
||||
case SpeciesId.TAPU_LELE:
|
||||
case SpeciesId.TAPU_BULU:
|
||||
case SpeciesId.TAPU_FINI:
|
||||
return "battle_legendary_tapu";
|
||||
case Species.SOLGALEO:
|
||||
case Species.LUNALA:
|
||||
case SpeciesId.SOLGALEO:
|
||||
case SpeciesId.LUNALA:
|
||||
return "battle_legendary_sol_lun";
|
||||
case Species.NECROZMA:
|
||||
case SpeciesId.NECROZMA:
|
||||
switch (pokemon.getFormKey()) {
|
||||
case "dusk-mane":
|
||||
case "dawn-wings":
|
||||
@ -365,50 +365,50 @@ export default class Battle {
|
||||
default:
|
||||
return "battle_legendary_sol_lun";
|
||||
}
|
||||
case Species.NIHILEGO:
|
||||
case Species.PHEROMOSA:
|
||||
case Species.BUZZWOLE:
|
||||
case Species.XURKITREE:
|
||||
case Species.CELESTEELA:
|
||||
case Species.KARTANA:
|
||||
case Species.GUZZLORD:
|
||||
case Species.POIPOLE:
|
||||
case Species.NAGANADEL:
|
||||
case Species.STAKATAKA:
|
||||
case Species.BLACEPHALON:
|
||||
case SpeciesId.NIHILEGO:
|
||||
case SpeciesId.PHEROMOSA:
|
||||
case SpeciesId.BUZZWOLE:
|
||||
case SpeciesId.XURKITREE:
|
||||
case SpeciesId.CELESTEELA:
|
||||
case SpeciesId.KARTANA:
|
||||
case SpeciesId.GUZZLORD:
|
||||
case SpeciesId.POIPOLE:
|
||||
case SpeciesId.NAGANADEL:
|
||||
case SpeciesId.STAKATAKA:
|
||||
case SpeciesId.BLACEPHALON:
|
||||
return "battle_legendary_ub";
|
||||
case Species.ZACIAN:
|
||||
case Species.ZAMAZENTA:
|
||||
case SpeciesId.ZACIAN:
|
||||
case SpeciesId.ZAMAZENTA:
|
||||
return "battle_legendary_zac_zam";
|
||||
case Species.GLASTRIER:
|
||||
case Species.SPECTRIER:
|
||||
case SpeciesId.GLASTRIER:
|
||||
case SpeciesId.SPECTRIER:
|
||||
return "battle_legendary_glas_spec";
|
||||
case Species.CALYREX:
|
||||
case SpeciesId.CALYREX:
|
||||
if (pokemon.getFormKey() === "ice" || pokemon.getFormKey() === "shadow") {
|
||||
return "battle_legendary_riders";
|
||||
}
|
||||
return "battle_legendary_calyrex";
|
||||
case Species.GALAR_ARTICUNO:
|
||||
case Species.GALAR_ZAPDOS:
|
||||
case Species.GALAR_MOLTRES:
|
||||
case SpeciesId.GALAR_ARTICUNO:
|
||||
case SpeciesId.GALAR_ZAPDOS:
|
||||
case SpeciesId.GALAR_MOLTRES:
|
||||
return "battle_legendary_birds_galar";
|
||||
case Species.WO_CHIEN:
|
||||
case Species.CHIEN_PAO:
|
||||
case Species.TING_LU:
|
||||
case Species.CHI_YU:
|
||||
case SpeciesId.WO_CHIEN:
|
||||
case SpeciesId.CHIEN_PAO:
|
||||
case SpeciesId.TING_LU:
|
||||
case SpeciesId.CHI_YU:
|
||||
return "battle_legendary_ruinous";
|
||||
case Species.KORAIDON:
|
||||
case Species.MIRAIDON:
|
||||
case SpeciesId.KORAIDON:
|
||||
case SpeciesId.MIRAIDON:
|
||||
return "battle_legendary_kor_mir";
|
||||
case Species.OKIDOGI:
|
||||
case Species.MUNKIDORI:
|
||||
case Species.FEZANDIPITI:
|
||||
case SpeciesId.OKIDOGI:
|
||||
case SpeciesId.MUNKIDORI:
|
||||
case SpeciesId.FEZANDIPITI:
|
||||
return "battle_legendary_loyal_three";
|
||||
case Species.OGERPON:
|
||||
case SpeciesId.OGERPON:
|
||||
return "battle_legendary_ogerpon";
|
||||
case Species.TERAPAGOS:
|
||||
case SpeciesId.TERAPAGOS:
|
||||
return "battle_legendary_terapagos";
|
||||
case Species.PECHARUNT:
|
||||
case SpeciesId.PECHARUNT:
|
||||
return "battle_legendary_pecharunt";
|
||||
default:
|
||||
if (pokemon.species.legendary) {
|
||||
|
@ -54,7 +54,7 @@ import { AbilityId } from "#enums/ability-id";
|
||||
import { ArenaTagType } from "#enums/arena-tag-type";
|
||||
import { BattlerTagType } from "#enums/battler-tag-type";
|
||||
import { MoveId } from "#enums/move-id";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import { SwitchType } from "#enums/switch-type";
|
||||
import { MoveFlags } from "#enums/MoveFlags";
|
||||
import { MoveTarget } from "#enums/MoveTarget";
|
||||
@ -1265,7 +1265,7 @@ export class MoveTypeChangeAbAttr extends PreAttackAbAttr {
|
||||
!noAbilityTypeOverrideMoves.has(move.id) &&
|
||||
(!pokemon.isTerastallized ||
|
||||
(move.id !== MoveId.TERA_BLAST &&
|
||||
(move.id !== MoveId.TERA_STARSTORM || pokemon.getTeraType() !== PokemonType.STELLAR || !pokemon.hasSpecies(Species.TERAPAGOS))));
|
||||
(move.id !== MoveId.TERA_STARSTORM || pokemon.getTeraType() !== PokemonType.STELLAR || !pokemon.hasSpecies(SpeciesId.TERAPAGOS))));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -2776,8 +2776,8 @@ export class PostSummonFormChangeByWeatherAbAttr extends PostSummonAbAttr {
|
||||
}
|
||||
|
||||
override canApplyPostSummon(pokemon: Pokemon, passive: boolean, simulated: boolean, args: any[]): boolean {
|
||||
const isCastformWithForecast = (pokemon.species.speciesId === Species.CASTFORM && this.ability === AbilityId.FORECAST);
|
||||
const isCherrimWithFlowerGift = (pokemon.species.speciesId === Species.CHERRIM && this.ability === AbilityId.FLOWER_GIFT);
|
||||
const isCastformWithForecast = (pokemon.species.speciesId === SpeciesId.CASTFORM && this.ability === AbilityId.FORECAST);
|
||||
const isCherrimWithFlowerGift = (pokemon.species.speciesId === SpeciesId.CHERRIM && this.ability === AbilityId.FLOWER_GIFT);
|
||||
return isCastformWithForecast || isCherrimWithFlowerGift;
|
||||
}
|
||||
|
||||
@ -2815,7 +2815,7 @@ export class CommanderAbAttr extends AbAttr {
|
||||
|
||||
// TODO: Should this work with X + Dondozo fusions?
|
||||
const ally = pokemon.getAlly();
|
||||
return globalScene.currentBattle?.double && !isNullOrUndefined(ally) && ally.species.speciesId === Species.DONDOZO
|
||||
return globalScene.currentBattle?.double && !isNullOrUndefined(ally) && ally.species.speciesId === SpeciesId.DONDOZO
|
||||
&& !(ally.isFainted() || ally.getTag(BattlerTagType.COMMANDED));
|
||||
}
|
||||
|
||||
@ -3824,8 +3824,8 @@ export class PostWeatherChangeFormChangeAbAttr extends PostWeatherChangeAbAttr {
|
||||
}
|
||||
|
||||
override canApplyPostWeatherChange(pokemon: Pokemon, passive: boolean, simulated: boolean, weather: WeatherType, args: any[]): boolean {
|
||||
const isCastformWithForecast = (pokemon.species.speciesId === Species.CASTFORM && this.ability === AbilityId.FORECAST);
|
||||
const isCherrimWithFlowerGift = (pokemon.species.speciesId === Species.CHERRIM && this.ability === AbilityId.FLOWER_GIFT);
|
||||
const isCastformWithForecast = (pokemon.species.speciesId === SpeciesId.CASTFORM && this.ability === AbilityId.FORECAST);
|
||||
const isCherrimWithFlowerGift = (pokemon.species.speciesId === SpeciesId.CHERRIM && this.ability === AbilityId.FLOWER_GIFT);
|
||||
|
||||
return isCastformWithForecast || isCherrimWithFlowerGift;
|
||||
}
|
||||
@ -5273,7 +5273,7 @@ export class IllusionPreSummonAbAttr extends PreSummonAbAttr {
|
||||
// Illusion will also not activate if the Pokémon with Illusion is Terastallized and the last Pokémon in the party is Ogerpon or Terapagos.
|
||||
if (
|
||||
lastPokemon === pokemon ||
|
||||
((speciesId === Species.OGERPON || speciesId === Species.TERAPAGOS) && (lastPokemon.isTerastallized || pokemon.isTerastallized))
|
||||
((speciesId === SpeciesId.OGERPON || speciesId === SpeciesId.TERAPAGOS) && (lastPokemon.isTerastallized || pokemon.isTerastallized))
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
@ -6423,8 +6423,8 @@ function setAbilityRevealed(pokemon: Pokemon): void {
|
||||
*/
|
||||
function getPokemonWithWeatherBasedForms() {
|
||||
return globalScene.getField(true).filter(p =>
|
||||
(p.hasAbility(AbilityId.FORECAST) && p.species.speciesId === Species.CASTFORM)
|
||||
|| (p.hasAbility(AbilityId.FLOWER_GIFT) && p.species.speciesId === Species.CHERRIM)
|
||||
(p.hasAbility(AbilityId.FORECAST) && p.species.speciesId === SpeciesId.CASTFORM)
|
||||
|| (p.hasAbility(AbilityId.FLOWER_GIFT) && p.species.speciesId === SpeciesId.CHERRIM)
|
||||
);
|
||||
}
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,7 @@
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
|
||||
export type SignatureSpecies = {
|
||||
[key in string]: (Species | Species[])[];
|
||||
[key in string]: (SpeciesId | SpeciesId[])[];
|
||||
};
|
||||
|
||||
/**
|
||||
@ -18,87 +18,87 @@ export type SignatureSpecies = {
|
||||
*/
|
||||
export const signatureSpecies: SignatureSpecies = new Proxy({
|
||||
// Gym Leaders- Kanto
|
||||
BROCK: [Species.ONIX, Species.GEODUDE, [Species.OMANYTE, Species.KABUTO], Species.AERODACTYL],
|
||||
MISTY: [Species.STARYU, Species.PSYDUCK, Species.WOOPER, Species.LAPRAS],
|
||||
LT_SURGE: [Species.PICHU, Species.VOLTORB, Species.ELEKID, Species.JOLTEON],
|
||||
ERIKA: [Species.ODDISH, Species.BELLSPROUT, Species.TANGELA, Species.HOPPIP],
|
||||
JANINE: [Species.VENONAT, Species.SPINARAK, Species.ZUBAT, Species.KOFFING],
|
||||
SABRINA: [Species.ABRA, Species.MR_MIME, Species.SMOOCHUM, Species.ESPEON],
|
||||
BLAINE: [Species.GROWLITHE, Species.PONYTA, Species.MAGBY, Species.VULPIX],
|
||||
GIOVANNI: [Species.RHYHORN, Species.MEOWTH, [Species.NIDORAN_F, Species.NIDORAN_M], Species.DIGLETT], // Tera Ground Meowth
|
||||
BROCK: [SpeciesId.ONIX, SpeciesId.GEODUDE, [SpeciesId.OMANYTE, SpeciesId.KABUTO], SpeciesId.AERODACTYL],
|
||||
MISTY: [SpeciesId.STARYU, SpeciesId.PSYDUCK, SpeciesId.WOOPER, SpeciesId.LAPRAS],
|
||||
LT_SURGE: [SpeciesId.PICHU, SpeciesId.VOLTORB, SpeciesId.ELEKID, SpeciesId.JOLTEON],
|
||||
ERIKA: [SpeciesId.ODDISH, SpeciesId.BELLSPROUT, SpeciesId.TANGELA, SpeciesId.HOPPIP],
|
||||
JANINE: [SpeciesId.VENONAT, SpeciesId.SPINARAK, SpeciesId.ZUBAT, SpeciesId.KOFFING],
|
||||
SABRINA: [SpeciesId.ABRA, SpeciesId.MR_MIME, SpeciesId.SMOOCHUM, SpeciesId.ESPEON],
|
||||
BLAINE: [SpeciesId.GROWLITHE, SpeciesId.PONYTA, SpeciesId.MAGBY, SpeciesId.VULPIX],
|
||||
GIOVANNI: [SpeciesId.RHYHORN, SpeciesId.MEOWTH, [SpeciesId.NIDORAN_F, SpeciesId.NIDORAN_M], SpeciesId.DIGLETT], // Tera Ground Meowth
|
||||
// Gym Leaders- Johto
|
||||
FALKNER: [Species.PIDGEY, Species.HOOTHOOT, Species.NATU, Species.MURKROW],
|
||||
BUGSY: [Species.SCYTHER, Species.SHUCKLE, Species.YANMA, [Species.PINSIR, Species.HERACROSS]],
|
||||
WHITNEY: [Species.MILTANK, Species.AIPOM, Species.IGGLYBUFF, [Species.GIRAFARIG, Species.STANTLER]],
|
||||
MORTY: [Species.GASTLY, Species.MISDREAVUS, Species.DUSKULL, Species.SABLEYE],
|
||||
CHUCK: [Species.POLIWRATH, Species.MANKEY, Species.TYROGUE, Species.MACHOP],
|
||||
JASMINE: [Species.STEELIX, Species.MAGNEMITE, Species.PINECO, Species.SKARMORY],
|
||||
PRYCE: [Species.SWINUB, Species.SEEL, Species.SHELLDER, Species.SNEASEL],
|
||||
CLAIR: [Species.HORSEA, Species.DRATINI, Species.MAGIKARP, Species.DRUDDIGON], // Tera Dragon Magikarp
|
||||
FALKNER: [SpeciesId.PIDGEY, SpeciesId.HOOTHOOT, SpeciesId.NATU, SpeciesId.MURKROW],
|
||||
BUGSY: [SpeciesId.SCYTHER, SpeciesId.SHUCKLE, SpeciesId.YANMA, [SpeciesId.PINSIR, SpeciesId.HERACROSS]],
|
||||
WHITNEY: [SpeciesId.MILTANK, SpeciesId.AIPOM, SpeciesId.IGGLYBUFF, [SpeciesId.GIRAFARIG, SpeciesId.STANTLER]],
|
||||
MORTY: [SpeciesId.GASTLY, SpeciesId.MISDREAVUS, SpeciesId.DUSKULL, SpeciesId.SABLEYE],
|
||||
CHUCK: [SpeciesId.POLIWRATH, SpeciesId.MANKEY, SpeciesId.TYROGUE, SpeciesId.MACHOP],
|
||||
JASMINE: [SpeciesId.STEELIX, SpeciesId.MAGNEMITE, SpeciesId.PINECO, SpeciesId.SKARMORY],
|
||||
PRYCE: [SpeciesId.SWINUB, SpeciesId.SEEL, SpeciesId.SHELLDER, SpeciesId.SNEASEL],
|
||||
CLAIR: [SpeciesId.HORSEA, SpeciesId.DRATINI, SpeciesId.MAGIKARP, SpeciesId.DRUDDIGON], // Tera Dragon Magikarp
|
||||
// Gym Leaders- Hoenn
|
||||
ROXANNE: [Species.NOSEPASS, Species.GEODUDE, [Species.LILEEP, Species.ANORITH], Species.ARON],
|
||||
BRAWLY: [Species.MAKUHITA, Species.MACHOP, Species.MEDITITE, Species.SHROOMISH],
|
||||
WATTSON: [Species.ELECTRIKE, Species.VOLTORB, Species.MAGNEMITE, [Species.PLUSLE, Species.MINUN]],
|
||||
FLANNERY: [Species.TORKOAL, Species.SLUGMA, Species.NUMEL, Species.HOUNDOUR],
|
||||
NORMAN: [Species.SLAKOTH, Species.KECLEON, Species.WHISMUR, Species.ZANGOOSE],
|
||||
WINONA: [Species.SWABLU, Species.WINGULL, Species.TROPIUS, Species.SKARMORY],
|
||||
TATE: [Species.SOLROCK, Species.NATU, Species.CHINGLING, Species.GALLADE],
|
||||
LIZA: [Species.LUNATONE, Species.BALTOY, Species.SPOINK, Species.GARDEVOIR],
|
||||
JUAN: [Species.HORSEA, Species.SPHEAL, Species.BARBOACH, Species.CORPHISH],
|
||||
ROXANNE: [SpeciesId.NOSEPASS, SpeciesId.GEODUDE, [SpeciesId.LILEEP, SpeciesId.ANORITH], SpeciesId.ARON],
|
||||
BRAWLY: [SpeciesId.MAKUHITA, SpeciesId.MACHOP, SpeciesId.MEDITITE, SpeciesId.SHROOMISH],
|
||||
WATTSON: [SpeciesId.ELECTRIKE, SpeciesId.VOLTORB, SpeciesId.MAGNEMITE, [SpeciesId.PLUSLE, SpeciesId.MINUN]],
|
||||
FLANNERY: [SpeciesId.TORKOAL, SpeciesId.SLUGMA, SpeciesId.NUMEL, SpeciesId.HOUNDOUR],
|
||||
NORMAN: [SpeciesId.SLAKOTH, SpeciesId.KECLEON, SpeciesId.WHISMUR, SpeciesId.ZANGOOSE],
|
||||
WINONA: [SpeciesId.SWABLU, SpeciesId.WINGULL, SpeciesId.TROPIUS, SpeciesId.SKARMORY],
|
||||
TATE: [SpeciesId.SOLROCK, SpeciesId.NATU, SpeciesId.CHINGLING, SpeciesId.GALLADE],
|
||||
LIZA: [SpeciesId.LUNATONE, SpeciesId.BALTOY, SpeciesId.SPOINK, SpeciesId.GARDEVOIR],
|
||||
JUAN: [SpeciesId.HORSEA, SpeciesId.SPHEAL, SpeciesId.BARBOACH, SpeciesId.CORPHISH],
|
||||
// Gym Leaders- Sinnoh
|
||||
ROARK: [Species.CRANIDOS, Species.GEODUDE, Species.NOSEPASS, Species.LARVITAR],
|
||||
GARDENIA: [Species.BUDEW, Species.CHERUBI, Species.TURTWIG, Species.LEAFEON],
|
||||
MAYLENE: [Species.RIOLU, Species.MEDITITE, Species.CHIMCHAR, Species.CROAGUNK],
|
||||
CRASHER_WAKE: [Species.BUIZEL, Species.WOOPER, Species.PIPLUP, Species.MAGIKARP],
|
||||
FANTINA: [Species.MISDREAVUS, Species.DRIFLOON, Species.DUSKULL, Species.SPIRITOMB],
|
||||
BYRON: [Species.SHIELDON, Species.BRONZOR, Species.ARON, Species.SKARMORY],
|
||||
CANDICE: [Species.FROSLASS, Species.SNOVER, Species.SNEASEL, Species.GLACEON],
|
||||
VOLKNER: [Species.ELEKID, Species.SHINX, Species.CHINCHOU, Species.ROTOM],
|
||||
ROARK: [SpeciesId.CRANIDOS, SpeciesId.GEODUDE, SpeciesId.NOSEPASS, SpeciesId.LARVITAR],
|
||||
GARDENIA: [SpeciesId.BUDEW, SpeciesId.CHERUBI, SpeciesId.TURTWIG, SpeciesId.LEAFEON],
|
||||
MAYLENE: [SpeciesId.RIOLU, SpeciesId.MEDITITE, SpeciesId.CHIMCHAR, SpeciesId.CROAGUNK],
|
||||
CRASHER_WAKE: [SpeciesId.BUIZEL, SpeciesId.WOOPER, SpeciesId.PIPLUP, SpeciesId.MAGIKARP],
|
||||
FANTINA: [SpeciesId.MISDREAVUS, SpeciesId.DRIFLOON, SpeciesId.DUSKULL, SpeciesId.SPIRITOMB],
|
||||
BYRON: [SpeciesId.SHIELDON, SpeciesId.BRONZOR, SpeciesId.ARON, SpeciesId.SKARMORY],
|
||||
CANDICE: [SpeciesId.FROSLASS, SpeciesId.SNOVER, SpeciesId.SNEASEL, SpeciesId.GLACEON],
|
||||
VOLKNER: [SpeciesId.ELEKID, SpeciesId.SHINX, SpeciesId.CHINCHOU, SpeciesId.ROTOM],
|
||||
// Gym Leaders- Unova
|
||||
CILAN: [Species.PANSAGE, Species.SNIVY, Species.MARACTUS, Species.FERROSEED],
|
||||
CHILI: [Species.PANSEAR, Species.TEPIG, Species.HEATMOR, Species.DARUMAKA],
|
||||
CRESS: [Species.PANPOUR, Species.OSHAWOTT, Species.BASCULIN, Species.TYMPOLE],
|
||||
CHEREN: [Species.LILLIPUP, Species.MINCCINO, Species.PIDOVE, Species.BOUFFALANT],
|
||||
LENORA: [Species.PATRAT, Species.DEERLING, Species.AUDINO, Species.BRAVIARY],
|
||||
ROXIE: [Species.VENIPEDE, Species.KOFFING, Species.TRUBBISH, Species.TOXEL],
|
||||
BURGH: [Species.SEWADDLE, Species.DWEBBLE, [Species.KARRABLAST, Species.SHELMET], Species.DURANT],
|
||||
ELESA: [Species.BLITZLE, Species.EMOLGA, Species.JOLTIK, Species.TYNAMO],
|
||||
CLAY: [Species.DRILBUR, Species.SANDILE, Species.TYMPOLE, Species.GOLETT],
|
||||
SKYLA: [Species.DUCKLETT, Species.WOOBAT, [Species.RUFFLET, Species.VULLABY], Species.ARCHEN],
|
||||
BRYCEN: [Species.CRYOGONAL, Species.VANILLITE, Species.CUBCHOO, Species.GALAR_DARUMAKA],
|
||||
DRAYDEN: [Species.AXEW, Species.DRUDDIGON, Species.TRAPINCH, Species.DEINO],
|
||||
MARLON: [Species.FRILLISH, Species.TIRTOUGA, Species.WAILMER, Species.MANTYKE],
|
||||
CILAN: [SpeciesId.PANSAGE, SpeciesId.SNIVY, SpeciesId.MARACTUS, SpeciesId.FERROSEED],
|
||||
CHILI: [SpeciesId.PANSEAR, SpeciesId.TEPIG, SpeciesId.HEATMOR, SpeciesId.DARUMAKA],
|
||||
CRESS: [SpeciesId.PANPOUR, SpeciesId.OSHAWOTT, SpeciesId.BASCULIN, SpeciesId.TYMPOLE],
|
||||
CHEREN: [SpeciesId.LILLIPUP, SpeciesId.MINCCINO, SpeciesId.PIDOVE, SpeciesId.BOUFFALANT],
|
||||
LENORA: [SpeciesId.PATRAT, SpeciesId.DEERLING, SpeciesId.AUDINO, SpeciesId.BRAVIARY],
|
||||
ROXIE: [SpeciesId.VENIPEDE, SpeciesId.KOFFING, SpeciesId.TRUBBISH, SpeciesId.TOXEL],
|
||||
BURGH: [SpeciesId.SEWADDLE, SpeciesId.DWEBBLE, [SpeciesId.KARRABLAST, SpeciesId.SHELMET], SpeciesId.DURANT],
|
||||
ELESA: [SpeciesId.BLITZLE, SpeciesId.EMOLGA, SpeciesId.JOLTIK, SpeciesId.TYNAMO],
|
||||
CLAY: [SpeciesId.DRILBUR, SpeciesId.SANDILE, SpeciesId.TYMPOLE, SpeciesId.GOLETT],
|
||||
SKYLA: [SpeciesId.DUCKLETT, SpeciesId.WOOBAT, [SpeciesId.RUFFLET, SpeciesId.VULLABY], SpeciesId.ARCHEN],
|
||||
BRYCEN: [SpeciesId.CRYOGONAL, SpeciesId.VANILLITE, SpeciesId.CUBCHOO, SpeciesId.GALAR_DARUMAKA],
|
||||
DRAYDEN: [SpeciesId.AXEW, SpeciesId.DRUDDIGON, SpeciesId.TRAPINCH, SpeciesId.DEINO],
|
||||
MARLON: [SpeciesId.FRILLISH, SpeciesId.TIRTOUGA, SpeciesId.WAILMER, SpeciesId.MANTYKE],
|
||||
// Gym Leaders- Kalos
|
||||
VIOLA: [Species.SCATTERBUG, Species.SURSKIT, Species.CUTIEFLY, Species.BLIPBUG],
|
||||
GRANT: [Species.TYRUNT, Species.AMAURA, Species.BINACLE, Species.DWEBBLE],
|
||||
KORRINA: [Species.RIOLU, Species.MIENFOO, Species.HAWLUCHA, Species.PANCHAM],
|
||||
RAMOS: [Species.SKIDDO, Species.HOPPIP, Species.BELLSPROUT, [Species.PHANTUMP, Species.PUMPKABOO]],
|
||||
CLEMONT: [Species.HELIOPTILE, Species.MAGNEMITE, Species.DEDENNE, Species.ROTOM],
|
||||
VALERIE: [Species.SYLVEON, Species.MAWILE, Species.MR_MIME, [Species.SPRITZEE, Species.SWIRLIX]],
|
||||
OLYMPIA: [Species.ESPURR, Species.SIGILYPH, Species.INKAY, Species.SLOWKING],
|
||||
WULFRIC: [Species.BERGMITE, Species.SNOVER, Species.CRYOGONAL, Species.SWINUB],
|
||||
VIOLA: [SpeciesId.SCATTERBUG, SpeciesId.SURSKIT, SpeciesId.CUTIEFLY, SpeciesId.BLIPBUG],
|
||||
GRANT: [SpeciesId.TYRUNT, SpeciesId.AMAURA, SpeciesId.BINACLE, SpeciesId.DWEBBLE],
|
||||
KORRINA: [SpeciesId.RIOLU, SpeciesId.MIENFOO, SpeciesId.HAWLUCHA, SpeciesId.PANCHAM],
|
||||
RAMOS: [SpeciesId.SKIDDO, SpeciesId.HOPPIP, SpeciesId.BELLSPROUT, [SpeciesId.PHANTUMP, SpeciesId.PUMPKABOO]],
|
||||
CLEMONT: [SpeciesId.HELIOPTILE, SpeciesId.MAGNEMITE, SpeciesId.DEDENNE, SpeciesId.ROTOM],
|
||||
VALERIE: [SpeciesId.SYLVEON, SpeciesId.MAWILE, SpeciesId.MR_MIME, [SpeciesId.SPRITZEE, SpeciesId.SWIRLIX]],
|
||||
OLYMPIA: [SpeciesId.ESPURR, SpeciesId.SIGILYPH, SpeciesId.INKAY, SpeciesId.SLOWKING],
|
||||
WULFRIC: [SpeciesId.BERGMITE, SpeciesId.SNOVER, SpeciesId.CRYOGONAL, SpeciesId.SWINUB],
|
||||
// Gym Leaders- Galar
|
||||
MILO: [Species.GOSSIFLEUR, Species.SEEDOT, Species.APPLIN, Species.LOTAD],
|
||||
NESSA: [Species.CHEWTLE, Species.WIMPOD, Species.ARROKUDA, Species.MAREANIE],
|
||||
KABU: [Species.SIZZLIPEDE, Species.VULPIX, Species.GROWLITHE, Species.TORKOAL],
|
||||
BEA: [Species.MACHOP, Species.GALAR_FARFETCHD, Species.CLOBBOPUS, Species.FALINKS],
|
||||
ALLISTER: [Species.GASTLY, Species.GALAR_YAMASK, Species.GALAR_CORSOLA, Species.SINISTEA],
|
||||
OPAL: [Species.MILCERY, Species.GALAR_WEEZING, Species.TOGEPI, Species.MAWILE],
|
||||
BEDE: [Species.HATENNA, Species.GALAR_PONYTA, Species.GARDEVOIR, Species.SYLVEON],
|
||||
GORDIE: [Species.ROLYCOLY, [Species.SHUCKLE, Species.BINACLE], Species.STONJOURNER, Species.LARVITAR],
|
||||
MELONY: [Species.LAPRAS, Species.SNOM, Species.EISCUE, [Species.GALAR_MR_MIME, Species.GALAR_DARUMAKA]],
|
||||
PIERS: [Species.GALAR_ZIGZAGOON, Species.SCRAGGY, Species.TOXEL, Species.INKAY], // Tera Dark Toxel
|
||||
MARNIE: [Species.IMPIDIMP, Species.MORPEKO, Species.PURRLOIN, Species.CROAGUNK], // Tera Dark Croagunk
|
||||
RAIHAN: [Species.DURALUDON, Species.TRAPINCH, Species.GOOMY, Species.TURTONATOR],
|
||||
MILO: [SpeciesId.GOSSIFLEUR, SpeciesId.SEEDOT, SpeciesId.APPLIN, SpeciesId.LOTAD],
|
||||
NESSA: [SpeciesId.CHEWTLE, SpeciesId.WIMPOD, SpeciesId.ARROKUDA, SpeciesId.MAREANIE],
|
||||
KABU: [SpeciesId.SIZZLIPEDE, SpeciesId.VULPIX, SpeciesId.GROWLITHE, SpeciesId.TORKOAL],
|
||||
BEA: [SpeciesId.MACHOP, SpeciesId.GALAR_FARFETCHD, SpeciesId.CLOBBOPUS, SpeciesId.FALINKS],
|
||||
ALLISTER: [SpeciesId.GASTLY, SpeciesId.GALAR_YAMASK, SpeciesId.GALAR_CORSOLA, SpeciesId.SINISTEA],
|
||||
OPAL: [SpeciesId.MILCERY, SpeciesId.GALAR_WEEZING, SpeciesId.TOGEPI, SpeciesId.MAWILE],
|
||||
BEDE: [SpeciesId.HATENNA, SpeciesId.GALAR_PONYTA, SpeciesId.GARDEVOIR, SpeciesId.SYLVEON],
|
||||
GORDIE: [SpeciesId.ROLYCOLY, [SpeciesId.SHUCKLE, SpeciesId.BINACLE], SpeciesId.STONJOURNER, SpeciesId.LARVITAR],
|
||||
MELONY: [SpeciesId.LAPRAS, SpeciesId.SNOM, SpeciesId.EISCUE, [SpeciesId.GALAR_MR_MIME, SpeciesId.GALAR_DARUMAKA]],
|
||||
PIERS: [SpeciesId.GALAR_ZIGZAGOON, SpeciesId.SCRAGGY, SpeciesId.TOXEL, SpeciesId.INKAY], // Tera Dark Toxel
|
||||
MARNIE: [SpeciesId.IMPIDIMP, SpeciesId.MORPEKO, SpeciesId.PURRLOIN, SpeciesId.CROAGUNK], // Tera Dark Croagunk
|
||||
RAIHAN: [SpeciesId.DURALUDON, SpeciesId.TRAPINCH, SpeciesId.GOOMY, SpeciesId.TURTONATOR],
|
||||
// Gym Leaders- Paldea; First slot is Tera
|
||||
KATY: [Species.TEDDIURSA, Species.NYMBLE, Species.TAROUNTULA, Species.RELLOR], // Tera Bug Teddiursa
|
||||
BRASSIUS: [Species.BONSLY, Species.SMOLIV, Species.BRAMBLIN, Species.SUNKERN], // Tera Grass Bonsly
|
||||
IONO: [Species.MISDREAVUS, Species.TADBULB, Species.WATTREL, Species.MAGNEMITE], // Tera Ghost Misdreavus
|
||||
KOFU: [Species.CRABRAWLER, Species.VELUZA, Species.WIGLETT, Species.WINGULL], // Tera Water Crabrawler
|
||||
LARRY: [Species.STARLY, Species.DUNSPARCE, Species.LECHONK, Species.KOMALA], // Tera Normal Starly
|
||||
RYME: [Species.TOXEL, Species.GREAVARD, Species.SHUPPET, Species.MIMIKYU], // Tera Ghost Toxel
|
||||
TULIP: [Species.FLABEBE, Species.FLITTLE, Species.RALTS, Species.GIRAFARIG], // Tera Psychic Flabebe
|
||||
GRUSHA: [Species.SWABLU, Species.CETODDLE, Species.SNOM, Species.CUBCHOO], // Tera Ice Swablu
|
||||
KATY: [SpeciesId.TEDDIURSA, SpeciesId.NYMBLE, SpeciesId.TAROUNTULA, SpeciesId.RELLOR], // Tera Bug Teddiursa
|
||||
BRASSIUS: [SpeciesId.BONSLY, SpeciesId.SMOLIV, SpeciesId.BRAMBLIN, SpeciesId.SUNKERN], // Tera Grass Bonsly
|
||||
IONO: [SpeciesId.MISDREAVUS, SpeciesId.TADBULB, SpeciesId.WATTREL, SpeciesId.MAGNEMITE], // Tera Ghost Misdreavus
|
||||
KOFU: [SpeciesId.CRABRAWLER, SpeciesId.VELUZA, SpeciesId.WIGLETT, SpeciesId.WINGULL], // Tera Water Crabrawler
|
||||
LARRY: [SpeciesId.STARLY, SpeciesId.DUNSPARCE, SpeciesId.LECHONK, SpeciesId.KOMALA], // Tera Normal Starly
|
||||
RYME: [SpeciesId.TOXEL, SpeciesId.GREAVARD, SpeciesId.SHUPPET, SpeciesId.MIMIKYU], // Tera Ghost Toxel
|
||||
TULIP: [SpeciesId.FLABEBE, SpeciesId.FLITTLE, SpeciesId.RALTS, SpeciesId.GIRAFARIG], // Tera Psychic Flabebe
|
||||
GRUSHA: [SpeciesId.SWABLU, SpeciesId.CETODDLE, SpeciesId.SNOM, SpeciesId.CUBCHOO], // Tera Ice Swablu
|
||||
}, {
|
||||
get(target, prop: string) {
|
||||
return target[prop as keyof SignatureSpecies] ?? [];
|
||||
|
@ -1,29 +1,29 @@
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
|
||||
/**
|
||||
* A list of all {@link https://bulbapedia.bulbagarden.net/wiki/Paradox_Pok%C3%A9mon | Paradox Pokemon}, NOT including the legendaries Miraidon and Koraidon.
|
||||
*/
|
||||
export const NON_LEGEND_PARADOX_POKEMON = [
|
||||
Species.GREAT_TUSK,
|
||||
Species.SCREAM_TAIL,
|
||||
Species.BRUTE_BONNET,
|
||||
Species.FLUTTER_MANE,
|
||||
Species.SLITHER_WING,
|
||||
Species.SANDY_SHOCKS,
|
||||
Species.ROARING_MOON,
|
||||
Species.WALKING_WAKE,
|
||||
Species.GOUGING_FIRE,
|
||||
Species.RAGING_BOLT,
|
||||
Species.IRON_TREADS,
|
||||
Species.IRON_BUNDLE,
|
||||
Species.IRON_HANDS,
|
||||
Species.IRON_JUGULIS,
|
||||
Species.IRON_MOTH,
|
||||
Species.IRON_THORNS,
|
||||
Species.IRON_VALIANT,
|
||||
Species.IRON_LEAVES,
|
||||
Species.IRON_BOULDER,
|
||||
Species.IRON_CROWN,
|
||||
SpeciesId.GREAT_TUSK,
|
||||
SpeciesId.SCREAM_TAIL,
|
||||
SpeciesId.BRUTE_BONNET,
|
||||
SpeciesId.FLUTTER_MANE,
|
||||
SpeciesId.SLITHER_WING,
|
||||
SpeciesId.SANDY_SHOCKS,
|
||||
SpeciesId.ROARING_MOON,
|
||||
SpeciesId.WALKING_WAKE,
|
||||
SpeciesId.GOUGING_FIRE,
|
||||
SpeciesId.RAGING_BOLT,
|
||||
SpeciesId.IRON_TREADS,
|
||||
SpeciesId.IRON_BUNDLE,
|
||||
SpeciesId.IRON_HANDS,
|
||||
SpeciesId.IRON_JUGULIS,
|
||||
SpeciesId.IRON_MOTH,
|
||||
SpeciesId.IRON_THORNS,
|
||||
SpeciesId.IRON_VALIANT,
|
||||
SpeciesId.IRON_LEAVES,
|
||||
SpeciesId.IRON_BOULDER,
|
||||
SpeciesId.IRON_CROWN,
|
||||
];
|
||||
|
||||
/**
|
||||
@ -32,15 +32,15 @@ export const NON_LEGEND_PARADOX_POKEMON = [
|
||||
* Note that all of these Ultra Beasts are still considered Sub-Legendary.
|
||||
*/
|
||||
export const NON_LEGEND_ULTRA_BEASTS = [
|
||||
Species.NIHILEGO,
|
||||
Species.BUZZWOLE,
|
||||
Species.PHEROMOSA,
|
||||
Species.XURKITREE,
|
||||
Species.CELESTEELA,
|
||||
Species.KARTANA,
|
||||
Species.GUZZLORD,
|
||||
Species.POIPOLE,
|
||||
Species.NAGANADEL,
|
||||
Species.STAKATAKA,
|
||||
Species.BLACEPHALON,
|
||||
SpeciesId.NIHILEGO,
|
||||
SpeciesId.BUZZWOLE,
|
||||
SpeciesId.PHEROMOSA,
|
||||
SpeciesId.XURKITREE,
|
||||
SpeciesId.CELESTEELA,
|
||||
SpeciesId.KARTANA,
|
||||
SpeciesId.GUZZLORD,
|
||||
SpeciesId.POIPOLE,
|
||||
SpeciesId.NAGANADEL,
|
||||
SpeciesId.STAKATAKA,
|
||||
SpeciesId.BLACEPHALON,
|
||||
];
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
134784
src/data/balance/tms.ts
134784
src/data/balance/tms.ts
File diff suppressed because it is too large
Load Diff
@ -39,7 +39,7 @@ import { AbilityId } from "#enums/ability-id";
|
||||
import { BattlerTagType } from "#enums/battler-tag-type";
|
||||
import { MoveId } from "#enums/move-id";
|
||||
import { PokemonAnimType } from "#enums/pokemon-anim-type";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import { EFFECTIVE_STATS, getStatKey, Stat, type BattleStat, type EffectiveStat } from "#enums/stat";
|
||||
import { StatusEffect } from "#enums/status-effect";
|
||||
import { WeatherType } from "#enums/weather-type";
|
||||
@ -2684,7 +2684,7 @@ export class GulpMissileTag extends BattlerTag {
|
||||
pokemon.formIndex === 0 &&
|
||||
!pokemon.getTag(BattlerTagType.GULP_MISSILE_ARROKUDA) &&
|
||||
!pokemon.getTag(BattlerTagType.GULP_MISSILE_PIKACHU);
|
||||
const isCramorant = pokemon.species.speciesId === Species.CRAMORANT;
|
||||
const isCramorant = pokemon.species.speciesId === SpeciesId.CRAMORANT;
|
||||
|
||||
return isSurfOrDive && isNormalForm && isCramorant;
|
||||
}
|
||||
|
@ -15,7 +15,7 @@ import { BattleType } from "#enums/battle-type";
|
||||
import Trainer, { TrainerVariant } from "#app/field/trainer";
|
||||
import { PokemonType } from "#enums/pokemon-type";
|
||||
import { Challenges } from "#enums/challenges";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import { TrainerType } from "#enums/trainer-type";
|
||||
import { Nature } from "#enums/nature";
|
||||
import type { MoveId } from "#enums/move-id";
|
||||
@ -305,11 +305,11 @@ export abstract class Challenge {
|
||||
|
||||
/**
|
||||
* An apply function for STARTER_COST challenges. Derived classes should alter this.
|
||||
* @param _species {@link Species} The pokemon to change the cost of.
|
||||
* @param _species {@link SpeciesId} The pokemon to change the cost of.
|
||||
* @param _cost {@link NumberHolder} The cost of the starter.
|
||||
* @returns {@link boolean} Whether this function did anything.
|
||||
*/
|
||||
applyStarterCost(_species: Species, _cost: NumberHolder): boolean {
|
||||
applyStarterCost(_species: SpeciesId, _cost: NumberHolder): boolean {
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -696,7 +696,7 @@ export class SingleGenerationChallenge extends Challenge {
|
||||
|
||||
interface monotypeOverride {
|
||||
/** The species to override */
|
||||
species: Species;
|
||||
species: SpeciesId;
|
||||
/** The type to count as */
|
||||
type: PokemonType;
|
||||
/** If part of a fusion, should we check the fused species instead of the base species? */
|
||||
@ -708,7 +708,7 @@ interface monotypeOverride {
|
||||
*/
|
||||
export class SingleTypeChallenge extends Challenge {
|
||||
private static TYPE_OVERRIDES: monotypeOverride[] = [
|
||||
{ species: Species.CASTFORM, type: PokemonType.NORMAL, fusion: false },
|
||||
{ species: SpeciesId.CASTFORM, type: PokemonType.NORMAL, fusion: false },
|
||||
];
|
||||
// TODO: Find a solution for all Pokemon with this ssui issue, including Basculin and Burmy
|
||||
|
||||
@ -804,7 +804,7 @@ export class FreshStartChallenge extends Challenge {
|
||||
return false;
|
||||
}
|
||||
|
||||
applyStarterCost(species: Species, cost: NumberHolder): boolean {
|
||||
applyStarterCost(species: SpeciesId, cost: NumberHolder): boolean {
|
||||
if (defaultStarterSpecies.includes(species)) {
|
||||
cost.value = speciesStarterCosts[species];
|
||||
return true;
|
||||
@ -992,13 +992,13 @@ export function applyChallenges(challengeType: ChallengeType.STARTER_POINTS, poi
|
||||
/**
|
||||
* Apply all challenges that modify the cost of a starter.
|
||||
* @param challengeType {@link ChallengeType} ChallengeType.STARTER_COST
|
||||
* @param species {@link Species} The pokemon to change the cost of.
|
||||
* @param species {@link SpeciesId} The pokemon to change the cost of.
|
||||
* @param points {@link NumberHolder} The cost of the pokemon.
|
||||
* @returns True if any challenge was successfully applied.
|
||||
*/
|
||||
export function applyChallenges(
|
||||
challengeType: ChallengeType.STARTER_COST,
|
||||
species: Species,
|
||||
species: SpeciesId,
|
||||
cost: NumberHolder,
|
||||
): boolean;
|
||||
/**
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { PartyMemberStrength } from "#enums/party-member-strength";
|
||||
import type { Species } from "#enums/species";
|
||||
import type { SpeciesId } from "#enums/species";
|
||||
import { globalScene } from "#app/global-scene";
|
||||
import { PlayerPokemon } from "#app/field/pokemon";
|
||||
import type { Starter } from "#app/ui/starter-select-ui-handler";
|
||||
@ -34,7 +34,7 @@ export function getDailyRunStarters(seed: string): Starter[] {
|
||||
for (let s = 0; s < 3; s++) {
|
||||
const offset = 6 + s * 6;
|
||||
const starterSpeciesForm = getPokemonSpeciesForm(
|
||||
Number.parseInt(seed.slice(offset, offset + 4)) as Species,
|
||||
Number.parseInt(seed.slice(offset, offset + 4)) as SpeciesId,
|
||||
Number.parseInt(seed.slice(offset + 4, offset + 6)),
|
||||
);
|
||||
starters.push(getDailyRunStarter(starterSpeciesForm, startingLevel));
|
||||
@ -50,7 +50,7 @@ export function getDailyRunStarters(seed: string): Starter[] {
|
||||
for (let c = 0; c < starterCosts.length; c++) {
|
||||
const cost = starterCosts[c];
|
||||
const costSpecies = Object.keys(speciesStarterCosts)
|
||||
.map(s => Number.parseInt(s) as Species)
|
||||
.map(s => Number.parseInt(s) as SpeciesId)
|
||||
.filter(s => speciesStarterCosts[s] === cost);
|
||||
const randPkmSpecies = getPokemonSpecies(randSeedItem(costSpecies));
|
||||
const starterSpecies = getPokemonSpecies(
|
||||
|
@ -10,7 +10,7 @@ import { pokemonPrevolutions } from "#app/data/balance/pokemon-evolutions";
|
||||
import type { PlayerPokemon } from "#app/field/pokemon";
|
||||
import i18next from "i18next";
|
||||
import { EggTier } from "#enums/egg-type";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import { EggSourceType } from "#enums/egg-source-types";
|
||||
import {
|
||||
MANAPHY_EGG_MANAPHY_RATE,
|
||||
@ -67,7 +67,7 @@ export interface IEggOptions {
|
||||
/** Sets how many waves it will take till this egg hatches. */
|
||||
hatchWaves?: number;
|
||||
/** Sets the exact species that will hatch from this egg. */
|
||||
species?: Species;
|
||||
species?: SpeciesId;
|
||||
/** Defines if the hatched pokemon will be a shiny. */
|
||||
isShiny?: boolean;
|
||||
/** Defines the variant of the pokemon that will hatch from this egg. If no `variantTier` is given the normal variant rates will apply. */
|
||||
@ -94,7 +94,7 @@ export class Egg {
|
||||
private _hatchWaves: number;
|
||||
private _timestamp: number;
|
||||
|
||||
private _species: Species;
|
||||
private _species: SpeciesId;
|
||||
private _isShiny: boolean;
|
||||
private _variantTier: VariantTier;
|
||||
private _eggMoveIndex: number;
|
||||
@ -134,7 +134,7 @@ export class Egg {
|
||||
return this._timestamp;
|
||||
}
|
||||
|
||||
get species(): Species {
|
||||
get species(): SpeciesId {
|
||||
return this._species;
|
||||
}
|
||||
|
||||
@ -221,8 +221,8 @@ export class Egg {
|
||||
|
||||
public isManaphyEgg(): boolean {
|
||||
return (
|
||||
this._species === Species.PHIONE ||
|
||||
this._species === Species.MANAPHY ||
|
||||
this._species === SpeciesId.PHIONE ||
|
||||
this._species === SpeciesId.MANAPHY ||
|
||||
(this._tier === EggTier.COMMON && !(this._id % 204) && !this._species)
|
||||
);
|
||||
}
|
||||
@ -247,8 +247,10 @@ export class Egg {
|
||||
|
||||
let pokemonSpecies = getPokemonSpecies(this._species);
|
||||
// Special condition to have Phione eggs also have a chance of generating Manaphy
|
||||
if (this._species === Species.PHIONE && this._sourceType === EggSourceType.SAME_SPECIES_EGG) {
|
||||
pokemonSpecies = getPokemonSpecies(randSeedInt(MANAPHY_EGG_MANAPHY_RATE) ? Species.PHIONE : Species.MANAPHY);
|
||||
if (this._species === SpeciesId.PHIONE && this._sourceType === EggSourceType.SAME_SPECIES_EGG) {
|
||||
pokemonSpecies = getPokemonSpecies(
|
||||
randSeedInt(MANAPHY_EGG_MANAPHY_RATE) ? SpeciesId.PHIONE : SpeciesId.MANAPHY,
|
||||
);
|
||||
}
|
||||
|
||||
// Sets the hidden ability if a hidden ability exists and
|
||||
@ -371,7 +373,7 @@ export class Egg {
|
||||
}
|
||||
|
||||
private getEggTierDefaultHatchWaves(eggTier?: EggTier): number {
|
||||
if (this._species === Species.PHIONE || this._species === Species.MANAPHY) {
|
||||
if (this._species === SpeciesId.PHIONE || this._species === SpeciesId.MANAPHY) {
|
||||
return HATCH_WAVES_MANAPHY_EGG;
|
||||
}
|
||||
|
||||
@ -399,7 +401,7 @@ export class Egg {
|
||||
: EggTier.LEGENDARY;
|
||||
}
|
||||
|
||||
private rollSpecies(): Species | null {
|
||||
private rollSpecies(): SpeciesId | null {
|
||||
if (!globalScene) {
|
||||
return null;
|
||||
}
|
||||
@ -415,7 +417,7 @@ export class Egg {
|
||||
* check pass when Utils.randSeedInt(8) = 0, we can tell them apart during tests.
|
||||
*/
|
||||
const rand = randSeedInt(MANAPHY_EGG_MANAPHY_RATE) !== 1;
|
||||
return rand ? Species.PHIONE : Species.MANAPHY;
|
||||
return rand ? SpeciesId.PHIONE : SpeciesId.MANAPHY;
|
||||
}
|
||||
if (this.tier === EggTier.LEGENDARY && this._sourceType === EggSourceType.GACHA_LEGENDARY) {
|
||||
if (!randSeedInt(2)) {
|
||||
@ -445,11 +447,11 @@ export class Egg {
|
||||
break;
|
||||
}
|
||||
|
||||
const ignoredSpecies = [Species.PHIONE, Species.MANAPHY, Species.ETERNATUS];
|
||||
const ignoredSpecies = [SpeciesId.PHIONE, SpeciesId.MANAPHY, SpeciesId.ETERNATUS];
|
||||
|
||||
let speciesPool = Object.keys(speciesEggTiers)
|
||||
.filter(s => speciesEggTiers[s] === this.tier)
|
||||
.map(s => Number.parseInt(s) as Species)
|
||||
.map(s => Number.parseInt(s) as SpeciesId)
|
||||
.filter(
|
||||
s =>
|
||||
!pokemonPrevolutions.hasOwnProperty(s) &&
|
||||
@ -496,7 +498,7 @@ export class Egg {
|
||||
totalWeight += weight;
|
||||
}
|
||||
|
||||
let species: Species;
|
||||
let species: SpeciesId;
|
||||
|
||||
const rand = randSeedInt(totalWeight);
|
||||
for (let s = 0; s < speciesWeights.length; s++) {
|
||||
@ -606,17 +608,17 @@ export class Egg {
|
||||
////
|
||||
}
|
||||
|
||||
export function getValidLegendaryGachaSpecies(): Species[] {
|
||||
export function getValidLegendaryGachaSpecies(): SpeciesId[] {
|
||||
return Object.entries(speciesEggTiers)
|
||||
.filter(s => s[1] === EggTier.LEGENDARY)
|
||||
.map(s => Number.parseInt(s[0]))
|
||||
.filter(s => getPokemonSpecies(s).isObtainable() && s !== Species.ETERNATUS);
|
||||
.filter(s => getPokemonSpecies(s).isObtainable() && s !== SpeciesId.ETERNATUS);
|
||||
}
|
||||
|
||||
export function getLegendaryGachaSpeciesForTimestamp(timestamp: number): Species {
|
||||
export function getLegendaryGachaSpeciesForTimestamp(timestamp: number): SpeciesId {
|
||||
const legendarySpecies = getValidLegendaryGachaSpecies();
|
||||
|
||||
let ret: Species;
|
||||
let ret: SpeciesId;
|
||||
|
||||
// 86400000 is the number of miliseconds in one day
|
||||
const timeDate = new Date(timestamp);
|
||||
|
@ -88,7 +88,7 @@ import { ArenaTagType } from "#enums/arena-tag-type";
|
||||
import { BattlerTagType } from "#enums/battler-tag-type";
|
||||
import { Biome } from "#enums/biome";
|
||||
import { MoveId } from "#enums/move-id";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import { MoveUsedEvent } from "#app/events/battle-scene";
|
||||
import {
|
||||
BATTLE_STATS,
|
||||
@ -2430,7 +2430,7 @@ export class ChangeMultiHitTypeAttr extends MoveAttr {
|
||||
|
||||
export class WaterShurikenMultiHitTypeAttr extends ChangeMultiHitTypeAttr {
|
||||
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
|
||||
if (user.species.speciesId === Species.GRENINJA && user.hasAbility(AbilityId.BATTLE_BOND) && user.formIndex === 2) {
|
||||
if (user.species.speciesId === SpeciesId.GRENINJA && user.hasAbility(AbilityId.BATTLE_BOND) && user.formIndex === 2) {
|
||||
(args[0] as NumberHolder).value = MultiHitType._3;
|
||||
return true;
|
||||
}
|
||||
@ -4237,7 +4237,7 @@ export class PresentPowerAttr extends VariablePowerAttr {
|
||||
|
||||
export class WaterShurikenPowerAttr extends VariablePowerAttr {
|
||||
apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
|
||||
if (user.species.speciesId === Species.GRENINJA && user.hasAbility(AbilityId.BATTLE_BOND) && user.formIndex === 2) {
|
||||
if (user.species.speciesId === SpeciesId.GRENINJA && user.hasAbility(AbilityId.BATTLE_BOND) && user.formIndex === 2) {
|
||||
(args[0] as NumberHolder).value = 20;
|
||||
return true;
|
||||
}
|
||||
@ -4844,8 +4844,8 @@ export class FormChangeItemTypeAttr extends VariableMoveTypeAttr {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ([ user.species.speciesId, user.fusionSpecies?.speciesId ].includes(Species.ARCEUS) || [ user.species.speciesId, user.fusionSpecies?.speciesId ].includes(Species.SILVALLY)) {
|
||||
const form = user.species.speciesId === Species.ARCEUS || user.species.speciesId === Species.SILVALLY ? user.formIndex : user.fusionSpecies?.formIndex!;
|
||||
if ([ user.species.speciesId, user.fusionSpecies?.speciesId ].includes(SpeciesId.ARCEUS) || [ user.species.speciesId, user.fusionSpecies?.speciesId ].includes(SpeciesId.SILVALLY)) {
|
||||
const form = user.species.speciesId === SpeciesId.ARCEUS || user.species.speciesId === SpeciesId.SILVALLY ? user.formIndex : user.fusionSpecies?.formIndex!;
|
||||
|
||||
moveType.value = PokemonType[PokemonType[form]];
|
||||
return true;
|
||||
@ -4867,8 +4867,8 @@ export class TechnoBlastTypeAttr extends VariableMoveTypeAttr {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ([ user.species.speciesId, user.fusionSpecies?.speciesId ].includes(Species.GENESECT)) {
|
||||
const form = user.species.speciesId === Species.GENESECT ? user.formIndex : user.fusionSpecies?.formIndex;
|
||||
if ([ user.species.speciesId, user.fusionSpecies?.speciesId ].includes(SpeciesId.GENESECT)) {
|
||||
const form = user.species.speciesId === SpeciesId.GENESECT ? user.formIndex : user.fusionSpecies?.formIndex;
|
||||
|
||||
switch (form) {
|
||||
case 1: // Shock Drive
|
||||
@ -4901,8 +4901,8 @@ export class AuraWheelTypeAttr extends VariableMoveTypeAttr {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ([ user.species.speciesId, user.fusionSpecies?.speciesId ].includes(Species.MORPEKO)) {
|
||||
const form = user.species.speciesId === Species.MORPEKO ? user.formIndex : user.fusionSpecies?.formIndex;
|
||||
if ([ user.species.speciesId, user.fusionSpecies?.speciesId ].includes(SpeciesId.MORPEKO)) {
|
||||
const form = user.species.speciesId === SpeciesId.MORPEKO ? user.formIndex : user.fusionSpecies?.formIndex;
|
||||
|
||||
switch (form) {
|
||||
case 1: // Hangry Mode
|
||||
@ -4926,8 +4926,8 @@ export class RagingBullTypeAttr extends VariableMoveTypeAttr {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ([ user.species.speciesId, user.fusionSpecies?.speciesId ].includes(Species.PALDEA_TAUROS)) {
|
||||
const form = user.species.speciesId === Species.PALDEA_TAUROS ? user.formIndex : user.fusionSpecies?.formIndex;
|
||||
if ([ user.species.speciesId, user.fusionSpecies?.speciesId ].includes(SpeciesId.PALDEA_TAUROS)) {
|
||||
const form = user.species.speciesId === SpeciesId.PALDEA_TAUROS ? user.formIndex : user.fusionSpecies?.formIndex;
|
||||
|
||||
switch (form) {
|
||||
case 1: // Blaze breed
|
||||
@ -4954,8 +4954,8 @@ export class IvyCudgelTypeAttr extends VariableMoveTypeAttr {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ([ user.species.speciesId, user.fusionSpecies?.speciesId ].includes(Species.OGERPON)) {
|
||||
const form = user.species.speciesId === Species.OGERPON ? user.formIndex : user.fusionSpecies?.formIndex;
|
||||
if ([ user.species.speciesId, user.fusionSpecies?.speciesId ].includes(SpeciesId.OGERPON)) {
|
||||
const form = user.species.speciesId === SpeciesId.OGERPON ? user.formIndex : user.fusionSpecies?.formIndex;
|
||||
|
||||
switch (form) {
|
||||
case 1: // Wellspring Mask
|
||||
@ -5139,7 +5139,7 @@ export class TeraStarstormTypeAttr extends VariableMoveTypeAttr {
|
||||
* @returns `true` if the move type is changed to {@linkcode PokemonType.STELLAR}, `false` otherwise
|
||||
*/
|
||||
override apply(user: Pokemon, target: Pokemon, move: Move, args: any[]): boolean {
|
||||
if (user.isTerastallized && user.hasSpecies(Species.TERAPAGOS)) {
|
||||
if (user.isTerastallized && user.hasSpecies(SpeciesId.TERAPAGOS)) {
|
||||
const moveType = args[0] as NumberHolder;
|
||||
|
||||
moveType.value = PokemonType.STELLAR;
|
||||
@ -5616,7 +5616,7 @@ export class GulpMissileTagAttr extends MoveEffectAttr {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (user.hasAbility(AbilityId.GULP_MISSILE) && user.species.speciesId === Species.CRAMORANT) {
|
||||
if (user.hasAbility(AbilityId.GULP_MISSILE) && user.species.speciesId === SpeciesId.CRAMORANT) {
|
||||
if (user.getHpRatio() >= .5) {
|
||||
user.addTag(BattlerTagType.GULP_MISSILE_ARROKUDA, 0, move.id);
|
||||
} else {
|
||||
@ -5629,7 +5629,7 @@ export class GulpMissileTagAttr extends MoveEffectAttr {
|
||||
}
|
||||
|
||||
getUserBenefitScore(user: Pokemon, target: Pokemon, move: Move): number {
|
||||
const isCramorant = user.hasAbility(AbilityId.GULP_MISSILE) && user.species.speciesId === Species.CRAMORANT;
|
||||
const isCramorant = user.hasAbility(AbilityId.GULP_MISSILE) && user.species.speciesId === SpeciesId.CRAMORANT;
|
||||
return isCramorant && !user.getTag(GulpMissileTag) ? 10 : 0;
|
||||
}
|
||||
}
|
||||
@ -9735,8 +9735,8 @@ export function initMoves() {
|
||||
.attr(AddBattlerTagAttr, BattlerTagType.CENTER_OF_ATTENTION, true),
|
||||
new StatusMove(MoveId.TELEKINESIS, PokemonType.PSYCHIC, -1, 15, -1, 0, 5)
|
||||
.condition(failOnGravityCondition)
|
||||
.condition((_user, target, _move) => ![ Species.DIGLETT, Species.DUGTRIO, Species.ALOLA_DIGLETT, Species.ALOLA_DUGTRIO, Species.SANDYGAST, Species.PALOSSAND, Species.WIGLETT, Species.WUGTRIO ].includes(target.species.speciesId))
|
||||
.condition((_user, target, _move) => !(target.species.speciesId === Species.GENGAR && target.getFormKey() === "mega"))
|
||||
.condition((_user, target, _move) => ![ SpeciesId.DIGLETT, SpeciesId.DUGTRIO, SpeciesId.ALOLA_DIGLETT, SpeciesId.ALOLA_DUGTRIO, SpeciesId.SANDYGAST, SpeciesId.PALOSSAND, SpeciesId.WIGLETT, SpeciesId.WUGTRIO ].includes(target.species.speciesId))
|
||||
.condition((_user, target, _move) => !(target.species.speciesId === SpeciesId.GENGAR && target.getFormKey() === "mega"))
|
||||
.condition((_user, target, _move) => isNullOrUndefined(target.getTag(BattlerTagType.INGRAIN)) && isNullOrUndefined(target.getTag(BattlerTagType.IGNORE_FLYING)))
|
||||
.attr(AddBattlerTagAttr, BattlerTagType.TELEKINESIS, false, true, 3)
|
||||
.attr(AddBattlerTagAttr, BattlerTagType.FLOATING, false, true, 3)
|
||||
@ -11224,7 +11224,7 @@ export function initMoves() {
|
||||
new AttackMove(MoveId.TERA_STARSTORM, PokemonType.NORMAL, MoveCategory.SPECIAL, 120, 100, 5, -1, 0, 9)
|
||||
.attr(TeraMoveCategoryAttr)
|
||||
.attr(TeraStarstormTypeAttr)
|
||||
.attr(VariableTargetAttr, (user, target, move) => user.hasSpecies(Species.TERAPAGOS) && (user.isTerastallized || globalScene.currentBattle.preTurnCommands[user.getFieldIndex()]?.command === Command.TERA) ? MoveTarget.ALL_NEAR_ENEMIES : MoveTarget.NEAR_OTHER)
|
||||
.attr(VariableTargetAttr, (user, target, move) => user.hasSpecies(SpeciesId.TERAPAGOS) && (user.isTerastallized || globalScene.currentBattle.preTurnCommands[user.getFieldIndex()]?.command === Command.TERA) ? MoveTarget.ALL_NEAR_ENEMIES : MoveTarget.NEAR_OTHER)
|
||||
.partial(), /** Does not ignore abilities that affect stats, relevant in determining the move's category {@see TeraMoveCategoryAttr} */
|
||||
new AttackMove(MoveId.FICKLE_BEAM, PokemonType.DRAGON, MoveCategory.SPECIAL, 80, 100, 5, 30, 0, 9)
|
||||
.attr(PreMoveMessageAttr, doublePowerChanceMessageFunc)
|
||||
|
@ -12,7 +12,7 @@ import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounte
|
||||
import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter";
|
||||
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
|
||||
import { TrainerType } from "#enums/trainer-type";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import { getSpriteKeysFromSpecies } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils";
|
||||
import { randSeedInt } from "#app/utils/common";
|
||||
import i18next from "i18next";
|
||||
@ -54,27 +54,27 @@ export const ATrainersTestEncounter: MysteryEncounter = MysteryEncounterBuilder.
|
||||
switch (randSeedInt(5)) {
|
||||
case 1:
|
||||
trainerType = TrainerType.CHERYL;
|
||||
spriteKeys = getSpriteKeysFromSpecies(Species.BLISSEY);
|
||||
spriteKeys = getSpriteKeysFromSpecies(SpeciesId.BLISSEY);
|
||||
trainerNameKey = "cheryl";
|
||||
break;
|
||||
case 2:
|
||||
trainerType = TrainerType.MARLEY;
|
||||
spriteKeys = getSpriteKeysFromSpecies(Species.ARCANINE);
|
||||
spriteKeys = getSpriteKeysFromSpecies(SpeciesId.ARCANINE);
|
||||
trainerNameKey = "marley";
|
||||
break;
|
||||
case 3:
|
||||
trainerType = TrainerType.MIRA;
|
||||
spriteKeys = getSpriteKeysFromSpecies(Species.ALAKAZAM, false, 1);
|
||||
spriteKeys = getSpriteKeysFromSpecies(SpeciesId.ALAKAZAM, false, 1);
|
||||
trainerNameKey = "mira";
|
||||
break;
|
||||
case 4:
|
||||
trainerType = TrainerType.RILEY;
|
||||
spriteKeys = getSpriteKeysFromSpecies(Species.LUCARIO, false, 1);
|
||||
spriteKeys = getSpriteKeysFromSpecies(SpeciesId.LUCARIO, false, 1);
|
||||
trainerNameKey = "riley";
|
||||
break;
|
||||
default:
|
||||
trainerType = TrainerType.BUCK;
|
||||
spriteKeys = getSpriteKeysFromSpecies(Species.CLAYDOL);
|
||||
spriteKeys = getSpriteKeysFromSpecies(SpeciesId.CLAYDOL);
|
||||
trainerNameKey = "buck";
|
||||
break;
|
||||
}
|
||||
|
@ -11,7 +11,7 @@ import { EnemyPokemon, PokemonMove } from "#app/field/pokemon";
|
||||
import type { BerryModifierType, PokemonHeldItemModifierType } from "#app/modifier/modifier-type";
|
||||
import { modifierTypes } from "#app/modifier/modifier-type";
|
||||
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import { globalScene } from "#app/global-scene";
|
||||
import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter";
|
||||
import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter";
|
||||
@ -59,7 +59,7 @@ export const AbsoluteAvariceEncounter: MysteryEncounter = MysteryEncounterBuilde
|
||||
// This sprite has the shadow
|
||||
spriteKey: "",
|
||||
fileRoot: "",
|
||||
species: Species.GREEDENT,
|
||||
species: SpeciesId.GREEDENT,
|
||||
hasShadow: true,
|
||||
alpha: 0.001,
|
||||
repeat: true,
|
||||
@ -68,7 +68,7 @@ export const AbsoluteAvariceEncounter: MysteryEncounter = MysteryEncounterBuilde
|
||||
{
|
||||
spriteKey: "",
|
||||
fileRoot: "",
|
||||
species: Species.GREEDENT,
|
||||
species: SpeciesId.GREEDENT,
|
||||
hasShadow: false,
|
||||
repeat: true,
|
||||
x: -5,
|
||||
@ -228,7 +228,7 @@ export const AbsoluteAvariceEncounter: MysteryEncounter = MysteryEncounterBuilde
|
||||
levelAdditiveModifier: 1,
|
||||
pokemonConfigs: [
|
||||
{
|
||||
species: getPokemonSpecies(Species.GREEDENT),
|
||||
species: getPokemonSpecies(SpeciesId.GREEDENT),
|
||||
isBoss: true,
|
||||
bossSegments: 3,
|
||||
shiny: false, // Shiny lock because of consistency issues between the different options
|
||||
@ -246,7 +246,7 @@ export const AbsoluteAvariceEncounter: MysteryEncounter = MysteryEncounterBuilde
|
||||
};
|
||||
|
||||
encounter.enemyPartyConfigs = [config];
|
||||
encounter.setDialogueToken("greedentName", getPokemonSpecies(Species.GREEDENT).getName());
|
||||
encounter.setDialogueToken("greedentName", getPokemonSpecies(SpeciesId.GREEDENT).getName());
|
||||
|
||||
return true;
|
||||
})
|
||||
@ -373,7 +373,7 @@ export const AbsoluteAvariceEncounter: MysteryEncounter = MysteryEncounterBuilde
|
||||
// Let it have the food
|
||||
// Greedent joins the team, level equal to 2 below highest party member (shiny locked)
|
||||
const level = getHighestLevelPlayerPokemon(false, true).level - 2;
|
||||
const greedent = new EnemyPokemon(getPokemonSpecies(Species.GREEDENT), level, TrainerSlot.NONE, false, true);
|
||||
const greedent = new EnemyPokemon(getPokemonSpecies(SpeciesId.GREEDENT), level, TrainerSlot.NONE, false, true);
|
||||
greedent.moveset = [
|
||||
new PokemonMove(MoveId.THRASH),
|
||||
new PokemonMove(MoveId.BODY_PRESS),
|
||||
|
@ -6,7 +6,7 @@ import {
|
||||
} from "#app/data/mystery-encounters/utils/encounter-phase-utils";
|
||||
import { modifierTypes } from "#app/modifier/modifier-type";
|
||||
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import { globalScene } from "#app/global-scene";
|
||||
import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter";
|
||||
import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter";
|
||||
@ -50,7 +50,7 @@ export const AnOfferYouCantRefuseEncounter: MysteryEncounter = MysteryEncounterB
|
||||
.withScenePartySizeRequirement(2, 6, true) // Must have at least 2 pokemon in party
|
||||
.withIntroSpriteConfigs([
|
||||
{
|
||||
spriteKey: Species.LIEPARD.toString(),
|
||||
spriteKey: SpeciesId.LIEPARD.toString(),
|
||||
fileRoot: "pokemon",
|
||||
hasShadow: true,
|
||||
repeat: true,
|
||||
@ -112,7 +112,7 @@ export const AnOfferYouCantRefuseEncounter: MysteryEncounter = MysteryEncounterB
|
||||
|
||||
const shinyCharm = generateModifierType(modifierTypes.SHINY_CHARM);
|
||||
encounter.setDialogueToken("itemName", shinyCharm?.name ?? i18next.t("modifierType:ModifierType.SHINY_CHARM.name"));
|
||||
encounter.setDialogueToken("liepardName", getPokemonSpecies(Species.LIEPARD).getName());
|
||||
encounter.setDialogueToken("liepardName", getPokemonSpecies(SpeciesId.LIEPARD).getName());
|
||||
|
||||
return true;
|
||||
})
|
||||
@ -167,7 +167,7 @@ export const AnOfferYouCantRefuseEncounter: MysteryEncounter = MysteryEncounterB
|
||||
// Update money and remove pokemon from party
|
||||
updatePlayerMoney(encounter.misc.price);
|
||||
|
||||
setEncounterExp(encounter.options[1].primaryPokemon!.id, getPokemonSpecies(Species.LIEPARD).baseExp, true);
|
||||
setEncounterExp(encounter.options[1].primaryPokemon!.id, getPokemonSpecies(SpeciesId.LIEPARD).baseExp, true);
|
||||
|
||||
leaveEncounterWithoutBattle(true);
|
||||
})
|
||||
|
@ -21,7 +21,7 @@ import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounte
|
||||
import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter";
|
||||
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
|
||||
import { TrainerType } from "#enums/trainer-type";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import type { PlayerPokemon } from "#app/field/pokemon";
|
||||
import type Pokemon from "#app/field/pokemon";
|
||||
import { PokemonMove } from "#app/field/pokemon";
|
||||
@ -59,90 +59,90 @@ import { getSpriteKeysFromSpecies } from "#app/data/mystery-encounters/utils/enc
|
||||
const namespace = "mysteryEncounters/bugTypeSuperfan";
|
||||
|
||||
const POOL_1_POKEMON = [
|
||||
Species.PARASECT,
|
||||
Species.VENOMOTH,
|
||||
Species.LEDIAN,
|
||||
Species.ARIADOS,
|
||||
Species.YANMA,
|
||||
Species.BEAUTIFLY,
|
||||
Species.DUSTOX,
|
||||
Species.MASQUERAIN,
|
||||
Species.NINJASK,
|
||||
Species.VOLBEAT,
|
||||
Species.ILLUMISE,
|
||||
Species.ANORITH,
|
||||
Species.KRICKETUNE,
|
||||
Species.WORMADAM,
|
||||
Species.MOTHIM,
|
||||
Species.SKORUPI,
|
||||
Species.JOLTIK,
|
||||
Species.LARVESTA,
|
||||
Species.VIVILLON,
|
||||
Species.CHARJABUG,
|
||||
Species.RIBOMBEE,
|
||||
Species.SPIDOPS,
|
||||
Species.LOKIX,
|
||||
SpeciesId.PARASECT,
|
||||
SpeciesId.VENOMOTH,
|
||||
SpeciesId.LEDIAN,
|
||||
SpeciesId.ARIADOS,
|
||||
SpeciesId.YANMA,
|
||||
SpeciesId.BEAUTIFLY,
|
||||
SpeciesId.DUSTOX,
|
||||
SpeciesId.MASQUERAIN,
|
||||
SpeciesId.NINJASK,
|
||||
SpeciesId.VOLBEAT,
|
||||
SpeciesId.ILLUMISE,
|
||||
SpeciesId.ANORITH,
|
||||
SpeciesId.KRICKETUNE,
|
||||
SpeciesId.WORMADAM,
|
||||
SpeciesId.MOTHIM,
|
||||
SpeciesId.SKORUPI,
|
||||
SpeciesId.JOLTIK,
|
||||
SpeciesId.LARVESTA,
|
||||
SpeciesId.VIVILLON,
|
||||
SpeciesId.CHARJABUG,
|
||||
SpeciesId.RIBOMBEE,
|
||||
SpeciesId.SPIDOPS,
|
||||
SpeciesId.LOKIX,
|
||||
];
|
||||
|
||||
const POOL_2_POKEMON = [
|
||||
Species.SCYTHER,
|
||||
Species.PINSIR,
|
||||
Species.HERACROSS,
|
||||
Species.FORRETRESS,
|
||||
Species.SCIZOR,
|
||||
Species.SHUCKLE,
|
||||
Species.SHEDINJA,
|
||||
Species.ARMALDO,
|
||||
Species.VESPIQUEN,
|
||||
Species.DRAPION,
|
||||
Species.YANMEGA,
|
||||
Species.LEAVANNY,
|
||||
Species.SCOLIPEDE,
|
||||
Species.CRUSTLE,
|
||||
Species.ESCAVALIER,
|
||||
Species.ACCELGOR,
|
||||
Species.GALVANTULA,
|
||||
Species.VIKAVOLT,
|
||||
Species.ARAQUANID,
|
||||
Species.ORBEETLE,
|
||||
Species.CENTISKORCH,
|
||||
Species.FROSMOTH,
|
||||
Species.KLEAVOR,
|
||||
SpeciesId.SCYTHER,
|
||||
SpeciesId.PINSIR,
|
||||
SpeciesId.HERACROSS,
|
||||
SpeciesId.FORRETRESS,
|
||||
SpeciesId.SCIZOR,
|
||||
SpeciesId.SHUCKLE,
|
||||
SpeciesId.SHEDINJA,
|
||||
SpeciesId.ARMALDO,
|
||||
SpeciesId.VESPIQUEN,
|
||||
SpeciesId.DRAPION,
|
||||
SpeciesId.YANMEGA,
|
||||
SpeciesId.LEAVANNY,
|
||||
SpeciesId.SCOLIPEDE,
|
||||
SpeciesId.CRUSTLE,
|
||||
SpeciesId.ESCAVALIER,
|
||||
SpeciesId.ACCELGOR,
|
||||
SpeciesId.GALVANTULA,
|
||||
SpeciesId.VIKAVOLT,
|
||||
SpeciesId.ARAQUANID,
|
||||
SpeciesId.ORBEETLE,
|
||||
SpeciesId.CENTISKORCH,
|
||||
SpeciesId.FROSMOTH,
|
||||
SpeciesId.KLEAVOR,
|
||||
];
|
||||
|
||||
const POOL_3_POKEMON: { species: Species; formIndex?: number }[] = [
|
||||
const POOL_3_POKEMON: { species: SpeciesId; formIndex?: number }[] = [
|
||||
{
|
||||
species: Species.PINSIR,
|
||||
species: SpeciesId.PINSIR,
|
||||
formIndex: 1,
|
||||
},
|
||||
{
|
||||
species: Species.SCIZOR,
|
||||
species: SpeciesId.SCIZOR,
|
||||
formIndex: 1,
|
||||
},
|
||||
{
|
||||
species: Species.HERACROSS,
|
||||
species: SpeciesId.HERACROSS,
|
||||
formIndex: 1,
|
||||
},
|
||||
{
|
||||
species: Species.ORBEETLE,
|
||||
species: SpeciesId.ORBEETLE,
|
||||
formIndex: 1,
|
||||
},
|
||||
{
|
||||
species: Species.CENTISKORCH,
|
||||
species: SpeciesId.CENTISKORCH,
|
||||
formIndex: 1,
|
||||
},
|
||||
{
|
||||
species: Species.DURANT,
|
||||
species: SpeciesId.DURANT,
|
||||
},
|
||||
{
|
||||
species: Species.VOLCARONA,
|
||||
species: SpeciesId.VOLCARONA,
|
||||
},
|
||||
{
|
||||
species: Species.GOLISOPOD,
|
||||
species: SpeciesId.GOLISOPOD,
|
||||
},
|
||||
];
|
||||
|
||||
const POOL_4_POKEMON = [Species.GENESECT, Species.SLITHER_WING, Species.BUZZWOLE, Species.PHEROMOSA];
|
||||
const POOL_4_POKEMON = [SpeciesId.GENESECT, SpeciesId.SLITHER_WING, SpeciesId.BUZZWOLE, SpeciesId.PHEROMOSA];
|
||||
|
||||
const PHYSICAL_TUTOR_MOVES = [
|
||||
MoveId.MEGAHORN,
|
||||
@ -219,12 +219,12 @@ export const BugTypeSuperfanEncounter: MysteryEncounter = MysteryEncounterBuilde
|
||||
|
||||
let beedrillKeys: { spriteKey: string; fileRoot: string }, butterfreeKeys: { spriteKey: string; fileRoot: string };
|
||||
if (globalScene.currentBattle.waveIndex < WAVE_LEVEL_BREAKPOINTS[3]) {
|
||||
beedrillKeys = getSpriteKeysFromSpecies(Species.BEEDRILL, false);
|
||||
butterfreeKeys = getSpriteKeysFromSpecies(Species.BUTTERFREE, false);
|
||||
beedrillKeys = getSpriteKeysFromSpecies(SpeciesId.BEEDRILL, false);
|
||||
butterfreeKeys = getSpriteKeysFromSpecies(SpeciesId.BUTTERFREE, false);
|
||||
} else {
|
||||
// Mega Beedrill/Gmax Butterfree
|
||||
beedrillKeys = getSpriteKeysFromSpecies(Species.BEEDRILL, false, 1);
|
||||
butterfreeKeys = getSpriteKeysFromSpecies(Species.BUTTERFREE, false, 1);
|
||||
beedrillKeys = getSpriteKeysFromSpecies(SpeciesId.BEEDRILL, false, 1);
|
||||
butterfreeKeys = getSpriteKeysFromSpecies(SpeciesId.BUTTERFREE, false, 1);
|
||||
}
|
||||
|
||||
encounter.spriteConfigs = [
|
||||
@ -525,26 +525,26 @@ function getTrainerConfigForWave(waveIndex: number) {
|
||||
if (waveIndex < WAVE_LEVEL_BREAKPOINTS[0]) {
|
||||
// Use default template (2 AVG)
|
||||
config
|
||||
.setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.BEEDRILL], TrainerSlot.TRAINER, true))
|
||||
.setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.BUTTERFREE], TrainerSlot.TRAINER, true));
|
||||
.setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.BEEDRILL], TrainerSlot.TRAINER, true))
|
||||
.setPartyMemberFunc(1, getRandomPartyMemberFunc([SpeciesId.BUTTERFREE], TrainerSlot.TRAINER, true));
|
||||
} else if (waveIndex < WAVE_LEVEL_BREAKPOINTS[1]) {
|
||||
config
|
||||
.setPartyTemplates(new TrainerPartyTemplate(3, PartyMemberStrength.AVERAGE))
|
||||
.setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.BEEDRILL], TrainerSlot.TRAINER, true))
|
||||
.setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.BUTTERFREE], TrainerSlot.TRAINER, true))
|
||||
.setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.BEEDRILL], TrainerSlot.TRAINER, true))
|
||||
.setPartyMemberFunc(1, getRandomPartyMemberFunc([SpeciesId.BUTTERFREE], TrainerSlot.TRAINER, true))
|
||||
.setPartyMemberFunc(2, getRandomPartyMemberFunc(POOL_1_POKEMON, TrainerSlot.TRAINER, true));
|
||||
} else if (waveIndex < WAVE_LEVEL_BREAKPOINTS[2]) {
|
||||
config
|
||||
.setPartyTemplates(new TrainerPartyTemplate(4, PartyMemberStrength.AVERAGE))
|
||||
.setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.BEEDRILL], TrainerSlot.TRAINER, true))
|
||||
.setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.BUTTERFREE], TrainerSlot.TRAINER, true))
|
||||
.setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.BEEDRILL], TrainerSlot.TRAINER, true))
|
||||
.setPartyMemberFunc(1, getRandomPartyMemberFunc([SpeciesId.BUTTERFREE], TrainerSlot.TRAINER, true))
|
||||
.setPartyMemberFunc(2, getRandomPartyMemberFunc(POOL_1_POKEMON, TrainerSlot.TRAINER, true))
|
||||
.setPartyMemberFunc(3, getRandomPartyMemberFunc(POOL_2_POKEMON, TrainerSlot.TRAINER, true));
|
||||
} else if (waveIndex < WAVE_LEVEL_BREAKPOINTS[3]) {
|
||||
config
|
||||
.setPartyTemplates(new TrainerPartyTemplate(5, PartyMemberStrength.AVERAGE))
|
||||
.setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.BEEDRILL], TrainerSlot.TRAINER, true))
|
||||
.setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.BUTTERFREE], TrainerSlot.TRAINER, true))
|
||||
.setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.BEEDRILL], TrainerSlot.TRAINER, true))
|
||||
.setPartyMemberFunc(1, getRandomPartyMemberFunc([SpeciesId.BUTTERFREE], TrainerSlot.TRAINER, true))
|
||||
.setPartyMemberFunc(2, getRandomPartyMemberFunc(POOL_1_POKEMON, TrainerSlot.TRAINER, true))
|
||||
.setPartyMemberFunc(3, getRandomPartyMemberFunc(POOL_2_POKEMON, TrainerSlot.TRAINER, true))
|
||||
.setPartyMemberFunc(4, getRandomPartyMemberFunc(POOL_2_POKEMON, TrainerSlot.TRAINER, true));
|
||||
@ -553,7 +553,7 @@ function getTrainerConfigForWave(waveIndex: number) {
|
||||
.setPartyTemplates(new TrainerPartyTemplate(5, PartyMemberStrength.AVERAGE))
|
||||
.setPartyMemberFunc(
|
||||
0,
|
||||
getRandomPartyMemberFunc([Species.BEEDRILL], TrainerSlot.TRAINER, true, p => {
|
||||
getRandomPartyMemberFunc([SpeciesId.BEEDRILL], TrainerSlot.TRAINER, true, p => {
|
||||
p.formIndex = 1;
|
||||
p.generateAndPopulateMoveset();
|
||||
p.generateName();
|
||||
@ -561,7 +561,7 @@ function getTrainerConfigForWave(waveIndex: number) {
|
||||
)
|
||||
.setPartyMemberFunc(
|
||||
1,
|
||||
getRandomPartyMemberFunc([Species.BUTTERFREE], TrainerSlot.TRAINER, true, p => {
|
||||
getRandomPartyMemberFunc([SpeciesId.BUTTERFREE], TrainerSlot.TRAINER, true, p => {
|
||||
p.formIndex = 1;
|
||||
p.generateAndPopulateMoveset();
|
||||
p.generateName();
|
||||
@ -586,7 +586,7 @@ function getTrainerConfigForWave(waveIndex: number) {
|
||||
.setPartyTemplates(new TrainerPartyTemplate(5, PartyMemberStrength.AVERAGE))
|
||||
.setPartyMemberFunc(
|
||||
0,
|
||||
getRandomPartyMemberFunc([Species.BEEDRILL], TrainerSlot.TRAINER, true, p => {
|
||||
getRandomPartyMemberFunc([SpeciesId.BEEDRILL], TrainerSlot.TRAINER, true, p => {
|
||||
p.formIndex = 1;
|
||||
p.generateAndPopulateMoveset();
|
||||
p.generateName();
|
||||
@ -594,7 +594,7 @@ function getTrainerConfigForWave(waveIndex: number) {
|
||||
)
|
||||
.setPartyMemberFunc(
|
||||
1,
|
||||
getRandomPartyMemberFunc([Species.BUTTERFREE], TrainerSlot.TRAINER, true, p => {
|
||||
getRandomPartyMemberFunc([SpeciesId.BUTTERFREE], TrainerSlot.TRAINER, true, p => {
|
||||
p.formIndex = 1;
|
||||
p.generateAndPopulateMoveset();
|
||||
p.generateName();
|
||||
@ -631,7 +631,7 @@ function getTrainerConfigForWave(waveIndex: number) {
|
||||
)
|
||||
.setPartyMemberFunc(
|
||||
0,
|
||||
getRandomPartyMemberFunc([Species.BEEDRILL], TrainerSlot.TRAINER, true, p => {
|
||||
getRandomPartyMemberFunc([SpeciesId.BEEDRILL], TrainerSlot.TRAINER, true, p => {
|
||||
p.formIndex = 1;
|
||||
p.generateAndPopulateMoveset();
|
||||
p.generateName();
|
||||
@ -639,7 +639,7 @@ function getTrainerConfigForWave(waveIndex: number) {
|
||||
)
|
||||
.setPartyMemberFunc(
|
||||
1,
|
||||
getRandomPartyMemberFunc([Species.BUTTERFREE], TrainerSlot.TRAINER, true, p => {
|
||||
getRandomPartyMemberFunc([SpeciesId.BUTTERFREE], TrainerSlot.TRAINER, true, p => {
|
||||
p.formIndex = 1;
|
||||
p.generateAndPopulateMoveset();
|
||||
p.generateName();
|
||||
@ -669,7 +669,7 @@ function getTrainerConfigForWave(waveIndex: number) {
|
||||
)
|
||||
.setPartyMemberFunc(
|
||||
0,
|
||||
getRandomPartyMemberFunc([Species.BEEDRILL], TrainerSlot.TRAINER, true, p => {
|
||||
getRandomPartyMemberFunc([SpeciesId.BEEDRILL], TrainerSlot.TRAINER, true, p => {
|
||||
p.setBoss(true, 2);
|
||||
p.formIndex = 1;
|
||||
p.generateAndPopulateMoveset();
|
||||
@ -678,7 +678,7 @@ function getTrainerConfigForWave(waveIndex: number) {
|
||||
)
|
||||
.setPartyMemberFunc(
|
||||
1,
|
||||
getRandomPartyMemberFunc([Species.BUTTERFREE], TrainerSlot.TRAINER, true, p => {
|
||||
getRandomPartyMemberFunc([SpeciesId.BUTTERFREE], TrainerSlot.TRAINER, true, p => {
|
||||
p.setBoss(true, 2);
|
||||
p.formIndex = 1;
|
||||
p.generateAndPopulateMoveset();
|
||||
|
@ -20,7 +20,7 @@ import { globalScene } from "#app/global-scene";
|
||||
import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter";
|
||||
import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter";
|
||||
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import { TrainerType } from "#enums/trainer-type";
|
||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
||||
import { AbilityId } from "#enums/ability-id";
|
||||
@ -86,7 +86,7 @@ export const ClowningAroundEncounter: MysteryEncounter = MysteryEncounterBuilder
|
||||
.withAutoHideIntroVisuals(false)
|
||||
.withIntroSpriteConfigs([
|
||||
{
|
||||
spriteKey: Species.MR_MIME.toString(),
|
||||
spriteKey: SpeciesId.MR_MIME.toString(),
|
||||
fileRoot: "pokemon",
|
||||
hasShadow: true,
|
||||
repeat: true,
|
||||
@ -96,7 +96,7 @@ export const ClowningAroundEncounter: MysteryEncounter = MysteryEncounterBuilder
|
||||
yShadow: -3,
|
||||
},
|
||||
{
|
||||
spriteKey: Species.BLACEPHALON.toString(),
|
||||
spriteKey: SpeciesId.BLACEPHALON.toString(),
|
||||
fileRoot: "pokemon/exp",
|
||||
hasShadow: true,
|
||||
repeat: true,
|
||||
@ -154,13 +154,13 @@ export const ClowningAroundEncounter: MysteryEncounter = MysteryEncounterBuilder
|
||||
pokemonConfigs: [
|
||||
// Overrides first 2 pokemon to be Mr. Mime and Blacephalon
|
||||
{
|
||||
species: getPokemonSpecies(Species.MR_MIME),
|
||||
species: getPokemonSpecies(SpeciesId.MR_MIME),
|
||||
isBoss: true,
|
||||
moveSet: [MoveId.TEETER_DANCE, MoveId.ALLY_SWITCH, MoveId.DAZZLING_GLEAM, MoveId.PSYCHIC],
|
||||
},
|
||||
{
|
||||
// Blacephalon has the random ability from pool, and 2 entirely random types to fit with the theme of the encounter
|
||||
species: getPokemonSpecies(Species.BLACEPHALON),
|
||||
species: getPokemonSpecies(SpeciesId.BLACEPHALON),
|
||||
customPokemonData: new CustomPokemonData({
|
||||
ability: ability,
|
||||
types: [firstType, secondType],
|
||||
@ -175,7 +175,7 @@ export const ClowningAroundEncounter: MysteryEncounter = MysteryEncounterBuilder
|
||||
// Load animations/sfx for start of fight moves
|
||||
loadCustomMovesForEncounter([MoveId.ROLE_PLAY, MoveId.TAUNT]);
|
||||
|
||||
encounter.setDialogueToken("blacephalonName", getPokemonSpecies(Species.BLACEPHALON).getName());
|
||||
encounter.setDialogueToken("blacephalonName", getPokemonSpecies(SpeciesId.BLACEPHALON).getName());
|
||||
|
||||
return true;
|
||||
})
|
||||
|
@ -38,7 +38,7 @@ import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode
|
||||
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
|
||||
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
|
||||
import { PokeballType } from "#enums/pokeball";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import { Stat } from "#enums/stat";
|
||||
import i18next from "i18next";
|
||||
|
||||
@ -127,7 +127,7 @@ export const DancingLessonsEncounter: MysteryEncounter = MysteryEncounterBuilder
|
||||
.withOnInit(() => {
|
||||
const encounter = globalScene.currentBattle.mysteryEncounter!;
|
||||
|
||||
const species = getPokemonSpecies(Species.ORICORIO);
|
||||
const species = getPokemonSpecies(SpeciesId.ORICORIO);
|
||||
const level = getEncounterPokemonLevelForWave(STANDARD_ENCOUNTER_BOOSTED_LEVEL_MODIFIER);
|
||||
const enemyPokemon = new EnemyPokemon(species, level, TrainerSlot.NONE, false);
|
||||
if (!enemyPokemon.moveset.some(m => m && m.getMove().id === MoveId.REVELATION_DANCE)) {
|
||||
@ -193,7 +193,7 @@ export const DancingLessonsEncounter: MysteryEncounter = MysteryEncounterBuilder
|
||||
oricorioData,
|
||||
};
|
||||
|
||||
encounter.setDialogueToken("oricorioName", getPokemonSpecies(Species.ORICORIO).getName());
|
||||
encounter.setDialogueToken("oricorioName", getPokemonSpecies(SpeciesId.ORICORIO).getName());
|
||||
|
||||
return true;
|
||||
})
|
||||
|
@ -1,7 +1,7 @@
|
||||
import type { PokemonType } from "#enums/pokemon-type";
|
||||
import { isNullOrUndefined, randSeedInt } from "#app/utils/common";
|
||||
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import { globalScene } from "#app/global-scene";
|
||||
import { modifierTypes } from "#app/modifier/modifier-type";
|
||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
||||
@ -27,68 +27,68 @@ const namespace = "mysteryEncounters/darkDeal";
|
||||
|
||||
/** Exclude Ultra Beasts (inludes Cosmog/Solgaleo/Lunala/Necrozma), Paradox (includes Miraidon/Koraidon), Eternatus, and Mythicals */
|
||||
const excludedBosses = [
|
||||
Species.NECROZMA,
|
||||
Species.COSMOG,
|
||||
Species.COSMOEM,
|
||||
Species.SOLGALEO,
|
||||
Species.LUNALA,
|
||||
Species.ETERNATUS,
|
||||
Species.NIHILEGO,
|
||||
Species.BUZZWOLE,
|
||||
Species.PHEROMOSA,
|
||||
Species.XURKITREE,
|
||||
Species.CELESTEELA,
|
||||
Species.KARTANA,
|
||||
Species.GUZZLORD,
|
||||
Species.POIPOLE,
|
||||
Species.NAGANADEL,
|
||||
Species.STAKATAKA,
|
||||
Species.BLACEPHALON,
|
||||
Species.GREAT_TUSK,
|
||||
Species.SCREAM_TAIL,
|
||||
Species.BRUTE_BONNET,
|
||||
Species.FLUTTER_MANE,
|
||||
Species.SLITHER_WING,
|
||||
Species.SANDY_SHOCKS,
|
||||
Species.ROARING_MOON,
|
||||
Species.KORAIDON,
|
||||
Species.WALKING_WAKE,
|
||||
Species.GOUGING_FIRE,
|
||||
Species.RAGING_BOLT,
|
||||
Species.IRON_TREADS,
|
||||
Species.IRON_BUNDLE,
|
||||
Species.IRON_HANDS,
|
||||
Species.IRON_JUGULIS,
|
||||
Species.IRON_MOTH,
|
||||
Species.IRON_THORNS,
|
||||
Species.IRON_VALIANT,
|
||||
Species.MIRAIDON,
|
||||
Species.IRON_LEAVES,
|
||||
Species.IRON_BOULDER,
|
||||
Species.IRON_CROWN,
|
||||
Species.MEW,
|
||||
Species.CELEBI,
|
||||
Species.DEOXYS,
|
||||
Species.JIRACHI,
|
||||
Species.DARKRAI,
|
||||
Species.PHIONE,
|
||||
Species.MANAPHY,
|
||||
Species.ARCEUS,
|
||||
Species.SHAYMIN,
|
||||
Species.VICTINI,
|
||||
Species.MELOETTA,
|
||||
Species.KELDEO,
|
||||
Species.GENESECT,
|
||||
Species.DIANCIE,
|
||||
Species.HOOPA,
|
||||
Species.VOLCANION,
|
||||
Species.MAGEARNA,
|
||||
Species.MARSHADOW,
|
||||
Species.ZERAORA,
|
||||
Species.ZARUDE,
|
||||
Species.MELTAN,
|
||||
Species.MELMETAL,
|
||||
Species.PECHARUNT,
|
||||
SpeciesId.NECROZMA,
|
||||
SpeciesId.COSMOG,
|
||||
SpeciesId.COSMOEM,
|
||||
SpeciesId.SOLGALEO,
|
||||
SpeciesId.LUNALA,
|
||||
SpeciesId.ETERNATUS,
|
||||
SpeciesId.NIHILEGO,
|
||||
SpeciesId.BUZZWOLE,
|
||||
SpeciesId.PHEROMOSA,
|
||||
SpeciesId.XURKITREE,
|
||||
SpeciesId.CELESTEELA,
|
||||
SpeciesId.KARTANA,
|
||||
SpeciesId.GUZZLORD,
|
||||
SpeciesId.POIPOLE,
|
||||
SpeciesId.NAGANADEL,
|
||||
SpeciesId.STAKATAKA,
|
||||
SpeciesId.BLACEPHALON,
|
||||
SpeciesId.GREAT_TUSK,
|
||||
SpeciesId.SCREAM_TAIL,
|
||||
SpeciesId.BRUTE_BONNET,
|
||||
SpeciesId.FLUTTER_MANE,
|
||||
SpeciesId.SLITHER_WING,
|
||||
SpeciesId.SANDY_SHOCKS,
|
||||
SpeciesId.ROARING_MOON,
|
||||
SpeciesId.KORAIDON,
|
||||
SpeciesId.WALKING_WAKE,
|
||||
SpeciesId.GOUGING_FIRE,
|
||||
SpeciesId.RAGING_BOLT,
|
||||
SpeciesId.IRON_TREADS,
|
||||
SpeciesId.IRON_BUNDLE,
|
||||
SpeciesId.IRON_HANDS,
|
||||
SpeciesId.IRON_JUGULIS,
|
||||
SpeciesId.IRON_MOTH,
|
||||
SpeciesId.IRON_THORNS,
|
||||
SpeciesId.IRON_VALIANT,
|
||||
SpeciesId.MIRAIDON,
|
||||
SpeciesId.IRON_LEAVES,
|
||||
SpeciesId.IRON_BOULDER,
|
||||
SpeciesId.IRON_CROWN,
|
||||
SpeciesId.MEW,
|
||||
SpeciesId.CELEBI,
|
||||
SpeciesId.DEOXYS,
|
||||
SpeciesId.JIRACHI,
|
||||
SpeciesId.DARKRAI,
|
||||
SpeciesId.PHIONE,
|
||||
SpeciesId.MANAPHY,
|
||||
SpeciesId.ARCEUS,
|
||||
SpeciesId.SHAYMIN,
|
||||
SpeciesId.VICTINI,
|
||||
SpeciesId.MELOETTA,
|
||||
SpeciesId.KELDEO,
|
||||
SpeciesId.GENESECT,
|
||||
SpeciesId.DIANCIE,
|
||||
SpeciesId.HOOPA,
|
||||
SpeciesId.VOLCANION,
|
||||
SpeciesId.MAGEARNA,
|
||||
SpeciesId.MARSHADOW,
|
||||
SpeciesId.ZERAORA,
|
||||
SpeciesId.ZARUDE,
|
||||
SpeciesId.MELTAN,
|
||||
SpeciesId.MELMETAL,
|
||||
SpeciesId.PECHARUNT,
|
||||
];
|
||||
|
||||
/**
|
||||
|
@ -36,7 +36,7 @@ import { randSeedItem } from "#app/utils/common";
|
||||
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
|
||||
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
|
||||
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import { timedEventManager } from "#app/global-event-manager";
|
||||
|
||||
/** the i18n namespace for this encounter */
|
||||
@ -95,7 +95,7 @@ export const DelibirdyEncounter: MysteryEncounter = MysteryEncounterBuilder.with
|
||||
{
|
||||
spriteKey: "",
|
||||
fileRoot: "",
|
||||
species: Species.DELIBIRD,
|
||||
species: SpeciesId.DELIBIRD,
|
||||
hasShadow: true,
|
||||
repeat: true,
|
||||
startFrame: 38,
|
||||
@ -104,7 +104,7 @@ export const DelibirdyEncounter: MysteryEncounter = MysteryEncounterBuilder.with
|
||||
{
|
||||
spriteKey: "",
|
||||
fileRoot: "",
|
||||
species: Species.DELIBIRD,
|
||||
species: SpeciesId.DELIBIRD,
|
||||
hasShadow: true,
|
||||
repeat: true,
|
||||
scale: 1.06,
|
||||
@ -112,7 +112,7 @@ export const DelibirdyEncounter: MysteryEncounter = MysteryEncounterBuilder.with
|
||||
{
|
||||
spriteKey: "",
|
||||
fileRoot: "",
|
||||
species: Species.DELIBIRD,
|
||||
species: SpeciesId.DELIBIRD,
|
||||
hasShadow: true,
|
||||
repeat: true,
|
||||
startFrame: 65,
|
||||
@ -137,7 +137,7 @@ export const DelibirdyEncounter: MysteryEncounter = MysteryEncounterBuilder.with
|
||||
])
|
||||
.withOnInit(() => {
|
||||
const encounter = globalScene.currentBattle.mysteryEncounter!;
|
||||
encounter.setDialogueToken("delibirdName", getPokemonSpecies(Species.DELIBIRD).getName());
|
||||
encounter.setDialogueToken("delibirdName", getPokemonSpecies(SpeciesId.DELIBIRD).getName());
|
||||
|
||||
globalScene.loadBgm("mystery_encounter_delibirdy", "mystery_encounter_delibirdy.mp3");
|
||||
return true;
|
||||
|
@ -6,7 +6,7 @@ import type { ModifierTypeFunc } from "#app/modifier/modifier-type";
|
||||
import { modifierTypes } from "#app/modifier/modifier-type";
|
||||
import { randSeedInt } from "#app/utils/common";
|
||||
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter";
|
||||
import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter";
|
||||
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
|
||||
@ -35,7 +35,7 @@ export const DepartmentStoreSaleEncounter: MysteryEncounter = MysteryEncounterBu
|
||||
{
|
||||
spriteKey: "",
|
||||
fileRoot: "",
|
||||
species: Species.FURFROU,
|
||||
species: SpeciesId.FURFROU,
|
||||
hasShadow: true,
|
||||
repeat: true,
|
||||
x: 30,
|
||||
|
@ -20,7 +20,7 @@ import {
|
||||
CombinationPokemonRequirement,
|
||||
TypeRequirement,
|
||||
} from "#app/data/mystery-encounters/mystery-encounter-requirements";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
||||
import { Gender } from "#app/data/gender";
|
||||
import { PokemonType } from "#enums/pokemon-type";
|
||||
@ -83,7 +83,7 @@ export const FieryFalloutEncounter: MysteryEncounter = MysteryEncounterBuilder.w
|
||||
const encounter = globalScene.currentBattle.mysteryEncounter!;
|
||||
|
||||
// Calculate boss mons
|
||||
const volcaronaSpecies = getPokemonSpecies(Species.VOLCARONA);
|
||||
const volcaronaSpecies = getPokemonSpecies(SpeciesId.VOLCARONA);
|
||||
const config: EnemyPartyConfig = {
|
||||
pokemonConfigs: [
|
||||
{
|
||||
@ -119,7 +119,7 @@ export const FieryFalloutEncounter: MysteryEncounter = MysteryEncounterBuilder.w
|
||||
{
|
||||
spriteKey: "",
|
||||
fileRoot: "",
|
||||
species: Species.VOLCARONA,
|
||||
species: SpeciesId.VOLCARONA,
|
||||
repeat: true,
|
||||
hidden: true,
|
||||
hasShadow: true,
|
||||
@ -129,7 +129,7 @@ export const FieryFalloutEncounter: MysteryEncounter = MysteryEncounterBuilder.w
|
||||
{
|
||||
spriteKey: "",
|
||||
fileRoot: "",
|
||||
species: Species.VOLCARONA,
|
||||
species: SpeciesId.VOLCARONA,
|
||||
repeat: true,
|
||||
hidden: true,
|
||||
hasShadow: true,
|
||||
@ -143,7 +143,7 @@ export const FieryFalloutEncounter: MysteryEncounter = MysteryEncounterBuilder.w
|
||||
const pokemon = globalScene.getEnemyPokemon();
|
||||
globalScene.arena.trySetWeather(WeatherType.SUNNY, pokemon);
|
||||
|
||||
encounter.setDialogueToken("volcaronaName", getPokemonSpecies(Species.VOLCARONA).getName());
|
||||
encounter.setDialogueToken("volcaronaName", getPokemonSpecies(SpeciesId.VOLCARONA).getName());
|
||||
|
||||
return true;
|
||||
})
|
||||
@ -283,7 +283,7 @@ export const FieryFalloutEncounter: MysteryEncounter = MysteryEncounterBuilder.w
|
||||
|
||||
const primary = encounter.options[2].primaryPokemon!;
|
||||
|
||||
setEncounterExp([primary.id], getPokemonSpecies(Species.VOLCARONA).baseExp * 2);
|
||||
setEncounterExp([primary.id], getPokemonSpecies(SpeciesId.VOLCARONA).baseExp * 2);
|
||||
leaveEncounterWithoutBattle();
|
||||
})
|
||||
.build(),
|
||||
|
@ -19,7 +19,7 @@ import { MoneyRequirement } from "#app/data/mystery-encounters/mystery-encounter
|
||||
import { queueEncounterMessage, showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils";
|
||||
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
|
||||
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import i18next from "i18next";
|
||||
import { getPokemonNameWithAffix } from "#app/messages";
|
||||
import { PlayerGender } from "#enums/player-gender";
|
||||
@ -91,7 +91,7 @@ export const FunAndGamesEncounter: MysteryEncounter = MysteryEncounterBuilder.wi
|
||||
.withOnInit(() => {
|
||||
const encounter = globalScene.currentBattle.mysteryEncounter!;
|
||||
globalScene.loadBgm("mystery_encounter_fun_and_games", "mystery_encounter_fun_and_games.mp3");
|
||||
encounter.setDialogueToken("wobbuffetName", getPokemonSpecies(Species.WOBBUFFET).getName());
|
||||
encounter.setDialogueToken("wobbuffetName", getPokemonSpecies(SpeciesId.WOBBUFFET).getName());
|
||||
return true;
|
||||
})
|
||||
.withOnVisualsStart(() => {
|
||||
@ -214,7 +214,7 @@ async function summonPlayerPokemon() {
|
||||
});
|
||||
|
||||
// Also loads Wobbuffet data (cannot be shiny)
|
||||
const enemySpecies = getPokemonSpecies(Species.WOBBUFFET);
|
||||
const enemySpecies = getPokemonSpecies(SpeciesId.WOBBUFFET);
|
||||
globalScene.currentBattle.enemyParty = [];
|
||||
const wobbuffet = globalScene.addEnemyPokemon(
|
||||
enemySpecies,
|
||||
|
@ -17,7 +17,7 @@ import { globalScene } from "#app/global-scene";
|
||||
import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter";
|
||||
import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter";
|
||||
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import type PokemonSpecies from "#app/data/pokemon-species";
|
||||
import { allSpecies, getPokemonSpecies } from "#app/data/pokemon-species";
|
||||
import { getTypeRgb } from "#app/data/type";
|
||||
@ -64,39 +64,39 @@ const WONDER_TRADE_SHINY_CHANCE = 512;
|
||||
const MAX_WONDER_TRADE_SHINY_CHANCE = 4096;
|
||||
|
||||
const LEGENDARY_TRADE_POOLS = {
|
||||
1: [Species.RATTATA, Species.PIDGEY, Species.WEEDLE],
|
||||
2: [Species.SENTRET, Species.HOOTHOOT, Species.LEDYBA],
|
||||
3: [Species.POOCHYENA, Species.ZIGZAGOON, Species.TAILLOW],
|
||||
4: [Species.BIDOOF, Species.STARLY, Species.KRICKETOT],
|
||||
5: [Species.PATRAT, Species.PURRLOIN, Species.PIDOVE],
|
||||
6: [Species.BUNNELBY, Species.LITLEO, Species.SCATTERBUG],
|
||||
7: [Species.PIKIPEK, Species.YUNGOOS, Species.ROCKRUFF],
|
||||
8: [Species.SKWOVET, Species.WOOLOO, Species.ROOKIDEE],
|
||||
9: [Species.LECHONK, Species.FIDOUGH, Species.TAROUNTULA],
|
||||
1: [SpeciesId.RATTATA, SpeciesId.PIDGEY, SpeciesId.WEEDLE],
|
||||
2: [SpeciesId.SENTRET, SpeciesId.HOOTHOOT, SpeciesId.LEDYBA],
|
||||
3: [SpeciesId.POOCHYENA, SpeciesId.ZIGZAGOON, SpeciesId.TAILLOW],
|
||||
4: [SpeciesId.BIDOOF, SpeciesId.STARLY, SpeciesId.KRICKETOT],
|
||||
5: [SpeciesId.PATRAT, SpeciesId.PURRLOIN, SpeciesId.PIDOVE],
|
||||
6: [SpeciesId.BUNNELBY, SpeciesId.LITLEO, SpeciesId.SCATTERBUG],
|
||||
7: [SpeciesId.PIKIPEK, SpeciesId.YUNGOOS, SpeciesId.ROCKRUFF],
|
||||
8: [SpeciesId.SKWOVET, SpeciesId.WOOLOO, SpeciesId.ROOKIDEE],
|
||||
9: [SpeciesId.LECHONK, SpeciesId.FIDOUGH, SpeciesId.TAROUNTULA],
|
||||
};
|
||||
|
||||
/** Exclude Paradox mons as they aren't considered legendary/mythical */
|
||||
const EXCLUDED_TRADE_SPECIES = [
|
||||
Species.GREAT_TUSK,
|
||||
Species.SCREAM_TAIL,
|
||||
Species.BRUTE_BONNET,
|
||||
Species.FLUTTER_MANE,
|
||||
Species.SLITHER_WING,
|
||||
Species.SANDY_SHOCKS,
|
||||
Species.ROARING_MOON,
|
||||
Species.WALKING_WAKE,
|
||||
Species.GOUGING_FIRE,
|
||||
Species.RAGING_BOLT,
|
||||
Species.IRON_TREADS,
|
||||
Species.IRON_BUNDLE,
|
||||
Species.IRON_HANDS,
|
||||
Species.IRON_JUGULIS,
|
||||
Species.IRON_MOTH,
|
||||
Species.IRON_THORNS,
|
||||
Species.IRON_VALIANT,
|
||||
Species.IRON_LEAVES,
|
||||
Species.IRON_BOULDER,
|
||||
Species.IRON_CROWN,
|
||||
SpeciesId.GREAT_TUSK,
|
||||
SpeciesId.SCREAM_TAIL,
|
||||
SpeciesId.BRUTE_BONNET,
|
||||
SpeciesId.FLUTTER_MANE,
|
||||
SpeciesId.SLITHER_WING,
|
||||
SpeciesId.SANDY_SHOCKS,
|
||||
SpeciesId.ROARING_MOON,
|
||||
SpeciesId.WALKING_WAKE,
|
||||
SpeciesId.GOUGING_FIRE,
|
||||
SpeciesId.RAGING_BOLT,
|
||||
SpeciesId.IRON_TREADS,
|
||||
SpeciesId.IRON_BUNDLE,
|
||||
SpeciesId.IRON_HANDS,
|
||||
SpeciesId.IRON_JUGULIS,
|
||||
SpeciesId.IRON_MOTH,
|
||||
SpeciesId.IRON_THORNS,
|
||||
SpeciesId.IRON_VALIANT,
|
||||
SpeciesId.IRON_LEAVES,
|
||||
SpeciesId.IRON_BOULDER,
|
||||
SpeciesId.IRON_CROWN,
|
||||
];
|
||||
|
||||
/**
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
||||
import { MoveId } from "#enums/move-id";
|
||||
import { Species } from "#app/enums/species";
|
||||
import { SpeciesId } from "#app/enums/species";
|
||||
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
|
||||
import { globalScene } from "#app/global-scene";
|
||||
import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter";
|
||||
@ -129,7 +129,7 @@ export const LostAtSeaEncounter: MysteryEncounter = MysteryEncounterBuilder.with
|
||||
* Generic handler for using a guiding pokemon to guide you back.
|
||||
*/
|
||||
function handlePokemonGuidingYouPhase() {
|
||||
const laprasSpecies = getPokemonSpecies(Species.LAPRAS);
|
||||
const laprasSpecies = getPokemonSpecies(SpeciesId.LAPRAS);
|
||||
const { mysteryEncounter } = globalScene.currentBattle;
|
||||
|
||||
if (mysteryEncounter?.selectedOption?.primaryPokemon?.id) {
|
||||
|
@ -23,7 +23,7 @@ import { MoveId } from "#enums/move-id";
|
||||
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
|
||||
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
|
||||
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
|
||||
/** i18n namespace for encounter */
|
||||
const namespace = "mysteryEncounters/mysteriousChest";
|
||||
@ -86,7 +86,7 @@ export const MysteriousChestEncounter: MysteryEncounter = MysteryEncounterBuilde
|
||||
disableSwitch: true,
|
||||
pokemonConfigs: [
|
||||
{
|
||||
species: getPokemonSpecies(Species.GIMMIGHOUL),
|
||||
species: getPokemonSpecies(SpeciesId.GIMMIGHOUL),
|
||||
formIndex: 0,
|
||||
isBoss: true,
|
||||
moveSet: [MoveId.NASTY_PLOT, MoveId.SHADOW_BALL, MoveId.POWER_GEM, MoveId.THIEF],
|
||||
@ -96,7 +96,7 @@ export const MysteriousChestEncounter: MysteryEncounter = MysteryEncounterBuilde
|
||||
|
||||
encounter.enemyPartyConfigs = [config];
|
||||
|
||||
encounter.setDialogueToken("gimmighoulName", getPokemonSpecies(Species.GIMMIGHOUL).getName());
|
||||
encounter.setDialogueToken("gimmighoulName", getPokemonSpecies(SpeciesId.GIMMIGHOUL).getName());
|
||||
encounter.setDialogueToken("trapPercent", TRAP_PERCENT.toString());
|
||||
encounter.setDialogueToken("commonPercent", COMMON_REWARDS_PERCENT.toString());
|
||||
encounter.setDialogueToken("ultraPercent", ULTRA_REWARDS_PERCENT.toString());
|
||||
|
@ -10,7 +10,7 @@ import type Pokemon from "#app/field/pokemon";
|
||||
import { modifierTypes } from "#app/modifier/modifier-type";
|
||||
import { randSeedInt } from "#app/utils/common";
|
||||
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import { globalScene } from "#app/global-scene";
|
||||
import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter";
|
||||
import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter";
|
||||
@ -49,7 +49,7 @@ export const ShadyVitaminDealerEncounter: MysteryEncounter = MysteryEncounterBui
|
||||
.withPrimaryPokemonHealthRatioRequirement([0.51, 1]) // At least 1 Pokemon must have above half HP
|
||||
.withIntroSpriteConfigs([
|
||||
{
|
||||
spriteKey: Species.KROOKODILE.toString(),
|
||||
spriteKey: SpeciesId.KROOKODILE.toString(),
|
||||
fileRoot: "pokemon",
|
||||
hasShadow: true,
|
||||
repeat: true,
|
||||
|
@ -2,7 +2,7 @@ import { STEALING_MOVES } from "#app/data/mystery-encounters/requirements/requir
|
||||
import type { PokemonHeldItemModifierType } from "#app/modifier/modifier-type";
|
||||
import { modifierTypes } from "#app/modifier/modifier-type";
|
||||
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import { globalScene } from "#app/global-scene";
|
||||
import { StatusEffect } from "#enums/status-effect";
|
||||
import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter";
|
||||
@ -50,7 +50,7 @@ export const SlumberingSnorlaxEncounter: MysteryEncounter = MysteryEncounterBuil
|
||||
.withFleeAllowed(false)
|
||||
.withIntroSpriteConfigs([
|
||||
{
|
||||
spriteKey: Species.SNORLAX.toString(),
|
||||
spriteKey: SpeciesId.SNORLAX.toString(),
|
||||
fileRoot: "pokemon",
|
||||
hasShadow: true,
|
||||
tint: 0.25,
|
||||
@ -69,7 +69,7 @@ export const SlumberingSnorlaxEncounter: MysteryEncounter = MysteryEncounterBuil
|
||||
console.log(encounter);
|
||||
|
||||
// Calculate boss mon
|
||||
const bossSpecies = getPokemonSpecies(Species.SNORLAX);
|
||||
const bossSpecies = getPokemonSpecies(SpeciesId.SNORLAX);
|
||||
const pokemonConfig: EnemyPokemonConfig = {
|
||||
species: bossSpecies,
|
||||
isBoss: true,
|
||||
@ -108,7 +108,7 @@ export const SlumberingSnorlaxEncounter: MysteryEncounter = MysteryEncounterBuil
|
||||
// Load animations/sfx for Snorlax fight start moves
|
||||
loadCustomMovesForEncounter([MoveId.SNORE]);
|
||||
|
||||
encounter.setDialogueToken("snorlaxName", getPokemonSpecies(Species.SNORLAX).getName());
|
||||
encounter.setDialogueToken("snorlaxName", getPokemonSpecies(SpeciesId.SNORLAX).getName());
|
||||
|
||||
return true;
|
||||
})
|
||||
@ -181,7 +181,7 @@ export const SlumberingSnorlaxEncounter: MysteryEncounter = MysteryEncounterBuil
|
||||
fillRemaining: false,
|
||||
});
|
||||
// Snorlax exp to Pokemon that did the stealing
|
||||
setEncounterExp(instance.primaryPokemon!.id, getPokemonSpecies(Species.SNORLAX).baseExp);
|
||||
setEncounterExp(instance.primaryPokemon!.id, getPokemonSpecies(SpeciesId.SNORLAX).baseExp);
|
||||
leaveEncounterWithoutBattle();
|
||||
})
|
||||
.build(),
|
||||
|
@ -14,7 +14,7 @@ import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
|
||||
import { Biome } from "#enums/biome";
|
||||
import { TrainerType } from "#enums/trainer-type";
|
||||
import i18next from "i18next";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
||||
import { speciesStarterCosts } from "#app/data/balance/starters";
|
||||
import { Nature } from "#enums/nature";
|
||||
@ -42,75 +42,75 @@ const FINAL_STAGE_EVOLUTION_WAVE = 75;
|
||||
const FRIENDSHIP_ADDED = 20;
|
||||
|
||||
class BreederSpeciesEvolution {
|
||||
species: Species;
|
||||
species: SpeciesId;
|
||||
evolution: number;
|
||||
|
||||
constructor(species: Species, evolution: number) {
|
||||
constructor(species: SpeciesId, evolution: number) {
|
||||
this.species = species;
|
||||
this.evolution = evolution;
|
||||
}
|
||||
}
|
||||
|
||||
const POOL_1_POKEMON: (Species | BreederSpeciesEvolution)[][] = [
|
||||
[Species.MUNCHLAX, new BreederSpeciesEvolution(Species.SNORLAX, SECOND_STAGE_EVOLUTION_WAVE)],
|
||||
const POOL_1_POKEMON: (SpeciesId | BreederSpeciesEvolution)[][] = [
|
||||
[SpeciesId.MUNCHLAX, new BreederSpeciesEvolution(SpeciesId.SNORLAX, SECOND_STAGE_EVOLUTION_WAVE)],
|
||||
[
|
||||
Species.HAPPINY,
|
||||
new BreederSpeciesEvolution(Species.CHANSEY, FIRST_STAGE_EVOLUTION_WAVE),
|
||||
new BreederSpeciesEvolution(Species.BLISSEY, FINAL_STAGE_EVOLUTION_WAVE),
|
||||
SpeciesId.HAPPINY,
|
||||
new BreederSpeciesEvolution(SpeciesId.CHANSEY, FIRST_STAGE_EVOLUTION_WAVE),
|
||||
new BreederSpeciesEvolution(SpeciesId.BLISSEY, FINAL_STAGE_EVOLUTION_WAVE),
|
||||
],
|
||||
[
|
||||
Species.MAGBY,
|
||||
new BreederSpeciesEvolution(Species.MAGMAR, FIRST_STAGE_EVOLUTION_WAVE),
|
||||
new BreederSpeciesEvolution(Species.MAGMORTAR, FINAL_STAGE_EVOLUTION_WAVE),
|
||||
SpeciesId.MAGBY,
|
||||
new BreederSpeciesEvolution(SpeciesId.MAGMAR, FIRST_STAGE_EVOLUTION_WAVE),
|
||||
new BreederSpeciesEvolution(SpeciesId.MAGMORTAR, FINAL_STAGE_EVOLUTION_WAVE),
|
||||
],
|
||||
[
|
||||
Species.ELEKID,
|
||||
new BreederSpeciesEvolution(Species.ELECTABUZZ, FIRST_STAGE_EVOLUTION_WAVE),
|
||||
new BreederSpeciesEvolution(Species.ELECTIVIRE, FINAL_STAGE_EVOLUTION_WAVE),
|
||||
SpeciesId.ELEKID,
|
||||
new BreederSpeciesEvolution(SpeciesId.ELECTABUZZ, FIRST_STAGE_EVOLUTION_WAVE),
|
||||
new BreederSpeciesEvolution(SpeciesId.ELECTIVIRE, FINAL_STAGE_EVOLUTION_WAVE),
|
||||
],
|
||||
[Species.RIOLU, new BreederSpeciesEvolution(Species.LUCARIO, SECOND_STAGE_EVOLUTION_WAVE)],
|
||||
[SpeciesId.RIOLU, new BreederSpeciesEvolution(SpeciesId.LUCARIO, SECOND_STAGE_EVOLUTION_WAVE)],
|
||||
[
|
||||
Species.BUDEW,
|
||||
new BreederSpeciesEvolution(Species.ROSELIA, FIRST_STAGE_EVOLUTION_WAVE),
|
||||
new BreederSpeciesEvolution(Species.ROSERADE, FINAL_STAGE_EVOLUTION_WAVE),
|
||||
SpeciesId.BUDEW,
|
||||
new BreederSpeciesEvolution(SpeciesId.ROSELIA, FIRST_STAGE_EVOLUTION_WAVE),
|
||||
new BreederSpeciesEvolution(SpeciesId.ROSERADE, FINAL_STAGE_EVOLUTION_WAVE),
|
||||
],
|
||||
[Species.TOXEL, new BreederSpeciesEvolution(Species.TOXTRICITY, SECOND_STAGE_EVOLUTION_WAVE)],
|
||||
[SpeciesId.TOXEL, new BreederSpeciesEvolution(SpeciesId.TOXTRICITY, SECOND_STAGE_EVOLUTION_WAVE)],
|
||||
[
|
||||
Species.MIME_JR,
|
||||
new BreederSpeciesEvolution(Species.GALAR_MR_MIME, FIRST_STAGE_EVOLUTION_WAVE),
|
||||
new BreederSpeciesEvolution(Species.MR_RIME, FINAL_STAGE_EVOLUTION_WAVE),
|
||||
SpeciesId.MIME_JR,
|
||||
new BreederSpeciesEvolution(SpeciesId.GALAR_MR_MIME, FIRST_STAGE_EVOLUTION_WAVE),
|
||||
new BreederSpeciesEvolution(SpeciesId.MR_RIME, FINAL_STAGE_EVOLUTION_WAVE),
|
||||
],
|
||||
];
|
||||
|
||||
const POOL_2_POKEMON: (Species | BreederSpeciesEvolution)[][] = [
|
||||
const POOL_2_POKEMON: (SpeciesId | BreederSpeciesEvolution)[][] = [
|
||||
[
|
||||
Species.PICHU,
|
||||
new BreederSpeciesEvolution(Species.PIKACHU, FIRST_STAGE_EVOLUTION_WAVE),
|
||||
new BreederSpeciesEvolution(Species.RAICHU, FINAL_STAGE_EVOLUTION_WAVE),
|
||||
SpeciesId.PICHU,
|
||||
new BreederSpeciesEvolution(SpeciesId.PIKACHU, FIRST_STAGE_EVOLUTION_WAVE),
|
||||
new BreederSpeciesEvolution(SpeciesId.RAICHU, FINAL_STAGE_EVOLUTION_WAVE),
|
||||
],
|
||||
[
|
||||
Species.PICHU,
|
||||
new BreederSpeciesEvolution(Species.PIKACHU, FIRST_STAGE_EVOLUTION_WAVE),
|
||||
new BreederSpeciesEvolution(Species.ALOLA_RAICHU, FINAL_STAGE_EVOLUTION_WAVE),
|
||||
SpeciesId.PICHU,
|
||||
new BreederSpeciesEvolution(SpeciesId.PIKACHU, FIRST_STAGE_EVOLUTION_WAVE),
|
||||
new BreederSpeciesEvolution(SpeciesId.ALOLA_RAICHU, FINAL_STAGE_EVOLUTION_WAVE),
|
||||
],
|
||||
[Species.SMOOCHUM, new BreederSpeciesEvolution(Species.JYNX, SECOND_STAGE_EVOLUTION_WAVE)],
|
||||
[Species.TYROGUE, new BreederSpeciesEvolution(Species.HITMONLEE, SECOND_STAGE_EVOLUTION_WAVE)],
|
||||
[Species.TYROGUE, new BreederSpeciesEvolution(Species.HITMONCHAN, SECOND_STAGE_EVOLUTION_WAVE)],
|
||||
[Species.TYROGUE, new BreederSpeciesEvolution(Species.HITMONTOP, SECOND_STAGE_EVOLUTION_WAVE)],
|
||||
[SpeciesId.SMOOCHUM, new BreederSpeciesEvolution(SpeciesId.JYNX, SECOND_STAGE_EVOLUTION_WAVE)],
|
||||
[SpeciesId.TYROGUE, new BreederSpeciesEvolution(SpeciesId.HITMONLEE, SECOND_STAGE_EVOLUTION_WAVE)],
|
||||
[SpeciesId.TYROGUE, new BreederSpeciesEvolution(SpeciesId.HITMONCHAN, SECOND_STAGE_EVOLUTION_WAVE)],
|
||||
[SpeciesId.TYROGUE, new BreederSpeciesEvolution(SpeciesId.HITMONTOP, SECOND_STAGE_EVOLUTION_WAVE)],
|
||||
[
|
||||
Species.IGGLYBUFF,
|
||||
new BreederSpeciesEvolution(Species.JIGGLYPUFF, FIRST_STAGE_EVOLUTION_WAVE),
|
||||
new BreederSpeciesEvolution(Species.WIGGLYTUFF, FINAL_STAGE_EVOLUTION_WAVE),
|
||||
SpeciesId.IGGLYBUFF,
|
||||
new BreederSpeciesEvolution(SpeciesId.JIGGLYPUFF, FIRST_STAGE_EVOLUTION_WAVE),
|
||||
new BreederSpeciesEvolution(SpeciesId.WIGGLYTUFF, FINAL_STAGE_EVOLUTION_WAVE),
|
||||
],
|
||||
[
|
||||
Species.AZURILL,
|
||||
new BreederSpeciesEvolution(Species.MARILL, FIRST_STAGE_EVOLUTION_WAVE),
|
||||
new BreederSpeciesEvolution(Species.AZUMARILL, FINAL_STAGE_EVOLUTION_WAVE),
|
||||
SpeciesId.AZURILL,
|
||||
new BreederSpeciesEvolution(SpeciesId.MARILL, FIRST_STAGE_EVOLUTION_WAVE),
|
||||
new BreederSpeciesEvolution(SpeciesId.AZUMARILL, FINAL_STAGE_EVOLUTION_WAVE),
|
||||
],
|
||||
[Species.WYNAUT, new BreederSpeciesEvolution(Species.WOBBUFFET, SECOND_STAGE_EVOLUTION_WAVE)],
|
||||
[Species.CHINGLING, new BreederSpeciesEvolution(Species.CHIMECHO, SECOND_STAGE_EVOLUTION_WAVE)],
|
||||
[Species.BONSLY, new BreederSpeciesEvolution(Species.SUDOWOODO, SECOND_STAGE_EVOLUTION_WAVE)],
|
||||
[Species.MANTYKE, new BreederSpeciesEvolution(Species.MANTINE, SECOND_STAGE_EVOLUTION_WAVE)],
|
||||
[SpeciesId.WYNAUT, new BreederSpeciesEvolution(SpeciesId.WOBBUFFET, SECOND_STAGE_EVOLUTION_WAVE)],
|
||||
[SpeciesId.CHINGLING, new BreederSpeciesEvolution(SpeciesId.CHIMECHO, SECOND_STAGE_EVOLUTION_WAVE)],
|
||||
[SpeciesId.BONSLY, new BreederSpeciesEvolution(SpeciesId.SUDOWOODO, SECOND_STAGE_EVOLUTION_WAVE)],
|
||||
[SpeciesId.MANTYKE, new BreederSpeciesEvolution(SpeciesId.MANTINE, SECOND_STAGE_EVOLUTION_WAVE)],
|
||||
];
|
||||
|
||||
/**
|
||||
@ -144,10 +144,10 @@ export const TheExpertPokemonBreederEncounter: MysteryEncounter = MysteryEncount
|
||||
|
||||
const cleffaSpecies =
|
||||
waveIndex < FIRST_STAGE_EVOLUTION_WAVE
|
||||
? Species.CLEFFA
|
||||
? SpeciesId.CLEFFA
|
||||
: waveIndex < FINAL_STAGE_EVOLUTION_WAVE
|
||||
? Species.CLEFAIRY
|
||||
: Species.CLEFABLE;
|
||||
? SpeciesId.CLEFAIRY
|
||||
: SpeciesId.CLEFABLE;
|
||||
encounter.spriteConfigs = [
|
||||
{
|
||||
spriteKey: cleffaSpecies.toString(),
|
||||
@ -466,10 +466,10 @@ function getPartyConfig(): EnemyPartyConfig {
|
||||
// First mon is *always* this special cleffa
|
||||
const cleffaSpecies =
|
||||
waveIndex < FIRST_STAGE_EVOLUTION_WAVE
|
||||
? Species.CLEFFA
|
||||
? SpeciesId.CLEFFA
|
||||
: waveIndex < FINAL_STAGE_EVOLUTION_WAVE
|
||||
? Species.CLEFAIRY
|
||||
: Species.CLEFABLE;
|
||||
? SpeciesId.CLEFAIRY
|
||||
: SpeciesId.CLEFABLE;
|
||||
const baseConfig: EnemyPartyConfig = {
|
||||
trainerType: TrainerType.EXPERT_POKEMON_BREEDER,
|
||||
pokemonConfigs: [
|
||||
@ -542,7 +542,7 @@ function getPartyConfig(): EnemyPartyConfig {
|
||||
return baseConfig;
|
||||
}
|
||||
|
||||
function getSpeciesFromPool(speciesPool: (Species | BreederSpeciesEvolution)[][], waveIndex: number): Species {
|
||||
function getSpeciesFromPool(speciesPool: (SpeciesId | BreederSpeciesEvolution)[][], waveIndex: number): SpeciesId {
|
||||
const poolCopy = randSeedShuffle(speciesPool.slice(0));
|
||||
const speciesEvolutions = poolCopy.pop()!.slice(0);
|
||||
let speciesObject = speciesEvolutions.pop()!;
|
||||
|
@ -17,7 +17,7 @@ import {
|
||||
import type PokemonSpecies from "#app/data/pokemon-species";
|
||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
||||
import { speciesStarterCosts } from "#app/data/balance/starters";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import { PokeballType } from "#enums/pokeball";
|
||||
import type { EnemyPokemon } from "#app/field/pokemon";
|
||||
import { PlayerPokemon } from "#app/field/pokemon";
|
||||
@ -114,7 +114,7 @@ export const ThePokemonSalesmanEncounter: MysteryEncounter = MysteryEncounterBui
|
||||
validEventEncounters.length === 0)
|
||||
) {
|
||||
// If you roll 1%, give shiny Magikarp with random variant
|
||||
species = getPokemonSpecies(Species.MAGIKARP);
|
||||
species = getPokemonSpecies(SpeciesId.MAGIKARP);
|
||||
pokemon = new PlayerPokemon(species, 5, 2, undefined, undefined, true);
|
||||
} else if (
|
||||
validEventEncounters.length > 0 &&
|
||||
@ -151,7 +151,7 @@ export const ThePokemonSalesmanEncounter: MysteryEncounter = MysteryEncounterBui
|
||||
pokemon.trySetShinySeed();
|
||||
} else {
|
||||
// If there's, and this would never happen, no eligible event encounters with a hidden ability, just do Magikarp
|
||||
species = getPokemonSpecies(Species.MAGIKARP);
|
||||
species = getPokemonSpecies(SpeciesId.MAGIKARP);
|
||||
pokemon = new PlayerPokemon(species, 5, 2, undefined, undefined, true);
|
||||
}
|
||||
}
|
||||
|
@ -14,7 +14,7 @@ import { globalScene } from "#app/global-scene";
|
||||
import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter";
|
||||
import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter";
|
||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import { Nature } from "#enums/nature";
|
||||
import type Pokemon from "#app/field/pokemon";
|
||||
import { PokemonMove } from "#app/field/pokemon";
|
||||
@ -64,7 +64,7 @@ export const TheStrongStuffEncounter: MysteryEncounter = MysteryEncounterBuilder
|
||||
disableAnimation: true,
|
||||
},
|
||||
{
|
||||
spriteKey: Species.SHUCKLE.toString(),
|
||||
spriteKey: SpeciesId.SHUCKLE.toString(),
|
||||
fileRoot: "pokemon",
|
||||
hasShadow: true,
|
||||
repeat: true,
|
||||
@ -88,7 +88,7 @@ export const TheStrongStuffEncounter: MysteryEncounter = MysteryEncounterBuilder
|
||||
disableSwitch: true,
|
||||
pokemonConfigs: [
|
||||
{
|
||||
species: getPokemonSpecies(Species.SHUCKLE),
|
||||
species: getPokemonSpecies(SpeciesId.SHUCKLE),
|
||||
isBoss: true,
|
||||
bossSegments: 5,
|
||||
shiny: false, // Shiny lock because shiny is rolled only if the battle option is picked
|
||||
@ -128,7 +128,7 @@ export const TheStrongStuffEncounter: MysteryEncounter = MysteryEncounterBuilder
|
||||
|
||||
loadCustomMovesForEncounter([MoveId.GASTRO_ACID, MoveId.STEALTH_ROCK]);
|
||||
|
||||
encounter.setDialogueToken("shuckleName", getPokemonSpecies(Species.SHUCKLE).getName());
|
||||
encounter.setDialogueToken("shuckleName", getPokemonSpecies(SpeciesId.SHUCKLE).getName());
|
||||
|
||||
return true;
|
||||
})
|
||||
|
@ -15,7 +15,7 @@ import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounte
|
||||
import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter";
|
||||
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
|
||||
import { TrainerType } from "#enums/trainer-type";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import { AbilityId } from "#enums/ability-id";
|
||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
||||
import { MoveId } from "#enums/move-id";
|
||||
@ -215,7 +215,7 @@ function endTrainerBattleAndShowDialogue(): Promise<void> {
|
||||
// Only trigger form change when Eiscue is in Noice form
|
||||
// Hardcoded Eiscue for now in case it is fused with another pokemon
|
||||
if (
|
||||
pokemon.species.speciesId === Species.EISCUE &&
|
||||
pokemon.species.speciesId === SpeciesId.EISCUE &&
|
||||
pokemon.hasAbility(AbilityId.ICE_FACE) &&
|
||||
pokemon.formIndex === 1
|
||||
) {
|
||||
@ -256,7 +256,7 @@ function getVictorTrainerConfig(): EnemyPartyConfig {
|
||||
trainerType: TrainerType.VICTOR,
|
||||
pokemonConfigs: [
|
||||
{
|
||||
species: getPokemonSpecies(Species.SWELLOW),
|
||||
species: getPokemonSpecies(SpeciesId.SWELLOW),
|
||||
isBoss: false,
|
||||
abilityIndex: 0, // Guts
|
||||
nature: Nature.ADAMANT,
|
||||
@ -274,7 +274,7 @@ function getVictorTrainerConfig(): EnemyPartyConfig {
|
||||
],
|
||||
},
|
||||
{
|
||||
species: getPokemonSpecies(Species.OBSTAGOON),
|
||||
species: getPokemonSpecies(SpeciesId.OBSTAGOON),
|
||||
isBoss: false,
|
||||
abilityIndex: 1, // Guts
|
||||
nature: Nature.ADAMANT,
|
||||
@ -300,7 +300,7 @@ function getVictoriaTrainerConfig(): EnemyPartyConfig {
|
||||
trainerType: TrainerType.VICTORIA,
|
||||
pokemonConfigs: [
|
||||
{
|
||||
species: getPokemonSpecies(Species.ROSERADE),
|
||||
species: getPokemonSpecies(SpeciesId.ROSERADE),
|
||||
isBoss: false,
|
||||
abilityIndex: 0, // Natural Cure
|
||||
nature: Nature.CALM,
|
||||
@ -318,7 +318,7 @@ function getVictoriaTrainerConfig(): EnemyPartyConfig {
|
||||
],
|
||||
},
|
||||
{
|
||||
species: getPokemonSpecies(Species.GARDEVOIR),
|
||||
species: getPokemonSpecies(SpeciesId.GARDEVOIR),
|
||||
isBoss: false,
|
||||
formIndex: 1,
|
||||
nature: Nature.TIMID,
|
||||
@ -349,7 +349,7 @@ function getViviTrainerConfig(): EnemyPartyConfig {
|
||||
trainerType: TrainerType.VIVI,
|
||||
pokemonConfigs: [
|
||||
{
|
||||
species: getPokemonSpecies(Species.SEAKING),
|
||||
species: getPokemonSpecies(SpeciesId.SEAKING),
|
||||
isBoss: false,
|
||||
abilityIndex: 3, // Lightning Rod
|
||||
nature: Nature.ADAMANT,
|
||||
@ -368,7 +368,7 @@ function getViviTrainerConfig(): EnemyPartyConfig {
|
||||
],
|
||||
},
|
||||
{
|
||||
species: getPokemonSpecies(Species.BRELOOM),
|
||||
species: getPokemonSpecies(SpeciesId.BRELOOM),
|
||||
isBoss: false,
|
||||
abilityIndex: 1, // Poison Heal
|
||||
nature: Nature.JOLLY,
|
||||
@ -386,7 +386,7 @@ function getViviTrainerConfig(): EnemyPartyConfig {
|
||||
],
|
||||
},
|
||||
{
|
||||
species: getPokemonSpecies(Species.CAMERUPT),
|
||||
species: getPokemonSpecies(SpeciesId.CAMERUPT),
|
||||
isBoss: false,
|
||||
formIndex: 1,
|
||||
nature: Nature.CALM,
|
||||
@ -408,7 +408,7 @@ function getVickyTrainerConfig(): EnemyPartyConfig {
|
||||
trainerType: TrainerType.VICKY,
|
||||
pokemonConfigs: [
|
||||
{
|
||||
species: getPokemonSpecies(Species.MEDICHAM),
|
||||
species: getPokemonSpecies(SpeciesId.MEDICHAM),
|
||||
isBoss: false,
|
||||
formIndex: 1,
|
||||
nature: Nature.IMPISH,
|
||||
@ -429,7 +429,7 @@ function getVitoTrainerConfig(): EnemyPartyConfig {
|
||||
trainerType: TrainerType.VITO,
|
||||
pokemonConfigs: [
|
||||
{
|
||||
species: getPokemonSpecies(Species.HISUI_ELECTRODE),
|
||||
species: getPokemonSpecies(SpeciesId.HISUI_ELECTRODE),
|
||||
isBoss: false,
|
||||
abilityIndex: 0, // Soundproof
|
||||
nature: Nature.MODEST,
|
||||
@ -443,7 +443,7 @@ function getVitoTrainerConfig(): EnemyPartyConfig {
|
||||
],
|
||||
},
|
||||
{
|
||||
species: getPokemonSpecies(Species.SWALOT),
|
||||
species: getPokemonSpecies(SpeciesId.SWALOT),
|
||||
isBoss: false,
|
||||
abilityIndex: 2, // Gluttony
|
||||
nature: Nature.QUIET,
|
||||
@ -496,7 +496,7 @@ function getVitoTrainerConfig(): EnemyPartyConfig {
|
||||
],
|
||||
},
|
||||
{
|
||||
species: getPokemonSpecies(Species.DODRIO),
|
||||
species: getPokemonSpecies(SpeciesId.DODRIO),
|
||||
isBoss: false,
|
||||
abilityIndex: 2, // Tangled Feet
|
||||
nature: Nature.JOLLY,
|
||||
@ -510,7 +510,7 @@ function getVitoTrainerConfig(): EnemyPartyConfig {
|
||||
],
|
||||
},
|
||||
{
|
||||
species: getPokemonSpecies(Species.ALAKAZAM),
|
||||
species: getPokemonSpecies(SpeciesId.ALAKAZAM),
|
||||
isBoss: false,
|
||||
formIndex: 1,
|
||||
nature: Nature.BOLD,
|
||||
@ -524,7 +524,7 @@ function getVitoTrainerConfig(): EnemyPartyConfig {
|
||||
],
|
||||
},
|
||||
{
|
||||
species: getPokemonSpecies(Species.DARMANITAN),
|
||||
species: getPokemonSpecies(SpeciesId.DARMANITAN),
|
||||
isBoss: false,
|
||||
abilityIndex: 0, // Sheer Force
|
||||
nature: Nature.IMPISH,
|
||||
|
@ -16,7 +16,7 @@ import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-en
|
||||
import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option";
|
||||
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
|
||||
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import { HitHealModifier, PokemonHeldItemModifier, TurnHealModifier } from "#app/modifier/modifier";
|
||||
import { applyModifierTypeToPlayerPokemon } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils";
|
||||
import { showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils";
|
||||
@ -51,7 +51,7 @@ export const TrashToTreasureEncounter: MysteryEncounter = MysteryEncounterBuilde
|
||||
.withFleeAllowed(false)
|
||||
.withIntroSpriteConfigs([
|
||||
{
|
||||
spriteKey: Species.GARBODOR.toString() + "-gigantamax",
|
||||
spriteKey: SpeciesId.GARBODOR.toString() + "-gigantamax",
|
||||
fileRoot: "pokemon",
|
||||
hasShadow: false,
|
||||
disableAnimation: true,
|
||||
@ -74,7 +74,7 @@ export const TrashToTreasureEncounter: MysteryEncounter = MysteryEncounterBuilde
|
||||
const encounter = globalScene.currentBattle.mysteryEncounter!;
|
||||
|
||||
// Calculate boss mon (shiny locked)
|
||||
const bossSpecies = getPokemonSpecies(Species.GARBODOR);
|
||||
const bossSpecies = getPokemonSpecies(SpeciesId.GARBODOR);
|
||||
const pokemonConfig: EnemyPokemonConfig = {
|
||||
species: bossSpecies,
|
||||
isBoss: true,
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { PokemonType } from "#enums/pokemon-type";
|
||||
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import { globalScene } from "#app/global-scene";
|
||||
import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter";
|
||||
import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter";
|
||||
@ -49,55 +49,55 @@ const namespace = "mysteryEncounters/weirdDream";
|
||||
|
||||
/** Exclude Ultra Beasts, Paradox, Eternatus, and all legendary/mythical/trio pokemon that are below 570 BST */
|
||||
const EXCLUDED_TRANSFORMATION_SPECIES = [
|
||||
Species.ETERNATUS,
|
||||
SpeciesId.ETERNATUS,
|
||||
/** UBs */
|
||||
Species.NIHILEGO,
|
||||
Species.BUZZWOLE,
|
||||
Species.PHEROMOSA,
|
||||
Species.XURKITREE,
|
||||
Species.CELESTEELA,
|
||||
Species.KARTANA,
|
||||
Species.GUZZLORD,
|
||||
Species.POIPOLE,
|
||||
Species.NAGANADEL,
|
||||
Species.STAKATAKA,
|
||||
Species.BLACEPHALON,
|
||||
SpeciesId.NIHILEGO,
|
||||
SpeciesId.BUZZWOLE,
|
||||
SpeciesId.PHEROMOSA,
|
||||
SpeciesId.XURKITREE,
|
||||
SpeciesId.CELESTEELA,
|
||||
SpeciesId.KARTANA,
|
||||
SpeciesId.GUZZLORD,
|
||||
SpeciesId.POIPOLE,
|
||||
SpeciesId.NAGANADEL,
|
||||
SpeciesId.STAKATAKA,
|
||||
SpeciesId.BLACEPHALON,
|
||||
/** Paradox */
|
||||
Species.GREAT_TUSK,
|
||||
Species.SCREAM_TAIL,
|
||||
Species.BRUTE_BONNET,
|
||||
Species.FLUTTER_MANE,
|
||||
Species.SLITHER_WING,
|
||||
Species.SANDY_SHOCKS,
|
||||
Species.ROARING_MOON,
|
||||
Species.WALKING_WAKE,
|
||||
Species.GOUGING_FIRE,
|
||||
Species.RAGING_BOLT,
|
||||
Species.IRON_TREADS,
|
||||
Species.IRON_BUNDLE,
|
||||
Species.IRON_HANDS,
|
||||
Species.IRON_JUGULIS,
|
||||
Species.IRON_MOTH,
|
||||
Species.IRON_THORNS,
|
||||
Species.IRON_VALIANT,
|
||||
Species.IRON_LEAVES,
|
||||
Species.IRON_BOULDER,
|
||||
Species.IRON_CROWN,
|
||||
SpeciesId.GREAT_TUSK,
|
||||
SpeciesId.SCREAM_TAIL,
|
||||
SpeciesId.BRUTE_BONNET,
|
||||
SpeciesId.FLUTTER_MANE,
|
||||
SpeciesId.SLITHER_WING,
|
||||
SpeciesId.SANDY_SHOCKS,
|
||||
SpeciesId.ROARING_MOON,
|
||||
SpeciesId.WALKING_WAKE,
|
||||
SpeciesId.GOUGING_FIRE,
|
||||
SpeciesId.RAGING_BOLT,
|
||||
SpeciesId.IRON_TREADS,
|
||||
SpeciesId.IRON_BUNDLE,
|
||||
SpeciesId.IRON_HANDS,
|
||||
SpeciesId.IRON_JUGULIS,
|
||||
SpeciesId.IRON_MOTH,
|
||||
SpeciesId.IRON_THORNS,
|
||||
SpeciesId.IRON_VALIANT,
|
||||
SpeciesId.IRON_LEAVES,
|
||||
SpeciesId.IRON_BOULDER,
|
||||
SpeciesId.IRON_CROWN,
|
||||
/** These are banned so they don't appear in the < 570 BST pool */
|
||||
Species.COSMOG,
|
||||
Species.MELTAN,
|
||||
Species.KUBFU,
|
||||
Species.COSMOEM,
|
||||
Species.POIPOLE,
|
||||
Species.TERAPAGOS,
|
||||
Species.TYPE_NULL,
|
||||
Species.CALYREX,
|
||||
Species.NAGANADEL,
|
||||
Species.URSHIFU,
|
||||
Species.OGERPON,
|
||||
Species.OKIDOGI,
|
||||
Species.MUNKIDORI,
|
||||
Species.FEZANDIPITI,
|
||||
SpeciesId.COSMOG,
|
||||
SpeciesId.MELTAN,
|
||||
SpeciesId.KUBFU,
|
||||
SpeciesId.COSMOEM,
|
||||
SpeciesId.POIPOLE,
|
||||
SpeciesId.TERAPAGOS,
|
||||
SpeciesId.TYPE_NULL,
|
||||
SpeciesId.CALYREX,
|
||||
SpeciesId.NAGANADEL,
|
||||
SpeciesId.URSHIFU,
|
||||
SpeciesId.OGERPON,
|
||||
SpeciesId.OKIDOGI,
|
||||
SpeciesId.MUNKIDORI,
|
||||
SpeciesId.FEZANDIPITI,
|
||||
];
|
||||
|
||||
const SUPER_LEGENDARY_BST_THRESHOLD = 600;
|
||||
@ -500,7 +500,7 @@ async function doNewTeamPostProcess(transformations: PokemonTransformation[]) {
|
||||
async function postProcessTransformedPokemon(
|
||||
previousPokemon: PlayerPokemon,
|
||||
newPokemon: PlayerPokemon,
|
||||
speciesRootForm: Species,
|
||||
speciesRootForm: SpeciesId,
|
||||
forBattle = false,
|
||||
): Promise<boolean> {
|
||||
let isNewStarter = false;
|
||||
@ -768,7 +768,7 @@ function doSideBySideTransformations(transformations: PokemonTransformation[]) {
|
||||
*/
|
||||
async function addEggMoveToNewPokemonMoveset(
|
||||
newPokemon: PlayerPokemon,
|
||||
speciesRootForm: Species,
|
||||
speciesRootForm: SpeciesId,
|
||||
forBattle = false,
|
||||
): Promise<number | null> {
|
||||
let eggMoveIndex: null | number = null;
|
||||
|
@ -13,7 +13,7 @@ import { isNullOrUndefined } from "#app/utils/common";
|
||||
import type { AbilityId } from "#enums/ability-id";
|
||||
import { MoveId } from "#enums/move-id";
|
||||
import type { MysteryEncounterType } from "#enums/mystery-encounter-type";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import { SpeciesFormKey } from "#enums/species-form-key";
|
||||
import { TimeOfDay } from "#enums/time-of-day";
|
||||
|
||||
@ -424,11 +424,11 @@ export class MoneyRequirement extends EncounterSceneRequirement {
|
||||
}
|
||||
|
||||
export class SpeciesRequirement extends EncounterPokemonRequirement {
|
||||
requiredSpecies: Species[];
|
||||
requiredSpecies: SpeciesId[];
|
||||
minNumberOfPokemon: number;
|
||||
invertQuery: boolean;
|
||||
|
||||
constructor(species: Species | Species[], minNumberOfPokemon = 1, invertQuery = false) {
|
||||
constructor(species: SpeciesId | SpeciesId[], minNumberOfPokemon = 1, invertQuery = false) {
|
||||
super();
|
||||
this.minNumberOfPokemon = minNumberOfPokemon;
|
||||
this.invertQuery = invertQuery;
|
||||
@ -457,7 +457,7 @@ export class SpeciesRequirement extends EncounterPokemonRequirement {
|
||||
|
||||
override getDialogueToken(pokemon?: PlayerPokemon): [string, string] {
|
||||
if (pokemon?.species.speciesId && this.requiredSpecies.includes(pokemon.species.speciesId)) {
|
||||
return ["species", Species[pokemon.species.speciesId]];
|
||||
return ["species", SpeciesId[pokemon.species.speciesId]];
|
||||
}
|
||||
return ["species", ""];
|
||||
}
|
||||
|
@ -17,7 +17,7 @@ import { achvs } from "#app/system/achv";
|
||||
import { UiMode } from "#enums/ui-mode";
|
||||
import type { PartyOption } from "#app/ui/party-ui-handler";
|
||||
import { PartyUiMode } from "#app/ui/party-ui-handler";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import type { PokemonType } from "#enums/pokemon-type";
|
||||
import type PokemonSpecies from "#app/data/pokemon-species";
|
||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
||||
@ -51,7 +51,7 @@ export const STANDARD_ENCOUNTER_BOOSTED_LEVEL_MODIFIER = 1;
|
||||
* @param variant
|
||||
*/
|
||||
export function getSpriteKeysFromSpecies(
|
||||
species: Species,
|
||||
species: SpeciesId,
|
||||
female?: boolean,
|
||||
formIndex?: number,
|
||||
shiny?: boolean,
|
||||
@ -247,17 +247,17 @@ export function getHighestStatTotalPlayerPokemon(isAllowed = false, isFainted =
|
||||
*/
|
||||
export function getRandomSpeciesByStarterCost(
|
||||
starterTiers: number | [number, number],
|
||||
excludedSpecies?: Species[],
|
||||
excludedSpecies?: SpeciesId[],
|
||||
types?: PokemonType[],
|
||||
allowSubLegendary = true,
|
||||
allowLegendary = true,
|
||||
allowMythical = true,
|
||||
): Species {
|
||||
): SpeciesId {
|
||||
let min = Array.isArray(starterTiers) ? starterTiers[0] : starterTiers;
|
||||
let max = Array.isArray(starterTiers) ? starterTiers[1] : starterTiers;
|
||||
|
||||
let filteredSpecies: [PokemonSpecies, number][] = Object.keys(speciesStarterCosts)
|
||||
.map(s => [Number.parseInt(s) as Species, speciesStarterCosts[s] as number])
|
||||
.map(s => [Number.parseInt(s) as SpeciesId, speciesStarterCosts[s] as number])
|
||||
.filter(s => {
|
||||
const pokemonSpecies = getPokemonSpecies(s[0]);
|
||||
return (
|
||||
@ -294,7 +294,7 @@ export function getRandomSpeciesByStarterCost(
|
||||
return Phaser.Math.RND.shuffle(tryFilterStarterTiers)[index][0].speciesId;
|
||||
}
|
||||
|
||||
return Species.BULBASAUR;
|
||||
return SpeciesId.BULBASAUR;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -903,34 +903,34 @@ export function doPlayerFlee(pokemon: EnemyPokemon): Promise<void> {
|
||||
/**
|
||||
* Bug Species and their corresponding weights
|
||||
*/
|
||||
const GOLDEN_BUG_NET_SPECIES_POOL: [Species, number][] = [
|
||||
[Species.SCYTHER, 40],
|
||||
[Species.SCIZOR, 40],
|
||||
[Species.KLEAVOR, 40],
|
||||
[Species.PINSIR, 40],
|
||||
[Species.HERACROSS, 40],
|
||||
[Species.YANMA, 40],
|
||||
[Species.YANMEGA, 40],
|
||||
[Species.SHUCKLE, 40],
|
||||
[Species.ANORITH, 40],
|
||||
[Species.ARMALDO, 40],
|
||||
[Species.ESCAVALIER, 40],
|
||||
[Species.ACCELGOR, 40],
|
||||
[Species.JOLTIK, 40],
|
||||
[Species.GALVANTULA, 40],
|
||||
[Species.DURANT, 40],
|
||||
[Species.LARVESTA, 40],
|
||||
[Species.VOLCARONA, 40],
|
||||
[Species.DEWPIDER, 40],
|
||||
[Species.ARAQUANID, 40],
|
||||
[Species.WIMPOD, 40],
|
||||
[Species.GOLISOPOD, 40],
|
||||
[Species.SIZZLIPEDE, 40],
|
||||
[Species.CENTISKORCH, 40],
|
||||
[Species.NYMBLE, 40],
|
||||
[Species.LOKIX, 40],
|
||||
[Species.BUZZWOLE, 1],
|
||||
[Species.PHEROMOSA, 1],
|
||||
const GOLDEN_BUG_NET_SPECIES_POOL: [SpeciesId, number][] = [
|
||||
[SpeciesId.SCYTHER, 40],
|
||||
[SpeciesId.SCIZOR, 40],
|
||||
[SpeciesId.KLEAVOR, 40],
|
||||
[SpeciesId.PINSIR, 40],
|
||||
[SpeciesId.HERACROSS, 40],
|
||||
[SpeciesId.YANMA, 40],
|
||||
[SpeciesId.YANMEGA, 40],
|
||||
[SpeciesId.SHUCKLE, 40],
|
||||
[SpeciesId.ANORITH, 40],
|
||||
[SpeciesId.ARMALDO, 40],
|
||||
[SpeciesId.ESCAVALIER, 40],
|
||||
[SpeciesId.ACCELGOR, 40],
|
||||
[SpeciesId.JOLTIK, 40],
|
||||
[SpeciesId.GALVANTULA, 40],
|
||||
[SpeciesId.DURANT, 40],
|
||||
[SpeciesId.LARVESTA, 40],
|
||||
[SpeciesId.VOLCARONA, 40],
|
||||
[SpeciesId.DEWPIDER, 40],
|
||||
[SpeciesId.ARAQUANID, 40],
|
||||
[SpeciesId.WIMPOD, 40],
|
||||
[SpeciesId.GOLISOPOD, 40],
|
||||
[SpeciesId.SIZZLIPEDE, 40],
|
||||
[SpeciesId.CENTISKORCH, 40],
|
||||
[SpeciesId.NYMBLE, 40],
|
||||
[SpeciesId.LOKIX, 40],
|
||||
[SpeciesId.BUZZWOLE, 1],
|
||||
[SpeciesId.PHEROMOSA, 1],
|
||||
];
|
||||
|
||||
/**
|
||||
@ -951,7 +951,7 @@ export function getGoldenBugNetSpecies(level: number): PokemonSpecies {
|
||||
}
|
||||
|
||||
// Defaults to Scyther
|
||||
return getPokemonSpecies(Species.SCYTHER);
|
||||
return getPokemonSpecies(SpeciesId.SCYTHER);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -6,7 +6,7 @@ import { MoveCategory } from "#enums/MoveCategory";
|
||||
import type { Constructor, nil } from "#app/utils/common";
|
||||
import { AbilityId } from "#enums/ability-id";
|
||||
import { MoveId } from "#enums/move-id";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import type { TimeOfDay } from "#enums/time-of-day";
|
||||
import { getPokemonNameWithAffix } from "#app/messages";
|
||||
import i18next from "i18next";
|
||||
@ -139,7 +139,7 @@ export type SpeciesFormChangeConditionPredicate = (p: Pokemon) => boolean;
|
||||
export type SpeciesFormChangeConditionEnforceFunc = (p: Pokemon) => void;
|
||||
|
||||
export class SpeciesFormChange {
|
||||
public speciesId: Species;
|
||||
public speciesId: SpeciesId;
|
||||
public preFormKey: string;
|
||||
public formKey: string;
|
||||
public trigger: SpeciesFormChangeTrigger;
|
||||
@ -147,7 +147,7 @@ export class SpeciesFormChange {
|
||||
public readonly conditions: SpeciesFormChangeCondition[];
|
||||
|
||||
constructor(
|
||||
speciesId: Species,
|
||||
speciesId: SpeciesId,
|
||||
preFormKey: string,
|
||||
evoFormKey: string,
|
||||
trigger: SpeciesFormChangeTrigger,
|
||||
@ -562,10 +562,10 @@ export function getSpeciesFormChangeMessage(pokemon: Pokemon, formChange: Specie
|
||||
/**
|
||||
* Gives a condition for form changing checking if a species is registered as caught in the player's dex data.
|
||||
* Used for fusion forms such as Kyurem and Necrozma.
|
||||
* @param species {@linkcode Species}
|
||||
* @param species {@linkcode SpeciesId}
|
||||
* @returns A {@linkcode SpeciesFormChangeCondition} checking if that species is registered as caught
|
||||
*/
|
||||
function getSpeciesDependentFormChangeCondition(species: Species): SpeciesFormChangeCondition {
|
||||
function getSpeciesDependentFormChangeCondition(species: SpeciesId): SpeciesFormChangeCondition {
|
||||
return new SpeciesFormChangeCondition(_p => !!globalScene.gameData.dexData[species].caughtAttr);
|
||||
}
|
||||
|
||||
@ -575,472 +575,472 @@ interface PokemonFormChanges {
|
||||
|
||||
// biome-ignore format: manually formatted
|
||||
export const pokemonFormChanges: PokemonFormChanges = {
|
||||
[Species.VENUSAUR]: [
|
||||
new SpeciesFormChange(Species.VENUSAUR, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.VENUSAURITE)),
|
||||
new SpeciesFormChange(Species.VENUSAUR, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
[SpeciesId.VENUSAUR]: [
|
||||
new SpeciesFormChange(SpeciesId.VENUSAUR, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.VENUSAURITE)),
|
||||
new SpeciesFormChange(SpeciesId.VENUSAUR, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[Species.BLASTOISE]: [
|
||||
new SpeciesFormChange(Species.BLASTOISE, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.BLASTOISINITE)),
|
||||
new SpeciesFormChange(Species.BLASTOISE, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
[SpeciesId.BLASTOISE]: [
|
||||
new SpeciesFormChange(SpeciesId.BLASTOISE, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.BLASTOISINITE)),
|
||||
new SpeciesFormChange(SpeciesId.BLASTOISE, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[Species.CHARIZARD]: [
|
||||
new SpeciesFormChange(Species.CHARIZARD, "", SpeciesFormKey.MEGA_X, new SpeciesFormChangeItemTrigger(FormChangeItem.CHARIZARDITE_X)),
|
||||
new SpeciesFormChange(Species.CHARIZARD, "", SpeciesFormKey.MEGA_Y, new SpeciesFormChangeItemTrigger(FormChangeItem.CHARIZARDITE_Y)),
|
||||
new SpeciesFormChange(Species.CHARIZARD, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
[SpeciesId.CHARIZARD]: [
|
||||
new SpeciesFormChange(SpeciesId.CHARIZARD, "", SpeciesFormKey.MEGA_X, new SpeciesFormChangeItemTrigger(FormChangeItem.CHARIZARDITE_X)),
|
||||
new SpeciesFormChange(SpeciesId.CHARIZARD, "", SpeciesFormKey.MEGA_Y, new SpeciesFormChangeItemTrigger(FormChangeItem.CHARIZARDITE_Y)),
|
||||
new SpeciesFormChange(SpeciesId.CHARIZARD, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[Species.BUTTERFREE]: [
|
||||
new SpeciesFormChange(Species.BUTTERFREE, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
[SpeciesId.BUTTERFREE]: [
|
||||
new SpeciesFormChange(SpeciesId.BUTTERFREE, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[Species.BEEDRILL]: [
|
||||
new SpeciesFormChange(Species.BEEDRILL, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.BEEDRILLITE))
|
||||
[SpeciesId.BEEDRILL]: [
|
||||
new SpeciesFormChange(SpeciesId.BEEDRILL, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.BEEDRILLITE))
|
||||
],
|
||||
[Species.PIDGEOT]: [
|
||||
new SpeciesFormChange(Species.PIDGEOT, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.PIDGEOTITE))
|
||||
[SpeciesId.PIDGEOT]: [
|
||||
new SpeciesFormChange(SpeciesId.PIDGEOT, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.PIDGEOTITE))
|
||||
],
|
||||
[Species.PIKACHU]: [
|
||||
new SpeciesFormChange(Species.PIKACHU, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)),
|
||||
new SpeciesFormChange(Species.PIKACHU, "partner", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
[SpeciesId.PIKACHU]: [
|
||||
new SpeciesFormChange(SpeciesId.PIKACHU, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)),
|
||||
new SpeciesFormChange(SpeciesId.PIKACHU, "partner", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[Species.MEOWTH]: [
|
||||
new SpeciesFormChange(Species.MEOWTH, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
[SpeciesId.MEOWTH]: [
|
||||
new SpeciesFormChange(SpeciesId.MEOWTH, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[Species.ALAKAZAM]: [
|
||||
new SpeciesFormChange(Species.ALAKAZAM, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.ALAKAZITE))
|
||||
[SpeciesId.ALAKAZAM]: [
|
||||
new SpeciesFormChange(SpeciesId.ALAKAZAM, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.ALAKAZITE))
|
||||
],
|
||||
[Species.MACHAMP]: [
|
||||
new SpeciesFormChange(Species.MACHAMP, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
[SpeciesId.MACHAMP]: [
|
||||
new SpeciesFormChange(SpeciesId.MACHAMP, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[Species.SLOWBRO]: [
|
||||
new SpeciesFormChange(Species.SLOWBRO, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.SLOWBRONITE))
|
||||
[SpeciesId.SLOWBRO]: [
|
||||
new SpeciesFormChange(SpeciesId.SLOWBRO, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.SLOWBRONITE))
|
||||
],
|
||||
[Species.GENGAR]: [
|
||||
new SpeciesFormChange(Species.GENGAR, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.GENGARITE)),
|
||||
new SpeciesFormChange(Species.GENGAR, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
[SpeciesId.GENGAR]: [
|
||||
new SpeciesFormChange(SpeciesId.GENGAR, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.GENGARITE)),
|
||||
new SpeciesFormChange(SpeciesId.GENGAR, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[Species.KINGLER]: [
|
||||
new SpeciesFormChange(Species.KINGLER, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
[SpeciesId.KINGLER]: [
|
||||
new SpeciesFormChange(SpeciesId.KINGLER, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[Species.KANGASKHAN]: [
|
||||
new SpeciesFormChange(Species.KANGASKHAN, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.KANGASKHANITE))
|
||||
[SpeciesId.KANGASKHAN]: [
|
||||
new SpeciesFormChange(SpeciesId.KANGASKHAN, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.KANGASKHANITE))
|
||||
],
|
||||
[Species.PINSIR]: [
|
||||
new SpeciesFormChange(Species.PINSIR, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.PINSIRITE))
|
||||
[SpeciesId.PINSIR]: [
|
||||
new SpeciesFormChange(SpeciesId.PINSIR, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.PINSIRITE))
|
||||
],
|
||||
[Species.GYARADOS]: [
|
||||
new SpeciesFormChange(Species.GYARADOS, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.GYARADOSITE))
|
||||
[SpeciesId.GYARADOS]: [
|
||||
new SpeciesFormChange(SpeciesId.GYARADOS, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.GYARADOSITE))
|
||||
],
|
||||
[Species.LAPRAS]: [
|
||||
new SpeciesFormChange(Species.LAPRAS, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
[SpeciesId.LAPRAS]: [
|
||||
new SpeciesFormChange(SpeciesId.LAPRAS, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[Species.EEVEE]: [
|
||||
new SpeciesFormChange(Species.EEVEE, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)),
|
||||
new SpeciesFormChange(Species.EEVEE, "partner", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
[SpeciesId.EEVEE]: [
|
||||
new SpeciesFormChange(SpeciesId.EEVEE, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)),
|
||||
new SpeciesFormChange(SpeciesId.EEVEE, "partner", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[Species.SNORLAX]: [
|
||||
new SpeciesFormChange(Species.SNORLAX, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
[SpeciesId.SNORLAX]: [
|
||||
new SpeciesFormChange(SpeciesId.SNORLAX, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[Species.AERODACTYL]: [
|
||||
new SpeciesFormChange(Species.AERODACTYL, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.AERODACTYLITE))
|
||||
[SpeciesId.AERODACTYL]: [
|
||||
new SpeciesFormChange(SpeciesId.AERODACTYL, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.AERODACTYLITE))
|
||||
],
|
||||
[Species.MEWTWO]: [
|
||||
new SpeciesFormChange(Species.MEWTWO, "", SpeciesFormKey.MEGA_X, new SpeciesFormChangeItemTrigger(FormChangeItem.MEWTWONITE_X)),
|
||||
new SpeciesFormChange(Species.MEWTWO, "", SpeciesFormKey.MEGA_Y, new SpeciesFormChangeItemTrigger(FormChangeItem.MEWTWONITE_Y))
|
||||
[SpeciesId.MEWTWO]: [
|
||||
new SpeciesFormChange(SpeciesId.MEWTWO, "", SpeciesFormKey.MEGA_X, new SpeciesFormChangeItemTrigger(FormChangeItem.MEWTWONITE_X)),
|
||||
new SpeciesFormChange(SpeciesId.MEWTWO, "", SpeciesFormKey.MEGA_Y, new SpeciesFormChangeItemTrigger(FormChangeItem.MEWTWONITE_Y))
|
||||
],
|
||||
[Species.AMPHAROS]: [
|
||||
new SpeciesFormChange(Species.AMPHAROS, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.AMPHAROSITE))
|
||||
[SpeciesId.AMPHAROS]: [
|
||||
new SpeciesFormChange(SpeciesId.AMPHAROS, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.AMPHAROSITE))
|
||||
],
|
||||
[Species.STEELIX]: [
|
||||
new SpeciesFormChange(Species.STEELIX, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.STEELIXITE))
|
||||
[SpeciesId.STEELIX]: [
|
||||
new SpeciesFormChange(SpeciesId.STEELIX, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.STEELIXITE))
|
||||
],
|
||||
[Species.SCIZOR]: [
|
||||
new SpeciesFormChange(Species.SCIZOR, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.SCIZORITE))
|
||||
[SpeciesId.SCIZOR]: [
|
||||
new SpeciesFormChange(SpeciesId.SCIZOR, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.SCIZORITE))
|
||||
],
|
||||
[Species.HERACROSS]: [
|
||||
new SpeciesFormChange(Species.HERACROSS, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.HERACRONITE))
|
||||
[SpeciesId.HERACROSS]: [
|
||||
new SpeciesFormChange(SpeciesId.HERACROSS, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.HERACRONITE))
|
||||
],
|
||||
[Species.HOUNDOOM]: [
|
||||
new SpeciesFormChange(Species.HOUNDOOM, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.HOUNDOOMINITE))
|
||||
[SpeciesId.HOUNDOOM]: [
|
||||
new SpeciesFormChange(SpeciesId.HOUNDOOM, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.HOUNDOOMINITE))
|
||||
],
|
||||
[Species.TYRANITAR]: [
|
||||
new SpeciesFormChange(Species.TYRANITAR, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.TYRANITARITE))
|
||||
[SpeciesId.TYRANITAR]: [
|
||||
new SpeciesFormChange(SpeciesId.TYRANITAR, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.TYRANITARITE))
|
||||
],
|
||||
[Species.SCEPTILE]: [
|
||||
new SpeciesFormChange(Species.SCEPTILE, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.SCEPTILITE))
|
||||
[SpeciesId.SCEPTILE]: [
|
||||
new SpeciesFormChange(SpeciesId.SCEPTILE, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.SCEPTILITE))
|
||||
],
|
||||
[Species.BLAZIKEN]: [
|
||||
new SpeciesFormChange(Species.BLAZIKEN, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.BLAZIKENITE))
|
||||
[SpeciesId.BLAZIKEN]: [
|
||||
new SpeciesFormChange(SpeciesId.BLAZIKEN, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.BLAZIKENITE))
|
||||
],
|
||||
[Species.SWAMPERT]: [
|
||||
new SpeciesFormChange(Species.SWAMPERT, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.SWAMPERTITE))
|
||||
[SpeciesId.SWAMPERT]: [
|
||||
new SpeciesFormChange(SpeciesId.SWAMPERT, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.SWAMPERTITE))
|
||||
],
|
||||
[Species.GARDEVOIR]: [
|
||||
new SpeciesFormChange(Species.GARDEVOIR, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.GARDEVOIRITE))
|
||||
[SpeciesId.GARDEVOIR]: [
|
||||
new SpeciesFormChange(SpeciesId.GARDEVOIR, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.GARDEVOIRITE))
|
||||
],
|
||||
[Species.SABLEYE]: [
|
||||
new SpeciesFormChange(Species.SABLEYE, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.SABLENITE))
|
||||
[SpeciesId.SABLEYE]: [
|
||||
new SpeciesFormChange(SpeciesId.SABLEYE, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.SABLENITE))
|
||||
],
|
||||
[Species.MAWILE]: [
|
||||
new SpeciesFormChange(Species.MAWILE, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.MAWILITE))
|
||||
[SpeciesId.MAWILE]: [
|
||||
new SpeciesFormChange(SpeciesId.MAWILE, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.MAWILITE))
|
||||
],
|
||||
[Species.AGGRON]: [
|
||||
new SpeciesFormChange(Species.AGGRON, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.AGGRONITE))
|
||||
[SpeciesId.AGGRON]: [
|
||||
new SpeciesFormChange(SpeciesId.AGGRON, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.AGGRONITE))
|
||||
],
|
||||
[Species.MEDICHAM]: [
|
||||
new SpeciesFormChange(Species.MEDICHAM, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.MEDICHAMITE))
|
||||
[SpeciesId.MEDICHAM]: [
|
||||
new SpeciesFormChange(SpeciesId.MEDICHAM, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.MEDICHAMITE))
|
||||
],
|
||||
[Species.MANECTRIC]: [
|
||||
new SpeciesFormChange(Species.MANECTRIC, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.MANECTITE))
|
||||
[SpeciesId.MANECTRIC]: [
|
||||
new SpeciesFormChange(SpeciesId.MANECTRIC, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.MANECTITE))
|
||||
],
|
||||
[Species.SHARPEDO]: [
|
||||
new SpeciesFormChange(Species.SHARPEDO, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.SHARPEDONITE))
|
||||
[SpeciesId.SHARPEDO]: [
|
||||
new SpeciesFormChange(SpeciesId.SHARPEDO, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.SHARPEDONITE))
|
||||
],
|
||||
[Species.CAMERUPT]: [
|
||||
new SpeciesFormChange(Species.CAMERUPT, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.CAMERUPTITE))
|
||||
[SpeciesId.CAMERUPT]: [
|
||||
new SpeciesFormChange(SpeciesId.CAMERUPT, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.CAMERUPTITE))
|
||||
],
|
||||
[Species.ALTARIA]: [
|
||||
new SpeciesFormChange(Species.ALTARIA, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.ALTARIANITE))
|
||||
[SpeciesId.ALTARIA]: [
|
||||
new SpeciesFormChange(SpeciesId.ALTARIA, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.ALTARIANITE))
|
||||
],
|
||||
[Species.CASTFORM]: [
|
||||
new SpeciesFormChange(Species.CASTFORM, "", "sunny", new SpeciesFormChangeWeatherTrigger(AbilityId.FORECAST, [ WeatherType.SUNNY, WeatherType.HARSH_SUN ]), true),
|
||||
new SpeciesFormChange(Species.CASTFORM, "rainy", "sunny", new SpeciesFormChangeWeatherTrigger(AbilityId.FORECAST, [ WeatherType.SUNNY, WeatherType.HARSH_SUN ]), true),
|
||||
new SpeciesFormChange(Species.CASTFORM, "snowy", "sunny", new SpeciesFormChangeWeatherTrigger(AbilityId.FORECAST, [ WeatherType.SUNNY, WeatherType.HARSH_SUN ]), true),
|
||||
new SpeciesFormChange(Species.CASTFORM, "", "rainy", new SpeciesFormChangeWeatherTrigger(AbilityId.FORECAST, [ WeatherType.RAIN, WeatherType.HEAVY_RAIN ]), true),
|
||||
new SpeciesFormChange(Species.CASTFORM, "sunny", "rainy", new SpeciesFormChangeWeatherTrigger(AbilityId.FORECAST, [ WeatherType.RAIN, WeatherType.HEAVY_RAIN ]), true),
|
||||
new SpeciesFormChange(Species.CASTFORM, "snowy", "rainy", new SpeciesFormChangeWeatherTrigger(AbilityId.FORECAST, [ WeatherType.RAIN, WeatherType.HEAVY_RAIN ]), true),
|
||||
new SpeciesFormChange(Species.CASTFORM, "", "snowy", new SpeciesFormChangeWeatherTrigger(AbilityId.FORECAST, [ WeatherType.HAIL, WeatherType.SNOW ]), true),
|
||||
new SpeciesFormChange(Species.CASTFORM, "sunny", "snowy", new SpeciesFormChangeWeatherTrigger(AbilityId.FORECAST, [ WeatherType.HAIL, WeatherType.SNOW ]), true),
|
||||
new SpeciesFormChange(Species.CASTFORM, "rainy", "snowy", new SpeciesFormChangeWeatherTrigger(AbilityId.FORECAST, [ WeatherType.HAIL, WeatherType.SNOW ]), true),
|
||||
new SpeciesFormChange(Species.CASTFORM, "sunny", "", new SpeciesFormChangeRevertWeatherFormTrigger(AbilityId.FORECAST, [ WeatherType.NONE, WeatherType.SANDSTORM, WeatherType.STRONG_WINDS, WeatherType.FOG ]), true),
|
||||
new SpeciesFormChange(Species.CASTFORM, "rainy", "", new SpeciesFormChangeRevertWeatherFormTrigger(AbilityId.FORECAST, [ WeatherType.NONE, WeatherType.SANDSTORM, WeatherType.STRONG_WINDS, WeatherType.FOG ]), true),
|
||||
new SpeciesFormChange(Species.CASTFORM, "snowy", "", new SpeciesFormChangeRevertWeatherFormTrigger(AbilityId.FORECAST, [ WeatherType.NONE, WeatherType.SANDSTORM, WeatherType.STRONG_WINDS, WeatherType.FOG ]), true),
|
||||
new SpeciesFormChange(Species.CASTFORM, "sunny", "", new SpeciesFormChangeActiveTrigger(), true),
|
||||
new SpeciesFormChange(Species.CASTFORM, "rainy", "", new SpeciesFormChangeActiveTrigger(), true),
|
||||
new SpeciesFormChange(Species.CASTFORM, "snowy", "", new SpeciesFormChangeActiveTrigger(), true)
|
||||
[SpeciesId.CASTFORM]: [
|
||||
new SpeciesFormChange(SpeciesId.CASTFORM, "", "sunny", new SpeciesFormChangeWeatherTrigger(AbilityId.FORECAST, [ WeatherType.SUNNY, WeatherType.HARSH_SUN ]), true),
|
||||
new SpeciesFormChange(SpeciesId.CASTFORM, "rainy", "sunny", new SpeciesFormChangeWeatherTrigger(AbilityId.FORECAST, [ WeatherType.SUNNY, WeatherType.HARSH_SUN ]), true),
|
||||
new SpeciesFormChange(SpeciesId.CASTFORM, "snowy", "sunny", new SpeciesFormChangeWeatherTrigger(AbilityId.FORECAST, [ WeatherType.SUNNY, WeatherType.HARSH_SUN ]), true),
|
||||
new SpeciesFormChange(SpeciesId.CASTFORM, "", "rainy", new SpeciesFormChangeWeatherTrigger(AbilityId.FORECAST, [ WeatherType.RAIN, WeatherType.HEAVY_RAIN ]), true),
|
||||
new SpeciesFormChange(SpeciesId.CASTFORM, "sunny", "rainy", new SpeciesFormChangeWeatherTrigger(AbilityId.FORECAST, [ WeatherType.RAIN, WeatherType.HEAVY_RAIN ]), true),
|
||||
new SpeciesFormChange(SpeciesId.CASTFORM, "snowy", "rainy", new SpeciesFormChangeWeatherTrigger(AbilityId.FORECAST, [ WeatherType.RAIN, WeatherType.HEAVY_RAIN ]), true),
|
||||
new SpeciesFormChange(SpeciesId.CASTFORM, "", "snowy", new SpeciesFormChangeWeatherTrigger(AbilityId.FORECAST, [ WeatherType.HAIL, WeatherType.SNOW ]), true),
|
||||
new SpeciesFormChange(SpeciesId.CASTFORM, "sunny", "snowy", new SpeciesFormChangeWeatherTrigger(AbilityId.FORECAST, [ WeatherType.HAIL, WeatherType.SNOW ]), true),
|
||||
new SpeciesFormChange(SpeciesId.CASTFORM, "rainy", "snowy", new SpeciesFormChangeWeatherTrigger(AbilityId.FORECAST, [ WeatherType.HAIL, WeatherType.SNOW ]), true),
|
||||
new SpeciesFormChange(SpeciesId.CASTFORM, "sunny", "", new SpeciesFormChangeRevertWeatherFormTrigger(AbilityId.FORECAST, [ WeatherType.NONE, WeatherType.SANDSTORM, WeatherType.STRONG_WINDS, WeatherType.FOG ]), true),
|
||||
new SpeciesFormChange(SpeciesId.CASTFORM, "rainy", "", new SpeciesFormChangeRevertWeatherFormTrigger(AbilityId.FORECAST, [ WeatherType.NONE, WeatherType.SANDSTORM, WeatherType.STRONG_WINDS, WeatherType.FOG ]), true),
|
||||
new SpeciesFormChange(SpeciesId.CASTFORM, "snowy", "", new SpeciesFormChangeRevertWeatherFormTrigger(AbilityId.FORECAST, [ WeatherType.NONE, WeatherType.SANDSTORM, WeatherType.STRONG_WINDS, WeatherType.FOG ]), true),
|
||||
new SpeciesFormChange(SpeciesId.CASTFORM, "sunny", "", new SpeciesFormChangeActiveTrigger(), true),
|
||||
new SpeciesFormChange(SpeciesId.CASTFORM, "rainy", "", new SpeciesFormChangeActiveTrigger(), true),
|
||||
new SpeciesFormChange(SpeciesId.CASTFORM, "snowy", "", new SpeciesFormChangeActiveTrigger(), true)
|
||||
],
|
||||
[Species.BANETTE]: [
|
||||
new SpeciesFormChange(Species.BANETTE, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.BANETTITE))
|
||||
[SpeciesId.BANETTE]: [
|
||||
new SpeciesFormChange(SpeciesId.BANETTE, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.BANETTITE))
|
||||
],
|
||||
[Species.ABSOL]: [
|
||||
new SpeciesFormChange(Species.ABSOL, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.ABSOLITE))
|
||||
[SpeciesId.ABSOL]: [
|
||||
new SpeciesFormChange(SpeciesId.ABSOL, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.ABSOLITE))
|
||||
],
|
||||
[Species.GLALIE]: [
|
||||
new SpeciesFormChange(Species.GLALIE, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.GLALITITE))
|
||||
[SpeciesId.GLALIE]: [
|
||||
new SpeciesFormChange(SpeciesId.GLALIE, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.GLALITITE))
|
||||
],
|
||||
[Species.SALAMENCE]: [
|
||||
new SpeciesFormChange(Species.SALAMENCE, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.SALAMENCITE))
|
||||
[SpeciesId.SALAMENCE]: [
|
||||
new SpeciesFormChange(SpeciesId.SALAMENCE, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.SALAMENCITE))
|
||||
],
|
||||
[Species.METAGROSS]: [
|
||||
new SpeciesFormChange(Species.METAGROSS, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.METAGROSSITE))
|
||||
[SpeciesId.METAGROSS]: [
|
||||
new SpeciesFormChange(SpeciesId.METAGROSS, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.METAGROSSITE))
|
||||
],
|
||||
[Species.LATIAS]: [
|
||||
new SpeciesFormChange(Species.LATIAS, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.LATIASITE))
|
||||
[SpeciesId.LATIAS]: [
|
||||
new SpeciesFormChange(SpeciesId.LATIAS, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.LATIASITE))
|
||||
],
|
||||
[Species.LATIOS]: [
|
||||
new SpeciesFormChange(Species.LATIOS, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.LATIOSITE))
|
||||
[SpeciesId.LATIOS]: [
|
||||
new SpeciesFormChange(SpeciesId.LATIOS, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.LATIOSITE))
|
||||
],
|
||||
[Species.KYOGRE]: [
|
||||
new SpeciesFormChange(Species.KYOGRE, "", SpeciesFormKey.PRIMAL, new SpeciesFormChangeItemTrigger(FormChangeItem.BLUE_ORB))
|
||||
[SpeciesId.KYOGRE]: [
|
||||
new SpeciesFormChange(SpeciesId.KYOGRE, "", SpeciesFormKey.PRIMAL, new SpeciesFormChangeItemTrigger(FormChangeItem.BLUE_ORB))
|
||||
],
|
||||
[Species.GROUDON]: [
|
||||
new SpeciesFormChange(Species.GROUDON, "", SpeciesFormKey.PRIMAL, new SpeciesFormChangeItemTrigger(FormChangeItem.RED_ORB))
|
||||
[SpeciesId.GROUDON]: [
|
||||
new SpeciesFormChange(SpeciesId.GROUDON, "", SpeciesFormKey.PRIMAL, new SpeciesFormChangeItemTrigger(FormChangeItem.RED_ORB))
|
||||
],
|
||||
[Species.RAYQUAZA]: [
|
||||
new SpeciesFormChange(Species.RAYQUAZA, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.RAYQUAZITE))
|
||||
[SpeciesId.RAYQUAZA]: [
|
||||
new SpeciesFormChange(SpeciesId.RAYQUAZA, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.RAYQUAZITE))
|
||||
],
|
||||
[Species.DEOXYS]: [
|
||||
new SpeciesFormChange(Species.DEOXYS, "normal", "attack", new SpeciesFormChangeItemTrigger(FormChangeItem.SHARP_METEORITE)),
|
||||
new SpeciesFormChange(Species.DEOXYS, "normal", "defense", new SpeciesFormChangeItemTrigger(FormChangeItem.HARD_METEORITE)),
|
||||
new SpeciesFormChange(Species.DEOXYS, "normal", "speed", new SpeciesFormChangeItemTrigger(FormChangeItem.SMOOTH_METEORITE))
|
||||
[SpeciesId.DEOXYS]: [
|
||||
new SpeciesFormChange(SpeciesId.DEOXYS, "normal", "attack", new SpeciesFormChangeItemTrigger(FormChangeItem.SHARP_METEORITE)),
|
||||
new SpeciesFormChange(SpeciesId.DEOXYS, "normal", "defense", new SpeciesFormChangeItemTrigger(FormChangeItem.HARD_METEORITE)),
|
||||
new SpeciesFormChange(SpeciesId.DEOXYS, "normal", "speed", new SpeciesFormChangeItemTrigger(FormChangeItem.SMOOTH_METEORITE))
|
||||
],
|
||||
[Species.CHERRIM]: [
|
||||
new SpeciesFormChange(Species.CHERRIM, "overcast", "sunshine", new SpeciesFormChangeWeatherTrigger(AbilityId.FLOWER_GIFT, [ WeatherType.SUNNY, WeatherType.HARSH_SUN ]), true),
|
||||
new SpeciesFormChange(Species.CHERRIM, "sunshine", "overcast", new SpeciesFormChangeRevertWeatherFormTrigger(AbilityId.FLOWER_GIFT, [ WeatherType.NONE, WeatherType.SANDSTORM, WeatherType.STRONG_WINDS, WeatherType.FOG, WeatherType.HAIL, WeatherType.HEAVY_RAIN, WeatherType.SNOW, WeatherType.RAIN ]), true),
|
||||
new SpeciesFormChange(Species.CHERRIM, "sunshine", "overcast", new SpeciesFormChangeActiveTrigger(), true)
|
||||
[SpeciesId.CHERRIM]: [
|
||||
new SpeciesFormChange(SpeciesId.CHERRIM, "overcast", "sunshine", new SpeciesFormChangeWeatherTrigger(AbilityId.FLOWER_GIFT, [ WeatherType.SUNNY, WeatherType.HARSH_SUN ]), true),
|
||||
new SpeciesFormChange(SpeciesId.CHERRIM, "sunshine", "overcast", new SpeciesFormChangeRevertWeatherFormTrigger(AbilityId.FLOWER_GIFT, [ WeatherType.NONE, WeatherType.SANDSTORM, WeatherType.STRONG_WINDS, WeatherType.FOG, WeatherType.HAIL, WeatherType.HEAVY_RAIN, WeatherType.SNOW, WeatherType.RAIN ]), true),
|
||||
new SpeciesFormChange(SpeciesId.CHERRIM, "sunshine", "overcast", new SpeciesFormChangeActiveTrigger(), true)
|
||||
],
|
||||
[Species.LOPUNNY]: [
|
||||
new SpeciesFormChange(Species.LOPUNNY, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.LOPUNNITE))
|
||||
[SpeciesId.LOPUNNY]: [
|
||||
new SpeciesFormChange(SpeciesId.LOPUNNY, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.LOPUNNITE))
|
||||
],
|
||||
[Species.GARCHOMP]: [
|
||||
new SpeciesFormChange(Species.GARCHOMP, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.GARCHOMPITE))
|
||||
[SpeciesId.GARCHOMP]: [
|
||||
new SpeciesFormChange(SpeciesId.GARCHOMP, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.GARCHOMPITE))
|
||||
],
|
||||
[Species.LUCARIO]: [
|
||||
new SpeciesFormChange(Species.LUCARIO, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.LUCARIONITE))
|
||||
[SpeciesId.LUCARIO]: [
|
||||
new SpeciesFormChange(SpeciesId.LUCARIO, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.LUCARIONITE))
|
||||
],
|
||||
[Species.ABOMASNOW]: [
|
||||
new SpeciesFormChange(Species.ABOMASNOW, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.ABOMASITE))
|
||||
[SpeciesId.ABOMASNOW]: [
|
||||
new SpeciesFormChange(SpeciesId.ABOMASNOW, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.ABOMASITE))
|
||||
],
|
||||
[Species.GALLADE]: [
|
||||
new SpeciesFormChange(Species.GALLADE, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.GALLADITE))
|
||||
[SpeciesId.GALLADE]: [
|
||||
new SpeciesFormChange(SpeciesId.GALLADE, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.GALLADITE))
|
||||
],
|
||||
[Species.AUDINO]: [
|
||||
new SpeciesFormChange(Species.AUDINO, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.AUDINITE))
|
||||
[SpeciesId.AUDINO]: [
|
||||
new SpeciesFormChange(SpeciesId.AUDINO, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.AUDINITE))
|
||||
],
|
||||
[Species.DIALGA]: [
|
||||
new SpeciesFormChange(Species.DIALGA, "", SpeciesFormKey.ORIGIN, new SpeciesFormChangeItemTrigger(FormChangeItem.ADAMANT_CRYSTAL))
|
||||
],
|
||||
[Species.PALKIA]: [
|
||||
new SpeciesFormChange(Species.PALKIA, "", SpeciesFormKey.ORIGIN, new SpeciesFormChangeItemTrigger(FormChangeItem.LUSTROUS_GLOBE))
|
||||
],
|
||||
[Species.GIRATINA]: [
|
||||
new SpeciesFormChange(Species.GIRATINA, "altered", SpeciesFormKey.ORIGIN, new SpeciesFormChangeItemTrigger(FormChangeItem.GRISEOUS_CORE))
|
||||
],
|
||||
[Species.SHAYMIN]: [
|
||||
new SpeciesFormChange(Species.SHAYMIN, "land", "sky", new SpeciesFormChangeItemTrigger(FormChangeItem.GRACIDEA)),
|
||||
],
|
||||
[Species.ARCEUS]: [
|
||||
new SpeciesFormChange(Species.ARCEUS, "normal", "fighting", new SpeciesFormChangeItemTrigger(FormChangeItem.FIST_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))),
|
||||
new SpeciesFormChange(Species.ARCEUS, "normal", "flying", new SpeciesFormChangeItemTrigger(FormChangeItem.SKY_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))),
|
||||
new SpeciesFormChange(Species.ARCEUS, "normal", "poison", new SpeciesFormChangeItemTrigger(FormChangeItem.TOXIC_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))),
|
||||
new SpeciesFormChange(Species.ARCEUS, "normal", "ground", new SpeciesFormChangeItemTrigger(FormChangeItem.EARTH_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))),
|
||||
new SpeciesFormChange(Species.ARCEUS, "normal", "rock", new SpeciesFormChangeItemTrigger(FormChangeItem.STONE_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))),
|
||||
new SpeciesFormChange(Species.ARCEUS, "normal", "bug", new SpeciesFormChangeItemTrigger(FormChangeItem.INSECT_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))),
|
||||
new SpeciesFormChange(Species.ARCEUS, "normal", "ghost", new SpeciesFormChangeItemTrigger(FormChangeItem.SPOOKY_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))),
|
||||
new SpeciesFormChange(Species.ARCEUS, "normal", "steel", new SpeciesFormChangeItemTrigger(FormChangeItem.IRON_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))),
|
||||
new SpeciesFormChange(Species.ARCEUS, "normal", "fire", new SpeciesFormChangeItemTrigger(FormChangeItem.FLAME_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))),
|
||||
new SpeciesFormChange(Species.ARCEUS, "normal", "water", new SpeciesFormChangeItemTrigger(FormChangeItem.SPLASH_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))),
|
||||
new SpeciesFormChange(Species.ARCEUS, "normal", "grass", new SpeciesFormChangeItemTrigger(FormChangeItem.MEADOW_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))),
|
||||
new SpeciesFormChange(Species.ARCEUS, "normal", "electric", new SpeciesFormChangeItemTrigger(FormChangeItem.ZAP_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))),
|
||||
new SpeciesFormChange(Species.ARCEUS, "normal", "psychic", new SpeciesFormChangeItemTrigger(FormChangeItem.MIND_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))),
|
||||
new SpeciesFormChange(Species.ARCEUS, "normal", "ice", new SpeciesFormChangeItemTrigger(FormChangeItem.ICICLE_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))),
|
||||
new SpeciesFormChange(Species.ARCEUS, "normal", "dragon", new SpeciesFormChangeItemTrigger(FormChangeItem.DRACO_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))),
|
||||
new SpeciesFormChange(Species.ARCEUS, "normal", "dark", new SpeciesFormChangeItemTrigger(FormChangeItem.DREAD_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))),
|
||||
new SpeciesFormChange(Species.ARCEUS, "normal", "fairy", new SpeciesFormChangeItemTrigger(FormChangeItem.PIXIE_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))),
|
||||
],
|
||||
[Species.DARMANITAN]: [
|
||||
new SpeciesFormChange(Species.DARMANITAN, "", "zen", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(Species.DARMANITAN, "zen", "", new SpeciesFormChangeAbilityTrigger(), true)
|
||||
],
|
||||
[Species.GARBODOR]: [
|
||||
new SpeciesFormChange(Species.GARBODOR, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[Species.TORNADUS]: [
|
||||
new SpeciesFormChange(Species.TORNADUS, SpeciesFormKey.INCARNATE, SpeciesFormKey.THERIAN, new SpeciesFormChangeItemTrigger(FormChangeItem.REVEAL_GLASS))
|
||||
],
|
||||
[Species.THUNDURUS]: [
|
||||
new SpeciesFormChange(Species.THUNDURUS, SpeciesFormKey.INCARNATE, SpeciesFormKey.THERIAN, new SpeciesFormChangeItemTrigger(FormChangeItem.REVEAL_GLASS))
|
||||
],
|
||||
[Species.LANDORUS]: [
|
||||
new SpeciesFormChange(Species.LANDORUS, SpeciesFormKey.INCARNATE, SpeciesFormKey.THERIAN, new SpeciesFormChangeItemTrigger(FormChangeItem.REVEAL_GLASS))
|
||||
],
|
||||
[Species.KYUREM]: [
|
||||
new SpeciesFormChange(Species.KYUREM, "", "black", new SpeciesFormChangeItemTrigger(FormChangeItem.DARK_STONE), false, getSpeciesDependentFormChangeCondition(Species.ZEKROM)),
|
||||
new SpeciesFormChange(Species.KYUREM, "", "white", new SpeciesFormChangeItemTrigger(FormChangeItem.LIGHT_STONE), false, getSpeciesDependentFormChangeCondition(Species.RESHIRAM))
|
||||
],
|
||||
[Species.KELDEO]: [
|
||||
new SpeciesFormChange(Species.KELDEO, "ordinary", "resolute", new SpeciesFormChangeMoveLearnedTrigger(MoveId.SECRET_SWORD), false, new SpeciesFormChangeCondition(() => globalScene.gameMode.isDaily !== true)),
|
||||
new SpeciesFormChange(Species.KELDEO, "resolute", "ordinary", new SpeciesFormChangeMoveLearnedTrigger(MoveId.SECRET_SWORD, false), false, new SpeciesFormChangeCondition(() => globalScene.gameMode.isDaily !== true))
|
||||
],
|
||||
[Species.MELOETTA]: [
|
||||
new SpeciesFormChange(Species.MELOETTA, "aria", "pirouette", new MeloettaFormChangePostMoveTrigger(MoveId.RELIC_SONG), true),
|
||||
new SpeciesFormChange(Species.MELOETTA, "pirouette", "aria", new MeloettaFormChangePostMoveTrigger(MoveId.RELIC_SONG), true)
|
||||
],
|
||||
[Species.GENESECT]: [
|
||||
new SpeciesFormChange(Species.GENESECT, "", "shock", new SpeciesFormChangeItemTrigger(FormChangeItem.SHOCK_DRIVE)),
|
||||
new SpeciesFormChange(Species.GENESECT, "", "burn", new SpeciesFormChangeItemTrigger(FormChangeItem.BURN_DRIVE)),
|
||||
new SpeciesFormChange(Species.GENESECT, "", "chill", new SpeciesFormChangeItemTrigger(FormChangeItem.CHILL_DRIVE)),
|
||||
new SpeciesFormChange(Species.GENESECT, "", "douse", new SpeciesFormChangeItemTrigger(FormChangeItem.DOUSE_DRIVE))
|
||||
],
|
||||
[Species.GRENINJA]: [
|
||||
new SpeciesFormChange(Species.GRENINJA, "battle-bond", "ash", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(Species.GRENINJA, "ash", "battle-bond", new SpeciesFormChangeAbilityTrigger(), true)
|
||||
],
|
||||
[Species.PALAFIN] : [
|
||||
new SpeciesFormChange(Species.PALAFIN, "zero", "hero", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(Species.PALAFIN, "hero", "zero", new SpeciesFormChangeAbilityTrigger(), true)
|
||||
],
|
||||
[Species.AEGISLASH]: [
|
||||
new SpeciesFormChange(Species.AEGISLASH, "blade", "shield", new SpeciesFormChangePreMoveTrigger(MoveId.KINGS_SHIELD), true, new SpeciesFormChangeCondition(p => p.hasAbility(AbilityId.STANCE_CHANGE))),
|
||||
new SpeciesFormChange(Species.AEGISLASH, "shield", "blade", new SpeciesFormChangePreMoveTrigger(m => allMoves[m].category !== MoveCategory.STATUS), true, new SpeciesFormChangeCondition(p => p.hasAbility(AbilityId.STANCE_CHANGE))),
|
||||
new SpeciesFormChange(Species.AEGISLASH, "blade", "shield", new SpeciesFormChangeActiveTrigger(false), true)
|
||||
],
|
||||
[Species.XERNEAS]: [
|
||||
new SpeciesFormChange(Species.XERNEAS, "neutral", "active", new SpeciesFormChangeActiveTrigger(true), true),
|
||||
new SpeciesFormChange(Species.XERNEAS, "active", "neutral", new SpeciesFormChangeActiveTrigger(false), true)
|
||||
],
|
||||
[Species.ZYGARDE]: [
|
||||
new SpeciesFormChange(Species.ZYGARDE, "50-pc", "complete", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(Species.ZYGARDE, "complete", "50-pc", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(Species.ZYGARDE, "10-pc", "10-complete", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(Species.ZYGARDE, "10-complete", "10-pc", new SpeciesFormChangeAbilityTrigger(), true)
|
||||
],
|
||||
[Species.DIANCIE]: [
|
||||
new SpeciesFormChange(Species.DIANCIE, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.DIANCITE))
|
||||
],
|
||||
[Species.HOOPA]: [
|
||||
new SpeciesFormChange(Species.HOOPA, "", "unbound", new SpeciesFormChangeItemTrigger(FormChangeItem.PRISON_BOTTLE))
|
||||
],
|
||||
[Species.WISHIWASHI]: [
|
||||
new SpeciesFormChange(Species.WISHIWASHI, "", "school", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(Species.WISHIWASHI, "school", "", new SpeciesFormChangeAbilityTrigger(), true)
|
||||
],
|
||||
[Species.SILVALLY]: [
|
||||
new SpeciesFormChange(Species.SILVALLY, "normal", "fighting", new SpeciesFormChangeItemTrigger(FormChangeItem.FIGHTING_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))),
|
||||
new SpeciesFormChange(Species.SILVALLY, "normal", "flying", new SpeciesFormChangeItemTrigger(FormChangeItem.FLYING_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))),
|
||||
new SpeciesFormChange(Species.SILVALLY, "normal", "poison", new SpeciesFormChangeItemTrigger(FormChangeItem.POISON_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))),
|
||||
new SpeciesFormChange(Species.SILVALLY, "normal", "ground", new SpeciesFormChangeItemTrigger(FormChangeItem.GROUND_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))),
|
||||
new SpeciesFormChange(Species.SILVALLY, "normal", "rock", new SpeciesFormChangeItemTrigger(FormChangeItem.ROCK_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))),
|
||||
new SpeciesFormChange(Species.SILVALLY, "normal", "bug", new SpeciesFormChangeItemTrigger(FormChangeItem.BUG_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))),
|
||||
new SpeciesFormChange(Species.SILVALLY, "normal", "ghost", new SpeciesFormChangeItemTrigger(FormChangeItem.GHOST_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))),
|
||||
new SpeciesFormChange(Species.SILVALLY, "normal", "steel", new SpeciesFormChangeItemTrigger(FormChangeItem.STEEL_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))),
|
||||
new SpeciesFormChange(Species.SILVALLY, "normal", "fire", new SpeciesFormChangeItemTrigger(FormChangeItem.FIRE_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))),
|
||||
new SpeciesFormChange(Species.SILVALLY, "normal", "water", new SpeciesFormChangeItemTrigger(FormChangeItem.WATER_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))),
|
||||
new SpeciesFormChange(Species.SILVALLY, "normal", "grass", new SpeciesFormChangeItemTrigger(FormChangeItem.GRASS_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))),
|
||||
new SpeciesFormChange(Species.SILVALLY, "normal", "electric", new SpeciesFormChangeItemTrigger(FormChangeItem.ELECTRIC_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))),
|
||||
new SpeciesFormChange(Species.SILVALLY, "normal", "psychic", new SpeciesFormChangeItemTrigger(FormChangeItem.PSYCHIC_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))),
|
||||
new SpeciesFormChange(Species.SILVALLY, "normal", "ice", new SpeciesFormChangeItemTrigger(FormChangeItem.ICE_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))),
|
||||
new SpeciesFormChange(Species.SILVALLY, "normal", "dragon", new SpeciesFormChangeItemTrigger(FormChangeItem.DRAGON_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))),
|
||||
new SpeciesFormChange(Species.SILVALLY, "normal", "dark", new SpeciesFormChangeItemTrigger(FormChangeItem.DARK_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))),
|
||||
new SpeciesFormChange(Species.SILVALLY, "normal", "fairy", new SpeciesFormChangeItemTrigger(FormChangeItem.FAIRY_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM)))
|
||||
],
|
||||
[Species.MINIOR]: [
|
||||
new SpeciesFormChange(Species.MINIOR, "red-meteor", "red", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(Species.MINIOR, "red", "red-meteor", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(Species.MINIOR, "orange-meteor", "orange", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(Species.MINIOR, "orange", "orange-meteor", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(Species.MINIOR, "yellow-meteor", "yellow", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(Species.MINIOR, "yellow", "yellow-meteor", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(Species.MINIOR, "green-meteor", "green", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(Species.MINIOR, "green", "green-meteor", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(Species.MINIOR, "blue-meteor", "blue", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(Species.MINIOR, "blue", "blue-meteor", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(Species.MINIOR, "indigo-meteor", "indigo", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(Species.MINIOR, "indigo", "indigo-meteor", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(Species.MINIOR, "violet-meteor", "violet", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(Species.MINIOR, "violet", "violet-meteor", new SpeciesFormChangeAbilityTrigger(), true)
|
||||
],
|
||||
[Species.MIMIKYU]: [
|
||||
new SpeciesFormChange(Species.MIMIKYU, "disguised", "busted", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(Species.MIMIKYU, "busted", "disguised", new SpeciesFormChangeAbilityTrigger(), true)
|
||||
],
|
||||
[Species.NECROZMA]: [
|
||||
new SpeciesFormChange(Species.NECROZMA, "", "dawn-wings", new SpeciesFormChangeItemTrigger(FormChangeItem.N_LUNARIZER), false, getSpeciesDependentFormChangeCondition(Species.LUNALA)),
|
||||
new SpeciesFormChange(Species.NECROZMA, "", "dusk-mane", new SpeciesFormChangeItemTrigger(FormChangeItem.N_SOLARIZER), false, getSpeciesDependentFormChangeCondition(Species.SOLGALEO)),
|
||||
new SpeciesFormChange(Species.NECROZMA, "dawn-wings", "ultra", new SpeciesFormChangeItemTrigger(FormChangeItem.ULTRANECROZIUM_Z)),
|
||||
new SpeciesFormChange(Species.NECROZMA, "dusk-mane", "ultra", new SpeciesFormChangeItemTrigger(FormChangeItem.ULTRANECROZIUM_Z))
|
||||
],
|
||||
[Species.MELMETAL]: [
|
||||
new SpeciesFormChange(Species.MELMETAL, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[Species.RILLABOOM]: [
|
||||
new SpeciesFormChange(Species.RILLABOOM, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[Species.CINDERACE]: [
|
||||
new SpeciesFormChange(Species.CINDERACE, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[Species.INTELEON]: [
|
||||
new SpeciesFormChange(Species.INTELEON, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[Species.CORVIKNIGHT]: [
|
||||
new SpeciesFormChange(Species.CORVIKNIGHT, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[Species.ORBEETLE]: [
|
||||
new SpeciesFormChange(Species.ORBEETLE, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[Species.DREDNAW]: [
|
||||
new SpeciesFormChange(Species.DREDNAW, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[Species.COALOSSAL]: [
|
||||
new SpeciesFormChange(Species.COALOSSAL, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[Species.FLAPPLE]: [
|
||||
new SpeciesFormChange(Species.FLAPPLE, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[Species.APPLETUN]: [
|
||||
new SpeciesFormChange(Species.APPLETUN, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[Species.SANDACONDA]: [
|
||||
new SpeciesFormChange(Species.SANDACONDA, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[Species.CRAMORANT]: [
|
||||
new SpeciesFormChange(Species.CRAMORANT, "", "gulping", new SpeciesFormChangeAbilityTrigger, true, new SpeciesFormChangeCondition(p => p.getHpRatio() >= .5)),
|
||||
new SpeciesFormChange(Species.CRAMORANT, "", "gorging", new SpeciesFormChangeAbilityTrigger, true, new SpeciesFormChangeCondition(p => p.getHpRatio() < .5)),
|
||||
new SpeciesFormChange(Species.CRAMORANT, "gulping", "", new SpeciesFormChangeAbilityTrigger, true),
|
||||
new SpeciesFormChange(Species.CRAMORANT, "gorging", "", new SpeciesFormChangeAbilityTrigger, true),
|
||||
new SpeciesFormChange(Species.CRAMORANT, "gulping", "", new SpeciesFormChangeActiveTrigger(false), true),
|
||||
new SpeciesFormChange(Species.CRAMORANT, "gorging", "", new SpeciesFormChangeActiveTrigger(false), true)
|
||||
],
|
||||
[Species.TOXTRICITY]: [
|
||||
new SpeciesFormChange(Species.TOXTRICITY, "amped", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)),
|
||||
new SpeciesFormChange(Species.TOXTRICITY, "lowkey", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)),
|
||||
new SpeciesFormChange(Species.TOXTRICITY, SpeciesFormKey.GIGANTAMAX, "amped", new SpeciesFormChangeCompoundTrigger(new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS, false), new SpeciesDefaultFormMatchTrigger("amped"))),
|
||||
new SpeciesFormChange(Species.TOXTRICITY, SpeciesFormKey.GIGANTAMAX, "lowkey", new SpeciesFormChangeCompoundTrigger(new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS, false), new SpeciesDefaultFormMatchTrigger("lowkey")))
|
||||
],
|
||||
[Species.CENTISKORCH]: [
|
||||
new SpeciesFormChange(Species.CENTISKORCH, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[Species.HATTERENE]: [
|
||||
new SpeciesFormChange(Species.HATTERENE, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[Species.GRIMMSNARL]: [
|
||||
new SpeciesFormChange(Species.GRIMMSNARL, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[Species.ALCREMIE]: [
|
||||
new SpeciesFormChange(Species.ALCREMIE, "vanilla-cream", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)),
|
||||
new SpeciesFormChange(Species.ALCREMIE, "ruby-cream", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)),
|
||||
new SpeciesFormChange(Species.ALCREMIE, "matcha-cream", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)),
|
||||
new SpeciesFormChange(Species.ALCREMIE, "mint-cream", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)),
|
||||
new SpeciesFormChange(Species.ALCREMIE, "lemon-cream", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)),
|
||||
new SpeciesFormChange(Species.ALCREMIE, "salted-cream", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)),
|
||||
new SpeciesFormChange(Species.ALCREMIE, "ruby-swirl", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)),
|
||||
new SpeciesFormChange(Species.ALCREMIE, "caramel-swirl", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)),
|
||||
new SpeciesFormChange(Species.ALCREMIE, "rainbow-swirl", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[Species.EISCUE]: [
|
||||
new SpeciesFormChange(Species.EISCUE, "", "no-ice", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(Species.EISCUE, "no-ice", "", new SpeciesFormChangeAbilityTrigger(), true)
|
||||
],
|
||||
[Species.MORPEKO]: [
|
||||
new SpeciesFormChange(Species.MORPEKO, "full-belly", "hangry", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(Species.MORPEKO, "hangry", "full-belly", new SpeciesFormChangeAbilityTrigger(), true)
|
||||
],
|
||||
[Species.COPPERAJAH]: [
|
||||
new SpeciesFormChange(Species.COPPERAJAH, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[Species.DURALUDON]: [
|
||||
new SpeciesFormChange(Species.DURALUDON, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[Species.ZACIAN]: [
|
||||
new SpeciesFormChange(Species.ZACIAN, "hero-of-many-battles", "crowned", new SpeciesFormChangeItemTrigger(FormChangeItem.RUSTED_SWORD))
|
||||
],
|
||||
[Species.ZAMAZENTA]: [
|
||||
new SpeciesFormChange(Species.ZAMAZENTA, "hero-of-many-battles", "crowned", new SpeciesFormChangeItemTrigger(FormChangeItem.RUSTED_SHIELD))
|
||||
],
|
||||
[Species.ETERNATUS]: [
|
||||
new SpeciesFormChange(Species.ETERNATUS, "", SpeciesFormKey.ETERNAMAX, new SpeciesFormChangeManualTrigger()),
|
||||
new SpeciesFormChange(Species.ETERNATUS, "", SpeciesFormKey.ETERNAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[Species.URSHIFU]: [
|
||||
new SpeciesFormChange(Species.URSHIFU, "single-strike", SpeciesFormKey.GIGANTAMAX_SINGLE, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)),
|
||||
new SpeciesFormChange(Species.URSHIFU, "rapid-strike", SpeciesFormKey.GIGANTAMAX_RAPID, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[Species.CALYREX]: [
|
||||
new SpeciesFormChange(Species.CALYREX, "", "ice", new SpeciesFormChangeItemTrigger(FormChangeItem.ICY_REINS_OF_UNITY), false, getSpeciesDependentFormChangeCondition(Species.GLASTRIER)),
|
||||
new SpeciesFormChange(Species.CALYREX, "", "shadow", new SpeciesFormChangeItemTrigger(FormChangeItem.SHADOW_REINS_OF_UNITY), false, getSpeciesDependentFormChangeCondition(Species.SPECTRIER))
|
||||
],
|
||||
[Species.ENAMORUS]: [
|
||||
new SpeciesFormChange(Species.ENAMORUS, SpeciesFormKey.INCARNATE, SpeciesFormKey.THERIAN, new SpeciesFormChangeItemTrigger(FormChangeItem.REVEAL_GLASS))
|
||||
],
|
||||
[Species.OGERPON]: [
|
||||
new SpeciesFormChange(Species.OGERPON, "teal-mask", "wellspring-mask", new SpeciesFormChangeItemTrigger(FormChangeItem.WELLSPRING_MASK)),
|
||||
new SpeciesFormChange(Species.OGERPON, "teal-mask", "hearthflame-mask", new SpeciesFormChangeItemTrigger(FormChangeItem.HEARTHFLAME_MASK)),
|
||||
new SpeciesFormChange(Species.OGERPON, "teal-mask", "cornerstone-mask", new SpeciesFormChangeItemTrigger(FormChangeItem.CORNERSTONE_MASK)),
|
||||
new SpeciesFormChange(Species.OGERPON, "teal-mask", "teal-mask-tera", new SpeciesFormChangeTeraTrigger(), true),
|
||||
new SpeciesFormChange(Species.OGERPON, "teal-mask-tera", "teal-mask", new SpeciesFormChangeLapseTeraTrigger(), true),
|
||||
new SpeciesFormChange(Species.OGERPON, "wellspring-mask", "wellspring-mask-tera", new SpeciesFormChangeTeraTrigger(), true),
|
||||
new SpeciesFormChange(Species.OGERPON, "wellspring-mask-tera", "wellspring-mask", new SpeciesFormChangeLapseTeraTrigger(), true),
|
||||
new SpeciesFormChange(Species.OGERPON, "hearthflame-mask", "hearthflame-mask-tera", new SpeciesFormChangeTeraTrigger(), true),
|
||||
new SpeciesFormChange(Species.OGERPON, "hearthflame-mask-tera", "hearthflame-mask", new SpeciesFormChangeLapseTeraTrigger(), true),
|
||||
new SpeciesFormChange(Species.OGERPON, "cornerstone-mask", "cornerstone-mask-tera", new SpeciesFormChangeTeraTrigger(), true),
|
||||
new SpeciesFormChange(Species.OGERPON, "cornerstone-mask-tera", "cornerstone-mask", new SpeciesFormChangeLapseTeraTrigger(), true)
|
||||
],
|
||||
[Species.TERAPAGOS]: [
|
||||
new SpeciesFormChange(Species.TERAPAGOS, "", "terastal", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(Species.TERAPAGOS, "terastal", "stellar", new SpeciesFormChangeTeraTrigger(), true),
|
||||
new SpeciesFormChange(Species.TERAPAGOS, "stellar", "terastal", new SpeciesFormChangeLapseTeraTrigger(), true)
|
||||
],
|
||||
[Species.GALAR_DARMANITAN]: [
|
||||
new SpeciesFormChange(Species.GALAR_DARMANITAN, "", "zen", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(Species.GALAR_DARMANITAN, "zen", "", new SpeciesFormChangeAbilityTrigger(), true)
|
||||
[SpeciesId.DIALGA]: [
|
||||
new SpeciesFormChange(SpeciesId.DIALGA, "", SpeciesFormKey.ORIGIN, new SpeciesFormChangeItemTrigger(FormChangeItem.ADAMANT_CRYSTAL))
|
||||
],
|
||||
[SpeciesId.PALKIA]: [
|
||||
new SpeciesFormChange(SpeciesId.PALKIA, "", SpeciesFormKey.ORIGIN, new SpeciesFormChangeItemTrigger(FormChangeItem.LUSTROUS_GLOBE))
|
||||
],
|
||||
[SpeciesId.GIRATINA]: [
|
||||
new SpeciesFormChange(SpeciesId.GIRATINA, "altered", SpeciesFormKey.ORIGIN, new SpeciesFormChangeItemTrigger(FormChangeItem.GRISEOUS_CORE))
|
||||
],
|
||||
[SpeciesId.SHAYMIN]: [
|
||||
new SpeciesFormChange(SpeciesId.SHAYMIN, "land", "sky", new SpeciesFormChangeItemTrigger(FormChangeItem.GRACIDEA)),
|
||||
],
|
||||
[SpeciesId.ARCEUS]: [
|
||||
new SpeciesFormChange(SpeciesId.ARCEUS, "normal", "fighting", new SpeciesFormChangeItemTrigger(FormChangeItem.FIST_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))),
|
||||
new SpeciesFormChange(SpeciesId.ARCEUS, "normal", "flying", new SpeciesFormChangeItemTrigger(FormChangeItem.SKY_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))),
|
||||
new SpeciesFormChange(SpeciesId.ARCEUS, "normal", "poison", new SpeciesFormChangeItemTrigger(FormChangeItem.TOXIC_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))),
|
||||
new SpeciesFormChange(SpeciesId.ARCEUS, "normal", "ground", new SpeciesFormChangeItemTrigger(FormChangeItem.EARTH_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))),
|
||||
new SpeciesFormChange(SpeciesId.ARCEUS, "normal", "rock", new SpeciesFormChangeItemTrigger(FormChangeItem.STONE_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))),
|
||||
new SpeciesFormChange(SpeciesId.ARCEUS, "normal", "bug", new SpeciesFormChangeItemTrigger(FormChangeItem.INSECT_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))),
|
||||
new SpeciesFormChange(SpeciesId.ARCEUS, "normal", "ghost", new SpeciesFormChangeItemTrigger(FormChangeItem.SPOOKY_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))),
|
||||
new SpeciesFormChange(SpeciesId.ARCEUS, "normal", "steel", new SpeciesFormChangeItemTrigger(FormChangeItem.IRON_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))),
|
||||
new SpeciesFormChange(SpeciesId.ARCEUS, "normal", "fire", new SpeciesFormChangeItemTrigger(FormChangeItem.FLAME_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))),
|
||||
new SpeciesFormChange(SpeciesId.ARCEUS, "normal", "water", new SpeciesFormChangeItemTrigger(FormChangeItem.SPLASH_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))),
|
||||
new SpeciesFormChange(SpeciesId.ARCEUS, "normal", "grass", new SpeciesFormChangeItemTrigger(FormChangeItem.MEADOW_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))),
|
||||
new SpeciesFormChange(SpeciesId.ARCEUS, "normal", "electric", new SpeciesFormChangeItemTrigger(FormChangeItem.ZAP_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))),
|
||||
new SpeciesFormChange(SpeciesId.ARCEUS, "normal", "psychic", new SpeciesFormChangeItemTrigger(FormChangeItem.MIND_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))),
|
||||
new SpeciesFormChange(SpeciesId.ARCEUS, "normal", "ice", new SpeciesFormChangeItemTrigger(FormChangeItem.ICICLE_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))),
|
||||
new SpeciesFormChange(SpeciesId.ARCEUS, "normal", "dragon", new SpeciesFormChangeItemTrigger(FormChangeItem.DRACO_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))),
|
||||
new SpeciesFormChange(SpeciesId.ARCEUS, "normal", "dark", new SpeciesFormChangeItemTrigger(FormChangeItem.DREAD_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))),
|
||||
new SpeciesFormChange(SpeciesId.ARCEUS, "normal", "fairy", new SpeciesFormChangeItemTrigger(FormChangeItem.PIXIE_PLATE), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.MULTITYPE))),
|
||||
],
|
||||
[SpeciesId.DARMANITAN]: [
|
||||
new SpeciesFormChange(SpeciesId.DARMANITAN, "", "zen", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(SpeciesId.DARMANITAN, "zen", "", new SpeciesFormChangeAbilityTrigger(), true)
|
||||
],
|
||||
[SpeciesId.GARBODOR]: [
|
||||
new SpeciesFormChange(SpeciesId.GARBODOR, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[SpeciesId.TORNADUS]: [
|
||||
new SpeciesFormChange(SpeciesId.TORNADUS, SpeciesFormKey.INCARNATE, SpeciesFormKey.THERIAN, new SpeciesFormChangeItemTrigger(FormChangeItem.REVEAL_GLASS))
|
||||
],
|
||||
[SpeciesId.THUNDURUS]: [
|
||||
new SpeciesFormChange(SpeciesId.THUNDURUS, SpeciesFormKey.INCARNATE, SpeciesFormKey.THERIAN, new SpeciesFormChangeItemTrigger(FormChangeItem.REVEAL_GLASS))
|
||||
],
|
||||
[SpeciesId.LANDORUS]: [
|
||||
new SpeciesFormChange(SpeciesId.LANDORUS, SpeciesFormKey.INCARNATE, SpeciesFormKey.THERIAN, new SpeciesFormChangeItemTrigger(FormChangeItem.REVEAL_GLASS))
|
||||
],
|
||||
[SpeciesId.KYUREM]: [
|
||||
new SpeciesFormChange(SpeciesId.KYUREM, "", "black", new SpeciesFormChangeItemTrigger(FormChangeItem.DARK_STONE), false, getSpeciesDependentFormChangeCondition(SpeciesId.ZEKROM)),
|
||||
new SpeciesFormChange(SpeciesId.KYUREM, "", "white", new SpeciesFormChangeItemTrigger(FormChangeItem.LIGHT_STONE), false, getSpeciesDependentFormChangeCondition(SpeciesId.RESHIRAM))
|
||||
],
|
||||
[SpeciesId.KELDEO]: [
|
||||
new SpeciesFormChange(SpeciesId.KELDEO, "ordinary", "resolute", new SpeciesFormChangeMoveLearnedTrigger(MoveId.SECRET_SWORD), false, new SpeciesFormChangeCondition(() => globalScene.gameMode.isDaily !== true)),
|
||||
new SpeciesFormChange(SpeciesId.KELDEO, "resolute", "ordinary", new SpeciesFormChangeMoveLearnedTrigger(MoveId.SECRET_SWORD, false), false, new SpeciesFormChangeCondition(() => globalScene.gameMode.isDaily !== true))
|
||||
],
|
||||
[SpeciesId.MELOETTA]: [
|
||||
new SpeciesFormChange(SpeciesId.MELOETTA, "aria", "pirouette", new MeloettaFormChangePostMoveTrigger(MoveId.RELIC_SONG), true),
|
||||
new SpeciesFormChange(SpeciesId.MELOETTA, "pirouette", "aria", new MeloettaFormChangePostMoveTrigger(MoveId.RELIC_SONG), true)
|
||||
],
|
||||
[SpeciesId.GENESECT]: [
|
||||
new SpeciesFormChange(SpeciesId.GENESECT, "", "shock", new SpeciesFormChangeItemTrigger(FormChangeItem.SHOCK_DRIVE)),
|
||||
new SpeciesFormChange(SpeciesId.GENESECT, "", "burn", new SpeciesFormChangeItemTrigger(FormChangeItem.BURN_DRIVE)),
|
||||
new SpeciesFormChange(SpeciesId.GENESECT, "", "chill", new SpeciesFormChangeItemTrigger(FormChangeItem.CHILL_DRIVE)),
|
||||
new SpeciesFormChange(SpeciesId.GENESECT, "", "douse", new SpeciesFormChangeItemTrigger(FormChangeItem.DOUSE_DRIVE))
|
||||
],
|
||||
[SpeciesId.GRENINJA]: [
|
||||
new SpeciesFormChange(SpeciesId.GRENINJA, "battle-bond", "ash", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(SpeciesId.GRENINJA, "ash", "battle-bond", new SpeciesFormChangeAbilityTrigger(), true)
|
||||
],
|
||||
[SpeciesId.PALAFIN] : [
|
||||
new SpeciesFormChange(SpeciesId.PALAFIN, "zero", "hero", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(SpeciesId.PALAFIN, "hero", "zero", new SpeciesFormChangeAbilityTrigger(), true)
|
||||
],
|
||||
[SpeciesId.AEGISLASH]: [
|
||||
new SpeciesFormChange(SpeciesId.AEGISLASH, "blade", "shield", new SpeciesFormChangePreMoveTrigger(MoveId.KINGS_SHIELD), true, new SpeciesFormChangeCondition(p => p.hasAbility(AbilityId.STANCE_CHANGE))),
|
||||
new SpeciesFormChange(SpeciesId.AEGISLASH, "shield", "blade", new SpeciesFormChangePreMoveTrigger(m => allMoves[m].category !== MoveCategory.STATUS), true, new SpeciesFormChangeCondition(p => p.hasAbility(AbilityId.STANCE_CHANGE))),
|
||||
new SpeciesFormChange(SpeciesId.AEGISLASH, "blade", "shield", new SpeciesFormChangeActiveTrigger(false), true)
|
||||
],
|
||||
[SpeciesId.XERNEAS]: [
|
||||
new SpeciesFormChange(SpeciesId.XERNEAS, "neutral", "active", new SpeciesFormChangeActiveTrigger(true), true),
|
||||
new SpeciesFormChange(SpeciesId.XERNEAS, "active", "neutral", new SpeciesFormChangeActiveTrigger(false), true)
|
||||
],
|
||||
[SpeciesId.ZYGARDE]: [
|
||||
new SpeciesFormChange(SpeciesId.ZYGARDE, "50-pc", "complete", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(SpeciesId.ZYGARDE, "complete", "50-pc", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(SpeciesId.ZYGARDE, "10-pc", "10-complete", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(SpeciesId.ZYGARDE, "10-complete", "10-pc", new SpeciesFormChangeAbilityTrigger(), true)
|
||||
],
|
||||
[SpeciesId.DIANCIE]: [
|
||||
new SpeciesFormChange(SpeciesId.DIANCIE, "", SpeciesFormKey.MEGA, new SpeciesFormChangeItemTrigger(FormChangeItem.DIANCITE))
|
||||
],
|
||||
[SpeciesId.HOOPA]: [
|
||||
new SpeciesFormChange(SpeciesId.HOOPA, "", "unbound", new SpeciesFormChangeItemTrigger(FormChangeItem.PRISON_BOTTLE))
|
||||
],
|
||||
[SpeciesId.WISHIWASHI]: [
|
||||
new SpeciesFormChange(SpeciesId.WISHIWASHI, "", "school", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(SpeciesId.WISHIWASHI, "school", "", new SpeciesFormChangeAbilityTrigger(), true)
|
||||
],
|
||||
[SpeciesId.SILVALLY]: [
|
||||
new SpeciesFormChange(SpeciesId.SILVALLY, "normal", "fighting", new SpeciesFormChangeItemTrigger(FormChangeItem.FIGHTING_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))),
|
||||
new SpeciesFormChange(SpeciesId.SILVALLY, "normal", "flying", new SpeciesFormChangeItemTrigger(FormChangeItem.FLYING_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))),
|
||||
new SpeciesFormChange(SpeciesId.SILVALLY, "normal", "poison", new SpeciesFormChangeItemTrigger(FormChangeItem.POISON_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))),
|
||||
new SpeciesFormChange(SpeciesId.SILVALLY, "normal", "ground", new SpeciesFormChangeItemTrigger(FormChangeItem.GROUND_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))),
|
||||
new SpeciesFormChange(SpeciesId.SILVALLY, "normal", "rock", new SpeciesFormChangeItemTrigger(FormChangeItem.ROCK_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))),
|
||||
new SpeciesFormChange(SpeciesId.SILVALLY, "normal", "bug", new SpeciesFormChangeItemTrigger(FormChangeItem.BUG_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))),
|
||||
new SpeciesFormChange(SpeciesId.SILVALLY, "normal", "ghost", new SpeciesFormChangeItemTrigger(FormChangeItem.GHOST_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))),
|
||||
new SpeciesFormChange(SpeciesId.SILVALLY, "normal", "steel", new SpeciesFormChangeItemTrigger(FormChangeItem.STEEL_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))),
|
||||
new SpeciesFormChange(SpeciesId.SILVALLY, "normal", "fire", new SpeciesFormChangeItemTrigger(FormChangeItem.FIRE_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))),
|
||||
new SpeciesFormChange(SpeciesId.SILVALLY, "normal", "water", new SpeciesFormChangeItemTrigger(FormChangeItem.WATER_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))),
|
||||
new SpeciesFormChange(SpeciesId.SILVALLY, "normal", "grass", new SpeciesFormChangeItemTrigger(FormChangeItem.GRASS_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))),
|
||||
new SpeciesFormChange(SpeciesId.SILVALLY, "normal", "electric", new SpeciesFormChangeItemTrigger(FormChangeItem.ELECTRIC_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))),
|
||||
new SpeciesFormChange(SpeciesId.SILVALLY, "normal", "psychic", new SpeciesFormChangeItemTrigger(FormChangeItem.PSYCHIC_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))),
|
||||
new SpeciesFormChange(SpeciesId.SILVALLY, "normal", "ice", new SpeciesFormChangeItemTrigger(FormChangeItem.ICE_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))),
|
||||
new SpeciesFormChange(SpeciesId.SILVALLY, "normal", "dragon", new SpeciesFormChangeItemTrigger(FormChangeItem.DRAGON_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))),
|
||||
new SpeciesFormChange(SpeciesId.SILVALLY, "normal", "dark", new SpeciesFormChangeItemTrigger(FormChangeItem.DARK_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM))),
|
||||
new SpeciesFormChange(SpeciesId.SILVALLY, "normal", "fairy", new SpeciesFormChangeItemTrigger(FormChangeItem.FAIRY_MEMORY), true, new SpeciesFormChangeCondition((p) => p.hasAbility(AbilityId.RKS_SYSTEM)))
|
||||
],
|
||||
[SpeciesId.MINIOR]: [
|
||||
new SpeciesFormChange(SpeciesId.MINIOR, "red-meteor", "red", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(SpeciesId.MINIOR, "red", "red-meteor", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(SpeciesId.MINIOR, "orange-meteor", "orange", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(SpeciesId.MINIOR, "orange", "orange-meteor", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(SpeciesId.MINIOR, "yellow-meteor", "yellow", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(SpeciesId.MINIOR, "yellow", "yellow-meteor", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(SpeciesId.MINIOR, "green-meteor", "green", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(SpeciesId.MINIOR, "green", "green-meteor", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(SpeciesId.MINIOR, "blue-meteor", "blue", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(SpeciesId.MINIOR, "blue", "blue-meteor", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(SpeciesId.MINIOR, "indigo-meteor", "indigo", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(SpeciesId.MINIOR, "indigo", "indigo-meteor", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(SpeciesId.MINIOR, "violet-meteor", "violet", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(SpeciesId.MINIOR, "violet", "violet-meteor", new SpeciesFormChangeAbilityTrigger(), true)
|
||||
],
|
||||
[SpeciesId.MIMIKYU]: [
|
||||
new SpeciesFormChange(SpeciesId.MIMIKYU, "disguised", "busted", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(SpeciesId.MIMIKYU, "busted", "disguised", new SpeciesFormChangeAbilityTrigger(), true)
|
||||
],
|
||||
[SpeciesId.NECROZMA]: [
|
||||
new SpeciesFormChange(SpeciesId.NECROZMA, "", "dawn-wings", new SpeciesFormChangeItemTrigger(FormChangeItem.N_LUNARIZER), false, getSpeciesDependentFormChangeCondition(SpeciesId.LUNALA)),
|
||||
new SpeciesFormChange(SpeciesId.NECROZMA, "", "dusk-mane", new SpeciesFormChangeItemTrigger(FormChangeItem.N_SOLARIZER), false, getSpeciesDependentFormChangeCondition(SpeciesId.SOLGALEO)),
|
||||
new SpeciesFormChange(SpeciesId.NECROZMA, "dawn-wings", "ultra", new SpeciesFormChangeItemTrigger(FormChangeItem.ULTRANECROZIUM_Z)),
|
||||
new SpeciesFormChange(SpeciesId.NECROZMA, "dusk-mane", "ultra", new SpeciesFormChangeItemTrigger(FormChangeItem.ULTRANECROZIUM_Z))
|
||||
],
|
||||
[SpeciesId.MELMETAL]: [
|
||||
new SpeciesFormChange(SpeciesId.MELMETAL, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[SpeciesId.RILLABOOM]: [
|
||||
new SpeciesFormChange(SpeciesId.RILLABOOM, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[SpeciesId.CINDERACE]: [
|
||||
new SpeciesFormChange(SpeciesId.CINDERACE, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[SpeciesId.INTELEON]: [
|
||||
new SpeciesFormChange(SpeciesId.INTELEON, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[SpeciesId.CORVIKNIGHT]: [
|
||||
new SpeciesFormChange(SpeciesId.CORVIKNIGHT, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[SpeciesId.ORBEETLE]: [
|
||||
new SpeciesFormChange(SpeciesId.ORBEETLE, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[SpeciesId.DREDNAW]: [
|
||||
new SpeciesFormChange(SpeciesId.DREDNAW, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[SpeciesId.COALOSSAL]: [
|
||||
new SpeciesFormChange(SpeciesId.COALOSSAL, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[SpeciesId.FLAPPLE]: [
|
||||
new SpeciesFormChange(SpeciesId.FLAPPLE, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[SpeciesId.APPLETUN]: [
|
||||
new SpeciesFormChange(SpeciesId.APPLETUN, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[SpeciesId.SANDACONDA]: [
|
||||
new SpeciesFormChange(SpeciesId.SANDACONDA, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[SpeciesId.CRAMORANT]: [
|
||||
new SpeciesFormChange(SpeciesId.CRAMORANT, "", "gulping", new SpeciesFormChangeAbilityTrigger, true, new SpeciesFormChangeCondition(p => p.getHpRatio() >= .5)),
|
||||
new SpeciesFormChange(SpeciesId.CRAMORANT, "", "gorging", new SpeciesFormChangeAbilityTrigger, true, new SpeciesFormChangeCondition(p => p.getHpRatio() < .5)),
|
||||
new SpeciesFormChange(SpeciesId.CRAMORANT, "gulping", "", new SpeciesFormChangeAbilityTrigger, true),
|
||||
new SpeciesFormChange(SpeciesId.CRAMORANT, "gorging", "", new SpeciesFormChangeAbilityTrigger, true),
|
||||
new SpeciesFormChange(SpeciesId.CRAMORANT, "gulping", "", new SpeciesFormChangeActiveTrigger(false), true),
|
||||
new SpeciesFormChange(SpeciesId.CRAMORANT, "gorging", "", new SpeciesFormChangeActiveTrigger(false), true)
|
||||
],
|
||||
[SpeciesId.TOXTRICITY]: [
|
||||
new SpeciesFormChange(SpeciesId.TOXTRICITY, "amped", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)),
|
||||
new SpeciesFormChange(SpeciesId.TOXTRICITY, "lowkey", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)),
|
||||
new SpeciesFormChange(SpeciesId.TOXTRICITY, SpeciesFormKey.GIGANTAMAX, "amped", new SpeciesFormChangeCompoundTrigger(new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS, false), new SpeciesDefaultFormMatchTrigger("amped"))),
|
||||
new SpeciesFormChange(SpeciesId.TOXTRICITY, SpeciesFormKey.GIGANTAMAX, "lowkey", new SpeciesFormChangeCompoundTrigger(new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS, false), new SpeciesDefaultFormMatchTrigger("lowkey")))
|
||||
],
|
||||
[SpeciesId.CENTISKORCH]: [
|
||||
new SpeciesFormChange(SpeciesId.CENTISKORCH, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[SpeciesId.HATTERENE]: [
|
||||
new SpeciesFormChange(SpeciesId.HATTERENE, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[SpeciesId.GRIMMSNARL]: [
|
||||
new SpeciesFormChange(SpeciesId.GRIMMSNARL, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[SpeciesId.ALCREMIE]: [
|
||||
new SpeciesFormChange(SpeciesId.ALCREMIE, "vanilla-cream", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)),
|
||||
new SpeciesFormChange(SpeciesId.ALCREMIE, "ruby-cream", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)),
|
||||
new SpeciesFormChange(SpeciesId.ALCREMIE, "matcha-cream", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)),
|
||||
new SpeciesFormChange(SpeciesId.ALCREMIE, "mint-cream", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)),
|
||||
new SpeciesFormChange(SpeciesId.ALCREMIE, "lemon-cream", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)),
|
||||
new SpeciesFormChange(SpeciesId.ALCREMIE, "salted-cream", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)),
|
||||
new SpeciesFormChange(SpeciesId.ALCREMIE, "ruby-swirl", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)),
|
||||
new SpeciesFormChange(SpeciesId.ALCREMIE, "caramel-swirl", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)),
|
||||
new SpeciesFormChange(SpeciesId.ALCREMIE, "rainbow-swirl", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[SpeciesId.EISCUE]: [
|
||||
new SpeciesFormChange(SpeciesId.EISCUE, "", "no-ice", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(SpeciesId.EISCUE, "no-ice", "", new SpeciesFormChangeAbilityTrigger(), true)
|
||||
],
|
||||
[SpeciesId.MORPEKO]: [
|
||||
new SpeciesFormChange(SpeciesId.MORPEKO, "full-belly", "hangry", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(SpeciesId.MORPEKO, "hangry", "full-belly", new SpeciesFormChangeAbilityTrigger(), true)
|
||||
],
|
||||
[SpeciesId.COPPERAJAH]: [
|
||||
new SpeciesFormChange(SpeciesId.COPPERAJAH, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[SpeciesId.DURALUDON]: [
|
||||
new SpeciesFormChange(SpeciesId.DURALUDON, "", SpeciesFormKey.GIGANTAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[SpeciesId.ZACIAN]: [
|
||||
new SpeciesFormChange(SpeciesId.ZACIAN, "hero-of-many-battles", "crowned", new SpeciesFormChangeItemTrigger(FormChangeItem.RUSTED_SWORD))
|
||||
],
|
||||
[SpeciesId.ZAMAZENTA]: [
|
||||
new SpeciesFormChange(SpeciesId.ZAMAZENTA, "hero-of-many-battles", "crowned", new SpeciesFormChangeItemTrigger(FormChangeItem.RUSTED_SHIELD))
|
||||
],
|
||||
[SpeciesId.ETERNATUS]: [
|
||||
new SpeciesFormChange(SpeciesId.ETERNATUS, "", SpeciesFormKey.ETERNAMAX, new SpeciesFormChangeManualTrigger()),
|
||||
new SpeciesFormChange(SpeciesId.ETERNATUS, "", SpeciesFormKey.ETERNAMAX, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[SpeciesId.URSHIFU]: [
|
||||
new SpeciesFormChange(SpeciesId.URSHIFU, "single-strike", SpeciesFormKey.GIGANTAMAX_SINGLE, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS)),
|
||||
new SpeciesFormChange(SpeciesId.URSHIFU, "rapid-strike", SpeciesFormKey.GIGANTAMAX_RAPID, new SpeciesFormChangeItemTrigger(FormChangeItem.MAX_MUSHROOMS))
|
||||
],
|
||||
[SpeciesId.CALYREX]: [
|
||||
new SpeciesFormChange(SpeciesId.CALYREX, "", "ice", new SpeciesFormChangeItemTrigger(FormChangeItem.ICY_REINS_OF_UNITY), false, getSpeciesDependentFormChangeCondition(SpeciesId.GLASTRIER)),
|
||||
new SpeciesFormChange(SpeciesId.CALYREX, "", "shadow", new SpeciesFormChangeItemTrigger(FormChangeItem.SHADOW_REINS_OF_UNITY), false, getSpeciesDependentFormChangeCondition(SpeciesId.SPECTRIER))
|
||||
],
|
||||
[SpeciesId.ENAMORUS]: [
|
||||
new SpeciesFormChange(SpeciesId.ENAMORUS, SpeciesFormKey.INCARNATE, SpeciesFormKey.THERIAN, new SpeciesFormChangeItemTrigger(FormChangeItem.REVEAL_GLASS))
|
||||
],
|
||||
[SpeciesId.OGERPON]: [
|
||||
new SpeciesFormChange(SpeciesId.OGERPON, "teal-mask", "wellspring-mask", new SpeciesFormChangeItemTrigger(FormChangeItem.WELLSPRING_MASK)),
|
||||
new SpeciesFormChange(SpeciesId.OGERPON, "teal-mask", "hearthflame-mask", new SpeciesFormChangeItemTrigger(FormChangeItem.HEARTHFLAME_MASK)),
|
||||
new SpeciesFormChange(SpeciesId.OGERPON, "teal-mask", "cornerstone-mask", new SpeciesFormChangeItemTrigger(FormChangeItem.CORNERSTONE_MASK)),
|
||||
new SpeciesFormChange(SpeciesId.OGERPON, "teal-mask", "teal-mask-tera", new SpeciesFormChangeTeraTrigger(), true),
|
||||
new SpeciesFormChange(SpeciesId.OGERPON, "teal-mask-tera", "teal-mask", new SpeciesFormChangeLapseTeraTrigger(), true),
|
||||
new SpeciesFormChange(SpeciesId.OGERPON, "wellspring-mask", "wellspring-mask-tera", new SpeciesFormChangeTeraTrigger(), true),
|
||||
new SpeciesFormChange(SpeciesId.OGERPON, "wellspring-mask-tera", "wellspring-mask", new SpeciesFormChangeLapseTeraTrigger(), true),
|
||||
new SpeciesFormChange(SpeciesId.OGERPON, "hearthflame-mask", "hearthflame-mask-tera", new SpeciesFormChangeTeraTrigger(), true),
|
||||
new SpeciesFormChange(SpeciesId.OGERPON, "hearthflame-mask-tera", "hearthflame-mask", new SpeciesFormChangeLapseTeraTrigger(), true),
|
||||
new SpeciesFormChange(SpeciesId.OGERPON, "cornerstone-mask", "cornerstone-mask-tera", new SpeciesFormChangeTeraTrigger(), true),
|
||||
new SpeciesFormChange(SpeciesId.OGERPON, "cornerstone-mask-tera", "cornerstone-mask", new SpeciesFormChangeLapseTeraTrigger(), true)
|
||||
],
|
||||
[SpeciesId.TERAPAGOS]: [
|
||||
new SpeciesFormChange(SpeciesId.TERAPAGOS, "", "terastal", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(SpeciesId.TERAPAGOS, "terastal", "stellar", new SpeciesFormChangeTeraTrigger(), true),
|
||||
new SpeciesFormChange(SpeciesId.TERAPAGOS, "stellar", "terastal", new SpeciesFormChangeLapseTeraTrigger(), true)
|
||||
],
|
||||
[SpeciesId.GALAR_DARMANITAN]: [
|
||||
new SpeciesFormChange(SpeciesId.GALAR_DARMANITAN, "", "zen", new SpeciesFormChangeAbilityTrigger(), true),
|
||||
new SpeciesFormChange(SpeciesId.GALAR_DARMANITAN, "zen", "", new SpeciesFormChangeAbilityTrigger(), true)
|
||||
],
|
||||
};
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,438 +1,443 @@
|
||||
import type { TrainerTierPools } from "#app/data/trainers/typedefs";
|
||||
import { TrainerPoolTier } from "#enums/trainer-pool-tier";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
|
||||
/** Team Rocket's admin trainer pool. */
|
||||
const ROCKET: TrainerTierPools = {
|
||||
[TrainerPoolTier.COMMON]: [
|
||||
Species.RATTATA,
|
||||
Species.SPEAROW,
|
||||
Species.EKANS,
|
||||
Species.VILEPLUME,
|
||||
Species.DIGLETT,
|
||||
Species.GROWLITHE,
|
||||
Species.GRIMER,
|
||||
Species.DROWZEE,
|
||||
Species.VOLTORB,
|
||||
Species.EXEGGCUTE,
|
||||
Species.CUBONE,
|
||||
Species.KOFFING,
|
||||
Species.MAGIKARP,
|
||||
Species.ZUBAT,
|
||||
Species.ONIX,
|
||||
Species.HOUNDOUR,
|
||||
Species.MURKROW,
|
||||
SpeciesId.RATTATA,
|
||||
SpeciesId.SPEAROW,
|
||||
SpeciesId.EKANS,
|
||||
SpeciesId.VILEPLUME,
|
||||
SpeciesId.DIGLETT,
|
||||
SpeciesId.GROWLITHE,
|
||||
SpeciesId.GRIMER,
|
||||
SpeciesId.DROWZEE,
|
||||
SpeciesId.VOLTORB,
|
||||
SpeciesId.EXEGGCUTE,
|
||||
SpeciesId.CUBONE,
|
||||
SpeciesId.KOFFING,
|
||||
SpeciesId.MAGIKARP,
|
||||
SpeciesId.ZUBAT,
|
||||
SpeciesId.ONIX,
|
||||
SpeciesId.HOUNDOUR,
|
||||
SpeciesId.MURKROW,
|
||||
],
|
||||
[TrainerPoolTier.UNCOMMON]: [
|
||||
Species.ABRA,
|
||||
Species.GASTLY,
|
||||
Species.OMANYTE,
|
||||
Species.KABUTO,
|
||||
Species.PORYGON,
|
||||
Species.MANKEY,
|
||||
Species.SCYTHER,
|
||||
Species.ELEKID,
|
||||
Species.MAGBY,
|
||||
Species.ALOLA_SANDSHREW,
|
||||
Species.ALOLA_MEOWTH,
|
||||
Species.ALOLA_GEODUDE,
|
||||
Species.ALOLA_GRIMER,
|
||||
Species.PALDEA_TAUROS,
|
||||
SpeciesId.ABRA,
|
||||
SpeciesId.GASTLY,
|
||||
SpeciesId.OMANYTE,
|
||||
SpeciesId.KABUTO,
|
||||
SpeciesId.PORYGON,
|
||||
SpeciesId.MANKEY,
|
||||
SpeciesId.SCYTHER,
|
||||
SpeciesId.ELEKID,
|
||||
SpeciesId.MAGBY,
|
||||
SpeciesId.ALOLA_SANDSHREW,
|
||||
SpeciesId.ALOLA_MEOWTH,
|
||||
SpeciesId.ALOLA_GEODUDE,
|
||||
SpeciesId.ALOLA_GRIMER,
|
||||
SpeciesId.PALDEA_TAUROS,
|
||||
],
|
||||
[TrainerPoolTier.RARE]: [Species.DRATINI, Species.LARVITAR],
|
||||
[TrainerPoolTier.RARE]: [SpeciesId.DRATINI, SpeciesId.LARVITAR],
|
||||
};
|
||||
|
||||
/** Team Magma's admin trainer pool */
|
||||
const MAGMA: TrainerTierPools = {
|
||||
[TrainerPoolTier.COMMON]: [
|
||||
Species.DIGLETT,
|
||||
Species.GROWLITHE,
|
||||
Species.VULPIX,
|
||||
Species.KOFFING,
|
||||
Species.RHYHORN,
|
||||
Species.SLUGMA,
|
||||
Species.HOUNDOUR,
|
||||
Species.POOCHYENA,
|
||||
Species.TORKOAL,
|
||||
Species.ZANGOOSE,
|
||||
Species.SOLROCK,
|
||||
Species.BALTOY,
|
||||
Species.ROLYCOLY,
|
||||
SpeciesId.DIGLETT,
|
||||
SpeciesId.GROWLITHE,
|
||||
SpeciesId.VULPIX,
|
||||
SpeciesId.KOFFING,
|
||||
SpeciesId.RHYHORN,
|
||||
SpeciesId.SLUGMA,
|
||||
SpeciesId.HOUNDOUR,
|
||||
SpeciesId.POOCHYENA,
|
||||
SpeciesId.TORKOAL,
|
||||
SpeciesId.ZANGOOSE,
|
||||
SpeciesId.SOLROCK,
|
||||
SpeciesId.BALTOY,
|
||||
SpeciesId.ROLYCOLY,
|
||||
],
|
||||
[TrainerPoolTier.UNCOMMON]: [
|
||||
Species.MAGBY,
|
||||
Species.TRAPINCH,
|
||||
Species.LILEEP,
|
||||
Species.ANORITH,
|
||||
Species.GOLETT,
|
||||
Species.FLETCHLING,
|
||||
Species.SALANDIT,
|
||||
Species.TURTONATOR,
|
||||
Species.TOEDSCOOL,
|
||||
Species.CAPSAKID,
|
||||
Species.HISUI_GROWLITHE,
|
||||
SpeciesId.MAGBY,
|
||||
SpeciesId.TRAPINCH,
|
||||
SpeciesId.LILEEP,
|
||||
SpeciesId.ANORITH,
|
||||
SpeciesId.GOLETT,
|
||||
SpeciesId.FLETCHLING,
|
||||
SpeciesId.SALANDIT,
|
||||
SpeciesId.TURTONATOR,
|
||||
SpeciesId.TOEDSCOOL,
|
||||
SpeciesId.CAPSAKID,
|
||||
SpeciesId.HISUI_GROWLITHE,
|
||||
],
|
||||
[TrainerPoolTier.RARE]: [Species.CHARCADET, Species.ARON],
|
||||
[TrainerPoolTier.RARE]: [SpeciesId.CHARCADET, SpeciesId.ARON],
|
||||
};
|
||||
|
||||
const AQUA: TrainerTierPools = {
|
||||
[TrainerPoolTier.COMMON]: [
|
||||
Species.TENTACOOL,
|
||||
Species.GRIMER,
|
||||
Species.AZURILL,
|
||||
Species.CHINCHOU,
|
||||
Species.REMORAID,
|
||||
Species.POOCHYENA,
|
||||
Species.LOTAD,
|
||||
Species.WINGULL,
|
||||
Species.WAILMER,
|
||||
Species.SEVIPER,
|
||||
Species.BARBOACH,
|
||||
Species.CORPHISH,
|
||||
Species.SPHEAL,
|
||||
Species.CLAMPERL,
|
||||
SpeciesId.TENTACOOL,
|
||||
SpeciesId.GRIMER,
|
||||
SpeciesId.AZURILL,
|
||||
SpeciesId.CHINCHOU,
|
||||
SpeciesId.REMORAID,
|
||||
SpeciesId.POOCHYENA,
|
||||
SpeciesId.LOTAD,
|
||||
SpeciesId.WINGULL,
|
||||
SpeciesId.WAILMER,
|
||||
SpeciesId.SEVIPER,
|
||||
SpeciesId.BARBOACH,
|
||||
SpeciesId.CORPHISH,
|
||||
SpeciesId.SPHEAL,
|
||||
SpeciesId.CLAMPERL,
|
||||
],
|
||||
[TrainerPoolTier.UNCOMMON]: [
|
||||
Species.MANTYKE,
|
||||
Species.HORSEA,
|
||||
Species.FEEBAS,
|
||||
Species.TYMPOLE,
|
||||
Species.SKRELP,
|
||||
Species.WIMPOD,
|
||||
Species.DHELMISE,
|
||||
Species.ARROKUDA,
|
||||
Species.CLOBBOPUS,
|
||||
Species.HISUI_QWILFISH,
|
||||
Species.WIGLETT,
|
||||
SpeciesId.MANTYKE,
|
||||
SpeciesId.HORSEA,
|
||||
SpeciesId.FEEBAS,
|
||||
SpeciesId.TYMPOLE,
|
||||
SpeciesId.SKRELP,
|
||||
SpeciesId.WIMPOD,
|
||||
SpeciesId.DHELMISE,
|
||||
SpeciesId.ARROKUDA,
|
||||
SpeciesId.CLOBBOPUS,
|
||||
SpeciesId.HISUI_QWILFISH,
|
||||
SpeciesId.WIGLETT,
|
||||
],
|
||||
[TrainerPoolTier.RARE]: [Species.BASCULEGION, Species.DONDOZO],
|
||||
[TrainerPoolTier.RARE]: [SpeciesId.BASCULEGION, SpeciesId.DONDOZO],
|
||||
};
|
||||
|
||||
const GALACTIC: TrainerTierPools = {
|
||||
[TrainerPoolTier.COMMON]: [
|
||||
Species.ZUBAT,
|
||||
Species.MAGNEMITE,
|
||||
Species.RHYHORN,
|
||||
Species.TANGELA,
|
||||
Species.LICKITUNG,
|
||||
Species.MAGIKARP,
|
||||
Species.YANMA,
|
||||
Species.MURKROW,
|
||||
Species.SWINUB,
|
||||
Species.ELEKID,
|
||||
Species.MAGBY,
|
||||
Species.BRONZOR,
|
||||
Species.SKORUPI,
|
||||
SpeciesId.ZUBAT,
|
||||
SpeciesId.MAGNEMITE,
|
||||
SpeciesId.RHYHORN,
|
||||
SpeciesId.TANGELA,
|
||||
SpeciesId.LICKITUNG,
|
||||
SpeciesId.MAGIKARP,
|
||||
SpeciesId.YANMA,
|
||||
SpeciesId.MURKROW,
|
||||
SpeciesId.SWINUB,
|
||||
SpeciesId.ELEKID,
|
||||
SpeciesId.MAGBY,
|
||||
SpeciesId.BRONZOR,
|
||||
SpeciesId.SKORUPI,
|
||||
],
|
||||
[TrainerPoolTier.UNCOMMON]: [
|
||||
Species.ABRA,
|
||||
Species.GLIGAR,
|
||||
Species.SNEASEL,
|
||||
Species.DUSKULL,
|
||||
Species.DRIFLOON,
|
||||
Species.CRANIDOS,
|
||||
Species.SHIELDON,
|
||||
Species.ROTOM,
|
||||
Species.HISUI_QWILFISH,
|
||||
SpeciesId.ABRA,
|
||||
SpeciesId.GLIGAR,
|
||||
SpeciesId.SNEASEL,
|
||||
SpeciesId.DUSKULL,
|
||||
SpeciesId.DRIFLOON,
|
||||
SpeciesId.CRANIDOS,
|
||||
SpeciesId.SHIELDON,
|
||||
SpeciesId.ROTOM,
|
||||
SpeciesId.HISUI_QWILFISH,
|
||||
],
|
||||
[TrainerPoolTier.RARE]: [
|
||||
SpeciesId.SPIRITOMB,
|
||||
SpeciesId.TEDDIURSA,
|
||||
SpeciesId.HISUI_SNEASEL,
|
||||
SpeciesId.HISUI_LILLIGANT,
|
||||
],
|
||||
[TrainerPoolTier.RARE]: [Species.SPIRITOMB, Species.TEDDIURSA, Species.HISUI_SNEASEL, Species.HISUI_LILLIGANT],
|
||||
};
|
||||
|
||||
const PLASMA_ZINZOLIN: TrainerTierPools = {
|
||||
[TrainerPoolTier.COMMON]: [
|
||||
Species.SNEASEL,
|
||||
Species.SWINUB,
|
||||
Species.SNORUNT,
|
||||
Species.SNOVER,
|
||||
Species.TIMBURR,
|
||||
Species.TYMPOLE,
|
||||
Species.SANDILE,
|
||||
Species.DARUMAKA,
|
||||
Species.VANILLITE,
|
||||
Species.FOONGUS,
|
||||
Species.FRILLISH,
|
||||
Species.JOLTIK,
|
||||
Species.FERROSEED,
|
||||
Species.CUBCHOO,
|
||||
Species.GALAR_DARUMAKA,
|
||||
SpeciesId.SNEASEL,
|
||||
SpeciesId.SWINUB,
|
||||
SpeciesId.SNORUNT,
|
||||
SpeciesId.SNOVER,
|
||||
SpeciesId.TIMBURR,
|
||||
SpeciesId.TYMPOLE,
|
||||
SpeciesId.SANDILE,
|
||||
SpeciesId.DARUMAKA,
|
||||
SpeciesId.VANILLITE,
|
||||
SpeciesId.FOONGUS,
|
||||
SpeciesId.FRILLISH,
|
||||
SpeciesId.JOLTIK,
|
||||
SpeciesId.FERROSEED,
|
||||
SpeciesId.CUBCHOO,
|
||||
SpeciesId.GALAR_DARUMAKA,
|
||||
],
|
||||
[TrainerPoolTier.UNCOMMON]: [
|
||||
Species.SPHEAL,
|
||||
Species.DRILBUR,
|
||||
Species.SIGILYPH,
|
||||
Species.YAMASK,
|
||||
Species.ZORUA,
|
||||
Species.TYNAMO,
|
||||
Species.MIENFOO,
|
||||
Species.GOLETT,
|
||||
Species.PAWNIARD,
|
||||
Species.VULLABY,
|
||||
Species.DURANT,
|
||||
Species.BERGMITE,
|
||||
Species.EISCUE,
|
||||
Species.ALOLA_SANDSHREW,
|
||||
Species.HISUI_ZORUA,
|
||||
SpeciesId.SPHEAL,
|
||||
SpeciesId.DRILBUR,
|
||||
SpeciesId.SIGILYPH,
|
||||
SpeciesId.YAMASK,
|
||||
SpeciesId.ZORUA,
|
||||
SpeciesId.TYNAMO,
|
||||
SpeciesId.MIENFOO,
|
||||
SpeciesId.GOLETT,
|
||||
SpeciesId.PAWNIARD,
|
||||
SpeciesId.VULLABY,
|
||||
SpeciesId.DURANT,
|
||||
SpeciesId.BERGMITE,
|
||||
SpeciesId.EISCUE,
|
||||
SpeciesId.ALOLA_SANDSHREW,
|
||||
SpeciesId.HISUI_ZORUA,
|
||||
],
|
||||
[TrainerPoolTier.RARE]: [Species.DEINO, Species.FRIGIBAX, Species.HISUI_BRAVIARY],
|
||||
[TrainerPoolTier.RARE]: [SpeciesId.DEINO, SpeciesId.FRIGIBAX, SpeciesId.HISUI_BRAVIARY],
|
||||
};
|
||||
|
||||
const PLASMA_COLRESS: TrainerTierPools = {
|
||||
[TrainerPoolTier.COMMON]: [
|
||||
Species.MAGNEMITE,
|
||||
Species.GRIMER,
|
||||
Species.VOLTORB,
|
||||
Species.PORYGON,
|
||||
Species.BRONZOR,
|
||||
Species.ROTOM,
|
||||
Species.MUNNA,
|
||||
Species.DWEBBLE,
|
||||
Species.FERROSEED,
|
||||
Species.ELGYEM,
|
||||
SpeciesId.MAGNEMITE,
|
||||
SpeciesId.GRIMER,
|
||||
SpeciesId.VOLTORB,
|
||||
SpeciesId.PORYGON,
|
||||
SpeciesId.BRONZOR,
|
||||
SpeciesId.ROTOM,
|
||||
SpeciesId.MUNNA,
|
||||
SpeciesId.DWEBBLE,
|
||||
SpeciesId.FERROSEED,
|
||||
SpeciesId.ELGYEM,
|
||||
],
|
||||
[TrainerPoolTier.UNCOMMON]: [
|
||||
Species.BELDUM,
|
||||
Species.SIGILYPH,
|
||||
Species.TIRTOUGA,
|
||||
Species.ARCHEN,
|
||||
Species.TYNAMO,
|
||||
Species.GOLETT,
|
||||
Species.BLIPBUG,
|
||||
Species.VAROOM,
|
||||
Species.ALOLA_GRIMER,
|
||||
Species.HISUI_VOLTORB,
|
||||
SpeciesId.BELDUM,
|
||||
SpeciesId.SIGILYPH,
|
||||
SpeciesId.TIRTOUGA,
|
||||
SpeciesId.ARCHEN,
|
||||
SpeciesId.TYNAMO,
|
||||
SpeciesId.GOLETT,
|
||||
SpeciesId.BLIPBUG,
|
||||
SpeciesId.VAROOM,
|
||||
SpeciesId.ALOLA_GRIMER,
|
||||
SpeciesId.HISUI_VOLTORB,
|
||||
],
|
||||
[TrainerPoolTier.RARE]: [Species.ELEKID, Species.MAGBY, Species.PAWNIARD, Species.DURALUDON],
|
||||
[TrainerPoolTier.RARE]: [SpeciesId.ELEKID, SpeciesId.MAGBY, SpeciesId.PAWNIARD, SpeciesId.DURALUDON],
|
||||
};
|
||||
|
||||
const FLARE: TrainerTierPools = {
|
||||
[TrainerPoolTier.COMMON]: [
|
||||
Species.ELECTRIKE,
|
||||
Species.SKORUPI,
|
||||
Species.PURRLOIN,
|
||||
Species.FOONGUS,
|
||||
Species.BUNNELBY,
|
||||
Species.FLETCHLING,
|
||||
Species.LITLEO,
|
||||
Species.PANGORO,
|
||||
Species.ESPURR,
|
||||
Species.INKAY,
|
||||
Species.CLAUNCHER,
|
||||
Species.HELIOPTILE,
|
||||
SpeciesId.ELECTRIKE,
|
||||
SpeciesId.SKORUPI,
|
||||
SpeciesId.PURRLOIN,
|
||||
SpeciesId.FOONGUS,
|
||||
SpeciesId.BUNNELBY,
|
||||
SpeciesId.FLETCHLING,
|
||||
SpeciesId.LITLEO,
|
||||
SpeciesId.PANGORO,
|
||||
SpeciesId.ESPURR,
|
||||
SpeciesId.INKAY,
|
||||
SpeciesId.CLAUNCHER,
|
||||
SpeciesId.HELIOPTILE,
|
||||
],
|
||||
[TrainerPoolTier.UNCOMMON]: [
|
||||
Species.HOUNDOUR,
|
||||
Species.SNEASEL,
|
||||
Species.LITWICK,
|
||||
Species.HONEDGE,
|
||||
Species.BINACLE,
|
||||
Species.SKRELP,
|
||||
Species.NOIBAT,
|
||||
Species.PHANTUMP,
|
||||
Species.PUMPKABOO,
|
||||
SpeciesId.HOUNDOUR,
|
||||
SpeciesId.SNEASEL,
|
||||
SpeciesId.LITWICK,
|
||||
SpeciesId.HONEDGE,
|
||||
SpeciesId.BINACLE,
|
||||
SpeciesId.SKRELP,
|
||||
SpeciesId.NOIBAT,
|
||||
SpeciesId.PHANTUMP,
|
||||
SpeciesId.PUMPKABOO,
|
||||
],
|
||||
[TrainerPoolTier.RARE]: [Species.GOOMY, Species.HISUI_AVALUGG],
|
||||
[TrainerPoolTier.RARE]: [SpeciesId.GOOMY, SpeciesId.HISUI_AVALUGG],
|
||||
};
|
||||
|
||||
const AETHER: TrainerTierPools = {
|
||||
[TrainerPoolTier.COMMON]: [
|
||||
Species.ABRA,
|
||||
Species.SLOWPOKE,
|
||||
Species.MAGNEMITE,
|
||||
Species.EXEGGUTOR,
|
||||
Species.NATU,
|
||||
Species.BALTOY,
|
||||
Species.MIME_JR,
|
||||
Species.ELGYEM,
|
||||
Species.INKAY,
|
||||
Species.BRUXISH,
|
||||
Species.BLIPBUG,
|
||||
Species.ALOLA_RAICHU,
|
||||
SpeciesId.ABRA,
|
||||
SpeciesId.SLOWPOKE,
|
||||
SpeciesId.MAGNEMITE,
|
||||
SpeciesId.EXEGGUTOR,
|
||||
SpeciesId.NATU,
|
||||
SpeciesId.BALTOY,
|
||||
SpeciesId.MIME_JR,
|
||||
SpeciesId.ELGYEM,
|
||||
SpeciesId.INKAY,
|
||||
SpeciesId.BRUXISH,
|
||||
SpeciesId.BLIPBUG,
|
||||
SpeciesId.ALOLA_RAICHU,
|
||||
],
|
||||
[TrainerPoolTier.UNCOMMON]: [
|
||||
Species.RALTS,
|
||||
Species.MEDITITE,
|
||||
Species.BELDUM,
|
||||
Species.SOLOSIS,
|
||||
Species.HATENNA,
|
||||
Species.STANTLER,
|
||||
Species.GIRAFARIG,
|
||||
Species.ALOLA_GRIMER,
|
||||
Species.GALAR_SLOWPOKE,
|
||||
SpeciesId.RALTS,
|
||||
SpeciesId.MEDITITE,
|
||||
SpeciesId.BELDUM,
|
||||
SpeciesId.SOLOSIS,
|
||||
SpeciesId.HATENNA,
|
||||
SpeciesId.STANTLER,
|
||||
SpeciesId.GIRAFARIG,
|
||||
SpeciesId.ALOLA_GRIMER,
|
||||
SpeciesId.GALAR_SLOWPOKE,
|
||||
],
|
||||
[TrainerPoolTier.RARE]: [Species.PORYGON, Species.ARMAROUGE],
|
||||
[TrainerPoolTier.RARE]: [SpeciesId.PORYGON, SpeciesId.ARMAROUGE],
|
||||
};
|
||||
|
||||
const SKULL: TrainerTierPools = {
|
||||
[TrainerPoolTier.COMMON]: [
|
||||
Species.GASTLY,
|
||||
Species.KOFFING,
|
||||
Species.ZUBAT,
|
||||
Species.VENONAT,
|
||||
Species.STUNKY,
|
||||
Species.CROAGUNK,
|
||||
Species.VENIPEDE,
|
||||
Species.SCRAGGY,
|
||||
Species.MAREANIE,
|
||||
Species.FOMANTIS,
|
||||
Species.ALOLA_GRIMER,
|
||||
SpeciesId.GASTLY,
|
||||
SpeciesId.KOFFING,
|
||||
SpeciesId.ZUBAT,
|
||||
SpeciesId.VENONAT,
|
||||
SpeciesId.STUNKY,
|
||||
SpeciesId.CROAGUNK,
|
||||
SpeciesId.VENIPEDE,
|
||||
SpeciesId.SCRAGGY,
|
||||
SpeciesId.MAREANIE,
|
||||
SpeciesId.FOMANTIS,
|
||||
SpeciesId.ALOLA_GRIMER,
|
||||
],
|
||||
[TrainerPoolTier.UNCOMMON]: [
|
||||
Species.NIDORAN_F,
|
||||
Species.SKORUPI,
|
||||
Species.PAWNIARD,
|
||||
Species.VULLABY,
|
||||
Species.TOXEL,
|
||||
Species.GLIMMET,
|
||||
Species.PALDEA_WOOPER,
|
||||
Species.GALAR_SLOWPOKE,
|
||||
SpeciesId.NIDORAN_F,
|
||||
SpeciesId.SKORUPI,
|
||||
SpeciesId.PAWNIARD,
|
||||
SpeciesId.VULLABY,
|
||||
SpeciesId.TOXEL,
|
||||
SpeciesId.GLIMMET,
|
||||
SpeciesId.PALDEA_WOOPER,
|
||||
SpeciesId.GALAR_SLOWPOKE,
|
||||
],
|
||||
[TrainerPoolTier.RARE]: [Species.SKRELP, Species.HISUI_SNEASEL],
|
||||
[TrainerPoolTier.RARE]: [SpeciesId.SKRELP, SpeciesId.HISUI_SNEASEL],
|
||||
};
|
||||
|
||||
const MACRO_COSMOS: TrainerTierPools = {
|
||||
[TrainerPoolTier.COMMON]: [
|
||||
Species.VULPIX,
|
||||
Species.FEEBAS,
|
||||
Species.MAWILE,
|
||||
Species.FROSLASS,
|
||||
Species.GOTHITA,
|
||||
Species.FLABEBE,
|
||||
Species.SALANDIT,
|
||||
Species.TSAREENA,
|
||||
Species.SINISTEA,
|
||||
Species.HATENNA,
|
||||
Species.INDEEDEE,
|
||||
Species.GALAR_PONYTA,
|
||||
SpeciesId.VULPIX,
|
||||
SpeciesId.FEEBAS,
|
||||
SpeciesId.MAWILE,
|
||||
SpeciesId.FROSLASS,
|
||||
SpeciesId.GOTHITA,
|
||||
SpeciesId.FLABEBE,
|
||||
SpeciesId.SALANDIT,
|
||||
SpeciesId.TSAREENA,
|
||||
SpeciesId.SINISTEA,
|
||||
SpeciesId.HATENNA,
|
||||
SpeciesId.INDEEDEE,
|
||||
SpeciesId.GALAR_PONYTA,
|
||||
],
|
||||
[TrainerPoolTier.UNCOMMON]: [
|
||||
Species.TOGEPI,
|
||||
Species.VULLABY,
|
||||
Species.MAREANIE,
|
||||
Species.CUFANT,
|
||||
Species.TINKATINK,
|
||||
Species.ALOLA_VULPIX,
|
||||
Species.GALAR_CORSOLA,
|
||||
SpeciesId.TOGEPI,
|
||||
SpeciesId.VULLABY,
|
||||
SpeciesId.MAREANIE,
|
||||
SpeciesId.CUFANT,
|
||||
SpeciesId.TINKATINK,
|
||||
SpeciesId.ALOLA_VULPIX,
|
||||
SpeciesId.GALAR_CORSOLA,
|
||||
],
|
||||
[TrainerPoolTier.RARE]: [Species.APPLIN, Species.HISUI_LILLIGANT],
|
||||
[TrainerPoolTier.RARE]: [SpeciesId.APPLIN, SpeciesId.HISUI_LILLIGANT],
|
||||
};
|
||||
|
||||
const STAR_DARK: TrainerTierPools = {
|
||||
[TrainerPoolTier.COMMON]: [
|
||||
Species.MURKROW,
|
||||
Species.SEEDOT,
|
||||
Species.SABLEYE,
|
||||
Species.CACNEA,
|
||||
Species.STUNKY,
|
||||
Species.SANDILE,
|
||||
Species.INKAY,
|
||||
Species.NYMBLE,
|
||||
Species.MASCHIFF,
|
||||
SpeciesId.MURKROW,
|
||||
SpeciesId.SEEDOT,
|
||||
SpeciesId.SABLEYE,
|
||||
SpeciesId.CACNEA,
|
||||
SpeciesId.STUNKY,
|
||||
SpeciesId.SANDILE,
|
||||
SpeciesId.INKAY,
|
||||
SpeciesId.NYMBLE,
|
||||
SpeciesId.MASCHIFF,
|
||||
],
|
||||
[TrainerPoolTier.UNCOMMON]: [
|
||||
Species.UMBREON,
|
||||
Species.CORPHISH,
|
||||
Species.SNEASEL,
|
||||
Species.ZORUA,
|
||||
Species.IMPIDIMP,
|
||||
Species.BOMBIRDIER,
|
||||
Species.GALAR_ZIGZAGOON,
|
||||
SpeciesId.UMBREON,
|
||||
SpeciesId.CORPHISH,
|
||||
SpeciesId.SNEASEL,
|
||||
SpeciesId.ZORUA,
|
||||
SpeciesId.IMPIDIMP,
|
||||
SpeciesId.BOMBIRDIER,
|
||||
SpeciesId.GALAR_ZIGZAGOON,
|
||||
],
|
||||
[TrainerPoolTier.RARE]: [Species.DEINO, Species.SPRIGATITO],
|
||||
[TrainerPoolTier.RARE]: [SpeciesId.DEINO, SpeciesId.SPRIGATITO],
|
||||
};
|
||||
|
||||
const STAR_FIRE: TrainerTierPools = {
|
||||
[TrainerPoolTier.COMMON]: [
|
||||
Species.GROWLITHE,
|
||||
Species.HOUNDOUR,
|
||||
Species.NUMEL,
|
||||
Species.TORKOAL,
|
||||
Species.FLETCHLING,
|
||||
Species.LITLEO,
|
||||
Species.SIZZLIPEDE,
|
||||
Species.ROLYCOLY,
|
||||
Species.CAPSAKID,
|
||||
SpeciesId.GROWLITHE,
|
||||
SpeciesId.HOUNDOUR,
|
||||
SpeciesId.NUMEL,
|
||||
SpeciesId.TORKOAL,
|
||||
SpeciesId.FLETCHLING,
|
||||
SpeciesId.LITLEO,
|
||||
SpeciesId.SIZZLIPEDE,
|
||||
SpeciesId.ROLYCOLY,
|
||||
SpeciesId.CAPSAKID,
|
||||
],
|
||||
[TrainerPoolTier.UNCOMMON]: [
|
||||
Species.PONYTA,
|
||||
Species.FLAREON,
|
||||
Species.MAGBY,
|
||||
Species.DARUMAKA,
|
||||
Species.LITWICK,
|
||||
Species.SALANDIT,
|
||||
Species.TURTONATOR,
|
||||
SpeciesId.PONYTA,
|
||||
SpeciesId.FLAREON,
|
||||
SpeciesId.MAGBY,
|
||||
SpeciesId.DARUMAKA,
|
||||
SpeciesId.LITWICK,
|
||||
SpeciesId.SALANDIT,
|
||||
SpeciesId.TURTONATOR,
|
||||
],
|
||||
[TrainerPoolTier.RARE]: [Species.LARVESTA, Species.FUECOCO],
|
||||
[TrainerPoolTier.RARE]: [SpeciesId.LARVESTA, SpeciesId.FUECOCO],
|
||||
};
|
||||
|
||||
const STAR_POISON: TrainerTierPools = {
|
||||
[TrainerPoolTier.COMMON]: [
|
||||
Species.GRIMER,
|
||||
Species.VENONAT,
|
||||
Species.SEVIPER,
|
||||
Species.STUNKY,
|
||||
Species.FOONGUS,
|
||||
Species.MAREANIE,
|
||||
Species.TOXEL,
|
||||
Species.GRAFAIAI,
|
||||
Species.PALDEA_WOOPER,
|
||||
SpeciesId.GRIMER,
|
||||
SpeciesId.VENONAT,
|
||||
SpeciesId.SEVIPER,
|
||||
SpeciesId.STUNKY,
|
||||
SpeciesId.FOONGUS,
|
||||
SpeciesId.MAREANIE,
|
||||
SpeciesId.TOXEL,
|
||||
SpeciesId.GRAFAIAI,
|
||||
SpeciesId.PALDEA_WOOPER,
|
||||
],
|
||||
[TrainerPoolTier.UNCOMMON]: [
|
||||
Species.ZUBAT,
|
||||
Species.GASTLY,
|
||||
Species.SKRELP,
|
||||
Species.OVERQWIL,
|
||||
Species.ALOLA_GRIMER,
|
||||
Species.GALAR_SLOWPOKE,
|
||||
SpeciesId.ZUBAT,
|
||||
SpeciesId.GASTLY,
|
||||
SpeciesId.SKRELP,
|
||||
SpeciesId.OVERQWIL,
|
||||
SpeciesId.ALOLA_GRIMER,
|
||||
SpeciesId.GALAR_SLOWPOKE,
|
||||
],
|
||||
[TrainerPoolTier.RARE]: [Species.GLIMMET, Species.BULBASAUR],
|
||||
[TrainerPoolTier.RARE]: [SpeciesId.GLIMMET, SpeciesId.BULBASAUR],
|
||||
};
|
||||
|
||||
const STAR_FAIRY: TrainerTierPools = {
|
||||
[TrainerPoolTier.COMMON]: [
|
||||
Species.IGGLYBUFF,
|
||||
Species.AZURILL,
|
||||
Species.COTTONEE,
|
||||
Species.FLABEBE,
|
||||
Species.KLEFKI,
|
||||
Species.CUTIEFLY,
|
||||
Species.HATENNA,
|
||||
Species.TINKATINK,
|
||||
SpeciesId.IGGLYBUFF,
|
||||
SpeciesId.AZURILL,
|
||||
SpeciesId.COTTONEE,
|
||||
SpeciesId.FLABEBE,
|
||||
SpeciesId.KLEFKI,
|
||||
SpeciesId.CUTIEFLY,
|
||||
SpeciesId.HATENNA,
|
||||
SpeciesId.TINKATINK,
|
||||
],
|
||||
[TrainerPoolTier.UNCOMMON]: [
|
||||
Species.CLEFFA,
|
||||
Species.TOGEPI,
|
||||
Species.GARDEVOIR,
|
||||
Species.SYLVEON,
|
||||
Species.MIMIKYU,
|
||||
Species.IMPIDIMP,
|
||||
Species.ALOLA_VULPIX,
|
||||
SpeciesId.CLEFFA,
|
||||
SpeciesId.TOGEPI,
|
||||
SpeciesId.GARDEVOIR,
|
||||
SpeciesId.SYLVEON,
|
||||
SpeciesId.MIMIKYU,
|
||||
SpeciesId.IMPIDIMP,
|
||||
SpeciesId.ALOLA_VULPIX,
|
||||
],
|
||||
[TrainerPoolTier.RARE]: [Species.GALAR_PONYTA, Species.POPPLIO],
|
||||
[TrainerPoolTier.RARE]: [SpeciesId.GALAR_PONYTA, SpeciesId.POPPLIO],
|
||||
};
|
||||
|
||||
const STAR_FIGHTING: TrainerTierPools = {
|
||||
[TrainerPoolTier.COMMON]: [
|
||||
Species.TYROGUE,
|
||||
Species.SHROOMISH,
|
||||
Species.MAKUHITA,
|
||||
Species.RIOLU,
|
||||
Species.CROAGUNK,
|
||||
Species.SCRAGGY,
|
||||
Species.MIENFOO,
|
||||
Species.PASSIMIAN,
|
||||
Species.PAWMI,
|
||||
SpeciesId.TYROGUE,
|
||||
SpeciesId.SHROOMISH,
|
||||
SpeciesId.MAKUHITA,
|
||||
SpeciesId.RIOLU,
|
||||
SpeciesId.CROAGUNK,
|
||||
SpeciesId.SCRAGGY,
|
||||
SpeciesId.MIENFOO,
|
||||
SpeciesId.PASSIMIAN,
|
||||
SpeciesId.PAWMI,
|
||||
],
|
||||
[TrainerPoolTier.UNCOMMON]: [
|
||||
Species.MEDITITE,
|
||||
Species.GALLADE,
|
||||
Species.TIMBURR,
|
||||
Species.HAWLUCHA,
|
||||
Species.STUFFUL,
|
||||
Species.FALINKS,
|
||||
Species.FLAMIGO,
|
||||
Species.PALDEA_TAUROS,
|
||||
SpeciesId.MEDITITE,
|
||||
SpeciesId.GALLADE,
|
||||
SpeciesId.TIMBURR,
|
||||
SpeciesId.HAWLUCHA,
|
||||
SpeciesId.STUFFUL,
|
||||
SpeciesId.FALINKS,
|
||||
SpeciesId.FLAMIGO,
|
||||
SpeciesId.PALDEA_TAUROS,
|
||||
],
|
||||
[TrainerPoolTier.RARE]: [Species.JANGMO_O, Species.QUAXLY],
|
||||
[TrainerPoolTier.RARE]: [SpeciesId.JANGMO_O, SpeciesId.QUAXLY],
|
||||
};
|
||||
|
||||
export type EvilTeam =
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,7 @@
|
||||
import type { EnemyPokemon } from "#app/field/pokemon";
|
||||
import type { PersistentModifier } from "#app/modifier/modifier";
|
||||
import type { PartyMemberStrength } from "#enums/party-member-strength";
|
||||
import type { Species } from "#enums/species";
|
||||
import type { SpeciesId } from "#enums/species";
|
||||
import type { TrainerConfig } from "./trainer-config";
|
||||
import type { TrainerPartyTemplate } from "./TrainerPartyTemplate";
|
||||
|
||||
@ -11,7 +11,7 @@ export type GenModifiersFunc = (party: EnemyPokemon[]) => PersistentModifier[];
|
||||
export type GenAIFunc = (party: EnemyPokemon[]) => void;
|
||||
|
||||
export interface TrainerTierPools {
|
||||
[key: number]: Species[];
|
||||
[key: number]: SpeciesId[];
|
||||
}
|
||||
export interface TrainerConfigs {
|
||||
[key: number]: TrainerConfig;
|
||||
|
@ -1,4 +1,4 @@
|
||||
export enum Species {
|
||||
export enum SpeciesId {
|
||||
/**{@link https://bulbapedia.bulbagarden.net/wiki/Bulbasaur_(Pokémon) | Source} */
|
||||
BULBASAUR = 1,
|
||||
/**{@link https://bulbapedia.bulbagarden.net/wiki/Ivysaur_(Pokémon) | Source} */
|
||||
|
@ -33,7 +33,7 @@ import { TagAddedEvent, TagRemovedEvent, TerrainChangedEvent, WeatherChangedEven
|
||||
import type { ArenaTagType } from "#enums/arena-tag-type";
|
||||
import { Biome } from "#enums/biome";
|
||||
import type { MoveId } from "#enums/move-id";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import { TimeOfDay } from "#enums/time-of-day";
|
||||
import { TrainerType } from "#enums/trainer-type";
|
||||
import { AbilityId } from "#enums/ability-id";
|
||||
@ -153,9 +153,9 @@ export class Arena {
|
||||
ret = globalScene.randomSpecies(waveIndex, level);
|
||||
} else {
|
||||
const entry = tierPool[randSeedInt(tierPool.length)];
|
||||
let species: Species;
|
||||
let species: SpeciesId;
|
||||
if (typeof entry === "number") {
|
||||
species = entry as Species;
|
||||
species = entry as SpeciesId;
|
||||
} else {
|
||||
const levelThresholds = Object.keys(entry);
|
||||
for (let l = levelThresholds.length - 1; l >= 0; l--) {
|
||||
@ -199,7 +199,7 @@ export class Arena {
|
||||
|
||||
const newSpeciesId = ret.getWildSpeciesForLevel(level, true, isBoss ?? isBossSpecies, globalScene.gameMode);
|
||||
if (newSpeciesId !== ret.speciesId) {
|
||||
console.log("Replaced", Species[ret.speciesId], "with", Species[newSpeciesId]);
|
||||
console.log("Replaced", SpeciesId[ret.speciesId], "with", SpeciesId[newSpeciesId]);
|
||||
ret = getPokemonSpecies(newSpeciesId);
|
||||
}
|
||||
return ret;
|
||||
@ -239,8 +239,8 @@ export class Arena {
|
||||
|
||||
getSpeciesFormIndex(species: PokemonSpecies): number {
|
||||
switch (species.speciesId) {
|
||||
case Species.BURMY:
|
||||
case Species.WORMADAM:
|
||||
case SpeciesId.BURMY:
|
||||
case SpeciesId.WORMADAM:
|
||||
switch (this.biomeType) {
|
||||
case Biome.BEACH:
|
||||
return 1;
|
||||
@ -248,7 +248,7 @@ export class Arena {
|
||||
return 2;
|
||||
}
|
||||
break;
|
||||
case Species.ROTOM:
|
||||
case SpeciesId.ROTOM:
|
||||
switch (this.biomeType) {
|
||||
case Biome.VOLCANO:
|
||||
return 1;
|
||||
@ -262,7 +262,7 @@ export class Arena {
|
||||
return 5;
|
||||
}
|
||||
break;
|
||||
case Species.LYCANROC:
|
||||
case SpeciesId.LYCANROC:
|
||||
const timeOfDay = this.getTimeOfDay();
|
||||
switch (timeOfDay) {
|
||||
case TimeOfDay.DAY:
|
||||
@ -372,8 +372,8 @@ export class Arena {
|
||||
*/
|
||||
triggerWeatherBasedFormChanges(): void {
|
||||
globalScene.getField(true).forEach(p => {
|
||||
const isCastformWithForecast = p.hasAbility(AbilityId.FORECAST) && p.species.speciesId === Species.CASTFORM;
|
||||
const isCherrimWithFlowerGift = p.hasAbility(AbilityId.FLOWER_GIFT) && p.species.speciesId === Species.CHERRIM;
|
||||
const isCastformWithForecast = p.hasAbility(AbilityId.FORECAST) && p.species.speciesId === SpeciesId.CASTFORM;
|
||||
const isCherrimWithFlowerGift = p.hasAbility(AbilityId.FLOWER_GIFT) && p.species.speciesId === SpeciesId.CHERRIM;
|
||||
|
||||
if (isCastformWithForecast || isCherrimWithFlowerGift) {
|
||||
globalScene.triggerPokemonFormChange(p, SpeciesFormChangeWeatherTrigger);
|
||||
@ -387,9 +387,9 @@ export class Arena {
|
||||
triggerWeatherBasedFormChangesToNormal(): void {
|
||||
globalScene.getField(true).forEach(p => {
|
||||
const isCastformWithForecast =
|
||||
p.hasAbility(AbilityId.FORECAST, false, true) && p.species.speciesId === Species.CASTFORM;
|
||||
p.hasAbility(AbilityId.FORECAST, false, true) && p.species.speciesId === SpeciesId.CASTFORM;
|
||||
const isCherrimWithFlowerGift =
|
||||
p.hasAbility(AbilityId.FLOWER_GIFT, false, true) && p.species.speciesId === Species.CHERRIM;
|
||||
p.hasAbility(AbilityId.FLOWER_GIFT, false, true) && p.species.speciesId === SpeciesId.CHERRIM;
|
||||
|
||||
if (isCastformWithForecast || isCherrimWithFlowerGift) {
|
||||
return globalScene.triggerPokemonFormChange(p, SpeciesFormChangeRevertWeatherFormTrigger);
|
||||
|
@ -1,13 +1,13 @@
|
||||
import type { GameObjects } from "phaser";
|
||||
import { globalScene } from "#app/global-scene";
|
||||
import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter";
|
||||
import type { Species } from "#enums/species";
|
||||
import type { SpeciesId } from "#enums/species";
|
||||
import { isNullOrUndefined } from "#app/utils/common";
|
||||
import { getSpriteKeysFromSpecies } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils";
|
||||
import type { Variant } from "#app/sprites/variant";
|
||||
import { doShinySparkleAnim } from "#app/field/anims";
|
||||
import PlayAnimationConfig = Phaser.Types.Animations.PlayAnimationConfig;
|
||||
import { loadPokemonVariantAssets } from "#app/sprites/pokemon-sprite";
|
||||
import PlayAnimationConfig = Phaser.Types.Animations.PlayAnimationConfig;
|
||||
|
||||
type KnownFileRoot =
|
||||
| "arenas"
|
||||
@ -39,7 +39,7 @@ export class MysteryEncounterSpriteConfig {
|
||||
/** Refer to [/public/images](../../public/images) directorty for all folder names */
|
||||
fileRoot: (KnownFileRoot & string) | string;
|
||||
/** Optional replacement for `spriteKey`/`fileRoot`. Just know this defaults to male/genderless, form 0, no shiny */
|
||||
species?: Species;
|
||||
species?: SpeciesId;
|
||||
/** Enable shadow. Defaults to `false` */
|
||||
hasShadow?: boolean = false;
|
||||
/** Disable animation. Defaults to `false` */
|
||||
|
@ -227,7 +227,7 @@ import { BattlerTagType } from "#enums/battler-tag-type";
|
||||
import type { BerryType } from "#enums/berry-type";
|
||||
import { Biome } from "#enums/biome";
|
||||
import { MoveId } from "#enums/move-id";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import { getPokemonNameWithAffix } from "#app/messages";
|
||||
import { DamageAnimPhase } from "#app/phases/damage-anim-phase";
|
||||
import { FaintPhase } from "#app/phases/faint-phase";
|
||||
@ -334,7 +334,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
|
||||
public friendship: number;
|
||||
public metLevel: number;
|
||||
public metBiome: Biome | -1;
|
||||
public metSpecies: Species;
|
||||
public metSpecies: SpeciesId;
|
||||
public metWave: number;
|
||||
public luck: number;
|
||||
public pauseEvolutions: boolean;
|
||||
@ -1817,21 +1817,21 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the {@linkcode Pokemon} has a fusion with the specified {@linkcode Species}.
|
||||
* @param species the pokemon {@linkcode Species} to check
|
||||
* @returns `true` if the {@linkcode Pokemon} has a fusion with the specified {@linkcode Species}, `false` otherwise
|
||||
* Checks if the {@linkcode Pokemon} has a fusion with the specified {@linkcode SpeciesId}.
|
||||
* @param species the pokemon {@linkcode SpeciesId} to check
|
||||
* @returns `true` if the {@linkcode Pokemon} has a fusion with the specified {@linkcode SpeciesId}, `false` otherwise
|
||||
*/
|
||||
hasFusionSpecies(species: Species): boolean {
|
||||
hasFusionSpecies(species: SpeciesId): boolean {
|
||||
return this.fusionSpecies?.speciesId === species;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the {@linkcode Pokemon} has is the specified {@linkcode Species} or is fused with it.
|
||||
* @param species the pokemon {@linkcode Species} to check
|
||||
* Checks if the {@linkcode Pokemon} has is the specified {@linkcode SpeciesId} or is fused with it.
|
||||
* @param species the pokemon {@linkcode SpeciesId} to check
|
||||
* @param formKey If provided, requires the species to be in that form
|
||||
* @returns `true` if the pokemon is the species or is fused with it, `false` otherwise
|
||||
*/
|
||||
hasSpecies(species: Species, formKey?: string): boolean {
|
||||
hasSpecies(species: SpeciesId, formKey?: string): boolean {
|
||||
if (isNullOrUndefined(formKey)) {
|
||||
return this.species.speciesId === species || this.fusionSpecies?.speciesId === species;
|
||||
}
|
||||
@ -2291,11 +2291,11 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
|
||||
* @returns the pokemon's current tera {@linkcode PokemonType}
|
||||
*/
|
||||
getTeraType(): PokemonType {
|
||||
if (this.hasSpecies(Species.TERAPAGOS)) {
|
||||
if (this.hasSpecies(SpeciesId.TERAPAGOS)) {
|
||||
return PokemonType.STELLAR;
|
||||
}
|
||||
if (this.hasSpecies(Species.OGERPON)) {
|
||||
const ogerponForm = this.species.speciesId === Species.OGERPON ? this.formIndex : this.fusionFormIndex;
|
||||
if (this.hasSpecies(SpeciesId.OGERPON)) {
|
||||
const ogerponForm = this.species.speciesId === SpeciesId.OGERPON ? this.formIndex : this.fusionFormIndex;
|
||||
switch (ogerponForm) {
|
||||
case 0:
|
||||
case 4:
|
||||
@ -2311,7 +2311,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
|
||||
return PokemonType.ROCK;
|
||||
}
|
||||
}
|
||||
if (this.hasSpecies(Species.SHEDINJA)) {
|
||||
if (this.hasSpecies(SpeciesId.SHEDINJA)) {
|
||||
return PokemonType.BUG;
|
||||
}
|
||||
return this.teraType;
|
||||
@ -2987,7 +2987,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
|
||||
!species.mythical &&
|
||||
!species.isTrainerForbidden() &&
|
||||
species.speciesId !== this.species.speciesId &&
|
||||
species.speciesId !== Species.DITTO
|
||||
species.speciesId !== SpeciesId.DITTO
|
||||
);
|
||||
};
|
||||
|
||||
@ -3659,7 +3659,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
|
||||
if (
|
||||
source.isTerastallized &&
|
||||
source.getTeraType() === PokemonType.STELLAR &&
|
||||
(!source.stellarTypesBoosted.includes(moveType) || source.hasSpecies(Species.TERAPAGOS))
|
||||
(!source.stellarTypesBoosted.includes(moveType) || source.hasSpecies(SpeciesId.TERAPAGOS))
|
||||
) {
|
||||
stabMultiplier.value += matchesSourceType ? 0.5 : 0.2;
|
||||
}
|
||||
@ -4284,7 +4284,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
|
||||
if (
|
||||
!tag.isBatonPassable ||
|
||||
(tag.tagType === BattlerTagType.TELEKINESIS &&
|
||||
this.species.speciesId === Species.GENGAR &&
|
||||
this.species.speciesId === SpeciesId.GENGAR &&
|
||||
this.getFormKey() === "mega")
|
||||
) {
|
||||
continue;
|
||||
@ -4902,7 +4902,7 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
|
||||
if (
|
||||
this.hasAbilityWithAttr(CommanderAbAttr) &&
|
||||
globalScene.currentBattle.double &&
|
||||
this.getAlly()?.species.speciesId === Species.DONDOZO
|
||||
this.getAlly()?.species.speciesId === SpeciesId.DONDOZO
|
||||
) {
|
||||
this.setVisible(false);
|
||||
}
|
||||
@ -5680,7 +5680,7 @@ export class PlayerPokemon extends Pokemon {
|
||||
}
|
||||
// Add to candy progress for this mon's starter species and its fused species (if it has one)
|
||||
starterData.forEach((sd: StarterDataEntry, i: number) => {
|
||||
const speciesId = !i ? starterSpeciesId : (fusionStarterSpeciesId as Species);
|
||||
const speciesId = !i ? starterSpeciesId : (fusionStarterSpeciesId as SpeciesId);
|
||||
sd.friendship = (sd.friendship || 0) + starterAmount.value;
|
||||
if (sd.friendship >= getStarterValueFriendshipCap(speciesStarterCosts[speciesId])) {
|
||||
globalScene.gameData.addStarterCandy(getPokemonSpecies(speciesId), 1);
|
||||
@ -5815,7 +5815,7 @@ export class PlayerPokemon extends Pokemon {
|
||||
this.updateInfo(true).then(() => resolve());
|
||||
});
|
||||
};
|
||||
if (preEvolution.speciesId === Species.GIMMIGHOUL) {
|
||||
if (preEvolution.speciesId === SpeciesId.GIMMIGHOUL) {
|
||||
const evotracker = this.getHeldItems().filter(m => m instanceof EvoTrackerModifier)[0] ?? null;
|
||||
if (evotracker) {
|
||||
globalScene.removeModifier(evotracker);
|
||||
@ -5835,7 +5835,7 @@ export class PlayerPokemon extends Pokemon {
|
||||
const isFusion = evolution instanceof FusionSpeciesFormEvolution;
|
||||
|
||||
const evoSpecies = !isFusion ? this.species : this.fusionSpecies;
|
||||
if (evoSpecies?.speciesId === Species.NINCADA && evolution.speciesId === Species.NINJASK) {
|
||||
if (evoSpecies?.speciesId === SpeciesId.NINCADA && evolution.speciesId === SpeciesId.NINJASK) {
|
||||
const newEvolution = pokemonEvolutions[evoSpecies.speciesId][1];
|
||||
|
||||
if (newEvolution.condition?.predicate(this)) {
|
||||
@ -6111,7 +6111,7 @@ export class EnemyPokemon extends Pokemon {
|
||||
|
||||
this.luck = (this.shiny ? this.variant + 1 : 0) + (this.fusionShiny ? this.fusionVariant + 1 : 0);
|
||||
|
||||
let prevolution: Species;
|
||||
let prevolution: SpeciesId;
|
||||
let speciesId = species.speciesId;
|
||||
while ((prevolution = pokemonPrevolutions[speciesId])) {
|
||||
const evolution = pokemonEvolutions[prevolution].find(
|
||||
@ -6167,7 +6167,7 @@ export class EnemyPokemon extends Pokemon {
|
||||
|
||||
generateAndPopulateMoveset(formIndex?: number): void {
|
||||
switch (true) {
|
||||
case this.species.speciesId === Species.SMEARGLE:
|
||||
case this.species.speciesId === SpeciesId.SMEARGLE:
|
||||
this.moveset = [
|
||||
new PokemonMove(MoveId.SKETCH),
|
||||
new PokemonMove(MoveId.SKETCH),
|
||||
@ -6175,7 +6175,7 @@ export class EnemyPokemon extends Pokemon {
|
||||
new PokemonMove(MoveId.SKETCH),
|
||||
];
|
||||
break;
|
||||
case this.species.speciesId === Species.ETERNATUS:
|
||||
case this.species.speciesId === SpeciesId.ETERNATUS:
|
||||
this.moveset = (formIndex !== undefined ? formIndex : this.formIndex)
|
||||
? [
|
||||
new PokemonMove(MoveId.DYNAMAX_CANNON),
|
||||
@ -6737,7 +6737,7 @@ interface IllusionData {
|
||||
fusionVariant: Variant;
|
||||
};
|
||||
/** The species of the illusion */
|
||||
species: Species;
|
||||
species: SpeciesId;
|
||||
/** The formIndex of the illusion */
|
||||
formIndex: number;
|
||||
/** The gender of the illusion */
|
||||
|
@ -17,7 +17,7 @@ import { ArenaTagSide, ArenaTrapTag } from "#app/data/arena-tag";
|
||||
import { getIsInitialized, initI18n } from "#app/plugins/i18n";
|
||||
import i18next from "i18next";
|
||||
import { PartyMemberStrength } from "#enums/party-member-strength";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import { TrainerType } from "#enums/trainer-type";
|
||||
import { signatureSpecies } from "#app/data/balance/signature-species";
|
||||
|
||||
@ -358,7 +358,7 @@ export default class Trainer extends Phaser.GameObjects.Container {
|
||||
}
|
||||
|
||||
// Create an empty species pool (which will be set to one of the species pools based on the index)
|
||||
let newSpeciesPool: Species[] = [];
|
||||
let newSpeciesPool: SpeciesId[] = [];
|
||||
let useNewSpeciesPool = false;
|
||||
|
||||
// If we are in a double battle of named trainers, we need to use alternate species pools (generate half the party from each trainer)
|
||||
@ -399,9 +399,9 @@ export default class Trainer extends Phaser.GameObjects.Container {
|
||||
if (!(index % 2)) {
|
||||
// Since the only currently allowed double battle with named trainers is Tate & Liza, we need to make sure that Solrock is the first pokemon in the party for Tate and Lunatone for Liza
|
||||
if (index === 0 && TrainerType[this.config.trainerType] === TrainerType[TrainerType.TATE]) {
|
||||
newSpeciesPool = [Species.SOLROCK];
|
||||
newSpeciesPool = [SpeciesId.SOLROCK];
|
||||
} else if (index === 0 && TrainerType[this.config.trainerType] === TrainerType[TrainerType.LIZA]) {
|
||||
newSpeciesPool = [Species.LUNATONE];
|
||||
newSpeciesPool = [SpeciesId.LUNATONE];
|
||||
} else {
|
||||
newSpeciesPool = speciesPoolFiltered;
|
||||
}
|
||||
@ -409,9 +409,9 @@ export default class Trainer extends Phaser.GameObjects.Container {
|
||||
// If the index is odd, use the species pool for the partner trainer (that way he only uses his own pokemon in battle)
|
||||
// Since the only currently allowed double battle with named trainers is Tate & Liza, we need to make sure that Solrock is the first pokemon in the party for Tate and Lunatone for Liza
|
||||
if (index === 1 && TrainerType[this.config.trainerTypeDouble] === TrainerType[TrainerType.TATE]) {
|
||||
newSpeciesPool = [Species.SOLROCK];
|
||||
newSpeciesPool = [SpeciesId.SOLROCK];
|
||||
} else if (index === 1 && TrainerType[this.config.trainerTypeDouble] === TrainerType[TrainerType.LIZA]) {
|
||||
newSpeciesPool = [Species.LUNATONE];
|
||||
newSpeciesPool = [SpeciesId.LUNATONE];
|
||||
} else {
|
||||
newSpeciesPool = speciesPoolPartnerFiltered;
|
||||
}
|
||||
@ -542,10 +542,10 @@ export default class Trainer extends Phaser.GameObjects.Container {
|
||||
|
||||
/**
|
||||
* Checks if the enemy trainer already has the Pokemon species in their party
|
||||
* @param baseSpecies - The base {@linkcode Species} of the current Pokemon
|
||||
* @param baseSpecies - The base {@linkcode SpeciesId} of the current Pokemon
|
||||
* @returns `true` if the species is already present in the party
|
||||
*/
|
||||
checkDuplicateSpecies(baseSpecies: Species): boolean {
|
||||
checkDuplicateSpecies(baseSpecies: SpeciesId): boolean {
|
||||
const staticSpecies = (signatureSpecies[TrainerType[this.config.trainerType]] ?? []).flat(1).map(s => {
|
||||
let root = s;
|
||||
while (pokemonPrevolutions.hasOwnProperty(root)) {
|
||||
|
@ -9,7 +9,7 @@ import type { Arena } from "./field/arena";
|
||||
import Overrides from "#app/overrides";
|
||||
import { isNullOrUndefined, randSeedInt, randSeedItem } from "#app/utils/common";
|
||||
import { Biome } from "#enums/biome";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import { Challenges } from "./enums/challenges";
|
||||
import { globalScene } from "#app/global-scene";
|
||||
import { getDailyStartingBiome } from "./data/daily-run";
|
||||
@ -220,8 +220,8 @@ export class GameMode implements GameModeConfig {
|
||||
s =>
|
||||
(s.subLegendary || s.legendary || s.mythical) &&
|
||||
s.baseTotal >= 600 &&
|
||||
s.speciesId !== Species.ETERNATUS &&
|
||||
s.speciesId !== Species.ARCEUS,
|
||||
s.speciesId !== SpeciesId.ETERNATUS &&
|
||||
s.speciesId !== SpeciesId.ARCEUS,
|
||||
);
|
||||
return randSeedItem(allFinalBossSpecies);
|
||||
}
|
||||
|
@ -122,7 +122,7 @@ import { BerryType } from "#enums/berry-type";
|
||||
import { MoveId } from "#enums/move-id";
|
||||
import { Nature } from "#enums/nature";
|
||||
import { PokeballType } from "#enums/pokeball";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import { SpeciesFormKey } from "#enums/species-form-key";
|
||||
import type { PermanentStat, TempBattleStat } from "#enums/stat";
|
||||
import { getStatKey, Stat, TEMP_BATTLE_STATS } from "#enums/stat";
|
||||
@ -430,7 +430,7 @@ export class TerastallizeModifierType extends PokemonModifierType {
|
||||
(pokemon: PlayerPokemon) => {
|
||||
if (
|
||||
[pokemon.species.speciesId, pokemon.fusionSpecies?.speciesId].filter(
|
||||
s => s === Species.TERAPAGOS || s === Species.OGERPON || s === Species.SHEDINJA,
|
||||
s => s === SpeciesId.TERAPAGOS || s === SpeciesId.OGERPON || s === SpeciesId.SHEDINJA,
|
||||
).length > 0
|
||||
) {
|
||||
return PartyUiHandler.NoEffectMessage;
|
||||
@ -1439,37 +1439,37 @@ class SpeciesStatBoosterModifierTypeGenerator extends ModifierTypeGenerator {
|
||||
LIGHT_BALL: {
|
||||
stats: [Stat.ATK, Stat.SPATK],
|
||||
multiplier: 2,
|
||||
species: [Species.PIKACHU],
|
||||
species: [SpeciesId.PIKACHU],
|
||||
rare: true,
|
||||
},
|
||||
THICK_CLUB: {
|
||||
stats: [Stat.ATK],
|
||||
multiplier: 2,
|
||||
species: [Species.CUBONE, Species.MAROWAK, Species.ALOLA_MAROWAK],
|
||||
species: [SpeciesId.CUBONE, SpeciesId.MAROWAK, SpeciesId.ALOLA_MAROWAK],
|
||||
rare: true,
|
||||
},
|
||||
METAL_POWDER: {
|
||||
stats: [Stat.DEF],
|
||||
multiplier: 2,
|
||||
species: [Species.DITTO],
|
||||
species: [SpeciesId.DITTO],
|
||||
rare: true,
|
||||
},
|
||||
QUICK_POWDER: {
|
||||
stats: [Stat.SPD],
|
||||
multiplier: 2,
|
||||
species: [Species.DITTO],
|
||||
species: [SpeciesId.DITTO],
|
||||
rare: true,
|
||||
},
|
||||
DEEP_SEA_SCALE: {
|
||||
stats: [Stat.SPDEF],
|
||||
multiplier: 2,
|
||||
species: [Species.CLAMPERL],
|
||||
species: [SpeciesId.CLAMPERL],
|
||||
rare: false,
|
||||
},
|
||||
DEEP_SEA_TOOTH: {
|
||||
stats: [Stat.SPATK],
|
||||
multiplier: 2,
|
||||
species: [Species.CLAMPERL],
|
||||
species: [SpeciesId.CLAMPERL],
|
||||
rare: false,
|
||||
},
|
||||
};
|
||||
@ -1517,7 +1517,7 @@ class SpeciesStatBoosterModifierTypeGenerator extends ModifierTypeGenerator {
|
||||
if (checkedSpecies.includes(speciesId) || (!!fusionSpeciesId && checkedSpecies.includes(fusionSpeciesId))) {
|
||||
// Add weight if party member has a matching species or, if applicable, a matching fusion species
|
||||
weights[i]++;
|
||||
} else if (checkedSpecies.includes(Species.PIKACHU) && hasFling) {
|
||||
} else if (checkedSpecies.includes(SpeciesId.PIKACHU) && hasFling) {
|
||||
// Add weight to Light Ball if party member has Fling
|
||||
weights[i]++;
|
||||
}
|
||||
@ -1588,7 +1588,9 @@ class EvolutionItemModifierTypeGenerator extends ModifierTypeGenerator {
|
||||
.filter(
|
||||
p =>
|
||||
pokemonEvolutions.hasOwnProperty(p.species.speciesId) &&
|
||||
(!p.pauseEvolutions || p.species.speciesId === Species.SLOWPOKE || p.species.speciesId === Species.EEVEE),
|
||||
(!p.pauseEvolutions ||
|
||||
p.species.speciesId === SpeciesId.SLOWPOKE ||
|
||||
p.species.speciesId === SpeciesId.EEVEE),
|
||||
)
|
||||
.flatMap(p => {
|
||||
const evolutions = pokemonEvolutions[p.species.speciesId];
|
||||
@ -1606,8 +1608,8 @@ class EvolutionItemModifierTypeGenerator extends ModifierTypeGenerator {
|
||||
p.fusionSpecies &&
|
||||
pokemonEvolutions.hasOwnProperty(p.fusionSpecies.speciesId) &&
|
||||
(!p.pauseEvolutions ||
|
||||
p.fusionSpecies.speciesId === Species.SLOWPOKE ||
|
||||
p.fusionSpecies.speciesId === Species.EEVEE),
|
||||
p.fusionSpecies.speciesId === SpeciesId.SLOWPOKE ||
|
||||
p.fusionSpecies.speciesId === SpeciesId.EEVEE),
|
||||
)
|
||||
.flatMap(p => {
|
||||
const evolutions = pokemonEvolutions[p.fusionSpecies!.speciesId];
|
||||
@ -1671,7 +1673,7 @@ class FormChangeItemModifierTypeGenerator extends ModifierTypeGenerator {
|
||||
),
|
||||
);
|
||||
|
||||
if (p.species.speciesId === Species.NECROZMA) {
|
||||
if (p.species.speciesId === SpeciesId.NECROZMA) {
|
||||
// technically we could use a simplified version and check for formChanges.length > 3, but in case any code changes later, this might break...
|
||||
let foundULTRA_Z = false,
|
||||
foundN_LUNA = false,
|
||||
@ -1932,7 +1934,7 @@ export const modifierTypes = {
|
||||
new PokemonHeldItemModifierType(
|
||||
"modifierType:ModifierType.EVOLUTION_TRACKER_GIMMIGHOUL",
|
||||
"relic_gold",
|
||||
(type, args) => new EvoTrackerModifier(type, (args[0] as Pokemon).id, Species.GIMMIGHOUL, 10),
|
||||
(type, args) => new EvoTrackerModifier(type, (args[0] as Pokemon).id, SpeciesId.GIMMIGHOUL, 10),
|
||||
),
|
||||
|
||||
MEGA_BRACELET: () =>
|
||||
@ -2046,7 +2048,9 @@ export const modifierTypes = {
|
||||
}
|
||||
const teraTypes: PokemonType[] = [];
|
||||
for (const p of party) {
|
||||
if (!(p.hasSpecies(Species.TERAPAGOS) || p.hasSpecies(Species.OGERPON) || p.hasSpecies(Species.SHEDINJA))) {
|
||||
if (
|
||||
!(p.hasSpecies(SpeciesId.TERAPAGOS) || p.hasSpecies(SpeciesId.OGERPON) || p.hasSpecies(SpeciesId.SHEDINJA))
|
||||
) {
|
||||
teraTypes.push(p.teraType);
|
||||
}
|
||||
}
|
||||
@ -2125,9 +2129,9 @@ export const modifierTypes = {
|
||||
"leek",
|
||||
(type, args) =>
|
||||
new SpeciesCritBoosterModifier(type, (args[0] as Pokemon).id, 2, [
|
||||
Species.FARFETCHD,
|
||||
Species.GALAR_FARFETCHD,
|
||||
Species.SIRFETCHD,
|
||||
SpeciesId.FARFETCHD,
|
||||
SpeciesId.GALAR_FARFETCHD,
|
||||
SpeciesId.SIRFETCHD,
|
||||
]),
|
||||
),
|
||||
|
||||
@ -2674,7 +2678,8 @@ const modifierPool: ModifierPool = {
|
||||
new WeightedModifierType(modifierTypes.BASE_STAT_BOOSTER, 3),
|
||||
new WeightedModifierType(modifierTypes.TERA_SHARD, (party: Pokemon[]) =>
|
||||
party.filter(
|
||||
p => !(p.hasSpecies(Species.TERAPAGOS) || p.hasSpecies(Species.OGERPON) || p.hasSpecies(Species.SHEDINJA)),
|
||||
p =>
|
||||
!(p.hasSpecies(SpeciesId.TERAPAGOS) || p.hasSpecies(SpeciesId.OGERPON) || p.hasSpecies(SpeciesId.SHEDINJA)),
|
||||
).length > 0
|
||||
? 1
|
||||
: 0,
|
||||
@ -2744,7 +2749,7 @@ const modifierPool: ModifierPool = {
|
||||
new WeightedModifierType(
|
||||
modifierTypes.LEEK,
|
||||
(party: Pokemon[]) => {
|
||||
const checkedSpecies = [Species.FARFETCHD, Species.GALAR_FARFETCHD, Species.SIRFETCHD];
|
||||
const checkedSpecies = [SpeciesId.FARFETCHD, SpeciesId.GALAR_FARFETCHD, SpeciesId.SIRFETCHD];
|
||||
// If a party member doesn't already have a Leek and is one of the relevant species, Leek can appear
|
||||
return party.some(
|
||||
p =>
|
||||
|
@ -21,7 +21,7 @@ import { BerryType } from "#enums/berry-type";
|
||||
import type { MoveId } from "#enums/move-id";
|
||||
import type { Nature } from "#enums/nature";
|
||||
import type { PokeballType } from "#enums/pokeball";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import { type PermanentStat, type TempBattleStat, BATTLE_STATS, Stat, TEMP_BATTLE_STATS } from "#enums/stat";
|
||||
import { StatusEffect } from "#enums/status-effect";
|
||||
import type { PokemonType } from "#enums/pokemon-type";
|
||||
@ -873,11 +873,11 @@ export class BaseStatModifier extends PokemonHeldItemModifier {
|
||||
}
|
||||
|
||||
export class EvoTrackerModifier extends PokemonHeldItemModifier {
|
||||
protected species: Species;
|
||||
protected species: SpeciesId;
|
||||
protected required: number;
|
||||
public isTransferable = false;
|
||||
|
||||
constructor(type: ModifierType, pokemonId: number, species: Species, required: number, stackCount?: number) {
|
||||
constructor(type: ModifierType, pokemonId: number, species: SpeciesId, required: number, stackCount?: number) {
|
||||
super(type, pokemonId, stackCount);
|
||||
this.species = species;
|
||||
this.required = required;
|
||||
@ -1268,20 +1268,20 @@ export class EvolutionStatBoosterModifier extends StatBoosterModifier {
|
||||
|
||||
/**
|
||||
* Modifier used for held items that Applies {@linkcode Stat} boost(s) using a
|
||||
* multiplier if the holder is of a specific {@linkcode Species}.
|
||||
* multiplier if the holder is of a specific {@linkcode SpeciesId}.
|
||||
* @extends StatBoosterModifier
|
||||
* @see {@linkcode apply}
|
||||
*/
|
||||
export class SpeciesStatBoosterModifier extends StatBoosterModifier {
|
||||
/** The species that the held item's stat boost(s) apply to */
|
||||
private species: Species[];
|
||||
private species: SpeciesId[];
|
||||
|
||||
constructor(
|
||||
type: ModifierType,
|
||||
pokemonId: number,
|
||||
stats: Stat[],
|
||||
multiplier: number,
|
||||
species: Species[],
|
||||
species: SpeciesId[],
|
||||
stackCount?: number,
|
||||
) {
|
||||
super(type, pokemonId, stats, multiplier, stackCount);
|
||||
@ -1316,7 +1316,7 @@ export class SpeciesStatBoosterModifier extends StatBoosterModifier {
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the incoming stat is listed in {@linkcode stats} and if the holder's {@linkcode Species}
|
||||
* Checks if the incoming stat is listed in {@linkcode stats} and if the holder's {@linkcode SpeciesId}
|
||||
* (or its fused species) is listed in {@linkcode species}.
|
||||
* @param pokemon {@linkcode Pokemon} that holds the item
|
||||
* @param stat {@linkcode Stat} being checked at the time
|
||||
@ -1333,11 +1333,11 @@ export class SpeciesStatBoosterModifier extends StatBoosterModifier {
|
||||
|
||||
/**
|
||||
* Checks if either parameter is included in the corresponding lists
|
||||
* @param speciesId {@linkcode Species} being checked
|
||||
* @param speciesId {@linkcode SpeciesId} being checked
|
||||
* @param stat {@linkcode Stat} being checked
|
||||
* @returns `true` if both parameters are in {@linkcode species} and {@linkcode stats} respectively, false otherwise
|
||||
*/
|
||||
contains(speciesId: Species, stat: Stat): boolean {
|
||||
contains(speciesId: SpeciesId, stat: Stat): boolean {
|
||||
return this.species.includes(speciesId) && this.stats.includes(stat);
|
||||
}
|
||||
}
|
||||
@ -1391,15 +1391,21 @@ export class CritBoosterModifier extends PokemonHeldItemModifier {
|
||||
|
||||
/**
|
||||
* Modifier used for held items that apply critical-hit stage boost(s)
|
||||
* if the holder is of a specific {@linkcode Species}.
|
||||
* if the holder is of a specific {@linkcode SpeciesId}.
|
||||
* @extends CritBoosterModifier
|
||||
* @see {@linkcode shouldApply}
|
||||
*/
|
||||
export class SpeciesCritBoosterModifier extends CritBoosterModifier {
|
||||
/** The species that the held item's critical-hit stage boost applies to */
|
||||
private species: Species[];
|
||||
private species: SpeciesId[];
|
||||
|
||||
constructor(type: ModifierType, pokemonId: number, stageIncrement: number, species: Species[], stackCount?: number) {
|
||||
constructor(
|
||||
type: ModifierType,
|
||||
pokemonId: number,
|
||||
stageIncrement: number,
|
||||
species: SpeciesId[],
|
||||
stackCount?: number,
|
||||
) {
|
||||
super(type, pokemonId, stageIncrement, stackCount);
|
||||
|
||||
this.species = species;
|
||||
@ -1424,7 +1430,7 @@ export class SpeciesCritBoosterModifier extends CritBoosterModifier {
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the holder's {@linkcode Species} (or its fused species) is listed
|
||||
* Checks if the holder's {@linkcode SpeciesId} (or its fused species) is listed
|
||||
* in {@linkcode species}.
|
||||
* @param pokemon {@linkcode Pokemon} that holds the held item
|
||||
* @param critStage {@linkcode NumberHolder} that holds the resulting critical-hit level
|
||||
@ -2112,7 +2118,7 @@ export class TerrastalizeModifier extends ConsumablePokemonModifier {
|
||||
return (
|
||||
super.shouldApply(playerPokemon) &&
|
||||
[playerPokemon?.species.speciesId, playerPokemon?.fusionSpecies?.speciesId].filter(
|
||||
s => s === Species.TERAPAGOS || s === Species.OGERPON || s === Species.SHEDINJA,
|
||||
s => s === SpeciesId.TERAPAGOS || s === SpeciesId.OGERPON || s === SpeciesId.SHEDINJA,
|
||||
).length === 0
|
||||
);
|
||||
}
|
||||
@ -2924,7 +2930,7 @@ export class MoneyRewardModifier extends ConsumableModifier {
|
||||
globalScene.addMoney(moneyAmount.value);
|
||||
|
||||
globalScene.getPlayerParty().map(p => {
|
||||
if (p.species?.speciesId === Species.GIMMIGHOUL || p.fusionSpecies?.speciesId === Species.GIMMIGHOUL) {
|
||||
if (p.species?.speciesId === SpeciesId.GIMMIGHOUL || p.fusionSpecies?.speciesId === SpeciesId.GIMMIGHOUL) {
|
||||
p.evoCounter
|
||||
? (p.evoCounter += Math.min(Math.floor(this.moneyMultiplier), 3))
|
||||
: (p.evoCounter = Math.min(Math.floor(this.moneyMultiplier), 3));
|
||||
|
@ -15,7 +15,7 @@ import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
|
||||
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
|
||||
import { PokeballType } from "#enums/pokeball";
|
||||
import { PokemonType } from "#enums/pokemon-type";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import { Stat } from "#enums/stat";
|
||||
import { StatusEffect } from "#enums/status-effect";
|
||||
import { TimeOfDay } from "#enums/time-of-day";
|
||||
@ -128,7 +128,7 @@ class DefaultOverrides {
|
||||
* }
|
||||
* ```
|
||||
*/
|
||||
readonly STARTER_FORM_OVERRIDES: Partial<Record<Species, number>> = {};
|
||||
readonly STARTER_FORM_OVERRIDES: Partial<Record<SpeciesId, number>> = {};
|
||||
|
||||
/** default 5 or 20 for Daily */
|
||||
readonly STARTING_LEVEL_OVERRIDE: number = 0;
|
||||
@ -138,7 +138,7 @@ class DefaultOverrides {
|
||||
* default is 0 to not override
|
||||
* @example SPECIES_OVERRIDE = Species.Bulbasaur;
|
||||
*/
|
||||
readonly STARTER_SPECIES_OVERRIDE: Species | number = 0;
|
||||
readonly STARTER_SPECIES_OVERRIDE: SpeciesId | number = 0;
|
||||
/**
|
||||
* This will force your starter to be a random fusion
|
||||
*/
|
||||
@ -146,7 +146,7 @@ class DefaultOverrides {
|
||||
/**
|
||||
* This will override the species of the fusion
|
||||
*/
|
||||
readonly STARTER_FUSION_SPECIES_OVERRIDE: Species | number = 0;
|
||||
readonly STARTER_FUSION_SPECIES_OVERRIDE: SpeciesId | number = 0;
|
||||
readonly ABILITY_OVERRIDE: AbilityId = AbilityId.NONE;
|
||||
readonly PASSIVE_ABILITY_OVERRIDE: AbilityId = AbilityId.NONE;
|
||||
readonly HAS_PASSIVE_ABILITY_OVERRIDE: boolean | null = null;
|
||||
@ -159,7 +159,7 @@ class DefaultOverrides {
|
||||
// --------------------------
|
||||
// OPPONENT / ENEMY OVERRIDES
|
||||
// --------------------------
|
||||
readonly OPP_SPECIES_OVERRIDE: Species | number = 0;
|
||||
readonly OPP_SPECIES_OVERRIDE: SpeciesId | number = 0;
|
||||
/**
|
||||
* This will make all opponents fused Pokemon
|
||||
*/
|
||||
@ -167,7 +167,7 @@ class DefaultOverrides {
|
||||
/**
|
||||
* This will override the species of the fusion only when the opponent is already a fusion
|
||||
*/
|
||||
readonly OPP_FUSION_SPECIES_OVERRIDE: Species | number = 0;
|
||||
readonly OPP_FUSION_SPECIES_OVERRIDE: SpeciesId | number = 0;
|
||||
readonly OPP_LEVEL_OVERRIDE: number = 0;
|
||||
readonly OPP_ABILITY_OVERRIDE: AbilityId = AbilityId.NONE;
|
||||
readonly OPP_PASSIVE_ABILITY_OVERRIDE: AbilityId = AbilityId.NONE;
|
||||
@ -178,7 +178,7 @@ class DefaultOverrides {
|
||||
readonly OPP_SHINY_OVERRIDE: boolean | null = null;
|
||||
readonly OPP_VARIANT_OVERRIDE: Variant | null = null;
|
||||
readonly OPP_IVS_OVERRIDE: number | number[] = [];
|
||||
readonly OPP_FORM_OVERRIDES: Partial<Record<Species, number>> = {};
|
||||
readonly OPP_FORM_OVERRIDES: Partial<Record<SpeciesId, number>> = {};
|
||||
/**
|
||||
* Override to give the enemy Pokemon a given amount of health segments
|
||||
*
|
||||
|
@ -40,7 +40,7 @@ import { BattleSpec } from "#enums/battle-spec";
|
||||
import { Biome } from "#enums/biome";
|
||||
import { MysteryEncounterMode } from "#enums/mystery-encounter-mode";
|
||||
import { PlayerGender } from "#enums/player-gender";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import { overrideHeldItems, overrideModifiers } from "#app/modifier/modifier";
|
||||
import i18next from "i18next";
|
||||
import { WEIGHT_INCREMENT_ON_SPAWN_MISS } from "#app/data/mystery-encounters/mystery-encounters";
|
||||
@ -158,7 +158,7 @@ export class EncounterPhase extends BattlePhase {
|
||||
);
|
||||
}
|
||||
|
||||
if (enemyPokemon.species.speciesId === Species.ETERNATUS) {
|
||||
if (enemyPokemon.species.speciesId === SpeciesId.ETERNATUS) {
|
||||
if (
|
||||
globalScene.gameMode.isClassic &&
|
||||
(battle.battleSpec === BattleSpec.FINAL_BOSS || globalScene.gameMode.isWaveFinal(battle.waveIndex))
|
||||
@ -556,7 +556,7 @@ export class EncounterPhase extends BattlePhase {
|
||||
}
|
||||
/** This sets Eternatus' held item to be untransferrable, preventing it from being stolen */
|
||||
if (
|
||||
enemyPokemon.species.speciesId === Species.ETERNATUS &&
|
||||
enemyPokemon.species.speciesId === SpeciesId.ETERNATUS &&
|
||||
(globalScene.gameMode.isBattleClassicFinalBoss(globalScene.currentBattle.waveIndex) ||
|
||||
globalScene.gameMode.isEndlessMajorBoss(globalScene.currentBattle.waveIndex))
|
||||
) {
|
||||
|
@ -4,7 +4,7 @@ import type Pokemon from "#app/field/pokemon";
|
||||
import { BattlePhase } from "#app/phases/battle-phase";
|
||||
import { isNullOrUndefined } from "#app/utils/common";
|
||||
import { PokemonAnimType } from "#enums/pokemon-anim-type";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
|
||||
export class PokemonAnimPhase extends BattlePhase {
|
||||
/** The type of animation to play in this phase */
|
||||
@ -247,7 +247,7 @@ export class PokemonAnimPhase extends BattlePhase {
|
||||
}
|
||||
const dondozo = this.pokemon.getAlly();
|
||||
|
||||
if (dondozo?.species?.speciesId !== Species.DONDOZO) {
|
||||
if (dondozo?.species?.speciesId !== SpeciesId.DONDOZO) {
|
||||
return this.end();
|
||||
}
|
||||
|
||||
|
@ -10,7 +10,7 @@ import { TitlePhase } from "#app/phases/title-phase";
|
||||
import { SaveSlotUiMode } from "#app/ui/save-slot-select-ui-handler";
|
||||
import type { Starter } from "#app/ui/starter-select-ui-handler";
|
||||
import { UiMode } from "#enums/ui-mode";
|
||||
import type { Species } from "#enums/species";
|
||||
import type { SpeciesId } from "#enums/species";
|
||||
import SoundFade from "phaser3-rex-plugins/plugins/soundfade";
|
||||
import { isNullOrUndefined } from "#app/utils/common";
|
||||
|
||||
@ -43,7 +43,7 @@ export class SelectStarterPhase extends Phase {
|
||||
const loadPokemonAssets: Promise<void>[] = [];
|
||||
starters.forEach((starter: Starter, i: number) => {
|
||||
if (!i && Overrides.STARTER_SPECIES_OVERRIDE) {
|
||||
starter.species = getPokemonSpecies(Overrides.STARTER_SPECIES_OVERRIDE as Species);
|
||||
starter.species = getPokemonSpecies(Overrides.STARTER_SPECIES_OVERRIDE as SpeciesId);
|
||||
}
|
||||
const starterProps = globalScene.gameData.getSpeciesDexAttrProps(starter.species, starter.dexAttr);
|
||||
let starterFormIndex = Math.min(starterProps.formIndex, Math.max(starter.species.forms.length - 1, 0));
|
||||
|
@ -1,5 +1,5 @@
|
||||
import type { EggTier } from "#enums/egg-type";
|
||||
import type { Species } from "#enums/species";
|
||||
import type { SpeciesId } from "#enums/species";
|
||||
import type { VariantTier } from "#enums/variant-tier";
|
||||
import { EGG_SEED, Egg } from "../data/egg";
|
||||
import type { EggSourceType } from "#app/enums/egg-source-types";
|
||||
@ -12,7 +12,7 @@ export default class EggData {
|
||||
public timestamp: number;
|
||||
public variantTier: VariantTier;
|
||||
public isShiny: boolean;
|
||||
public species: Species;
|
||||
public species: SpeciesId;
|
||||
public eggMoveIndex: number;
|
||||
public overrideHiddenAbility: boolean;
|
||||
|
||||
|
@ -45,7 +45,7 @@ import { Device } from "#enums/devices";
|
||||
import { GameDataType } from "#enums/game-data-type";
|
||||
import type { MoveId } from "#enums/move-id";
|
||||
import { PlayerGender } from "#enums/player-gender";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import { applyChallenges, ChallengeType } from "#app/data/challenge";
|
||||
import { WeatherType } from "#enums/weather-type";
|
||||
import { TerrainType } from "#app/data/terrain";
|
||||
@ -63,34 +63,34 @@ import { ArenaTrapTag } from "#app/data/arena-tag";
|
||||
import { pokemonFormChanges } from "#app/data/pokemon-forms";
|
||||
import type { PokemonType } from "#enums/pokemon-type";
|
||||
|
||||
export const defaultStarterSpecies: Species[] = [
|
||||
Species.BULBASAUR,
|
||||
Species.CHARMANDER,
|
||||
Species.SQUIRTLE,
|
||||
Species.CHIKORITA,
|
||||
Species.CYNDAQUIL,
|
||||
Species.TOTODILE,
|
||||
Species.TREECKO,
|
||||
Species.TORCHIC,
|
||||
Species.MUDKIP,
|
||||
Species.TURTWIG,
|
||||
Species.CHIMCHAR,
|
||||
Species.PIPLUP,
|
||||
Species.SNIVY,
|
||||
Species.TEPIG,
|
||||
Species.OSHAWOTT,
|
||||
Species.CHESPIN,
|
||||
Species.FENNEKIN,
|
||||
Species.FROAKIE,
|
||||
Species.ROWLET,
|
||||
Species.LITTEN,
|
||||
Species.POPPLIO,
|
||||
Species.GROOKEY,
|
||||
Species.SCORBUNNY,
|
||||
Species.SOBBLE,
|
||||
Species.SPRIGATITO,
|
||||
Species.FUECOCO,
|
||||
Species.QUAXLY,
|
||||
export const defaultStarterSpecies: SpeciesId[] = [
|
||||
SpeciesId.BULBASAUR,
|
||||
SpeciesId.CHARMANDER,
|
||||
SpeciesId.SQUIRTLE,
|
||||
SpeciesId.CHIKORITA,
|
||||
SpeciesId.CYNDAQUIL,
|
||||
SpeciesId.TOTODILE,
|
||||
SpeciesId.TREECKO,
|
||||
SpeciesId.TORCHIC,
|
||||
SpeciesId.MUDKIP,
|
||||
SpeciesId.TURTWIG,
|
||||
SpeciesId.CHIMCHAR,
|
||||
SpeciesId.PIPLUP,
|
||||
SpeciesId.SNIVY,
|
||||
SpeciesId.TEPIG,
|
||||
SpeciesId.OSHAWOTT,
|
||||
SpeciesId.CHESPIN,
|
||||
SpeciesId.FENNEKIN,
|
||||
SpeciesId.FROAKIE,
|
||||
SpeciesId.ROWLET,
|
||||
SpeciesId.LITTEN,
|
||||
SpeciesId.POPPLIO,
|
||||
SpeciesId.GROOKEY,
|
||||
SpeciesId.SCORBUNNY,
|
||||
SpeciesId.SOBBLE,
|
||||
SpeciesId.SPRIGATITO,
|
||||
SpeciesId.FUECOCO,
|
||||
SpeciesId.QUAXLY,
|
||||
];
|
||||
|
||||
const saveKey = "x0i2O7WRiANTqPmZ"; // Temporary; secure encryption is not yet necessary
|
||||
@ -555,7 +555,7 @@ export class GameData {
|
||||
|
||||
this.migrateStarterAbilities(systemData, this.starterData);
|
||||
|
||||
const starterIds = Object.keys(this.starterData).map(s => Number.parseInt(s) as Species);
|
||||
const starterIds = Object.keys(this.starterData).map(s => Number.parseInt(s) as SpeciesId);
|
||||
for (const s of starterIds) {
|
||||
this.starterData[s].candyCount += systemData.dexData[s].caughtCount;
|
||||
this.starterData[s].candyCount += systemData.dexData[s].hatchedCount * 2;
|
||||
@ -1720,7 +1720,7 @@ export class GameData {
|
||||
private initStarterData(): void {
|
||||
const starterData: StarterData = {};
|
||||
|
||||
const starterSpeciesIds = Object.keys(speciesStarterCosts).map(k => Number.parseInt(k) as Species);
|
||||
const starterSpeciesIds = Object.keys(speciesStarterCosts).map(k => Number.parseInt(k) as SpeciesId);
|
||||
|
||||
for (const speciesId of starterSpeciesIds) {
|
||||
starterData[speciesId] = {
|
||||
@ -1815,16 +1815,16 @@ export class GameData {
|
||||
const formKey = pokemon.getFormKey();
|
||||
if (formIndex > 0) {
|
||||
// In case a Pikachu with formIndex > 0 was unlocked, base form Pichu is also unlocked
|
||||
if (pokemon.species.speciesId === Species.PIKACHU && species.speciesId === Species.PICHU) {
|
||||
if (pokemon.species.speciesId === SpeciesId.PIKACHU && species.speciesId === SpeciesId.PICHU) {
|
||||
dexEntry.caughtAttr |= globalScene.gameData.getFormAttr(0);
|
||||
}
|
||||
if (pokemon.species.speciesId === Species.URSHIFU) {
|
||||
if (pokemon.species.speciesId === SpeciesId.URSHIFU) {
|
||||
if (formIndex === 2) {
|
||||
dexEntry.caughtAttr |= globalScene.gameData.getFormAttr(0);
|
||||
} else if (formIndex === 3) {
|
||||
dexEntry.caughtAttr |= globalScene.gameData.getFormAttr(1);
|
||||
}
|
||||
} else if (pokemon.species.speciesId === Species.ZYGARDE) {
|
||||
} else if (pokemon.species.speciesId === SpeciesId.ZYGARDE) {
|
||||
if (formIndex === 4) {
|
||||
dexEntry.caughtAttr |= globalScene.gameData.getFormAttr(2);
|
||||
} else if (formIndex === 5) {
|
||||
@ -1929,7 +1929,7 @@ export class GameData {
|
||||
}
|
||||
|
||||
incrementRibbonCount(species: PokemonSpecies, forStarter = false): number {
|
||||
const speciesIdToIncrement: Species = species.getRootSpeciesId(forStarter);
|
||||
const speciesIdToIncrement: SpeciesId = species.getRootSpeciesId(forStarter);
|
||||
|
||||
if (!this.starterData[speciesIdToIncrement].classicWinCount) {
|
||||
this.starterData[speciesIdToIncrement].classicWinCount = 0;
|
||||
@ -2040,7 +2040,7 @@ export class GameData {
|
||||
}
|
||||
|
||||
//recursively unlock nature for species and prevolutions
|
||||
const _unlockSpeciesNature = (speciesId: Species) => {
|
||||
const _unlockSpeciesNature = (speciesId: SpeciesId) => {
|
||||
this.dexData[speciesId].natureAttr |= 1 << (nature + 1);
|
||||
if (pokemonPrevolutions.hasOwnProperty(speciesId)) {
|
||||
_unlockSpeciesNature(pokemonPrevolutions[speciesId]);
|
||||
@ -2049,7 +2049,7 @@ export class GameData {
|
||||
_unlockSpeciesNature(species.speciesId);
|
||||
}
|
||||
|
||||
updateSpeciesDexIvs(speciesId: Species, ivs: number[]): void {
|
||||
updateSpeciesDexIvs(speciesId: SpeciesId, ivs: number[]): void {
|
||||
let dexEntry: DexEntry;
|
||||
do {
|
||||
dexEntry = globalScene.gameData.dexData[speciesId];
|
||||
@ -2180,7 +2180,7 @@ export class GameData {
|
||||
return ret;
|
||||
}
|
||||
|
||||
getSpeciesStarterValue(speciesId: Species): number {
|
||||
getSpeciesStarterValue(speciesId: SpeciesId): number {
|
||||
const baseValue = speciesStarterCosts[speciesId];
|
||||
let value = baseValue;
|
||||
|
||||
@ -2231,7 +2231,7 @@ export class GameData {
|
||||
}
|
||||
|
||||
migrateStarterAbilities(systemData: SystemSaveData, initialStarterData?: StarterData): void {
|
||||
const starterIds = Object.keys(this.starterData).map(s => Number.parseInt(s) as Species);
|
||||
const starterIds = Object.keys(this.starterData).map(s => Number.parseInt(s) as SpeciesId);
|
||||
const starterData = initialStarterData || systemData.starterData;
|
||||
const dexData = systemData.dexData;
|
||||
for (const s of starterIds) {
|
||||
|
@ -10,14 +10,14 @@ import { TrainerSlot } from "#enums/trainer-slot";
|
||||
import type { Variant } from "#app/sprites/variant";
|
||||
import type { Biome } from "#enums/biome";
|
||||
import type { MoveId } from "#enums/move-id";
|
||||
import type { Species } from "#enums/species";
|
||||
import type { SpeciesId } from "#enums/species";
|
||||
import { CustomPokemonData } from "#app/data/custom-pokemon-data";
|
||||
import type { PokemonType } from "#enums/pokemon-type";
|
||||
|
||||
export default class PokemonData {
|
||||
public id: number;
|
||||
public player: boolean;
|
||||
public species: Species;
|
||||
public species: SpeciesId;
|
||||
public nickname: string;
|
||||
public formIndex: number;
|
||||
public abilityIndex: number;
|
||||
@ -38,7 +38,7 @@ export default class PokemonData {
|
||||
public friendship: number;
|
||||
public metLevel: number;
|
||||
public metBiome: Biome | -1; // -1 for starters
|
||||
public metSpecies: Species;
|
||||
public metSpecies: SpeciesId;
|
||||
public metWave: number; // 0 for unknown (previous saves), -1 for starters
|
||||
public luck: number;
|
||||
public pauseEvolutions: boolean;
|
||||
@ -49,7 +49,7 @@ export default class PokemonData {
|
||||
public isTerastallized: boolean;
|
||||
public stellarTypesBoosted: PokemonType[];
|
||||
|
||||
public fusionSpecies: Species;
|
||||
public fusionSpecies: SpeciesId;
|
||||
public fusionFormIndex: number;
|
||||
public fusionAbilityIndex: number;
|
||||
public fusionShiny: boolean;
|
||||
|
@ -1,7 +1,7 @@
|
||||
import type { SystemSaveMigrator } from "#app/@types/SystemSaveMigrator";
|
||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
||||
import { DexAttr, type SystemSaveData } from "#app/system/game-data";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
|
||||
/**
|
||||
* If a starter is caught, but the only forms registered as caught are not starterSelectable,
|
||||
@ -17,7 +17,7 @@ const migratePichuForms: SystemSaveMigrator = {
|
||||
const caughtAttr = data.dexData[sd]?.caughtAttr;
|
||||
const species = getPokemonSpecies(sd);
|
||||
// An extra check because you never know
|
||||
if (species.speciesId === Species.PICHU && caughtAttr) {
|
||||
if (species.speciesId === SpeciesId.PICHU && caughtAttr) {
|
||||
// Ensuring that only existing forms are unlocked
|
||||
data.dexData[sd].caughtAttr &= species.getFullUnlocksData();
|
||||
// If no forms are unlocked now, since Pichu is caught, we unlock form 0
|
||||
|
@ -3,7 +3,7 @@ import { TextStyle, addTextObject } from "#app/ui/text";
|
||||
import type { nil } from "#app/utils/common";
|
||||
import { isNullOrUndefined } from "#app/utils/common";
|
||||
import i18next from "i18next";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import type { WeatherPoolEntry } from "#app/data/weather";
|
||||
import { WeatherType } from "#enums/weather-type";
|
||||
import { CLASSIC_CANDY_FRIENDSHIP_MULTIPLIER } from "./data/balance/starters";
|
||||
@ -26,7 +26,7 @@ interface EventBanner {
|
||||
}
|
||||
|
||||
interface EventEncounter {
|
||||
species: Species;
|
||||
species: SpeciesId;
|
||||
blockEvolution?: boolean;
|
||||
formIndex?: number;
|
||||
}
|
||||
@ -62,7 +62,7 @@ interface TimedEvent extends EventBanner {
|
||||
delibirdyBuff?: string[];
|
||||
weather?: WeatherPoolEntry[];
|
||||
mysteryEncounterTierChanges?: EventMysteryEncounterTier[];
|
||||
luckBoostedSpecies?: Species[];
|
||||
luckBoostedSpecies?: SpeciesId[];
|
||||
boostFusions?: boolean; //MODIFIER REWORK PLEASE
|
||||
classicWaveRewards?: EventWaveReward[]; // Rival battle rewards
|
||||
trainerShinyChance?: number; // Odds over 65536 of trainer mon generating as shiny
|
||||
@ -82,26 +82,26 @@ const timedEvents: TimedEvent[] = [
|
||||
scale: 0.21,
|
||||
availableLangs: ["en", "de", "it", "fr", "ja", "ko", "es-ES", "pt-BR", "zh-CN"],
|
||||
eventEncounters: [
|
||||
{ species: Species.GIMMIGHOUL, blockEvolution: true },
|
||||
{ species: Species.DELIBIRD },
|
||||
{ species: Species.STANTLER },
|
||||
{ species: Species.CYNDAQUIL },
|
||||
{ species: Species.PIPLUP },
|
||||
{ species: Species.CHESPIN },
|
||||
{ species: Species.BALTOY },
|
||||
{ species: Species.SNOVER },
|
||||
{ species: Species.CHINGLING },
|
||||
{ species: Species.LITWICK },
|
||||
{ species: Species.CUBCHOO },
|
||||
{ species: Species.SWIRLIX },
|
||||
{ species: Species.AMAURA },
|
||||
{ species: Species.MUDBRAY },
|
||||
{ species: Species.ROLYCOLY },
|
||||
{ species: Species.MILCERY },
|
||||
{ species: Species.SMOLIV },
|
||||
{ species: Species.ALOLA_VULPIX },
|
||||
{ species: Species.GALAR_DARUMAKA },
|
||||
{ species: Species.IRON_BUNDLE },
|
||||
{ species: SpeciesId.GIMMIGHOUL, blockEvolution: true },
|
||||
{ species: SpeciesId.DELIBIRD },
|
||||
{ species: SpeciesId.STANTLER },
|
||||
{ species: SpeciesId.CYNDAQUIL },
|
||||
{ species: SpeciesId.PIPLUP },
|
||||
{ species: SpeciesId.CHESPIN },
|
||||
{ species: SpeciesId.BALTOY },
|
||||
{ species: SpeciesId.SNOVER },
|
||||
{ species: SpeciesId.CHINGLING },
|
||||
{ species: SpeciesId.LITWICK },
|
||||
{ species: SpeciesId.CUBCHOO },
|
||||
{ species: SpeciesId.SWIRLIX },
|
||||
{ species: SpeciesId.AMAURA },
|
||||
{ species: SpeciesId.MUDBRAY },
|
||||
{ species: SpeciesId.ROLYCOLY },
|
||||
{ species: SpeciesId.MILCERY },
|
||||
{ species: SpeciesId.SMOLIV },
|
||||
{ species: SpeciesId.ALOLA_VULPIX },
|
||||
{ species: SpeciesId.GALAR_DARUMAKA },
|
||||
{ species: SpeciesId.IRON_BUNDLE },
|
||||
],
|
||||
delibirdyBuff: ["CATCHING_CHARM", "SHINY_CHARM", "ABILITY_CHARM", "EXP_CHARM", "SUPER_EXP_CHARM", "HEALING_CHARM"],
|
||||
weather: [{ weatherType: WeatherType.SNOW, weight: 1 }],
|
||||
@ -138,59 +138,59 @@ const timedEvents: TimedEvent[] = [
|
||||
scale: 0.21,
|
||||
availableLangs: ["en", "de", "it", "fr", "ja", "ko", "es-ES", "pt-BR", "zh-CN"],
|
||||
eventEncounters: [
|
||||
{ species: Species.EKANS },
|
||||
{ species: Species.ONIX },
|
||||
{ species: Species.DRATINI },
|
||||
{ species: Species.CLEFFA },
|
||||
{ species: Species.UMBREON },
|
||||
{ species: Species.DUNSPARCE },
|
||||
{ species: Species.TEDDIURSA },
|
||||
{ species: Species.SEVIPER },
|
||||
{ species: Species.LUNATONE },
|
||||
{ species: Species.CHINGLING },
|
||||
{ species: Species.SNIVY },
|
||||
{ species: Species.DARUMAKA },
|
||||
{ species: Species.DRAMPA },
|
||||
{ species: Species.SILICOBRA },
|
||||
{ species: Species.BLOODMOON_URSALUNA },
|
||||
{ species: SpeciesId.EKANS },
|
||||
{ species: SpeciesId.ONIX },
|
||||
{ species: SpeciesId.DRATINI },
|
||||
{ species: SpeciesId.CLEFFA },
|
||||
{ species: SpeciesId.UMBREON },
|
||||
{ species: SpeciesId.DUNSPARCE },
|
||||
{ species: SpeciesId.TEDDIURSA },
|
||||
{ species: SpeciesId.SEVIPER },
|
||||
{ species: SpeciesId.LUNATONE },
|
||||
{ species: SpeciesId.CHINGLING },
|
||||
{ species: SpeciesId.SNIVY },
|
||||
{ species: SpeciesId.DARUMAKA },
|
||||
{ species: SpeciesId.DRAMPA },
|
||||
{ species: SpeciesId.SILICOBRA },
|
||||
{ species: SpeciesId.BLOODMOON_URSALUNA },
|
||||
],
|
||||
luckBoostedSpecies: [
|
||||
Species.EKANS,
|
||||
Species.ARBOK,
|
||||
Species.ONIX,
|
||||
Species.STEELIX,
|
||||
Species.DRATINI,
|
||||
Species.DRAGONAIR,
|
||||
Species.DRAGONITE,
|
||||
Species.CLEFFA,
|
||||
Species.CLEFAIRY,
|
||||
Species.CLEFABLE,
|
||||
Species.UMBREON,
|
||||
Species.DUNSPARCE,
|
||||
Species.DUDUNSPARCE,
|
||||
Species.TEDDIURSA,
|
||||
Species.URSARING,
|
||||
Species.URSALUNA,
|
||||
Species.SEVIPER,
|
||||
Species.LUNATONE,
|
||||
Species.RAYQUAZA,
|
||||
Species.CHINGLING,
|
||||
Species.CHIMECHO,
|
||||
Species.CRESSELIA,
|
||||
Species.DARKRAI,
|
||||
Species.SNIVY,
|
||||
Species.SERVINE,
|
||||
Species.SERPERIOR,
|
||||
Species.DARUMAKA,
|
||||
Species.DARMANITAN,
|
||||
Species.ZYGARDE,
|
||||
Species.DRAMPA,
|
||||
Species.LUNALA,
|
||||
Species.BLACEPHALON,
|
||||
Species.SILICOBRA,
|
||||
Species.SANDACONDA,
|
||||
Species.ROARING_MOON,
|
||||
Species.BLOODMOON_URSALUNA,
|
||||
SpeciesId.EKANS,
|
||||
SpeciesId.ARBOK,
|
||||
SpeciesId.ONIX,
|
||||
SpeciesId.STEELIX,
|
||||
SpeciesId.DRATINI,
|
||||
SpeciesId.DRAGONAIR,
|
||||
SpeciesId.DRAGONITE,
|
||||
SpeciesId.CLEFFA,
|
||||
SpeciesId.CLEFAIRY,
|
||||
SpeciesId.CLEFABLE,
|
||||
SpeciesId.UMBREON,
|
||||
SpeciesId.DUNSPARCE,
|
||||
SpeciesId.DUDUNSPARCE,
|
||||
SpeciesId.TEDDIURSA,
|
||||
SpeciesId.URSARING,
|
||||
SpeciesId.URSALUNA,
|
||||
SpeciesId.SEVIPER,
|
||||
SpeciesId.LUNATONE,
|
||||
SpeciesId.RAYQUAZA,
|
||||
SpeciesId.CHINGLING,
|
||||
SpeciesId.CHIMECHO,
|
||||
SpeciesId.CRESSELIA,
|
||||
SpeciesId.DARKRAI,
|
||||
SpeciesId.SNIVY,
|
||||
SpeciesId.SERVINE,
|
||||
SpeciesId.SERPERIOR,
|
||||
SpeciesId.DARUMAKA,
|
||||
SpeciesId.DARMANITAN,
|
||||
SpeciesId.ZYGARDE,
|
||||
SpeciesId.DRAMPA,
|
||||
SpeciesId.LUNALA,
|
||||
SpeciesId.BLACEPHALON,
|
||||
SpeciesId.SILICOBRA,
|
||||
SpeciesId.SANDACONDA,
|
||||
SpeciesId.ROARING_MOON,
|
||||
SpeciesId.BLOODMOON_URSALUNA,
|
||||
],
|
||||
classicWaveRewards: [
|
||||
{ wave: 8, type: "SHINY_CHARM" },
|
||||
@ -210,28 +210,28 @@ const timedEvents: TimedEvent[] = [
|
||||
scale: 0.21,
|
||||
availableLangs: ["en", "de", "it", "fr", "ja", "ko", "es-ES", "pt-BR", "zh-CN"],
|
||||
eventEncounters: [
|
||||
{ species: Species.NIDORAN_F },
|
||||
{ species: Species.NIDORAN_M },
|
||||
{ species: Species.IGGLYBUFF },
|
||||
{ species: Species.SMOOCHUM },
|
||||
{ species: Species.VOLBEAT },
|
||||
{ species: Species.ILLUMISE },
|
||||
{ species: Species.ROSELIA },
|
||||
{ species: Species.LUVDISC },
|
||||
{ species: Species.WOOBAT },
|
||||
{ species: Species.FRILLISH },
|
||||
{ species: Species.ALOMOMOLA },
|
||||
{ species: Species.FURFROU, formIndex: 1 }, // Heart Trim
|
||||
{ species: Species.ESPURR },
|
||||
{ species: Species.SPRITZEE },
|
||||
{ species: Species.SWIRLIX },
|
||||
{ species: Species.APPLIN },
|
||||
{ species: Species.MILCERY },
|
||||
{ species: Species.INDEEDEE },
|
||||
{ species: Species.TANDEMAUS },
|
||||
{ species: Species.ENAMORUS },
|
||||
{ species: SpeciesId.NIDORAN_F },
|
||||
{ species: SpeciesId.NIDORAN_M },
|
||||
{ species: SpeciesId.IGGLYBUFF },
|
||||
{ species: SpeciesId.SMOOCHUM },
|
||||
{ species: SpeciesId.VOLBEAT },
|
||||
{ species: SpeciesId.ILLUMISE },
|
||||
{ species: SpeciesId.ROSELIA },
|
||||
{ species: SpeciesId.LUVDISC },
|
||||
{ species: SpeciesId.WOOBAT },
|
||||
{ species: SpeciesId.FRILLISH },
|
||||
{ species: SpeciesId.ALOMOMOLA },
|
||||
{ species: SpeciesId.FURFROU, formIndex: 1 }, // Heart Trim
|
||||
{ species: SpeciesId.ESPURR },
|
||||
{ species: SpeciesId.SPRITZEE },
|
||||
{ species: SpeciesId.SWIRLIX },
|
||||
{ species: SpeciesId.APPLIN },
|
||||
{ species: SpeciesId.MILCERY },
|
||||
{ species: SpeciesId.INDEEDEE },
|
||||
{ species: SpeciesId.TANDEMAUS },
|
||||
{ species: SpeciesId.ENAMORUS },
|
||||
],
|
||||
luckBoostedSpecies: [Species.LUVDISC],
|
||||
luckBoostedSpecies: [SpeciesId.LUVDISC],
|
||||
classicWaveRewards: [
|
||||
{ wave: 8, type: "SHINY_CHARM" },
|
||||
{ wave: 8, type: "ABILITY_CHARM" },
|
||||
@ -249,39 +249,39 @@ const timedEvents: TimedEvent[] = [
|
||||
scale: 0.21,
|
||||
availableLangs: ["en", "de", "it", "fr", "ja", "ko", "es-ES", "pt-BR", "zh-CN"],
|
||||
eventEncounters: [
|
||||
{ species: Species.PIKACHU, formIndex: 1, blockEvolution: true }, // Partner Form
|
||||
{ species: Species.EEVEE, formIndex: 1, blockEvolution: true }, // Partner Form
|
||||
{ species: Species.CHIKORITA },
|
||||
{ species: Species.TOTODILE },
|
||||
{ species: Species.TEPIG },
|
||||
{ species: SpeciesId.PIKACHU, formIndex: 1, blockEvolution: true }, // Partner Form
|
||||
{ species: SpeciesId.EEVEE, formIndex: 1, blockEvolution: true }, // Partner Form
|
||||
{ species: SpeciesId.CHIKORITA },
|
||||
{ species: SpeciesId.TOTODILE },
|
||||
{ species: SpeciesId.TEPIG },
|
||||
],
|
||||
luckBoostedSpecies: [
|
||||
Species.PICHU,
|
||||
Species.PIKACHU,
|
||||
Species.RAICHU,
|
||||
Species.ALOLA_RAICHU,
|
||||
Species.PSYDUCK,
|
||||
Species.GOLDUCK,
|
||||
Species.EEVEE,
|
||||
Species.FLAREON,
|
||||
Species.JOLTEON,
|
||||
Species.VAPOREON,
|
||||
Species.ESPEON,
|
||||
Species.UMBREON,
|
||||
Species.LEAFEON,
|
||||
Species.GLACEON,
|
||||
Species.SYLVEON,
|
||||
Species.CHIKORITA,
|
||||
Species.BAYLEEF,
|
||||
Species.MEGANIUM,
|
||||
Species.TOTODILE,
|
||||
Species.CROCONAW,
|
||||
Species.FERALIGATR,
|
||||
Species.TEPIG,
|
||||
Species.PIGNITE,
|
||||
Species.EMBOAR,
|
||||
Species.ZYGARDE,
|
||||
Species.ETERNAL_FLOETTE,
|
||||
SpeciesId.PICHU,
|
||||
SpeciesId.PIKACHU,
|
||||
SpeciesId.RAICHU,
|
||||
SpeciesId.ALOLA_RAICHU,
|
||||
SpeciesId.PSYDUCK,
|
||||
SpeciesId.GOLDUCK,
|
||||
SpeciesId.EEVEE,
|
||||
SpeciesId.FLAREON,
|
||||
SpeciesId.JOLTEON,
|
||||
SpeciesId.VAPOREON,
|
||||
SpeciesId.ESPEON,
|
||||
SpeciesId.UMBREON,
|
||||
SpeciesId.LEAFEON,
|
||||
SpeciesId.GLACEON,
|
||||
SpeciesId.SYLVEON,
|
||||
SpeciesId.CHIKORITA,
|
||||
SpeciesId.BAYLEEF,
|
||||
SpeciesId.MEGANIUM,
|
||||
SpeciesId.TOTODILE,
|
||||
SpeciesId.CROCONAW,
|
||||
SpeciesId.FERALIGATR,
|
||||
SpeciesId.TEPIG,
|
||||
SpeciesId.PIGNITE,
|
||||
SpeciesId.EMBOAR,
|
||||
SpeciesId.ZYGARDE,
|
||||
SpeciesId.ETERNAL_FLOETTE,
|
||||
],
|
||||
classicWaveRewards: [
|
||||
{ wave: 8, type: "SHINY_CHARM" },
|
||||
@ -321,28 +321,28 @@ const timedEvents: TimedEvent[] = [
|
||||
shinyMultiplier: 2,
|
||||
upgradeUnlockedVouchers: true,
|
||||
eventEncounters: [
|
||||
{ species: Species.HOPPIP },
|
||||
{ species: Species.CELEBI },
|
||||
{ species: Species.VOLBEAT },
|
||||
{ species: Species.ILLUMISE },
|
||||
{ species: Species.SPOINK },
|
||||
{ species: Species.LILEEP },
|
||||
{ species: Species.SHINX },
|
||||
{ species: Species.PACHIRISU },
|
||||
{ species: Species.CHERUBI },
|
||||
{ species: Species.MUNCHLAX },
|
||||
{ species: Species.TEPIG },
|
||||
{ species: Species.PANSAGE },
|
||||
{ species: Species.PANSEAR },
|
||||
{ species: Species.PANPOUR },
|
||||
{ species: Species.DARUMAKA },
|
||||
{ species: Species.ARCHEN },
|
||||
{ species: Species.DEERLING, formIndex: 0 }, // Spring Deerling
|
||||
{ species: Species.CLAUNCHER },
|
||||
{ species: Species.WISHIWASHI },
|
||||
{ species: Species.DRAMPA },
|
||||
{ species: Species.JANGMO_O },
|
||||
{ species: Species.APPLIN },
|
||||
{ species: SpeciesId.HOPPIP },
|
||||
{ species: SpeciesId.CELEBI },
|
||||
{ species: SpeciesId.VOLBEAT },
|
||||
{ species: SpeciesId.ILLUMISE },
|
||||
{ species: SpeciesId.SPOINK },
|
||||
{ species: SpeciesId.LILEEP },
|
||||
{ species: SpeciesId.SHINX },
|
||||
{ species: SpeciesId.PACHIRISU },
|
||||
{ species: SpeciesId.CHERUBI },
|
||||
{ species: SpeciesId.MUNCHLAX },
|
||||
{ species: SpeciesId.TEPIG },
|
||||
{ species: SpeciesId.PANSAGE },
|
||||
{ species: SpeciesId.PANSEAR },
|
||||
{ species: SpeciesId.PANPOUR },
|
||||
{ species: SpeciesId.DARUMAKA },
|
||||
{ species: SpeciesId.ARCHEN },
|
||||
{ species: SpeciesId.DEERLING, formIndex: 0 }, // Spring Deerling
|
||||
{ species: SpeciesId.CLAUNCHER },
|
||||
{ species: SpeciesId.WISHIWASHI },
|
||||
{ species: SpeciesId.DRAMPA },
|
||||
{ species: SpeciesId.JANGMO_O },
|
||||
{ species: SpeciesId.APPLIN },
|
||||
],
|
||||
classicWaveRewards: [
|
||||
{ wave: 8, type: "SHINY_CHARM" },
|
||||
@ -510,8 +510,8 @@ export class TimedEventManager {
|
||||
return ret;
|
||||
}
|
||||
|
||||
getEventLuckBoostedSpecies(): Species[] {
|
||||
const ret: Species[] = [];
|
||||
getEventLuckBoostedSpecies(): SpeciesId[] {
|
||||
const ret: SpeciesId[] = [];
|
||||
timedEvents
|
||||
.filter(te => this.isActive(te))
|
||||
.map(te => {
|
||||
|
@ -3,14 +3,14 @@ import { globalScene } from "#app/global-scene";
|
||||
import { TextStyle, addTextObject } from "./text";
|
||||
import { argbFromRgba } from "@material/material-color-utilities";
|
||||
import { rgbHexToRgba } from "#app/utils/common";
|
||||
import type { Species } from "#enums/species";
|
||||
import type { SpeciesId } from "#enums/species";
|
||||
|
||||
export default class CandyBar extends Phaser.GameObjects.Container {
|
||||
private bg: Phaser.GameObjects.NineSlice;
|
||||
private candyIcon: Phaser.GameObjects.Sprite;
|
||||
private candyOverlayIcon: Phaser.GameObjects.Sprite;
|
||||
private countText: Phaser.GameObjects.Text;
|
||||
private speciesId: Species;
|
||||
private speciesId: SpeciesId;
|
||||
|
||||
private tween: Phaser.Tweens.Tween | null;
|
||||
private autoHideTimer: NodeJS.Timeout | null;
|
||||
@ -47,7 +47,7 @@ export default class CandyBar extends Phaser.GameObjects.Container {
|
||||
this.shown = false;
|
||||
}
|
||||
|
||||
showStarterSpeciesCandy(starterSpeciesId: Species, count: number): Promise<void> {
|
||||
showStarterSpeciesCandy(starterSpeciesId: SpeciesId, count: number): Promise<void> {
|
||||
return new Promise<void>(resolve => {
|
||||
if (this.shown) {
|
||||
if (this.speciesId === starterSpeciesId) {
|
||||
|
@ -10,7 +10,7 @@ import { globalScene } from "#app/global-scene";
|
||||
import { TerastallizeAccessModifier } from "#app/modifier/modifier";
|
||||
import { PokemonType } from "#enums/pokemon-type";
|
||||
import { getTypeRgb } from "#app/data/type";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
|
||||
export enum Command {
|
||||
FIGHT = 0,
|
||||
@ -198,7 +198,7 @@ export default class CommandUiHandler extends UiHandler {
|
||||
const hasTeraMod = !!globalScene.getModifiers(TerastallizeAccessModifier).length;
|
||||
const activePokemon = globalScene.getField()[this.fieldIndex];
|
||||
const isBlockedForm =
|
||||
activePokemon.isMega() || activePokemon.isMax() || activePokemon.hasSpecies(Species.NECROZMA, "ultra");
|
||||
activePokemon.isMega() || activePokemon.isMax() || activePokemon.hasSpecies(SpeciesId.NECROZMA, "ultra");
|
||||
const currentTeras = globalScene.arena.playerTerasUsed;
|
||||
const plannedTera =
|
||||
globalScene.currentBattle.preTurnCommands[0]?.command === Command.TERA && this.fieldIndex > 0 ? 1 : 0;
|
||||
|
@ -26,7 +26,7 @@ import MoveInfoOverlay from "#app/ui/move-info-overlay";
|
||||
import i18next from "i18next";
|
||||
import type BBCodeText from "phaser3-rex-plugins/plugins/bbcodetext";
|
||||
import { MoveId } from "#enums/move-id";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import { getPokemonNameWithAffix } from "#app/messages";
|
||||
import type { CommandPhase } from "#app/phases/command-phase";
|
||||
import { SelectModifierPhase } from "#app/phases/select-modifier-phase";
|
||||
@ -1578,7 +1578,7 @@ export default class PartyUiHandler extends MessageUiHandler {
|
||||
formChangeItemModifiers = formChangeItemModifiers.filter(
|
||||
m => m.active || m.formChangeItem === FormChangeItem.ULTRANECROZIUM_Z,
|
||||
);
|
||||
} else if (pokemon.species.speciesId === Species.NECROZMA) {
|
||||
} else if (pokemon.species.speciesId === SpeciesId.NECROZMA) {
|
||||
// no form is currently active. the user has to activate some form, except ULTRANECROZIUM_Z
|
||||
formChangeItemModifiers = formChangeItemModifiers.filter(
|
||||
m => m.formChangeItem !== FormChangeItem.ULTRANECROZIUM_Z,
|
||||
|
@ -37,7 +37,7 @@ import PokedexInfoOverlay from "#app/ui/pokedex-info-overlay";
|
||||
import { getEggTierForSpecies } from "#app/data/egg";
|
||||
import { Device } from "#enums/devices";
|
||||
import type { MoveId } from "#enums/move-id";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import { Button } from "#enums/buttons";
|
||||
import { EggSourceType } from "#enums/egg-source-types";
|
||||
import {
|
||||
@ -203,7 +203,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
|
||||
private species: PokemonSpecies;
|
||||
private starterId: number;
|
||||
private formIndex: number;
|
||||
private speciesLoaded: Map<Species, boolean> = new Map<Species, boolean>();
|
||||
private speciesLoaded: Map<SpeciesId, boolean> = new Map<SpeciesId, boolean>();
|
||||
private levelMoves: LevelMoves;
|
||||
private eggMoves: MoveId[] = [];
|
||||
private hasEggMoves: boolean[] = [];
|
||||
@ -256,7 +256,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
|
||||
protected scale = 0.1666666667;
|
||||
private menuDescriptions: string[];
|
||||
private isFormGender: boolean;
|
||||
private filteredIndices: Species[] | null = null;
|
||||
private filteredIndices: SpeciesId[] | null = null;
|
||||
|
||||
private availableVariants: number;
|
||||
private unlockedVariants: boolean[];
|
||||
@ -863,7 +863,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
|
||||
|
||||
// Function to ensure that forms appear in the appropriate biome and tod
|
||||
sanitizeBiomes(biomes: BiomeTierTod[], speciesId: number): BiomeTierTod[] {
|
||||
if (speciesId === Species.BURMY || speciesId === Species.WORMADAM) {
|
||||
if (speciesId === SpeciesId.BURMY || speciesId === SpeciesId.WORMADAM) {
|
||||
return biomes.filter(b => {
|
||||
const formIndex = (() => {
|
||||
switch (b.biome) {
|
||||
@ -878,7 +878,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
|
||||
return this.formIndex === formIndex;
|
||||
});
|
||||
}
|
||||
if (speciesId === Species.ROTOM) {
|
||||
if (speciesId === SpeciesId.ROTOM) {
|
||||
return biomes.filter(b => {
|
||||
const formIndex = (() => {
|
||||
switch (b.biome) {
|
||||
@ -899,7 +899,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
|
||||
return this.formIndex === formIndex;
|
||||
});
|
||||
}
|
||||
if (speciesId === Species.LYCANROC) {
|
||||
if (speciesId === SpeciesId.LYCANROC) {
|
||||
return biomes.filter(b => {
|
||||
const formIndex = (() => {
|
||||
switch (b.tod[0]) {
|
||||
@ -1089,11 +1089,11 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
|
||||
* @returns the id of the corresponding starter
|
||||
*/
|
||||
getStarterSpeciesId(speciesId): number {
|
||||
if (speciesId === Species.PIKACHU) {
|
||||
if (speciesId === SpeciesId.PIKACHU) {
|
||||
if ([0, 1, 8].includes(this.formIndex)) {
|
||||
return Species.PICHU;
|
||||
return SpeciesId.PICHU;
|
||||
}
|
||||
return Species.PIKACHU;
|
||||
return SpeciesId.PIKACHU;
|
||||
}
|
||||
if (speciesStarterCosts.hasOwnProperty(speciesId)) {
|
||||
return speciesId;
|
||||
@ -2581,7 +2581,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
|
||||
|
||||
this.pokemonUncaughtText.setVisible(false);
|
||||
this.pokemonCaughtCountText.setText(`${this.speciesStarterDexEntry?.caughtCount}`);
|
||||
if (species.speciesId === Species.MANAPHY || species.speciesId === Species.PHIONE) {
|
||||
if (species.speciesId === SpeciesId.MANAPHY || species.speciesId === SpeciesId.PHIONE) {
|
||||
this.pokemonHatchedIcon.setFrame("manaphy");
|
||||
} else {
|
||||
this.pokemonHatchedIcon.setFrame(getEggTierForSpecies(species));
|
||||
@ -2614,7 +2614,7 @@ export default class PokedexPageUiHandler extends MessageUiHandler {
|
||||
this.pokemonCandyIcon.setTint(argbFromRgba(rgbHexToRgba(colorScheme[0])));
|
||||
this.pokemonCandyOverlayIcon.setTint(argbFromRgba(rgbHexToRgba(colorScheme[1])));
|
||||
this.pokemonCandyCountText.setText(
|
||||
`x${species.speciesId === Species.PIKACHU ? 0 : globalScene.gameData.starterData[this.starterId].candyCount}`,
|
||||
`x${species.speciesId === SpeciesId.PIKACHU ? 0 : globalScene.gameData.starterData[this.starterId].candyCount}`,
|
||||
);
|
||||
this.pokemonCandyContainer.setVisible(true);
|
||||
|
||||
|
@ -19,7 +19,7 @@ import { TextStyle, addTextObject } from "#app/ui/text";
|
||||
import { UiMode } from "#enums/ui-mode";
|
||||
import { SettingKeyboard } from "#app/system/settings/settings-keyboard";
|
||||
import { Passive as PassiveAttr } from "#enums/passive";
|
||||
import type { Species } from "#enums/species";
|
||||
import type { SpeciesId } from "#enums/species";
|
||||
import { Button } from "#enums/buttons";
|
||||
import { DropDown, DropDownLabel, DropDownOption, DropDownState, DropDownType, SortCriteria } from "#app/ui/dropdown";
|
||||
import { PokedexMonContainer } from "#app/ui/pokedex-mon-container";
|
||||
@ -175,7 +175,7 @@ export default class PokedexUiHandler extends MessageUiHandler {
|
||||
private oldCursor = -1;
|
||||
|
||||
private lastSpecies: PokemonSpecies;
|
||||
private speciesLoaded: Map<Species, boolean> = new Map<Species, boolean>();
|
||||
private speciesLoaded: Map<SpeciesId, boolean> = new Map<SpeciesId, boolean>();
|
||||
private pokerusSpecies: PokemonSpecies[] = [];
|
||||
private speciesStarterDexEntry: DexEntry | null;
|
||||
|
||||
@ -227,7 +227,7 @@ export default class PokedexUiHandler extends MessageUiHandler {
|
||||
private showFormTrayIconElement: Phaser.GameObjects.Sprite;
|
||||
private showFormTrayLabel: Phaser.GameObjects.Text;
|
||||
private canShowFormTray: boolean;
|
||||
private filteredIndices: Species[];
|
||||
private filteredIndices: SpeciesId[];
|
||||
|
||||
constructor() {
|
||||
super(UiMode.POKEDEX);
|
||||
|
@ -5,7 +5,7 @@ import { rgbHexToRgba, padInt } from "#app/utils/common";
|
||||
import { TextStyle, addTextObject } from "#app/ui/text";
|
||||
import { speciesEggMoves } from "#app/data/balance/egg-moves";
|
||||
import { allMoves } from "#app/data/data-lists";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import { getEggTierForSpecies } from "#app/data/egg";
|
||||
import { starterColors } from "#app/global-vars/starter-colors";
|
||||
import { globalScene } from "#app/global-scene";
|
||||
@ -182,7 +182,7 @@ export default class PokemonHatchInfoContainer extends PokemonInfoContainer {
|
||||
// will always have at least one egg move
|
||||
this.pokemonEggMovesContainer.setVisible(true);
|
||||
|
||||
if (species.speciesId === Species.MANAPHY || species.speciesId === Species.PHIONE) {
|
||||
if (species.speciesId === SpeciesId.MANAPHY || species.speciesId === SpeciesId.PHIONE) {
|
||||
this.pokemonHatchedIcon.setFrame("manaphy");
|
||||
} else {
|
||||
this.pokemonHatchedIcon.setFrame(getEggTierForSpecies(species));
|
||||
|
@ -21,7 +21,7 @@ import { getNatureStatMultiplier, getNatureName } from "../data/nature";
|
||||
import { getVariantTint } from "#app/sprites/variant";
|
||||
// biome-ignore lint/style/noNamespaceImport: See `src/system/game-data.ts`
|
||||
import * as Modifier from "#app/modifier/modifier";
|
||||
import type { Species } from "#enums/species";
|
||||
import type { SpeciesId } from "#enums/species";
|
||||
import { PlayerGender } from "#enums/player-gender";
|
||||
import { SettingKeyboard } from "#app/system/settings/settings-keyboard";
|
||||
import { getBiomeName } from "#app/data/balance/biomes";
|
||||
@ -1025,7 +1025,7 @@ export default class RunInfoUiHandler extends UiHandler {
|
||||
ignoreTimeTint: true,
|
||||
});
|
||||
this.hallofFameContainer.add(pokemonSprite);
|
||||
const speciesLoaded: Map<Species, boolean> = new Map<Species, boolean>();
|
||||
const speciesLoaded: Map<SpeciesId, boolean> = new Map<SpeciesId, boolean>();
|
||||
speciesLoaded.set(id, false);
|
||||
|
||||
const female = pkmn.gender === 1;
|
||||
|
@ -48,7 +48,7 @@ import MoveInfoOverlay from "#app/ui/move-info-overlay";
|
||||
import { getEggTierForSpecies } from "#app/data/egg";
|
||||
import { Device } from "#enums/devices";
|
||||
import type { MoveId } from "#enums/move-id";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import { Button } from "#enums/buttons";
|
||||
import { EggSourceType } from "#enums/egg-source-types";
|
||||
import { DropDown, DropDownLabel, DropDownOption, DropDownState, DropDownType, SortCriteria } from "#app/ui/dropdown";
|
||||
@ -356,7 +356,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
|
||||
|
||||
private allSpecies: PokemonSpecies[] = [];
|
||||
private lastSpecies: PokemonSpecies;
|
||||
private speciesLoaded: Map<Species, boolean> = new Map<Species, boolean>();
|
||||
private speciesLoaded: Map<SpeciesId, boolean> = new Map<SpeciesId, boolean>();
|
||||
public starterSpecies: PokemonSpecies[] = [];
|
||||
private pokerusSpecies: PokemonSpecies[] = [];
|
||||
private starterAttr: bigint[] = [];
|
||||
@ -795,7 +795,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
|
||||
this.randomCursorObj.setOrigin(0, 0);
|
||||
this.starterSelectContainer.add(this.randomCursorObj);
|
||||
|
||||
const starterSpecies: Species[] = [];
|
||||
const starterSpecies: SpeciesId[] = [];
|
||||
|
||||
const starterBoxContainer = globalScene.add.container(speciesContainerX + 6, 9); //115
|
||||
|
||||
@ -3537,7 +3537,7 @@ export default class StarterSelectUiHandler extends MessageUiHandler {
|
||||
this.pokemonPassiveLabelText.setVisible(true);
|
||||
this.pokemonNatureLabelText.setVisible(true);
|
||||
this.pokemonCaughtCountText.setText(`${this.speciesStarterDexEntry.caughtCount}`);
|
||||
if (species.speciesId === Species.MANAPHY || species.speciesId === Species.PHIONE) {
|
||||
if (species.speciesId === SpeciesId.MANAPHY || species.speciesId === SpeciesId.PHIONE) {
|
||||
this.pokemonHatchedIcon.setFrame("manaphy");
|
||||
} else {
|
||||
this.pokemonHatchedIcon.setFrame(getEggTierForSpecies(species));
|
||||
|
@ -8,7 +8,7 @@ import { TimedEventDisplay } from "#app/timed-event-manager";
|
||||
import { version } from "../../package.json";
|
||||
import { pokerogueApi } from "#app/plugins/api/pokerogue-api";
|
||||
import { globalScene } from "#app/global-scene";
|
||||
import type { Species } from "#enums/species";
|
||||
import type { SpeciesId } from "#enums/species";
|
||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
||||
import { PlayerGender } from "#enums/player-gender";
|
||||
import { timedEventManager } from "#app/global-event-manager";
|
||||
@ -105,7 +105,7 @@ export default class TitleUiHandler extends OptionSelectUiHandler {
|
||||
/** Used solely to display a random Pokémon name in a splash message. */
|
||||
randomPokemon(): void {
|
||||
const rand = randInt(1025, 1);
|
||||
const pokemon = getPokemonSpecies(rand as Species);
|
||||
const pokemon = getPokemonSpecies(rand as SpeciesId);
|
||||
if (
|
||||
this.splashMessage === "splashMessages:underratedPokemon" ||
|
||||
this.splashMessage === "splashMessages:dontTalkAboutThePokemonIncident" ||
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { Stat } from "#app/enums/stat";
|
||||
import { AbilityId } from "#enums/ability-id";
|
||||
import { MoveId } from "#enums/move-id";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import GameManager from "#test/testUtils/gameManager";
|
||||
import Phaser from "phaser";
|
||||
import { afterEach, beforeAll, beforeEach, describe, it, expect } from "vitest";
|
||||
@ -33,7 +33,7 @@ describe("Ability Duplication", () => {
|
||||
it("huge power should only be applied once if both normal and passive", async () => {
|
||||
game.override.passiveAbility(AbilityId.HUGE_POWER);
|
||||
|
||||
await game.classicMode.startBattle([Species.MAGIKARP]);
|
||||
await game.classicMode.startBattle([SpeciesId.MAGIKARP]);
|
||||
|
||||
const [magikarp] = game.scene.getPlayerField();
|
||||
const magikarpAttack = magikarp.getEffectiveStat(Stat.ATK);
|
||||
@ -46,7 +46,7 @@ describe("Ability Duplication", () => {
|
||||
it("huge power should stack with pure power", async () => {
|
||||
game.override.passiveAbility(AbilityId.PURE_POWER);
|
||||
|
||||
await game.classicMode.startBattle([Species.MAGIKARP]);
|
||||
await game.classicMode.startBattle([SpeciesId.MAGIKARP]);
|
||||
|
||||
const [magikarp] = game.scene.getPlayerField();
|
||||
const magikarpAttack = magikarp.getEffectiveStat(Stat.ATK);
|
||||
|
@ -4,7 +4,7 @@ import { TurnInitPhase } from "#app/phases/turn-init-phase";
|
||||
import i18next from "#app/plugins/i18n";
|
||||
import { UiMode } from "#enums/ui-mode";
|
||||
import { AbilityId } from "#enums/ability-id";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import GameManager from "#test/testUtils/gameManager";
|
||||
import Phaser from "phaser";
|
||||
import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
|
||||
@ -28,7 +28,7 @@ describe("Ability Timing", () => {
|
||||
|
||||
game.override
|
||||
.battleStyle("single")
|
||||
.enemySpecies(Species.MAGIKARP)
|
||||
.enemySpecies(SpeciesId.MAGIKARP)
|
||||
.enemyAbility(AbilityId.INTIMIDATE)
|
||||
.ability(AbilityId.BALL_FETCH);
|
||||
vi.spyOn(i18next, "t");
|
||||
@ -36,7 +36,7 @@ describe("Ability Timing", () => {
|
||||
|
||||
it("should trigger after switch check", async () => {
|
||||
game.settings.battleStyle = BattleStyle.SWITCH;
|
||||
await game.classicMode.runToSummon([Species.EEVEE, Species.FEEBAS]);
|
||||
await game.classicMode.runToSummon([SpeciesId.EEVEE, SpeciesId.FEEBAS]);
|
||||
|
||||
game.onNextPrompt(
|
||||
"CheckSwitchPhase",
|
||||
|
@ -2,7 +2,7 @@ import { BattlerIndex } from "#app/battle";
|
||||
import { isBetween, toDmgValue } from "#app/utils/common";
|
||||
import { AbilityId } from "#enums/ability-id";
|
||||
import { MoveId } from "#enums/move-id";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import GameManager from "#test/testUtils/gameManager";
|
||||
import Phaser from "phaser";
|
||||
import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest";
|
||||
@ -30,13 +30,13 @@ describe("Abilities - Analytic", () => {
|
||||
.disableCrits()
|
||||
.startingLevel(200)
|
||||
.enemyLevel(200)
|
||||
.enemySpecies(Species.SNORLAX)
|
||||
.enemySpecies(SpeciesId.SNORLAX)
|
||||
.enemyAbility(AbilityId.BALL_FETCH)
|
||||
.enemyMoveset(MoveId.SPLASH);
|
||||
});
|
||||
|
||||
it("should increase damage if the user moves last", async () => {
|
||||
await game.classicMode.startBattle([Species.ARCEUS]);
|
||||
await game.classicMode.startBattle([SpeciesId.ARCEUS]);
|
||||
|
||||
const enemy = game.scene.getEnemyPokemon()!;
|
||||
|
||||
@ -54,7 +54,7 @@ describe("Abilities - Analytic", () => {
|
||||
|
||||
it("should increase damage only if the user moves last in doubles", async () => {
|
||||
game.override.battleStyle("double");
|
||||
await game.classicMode.startBattle([Species.GENGAR, Species.SHUCKLE]);
|
||||
await game.classicMode.startBattle([SpeciesId.GENGAR, SpeciesId.SHUCKLE]);
|
||||
|
||||
const [enemy] = game.scene.getEnemyField();
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { allAbilities } from "#app/data/data-lists";
|
||||
import { AbilityId } from "#enums/ability-id";
|
||||
import { MoveId } from "#enums/move-id";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import GameManager from "#test/testUtils/gameManager";
|
||||
import Phaser from "phaser";
|
||||
import { afterEach, beforeAll, beforeEach, describe, it, expect, vi } from "vitest";
|
||||
@ -25,7 +25,7 @@ describe("Abilities - Arena Trap", () => {
|
||||
game.override
|
||||
.moveset(MoveId.SPLASH)
|
||||
.ability(AbilityId.ARENA_TRAP)
|
||||
.enemySpecies(Species.RALTS)
|
||||
.enemySpecies(SpeciesId.RALTS)
|
||||
.enemyAbility(AbilityId.BALL_FETCH)
|
||||
.enemyMoveset(MoveId.TELEPORT);
|
||||
});
|
||||
@ -65,7 +65,7 @@ describe("Abilities - Arena Trap", () => {
|
||||
.enemyMoveset(MoveId.SPLASH)
|
||||
.moveset([MoveId.ROAR, MoveId.SPLASH])
|
||||
.ability(AbilityId.BALL_FETCH);
|
||||
await game.classicMode.startBattle([Species.MAGIKARP, Species.SUDOWOODO, Species.LUNATONE]);
|
||||
await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.SUDOWOODO, SpeciesId.LUNATONE]);
|
||||
|
||||
const [enemy1, enemy2] = game.scene.getEnemyField();
|
||||
const [player1, player2] = game.scene.getPlayerField();
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { MoveId } from "#enums/move-id";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import { AbilityId } from "#enums/ability-id";
|
||||
import GameManager from "#test/testUtils/gameManager";
|
||||
import Phaser from "phaser";
|
||||
@ -28,13 +28,13 @@ describe("Moves - Aroma Veil", () => {
|
||||
.battleStyle("double")
|
||||
.enemyAbility(AbilityId.BALL_FETCH)
|
||||
.enemyMoveset([MoveId.HEAL_BLOCK, MoveId.IMPRISON, MoveId.SPLASH])
|
||||
.enemySpecies(Species.SHUCKLE)
|
||||
.enemySpecies(SpeciesId.SHUCKLE)
|
||||
.ability(AbilityId.AROMA_VEIL)
|
||||
.moveset([MoveId.GROWL]);
|
||||
});
|
||||
|
||||
it("Aroma Veil protects the Pokemon's side against most Move Restriction Battler Tags", async () => {
|
||||
await game.classicMode.startBattle([Species.REGIELEKI, Species.BULBASAUR]);
|
||||
await game.classicMode.startBattle([SpeciesId.REGIELEKI, SpeciesId.BULBASAUR]);
|
||||
|
||||
const party = game.scene.getPlayerParty()! as PlayerPokemon[];
|
||||
|
||||
@ -48,7 +48,7 @@ describe("Moves - Aroma Veil", () => {
|
||||
});
|
||||
|
||||
it("Aroma Veil does not protect against Imprison", async () => {
|
||||
await game.classicMode.startBattle([Species.REGIELEKI, Species.BULBASAUR]);
|
||||
await game.classicMode.startBattle([SpeciesId.REGIELEKI, SpeciesId.BULBASAUR]);
|
||||
|
||||
const party = game.scene.getPlayerParty()! as PlayerPokemon[];
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { allMoves } from "#app/data/data-lists";
|
||||
import { AbilityId } from "#enums/ability-id";
|
||||
import { MoveId } from "#enums/move-id";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import GameManager from "#test/testUtils/gameManager";
|
||||
import Phaser from "phaser";
|
||||
import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
|
||||
@ -29,7 +29,7 @@ describe("Abilities - Aura Break", () => {
|
||||
.moveset([MoveId.MOONBLAST, MoveId.DARK_PULSE])
|
||||
.enemyMoveset(MoveId.SPLASH)
|
||||
.enemyAbility(AbilityId.AURA_BREAK)
|
||||
.enemySpecies(Species.SHUCKLE);
|
||||
.enemySpecies(SpeciesId.SHUCKLE);
|
||||
});
|
||||
|
||||
it("reverses the effect of Fairy Aura", async () => {
|
||||
@ -39,7 +39,7 @@ describe("Abilities - Aura Break", () => {
|
||||
game.override.ability(AbilityId.FAIRY_AURA);
|
||||
vi.spyOn(moveToCheck, "calculateBattlePower");
|
||||
|
||||
await game.classicMode.startBattle([Species.PIKACHU]);
|
||||
await game.classicMode.startBattle([SpeciesId.PIKACHU]);
|
||||
game.move.select(MoveId.MOONBLAST);
|
||||
await game.phaseInterceptor.to("MoveEffectPhase");
|
||||
|
||||
@ -53,7 +53,7 @@ describe("Abilities - Aura Break", () => {
|
||||
game.override.ability(AbilityId.DARK_AURA);
|
||||
vi.spyOn(moveToCheck, "calculateBattlePower");
|
||||
|
||||
await game.classicMode.startBattle([Species.PIKACHU]);
|
||||
await game.classicMode.startBattle([SpeciesId.PIKACHU]);
|
||||
game.move.select(MoveId.DARK_PULSE);
|
||||
await game.phaseInterceptor.to("MoveEffectPhase");
|
||||
|
||||
@ -67,7 +67,7 @@ describe("Abilities - Aura Break", () => {
|
||||
game.override.ability(AbilityId.BALL_FETCH);
|
||||
vi.spyOn(moveToCheck, "calculateBattlePower");
|
||||
|
||||
await game.classicMode.startBattle([Species.PIKACHU]);
|
||||
await game.classicMode.startBattle([SpeciesId.PIKACHU]);
|
||||
game.move.select(MoveId.MOONBLAST);
|
||||
await game.phaseInterceptor.to("MoveEffectPhase");
|
||||
|
||||
|
@ -3,7 +3,7 @@ import { AbilityId } from "#enums/ability-id";
|
||||
import { MoveEffectPhase } from "#app/phases/move-effect-phase";
|
||||
import { TurnEndPhase } from "#app/phases/turn-end-phase";
|
||||
import { MoveId } from "#enums/move-id";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import GameManager from "#test/testUtils/gameManager";
|
||||
import Phaser from "phaser";
|
||||
import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
|
||||
@ -27,7 +27,7 @@ describe("Abilities - Battery", () => {
|
||||
beforeEach(() => {
|
||||
game = new GameManager(phaserGame);
|
||||
game.override.battleStyle("double");
|
||||
game.override.enemySpecies(Species.SHUCKLE);
|
||||
game.override.enemySpecies(SpeciesId.SHUCKLE);
|
||||
game.override.enemyAbility(AbilityId.BALL_FETCH);
|
||||
game.override.moveset([MoveId.TACKLE, MoveId.BREAKING_SWIPE, MoveId.SPLASH, MoveId.DAZZLING_GLEAM]);
|
||||
game.override.enemyMoveset(MoveId.SPLASH);
|
||||
@ -39,7 +39,7 @@ describe("Abilities - Battery", () => {
|
||||
|
||||
vi.spyOn(moveToCheck, "calculateBattlePower");
|
||||
|
||||
await game.classicMode.startBattle([Species.PIKACHU, Species.CHARJABUG]);
|
||||
await game.classicMode.startBattle([SpeciesId.PIKACHU, SpeciesId.CHARJABUG]);
|
||||
|
||||
game.move.select(MoveId.DAZZLING_GLEAM);
|
||||
game.move.select(MoveId.SPLASH, 1);
|
||||
@ -54,7 +54,7 @@ describe("Abilities - Battery", () => {
|
||||
|
||||
vi.spyOn(moveToCheck, "calculateBattlePower");
|
||||
|
||||
await game.classicMode.startBattle([Species.PIKACHU, Species.CHARJABUG]);
|
||||
await game.classicMode.startBattle([SpeciesId.PIKACHU, SpeciesId.CHARJABUG]);
|
||||
|
||||
game.move.select(MoveId.BREAKING_SWIPE);
|
||||
game.move.select(MoveId.SPLASH, 1);
|
||||
@ -69,7 +69,7 @@ describe("Abilities - Battery", () => {
|
||||
|
||||
vi.spyOn(moveToCheck, "calculateBattlePower");
|
||||
|
||||
await game.classicMode.startBattle([Species.CHARJABUG, Species.PIKACHU]);
|
||||
await game.classicMode.startBattle([SpeciesId.CHARJABUG, SpeciesId.PIKACHU]);
|
||||
|
||||
game.move.select(MoveId.DAZZLING_GLEAM);
|
||||
game.move.select(MoveId.SPLASH, 1);
|
||||
|
@ -4,7 +4,7 @@ import { MultiHitType } from "#enums/MultiHitType";
|
||||
import { Status } from "#app/data/status-effect";
|
||||
import { AbilityId } from "#enums/ability-id";
|
||||
import { MoveId } from "#enums/move-id";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import { StatusEffect } from "#enums/status-effect";
|
||||
import GameManager from "#test/testUtils/gameManager";
|
||||
import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
|
||||
@ -32,16 +32,16 @@ describe("Abilities - BATTLE BOND", () => {
|
||||
.battleStyle("single")
|
||||
.startingWave(4) // Leads to arena reset on Wave 5 trainer battle
|
||||
.ability(AbilityId.BATTLE_BOND)
|
||||
.starterForms({ [Species.GRENINJA]: ashForm })
|
||||
.starterForms({ [SpeciesId.GRENINJA]: ashForm })
|
||||
.moveset([MoveId.SPLASH, MoveId.WATER_SHURIKEN])
|
||||
.enemySpecies(Species.BULBASAUR)
|
||||
.enemySpecies(SpeciesId.BULBASAUR)
|
||||
.enemyMoveset(MoveId.SPLASH)
|
||||
.startingLevel(100) // Avoid levelling up
|
||||
.enemyLevel(1000); // Avoid opponent dying before `doKillOpponents()`
|
||||
});
|
||||
|
||||
it("check if fainted pokemon switches to base form on arena reset", async () => {
|
||||
await game.classicMode.startBattle([Species.MAGIKARP, Species.GRENINJA]);
|
||||
await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.GRENINJA]);
|
||||
|
||||
const greninja = game.scene.getPlayerParty()[1];
|
||||
expect(greninja.formIndex).toBe(ashForm);
|
||||
@ -60,7 +60,7 @@ describe("Abilities - BATTLE BOND", () => {
|
||||
});
|
||||
|
||||
it("should not keep buffing Water Shuriken after Greninja switches to base form", async () => {
|
||||
await game.classicMode.startBattle([Species.GRENINJA]);
|
||||
await game.classicMode.startBattle([SpeciesId.GRENINJA]);
|
||||
|
||||
const waterShuriken = allMoves[MoveId.WATER_SHURIKEN];
|
||||
vi.spyOn(waterShuriken, "calculateBattlePower");
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { BattlerIndex } from "#app/battle";
|
||||
import { AbilityId } from "#enums/ability-id";
|
||||
import { MoveId } from "#enums/move-id";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import { Stat } from "#enums/stat";
|
||||
import GameManager from "#test/testUtils/gameManager";
|
||||
import Phaser from "phaser";
|
||||
@ -25,7 +25,7 @@ describe("Abilities - Beast Boost", () => {
|
||||
game = new GameManager(phaserGame);
|
||||
game.override
|
||||
.battleStyle("single")
|
||||
.enemySpecies(Species.BULBASAUR)
|
||||
.enemySpecies(SpeciesId.BULBASAUR)
|
||||
.enemyAbility(AbilityId.BEAST_BOOST)
|
||||
.ability(AbilityId.BEAST_BOOST)
|
||||
.startingLevel(2000)
|
||||
@ -34,7 +34,7 @@ describe("Abilities - Beast Boost", () => {
|
||||
});
|
||||
|
||||
it("should prefer highest stat to boost its corresponding stat stage by 1 when winning a battle", async () => {
|
||||
await game.classicMode.startBattle([Species.SLOWBRO]);
|
||||
await game.classicMode.startBattle([SpeciesId.SLOWBRO]);
|
||||
|
||||
const playerPokemon = game.scene.getPlayerPokemon()!;
|
||||
// Set the pokemon's highest stat to DEF, so it should be picked by Beast Boost
|
||||
@ -52,7 +52,7 @@ describe("Abilities - Beast Boost", () => {
|
||||
it("should use in-battle overriden stats when determining the stat stage to raise by 1", async () => {
|
||||
game.override.enemyMoveset([MoveId.GUARD_SPLIT]);
|
||||
|
||||
await game.classicMode.startBattle([Species.SLOWBRO]);
|
||||
await game.classicMode.startBattle([SpeciesId.SLOWBRO]);
|
||||
|
||||
const playerPokemon = game.scene.getPlayerPokemon()!;
|
||||
// If the opponent uses Guard Split, the pokemon's second highest stat (SPATK) should be chosen
|
||||
@ -70,7 +70,7 @@ describe("Abilities - Beast Boost", () => {
|
||||
|
||||
it("should have order preference in case of stat ties", async () => {
|
||||
// Order preference follows the order of EFFECTIVE_STAT
|
||||
await game.classicMode.startBattle([Species.SLOWBRO]);
|
||||
await game.classicMode.startBattle([SpeciesId.SLOWBRO]);
|
||||
|
||||
const playerPokemon = game.scene.getPlayerPokemon()!;
|
||||
|
||||
|
@ -8,7 +8,7 @@ import { WeatherType } from "#enums/weather-type";
|
||||
import { MoveResult } from "#app/field/pokemon";
|
||||
import { AbilityId } from "#enums/ability-id";
|
||||
import { MoveId } from "#enums/move-id";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import GameManager from "#test/testUtils/gameManager";
|
||||
import Phaser from "phaser";
|
||||
import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
|
||||
@ -36,7 +36,7 @@ describe("Abilities - Commander", () => {
|
||||
.ability(AbilityId.COMMANDER)
|
||||
.battleStyle("double")
|
||||
.disableCrits()
|
||||
.enemySpecies(Species.SNORLAX)
|
||||
.enemySpecies(SpeciesId.SNORLAX)
|
||||
.enemyAbility(AbilityId.BALL_FETCH)
|
||||
.enemyMoveset(MoveId.TACKLE);
|
||||
|
||||
@ -44,7 +44,7 @@ describe("Abilities - Commander", () => {
|
||||
});
|
||||
|
||||
it("causes the source to jump into Dondozo's mouth, granting a stat boost and hiding the source", async () => {
|
||||
await game.classicMode.startBattle([Species.TATSUGIRI, Species.DONDOZO]);
|
||||
await game.classicMode.startBattle([SpeciesId.TATSUGIRI, SpeciesId.DONDOZO]);
|
||||
|
||||
const [tatsugiri, dondozo] = game.scene.getPlayerField();
|
||||
|
||||
@ -70,7 +70,7 @@ describe("Abilities - Commander", () => {
|
||||
it("should activate when a Dondozo switches in and cancel the source's move", async () => {
|
||||
game.override.enemyMoveset(MoveId.SPLASH);
|
||||
|
||||
await game.classicMode.startBattle([Species.TATSUGIRI, Species.MAGIKARP, Species.DONDOZO]);
|
||||
await game.classicMode.startBattle([SpeciesId.TATSUGIRI, SpeciesId.MAGIKARP, SpeciesId.DONDOZO]);
|
||||
|
||||
const tatsugiri = game.scene.getPlayerField()[0];
|
||||
|
||||
@ -89,7 +89,7 @@ describe("Abilities - Commander", () => {
|
||||
});
|
||||
|
||||
it("source should reenter the field when Dondozo faints", async () => {
|
||||
await game.classicMode.startBattle([Species.TATSUGIRI, Species.DONDOZO]);
|
||||
await game.classicMode.startBattle([SpeciesId.TATSUGIRI, SpeciesId.DONDOZO]);
|
||||
|
||||
const [tatsugiri, dondozo] = game.scene.getPlayerField();
|
||||
|
||||
@ -116,7 +116,7 @@ describe("Abilities - Commander", () => {
|
||||
it("source should still take damage from Poison while hidden", async () => {
|
||||
game.override.statusEffect(StatusEffect.POISON).enemyMoveset(MoveId.SPLASH);
|
||||
|
||||
await game.classicMode.startBattle([Species.TATSUGIRI, Species.DONDOZO]);
|
||||
await game.classicMode.startBattle([SpeciesId.TATSUGIRI, SpeciesId.DONDOZO]);
|
||||
|
||||
const [tatsugiri, dondozo] = game.scene.getPlayerField();
|
||||
|
||||
@ -134,7 +134,7 @@ describe("Abilities - Commander", () => {
|
||||
it("source should still take damage from Salt Cure while hidden", async () => {
|
||||
game.override.enemyMoveset(MoveId.SPLASH);
|
||||
|
||||
await game.classicMode.startBattle([Species.TATSUGIRI, Species.DONDOZO]);
|
||||
await game.classicMode.startBattle([SpeciesId.TATSUGIRI, SpeciesId.DONDOZO]);
|
||||
|
||||
const [tatsugiri, dondozo] = game.scene.getPlayerField();
|
||||
|
||||
@ -154,7 +154,7 @@ describe("Abilities - Commander", () => {
|
||||
it("source should still take damage from Sandstorm while hidden", async () => {
|
||||
game.override.weather(WeatherType.SANDSTORM).enemyMoveset(MoveId.SPLASH);
|
||||
|
||||
await game.classicMode.startBattle([Species.TATSUGIRI, Species.DONDOZO]);
|
||||
await game.classicMode.startBattle([SpeciesId.TATSUGIRI, SpeciesId.DONDOZO]);
|
||||
|
||||
const [tatsugiri, dondozo] = game.scene.getPlayerField();
|
||||
|
||||
@ -172,7 +172,7 @@ describe("Abilities - Commander", () => {
|
||||
it("should make Dondozo immune to being forced out", async () => {
|
||||
game.override.enemyMoveset([MoveId.SPLASH, MoveId.WHIRLWIND]);
|
||||
|
||||
await game.classicMode.startBattle([Species.TATSUGIRI, Species.DONDOZO]);
|
||||
await game.classicMode.startBattle([SpeciesId.TATSUGIRI, SpeciesId.DONDOZO]);
|
||||
|
||||
const [tatsugiri, dondozo] = game.scene.getPlayerField();
|
||||
|
||||
@ -194,7 +194,7 @@ describe("Abilities - Commander", () => {
|
||||
it("should interrupt the source's semi-invulnerability", async () => {
|
||||
game.override.moveset([MoveId.SPLASH, MoveId.DIVE]).enemyMoveset(MoveId.SPLASH);
|
||||
|
||||
await game.classicMode.startBattle([Species.TATSUGIRI, Species.MAGIKARP, Species.DONDOZO]);
|
||||
await game.classicMode.startBattle([SpeciesId.TATSUGIRI, SpeciesId.MAGIKARP, SpeciesId.DONDOZO]);
|
||||
|
||||
const tatsugiri = game.scene.getPlayerField()[0];
|
||||
|
||||
|
@ -2,7 +2,7 @@ import { Stat } from "#enums/stat";
|
||||
import { TurnInitPhase } from "#app/phases/turn-init-phase";
|
||||
import { AbilityId } from "#enums/ability-id";
|
||||
import { MoveId } from "#enums/move-id";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import GameManager from "#test/testUtils/gameManager";
|
||||
import Phaser from "phaser";
|
||||
import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest";
|
||||
@ -26,7 +26,7 @@ describe("Abilities - Competitive", () => {
|
||||
|
||||
game.override
|
||||
.battleStyle("single")
|
||||
.enemySpecies(Species.BEEDRILL)
|
||||
.enemySpecies(SpeciesId.BEEDRILL)
|
||||
.enemyMoveset(MoveId.TICKLE)
|
||||
.startingLevel(1)
|
||||
.moveset([MoveId.SPLASH, MoveId.CLOSE_COMBAT])
|
||||
@ -34,7 +34,7 @@ describe("Abilities - Competitive", () => {
|
||||
});
|
||||
|
||||
it("lower atk and def by 1 via tickle, then increase spatk by 4 via competitive", async () => {
|
||||
await game.classicMode.startBattle([Species.FLYGON]);
|
||||
await game.classicMode.startBattle([SpeciesId.FLYGON]);
|
||||
|
||||
const playerPokemon = game.scene.getPlayerPokemon()!;
|
||||
game.move.select(MoveId.SPLASH);
|
||||
@ -47,7 +47,7 @@ describe("Abilities - Competitive", () => {
|
||||
|
||||
it("lowering your own stats should not trigger competitive", async () => {
|
||||
game.override.enemyMoveset(MoveId.SPLASH);
|
||||
await game.classicMode.startBattle([Species.FLYGON]);
|
||||
await game.classicMode.startBattle([SpeciesId.FLYGON]);
|
||||
|
||||
const playerPokemon = game.scene.getPlayerPokemon()!;
|
||||
game.move.select(MoveId.CLOSE_COMBAT);
|
||||
@ -60,7 +60,7 @@ describe("Abilities - Competitive", () => {
|
||||
|
||||
it("white herb should remove only the negative effects", async () => {
|
||||
game.override.startingHeldItems([{ name: "WHITE_HERB" }]);
|
||||
await game.classicMode.startBattle([Species.FLYGON]);
|
||||
await game.classicMode.startBattle([SpeciesId.FLYGON]);
|
||||
|
||||
const playerPokemon = game.scene.getPlayerPokemon()!;
|
||||
game.move.select(MoveId.SPLASH);
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { MoveId } from "#enums/move-id";
|
||||
import { AbilityId } from "#enums/ability-id";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import { Stat } from "#enums/stat";
|
||||
import GameManager from "#test/testUtils/gameManager";
|
||||
import Phaser from "phaser";
|
||||
@ -24,14 +24,14 @@ describe("Abilities - Contrary", () => {
|
||||
game = new GameManager(phaserGame);
|
||||
game.override
|
||||
.battleStyle("single")
|
||||
.enemySpecies(Species.BULBASAUR)
|
||||
.enemySpecies(SpeciesId.BULBASAUR)
|
||||
.enemyAbility(AbilityId.CONTRARY)
|
||||
.ability(AbilityId.INTIMIDATE)
|
||||
.enemyMoveset(MoveId.SPLASH);
|
||||
});
|
||||
|
||||
it("should invert stat changes when applied", async () => {
|
||||
await game.classicMode.startBattle([Species.SLOWBRO]);
|
||||
await game.classicMode.startBattle([SpeciesId.SLOWBRO]);
|
||||
|
||||
const enemyPokemon = game.scene.getEnemyPokemon()!;
|
||||
|
||||
@ -41,7 +41,7 @@ describe("Abilities - Contrary", () => {
|
||||
describe("With Clear Body", () => {
|
||||
it("should apply positive effects", async () => {
|
||||
game.override.enemyPassiveAbility(AbilityId.CLEAR_BODY).moveset([MoveId.TAIL_WHIP]);
|
||||
await game.classicMode.startBattle([Species.SLOWBRO]);
|
||||
await game.classicMode.startBattle([SpeciesId.SLOWBRO]);
|
||||
|
||||
const enemyPokemon = game.scene.getEnemyPokemon()!;
|
||||
|
||||
@ -55,7 +55,7 @@ describe("Abilities - Contrary", () => {
|
||||
|
||||
it("should block negative effects", async () => {
|
||||
game.override.enemyPassiveAbility(AbilityId.CLEAR_BODY).enemyMoveset(MoveId.HOWL).moveset([MoveId.SPLASH]);
|
||||
await game.classicMode.startBattle([Species.SLOWBRO]);
|
||||
await game.classicMode.startBattle([SpeciesId.SLOWBRO]);
|
||||
|
||||
const enemyPokemon = game.scene.getEnemyPokemon()!;
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { AbilityId } from "#enums/ability-id";
|
||||
import { MoveId } from "#enums/move-id";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import GameManager from "#test/testUtils/gameManager";
|
||||
import Phaser from "phaser";
|
||||
import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest";
|
||||
@ -25,14 +25,14 @@ describe("Abilities - Corrosion", () => {
|
||||
.moveset([MoveId.SPLASH])
|
||||
.battleStyle("single")
|
||||
.disableCrits()
|
||||
.enemySpecies(Species.GRIMER)
|
||||
.enemySpecies(SpeciesId.GRIMER)
|
||||
.enemyAbility(AbilityId.CORROSION)
|
||||
.enemyMoveset(MoveId.TOXIC);
|
||||
});
|
||||
|
||||
it("If a Poison- or Steel-type Pokémon with this Ability poisons a target with Synchronize, Synchronize does not gain the ability to poison Poison- or Steel-type Pokémon.", async () => {
|
||||
game.override.ability(AbilityId.SYNCHRONIZE);
|
||||
await game.classicMode.startBattle([Species.FEEBAS]);
|
||||
await game.classicMode.startBattle([SpeciesId.FEEBAS]);
|
||||
|
||||
const playerPokemon = game.scene.getPlayerPokemon();
|
||||
const enemyPokemon = game.scene.getEnemyPokemon();
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { Stat } from "#enums/stat";
|
||||
import { AbilityId } from "#enums/ability-id";
|
||||
import { MoveId } from "#enums/move-id";
|
||||
import { Species } from "#app/enums/species";
|
||||
import { SpeciesId } from "#app/enums/species";
|
||||
import { CommandPhase } from "#app/phases/command-phase";
|
||||
import { MessagePhase } from "#app/phases/message-phase";
|
||||
import GameManager from "#test/testUtils/gameManager";
|
||||
@ -33,7 +33,7 @@ describe("Abilities - COSTAR", () => {
|
||||
test("ability copies positive stat stages", async () => {
|
||||
game.override.enemyAbility(AbilityId.BALL_FETCH);
|
||||
|
||||
await game.classicMode.startBattle([Species.MAGIKARP, Species.MAGIKARP, Species.FLAMIGO]);
|
||||
await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.MAGIKARP, SpeciesId.FLAMIGO]);
|
||||
|
||||
let [leftPokemon, rightPokemon] = game.scene.getPlayerField();
|
||||
|
||||
@ -58,7 +58,7 @@ describe("Abilities - COSTAR", () => {
|
||||
test("ability copies negative stat stages", async () => {
|
||||
game.override.enemyAbility(AbilityId.INTIMIDATE);
|
||||
|
||||
await game.classicMode.startBattle([Species.MAGIKARP, Species.MAGIKARP, Species.FLAMIGO]);
|
||||
await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.MAGIKARP, SpeciesId.FLAMIGO]);
|
||||
|
||||
let [leftPokemon, rightPokemon] = game.scene.getPlayerField();
|
||||
|
||||
|
@ -5,7 +5,7 @@ import { getPokemonNameWithAffix } from "#app/messages";
|
||||
import { AbilityId } from "#enums/ability-id";
|
||||
import { BerryType } from "#enums/berry-type";
|
||||
import { MoveId } from "#enums/move-id";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import { Stat } from "#enums/stat";
|
||||
import GameManager from "#test/testUtils/gameManager";
|
||||
import i18next from "i18next";
|
||||
@ -34,14 +34,14 @@ describe("Abilities - Cud Chew", () => {
|
||||
.ability(AbilityId.CUD_CHEW)
|
||||
.battleStyle("single")
|
||||
.disableCrits()
|
||||
.enemySpecies(Species.MAGIKARP)
|
||||
.enemySpecies(SpeciesId.MAGIKARP)
|
||||
.enemyAbility(AbilityId.BALL_FETCH)
|
||||
.enemyMoveset(MoveId.SPLASH);
|
||||
});
|
||||
|
||||
describe("tracks berries eaten", () => {
|
||||
it("stores inside summonData at end of turn", async () => {
|
||||
await game.classicMode.startBattle([Species.FARIGIRAF]);
|
||||
await game.classicMode.startBattle([SpeciesId.FARIGIRAF]);
|
||||
|
||||
const farigiraf = game.scene.getPlayerPokemon()!;
|
||||
farigiraf.hp = 1; // needed to allow sitrus procs
|
||||
@ -69,7 +69,7 @@ describe("Abilities - Cud Chew", () => {
|
||||
it("shows ability popup for eating berry, even if berry is useless", async () => {
|
||||
const abDisplaySpy = vi.spyOn(globalScene, "queueAbilityDisplay");
|
||||
game.override.enemyMoveset([MoveId.SPLASH, MoveId.HEAL_PULSE]);
|
||||
await game.classicMode.startBattle([Species.FARIGIRAF]);
|
||||
await game.classicMode.startBattle([SpeciesId.FARIGIRAF]);
|
||||
|
||||
const farigiraf = game.scene.getPlayerPokemon()!;
|
||||
// Dip below half to eat berry
|
||||
@ -118,7 +118,7 @@ describe("Abilities - Cud Chew", () => {
|
||||
{ name: "BERRY", type: BerryType.LIECHI, count: 3 },
|
||||
])
|
||||
.enemyMoveset(MoveId.TEATIME);
|
||||
await game.classicMode.startBattle([Species.FARIGIRAF]);
|
||||
await game.classicMode.startBattle([SpeciesId.FARIGIRAF]);
|
||||
|
||||
const farigiraf = game.scene.getPlayerPokemon()!;
|
||||
farigiraf.hp = 1; // needed to allow berry procs
|
||||
@ -146,7 +146,7 @@ describe("Abilities - Cud Chew", () => {
|
||||
});
|
||||
|
||||
it("should reset both arrays on switch", async () => {
|
||||
await game.classicMode.startBattle([Species.FARIGIRAF, Species.GIRAFARIG]);
|
||||
await game.classicMode.startBattle([SpeciesId.FARIGIRAF, SpeciesId.GIRAFARIG]);
|
||||
|
||||
const farigiraf = game.scene.getPlayerPokemon()!;
|
||||
farigiraf.hp = 1;
|
||||
@ -175,7 +175,7 @@ describe("Abilities - Cud Chew", () => {
|
||||
|
||||
it("clears array if disabled", async () => {
|
||||
game.override.enemyAbility(AbilityId.NEUTRALIZING_GAS);
|
||||
await game.classicMode.startBattle([Species.FARIGIRAF]);
|
||||
await game.classicMode.startBattle([SpeciesId.FARIGIRAF]);
|
||||
|
||||
const farigiraf = game.scene.getPlayerPokemon()!;
|
||||
farigiraf.hp = 1;
|
||||
@ -197,7 +197,7 @@ describe("Abilities - Cud Chew", () => {
|
||||
describe("regurgiates berries", () => {
|
||||
it("re-triggers effects on eater without pushing to array", async () => {
|
||||
const apply = vi.spyOn(RepeatBerryNextTurnAbAttr.prototype, "apply");
|
||||
await game.classicMode.startBattle([Species.FARIGIRAF]);
|
||||
await game.classicMode.startBattle([SpeciesId.FARIGIRAF]);
|
||||
|
||||
const farigiraf = game.scene.getPlayerPokemon()!;
|
||||
farigiraf.hp = 1;
|
||||
@ -223,7 +223,7 @@ describe("Abilities - Cud Chew", () => {
|
||||
|
||||
it("bypasses unnerve", async () => {
|
||||
game.override.enemyAbility(AbilityId.UNNERVE);
|
||||
await game.classicMode.startBattle([Species.FARIGIRAF]);
|
||||
await game.classicMode.startBattle([SpeciesId.FARIGIRAF]);
|
||||
|
||||
const farigiraf = game.scene.getPlayerPokemon()!;
|
||||
farigiraf.hp = 1;
|
||||
@ -241,7 +241,7 @@ describe("Abilities - Cud Chew", () => {
|
||||
|
||||
it("doesn't trigger on non-eating removal", async () => {
|
||||
game.override.enemyMoveset(MoveId.INCINERATE);
|
||||
await game.classicMode.startBattle([Species.FARIGIRAF]);
|
||||
await game.classicMode.startBattle([SpeciesId.FARIGIRAF]);
|
||||
|
||||
const farigiraf = game.scene.getPlayerPokemon()!;
|
||||
farigiraf.hp = farigiraf.getMaxHp() / 4;
|
||||
@ -257,10 +257,10 @@ describe("Abilities - Cud Chew", () => {
|
||||
|
||||
it("works with pluck", async () => {
|
||||
game.override
|
||||
.enemySpecies(Species.BLAZIKEN)
|
||||
.enemySpecies(SpeciesId.BLAZIKEN)
|
||||
.enemyHeldItems([{ name: "BERRY", type: BerryType.PETAYA, count: 1 }])
|
||||
.startingHeldItems([]);
|
||||
await game.classicMode.startBattle([Species.FARIGIRAF]);
|
||||
await game.classicMode.startBattle([SpeciesId.FARIGIRAF]);
|
||||
|
||||
const farigiraf = game.scene.getPlayerPokemon()!;
|
||||
|
||||
@ -276,7 +276,7 @@ describe("Abilities - Cud Chew", () => {
|
||||
|
||||
it("works with Ripen", async () => {
|
||||
game.override.passiveAbility(AbilityId.RIPEN);
|
||||
await game.classicMode.startBattle([Species.FARIGIRAF]);
|
||||
await game.classicMode.startBattle([SpeciesId.FARIGIRAF]);
|
||||
|
||||
const farigiraf = game.scene.getPlayerPokemon()!;
|
||||
farigiraf.hp = 1;
|
||||
@ -292,7 +292,7 @@ describe("Abilities - Cud Chew", () => {
|
||||
|
||||
it("is preserved on reload/wave clear", async () => {
|
||||
game.override.enemyLevel(1);
|
||||
await game.classicMode.startBattle([Species.FARIGIRAF]);
|
||||
await game.classicMode.startBattle([SpeciesId.FARIGIRAF]);
|
||||
|
||||
const farigiraf = game.scene.getPlayerPokemon()!;
|
||||
farigiraf.hp = 1;
|
||||
|
@ -2,7 +2,7 @@ import { BattlerIndex } from "#app/battle";
|
||||
import type { MovePhase } from "#app/phases/move-phase";
|
||||
import { AbilityId } from "#enums/ability-id";
|
||||
import { MoveId } from "#enums/move-id";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import GameManager from "#test/testUtils/gameManager";
|
||||
import Phaser from "phaser";
|
||||
import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest";
|
||||
@ -29,8 +29,8 @@ describe("Abilities - Dancer", () => {
|
||||
// Reference Link: https://bulbapedia.bulbagarden.net/wiki/Dancer_(Ability)
|
||||
|
||||
it("triggers when dance moves are used, doesn't consume extra PP", async () => {
|
||||
game.override.enemyAbility(AbilityId.DANCER).enemySpecies(Species.MAGIKARP).enemyMoveset(MoveId.VICTORY_DANCE);
|
||||
await game.classicMode.startBattle([Species.ORICORIO, Species.FEEBAS]);
|
||||
game.override.enemyAbility(AbilityId.DANCER).enemySpecies(SpeciesId.MAGIKARP).enemyMoveset(MoveId.VICTORY_DANCE);
|
||||
await game.classicMode.startBattle([SpeciesId.ORICORIO, SpeciesId.FEEBAS]);
|
||||
|
||||
const [oricorio, feebas] = game.scene.getPlayerField();
|
||||
game.move.changeMoveset(oricorio, [MoveId.SWORDS_DANCE, MoveId.VICTORY_DANCE, MoveId.SPLASH]);
|
||||
@ -68,9 +68,9 @@ describe("Abilities - Dancer", () => {
|
||||
game.override
|
||||
.moveset([MoveId.FIERY_DANCE, MoveId.REVELATION_DANCE])
|
||||
.enemyMoveset([MoveId.INSTRUCT, MoveId.MIRROR_MOVE, MoveId.SPLASH])
|
||||
.enemySpecies(Species.SHUCKLE)
|
||||
.enemySpecies(SpeciesId.SHUCKLE)
|
||||
.enemyLevel(10);
|
||||
await game.classicMode.startBattle([Species.ORICORIO, Species.FEEBAS]);
|
||||
await game.classicMode.startBattle([SpeciesId.ORICORIO, SpeciesId.FEEBAS]);
|
||||
|
||||
const [oricorio] = game.scene.getPlayerField();
|
||||
const [, shuckle2] = game.scene.getEnemyField();
|
||||
|
@ -2,7 +2,7 @@ import { Stat } from "#enums/stat";
|
||||
import { TurnInitPhase } from "#app/phases/turn-init-phase";
|
||||
import { AbilityId } from "#enums/ability-id";
|
||||
import { MoveId } from "#enums/move-id";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import GameManager from "#test/testUtils/gameManager";
|
||||
import Phaser from "phaser";
|
||||
import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest";
|
||||
@ -26,7 +26,7 @@ describe("Abilities - Defiant", () => {
|
||||
|
||||
game.override
|
||||
.battleStyle("single")
|
||||
.enemySpecies(Species.BEEDRILL)
|
||||
.enemySpecies(SpeciesId.BEEDRILL)
|
||||
.enemyMoveset(MoveId.TICKLE)
|
||||
.startingLevel(1)
|
||||
.moveset([MoveId.SPLASH, MoveId.CLOSE_COMBAT])
|
||||
@ -34,7 +34,7 @@ describe("Abilities - Defiant", () => {
|
||||
});
|
||||
|
||||
it("lower atk and def by 1 via tickle, then increase atk by 4 via defiant", async () => {
|
||||
await game.classicMode.startBattle([Species.FLYGON]);
|
||||
await game.classicMode.startBattle([SpeciesId.FLYGON]);
|
||||
|
||||
const playerPokemon = game.scene.getPlayerPokemon()!;
|
||||
game.move.select(MoveId.SPLASH);
|
||||
@ -46,7 +46,7 @@ describe("Abilities - Defiant", () => {
|
||||
|
||||
it("lowering your own stats should not trigger defiant", async () => {
|
||||
game.override.enemyMoveset(MoveId.SPLASH);
|
||||
await game.classicMode.startBattle([Species.FLYGON]);
|
||||
await game.classicMode.startBattle([SpeciesId.FLYGON]);
|
||||
|
||||
const playerPokemon = game.scene.getPlayerPokemon()!;
|
||||
game.move.select(MoveId.CLOSE_COMBAT);
|
||||
@ -59,7 +59,7 @@ describe("Abilities - Defiant", () => {
|
||||
|
||||
it("white herb should remove only the negative effects", async () => {
|
||||
game.override.startingHeldItems([{ name: "WHITE_HERB" }]);
|
||||
await game.classicMode.startBattle([Species.FLYGON]);
|
||||
await game.classicMode.startBattle([SpeciesId.FLYGON]);
|
||||
|
||||
const playerPokemon = game.scene.getPlayerPokemon()!;
|
||||
game.move.select(MoveId.SPLASH);
|
||||
|
@ -4,7 +4,7 @@ import type { CommandPhase } from "#app/phases/command-phase";
|
||||
import { Command } from "#app/ui/command-ui-handler";
|
||||
import { AbilityId } from "#enums/ability-id";
|
||||
import { MoveId } from "#enums/move-id";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import GameManager from "#test/testUtils/gameManager";
|
||||
import Phaser from "phaser";
|
||||
import { afterEach, beforeAll, beforeEach, describe, it, expect, vi } from "vitest";
|
||||
@ -28,7 +28,7 @@ describe("Abilities - Desolate Land", () => {
|
||||
game.override
|
||||
.moveset(MoveId.SPLASH)
|
||||
.hasPassiveAbility(true)
|
||||
.enemySpecies(Species.RALTS)
|
||||
.enemySpecies(SpeciesId.RALTS)
|
||||
.enemyAbility(AbilityId.BALL_FETCH)
|
||||
.enemyMoveset(MoveId.SPLASH);
|
||||
});
|
||||
@ -39,7 +39,12 @@ describe("Abilities - Desolate Land", () => {
|
||||
*/
|
||||
it("should lift only when all pokemon with this ability leave the field", async () => {
|
||||
game.override.battleStyle("double").enemyMoveset([MoveId.SPLASH, MoveId.ROAR]);
|
||||
await game.classicMode.startBattle([Species.MAGCARGO, Species.MAGCARGO, Species.MAGIKARP, Species.MAGIKARP]);
|
||||
await game.classicMode.startBattle([
|
||||
SpeciesId.MAGCARGO,
|
||||
SpeciesId.MAGCARGO,
|
||||
SpeciesId.MAGIKARP,
|
||||
SpeciesId.MAGIKARP,
|
||||
]);
|
||||
|
||||
expect(game.scene.arena.weather?.weatherType).toBe(WeatherType.HARSH_SUN);
|
||||
|
||||
@ -82,9 +87,9 @@ describe("Abilities - Desolate Land", () => {
|
||||
.startingLevel(100)
|
||||
.enemyLevel(1)
|
||||
.enemyMoveset([MoveId.SPLASH])
|
||||
.enemySpecies(Species.MAGCARGO)
|
||||
.enemySpecies(SpeciesId.MAGCARGO)
|
||||
.enemyHasPassiveAbility(true);
|
||||
await game.classicMode.startBattle([Species.MAGIKARP]);
|
||||
await game.classicMode.startBattle([SpeciesId.MAGIKARP]);
|
||||
|
||||
expect(game.scene.arena.weather?.weatherType).toBe(WeatherType.HARSH_SUN);
|
||||
|
||||
@ -97,7 +102,7 @@ describe("Abilities - Desolate Land", () => {
|
||||
|
||||
it("should lift when pokemon returns upon switching from double to single battle", async () => {
|
||||
game.override.battleStyle("even-doubles").enemyMoveset([MoveId.SPLASH, MoveId.MEMENTO]).startingWave(12);
|
||||
await game.classicMode.startBattle([Species.MAGIKARP, Species.MAGCARGO]);
|
||||
await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.MAGCARGO]);
|
||||
|
||||
expect(game.scene.arena.weather?.weatherType).toBe(WeatherType.HARSH_SUN);
|
||||
|
||||
@ -119,9 +124,9 @@ describe("Abilities - Desolate Land", () => {
|
||||
game.override
|
||||
.battleStyle("single")
|
||||
.enemyMoveset([MoveId.SPLASH])
|
||||
.enemySpecies(Species.MAGCARGO)
|
||||
.enemySpecies(SpeciesId.MAGCARGO)
|
||||
.enemyHasPassiveAbility(true);
|
||||
await game.classicMode.startBattle([Species.MAGIKARP]);
|
||||
await game.classicMode.startBattle([SpeciesId.MAGIKARP]);
|
||||
|
||||
expect(game.scene.arena.weather?.weatherType).toBe(WeatherType.HARSH_SUN);
|
||||
|
||||
@ -136,7 +141,7 @@ describe("Abilities - Desolate Land", () => {
|
||||
|
||||
it("should lift after fleeing from a wild pokemon", async () => {
|
||||
game.override.enemyAbility(AbilityId.DESOLATE_LAND).ability(AbilityId.BALL_FETCH);
|
||||
await game.classicMode.startBattle([Species.MAGIKARP]);
|
||||
await game.classicMode.startBattle([SpeciesId.MAGIKARP]);
|
||||
expect(game.scene.arena.weather?.weatherType).toBe(WeatherType.HARSH_SUN);
|
||||
|
||||
vi.spyOn(game.scene.getPlayerPokemon()!, "randBattleSeedInt").mockReturnValue(0);
|
||||
|
@ -2,7 +2,7 @@ import { BattlerIndex } from "#app/battle";
|
||||
import { toDmgValue } from "#app/utils/common";
|
||||
import { AbilityId } from "#enums/ability-id";
|
||||
import { MoveId } from "#enums/move-id";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import { Stat } from "#enums/stat";
|
||||
import { StatusEffect } from "#enums/status-effect";
|
||||
import GameManager from "#test/testUtils/gameManager";
|
||||
@ -28,9 +28,9 @@ describe("Abilities - Disguise", () => {
|
||||
game = new GameManager(phaserGame);
|
||||
game.override
|
||||
.battleStyle("single")
|
||||
.enemySpecies(Species.MIMIKYU)
|
||||
.enemySpecies(SpeciesId.MIMIKYU)
|
||||
.enemyMoveset(MoveId.SPLASH)
|
||||
.starterSpecies(Species.REGIELEKI)
|
||||
.starterSpecies(SpeciesId.REGIELEKI)
|
||||
.moveset([MoveId.SHADOW_SNEAK, MoveId.VACUUM_WAVE, MoveId.TOXIC_THREAD, MoveId.SPLASH]);
|
||||
});
|
||||
|
||||
@ -109,7 +109,7 @@ describe("Abilities - Disguise", () => {
|
||||
game.override.enemyMoveset([MoveId.SHADOW_SNEAK]);
|
||||
game.override.starterSpecies(0);
|
||||
|
||||
await game.classicMode.startBattle([Species.MIMIKYU, Species.FURRET]);
|
||||
await game.classicMode.startBattle([SpeciesId.MIMIKYU, SpeciesId.FURRET]);
|
||||
|
||||
const mimikyu = game.scene.getPlayerPokemon()!;
|
||||
const maxHp = mimikyu.getMaxHp();
|
||||
@ -133,9 +133,9 @@ describe("Abilities - Disguise", () => {
|
||||
it("persists form change when wave changes with no arena reset", async () => {
|
||||
game.override.starterSpecies(0);
|
||||
game.override.starterForms({
|
||||
[Species.MIMIKYU]: bustedForm,
|
||||
[SpeciesId.MIMIKYU]: bustedForm,
|
||||
});
|
||||
await game.classicMode.startBattle([Species.FURRET, Species.MIMIKYU]);
|
||||
await game.classicMode.startBattle([SpeciesId.FURRET, SpeciesId.MIMIKYU]);
|
||||
|
||||
const mimikyu = game.scene.getPlayerParty()[1]!;
|
||||
expect(mimikyu.formIndex).toBe(bustedForm);
|
||||
@ -149,9 +149,9 @@ describe("Abilities - Disguise", () => {
|
||||
|
||||
it("reverts to Disguised form on arena reset", async () => {
|
||||
game.override.startingWave(4);
|
||||
game.override.starterSpecies(Species.MIMIKYU);
|
||||
game.override.starterSpecies(SpeciesId.MIMIKYU);
|
||||
game.override.starterForms({
|
||||
[Species.MIMIKYU]: bustedForm,
|
||||
[SpeciesId.MIMIKYU]: bustedForm,
|
||||
});
|
||||
|
||||
await game.classicMode.startBattle();
|
||||
@ -171,10 +171,10 @@ describe("Abilities - Disguise", () => {
|
||||
game.override.startingWave(10);
|
||||
game.override.starterSpecies(0);
|
||||
game.override.starterForms({
|
||||
[Species.MIMIKYU]: bustedForm,
|
||||
[SpeciesId.MIMIKYU]: bustedForm,
|
||||
});
|
||||
|
||||
await game.classicMode.startBattle([Species.MIMIKYU, Species.FURRET]);
|
||||
await game.classicMode.startBattle([SpeciesId.MIMIKYU, SpeciesId.FURRET]);
|
||||
|
||||
const mimikyu1 = game.scene.getPlayerPokemon()!;
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { Species } from "#app/enums/species";
|
||||
import { SpeciesId } from "#app/enums/species";
|
||||
import { AbilityId } from "#enums/ability-id";
|
||||
import { MoveId } from "#enums/move-id";
|
||||
import GameManager from "#test/testUtils/gameManager";
|
||||
@ -26,10 +26,10 @@ describe("Abilities - Dry Skin", () => {
|
||||
.disableCrits()
|
||||
.enemyAbility(AbilityId.DRY_SKIN)
|
||||
.enemyMoveset(MoveId.SPLASH)
|
||||
.enemySpecies(Species.CHARMANDER)
|
||||
.enemySpecies(SpeciesId.CHARMANDER)
|
||||
.ability(AbilityId.BALL_FETCH)
|
||||
.moveset([MoveId.SUNNY_DAY, MoveId.RAIN_DANCE, MoveId.SPLASH, MoveId.WATER_GUN])
|
||||
.starterSpecies(Species.CHANDELURE);
|
||||
.starterSpecies(SpeciesId.CHANDELURE);
|
||||
});
|
||||
|
||||
it("during sunlight, lose 1/8 of maximum health at the end of each turn", async () => {
|
||||
|
@ -2,7 +2,7 @@ import { Status } from "#app/data/status-effect";
|
||||
import { MoveResult } from "#app/field/pokemon";
|
||||
import { AbilityId } from "#enums/ability-id";
|
||||
import { MoveId } from "#enums/move-id";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import { StatusEffect } from "#enums/status-effect";
|
||||
import GameManager from "#test/testUtils/gameManager";
|
||||
import Phaser from "phaser";
|
||||
@ -29,13 +29,13 @@ describe("Abilities - Early Bird", () => {
|
||||
.ability(AbilityId.EARLY_BIRD)
|
||||
.battleStyle("single")
|
||||
.disableCrits()
|
||||
.enemySpecies(Species.MAGIKARP)
|
||||
.enemySpecies(SpeciesId.MAGIKARP)
|
||||
.enemyAbility(AbilityId.BALL_FETCH)
|
||||
.enemyMoveset(MoveId.SPLASH);
|
||||
});
|
||||
|
||||
it("reduces Rest's sleep time to 1 turn", async () => {
|
||||
await game.classicMode.startBattle([Species.FEEBAS]);
|
||||
await game.classicMode.startBattle([SpeciesId.FEEBAS]);
|
||||
|
||||
const player = game.scene.getPlayerPokemon()!;
|
||||
|
||||
@ -60,7 +60,7 @@ describe("Abilities - Early Bird", () => {
|
||||
});
|
||||
|
||||
it("reduces 3-turn sleep to 1 turn", async () => {
|
||||
await game.classicMode.startBattle([Species.FEEBAS]);
|
||||
await game.classicMode.startBattle([SpeciesId.FEEBAS]);
|
||||
|
||||
const player = game.scene.getPlayerPokemon()!;
|
||||
player.status = new Status(StatusEffect.SLEEP, 0, 4);
|
||||
@ -79,7 +79,7 @@ describe("Abilities - Early Bird", () => {
|
||||
});
|
||||
|
||||
it("reduces 1-turn sleep to 0 turns", async () => {
|
||||
await game.classicMode.startBattle([Species.FEEBAS]);
|
||||
await game.classicMode.startBattle([SpeciesId.FEEBAS]);
|
||||
|
||||
const player = game.scene.getPlayerPokemon()!;
|
||||
player.status = new Status(StatusEffect.SLEEP, 0, 2);
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { BattlerIndex } from "#app/battle";
|
||||
import { BattlerTagType } from "#app/enums/battler-tag-type";
|
||||
import { Species } from "#app/enums/species";
|
||||
import { SpeciesId } from "#app/enums/species";
|
||||
import { MovePhase } from "#app/phases/move-phase";
|
||||
import { TurnEndPhase } from "#app/phases/turn-end-phase";
|
||||
import { AbilityId } from "#enums/ability-id";
|
||||
@ -37,7 +37,7 @@ describe("Abilities - Flash Fire", () => {
|
||||
|
||||
it("immune to Fire-type moves", async () => {
|
||||
game.override.enemyMoveset([MoveId.EMBER]).moveset(MoveId.SPLASH);
|
||||
await game.classicMode.startBattle([Species.BLISSEY]);
|
||||
await game.classicMode.startBattle([SpeciesId.BLISSEY]);
|
||||
|
||||
const blissey = game.scene.getPlayerPokemon()!;
|
||||
|
||||
@ -48,7 +48,7 @@ describe("Abilities - Flash Fire", () => {
|
||||
|
||||
it("not activate if the Pokémon is protected from the Fire-type move", async () => {
|
||||
game.override.enemyMoveset([MoveId.EMBER]).moveset([MoveId.PROTECT]);
|
||||
await game.classicMode.startBattle([Species.BLISSEY]);
|
||||
await game.classicMode.startBattle([SpeciesId.BLISSEY]);
|
||||
|
||||
const blissey = game.scene.getPlayerPokemon()!;
|
||||
|
||||
@ -59,7 +59,7 @@ describe("Abilities - Flash Fire", () => {
|
||||
|
||||
it("activated by Will-O-Wisp", async () => {
|
||||
game.override.enemyMoveset([MoveId.WILL_O_WISP]).moveset(MoveId.SPLASH);
|
||||
await game.classicMode.startBattle([Species.BLISSEY]);
|
||||
await game.classicMode.startBattle([SpeciesId.BLISSEY]);
|
||||
|
||||
const blissey = game.scene.getPlayerPokemon()!;
|
||||
|
||||
@ -75,7 +75,7 @@ describe("Abilities - Flash Fire", () => {
|
||||
it("activated after being frozen", async () => {
|
||||
game.override.enemyMoveset([MoveId.EMBER]).moveset(MoveId.SPLASH);
|
||||
game.override.statusEffect(StatusEffect.FREEZE);
|
||||
await game.classicMode.startBattle([Species.BLISSEY]);
|
||||
await game.classicMode.startBattle([SpeciesId.BLISSEY]);
|
||||
|
||||
const blissey = game.scene.getPlayerPokemon()!;
|
||||
|
||||
@ -87,7 +87,7 @@ describe("Abilities - Flash Fire", () => {
|
||||
|
||||
it("not passing with baton pass", async () => {
|
||||
game.override.enemyMoveset([MoveId.EMBER]).moveset([MoveId.BATON_PASS]);
|
||||
await game.classicMode.startBattle([Species.BLISSEY, Species.CHANSEY]);
|
||||
await game.classicMode.startBattle([SpeciesId.BLISSEY, SpeciesId.CHANSEY]);
|
||||
|
||||
// ensure use baton pass after enemy moved
|
||||
game.move.select(MoveId.BATON_PASS);
|
||||
@ -97,14 +97,14 @@ describe("Abilities - Flash Fire", () => {
|
||||
|
||||
await game.phaseInterceptor.to(TurnEndPhase);
|
||||
const chansey = game.scene.getPlayerPokemon()!;
|
||||
expect(game.scene.getPlayerPokemon()!.species.speciesId).toBe(Species.CHANSEY);
|
||||
expect(game.scene.getPlayerPokemon()!.species.speciesId).toBe(SpeciesId.CHANSEY);
|
||||
expect(chansey!.getTag(BattlerTagType.FIRE_BOOST)).toBeUndefined();
|
||||
}, 20000);
|
||||
|
||||
it("boosts Fire-type move when the ability is activated", async () => {
|
||||
game.override.enemyMoveset([MoveId.FIRE_PLEDGE]).moveset([MoveId.EMBER, MoveId.SPLASH]);
|
||||
game.override.enemyAbility(AbilityId.FLASH_FIRE).ability(AbilityId.NONE);
|
||||
await game.classicMode.startBattle([Species.BLISSEY]);
|
||||
await game.classicMode.startBattle([SpeciesId.BLISSEY]);
|
||||
const blissey = game.scene.getPlayerPokemon()!;
|
||||
const initialHP = 1000;
|
||||
blissey.hp = initialHP;
|
||||
@ -129,8 +129,8 @@ describe("Abilities - Flash Fire", () => {
|
||||
it("still activates regardless of accuracy check", async () => {
|
||||
game.override.moveset(MoveId.FIRE_PLEDGE).enemyMoveset(MoveId.EMBER);
|
||||
game.override.enemyAbility(AbilityId.NONE).ability(AbilityId.FLASH_FIRE);
|
||||
game.override.enemySpecies(Species.BLISSEY);
|
||||
await game.classicMode.startBattle([Species.RATTATA]);
|
||||
game.override.enemySpecies(SpeciesId.BLISSEY);
|
||||
await game.classicMode.startBattle([SpeciesId.RATTATA]);
|
||||
|
||||
const blissey = game.scene.getEnemyPokemon()!;
|
||||
const initialHP = 1000;
|
||||
|
@ -5,7 +5,7 @@ import { Stat } from "#app/enums/stat";
|
||||
import { WeatherType } from "#app/enums/weather-type";
|
||||
import { TurnEndPhase } from "#app/phases/turn-end-phase";
|
||||
import { MoveId } from "#enums/move-id";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import GameManager from "#test/testUtils/gameManager";
|
||||
import Phaser from "phaser";
|
||||
import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
|
||||
@ -22,8 +22,8 @@ describe("Abilities - Flower Gift", () => {
|
||||
* @param {AbilityId} ability The ability that is active on the field
|
||||
*/
|
||||
const testRevertFormAgainstAbility = async (game: GameManager, ability: AbilityId) => {
|
||||
game.override.starterForms({ [Species.CASTFORM]: SUNSHINE_FORM }).enemyAbility(ability);
|
||||
await game.classicMode.startBattle([Species.CASTFORM]);
|
||||
game.override.starterForms({ [SpeciesId.CASTFORM]: SUNSHINE_FORM }).enemyAbility(ability);
|
||||
await game.classicMode.startBattle([SpeciesId.CASTFORM]);
|
||||
|
||||
game.move.select(MoveId.SPLASH);
|
||||
|
||||
@ -56,7 +56,7 @@ describe("Abilities - Flower Gift", () => {
|
||||
const enemy_move = allyAttacker ? MoveId.SPLASH : move;
|
||||
const ally_target = allyAttacker ? BattlerIndex.ENEMY : null;
|
||||
|
||||
await game.classicMode.startBattle([Species.CHERRIM, Species.MAGIKARP]);
|
||||
await game.classicMode.startBattle([SpeciesId.CHERRIM, SpeciesId.MAGIKARP]);
|
||||
const target = allyAttacker ? game.scene.getEnemyField()[0] : game.scene.getPlayerField()[1];
|
||||
const initialHp = target.getMaxHp();
|
||||
|
||||
@ -102,7 +102,7 @@ describe("Abilities - Flower Gift", () => {
|
||||
game = new GameManager(phaserGame);
|
||||
game.override
|
||||
.moveset([MoveId.SPLASH, MoveId.SUNSTEEL_STRIKE, MoveId.SUNNY_DAY, MoveId.MUD_SLAP])
|
||||
.enemySpecies(Species.MAGIKARP)
|
||||
.enemySpecies(SpeciesId.MAGIKARP)
|
||||
.enemyMoveset(MoveId.SPLASH)
|
||||
.enemyAbility(AbilityId.BALL_FETCH)
|
||||
.enemyLevel(100)
|
||||
@ -111,7 +111,7 @@ describe("Abilities - Flower Gift", () => {
|
||||
|
||||
it("increases the ATK and SPDEF stat stages of the Pokémon with this Ability and its allies by 1.5× during Harsh Sunlight", async () => {
|
||||
game.override.battleStyle("double");
|
||||
await game.classicMode.startBattle([Species.CHERRIM, Species.MAGIKARP]);
|
||||
await game.classicMode.startBattle([SpeciesId.CHERRIM, SpeciesId.MAGIKARP]);
|
||||
|
||||
const [cherrim, magikarp] = game.scene.getPlayerField();
|
||||
const cherrimAtkStat = cherrim.getEffectiveStat(Stat.ATK);
|
||||
@ -166,7 +166,7 @@ describe("Abilities - Flower Gift", () => {
|
||||
|
||||
it("changes the Pokemon's form during Harsh Sunlight", async () => {
|
||||
game.override.weather(WeatherType.HARSH_SUN);
|
||||
await game.classicMode.startBattle([Species.CHERRIM]);
|
||||
await game.classicMode.startBattle([SpeciesId.CHERRIM]);
|
||||
|
||||
const cherrim = game.scene.getPlayerPokemon()!;
|
||||
expect(cherrim.formIndex).toBe(SUNSHINE_FORM);
|
||||
@ -185,7 +185,7 @@ describe("Abilities - Flower Gift", () => {
|
||||
it("reverts to Overcast Form when the Flower Gift is suppressed, changes form under Harsh Sunlight/Sunny when it regains it", async () => {
|
||||
game.override.enemyMoveset([MoveId.GASTRO_ACID]).weather(WeatherType.HARSH_SUN);
|
||||
|
||||
await game.classicMode.startBattle([Species.CHERRIM, Species.MAGIKARP]);
|
||||
await game.classicMode.startBattle([SpeciesId.CHERRIM, SpeciesId.MAGIKARP]);
|
||||
|
||||
const cherrim = game.scene.getPlayerPokemon()!;
|
||||
|
||||
@ -213,7 +213,7 @@ describe("Abilities - Flower Gift", () => {
|
||||
it("should be in Overcast Form after the user is switched out", async () => {
|
||||
game.override.weather(WeatherType.SUNNY);
|
||||
|
||||
await game.classicMode.startBattle([Species.CASTFORM, Species.MAGIKARP]);
|
||||
await game.classicMode.startBattle([SpeciesId.CASTFORM, SpeciesId.MAGIKARP]);
|
||||
const cherrim = game.scene.getPlayerPokemon()!;
|
||||
|
||||
expect(cherrim.formIndex).toBe(SUNSHINE_FORM);
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { BattlerIndex } from "#app/battle";
|
||||
import { AbilityId } from "#enums/ability-id";
|
||||
import { MoveId } from "#enums/move-id";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import { Stat } from "#enums/stat";
|
||||
import { StatusEffect } from "#enums/status-effect";
|
||||
import GameManager from "#test/testUtils/gameManager";
|
||||
@ -29,11 +29,11 @@ describe("Abilities - Flower Veil", () => {
|
||||
game = new GameManager(phaserGame);
|
||||
game.override
|
||||
.moveset([MoveId.SPLASH])
|
||||
.enemySpecies(Species.BULBASAUR)
|
||||
.enemySpecies(SpeciesId.BULBASAUR)
|
||||
.ability(AbilityId.FLOWER_VEIL)
|
||||
.battleStyle("single")
|
||||
.disableCrits()
|
||||
.enemySpecies(Species.MAGIKARP)
|
||||
.enemySpecies(SpeciesId.MAGIKARP)
|
||||
.enemyAbility(AbilityId.BALL_FETCH)
|
||||
.enemyMoveset(MoveId.SPLASH);
|
||||
});
|
||||
@ -46,7 +46,7 @@ describe("Abilities - Flower Veil", () => {
|
||||
.enemyMoveset([MoveId.TACKLE, MoveId.SPLASH])
|
||||
.moveset([MoveId.REST, MoveId.SPLASH])
|
||||
.startingHeldItems([{ name: "FLAME_ORB" }]);
|
||||
await game.classicMode.startBattle([Species.BULBASAUR]);
|
||||
await game.classicMode.startBattle([SpeciesId.BULBASAUR]);
|
||||
const user = game.scene.getPlayerPokemon()!;
|
||||
game.move.select(MoveId.REST);
|
||||
await game.move.selectEnemyMove(MoveId.TACKLE);
|
||||
@ -64,7 +64,7 @@ describe("Abilities - Flower Veil", () => {
|
||||
|
||||
it("should prevent drowsiness from yawn for a grass user and its grass allies", async () => {
|
||||
game.override.enemyMoveset([MoveId.YAWN]).moveset([MoveId.SPLASH]).battleStyle("double");
|
||||
await game.classicMode.startBattle([Species.BULBASAUR, Species.BULBASAUR]);
|
||||
await game.classicMode.startBattle([SpeciesId.BULBASAUR, SpeciesId.BULBASAUR]);
|
||||
|
||||
// Clear the ability of the ally to isolate the test
|
||||
const ally = game.scene.getPlayerField()[1]!;
|
||||
@ -83,7 +83,7 @@ describe("Abilities - Flower Veil", () => {
|
||||
it("should prevent status conditions from moves like Thunder Wave for a grass user and its grass allies", async () => {
|
||||
game.override.enemyMoveset([MoveId.THUNDER_WAVE]).moveset([MoveId.SPLASH]).battleStyle("double");
|
||||
vi.spyOn(allMoves[MoveId.THUNDER_WAVE], "accuracy", "get").mockReturnValue(100);
|
||||
await game.classicMode.startBattle([Species.BULBASAUR]);
|
||||
await game.classicMode.startBattle([SpeciesId.BULBASAUR]);
|
||||
|
||||
game.move.select(MoveId.SPLASH);
|
||||
await game.move.selectEnemyMove(MoveId.THUNDER_WAVE);
|
||||
@ -94,7 +94,7 @@ describe("Abilities - Flower Veil", () => {
|
||||
|
||||
it("should not prevent status conditions for a non-grass user and its non-grass allies", async () => {
|
||||
game.override.enemyMoveset([MoveId.THUNDER_WAVE]).moveset([MoveId.SPLASH]).battleStyle("double");
|
||||
await game.classicMode.startBattle([Species.MAGIKARP, Species.MAGIKARP]);
|
||||
await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.MAGIKARP]);
|
||||
const [user, ally] = game.scene.getPlayerField();
|
||||
vi.spyOn(allMoves[MoveId.THUNDER_WAVE], "accuracy", "get").mockReturnValue(100);
|
||||
// Clear the ally ability to isolate the test
|
||||
@ -114,7 +114,7 @@ describe("Abilities - Flower Veil", () => {
|
||||
|
||||
it("should prevent the status drops from enemies for the a grass user and its grass allies", async () => {
|
||||
game.override.enemyMoveset([MoveId.GROWL]).moveset([MoveId.SPLASH]).battleStyle("double");
|
||||
await game.classicMode.startBattle([Species.BULBASAUR, Species.BULBASAUR]);
|
||||
await game.classicMode.startBattle([SpeciesId.BULBASAUR, SpeciesId.BULBASAUR]);
|
||||
const [user, ally] = game.scene.getPlayerField();
|
||||
// Clear the ally ability to isolate the test
|
||||
vi.spyOn(ally, "getAbility").mockReturnValue(allAbilities[AbilityId.BALL_FETCH]);
|
||||
@ -127,7 +127,7 @@ describe("Abilities - Flower Veil", () => {
|
||||
|
||||
it("should not prevent status drops for a non-grass user and its non-grass allies", async () => {
|
||||
game.override.enemyMoveset([MoveId.GROWL]).moveset([MoveId.SPLASH]).battleStyle("double");
|
||||
await game.classicMode.startBattle([Species.MAGIKARP, Species.MAGIKARP]);
|
||||
await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.MAGIKARP]);
|
||||
const [user, ally] = game.scene.getPlayerField();
|
||||
// Clear the ally ability to isolate the test
|
||||
vi.spyOn(ally, "getAbility").mockReturnValue(allAbilities[AbilityId.BALL_FETCH]);
|
||||
@ -140,7 +140,7 @@ describe("Abilities - Flower Veil", () => {
|
||||
|
||||
it("should not prevent self-inflicted stat drops from moves like Close Combat for a user or its allies", async () => {
|
||||
game.override.moveset([MoveId.CLOSE_COMBAT]).battleStyle("double");
|
||||
await game.classicMode.startBattle([Species.BULBASAUR, Species.BULBASAUR]);
|
||||
await game.classicMode.startBattle([SpeciesId.BULBASAUR, SpeciesId.BULBASAUR]);
|
||||
const [user, ally] = game.scene.getPlayerField();
|
||||
// Clear the ally ability to isolate the test
|
||||
vi.spyOn(ally, "getAbility").mockReturnValue(allAbilities[AbilityId.BALL_FETCH]);
|
||||
@ -156,7 +156,7 @@ describe("Abilities - Flower Veil", () => {
|
||||
|
||||
it("should prevent the drops while retaining the boosts from spicy extract", async () => {
|
||||
game.override.enemyMoveset([MoveId.SPICY_EXTRACT]).moveset([MoveId.SPLASH]);
|
||||
await game.classicMode.startBattle([Species.BULBASAUR]);
|
||||
await game.classicMode.startBattle([SpeciesId.BULBASAUR]);
|
||||
const user = game.scene.getPlayerPokemon()!;
|
||||
game.move.select(MoveId.SPLASH);
|
||||
await game.phaseInterceptor.to("BerryPhase");
|
||||
|
@ -8,7 +8,7 @@ import { PostSummonPhase } from "#app/phases/post-summon-phase";
|
||||
import { QuietFormChangePhase } from "#app/phases/quiet-form-change-phase";
|
||||
import { TurnEndPhase } from "#app/phases/turn-end-phase";
|
||||
import { MoveId } from "#enums/move-id";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import GameManager from "#test/testUtils/gameManager";
|
||||
import Phaser from "phaser";
|
||||
import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
|
||||
@ -29,8 +29,8 @@ describe("Abilities - Forecast", () => {
|
||||
* @param initialForm The initial form pre form change
|
||||
*/
|
||||
const testWeatherFormChange = async (game: GameManager, weather: WeatherType, form: number, initialForm?: number) => {
|
||||
game.override.weather(weather).starterForms({ [Species.CASTFORM]: initialForm });
|
||||
await game.classicMode.startBattle([Species.CASTFORM]);
|
||||
game.override.weather(weather).starterForms({ [SpeciesId.CASTFORM]: initialForm });
|
||||
await game.classicMode.startBattle([SpeciesId.CASTFORM]);
|
||||
|
||||
game.move.select(MoveId.SPLASH);
|
||||
|
||||
@ -43,8 +43,8 @@ describe("Abilities - Forecast", () => {
|
||||
* @param {AbilityId} ability The ability that is active on the field
|
||||
*/
|
||||
const testRevertFormAgainstAbility = async (game: GameManager, ability: AbilityId) => {
|
||||
game.override.starterForms({ [Species.CASTFORM]: SUNNY_FORM }).enemyAbility(ability);
|
||||
await game.classicMode.startBattle([Species.CASTFORM]);
|
||||
game.override.starterForms({ [SpeciesId.CASTFORM]: SUNNY_FORM }).enemyAbility(ability);
|
||||
await game.classicMode.startBattle([SpeciesId.CASTFORM]);
|
||||
|
||||
game.move.select(MoveId.SPLASH);
|
||||
|
||||
@ -65,7 +65,7 @@ describe("Abilities - Forecast", () => {
|
||||
game = new GameManager(phaserGame);
|
||||
game.override
|
||||
.moveset([MoveId.SPLASH, MoveId.RAIN_DANCE, MoveId.SUNNY_DAY, MoveId.TACKLE])
|
||||
.enemySpecies(Species.MAGIKARP)
|
||||
.enemySpecies(SpeciesId.MAGIKARP)
|
||||
.enemyMoveset(MoveId.SPLASH)
|
||||
.enemyAbility(AbilityId.BALL_FETCH);
|
||||
});
|
||||
@ -77,17 +77,17 @@ describe("Abilities - Forecast", () => {
|
||||
.moveset([MoveId.RAIN_DANCE, MoveId.SUNNY_DAY, MoveId.SNOWSCAPE, MoveId.SPLASH])
|
||||
.battleStyle("double")
|
||||
.starterForms({
|
||||
[Species.KYOGRE]: 1,
|
||||
[Species.GROUDON]: 1,
|
||||
[Species.RAYQUAZA]: 1,
|
||||
[SpeciesId.KYOGRE]: 1,
|
||||
[SpeciesId.GROUDON]: 1,
|
||||
[SpeciesId.RAYQUAZA]: 1,
|
||||
});
|
||||
await game.classicMode.startBattle([
|
||||
Species.CASTFORM,
|
||||
Species.FEEBAS,
|
||||
Species.KYOGRE,
|
||||
Species.GROUDON,
|
||||
Species.RAYQUAZA,
|
||||
Species.ALTARIA,
|
||||
SpeciesId.CASTFORM,
|
||||
SpeciesId.FEEBAS,
|
||||
SpeciesId.KYOGRE,
|
||||
SpeciesId.GROUDON,
|
||||
SpeciesId.RAYQUAZA,
|
||||
SpeciesId.ALTARIA,
|
||||
]);
|
||||
|
||||
vi.spyOn(game.scene.getPlayerParty()[5], "getAbility").mockReturnValue(allAbilities[AbilityId.CLOUD_NINE]);
|
||||
@ -200,8 +200,8 @@ describe("Abilities - Forecast", () => {
|
||||
});
|
||||
|
||||
it("has no effect on Pokémon other than Castform", async () => {
|
||||
game.override.enemyAbility(AbilityId.FORECAST).enemySpecies(Species.SHUCKLE);
|
||||
await game.classicMode.startBattle([Species.CASTFORM]);
|
||||
game.override.enemyAbility(AbilityId.FORECAST).enemySpecies(SpeciesId.SHUCKLE);
|
||||
await game.classicMode.startBattle([SpeciesId.CASTFORM]);
|
||||
|
||||
game.move.select(MoveId.RAIN_DANCE);
|
||||
await game.phaseInterceptor.to(TurnEndPhase);
|
||||
@ -212,7 +212,7 @@ describe("Abilities - Forecast", () => {
|
||||
|
||||
it("reverts to Normal Form when Forecast is suppressed, changes form to match the weather when it regains it", async () => {
|
||||
game.override.enemyMoveset([MoveId.GASTRO_ACID]).weather(WeatherType.RAIN);
|
||||
await game.classicMode.startBattle([Species.CASTFORM, Species.PIKACHU]);
|
||||
await game.classicMode.startBattle([SpeciesId.CASTFORM, SpeciesId.PIKACHU]);
|
||||
const castform = game.scene.getPlayerPokemon()!;
|
||||
|
||||
expect(castform.formIndex).toBe(RAINY_FORM);
|
||||
@ -243,7 +243,7 @@ describe("Abilities - Forecast", () => {
|
||||
|
||||
it("does not change Castform's form until after Stealth Rock deals damage", async () => {
|
||||
game.override.weather(WeatherType.RAIN).enemyMoveset([MoveId.STEALTH_ROCK]);
|
||||
await game.classicMode.startBattle([Species.PIKACHU, Species.CASTFORM]);
|
||||
await game.classicMode.startBattle([SpeciesId.PIKACHU, SpeciesId.CASTFORM]);
|
||||
|
||||
// First turn - set up stealth rock
|
||||
game.move.select(MoveId.SPLASH);
|
||||
@ -267,7 +267,7 @@ describe("Abilities - Forecast", () => {
|
||||
it("should be in Normal Form after the user is switched out", async () => {
|
||||
game.override.weather(WeatherType.RAIN);
|
||||
|
||||
await game.classicMode.startBattle([Species.CASTFORM, Species.MAGIKARP]);
|
||||
await game.classicMode.startBattle([SpeciesId.CASTFORM, SpeciesId.MAGIKARP]);
|
||||
const castform = game.scene.getPlayerPokemon()!;
|
||||
|
||||
expect(castform.formIndex).toBe(RAINY_FORM);
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { MoveId } from "#enums/move-id";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import { AbilityId } from "#enums/ability-id";
|
||||
import GameManager from "#test/testUtils/gameManager";
|
||||
import Phaser from "phaser";
|
||||
@ -29,13 +29,13 @@ describe("Moves - Friend Guard", () => {
|
||||
.battleStyle("double")
|
||||
.enemyAbility(AbilityId.BALL_FETCH)
|
||||
.enemyMoveset([MoveId.TACKLE, MoveId.SPLASH, MoveId.DRAGON_RAGE])
|
||||
.enemySpecies(Species.SHUCKLE)
|
||||
.enemySpecies(SpeciesId.SHUCKLE)
|
||||
.moveset([MoveId.SPLASH])
|
||||
.startingLevel(100);
|
||||
});
|
||||
|
||||
it("should reduce damage that other allied Pokémon receive from attacks (from any Pokémon) by 25%", async () => {
|
||||
await game.classicMode.startBattle([Species.BULBASAUR, Species.CHARMANDER]);
|
||||
await game.classicMode.startBattle([SpeciesId.BULBASAUR, SpeciesId.CHARMANDER]);
|
||||
const [player1, player2] = game.scene.getPlayerField();
|
||||
const spy = vi.spyOn(player1, "getAttackDamage");
|
||||
|
||||
@ -76,7 +76,7 @@ describe("Moves - Friend Guard", () => {
|
||||
});
|
||||
|
||||
it("should NOT reduce damage to pokemon with friend guard", async () => {
|
||||
await game.classicMode.startBattle([Species.BULBASAUR, Species.CHARMANDER]);
|
||||
await game.classicMode.startBattle([SpeciesId.BULBASAUR, SpeciesId.CHARMANDER]);
|
||||
|
||||
const player2 = game.scene.getPlayerField()[1];
|
||||
const spy = vi.spyOn(player2, "getAttackDamage");
|
||||
@ -102,7 +102,7 @@ describe("Moves - Friend Guard", () => {
|
||||
});
|
||||
|
||||
it("should NOT reduce damage from fixed damage attacks", async () => {
|
||||
await game.classicMode.startBattle([Species.BULBASAUR, Species.CHARMANDER]);
|
||||
await game.classicMode.startBattle([SpeciesId.BULBASAUR, SpeciesId.CHARMANDER]);
|
||||
|
||||
const [player1, player2] = game.scene.getPlayerField();
|
||||
const spy = vi.spyOn(player1, "getAttackDamage");
|
||||
|
@ -8,7 +8,7 @@ import { StatusEffect } from "#app/enums/status-effect";
|
||||
import { WeatherType } from "#app/enums/weather-type";
|
||||
import { AbilityId } from "#enums/ability-id";
|
||||
import { MoveId } from "#enums/move-id";
|
||||
import { Species } from "#enums/species";
|
||||
import { SpeciesId } from "#enums/species";
|
||||
import GameManager from "#test/testUtils/gameManager";
|
||||
import Phaser from "phaser";
|
||||
import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
|
||||
@ -34,14 +34,14 @@ describe("Abilities - Good As Gold", () => {
|
||||
.ability(AbilityId.GOOD_AS_GOLD)
|
||||
.battleStyle("single")
|
||||
.disableCrits()
|
||||
.enemySpecies(Species.MAGIKARP)
|
||||
.enemySpecies(SpeciesId.MAGIKARP)
|
||||
.enemyAbility(AbilityId.BALL_FETCH)
|
||||
.enemyMoveset(MoveId.SPLASH);
|
||||
});
|
||||
|
||||
it("should block normal status moves", async () => {
|
||||
game.override.enemyMoveset([MoveId.GROWL]);
|
||||
await game.classicMode.startBattle([Species.MAGIKARP]);
|
||||
await game.classicMode.startBattle([SpeciesId.MAGIKARP]);
|
||||
|
||||
const player = game.scene.getPlayerPokemon()!;
|
||||
|
||||
@ -55,7 +55,7 @@ describe("Abilities - Good As Gold", () => {
|
||||
|
||||
it("should block memento and prevent the user from fainting", async () => {
|
||||
game.override.enemyMoveset([MoveId.MEMENTO]);
|
||||
await game.classicMode.startBattle([Species.MAGIKARP]);
|
||||
await game.classicMode.startBattle([SpeciesId.MAGIKARP]);
|
||||
game.move.select(MoveId.MEMENTO);
|
||||
await game.phaseInterceptor.to("BerryPhase");
|
||||
expect(game.scene.getPlayerPokemon()!.isFainted()).toBe(false);
|
||||
@ -66,7 +66,7 @@ describe("Abilities - Good As Gold", () => {
|
||||
game.override.battleStyle("double");
|
||||
game.override.enemyMoveset([MoveId.STEALTH_ROCK, MoveId.HAZE]);
|
||||
game.override.moveset([MoveId.SWORDS_DANCE, MoveId.SAFEGUARD]);
|
||||
await game.classicMode.startBattle([Species.MAGIKARP, Species.FEEBAS]);
|
||||
await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.FEEBAS]);
|
||||
const [good_as_gold, ball_fetch] = game.scene.getPlayerField();
|
||||
|
||||
// Force second pokemon to have ball fetch to isolate to a single mon.
|
||||
@ -87,7 +87,7 @@ describe("Abilities - Good As Gold", () => {
|
||||
it("should not block field targeted effects in singles", async () => {
|
||||
game.override.battleStyle("single");
|
||||
game.override.enemyMoveset([MoveId.SPIKES]);
|
||||
await game.classicMode.startBattle([Species.MAGIKARP]);
|
||||
await game.classicMode.startBattle([SpeciesId.MAGIKARP]);
|
||||
|
||||
game.move.select(MoveId.SPLASH, 0);
|
||||
await game.phaseInterceptor.to("BerryPhase");
|
||||
@ -98,7 +98,7 @@ describe("Abilities - Good As Gold", () => {
|
||||
it("should block the ally's helping hand", async () => {
|
||||
game.override.battleStyle("double");
|
||||
game.override.moveset([MoveId.HELPING_HAND, MoveId.TACKLE]);
|
||||
await game.classicMode.startBattle([Species.MAGIKARP, Species.FEEBAS]);
|
||||
await game.classicMode.startBattle([SpeciesId.MAGIKARP, SpeciesId.FEEBAS]);
|
||||
|
||||
game.move.select(MoveId.HELPING_HAND, 0);
|
||||
game.move.select(MoveId.TACKLE, 1);
|
||||
@ -110,7 +110,7 @@ describe("Abilities - Good As Gold", () => {
|
||||
// TODO: re-enable when heal bell is fixed
|
||||
it.todo("should block the ally's heal bell, but only if the good as gold user is on the field", async () => {
|
||||
game.override.battleStyle("double").statusEffect(StatusEffect.BURN);
|
||||
await game.classicMode.startBattle([Species.MILOTIC, Species.FEEBAS, Species.ABRA]);
|
||||
await game.classicMode.startBattle([SpeciesId.MILOTIC, SpeciesId.FEEBAS, SpeciesId.ABRA]);
|
||||
const [milotic, feebas, abra] = game.scene.getPlayerParty();
|
||||
game.field.mockAbility(milotic, AbilityId.GOOD_AS_GOLD);
|
||||
game.field.mockAbility(feebas, AbilityId.BALL_FETCH);
|
||||
@ -131,7 +131,7 @@ describe("Abilities - Good As Gold", () => {
|
||||
it("should not block field targeted effects like rain dance", async () => {
|
||||
game.override.battleStyle("single");
|
||||
game.override.enemyMoveset([MoveId.RAIN_DANCE]);
|
||||
await game.classicMode.startBattle([Species.MAGIKARP]);
|
||||
await game.classicMode.startBattle([SpeciesId.MAGIKARP]);
|
||||
|
||||
game.move.use(MoveId.SPLASH, 0);
|
||||
await game.phaseInterceptor.to("BerryPhase");
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user