Update trainer-config.ts

This commit is contained in:
Blitzy 2025-04-24 23:06:57 -05:00 committed by GitHub
parent c1fe825983
commit 452bcb1a7c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -2857,7 +2857,7 @@ export const trainerConfigs: TrainerConfigs = {
.setBattleBgm("battle_kanto_gym")
.setMixedBattleBgm("battle_kanto_gym")
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.DEWGONG ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.SLOWBRO, Species.GALAR_SLOWBRO ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.SLOWBRO, Species.GALAR_SLOWBRO ])) // Tera Ice Slowbro/G-Slowbro
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.JYNX ]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.CLOYSTER, Species.ALOLA_SANDSLASH ]))
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.LAPRAS ], TrainerSlot.TRAINER, true, p => {
@ -2869,7 +2869,7 @@ export const trainerConfigs: TrainerConfigs = {
.setBattleBgm("battle_kanto_gym")
.setMixedBattleBgm("battle_kanto_gym")
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.HITMONCHAN, Species.HITMONLEE, Species.HITMONTOP ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.STEELIX ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.STEELIX ])) // Tera Fighting Steelix
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.POLIWRATH ]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.ANNIHILAPE ]))
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.MACHAMP ], TrainerSlot.TRAINER, true, p => {
@ -2881,7 +2881,7 @@ export const trainerConfigs: TrainerConfigs = {
.setBattleBgm("battle_kanto_gym")
.setMixedBattleBgm("battle_kanto_gym")
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.MISMAGIUS ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.WEEZING, Species.ARBOK ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.WEEZING, Species.ARBOK ])) // Tera Ghost Weezing/Arbok
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.ALOLA_MAROWAK ]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.CURSOLA ]))
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.GENGAR ], TrainerSlot.TRAINER, true, p => {
@ -2894,7 +2894,7 @@ export const trainerConfigs: TrainerConfigs = {
.setBattleBgm("battle_kanto_gym")
.setMixedBattleBgm("battle_kanto_gym")
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.KINGDRA ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.GYARADOS ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.GYARADOS, Species.AERODACTYL ])) // Tera Dragon Gyarados/Aerodactyl
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.ALOLA_EXEGGUTOR ]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.SALAMENCE ]))
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.DRAGONITE ], TrainerSlot.TRAINER, true, p => {
@ -2906,7 +2906,7 @@ export const trainerConfigs: TrainerConfigs = {
.setBattleBgm("battle_johto_gym")
.setMixedBattleBgm("battle_johto_gym")
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.JYNX ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.SLOWKING, Species.GALAR_SLOWKING ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.SLOWKING, Species.GALAR_SLOWKING ])) // Tera Psychic Slowking/G-Slowking
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.EXEGGUTOR ]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.FARIGIRAF, Species.WYRDEER ]))
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.XATU ], TrainerSlot.TRAINER, true, p => {
@ -2917,10 +2917,13 @@ export const trainerConfigs: TrainerConfigs = {
.initForEliteFour(signatureSpecies["KOGA"], true, PokemonType.POISON, 2)
.setBattleBgm("battle_johto_gym")
.setMixedBattleBgm("battle_johto_gym")
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.ARIADOS ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.VENOMOTH ]))
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.MUK, Species.WEEZING ]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.TENTACRUEL ]))
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.VENOMOTH ], TrainerSlot.TRAINER, true, p => {
p.abilityIndex = 1; // Tinted Lens
p.generateAndPopulateMoveset();
}))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.MUK, Species.WEEZING ])) // Tera Poison Muk/Weezing
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.TENTACRUEL ]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.SNEASLER, Species.OVERQWIL ]))
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.CROBAT ], TrainerSlot.TRAINER, true, p => {
p.setBoss(true, 2);
p.generateAndPopulateMoveset();
@ -2930,7 +2933,7 @@ export const trainerConfigs: TrainerConfigs = {
.setBattleBgm("battle_johto_gym")
.setMixedBattleBgm("battle_johto_gym")
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.UMBREON ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.GENGAR ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.GENGAR ])) // Tera Dark Gengar
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.HONCHKROW ]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.WEAVILE ]))
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.HOUNDOOM ], TrainerSlot.TRAINER, true, p => {
@ -2941,9 +2944,9 @@ export const trainerConfigs: TrainerConfigs = {
.initForEliteFour(signatureSpecies["SIDNEY"], true, PokemonType.DARK, 2)
.setMixedBattleBgm("battle_hoenn_elite")
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.MIGHTYENA ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.SHARPEDO, Species.CRAWDAUNT ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.OBSTAGOON ])) // Tera Dark Obstagoon
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.SHIFTRY, Species.CACTURNE ]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.OBSTAGOON ]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.SHARPEDO, Species.CRAWDAUNT ]))
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.ABSOL ], TrainerSlot.TRAINER, true, p => {
p.setBoss(true, 2);
p.generateAndPopulateMoveset();
@ -2952,11 +2955,11 @@ export const trainerConfigs: TrainerConfigs = {
.initForEliteFour(signatureSpecies["PHOEBE"], false, PokemonType.GHOST, 2)
.setMixedBattleBgm("battle_hoenn_elite")
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.SABLEYE ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.BANETTE ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.BANETTE ])) // Tera Ghost Banette
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.DRIFBLIM, Species.MISMAGIUS ]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.ORICORIO, Species.ALOLA_MAROWAK ], TrainerSlot.TRAINER, true, p => {
p.generateAndPopulateMoveset();
p.formIndex = p.species.speciesId === Species.ORICORIO ? 3 : 0;
p.formIndex = p.species.speciesId === Species.ORICORIO ? 3 : 0; // Oricorio-Sensu
}),
)
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.DUSKNOIR ], TrainerSlot.TRAINER, true, p => {
@ -2966,10 +2969,13 @@ export const trainerConfigs: TrainerConfigs = {
[TrainerType.GLACIA]: new TrainerConfig(++t)
.initForEliteFour(signatureSpecies["GLACIA"], false, PokemonType.ICE, 2)
.setMixedBattleBgm("battle_hoenn_elite")
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.ABOMASNOW ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.GLALIE ]))
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.ABOMASNOW ], TrainerSlot.TRAINER, true, p => {
p.abilityIndex = 0; // Snow Warning
p.generateAndPopulateMoveset();
}))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.GLALIE ])) // Tera Ice Glalie
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.FROSLASS ]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.CASTFORM ]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.ALOLA_NINETALES ]))
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.WALREIN ], TrainerSlot.TRAINER, true, p => {
p.setBoss(true, 2);
p.generateAndPopulateMoveset();
@ -2978,7 +2984,7 @@ export const trainerConfigs: TrainerConfigs = {
.initForEliteFour(signatureSpecies["DRAKE"], true, PokemonType.DRAGON, 2)
.setMixedBattleBgm("battle_hoenn_elite")
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.ALTARIA ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.DHELMISE ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.DHELMISE ])) // Tera Dragon Dhelmise
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.FLYGON ]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.KINGDRA ]))
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.SALAMENCE ], TrainerSlot.TRAINER, true, p => {
@ -2995,6 +3001,7 @@ export const trainerConfigs: TrainerConfigs = {
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.SCIZOR, Species.KLEAVOR ]))
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.DRAPION ], TrainerSlot.TRAINER, true, p => { // Tera Bug Drapion
p.setBoss(true, 2);
p.abilityIndex = 1; // Sniper
p.generateAndPopulateMoveset();
})),
[TrainerType.BERTHA]: new TrainerConfig(++t)
@ -3002,11 +3009,15 @@ export const trainerConfigs: TrainerConfigs = {
.setBattleBgm("battle_sinnoh_gym")
.setMixedBattleBgm("battle_sinnoh_gym")
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.WHISCASH ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.HIPPOWDON ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.HIPPOWDON ], TrainerSlot.TRAINER, true, p => { // Tera Ground Hippowdon
p.abilityIndex = 0; // Sand Stream
p.generateAndPopulateMoveset();
}))
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.GLISCOR ]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.MAMOSWINE, Species.URSALUNA ]))
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.RHYPERIOR ], TrainerSlot.TRAINER, true, p => {
p.setBoss(true, 2);
p.abilityIndex = 1; // Solid Rock
p.generateAndPopulateMoveset();
})),
[TrainerType.FLINT]: new TrainerConfig(++t)
@ -3014,7 +3025,7 @@ export const trainerConfigs: TrainerConfigs = {
.setBattleBgm("battle_sinnoh_gym")
.setMixedBattleBgm("battle_sinnoh_gym")
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.RAPIDASH ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.STEELIX, Species.LOPUNNY ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.STEELIX, Species.LOPUNNY ])) // Tera Fire Steelix/Lopunny
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.INFERNAPE ]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.ARCANINE, Species.HISUI_ARCANINE ]))
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.MAGMORTAR ], TrainerSlot.TRAINER, true, p => {
@ -3025,19 +3036,20 @@ export const trainerConfigs: TrainerConfigs = {
.initForEliteFour(signatureSpecies["LUCIAN"], true, PokemonType.PSYCHIC, 2)
.setBattleBgm("battle_sinnoh_gym")
.setMixedBattleBgm("battle_sinnoh_gym")
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.ESPEON ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.FARIGIRAF ]))
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.ALAKAZAM, Species.ESPEON ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.FARIGIRAF ])) // Tera Psychic Farigiraf
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.BRONZONG ]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.ALAKAZAM ]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.MR_RIME, Species.HISUI_BRAVIARY ]))
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.GALLADE ], TrainerSlot.TRAINER, true, p => {
p.setBoss(true, 2);
p.abilityIndex = 1; // Sharpness
p.generateAndPopulateMoveset();
})),
[TrainerType.SHAUNTAL]: new TrainerConfig(++t)
.initForEliteFour(signatureSpecies["SHAUNTAL"], false, PokemonType.GHOST, 2)
.setMixedBattleBgm("battle_unova_elite")
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.COFAGRIGUS ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.GOLURK ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.GOLURK ])) // Tera Ghost Golurk
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.JELLICENT ]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.BASCULEGION, Species.HISUI_ZOROARK ]))
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.CHANDELURE ], TrainerSlot.TRAINER, true, p => {
@ -3048,7 +3060,7 @@ export const trainerConfigs: TrainerConfigs = {
.initForEliteFour(signatureSpecies["MARSHAL"], true, PokemonType.FIGHTING, 2)
.setMixedBattleBgm("battle_unova_elite")
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.THROH, Species.SAWK ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.MIENSHAO ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.MIENSHAO ])) // Tera Fighting Mienshao
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.EMBOAR ]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.HISUI_LILLIGANT ]))
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.CONKELDURR ], TrainerSlot.TRAINER, true, p => {
@ -3059,7 +3071,7 @@ export const trainerConfigs: TrainerConfigs = {
.initForEliteFour(signatureSpecies["GRIMSLEY"], true, PokemonType.DARK, 2)
.setMixedBattleBgm("battle_unova_elite")
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.LIEPARD ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.KROOKODILE ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.KROOKODILE ])) // Tera Dark Krookodile
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.SCRAFTY ]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.HISUI_SAMUROTT ]))
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.KINGAMBIT ], TrainerSlot.TRAINER, true, p => {
@ -3070,9 +3082,12 @@ export const trainerConfigs: TrainerConfigs = {
.initForEliteFour(signatureSpecies["CAITLIN"], false, PokemonType.PSYCHIC, 2)
.setMixedBattleBgm("battle_unova_elite")
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.MUSHARNA ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.REUNICLUS ]))
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.BEHEEYEM ]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.SIGLIYPH, Species.HISUI_BRAVIARY ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.REUNICLUS ])) // Tera Psychic Reuniclus
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.GALLADE ], TrainerSlot.TRAINER, true, p => {
p.abilityIndex = 1; // Sharpness
p.generateAndPopulateMoveset();
}))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.SIGILYPH, Species.HISUI_BRAVIARY ]))
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.GOTHITELLE ], TrainerSlot.TRAINER, true, p => {
p.setBoss(true, 2);
p.generateAndPopulateMoveset();
@ -3084,9 +3099,15 @@ export const trainerConfigs: TrainerConfigs = {
p.generateAndPopulateMoveset();
p.gender = Gender.FEMALE;
}))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.HOUNDOOM ]))
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.TORKOAL ]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.SCOVILLAIN ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.HOUNDOOM ])) // Tera Fire Houndoom
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.TORKOAL ], TrainerSlot.TRAINER, true, p => {
p.abilityIndex = 1; // Drought
p.generateAndPopulateMoveset();
}))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.SCOVILLAIN ], TrainerSlot.TRAINER, true, p => {
p.abilityIndex = 0; // Chlorophyll
p.generateAndPopulateMoveset();
}))
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.TALONFLAME ], TrainerSlot.TRAINER, true, p => {
p.setBoss(true, 2);
p.generateAndPopulateMoveset();
@ -3095,18 +3116,19 @@ export const trainerConfigs: TrainerConfigs = {
.initForEliteFour(signatureSpecies["SIEBOLD"], true, PokemonType.WATER, 2)
.setMixedBattleBgm("battle_kalos_elite")
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.CLAWITZER ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.GYARADOS ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.GYARADOS ])) // Tera Water Gyarados
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.STARMIE ]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.DONDOZO ]))
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.BARBARACLE ], TrainerSlot.TRAINER, true, p => {
p.setBoss(true, 2);
p.abilityIndex = 1; // Tough Claws
p.generateAndPopulateMoveset();
})),
[TrainerType.WIKSTROM]: new TrainerConfig(++t)
.initForEliteFour(signatureSpecies["WIKSTROM"], true, PokemonType.STEEL, 2)
.setMixedBattleBgm("battle_kalos_elite")
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.KLEFKI ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.CERULEDGE ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.CERULEDGE ])) // Tera Steel Ceruledge
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.SCIZOR ]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.CORVIKNIGHT ]))
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.AEGISLASH ], TrainerSlot.TRAINER, true, p => {
@ -3117,7 +3139,7 @@ export const trainerConfigs: TrainerConfigs = {
.initForEliteFour(signatureSpecies["DRASNA"], false, PokemonType.DRAGON, 2)
.setMixedBattleBgm("battle_kalos_elite")
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.DRAGALGE ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.GARCHOMP ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.GARCHOMP ])) // Tera Dragon Garchomp
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.ALTARIA ]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.DRUDDIGON ]))
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.NOIVERN ], TrainerSlot.TRAINER, true, p => {
@ -3128,7 +3150,7 @@ export const trainerConfigs: TrainerConfigs = {
.initForEliteFour(signatureSpecies["HALA"], true, PokemonType.FIGHTING, 2)
.setMixedBattleBgm("battle_alola_elite")
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.HARIYAMA ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.INCINEROAR ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.INCINEROAR ])) // Tera Fighting Incineroar
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.BEWEAR ]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.POLIWRATH, Species.ANNIHILAPE ]))
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.CRABOMINABLE ], TrainerSlot.TRAINER, true, p => {
@ -3139,7 +3161,7 @@ export const trainerConfigs: TrainerConfigs = {
.initForEliteFour(signatureSpecies["MOLAYNE"], true, PokemonType.STEEL, 2)
.setMixedBattleBgm("battle_alola_elite")
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.KLEFKI ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.ALOLA_SANDSLASH ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.ALOLA_SANDSLASH ])) // Tera Steel A-Sandslash
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.MAGNEZONE ]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.METAGROSS, Species.KINGAMBIT ]))
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.ALOLA_DUGTRIO ], TrainerSlot.TRAINER, true, p => {
@ -3149,8 +3171,11 @@ export const trainerConfigs: TrainerConfigs = {
[TrainerType.OLIVIA]: new TrainerConfig(++t)
.initForEliteFour(signatureSpecies["OLIVIA"], false, PokemonType.ROCK, 2)
.setMixedBattleBgm("battle_alola_elite")
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.GIGALITH ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.PROBOPASS ]))
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.GIGALITH ], TrainerSlot.TRAINER, true, p => {
p.abilityIndex = 1; // Sand Stream
p.generateAndPopulateMoveset();
}))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.PROBOPASS ])) // Tera Rock Probopass
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.ALOLA_GOLEM ]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.CARBINK, Species.RELICANTH ]))
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.LYCANROC ], TrainerSlot.TRAINER, true, p => {
@ -3162,7 +3187,7 @@ export const trainerConfigs: TrainerConfigs = {
.initForEliteFour(signatureSpecies["ACEROLA"], false, PokemonType.GHOST, 2)
.setMixedBattleBgm("battle_alola_elite")
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.DRIFBLIM ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.MIMIKYU ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.MIMIKYU ])) // Tera Ghost Mimikyu
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.DHELMISE ]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.FROSLASS ]))
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.PALOSSAND ], TrainerSlot.TRAINER, true, p => {
@ -3173,7 +3198,7 @@ export const trainerConfigs: TrainerConfigs = {
.initForEliteFour(signatureSpecies["KAHILI"], false, PokemonType.FLYING)
.setMixedBattleBgm("battle_alola_elite")
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.HAWLUCHA ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.DECIDUEYE ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.DECIDUEYE ])) // Tera Flying Decidueye
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.BRAVIARY, Species.MANDIBUZZ ]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.ORICORIO ]))
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.TOUCANNON ], TrainerSlot.TRAINER, true, p => {
@ -3185,8 +3210,8 @@ export const trainerConfigs: TrainerConfigs = {
.initForEliteFour(signatureSpecies["MARNIE_ELITE"], false, PokemonType.DARK, 2)
.setMixedBattleBgm("battle_galar_elite")
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.LIEPARD ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.TOXICROAK ]))
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.SCRAFTY ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.TOXICROAK ])) // Tera Dark Toxicroak
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.SCRAFTY, Species.PANGORO ]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.MORPEKO ]))
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.GRIMMSNARL ], TrainerSlot.TRAINER, true, p => {
p.setBoss(true, 2);
@ -3197,8 +3222,11 @@ export const trainerConfigs: TrainerConfigs = {
.initForEliteFour(signatureSpecies["NESSA_ELITE"], false, PokemonType.WATER, 2)
.setMixedBattleBgm("battle_galar_elite")
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.GOLISOPOD ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.EISCUE ]))
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.PELIPPER ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.EISCUE ])) // Tera Water Eiscue
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.PELIPPER ], TrainerSlot.TRAINER, true, p => {
p.abilityIndex = 1;
p.generateAndPopulateMoveset();
}))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.TOXAPEX ]))
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.DREDNAW ], TrainerSlot.TRAINER, true, p => {
p.setBoss(true, 2);
@ -3209,7 +3237,7 @@ export const trainerConfigs: TrainerConfigs = {
.initForEliteFour(signatureSpecies["BEA_ELITE"], false, PokemonType.FIGHTING, 2)
.setMixedBattleBgm("battle_galar_elite")
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.HAWLUCHA ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.SIRFETCHD ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.SIRFETCHD ])) // Tera Fighting Sirfetch'd
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.GRAPPLOCT, Species.FALINKS ]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.HITMONTOP ]))
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.MACHAMP ], TrainerSlot.TRAINER, true, p => {
@ -3221,7 +3249,7 @@ export const trainerConfigs: TrainerConfigs = {
.initForEliteFour(signatureSpecies["ALLISTER_ELITE"], true, PokemonType.GHOST, 2)
.setMixedBattleBgm("battle_galar_elite")
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.DUSKNOIR ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.RUNERIGUS ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.RUNERIGUS ])) // Tera Ghost Runerigus
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.POLTEAGEIST, Species.SINISTCHA ]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.CURSOLA ]))
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.GENGAR ], TrainerSlot.TRAINER, true, p => {
@ -3233,7 +3261,10 @@ export const trainerConfigs: TrainerConfigs = {
.initForEliteFour(signatureSpecies["RAIHAN_ELITE"], true, PokemonType.DRAGON, 2)
.setMixedBattleBgm("battle_galar_elite")
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.FLYGON ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.TORKOAL ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.TORKOAL ], TrainerSlot.TRAINER, true, p => { // Tera Dragon Torkoal
p.abilityIndex = 1; // Drought
p.generateAndPopulateMoveset();
}))
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.GOODRA ]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.TURTONATOR ]))
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.ARCHALUDON ], TrainerSlot.TRAINER, true, p => {
@ -3245,9 +3276,9 @@ export const trainerConfigs: TrainerConfigs = {
.setMixedBattleBgm("battle_paldea_elite")
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.WHISCASH ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.DONPHAN ]))
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.STARMIE ]))
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.TORTERRA, Species.TOEDSCRUEL ]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.CAMERUPT ]))
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.CLODSIRE ], TrainerSlot.TRAINER, true, p => {
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.CLODSIRE ], TrainerSlot.TRAINER, true, p => { // Tera Ground Clodsire
p.setBoss(true, 2);
p.generateAndPopulateMoveset();
})),
@ -3256,9 +3287,9 @@ export const trainerConfigs: TrainerConfigs = {
.setMixedBattleBgm("battle_paldea_elite")
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.COPPERAJAH ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.MAGNEZONE ]))
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.CORVIKNIGHT ]))
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.CORVIKNIGHT, Species.BRONZONG ]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.STEELIX ]))
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.TINKATON ], TrainerSlot.TRAINER, true, p => {
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.TINKATON ], TrainerSlot.TRAINER, true, p => { // Tera Steel Tinkaton
p.setBoss(true, 2);
p.generateAndPopulateMoveset();
})),
@ -3268,9 +3299,9 @@ export const trainerConfigs: TrainerConfigs = {
.setMixedBattleBgm("battle_paldea_elite")
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.ALTARIA ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.BOMBIRDIER ]))
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.ORICORIO ]))
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.TROPIUS ]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.STARAPTOR ]))
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.FLAMIGO ], TrainerSlot.TRAINER, true, p => {
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.FLAMIGO ], TrainerSlot.TRAINER, true, p => { // Tera Flying Flamigo
p.setBoss(true, 2);
p.generateAndPopulateMoveset();
})),
@ -3280,30 +3311,37 @@ export const trainerConfigs: TrainerConfigs = {
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.NOIVERN ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.DRAGALGE ]))
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.FLAPPLE, Species.APPLETUN, Species.HYDRAPPLE ]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.HISUI_GOODRA ]))
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.BAXCALIBUR ], TrainerSlot.TRAINER, true, p => {
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.HAXORUS ]))
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.BAXCALIBUR ], TrainerSlot.TRAINER, true, p => { // Tera Dragon Baxcalibur
p.setBoss(true, 2);
p.generateAndPopulateMoveset();
})),
[TrainerType.CRISPIN]: new TrainerConfig(++t)
.initForEliteFour(signatureSpecies["CRISPIN"], true, PokemonType.FIRE, 5)
.initForEliteFour(signatureSpecies["CRISPIN"], true, PokemonType.FIRE, 2)
.setMixedBattleBgm("battle_bb_elite")
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.ROTOM ], TrainerSlot.TRAINER, true, p => {
p.formIndex = 1; // Heat Rotom
p.generateAndPopulateMoveset();
}))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.CAMERUPT ]))
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.TALONFLAME ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.EXEGGUTOR ])) // Tera Fire Exeggutor
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.TALONFLAME ], TrainerSlot.TRAINER, true, p => {
p.generateAndPopulateMoveset();
if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === Moves.SUNNY_DAY)) {
// Check if Techno Blast is in the moveset, if not, replace the third move with Sunny Day.
p.moveset[2] = new PokemonMove(Moves.TECHNO_BLAST);
}
}),
)
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.MAGMORTAR ]))
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.BLAZIKEN ], TrainerSlot.TRAINER, true, p => {
p.setBoss(true, 2);
p.generateAndPopulateMoveset();
})),
[TrainerType.AMARYS]: new TrainerConfig(++t)
.initForEliteFour(signatureSpecies["AMARYS"], false, PokemonType.STEEL, 5)
.initForEliteFour(signatureSpecies["AMARYS"], false, PokemonType.STEEL, 2)
.setMixedBattleBgm("battle_bb_elite")
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.SKARMORY ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.ALOLA_DUGTRIO ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.REUNICLUS ])) // Tera Steel Reuniclus
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.EMPOLEON ]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.SCIZOR ]))
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.METAGROSS ], TrainerSlot.TRAINER, true, p => {
@ -3317,15 +3355,15 @@ export const trainerConfigs: TrainerConfigs = {
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.PRIMARINA ]))
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.GRANBULL ]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.ALCREMIE ]))
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.EXCADRILL ], TrainerSlot.TRAINER, true, p => {
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.EXCADRILL ], TrainerSlot.TRAINER, true, p => { // Tera Fairy Excadrill
p.setBoss(true, 2);
p.generateAndPopulateMoveset();
})),
[TrainerType.DRAYTON]: new TrainerConfig(++t)
.initForEliteFour(signatureSpecies["DRAYTON"], true, PokemonType.DRAGON, 5)
.initForEliteFour(signatureSpecies["DRAYTON"], true, PokemonType.DRAGON, 2)
.setMixedBattleBgm("battle_bb_elite")
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.DRAGONITE ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.FLYGON ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.SCEPTILE ])) // Tera Dragon Sceptile
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.HAXORUS ]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.KINGDRA, Species.DRACOVISH ]))
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.ARCHALUDON ], TrainerSlot.TRAINER, true, p => {
@ -3864,7 +3902,7 @@ export const trainerConfigs: TrainerConfigs = {
getRandomPartyMemberFunc([Species.GALAR_SLOWBRO, Species.GALAR_SLOWKING], TrainerSlot.TRAINER, true, p => {
p.generateAndPopulateMoveset();
p.pokeball = PokeballType.ULTRA_BALL;
p.teraType = PokemonType.PSYCHIC;
p.teraType = p.species.type1;
}),
)
.setPartyMemberFunc(
@ -3892,7 +3930,7 @@ export const trainerConfigs: TrainerConfigs = {
p.pokeball = PokeballType.ULTRA_BALL;
}),
)
.setInstantTera(2), // Tera Psychic Galar-Slowbro / Galar-Slowking
.setInstantTera(2), // Tera Poison Galar-Slowbro / Galar-Slowking
[TrainerType.GEETA]: new TrainerConfig(++t)
.initForChampion(false)
.setMixedBattleBgm("battle_champion_geeta")
@ -5169,7 +5207,7 @@ export const trainerConfigs: TrainerConfigs = {
p.pokeball = PokeballType.ULTRA_BALL;
p.formIndex = randSeedInt(4, 1); // Shock, Burn, Chill, or Douse Drive
if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === Moves.TECHNO_BLAST)) {
// Check if Techno Blast is in the moveset, if not, replace the first move with Techno Blast.
// Check if Techno Blast is in the moveset, if not, replace the third move with Techno Blast.
p.moveset[2] = new PokemonMove(Moves.TECHNO_BLAST);
}
}),