Issue #745 - Added the option to localize titles, trainer names (for important trainers like elite 4, champs etc) and trainer classes.

- Also i already did the whole localization for german (sorry thats the only language is speak other then english...)
- Also renamed the trainer Type "student" to school_kid (because there apparently really is a trainer class called student since the gen 9 dlc)
- And i changed it so it makes sure that i18 only gets initalized once (it may be needed to initalize it before the loading phase so the elite 4 titles etc can be localized)
pull/752/head
Jannik Tappert 2024-05-11 22:24:15 +02:00
parent 34aa68df14
commit 9b63ab0c0e
19 changed files with 2223 additions and 804 deletions

View File

@ -1647,7 +1647,7 @@ export const biomeTrainerPools: BiomeTrainerPools = {
[BiomePoolTier.BOSS_ULTRA_RARE]: []
},
[Biome.GRASS]: {
[BiomePoolTier.COMMON]: [ TrainerType.BREEDER, TrainerType.STUDENT ],
[BiomePoolTier.COMMON]: [ TrainerType.BREEDER, TrainerType.SCHOOL_KID ],
[BiomePoolTier.UNCOMMON]: [ TrainerType.ACE_TRAINER ],
[BiomePoolTier.RARE]: [ TrainerType.BLACK_BELT ],
[BiomePoolTier.SUPER_RARE]: [],
@ -7270,7 +7270,7 @@ export const biomeTrainerPools: BiomeTrainerPools = {
]
],
[ TrainerType.STRIKER, [] ],
[ TrainerType.STUDENT, [
[ TrainerType.SCHOOL_KID, [
[ Biome.GRASS, BiomePoolTier.COMMON ]
]
],

View File

@ -288,7 +288,7 @@ export const trainerTypeDialogue = {
]
}
],
[TrainerType.STUDENT]: [
[TrainerType.SCHOOL_KID]: [
{
encounter: [
`…Heehee. I'm confident in my calculations and analysis.`,

View File

@ -43,7 +43,7 @@ export enum TrainerType {
SMASHER,
SNOW_WORKER,
STRIKER,
STUDENT,
SCHOOL_KID,
SWIMMER,
TWINS,
VETERAN,

View File

@ -1,19 +1,21 @@
import BattleScene, { startingWave } from "../battle-scene";
import { ModifierTypeFunc, modifierTypes } from "../modifier/modifier-type";
import { EnemyPokemon } from "../field/pokemon";
import BattleScene, {startingWave} from "../battle-scene";
import {ModifierTypeFunc, modifierTypes} from "../modifier/modifier-type";
import {EnemyPokemon} from "../field/pokemon";
import * as Utils from "../utils";
import { TrainerType } from "./enums/trainer-type";
import { Moves } from "./enums/moves";
import { PokeballType } from "./pokeball";
import { pokemonEvolutions, pokemonPrevolutions } from "./pokemon-evolutions";
import PokemonSpecies, { PokemonSpeciesFilter, getPokemonSpecies } from "./pokemon-species";
import { Species } from "./enums/species";
import { tmSpecies } from "./tms";
import { Type } from "./type";
import { initTrainerTypeDialogue } from "./dialogue";
import { PersistentModifier } from "../modifier/modifier";
import { TrainerVariant } from "../field/trainer";
import { PartyMemberStrength } from "./enums/party-member-strength";
import {TrainerType} from "./enums/trainer-type";
import {Moves} from "./enums/moves";
import {PokeballType} from "./pokeball";
import {pokemonEvolutions, pokemonPrevolutions} from "./pokemon-evolutions";
import PokemonSpecies, {PokemonSpeciesFilter, getPokemonSpecies} from "./pokemon-species";
import {Species} from "./enums/species";
import {tmSpecies} from "./tms";
import {Type} from "./type";
import {initTrainerTypeDialogue} from "./dialogue";
import {PersistentModifier} from "../modifier/modifier";
import {TrainerVariant} from "../field/trainer";
import {PartyMemberStrength} from "./enums/party-member-strength";
import i18next from "i18next";
import {getIsInitialized, initI18n} from "#app/plugins/i18n";
export enum TrainerPoolTier {
COMMON,
@ -211,7 +213,7 @@ export class TrainerConfig {
this.name = Utils.toReadableString(TrainerType[this.getDerivedType()]);
this.battleBgm = 'battle_trainer';
this.victoryBgm = 'victory_trainer';
this.partyTemplates = [ trainerPartyTemplates.TWO_AVG ];
this.partyTemplates = [trainerPartyTemplates.TWO_AVG];
this.speciesFilter = species => (allowLegendaries || (!species.legendary && !species.subLegendary && !species.mythical)) && !species.isTrainerForbidden();
}
@ -227,12 +229,33 @@ export class TrainerConfig {
}
setName(name: string): TrainerConfig {
if (name === 'Finn' || name === 'Ivy') {
// Give the rival a localized name
// First check if i18n is initialized
if (!getIsInitialized()) {
initI18n();
}
if (name === 'Finn') {
this.name = i18next.t('trainerNames:rival');
}
if (name === 'Ivy') {
this.name = i18next.t('trainerNames:rival_female');
}
}
this.name = name;
return this;
}
setTitle(title: string): TrainerConfig {
this.title = title;
// First check if i18n is initialized
if (!getIsInitialized()) {
initI18n();
}
this.title = i18next.t(`titles:${title}`);
return this;
}
@ -334,7 +357,7 @@ export class TrainerConfig {
}
setSpeciesPools(speciesPools: TrainerTierPools | Species[]): TrainerConfig {
this.speciesPools = (Array.isArray(speciesPools) ? { [TrainerPoolTier.COMMON]: speciesPools } : speciesPools) as unknown as TrainerTierPools;
this.speciesPools = (Array.isArray(speciesPools) ? {[TrainerPoolTier.COMMON]: speciesPools} : speciesPools) as unknown as TrainerTierPools;
return this;
}
@ -365,17 +388,25 @@ export class TrainerConfig {
}
initForGymLeader(signatureSpecies: (Species | Species[])[], ...specialtyTypes: Type[]): TrainerConfig {
this.setPartyTemplateFunc(getGymLeaderPartyTemplate);
signatureSpecies.forEach((speciesPool, s) => {
if (!Array.isArray(speciesPool))
speciesPool = [ speciesPool ];
speciesPool = [speciesPool];
this.setPartyMemberFunc(-(s + 1), getRandomPartyMemberFunc(speciesPool));
});
if (specialtyTypes.length) {
this.setSpeciesFilter(p => specialtyTypes.find(t => p.isOfType(t)) !== undefined);
this.setSpecialtyTypes(...specialtyTypes);
}
this.setTitle('Gym Leader');
// Handle name by checking this.name - making it lowercase and replacing spaces with underscores and then calling i18next.t with the name
const nameForCall = this.name.toLowerCase().replace(/\s/g, '_');
this.name = i18next.t(`trainerNames:${nameForCall}`);
this.setTitle("gym_leader");
this.setMoneyMultiplier(2.5);
this.setBoss();
this.setStaticParty();
@ -389,10 +420,12 @@ export class TrainerConfig {
}
initForEliteFour(signatureSpecies: (Species | Species[])[], ...specialtyTypes: Type[]): TrainerConfig {
this.setPartyTemplates(trainerPartyTemplates.ELITE_FOUR);
signatureSpecies.forEach((speciesPool, s) => {
if (!Array.isArray(speciesPool))
speciesPool = [ speciesPool ];
speciesPool = [speciesPool];
this.setPartyMemberFunc(-(s + 1), getRandomPartyMemberFunc(speciesPool));
});
if (specialtyTypes.length) {
@ -400,7 +433,11 @@ export class TrainerConfig {
this.setSpecialtyTypes(...specialtyTypes);
} else
this.setSpeciesFilter(p => p.baseTotal >= 450);
this.setTitle('Elite Four');
// Handle name by checking this.name - making it lowercase and replacing spaces with underscores and then calling i18next.t with the name
const nameForCall = this.name.toLowerCase().replace(/\s/g, '_');
this.name = i18next.t(`trainerNames:${nameForCall}`);
this.setTitle("elite_four");
this.setMoneyMultiplier(3.25);
this.setBoss();
this.setStaticParty();
@ -411,14 +448,18 @@ export class TrainerConfig {
}
initForChampion(signatureSpecies: (Species | Species[])[]): TrainerConfig {
this.setPartyTemplates(trainerPartyTemplates.CHAMPION);
signatureSpecies.forEach((speciesPool, s) => {
if (!Array.isArray(speciesPool))
speciesPool = [ speciesPool ];
speciesPool = [speciesPool];
this.setPartyMemberFunc(-(s + 1), getRandomPartyMemberFunc(speciesPool));
});
this.setSpeciesFilter(p => p.baseTotal >= 470);
this.setTitle('Champion');
// Handle name by checking this.name - making it lowercase and replacing spaces with underscores and then calling i18next.t with the name
const nameForCall = this.name.toLowerCase().replace(/\s/g, '_');
this.name = i18next.t(`trainerNames:${nameForCall}`);
this.setTitle("champion");
this.setMoneyMultiplier(10);
this.setBoss();
this.setStaticParty();
@ -456,10 +497,21 @@ export class TrainerConfig {
scene.load.once(Phaser.Loader.Events.COMPLETE, () => {
const originalWarn = console.warn;
// Ignore warnings for missing frames, because there will be a lot
console.warn = () => {};
const frameNames = scene.anims.generateFrameNames(trainerKey, { zeroPad: 4, suffix: ".png", start: 1, end: 128 });
console.warn = () => {
};
const frameNames = scene.anims.generateFrameNames(trainerKey, {
zeroPad: 4,
suffix: ".png",
start: 1,
end: 128
});
const partnerFrameNames = isDouble
? scene.anims.generateFrameNames(partnerTrainerKey, { zeroPad: 4, suffix: ".png", start: 1, end: 128 })
? scene.anims.generateFrameNames(partnerTrainerKey, {
zeroPad: 4,
suffix: ".png",
start: 1,
end: 128
})
: null;
console.warn = originalWarn;
scene.anims.create({
@ -522,7 +574,7 @@ function getRandomTeraModifiers(party: EnemyPokemon[], count: integer, types?: T
for (let t = 0; t < Math.min(count, party.length); t++) {
const randomIndex = Utils.randSeedItem(partyMemberIndexes);
partyMemberIndexes.splice(partyMemberIndexes.indexOf(randomIndex), 1);
ret.push(modifierTypes.TERA_SHARD().generateType(null, [ Utils.randSeedItem(types ? types : party[randomIndex].getTypes()) ]).withIdFromFunc(modifierTypes.TERA_SHARD).newModifier(party[randomIndex]) as PersistentModifier);
ret.push(modifierTypes.TERA_SHARD().generateType(null, [Utils.randSeedItem(types ? types : party[randomIndex].getTypes())]).withIdFromFunc(modifierTypes.TERA_SHARD).newModifier(party[randomIndex]) as PersistentModifier);
}
return ret;
}
@ -532,15 +584,15 @@ export const trainerConfigs: TrainerConfigs = {
[TrainerType.ACE_TRAINER]: new TrainerConfig(++t).setHasGenders().setHasDouble('Ace Duo').setMoneyMultiplier(2.25).setEncounterBgm(TrainerType.ACE_TRAINER)
.setPartyTemplateFunc(scene => getWavePartyTemplate(scene, 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([ Species.SMEARGLE ]),
.setSpeciesPools([Species.SMEARGLE]),
[TrainerType.BACKERS]: new TrainerConfig(++t).setHasGenders().setDoubleOnly().setEncounterBgm(TrainerType.CYCLIST),
[TrainerType.BACKPACKER]: new TrainerConfig(++t).setHasGenders().setHasDouble('Backpackers').setSpeciesFilter(s => s.isOfType(Type.FLYING) || s.isOfType(Type.ROCK)).setEncounterBgm(TrainerType.BACKPACKER)
.setPartyTemplates(trainerPartyTemplates.ONE_STRONG, trainerPartyTemplates.ONE_WEAK_ONE_STRONG, trainerPartyTemplates.ONE_AVG_ONE_STRONG)
.setSpeciesPools({
[TrainerPoolTier.COMMON]: [ Species.RHYHORN, Species.AIPOM, Species.MAKUHITA, Species.MAWILE, Species.NUMEL, Species.LILLIPUP, Species.SANDILE, Species.WOOLOO ],
[TrainerPoolTier.UNCOMMON]: [ Species.GIRAFARIG, Species.ZANGOOSE, Species.SEVIPER, Species.CUBCHOO, Species.PANCHAM, Species.SKIDDO, Species.MUDBRAY ],
[TrainerPoolTier.RARE]: [ Species.TAUROS, Species.STANTLER, Species.DARUMAKA, Species.BOUFFALANT, Species.DEERLING, Species.IMPIDIMP ],
[TrainerPoolTier.SUPER_RARE]: [ Species.GALAR_DARUMAKA, Species.TEDDIURSA ]
[TrainerPoolTier.COMMON]: [Species.RHYHORN, Species.AIPOM, Species.MAKUHITA, Species.MAWILE, Species.NUMEL, Species.LILLIPUP, Species.SANDILE, Species.WOOLOO],
[TrainerPoolTier.UNCOMMON]: [Species.GIRAFARIG, Species.ZANGOOSE, Species.SEVIPER, Species.CUBCHOO, Species.PANCHAM, Species.SKIDDO, Species.MUDBRAY],
[TrainerPoolTier.RARE]: [Species.TAUROS, Species.STANTLER, Species.DARUMAKA, Species.BOUFFALANT, Species.DEERLING, Species.IMPIDIMP],
[TrainerPoolTier.SUPER_RARE]: [Species.GALAR_DARUMAKA, Species.TEDDIURSA]
}),
[TrainerType.BAKER]: new TrainerConfig(++t).setEncounterBgm(TrainerType.CLERK).setMoneyMultiplier(1.35).setSpeciesFilter(s => s.isOfType(Type.GRASS) || s.isOfType(Type.FIRE)),
[TrainerType.BEAUTY]: new TrainerConfig(++t).setMoneyMultiplier(1.55).setEncounterBgm(TrainerType.PARASOL_LADY),
@ -548,11 +600,11 @@ export const trainerConfigs: TrainerConfigs = {
[TrainerType.BLACK_BELT]: new TrainerConfig(++t).setHasGenders('Battle Girl', TrainerType.PSYCHIC).setHasDouble('Crush Kin').setEncounterBgm(TrainerType.ROUGHNECK).setSpecialtyTypes(Type.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]: [ Species.NIDORAN_F, Species.NIDORAN_M, Species.MACHOP, Species.MAKUHITA, Species.MEDITITE, Species.CROAGUNK, Species.TIMBURR ],
[TrainerPoolTier.UNCOMMON]: [ Species.MANKEY, Species.POLIWRATH, Species.TYROGUE, Species.BRELOOM, Species.SCRAGGY, Species.MIENFOO, Species.PANCHAM, Species.STUFFUL, Species.CRABRAWLER ],
[TrainerPoolTier.RARE]: [ Species.HERACROSS, Species.RIOLU, Species.THROH, Species.SAWK, Species.PASSIMIAN, Species.CLOBBOPUS ],
[TrainerPoolTier.SUPER_RARE]: [ Species.HITMONTOP, Species.INFERNAPE, Species.GALLADE, Species.HAWLUCHA, Species.HAKAMO_O ],
[TrainerPoolTier.ULTRA_RARE]: [ Species.KUBFU ]
[TrainerPoolTier.COMMON]: [Species.NIDORAN_F, Species.NIDORAN_M, Species.MACHOP, Species.MAKUHITA, Species.MEDITITE, Species.CROAGUNK, Species.TIMBURR],
[TrainerPoolTier.UNCOMMON]: [Species.MANKEY, Species.POLIWRATH, Species.TYROGUE, Species.BRELOOM, Species.SCRAGGY, Species.MIENFOO, Species.PANCHAM, Species.STUFFUL, Species.CRABRAWLER],
[TrainerPoolTier.RARE]: [Species.HERACROSS, Species.RIOLU, Species.THROH, Species.SAWK, Species.PASSIMIAN, Species.CLOBBOPUS],
[TrainerPoolTier.SUPER_RARE]: [Species.HITMONTOP, Species.INFERNAPE, Species.GALLADE, Species.HAWLUCHA, Species.HAKAMO_O],
[TrainerPoolTier.ULTRA_RARE]: [Species.KUBFU]
}),
[TrainerType.BREEDER]: new TrainerConfig(++t).setMoneyMultiplier(1.325).setEncounterBgm(TrainerType.POKEFAN).setHasGenders().setHasDouble('Breeders')
.setPartyTemplateFunc(scene => getWavePartyTemplate(scene, trainerPartyTemplates.FOUR_WEAKER, trainerPartyTemplates.FIVE_WEAKER, trainerPartyTemplates.SIX_WEAKER))
@ -560,25 +612,25 @@ export const trainerConfigs: TrainerConfigs = {
[TrainerType.CLERK]: new TrainerConfig(++t).setHasGenders().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]: [ Species.MEOWTH, Species.PSYDUCK, Species.BUDEW, Species.PIDOVE, Species.CINCCINO, Species.LITLEO ],
[TrainerPoolTier.UNCOMMON]: [ Species.JIGGLYPUFF, Species.MAGNEMITE, Species.MARILL, Species.COTTONEE, Species.SKIDDO ],
[TrainerPoolTier.RARE]: [ Species.BUIZEL, Species.SNEASEL, Species.KLEFKI, Species.INDEEDEE ]
[TrainerPoolTier.COMMON]: [Species.MEOWTH, Species.PSYDUCK, Species.BUDEW, Species.PIDOVE, Species.CINCCINO, Species.LITLEO],
[TrainerPoolTier.UNCOMMON]: [Species.JIGGLYPUFF, Species.MAGNEMITE, Species.MARILL, Species.COTTONEE, Species.SKIDDO],
[TrainerPoolTier.RARE]: [Species.BUIZEL, Species.SNEASEL, Species.KLEFKI, Species.INDEEDEE]
}),
[TrainerType.CYCLIST]: new TrainerConfig(++t).setMoneyMultiplier(1.3).setHasGenders().setHasDouble('Cyclists').setEncounterBgm(TrainerType.CYCLIST)
.setPartyTemplates(trainerPartyTemplates.TWO_WEAK, trainerPartyTemplates.ONE_AVG)
.setSpeciesPools({
[TrainerPoolTier.COMMON]: [ Species.PICHU, Species.STARLY, Species.TAILLOW, Species.BOLTUND ],
[TrainerPoolTier.UNCOMMON]: [ Species.DODUO, Species.ELECTRIKE, Species.BLITZLE, Species.WATTREL ],
[TrainerPoolTier.RARE]: [ Species.YANMA, Species.NINJASK, Species.WHIRLIPEDE, Species.EMOLGA ],
[TrainerPoolTier.SUPER_RARE]: [ Species.ACCELGOR, Species.DREEPY ]
[TrainerPoolTier.COMMON]: [Species.PICHU, Species.STARLY, Species.TAILLOW, Species.BOLTUND],
[TrainerPoolTier.UNCOMMON]: [Species.DODUO, Species.ELECTRIKE, Species.BLITZLE, Species.WATTREL],
[TrainerPoolTier.RARE]: [Species.YANMA, Species.NINJASK, Species.WHIRLIPEDE, Species.EMOLGA],
[TrainerPoolTier.SUPER_RARE]: [Species.ACCELGOR, Species.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]: [ Species.RALTS, Species.SPOINK, Species.LOTAD, Species.BUDEW ],
[TrainerPoolTier.UNCOMMON]: [ Species.SPINDA, Species.SWABLU, Species.MARACTUS,],
[TrainerPoolTier.RARE]: [ Species.BELLOSSOM, Species.HITMONTOP, Species.MIME_JR, Species.ORICORIO ],
[TrainerPoolTier.SUPER_RARE]: [ Species.POPPLIO ]
[TrainerPoolTier.COMMON]: [Species.RALTS, Species.SPOINK, Species.LOTAD, Species.BUDEW],
[TrainerPoolTier.UNCOMMON]: [Species.SPINDA, Species.SWABLU, Species.MARACTUS,],
[TrainerPoolTier.RARE]: [Species.BELLOSSOM, Species.HITMONTOP, Species.MIME_JR, Species.ORICORIO],
[TrainerPoolTier.SUPER_RARE]: [Species.POPPLIO]
}),
[TrainerType.DEPOT_AGENT]: new TrainerConfig(++t).setMoneyMultiplier(1.45).setEncounterBgm(TrainerType.CLERK),
[TrainerType.DOCTOR]: new TrainerConfig(++t).setHasGenders('Nurse', 'lass').setHasDouble('Medical Team').setMoneyMultiplier(3).setEncounterBgm(TrainerType.CLERK)
@ -586,20 +638,20 @@ export const trainerConfigs: TrainerConfigs = {
[TrainerType.FISHERMAN]: new TrainerConfig(++t).setMoneyMultiplier(1.25).setEncounterBgm(TrainerType.BACKPACKER).setSpecialtyTypes(Type.WATER)
.setPartyTemplates(trainerPartyTemplates.TWO_WEAK_SAME_ONE_AVG, trainerPartyTemplates.ONE_AVG, trainerPartyTemplates.THREE_WEAK_SAME, trainerPartyTemplates.ONE_STRONG, trainerPartyTemplates.SIX_WEAKER)
.setSpeciesPools({
[TrainerPoolTier.COMMON]: [ Species.TENTACOOL, Species.MAGIKARP, Species.GOLDEEN, Species.STARYU, Species.REMORAID, Species.SKRELP, Species.CLAUNCHER, Species.ARROKUDA ],
[TrainerPoolTier.UNCOMMON]: [ Species.POLIWAG, Species.SHELLDER, Species.KRABBY, Species.HORSEA, Species.CARVANHA, Species.BARBOACH, Species.CORPHISH, Species.FINNEON, Species.TYMPOLE, Species.BASCULIN, Species.FRILLISH, Species.INKAY ],
[TrainerPoolTier.RARE]: [ Species.CHINCHOU, Species.CORSOLA, Species.WAILMER, Species.BARBOACH, Species.CLAMPERL, Species.LUVDISC, Species.MANTYKE, Species.ALOMOMOLA, Species.TATSUGIRI, Species.VELUZA ],
[TrainerPoolTier.SUPER_RARE]: [ Species.LAPRAS, Species.FEEBAS, Species.RELICANTH, Species.DONDOZO ]
[TrainerPoolTier.COMMON]: [Species.TENTACOOL, Species.MAGIKARP, Species.GOLDEEN, Species.STARYU, Species.REMORAID, Species.SKRELP, Species.CLAUNCHER, Species.ARROKUDA],
[TrainerPoolTier.UNCOMMON]: [Species.POLIWAG, Species.SHELLDER, Species.KRABBY, Species.HORSEA, Species.CARVANHA, Species.BARBOACH, Species.CORPHISH, Species.FINNEON, Species.TYMPOLE, Species.BASCULIN, Species.FRILLISH, Species.INKAY],
[TrainerPoolTier.RARE]: [Species.CHINCHOU, Species.CORSOLA, Species.WAILMER, Species.BARBOACH, Species.CLAMPERL, Species.LUVDISC, Species.MANTYKE, Species.ALOMOMOLA, Species.TATSUGIRI, Species.VELUZA],
[TrainerPoolTier.SUPER_RARE]: [Species.LAPRAS, Species.FEEBAS, Species.RELICANTH, Species.DONDOZO]
}),
[TrainerType.GUITARIST]: new TrainerConfig(++t).setMoneyMultiplier(1.2).setEncounterBgm(TrainerType.ROUGHNECK).setSpecialtyTypes(Type.ELECTRIC).setSpeciesFilter(s => s.isOfType(Type.ELECTRIC)),
[TrainerType.HARLEQUIN]: new TrainerConfig(++t).setEncounterBgm(TrainerType.PSYCHIC).setSpeciesFilter(s => tmSpecies[Moves.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]: [ Species.SANDSHREW, Species.DIGLETT, Species.GEODUDE, Species.MACHOP, Species.ARON, Species.ROGGENROLA, Species.DRILBUR, Species.NACLI ],
[TrainerPoolTier.UNCOMMON]: [ Species.ZUBAT, Species.RHYHORN, Species.ONIX, Species.CUBONE, Species.WOOBAT, Species.SWINUB, Species.NOSEPASS, Species.HIPPOPOTAS, Species.DWEBBLE, Species.KLAWF, Species.TOEDSCOOL ],
[TrainerPoolTier.RARE]: [ Species.TORKOAL, Species.TRAPINCH, Species.BARBOACH, Species.GOLETT, Species.ALOLA_DIGLETT, Species.ALOLA_GEODUDE, Species.GALAR_STUNFISK, Species.PALDEA_WOOPER ],
[TrainerPoolTier.SUPER_RARE]: [ Species.MAGBY, Species.LARVITAR ]
[TrainerPoolTier.COMMON]: [Species.SANDSHREW, Species.DIGLETT, Species.GEODUDE, Species.MACHOP, Species.ARON, Species.ROGGENROLA, Species.DRILBUR, Species.NACLI],
[TrainerPoolTier.UNCOMMON]: [Species.ZUBAT, Species.RHYHORN, Species.ONIX, Species.CUBONE, Species.WOOBAT, Species.SWINUB, Species.NOSEPASS, Species.HIPPOPOTAS, Species.DWEBBLE, Species.KLAWF, Species.TOEDSCOOL],
[TrainerPoolTier.RARE]: [Species.TORKOAL, Species.TRAPINCH, Species.BARBOACH, Species.GOLETT, Species.ALOLA_DIGLETT, Species.ALOLA_GEODUDE, Species.GALAR_STUNFISK, Species.PALDEA_WOOPER],
[TrainerPoolTier.SUPER_RARE]: [Species.MAGBY, Species.LARVITAR]
}),
[TrainerType.HOOLIGANS]: new TrainerConfig(++t).setDoubleOnly().setEncounterBgm(TrainerType.ROUGHNECK).setSpeciesFilter(s => s.isOfType(Type.POISON) || s.isOfType(Type.DARK)),
[TrainerType.HOOPSTER]: new TrainerConfig(++t).setMoneyMultiplier(1.2).setEncounterBgm(TrainerType.CYCLIST),
@ -615,11 +667,11 @@ export const trainerConfigs: TrainerConfigs = {
[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]: [ Species.VULPIX, Species.GROWLITHE, Species.SNUBBULL, Species.POOCHYENA, Species.ELECTRIKE, Species.LILLIPUP, Species.YAMPER, Species.FIDOUGH ],
[TrainerPoolTier.UNCOMMON]: [ Species.HOUNDOUR, Species.ROCKRUFF, Species.MASCHIFF ],
[TrainerPoolTier.RARE]: [ Species.JOLTEON, Species.RIOLU ],
[TrainerPoolTier.COMMON]: [Species.VULPIX, Species.GROWLITHE, Species.SNUBBULL, Species.POOCHYENA, Species.ELECTRIKE, Species.LILLIPUP, Species.YAMPER, Species.FIDOUGH],
[TrainerPoolTier.UNCOMMON]: [Species.HOUNDOUR, Species.ROCKRUFF, Species.MASCHIFF],
[TrainerPoolTier.RARE]: [Species.JOLTEON, Species.RIOLU],
[TrainerPoolTier.SUPER_RARE]: [],
[TrainerPoolTier.ULTRA_RARE]: [ Species.ENTEI, Species.SUICUNE, Species.RAIKOU ]
[TrainerPoolTier.ULTRA_RARE]: [Species.ENTEI, Species.SUICUNE, Species.RAIKOU]
}),
[TrainerType.PARASOL_LADY]: new TrainerConfig(++t).setMoneyMultiplier(1.55).setEncounterBgm(TrainerType.PARASOL_LADY).setSpeciesFilter(s => s.isOfType(Type.WATER)),
[TrainerType.PILOT]: new TrainerConfig(++t).setEncounterBgm(TrainerType.CLERK).setSpeciesFilter(s => tmSpecies[Moves.FLY].indexOf(s.speciesId) > -1),
@ -628,222 +680,222 @@ export const trainerConfigs: TrainerConfigs = {
[TrainerType.PRESCHOOLER]: new TrainerConfig(++t).setMoneyMultiplier(0.2).setEncounterBgm(TrainerType.YOUNGSTER).setHasGenders(undefined, 'lass').setHasDouble('Preschoolers')
.setPartyTemplates(trainerPartyTemplates.THREE_WEAK, trainerPartyTemplates.FOUR_WEAKER, trainerPartyTemplates.TWO_WEAK_SAME_ONE_AVG, trainerPartyTemplates.FIVE_WEAKER)
.setSpeciesPools({
[TrainerPoolTier.COMMON]: [ Species.CATERPIE, Species.PICHU, Species.SANDSHREW, Species.LEDYBA, Species.BUDEW, Species.BURMY, Species.WOOLOO, Species.PAWMI, Species.SMOLIV ],
[TrainerPoolTier.UNCOMMON]: [ Species.EEVEE, Species.CLEFFA, Species.IGGLYBUFF, Species.SWINUB, Species.WOOPER, Species.DRIFLOON, Species.DEDENNE, Species.STUFFUL ],
[TrainerPoolTier.RARE]: [ Species.RALTS, Species.RIOLU, Species.JOLTIK, Species.TANDEMAUS ],
[TrainerPoolTier.SUPER_RARE]: [ Species.DARUMAKA, Species.TINKATINK ],
[TrainerPoolTier.COMMON]: [Species.CATERPIE, Species.PICHU, Species.SANDSHREW, Species.LEDYBA, Species.BUDEW, Species.BURMY, Species.WOOLOO, Species.PAWMI, Species.SMOLIV],
[TrainerPoolTier.UNCOMMON]: [Species.EEVEE, Species.CLEFFA, Species.IGGLYBUFF, Species.SWINUB, Species.WOOPER, Species.DRIFLOON, Species.DEDENNE, Species.STUFFUL],
[TrainerPoolTier.RARE]: [Species.RALTS, Species.RIOLU, Species.JOLTIK, Species.TANDEMAUS],
[TrainerPoolTier.SUPER_RARE]: [Species.DARUMAKA, Species.TINKATINK],
}),
[TrainerType.PSYCHIC]: new TrainerConfig(++t).setHasGenders().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]: [ Species.ABRA, Species.DROWZEE, Species.RALTS, Species.SPOINK, Species.GOTHITA, Species.SOLOSIS, Species.BLIPBUG, Species.ESPURR, Species.HATENNA ],
[TrainerPoolTier.UNCOMMON]: [ Species.MIME_JR, Species.EXEGGCUTE, Species.MEDITITE, Species.NATU, Species.EXEGGCUTE, Species.WOOBAT, Species.INKAY, Species.ORANGURU ],
[TrainerPoolTier.RARE]: [ Species.ELGYEM, Species.SIGILYPH, Species.BALTOY, Species.GIRAFARIG, Species.MEOWSTIC ],
[TrainerPoolTier.SUPER_RARE]: [ Species.BELDUM, Species.ESPEON, Species.STANTLER ],
[TrainerPoolTier.COMMON]: [Species.ABRA, Species.DROWZEE, Species.RALTS, Species.SPOINK, Species.GOTHITA, Species.SOLOSIS, Species.BLIPBUG, Species.ESPURR, Species.HATENNA],
[TrainerPoolTier.UNCOMMON]: [Species.MIME_JR, Species.EXEGGCUTE, Species.MEDITITE, Species.NATU, Species.EXEGGCUTE, Species.WOOBAT, Species.INKAY, Species.ORANGURU],
[TrainerPoolTier.RARE]: [Species.ELGYEM, Species.SIGILYPH, Species.BALTOY, Species.GIRAFARIG, Species.MEOWSTIC],
[TrainerPoolTier.SUPER_RARE]: [Species.BELDUM, Species.ESPEON, Species.STANTLER],
}),
[TrainerType.RANGER]: new TrainerConfig(++t).setMoneyMultiplier(1.4).setName('Pokémon Ranger').setEncounterBgm(TrainerType.BACKPACKER).setHasGenders().setHasDouble('Pokémon Rangers')
.setSpeciesPools({
[TrainerPoolTier.COMMON]: [ Species.PICHU, Species.GROWLITHE, Species.PONYTA, Species.ZIGZAGOON, Species.SEEDOT, Species.BIDOOF, Species.RIOLU, Species.SEWADDLE, Species.SKIDDO, Species.SALANDIT, Species.YAMPER ],
[TrainerPoolTier.UNCOMMON]: [ Species.AZURILL, Species.TAUROS, Species.MAREEP, Species.FARFETCHD, Species.TEDDIURSA, Species.SHROOMISH, Species.ELECTRIKE, Species.BUDEW, Species.BUIZEL, Species.MUDBRAY, Species.STUFFUL ],
[TrainerPoolTier.RARE]: [ Species.EEVEE, Species.SCYTHER, Species.KANGASKHAN, Species.RALTS, Species.MUNCHLAX, Species.ZORUA, Species.PALDEA_TAUROS, Species.TINKATINK, Species.CYCLIZAR, Species.FLAMIGO ],
[TrainerPoolTier.SUPER_RARE]: [ Species.LARVESTA ],
[TrainerPoolTier.COMMON]: [Species.PICHU, Species.GROWLITHE, Species.PONYTA, Species.ZIGZAGOON, Species.SEEDOT, Species.BIDOOF, Species.RIOLU, Species.SEWADDLE, Species.SKIDDO, Species.SALANDIT, Species.YAMPER],
[TrainerPoolTier.UNCOMMON]: [Species.AZURILL, Species.TAUROS, Species.MAREEP, Species.FARFETCHD, Species.TEDDIURSA, Species.SHROOMISH, Species.ELECTRIKE, Species.BUDEW, Species.BUIZEL, Species.MUDBRAY, Species.STUFFUL],
[TrainerPoolTier.RARE]: [Species.EEVEE, Species.SCYTHER, Species.KANGASKHAN, Species.RALTS, Species.MUNCHLAX, Species.ZORUA, Species.PALDEA_TAUROS, Species.TINKATINK, Species.CYCLIZAR, Species.FLAMIGO],
[TrainerPoolTier.SUPER_RARE]: [Species.LARVESTA],
}),
[TrainerType.RICH]: new TrainerConfig(++t).setMoneyMultiplier(5).setName('Gentleman').setHasGenders('Madame').setHasDouble('Rich Couple'),
[TrainerType.RICH_KID]: new TrainerConfig(++t).setMoneyMultiplier(3.75).setName('Rich Boy').setHasGenders('Lady').setHasDouble('Rich Kids').setEncounterBgm(TrainerType.RICH),
[TrainerType.ROUGHNECK]: new TrainerConfig(++t).setMoneyMultiplier(1.4).setEncounterBgm(TrainerType.ROUGHNECK).setSpeciesFilter(s => s.isOfType(Type.DARK)),
[TrainerType.SCIENTIST]: new TrainerConfig(++t).setHasGenders().setHasDouble('Scientists').setMoneyMultiplier(1.7).setEncounterBgm(TrainerType.SCIENTIST)
.setSpeciesPools({
[TrainerPoolTier.COMMON]: [ Species.MAGNEMITE, Species.GRIMER, Species.DROWZEE, Species.VOLTORB, Species.KOFFING ],
[TrainerPoolTier.UNCOMMON]: [ Species.BALTOY, Species.BRONZOR, Species.FERROSEED, Species.KLINK, Species.CHARJABUG, Species.BLIPBUG, Species.HELIOPTILE ],
[TrainerPoolTier.RARE]: [ Species.ABRA, Species.DITTO, Species.PORYGON, Species.ELEKID, Species.SOLOSIS, Species.GALAR_WEEZING ],
[TrainerPoolTier.SUPER_RARE]: [ Species.OMANYTE, Species.KABUTO, Species.AERODACTYL, Species.LILEEP, Species.ANORITH, Species.CRANIDOS, Species.SHIELDON, Species.TIRTOUGA, Species.ARCHEN, Species.ARCTOVISH, Species.ARCTOZOLT, Species.DRACOVISH, Species.DRACOZOLT ],
[TrainerPoolTier.ULTRA_RARE]: [ Species.ROTOM, Species.MELTAN ]
[TrainerPoolTier.COMMON]: [Species.MAGNEMITE, Species.GRIMER, Species.DROWZEE, Species.VOLTORB, Species.KOFFING],
[TrainerPoolTier.UNCOMMON]: [Species.BALTOY, Species.BRONZOR, Species.FERROSEED, Species.KLINK, Species.CHARJABUG, Species.BLIPBUG, Species.HELIOPTILE],
[TrainerPoolTier.RARE]: [Species.ABRA, Species.DITTO, Species.PORYGON, Species.ELEKID, Species.SOLOSIS, Species.GALAR_WEEZING],
[TrainerPoolTier.SUPER_RARE]: [Species.OMANYTE, Species.KABUTO, Species.AERODACTYL, Species.LILEEP, Species.ANORITH, Species.CRANIDOS, Species.SHIELDON, Species.TIRTOUGA, Species.ARCHEN, Species.ARCTOVISH, Species.ARCTOZOLT, Species.DRACOVISH, Species.DRACOZOLT],
[TrainerPoolTier.ULTRA_RARE]: [Species.ROTOM, Species.MELTAN]
}),
[TrainerType.SMASHER]: new TrainerConfig(++t).setMoneyMultiplier(1.2).setEncounterBgm(TrainerType.CYCLIST),
[TrainerType.SNOW_WORKER]: new TrainerConfig(++t).setName('Worker').setHasGenders().setHasDouble('Workers').setMoneyMultiplier(1.7).setEncounterBgm(TrainerType.CLERK).setSpeciesFilter(s => s.isOfType(Type.ICE) || s.isOfType(Type.STEEL)),
[TrainerType.STRIKER]: new TrainerConfig(++t).setMoneyMultiplier(1.2).setEncounterBgm(TrainerType.CYCLIST),
[TrainerType.STUDENT]: new TrainerConfig(++t).setMoneyMultiplier(0.75).setEncounterBgm(TrainerType.YOUNGSTER).setHasGenders(undefined, 'lass').setHasDouble('Students')
[TrainerType.SCHOOL_KID]: new TrainerConfig(++t).setMoneyMultiplier(0.75).setEncounterBgm(TrainerType.YOUNGSTER).setHasGenders(undefined, 'lass').setHasDouble('Students')
.setSpeciesPools({
[TrainerPoolTier.COMMON]: [ Species.ODDISH, Species.EXEGGCUTE, Species.TEDDIURSA, Species.WURMPLE, Species.RALTS, Species.SHROOMISH, Species.FLETCHLING ],
[TrainerPoolTier.UNCOMMON]: [ Species.VOLTORB, Species.WHISMUR, Species.MEDITITE, Species.MIME_JR, Species.NYMBLE ],
[TrainerPoolTier.RARE]: [ Species.TANGELA, Species.EEVEE, Species.YANMA ],
[TrainerPoolTier.SUPER_RARE]: [ Species.TADBULB ]
[TrainerPoolTier.COMMON]: [Species.ODDISH, Species.EXEGGCUTE, Species.TEDDIURSA, Species.WURMPLE, Species.RALTS, Species.SHROOMISH, Species.FLETCHLING],
[TrainerPoolTier.UNCOMMON]: [Species.VOLTORB, Species.WHISMUR, Species.MEDITITE, Species.MIME_JR, Species.NYMBLE],
[TrainerPoolTier.RARE]: [Species.TANGELA, Species.EEVEE, Species.YANMA],
[TrainerPoolTier.SUPER_RARE]: [Species.TADBULB]
}),
[TrainerType.SWIMMER]: new TrainerConfig(++t).setMoneyMultiplier(1.3).setEncounterBgm(TrainerType.PARASOL_LADY).setHasGenders().setHasDouble('Swimmers').setSpecialtyTypes(Type.WATER).setSpeciesFilter(s => s.isOfType(Type.WATER)),
[TrainerType.TWINS]: new TrainerConfig(++t).setDoubleOnly().setMoneyMultiplier(0.65).setUseSameSeedForAllMembers()
.setPartyTemplateFunc(scene => getWavePartyTemplate(scene, trainerPartyTemplates.TWO_WEAK, trainerPartyTemplates.TWO_AVG, trainerPartyTemplates.TWO_STRONG))
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.PLUSLE, Species.VOLBEAT, Species.PACHIRISU, Species.SILCOON, Species.METAPOD, Species.IGGLYBUFF, Species.PETILIL, Species.EEVEE ]))
.setPartyMemberFunc(1, getRandomPartyMemberFunc([ Species.MINUN, Species.ILLUMISE, Species.EMOLGA, Species.CASCOON, Species.KAKUNA, Species.CLEFFA, Species.COTTONEE, Species.EEVEE ], TrainerSlot.TRAINER_PARTNER))
.setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.PLUSLE, Species.VOLBEAT, Species.PACHIRISU, Species.SILCOON, Species.METAPOD, Species.IGGLYBUFF, Species.PETILIL, Species.EEVEE]))
.setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.MINUN, Species.ILLUMISE, Species.EMOLGA, Species.CASCOON, Species.KAKUNA, Species.CLEFFA, Species.COTTONEE, Species.EEVEE], TrainerSlot.TRAINER_PARTNER))
.setEncounterBgm(TrainerType.TWINS),
[TrainerType.VETERAN]: new TrainerConfig(++t).setHasGenders().setHasDouble('Veteran Duo').setMoneyMultiplier(2.5).setEncounterBgm(TrainerType.ACE_TRAINER).setSpeciesFilter(s => s.isOfType(Type.DRAGON)),
[TrainerType.WAITER]: new TrainerConfig(++t).setHasGenders('Waitress').setHasDouble('Restaurant Staff').setMoneyMultiplier(1.5).setEncounterBgm(TrainerType.CLERK)
.setSpeciesPools({
[TrainerPoolTier.COMMON]: [ Species.CLEFFA, Species.CHATOT, Species.PANSAGE, Species.PANSEAR, Species.PANPOUR, Species.MINCCINO ],
[TrainerPoolTier.UNCOMMON]: [ Species.TROPIUS, Species.PETILIL, Species.BOUNSWEET, Species.INDEEDEE ],
[TrainerPoolTier.RARE]: [ Species.APPLIN, Species.SINISTEA, Species.POLTCHAGEIST ]
[TrainerPoolTier.COMMON]: [Species.CLEFFA, Species.CHATOT, Species.PANSAGE, Species.PANSEAR, Species.PANPOUR, Species.MINCCINO],
[TrainerPoolTier.UNCOMMON]: [Species.TROPIUS, Species.PETILIL, Species.BOUNSWEET, Species.INDEEDEE],
[TrainerPoolTier.RARE]: [Species.APPLIN, Species.SINISTEA, Species.POLTCHAGEIST]
}),
[TrainerType.WORKER]: new TrainerConfig(++t).setHasGenders().setHasDouble('Workers').setEncounterBgm(TrainerType.CLERK).setMoneyMultiplier(1.7).setSpeciesFilter(s => s.isOfType(Type.ROCK) || s.isOfType(Type.STEEL)),
[TrainerType.YOUNGSTER]: new TrainerConfig(++t).setMoneyMultiplier(0.5).setEncounterBgm(TrainerType.YOUNGSTER).setHasGenders('Lass', 'lass').setHasDouble('Beginners').setPartyTemplates(trainerPartyTemplates.TWO_WEAKER)
.setSpeciesPools(
[ Species.CATERPIE, Species.WEEDLE, Species.RATTATA, Species.SENTRET, Species.POOCHYENA, Species.ZIGZAGOON, Species.WURMPLE, Species.BIDOOF, Species.PATRAT, Species.LILLIPUP ]
[Species.CATERPIE, Species.WEEDLE, Species.RATTATA, Species.SENTRET, Species.POOCHYENA, Species.ZIGZAGOON, Species.WURMPLE, Species.BIDOOF, Species.PATRAT, Species.LILLIPUP]
),
[TrainerType.BROCK]: new TrainerConfig((t = TrainerType.BROCK)).initForGymLeader([ Species.GEODUDE, Species.ONIX ], Type.ROCK).setBattleBgm('battle_kanto_gym'),
[TrainerType.MISTY]: new TrainerConfig(++t).initForGymLeader([ Species.STARYU, Species.PSYDUCK ], Type.WATER).setBattleBgm('battle_kanto_gym'),
[TrainerType.LT_SURGE]: new TrainerConfig(++t).initForGymLeader([ Species.VOLTORB, Species.PIKACHU, Species.ELECTABUZZ ], Type.ELECTRIC).setBattleBgm('battle_kanto_gym'),
[TrainerType.ERIKA]: new TrainerConfig(++t).initForGymLeader([ Species.ODDISH, Species.BELLSPROUT, Species.TANGELA, Species.HOPPIP ], Type.GRASS).setBattleBgm('battle_kanto_gym'),
[TrainerType.JANINE]: new TrainerConfig(++t).initForGymLeader([ Species.VENONAT, Species.SPINARAK, Species.ZUBAT ], Type.POISON).setBattleBgm('battle_kanto_gym'),
[TrainerType.SABRINA]: new TrainerConfig(++t).initForGymLeader([ Species.ABRA, Species.MR_MIME, Species.ESPEON ], Type.PSYCHIC).setBattleBgm('battle_kanto_gym'),
[TrainerType.BLAINE]: new TrainerConfig(++t).initForGymLeader([ Species.GROWLITHE, Species.PONYTA, Species.MAGMAR ], Type.FIRE).setBattleBgm('battle_kanto_gym'),
[TrainerType.GIOVANNI]: new TrainerConfig(++t).initForGymLeader([ Species.SANDILE, Species.MURKROW, Species.NIDORAN_M, Species.NIDORAN_F ], Type.DARK).setBattleBgm('battle_kanto_gym'),
[TrainerType.FALKNER]: new TrainerConfig(++t).initForGymLeader([ Species.PIDGEY, Species.HOOTHOOT, Species.DODUO ], Type.FLYING).setBattleBgm('battle_johto_gym'),
[TrainerType.BUGSY]: new TrainerConfig(++t).initForGymLeader([ Species.SCYTHER, Species.HERACROSS, Species.SHUCKLE, Species.PINSIR ], Type.BUG).setBattleBgm('battle_johto_gym'),
[TrainerType.WHITNEY]: new TrainerConfig(++t).initForGymLeader([ Species.GIRAFARIG, Species.MILTANK ], Type.NORMAL).setBattleBgm('battle_johto_gym'),
[TrainerType.MORTY]: new TrainerConfig(++t).initForGymLeader([ Species.GASTLY, Species.MISDREAVUS, Species.SABLEYE ], Type.GHOST).setBattleBgm('battle_johto_gym'),
[TrainerType.CHUCK]: new TrainerConfig(++t).initForGymLeader([ Species.POLIWRATH, Species.MANKEY ], Type.FIGHTING).setBattleBgm('battle_johto_gym'),
[TrainerType.JASMINE]: new TrainerConfig(++t).initForGymLeader([ Species.MAGNEMITE, Species.STEELIX ], Type.STEEL).setBattleBgm('battle_johto_gym'),
[TrainerType.PRYCE]: new TrainerConfig(++t).initForGymLeader([ Species.SEEL, Species.SWINUB ], Type.ICE).setBattleBgm('battle_johto_gym'),
[TrainerType.CLAIR]: new TrainerConfig(++t).initForGymLeader([ Species.DRATINI, Species.HORSEA, Species.GYARADOS ], Type.DRAGON).setBattleBgm('battle_johto_gym'),
[TrainerType.ROXANNE]: new TrainerConfig(++t).initForGymLeader([ Species.GEODUDE, Species.NOSEPASS ], Type.ROCK).setBattleBgm('battle_hoenn_gym'),
[TrainerType.BRAWLY]: new TrainerConfig(++t).initForGymLeader([ Species.MACHOP, Species.MAKUHITA ], Type.FIGHTING).setBattleBgm('battle_hoenn_gym'),
[TrainerType.WATTSON]: new TrainerConfig(++t).initForGymLeader([ Species.MAGNEMITE, Species.VOLTORB, Species.ELECTRIKE ], Type.ELECTRIC).setBattleBgm('battle_hoenn_gym'),
[TrainerType.FLANNERY]: new TrainerConfig(++t).initForGymLeader([ Species.SLUGMA, Species.TORKOAL, Species.NUMEL ], Type.FIRE).setBattleBgm('battle_hoenn_gym'),
[TrainerType.NORMAN]: new TrainerConfig(++t).initForGymLeader([ Species.SLAKOTH, Species.SPINDA, Species.CHANSEY, Species.KANGASKHAN ], Type.NORMAL).setBattleBgm('battle_hoenn_gym'),
[TrainerType.WINONA]: new TrainerConfig(++t).initForGymLeader([ Species.SWABLU, Species.WINGULL, Species.TROPIUS, Species.SKARMORY ], Type.FLYING).setBattleBgm('battle_hoenn_gym'),
[TrainerType.TATE]: new TrainerConfig(++t).initForGymLeader([ Species.SOLROCK, Species.NATU, Species.CHIMECHO, Species.GALLADE ], Type.PSYCHIC).setBattleBgm('battle_hoenn_gym'),
[TrainerType.LIZA]: new TrainerConfig(++t).initForGymLeader([ Species.LUNATONE, Species.SPOINK, Species.BALTOY, Species.GARDEVOIR ], Type.PSYCHIC).setBattleBgm('battle_hoenn_gym'),
[TrainerType.JUAN]: new TrainerConfig(++t).initForGymLeader([ Species.HORSEA, Species.BARBOACH, Species.SPHEAL, Species.RELICANTH ], Type.WATER).setBattleBgm('battle_hoenn_gym'),
[TrainerType.ROARK]: new TrainerConfig(++t).initForGymLeader([ Species.CRANIDOS, Species.LARVITAR, Species.GEODUDE ], Type.ROCK).setBattleBgm('battle_sinnoh_gym'),
[TrainerType.GARDENIA]: new TrainerConfig(++t).initForGymLeader([ Species.ROSELIA, Species.TANGELA, Species.TURTWIG ], Type.GRASS).setBattleBgm('battle_sinnoh_gym'),
[TrainerType.MAYLENE]: new TrainerConfig(++t).initForGymLeader([ Species.LUCARIO, Species.MEDITITE, Species.CHIMCHAR ], Type.FIGHTING).setBattleBgm('battle_sinnoh_gym'),
[TrainerType.CRASHER_WAKE]: new TrainerConfig(++t).initForGymLeader([ Species.BUIZEL, Species.MAGIKARP, Species.PIPLUP ], Type.WATER).setBattleBgm('battle_sinnoh_gym'),
[TrainerType.FANTINA]: new TrainerConfig(++t).initForGymLeader([ Species.MISDREAVUS, Species.DRIFLOON, Species.SPIRITOMB ], Type.GHOST).setBattleBgm('battle_sinnoh_gym'),
[TrainerType.BYRON]: new TrainerConfig(++t).initForGymLeader([ Species.SHIELDON, Species.BRONZOR, Species.AGGRON ], Type.STEEL).setBattleBgm('battle_sinnoh_gym'),
[TrainerType.CANDICE]: new TrainerConfig(++t).initForGymLeader([ Species.SNEASEL, Species.SNOVER, Species.SNORUNT ], Type.ICE).setBattleBgm('battle_sinnoh_gym'),
[TrainerType.VOLKNER]: new TrainerConfig(++t).initForGymLeader([ Species.SHINX, Species.CHINCHOU, Species.ROTOM ], Type.ELECTRIC).setBattleBgm('battle_sinnoh_gym'),
[TrainerType.CILAN]: new TrainerConfig(++t).initForGymLeader([ Species.PANSAGE, Species.COTTONEE, Species.PETILIL ], Type.GRASS),
[TrainerType.CHILI]: new TrainerConfig(++t).initForGymLeader([ Species.PANSEAR, Species.DARUMAKA, Species.HEATMOR ], Type.FIRE),
[TrainerType.CRESS]: new TrainerConfig(++t).initForGymLeader([ Species.PANPOUR, Species.BASCULIN, Species.TYMPOLE ], Type.WATER),
[TrainerType.CHEREN]: new TrainerConfig(++t).initForGymLeader([ Species.LILLIPUP, Species.MINCCINO, Species.PATRAT ], Type.NORMAL),
[TrainerType.LENORA]: new TrainerConfig(++t).initForGymLeader([ Species.KANGASKHAN, Species.DEERLING, Species.AUDINO ], Type.NORMAL),
[TrainerType.ROXIE]: new TrainerConfig(++t).initForGymLeader([ Species.VENIPEDE, Species.TRUBBISH, Species.SKORUPI ], Type.POISON),
[TrainerType.BURGH]: new TrainerConfig(++t).initForGymLeader([ Species.SEWADDLE, Species.SHELMET, Species.KARRABLAST ], Type.BUG),
[TrainerType.ELESA]: new TrainerConfig(++t).initForGymLeader([ Species.EMOLGA, Species.BLITZLE, Species.JOLTIK ], Type.ELECTRIC),
[TrainerType.CLAY]: new TrainerConfig(++t).initForGymLeader([ Species.DRILBUR, Species.SANDILE, Species.GOLETT ], Type.GROUND),
[TrainerType.SKYLA]: new TrainerConfig(++t).initForGymLeader([ Species.DUCKLETT, Species.WOOBAT, Species.RUFFLET ], Type.FLYING),
[TrainerType.BRYCEN]: new TrainerConfig(++t).initForGymLeader([ Species.CRYOGONAL, Species.VANILLITE, Species.CUBCHOO ], Type.ICE),
[TrainerType.DRAYDEN]: new TrainerConfig(++t).initForGymLeader([ Species.DRUDDIGON, Species.AXEW, Species.DEINO ], Type.DRAGON),
[TrainerType.MARLON]: new TrainerConfig(++t).initForGymLeader([ Species.WAILMER, Species.FRILLISH, Species.TIRTOUGA ], Type.WATER),
[TrainerType.VIOLA]: new TrainerConfig(++t).initForGymLeader([ Species.SURSKIT, Species.SCATTERBUG ], Type.BUG),
[TrainerType.GRANT]: new TrainerConfig(++t).initForGymLeader([ Species.AMAURA, Species.TYRUNT ], Type.ROCK),
[TrainerType.KORRINA]: new TrainerConfig(++t).initForGymLeader([ Species.HAWLUCHA, Species.LUCARIO, Species.MIENFOO ], Type.FIGHTING),
[TrainerType.RAMOS]: new TrainerConfig(++t).initForGymLeader([ Species.SKIDDO, Species.HOPPIP, Species.BELLSPROUT ], Type.GRASS),
[TrainerType.CLEMONT]: new TrainerConfig(++t).initForGymLeader([ Species.HELIOPTILE, Species.MAGNEMITE, Species.EMOLGA ], Type.ELECTRIC),
[TrainerType.VALERIE]: new TrainerConfig(++t).initForGymLeader([ Species.SYLVEON, Species.MAWILE, Species.MR_MIME ], Type.FAIRY),
[TrainerType.OLYMPIA]: new TrainerConfig(++t).initForGymLeader([ Species.ESPURR, Species.SIGILYPH, Species.SLOWKING ], Type.PSYCHIC),
[TrainerType.WULFRIC]: new TrainerConfig(++t).initForGymLeader([ Species.BERGMITE, Species.SNOVER, Species.CRYOGONAL ], Type.ICE),
[TrainerType.MILO]: new TrainerConfig(++t).initForGymLeader([ Species.GOSSIFLEUR, Species.APPLIN, Species.BOUNSWEET ], Type.GRASS),
[TrainerType.NESSA]: new TrainerConfig(++t).initForGymLeader([ Species.CHEWTLE, Species.ARROKUDA, Species.WIMPOD ], Type.WATER),
[TrainerType.KABU]: new TrainerConfig(++t).initForGymLeader([ Species.SIZZLIPEDE, Species.VULPIX, Species.TORKOAL ], Type.FIRE),
[TrainerType.BEA]: new TrainerConfig(++t).initForGymLeader([ Species.GALAR_FARFETCHD, Species.MACHOP, Species.CLOBBOPUS ], Type.FIGHTING),
[TrainerType.ALLISTER]: new TrainerConfig(++t).initForGymLeader([ Species.GALAR_YAMASK, Species.GALAR_CORSOLA, Species.GASTLY ], Type.GHOST),
[TrainerType.OPAL]: new TrainerConfig(++t).initForGymLeader([ Species.MILCERY, Species.TOGETIC, Species.GALAR_WEEZING ], Type.FAIRY),
[TrainerType.BEDE]: new TrainerConfig(++t).initForGymLeader([ Species.HATENNA, Species.GALAR_PONYTA, Species.GARDEVOIR ], Type.FAIRY),
[TrainerType.GORDIE]: new TrainerConfig(++t).initForGymLeader([ Species.ROLYCOLY, Species.STONJOURNER, Species.BINACLE ], Type.ROCK),
[TrainerType.MELONY]: new TrainerConfig(++t).initForGymLeader([ Species.SNOM, Species.GALAR_DARUMAKA, Species.GALAR_MR_MIME ], Type.ICE),
[TrainerType.PIERS]: new TrainerConfig(++t).initForGymLeader([ Species.GALAR_ZIGZAGOON, Species.SCRAGGY, Species.INKAY ], Type.DARK),
[TrainerType.MARNIE]: new TrainerConfig(++t).initForGymLeader([ Species.IMPIDIMP, Species.PURRLOIN, Species.MORPEKO ], Type.DARK),
[TrainerType.RAIHAN]: new TrainerConfig(++t).initForGymLeader([ Species.DURALUDON, Species.TURTONATOR, Species.GOOMY ], Type.DRAGON),
[TrainerType.KATY]: new TrainerConfig(++t).initForGymLeader([ Species.NYMBLE, Species.TAROUNTULA, Species.HERACROSS ], Type.BUG),
[TrainerType.BRASSIUS]: new TrainerConfig(++t).initForGymLeader([ Species.SMOLIV, Species.SHROOMISH, Species.ODDISH ], Type.GRASS),
[TrainerType.IONO]: new TrainerConfig(++t).initForGymLeader([ Species.TADBULB, Species.WATTREL, Species.VOLTORB ], Type.ELECTRIC),
[TrainerType.KOFU]: new TrainerConfig(++t).initForGymLeader([ Species.VELUZA, Species.WIGLETT, Species.WINGULL ], Type.WATER),
[TrainerType.LARRY]: new TrainerConfig(++t).initForGymLeader([ Species.STARLY, Species.DUNSPARCE, Species.KOMALA ], Type.NORMAL),
[TrainerType.RYME]: new TrainerConfig(++t).initForGymLeader([ Species.GREAVARD, Species.SHUPPET, Species.MIMIKYU ], Type.GHOST),
[TrainerType.TULIP]: new TrainerConfig(++t).initForGymLeader([ Species.GIRAFARIG, Species.FLITTLE, Species.RALTS ], Type.PSYCHIC),
[TrainerType.GRUSHA]: new TrainerConfig(++t).initForGymLeader([ Species.CETODDLE, Species.ALOLA_VULPIX, Species.CUBCHOO ], Type.ICE),
[TrainerType.BROCK]: new TrainerConfig((t = TrainerType.BROCK)).initForGymLeader([Species.GEODUDE, Species.ONIX], Type.ROCK).setBattleBgm('battle_kanto_gym'),
[TrainerType.MISTY]: new TrainerConfig(++t).initForGymLeader([Species.STARYU, Species.PSYDUCK], Type.WATER).setBattleBgm('battle_kanto_gym'),
[TrainerType.LT_SURGE]: new TrainerConfig(++t).initForGymLeader([Species.VOLTORB, Species.PIKACHU, Species.ELECTABUZZ], Type.ELECTRIC).setBattleBgm('battle_kanto_gym'),
[TrainerType.ERIKA]: new TrainerConfig(++t).initForGymLeader([Species.ODDISH, Species.BELLSPROUT, Species.TANGELA, Species.HOPPIP], Type.GRASS).setBattleBgm('battle_kanto_gym'),
[TrainerType.JANINE]: new TrainerConfig(++t).initForGymLeader([Species.VENONAT, Species.SPINARAK, Species.ZUBAT], Type.POISON).setBattleBgm('battle_kanto_gym'),
[TrainerType.SABRINA]: new TrainerConfig(++t).initForGymLeader([Species.ABRA, Species.MR_MIME, Species.ESPEON], Type.PSYCHIC).setBattleBgm('battle_kanto_gym'),
[TrainerType.BLAINE]: new TrainerConfig(++t).initForGymLeader([Species.GROWLITHE, Species.PONYTA, Species.MAGMAR], Type.FIRE).setBattleBgm('battle_kanto_gym'),
[TrainerType.GIOVANNI]: new TrainerConfig(++t).initForGymLeader([Species.SANDILE, Species.MURKROW, Species.NIDORAN_M, Species.NIDORAN_F], Type.DARK).setBattleBgm('battle_kanto_gym'),
[TrainerType.FALKNER]: new TrainerConfig(++t).initForGymLeader([Species.PIDGEY, Species.HOOTHOOT, Species.DODUO], Type.FLYING).setBattleBgm('battle_johto_gym'),
[TrainerType.BUGSY]: new TrainerConfig(++t).initForGymLeader([Species.SCYTHER, Species.HERACROSS, Species.SHUCKLE, Species.PINSIR], Type.BUG).setBattleBgm('battle_johto_gym'),
[TrainerType.WHITNEY]: new TrainerConfig(++t).initForGymLeader([Species.GIRAFARIG, Species.MILTANK], Type.NORMAL).setBattleBgm('battle_johto_gym'),
[TrainerType.MORTY]: new TrainerConfig(++t).initForGymLeader([Species.GASTLY, Species.MISDREAVUS, Species.SABLEYE], Type.GHOST).setBattleBgm('battle_johto_gym'),
[TrainerType.CHUCK]: new TrainerConfig(++t).initForGymLeader([Species.POLIWRATH, Species.MANKEY], Type.FIGHTING).setBattleBgm('battle_johto_gym'),
[TrainerType.JASMINE]: new TrainerConfig(++t).initForGymLeader([Species.MAGNEMITE, Species.STEELIX], Type.STEEL).setBattleBgm('battle_johto_gym'),
[TrainerType.PRYCE]: new TrainerConfig(++t).initForGymLeader([Species.SEEL, Species.SWINUB], Type.ICE).setBattleBgm('battle_johto_gym'),
[TrainerType.CLAIR]: new TrainerConfig(++t).initForGymLeader([Species.DRATINI, Species.HORSEA, Species.GYARADOS], Type.DRAGON).setBattleBgm('battle_johto_gym'),
[TrainerType.ROXANNE]: new TrainerConfig(++t).initForGymLeader([Species.GEODUDE, Species.NOSEPASS], Type.ROCK).setBattleBgm('battle_hoenn_gym'),
[TrainerType.BRAWLY]: new TrainerConfig(++t).initForGymLeader([Species.MACHOP, Species.MAKUHITA], Type.FIGHTING).setBattleBgm('battle_hoenn_gym'),
[TrainerType.WATTSON]: new TrainerConfig(++t).initForGymLeader([Species.MAGNEMITE, Species.VOLTORB, Species.ELECTRIKE], Type.ELECTRIC).setBattleBgm('battle_hoenn_gym'),
[TrainerType.FLANNERY]: new TrainerConfig(++t).initForGymLeader([Species.SLUGMA, Species.TORKOAL, Species.NUMEL], Type.FIRE).setBattleBgm('battle_hoenn_gym'),
[TrainerType.NORMAN]: new TrainerConfig(++t).initForGymLeader([Species.SLAKOTH, Species.SPINDA, Species.CHANSEY, Species.KANGASKHAN], Type.NORMAL).setBattleBgm('battle_hoenn_gym'),
[TrainerType.WINONA]: new TrainerConfig(++t).initForGymLeader([Species.SWABLU, Species.WINGULL, Species.TROPIUS, Species.SKARMORY], Type.FLYING).setBattleBgm('battle_hoenn_gym'),
[TrainerType.TATE]: new TrainerConfig(++t).initForGymLeader([Species.SOLROCK, Species.NATU, Species.CHIMECHO, Species.GALLADE], Type.PSYCHIC).setBattleBgm('battle_hoenn_gym'),
[TrainerType.LIZA]: new TrainerConfig(++t).initForGymLeader([Species.LUNATONE, Species.SPOINK, Species.BALTOY, Species.GARDEVOIR], Type.PSYCHIC).setBattleBgm('battle_hoenn_gym'),
[TrainerType.JUAN]: new TrainerConfig(++t).initForGymLeader([Species.HORSEA, Species.BARBOACH, Species.SPHEAL, Species.RELICANTH], Type.WATER).setBattleBgm('battle_hoenn_gym'),
[TrainerType.ROARK]: new TrainerConfig(++t).initForGymLeader([Species.CRANIDOS, Species.LARVITAR, Species.GEODUDE], Type.ROCK).setBattleBgm('battle_sinnoh_gym'),
[TrainerType.GARDENIA]: new TrainerConfig(++t).initForGymLeader([Species.ROSELIA, Species.TANGELA, Species.TURTWIG], Type.GRASS).setBattleBgm('battle_sinnoh_gym'),
[TrainerType.MAYLENE]: new TrainerConfig(++t).initForGymLeader([Species.LUCARIO, Species.MEDITITE, Species.CHIMCHAR], Type.FIGHTING).setBattleBgm('battle_sinnoh_gym'),
[TrainerType.CRASHER_WAKE]: new TrainerConfig(++t).initForGymLeader([Species.BUIZEL, Species.MAGIKARP, Species.PIPLUP], Type.WATER).setBattleBgm('battle_sinnoh_gym'),
[TrainerType.FANTINA]: new TrainerConfig(++t).initForGymLeader([Species.MISDREAVUS, Species.DRIFLOON, Species.SPIRITOMB], Type.GHOST).setBattleBgm('battle_sinnoh_gym'),
[TrainerType.BYRON]: new TrainerConfig(++t).initForGymLeader([Species.SHIELDON, Species.BRONZOR, Species.AGGRON], Type.STEEL).setBattleBgm('battle_sinnoh_gym'),
[TrainerType.CANDICE]: new TrainerConfig(++t).initForGymLeader([Species.SNEASEL, Species.SNOVER, Species.SNORUNT], Type.ICE).setBattleBgm('battle_sinnoh_gym'),
[TrainerType.VOLKNER]: new TrainerConfig(++t).initForGymLeader([Species.SHINX, Species.CHINCHOU, Species.ROTOM], Type.ELECTRIC).setBattleBgm('battle_sinnoh_gym'),
[TrainerType.CILAN]: new TrainerConfig(++t).initForGymLeader([Species.PANSAGE, Species.COTTONEE, Species.PETILIL], Type.GRASS),
[TrainerType.CHILI]: new TrainerConfig(++t).initForGymLeader([Species.PANSEAR, Species.DARUMAKA, Species.HEATMOR], Type.FIRE),
[TrainerType.CRESS]: new TrainerConfig(++t).initForGymLeader([Species.PANPOUR, Species.BASCULIN, Species.TYMPOLE], Type.WATER),
[TrainerType.CHEREN]: new TrainerConfig(++t).initForGymLeader([Species.LILLIPUP, Species.MINCCINO, Species.PATRAT], Type.NORMAL),
[TrainerType.LENORA]: new TrainerConfig(++t).initForGymLeader([Species.KANGASKHAN, Species.DEERLING, Species.AUDINO], Type.NORMAL),
[TrainerType.ROXIE]: new TrainerConfig(++t).initForGymLeader([Species.VENIPEDE, Species.TRUBBISH, Species.SKORUPI], Type.POISON),
[TrainerType.BURGH]: new TrainerConfig(++t).initForGymLeader([Species.SEWADDLE, Species.SHELMET, Species.KARRABLAST], Type.BUG),
[TrainerType.ELESA]: new TrainerConfig(++t).initForGymLeader([Species.EMOLGA, Species.BLITZLE, Species.JOLTIK], Type.ELECTRIC),
[TrainerType.CLAY]: new TrainerConfig(++t).initForGymLeader([Species.DRILBUR, Species.SANDILE, Species.GOLETT], Type.GROUND),
[TrainerType.SKYLA]: new TrainerConfig(++t).initForGymLeader([Species.DUCKLETT, Species.WOOBAT, Species.RUFFLET], Type.FLYING),
[TrainerType.BRYCEN]: new TrainerConfig(++t).initForGymLeader([Species.CRYOGONAL, Species.VANILLITE, Species.CUBCHOO], Type.ICE),
[TrainerType.DRAYDEN]: new TrainerConfig(++t).initForGymLeader([Species.DRUDDIGON, Species.AXEW, Species.DEINO], Type.DRAGON),
[TrainerType.MARLON]: new TrainerConfig(++t).initForGymLeader([Species.WAILMER, Species.FRILLISH, Species.TIRTOUGA], Type.WATER),
[TrainerType.VIOLA]: new TrainerConfig(++t).initForGymLeader([Species.SURSKIT, Species.SCATTERBUG], Type.BUG),
[TrainerType.GRANT]: new TrainerConfig(++t).initForGymLeader([Species.AMAURA, Species.TYRUNT], Type.ROCK),
[TrainerType.KORRINA]: new TrainerConfig(++t).initForGymLeader([Species.HAWLUCHA, Species.LUCARIO, Species.MIENFOO], Type.FIGHTING),
[TrainerType.RAMOS]: new TrainerConfig(++t).initForGymLeader([Species.SKIDDO, Species.HOPPIP, Species.BELLSPROUT], Type.GRASS),
[TrainerType.CLEMONT]: new TrainerConfig(++t).initForGymLeader([Species.HELIOPTILE, Species.MAGNEMITE, Species.EMOLGA], Type.ELECTRIC),
[TrainerType.VALERIE]: new TrainerConfig(++t).initForGymLeader([Species.SYLVEON, Species.MAWILE, Species.MR_MIME], Type.FAIRY),
[TrainerType.OLYMPIA]: new TrainerConfig(++t).initForGymLeader([Species.ESPURR, Species.SIGILYPH, Species.SLOWKING], Type.PSYCHIC),
[TrainerType.WULFRIC]: new TrainerConfig(++t).initForGymLeader([Species.BERGMITE, Species.SNOVER, Species.CRYOGONAL], Type.ICE),
[TrainerType.MILO]: new TrainerConfig(++t).initForGymLeader([Species.GOSSIFLEUR, Species.APPLIN, Species.BOUNSWEET], Type.GRASS),
[TrainerType.NESSA]: new TrainerConfig(++t).initForGymLeader([Species.CHEWTLE, Species.ARROKUDA, Species.WIMPOD], Type.WATER),
[TrainerType.KABU]: new TrainerConfig(++t).initForGymLeader([Species.SIZZLIPEDE, Species.VULPIX, Species.TORKOAL], Type.FIRE),
[TrainerType.BEA]: new TrainerConfig(++t).initForGymLeader([Species.GALAR_FARFETCHD, Species.MACHOP, Species.CLOBBOPUS], Type.FIGHTING),
[TrainerType.ALLISTER]: new TrainerConfig(++t).initForGymLeader([Species.GALAR_YAMASK, Species.GALAR_CORSOLA, Species.GASTLY], Type.GHOST),
[TrainerType.OPAL]: new TrainerConfig(++t).initForGymLeader([Species.MILCERY, Species.TOGETIC, Species.GALAR_WEEZING], Type.FAIRY),
[TrainerType.BEDE]: new TrainerConfig(++t).initForGymLeader([Species.HATENNA, Species.GALAR_PONYTA, Species.GARDEVOIR], Type.FAIRY),
[TrainerType.GORDIE]: new TrainerConfig(++t).initForGymLeader([Species.ROLYCOLY, Species.STONJOURNER, Species.BINACLE], Type.ROCK),
[TrainerType.MELONY]: new TrainerConfig(++t).initForGymLeader([Species.SNOM, Species.GALAR_DARUMAKA, Species.GALAR_MR_MIME], Type.ICE),
[TrainerType.PIERS]: new TrainerConfig(++t).initForGymLeader([Species.GALAR_ZIGZAGOON, Species.SCRAGGY, Species.INKAY], Type.DARK),
[TrainerType.MARNIE]: new TrainerConfig(++t).initForGymLeader([Species.IMPIDIMP, Species.PURRLOIN, Species.MORPEKO], Type.DARK),
[TrainerType.RAIHAN]: new TrainerConfig(++t).initForGymLeader([Species.DURALUDON, Species.TURTONATOR, Species.GOOMY], Type.DRAGON),
[TrainerType.KATY]: new TrainerConfig(++t).initForGymLeader([Species.NYMBLE, Species.TAROUNTULA, Species.HERACROSS], Type.BUG),
[TrainerType.BRASSIUS]: new TrainerConfig(++t).initForGymLeader([Species.SMOLIV, Species.SHROOMISH, Species.ODDISH], Type.GRASS),
[TrainerType.IONO]: new TrainerConfig(++t).initForGymLeader([Species.TADBULB, Species.WATTREL, Species.VOLTORB], Type.ELECTRIC),
[TrainerType.KOFU]: new TrainerConfig(++t).initForGymLeader([Species.VELUZA, Species.WIGLETT, Species.WINGULL], Type.WATER),
[TrainerType.LARRY]: new TrainerConfig(++t).initForGymLeader([Species.STARLY, Species.DUNSPARCE, Species.KOMALA], Type.NORMAL),
[TrainerType.RYME]: new TrainerConfig(++t).initForGymLeader([Species.GREAVARD, Species.SHUPPET, Species.MIMIKYU], Type.GHOST),
[TrainerType.TULIP]: new TrainerConfig(++t).initForGymLeader([Species.GIRAFARIG, Species.FLITTLE, Species.RALTS], Type.PSYCHIC),
[TrainerType.GRUSHA]: new TrainerConfig(++t).initForGymLeader([Species.CETODDLE, Species.ALOLA_VULPIX, Species.CUBCHOO], Type.ICE),
[TrainerType.LORELEI]: new TrainerConfig((t = TrainerType.LORELEI)).initForEliteFour([ Species.SLOWBRO, Species.LAPRAS, Species.DEWGONG, Species.ALOLA_SANDSLASH ], Type.ICE),
[TrainerType.BRUNO]: new TrainerConfig(++t).initForEliteFour([ Species.ONIX, Species.HITMONCHAN, Species.HITMONLEE, Species.ALOLA_GOLEM ], Type.FIGHTING),
[TrainerType.AGATHA]: new TrainerConfig(++t).initForEliteFour([ Species.GENGAR, Species.ARBOK, Species.CROBAT, Species.ALOLA_MAROWAK ], Type.GHOST),
[TrainerType.LANCE]: new TrainerConfig(++t).initForEliteFour([ Species.DRAGONITE, Species.GYARADOS, Species.AERODACTYL, Species.ALOLA_EXEGGUTOR ], Type.DRAGON),
[TrainerType.WILL]: new TrainerConfig(++t).initForEliteFour([ Species.XATU, Species.JYNX, Species.SLOWBRO, Species.EXEGGUTOR ], Type.PSYCHIC),
[TrainerType.KOGA]: new TrainerConfig(++t).initForEliteFour([ Species.WEEZING, Species.VENOMOTH, Species.CROBAT, Species.TENTACRUEL ], Type.POISON),
[TrainerType.KAREN]: new TrainerConfig(++t).initForEliteFour([ Species.UMBREON, Species.HONCHKROW, Species.HOUNDOOM, Species.WEAVILE ], Type.DARK),
[TrainerType.SIDNEY]: new TrainerConfig(++t).initForEliteFour([ Species.SHIFTRY, Species.SHARPEDO, Species.ABSOL, Species.ZOROARK ], Type.DARK),
[TrainerType.PHOEBE]: new TrainerConfig(++t).initForEliteFour([ Species.SABLEYE, Species.DUSKNOIR, Species.BANETTE, Species.CHANDELURE ], Type.GHOST),
[TrainerType.GLACIA]: new TrainerConfig(++t).initForEliteFour([ Species.GLALIE, Species.WALREIN, Species.FROSLASS, Species.ABOMASNOW ], Type.ICE),
[TrainerType.DRAKE]: new TrainerConfig(++t).initForEliteFour([ Species.ALTARIA, Species.SALAMENCE, Species.FLYGON, Species.KINGDRA ], Type.DRAGON),
[TrainerType.AARON]: new TrainerConfig(++t).initForEliteFour([ Species.SCIZOR, Species.HERACROSS, Species.VESPIQUEN, Species.DRAPION ], Type.BUG),
[TrainerType.BERTHA]: new TrainerConfig(++t).initForEliteFour([ Species.WHISCASH, Species.HIPPOWDON, Species.GLISCOR, Species.RHYPERIOR ], Type.GROUND),
[TrainerType.FLINT]: new TrainerConfig(++t).initForEliteFour([ Species.FLAREON, Species.HOUNDOOM, Species.RAPIDASH, Species.INFERNAPE ], Type.FIRE),
[TrainerType.LUCIAN]: new TrainerConfig(++t).initForEliteFour([ Species.MR_MIME, Species.GALLADE, Species.BRONZONG, Species.ALAKAZAM ], Type.PSYCHIC),
[TrainerType.SHAUNTAL]: new TrainerConfig(++t).initForEliteFour([ Species.COFAGRIGUS, Species.CHANDELURE, Species.GOLURK, Species.DRIFBLIM ], Type.GHOST),
[TrainerType.MARSHAL]: new TrainerConfig(++t).initForEliteFour([ Species.TIMBURR, Species.MIENFOO, Species.THROH, Species.SAWK ], Type.FIGHTING),
[TrainerType.GRIMSLEY]: new TrainerConfig(++t).initForEliteFour([ Species.LIEPARD, Species.KINGAMBIT, Species.SCRAFTY, Species.KROOKODILE ], Type.DARK),
[TrainerType.CAITLIN]: new TrainerConfig(++t).initForEliteFour([ Species.MUSHARNA, Species.GOTHITELLE, Species.SIGILYPH, Species.REUNICLUS ], Type.PSYCHIC),
[TrainerType.MALVA]: new TrainerConfig(++t).initForEliteFour([ Species.PYROAR, Species.TORKOAL, Species.CHANDELURE, Species.TALONFLAME ], Type.FIRE),
[TrainerType.SIEBOLD]: new TrainerConfig(++t).initForEliteFour([ Species.CLAWITZER, Species.GYARADOS, Species.BARBARACLE, Species.STARMIE ], Type.WATER),
[TrainerType.WIKSTROM]: new TrainerConfig(++t).initForEliteFour([ Species.KLEFKI, Species.PROBOPASS, Species.SCIZOR, Species.AEGISLASH ], Type.STEEL),
[TrainerType.DRASNA]: new TrainerConfig(++t).initForEliteFour([ Species.DRAGALGE, Species.DRUDDIGON, Species.ALTARIA, Species.NOIVERN ], Type.DRAGON),
[TrainerType.HALA]: new TrainerConfig(++t).initForEliteFour([ Species.HARIYAMA, Species.BEWEAR, Species.CRABOMINABLE, Species.POLIWRATH ], Type.FIGHTING),
[TrainerType.MOLAYNE]: new TrainerConfig(++t).initForEliteFour([ Species.KLEFKI, Species.MAGNEZONE, Species.METAGROSS, Species.ALOLA_DUGTRIO ], Type.STEEL),
[TrainerType.OLIVIA]: new TrainerConfig(++t).initForEliteFour([ Species.ARMALDO, Species.CRADILY, Species.ALOLA_GOLEM, Species.LYCANROC ], Type.ROCK),
[TrainerType.ACEROLA]: new TrainerConfig(++t).initForEliteFour([ Species.BANETTE, Species.DRIFBLIM, Species.DHELMISE, Species.PALOSSAND ], Type.GHOST),
[TrainerType.KAHILI]: new TrainerConfig(++t).initForEliteFour([ Species.BRAVIARY, Species.HAWLUCHA, Species.ORICORIO, Species.TOUCANNON ], Type.FLYING),
[TrainerType.RIKA]: new TrainerConfig(++t).initForEliteFour([ Species. WHISCASH, Species.DONPHAN, Species.CAMERUPT, Species.CLODSIRE ], Type.GROUND),
[TrainerType.POPPY]: new TrainerConfig(++t).initForEliteFour([ Species.COPPERAJAH, Species.BRONZONG, Species.CORVIKNIGHT, Species.TINKATON ], Type.STEEL),
[TrainerType.LARRY_ELITE]: new TrainerConfig(++t).initForEliteFour([ Species.STARAPTOR, Species.FLAMIGO, Species.ALTARIA, Species.TROPIUS ], Type.NORMAL, Type.FLYING),
[TrainerType.HASSEL]: new TrainerConfig(++t).initForEliteFour([ Species.NOIVERN, Species.HAXORUS, Species.DRAGALGE, Species.BAXCALIBUR ], Type.DRAGON),
[TrainerType.CRISPIN]: new TrainerConfig(++t).initForEliteFour([ Species.TALONFLAME, Species.CAMERUPT, Species.MAGMORTAR, Species.BLAZIKEN ], Type.FIRE),
[TrainerType.AMARYS]: new TrainerConfig(++t).initForEliteFour([ Species.SKARMORY, Species.EMPOLEON, Species.SCIZOR, Species.METAGROSS ], Type.STEEL),
[TrainerType.LACEY]: new TrainerConfig(++t).initForEliteFour([ Species.EXCADRILL, Species.PRIMARINA, Species.ALCREMIE, Species.GALAR_SLOWBRO ], Type.FAIRY),
[TrainerType.DRAYTON]: new TrainerConfig(++t).initForEliteFour([ Species.DRAGONITE, Species.ARCHALUDON, Species.FLYGON, Species.SCEPTILE ], Type.DRAGON),
[TrainerType.LORELEI]: new TrainerConfig((t = TrainerType.LORELEI)).initForEliteFour([Species.SLOWBRO, Species.LAPRAS, Species.DEWGONG, Species.ALOLA_SANDSLASH], Type.ICE),
[TrainerType.BRUNO]: new TrainerConfig(++t).initForEliteFour([Species.ONIX, Species.HITMONCHAN, Species.HITMONLEE, Species.ALOLA_GOLEM], Type.FIGHTING),
[TrainerType.AGATHA]: new TrainerConfig(++t).initForEliteFour([Species.GENGAR, Species.ARBOK, Species.CROBAT, Species.ALOLA_MAROWAK], Type.GHOST),
[TrainerType.LANCE]: new TrainerConfig(++t).initForEliteFour([Species.DRAGONITE, Species.GYARADOS, Species.AERODACTYL, Species.ALOLA_EXEGGUTOR], Type.DRAGON),
[TrainerType.WILL]: new TrainerConfig(++t).initForEliteFour([Species.XATU, Species.JYNX, Species.SLOWBRO, Species.EXEGGUTOR], Type.PSYCHIC),
[TrainerType.KOGA]: new TrainerConfig(++t).initForEliteFour([Species.WEEZING, Species.VENOMOTH, Species.CROBAT, Species.TENTACRUEL], Type.POISON),
[TrainerType.KAREN]: new TrainerConfig(++t).initForEliteFour([Species.UMBREON, Species.HONCHKROW, Species.HOUNDOOM, Species.WEAVILE], Type.DARK),
[TrainerType.SIDNEY]: new TrainerConfig(++t).initForEliteFour([Species.SHIFTRY, Species.SHARPEDO, Species.ABSOL, Species.ZOROARK], Type.DARK),
[TrainerType.PHOEBE]: new TrainerConfig(++t).initForEliteFour([Species.SABLEYE, Species.DUSKNOIR, Species.BANETTE, Species.CHANDELURE], Type.GHOST),
[TrainerType.GLACIA]: new TrainerConfig(++t).initForEliteFour([Species.GLALIE, Species.WALREIN, Species.FROSLASS, Species.ABOMASNOW], Type.ICE),
[TrainerType.DRAKE]: new TrainerConfig(++t).initForEliteFour([Species.ALTARIA, Species.SALAMENCE, Species.FLYGON, Species.KINGDRA], Type.DRAGON),
[TrainerType.AARON]: new TrainerConfig(++t).initForEliteFour([Species.SCIZOR, Species.HERACROSS, Species.VESPIQUEN, Species.DRAPION], Type.BUG),
[TrainerType.BERTHA]: new TrainerConfig(++t).initForEliteFour([Species.WHISCASH, Species.HIPPOWDON, Species.GLISCOR, Species.RHYPERIOR], Type.GROUND),
[TrainerType.FLINT]: new TrainerConfig(++t).initForEliteFour([Species.FLAREON, Species.HOUNDOOM, Species.RAPIDASH, Species.INFERNAPE], Type.FIRE),
[TrainerType.LUCIAN]: new TrainerConfig(++t).initForEliteFour([Species.MR_MIME, Species.GALLADE, Species.BRONZONG, Species.ALAKAZAM], Type.PSYCHIC),
[TrainerType.SHAUNTAL]: new TrainerConfig(++t).initForEliteFour([Species.COFAGRIGUS, Species.CHANDELURE, Species.GOLURK, Species.DRIFBLIM], Type.GHOST),
[TrainerType.MARSHAL]: new TrainerConfig(++t).initForEliteFour([Species.TIMBURR, Species.MIENFOO, Species.THROH, Species.SAWK], Type.FIGHTING),
[TrainerType.GRIMSLEY]: new TrainerConfig(++t).initForEliteFour([Species.LIEPARD, Species.KINGAMBIT, Species.SCRAFTY, Species.KROOKODILE], Type.DARK),
[TrainerType.CAITLIN]: new TrainerConfig(++t).initForEliteFour([Species.MUSHARNA, Species.GOTHITELLE, Species.SIGILYPH, Species.REUNICLUS], Type.PSYCHIC),
[TrainerType.MALVA]: new TrainerConfig(++t).initForEliteFour([Species.PYROAR, Species.TORKOAL, Species.CHANDELURE, Species.TALONFLAME], Type.FIRE),
[TrainerType.SIEBOLD]: new TrainerConfig(++t).initForEliteFour([Species.CLAWITZER, Species.GYARADOS, Species.BARBARACLE, Species.STARMIE], Type.WATER),
[TrainerType.WIKSTROM]: new TrainerConfig(++t).initForEliteFour([Species.KLEFKI, Species.PROBOPASS, Species.SCIZOR, Species.AEGISLASH], Type.STEEL),
[TrainerType.DRASNA]: new TrainerConfig(++t).initForEliteFour([Species.DRAGALGE, Species.DRUDDIGON, Species.ALTARIA, Species.NOIVERN], Type.DRAGON),
[TrainerType.HALA]: new TrainerConfig(++t).initForEliteFour([Species.HARIYAMA, Species.BEWEAR, Species.CRABOMINABLE, Species.POLIWRATH], Type.FIGHTING),
[TrainerType.MOLAYNE]: new TrainerConfig(++t).initForEliteFour([Species.KLEFKI, Species.MAGNEZONE, Species.METAGROSS, Species.ALOLA_DUGTRIO], Type.STEEL),
[TrainerType.OLIVIA]: new TrainerConfig(++t).initForEliteFour([Species.ARMALDO, Species.CRADILY, Species.ALOLA_GOLEM, Species.LYCANROC], Type.ROCK),
[TrainerType.ACEROLA]: new TrainerConfig(++t).initForEliteFour([Species.BANETTE, Species.DRIFBLIM, Species.DHELMISE, Species.PALOSSAND], Type.GHOST),
[TrainerType.KAHILI]: new TrainerConfig(++t).initForEliteFour([Species.BRAVIARY, Species.HAWLUCHA, Species.ORICORIO, Species.TOUCANNON], Type.FLYING),
[TrainerType.RIKA]: new TrainerConfig(++t).initForEliteFour([Species.WHISCASH, Species.DONPHAN, Species.CAMERUPT, Species.CLODSIRE], Type.GROUND),
[TrainerType.POPPY]: new TrainerConfig(++t).initForEliteFour([Species.COPPERAJAH, Species.BRONZONG, Species.CORVIKNIGHT, Species.TINKATON], Type.STEEL),
[TrainerType.LARRY_ELITE]: new TrainerConfig(++t).initForEliteFour([Species.STARAPTOR, Species.FLAMIGO, Species.ALTARIA, Species.TROPIUS], Type.NORMAL, Type.FLYING),
[TrainerType.HASSEL]: new TrainerConfig(++t).initForEliteFour([Species.NOIVERN, Species.HAXORUS, Species.DRAGALGE, Species.BAXCALIBUR], Type.DRAGON),
[TrainerType.CRISPIN]: new TrainerConfig(++t).initForEliteFour([Species.TALONFLAME, Species.CAMERUPT, Species.MAGMORTAR, Species.BLAZIKEN], Type.FIRE),
[TrainerType.AMARYS]: new TrainerConfig(++t).initForEliteFour([Species.SKARMORY, Species.EMPOLEON, Species.SCIZOR, Species.METAGROSS], Type.STEEL),
[TrainerType.LACEY]: new TrainerConfig(++t).initForEliteFour([Species.EXCADRILL, Species.PRIMARINA, Species.ALCREMIE, Species.GALAR_SLOWBRO], Type.FAIRY),
[TrainerType.DRAYTON]: new TrainerConfig(++t).initForEliteFour([Species.DRAGONITE, Species.ARCHALUDON, Species.FLYGON, Species.SCEPTILE], Type.DRAGON),
[TrainerType.BLUE]: new TrainerConfig((t = TrainerType.BLUE)).initForChampion([ Species.GYARADOS, Species.MEWTWO, Species.ARCANINE, Species.ALAKAZAM, Species.PIDGEOT ]).setBattleBgm('battle_kanto_champion'),
[TrainerType.RED]: new TrainerConfig(++t).initForChampion([ Species.CHARIZARD, [ Species.LUGIA, Species.HO_OH ], Species.SNORLAX, Species.RAICHU, Species.ESPEON ]).setBattleBgm('battle_johto_champion'),
[TrainerType.LANCE_CHAMPION]: new TrainerConfig(++t).initForChampion([ Species.DRAGONITE, Species.ZYGARDE, Species.AERODACTYL, Species.KINGDRA, Species.ALOLA_EXEGGUTOR ]).setBattleBgm('battle_johto_champion'),
[TrainerType.STEVEN]: new TrainerConfig(++t).initForChampion([ Species.METAGROSS, [ Species.DIALGA, Species.PALKIA ], Species.SKARMORY, Species.AGGRON, Species.CARBINK ]).setBattleBgm('battle_hoenn_champion'),
[TrainerType.WALLACE]: new TrainerConfig(++t).initForChampion([ Species.MILOTIC, Species.KYOGRE, Species.WHISCASH, Species.WALREIN, Species.LUDICOLO ]).setBattleBgm('battle_hoenn_champion'),
[TrainerType.CYNTHIA]: new TrainerConfig(++t).initForChampion([ Species.SPIRITOMB, Species.GIRATINA, Species.GARCHOMP, Species.MILOTIC, Species.LUCARIO, Species.TOGEKISS ]).setBattleBgm('battle_sinnoh_champion'),
[TrainerType.ALDER]: new TrainerConfig(++t).initForChampion([ Species.VOLCARONA, Species.GROUDON, Species.BOUFFALANT, Species.ACCELGOR, Species.CONKELDURR ]),
[TrainerType.IRIS]: new TrainerConfig(++t).initForChampion([ Species.HAXORUS, Species.YVELTAL, Species.DRUDDIGON, Species.ARON, Species.LAPRAS ]).setBattleBgm('battle_champion_iris'),
[TrainerType.DIANTHA]: new TrainerConfig(++t).initForChampion([ Species.HAWLUCHA, Species.XERNEAS, Species.GOURGEIST, Species.GOODRA, Species.GARDEVOIR ]),
[TrainerType.HAU]: new TrainerConfig(++t).initForChampion([ Species.ALOLA_RAICHU, [ Species.SOLGALEO, Species.LUNALA ], Species.NOIVERN, [ Species.DECIDUEYE, Species.INCINEROAR, Species.PRIMARINA ], Species.CRABOMINABLE ]),
[TrainerType.GEETA]: new TrainerConfig(++t).initForChampion([ Species.GLIMMORA, Species.MIRAIDON, Species.ESPATHRA, Species.VELUZA, Species.KINGAMBIT ]),
[TrainerType.NEMONA]: new TrainerConfig(++t).initForChampion([ Species.LYCANROC, Species.KORAIDON, Species.KOMMO_O, Species.PAWMOT, Species.DUSKNOIR ]),
[TrainerType.KIERAN]: new TrainerConfig(++t).initForChampion([ Species.POLITOED, [ Species.OGERPON, Species.TERAPAGOS ], Species.HYDRAPPLE, Species.PORYGON_Z, Species.GRIMMSNARL ]),
[TrainerType.LEON]: new TrainerConfig(++t).initForChampion([ Species.DRAGAPULT, [ Species.ZACIAN, Species.ZAMAZENTA ], Species.SEISMITOAD, Species.AEGISLASH, Species.CHARIZARD ]),
[TrainerType.BLUE]: new TrainerConfig((t = TrainerType.BLUE)).initForChampion([Species.GYARADOS, Species.MEWTWO, Species.ARCANINE, Species.ALAKAZAM, Species.PIDGEOT]).setBattleBgm('battle_kanto_champion'),
[TrainerType.RED]: new TrainerConfig(++t).initForChampion([Species.CHARIZARD, [Species.LUGIA, Species.HO_OH], Species.SNORLAX, Species.RAICHU, Species.ESPEON]).setBattleBgm('battle_johto_champion'),
[TrainerType.LANCE_CHAMPION]: new TrainerConfig(++t).initForChampion([Species.DRAGONITE, Species.ZYGARDE, Species.AERODACTYL, Species.KINGDRA, Species.ALOLA_EXEGGUTOR]).setBattleBgm('battle_johto_champion'),
[TrainerType.STEVEN]: new TrainerConfig(++t).initForChampion([Species.METAGROSS, [Species.DIALGA, Species.PALKIA], Species.SKARMORY, Species.AGGRON, Species.CARBINK]).setBattleBgm('battle_hoenn_champion'),
[TrainerType.WALLACE]: new TrainerConfig(++t).initForChampion([Species.MILOTIC, Species.KYOGRE, Species.WHISCASH, Species.WALREIN, Species.LUDICOLO]).setBattleBgm('battle_hoenn_champion'),
[TrainerType.CYNTHIA]: new TrainerConfig(++t).initForChampion([Species.SPIRITOMB, Species.GIRATINA, Species.GARCHOMP, Species.MILOTIC, Species.LUCARIO, Species.TOGEKISS]).setBattleBgm('battle_sinnoh_champion'),
[TrainerType.ALDER]: new TrainerConfig(++t).initForChampion([Species.VOLCARONA, Species.GROUDON, Species.BOUFFALANT, Species.ACCELGOR, Species.CONKELDURR]),
[TrainerType.IRIS]: new TrainerConfig(++t).initForChampion([Species.HAXORUS, Species.YVELTAL, Species.DRUDDIGON, Species.ARON, Species.LAPRAS]).setBattleBgm('battle_champion_iris'),
[TrainerType.DIANTHA]: new TrainerConfig(++t).initForChampion([Species.HAWLUCHA, Species.XERNEAS, Species.GOURGEIST, Species.GOODRA, Species.GARDEVOIR]),
[TrainerType.HAU]: new TrainerConfig(++t).initForChampion([Species.ALOLA_RAICHU, [Species.SOLGALEO, Species.LUNALA], Species.NOIVERN, [Species.DECIDUEYE, Species.INCINEROAR, Species.PRIMARINA], Species.CRABOMINABLE]),
[TrainerType.GEETA]: new TrainerConfig(++t).initForChampion([Species.GLIMMORA, Species.MIRAIDON, Species.ESPATHRA, Species.VELUZA, Species.KINGAMBIT]),
[TrainerType.NEMONA]: new TrainerConfig(++t).initForChampion([Species.LYCANROC, Species.KORAIDON, Species.KOMMO_O, Species.PAWMOT, Species.DUSKNOIR]),
[TrainerType.KIERAN]: new TrainerConfig(++t).initForChampion([Species.POLITOED, [Species.OGERPON, Species.TERAPAGOS], Species.HYDRAPPLE, Species.PORYGON_Z, Species.GRIMMSNARL]),
[TrainerType.LEON]: new TrainerConfig(++t).initForChampion([Species.DRAGAPULT, [Species.ZACIAN, Species.ZAMAZENTA], Species.SEISMITOAD, Species.AEGISLASH, Species.CHARIZARD]),
[TrainerType.RIVAL]: new TrainerConfig((t = TrainerType.RIVAL)).setName('Finn').setHasGenders('Ivy').setHasCharSprite().setTitle('Rival').setStaticParty().setEncounterBgm(TrainerType.RIVAL).setBattleBgm('battle_rival').setPartyTemplates(trainerPartyTemplates.RIVAL)
[TrainerType.RIVAL]: new TrainerConfig((t = TrainerType.RIVAL)).setName('Finn').setHasGenders('Ivy').setHasCharSprite().setTitle('rival').setStaticParty().setEncounterBgm(TrainerType.RIVAL).setBattleBgm('battle_rival').setPartyTemplates(trainerPartyTemplates.RIVAL)
.setModifierRewardFuncs(() => modifierTypes.SUPER_EXP_CHARM, () => modifierTypes.EXP_SHARE)
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.BULBASAUR, Species.CHARMANDER, Species.SQUIRTLE, Species.CHIKORITA, Species.CYNDAQUIL, Species.TOTODILE, Species.TREECKO, Species.TORCHIC, Species.MUDKIP, Species.TURTWIG, Species.CHIMCHAR, Species.PIPLUP, Species.SNIVY, Species.TEPIG, Species.OSHAWOTT, Species.CHESPIN, Species.FENNEKIN, Species.FROAKIE, Species.ROWLET, Species.LITTEN, Species.POPPLIO, Species.GROOKEY, Species.SCORBUNNY, Species.SOBBLE, Species.SPRIGATITO, Species.FUECOCO, Species.QUAXLY ], TrainerSlot.TRAINER, true))
.setPartyMemberFunc(1, getRandomPartyMemberFunc([ Species.PIDGEY, Species.HOOTHOOT, Species.TAILLOW, Species.STARLY, Species.PIDOVE, Species.FLETCHLING, Species.PIKIPEK, Species.ROOKIDEE, Species.WATTREL ], TrainerSlot.TRAINER, true)),
[TrainerType.RIVAL_2]: new TrainerConfig(++t).setName('Finn').setHasGenders('Ivy').setHasCharSprite().setTitle('Rival').setStaticParty().setMoneyMultiplier(1.25).setEncounterBgm(TrainerType.RIVAL).setBattleBgm('battle_rival').setPartyTemplates(trainerPartyTemplates.RIVAL_2)
.setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.BULBASAUR, Species.CHARMANDER, Species.SQUIRTLE, Species.CHIKORITA, Species.CYNDAQUIL, Species.TOTODILE, Species.TREECKO, Species.TORCHIC, Species.MUDKIP, Species.TURTWIG, Species.CHIMCHAR, Species.PIPLUP, Species.SNIVY, Species.TEPIG, Species.OSHAWOTT, Species.CHESPIN, Species.FENNEKIN, Species.FROAKIE, Species.ROWLET, Species.LITTEN, Species.POPPLIO, Species.GROOKEY, Species.SCORBUNNY, Species.SOBBLE, Species.SPRIGATITO, Species.FUECOCO, Species.QUAXLY], TrainerSlot.TRAINER, true))
.setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.PIDGEY, Species.HOOTHOOT, Species.TAILLOW, Species.STARLY, Species.PIDOVE, Species.FLETCHLING, Species.PIKIPEK, Species.ROOKIDEE, Species.WATTREL], TrainerSlot.TRAINER, true)),
[TrainerType.RIVAL_2]: new TrainerConfig(++t).setName('Finn').setHasGenders('Ivy').setHasCharSprite().setTitle('rival').setStaticParty().setMoneyMultiplier(1.25).setEncounterBgm(TrainerType.RIVAL).setBattleBgm('battle_rival').setPartyTemplates(trainerPartyTemplates.RIVAL_2)
.setModifierRewardFuncs(() => modifierTypes.EXP_SHARE)
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.IVYSAUR, Species.CHARMELEON, Species.WARTORTLE, Species.BAYLEEF, Species.QUILAVA, Species.CROCONAW, Species.GROVYLE, Species.COMBUSKEN, Species.MARSHTOMP, Species.GROTLE, Species.MONFERNO, Species.PRINPLUP, Species.SERVINE, Species.PIGNITE, Species.DEWOTT, Species.QUILLADIN, Species.BRAIXEN, Species.FROGADIER, Species.DARTRIX, Species.TORRACAT, Species.BRIONNE, Species.THWACKEY, Species.RABOOT, Species.DRIZZILE, Species.FLORAGATO, Species.CROCALOR, Species.QUAXWELL ], TrainerSlot.TRAINER, true))
.setPartyMemberFunc(1, getRandomPartyMemberFunc([ Species.PIDGEOTTO, Species.HOOTHOOT, Species.TAILLOW, Species.STARAVIA, Species.TRANQUILL, Species.FLETCHINDER, Species.TRUMBEAK, Species.CORVISQUIRE, Species.WATTREL ], TrainerSlot.TRAINER, true))
.setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.IVYSAUR, Species.CHARMELEON, Species.WARTORTLE, Species.BAYLEEF, Species.QUILAVA, Species.CROCONAW, Species.GROVYLE, Species.COMBUSKEN, Species.MARSHTOMP, Species.GROTLE, Species.MONFERNO, Species.PRINPLUP, Species.SERVINE, Species.PIGNITE, Species.DEWOTT, Species.QUILLADIN, Species.BRAIXEN, Species.FROGADIER, Species.DARTRIX, Species.TORRACAT, Species.BRIONNE, Species.THWACKEY, Species.RABOOT, Species.DRIZZILE, Species.FLORAGATO, Species.CROCALOR, Species.QUAXWELL], TrainerSlot.TRAINER, true))
.setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.PIDGEOTTO, Species.HOOTHOOT, Species.TAILLOW, Species.STARAVIA, Species.TRANQUILL, Species.FLETCHINDER, Species.TRUMBEAK, Species.CORVISQUIRE, Species.WATTREL], TrainerSlot.TRAINER, true))
.setPartyMemberFunc(2, getSpeciesFilterRandomPartyMemberFunc((species: PokemonSpecies) => !pokemonEvolutions.hasOwnProperty(species.speciesId) && !pokemonPrevolutions.hasOwnProperty(species.speciesId) && species.baseTotal >= 450)),
[TrainerType.RIVAL_3]: new TrainerConfig(++t).setName('Finn').setHasGenders('Ivy').setHasCharSprite().setTitle('Rival').setStaticParty().setMoneyMultiplier(1.5).setEncounterBgm(TrainerType.RIVAL).setBattleBgm('battle_rival').setPartyTemplates(trainerPartyTemplates.RIVAL_3)
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.VENUSAUR, Species.CHARIZARD, Species.BLASTOISE, Species.MEGANIUM, Species.TYPHLOSION, Species.FERALIGATR, Species.SCEPTILE, Species.BLAZIKEN, Species.SWAMPERT, Species.TORTERRA, Species.INFERNAPE, Species.EMPOLEON, Species.SERPERIOR, Species.EMBOAR, Species.SAMUROTT, Species.CHESNAUGHT, Species.DELPHOX, Species.GRENINJA, Species.DECIDUEYE, Species.INCINEROAR, Species.PRIMARINA, Species.RILLABOOM, Species.CINDERACE, Species.INTELEON, Species.MEOWSCARADA, Species.SKELEDIRGE, Species.QUAQUAVAL ], TrainerSlot.TRAINER, true))
.setPartyMemberFunc(1, getRandomPartyMemberFunc([ Species.PIDGEOT, Species.NOCTOWL, Species.SWELLOW, Species.STARAPTOR, Species.UNFEZANT, Species.TALONFLAME, Species.TOUCANNON, Species.CORVIKNIGHT, Species.KILOWATTREL ], TrainerSlot.TRAINER, true))
[TrainerType.RIVAL_3]: new TrainerConfig(++t).setName('Finn').setHasGenders('Ivy').setHasCharSprite().setTitle('rival').setStaticParty().setMoneyMultiplier(1.5).setEncounterBgm(TrainerType.RIVAL).setBattleBgm('battle_rival').setPartyTemplates(trainerPartyTemplates.RIVAL_3)
.setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.VENUSAUR, Species.CHARIZARD, Species.BLASTOISE, Species.MEGANIUM, Species.TYPHLOSION, Species.FERALIGATR, Species.SCEPTILE, Species.BLAZIKEN, Species.SWAMPERT, Species.TORTERRA, Species.INFERNAPE, Species.EMPOLEON, Species.SERPERIOR, Species.EMBOAR, Species.SAMUROTT, Species.CHESNAUGHT, Species.DELPHOX, Species.GRENINJA, Species.DECIDUEYE, Species.INCINEROAR, Species.PRIMARINA, Species.RILLABOOM, Species.CINDERACE, Species.INTELEON, Species.MEOWSCARADA, Species.SKELEDIRGE, Species.QUAQUAVAL], TrainerSlot.TRAINER, true))
.setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.PIDGEOT, Species.NOCTOWL, Species.SWELLOW, Species.STARAPTOR, Species.UNFEZANT, Species.TALONFLAME, Species.TOUCANNON, Species.CORVIKNIGHT, Species.KILOWATTREL], TrainerSlot.TRAINER, true))
.setPartyMemberFunc(2, getSpeciesFilterRandomPartyMemberFunc((species: PokemonSpecies) => !pokemonEvolutions.hasOwnProperty(species.speciesId) && !pokemonPrevolutions.hasOwnProperty(species.speciesId) && species.baseTotal >= 450))
.setSpeciesFilter(species => species.baseTotal >= 540),
[TrainerType.RIVAL_4]: new TrainerConfig(++t).setName('Finn').setHasGenders('Ivy').setHasCharSprite().setTitle('Rival').setBoss().setStaticParty().setMoneyMultiplier(1.75).setEncounterBgm(TrainerType.RIVAL).setBattleBgm('battle_rival_2').setPartyTemplates(trainerPartyTemplates.RIVAL_4)
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.VENUSAUR, Species.CHARIZARD, Species.BLASTOISE, Species.MEGANIUM, Species.TYPHLOSION, Species.FERALIGATR, Species.SCEPTILE, Species.BLAZIKEN, Species.SWAMPERT, Species.TORTERRA, Species.INFERNAPE, Species.EMPOLEON, Species.SERPERIOR, Species.EMBOAR, Species.SAMUROTT, Species.CHESNAUGHT, Species.DELPHOX, Species.GRENINJA, Species.DECIDUEYE, Species.INCINEROAR, Species.PRIMARINA, Species.RILLABOOM, Species.CINDERACE, Species.INTELEON, Species.MEOWSCARADA, Species.SKELEDIRGE, Species.QUAQUAVAL ], TrainerSlot.TRAINER, true))
.setPartyMemberFunc(1, getRandomPartyMemberFunc([ Species.PIDGEOT, Species.NOCTOWL, Species.SWELLOW, Species.STARAPTOR, Species.UNFEZANT, Species.TALONFLAME, Species.TOUCANNON, Species.CORVIKNIGHT, Species.KILOWATTREL ], TrainerSlot.TRAINER, true))
[TrainerType.RIVAL_4]: new TrainerConfig(++t).setName('Finn').setHasGenders('Ivy').setHasCharSprite().setTitle('rival').setBoss().setStaticParty().setMoneyMultiplier(1.75).setEncounterBgm(TrainerType.RIVAL).setBattleBgm('battle_rival_2').setPartyTemplates(trainerPartyTemplates.RIVAL_4)
.setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.VENUSAUR, Species.CHARIZARD, Species.BLASTOISE, Species.MEGANIUM, Species.TYPHLOSION, Species.FERALIGATR, Species.SCEPTILE, Species.BLAZIKEN, Species.SWAMPERT, Species.TORTERRA, Species.INFERNAPE, Species.EMPOLEON, Species.SERPERIOR, Species.EMBOAR, Species.SAMUROTT, Species.CHESNAUGHT, Species.DELPHOX, Species.GRENINJA, Species.DECIDUEYE, Species.INCINEROAR, Species.PRIMARINA, Species.RILLABOOM, Species.CINDERACE, Species.INTELEON, Species.MEOWSCARADA, Species.SKELEDIRGE, Species.QUAQUAVAL], TrainerSlot.TRAINER, true))
.setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.PIDGEOT, Species.NOCTOWL, Species.SWELLOW, Species.STARAPTOR, Species.UNFEZANT, Species.TALONFLAME, Species.TOUCANNON, Species.CORVIKNIGHT, Species.KILOWATTREL], TrainerSlot.TRAINER, true))
.setPartyMemberFunc(2, getSpeciesFilterRandomPartyMemberFunc((species: PokemonSpecies) => !pokemonEvolutions.hasOwnProperty(species.speciesId) && !pokemonPrevolutions.hasOwnProperty(species.speciesId) && species.baseTotal >= 450))
.setSpeciesFilter(species => species.baseTotal >= 540)
.setGenModifiersFunc(party => {
const starter = party[0];
return [ modifierTypes.TERA_SHARD().generateType(null, [ starter.species.type1 ]).withIdFromFunc(modifierTypes.TERA_SHARD).newModifier(starter) as PersistentModifier ];
return [modifierTypes.TERA_SHARD().generateType(null, [starter.species.type1]).withIdFromFunc(modifierTypes.TERA_SHARD).newModifier(starter) as PersistentModifier];
}),
[TrainerType.RIVAL_5]: new TrainerConfig(++t).setName('Finn').setHasGenders('Ivy').setHasCharSprite().setTitle('Rival').setBoss().setStaticParty().setMoneyMultiplier(2.25).setEncounterBgm(TrainerType.RIVAL).setBattleBgm('battle_rival_3').setPartyTemplates(trainerPartyTemplates.RIVAL_5)
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.VENUSAUR, Species.CHARIZARD, Species.BLASTOISE, Species.MEGANIUM, Species.TYPHLOSION, Species.FERALIGATR, Species.SCEPTILE, Species.BLAZIKEN, Species.SWAMPERT, Species.TORTERRA, Species.INFERNAPE, Species.EMPOLEON, Species.SERPERIOR, Species.EMBOAR, Species.SAMUROTT, Species.CHESNAUGHT, Species.DELPHOX, Species.GRENINJA, Species.DECIDUEYE, Species.INCINEROAR, Species.PRIMARINA, Species.RILLABOOM, Species.CINDERACE, Species.INTELEON, Species.MEOWSCARADA, Species.SKELEDIRGE, Species.QUAQUAVAL ], TrainerSlot.TRAINER, true,
[TrainerType.RIVAL_5]: new TrainerConfig(++t).setName('Finn').setHasGenders('Ivy').setHasCharSprite().setTitle('rival').setBoss().setStaticParty().setMoneyMultiplier(2.25).setEncounterBgm(TrainerType.RIVAL).setBattleBgm('battle_rival_3').setPartyTemplates(trainerPartyTemplates.RIVAL_5)
.setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.VENUSAUR, Species.CHARIZARD, Species.BLASTOISE, Species.MEGANIUM, Species.TYPHLOSION, Species.FERALIGATR, Species.SCEPTILE, Species.BLAZIKEN, Species.SWAMPERT, Species.TORTERRA, Species.INFERNAPE, Species.EMPOLEON, Species.SERPERIOR, Species.EMBOAR, Species.SAMUROTT, Species.CHESNAUGHT, Species.DELPHOX, Species.GRENINJA, Species.DECIDUEYE, Species.INCINEROAR, Species.PRIMARINA, Species.RILLABOOM, Species.CINDERACE, Species.INTELEON, Species.MEOWSCARADA, Species.SKELEDIRGE, Species.QUAQUAVAL], TrainerSlot.TRAINER, true,
p => p.setBoss(true, 2)))
.setPartyMemberFunc(1, getRandomPartyMemberFunc([ Species.PIDGEOT, Species.NOCTOWL, Species.SWELLOW, Species.STARAPTOR, Species.UNFEZANT, Species.TALONFLAME, Species.TOUCANNON, Species.CORVIKNIGHT, Species.KILOWATTREL ], TrainerSlot.TRAINER, true))
.setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.PIDGEOT, Species.NOCTOWL, Species.SWELLOW, Species.STARAPTOR, Species.UNFEZANT, Species.TALONFLAME, Species.TOUCANNON, Species.CORVIKNIGHT, Species.KILOWATTREL], TrainerSlot.TRAINER, true))
.setPartyMemberFunc(2, getSpeciesFilterRandomPartyMemberFunc((species: PokemonSpecies) => !pokemonEvolutions.hasOwnProperty(species.speciesId) && !pokemonPrevolutions.hasOwnProperty(species.speciesId) && species.baseTotal >= 450))
.setSpeciesFilter(species => species.baseTotal >= 540)
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.RAYQUAZA ], TrainerSlot.TRAINER, true, p => {
.setPartyMemberFunc(5, getRandomPartyMemberFunc([Species.RAYQUAZA], TrainerSlot.TRAINER, true, p => {
p.setBoss(true, 3);
p.pokeball = PokeballType.MASTER_BALL;
p.shiny = true;
@ -851,17 +903,17 @@ export const trainerConfigs: TrainerConfigs = {
}))
.setGenModifiersFunc(party => {
const starter = party[0];
return [ modifierTypes.TERA_SHARD().generateType(null, [ starter.species.type1 ]).withIdFromFunc(modifierTypes.TERA_SHARD).newModifier(starter) as PersistentModifier ];
return [modifierTypes.TERA_SHARD().generateType(null, [starter.species.type1]).withIdFromFunc(modifierTypes.TERA_SHARD).newModifier(starter) as PersistentModifier];
}),
[TrainerType.RIVAL_6]: new TrainerConfig(++t).setName('Finn').setHasGenders('Ivy').setHasCharSprite().setTitle('Rival').setBoss().setStaticParty().setMoneyMultiplier(3).setEncounterBgm('final').setBattleBgm('battle_rival_3').setPartyTemplates(trainerPartyTemplates.RIVAL_6)
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.VENUSAUR, Species.CHARIZARD, Species.BLASTOISE, Species.MEGANIUM, Species.TYPHLOSION, Species.FERALIGATR, Species.SCEPTILE, Species.BLAZIKEN, Species.SWAMPERT, Species.TORTERRA, Species.INFERNAPE, Species.EMPOLEON, Species.SERPERIOR, Species.EMBOAR, Species.SAMUROTT, Species.CHESNAUGHT, Species.DELPHOX, Species.GRENINJA, Species.DECIDUEYE, Species.INCINEROAR, Species.PRIMARINA, Species.RILLABOOM, Species.CINDERACE, Species.INTELEON, Species.MEOWSCARADA, Species.SKELEDIRGE, Species.QUAQUAVAL ], TrainerSlot.TRAINER, true,
[TrainerType.RIVAL_6]: new TrainerConfig(++t).setName('Finn').setHasGenders('Ivy').setHasCharSprite().setTitle('rival').setBoss().setStaticParty().setMoneyMultiplier(3).setEncounterBgm('final').setBattleBgm('battle_rival_3').setPartyTemplates(trainerPartyTemplates.RIVAL_6)
.setPartyMemberFunc(0, getRandomPartyMemberFunc([Species.VENUSAUR, Species.CHARIZARD, Species.BLASTOISE, Species.MEGANIUM, Species.TYPHLOSION, Species.FERALIGATR, Species.SCEPTILE, Species.BLAZIKEN, Species.SWAMPERT, Species.TORTERRA, Species.INFERNAPE, Species.EMPOLEON, Species.SERPERIOR, Species.EMBOAR, Species.SAMUROTT, Species.CHESNAUGHT, Species.DELPHOX, Species.GRENINJA, Species.DECIDUEYE, Species.INCINEROAR, Species.PRIMARINA, Species.RILLABOOM, Species.CINDERACE, Species.INTELEON, Species.MEOWSCARADA, Species.SKELEDIRGE, Species.QUAQUAVAL], TrainerSlot.TRAINER, true,
p => p.setBoss(true, 3))
)
.setPartyMemberFunc(1, getRandomPartyMemberFunc([ Species.PIDGEOT, Species.NOCTOWL, Species.SWELLOW, Species.STARAPTOR, Species.UNFEZANT, Species.TALONFLAME, Species.TOUCANNON, Species.CORVIKNIGHT, Species.KILOWATTREL ], TrainerSlot.TRAINER, true,
.setPartyMemberFunc(1, getRandomPartyMemberFunc([Species.PIDGEOT, Species.NOCTOWL, Species.SWELLOW, Species.STARAPTOR, Species.UNFEZANT, Species.TALONFLAME, Species.TOUCANNON, Species.CORVIKNIGHT, Species.KILOWATTREL], TrainerSlot.TRAINER, true,
p => p.setBoss(true, 2)))
.setPartyMemberFunc(2, getSpeciesFilterRandomPartyMemberFunc((species: PokemonSpecies) => !pokemonEvolutions.hasOwnProperty(species.speciesId) && !pokemonPrevolutions.hasOwnProperty(species.speciesId) && species.baseTotal >= 450))
.setSpeciesFilter(species => species.baseTotal >= 540)
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.RAYQUAZA ], TrainerSlot.TRAINER, true, p => {
.setPartyMemberFunc(5, getRandomPartyMemberFunc([Species.RAYQUAZA], TrainerSlot.TRAINER, true, p => {
p.setBoss();
p.pokeball = PokeballType.MASTER_BALL;
p.shiny = true;
@ -870,10 +922,14 @@ export const trainerConfigs: TrainerConfigs = {
}))
.setGenModifiersFunc(party => {
const starter = party[0];
return [ modifierTypes.TERA_SHARD().generateType(null, [ starter.species.type1 ]).withIdFromFunc(modifierTypes.TERA_SHARD).newModifier(starter) as PersistentModifier ];
return [modifierTypes.TERA_SHARD().generateType(null, [starter.species.type1]).withIdFromFunc(modifierTypes.TERA_SHARD).newModifier(starter) as PersistentModifier];
}),
};
(function() {
(function () {
// I think we need to get the language that we are using here and then decide with a switch statment which language to load the dialogue in
initTrainerTypeDialogue();
})();

View File

@ -61,7 +61,7 @@ const trainerNameConfigs: TrainerNameConfigs = {
[TrainerType.SMASHER]: new TrainerNameConfig(TrainerType.SMASHER),
[TrainerType.SNOW_WORKER]: new TrainerNameConfig(TrainerType.SNOW_WORKER, 'Worker'),
[TrainerType.STRIKER]: new TrainerNameConfig(TrainerType.STRIKER),
[TrainerType.STUDENT]: new TrainerNameConfig(TrainerType.STUDENT, 'School_Kid'),
[TrainerType.SCHOOL_KID]: new TrainerNameConfig(TrainerType.SCHOOL_KID, 'School_Kid'),
[TrainerType.SWIMMER]: new TrainerNameConfig(TrainerType.SWIMMER),
[TrainerType.TWINS]: new TrainerNameConfig(TrainerType.TWINS),
[TrainerType.VETERAN]: new TrainerNameConfig(TrainerType.VETERAN),
@ -111,7 +111,7 @@ export const trainerNamePools = {
[TrainerType.SMASHER]: ["Aspen","Elena","Mari","Amy","Lizzy"],
[TrainerType.SNOW_WORKER]: [["Braden","Brendon","Colin","Conrad","Dillan","Gary","Gerardo","Holden","Jackson","Mason","Quentin","Willy","Noel","Arnold","Brady","Brand","Cairn","Cliff","Don","Eddie","Felix","Filipe","Glenn","Gus","Heath","Matthew","Patton","Rich","Rob","Ryan","Scott","Shelby","Sterling","Tyler","Victor","Zack","Friedrich","Herman","Isaac","Leo","Maynard","Mitchell","Morgann","Nathan","Niel","Pasqual","Paul","Tavarius","Tibor","Dimitri","Narek","Yusif","Frank","Jeff","Vaclav","Ovid","Francis","Keith","Russel","Sangon","Toway","Bomber","Chean","Demit","Hubor","Kebile","Laber","Ordo","Retay","Ronix","Wagel","Dobit","Kaster","Lobel","Releo","Saken","Rustix"],["Georgia","Sandra","Yvonne"]],
[TrainerType.STRIKER]: ["Marco","Roberto","Tony"],
[TrainerType.STUDENT]: [["Alan","Billy","Chad","Danny","Dudley","Jack","Joe","Johnny","Kipp","Nate","Ricky","Tommy","Jerry","Paul","Ted","Chance","Esteban","Forrest","Harrison","Connor","Sherman","Torin","Travis","Al","Carter","Edgar","Jem","Sammy","Shane","Shayne","Alvin","Keston","Neil","Seymour","William","Carson","Clark","Nolan"],["Georgia","Karen","Meiko","Christine","Mackenzie","Tiera","Ann","Gina","Lydia","Marsha","Millie","Sally","Serena","Silvia","Alberta","Cassie","Mara","Rita","Georgie","Meena","Nitzel"]],
[TrainerType.SCHOOL_KID]: [["Alan","Billy","Chad","Danny","Dudley","Jack","Joe","Johnny","Kipp","Nate","Ricky","Tommy","Jerry","Paul","Ted","Chance","Esteban","Forrest","Harrison","Connor","Sherman","Torin","Travis","Al","Carter","Edgar","Jem","Sammy","Shane","Shayne","Alvin","Keston","Neil","Seymour","William","Carson","Clark","Nolan"],["Georgia","Karen","Meiko","Christine","Mackenzie","Tiera","Ann","Gina","Lydia","Marsha","Millie","Sally","Serena","Silvia","Alberta","Cassie","Mara","Rita","Georgie","Meena","Nitzel"]],
[TrainerType.SWIMMER]: [["Berke","Cameron","Charlie","George","Harold","Jerome","Kirk","Mathew","Parker","Randall","Seth","Simon","Tucker","Austin","Barry","Chad","Cody","Darrin","David","Dean","Douglas","Franklin","Gilbert","Herman","Jack","Luis","Matthew","Reed","Richard","Rodney","Roland","Spencer","Stan","Tony","Clarence","Declan","Dominik","Harrison","Kevin","Leonardo","Nolen","Pete","Santiago","Axle","Braden","Finn","Garrett","Mymo","Reece","Samir","Toby","Adrian","Colton","Dillon","Erik","Evan","Francisco","Glenn","Kurt","Oscar","Ricardo","Sam","Sheltin","Troy","Vincent","Wade","Wesley","Duane","Elmo","Esteban","Frankie","Ronald","Tyson","Bart","Matt","Tim","Wright","Jeffery","Kyle","Alessandro","Estaban","Kieran","Ramses","Casey","Dakota","Jared","Kalani","Keoni","Lawrence","Logan","Robert","Roddy","Yasu","Derek","Jacob","Bruce","Clayton"],["Briana","Dawn","Denise","Diana","Elaine","Kara","Kaylee","Lori","Nicole","Nikki","Paula","Susie","Wendy","Alice","Beth","Beverly","Brenda","Dana","Debra","Grace","Jenny","Katie","Laurel","Linda","Missy","Sharon","Tanya","Tara","Tisha","Carlee","Imani","Isabelle","Kyla","Sienna","Abigail","Amara","Anya","Connie","Maria","Melissa","Nora","Shirley","Shania","Tiffany","Aubree","Cassandra","Claire","Crystal","Erica","Gabrielle","Haley","Jessica","Joanna","Lydia","Mallory","Mary","Miranda","Paige","Sophia","Vanessa","Chelan","Debbie","Joy","Kendra","Leona","Mina","Caroline","Joyce","Larissa","Rebecca","Tyra","Dara","Desiree","Kaoru","Ruth","Coral","Genevieve","Isla","Marissa","Romy","Sheryl","Alexandria","Alicia","Chelsea","Jade","Kelsie","Laura","Portia","Shelby","Sara","Tiare","Kyra","Natasha","Layla","Scarlett","Cora"]],
[TrainerType.TWINS]: ["Amy & May","Jo & Zoe","Meg & Peg","Ann & Anne","Lea & Pia","Amy & Liv","Gina & Mia","Miu & Yuki","Tori & Tia","Eli & Anne","Jen & Kira","Joy & Meg","Kiri & Jan","Miu & Mia","Emma & Lil","Liv & Liz","Teri & Tia","Amy & Mimi","Clea & Gil","Day & Dani","Kay & Tia","Tori & Til","Saya & Aya","Emy & Lin","Kumi & Amy","Mayo & May","Ally & Amy","Lia & Lily","Rae & Ula","Sola & Ana","Tara & Val","Faith & Joy","Nana & Nina"],
[TrainerType.VETERAN]: [["Armando","Brenden","Brian","Clayton","Edgar","Emanuel","Grant","Harlan","Terrell","Arlen","Chester","Hugo","Martell","Ray","Shaun","Abraham","Carter","Claude","Jerry","Lucius","Murphy","Rayne","Ron","Sinan","Sterling","Vincent","Zach","Gerard","Gilles","Louis","Timeo","Akira","Don","Eric","Harry","Leon","Roger","Angus","Aristo","Brone","Johnny"],["Julia","Karla","Kim","Sayuri","Tiffany","Cathy","Cecile","Chloris","Denae","Gina","Maya","Oriana","Portia","Rhona","Rosaline","Catrina","Inga","Trisha","Heather","Lynn","Sheri","Alonsa","Ella","Leticia","Kiara"]],

View File

@ -10,6 +10,8 @@ import { PersistentModifier } from "../modifier/modifier";
import { trainerNamePools } from "../data/trainer-names";
import { ArenaTagType } from "#app/data/enums/arena-tag-type";
import { ArenaTag, ArenaTagSide, ArenaTrapTag } from "#app/data/arena-tag";
import {getIsInitialized, initI18n} from "#app/plugins/i18n";
import i18next from "i18next";
export enum TrainerVariant {
DEFAULT,
@ -97,9 +99,16 @@ export default class Trainer extends Phaser.GameObjects.Container {
getName(trainerSlot: TrainerSlot = TrainerSlot.NONE, includeTitle: boolean = false): string {
let name = this.config.getTitle(trainerSlot, this.variant);
let title = includeTitle && this.config.title ? this.config.title : null;
if (this.name) {
if (includeTitle)
title = name;
// Check if i18n is initialized
if (!getIsInitialized()) {
initI18n()
}
title = i18next.t(`trainerClasses:${name.toLowerCase().replace(/\s/g, '_')}`);
if (!trainerSlot) {
name = this.name;
if (this.partnerName)
@ -107,6 +116,7 @@ export default class Trainer extends Phaser.GameObjects.Container {
} else
name = trainerSlot === TrainerSlot.TRAINER ? this.name : this.partnerName || this.name;
}
return title ? `${title} ${name}` : name;
}

View File

@ -10,6 +10,7 @@ import { pokemon } from "./pokemon";
import { pokemonStat } from "./pokemon-stat";
import { starterSelectUiHandler } from "./starter-select-ui-handler";
import { tutorial } from "./tutorial";
import { titles,trainerClasses,trainerNames } from "./trainers";
export const deConfig = {
@ -24,5 +25,8 @@ export const deConfig = {
pokemonStat: pokemonStat,
pokemon: pokemon,
starterSelectUiHandler: starterSelectUiHandler,
titles: titles,
trainerClasses: trainerClasses,
trainerNames: trainerNames,
tutorial: tutorial
}

221
src/locales/de/trainers.ts Normal file
View File

@ -0,0 +1,221 @@
import {SimpleTranslationEntries} from "#app/plugins/i18n";
// Titles of special trainers like gym leaders, elite four, and the champion
export const titles: SimpleTranslationEntries = {
"elite_four": "Top Vier",
"gym_leader": "Arenaleiter",
"gym_leader_female": "Arenaleiterin",
"champion": "Champion",
"rival": "Rivale",
"professor": "Professor",
"frontier_brain": "Kampfkoryphäen",
// Maybe if we add the evil teams we can add "Team Rocket" and "Team Aqua" etc. here as well as "Team Rocket Boss" and "Team Aqua Admin" etc.
} as const;
// Titles of trainers like "Youngster" or "Lass"
export const trainerClasses: SimpleTranslationEntries = {
"ace_trainer": "Ass-Trainer",
"ace_trainer_female": "Ass-Trainerin",
"artist": "Künstler",
"artist_female": "Künstlerin",
"backers": "Anhänger",
"backpacker": "Backpacker",
"backpacker_female": "Backpackerin",
"baker": "Bäckerin",
"battle_girl": "Kämpferin",
"beauty": "Schönheit",
"biker": "Rowdy",
"black_belt": "Schwarzgurt",
"breeder": "Pokémon Züchter",
"breeder_female": "Pokémon Züchterin",
"clerk": "Angestellter",
"clerk_female": "Angestellte",
"cyclist": "Biker",
"cyclist_female": "Bikerin",
"dancer": "Tänzer",
"dancer_female": "Tänzerin",
"depot_agent": "Bahnangestellter",
"doctor": "Arzt",
"doctor_female": "Ärztin",
"fishermen": "Angler",
"fishermen_female": "Angler", // Seems to be the same in german but exists in other languages like italian
"guitarist": "Gitarrist",
"guitarist_female": "Gitarristin",
"harlequin": "Kasper",
"hiker": "Wanderer",
"hooligans": "Rabauken",
"hoopster": "Basketballer",
"infielder": "Baseballer",
"janitor": "Hausmeister",
"lady": "Lady",
"lass": "Göre",
"linebacker": "Footballer",
"maid": "Zofe",
"madame": "Madam",
"musican": "Musiker",
"hex_manic": "Hexe",
"nurse": "Pflegerin",
"nursery_aide": "Erzieherin",
"officer": "Polizist",
"parasol_lady": "Schirmdame",
"pilot": "Pilot",
"pokefan": "Pokéfan",
"preschooler": "Vorschüler",
"preschooler_female": "Vorschülerin",
"psychic": "Seher",
"psychic_female": "Seherin",
"ranger": "Ranger",
"rich": "Gentleman", // Gentleman is the english name but the trainerType is rich
"rich_kid": "Schnösel",
"roughneck": "Raufbold",
"scientist": "Forscher",
"scientist_female": "Forscherin",
"smasher": "Tennis-Ass",
"snow_worker": "Schneearbeiter", // There is a trainer type for this but no actual trainer class? They seem to be just workers but dressed differently
"snow_worker_female": "Schneearbeiterin",
"striker": "Fußballer",
"school_kid": "Schulkind",
"school_kid_female": "Schulkind", // Same in german but different in italian
"swimmer": "Schwimmer",
"swimmer_female": "Schwimmerin",
"twins": "Zwillinge",
"veteran": "Veteran",
"veteran_female": "Veteran", // same in german, different in other languages
"waiter": "Servierer",
"waitress": "Serviererin",
"worker": "Arbeiter",
"worker_female": "Arbeiterin",
"youngster": "Knirps"
} as const;
// Names of special trainers like gym leaders, elite four, and the champion
export const trainerNames: SimpleTranslationEntries = {
"brock": "Rocko",
"misty": "Misty",
"lt_surge": "Major Bob",
"erika": "Erika",
"janine": "Janina",
"sabrina": "Sabrina",
"blaine": "Pyor",
"giovanni": "Giovanni",
"falkner": "Falk",
"bugsy": "Kai",
"whitney": "Bianka",
"morty": "Jens",
"chuck": "Hartwig",
"jasmine": "Jasmin",
"pryce": "Norbert",
"clair": "Sandra",
"roxanne": "Felizia",
"brawly": "Kamillo",
"wattson": "Walter",
"flannery": "Flavia",
"norman": "Norman",
"winona": "Wibke",
"tate": "Ben",
"liza": "Svenja",
"juan": "Juan",
"roark": "Veit",
"gardenia": "Silvana",
"maylene": "Hilda",
"crasher_wake": "Wellenbrecher Marinus",
"fantina": "Lamina",
"byron": "Adam",
"candice": "Frida",
"volkner": "Volkner",
"cilan": "Benny",
"chili": "Maik",
"cress": "Colin",
"cheren": "Cheren",
"lenora": "Aloe",
"roxie": "Mica",
"burgh": "Artie",
"elesa": "Kamilla",
"clay": "Turner",
"skyla": "Géraldine",
"brycen": "Sandro",
"drayden": "Lysander",
"marlon": "Benson",
"viola": "Viola",
"grant": "Lino",
"korrina": "Connie",
"ramos": "Amaro",
"clemont": "Citro",
"valerie": "Valerie",
"olympia": "Astrid",
"wulfric": "Galantho",
"milo": "Yarro",
"nessa": "Kate",
"kabu": "Kabu",
"bea": "Saida",
"allister": "Nio",
"opal": "Papella",
"bede": "Betys",
"gordie": "Mac",
"melony": "Mel",
"piers": "Nezz",
"marnie": "Mary",
"raihan": "Roy",
"katy": "Ronah",
"brassius": "Colzo",
"iono": "Enigmara",
"kofu": "Kombu",
"larry": "Aoki",
"ryme": "Etta",
"tulip": "Tulia",
"grusha": "Grusha",
"lorelei": "Lorelei",
"bruno": "Bruno",
"agatha": "Agathe",
"lance": "Siegfried",
"will": "Willi",
"koga": "Koga",
"karen": "Melanie",
"sidney": "Ulrich",
"phoebe": "Antonia",
"glacia": "Frosina",
"drake": "Dragan",
"aaron": "Herbaro",
"bertha": "Teresa",
"flint": "Ignaz",
"lucian": "Lucian",
"shauntal": "Anissa",
"marshal": "Eugen",
"grimsley": "Astor",
"caitlin": "Kattlea",
"malva": "Pachira",
"siebold": "Narcisse",
"wikstrom": "Thymelot",
"drasna": "Dracena",
"hala": "Hala",
"molayne": "Marlon",
"olivia": "Mayla",
"acerola": "Lola",
"kahili": "Kahili",
"rika": "Cay",
"poppy": "Poppy",
"larry_elite": "Aoki", // Does this really need to be an extra entry? (it is in trainer-type.ts so I added it here)
"hassel": "Sinius",
"crispin": "Matt",
"amarys": "Erin",
"lacey": "Tara",
"drayton": "Levy",
"blue": "Blau",
"red": "Rot",
"lance_champion": "Siegfried", // Does this really need to be an extra entry? (it is in trainer-type.ts so I added it here)
"steven": "Troy",
"wallace": "Wassili",
"cynthia": "Cynthia",
"alder": "Lauro",
"iris": "Lilia",
"diantha": "Diantha",
"hau": "Tali",
"geeta": "Sagaria",
"nemona": "Nemila",
"kieran": "Jo",
"leon": "Delion",
"rival": "Finn",
"rival_female": "Ivy",
} as const;

View File

@ -10,6 +10,7 @@ import { pokemon } from "./pokemon";
import { pokemonStat } from "./pokemon-stat";
import { starterSelectUiHandler } from "./starter-select-ui-handler";
import { tutorial } from "./tutorial";
import { titles,trainerClasses,trainerNames } from "./trainers";
export const enConfig = {
@ -24,5 +25,8 @@ export const enConfig = {
pokemonStat: pokemonStat,
pokemon: pokemon,
starterSelectUiHandler: starterSelectUiHandler,
titles: titles,
trainerClasses: trainerClasses,
trainerNames: trainerNames,
tutorial: tutorial
}

219
src/locales/en/trainers.ts Normal file
View File

@ -0,0 +1,219 @@
import {SimpleTranslationEntries} from "#app/plugins/i18n";
// Titles of special trainers like gym leaders, elite four, and the champion
export const titles: SimpleTranslationEntries = {
"elite_four": "Elite Four",
"gym_leader": "Gym Leader",
"gym_leader_female": "Gym Leader",
"champion": "Champion",
"rival": "Rival",
"professor": "Professor",
"frontier_brain": "Frontier Brain",
// Maybe if we add the evil teams we can add "Team Rocket" and "Team Aqua" etc. here as well as "Team Rocket Boss" and "Team Aqua Admin" etc.
} as const;
// Titles of trainers like "Youngster" or "Lass"
export const trainerClasses: SimpleTranslationEntries = {
"ace_trainer": "Ace Trainer",
"ace_trainer_female": "Ace Trainer",
"artist": "Artist",
"artist_female": "Artist",
"backers": "Backers",
"backpacker": "Backpacker",
"backpacker_female": "Backpacker",
"baker": "Baker",
"battle_girl": "Battle Girl",
"beauty": "Beauty",
"biker": "Biker",
"black_belt": "Black Belt",
"breeder": "Breeder",
"breeder_female": "Breeder",
"clerk": "Clerk",
"clerk_female": "Clerk",
"cyclist": "Cyclist",
"cyclist_female": "Cyclist",
"dancer": "Dancer",
"dancer_female": "Dancer",
"depot_agent": "Depot Agent",
"doctor": "Doctor",
"doctor_female": "Doctor",
"fishermen": "Fishermen",
"fishermen_female": "Fishermen",
"guitarist": "Guitarist",
"guitarist_female": "Guitarist",
"harlequin": "Harlequin",
"hiker": "Hiker",
"hooligans": "Hooligans",
"hoopster": "Hoopster",
"infielder": "Infielder",
"janitor": "Janitor",
"lady": "Lady",
"lass": "Lass",
"linebacker": "Linebacker",
"maid": "Maid",
"madame": "Madame",
"musican": "Musician",
"hex_manic": "Hex Manic",
"nurse": "Nurse",
"nursery_aide": "Nursery Aide",
"officer": "Officer",
"parasol_lady": "Parasol Lady",
"pilot": "Pilot",
"pokefan": "Pokefan",
"preschooler": "Preschooler",
"preschooler_female": "Preschooler",
"psychic": "Psychic",
"psychic_female": "Psychic",
"ranger": "Ranger",
"rich": "Gentleman", // Gentleman is the english name but the trainerType is rich
"rich_kid": "Rich Kid",
"roughneck": "Roughneck",
"scientist": "Scientist",
"scientist_female": "Scientist",
"smasher": "Smasher",
"snow_worker": "Snow Worker",
"snow_worker_female": "Snow Worker",
"striker": "Striker",
"school_kid": "School Kid",
"school_kid_female": "School Kid",
"swimmer": "Swimmer",
"swimmer_female": "Swimmer",
"twins": "Twins",
"veteran": "Veteran",
"veteran_female": "Veteran",
"waiter": "Waiter",
"waitress": "Waitress",
"worker": "Worker",
"worker_female": "Worker",
"youngster": "Youngster"
} as const;
// Names of special trainers like gym leaders, elite four, and the champion
export const trainerNames: SimpleTranslationEntries = {
"brock": "Brock",
"misty": "Misty",
"lt_surge": "Lt Surge",
"erika": "Erika",
"janine": "Janine",
"sabrina": "Sabrina",
"blaine": "Blaine",
"giovanni": "Giovanni",
"falkner": "Falkner",
"bugsy": "Bugsy",
"whitney": "Whitney",
"morty": "Morty",
"chuck": "Chuck",
"jasmine": "Jasmine",
"pryce": "Pryce",
"clair": "Clair",
"roxanne": "Roxanne",
"brawly": "Brawly",
"wattson": "Wattson",
"flannery": "Flannery",
"norman": "Norman",
"winona": "Winona",
"tate": "Tate",
"liza": "Liza",
"juan": "Juan",
"roark": "Roark",
"gardenia": "Gardenia",
"maylene": "Maylene",
"crasher_wake": "Crasher Wake",
"fantina": "Fantina",
"byron": "Byron",
"candice": "Candice",
"volkner": "Volkner",
"cilan": "Cilan",
"chili": "Chili",
"cress": "Cress",
"cheren": "Cheren",
"lenora": "Lenora",
"roxie": "Roxie",
"burgh": "Burgh",
"elesa": "Elesa",
"clay": "Clay",
"skyla": "Skyla",
"brycen": "Brycen",
"drayden": "Drayden",
"marlon": "Marlon",
"viola": "Viola",
"grant": "Grant",
"korrina": "Korrina",
"ramos": "Ramos",
"clemont": "Clemont",
"valerie": "Valerie",
"olympia": "Olympia",
"wulfric": "Wulfric",
"milo": "Milo",
"nessa": "Nessa",
"kabu": "Kabu",
"bea": "Bea",
"allister": "Allister",
"opal": "Opal",
"bede": "Bede",
"gordie": "Gordie",
"melony": "Melony",
"piers": "Piers",
"marnie": "Marnie",
"raihan": "Raihan",
"katy": "Katy",
"brassius": "Brassius",
"iono": "Iono",
"kofu": "Kofu",
"larry": "Larry",
"ryme": "Ryme",
"tulip": "Tulip",
"grusha": "Grusha",
"lorelei": "Lorelei",
"bruno": "Bruno",
"agatha": "Agatha",
"lance": "Lance",
"will": "Will",
"koga": "Koga",
"karen": "Karen",
"sidney": "Sidney",
"phoebe": "Phoebe",
"glacia": "Glacia",
"drake": "Drake",
"aaron": "Aaron",
"bertha": "Bertha",
"flint": "Flint",
"lucian": "Lucian",
"shauntal": "Shauntal",
"marshal": "Marshal",
"grimsley": "Grimsley",
"caitlin": "Caitlin",
"malva": "Malva",
"siebold": "Siebold",
"wikstrom": "Wikstrom",
"drasna": "Drasna",
"hala": "Hala",
"molayne": "Molayne",
"olivia": "Olivia",
"acerola": "Acerola",
"kahili": "Kahili",
"rika": "Rika",
"poppy": "Poppy",
"larry_elite": "Larry", // Does this really need to be an extra entry? (it is in trainer-type.ts so I added it here)
"hassel": "Hassel",
"crispin": "Crispin",
"amarys": "Amarys",
"lacey": "Lacey",
"drayton": "Drayton",
"blue": "Blue",
"red": "Red",
"lance_champion": "Lance", // Does this really need to be an extra entry? (it is in trainer-type.ts so I added it here)
"steven": "Steven",
"wallace": "Wallace",
"cynthia": "Cynthia",
"alder": "Alder",
"iris": "Iris",
"diantha": "Diantha",
"hau": "Hau",
"geeta": "Geeta",
"nemona": "Nemona",
"kieran": "Kieran",
"leon": "Leon",
"rival": "Finn",
"rival_female": "Ivy",
} as const;

View File

@ -10,6 +10,7 @@ import { pokemon } from "./pokemon";
import { pokemonStat } from "./pokemon-stat";
import { starterSelectUiHandler } from "./starter-select-ui-handler";
import { tutorial } from "./tutorial";
import { titles,trainerClasses,trainerNames } from "./trainers";
export const esConfig = {
@ -24,5 +25,8 @@ export const esConfig = {
pokemonStat: pokemonStat,
pokemon: pokemon,
starterSelectUiHandler: starterSelectUiHandler,
titles: titles,
trainerClasses: trainerClasses,
trainerNames: trainerNames,
tutorial: tutorial
}

219
src/locales/es/trainers.ts Normal file
View File

@ -0,0 +1,219 @@
import {SimpleTranslationEntries} from "#app/plugins/i18n";
// Titles of special trainers like gym leaders, elite four, and the champion
export const titles: SimpleTranslationEntries = {
"elite_four": "Elite Four",
"gym_leader": "Gym Leader",
"gym_leader_female": "Gym Leader",
"champion": "Champion",
"rival": "Rival",
"professor": "Professor",
"frontier_brain": "Frontier Brain",
// Maybe if we add the evil teams we can add "Team Rocket" and "Team Aqua" etc. here as well as "Team Rocket Boss" and "Team Aqua Admin" etc.
} as const;
// Titles of trainers like "Youngster" or "Lass"
export const trainerClasses: SimpleTranslationEntries = {
"ace_trainer": "Ace Trainer",
"ace_trainer_female": "Ace Trainer",
"artist": "Artist",
"artist_female": "Artist",
"backers": "Backers",
"backpacker": "Backpacker",
"backpacker_female": "Backpacker",
"baker": "Baker",
"battle_girl": "Battle Girl",
"beauty": "Beauty",
"biker": "Biker",
"black_belt": "Black Belt",
"breeder": "Breeder",
"breeder_female": "Breeder",
"clerk": "Clerk",
"clerk_female": "Clerk",
"cyclist": "Cyclist",
"cyclist_female": "Cyclist",
"dancer": "Dancer",
"dancer_female": "Dancer",
"depot_agent": "Depot Agent",
"doctor": "Doctor",
"doctor_female": "Doctor",
"fishermen": "Fishermen",
"fishermen_female": "Fishermen",
"guitarist": "Guitarist",
"guitarist_female": "Guitarist",
"harlequin": "Harlequin",
"hiker": "Hiker",
"hooligans": "Hooligans",
"hoopster": "Hoopster",
"infielder": "Infielder",
"janitor": "Janitor",
"lady": "Lady",
"lass": "Lass",
"linebacker": "Linebacker",
"maid": "Maid",
"madame": "Madame",
"musican": "Musician",
"hex_manic": "Hex Manic",
"nurse": "Nurse",
"nursery_aide": "Nursery Aide",
"officer": "Officer",
"parasol_lady": "Parasol Lady",
"pilot": "Pilot",
"pokefan": "Pokefan",
"preschooler": "Preschooler",
"preschooler_female": "Preschooler",
"psychic": "Psychic",
"psychic_female": "Psychic",
"ranger": "Ranger",
"rich": "Gentleman", // Gentleman is the english name but the trainerType is rich
"rich_kid": "Rich Kid",
"roughneck": "Roughneck",
"scientist": "Scientist",
"scientist_female": "Scientist",
"smasher": "Smasher",
"snow_worker": "Snow Worker",
"snow_worker_female": "Snow Worker",
"striker": "Striker",
"school_kid": "School Kid",
"school_kid_female": "School Kid",
"swimmer": "Swimmer",
"swimmer_female": "Swimmer",
"twins": "Twins",
"veteran": "Veteran",
"veteran_female": "Veteran",
"waiter": "Waiter",
"waitress": "Waitress",
"worker": "Worker",
"worker_female": "Worker",
"youngster": "Youngster"
} as const;
// Names of special trainers like gym leaders, elite four, and the champion
export const trainerNames: SimpleTranslationEntries = {
"brock": "Brock",
"misty": "Misty",
"lt_surge": "Lt Surge",
"erika": "Erika",
"janine": "Janine",
"sabrina": "Sabrina",
"blaine": "Blaine",
"giovanni": "Giovanni",
"falkner": "Falkner",
"bugsy": "Bugsy",
"whitney": "Whitney",
"morty": "Morty",
"chuck": "Chuck",
"jasmine": "Jasmine",
"pryce": "Pryce",
"clair": "Clair",
"roxanne": "Roxanne",
"brawly": "Brawly",
"wattson": "Wattson",
"flannery": "Flannery",
"norman": "Norman",
"winona": "Winona",
"tate": "Tate",
"liza": "Liza",
"juan": "Juan",
"roark": "Roark",
"gardenia": "Gardenia",
"maylene": "Maylene",
"crasher_wake": "Crasher Wake",
"fantina": "Fantina",
"byron": "Byron",
"candice": "Candice",
"volkner": "Volkner",
"cilan": "Cilan",
"chili": "Chili",
"cress": "Cress",
"cheren": "Cheren",
"lenora": "Lenora",
"roxie": "Roxie",
"burgh": "Burgh",
"elesa": "Elesa",
"clay": "Clay",
"skyla": "Skyla",
"brycen": "Brycen",
"drayden": "Drayden",
"marlon": "Marlon",
"viola": "Viola",
"grant": "Grant",
"korrina": "Korrina",
"ramos": "Ramos",
"clemont": "Clemont",
"valerie": "Valerie",
"olympia": "Olympia",
"wulfric": "Wulfric",
"milo": "Milo",
"nessa": "Nessa",
"kabu": "Kabu",
"bea": "Bea",
"allister": "Allister",
"opal": "Opal",
"bede": "Bede",
"gordie": "Gordie",
"melony": "Melony",
"piers": "Piers",
"marnie": "Marnie",
"raihan": "Raihan",
"katy": "Katy",
"brassius": "Brassius",
"iono": "Iono",
"kofu": "Kofu",
"larry": "Larry",
"ryme": "Ryme",
"tulip": "Tulip",
"grusha": "Grusha",
"lorelei": "Lorelei",
"bruno": "Bruno",
"agatha": "Agatha",
"lance": "Lance",
"will": "Will",
"koga": "Koga",
"karen": "Karen",
"sidney": "Sidney",
"phoebe": "Phoebe",
"glacia": "Glacia",
"drake": "Drake",
"aaron": "Aaron",
"bertha": "Bertha",
"flint": "Flint",
"lucian": "Lucian",
"shauntal": "Shauntal",
"marshal": "Marshal",
"grimsley": "Grimsley",
"caitlin": "Caitlin",
"malva": "Malva",
"siebold": "Siebold",
"wikstrom": "Wikstrom",
"drasna": "Drasna",
"hala": "Hala",
"molayne": "Molayne",
"olivia": "Olivia",
"acerola": "Acerola",
"kahili": "Kahili",
"rika": "Rika",
"poppy": "Poppy",
"larry_elite": "Larry", // Does this really need to be an extra entry? (it is in trainer-type.ts so I added it here)
"hassel": "Hassel",
"crispin": "Crispin",
"amarys": "Amarys",
"lacey": "Lacey",
"drayton": "Drayton",
"blue": "Blue",
"red": "Red",
"lance_champion": "Lance", // Does this really need to be an extra entry? (it is in trainer-type.ts so I added it here)
"steven": "Steven",
"wallace": "Wallace",
"cynthia": "Cynthia",
"alder": "Alder",
"iris": "Iris",
"diantha": "Diantha",
"hau": "Hau",
"geeta": "Geeta",
"nemona": "Nemona",
"kieran": "Kieran",
"leon": "Leon",
"rival": "Finn",
"rival_female": "Ivy",
} as const;

View File

@ -10,6 +10,7 @@ import { pokemon } from "./pokemon";
import { pokemonStat } from "./pokemon-stat";
import { starterSelectUiHandler } from "./starter-select-ui-handler";
import { tutorial } from "./tutorial";
import { titles,trainerClasses,trainerNames } from "./trainers";
export const frConfig = {
@ -24,5 +25,8 @@ export const frConfig = {
pokemonStat: pokemonStat,
pokemon: pokemon,
starterSelectUiHandler: starterSelectUiHandler,
titles: titles,
trainerClasses: trainerClasses,
trainerNames: trainerNames,
tutorial: tutorial
}

218
src/locales/fr/trainers.ts Normal file
View File

@ -0,0 +1,218 @@
import {SimpleTranslationEntries} from "#app/plugins/i18n";
// Titles of special trainers like gym leaders, elite four, and the champion
export const titles: SimpleTranslationEntries = {
"elite_four": "Elite Four",
"gym_leader": "Gym Leader",
"gym_leader_female": "Gym Leader",
"champion": "Champion",
"rival": "Rival",
"professor": "Professor",
"frontier_brain": "Frontier Brain",
// Maybe if we add the evil teams we can add "Team Rocket" and "Team Aqua" etc. here as well as "Team Rocket Boss" and "Team Aqua Admin" etc.
} as const;
// Titles of trainers like "Youngster" or "Lass"
export const trainerClasses: SimpleTranslationEntries = {
"ace_trainer": "Ace Trainer",
"ace_trainer_female": "Ace Trainer",
"artist": "Artist",
"artist_female": "Artist",
"backers": "Backers",
"backpacker": "Backpacker",
"backpacker_female": "Backpacker",
"baker": "Baker",
"battle_girl": "Battle Girl",
"beauty": "Beauty",
"biker": "Biker",
"black_belt": "Black Belt",
"breeder": "Breeder",
"breeder_female": "Breeder",
"clerk": "Clerk",
"clerk_female": "Clerk",
"cyclist": "Cyclist",
"cyclist_female": "Cyclist",
"dancer": "Dancer",
"dancer_female": "Dancer",
"depot_agent": "Depot Agent",
"doctor": "Doctor",
"doctor_female": "Doctor",
"fishermen": "Fishermen",
"fishermen_female": "Fishermen",
"guitarist": "Guitarist",
"guitarist_female": "Guitarist",
"harlequin": "Harlequin",
"hiker": "Hiker",
"hooligans": "Hooligans",
"hoopster": "Hoopster",
"infielder": "Infielder",
"janitor": "Janitor",
"lady": "Lady",
"lass": "Lass",
"linebacker": "Linebacker",
"maid": "Maid",
"madame": "Madame",
"musican": "Musician",
"hex_manic": "Hex Manic",
"nurse": "Nurse",
"nursery_aide": "Nursery Aide",
"officer": "Officer",
"parasol_lady": "Parasol Lady",
"pilot": "Pilot",
"pokefan": "Pokefan",
"preschooler": "Preschooler",
"preschooler_female": "Preschooler",
"psychic": "Psychic",
"psychic_female": "Psychic",
"ranger": "Ranger",
"rich": "Gentleman", // Gentleman is the english name but the trainerType is rich
"rich_kid": "Rich Kid",
"roughneck": "Roughneck",
"scientist": "Scientist",
"scientist_female": "Scientist",
"smasher": "Smasher",
"snow_worker": "Snow Worker",
"snow_worker_female": "Snow Worker",
"striker": "Striker",
"school_kid": "School Kid",
"school_kid_female": "School Kid",
"swimmer": "Swimmer",
"swimmer_female": "Swimmer",
"twins": "Twins",
"veteran": "Veteran",
"veteran_female": "Veteran",
"waiter": "Waiter",
"waitress": "Waitress",
"worker": "Worker",
"worker_female": "Worker",
"youngster": "Youngster"
} as const;
// Names of special trainers like gym leaders, elite four, and the champion
export const trainerNames: SimpleTranslationEntries = {
"brock": "Brock",
"misty": "Misty",
"lt_surge": "Lt Surge",
"erika": "Erika",
"janine": "Janine",
"sabrina": "Sabrina",
"blaine": "Blaine",
"giovanni": "Giovanni",
"falkner": "Falkner",
"bugsy": "Bugsy",
"whitney": "Whitney",
"morty": "Morty",
"chuck": "Chuck",
"jasmine": "Jasmine",
"pryce": "Pryce",
"clair": "Clair",
"roxanne": "Roxanne",
"brawly": "Brawly",
"wattson": "Wattson",
"flannery": "Flannery",
"norman": "Norman",
"winona": "Winona",
"tate": "Tate",
"liza": "Liza",
"juan": "Juan",
"roark": "Roark",
"gardenia": "Gardenia",
"maylene": "Maylene",
"crasher_wake": "Crasher Wake",
"fantina": "Fantina",
"byron": "Byron",
"candice": "Candice",
"volkner": "Volkner",
"cilan": "Cilan",
"chili": "Chili",
"cress": "Cress",
"cheren": "Cheren",
"lenora": "Lenora",
"roxie": "Roxie",
"burgh": "Burgh",
"elesa": "Elesa",
"clay": "Clay",
"skyla": "Skyla",
"brycen": "Brycen",
"drayden": "Drayden",
"marlon": "Marlon",
"viola": "Viola",
"grant": "Grant",
"korrina": "Korrina",
"ramos": "Ramos",
"clemont": "Clemont",
"valerie": "Valerie",
"olympia": "Olympia",
"wulfric": "Wulfric",
"milo": "Milo",
"nessa": "Nessa",
"kabu": "Kabu",
"bea": "Bea",
"allister": "Allister",
"opal": "Opal",
"bede": "Bede",
"gordie": "Gordie",
"melony": "Melony",
"piers": "Piers",
"marnie": "Marnie",
"raihan": "Raihan",
"katy": "Katy",
"brassius": "Brassius",
"iono": "Iono",
"kofu": "Kofu",
"larry": "Larry",
"ryme": "Ryme",
"tulip": "Tulip",
"grusha": "Grusha",
"lorelei": "Lorelei",
"bruno": "Bruno",
"agatha": "Agatha",
"lance": "Lance",
"will": "Will",
"koga": "Koga",
"karen": "Karen",
"sidney": "Sidney",
"phoebe": "Phoebe",
"glacia": "Glacia",
"drake": "Drake",
"aaron": "Aaron",
"bertha": "Bertha",
"flint": "Flint",
"lucian": "Lucian",
"shauntal": "Shauntal",
"marshal": "Marshal",
"grimsley": "Grimsley",
"caitlin": "Caitlin",
"malva": "Malva",
"siebold": "Siebold",
"wikstrom": "Wikstrom",
"drasna": "Drasna",
"hala": "Hala",
"molayne": "Molayne",
"olivia": "Olivia",
"acerola": "Acerola",
"kahili": "Kahili",
"rika": "Rika",
"poppy": "Poppy",
"larry_elite": "Larry", // Does this really need to be an extra entry? (it is in trainer-type.ts so I added it here)
"hassel": "Hassel",
"crispin": "Crispin",
"amarys": "Amarys",
"lacey": "Lacey",
"drayton": "Drayton",
"blue": "Blue",
"red": "Red",
"lance_champion": "Lance", // Does this really need to be an extra entry? (it is in trainer-type.ts so I added it here)
"steven": "Steven",
"wallace": "Wallace",
"cynthia": "Cynthia",
"alder": "Alder",
"iris": "Iris",
"diantha": "Diantha",
"hau": "Hau",
"geeta": "Geeta",
"nemona": "Nemona",
"kieran": "Kieran",
"leon": "Leon",
"rival": "Finn",
"rival_female": "Ivy",} as const;

View File

@ -10,6 +10,7 @@ import { pokemon } from "./pokemon";
import { pokemonStat } from "./pokemon-stat";
import { starterSelectUiHandler } from "./starter-select-ui-handler";
import { tutorial } from "./tutorial";
import { titles,trainerClasses,trainerNames } from "./trainers";
export const itConfig = {
@ -24,5 +25,8 @@ export const itConfig = {
pokemonStat: pokemonStat,
pokemon: pokemon,
starterSelectUiHandler: starterSelectUiHandler,
titles: titles,
trainerClasses: trainerClasses,
trainerNames: trainerNames,
tutorial: tutorial
}

219
src/locales/it/trainers.ts Normal file
View File

@ -0,0 +1,219 @@
import {SimpleTranslationEntries} from "#app/plugins/i18n";
// Titles of special trainers like gym leaders, elite four, and the champion
export const titles: SimpleTranslationEntries = {
"elite_four": "Elite Four",
"gym_leader": "Gym Leader",
"gym_leader_female": "Gym Leader",
"champion": "Champion",
"rival": "Rival",
"professor": "Professor",
"frontier_brain": "Frontier Brain",
// Maybe if we add the evil teams we can add "Team Rocket" and "Team Aqua" etc. here as well as "Team Rocket Boss" and "Team Aqua Admin" etc.
} as const;
// Titles of trainers like "Youngster" or "Lass"
export const trainerClasses: SimpleTranslationEntries = {
"ace_trainer": "Ace Trainer",
"ace_trainer_female": "Ace Trainer",
"artist": "Artist",
"artist_female": "Artist",
"backers": "Backers",
"backpacker": "Backpacker",
"backpacker_female": "Backpacker",
"baker": "Baker",
"battle_girl": "Battle Girl",
"beauty": "Beauty",
"biker": "Biker",
"black_belt": "Black Belt",
"breeder": "Breeder",
"breeder_female": "Breeder",
"clerk": "Clerk",
"clerk_female": "Clerk",
"cyclist": "Cyclist",
"cyclist_female": "Cyclist",
"dancer": "Dancer",
"dancer_female": "Dancer",
"depot_agent": "Depot Agent",
"doctor": "Doctor",
"doctor_female": "Doctor",
"fishermen": "Fishermen",
"fishermen_female": "Fishermen",
"guitarist": "Guitarist",
"guitarist_female": "Guitarist",
"harlequin": "Harlequin",
"hiker": "Hiker",
"hooligans": "Hooligans",
"hoopster": "Hoopster",
"infielder": "Infielder",
"janitor": "Janitor",
"lady": "Lady",
"lass": "Lass",
"linebacker": "Linebacker",
"maid": "Maid",
"madame": "Madame",
"musican": "Musician",
"hex_manic": "Hex Manic",
"nurse": "Nurse",
"nursery_aide": "Nursery Aide",
"officer": "Officer",
"parasol_lady": "Parasol Lady",
"pilot": "Pilot",
"pokefan": "Pokefan",
"preschooler": "Preschooler",
"preschooler_female": "Preschooler",
"psychic": "Psychic",
"psychic_female": "Psychic",
"ranger": "Ranger",
"rich": "Gentleman", // Gentleman is the english name but the trainerType is rich
"rich_kid": "Rich Kid",
"roughneck": "Roughneck",
"scientist": "Scientist",
"scientist_female": "Scientist",
"smasher": "Smasher",
"snow_worker": "Snow Worker",
"snow_worker_female": "Snow Worker",
"striker": "Striker",
"school_kid": "School Kid",
"school_kid_female": "School Kid",
"swimmer": "Swimmer",
"swimmer_female": "Swimmer",
"twins": "Twins",
"veteran": "Veteran",
"veteran_female": "Veteran",
"waiter": "Waiter",
"waitress": "Waitress",
"worker": "Worker",
"worker_female": "Worker",
"youngster": "Youngster"
} as const;
// Names of special trainers like gym leaders, elite four, and the champion
export const trainerNames: SimpleTranslationEntries = {
"brock": "Brock",
"misty": "Misty",
"lt_surge": "Lt Surge",
"erika": "Erika",
"janine": "Janine",
"sabrina": "Sabrina",
"blaine": "Blaine",
"giovanni": "Giovanni",
"falkner": "Falkner",
"bugsy": "Bugsy",
"whitney": "Whitney",
"morty": "Morty",
"chuck": "Chuck",
"jasmine": "Jasmine",
"pryce": "Pryce",
"clair": "Clair",
"roxanne": "Roxanne",
"brawly": "Brawly",
"wattson": "Wattson",
"flannery": "Flannery",
"norman": "Norman",
"winona": "Winona",
"tate": "Tate",
"liza": "Liza",
"juan": "Juan",
"roark": "Roark",
"gardenia": "Gardenia",
"maylene": "Maylene",
"crasher_wake": "Crasher Wake",
"fantina": "Fantina",
"byron": "Byron",
"candice": "Candice",
"volkner": "Volkner",
"cilan": "Cilan",
"chili": "Chili",
"cress": "Cress",
"cheren": "Cheren",
"lenora": "Lenora",
"roxie": "Roxie",
"burgh": "Burgh",
"elesa": "Elesa",
"clay": "Clay",
"skyla": "Skyla",
"brycen": "Brycen",
"drayden": "Drayden",
"marlon": "Marlon",
"viola": "Viola",
"grant": "Grant",
"korrina": "Korrina",
"ramos": "Ramos",
"clemont": "Clemont",
"valerie": "Valerie",
"olympia": "Olympia",
"wulfric": "Wulfric",
"milo": "Milo",
"nessa": "Nessa",
"kabu": "Kabu",
"bea": "Bea",
"allister": "Allister",
"opal": "Opal",
"bede": "Bede",
"gordie": "Gordie",
"melony": "Melony",
"piers": "Piers",
"marnie": "Marnie",
"raihan": "Raihan",
"katy": "Katy",
"brassius": "Brassius",
"iono": "Iono",
"kofu": "Kofu",
"larry": "Larry",
"ryme": "Ryme",
"tulip": "Tulip",
"grusha": "Grusha",
"lorelei": "Lorelei",
"bruno": "Bruno",
"agatha": "Agatha",
"lance": "Lance",
"will": "Will",
"koga": "Koga",
"karen": "Karen",
"sidney": "Sidney",
"phoebe": "Phoebe",
"glacia": "Glacia",
"drake": "Drake",
"aaron": "Aaron",
"bertha": "Bertha",
"flint": "Flint",
"lucian": "Lucian",
"shauntal": "Shauntal",
"marshal": "Marshal",
"grimsley": "Grimsley",
"caitlin": "Caitlin",
"malva": "Malva",
"siebold": "Siebold",
"wikstrom": "Wikstrom",
"drasna": "Drasna",
"hala": "Hala",
"molayne": "Molayne",
"olivia": "Olivia",
"acerola": "Acerola",
"kahili": "Kahili",
"rika": "Rika",
"poppy": "Poppy",
"larry_elite": "Larry", // Does this really need to be an extra entry? (it is in trainer-type.ts so I added it here)
"hassel": "Hassel",
"crispin": "Crispin",
"amarys": "Amarys",
"lacey": "Lacey",
"drayton": "Drayton",
"blue": "Blue",
"red": "Red",
"lance_champion": "Lance", // Does this really need to be an extra entry? (it is in trainer-type.ts so I added it here)
"steven": "Steven",
"wallace": "Wallace",
"cynthia": "Cynthia",
"alder": "Alder",
"iris": "Iris",
"diantha": "Diantha",
"hau": "Hau",
"geeta": "Geeta",
"nemona": "Nemona",
"kieran": "Kieran",
"leon": "Leon",
"rival": "Finn",
"rival_female": "Ivy",
} as const;

View File

@ -10,6 +10,7 @@ import { pokemon } from "./pokemon";
import { pokemonStat } from "./pokemon-stat";
import { starterSelectUiHandler } from "./starter-select-ui-handler";
import { tutorial } from "./tutorial";
import { titles,trainerClasses,trainerNames } from "./trainers";
export const zhCnConfig = {
@ -24,5 +25,8 @@ export const zhCnConfig = {
pokemonStat: pokemonStat,
pokemon: pokemon,
starterSelectUiHandler: starterSelectUiHandler,
titles: titles,
trainerClasses: trainerClasses,
trainerNames: trainerNames,
tutorial: tutorial
}

View File

@ -0,0 +1,218 @@
import {SimpleTranslationEntries} from "#app/plugins/i18n";
// Titles of special trainers like gym leaders, elite four, and the champion
export const titles: SimpleTranslationEntries = {
"elite_four": "Elite Four",
"gym_leader": "Gym Leader",
"gym_leader_female": "Gym Leader",
"champion": "Champion",
"rival": "Rival",
"professor": "Professor",
"frontier_brain": "Frontier Brain",
// Maybe if we add the evil teams we can add "Team Rocket" and "Team Aqua" etc. here as well as "Team Rocket Boss" and "Team Aqua Admin" etc.
} as const;
// Titles of trainers like "Youngster" or "Lass"
export const trainerClasses: SimpleTranslationEntries = {
"ace_trainer": "Ace Trainer",
"ace_trainer_female": "Ace Trainer",
"artist": "Artist",
"artist_female": "Artist",
"backers": "Backers",
"backpacker": "Backpacker",
"backpacker_female": "Backpacker",
"baker": "Baker",
"battle_girl": "Battle Girl",
"beauty": "Beauty",
"biker": "Biker",
"black_belt": "Black Belt",
"breeder": "Breeder",
"breeder_female": "Breeder",
"clerk": "Clerk",
"clerk_female": "Clerk",
"cyclist": "Cyclist",
"cyclist_female": "Cyclist",
"dancer": "Dancer",
"dancer_female": "Dancer",
"depot_agent": "Depot Agent",
"doctor": "Doctor",
"doctor_female": "Doctor",
"fishermen": "Fishermen",
"fishermen_female": "Fishermen",
"guitarist": "Guitarist",
"guitarist_female": "Guitarist",
"harlequin": "Harlequin",
"hiker": "Hiker",
"hooligans": "Hooligans",
"hoopster": "Hoopster",
"infielder": "Infielder",
"janitor": "Janitor",
"lady": "Lady",
"lass": "Lass",
"linebacker": "Linebacker",
"maid": "Maid",
"madame": "Madame",
"musican": "Musician",
"hex_manic": "Hex Manic",
"nurse": "Nurse",
"nursery_aide": "Nursery Aide",
"officer": "Officer",
"parasol_lady": "Parasol Lady",
"pilot": "Pilot",
"pokefan": "Pokefan",
"preschooler": "Preschooler",
"preschooler_female": "Preschooler",
"psychic": "Psychic",
"psychic_female": "Psychic",
"ranger": "Ranger",
"rich": "Gentleman", // Gentleman is the english name but the trainerType is rich
"rich_kid": "Rich Kid",
"roughneck": "Roughneck",
"scientist": "Scientist",
"scientist_female": "Scientist",
"smasher": "Smasher",
"snow_worker": "Snow Worker",
"snow_worker_female": "Snow Worker",
"striker": "Striker",
"school_kid": "School Kid",
"school_kid_female": "School Kid",
"swimmer": "Swimmer",
"swimmer_female": "Swimmer",
"twins": "Twins",
"veteran": "Veteran",
"veteran_female": "Veteran",
"waiter": "Waiter",
"waitress": "Waitress",
"worker": "Worker",
"worker_female": "Worker",
"youngster": "Youngster"
} as const;
// Names of special trainers like gym leaders, elite four, and the champion
export const trainerNames: SimpleTranslationEntries = {
"brock": "Brock",
"misty": "Misty",
"lt_surge": "Lt Surge",
"erika": "Erika",
"janine": "Janine",
"sabrina": "Sabrina",
"blaine": "Blaine",
"giovanni": "Giovanni",
"falkner": "Falkner",
"bugsy": "Bugsy",
"whitney": "Whitney",
"morty": "Morty",
"chuck": "Chuck",
"jasmine": "Jasmine",
"pryce": "Pryce",
"clair": "Clair",
"roxanne": "Roxanne",
"brawly": "Brawly",
"wattson": "Wattson",
"flannery": "Flannery",
"norman": "Norman",
"winona": "Winona",
"tate": "Tate",
"liza": "Liza",
"juan": "Juan",
"roark": "Roark",
"gardenia": "Gardenia",
"maylene": "Maylene",
"crasher_wake": "Crasher Wake",
"fantina": "Fantina",
"byron": "Byron",
"candice": "Candice",
"volkner": "Volkner",
"cilan": "Cilan",
"chili": "Chili",
"cress": "Cress",
"cheren": "Cheren",
"lenora": "Lenora",
"roxie": "Roxie",
"burgh": "Burgh",
"elesa": "Elesa",
"clay": "Clay",
"skyla": "Skyla",
"brycen": "Brycen",
"drayden": "Drayden",
"marlon": "Marlon",
"viola": "Viola",
"grant": "Grant",
"korrina": "Korrina",
"ramos": "Ramos",
"clemont": "Clemont",
"valerie": "Valerie",
"olympia": "Olympia",
"wulfric": "Wulfric",
"milo": "Milo",
"nessa": "Nessa",
"kabu": "Kabu",
"bea": "Bea",
"allister": "Allister",
"opal": "Opal",
"bede": "Bede",
"gordie": "Gordie",
"melony": "Melony",
"piers": "Piers",
"marnie": "Marnie",
"raihan": "Raihan",
"katy": "Katy",
"brassius": "Brassius",
"iono": "Iono",
"kofu": "Kofu",
"larry": "Larry",
"ryme": "Ryme",
"tulip": "Tulip",
"grusha": "Grusha",
"lorelei": "Lorelei",
"bruno": "Bruno",
"agatha": "Agatha",
"lance": "Lance",
"will": "Will",
"koga": "Koga",
"karen": "Karen",
"sidney": "Sidney",
"phoebe": "Phoebe",
"glacia": "Glacia",
"drake": "Drake",
"aaron": "Aaron",
"bertha": "Bertha",
"flint": "Flint",
"lucian": "Lucian",
"shauntal": "Shauntal",
"marshal": "Marshal",
"grimsley": "Grimsley",
"caitlin": "Caitlin",
"malva": "Malva",
"siebold": "Siebold",
"wikstrom": "Wikstrom",
"drasna": "Drasna",
"hala": "Hala",
"molayne": "Molayne",
"olivia": "Olivia",
"acerola": "Acerola",
"kahili": "Kahili",
"rika": "Rika",
"poppy": "Poppy",
"larry_elite": "Larry", // Does this really need to be an extra entry? (it is in trainer-type.ts so I added it here)
"hassel": "Hassel",
"crispin": "Crispin",
"amarys": "Amarys",
"lacey": "Lacey",
"drayton": "Drayton",
"blue": "Blue",
"red": "Red",
"lance_champion": "Lance", // Does this really need to be an extra entry? (it is in trainer-type.ts so I added it here)
"steven": "Steven",
"wallace": "Wallace",
"cynthia": "Cynthia",
"alder": "Alder",
"iris": "Iris",
"diantha": "Diantha",
"hau": "Hau",
"geeta": "Geeta",
"nemona": "Nemona",
"kieran": "Kieran",
"leon": "Leon",
"rival": "Rival",
} as const;

View File

@ -7,7 +7,6 @@ import { esConfig } from '#app/locales/es/config.js';
import { frConfig } from '#app/locales/fr/config.js';
import { itConfig } from '#app/locales/it/config.js';
import { zhCnConfig } from '#app/locales/zh_CN/config.js';
export interface SimpleTranslationEntries {
[key: string]: string
}
@ -35,11 +34,18 @@ export interface Localizable {
}
export function initI18n(): void {
// Prevent reinitialization
if (isInitialized) {
return;
}
isInitialized = true;
let lang = '';
if (localStorage.getItem('prLang'))
lang = localStorage.getItem('prLang');
/**
* i18next is a localization library for maintaining and using translation resources.
*
@ -101,6 +107,9 @@ declare module 'i18next' {
pokemonStat: SimpleTranslationEntries;
commandUiHandler: SimpleTranslationEntries;
fightUiHandler: SimpleTranslationEntries;
titles: SimpleTranslationEntries;
trainerClasses: SimpleTranslationEntries;
trainerNames: SimpleTranslationEntries;
tutorial: SimpleTranslationEntries;
starterSelectUiHandler: SimpleTranslationEntries;
};
@ -108,3 +117,9 @@ declare module 'i18next' {
}
export default i18next;
export function getIsInitialized(): boolean {
return isInitialized;
}
let isInitialized = false;