mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-06-21 09:02:47 +02:00
[Refactor] Rework evolution conditions and descriptions (#5679)
* Refactor evo conditions and descriptions * Fix test * Fix Shedinja * Simplify Gimmighoul evolution * Primeape and Stantler evolve by using their move 10 times * Basculin white stripe evolves by taking 294 recoil damage * Primeape and Stantler use modifiers for tracking * Basculin uses modifier too * Remove evo count from pokemon data * No more evo counter data, Gallade/Froslass * Fix allmoves import * Clamperl * Struggle shouldn't count for Basc recoil * Change to nicer type * Apply Benjie's suggestions Co-authored-by: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com> * Address formatting * Undo new evolution changes * Remove unused imports * Fix speciesid * Fixed up descriptions a little * Change a key name * Fix Gimmighoul * Apply Biome * Apply Biome unsafe fixes * Review suggestions - Convert `EvoCondKey` enum to `const` object - Use early returns in `SpeciesEvolutionCondition#description` and `SpeciesFormEvolution#description` - Replace `!!x.find` with `x.some` and `y.indexOf() > -1` with `y.includes()` - Implement `coerceArray` - Fix Shelmet evolution condition checking for Shelmet and not Karrablast - Remove unnecessary type casting in `battle-scene.ts` * Remove leftover enforce func loop * Fix circular imports issue - `getPokemonSpecies` moved to `src/utils/pokemon-utils.ts` - `allSpecies` moved to `src/data/data-lists.ts` --------- Co-authored-by: Sirz Benjie <142067137+SirzBenjie@users.noreply.github.com> Co-authored-by: NightKev <34855794+DayKev@users.noreply.github.com>
This commit is contained in:
parent
ccceaac877
commit
e3108603e3
@ -4,7 +4,8 @@ import type Pokemon from "#app/field/pokemon";
|
|||||||
import { EnemyPokemon, PlayerPokemon } from "#app/field/pokemon";
|
import { EnemyPokemon, PlayerPokemon } from "#app/field/pokemon";
|
||||||
import type { PokemonSpeciesFilter } from "#app/data/pokemon-species";
|
import type { PokemonSpeciesFilter } from "#app/data/pokemon-species";
|
||||||
import type PokemonSpecies from "#app/data/pokemon-species";
|
import type PokemonSpecies from "#app/data/pokemon-species";
|
||||||
import { allSpecies, getPokemonSpecies } from "#app/data/pokemon-species";
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
|
import { allSpecies } from "#app/data/data-lists";
|
||||||
import {
|
import {
|
||||||
fixedInt,
|
fixedInt,
|
||||||
getIvsFromId,
|
getIvsFromId,
|
||||||
@ -2966,6 +2967,13 @@ export default class BattleScene extends SceneBase {
|
|||||||
) {
|
) {
|
||||||
modifiers.splice(m--, 1);
|
modifiers.splice(m--, 1);
|
||||||
}
|
}
|
||||||
|
if (
|
||||||
|
modifier instanceof PokemonHeldItemModifier &&
|
||||||
|
!isNullOrUndefined(modifier.getSpecies()) &&
|
||||||
|
!this.getPokemonById(modifier.pokemonId)?.hasSpecies(modifier.getSpecies()!)
|
||||||
|
) {
|
||||||
|
modifiers.splice(m--, 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
for (const modifier of modifiers) {
|
for (const modifier of modifiers) {
|
||||||
if (modifier instanceof PersistentModifier) {
|
if (modifier instanceof PersistentModifier) {
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -4,7 +4,8 @@ import i18next from "i18next";
|
|||||||
import type { DexAttrProps, GameData } from "#app/system/game-data";
|
import type { DexAttrProps, GameData } from "#app/system/game-data";
|
||||||
import { defaultStarterSpecies } from "#app/constants";
|
import { defaultStarterSpecies } from "#app/constants";
|
||||||
import type PokemonSpecies from "#app/data/pokemon-species";
|
import type PokemonSpecies from "#app/data/pokemon-species";
|
||||||
import { getPokemonSpecies, getPokemonSpeciesForm } from "#app/data/pokemon-species";
|
import { getPokemonSpeciesForm } from "#app/data/pokemon-species";
|
||||||
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
import { speciesStarterCosts } from "#app/data/balance/starters";
|
import { speciesStarterCosts } from "#app/data/balance/starters";
|
||||||
import type Pokemon from "#app/field/pokemon";
|
import type Pokemon from "#app/field/pokemon";
|
||||||
import { PokemonMove } from "./moves/pokemon-move";
|
import { PokemonMove } from "./moves/pokemon-move";
|
||||||
|
@ -5,7 +5,8 @@ import { PlayerPokemon } from "#app/field/pokemon";
|
|||||||
import type { Starter } from "#app/ui/starter-select-ui-handler";
|
import type { Starter } from "#app/ui/starter-select-ui-handler";
|
||||||
import { randSeedGauss, randSeedInt, randSeedItem, getEnumValues } from "#app/utils/common";
|
import { randSeedGauss, randSeedInt, randSeedItem, getEnumValues } from "#app/utils/common";
|
||||||
import type { PokemonSpeciesForm } from "#app/data/pokemon-species";
|
import type { PokemonSpeciesForm } from "#app/data/pokemon-species";
|
||||||
import PokemonSpecies, { getPokemonSpecies, getPokemonSpeciesForm } from "#app/data/pokemon-species";
|
import PokemonSpecies, { getPokemonSpeciesForm } from "#app/data/pokemon-species";
|
||||||
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
import { speciesStarterCosts } from "#app/data/balance/starters";
|
import { speciesStarterCosts } from "#app/data/balance/starters";
|
||||||
import { pokerogueApi } from "#app/plugins/api/pokerogue-api";
|
import { pokerogueApi } from "#app/plugins/api/pokerogue-api";
|
||||||
import { BiomeId } from "#enums/biome-id";
|
import { BiomeId } from "#enums/biome-id";
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
|
import type PokemonSpecies from "#app/data/pokemon-species";
|
||||||
import type { ModifierTypes } from "#app/modifier/modifier-type";
|
import type { ModifierTypes } from "#app/modifier/modifier-type";
|
||||||
import type { Ability } from "./abilities/ability";
|
import type { Ability } from "./abilities/ability";
|
||||||
import type Move from "./moves/move";
|
import type Move from "./moves/move";
|
||||||
|
|
||||||
export const allAbilities: Ability[] = [];
|
export const allAbilities: Ability[] = [];
|
||||||
export const allMoves: Move[] = [];
|
export const allMoves: Move[] = [];
|
||||||
|
export const allSpecies: PokemonSpecies[] = [];
|
||||||
|
|
||||||
// TODO: Figure out what this is used for and provide an appropriate tsdoc comment
|
// TODO: Figure out what this is used for and provide an appropriate tsdoc comment
|
||||||
export const modifierTypes = {} as ModifierTypes;
|
export const modifierTypes = {} as ModifierTypes;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import type BattleScene from "#app/battle-scene";
|
import type BattleScene from "#app/battle-scene";
|
||||||
import { globalScene } from "#app/global-scene";
|
import { globalScene } from "#app/global-scene";
|
||||||
import type PokemonSpecies from "#app/data/pokemon-species";
|
import type PokemonSpecies from "#app/data/pokemon-species";
|
||||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
import { speciesStarterCosts } from "#app/data/balance/starters";
|
import { speciesStarterCosts } from "#app/data/balance/starters";
|
||||||
import { VariantTier } from "#enums/variant-tier";
|
import { VariantTier } from "#enums/variant-tier";
|
||||||
import { randInt, randomString, randSeedInt, getIvsFromId } from "#app/utils/common";
|
import { randInt, randomString, randSeedInt, getIvsFromId } from "#app/utils/common";
|
||||||
|
@ -22,7 +22,7 @@ import { queueEncounterMessage } from "#app/data/mystery-encounters/utils/encoun
|
|||||||
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
|
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
|
||||||
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
|
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
|
||||||
import { BerryModifier, PokemonInstantReviveModifier } from "#app/modifier/modifier";
|
import { BerryModifier, PokemonInstantReviveModifier } from "#app/modifier/modifier";
|
||||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
import { MoveId } from "#enums/move-id";
|
import { MoveId } from "#enums/move-id";
|
||||||
import { BattlerTagType } from "#enums/battler-tag-type";
|
import { BattlerTagType } from "#enums/battler-tag-type";
|
||||||
import { randInt } from "#app/utils/common";
|
import { randInt } from "#app/utils/common";
|
||||||
|
@ -18,7 +18,7 @@ import {
|
|||||||
} from "#app/data/mystery-encounters/mystery-encounter-requirements";
|
} from "#app/data/mystery-encounters/mystery-encounter-requirements";
|
||||||
import { getHighestStatTotalPlayerPokemon } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils";
|
import { getHighestStatTotalPlayerPokemon } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils";
|
||||||
import { EXTORTION_ABILITIES, EXTORTION_MOVES } from "#app/data/mystery-encounters/requirements/requirement-groups";
|
import { EXTORTION_ABILITIES, EXTORTION_MOVES } from "#app/data/mystery-encounters/requirements/requirement-groups";
|
||||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
import { speciesStarterCosts } from "#app/data/balance/starters";
|
import { speciesStarterCosts } from "#app/data/balance/starters";
|
||||||
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
|
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
|
||||||
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
|
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
|
||||||
|
@ -22,7 +22,7 @@ import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-en
|
|||||||
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
|
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
|
||||||
import { SpeciesId } from "#enums/species-id";
|
import { SpeciesId } from "#enums/species-id";
|
||||||
import { TrainerType } from "#enums/trainer-type";
|
import { TrainerType } from "#enums/trainer-type";
|
||||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
import { AbilityId } from "#enums/ability-id";
|
import { AbilityId } from "#enums/ability-id";
|
||||||
import {
|
import {
|
||||||
applyAbilityOverrideToPokemon,
|
applyAbilityOverrideToPokemon,
|
||||||
|
@ -19,7 +19,7 @@ import {
|
|||||||
getEncounterPokemonLevelForWave,
|
getEncounterPokemonLevelForWave,
|
||||||
STANDARD_ENCOUNTER_BOOSTED_LEVEL_MODIFIER,
|
STANDARD_ENCOUNTER_BOOSTED_LEVEL_MODIFIER,
|
||||||
} from "#app/data/mystery-encounters/utils/encounter-pokemon-utils";
|
} from "#app/data/mystery-encounters/utils/encounter-pokemon-utils";
|
||||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
import { TrainerSlot } from "#enums/trainer-slot";
|
import { TrainerSlot } from "#enums/trainer-slot";
|
||||||
import type { PlayerPokemon } from "#app/field/pokemon";
|
import type { PlayerPokemon } from "#app/field/pokemon";
|
||||||
import type Pokemon from "#app/field/pokemon";
|
import type Pokemon from "#app/field/pokemon";
|
||||||
|
@ -4,7 +4,7 @@ import { MysteryEncounterType } from "#enums/mystery-encounter-type";
|
|||||||
import { SpeciesId } from "#enums/species-id";
|
import { SpeciesId } from "#enums/species-id";
|
||||||
import { globalScene } from "#app/global-scene";
|
import { globalScene } from "#app/global-scene";
|
||||||
import { modifierTypes } from "#app/data/data-lists";
|
import { modifierTypes } from "#app/data/data-lists";
|
||||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter";
|
import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter";
|
||||||
import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter";
|
import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter";
|
||||||
import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option";
|
import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option";
|
||||||
|
@ -15,7 +15,7 @@ import {
|
|||||||
updatePlayerMoney,
|
updatePlayerMoney,
|
||||||
} from "#app/data/mystery-encounters/utils/encounter-phase-utils";
|
} from "#app/data/mystery-encounters/utils/encounter-phase-utils";
|
||||||
import { applyModifierTypeToPlayerPokemon } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils";
|
import { applyModifierTypeToPlayerPokemon } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils";
|
||||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
import type { PlayerPokemon } from "#app/field/pokemon";
|
import type { PlayerPokemon } from "#app/field/pokemon";
|
||||||
import type Pokemon from "#app/field/pokemon";
|
import type Pokemon from "#app/field/pokemon";
|
||||||
import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants";
|
import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants";
|
||||||
|
@ -20,7 +20,7 @@ import {
|
|||||||
TypeRequirement,
|
TypeRequirement,
|
||||||
} from "#app/data/mystery-encounters/mystery-encounter-requirements";
|
} from "#app/data/mystery-encounters/mystery-encounter-requirements";
|
||||||
import { SpeciesId } from "#enums/species-id";
|
import { SpeciesId } from "#enums/species-id";
|
||||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
import { Gender } from "#app/data/gender";
|
import { Gender } from "#app/data/gender";
|
||||||
import { PokemonType } from "#enums/pokemon-type";
|
import { PokemonType } from "#enums/pokemon-type";
|
||||||
import { BattlerIndex } from "#enums/battler-index";
|
import { BattlerIndex } from "#enums/battler-index";
|
||||||
|
@ -14,7 +14,7 @@ import { TrainerSlot } from "#enums/trainer-slot";
|
|||||||
import type { PlayerPokemon } from "#app/field/pokemon";
|
import type { PlayerPokemon } from "#app/field/pokemon";
|
||||||
import type Pokemon from "#app/field/pokemon";
|
import type Pokemon from "#app/field/pokemon";
|
||||||
import { FieldPosition } from "#enums/field-position";
|
import { FieldPosition } from "#enums/field-position";
|
||||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
import { MoneyRequirement } from "#app/data/mystery-encounters/mystery-encounter-requirements";
|
import { MoneyRequirement } from "#app/data/mystery-encounters/mystery-encounter-requirements";
|
||||||
import { queueEncounterMessage, showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils";
|
import { queueEncounterMessage, showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils";
|
||||||
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
|
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
|
||||||
|
@ -16,7 +16,8 @@ import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-en
|
|||||||
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
|
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
|
||||||
import { SpeciesId } from "#enums/species-id";
|
import { SpeciesId } from "#enums/species-id";
|
||||||
import type PokemonSpecies from "#app/data/pokemon-species";
|
import type PokemonSpecies from "#app/data/pokemon-species";
|
||||||
import { allSpecies, getPokemonSpecies } from "#app/data/pokemon-species";
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
|
import { allSpecies } from "#app/data/data-lists";
|
||||||
import { getTypeRgb } from "#app/data/type";
|
import { getTypeRgb } from "#app/data/type";
|
||||||
import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option";
|
import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option";
|
||||||
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
|
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
import { MoveId } from "#enums/move-id";
|
import { MoveId } from "#enums/move-id";
|
||||||
import { SpeciesId } from "#enums/species-id";
|
import { SpeciesId } from "#enums/species-id";
|
||||||
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
|
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
|
||||||
|
@ -14,7 +14,7 @@ import {
|
|||||||
getHighestLevelPlayerPokemon,
|
getHighestLevelPlayerPokemon,
|
||||||
koPlayerPokemon,
|
koPlayerPokemon,
|
||||||
} from "#app/data/mystery-encounters/utils/encounter-pokemon-utils";
|
} from "#app/data/mystery-encounters/utils/encounter-pokemon-utils";
|
||||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants";
|
import { CLASSIC_MODE_MYSTERY_ENCOUNTER_WAVES } from "#app/constants";
|
||||||
import { ModifierTier } from "#enums/modifier-tier";
|
import { ModifierTier } from "#enums/modifier-tier";
|
||||||
import { randSeedInt } from "#app/utils/common";
|
import { randSeedInt } from "#app/utils/common";
|
||||||
|
@ -17,7 +17,7 @@ import { PokeballType } from "#enums/pokeball";
|
|||||||
import { PlayerGender } from "#enums/player-gender";
|
import { PlayerGender } from "#enums/player-gender";
|
||||||
import { NumberHolder, randSeedInt } from "#app/utils/common";
|
import { NumberHolder, randSeedInt } from "#app/utils/common";
|
||||||
import type PokemonSpecies from "#app/data/pokemon-species";
|
import type PokemonSpecies from "#app/data/pokemon-species";
|
||||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
import { MoneyRequirement } from "#app/data/mystery-encounters/mystery-encounter-requirements";
|
import { MoneyRequirement } from "#app/data/mystery-encounters/mystery-encounter-requirements";
|
||||||
import {
|
import {
|
||||||
doPlayerFlee,
|
doPlayerFlee,
|
||||||
|
@ -24,7 +24,7 @@ import { MoveId } from "#enums/move-id";
|
|||||||
import { BattlerIndex } from "#enums/battler-index";
|
import { BattlerIndex } from "#enums/battler-index";
|
||||||
import { PokemonMove } from "#app/data/moves/pokemon-move";
|
import { PokemonMove } from "#app/data/moves/pokemon-move";
|
||||||
import { AiType } from "#enums/ai-type";
|
import { AiType } from "#enums/ai-type";
|
||||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
|
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
|
||||||
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
|
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
|
||||||
import { BerryType } from "#enums/berry-type";
|
import { BerryType } from "#enums/berry-type";
|
||||||
|
@ -15,7 +15,7 @@ import { BiomeId } from "#enums/biome-id";
|
|||||||
import { TrainerType } from "#enums/trainer-type";
|
import { TrainerType } from "#enums/trainer-type";
|
||||||
import i18next from "i18next";
|
import i18next from "i18next";
|
||||||
import { SpeciesId } from "#enums/species-id";
|
import { SpeciesId } from "#enums/species-id";
|
||||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
import { speciesStarterCosts } from "#app/data/balance/starters";
|
import { speciesStarterCosts } from "#app/data/balance/starters";
|
||||||
import { Nature } from "#enums/nature";
|
import { Nature } from "#enums/nature";
|
||||||
import { MoveId } from "#enums/move-id";
|
import { MoveId } from "#enums/move-id";
|
||||||
|
@ -15,7 +15,7 @@ import {
|
|||||||
getSpriteKeysFromPokemon,
|
getSpriteKeysFromPokemon,
|
||||||
} from "#app/data/mystery-encounters/utils/encounter-pokemon-utils";
|
} from "#app/data/mystery-encounters/utils/encounter-pokemon-utils";
|
||||||
import type PokemonSpecies from "#app/data/pokemon-species";
|
import type PokemonSpecies from "#app/data/pokemon-species";
|
||||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
import { speciesStarterCosts } from "#app/data/balance/starters";
|
import { speciesStarterCosts } from "#app/data/balance/starters";
|
||||||
import { SpeciesId } from "#enums/species-id";
|
import { SpeciesId } from "#enums/species-id";
|
||||||
import { PokeballType } from "#enums/pokeball";
|
import { PokeballType } from "#enums/pokeball";
|
||||||
|
@ -13,7 +13,7 @@ import { MysteryEncounterType } from "#enums/mystery-encounter-type";
|
|||||||
import { globalScene } from "#app/global-scene";
|
import { globalScene } from "#app/global-scene";
|
||||||
import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter";
|
import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter";
|
||||||
import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter";
|
import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter";
|
||||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
import { SpeciesId } from "#enums/species-id";
|
import { SpeciesId } from "#enums/species-id";
|
||||||
import { Nature } from "#enums/nature";
|
import { Nature } from "#enums/nature";
|
||||||
import type Pokemon from "#app/field/pokemon";
|
import type Pokemon from "#app/field/pokemon";
|
||||||
|
@ -17,7 +17,7 @@ import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
|
|||||||
import { TrainerType } from "#enums/trainer-type";
|
import { TrainerType } from "#enums/trainer-type";
|
||||||
import { SpeciesId } from "#enums/species-id";
|
import { SpeciesId } from "#enums/species-id";
|
||||||
import { AbilityId } from "#enums/ability-id";
|
import { AbilityId } from "#enums/ability-id";
|
||||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
import { MoveId } from "#enums/move-id";
|
import { MoveId } from "#enums/move-id";
|
||||||
import { Nature } from "#enums/nature";
|
import { Nature } from "#enums/nature";
|
||||||
import { PokemonType } from "#enums/pokemon-type";
|
import { PokemonType } from "#enums/pokemon-type";
|
||||||
|
@ -22,7 +22,7 @@ import { applyModifierTypeToPlayerPokemon } from "#app/data/mystery-encounters/u
|
|||||||
import { showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils";
|
import { showEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils";
|
||||||
import i18next from "#app/plugins/i18n";
|
import i18next from "#app/plugins/i18n";
|
||||||
import { ModifierTier } from "#enums/modifier-tier";
|
import { ModifierTier } from "#enums/modifier-tier";
|
||||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
import { MoveId } from "#enums/move-id";
|
import { MoveId } from "#enums/move-id";
|
||||||
import { BattlerIndex } from "#enums/battler-index";
|
import { BattlerIndex } from "#enums/battler-index";
|
||||||
import { PokemonMove } from "#app/data/moves/pokemon-move";
|
import { PokemonMove } from "#app/data/moves/pokemon-move";
|
||||||
|
@ -19,7 +19,8 @@ import type Pokemon from "#app/field/pokemon";
|
|||||||
import { PokemonMove } from "#app/data/moves/pokemon-move";
|
import { PokemonMove } from "#app/data/moves/pokemon-move";
|
||||||
import { NumberHolder, isNullOrUndefined, randSeedInt, randSeedShuffle } from "#app/utils/common";
|
import { NumberHolder, isNullOrUndefined, randSeedInt, randSeedShuffle } from "#app/utils/common";
|
||||||
import type PokemonSpecies from "#app/data/pokemon-species";
|
import type PokemonSpecies from "#app/data/pokemon-species";
|
||||||
import { allSpecies, getPokemonSpecies } from "#app/data/pokemon-species";
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
|
import { allSpecies } from "#app/data/data-lists";
|
||||||
import type { PokemonHeldItemModifier } from "#app/modifier/modifier";
|
import type { PokemonHeldItemModifier } from "#app/modifier/modifier";
|
||||||
import { HiddenAbilityRateBoosterModifier, PokemonFormChangeItemModifier } from "#app/modifier/modifier";
|
import { HiddenAbilityRateBoosterModifier, PokemonFormChangeItemModifier } from "#app/modifier/modifier";
|
||||||
import { achvs } from "#app/system/achv";
|
import { achvs } from "#app/system/achv";
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
import { globalScene } from "#app/global-scene";
|
import { globalScene } from "#app/global-scene";
|
||||||
import { allAbilities } from "../data-lists";
|
import { allAbilities } from "../data-lists";
|
||||||
import { EvolutionItem, pokemonEvolutions } from "#app/data/balance/pokemon-evolutions";
|
|
||||||
import { Nature } from "#enums/nature";
|
import { Nature } from "#enums/nature";
|
||||||
import { pokemonFormChanges } from "#app/data/pokemon-forms";
|
import { pokemonFormChanges } from "#app/data/pokemon-forms";
|
||||||
import { SpeciesFormChangeItemTrigger } from "../pokemon-forms/form-change-triggers";
|
import { SpeciesFormChangeItemTrigger } from "../pokemon-forms/form-change-triggers";
|
||||||
@ -16,7 +15,6 @@ import type { AbilityId } from "#enums/ability-id";
|
|||||||
import { MoveId } from "#enums/move-id";
|
import { MoveId } from "#enums/move-id";
|
||||||
import type { MysteryEncounterType } from "#enums/mystery-encounter-type";
|
import type { MysteryEncounterType } from "#enums/mystery-encounter-type";
|
||||||
import { SpeciesId } from "#enums/species-id";
|
import { SpeciesId } from "#enums/species-id";
|
||||||
import { SpeciesFormKey } from "#enums/species-form-key";
|
|
||||||
import { TimeOfDay } from "#enums/time-of-day";
|
import { TimeOfDay } from "#enums/time-of-day";
|
||||||
|
|
||||||
export interface EncounterRequirement {
|
export interface EncounterRequirement {
|
||||||
@ -834,70 +832,6 @@ export class CanFormChangeWithItemRequirement extends EncounterPokemonRequiremen
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export class CanEvolveWithItemRequirement extends EncounterPokemonRequirement {
|
|
||||||
requiredEvolutionItem: EvolutionItem[];
|
|
||||||
minNumberOfPokemon: number;
|
|
||||||
invertQuery: boolean;
|
|
||||||
|
|
||||||
constructor(evolutionItems: EvolutionItem | EvolutionItem[], minNumberOfPokemon = 1, invertQuery = false) {
|
|
||||||
super();
|
|
||||||
this.minNumberOfPokemon = minNumberOfPokemon;
|
|
||||||
this.invertQuery = invertQuery;
|
|
||||||
this.requiredEvolutionItem = coerceArray(evolutionItems);
|
|
||||||
}
|
|
||||||
|
|
||||||
override meetsRequirement(): boolean {
|
|
||||||
const partyPokemon = globalScene.getPlayerParty();
|
|
||||||
if (isNullOrUndefined(partyPokemon) || this.requiredEvolutionItem?.length < 0) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return this.queryParty(partyPokemon).length >= this.minNumberOfPokemon;
|
|
||||||
}
|
|
||||||
|
|
||||||
filterByEvo(pokemon, evolutionItem) {
|
|
||||||
if (
|
|
||||||
pokemonEvolutions.hasOwnProperty(pokemon.species.speciesId) &&
|
|
||||||
pokemonEvolutions[pokemon.species.speciesId].filter(
|
|
||||||
e => e.item === evolutionItem && (!e.condition || e.condition.predicate(pokemon)),
|
|
||||||
).length &&
|
|
||||||
pokemon.getFormKey() !== SpeciesFormKey.GIGANTAMAX
|
|
||||||
) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
|
||||||
pokemon.isFusion() &&
|
|
||||||
pokemonEvolutions.hasOwnProperty(pokemon.fusionSpecies.speciesId) &&
|
|
||||||
pokemonEvolutions[pokemon.fusionSpecies.speciesId].filter(
|
|
||||||
e => e.item === evolutionItem && (!e.condition || e.condition.predicate(pokemon)),
|
|
||||||
).length &&
|
|
||||||
pokemon.getFusionFormKey() !== SpeciesFormKey.GIGANTAMAX
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
override queryParty(partyPokemon: PlayerPokemon[]): PlayerPokemon[] {
|
|
||||||
if (!this.invertQuery) {
|
|
||||||
return partyPokemon.filter(
|
|
||||||
pokemon =>
|
|
||||||
this.requiredEvolutionItem.filter(evolutionItem => this.filterByEvo(pokemon, evolutionItem)).length > 0,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
// for an inverted query, we only want to get the pokemon that don't have ANY of the listed evolutionItemss
|
|
||||||
return partyPokemon.filter(
|
|
||||||
pokemon =>
|
|
||||||
this.requiredEvolutionItem.filter(evolutionItems => this.filterByEvo(pokemon, evolutionItems)).length === 0,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
override getDialogueToken(pokemon?: PlayerPokemon): [string, string] {
|
|
||||||
const requiredItems = this.requiredEvolutionItem.filter(evoItem => this.filterByEvo(pokemon, evoItem));
|
|
||||||
if (requiredItems.length > 0) {
|
|
||||||
return ["evolutionItem", EvolutionItem[requiredItems[0]]];
|
|
||||||
}
|
|
||||||
return ["evolutionItem", ""];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export class HeldItemRequirement extends EncounterPokemonRequirement {
|
export class HeldItemRequirement extends EncounterPokemonRequirement {
|
||||||
requiredHeldItemModifiers: string[];
|
requiredHeldItemModifiers: string[];
|
||||||
minNumberOfPokemon: number;
|
minNumberOfPokemon: number;
|
||||||
|
@ -48,7 +48,7 @@ import type HeldModifierConfig from "#app/@types/held-modifier-config";
|
|||||||
import type { Variant } from "#app/sprites/variant";
|
import type { Variant } from "#app/sprites/variant";
|
||||||
import { StatusEffect } from "#enums/status-effect";
|
import { StatusEffect } from "#enums/status-effect";
|
||||||
import { globalScene } from "#app/global-scene";
|
import { globalScene } from "#app/global-scene";
|
||||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
import { PokemonType } from "#enums/pokemon-type";
|
import { PokemonType } from "#enums/pokemon-type";
|
||||||
import { getNatureName } from "#app/data/nature";
|
import { getNatureName } from "#app/data/nature";
|
||||||
import { getPokemonNameWithAffix } from "#app/messages";
|
import { getPokemonNameWithAffix } from "#app/messages";
|
||||||
|
@ -20,7 +20,7 @@ import { PartyUiMode } from "#app/ui/party-ui-handler";
|
|||||||
import { SpeciesId } from "#enums/species-id";
|
import { SpeciesId } from "#enums/species-id";
|
||||||
import type { PokemonType } from "#enums/pokemon-type";
|
import type { PokemonType } from "#enums/pokemon-type";
|
||||||
import type PokemonSpecies from "#app/data/pokemon-species";
|
import type PokemonSpecies from "#app/data/pokemon-species";
|
||||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
import { speciesStarterCosts } from "#app/data/balance/starters";
|
import { speciesStarterCosts } from "#app/data/balance/starters";
|
||||||
import {
|
import {
|
||||||
getEncounterText,
|
getEncounterText,
|
||||||
|
@ -42,6 +42,8 @@ import { starterPassiveAbilities } from "#app/data/balance/passives";
|
|||||||
import { loadPokemonVariantAssets } from "#app/sprites/pokemon-sprite";
|
import { loadPokemonVariantAssets } from "#app/sprites/pokemon-sprite";
|
||||||
import { hasExpSprite } from "#app/sprites/sprite-utils";
|
import { hasExpSprite } from "#app/sprites/sprite-utils";
|
||||||
import { Gender } from "./gender";
|
import { Gender } from "./gender";
|
||||||
|
import { allSpecies } from "#app/data/data-lists";
|
||||||
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
|
|
||||||
export enum Region {
|
export enum Region {
|
||||||
NORMAL,
|
NORMAL,
|
||||||
@ -82,24 +84,6 @@ export const normalForm: SpeciesId[] = [
|
|||||||
SpeciesId.CALYREX,
|
SpeciesId.CALYREX,
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the {@linkcode PokemonSpecies} object associated with the {@linkcode SpeciesId} enum given
|
|
||||||
* @param species - The {@linkcode SpeciesId} to fetch.
|
|
||||||
* If an array of `SpeciesId`s is passed (such as for named trainer spawn pools),
|
|
||||||
* one will be selected at random.
|
|
||||||
* @returns The associated {@linkcode PokemonSpecies} object
|
|
||||||
*/
|
|
||||||
export function getPokemonSpecies(species: SpeciesId | SpeciesId[]): PokemonSpecies {
|
|
||||||
if (Array.isArray(species)) {
|
|
||||||
// TODO: this RNG roll should not be handled by this function
|
|
||||||
species = species[Math.floor(Math.random() * species.length)];
|
|
||||||
}
|
|
||||||
if (species >= 2000) {
|
|
||||||
return allSpecies.find(s => s.speciesId === species)!; // TODO: is this bang correct?
|
|
||||||
}
|
|
||||||
return allSpecies[species - 1];
|
|
||||||
}
|
|
||||||
|
|
||||||
export function getPokemonSpeciesForm(species: SpeciesId, formIndex: number): PokemonSpeciesForm {
|
export function getPokemonSpeciesForm(species: SpeciesId, formIndex: number): PokemonSpeciesForm {
|
||||||
const retSpecies: PokemonSpecies =
|
const retSpecies: PokemonSpecies =
|
||||||
species >= 2000
|
species >= 2000
|
||||||
@ -1449,8 +1433,6 @@ export function getPokerusStarters(): PokemonSpecies[] {
|
|||||||
return pokerusStarters;
|
return pokerusStarters;
|
||||||
}
|
}
|
||||||
|
|
||||||
export const allSpecies: PokemonSpecies[] = [];
|
|
||||||
|
|
||||||
// biome-ignore format: manually formatted
|
// biome-ignore format: manually formatted
|
||||||
export function initSpecies() {
|
export function initSpecies() {
|
||||||
allSpecies.push(
|
allSpecies.push(
|
||||||
|
@ -10,7 +10,7 @@ import {
|
|||||||
randSeedIntRange,
|
randSeedIntRange,
|
||||||
} from "#app/utils/common";
|
} from "#app/utils/common";
|
||||||
import { pokemonEvolutions, pokemonPrevolutions } from "#app/data/balance/pokemon-evolutions";
|
import { pokemonEvolutions, pokemonPrevolutions } from "#app/data/balance/pokemon-evolutions";
|
||||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
import { tmSpecies } from "#app/data/balance/tms";
|
import { tmSpecies } from "#app/data/balance/tms";
|
||||||
import { doubleBattleDialogue } from "../double-battle-dialogue";
|
import { doubleBattleDialogue } from "../double-battle-dialogue";
|
||||||
import { TrainerVariant } from "#enums/trainer-variant";
|
import { TrainerVariant } from "#enums/trainer-variant";
|
||||||
|
@ -3,7 +3,7 @@ import type { BiomeTierTrainerPools, PokemonPools } from "#app/data/balance/biom
|
|||||||
import { biomePokemonPools, BiomePoolTier, biomeTrainerPools } from "#app/data/balance/biomes";
|
import { biomePokemonPools, BiomePoolTier, biomeTrainerPools } from "#app/data/balance/biomes";
|
||||||
import { randSeedInt, NumberHolder, isNullOrUndefined, type Constructor } from "#app/utils/common";
|
import { randSeedInt, NumberHolder, isNullOrUndefined, type Constructor } from "#app/utils/common";
|
||||||
import type PokemonSpecies from "#app/data/pokemon-species";
|
import type PokemonSpecies from "#app/data/pokemon-species";
|
||||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
import {
|
import {
|
||||||
getTerrainClearMessage,
|
getTerrainClearMessage,
|
||||||
getTerrainStartMessage,
|
getTerrainStartMessage,
|
||||||
|
@ -15,12 +15,8 @@ import { allMoves } from "#app/data/data-lists";
|
|||||||
import { MoveTarget } from "#enums/MoveTarget";
|
import { MoveTarget } from "#enums/MoveTarget";
|
||||||
import { MoveCategory } from "#enums/MoveCategory";
|
import { MoveCategory } from "#enums/MoveCategory";
|
||||||
import type { PokemonSpeciesForm } from "#app/data/pokemon-species";
|
import type { PokemonSpeciesForm } from "#app/data/pokemon-species";
|
||||||
import {
|
import { default as PokemonSpecies, getFusedSpeciesName, getPokemonSpeciesForm } from "#app/data/pokemon-species";
|
||||||
default as PokemonSpecies,
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
getFusedSpeciesName,
|
|
||||||
getPokemonSpecies,
|
|
||||||
getPokemonSpeciesForm,
|
|
||||||
} from "#app/data/pokemon-species";
|
|
||||||
import { getStarterValueFriendshipCap, speciesStarterCosts } from "#app/data/balance/starters";
|
import { getStarterValueFriendshipCap, speciesStarterCosts } from "#app/data/balance/starters";
|
||||||
import {
|
import {
|
||||||
NumberHolder,
|
NumberHolder,
|
||||||
@ -79,11 +75,12 @@ import {
|
|||||||
import { PokeballType } from "#enums/pokeball";
|
import { PokeballType } from "#enums/pokeball";
|
||||||
import { Gender } from "#app/data/gender";
|
import { Gender } from "#app/data/gender";
|
||||||
import { Status, getRandomStatus } from "#app/data/status-effect";
|
import { Status, getRandomStatus } from "#app/data/status-effect";
|
||||||
import type { SpeciesFormEvolution, SpeciesEvolutionCondition } from "#app/data/balance/pokemon-evolutions";
|
import type { SpeciesFormEvolution } from "#app/data/balance/pokemon-evolutions";
|
||||||
import {
|
import {
|
||||||
pokemonEvolutions,
|
pokemonEvolutions,
|
||||||
pokemonPrevolutions,
|
pokemonPrevolutions,
|
||||||
FusionSpeciesFormEvolution,
|
FusionSpeciesFormEvolution,
|
||||||
|
validateShedinjaEvo,
|
||||||
} from "#app/data/balance/pokemon-evolutions";
|
} from "#app/data/balance/pokemon-evolutions";
|
||||||
import { reverseCompatibleTms, tmSpecies, tmPoolTiers } from "#app/data/balance/tms";
|
import { reverseCompatibleTms, tmSpecies, tmPoolTiers } from "#app/data/balance/tms";
|
||||||
import {
|
import {
|
||||||
@ -370,7 +367,6 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
|
|||||||
this.metWave = dataSource.metWave ?? (this.metBiome === -1 ? -1 : 0);
|
this.metWave = dataSource.metWave ?? (this.metBiome === -1 ? -1 : 0);
|
||||||
this.pauseEvolutions = dataSource.pauseEvolutions;
|
this.pauseEvolutions = dataSource.pauseEvolutions;
|
||||||
this.pokerus = !!dataSource.pokerus;
|
this.pokerus = !!dataSource.pokerus;
|
||||||
this.evoCounter = dataSource.evoCounter ?? 0;
|
|
||||||
this.fusionSpecies =
|
this.fusionSpecies =
|
||||||
dataSource.fusionSpecies instanceof PokemonSpecies
|
dataSource.fusionSpecies instanceof PokemonSpecies
|
||||||
? dataSource.fusionSpecies
|
? dataSource.fusionSpecies
|
||||||
@ -2518,34 +2514,22 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
|
|||||||
if (pokemonEvolutions.hasOwnProperty(this.species.speciesId)) {
|
if (pokemonEvolutions.hasOwnProperty(this.species.speciesId)) {
|
||||||
const evolutions = pokemonEvolutions[this.species.speciesId];
|
const evolutions = pokemonEvolutions[this.species.speciesId];
|
||||||
for (const e of evolutions) {
|
for (const e of evolutions) {
|
||||||
if (
|
if (e.validate(this)) {
|
||||||
!e.item &&
|
|
||||||
this.level >= e.level &&
|
|
||||||
(isNullOrUndefined(e.preFormKey) || this.getFormKey() === e.preFormKey)
|
|
||||||
) {
|
|
||||||
if (e.condition === null || (e.condition as SpeciesEvolutionCondition).predicate(this)) {
|
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (this.isFusion() && this.fusionSpecies && pokemonEvolutions.hasOwnProperty(this.fusionSpecies.speciesId)) {
|
if (this.isFusion() && this.fusionSpecies && pokemonEvolutions.hasOwnProperty(this.fusionSpecies.speciesId)) {
|
||||||
const fusionEvolutions = pokemonEvolutions[this.fusionSpecies.speciesId].map(
|
const fusionEvolutions = pokemonEvolutions[this.fusionSpecies.speciesId].map(
|
||||||
e => new FusionSpeciesFormEvolution(this.species.speciesId, e),
|
e => new FusionSpeciesFormEvolution(this.species.speciesId, e),
|
||||||
);
|
);
|
||||||
for (const fe of fusionEvolutions) {
|
for (const fe of fusionEvolutions) {
|
||||||
if (
|
if (fe.validate(this)) {
|
||||||
!fe.item &&
|
|
||||||
this.level >= fe.level &&
|
|
||||||
(isNullOrUndefined(fe.preFormKey) || this.getFusionFormKey() === fe.preFormKey)
|
|
||||||
) {
|
|
||||||
if (fe.condition === null || (fe.condition as SpeciesEvolutionCondition).predicate(this)) {
|
|
||||||
return fe;
|
return fe;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -5487,6 +5471,13 @@ export default abstract class Pokemon extends Phaser.GameObjects.Container {
|
|||||||
}
|
}
|
||||||
this.turnData.berriesEaten.push(berryType);
|
this.turnData.berriesEaten.push(berryType);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getPersistentTreasureCount(): number {
|
||||||
|
return (
|
||||||
|
this.getHeldItems().filter(m => m.is("DamageMoneyRewardModifier")).length +
|
||||||
|
globalScene.findModifiers(m => m.is("MoneyMultiplierModifier") || m.is("ExtraModifierModifier")).length
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export class PlayerPokemon extends Pokemon {
|
export class PlayerPokemon extends Pokemon {
|
||||||
@ -5825,7 +5816,7 @@ export class PlayerPokemon extends Pokemon {
|
|||||||
if (evoSpecies?.speciesId === SpeciesId.NINCADA && evolution.speciesId === SpeciesId.NINJASK) {
|
if (evoSpecies?.speciesId === SpeciesId.NINCADA && evolution.speciesId === SpeciesId.NINJASK) {
|
||||||
const newEvolution = pokemonEvolutions[evoSpecies.speciesId][1];
|
const newEvolution = pokemonEvolutions[evoSpecies.speciesId][1];
|
||||||
|
|
||||||
if (newEvolution.condition?.predicate(this)) {
|
if (validateShedinjaEvo()) {
|
||||||
const newPokemon = globalScene.addPlayerPokemon(
|
const newPokemon = globalScene.addPlayerPokemon(
|
||||||
this.species,
|
this.species,
|
||||||
this.level,
|
this.level,
|
||||||
@ -5855,7 +5846,6 @@ export class PlayerPokemon extends Pokemon {
|
|||||||
newPokemon.fusionLuck = this.fusionLuck;
|
newPokemon.fusionLuck = this.fusionLuck;
|
||||||
newPokemon.fusionTeraType = this.fusionTeraType;
|
newPokemon.fusionTeraType = this.fusionTeraType;
|
||||||
newPokemon.usedTMs = this.usedTMs;
|
newPokemon.usedTMs = this.usedTMs;
|
||||||
newPokemon.evoCounter = this.evoCounter;
|
|
||||||
|
|
||||||
globalScene.getPlayerParty().push(newPokemon);
|
globalScene.getPlayerParty().push(newPokemon);
|
||||||
newPokemon.evolve(!isFusion ? newEvolution : new FusionSpeciesFormEvolution(this.id, newEvolution), evoSpecies);
|
newPokemon.evolve(!isFusion ? newEvolution : new FusionSpeciesFormEvolution(this.id, newEvolution), evoSpecies);
|
||||||
@ -5944,7 +5934,6 @@ export class PlayerPokemon extends Pokemon {
|
|||||||
this.fusionGender = pokemon.gender;
|
this.fusionGender = pokemon.gender;
|
||||||
this.fusionLuck = pokemon.luck;
|
this.fusionLuck = pokemon.luck;
|
||||||
this.fusionCustomPokemonData = pokemon.customPokemonData;
|
this.fusionCustomPokemonData = pokemon.customPokemonData;
|
||||||
this.evoCounter = Math.max(pokemon.evoCounter, this.evoCounter);
|
|
||||||
if (pokemon.pauseEvolutions || this.pauseEvolutions) {
|
if (pokemon.pauseEvolutions || this.pauseEvolutions) {
|
||||||
this.pauseEvolutions = true;
|
this.pauseEvolutions = true;
|
||||||
}
|
}
|
||||||
@ -6100,18 +6089,6 @@ export class EnemyPokemon extends Pokemon {
|
|||||||
|
|
||||||
this.luck = (this.shiny ? this.variant + 1 : 0) + (this.fusionShiny ? this.fusionVariant + 1 : 0);
|
this.luck = (this.shiny ? this.variant + 1 : 0) + (this.fusionShiny ? this.fusionVariant + 1 : 0);
|
||||||
|
|
||||||
let prevolution: SpeciesId;
|
|
||||||
let speciesId = species.speciesId;
|
|
||||||
while ((prevolution = pokemonPrevolutions[speciesId])) {
|
|
||||||
const evolution = pokemonEvolutions[prevolution].find(
|
|
||||||
pe => pe.speciesId === speciesId && (!pe.evoFormKey || pe.evoFormKey === this.getFormKey()),
|
|
||||||
);
|
|
||||||
if (evolution?.condition?.enforceFunc) {
|
|
||||||
evolution.condition.enforceFunc(this);
|
|
||||||
}
|
|
||||||
speciesId = prevolution;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.hasTrainer() && globalScene.currentBattle) {
|
if (this.hasTrainer() && globalScene.currentBattle) {
|
||||||
const { waveIndex } = globalScene.currentBattle;
|
const { waveIndex } = globalScene.currentBattle;
|
||||||
const ivs: number[] = [];
|
const ivs: number[] = [];
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import { globalScene } from "#app/global-scene";
|
import { globalScene } from "#app/global-scene";
|
||||||
import { pokemonPrevolutions } from "#app/data/balance/pokemon-evolutions";
|
import { pokemonPrevolutions } from "#app/data/balance/pokemon-evolutions";
|
||||||
import type PokemonSpecies from "#app/data/pokemon-species";
|
import type PokemonSpecies from "#app/data/pokemon-species";
|
||||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
import type { TrainerConfig } from "#app/data/trainers/trainer-config";
|
import type { TrainerConfig } from "#app/data/trainers/trainer-config";
|
||||||
import type { TrainerPartyTemplate } from "#app/data/trainers/TrainerPartyTemplate";
|
import type { TrainerPartyTemplate } from "#app/data/trainers/TrainerPartyTemplate";
|
||||||
import { trainerConfigs } from "#app/data/trainers/trainer-config";
|
import { trainerConfigs } from "#app/data/trainers/trainer-config";
|
||||||
|
@ -5,7 +5,7 @@ import type { Challenge } from "./data/challenge";
|
|||||||
import { allChallenges, applyChallenges, copyChallenge } from "./data/challenge";
|
import { allChallenges, applyChallenges, copyChallenge } from "./data/challenge";
|
||||||
import { ChallengeType } from "#enums/challenge-type";
|
import { ChallengeType } from "#enums/challenge-type";
|
||||||
import type PokemonSpecies from "./data/pokemon-species";
|
import type PokemonSpecies from "./data/pokemon-species";
|
||||||
import { allSpecies } from "./data/pokemon-species";
|
import { allSpecies } from "#app/data/data-lists";
|
||||||
import type { Arena } from "./field/arena";
|
import type { Arena } from "./field/arena";
|
||||||
import Overrides from "#app/overrides";
|
import Overrides from "#app/overrides";
|
||||||
import { isNullOrUndefined, randSeedInt, randSeedItem } from "#app/utils/common";
|
import { isNullOrUndefined, randSeedInt, randSeedItem } from "#app/utils/common";
|
||||||
|
@ -1218,12 +1218,8 @@ export class EvolutionItemModifierType extends PokemonModifierType implements Ge
|
|||||||
(pokemon: PlayerPokemon) => {
|
(pokemon: PlayerPokemon) => {
|
||||||
if (
|
if (
|
||||||
pokemonEvolutions.hasOwnProperty(pokemon.species.speciesId) &&
|
pokemonEvolutions.hasOwnProperty(pokemon.species.speciesId) &&
|
||||||
pokemonEvolutions[pokemon.species.speciesId].filter(
|
pokemonEvolutions[pokemon.species.speciesId].filter(e => e.validate(pokemon, false, this.evolutionItem))
|
||||||
e =>
|
.length &&
|
||||||
e.item === this.evolutionItem &&
|
|
||||||
(!e.condition || e.condition.predicate(pokemon)) &&
|
|
||||||
(e.preFormKey === null || e.preFormKey === pokemon.getFormKey()),
|
|
||||||
).length &&
|
|
||||||
pokemon.getFormKey() !== SpeciesFormKey.GIGANTAMAX
|
pokemon.getFormKey() !== SpeciesFormKey.GIGANTAMAX
|
||||||
) {
|
) {
|
||||||
return null;
|
return null;
|
||||||
@ -1232,12 +1228,8 @@ export class EvolutionItemModifierType extends PokemonModifierType implements Ge
|
|||||||
pokemon.isFusion() &&
|
pokemon.isFusion() &&
|
||||||
pokemon.fusionSpecies &&
|
pokemon.fusionSpecies &&
|
||||||
pokemonEvolutions.hasOwnProperty(pokemon.fusionSpecies.speciesId) &&
|
pokemonEvolutions.hasOwnProperty(pokemon.fusionSpecies.speciesId) &&
|
||||||
pokemonEvolutions[pokemon.fusionSpecies.speciesId].filter(
|
pokemonEvolutions[pokemon.fusionSpecies.speciesId].filter(e => e.validate(pokemon, true, this.evolutionItem))
|
||||||
e =>
|
.length &&
|
||||||
e.item === this.evolutionItem &&
|
|
||||||
(!e.condition || e.condition.predicate(pokemon)) &&
|
|
||||||
(e.preFormKey === null || e.preFormKey === pokemon.getFusionFormKey()),
|
|
||||||
).length &&
|
|
||||||
pokemon.getFusionFormKey() !== SpeciesFormKey.GIGANTAMAX
|
pokemon.getFusionFormKey() !== SpeciesFormKey.GIGANTAMAX
|
||||||
) {
|
) {
|
||||||
return null;
|
return null;
|
||||||
@ -1597,12 +1589,7 @@ class EvolutionItemModifierTypeGenerator extends ModifierTypeGenerator {
|
|||||||
)
|
)
|
||||||
.flatMap(p => {
|
.flatMap(p => {
|
||||||
const evolutions = pokemonEvolutions[p.species.speciesId];
|
const evolutions = pokemonEvolutions[p.species.speciesId];
|
||||||
return evolutions.filter(
|
return evolutions.filter(e => e.isValidItemEvolution(p));
|
||||||
e =>
|
|
||||||
e.item !== EvolutionItem.NONE &&
|
|
||||||
(e.evoFormKey === null || (e.preFormKey || "") === p.getFormKey()) &&
|
|
||||||
(!e.condition || e.condition.predicate(p)),
|
|
||||||
);
|
|
||||||
}),
|
}),
|
||||||
party
|
party
|
||||||
.filter(
|
.filter(
|
||||||
@ -1616,16 +1603,11 @@ class EvolutionItemModifierTypeGenerator extends ModifierTypeGenerator {
|
|||||||
)
|
)
|
||||||
.flatMap(p => {
|
.flatMap(p => {
|
||||||
const evolutions = pokemonEvolutions[p.fusionSpecies!.speciesId];
|
const evolutions = pokemonEvolutions[p.fusionSpecies!.speciesId];
|
||||||
return evolutions.filter(
|
return evolutions.filter(e => e.validate(p, true));
|
||||||
e =>
|
|
||||||
e.item !== EvolutionItem.NONE &&
|
|
||||||
(e.evoFormKey === null || (e.preFormKey || "") === p.getFusionFormKey()) &&
|
|
||||||
(!e.condition || e.condition.predicate(p)),
|
|
||||||
);
|
|
||||||
}),
|
}),
|
||||||
]
|
]
|
||||||
.flat()
|
.flat()
|
||||||
.flatMap(e => e.item)
|
.flatMap(e => e.evoItem)
|
||||||
.filter(i => (!!i && i > 50) === rare);
|
.filter(i => (!!i && i > 50) === rare);
|
||||||
|
|
||||||
if (!evolutionItemPool.length) {
|
if (!evolutionItemPool.length) {
|
||||||
@ -1892,7 +1874,8 @@ const modifierTypeInitObj = Object.freeze({
|
|||||||
new PokemonHeldItemModifierType(
|
new PokemonHeldItemModifierType(
|
||||||
"modifierType:ModifierType.EVOLUTION_TRACKER_GIMMIGHOUL",
|
"modifierType:ModifierType.EVOLUTION_TRACKER_GIMMIGHOUL",
|
||||||
"relic_gold",
|
"relic_gold",
|
||||||
(type, args) => new EvoTrackerModifier(type, (args[0] as Pokemon).id, SpeciesId.GIMMIGHOUL, 10),
|
(type, args) =>
|
||||||
|
new EvoTrackerModifier(type, (args[0] as Pokemon).id, SpeciesId.GIMMIGHOUL, 10, (args[1] as number) ?? 1),
|
||||||
),
|
),
|
||||||
|
|
||||||
MEGA_BRACELET: () =>
|
MEGA_BRACELET: () =>
|
||||||
|
@ -772,6 +772,10 @@ export abstract class PokemonHeldItemModifier extends PersistentModifier {
|
|||||||
return this.getMaxHeldItemCount(pokemon);
|
return this.getMaxHeldItemCount(pokemon);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getSpecies(): SpeciesId | null {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
abstract getMaxHeldItemCount(pokemon?: Pokemon): number;
|
abstract getMaxHeldItemCount(pokemon?: Pokemon): number;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -918,27 +922,14 @@ export class EvoTrackerModifier extends PokemonHeldItemModifier {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
getIconStackText(virtual?: boolean): Phaser.GameObjects.BitmapText | null {
|
getIconStackText(_virtual?: boolean): Phaser.GameObjects.BitmapText | null {
|
||||||
if (this.getMaxStackCount() === 1 || (virtual && !this.virtualStackCount)) {
|
const pokemon = this.getPokemon();
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
const pokemon = globalScene.getPokemonById(this.pokemonId);
|
const count = (pokemon?.getPersistentTreasureCount() || 0) + this.getStackCount();
|
||||||
|
|
||||||
this.stackCount = pokemon
|
const text = globalScene.add.bitmapText(10, 15, "item-count", count.toString(), 11);
|
||||||
? pokemon.evoCounter +
|
|
||||||
pokemon.getHeldItems().filter(m => m instanceof DamageMoneyRewardModifier).length +
|
|
||||||
globalScene.findModifiers(
|
|
||||||
m =>
|
|
||||||
m instanceof MoneyMultiplierModifier ||
|
|
||||||
m instanceof ExtraModifierModifier ||
|
|
||||||
m instanceof TempExtraModifierModifier,
|
|
||||||
).length
|
|
||||||
: this.stackCount;
|
|
||||||
|
|
||||||
const text = globalScene.add.bitmapText(10, 15, "item-count", this.stackCount.toString(), 11);
|
|
||||||
text.letterSpacing = -0.5;
|
text.letterSpacing = -0.5;
|
||||||
if (this.getStackCount() >= this.required) {
|
if (count >= this.required) {
|
||||||
text.setTint(0xf89890);
|
text.setTint(0xf89890);
|
||||||
}
|
}
|
||||||
text.setOrigin(0, 0);
|
text.setOrigin(0, 0);
|
||||||
@ -946,18 +937,13 @@ export class EvoTrackerModifier extends PokemonHeldItemModifier {
|
|||||||
return text;
|
return text;
|
||||||
}
|
}
|
||||||
|
|
||||||
getMaxHeldItemCount(pokemon: Pokemon): number {
|
getMaxHeldItemCount(_pokemon: Pokemon): number {
|
||||||
this.stackCount =
|
|
||||||
pokemon.evoCounter +
|
|
||||||
pokemon.getHeldItems().filter(m => m instanceof DamageMoneyRewardModifier).length +
|
|
||||||
globalScene.findModifiers(
|
|
||||||
m =>
|
|
||||||
m instanceof MoneyMultiplierModifier ||
|
|
||||||
m instanceof ExtraModifierModifier ||
|
|
||||||
m instanceof TempExtraModifierModifier,
|
|
||||||
).length;
|
|
||||||
return 999;
|
return 999;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override getSpecies(): SpeciesId {
|
||||||
|
return this.species;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -2402,19 +2388,13 @@ export class EvolutionItemModifier extends ConsumablePokemonModifier {
|
|||||||
override apply(playerPokemon: PlayerPokemon): boolean {
|
override apply(playerPokemon: PlayerPokemon): boolean {
|
||||||
let matchingEvolution = pokemonEvolutions.hasOwnProperty(playerPokemon.species.speciesId)
|
let matchingEvolution = pokemonEvolutions.hasOwnProperty(playerPokemon.species.speciesId)
|
||||||
? pokemonEvolutions[playerPokemon.species.speciesId].find(
|
? pokemonEvolutions[playerPokemon.species.speciesId].find(
|
||||||
e =>
|
e => e.evoItem === this.type.evolutionItem && e.validate(playerPokemon, false, e.item!),
|
||||||
e.item === this.type.evolutionItem &&
|
|
||||||
(e.evoFormKey === null || (e.preFormKey || "") === playerPokemon.getFormKey()) &&
|
|
||||||
(!e.condition || e.condition.predicate(playerPokemon)),
|
|
||||||
)
|
)
|
||||||
: null;
|
: null;
|
||||||
|
|
||||||
if (!matchingEvolution && playerPokemon.isFusion()) {
|
if (!matchingEvolution && playerPokemon.isFusion()) {
|
||||||
matchingEvolution = pokemonEvolutions[playerPokemon.fusionSpecies!.speciesId].find(
|
matchingEvolution = pokemonEvolutions[playerPokemon.fusionSpecies!.speciesId].find(
|
||||||
e =>
|
e => e.evoItem === this.type.evolutionItem && e.validate(playerPokemon, true, e.item!),
|
||||||
e.item === this.type.evolutionItem && // TODO: is the bang correct?
|
|
||||||
(e.evoFormKey === null || (e.preFormKey || "") === playerPokemon.getFusionFormKey()) &&
|
|
||||||
(!e.condition || e.condition.predicate(playerPokemon)),
|
|
||||||
);
|
);
|
||||||
if (matchingEvolution) {
|
if (matchingEvolution) {
|
||||||
matchingEvolution = new FusionSpeciesFormEvolution(playerPokemon.species.speciesId, matchingEvolution);
|
matchingEvolution = new FusionSpeciesFormEvolution(playerPokemon.species.speciesId, matchingEvolution);
|
||||||
@ -2934,11 +2914,10 @@ export class MoneyRewardModifier extends ConsumableModifier {
|
|||||||
|
|
||||||
globalScene.getPlayerParty().map(p => {
|
globalScene.getPlayerParty().map(p => {
|
||||||
if (p.species?.speciesId === SpeciesId.GIMMIGHOUL || p.fusionSpecies?.speciesId === SpeciesId.GIMMIGHOUL) {
|
if (p.species?.speciesId === SpeciesId.GIMMIGHOUL || p.fusionSpecies?.speciesId === SpeciesId.GIMMIGHOUL) {
|
||||||
p.evoCounter
|
const factor = Math.min(Math.floor(this.moneyMultiplier), 3);
|
||||||
? (p.evoCounter += Math.min(Math.floor(this.moneyMultiplier), 3))
|
|
||||||
: (p.evoCounter = Math.min(Math.floor(this.moneyMultiplier), 3));
|
|
||||||
const modifier = getModifierType(modifierTypes.EVOLUTION_TRACKER_GIMMIGHOUL).newModifier(
|
const modifier = getModifierType(modifierTypes.EVOLUTION_TRACKER_GIMMIGHOUL).newModifier(
|
||||||
p,
|
p,
|
||||||
|
factor,
|
||||||
) as EvoTrackerModifier;
|
) as EvoTrackerModifier;
|
||||||
globalScene.addModifier(modifier);
|
globalScene.addModifier(modifier);
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@ import { globalScene } from "#app/global-scene";
|
|||||||
import { pokemonEvolutions } from "#app/data/balance/pokemon-evolutions";
|
import { pokemonEvolutions } from "#app/data/balance/pokemon-evolutions";
|
||||||
import { getCharVariantFromDialogue } from "#app/data/dialogue";
|
import { getCharVariantFromDialogue } from "#app/data/dialogue";
|
||||||
import type PokemonSpecies from "#app/data/pokemon-species";
|
import type PokemonSpecies from "#app/data/pokemon-species";
|
||||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
import { trainerConfigs } from "#app/data/trainers/trainer-config";
|
import { trainerConfigs } from "#app/data/trainers/trainer-config";
|
||||||
import type Pokemon from "#app/field/pokemon";
|
import type Pokemon from "#app/field/pokemon";
|
||||||
import { modifierTypes } from "#app/data/data-lists";
|
import { modifierTypes } from "#app/data/data-lists";
|
||||||
|
@ -3,7 +3,7 @@ import { applyChallenges } from "#app/data/challenge";
|
|||||||
import { ChallengeType } from "#enums/challenge-type";
|
import { ChallengeType } from "#enums/challenge-type";
|
||||||
import { Gender } from "#app/data/gender";
|
import { Gender } from "#app/data/gender";
|
||||||
import { SpeciesFormChangeMoveLearnedTrigger } from "#app/data/pokemon-forms/form-change-triggers";
|
import { SpeciesFormChangeMoveLearnedTrigger } from "#app/data/pokemon-forms/form-change-triggers";
|
||||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
import { overrideHeldItems, overrideModifiers } from "#app/modifier/modifier";
|
import { overrideHeldItems, overrideModifiers } from "#app/modifier/modifier";
|
||||||
import Overrides from "#app/overrides";
|
import Overrides from "#app/overrides";
|
||||||
import { Phase } from "#app/phase";
|
import { Phase } from "#app/phase";
|
||||||
|
@ -6,7 +6,8 @@ import type { EnemyPokemon, PlayerPokemon } from "#app/field/pokemon";
|
|||||||
import type Pokemon from "#app/field/pokemon";
|
import type Pokemon from "#app/field/pokemon";
|
||||||
import { pokemonPrevolutions } from "#app/data/balance/pokemon-evolutions";
|
import { pokemonPrevolutions } from "#app/data/balance/pokemon-evolutions";
|
||||||
import type PokemonSpecies from "#app/data/pokemon-species";
|
import type PokemonSpecies from "#app/data/pokemon-species";
|
||||||
import { allSpecies, getPokemonSpecies } from "#app/data/pokemon-species";
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
|
import { allSpecies } from "#app/data/data-lists";
|
||||||
import { speciesStarterCosts } from "#app/data/balance/starters";
|
import { speciesStarterCosts } from "#app/data/balance/starters";
|
||||||
import { randInt, getEnumKeys, isLocal, executeIf, fixedInt, randSeedItem, NumberHolder } from "#app/utils/common";
|
import { randInt, getEnumKeys, isLocal, executeIf, fixedInt, randSeedItem, NumberHolder } from "#app/utils/common";
|
||||||
import Overrides from "#app/overrides";
|
import Overrides from "#app/overrides";
|
||||||
|
@ -3,7 +3,8 @@ import { globalScene } from "#app/global-scene";
|
|||||||
import type { Gender } from "../data/gender";
|
import type { Gender } from "../data/gender";
|
||||||
import { Nature } from "#enums/nature";
|
import { Nature } from "#enums/nature";
|
||||||
import { PokeballType } from "#enums/pokeball";
|
import { PokeballType } from "#enums/pokeball";
|
||||||
import { getPokemonSpecies, getPokemonSpeciesForm } from "../data/pokemon-species";
|
import { getPokemonSpeciesForm } from "#app/data/pokemon-species";
|
||||||
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
import { Status } from "../data/status-effect";
|
import { Status } from "../data/status-effect";
|
||||||
import Pokemon, { EnemyPokemon, PokemonBattleData, PokemonSummonData } from "../field/pokemon";
|
import Pokemon, { EnemyPokemon, PokemonBattleData, PokemonSummonData } from "../field/pokemon";
|
||||||
import { PokemonMove } from "#app/data/moves/pokemon-move";
|
import { PokemonMove } from "#app/data/moves/pokemon-move";
|
||||||
@ -45,7 +46,6 @@ export default class PokemonData {
|
|||||||
public pauseEvolutions: boolean;
|
public pauseEvolutions: boolean;
|
||||||
public pokerus: boolean;
|
public pokerus: boolean;
|
||||||
public usedTMs: MoveId[];
|
public usedTMs: MoveId[];
|
||||||
public evoCounter: number;
|
|
||||||
public teraType: PokemonType;
|
public teraType: PokemonType;
|
||||||
public isTerastallized: boolean;
|
public isTerastallized: boolean;
|
||||||
public stellarTypesBoosted: PokemonType[];
|
public stellarTypesBoosted: PokemonType[];
|
||||||
@ -118,7 +118,6 @@ export default class PokemonData {
|
|||||||
this.pauseEvolutions = !!source.pauseEvolutions;
|
this.pauseEvolutions = !!source.pauseEvolutions;
|
||||||
this.pokerus = !!source.pokerus;
|
this.pokerus = !!source.pokerus;
|
||||||
this.usedTMs = source.usedTMs ?? [];
|
this.usedTMs = source.usedTMs ?? [];
|
||||||
this.evoCounter = source.evoCounter ?? 0;
|
|
||||||
this.teraType = source.teraType as PokemonType;
|
this.teraType = source.teraType as PokemonType;
|
||||||
this.isTerastallized = !!source.isTerastallized;
|
this.isTerastallized = !!source.isTerastallized;
|
||||||
this.stellarTypesBoosted = source.stellarTypesBoosted ?? [];
|
this.stellarTypesBoosted = source.stellarTypesBoosted ?? [];
|
||||||
|
@ -3,7 +3,7 @@ import type { SystemSaveData, SessionSaveData } from "#app/system/game-data";
|
|||||||
import { defaultStarterSpecies } from "#app/constants";
|
import { defaultStarterSpecies } from "#app/constants";
|
||||||
import { AbilityAttr } from "#enums/ability-attr";
|
import { AbilityAttr } from "#enums/ability-attr";
|
||||||
import { DexAttr } from "#enums/dex-attr";
|
import { DexAttr } from "#enums/dex-attr";
|
||||||
import { allSpecies } from "#app/data/pokemon-species";
|
import { allSpecies } from "#app/data/data-lists";
|
||||||
import { CustomPokemonData } from "#app/data/custom-pokemon-data";
|
import { CustomPokemonData } from "#app/data/custom-pokemon-data";
|
||||||
import { isNullOrUndefined } from "#app/utils/common";
|
import { isNullOrUndefined } from "#app/utils/common";
|
||||||
import type { SystemSaveMigrator } from "#app/@types/SystemSaveMigrator";
|
import type { SystemSaveMigrator } from "#app/@types/SystemSaveMigrator";
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import type { SessionSaveMigrator } from "#app/@types/SessionSaveMigrator";
|
import type { SessionSaveMigrator } from "#app/@types/SessionSaveMigrator";
|
||||||
import type { SystemSaveMigrator } from "#app/@types/SystemSaveMigrator";
|
import type { SystemSaveMigrator } from "#app/@types/SystemSaveMigrator";
|
||||||
import { getPokemonSpecies, getPokemonSpeciesForm } from "#app/data/pokemon-species";
|
import { getPokemonSpeciesForm } from "#app/data/pokemon-species";
|
||||||
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
import { globalScene } from "#app/global-scene";
|
import { globalScene } from "#app/global-scene";
|
||||||
import type { SessionSaveData, SystemSaveData } from "#app/system/game-data";
|
import type { SessionSaveData, SystemSaveData } from "#app/system/game-data";
|
||||||
import { DexAttr } from "#enums/dex-attr";
|
import { DexAttr } from "#enums/dex-attr";
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import type { SystemSaveMigrator } from "#app/@types/SystemSaveMigrator";
|
import type { SystemSaveMigrator } from "#app/@types/SystemSaveMigrator";
|
||||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
import type { SystemSaveData } from "#app/system/game-data";
|
import type { SystemSaveData } from "#app/system/game-data";
|
||||||
import { DexAttr } from "#enums/dex-attr";
|
import { DexAttr } from "#enums/dex-attr";
|
||||||
import { SpeciesId } from "#enums/species-id";
|
import { SpeciesId } from "#enums/species-id";
|
||||||
|
@ -5,7 +5,7 @@ import { getEnumValues, getEnumKeys, fixedInt, randSeedShuffle } from "#app/util
|
|||||||
import type { IEggOptions } from "../data/egg";
|
import type { IEggOptions } from "../data/egg";
|
||||||
import { Egg, getLegendaryGachaSpeciesForTimestamp } from "../data/egg";
|
import { Egg, getLegendaryGachaSpeciesForTimestamp } from "../data/egg";
|
||||||
import { VoucherType, getVoucherTypeIcon } from "../system/voucher";
|
import { VoucherType, getVoucherTypeIcon } from "../system/voucher";
|
||||||
import { getPokemonSpecies } from "../data/pokemon-species";
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
import { addWindow } from "./ui-theme";
|
import { addWindow } from "./ui-theme";
|
||||||
import { Tutorial, handleTutorial } from "../tutorial";
|
import { Tutorial, handleTutorial } from "../tutorial";
|
||||||
import { Button } from "#enums/buttons";
|
import { Button } from "#enums/buttons";
|
||||||
|
@ -16,7 +16,9 @@ import { pokemonFormChanges } from "#app/data/pokemon-forms";
|
|||||||
import type { LevelMoves } from "#app/data/balance/pokemon-level-moves";
|
import type { LevelMoves } from "#app/data/balance/pokemon-level-moves";
|
||||||
import { pokemonFormLevelMoves, pokemonSpeciesLevelMoves } from "#app/data/balance/pokemon-level-moves";
|
import { pokemonFormLevelMoves, pokemonSpeciesLevelMoves } from "#app/data/balance/pokemon-level-moves";
|
||||||
import type PokemonSpecies from "#app/data/pokemon-species";
|
import type PokemonSpecies from "#app/data/pokemon-species";
|
||||||
import { allSpecies, getPokemonSpecies, getPokemonSpeciesForm, normalForm } from "#app/data/pokemon-species";
|
import { getPokemonSpeciesForm, normalForm } from "#app/data/pokemon-species";
|
||||||
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
|
import { allSpecies } from "#app/data/data-lists";
|
||||||
import { getStarterValueFriendshipCap, speciesStarterCosts } from "#app/data/balance/starters";
|
import { getStarterValueFriendshipCap, speciesStarterCosts } from "#app/data/balance/starters";
|
||||||
import { starterPassiveAbilities } from "#app/data/balance/passives";
|
import { starterPassiveAbilities } from "#app/data/balance/passives";
|
||||||
import { PokemonType } from "#enums/pokemon-type";
|
import { PokemonType } from "#enums/pokemon-type";
|
||||||
|
@ -8,7 +8,7 @@ import { UiMode } from "#enums/ui-mode";
|
|||||||
import { FilterTextRow } from "./filter-text";
|
import { FilterTextRow } from "./filter-text";
|
||||||
import { allAbilities } from "#app/data/data-lists";
|
import { allAbilities } from "#app/data/data-lists";
|
||||||
import { allMoves } from "#app/data/data-lists";
|
import { allMoves } from "#app/data/data-lists";
|
||||||
import { allSpecies } from "#app/data/pokemon-species";
|
import { allSpecies } from "#app/data/data-lists";
|
||||||
import i18next from "i18next";
|
import i18next from "i18next";
|
||||||
|
|
||||||
export default class PokedexScanUiHandler extends FormModalUiHandler {
|
export default class PokedexScanUiHandler extends FormModalUiHandler {
|
||||||
|
@ -7,7 +7,8 @@ import { speciesEggMoves } from "#app/data/balance/egg-moves";
|
|||||||
import { pokemonFormLevelMoves, pokemonSpeciesLevelMoves } from "#app/data/balance/pokemon-level-moves";
|
import { pokemonFormLevelMoves, pokemonSpeciesLevelMoves } from "#app/data/balance/pokemon-level-moves";
|
||||||
import type { PokemonForm } from "#app/data/pokemon-species";
|
import type { PokemonForm } from "#app/data/pokemon-species";
|
||||||
import type PokemonSpecies from "#app/data/pokemon-species";
|
import type PokemonSpecies from "#app/data/pokemon-species";
|
||||||
import { allSpecies, getPokemonSpeciesForm, getPokerusStarters, normalForm } from "#app/data/pokemon-species";
|
import { getPokemonSpeciesForm, getPokerusStarters, normalForm } from "#app/data/pokemon-species";
|
||||||
|
import { allSpecies } from "#app/data/data-lists";
|
||||||
import { getStarterValueFriendshipCap, speciesStarterCosts, POKERUS_STARTER_COUNT } from "#app/data/balance/starters";
|
import { getStarterValueFriendshipCap, speciesStarterCosts, POKERUS_STARTER_COUNT } from "#app/data/balance/starters";
|
||||||
import { catchableSpecies } from "#app/data/balance/biomes";
|
import { catchableSpecies } from "#app/data/balance/biomes";
|
||||||
import { PokemonType } from "#enums/pokemon-type";
|
import { PokemonType } from "#enums/pokemon-type";
|
||||||
|
@ -19,7 +19,8 @@ import { pokemonFormChanges } from "#app/data/pokemon-forms";
|
|||||||
import type { LevelMoves } from "#app/data/balance/pokemon-level-moves";
|
import type { LevelMoves } from "#app/data/balance/pokemon-level-moves";
|
||||||
import { pokemonFormLevelMoves, pokemonSpeciesLevelMoves } from "#app/data/balance/pokemon-level-moves";
|
import { pokemonFormLevelMoves, pokemonSpeciesLevelMoves } from "#app/data/balance/pokemon-level-moves";
|
||||||
import type PokemonSpecies from "#app/data/pokemon-species";
|
import type PokemonSpecies from "#app/data/pokemon-species";
|
||||||
import { allSpecies, getPokemonSpeciesForm, getPokerusStarters } from "#app/data/pokemon-species";
|
import { getPokemonSpeciesForm, getPokerusStarters } from "#app/data/pokemon-species";
|
||||||
|
import { allSpecies } from "#app/data/data-lists";
|
||||||
import { getStarterValueFriendshipCap, speciesStarterCosts, POKERUS_STARTER_COUNT } from "#app/data/balance/starters";
|
import { getStarterValueFriendshipCap, speciesStarterCosts, POKERUS_STARTER_COUNT } from "#app/data/balance/starters";
|
||||||
import { PokemonType } from "#enums/pokemon-type";
|
import { PokemonType } from "#enums/pokemon-type";
|
||||||
import { GameModes } from "#enums/game-modes";
|
import { GameModes } from "#enums/game-modes";
|
||||||
|
@ -9,7 +9,7 @@ import { version } from "../../package.json";
|
|||||||
import { pokerogueApi } from "#app/plugins/api/pokerogue-api";
|
import { pokerogueApi } from "#app/plugins/api/pokerogue-api";
|
||||||
import { globalScene } from "#app/global-scene";
|
import { globalScene } from "#app/global-scene";
|
||||||
import type { SpeciesId } from "#enums/species-id";
|
import type { SpeciesId } from "#enums/species-id";
|
||||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
import { PlayerGender } from "#enums/player-gender";
|
import { PlayerGender } from "#enums/player-gender";
|
||||||
import { timedEventManager } from "#app/global-event-manager";
|
import { timedEventManager } from "#app/global-event-manager";
|
||||||
|
|
||||||
|
21
src/utils/pokemon-utils.ts
Normal file
21
src/utils/pokemon-utils.ts
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
import { allSpecies } from "#app/data/data-lists";
|
||||||
|
import type PokemonSpecies from "#app/data/pokemon-species";
|
||||||
|
import type { SpeciesId } from "#enums/species-id";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the {@linkcode PokemonSpecies} object associated with the {@linkcode SpeciesId} enum given
|
||||||
|
* @param species - The {@linkcode SpeciesId} to fetch.
|
||||||
|
* If an array of `SpeciesId`s is passed (such as for named trainer spawn pools),
|
||||||
|
* one will be selected at random.
|
||||||
|
* @returns The associated {@linkcode PokemonSpecies} object
|
||||||
|
*/
|
||||||
|
export function getPokemonSpecies(species: SpeciesId | SpeciesId[]): PokemonSpecies {
|
||||||
|
if (Array.isArray(species)) {
|
||||||
|
// TODO: this RNG roll should not be handled by this function
|
||||||
|
species = species[Math.floor(Math.random() * species.length)];
|
||||||
|
}
|
||||||
|
if (species >= 2000) {
|
||||||
|
return allSpecies.find(s => s.speciesId === species)!; // TODO: is this bang correct?
|
||||||
|
}
|
||||||
|
return allSpecies[species - 1];
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
import { allSpecies } from "#app/data/pokemon-species";
|
import { allSpecies } from "#app/data/data-lists";
|
||||||
import { Stat } from "#enums/stat";
|
import { Stat } from "#enums/stat";
|
||||||
import { getGameMode } from "#app/game-mode";
|
import { getGameMode } from "#app/game-mode";
|
||||||
import { GameModes } from "#enums/game-modes";
|
import { GameModes } from "#enums/game-modes";
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest";
|
import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest";
|
||||||
import GameManager from "#test/testUtils/gameManager";
|
import GameManager from "#test/testUtils/gameManager";
|
||||||
import { SpeciesId } from "#enums/species-id";
|
import { SpeciesId } from "#enums/species-id";
|
||||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
import { AbilityId } from "#enums/ability-id";
|
import { AbilityId } from "#enums/ability-id";
|
||||||
import { MoveId } from "#enums/move-id";
|
import { MoveId } from "#enums/move-id";
|
||||||
import { EFFECTIVE_STATS } from "#app/enums/stat";
|
import { EFFECTIVE_STATS } from "#app/enums/stat";
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { speciesEggTiers } from "#app/data/balance/species-egg-tiers";
|
import { speciesEggTiers } from "#app/data/balance/species-egg-tiers";
|
||||||
import { Egg, getLegendaryGachaSpeciesForTimestamp, getValidLegendaryGachaSpecies } from "#app/data/egg";
|
import { Egg, getLegendaryGachaSpeciesForTimestamp, getValidLegendaryGachaSpecies } from "#app/data/egg";
|
||||||
import { allSpecies } from "#app/data/pokemon-species";
|
import { allSpecies } from "#app/data/data-lists";
|
||||||
import { EggSourceType } from "#app/enums/egg-source-types";
|
import { EggSourceType } from "#app/enums/egg-source-types";
|
||||||
import { EggTier } from "#app/enums/egg-type";
|
import { EggTier } from "#app/enums/egg-type";
|
||||||
import { VariantTier } from "#app/enums/variant-tier";
|
import { VariantTier } from "#app/enums/variant-tier";
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import { allMoves } from "#app/data/data-lists";
|
import { allMoves } from "#app/data/data-lists";
|
||||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
import { TrainerSlot } from "#enums/trainer-slot";
|
import { TrainerSlot } from "#enums/trainer-slot";
|
||||||
import { PokemonType } from "#enums/pokemon-type";
|
import { PokemonType } from "#enums/pokemon-type";
|
||||||
import { AbilityId } from "#enums/ability-id";
|
import { AbilityId } from "#enums/ability-id";
|
||||||
|
@ -13,7 +13,7 @@ import { AnOfferYouCantRefuseEncounter } from "#app/data/mystery-encounters/enco
|
|||||||
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
|
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
|
||||||
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
|
import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
|
||||||
import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils";
|
import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils";
|
||||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
import { MoveId } from "#enums/move-id";
|
import { MoveId } from "#enums/move-id";
|
||||||
import { ShinyRateBoosterModifier } from "#app/modifier/modifier";
|
import { ShinyRateBoosterModifier } from "#app/modifier/modifier";
|
||||||
import { SelectModifierPhase } from "#app/phases/select-modifier-phase";
|
import { SelectModifierPhase } from "#app/phases/select-modifier-phase";
|
||||||
|
@ -4,7 +4,7 @@ import { MysteryEncounterType } from "#app/enums/mystery-encounter-type";
|
|||||||
import { SpeciesId } from "#enums/species-id";
|
import { SpeciesId } from "#enums/species-id";
|
||||||
import GameManager from "#test/testUtils/gameManager";
|
import GameManager from "#test/testUtils/gameManager";
|
||||||
import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
|
import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
|
||||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
import * as BattleAnims from "#app/data/battle-anims";
|
import * as BattleAnims from "#app/data/battle-anims";
|
||||||
import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils";
|
import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils";
|
||||||
import { generateModifierType } from "#app/data/mystery-encounters/utils/encounter-phase-utils";
|
import { generateModifierType } from "#app/data/mystery-encounters/utils/encounter-phase-utils";
|
||||||
|
@ -6,7 +6,7 @@ import GameManager from "#test/testUtils/gameManager";
|
|||||||
import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
|
import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
|
||||||
import { FieryFalloutEncounter } from "#app/data/mystery-encounters/encounters/fiery-fallout-encounter";
|
import { FieryFalloutEncounter } from "#app/data/mystery-encounters/encounters/fiery-fallout-encounter";
|
||||||
import { Gender } from "#app/data/gender";
|
import { Gender } from "#app/data/gender";
|
||||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
import * as BattleAnims from "#app/data/battle-anims";
|
import * as BattleAnims from "#app/data/battle-anims";
|
||||||
import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils";
|
import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils";
|
||||||
import {
|
import {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import { LostAtSeaEncounter } from "#app/data/mystery-encounters/encounters/lost-at-sea-encounter";
|
import { LostAtSeaEncounter } from "#app/data/mystery-encounters/encounters/lost-at-sea-encounter";
|
||||||
import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters";
|
import * as MysteryEncounters from "#app/data/mystery-encounters/mystery-encounters";
|
||||||
import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils";
|
import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils";
|
||||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
import { BiomeId } from "#enums/biome-id";
|
import { BiomeId } from "#enums/biome-id";
|
||||||
import { MysteryEncounterType } from "#app/enums/mystery-encounter-type";
|
import { MysteryEncounterType } from "#app/enums/mystery-encounter-type";
|
||||||
import { SpeciesId } from "#enums/species-id";
|
import { SpeciesId } from "#enums/species-id";
|
||||||
|
@ -4,7 +4,7 @@ import { MysteryEncounterType } from "#enums/mystery-encounter-type";
|
|||||||
import { SpeciesId } from "#enums/species-id";
|
import { SpeciesId } from "#enums/species-id";
|
||||||
import GameManager from "#test/testUtils/gameManager";
|
import GameManager from "#test/testUtils/gameManager";
|
||||||
import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
|
import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
|
||||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
import * as BattleAnims from "#app/data/battle-anims";
|
import * as BattleAnims from "#app/data/battle-anims";
|
||||||
import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils";
|
import * as EncounterPhaseUtils from "#app/data/mystery-encounters/utils/encounter-phase-utils";
|
||||||
import {
|
import {
|
||||||
|
@ -17,7 +17,7 @@ import MysteryEncounter from "#app/data/mystery-encounters/mystery-encounter";
|
|||||||
import { TrainerType } from "#enums/trainer-type";
|
import { TrainerType } from "#enums/trainer-type";
|
||||||
import { Nature } from "#enums/nature";
|
import { Nature } from "#enums/nature";
|
||||||
import { MoveId } from "#enums/move-id";
|
import { MoveId } from "#enums/move-id";
|
||||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
import { TheWinstrateChallengeEncounter } from "#app/data/mystery-encounters/encounters/the-winstrate-challenge-encounter";
|
import { TheWinstrateChallengeEncounter } from "#app/data/mystery-encounters/encounters/the-winstrate-challenge-encounter";
|
||||||
import { Status } from "#app/data/status-effect";
|
import { Status } from "#app/data/status-effect";
|
||||||
import { MysteryEncounterRewardsPhase } from "#app/phases/mystery-encounter-phases";
|
import { MysteryEncounterRewardsPhase } from "#app/phases/mystery-encounter-phases";
|
||||||
|
@ -8,7 +8,7 @@ import {
|
|||||||
type EnemyPokemonConfig,
|
type EnemyPokemonConfig,
|
||||||
generateModifierType,
|
generateModifierType,
|
||||||
} from "#app/data/mystery-encounters/utils/encounter-phase-utils";
|
} from "#app/data/mystery-encounters/utils/encounter-phase-utils";
|
||||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
import { BiomeId } from "#enums/biome-id";
|
import { BiomeId } from "#enums/biome-id";
|
||||||
import { MysteryEncounterType } from "#app/enums/mystery-encounter-type";
|
import { MysteryEncounterType } from "#app/enums/mystery-encounter-type";
|
||||||
import { SpeciesId } from "#enums/species-id";
|
import { SpeciesId } from "#enums/species-id";
|
||||||
|
@ -21,7 +21,7 @@ import { CommandPhase } from "#app/phases/command-phase";
|
|||||||
import { UncommonBreedEncounter } from "#app/data/mystery-encounters/encounters/uncommon-breed-encounter";
|
import { UncommonBreedEncounter } from "#app/data/mystery-encounters/encounters/uncommon-breed-encounter";
|
||||||
import { MovePhase } from "#app/phases/move-phase";
|
import { MovePhase } from "#app/phases/move-phase";
|
||||||
import { speciesEggMoves } from "#app/data/balance/egg-moves";
|
import { speciesEggMoves } from "#app/data/balance/egg-moves";
|
||||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
import { BerryType } from "#enums/berry-type";
|
import { BerryType } from "#enums/berry-type";
|
||||||
import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase";
|
import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase";
|
||||||
import { Stat } from "#enums/stat";
|
import { Stat } from "#enums/stat";
|
||||||
|
@ -14,7 +14,7 @@ import {
|
|||||||
getRandomSpeciesByStarterCost,
|
getRandomSpeciesByStarterCost,
|
||||||
koPlayerPokemon,
|
koPlayerPokemon,
|
||||||
} from "#app/data/mystery-encounters/utils/encounter-pokemon-utils";
|
} from "#app/data/mystery-encounters/utils/encounter-pokemon-utils";
|
||||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
import { PokemonType } from "#enums/pokemon-type";
|
import { PokemonType } from "#enums/pokemon-type";
|
||||||
import { MessagePhase } from "#app/phases/message-phase";
|
import { MessagePhase } from "#app/phases/message-phase";
|
||||||
import GameManager from "#test/testUtils/gameManager";
|
import GameManager from "#test/testUtils/gameManager";
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import type BattleScene from "#app/battle-scene";
|
import type BattleScene from "#app/battle-scene";
|
||||||
import { getPokemonSpecies } from "#app/data/pokemon-species";
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
import { PlayerPokemon } from "#app/field/pokemon";
|
import { PlayerPokemon } from "#app/field/pokemon";
|
||||||
import { ModifierTier } from "#enums/modifier-tier";
|
import { ModifierTier } from "#enums/modifier-tier";
|
||||||
import type { CustomModifierSettings } from "#app/modifier/modifier-type";
|
import type { CustomModifierSettings } from "#app/modifier/modifier-type";
|
||||||
|
@ -3,7 +3,8 @@ import { BattleType } from "#enums/battle-type";
|
|||||||
import type BattleScene from "#app/battle-scene";
|
import type BattleScene from "#app/battle-scene";
|
||||||
import { getDailyRunStarters } from "#app/data/daily-run";
|
import { getDailyRunStarters } from "#app/data/daily-run";
|
||||||
import { Gender } from "#app/data/gender";
|
import { Gender } from "#app/data/gender";
|
||||||
import { getPokemonSpecies, getPokemonSpeciesForm } from "#app/data/pokemon-species";
|
import { getPokemonSpeciesForm } from "#app/data/pokemon-species";
|
||||||
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
import { PlayerPokemon } from "#app/field/pokemon";
|
import { PlayerPokemon } from "#app/field/pokemon";
|
||||||
import { getGameMode } from "#app/game-mode";
|
import { getGameMode } from "#app/game-mode";
|
||||||
import { GameModes } from "#enums/game-modes";
|
import { GameModes } from "#enums/game-modes";
|
||||||
|
@ -6,7 +6,9 @@ import { FilterTextRow } from "#app/ui/filter-text";
|
|||||||
import { allAbilities } from "#app/data/data-lists";
|
import { allAbilities } from "#app/data/data-lists";
|
||||||
import { AbilityId } from "#enums/ability-id";
|
import { AbilityId } from "#enums/ability-id";
|
||||||
import { SpeciesId } from "#enums/species-id";
|
import { SpeciesId } from "#enums/species-id";
|
||||||
import { allSpecies, getPokemonSpecies, type PokemonForm } from "#app/data/pokemon-species";
|
import type { PokemonForm } from "#app/data/pokemon-species";
|
||||||
|
import { getPokemonSpecies } from "#app/utils/pokemon-utils";
|
||||||
|
import { allSpecies } from "#app/data/data-lists";
|
||||||
import { Button } from "#enums/buttons";
|
import { Button } from "#enums/buttons";
|
||||||
import { DropDownColumn } from "#enums/drop-down-column";
|
import { DropDownColumn } from "#enums/drop-down-column";
|
||||||
import type PokemonSpecies from "#app/data/pokemon-species";
|
import type PokemonSpecies from "#app/data/pokemon-species";
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { Gender } from "#app/data/gender";
|
import { Gender } from "#app/data/gender";
|
||||||
import { Nature } from "#enums/nature";
|
import { Nature } from "#enums/nature";
|
||||||
import { allSpecies } from "#app/data/pokemon-species";
|
import { allSpecies } from "#app/data/data-lists";
|
||||||
import { GameModes } from "#enums/game-modes";
|
import { GameModes } from "#enums/game-modes";
|
||||||
import { EncounterPhase } from "#app/phases/encounter-phase";
|
import { EncounterPhase } from "#app/phases/encounter-phase";
|
||||||
import { SelectStarterPhase } from "#app/phases/select-starter-phase";
|
import { SelectStarterPhase } from "#app/phases/select-starter-phase";
|
||||||
|
Loading…
Reference in New Issue
Block a user