mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-08-11 18:09:29 +02:00
[Balance] Evil Leader Adjustments (#6133)
* Update trainer-config.ts * Update Starmobiles to use their mainline movesets * Update Starmobile forms and Trainer Config --------- Co-authored-by: damocleas <damocleas25@gmail.com>
This commit is contained in:
parent
4bb3e11c74
commit
ae9f03e060
@ -1044,7 +1044,7 @@ export const starterPassiveAbilities: StarterPassiveAbilities = {
|
||||
[SpeciesId.FINIZEN]: { 0: AbilityId.FRIEND_GUARD },
|
||||
[SpeciesId.PALAFIN]: { 0: AbilityId.EMERGENCY_EXIT, 1: AbilityId.IRON_FIST },
|
||||
[SpeciesId.VAROOM]: { 0: AbilityId.LEVITATE },
|
||||
[SpeciesId.REVAVROOM]: { 0: AbilityId.LEVITATE, 1: AbilityId.DARK_AURA, 2: AbilityId.FLASH_FIRE, 3: AbilityId.MERCILESS, 4: AbilityId.FILTER, 5: AbilityId.SCRAPPY },
|
||||
[SpeciesId.REVAVROOM]: { 0: AbilityId.LEVITATE, 1: AbilityId.INTIMIDATE, 2: AbilityId.SPEED_BOOST, 3: AbilityId.TOXIC_DEBRIS, 4: AbilityId.MISTY_SURGE, 5: AbilityId.STAMINA },
|
||||
[SpeciesId.CYCLIZAR]: { 0: AbilityId.PROTEAN },
|
||||
[SpeciesId.ORTHWORM]: { 0: AbilityId.REGENERATOR },
|
||||
[SpeciesId.GLIMMET]: { 0: AbilityId.STURDY },
|
||||
|
@ -1618,11 +1618,11 @@ export function initSpecies() {
|
||||
new PokemonSpecies(SpeciesId.VAROOM, 9, false, false, false, "Single-Cyl Pokémon", PokemonType.STEEL, PokemonType.POISON, 1, 35, AbilityId.OVERCOAT, AbilityId.NONE, AbilityId.SLOW_START, 300, 45, 70, 63, 30, 45, 47, 190, 50, 60, GrowthRate.MEDIUM_FAST, 50, false),
|
||||
new PokemonSpecies(SpeciesId.REVAVROOM, 9, false, false, false, "Multi-Cyl Pokémon", PokemonType.STEEL, PokemonType.POISON, 1.8, 120, AbilityId.OVERCOAT, AbilityId.NONE, AbilityId.FILTER, 500, 80, 119, 90, 54, 67, 90, 75, 50, 175, GrowthRate.MEDIUM_FAST, 50, false, false,
|
||||
new PokemonForm("Normal", "", PokemonType.STEEL, PokemonType.POISON, 1.8, 120, AbilityId.OVERCOAT, AbilityId.NONE, AbilityId.FILTER, 500, 80, 119, 90, 54, 67, 90, 75, 50, 175, false, null, true),
|
||||
new PokemonForm("Segin Starmobile", "segin-starmobile", PokemonType.STEEL, PokemonType.DARK, 1.8, 240, AbilityId.INTIMIDATE, AbilityId.NONE, AbilityId.INTIMIDATE, 600, 110, 129, 100, 77, 79, 105, 75, 50, 175, false, null, false, true),
|
||||
new PokemonForm("Schedar Starmobile", "schedar-starmobile", PokemonType.STEEL, PokemonType.FIRE, 1.8, 240, AbilityId.SPEED_BOOST, AbilityId.NONE, AbilityId.SPEED_BOOST, 600, 110, 129, 100, 77, 79, 105, 75, 50, 175, false, null, false, true),
|
||||
new PokemonForm("Navi Starmobile", "navi-starmobile", PokemonType.STEEL, PokemonType.POISON, 1.8, 240, AbilityId.TOXIC_DEBRIS, AbilityId.NONE, AbilityId.TOXIC_DEBRIS, 600, 110, 129, 100, 77, 79, 105, 75, 50, 175, false, null, false, true),
|
||||
new PokemonForm("Ruchbah Starmobile", "ruchbah-starmobile", PokemonType.STEEL, PokemonType.FAIRY, 1.8, 240, AbilityId.MISTY_SURGE, AbilityId.NONE, AbilityId.MISTY_SURGE, 600, 110, 129, 100, 77, 79, 105, 75, 50, 175, false, null, false, true),
|
||||
new PokemonForm("Caph Starmobile", "caph-starmobile", PokemonType.STEEL, PokemonType.FIGHTING, 1.8, 240, AbilityId.STAMINA, AbilityId.NONE, AbilityId.STAMINA, 600, 110, 129, 100, 77, 79, 105, 75, 50, 175, false, null, false, true)
|
||||
new PokemonForm("Segin Starmobile", "segin-starmobile", PokemonType.STEEL, PokemonType.DARK, 1.8, 240, AbilityId.OVERCOAT, AbilityId.NONE, AbilityId.OVERCOAT, 600, 110, 129, 100, 77, 79, 105, 75, 50, 175, false, null, false, true),
|
||||
new PokemonForm("Schedar Starmobile", "schedar-starmobile", PokemonType.STEEL, PokemonType.FIRE, 1.8, 240, AbilityId.OVERCOAT, AbilityId.NONE, AbilityId.OVERCOAT, 600, 110, 129, 100, 77, 79, 105, 75, 50, 175, false, null, false, true),
|
||||
new PokemonForm("Navi Starmobile", "navi-starmobile", PokemonType.STEEL, PokemonType.POISON, 1.8, 240, AbilityId.OVERCOAT, AbilityId.NONE, AbilityId.OVERCOAT, 600, 110, 129, 100, 77, 79, 105, 75, 50, 175, false, null, false, true),
|
||||
new PokemonForm("Ruchbah Starmobile", "ruchbah-starmobile", PokemonType.STEEL, PokemonType.FAIRY, 1.8, 240, AbilityId.OVERCOAT, AbilityId.NONE, AbilityId.OVERCOAT, 600, 110, 129, 100, 77, 79, 105, 75, 50, 175, false, null, false, true),
|
||||
new PokemonForm("Caph Starmobile", "caph-starmobile", PokemonType.STEEL, PokemonType.FIGHTING, 1.8, 240, AbilityId.OVERCOAT, AbilityId.NONE, AbilityId.OVERCOAT, 600, 110, 129, 100, 77, 79, 105, 75, 50, 175, false, null, false, true)
|
||||
),
|
||||
new PokemonSpecies(SpeciesId.CYCLIZAR, 9, false, false, false, "Mount Pokémon", PokemonType.DRAGON, PokemonType.NORMAL, 1.6, 63, AbilityId.SHED_SKIN, AbilityId.NONE, AbilityId.REGENERATOR, 501, 70, 95, 65, 85, 65, 121, 190, 50, 175, GrowthRate.MEDIUM_SLOW, 50, false),
|
||||
new PokemonSpecies(SpeciesId.ORTHWORM, 9, false, false, false, "Earthworm Pokémon", PokemonType.STEEL, null, 2.5, 310, AbilityId.EARTH_EATER, AbilityId.NONE, AbilityId.SAND_VEIL, 480, 70, 85, 145, 60, 55, 65, 25, 50, 240, GrowthRate.SLOW, 50, false),
|
||||
|
@ -2562,7 +2562,7 @@ export const trainerConfigs: TrainerConfigs = {
|
||||
p.moveset = [
|
||||
new PokemonMove(MoveId.WICKED_TORQUE),
|
||||
new PokemonMove(MoveId.SPIN_OUT),
|
||||
new PokemonMove(MoveId.SHIFT_GEAR),
|
||||
new PokemonMove(MoveId.PARTING_SHOT),
|
||||
new PokemonMove(MoveId.HIGH_HORSEPOWER),
|
||||
];
|
||||
}),
|
||||
@ -2582,7 +2582,7 @@ export const trainerConfigs: TrainerConfigs = {
|
||||
p.moveset = [
|
||||
new PokemonMove(MoveId.BLAZING_TORQUE),
|
||||
new PokemonMove(MoveId.SPIN_OUT),
|
||||
new PokemonMove(MoveId.SHIFT_GEAR),
|
||||
new PokemonMove(MoveId.FLAME_CHARGE),
|
||||
new PokemonMove(MoveId.HIGH_HORSEPOWER),
|
||||
];
|
||||
}),
|
||||
@ -2602,7 +2602,7 @@ export const trainerConfigs: TrainerConfigs = {
|
||||
p.moveset = [
|
||||
new PokemonMove(MoveId.NOXIOUS_TORQUE),
|
||||
new PokemonMove(MoveId.SPIN_OUT),
|
||||
new PokemonMove(MoveId.SHIFT_GEAR),
|
||||
new PokemonMove(MoveId.TOXIC_SPIKES),
|
||||
new PokemonMove(MoveId.HIGH_HORSEPOWER),
|
||||
];
|
||||
}),
|
||||
@ -2622,7 +2622,7 @@ export const trainerConfigs: TrainerConfigs = {
|
||||
p.moveset = [
|
||||
new PokemonMove(MoveId.MAGICAL_TORQUE),
|
||||
new PokemonMove(MoveId.SPIN_OUT),
|
||||
new PokemonMove(MoveId.SHIFT_GEAR),
|
||||
new PokemonMove(MoveId.MISTY_TERRAIN),
|
||||
new PokemonMove(MoveId.HIGH_HORSEPOWER),
|
||||
];
|
||||
}),
|
||||
@ -2642,7 +2642,7 @@ export const trainerConfigs: TrainerConfigs = {
|
||||
p.moveset = [
|
||||
new PokemonMove(MoveId.COMBAT_TORQUE),
|
||||
new PokemonMove(MoveId.SPIN_OUT),
|
||||
new PokemonMove(MoveId.SHIFT_GEAR),
|
||||
new PokemonMove(MoveId.IRON_DEFENSE),
|
||||
new PokemonMove(MoveId.HIGH_HORSEPOWER),
|
||||
];
|
||||
}),
|
||||
@ -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.SOLROCK]))
|
||||
.setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.WEEZING, SpeciesId.GALAR_WEEZING]))
|
||||
.setPartyMemberFunc(
|
||||
3,
|
||||
getRandomPartyMemberFunc([SpeciesId.SCOVILLAIN], TrainerSlot.TRAINER, true, p => {
|
||||
p.generateAndPopulateMoveset();
|
||||
p.abilityIndex = 0; // Chlorophyll
|
||||
}),
|
||||
)
|
||||
.setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.DONPHAN]))
|
||||
.setPartyMemberFunc(
|
||||
5,
|
||||
@ -5140,16 +5147,16 @@ 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.WAILORD]))
|
||||
.setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.MUK, SpeciesId.ALOLA_MUK]))
|
||||
.setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.WAILORD]))
|
||||
.setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.LUDICOLO]))
|
||||
.setPartyMemberFunc(
|
||||
4,
|
||||
getRandomPartyMemberFunc([SpeciesId.QWILFISH], TrainerSlot.TRAINER, true, p => {
|
||||
@ -5225,7 +5232,7 @@ 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(1, getRandomPartyMemberFunc([SpeciesId.CROBAT, SpeciesId.HONCHKROW]))
|
||||
.setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.MAGNEZONE]))
|
||||
.setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.UXIE, SpeciesId.MESPRIT, SpeciesId.AZELF]))
|
||||
.setPartyMemberFunc(
|
||||
@ -5233,8 +5240,6 @@ export const trainerConfigs: TrainerConfigs = {
|
||||
getRandomPartyMemberFunc([SpeciesId.HOUNDOOM], TrainerSlot.TRAINER, true, p => {
|
||||
p.generateAndPopulateMoveset();
|
||||
p.pokeball = PokeballType.ULTRA_BALL;
|
||||
p.formIndex = 1; // Mega Houndoom
|
||||
p.generateName();
|
||||
}),
|
||||
)
|
||||
.setPartyMemberFunc(
|
||||
@ -5253,7 +5258,7 @@ export const trainerConfigs: TrainerConfigs = {
|
||||
.setVictoryBgm("victory_team_plasma")
|
||||
.setPartyMemberFunc(
|
||||
0,
|
||||
getRandomPartyMemberFunc([SpeciesId.CROBAT], TrainerSlot.TRAINER, true, p => {
|
||||
getRandomPartyMemberFunc([SpeciesId.CROBAT, SpeciesId.HONCHKROW], TrainerSlot.TRAINER, true, p => {
|
||||
p.setBoss(true, 2);
|
||||
p.generateAndPopulateMoveset();
|
||||
}),
|
||||
@ -5374,24 +5379,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 +5405,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 +5446,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 +5471,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 +5551,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 +5568,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(
|
||||
@ -5615,7 +5602,7 @@ export const trainerConfigs: TrainerConfigs = {
|
||||
getRandomPartyMemberFunc([SpeciesId.GENESECT], TrainerSlot.TRAINER, true, p => {
|
||||
p.setBoss(true, 2);
|
||||
p.generateAndPopulateMoveset();
|
||||
p.pokeball = PokeballType.ULTRA_BALL;
|
||||
p.pokeball = PokeballType.ROGUE_BALL;
|
||||
p.formIndex = randSeedInt(4, 1); // Shock, Burn, Chill, or Douse Drive
|
||||
if (!p.moveset.some(move => !isNullOrUndefined(move) && move.moveId === MoveId.TECHNO_BLAST)) {
|
||||
// Check if Techno Blast is in the moveset, if not, replace the third move with Techno Blast.
|
||||
@ -5697,13 +5684,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,6 +5702,17 @@ export const trainerConfigs: TrainerConfigs = {
|
||||
)
|
||||
.setPartyMemberFunc(
|
||||
4,
|
||||
getRandomPartyMemberFunc([SpeciesId.COPPERAJAH], TrainerSlot.TRAINER, true, p => {
|
||||
p.setBoss(true, 2);
|
||||
p.generateAndPopulateMoveset();
|
||||
p.formIndex = 1; // G-Max Copperajah
|
||||
p.generateName();
|
||||
p.pokeball = PokeballType.ULTRA_BALL;
|
||||
p.gender = Gender.FEMALE;
|
||||
}),
|
||||
)
|
||||
.setPartyMemberFunc(
|
||||
5,
|
||||
getRandomPartyMemberFunc(
|
||||
[SpeciesId.GALAR_ARTICUNO, SpeciesId.GALAR_ZAPDOS, SpeciesId.GALAR_MOLTRES],
|
||||
TrainerSlot.TRAINER,
|
||||
@ -5731,33 +5723,27 @@ export const trainerConfigs: TrainerConfigs = {
|
||||
p.pokeball = PokeballType.ULTRA_BALL;
|
||||
},
|
||||
),
|
||||
)
|
||||
.setPartyMemberFunc(
|
||||
5,
|
||||
getRandomPartyMemberFunc([SpeciesId.COPPERAJAH], TrainerSlot.TRAINER, true, p => {
|
||||
p.setBoss(true, 2);
|
||||
p.generateAndPopulateMoveset();
|
||||
p.formIndex = 1; // G-Max Copperajah
|
||||
p.generateName();
|
||||
p.pokeball = PokeballType.ULTRA_BALL;
|
||||
p.gender = Gender.FEMALE;
|
||||
}),
|
||||
),
|
||||
[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(3, getRandomPartyMemberFunc([SpeciesId.VAPOREON, SpeciesId.FLAREON, SpeciesId.JOLTEON]))
|
||||
.setPartyMemberFunc(
|
||||
4,
|
||||
getRandomPartyMemberFunc([SpeciesId.SYLVEON], TrainerSlot.TRAINER, true, p => {
|
||||
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(
|
||||
@ -5770,7 +5756,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 +5768,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(
|
||||
@ -5794,25 +5784,30 @@ export const trainerConfigs: TrainerConfigs = {
|
||||
)
|
||||
.setPartyMemberFunc(
|
||||
2,
|
||||
getRandomPartyMemberFunc([SpeciesId.RAIKOU, SpeciesId.ENTEI, SpeciesId.SUICUNE], TrainerSlot.TRAINER, true, p => {
|
||||
getRandomPartyMemberFunc([SpeciesId.ESPEON, SpeciesId.UMBREON], TrainerSlot.TRAINER, true, p => {
|
||||
p.generateAndPopulateMoveset();
|
||||
p.pokeball = PokeballType.ULTRA_BALL;
|
||||
p.abilityIndex = p.species.speciesId === SpeciesId.UMBREON ? 0 : 2; // Synchronize Umbreon, Magic Bounce Espeon
|
||||
}),
|
||||
)
|
||||
.setPartyMemberFunc(
|
||||
3,
|
||||
getRandomPartyMemberFunc(
|
||||
[SpeciesId.WALKING_WAKE, SpeciesId.GOUGING_FIRE, SpeciesId.RAGING_BOLT],
|
||||
TrainerSlot.TRAINER,
|
||||
true,
|
||||
p => {
|
||||
p.generateAndPopulateMoveset();
|
||||
p.pokeball = PokeballType.ROGUE_BALL;
|
||||
},
|
||||
),
|
||||
)
|
||||
.setPartyMemberFunc(
|
||||
4,
|
||||
getRandomPartyMemberFunc([SpeciesId.REVAVROOM], TrainerSlot.TRAINER, true, p => {
|
||||
p.formIndex = randSeedInt(5, 1); // Random Starmobile form
|
||||
p.generateAndPopulateMoveset();
|
||||
p.pokeball = PokeballType.ROGUE_BALL;
|
||||
}),
|
||||
)
|
||||
.setPartyMemberFunc(
|
||||
4,
|
||||
getRandomPartyMemberFunc([SpeciesId.ZAMAZENTA], TrainerSlot.TRAINER, true, p => {
|
||||
p.setBoss(true, 2);
|
||||
p.generateAndPopulateMoveset();
|
||||
p.pokeball = PokeballType.MASTER_BALL;
|
||||
}),
|
||||
)
|
||||
.setPartyMemberFunc(
|
||||
@ -5826,6 +5821,7 @@ export const trainerConfigs: TrainerConfigs = {
|
||||
}),
|
||||
)
|
||||
.setInstantTera(0), // Tera Fairy Sylveon
|
||||
|
||||
[TrainerType.BUCK]: new TrainerConfig(++t)
|
||||
.setName("Buck")
|
||||
.initForStatTrainer(true)
|
||||
|
Loading…
Reference in New Issue
Block a user