From 7f02a04f0b66fb94b984652116f771203e4e3111 Mon Sep 17 00:00:00 2001 From: Burai Mu Date: Wed, 10 Sep 2025 15:25:32 +0800 Subject: [PATCH] - Adding throw ball and reset battle command. - Adding throw ball and reset battle command. --- src/battle-scene.ts | 1 + src/phases/attempt-capture-phase.ts | 1 + src/ui-inputs.ts | 2 + src/ui/handlers/command-ui-handler.ts | 53 +++++++++++++++++++++++++++ 4 files changed, 57 insertions(+) diff --git a/src/battle-scene.ts b/src/battle-scene.ts index 115d32e6651..e5b85a303e4 100644 --- a/src/battle-scene.ts +++ b/src/battle-scene.ts @@ -271,6 +271,7 @@ export class BattleScene extends SceneBase { public lastEnemyTrainer: Trainer | null; public currentBattle: Battle; public pokeballCounts: PokeballCounts; + public lastPokeballType: PokeballType = PokeballType.POKEBALL; public money: number; public pokemonInfoContainer: PokemonInfoContainer; private party: PlayerPokemon[]; diff --git a/src/phases/attempt-capture-phase.ts b/src/phases/attempt-capture-phase.ts index 25122e91033..cdb7c6c8c9c 100644 --- a/src/phases/attempt-capture-phase.ts +++ b/src/phases/attempt-capture-phase.ts @@ -56,6 +56,7 @@ export class AttemptCapturePhase extends PokemonPhase { } globalScene.pokeballCounts[this.pokeballType]--; + globalScene.lastUsedPokeball = this.pokeballType; this.originalY = pokemon.y; diff --git a/src/ui-inputs.ts b/src/ui-inputs.ts index 9c45bdb394d..000623f9539 100644 --- a/src/ui-inputs.ts +++ b/src/ui-inputs.ts @@ -13,6 +13,7 @@ import { SettingsDisplayUiHandler } from "#ui/settings-display-ui-handler"; import { SettingsGamepadUiHandler } from "#ui/settings-gamepad-ui-handler"; import { SettingsKeyboardUiHandler } from "#ui/settings-keyboard-ui-handler"; import { SettingsUiHandler } from "#ui/settings-ui-handler"; +import { CommandUiHandler } from "#ui/handlers/command-ui-handler"; import Phaser from "phaser"; type ActionKeys = Record void>; @@ -213,6 +214,7 @@ export class UiInputs { SettingsAudioUiHandler, SettingsGamepadUiHandler, SettingsKeyboardUiHandler, + CommandUiHandler ]; const uiHandler = globalScene.ui?.getHandler(); if (whitelist.some(handler => uiHandler instanceof handler)) { diff --git a/src/ui/handlers/command-ui-handler.ts b/src/ui/handlers/command-ui-handler.ts index a1219a8fb31..5ee385b9b80 100644 --- a/src/ui/handlers/command-ui-handler.ts +++ b/src/ui/handlers/command-ui-handler.ts @@ -13,6 +13,7 @@ import { PartyUiHandler, PartyUiMode } from "#ui/handlers/party-ui-handler"; import { UiHandler } from "#ui/handlers/ui-handler"; import { addTextObject } from "#ui/text"; import i18next from "i18next"; +import { BattleType } from "../../enums/battle-type"; export class CommandUiHandler extends UiHandler { private commandsContainer: Phaser.GameObjects.Container; @@ -187,6 +188,58 @@ export class CommandUiHandler extends UiHandler { this.toggleTeraButton(); } break; + case Button.CYCLE_SHINY: + const commandPhase = globalScene.phaseManager.getCurrentPhase() as CommandPhase; + if (globalScene.pokeballCounts[globalScene.lastPokeballType]) { + if (commandPhase.handleCommand(Command.BALL, globalScene.lastPokeballType)) { + globalScene.ui.setMode(UiMode.COMMAND, commandPhase.getFieldIndex()); + globalScene.ui.setMode(UiMode.MESSAGE); + success = true; + } + } else { + ui.playError(); + } + break; + case Button.CYCLE_ABILITY: + globalScene.ui.setMode(UiMode.MESSAGE) + globalScene.ui.showText(i18next.t("battle:retryBattle"), null, () => { + globalScene.ui.setMode( + UiMode.CONFIRM, + () => { + globalScene.ui.fadeOut(1250).then(() => { + globalScene.reset(); + globalScene.phaseManager.clearPhaseQueue(); + globalScene.gameData.loadSession(globalScene.sessionSlotId).then(() => { + globalScene.phaseManager.pushNew("EncounterPhase", true); + + const availablePartyMembers = globalScene.getPokemonAllowedInBattle().length; + + globalScene.phaseManager.pushNew("SummonPhase", 0); + if (globalScene.currentBattle.double && availablePartyMembers > 1) { + globalScene.phaseManager.pushNew("SummonPhase", 1); + } + if ( + globalScene.currentBattle.waveIndex > 1 && + globalScene.currentBattle.battleType !== BattleType.TRAINER + ) { + globalScene.phaseManager.pushNew("CheckSwitchPhase", 0, globalScene.currentBattle.double); + if (globalScene.currentBattle.double && availablePartyMembers > 1) { + globalScene.phaseManager.pushNew("CheckSwitchPhase", 1, globalScene.currentBattle.double); + } + } + globalScene.ui.fadeIn(1250); + globalScene.phaseManager.shiftPhase(); + }); + }); + }, + () => { globalScene.ui.setMode(UiMode.COMMAND)}, + false, + 0, + 0, + 1000, + ); + }); + break; } }