clean up post-battle logic for Breeder ME

This commit is contained in:
ImperialSympathizer 2024-09-21 17:11:12 -04:00
parent fd9743394a
commit 02d2b6ebce
4 changed files with 75 additions and 16 deletions

View File

@ -1,4 +1,4 @@
import { EnemyPartyConfig, handleMysteryEncounterBattleFailed, initBattleWithEnemyConfig, setEncounterRewards, } from "#app/data/mystery-encounters/utils/encounter-phase-utils";
import { EnemyPartyConfig, generateModifierType, handleMysteryEncounterBattleFailed, initBattleWithEnemyConfig, setEncounterRewards, } from "#app/data/mystery-encounters/utils/encounter-phase-utils";
import { trainerConfigs } from "#app/data/trainer-config";
import { MysteryEncounterType } from "#enums/mystery-encounter-type";
import BattleScene from "#app/battle-scene";
@ -21,6 +21,9 @@ import { EggTier } from "#enums/egg-type";
import { MysteryEncounterOptionBuilder } from "#app/data/mystery-encounters/mystery-encounter-option";
import { MysteryEncounterOptionMode } from "#enums/mystery-encounter-option-mode";
import { achvs } from "#app/system/achv";
import { modifierTypes, PokemonHeldItemModifierType } from "#app/modifier/modifier-type";
import { Type } from "#app/data/type";
import { getPokeballTintColor } from "#app/data/pokeball";
/** the i18n namespace for the encounter */
const namespace = "mysteryEncounter:expertPokemonBreeder";
@ -190,12 +193,6 @@ export const TheExpertPokemonBreederEncounter: MysteryEncounter =
pokemon3RareEggs
};
encounter.dialogue.outro = [
{
text: `${namespace}.outro`,
},
];
return true;
})
.withTitle(`${namespace}.title`)
@ -359,6 +356,7 @@ export const TheExpertPokemonBreederEncounter: MysteryEncounter =
)
.withOutroDialogue([
{
speaker: trainerNameKey,
text: `${namespace}.outro`,
},
])
@ -384,6 +382,11 @@ function getPartyConfig(scene: BattleScene): EnemyPartyConfig {
nature: Nature.ADAMANT,
moveSet: [Moves.METEOR_MASH, Moves.FIRE_PUNCH, Moves.ICE_PUNCH, Moves.THUNDER_PUNCH],
ivs: [31, 31, 31, 31, 31, 31],
modifierConfigs: [
{
modifier: generateModifierType(scene, modifierTypes.TERA_SHARD, [Type.STEEL]) as PokemonHeldItemModifierType,
}
]
}
]
};
@ -537,6 +540,7 @@ function onGameOver(scene: BattleScene) {
encounter.dialogue.outro = [
{
speaker: trainerNameKey,
text: `${namespace}.outro_failed`,
},
];
@ -552,6 +556,49 @@ function onGameOver(scene: BattleScene) {
// Set flag that encounter was failed
encounter.misc.encounterFailed = true;
// Revert BGM
scene.playBgm(scene.arena.bgm);
// Return enemy Pokemon
const pokemon = scene.getEnemyPokemon();
if (pokemon) {
scene.playSound("se/pb_rel");
pokemon.hideInfo();
pokemon.tint(getPokeballTintColor(pokemon.pokeball), 1, 250, "Sine.easeIn");
scene.tweens.add({
targets: pokemon,
duration: 250,
ease: "Sine.easeIn",
scale: 0.5,
onComplete: () => {
scene.field.remove(pokemon, true);
}
});
}
// Show the enemy trainer
scene.time.delayedCall(250, () => {
const sprites = scene.currentBattle.trainer?.getSprites();
const tintSprites = scene.currentBattle.trainer?.getTintSprites();
if (sprites && tintSprites) {
for (let i = 0; i < sprites.length; i++) {
sprites[i].setVisible(true);
tintSprites[i].setVisible(true);
sprites[i].clearTint();
tintSprites[i].clearTint();
}
}
scene.tweens.add({
targets: scene.currentBattle.trainer,
x: "-=16",
y: "+=16",
alpha: 1,
ease: "Sine.easeInOut",
duration: 750
});
});
handleMysteryEncounterBattleFailed(scene, true);
return false;

View File

@ -764,7 +764,7 @@ export function handleMysteryEncounterBattleFailed(scene: BattleScene, addHealPh
if (encounter.continuousEncounter || doNotContinue) {
return;
} else if (encounter.encounterMode !== MysteryEncounterMode.NO_BATTLE) {
scene.pushPhase(new BattleEndPhase(scene));
scene.pushPhase(new BattleEndPhase(scene, false));
}
scene.pushPhase(new MysteryEncounterRewardsPhase(scene, addHealPhase));

View File

@ -23,7 +23,7 @@
"selected": "Let's do this!"
},
"outro": "Look how happy your {{chosenPokemon}} is now!$Here, you can have these as well.",
"outro_dialogue": "How disappointing...$It looks like you still have a long way\nto go to earn your Pokémon's trust!",
"outro_failed": "How disappointing...$It looks like you still have a long way\nto go to earn your Pokémon's trust!",
"gained_eggs": "@s{item_fanfare}You received {{numEggs}}!",
"eggs_tooltip": "\n(+) Earn {{eggs}}",
"numEggs_one": "{{count}} {{rarity}} Egg",

View File

@ -2,11 +2,22 @@ import { applyPostBattleAbAttrs, PostBattleAbAttr } from "#app/data/ability";
import { LapsingPersistentModifier, LapsingPokemonHeldItemModifier } from "#app/modifier/modifier";
import { BattlePhase } from "./battle-phase";
import { GameOverPhase } from "./game-over-phase";
import BattleScene from "#app/battle-scene";
export class BattleEndPhase extends BattlePhase {
/** If true, will increment battles won */
isVictory: boolean;
constructor(scene: BattleScene, isVictory: boolean = true) {
super(scene);
this.isVictory = isVictory;
}
start() {
super.start();
if (this.isVictory) {
this.scene.currentBattle.addBattleScore(this.scene);
this.scene.gameData.gameStats.battles++;
@ -16,6 +27,7 @@ export class BattleEndPhase extends BattlePhase {
if (this.scene.gameMode.isEndless && this.scene.currentBattle.waveIndex + 1 > this.scene.gameData.gameStats.highestEndlessWave) {
this.scene.gameData.gameStats.highestEndlessWave = this.scene.currentBattle.waveIndex + 1;
}
}
// Endless graceful end
if (this.scene.gameMode.isEndless && this.scene.currentBattle.waveIndex >= 5850) {