summaryrefslogtreecommitdiff
path: root/src/battle_script_commands.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/battle_script_commands.c')
-rw-r--r--src/battle_script_commands.c783
1 files changed, 401 insertions, 382 deletions
diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c
index 91f89137a..84854ebb8 100644
--- a/src/battle_script_commands.c
+++ b/src/battle_script_commands.c
@@ -1,25 +1,15 @@
#include "global.h"
#include "battle.h"
-#include "constants/battle_move_effects.h"
-#include "constants/battle_script_commands.h"
#include "battle_message.h"
#include "battle_anim.h"
#include "battle_ai_script_commands.h"
#include "battle_scripts.h"
-#include "constants/moves.h"
-#include "constants/abilities.h"
#include "item.h"
-#include "constants/items.h"
-#include "constants/hold_effects.h"
#include "util.h"
#include "pokemon.h"
#include "random.h"
#include "battle_controllers.h"
#include "battle_interface.h"
-#include "constants/songs.h"
-#include "constants/trainers.h"
-#include "constants/battle_anim.h"
-#include "constants/map_types.h"
#include "text.h"
#include "sound.h"
#include "pokedex.h"
@@ -38,7 +28,6 @@
#include "pokemon_storage_system.h"
#include "task.h"
#include "naming_screen.h"
-#include "constants/battle_string_ids.h"
#include "battle_setup.h"
#include "overworld.h"
#include "party_menu.h"
@@ -49,32 +38,43 @@
#include "pokemon_summary_screen.h"
#include "pokenav.h"
#include "menu_specialized.h"
-#include "constants/rgb.h"
#include "data.h"
+#include "constants/abilities.h"
+#include "constants/battle_anim.h"
+#include "constants/battle_move_effects.h"
+#include "constants/battle_string_ids.h"
+#include "constants/hold_effects.h"
+#include "constants/items.h"
+#include "constants/map_types.h"
+#include "constants/moves.h"
#include "constants/party_menu.h"
-
-extern struct MusicPlayerInfo gMPlayInfo_BGM;
+#include "constants/rgb.h"
+#include "constants/songs.h"
+#include "constants/trainers.h"
extern const u8* const gBattleScriptsForMoveEffects[];
#define DEFENDER_IS_PROTECTED ((gProtectStructs[gBattlerTarget].protected) && (gBattleMoves[gCurrentMove].flags & FLAG_PROTECT_AFFECTED))
-// this file's functions
+#define LEVEL_UP_BANNER_START 416
+#define LEVEL_UP_BANNER_END 512
+
+#define TAG_LVLUP_BANNER_MON_ICON 55130
+
static bool8 IsTwoTurnsMove(u16 move);
static void TrySetDestinyBondToHappen(void);
static u8 AttacksThisTurn(u8 battlerId, u16 move); // Note: returns 1 if it's a charging turn, otherwise 2.
static void CheckWonderGuardAndLevitate(void);
static u8 ChangeStatBuffs(s8 statValue, u8 statId, u8, const u8* BS_ptr);
static bool32 IsMonGettingExpSentOut(void);
-static void sub_804F17C(void);
-static bool8 sub_804F1CC(void);
+static void InitLevelUpBanner(void);
+static bool8 SlideInLevelUpBanner(void);
+static bool8 SlideOutLevelUpBanner(void);
static void DrawLevelUpWindow1(void);
static void DrawLevelUpWindow2(void);
-static bool8 sub_804F344(void);
-static void PutMonIconOnLvlUpBox(void);
-static void PutLevelAndGenderOnLvlUpBox(void);
-
-static void SpriteCB_MonIconOnLvlUpBox(struct Sprite* sprite);
+static void PutMonIconOnLvlUpBanner(void);
+static void DrawLevelUpBannerText(void);
+static void SpriteCB_MonIconOnLvlUpBanner(struct Sprite* sprite);
static void Cmd_attackcanceler(void);
static void Cmd_accuracycheck(void);
@@ -112,7 +112,7 @@ static void Cmd_jumpifstat(void);
static void Cmd_jumpifstatus3condition(void);
static void Cmd_jumpiftype(void);
static void Cmd_getexp(void);
-static void Cmd_unknown_24(void);
+static void Cmd_checkteamslost(void);
static void Cmd_movevaluescleanup(void);
static void Cmd_setmultihit(void);
static void Cmd_decrementmultihit(void);
@@ -146,7 +146,7 @@ static void Cmd_jumpiftype2(void);
static void Cmd_jumpifabilitypresent(void);
static void Cmd_endselectionscript(void);
static void Cmd_playanimation(void);
-static void Cmd_playanimation2(void);
+static void Cmd_playanimation_var(void);
static void Cmd_setgraphicalstatchangevalues(void);
static void Cmd_playstatchangeanimation(void);
static void Cmd_moveend(void);
@@ -170,7 +170,7 @@ static void Cmd_yesnoboxlearnmove(void);
static void Cmd_yesnoboxstoplearningmove(void);
static void Cmd_hitanimation(void);
static void Cmd_getmoneyreward(void);
-static void Cmd_unknown_5E(void);
+static void Cmd_updatebattlermoves(void);
static void Cmd_swapattackerwithtarget(void);
static void Cmd_incrementgamestat(void);
static void Cmd_drawpartystatussummary(void);
@@ -312,7 +312,7 @@ static void Cmd_settypebasedhalvers(void);
static void Cmd_setweatherballtype(void);
static void Cmd_tryrecycleitem(void);
static void Cmd_settypetoterrain(void);
-static void Cmd_pursuitrelated(void);
+static void Cmd_pursuitdoubles(void);
static void Cmd_snatchsetbattlers(void);
static void Cmd_removelightscreenreflect(void);
static void Cmd_handleballthrow(void);
@@ -364,7 +364,7 @@ void (* const gBattleScriptingCommandsTable[])(void) =
Cmd_jumpifstatus3condition, //0x21
Cmd_jumpiftype, //0x22
Cmd_getexp, //0x23
- Cmd_unknown_24, //0x24
+ Cmd_checkteamslost, //0x24
Cmd_movevaluescleanup, //0x25
Cmd_setmultihit, //0x26
Cmd_decrementmultihit, //0x27
@@ -398,7 +398,7 @@ void (* const gBattleScriptingCommandsTable[])(void) =
Cmd_jumpifabilitypresent, //0x43
Cmd_endselectionscript, //0x44
Cmd_playanimation, //0x45
- Cmd_playanimation2, //0x46
+ Cmd_playanimation_var, //0x46
Cmd_setgraphicalstatchangevalues, //0x47
Cmd_playstatchangeanimation, //0x48
Cmd_moveend, //0x49
@@ -422,7 +422,7 @@ void (* const gBattleScriptingCommandsTable[])(void) =
Cmd_yesnoboxstoplearningmove, //0x5B
Cmd_hitanimation, //0x5C
Cmd_getmoneyreward, //0x5D
- Cmd_unknown_5E, //0x5E
+ Cmd_updatebattlermoves, //0x5E
Cmd_swapattackerwithtarget, //0x5F
Cmd_incrementgamestat, //0x60
Cmd_drawpartystatussummary, //0x61
@@ -564,7 +564,7 @@ void (* const gBattleScriptingCommandsTable[])(void) =
Cmd_setweatherballtype, //0xE9
Cmd_tryrecycleitem, //0xEA
Cmd_settypetoterrain, //0xEB
- Cmd_pursuitrelated, //0xEC
+ Cmd_pursuitdoubles, //0xEC
Cmd_snatchsetbattlers, //0xED
Cmd_removelightscreenreflect, //0xEE
Cmd_handleballthrow, //0xEF
@@ -667,10 +667,18 @@ static const u8* const sMoveEffectBS_Ptrs[] =
[MOVE_EFFECT_RECOIL_33] = BattleScript_MoveEffectRecoil,
};
-static const struct WindowTemplate sUnusedWinTemplate = {0, 1, 3, 7, 0xF, 0x1F, 0x3F};
+static const struct WindowTemplate sUnusedWinTemplate = {
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 3,
+ .width = 7,
+ .height = 15,
+ .paletteNum = 31,
+ .baseBlock = 0x3F
+};
-static const u16 sUnknown_0831C2C8[] = INCBIN_U16("graphics/battle_interface/unk_battlebox.gbapal");
-static const u32 sUnknown_0831C2E8[] = INCBIN_U32("graphics/battle_interface/unk_battlebox.4bpp.lz");
+static const u16 sLevelUpBanner_Pal[] = INCBIN_U16("graphics/battle_interface/level_up_banner.gbapal");
+static const u32 sLevelUpBanner_Gfx[] = INCBIN_U32("graphics/battle_interface/level_up_banner.4bpp.lz");
// unused
static const u8 sRubyLevelUpStatBoxStats[] =
@@ -679,9 +687,7 @@ static const u8 sRubyLevelUpStatBoxStats[] =
MON_DATA_SPDEF, MON_DATA_DEF, MON_DATA_SPEED
};
-#define MON_ICON_LVLUP_BOX_TAG 0xD75A
-
-static const struct OamData sOamData_MonIconOnLvlUpBox =
+static const struct OamData sOamData_MonIconOnLvlUpBanner =
{
.y = 0,
.affineMode = ST_OAM_AFFINE_OFF,
@@ -698,15 +704,15 @@ static const struct OamData sOamData_MonIconOnLvlUpBox =
.affineParam = 0,
};
-static const struct SpriteTemplate sSpriteTemplate_MonIconOnLvlUpBox =
+static const struct SpriteTemplate sSpriteTemplate_MonIconOnLvlUpBanner =
{
- .tileTag = MON_ICON_LVLUP_BOX_TAG,
- .paletteTag = MON_ICON_LVLUP_BOX_TAG,
- .oam = &sOamData_MonIconOnLvlUpBox,
+ .tileTag = TAG_LVLUP_BANNER_MON_ICON,
+ .paletteTag = TAG_LVLUP_BANNER_MON_ICON,
+ .oam = &sOamData_MonIconOnLvlUpBanner,
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = SpriteCB_MonIconOnLvlUpBox
+ .callback = SpriteCB_MonIconOnLvlUpBanner
};
static const u16 sProtectSuccessRates[] = {USHRT_MAX, USHRT_MAX / 2, USHRT_MAX / 4, USHRT_MAX / 8};
@@ -1108,7 +1114,7 @@ static void Cmd_accuracycheck(void)
s8 buff;
u16 calc;
- if (move == 0)
+ if (move == ACC_CURR_MOVE)
move = gCurrentMove;
GET_MOVE_TYPE(move, type);
@@ -1228,11 +1234,12 @@ static void Cmd_ppreduce(void)
else
gBattleMons[gBattlerAttacker].pp[gCurrMovePos] = 0;
- if (!(gBattleMons[gBattlerAttacker].status2 & STATUS2_TRANSFORMED)
- && !((gDisableStructs[gBattlerAttacker].mimickedMoves) & gBitTable[gCurrMovePos]))
+ if (MOVE_IS_PERMANENT(gBattlerAttacker, gCurrMovePos))
{
gActiveBattler = gBattlerAttacker;
- BtlController_EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + gCurrMovePos, 0, 1, &gBattleMons[gBattlerAttacker].pp[gCurrMovePos]);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_PPMOVE1_BATTLE + gCurrMovePos, 0,
+ sizeof(gBattleMons[gBattlerAttacker].pp[gCurrMovePos]),
+ &gBattleMons[gBattlerAttacker].pp[gCurrMovePos]);
MarkBattlerForControllerExec(gBattlerAttacker);
}
}
@@ -1769,7 +1776,7 @@ static void Cmd_attackanimation(void)
else
multihit = gMultiHitCounter;
- BtlController_EmitMoveAnimation(0, gCurrentMove, gBattleScripting.animTurn, gBattleMovePower, gBattleMoveDamage, gBattleMons[gBattlerAttacker].friendship, &gDisableStructs[gBattlerAttacker], multihit);
+ BtlController_EmitMoveAnimation(BUFFER_A, gCurrentMove, gBattleScripting.animTurn, gBattleMovePower, gBattleMoveDamage, gBattleMons[gBattlerAttacker].friendship, &gDisableStructs[gBattlerAttacker], multihit);
gBattleScripting.animTurn += 1;
gBattleScripting.animTargetsHit += 1;
MarkBattlerForControllerExec(gBattlerAttacker);
@@ -1814,7 +1821,7 @@ static void Cmd_healthbarupdate(void)
else
healthValue = maxPossibleDmgValue;
- BtlController_EmitHealthBarUpdate(0, healthValue);
+ BtlController_EmitHealthBarUpdate(BUFFER_A, healthValue);
MarkBattlerForControllerExec(gActiveBattler);
if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER && gBattleMoveDamage > 0)
@@ -1834,8 +1841,8 @@ static void Cmd_datahpupdate(void)
if (gBattleStruct->dynamicMoveType == 0)
moveType = gBattleMoves[gCurrentMove].type;
- else if (!(gBattleStruct->dynamicMoveType & 0x40))
- moveType = gBattleStruct->dynamicMoveType & 0x3F;
+ else if (!(gBattleStruct->dynamicMoveType & F_DYNAMIC_TYPE_1))
+ moveType = gBattleStruct->dynamicMoveType & DYNAMIC_TYPE_MASK;
else
moveType = gBattleMoves[gCurrentMove].type;
@@ -1938,7 +1945,7 @@ static void Cmd_datahpupdate(void)
}
}
gHitMarker &= ~HITMARKER_PASSIVE_DAMAGE;
- BtlController_EmitSetMonData(0, REQUEST_HP_BATTLE, 0, 2, &gBattleMons[gActiveBattler].hp);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_HP_BATTLE, 0, sizeof(gBattleMons[gActiveBattler].hp), &gBattleMons[gActiveBattler].hp);
MarkBattlerForControllerExec(gActiveBattler);
}
}
@@ -1975,11 +1982,11 @@ static void Cmd_effectivenesssound(void)
switch (gMoveResultFlags & (u8)(~MOVE_RESULT_MISSED))
{
case MOVE_RESULT_SUPER_EFFECTIVE:
- BtlController_EmitPlaySE(0, SE_SUPER_EFFECTIVE);
+ BtlController_EmitPlaySE(BUFFER_A, SE_SUPER_EFFECTIVE);
MarkBattlerForControllerExec(gActiveBattler);
break;
case MOVE_RESULT_NOT_VERY_EFFECTIVE:
- BtlController_EmitPlaySE(0, SE_NOT_EFFECTIVE);
+ BtlController_EmitPlaySE(BUFFER_A, SE_NOT_EFFECTIVE);
MarkBattlerForControllerExec(gActiveBattler);
break;
case MOVE_RESULT_DOESNT_AFFECT_FOE:
@@ -1992,17 +1999,17 @@ static void Cmd_effectivenesssound(void)
default:
if (gMoveResultFlags & MOVE_RESULT_SUPER_EFFECTIVE)
{
- BtlController_EmitPlaySE(0, SE_SUPER_EFFECTIVE);
+ BtlController_EmitPlaySE(BUFFER_A, SE_SUPER_EFFECTIVE);
MarkBattlerForControllerExec(gActiveBattler);
}
else if (gMoveResultFlags & MOVE_RESULT_NOT_VERY_EFFECTIVE)
{
- BtlController_EmitPlaySE(0, SE_NOT_EFFECTIVE);
+ BtlController_EmitPlaySE(BUFFER_A, SE_NOT_EFFECTIVE);
MarkBattlerForControllerExec(gActiveBattler);
}
else if (!(gMoveResultFlags & (MOVE_RESULT_DOESNT_AFFECT_FOE | MOVE_RESULT_FAILED)))
{
- BtlController_EmitPlaySE(0, SE_EFFECTIVE);
+ BtlController_EmitPlaySE(BUFFER_A, SE_EFFECTIVE);
MarkBattlerForControllerExec(gActiveBattler);
}
break;
@@ -2115,7 +2122,7 @@ static void Cmd_printselectionstring(void)
{
gActiveBattler = gBattlerAttacker;
- BtlController_EmitPrintSelectionString(0, T2_READ_16(gBattlescriptCurrInstr + 1));
+ BtlController_EmitPrintSelectionString(BUFFER_A, T2_READ_16(gBattlescriptCurrInstr + 1));
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 3;
@@ -2165,7 +2172,7 @@ static void Cmd_printselectionstringfromtable(void)
ptr += gBattleCommunication[MULTISTRING_CHOOSER];
gActiveBattler = gBattlerAttacker;
- BtlController_EmitPrintSelectionString(0, *ptr);
+ BtlController_EmitPrintSelectionString(BUFFER_A, *ptr);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 5;
@@ -2447,7 +2454,7 @@ void SetMoveEffect(bool8 primary, u8 certain)
gBattlescriptCurrInstr = sMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
gActiveBattler = gEffectBattler;
- BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gEffectBattler].status1);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gEffectBattler].status1), &gBattleMons[gEffectBattler].status1);
MarkBattlerForControllerExec(gActiveBattler);
if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
@@ -2750,11 +2757,11 @@ void SetMoveEffect(bool8 primary, u8 certain)
gBattleMons[gBattlerTarget].item = 0;
gActiveBattler = gBattlerAttacker;
- BtlController_EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gLastUsedItem);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_HELDITEM_BATTLE, 0, sizeof(gLastUsedItem), &gLastUsedItem);
MarkBattlerForControllerExec(gBattlerAttacker);
gActiveBattler = gBattlerTarget;
- BtlController_EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gBattlerTarget].item);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[gBattlerTarget].item), &gBattleMons[gBattlerTarget].item);
MarkBattlerForControllerExec(gBattlerTarget);
BattleScriptPush(gBattlescriptCurrInstr + 1);
@@ -2793,7 +2800,7 @@ void SetMoveEffect(bool8 primary, u8 certain)
gBattleMons[gBattlerTarget].status1 &= ~STATUS1_PARALYSIS;
gActiveBattler = gBattlerTarget;
- BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gActiveBattler].status1), &gBattleMons[gActiveBattler].status1);
MarkBattlerForControllerExec(gActiveBattler);
BattleScriptPush(gBattlescriptCurrInstr + 1);
@@ -2971,13 +2978,13 @@ static void Cmd_tryfaintmon(void)
if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER)
{
gHitMarker |= HITMARKER_PLAYER_FAINTED;
- if (gBattleResults.playerFaintCounter < 0xFF)
+ if (gBattleResults.playerFaintCounter < 255)
gBattleResults.playerFaintCounter++;
AdjustFriendshipOnBattleFaint(gActiveBattler);
}
else
{
- if (gBattleResults.opponentFaintCounter < 0xFF)
+ if (gBattleResults.opponentFaintCounter < 255)
gBattleResults.opponentFaintCounter++;
gBattleResults.lastOpponentSpecies = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES, NULL);
}
@@ -3000,7 +3007,7 @@ static void Cmd_tryfaintmon(void)
BattleScriptPush(gBattlescriptCurrInstr);
gBattlescriptCurrInstr = BattleScript_GrudgeTakesPp;
gActiveBattler = gBattlerAttacker;
- BtlController_EmitSetMonData(0, moveIndex + REQUEST_PPMOVE1_BATTLE, 0, 1, &gBattleMons[gActiveBattler].pp[moveIndex]);
+ BtlController_EmitSetMonData(BUFFER_A, moveIndex + REQUEST_PPMOVE1_BATTLE, 0, sizeof(gBattleMons[gActiveBattler].pp[moveIndex]), &gBattleMons[gActiveBattler].pp[moveIndex]);
MarkBattlerForControllerExec(gActiveBattler);
PREPARE_MOVE_BUFFER(gBattleTextBuff1, gBattleMons[gBattlerAttacker].moves[moveIndex])
@@ -3018,7 +3025,7 @@ static void Cmd_dofaintanimation(void)
if (gBattleControllerExecFlags == 0)
{
gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
- BtlController_EmitFaintAnimation(0);
+ BtlController_EmitFaintAnimation(BUFFER_A);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 2;
}
@@ -3033,7 +3040,7 @@ static void Cmd_cleareffectsonfaint(void)
if (!(gBattleTypeFlags & BATTLE_TYPE_ARENA) || gBattleMons[gActiveBattler].hp == 0)
{
gBattleMons[gActiveBattler].status1 = 0;
- BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 0x4, &gBattleMons[gActiveBattler].status1);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gActiveBattler].status1), &gBattleMons[gActiveBattler].status1);
MarkBattlerForControllerExec(gActiveBattler);
}
@@ -3175,23 +3182,23 @@ static void Cmd_jumpifstat(void)
static void Cmd_jumpifstatus3condition(void)
{
- u32 flags;
+ u32 status;
const u8 *jumpPtr;
gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
- flags = T2_READ_32(gBattlescriptCurrInstr + 2);
+ status = T2_READ_32(gBattlescriptCurrInstr + 2);
jumpPtr = T2_READ_PTR(gBattlescriptCurrInstr + 7);
if (gBattlescriptCurrInstr[6])
{
- if ((gStatuses3[gActiveBattler] & flags) != 0)
+ if ((gStatuses3[gActiveBattler] & status) != 0)
gBattlescriptCurrInstr += 11;
else
gBattlescriptCurrInstr = jumpPtr;
}
else
{
- if ((gStatuses3[gActiveBattler] & flags) != 0)
+ if ((gStatuses3[gActiveBattler] & status) != 0)
gBattlescriptCurrInstr = jumpPtr;
else
gBattlescriptCurrInstr += 11;
@@ -3399,7 +3406,7 @@ static void Cmd_getexp(void)
gBattleResources->beforeLvlUp->stats[STAT_SPDEF] = GetMonData(&gPlayerParty[gBattleStruct->expGetterMonId], MON_DATA_SPDEF);
gActiveBattler = gBattleStruct->expGetterBattlerId;
- BtlController_EmitExpUpdate(0, gBattleStruct->expGetterMonId, gBattleMoveDamage);
+ BtlController_EmitExpUpdate(BUFFER_A, gBattleStruct->expGetterMonId, gBattleMoveDamage);
MarkBattlerForControllerExec(gActiveBattler);
}
gBattleScripting.getexpState++;
@@ -3489,7 +3496,10 @@ static void Cmd_getexp(void)
}
}
-static void Cmd_unknown_24(void)
+// For battles that aren't BATTLE_TYPE_LINK or BATTLE_TYPE_RECORDED_LINK, the only thing this
+// command does is check whether the player has won/lost by totaling each team's HP. It then
+// sets gBattleOutcome accordingly, if necessary.
+static void Cmd_checkteamslost(void)
{
u16 HP_count = 0;
s32 i;
@@ -3497,8 +3507,10 @@ static void Cmd_unknown_24(void)
if (gBattleControllerExecFlags)
return;
+ // Get total HP for the player's party to determine if the player has lost
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER && gPartnerTrainerId == TRAINER_STEVEN_PARTNER)
{
+ // In multi battle with Steven, skip his Pokémon
for (i = 0; i < MULTI_PARTY_SIZE; i++)
{
if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) && !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG))
@@ -3516,53 +3528,53 @@ static void Cmd_unknown_24(void)
}
}
}
-
if (HP_count == 0)
gBattleOutcome |= B_OUTCOME_LOST;
-
HP_count = 0;
+ // Get total HP for the enemy's party to determine if the player has won
for (i = 0; i < PARTY_SIZE; i++)
{
if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES) && !GetMonData(&gEnemyParty[i], MON_DATA_IS_EGG)
- && (!(gBattleTypeFlags & BATTLE_TYPE_ARENA) || !(gBattleStruct->arenaLostOpponentMons & gBitTable[i])))
+ && (!(gBattleTypeFlags & BATTLE_TYPE_ARENA) || !(gBattleStruct->arenaLostOpponentMons & gBitTable[i])))
{
HP_count += GetMonData(&gEnemyParty[i], MON_DATA_HP);
}
}
-
if (HP_count == 0)
gBattleOutcome |= B_OUTCOME_WON;
+ // For link battles that haven't ended, count number of empty battler spots
+ // In link multi battles, jump to pointer if more than 1 spot empty
+ // In non-multi battles, jump to pointer if 1 spot is missing on both sides
if (gBattleOutcome == 0 && (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK)))
{
- s32 foundPlayer = 0;
- s32 foundOpponent;
+ s32 emptyPlayerSpots = 0;
+ s32 emptyOpponentSpots;
for (i = 0; i < gBattlersCount; i += 2)
{
- if ((gHitMarker & HITMARKER_FAINTED2(i)) && (!gSpecialStatuses[i].flag40))
- foundPlayer++;
+ if ((gHitMarker & HITMARKER_FAINTED2(i)) && (!gSpecialStatuses[i].faintedHasReplacement))
+ emptyPlayerSpots++;
}
- foundOpponent = 0;
-
+ emptyOpponentSpots = 0;
for (i = 1; i < gBattlersCount; i += 2)
{
- if ((gHitMarker & HITMARKER_FAINTED2(i)) && (!gSpecialStatuses[i].flag40))
- foundOpponent++;
+ if ((gHitMarker & HITMARKER_FAINTED2(i)) && (!gSpecialStatuses[i].faintedHasReplacement))
+ emptyOpponentSpots++;
}
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
- if (foundOpponent + foundPlayer > 1)
+ if (emptyOpponentSpots + emptyPlayerSpots > 1)
gBattlescriptCurrInstr = T2_READ_PTR(gBattlescriptCurrInstr + 1);
else
gBattlescriptCurrInstr += 5;
}
else
{
- if (foundOpponent != 0 && foundPlayer != 0)
+ if (emptyOpponentSpots != 0 && emptyPlayerSpots != 0)
gBattlescriptCurrInstr = T2_READ_PTR(gBattlescriptCurrInstr + 1);
else
gBattlescriptCurrInstr += 5;
@@ -3758,9 +3770,7 @@ static void Cmd_jumpifarraynotequal(void)
for (i = 0; i < size; i++)
{
if (*mem1 == *mem2)
- {
equalBytes++;
- }
mem1++, mem2++;
}
@@ -3800,9 +3810,7 @@ static void Cmd_copyarray(void)
s32 i;
for (i = 0; i < size; i++)
- {
dest[i] = src[i];
- }
gBattlescriptCurrInstr += 10;
}
@@ -3816,9 +3824,7 @@ static void Cmd_copyarraywithindex(void)
s32 i;
for (i = 0; i < size; i++)
- {
dest[i] = src[i + *index];
- }
gBattlescriptCurrInstr += 14;
}
@@ -3899,7 +3905,7 @@ static void Cmd_healthbar_update(void)
else
gActiveBattler = gBattlerAttacker;
- BtlController_EmitHealthBarUpdate(0, gBattleMoveDamage);
+ BtlController_EmitHealthBarUpdate(BUFFER_A, gBattleMoveDamage);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 2;
}
@@ -3970,10 +3976,10 @@ static void Cmd_playanimation(void)
argumentPtr = T2_READ_PTR(gBattlescriptCurrInstr + 3);
if (gBattlescriptCurrInstr[2] == B_ANIM_STATS_CHANGE
- || gBattlescriptCurrInstr[2] == B_ANIM_SNATCH_MOVE
- || gBattlescriptCurrInstr[2] == B_ANIM_SUBSTITUTE_FADE)
+ || gBattlescriptCurrInstr[2] == B_ANIM_SNATCH_MOVE
+ || gBattlescriptCurrInstr[2] == B_ANIM_SUBSTITUTE_FADE)
{
- BtlController_EmitBattleAnimation(0, gBattlescriptCurrInstr[2], *argumentPtr);
+ BtlController_EmitBattleAnimation(BUFFER_A, gBattlescriptCurrInstr[2], *argumentPtr);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 7;
}
@@ -3983,11 +3989,11 @@ static void Cmd_playanimation(void)
gBattlescriptCurrInstr = BattleScript_Pausex20;
}
else if (gBattlescriptCurrInstr[2] == B_ANIM_RAIN_CONTINUES
- || gBattlescriptCurrInstr[2] == B_ANIM_SUN_CONTINUES
- || gBattlescriptCurrInstr[2] == B_ANIM_SANDSTORM_CONTINUES
- || gBattlescriptCurrInstr[2] == B_ANIM_HAIL_CONTINUES)
+ || gBattlescriptCurrInstr[2] == B_ANIM_SUN_CONTINUES
+ || gBattlescriptCurrInstr[2] == B_ANIM_SANDSTORM_CONTINUES
+ || gBattlescriptCurrInstr[2] == B_ANIM_HAIL_CONTINUES)
{
- BtlController_EmitBattleAnimation(0, gBattlescriptCurrInstr[2], *argumentPtr);
+ BtlController_EmitBattleAnimation(BUFFER_A, gBattlescriptCurrInstr[2], *argumentPtr);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 7;
}
@@ -3997,13 +4003,14 @@ static void Cmd_playanimation(void)
}
else
{
- BtlController_EmitBattleAnimation(0, gBattlescriptCurrInstr[2], *argumentPtr);
+ BtlController_EmitBattleAnimation(BUFFER_A, gBattlescriptCurrInstr[2], *argumentPtr);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 7;
}
}
-static void Cmd_playanimation2(void) // animation Id is stored in the first pointer
+// Same as playanimation, expect it takes a pointer to some animation id, instead of taking the value directly
+static void Cmd_playanimation_var(void)
{
const u16* argumentPtr;
const u8* animationIdPtr;
@@ -4013,10 +4020,10 @@ static void Cmd_playanimation2(void) // animation Id is stored in the first poin
argumentPtr = T2_READ_PTR(gBattlescriptCurrInstr + 6);
if (*animationIdPtr == B_ANIM_STATS_CHANGE
- || *animationIdPtr == B_ANIM_SNATCH_MOVE
- || *animationIdPtr == B_ANIM_SUBSTITUTE_FADE)
+ || *animationIdPtr == B_ANIM_SNATCH_MOVE
+ || *animationIdPtr == B_ANIM_SUBSTITUTE_FADE)
{
- BtlController_EmitBattleAnimation(0, *animationIdPtr, *argumentPtr);
+ BtlController_EmitBattleAnimation(BUFFER_A, *animationIdPtr, *argumentPtr);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 10;
}
@@ -4025,11 +4032,11 @@ static void Cmd_playanimation2(void) // animation Id is stored in the first poin
gBattlescriptCurrInstr += 10;
}
else if (*animationIdPtr == B_ANIM_RAIN_CONTINUES
- || *animationIdPtr == B_ANIM_SUN_CONTINUES
- || *animationIdPtr == B_ANIM_SANDSTORM_CONTINUES
- || *animationIdPtr == B_ANIM_HAIL_CONTINUES)
+ || *animationIdPtr == B_ANIM_SUN_CONTINUES
+ || *animationIdPtr == B_ANIM_SANDSTORM_CONTINUES
+ || *animationIdPtr == B_ANIM_HAIL_CONTINUES)
{
- BtlController_EmitBattleAnimation(0, *animationIdPtr, *argumentPtr);
+ BtlController_EmitBattleAnimation(BUFFER_A, *animationIdPtr, *argumentPtr);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 10;
}
@@ -4039,7 +4046,7 @@ static void Cmd_playanimation2(void) // animation Id is stored in the first poin
}
else
{
- BtlController_EmitBattleAnimation(0, *animationIdPtr, *argumentPtr);
+ BtlController_EmitBattleAnimation(BUFFER_A, *animationIdPtr, *argumentPtr);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 10;
}
@@ -4155,7 +4162,7 @@ static void Cmd_playstatchangeanimation(void)
}
else if (changeableStatsCount != 0 && !gBattleScripting.statAnimPlayed)
{
- BtlController_EmitBattleAnimation(0, B_ANIM_STATS_CHANGE, statAnimId);
+ BtlController_EmitBattleAnimation(BUFFER_A, B_ANIM_STATS_CHANGE, statAnimId);
MarkBattlerForControllerExec(gActiveBattler);
if (gBattlescriptCurrInstr[3] & STAT_CHANGE_MULTIPLE_STATS && changeableStatsCount > 1)
gBattleScripting.statAnimPlayed = TRUE;
@@ -4174,7 +4181,7 @@ static void Cmd_moveend(void)
u8 moveType = 0;
u8 holdEffectAtk = 0;
u16 *choicedMoveAtk = NULL;
- u8 arg1, arg2;
+ u8 endMode, endState;
u16 originallyUsedMove;
if (gChosenMove == 0xFFFF)
@@ -4182,8 +4189,8 @@ static void Cmd_moveend(void)
else
originallyUsedMove = gChosenMove;
- arg1 = gBattlescriptCurrInstr[1];
- arg2 = gBattlescriptCurrInstr[2];
+ endMode = gBattlescriptCurrInstr[1];
+ endState = gBattlescriptCurrInstr[2];
if (gBattleMons[gBattlerAttacker].item == ITEM_ENIGMA_BERRY)
holdEffectAtk = gEnigmaBerries[gBattlerAttacker].holdEffect;
@@ -4219,7 +4226,7 @@ static void Cmd_moveend(void)
{
gBattleMons[gBattlerTarget].status1 &= ~STATUS1_FREEZE;
gActiveBattler = gBattlerTarget;
- BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gBattlerTarget].status1);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gBattlerTarget].status1), &gBattleMons[gBattlerTarget].status1);
MarkBattlerForControllerExec(gActiveBattler);
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_DefrostedViaFireMove;
@@ -4298,7 +4305,7 @@ static void Cmd_moveend(void)
&& gHitMarker & HITMARKER_NO_ANIMATIONS)
{
gActiveBattler = gBattlerAttacker;
- BtlController_EmitSpriteInvisibility(0, TRUE);
+ BtlController_EmitSpriteInvisibility(BUFFER_A, TRUE);
MarkBattlerForControllerExec(gActiveBattler);
gBattleScripting.moveendState++;
return;
@@ -4311,7 +4318,7 @@ static void Cmd_moveend(void)
|| WasUnableToUseMove(gBattlerAttacker))
{
gActiveBattler = gBattlerAttacker;
- BtlController_EmitSpriteInvisibility(0, FALSE);
+ BtlController_EmitSpriteInvisibility(BUFFER_A, FALSE);
MarkBattlerForControllerExec(gActiveBattler);
gStatuses3[gBattlerAttacker] &= ~STATUS3_SEMI_INVULNERABLE;
gSpecialStatuses[gBattlerAttacker].restoredBattlerSprite = 1;
@@ -4325,7 +4332,7 @@ static void Cmd_moveend(void)
&& !(gStatuses3[gBattlerTarget] & STATUS3_SEMI_INVULNERABLE))
{
gActiveBattler = gBattlerTarget;
- BtlController_EmitSpriteInvisibility(0, FALSE);
+ BtlController_EmitSpriteInvisibility(BUFFER_A, FALSE);
MarkBattlerForControllerExec(gActiveBattler);
gStatuses3[gBattlerTarget] &= ~STATUS3_SEMI_INVULNERABLE;
gBattleScripting.moveendState++;
@@ -4354,7 +4361,7 @@ static void Cmd_moveend(void)
gLastPrintedMoves[gBattlerAttacker] = gChosenMove;
}
if (!(gAbsentBattlerFlags & gBitTable[gBattlerAttacker])
- && !(gBattleStruct->field_91 & gBitTable[gBattlerAttacker])
+ && !(gBattleStruct->absentBattlerFlags & gBitTable[gBattlerAttacker])
&& gBattleMoves[originallyUsedMove].effect != EFFECT_BATON_PASS)
{
if (gHitMarker & HITMARKER_OBEYS)
@@ -4391,7 +4398,7 @@ static void Cmd_moveend(void)
gBattleScripting.moveendState++;
break;
case MOVEEND_MIRROR_MOVE: // mirror move
- if (!(gAbsentBattlerFlags & gBitTable[gBattlerAttacker]) && !(gBattleStruct->field_91 & gBitTable[gBattlerAttacker])
+ if (!(gAbsentBattlerFlags & gBitTable[gBattlerAttacker]) && !(gBattleStruct->absentBattlerFlags & gBitTable[gBattlerAttacker])
&& gBattleMoves[originallyUsedMove].flags & FLAG_MIRROR_MOVE_AFFECTED && gHitMarker & HITMARKER_OBEYS
&& gBattlerAttacker != gBattlerTarget && !(gHitMarker & HITMARKER_FAINTED(gBattlerTarget))
&& !(gMoveResultFlags & MOVE_RESULT_NO_EFFECT))
@@ -4438,9 +4445,9 @@ static void Cmd_moveend(void)
break;
}
- if (arg1 == 1 && effect == FALSE)
+ if (endMode == 1 && effect == FALSE)
gBattleScripting.moveendState = MOVEEND_COUNT;
- if (arg1 == 2 && arg2 == gBattleScripting.moveendState)
+ if (endMode == 2 && endState == gBattleScripting.moveendState)
gBattleScripting.moveendState = MOVEEND_COUNT;
} while (gBattleScripting.moveendState != MOVEEND_COUNT && effect == FALSE);
@@ -4549,7 +4556,7 @@ static void Cmd_returnatktoball(void)
gActiveBattler = gBattlerAttacker;
if (!(gHitMarker & HITMARKER_FAINTED(gActiveBattler)))
{
- BtlController_EmitReturnMonToBall(0, 0);
+ BtlController_EmitReturnMonToBall(BUFFER_A, FALSE);
MarkBattlerForControllerExec(gActiveBattler);
}
gBattlescriptCurrInstr++;
@@ -4564,7 +4571,7 @@ static void Cmd_getswitchedmondata(void)
gBattlerPartyIndexes[gActiveBattler] = *(gBattleStruct->monToSwitchIntoId + gActiveBattler);
- BtlController_EmitGetMonData(0, REQUEST_ALL_BATTLE, gBitTable[gBattlerPartyIndexes[gActiveBattler]]);
+ BtlController_EmitGetMonData(BUFFER_A, REQUEST_ALL_BATTLE, gBitTable[gBattlerPartyIndexes[gActiveBattler]]);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 2;
@@ -4584,9 +4591,7 @@ static void Cmd_switchindataupdate(void)
monData = (u8*)(&gBattleMons[gActiveBattler]);
for (i = 0; i < sizeof(struct BattlePokemon); i++)
- {
monData[i] = gBattleBufferB[gActiveBattler][4 + i];
- }
gBattleMons[gActiveBattler].type1 = gBaseStats[gBattleMons[gActiveBattler].species].type1;
gBattleMons[gActiveBattler].type2 = gBaseStats[gBattleMons[gActiveBattler].species].type2;
@@ -4642,7 +4647,7 @@ static void Cmd_switchinanim(void)
gAbsentBattlerFlags &= ~(gBitTable[gActiveBattler]);
- BtlController_EmitSwitchInAnim(0, gBattlerPartyIndexes[gActiveBattler], gBattlescriptCurrInstr[2]);
+ BtlController_EmitSwitchInAnim(BUFFER_A, gBattlerPartyIndexes[gActiveBattler], gBattlescriptCurrInstr[2]);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 3;
@@ -4674,9 +4679,9 @@ static void Cmd_jumpifcantswitch(void)
lastMonId = 0;
if (gActiveBattler & 2)
- lastMonId = 3;
+ lastMonId = MULTI_PARTY_SIZE;
- for (i = lastMonId; i < lastMonId + 3; i++)
+ for (i = lastMonId; i < lastMonId + MULTI_PARTY_SIZE; i++)
{
if (GetMonData(&party[i], MON_DATA_SPECIES) != SPECIES_NONE
&& !GetMonData(&party[i], MON_DATA_IS_EGG)
@@ -4685,7 +4690,7 @@ static void Cmd_jumpifcantswitch(void)
break;
}
- if (i == lastMonId + 3)
+ if (i == lastMonId + MULTI_PARTY_SIZE)
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 2);
else
gBattlescriptCurrInstr += 6;
@@ -4700,7 +4705,7 @@ static void Cmd_jumpifcantswitch(void)
lastMonId = 0;
if (GetLinkTrainerFlankId(GetBattlerMultiplayerId(gActiveBattler)) == TRUE)
- lastMonId = 3;
+ lastMonId = MULTI_PARTY_SIZE;
}
else
{
@@ -4709,7 +4714,7 @@ static void Cmd_jumpifcantswitch(void)
if (gActiveBattler == 1)
lastMonId = 0;
else
- lastMonId = 3;
+ lastMonId = MULTI_PARTY_SIZE;
}
}
else
@@ -4721,10 +4726,10 @@ static void Cmd_jumpifcantswitch(void)
lastMonId = 0;
if (GetLinkTrainerFlankId(GetBattlerMultiplayerId(gActiveBattler)) == TRUE)
- lastMonId = 3;
+ lastMonId = MULTI_PARTY_SIZE;
}
- for (i = lastMonId; i < lastMonId + 3; i++)
+ for (i = lastMonId; i < lastMonId + MULTI_PARTY_SIZE; i++)
{
if (GetMonData(&party[i], MON_DATA_SPECIES) != SPECIES_NONE
&& !GetMonData(&party[i], MON_DATA_IS_EGG)
@@ -4733,7 +4738,7 @@ static void Cmd_jumpifcantswitch(void)
break;
}
- if (i == lastMonId + 3)
+ if (i == lastMonId + MULTI_PARTY_SIZE)
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 2);
else
gBattlescriptCurrInstr += 6;
@@ -4744,9 +4749,9 @@ static void Cmd_jumpifcantswitch(void)
lastMonId = 0;
if (gActiveBattler == B_POSITION_OPPONENT_RIGHT)
- lastMonId = 3;
+ lastMonId = PARTY_SIZE / 2;
- for (i = lastMonId; i < lastMonId + 3; i++)
+ for (i = lastMonId; i < lastMonId + (PARTY_SIZE / 2); i++)
{
if (GetMonData(&party[i], MON_DATA_SPECIES) != SPECIES_NONE
&& !GetMonData(&party[i], MON_DATA_IS_EGG)
@@ -4755,7 +4760,7 @@ static void Cmd_jumpifcantswitch(void)
break;
}
- if (i == lastMonId + 3)
+ if (i == lastMonId + (PARTY_SIZE / 2))
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 2);
else
gBattlescriptCurrInstr += 6;
@@ -4803,15 +4808,16 @@ static void Cmd_jumpifcantswitch(void)
}
}
-// Opens the party screen to choose a new Pokémon to send out
-// slotId is the Pokémon to replace
+// Opens the party screen to choose a new Pokémon to send out.
+// slotId is the Pokémon to replace.
+// Note that this is not used by the Switch action, only replacing fainted Pokémon or Baton Pass
static void ChooseMonToSendOut(u8 slotId)
{
- *(gBattleStruct->field_58 + gActiveBattler) = gBattlerPartyIndexes[gActiveBattler];
+ *(gBattleStruct->battlerPartyIndexes + gActiveBattler) = gBattlerPartyIndexes[gActiveBattler];
*(gBattleStruct->monToSwitchIntoId + gActiveBattler) = PARTY_SIZE;
gBattleStruct->field_93 &= ~(gBitTable[gActiveBattler]);
- BtlController_EmitChoosePokemon(0, PARTY_ACTION_SEND_OUT, slotId, ABILITY_NONE, gBattleStruct->field_60[gActiveBattler]);
+ BtlController_EmitChoosePokemon(BUFFER_A, PARTY_ACTION_SEND_OUT, slotId, ABILITY_NONE, gBattleStruct->battlerPartyOrders[gActiveBattler]);
MarkBattlerForControllerExec(gActiveBattler);
}
@@ -4826,9 +4832,9 @@ static void Cmd_openpartyscreen(void)
flags = 0;
jumpPtr = T1_READ_PTR(gBattlescriptCurrInstr + 2);
- if (gBattlescriptCurrInstr[1] == BS_UNK_5)
+ if (gBattlescriptCurrInstr[1] == BS_FAINTED_LINK_MULTIPLE_1)
{
- if ((gBattleTypeFlags & (BATTLE_TYPE_DOUBLE | BATTLE_TYPE_MULTI)) != BATTLE_TYPE_DOUBLE)
+ if ((gBattleTypeFlags & BATTLE_TYPE_MULTI) || !(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
{
for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++)
{
@@ -4838,46 +4844,46 @@ static void Cmd_openpartyscreen(void)
{
gAbsentBattlerFlags |= gBitTable[gActiveBattler];
gHitMarker &= ~HITMARKER_FAINTED(gActiveBattler);
- BtlController_EmitLinkStandbyMsg(0, 2, FALSE);
+ BtlController_EmitLinkStandbyMsg(BUFFER_A, LINK_STANDBY_MSG_ONLY, FALSE);
MarkBattlerForControllerExec(gActiveBattler);
}
- else if (!gSpecialStatuses[gActiveBattler].flag40)
+ else if (!gSpecialStatuses[gActiveBattler].faintedHasReplacement)
{
ChooseMonToSendOut(PARTY_SIZE);
- gSpecialStatuses[gActiveBattler].flag40 = 1;
+ gSpecialStatuses[gActiveBattler].faintedHasReplacement = TRUE;
}
}
else
{
- BtlController_EmitLinkStandbyMsg(0, 2, FALSE);
+ BtlController_EmitLinkStandbyMsg(BUFFER_A, LINK_STANDBY_MSG_ONLY, FALSE);
MarkBattlerForControllerExec(gActiveBattler);
}
}
}
else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
- u8 flag40_0, flag40_1, flag40_2, flag40_3;
+ bool8 hasReplacement_0, hasReplacement_1, hasReplacement_2, hasReplacement_3;
hitmarkerFaintBits = gHitMarker >> 28;
if (gBitTable[0] & hitmarkerFaintBits)
{
gActiveBattler = 0;
- if (HasNoMonsToSwitch(0, PARTY_SIZE, PARTY_SIZE))
+ if (HasNoMonsToSwitch(gActiveBattler, PARTY_SIZE, PARTY_SIZE))
{
gAbsentBattlerFlags |= gBitTable[gActiveBattler];
gHitMarker &= ~HITMARKER_FAINTED(gActiveBattler);
- BtlController_EmitCantSwitch(0);
+ BtlController_EmitCantSwitch(BUFFER_A);
MarkBattlerForControllerExec(gActiveBattler);
}
- else if (!gSpecialStatuses[gActiveBattler].flag40)
+ else if (!gSpecialStatuses[gActiveBattler].faintedHasReplacement)
{
ChooseMonToSendOut(gBattleStruct->monToSwitchIntoId[2]);
- gSpecialStatuses[gActiveBattler].flag40 = 1;
+ gSpecialStatuses[gActiveBattler].faintedHasReplacement = TRUE;
}
else
{
- BtlController_EmitLinkStandbyMsg(0, 2, FALSE);
+ BtlController_EmitLinkStandbyMsg(BUFFER_A, LINK_STANDBY_MSG_ONLY, FALSE);
MarkBattlerForControllerExec(gActiveBattler);
flags |= 1;
}
@@ -4885,42 +4891,42 @@ static void Cmd_openpartyscreen(void)
if (gBitTable[2] & hitmarkerFaintBits && !(gBitTable[0] & hitmarkerFaintBits))
{
gActiveBattler = 2;
- if (HasNoMonsToSwitch(2, PARTY_SIZE, PARTY_SIZE))
+ if (HasNoMonsToSwitch(gActiveBattler, PARTY_SIZE, PARTY_SIZE))
{
gAbsentBattlerFlags |= gBitTable[gActiveBattler];
gHitMarker &= ~HITMARKER_FAINTED(gActiveBattler);
- BtlController_EmitCantSwitch(0);
+ BtlController_EmitCantSwitch(BUFFER_A);
MarkBattlerForControllerExec(gActiveBattler);
}
- else if (!gSpecialStatuses[gActiveBattler].flag40)
+ else if (!gSpecialStatuses[gActiveBattler].faintedHasReplacement)
{
ChooseMonToSendOut(gBattleStruct->monToSwitchIntoId[0]);
- gSpecialStatuses[gActiveBattler].flag40 = 1;
+ gSpecialStatuses[gActiveBattler].faintedHasReplacement = TRUE;
}
else if (!(flags & 1))
{
- BtlController_EmitLinkStandbyMsg(0, 2, FALSE);
+ BtlController_EmitLinkStandbyMsg(BUFFER_A, LINK_STANDBY_MSG_ONLY, FALSE);
MarkBattlerForControllerExec(gActiveBattler);
}
}
if (gBitTable[1] & hitmarkerFaintBits)
{
gActiveBattler = 1;
- if (HasNoMonsToSwitch(1, PARTY_SIZE, PARTY_SIZE))
+ if (HasNoMonsToSwitch(gActiveBattler, PARTY_SIZE, PARTY_SIZE))
{
gAbsentBattlerFlags |= gBitTable[gActiveBattler];
gHitMarker &= ~HITMARKER_FAINTED(gActiveBattler);
- BtlController_EmitCantSwitch(0);
+ BtlController_EmitCantSwitch(BUFFER_A);
MarkBattlerForControllerExec(gActiveBattler);
}
- else if (!gSpecialStatuses[gActiveBattler].flag40)
+ else if (!gSpecialStatuses[gActiveBattler].faintedHasReplacement)
{
ChooseMonToSendOut(gBattleStruct->monToSwitchIntoId[3]);
- gSpecialStatuses[gActiveBattler].flag40 = 1;
+ gSpecialStatuses[gActiveBattler].faintedHasReplacement = TRUE;
}
else
{
- BtlController_EmitLinkStandbyMsg(0, 2, FALSE);
+ BtlController_EmitLinkStandbyMsg(BUFFER_A, LINK_STANDBY_MSG_ONLY, FALSE);
MarkBattlerForControllerExec(gActiveBattler);
flags |= 2;
}
@@ -4928,60 +4934,60 @@ static void Cmd_openpartyscreen(void)
if (gBitTable[3] & hitmarkerFaintBits && !(gBitTable[1] & hitmarkerFaintBits))
{
gActiveBattler = 3;
- if (HasNoMonsToSwitch(3, PARTY_SIZE, PARTY_SIZE))
+ if (HasNoMonsToSwitch(gActiveBattler, PARTY_SIZE, PARTY_SIZE))
{
gAbsentBattlerFlags |= gBitTable[gActiveBattler];
gHitMarker &= ~HITMARKER_FAINTED(gActiveBattler);
- BtlController_EmitCantSwitch(0);
+ BtlController_EmitCantSwitch(BUFFER_A);
MarkBattlerForControllerExec(gActiveBattler);
}
- else if (!gSpecialStatuses[gActiveBattler].flag40)
+ else if (!gSpecialStatuses[gActiveBattler].faintedHasReplacement)
{
ChooseMonToSendOut(gBattleStruct->monToSwitchIntoId[1]);
- gSpecialStatuses[gActiveBattler].flag40 = 1;
+ gSpecialStatuses[gActiveBattler].faintedHasReplacement = TRUE;
}
else if (!(flags & 2))
{
- BtlController_EmitLinkStandbyMsg(0, 2, FALSE);
+ BtlController_EmitLinkStandbyMsg(BUFFER_A, LINK_STANDBY_MSG_ONLY, FALSE);
MarkBattlerForControllerExec(gActiveBattler);
}
}
- flag40_0 = gSpecialStatuses[0].flag40;
- if (!flag40_0)
+ hasReplacement_0 = gSpecialStatuses[0].faintedHasReplacement;
+ if (!hasReplacement_0)
{
- flag40_2 = gSpecialStatuses[2].flag40;
- if (!flag40_2 && hitmarkerFaintBits != 0)
+ hasReplacement_2 = gSpecialStatuses[2].faintedHasReplacement;
+ if (!hasReplacement_2 && hitmarkerFaintBits != 0)
{
if (gAbsentBattlerFlags & gBitTable[0])
gActiveBattler = 2;
else
gActiveBattler = 0;
- BtlController_EmitLinkStandbyMsg(0, 2, FALSE);
+ BtlController_EmitLinkStandbyMsg(BUFFER_A, LINK_STANDBY_MSG_ONLY, FALSE);
MarkBattlerForControllerExec(gActiveBattler);
}
}
- flag40_1 = gSpecialStatuses[1].flag40;
- if (!flag40_1)
+ hasReplacement_1 = gSpecialStatuses[1].faintedHasReplacement;
+ if (!hasReplacement_1)
{
- flag40_3 = gSpecialStatuses[3].flag40;
- if (!flag40_3 && hitmarkerFaintBits != 0)
+ hasReplacement_3 = gSpecialStatuses[3].faintedHasReplacement;
+ if (!hasReplacement_3 && hitmarkerFaintBits != 0)
{
if (gAbsentBattlerFlags & gBitTable[1])
gActiveBattler = 3;
else
gActiveBattler = 1;
- BtlController_EmitLinkStandbyMsg(0, 2, FALSE);
+ BtlController_EmitLinkStandbyMsg(BUFFER_A, LINK_STANDBY_MSG_ONLY, FALSE);
MarkBattlerForControllerExec(gActiveBattler);
}
}
}
gBattlescriptCurrInstr += 6;
}
- else if (gBattlescriptCurrInstr[1] == BS_UNK_6)
+ else if (gBattlescriptCurrInstr[1] == BS_FAINTED_LINK_MULTIPLE_2)
{
if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
@@ -4991,44 +4997,46 @@ static void Cmd_openpartyscreen(void)
if (gBitTable[2] & hitmarkerFaintBits && gBitTable[0] & hitmarkerFaintBits)
{
gActiveBattler = 2;
- if (HasNoMonsToSwitch(2, gBattleBufferB[0][1], PARTY_SIZE))
+ if (HasNoMonsToSwitch(gActiveBattler, gBattleBufferB[0][1], PARTY_SIZE))
{
gAbsentBattlerFlags |= gBitTable[gActiveBattler];
gHitMarker &= ~HITMARKER_FAINTED(gActiveBattler);
- BtlController_EmitCantSwitch(0);
+ BtlController_EmitCantSwitch(BUFFER_A);
MarkBattlerForControllerExec(gActiveBattler);
}
- else if (!gSpecialStatuses[gActiveBattler].flag40)
+ else if (!gSpecialStatuses[gActiveBattler].faintedHasReplacement)
{
ChooseMonToSendOut(gBattleStruct->monToSwitchIntoId[0]);
- gSpecialStatuses[gActiveBattler].flag40 = 1;
+ gSpecialStatuses[gActiveBattler].faintedHasReplacement = TRUE;
}
}
if (gBitTable[3] & hitmarkerFaintBits && hitmarkerFaintBits & gBitTable[1])
{
gActiveBattler = 3;
- if (HasNoMonsToSwitch(3, gBattleBufferB[1][1], PARTY_SIZE))
+ if (HasNoMonsToSwitch(gActiveBattler, gBattleBufferB[1][1], PARTY_SIZE))
{
gAbsentBattlerFlags |= gBitTable[gActiveBattler];
gHitMarker &= ~HITMARKER_FAINTED(gActiveBattler);
- BtlController_EmitCantSwitch(0);
+ BtlController_EmitCantSwitch(BUFFER_A);
MarkBattlerForControllerExec(gActiveBattler);
}
- else if (!gSpecialStatuses[gActiveBattler].flag40)
+ else if (!gSpecialStatuses[gActiveBattler].faintedHasReplacement)
{
ChooseMonToSendOut(gBattleStruct->monToSwitchIntoId[1]);
- gSpecialStatuses[gActiveBattler].flag40 = 1;
+ gSpecialStatuses[gActiveBattler].faintedHasReplacement = TRUE;
}
}
gBattlescriptCurrInstr += 6;
}
else
{
+ // Not multi or double battle
gBattlescriptCurrInstr += 6;
}
}
else
{
+ // Multi battle
gBattlescriptCurrInstr += 6;
}
@@ -5050,7 +5058,7 @@ static void Cmd_openpartyscreen(void)
hitmarkerFaintBits = PARTY_ACTION_SEND_OUT;
battlerId = GetBattlerForBattleScript(gBattlescriptCurrInstr[1] & ~PARTY_SCREEN_OPTIONAL);
- if (gSpecialStatuses[battlerId].flag40)
+ if (gSpecialStatuses[battlerId].faintedHasReplacement)
{
gBattlescriptCurrInstr += 6;
}
@@ -5064,16 +5072,16 @@ static void Cmd_openpartyscreen(void)
else
{
gActiveBattler = battlerId;
- *(gBattleStruct->field_58 + gActiveBattler) = gBattlerPartyIndexes[gActiveBattler];
- *(gBattleStruct->monToSwitchIntoId + gActiveBattler) = 6;
+ *(gBattleStruct->battlerPartyIndexes + gActiveBattler) = gBattlerPartyIndexes[gActiveBattler];
+ *(gBattleStruct->monToSwitchIntoId + gActiveBattler) = PARTY_SIZE;
gBattleStruct->field_93 &= ~(gBitTable[gActiveBattler]);
- BtlController_EmitChoosePokemon(0, hitmarkerFaintBits, *(gBattleStruct->monToSwitchIntoId + (gActiveBattler ^ 2)), ABILITY_NONE, gBattleStruct->field_60[gActiveBattler]);
+ BtlController_EmitChoosePokemon(BUFFER_A, hitmarkerFaintBits, *(gBattleStruct->monToSwitchIntoId + (gActiveBattler ^ 2)), ABILITY_NONE, gBattleStruct->battlerPartyOrders[gActiveBattler]);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 6;
- if (GetBattlerPosition(gActiveBattler) == 0 && gBattleResults.playerSwitchesCounter < 0xFF)
+ if (GetBattlerPosition(gActiveBattler) == B_POSITION_PLAYER_LEFT && gBattleResults.playerSwitchesCounter < 255)
gBattleResults.playerSwitchesCounter++;
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
@@ -5082,7 +5090,7 @@ static void Cmd_openpartyscreen(void)
{
if (gActiveBattler != battlerId)
{
- BtlController_EmitLinkStandbyMsg(0, 2, FALSE);
+ BtlController_EmitLinkStandbyMsg(BUFFER_A, LINK_STANDBY_MSG_ONLY, FALSE);
MarkBattlerForControllerExec(gActiveBattler);
}
}
@@ -5093,7 +5101,7 @@ static void Cmd_openpartyscreen(void)
if (gAbsentBattlerFlags & gBitTable[gActiveBattler])
gActiveBattler ^= BIT_FLANK;
- BtlController_EmitLinkStandbyMsg(0, 2, FALSE);
+ BtlController_EmitLinkStandbyMsg(BUFFER_A, LINK_STANDBY_MSG_ONLY, FALSE);
MarkBattlerForControllerExec(gActiveBattler);
}
}
@@ -5113,7 +5121,7 @@ static void Cmd_switchhandleorder(void)
case 0:
for (i = 0; i < gBattlersCount; i++)
{
- if (gBattleBufferB[i][0] == 0x22)
+ if (gBattleBufferB[i][0] == CONTROLLER_CHOSENMONRETURNVALUE)
{
*(gBattleStruct->monToSwitchIntoId + i) = gBattleBufferB[i][1];
if (!(gBattleStruct->field_93 & gBitTable[i]))
@@ -5141,13 +5149,13 @@ static void Cmd_switchhandleorder(void)
if (gBattleTypeFlags & BATTLE_TYPE_LINK && gBattleTypeFlags & BATTLE_TYPE_MULTI)
{
- *(gActiveBattler * 3 + (u8*)(gBattleStruct->field_60) + 0) &= 0xF;
- *(gActiveBattler * 3 + (u8*)(gBattleStruct->field_60) + 0) |= (gBattleBufferB[gActiveBattler][2] & 0xF0);
- *(gActiveBattler * 3 + (u8*)(gBattleStruct->field_60) + 1) = gBattleBufferB[gActiveBattler][3];
+ *(gActiveBattler * 3 + (u8*)(gBattleStruct->battlerPartyOrders) + 0) &= 0xF;
+ *(gActiveBattler * 3 + (u8*)(gBattleStruct->battlerPartyOrders) + 0) |= (gBattleBufferB[gActiveBattler][2] & 0xF0);
+ *(gActiveBattler * 3 + (u8*)(gBattleStruct->battlerPartyOrders) + 1) = gBattleBufferB[gActiveBattler][3];
- *((gActiveBattler ^ BIT_FLANK) * 3 + (u8*)(gBattleStruct->field_60) + 0) &= (0xF0);
- *((gActiveBattler ^ BIT_FLANK) * 3 + (u8*)(gBattleStruct->field_60) + 0) |= (gBattleBufferB[gActiveBattler][2] & 0xF0) >> 4;
- *((gActiveBattler ^ BIT_FLANK) * 3 + (u8*)(gBattleStruct->field_60) + 2) = gBattleBufferB[gActiveBattler][3];
+ *((gActiveBattler ^ BIT_FLANK) * 3 + (u8*)(gBattleStruct->battlerPartyOrders) + 0) &= (0xF0);
+ *((gActiveBattler ^ BIT_FLANK) * 3 + (u8*)(gBattleStruct->battlerPartyOrders) + 0) |= (gBattleBufferB[gActiveBattler][2] & 0xF0) >> 4;
+ *((gActiveBattler ^ BIT_FLANK) * 3 + (u8*)(gBattleStruct->battlerPartyOrders) + 2) = gBattleBufferB[gActiveBattler][3];
}
else if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
{
@@ -5175,7 +5183,7 @@ static void Cmd_switchineffects(void)
UpdateSentPokesToOpponentValue(gActiveBattler);
gHitMarker &= ~HITMARKER_FAINTED(gActiveBattler);
- gSpecialStatuses[gActiveBattler].flag40 = 0;
+ gSpecialStatuses[gActiveBattler].faintedHasReplacement = FALSE;
if (!(gSideStatuses[GetBattlerSide(gActiveBattler)] & SIDE_STATUS_SPIKES_DAMAGED)
&& (gSideStatuses[GetBattlerSide(gActiveBattler)] & SIDE_STATUS_SPIKES)
@@ -5230,7 +5238,7 @@ static void Cmd_switchineffects(void)
*hpOnSwitchout = gBattleMons[i].hp;
}
- if (gBattlescriptCurrInstr[1] == 5)
+ if (gBattlescriptCurrInstr[1] == BS_FAINTED_LINK_MULTIPLE_1)
{
u32 hitmarkerFaintBits = gHitMarker >> 28;
@@ -5252,7 +5260,7 @@ static void Cmd_switchineffects(void)
static void Cmd_trainerslidein(void)
{
gActiveBattler = GetBattlerAtPosition(gBattlescriptCurrInstr[1]);
- BtlController_EmitTrainerSlide(0);
+ BtlController_EmitTrainerSlide(BUFFER_A);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 2;
@@ -5261,7 +5269,7 @@ static void Cmd_trainerslidein(void)
static void Cmd_playse(void)
{
gActiveBattler = gBattlerAttacker;
- BtlController_EmitPlaySE(0, T2_READ_16(gBattlescriptCurrInstr + 1));
+ BtlController_EmitPlaySE(BUFFER_A, T2_READ_16(gBattlescriptCurrInstr + 1));
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 3;
@@ -5270,7 +5278,7 @@ static void Cmd_playse(void)
static void Cmd_fanfare(void)
{
gActiveBattler = gBattlerAttacker;
- BtlController_EmitPlayFanfareOrBGM(0, T2_READ_16(gBattlescriptCurrInstr + 1), FALSE);
+ BtlController_EmitPlayFanfareOrBGM(BUFFER_A, T2_READ_16(gBattlescriptCurrInstr + 1), FALSE);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 3;
@@ -5279,7 +5287,7 @@ static void Cmd_fanfare(void)
static void Cmd_playfaintcry(void)
{
gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
- BtlController_EmitFaintingCry(0);
+ BtlController_EmitFaintingCry(BUFFER_A);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 2;
@@ -5288,7 +5296,7 @@ static void Cmd_playfaintcry(void)
static void Cmd_endlinkbattle(void)
{
gActiveBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
- BtlController_EmitEndLinkBattle(0, gBattleOutcome);
+ BtlController_EmitEndLinkBattle(BUFFER_A, gBattleOutcome);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 1;
@@ -5297,7 +5305,7 @@ static void Cmd_endlinkbattle(void)
static void Cmd_returntoball(void)
{
gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
- BtlController_EmitReturnMonToBall(0, 1);
+ BtlController_EmitReturnMonToBall(BUFFER_A, TRUE);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 2;
@@ -5305,16 +5313,16 @@ static void Cmd_returntoball(void)
static void Cmd_handlelearnnewmove(void)
{
- const u8 *jumpPtr1 = T1_READ_PTR(gBattlescriptCurrInstr + 1);
- const u8 *jumpPtr2 = T1_READ_PTR(gBattlescriptCurrInstr + 5);
+ const u8 *learnedMovePtr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
+ const u8 *nothingToLearnPtr = T1_READ_PTR(gBattlescriptCurrInstr + 5);
u16 learnMove = MonTryLearningNewMove(&gPlayerParty[gBattleStruct->expGetterMonId], gBattlescriptCurrInstr[9]);
while (learnMove == MON_ALREADY_KNOWS_MOVE)
learnMove = MonTryLearningNewMove(&gPlayerParty[gBattleStruct->expGetterMonId], FALSE);
- if (learnMove == 0)
+ if (learnMove == MOVE_NONE)
{
- gBattlescriptCurrInstr = jumpPtr2;
+ gBattlescriptCurrInstr = nothingToLearnPtr;
}
else if (learnMove == MON_HAS_MAX_MOVES)
{
@@ -5339,7 +5347,7 @@ static void Cmd_handlelearnnewmove(void)
}
}
- gBattlescriptCurrInstr = jumpPtr1;
+ gBattlescriptCurrInstr = learnedMovePtr;
}
}
@@ -5350,8 +5358,8 @@ static void Cmd_yesnoboxlearnmove(void)
switch (gBattleScripting.learnMoveState)
{
case 0:
- HandleBattleWindow(0x18, 8, 0x1D, 0xD, 0);
- BattlePutTextOnWindow(gText_BattleYesNoChoice, 0xC);
+ HandleBattleWindow(24, 8, 29, 13, 0);
+ BattlePutTextOnWindow(gText_BattleYesNoChoice, B_WIN_YESNO);
gBattleScripting.learnMoveState++;
gBattleCommunication[CURSOR_POSITION] = 0;
BattleCreateYesNoCursorAt(0);
@@ -5376,8 +5384,8 @@ static void Cmd_yesnoboxlearnmove(void)
PlaySE(SE_SELECT);
if (gBattleCommunication[1] == 0)
{
- HandleBattleWindow(0x18, 0x8, 0x1D, 0xD, WINDOW_CLEAR);
- BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK);
+ HandleBattleWindow(24, 8, 29, 13, WINDOW_CLEAR);
+ BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK);
gBattleScripting.learnMoveState++;
}
else
@@ -5430,17 +5438,14 @@ static void Cmd_yesnoboxlearnmove(void)
RemoveMonPPBonus(&gPlayerParty[gBattleStruct->expGetterMonId], movePosition);
SetMonMoveSlot(&gPlayerParty[gBattleStruct->expGetterMonId], gMoveToLearn, movePosition);
- if (gBattlerPartyIndexes[0] == gBattleStruct->expGetterMonId
- && !(gBattleMons[0].status2 & STATUS2_TRANSFORMED)
- && !(gDisableStructs[0].mimickedMoves & gBitTable[movePosition]))
+ if (gBattlerPartyIndexes[0] == gBattleStruct->expGetterMonId && MOVE_IS_PERMANENT(0, movePosition))
{
RemoveBattleMonPPBonus(&gBattleMons[0], movePosition);
SetBattleMonMoveSlot(&gBattleMons[0], gMoveToLearn, movePosition);
}
if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE
&& gBattlerPartyIndexes[2] == gBattleStruct->expGetterMonId
- && !(gBattleMons[2].status2 & STATUS2_TRANSFORMED)
- && !(gDisableStructs[2].mimickedMoves & gBitTable[movePosition]))
+ && MOVE_IS_PERMANENT(2, movePosition))
{
RemoveBattleMonPPBonus(&gBattleMons[2], movePosition);
SetBattleMonMoveSlot(&gBattleMons[2], gMoveToLearn, movePosition);
@@ -5450,7 +5455,7 @@ static void Cmd_yesnoboxlearnmove(void)
}
break;
case 5:
- HandleBattleWindow(0x18, 8, 0x1D, 0xD, WINDOW_CLEAR);
+ HandleBattleWindow(24, 8, 29, 13, WINDOW_CLEAR);
gBattlescriptCurrInstr += 5;
break;
case 6:
@@ -5467,8 +5472,8 @@ static void Cmd_yesnoboxstoplearningmove(void)
switch (gBattleScripting.learnMoveState)
{
case 0:
- HandleBattleWindow(0x18, 8, 0x1D, 0xD, 0);
- BattlePutTextOnWindow(gText_BattleYesNoChoice, 0xC);
+ HandleBattleWindow(24, 8, 29, 13, 0);
+ BattlePutTextOnWindow(gText_BattleYesNoChoice, B_WIN_YESNO);
gBattleScripting.learnMoveState++;
gBattleCommunication[CURSOR_POSITION] = 0;
BattleCreateYesNoCursorAt(0);
@@ -5497,13 +5502,13 @@ static void Cmd_yesnoboxstoplearningmove(void)
else
gBattlescriptCurrInstr += 5;
- HandleBattleWindow(0x18, 0x8, 0x1D, 0xD, WINDOW_CLEAR);
+ HandleBattleWindow(24, 8, 29, 13, WINDOW_CLEAR);
}
else if (JOY_NEW(B_BUTTON))
{
PlaySE(SE_SELECT);
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
- HandleBattleWindow(0x18, 0x8, 0x1D, 0xD, WINDOW_CLEAR);
+ HandleBattleWindow(24, 8, 29, 13, WINDOW_CLEAR);
}
break;
}
@@ -5519,7 +5524,7 @@ static void Cmd_hitanimation(void)
}
else if (!(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE) || !(gBattleMons[gActiveBattler].status2 & STATUS2_SUBSTITUTE) || gDisableStructs[gActiveBattler].substituteHP == 0)
{
- BtlController_EmitHitAnimation(0);
+ BtlController_EmitHitAnimation(BUFFER_A);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 2;
}
@@ -5598,14 +5603,15 @@ static void Cmd_getmoneyreward(void)
gBattlescriptCurrInstr++;
}
-static void Cmd_unknown_5E(void)
+// Command is never used
+static void Cmd_updatebattlermoves(void)
{
gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
switch (gBattleCommunication[0])
{
case 0:
- BtlController_EmitGetMonData(0, REQUEST_ALL_BATTLE, 0);
+ BtlController_EmitGetMonData(BUFFER_A, REQUEST_ALL_BATTLE, 0);
MarkBattlerForControllerExec(gActiveBattler);
gBattleCommunication[0]++;
break;
@@ -5678,7 +5684,7 @@ static void Cmd_drawpartystatussummary(void)
}
}
- BtlController_EmitDrawPartyStatusSummary(0, hpStatuses, 1);
+ BtlController_EmitDrawPartyStatusSummary(BUFFER_A, hpStatuses, 1);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 2;
@@ -5687,7 +5693,7 @@ static void Cmd_drawpartystatussummary(void)
static void Cmd_hidepartystatussummary(void)
{
gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
- BtlController_EmitHidePartyStatusSummary(0);
+ BtlController_EmitHidePartyStatusSummary(BUFFER_A);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 2;
@@ -5712,7 +5718,7 @@ static void Cmd_statusanimation(void)
&& gDisableStructs[gActiveBattler].substituteHP == 0
&& !(gHitMarker & HITMARKER_NO_ANIMATIONS))
{
- BtlController_EmitStatusAnimation(0, FALSE, gBattleMons[gActiveBattler].status1);
+ BtlController_EmitStatusAnimation(BUFFER_A, FALSE, gBattleMons[gActiveBattler].status1);
MarkBattlerForControllerExec(gActiveBattler);
}
gBattlescriptCurrInstr += 2;
@@ -5731,7 +5737,7 @@ static void Cmd_status2animation(void)
&& gDisableStructs[gActiveBattler].substituteHP == 0
&& !(gHitMarker & HITMARKER_NO_ANIMATIONS))
{
- BtlController_EmitStatusAnimation(0, TRUE, gBattleMons[gActiveBattler].status2 & wantedToAnimate);
+ BtlController_EmitStatusAnimation(BUFFER_A, TRUE, gBattleMons[gActiveBattler].status2 & wantedToAnimate);
MarkBattlerForControllerExec(gActiveBattler);
}
gBattlescriptCurrInstr += 6;
@@ -5750,7 +5756,7 @@ static void Cmd_chosenstatusanimation(void)
&& gDisableStructs[gActiveBattler].substituteHP == 0
&& !(gHitMarker & HITMARKER_NO_ANIMATIONS))
{
- BtlController_EmitStatusAnimation(0, gBattlescriptCurrInstr[2], wantedStatus);
+ BtlController_EmitStatusAnimation(BUFFER_A, gBattlescriptCurrInstr[2], wantedStatus);
MarkBattlerForControllerExec(gActiveBattler);
}
gBattlescriptCurrInstr += 7;
@@ -5762,8 +5768,8 @@ static void Cmd_yesnobox(void)
switch (gBattleCommunication[0])
{
case 0:
- HandleBattleWindow(0x18, 8, 0x1D, 0xD, 0);
- BattlePutTextOnWindow(gText_BattleYesNoChoice, 0xC);
+ HandleBattleWindow(24, 8, 29, 13, 0);
+ BattlePutTextOnWindow(gText_BattleYesNoChoice, B_WIN_YESNO);
gBattleCommunication[0]++;
gBattleCommunication[CURSOR_POSITION] = 0;
BattleCreateYesNoCursorAt(0);
@@ -5787,13 +5793,13 @@ static void Cmd_yesnobox(void)
{
gBattleCommunication[CURSOR_POSITION] = 1;
PlaySE(SE_SELECT);
- HandleBattleWindow(0x18, 8, 0x1D, 0xD, WINDOW_CLEAR);
+ HandleBattleWindow(24, 8, 29, 13, WINDOW_CLEAR);
gBattlescriptCurrInstr++;
}
else if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
- HandleBattleWindow(0x18, 8, 0x1D, 0xD, WINDOW_CLEAR);
+ HandleBattleWindow(24, 8, 29, 13, WINDOW_CLEAR);
gBattlescriptCurrInstr++;
}
break;
@@ -5860,7 +5866,7 @@ static void Cmd_removeitem(void)
*usedHeldItem = gBattleMons[gActiveBattler].item;
gBattleMons[gActiveBattler].item = 0;
- BtlController_EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gActiveBattler].item);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[gActiveBattler].item), &gBattleMons[gActiveBattler].item);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 2;
@@ -5877,6 +5883,9 @@ static void Cmd_drawlvlupbox(void)
{
if (gBattleScripting.drawlvlupboxState == 0)
{
+ // If the Pokémon getting exp is not in-battle then
+ // slide out a banner with their name and icon on it.
+ // Otherwise skip ahead.
if (IsMonGettingExpSentOut())
gBattleScripting.drawlvlupboxState = 3;
else
@@ -5886,34 +5895,38 @@ static void Cmd_drawlvlupbox(void)
switch (gBattleScripting.drawlvlupboxState)
{
case 1:
- gBattle_BG2_Y = 0x60;
+ // Start level up banner
+ gBattle_BG2_Y = 96;
SetBgAttribute(2, BG_ATTR_PRIORITY, 0);
ShowBg(2);
- sub_804F17C();
+ InitLevelUpBanner();
gBattleScripting.drawlvlupboxState = 2;
break;
case 2:
- if (!sub_804F1CC())
+ if (!SlideInLevelUpBanner())
gBattleScripting.drawlvlupboxState = 3;
break;
case 3:
+ // Init level up box
gBattle_BG1_X = 0;
- gBattle_BG1_Y = 0x100;
+ gBattle_BG1_Y = 256;
SetBgAttribute(0, BG_ATTR_PRIORITY, 1);
SetBgAttribute(1, BG_ATTR_PRIORITY, 0);
ShowBg(0);
ShowBg(1);
- HandleBattleWindow(0x12, 7, 0x1D, 0x13, WINDOW_x80);
+ HandleBattleWindow(18, 7, 29, 19, WINDOW_BG1);
gBattleScripting.drawlvlupboxState = 4;
break;
case 4:
+ // Draw page 1 of level up box
DrawLevelUpWindow1();
- PutWindowTilemap(13);
- CopyWindowToVram(13, 3);
+ PutWindowTilemap(B_WIN_LEVEL_UP_BOX);
+ CopyWindowToVram(B_WIN_LEVEL_UP_BOX, 3);
gBattleScripting.drawlvlupboxState++;
break;
case 5:
case 7:
+ // Wait for draw after each page
if (!IsDma3ManagerBusyWithBgCopy())
{
gBattle_BG1_Y = 0;
@@ -5923,28 +5936,30 @@ static void Cmd_drawlvlupbox(void)
case 6:
if (gMain.newKeys != 0)
{
+ // Draw page 2 of level up box
PlaySE(SE_SELECT);
DrawLevelUpWindow2();
- CopyWindowToVram(13, 2);
+ CopyWindowToVram(B_WIN_LEVEL_UP_BOX, 2);
gBattleScripting.drawlvlupboxState++;
}
break;
case 8:
if (gMain.newKeys != 0)
{
+ // Close level up box
PlaySE(SE_SELECT);
- HandleBattleWindow(0x12, 7, 0x1D, 0x13, WINDOW_x80 | WINDOW_CLEAR);
+ HandleBattleWindow(18, 7, 29, 19, WINDOW_BG1 | WINDOW_CLEAR);
gBattleScripting.drawlvlupboxState++;
}
break;
case 9:
- if (!sub_804F344())
+ if (!SlideOutLevelUpBanner())
{
- ClearWindowTilemap(14);
- CopyWindowToVram(14, 1);
+ ClearWindowTilemap(B_WIN_LEVEL_UP_BANNER);
+ CopyWindowToVram(B_WIN_LEVEL_UP_BANNER, 1);
- ClearWindowTilemap(13);
- CopyWindowToVram(13, 1);
+ ClearWindowTilemap(B_WIN_LEVEL_UP_BOX);
+ CopyWindowToVram(B_WIN_LEVEL_UP_BOX, 1);
SetBgAttribute(2, BG_ATTR_PRIORITY, 2);
ShowBg(2);
@@ -5970,7 +5985,7 @@ static void DrawLevelUpWindow1(void)
u16 currStats[NUM_STATS];
GetMonLevelUpWindowStats(&gPlayerParty[gBattleStruct->expGetterMonId], currStats);
- DrawLevelUpWindowPg1(0xD, gBattleResources->beforeLvlUp->stats, currStats, TEXT_DYNAMIC_COLOR_5, TEXT_DYNAMIC_COLOR_4, TEXT_DYNAMIC_COLOR_6);
+ DrawLevelUpWindowPg1(B_WIN_LEVEL_UP_BOX, gBattleResources->beforeLvlUp->stats, currStats, TEXT_DYNAMIC_COLOR_5, TEXT_DYNAMIC_COLOR_4, TEXT_DYNAMIC_COLOR_6);
}
static void DrawLevelUpWindow2(void)
@@ -5978,41 +5993,41 @@ static void DrawLevelUpWindow2(void)
u16 currStats[NUM_STATS];
GetMonLevelUpWindowStats(&gPlayerParty[gBattleStruct->expGetterMonId], currStats);
- DrawLevelUpWindowPg2(0xD, currStats, TEXT_DYNAMIC_COLOR_5, TEXT_DYNAMIC_COLOR_4, TEXT_DYNAMIC_COLOR_6);
+ DrawLevelUpWindowPg2(B_WIN_LEVEL_UP_BOX, currStats, TEXT_DYNAMIC_COLOR_5, TEXT_DYNAMIC_COLOR_4, TEXT_DYNAMIC_COLOR_6);
}
-static void sub_804F17C(void)
+static void InitLevelUpBanner(void)
{
gBattle_BG2_Y = 0;
- gBattle_BG2_X = 0x1A0;
+ gBattle_BG2_X = LEVEL_UP_BANNER_START;
- LoadPalette(sUnknown_0831C2C8, 0x60, 0x20);
- CopyToWindowPixelBuffer(14, sUnknown_0831C2E8, 0, 0);
- PutWindowTilemap(14);
- CopyWindowToVram(14, 3);
+ LoadPalette(sLevelUpBanner_Pal, 0x60, 0x20);
+ CopyToWindowPixelBuffer(B_WIN_LEVEL_UP_BANNER, sLevelUpBanner_Gfx, 0, 0);
+ PutWindowTilemap(B_WIN_LEVEL_UP_BANNER);
+ CopyWindowToVram(B_WIN_LEVEL_UP_BANNER, 3);
- PutMonIconOnLvlUpBox();
+ PutMonIconOnLvlUpBanner();
}
-static bool8 sub_804F1CC(void)
+static bool8 SlideInLevelUpBanner(void)
{
if (IsDma3ManagerBusyWithBgCopy())
return TRUE;
- if (gBattle_BG2_X == 0x200)
+ if (gBattle_BG2_X == LEVEL_UP_BANNER_END)
return FALSE;
- if (gBattle_BG2_X == 0x1A0)
- PutLevelAndGenderOnLvlUpBox();
+ if (gBattle_BG2_X == LEVEL_UP_BANNER_START)
+ DrawLevelUpBannerText();
gBattle_BG2_X += 8;
- if (gBattle_BG2_X >= 0x200)
- gBattle_BG2_X = 0x200;
+ if (gBattle_BG2_X >= LEVEL_UP_BANNER_END)
+ gBattle_BG2_X = LEVEL_UP_BANNER_END;
- return (gBattle_BG2_X != 0x200);
+ return (gBattle_BG2_X != LEVEL_UP_BANNER_END);
}
-static void PutLevelAndGenderOnLvlUpBox(void)
+static void DrawLevelUpBannerText(void)
{
u16 monLevel;
u8 monGender;
@@ -6025,7 +6040,7 @@ static void PutLevelAndGenderOnLvlUpBox(void)
GetMonNickname(&gPlayerParty[gBattleStruct->expGetterMonId], gStringVar4);
printerTemplate.currentChar = gStringVar4;
- printerTemplate.windowId = 14;
+ printerTemplate.windowId = B_WIN_LEVEL_UP_BANNER;
printerTemplate.fontId = 0;
printerTemplate.x = 32;
printerTemplate.y = 0;
@@ -6038,7 +6053,7 @@ static void PutLevelAndGenderOnLvlUpBox(void)
printerTemplate.bgColor = TEXT_COLOR_TRANSPARENT;
printerTemplate.shadowColor = TEXT_COLOR_DARK_GRAY;
- AddTextPrinter(&printerTemplate, 0xFF, NULL);
+ AddTextPrinter(&printerTemplate, TEXT_SPEED_FF, NULL);
txtPtr = gStringVar4;
*(txtPtr)++ = CHAR_EXTRA_SYMBOL;
@@ -6053,14 +6068,14 @@ static void PutLevelAndGenderOnLvlUpBox(void)
{
if (monGender == MON_MALE)
{
- txtPtr = WriteColorChangeControlCode(txtPtr, 0, 0xC);
- txtPtr = WriteColorChangeControlCode(txtPtr, 1, 0xD);
+ txtPtr = WriteColorChangeControlCode(txtPtr, 0, TEXT_DYNAMIC_COLOR_3);
+ txtPtr = WriteColorChangeControlCode(txtPtr, 1, TEXT_DYNAMIC_COLOR_4);
*(txtPtr++) = CHAR_MALE;
}
else
{
- txtPtr = WriteColorChangeControlCode(txtPtr, 0, 0xE);
- txtPtr = WriteColorChangeControlCode(txtPtr, 1, 0xF);
+ txtPtr = WriteColorChangeControlCode(txtPtr, 0, TEXT_DYNAMIC_COLOR_5);
+ txtPtr = WriteColorChangeControlCode(txtPtr, 1, TEXT_DYNAMIC_COLOR_6);
*(txtPtr++) = CHAR_FEMALE;
}
*(txtPtr++) = EOS;
@@ -6068,28 +6083,28 @@ static void PutLevelAndGenderOnLvlUpBox(void)
printerTemplate.y = 10;
printerTemplate.currentY = 10;
- AddTextPrinter(&printerTemplate, 0xFF, NULL);
+ AddTextPrinter(&printerTemplate, TEXT_SPEED_FF, NULL);
- CopyWindowToVram(14, 2);
+ CopyWindowToVram(B_WIN_LEVEL_UP_BANNER, 2);
}
-static bool8 sub_804F344(void)
+static bool8 SlideOutLevelUpBanner(void)
{
- if (gBattle_BG2_X == 0x1A0)
+ if (gBattle_BG2_X == LEVEL_UP_BANNER_START)
return FALSE;
- if (gBattle_BG2_X - 16 < 0x1A0)
- gBattle_BG2_X = 0x1A0;
+ if (gBattle_BG2_X - 16 < LEVEL_UP_BANNER_START)
+ gBattle_BG2_X = LEVEL_UP_BANNER_START;
else
gBattle_BG2_X -= 16;
- return (gBattle_BG2_X != 0x1A0);
+ return (gBattle_BG2_X != LEVEL_UP_BANNER_START);
}
-#define sDestroy data[0]
-#define sSavedLvlUpBoxXPosition data[1]
+#define sDestroy data[0]
+#define sXOffset data[1]
-static void PutMonIconOnLvlUpBox(void)
+static void PutMonIconOnLvlUpBanner(void)
{
u8 spriteId;
const u16* iconPal;
@@ -6102,23 +6117,23 @@ static void PutMonIconOnLvlUpBox(void)
const u8* iconPtr = GetMonIconPtr(species, personality, 1);
iconSheet.data = iconPtr;
iconSheet.size = 0x200;
- iconSheet.tag = MON_ICON_LVLUP_BOX_TAG;
+ iconSheet.tag = TAG_LVLUP_BANNER_MON_ICON;
iconPal = GetValidMonIconPalettePtr(species);
iconPalSheet.data = iconPal;
- iconPalSheet.tag = MON_ICON_LVLUP_BOX_TAG;
+ iconPalSheet.tag = TAG_LVLUP_BANNER_MON_ICON;
LoadSpriteSheet(&iconSheet);
LoadSpritePalette(&iconPalSheet);
- spriteId = CreateSprite(&sSpriteTemplate_MonIconOnLvlUpBox, 256, 10, 0);
+ spriteId = CreateSprite(&sSpriteTemplate_MonIconOnLvlUpBanner, 256, 10, 0);
gSprites[spriteId].sDestroy = FALSE;
- gSprites[spriteId].sSavedLvlUpBoxXPosition = gBattle_BG2_X;
+ gSprites[spriteId].sXOffset = gBattle_BG2_X;
}
-static void SpriteCB_MonIconOnLvlUpBox(struct Sprite* sprite)
+static void SpriteCB_MonIconOnLvlUpBanner(struct Sprite* sprite)
{
- sprite->x2 = sprite->sSavedLvlUpBoxXPosition - gBattle_BG2_X;
+ sprite->x2 = sprite->sXOffset - gBattle_BG2_X;
if (sprite->x2 != 0)
{
@@ -6127,13 +6142,13 @@ static void SpriteCB_MonIconOnLvlUpBox(struct Sprite* sprite)
else if (sprite->sDestroy)
{
DestroySprite(sprite);
- FreeSpriteTilesByTag(MON_ICON_LVLUP_BOX_TAG);
- FreeSpritePaletteByTag(MON_ICON_LVLUP_BOX_TAG);
+ FreeSpriteTilesByTag(TAG_LVLUP_BANNER_MON_ICON);
+ FreeSpritePaletteByTag(TAG_LVLUP_BANNER_MON_ICON);
}
}
#undef sDestroy
-#undef sSavedLvlUpBoxXPosition
+#undef sXOffset
static bool32 IsMonGettingExpSentOut(void)
{
@@ -6160,7 +6175,7 @@ static void Cmd_setatktoplayer0(void)
static void Cmd_makevisible(void)
{
gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
- BtlController_EmitSpriteInvisibility(0, FALSE);
+ BtlController_EmitSpriteInvisibility(BUFFER_A, FALSE);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 2;
@@ -6282,7 +6297,7 @@ static void Cmd_various(void)
gBattleCommunication[0] = IsRunningFromBattleImpossible();
break;
case VARIOUS_GET_MOVE_TARGET:
- gBattlerTarget = GetMoveTarget(gCurrentMove, 0);
+ gBattlerTarget = GetMoveTarget(gCurrentMove, NO_TARGET_OVERRIDE);
break;
case VARIOUS_GET_BATTLER_FAINTED:
if (gHitMarker & HITMARKER_FAINTED(gActiveBattler))
@@ -6371,7 +6386,7 @@ static void Cmd_various(void)
gDisableStructs[1].truantSwitchInHack = 1;
break;
case VARIOUS_EMIT_YESNOBOX:
- BtlController_EmitYesNoBox(0);
+ BtlController_EmitYesNoBox(BUFFER_A);
MarkBattlerForControllerExec(gActiveBattler);
break;
case VARIOUS_DRAW_ARENA_REF_TEXT_BOX:
@@ -6382,10 +6397,10 @@ static void Cmd_various(void)
break;
case VARIOUS_ARENA_JUDGMENT_STRING:
BattleStringExpandPlaceholdersToDisplayedString(gRefereeStringsTable[gBattlescriptCurrInstr[1]]);
- BattlePutTextOnWindow(gDisplayedStringBattle, 22);
+ BattlePutTextOnWindow(gDisplayedStringBattle, ARENA_WIN_JUDGEMENT_TEXT);
break;
case VARIOUS_ARENA_WAIT_STRING:
- if (IsTextPrinterActive(22))
+ if (IsTextPrinterActive(ARENA_WIN_JUDGEMENT_TEXT))
return;
break;
case VARIOUS_WAIT_CRY:
@@ -6396,7 +6411,7 @@ static void Cmd_various(void)
gActiveBattler = 1;
if (gBattleMons[gActiveBattler].hp != 0)
{
- BtlController_EmitReturnMonToBall(0, 0);
+ BtlController_EmitReturnMonToBall(BUFFER_A, FALSE);
MarkBattlerForControllerExec(gActiveBattler);
}
break;
@@ -6406,7 +6421,7 @@ static void Cmd_various(void)
gActiveBattler = 3;
if (gBattleMons[gActiveBattler].hp != 0)
{
- BtlController_EmitReturnMonToBall(0, 0);
+ BtlController_EmitReturnMonToBall(BUFFER_A, FALSE);
MarkBattlerForControllerExec(gActiveBattler);
}
}
@@ -6431,7 +6446,7 @@ static void Cmd_various(void)
gBattleOutcome = B_OUTCOME_MON_TELEPORTED;
break;
case VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC:
- BtlController_EmitPlayFanfareOrBGM(0, MUS_VICTORY_TRAINER, TRUE);
+ BtlController_EmitPlayFanfareOrBGM(BUFFER_A, MUS_VICTORY_TRAINER, TRUE);
MarkBattlerForControllerExec(gActiveBattler);
break;
}
@@ -6489,7 +6504,7 @@ static void Cmd_faintifabilitynotdamp(void)
{
gActiveBattler = gBattlerAttacker;
gBattleMoveDamage = gBattleMons[gActiveBattler].hp;
- BtlController_EmitHealthBarUpdate(0, INSTANT_HP_BAR_DROP);
+ BtlController_EmitHealthBarUpdate(BUFFER_A, INSTANT_HP_BAR_DROP);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr++;
@@ -6516,7 +6531,7 @@ static void Cmd_setatkhptozero(void)
gActiveBattler = gBattlerAttacker;
gBattleMons[gActiveBattler].hp = 0;
- BtlController_EmitSetMonData(0, REQUEST_HP_BATTLE, 0, 2, &gBattleMons[gActiveBattler].hp);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_HP_BATTLE, 0, sizeof(gBattleMons[gActiveBattler].hp), &gBattleMons[gActiveBattler].hp);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr++;
@@ -6597,7 +6612,7 @@ static void Cmd_trymirrormove(void)
{
gHitMarker &= ~HITMARKER_ATTACKSTRING_PRINTED;
gCurrentMove = move;
- gBattlerTarget = GetMoveTarget(gCurrentMove, 0);
+ gBattlerTarget = GetMoveTarget(gCurrentMove, NO_TARGET_OVERRIDE);
gBattlescriptCurrInstr = gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect];
}
else if (validMovesCount)
@@ -6605,7 +6620,7 @@ static void Cmd_trymirrormove(void)
gHitMarker &= ~HITMARKER_ATTACKSTRING_PRINTED;
i = Random() % validMovesCount;
gCurrentMove = movesArray[i];
- gBattlerTarget = GetMoveTarget(gCurrentMove, 0);
+ gBattlerTarget = GetMoveTarget(gCurrentMove, NO_TARGET_OVERRIDE);
gBattlescriptCurrInstr = gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect];
}
else
@@ -6714,7 +6729,7 @@ static void Cmd_trysetrest(void)
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_REST;
gBattleMons[gBattlerTarget].status1 = STATUS1_SLEEP_TURN(3);
- BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gActiveBattler].status1), &gBattleMons[gActiveBattler].status1);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 5;
}
@@ -7108,7 +7123,7 @@ static bool8 TryDoForceSwitchOut(void)
{
if (gBattleMons[gBattlerAttacker].level >= gBattleMons[gBattlerTarget].level)
{
- *(gBattleStruct->field_58 + gBattlerTarget) = gBattlerPartyIndexes[gBattlerTarget];
+ *(gBattleStruct->battlerPartyIndexes + gBattlerTarget) = gBattlerPartyIndexes[gBattlerTarget];
}
else
{
@@ -7118,7 +7133,7 @@ static bool8 TryDoForceSwitchOut(void)
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
return FALSE;
}
- *(gBattleStruct->field_58 + gBattlerTarget) = gBattlerPartyIndexes[gBattlerTarget];
+ *(gBattleStruct->battlerPartyIndexes + gBattlerTarget) = gBattlerPartyIndexes[gBattlerTarget];
}
gBattlescriptCurrInstr = BattleScript_SuccessForceOut;
@@ -7600,7 +7615,7 @@ static void Cmd_updatestatusicon(void)
if (gBattlescriptCurrInstr[1] != BS_ATTACKER_WITH_PARTNER)
{
gActiveBattler = GetBattlerForBattleScript(gBattlescriptCurrInstr[1]);
- BtlController_EmitStatusIconUpdate(0, gBattleMons[gActiveBattler].status1, gBattleMons[gActiveBattler].status2);
+ BtlController_EmitStatusIconUpdate(BUFFER_A, gBattleMons[gActiveBattler].status1, gBattleMons[gActiveBattler].status2);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 2;
}
@@ -7609,7 +7624,7 @@ static void Cmd_updatestatusicon(void)
gActiveBattler = gBattlerAttacker;
if (!(gAbsentBattlerFlags & gBitTable[gActiveBattler]))
{
- BtlController_EmitStatusIconUpdate(0, gBattleMons[gActiveBattler].status1, gBattleMons[gActiveBattler].status2);
+ BtlController_EmitStatusIconUpdate(BUFFER_A, gBattleMons[gActiveBattler].status1, gBattleMons[gActiveBattler].status2);
MarkBattlerForControllerExec(gActiveBattler);
}
if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
@@ -7617,7 +7632,7 @@ static void Cmd_updatestatusicon(void)
gActiveBattler = GetBattlerAtPosition(GetBattlerPosition(gBattlerAttacker) ^ BIT_FLANK);
if (!(gAbsentBattlerFlags & gBitTable[gActiveBattler]))
{
- BtlController_EmitStatusIconUpdate(0, gBattleMons[gActiveBattler].status1, gBattleMons[gActiveBattler].status2);
+ BtlController_EmitStatusIconUpdate(BUFFER_A, gBattleMons[gActiveBattler].status1, gBattleMons[gActiveBattler].status2);
MarkBattlerForControllerExec(gActiveBattler);
}
}
@@ -7695,7 +7710,7 @@ static void Cmd_transformdataexecution(void)
}
gActiveBattler = gBattlerAttacker;
- BtlController_EmitResetActionMoveSelection(0, RESET_MOVE_SELECTION);
+ BtlController_EmitResetActionMoveSelection(BUFFER_A, RESET_MOVE_SELECTION);
MarkBattlerForControllerExec(gActiveBattler);
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_TRANSFORMED;
}
@@ -7805,7 +7820,7 @@ static void Cmd_metronome(void)
{
gHitMarker &= ~HITMARKER_ATTACKSTRING_PRINTED;
gBattlescriptCurrInstr = gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect];
- gBattlerTarget = GetMoveTarget(gCurrentMove, 0);
+ gBattlerTarget = GetMoveTarget(gCurrentMove, NO_TARGET_OVERRIDE);
return;
}
}
@@ -7821,7 +7836,7 @@ static void Cmd_psywavedamageeffect(void)
{
s32 randDamage;
- while ((randDamage = (Random() & 0xF)) > 10);
+ while ((randDamage = Random() % 16) > 10);
randDamage *= 10;
gBattleMoveDamage = gBattleMons[gBattlerAttacker].level * (randDamage + 50) / 100;
@@ -7959,8 +7974,8 @@ static void Cmd_painsplitdmgcalc(void)
static void Cmd_settypetorandomresistance(void) // conversion 2
{
- if (gLastLandedMoves[gBattlerAttacker] == 0
- || gLastLandedMoves[gBattlerAttacker] == 0xFFFF)
+ if (gLastLandedMoves[gBattlerAttacker] == MOVE_NONE
+ || gLastLandedMoves[gBattlerAttacker] == 0xFFFF)
{
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
}
@@ -7975,7 +7990,7 @@ static void Cmd_settypetorandomresistance(void) // conversion 2
for (rands = 0; rands < 1000; rands++)
{
- while (((i = (Random() & 0x7F)) > sizeof(gTypeEffectiveness) / 3));
+ while (((i = Random() % 128) > sizeof(gTypeEffectiveness) / 3));
i *= 3;
@@ -8064,7 +8079,7 @@ static void Cmd_copymovepermanently(void) // sketch
}
movePpData.ppBonuses = gBattleMons[gBattlerAttacker].ppBonuses;
- BtlController_EmitSetMonData(0, REQUEST_MOVES_PP_BATTLE, 0, sizeof(struct MovePpInfo), &movePpData);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_MOVES_PP_BATTLE, 0, sizeof(movePpData), &movePpData);
MarkBattlerForControllerExec(gActiveBattler);
PREPARE_MOVE_BUFFER(gBattleTextBuff1, gLastPrintedMoves[gBattlerTarget])
@@ -8138,7 +8153,7 @@ static void Cmd_trychoosesleeptalkmove(void)
}
unusableMovesBits = CheckMoveLimitations(gBattlerAttacker, unusableMovesBits, ~MOVE_LIMITATION_PP);
- if (unusableMovesBits == 0xF) // all 4 moves cannot be chosen
+ if (unusableMovesBits == (1 << MAX_MON_MOVES) - 1) // all 4 moves cannot be chosen
{
gBattlescriptCurrInstr += 5;
}
@@ -8154,7 +8169,7 @@ static void Cmd_trychoosesleeptalkmove(void)
gCalledMove = gBattleMons[gBattlerAttacker].moves[movePosition];
gCurrMovePos = movePosition;
gHitMarker &= ~HITMARKER_ATTACKSTRING_PRINTED;
- gBattlerTarget = GetMoveTarget(gCalledMove, 0);
+ gBattlerTarget = GetMoveTarget(gCalledMove, NO_TARGET_OVERRIDE);
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
}
}
@@ -8226,10 +8241,11 @@ static void Cmd_tryspiteppreduce(void)
gBattleMons[gBattlerTarget].pp[i] -= ppToDeduct;
gActiveBattler = gBattlerTarget;
+ // if (MOVE_IS_PERMANENT(gActiveBattler, i)), but backwards
if (!(gDisableStructs[gActiveBattler].mimickedMoves & gBitTable[i])
&& !(gBattleMons[gActiveBattler].status2 & STATUS2_TRANSFORMED))
{
- BtlController_EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + i, 0, 1, &gBattleMons[gActiveBattler].pp[i]);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_PPMOVE1_BATTLE + i, 0, sizeof(gBattleMons[gActiveBattler].pp[i]), &gBattleMons[gActiveBattler].pp[i]);
MarkBattlerForControllerExec(gActiveBattler);
}
@@ -8322,7 +8338,7 @@ static void Cmd_healpartystatus(void)
else // Aromatherapy
{
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SOOTHING_AROMA;
- toHeal = 0x3F;
+ toHeal = (1 << PARTY_SIZE) - 1;
gBattleMons[gBattlerAttacker].status1 = 0;
gBattleMons[gBattlerAttacker].status2 &= ~STATUS2_NIGHTMARE;
@@ -8340,7 +8356,7 @@ static void Cmd_healpartystatus(void)
if (toHeal)
{
gActiveBattler = gBattlerAttacker;
- BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, toHeal, 4, &zero);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE, toHeal, sizeof(zero), &zero);
MarkBattlerForControllerExec(gActiveBattler);
}
@@ -8758,29 +8774,28 @@ static void Cmd_recoverbasedonsunlight(void)
static void Cmd_hiddenpowercalc(void)
{
- u8 powerBits;
- u8 typeBits;
-
- powerBits = ((gBattleMons[gBattlerAttacker].hpIV & 2) >> 1)
- | ((gBattleMons[gBattlerAttacker].attackIV & 2) << 0)
- | ((gBattleMons[gBattlerAttacker].defenseIV & 2) << 1)
- | ((gBattleMons[gBattlerAttacker].speedIV & 2) << 2)
- | ((gBattleMons[gBattlerAttacker].spAttackIV & 2) << 3)
- | ((gBattleMons[gBattlerAttacker].spDefenseIV & 2) << 4);
+ u8 powerBits = ((gBattleMons[gBattlerAttacker].hpIV & 2) >> 1)
+ | ((gBattleMons[gBattlerAttacker].attackIV & 2) << 0)
+ | ((gBattleMons[gBattlerAttacker].defenseIV & 2) << 1)
+ | ((gBattleMons[gBattlerAttacker].speedIV & 2) << 2)
+ | ((gBattleMons[gBattlerAttacker].spAttackIV & 2) << 3)
+ | ((gBattleMons[gBattlerAttacker].spDefenseIV & 2) << 4);
- typeBits = ((gBattleMons[gBattlerAttacker].hpIV & 1) << 0)
- | ((gBattleMons[gBattlerAttacker].attackIV & 1) << 1)
- | ((gBattleMons[gBattlerAttacker].defenseIV & 1) << 2)
- | ((gBattleMons[gBattlerAttacker].speedIV & 1) << 3)
- | ((gBattleMons[gBattlerAttacker].spAttackIV & 1) << 4)
- | ((gBattleMons[gBattlerAttacker].spDefenseIV & 1) << 5);
+ u8 typeBits = ((gBattleMons[gBattlerAttacker].hpIV & 1) << 0)
+ | ((gBattleMons[gBattlerAttacker].attackIV & 1) << 1)
+ | ((gBattleMons[gBattlerAttacker].defenseIV & 1) << 2)
+ | ((gBattleMons[gBattlerAttacker].speedIV & 1) << 3)
+ | ((gBattleMons[gBattlerAttacker].spAttackIV & 1) << 4)
+ | ((gBattleMons[gBattlerAttacker].spDefenseIV & 1) << 5);
gDynamicBasePower = (40 * powerBits) / 63 + 30;
- gBattleStruct->dynamicMoveType = (15 * typeBits) / 63 + 1;
+ // Subtract 3 instead of 1 below because 2 types are excluded (TYPE_NORMAL and TYPE_MYSTERY)
+ // The final + 1 skips past Normal, and the following conditional skips TYPE_MYSTERY
+ gBattleStruct->dynamicMoveType = ((NUMBER_OF_MON_TYPES - 3) * typeBits) / 63 + 1;
if (gBattleStruct->dynamicMoveType >= TYPE_MYSTERY)
gBattleStruct->dynamicMoveType++;
- gBattleStruct->dynamicMoveType |= 0xC0;
+ gBattleStruct->dynamicMoveType |= F_DYNAMIC_TYPE_1 | F_DYNAMIC_TYPE_2;
gBattlescriptCurrInstr++;
}
@@ -8947,7 +8962,7 @@ static void Cmd_jumpifattackandspecialattackcannotfall(void) // memento
{
gActiveBattler = gBattlerAttacker;
gBattleMoveDamage = gBattleMons[gActiveBattler].hp;
- BtlController_EmitHealthBarUpdate(0, INSTANT_HP_BAR_DROP);
+ BtlController_EmitHealthBarUpdate(BUFFER_A, INSTANT_HP_BAR_DROP);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 5;
}
@@ -8972,7 +8987,7 @@ static void Cmd_callterrainattack(void) // nature power
{
gHitMarker &= ~HITMARKER_ATTACKSTRING_PRINTED;
gCurrentMove = sNaturePowerMoves[gBattleTerrain];
- gBattlerTarget = GetMoveTarget(gCurrentMove, 0);
+ gBattlerTarget = GetMoveTarget(gCurrentMove, NO_TARGET_OVERRIDE);
BattleScriptPush(gBattleScriptsForMoveEffects[gBattleMoves[gCurrentMove].effect]);
gBattlescriptCurrInstr++;
}
@@ -8984,7 +8999,7 @@ static void Cmd_cureifburnedparalysedorpoisoned(void) // refresh
gBattleMons[gBattlerAttacker].status1 = 0;
gBattlescriptCurrInstr += 5;
gActiveBattler = gBattlerAttacker;
- BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE, 0, sizeof(gBattleMons[gActiveBattler].status1), &gBattleMons[gActiveBattler].status1);
MarkBattlerForControllerExec(gActiveBattler);
}
else
@@ -9101,15 +9116,15 @@ static void Cmd_tryswapitems(void) // trick
oldItemAtk = gBattleMons[gBattlerAttacker].item;
*newItemAtk = gBattleMons[gBattlerTarget].item;
- gBattleMons[gBattlerAttacker].item = 0;
+ gBattleMons[gBattlerAttacker].item = ITEM_NONE;
gBattleMons[gBattlerTarget].item = oldItemAtk;
gActiveBattler = gBattlerAttacker;
- BtlController_EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, newItemAtk);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_HELDITEM_BATTLE, 0, sizeof(*newItemAtk), newItemAtk);
MarkBattlerForControllerExec(gBattlerAttacker);
gActiveBattler = gBattlerTarget;
- BtlController_EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gBattlerTarget].item);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[gBattlerTarget].item), &gBattleMons[gBattlerTarget].item);
MarkBattlerForControllerExec(gBattlerTarget);
*(u8*)((u8*)(&gBattleStruct->choicedMove[gBattlerTarget]) + 0) = 0;
@@ -9123,9 +9138,9 @@ static void Cmd_tryswapitems(void) // trick
PREPARE_ITEM_BUFFER(gBattleTextBuff1, *newItemAtk)
PREPARE_ITEM_BUFFER(gBattleTextBuff2, oldItemAtk)
- if (oldItemAtk != 0 && *newItemAtk != 0)
+ if (oldItemAtk != ITEM_NONE && *newItemAtk != ITEM_NONE)
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ITEM_SWAP_BOTH; // attacker's item -> <- target's item
- else if (oldItemAtk == 0 && *newItemAtk != 0)
+ else if (oldItemAtk == ITEM_NONE && *newItemAtk != ITEM_NONE)
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ITEM_SWAP_TAKEN; // nothing -> <- target's item
else
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_ITEM_SWAP_GIVEN; // attacker's item -> <- nothing
@@ -9382,7 +9397,7 @@ static void Cmd_assistattackselect(void)
{
gHitMarker &= ~HITMARKER_ATTACKSTRING_PRINTED;
gCalledMove = movesArray[((Random() & 0xFF) * chooseableMovesNo) >> 8];
- gBattlerTarget = GetMoveTarget(gCalledMove, 0);
+ gBattlerTarget = GetMoveTarget(gCalledMove, NO_TARGET_OVERRIDE);
gBattlescriptCurrInstr += 5;
}
else
@@ -9451,7 +9466,10 @@ static void Cmd_switchoutabilities(void)
{
case ABILITY_NATURAL_CURE:
gBattleMons[gActiveBattler].status1 = 0;
- BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, gBitTable[*(gBattleStruct->field_58 + gActiveBattler)], 4, &gBattleMons[gActiveBattler].status1);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE,
+ gBitTable[*(gBattleStruct->battlerPartyIndexes + gActiveBattler)],
+ sizeof(gBattleMons[gActiveBattler].status1),
+ &gBattleMons[gActiveBattler].status1);
MarkBattlerForControllerExec(gActiveBattler);
break;
}
@@ -9527,7 +9545,7 @@ static void Cmd_pickup(void)
ability = gBaseStats[species].abilities[0];
if (ability == ABILITY_PICKUP
- && species != 0
+ && species != SPECIES_NONE
&& species != SPECIES_EGG
&& heldItem == ITEM_NONE
&& (Random() % 10) == 0)
@@ -9550,7 +9568,7 @@ static void Cmd_pickup(void)
ability = gBaseStats[species].abilities[0];
if (ability == ABILITY_PICKUP
- && species != 0
+ && species != SPECIES_NONE
&& species != SPECIES_EGG
&& heldItem == ITEM_NONE
&& (Random() % 10) == 0)
@@ -9586,9 +9604,9 @@ static void Cmd_docastformchangeanimation(void)
gActiveBattler = gBattleScripting.battler;
if (gBattleMons[gActiveBattler].status2 & STATUS2_SUBSTITUTE)
- *(&gBattleStruct->formToChangeInto) |= 0x80;
+ *(&gBattleStruct->formToChangeInto) |= CASTFORM_SUBSTITUTE;
- BtlController_EmitBattleAnimation(0, B_ANIM_CASTFORM_CHANGE, gBattleStruct->formToChangeInto);
+ BtlController_EmitBattleAnimation(BUFFER_A, B_ANIM_CASTFORM_CHANGE, gBattleStruct->formToChangeInto);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr++;
@@ -9643,15 +9661,15 @@ static void Cmd_setweatherballtype(void)
if (gBattleWeather & B_WEATHER_ANY)
gBattleScripting.dmgMultiplier = 2;
if (gBattleWeather & B_WEATHER_RAIN)
- *(&gBattleStruct->dynamicMoveType) = TYPE_WATER | 0x80;
+ *(&gBattleStruct->dynamicMoveType) = TYPE_WATER | F_DYNAMIC_TYPE_2;
else if (gBattleWeather & B_WEATHER_SANDSTORM)
- *(&gBattleStruct->dynamicMoveType) = TYPE_ROCK | 0x80;
+ *(&gBattleStruct->dynamicMoveType) = TYPE_ROCK | F_DYNAMIC_TYPE_2;
else if (gBattleWeather & B_WEATHER_SUN)
- *(&gBattleStruct->dynamicMoveType) = TYPE_FIRE | 0x80;
+ *(&gBattleStruct->dynamicMoveType) = TYPE_FIRE | F_DYNAMIC_TYPE_2;
else if (gBattleWeather & B_WEATHER_HAIL)
- *(&gBattleStruct->dynamicMoveType) = TYPE_ICE | 0x80;
+ *(&gBattleStruct->dynamicMoveType) = TYPE_ICE | F_DYNAMIC_TYPE_2;
else
- *(&gBattleStruct->dynamicMoveType) = TYPE_NORMAL | 0x80;
+ *(&gBattleStruct->dynamicMoveType) = TYPE_NORMAL | F_DYNAMIC_TYPE_2;
}
gBattlescriptCurrInstr++;
@@ -9663,13 +9681,13 @@ static void Cmd_tryrecycleitem(void)
gActiveBattler = gBattlerAttacker;
usedHeldItem = &gBattleStruct->usedHeldItems[gActiveBattler];
- if (*usedHeldItem != 0 && gBattleMons[gActiveBattler].item == 0)
+ if (*usedHeldItem != ITEM_NONE && gBattleMons[gActiveBattler].item == ITEM_NONE)
{
gLastUsedItem = *usedHeldItem;
- *usedHeldItem = 0;
+ *usedHeldItem = ITEM_NONE;
gBattleMons[gActiveBattler].item = gLastUsedItem;
- BtlController_EmitSetMonData(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gActiveBattler].item);
+ BtlController_EmitSetMonData(BUFFER_A, REQUEST_HELDITEM_BATTLE, 0, sizeof(gBattleMons[gActiveBattler].item), &gBattleMons[gActiveBattler].item);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 5;
@@ -9695,7 +9713,8 @@ static void Cmd_settypetoterrain(void)
}
}
-static void Cmd_pursuitrelated(void)
+// Unused
+static void Cmd_pursuitdoubles(void)
{
gActiveBattler = GetBattlerAtPosition(GetBattlerPosition(gBattlerAttacker) ^ BIT_FLANK);
@@ -9704,11 +9723,11 @@ static void Cmd_pursuitrelated(void)
&& gChosenActionByBattler[gActiveBattler] == B_ACTION_USE_MOVE
&& gChosenMoveByBattler[gActiveBattler] == MOVE_PURSUIT)
{
- gActionsByTurnOrder[gActiveBattler] = 11;
+ gActionsByTurnOrder[gActiveBattler] = B_ACTION_TRY_FINISH;
gCurrentMove = MOVE_PURSUIT;
gBattlescriptCurrInstr += 5;
gBattleScripting.animTurn = 1;
- gBattleScripting.field_20 = gBattlerAttacker;
+ gBattleScripting.pursuitDoublesAttacker = gBattlerAttacker;
gBattlerAttacker = gActiveBattler;
}
else
@@ -9764,13 +9783,13 @@ static void Cmd_handleballthrow(void)
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
{
- BtlController_EmitBallThrowAnim(0, BALL_TRAINER_BLOCK);
+ BtlController_EmitBallThrowAnim(BUFFER_A, BALL_TRAINER_BLOCK);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr = BattleScript_TrainerBallBlock;
}
else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL)
{
- BtlController_EmitBallThrowAnim(0, BALL_3_SHAKES_SUCCESS);
+ BtlController_EmitBallThrowAnim(BUFFER_A, BALL_3_SHAKES_SUCCESS);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr = BattleScript_WallyBallThrow;
}
@@ -9849,14 +9868,14 @@ static void Cmd_handleballthrow(void)
}
else
{
- if (gBattleResults.catchAttempts[gLastUsedItem - ITEM_ULTRA_BALL] < 0xFF)
+ if (gBattleResults.catchAttempts[gLastUsedItem - ITEM_ULTRA_BALL] < 255)
gBattleResults.catchAttempts[gLastUsedItem - ITEM_ULTRA_BALL]++;
}
}
if (odds > 254) // mon caught
{
- BtlController_EmitBallThrowAnim(0, BALL_3_SHAKES_SUCCESS);
+ BtlController_EmitBallThrowAnim(BUFFER_A, BALL_3_SHAKES_SUCCESS);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr = BattleScript_SuccessBallThrow;
SetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_POKEBALL, &gLastUsedItem);
@@ -9878,7 +9897,7 @@ static void Cmd_handleballthrow(void)
if (gLastUsedItem == ITEM_MASTER_BALL)
shakes = BALL_3_SHAKES_SUCCESS; // why calculate the shakes before that check?
- BtlController_EmitBallThrowAnim(0, shakes);
+ BtlController_EmitBallThrowAnim(BUFFER_A, shakes);
MarkBattlerForControllerExec(gActiveBattler);
if (shakes == BALL_3_SHAKES_SUCCESS) // mon caught, copy of the code above
@@ -9953,7 +9972,7 @@ static void Cmd_displaydexinfo(void)
switch (gBattleCommunication[0])
{
case 0:
- BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK);
+ BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK);
gBattleCommunication[0]++;
break;
case 1:
@@ -9978,13 +9997,13 @@ static void Cmd_displaydexinfo(void)
case 3:
InitBattleBgsVideo();
LoadBattleTextboxAndBackground();
- gBattle_BG3_X = 0x100;
+ gBattle_BG3_X = 256;
gBattleCommunication[0]++;
break;
case 4:
if (!IsDma3ManagerBusyWithBgCopy())
{
- BeginNormalPaletteFade(PALETTES_BG, 0, 0x10, 0, RGB_BLACK);
+ BeginNormalPaletteFade(PALETTES_BG, 0, 16, 0, RGB_BLACK);
ShowBg(0);
ShowBg(3);
gBattleCommunication[0]++;
@@ -10037,7 +10056,7 @@ void HandleBattleWindow(u8 xStart, u8 yStart, u8 xEnd, u8 yEnd, u8 flags)
if (flags & WINDOW_CLEAR)
var = 0;
- if (flags & WINDOW_x80)
+ if (flags & WINDOW_BG1)
CopyToBgTilemapBufferRect_ChangePalette(1, &var, destX, destY, 1, 1, 0x11);
else
CopyToBgTilemapBufferRect_ChangePalette(0, &var, destX, destY, 1, 1, 0x11);
@@ -10070,8 +10089,8 @@ static void Cmd_trygivecaughtmonnick(void)
switch (gBattleCommunication[MULTIUSE_STATE])
{
case 0:
- HandleBattleWindow(0x18, 8, 0x1D, 0xD, 0);
- BattlePutTextOnWindow(gText_BattleYesNoChoice, 0xC);
+ HandleBattleWindow(24, 8, 29, 13, 0);
+ BattlePutTextOnWindow(gText_BattleYesNoChoice, B_WIN_YESNO);
gBattleCommunication[MULTIUSE_STATE]++;
gBattleCommunication[CURSOR_POSITION] = 0;
BattleCreateYesNoCursorAt(0);
@@ -10167,7 +10186,7 @@ static void Cmd_finishturn(void)
static void Cmd_trainerslideout(void)
{
gActiveBattler = GetBattlerAtPosition(gBattlescriptCurrInstr[1]);
- BtlController_EmitTrainerSlideBack(0);
+ BtlController_EmitTrainerSlideBack(BUFFER_A);
MarkBattlerForControllerExec(gActiveBattler);
gBattlescriptCurrInstr += 2;