diff --git a/src/data/trainers/trainer-config.ts b/src/data/trainers/trainer-config.ts index 5659a3a35ee..b2cd13ace59 100644 --- a/src/data/trainers/trainer-config.ts +++ b/src/data/trainers/trainer-config.ts @@ -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); } }),