From 99a9cef292f0cc3a76c0aa64e12207eb2dd782f1 Mon Sep 17 00:00:00 2001 From: Temps Ray Date: Mon, 20 May 2024 18:02:06 -0400 Subject: [PATCH] Fix sprites and add random team boss --- src/battle.ts | 64 +++++++++++++++++++++++++++++++--- src/data/dialogue.ts | 22 ++++++------ src/data/enums/trainer-type.ts | 20 +++++------ src/data/trainer-config.ts | 35 +++++++++++++------ src/locales/en/trainers.ts | 22 ++++++------ 5 files changed, 116 insertions(+), 47 deletions(-) diff --git a/src/battle.ts b/src/battle.ts index 36cd21df642..9de4adcf3c7 100644 --- a/src/battle.ts +++ b/src/battle.ts @@ -1,4 +1,4 @@ -import BattleScene from "./battle-scene"; +import BattleScene, { EvilTeam } from "./battle-scene"; import { EnemyPokemon, PlayerPokemon, QueuedMove } from "./field/pokemon"; import { Command } from "./ui/command-ui-handler"; import * as Utils from "./utils"; @@ -303,6 +303,62 @@ interface FixedBattleConfigs { [key: integer]: FixedBattleConfig } +function getEvilTeamBattle(evilTeam: EvilTeam, battle: string) { + switch (battle) { + case "admin": + switch (evilTeam) { + case EvilTeam.TEAM_ROCKET: + return TrainerType.ROCKET_GRUNT; + case EvilTeam.TEAM_MAGMA: + return TrainerType.MAGMA_GRUNT; + case EvilTeam.TEAM_AQUA: + return TrainerType.AQUA_GRUNT; + case EvilTeam.TEAM_GALACTIC: + return TrainerType.GALACTIC_GRUNT; + case EvilTeam.TEAM_PLASMA: + return TrainerType.PLASMA_GRUNT; + case EvilTeam.TEAM_FLARE: + return TrainerType.FLARE_GRUNT; + default: + return TrainerType.ROCKET_GRUNT; + } + case "boss1": + switch (evilTeam) { + case EvilTeam.TEAM_ROCKET: + return TrainerType.ROCKET_BOSS_GIOVANNI_1; + case EvilTeam.TEAM_MAGMA: + return TrainerType.MAXIE; + case EvilTeam.TEAM_AQUA: + return TrainerType.ARCHIE; + case EvilTeam.TEAM_GALACTIC: + return TrainerType.CYRUS; + case EvilTeam.TEAM_PLASMA: + return TrainerType.GHETSIS; + case EvilTeam.TEAM_FLARE: + return TrainerType.LYSANDRE; + default: + return TrainerType.ROCKET_BOSS_GIOVANNI_1; + } + case "boss2": + switch (evilTeam) { + case EvilTeam.TEAM_ROCKET: + return TrainerType.ROCKET_BOSS_GIOVANNI_2; + case EvilTeam.TEAM_MAGMA: + return TrainerType.MAXIE_2; + case EvilTeam.TEAM_AQUA: + return TrainerType.ARCHIE_2; + case EvilTeam.TEAM_GALACTIC: + return TrainerType.CYRUS_2; + case EvilTeam.TEAM_PLASMA: + return TrainerType.GHETSIS_2; + case EvilTeam.TEAM_FLARE: + return TrainerType.LYSANDRE_2; + default: + return TrainerType.ROCKET_BOSS_GIOVANNI_2; + } + } +} + export const fixedBattles: FixedBattleConfigs = { [5]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) .setGetTrainerFunc(scene => new Trainer(scene, TrainerType.YOUNGSTER, Utils.randSeedInt(2) ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)), @@ -314,12 +370,12 @@ export const fixedBattles: FixedBattleConfigs = { .setGetTrainerFunc(scene => new Trainer(scene, TrainerType.RIVAL_3, scene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)), [95]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) .setGetTrainerFunc(scene => new Trainer(scene, TrainerType.RIVAL_4, scene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)), - [105]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) - .setGetTrainerFunc(scene => new Trainer(scene, TrainerType.ROCKET_BOSS_GIOVANNI_1, TrainerVariant.DEFAULT)), + [115]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) + .setGetTrainerFunc(scene => new Trainer(scene, getEvilTeamBattle(scene.evilTeamThisRun, "boss1"), TrainerVariant.DEFAULT)), [145]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) .setGetTrainerFunc(scene => new Trainer(scene, TrainerType.RIVAL_5, scene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)), [165]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) - .setGetTrainerFunc(scene => new Trainer(scene, TrainerType.ROCKET_BOSS_GIOVANNI_2, TrainerVariant.DEFAULT)), + .setGetTrainerFunc(scene => new Trainer(scene, getEvilTeamBattle(scene.evilTeamThisRun, "boss2"), TrainerVariant.DEFAULT)), [182]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) .setGetTrainerFunc(getRandomTrainerFunc([ TrainerType.LORELEI, TrainerType.WILL, TrainerType.SIDNEY, TrainerType.AARON, TrainerType.SHAUNTAL, TrainerType.MALVA, [ TrainerType.HALA, TrainerType.MOLAYNE ], TrainerType.RIKA, TrainerType.CRISPIN ])), [184]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(182) diff --git a/src/data/dialogue.ts b/src/data/dialogue.ts index 095b85839be..d5a16e5ff63 100644 --- a/src/data/dialogue.ts +++ b/src/data/dialogue.ts @@ -498,7 +498,7 @@ export const trainerTypeDialogue = { ] } ], - [TrainerType.MAGMA_BOSS_MAXIE_1]: [ + [TrainerType.MAXIE]: [ { encounter: [ `After defeating you I will remove all the water biomes` @@ -508,7 +508,7 @@ export const trainerTypeDialogue = { ] } ], - [TrainerType.MAGMA_BOSS_MAXIE_2]: [ + [TrainerType.MAXIE_2]: [ { encounter: [ `Hold it right there.` @@ -518,7 +518,7 @@ export const trainerTypeDialogue = { ] } ], - [TrainerType.AQUA_BOSS_ARCHIE_1]: [ + [TrainerType.ARCHIE]: [ { encounter: [ `After defeating you I will send you to water jail` @@ -528,7 +528,7 @@ export const trainerTypeDialogue = { ] } ], - [TrainerType.AQUA_BOSS_ARCHIE_2]: [ + [TrainerType.ARCHIE_2]: [ { encounter: [ `Hold it right there.` @@ -538,7 +538,7 @@ export const trainerTypeDialogue = { ] } ], - [TrainerType.GALACTIC_BOSS_CYRUS_1]: [ + [TrainerType.CYRUS]: [ { encounter: [ `I will make you regret paying heed to your heart` @@ -548,7 +548,7 @@ export const trainerTypeDialogue = { ] } ], - [TrainerType.GALACTIC_BOSS_CYRUS_2]: [ + [TrainerType.CYRUS_2]: [ { encounter: [ `I'm going to completely crush you!` @@ -558,7 +558,7 @@ export const trainerTypeDialogue = { ] } ], - [TrainerType.PLASMA_BOSS_GHETSIS_1]: [ + [TrainerType.GHETSIS]: [ { encounter: [ `[Ominous latin chanting in the background]` @@ -568,17 +568,17 @@ export const trainerTypeDialogue = { ] } ], - [TrainerType.PLASMA_BOSS_GHETSIS_2]: [ + [TrainerType.GHETSIS_2]: [ { encounter: [ - `Lose and go down in flames!` + `Chat who should I fuse?` ], victory: [ `I would have won if I rolled DNA splicers!` ] } ], - [TrainerType.FLARE_BOSS_LYSANDRE_1]: [ + [TrainerType.LYSANDRE]: [ { encounter: [ `I copied my team from Cyrus` @@ -588,7 +588,7 @@ export const trainerTypeDialogue = { ] } ], - [TrainerType.FLARE_BOSS_LYSANDRE_2]: [ + [TrainerType.LYSANDRE_2]: [ { encounter: [ `Enough of this.` diff --git a/src/data/enums/trainer-type.ts b/src/data/enums/trainer-type.ts index 83b3e08bf27..9532cce3596 100644 --- a/src/data/enums/trainer-type.ts +++ b/src/data/enums/trainer-type.ts @@ -58,16 +58,16 @@ export enum TrainerType { FLARE_GRUNT, ROCKET_BOSS_GIOVANNI_1, ROCKET_BOSS_GIOVANNI_2, - MAGMA_BOSS_MAXIE_1, - MAGMA_BOSS_MAXIE_2, - AQUA_BOSS_ARCHIE_1, - AQUA_BOSS_ARCHIE_2, - GALACTIC_BOSS_CYRUS_1, - GALACTIC_BOSS_CYRUS_2, - PLASMA_BOSS_GHETSIS_1, - PLASMA_BOSS_GHETSIS_2, - FLARE_BOSS_LYSANDRE_1, - FLARE_BOSS_LYSANDRE_2, + MAXIE, + MAXIE_2, + ARCHIE, + ARCHIE_2, + CYRUS, + CYRUS_2, + GHETSIS, + GHETSIS_2, + LYSANDRE, + LYSANDRE_2, BROCK = 200, MISTY, diff --git a/src/data/trainer-config.ts b/src/data/trainer-config.ts index 812b0c7889e..7a7c3b5d138 100644 --- a/src/data/trainer-config.ts +++ b/src/data/trainer-config.ts @@ -280,6 +280,21 @@ export class TrainerConfig { case TrainerType.ROCKET_BOSS_GIOVANNI_2: trainerType = TrainerType.GIOVANNI; break; + case TrainerType.MAXIE_2: + trainerType = TrainerType.MAXIE; + break; + case TrainerType.ARCHIE_2: + trainerType = TrainerType.ARCHIE; + break; + case TrainerType.CYRUS_2: + trainerType = TrainerType.CYRUS; + break; + case TrainerType.GHETSIS_2: + trainerType = TrainerType.GHETSIS; + break; + case TrainerType.LYSANDRE_2: + trainerType = TrainerType.LYSANDRE; + break; } return trainerType; @@ -1157,7 +1172,7 @@ export const trainerConfigs: TrainerConfigs = { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.MASTER_BALL; })), - [TrainerType.MAGMA_BOSS_MAXIE_1]: new TrainerConfig(++t).setName('Maxie').initForEvilTeamLeader("Magma Boss",[]) + [TrainerType.MAXIE]: new TrainerConfig(++t).setName('Maxie').initForEvilTeamLeader("Magma Boss",[]) .setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.MIGHTYENA ])) .setPartyMemberFunc(1, getRandomPartyMemberFunc([ Species.CROBAT, Species.GLISCOR ])) .setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.WEEZING, Species.GALAR_WEEZING ])) @@ -1169,7 +1184,7 @@ export const trainerConfigs: TrainerConfigs = { p.pokeball = PokeballType.ULTRA_BALL; p.formIndex = 1; })), - [TrainerType.MAGMA_BOSS_MAXIE_2]: new TrainerConfig(++t).setName('Maxie').initForEvilTeamLeader("Magma Boss",[]) + [TrainerType.MAXIE_2]: new TrainerConfig(++t).setName('Maxie').initForEvilTeamLeader("Magma Boss",[]) .setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.SOLROCK, Species.MAGCARGO ], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); @@ -1195,7 +1210,7 @@ export const trainerConfigs: TrainerConfigs = { p.pokeball = PokeballType.ULTRA_BALL; p.formIndex = 1; })), - [TrainerType.AQUA_BOSS_ARCHIE_1]: new TrainerConfig(++t).setName('Archie').initForEvilTeamLeader("Aqua Boss",[]) + [TrainerType.ARCHIE]: new TrainerConfig(++t).setName('Archie').initForEvilTeamLeader("Aqua Boss",[]) .setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.LINOONE ])) .setPartyMemberFunc(1, getRandomPartyMemberFunc([ Species.CROBAT, Species.PELIPPER ])) .setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.MUK, Species.ALOLA_MUK ])) @@ -1207,7 +1222,7 @@ export const trainerConfigs: TrainerConfigs = { p.pokeball = PokeballType.ULTRA_BALL; p.formIndex = 1; })), - [TrainerType.AQUA_BOSS_ARCHIE_2]: new TrainerConfig(++t).setName('Archie').initForEvilTeamLeader("Aqua Boss",[]) + [TrainerType.ARCHIE_2]: new TrainerConfig(++t).setName('Archie').initForEvilTeamLeader("Aqua Boss",[]) .setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.KINGDRA, Species.LUDICOLO ], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); @@ -1236,7 +1251,7 @@ export const trainerConfigs: TrainerConfigs = { p.pokeball = PokeballType.ULTRA_BALL; p.formIndex = 1; })), - [TrainerType.GALACTIC_BOSS_CYRUS_1]: new TrainerConfig(++t).setName('Cyrus').initForEvilTeamLeader("Galactic Boss",[]) + [TrainerType.CYRUS]: new TrainerConfig(++t).setName('Cyrus').initForEvilTeamLeader("Galactic Boss",[]) .setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.GYARADOS, Species.BASCULEGION ])) .setPartyMemberFunc(1, getRandomPartyMemberFunc([ Species.HONCHKROW, Species.HISUI_BRAVIARY ])) .setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.CROBAT, Species.OVERQWIL ])) @@ -1251,7 +1266,7 @@ export const trainerConfigs: TrainerConfigs = { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; })), - [TrainerType.GALACTIC_BOSS_CYRUS_2]: new TrainerConfig(++t).setName('Cyrus').initForEvilTeamLeader("Galactic Boss",[]) + [TrainerType.CYRUS_2]: new TrainerConfig(++t).setName('Cyrus').initForEvilTeamLeader("Galactic Boss",[]) .setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.AZELF, Species.UXIE, Species.MESPRIT ], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); @@ -1269,7 +1284,7 @@ export const trainerConfigs: TrainerConfigs = { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; })), - [TrainerType.PLASMA_BOSS_GHETSIS_1]: new TrainerConfig(++t).setName('Ghetsis').initForEvilTeamLeader("Plasma Boss",[]) + [TrainerType.GHETSIS]: new TrainerConfig(++t).setName('Ghetsis').initForEvilTeamLeader("Plasma Boss",[]) .setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.COFAGRIGUS, Species.RUNERIGUS ])) .setPartyMemberFunc(1, getRandomPartyMemberFunc([ Species.BOUFFALANT ])) .setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.SEISMITOAD, Species.CARRACOSTA ])) @@ -1280,7 +1295,7 @@ export const trainerConfigs: TrainerConfigs = { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; })), - [TrainerType.PLASMA_BOSS_GHETSIS_2]: new TrainerConfig(++t).setName('Ghetsis').initForEvilTeamLeader("Plasma Boss",[]) + [TrainerType.GHETSIS_2]: new TrainerConfig(++t).setName('Ghetsis').initForEvilTeamLeader("Plasma Boss",[]) .setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.SLITHER_WING, Species.IRON_MOTH ], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); @@ -1299,7 +1314,7 @@ export const trainerConfigs: TrainerConfigs = { p.generateAndPopulateMoveset(); p.pokeball = PokeballType.ULTRA_BALL; })), - [TrainerType.FLARE_BOSS_LYSANDRE_1]: new TrainerConfig(++t).setName('Lysandre').initForEvilTeamLeader("Flare Boss",[]) + [TrainerType.LYSANDRE]: new TrainerConfig(++t).setName('Lysandre').initForEvilTeamLeader("Flare Boss",[]) .setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.MIENSHAO ])) .setPartyMemberFunc(1, getRandomPartyMemberFunc([ Species.HONCHKROW, Species.TALONFLAME ])) .setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.PYROAR ])) @@ -1311,7 +1326,7 @@ export const trainerConfigs: TrainerConfigs = { p.pokeball = PokeballType.ULTRA_BALL; p.formIndex = 1; })), - [TrainerType.FLARE_BOSS_LYSANDRE_2]: new TrainerConfig(++t).setName('Lysandre').initForEvilTeamLeader("Flare Boss",[]) + [TrainerType.LYSANDRE_2]: new TrainerConfig(++t).setName('Lysandre').initForEvilTeamLeader("Flare Boss",[]) .setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.SCREAM_TAIL, Species.FLUTTER_MANE ], TrainerSlot.TRAINER, true, p => { p.setBoss(true, 2); p.generateAndPopulateMoveset(); diff --git a/src/locales/en/trainers.ts b/src/locales/en/trainers.ts index 40140ea8b37..136da7e7011 100644 --- a/src/locales/en/trainers.ts +++ b/src/locales/en/trainers.ts @@ -10,6 +10,11 @@ export const titles: SimpleTranslationEntries = { "professor": "Professor", "frontier_brain": "Frontier Brain", "rocket_boss": "Team Rocket Boss", + "magma_boss": "Team Magma Boss", + "aqua_boss": "Team Aqua Boss", + "galactic_boss": "Team Galactic Boss", + "plasma_boss": "Team Plasma Boss", + "flare_boss": "Team Flare Boss", // Maybe if we add the evil teams we can add "Team Rocket" and "Team Aqua" etc. here as well as "Team Rocket Boss" and "Team Aqua Admin" etc. } as const; @@ -254,16 +259,9 @@ export const trainerNames: SimpleTranslationEntries = { "leon": "Leon", "rival": "Finn", "rival_female": "Ivy", - "rocket_boss_giovanni_1": "Giovanni", - "rocket_boss_giovanni_2": "Giovanni", - "magma_boss_maxie_1": "Maxie", - "magma_boss_maxie_2": "Maxie", - "aqua_boss_archie_1": "Archie", - "aqua_boss_archie_2": "Archie", - "galactic_boss_cyrus_1": "Cyrus", - "galactic_boss_cyrus_2": "Cyrus", - "plasma_boss_ghetsis_1": "Ghetsis", - "plasma_boss_ghetsis_2": "Ghetsis", - "flare_boss_lysandre_1": "Lysandre", - "flare_boss_lysandre_2": "Lysandre", + "maxie": "Maxie", + "archie": "Archie", + "cyrus": "Cyrus", + "ghetsis": "Ghetsis", + "lysandre": "Lysandre", } as const;