Add Giovanni

This commit is contained in:
Temps Ray 2024-05-17 15:23:45 -04:00
parent 6881d158d6
commit c0c9b34a05
6 changed files with 74 additions and 8 deletions

View File

@ -857,7 +857,7 @@ export default class BattleScene extends SceneBase {
return false; return false;
} }
// Evil team no longer shows up after beating the boss // Evil team no longer shows up after beating the boss
if (waveIndex > 105) { if (waveIndex >= 105) {
return false; return false;
} }
// Evil team always spawns leading up to the boss // Evil team always spawns leading up to the boss

View File

@ -312,8 +312,12 @@ export const fixedBattles: FixedBattleConfigs = {
.setGetTrainerFunc(scene => new Trainer(scene, TrainerType.RIVAL_3, scene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)), .setGetTrainerFunc(scene => new Trainer(scene, TrainerType.RIVAL_3, scene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)),
[95]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) [95]: new FixedBattleConfig().setBattleType(BattleType.TRAINER)
.setGetTrainerFunc(scene => new Trainer(scene, TrainerType.RIVAL_4, scene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)), .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)),
[145]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) [145]: new FixedBattleConfig().setBattleType(BattleType.TRAINER)
.setGetTrainerFunc(scene => new Trainer(scene, TrainerType.RIVAL_5, scene.gameData.gender === PlayerGender.MALE ? TrainerVariant.FEMALE : TrainerVariant.DEFAULT)), .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)),
[182]: new FixedBattleConfig().setBattleType(BattleType.TRAINER) [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 ])), .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) [184]: new FixedBattleConfig().setBattleType(BattleType.TRAINER).setSeedOffsetWave(182)

View File

@ -478,6 +478,26 @@ export const trainerTypeDialogue = {
] ]
} }
], ],
[TrainerType.ROCKET_BOSS_GIOVANNI_1]: [
{
encounter: [
`So! I must say, I am impressed you got here!`
],
victory: [
`You only won since my abilities are (N)`
]
}
],
[TrainerType.ROCKET_BOSS_GIOVANNI_2]: [
{
encounter: [
`For your insolence, you will feel a world of pain!`
],
victory: [
`How is this possible...?`
]
}
],
[TrainerType.BROCK]: { [TrainerType.BROCK]: {
encounter: [ encounter: [
`My expertise on Rock-type Pokémon will take you down! Come on!`, `My expertise on Rock-type Pokémon will take you down! Come on!`,

View File

@ -51,6 +51,8 @@ export enum TrainerType {
WORKER, WORKER,
YOUNGSTER, YOUNGSTER,
ROCKET_GRUNT, ROCKET_GRUNT,
ROCKET_BOSS_GIOVANNI_1,
ROCKET_BOSS_GIOVANNI_2,
MAGMA_GRUNT, MAGMA_GRUNT,
AQUA_GRUNT, AQUA_GRUNT,
GALACTIC_GRUNT, GALACTIC_GRUNT,

View File

@ -276,6 +276,10 @@ export class TrainerConfig {
case TrainerType.LARRY_ELITE: case TrainerType.LARRY_ELITE:
trainerType = TrainerType.LARRY; trainerType = TrainerType.LARRY;
break; break;
case TrainerType.ROCKET_BOSS_GIOVANNI_1:
case TrainerType.ROCKET_BOSS_GIOVANNI_2:
trainerType = TrainerType.GIOVANNI;
break;
} }
return trainerType; return trainerType;
@ -402,7 +406,8 @@ export class TrainerConfig {
if (!getIsInitialized()) { if (!getIsInitialized()) {
initI18n(); initI18n();
} }
this.setPartyTemplates(trainerPartyTemplates.RIVAL_5);
console.log(signatureSpecies);
signatureSpecies.forEach((speciesPool, s) => { signatureSpecies.forEach((speciesPool, s) => {
if (!Array.isArray(speciesPool)) { if (!Array.isArray(speciesPool)) {
speciesPool = [speciesPool]; speciesPool = [speciesPool];
@ -419,12 +424,8 @@ export class TrainerConfig {
this.setMoneyMultiplier(2.5); this.setMoneyMultiplier(2.5);
this.setBoss(); this.setBoss();
this.setStaticParty(); this.setStaticParty();
this.setBattleBgm('battle_unova_gym'); this.setBattleBgm('battle_unova_gym'); // TODO: change
this.setVictoryBgm('victory_gym'); this.setVictoryBgm('victory_gym'); // TODO: change
// this.setGenModifiersFunc(party => {
// const waveIndex = party[0].scene.currentBattle.waveIndex;
// return getRandomTeraModifiers(party, waveIndex >= 100 ? 1 : 0, specialtyTypes.length ? specialtyTypes : null);
// });
return this; return this;
} }
@ -841,6 +842,7 @@ export const trainerConfigs: TrainerConfigs = {
[TrainerPoolTier.SUPER_RARE]: [Species.NOIVERN], [TrainerPoolTier.SUPER_RARE]: [Species.NOIVERN],
[TrainerPoolTier.ULTRA_RARE]: [] [TrainerPoolTier.ULTRA_RARE]: []
}), }),
[TrainerType.BROCK]: new TrainerConfig((t = TrainerType.BROCK)).initForGymLeader([ Species.GEODUDE, Species.ONIX ], Type.ROCK).setBattleBgm('battle_kanto_gym'), [TrainerType.BROCK]: new TrainerConfig((t = TrainerType.BROCK)).initForGymLeader([ Species.GEODUDE, Species.ONIX ], Type.ROCK).setBattleBgm('battle_kanto_gym'),
[TrainerType.MISTY]: new TrainerConfig(++t).initForGymLeader([ Species.STARYU, Species.PSYDUCK ], Type.WATER).setBattleBgm('battle_kanto_gym'), [TrainerType.MISTY]: new TrainerConfig(++t).initForGymLeader([ Species.STARYU, Species.PSYDUCK ], Type.WATER).setBattleBgm('battle_kanto_gym'),
[TrainerType.LT_SURGE]: new TrainerConfig(++t).initForGymLeader([ Species.VOLTORB, Species.PIKACHU, Species.ELECTABUZZ ], Type.ELECTRIC).setBattleBgm('battle_kanto_gym'), [TrainerType.LT_SURGE]: new TrainerConfig(++t).initForGymLeader([ Species.VOLTORB, Species.PIKACHU, Species.ELECTABUZZ ], Type.ELECTRIC).setBattleBgm('battle_kanto_gym'),
@ -1032,8 +1034,43 @@ export const trainerConfigs: TrainerConfigs = {
const starter = party[0]; const starter = party[0];
return [ modifierTypes.TERA_SHARD().generateType(null, [ starter.species.type1 ]).withIdFromFunc(modifierTypes.TERA_SHARD).newModifier(starter) as PersistentModifier ]; return [ modifierTypes.TERA_SHARD().generateType(null, [ starter.species.type1 ]).withIdFromFunc(modifierTypes.TERA_SHARD).newModifier(starter) as PersistentModifier ];
}), }),
[TrainerType.ROCKET_BOSS_GIOVANNI_1]: new TrainerConfig(t = TrainerType.GIOVANNI).setName('Giovanni').initForEvilTeamLeader("Rocket Boss",[])
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.PERSIAN , Species.ALOLA_PERSIAN]))
.setPartyMemberFunc(1, getRandomPartyMemberFunc([ Species.NIDOKING , Species.NIDOQUEEN ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.RHYPERIOR ]))
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.DUGTRIO, Species.ALOLA_DUGTRIO, Species.WUGTRIO]))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.MAROWAK , Species.ALOLA_MAROWAK]))
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.KANGASKHAN ], TrainerSlot.TRAINER, true, p => {
p.setBoss(true, 2);
p.generateAndPopulateMoveset();
p.pokeball = PokeballType.ULTRA_BALL;
p.formIndex = 1;
})),
[TrainerType.ROCKET_BOSS_GIOVANNI_2]: new TrainerConfig(++t).setName('Giovanni').initForEvilTeamLeader("Rocket Boss", [])
.setPartyMemberFunc(0, getRandomPartyMemberFunc([ Species.TYRANITAR , Species.IRON_THORNS], TrainerSlot.TRAINER, true, p => {
p.setBoss(true, 2);
p.generateAndPopulateMoveset();
p.pokeball = PokeballType.ULTRA_BALL;
}))
.setPartyMemberFunc(1, getRandomPartyMemberFunc([ Species.EXCADRILL ]))
.setPartyMemberFunc(2, getRandomPartyMemberFunc([ Species.HIPPOWDON ]))
.setPartyMemberFunc(3, getRandomPartyMemberFunc([ Species.KANGASKHAN ], TrainerSlot.TRAINER, true, p => {
p.setBoss(true, 2);
p.generateAndPopulateMoveset();
p.pokeball = PokeballType.ULTRA_BALL;
p.formIndex = 1;
}))
.setPartyMemberFunc(4, getRandomPartyMemberFunc([ Species.GASTRODON]))
.setPartyMemberFunc(5, getRandomPartyMemberFunc([ Species.MEWTWO ], TrainerSlot.TRAINER, true, p => {
p.setBoss(true, 3);
p.generateAndPopulateMoveset();
p.pokeball = PokeballType.MASTER_BALL;
})),
}; };
(function () { (function () {
initTrainerTypeDialogue(); initTrainerTypeDialogue();
})(); })();

View File

@ -9,6 +9,7 @@ export const titles: SimpleTranslationEntries = {
"rival": "Rival", "rival": "Rival",
"professor": "Professor", "professor": "Professor",
"frontier_brain": "Frontier Brain", "frontier_brain": "Frontier Brain",
"rocket_boss": "Team Rocket 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. // 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; } as const;
@ -253,4 +254,6 @@ export const trainerNames: SimpleTranslationEntries = {
"leon": "Leon", "leon": "Leon",
"rival": "Finn", "rival": "Finn",
"rival_female": "Ivy", "rival_female": "Ivy",
"rocket_boss_giovanni_1": "Giovanni",
"rocket_boss_giovanni_2": "Giovanni",
} as const; } as const;