Update Starmobile forms and Trainer Config

This commit is contained in:
Blitzy 2025-08-07 15:08:23 -05:00
parent 065c36f554
commit 843ea8da91
3 changed files with 36 additions and 30 deletions

View File

@ -1044,7 +1044,7 @@ export const starterPassiveAbilities: StarterPassiveAbilities = {
[SpeciesId.FINIZEN]: { 0: AbilityId.FRIEND_GUARD }, [SpeciesId.FINIZEN]: { 0: AbilityId.FRIEND_GUARD },
[SpeciesId.PALAFIN]: { 0: AbilityId.EMERGENCY_EXIT, 1: AbilityId.IRON_FIST }, [SpeciesId.PALAFIN]: { 0: AbilityId.EMERGENCY_EXIT, 1: AbilityId.IRON_FIST },
[SpeciesId.VAROOM]: { 0: AbilityId.LEVITATE }, [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.CYCLIZAR]: { 0: AbilityId.PROTEAN },
[SpeciesId.ORTHWORM]: { 0: AbilityId.REGENERATOR }, [SpeciesId.ORTHWORM]: { 0: AbilityId.REGENERATOR },
[SpeciesId.GLIMMET]: { 0: AbilityId.STURDY }, [SpeciesId.GLIMMET]: { 0: AbilityId.STURDY },

View File

@ -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.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 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("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("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.SPEED_BOOST, AbilityId.NONE, AbilityId.SPEED_BOOST, 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.TOXIC_DEBRIS, AbilityId.NONE, AbilityId.TOXIC_DEBRIS, 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.MISTY_SURGE, AbilityId.NONE, AbilityId.MISTY_SURGE, 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.STAMINA, AbilityId.NONE, AbilityId.STAMINA, 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.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), 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),

View File

@ -2561,9 +2561,9 @@ export const trainerConfigs: TrainerConfigs = {
p.formIndex = 1; // Segin Starmobile p.formIndex = 1; // Segin Starmobile
p.moveset = [ p.moveset = [
new PokemonMove(MoveId.WICKED_TORQUE), new PokemonMove(MoveId.WICKED_TORQUE),
new PokemonMove(MoveId.SNARL), new PokemonMove(MoveId.SPIN_OUT),
new PokemonMove(MoveId.METAL_SOUND), new PokemonMove(MoveId.PARTING_SHOT),
new PokemonMove(MoveId.SWIFT), new PokemonMove(MoveId.HIGH_HORSEPOWER),
]; ];
}), }),
), ),
@ -2581,9 +2581,9 @@ export const trainerConfigs: TrainerConfigs = {
p.formIndex = 2; // Schedar Starmobile p.formIndex = 2; // Schedar Starmobile
p.moveset = [ p.moveset = [
new PokemonMove(MoveId.BLAZING_TORQUE), new PokemonMove(MoveId.BLAZING_TORQUE),
new PokemonMove(MoveId.OVERHEAT), new PokemonMove(MoveId.SPIN_OUT),
new PokemonMove(MoveId.SCREECH), new PokemonMove(MoveId.FLAME_CHARGE),
new PokemonMove(MoveId.SWIFT), new PokemonMove(MoveId.HIGH_HORSEPOWER),
]; ];
}), }),
), ),
@ -2602,8 +2602,8 @@ export const trainerConfigs: TrainerConfigs = {
p.moveset = [ p.moveset = [
new PokemonMove(MoveId.NOXIOUS_TORQUE), new PokemonMove(MoveId.NOXIOUS_TORQUE),
new PokemonMove(MoveId.SPIN_OUT), new PokemonMove(MoveId.SPIN_OUT),
new PokemonMove(MoveId.FLAME_CHARGE), new PokemonMove(MoveId.TOXIC_SPIKES),
new PokemonMove(MoveId.SMOG), new PokemonMove(MoveId.HIGH_HORSEPOWER),
]; ];
}), }),
), ),
@ -2622,8 +2622,8 @@ export const trainerConfigs: TrainerConfigs = {
p.moveset = [ p.moveset = [
new PokemonMove(MoveId.MAGICAL_TORQUE), new PokemonMove(MoveId.MAGICAL_TORQUE),
new PokemonMove(MoveId.SPIN_OUT), new PokemonMove(MoveId.SPIN_OUT),
new PokemonMove(MoveId.CONFUSE_RAY), new PokemonMove(MoveId.MISTY_TERRAIN),
new PokemonMove(MoveId.STEEL_ROLLER), new PokemonMove(MoveId.HIGH_HORSEPOWER),
]; ];
}), }),
), ),
@ -2642,7 +2642,7 @@ export const trainerConfigs: TrainerConfigs = {
p.moveset = [ p.moveset = [
new PokemonMove(MoveId.COMBAT_TORQUE), new PokemonMove(MoveId.COMBAT_TORQUE),
new PokemonMove(MoveId.SPIN_OUT), new PokemonMove(MoveId.SPIN_OUT),
new PokemonMove(MoveId.SHIFT_GEAR), new PokemonMove(MoveId.IRON_DEFENSE),
new PokemonMove(MoveId.HIGH_HORSEPOWER), new PokemonMove(MoveId.HIGH_HORSEPOWER),
]; ];
}), }),
@ -5064,15 +5064,15 @@ export const trainerConfigs: TrainerConfigs = {
p.abilityIndex = 1; // Drought p.abilityIndex = 1; // Drought
}), }),
) )
.setPartyMemberFunc(1, getRandomPartyMemberFunc([SpeciesId.SOLROCK]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.WEEZING, SpeciesId.GALAR_WEEZING]))
.setPartyMemberFunc( .setPartyMemberFunc(
1, 3,
getRandomPartyMemberFunc([SpeciesId.SCOVILLAIN], TrainerSlot.TRAINER, true, p => { getRandomPartyMemberFunc([SpeciesId.SCOVILLAIN], TrainerSlot.TRAINER, true, p => {
p.generateAndPopulateMoveset(); p.generateAndPopulateMoveset();
p.abilityIndex = 0; // Chlorophyll p.abilityIndex = 0; // Chlorophyll
}), }),
) )
.setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.WEEZING, SpeciesId.GALAR_WEEZING]))
.setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.SOLROCK]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.DONPHAN])) .setPartyMemberFunc(4, getRandomPartyMemberFunc([SpeciesId.DONPHAN]))
.setPartyMemberFunc( .setPartyMemberFunc(
5, 5,
@ -5154,9 +5154,9 @@ export const trainerConfigs: TrainerConfigs = {
p.abilityIndex = 1; // Drizzle p.abilityIndex = 1; // Drizzle
}), }),
) )
.setPartyMemberFunc(1, getRandomPartyMemberFunc([SpeciesId.LUDICOLO])) .setPartyMemberFunc(1, getRandomPartyMemberFunc([SpeciesId.WAILORD]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.MUK, SpeciesId.ALOLA_MUK])) .setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.MUK, SpeciesId.ALOLA_MUK]))
.setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.WAILORD])) .setPartyMemberFunc(3, getRandomPartyMemberFunc([SpeciesId.LUDICOLO]))
.setPartyMemberFunc( .setPartyMemberFunc(
4, 4,
getRandomPartyMemberFunc([SpeciesId.QWILFISH], TrainerSlot.TRAINER, true, p => { getRandomPartyMemberFunc([SpeciesId.QWILFISH], TrainerSlot.TRAINER, true, p => {
@ -5596,7 +5596,7 @@ export const trainerConfigs: TrainerConfigs = {
getRandomPartyMemberFunc([SpeciesId.GENESECT], TrainerSlot.TRAINER, true, p => { getRandomPartyMemberFunc([SpeciesId.GENESECT], TrainerSlot.TRAINER, true, p => {
p.setBoss(true, 2); p.setBoss(true, 2);
p.generateAndPopulateMoveset(); p.generateAndPopulateMoveset();
p.pokeball = PokeballType.ULTRA_BALL; p.pokeball = PokeballType.ROGUE_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 === MoveId.TECHNO_BLAST)) { 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. // Check if Techno Blast is in the moveset, if not, replace the third move with Techno Blast.
@ -5776,17 +5776,15 @@ export const trainerConfigs: TrainerConfigs = {
p.formIndex = randSeedInt(5, 1); // Heat, Wash, Frost, Fan, or Mow p.formIndex = randSeedInt(5, 1); // Heat, Wash, Frost, Fan, or Mow
}), }),
) )
.setPartyMemberFunc(2, getRandomPartyMemberFunc([SpeciesId.UMBREON, SpeciesId.ESPEON]))
.setPartyMemberFunc( .setPartyMemberFunc(
3, 2,
getRandomPartyMemberFunc([SpeciesId.REVAVROOM], TrainerSlot.TRAINER, true, p => { getRandomPartyMemberFunc([SpeciesId.ESPEON, SpeciesId.UMBREON], TrainerSlot.TRAINER, true, p => {
p.formIndex = randSeedInt(5, 1); // Random Starmobile form
p.generateAndPopulateMoveset(); p.generateAndPopulateMoveset();
p.pokeball = PokeballType.ROGUE_BALL; p.abilityIndex = p.species.speciesId === SpeciesId.UMBREON ? 0 : 2; // Synchronize Umbreon, Magic Bounce Espeon
}), }),
) )
.setPartyMemberFunc( .setPartyMemberFunc(
4, 3,
getRandomPartyMemberFunc( getRandomPartyMemberFunc(
[SpeciesId.WALKING_WAKE, SpeciesId.GOUGING_FIRE, SpeciesId.RAGING_BOLT], [SpeciesId.WALKING_WAKE, SpeciesId.GOUGING_FIRE, SpeciesId.RAGING_BOLT],
TrainerSlot.TRAINER, TrainerSlot.TRAINER,
@ -5794,10 +5792,18 @@ export const trainerConfigs: TrainerConfigs = {
p => { p => {
p.generateAndPopulateMoveset(); p.generateAndPopulateMoveset();
p.pokeball = PokeballType.ROGUE_BALL; p.pokeball = PokeballType.ROGUE_BALL;
p.setBoss(true, 2);
}, },
), ),
) )
.setPartyMemberFunc(
4,
getRandomPartyMemberFunc([SpeciesId.REVAVROOM], TrainerSlot.TRAINER, true, p => {
p.formIndex = randSeedInt(5, 1); // Random Starmobile form
p.generateAndPopulateMoveset();
p.pokeball = PokeballType.ROGUE_BALL;
p.setBoss(true, 2);
}),
)
.setPartyMemberFunc( .setPartyMemberFunc(
5, 5,
getRandomPartyMemberFunc([SpeciesId.EEVEE], TrainerSlot.TRAINER, true, p => { getRandomPartyMemberFunc([SpeciesId.EEVEE], TrainerSlot.TRAINER, true, p => {