parent
5966852f8d
commit
a765b8b45d
@ -11,6 +11,7 @@
|
||||
#include "main.h"
|
||||
#include "m4a.h"
|
||||
#include "palette.h"
|
||||
#include "party_menu.h"
|
||||
#include "pokeball.h"
|
||||
#include "pokeblock.h"
|
||||
#include "pokemon.h"
|
||||
@ -22,6 +23,7 @@
|
||||
#include "window.h"
|
||||
#include "line_break.h"
|
||||
#include "constants/battle_anim.h"
|
||||
#include "constants/party_menu.h"
|
||||
#include "constants/songs.h"
|
||||
#include "constants/trainers.h"
|
||||
#include "constants/rgb.h"
|
||||
@ -33,6 +35,7 @@ static void SafariHandlePrintString(u32 battler);
|
||||
static void SafariHandlePrintSelectionString(u32 battler);
|
||||
static void SafariHandleChooseAction(u32 battler);
|
||||
static void SafariHandleChooseItem(u32 battler);
|
||||
static void SafariHandleChoosePokemon(u32 battler);
|
||||
static void SafariHandleStatusIconUpdate(u32 battler);
|
||||
static void SafariHandleFaintingCry(u32 battler);
|
||||
static void SafariHandleIntroTrainerBallThrow(u32 battler);
|
||||
@ -42,6 +45,7 @@ static void SafariHandleEndLinkBattle(u32 battler);
|
||||
static void SafariBufferRunCommand(u32 battler);
|
||||
static void SafariBufferExecCompleted(u32 battler);
|
||||
static void CompleteWhenChosePokeblock(u32 battler);
|
||||
static void WaitForMonSelection(u32 battler);
|
||||
|
||||
static void (*const sSafariBufferCommands[CONTROLLER_CMDS_COUNT])(u32 battler) =
|
||||
{
|
||||
@ -67,7 +71,7 @@ static void (*const sSafariBufferCommands[CONTROLLER_CMDS_COUNT])(u32 battler) =
|
||||
[CONTROLLER_YESNOBOX] = BtlController_Empty,
|
||||
[CONTROLLER_CHOOSEMOVE] = BtlController_Empty,
|
||||
[CONTROLLER_OPENBAG] = SafariHandleChooseItem,
|
||||
[CONTROLLER_CHOOSEPOKEMON] = BtlController_Empty,
|
||||
[CONTROLLER_CHOOSEPOKEMON] = SafariHandleChoosePokemon,
|
||||
[CONTROLLER_23] = BtlController_Empty,
|
||||
[CONTROLLER_HEALTHBARUPDATE] = BtlController_Empty,
|
||||
[CONTROLLER_EXPUPDATE] = BtlController_Empty,
|
||||
@ -225,6 +229,41 @@ static void CompleteWhenChosePokeblock(u32 battler)
|
||||
}
|
||||
}
|
||||
|
||||
static void OpenPartyMenuToChooseMon(u32 battler)
|
||||
{
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
gBattlerControllerFuncs[battler] = WaitForMonSelection;
|
||||
u8 caseId = gTasks[gBattleControllerData[battler]].data[0];
|
||||
DestroyTask(gBattleControllerData[battler]);
|
||||
FreeAllWindowBuffers();
|
||||
OpenPartyMenuInBattle(caseId);
|
||||
}
|
||||
}
|
||||
|
||||
static void WaitForMonSelection(u32 battler)
|
||||
{
|
||||
if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active)
|
||||
{
|
||||
if (gPartyMenuUseExitCallback == TRUE)
|
||||
BtlController_EmitChosenMonReturnValue(battler, B_COMM_TO_ENGINE, gSelectedMonPartyId, gBattlePartyCurrentOrder);
|
||||
else
|
||||
BtlController_EmitChosenMonReturnValue(battler, B_COMM_TO_ENGINE, PARTY_SIZE, NULL);
|
||||
|
||||
if ((gBattleResources->bufferA[battler][1] & 0xF) == 1)
|
||||
{
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
|
||||
{
|
||||
gBattle_BG0_X = 0;
|
||||
gBattle_BG0_Y = 0;
|
||||
BattlePutTextOnWindow(gText_LinkStandby, B_WIN_MSG);
|
||||
}
|
||||
}
|
||||
|
||||
SafariBufferExecCompleted(battler);
|
||||
}
|
||||
}
|
||||
|
||||
static void SafariBufferExecCompleted(u32 battler)
|
||||
{
|
||||
gBattlerControllerFuncs[battler] = SafariBufferRunCommand;
|
||||
@ -305,6 +344,31 @@ static void SafariHandleChooseItem(u32 battler)
|
||||
gBattlerInMenuId = battler;
|
||||
}
|
||||
|
||||
static void SafariHandleChoosePokemon(u32 battler)
|
||||
{
|
||||
for (s32 i = 0; i < ARRAY_COUNT(gBattlePartyCurrentOrder); i++)
|
||||
gBattlePartyCurrentOrder[i] = gBattleResources->bufferA[battler][4 + i];
|
||||
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_ARENA && (gBattleResources->bufferA[battler][1] & 0xF) != PARTY_ACTION_CANT_SWITCH
|
||||
&& (gBattleResources->bufferA[battler][1] & 0xF) != PARTY_ACTION_CHOOSE_FAINTED_MON
|
||||
&& (gBattleResources->bufferA[battler][1] & 0xF) != PARTY_ACTION_SEND_MON_TO_BOX)
|
||||
{
|
||||
BtlController_EmitChosenMonReturnValue(battler, B_COMM_TO_ENGINE, gBattlerPartyIndexes[battler] + 1, gBattlePartyCurrentOrder);
|
||||
SafariBufferExecCompleted(battler);
|
||||
}
|
||||
else
|
||||
{
|
||||
gBattleControllerData[battler] = CreateTask(TaskDummy, 0xFF);
|
||||
gTasks[gBattleControllerData[battler]].data[0] = gBattleResources->bufferA[battler][1] & 0xF;
|
||||
*(&gBattleStruct->battlerPreventingSwitchout) = gBattleResources->bufferA[battler][1] >> 4;
|
||||
*(&gBattleStruct->prevSelectedPartySlot) = gBattleResources->bufferA[battler][2];
|
||||
*(&gBattleStruct->abilityPreventingSwitchout) = (gBattleResources->bufferA[battler][3] & 0xFF) | (gBattleResources->bufferA[battler][7] << 8);
|
||||
BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK);
|
||||
gBattlerControllerFuncs[battler] = OpenPartyMenuToChooseMon;
|
||||
gBattlerInMenuId = battler;
|
||||
}
|
||||
}
|
||||
|
||||
static void SafariHandleStatusIconUpdate(u32 battler)
|
||||
{
|
||||
UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], GetBattlerMon(battler), HEALTHBOX_SAFARI_BALLS_TEXT);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user