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