Move trainer-config.ts

This commit is contained in:
Sirz Benjie 2025-03-28 19:03:23 -05:00
parent fac20ca97a
commit 0389894b4b
No known key found for this signature in database
GPG Key ID: 4A524B4D196C759E
34 changed files with 514 additions and 35 deletions

View File

@ -72,8 +72,8 @@ import { GameModes, getGameMode } from "#app/game-mode";
import FieldSpritePipeline from "#app/pipelines/field-sprite"; import FieldSpritePipeline from "#app/pipelines/field-sprite";
import SpritePipeline from "#app/pipelines/sprite"; import SpritePipeline from "#app/pipelines/sprite";
import PartyExpBar from "#app/ui/party-exp-bar"; import PartyExpBar from "#app/ui/party-exp-bar";
import type { TrainerSlot } from "#app/data/trainer-config"; import type { TrainerSlot } from "#app/data/trainers/trainer-config";
import { trainerConfigs } from "#app/data/trainer-config"; import { trainerConfigs } from "#app/data/trainers/trainer-config";
import Trainer, { TrainerVariant } from "#app/field/trainer"; import Trainer, { TrainerVariant } from "#app/field/trainer";
import type TrainerData from "#app/system/trainer-data"; import type TrainerData from "#app/system/trainer-data";
import SoundFade from "phaser3-rex-plugins/plugins/soundfade"; import SoundFade from "phaser3-rex-plugins/plugins/soundfade";

View File

@ -5,7 +5,7 @@ import Trainer, { TrainerVariant } from "./field/trainer";
import type { GameMode } from "./game-mode"; import type { GameMode } from "./game-mode";
import { MoneyMultiplierModifier, PokemonHeldItemModifier } from "./modifier/modifier"; import { MoneyMultiplierModifier, PokemonHeldItemModifier } from "./modifier/modifier";
import type { PokeballType } from "#enums/pokeball"; import type { PokeballType } from "#enums/pokeball";
import { trainerConfigs } from "#app/data/trainer-config"; import { trainerConfigs } from "#app/data/trainers/trainer-config";
import { SpeciesFormKey } from "#enums/species-form-key"; import { SpeciesFormKey } from "#enums/species-form-key";
import type { EnemyPokemon, PlayerPokemon, TurnMove } from "#app/field/pokemon"; import type { EnemyPokemon, PlayerPokemon, TurnMove } from "#app/field/pokemon";
import type Pokemon from "#app/field/pokemon"; import type Pokemon from "#app/field/pokemon";

View File

@ -1,6 +1,6 @@
import { BattleSpec } from "#enums/battle-spec"; import { BattleSpec } from "#enums/battle-spec";
import { TrainerType } from "#enums/trainer-type"; import { TrainerType } from "#enums/trainer-type";
import { trainerConfigs } from "./trainer-config"; import { trainerConfigs } from "./trainers/trainer-config";
export interface TrainerTypeMessages { export interface TrainerTypeMessages {
encounter?: string | string[]; encounter?: string | string[];

View File

@ -6,7 +6,7 @@ import {
setEncounterRewards, setEncounterRewards,
transitionMysteryEncounterIntroVisuals, transitionMysteryEncounterIntroVisuals,
} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; } from "#app/data/mystery-encounters/utils/encounter-phase-utils";
import { trainerConfigs } from "#app/data/trainer-config"; import { trainerConfigs } from "#app/data/trainers/trainer-config";
import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { MysteryEncounterType } from "#enums/mystery-encounter-type";
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";

View File

@ -31,7 +31,7 @@ import {
catchPokemon, catchPokemon,
getHighestLevelPlayerPokemon, getHighestLevelPlayerPokemon,
} from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils";
import { TrainerSlot } from "#app/data/trainer-config"; import { TrainerSlot } from "#app/data/trainers/trainer-config";
import { PokeballType } from "#enums/pokeball"; import { PokeballType } from "#enums/pokeball";
import type HeldModifierConfig from "#app/interfaces/held-modifier-config"; import type HeldModifierConfig from "#app/interfaces/held-modifier-config";
import type { BerryType } from "#enums/berry-type"; import type { BerryType } from "#enums/berry-type";

View File

@ -15,7 +15,7 @@ import {
TrainerPartyCompoundTemplate, TrainerPartyCompoundTemplate,
TrainerPartyTemplate, TrainerPartyTemplate,
TrainerSlot, TrainerSlot,
} from "#app/data/trainer-config"; } from "#app/data/trainers/trainer-config";
import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { MysteryEncounterType } from "#enums/mystery-encounter-type";
import { PartyMemberStrength } from "#enums/party-member-strength"; import { PartyMemberStrength } from "#enums/party-member-strength";
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";

View File

@ -8,7 +8,7 @@ import {
setEncounterRewards, setEncounterRewards,
transitionMysteryEncounterIntroVisuals, transitionMysteryEncounterIntroVisuals,
} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; } from "#app/data/mystery-encounters/utils/encounter-phase-utils";
import { trainerConfigs, TrainerPartyCompoundTemplate, TrainerPartyTemplate } from "#app/data/trainer-config"; import { trainerConfigs, TrainerPartyCompoundTemplate, TrainerPartyTemplate } from "#app/data/trainers/trainer-config";
import { ModifierTier } from "#app/modifier/modifier-tier"; import { ModifierTier } from "#app/modifier/modifier-tier";
import type { PokemonHeldItemModifierType } from "#app/modifier/modifier-type"; import type { PokemonHeldItemModifierType } from "#app/modifier/modifier-type";
import { ModifierPoolType, modifierTypes } from "#app/modifier/modifier-type"; import { ModifierPoolType, modifierTypes } from "#app/modifier/modifier-type";

View File

@ -20,7 +20,7 @@ import {
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/data/pokemon-species";
import { TrainerSlot } from "#app/data/trainer-config"; import { TrainerSlot } from "#app/data/trainers/trainer-config";
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 { EnemyPokemon, PokemonMove } from "#app/field/pokemon"; import { EnemyPokemon, PokemonMove } from "#app/field/pokemon";

View File

@ -10,7 +10,7 @@ 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 { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option";
import { TrainerSlot } from "#app/data/trainer-config"; import { TrainerSlot } from "#app/data/trainers/trainer-config";
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 "#app/field/pokemon"; import { FieldPosition } from "#app/field/pokemon";

View File

@ -3,7 +3,7 @@ import {
selectPokemonForOption, selectPokemonForOption,
setEncounterRewards, setEncounterRewards,
} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; } from "#app/data/mystery-encounters/utils/encounter-phase-utils";
import { TrainerSlot } from "#app/data/trainer-config"; import { TrainerSlot } from "#app/data/trainers/trainer-config";
import { ModifierTier } from "#app/modifier/modifier-tier"; import { ModifierTier } from "#app/modifier/modifier-tier";
import { MusicPreference } from "#app/system/settings/settings"; import { MusicPreference } from "#app/system/settings/settings";
import type { ModifierTypeOption } from "#app/modifier/modifier-type"; import type { ModifierTypeOption } from "#app/modifier/modifier-type";

View File

@ -8,7 +8,7 @@ import {
TrainerPartyCompoundTemplate, TrainerPartyCompoundTemplate,
TrainerPartyTemplate, TrainerPartyTemplate,
trainerPartyTemplates, trainerPartyTemplates,
} from "#app/data/trainer-config"; } from "#app/data/trainers/trainer-config";
import { ModifierTier } from "#app/modifier/modifier-tier"; import { ModifierTier } from "#app/modifier/modifier-tier";
import { modifierTypes } from "#app/modifier/modifier-type"; import { modifierTypes } from "#app/modifier/modifier-type";
import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { MysteryEncounterType } from "#enums/mystery-encounter-type";

View File

@ -10,7 +10,7 @@ import type MysteryEncounter from "#app/data/mystery-encounters/mystery-encounte
import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter"; import { MysteryEncounterBuilder } from "#app/data/mystery-encounters/mystery-encounter";
import type MysteryEncounterOption from "#app/data/mystery-encounters/mystery-encounter-option"; import type MysteryEncounterOption from "#app/data/mystery-encounters/mystery-encounter-option";
import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option"; import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option";
import { TrainerSlot } from "#app/data/trainer-config"; import { TrainerSlot } from "#app/data/trainers/trainer-config";
import { HiddenAbilityRateBoosterModifier, IvScannerModifier } from "#app/modifier/modifier"; import { HiddenAbilityRateBoosterModifier, IvScannerModifier } from "#app/modifier/modifier";
import type { EnemyPokemon } from "#app/field/pokemon"; import type { EnemyPokemon } from "#app/field/pokemon";
import { PokeballType } from "#enums/pokeball"; import { PokeballType } from "#enums/pokeball";

View File

@ -24,7 +24,7 @@ import { Biome } from "#enums/biome";
import { getBiomeKey } from "#app/field/arena"; import { getBiomeKey } from "#app/field/arena";
import { PokemonType } from "#enums/pokemon-type"; import { PokemonType } from "#enums/pokemon-type";
import { getPartyLuckValue, modifierTypes } from "#app/modifier/modifier-type"; import { getPartyLuckValue, modifierTypes } from "#app/modifier/modifier-type";
import { TrainerSlot } from "#app/data/trainer-config"; import { TrainerSlot } from "#app/data/trainers/trainer-config";
import { BattlerTagType } from "#enums/battler-tag-type"; import { BattlerTagType } from "#enums/battler-tag-type";
import { getPokemonNameWithAffix } from "#app/messages"; import { getPokemonNameWithAffix } from "#app/messages";
import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase"; import { StatStageChangePhase } from "#app/phases/stat-stage-change-phase";

View File

@ -4,7 +4,7 @@ import {
initBattleWithEnemyConfig, initBattleWithEnemyConfig,
setEncounterRewards, setEncounterRewards,
} from "#app/data/mystery-encounters/utils/encounter-phase-utils"; } from "#app/data/mystery-encounters/utils/encounter-phase-utils";
import { trainerConfigs } from "#app/data/trainer-config"; import { trainerConfigs } from "#app/data/trainers/trainer-config";
import { MysteryEncounterType } from "#enums/mystery-encounter-type"; import { MysteryEncounterType } from "#enums/mystery-encounter-type";
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import { randSeedShuffle } from "#app/utils"; import { randSeedShuffle } from "#app/utils";

View File

@ -41,7 +41,7 @@ import { TrainerType } from "#enums/trainer-type";
import PokemonData from "#app/system/pokemon-data"; import PokemonData from "#app/system/pokemon-data";
import { Nature } from "#enums/nature"; import { Nature } from "#enums/nature";
import type HeldModifierConfig from "#app/interfaces/held-modifier-config"; import type HeldModifierConfig from "#app/interfaces/held-modifier-config";
import { trainerConfigs, TrainerPartyTemplate } from "#app/data/trainer-config"; import { trainerConfigs, TrainerPartyTemplate } from "#app/data/trainers/trainer-config";
import { PartyMemberStrength } from "#enums/party-member-strength"; import { PartyMemberStrength } from "#enums/party-member-strength";
/** i18n namespace for encounter */ /** i18n namespace for encounter */

View File

@ -43,8 +43,8 @@ import type { Moves } from "#enums/moves";
import { initMoveAnim, loadMoveAnimAssets } from "#app/data/battle-anims"; import { initMoveAnim, loadMoveAnimAssets } from "#app/data/battle-anims";
import { MysteryEncounterMode } from "#enums/mystery-encounter-mode"; import { MysteryEncounterMode } from "#enums/mystery-encounter-mode";
import { Status } from "#app/data/status-effect"; import { Status } from "#app/data/status-effect";
import type { TrainerConfig } from "#app/data/trainer-config"; import type { TrainerConfig } from "#app/data/trainers/trainer-config";
import { trainerConfigs, TrainerSlot } from "#app/data/trainer-config"; import { trainerConfigs, TrainerSlot } from "#app/data/trainers/trainer-config";
import type PokemonSpecies from "#app/data/pokemon-species"; import type PokemonSpecies from "#app/data/pokemon-species";
import type { IEggOptions } from "#app/data/egg"; import type { IEggOptions } from "#app/data/egg";
import { Egg } from "#app/data/egg"; import { Egg } from "#app/data/egg";

View File

@ -0,0 +1,436 @@
import type { TrainerTierPools } from "./typedefs";
import { TrainerPoolTier } from "#enums/trainer-pool-tier";
import { Species } from "#enums/species";
/** Team Rocket's admin trainer pool. */
const ROCKET: TrainerTierPools = {
[TrainerPoolTier.COMMON]: [
Species.RATICATE,
Species.ARBOK,
Species.VILEPLUME,
Species.ARCANINE,
Species.GENGAR,
Species.HYPNO,
Species.ELECTRODE,
Species.EXEGGUTOR,
Species.CUBONE,
Species.KOFFING,
Species.GYARADOS,
Species.CROBAT,
Species.STEELIX,
Species.HOUNDOOM,
Species.HONCHKROW,
],
[TrainerPoolTier.UNCOMMON]: [
Species.OMASTAR,
Species.KABUTOPS,
Species.MAGNEZONE,
Species.ELECTIVIRE,
Species.MAGMORTAR,
Species.PORYGON_Z,
Species.ANNIHILAPE,
Species.ALOLA_SANDSLASH,
Species.ALOLA_PERSIAN,
Species.ALOLA_GOLEM,
Species.ALOLA_MUK,
Species.PALDEA_TAUROS,
],
[TrainerPoolTier.RARE]: [Species.DRAGONITE, Species.TYRANITAR],
};
/** Team Magma's admin trainer pool */
const MAGMA: TrainerTierPools = {
[TrainerPoolTier.COMMON]: [
Species.ARCANINE,
Species.MAGCARGO,
Species.HOUNDOOM,
Species.TORKOAL,
Species.SOLROCK,
Species.CLAYDOL,
Species.HIPPOWDON,
Species.MAGMORTAR,
Species.GLISCOR,
Species.COALOSSAL,
],
[TrainerPoolTier.UNCOMMON]: [
Species.AGGRON,
Species.FLYGON,
Species.CRADILY,
Species.ARMALDO,
Species.RHYPERIOR,
Species.TURTONATOR,
Species.SANDACONDA,
Species.TOEDSCRUEL,
Species.HISUI_ARCANINE,
],
[TrainerPoolTier.RARE]: [Species.CHARCADET, Species.SCOVILLAIN],
};
const AQUA: TrainerTierPools = {
[TrainerPoolTier.COMMON]: [
Species.TENTACRUEL,
Species.LANTURN,
Species.AZUMARILL,
Species.QUAGSIRE,
Species.OCTILLERY,
Species.LUDICOLO,
Species.PELIPPER,
Species.WAILORD,
Species.WHISCASH,
Species.CRAWDAUNT,
Species.WALREIN,
Species.CLAMPERL,
],
[TrainerPoolTier.UNCOMMON]: [
Species.QUAGSIRE,
Species.MANTINE,
Species.KINGDRA,
Species.MILOTIC,
Species.DRAGALGE,
Species.DHELMISE,
Species.BARRASKEWDA,
Species.GRAPPLOCT,
Species.OVERQWIL,
],
[TrainerPoolTier.RARE]: [Species.BASCULEGION, Species.DONDOZO],
};
const GALACTIC: TrainerTierPools = {
[TrainerPoolTier.COMMON]: [
Species.ELECTRODE,
Species.GYARADOS,
Species.CROBAT,
Species.HONCHKROW,
Species.BRONZONG,
Species.DRAPION,
Species.LICKILICKY,
Species.TANGROWTH,
Species.ELECTIVIRE,
Species.MAGMORTAR,
Species.YANMEGA,
Species.MAMOSWINE,
],
[TrainerPoolTier.UNCOMMON]: [
Species.ALAKAZAM,
Species.WEAVILE,
Species.GLISCOR,
Species.DUSKNOIR,
Species.ROTOM,
Species.OVERQWIL,
Species.HISUI_ARCANINE,
Species.HISUI_ELECTRODE,
],
[TrainerPoolTier.RARE]: [Species.SPIRITOMB, Species.URSALUNA, Species.SNEASLER, Species.HISUI_LILLIGANT],
};
const PLASMA_ZINZOLAN: TrainerTierPools = {
[TrainerPoolTier.COMMON]: [
Species.GIGALITH,
Species.CONKELDURR,
Species.SEISMITOAD,
Species.KROOKODILE,
Species.DARMANITAN,
Species.COFAGRIGUS,
Species.VANILLUXE,
Species.AMOONGUSS,
Species.JELLICENT,
Species.GALVANTULA,
Species.FERROTHORN,
Species.BEARTIC,
],
[TrainerPoolTier.UNCOMMON]: [
Species.EXCADRILL,
Species.SIGILYPH,
Species.ZOROARK,
Species.KLINKLANG,
Species.EELEKTROSS,
Species.MIENSHAO,
Species.GOLURK,
Species.BISHARP,
Species.MANDIBUZZ,
Species.DURANT,
Species.GALAR_DARMANITAN,
],
[TrainerPoolTier.RARE]: [Species.HAXORUS, Species.HYDREIGON, Species.HISUI_ZOROARK, Species.HISUI_BRAVIARY],
};
const PLASMA_COLRESS: TrainerTierPools = {
[TrainerPoolTier.COMMON]: [
Species.MUK,
Species.ELECTRODE,
Species.BRONZONG,
Species.MAGNEZONE,
Species.PORYGON_Z,
Species.MUSHARNA,
Species.REUNICLUS,
Species.GALVANTULA,
Species.FERROTHORN,
Species.EELEKTROSS,
Species.BEHEEYEM,
],
[TrainerPoolTier.UNCOMMON]: [
Species.METAGROSS,
Species.ROTOM,
Species.CARRACOSTA,
Species.ARCHEOPS,
Species.GOLURK,
Species.DURANT,
Species.VIKAVOLT,
Species.ORBEETLE,
Species.REVAVROOM,
Species.ALOLA_MUK,
Species.HISUI_ELECTRODE,
],
[TrainerPoolTier.RARE]: [Species.ELECTIVIRE, Species.MAGMORTAR, Species.BISHARP, Species.ARCHALUDON],
};
const FLARE: TrainerTierPools = {
[TrainerPoolTier.COMMON]: [
Species.MANECTRIC,
Species.DRAPION,
Species.LIEPARD,
Species.AMOONGUSS,
Species.DIGGERSBY,
Species.TALONFLAME,
Species.PYROAR,
Species.PANGORO,
Species.MEOWSTIC,
Species.MALAMAR,
Species.CLAWITZER,
Species.HELIOLISK,
],
[TrainerPoolTier.UNCOMMON]: [
Species.HOUNDOOM,
Species.WEAVILE,
Species.CHANDELURE,
Species.AEGISLASH,
Species.BARBARACLE,
Species.DRAGALGE,
Species.GOODRA,
Species.TREVENANT,
Species.GOURGEIST,
],
[TrainerPoolTier.RARE]: [Species.NOIVERN, Species.HISUI_GOODRA, Species.HISUI_AVALUGG],
};
const AETHER: TrainerTierPools = {
[TrainerPoolTier.COMMON]: [
Species.ALAKAZAM,
Species.SLOWBRO,
Species.EXEGGUTOR,
Species.XATU,
Species.CLAYDOL,
Species.BEHEEYEM,
Species.ORANGURU,
Species.BRUXISH,
Species.ORBEETLE,
Species.FARIGIRAF,
Species.ALOLA_RAICHU,
],
[TrainerPoolTier.UNCOMMON]: [
Species.KIRLIA,
Species.MEDICHAM,
Species.METAGROSS,
Species.MALAMAR,
Species.HATTERENE,
Species.MR_RIME,
Species.GALAR_SLOWKING,
],
[TrainerPoolTier.RARE]: [Species.PORYGON_Z, Species.ARMAROUGE, Species.HISUI_BRAVIARY],
};
const SKULL: TrainerTierPools = {
[TrainerPoolTier.COMMON]: [
Species.NIDOQUEEN,
Species.GENGAR,
Species.KOFFING,
Species.CROBAT,
Species.ROSERADE,
Species.SKUNTANK,
Species.TOXICROAK,
Species.SCOLIPEDE,
Species.TOXAPEX,
Species.LURANTIS,
Species.ALOLA_MUK,
],
[TrainerPoolTier.UNCOMMON]: [
Species.DRAPION,
Species.MANDIBUZZ,
Species.OVERQWIL,
Species.GLIMMORA,
Species.CLODSIRE,
Species.GALAR_SLOWBRO,
],
[TrainerPoolTier.RARE]: [Species.DRAGALGE, Species.SNEASLER],
};
const MACRO_COSMOS: TrainerTierPools = {
[TrainerPoolTier.COMMON]: [
Species.NINETALES,
Species.BELLOSSOM,
Species.MILOTIC,
Species.FROSLASS,
Species.GOTHITELLE,
Species.JELLICENT,
Species.SALAZZLE,
Species.TSAREENA,
Species.POLTEAGEIST,
Species.HATTERENE,
Species.GALAR_RAPIDASH,
],
[TrainerPoolTier.UNCOMMON]: [
Species.TOGEKISS,
Species.MANDIBUZZ,
Species.TOXAPEX,
Species.APPLETUN,
Species.CURSOLA,
Species.ALOLA_NINETALES,
],
[TrainerPoolTier.RARE]: [Species.TINKATON, Species.HISUI_LILLIGANT],
};
const STAR_DARK: TrainerTierPools = {
[TrainerPoolTier.COMMON]: [
Species.SHIFTRY,
Species.CACTURNE,
Species.HONCHKROW,
Species.SKUNTANK,
Species.KROOKODILE,
Species.OBSTAGOON,
Species.LOKIX,
Species.MABOSSTIFF,
],
[TrainerPoolTier.UNCOMMON]: [
Species.UMBREON,
Species.CRAWDAUNT,
Species.WEAVILE,
Species.ZOROARK,
Species.MALAMAR,
Species.BOMBIRDIER,
],
[TrainerPoolTier.RARE]: [Species.HYDREIGON, Species.MEOWSCARADA],
};
const STAR_FIRE: TrainerTierPools = {
[TrainerPoolTier.COMMON]: [
Species.ARCANINE,
Species.HOUNDOOM,
Species.CAMERUPT,
Species.CHANDELURE,
Species.TALONFLAME,
Species.PYROAR,
Species.COALOSSAL,
Species.SCOVILLAIN,
],
[TrainerPoolTier.UNCOMMON]: [
Species.RAPIDASH,
Species.FLAREON,
Species.TORKOAL,
Species.MAGMORTAR,
Species.SALAZZLE,
Species.TURTONATOR,
],
[TrainerPoolTier.RARE]: [Species.VOLCARONA, Species.SKELEDIRGE],
};
const STAR_POISON: TrainerTierPools = {
[TrainerPoolTier.COMMON]: [
Species.MUK,
Species.CROBAT,
Species.SKUNTANK,
Species.AMOONGUSS,
Species.TOXAPEX,
Species.TOXTRICITY,
Species.GRAFAIAI,
Species.CLODSIRE,
],
[TrainerPoolTier.UNCOMMON]: [
Species.GENGAR,
Species.SEVIPER,
Species.DRAGALGE,
Species.OVERQWIL,
Species.ALOLA_MUK,
Species.GALAR_SLOWBRO,
],
[TrainerPoolTier.RARE]: [Species.GLIMMORA, Species.VENUSAUR],
};
const STAR_FAIRY: TrainerTierPools = {
[TrainerPoolTier.COMMON]: [
Species.CLEFABLE,
Species.WIGGLYTUFF,
Species.AZUMARILL,
Species.WHIMSICOTT,
Species.FLORGES,
Species.HATTERENE,
Species.GRIMMSNARL,
Species.TINKATON,
],
[TrainerPoolTier.UNCOMMON]: [
Species.TOGEKISS,
Species.GARDEVOIR,
Species.SYLVEON,
Species.KLEFKI,
Species.MIMIKYU,
Species.ALOLA_NINETALES,
],
[TrainerPoolTier.RARE]: [Species.GALAR_RAPIDASH, Species.PRIMARINA],
};
const STAR_FIGHTING: TrainerTierPools = {
[TrainerPoolTier.COMMON]: [
Species.BRELOOM,
Species.HARIYAMA,
Species.MEDICHAM,
Species.TOXICROAK,
Species.SCRAFTY,
Species.MIENSHAO,
Species.PAWMOT,
Species.PALDEA_TAUROS,
],
[TrainerPoolTier.UNCOMMON]: [
Species.LUCARIO,
Species.CONKELDURR,
Species.HAWLUCHA,
Species.PASSIMIAN,
Species.FALINKS,
Species.FLAMIGO,
],
[TrainerPoolTier.RARE]: [Species.KOMMO_O, Species.QUAQUAVAL],
};
export type EvilTeam =
| "rocket"
| "magma"
| "aqua"
| "galactic"
| "plasma_zinzolan"
| "plasma_colress"
| "flare"
| "aether"
| "skull"
| "macro_cosmos"
| "star_dark"
| "star_fire"
| "star_poison"
| "star_fairy"
| "star_fighting";
/** Trainer pools for each evil admin team */
export const EvilAdminTrainerPools: Record<EvilTeam, TrainerTierPools> = {
rocket: ROCKET,
magma: MAGMA,
aqua: AQUA,
galactic: GALACTIC,
plasma_zinzolan: PLASMA_ZINZOLAN,
plasma_colress: PLASMA_COLRESS,
flare: FLARE,
aether: AETHER,
macro_cosmos: MACRO_COSMOS,
skull: SKULL,
star_dark: STAR_DARK,
star_fire: STAR_FIRE,
star_poison: STAR_POISON,
star_fairy: STAR_FAIRY,
star_fighting: STAR_FIGHTING,
};

View File

@ -22,7 +22,7 @@ import { PartyMemberStrength } from "#enums/party-member-strength";
import { Species } from "#enums/species"; import { Species } from "#enums/species";
import { TrainerType } from "#enums/trainer-type"; import { TrainerType } from "#enums/trainer-type";
import { Gender } from "#app/data/gender"; import { Gender } from "#app/data/gender";
import { signatureSpecies } from "./balance/signature-species"; import { signatureSpecies } from "../balance/signature-species";
import { Abilities } from "#enums/abilities"; import { Abilities } from "#enums/abilities";
/** Minimum BST for Pokemon generated onto the Elite Four's teams */ /** Minimum BST for Pokemon generated onto the Elite Four's teams */

View File

@ -0,0 +1,43 @@
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";
export type PartyTemplateFunc = () => TrainerPartyTemplate;
export type PartyMemberFunc = (level: number, strength: PartyMemberStrength) => EnemyPokemon;
export type GenModifiersFunc = (party: EnemyPokemon[]) => PersistentModifier[];
export type GenAIFunc = (party: EnemyPokemon[]) => void;
export interface TrainerTierPools {
[key: number]: Species[];
}
export interface PartyMemberFuncs {
[key: number]: PartyMemberFunc;
}
export class TrainerPartyTemplate {
public size: number;
public strength: PartyMemberStrength;
public sameSpecies: boolean;
public balanced: boolean;
constructor(size: number, strength: PartyMemberStrength, sameSpecies?: boolean, balanced?: boolean) {
this.size = size;
this.strength = strength;
this.sameSpecies = !!sameSpecies;
this.balanced = !!balanced;
}
getStrength(_index: number): PartyMemberStrength {
return this.strength;
}
isSameSpecies(_index: number): boolean {
return this.sameSpecies;
}
isBalanced(_index: number): boolean {
return this.balanced;
}
}

View File

@ -225,7 +225,7 @@ import {
SpeciesFormChangeStatusEffectTrigger, SpeciesFormChangeStatusEffectTrigger,
} from "#app/data/pokemon-forms"; } from "#app/data/pokemon-forms";
import { TerrainType } from "#app/data/terrain"; import { TerrainType } from "#app/data/terrain";
import type { TrainerSlot } from "#app/data/trainer-config"; import type { TrainerSlot } from "#app/data/trainers/trainer-config";
import Overrides from "#app/overrides"; import Overrides from "#app/overrides";
import i18next from "i18next"; import i18next from "i18next";
import { speciesEggMoves } from "#app/data/balance/egg-moves"; import { speciesEggMoves } from "#app/data/balance/egg-moves";

View File

@ -2,7 +2,7 @@ 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/data/pokemon-species";
import type { TrainerConfig, TrainerPartyTemplate } from "#app/data/trainer-config"; import type { TrainerConfig, TrainerPartyTemplate } from "#app/data/trainers/trainer-config";
import { import {
TrainerPartyCompoundTemplate, TrainerPartyCompoundTemplate,
TrainerPoolTier, TrainerPoolTier,
@ -10,7 +10,7 @@ import {
trainerConfigs, trainerConfigs,
trainerPartyTemplates, trainerPartyTemplates,
TeraAIMode, TeraAIMode,
} from "#app/data/trainer-config"; } from "#app/data/trainers/trainer-config";
import type { EnemyPokemon } from "#app/field/pokemon"; import type { EnemyPokemon } from "#app/field/pokemon";
import * as Utils from "#app/utils"; import * as Utils from "#app/utils";
import type { PersistentModifier } from "#app/modifier/modifier"; import type { PersistentModifier } from "#app/modifier/modifier";

View File

@ -1,5 +1,5 @@
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import { TrainerSlot } from "#app/data/trainer-config"; import { TrainerSlot } from "#app/data/trainers/trainer-config";
import { Phase } from "#app/phase"; import { Phase } from "#app/phase";
export class BattlePhase extends Phase { export class BattlePhase extends Phase {

View File

@ -7,7 +7,7 @@ import { getCharVariantFromDialogue } from "#app/data/dialogue";
import { getEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils"; import { getEncounterText } from "#app/data/mystery-encounters/utils/encounter-dialogue-utils";
import { doTrainerExclamation } from "#app/data/mystery-encounters/utils/encounter-phase-utils"; import { doTrainerExclamation } from "#app/data/mystery-encounters/utils/encounter-phase-utils";
import { getGoldenBugNetSpecies } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils"; import { getGoldenBugNetSpecies } from "#app/data/mystery-encounters/utils/encounter-pokemon-utils";
import { TrainerSlot } from "#app/data/trainer-config"; import { TrainerSlot } from "#app/data/trainers/trainer-config";
import { getRandomWeatherType } from "#app/data/weather"; import { getRandomWeatherType } from "#app/data/weather";
import { EncounterPhaseEvent } from "#app/events/battle-scene"; import { EncounterPhaseEvent } from "#app/events/battle-scene";
import type Pokemon from "#app/field/pokemon"; import type Pokemon from "#app/field/pokemon";

View File

@ -5,7 +5,7 @@ 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/data/pokemon-species";
import { trainerConfigs } from "#app/data/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/modifier/modifier-type"; import { modifierTypes } from "#app/modifier/modifier-type";
import { BattlePhase } from "#app/phases/battle-phase"; import { BattlePhase } from "#app/phases/battle-phase";

View File

@ -22,7 +22,7 @@ import { globalScene } from "#app/global-scene";
import { getCharVariantFromDialogue } from "../data/dialogue"; import { getCharVariantFromDialogue } from "../data/dialogue";
import type { OptionSelectSettings } from "../data/mystery-encounters/utils/encounter-phase-utils"; import type { OptionSelectSettings } from "../data/mystery-encounters/utils/encounter-phase-utils";
import { transitionMysteryEncounterIntroVisuals } from "../data/mystery-encounters/utils/encounter-phase-utils"; import { transitionMysteryEncounterIntroVisuals } from "../data/mystery-encounters/utils/encounter-phase-utils";
import { TrainerSlot } from "../data/trainer-config"; import { TrainerSlot } from "../data/trainers/trainer-config";
import { IvScannerModifier } from "../modifier/modifier"; import { IvScannerModifier } from "../modifier/modifier";
import { Phase } from "../phase"; import { Phase } from "../phase";
import { Mode } from "../ui/ui"; import { Mode } from "../ui/ui";

View File

@ -1,7 +1,7 @@
import { BattleType } from "#app/battle"; import { BattleType } from "#app/battle";
import { getPokeballAtlasKey, getPokeballTintColor } from "#app/data/pokeball"; import { getPokeballAtlasKey, getPokeballTintColor } from "#app/data/pokeball";
import { SpeciesFormChangeActiveTrigger } from "#app/data/pokemon-forms"; import { SpeciesFormChangeActiveTrigger } from "#app/data/pokemon-forms";
import { TrainerSlot } from "#app/data/trainer-config"; import { TrainerSlot } from "#app/data/trainers/trainer-config";
import { PlayerGender } from "#app/enums/player-gender"; import { PlayerGender } from "#app/enums/player-gender";
import { addPokeballOpenParticles } from "#app/field/anims"; import { addPokeballOpenParticles } from "#app/field/anims";
import type Pokemon from "#app/field/pokemon"; import type Pokemon from "#app/field/pokemon";

View File

@ -3,7 +3,7 @@ import { applyPreSwitchOutAbAttrs, PostDamageForceSwitchAbAttr, PreSwitchOutAbAt
import { allMoves, ForceSwitchOutAttr } from "#app/data/moves/move"; import { allMoves, ForceSwitchOutAttr } from "#app/data/moves/move";
import { getPokeballTintColor } from "#app/data/pokeball"; import { getPokeballTintColor } from "#app/data/pokeball";
import { SpeciesFormChangeActiveTrigger } from "#app/data/pokemon-forms"; import { SpeciesFormChangeActiveTrigger } from "#app/data/pokemon-forms";
import { TrainerSlot } from "#app/data/trainer-config"; import { TrainerSlot } from "#app/data/trainers/trainer-config";
import type Pokemon from "#app/field/pokemon"; import type Pokemon from "#app/field/pokemon";
import { getPokemonNameWithAffix } from "#app/messages"; import { getPokemonNameWithAffix } from "#app/messages";
import { SwitchEffectTransferModifier } from "#app/modifier/modifier"; import { SwitchEffectTransferModifier } from "#app/modifier/modifier";

View File

@ -1,5 +1,5 @@
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import { trainerConfigs } from "#app/data/trainer-config"; import { trainerConfigs } from "#app/data/trainers/trainer-config";
import type { TrainerType } from "#app/enums/trainer-type"; import type { TrainerType } from "#app/enums/trainer-type";
import { BattlePhase } from "./battle-phase"; import { BattlePhase } from "./battle-phase";
import { TestMessagePhase } from "./test-message-phase"; import { TestMessagePhase } from "./test-message-phase";

View File

@ -7,7 +7,7 @@ import * as Utils from "#app/utils";
import { BattlePhase } from "./battle-phase"; import { BattlePhase } from "./battle-phase";
import { ModifierRewardPhase } from "./modifier-reward-phase"; import { ModifierRewardPhase } from "./modifier-reward-phase";
import { MoneyRewardPhase } from "./money-reward-phase"; import { MoneyRewardPhase } from "./money-reward-phase";
import { TrainerSlot } from "#app/data/trainer-config"; import { TrainerSlot } from "#app/data/trainers/trainer-config";
import { globalScene } from "#app/global-scene"; import { globalScene } from "#app/global-scene";
import { Biome } from "#app/enums/biome"; import { Biome } from "#app/enums/biome";
import { achvs } from "#app/system/achv"; import { achvs } from "#app/system/achv";

View File

@ -17,7 +17,7 @@ import { Unlockables } from "#app/system/unlockables";
import { GameModes, getGameMode } from "#app/game-mode"; import { GameModes, getGameMode } from "#app/game-mode";
import { BattleType } from "#app/battle"; import { BattleType } from "#app/battle";
import TrainerData from "#app/system/trainer-data"; import TrainerData from "#app/system/trainer-data";
import { trainerConfigs } from "#app/data/trainer-config"; import { trainerConfigs } from "#app/data/trainers/trainer-config";
import { resetSettings, setSetting, SettingKeys } from "#app/system/settings/settings"; import { resetSettings, setSetting, SettingKeys } from "#app/system/settings/settings";
import { achvs } from "#app/system/achv"; import { achvs } from "#app/system/achv";
import EggData from "#app/system/egg-data"; import EggData from "#app/system/egg-data";

View File

@ -6,7 +6,7 @@ import type { PokeballType } from "#enums/pokeball";
import { getPokemonSpecies, getPokemonSpeciesForm } from "../data/pokemon-species"; import { getPokemonSpecies, getPokemonSpeciesForm } from "../data/pokemon-species";
import { Status } from "../data/status-effect"; import { Status } from "../data/status-effect";
import Pokemon, { EnemyPokemon, PokemonMove, PokemonSummonData } from "../field/pokemon"; import Pokemon, { EnemyPokemon, PokemonMove, PokemonSummonData } from "../field/pokemon";
import { TrainerSlot } from "../data/trainer-config"; import { TrainerSlot } from "../data/trainers/trainer-config";
import type { Variant } from "#app/data/variant"; import type { Variant } from "#app/data/variant";
import { loadBattlerTag } from "../data/battler-tags"; import { loadBattlerTag } from "../data/battler-tags";
import type { Biome } from "#enums/biome"; import type { Biome } from "#enums/biome";

View File

@ -3,7 +3,7 @@ import { AchvTier, achvs, getAchievementDescription } from "./achv";
import type { PlayerGender } from "#enums/player-gender"; import type { PlayerGender } from "#enums/player-gender";
import { TrainerType } from "#enums/trainer-type"; import { TrainerType } from "#enums/trainer-type";
import type { ConditionFn } from "#app/@types/common"; import type { ConditionFn } from "#app/@types/common";
import { trainerConfigs } from "#app/data/trainer-config"; import { trainerConfigs } from "#app/data/trainers/trainer-config";
export enum VoucherType { export enum VoucherType {
REGULAR, REGULAR,

View File

@ -1,6 +1,6 @@
import { allMoves } from "#app/data/moves/move"; import { allMoves } from "#app/data/moves/move";
import { getPokemonSpecies } from "#app/data/pokemon-species"; import { getPokemonSpecies } from "#app/data/pokemon-species";
import { TrainerSlot } from "#app/data/trainer-config"; import { TrainerSlot } from "#app/data/trainers/trainer-config";
import { PokemonType } from "#enums/pokemon-type"; import { PokemonType } from "#enums/pokemon-type";
import { Abilities } from "#app/enums/abilities"; import { Abilities } from "#app/enums/abilities";
import { Moves } from "#app/enums/moves"; import { Moves } from "#app/enums/moves";

View File

@ -16,7 +16,7 @@ import { MysteryEncounterTier } from "#enums/mystery-encounter-tier";
import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils"; import { initSceneWithoutEncounterPhase } from "#test/testUtils/gameManagerUtils";
import { ModifierTier } from "#app/modifier/modifier-tier"; import { ModifierTier } from "#app/modifier/modifier-tier";
import { MysteriousChallengersEncounter } from "#app/data/mystery-encounters/encounters/mysterious-challengers-encounter"; import { MysteriousChallengersEncounter } from "#app/data/mystery-encounters/encounters/mysterious-challengers-encounter";
import { TrainerConfig, TrainerPartyCompoundTemplate, TrainerPartyTemplate } from "#app/data/trainer-config"; import { TrainerConfig, TrainerPartyCompoundTemplate, TrainerPartyTemplate } from "#app/data/trainers/trainer-config";
import { PartyMemberStrength } from "#enums/party-member-strength"; import { PartyMemberStrength } from "#enums/party-member-strength";
import { MysteryEncounterMode } from "#enums/mystery-encounter-mode"; import { MysteryEncounterMode } from "#enums/mystery-encounter-mode";
import ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler"; import ModifierSelectUiHandler from "#app/ui/modifier-select-ui-handler";