Fix sprites and add random team boss

This commit is contained in:
Temps Ray 2024-05-20 18:02:06 -04:00
parent 1db83e04fa
commit 99a9cef292
5 changed files with 116 additions and 47 deletions

View File

@ -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)

View File

@ -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.`

View File

@ -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,

View File

@ -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();

View File

@ -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;