This commit is contained in:
Blitzy 2025-08-05 19:25:12 -04:00 committed by GitHub
commit 2a59918819
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -4974,21 +4974,21 @@ export const trainerConfigs: TrainerConfigs = {
.setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.NIDOQUEEN, SpeciesId.NIDOKING]))
.setPartyMemberFunc(
4,
getRandomPartyMemberFunc([SpeciesId.RHYPERIOR], TrainerSlot.TRAINER, true, p => {
p.generateAndPopulateMoveset();
p.pokeball = PokeballType.ULTRA_BALL;
p.abilityIndex = 1; // Solid Rock
}),
)
.setPartyMemberFunc(
5,
getRandomPartyMemberFunc([SpeciesId.KANGASKHAN], TrainerSlot.TRAINER, true, p => {
p.setBoss(true, 2);
p.generateAndPopulateMoveset();
p.pokeball = PokeballType.ULTRA_BALL;
p.formIndex = 1; // Mega Kangaskhan
p.generateName();
}),
)
.setPartyMemberFunc(
5,
getRandomPartyMemberFunc([SpeciesId.RHYPERIOR], TrainerSlot.TRAINER, true, p => {
p.generateAndPopulateMoveset();
p.pokeball = PokeballType.ULTRA_BALL;
p.abilityIndex = 1; // Solid Rock
p.setBoss(true, 2);
}),
),
[TrainerType.ROCKET_BOSS_GIOVANNI_2]: new TrainerConfig(++t)
.setName("Giovanni")
@ -4997,52 +4997,53 @@ export const trainerConfigs: TrainerConfigs = {
.setVictoryBgm("victory_team_plasma")
.setPartyMemberFunc(
0,
getRandomPartyMemberFunc([SpeciesId.TYRANITAR], TrainerSlot.TRAINER, true, p => {
getRandomPartyMemberFunc([SpeciesId.RHYPERIOR], TrainerSlot.TRAINER, true, p => {
p.setBoss(true, 2);
p.generateAndPopulateMoveset();
p.abilityIndex = 1; // Solid Rock
p.pokeball = PokeballType.ULTRA_BALL;
}),
)
.setPartyMemberFunc(
1,
getRandomPartyMemberFunc([SpeciesId.GASTRODON, SpeciesId.SEISMITOAD], TrainerSlot.TRAINER, true, p => {
if (p.species.speciesId === SpeciesId.GASTRODON) {
p.abilityIndex = 0; // Storm Drain
} else if (p.species.speciesId === SpeciesId.SEISMITOAD) {
p.abilityIndex = 2; // Water Absorb
}
getRandomPartyMemberFunc([SpeciesId.NIDOKING, SpeciesId.NIDOQUEEN], TrainerSlot.TRAINER, true, p => {
p.generateAndPopulateMoveset();
p.abilityIndex = 2; // Sheer Force
}),
)
.setPartyMemberFunc(
2,
getRandomPartyMemberFunc([SpeciesId.GARCHOMP, SpeciesId.EXCADRILL], TrainerSlot.TRAINER, true, p => {
getRandomPartyMemberFunc([SpeciesId.HONCHKROW], TrainerSlot.TRAINER, true, p => {
p.generateAndPopulateMoveset();
p.pokeball = PokeballType.ULTRA_BALL;
if (p.species.speciesId === SpeciesId.GARCHOMP) {
p.abilityIndex = 2; // Rough Skin
} else if (p.species.speciesId === SpeciesId.EXCADRILL) {
p.abilityIndex = 0; // Sand Rush
if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === MoveId.SUCKER_PUNCH)) {
// Check if Sucker Punch is in the moveset, if not, replace the third move with Sucker Punch.
p.moveset[2] = new PokemonMove(MoveId.SUCKER_PUNCH);
}
}),
)
.setPartyMemberFunc(
3,
getRandomPartyMemberFunc([SpeciesId.RHYPERIOR], TrainerSlot.TRAINER, true, p => {
p.generateAndPopulateMoveset();
p.pokeball = PokeballType.ULTRA_BALL;
p.abilityIndex = 1; // Solid Rock
}),
)
.setPartyMemberFunc(
4,
getRandomPartyMemberFunc([SpeciesId.KANGASKHAN], TrainerSlot.TRAINER, true, p => {
p.setBoss(true, 2);
p.generateAndPopulateMoveset();
p.pokeball = PokeballType.ULTRA_BALL;
p.formIndex = 1; // Mega Kangaskhan
p.generateName();
}),
)
.setPartyMemberFunc(
4,
getRandomPartyMemberFunc(
[SpeciesId.ARTICUNO, SpeciesId.ZAPDOS, SpeciesId.MOLTRES],
TrainerSlot.TRAINER,
true,
p => {
p.generateAndPopulateMoveset();
p.pokeball = PokeballType.ULTRA_BALL;
p.abilityIndex = 2; // Snow Cloak Articuno, Static Zapdos, Flame Body Moltres
p.setBoss(true, 2);
},
),
)
.setPartyMemberFunc(
5,
getRandomPartyMemberFunc([SpeciesId.MEWTWO], TrainerSlot.TRAINER, true, p => {
@ -5056,16 +5057,22 @@ export const trainerConfigs: TrainerConfigs = {
.initForEvilTeamLeader("Magma Boss", [])
.setMixedBattleBgm("battle_aqua_magma_boss")
.setVictoryBgm("victory_team_plasma")
.setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.SOLROCK]))
.setPartyMemberFunc(1, getRandomPartyMemberFunc([SpeciesId.TALONFLAME]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.WEEZING, SpeciesId.GALAR_WEEZING]))
.setPartyMemberFunc(
3,
0,
getRandomPartyMemberFunc([SpeciesId.TORKOAL], TrainerSlot.TRAINER, true, p => {
p.generateAndPopulateMoveset();
p.abilityIndex = 1; // Drought
}),
)
.setPartyMemberFunc(
1,
getRandomPartyMemberFunc([SpeciesId.SCOVILLAIN], TrainerSlot.TRAINER, true, p => {
p.generateAndPopulateMoveset();
p.abilityIndex = 0; // Chlorophyll
}),
)
.setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.WEEZING, SpeciesId.GALAR_WEEZING]))
.setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.SOLROCK]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.DONPHAN]))
.setPartyMemberFunc(
5,
@ -5140,14 +5147,14 @@ export const trainerConfigs: TrainerConfigs = {
.initForEvilTeamLeader("Aqua Boss", [])
.setMixedBattleBgm("battle_aqua_magma_boss")
.setVictoryBgm("victory_team_plasma")
.setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.LUDICOLO]))
.setPartyMemberFunc(
1,
0,
getRandomPartyMemberFunc([SpeciesId.PELIPPER], TrainerSlot.TRAINER, true, p => {
p.generateAndPopulateMoveset();
p.abilityIndex = 1; // Drizzle
}),
)
.setPartyMemberFunc(1, getRandomPartyMemberFunc([SpeciesId.LUDICOLO]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.MUK, SpeciesId.ALOLA_MUK]))
.setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.WAILORD]))
.setPartyMemberFunc(
@ -5225,18 +5232,16 @@ export const trainerConfigs: TrainerConfigs = {
.setMixedBattleBgm("battle_galactic_boss")
.setVictoryBgm("victory_team_plasma")
.setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.GYARADOS]))
.setPartyMemberFunc(1, getRandomPartyMemberFunc([SpeciesId.HONCHKROW, SpeciesId.HISUI_BRAVIARY]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.MAGNEZONE]))
.setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.UXIE, SpeciesId.MESPRIT, SpeciesId.AZELF]))
.setPartyMemberFunc(1, getRandomPartyMemberFunc([SpeciesId.HONCHKROW, SpeciesId.CROBAT]))
.setPartyMemberFunc(
4,
getRandomPartyMemberFunc([SpeciesId.HOUNDOOM], TrainerSlot.TRAINER, true, p => {
2,
getRandomPartyMemberFunc([SpeciesId.MAGNEZONE, SpeciesId.PROBOPASS], TrainerSlot.TRAINER, true, p => {
p.generateAndPopulateMoveset();
p.pokeball = PokeballType.ULTRA_BALL;
p.formIndex = 1; // Mega Houndoom
p.generateName();
p.abilityIndex = p.species.speciesId === SpeciesId.MAGNEZONE ? 1 : 0; // Sturdy
}),
)
.setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.UXIE, SpeciesId.MESPRIT, SpeciesId.AZELF]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.HOUNDOOM]))
.setPartyMemberFunc(
5,
getRandomPartyMemberFunc([SpeciesId.WEAVILE], TrainerSlot.TRAINER, true, p => {
@ -5258,7 +5263,13 @@ export const trainerConfigs: TrainerConfigs = {
p.generateAndPopulateMoveset();
}),
)
.setPartyMemberFunc(1, getRandomPartyMemberFunc([SpeciesId.MAGNEZONE]))
.setPartyMemberFunc(
1,
getRandomPartyMemberFunc([SpeciesId.MAGNEZONE, SpeciesId.PROBOPASS], TrainerSlot.TRAINER, true, p => {
p.generateAndPopulateMoveset();
p.abilityIndex = p.species.speciesId === SpeciesId.MAGNEZONE ? 1 : 0; // Sturdy
}),
)
.setPartyMemberFunc(
2,
getRandomPartyMemberFunc([SpeciesId.UXIE, SpeciesId.MESPRIT, SpeciesId.AZELF], TrainerSlot.TRAINER, true, p => {
@ -5374,24 +5385,8 @@ export const trainerConfigs: TrainerConfigs = {
p.gender = Gender.MALE;
}),
)
.setPartyMemberFunc(
3,
getRandomPartyMemberFunc([SpeciesId.DRAGALGE, SpeciesId.CLAWITZER], TrainerSlot.TRAINER, true, p => {
p.generateAndPopulateMoveset();
if (p.species.speciesId === SpeciesId.DRAGALGE) {
p.abilityIndex = 2; // Adaptability
} else if (p.species.speciesId === SpeciesId.CLAWITZER) {
p.abilityIndex = 0; // Mega Launcher
}
}),
)
.setPartyMemberFunc(
4,
getRandomPartyMemberFunc([SpeciesId.GALLADE], TrainerSlot.TRAINER, true, p => {
p.generateAndPopulateMoveset();
p.abilityIndex = 1; // Sharpness
}),
)
.setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.MALAMAR]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.AEGISLASH, SpeciesId.HISUI_GOODRA]))
.setPartyMemberFunc(
5,
getRandomPartyMemberFunc([SpeciesId.GYARADOS], TrainerSlot.TRAINER, true, p => {
@ -5416,21 +5411,11 @@ export const trainerConfigs: TrainerConfigs = {
p.gender = Gender.MALE;
}),
)
.setPartyMemberFunc(
1,
getRandomPartyMemberFunc([SpeciesId.DRAGALGE, SpeciesId.CLAWITZER], TrainerSlot.TRAINER, true, p => {
p.generateAndPopulateMoveset();
if (p.species.speciesId === SpeciesId.DRAGALGE) {
p.abilityIndex = 2; // Adaptability
} else if (p.species.speciesId === SpeciesId.CLAWITZER) {
p.abilityIndex = 0; // Mega Launcher
}
}),
)
.setPartyMemberFunc(1, getRandomPartyMemberFunc([SpeciesId.MIENSHAO]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.AEGISLASH, SpeciesId.HISUI_GOODRA]))
.setPartyMemberFunc(
3,
getRandomPartyMemberFunc([SpeciesId.IRON_VALIANT], TrainerSlot.TRAINER, true, p => {
getRandomPartyMemberFunc([SpeciesId.VOLCANION], TrainerSlot.TRAINER, true, p => {
p.generateAndPopulateMoveset();
p.pokeball = PokeballType.ROGUE_BALL;
}),
@ -5467,10 +5452,10 @@ export const trainerConfigs: TrainerConfigs = {
p.gender = Gender.FEMALE;
}),
)
.setPartyMemberFunc(1, getRandomPartyMemberFunc([SpeciesId.LILLIGANT, SpeciesId.HISUI_LILLIGANT]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.MILOTIC, SpeciesId.PRIMARINA]))
.setPartyMemberFunc(1, getRandomPartyMemberFunc([SpeciesId.LILLIGANT]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.MILOTIC]))
.setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.GALAR_SLOWBRO, SpeciesId.GALAR_SLOWKING]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.BEWEAR]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.BEWEAR, SpeciesId.LOPUNNY]))
.setPartyMemberFunc(
5,
getRandomPartyMemberFunc([SpeciesId.NIHILEGO], TrainerSlot.TRAINER, true, p => {
@ -5492,7 +5477,7 @@ export const trainerConfigs: TrainerConfigs = {
p.gender = Gender.FEMALE;
}),
)
.setPartyMemberFunc(1, getRandomPartyMemberFunc([SpeciesId.MILOTIC, SpeciesId.PRIMARINA]))
.setPartyMemberFunc(1, getRandomPartyMemberFunc([SpeciesId.MILOTIC, SpeciesId.LILLIGANT]))
.setPartyMemberFunc(
2,
getRandomPartyMemberFunc([SpeciesId.SILVALLY], TrainerSlot.TRAINER, true, p => {
@ -5572,7 +5557,11 @@ export const trainerConfigs: TrainerConfigs = {
getRandomPartyMemberFunc([SpeciesId.GOLISOPOD], TrainerSlot.TRAINER, true, p => {
p.setBoss(true, 2);
p.generateAndPopulateMoveset();
p.gender = Gender.MALE;
if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === MoveId.FIRST_IMPRESSION)) {
// Check if First Impression is in the moveset, if not, replace the third move with First Impression.
p.moveset[2] = new PokemonMove(MoveId.FIRST_IMPRESSION);
p.gender = Gender.MALE;
}
}),
),
[TrainerType.GUZMA_2]: new TrainerConfig(++t)
@ -5585,8 +5574,12 @@ export const trainerConfigs: TrainerConfigs = {
getRandomPartyMemberFunc([SpeciesId.GOLISOPOD], TrainerSlot.TRAINER, true, p => {
p.setBoss(true, 2);
p.generateAndPopulateMoveset();
p.abilityIndex = 2; // Anticipation
p.gender = Gender.MALE;
if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === MoveId.FIRST_IMPRESSION)) {
// Check if First Impression is in the moveset, if not, replace the third move with First Impression.
p.moveset[2] = new PokemonMove(MoveId.FIRST_IMPRESSION);
p.abilityIndex = 2; // Anticipation
p.gender = Gender.MALE;
}
}),
)
.setPartyMemberFunc(
@ -5697,13 +5690,7 @@ export const trainerConfigs: TrainerConfigs = {
p.pokeball = PokeballType.ULTRA_BALL;
}),
)
.setPartyMemberFunc(
1,
getRandomPartyMemberFunc([SpeciesId.AEGISLASH, SpeciesId.GHOLDENGO], TrainerSlot.TRAINER, true, p => {
p.generateAndPopulateMoveset();
p.pokeball = PokeballType.ULTRA_BALL;
}),
)
.setPartyMemberFunc(1, getRandomPartyMemberFunc([SpeciesId.CORVIKNIGHT]))
.setPartyMemberFunc(
2,
getRandomPartyMemberFunc([SpeciesId.DRACOZOLT, SpeciesId.DRACOVISH], TrainerSlot.TRAINER, true, p => {
@ -5721,19 +5708,6 @@ export const trainerConfigs: TrainerConfigs = {
)
.setPartyMemberFunc(
4,
getRandomPartyMemberFunc(
[SpeciesId.GALAR_ARTICUNO, SpeciesId.GALAR_ZAPDOS, SpeciesId.GALAR_MOLTRES],
TrainerSlot.TRAINER,
true,
p => {
p.setBoss(true, 2);
p.generateAndPopulateMoveset();
p.pokeball = PokeballType.ULTRA_BALL;
},
),
)
.setPartyMemberFunc(
5,
getRandomPartyMemberFunc([SpeciesId.COPPERAJAH], TrainerSlot.TRAINER, true, p => {
p.setBoss(true, 2);
p.generateAndPopulateMoveset();
@ -5742,24 +5716,48 @@ export const trainerConfigs: TrainerConfigs = {
p.pokeball = PokeballType.ULTRA_BALL;
p.gender = Gender.FEMALE;
}),
)
.setPartyMemberFunc(
5,
getRandomPartyMemberFunc(
[SpeciesId.GALAR_ARTICUNO, SpeciesId.GALAR_ZAPDOS, SpeciesId.GALAR_MOLTRES],
TrainerSlot.TRAINER,
true,
p => {
p.setBoss(true, 2);
p.generateAndPopulateMoveset();
p.pokeball = PokeballType.ROGUE_BALL;
},
),
),
[TrainerType.PENNY]: new TrainerConfig(++t)
.setName("Cassiopeia")
.initForEvilTeamLeader("Star Boss", [])
.setMixedBattleBgm("battle_star_boss")
.setVictoryBgm("victory_team_plasma")
.setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.JOLTEON, SpeciesId.LEAFEON]))
.setPartyMemberFunc(1, getRandomPartyMemberFunc([SpeciesId.VAPOREON, SpeciesId.UMBREON]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.ESPEON, SpeciesId.GLACEON]))
.setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.FLAREON]))
.setPartyMemberFunc(0, getRandomPartyMemberFunc([SpeciesId.ESPEON]))
.setPartyMemberFunc(1, getRandomPartyMemberFunc([SpeciesId.UMBREON]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.LEAFEON, SpeciesId.GLACEON]))
.setPartyMemberFunc(
4,
3,
getRandomPartyMemberFunc([SpeciesId.SYLVEON], TrainerSlot.TRAINER, true, p => {
p.abilityIndex = 2; // Pixilate
p.generateAndPopulateMoveset();
p.gender = Gender.FEMALE;
}),
)
.setPartyMemberFunc(
4,
getRandomPartyMemberFunc(
[SpeciesId.VAPOREON, SpeciesId.FLAREON, SpeciesId.JOLTEON],
TrainerSlot.TRAINER,
true,
p => {
p.setBoss(true, 2);
p.generateAndPopulateMoveset();
},
),
)
.setPartyMemberFunc(
5,
getRandomPartyMemberFunc([SpeciesId.EEVEE], TrainerSlot.TRAINER, true, p => {
@ -5770,7 +5768,7 @@ export const trainerConfigs: TrainerConfigs = {
p.generateName();
}),
)
.setInstantTera(4), // Tera Fairy Sylveon
.setInstantTera(3), // Tera Fairy Sylveon
[TrainerType.PENNY_2]: new TrainerConfig(++t)
.setName("Cassiopeia")
.initForEvilTeamLeader("Star Boss", [], true)
@ -5782,7 +5780,11 @@ export const trainerConfigs: TrainerConfigs = {
p.setBoss(true, 2);
p.abilityIndex = 2; // Pixilate
p.generateAndPopulateMoveset();
p.gender = Gender.FEMALE;
if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === MoveId.HYPER_VOICE)) {
// Check if Hyper Voice is in the moveset, if not, replace the second move with Hyper Voice.
p.moveset[1] = new PokemonMove(MoveId.HYPER_VOICE);
p.gender = Gender.FEMALE;
}
}),
)
.setPartyMemberFunc(
@ -5792,13 +5794,7 @@ export const trainerConfigs: TrainerConfigs = {
p.formIndex = randSeedInt(5, 1); // Heat, Wash, Frost, Fan, or Mow
}),
)
.setPartyMemberFunc(
2,
getRandomPartyMemberFunc([SpeciesId.RAIKOU, SpeciesId.ENTEI, SpeciesId.SUICUNE], TrainerSlot.TRAINER, true, p => {
p.generateAndPopulateMoveset();
p.pokeball = PokeballType.ULTRA_BALL;
}),
)
.setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.UMBREON, SpeciesId.ESPEON]))
.setPartyMemberFunc(
3,
getRandomPartyMemberFunc([SpeciesId.REVAVROOM], TrainerSlot.TRAINER, true, p => {
@ -5809,11 +5805,16 @@ export const trainerConfigs: TrainerConfigs = {
)
.setPartyMemberFunc(
4,
getRandomPartyMemberFunc([SpeciesId.ZAMAZENTA], TrainerSlot.TRAINER, true, p => {
p.setBoss(true, 2);
p.generateAndPopulateMoveset();
p.pokeball = PokeballType.MASTER_BALL;
}),
getRandomPartyMemberFunc(
[SpeciesId.WALKING_WAKE, SpeciesId.GOUGING_FIRE, SpeciesId.RAGING_BOLT],
TrainerSlot.TRAINER,
true,
p => {
p.generateAndPopulateMoveset();
p.pokeball = PokeballType.ROGUE_BALL;
p.setBoss(true, 2);
},
),
)
.setPartyMemberFunc(
5,
@ -5826,6 +5827,7 @@ export const trainerConfigs: TrainerConfigs = {
}),
)
.setInstantTera(0), // Tera Fairy Sylveon
[TrainerType.BUCK]: new TrainerConfig(++t)
.setName("Buck")
.initForStatTrainer(true)