diff --git a/src/@types/trainer-funcs.ts b/src/@types/trainer-funcs.ts index aa839cbd158..9cdc777f348 100644 --- a/src/@types/trainer-funcs.ts +++ b/src/@types/trainer-funcs.ts @@ -2,7 +2,7 @@ import type { PartyMemberStrength } from "#enums/party-member-strength"; import type { SpeciesId } from "#enums/species-id"; import type { EnemyPokemon } from "#field/pokemon"; import type { PersistentModifier } from "#modifiers/modifier"; -import type { TrainerConfig } from "#trainers/trainer-config"; +import type { TrainerConfig } from "#trainers/trainer-configs-init"; import type { TrainerPartyTemplate } from "#trainers/trainer-party-template"; export type PartyTemplateFunc = () => TrainerPartyTemplate; diff --git a/src/battle-scene.ts b/src/battle-scene.ts index d7681f5ff85..24b87df1b79 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -118,7 +118,7 @@ import { MusicPreference } from "#system/settings"; import type { TrainerData } from "#system/trainer-data"; import type { Voucher } from "#system/voucher"; import { vouchers } from "#system/voucher"; -import { trainerConfigs } from "#trainers/trainer-config"; +import { trainerConfigs } from "#trainers/trainer-configs-init"; import type { HeldModifierConfig } from "#types/held-modifier-config"; import type { Localizable } from "#types/locales"; import { AbilityBar } from "#ui/containers/ability-bar"; diff --git a/src/battle.ts b/src/battle.ts index 1b789707806..ed765a28731 100644 --- a/src/battle.ts +++ b/src/battle.ts @@ -20,7 +20,7 @@ import type { CustomModifierSettings } from "#modifiers/modifier-type"; import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; import i18next from "#plugins/i18n"; import { MusicPreference } from "#system/settings"; -import { trainerConfigs } from "#trainers/trainer-config"; +import { trainerConfigs } from "#trainers/trainer-configs-init"; import type { TurnMove } from "#types/turn-move"; import { NumberHolder, diff --git a/src/data/dialogue.ts b/src/data/dialogue.ts index 1d672397777..def45bfcf0b 100644 --- a/src/data/dialogue.ts +++ b/src/data/dialogue.ts @@ -1,6 +1,15 @@ import { BattleSpec } from "#enums/battle-spec"; import { TrainerType } from "#enums/trainer-type"; -import { trainerConfigs } from "#trainers/trainer-config"; +import { championDialogue } from "#trainers/dialogue-init/champion-trainers"; +import { eliteFourDialogue } from "#trainers/dialogue-init/elite-four-trainers"; +import { evilAdminDialogue } from "#trainers/dialogue-init/evil-organizations/evil-admin-trainers"; +import { evilGruntsDialogue } from "#trainers/dialogue-init/evil-organizations/evil-grunts-trainers"; +import { evilLeaderDialogue } from "#trainers/dialogue-init/evil-organizations/evil-leader-trainers"; +import { gymLeaderDialogue } from "#trainers/dialogue-init/gym-trainers"; +import { mysteryEventTrainerDialogue } from "#trainers/dialogue-init/mystery-event-trainers"; +import { randomNPCDialogue } from "#trainers/dialogue-init/random-npcs-trainers"; +import { rivalDialogue } from "#trainers/dialogue-init/rival-trainer"; +import { trainerConfigs } from "#trainers/trainer-configs-init"; import { capitalizeFirstLetter } from "#utils/strings"; export interface TrainerTypeMessages { @@ -18,1702 +27,15 @@ export function getTrainerTypeDialogue(): TrainerTypeDialogue { } export const trainerTypeDialogue: TrainerTypeDialogue = { - [TrainerType.YOUNGSTER]: [ - { - encounter: [ - "dialogue:youngster.encounter.1", - "dialogue:youngster.encounter.2", - "dialogue:youngster.encounter.3", - "dialogue:youngster.encounter.4", - "dialogue:youngster.encounter.5", - "dialogue:youngster.encounter.6", - "dialogue:youngster.encounter.7", - "dialogue:youngster.encounter.8", - "dialogue:youngster.encounter.9", - "dialogue:youngster.encounter.10", - "dialogue:youngster.encounter.11", - "dialogue:youngster.encounter.12", - "dialogue:youngster.encounter.13", - ], - victory: [ - "dialogue:youngster.victory.1", - "dialogue:youngster.victory.2", - "dialogue:youngster.victory.3", - "dialogue:youngster.victory.4", - "dialogue:youngster.victory.5", - "dialogue:youngster.victory.6", - "dialogue:youngster.victory.7", - "dialogue:youngster.victory.8", - "dialogue:youngster.victory.9", - "dialogue:youngster.victory.10", - "dialogue:youngster.victory.11", - "dialogue:youngster.victory.12", - "dialogue:youngster.victory.13", - ], - }, - //LASS - { - encounter: [ - "dialogue:lass.encounter.1", - "dialogue:lass.encounter.2", - "dialogue:lass.encounter.3", - "dialogue:lass.encounter.4", - "dialogue:lass.encounter.5", - "dialogue:lass.encounter.6", - "dialogue:lass.encounter.7", - "dialogue:lass.encounter.8", - "dialogue:lass.encounter.9", - ], - victory: [ - "dialogue:lass.victory.1", - "dialogue:lass.victory.2", - "dialogue:lass.victory.3", - "dialogue:lass.victory.4", - "dialogue:lass.victory.5", - "dialogue:lass.victory.6", - "dialogue:lass.victory.7", - "dialogue:lass.victory.8", - "dialogue:lass.victory.9", - ], - }, - ], - [TrainerType.BREEDER]: [ - { - encounter: ["dialogue:breeder.encounter.1", "dialogue:breeder.encounter.2", "dialogue:breeder.encounter.3"], - victory: ["dialogue:breeder.victory.1", "dialogue:breeder.victory.2", "dialogue:breeder.victory.3"], - defeat: ["dialogue:breeder.defeat.1", "dialogue:breeder.defeat.2", "dialogue:breeder.defeat.3"], - }, - { - encounter: [ - "dialogue:breederFemale.encounter.1", - "dialogue:breederFemale.encounter.2", - "dialogue:breederFemale.encounter.3", - ], - victory: [ - "dialogue:breederFemale.victory.1", - "dialogue:breederFemale.victory.2", - "dialogue:breederFemale.victory.3", - ], - defeat: ["dialogue:breederFemale.defeat.1", "dialogue:breederFemale.defeat.2", "dialogue:breederFemale.defeat.3"], - }, - ], - [TrainerType.FISHERMAN]: [ - { - encounter: ["dialogue:fisherman.encounter.1", "dialogue:fisherman.encounter.2", "dialogue:fisherman.encounter.3"], - victory: ["dialogue:fisherman.victory.1", "dialogue:fisherman.victory.2", "dialogue:fisherman.victory.3"], - }, - { - encounter: [ - "dialogue:fishermanFemale.encounter.1", - "dialogue:fishermanFemale.encounter.2", - "dialogue:fishermanFemale.encounter.3", - ], - victory: [ - "dialogue:fishermanFemale.victory.1", - "dialogue:fishermanFemale.victory.2", - "dialogue:fishermanFemale.victory.3", - ], - }, - ], - [TrainerType.SWIMMER]: [ - { - encounter: ["dialogue:swimmer.encounter.1", "dialogue:swimmer.encounter.2", "dialogue:swimmer.encounter.3"], - victory: ["dialogue:swimmer.victory.1", "dialogue:swimmer.victory.2", "dialogue:swimmer.victory.3"], - }, - ], - [TrainerType.BACKPACKER]: [ - { - encounter: [ - "dialogue:backpacker.encounter.1", - "dialogue:backpacker.encounter.2", - "dialogue:backpacker.encounter.3", - "dialogue:backpacker.encounter.4", - ], - victory: [ - "dialogue:backpacker.victory.1", - "dialogue:backpacker.victory.2", - "dialogue:backpacker.victory.3", - "dialogue:backpacker.victory.4", - ], - }, - ], - [TrainerType.ACE_TRAINER]: [ - { - encounter: [ - "dialogue:aceTrainer.encounter.1", - "dialogue:aceTrainer.encounter.2", - "dialogue:aceTrainer.encounter.3", - "dialogue:aceTrainer.encounter.4", - ], - victory: [ - "dialogue:aceTrainer.victory.1", - "dialogue:aceTrainer.victory.2", - "dialogue:aceTrainer.victory.3", - "dialogue:aceTrainer.victory.4", - ], - defeat: [ - "dialogue:aceTrainer.defeat.1", - "dialogue:aceTrainer.defeat.2", - "dialogue:aceTrainer.defeat.3", - "dialogue:aceTrainer.defeat.4", - ], - }, - ], - [TrainerType.PARASOL_LADY]: [ - { - encounter: ["dialogue:parasolLady.encounter.1"], - victory: ["dialogue:parasolLady.victory.1"], - }, - ], - [TrainerType.TWINS]: [ - { - encounter: ["dialogue:twins.encounter.1", "dialogue:twins.encounter.2", "dialogue:twins.encounter.3"], - victory: ["dialogue:twins.victory.1", "dialogue:twins.victory.2", "dialogue:twins.victory.3"], - defeat: ["dialogue:twins.defeat.1", "dialogue:twins.defeat.2", "dialogue:twins.defeat.3"], - }, - ], - [TrainerType.CYCLIST]: [ - { - encounter: ["dialogue:cyclist.encounter.1", "dialogue:cyclist.encounter.2", "dialogue:cyclist.encounter.3"], - victory: ["dialogue:cyclist.victory.1", "dialogue:cyclist.victory.2", "dialogue:cyclist.victory.3"], - }, - ], - [TrainerType.BLACK_BELT]: [ - { - encounter: ["dialogue:blackBelt.encounter.1", "dialogue:blackBelt.encounter.2"], - victory: ["dialogue:blackBelt.victory.1", "dialogue:blackBelt.victory.2"], - }, - //BATTLE GIRL - { - encounter: ["dialogue:battleGirl.encounter.1"], - victory: ["dialogue:battleGirl.victory.1"], - }, - ], - [TrainerType.HIKER]: [ - { - encounter: ["dialogue:hiker.encounter.1", "dialogue:hiker.encounter.2"], - victory: ["dialogue:hiker.victory.1", "dialogue:hiker.victory.2"], - }, - ], - [TrainerType.RANGER]: [ - { - encounter: ["dialogue:ranger.encounter.1", "dialogue:ranger.encounter.2"], - victory: ["dialogue:ranger.victory.1", "dialogue:ranger.victory.2"], - defeat: ["dialogue:ranger.defeat.1", "dialogue:ranger.defeat.2"], - }, - ], - [TrainerType.SCIENTIST]: [ - { - encounter: ["dialogue:scientist.encounter.1"], - victory: ["dialogue:scientist.victory.1"], - }, - ], - [TrainerType.SCHOOL_KID]: [ - { - encounter: ["dialogue:schoolKid.encounter.1", "dialogue:schoolKid.encounter.2"], - victory: ["dialogue:schoolKid.victory.1", "dialogue:schoolKid.victory.2"], - }, - ], - [TrainerType.ARTIST]: [ - { - encounter: ["dialogue:artist.encounter.1"], - victory: ["dialogue:artist.victory.1"], - }, - ], - [TrainerType.GUITARIST]: [ - { - encounter: ["dialogue:guitarist.encounter.1"], - victory: ["dialogue:guitarist.victory.1"], - }, - ], - [TrainerType.WORKER]: [ - { - encounter: ["dialogue:worker.encounter.1"], - victory: ["dialogue:worker.victory.1"], - }, - { - encounter: ["dialogue:workerFemale.encounter.1"], - victory: ["dialogue:workerFemale.victory.1"], - defeat: ["dialogue:workerFemale.defeat.1"], - }, - { - encounter: ["dialogue:workerDouble.encounter.1"], - victory: ["dialogue:workerDouble.victory.1"], - }, - ], - // Defeat dialogue in the language .JSONS exist as translated or placeholders; (en, fr, it, es, de, ja, ko, zh_cn, zh_tw, pt_br) - [TrainerType.SNOW_WORKER]: [ - { - encounter: ["dialogue:snowWorker.encounter.1"], - victory: ["dialogue:snowWorker.victory.1"], - }, - { - encounter: ["dialogue:snowWorkerDouble.encounter.1"], - victory: ["dialogue:snowWorkerDouble.victory.1"], - }, - ], - [TrainerType.HEX_MANIAC]: [ - { - encounter: ["dialogue:hexManiac.encounter.1", "dialogue:hexManiac.encounter.2"], - victory: ["dialogue:hexManiac.victory.1", "dialogue:hexManiac.victory.2"], - defeat: ["dialogue:hexManiac.defeat.1", "dialogue:hexManiac.defeat.2"], - }, - ], - [TrainerType.PSYCHIC]: [ - { - encounter: ["dialogue:psychic.encounter.1"], - victory: ["dialogue:psychic.victory.1"], - }, - ], - [TrainerType.OFFICER]: [ - { - encounter: ["dialogue:officer.encounter.1", "dialogue:officer.encounter.2"], - victory: ["dialogue:officer.victory.1", "dialogue:officer.victory.2"], - }, - ], - [TrainerType.BEAUTY]: [ - { - encounter: ["dialogue:beauty.encounter.1"], - victory: ["dialogue:beauty.victory.1"], - }, - ], - [TrainerType.BAKER]: [ - { - encounter: ["dialogue:baker.encounter.1"], - victory: ["dialogue:baker.victory.1"], - }, - ], - [TrainerType.BIKER]: [ - { - encounter: ["dialogue:biker.encounter.1"], - victory: ["dialogue:biker.victory.1"], - }, - ], - [TrainerType.FIREBREATHER]: [ - { - encounter: [ - "dialogue:firebreather.encounter.1", - "dialogue:firebreather.encounter.2", - "dialogue:firebreather.encounter.3", - ], - victory: [ - "dialogue:firebreather.victory.1", - "dialogue:firebreather.victory.2", - "dialogue:firebreather.victory.3", - ], - }, - ], - [TrainerType.SAILOR]: [ - { - encounter: ["dialogue:sailor.encounter.1", "dialogue:sailor.encounter.2", "dialogue:sailor.encounter.3"], - victory: ["dialogue:sailor.victory.1", "dialogue:sailor.victory.2", "dialogue:sailor.victory.3"], - }, - ], - [TrainerType.CLERK]: [ - { - encounter: ["dialogue:clerk.encounter.1", "dialogue:clerk.encounter.2", "dialogue:clerk.encounter.3"], - victory: ["dialogue:clerk.victory.1", "dialogue:clerk.victory.2", "dialogue:clerk.victory.3"], - }, - { - encounter: [ - "dialogue:clerkFemale.encounter.1", - "dialogue:clerkFemale.encounter.2", - "dialogue:clerkFemale.encounter.3", - ], - victory: ["dialogue:clerkFemale.victory.1", "dialogue:clerkFemale.victory.2", "dialogue:clerkFemale.victory.3"], - }, - ], - [TrainerType.HOOLIGANS]: [ - { - encounter: ["dialogue:hooligans.encounter.1", "dialogue:hooligans.encounter.2"], - victory: ["dialogue:hooligans.victory.1", "dialogue:hooligans.victory.2"], - }, - ], - [TrainerType.MUSICIAN]: [ - { - encounter: [ - "dialogue:musician.encounter.1", - "dialogue:musician.encounter.2", - "dialogue:musician.encounter.3", - "dialogue:musician.encounter.4", - ], - victory: ["dialogue:musician.victory.1", "dialogue:musician.victory.2", "dialogue:musician.victory.3"], - }, - ], - [TrainerType.PILOT]: [ - { - encounter: [ - "dialogue:pilot.encounter.1", - "dialogue:pilot.encounter.2", - "dialogue:pilot.encounter.3", - "dialogue:pilot.encounter.4", - ], - victory: [ - "dialogue:pilot.victory.1", - "dialogue:pilot.victory.2", - "dialogue:pilot.victory.3", - "dialogue:pilot.victory.4", - ], - }, - ], - [TrainerType.POKEFAN]: [ - { - encounter: ["dialogue:pokefan.encounter.1", "dialogue:pokefan.encounter.2", "dialogue:pokefan.encounter.3"], - victory: ["dialogue:pokefan.victory.1", "dialogue:pokefan.victory.2", "dialogue:pokefan.victory.3"], - }, - { - encounter: [ - "dialogue:pokefanFemale.encounter.1", - "dialogue:pokefanFemale.encounter.2", - "dialogue:pokefanFemale.encounter.3", - ], - victory: [ - "dialogue:pokefanFemale.victory.1", - "dialogue:pokefanFemale.victory.2", - "dialogue:pokefanFemale.victory.3", - ], - }, - ], - [TrainerType.RICH]: [ - { - encounter: ["dialogue:rich.encounter.1", "dialogue:rich.encounter.2", "dialogue:rich.encounter.3"], - victory: ["dialogue:rich.victory.1", "dialogue:rich.victory.2", "dialogue:rich.victory.3"], - }, - { - encounter: [ - "dialogue:richFemale.encounter.1", - "dialogue:richFemale.encounter.2", - "dialogue:richFemale.encounter.3", - ], - victory: ["dialogue:richFemale.victory.1", "dialogue:richFemale.victory.2", "dialogue:richFemale.victory.3"], - }, - ], - [TrainerType.RICH_KID]: [ - { - encounter: ["dialogue:richKid.encounter.1", "dialogue:richKid.encounter.2", "dialogue:richKid.encounter.3"], - victory: [ - "dialogue:richKid.victory.1", - "dialogue:richKid.victory.2", - "dialogue:richKid.victory.3", - "dialogue:richKid.victory.4", - ], - }, - { - encounter: [ - "dialogue:richKidFemale.encounter.1", - "dialogue:richKidFemale.encounter.2", - "dialogue:richKidFemale.encounter.3", - ], - victory: [ - "dialogue:richKidFemale.victory.1", - "dialogue:richKidFemale.victory.2", - "dialogue:richKidFemale.victory.3", - "dialogue:richKidFemale.victory.4", - ], - }, - ], - [TrainerType.ROCKET_GRUNT]: [ - { - encounter: [ - "dialogue:rocketGrunt.encounter.1", - "dialogue:rocketGrunt.encounter.2", - "dialogue:rocketGrunt.encounter.3", - "dialogue:rocketGrunt.encounter.4", - "dialogue:rocketGrunt.encounter.5", - ], - victory: [ - "dialogue:rocketGrunt.victory.1", - "dialogue:rocketGrunt.victory.2", - "dialogue:rocketGrunt.victory.3", - "dialogue:rocketGrunt.victory.4", - "dialogue:rocketGrunt.victory.5", - ], - }, - ], - [TrainerType.ARCHER]: [ - { - encounter: ["dialogue:archer.encounter.1", "dialogue:archer.encounter.2", "dialogue:archer.encounter.3"], - victory: ["dialogue:archer.victory.1", "dialogue:archer.victory.2", "dialogue:archer.victory.3"], - }, - ], - [TrainerType.ARIANA]: [ - { - encounter: ["dialogue:ariana.encounter.1", "dialogue:ariana.encounter.2", "dialogue:ariana.encounter.3"], - victory: ["dialogue:ariana.victory.1", "dialogue:ariana.victory.2", "dialogue:ariana.victory.3"], - }, - ], - [TrainerType.PROTON]: [ - { - encounter: ["dialogue:proton.encounter.1", "dialogue:proton.encounter.2", "dialogue:proton.encounter.3"], - victory: ["dialogue:proton.victory.1", "dialogue:proton.victory.2", "dialogue:proton.victory.3"], - }, - ], - [TrainerType.PETREL]: [ - { - encounter: ["dialogue:petrel.encounter.1", "dialogue:petrel.encounter.2", "dialogue:petrel.encounter.3"], - victory: ["dialogue:petrel.victory.1", "dialogue:petrel.victory.2", "dialogue:petrel.victory.3"], - }, - ], - [TrainerType.MAGMA_GRUNT]: [ - { - encounter: [ - "dialogue:magmaGrunt.encounter.1", - "dialogue:magmaGrunt.encounter.2", - "dialogue:magmaGrunt.encounter.3", - "dialogue:magmaGrunt.encounter.4", - "dialogue:magmaGrunt.encounter.5", - ], - victory: [ - "dialogue:magmaGrunt.victory.1", - "dialogue:magmaGrunt.victory.2", - "dialogue:magmaGrunt.victory.3", - "dialogue:magmaGrunt.victory.4", - "dialogue:magmaGrunt.victory.5", - ], - }, - ], - [TrainerType.TABITHA]: [ - { - encounter: ["dialogue:tabitha.encounter.1", "dialogue:tabitha.encounter.2", "dialogue:tabitha.encounter.3"], - victory: ["dialogue:tabitha.victory.1", "dialogue:tabitha.victory.2", "dialogue:tabitha.victory.3"], - }, - ], - [TrainerType.COURTNEY]: [ - { - encounter: ["dialogue:courtney.encounter.1", "dialogue:courtney.encounter.2", "dialogue:courtney.encounter.3"], - victory: ["dialogue:courtney.victory.1", "dialogue:courtney.victory.2", "dialogue:courtney.victory.3"], - }, - ], - [TrainerType.AQUA_GRUNT]: [ - { - encounter: [ - "dialogue:aquaGrunt.encounter.1", - "dialogue:aquaGrunt.encounter.2", - "dialogue:aquaGrunt.encounter.3", - "dialogue:aquaGrunt.encounter.4", - "dialogue:aquaGrunt.encounter.5", - ], - victory: [ - "dialogue:aquaGrunt.victory.1", - "dialogue:aquaGrunt.victory.2", - "dialogue:aquaGrunt.victory.3", - "dialogue:aquaGrunt.victory.4", - "dialogue:aquaGrunt.victory.5", - ], - }, - ], - [TrainerType.MATT]: [ - { - encounter: ["dialogue:matt.encounter.1", "dialogue:matt.encounter.2", "dialogue:matt.encounter.3"], - victory: ["dialogue:matt.victory.1", "dialogue:matt.victory.2", "dialogue:matt.victory.3"], - }, - ], - [TrainerType.SHELLY]: [ - { - encounter: ["dialogue:shelly.encounter.1", "dialogue:shelly.encounter.2", "dialogue:shelly.encounter.3"], - victory: ["dialogue:shelly.victory.1", "dialogue:shelly.victory.2", "dialogue:shelly.victory.3"], - }, - ], - [TrainerType.GALACTIC_GRUNT]: [ - { - encounter: [ - "dialogue:galacticGrunt.encounter.1", - "dialogue:galacticGrunt.encounter.2", - "dialogue:galacticGrunt.encounter.3", - "dialogue:galacticGrunt.encounter.4", - "dialogue:galacticGrunt.encounter.5", - ], - victory: [ - "dialogue:galacticGrunt.victory.1", - "dialogue:galacticGrunt.victory.2", - "dialogue:galacticGrunt.victory.3", - "dialogue:galacticGrunt.victory.4", - "dialogue:galacticGrunt.victory.5", - ], - }, - ], - [TrainerType.JUPITER]: [ - { - encounter: ["dialogue:jupiter.encounter.1", "dialogue:jupiter.encounter.2", "dialogue:jupiter.encounter.3"], - victory: ["dialogue:jupiter.victory.1", "dialogue:jupiter.victory.2", "dialogue:jupiter.victory.3"], - }, - ], - [TrainerType.MARS]: [ - { - encounter: ["dialogue:mars.encounter.1", "dialogue:mars.encounter.2", "dialogue:mars.encounter.3"], - victory: ["dialogue:mars.victory.1", "dialogue:mars.victory.2", "dialogue:mars.victory.3"], - }, - ], - [TrainerType.SATURN]: [ - { - encounter: ["dialogue:saturn.encounter.1", "dialogue:saturn.encounter.2", "dialogue:saturn.encounter.3"], - victory: ["dialogue:saturn.victory.1", "dialogue:saturn.victory.2", "dialogue:saturn.victory.3"], - }, - ], - [TrainerType.PLASMA_GRUNT]: [ - { - encounter: [ - "dialogue:plasmaGrunt.encounter.1", - "dialogue:plasmaGrunt.encounter.2", - "dialogue:plasmaGrunt.encounter.3", - "dialogue:plasmaGrunt.encounter.4", - "dialogue:plasmaGrunt.encounter.5", - ], - victory: [ - "dialogue:plasmaGrunt.victory.1", - "dialogue:plasmaGrunt.victory.2", - "dialogue:plasmaGrunt.victory.3", - "dialogue:plasmaGrunt.victory.4", - "dialogue:plasmaGrunt.victory.5", - ], - }, - ], - [TrainerType.ZINZOLIN]: [ - { - encounter: ["dialogue:zinzolin.encounter.1", "dialogue:zinzolin.encounter.2", "dialogue:zinzolin.encounter.3"], - victory: ["dialogue:zinzolin.victory.1", "dialogue:zinzolin.victory.2", "dialogue:zinzolin.victory.3"], - }, - ], - [TrainerType.COLRESS]: [ - { - encounter: ["dialogue:colress.encounter.1", "dialogue:colress.encounter.2", "dialogue:colress.encounter.3"], - victory: ["dialogue:colress.victory.1", "dialogue:colress.victory.2", "dialogue:colress.victory.3"], - }, - ], - [TrainerType.FLARE_GRUNT]: [ - { - encounter: [ - "dialogue:flareGrunt.encounter.1", - "dialogue:flareGrunt.encounter.2", - "dialogue:flareGrunt.encounter.3", - "dialogue:flareGrunt.encounter.4", - "dialogue:flareGrunt.encounter.5", - ], - victory: [ - "dialogue:flareGrunt.victory.1", - "dialogue:flareGrunt.victory.2", - "dialogue:flareGrunt.victory.3", - "dialogue:flareGrunt.victory.4", - "dialogue:flareGrunt.victory.5", - ], - }, - ], - [TrainerType.BRYONY]: [ - { - encounter: ["dialogue:bryony.encounter.1", "dialogue:bryony.encounter.2", "dialogue:bryony.encounter.3"], - victory: ["dialogue:bryony.victory.1", "dialogue:bryony.victory.2", "dialogue:bryony.victory.3"], - }, - ], - [TrainerType.XEROSIC]: [ - { - encounter: ["dialogue:xerosic.encounter.1", "dialogue:xerosic.encounter.2", "dialogue:xerosic.encounter.3"], - victory: ["dialogue:xerosic.victory.1", "dialogue:xerosic.victory.2", "dialogue:xerosic.victory.3"], - }, - ], - [TrainerType.AETHER_GRUNT]: [ - { - encounter: [ - "dialogue:aetherGrunt.encounter.1", - "dialogue:aetherGrunt.encounter.2", - "dialogue:aetherGrunt.encounter.3", - "dialogue:aetherGrunt.encounter.4", - "dialogue:aetherGrunt.encounter.5", - ], - victory: [ - "dialogue:aetherGrunt.victory.1", - "dialogue:aetherGrunt.victory.2", - "dialogue:aetherGrunt.victory.3", - "dialogue:aetherGrunt.victory.4", - "dialogue:aetherGrunt.victory.5", - ], - }, - ], - [TrainerType.FABA]: [ - { - encounter: ["dialogue:faba.encounter.1", "dialogue:faba.encounter.2", "dialogue:faba.encounter.3"], - victory: ["dialogue:faba.victory.1", "dialogue:faba.victory.2", "dialogue:faba.victory.3"], - }, - ], - [TrainerType.SKULL_GRUNT]: [ - { - encounter: [ - "dialogue:skullGrunt.encounter.1", - "dialogue:skullGrunt.encounter.2", - "dialogue:skullGrunt.encounter.3", - "dialogue:skullGrunt.encounter.4", - "dialogue:skullGrunt.encounter.5", - ], - victory: [ - "dialogue:skullGrunt.victory.1", - "dialogue:skullGrunt.victory.2", - "dialogue:skullGrunt.victory.3", - "dialogue:skullGrunt.victory.4", - "dialogue:skullGrunt.victory.5", - ], - }, - ], - [TrainerType.PLUMERIA]: [ - { - encounter: ["dialogue:plumeria.encounter.1", "dialogue:plumeria.encounter.2", "dialogue:plumeria.encounter.3"], - victory: ["dialogue:plumeria.victory.1", "dialogue:plumeria.victory.2", "dialogue:plumeria.victory.3"], - }, - ], - [TrainerType.MACRO_GRUNT]: [ - { - encounter: [ - "dialogue:macroGrunt.encounter.1", - "dialogue:macroGrunt.encounter.2", - "dialogue:macroGrunt.encounter.3", - "dialogue:macroGrunt.encounter.4", - "dialogue:macroGrunt.encounter.5", - ], - victory: [ - "dialogue:macroGrunt.victory.1", - "dialogue:macroGrunt.victory.2", - "dialogue:macroGrunt.victory.3", - "dialogue:macroGrunt.victory.4", - "dialogue:macroGrunt.victory.5", - ], - }, - ], - [TrainerType.OLEANA]: [ - { - encounter: ["dialogue:oleana.encounter.1", "dialogue:oleana.encounter.2", "dialogue:oleana.encounter.3"], - victory: ["dialogue:oleana.victory.1", "dialogue:oleana.victory.2", "dialogue:oleana.victory.3"], - }, - ], - [TrainerType.STAR_GRUNT]: [ - { - encounter: [ - "dialogue:starGrunt.encounter.1", - "dialogue:starGrunt.encounter.2", - "dialogue:starGrunt.encounter.3", - "dialogue:starGrunt.encounter.4", - "dialogue:starGrunt.encounter.5", - ], - victory: [ - "dialogue:starGrunt.victory.1", - "dialogue:starGrunt.victory.2", - "dialogue:starGrunt.victory.3", - "dialogue:starGrunt.victory.4", - "dialogue:starGrunt.victory.5", - ], - }, - ], - [TrainerType.GIACOMO]: [ - { - encounter: ["dialogue:giacomo.encounter.1", "dialogue:giacomo.encounter.2"], - victory: ["dialogue:giacomo.victory.1", "dialogue:giacomo.victory.2"], - }, - ], - [TrainerType.MELA]: [ - { - encounter: ["dialogue:mela.encounter.1", "dialogue:mela.encounter.2"], - victory: ["dialogue:mela.victory.1", "dialogue:mela.victory.2"], - }, - ], - [TrainerType.ATTICUS]: [ - { - encounter: ["dialogue:atticus.encounter.1", "dialogue:atticus.encounter.2"], - victory: ["dialogue:atticus.victory.1", "dialogue:atticus.victory.2"], - }, - ], - [TrainerType.ORTEGA]: [ - { - encounter: ["dialogue:ortega.encounter.1", "dialogue:ortega.encounter.2"], - victory: ["dialogue:ortega.victory.1", "dialogue:ortega.victory.2"], - }, - ], - [TrainerType.ERI]: [ - { - encounter: ["dialogue:eri.encounter.1", "dialogue:eri.encounter.2"], - victory: ["dialogue:eri.victory.1", "dialogue:eri.victory.2"], - }, - ], - [TrainerType.ROCKET_BOSS_GIOVANNI_1]: [ - { - encounter: ["dialogue:rocketBossGiovanni1.encounter.1"], - victory: ["dialogue:rocketBossGiovanni1.victory.1"], - defeat: ["dialogue:rocketBossGiovanni1.defeat.1"], - }, - ], - [TrainerType.ROCKET_BOSS_GIOVANNI_2]: [ - { - encounter: ["dialogue:rocketBossGiovanni2.encounter.1"], - victory: ["dialogue:rocketBossGiovanni2.victory.1"], - defeat: ["dialogue:rocketBossGiovanni2.defeat.1"], - }, - ], - [TrainerType.MAXIE]: [ - { - encounter: ["dialogue:magmaBossMaxie1.encounter.1"], - victory: ["dialogue:magmaBossMaxie1.victory.1"], - defeat: ["dialogue:magmaBossMaxie1.defeat.1"], - }, - ], - [TrainerType.MAXIE_2]: [ - { - encounter: ["dialogue:magmaBossMaxie2.encounter.1"], - victory: ["dialogue:magmaBossMaxie2.victory.1"], - defeat: ["dialogue:magmaBossMaxie2.defeat.1"], - }, - ], - [TrainerType.ARCHIE]: [ - { - encounter: ["dialogue:aquaBossArchie1.encounter.1"], - victory: ["dialogue:aquaBossArchie1.victory.1"], - defeat: ["dialogue:aquaBossArchie1.defeat.1"], - }, - ], - [TrainerType.ARCHIE_2]: [ - { - encounter: ["dialogue:aquaBossArchie2.encounter.1"], - victory: ["dialogue:aquaBossArchie2.victory.1"], - defeat: ["dialogue:aquaBossArchie2.defeat.1"], - }, - ], - [TrainerType.CYRUS]: [ - { - encounter: ["dialogue:galacticBossCyrus1.encounter.1"], - victory: ["dialogue:galacticBossCyrus1.victory.1"], - defeat: ["dialogue:galacticBossCyrus1.defeat.1"], - }, - ], - [TrainerType.CYRUS_2]: [ - { - encounter: ["dialogue:galacticBossCyrus2.encounter.1"], - victory: ["dialogue:galacticBossCyrus2.victory.1"], - defeat: ["dialogue:galacticBossCyrus2.defeat.1"], - }, - ], - [TrainerType.GHETSIS]: [ - { - encounter: ["dialogue:plasmaBossGhetsis1.encounter.1"], - victory: ["dialogue:plasmaBossGhetsis1.victory.1"], - defeat: ["dialogue:plasmaBossGhetsis1.defeat.1"], - }, - ], - [TrainerType.GHETSIS_2]: [ - { - encounter: ["dialogue:plasmaBossGhetsis2.encounter.1"], - victory: ["dialogue:plasmaBossGhetsis2.victory.1"], - defeat: ["dialogue:plasmaBossGhetsis2.defeat.1"], - }, - ], - [TrainerType.LYSANDRE]: [ - { - encounter: ["dialogue:flareBossLysandre1.encounter.1"], - victory: ["dialogue:flareBossLysandre1.victory.1"], - defeat: ["dialogue:flareBossLysandre1.defeat.1"], - }, - ], - [TrainerType.LYSANDRE_2]: [ - { - encounter: ["dialogue:flareBossLysandre2.encounter.1"], - victory: ["dialogue:flareBossLysandre2.victory.1"], - defeat: ["dialogue:flareBossLysandre2.defeat.1"], - }, - ], - [TrainerType.LUSAMINE]: [ - { - encounter: ["dialogue:aetherBossLusamine1.encounter.1"], - victory: ["dialogue:aetherBossLusamine1.victory.1"], - defeat: ["dialogue:aetherBossLusamine1.defeat.1"], - }, - ], - [TrainerType.LUSAMINE_2]: [ - { - encounter: ["dialogue:aetherBossLusamine2.encounter.1"], - victory: ["dialogue:aetherBossLusamine2.victory.1"], - defeat: ["dialogue:aetherBossLusamine2.defeat.1"], - }, - ], - [TrainerType.GUZMA]: [ - { - encounter: ["dialogue:skullBossGuzma1.encounter.1"], - victory: ["dialogue:skullBossGuzma1.victory.1"], - defeat: ["dialogue:skullBossGuzma1.defeat.1"], - }, - ], - [TrainerType.GUZMA_2]: [ - { - encounter: ["dialogue:skullBossGuzma2.encounter.1"], - victory: ["dialogue:skullBossGuzma2.victory.1"], - defeat: ["dialogue:skullBossGuzma2.defeat.1"], - }, - ], - [TrainerType.ROSE]: [ - { - encounter: ["dialogue:macroBossRose1.encounter.1"], - victory: ["dialogue:macroBossRose1.victory.1"], - defeat: ["dialogue:macroBossRose1.defeat.1"], - }, - ], - [TrainerType.ROSE_2]: [ - { - encounter: ["dialogue:macroBossRose2.encounter.1"], - victory: ["dialogue:macroBossRose2.victory.1"], - defeat: ["dialogue:macroBossRose2.defeat.1"], - }, - ], - [TrainerType.PENNY]: [ - { - encounter: ["dialogue:starBossPenny1.encounter.1"], - victory: ["dialogue:starBossPenny1.victory.1"], - defeat: ["dialogue:starBossPenny1.defeat.1"], - }, - ], - [TrainerType.PENNY_2]: [ - { - encounter: ["dialogue:starBossPenny2.encounter.1"], - victory: ["dialogue:starBossPenny2.victory.1"], - defeat: ["dialogue:starBossPenny2.defeat.1"], - }, - ], - [TrainerType.BUCK]: [ - { - encounter: ["dialogue:statTrainerBuck.encounter.1", "dialogue:statTrainerBuck.encounter.2"], - victory: ["dialogue:statTrainerBuck.victory.1", "dialogue:statTrainerBuck.victory.2"], - defeat: ["dialogue:statTrainerBuck.defeat.1", "dialogue:statTrainerBuck.defeat.2"], - }, - ], - [TrainerType.CHERYL]: [ - { - encounter: ["dialogue:statTrainerCheryl.encounter.1", "dialogue:statTrainerCheryl.encounter.2"], - victory: ["dialogue:statTrainerCheryl.victory.1", "dialogue:statTrainerCheryl.victory.2"], - defeat: ["dialogue:statTrainerCheryl.defeat.1", "dialogue:statTrainerCheryl.defeat.2"], - }, - ], - [TrainerType.MARLEY]: [ - { - encounter: ["dialogue:statTrainerMarley.encounter.1", "dialogue:statTrainerMarley.encounter.2"], - victory: ["dialogue:statTrainerMarley.victory.1", "dialogue:statTrainerMarley.victory.2"], - defeat: ["dialogue:statTrainerMarley.defeat.1", "dialogue:statTrainerMarley.defeat.2"], - }, - ], - [TrainerType.MIRA]: [ - { - encounter: ["dialogue:statTrainerMira.encounter.1", "dialogue:statTrainerMira.encounter.2"], - victory: ["dialogue:statTrainerMira.victory.1", "dialogue:statTrainerMira.victory.2"], - defeat: ["dialogue:statTrainerMira.defeat.1", "dialogue:statTrainerMira.defeat.2"], - }, - ], - [TrainerType.RILEY]: [ - { - encounter: ["dialogue:statTrainerRiley.encounter.1", "dialogue:statTrainerRiley.encounter.2"], - victory: ["dialogue:statTrainerRiley.victory.1", "dialogue:statTrainerRiley.victory.2"], - defeat: ["dialogue:statTrainerRiley.defeat.1", "dialogue:statTrainerRiley.defeat.2"], - }, - ], - [TrainerType.VICTOR]: [ - { - encounter: ["dialogue:winstratesVictor.encounter.1"], - victory: ["dialogue:winstratesVictor.victory.1"], - }, - ], - [TrainerType.VICTORIA]: [ - { - encounter: ["dialogue:winstratesVictoria.encounter.1"], - victory: ["dialogue:winstratesVictoria.victory.1"], - }, - ], - [TrainerType.VIVI]: [ - { - encounter: ["dialogue:winstratesVivi.encounter.1"], - victory: ["dialogue:winstratesVivi.victory.1"], - }, - ], - [TrainerType.VICKY]: [ - { - encounter: ["dialogue:winstratesVicky.encounter.1"], - victory: ["dialogue:winstratesVicky.victory.1"], - }, - ], - [TrainerType.VITO]: [ - { - encounter: ["dialogue:winstratesVito.encounter.1"], - victory: ["dialogue:winstratesVito.victory.1"], - }, - ], - [TrainerType.BROCK]: { - encounter: ["dialogue:brock.encounter.1", "dialogue:brock.encounter.2", "dialogue:brock.encounter.3"], - victory: ["dialogue:brock.victory.1", "dialogue:brock.victory.2", "dialogue:brock.victory.3"], - defeat: ["dialogue:brock.defeat.1", "dialogue:brock.defeat.2", "dialogue:brock.defeat.3"], - }, - [TrainerType.MISTY]: { - encounter: ["dialogue:misty.encounter.1", "dialogue:misty.encounter.2", "dialogue:misty.encounter.3"], - victory: ["dialogue:misty.victory.1", "dialogue:misty.victory.2", "dialogue:misty.victory.3"], - defeat: ["dialogue:misty.defeat.1", "dialogue:misty.defeat.2", "dialogue:misty.defeat.3"], - }, - [TrainerType.LT_SURGE]: { - encounter: ["dialogue:ltSurge.encounter.1", "dialogue:ltSurge.encounter.2", "dialogue:ltSurge.encounter.3"], - victory: ["dialogue:ltSurge.victory.1", "dialogue:ltSurge.victory.2", "dialogue:ltSurge.victory.3"], - defeat: ["dialogue:ltSurge.defeat.1", "dialogue:ltSurge.defeat.2", "dialogue:ltSurge.defeat.3"], - }, - [TrainerType.ERIKA]: { - encounter: [ - "dialogue:erika.encounter.1", - "dialogue:erika.encounter.2", - "dialogue:erika.encounter.3", - "dialogue:erika.encounter.4", - ], - victory: [ - "dialogue:erika.victory.1", - "dialogue:erika.victory.2", - "dialogue:erika.victory.3", - "dialogue:erika.victory.4", - ], - defeat: [ - "dialogue:erika.defeat.1", - "dialogue:erika.defeat.2", - "dialogue:erika.defeat.3", - "dialogue:erika.defeat.4", - ], - }, - [TrainerType.JANINE]: { - encounter: ["dialogue:janine.encounter.1", "dialogue:janine.encounter.2", "dialogue:janine.encounter.3"], - victory: ["dialogue:janine.victory.1", "dialogue:janine.victory.2", "dialogue:janine.victory.3"], - defeat: ["dialogue:janine.defeat.1", "dialogue:janine.defeat.2", "dialogue:janine.defeat.3"], - }, - [TrainerType.SABRINA]: { - encounter: ["dialogue:sabrina.encounter.1", "dialogue:sabrina.encounter.2", "dialogue:sabrina.encounter.3"], - victory: ["dialogue:sabrina.victory.1", "dialogue:sabrina.victory.2", "dialogue:sabrina.victory.3"], - defeat: ["dialogue:sabrina.defeat.1", "dialogue:sabrina.defeat.2", "dialogue:sabrina.defeat.3"], - }, - [TrainerType.BLAINE]: { - encounter: ["dialogue:blaine.encounter.1", "dialogue:blaine.encounter.2", "dialogue:blaine.encounter.3"], - victory: ["dialogue:blaine.victory.1", "dialogue:blaine.victory.2", "dialogue:blaine.victory.3"], - defeat: ["dialogue:blaine.defeat.1", "dialogue:blaine.defeat.2", "dialogue:blaine.defeat.3"], - }, - [TrainerType.GIOVANNI]: { - encounter: ["dialogue:giovanni.encounter.1", "dialogue:giovanni.encounter.2", "dialogue:giovanni.encounter.3"], - victory: ["dialogue:giovanni.victory.1", "dialogue:giovanni.victory.2", "dialogue:giovanni.victory.3"], - defeat: ["dialogue:giovanni.defeat.1", "dialogue:giovanni.defeat.2", "dialogue:giovanni.defeat.3"], - }, - [TrainerType.ROXANNE]: { - encounter: ["dialogue:roxanne.encounter.1", "dialogue:roxanne.encounter.2", "dialogue:roxanne.encounter.3"], - victory: ["dialogue:roxanne.victory.1", "dialogue:roxanne.victory.2", "dialogue:roxanne.victory.3"], - defeat: ["dialogue:roxanne.defeat.1", "dialogue:roxanne.defeat.2", "dialogue:roxanne.defeat.3"], - }, - [TrainerType.BRAWLY]: { - encounter: ["dialogue:brawly.encounter.1", "dialogue:brawly.encounter.2", "dialogue:brawly.encounter.3"], - victory: ["dialogue:brawly.victory.1", "dialogue:brawly.victory.2", "dialogue:brawly.victory.3"], - defeat: ["dialogue:brawly.defeat.1", "dialogue:brawly.defeat.2", "dialogue:brawly.defeat.3"], - }, - [TrainerType.WATTSON]: { - encounter: ["dialogue:wattson.encounter.1", "dialogue:wattson.encounter.2", "dialogue:wattson.encounter.3"], - victory: ["dialogue:wattson.victory.1", "dialogue:wattson.victory.2", "dialogue:wattson.victory.3"], - defeat: ["dialogue:wattson.defeat.1", "dialogue:wattson.defeat.2", "dialogue:wattson.defeat.3"], - }, - [TrainerType.FLANNERY]: { - encounter: ["dialogue:flannery.encounter.1", "dialogue:flannery.encounter.2", "dialogue:flannery.encounter.3"], - victory: ["dialogue:flannery.victory.1", "dialogue:flannery.victory.2", "dialogue:flannery.victory.3"], - defeat: ["dialogue:flannery.defeat.1", "dialogue:flannery.defeat.2", "dialogue:flannery.defeat.3"], - }, - [TrainerType.NORMAN]: { - encounter: ["dialogue:norman.encounter.1", "dialogue:norman.encounter.2", "dialogue:norman.encounter.3"], - victory: ["dialogue:norman.victory.1", "dialogue:norman.victory.2", "dialogue:norman.victory.3"], - defeat: ["dialogue:norman.defeat.1", "dialogue:norman.defeat.2", "dialogue:norman.defeat.3"], - }, - [TrainerType.WINONA]: { - encounter: ["dialogue:winona.encounter.1", "dialogue:winona.encounter.2", "dialogue:winona.encounter.3"], - victory: ["dialogue:winona.victory.1", "dialogue:winona.victory.2", "dialogue:winona.victory.3"], - defeat: ["dialogue:winona.defeat.1", "dialogue:winona.defeat.2", "dialogue:winona.defeat.3"], - }, - [TrainerType.TATE]: { - encounter: ["dialogue:tate.encounter.1", "dialogue:tate.encounter.2", "dialogue:tate.encounter.3"], - victory: ["dialogue:tate.victory.1", "dialogue:tate.victory.2", "dialogue:tate.victory.3"], - defeat: ["dialogue:tate.defeat.1", "dialogue:tate.defeat.2", "dialogue:tate.defeat.3"], - }, - [TrainerType.LIZA]: { - encounter: ["dialogue:liza.encounter.1", "dialogue:liza.encounter.2", "dialogue:liza.encounter.3"], - victory: ["dialogue:liza.victory.1", "dialogue:liza.victory.2", "dialogue:liza.victory.3"], - defeat: ["dialogue:liza.defeat.1", "dialogue:liza.defeat.2", "dialogue:liza.defeat.3"], - }, - [TrainerType.JUAN]: { - encounter: [ - "dialogue:juan.encounter.1", - "dialogue:juan.encounter.2", - "dialogue:juan.encounter.3", - "dialogue:juan.encounter.4", - ], - victory: [ - "dialogue:juan.victory.1", - "dialogue:juan.victory.2", - "dialogue:juan.victory.3", - "dialogue:juan.victory.4", - ], - defeat: ["dialogue:juan.defeat.1", "dialogue:juan.defeat.2", "dialogue:juan.defeat.3", "dialogue:juan.defeat.4"], - }, - [TrainerType.CRASHER_WAKE]: { - encounter: [ - "dialogue:crasherWake.encounter.1", - "dialogue:crasherWake.encounter.2", - "dialogue:crasherWake.encounter.3", - ], - victory: ["dialogue:crasherWake.victory.1", "dialogue:crasherWake.victory.2", "dialogue:crasherWake.victory.3"], - defeat: ["dialogue:crasherWake.defeat.1", "dialogue:crasherWake.defeat.2", "dialogue:crasherWake.defeat.3"], - }, - [TrainerType.FALKNER]: { - encounter: ["dialogue:falkner.encounter.1", "dialogue:falkner.encounter.2", "dialogue:falkner.encounter.3"], - victory: ["dialogue:falkner.victory.1", "dialogue:falkner.victory.2", "dialogue:falkner.victory.3"], - defeat: ["dialogue:falkner.defeat.1", "dialogue:falkner.defeat.2", "dialogue:falkner.defeat.3"], - }, - [TrainerType.NESSA]: { - encounter: ["dialogue:nessa.encounter.1", "dialogue:nessa.encounter.2", "dialogue:nessa.encounter.3"], - victory: ["dialogue:nessa.victory.1", "dialogue:nessa.victory.2", "dialogue:nessa.victory.3"], - defeat: ["dialogue:nessa.defeat.1", "dialogue:nessa.defeat.2", "dialogue:nessa.defeat.3"], - }, - [TrainerType.MELONY]: { - encounter: ["dialogue:melony.encounter.1", "dialogue:melony.encounter.2", "dialogue:melony.encounter.3"], - victory: ["dialogue:melony.victory.1", "dialogue:melony.victory.2", "dialogue:melony.victory.3"], - defeat: ["dialogue:melony.defeat.1", "dialogue:melony.defeat.2", "dialogue:melony.defeat.3"], - }, - [TrainerType.MARLON]: { - encounter: ["dialogue:marlon.encounter.1", "dialogue:marlon.encounter.2", "dialogue:marlon.encounter.3"], - victory: ["dialogue:marlon.victory.1", "dialogue:marlon.victory.2", "dialogue:marlon.victory.3"], - defeat: ["dialogue:marlon.defeat.1", "dialogue:marlon.defeat.2", "dialogue:marlon.defeat.3"], - }, - [TrainerType.SHAUNTAL]: { - encounter: ["dialogue:shauntal.encounter.1", "dialogue:shauntal.encounter.2", "dialogue:shauntal.encounter.3"], - victory: ["dialogue:shauntal.victory.1", "dialogue:shauntal.victory.2", "dialogue:shauntal.victory.3"], - defeat: ["dialogue:shauntal.defeat.1", "dialogue:shauntal.defeat.2", "dialogue:shauntal.defeat.3"], - }, - [TrainerType.MARSHAL]: { - encounter: ["dialogue:marshal.encounter.1", "dialogue:marshal.encounter.2", "dialogue:marshal.encounter.3"], - victory: ["dialogue:marshal.victory.1", "dialogue:marshal.victory.2", "dialogue:marshal.victory.3"], - defeat: ["dialogue:marshal.defeat.1", "dialogue:marshal.defeat.2", "dialogue:marshal.defeat.3"], - }, - [TrainerType.CHEREN]: { - encounter: ["dialogue:cheren.encounter.1", "dialogue:cheren.encounter.2", "dialogue:cheren.encounter.3"], - victory: ["dialogue:cheren.victory.1", "dialogue:cheren.victory.2", "dialogue:cheren.victory.3"], - defeat: ["dialogue:cheren.defeat.1", "dialogue:cheren.defeat.2", "dialogue:cheren.defeat.3"], - }, - [TrainerType.CHILI]: { - encounter: ["dialogue:chili.encounter.1", "dialogue:chili.encounter.2", "dialogue:chili.encounter.3"], - victory: ["dialogue:chili.victory.1", "dialogue:chili.victory.2", "dialogue:chili.victory.3"], - defeat: ["dialogue:chili.defeat.1", "dialogue:chili.defeat.2", "dialogue:chili.defeat.3"], - }, - [TrainerType.CILAN]: { - encounter: ["dialogue:cilan.encounter.1", "dialogue:cilan.encounter.2", "dialogue:cilan.encounter.3"], - victory: ["dialogue:cilan.victory.1", "dialogue:cilan.victory.2", "dialogue:cilan.victory.3"], - defeat: ["dialogue:cilan.defeat.1", "dialogue:cilan.defeat.2", "dialogue:cilan.defeat.3"], - }, - [TrainerType.ROARK]: { - encounter: [ - "dialogue:roark.encounter.1", - "dialogue:roark.encounter.2", - "dialogue:roark.encounter.3", - "dialogue:roark.encounter.4", - ], - victory: [ - "dialogue:roark.victory.1", - "dialogue:roark.victory.2", - "dialogue:roark.victory.3", - "dialogue:roark.victory.4", - ], - defeat: ["dialogue:roark.defeat.1", "dialogue:roark.defeat.2", "dialogue:roark.defeat.3"], - }, - [TrainerType.MORTY]: { - encounter: [ - "dialogue:morty.encounter.1", - "dialogue:morty.encounter.2", - "dialogue:morty.encounter.3", - "dialogue:morty.encounter.4", - "dialogue:morty.encounter.5", - "dialogue:morty.encounter.6", - ], - victory: [ - "dialogue:morty.victory.1", - "dialogue:morty.victory.2", - "dialogue:morty.victory.3", - "dialogue:morty.victory.4", - "dialogue:morty.victory.5", - "dialogue:morty.victory.6", - ], - defeat: [ - "dialogue:morty.defeat.1", - "dialogue:morty.defeat.2", - "dialogue:morty.defeat.3", - "dialogue:morty.defeat.4", - "dialogue:morty.defeat.5", - "dialogue:morty.defeat.6", - ], - }, - [TrainerType.CRISPIN]: { - encounter: ["dialogue:crispin.encounter.1", "dialogue:crispin.encounter.2"], - victory: ["dialogue:crispin.victory.1", "dialogue:crispin.victory.2"], - defeat: ["dialogue:crispin.defeat.1", "dialogue:crispin.defeat.2"], - }, - [TrainerType.AMARYS]: { - encounter: ["dialogue:amarys.encounter.1"], - victory: ["dialogue:amarys.victory.1"], - defeat: ["dialogue:amarys.defeat.1"], - }, - [TrainerType.LACEY]: { - encounter: ["dialogue:lacey.encounter.1"], - victory: ["dialogue:lacey.victory.1"], - defeat: ["dialogue:lacey.defeat.1"], - }, - [TrainerType.DRAYTON]: { - encounter: ["dialogue:drayton.encounter.1"], - victory: ["dialogue:drayton.victory.1"], - defeat: ["dialogue:drayton.defeat.1"], - }, - [TrainerType.RAMOS]: { - encounter: ["dialogue:ramos.encounter.1"], - victory: ["dialogue:ramos.victory.1"], - defeat: ["dialogue:ramos.defeat.1"], - }, - [TrainerType.VIOLA]: { - encounter: ["dialogue:viola.encounter.1", "dialogue:viola.encounter.2"], - victory: ["dialogue:viola.victory.1", "dialogue:viola.victory.2"], - defeat: ["dialogue:viola.defeat.1", "dialogue:viola.defeat.2"], - }, - [TrainerType.CANDICE]: { - encounter: ["dialogue:candice.encounter.1", "dialogue:candice.encounter.2"], - victory: ["dialogue:candice.victory.1", "dialogue:candice.victory.2"], - defeat: ["dialogue:candice.defeat.1", "dialogue:candice.defeat.2"], - }, - [TrainerType.GARDENIA]: { - encounter: ["dialogue:gardenia.encounter.1"], - victory: ["dialogue:gardenia.victory.1"], - defeat: ["dialogue:gardenia.defeat.1"], - }, - [TrainerType.AARON]: { - encounter: ["dialogue:aaron.encounter.1"], - victory: ["dialogue:aaron.victory.1"], - defeat: ["dialogue:aaron.defeat.1"], - }, - [TrainerType.CRESS]: { - encounter: ["dialogue:cress.encounter.1"], - victory: ["dialogue:cress.victory.1"], - defeat: ["dialogue:cress.defeat.1"], - }, - [TrainerType.ALLISTER]: { - encounter: ["dialogue:allister.encounter.1"], - victory: ["dialogue:allister.victory.1"], - defeat: ["dialogue:allister.defeat.1"], - }, - [TrainerType.CLAY]: { - encounter: ["dialogue:clay.encounter.1"], - victory: ["dialogue:clay.victory.1"], - defeat: ["dialogue:clay.defeat.1"], - }, - [TrainerType.KOFU]: { - encounter: ["dialogue:kofu.encounter.1"], - victory: ["dialogue:kofu.victory.1"], - defeat: ["dialogue:kofu.defeat.1"], - }, - [TrainerType.TULIP]: { - encounter: ["dialogue:tulip.encounter.1"], - victory: ["dialogue:tulip.victory.1"], - defeat: ["dialogue:tulip.defeat.1"], - }, - [TrainerType.SIDNEY]: { - encounter: ["dialogue:sidney.encounter.1"], - victory: ["dialogue:sidney.victory.1"], - defeat: ["dialogue:sidney.defeat.1"], - }, - [TrainerType.PHOEBE]: { - encounter: ["dialogue:phoebe.encounter.1"], - victory: ["dialogue:phoebe.victory.1"], - defeat: ["dialogue:phoebe.defeat.1"], - }, - [TrainerType.GLACIA]: { - encounter: ["dialogue:glacia.encounter.1"], - victory: ["dialogue:glacia.victory.1"], - defeat: ["dialogue:glacia.defeat.1"], - }, - [TrainerType.DRAKE]: { - encounter: ["dialogue:drake.encounter.1"], - victory: ["dialogue:drake.victory.1"], - defeat: ["dialogue:drake.defeat.1"], - }, - [TrainerType.WALLACE]: { - encounter: ["dialogue:wallace.encounter.1"], - victory: ["dialogue:wallace.victory.1"], - defeat: ["dialogue:wallace.defeat.1"], - }, - [TrainerType.LORELEI]: { - encounter: ["dialogue:lorelei.encounter.1"], - victory: ["dialogue:lorelei.victory.1"], - defeat: ["dialogue:lorelei.defeat.1"], - }, - [TrainerType.WILL]: { - encounter: ["dialogue:will.encounter.1"], - victory: ["dialogue:will.victory.1"], - defeat: ["dialogue:will.defeat.1"], - }, - [TrainerType.MALVA]: { - encounter: ["dialogue:malva.encounter.1"], - victory: ["dialogue:malva.victory.1"], - defeat: ["dialogue:malva.defeat.1"], - }, - [TrainerType.HALA]: { - encounter: ["dialogue:hala.encounter.1"], - victory: ["dialogue:hala.victory.1"], - defeat: ["dialogue:hala.defeat.1"], - }, - [TrainerType.MOLAYNE]: { - encounter: ["dialogue:molayne.encounter.1"], - victory: ["dialogue:molayne.victory.1"], - defeat: ["dialogue:molayne.defeat.1"], - }, - [TrainerType.RIKA]: { - encounter: ["dialogue:rika.encounter.1"], - victory: ["dialogue:rika.victory.1"], - defeat: ["dialogue:rika.defeat.1"], - }, - [TrainerType.BRUNO]: { - encounter: ["dialogue:bruno.encounter.1"], - victory: ["dialogue:bruno.victory.1"], - defeat: ["dialogue:bruno.defeat.1"], - }, - [TrainerType.BUGSY]: { - encounter: ["dialogue:bugsy.encounter.1"], - victory: ["dialogue:bugsy.victory.1"], - defeat: ["dialogue:bugsy.defeat.1"], - }, - [TrainerType.KOGA]: { - encounter: ["dialogue:koga.encounter.1"], - victory: ["dialogue:koga.victory.1"], - defeat: ["dialogue:koga.defeat.1"], - }, - [TrainerType.BERTHA]: { - encounter: ["dialogue:bertha.encounter.1"], - victory: ["dialogue:bertha.victory.1"], - defeat: ["dialogue:bertha.defeat.1"], - }, - [TrainerType.LENORA]: { - encounter: ["dialogue:lenora.encounter.1"], - victory: ["dialogue:lenora.victory.1"], - defeat: ["dialogue:lenora.defeat.1"], - }, - [TrainerType.SIEBOLD]: { - encounter: ["dialogue:siebold.encounter.1"], - victory: ["dialogue:siebold.victory.1"], - defeat: ["dialogue:siebold.defeat.1"], - }, - [TrainerType.ROXIE]: { - encounter: ["dialogue:roxie.encounter.1"], - victory: ["dialogue:roxie.victory.1"], - defeat: ["dialogue:roxie.defeat.1"], - }, - [TrainerType.OLIVIA]: { - encounter: ["dialogue:olivia.encounter.1"], - victory: ["dialogue:olivia.victory.1"], - defeat: ["dialogue:olivia.defeat.1"], - }, - [TrainerType.POPPY]: { - encounter: ["dialogue:poppy.encounter.1"], - victory: ["dialogue:poppy.victory.1"], - defeat: ["dialogue:poppy.defeat.1"], - }, - [TrainerType.AGATHA]: { - encounter: ["dialogue:agatha.encounter.1"], - victory: ["dialogue:agatha.victory.1"], - defeat: ["dialogue:agatha.defeat.1"], - }, - [TrainerType.FLINT]: { - encounter: ["dialogue:flint.encounter.1"], - victory: ["dialogue:flint.victory.1"], - defeat: ["dialogue:flint.defeat.1"], - }, - [TrainerType.GRIMSLEY]: { - encounter: ["dialogue:grimsley.encounter.1"], - victory: ["dialogue:grimsley.victory.1"], - defeat: ["dialogue:grimsley.defeat.1"], - }, - [TrainerType.CAITLIN]: { - encounter: ["dialogue:caitlin.encounter.1"], - victory: ["dialogue:caitlin.victory.1"], - defeat: ["dialogue:caitlin.defeat.1"], - }, - [TrainerType.DIANTHA]: { - encounter: ["dialogue:diantha.encounter.1"], - victory: ["dialogue:diantha.victory.1"], - defeat: ["dialogue:diantha.defeat.1"], - }, - [TrainerType.WIKSTROM]: { - encounter: ["dialogue:wikstrom.encounter.1"], - victory: ["dialogue:wikstrom.victory.1"], - defeat: ["dialogue:wikstrom.defeat.1"], - }, - [TrainerType.ACEROLA]: { - encounter: ["dialogue:acerola.encounter.1"], - victory: ["dialogue:acerola.victory.1"], - defeat: ["dialogue:acerola.defeat.1"], - }, - [TrainerType.LARRY_ELITE]: { - encounter: ["dialogue:larryElite.encounter.1"], - victory: ["dialogue:larryElite.victory.1"], - defeat: ["dialogue:larryElite.defeat.1"], - }, - [TrainerType.LANCE]: { - encounter: ["dialogue:lance.encounter.1", "dialogue:lance.encounter.2"], - victory: ["dialogue:lance.victory.1", "dialogue:lance.victory.2"], - defeat: ["dialogue:lance.defeat.1", "dialogue:lance.defeat.2"], - }, - [TrainerType.KAREN]: { - encounter: ["dialogue:karen.encounter.1", "dialogue:karen.encounter.2", "dialogue:karen.encounter.3"], - victory: ["dialogue:karen.victory.1", "dialogue:karen.victory.2", "dialogue:karen.victory.3"], - defeat: ["dialogue:karen.defeat.1", "dialogue:karen.defeat.2", "dialogue:karen.defeat.3"], - }, - [TrainerType.MILO]: { - encounter: ["dialogue:milo.encounter.1"], - victory: ["dialogue:milo.victory.1"], - defeat: ["dialogue:milo.defeat.1"], - }, - [TrainerType.LUCIAN]: { - encounter: ["dialogue:lucian.encounter.1"], - victory: ["dialogue:lucian.victory.1"], - defeat: ["dialogue:lucian.defeat.1"], - }, - [TrainerType.DRASNA]: { - encounter: ["dialogue:drasna.encounter.1"], - victory: ["dialogue:drasna.victory.1"], - defeat: ["dialogue:drasna.defeat.1"], - }, - [TrainerType.KAHILI]: { - encounter: ["dialogue:kahili.encounter.1"], - victory: ["dialogue:kahili.victory.1"], - defeat: ["dialogue:kahili.defeat.1"], - }, - [TrainerType.HASSEL]: { - encounter: ["dialogue:hassel.encounter.1"], - victory: ["dialogue:hassel.victory.1"], - defeat: ["dialogue:hassel.defeat.1"], - }, - [TrainerType.BLUE]: { - encounter: ["dialogue:blue.encounter.1"], - victory: ["dialogue:blue.victory.1"], - defeat: ["dialogue:blue.defeat.1"], - }, - [TrainerType.PIERS]: { - encounter: ["dialogue:piers.encounter.1"], - victory: ["dialogue:piers.victory.1"], - defeat: ["dialogue:piers.defeat.1"], - }, - [TrainerType.RED]: { - encounter: ["dialogue:red.encounter.1"], - victory: ["dialogue:red.victory.1"], - defeat: ["dialogue:red.defeat.1"], - }, - [TrainerType.JASMINE]: { - encounter: ["dialogue:jasmine.encounter.1"], - victory: ["dialogue:jasmine.victory.1"], - defeat: ["dialogue:jasmine.defeat.1"], - }, - [TrainerType.LANCE_CHAMPION]: { - encounter: ["dialogue:lanceChampion.encounter.1"], - victory: ["dialogue:lanceChampion.victory.1"], - defeat: ["dialogue:lanceChampion.defeat.1"], - }, - [TrainerType.STEVEN]: { - encounter: ["dialogue:steven.encounter.1"], - victory: ["dialogue:steven.victory.1"], - defeat: ["dialogue:steven.defeat.1"], - }, - [TrainerType.CYNTHIA]: { - encounter: ["dialogue:cynthia.encounter.1"], - victory: ["dialogue:cynthia.victory.1"], - defeat: ["dialogue:cynthia.defeat.1"], - }, - [TrainerType.IRIS]: { - encounter: ["dialogue:iris.encounter.1"], - victory: ["dialogue:iris.victory.1"], - defeat: ["dialogue:iris.defeat.1"], - }, - [TrainerType.KUKUI]: { - encounter: ["dialogue:kukui.encounter.1"], - victory: ["dialogue:kukui.victory.1"], - defeat: ["dialogue:kukui.defeat.1"], - }, - [TrainerType.HAU]: { - encounter: ["dialogue:hau.encounter.1"], - victory: ["dialogue:hau.victory.1"], - defeat: ["dialogue:hau.defeat.1"], - }, - [TrainerType.GEETA]: { - encounter: ["dialogue:geeta.encounter.1"], - victory: ["dialogue:geeta.victory.1"], - defeat: ["dialogue:geeta.defeat.1"], - }, - [TrainerType.NEMONA]: { - encounter: ["dialogue:nemona.encounter.1"], - victory: ["dialogue:nemona.victory.1"], - defeat: ["dialogue:nemona.defeat.1"], - }, - [TrainerType.LEON]: { - encounter: ["dialogue:leon.encounter.1"], - victory: ["dialogue:leon.victory.1"], - defeat: ["dialogue:leon.defeat.1"], - }, - [TrainerType.MUSTARD]: { - encounter: ["dialogue:mustard.encounter.1"], - victory: ["dialogue:mustard.victory.1"], - defeat: ["dialogue:mustard.defeat.1"], - }, - [TrainerType.WHITNEY]: { - encounter: ["dialogue:whitney.encounter.1"], - victory: ["dialogue:whitney.victory.1"], - defeat: ["dialogue:whitney.defeat.1"], - }, - [TrainerType.CHUCK]: { - encounter: ["dialogue:chuck.encounter.1"], - victory: ["dialogue:chuck.victory.1"], - defeat: ["dialogue:chuck.defeat.1"], - }, - [TrainerType.KATY]: { - encounter: ["dialogue:katy.encounter.1"], - victory: ["dialogue:katy.victory.1"], - defeat: ["dialogue:katy.defeat.1"], - }, - [TrainerType.PRYCE]: { - encounter: ["dialogue:pryce.encounter.1"], - victory: ["dialogue:pryce.victory.1"], - defeat: ["dialogue:pryce.defeat.1"], - }, - [TrainerType.CLAIR]: { - encounter: ["dialogue:clair.encounter.1"], - victory: ["dialogue:clair.victory.1"], - defeat: ["dialogue:clair.defeat.1"], - }, - [TrainerType.MAYLENE]: { - encounter: ["dialogue:maylene.encounter.1"], - victory: ["dialogue:maylene.victory.1"], - defeat: ["dialogue:maylene.defeat.1"], - }, - [TrainerType.FANTINA]: { - encounter: ["dialogue:fantina.encounter.1"], - victory: ["dialogue:fantina.victory.1"], - defeat: ["dialogue:fantina.defeat.1"], - }, - [TrainerType.BYRON]: { - encounter: ["dialogue:byron.encounter.1"], - victory: ["dialogue:byron.victory.1"], - defeat: ["dialogue:byron.defeat.1"], - }, - [TrainerType.OLYMPIA]: { - encounter: ["dialogue:olympia.encounter.1"], - victory: ["dialogue:olympia.victory.1"], - defeat: ["dialogue:olympia.defeat.1"], - }, - [TrainerType.VOLKNER]: { - encounter: ["dialogue:volkner.encounter.1"], - victory: ["dialogue:volkner.victory.1"], - defeat: ["dialogue:volkner.defeat.1"], - }, - [TrainerType.BURGH]: { - encounter: ["dialogue:burgh.encounter.1", "dialogue:burgh.encounter.2"], - victory: ["dialogue:burgh.victory.1", "dialogue:burgh.victory.2"], - defeat: ["dialogue:burgh.defeat.1", "dialogue:burgh.defeat.2"], - }, - [TrainerType.ELESA]: { - encounter: ["dialogue:elesa.encounter.1"], - victory: ["dialogue:elesa.victory.1"], - defeat: ["dialogue:elesa.defeat.1"], - }, - [TrainerType.SKYLA]: { - encounter: ["dialogue:skyla.encounter.1"], - victory: ["dialogue:skyla.victory.1"], - defeat: ["dialogue:skyla.defeat.1"], - }, - [TrainerType.BRYCEN]: { - encounter: ["dialogue:brycen.encounter.1"], - victory: ["dialogue:brycen.victory.1"], - defeat: ["dialogue:brycen.defeat.1"], - }, - [TrainerType.DRAYDEN]: { - encounter: ["dialogue:drayden.encounter.1"], - victory: ["dialogue:drayden.victory.1"], - defeat: ["dialogue:drayden.defeat.1"], - }, - [TrainerType.GRANT]: { - encounter: ["dialogue:grant.encounter.1"], - victory: ["dialogue:grant.victory.1"], - defeat: ["dialogue:grant.defeat.1"], - }, - [TrainerType.KORRINA]: { - encounter: ["dialogue:korrina.encounter.1"], - victory: ["dialogue:korrina.victory.1"], - defeat: ["dialogue:korrina.defeat.1"], - }, - [TrainerType.CLEMONT]: { - encounter: ["dialogue:clemont.encounter.1"], - victory: ["dialogue:clemont.victory.1"], - defeat: ["dialogue:clemont.defeat.1"], - }, - [TrainerType.VALERIE]: { - encounter: ["dialogue:valerie.encounter.1"], - victory: ["dialogue:valerie.victory.1"], - defeat: ["dialogue:valerie.defeat.1"], - }, - [TrainerType.WULFRIC]: { - encounter: ["dialogue:wulfric.encounter.1"], - victory: ["dialogue:wulfric.victory.1"], - defeat: ["dialogue:wulfric.defeat.1"], - }, - [TrainerType.KABU]: { - encounter: ["dialogue:kabu.encounter.1"], - victory: ["dialogue:kabu.victory.1"], - defeat: ["dialogue:kabu.defeat.1"], - }, - [TrainerType.BEA]: { - encounter: ["dialogue:bea.encounter.1"], - victory: ["dialogue:bea.victory.1"], - defeat: ["dialogue:bea.defeat.1"], - }, - [TrainerType.OPAL]: { - encounter: ["dialogue:opal.encounter.1"], - victory: ["dialogue:opal.victory.1"], - defeat: ["dialogue:opal.defeat.1"], - }, - [TrainerType.BEDE]: { - encounter: ["dialogue:bede.encounter.1"], - victory: ["dialogue:bede.victory.1"], - defeat: ["dialogue:bede.defeat.1"], - }, - [TrainerType.GORDIE]: { - encounter: ["dialogue:gordie.encounter.1"], - victory: ["dialogue:gordie.victory.1"], - defeat: ["dialogue:gordie.defeat.1"], - }, - [TrainerType.MARNIE]: { - encounter: ["dialogue:marnie.encounter.1"], - victory: ["dialogue:marnie.victory.1"], - defeat: ["dialogue:marnie.defeat.1"], - }, - [TrainerType.RAIHAN]: { - encounter: ["dialogue:raihan.encounter.1"], - victory: ["dialogue:raihan.victory.1"], - defeat: ["dialogue:raihan.defeat.1"], - }, - [TrainerType.BRASSIUS]: { - encounter: ["dialogue:brassius.encounter.1"], - victory: ["dialogue:brassius.victory.1"], - defeat: ["dialogue:brassius.defeat.1"], - }, - [TrainerType.IONO]: { - encounter: ["dialogue:iono.encounter.1"], - victory: ["dialogue:iono.victory.1"], - defeat: ["dialogue:iono.defeat.1"], - }, - [TrainerType.LARRY]: { - encounter: ["dialogue:larry.encounter.1"], - victory: ["dialogue:larry.victory.1"], - defeat: ["dialogue:larry.defeat.1"], - }, - [TrainerType.RYME]: { - encounter: ["dialogue:ryme.encounter.1"], - victory: ["dialogue:ryme.victory.1"], - defeat: ["dialogue:ryme.defeat.1"], - }, - [TrainerType.GRUSHA]: { - encounter: ["dialogue:grusha.encounter.1"], - victory: ["dialogue:grusha.victory.1"], - defeat: ["dialogue:grusha.defeat.1"], - }, - [TrainerType.MARNIE_ELITE]: { - encounter: ["dialogue:marnieElite.encounter.1", "dialogue:marnieElite.encounter.2"], - victory: ["dialogue:marnieElite.victory.1", "dialogue:marnieElite.victory.2"], - defeat: ["dialogue:marnieElite.defeat.1", "dialogue:marnieElite.defeat.2"], - }, - [TrainerType.NESSA_ELITE]: { - encounter: ["dialogue:nessaElite.encounter.1", "dialogue:nessaElite.encounter.2"], - victory: ["dialogue:nessaElite.victory.1", "dialogue:nessaElite.victory.2"], - defeat: ["dialogue:nessaElite.defeat.1", "dialogue:nessaElite.defeat.2"], - }, - [TrainerType.BEA_ELITE]: { - encounter: ["dialogue:beaElite.encounter.1", "dialogue:beaElite.encounter.2"], - victory: ["dialogue:beaElite.victory.1", "dialogue:beaElite.victory.2"], - defeat: ["dialogue:beaElite.defeat.1", "dialogue:beaElite.defeat.2"], - }, - [TrainerType.ALLISTER_ELITE]: { - encounter: ["dialogue:allisterElite.encounter.1", "dialogue:allisterElite.encounter.2"], - victory: ["dialogue:allisterElite.victory.1", "dialogue:allisterElite.victory.2"], - defeat: ["dialogue:allisterElite.defeat.1", "dialogue:allisterElite.defeat.2"], - }, - [TrainerType.RAIHAN_ELITE]: { - encounter: ["dialogue:raihanElite.encounter.1", "dialogue:raihanElite.encounter.2"], - victory: ["dialogue:raihanElite.victory.1", "dialogue:raihanElite.victory.2"], - defeat: ["dialogue:raihanElite.defeat.1", "dialogue:raihanElite.defeat.2"], - }, - [TrainerType.ALDER]: { - encounter: ["dialogue:alder.encounter.1"], - victory: ["dialogue:alder.victory.1"], - defeat: ["dialogue:alder.defeat.1"], - }, - [TrainerType.KIERAN]: { - encounter: ["dialogue:kieran.encounter.1"], - victory: ["dialogue:kieran.victory.1"], - defeat: ["dialogue:kieran.defeat.1"], - }, - [TrainerType.RIVAL]: [ - { - encounter: ["dialogue:rival.encounter.1"], - victory: ["dialogue:rival.victory.1"], - }, - { - encounter: ["dialogue:rivalFemale.encounter.1"], - victory: ["dialogue:rivalFemale.victory.1"], - }, - ], - [TrainerType.RIVAL_2]: [ - { - encounter: ["dialogue:rival2.encounter.1"], - victory: ["dialogue:rival2.victory.1"], - }, - { - encounter: ["dialogue:rival2Female.encounter.1"], - victory: ["dialogue:rival2Female.victory.1"], - defeat: ["dialogue:rival2Female.defeat.1"], - }, - ], - [TrainerType.RIVAL_3]: [ - { - encounter: ["dialogue:rival3.encounter.1"], - victory: ["dialogue:rival3.victory.1"], - }, - { - encounter: ["dialogue:rival3Female.encounter.1"], - victory: ["dialogue:rival3Female.victory.1"], - defeat: ["dialogue:rival3Female.defeat.1"], - }, - ], - [TrainerType.RIVAL_4]: [ - { - encounter: ["dialogue:rival4.encounter.1"], - victory: ["dialogue:rival4.victory.1"], - }, - { - encounter: ["dialogue:rival4Female.encounter.1"], - victory: ["dialogue:rival4Female.victory.1"], - defeat: ["dialogue:rival4Female.defeat.1"], - }, - ], - [TrainerType.RIVAL_5]: [ - { - encounter: ["dialogue:rival5.encounter.1"], - victory: ["dialogue:rival5.victory.1"], - }, - { - encounter: ["dialogue:rival5Female.encounter.1"], - victory: ["dialogue:rival5Female.victory.1"], - defeat: ["dialogue:rival5Female.defeat.1"], - }, - ], - [TrainerType.RIVAL_6]: [ - { - encounter: ["dialogue:rival6.encounter.1"], - victory: ["dialogue:rival6.victory.1"], - }, - { - encounter: ["dialogue:rival6Female.encounter.1"], - victory: ["dialogue:rival6Female.victory.1"], - }, - ], + ... randomNPCDialogue, + ... evilGruntsDialogue, + ... evilAdminDialogue, + ... evilLeaderDialogue, + ... mysteryEventTrainerDialogue, + ... gymLeaderDialogue, + ... eliteFourDialogue, + ... championDialogue, + ... rivalDialogue }; export const battleSpecDialogue = { @@ -1756,3 +78,5 @@ export function initTrainerTypeDialogue(): void { } } } +export { TrainerType }; + diff --git a/src/data/mystery-encounters/encounters/a-trainers-test-encounter.ts b/src/data/mystery-encounters/encounters/a-trainers-test-encounter.ts index 98b4d06723a..fd867a79363 100644 --- a/src/data/mystery-encounters/encounters/a-trainers-test-encounter.ts +++ b/src/data/mystery-encounters/encounters/a-trainers-test-encounter.ts @@ -19,7 +19,7 @@ import { import { getSpriteKeysFromSpecies } from "#mystery-encounters/encounter-pokemon-utils"; import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter"; -import { trainerConfigs } from "#trainers/trainer-config"; +import { trainerConfigs } from "#trainers/trainer-configs-init"; import { randSeedInt } from "#utils/common"; import i18next from "i18next"; diff --git a/src/data/mystery-encounters/encounters/bug-type-superfan-encounter.ts b/src/data/mystery-encounters/encounters/bug-type-superfan-encounter.ts index 5462c0eb336..16b621d3069 100644 --- a/src/data/mystery-encounters/encounters/bug-type-superfan-encounter.ts +++ b/src/data/mystery-encounters/encounters/bug-type-superfan-encounter.ts @@ -44,7 +44,8 @@ import { HeldItemRequirement, TypeRequirement, } from "#mystery-encounters/mystery-encounter-requirements"; -import { getRandomPartyMemberFunc, trainerConfigs } from "#trainers/trainer-config"; +import { getRandomPartyMemberFunc } from "#trainers/trainer-config"; +import { trainerConfigs } from "#trainers/trainer-configs-init"; import { TrainerPartyCompoundTemplate, TrainerPartyTemplate } from "#trainers/trainer-party-template"; import { MoveInfoOverlay } from "#ui/containers/move-info-overlay"; import type { OptionSelectItem } from "#ui/handlers/abstract-option-select-ui-handler"; diff --git a/src/data/mystery-encounters/encounters/clowning-around-encounter.ts b/src/data/mystery-encounters/encounters/clowning-around-encounter.ts index 42907455e22..6ff91bb7175 100644 --- a/src/data/mystery-encounters/encounters/clowning-around-encounter.ts +++ b/src/data/mystery-encounters/encounters/clowning-around-encounter.ts @@ -43,7 +43,7 @@ import { import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter"; import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option"; -import { trainerConfigs } from "#trainers/trainer-config"; +import { trainerConfigs } from "#trainers/trainer-configs-init"; import { TrainerPartyCompoundTemplate, TrainerPartyTemplate } from "#trainers/trainer-party-template"; import type { OptionSelectConfig } from "#ui/handlers/abstract-option-select-ui-handler"; import { randSeedInt, randSeedShuffle } from "#utils/common"; diff --git a/src/data/mystery-encounters/encounters/mysterious-challengers-encounter.ts b/src/data/mystery-encounters/encounters/mysterious-challengers-encounter.ts index 7db55010bef..13e797f01fe 100644 --- a/src/data/mystery-encounters/encounters/mysterious-challengers-encounter.ts +++ b/src/data/mystery-encounters/encounters/mysterious-challengers-encounter.ts @@ -9,7 +9,7 @@ import type { EnemyPartyConfig } from "#mystery-encounters/encounter-phase-utils import { initBattleWithEnemyConfig, setEncounterRewards } from "#mystery-encounters/encounter-phase-utils"; import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter"; -import { trainerConfigs } from "#trainers/trainer-config"; +import { trainerConfigs } from "#trainers/trainer-configs-init"; import { TrainerPartyCompoundTemplate, TrainerPartyTemplate, diff --git a/src/data/mystery-encounters/encounters/the-expert-pokemon-breeder-encounter.ts b/src/data/mystery-encounters/encounters/the-expert-pokemon-breeder-encounter.ts index b5084743613..247dde20d12 100644 --- a/src/data/mystery-encounters/encounters/the-expert-pokemon-breeder-encounter.ts +++ b/src/data/mystery-encounters/encounters/the-expert-pokemon-breeder-encounter.ts @@ -26,7 +26,7 @@ import { import type { MysteryEncounter } from "#mystery-encounters/mystery-encounter"; import { MysteryEncounterBuilder } from "#mystery-encounters/mystery-encounter"; import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encounter-option"; -import { trainerConfigs } from "#trainers/trainer-config"; +import { trainerConfigs } from "#trainers/trainer-configs-init"; import { randSeedShuffle } from "#utils/common"; import { getPokemonSpecies } from "#utils/pokemon-utils"; import i18next from "i18next"; diff --git a/src/data/mystery-encounters/encounters/weird-dream-encounter.ts b/src/data/mystery-encounters/encounters/weird-dream-encounter.ts index 1fcbd2961d1..a5145460357 100644 --- a/src/data/mystery-encounters/encounters/weird-dream-encounter.ts +++ b/src/data/mystery-encounters/encounters/weird-dream-encounter.ts @@ -38,7 +38,7 @@ import { MysteryEncounterOptionBuilder } from "#mystery-encounters/mystery-encou import i18next from "#plugins/i18n"; import { achvs } from "#system/achv"; import { PokemonData } from "#system/pokemon-data"; -import { trainerConfigs } from "#trainers/trainer-config"; +import { trainerConfigs } from "#trainers/trainer-configs-init"; import { TrainerPartyTemplate } from "#trainers/trainer-party-template"; import type { HeldModifierConfig } from "#types/held-modifier-config"; import { isNullOrUndefined, NumberHolder, randSeedInt, randSeedShuffle } from "#utils/common"; diff --git a/src/data/mystery-encounters/utils/encounter-phase-utils.ts b/src/data/mystery-encounters/utils/encounter-phase-utils.ts index fdc92994e66..aacb5a97140 100644 --- a/src/data/mystery-encounters/utils/encounter-phase-utils.ts +++ b/src/data/mystery-encounters/utils/encounter-phase-utils.ts @@ -43,8 +43,8 @@ import { showEncounterText } from "#mystery-encounters/encounter-dialogue-utils" import type { MysteryEncounterOption } from "#mystery-encounters/mystery-encounter-option"; import type { Variant } from "#sprites/variant"; import type { PokemonData } from "#system/pokemon-data"; -import type { TrainerConfig } from "#trainers/trainer-config"; -import { trainerConfigs } from "#trainers/trainer-config"; +import type { TrainerConfig } from "#trainers/trainer-configs-init"; +import { trainerConfigs } from "#trainers/trainer-configs-init"; import type { HeldModifierConfig } from "#types/held-modifier-config"; import type { OptionSelectConfig, OptionSelectItem } from "#ui/handlers/abstract-option-select-ui-handler"; import type { PartyOption, PokemonSelectFilter } from "#ui/handlers/party-ui-handler"; diff --git a/src/data/trainers/dialogue-init/champion-trainers.ts b/src/data/trainers/dialogue-init/champion-trainers.ts new file mode 100644 index 00000000000..d80fbc2eff6 --- /dev/null +++ b/src/data/trainers/dialogue-init/champion-trainers.ts @@ -0,0 +1,85 @@ +import { TrainerType, TrainerTypeDialogue } from "#data/dialogue"; + + +export const championDialogue: TrainerTypeDialogue = { + [TrainerType.BLUE]: { + encounter: ["dialogue:blue.encounter.1"], + victory: ["dialogue:blue.victory.1"], + defeat: ["dialogue:blue.defeat.1"], + }, + [TrainerType.RED]: { + encounter: ["dialogue:red.encounter.1"], + victory: ["dialogue:red.victory.1"], + defeat: ["dialogue:red.defeat.1"], + }, + [TrainerType.LANCE_CHAMPION]: { + encounter: ["dialogue:lanceChampion.encounter.1"], + victory: ["dialogue:lanceChampion.victory.1"], + defeat: ["dialogue:lanceChampion.defeat.1"], + }, + [TrainerType.STEVEN]: { + encounter: ["dialogue:steven.encounter.1"], + victory: ["dialogue:steven.victory.1"], + defeat: ["dialogue:steven.defeat.1"], + }, + [TrainerType.WALLACE]: { + encounter: ["dialogue:wallace.encounter.1"], + victory: ["dialogue:wallace.victory.1"], + defeat: ["dialogue:wallace.defeat.1"], + }, + [TrainerType.CYNTHIA]: { + encounter: ["dialogue:cynthia.encounter.1"], + victory: ["dialogue:cynthia.victory.1"], + defeat: ["dialogue:cynthia.defeat.1"], + }, + [TrainerType.ALDER]: { + encounter: ["dialogue:alder.encounter.1"], + victory: ["dialogue:alder.victory.1"], + defeat: ["dialogue:alder.defeat.1"], + }, + [TrainerType.IRIS]: { + encounter: ["dialogue:iris.encounter.1"], + victory: ["dialogue:iris.victory.1"], + defeat: ["dialogue:iris.defeat.1"], + }, + [TrainerType.DIANTHA]: { + encounter: ["dialogue:diantha.encounter.1"], + victory: ["dialogue:diantha.victory.1"], + defeat: ["dialogue:diantha.defeat.1"], + }, + [TrainerType.KUKUI]: { + encounter: ["dialogue:kukui.encounter.1"], + victory: ["dialogue:kukui.victory.1"], + defeat: ["dialogue:kukui.defeat.1"], + }, + [TrainerType.HAU]: { + encounter: ["dialogue:hau.encounter.1"], + victory: ["dialogue:hau.victory.1"], + defeat: ["dialogue:hau.defeat.1"], + }, + [TrainerType.LEON]: { + encounter: ["dialogue:leon.encounter.1"], + victory: ["dialogue:leon.victory.1"], + defeat: ["dialogue:leon.defeat.1"], + }, + [TrainerType.MUSTARD]: { + encounter: ["dialogue:mustard.encounter.1"], + victory: ["dialogue:mustard.victory.1"], + defeat: ["dialogue:mustard.defeat.1"], + }, + [TrainerType.GEETA]: { + encounter: ["dialogue:geeta.encounter.1"], + victory: ["dialogue:geeta.victory.1"], + defeat: ["dialogue:geeta.defeat.1"], + }, + [TrainerType.NEMONA]: { + encounter: ["dialogue:nemona.encounter.1"], + victory: ["dialogue:nemona.victory.1"], + defeat: ["dialogue:nemona.defeat.1"], + }, + [TrainerType.KIERAN]: { + encounter: ["dialogue:kieran.encounter.1"], + victory: ["dialogue:kieran.victory.1"], + defeat: ["dialogue:kieran.defeat.1"], + }, +} \ No newline at end of file diff --git a/src/data/trainers/dialogue-init/elite-four-trainers.ts b/src/data/trainers/dialogue-init/elite-four-trainers.ts new file mode 100644 index 00000000000..08ef0b382cf --- /dev/null +++ b/src/data/trainers/dialogue-init/elite-four-trainers.ts @@ -0,0 +1,223 @@ +import { TrainerType, TrainerTypeDialogue } from "#data/dialogue"; + + +export const eliteFourDialogue : TrainerTypeDialogue = { + // Kanto Elite Four + [TrainerType.LORELEI]: { + encounter: ["dialogue:lorelei.encounter.1"], + victory: ["dialogue:lorelei.victory.1"], + defeat: ["dialogue:lorelei.defeat.1"], + }, + [TrainerType.BRUNO]: { + encounter: ["dialogue:bruno.encounter.1"], + victory: ["dialogue:bruno.victory.1"], + defeat: ["dialogue:bruno.defeat.1"], + }, + [TrainerType.AGATHA]: { + encounter: ["dialogue:agatha.encounter.1"], + victory: ["dialogue:agatha.victory.1"], + defeat: ["dialogue:agatha.defeat.1"], + }, + [TrainerType.LANCE]: { + encounter: ["dialogue:lance.encounter.1", "dialogue:lance.encounter.2"], + victory: ["dialogue:lance.victory.1", "dialogue:lance.victory.2"], + defeat: ["dialogue:lance.defeat.1", "dialogue:lance.defeat.2"], + }, + // Johto Elite Four + [TrainerType.WILL]: { + encounter: ["dialogue:will.encounter.1"], + victory: ["dialogue:will.victory.1"], + defeat: ["dialogue:will.defeat.1"], + }, + [TrainerType.KOGA]: { + encounter: ["dialogue:koga.encounter.1"], + victory: ["dialogue:koga.victory.1"], + defeat: ["dialogue:koga.defeat.1"], + }, + [TrainerType.KAREN]: { + encounter: ["dialogue:karen.encounter.1", "dialogue:karen.encounter.2", "dialogue:karen.encounter.3"], + victory: ["dialogue:karen.victory.1", "dialogue:karen.victory.2", "dialogue:karen.victory.3"], + defeat: ["dialogue:karen.defeat.1", "dialogue:karen.defeat.2", "dialogue:karen.defeat.3"], + }, + // Hoenn Elite Four + [TrainerType.SIDNEY]: { + encounter: ["dialogue:sidney.encounter.1"], + victory: ["dialogue:sidney.victory.1"], + defeat: ["dialogue:sidney.defeat.1"], + }, + [TrainerType.PHOEBE]: { + encounter: ["dialogue:phoebe.encounter.1"], + victory: ["dialogue:phoebe.victory.1"], + defeat: ["dialogue:phoebe.defeat.1"], + }, + [TrainerType.GLACIA]: { + encounter: ["dialogue:glacia.encounter.1"], + victory: ["dialogue:glacia.victory.1"], + defeat: ["dialogue:glacia.defeat.1"], + }, + [TrainerType.DRAKE]: { + encounter: ["dialogue:drake.encounter.1"], + victory: ["dialogue:drake.victory.1"], + defeat: ["dialogue:drake.defeat.1"], + }, + // Sinnoh Elite Four + [TrainerType.AARON]: { + encounter: ["dialogue:aaron.encounter.1"], + victory: ["dialogue:aaron.victory.1"], + defeat: ["dialogue:aaron.defeat.1"], + }, + [TrainerType.BERTHA]: { + encounter: ["dialogue:bertha.encounter.1"], + victory: ["dialogue:bertha.victory.1"], + defeat: ["dialogue:bertha.defeat.1"], + }, + [TrainerType.FLINT]: { + encounter: ["dialogue:flint.encounter.1"], + victory: ["dialogue:flint.victory.1"], + defeat: ["dialogue:flint.defeat.1"], + }, + [TrainerType.LUCIAN]: { + encounter: ["dialogue:lucian.encounter.1"], + victory: ["dialogue:lucian.victory.1"], + defeat: ["dialogue:lucian.defeat.1"], + }, + + // Unova Elite Four + [TrainerType.SHAUNTAL]: { + encounter: ["dialogue:shauntal.encounter.1", "dialogue:shauntal.encounter.2", "dialogue:shauntal.encounter.3"], + victory: ["dialogue:shauntal.victory.1", "dialogue:shauntal.victory.2", "dialogue:shauntal.victory.3"], + defeat: ["dialogue:shauntal.defeat.1", "dialogue:shauntal.defeat.2", "dialogue:shauntal.defeat.3"], + }, + [TrainerType.MARSHAL]: { + encounter: ["dialogue:marshal.encounter.1", "dialogue:marshal.encounter.2", "dialogue:marshal.encounter.3"], + victory: ["dialogue:marshal.victory.1", "dialogue:marshal.victory.2", "dialogue:marshal.victory.3"], + defeat: ["dialogue:marshal.defeat.1", "dialogue:marshal.defeat.2", "dialogue:marshal.defeat.3"], + }, + [TrainerType.GRIMSLEY]: { + encounter: ["dialogue:grimsley.encounter.1"], + victory: ["dialogue:grimsley.victory.1"], + defeat: ["dialogue:grimsley.defeat.1"], + }, + [TrainerType.CAITLIN]: { + encounter: ["dialogue:caitlin.encounter.1"], + victory: ["dialogue:caitlin.victory.1"], + defeat: ["dialogue:caitlin.defeat.1"], + }, + + // Kalos Elite Four + + [TrainerType.MALVA]: { + encounter: ["dialogue:malva.encounter.1"], + victory: ["dialogue:malva.victory.1"], + defeat: ["dialogue:malva.defeat.1"], + }, + [TrainerType.SIEBOLD]: { + encounter: ["dialogue:siebold.encounter.1"], + victory: ["dialogue:siebold.victory.1"], + defeat: ["dialogue:siebold.defeat.1"], + }, + [TrainerType.WIKSTROM]: { + encounter: ["dialogue:wikstrom.encounter.1"], + victory: ["dialogue:wikstrom.victory.1"], + defeat: ["dialogue:wikstrom.defeat.1"], + }, + [TrainerType.DRASNA]: { + encounter: ["dialogue:drasna.encounter.1"], + victory: ["dialogue:drasna.victory.1"], + defeat: ["dialogue:drasna.defeat.1"], + }, + // Alola Elite Four + + [TrainerType.HALA]: { + encounter: ["dialogue:hala.encounter.1"], + victory: ["dialogue:hala.victory.1"], + defeat: ["dialogue:hala.defeat.1"], + }, + [TrainerType.MOLAYNE]: { + encounter: ["dialogue:molayne.encounter.1"], + victory: ["dialogue:molayne.victory.1"], + defeat: ["dialogue:molayne.defeat.1"], + }, + [TrainerType.OLIVIA]: { + encounter: ["dialogue:olivia.encounter.1"], + victory: ["dialogue:olivia.victory.1"], + defeat: ["dialogue:olivia.defeat.1"], + }, + [TrainerType.ACEROLA]: { + encounter: ["dialogue:acerola.encounter.1"], + victory: ["dialogue:acerola.victory.1"], + defeat: ["dialogue:acerola.defeat.1"], + }, + [TrainerType.KAHILI]: { + encounter: ["dialogue:kahili.encounter.1"], + victory: ["dialogue:kahili.victory.1"], + defeat: ["dialogue:kahili.defeat.1"], + }, + // Galar Elite Four + [TrainerType.MARNIE_ELITE]: { + encounter: ["dialogue:marnieElite.encounter.1", "dialogue:marnieElite.encounter.2"], + victory: ["dialogue:marnieElite.victory.1", "dialogue:marnieElite.victory.2"], + defeat: ["dialogue:marnieElite.defeat.1", "dialogue:marnieElite.defeat.2"], + }, + [TrainerType.NESSA_ELITE]: { + encounter: ["dialogue:nessaElite.encounter.1", "dialogue:nessaElite.encounter.2"], + victory: ["dialogue:nessaElite.victory.1", "dialogue:nessaElite.victory.2"], + defeat: ["dialogue:nessaElite.defeat.1", "dialogue:nessaElite.defeat.2"], + }, + [TrainerType.BEA_ELITE]: { + encounter: ["dialogue:beaElite.encounter.1", "dialogue:beaElite.encounter.2"], + victory: ["dialogue:beaElite.victory.1", "dialogue:beaElite.victory.2"], + defeat: ["dialogue:beaElite.defeat.1", "dialogue:beaElite.defeat.2"], + }, + [TrainerType.ALLISTER_ELITE]: { + encounter: ["dialogue:allisterElite.encounter.1", "dialogue:allisterElite.encounter.2"], + victory: ["dialogue:allisterElite.victory.1", "dialogue:allisterElite.victory.2"], + defeat: ["dialogue:allisterElite.defeat.1", "dialogue:allisterElite.defeat.2"], + }, + [TrainerType.RAIHAN_ELITE]: { + encounter: ["dialogue:raihanElite.encounter.1", "dialogue:raihanElite.encounter.2"], + victory: ["dialogue:raihanElite.victory.1", "dialogue:raihanElite.victory.2"], + defeat: ["dialogue:raihanElite.defeat.1", "dialogue:raihanElite.defeat.2"], + }, + // Paldea Elite Four + [TrainerType.RIKA]: { + encounter: ["dialogue:rika.encounter.1"], + victory: ["dialogue:rika.victory.1"], + defeat: ["dialogue:rika.defeat.1"], + }, + [TrainerType.POPPY]: { + encounter: ["dialogue:poppy.encounter.1"], + victory: ["dialogue:poppy.victory.1"], + defeat: ["dialogue:poppy.defeat.1"], + }, + [TrainerType.LARRY_ELITE]: { + encounter: ["dialogue:larryElite.encounter.1"], + victory: ["dialogue:larryElite.victory.1"], + defeat: ["dialogue:larryElite.defeat.1"], + }, + [TrainerType.HASSEL]: { + encounter: ["dialogue:hassel.encounter.1"], + victory: ["dialogue:hassel.victory.1"], + defeat: ["dialogue:hassel.defeat.1"], + }, + [TrainerType.CRISPIN]: { + encounter: ["dialogue:crispin.encounter.1", "dialogue:crispin.encounter.2"], + victory: ["dialogue:crispin.victory.1", "dialogue:crispin.victory.2"], + defeat: ["dialogue:crispin.defeat.1", "dialogue:crispin.defeat.2"], + }, + [TrainerType.AMARYS]: { + encounter: ["dialogue:amarys.encounter.1"], + victory: ["dialogue:amarys.victory.1"], + defeat: ["dialogue:amarys.defeat.1"], + }, + [TrainerType.LACEY]: { + encounter: ["dialogue:lacey.encounter.1"], + victory: ["dialogue:lacey.victory.1"], + defeat: ["dialogue:lacey.defeat.1"], + }, + [TrainerType.DRAYTON]: { + encounter: ["dialogue:drayton.encounter.1"], + victory: ["dialogue:drayton.victory.1"], + defeat: ["dialogue:drayton.defeat.1"], + }, +} \ No newline at end of file diff --git a/src/data/trainers/dialogue-init/evil-organizations/evil-admin-trainers.ts b/src/data/trainers/dialogue-init/evil-organizations/evil-admin-trainers.ts new file mode 100644 index 00000000000..afbe325abc5 --- /dev/null +++ b/src/data/trainers/dialogue-init/evil-organizations/evil-admin-trainers.ts @@ -0,0 +1,143 @@ +import { TrainerTypeDialogue } from "#data/dialogue"; +import { TrainerType } from "#enums/trainer-type"; + + export const evilAdminDialogue: TrainerTypeDialogue = { + [TrainerType.ARCHER]: [ + { + encounter: ["dialogue:archer.encounter.1", "dialogue:archer.encounter.2", "dialogue:archer.encounter.3"], + victory: ["dialogue:archer.victory.1", "dialogue:archer.victory.2", "dialogue:archer.victory.3"], + }, + ], + [TrainerType.ARIANA]: [ + { + encounter: ["dialogue:ariana.encounter.1", "dialogue:ariana.encounter.2", "dialogue:ariana.encounter.3"], + victory: ["dialogue:ariana.victory.1", "dialogue:ariana.victory.2", "dialogue:ariana.victory.3"], + }, + ], + [TrainerType.PROTON]: [ + { + encounter: ["dialogue:proton.encounter.1", "dialogue:proton.encounter.2", "dialogue:proton.encounter.3"], + victory: ["dialogue:proton.victory.1", "dialogue:proton.victory.2", "dialogue:proton.victory.3"], + }, + ], + [TrainerType.PETREL]: [ + { + encounter: ["dialogue:petrel.encounter.1", "dialogue:petrel.encounter.2", "dialogue:petrel.encounter.3"], + victory: ["dialogue:petrel.victory.1", "dialogue:petrel.victory.2", "dialogue:petrel.victory.3"], + }, + ], + [TrainerType.TABITHA]: [ + { + encounter: ["dialogue:tabitha.encounter.1", "dialogue:tabitha.encounter.2", "dialogue:tabitha.encounter.3"], + victory: ["dialogue:tabitha.victory.1", "dialogue:tabitha.victory.2", "dialogue:tabitha.victory.3"], + }, + ], + [TrainerType.COURTNEY]: [ + { + encounter: ["dialogue:courtney.encounter.1", "dialogue:courtney.encounter.2", "dialogue:courtney.encounter.3"], + victory: ["dialogue:courtney.victory.1", "dialogue:courtney.victory.2", "dialogue:courtney.victory.3"], + }, + ], + [TrainerType.MATT]: [ + { + encounter: ["dialogue:matt.encounter.1", "dialogue:matt.encounter.2", "dialogue:matt.encounter.3"], + victory: ["dialogue:matt.victory.1", "dialogue:matt.victory.2", "dialogue:matt.victory.3"], + }, + ], + [TrainerType.SHELLY]: [ + { + encounter: ["dialogue:shelly.encounter.1", "dialogue:shelly.encounter.2", "dialogue:shelly.encounter.3"], + victory: ["dialogue:shelly.victory.1", "dialogue:shelly.victory.2", "dialogue:shelly.victory.3"], + }, + ], + [TrainerType.JUPITER]: [ + { + encounter: ["dialogue:jupiter.encounter.1", "dialogue:jupiter.encounter.2", "dialogue:jupiter.encounter.3"], + victory: ["dialogue:jupiter.victory.1", "dialogue:jupiter.victory.2", "dialogue:jupiter.victory.3"], + }, + ], + [TrainerType.MARS]: [ + { + encounter: ["dialogue:mars.encounter.1", "dialogue:mars.encounter.2", "dialogue:mars.encounter.3"], + victory: ["dialogue:mars.victory.1", "dialogue:mars.victory.2", "dialogue:mars.victory.3"], + }, + ], + [TrainerType.SATURN]: [ + { + encounter: ["dialogue:saturn.encounter.1", "dialogue:saturn.encounter.2", "dialogue:saturn.encounter.3"], + victory: ["dialogue:saturn.victory.1", "dialogue:saturn.victory.2", "dialogue:saturn.victory.3"], + }, + ], + [TrainerType.ZINZOLIN]: [ + { + encounter: ["dialogue:zinzolin.encounter.1", "dialogue:zinzolin.encounter.2", "dialogue:zinzolin.encounter.3"], + victory: ["dialogue:zinzolin.victory.1", "dialogue:zinzolin.victory.2", "dialogue:zinzolin.victory.3"], + }, + ], + [TrainerType.COLRESS]: [ + { + encounter: ["dialogue:colress.encounter.1", "dialogue:colress.encounter.2", "dialogue:colress.encounter.3"], + victory: ["dialogue:colress.victory.1", "dialogue:colress.victory.2", "dialogue:colress.victory.3"], + }, + ], + [TrainerType.BRYONY]: [ + { + encounter: ["dialogue:bryony.encounter.1", "dialogue:bryony.encounter.2", "dialogue:bryony.encounter.3"], + victory: ["dialogue:bryony.victory.1", "dialogue:bryony.victory.2", "dialogue:bryony.victory.3"], + }, + ], + [TrainerType.XEROSIC]: [ + { + encounter: ["dialogue:xerosic.encounter.1", "dialogue:xerosic.encounter.2", "dialogue:xerosic.encounter.3"], + victory: ["dialogue:xerosic.victory.1", "dialogue:xerosic.victory.2", "dialogue:xerosic.victory.3"], + }, + ], + [TrainerType.FABA]: [ + { + encounter: ["dialogue:faba.encounter.1", "dialogue:faba.encounter.2", "dialogue:faba.encounter.3"], + victory: ["dialogue:faba.victory.1", "dialogue:faba.victory.2", "dialogue:faba.victory.3"], + }, + ], + [TrainerType.PLUMERIA]: [ + { + encounter: ["dialogue:plumeria.encounter.1", "dialogue:plumeria.encounter.2", "dialogue:plumeria.encounter.3"], + victory: ["dialogue:plumeria.victory.1", "dialogue:plumeria.victory.2", "dialogue:plumeria.victory.3"], + }, + ], + [TrainerType.OLEANA]: [ + { + encounter: ["dialogue:oleana.encounter.1", "dialogue:oleana.encounter.2", "dialogue:oleana.encounter.3"], + victory: ["dialogue:oleana.victory.1", "dialogue:oleana.victory.2", "dialogue:oleana.victory.3"], + }, + ], + [TrainerType.GIACOMO]: [ + { + encounter: ["dialogue:giacomo.encounter.1", "dialogue:giacomo.encounter.2"], + victory: ["dialogue:giacomo.victory.1", "dialogue:giacomo.victory.2"], + }, + ], + [TrainerType.MELA]: [ + { + encounter: ["dialogue:mela.encounter.1", "dialogue:mela.encounter.2"], + victory: ["dialogue:mela.victory.1", "dialogue:mela.victory.2"], + }, + ], + [TrainerType.ATTICUS]: [ + { + encounter: ["dialogue:atticus.encounter.1", "dialogue:atticus.encounter.2"], + victory: ["dialogue:atticus.victory.1", "dialogue:atticus.victory.2"], + }, + ], + [TrainerType.ORTEGA]: [ + { + encounter: ["dialogue:ortega.encounter.1", "dialogue:ortega.encounter.2"], + victory: ["dialogue:ortega.victory.1", "dialogue:ortega.victory.2"], + }, + ], + [TrainerType.ERI]: [ + { + encounter: ["dialogue:eri.encounter.1", "dialogue:eri.encounter.2"], + victory: ["dialogue:eri.victory.1", "dialogue:eri.victory.2"], + }, + ], + } \ No newline at end of file diff --git a/src/data/trainers/dialogue-init/evil-organizations/evil-grunts-trainers.ts b/src/data/trainers/dialogue-init/evil-organizations/evil-grunts-trainers.ts new file mode 100644 index 00000000000..afe226da19e --- /dev/null +++ b/src/data/trainers/dialogue-init/evil-organizations/evil-grunts-trainers.ts @@ -0,0 +1,186 @@ +import { TrainerTypeDialogue } from "#data/dialogue"; +import { TrainerType } from "#enums/trainer-type"; + + +export const evilGruntsDialogue: TrainerTypeDialogue = { + [TrainerType.ROCKET_GRUNT]: [ + { + encounter: [ + "dialogue:rocketGrunt.encounter.1", + "dialogue:rocketGrunt.encounter.2", + "dialogue:rocketGrunt.encounter.3", + "dialogue:rocketGrunt.encounter.4", + "dialogue:rocketGrunt.encounter.5", + ], + victory: [ + "dialogue:rocketGrunt.victory.1", + "dialogue:rocketGrunt.victory.2", + "dialogue:rocketGrunt.victory.3", + "dialogue:rocketGrunt.victory.4", + "dialogue:rocketGrunt.victory.5", + ], + }, + ], + [TrainerType.MAGMA_GRUNT]: [ + { + encounter: [ + "dialogue:magmaGrunt.encounter.1", + "dialogue:magmaGrunt.encounter.2", + "dialogue:magmaGrunt.encounter.3", + "dialogue:magmaGrunt.encounter.4", + "dialogue:magmaGrunt.encounter.5", + ], + victory: [ + "dialogue:magmaGrunt.victory.1", + "dialogue:magmaGrunt.victory.2", + "dialogue:magmaGrunt.victory.3", + "dialogue:magmaGrunt.victory.4", + "dialogue:magmaGrunt.victory.5", + ], + }, + ], + [TrainerType.AQUA_GRUNT]: [ + { + encounter: [ + "dialogue:aquaGrunt.encounter.1", + "dialogue:aquaGrunt.encounter.2", + "dialogue:aquaGrunt.encounter.3", + "dialogue:aquaGrunt.encounter.4", + "dialogue:aquaGrunt.encounter.5", + ], + victory: [ + "dialogue:aquaGrunt.victory.1", + "dialogue:aquaGrunt.victory.2", + "dialogue:aquaGrunt.victory.3", + "dialogue:aquaGrunt.victory.4", + "dialogue:aquaGrunt.victory.5", + ], + }, + ], + [TrainerType.GALACTIC_GRUNT]: [ + { + encounter: [ + "dialogue:galacticGrunt.encounter.1", + "dialogue:galacticGrunt.encounter.2", + "dialogue:galacticGrunt.encounter.3", + "dialogue:galacticGrunt.encounter.4", + "dialogue:galacticGrunt.encounter.5", + ], + victory: [ + "dialogue:galacticGrunt.victory.1", + "dialogue:galacticGrunt.victory.2", + "dialogue:galacticGrunt.victory.3", + "dialogue:galacticGrunt.victory.4", + "dialogue:galacticGrunt.victory.5", + ], + }, + ], + [TrainerType.PLASMA_GRUNT]: [ + { + encounter: [ + "dialogue:plasmaGrunt.encounter.1", + "dialogue:plasmaGrunt.encounter.2", + "dialogue:plasmaGrunt.encounter.3", + "dialogue:plasmaGrunt.encounter.4", + "dialogue:plasmaGrunt.encounter.5", + ], + victory: [ + "dialogue:plasmaGrunt.victory.1", + "dialogue:plasmaGrunt.victory.2", + "dialogue:plasmaGrunt.victory.3", + "dialogue:plasmaGrunt.victory.4", + "dialogue:plasmaGrunt.victory.5", + ], + }, + ], + [TrainerType.FLARE_GRUNT]: [ + { + encounter: [ + "dialogue:flareGrunt.encounter.1", + "dialogue:flareGrunt.encounter.2", + "dialogue:flareGrunt.encounter.3", + "dialogue:flareGrunt.encounter.4", + "dialogue:flareGrunt.encounter.5", + ], + victory: [ + "dialogue:flareGrunt.victory.1", + "dialogue:flareGrunt.victory.2", + "dialogue:flareGrunt.victory.3", + "dialogue:flareGrunt.victory.4", + "dialogue:flareGrunt.victory.5", + ], + }, + ], + [TrainerType.AETHER_GRUNT]: [ + { + encounter: [ + "dialogue:aetherGrunt.encounter.1", + "dialogue:aetherGrunt.encounter.2", + "dialogue:aetherGrunt.encounter.3", + "dialogue:aetherGrunt.encounter.4", + "dialogue:aetherGrunt.encounter.5", + ], + victory: [ + "dialogue:aetherGrunt.victory.1", + "dialogue:aetherGrunt.victory.2", + "dialogue:aetherGrunt.victory.3", + "dialogue:aetherGrunt.victory.4", + "dialogue:aetherGrunt.victory.5", + ], + }, + ], + [TrainerType.SKULL_GRUNT]: [ + { + encounter: [ + "dialogue:skullGrunt.encounter.1", + "dialogue:skullGrunt.encounter.2", + "dialogue:skullGrunt.encounter.3", + "dialogue:skullGrunt.encounter.4", + "dialogue:skullGrunt.encounter.5", + ], + victory: [ + "dialogue:skullGrunt.victory.1", + "dialogue:skullGrunt.victory.2", + "dialogue:skullGrunt.victory.3", + "dialogue:skullGrunt.victory.4", + "dialogue:skullGrunt.victory.5", + ], + }, + ], + [TrainerType.MACRO_GRUNT]: [ + { + encounter: [ + "dialogue:macroGrunt.encounter.1", + "dialogue:macroGrunt.encounter.2", + "dialogue:macroGrunt.encounter.3", + "dialogue:macroGrunt.encounter.4", + "dialogue:macroGrunt.encounter.5", + ], + victory: [ + "dialogue:macroGrunt.victory.1", + "dialogue:macroGrunt.victory.2", + "dialogue:macroGrunt.victory.3", + "dialogue:macroGrunt.victory.4", + "dialogue:macroGrunt.victory.5", + ], + }, + ], + [TrainerType.STAR_GRUNT]: [ + { + encounter: [ + "dialogue:starGrunt.encounter.1", + "dialogue:starGrunt.encounter.2", + "dialogue:starGrunt.encounter.3", + "dialogue:starGrunt.encounter.4", + "dialogue:starGrunt.encounter.5", + ], + victory: [ + "dialogue:starGrunt.victory.1", + "dialogue:starGrunt.victory.2", + "dialogue:starGrunt.victory.3", + "dialogue:starGrunt.victory.4", + "dialogue:starGrunt.victory.5", + ], + }, + ], +} \ No newline at end of file diff --git a/src/data/trainers/dialogue-init/evil-organizations/evil-leader-trainers.ts b/src/data/trainers/dialogue-init/evil-organizations/evil-leader-trainers.ts new file mode 100644 index 00000000000..b4afbfc010b --- /dev/null +++ b/src/data/trainers/dialogue-init/evil-organizations/evil-leader-trainers.ts @@ -0,0 +1,146 @@ +import { TrainerTypeDialogue } from "#data/dialogue"; +import { TrainerType } from "#enums/trainer-type"; + + +export const evilLeaderDialogue: TrainerTypeDialogue = { + [TrainerType.ROCKET_BOSS_GIOVANNI_1]: [ + { + encounter: ["dialogue:rocketBossGiovanni1.encounter.1"], + victory: ["dialogue:rocketBossGiovanni1.victory.1"], + defeat: ["dialogue:rocketBossGiovanni1.defeat.1"], + }, + ], + [TrainerType.ROCKET_BOSS_GIOVANNI_2]: [ + { + encounter: ["dialogue:rocketBossGiovanni2.encounter.1"], + victory: ["dialogue:rocketBossGiovanni2.victory.1"], + defeat: ["dialogue:rocketBossGiovanni2.defeat.1"], + }, + ], + [TrainerType.MAXIE]: [ + { + encounter: ["dialogue:magmaBossMaxie1.encounter.1"], + victory: ["dialogue:magmaBossMaxie1.victory.1"], + defeat: ["dialogue:magmaBossMaxie1.defeat.1"], + }, + ], + [TrainerType.MAXIE_2]: [ + { + encounter: ["dialogue:magmaBossMaxie2.encounter.1"], + victory: ["dialogue:magmaBossMaxie2.victory.1"], + defeat: ["dialogue:magmaBossMaxie2.defeat.1"], + }, + ], + [TrainerType.ARCHIE]: [ + { + encounter: ["dialogue:aquaBossArchie1.encounter.1"], + victory: ["dialogue:aquaBossArchie1.victory.1"], + defeat: ["dialogue:aquaBossArchie1.defeat.1"], + }, + ], + [TrainerType.ARCHIE_2]: [ + { + encounter: ["dialogue:aquaBossArchie2.encounter.1"], + victory: ["dialogue:aquaBossArchie2.victory.1"], + defeat: ["dialogue:aquaBossArchie2.defeat.1"], + }, + ], + [TrainerType.CYRUS]: [ + { + encounter: ["dialogue:galacticBossCyrus1.encounter.1"], + victory: ["dialogue:galacticBossCyrus1.victory.1"], + defeat: ["dialogue:galacticBossCyrus1.defeat.1"], + }, + ], + [TrainerType.CYRUS_2]: [ + { + encounter: ["dialogue:galacticBossCyrus2.encounter.1"], + victory: ["dialogue:galacticBossCyrus2.victory.1"], + defeat: ["dialogue:galacticBossCyrus2.defeat.1"], + }, + ], + [TrainerType.GHETSIS]: [ + { + encounter: ["dialogue:plasmaBossGhetsis1.encounter.1"], + victory: ["dialogue:plasmaBossGhetsis1.victory.1"], + defeat: ["dialogue:plasmaBossGhetsis1.defeat.1"], + }, + ], + [TrainerType.GHETSIS_2]: [ + { + encounter: ["dialogue:plasmaBossGhetsis2.encounter.1"], + victory: ["dialogue:plasmaBossGhetsis2.victory.1"], + defeat: ["dialogue:plasmaBossGhetsis2.defeat.1"], + }, + ], + [TrainerType.LYSANDRE]: [ + { + encounter: ["dialogue:flareBossLysandre1.encounter.1"], + victory: ["dialogue:flareBossLysandre1.victory.1"], + defeat: ["dialogue:flareBossLysandre1.defeat.1"], + }, + ], + [TrainerType.LYSANDRE_2]: [ + { + encounter: ["dialogue:flareBossLysandre2.encounter.1"], + victory: ["dialogue:flareBossLysandre2.victory.1"], + defeat: ["dialogue:flareBossLysandre2.defeat.1"], + }, + ], + [TrainerType.LUSAMINE]: [ + { + encounter: ["dialogue:aetherBossLusamine1.encounter.1"], + victory: ["dialogue:aetherBossLusamine1.victory.1"], + defeat: ["dialogue:aetherBossLusamine1.defeat.1"], + }, + ], + [TrainerType.LUSAMINE_2]: [ + { + encounter: ["dialogue:aetherBossLusamine2.encounter.1"], + victory: ["dialogue:aetherBossLusamine2.victory.1"], + defeat: ["dialogue:aetherBossLusamine2.defeat.1"], + }, + ], + [TrainerType.GUZMA]: [ + { + encounter: ["dialogue:skullBossGuzma1.encounter.1"], + victory: ["dialogue:skullBossGuzma1.victory.1"], + defeat: ["dialogue:skullBossGuzma1.defeat.1"], + }, + ], + [TrainerType.GUZMA_2]: [ + { + encounter: ["dialogue:skullBossGuzma2.encounter.1"], + victory: ["dialogue:skullBossGuzma2.victory.1"], + defeat: ["dialogue:skullBossGuzma2.defeat.1"], + }, + ], + [TrainerType.ROSE]: [ + { + encounter: ["dialogue:macroBossRose1.encounter.1"], + victory: ["dialogue:macroBossRose1.victory.1"], + defeat: ["dialogue:macroBossRose1.defeat.1"], + }, + ], + [TrainerType.ROSE_2]: [ + { + encounter: ["dialogue:macroBossRose2.encounter.1"], + victory: ["dialogue:macroBossRose2.victory.1"], + defeat: ["dialogue:macroBossRose2.defeat.1"], + }, + ], + [TrainerType.PENNY]: [ + { + encounter: ["dialogue:starBossPenny1.encounter.1"], + victory: ["dialogue:starBossPenny1.victory.1"], + defeat: ["dialogue:starBossPenny1.defeat.1"], + }, + ], + [TrainerType.PENNY_2]: [ + { + encounter: ["dialogue:starBossPenny2.encounter.1"], + victory: ["dialogue:starBossPenny2.victory.1"], + defeat: ["dialogue:starBossPenny2.defeat.1"], + }, + ], +} \ No newline at end of file diff --git a/src/data/trainers/dialogue-init/gym-trainers.ts b/src/data/trainers/dialogue-init/gym-trainers.ts new file mode 100644 index 00000000000..3504aa95cba --- /dev/null +++ b/src/data/trainers/dialogue-init/gym-trainers.ts @@ -0,0 +1,439 @@ +import { TrainerTypeDialogue } from "#data/dialogue"; +import { TrainerType } from "#enums/trainer-type"; + +export const gymLeaderDialogue : TrainerTypeDialogue = { + // Kanto Gym Leaders + [TrainerType.BROCK]: { + encounter: ["dialogue:brock.encounter.1", "dialogue:brock.encounter.2", "dialogue:brock.encounter.3"], + victory: ["dialogue:brock.victory.1", "dialogue:brock.victory.2", "dialogue:brock.victory.3"], + defeat: ["dialogue:brock.defeat.1", "dialogue:brock.defeat.2", "dialogue:brock.defeat.3"], + }, + [TrainerType.MISTY]: { + encounter: ["dialogue:misty.encounter.1", "dialogue:misty.encounter.2", "dialogue:misty.encounter.3"], + victory: ["dialogue:misty.victory.1", "dialogue:misty.victory.2", "dialogue:misty.victory.3"], + defeat: ["dialogue:misty.defeat.1", "dialogue:misty.defeat.2", "dialogue:misty.defeat.3"], + }, + [TrainerType.LT_SURGE]: { + encounter: ["dialogue:ltSurge.encounter.1", "dialogue:ltSurge.encounter.2", "dialogue:ltSurge.encounter.3"], + victory: ["dialogue:ltSurge.victory.1", "dialogue:ltSurge.victory.2", "dialogue:ltSurge.victory.3"], + defeat: ["dialogue:ltSurge.defeat.1", "dialogue:ltSurge.defeat.2", "dialogue:ltSurge.defeat.3"], + }, + [TrainerType.ERIKA]: { + encounter: [ + "dialogue:erika.encounter.1", + "dialogue:erika.encounter.2", + "dialogue:erika.encounter.3", + "dialogue:erika.encounter.4", + ], + victory: [ + "dialogue:erika.victory.1", + "dialogue:erika.victory.2", + "dialogue:erika.victory.3", + "dialogue:erika.victory.4", + ], + defeat: [ + "dialogue:erika.defeat.1", + "dialogue:erika.defeat.2", + "dialogue:erika.defeat.3", + "dialogue:erika.defeat.4", + ], + }, + [TrainerType.JANINE]: { + encounter: ["dialogue:janine.encounter.1", "dialogue:janine.encounter.2", "dialogue:janine.encounter.3"], + victory: ["dialogue:janine.victory.1", "dialogue:janine.victory.2", "dialogue:janine.victory.3"], + defeat: ["dialogue:janine.defeat.1", "dialogue:janine.defeat.2", "dialogue:janine.defeat.3"], + }, + [TrainerType.SABRINA]: { + encounter: ["dialogue:sabrina.encounter.1", "dialogue:sabrina.encounter.2", "dialogue:sabrina.encounter.3"], + victory: ["dialogue:sabrina.victory.1", "dialogue:sabrina.victory.2", "dialogue:sabrina.victory.3"], + defeat: ["dialogue:sabrina.defeat.1", "dialogue:sabrina.defeat.2", "dialogue:sabrina.defeat.3"], + }, + [TrainerType.BLAINE]: { + encounter: ["dialogue:blaine.encounter.1", "dialogue:blaine.encounter.2", "dialogue:blaine.encounter.3"], + victory: ["dialogue:blaine.victory.1", "dialogue:blaine.victory.2", "dialogue:blaine.victory.3"], + defeat: ["dialogue:blaine.defeat.1", "dialogue:blaine.defeat.2", "dialogue:blaine.defeat.3"], + }, + [TrainerType.GIOVANNI]: { + encounter: ["dialogue:giovanni.encounter.1", "dialogue:giovanni.encounter.2", "dialogue:giovanni.encounter.3"], + victory: ["dialogue:giovanni.victory.1", "dialogue:giovanni.victory.2", "dialogue:giovanni.victory.3"], + defeat: ["dialogue:giovanni.defeat.1", "dialogue:giovanni.defeat.2", "dialogue:giovanni.defeat.3"], + }, + // Johto Gym Leaders + [TrainerType.FALKNER]: { + encounter: ["dialogue:falkner.encounter.1", "dialogue:falkner.encounter.2", "dialogue:falkner.encounter.3"], + victory: ["dialogue:falkner.victory.1", "dialogue:falkner.victory.2", "dialogue:falkner.victory.3"], + defeat: ["dialogue:falkner.defeat.1", "dialogue:falkner.defeat.2", "dialogue:falkner.defeat.3"], + }, + [TrainerType.BUGSY]: { + encounter: ["dialogue:bugsy.encounter.1"], + victory: ["dialogue:bugsy.victory.1"], + defeat: ["dialogue:bugsy.defeat.1"], + }, + [TrainerType.WHITNEY]: { + encounter: ["dialogue:whitney.encounter.1"], + victory: ["dialogue:whitney.victory.1"], + defeat: ["dialogue:whitney.defeat.1"], + }, + [TrainerType.MORTY]: { + encounter: [ + "dialogue:morty.encounter.1", + "dialogue:morty.encounter.2", + "dialogue:morty.encounter.3", + "dialogue:morty.encounter.4", + "dialogue:morty.encounter.5", + "dialogue:morty.encounter.6", + ], + victory: [ + "dialogue:morty.victory.1", + "dialogue:morty.victory.2", + "dialogue:morty.victory.3", + "dialogue:morty.victory.4", + "dialogue:morty.victory.5", + "dialogue:morty.victory.6", + ], + defeat: [ + "dialogue:morty.defeat.1", + "dialogue:morty.defeat.2", + "dialogue:morty.defeat.3", + "dialogue:morty.defeat.4", + "dialogue:morty.defeat.5", + "dialogue:morty.defeat.6", + ], + }, + [TrainerType.CHUCK]: { + encounter: ["dialogue:chuck.encounter.1"], + victory: ["dialogue:chuck.victory.1"], + defeat: ["dialogue:chuck.defeat.1"], + }, + [TrainerType.JASMINE]: { + encounter: ["dialogue:jasmine.encounter.1"], + victory: ["dialogue:jasmine.victory.1"], + defeat: ["dialogue:jasmine.defeat.1"], + }, + [TrainerType.PRYCE]: { + encounter: ["dialogue:pryce.encounter.1"], + victory: ["dialogue:pryce.victory.1"], + defeat: ["dialogue:pryce.defeat.1"], + }, + [TrainerType.CLAIR]: { + encounter: ["dialogue:clair.encounter.1"], + victory: ["dialogue:clair.victory.1"], + defeat: ["dialogue:clair.defeat.1"], + }, + // Hoenn Gym Leaders + [TrainerType.ROXANNE]: { + encounter: ["dialogue:roxanne.encounter.1", "dialogue:roxanne.encounter.2", "dialogue:roxanne.encounter.3"], + victory: ["dialogue:roxanne.victory.1", "dialogue:roxanne.victory.2", "dialogue:roxanne.victory.3"], + defeat: ["dialogue:roxanne.defeat.1", "dialogue:roxanne.defeat.2", "dialogue:roxanne.defeat.3"], + }, + [TrainerType.BRAWLY]: { + encounter: ["dialogue:brawly.encounter.1", "dialogue:brawly.encounter.2", "dialogue:brawly.encounter.3"], + victory: ["dialogue:brawly.victory.1", "dialogue:brawly.victory.2", "dialogue:brawly.victory.3"], + defeat: ["dialogue:brawly.defeat.1", "dialogue:brawly.defeat.2", "dialogue:brawly.defeat.3"], + }, + [TrainerType.WATTSON]: { + encounter: ["dialogue:wattson.encounter.1", "dialogue:wattson.encounter.2", "dialogue:wattson.encounter.3"], + victory: ["dialogue:wattson.victory.1", "dialogue:wattson.victory.2", "dialogue:wattson.victory.3"], + defeat: ["dialogue:wattson.defeat.1", "dialogue:wattson.defeat.2", "dialogue:wattson.defeat.3"], + }, + [TrainerType.FLANNERY]: { + encounter: ["dialogue:flannery.encounter.1", "dialogue:flannery.encounter.2", "dialogue:flannery.encounter.3"], + victory: ["dialogue:flannery.victory.1", "dialogue:flannery.victory.2", "dialogue:flannery.victory.3"], + defeat: ["dialogue:flannery.defeat.1", "dialogue:flannery.defeat.2", "dialogue:flannery.defeat.3"], + }, + [TrainerType.NORMAN]: { + encounter: ["dialogue:norman.encounter.1", "dialogue:norman.encounter.2", "dialogue:norman.encounter.3"], + victory: ["dialogue:norman.victory.1", "dialogue:norman.victory.2", "dialogue:norman.victory.3"], + defeat: ["dialogue:norman.defeat.1", "dialogue:norman.defeat.2", "dialogue:norman.defeat.3"], + }, + [TrainerType.WINONA]: { + encounter: ["dialogue:winona.encounter.1", "dialogue:winona.encounter.2", "dialogue:winona.encounter.3"], + victory: ["dialogue:winona.victory.1", "dialogue:winona.victory.2", "dialogue:winona.victory.3"], + defeat: ["dialogue:winona.defeat.1", "dialogue:winona.defeat.2", "dialogue:winona.defeat.3"], + }, + [TrainerType.TATE]: { + encounter: ["dialogue:tate.encounter.1", "dialogue:tate.encounter.2", "dialogue:tate.encounter.3"], + victory: ["dialogue:tate.victory.1", "dialogue:tate.victory.2", "dialogue:tate.victory.3"], + defeat: ["dialogue:tate.defeat.1", "dialogue:tate.defeat.2", "dialogue:tate.defeat.3"], + }, + [TrainerType.LIZA]: { + encounter: ["dialogue:liza.encounter.1", "dialogue:liza.encounter.2", "dialogue:liza.encounter.3"], + victory: ["dialogue:liza.victory.1", "dialogue:liza.victory.2", "dialogue:liza.victory.3"], + defeat: ["dialogue:liza.defeat.1", "dialogue:liza.defeat.2", "dialogue:liza.defeat.3"], + }, + [TrainerType.JUAN]: { + encounter: [ + "dialogue:juan.encounter.1", + "dialogue:juan.encounter.2", + "dialogue:juan.encounter.3", + "dialogue:juan.encounter.4", + ], + victory: [ + "dialogue:juan.victory.1", + "dialogue:juan.victory.2", + "dialogue:juan.victory.3", + "dialogue:juan.victory.4", + ], + defeat: ["dialogue:juan.defeat.1", "dialogue:juan.defeat.2", "dialogue:juan.defeat.3", "dialogue:juan.defeat.4"], + }, + // Sinnoh Gym Leaders + + [TrainerType.ROARK]: { + encounter: [ + "dialogue:roark.encounter.1", + "dialogue:roark.encounter.2", + "dialogue:roark.encounter.3", + "dialogue:roark.encounter.4", + ], + victory: [ + "dialogue:roark.victory.1", + "dialogue:roark.victory.2", + "dialogue:roark.victory.3", + "dialogue:roark.victory.4", + ], + defeat: ["dialogue:roark.defeat.1", "dialogue:roark.defeat.2", "dialogue:roark.defeat.3"], + }, + [TrainerType.GARDENIA]: { + encounter: ["dialogue:gardenia.encounter.1"], + victory: ["dialogue:gardenia.victory.1"], + defeat: ["dialogue:gardenia.defeat.1"], + }, + [TrainerType.MAYLENE]: { + encounter: ["dialogue:maylene.encounter.1"], + victory: ["dialogue:maylene.victory.1"], + defeat: ["dialogue:maylene.defeat.1"], + }, + [TrainerType.CRASHER_WAKE]: { + encounter: [ + "dialogue:crasherWake.encounter.1", + "dialogue:crasherWake.encounter.2", + "dialogue:crasherWake.encounter.3", + ], + victory: ["dialogue:crasherWake.victory.1", "dialogue:crasherWake.victory.2", "dialogue:crasherWake.victory.3"], + defeat: ["dialogue:crasherWake.defeat.1", "dialogue:crasherWake.defeat.2", "dialogue:crasherWake.defeat.3"], + }, + [TrainerType.FANTINA]: { + encounter: ["dialogue:fantina.encounter.1"], + victory: ["dialogue:fantina.victory.1"], + defeat: ["dialogue:fantina.defeat.1"], + }, + [TrainerType.BYRON]: { + encounter: ["dialogue:byron.encounter.1"], + victory: ["dialogue:byron.victory.1"], + defeat: ["dialogue:byron.defeat.1"], + }, + [TrainerType.CANDICE]: { + encounter: ["dialogue:candice.encounter.1", "dialogue:candice.encounter.2"], + victory: ["dialogue:candice.victory.1", "dialogue:candice.victory.2"], + defeat: ["dialogue:candice.defeat.1", "dialogue:candice.defeat.2"], + }, + [TrainerType.VOLKNER]: { + encounter: ["dialogue:volkner.encounter.1"], + victory: ["dialogue:volkner.victory.1"], + defeat: ["dialogue:volkner.defeat.1"], + }, + // Unova Gym Leaders + [TrainerType.CILAN]: { + encounter: ["dialogue:cilan.encounter.1", "dialogue:cilan.encounter.2", "dialogue:cilan.encounter.3"], + victory: ["dialogue:cilan.victory.1", "dialogue:cilan.victory.2", "dialogue:cilan.victory.3"], + defeat: ["dialogue:cilan.defeat.1", "dialogue:cilan.defeat.2", "dialogue:cilan.defeat.3"], + }, + [TrainerType.CHILI]: { + encounter: ["dialogue:chili.encounter.1", "dialogue:chili.encounter.2", "dialogue:chili.encounter.3"], + victory: ["dialogue:chili.victory.1", "dialogue:chili.victory.2", "dialogue:chili.victory.3"], + defeat: ["dialogue:chili.defeat.1", "dialogue:chili.defeat.2", "dialogue:chili.defeat.3"], + }, + [TrainerType.CRESS]: { + encounter: ["dialogue:cress.encounter.1"], + victory: ["dialogue:cress.victory.1"], + defeat: ["dialogue:cress.defeat.1"], + }, + [TrainerType.CHEREN]: { + encounter: ["dialogue:cheren.encounter.1", "dialogue:cheren.encounter.2", "dialogue:cheren.encounter.3"], + victory: ["dialogue:cheren.victory.1", "dialogue:cheren.victory.2", "dialogue:cheren.victory.3"], + defeat: ["dialogue:cheren.defeat.1", "dialogue:cheren.defeat.2", "dialogue:cheren.defeat.3"], + }, + [TrainerType.LENORA]: { + encounter: ["dialogue:lenora.encounter.1"], + victory: ["dialogue:lenora.victory.1"], + defeat: ["dialogue:lenora.defeat.1"], + }, + [TrainerType.ROXIE]: { + encounter: ["dialogue:roxie.encounter.1"], + victory: ["dialogue:roxie.victory.1"], + defeat: ["dialogue:roxie.defeat.1"], + }, + [TrainerType.BURGH]: { + encounter: ["dialogue:burgh.encounter.1", "dialogue:burgh.encounter.2"], + victory: ["dialogue:burgh.victory.1", "dialogue:burgh.victory.2"], + defeat: ["dialogue:burgh.defeat.1", "dialogue:burgh.defeat.2"], + }, + [TrainerType.ELESA]: { + encounter: ["dialogue:elesa.encounter.1"], + victory: ["dialogue:elesa.victory.1"], + defeat: ["dialogue:elesa.defeat.1"], + }, + [TrainerType.CLAY]: { + encounter: ["dialogue:clay.encounter.1"], + victory: ["dialogue:clay.victory.1"], + defeat: ["dialogue:clay.defeat.1"], + }, + [TrainerType.SKYLA]: { + encounter: ["dialogue:skyla.encounter.1"], + victory: ["dialogue:skyla.victory.1"], + defeat: ["dialogue:skyla.defeat.1"], + }, + [TrainerType.BRYCEN]: { + encounter: ["dialogue:brycen.encounter.1"], + victory: ["dialogue:brycen.victory.1"], + defeat: ["dialogue:brycen.defeat.1"], + }, + [TrainerType.DRAYDEN]: { + encounter: ["dialogue:drayden.encounter.1"], + victory: ["dialogue:drayden.victory.1"], + defeat: ["dialogue:drayden.defeat.1"], + }, + [TrainerType.MARLON]: { + encounter: ["dialogue:marlon.encounter.1", "dialogue:marlon.encounter.2", "dialogue:marlon.encounter.3"], + victory: ["dialogue:marlon.victory.1", "dialogue:marlon.victory.2", "dialogue:marlon.victory.3"], + defeat: ["dialogue:marlon.defeat.1", "dialogue:marlon.defeat.2", "dialogue:marlon.defeat.3"], + }, + // Kalos Gym Leaders + [TrainerType.VIOLA]: { + encounter: ["dialogue:viola.encounter.1", "dialogue:viola.encounter.2"], + victory: ["dialogue:viola.victory.1", "dialogue:viola.victory.2"], + defeat: ["dialogue:viola.defeat.1", "dialogue:viola.defeat.2"], + }, + [TrainerType.GRANT]: { + encounter: ["dialogue:grant.encounter.1"], + victory: ["dialogue:grant.victory.1"], + defeat: ["dialogue:grant.defeat.1"], + }, + [TrainerType.KORRINA]: { + encounter: ["dialogue:korrina.encounter.1"], + victory: ["dialogue:korrina.victory.1"], + defeat: ["dialogue:korrina.defeat.1"], + }, + [TrainerType.RAMOS]: { + encounter: ["dialogue:ramos.encounter.1"], + victory: ["dialogue:ramos.victory.1"], + defeat: ["dialogue:ramos.defeat.1"], + }, + [TrainerType.CLEMONT]: { + encounter: ["dialogue:clemont.encounter.1"], + victory: ["dialogue:clemont.victory.1"], + defeat: ["dialogue:clemont.defeat.1"], + }, + [TrainerType.VALERIE]: { + encounter: ["dialogue:valerie.encounter.1"], + victory: ["dialogue:valerie.victory.1"], + defeat: ["dialogue:valerie.defeat.1"], + }, + [TrainerType.OLYMPIA]: { + encounter: ["dialogue:olympia.encounter.1"], + victory: ["dialogue:olympia.victory.1"], + defeat: ["dialogue:olympia.defeat.1"], + }, + [TrainerType.WULFRIC]: { + encounter: ["dialogue:wulfric.encounter.1"], + victory: ["dialogue:wulfric.victory.1"], + defeat: ["dialogue:wulfric.defeat.1"], + }, + // Galar Gym Leaders + [TrainerType.MILO]: { + encounter: ["dialogue:milo.encounter.1"], + victory: ["dialogue:milo.victory.1"], + defeat: ["dialogue:milo.defeat.1"], + }, + [TrainerType.NESSA]: { + encounter: ["dialogue:nessa.encounter.1", "dialogue:nessa.encounter.2", "dialogue:nessa.encounter.3"], + victory: ["dialogue:nessa.victory.1", "dialogue:nessa.victory.2", "dialogue:nessa.victory.3"], + defeat: ["dialogue:nessa.defeat.1", "dialogue:nessa.defeat.2", "dialogue:nessa.defeat.3"], + }, + [TrainerType.KABU]: { + encounter: ["dialogue:kabu.encounter.1"], + victory: ["dialogue:kabu.victory.1"], + defeat: ["dialogue:kabu.defeat.1"], + }, + [TrainerType.ALLISTER]: { + encounter: ["dialogue:allister.encounter.1"], + victory: ["dialogue:allister.victory.1"], + defeat: ["dialogue:allister.defeat.1"], + }, + [TrainerType.OPAL]: { + encounter: ["dialogue:opal.encounter.1"], + victory: ["dialogue:opal.victory.1"], + defeat: ["dialogue:opal.defeat.1"], + }, + [TrainerType.BEDE]: { + encounter: ["dialogue:bede.encounter.1"], + victory: ["dialogue:bede.victory.1"], + defeat: ["dialogue:bede.defeat.1"], + }, + [TrainerType.GORDIE]: { + encounter: ["dialogue:gordie.encounter.1"], + victory: ["dialogue:gordie.victory.1"], + defeat: ["dialogue:gordie.defeat.1"], + }, + [TrainerType.MELONY]: { + encounter: ["dialogue:melony.encounter.1", "dialogue:melony.encounter.2", "dialogue:melony.encounter.3"], + victory: ["dialogue:melony.victory.1", "dialogue:melony.victory.2", "dialogue:melony.victory.3"], + defeat: ["dialogue:melony.defeat.1", "dialogue:melony.defeat.2", "dialogue:melony.defeat.3"], + }, + [TrainerType.PIERS]: { + encounter: ["dialogue:piers.encounter.1"], + victory: ["dialogue:piers.victory.1"], + defeat: ["dialogue:piers.defeat.1"], + }, + [TrainerType.MARNIE]: { + encounter: ["dialogue:marnie.encounter.1"], + victory: ["dialogue:marnie.victory.1"], + defeat: ["dialogue:marnie.defeat.1"], + }, + [TrainerType.RAIHAN]: { + encounter: ["dialogue:raihan.encounter.1"], + victory: ["dialogue:raihan.victory.1"], + defeat: ["dialogue:raihan.defeat.1"], + }, + // Paldea Gym Leaders + [TrainerType.KATY]: { + encounter: ["dialogue:katy.encounter.1"], + victory: ["dialogue:katy.victory.1"], + defeat: ["dialogue:katy.defeat.1"], + }, + [TrainerType.BRASSIUS]: { + encounter: ["dialogue:brassius.encounter.1"], + victory: ["dialogue:brassius.victory.1"], + defeat: ["dialogue:brassius.defeat.1"], + }, + [TrainerType.IONO]: { + encounter: ["dialogue:iono.encounter.1"], + victory: ["dialogue:iono.victory.1"], + defeat: ["dialogue:iono.defeat.1"], + }, + [TrainerType.KOFU]: { + encounter: ["dialogue:kofu.encounter.1"], + victory: ["dialogue:kofu.victory.1"], + defeat: ["dialogue:kofu.defeat.1"], + }, + [TrainerType.LARRY]: { + encounter: ["dialogue:larry.encounter.1"], + victory: ["dialogue:larry.victory.1"], + defeat: ["dialogue:larry.defeat.1"], + }, + [TrainerType.RYME]: { + encounter: ["dialogue:ryme.encounter.1"], + victory: ["dialogue:ryme.victory.1"], + defeat: ["dialogue:ryme.defeat.1"], + }, + [TrainerType.TULIP]: { + encounter: ["dialogue:tulip.encounter.1"], + victory: ["dialogue:tulip.victory.1"], + defeat: ["dialogue:tulip.defeat.1"], + }, + [TrainerType.GRUSHA]: { + encounter: ["dialogue:grusha.encounter.1"], + victory: ["dialogue:grusha.victory.1"], + defeat: ["dialogue:grusha.defeat.1"], + }, +} \ No newline at end of file diff --git a/src/data/trainers/dialogue-init/mystery-event-trainers.ts b/src/data/trainers/dialogue-init/mystery-event-trainers.ts new file mode 100644 index 00000000000..d0dc40f9788 --- /dev/null +++ b/src/data/trainers/dialogue-init/mystery-event-trainers.ts @@ -0,0 +1,70 @@ +import { TrainerType, TrainerTypeDialogue } from "#data/dialogue"; + + +export const mysteryEventTrainerDialogue: TrainerTypeDialogue = { + [TrainerType.BUCK]: [ + { + encounter: ["dialogue:statTrainerBuck.encounter.1", "dialogue:statTrainerBuck.encounter.2"], + victory: ["dialogue:statTrainerBuck.victory.1", "dialogue:statTrainerBuck.victory.2"], + defeat: ["dialogue:statTrainerBuck.defeat.1", "dialogue:statTrainerBuck.defeat.2"], + }, + ], + [TrainerType.CHERYL]: [ + { + encounter: ["dialogue:statTrainerCheryl.encounter.1", "dialogue:statTrainerCheryl.encounter.2"], + victory: ["dialogue:statTrainerCheryl.victory.1", "dialogue:statTrainerCheryl.victory.2"], + defeat: ["dialogue:statTrainerCheryl.defeat.1", "dialogue:statTrainerCheryl.defeat.2"], + }, + ], + [TrainerType.MARLEY]: [ + { + encounter: ["dialogue:statTrainerMarley.encounter.1", "dialogue:statTrainerMarley.encounter.2"], + victory: ["dialogue:statTrainerMarley.victory.1", "dialogue:statTrainerMarley.victory.2"], + defeat: ["dialogue:statTrainerMarley.defeat.1", "dialogue:statTrainerMarley.defeat.2"], + }, + ], + [TrainerType.MIRA]: [ + { + encounter: ["dialogue:statTrainerMira.encounter.1", "dialogue:statTrainerMira.encounter.2"], + victory: ["dialogue:statTrainerMira.victory.1", "dialogue:statTrainerMira.victory.2"], + defeat: ["dialogue:statTrainerMira.defeat.1", "dialogue:statTrainerMira.defeat.2"], + }, + ], + [TrainerType.RILEY]: [ + { + encounter: ["dialogue:statTrainerRiley.encounter.1", "dialogue:statTrainerRiley.encounter.2"], + victory: ["dialogue:statTrainerRiley.victory.1", "dialogue:statTrainerRiley.victory.2"], + defeat: ["dialogue:statTrainerRiley.defeat.1", "dialogue:statTrainerRiley.defeat.2"], + }, + ], + [TrainerType.VICTOR]: [ + { + encounter: ["dialogue:winstratesVictor.encounter.1"], + victory: ["dialogue:winstratesVictor.victory.1"], + }, + ], + [TrainerType.VICTORIA]: [ + { + encounter: ["dialogue:winstratesVictoria.encounter.1"], + victory: ["dialogue:winstratesVictoria.victory.1"], + }, + ], + [TrainerType.VIVI]: [ + { + encounter: ["dialogue:winstratesVivi.encounter.1"], + victory: ["dialogue:winstratesVivi.victory.1"], + }, + ], + [TrainerType.VICKY]: [ + { + encounter: ["dialogue:winstratesVicky.encounter.1"], + victory: ["dialogue:winstratesVicky.victory.1"], + }, + ], + [TrainerType.VITO]: [ + { + encounter: ["dialogue:winstratesVito.encounter.1"], + victory: ["dialogue:winstratesVito.victory.1"], + }, + ], +} \ No newline at end of file diff --git a/src/data/trainers/dialogue-init/random-npcs-trainers.ts b/src/data/trainers/dialogue-init/random-npcs-trainers.ts new file mode 100644 index 00000000000..2a9987b7b90 --- /dev/null +++ b/src/data/trainers/dialogue-init/random-npcs-trainers.ts @@ -0,0 +1,513 @@ +import { TrainerTypeDialogue } from "#data/dialogue"; +import { TrainerType } from "#enums/trainer-type"; + +export const randomNPCDialogue: TrainerTypeDialogue = { + [TrainerType.YOUNGSTER]: [ + { + encounter: [ + "dialogue:youngster.encounter.1", + "dialogue:youngster.encounter.2", + "dialogue:youngster.encounter.3", + "dialogue:youngster.encounter.4", + "dialogue:youngster.encounter.5", + "dialogue:youngster.encounter.6", + "dialogue:youngster.encounter.7", + "dialogue:youngster.encounter.8", + "dialogue:youngster.encounter.9", + "dialogue:youngster.encounter.10", + "dialogue:youngster.encounter.11", + "dialogue:youngster.encounter.12", + "dialogue:youngster.encounter.13", + ], + victory: [ + "dialogue:youngster.victory.1", + "dialogue:youngster.victory.2", + "dialogue:youngster.victory.3", + "dialogue:youngster.victory.4", + "dialogue:youngster.victory.5", + "dialogue:youngster.victory.6", + "dialogue:youngster.victory.7", + "dialogue:youngster.victory.8", + "dialogue:youngster.victory.9", + "dialogue:youngster.victory.10", + "dialogue:youngster.victory.11", + "dialogue:youngster.victory.12", + "dialogue:youngster.victory.13", + ], + }, + { + encounter: [ + "dialogue:lass.encounter.1", + "dialogue:lass.encounter.2", + "dialogue:lass.encounter.3", + "dialogue:lass.encounter.4", + "dialogue:lass.encounter.5", + "dialogue:lass.encounter.6", + "dialogue:lass.encounter.7", + "dialogue:lass.encounter.8", + "dialogue:lass.encounter.9", + ], + victory: [ + "dialogue:lass.victory.1", + "dialogue:lass.victory.2", + "dialogue:lass.victory.3", + "dialogue:lass.victory.4", + "dialogue:lass.victory.5", + "dialogue:lass.victory.6", + "dialogue:lass.victory.7", + "dialogue:lass.victory.8", + "dialogue:lass.victory.9", + ], + }, + ], + [TrainerType.BREEDER]: [ + { + encounter: [ + "dialogue:breeder.encounter.1", + "dialogue:breeder.encounter.2", + "dialogue:breeder.encounter.3", + ], + victory: [ + "dialogue:breeder.victory.1", + "dialogue:breeder.victory.2", + "dialogue:breeder.victory.3", + ], + defeat: [ + "dialogue:breeder.defeat.1", + "dialogue:breeder.defeat.2", + "dialogue:breeder.defeat.3", + ], + }, + { + encounter: [ + "dialogue:breederFemale.encounter.1", + "dialogue:breederFemale.encounter.2", + "dialogue:breederFemale.encounter.3", + ], + victory: [ + "dialogue:breederFemale.victory.1", + "dialogue:breederFemale.victory.2", + "dialogue:breederFemale.victory.3", + ], + defeat: [ + "dialogue:breederFemale.defeat.1", + "dialogue:breederFemale.defeat.2", + "dialogue:breederFemale.defeat.3", + ], + }, + ], + [TrainerType.FISHERMAN]: [ + { + encounter: [ + "dialogue:fisherman.encounter.1", + "dialogue:fisherman.encounter.2", + "dialogue:fisherman.encounter.3", + ], + victory: [ + "dialogue:fisherman.victory.1", + "dialogue:fisherman.victory.2", + "dialogue:fisherman.victory.3", + ], + }, + { + encounter: [ + "dialogue:fishermanFemale.encounter.1", + "dialogue:fishermanFemale.encounter.2", + "dialogue:fishermanFemale.encounter.3", + ], + victory: [ + "dialogue:fishermanFemale.victory.1", + "dialogue:fishermanFemale.victory.2", + "dialogue:fishermanFemale.victory.3", + ], + }, + ], + [TrainerType.SWIMMER]: [ + { + encounter: [ + "dialogue:swimmer.encounter.1", + "dialogue:swimmer.encounter.2", + "dialogue:swimmer.encounter.3", + ], + victory: [ + "dialogue:swimmer.victory.1", + "dialogue:swimmer.victory.2", + "dialogue:swimmer.victory.3", + ], + }, + ], + [TrainerType.BACKPACKER]: [ + { + encounter: [ + "dialogue:backpacker.encounter.1", + "dialogue:backpacker.encounter.2", + "dialogue:backpacker.encounter.3", + "dialogue:backpacker.encounter.4", + ], + victory: [ + "dialogue:backpacker.victory.1", + "dialogue:backpacker.victory.2", + "dialogue:backpacker.victory.3", + "dialogue:backpacker.victory.4", + ], + }, + ], + [TrainerType.ACE_TRAINER]: [ + { + encounter: [ + "dialogue:aceTrainer.encounter.1", + "dialogue:aceTrainer.encounter.2", + "dialogue:aceTrainer.encounter.3", + "dialogue:aceTrainer.encounter.4", + ], + victory: [ + "dialogue:aceTrainer.victory.1", + "dialogue:aceTrainer.victory.2", + "dialogue:aceTrainer.victory.3", + "dialogue:aceTrainer.victory.4", + ], + defeat: [ + "dialogue:aceTrainer.defeat.1", + "dialogue:aceTrainer.defeat.2", + "dialogue:aceTrainer.defeat.3", + "dialogue:aceTrainer.defeat.4", + ], + }, + ], + [TrainerType.PARASOL_LADY]: [ + { + encounter: ["dialogue:parasolLady.encounter.1"], + victory: ["dialogue:parasolLady.victory.1"], + }, + ], + [TrainerType.TWINS]: [ + { + encounter: [ + "dialogue:twins.encounter.1", + "dialogue:twins.encounter.2", + "dialogue:twins.encounter.3", + ], + victory: [ + "dialogue:twins.victory.1", + "dialogue:twins.victory.2", + "dialogue:twins.victory.3", + ], + defeat: [ + "dialogue:twins.defeat.1", + "dialogue:twins.defeat.2", + "dialogue:twins.defeat.3", + ], + }, + ], + [TrainerType.CYCLIST]: [ + { + encounter: [ + "dialogue:cyclist.encounter.1", + "dialogue:cyclist.encounter.2", + "dialogue:cyclist.encounter.3", + ], + victory: [ + "dialogue:cyclist.victory.1", + "dialogue:cyclist.victory.2", + "dialogue:cyclist.victory.3", + ], + }, + ], + [TrainerType.BLACK_BELT]: [ + { + encounter: [ + "dialogue:blackBelt.encounter.1", + "dialogue:blackBelt.encounter.2", + ], + victory: ["dialogue:blackBelt.victory.1", "dialogue:blackBelt.victory.2"], + }, + //BATTLE GIRL + { + encounter: ["dialogue:battleGirl.encounter.1"], + victory: ["dialogue:battleGirl.victory.1"], + }, + ], + [TrainerType.HIKER]: [ + { + encounter: ["dialogue:hiker.encounter.1", "dialogue:hiker.encounter.2"], + victory: ["dialogue:hiker.victory.1", "dialogue:hiker.victory.2"], + }, + ], + [TrainerType.RANGER]: [ + { + encounter: ["dialogue:ranger.encounter.1", "dialogue:ranger.encounter.2"], + victory: ["dialogue:ranger.victory.1", "dialogue:ranger.victory.2"], + defeat: ["dialogue:ranger.defeat.1", "dialogue:ranger.defeat.2"], + }, + ], + [TrainerType.SCIENTIST]: [ + { + encounter: ["dialogue:scientist.encounter.1"], + victory: ["dialogue:scientist.victory.1"], + }, + ], + [TrainerType.SCHOOL_KID]: [ + { + encounter: [ + "dialogue:schoolKid.encounter.1", + "dialogue:schoolKid.encounter.2", + ], + victory: ["dialogue:schoolKid.victory.1", "dialogue:schoolKid.victory.2"], + }, + ], + [TrainerType.ARTIST]: [ + { + encounter: ["dialogue:artist.encounter.1"], + victory: ["dialogue:artist.victory.1"], + }, + ], + [TrainerType.GUITARIST]: [ + { + encounter: ["dialogue:guitarist.encounter.1"], + victory: ["dialogue:guitarist.victory.1"], + }, + ], + [TrainerType.WORKER]: [ + { + encounter: ["dialogue:worker.encounter.1"], + victory: ["dialogue:worker.victory.1"], + }, + { + encounter: ["dialogue:workerFemale.encounter.1"], + victory: ["dialogue:workerFemale.victory.1"], + defeat: ["dialogue:workerFemale.defeat.1"], + }, + { + encounter: ["dialogue:workerDouble.encounter.1"], + victory: ["dialogue:workerDouble.victory.1"], + }, + ], + // Defeat dialogue in the language .JSONS exist as translated or placeholders; (en, fr, it, es, de, ja, ko, zh_cn, zh_tw, pt_br) + [TrainerType.SNOW_WORKER]: [ + { + encounter: ["dialogue:snowWorker.encounter.1"], + victory: ["dialogue:snowWorker.victory.1"], + }, + { + encounter: ["dialogue:snowWorkerDouble.encounter.1"], + victory: ["dialogue:snowWorkerDouble.victory.1"], + }, + ], + [TrainerType.HEX_MANIAC]: [ + { + encounter: [ + "dialogue:hexManiac.encounter.1", + "dialogue:hexManiac.encounter.2", + ], + victory: ["dialogue:hexManiac.victory.1", "dialogue:hexManiac.victory.2"], + defeat: ["dialogue:hexManiac.defeat.1", "dialogue:hexManiac.defeat.2"], + }, + ], + [TrainerType.PSYCHIC]: [ + { + encounter: ["dialogue:psychic.encounter.1"], + victory: ["dialogue:psychic.victory.1"], + }, + ], + [TrainerType.OFFICER]: [ + { + encounter: [ + "dialogue:officer.encounter.1", + "dialogue:officer.encounter.2", + ], + victory: ["dialogue:officer.victory.1", "dialogue:officer.victory.2"], + }, + ], + [TrainerType.BEAUTY]: [ + { + encounter: ["dialogue:beauty.encounter.1"], + victory: ["dialogue:beauty.victory.1"], + }, + ], + [TrainerType.BAKER]: [ + { + encounter: ["dialogue:baker.encounter.1"], + victory: ["dialogue:baker.victory.1"], + }, + ], + [TrainerType.BIKER]: [ + { + encounter: ["dialogue:biker.encounter.1"], + victory: ["dialogue:biker.victory.1"], + }, + ], + [TrainerType.FIREBREATHER]: [ + { + encounter: [ + "dialogue:firebreather.encounter.1", + "dialogue:firebreather.encounter.2", + "dialogue:firebreather.encounter.3", + ], + victory: [ + "dialogue:firebreather.victory.1", + "dialogue:firebreather.victory.2", + "dialogue:firebreather.victory.3", + ], + }, + ], + [TrainerType.SAILOR]: [ + { + encounter: [ + "dialogue:sailor.encounter.1", + "dialogue:sailor.encounter.2", + "dialogue:sailor.encounter.3", + ], + victory: [ + "dialogue:sailor.victory.1", + "dialogue:sailor.victory.2", + "dialogue:sailor.victory.3", + ], + }, + ], + [TrainerType.CLERK]: [ + { + encounter: [ + "dialogue:clerk.encounter.1", + "dialogue:clerk.encounter.2", + "dialogue:clerk.encounter.3", + ], + victory: [ + "dialogue:clerk.victory.1", + "dialogue:clerk.victory.2", + "dialogue:clerk.victory.3", + ], + }, + { + encounter: [ + "dialogue:clerkFemale.encounter.1", + "dialogue:clerkFemale.encounter.2", + "dialogue:clerkFemale.encounter.3", + ], + victory: [ + "dialogue:clerkFemale.victory.1", + "dialogue:clerkFemale.victory.2", + "dialogue:clerkFemale.victory.3", + ], + }, + ], + [TrainerType.HOOLIGANS]: [ + { + encounter: [ + "dialogue:hooligans.encounter.1", + "dialogue:hooligans.encounter.2", + ], + victory: ["dialogue:hooligans.victory.1", "dialogue:hooligans.victory.2"], + }, + ], + [TrainerType.MUSICIAN]: [ + { + encounter: [ + "dialogue:musician.encounter.1", + "dialogue:musician.encounter.2", + "dialogue:musician.encounter.3", + "dialogue:musician.encounter.4", + ], + victory: [ + "dialogue:musician.victory.1", + "dialogue:musician.victory.2", + "dialogue:musician.victory.3", + ], + }, + ], + [TrainerType.PILOT]: [ + { + encounter: [ + "dialogue:pilot.encounter.1", + "dialogue:pilot.encounter.2", + "dialogue:pilot.encounter.3", + "dialogue:pilot.encounter.4", + ], + victory: [ + "dialogue:pilot.victory.1", + "dialogue:pilot.victory.2", + "dialogue:pilot.victory.3", + "dialogue:pilot.victory.4", + ], + }, + ], + [TrainerType.POKEFAN]: [ + { + encounter: [ + "dialogue:pokefan.encounter.1", + "dialogue:pokefan.encounter.2", + "dialogue:pokefan.encounter.3", + ], + victory: [ + "dialogue:pokefan.victory.1", + "dialogue:pokefan.victory.2", + "dialogue:pokefan.victory.3", + ], + }, + { + encounter: [ + "dialogue:pokefanFemale.encounter.1", + "dialogue:pokefanFemale.encounter.2", + "dialogue:pokefanFemale.encounter.3", + ], + victory: [ + "dialogue:pokefanFemale.victory.1", + "dialogue:pokefanFemale.victory.2", + "dialogue:pokefanFemale.victory.3", + ], + }, + ], + [TrainerType.RICH]: [ + { + encounter: [ + "dialogue:rich.encounter.1", + "dialogue:rich.encounter.2", + "dialogue:rich.encounter.3", + ], + victory: [ + "dialogue:rich.victory.1", + "dialogue:rich.victory.2", + "dialogue:rich.victory.3", + ], + }, + { + encounter: [ + "dialogue:richFemale.encounter.1", + "dialogue:richFemale.encounter.2", + "dialogue:richFemale.encounter.3", + ], + victory: [ + "dialogue:richFemale.victory.1", + "dialogue:richFemale.victory.2", + "dialogue:richFemale.victory.3", + ], + }, + ], + [TrainerType.RICH_KID]: [ + { + encounter: [ + "dialogue:richKid.encounter.1", + "dialogue:richKid.encounter.2", + "dialogue:richKid.encounter.3", + ], + victory: [ + "dialogue:richKid.victory.1", + "dialogue:richKid.victory.2", + "dialogue:richKid.victory.3", + "dialogue:richKid.victory.4", + ], + }, + { + encounter: [ + "dialogue:richKidFemale.encounter.1", + "dialogue:richKidFemale.encounter.2", + "dialogue:richKidFemale.encounter.3", + ], + victory: [ + "dialogue:richKidFemale.victory.1", + "dialogue:richKidFemale.victory.2", + "dialogue:richKidFemale.victory.3", + "dialogue:richKidFemale.victory.4", + ], + }, + ], +}; diff --git a/src/data/trainers/dialogue-init/rival-trainer.ts b/src/data/trainers/dialogue-init/rival-trainer.ts new file mode 100644 index 00000000000..8c45ab27f24 --- /dev/null +++ b/src/data/trainers/dialogue-init/rival-trainer.ts @@ -0,0 +1,69 @@ +import { TrainerType, TrainerTypeDialogue } from "#data/dialogue"; + + +export const rivalDialogue: TrainerTypeDialogue = { + [TrainerType.RIVAL]: [ + { + encounter: ["dialogue:rival.encounter.1"], + victory: ["dialogue:rival.victory.1"], + }, + { + encounter: ["dialogue:rivalFemale.encounter.1"], + victory: ["dialogue:rivalFemale.victory.1"], + }, + ], + [TrainerType.RIVAL_2]: [ + { + encounter: ["dialogue:rival2.encounter.1"], + victory: ["dialogue:rival2.victory.1"], + }, + { + encounter: ["dialogue:rival2Female.encounter.1"], + victory: ["dialogue:rival2Female.victory.1"], + defeat: ["dialogue:rival2Female.defeat.1"], + }, + ], + [TrainerType.RIVAL_3]: [ + { + encounter: ["dialogue:rival3.encounter.1"], + victory: ["dialogue:rival3.victory.1"], + }, + { + encounter: ["dialogue:rival3Female.encounter.1"], + victory: ["dialogue:rival3Female.victory.1"], + defeat: ["dialogue:rival3Female.defeat.1"], + }, + ], + [TrainerType.RIVAL_4]: [ + { + encounter: ["dialogue:rival4.encounter.1"], + victory: ["dialogue:rival4.victory.1"], + }, + { + encounter: ["dialogue:rival4Female.encounter.1"], + victory: ["dialogue:rival4Female.victory.1"], + defeat: ["dialogue:rival4Female.defeat.1"], + }, + ], + [TrainerType.RIVAL_5]: [ + { + encounter: ["dialogue:rival5.encounter.1"], + victory: ["dialogue:rival5.victory.1"], + }, + { + encounter: ["dialogue:rival5Female.encounter.1"], + victory: ["dialogue:rival5Female.victory.1"], + defeat: ["dialogue:rival5Female.defeat.1"], + }, + ], + [TrainerType.RIVAL_6]: [ + { + encounter: ["dialogue:rival6.encounter.1"], + victory: ["dialogue:rival6.victory.1"], + }, + { + encounter: ["dialogue:rival6Female.encounter.1"], + victory: ["dialogue:rival6Female.victory.1"], + }, + ], +} \ No newline at end of file diff --git a/src/data/trainers/trainer-config.ts b/src/data/trainers/trainer-config.ts index 2b81406bf6c..a1652958784 100644 --- a/src/data/trainers/trainer-config.ts +++ b/src/data/trainers/trainer-config.ts @@ -1,16 +1,7 @@ -import { timedEventManager } from "#app/global-event-manager"; import { globalScene } from "#app/global-scene"; -import { pokemonEvolutions, pokemonPrevolutions } from "#balance/pokemon-evolutions"; -import { signatureSpecies } from "#balance/signature-species"; -import { tmSpecies } from "#balance/tms"; -import { modifierTypes } from "#data/data-lists"; import { doubleBattleDialogue } from "#data/double-battle-dialogue"; -import { Gender } from "#data/gender"; import type { PokemonSpecies, PokemonSpeciesFilter } from "#data/pokemon-species"; -import { AbilityId } from "#enums/ability-id"; -import { MoveId } from "#enums/move-id"; import { PartyMemberStrength } from "#enums/party-member-strength"; -import { PokeballType } from "#enums/pokeball"; import { PokemonType } from "#enums/pokemon-type"; import { SpeciesId } from "#enums/species-id"; import { TeraAIMode } from "#enums/tera-ai-mode"; @@ -19,15 +10,11 @@ import { TrainerSlot } from "#enums/trainer-slot"; import { TrainerType } from "#enums/trainer-type"; import { TrainerVariant } from "#enums/trainer-variant"; import type { EnemyPokemon } from "#field/pokemon"; -import { PokemonMove } from "#moves/pokemon-move"; import { getIsInitialized, initI18n } from "#plugins/i18n"; import type { EvilTeam } from "#trainers/evil-admin-trainer-pools"; import { evilAdminTrainerPools } from "#trainers/evil-admin-trainer-pools"; import { - getEvilGruntPartyTemplate, getGymLeaderPartyTemplate, - getWavePartyTemplate, - TrainerPartyCompoundTemplate, TrainerPartyTemplate, trainerPartyTemplates, } from "#trainers/trainer-party-template"; @@ -38,18 +25,12 @@ import type { PartyMemberFunc, PartyMemberFuncs, PartyTemplateFunc, - TrainerConfigs, TrainerTierPools, } from "#types/trainer-funcs"; -import { coerceArray, isNullOrUndefined, randSeedInt, randSeedIntRange, randSeedItem } from "#utils/common"; +import { coerceArray, isNullOrUndefined, randSeedItem } from "#utils/common"; import { getPokemonSpecies } from "#utils/pokemon-utils"; import { toCamelCase, toTitleCase } from "#utils/strings"; import i18next from "i18next"; -import { mysteryEventTrainers } from "./trainers-init/mystery-event-trainers"; -import { evilAdminTrainers } from "./trainers-init/evil-organizations/evil-leaders-trainers"; -import { rivalTrainer } from "./trainers-init/rival-trainer"; -import { championTrainers } from "./trainers-init/champion-trainers"; -import { eliteFourTrainers } from "./trainers-init/elite-four-trainers"; /** Minimum BST for Pokemon generated onto the Elite Four's teams */ const ELITE_FOUR_MINIMUM_BST = 460; @@ -962,8 +943,6 @@ export class TrainerConfig { } } -let t = 0; - let trainerCounter = 0; export function nextTrainerId() : number { return ++trainerCounter; @@ -973,6 +952,10 @@ export function setTrainerId(trainerID: number) : number { return trainerCounter } +export function isMoveNullOrUndefined(move): boolean{ + return move === null || move === undefined; +} + /** * Randomly selects one of the `Species` from `speciesPool`, determines its evolution, level, and strength. * Then adds Pokemon to globalScene. @@ -1009,7 +992,7 @@ export function getRandomPartyMemberFunc( }; } -function getSpeciesFilterRandomPartyMemberFunc( +export function getSpeciesFilterRandomPartyMemberFunc( originalSpeciesFilter: PokemonSpeciesFilter, trainerSlot: TrainerSlot = TrainerSlot.TRAINER, allowLegendaries?: boolean, @@ -1031,1918 +1014,3 @@ function getSpeciesFilterRandomPartyMemberFunc( return globalScene.addEnemyPokemon(species, level, trainerSlot, undefined, false, undefined, postProcess); }; } - -export const trainerConfigs: TrainerConfigs = { - [TrainerType.UNKNOWN]: new TrainerConfig(0).setHasGenders(), - [TrainerType.ACE_TRAINER]: new TrainerConfig(++t) - .setHasGenders("Ace Trainer Female") - .setHasDouble("Ace Duo") - .setMoneyMultiplier(2.25) - .setEncounterBgm(TrainerType.ACE_TRAINER) - .setPartyTemplateFunc(() => - getWavePartyTemplate( - trainerPartyTemplates.THREE_WEAK_BALANCED, - trainerPartyTemplates.FOUR_WEAK_BALANCED, - trainerPartyTemplates.FIVE_WEAK_BALANCED, - trainerPartyTemplates.SIX_WEAK_BALANCED, - ), - ), - [TrainerType.ARTIST]: new TrainerConfig(++t) - .setEncounterBgm(TrainerType.RICH) - .setPartyTemplates(trainerPartyTemplates.ONE_STRONG, trainerPartyTemplates.TWO_AVG, trainerPartyTemplates.THREE_AVG) - .setSpeciesPools([SpeciesId.SMEARGLE]), - [TrainerType.BACKERS]: new TrainerConfig(++t) - .setHasGenders("Backers") - .setDoubleOnly() - .setEncounterBgm(TrainerType.CYCLIST), - [TrainerType.BACKPACKER]: new TrainerConfig(++t) - .setHasGenders("Backpacker Female") - .setHasDouble("Backpackers") - .setSpeciesFilter(s => s.isOfType(PokemonType.FLYING) || s.isOfType(PokemonType.ROCK)) - .setEncounterBgm(TrainerType.BACKPACKER) - .setPartyTemplates( - trainerPartyTemplates.ONE_STRONG, - trainerPartyTemplates.ONE_WEAK_ONE_STRONG, - trainerPartyTemplates.ONE_AVG_ONE_STRONG, - ) - .setSpeciesPools({ - [TrainerPoolTier.COMMON]: [ - SpeciesId.RHYHORN, - SpeciesId.AIPOM, - SpeciesId.MAKUHITA, - SpeciesId.MAWILE, - SpeciesId.NUMEL, - SpeciesId.LILLIPUP, - SpeciesId.SANDILE, - SpeciesId.WOOLOO, - ], - [TrainerPoolTier.UNCOMMON]: [ - SpeciesId.GIRAFARIG, - SpeciesId.ZANGOOSE, - SpeciesId.SEVIPER, - SpeciesId.CUBCHOO, - SpeciesId.PANCHAM, - SpeciesId.SKIDDO, - SpeciesId.MUDBRAY, - ], - [TrainerPoolTier.RARE]: [ - SpeciesId.TAUROS, - SpeciesId.STANTLER, - SpeciesId.DARUMAKA, - SpeciesId.BOUFFALANT, - SpeciesId.DEERLING, - SpeciesId.IMPIDIMP, - ], - [TrainerPoolTier.SUPER_RARE]: [SpeciesId.GALAR_DARUMAKA, SpeciesId.TEDDIURSA], - }), - [TrainerType.BAKER]: new TrainerConfig(++t) - .setEncounterBgm(TrainerType.CLERK) - .setMoneyMultiplier(1.35) - .setSpeciesFilter( - s => - [s.ability1, s.ability2, s.abilityHidden].some( - a => - !!a - && [ - AbilityId.WHITE_SMOKE, - AbilityId.GLUTTONY, - AbilityId.HONEY_GATHER, - AbilityId.HARVEST, - AbilityId.CHEEK_POUCH, - AbilityId.SWEET_VEIL, - AbilityId.RIPEN, - AbilityId.PURIFYING_SALT, - AbilityId.WELL_BAKED_BODY, - AbilityId.SUPERSWEET_SYRUP, - AbilityId.HOSPITALITY, - ].includes(a), - ) - || s - .getLevelMoves() - .some(plm => - [MoveId.SOFT_BOILED, MoveId.SPORE, MoveId.MILK_DRINK, MoveId.OVERHEAT, MoveId.TEATIME].includes(plm[1]), - ), - ), // Mons with baking related abilities or who learn Overheat, Teatime, Milk Drink, Spore, or Soft-Boiled by level - [TrainerType.BEAUTY]: new TrainerConfig(++t) - .setMoneyMultiplier(1.55) - .setEncounterBgm(TrainerType.PARASOL_LADY) - .setPartyTemplates( - trainerPartyTemplates.TWO_AVG_SAME_ONE_AVG, - trainerPartyTemplates.TWO_AVG_SAME_ONE_STRONG, - trainerPartyTemplates.THREE_AVG_SAME, - trainerPartyTemplates.THREE_AVG, - trainerPartyTemplates.FOUR_WEAK, - trainerPartyTemplates.ONE_STRONG, - ) - .setSpeciesPools({ - [TrainerPoolTier.COMMON]: [ - SpeciesId.MEOWTH, - SpeciesId.GOLDEEN, - SpeciesId.MAREEP, - SpeciesId.MARILL, - SpeciesId.SKITTY, - SpeciesId.GLAMEOW, - SpeciesId.PURRLOIN, - ], - [TrainerPoolTier.UNCOMMON]: [ - SpeciesId.SMOOCHUM, - SpeciesId.ROSELIA, - SpeciesId.LUVDISC, - SpeciesId.BLITZLE, - SpeciesId.SEWADDLE, - SpeciesId.PETILIL, - SpeciesId.MINCCINO, - SpeciesId.GOTHITA, - SpeciesId.SPRITZEE, - SpeciesId.FLITTLE, - ], - [TrainerPoolTier.RARE]: [ - SpeciesId.FEEBAS, - SpeciesId.FURFROU, - SpeciesId.SALANDIT, - SpeciesId.BRUXISH, - SpeciesId.HATENNA, - SpeciesId.SNOM, - SpeciesId.ALOLA_VULPIX, - ], - [TrainerPoolTier.SUPER_RARE]: [ - SpeciesId.CLAMPERL, - SpeciesId.AMAURA, - SpeciesId.SYLVEON, - SpeciesId.GOOMY, - SpeciesId.POPPLIO, - ], - }), - [TrainerType.BIKER]: new TrainerConfig(++t) - .setMoneyMultiplier(1.4) - .setEncounterBgm(TrainerType.ROUGHNECK) - .setSpeciesPools({ - [TrainerPoolTier.COMMON]: [ - SpeciesId.EKANS, - SpeciesId.KOFFING, - SpeciesId.CROAGUNK, - SpeciesId.VENIPEDE, - SpeciesId.SCRAGGY, - ], - [TrainerPoolTier.UNCOMMON]: [ - SpeciesId.GRIMER, - SpeciesId.VOLTORB, - SpeciesId.TEDDIURSA, - SpeciesId.MAGBY, - SpeciesId.SKORUPI, - SpeciesId.SANDILE, - SpeciesId.PAWNIARD, - SpeciesId.SHROODLE, - ], - [TrainerPoolTier.RARE]: [SpeciesId.VAROOM, SpeciesId.CYCLIZAR], - }), - [TrainerType.BLACK_BELT]: new TrainerConfig(++t) - .setHasGenders("Battle Girl", TrainerType.PSYCHIC) - .setHasDouble("Crush Kin") - .setEncounterBgm(TrainerType.ROUGHNECK) - .setSpecialtyType(PokemonType.FIGHTING) - .setPartyTemplates( - trainerPartyTemplates.TWO_WEAK_ONE_AVG, - trainerPartyTemplates.TWO_WEAK_ONE_AVG, - trainerPartyTemplates.TWO_AVG, - trainerPartyTemplates.TWO_AVG, - trainerPartyTemplates.TWO_WEAK_ONE_STRONG, - trainerPartyTemplates.THREE_AVG, - trainerPartyTemplates.TWO_AVG_ONE_STRONG, - ) - .setSpeciesPools({ - [TrainerPoolTier.COMMON]: [ - SpeciesId.NIDORAN_F, - SpeciesId.NIDORAN_M, - SpeciesId.MACHOP, - SpeciesId.MAKUHITA, - SpeciesId.MEDITITE, - SpeciesId.CROAGUNK, - SpeciesId.TIMBURR, - ], - [TrainerPoolTier.UNCOMMON]: [ - SpeciesId.MANKEY, - SpeciesId.POLIWRATH, - SpeciesId.TYROGUE, - SpeciesId.BRELOOM, - SpeciesId.SCRAGGY, - SpeciesId.MIENFOO, - SpeciesId.PANCHAM, - SpeciesId.STUFFUL, - SpeciesId.CRABRAWLER, - ], - [TrainerPoolTier.RARE]: [ - SpeciesId.HERACROSS, - SpeciesId.RIOLU, - SpeciesId.THROH, - SpeciesId.SAWK, - SpeciesId.PASSIMIAN, - SpeciesId.CLOBBOPUS, - ], - [TrainerPoolTier.SUPER_RARE]: [ - SpeciesId.HITMONTOP, - SpeciesId.INFERNAPE, - SpeciesId.GALLADE, - SpeciesId.HAWLUCHA, - SpeciesId.HAKAMO_O, - ], - [TrainerPoolTier.ULTRA_RARE]: [SpeciesId.KUBFU], - }), - [TrainerType.BREEDER]: new TrainerConfig(++t) - .setMoneyMultiplier(1.325) - .setEncounterBgm(TrainerType.POKEFAN) - .setHasGenders("Breeder Female") - .setHasDouble("Breeders") - .setPartyTemplateFunc(() => - getWavePartyTemplate( - trainerPartyTemplates.FOUR_WEAK, - trainerPartyTemplates.FIVE_WEAK, - trainerPartyTemplates.SIX_WEAK, - ), - ) - .setSpeciesPools({ - [TrainerPoolTier.COMMON]: [ - SpeciesId.PICHU, - SpeciesId.CLEFFA, - SpeciesId.IGGLYBUFF, - SpeciesId.TOGEPI, - SpeciesId.TYROGUE, - SpeciesId.SMOOCHUM, - SpeciesId.AZURILL, - SpeciesId.BUDEW, - SpeciesId.CHINGLING, - SpeciesId.BONSLY, - SpeciesId.MIME_JR, - SpeciesId.HAPPINY, - SpeciesId.MANTYKE, - SpeciesId.TOXEL, - ], - [TrainerPoolTier.UNCOMMON]: [ - SpeciesId.DITTO, - SpeciesId.ELEKID, - SpeciesId.MAGBY, - SpeciesId.WYNAUT, - SpeciesId.MUNCHLAX, - SpeciesId.RIOLU, - SpeciesId.AUDINO, - ], - [TrainerPoolTier.RARE]: [ - SpeciesId.ALOLA_RATTATA, - SpeciesId.ALOLA_SANDSHREW, - SpeciesId.ALOLA_VULPIX, - SpeciesId.ALOLA_DIGLETT, - SpeciesId.ALOLA_MEOWTH, - SpeciesId.GALAR_PONYTA, - ], - [TrainerPoolTier.SUPER_RARE]: [ - SpeciesId.ALOLA_GEODUDE, - SpeciesId.ALOLA_GRIMER, - SpeciesId.GALAR_MEOWTH, - SpeciesId.GALAR_SLOWPOKE, - SpeciesId.GALAR_FARFETCHD, - SpeciesId.HISUI_GROWLITHE, - SpeciesId.HISUI_VOLTORB, - SpeciesId.HISUI_QWILFISH, - SpeciesId.HISUI_SNEASEL, - SpeciesId.HISUI_ZORUA, - ], - }), - [TrainerType.CLERK]: new TrainerConfig(++t) - .setHasGenders("Clerk Female") - .setHasDouble("Colleagues") - .setEncounterBgm(TrainerType.CLERK) - .setPartyTemplates( - trainerPartyTemplates.TWO_WEAK, - trainerPartyTemplates.THREE_WEAK, - trainerPartyTemplates.ONE_AVG, - trainerPartyTemplates.TWO_AVG, - trainerPartyTemplates.TWO_WEAK_ONE_AVG, - ) - .setSpeciesPools({ - [TrainerPoolTier.COMMON]: [ - SpeciesId.MEOWTH, - SpeciesId.PSYDUCK, - SpeciesId.BUDEW, - SpeciesId.PIDOVE, - SpeciesId.CINCCINO, - SpeciesId.LITLEO, - ], - [TrainerPoolTier.UNCOMMON]: [ - SpeciesId.JIGGLYPUFF, - SpeciesId.MAGNEMITE, - SpeciesId.MARILL, - SpeciesId.COTTONEE, - SpeciesId.SKIDDO, - ], - [TrainerPoolTier.RARE]: [SpeciesId.BUIZEL, SpeciesId.SNEASEL, SpeciesId.KLEFKI, SpeciesId.INDEEDEE], - }), - [TrainerType.CYCLIST]: new TrainerConfig(++t) - .setMoneyMultiplier(1.3) - .setHasGenders("Cyclist Female") - .setHasDouble("Cyclists") - .setEncounterBgm(TrainerType.CYCLIST) - .setPartyTemplates(trainerPartyTemplates.TWO_WEAK, trainerPartyTemplates.ONE_AVG) - .setSpeciesPools({ - [TrainerPoolTier.COMMON]: [ - SpeciesId.DODUO, - SpeciesId.PICHU, - SpeciesId.TAILLOW, - SpeciesId.STARLY, - SpeciesId.PONYTA, - ], - [TrainerPoolTier.UNCOMMON]: [ - SpeciesId.ELECTRIKE, - SpeciesId.SHINX, - SpeciesId.BLITZLE, - SpeciesId.DUCKLETT, - SpeciesId.WATTREL, - ], - [TrainerPoolTier.RARE]: [ - SpeciesId.YANMA, - SpeciesId.NINJASK, - SpeciesId.VENIPEDE, - SpeciesId.EMOLGA, - SpeciesId.SKIDDO, - SpeciesId.ROLYCOLY, - ], - [TrainerPoolTier.SUPER_RARE]: [SpeciesId.SHELMET, SpeciesId.DREEPY], - }), - [TrainerType.DANCER]: new TrainerConfig(++t) - .setMoneyMultiplier(1.55) - .setEncounterBgm(TrainerType.CYCLIST) - .setPartyTemplates( - trainerPartyTemplates.TWO_WEAK, - trainerPartyTemplates.ONE_AVG, - trainerPartyTemplates.TWO_AVG, - trainerPartyTemplates.TWO_WEAK_SAME_TWO_WEAK_SAME, - ) - .setSpeciesPools({ - [TrainerPoolTier.COMMON]: [SpeciesId.RALTS, SpeciesId.SPOINK, SpeciesId.LOTAD, SpeciesId.BUDEW], - [TrainerPoolTier.UNCOMMON]: [SpeciesId.SPINDA, SpeciesId.SWABLU, SpeciesId.MARACTUS], - [TrainerPoolTier.RARE]: [SpeciesId.BELLOSSOM, SpeciesId.HITMONTOP, SpeciesId.MIME_JR, SpeciesId.ORICORIO], - [TrainerPoolTier.SUPER_RARE]: [SpeciesId.QUAXLY, SpeciesId.JANGMO_O], - }), - [TrainerType.DEPOT_AGENT]: new TrainerConfig(++t) - .setMoneyMultiplier(1.45) - .setEncounterBgm(TrainerType.CLERK) - .setPartyTemplates( - trainerPartyTemplates.TWO_AVG, - trainerPartyTemplates.THREE_WEAK, - trainerPartyTemplates.THREE_AVG, - trainerPartyTemplates.FOUR_WEAK, - ) - .setSpeciesFilter(s => s.isOfType(PokemonType.GROUND)), - [TrainerType.DOCTOR]: new TrainerConfig(++t) - .setHasGenders("Nurse", "lass") - .setHasDouble("Medical Team") - .setMoneyMultiplier(3) - .setEncounterBgm(TrainerType.CLERK) - .setSpeciesFilter(s => !!s.getLevelMoves().find(plm => plm[1] === MoveId.HEAL_PULSE)), - [TrainerType.FIREBREATHER]: new TrainerConfig(++t) - .setMoneyMultiplier(1.4) - .setEncounterBgm(TrainerType.ROUGHNECK) - .setSpeciesFilter(s => !!s.getLevelMoves().find(plm => plm[1] === MoveId.SMOG) || s.isOfType(PokemonType.FIRE)), - [TrainerType.FISHERMAN]: new TrainerConfig(++t) - .setMoneyMultiplier(1.25) - .setEncounterBgm(TrainerType.BACKPACKER) - .setSpecialtyType(PokemonType.WATER) - .setPartyTemplates( - trainerPartyTemplates.TWO_WEAK_SAME_ONE_AVG, - trainerPartyTemplates.ONE_AVG, - trainerPartyTemplates.THREE_WEAK_SAME, - trainerPartyTemplates.ONE_STRONG, - ) - .setSpeciesPools({ - [TrainerPoolTier.COMMON]: [ - SpeciesId.TENTACOOL, - SpeciesId.MAGIKARP, - SpeciesId.GOLDEEN, - SpeciesId.STARYU, - SpeciesId.REMORAID, - SpeciesId.SKRELP, - SpeciesId.CLAUNCHER, - SpeciesId.ARROKUDA, - ], - [TrainerPoolTier.UNCOMMON]: [ - SpeciesId.POLIWAG, - SpeciesId.SHELLDER, - SpeciesId.KRABBY, - SpeciesId.HORSEA, - SpeciesId.CARVANHA, - SpeciesId.BARBOACH, - SpeciesId.CORPHISH, - SpeciesId.FINNEON, - SpeciesId.TYMPOLE, - SpeciesId.BASCULIN, - SpeciesId.FRILLISH, - SpeciesId.INKAY, - ], - [TrainerPoolTier.RARE]: [ - SpeciesId.CHINCHOU, - SpeciesId.CORSOLA, - SpeciesId.WAILMER, - SpeciesId.CLAMPERL, - SpeciesId.LUVDISC, - SpeciesId.MANTYKE, - SpeciesId.ALOMOMOLA, - SpeciesId.TATSUGIRI, - SpeciesId.VELUZA, - ], - [TrainerPoolTier.SUPER_RARE]: [SpeciesId.LAPRAS, SpeciesId.FEEBAS, SpeciesId.RELICANTH, SpeciesId.DONDOZO], - }), - [TrainerType.GUITARIST]: new TrainerConfig(++t) - .setMoneyMultiplier(1.2) - .setEncounterBgm(TrainerType.ROUGHNECK) - .setSpecialtyType(PokemonType.ELECTRIC) - .setSpeciesFilter(s => s.isOfType(PokemonType.ELECTRIC)), - [TrainerType.HARLEQUIN]: new TrainerConfig(++t) - .setEncounterBgm(TrainerType.PSYCHIC) - .setSpeciesFilter(s => tmSpecies[MoveId.TRICK_ROOM].indexOf(s.speciesId) > -1), - [TrainerType.HIKER]: new TrainerConfig(++t) - .setEncounterBgm(TrainerType.BACKPACKER) - .setPartyTemplates( - trainerPartyTemplates.TWO_AVG_SAME_ONE_AVG, - trainerPartyTemplates.TWO_AVG_SAME_ONE_STRONG, - trainerPartyTemplates.TWO_AVG, - trainerPartyTemplates.FOUR_WEAK, - trainerPartyTemplates.ONE_STRONG, - ) - .setSpeciesPools({ - [TrainerPoolTier.COMMON]: [ - SpeciesId.SANDSHREW, - SpeciesId.DIGLETT, - SpeciesId.GEODUDE, - SpeciesId.MACHOP, - SpeciesId.ARON, - SpeciesId.ROGGENROLA, - SpeciesId.DRILBUR, - SpeciesId.NACLI, - ], - [TrainerPoolTier.UNCOMMON]: [ - SpeciesId.ZUBAT, - SpeciesId.RHYHORN, - SpeciesId.ONIX, - SpeciesId.CUBONE, - SpeciesId.WOOBAT, - SpeciesId.SWINUB, - SpeciesId.NOSEPASS, - SpeciesId.HIPPOPOTAS, - SpeciesId.DWEBBLE, - SpeciesId.KLAWF, - SpeciesId.TOEDSCOOL, - ], - [TrainerPoolTier.RARE]: [ - SpeciesId.TORKOAL, - SpeciesId.TRAPINCH, - SpeciesId.BARBOACH, - SpeciesId.GOLETT, - SpeciesId.ALOLA_DIGLETT, - SpeciesId.ALOLA_GEODUDE, - SpeciesId.GALAR_STUNFISK, - SpeciesId.PALDEA_WOOPER, - ], - [TrainerPoolTier.SUPER_RARE]: [SpeciesId.MAGBY, SpeciesId.LARVITAR], - }), - [TrainerType.HOOLIGANS]: new TrainerConfig(++t) - .setDoubleOnly() - .setMoneyMultiplier(1.5) - .setEncounterBgm(TrainerType.ROUGHNECK) - .setPartyTemplateFunc(() => - getWavePartyTemplate( - trainerPartyTemplates.TWO_WEAK, - trainerPartyTemplates.TWO_AVG, - trainerPartyTemplates.ONE_AVG_ONE_STRONG, - ), - ) - .setSpeciesFilter(s => s.isOfType(PokemonType.POISON) || s.isOfType(PokemonType.DARK)), - [TrainerType.HOOPSTER]: new TrainerConfig(++t).setMoneyMultiplier(1.2).setEncounterBgm(TrainerType.CYCLIST), - [TrainerType.INFIELDER]: new TrainerConfig(++t).setMoneyMultiplier(1.2).setEncounterBgm(TrainerType.CYCLIST), - [TrainerType.JANITOR]: new TrainerConfig(++t).setMoneyMultiplier(1.1).setEncounterBgm(TrainerType.CLERK), - [TrainerType.LINEBACKER]: new TrainerConfig(++t).setMoneyMultiplier(1.2).setEncounterBgm(TrainerType.CYCLIST), - [TrainerType.MAID]: new TrainerConfig(++t).setMoneyMultiplier(1.6).setEncounterBgm(TrainerType.RICH), - [TrainerType.MUSICIAN]: new TrainerConfig(++t) - .setMoneyMultiplier(1.1) - .setEncounterBgm(TrainerType.POKEFAN) - .setPartyTemplates( - trainerPartyTemplates.THREE_WEAK, - trainerPartyTemplates.TWO_WEAK_ONE_AVG, - trainerPartyTemplates.TWO_AVG, - ) - .setSpeciesFilter(s => !!s.getLevelMoves().find(plm => plm[1] === MoveId.SING)), - [TrainerType.HEX_MANIAC]: new TrainerConfig(++t) - .setMoneyMultiplier(1.5) - .setEncounterBgm(TrainerType.PSYCHIC) - .setPartyTemplates( - trainerPartyTemplates.TWO_AVG, - trainerPartyTemplates.ONE_AVG_ONE_STRONG, - trainerPartyTemplates.TWO_AVG_SAME_ONE_AVG, - trainerPartyTemplates.THREE_AVG, - trainerPartyTemplates.TWO_STRONG, - ) - .setSpeciesFilter(s => s.isOfType(PokemonType.GHOST) || s.isOfType(PokemonType.PSYCHIC)), - [TrainerType.NURSERY_AIDE]: new TrainerConfig(++t).setMoneyMultiplier(1.3).setEncounterBgm("lass"), - [TrainerType.OFFICER]: new TrainerConfig(++t) - .setMoneyMultiplier(1.55) - .setEncounterBgm(TrainerType.CLERK) - .setPartyTemplates( - trainerPartyTemplates.ONE_AVG, - trainerPartyTemplates.ONE_STRONG, - trainerPartyTemplates.TWO_AVG, - trainerPartyTemplates.TWO_WEAK_SAME_ONE_AVG, - ) - .setSpeciesPools({ - [TrainerPoolTier.COMMON]: [ - SpeciesId.VULPIX, - SpeciesId.GROWLITHE, - SpeciesId.SNUBBULL, - SpeciesId.POOCHYENA, - SpeciesId.ELECTRIKE, - SpeciesId.LILLIPUP, - SpeciesId.YAMPER, - SpeciesId.FIDOUGH, - ], - [TrainerPoolTier.UNCOMMON]: [SpeciesId.HOUNDOUR, SpeciesId.ROCKRUFF, SpeciesId.MASCHIFF], - [TrainerPoolTier.RARE]: [SpeciesId.JOLTEON, SpeciesId.RIOLU], - [TrainerPoolTier.SUPER_RARE]: [SpeciesId.SLAKOTH], - [TrainerPoolTier.ULTRA_RARE]: [SpeciesId.ENTEI, SpeciesId.SUICUNE, SpeciesId.RAIKOU], - }), - [TrainerType.PARASOL_LADY]: new TrainerConfig(++t) - .setMoneyMultiplier(1.55) - .setEncounterBgm(TrainerType.PARASOL_LADY) - .setPartyTemplates( - trainerPartyTemplates.TWO_AVG_SAME_ONE_AVG, - trainerPartyTemplates.TWO_AVG_SAME_ONE_STRONG, - trainerPartyTemplates.TWO_AVG, - trainerPartyTemplates.FOUR_WEAK, - trainerPartyTemplates.ONE_STRONG, - ) - .setSpeciesFilter( - s => - [s.ability1, s.ability2, s.abilityHidden].some( - a => - !!a - && [ - AbilityId.DRIZZLE, - AbilityId.SWIFT_SWIM, - AbilityId.HYDRATION, - AbilityId.RAIN_DISH, - AbilityId.DRY_SKIN, - AbilityId.WIND_POWER, - ].includes(a), - ) || s.getLevelMoves().some(plm => plm[1] === MoveId.RAIN_DANCE), - ), // Mons with rain abilities or who learn Rain Dance by level - [TrainerType.PILOT]: new TrainerConfig(++t) - .setMoneyMultiplier(1.75) - .setEncounterBgm(TrainerType.CLERK) - .setPartyTemplates( - trainerPartyTemplates.THREE_WEAK, - trainerPartyTemplates.TWO_WEAK_ONE_AVG, - trainerPartyTemplates.TWO_AVG, - trainerPartyTemplates.THREE_AVG, - ) - .setSpeciesFilter(s => tmSpecies[MoveId.FLY].indexOf(s.speciesId) > -1), - [TrainerType.POKEFAN]: new TrainerConfig(++t) - .setMoneyMultiplier(1.4) - .setName("Pokéfan") - .setHasGenders("Pokéfan Female") - .setHasDouble("Pokéfan Family") - .setEncounterBgm(TrainerType.POKEFAN) - .setPartyTemplates( - trainerPartyTemplates.FOUR_WEAK, - trainerPartyTemplates.TWO_AVG, - trainerPartyTemplates.ONE_STRONG, - trainerPartyTemplates.FIVE_WEAK, - ) - .setSpeciesFilter(s => tmSpecies[MoveId.HELPING_HAND].indexOf(s.speciesId) > -1), - [TrainerType.PRESCHOOLER]: new TrainerConfig(++t) - .setMoneyMultiplier(0.2) - .setEncounterBgm(TrainerType.YOUNGSTER) - .setHasGenders("Preschooler Female", "lass") - .setHasDouble("Preschoolers") - .setPartyTemplates(trainerPartyTemplates.THREE_WEAK, trainerPartyTemplates.TWO_WEAK_SAME_ONE_AVG) - .setSpeciesPools({ - [TrainerPoolTier.COMMON]: [ - SpeciesId.CATERPIE, - SpeciesId.PICHU, - SpeciesId.SANDSHREW, - SpeciesId.LEDYBA, - SpeciesId.BUDEW, - SpeciesId.BURMY, - SpeciesId.WOOLOO, - SpeciesId.PAWMI, - SpeciesId.SMOLIV, - ], - [TrainerPoolTier.UNCOMMON]: [ - SpeciesId.EEVEE, - SpeciesId.CLEFFA, - SpeciesId.IGGLYBUFF, - SpeciesId.SWINUB, - SpeciesId.WOOPER, - SpeciesId.DRIFLOON, - SpeciesId.DEDENNE, - SpeciesId.STUFFUL, - ], - [TrainerPoolTier.RARE]: [SpeciesId.RALTS, SpeciesId.RIOLU, SpeciesId.JOLTIK, SpeciesId.TANDEMAUS], - [TrainerPoolTier.SUPER_RARE]: [SpeciesId.DARUMAKA, SpeciesId.TINKATINK], - }), - [TrainerType.PSYCHIC]: new TrainerConfig(++t) - .setHasGenders("Psychic Female") - .setHasDouble("Psychics") - .setMoneyMultiplier(1.4) - .setEncounterBgm(TrainerType.PSYCHIC) - .setPartyTemplates( - trainerPartyTemplates.TWO_WEAK, - trainerPartyTemplates.TWO_AVG, - trainerPartyTemplates.TWO_WEAK_SAME_ONE_AVG, - trainerPartyTemplates.TWO_WEAK_SAME_TWO_WEAK_SAME, - trainerPartyTemplates.ONE_STRONGER, - ) - .setSpeciesPools({ - [TrainerPoolTier.COMMON]: [ - SpeciesId.ABRA, - SpeciesId.DROWZEE, - SpeciesId.RALTS, - SpeciesId.SPOINK, - SpeciesId.GOTHITA, - SpeciesId.SOLOSIS, - SpeciesId.BLIPBUG, - SpeciesId.ESPURR, - SpeciesId.HATENNA, - ], - [TrainerPoolTier.UNCOMMON]: [ - SpeciesId.MIME_JR, - SpeciesId.EXEGGCUTE, - SpeciesId.MEDITITE, - SpeciesId.NATU, - SpeciesId.EXEGGCUTE, - SpeciesId.WOOBAT, - SpeciesId.INKAY, - SpeciesId.ORANGURU, - ], - [TrainerPoolTier.RARE]: [ - SpeciesId.ELGYEM, - SpeciesId.SIGILYPH, - SpeciesId.BALTOY, - SpeciesId.GIRAFARIG, - SpeciesId.MEOWSTIC, - ], - [TrainerPoolTier.SUPER_RARE]: [SpeciesId.BELDUM, SpeciesId.ESPEON, SpeciesId.STANTLER], - }), - [TrainerType.RANGER]: new TrainerConfig(++t) - .setMoneyMultiplier(1.4) - .setName("Pokémon Ranger") - .setEncounterBgm(TrainerType.BACKPACKER) - .setHasGenders("Pokémon Ranger Female") - .setHasDouble("Pokémon Rangers") - .setSpeciesPools({ - [TrainerPoolTier.COMMON]: [ - SpeciesId.PICHU, - SpeciesId.GROWLITHE, - SpeciesId.PONYTA, - SpeciesId.ZIGZAGOON, - SpeciesId.SEEDOT, - SpeciesId.BIDOOF, - SpeciesId.RIOLU, - SpeciesId.SEWADDLE, - SpeciesId.SKIDDO, - SpeciesId.SALANDIT, - SpeciesId.YAMPER, - ], - [TrainerPoolTier.UNCOMMON]: [ - SpeciesId.AZURILL, - SpeciesId.TAUROS, - SpeciesId.MAREEP, - SpeciesId.FARFETCHD, - SpeciesId.TEDDIURSA, - SpeciesId.SHROOMISH, - SpeciesId.ELECTRIKE, - SpeciesId.BUDEW, - SpeciesId.BUIZEL, - SpeciesId.MUDBRAY, - SpeciesId.STUFFUL, - ], - [TrainerPoolTier.RARE]: [ - SpeciesId.EEVEE, - SpeciesId.SCYTHER, - SpeciesId.KANGASKHAN, - SpeciesId.RALTS, - SpeciesId.MUNCHLAX, - SpeciesId.ZORUA, - SpeciesId.PALDEA_TAUROS, - SpeciesId.TINKATINK, - SpeciesId.CYCLIZAR, - SpeciesId.FLAMIGO, - ], - [TrainerPoolTier.SUPER_RARE]: [SpeciesId.LARVESTA], - }), - [TrainerType.RICH]: new TrainerConfig(++t) - .setMoneyMultiplier(3.25) - .setName("Gentleman") - .setHasGenders("Madame") - .setHasDouble("Rich Couple") - .setPartyTemplates( - trainerPartyTemplates.THREE_WEAK, - trainerPartyTemplates.FOUR_WEAK, - trainerPartyTemplates.TWO_WEAK_ONE_AVG, - trainerPartyTemplates.THREE_AVG, - ) - .setSpeciesFilter(s => s.isOfType(PokemonType.NORMAL) || s.isOfType(PokemonType.ELECTRIC)), - [TrainerType.RICH_KID]: new TrainerConfig(++t) - .setMoneyMultiplier(2.5) - .setName("Rich Boy") - .setHasGenders("Lady") - .setHasDouble("Rich Kids") - .setEncounterBgm(TrainerType.RICH) - .setPartyTemplates(trainerPartyTemplates.THREE_WEAK_SAME, trainerPartyTemplates.TWO_WEAK_SAME_ONE_AVG) - .setSpeciesFilter(s => s.baseTotal <= 460), - [TrainerType.ROUGHNECK]: new TrainerConfig(++t) - .setMoneyMultiplier(1.4) - .setEncounterBgm(TrainerType.ROUGHNECK) - .setSpeciesFilter(s => s.isOfType(PokemonType.DARK)), - [TrainerType.SAILOR]: new TrainerConfig(++t) - .setMoneyMultiplier(1.4) - .setEncounterBgm(TrainerType.BACKPACKER) - .setSpeciesFilter(s => s.isOfType(PokemonType.WATER) || s.isOfType(PokemonType.FIGHTING)), - [TrainerType.SCIENTIST]: new TrainerConfig(++t) - .setHasGenders("Scientist Female") - .setHasDouble("Scientists") - .setMoneyMultiplier(1.7) - .setEncounterBgm(TrainerType.SCIENTIST) - .setSpeciesPools({ - [TrainerPoolTier.COMMON]: [ - SpeciesId.MAGNEMITE, - SpeciesId.GRIMER, - SpeciesId.DROWZEE, - SpeciesId.VOLTORB, - SpeciesId.KOFFING, - ], - [TrainerPoolTier.UNCOMMON]: [ - SpeciesId.BALTOY, - SpeciesId.BRONZOR, - SpeciesId.FERROSEED, - SpeciesId.KLINK, - SpeciesId.CHARJABUG, - SpeciesId.BLIPBUG, - SpeciesId.HELIOPTILE, - ], - [TrainerPoolTier.RARE]: [ - SpeciesId.ABRA, - SpeciesId.DITTO, - SpeciesId.PORYGON, - SpeciesId.ELEKID, - SpeciesId.SOLOSIS, - SpeciesId.GALAR_WEEZING, - ], - [TrainerPoolTier.SUPER_RARE]: [ - SpeciesId.OMANYTE, - SpeciesId.KABUTO, - SpeciesId.AERODACTYL, - SpeciesId.LILEEP, - SpeciesId.ANORITH, - SpeciesId.CRANIDOS, - SpeciesId.SHIELDON, - SpeciesId.TIRTOUGA, - SpeciesId.ARCHEN, - SpeciesId.ARCTOVISH, - SpeciesId.ARCTOZOLT, - SpeciesId.DRACOVISH, - SpeciesId.DRACOZOLT, - ], - [TrainerPoolTier.ULTRA_RARE]: [SpeciesId.ROTOM, SpeciesId.MELTAN], - }), - [TrainerType.SMASHER]: new TrainerConfig(++t).setMoneyMultiplier(1.2).setEncounterBgm(TrainerType.CYCLIST), - [TrainerType.SNOW_WORKER]: new TrainerConfig(++t) - .setName("Worker") - .setHasDouble("Workers") - .setMoneyMultiplier(1.7) - .setEncounterBgm(TrainerType.CLERK) - .setSpeciesFilter(s => s.isOfType(PokemonType.ICE) || s.isOfType(PokemonType.STEEL)), - [TrainerType.STRIKER]: new TrainerConfig(++t).setMoneyMultiplier(1.2).setEncounterBgm(TrainerType.CYCLIST), - [TrainerType.SCHOOL_KID]: new TrainerConfig(++t) - .setMoneyMultiplier(0.75) - .setEncounterBgm(TrainerType.YOUNGSTER) - .setHasGenders("School Kid Female", "lass") - .setHasDouble("School Kids") - .setSpeciesPools({ - [TrainerPoolTier.COMMON]: [ - SpeciesId.ODDISH, - SpeciesId.EXEGGCUTE, - SpeciesId.TEDDIURSA, - SpeciesId.WURMPLE, - SpeciesId.RALTS, - SpeciesId.SHROOMISH, - SpeciesId.FLETCHLING, - ], - [TrainerPoolTier.UNCOMMON]: [ - SpeciesId.VOLTORB, - SpeciesId.WHISMUR, - SpeciesId.MEDITITE, - SpeciesId.MIME_JR, - SpeciesId.NYMBLE, - ], - [TrainerPoolTier.RARE]: [SpeciesId.TANGELA, SpeciesId.EEVEE, SpeciesId.YANMA], - [TrainerPoolTier.SUPER_RARE]: [SpeciesId.TADBULB], - }), - [TrainerType.SWIMMER]: new TrainerConfig(++t) - .setMoneyMultiplier(1.3) - .setEncounterBgm(TrainerType.PARASOL_LADY) - .setHasGenders("Swimmer Female") - .setHasDouble("Swimmers") - .setSpecialtyType(PokemonType.WATER) - .setSpeciesFilter(s => s.isOfType(PokemonType.WATER)), - [TrainerType.TWINS]: new TrainerConfig(++t) - .setDoubleOnly() - .setMoneyMultiplier(0.65) - .setUseSameSeedForAllMembers() - .setPartyTemplateFunc(() => - getWavePartyTemplate( - trainerPartyTemplates.TWO_WEAK, - trainerPartyTemplates.TWO_AVG, - trainerPartyTemplates.TWO_STRONG, - ), - ) - .setPartyMemberFunc( - 0, - getRandomPartyMemberFunc([ - SpeciesId.METAPOD, - SpeciesId.LEDYBA, - SpeciesId.CLEFFA, - SpeciesId.MAREEP, - SpeciesId.WOOPER, - SpeciesId.TEDDIURSA, - SpeciesId.REMORAID, - SpeciesId.HOUNDOUR, - SpeciesId.SILCOON, - SpeciesId.PLUSLE, - SpeciesId.VOLBEAT, - SpeciesId.SPINDA, - SpeciesId.BONSLY, - SpeciesId.PETILIL, - SpeciesId.SPRITZEE, - SpeciesId.BOUNSWEET, - SpeciesId.MILCERY, - SpeciesId.PICHU, - ]), - ) - .setPartyMemberFunc( - 1, - getRandomPartyMemberFunc( - [ - SpeciesId.KAKUNA, - SpeciesId.SPINARAK, - SpeciesId.IGGLYBUFF, - SpeciesId.MAREEP, - SpeciesId.PALDEA_WOOPER, - SpeciesId.PHANPY, - SpeciesId.MANTYKE, - SpeciesId.ELECTRIKE, - SpeciesId.CASCOON, - SpeciesId.MINUN, - SpeciesId.ILLUMISE, - SpeciesId.SPINDA, - SpeciesId.MIME_JR, - SpeciesId.COTTONEE, - SpeciesId.SWIRLIX, - SpeciesId.FOMANTIS, - SpeciesId.FIDOUGH, - SpeciesId.EEVEE, - ], - TrainerSlot.TRAINER_PARTNER, - ), - ) - .setEncounterBgm(TrainerType.TWINS), - [TrainerType.VETERAN]: new TrainerConfig(++t) - .setHasGenders("Veteran Female") - .setHasDouble("Veteran Duo") - .setMoneyMultiplier(2.5) - .setEncounterBgm(TrainerType.ACE_TRAINER) - .setSpeciesFilter(s => s.isOfType(PokemonType.DRAGON)), - [TrainerType.WAITER]: new TrainerConfig(++t) - .setHasGenders("Waitress") - .setHasDouble("Restaurant Staff") - .setMoneyMultiplier(1.5) - .setEncounterBgm(TrainerType.CLERK) - .setSpeciesPools({ - [TrainerPoolTier.COMMON]: [ - SpeciesId.CLEFFA, - SpeciesId.CHATOT, - SpeciesId.PANSAGE, - SpeciesId.PANSEAR, - SpeciesId.PANPOUR, - SpeciesId.MINCCINO, - ], - [TrainerPoolTier.UNCOMMON]: [SpeciesId.TROPIUS, SpeciesId.PETILIL, SpeciesId.BOUNSWEET, SpeciesId.INDEEDEE], - [TrainerPoolTier.RARE]: [SpeciesId.APPLIN, SpeciesId.SINISTEA, SpeciesId.POLTCHAGEIST], - }), - [TrainerType.WORKER]: new TrainerConfig(++t) - .setHasGenders("Worker Female") - .setHasDouble("Workers") - .setEncounterBgm(TrainerType.CLERK) - .setMoneyMultiplier(1.7) - .setSpeciesFilter(s => s.isOfType(PokemonType.ROCK) || s.isOfType(PokemonType.STEEL)), - [TrainerType.YOUNGSTER]: new TrainerConfig(++t) - .setMoneyMultiplier(0.5) - .setEncounterBgm(TrainerType.YOUNGSTER) - .setHasGenders("Lass", "lass") - .setHasDouble("Beginners") - .setPartyTemplates(trainerPartyTemplates.TWO_WEAKER) - .setSpeciesPools([ - SpeciesId.CATERPIE, - SpeciesId.WEEDLE, - SpeciesId.RATTATA, - SpeciesId.SENTRET, - SpeciesId.POOCHYENA, - SpeciesId.ZIGZAGOON, - SpeciesId.WURMPLE, - SpeciesId.BIDOOF, - SpeciesId.PATRAT, - SpeciesId.LILLIPUP, - ]), - [TrainerType.ROCKET_GRUNT]: new TrainerConfig(++t) - .setHasGenders("Rocket Grunt Female") - .setHasDouble("Rocket Grunts") - .setMoneyMultiplier(1.0) - .setEncounterBgm(TrainerType.PLASMA_GRUNT) - .setBattleBgm("battle_plasma_grunt") - .setMixedBattleBgm("battle_rocket_grunt") - .setVictoryBgm("victory_team_plasma") - .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) - .setSpeciesPools({ - [TrainerPoolTier.COMMON]: [ - SpeciesId.WEEDLE, - SpeciesId.RATTATA, - SpeciesId.EKANS, - SpeciesId.SANDSHREW, - SpeciesId.ZUBAT, - SpeciesId.ODDISH, - SpeciesId.GEODUDE, - SpeciesId.SLOWPOKE, - SpeciesId.GRIMER, - SpeciesId.KOFFING, - ], - [TrainerPoolTier.UNCOMMON]: [ - SpeciesId.MANKEY, - SpeciesId.GROWLITHE, - SpeciesId.MAGNEMITE, - SpeciesId.ONIX, - SpeciesId.VOLTORB, - SpeciesId.EXEGGCUTE, - SpeciesId.CUBONE, - SpeciesId.LICKITUNG, - SpeciesId.TAUROS, - SpeciesId.MAGIKARP, - SpeciesId.MURKROW, - SpeciesId.ELEKID, - SpeciesId.MAGBY, - ], - [TrainerPoolTier.RARE]: [ - SpeciesId.ABRA, - SpeciesId.GASTLY, - SpeciesId.SCYTHER, - SpeciesId.PORYGON, - SpeciesId.OMANYTE, - SpeciesId.KABUTO, - SpeciesId.ALOLA_RATTATA, - SpeciesId.ALOLA_SANDSHREW, - SpeciesId.ALOLA_MEOWTH, - SpeciesId.ALOLA_GEODUDE, - SpeciesId.ALOLA_GRIMER, - SpeciesId.PALDEA_TAUROS, - ], - [TrainerPoolTier.SUPER_RARE]: [SpeciesId.DRATINI, SpeciesId.LARVITAR], - }), - [TrainerType.ARCHER]: new TrainerConfig(++t) - .setMoneyMultiplier(1.5) - .initForEvilTeamAdmin("rocket_admin", "rocket", [SpeciesId.HOUNDOOM]) - .setEncounterBgm(TrainerType.PLASMA_GRUNT) - .setBattleBgm("battle_plasma_grunt") - .setMixedBattleBgm("battle_rocket_grunt") - .setVictoryBgm("victory_team_plasma") - .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), - [TrainerType.ARIANA]: new TrainerConfig(++t) - .setMoneyMultiplier(1.5) - .initForEvilTeamAdmin("rocket_admin_female", "rocket", [SpeciesId.ARBOK]) - .setEncounterBgm(TrainerType.PLASMA_GRUNT) - .setBattleBgm("battle_plasma_grunt") - .setMixedBattleBgm("battle_rocket_grunt") - .setVictoryBgm("victory_team_plasma") - .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), - [TrainerType.PROTON]: new TrainerConfig(++t) - .setMoneyMultiplier(1.5) - .initForEvilTeamAdmin("rocket_admin", "rocket", [SpeciesId.CROBAT]) - .setEncounterBgm(TrainerType.PLASMA_GRUNT) - .setBattleBgm("battle_plasma_grunt") - .setMixedBattleBgm("battle_rocket_grunt") - .setVictoryBgm("victory_team_plasma") - .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), - [TrainerType.PETREL]: new TrainerConfig(++t) - .setMoneyMultiplier(1.5) - .initForEvilTeamAdmin("rocket_admin", "rocket", [SpeciesId.WEEZING]) - .setEncounterBgm(TrainerType.PLASMA_GRUNT) - .setBattleBgm("battle_plasma_grunt") - .setMixedBattleBgm("battle_rocket_grunt") - .setVictoryBgm("victory_team_plasma") - .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), - [TrainerType.MAGMA_GRUNT]: new TrainerConfig(++t) - .setHasGenders("Magma Grunt Female") - .setHasDouble("Magma Grunts") - .setMoneyMultiplier(1.0) - .setEncounterBgm(TrainerType.PLASMA_GRUNT) - .setBattleBgm("battle_plasma_grunt") - .setMixedBattleBgm("battle_aqua_magma_grunt") - .setVictoryBgm("victory_team_plasma") - .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) - .setSpeciesPools({ - [TrainerPoolTier.COMMON]: [ - SpeciesId.DIGLETT, - SpeciesId.GROWLITHE, - SpeciesId.SLUGMA, - SpeciesId.POOCHYENA, - SpeciesId.ZIGZAGOON, - SpeciesId.NUMEL, - SpeciesId.TORKOAL, - SpeciesId.BALTOY, - ], - [TrainerPoolTier.UNCOMMON]: [ - SpeciesId.RHYHORN, - SpeciesId.PHANPY, - SpeciesId.MAGBY, - SpeciesId.ZANGOOSE, - SpeciesId.SOLROCK, - SpeciesId.HEATMOR, - SpeciesId.ROLYCOLY, - SpeciesId.CAPSAKID, - ], - [TrainerPoolTier.RARE]: [ - SpeciesId.TRAPINCH, - SpeciesId.LILEEP, - SpeciesId.ANORITH, - SpeciesId.GOLETT, - SpeciesId.TURTONATOR, - SpeciesId.TOEDSCOOL, - SpeciesId.HISUI_GROWLITHE, - ], - [TrainerPoolTier.SUPER_RARE]: [SpeciesId.CHARCADET, SpeciesId.ARON], - }), - [TrainerType.TABITHA]: new TrainerConfig(++t) - .setMoneyMultiplier(1.5) - .initForEvilTeamAdmin("magma_admin", "magma", [SpeciesId.CAMERUPT]) - .setEncounterBgm(TrainerType.PLASMA_GRUNT) - .setBattleBgm("battle_plasma_grunt") - .setMixedBattleBgm("battle_aqua_magma_grunt") - .setVictoryBgm("victory_team_plasma") - .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), - [TrainerType.COURTNEY]: new TrainerConfig(++t) - .setMoneyMultiplier(1.5) - .initForEvilTeamAdmin("magma_admin_female", "magma", [SpeciesId.CAMERUPT]) - .setEncounterBgm(TrainerType.PLASMA_GRUNT) - .setBattleBgm("battle_plasma_grunt") - .setMixedBattleBgm("battle_aqua_magma_grunt") - .setVictoryBgm("victory_team_plasma") - .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), - [TrainerType.AQUA_GRUNT]: new TrainerConfig(++t) - .setHasGenders("Aqua Grunt Female") - .setHasDouble("Aqua Grunts") - .setMoneyMultiplier(1.0) - .setEncounterBgm(TrainerType.PLASMA_GRUNT) - .setBattleBgm("battle_plasma_grunt") - .setMixedBattleBgm("battle_aqua_magma_grunt") - .setVictoryBgm("victory_team_plasma") - .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) - .setSpeciesPools({ - [TrainerPoolTier.COMMON]: [ - SpeciesId.QWILFISH, - SpeciesId.REMORAID, - SpeciesId.ZIGZAGOON, - SpeciesId.LOTAD, - SpeciesId.WINGULL, - SpeciesId.CARVANHA, - SpeciesId.WAILMER, - SpeciesId.BARBOACH, - SpeciesId.CORPHISH, - SpeciesId.SPHEAL, - ], - [TrainerPoolTier.UNCOMMON]: [ - SpeciesId.TENTACOOL, - SpeciesId.HORSEA, - SpeciesId.CHINCHOU, - SpeciesId.WOOPER, - SpeciesId.AZURILL, - SpeciesId.SEVIPER, - SpeciesId.CLAMPERL, - SpeciesId.WIMPOD, - SpeciesId.CLOBBOPUS, - ], - [TrainerPoolTier.RARE]: [ - SpeciesId.MANTYKE, - SpeciesId.TYMPOLE, - SpeciesId.SKRELP, - SpeciesId.ARROKUDA, - SpeciesId.WIGLETT, - SpeciesId.HISUI_QWILFISH, - SpeciesId.PALDEA_WOOPER, - ], - [TrainerPoolTier.SUPER_RARE]: [SpeciesId.BASCULEGION, SpeciesId.DONDOZO], - }), - [TrainerType.MATT]: new TrainerConfig(++t) - .setMoneyMultiplier(1.5) - .initForEvilTeamAdmin("aqua_admin", "aqua", [SpeciesId.SHARPEDO]) - .setEncounterBgm(TrainerType.PLASMA_GRUNT) - .setBattleBgm("battle_plasma_grunt") - .setMixedBattleBgm("battle_aqua_magma_grunt") - .setVictoryBgm("victory_team_plasma") - .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), - [TrainerType.SHELLY]: new TrainerConfig(++t) - .setMoneyMultiplier(1.5) - .initForEvilTeamAdmin("aqua_admin_female", "aqua", [SpeciesId.SHARPEDO]) - .setEncounterBgm(TrainerType.PLASMA_GRUNT) - .setBattleBgm("battle_plasma_grunt") - .setMixedBattleBgm("battle_aqua_magma_grunt") - .setVictoryBgm("victory_team_plasma") - .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), - [TrainerType.GALACTIC_GRUNT]: new TrainerConfig(++t) - .setHasGenders("Galactic Grunt Female") - .setHasDouble("Galactic Grunts") - .setMoneyMultiplier(1.0) - .setEncounterBgm(TrainerType.PLASMA_GRUNT) - .setBattleBgm("battle_plasma_grunt") - .setMixedBattleBgm("battle_galactic_grunt") - .setVictoryBgm("victory_team_plasma") - .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) - .setSpeciesPools({ - [TrainerPoolTier.COMMON]: [ - SpeciesId.WURMPLE, - SpeciesId.SHINX, - SpeciesId.BURMY, - SpeciesId.DRIFLOON, - SpeciesId.GLAMEOW, - SpeciesId.STUNKY, - SpeciesId.BRONZOR, - SpeciesId.CROAGUNK, - SpeciesId.CARNIVINE, - ], - [TrainerPoolTier.UNCOMMON]: [ - SpeciesId.ZUBAT, - SpeciesId.LICKITUNG, - SpeciesId.RHYHORN, - SpeciesId.TANGELA, - SpeciesId.YANMA, - SpeciesId.GLIGAR, - SpeciesId.SWINUB, - SpeciesId.SKORUPI, - ], - [TrainerPoolTier.RARE]: [ - SpeciesId.SNEASEL, - SpeciesId.TEDDIURSA, - SpeciesId.ELEKID, - SpeciesId.MAGBY, - SpeciesId.DUSKULL, - SpeciesId.HISUI_GROWLITHE, - SpeciesId.HISUI_QWILFISH, - ], - [TrainerPoolTier.SUPER_RARE]: [SpeciesId.SPIRITOMB, SpeciesId.ROTOM, SpeciesId.HISUI_SNEASEL], - }), - [TrainerType.JUPITER]: new TrainerConfig(++t) - .setMoneyMultiplier(1.5) - .initForEvilTeamAdmin("galactic_commander_female", "galactic", [SpeciesId.SKUNTANK]) - .setEncounterBgm(TrainerType.PLASMA_GRUNT) - .setBattleBgm("battle_plasma_grunt") - .setMixedBattleBgm("battle_galactic_admin") - .setVictoryBgm("victory_team_plasma") - .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), - [TrainerType.MARS]: new TrainerConfig(++t) - .setMoneyMultiplier(1.5) - .initForEvilTeamAdmin("galactic_commander_female", "galactic", [SpeciesId.PURUGLY]) - .setEncounterBgm(TrainerType.PLASMA_GRUNT) - .setBattleBgm("battle_plasma_grunt") - .setMixedBattleBgm("battle_galactic_admin") - .setVictoryBgm("victory_team_plasma") - .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), - [TrainerType.SATURN]: new TrainerConfig(++t) - .setMoneyMultiplier(1.5) - .initForEvilTeamAdmin("galactic_commander", "galactic", [SpeciesId.TOXICROAK]) - .setEncounterBgm(TrainerType.PLASMA_GRUNT) - .setBattleBgm("battle_plasma_grunt") - .setMixedBattleBgm("battle_galactic_admin") - .setVictoryBgm("victory_team_plasma") - .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), - [TrainerType.PLASMA_GRUNT]: new TrainerConfig(++t) - .setHasGenders("Plasma Grunt Female") - .setHasDouble("Plasma Grunts") - .setMoneyMultiplier(1.0) - .setEncounterBgm(TrainerType.PLASMA_GRUNT) - .setBattleBgm("battle_plasma_grunt") - .setMixedBattleBgm("battle_plasma_grunt") - .setVictoryBgm("victory_team_plasma") - .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) - .setSpeciesPools({ - [TrainerPoolTier.COMMON]: [ - SpeciesId.PATRAT, - SpeciesId.LILLIPUP, - SpeciesId.PURRLOIN, - SpeciesId.WOOBAT, - SpeciesId.TYMPOLE, - SpeciesId.SANDILE, - SpeciesId.SCRAGGY, - SpeciesId.TRUBBISH, - SpeciesId.VANILLITE, - ], - [TrainerPoolTier.UNCOMMON]: [ - SpeciesId.TIMBURR, - SpeciesId.VENIPEDE, - SpeciesId.DARUMAKA, - SpeciesId.FOONGUS, - SpeciesId.FRILLISH, - SpeciesId.JOLTIK, - SpeciesId.KLINK, - SpeciesId.CUBCHOO, - SpeciesId.GOLETT, - ], - [TrainerPoolTier.RARE]: [ - SpeciesId.DRILBUR, - SpeciesId.ZORUA, - SpeciesId.MIENFOO, - SpeciesId.PAWNIARD, - SpeciesId.BOUFFALANT, - SpeciesId.RUFFLET, - SpeciesId.VULLABY, - SpeciesId.DURANT, - ], - [TrainerPoolTier.SUPER_RARE]: [SpeciesId.AXEW, SpeciesId.DRUDDIGON, SpeciesId.DEINO, SpeciesId.HISUI_ZORUA], - }), - [TrainerType.ZINZOLIN]: new TrainerConfig(++t) - .setMoneyMultiplier(1.5) - .initForEvilTeamAdmin("plasma_sage", "plasma_zinzolin", [SpeciesId.CRYOGONAL]) - .setEncounterBgm(TrainerType.PLASMA_GRUNT) - .setBattleBgm("battle_plasma_grunt") - .setMixedBattleBgm("battle_plasma_grunt") - .setVictoryBgm("victory_team_plasma") - .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), - [TrainerType.COLRESS]: new TrainerConfig(++t) - .setMoneyMultiplier(1.5) - .initForEvilTeamAdmin("plasma_boss", "plasma_colress", [SpeciesId.KLINKLANG]) - .setEncounterBgm(TrainerType.PLASMA_GRUNT) - .setBattleBgm("battle_colress") - .setMixedBattleBgm("battle_colress") - .setVictoryBgm("victory_team_plasma") - .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), - [TrainerType.FLARE_GRUNT]: new TrainerConfig(++t) - .setHasGenders("Flare Grunt Female") - .setHasDouble("Flare Grunts") - .setMoneyMultiplier(1.0) - .setEncounterBgm(TrainerType.PLASMA_GRUNT) - .setBattleBgm("battle_plasma_grunt") - .setMixedBattleBgm("battle_flare_grunt") - .setVictoryBgm("victory_team_plasma") - .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) - .setSpeciesPools({ - [TrainerPoolTier.COMMON]: [ - SpeciesId.HOUNDOUR, - SpeciesId.GULPIN, - SpeciesId.SKORUPI, - SpeciesId.CROAGUNK, - SpeciesId.PURRLOIN, - SpeciesId.SCRAGGY, - SpeciesId.FLETCHLING, - SpeciesId.SCATTERBUG, - SpeciesId.LITLEO, - SpeciesId.ESPURR, - SpeciesId.INKAY, - ], - [TrainerPoolTier.UNCOMMON]: [ - SpeciesId.POOCHYENA, - SpeciesId.ELECTRIKE, - SpeciesId.FOONGUS, - SpeciesId.PANCHAM, - SpeciesId.BINACLE, - SpeciesId.SKRELP, - SpeciesId.CLAUNCHER, - SpeciesId.HELIOPTILE, - SpeciesId.PHANTUMP, - SpeciesId.PUMPKABOO, - ], - [TrainerPoolTier.RARE]: [SpeciesId.SNEASEL, SpeciesId.LITWICK, SpeciesId.PAWNIARD, SpeciesId.NOIBAT], - [TrainerPoolTier.SUPER_RARE]: [SpeciesId.SLIGGOO, SpeciesId.HISUI_SLIGGOO, SpeciesId.HISUI_AVALUGG], - }), - [TrainerType.BRYONY]: new TrainerConfig(++t) - .setMoneyMultiplier(1.5) - .initForEvilTeamAdmin("flare_admin_female", "flare", [SpeciesId.LIEPARD]) - .setEncounterBgm(TrainerType.PLASMA_GRUNT) - .setBattleBgm("battle_plasma_grunt") - .setMixedBattleBgm("battle_flare_grunt") - .setVictoryBgm("victory_team_plasma") - .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), - [TrainerType.XEROSIC]: new TrainerConfig(++t) - .setMoneyMultiplier(1.5) - .initForEvilTeamAdmin("flare_admin", "flare", [SpeciesId.MALAMAR]) - .setEncounterBgm(TrainerType.PLASMA_GRUNT) - .setBattleBgm("battle_plasma_grunt") - .setMixedBattleBgm("battle_flare_grunt") - .setVictoryBgm("victory_team_plasma") - .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), - [TrainerType.AETHER_GRUNT]: new TrainerConfig(++t) - .setHasGenders("Aether Grunt Female") - .setHasDouble("Aether Grunts") - .setMoneyMultiplier(1.0) - .setEncounterBgm(TrainerType.PLASMA_GRUNT) - .setBattleBgm("battle_plasma_grunt") - .setMixedBattleBgm("battle_aether_grunt") - .setVictoryBgm("victory_team_plasma") - .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) - .setSpeciesPools({ - [TrainerPoolTier.COMMON]: [ - SpeciesId.CORSOLA, - SpeciesId.LILLIPUP, - SpeciesId.PIKIPEK, - SpeciesId.YUNGOOS, - SpeciesId.ROCKRUFF, - SpeciesId.MORELULL, - SpeciesId.BOUNSWEET, - SpeciesId.COMFEY, - SpeciesId.KOMALA, - SpeciesId.TOGEDEMARU, - SpeciesId.ALOLA_RAICHU, - SpeciesId.ALOLA_DIGLETT, - SpeciesId.ALOLA_GEODUDE, - SpeciesId.ALOLA_EXEGGUTOR, - ], - [TrainerPoolTier.UNCOMMON]: [ - SpeciesId.POLIWAG, - SpeciesId.CRABRAWLER, - SpeciesId.ORICORIO, - SpeciesId.CUTIEFLY, - SpeciesId.WISHIWASHI, - SpeciesId.MUDBRAY, - SpeciesId.STUFFUL, - SpeciesId.ORANGURU, - SpeciesId.PASSIMIAN, - SpeciesId.PYUKUMUKU, - SpeciesId.BRUXISH, - SpeciesId.ALOLA_SANDSHREW, - SpeciesId.ALOLA_VULPIX, - SpeciesId.ALOLA_MAROWAK, - ], - [TrainerPoolTier.RARE]: [ - SpeciesId.MINIOR, - SpeciesId.TURTONATOR, - SpeciesId.MIMIKYU, - SpeciesId.DRAMPA, - SpeciesId.GALAR_CORSOLA, - ], - [TrainerPoolTier.SUPER_RARE]: [SpeciesId.PORYGON, SpeciesId.JANGMO_O], - }), - [TrainerType.FABA]: new TrainerConfig(++t) - .setMoneyMultiplier(1.5) - .initForEvilTeamAdmin("aether_admin", "aether", [SpeciesId.HYPNO]) - .setEncounterBgm(TrainerType.PLASMA_GRUNT) - .setBattleBgm("battle_plasma_grunt") - .setMixedBattleBgm("battle_aether_grunt") - .setVictoryBgm("victory_team_plasma") - .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), - [TrainerType.SKULL_GRUNT]: new TrainerConfig(++t) - .setHasGenders("Skull Grunt Female") - .setHasDouble("Skull Grunts") - .setMoneyMultiplier(1.0) - .setEncounterBgm(TrainerType.PLASMA_GRUNT) - .setBattleBgm("battle_plasma_grunt") - .setMixedBattleBgm("battle_skull_grunt") - .setVictoryBgm("victory_team_plasma") - .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) - .setSpeciesPools({ - [TrainerPoolTier.COMMON]: [ - SpeciesId.EKANS, - SpeciesId.VENONAT, - SpeciesId.DROWZEE, - SpeciesId.KOFFING, - SpeciesId.SPINARAK, - SpeciesId.SCRAGGY, - SpeciesId.TRUBBISH, - SpeciesId.MAREANIE, - SpeciesId.SALANDIT, - SpeciesId.ALOLA_RATTATA, - SpeciesId.ALOLA_MEOWTH, - SpeciesId.ALOLA_GRIMER, - ], - [TrainerPoolTier.UNCOMMON]: [ - SpeciesId.ZUBAT, - SpeciesId.GASTLY, - SpeciesId.HOUNDOUR, - SpeciesId.SABLEYE, - SpeciesId.VENIPEDE, - SpeciesId.SANDILE, - SpeciesId.VULLABY, - SpeciesId.PANCHAM, - SpeciesId.FOMANTIS, - SpeciesId.ALOLA_MAROWAK, - ], - [TrainerPoolTier.RARE]: [ - SpeciesId.PAWNIARD, - SpeciesId.WISHIWASHI, - SpeciesId.SANDYGAST, - SpeciesId.MIMIKYU, - SpeciesId.DHELMISE, - SpeciesId.NYMBLE, - ], - [TrainerPoolTier.SUPER_RARE]: [SpeciesId.GRUBBIN, SpeciesId.DEWPIDER], - }), - [TrainerType.PLUMERIA]: new TrainerConfig(++t) - .setMoneyMultiplier(1.5) - .initForEvilTeamAdmin("skull_admin", "skull", [SpeciesId.SALAZZLE]) - .setEncounterBgm(TrainerType.PLASMA_GRUNT) - .setBattleBgm("battle_plasma_grunt") - .setMixedBattleBgm("battle_skull_admin") - .setVictoryBgm("victory_team_plasma") - .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), - [TrainerType.MACRO_GRUNT]: new TrainerConfig(++t) - .setHasGenders("Macro Grunt Female") - .setHasDouble("Macro Grunts") - .setMoneyMultiplier(1.0) - .setEncounterBgm(TrainerType.PLASMA_GRUNT) - .setBattleBgm("battle_plasma_grunt") - .setMixedBattleBgm("battle_macro_grunt") - .setVictoryBgm("victory_team_plasma") - .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) - .setSpeciesPools({ - [TrainerPoolTier.COMMON]: [ - SpeciesId.STEELIX, - SpeciesId.MAWILE, - SpeciesId.FERROSEED, - SpeciesId.KLINK, - SpeciesId.SKWOVET, - SpeciesId.ROOKIDEE, - SpeciesId.ROLYCOLY, - SpeciesId.CUFANT, - SpeciesId.GALAR_MEOWTH, - SpeciesId.GALAR_ZIGZAGOON, - ], - [TrainerPoolTier.UNCOMMON]: [ - SpeciesId.MAGNEMITE, - SpeciesId.RIOLU, - SpeciesId.DRILBUR, - SpeciesId.APPLIN, - SpeciesId.CRAMORANT, - SpeciesId.ARROKUDA, - SpeciesId.SINISTEA, - SpeciesId.HATENNA, - SpeciesId.FALINKS, - SpeciesId.GALAR_PONYTA, - SpeciesId.GALAR_YAMASK, - ], - [TrainerPoolTier.RARE]: [ - SpeciesId.SCIZOR, - SpeciesId.BELDUM, - SpeciesId.HONEDGE, - SpeciesId.GALAR_FARFETCHD, - SpeciesId.GALAR_MR_MIME, - SpeciesId.GALAR_DARUMAKA, - ], - [TrainerPoolTier.SUPER_RARE]: [SpeciesId.DURALUDON, SpeciesId.DREEPY], - }), - [TrainerType.OLEANA]: new TrainerConfig(++t) - .setMoneyMultiplier(1.5) - .initForEvilTeamAdmin("macro_admin", "macro_cosmos", [SpeciesId.GARBODOR]) - .setEncounterBgm(TrainerType.PLASMA_GRUNT) - .setBattleBgm("battle_plasma_grunt") - .setMixedBattleBgm("battle_oleana") - .setVictoryBgm("victory_team_plasma") - .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), - [TrainerType.STAR_GRUNT]: new TrainerConfig(++t) - .setHasGenders("Star Grunt Female") - .setHasDouble("Star Grunts") - .setMoneyMultiplier(1.0) - .setEncounterBgm(TrainerType.PLASMA_GRUNT) - .setBattleBgm("battle_plasma_grunt") - .setMixedBattleBgm("battle_star_grunt") - .setVictoryBgm("victory_team_plasma") - .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) - .setSpeciesPools({ - [TrainerPoolTier.COMMON]: [ - SpeciesId.DUNSPARCE, - SpeciesId.HOUNDOUR, - SpeciesId.AZURILL, - SpeciesId.GULPIN, - SpeciesId.FOONGUS, - SpeciesId.FLETCHLING, - SpeciesId.LITLEO, - SpeciesId.FLABEBE, - SpeciesId.CRABRAWLER, - SpeciesId.NYMBLE, - SpeciesId.PAWMI, - SpeciesId.FIDOUGH, - SpeciesId.SQUAWKABILLY, - SpeciesId.MASCHIFF, - SpeciesId.SHROODLE, - SpeciesId.KLAWF, - SpeciesId.WIGLETT, - SpeciesId.PALDEA_WOOPER, - ], - [TrainerPoolTier.UNCOMMON]: [ - SpeciesId.KOFFING, - SpeciesId.EEVEE, - SpeciesId.GIRAFARIG, - SpeciesId.RALTS, - SpeciesId.TORKOAL, - SpeciesId.SEVIPER, - SpeciesId.SCRAGGY, - SpeciesId.ZORUA, - SpeciesId.MIMIKYU, - SpeciesId.IMPIDIMP, - SpeciesId.FALINKS, - SpeciesId.CAPSAKID, - SpeciesId.TINKATINK, - SpeciesId.BOMBIRDIER, - SpeciesId.CYCLIZAR, - SpeciesId.FLAMIGO, - SpeciesId.PALDEA_TAUROS, - ], - [TrainerPoolTier.RARE]: [ - SpeciesId.MANKEY, - SpeciesId.PAWNIARD, - SpeciesId.CHARCADET, - SpeciesId.FLITTLE, - SpeciesId.VAROOM, - SpeciesId.ORTHWORM, - ], - [TrainerPoolTier.SUPER_RARE]: [SpeciesId.DONDOZO, SpeciesId.GIMMIGHOUL], - }), - [TrainerType.GIACOMO]: new TrainerConfig(++t) - .setMoneyMultiplier(1.5) - .initForEvilTeamAdmin("star_admin", "star_dark", [SpeciesId.KINGAMBIT], PokemonType.DARK) - .setEncounterBgm(TrainerType.PLASMA_GRUNT) - .setBattleBgm("battle_plasma_grunt") - .setMixedBattleBgm("battle_star_admin") - .setVictoryBgm("victory_team_plasma") - .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) - .setPartyMemberFunc( - 3, - getRandomPartyMemberFunc([SpeciesId.REVAVROOM], TrainerSlot.TRAINER, true, p => { - p.formIndex = 1; // Segin Starmobile - p.moveset = [ - new PokemonMove(MoveId.WICKED_TORQUE), - new PokemonMove(MoveId.SPIN_OUT), - new PokemonMove(MoveId.PARTING_SHOT), - new PokemonMove(MoveId.HIGH_HORSEPOWER), - ]; - }), - ), - [TrainerType.MELA]: new TrainerConfig(++t) - .setMoneyMultiplier(1.5) - .initForEvilTeamAdmin("star_admin", "star_fire", [SpeciesId.ARMAROUGE], PokemonType.FIRE) - .setEncounterBgm(TrainerType.PLASMA_GRUNT) - .setBattleBgm("battle_plasma_grunt") - .setMixedBattleBgm("battle_star_admin") - .setVictoryBgm("victory_team_plasma") - .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) - .setPartyMemberFunc( - 3, - getRandomPartyMemberFunc([SpeciesId.REVAVROOM], TrainerSlot.TRAINER, true, p => { - p.formIndex = 2; // Schedar Starmobile - p.moveset = [ - new PokemonMove(MoveId.BLAZING_TORQUE), - new PokemonMove(MoveId.SPIN_OUT), - new PokemonMove(MoveId.FLAME_CHARGE), - new PokemonMove(MoveId.HIGH_HORSEPOWER), - ]; - }), - ), - [TrainerType.ATTICUS]: new TrainerConfig(++t) - .setMoneyMultiplier(1.5) - .initForEvilTeamAdmin("star_admin", "star_poison", [SpeciesId.REVAVROOM], PokemonType.POISON) - .setEncounterBgm(TrainerType.PLASMA_GRUNT) - .setBattleBgm("battle_plasma_grunt") - .setMixedBattleBgm("battle_star_admin") - .setVictoryBgm("victory_team_plasma") - .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) - .setPartyMemberFunc( - 3, - getRandomPartyMemberFunc([SpeciesId.REVAVROOM], TrainerSlot.TRAINER, true, p => { - p.formIndex = 3; // Navi Starmobile - p.moveset = [ - new PokemonMove(MoveId.NOXIOUS_TORQUE), - new PokemonMove(MoveId.SPIN_OUT), - new PokemonMove(MoveId.TOXIC_SPIKES), - new PokemonMove(MoveId.HIGH_HORSEPOWER), - ]; - }), - ), - [TrainerType.ORTEGA]: new TrainerConfig(++t) - .setMoneyMultiplier(1.5) - .initForEvilTeamAdmin("star_admin", "star_fairy", [SpeciesId.DACHSBUN], PokemonType.FAIRY) - .setEncounterBgm(TrainerType.PLASMA_GRUNT) - .setBattleBgm("battle_plasma_grunt") - .setMixedBattleBgm("battle_star_admin") - .setVictoryBgm("victory_team_plasma") - .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) - .setPartyMemberFunc( - 3, - getRandomPartyMemberFunc([SpeciesId.REVAVROOM], TrainerSlot.TRAINER, true, p => { - p.formIndex = 4; // Ruchbah Starmobile - p.moveset = [ - new PokemonMove(MoveId.MAGICAL_TORQUE), - new PokemonMove(MoveId.SPIN_OUT), - new PokemonMove(MoveId.MISTY_TERRAIN), - new PokemonMove(MoveId.HIGH_HORSEPOWER), - ]; - }), - ), - [TrainerType.ERI]: new TrainerConfig(++t) - .setMoneyMultiplier(1.5) - .initForEvilTeamAdmin("star_admin", "star_fighting", [SpeciesId.ANNIHILAPE], PokemonType.FIGHTING) - .setEncounterBgm(TrainerType.PLASMA_GRUNT) - .setBattleBgm("battle_plasma_grunt") - .setMixedBattleBgm("battle_star_admin") - .setVictoryBgm("victory_team_plasma") - .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) - .setPartyMemberFunc( - 3, - getRandomPartyMemberFunc([SpeciesId.REVAVROOM], TrainerSlot.TRAINER, true, p => { - p.formIndex = 5; // Caph Starmobile - p.moveset = [ - new PokemonMove(MoveId.COMBAT_TORQUE), - new PokemonMove(MoveId.SPIN_OUT), - new PokemonMove(MoveId.IRON_DEFENSE), - new PokemonMove(MoveId.HIGH_HORSEPOWER), - ]; - }), - ), - - [TrainerType.BROCK]: new TrainerConfig((t = TrainerType.BROCK)) - .initForGymLeader(signatureSpecies["BROCK"], true, PokemonType.ROCK, false, -1) - .setBattleBgm("battle_kanto_gym") - .setMixedBattleBgm("battle_kanto_gym"), - [TrainerType.MISTY]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["MISTY"], false, PokemonType.WATER, false, -1) - .setBattleBgm("battle_kanto_gym") - .setMixedBattleBgm("battle_kanto_gym"), - [TrainerType.LT_SURGE]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["LT_SURGE"], true, PokemonType.ELECTRIC, false, -1) - .setBattleBgm("battle_kanto_gym") - .setMixedBattleBgm("battle_kanto_gym"), - [TrainerType.ERIKA]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["ERIKA"], false, PokemonType.GRASS, false, -1) - .setBattleBgm("battle_kanto_gym") - .setMixedBattleBgm("battle_kanto_gym"), - [TrainerType.JANINE]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["JANINE"], false, PokemonType.POISON, false, -1) - .setBattleBgm("battle_kanto_gym") - .setMixedBattleBgm("battle_kanto_gym"), - [TrainerType.SABRINA]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["SABRINA"], false, PokemonType.PSYCHIC, false, -1) - .setBattleBgm("battle_kanto_gym") - .setMixedBattleBgm("battle_kanto_gym"), - [TrainerType.BLAINE]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["BLAINE"], true, PokemonType.FIRE, false, -1) - .setBattleBgm("battle_kanto_gym") - .setMixedBattleBgm("battle_kanto_gym"), - [TrainerType.GIOVANNI]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["GIOVANNI"], true, PokemonType.GROUND, false, -2) - .setBattleBgm("battle_kanto_gym") - .setMixedBattleBgm("battle_kanto_gym"), - [TrainerType.FALKNER]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["FALKNER"], true, PokemonType.FLYING, false, -1) - .setBattleBgm("battle_johto_gym") - .setMixedBattleBgm("battle_johto_gym"), - [TrainerType.BUGSY]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["BUGSY"], true, PokemonType.BUG, false, -1) - .setBattleBgm("battle_johto_gym") - .setMixedBattleBgm("battle_johto_gym"), - [TrainerType.WHITNEY]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["WHITNEY"], false, PokemonType.NORMAL, false, -1) - .setBattleBgm("battle_johto_gym") - .setMixedBattleBgm("battle_johto_gym"), - [TrainerType.MORTY]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["MORTY"], true, PokemonType.GHOST, false, -1) - .setBattleBgm("battle_johto_gym") - .setMixedBattleBgm("battle_johto_gym"), - [TrainerType.CHUCK]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["CHUCK"], true, PokemonType.FIGHTING, false, -1) - .setBattleBgm("battle_johto_gym") - .setMixedBattleBgm("battle_johto_gym"), - [TrainerType.JASMINE]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["JASMINE"], false, PokemonType.STEEL, false, -1) - .setBattleBgm("battle_johto_gym") - .setMixedBattleBgm("battle_johto_gym"), - [TrainerType.PRYCE]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["PRYCE"], true, PokemonType.ICE, false, -1) - .setBattleBgm("battle_johto_gym") - .setMixedBattleBgm("battle_johto_gym"), - [TrainerType.CLAIR]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["CLAIR"], false, PokemonType.DRAGON, false, -3) - .setBattleBgm("battle_johto_gym") - .setMixedBattleBgm("battle_johto_gym"), - [TrainerType.ROXANNE]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["ROXANNE"], false, PokemonType.ROCK, false, -1) - .setBattleBgm("battle_hoenn_gym") - .setMixedBattleBgm("battle_hoenn_gym"), - [TrainerType.BRAWLY]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["BRAWLY"], true, PokemonType.FIGHTING, false, -1) - .setBattleBgm("battle_hoenn_gym") - .setMixedBattleBgm("battle_hoenn_gym"), - [TrainerType.WATTSON]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["WATTSON"], true, PokemonType.ELECTRIC, false, -1) - .setBattleBgm("battle_hoenn_gym") - .setMixedBattleBgm("battle_hoenn_gym"), - [TrainerType.FLANNERY]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["FLANNERY"], false, PokemonType.FIRE, false, -1) - .setBattleBgm("battle_hoenn_gym") - .setMixedBattleBgm("battle_hoenn_gym"), - [TrainerType.NORMAN]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["NORMAN"], true, PokemonType.NORMAL, false, -1) - .setBattleBgm("battle_hoenn_gym") - .setMixedBattleBgm("battle_hoenn_gym"), - [TrainerType.WINONA]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["WINONA"], false, PokemonType.FLYING, false, -1) - .setBattleBgm("battle_hoenn_gym") - .setMixedBattleBgm("battle_hoenn_gym"), - [TrainerType.TATE]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["TATE"], true, PokemonType.PSYCHIC, false, -1) - .setBattleBgm("battle_hoenn_gym") - .setMixedBattleBgm("battle_hoenn_gym") - .setHasDouble("tate_liza_double") - .setDoubleTrainerType(TrainerType.LIZA) - .setDoubleTitle("gym_leader_double"), - [TrainerType.LIZA]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["LIZA"], false, PokemonType.PSYCHIC, false, -1) - .setBattleBgm("battle_hoenn_gym") - .setMixedBattleBgm("battle_hoenn_gym") - .setHasDouble("liza_tate_double") - .setDoubleTrainerType(TrainerType.TATE) - .setDoubleTitle("gym_leader_double"), - [TrainerType.JUAN]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["JUAN"], true, PokemonType.WATER, false, -1) - .setBattleBgm("battle_hoenn_gym") - .setMixedBattleBgm("battle_hoenn_gym"), - [TrainerType.ROARK]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["ROARK"], true, PokemonType.ROCK, false, -1) - .setBattleBgm("battle_sinnoh_gym") - .setMixedBattleBgm("battle_sinnoh_gym"), - [TrainerType.GARDENIA]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["GARDENIA"], false, PokemonType.GRASS, false, -1) - .setBattleBgm("battle_sinnoh_gym") - .setMixedBattleBgm("battle_sinnoh_gym"), - [TrainerType.MAYLENE]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["MAYLENE"], false, PokemonType.FIGHTING, false, -1) - .setBattleBgm("battle_sinnoh_gym") - .setMixedBattleBgm("battle_sinnoh_gym"), - [TrainerType.CRASHER_WAKE]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["CRASHER_WAKE"], true, PokemonType.WATER, false, -1) - .setBattleBgm("battle_sinnoh_gym") - .setMixedBattleBgm("battle_sinnoh_gym"), - [TrainerType.FANTINA]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["FANTINA"], false, PokemonType.GHOST, false, -1) - .setBattleBgm("battle_sinnoh_gym") - .setMixedBattleBgm("battle_sinnoh_gym"), - [TrainerType.BYRON]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["BYRON"], true, PokemonType.STEEL, false, -1) - .setBattleBgm("battle_sinnoh_gym") - .setMixedBattleBgm("battle_sinnoh_gym"), - [TrainerType.CANDICE]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["CANDICE"], false, PokemonType.ICE, false, -1) - .setBattleBgm("battle_sinnoh_gym") - .setMixedBattleBgm("battle_sinnoh_gym"), - [TrainerType.VOLKNER]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["VOLKNER"], true, PokemonType.ELECTRIC, false, -1) - .setBattleBgm("battle_sinnoh_gym") - .setMixedBattleBgm("battle_sinnoh_gym"), - [TrainerType.CILAN]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["CILAN"], true, PokemonType.GRASS, false, -1) - .setMixedBattleBgm("battle_unova_gym"), - [TrainerType.CHILI]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["CHILI"], true, PokemonType.FIRE, false, -1) - .setMixedBattleBgm("battle_unova_gym"), - [TrainerType.CRESS]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["CRESS"], true, PokemonType.WATER, false, -1) - .setMixedBattleBgm("battle_unova_gym"), - [TrainerType.CHEREN]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["CHEREN"], true, PokemonType.NORMAL, false, -1) - .setMixedBattleBgm("battle_unova_gym"), - [TrainerType.LENORA]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["LENORA"], false, PokemonType.NORMAL, false, -1) - .setMixedBattleBgm("battle_unova_gym"), - [TrainerType.ROXIE]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["ROXIE"], false, PokemonType.POISON, false, -1) - .setMixedBattleBgm("battle_unova_gym"), - [TrainerType.BURGH]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["BURGH"], true, PokemonType.BUG, false, -1) - .setMixedBattleBgm("battle_unova_gym"), - [TrainerType.ELESA]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["ELESA"], false, PokemonType.ELECTRIC, false, -1) - .setMixedBattleBgm("battle_unova_gym"), - [TrainerType.CLAY]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["CLAY"], true, PokemonType.GROUND, false, -1) - .setMixedBattleBgm("battle_unova_gym"), - [TrainerType.SKYLA]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["SKYLA"], false, PokemonType.FLYING, false, -1) - .setMixedBattleBgm("battle_unova_gym"), - [TrainerType.BRYCEN]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["BRYCEN"], true, PokemonType.ICE, false, -1) - .setMixedBattleBgm("battle_unova_gym"), - [TrainerType.DRAYDEN]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["DRAYDEN"], true, PokemonType.DRAGON, false, -1) - .setMixedBattleBgm("battle_unova_gym"), - [TrainerType.MARLON]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["MARLON"], true, PokemonType.WATER, false, -1) - .setMixedBattleBgm("battle_unova_gym"), - [TrainerType.VIOLA]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["VIOLA"], false, PokemonType.BUG, false, -1) - .setMixedBattleBgm("battle_kalos_gym"), - [TrainerType.GRANT]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["GRANT"], true, PokemonType.ROCK, false, -1) - .setMixedBattleBgm("battle_kalos_gym"), - [TrainerType.KORRINA]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["KORRINA"], false, PokemonType.FIGHTING, false, -1) - .setMixedBattleBgm("battle_kalos_gym"), - [TrainerType.RAMOS]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["RAMOS"], true, PokemonType.GRASS, false, -1) - .setMixedBattleBgm("battle_kalos_gym"), - [TrainerType.CLEMONT]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["CLEMONT"], true, PokemonType.ELECTRIC, false, -1) - .setMixedBattleBgm("battle_kalos_gym"), - [TrainerType.VALERIE]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["VALERIE"], false, PokemonType.FAIRY, false, -1) - .setMixedBattleBgm("battle_kalos_gym"), - [TrainerType.OLYMPIA]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["OLYMPIA"], false, PokemonType.PSYCHIC, false, -1) - .setMixedBattleBgm("battle_kalos_gym"), - [TrainerType.WULFRIC]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["WULFRIC"], true, PokemonType.ICE, false, -1) - .setMixedBattleBgm("battle_kalos_gym"), - [TrainerType.MILO]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["MILO"], true, PokemonType.GRASS, false, -1) - .setMixedBattleBgm("battle_galar_gym"), - [TrainerType.NESSA]: new TrainerConfig(++t) - .setName("Nessa") - .initForGymLeader(signatureSpecies["NESSA"], false, PokemonType.WATER, false, -1) - .setMixedBattleBgm("battle_galar_gym"), - [TrainerType.KABU]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["KABU"], true, PokemonType.FIRE, false, -1) - .setMixedBattleBgm("battle_galar_gym"), - [TrainerType.BEA]: new TrainerConfig(++t) - .setName("Bea") - .initForGymLeader(signatureSpecies["BEA"], false, PokemonType.FIGHTING, false, -1) - .setMixedBattleBgm("battle_galar_gym"), - [TrainerType.ALLISTER]: new TrainerConfig(++t) - .setName("Allister") - .initForGymLeader(signatureSpecies["ALLISTER"], true, PokemonType.GHOST, false, -1) - .setMixedBattleBgm("battle_galar_gym"), - [TrainerType.OPAL]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["OPAL"], false, PokemonType.FAIRY, false, -1) - .setMixedBattleBgm("battle_galar_gym"), - [TrainerType.BEDE]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["BEDE"], true, PokemonType.FAIRY, false, -1) - .setMixedBattleBgm("battle_galar_gym"), - [TrainerType.GORDIE]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["GORDIE"], true, PokemonType.ROCK, false, -1) - .setMixedBattleBgm("battle_galar_gym"), - [TrainerType.MELONY]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["MELONY"], false, PokemonType.ICE, false, -1) - .setMixedBattleBgm("battle_galar_gym"), - [TrainerType.PIERS]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["PIERS"], true, PokemonType.DARK, false, -3) - .setHasDouble("piers_marnie_double") - .setDoubleTrainerType(TrainerType.MARNIE) - .setDoubleTitle("gym_leader_double") - .setMixedBattleBgm("battle_galar_gym"), - [TrainerType.MARNIE]: new TrainerConfig(++t) - .setName("Marnie") - .initForGymLeader(signatureSpecies["MARNIE"], false, PokemonType.DARK, false, -4) - .setHasDouble("marnie_piers_double") - .setDoubleTrainerType(TrainerType.PIERS) - .setDoubleTitle("gym_leader_double") - .setMixedBattleBgm("battle_galar_gym"), - [TrainerType.RAIHAN]: new TrainerConfig(++t) - .setName("Raihan") - .initForGymLeader(signatureSpecies["RAIHAN"], true, PokemonType.DRAGON, false, -1) - .setMixedBattleBgm("battle_galar_gym"), - [TrainerType.KATY]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["KATY"], false, PokemonType.BUG, true, -1) - .setMixedBattleBgm("battle_paldea_gym"), - [TrainerType.BRASSIUS]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["BRASSIUS"], true, PokemonType.GRASS, true, -1) - .setMixedBattleBgm("battle_paldea_gym"), - [TrainerType.IONO]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["IONO"], false, PokemonType.ELECTRIC, true, -1) - .setMixedBattleBgm("battle_paldea_gym"), - [TrainerType.KOFU]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["KOFU"], true, PokemonType.WATER, true, -1) - .setMixedBattleBgm("battle_paldea_gym"), - [TrainerType.LARRY]: new TrainerConfig(++t) - .setName("Larry") - .initForGymLeader(signatureSpecies["LARRY"], true, PokemonType.NORMAL, true, -1) - .setMixedBattleBgm("battle_paldea_gym"), - [TrainerType.RYME]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["RYME"], false, PokemonType.GHOST, true, -1) - .setMixedBattleBgm("battle_paldea_gym"), - [TrainerType.TULIP]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["TULIP"], false, PokemonType.PSYCHIC, true, -1) - .setMixedBattleBgm("battle_paldea_gym"), - [TrainerType.GRUSHA]: new TrainerConfig(++t) - .initForGymLeader(signatureSpecies["GRUSHA"], true, PokemonType.ICE, true, -1) - .setMixedBattleBgm("battle_paldea_gym"), - - ... eliteFourTrainers, - ... championTrainers, - ... rivalTrainer, - ... evilAdminTrainers, - ... mysteryEventTrainers, -}; diff --git a/src/data/trainers/trainer-configs-init.ts b/src/data/trainers/trainer-configs-init.ts new file mode 100644 index 00000000000..f2669093c50 --- /dev/null +++ b/src/data/trainers/trainer-configs-init.ts @@ -0,0 +1,25 @@ +import { TrainerType } from "#enums/trainer-type"; +import { TrainerConfigs } from "#types/trainer-funcs"; +import { TrainerConfig } from "./trainer-config"; +import { championTrainersConfigs } from "./trainers-init/champion-trainers"; +import { eliteFourTrainersConfigs } from "./trainers-init/elite-four-trainers"; +import { evilAdminTrainerConfigs } from "./trainers-init/evil-organizations/evil-admin-trainers"; +import { evilGruntTrainerConfig } from "./trainers-init/evil-organizations/evil-grunts-trainers"; +import { evilAdminTrainersConfig } from "./trainers-init/evil-organizations/evil-leaders-trainers"; +import { gymLeaderTrainersConfigs } from "./trainers-init/gym-trainers"; +import { mysteryEventTrainersConfigs } from "./trainers-init/mystery-event-trainers"; +import { randomNPCTrainersConfig } from "./trainers-init/random-npcs-trainers"; +import { rivalTrainerConfigs } from "./trainers-init/rival-trainer"; + +export const trainerConfigs: TrainerConfigs = { + [TrainerType.UNKNOWN]: new TrainerConfig(0).setHasGenders(), + ... randomNPCTrainersConfig, + ... evilGruntTrainerConfig, + ... evilAdminTrainerConfigs, + ... gymLeaderTrainersConfigs, + ... eliteFourTrainersConfigs, + ... championTrainersConfigs, + ... rivalTrainerConfigs, + ... evilAdminTrainersConfig, + ... mysteryEventTrainersConfigs, +}; diff --git a/src/data/trainers/trainers-init/champion-trainers.ts b/src/data/trainers/trainers-init/champion-trainers.ts index 16f9bf9c53b..d4e18ef220e 100644 --- a/src/data/trainers/trainers-init/champion-trainers.ts +++ b/src/data/trainers/trainers-init/champion-trainers.ts @@ -6,14 +6,11 @@ import { SpeciesId } from "#enums/species-id"; import { TrainerSlot } from "#enums/trainer-slot"; import { TrainerType } from "#enums/trainer-type"; import { PokemonMove } from "#moves/pokemon-move"; -import { TrainerConfig, getRandomPartyMemberFunc, nextTrainerId, setTrainerId } from "#trainers/trainer-config"; +import { TrainerConfig, getRandomPartyMemberFunc, nextTrainerId, setTrainerId, isMoveNullOrUndefined as isNullOrUndefined } from "#trainers/trainer-config"; import { TrainerConfigs } from "#types/trainer-funcs"; import { randSeedIntRange, randSeedItem } from "#utils/common"; -import { t } from "i18next"; -import { isNullOrUndefined } from "util"; - -export const championTrainers: TrainerConfigs = { +export const championTrainersConfigs: TrainerConfigs = { //Kanto Johto Champions [TrainerType.BLUE]: new TrainerConfig(setTrainerId(TrainerType.BLUE)) .initForChampion(true) diff --git a/src/data/trainers/trainers-init/double-trainers.ts b/src/data/trainers/trainers-init/double-trainers.ts deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/src/data/trainers/trainers-init/elite-four-trainers.ts b/src/data/trainers/trainers-init/elite-four-trainers.ts index 841441b7611..9702882ff9a 100644 --- a/src/data/trainers/trainers-init/elite-four-trainers.ts +++ b/src/data/trainers/trainers-init/elite-four-trainers.ts @@ -6,13 +6,11 @@ import { SpeciesId } from "#enums/species-id"; import { TrainerSlot } from "#enums/trainer-slot"; import { TrainerType } from "#enums/trainer-type"; import { PokemonMove } from "#moves/pokemon-move"; -import { getRandomPartyMemberFunc, nextTrainerId, setTrainerId, TrainerConfig } from "#trainers/trainer-config"; +import { getRandomPartyMemberFunc, nextTrainerId, setTrainerId, TrainerConfig, isMoveNullOrUndefined as isNullOrUndefined } from "#trainers/trainer-config"; import { TrainerConfigs } from "#types/trainer-funcs"; -import { t } from "i18next"; -import { isNullOrUndefined } from "util"; -export const eliteFourTrainers: TrainerConfigs = { +export const eliteFourTrainersConfigs: TrainerConfigs = { // Kanto Elite Four [TrainerType.LORELEI]: new TrainerConfig(setTrainerId(TrainerType.LORELEI)) .initForEliteFour(signatureSpecies["LORELEI"], false, PokemonType.ICE, 2) diff --git a/src/data/trainers/trainers-init/evil-organization-trainers.ts b/src/data/trainers/trainers-init/evil-organization-trainers.ts deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/src/data/trainers/trainers-init/evil-organizations/evil-admin-trainers.ts b/src/data/trainers/trainers-init/evil-organizations/evil-admin-trainers.ts index e69de29bb2d..c46afdee2a1 100644 --- a/src/data/trainers/trainers-init/evil-organizations/evil-admin-trainers.ts +++ b/src/data/trainers/trainers-init/evil-organizations/evil-admin-trainers.ts @@ -0,0 +1,270 @@ +import { MoveId } from "#enums/move-id"; +import { PokemonType } from "#enums/pokemon-type"; +import { SpeciesId } from "#enums/species-id"; +import { TrainerSlot } from "#enums/trainer-slot"; +import { TrainerType } from "#enums/trainer-type"; +import { PokemonMove } from "#moves/pokemon-move"; +import { TrainerConfig, getRandomPartyMemberFunc, nextTrainerId, setTrainerId } from "#trainers/trainer-config"; +import { getEvilGruntPartyTemplate } from "#trainers/trainer-party-template"; +import { TrainerConfigs } from "#types/trainer-funcs"; + + +export const evilAdminTrainerConfigs: TrainerConfigs ={ +// Johto And Kanto Evil Admins + [TrainerType.ARCHER]: new TrainerConfig(setTrainerId(TrainerType.ARCHER)) + .setMoneyMultiplier(1.5) + .initForEvilTeamAdmin("rocket_admin", "rocket", [SpeciesId.HOUNDOOM]) + .setEncounterBgm(TrainerType.PLASMA_GRUNT) + .setBattleBgm("battle_plasma_grunt") + .setMixedBattleBgm("battle_rocket_grunt") + .setVictoryBgm("victory_team_plasma") + .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), + [TrainerType.ARIANA]: new TrainerConfig(nextTrainerId()) + .setMoneyMultiplier(1.5) + .initForEvilTeamAdmin("rocket_admin_female", "rocket", [SpeciesId.ARBOK]) + .setEncounterBgm(TrainerType.PLASMA_GRUNT) + .setBattleBgm("battle_plasma_grunt") + .setMixedBattleBgm("battle_rocket_grunt") + .setVictoryBgm("victory_team_plasma") + .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), + [TrainerType.PROTON]: new TrainerConfig(nextTrainerId()) + .setMoneyMultiplier(1.5) + .initForEvilTeamAdmin("rocket_admin", "rocket", [SpeciesId.CROBAT]) + .setEncounterBgm(TrainerType.PLASMA_GRUNT) + .setBattleBgm("battle_plasma_grunt") + .setMixedBattleBgm("battle_rocket_grunt") + .setVictoryBgm("victory_team_plasma") + .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), + [TrainerType.PETREL]: new TrainerConfig(nextTrainerId()) + .setMoneyMultiplier(1.5) + .initForEvilTeamAdmin("rocket_admin", "rocket", [SpeciesId.WEEZING]) + .setEncounterBgm(TrainerType.PLASMA_GRUNT) + .setBattleBgm("battle_plasma_grunt") + .setMixedBattleBgm("battle_rocket_grunt") + .setVictoryBgm("victory_team_plasma") + .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), +// Hoenn Evil Admins + [TrainerType.TABITHA]: new TrainerConfig(nextTrainerId()) + .setMoneyMultiplier(1.5) + .initForEvilTeamAdmin("magma_admin", "magma", [SpeciesId.CAMERUPT]) + .setEncounterBgm(TrainerType.PLASMA_GRUNT) + .setBattleBgm("battle_plasma_grunt") + .setMixedBattleBgm("battle_aqua_magma_grunt") + .setVictoryBgm("victory_team_plasma") + .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), + [TrainerType.COURTNEY]: new TrainerConfig(nextTrainerId()) + .setMoneyMultiplier(1.5) + .initForEvilTeamAdmin("magma_admin_female", "magma", [SpeciesId.CAMERUPT]) + .setEncounterBgm(TrainerType.PLASMA_GRUNT) + .setBattleBgm("battle_plasma_grunt") + .setMixedBattleBgm("battle_aqua_magma_grunt") + .setVictoryBgm("victory_team_plasma") + .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), + [TrainerType.MATT]: new TrainerConfig(nextTrainerId()) + .setMoneyMultiplier(1.5) + .initForEvilTeamAdmin("aqua_admin", "aqua", [SpeciesId.SHARPEDO]) + .setEncounterBgm(TrainerType.PLASMA_GRUNT) + .setBattleBgm("battle_plasma_grunt") + .setMixedBattleBgm("battle_aqua_magma_grunt") + .setVictoryBgm("victory_team_plasma") + .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), + [TrainerType.SHELLY]: new TrainerConfig(nextTrainerId()) + .setMoneyMultiplier(1.5) + .initForEvilTeamAdmin("aqua_admin_female", "aqua", [SpeciesId.SHARPEDO]) + .setEncounterBgm(TrainerType.PLASMA_GRUNT) + .setBattleBgm("battle_plasma_grunt") + .setMixedBattleBgm("battle_aqua_magma_grunt") + .setVictoryBgm("victory_team_plasma") + .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), +// Sinnoh Evil Admins + [TrainerType.JUPITER]: new TrainerConfig(nextTrainerId()) + .setMoneyMultiplier(1.5) + .initForEvilTeamAdmin("galactic_commander_female", "galactic", [SpeciesId.SKUNTANK]) + .setEncounterBgm(TrainerType.PLASMA_GRUNT) + .setBattleBgm("battle_plasma_grunt") + .setMixedBattleBgm("battle_galactic_admin") + .setVictoryBgm("victory_team_plasma") + .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), + [TrainerType.MARS]: new TrainerConfig(nextTrainerId()) + .setMoneyMultiplier(1.5) + .initForEvilTeamAdmin("galactic_commander_female", "galactic", [SpeciesId.PURUGLY]) + .setEncounterBgm(TrainerType.PLASMA_GRUNT) + .setBattleBgm("battle_plasma_grunt") + .setMixedBattleBgm("battle_galactic_admin") + .setVictoryBgm("victory_team_plasma") + .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), + [TrainerType.SATURN]: new TrainerConfig(nextTrainerId()) + .setMoneyMultiplier(1.5) + .initForEvilTeamAdmin("galactic_commander", "galactic", [SpeciesId.TOXICROAK]) + .setEncounterBgm(TrainerType.PLASMA_GRUNT) + .setBattleBgm("battle_plasma_grunt") + .setMixedBattleBgm("battle_galactic_admin") + .setVictoryBgm("victory_team_plasma") + .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), +// Unova Evil Admins + [TrainerType.ZINZOLIN]: new TrainerConfig(nextTrainerId()) + .setMoneyMultiplier(1.5) + .initForEvilTeamAdmin("plasma_sage", "plasma_zinzolin", [SpeciesId.CRYOGONAL]) + .setEncounterBgm(TrainerType.PLASMA_GRUNT) + .setBattleBgm("battle_plasma_grunt") + .setMixedBattleBgm("battle_plasma_grunt") + .setVictoryBgm("victory_team_plasma") + .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), + [TrainerType.COLRESS]: new TrainerConfig(nextTrainerId()) + .setMoneyMultiplier(1.5) + .initForEvilTeamAdmin("plasma_boss", "plasma_colress", [SpeciesId.KLINKLANG]) + .setEncounterBgm(TrainerType.PLASMA_GRUNT) + .setBattleBgm("battle_colress") + .setMixedBattleBgm("battle_colress") + .setVictoryBgm("victory_team_plasma") + .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), +// Kalos Evil Admins + [TrainerType.BRYONY]: new TrainerConfig(nextTrainerId()) + .setMoneyMultiplier(1.5) + .initForEvilTeamAdmin("flare_admin_female", "flare", [SpeciesId.LIEPARD]) + .setEncounterBgm(TrainerType.PLASMA_GRUNT) + .setBattleBgm("battle_plasma_grunt") + .setMixedBattleBgm("battle_flare_grunt") + .setVictoryBgm("victory_team_plasma") + .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), + [TrainerType.XEROSIC]: new TrainerConfig(nextTrainerId()) + .setMoneyMultiplier(1.5) + .initForEvilTeamAdmin("flare_admin", "flare", [SpeciesId.MALAMAR]) + .setEncounterBgm(TrainerType.PLASMA_GRUNT) + .setBattleBgm("battle_plasma_grunt") + .setMixedBattleBgm("battle_flare_grunt") + .setVictoryBgm("victory_team_plasma") + .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), + +// Alola Evil Admins + [TrainerType.FABA]: new TrainerConfig(nextTrainerId()) + .setMoneyMultiplier(1.5) + .initForEvilTeamAdmin("aether_admin", "aether", [SpeciesId.HYPNO]) + .setEncounterBgm(TrainerType.PLASMA_GRUNT) + .setBattleBgm("battle_plasma_grunt") + .setMixedBattleBgm("battle_aether_grunt") + .setVictoryBgm("victory_team_plasma") + .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), + + [TrainerType.PLUMERIA]: new TrainerConfig(nextTrainerId()) + .setMoneyMultiplier(1.5) + .initForEvilTeamAdmin("skull_admin", "skull", [SpeciesId.SALAZZLE]) + .setEncounterBgm(TrainerType.PLASMA_GRUNT) + .setBattleBgm("battle_plasma_grunt") + .setMixedBattleBgm("battle_skull_admin") + .setVictoryBgm("victory_team_plasma") + .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), + + +// Galar Evil Admin + [TrainerType.OLEANA]: new TrainerConfig(nextTrainerId()) + .setMoneyMultiplier(1.5) + .initForEvilTeamAdmin("macro_admin", "macro_cosmos", [SpeciesId.GARBODOR]) + .setEncounterBgm(TrainerType.PLASMA_GRUNT) + .setBattleBgm("battle_plasma_grunt") + .setMixedBattleBgm("battle_oleana") + .setVictoryBgm("victory_team_plasma") + .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()), + +// Paldea Evil Admins + [TrainerType.GIACOMO]: new TrainerConfig(nextTrainerId()) + .setMoneyMultiplier(1.5) + .initForEvilTeamAdmin("star_admin", "star_dark", [SpeciesId.KINGAMBIT], PokemonType.DARK) + .setEncounterBgm(TrainerType.PLASMA_GRUNT) + .setBattleBgm("battle_plasma_grunt") + .setMixedBattleBgm("battle_star_admin") + .setVictoryBgm("victory_team_plasma") + .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) + .setPartyMemberFunc( + 3, + getRandomPartyMemberFunc([SpeciesId.REVAVROOM], TrainerSlot.TRAINER, true, p => { + p.formIndex = 1; // Segin Starmobile + p.moveset = [ + new PokemonMove(MoveId.WICKED_TORQUE), + new PokemonMove(MoveId.SPIN_OUT), + new PokemonMove(MoveId.PARTING_SHOT), + new PokemonMove(MoveId.HIGH_HORSEPOWER), + ]; + }), + ), + [TrainerType.MELA]: new TrainerConfig(nextTrainerId()) + .setMoneyMultiplier(1.5) + .initForEvilTeamAdmin("star_admin", "star_fire", [SpeciesId.ARMAROUGE], PokemonType.FIRE) + .setEncounterBgm(TrainerType.PLASMA_GRUNT) + .setBattleBgm("battle_plasma_grunt") + .setMixedBattleBgm("battle_star_admin") + .setVictoryBgm("victory_team_plasma") + .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) + .setPartyMemberFunc( + 3, + getRandomPartyMemberFunc([SpeciesId.REVAVROOM], TrainerSlot.TRAINER, true, p => { + p.formIndex = 2; // Schedar Starmobile + p.moveset = [ + new PokemonMove(MoveId.BLAZING_TORQUE), + new PokemonMove(MoveId.SPIN_OUT), + new PokemonMove(MoveId.FLAME_CHARGE), + new PokemonMove(MoveId.HIGH_HORSEPOWER), + ]; + }), + ), + [TrainerType.ATTICUS]: new TrainerConfig(nextTrainerId()) + .setMoneyMultiplier(1.5) + .initForEvilTeamAdmin("star_admin", "star_poison", [SpeciesId.REVAVROOM], PokemonType.POISON) + .setEncounterBgm(TrainerType.PLASMA_GRUNT) + .setBattleBgm("battle_plasma_grunt") + .setMixedBattleBgm("battle_star_admin") + .setVictoryBgm("victory_team_plasma") + .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) + .setPartyMemberFunc( + 3, + getRandomPartyMemberFunc([SpeciesId.REVAVROOM], TrainerSlot.TRAINER, true, p => { + p.formIndex = 3; // Navi Starmobile + p.moveset = [ + new PokemonMove(MoveId.NOXIOUS_TORQUE), + new PokemonMove(MoveId.SPIN_OUT), + new PokemonMove(MoveId.TOXIC_SPIKES), + new PokemonMove(MoveId.HIGH_HORSEPOWER), + ]; + }), + ), + [TrainerType.ORTEGA]: new TrainerConfig(nextTrainerId()) + .setMoneyMultiplier(1.5) + .initForEvilTeamAdmin("star_admin", "star_fairy", [SpeciesId.DACHSBUN], PokemonType.FAIRY) + .setEncounterBgm(TrainerType.PLASMA_GRUNT) + .setBattleBgm("battle_plasma_grunt") + .setMixedBattleBgm("battle_star_admin") + .setVictoryBgm("victory_team_plasma") + .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) + .setPartyMemberFunc( + 3, + getRandomPartyMemberFunc([SpeciesId.REVAVROOM], TrainerSlot.TRAINER, true, p => { + p.formIndex = 4; // Ruchbah Starmobile + p.moveset = [ + new PokemonMove(MoveId.MAGICAL_TORQUE), + new PokemonMove(MoveId.SPIN_OUT), + new PokemonMove(MoveId.MISTY_TERRAIN), + new PokemonMove(MoveId.HIGH_HORSEPOWER), + ]; + }), + ), + [TrainerType.ERI]: new TrainerConfig(nextTrainerId()) + .setMoneyMultiplier(1.5) + .initForEvilTeamAdmin("star_admin", "star_fighting", [SpeciesId.ANNIHILAPE], PokemonType.FIGHTING) + .setEncounterBgm(TrainerType.PLASMA_GRUNT) + .setBattleBgm("battle_plasma_grunt") + .setMixedBattleBgm("battle_star_admin") + .setVictoryBgm("victory_team_plasma") + .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) + .setPartyMemberFunc( + 3, + getRandomPartyMemberFunc([SpeciesId.REVAVROOM], TrainerSlot.TRAINER, true, p => { + p.formIndex = 5; // Caph Starmobile + p.moveset = [ + new PokemonMove(MoveId.COMBAT_TORQUE), + new PokemonMove(MoveId.SPIN_OUT), + new PokemonMove(MoveId.IRON_DEFENSE), + new PokemonMove(MoveId.HIGH_HORSEPOWER), + ]; + }), + ), +} \ No newline at end of file diff --git a/src/data/trainers/trainers-init/evil-organizations/evil-grunts-trainers.ts b/src/data/trainers/trainers-init/evil-organizations/evil-grunts-trainers.ts index 139597f9cb0..f6770a2541c 100644 --- a/src/data/trainers/trainers-init/evil-organizations/evil-grunts-trainers.ts +++ b/src/data/trainers/trainers-init/evil-organizations/evil-grunts-trainers.ts @@ -1,2 +1,480 @@ +import { SpeciesId } from "#enums/species-id"; +import { TrainerPoolTier } from "#enums/trainer-pool-tier"; +import { TrainerType } from "#enums/trainer-type"; +import { nextTrainerId, setTrainerId, TrainerConfig } from "#trainers/trainer-config"; +import { getEvilGruntPartyTemplate } from "#trainers/trainer-party-template"; +import { TrainerConfigs } from "#types/trainer-funcs"; - +export const evilGruntTrainerConfig: TrainerConfigs = { +// Johto And Kanto Grunts + [TrainerType.ROCKET_GRUNT]: new TrainerConfig(setTrainerId(TrainerType.ROCKET_GRUNT)) + .setHasGenders("Rocket Grunt Female") + .setHasDouble("Rocket Grunts") + .setMoneyMultiplier(1.0) + .setEncounterBgm(TrainerType.PLASMA_GRUNT) + .setBattleBgm("battle_plasma_grunt") + .setMixedBattleBgm("battle_rocket_grunt") + .setVictoryBgm("victory_team_plasma") + .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) + .setSpeciesPools({ + [TrainerPoolTier.COMMON]: [ + SpeciesId.WEEDLE, + SpeciesId.RATTATA, + SpeciesId.EKANS, + SpeciesId.SANDSHREW, + SpeciesId.ZUBAT, + SpeciesId.ODDISH, + SpeciesId.GEODUDE, + SpeciesId.SLOWPOKE, + SpeciesId.GRIMER, + SpeciesId.KOFFING, + ], + [TrainerPoolTier.UNCOMMON]: [ + SpeciesId.MANKEY, + SpeciesId.GROWLITHE, + SpeciesId.MAGNEMITE, + SpeciesId.ONIX, + SpeciesId.VOLTORB, + SpeciesId.EXEGGCUTE, + SpeciesId.CUBONE, + SpeciesId.LICKITUNG, + SpeciesId.TAUROS, + SpeciesId.MAGIKARP, + SpeciesId.MURKROW, + SpeciesId.ELEKID, + SpeciesId.MAGBY, + ], + [TrainerPoolTier.RARE]: [ + SpeciesId.ABRA, + SpeciesId.GASTLY, + SpeciesId.SCYTHER, + SpeciesId.PORYGON, + SpeciesId.OMANYTE, + SpeciesId.KABUTO, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRIMER, + SpeciesId.PALDEA_TAUROS, + ], + [TrainerPoolTier.SUPER_RARE]: [SpeciesId.DRATINI, SpeciesId.LARVITAR], + }), +// Hoenn Grunts + [TrainerType.MAGMA_GRUNT]: new TrainerConfig(nextTrainerId()) + .setHasGenders("Magma Grunt Female") + .setHasDouble("Magma Grunts") + .setMoneyMultiplier(1.0) + .setEncounterBgm(TrainerType.PLASMA_GRUNT) + .setBattleBgm("battle_plasma_grunt") + .setMixedBattleBgm("battle_aqua_magma_grunt") + .setVictoryBgm("victory_team_plasma") + .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) + .setSpeciesPools({ + [TrainerPoolTier.COMMON]: [ + SpeciesId.DIGLETT, + SpeciesId.GROWLITHE, + SpeciesId.SLUGMA, + SpeciesId.POOCHYENA, + SpeciesId.ZIGZAGOON, + SpeciesId.NUMEL, + SpeciesId.TORKOAL, + SpeciesId.BALTOY, + ], + [TrainerPoolTier.UNCOMMON]: [ + SpeciesId.RHYHORN, + SpeciesId.PHANPY, + SpeciesId.MAGBY, + SpeciesId.ZANGOOSE, + SpeciesId.SOLROCK, + SpeciesId.HEATMOR, + SpeciesId.ROLYCOLY, + SpeciesId.CAPSAKID, + ], + [TrainerPoolTier.RARE]: [ + SpeciesId.TRAPINCH, + SpeciesId.LILEEP, + SpeciesId.ANORITH, + SpeciesId.GOLETT, + SpeciesId.TURTONATOR, + SpeciesId.TOEDSCOOL, + SpeciesId.HISUI_GROWLITHE, + ], + [TrainerPoolTier.SUPER_RARE]: [SpeciesId.CHARCADET, SpeciesId.ARON], + }), + [TrainerType.AQUA_GRUNT]: new TrainerConfig(nextTrainerId()) + .setHasGenders("Aqua Grunt Female") + .setHasDouble("Aqua Grunts") + .setMoneyMultiplier(1.0) + .setEncounterBgm(TrainerType.PLASMA_GRUNT) + .setBattleBgm("battle_plasma_grunt") + .setMixedBattleBgm("battle_aqua_magma_grunt") + .setVictoryBgm("victory_team_plasma") + .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) + .setSpeciesPools({ + [TrainerPoolTier.COMMON]: [ + SpeciesId.QWILFISH, + SpeciesId.REMORAID, + SpeciesId.ZIGZAGOON, + SpeciesId.LOTAD, + SpeciesId.WINGULL, + SpeciesId.CARVANHA, + SpeciesId.WAILMER, + SpeciesId.BARBOACH, + SpeciesId.CORPHISH, + SpeciesId.SPHEAL, + ], + [TrainerPoolTier.UNCOMMON]: [ + SpeciesId.TENTACOOL, + SpeciesId.HORSEA, + SpeciesId.CHINCHOU, + SpeciesId.WOOPER, + SpeciesId.AZURILL, + SpeciesId.SEVIPER, + SpeciesId.CLAMPERL, + SpeciesId.WIMPOD, + SpeciesId.CLOBBOPUS, + ], + [TrainerPoolTier.RARE]: [ + SpeciesId.MANTYKE, + SpeciesId.TYMPOLE, + SpeciesId.SKRELP, + SpeciesId.ARROKUDA, + SpeciesId.WIGLETT, + SpeciesId.HISUI_QWILFISH, + SpeciesId.PALDEA_WOOPER, + ], + [TrainerPoolTier.SUPER_RARE]: [SpeciesId.BASCULEGION, SpeciesId.DONDOZO], + }), +// Unova Grunts + [TrainerType.GALACTIC_GRUNT]: new TrainerConfig(nextTrainerId()) + .setHasGenders("Galactic Grunt Female") + .setHasDouble("Galactic Grunts") + .setMoneyMultiplier(1.0) + .setEncounterBgm(TrainerType.PLASMA_GRUNT) + .setBattleBgm("battle_plasma_grunt") + .setMixedBattleBgm("battle_galactic_grunt") + .setVictoryBgm("victory_team_plasma") + .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) + .setSpeciesPools({ + [TrainerPoolTier.COMMON]: [ + SpeciesId.WURMPLE, + SpeciesId.SHINX, + SpeciesId.BURMY, + SpeciesId.DRIFLOON, + SpeciesId.GLAMEOW, + SpeciesId.STUNKY, + SpeciesId.BRONZOR, + SpeciesId.CROAGUNK, + SpeciesId.CARNIVINE, + ], + [TrainerPoolTier.UNCOMMON]: [ + SpeciesId.ZUBAT, + SpeciesId.LICKITUNG, + SpeciesId.RHYHORN, + SpeciesId.TANGELA, + SpeciesId.YANMA, + SpeciesId.GLIGAR, + SpeciesId.SWINUB, + SpeciesId.SKORUPI, + ], + [TrainerPoolTier.RARE]: [ + SpeciesId.SNEASEL, + SpeciesId.TEDDIURSA, + SpeciesId.ELEKID, + SpeciesId.MAGBY, + SpeciesId.DUSKULL, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_QWILFISH, + ], + [TrainerPoolTier.SUPER_RARE]: [SpeciesId.SPIRITOMB, SpeciesId.ROTOM, SpeciesId.HISUI_SNEASEL], + }), +// Sinnoh Grunts + [TrainerType.PLASMA_GRUNT]: new TrainerConfig(nextTrainerId()) + .setHasGenders("Plasma Grunt Female") + .setHasDouble("Plasma Grunts") + .setMoneyMultiplier(1.0) + .setEncounterBgm(TrainerType.PLASMA_GRUNT) + .setBattleBgm("battle_plasma_grunt") + .setMixedBattleBgm("battle_plasma_grunt") + .setVictoryBgm("victory_team_plasma") + .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) + .setSpeciesPools({ + [TrainerPoolTier.COMMON]: [ + SpeciesId.PATRAT, + SpeciesId.LILLIPUP, + SpeciesId.PURRLOIN, + SpeciesId.WOOBAT, + SpeciesId.TYMPOLE, + SpeciesId.SANDILE, + SpeciesId.SCRAGGY, + SpeciesId.TRUBBISH, + SpeciesId.VANILLITE, + ], + [TrainerPoolTier.UNCOMMON]: [ + SpeciesId.TIMBURR, + SpeciesId.VENIPEDE, + SpeciesId.DARUMAKA, + SpeciesId.FOONGUS, + SpeciesId.FRILLISH, + SpeciesId.JOLTIK, + SpeciesId.KLINK, + SpeciesId.CUBCHOO, + SpeciesId.GOLETT, + ], + [TrainerPoolTier.RARE]: [ + SpeciesId.DRILBUR, + SpeciesId.ZORUA, + SpeciesId.MIENFOO, + SpeciesId.PAWNIARD, + SpeciesId.BOUFFALANT, + SpeciesId.RUFFLET, + SpeciesId.VULLABY, + SpeciesId.DURANT, + ], + [TrainerPoolTier.SUPER_RARE]: [SpeciesId.AXEW, SpeciesId.DRUDDIGON, SpeciesId.DEINO, SpeciesId.HISUI_ZORUA], + }), +// Kalos Grunts + [TrainerType.FLARE_GRUNT]: new TrainerConfig(nextTrainerId()) + .setHasGenders("Flare Grunt Female") + .setHasDouble("Flare Grunts") + .setMoneyMultiplier(1.0) + .setEncounterBgm(TrainerType.PLASMA_GRUNT) + .setBattleBgm("battle_plasma_grunt") + .setMixedBattleBgm("battle_flare_grunt") + .setVictoryBgm("victory_team_plasma") + .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) + .setSpeciesPools({ + [TrainerPoolTier.COMMON]: [ + SpeciesId.HOUNDOUR, + SpeciesId.GULPIN, + SpeciesId.SKORUPI, + SpeciesId.CROAGUNK, + SpeciesId.PURRLOIN, + SpeciesId.SCRAGGY, + SpeciesId.FLETCHLING, + SpeciesId.SCATTERBUG, + SpeciesId.LITLEO, + SpeciesId.ESPURR, + SpeciesId.INKAY, + ], + [TrainerPoolTier.UNCOMMON]: [ + SpeciesId.POOCHYENA, + SpeciesId.ELECTRIKE, + SpeciesId.FOONGUS, + SpeciesId.PANCHAM, + SpeciesId.BINACLE, + SpeciesId.SKRELP, + SpeciesId.CLAUNCHER, + SpeciesId.HELIOPTILE, + SpeciesId.PHANTUMP, + SpeciesId.PUMPKABOO, + ], + [TrainerPoolTier.RARE]: [SpeciesId.SNEASEL, SpeciesId.LITWICK, SpeciesId.PAWNIARD, SpeciesId.NOIBAT], + [TrainerPoolTier.SUPER_RARE]: [SpeciesId.SLIGGOO, SpeciesId.HISUI_SLIGGOO, SpeciesId.HISUI_AVALUGG], + }), +// Alola Grunts + [TrainerType.AETHER_GRUNT]: new TrainerConfig(nextTrainerId()) + .setHasGenders("Aether Grunt Female") + .setHasDouble("Aether Grunts") + .setMoneyMultiplier(1.0) + .setEncounterBgm(TrainerType.PLASMA_GRUNT) + .setBattleBgm("battle_plasma_grunt") + .setMixedBattleBgm("battle_aether_grunt") + .setVictoryBgm("victory_team_plasma") + .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) + .setSpeciesPools({ + [TrainerPoolTier.COMMON]: [ + SpeciesId.CORSOLA, + SpeciesId.LILLIPUP, + SpeciesId.PIKIPEK, + SpeciesId.YUNGOOS, + SpeciesId.ROCKRUFF, + SpeciesId.MORELULL, + SpeciesId.BOUNSWEET, + SpeciesId.COMFEY, + SpeciesId.KOMALA, + SpeciesId.TOGEDEMARU, + SpeciesId.ALOLA_RAICHU, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_EXEGGUTOR, + ], + [TrainerPoolTier.UNCOMMON]: [ + SpeciesId.POLIWAG, + SpeciesId.CRABRAWLER, + SpeciesId.ORICORIO, + SpeciesId.CUTIEFLY, + SpeciesId.WISHIWASHI, + SpeciesId.MUDBRAY, + SpeciesId.STUFFUL, + SpeciesId.ORANGURU, + SpeciesId.PASSIMIAN, + SpeciesId.PYUKUMUKU, + SpeciesId.BRUXISH, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_MAROWAK, + ], + [TrainerPoolTier.RARE]: [ + SpeciesId.MINIOR, + SpeciesId.TURTONATOR, + SpeciesId.MIMIKYU, + SpeciesId.DRAMPA, + SpeciesId.GALAR_CORSOLA, + ], + [TrainerPoolTier.SUPER_RARE]: [SpeciesId.PORYGON, SpeciesId.JANGMO_O], + }), + [TrainerType.SKULL_GRUNT]: new TrainerConfig(nextTrainerId()) + .setHasGenders("Skull Grunt Female") + .setHasDouble("Skull Grunts") + .setMoneyMultiplier(1.0) + .setEncounterBgm(TrainerType.PLASMA_GRUNT) + .setBattleBgm("battle_plasma_grunt") + .setMixedBattleBgm("battle_skull_grunt") + .setVictoryBgm("victory_team_plasma") + .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) + .setSpeciesPools({ + [TrainerPoolTier.COMMON]: [ + SpeciesId.EKANS, + SpeciesId.VENONAT, + SpeciesId.DROWZEE, + SpeciesId.KOFFING, + SpeciesId.SPINARAK, + SpeciesId.SCRAGGY, + SpeciesId.TRUBBISH, + SpeciesId.MAREANIE, + SpeciesId.SALANDIT, + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.ALOLA_GRIMER, + ], + [TrainerPoolTier.UNCOMMON]: [ + SpeciesId.ZUBAT, + SpeciesId.GASTLY, + SpeciesId.HOUNDOUR, + SpeciesId.SABLEYE, + SpeciesId.VENIPEDE, + SpeciesId.SANDILE, + SpeciesId.VULLABY, + SpeciesId.PANCHAM, + SpeciesId.FOMANTIS, + SpeciesId.ALOLA_MAROWAK, + ], + [TrainerPoolTier.RARE]: [ + SpeciesId.PAWNIARD, + SpeciesId.WISHIWASHI, + SpeciesId.SANDYGAST, + SpeciesId.MIMIKYU, + SpeciesId.DHELMISE, + SpeciesId.NYMBLE, + ], + [TrainerPoolTier.SUPER_RARE]: [SpeciesId.GRUBBIN, SpeciesId.DEWPIDER], + }), +// Galar Grunts + [TrainerType.MACRO_GRUNT]: new TrainerConfig(nextTrainerId()) + .setHasGenders("Macro Grunt Female") + .setHasDouble("Macro Grunts") + .setMoneyMultiplier(1.0) + .setEncounterBgm(TrainerType.PLASMA_GRUNT) + .setBattleBgm("battle_plasma_grunt") + .setMixedBattleBgm("battle_macro_grunt") + .setVictoryBgm("victory_team_plasma") + .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) + .setSpeciesPools({ + [TrainerPoolTier.COMMON]: [ + SpeciesId.STEELIX, + SpeciesId.MAWILE, + SpeciesId.FERROSEED, + SpeciesId.KLINK, + SpeciesId.SKWOVET, + SpeciesId.ROOKIDEE, + SpeciesId.ROLYCOLY, + SpeciesId.CUFANT, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_ZIGZAGOON, + ], + [TrainerPoolTier.UNCOMMON]: [ + SpeciesId.MAGNEMITE, + SpeciesId.RIOLU, + SpeciesId.DRILBUR, + SpeciesId.APPLIN, + SpeciesId.CRAMORANT, + SpeciesId.ARROKUDA, + SpeciesId.SINISTEA, + SpeciesId.HATENNA, + SpeciesId.FALINKS, + SpeciesId.GALAR_PONYTA, + SpeciesId.GALAR_YAMASK, + ], + [TrainerPoolTier.RARE]: [ + SpeciesId.SCIZOR, + SpeciesId.BELDUM, + SpeciesId.HONEDGE, + SpeciesId.GALAR_FARFETCHD, + SpeciesId.GALAR_MR_MIME, + SpeciesId.GALAR_DARUMAKA, + ], + [TrainerPoolTier.SUPER_RARE]: [SpeciesId.DURALUDON, SpeciesId.DREEPY], + }), +// Paldea Grunts + [TrainerType.STAR_GRUNT]: new TrainerConfig(nextTrainerId()) + .setHasGenders("Star Grunt Female") + .setHasDouble("Star Grunts") + .setMoneyMultiplier(1.0) + .setEncounterBgm(TrainerType.PLASMA_GRUNT) + .setBattleBgm("battle_plasma_grunt") + .setMixedBattleBgm("battle_star_grunt") + .setVictoryBgm("victory_team_plasma") + .setPartyTemplateFunc(() => getEvilGruntPartyTemplate()) + .setSpeciesPools({ + [TrainerPoolTier.COMMON]: [ + SpeciesId.DUNSPARCE, + SpeciesId.HOUNDOUR, + SpeciesId.AZURILL, + SpeciesId.GULPIN, + SpeciesId.FOONGUS, + SpeciesId.FLETCHLING, + SpeciesId.LITLEO, + SpeciesId.FLABEBE, + SpeciesId.CRABRAWLER, + SpeciesId.NYMBLE, + SpeciesId.PAWMI, + SpeciesId.FIDOUGH, + SpeciesId.SQUAWKABILLY, + SpeciesId.MASCHIFF, + SpeciesId.SHROODLE, + SpeciesId.KLAWF, + SpeciesId.WIGLETT, + SpeciesId.PALDEA_WOOPER, + ], + [TrainerPoolTier.UNCOMMON]: [ + SpeciesId.KOFFING, + SpeciesId.EEVEE, + SpeciesId.GIRAFARIG, + SpeciesId.RALTS, + SpeciesId.TORKOAL, + SpeciesId.SEVIPER, + SpeciesId.SCRAGGY, + SpeciesId.ZORUA, + SpeciesId.MIMIKYU, + SpeciesId.IMPIDIMP, + SpeciesId.FALINKS, + SpeciesId.CAPSAKID, + SpeciesId.TINKATINK, + SpeciesId.BOMBIRDIER, + SpeciesId.CYCLIZAR, + SpeciesId.FLAMIGO, + SpeciesId.PALDEA_TAUROS, + ], + [TrainerPoolTier.RARE]: [ + SpeciesId.MANKEY, + SpeciesId.PAWNIARD, + SpeciesId.CHARCADET, + SpeciesId.FLITTLE, + SpeciesId.VAROOM, + SpeciesId.ORTHWORM, + ], + [TrainerPoolTier.SUPER_RARE]: [SpeciesId.DONDOZO, SpeciesId.GIMMIGHOUL], + }), +} \ No newline at end of file diff --git a/src/data/trainers/trainers-init/evil-organizations/evil-leaders-trainers.ts b/src/data/trainers/trainers-init/evil-organizations/evil-leaders-trainers.ts index a02b8e4f909..eef47c80f98 100644 --- a/src/data/trainers/trainers-init/evil-organizations/evil-leaders-trainers.ts +++ b/src/data/trainers/trainers-init/evil-organizations/evil-leaders-trainers.ts @@ -9,7 +9,7 @@ import { getRandomPartyMemberFunc, nextTrainerId, setTrainerId, TrainerConfig } import { TrainerConfigs } from "#types/trainer-funcs"; import { isNullOrUndefined, randSeedInt } from "#utils/common"; -export const evilAdminTrainers: TrainerConfigs = { +export const evilAdminTrainersConfig: TrainerConfigs = { [TrainerType.ROCKET_BOSS_GIOVANNI_1]: new TrainerConfig(setTrainerId(TrainerType.ROCKET_BOSS_GIOVANNI_1)) .setName("Giovanni") .initForEvilTeamLeader("Rocket Boss", []) diff --git a/src/data/trainers/trainers-init/gym-trainers.ts b/src/data/trainers/trainers-init/gym-trainers.ts index e69de29bb2d..898a7e109c5 100644 --- a/src/data/trainers/trainers-init/gym-trainers.ts +++ b/src/data/trainers/trainers-init/gym-trainers.ts @@ -0,0 +1,282 @@ +import { signatureSpecies } from "#balance/signature-species"; +import { PokemonType } from "#enums/pokemon-type"; +import { TrainerType } from "#enums/trainer-type"; +import { nextTrainerId, setTrainerId, TrainerConfig } from "#trainers/trainer-config"; +import { TrainerConfigs } from "#types/trainer-funcs"; + + +export const gymLeaderTrainersConfigs : TrainerConfigs = { + [TrainerType.BROCK]: new TrainerConfig(setTrainerId(TrainerType.BROCK)) + .initForGymLeader(signatureSpecies["BROCK"], true, PokemonType.ROCK, false, -1) + .setBattleBgm("battle_kanto_gym") + .setMixedBattleBgm("battle_kanto_gym"), + [TrainerType.MISTY]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["MISTY"], false, PokemonType.WATER, false, -1) + .setBattleBgm("battle_kanto_gym") + .setMixedBattleBgm("battle_kanto_gym"), + [TrainerType.LT_SURGE]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["LT_SURGE"], true, PokemonType.ELECTRIC, false, -1) + .setBattleBgm("battle_kanto_gym") + .setMixedBattleBgm("battle_kanto_gym"), + [TrainerType.ERIKA]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["ERIKA"], false, PokemonType.GRASS, false, -1) + .setBattleBgm("battle_kanto_gym") + .setMixedBattleBgm("battle_kanto_gym"), + [TrainerType.JANINE]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["JANINE"], false, PokemonType.POISON, false, -1) + .setBattleBgm("battle_kanto_gym") + .setMixedBattleBgm("battle_kanto_gym"), + [TrainerType.SABRINA]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["SABRINA"], false, PokemonType.PSYCHIC, false, -1) + .setBattleBgm("battle_kanto_gym") + .setMixedBattleBgm("battle_kanto_gym"), + [TrainerType.BLAINE]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["BLAINE"], true, PokemonType.FIRE, false, -1) + .setBattleBgm("battle_kanto_gym") + .setMixedBattleBgm("battle_kanto_gym"), + [TrainerType.GIOVANNI]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["GIOVANNI"], true, PokemonType.GROUND, false, -2) + .setBattleBgm("battle_kanto_gym") + .setMixedBattleBgm("battle_kanto_gym"), + [TrainerType.FALKNER]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["FALKNER"], true, PokemonType.FLYING, false, -1) + .setBattleBgm("battle_johto_gym") + .setMixedBattleBgm("battle_johto_gym"), + [TrainerType.BUGSY]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["BUGSY"], true, PokemonType.BUG, false, -1) + .setBattleBgm("battle_johto_gym") + .setMixedBattleBgm("battle_johto_gym"), + [TrainerType.WHITNEY]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["WHITNEY"], false, PokemonType.NORMAL, false, -1) + .setBattleBgm("battle_johto_gym") + .setMixedBattleBgm("battle_johto_gym"), + [TrainerType.MORTY]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["MORTY"], true, PokemonType.GHOST, false, -1) + .setBattleBgm("battle_johto_gym") + .setMixedBattleBgm("battle_johto_gym"), + [TrainerType.CHUCK]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["CHUCK"], true, PokemonType.FIGHTING, false, -1) + .setBattleBgm("battle_johto_gym") + .setMixedBattleBgm("battle_johto_gym"), + [TrainerType.JASMINE]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["JASMINE"], false, PokemonType.STEEL, false, -1) + .setBattleBgm("battle_johto_gym") + .setMixedBattleBgm("battle_johto_gym"), + [TrainerType.PRYCE]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["PRYCE"], true, PokemonType.ICE, false, -1) + .setBattleBgm("battle_johto_gym") + .setMixedBattleBgm("battle_johto_gym"), + [TrainerType.CLAIR]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["CLAIR"], false, PokemonType.DRAGON, false, -3) + .setBattleBgm("battle_johto_gym") + .setMixedBattleBgm("battle_johto_gym"), + [TrainerType.ROXANNE]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["ROXANNE"], false, PokemonType.ROCK, false, -1) + .setBattleBgm("battle_hoenn_gym") + .setMixedBattleBgm("battle_hoenn_gym"), + [TrainerType.BRAWLY]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["BRAWLY"], true, PokemonType.FIGHTING, false, -1) + .setBattleBgm("battle_hoenn_gym") + .setMixedBattleBgm("battle_hoenn_gym"), + [TrainerType.WATTSON]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["WATTSON"], true, PokemonType.ELECTRIC, false, -1) + .setBattleBgm("battle_hoenn_gym") + .setMixedBattleBgm("battle_hoenn_gym"), + [TrainerType.FLANNERY]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["FLANNERY"], false, PokemonType.FIRE, false, -1) + .setBattleBgm("battle_hoenn_gym") + .setMixedBattleBgm("battle_hoenn_gym"), + [TrainerType.NORMAN]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["NORMAN"], true, PokemonType.NORMAL, false, -1) + .setBattleBgm("battle_hoenn_gym") + .setMixedBattleBgm("battle_hoenn_gym"), + [TrainerType.WINONA]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["WINONA"], false, PokemonType.FLYING, false, -1) + .setBattleBgm("battle_hoenn_gym") + .setMixedBattleBgm("battle_hoenn_gym"), + [TrainerType.TATE]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["TATE"], true, PokemonType.PSYCHIC, false, -1) + .setBattleBgm("battle_hoenn_gym") + .setMixedBattleBgm("battle_hoenn_gym") + .setHasDouble("tate_liza_double") + .setDoubleTrainerType(TrainerType.LIZA) + .setDoubleTitle("gym_leader_double"), + [TrainerType.LIZA]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["LIZA"], false, PokemonType.PSYCHIC, false, -1) + .setBattleBgm("battle_hoenn_gym") + .setMixedBattleBgm("battle_hoenn_gym") + .setHasDouble("liza_tate_double") + .setDoubleTrainerType(TrainerType.TATE) + .setDoubleTitle("gym_leader_double"), + [TrainerType.JUAN]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["JUAN"], true, PokemonType.WATER, false, -1) + .setBattleBgm("battle_hoenn_gym") + .setMixedBattleBgm("battle_hoenn_gym"), + [TrainerType.ROARK]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["ROARK"], true, PokemonType.ROCK, false, -1) + .setBattleBgm("battle_sinnoh_gym") + .setMixedBattleBgm("battle_sinnoh_gym"), + [TrainerType.GARDENIA]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["GARDENIA"], false, PokemonType.GRASS, false, -1) + .setBattleBgm("battle_sinnoh_gym") + .setMixedBattleBgm("battle_sinnoh_gym"), + [TrainerType.MAYLENE]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["MAYLENE"], false, PokemonType.FIGHTING, false, -1) + .setBattleBgm("battle_sinnoh_gym") + .setMixedBattleBgm("battle_sinnoh_gym"), + [TrainerType.CRASHER_WAKE]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["CRASHER_WAKE"], true, PokemonType.WATER, false, -1) + .setBattleBgm("battle_sinnoh_gym") + .setMixedBattleBgm("battle_sinnoh_gym"), + [TrainerType.FANTINA]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["FANTINA"], false, PokemonType.GHOST, false, -1) + .setBattleBgm("battle_sinnoh_gym") + .setMixedBattleBgm("battle_sinnoh_gym"), + [TrainerType.BYRON]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["BYRON"], true, PokemonType.STEEL, false, -1) + .setBattleBgm("battle_sinnoh_gym") + .setMixedBattleBgm("battle_sinnoh_gym"), + [TrainerType.CANDICE]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["CANDICE"], false, PokemonType.ICE, false, -1) + .setBattleBgm("battle_sinnoh_gym") + .setMixedBattleBgm("battle_sinnoh_gym"), + [TrainerType.VOLKNER]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["VOLKNER"], true, PokemonType.ELECTRIC, false, -1) + .setBattleBgm("battle_sinnoh_gym") + .setMixedBattleBgm("battle_sinnoh_gym"), + [TrainerType.CILAN]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["CILAN"], true, PokemonType.GRASS, false, -1) + .setMixedBattleBgm("battle_unova_gym"), + [TrainerType.CHILI]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["CHILI"], true, PokemonType.FIRE, false, -1) + .setMixedBattleBgm("battle_unova_gym"), + [TrainerType.CRESS]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["CRESS"], true, PokemonType.WATER, false, -1) + .setMixedBattleBgm("battle_unova_gym"), + [TrainerType.CHEREN]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["CHEREN"], true, PokemonType.NORMAL, false, -1) + .setMixedBattleBgm("battle_unova_gym"), + [TrainerType.LENORA]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["LENORA"], false, PokemonType.NORMAL, false, -1) + .setMixedBattleBgm("battle_unova_gym"), + [TrainerType.ROXIE]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["ROXIE"], false, PokemonType.POISON, false, -1) + .setMixedBattleBgm("battle_unova_gym"), + [TrainerType.BURGH]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["BURGH"], true, PokemonType.BUG, false, -1) + .setMixedBattleBgm("battle_unova_gym"), + [TrainerType.ELESA]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["ELESA"], false, PokemonType.ELECTRIC, false, -1) + .setMixedBattleBgm("battle_unova_gym"), + [TrainerType.CLAY]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["CLAY"], true, PokemonType.GROUND, false, -1) + .setMixedBattleBgm("battle_unova_gym"), + [TrainerType.SKYLA]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["SKYLA"], false, PokemonType.FLYING, false, -1) + .setMixedBattleBgm("battle_unova_gym"), + [TrainerType.BRYCEN]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["BRYCEN"], true, PokemonType.ICE, false, -1) + .setMixedBattleBgm("battle_unova_gym"), + [TrainerType.DRAYDEN]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["DRAYDEN"], true, PokemonType.DRAGON, false, -1) + .setMixedBattleBgm("battle_unova_gym"), + [TrainerType.MARLON]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["MARLON"], true, PokemonType.WATER, false, -1) + .setMixedBattleBgm("battle_unova_gym"), + [TrainerType.VIOLA]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["VIOLA"], false, PokemonType.BUG, false, -1) + .setMixedBattleBgm("battle_kalos_gym"), + [TrainerType.GRANT]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["GRANT"], true, PokemonType.ROCK, false, -1) + .setMixedBattleBgm("battle_kalos_gym"), + [TrainerType.KORRINA]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["KORRINA"], false, PokemonType.FIGHTING, false, -1) + .setMixedBattleBgm("battle_kalos_gym"), + [TrainerType.RAMOS]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["RAMOS"], true, PokemonType.GRASS, false, -1) + .setMixedBattleBgm("battle_kalos_gym"), + [TrainerType.CLEMONT]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["CLEMONT"], true, PokemonType.ELECTRIC, false, -1) + .setMixedBattleBgm("battle_kalos_gym"), + [TrainerType.VALERIE]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["VALERIE"], false, PokemonType.FAIRY, false, -1) + .setMixedBattleBgm("battle_kalos_gym"), + [TrainerType.OLYMPIA]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["OLYMPIA"], false, PokemonType.PSYCHIC, false, -1) + .setMixedBattleBgm("battle_kalos_gym"), + [TrainerType.WULFRIC]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["WULFRIC"], true, PokemonType.ICE, false, -1) + .setMixedBattleBgm("battle_kalos_gym"), + [TrainerType.MILO]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["MILO"], true, PokemonType.GRASS, false, -1) + .setMixedBattleBgm("battle_galar_gym"), + [TrainerType.NESSA]: new TrainerConfig(nextTrainerId()) + .setName("Nessa") + .initForGymLeader(signatureSpecies["NESSA"], false, PokemonType.WATER, false, -1) + .setMixedBattleBgm("battle_galar_gym"), + [TrainerType.KABU]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["KABU"], true, PokemonType.FIRE, false, -1) + .setMixedBattleBgm("battle_galar_gym"), + [TrainerType.BEA]: new TrainerConfig(nextTrainerId()) + .setName("Bea") + .initForGymLeader(signatureSpecies["BEA"], false, PokemonType.FIGHTING, false, -1) + .setMixedBattleBgm("battle_galar_gym"), + [TrainerType.ALLISTER]: new TrainerConfig(nextTrainerId()) + .setName("Allister") + .initForGymLeader(signatureSpecies["ALLISTER"], true, PokemonType.GHOST, false, -1) + .setMixedBattleBgm("battle_galar_gym"), + [TrainerType.OPAL]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["OPAL"], false, PokemonType.FAIRY, false, -1) + .setMixedBattleBgm("battle_galar_gym"), + [TrainerType.BEDE]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["BEDE"], true, PokemonType.FAIRY, false, -1) + .setMixedBattleBgm("battle_galar_gym"), + [TrainerType.GORDIE]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["GORDIE"], true, PokemonType.ROCK, false, -1) + .setMixedBattleBgm("battle_galar_gym"), + [TrainerType.MELONY]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["MELONY"], false, PokemonType.ICE, false, -1) + .setMixedBattleBgm("battle_galar_gym"), + [TrainerType.PIERS]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["PIERS"], true, PokemonType.DARK, false, -3) + .setHasDouble("piers_marnie_double") + .setDoubleTrainerType(TrainerType.MARNIE) + .setDoubleTitle("gym_leader_double") + .setMixedBattleBgm("battle_galar_gym"), + [TrainerType.MARNIE]: new TrainerConfig(nextTrainerId()) + .setName("Marnie") + .initForGymLeader(signatureSpecies["MARNIE"], false, PokemonType.DARK, false, -4) + .setHasDouble("marnie_piers_double") + .setDoubleTrainerType(TrainerType.PIERS) + .setDoubleTitle("gym_leader_double") + .setMixedBattleBgm("battle_galar_gym"), + [TrainerType.RAIHAN]: new TrainerConfig(nextTrainerId()) + .setName("Raihan") + .initForGymLeader(signatureSpecies["RAIHAN"], true, PokemonType.DRAGON, false, -1) + .setMixedBattleBgm("battle_galar_gym"), + [TrainerType.KATY]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["KATY"], false, PokemonType.BUG, true, -1) + .setMixedBattleBgm("battle_paldea_gym"), + [TrainerType.BRASSIUS]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["BRASSIUS"], true, PokemonType.GRASS, true, -1) + .setMixedBattleBgm("battle_paldea_gym"), + [TrainerType.IONO]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["IONO"], false, PokemonType.ELECTRIC, true, -1) + .setMixedBattleBgm("battle_paldea_gym"), + [TrainerType.KOFU]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["KOFU"], true, PokemonType.WATER, true, -1) + .setMixedBattleBgm("battle_paldea_gym"), + [TrainerType.LARRY]: new TrainerConfig(nextTrainerId()) + .setName("Larry") + .initForGymLeader(signatureSpecies["LARRY"], true, PokemonType.NORMAL, true, -1) + .setMixedBattleBgm("battle_paldea_gym"), + [TrainerType.RYME]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["RYME"], false, PokemonType.GHOST, true, -1) + .setMixedBattleBgm("battle_paldea_gym"), + [TrainerType.TULIP]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["TULIP"], false, PokemonType.PSYCHIC, true, -1) + .setMixedBattleBgm("battle_paldea_gym"), + [TrainerType.GRUSHA]: new TrainerConfig(nextTrainerId()) + .initForGymLeader(signatureSpecies["GRUSHA"], true, PokemonType.ICE, true, -1) + .setMixedBattleBgm("battle_paldea_gym"), +} \ No newline at end of file diff --git a/src/data/trainers/trainers-init/mystery-event-trainers.ts b/src/data/trainers/trainers-init/mystery-event-trainers.ts index d937453918b..f4358fa3ce8 100644 --- a/src/data/trainers/trainers-init/mystery-event-trainers.ts +++ b/src/data/trainers/trainers-init/mystery-event-trainers.ts @@ -3,14 +3,14 @@ import { PokeballType } from "#enums/pokeball"; import { SpeciesId } from "#enums/species-id"; import { TrainerSlot } from "#enums/trainer-slot"; import { TrainerType } from "#enums/trainer-type"; -import { getRandomPartyMemberFunc, nextTrainerId, TrainerConfig } from "#trainers/trainer-config"; +import { getRandomPartyMemberFunc, nextTrainerId, setTrainerId, TrainerConfig } from "#trainers/trainer-config"; import { TrainerPartyCompoundTemplate, TrainerPartyTemplate, trainerPartyTemplates } from "#trainers/trainer-party-template"; import { TrainerConfigs } from "#types/trainer-funcs"; -export const mysteryEventTrainers: TrainerConfigs = { +export const mysteryEventTrainersConfigs: TrainerConfigs = { // Mystery Event Test Trainer Encounter -[TrainerType.BUCK]: new TrainerConfig(nextTrainerId()) +[TrainerType.BUCK]: new TrainerConfig(setTrainerId(TrainerType.BUCK)) .setName("Buck") .initForStatTrainer(true) .setPartyMemberFunc( diff --git a/src/data/trainers/trainers-init/random-npcs-trainers.ts b/src/data/trainers/trainers-init/random-npcs-trainers.ts index e69de29bb2d..fdeb7089dbc 100644 --- a/src/data/trainers/trainers-init/random-npcs-trainers.ts +++ b/src/data/trainers/trainers-init/random-npcs-trainers.ts @@ -0,0 +1,939 @@ +import { tmSpecies } from "#balance/tms"; +import { AbilityId } from "#enums/ability-id"; +import { MoveId } from "#enums/move-id"; +import { PokemonType } from "#enums/pokemon-type"; +import { SpeciesId } from "#enums/species-id"; +import { TrainerPoolTier } from "#enums/trainer-pool-tier"; +import { TrainerSlot } from "#enums/trainer-slot"; +import { TrainerType } from "#enums/trainer-type"; +import { TrainerConfig, getRandomPartyMemberFunc, nextTrainerId, setTrainerId } from "#trainers/trainer-config"; +import { getWavePartyTemplate, trainerPartyTemplates } from "#trainers/trainer-party-template"; +import { TrainerConfigs } from "#types/trainer-funcs"; + + +export const randomNPCTrainersConfig: TrainerConfigs = { + [TrainerType.ACE_TRAINER]: new TrainerConfig(setTrainerId(TrainerType.ACE_TRAINER)) + .setHasGenders("Ace Trainer Female") + .setHasDouble("Ace Duo") + .setMoneyMultiplier(2.25) + .setEncounterBgm(TrainerType.ACE_TRAINER) + .setPartyTemplateFunc(() => + getWavePartyTemplate( + trainerPartyTemplates.THREE_WEAK_BALANCED, + trainerPartyTemplates.FOUR_WEAK_BALANCED, + trainerPartyTemplates.FIVE_WEAK_BALANCED, + trainerPartyTemplates.SIX_WEAK_BALANCED, + ), + ), + [TrainerType.ARTIST]: new TrainerConfig(nextTrainerId()) + .setEncounterBgm(TrainerType.RICH) + .setPartyTemplates(trainerPartyTemplates.ONE_STRONG, trainerPartyTemplates.TWO_AVG, trainerPartyTemplates.THREE_AVG) + .setSpeciesPools([SpeciesId.SMEARGLE]), + [TrainerType.BACKERS]: new TrainerConfig(nextTrainerId()) + .setHasGenders("Backers") + .setDoubleOnly() + .setEncounterBgm(TrainerType.CYCLIST), + [TrainerType.BACKPACKER]: new TrainerConfig(nextTrainerId()) + .setHasGenders("Backpacker Female") + .setHasDouble("Backpackers") + .setSpeciesFilter(s => s.isOfType(PokemonType.FLYING) || s.isOfType(PokemonType.ROCK)) + .setEncounterBgm(TrainerType.BACKPACKER) + .setPartyTemplates( + trainerPartyTemplates.ONE_STRONG, + trainerPartyTemplates.ONE_WEAK_ONE_STRONG, + trainerPartyTemplates.ONE_AVG_ONE_STRONG, + ) + .setSpeciesPools({ + [TrainerPoolTier.COMMON]: [ + SpeciesId.RHYHORN, + SpeciesId.AIPOM, + SpeciesId.MAKUHITA, + SpeciesId.MAWILE, + SpeciesId.NUMEL, + SpeciesId.LILLIPUP, + SpeciesId.SANDILE, + SpeciesId.WOOLOO, + ], + [TrainerPoolTier.UNCOMMON]: [ + SpeciesId.GIRAFARIG, + SpeciesId.ZANGOOSE, + SpeciesId.SEVIPER, + SpeciesId.CUBCHOO, + SpeciesId.PANCHAM, + SpeciesId.SKIDDO, + SpeciesId.MUDBRAY, + ], + [TrainerPoolTier.RARE]: [ + SpeciesId.TAUROS, + SpeciesId.STANTLER, + SpeciesId.DARUMAKA, + SpeciesId.BOUFFALANT, + SpeciesId.DEERLING, + SpeciesId.IMPIDIMP, + ], + [TrainerPoolTier.SUPER_RARE]: [SpeciesId.GALAR_DARUMAKA, SpeciesId.TEDDIURSA], + }), + [TrainerType.BAKER]: new TrainerConfig(nextTrainerId()) + .setEncounterBgm(TrainerType.CLERK) + .setMoneyMultiplier(1.35) + .setSpeciesFilter( + s => + [s.ability1, s.ability2, s.abilityHidden].some( + a => + !!a + && [ + AbilityId.WHITE_SMOKE, + AbilityId.GLUTTONY, + AbilityId.HONEY_GATHER, + AbilityId.HARVEST, + AbilityId.CHEEK_POUCH, + AbilityId.SWEET_VEIL, + AbilityId.RIPEN, + AbilityId.PURIFYING_SALT, + AbilityId.WELL_BAKED_BODY, + AbilityId.SUPERSWEET_SYRUP, + AbilityId.HOSPITALITY, + ].includes(a), + ) + || s + .getLevelMoves() + .some(plm => + [MoveId.SOFT_BOILED, MoveId.SPORE, MoveId.MILK_DRINK, MoveId.OVERHEAT, MoveId.TEATIME].includes(plm[1]), + ), + ), // Mons with baking related abilities or who learn Overheat, Teatime, Milk Drink, Spore, or Soft-Boiled by level + [TrainerType.BEAUTY]: new TrainerConfig(nextTrainerId()) + .setMoneyMultiplier(1.55) + .setEncounterBgm(TrainerType.PARASOL_LADY) + .setPartyTemplates( + trainerPartyTemplates.TWO_AVG_SAME_ONE_AVG, + trainerPartyTemplates.TWO_AVG_SAME_ONE_STRONG, + trainerPartyTemplates.THREE_AVG_SAME, + trainerPartyTemplates.THREE_AVG, + trainerPartyTemplates.FOUR_WEAK, + trainerPartyTemplates.ONE_STRONG, + ) + .setSpeciesPools({ + [TrainerPoolTier.COMMON]: [ + SpeciesId.MEOWTH, + SpeciesId.GOLDEEN, + SpeciesId.MAREEP, + SpeciesId.MARILL, + SpeciesId.SKITTY, + SpeciesId.GLAMEOW, + SpeciesId.PURRLOIN, + ], + [TrainerPoolTier.UNCOMMON]: [ + SpeciesId.SMOOCHUM, + SpeciesId.ROSELIA, + SpeciesId.LUVDISC, + SpeciesId.BLITZLE, + SpeciesId.SEWADDLE, + SpeciesId.PETILIL, + SpeciesId.MINCCINO, + SpeciesId.GOTHITA, + SpeciesId.SPRITZEE, + SpeciesId.FLITTLE, + ], + [TrainerPoolTier.RARE]: [ + SpeciesId.FEEBAS, + SpeciesId.FURFROU, + SpeciesId.SALANDIT, + SpeciesId.BRUXISH, + SpeciesId.HATENNA, + SpeciesId.SNOM, + SpeciesId.ALOLA_VULPIX, + ], + [TrainerPoolTier.SUPER_RARE]: [ + SpeciesId.CLAMPERL, + SpeciesId.AMAURA, + SpeciesId.SYLVEON, + SpeciesId.GOOMY, + SpeciesId.POPPLIO, + ], + }), + [TrainerType.BIKER]: new TrainerConfig(nextTrainerId()) + .setMoneyMultiplier(1.4) + .setEncounterBgm(TrainerType.ROUGHNECK) + .setSpeciesPools({ + [TrainerPoolTier.COMMON]: [ + SpeciesId.EKANS, + SpeciesId.KOFFING, + SpeciesId.CROAGUNK, + SpeciesId.VENIPEDE, + SpeciesId.SCRAGGY, + ], + [TrainerPoolTier.UNCOMMON]: [ + SpeciesId.GRIMER, + SpeciesId.VOLTORB, + SpeciesId.TEDDIURSA, + SpeciesId.MAGBY, + SpeciesId.SKORUPI, + SpeciesId.SANDILE, + SpeciesId.PAWNIARD, + SpeciesId.SHROODLE, + ], + [TrainerPoolTier.RARE]: [SpeciesId.VAROOM, SpeciesId.CYCLIZAR], + }), + [TrainerType.BLACK_BELT]: new TrainerConfig(nextTrainerId()) + .setHasGenders("Battle Girl", TrainerType.PSYCHIC) + .setHasDouble("Crush Kin") + .setEncounterBgm(TrainerType.ROUGHNECK) + .setSpecialtyType(PokemonType.FIGHTING) + .setPartyTemplates( + trainerPartyTemplates.TWO_WEAK_ONE_AVG, + trainerPartyTemplates.TWO_WEAK_ONE_AVG, + trainerPartyTemplates.TWO_AVG, + trainerPartyTemplates.TWO_AVG, + trainerPartyTemplates.TWO_WEAK_ONE_STRONG, + trainerPartyTemplates.THREE_AVG, + trainerPartyTemplates.TWO_AVG_ONE_STRONG, + ) + .setSpeciesPools({ + [TrainerPoolTier.COMMON]: [ + SpeciesId.NIDORAN_F, + SpeciesId.NIDORAN_M, + SpeciesId.MACHOP, + SpeciesId.MAKUHITA, + SpeciesId.MEDITITE, + SpeciesId.CROAGUNK, + SpeciesId.TIMBURR, + ], + [TrainerPoolTier.UNCOMMON]: [ + SpeciesId.MANKEY, + SpeciesId.POLIWRATH, + SpeciesId.TYROGUE, + SpeciesId.BRELOOM, + SpeciesId.SCRAGGY, + SpeciesId.MIENFOO, + SpeciesId.PANCHAM, + SpeciesId.STUFFUL, + SpeciesId.CRABRAWLER, + ], + [TrainerPoolTier.RARE]: [ + SpeciesId.HERACROSS, + SpeciesId.RIOLU, + SpeciesId.THROH, + SpeciesId.SAWK, + SpeciesId.PASSIMIAN, + SpeciesId.CLOBBOPUS, + ], + [TrainerPoolTier.SUPER_RARE]: [ + SpeciesId.HITMONTOP, + SpeciesId.INFERNAPE, + SpeciesId.GALLADE, + SpeciesId.HAWLUCHA, + SpeciesId.HAKAMO_O, + ], + [TrainerPoolTier.ULTRA_RARE]: [SpeciesId.KUBFU], + }), + [TrainerType.BREEDER]: new TrainerConfig(nextTrainerId()) + .setMoneyMultiplier(1.325) + .setEncounterBgm(TrainerType.POKEFAN) + .setHasGenders("Breeder Female") + .setHasDouble("Breeders") + .setPartyTemplateFunc(() => + getWavePartyTemplate( + trainerPartyTemplates.FOUR_WEAK, + trainerPartyTemplates.FIVE_WEAK, + trainerPartyTemplates.SIX_WEAK, + ), + ) + .setSpeciesPools({ + [TrainerPoolTier.COMMON]: [ + SpeciesId.PICHU, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.TOGEPI, + SpeciesId.TYROGUE, + SpeciesId.SMOOCHUM, + SpeciesId.AZURILL, + SpeciesId.BUDEW, + SpeciesId.CHINGLING, + SpeciesId.BONSLY, + SpeciesId.MIME_JR, + SpeciesId.HAPPINY, + SpeciesId.MANTYKE, + SpeciesId.TOXEL, + ], + [TrainerPoolTier.UNCOMMON]: [ + SpeciesId.DITTO, + SpeciesId.ELEKID, + SpeciesId.MAGBY, + SpeciesId.WYNAUT, + SpeciesId.MUNCHLAX, + SpeciesId.RIOLU, + SpeciesId.AUDINO, + ], + [TrainerPoolTier.RARE]: [ + SpeciesId.ALOLA_RATTATA, + SpeciesId.ALOLA_SANDSHREW, + SpeciesId.ALOLA_VULPIX, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_MEOWTH, + SpeciesId.GALAR_PONYTA, + ], + [TrainerPoolTier.SUPER_RARE]: [ + SpeciesId.ALOLA_GEODUDE, + SpeciesId.ALOLA_GRIMER, + SpeciesId.GALAR_MEOWTH, + SpeciesId.GALAR_SLOWPOKE, + SpeciesId.GALAR_FARFETCHD, + SpeciesId.HISUI_GROWLITHE, + SpeciesId.HISUI_VOLTORB, + SpeciesId.HISUI_QWILFISH, + SpeciesId.HISUI_SNEASEL, + SpeciesId.HISUI_ZORUA, + ], + }), + [TrainerType.CLERK]: new TrainerConfig(nextTrainerId()) + .setHasGenders("Clerk Female") + .setHasDouble("Colleagues") + .setEncounterBgm(TrainerType.CLERK) + .setPartyTemplates( + trainerPartyTemplates.TWO_WEAK, + trainerPartyTemplates.THREE_WEAK, + trainerPartyTemplates.ONE_AVG, + trainerPartyTemplates.TWO_AVG, + trainerPartyTemplates.TWO_WEAK_ONE_AVG, + ) + .setSpeciesPools({ + [TrainerPoolTier.COMMON]: [ + SpeciesId.MEOWTH, + SpeciesId.PSYDUCK, + SpeciesId.BUDEW, + SpeciesId.PIDOVE, + SpeciesId.CINCCINO, + SpeciesId.LITLEO, + ], + [TrainerPoolTier.UNCOMMON]: [ + SpeciesId.JIGGLYPUFF, + SpeciesId.MAGNEMITE, + SpeciesId.MARILL, + SpeciesId.COTTONEE, + SpeciesId.SKIDDO, + ], + [TrainerPoolTier.RARE]: [SpeciesId.BUIZEL, SpeciesId.SNEASEL, SpeciesId.KLEFKI, SpeciesId.INDEEDEE], + }), + [TrainerType.CYCLIST]: new TrainerConfig(nextTrainerId()) + .setMoneyMultiplier(1.3) + .setHasGenders("Cyclist Female") + .setHasDouble("Cyclists") + .setEncounterBgm(TrainerType.CYCLIST) + .setPartyTemplates(trainerPartyTemplates.TWO_WEAK, trainerPartyTemplates.ONE_AVG) + .setSpeciesPools({ + [TrainerPoolTier.COMMON]: [ + SpeciesId.DODUO, + SpeciesId.PICHU, + SpeciesId.TAILLOW, + SpeciesId.STARLY, + SpeciesId.PONYTA, + ], + [TrainerPoolTier.UNCOMMON]: [ + SpeciesId.ELECTRIKE, + SpeciesId.SHINX, + SpeciesId.BLITZLE, + SpeciesId.DUCKLETT, + SpeciesId.WATTREL, + ], + [TrainerPoolTier.RARE]: [ + SpeciesId.YANMA, + SpeciesId.NINJASK, + SpeciesId.VENIPEDE, + SpeciesId.EMOLGA, + SpeciesId.SKIDDO, + SpeciesId.ROLYCOLY, + ], + [TrainerPoolTier.SUPER_RARE]: [SpeciesId.SHELMET, SpeciesId.DREEPY], + }), + [TrainerType.DANCER]: new TrainerConfig(nextTrainerId()) + .setMoneyMultiplier(1.55) + .setEncounterBgm(TrainerType.CYCLIST) + .setPartyTemplates( + trainerPartyTemplates.TWO_WEAK, + trainerPartyTemplates.ONE_AVG, + trainerPartyTemplates.TWO_AVG, + trainerPartyTemplates.TWO_WEAK_SAME_TWO_WEAK_SAME, + ) + .setSpeciesPools({ + [TrainerPoolTier.COMMON]: [SpeciesId.RALTS, SpeciesId.SPOINK, SpeciesId.LOTAD, SpeciesId.BUDEW], + [TrainerPoolTier.UNCOMMON]: [SpeciesId.SPINDA, SpeciesId.SWABLU, SpeciesId.MARACTUS], + [TrainerPoolTier.RARE]: [SpeciesId.BELLOSSOM, SpeciesId.HITMONTOP, SpeciesId.MIME_JR, SpeciesId.ORICORIO], + [TrainerPoolTier.SUPER_RARE]: [SpeciesId.QUAXLY, SpeciesId.JANGMO_O], + }), + [TrainerType.DEPOT_AGENT]: new TrainerConfig(nextTrainerId()) + .setMoneyMultiplier(1.45) + .setEncounterBgm(TrainerType.CLERK) + .setPartyTemplates( + trainerPartyTemplates.TWO_AVG, + trainerPartyTemplates.THREE_WEAK, + trainerPartyTemplates.THREE_AVG, + trainerPartyTemplates.FOUR_WEAK, + ) + .setSpeciesFilter(s => s.isOfType(PokemonType.GROUND)), + [TrainerType.DOCTOR]: new TrainerConfig(nextTrainerId()) + .setHasGenders("Nurse", "lass") + .setHasDouble("Medical Team") + .setMoneyMultiplier(3) + .setEncounterBgm(TrainerType.CLERK) + .setSpeciesFilter(s => !!s.getLevelMoves().find(plm => plm[1] === MoveId.HEAL_PULSE)), + [TrainerType.FIREBREATHER]: new TrainerConfig(nextTrainerId()) + .setMoneyMultiplier(1.4) + .setEncounterBgm(TrainerType.ROUGHNECK) + .setSpeciesFilter(s => !!s.getLevelMoves().find(plm => plm[1] === MoveId.SMOG) || s.isOfType(PokemonType.FIRE)), + [TrainerType.FISHERMAN]: new TrainerConfig(nextTrainerId()) + .setMoneyMultiplier(1.25) + .setEncounterBgm(TrainerType.BACKPACKER) + .setSpecialtyType(PokemonType.WATER) + .setPartyTemplates( + trainerPartyTemplates.TWO_WEAK_SAME_ONE_AVG, + trainerPartyTemplates.ONE_AVG, + trainerPartyTemplates.THREE_WEAK_SAME, + trainerPartyTemplates.ONE_STRONG, + ) + .setSpeciesPools({ + [TrainerPoolTier.COMMON]: [ + SpeciesId.TENTACOOL, + SpeciesId.MAGIKARP, + SpeciesId.GOLDEEN, + SpeciesId.STARYU, + SpeciesId.REMORAID, + SpeciesId.SKRELP, + SpeciesId.CLAUNCHER, + SpeciesId.ARROKUDA, + ], + [TrainerPoolTier.UNCOMMON]: [ + SpeciesId.POLIWAG, + SpeciesId.SHELLDER, + SpeciesId.KRABBY, + SpeciesId.HORSEA, + SpeciesId.CARVANHA, + SpeciesId.BARBOACH, + SpeciesId.CORPHISH, + SpeciesId.FINNEON, + SpeciesId.TYMPOLE, + SpeciesId.BASCULIN, + SpeciesId.FRILLISH, + SpeciesId.INKAY, + ], + [TrainerPoolTier.RARE]: [ + SpeciesId.CHINCHOU, + SpeciesId.CORSOLA, + SpeciesId.WAILMER, + SpeciesId.CLAMPERL, + SpeciesId.LUVDISC, + SpeciesId.MANTYKE, + SpeciesId.ALOMOMOLA, + SpeciesId.TATSUGIRI, + SpeciesId.VELUZA, + ], + [TrainerPoolTier.SUPER_RARE]: [SpeciesId.LAPRAS, SpeciesId.FEEBAS, SpeciesId.RELICANTH, SpeciesId.DONDOZO], + }), + [TrainerType.GUITARIST]: new TrainerConfig(nextTrainerId()) + .setMoneyMultiplier(1.2) + .setEncounterBgm(TrainerType.ROUGHNECK) + .setSpecialtyType(PokemonType.ELECTRIC) + .setSpeciesFilter(s => s.isOfType(PokemonType.ELECTRIC)), + [TrainerType.HARLEQUIN]: new TrainerConfig(nextTrainerId()) + .setEncounterBgm(TrainerType.PSYCHIC) + .setSpeciesFilter(s => tmSpecies[MoveId.TRICK_ROOM].indexOf(s.speciesId) > -1), + [TrainerType.HIKER]: new TrainerConfig(nextTrainerId()) + .setEncounterBgm(TrainerType.BACKPACKER) + .setPartyTemplates( + trainerPartyTemplates.TWO_AVG_SAME_ONE_AVG, + trainerPartyTemplates.TWO_AVG_SAME_ONE_STRONG, + trainerPartyTemplates.TWO_AVG, + trainerPartyTemplates.FOUR_WEAK, + trainerPartyTemplates.ONE_STRONG, + ) + .setSpeciesPools({ + [TrainerPoolTier.COMMON]: [ + SpeciesId.SANDSHREW, + SpeciesId.DIGLETT, + SpeciesId.GEODUDE, + SpeciesId.MACHOP, + SpeciesId.ARON, + SpeciesId.ROGGENROLA, + SpeciesId.DRILBUR, + SpeciesId.NACLI, + ], + [TrainerPoolTier.UNCOMMON]: [ + SpeciesId.ZUBAT, + SpeciesId.RHYHORN, + SpeciesId.ONIX, + SpeciesId.CUBONE, + SpeciesId.WOOBAT, + SpeciesId.SWINUB, + SpeciesId.NOSEPASS, + SpeciesId.HIPPOPOTAS, + SpeciesId.DWEBBLE, + SpeciesId.KLAWF, + SpeciesId.TOEDSCOOL, + ], + [TrainerPoolTier.RARE]: [ + SpeciesId.TORKOAL, + SpeciesId.TRAPINCH, + SpeciesId.BARBOACH, + SpeciesId.GOLETT, + SpeciesId.ALOLA_DIGLETT, + SpeciesId.ALOLA_GEODUDE, + SpeciesId.GALAR_STUNFISK, + SpeciesId.PALDEA_WOOPER, + ], + [TrainerPoolTier.SUPER_RARE]: [SpeciesId.MAGBY, SpeciesId.LARVITAR], + }), + [TrainerType.HOOLIGANS]: new TrainerConfig(nextTrainerId()) + .setDoubleOnly() + .setMoneyMultiplier(1.5) + .setEncounterBgm(TrainerType.ROUGHNECK) + .setPartyTemplateFunc(() => + getWavePartyTemplate( + trainerPartyTemplates.TWO_WEAK, + trainerPartyTemplates.TWO_AVG, + trainerPartyTemplates.ONE_AVG_ONE_STRONG, + ), + ) + .setSpeciesFilter(s => s.isOfType(PokemonType.POISON) || s.isOfType(PokemonType.DARK)), + [TrainerType.HOOPSTER]: new TrainerConfig(nextTrainerId()).setMoneyMultiplier(1.2).setEncounterBgm(TrainerType.CYCLIST), + [TrainerType.INFIELDER]: new TrainerConfig(nextTrainerId()).setMoneyMultiplier(1.2).setEncounterBgm(TrainerType.CYCLIST), + [TrainerType.JANITOR]: new TrainerConfig(nextTrainerId()).setMoneyMultiplier(1.1).setEncounterBgm(TrainerType.CLERK), + [TrainerType.LINEBACKER]: new TrainerConfig(nextTrainerId()).setMoneyMultiplier(1.2).setEncounterBgm(TrainerType.CYCLIST), + [TrainerType.MAID]: new TrainerConfig(nextTrainerId()).setMoneyMultiplier(1.6).setEncounterBgm(TrainerType.RICH), + [TrainerType.MUSICIAN]: new TrainerConfig(nextTrainerId()) + .setMoneyMultiplier(1.1) + .setEncounterBgm(TrainerType.POKEFAN) + .setPartyTemplates( + trainerPartyTemplates.THREE_WEAK, + trainerPartyTemplates.TWO_WEAK_ONE_AVG, + trainerPartyTemplates.TWO_AVG, + ) + .setSpeciesFilter(s => !!s.getLevelMoves().find(plm => plm[1] === MoveId.SING)), + [TrainerType.HEX_MANIAC]: new TrainerConfig(nextTrainerId()) + .setMoneyMultiplier(1.5) + .setEncounterBgm(TrainerType.PSYCHIC) + .setPartyTemplates( + trainerPartyTemplates.TWO_AVG, + trainerPartyTemplates.ONE_AVG_ONE_STRONG, + trainerPartyTemplates.TWO_AVG_SAME_ONE_AVG, + trainerPartyTemplates.THREE_AVG, + trainerPartyTemplates.TWO_STRONG, + ) + .setSpeciesFilter(s => s.isOfType(PokemonType.GHOST) || s.isOfType(PokemonType.PSYCHIC)), + [TrainerType.NURSERY_AIDE]: new TrainerConfig(nextTrainerId()).setMoneyMultiplier(1.3).setEncounterBgm("lass"), + [TrainerType.OFFICER]: new TrainerConfig(nextTrainerId()) + .setMoneyMultiplier(1.55) + .setEncounterBgm(TrainerType.CLERK) + .setPartyTemplates( + trainerPartyTemplates.ONE_AVG, + trainerPartyTemplates.ONE_STRONG, + trainerPartyTemplates.TWO_AVG, + trainerPartyTemplates.TWO_WEAK_SAME_ONE_AVG, + ) + .setSpeciesPools({ + [TrainerPoolTier.COMMON]: [ + SpeciesId.VULPIX, + SpeciesId.GROWLITHE, + SpeciesId.SNUBBULL, + SpeciesId.POOCHYENA, + SpeciesId.ELECTRIKE, + SpeciesId.LILLIPUP, + SpeciesId.YAMPER, + SpeciesId.FIDOUGH, + ], + [TrainerPoolTier.UNCOMMON]: [SpeciesId.HOUNDOUR, SpeciesId.ROCKRUFF, SpeciesId.MASCHIFF], + [TrainerPoolTier.RARE]: [SpeciesId.JOLTEON, SpeciesId.RIOLU], + [TrainerPoolTier.SUPER_RARE]: [SpeciesId.SLAKOTH], + [TrainerPoolTier.ULTRA_RARE]: [SpeciesId.ENTEI, SpeciesId.SUICUNE, SpeciesId.RAIKOU], + }), + [TrainerType.PARASOL_LADY]: new TrainerConfig(nextTrainerId()) + .setMoneyMultiplier(1.55) + .setEncounterBgm(TrainerType.PARASOL_LADY) + .setPartyTemplates( + trainerPartyTemplates.TWO_AVG_SAME_ONE_AVG, + trainerPartyTemplates.TWO_AVG_SAME_ONE_STRONG, + trainerPartyTemplates.TWO_AVG, + trainerPartyTemplates.FOUR_WEAK, + trainerPartyTemplates.ONE_STRONG, + ) + .setSpeciesFilter( + s => + [s.ability1, s.ability2, s.abilityHidden].some( + a => + !!a + && [ + AbilityId.DRIZZLE, + AbilityId.SWIFT_SWIM, + AbilityId.HYDRATION, + AbilityId.RAIN_DISH, + AbilityId.DRY_SKIN, + AbilityId.WIND_POWER, + ].includes(a), + ) || s.getLevelMoves().some(plm => plm[1] === MoveId.RAIN_DANCE), + ), // Mons with rain abilities or who learn Rain Dance by level + [TrainerType.PILOT]: new TrainerConfig(nextTrainerId()) + .setMoneyMultiplier(1.75) + .setEncounterBgm(TrainerType.CLERK) + .setPartyTemplates( + trainerPartyTemplates.THREE_WEAK, + trainerPartyTemplates.TWO_WEAK_ONE_AVG, + trainerPartyTemplates.TWO_AVG, + trainerPartyTemplates.THREE_AVG, + ) + .setSpeciesFilter(s => tmSpecies[MoveId.FLY].indexOf(s.speciesId) > -1), + [TrainerType.POKEFAN]: new TrainerConfig(nextTrainerId()) + .setMoneyMultiplier(1.4) + .setName("Pokéfan") + .setHasGenders("Pokéfan Female") + .setHasDouble("Pokéfan Family") + .setEncounterBgm(TrainerType.POKEFAN) + .setPartyTemplates( + trainerPartyTemplates.FOUR_WEAK, + trainerPartyTemplates.TWO_AVG, + trainerPartyTemplates.ONE_STRONG, + trainerPartyTemplates.FIVE_WEAK, + ) + .setSpeciesFilter(s => tmSpecies[MoveId.HELPING_HAND].indexOf(s.speciesId) > -1), + [TrainerType.PRESCHOOLER]: new TrainerConfig(nextTrainerId()) + .setMoneyMultiplier(0.2) + .setEncounterBgm(TrainerType.YOUNGSTER) + .setHasGenders("Preschooler Female", "lass") + .setHasDouble("Preschoolers") + .setPartyTemplates(trainerPartyTemplates.THREE_WEAK, trainerPartyTemplates.TWO_WEAK_SAME_ONE_AVG) + .setSpeciesPools({ + [TrainerPoolTier.COMMON]: [ + SpeciesId.CATERPIE, + SpeciesId.PICHU, + SpeciesId.SANDSHREW, + SpeciesId.LEDYBA, + SpeciesId.BUDEW, + SpeciesId.BURMY, + SpeciesId.WOOLOO, + SpeciesId.PAWMI, + SpeciesId.SMOLIV, + ], + [TrainerPoolTier.UNCOMMON]: [ + SpeciesId.EEVEE, + SpeciesId.CLEFFA, + SpeciesId.IGGLYBUFF, + SpeciesId.SWINUB, + SpeciesId.WOOPER, + SpeciesId.DRIFLOON, + SpeciesId.DEDENNE, + SpeciesId.STUFFUL, + ], + [TrainerPoolTier.RARE]: [SpeciesId.RALTS, SpeciesId.RIOLU, SpeciesId.JOLTIK, SpeciesId.TANDEMAUS], + [TrainerPoolTier.SUPER_RARE]: [SpeciesId.DARUMAKA, SpeciesId.TINKATINK], + }), + [TrainerType.PSYCHIC]: new TrainerConfig(nextTrainerId()) + .setHasGenders("Psychic Female") + .setHasDouble("Psychics") + .setMoneyMultiplier(1.4) + .setEncounterBgm(TrainerType.PSYCHIC) + .setPartyTemplates( + trainerPartyTemplates.TWO_WEAK, + trainerPartyTemplates.TWO_AVG, + trainerPartyTemplates.TWO_WEAK_SAME_ONE_AVG, + trainerPartyTemplates.TWO_WEAK_SAME_TWO_WEAK_SAME, + trainerPartyTemplates.ONE_STRONGER, + ) + .setSpeciesPools({ + [TrainerPoolTier.COMMON]: [ + SpeciesId.ABRA, + SpeciesId.DROWZEE, + SpeciesId.RALTS, + SpeciesId.SPOINK, + SpeciesId.GOTHITA, + SpeciesId.SOLOSIS, + SpeciesId.BLIPBUG, + SpeciesId.ESPURR, + SpeciesId.HATENNA, + ], + [TrainerPoolTier.UNCOMMON]: [ + SpeciesId.MIME_JR, + SpeciesId.EXEGGCUTE, + SpeciesId.MEDITITE, + SpeciesId.NATU, + SpeciesId.EXEGGCUTE, + SpeciesId.WOOBAT, + SpeciesId.INKAY, + SpeciesId.ORANGURU, + ], + [TrainerPoolTier.RARE]: [ + SpeciesId.ELGYEM, + SpeciesId.SIGILYPH, + SpeciesId.BALTOY, + SpeciesId.GIRAFARIG, + SpeciesId.MEOWSTIC, + ], + [TrainerPoolTier.SUPER_RARE]: [SpeciesId.BELDUM, SpeciesId.ESPEON, SpeciesId.STANTLER], + }), + [TrainerType.RANGER]: new TrainerConfig(nextTrainerId()) + .setMoneyMultiplier(1.4) + .setName("Pokémon Ranger") + .setEncounterBgm(TrainerType.BACKPACKER) + .setHasGenders("Pokémon Ranger Female") + .setHasDouble("Pokémon Rangers") + .setSpeciesPools({ + [TrainerPoolTier.COMMON]: [ + SpeciesId.PICHU, + SpeciesId.GROWLITHE, + SpeciesId.PONYTA, + SpeciesId.ZIGZAGOON, + SpeciesId.SEEDOT, + SpeciesId.BIDOOF, + SpeciesId.RIOLU, + SpeciesId.SEWADDLE, + SpeciesId.SKIDDO, + SpeciesId.SALANDIT, + SpeciesId.YAMPER, + ], + [TrainerPoolTier.UNCOMMON]: [ + SpeciesId.AZURILL, + SpeciesId.TAUROS, + SpeciesId.MAREEP, + SpeciesId.FARFETCHD, + SpeciesId.TEDDIURSA, + SpeciesId.SHROOMISH, + SpeciesId.ELECTRIKE, + SpeciesId.BUDEW, + SpeciesId.BUIZEL, + SpeciesId.MUDBRAY, + SpeciesId.STUFFUL, + ], + [TrainerPoolTier.RARE]: [ + SpeciesId.EEVEE, + SpeciesId.SCYTHER, + SpeciesId.KANGASKHAN, + SpeciesId.RALTS, + SpeciesId.MUNCHLAX, + SpeciesId.ZORUA, + SpeciesId.PALDEA_TAUROS, + SpeciesId.TINKATINK, + SpeciesId.CYCLIZAR, + SpeciesId.FLAMIGO, + ], + [TrainerPoolTier.SUPER_RARE]: [SpeciesId.LARVESTA], + }), + [TrainerType.RICH]: new TrainerConfig(nextTrainerId()) + .setMoneyMultiplier(3.25) + .setName("Gentleman") + .setHasGenders("Madame") + .setHasDouble("Rich Couple") + .setPartyTemplates( + trainerPartyTemplates.THREE_WEAK, + trainerPartyTemplates.FOUR_WEAK, + trainerPartyTemplates.TWO_WEAK_ONE_AVG, + trainerPartyTemplates.THREE_AVG, + ) + .setSpeciesFilter(s => s.isOfType(PokemonType.NORMAL) || s.isOfType(PokemonType.ELECTRIC)), + [TrainerType.RICH_KID]: new TrainerConfig(nextTrainerId()) + .setMoneyMultiplier(2.5) + .setName("Rich Boy") + .setHasGenders("Lady") + .setHasDouble("Rich Kids") + .setEncounterBgm(TrainerType.RICH) + .setPartyTemplates(trainerPartyTemplates.THREE_WEAK_SAME, trainerPartyTemplates.TWO_WEAK_SAME_ONE_AVG) + .setSpeciesFilter(s => s.baseTotal <= 460), + [TrainerType.ROUGHNECK]: new TrainerConfig(nextTrainerId()) + .setMoneyMultiplier(1.4) + .setEncounterBgm(TrainerType.ROUGHNECK) + .setSpeciesFilter(s => s.isOfType(PokemonType.DARK)), + [TrainerType.SAILOR]: new TrainerConfig(nextTrainerId()) + .setMoneyMultiplier(1.4) + .setEncounterBgm(TrainerType.BACKPACKER) + .setSpeciesFilter(s => s.isOfType(PokemonType.WATER) || s.isOfType(PokemonType.FIGHTING)), + [TrainerType.SCIENTIST]: new TrainerConfig(nextTrainerId()) + .setHasGenders("Scientist Female") + .setHasDouble("Scientists") + .setMoneyMultiplier(1.7) + .setEncounterBgm(TrainerType.SCIENTIST) + .setSpeciesPools({ + [TrainerPoolTier.COMMON]: [ + SpeciesId.MAGNEMITE, + SpeciesId.GRIMER, + SpeciesId.DROWZEE, + SpeciesId.VOLTORB, + SpeciesId.KOFFING, + ], + [TrainerPoolTier.UNCOMMON]: [ + SpeciesId.BALTOY, + SpeciesId.BRONZOR, + SpeciesId.FERROSEED, + SpeciesId.KLINK, + SpeciesId.CHARJABUG, + SpeciesId.BLIPBUG, + SpeciesId.HELIOPTILE, + ], + [TrainerPoolTier.RARE]: [ + SpeciesId.ABRA, + SpeciesId.DITTO, + SpeciesId.PORYGON, + SpeciesId.ELEKID, + SpeciesId.SOLOSIS, + SpeciesId.GALAR_WEEZING, + ], + [TrainerPoolTier.SUPER_RARE]: [ + SpeciesId.OMANYTE, + SpeciesId.KABUTO, + SpeciesId.AERODACTYL, + SpeciesId.LILEEP, + SpeciesId.ANORITH, + SpeciesId.CRANIDOS, + SpeciesId.SHIELDON, + SpeciesId.TIRTOUGA, + SpeciesId.ARCHEN, + SpeciesId.ARCTOVISH, + SpeciesId.ARCTOZOLT, + SpeciesId.DRACOVISH, + SpeciesId.DRACOZOLT, + ], + [TrainerPoolTier.ULTRA_RARE]: [SpeciesId.ROTOM, SpeciesId.MELTAN], + }), + [TrainerType.SMASHER]: new TrainerConfig(nextTrainerId()).setMoneyMultiplier(1.2).setEncounterBgm(TrainerType.CYCLIST), + [TrainerType.SNOW_WORKER]: new TrainerConfig(nextTrainerId()) + .setName("Worker") + .setHasDouble("Workers") + .setMoneyMultiplier(1.7) + .setEncounterBgm(TrainerType.CLERK) + .setSpeciesFilter(s => s.isOfType(PokemonType.ICE) || s.isOfType(PokemonType.STEEL)), + [TrainerType.STRIKER]: new TrainerConfig(nextTrainerId()).setMoneyMultiplier(1.2).setEncounterBgm(TrainerType.CYCLIST), + [TrainerType.SCHOOL_KID]: new TrainerConfig(nextTrainerId()) + .setMoneyMultiplier(0.75) + .setEncounterBgm(TrainerType.YOUNGSTER) + .setHasGenders("School Kid Female", "lass") + .setHasDouble("School Kids") + .setSpeciesPools({ + [TrainerPoolTier.COMMON]: [ + SpeciesId.ODDISH, + SpeciesId.EXEGGCUTE, + SpeciesId.TEDDIURSA, + SpeciesId.WURMPLE, + SpeciesId.RALTS, + SpeciesId.SHROOMISH, + SpeciesId.FLETCHLING, + ], + [TrainerPoolTier.UNCOMMON]: [ + SpeciesId.VOLTORB, + SpeciesId.WHISMUR, + SpeciesId.MEDITITE, + SpeciesId.MIME_JR, + SpeciesId.NYMBLE, + ], + [TrainerPoolTier.RARE]: [SpeciesId.TANGELA, SpeciesId.EEVEE, SpeciesId.YANMA], + [TrainerPoolTier.SUPER_RARE]: [SpeciesId.TADBULB], + }), + [TrainerType.SWIMMER]: new TrainerConfig(nextTrainerId()) + .setMoneyMultiplier(1.3) + .setEncounterBgm(TrainerType.PARASOL_LADY) + .setHasGenders("Swimmer Female") + .setHasDouble("Swimmers") + .setSpecialtyType(PokemonType.WATER) + .setSpeciesFilter(s => s.isOfType(PokemonType.WATER)), + [TrainerType.TWINS]: new TrainerConfig(nextTrainerId()) + .setDoubleOnly() + .setMoneyMultiplier(0.65) + .setUseSameSeedForAllMembers() + .setPartyTemplateFunc(() => + getWavePartyTemplate( + trainerPartyTemplates.TWO_WEAK, + trainerPartyTemplates.TWO_AVG, + trainerPartyTemplates.TWO_STRONG, + ), + ) + .setPartyMemberFunc( + 0, + getRandomPartyMemberFunc([ + SpeciesId.METAPOD, + SpeciesId.LEDYBA, + SpeciesId.CLEFFA, + SpeciesId.MAREEP, + SpeciesId.WOOPER, + SpeciesId.TEDDIURSA, + SpeciesId.REMORAID, + SpeciesId.HOUNDOUR, + SpeciesId.SILCOON, + SpeciesId.PLUSLE, + SpeciesId.VOLBEAT, + SpeciesId.SPINDA, + SpeciesId.BONSLY, + SpeciesId.PETILIL, + SpeciesId.SPRITZEE, + SpeciesId.BOUNSWEET, + SpeciesId.MILCERY, + SpeciesId.PICHU, + ]), + ) + .setPartyMemberFunc( + 1, + getRandomPartyMemberFunc( + [ + SpeciesId.KAKUNA, + SpeciesId.SPINARAK, + SpeciesId.IGGLYBUFF, + SpeciesId.MAREEP, + SpeciesId.PALDEA_WOOPER, + SpeciesId.PHANPY, + SpeciesId.MANTYKE, + SpeciesId.ELECTRIKE, + SpeciesId.CASCOON, + SpeciesId.MINUN, + SpeciesId.ILLUMISE, + SpeciesId.SPINDA, + SpeciesId.MIME_JR, + SpeciesId.COTTONEE, + SpeciesId.SWIRLIX, + SpeciesId.FOMANTIS, + SpeciesId.FIDOUGH, + SpeciesId.EEVEE, + ], + TrainerSlot.TRAINER_PARTNER, + ), + ) + .setEncounterBgm(TrainerType.TWINS), + [TrainerType.VETERAN]: new TrainerConfig(nextTrainerId()) + .setHasGenders("Veteran Female") + .setHasDouble("Veteran Duo") + .setMoneyMultiplier(2.5) + .setEncounterBgm(TrainerType.ACE_TRAINER) + .setSpeciesFilter(s => s.isOfType(PokemonType.DRAGON)), + [TrainerType.WAITER]: new TrainerConfig(nextTrainerId()) + .setHasGenders("Waitress") + .setHasDouble("Restaurant Staff") + .setMoneyMultiplier(1.5) + .setEncounterBgm(TrainerType.CLERK) + .setSpeciesPools({ + [TrainerPoolTier.COMMON]: [ + SpeciesId.CLEFFA, + SpeciesId.CHATOT, + SpeciesId.PANSAGE, + SpeciesId.PANSEAR, + SpeciesId.PANPOUR, + SpeciesId.MINCCINO, + ], + [TrainerPoolTier.UNCOMMON]: [SpeciesId.TROPIUS, SpeciesId.PETILIL, SpeciesId.BOUNSWEET, SpeciesId.INDEEDEE], + [TrainerPoolTier.RARE]: [SpeciesId.APPLIN, SpeciesId.SINISTEA, SpeciesId.POLTCHAGEIST], + }), + [TrainerType.WORKER]: new TrainerConfig(nextTrainerId()) + .setHasGenders("Worker Female") + .setHasDouble("Workers") + .setEncounterBgm(TrainerType.CLERK) + .setMoneyMultiplier(1.7) + .setSpeciesFilter(s => s.isOfType(PokemonType.ROCK) || s.isOfType(PokemonType.STEEL)), + [TrainerType.YOUNGSTER]: new TrainerConfig(nextTrainerId()) + .setMoneyMultiplier(0.5) + .setEncounterBgm(TrainerType.YOUNGSTER) + .setHasGenders("Lass", "lass") + .setHasDouble("Beginners") + .setPartyTemplates(trainerPartyTemplates.TWO_WEAKER) + .setSpeciesPools([ + SpeciesId.CATERPIE, + SpeciesId.WEEDLE, + SpeciesId.RATTATA, + SpeciesId.SENTRET, + SpeciesId.POOCHYENA, + SpeciesId.ZIGZAGOON, + SpeciesId.WURMPLE, + SpeciesId.BIDOOF, + SpeciesId.PATRAT, + SpeciesId.LILLIPUP, + ]), +} \ No newline at end of file diff --git a/src/data/trainers/trainers-init/rival-trainer.ts b/src/data/trainers/trainers-init/rival-trainer.ts index 3b6e35b80f6..21b94afbb6c 100644 --- a/src/data/trainers/trainers-init/rival-trainer.ts +++ b/src/data/trainers/trainers-init/rival-trainer.ts @@ -6,11 +6,11 @@ import { PokeballType } from "#enums/pokeball"; import { SpeciesId } from "#enums/species-id"; import { TrainerSlot } from "#enums/trainer-slot"; import { TrainerType } from "#enums/trainer-type"; -import { getRandomPartyMemberFunc, nextTrainerId, setTrainerId, TrainerConfig } from "#trainers/trainer-config"; +import { getRandomPartyMemberFunc, getSpeciesFilterRandomPartyMemberFunc, nextTrainerId, setTrainerId, TrainerConfig } from "#trainers/trainer-config"; import { trainerPartyTemplates } from "#trainers/trainer-party-template"; import { TrainerConfigs } from "#types/trainer-funcs"; -export const rivalTrainer : TrainerConfigs = { +export const rivalTrainerConfigs : TrainerConfigs = { // Rival floor 8 [TrainerType.RIVAL]: new TrainerConfig(setTrainerId(TrainerType.RIVAL)) .setName("Finn") @@ -511,7 +511,4 @@ export const rivalTrainer : TrainerConfigs = { ) .setInstantTera(0), // Tera starter to primary type } -function getSpeciesFilterRandomPartyMemberFunc(arg0: (species: PokemonSpecies) => boolean): import("#types/trainer-funcs").PartyMemberFunc { - throw new Error("Function not implemented."); -} diff --git a/src/enums/trainer-type.ts b/src/enums/trainer-type.ts index 9e8705e9886..cc6373493e7 100644 --- a/src/enums/trainer-type.ts +++ b/src/enums/trainer-type.ts @@ -51,40 +51,40 @@ export enum TrainerType { WAITER, WORKER, YOUNGSTER, - ROCKET_GRUNT, - ARCHER, + ROCKET_GRUNT = 51, + MAGMA_GRUNT, + AQUA_GRUNT, + GALACTIC_GRUNT, + PLASMA_GRUNT, + FLARE_GRUNT, + AETHER_GRUNT, + SKULL_GRUNT, + MACRO_GRUNT, + STAR_GRUNT, + ARCHER = 61, ARIANA, PROTON, PETREL, - MAGMA_GRUNT, TABITHA, COURTNEY, - AQUA_GRUNT, MATT, SHELLY, - GALACTIC_GRUNT, JUPITER, MARS, SATURN, - PLASMA_GRUNT, ZINZOLIN, COLRESS, - FLARE_GRUNT, BRYONY, XEROSIC, - AETHER_GRUNT, FABA, - SKULL_GRUNT, PLUMERIA, - MACRO_GRUNT, OLEANA, - STAR_GRUNT, GIACOMO, MELA, ATTICUS, ORTEGA, ERI, - ROCKET_BOSS_GIOVANNI_1, + ROCKET_BOSS_GIOVANNI_1 = 84, ROCKET_BOSS_GIOVANNI_2, MAXIE, MAXIE_2, @@ -104,7 +104,7 @@ export enum TrainerType { ROSE_2, PENNY, PENNY_2, - BUCK, + BUCK = 104, CHERYL, MARLEY, MIRA, diff --git a/src/field/trainer.ts b/src/field/trainer.ts index f5b2e5dad99..f3aefe8eaf9 100644 --- a/src/field/trainer.ts +++ b/src/field/trainer.ts @@ -14,8 +14,8 @@ import { TrainerVariant } from "#enums/trainer-variant"; import type { EnemyPokemon } from "#field/pokemon"; import type { PersistentModifier } from "#modifiers/modifier"; import { getIsInitialized, initI18n } from "#plugins/i18n"; -import type { TrainerConfig } from "#trainers/trainer-config"; -import { trainerConfigs } from "#trainers/trainer-config"; +import type { TrainerConfig } from "#trainers/trainer-configs-init"; +import { trainerConfigs } from "#trainers/trainer-configs-init"; import { TrainerPartyCompoundTemplate, type TrainerPartyTemplate } from "#trainers/trainer-party-template"; import { randSeedInt, randSeedItem } from "#utils/common"; import { getRandomLocaleEntry } from "#utils/i18n"; diff --git a/src/phases/game-over-phase.ts b/src/phases/game-over-phase.ts index 57ebd40b559..69253d1f2d0 100644 --- a/src/phases/game-over-phase.ts +++ b/src/phases/game-over-phase.ts @@ -22,7 +22,7 @@ import { PokemonData } from "#system/pokemon-data"; import { RibbonData, type RibbonFlag } from "#system/ribbons/ribbon-data"; import { awardRibbonsToSpeciesLine } from "#system/ribbons/ribbon-methods"; import { TrainerData } from "#system/trainer-data"; -import { trainerConfigs } from "#trainers/trainer-config"; +import { trainerConfigs } from "#trainers/trainer-configs-init"; import { checkSpeciesValidForChallenge, isNuzlockeChallenge } from "#utils/challenge-utils"; import { isLocal, isLocalServerConnected } from "#utils/common"; import { getPokemonSpecies } from "#utils/pokemon-utils"; diff --git a/src/system/game-data.ts b/src/system/game-data.ts index 3442748c9ab..f6a13bec580 100644 --- a/src/system/game-data.ts +++ b/src/system/game-data.ts @@ -60,7 +60,7 @@ import { applySystemVersionMigration, } from "#system/version-migration/version-converter"; import { VoucherType, vouchers } from "#system/voucher"; -import { trainerConfigs } from "#trainers/trainer-config"; +import { trainerConfigs } from "#trainers/trainer-configs-init"; import type { DexData, DexEntry } from "#types/dex-data"; import { RUN_HISTORY_LIMIT } from "#ui/handlers/run-history-ui-handler"; import { applyChallenges } from "#utils/challenge-utils"; diff --git a/src/system/voucher.ts b/src/system/voucher.ts index 18188269e71..8d7bc3d5b70 100644 --- a/src/system/voucher.ts +++ b/src/system/voucher.ts @@ -1,7 +1,7 @@ import type { PlayerGender } from "#enums/player-gender"; import { TrainerType } from "#enums/trainer-type"; import { AchvTier, achvs, getAchievementDescription } from "#system/achv"; -import { trainerConfigs } from "#trainers/trainer-config"; +import { trainerConfigs } from "#trainers/trainer-configs-init"; import type { ConditionFn } from "#types/common"; import i18next from "i18next"; diff --git a/test/mystery-encounter/encounters/mysterious-challengers-encounter.test.ts b/test/mystery-encounter/encounters/mysterious-challengers-encounter.test.ts index ed8b6bffbe9..ccc4ed6bcbc 100644 --- a/test/mystery-encounter/encounters/mysterious-challengers-encounter.test.ts +++ b/test/mystery-encounter/encounters/mysterious-challengers-encounter.test.ts @@ -18,7 +18,7 @@ import { } from "#test/mystery-encounter/encounter-test-utils"; import { GameManager } from "#test/test-utils/game-manager"; import { initSceneWithoutEncounterPhase } from "#test/test-utils/game-manager-utils"; -import { TrainerConfig } from "#trainers/trainer-config"; +import { TrainerConfig } from "#trainers/trainer-configs-init"; import { TrainerPartyCompoundTemplate, TrainerPartyTemplate } from "#trainers/trainer-party-template"; import { ModifierSelectUiHandler } from "#ui/handlers/modifier-select-ui-handler"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest";