From ac973aa38d330c6ad70f63aa1b0a6211f569601f Mon Sep 17 00:00:00 2001 From: Eduardo Quezada Date: Sun, 7 Aug 2022 22:37:10 -0400 Subject: [PATCH] Sync src/battle_util.c with pokeemerald --- data/maps/PewterCity_Gym/text.inc | 2 +- include/battle.h | 10 +- include/battle_controllers.h | 2 + include/battle_main.h | 6 +- include/battle_util.h | 11 +- include/constants/battle.h | 6 + include/constants/pokemon.h | 1 - include/pokemon.h | 9 + include/pokemon_summary_screen.h | 4 +- src/battle_ai_switch_items.c | 32 +- src/battle_anim_mons.c | 35 +- src/battle_anim_utility_funcs.c | 10 +- src/battle_controller_link_opponent.c | 10 +- src/battle_controller_link_partner.c | 10 +- src/battle_controller_oak_old_man.c | 14 +- src/battle_controller_opponent.c | 12 +- src/battle_controller_player.c | 52 +- src/battle_controller_pokedude.c | 16 +- src/battle_controller_safari.c | 2 +- src/battle_controllers.c | 54 +- src/battle_gfx_sfx_util.c | 18 +- src/battle_interface.c | 21 +- src/battle_intro.c | 16 +- src/battle_main.c | 1248 +++++++++++++----------- src/battle_script_commands.c | 2 +- src/battle_setup.c | 10 +- src/battle_transition.c | 32 +- src/battle_util.c | 1264 +++++++++++++------------ src/battle_util2.c | 32 +- src/berry_crush.c | 46 +- src/bike.c | 2 +- src/bug.c | 4 +- src/dark.c | 14 +- src/dragon.c | 6 +- src/field_tasks.c | 4 +- src/fire.c | 2 +- src/ghost.c | 6 +- src/ground.c | 6 +- src/ice.c | 8 +- src/librfu_rfu.c | 76 +- src/librfu_stwi.c | 4 +- src/mail_data.c | 8 +- src/menu.c | 8 +- src/mevent_show_news.c | 4 +- src/normal.c | 4 +- src/palette.c | 36 +- src/party_menu.c | 78 +- src/party_menu_specials.c | 4 +- src/pokedex_screen.c | 2 +- src/pokemon.c | 18 +- src/pokemon_summary_screen.c | 4 +- src/psychic.c | 6 +- src/rom_header_gf.c | 4 +- src/teachy_tv.c | 8 +- src/text.c | 2 +- src/text_printer.c | 6 +- src/window.c | 16 +- tools/jsonproc/inja.hpp | 4 +- tools/jsonproc/nlohmann/json.hpp | 30 +- 59 files changed, 1774 insertions(+), 1587 deletions(-) diff --git a/data/maps/PewterCity_Gym/text.inc b/data/maps/PewterCity_Gym/text.inc index 0b12ccd6c..a92ebe095 100644 --- a/data/maps/PewterCity_Gym/text.inc +++ b/data/maps/PewterCity_Gym/text.inc @@ -16,7 +16,7 @@ PewterCity_Gym_Text_BrockIntro:: @ NOTE: This defeat text actually causes a buffer overflow. It's too long for the gDisplayedStringBattle @ buffer that it's put into, and it stomps all over the gBattleTextBuffs after, as well as the otherwise -@ unused array after that, gUnknown_2022AE8. Perhaps that's the reason why said array exists. +@ unused array after that, sFlickerArray. Perhaps that's the reason why said array exists. PewterCity_Gym_Text_BrockDefeat:: .string "I took you for granted, and so\n" .string "I lost.\p" diff --git a/include/battle.h b/include/battle.h index b581190d6..ec98208a9 100644 --- a/include/battle.h +++ b/include/battle.h @@ -188,7 +188,7 @@ struct ProtectStruct u32 confusionSelfDmg:1; u32 targetNotAffected:1; u32 chargingTurn:1; - u32 fleeFlag:2; // for RunAway and Smoke Ball + u32 fleeType:2; // for RunAway and Smoke Ball u32 usedImprisonedMove:1; u32 loveImmobility:1; u32 usedDisabledMove:1; @@ -361,7 +361,7 @@ struct BattleResults extern struct BattleResults gBattleResults; -struct LinkPartnerHeader +struct LinkBattlerHeader { u8 versionSignatureLo; u8 versionSignatureHi; @@ -452,7 +452,7 @@ struct BattleStruct u8 field_182; // align 4 union { - struct LinkPartnerHeader linkPartnerHeader; + struct LinkBattlerHeader linkBattlerHeader; struct MultiBattlePokemonTx multiBattleMons[3]; } multiBuffer; u8 padding_1E4[0x1C]; @@ -681,8 +681,8 @@ extern u8 gActionSelectionCursor[MAX_BATTLERS_COUNT]; extern void (*gPreBattleCallback1)(void); extern bool8 gDoingBattleAnim; extern struct PokedudeBattlerState *gPokedudeBattlerStates[MAX_BATTLERS_COUNT]; -extern u8 *gBattleAnimMons_BgTilesBuffer; -extern u8 *gBattleAnimMons_BgTilemapBuffer; +extern u8 *gBattleAnimBgTileBuffer; +extern u8 *gBattleAnimBgTilemapBuffer; extern void (*gBattleMainFunc)(void); extern u8 gMoveSelectionCursor[MAX_BATTLERS_COUNT]; extern u32 gUnknown_2022B54; diff --git a/include/battle_controllers.h b/include/battle_controllers.h index 12e786fc9..b473f5022 100644 --- a/include/battle_controllers.h +++ b/include/battle_controllers.h @@ -101,6 +101,8 @@ enum { #define INSTANT_HP_BAR_DROP 0x7FFF +#define PARTY_SUMM_SKIP_DRAW_DELAY (1 << 7) + // Special return values in gBattleBufferB from Battle Controller functions. #define RET_VALUE_LEVELED_UP 11 diff --git a/include/battle_main.h b/include/battle_main.h index 8d5e1d19d..009e0e562 100644 --- a/include/battle_main.h +++ b/include/battle_main.h @@ -73,10 +73,10 @@ u32 GetBattleBgTemplateData(u8 arrayId, u8 caseId); void SpriteCB_EnemyMon(struct Sprite *sprite); void SpriteCallbackDummy_2(struct Sprite *sprite); void SpriteCB_FaintOpponentMon(struct Sprite *sprite); -void SpriteCb_ShowAsMoveTarget(struct Sprite *sprite); -void SpriteCb_HideAsMoveTarget(struct Sprite *sprite); +void SpriteCB_ShowAsMoveTarget(struct Sprite *sprite); +void SpriteCB_HideAsMoveTarget(struct Sprite *sprite); void SpriteCB_AllyMon(struct Sprite *sprite); -void SpriteCB_SetToDummy3(struct Sprite *sprite); +void SetIdleSpriteCallback(struct Sprite *sprite); void SpriteCB_FaintSlideAnim(struct Sprite *sprite); void DoBounceEffect(u8 battler, u8 which, s8 delta, s8 amplitude); void EndBounceEffect(u8 battler, u8 which); diff --git a/include/battle_util.h b/include/battle_util.h index cd0b1ab12..fe19aace0 100644 --- a/include/battle_util.h +++ b/include/battle_util.h @@ -9,6 +9,7 @@ #define MOVE_LIMITATION_TORMENTED (1 << 3) #define MOVE_LIMITATION_TAUNT (1 << 4) #define MOVE_LIMITATION_IMPRISON (1 << 5) +#define MOVE_LIMITATIONS_ALL 0xFF #define ABILITYEFFECT_ON_SWITCHIN 0 #define ABILITYEFFECT_ENDTURN 1 @@ -38,9 +39,12 @@ #define ABILITY_ON_FIELD(abilityId)(AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, abilityId, 0, 0)) #define ABILITY_ON_FIELD2(abilityId)(AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, abilityId, 0, 0)) -#define ITEMEFFECT_ON_SWITCH_IN 0x0 -#define ITEMEFFECT_MOVE_END 0x3 -#define ITEMEFFECT_KINGSROCK_SHELLBELL 0x4 +// For the first argument of ItemBattleEffects, to deteremine which block of item effects to try +#define ITEMEFFECT_ON_SWITCH_IN 0 +#define ITEMEFFECT_NORMAL 1 +#define ITEMEFFECT_DUMMY 2 // Unused, empty +#define ITEMEFFECT_MOVE_END 3 +#define ITEMEFFECT_KINGSROCK_SHELLBELL 4 #define WEATHER_HAS_EFFECT ((!AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_CLOUD_NINE, 0, 0) && !AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_AIR_LOCK, 0, 0))) #define WEATHER_HAS_EFFECT2 ((!AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_CLOUD_NINE, 0, 0) && !AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_AIR_LOCK, 0, 0))) @@ -58,7 +62,6 @@ u8 GetBattlerForBattleScript(u8 caseId); void PressurePPLose(u8 target, u8 attacker, u16 move); void PressurePPLoseOnUsingImprison(u8 attacker); void PressurePPLoseOnUsingPerishSong(u8 attacker); -void MarkAllBattlersForControllerExec(void); void MarkBattlerForControllerExec(u8 battlerId); void MarkBattlerReceivedLinkData(u8 battlerId); void CancelMultiTurnMoves(u8 battler); diff --git a/include/constants/battle.h b/include/constants/battle.h index 0b4c372a2..f628e7fed 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -316,6 +316,9 @@ #define NUM_CASTFORM_FORMS 4 #define CASTFORM_SUBSTITUTE (1 << 7) +#define FLEE_ITEM 1 +#define FLEE_ABILITY 2 + // Return value for IsRunningFromBattleImpossible. #define BATTLE_RUN_SUCCESS 0 #define BATTLE_RUN_FORBIDDEN 1 @@ -351,4 +354,7 @@ #define B_TEXT_FLAG_NPC_CONTEXT_FONT (1 << 6) #define B_TEXT_FLAG_WINDOW_CLEAR (1 << 7) +// Indicator for the party summary bar to display an empty slot. +#define HP_EMPTY_SLOT 0xFFFF + #endif // GUARD_CONSTANTS_BATTLE_H diff --git a/include/constants/pokemon.h b/include/constants/pokemon.h index dbea7dff5..8e59604d7 100644 --- a/include/constants/pokemon.h +++ b/include/constants/pokemon.h @@ -224,7 +224,6 @@ #define EV_ITEM_RAISE_LIMIT 100 #define PARTY_SIZE 6 -#define UNOWN_FORM_COUNT 28 #define BOX_NAME_LENGTH 8 #define EVO_MODE_NORMAL 0 diff --git a/include/pokemon.h b/include/pokemon.h index 0c5657f24..29ed66072 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -314,6 +314,15 @@ struct Evolution #define EVOS_PER_MON 5 +#define NUM_UNOWN_FORMS 28 + +#define GET_UNOWN_LETTER(personality) (( \ + (((personality) & 0x03000000) >> 18) \ + | (((personality) & 0x00030000) >> 12) \ + | (((personality) & 0x00000300) >> 6) \ + | (((personality) & 0x00000003) >> 0) \ +) % NUM_UNOWN_FORMS) + extern u8 gPlayerPartyCount; extern struct Pokemon gPlayerParty[PARTY_SIZE]; extern u8 gEnemyPartyCount; diff --git a/include/pokemon_summary_screen.h b/include/pokemon_summary_screen.h index aee4c27be..e4be91f1f 100644 --- a/include/pokemon_summary_screen.h +++ b/include/pokemon_summary_screen.h @@ -3,8 +3,8 @@ #include "main.h" -extern const u8 * const gMoveDescriptionPointers[]; -extern const u8 * const gNatureNamePointers[]; +extern const u8 *const gMoveDescriptionPointers[]; +extern const u8 *const gNatureNamePointers[]; void ShowSelectMovePokemonSummaryScreen(struct Pokemon *, u8, u8, MainCallback, u16); u8 GetMoveSlotToReplace(void); diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index f459a9eb1..59e115ca3 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -41,7 +41,7 @@ static bool8 ShouldSwitchIfWonderGuard(void) if (gBattleMons[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)].ability == ABILITY_WONDER_GUARD) { // Check if Pokemon has a super effective move. - for (opposingBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT), i = 0; i < MAX_MON_MOVES; ++i) + for (opposingBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT), i = 0; i < MAX_MON_MOVES; i++) { move = gBattleMons[gActiveBattler].moves[i]; if (move == MOVE_NONE) @@ -51,7 +51,7 @@ static bool8 ShouldSwitchIfWonderGuard(void) return FALSE; } // Find a Pokemon in the party that has a super effective move. - for (i = 0; i < PARTY_SIZE; ++i) + for (i = 0; i < PARTY_SIZE; i++) { if (GetMonData(&gEnemyParty[i], MON_DATA_HP) == 0 || GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_NONE @@ -60,7 +60,7 @@ static bool8 ShouldSwitchIfWonderGuard(void) continue; GetMonData(&gEnemyParty[i], MON_DATA_SPECIES); // Unused return value. GetMonData(&gEnemyParty[i], MON_DATA_ABILITY_NUM); // Unused return value. - for (opposingBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT), j = 0; j < MAX_MON_MOVES; ++j) + for (opposingBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT), j = 0; j < MAX_MON_MOVES; j++) { move = GetMonData(&gEnemyParty[i], MON_DATA_MOVE1 + j); if (move == MOVE_NONE) @@ -114,7 +114,7 @@ static bool8 FindMonThatAbsorbsOpponentsMove(void) return FALSE; if (gBattleMons[gActiveBattler].ability == absorbingTypeAbility) return FALSE; - for (i = 0; i < PARTY_SIZE; ++i) + for (i = 0; i < PARTY_SIZE; i++) { u16 species; u8 monAbility; @@ -183,7 +183,7 @@ static bool8 HasSuperEffectiveMoveAgainstOpponents(bool8 noRng) opposingBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); if (!(gAbsentBattlerFlags & gBitTable[opposingBattler])) { - for (i = 0; i < MAX_MON_MOVES; ++i) + for (i = 0; i < MAX_MON_MOVES; i++) { move = gBattleMons[gActiveBattler].moves[i]; if (move == MOVE_NONE) @@ -202,7 +202,7 @@ static bool8 HasSuperEffectiveMoveAgainstOpponents(bool8 noRng) opposingBattler = GetBattlerAtPosition(BATTLE_PARTNER(B_POSITION_PLAYER_LEFT)); if (!(gAbsentBattlerFlags & gBitTable[opposingBattler])) { - for (i = 0; i < MAX_MON_MOVES; ++i) + for (i = 0; i < MAX_MON_MOVES; i++) { move = gBattleMons[gActiveBattler].moves[i]; if (move == MOVE_NONE) @@ -225,7 +225,7 @@ static bool8 AreStatsRaised(void) u8 buffedStatsValue = 0; s32 i; - for (i = 0; i < NUM_BATTLE_STATS; ++i) + for (i = 0; i < NUM_BATTLE_STATS; i++) { if (gBattleMons[gActiveBattler].statStages[i] > 6) buffedStatsValue += gBattleMons[gActiveBattler].statStages[i] - 6; @@ -259,7 +259,7 @@ static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent) battlerIn1 = gActiveBattler; battlerIn2 = gActiveBattler; } - for (i = 0; i < PARTY_SIZE; ++i) + for (i = 0; i < PARTY_SIZE; i++) { u16 species; u8 monAbility; @@ -281,7 +281,7 @@ static bool8 FindMonWithFlagsAndSuperEffective(u8 flags, u8 moduloPercent) if (moveFlags & flags) { battlerIn1 = gLastHitBy[gActiveBattler]; - for (j = 0; j < MAX_MON_MOVES; ++j) + for (j = 0; j < MAX_MON_MOVES; j++) { move = GetMonData(&gEnemyParty[i], MON_DATA_MOVE1 + j); if (move == MOVE_NONE) @@ -327,7 +327,7 @@ static bool8 ShouldSwitch(void) battlerIn2 = gActiveBattler; battlerIn1 = gActiveBattler; } - for (i = 0; i < PARTY_SIZE; ++i) + for (i = 0; i < PARTY_SIZE; i++) { if ((GetMonData(&gEnemyParty[i], MON_DATA_HP) == 0) || (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_NONE) @@ -461,7 +461,7 @@ u8 GetMostSuitableMonToSwitchInto(void) bestDmg = 0; bestMonId = 6; // Find the mon whose type is the most suitable offensively. - for (i = 0; i < PARTY_SIZE; ++i) + for (i = 0; i < PARTY_SIZE; i++) { u16 species = GetMonData(&gEnemyParty[i], MON_DATA_SPECIES); if (species != SPECIES_NONE @@ -491,7 +491,7 @@ u8 GetMostSuitableMonToSwitchInto(void) // Ok, we know the mon has the right typing but does it have at least one super effective move? if (bestMonId != PARTY_SIZE) { - for (i = 0; i < MAX_MON_MOVES; ++i) + for (i = 0; i < MAX_MON_MOVES; i++) { move = GetMonData(&gEnemyParty[bestMonId], MON_DATA_MOVE1 + i); if (move != MOVE_NONE && TypeCalc(move, gActiveBattler, opposingBattler) & MOVE_RESULT_SUPER_EFFECTIVE) @@ -515,7 +515,7 @@ u8 GetMostSuitableMonToSwitchInto(void) bestDmg = 0; bestMonId = 6; // If we couldn't find the best mon in terms of typing, find the one that deals most damage. - for (i = 0; i < PARTY_SIZE; ++i) + for (i = 0; i < PARTY_SIZE; i++) { if (((u16)(GetMonData(&gEnemyParty[i], MON_DATA_SPECIES)) == SPECIES_NONE) || (GetMonData(&gEnemyParty[i], MON_DATA_HP) == 0) @@ -524,7 +524,7 @@ u8 GetMostSuitableMonToSwitchInto(void) || (i == *(gBattleStruct->monToSwitchIntoId + battlerIn1)) || (i == *(gBattleStruct->monToSwitchIntoId + battlerIn2))) continue; - for (j = 0; j < MAX_MON_MOVES; ++j) + for (j = 0; j < MAX_MON_MOVES; j++) { move = GetMonData(&gEnemyParty[i], MON_DATA_MOVE1 + j); gBattleMoveDamage = 0; @@ -565,12 +565,12 @@ static bool8 ShouldUseItem(void) u8 validMons = 0; bool8 shouldUse = FALSE; - for (i = 0; i < PARTY_SIZE; ++i) + for (i = 0; i < PARTY_SIZE; i++) if (GetMonData(&gEnemyParty[i], MON_DATA_HP) != 0 && GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) != SPECIES_NONE && GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) != SPECIES_EGG) ++validMons; - for (i = 0; i < MAX_TRAINER_ITEMS; ++i) + for (i = 0; i < MAX_TRAINER_ITEMS; i++) { u16 item; const u8 *itemEffects; diff --git a/src/battle_anim_mons.c b/src/battle_anim_mons.c index fa59a20c9..b927bc460 100644 --- a/src/battle_anim_mons.c +++ b/src/battle_anim_mons.c @@ -9,13 +9,6 @@ #include "util.h" #include "constants/battle_anim.h" -#define GET_UNOWN_LETTER(personality) (( \ - (((personality & 0x03000000) >> 24) << 6) \ - | (((personality & 0x00030000) >> 16) << 4) \ - | (((personality & 0x00000300) >> 8) << 2) \ - | (((personality & 0x00000003) >> 0) << 0) \ -) % 28) - #define IS_DOUBLE_BATTLE() (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) static u8 GetBattlerSpriteFinal_Y(u8 battlerId, u16 species, bool8 a3); @@ -779,7 +772,7 @@ u8 GetBattlerAtPosition(u8 position) { u8 i; - for (i = 0; i < gBattlersCount; ++i) + for (i = 0; i < gBattlersCount; i++) if (gBattlerPositions[i] == position) break; return i; @@ -811,8 +804,8 @@ bool8 IsDoubleBattle(void) void GetBattleAnimBg1Data(struct BattleAnimBgData *animBgData) { - animBgData->bgTiles = gBattleAnimMons_BgTilesBuffer; - animBgData->bgTilemap = (u16 *)gBattleAnimMons_BgTilemapBuffer; + animBgData->bgTiles = gBattleAnimBgTileBuffer; + animBgData->bgTilemap = (u16 *)gBattleAnimBgTilemapBuffer; animBgData->paletteId = 8; animBgData->bgId = 1; animBgData->tilesOffset = 0x200; @@ -827,8 +820,8 @@ void GetBattleAnimBgData(struct BattleAnimBgData *animBgData, u32 bgId) } else { - animBgData->bgTiles = gBattleAnimMons_BgTilesBuffer; - animBgData->bgTilemap = (u16 *)gBattleAnimMons_BgTilemapBuffer; + animBgData->bgTiles = gBattleAnimBgTileBuffer; + animBgData->bgTilemap = (u16 *)gBattleAnimBgTilemapBuffer; animBgData->paletteId = 9; animBgData->bgId = 2; animBgData->tilesOffset = 0x300; @@ -838,8 +831,8 @@ void GetBattleAnimBgData(struct BattleAnimBgData *animBgData, u32 bgId) void GetBattleAnimBgDataByPriorityRank(struct BattleAnimBgData *animBgData, u8 unused) { - animBgData->bgTiles = gBattleAnimMons_BgTilesBuffer; - animBgData->bgTilemap = (u16 *)gBattleAnimMons_BgTilemapBuffer; + animBgData->bgTiles = gBattleAnimBgTileBuffer; + animBgData->bgTilemap = (u16 *)gBattleAnimBgTilemapBuffer; if (GetBattlerSpriteBGPriorityRank(gBattleAnimAttacker) == 1) { animBgData->paletteId = 8; @@ -869,9 +862,9 @@ void InitBattleAnimBg(u32 bgId) void AnimLoadCompressedBgGfx(u32 bgId, const u32 *src, u32 tilesOffset) { - CpuFill32(0, gBattleAnimMons_BgTilesBuffer, 0x2000); - LZDecompressWram(src, gBattleAnimMons_BgTilesBuffer); - LoadBgTiles(bgId, gBattleAnimMons_BgTilesBuffer, 0x2000, tilesOffset); + CpuFill32(0, gBattleAnimBgTileBuffer, 0x2000); + LZDecompressWram(src, gBattleAnimBgTileBuffer); + LoadBgTiles(bgId, gBattleAnimBgTileBuffer, 0x2000, tilesOffset); } void InitAnimBgTilemapBuffer(u32 bgId, const void *src) @@ -1225,7 +1218,7 @@ void SetGreyscaleOrOriginalPalette(u16 paletteNum, bool8 restoreOriginalColor) if (!restoreOriginalColor) { - for (i = 0; i < 16; ++i) + for (i = 0; i < 16; i++) { originalColor = (struct PlttData *)&gPlttBufferUnfaded[paletteNum + i]; average = originalColor->r + originalColor->g + originalColor->b; @@ -1453,7 +1446,7 @@ s16 CloneBattlerSpriteWithBlend(u8 animBattler) if (spriteId != 0xFF) { - for (i = 0; i < MAX_SPRITES; ++i) + for (i = 0; i < MAX_SPRITES; i++) { if (!gSprites[i].inUse) { @@ -1720,7 +1713,7 @@ static u16 GetBattlerYDeltaFromSpriteId(u8 spriteId) u16 species; u16 i; - for (i = 0; i < MAX_BATTLERS_COUNT; ++i) + for (i = 0; i < MAX_BATTLERS_COUNT; i++) { if (gBattlerSpriteIds[i] == spriteId) { @@ -1825,7 +1818,7 @@ void ResetSpritePriorityOfAllVisibleBattlers(void) { s32 i; - for (i = 0; i < gBattlersCount; ++i) + for (i = 0; i < gBattlersCount; i++) { if (IsBattlerSpriteVisible(i)) { diff --git a/src/battle_anim_utility_funcs.c b/src/battle_anim_utility_funcs.c index 184d21884..c0d3c7845 100644 --- a/src/battle_anim_utility_funcs.c +++ b/src/battle_anim_utility_funcs.c @@ -110,7 +110,7 @@ void AnimTask_BlendExcept(u8 taskId) animBattlers[0] = BATTLE_PARTNER(gBattleAnimTarget); break; } - for (battler = 0; battler < MAX_BATTLERS_COUNT; ++battler) + for (battler = 0; battler < MAX_BATTLERS_COUNT; battler++) { if (battler != animBattlers[0] && battler != animBattlers[1] @@ -392,7 +392,7 @@ void InitStatsChangeAnimation(u8 taskId) u8 i; sAnimStatsChangeData = AllocZeroed(sizeof(struct AnimStatsChangeData)); - for (i = 0; i < 8; ++i) + for (i = 0; i < 8; i++) sAnimStatsChangeData->data[i] = gBattleAnimArgs[i]; gTasks[taskId].func = StatsChangeAnimation_Step1; } @@ -612,7 +612,7 @@ static void sub_80BB6CC(u8 taskId) { task->data[1] = 0; --task->data[2]; - for (i = 0; i < 16; ++i) + for (i = 0; i < 16; i++) { if ((task->data[15] >> i) & 1) { @@ -652,7 +652,7 @@ void AnimTask_BlendNonAttackerPalettes(u8 taskId) s32 j; u32 battler, selectedPalettes = 0; - for (battler = 0; battler < MAX_BATTLERS_COUNT; ++battler) + for (battler = 0; battler < MAX_BATTLERS_COUNT; battler++) if (gBattleAnimAttacker != battler) selectedPalettes |= 1 << (battler + 16); for (j = 5; j != 0; --j) @@ -717,7 +717,7 @@ void AnimTask_SetAllNonAttackersInvisiblity(u8 taskId) { u16 battler; - for (battler = 0; battler < MAX_BATTLERS_COUNT; ++battler) + for (battler = 0; battler < MAX_BATTLERS_COUNT; battler++) if (battler != gBattleAnimAttacker && IsBattlerSpriteVisible(battler)) gSprites[gBattlerSpriteIds[battler]].invisible = gBattleAnimArgs[0]; DestroyAnimVisualTask(taskId); diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c index 839a230ad..3fcf7e99a 100644 --- a/src/battle_controller_link_opponent.c +++ b/src/battle_controller_link_opponent.c @@ -446,7 +446,7 @@ static void LinkOpponentHandleGetMonData(void) else { monToCheck = gBattleBufferA[gActiveBattler][2]; - for (i = 0; i < PARTY_SIZE; ++i) + for (i = 0; i < PARTY_SIZE; i++) { if (monToCheck & 1) size += CopyLinkOpponentMonData(i, monData + size); @@ -779,7 +779,7 @@ static void LinkOpponentHandleSetMonData(void) else { monToCheck = gBattleBufferA[gActiveBattler][2]; - for (i = 0; i < PARTY_SIZE; ++i) + for (i = 0; i < PARTY_SIZE; i++) { if (monToCheck & 1) SetLinkOpponentMonData(i); @@ -803,7 +803,7 @@ static void SetLinkOpponentMonData(u8 monId) SetMonData(&gEnemyParty[monId], MON_DATA_SPECIES, &battlePokemon->species); SetMonData(&gEnemyParty[monId], MON_DATA_HELD_ITEM, &battlePokemon->item); - for (i = 0; i < MAX_MON_MOVES; ++i) + for (i = 0; i < MAX_MON_MOVES; i++) { SetMonData(&gEnemyParty[monId], MON_DATA_MOVE1 + i, &battlePokemon->moves[i]); SetMonData(&gEnemyParty[monId], MON_DATA_PP1 + i, &battlePokemon->pp[i]); @@ -842,7 +842,7 @@ static void SetLinkOpponentMonData(u8 monId) SetMonData(&gEnemyParty[monId], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBattler][3]); break; case REQUEST_MOVES_PP_BATTLE: - for (i = 0; i < MAX_MON_MOVES; ++i) + for (i = 0; i < MAX_MON_MOVES; i++) { SetMonData(&gEnemyParty[monId], MON_DATA_MOVE1 + i, &moveData->moves[i]); SetMonData(&gEnemyParty[monId], MON_DATA_PP1 + i, &moveData->pp[i]); @@ -1010,7 +1010,7 @@ static void LinkOpponentHandleSetRawMonData(void) u8 *dst = (u8 *)&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]] + gBattleBufferA[gActiveBattler][1]; u8 i; - for (i = 0; i < gBattleBufferA[gActiveBattler][2]; ++i) + for (i = 0; i < gBattleBufferA[gActiveBattler][2]; i++) dst[i] = gBattleBufferA[gActiveBattler][3 + i]; LinkOpponentBufferExecCompleted(); } diff --git a/src/battle_controller_link_partner.c b/src/battle_controller_link_partner.c index 7dbfbde65..4c73b9535 100644 --- a/src/battle_controller_link_partner.c +++ b/src/battle_controller_link_partner.c @@ -401,7 +401,7 @@ static void LinkPartnerHandleGetMonData(void) else { monToCheck = gBattleBufferA[gActiveBattler][2]; - for (i = 0; i < PARTY_SIZE; ++i) + for (i = 0; i < PARTY_SIZE; i++) { if (monToCheck & 1) size += CopyLinkPartnerMonData(i, monData + size); @@ -734,7 +734,7 @@ static void LinkPartnerHandleSetMonData(void) else { monToCheck = gBattleBufferA[gActiveBattler][2]; - for (i = 0; i < PARTY_SIZE; ++i) + for (i = 0; i < PARTY_SIZE; i++) { if (monToCheck & 1) SetLinkPartnerMonData(i); @@ -758,7 +758,7 @@ static void SetLinkPartnerMonData(u8 monId) SetMonData(&gPlayerParty[monId], MON_DATA_SPECIES, &battlePokemon->species); SetMonData(&gPlayerParty[monId], MON_DATA_HELD_ITEM, &battlePokemon->item); - for (i = 0; i < MAX_MON_MOVES; ++i) + for (i = 0; i < MAX_MON_MOVES; i++) { SetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + i, &battlePokemon->moves[i]); SetMonData(&gPlayerParty[monId], MON_DATA_PP1 + i, &battlePokemon->pp[i]); @@ -797,7 +797,7 @@ static void SetLinkPartnerMonData(u8 monId) SetMonData(&gPlayerParty[monId], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBattler][3]); break; case REQUEST_MOVES_PP_BATTLE: - for (i = 0; i < MAX_MON_MOVES; ++i) + for (i = 0; i < MAX_MON_MOVES; i++) { SetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + i, &moveData->moves[i]); SetMonData(&gPlayerParty[monId], MON_DATA_PP1 + i, &moveData->pp[i]); @@ -966,7 +966,7 @@ static void LinkPartnerHandleSetRawMonData(void) u8 *dst = (u8 *)&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]] + gBattleBufferA[gActiveBattler][1]; u8 i; - for (i = 0; i < gBattleBufferA[gActiveBattler][2]; ++i) + for (i = 0; i < gBattleBufferA[gActiveBattler][2]; i++) dst[i] = gBattleBufferA[gActiveBattler][3 + i]; LinkPartnerBufferExecCompleted(); } diff --git a/src/battle_controller_oak_old_man.c b/src/battle_controller_oak_old_man.c index b2c8341ef..9be72e24d 100644 --- a/src/battle_controller_oak_old_man.c +++ b/src/battle_controller_oak_old_man.c @@ -980,7 +980,7 @@ static void OakOldManHandleGetMonData(void) else { monToCheck = gBattleBufferA[gActiveBattler][2]; - for (i = 0; i < PARTY_SIZE; ++i) + for (i = 0; i < PARTY_SIZE; i++) { if (monToCheck & 1) size += CopyOakOldManMonData(i, monData + size); @@ -1313,7 +1313,7 @@ static void OakOldManHandleSetMonData(void) else { monToCheck = gBattleBufferA[gActiveBattler][2]; - for (i = 0; i < PARTY_SIZE; ++i) + for (i = 0; i < PARTY_SIZE; i++) { if (monToCheck & 1) SetOakOldManMonData(i); @@ -1337,7 +1337,7 @@ static void SetOakOldManMonData(u8 monId) SetMonData(&gPlayerParty[monId], MON_DATA_SPECIES, &battlePokemon->species); SetMonData(&gPlayerParty[monId], MON_DATA_HELD_ITEM, &battlePokemon->item); - for (i = 0; i < MAX_MON_MOVES; ++i) + for (i = 0; i < MAX_MON_MOVES; i++) { SetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + i, &battlePokemon->moves[i]); SetMonData(&gPlayerParty[monId], MON_DATA_PP1 + i, &battlePokemon->pp[i]); @@ -1376,7 +1376,7 @@ static void SetOakOldManMonData(u8 monId) SetMonData(&gPlayerParty[monId], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBattler][3]); break; case REQUEST_MOVES_PP_BATTLE: - for (i = 0; i < MAX_MON_MOVES; ++i) + for (i = 0; i < MAX_MON_MOVES; i++) { SetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + i, &moveData->moves[i]); SetMonData(&gPlayerParty[monId], MON_DATA_PP1 + i, &moveData->pp[i]); @@ -1817,7 +1817,7 @@ static void OakOldManHandleChooseAction(void) gBattlerControllerFuncs[gActiveBattler] = HandleChooseActionAfterDma3; BattlePutTextOnWindow(gText_EmptyString3, B_WIN_MSG); BattlePutTextOnWindow(gText_BattleMenu, B_WIN_ACTION_MENU); - for (i = 0; i < MAX_MON_MOVES; ++i) + for (i = 0; i < MAX_MON_MOVES; i++) ActionSelectionDestroyCursorAt((u8)i); ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0); if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE) @@ -1877,7 +1877,7 @@ static void OakOldManHandleChooseItem(void) BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK); gBattlerControllerFuncs[gActiveBattler] = OpenBagAndChooseItem; gBattlerInMenuId = gActiveBattler; - for (i = 0; i < 3; ++i) + for (i = 0; i < 3; i++) gBattlePartyCurrentOrder[i] = gBattleBufferA[gActiveBattler][i + 1]; } @@ -1890,7 +1890,7 @@ static void OakOldManHandleChoosePokemon(void) *(&gBattleStruct->battlerPreventingSwitchout) = gBattleBufferA[gActiveBattler][1] >> 4; *(&gBattleStruct->playerPartyIdx) = gBattleBufferA[gActiveBattler][2]; *(&gBattleStruct->abilityPreventingSwitchout) = gBattleBufferA[gActiveBattler][3]; - for (i = 0; i < 3; ++i) + for (i = 0; i < 3; i++) gBattlePartyCurrentOrder[i] = gBattleBufferA[gActiveBattler][4 + i]; BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK); gBattlerControllerFuncs[gActiveBattler] = OpenPartyMenuToChooseMon; diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c index 3aa20e0f3..a0acd0eb5 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -440,7 +440,7 @@ static void OpponentHandleGetMonData(void) else { monToCheck = gBattleBufferA[gActiveBattler][2]; - for (i = 0; i < PARTY_SIZE; ++i) + for (i = 0; i < PARTY_SIZE; i++) { if (monToCheck & 1) size += GetOpponentMonData(i, monData + size); @@ -763,7 +763,7 @@ static void OpponentHandleGetRawMonData(void) u8 *dst = (u8 *)&battleMon + gBattleBufferA[gActiveBattler][1]; u8 i; - for (i = 0; i < gBattleBufferA[gActiveBattler][2]; ++i) + for (i = 0; i < gBattleBufferA[gActiveBattler][2]; i++) dst[i] = src[i]; BtlController_EmitDataTransfer(1, gBattleBufferA[gActiveBattler][2], dst); OpponentBufferExecCompleted(); @@ -781,7 +781,7 @@ static void OpponentHandleSetMonData(void) else { monToCheck = gBattleBufferA[gActiveBattler][2]; - for (i = 0; i < PARTY_SIZE; ++i) + for (i = 0; i < PARTY_SIZE; i++) { if (monToCheck & 1) SetOpponentMonData(i); @@ -805,7 +805,7 @@ static void SetOpponentMonData(u8 monId) SetMonData(&gEnemyParty[monId], MON_DATA_SPECIES, &battlePokemon->species); SetMonData(&gEnemyParty[monId], MON_DATA_HELD_ITEM, &battlePokemon->item); - for (i = 0; i < MAX_MON_MOVES; ++i) + for (i = 0; i < MAX_MON_MOVES; i++) { SetMonData(&gEnemyParty[monId], MON_DATA_MOVE1 + i, &battlePokemon->moves[i]); SetMonData(&gEnemyParty[monId], MON_DATA_PP1 + i, &battlePokemon->pp[i]); @@ -844,7 +844,7 @@ static void SetOpponentMonData(u8 monId) SetMonData(&gEnemyParty[monId], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBattler][3]); break; case REQUEST_MOVES_PP_BATTLE: - for (i = 0; i < MAX_MON_MOVES; ++i) + for (i = 0; i < MAX_MON_MOVES; i++) { SetMonData(&gEnemyParty[monId], MON_DATA_MOVE1 + i, &moveData->moves[i]); SetMonData(&gEnemyParty[monId], MON_DATA_PP1 + i, &moveData->pp[i]); @@ -1012,7 +1012,7 @@ static void OpponentHandleSetRawMonData(void) u8 *dst = (u8 *)&gEnemyParty[gBattlerPartyIndexes[gActiveBattler]] + gBattleBufferA[gActiveBattler][1]; u8 i; - for (i = 0; i < gBattleBufferA[gActiveBattler][2]; ++i) + for (i = 0; i < gBattleBufferA[gActiveBattler][2]; i++) dst[i] = gBattleBufferA[gActiveBattler][3 + i]; OpponentBufferExecCompleted(); } diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 16c812fb0..8092fdab6 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -337,7 +337,7 @@ static void HandleInputChooseTarget(void) if (JOY_NEW(A_BUTTON)) { PlaySE(SE_SELECT); - gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCb_HideAsMoveTarget; + gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCB_HideAsMoveTarget; BtlController_EmitTwoReturnValues(1, 10, gMoveSelectionCursor[gActiveBattler] | (gMultiUsePlayerCursor << 8)); EndBounceEffect(gMultiUsePlayerCursor, BOUNCE_HEALTHBOX); PlayerBufferExecCompleted(); @@ -345,7 +345,7 @@ static void HandleInputChooseTarget(void) else if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); - gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCb_HideAsMoveTarget; + gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCB_HideAsMoveTarget; gBattlerControllerFuncs[gActiveBattler] = HandleInputChooseMove; DoBounceEffect(gActiveBattler, BOUNCE_HEALTHBOX, 7, 1); DoBounceEffect(gActiveBattler, BOUNCE_MON, 7, 1); @@ -354,13 +354,13 @@ static void HandleInputChooseTarget(void) else if (JOY_NEW(DPAD_LEFT | DPAD_UP)) { PlaySE(SE_SELECT); - gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCb_HideAsMoveTarget; + gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCB_HideAsMoveTarget; do { u8 currSelIdentity = GetBattlerPosition(gMultiUsePlayerCursor); - for (i = 0; i < MAX_BATTLERS_COUNT; ++i) + for (i = 0; i < MAX_BATTLERS_COUNT; i++) if (currSelIdentity == identities[i]) break; do @@ -389,18 +389,18 @@ static void HandleInputChooseTarget(void) i = 0; } while (i == 0); - gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCb_ShowAsMoveTarget; + gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCB_ShowAsMoveTarget; } else if (JOY_NEW(DPAD_RIGHT | DPAD_DOWN)) { PlaySE(SE_SELECT); - gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCb_HideAsMoveTarget; + gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCB_HideAsMoveTarget; do { u8 currSelIdentity = GetBattlerPosition(gMultiUsePlayerCursor); - for (i = 0; i < MAX_BATTLERS_COUNT; ++i) + for (i = 0; i < MAX_BATTLERS_COUNT; i++) if (currSelIdentity == identities[i]) break; do @@ -429,7 +429,7 @@ static void HandleInputChooseTarget(void) i = 0; } while (i == 0); - gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCb_ShowAsMoveTarget; + gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCB_ShowAsMoveTarget; } } @@ -496,7 +496,7 @@ void HandleInputChooseMove(void) gMultiUsePlayerCursor = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT); else gMultiUsePlayerCursor = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); - gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCb_ShowAsMoveTarget; + gSprites[gBattlerSpriteIds[gMultiUsePlayerCursor]].callback = SpriteCB_ShowAsMoveTarget; } } else if (JOY_NEW(B_BUTTON)) @@ -658,31 +658,31 @@ static void HandleMoveSwitching(void) gDisableStructs[gActiveBattler].mimickedMoves |= gBitTable[gMultiUsePlayerCursor]; } MoveSelectionDisplayMoveNames(); - for (i = 0; i < MAX_MON_MOVES; ++i) + for (i = 0; i < MAX_MON_MOVES; i++) perMovePPBonuses[i] = (gBattleMons[gActiveBattler].ppBonuses & (3 << (i * 2))) >> (i * 2); totalPPBonuses = perMovePPBonuses[gMoveSelectionCursor[gActiveBattler]]; perMovePPBonuses[gMoveSelectionCursor[gActiveBattler]] = perMovePPBonuses[gMultiUsePlayerCursor]; perMovePPBonuses[gMultiUsePlayerCursor] = totalPPBonuses; totalPPBonuses = 0; - for (i = 0; i < MAX_MON_MOVES; ++i) + for (i = 0; i < MAX_MON_MOVES; i++) totalPPBonuses |= perMovePPBonuses[i] << (i * 2); gBattleMons[gActiveBattler].ppBonuses = totalPPBonuses; - for (i = 0; i < MAX_MON_MOVES; ++i) + for (i = 0; i < MAX_MON_MOVES; i++) { gBattleMons[gActiveBattler].moves[i] = moveInfo->moves[i]; gBattleMons[gActiveBattler].pp[i] = moveInfo->currentPp[i]; } if (!(gBattleMons[gActiveBattler].status2 & STATUS2_TRANSFORMED)) { - for (i = 0; i < MAX_MON_MOVES; ++i) + for (i = 0; i < MAX_MON_MOVES; i++) { moveStruct.moves[i] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MOVE1 + i); moveStruct.currentPp[i] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_PP1 + i); } totalPPBonuses = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_PP_BONUSES); - for (i = 0; i < MAX_MON_MOVES; ++i) + for (i = 0; i < MAX_MON_MOVES; i++) perMovePPBonuses[i] = (totalPPBonuses & (3 << (i * 2))) >> (i * 2); i = moveStruct.moves[gMoveSelectionCursor[gActiveBattler]]; moveStruct.moves[gMoveSelectionCursor[gActiveBattler]] = moveStruct.moves[gMultiUsePlayerCursor]; @@ -694,9 +694,9 @@ static void HandleMoveSwitching(void) perMovePPBonuses[gMoveSelectionCursor[gActiveBattler]] = perMovePPBonuses[gMultiUsePlayerCursor]; perMovePPBonuses[gMultiUsePlayerCursor] = totalPPBonuses; totalPPBonuses = 0; - for (i = 0; i < MAX_MON_MOVES; ++i) + for (i = 0; i < MAX_MON_MOVES; i++) totalPPBonuses |= perMovePPBonuses[i] << (i * 2); - for (i = 0; i < MAX_MON_MOVES; ++i) + for (i = 0; i < MAX_MON_MOVES; i++) { SetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MOVE1 + i, &moveStruct.moves[i]); SetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_PP1 + i, &moveStruct.currentPp[i]); @@ -1366,7 +1366,7 @@ static void MoveSelectionDisplayMoveNames(void) struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct *)(&gBattleBufferA[gActiveBattler][4]); gNumberOfMovesToChoose = 0; - for (i = 0; i < MAX_MON_MOVES; ++i) + for (i = 0; i < MAX_MON_MOVES; i++) { MoveSelectionDestroyCursorAt(i); StringCopy(gDisplayedStringBattle, gUnknown_83FE770); @@ -1498,7 +1498,7 @@ static void PlayerHandleGetMonData(void) else { monToCheck = gBattleBufferA[gActiveBattler][2]; - for (i = 0; i < PARTY_SIZE; ++i) + for (i = 0; i < PARTY_SIZE; i++) { if (monToCheck & 1) size += CopyPlayerMonData(i, monData + size); @@ -1821,7 +1821,7 @@ void PlayerHandleGetRawMonData(void) u8 *dst = (u8 *)&battleMon + gBattleBufferA[gActiveBattler][1]; u8 i; - for (i = 0; i < gBattleBufferA[gActiveBattler][2]; ++i) + for (i = 0; i < gBattleBufferA[gActiveBattler][2]; i++) dst[i] = src[i]; BtlController_EmitDataTransfer(1, gBattleBufferA[gActiveBattler][2], dst); @@ -1840,7 +1840,7 @@ static void PlayerHandleSetMonData(void) else { monToCheck = gBattleBufferA[gActiveBattler][2]; - for (i = 0; i < PARTY_SIZE; ++i) + for (i = 0; i < PARTY_SIZE; i++) { if (monToCheck & 1) SetPlayerMonData(i); @@ -1864,7 +1864,7 @@ static void SetPlayerMonData(u8 monId) SetMonData(&gPlayerParty[monId], MON_DATA_SPECIES, &battlePokemon->species); SetMonData(&gPlayerParty[monId], MON_DATA_HELD_ITEM, &battlePokemon->item); - for (i = 0; i < MAX_MON_MOVES; ++i) + for (i = 0; i < MAX_MON_MOVES; i++) { SetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + i, &battlePokemon->moves[i]); SetMonData(&gPlayerParty[monId], MON_DATA_PP1 + i, &battlePokemon->pp[i]); @@ -1903,7 +1903,7 @@ static void SetPlayerMonData(u8 monId) SetMonData(&gPlayerParty[monId], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBattler][3]); break; case REQUEST_MOVES_PP_BATTLE: - for (i = 0; i < MAX_MON_MOVES; ++i) + for (i = 0; i < MAX_MON_MOVES; i++) { SetMonData(&gPlayerParty[monId], MON_DATA_MOVE1 + i, &moveData->moves[i]); SetMonData(&gPlayerParty[monId], MON_DATA_PP1 + i, &moveData->pp[i]); @@ -2072,7 +2072,7 @@ static void PlayerHandleSetRawMonData(void) u8 *dst = (u8 *)&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]] + gBattleBufferA[gActiveBattler][1]; u8 i; - for (i = 0; i < gBattleBufferA[gActiveBattler][2]; ++i) + for (i = 0; i < gBattleBufferA[gActiveBattler][2]; i++) dst[i] = gBattleBufferA[gActiveBattler][3 + i]; PlayerBufferExecCompleted(); } @@ -2409,7 +2409,7 @@ static void PlayerHandleChooseAction(void) gBattlerControllerFuncs[gActiveBattler] = HandleChooseActionAfterDma3; BattlePutTextOnWindow(gText_EmptyString3, B_WIN_MSG); BattlePutTextOnWindow(gText_BattleMenu, B_WIN_ACTION_MENU); - for (i = 0; i < 4; ++i) + for (i = 0; i < 4; i++) ActionSelectionDestroyCursorAt(i); ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0); BattleStringExpandPlaceholdersToDisplayedString(gText_WhatWillPkmnDo); @@ -2453,7 +2453,7 @@ static void PlayerHandleChooseItem(void) BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK); gBattlerControllerFuncs[gActiveBattler] = OpenBagAndChooseItem; gBattlerInMenuId = gActiveBattler; - for (i = 0; i < 3; ++i) + for (i = 0; i < 3; i++) gBattlePartyCurrentOrder[i] = gBattleBufferA[gActiveBattler][1 + i]; } @@ -2466,7 +2466,7 @@ static void PlayerHandleChoosePokemon(void) *(&gBattleStruct->battlerPreventingSwitchout) = gBattleBufferA[gActiveBattler][1] >> 4; *(&gBattleStruct->playerPartyIdx) = gBattleBufferA[gActiveBattler][2]; *(&gBattleStruct->abilityPreventingSwitchout) = gBattleBufferA[gActiveBattler][3]; - for (i = 0; i < 3; ++i) + for (i = 0; i < 3; i++) gBattlePartyCurrentOrder[i] = gBattleBufferA[gActiveBattler][4 + i]; BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK); gBattlerControllerFuncs[gActiveBattler] = OpenPartyMenuToChooseMon; diff --git a/src/battle_controller_pokedude.c b/src/battle_controller_pokedude.c index 9f27cd1c3..d5f1dbdc2 100644 --- a/src/battle_controller_pokedude.c +++ b/src/battle_controller_pokedude.c @@ -723,7 +723,7 @@ static void PokedudeHandleGetMonData(void) else { monToCheck = gBattleBufferA[gActiveBattler][2]; - for (i = 0; i < PARTY_SIZE; ++i) + for (i = 0; i < PARTY_SIZE; i++) { if (monToCheck & 1) size += CopyPokedudeMonData(i, monData + size); @@ -1061,7 +1061,7 @@ static void PokedudeHandleSetMonData(void) else { monToCheck = gBattleBufferA[gActiveBattler][2]; - for (i = 0; i < PARTY_SIZE; ++i) + for (i = 0; i < PARTY_SIZE; i++) { if (monToCheck & 1) SetPokedudeMonData(i); @@ -1090,7 +1090,7 @@ static void SetPokedudeMonData(u8 monId) SetMonData(mon, MON_DATA_SPECIES, &battlePokemon->species); SetMonData(mon, MON_DATA_HELD_ITEM, &battlePokemon->item); - for (i = 0; i < MAX_MON_MOVES; ++i) + for (i = 0; i < MAX_MON_MOVES; i++) { SetMonData(mon, MON_DATA_MOVE1 + i, &battlePokemon->moves[i]); SetMonData(mon, MON_DATA_PP1 + i, &battlePokemon->pp[i]); @@ -1129,7 +1129,7 @@ static void SetPokedudeMonData(u8 monId) SetMonData(mon, MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBattler][3]); break; case REQUEST_MOVES_PP_BATTLE: - for (i = 0; i < MAX_MON_MOVES; ++i) + for (i = 0; i < MAX_MON_MOVES; i++) { SetMonData(mon, MON_DATA_MOVE1 + i, &moveData->moves[i]); SetMonData(mon, MON_DATA_PP1 + i, &moveData->pp[i]); @@ -1566,7 +1566,7 @@ static void PokedudeHandleChooseAction(void) gBattlerControllerFuncs[gActiveBattler] = HandleChooseActionAfterDma3; BattlePutTextOnWindow(gText_EmptyString3, B_WIN_MSG); BattlePutTextOnWindow(gText_BattleMenu, B_WIN_ACTION_MENU); - for (i = 0; i < MAX_MON_MOVES; ++i) + for (i = 0; i < MAX_MON_MOVES; i++) ActionSelectionDestroyCursorAt((u8)i); ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0); BattleStringExpandPlaceholdersToDisplayedString(gText_WhatWillPkmnDo); @@ -1613,7 +1613,7 @@ static void PokedudeHandleChooseItem(void) BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK); gBattlerControllerFuncs[gActiveBattler] = OpenBagAndChooseItem; gBattlerInMenuId = gActiveBattler; - for (i = 0; i < 3; ++i) + for (i = 0; i < 3; i++) gBattlePartyCurrentOrder[i] = gBattleBufferA[gActiveBattler][i + 1]; } @@ -1626,7 +1626,7 @@ static void PokedudeHandleChoosePokemon(void) *(&gBattleStruct->battlerPreventingSwitchout) = gBattleBufferA[gActiveBattler][1] >> 4; *(&gBattleStruct->playerPartyIdx) = gBattleBufferA[gActiveBattler][2]; *(&gBattleStruct->abilityPreventingSwitchout) = gBattleBufferA[gActiveBattler][3]; - for (i = 0; i < 3; ++i) + for (i = 0; i < 3; i++) gBattlePartyCurrentOrder[i] = gBattleBufferA[gActiveBattler][4 + i]; BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK); gBattlerControllerFuncs[gActiveBattler] = OpenPartyMenuToChooseMon; @@ -2693,7 +2693,7 @@ void InitPokedudePartyAndOpponent(void) else mon = &gEnemyParty[opIdx++]; CreateMonWithGenderNatureLetter(mon, data[i].species, data[i].level, 0, data[i].gender, data[i].nature, 0); - for (j = 0; j < 4; ++j) + for (j = 0; j < 4; j++) SetMonMoveSlot(mon, data[i].moves[j], j); } while (data[++i].side != 0xFF); } diff --git a/src/battle_controller_safari.c b/src/battle_controller_safari.c index 6e7b1ee9a..ac322b6a4 100644 --- a/src/battle_controller_safari.c +++ b/src/battle_controller_safari.c @@ -440,7 +440,7 @@ static void SafariHandleChooseAction(void) gBattlerControllerFuncs[gActiveBattler] = HandleChooseActionAfterDma3; BattlePutTextOnWindow(gText_EmptyString3, B_WIN_MSG); BattlePutTextOnWindow(gUnknown_83FE747, B_WIN_ACTION_MENU); - for (i = 0; i < 4; ++i) + for (i = 0; i < 4; i++) ActionSelectionDestroyCursorAt(i); ActionSelectionCreateCursorAt(gActionSelectionCursor[gActiveBattler], 0); BattleStringExpandPlaceholdersToDisplayedString(gText_WhatWillPlayerThrow); diff --git a/src/battle_controllers.c b/src/battle_controllers.c index f259903e7..3183847f3 100644 --- a/src/battle_controllers.c +++ b/src/battle_controllers.c @@ -46,7 +46,7 @@ void SetUpBattleVars(void) s32 i; gBattleMainFunc = BattleDummy; - for (i = 0; i < MAX_BATTLERS_COUNT; ++i) + for (i = 0; i < MAX_BATTLERS_COUNT; i++) { gBattlerControllerFuncs[i] = PlayerDummy; gBattlerPositions[i] = 0xFF; @@ -72,7 +72,7 @@ void InitBtlControllers(void) InitSinglePlayerBtlControllers(); SetBattlePartyIds(); if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI)) - for (i = 0; i < gBattlersCount; ++i) + for (i = 0; i < gBattlersCount; i++) BufferBattlePartyCurrentOrderBySide(i, 0); } @@ -191,7 +191,7 @@ static void InitLinkBtlControllers(void) multiplayerId = GetMultiplayerId(); if (gBattleTypeFlags & BATTLE_TYPE_IS_MASTER) gBattleMainFunc = BeginBattleIntro; - for (i = 0; i < MAX_BATTLERS_COUNT; ++i) + for (i = 0; i < MAX_BATTLERS_COUNT; i++) { switch (gLinkPlayers[i].id) { @@ -269,9 +269,9 @@ static void SetBattlePartyIds(void) if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI)) { - for (i = 0; i < gBattlersCount; ++i) + for (i = 0; i < gBattlersCount; i++) { - for (j = 0; j < PARTY_SIZE; ++j) + for (j = 0; j < PARTY_SIZE; j++) { if (i < 2) { @@ -401,7 +401,7 @@ void PrepareBufferDataTransferLink(u8 bufferId, u16 size, u8 *data) gLinkBattleSendBuffer[gTasks[sLinkSendTaskId].data[14] + LINK_BUFF_SIZE_HI] = (alignedSize & 0x0000FF00) >> 8; gLinkBattleSendBuffer[gTasks[sLinkSendTaskId].data[14] + LINK_BUFF_ABSENT_BATTLER_FLAGS] = gAbsentBattlerFlags; gLinkBattleSendBuffer[gTasks[sLinkSendTaskId].data[14] + LINK_BUFF_EFFECT_BATTLER] = gEffectBattler; - for (i = 0; i < size; ++i) + for (i = 0; i < size; i++) gLinkBattleSendBuffer[gTasks[sLinkSendTaskId].data[14] + LINK_BUFF_DATA + i] = data[i]; gTasks[sLinkSendTaskId].data[14] = gTasks[sLinkSendTaskId].data[14] + alignedSize + LINK_BUFF_DATA; } @@ -490,7 +490,7 @@ void TryReceiveLinkBattleData(void) if (gReceivedRemoteLinkPlayers && (gBattleTypeFlags & BATTLE_TYPE_LINK_IN_BATTLE) && (gLinkPlayers[0].linkType == 0x2211)) { LinkRfu_DestroyIdleTask(); - for (i = 0; i < GetLinkPlayerCount(); ++i) + for (i = 0; i < GetLinkPlayerCount(); i++) { if (GetBlockReceivedStatus() & gBitTable[i]) { @@ -507,7 +507,7 @@ void TryReceiveLinkBattleData(void) } dest = &gLinkBattleRecvBuffer[gTasks[sLinkReceiveTaskId].data[14]]; src = recvBuffer; - for (j = 0; j < r6 + 8; ++j) + for (j = 0; j < r6 + 8; j++) dest[j] = src[j]; gTasks[sLinkReceiveTaskId].data[14] = gTasks[sLinkReceiveTaskId].data[14] + r6 + 8; } @@ -585,7 +585,7 @@ void BtlController_EmitSetMonData(u8 bufferId, u8 requestId, u8 monToCheck, u8 b sBattleBuffersTransferData[0] = CONTROLLER_SETMONDATA; sBattleBuffersTransferData[1] = requestId; sBattleBuffersTransferData[2] = monToCheck; - for (i = 0; i < bytes; ++i) + for (i = 0; i < bytes; i++) sBattleBuffersTransferData[3 + i] = *(u8 *)(data++); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 3 + bytes); } @@ -598,7 +598,7 @@ static void BtlController_EmitSetRawMonData(u8 bufferId, u8 monId, u8 bytes, voi sBattleBuffersTransferData[0] = CONTROLLER_SETRAWMONDATA; sBattleBuffersTransferData[1] = monId; sBattleBuffersTransferData[2] = bytes; - for (i = 0; i < bytes; ++i) + for (i = 0; i < bytes; i++) sBattleBuffersTransferData[3 + i] = *(u8 *)(data++); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, bytes + 3); } @@ -698,7 +698,7 @@ static void BtlController_EmitPause(u8 bufferId, u8 toWait, void *data) sBattleBuffersTransferData[0] = CONTROLLER_PAUSE; sBattleBuffersTransferData[1] = toWait; - for (i = 0; i < toWait * 3; ++i) + for (i = 0; i < toWait * 3; i++) sBattleBuffersTransferData[2 + i] = *(u8 *)(data++); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, toWait * 3 + 2); } @@ -752,9 +752,9 @@ void BtlController_EmitPrintString(u8 bufferId, u16 stringID) stringInfo->hpScale = gBattleStruct->hpScale; stringInfo->itemEffectBattler = gPotentialItemEffectBattler; stringInfo->moveType = gBattleMoves[gCurrentMove].type; - for (i = 0; i < MAX_BATTLERS_COUNT; ++i) + for (i = 0; i < MAX_BATTLERS_COUNT; i++) stringInfo->abilities[i] = gBattleMons[i].ability; - for (i = 0; i < TEXT_BUFF_ARRAY_COUNT; ++i) + for (i = 0; i < TEXT_BUFF_ARRAY_COUNT; i++) { stringInfo->textBuffs[0][i] = gBattleTextBuff1[i]; stringInfo->textBuffs[1][i] = gBattleTextBuff2[i]; @@ -779,9 +779,9 @@ void BtlController_EmitPrintSelectionString(u8 bufferId, u16 stringID) stringInfo->lastAbility = gLastUsedAbility; stringInfo->scrActive = gBattleScripting.battler; stringInfo->bakScriptPartyIdx = gBattleStruct->scriptPartyIdx; - for (i = 0; i < MAX_BATTLERS_COUNT; ++i) + for (i = 0; i < MAX_BATTLERS_COUNT; i++) stringInfo->abilities[i] = gBattleMons[i].ability; - for (i = 0; i < TEXT_BUFF_ARRAY_COUNT; ++i) + for (i = 0; i < TEXT_BUFF_ARRAY_COUNT; i++) { stringInfo->textBuffs[0][i] = gBattleTextBuff1[i]; stringInfo->textBuffs[1][i] = gBattleTextBuff2[i]; @@ -815,7 +815,7 @@ void BtlController_EmitChooseMove(u8 bufferId, bool8 isDoubleBattle, bool8 NoPpN sBattleBuffersTransferData[1] = isDoubleBattle; sBattleBuffersTransferData[2] = NoPpNumber; sBattleBuffersTransferData[3] = 0; - for (i = 0; i < sizeof(*movePpData); ++i) + for (i = 0; i < sizeof(*movePpData); i++) sBattleBuffersTransferData[4 + i] = *((u8 *)(movePpData) + i); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, sizeof(*movePpData) + 4); } @@ -825,7 +825,7 @@ void BtlController_EmitChooseItem(u8 bufferId, u8 *arg1) s32 i; sBattleBuffersTransferData[0] = CONTROLLER_OPENBAG; - for (i = 0; i < 3; ++i) + for (i = 0; i < 3; i++) sBattleBuffersTransferData[1 + i] = arg1[i]; PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); } @@ -838,7 +838,7 @@ void BtlController_EmitChoosePokemon(u8 bufferId, u8 caseId, u8 arg2, u8 ability sBattleBuffersTransferData[1] = caseId; sBattleBuffersTransferData[2] = arg2; sBattleBuffersTransferData[3] = abilityId; - for (i = 0; i < 3; ++i) + for (i = 0; i < 3; i++) sBattleBuffersTransferData[4 + i] = arg4[i]; PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 8); // Only 7 bytes were written. } @@ -912,7 +912,7 @@ void BtlController_EmitDataTransfer(u8 bufferId, u16 size, void *data) sBattleBuffersTransferData[1] = CONTROLLER_DATATRANSFER; sBattleBuffersTransferData[2] = size; sBattleBuffersTransferData[3] = (size & 0xFF00) >> 8; - for (i = 0; i < size; ++i) + for (i = 0; i < size; i++) sBattleBuffersTransferData[4 + i] = *(u8 *)(data++); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, size + 4); } @@ -929,7 +929,7 @@ static void BtlController_EmitDMA3Transfer(u8 bufferId, void *dst, u16 size, voi sBattleBuffersTransferData[4] = ((u32)(dst) & 0xFF000000) >> 24; sBattleBuffersTransferData[5] = size; sBattleBuffersTransferData[6] = (size & 0xFF00) >> 8; - for (i = 0; i < size; ++i) + for (i = 0; i < size; i++) sBattleBuffersTransferData[7 + i] = *(u8 *)(data++); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, size + 7); } @@ -945,7 +945,7 @@ static void BtlController_EmitPlayBGM(u8 bufferId, u16 songId, void *data) // Nonsense loop using songId as a size // Would go out of bounds for any song id after SE_DEOXYS_MOVE (253) - for (i = 0; i < songId; ++i) + for (i = 0; i < songId; i++) sBattleBuffersTransferData[3 + i] = *(u8 *)(data++); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, songId + 3); } @@ -958,7 +958,7 @@ static void BtlController_EmitCmd32(u8 bufferId, u16 size, void *data) sBattleBuffersTransferData[0] = CONTROLLER_32; sBattleBuffersTransferData[1] = size; sBattleBuffersTransferData[2] = (size & 0xFF00) >> 8; - for (i = 0; i < size; ++i) + for (i = 0; i < size; i++) sBattleBuffersTransferData[3 + i] = *(u8 *)(data++); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, size + 3); } @@ -978,7 +978,7 @@ void BtlController_EmitChosenMonReturnValue(u8 bufferId, u8 b, u8 *c) sBattleBuffersTransferData[0] = CONTROLLER_CHOSENMONRETURNVALUE; sBattleBuffersTransferData[1] = b; - for (i = 0; i < 3; ++i) + for (i = 0; i < 3; i++) sBattleBuffersTransferData[2 + i] = c[i]; PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 5); } @@ -1100,15 +1100,15 @@ void BtlController_EmitIntroTrainerBallThrow(u8 bufferId) PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, 4); } -void BtlController_EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus* hpAndStatus, u8 param) +void BtlController_EmitDrawPartyStatusSummary(u8 bufferId, struct HpAndStatus* hpAndStatus, u8 flags) { s32 i; sBattleBuffersTransferData[0] = CONTROLLER_DRAWPARTYSTATUSSUMMARY; - sBattleBuffersTransferData[1] = param & 0x7F; - sBattleBuffersTransferData[2] = (param & 0x80) >> 7; + sBattleBuffersTransferData[1] = flags & ~PARTY_SUMM_SKIP_DRAW_DELAY; // If true, skip player side + sBattleBuffersTransferData[2] = (flags & PARTY_SUMM_SKIP_DRAW_DELAY) >> 7; // If true, skip delay after drawing. True during intro sBattleBuffersTransferData[3] = CONTROLLER_DRAWPARTYSTATUSSUMMARY; - for (i = 0; i < (s32)(sizeof(struct HpAndStatus) * PARTY_SIZE); ++i) + for (i = 0; i < (s32)(sizeof(struct HpAndStatus) * PARTY_SIZE); i++) sBattleBuffersTransferData[4 + i] = *(i + (u8 *)(hpAndStatus)); PrepareBufferDataTransfer(bufferId, sBattleBuffersTransferData, sizeof(struct HpAndStatus) * PARTY_SIZE + 4); } diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c index 88334ba9c..1c8648a56 100644 --- a/src/battle_gfx_sfx_util.c +++ b/src/battle_gfx_sfx_util.c @@ -140,7 +140,7 @@ void SpriteCB_WaitForBattlerBallReleaseAnim(struct Sprite *sprite) gSprites[spriteId].animPaused = 0; else if (gSprites[spriteId].animEnded) { - gSprites[spriteId].callback = SpriteCB_SetToDummy3; + gSprites[spriteId].callback = SetIdleSpriteCallback; StartSpriteAffineAnim(&gSprites[spriteId], 0); sprite->callback = SpriteCallbackDummy; } @@ -484,7 +484,7 @@ static void BattleLoadAllHealthBoxesGfxAtOnce(void) LoadCompressedSpriteSheetUsingHeap(&sSpriteSheets_DoublesOpponentHealthbox[1]); numberOfBattlers = MAX_BATTLERS_COUNT; } - for (i = 0; i < numberOfBattlers; ++i) + for (i = 0; i < numberOfBattlers; i++) LoadCompressedSpriteSheetUsingHeap(&sSpriteSheets_HealthBar[gBattlerPositions[i]]); } @@ -641,7 +641,7 @@ void CopyAllBattleSpritesInvisibilities(void) { s32 i; - for (i = 0; i < gBattlersCount; ++i) + for (i = 0; i < gBattlersCount; i++) gBattleSpritesDataPtr->battlerData[i].invisible = gSprites[gBattlerSpriteIds[i]].invisible; } @@ -766,7 +766,7 @@ void BattleLoadSubstituteOrMonSpriteGfx(u8 battlerId, bool8 loadMonSprite) LZDecompressVram(gSubstituteDollGfx, gMonSpritesGfxPtr->sprites[position]); else LZDecompressVram(gSubstituteDollTilemap, gMonSpritesGfxPtr->sprites[position]); - for (i = 1; i < 4; ++i) + for (i = 1; i < 4; i++) { u8 (*ptr)[4][0x800] = gMonSpritesGfxPtr->sprites[position]; @@ -870,7 +870,7 @@ void SetBattlerSpriteAffineMode(u8 affineMode) { s32 i; - for (i = 0; i < gBattlersCount; ++i) + for (i = 0; i < gBattlersCount; i++) { if (IsBattlerSpritePresent(i)) { @@ -961,7 +961,7 @@ void BattleInterfaceSetWindowPals(void) s32 i; s32 j; - for (i = 0; i < 9; ++i) + for (i = 0; i < 9; i++) { for (j = 0; j < 16; ++vramPtr, ++j) { @@ -978,7 +978,7 @@ void BattleInterfaceSetWindowPals(void) // 18 tiles at 0x06000600 vramPtr = (u16 *)(BG_VRAM + 0x600); - for (i = 0; i < 18; ++i) + for (i = 0; i < 18; i++) { for (j = 0; j < 16; ++vramPtr, ++j) { @@ -1009,12 +1009,12 @@ void AllocateMonSpritesGfx(void) gMonSpritesGfxPtr = NULL; gMonSpritesGfxPtr = AllocZeroed(sizeof(*gMonSpritesGfxPtr)); gMonSpritesGfxPtr->firstDecompressed = AllocZeroed(0x8000); - for (i = 0; i < MAX_BATTLERS_COUNT; ++i) + for (i = 0; i < MAX_BATTLERS_COUNT; i++) { gMonSpritesGfxPtr->sprites[i] = gMonSpritesGfxPtr->firstDecompressed + (i * 0x2000); *(gMonSpritesGfxPtr->templates + i) = gSpriteTemplates_Battlers[i]; - for (j = 0; j < 4; ++j) + for (j = 0; j < 4; j++) { gMonSpritesGfxPtr->images[i][j].data = gMonSpritesGfxPtr->sprites[i] + (j * 0x800); gMonSpritesGfxPtr->images[i][j].size = 0x800; diff --git a/src/battle_interface.c b/src/battle_interface.c index d0713bda1..57130c9ee 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -1137,8 +1137,9 @@ u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo, { if (gBattleTypeFlags & BATTLE_TYPE_MULTI) { - if (partyInfo[i].hp == 0xFFFF) // empty slot or an egg + if (partyInfo[i].hp == HP_EMPTY_SLOT) { + // empty slot or an egg gSprites[ballIconSpritesIds[i]].oam.tileNum += 1; gSprites[ballIconSpritesIds[i]].data[7] = 1; } @@ -1153,17 +1154,20 @@ u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo, } else { - if (i >= nValidMons) // empty slot or an egg + if (i >= nValidMons) { + // empty slot or an egg gSprites[ballIconSpritesIds[i]].oam.tileNum += 1; gSprites[ballIconSpritesIds[i]].data[7] = 1; } - else if (partyInfo[i].hp == 0) // fainted mon + else if (partyInfo[i].hp == 0) { + // fainted mon gSprites[ballIconSpritesIds[i]].oam.tileNum += 3; } - else if (partyInfo[i].status != 0) // mon with major status + else if (partyInfo[i].status != 0) { + // mon with major status gSprites[ballIconSpritesIds[i]].oam.tileNum += 2; } } @@ -1175,17 +1179,20 @@ u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo, { if (gBattleTypeFlags & BATTLE_TYPE_MULTI) { - if (partyInfo[i].hp == 0xFFFF) // empty slot or an egg + if (partyInfo[i].hp == HP_EMPTY_SLOT) { + // empty slot or an egg gSprites[ballIconSpritesIds[5 - i]].oam.tileNum += 1; gSprites[ballIconSpritesIds[5 - i]].data[7] = 1; } - else if (partyInfo[i].hp == 0) // fainted mon + else if (partyInfo[i].hp == 0) { + // fainted mon gSprites[ballIconSpritesIds[5 - i]].oam.tileNum += 3; } - else if (partyInfo[i].status != 0) // mon with major status + else if (partyInfo[i].status != 0) { + // mon with major status gSprites[ballIconSpritesIds[5 - i]].oam.tileNum += 2; } } diff --git a/src/battle_intro.c b/src/battle_intro.c index c7a0da2b7..d325713b9 100644 --- a/src/battle_intro.c +++ b/src/battle_intro.c @@ -190,7 +190,7 @@ static void BattleIntroSlide1(u8 taskId) if (gTasks[taskId].data[2]) gTasks[taskId].data[2] -= 2; // Scanline settings have already been set in CB2_InitBattleInternal - for (i = 0; i < 80; ++i) + for (i = 0; i < 80; i++) gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gTasks[taskId].data[2]; while (i < 160) gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i++] = -gTasks[taskId].data[2]; @@ -289,7 +289,7 @@ static void BattleIntroSlide2(u8 taskId) if (gTasks[taskId].data[2]) gTasks[taskId].data[2] -= 2; // Scanline settings have already been set in CB2_InitBattleInternal() - for (i = 0; i < 80; ++i) + for (i = 0; i < 80; i++) gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gTasks[taskId].data[2]; while (i < 160) gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i++] = -gTasks[taskId].data[2]; @@ -368,7 +368,7 @@ static void BattleIntroSlide3(u8 taskId) if (gTasks[taskId].data[2]) gTasks[taskId].data[2] -= 2; // Scanline settings have already been set in CB2_InitBattleInternal() - for (i = 0; i < 80; ++i) + for (i = 0; i < 80; i++) gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gTasks[taskId].data[2]; while (i < 160) gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i++] = -gTasks[taskId].data[2]; @@ -445,7 +445,7 @@ static void BattleIntroSlideLink(u8 taskId) if (gTasks[taskId].data[2]) gTasks[taskId].data[2] -= 2; // Scanline settings have already been set in CB2_InitBattleInternal() - for (i = 0; i < 80; ++i) + for (i = 0; i < 80; i++) gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = gTasks[taskId].data[2]; while (i < 160) gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i++] = -gTasks[taskId].data[2]; @@ -473,8 +473,8 @@ void CopyBattlerSpriteToBg(s32 bgId, u8 x, u8 y, u8 battlerPosition, u8 palno, u CpuCopy16(gMonSpritesGfxPtr->sprites[battlerPosition] + BG_SCREEN_SIZE * gBattleMonForms[battler], tilesDest, BG_SCREEN_SIZE); LoadBgTiles(bgId, tilesDest, 0x1000, tilesOffset); - for (i = y; i < y + 8; ++i) - for (j = x; j < x + 8; ++j) + for (i = y; i < y + 8; i++) + for (j = x; j < x + 8; j++) tilemapDest[i * 32 + j] = offset++ | (palno << 12); LoadBgTilemap(bgId, tilemapDest, BG_SCREEN_SIZE, 0); } @@ -486,7 +486,7 @@ static void sub_80BCFCC(u8 arg0, u8 arg1, u8 battlerPosition, u8 arg3, u8 arg4, DmaCopy16(3, gMonSpritesGfxPtr->sprites[battlerPosition] + BG_SCREEN_SIZE * arg3, (void *)BG_SCREEN_ADDR(0) + arg5, BG_SCREEN_SIZE); offset = (arg5 >> 5) - (arg7 << 9); - for (i = arg1; i < arg1 + 8; ++i) - for (j = arg0; j < arg0 + 8; ++j) + for (i = arg1; i < arg1 + 8; i++) + for (j = arg0; j < arg0 + 8; j++) *((u16 *)(BG_VRAM) + (i * 32) + (j + (arg6 << 10))) = offset++ | (arg4 << 12); } diff --git a/src/battle_main.c b/src/battle_main.c index 710463543..173123bc8 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -79,9 +79,9 @@ static void SpriteCB_MoveWildMonToRight(struct Sprite *sprite); static void SpriteCB_WildMonShowHealthbox(struct Sprite *sprite); static void SpriteCB_Unused_8011E28_Step(struct Sprite *sprite); static void SpriteCB_AnimFaintOpponent(struct Sprite *sprite); -static void SpriteCb_BlinkVisible(struct Sprite *sprite); +static void SpriteCB_BlinkVisible(struct Sprite *sprite); static void oac_poke_ally_(struct Sprite *sprite); -static void SpriteCallbackDummy3(struct Sprite *sprite); +static void SpriteCB_Idle(struct Sprite *sprite); static void SpriteCB_BounceEffect(struct Sprite *sprite); static void SpriteCB_PlayerThrowUpdate(struct Sprite *sprite); static void BattleStartClearSetData(void); @@ -125,13 +125,18 @@ EWRAM_DATA u8 gDisplayedStringBattle[300] = {0}; EWRAM_DATA u8 gBattleTextBuff1[TEXT_BUFF_ARRAY_COUNT] = {0}; EWRAM_DATA u8 gBattleTextBuff2[TEXT_BUFF_ARRAY_COUNT] = {0}; EWRAM_DATA u8 gBattleTextBuff3[TEXT_BUFF_ARRAY_COUNT] = {0}; -static EWRAM_DATA u32 gUnknown_2022AE8[25] = {0}; // Note: This shouldn't be removed without adjusting the size of gDisplayedStringBattle. +// The below array is never intentionally used. However, Brock's +// defeat text (PewterCity_Gym_Text_BrockDefeat) is too long +// for gDisplayedStringBattle and overflows into this array. If it +// is removed (and none of the buffers above are increased in size) +// it will instead overflow into useful data. +static EWRAM_DATA u32 sFlickerArray[25] = {0}; EWRAM_DATA u32 gBattleTypeFlags = 0; EWRAM_DATA u8 gBattleTerrain = 0; EWRAM_DATA u32 gUnknown_2022B54 = 0; EWRAM_DATA struct MultiBattlePokemonTx gMultiPartnerParty[3] = {0}; -EWRAM_DATA u8 *gBattleAnimMons_BgTilesBuffer = NULL; -EWRAM_DATA u8 *gBattleAnimMons_BgTilemapBuffer = NULL; +EWRAM_DATA u8 *gBattleAnimBgTileBuffer = NULL; +EWRAM_DATA u8 *gBattleAnimBgTilemapBuffer = NULL; static EWRAM_DATA u16 *sUnknownDebugSpriteDataBuffer = NULL; EWRAM_DATA u8 gBattleBufferA[MAX_BATTLERS_COUNT][0x200] = {0}; EWRAM_DATA u8 gBattleBufferB[MAX_BATTLERS_COUNT][0x200] = {0}; @@ -178,7 +183,7 @@ EWRAM_DATA u8 gLastHitBy[MAX_BATTLERS_COUNT] = {0}; EWRAM_DATA u16 gChosenMoveByBattler[MAX_BATTLERS_COUNT] = {0}; EWRAM_DATA u8 gMoveResultFlags = 0; EWRAM_DATA u32 gHitMarker = 0; -static EWRAM_DATA u8 gUnknown_2023DD4[MAX_BATTLERS_COUNT] = {0}; +static EWRAM_DATA u8 sUnusedBattlersArray[MAX_BATTLERS_COUNT] = {0}; EWRAM_DATA u8 gTakenDmgByBattler[MAX_BATTLERS_COUNT] = {0}; EWRAM_DATA u8 gUnknown_2023DDC = 0; EWRAM_DATA u16 gSideStatuses[2] = {0}; @@ -425,188 +430,188 @@ const u8 gTypeEffectiveness[336] = TYPE_ENDTABLE, TYPE_ENDTABLE, TYPE_MUL_NO_EFFECT }; -const u8 gTypeNames[][TYPE_NAME_LENGTH + 1] = +const u8 gTypeNames[NUMBER_OF_MON_TYPES][TYPE_NAME_LENGTH + 1] = { - _("NORMAL"), - _("FIGHT"), - _("FLYING"), - _("POISON"), - _("GROUND"), - _("ROCK"), - _("BUG"), - _("GHOST"), - _("STEEL"), - _("???"), - _("FIRE"), - _("WATER"), - _("GRASS"), - _("ELECTR"), - _("PSYCHC"), - _("ICE"), - _("DRAGON"), - _("DARK"), + [TYPE_NORMAL] = _("NORMAL"), + [TYPE_FIGHTING] = _("FIGHT"), + [TYPE_FLYING] = _("FLYING"), + [TYPE_POISON] = _("POISON"), + [TYPE_GROUND] = _("GROUND"), + [TYPE_ROCK] = _("ROCK"), + [TYPE_BUG] = _("BUG"), + [TYPE_GHOST] = _("GHOST"), + [TYPE_STEEL] = _("STEEL"), + [TYPE_MYSTERY] = _("???"), + [TYPE_FIRE] = _("FIRE"), + [TYPE_WATER] = _("WATER"), + [TYPE_GRASS] = _("GRASS"), + [TYPE_ELECTRIC] = _("ELECTR"), + [TYPE_PSYCHIC] = _("PSYCHC"), + [TYPE_ICE] = _("ICE"), + [TYPE_DRAGON] = _("DRAGON"), + [TYPE_DARK] = _("DARK"), }; // This is a factor in how much money you get for beating a trainer. const struct TrainerMoney gTrainerMoneyTable[] = { - { TRAINER_CLASS_LEADER, 25 }, - { TRAINER_CLASS_ELITE_FOUR, 25 }, - { TRAINER_CLASS_PKMN_PROF, 25 }, - { TRAINER_CLASS_RIVAL_EARLY, 4 }, - { TRAINER_CLASS_RIVAL_LATE, 9 }, - { TRAINER_CLASS_CHAMPION, 25 }, - { TRAINER_CLASS_YOUNGSTER, 4 }, - { TRAINER_CLASS_BUG_CATCHER, 3 }, - { TRAINER_CLASS_HIKER, 9 }, - { TRAINER_CLASS_BIRD_KEEPER, 6 }, - { TRAINER_CLASS_PICNICKER, 5 }, - { TRAINER_CLASS_SUPER_NERD, 6 }, - { TRAINER_CLASS_FISHERMAN, 9 }, - { TRAINER_CLASS_TEAM_ROCKET, 8 }, - { TRAINER_CLASS_LASS, 4 }, - { TRAINER_CLASS_BEAUTY, 18 }, - { TRAINER_CLASS_BLACK_BELT, 6 }, - { TRAINER_CLASS_CUE_BALL, 6 }, - { TRAINER_CLASS_CHANNELER, 8 }, - { TRAINER_CLASS_ROCKER, 6 }, - { TRAINER_CLASS_GENTLEMAN, 18 }, - { TRAINER_CLASS_BURGLAR, 22 }, - { TRAINER_CLASS_SWIMMER_M, 1 }, - { TRAINER_CLASS_ENGINEER, 12 }, - { TRAINER_CLASS_JUGGLER, 10 }, - { TRAINER_CLASS_SAILOR, 8 }, - { TRAINER_CLASS_COOLTRAINER, 9 }, - { TRAINER_CLASS_POKEMANIAC, 12 }, - { TRAINER_CLASS_TAMER, 10 }, - { TRAINER_CLASS_CAMPER, 5 }, - { TRAINER_CLASS_PSYCHIC, 5 }, - { TRAINER_CLASS_BIKER, 5 }, - { TRAINER_CLASS_GAMER, 18 }, - { TRAINER_CLASS_SCIENTIST, 12 }, - { TRAINER_CLASS_CRUSH_GIRL, 6 }, - { TRAINER_CLASS_TUBER, 1 }, - { TRAINER_CLASS_PKMN_BREEDER, 7 }, - { TRAINER_CLASS_PKMN_RANGER, 9 }, - { TRAINER_CLASS_AROMA_LADY, 7 }, - { TRAINER_CLASS_RUIN_MANIAC, 12 }, - { TRAINER_CLASS_LADY, 50 }, - { TRAINER_CLASS_PAINTER, 4 }, - { TRAINER_CLASS_TWINS, 3 }, - { TRAINER_CLASS_YOUNG_COUPLE, 7 }, - { TRAINER_CLASS_SIS_AND_BRO, 1 }, - { TRAINER_CLASS_COOL_COUPLE, 6 }, - { TRAINER_CLASS_CRUSH_KIN, 6 }, - { TRAINER_CLASS_SWIMMER_F, 1 }, - { TRAINER_CLASS_PLAYER, 1 }, - { TRAINER_CLASS_RS_LEADER, 25 }, - { TRAINER_CLASS_RS_ELITE_FOUR, 25 }, - { TRAINER_CLASS_RS_LASS, 4 }, - { TRAINER_CLASS_RS_YOUNGSTER, 4 }, - { TRAINER_CLASS_PKMN_TRAINER, 15 }, - { TRAINER_CLASS_RS_HIKER, 10 }, - { TRAINER_CLASS_RS_BEAUTY, 20 }, - { TRAINER_CLASS_RS_FISHERMAN, 10 }, - { TRAINER_CLASS_RS_LADY, 50 }, - { TRAINER_CLASS_TRIATHLETE, 10 }, - { TRAINER_CLASS_TEAM_AQUA, 5 }, - { TRAINER_CLASS_RS_TWINS, 3 }, - { TRAINER_CLASS_RS_SWIMMER_F, 2 }, - { TRAINER_CLASS_RS_BUG_CATCHER, 4 }, - { TRAINER_CLASS_SCHOOL_KID, 5 }, - { TRAINER_CLASS_RICH_BOY, 50 }, - { TRAINER_CLASS_SR_AND_JR, 4 }, - { TRAINER_CLASS_RS_BLACK_BELT, 8 }, - { TRAINER_CLASS_RS_TUBER_F, 1 }, - { TRAINER_CLASS_HEX_MANIAC, 6 }, - { TRAINER_CLASS_RS_PKMN_BREEDER, 10 }, - { TRAINER_CLASS_TEAM_MAGMA, 5 }, - { TRAINER_CLASS_INTERVIEWER, 12 }, - { TRAINER_CLASS_RS_TUBER_M, 1 }, - { TRAINER_CLASS_RS_YOUNG_COUPLE, 8 }, - { TRAINER_CLASS_GUITARIST, 8 }, - { TRAINER_CLASS_RS_GENTLEMAN, 20 }, - { TRAINER_CLASS_RS_CHAMPION, 50 }, - { TRAINER_CLASS_MAGMA_LEADER, 20 }, - { TRAINER_CLASS_BATTLE_GIRL, 6 }, - { TRAINER_CLASS_RS_SWIMMER_M, 2 }, - { TRAINER_CLASS_POKEFAN, 20 }, - { TRAINER_CLASS_EXPERT, 10 }, - { TRAINER_CLASS_DRAGON_TAMER, 12 }, - { TRAINER_CLASS_RS_BIRD_KEEPER, 8 }, - { TRAINER_CLASS_NINJA_BOY, 3 }, - { TRAINER_CLASS_PARASOL_LADY, 10 }, - { TRAINER_CLASS_BUG_MANIAC, 15 }, - { TRAINER_CLASS_RS_SAILOR, 8 }, - { TRAINER_CLASS_COLLECTOR, 15 }, - { TRAINER_CLASS_RS_PKMN_RANGER, 12 }, - { TRAINER_CLASS_MAGMA_ADMIN, 10 }, - { TRAINER_CLASS_RS_AROMA_LADY, 10 }, - { TRAINER_CLASS_RS_RUIN_MANIAC, 15 }, - { TRAINER_CLASS_RS_COOLTRAINER, 12 }, - { TRAINER_CLASS_RS_POKEMANIAC, 15 }, - { TRAINER_CLASS_KINDLER, 8 }, - { TRAINER_CLASS_RS_CAMPER, 4 }, - { TRAINER_CLASS_RS_PICNICKER, 4 }, - { TRAINER_CLASS_RS_PSYCHIC, 6 }, - { TRAINER_CLASS_RS_SIS_AND_BRO, 3 }, - { TRAINER_CLASS_OLD_COUPLE, 10 }, - { TRAINER_CLASS_AQUA_ADMIN, 10 }, - { TRAINER_CLASS_AQUA_LEADER, 20 }, - { TRAINER_CLASS_BOSS, 25 }, - { 0xFF, 5 }, + {TRAINER_CLASS_LEADER, 25}, + {TRAINER_CLASS_ELITE_FOUR, 25}, + {TRAINER_CLASS_PKMN_PROF, 25}, + {TRAINER_CLASS_RIVAL_EARLY, 4}, + {TRAINER_CLASS_RIVAL_LATE, 9}, + {TRAINER_CLASS_CHAMPION, 25}, + {TRAINER_CLASS_YOUNGSTER, 4}, + {TRAINER_CLASS_BUG_CATCHER, 3}, + {TRAINER_CLASS_HIKER, 9}, + {TRAINER_CLASS_BIRD_KEEPER, 6}, + {TRAINER_CLASS_PICNICKER, 5}, + {TRAINER_CLASS_SUPER_NERD, 6}, + {TRAINER_CLASS_FISHERMAN, 9}, + {TRAINER_CLASS_TEAM_ROCKET, 8}, + {TRAINER_CLASS_LASS, 4}, + {TRAINER_CLASS_BEAUTY, 18}, + {TRAINER_CLASS_BLACK_BELT, 6}, + {TRAINER_CLASS_CUE_BALL, 6}, + {TRAINER_CLASS_CHANNELER, 8}, + {TRAINER_CLASS_ROCKER, 6}, + {TRAINER_CLASS_GENTLEMAN, 18}, + {TRAINER_CLASS_BURGLAR, 22}, + {TRAINER_CLASS_SWIMMER_M, 1}, + {TRAINER_CLASS_ENGINEER, 12}, + {TRAINER_CLASS_JUGGLER, 10}, + {TRAINER_CLASS_SAILOR, 8}, + {TRAINER_CLASS_COOLTRAINER, 9}, + {TRAINER_CLASS_POKEMANIAC, 12}, + {TRAINER_CLASS_TAMER, 10}, + {TRAINER_CLASS_CAMPER, 5}, + {TRAINER_CLASS_PSYCHIC, 5}, + {TRAINER_CLASS_BIKER, 5}, + {TRAINER_CLASS_GAMER, 18}, + {TRAINER_CLASS_SCIENTIST, 12}, + {TRAINER_CLASS_CRUSH_GIRL, 6}, + {TRAINER_CLASS_TUBER, 1}, + {TRAINER_CLASS_PKMN_BREEDER, 7}, + {TRAINER_CLASS_PKMN_RANGER, 9}, + {TRAINER_CLASS_AROMA_LADY, 7}, + {TRAINER_CLASS_RUIN_MANIAC, 12}, + {TRAINER_CLASS_LADY, 50}, + {TRAINER_CLASS_PAINTER, 4}, + {TRAINER_CLASS_TWINS, 3}, + {TRAINER_CLASS_YOUNG_COUPLE, 7}, + {TRAINER_CLASS_SIS_AND_BRO, 1}, + {TRAINER_CLASS_COOL_COUPLE, 6}, + {TRAINER_CLASS_CRUSH_KIN, 6}, + {TRAINER_CLASS_SWIMMER_F, 1}, + {TRAINER_CLASS_PLAYER, 1}, + {TRAINER_CLASS_RS_LEADER, 25}, + {TRAINER_CLASS_RS_ELITE_FOUR, 25}, + {TRAINER_CLASS_RS_LASS, 4}, + {TRAINER_CLASS_RS_YOUNGSTER, 4}, + {TRAINER_CLASS_PKMN_TRAINER, 15}, + {TRAINER_CLASS_RS_HIKER, 10}, + {TRAINER_CLASS_RS_BEAUTY, 20}, + {TRAINER_CLASS_RS_FISHERMAN, 10}, + {TRAINER_CLASS_RS_LADY, 50}, + {TRAINER_CLASS_TRIATHLETE, 10}, + {TRAINER_CLASS_TEAM_AQUA, 5}, + {TRAINER_CLASS_RS_TWINS, 3}, + {TRAINER_CLASS_RS_SWIMMER_F, 2}, + {TRAINER_CLASS_RS_BUG_CATCHER, 4}, + {TRAINER_CLASS_SCHOOL_KID, 5}, + {TRAINER_CLASS_RICH_BOY, 50}, + {TRAINER_CLASS_SR_AND_JR, 4}, + {TRAINER_CLASS_RS_BLACK_BELT, 8}, + {TRAINER_CLASS_RS_TUBER_F, 1}, + {TRAINER_CLASS_HEX_MANIAC, 6}, + {TRAINER_CLASS_RS_PKMN_BREEDER, 10}, + {TRAINER_CLASS_TEAM_MAGMA, 5}, + {TRAINER_CLASS_INTERVIEWER, 12}, + {TRAINER_CLASS_RS_TUBER_M, 1}, + {TRAINER_CLASS_RS_YOUNG_COUPLE, 8}, + {TRAINER_CLASS_GUITARIST, 8}, + {TRAINER_CLASS_RS_GENTLEMAN, 20}, + {TRAINER_CLASS_RS_CHAMPION, 50}, + {TRAINER_CLASS_MAGMA_LEADER, 20}, + {TRAINER_CLASS_BATTLE_GIRL, 6}, + {TRAINER_CLASS_RS_SWIMMER_M, 2}, + {TRAINER_CLASS_POKEFAN, 20}, + {TRAINER_CLASS_EXPERT, 10}, + {TRAINER_CLASS_DRAGON_TAMER, 12}, + {TRAINER_CLASS_RS_BIRD_KEEPER, 8}, + {TRAINER_CLASS_NINJA_BOY, 3}, + {TRAINER_CLASS_PARASOL_LADY, 10}, + {TRAINER_CLASS_BUG_MANIAC, 15}, + {TRAINER_CLASS_RS_SAILOR, 8}, + {TRAINER_CLASS_COLLECTOR, 15}, + {TRAINER_CLASS_RS_PKMN_RANGER, 12}, + {TRAINER_CLASS_MAGMA_ADMIN, 10}, + {TRAINER_CLASS_RS_AROMA_LADY, 10}, + {TRAINER_CLASS_RS_RUIN_MANIAC, 15}, + {TRAINER_CLASS_RS_COOLTRAINER, 12}, + {TRAINER_CLASS_RS_POKEMANIAC, 15}, + {TRAINER_CLASS_KINDLER, 8}, + {TRAINER_CLASS_RS_CAMPER, 4}, + {TRAINER_CLASS_RS_PICNICKER, 4}, + {TRAINER_CLASS_RS_PSYCHIC, 6}, + {TRAINER_CLASS_RS_SIS_AND_BRO, 3}, + {TRAINER_CLASS_OLD_COUPLE, 10}, + {TRAINER_CLASS_AQUA_ADMIN, 10}, + {TRAINER_CLASS_AQUA_LEADER, 20}, + {TRAINER_CLASS_BOSS, 25}, + { 0xFF, 5}, }; #include "data/text/abilities.h" static void (*const sTurnActionsFuncsTable[])(void) = { - [B_ACTION_USE_MOVE] = HandleAction_UseMove, - [B_ACTION_USE_ITEM] = HandleAction_UseItem, - [B_ACTION_SWITCH] = HandleAction_Switch, - [B_ACTION_RUN] = HandleAction_Run, + [B_ACTION_USE_MOVE] = HandleAction_UseMove, + [B_ACTION_USE_ITEM] = HandleAction_UseItem, + [B_ACTION_SWITCH] = HandleAction_Switch, + [B_ACTION_RUN] = HandleAction_Run, [B_ACTION_SAFARI_WATCH_CAREFULLY] = HandleAction_WatchesCarefully, - [B_ACTION_SAFARI_BALL] = HandleAction_SafariZoneBallThrow, - [B_ACTION_SAFARI_BAIT] = HandleAction_ThrowBait, - [B_ACTION_SAFARI_GO_NEAR] = HandleAction_ThrowRock, - [B_ACTION_SAFARI_RUN] = HandleAction_SafariZoneRun, - [B_ACTION_OLDMAN_THROW] = HandleAction_OldManBallThrow, - [B_ACTION_EXEC_SCRIPT] = HandleAction_RunBattleScript, - [B_ACTION_TRY_FINISH] = HandleAction_TryFinish, - [B_ACTION_FINISHED] = HandleAction_ActionFinished, - [B_ACTION_NOTHING_FAINTED] = HandleAction_NothingIsFainted, + [B_ACTION_SAFARI_BALL] = HandleAction_SafariZoneBallThrow, + [B_ACTION_SAFARI_BAIT] = HandleAction_ThrowBait, + [B_ACTION_SAFARI_GO_NEAR] = HandleAction_ThrowRock, + [B_ACTION_SAFARI_RUN] = HandleAction_SafariZoneRun, + [B_ACTION_OLDMAN_THROW] = HandleAction_OldManBallThrow, + [B_ACTION_EXEC_SCRIPT] = HandleAction_RunBattleScript, + [B_ACTION_TRY_FINISH] = HandleAction_TryFinish, + [B_ACTION_FINISHED] = HandleAction_ActionFinished, + [B_ACTION_NOTHING_FAINTED] = HandleAction_NothingIsFainted, }; static void (*const sEndTurnFuncsTable[])(void) = { - [0] = HandleEndTurn_ContinueBattle, //B_OUTCOME_NONE? - [B_OUTCOME_WON] = HandleEndTurn_BattleWon, - [B_OUTCOME_LOST] = HandleEndTurn_BattleLost, - [B_OUTCOME_DREW] = HandleEndTurn_BattleLost, - [B_OUTCOME_RAN] = HandleEndTurn_RanFromBattle, + [0] = HandleEndTurn_ContinueBattle, + [B_OUTCOME_WON] = HandleEndTurn_BattleWon, + [B_OUTCOME_LOST] = HandleEndTurn_BattleLost, + [B_OUTCOME_DREW] = HandleEndTurn_BattleLost, + [B_OUTCOME_RAN] = HandleEndTurn_RanFromBattle, [B_OUTCOME_PLAYER_TELEPORTED] = HandleEndTurn_FinishBattle, - [B_OUTCOME_MON_FLED] = HandleEndTurn_MonFled, - [B_OUTCOME_CAUGHT] = HandleEndTurn_FinishBattle, - [B_OUTCOME_NO_SAFARI_BALLS] = HandleEndTurn_FinishBattle, + [B_OUTCOME_MON_FLED] = HandleEndTurn_MonFled, + [B_OUTCOME_CAUGHT] = HandleEndTurn_FinishBattle, + [B_OUTCOME_NO_SAFARI_BALLS] = HandleEndTurn_FinishBattle, }; -const u8 gStatusConditionString_PoisonJpn[8] = _("どく$$$$$"); -const u8 gStatusConditionString_SleepJpn[8] = _("ねむり$$$$"); -const u8 gStatusConditionString_ParalysisJpn[8] = _("まひ$$$$$"); -const u8 gStatusConditionString_BurnJpn[8] = _("やけど$$$$"); -const u8 gStatusConditionString_IceJpn[8] = _("こおり$$$$"); -const u8 gStatusConditionString_ConfusionJpn[8] = _("こんらん$$$"); -const u8 gStatusConditionString_LoveJpn[8] = _("メロメロ$$$"); +const u8 gStatusConditionString_PoisonJpn[] = _("どく$$$$$"); +const u8 gStatusConditionString_SleepJpn[] = _("ねむり$$$$"); +const u8 gStatusConditionString_ParalysisJpn[] = _("まひ$$$$$"); +const u8 gStatusConditionString_BurnJpn[] = _("やけど$$$$"); +const u8 gStatusConditionString_IceJpn[] = _("こおり$$$$"); +const u8 gStatusConditionString_ConfusionJpn[] = _("こんらん$$$"); +const u8 gStatusConditionString_LoveJpn[] = _("メロメロ$$$"); -const u8 *const gStatusConditionStringsTable[7][2] = +const u8 *const gStatusConditionStringsTable[][2] = { - { gStatusConditionString_PoisonJpn, gText_Poison }, - { gStatusConditionString_SleepJpn, gText_Sleep }, - { gStatusConditionString_ParalysisJpn, gText_Paralysis }, - { gStatusConditionString_BurnJpn, gText_Burn }, - { gStatusConditionString_IceJpn, gText_Ice }, - { gStatusConditionString_ConfusionJpn, gText_Confusion }, - { gStatusConditionString_LoveJpn, gText_Love } + {gStatusConditionString_PoisonJpn, gText_Poison}, + {gStatusConditionString_SleepJpn, gText_Sleep}, + {gStatusConditionString_ParalysisJpn, gText_Paralysis}, + {gStatusConditionString_BurnJpn, gText_Burn}, + {gStatusConditionString_IceJpn, gText_Ice}, + {gStatusConditionString_ConfusionJpn, gText_Confusion}, + {gStatusConditionString_LoveJpn, gText_Love} }; void CB2_InitBattle(void) @@ -651,26 +656,31 @@ static void CB2_InitBattleInternal(void) SetHBlankCallback(NULL); SetVBlankCallback(NULL); - CpuFill32(0, (void *)VRAM, VRAM_SIZE); + + CpuFill32(0, (void *)(VRAM), VRAM_SIZE); + SetGpuReg(REG_OFFSET_MOSAIC, 0); - SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(0, 0xF0)); - SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(0x50, 0x51)); + SetGpuReg(REG_OFFSET_WIN0H, DISPLAY_WIDTH); + SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(DISPLAY_HEIGHT / 2, DISPLAY_HEIGHT / 2 + 1)); SetGpuReg(REG_OFFSET_WININ, 0); SetGpuReg(REG_OFFSET_WINOUT, 0); - gBattle_WIN0H = WIN_RANGE(0, 0xF0); - gBattle_WIN0V = WIN_RANGE(0x50, 0x51); + + gBattle_WIN0H = DISPLAY_WIDTH; + gBattle_WIN0V = WIN_RANGE(DISPLAY_HEIGHT / 2, DISPLAY_HEIGHT / 2 + 1); ScanlineEffect_Clear(); - for (i = 0; i < 80; ++i) + + for (i = 0; i < 80; i++) { gScanlineEffectRegBuffers[0][i] = 0xF0; gScanlineEffectRegBuffers[1][i] = 0xF0; } - for (; i < 160; ++i) + for (; i < 160; i++) { gScanlineEffectRegBuffers[0][i] = 0xFF10; gScanlineEffectRegBuffers[1][i] = 0xFF10; } ScanlineEffect_SetParams(sIntroScanlineParams16Bit); + ResetPaletteFade(); gBattle_BG0_X = 0; gBattle_BG0_Y = 0; @@ -680,7 +690,9 @@ static void CB2_InitBattleInternal(void) gBattle_BG2_Y = 0; gBattle_BG3_X = 0; gBattle_BG3_Y = 0; + gBattleTerrain = BattleSetup_GetTerrainId(); + InitBattleBgsVideo(); LoadBattleTextboxAndBackground(); ResetSpriteData(); @@ -690,6 +702,7 @@ static void CB2_InitBattleInternal(void) gReservedSpritePaletteCount = 4; SetVBlankCallback(VBlankCB_Battle); SetUpBattleVars(); + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) SetMainCallback2(CB2_HandleStartMultiBattle); else @@ -699,9 +712,11 @@ static void CB2_InitBattleInternal(void) CreateNPCTrainerParty(&gEnemyParty[0], gTrainerBattleOpponent_A); SetWildMonHeldItem(); } + gMain.inBattle = TRUE; - for (i = 0; i < PARTY_SIZE; ++i) + for (i = 0; i < PARTY_SIZE; i++) AdjustFriendship(&gPlayerParty[i], FRIENDSHIP_EVENT_LEAGUE_BATTLE); + gBattleCommunication[MULTIUSE_STATE] = 0; } @@ -734,28 +749,29 @@ static void CB2_InitBattleInternal(void) (flags) |= 3 << (i) * 2; \ } +// For Vs Screen at link battle start static void BufferPartyVsScreenHealth_AtStart(void) { u16 flags = 0; s32 i; BUFFER_PARTY_VS_SCREEN_STATUS(gPlayerParty, flags, i); - gBattleStruct->multiBuffer.linkPartnerHeader.vsScreenHealthFlagsLo = flags; - *(&gBattleStruct->multiBuffer.linkPartnerHeader.vsScreenHealthFlagsHi) = flags >> 8; + gBattleStruct->multiBuffer.linkBattlerHeader.vsScreenHealthFlagsLo = flags; + *(&gBattleStruct->multiBuffer.linkBattlerHeader.vsScreenHealthFlagsHi) = flags >> 8; } static void SetPlayerBerryDataInBattleStruct(void) { s32 i; struct BattleStruct *battleStruct = gBattleStruct; - struct BattleEnigmaBerry *battleBerry = &battleStruct->multiBuffer.linkPartnerHeader.battleEnigmaBerry; + struct BattleEnigmaBerry *battleBerry = &battleStruct->multiBuffer.linkBattlerHeader.battleEnigmaBerry; if (IsEnigmaBerryValid() == TRUE) { - for (i = 0; i < BERRY_NAME_LENGTH; ++i) + for (i = 0; i < BERRY_NAME_LENGTH; i++) battleBerry->name[i] = gSaveBlock1Ptr->enigmaBerry.berry.name[i]; battleBerry->name[i] = EOS; - for (i = 0; i < BERRY_ITEM_EFFECT_COUNT; ++i) + for (i = 0; i < BERRY_ITEM_EFFECT_COUNT; i++) battleBerry->itemEffect[i] = gSaveBlock1Ptr->enigmaBerry.itemEffect[i]; battleBerry->holdEffect = gSaveBlock1Ptr->enigmaBerry.holdEffect; battleBerry->holdEffectParam = gSaveBlock1Ptr->enigmaBerry.holdEffectParam; @@ -764,10 +780,10 @@ static void SetPlayerBerryDataInBattleStruct(void) { const struct Berry *berryData = GetBerryInfo(ItemIdToBerryType(ITEM_ENIGMA_BERRY)); - for (i = 0; i < BERRY_NAME_LENGTH; ++i) + for (i = 0; i < BERRY_NAME_LENGTH; i++) battleBerry->name[i] = berryData->name[i]; battleBerry->name[i] = EOS; - for (i = 0; i < BERRY_ITEM_EFFECT_COUNT; ++i) + for (i = 0; i < BERRY_ITEM_EFFECT_COUNT; i++) battleBerry->itemEffect[i] = 0; battleBerry->holdEffect = HOLD_EFFECT_NONE; battleBerry->holdEffectParam = 0; @@ -776,24 +792,27 @@ static void SetPlayerBerryDataInBattleStruct(void) static void SetAllPlayersBerryData(void) { - s32 i, j; + s32 i; + s32 j; if (!(gBattleTypeFlags & BATTLE_TYPE_LINK)) { if (IsEnigmaBerryValid() == TRUE) { - for (i = 0; i < BERRY_NAME_LENGTH; ++i) + for (i = 0; i < BERRY_NAME_LENGTH; i++) { gEnigmaBerries[0].name[i] = gSaveBlock1Ptr->enigmaBerry.berry.name[i]; gEnigmaBerries[2].name[i] = gSaveBlock1Ptr->enigmaBerry.berry.name[i]; } gEnigmaBerries[0].name[i] = EOS; gEnigmaBerries[2].name[i] = EOS; - for (i = 0; i < BERRY_ITEM_EFFECT_COUNT; ++i) + + for (i = 0; i < BERRY_ITEM_EFFECT_COUNT; i++) { gEnigmaBerries[0].itemEffect[i] = gSaveBlock1Ptr->enigmaBerry.itemEffect[i]; gEnigmaBerries[2].itemEffect[i] = gSaveBlock1Ptr->enigmaBerry.itemEffect[i]; } + gEnigmaBerries[0].holdEffect = gSaveBlock1Ptr->enigmaBerry.holdEffect; gEnigmaBerries[2].holdEffect = gSaveBlock1Ptr->enigmaBerry.holdEffect; gEnigmaBerries[0].holdEffectParam = gSaveBlock1Ptr->enigmaBerry.holdEffectParam; @@ -803,18 +822,20 @@ static void SetAllPlayersBerryData(void) { const struct Berry *berryData = GetBerryInfo(ItemIdToBerryType(ITEM_ENIGMA_BERRY)); - for (i = 0; i < BERRY_NAME_LENGTH; ++i) + for (i = 0; i < BERRY_NAME_LENGTH; i++) { gEnigmaBerries[0].name[i] = berryData->name[i]; gEnigmaBerries[2].name[i] = berryData->name[i]; } gEnigmaBerries[0].name[i] = EOS; gEnigmaBerries[2].name[i] = EOS; - for (i = 0; i < BERRY_ITEM_EFFECT_COUNT; ++i) + + for (i = 0; i < BERRY_ITEM_EFFECT_COUNT; i++) { gEnigmaBerries[0].itemEffect[i] = 0; gEnigmaBerries[2].itemEffect[i] = 0; } + gEnigmaBerries[0].holdEffect = HOLD_EFFECT_NONE; gEnigmaBerries[2].holdEffect = HOLD_EFFECT_NONE; gEnigmaBerries[0].holdEffectParam = 0; @@ -829,14 +850,14 @@ static void SetAllPlayersBerryData(void) if (gBattleTypeFlags & BATTLE_TYPE_MULTI) { - for (i = 0; i < 4; ++i) + for (i = 0; i < 4; i++) { src = (struct BattleEnigmaBerry *)(gBlockRecvBuffer[i] + 2); battlerId = gLinkPlayers[i].id; - for (j = 0; j < BERRY_NAME_LENGTH; ++j) + for (j = 0; j < BERRY_NAME_LENGTH; j++) gEnigmaBerries[battlerId].name[j] = src->name[j]; gEnigmaBerries[battlerId].name[j] = EOS; - for (j = 0; j < BERRY_ITEM_EFFECT_COUNT; ++j) + for (j = 0; j < BERRY_ITEM_EFFECT_COUNT; j++) gEnigmaBerries[battlerId].itemEffect[j] = src->itemEffect[j]; gEnigmaBerries[battlerId].holdEffect = src->holdEffect; gEnigmaBerries[battlerId].holdEffectParam = src->holdEffectParam; @@ -844,17 +865,17 @@ static void SetAllPlayersBerryData(void) } else { - for (i = 0; i < 2; ++i) + for (i = 0; i < 2; i++) { src = (struct BattleEnigmaBerry *)(gBlockRecvBuffer[i] + 2); - for (j = 0; j < BERRY_NAME_LENGTH; ++j) + for (j = 0; j < BERRY_NAME_LENGTH; j++) { gEnigmaBerries[i].name[j] = src->name[j]; gEnigmaBerries[i + 2].name[j] = src->name[j]; } gEnigmaBerries[i].name[j] = EOS; gEnigmaBerries[i + 2].name[j] = EOS; - for (j = 0; j < BERRY_ITEM_EFFECT_COUNT; ++j) + for (j = 0; j < BERRY_ITEM_EFFECT_COUNT; j++) { gEnigmaBerries[i].itemEffect[j] = src->itemEffect[j]; gEnigmaBerries[i + 2].itemEffect[j] = src->itemEffect[j]; @@ -879,14 +900,14 @@ static void LinkBattleComputeBattleTypeFlags(u8 numPlayers, u8 multiPlayerId) gBattleTypeFlags |= BATTLE_TYPE_IS_MASTER | BATTLE_TYPE_TRAINER; else gBattleTypeFlags |= BATTLE_TYPE_TRAINER; - ++found; + found++; } if (found == 0) { // If multiple different versions are being used, player 1 is master. s32 i; - for (i = 0; i < numPlayers; ++i) + for (i = 0; i < numPlayers; i++) if (gBlockRecvBuffer[0][0] != gBlockRecvBuffer[i][0]) break; if (i == numPlayers) @@ -895,12 +916,12 @@ static void LinkBattleComputeBattleTypeFlags(u8 numPlayers, u8 multiPlayerId) gBattleTypeFlags |= BATTLE_TYPE_IS_MASTER | BATTLE_TYPE_TRAINER; else gBattleTypeFlags |= BATTLE_TYPE_TRAINER; - ++found; + found++; } if (found == 0) { // Lowest index player with the highest game version is master. - for (i = 0; i < numPlayers; ++i) + for (i = 0; i < numPlayers; i++) { if (gBlockRecvBuffer[i][0] == 0x201 && i != multiPlayerId) if (i < multiPlayerId) @@ -950,11 +971,11 @@ static void CB2_HandleStartBattle(void) if (IsLinkTaskFinished()) { // 0x201 - *(&gBattleStruct->multiBuffer.linkPartnerHeader.versionSignatureLo) = 1; - *(&gBattleStruct->multiBuffer.linkPartnerHeader.versionSignatureHi) = 2; + *(&gBattleStruct->multiBuffer.linkBattlerHeader.versionSignatureLo) = 1; + *(&gBattleStruct->multiBuffer.linkBattlerHeader.versionSignatureHi) = 2; BufferPartyVsScreenHealth_AtStart(); SetPlayerBerryDataInBattleStruct(); - SendBlock(bitmask_all_link_players_but_self(), &gBattleStruct->multiBuffer.linkPartnerHeader, sizeof(gBattleStruct->multiBuffer.linkPartnerHeader)); + SendBlock(bitmask_all_link_players_but_self(), &gBattleStruct->multiBuffer.linkBattlerHeader, sizeof(gBattleStruct->multiBuffer.linkBattlerHeader)); gBattleCommunication[MULTIUSE_STATE] = 2; } if (gWirelessCommType != 0) @@ -980,17 +1001,17 @@ static void CB2_HandleStartBattle(void) gTasks[taskId].data[1] = 270; gTasks[taskId].data[2] = 90; gTasks[taskId].data[5] = 0; - gTasks[taskId].data[3] = gBattleStruct->multiBuffer.linkPartnerHeader.vsScreenHealthFlagsLo | (gBattleStruct->multiBuffer.linkPartnerHeader.vsScreenHealthFlagsHi << 8); + gTasks[taskId].data[3] = gBattleStruct->multiBuffer.linkBattlerHeader.vsScreenHealthFlagsLo | (gBattleStruct->multiBuffer.linkBattlerHeader.vsScreenHealthFlagsHi << 8); gTasks[taskId].data[4] = gBlockRecvBuffer[enemyMultiplayerId][1]; SetDeoxysStats(); - ++gBattleCommunication[MULTIUSE_STATE]; + gBattleCommunication[MULTIUSE_STATE]++; } break; case 3: if (IsLinkTaskFinished()) { SendBlock(bitmask_all_link_players_but_self(), gPlayerParty, sizeof(struct Pokemon) * 2); - ++gBattleCommunication[MULTIUSE_STATE]; + gBattleCommunication[MULTIUSE_STATE]++; } break; case 4: @@ -998,14 +1019,14 @@ static void CB2_HandleStartBattle(void) { ResetBlockReceivedFlags(); memcpy(gEnemyParty, gBlockRecvBuffer[enemyMultiplayerId], sizeof(struct Pokemon) * 2); - ++gBattleCommunication[MULTIUSE_STATE]; + gBattleCommunication[MULTIUSE_STATE]++; } break; case 7: if (IsLinkTaskFinished()) { SendBlock(bitmask_all_link_players_but_self(), gPlayerParty + 2, sizeof(struct Pokemon) * 2); - ++gBattleCommunication[MULTIUSE_STATE]; + gBattleCommunication[MULTIUSE_STATE]++; } break; case 8: @@ -1013,14 +1034,14 @@ static void CB2_HandleStartBattle(void) { ResetBlockReceivedFlags(); memcpy(gEnemyParty + 2, gBlockRecvBuffer[enemyMultiplayerId], sizeof(struct Pokemon) * 2); - ++gBattleCommunication[MULTIUSE_STATE]; + gBattleCommunication[MULTIUSE_STATE]++; } break; case 11: if (IsLinkTaskFinished()) { SendBlock(bitmask_all_link_players_but_self(), gPlayerParty + 4, sizeof(struct Pokemon) * 2); - ++gBattleCommunication[MULTIUSE_STATE]; + gBattleCommunication[MULTIUSE_STATE]++; } break; case 12: @@ -1034,12 +1055,12 @@ static void CB2_HandleStartBattle(void) TryCorrectShedinjaLanguage(&gEnemyParty[3]); TryCorrectShedinjaLanguage(&gEnemyParty[4]); TryCorrectShedinjaLanguage(&gEnemyParty[5]); - ++gBattleCommunication[MULTIUSE_STATE]; + gBattleCommunication[MULTIUSE_STATE]++; } break; case 15: InitBtlControllers(); - ++gBattleCommunication[MULTIUSE_STATE]; + gBattleCommunication[MULTIUSE_STATE]++; gBattleCommunication[SPRITES_INIT_STATE1] = 0; gBattleCommunication[SPRITES_INIT_STATE2] = 0; break; @@ -1058,13 +1079,13 @@ static void CB2_HandleStartBattle(void) case 5: case 9: case 13: - ++gBattleCommunication[MULTIUSE_STATE]; + gBattleCommunication[MULTIUSE_STATE]++; gBattleCommunication[1] = 1; case 6: case 10: case 14: if (--gBattleCommunication[1] == 0) - ++gBattleCommunication[MULTIUSE_STATE]; + gBattleCommunication[MULTIUSE_STATE]++; break; } } @@ -1074,7 +1095,7 @@ static void PrepareOwnMultiPartnerBuffer(void) s32 i, j; u8 *nick, *cur; - for (i = 0; i < 3; ++i) + for (i = 0; i < 3; i++) { gMultiPartnerParty[i].species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES); gMultiPartnerParty[i].heldItem = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM); @@ -1089,7 +1110,7 @@ static void PrepareOwnMultiPartnerBuffer(void) StripExtCtrlCodes(nick); if (GetMonData(&gPlayerParty[i], MON_DATA_LANGUAGE) != LANGUAGE_JAPANESE) { - for (cur = nick, j = 0; cur[j] != EOS; ++j) + for (cur = nick, j = 0; cur[j] != EOS; j++) ; while (j < 6) cur[j++] = 0; @@ -1122,14 +1143,14 @@ static void CB2_PreInitMultiBattle(void) { PrepareOwnMultiPartnerBuffer(); SendBlock(bitmask_all_link_players_but_self(), gBattleStruct->multiBuffer.multiBattleMons, sizeof(gBattleStruct->multiBuffer.multiBattleMons)); - ++gBattleCommunication[MULTIUSE_STATE]; + gBattleCommunication[MULTIUSE_STATE]++; } break; case 1: if ((GetBlockReceivedStatus() & r4) == r4) { ResetBlockReceivedFlags(); - for (i = 0; i < 4; ++i) + for (i = 0; i < 4; i++) { if (i == playerMultiplierId) continue; @@ -1137,7 +1158,7 @@ static void CB2_PreInitMultiBattle(void) || (gLinkPlayers[i].id & 1 && gLinkPlayers[playerMultiplierId].id & 1)) memcpy(gMultiPartnerParty, gBlockRecvBuffer[i], sizeof(gMultiPartnerParty)); } - ++gBattleCommunication[MULTIUSE_STATE]; + gBattleCommunication[MULTIUSE_STATE]++; *savedCallback = gMain.savedCallback; *savedBattleTypeFlags = gBattleTypeFlags; gMain.savedCallback = CB2_PreInitMultiBattle; @@ -1147,7 +1168,7 @@ static void CB2_PreInitMultiBattle(void) case 2: if (!gPaletteFade.active) { - ++gBattleCommunication[MULTIUSE_STATE]; + gBattleCommunication[MULTIUSE_STATE]++; if (gWirelessCommType) SetLinkStandbyCallback(); else @@ -1206,12 +1227,12 @@ static void CB2_HandleStartMultiBattle(void) if (IsLinkTaskFinished()) { // 0x201 - *(&gBattleStruct->multiBuffer.linkPartnerHeader.versionSignatureLo) = 1; - *(&gBattleStruct->multiBuffer.linkPartnerHeader.versionSignatureHi) = 2; + *(&gBattleStruct->multiBuffer.linkBattlerHeader.versionSignatureLo) = 1; + *(&gBattleStruct->multiBuffer.linkBattlerHeader.versionSignatureHi) = 2; BufferPartyVsScreenHealth_AtStart(); SetPlayerBerryDataInBattleStruct(); - SendBlock(bitmask_all_link_players_but_self(), &gBattleStruct->multiBuffer.linkPartnerHeader, sizeof(gBattleStruct->multiBuffer.linkPartnerHeader)); - ++gBattleCommunication[MULTIUSE_STATE]; + SendBlock(bitmask_all_link_players_but_self(), &gBattleStruct->multiBuffer.linkBattlerHeader, sizeof(gBattleStruct->multiBuffer.linkBattlerHeader)); + gBattleCommunication[MULTIUSE_STATE]++; } if (gWirelessCommType) CreateWirelessStatusIndicatorSprite(0, 0); @@ -1251,7 +1272,7 @@ static void CB2_HandleStartMultiBattle(void) } ZeroPlayerPartyMons(); ZeroEnemyPartyMons(); - ++gBattleCommunication[MULTIUSE_STATE]; + gBattleCommunication[MULTIUSE_STATE]++; } else { @@ -1262,7 +1283,7 @@ static void CB2_HandleStartMultiBattle(void) if (IsLinkTaskFinished()) { SendBlock(bitmask_all_link_players_but_self(), gDecompressionBuffer, sizeof(struct Pokemon) * 2); - ++gBattleCommunication[MULTIUSE_STATE]; + gBattleCommunication[MULTIUSE_STATE]++; } break; case 4: @@ -1318,14 +1339,14 @@ static void CB2_HandleStartMultiBattle(void) } } } - ++gBattleCommunication[MULTIUSE_STATE]; + gBattleCommunication[MULTIUSE_STATE]++; } break; case 7: if (IsLinkTaskFinished()) { SendBlock(bitmask_all_link_players_but_self(), gDecompressionBuffer + sizeof(struct Pokemon) * 2, sizeof(struct Pokemon)); - ++gBattleCommunication[MULTIUSE_STATE]; + gBattleCommunication[MULTIUSE_STATE]++; } break; case 8: @@ -1393,12 +1414,12 @@ static void CB2_HandleStartMultiBattle(void) TryCorrectShedinjaLanguage(&gEnemyParty[3]); TryCorrectShedinjaLanguage(&gEnemyParty[4]); TryCorrectShedinjaLanguage(&gEnemyParty[5]); - ++gBattleCommunication[MULTIUSE_STATE]; + gBattleCommunication[MULTIUSE_STATE]++; } break; case 11: InitBtlControllers(); - ++gBattleCommunication[MULTIUSE_STATE]; + gBattleCommunication[MULTIUSE_STATE]++; gBattleCommunication[SPRITES_INIT_STATE1] = 0; gBattleCommunication[SPRITES_INIT_STATE2] = 0; break; @@ -1432,11 +1453,12 @@ void BattleMainCB2(void) RunTextPrinters(); UpdatePaletteFade(); RunTasks(); + if (JOY_HELD(B_BUTTON) && gBattleTypeFlags & BATTLE_TYPE_POKEDUDE) { gSpecialVar_Result = gBattleOutcome = B_OUTCOME_DREW; ResetPaletteFadeControl(); - BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK); + BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK); SetMainCallback2(CB2_QuitPokedudeBattle); } } @@ -1525,31 +1547,35 @@ static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum) if (trainerNum == TRAINER_SECRET_BASE) return 0; + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && !(gBattleTypeFlags & (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_TRAINER_TOWER))) { ZeroEnemyPartyMons(); - for (i = 0; i < gTrainers[trainerNum].partySize; ++i) + for (i = 0; i < gTrainers[trainerNum].partySize; i++) { if (gTrainers[trainerNum].doubleBattle == TRUE) personalityValue = 0x80; - else if (gTrainers[trainerNum].encounterMusic_gender & 0x80) - personalityValue = 0x78; + else if (gTrainers[trainerNum].encounterMusic_gender & F_TRAINER_FEMALE) + personalityValue = 0x78; // Use personality more likely to result in a female Pokémon else - personalityValue = 0x88; - for (j = 0; gTrainers[trainerNum].trainerName[j] != EOS; ++j) + personalityValue = 0x88; // Use personality more likely to result in a male Pokémon + + for (j = 0; gTrainers[trainerNum].trainerName[j] != EOS; j++) nameHash += gTrainers[trainerNum].trainerName[j]; + switch (gTrainers[trainerNum].partyFlags) { case 0: { const struct TrainerMonNoItemDefaultMoves *partyData = gTrainers[trainerNum].party.NoItemDefaultMoves; - for (j = 0; gSpeciesNames[partyData[i].species][j] != EOS; ++j) + for (j = 0; gSpeciesNames[partyData[i].species][j] != EOS; j++) nameHash += gSpeciesNames[partyData[i].species][j]; + personalityValue += nameHash << 8; - fixedIV = partyData[i].iv * 31 / 255; + fixedIV = partyData[i].iv * MAX_PER_STAT_IVS / 255; CreateMon(&party[i], partyData[i].species, partyData[i].lvl, fixedIV, TRUE, personalityValue, OT_ID_RANDOM_NO_SHINY, 0); break; } @@ -1557,12 +1583,14 @@ static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum) { const struct TrainerMonNoItemCustomMoves *partyData = gTrainers[trainerNum].party.NoItemCustomMoves; - for (j = 0; gSpeciesNames[partyData[i].species][j] != EOS; ++j) + for (j = 0; gSpeciesNames[partyData[i].species][j] != EOS; j++) nameHash += gSpeciesNames[partyData[i].species][j]; + personalityValue += nameHash << 8; - fixedIV = partyData[i].iv * 31 / 255; + fixedIV = partyData[i].iv * MAX_PER_STAT_IVS / 255; CreateMon(&party[i], partyData[i].species, partyData[i].lvl, fixedIV, TRUE, personalityValue, OT_ID_RANDOM_NO_SHINY, 0); - for (j = 0; j < MAX_MON_MOVES; ++j) + + for (j = 0; j < MAX_MON_MOVES; j++) { SetMonData(&party[i], MON_DATA_MOVE1 + j, &partyData[i].moves[j]); SetMonData(&party[i], MON_DATA_PP1 + j, &gBattleMoves[partyData[i].moves[j]].pp); @@ -1573,10 +1601,11 @@ static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum) { const struct TrainerMonItemDefaultMoves *partyData = gTrainers[trainerNum].party.ItemDefaultMoves; - for (j = 0; gSpeciesNames[partyData[i].species][j] != EOS; ++j) + for (j = 0; gSpeciesNames[partyData[i].species][j] != EOS; j++) nameHash += gSpeciesNames[partyData[i].species][j]; + personalityValue += nameHash << 8; - fixedIV = partyData[i].iv * 31 / 255; + fixedIV = partyData[i].iv * MAX_PER_STAT_IVS / 255; CreateMon(&party[i], partyData[i].species, partyData[i].lvl, fixedIV, TRUE, personalityValue, OT_ID_RANDOM_NO_SHINY, 0); SetMonData(&party[i], MON_DATA_HELD_ITEM, &partyData[i].heldItem); @@ -1586,13 +1615,15 @@ static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum) { const struct TrainerMonItemCustomMoves *partyData = gTrainers[trainerNum].party.ItemCustomMoves; - for (j = 0; gSpeciesNames[partyData[i].species][j] != EOS; ++j) + for (j = 0; gSpeciesNames[partyData[i].species][j] != EOS; j++) nameHash += gSpeciesNames[partyData[i].species][j]; + personalityValue += nameHash << 8; - fixedIV = partyData[i].iv * 31 / 255; + fixedIV = partyData[i].iv * MAX_PER_STAT_IVS / 255; CreateMon(&party[i], partyData[i].species, partyData[i].lvl, fixedIV, TRUE, personalityValue, OT_ID_RANDOM_NO_SHINY, 0); SetMonData(&party[i], MON_DATA_HELD_ITEM, &partyData[i].heldItem); - for (j = 0; j < MAX_MON_MOVES; ++j) + + for (j = 0; j < MAX_MON_MOVES; j++) { SetMonData(&party[i], MON_DATA_MOVE1 + j, &partyData[i].moves[j]); SetMonData(&party[i], MON_DATA_PP1 + j, &gBattleMoves[partyData[i].moves[j]].pp); @@ -1601,15 +1632,17 @@ static u8 CreateNPCTrainerParty(struct Pokemon *party, u16 trainerNum) } } } + gBattleTypeFlags |= gTrainers[trainerNum].doubleBattle; } + return gTrainers[trainerNum].partySize; } -// not used -UNUSED static void unused_80116CC(void) +// Unused +static void HBlankCB_Battle(void) { - if (REG_VCOUNT < 0xA0 && REG_VCOUNT >= 0x6F) + if (REG_VCOUNT < DISPLAY_HEIGHT && REG_VCOUNT >= 111) REG_BG0CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(24) | BGCNT_16COLOR | BGCNT_TXT256x512; } @@ -1617,6 +1650,7 @@ void VBlankCB_Battle(void) { // Change gRngSeed every vblank. Random(); + SetGpuReg(REG_OFFSET_BG0HOFS, gBattle_BG0_X); SetGpuReg(REG_OFFSET_BG0VOFS, gBattle_BG0_Y); SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X); @@ -1637,6 +1671,7 @@ void VBlankCB_Battle(void) void SpriteCB_VsLetterDummy(struct Sprite *sprite) { + } static void SpriteCB_VsLetter(struct Sprite *sprite) @@ -1645,7 +1680,9 @@ static void SpriteCB_VsLetter(struct Sprite *sprite) sprite->x = sprite->data[1] + ((sprite->data[2] & 0xFF00) >> 8); else sprite->x = sprite->data[1] - ((sprite->data[2] & 0xFF00) >> 8); + sprite->data[2] += 0x180; + if (sprite->affineAnimEnded) { FreeSpriteTilesByTag(ANIM_SPRITES_START); @@ -1667,7 +1704,7 @@ static void BufferPartyVsScreenHealth_AtEnd(u8 taskId) struct Pokemon *party1 = NULL; struct Pokemon *party2 = NULL; u8 multiplayerId = gBattleStruct->multiplayerId; - u32 r7; + u32 flags; s32 i; if (gBattleTypeFlags & BATTLE_TYPE_MULTI) @@ -1691,12 +1728,14 @@ static void BufferPartyVsScreenHealth_AtEnd(u8 taskId) party1 = gPlayerParty; party2 = gEnemyParty; } - r7 = 0; - BUFFER_PARTY_VS_SCREEN_STATUS(party1, r7, i); - gTasks[taskId].data[3] = r7; - r7 = 0; - BUFFER_PARTY_VS_SCREEN_STATUS(party2, r7, i); - gTasks[taskId].data[4] = r7; + + flags = 0; + BUFFER_PARTY_VS_SCREEN_STATUS(party1, flags, i); + gTasks[taskId].data[3] = flags; + + flags = 0; + BUFFER_PARTY_VS_SCREEN_STATUS(party2, flags, i); + gTasks[taskId].data[4] = flags; } void CB2_InitEndLinkBattle(void) @@ -1715,13 +1754,13 @@ void CB2_InitEndLinkBattle(void) gBattle_WIN0H = WIN_RANGE(0, 0xF0); gBattle_WIN0V = WIN_RANGE(0x50, 0x51); ScanlineEffect_Clear(); - for (i = 0; i < 80; ++i) + for (i = 0; i < 80; i++) { gScanlineEffectRegBuffers[0][i] = 0xF0; gScanlineEffectRegBuffers[1][i] = 0xF0; } - for (; i < 160; ++i) + for (; i < 160; i++) { gScanlineEffectRegBuffers[0][i] = 0xFF10; gScanlineEffectRegBuffers[1][i] = 0xFF10; @@ -1774,13 +1813,13 @@ static void EndLinkBattleInSteps(void) ShowBg(1); ShowBg(2); gBattleCommunication[1] = 0xFF; - ++gBattleCommunication[MULTIUSE_STATE]; + gBattleCommunication[MULTIUSE_STATE]++; break; case 1: if (--gBattleCommunication[1] == 0) { BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK); - ++gBattleCommunication[MULTIUSE_STATE]; + gBattleCommunication[MULTIUSE_STATE]++; } break; case 2: @@ -1901,7 +1940,7 @@ static void SpriteCB_Unused_8011E28_Step(struct Sprite *sprite) { sprite->invisible = FALSE; sprite->callback = SpriteCallbackDummy_2; - gUnknown_2022AE8[0] = 0; + sFlickerArray[0] = 0; } } } @@ -1916,17 +1955,20 @@ void SpriteCB_FaintOpponentMon(struct Sprite *sprite) species = gBattleSpritesDataPtr->battlerData[battler].transformSpecies; else species = sprite->sSpeciesId; + GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_PERSONALITY); // Unused return value. + if (species == SPECIES_UNOWN) { u32 personalityValue = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_PERSONALITY); - u16 unownForm = ((((personalityValue & 0x3000000) >> 18) | ((personalityValue & 0x30000) >> 12) | ((personalityValue & 0x300) >> 6) | (personalityValue & 3)) % 0x1C); + u16 unownForm = GET_UNOWN_LETTER(personalityValue); u16 unownSpecies; if (unownForm == 0) unownSpecies = SPECIES_UNOWN; // Use the A Unown form. else unownSpecies = NUM_SPECIES + unownForm; // Use one of the other Unown letters. + yOffset = gMonFrontPicCoords[unownSpecies].y_offset; } else if (species == SPECIES_CASTFORM) @@ -1941,6 +1983,7 @@ void SpriteCB_FaintOpponentMon(struct Sprite *sprite) { yOffset = gMonFrontPicCoords[species].y_offset; } + sprite->data[3] = 8 - yOffset / 8; sprite->data[4] = 1; sprite->callback = SpriteCB_AnimFaintOpponent; @@ -1963,31 +2006,31 @@ static void SpriteCB_AnimFaintOpponent(struct Sprite *sprite) { u8 *dst = (u8 *)gMonSpritesGfxPtr->sprites[GetBattlerPosition(sprite->sBattler)] + (gBattleMonForms[sprite->sBattler] << 11) + (sprite->data[3] << 8); - for (i = 0; i < 0x100; ++i) + for (i = 0; i < 0x100; i++) *(dst++) = 0; StartSpriteAnim(sprite, gBattleMonForms[sprite->sBattler]); } } } -void SpriteCb_ShowAsMoveTarget(struct Sprite *sprite) +// Used when selecting a move, which can hit multiple targets, in double battles. +void SpriteCB_ShowAsMoveTarget(struct Sprite *sprite) { sprite->data[3] = 8; sprite->data[4] = sprite->invisible; - sprite->callback = SpriteCb_BlinkVisible; + sprite->callback = SpriteCB_BlinkVisible; } -static void SpriteCb_BlinkVisible(struct Sprite *sprite) +static void SpriteCB_BlinkVisible(struct Sprite *sprite) { - --sprite->data[3]; - if (sprite->data[3] == 0) + if (--sprite->data[3] == 0) { sprite->invisible ^= 1; sprite->data[3] = 8; } } -void SpriteCb_HideAsMoveTarget(struct Sprite *sprite) +void SpriteCB_HideAsMoveTarget(struct Sprite *sprite) { sprite->invisible = sprite->data[4]; sprite->data[4] = FALSE; @@ -2006,30 +2049,36 @@ static void oac_poke_ally_(struct Sprite *sprite) sprite->x2 -= 2; if (sprite->x2 == 0) { - sprite->callback = SpriteCallbackDummy3; + sprite->callback = SpriteCB_Idle; sprite->data[1] = 0; } } } -void SpriteCB_SetToDummy3(struct Sprite *sprite) +void SetIdleSpriteCallback(struct Sprite *sprite) { - sprite->callback = SpriteCallbackDummy3; + sprite->callback = SpriteCB_Idle; } -static void SpriteCallbackDummy3(struct Sprite *sprite) +static void SpriteCB_Idle(struct Sprite *sprite) { } +#define sSpeedX data[1] +#define sSpeedY data[2] + void SpriteCB_FaintSlideAnim(struct Sprite *sprite) { if (!(gIntroSlideFlags & 1)) { - sprite->x2 += sprite->data[1]; - sprite->y2 += sprite->data[2]; + sprite->x2 += sprite->sSpeedX; + sprite->y2 += sprite->sSpeedY; } } +#define sSpeedX data[1] +#define sSpeedY data[2] + #define sSinIndex data[0] #define sDelta data[1] #define sAmplitude data[2] @@ -2053,6 +2102,7 @@ void DoBounceEffect(u8 battler, u8 which, s8 delta, s8 amplitude) return; break; } + invisibleSpriteId = CreateInvisibleSpriteWithCallback(SpriteCB_BounceEffect); if (which == BOUNCE_HEALTHBOX) { @@ -2098,6 +2148,7 @@ void EndBounceEffect(u8 battler, u8 which) DestroySprite(&gSprites[gBattleSpritesDataPtr->healthBoxesData[battler].battlerBounceSpriteId]); gBattleSpritesDataPtr->healthBoxesData[battler].battlerIsBouncing = 0; } + gSprites[bouncerSpriteId].x2 = 0; gSprites[bouncerSpriteId].y2 = 0; } @@ -2131,7 +2182,7 @@ static void SpriteCB_PlayerThrowUpdate(struct Sprite *sprite) { UpdatePlayerPosInThrowAnim(sprite); if (sprite->animEnded) - sprite->callback = SpriteCallbackDummy3; + sprite->callback = SpriteCB_Idle; } void BattleDummy(void) @@ -2148,7 +2199,8 @@ void BeginBattleIntro(void) static void BattleMainCB1(void) { gBattleMainFunc(); - for (gActiveBattler = 0; gActiveBattler < gBattlersCount; ++gActiveBattler) + + for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++) gBattlerControllerFuncs[gActiveBattler](); } @@ -2160,14 +2212,17 @@ static void BattleStartClearSetData(void) TurnValuesCleanUp(FALSE); SpecialStatusesClear(); - for (i = 0; i < MAX_BATTLERS_COUNT; ++i) + + for (i = 0; i < MAX_BATTLERS_COUNT; i++) { gStatuses3[i] = 0; + dataPtr = (u8 *)&gDisableStructs[i]; - for (j = 0; j < sizeof(struct DisableStruct); ++j) + for (j = 0; j < sizeof(struct DisableStruct); j++) dataPtr[j] = 0; + gDisableStructs[i].isFirstTurn = 2; - gUnknown_2023DD4[i] = 0; + sUnusedBattlersArray[i] = 0; gLastMoves[i] = MOVE_NONE; gLastLandedMoves[i] = MOVE_NONE; gLastHitByType[i] = 0; @@ -2177,31 +2232,41 @@ static void BattleStartClearSetData(void) gLastPrintedMoves[i] = MOVE_NONE; gBattleResources->flags->flags[i] = 0; } - for (i = 0; i < 2; ++i) + + for (i = 0; i < 2; i++) { gSideStatuses[i] = 0; + dataPtr = (u8 *)&gSideTimers[i]; - for (j = 0; j < sizeof(struct SideTimer); ++j) + for (j = 0; j < sizeof(struct SideTimer); j++) dataPtr[j] = 0; } + gBattlerAttacker = 0; gBattlerTarget = 0; gBattleWeather = 0; + dataPtr = (u8 *)&gWishFutureKnock; - for (i = 0; i < sizeof(struct WishFutureKnock); ++i) + for (i = 0; i < sizeof(struct WishFutureKnock); i++) dataPtr[i] = 0; + gHitMarker = 0; + if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_POKEDUDE)) && gSaveBlock2Ptr->optionsBattleSceneOff) gHitMarker |= HITMARKER_NO_ANIMATIONS; + gBattleScripting.battleStyle = gSaveBlock2Ptr->optionsBattleStyle; + gMultiHitCounter = 0; gBattleOutcome = 0; gBattleControllerExecFlags = 0; gPaydayMoney = 0; gBattleResources->battleScriptsStack->size = 0; gBattleResources->battleCallbackStack->size = 0; - for (i = 0; i < BATTLE_COMMUNICATION_ENTRIES_COUNT; ++i) + + for (i = 0; i < BATTLE_COMMUNICATION_ENTRIES_COUNT; i++) gBattleCommunication[i] = 0; + gPauseCounterBattle = 0; gBattleMoveDamage = 0; gIntroSlideFlags = 0; @@ -2218,7 +2283,8 @@ static void BattleStartClearSetData(void) gBattleStruct->safariEscapeFactor = 2; gBattleStruct->wildVictorySong = 0; gBattleStruct->moneyMultiplier = 1; - for (i = 0; i < 8; ++i) + + for (i = 0; i < 8; i++) { *((u8 *)gBattleStruct->lastTakenMove + i) = MOVE_NONE; *((u8 *)gBattleStruct->usedHeldItems + i) = ITEM_NONE; @@ -2232,7 +2298,7 @@ static void BattleStartClearSetData(void) *(gBattleStruct->AI_monToSwitchIntoId + 0) = PARTY_SIZE; *(gBattleStruct->AI_monToSwitchIntoId + 1) = PARTY_SIZE; *(&gBattleStruct->givenExpMons) = 0; - for (i = 0; i < 11; ++i) + for (i = 0; i < 11; i++) gBattleResults.catchAttempts[i] = 0; gBattleResults.battleTurnCounter = 0; gBattleResults.playerFaintCounter = 0; @@ -2248,7 +2314,7 @@ static void BattleStartClearSetData(void) gBattleResults.playerMon1Species = SPECIES_NONE; gBattleResults.playerMon2Species = SPECIES_NONE; gBattleResults.caughtMonSpecies = SPECIES_NONE; - for (i = 0; i < POKEMON_NAME_LENGTH; ++i) + for (i = 0; i < POKEMON_NAME_LENGTH; i++) { gBattleResults.playerMon1Name[i] = 0; gBattleResults.playerMon2Name[i] = 0; @@ -2264,9 +2330,9 @@ void SwitchInClearSetData(void) if (gBattleMoves[gCurrentMove].effect != EFFECT_BATON_PASS) { - for (i = 0; i < NUM_BATTLE_STATS; ++i) - gBattleMons[gActiveBattler].statStages[i] = 6; - for (i = 0; i < gBattlersCount; ++i) + for (i = 0; i < NUM_BATTLE_STATS; i++) + gBattleMons[gActiveBattler].statStages[i] = DEFAULT_STAT_STAGE; + for (i = 0; i < gBattlersCount; i++) { if ((gBattleMons[i].status2 & STATUS2_ESCAPE_PREVENTION) && gDisableStructs[i].battlerPreventingEscape == gActiveBattler) gBattleMons[i].status2 &= ~STATUS2_ESCAPE_PREVENTION; @@ -2281,14 +2347,14 @@ void SwitchInClearSetData(void) { gBattleMons[gActiveBattler].status2 &= (STATUS2_CONFUSION | STATUS2_FOCUS_ENERGY | STATUS2_SUBSTITUTE | STATUS2_ESCAPE_PREVENTION | STATUS2_CURSED); gStatuses3[gActiveBattler] &= (STATUS3_LEECHSEED_BATTLER | STATUS3_LEECHSEED | STATUS3_ALWAYS_HITS | STATUS3_PERISH_SONG | STATUS3_ROOTED | STATUS3_MUDSPORT | STATUS3_WATERSPORT); - for (i = 0; i < gBattlersCount; ++i) + for (i = 0; i < gBattlersCount; i++) { if (GetBattlerSide(gActiveBattler) != GetBattlerSide(i) && (gStatuses3[i] & STATUS3_ALWAYS_HITS) != 0 && (gDisableStructs[i].battlerWithSureHit == gActiveBattler)) { - gStatuses3[i] &= ~(STATUS3_ALWAYS_HITS); - gStatuses3[i] |= 0x10; + gStatuses3[i] &= ~STATUS3_ALWAYS_HITS; + gStatuses3[i] |= STATUS3_ALWAYS_HITS_TURN(2); } } } @@ -2297,18 +2363,22 @@ void SwitchInClearSetData(void) gBattleMons[gActiveBattler].status2 = 0; gStatuses3[gActiveBattler] = 0; } - for (i = 0; i < gBattlersCount; ++i) + + for (i = 0; i < gBattlersCount; i++) { if (gBattleMons[i].status2 & STATUS2_INFATUATED_WITH(gActiveBattler)) - gBattleMons[i].status2 &= ~(STATUS2_INFATUATED_WITH(gActiveBattler)); + gBattleMons[i].status2 &= ~STATUS2_INFATUATED_WITH(gActiveBattler); if ((gBattleMons[i].status2 & STATUS2_WRAPPED) && *(gBattleStruct->wrappedBy + i) == gActiveBattler) - gBattleMons[i].status2 &= ~(STATUS2_WRAPPED); + gBattleMons[i].status2 &= ~STATUS2_WRAPPED; } + gActionSelectionCursor[gActiveBattler] = 0; gMoveSelectionCursor[gActiveBattler] = 0; + ptr = (u8 *)&gDisableStructs[gActiveBattler]; - for (i = 0; i < sizeof(struct DisableStruct); ++i) + for (i = 0; i < sizeof(struct DisableStruct); i++) ptr[i] = 0; + if (gBattleMoves[gCurrentMove].effect == EFFECT_BATON_PASS) { gDisableStructs[gActiveBattler].substituteHP = disableStructCopy.substituteHP; @@ -2317,6 +2387,7 @@ void SwitchInClearSetData(void) gDisableStructs[gActiveBattler].perishSongTimerStartValue = disableStructCopy.perishSongTimerStartValue; gDisableStructs[gActiveBattler].battlerPreventingEscape = disableStructCopy.battlerPreventingEscape; } + gMoveResultFlags = 0; gDisableStructs[gActiveBattler].isFirstTurn = 2; gLastMoves[gActiveBattler] = MOVE_NONE; @@ -2325,6 +2396,7 @@ void SwitchInClearSetData(void) gLastResultingMoves[gActiveBattler] = MOVE_NONE; gLastPrintedMoves[gActiveBattler] = MOVE_NONE; gLastHitBy[gActiveBattler] = 0xFF; + *(gBattleStruct->lastTakenMove + gActiveBattler * 2 + 0) = MOVE_NONE; *(gBattleStruct->lastTakenMove + gActiveBattler * 2 + 1) = MOVE_NONE; *(0 * 2 + gActiveBattler * 8 + (u8 *)(gBattleStruct->lastTakenMoveFrom) + 0) = 0; @@ -2335,7 +2407,8 @@ void SwitchInClearSetData(void) *(2 * 2 + gActiveBattler * 8 + (u8 *)(gBattleStruct->lastTakenMoveFrom) + 1) = 0; *(3 * 2 + gActiveBattler * 8 + (u8 *)(gBattleStruct->lastTakenMoveFrom) + 0) = 0; *(3 * 2 + gActiveBattler * 8 + (u8 *)(gBattleStruct->lastTakenMoveFrom) + 1) = 0; - for (i = 0; i < gBattlersCount; ++i) + + for (i = 0; i < gBattlersCount; i++) { if (i != gActiveBattler) { @@ -2345,8 +2418,10 @@ void SwitchInClearSetData(void) *(i * 8 + gActiveBattler * 2 + (u8 *)(gBattleStruct->lastTakenMoveFrom) + 0) = 0; *(i * 8 + gActiveBattler * 2 + (u8 *)(gBattleStruct->lastTakenMoveFrom) + 1) = 0; } + *((u8 *)(&gBattleStruct->choicedMove[gActiveBattler]) + 0) = MOVE_NONE; *((u8 *)(&gBattleStruct->choicedMove[gActiveBattler]) + 1) = MOVE_NONE; + gBattleResources->flags->flags[gActiveBattler] = 0; gCurrentMove = MOVE_NONE; } @@ -2356,24 +2431,29 @@ void FaintClearSetData(void) s32 i; u8 *ptr; - for (i = 0; i < NUM_BATTLE_STATS; ++i) - gBattleMons[gActiveBattler].statStages[i] = 6; + for (i = 0; i < NUM_BATTLE_STATS; i++) + gBattleMons[gActiveBattler].statStages[i] = DEFAULT_STAT_STAGE; + gBattleMons[gActiveBattler].status2 = 0; gStatuses3[gActiveBattler] = 0; - for (i = 0; i < gBattlersCount; ++i) + + for (i = 0; i < gBattlersCount; i++) { if ((gBattleMons[i].status2 & STATUS2_ESCAPE_PREVENTION) && gDisableStructs[i].battlerPreventingEscape == gActiveBattler) gBattleMons[i].status2 &= ~STATUS2_ESCAPE_PREVENTION; if (gBattleMons[i].status2 & STATUS2_INFATUATED_WITH(gActiveBattler)) - gBattleMons[i].status2 &= ~(STATUS2_INFATUATED_WITH(gActiveBattler)); + gBattleMons[i].status2 &= ~STATUS2_INFATUATED_WITH(gActiveBattler); if ((gBattleMons[i].status2 & STATUS2_WRAPPED) && *(gBattleStruct->wrappedBy + i) == gActiveBattler) - gBattleMons[i].status2 &= ~(STATUS2_WRAPPED); + gBattleMons[i].status2 &= ~STATUS2_WRAPPED; } + gActionSelectionCursor[gActiveBattler] = 0; gMoveSelectionCursor[gActiveBattler] = 0; + ptr = (u8 *)&gDisableStructs[gActiveBattler]; - for (i = 0; i < sizeof(struct DisableStruct); ++i) + for (i = 0; i < sizeof(struct DisableStruct); i++) ptr[i] = 0; + gProtectStructs[gActiveBattler].protected = FALSE; gProtectStructs[gActiveBattler].endured = FALSE; gProtectStructs[gActiveBattler].noValidMoves = FALSE; @@ -2385,7 +2465,7 @@ void FaintClearSetData(void) gProtectStructs[gActiveBattler].confusionSelfDmg = FALSE; gProtectStructs[gActiveBattler].targetNotAffected = FALSE; gProtectStructs[gActiveBattler].chargingTurn = FALSE; - gProtectStructs[gActiveBattler].fleeFlag = 0; + gProtectStructs[gActiveBattler].fleeType = 0; gProtectStructs[gActiveBattler].usedImprisonedMove = FALSE; gProtectStructs[gActiveBattler].loveImmobility = FALSE; gProtectStructs[gActiveBattler].usedDisabledMove = FALSE; @@ -2393,15 +2473,19 @@ void FaintClearSetData(void) gProtectStructs[gActiveBattler].flag2Unknown = FALSE; gProtectStructs[gActiveBattler].flinchImmobility = FALSE; gProtectStructs[gActiveBattler].notFirstStrike = FALSE; + gDisableStructs[gActiveBattler].isFirstTurn = 2; + gLastMoves[gActiveBattler] = MOVE_NONE; gLastLandedMoves[gActiveBattler] = MOVE_NONE; - gLastHitByType[gActiveBattler] = MOVE_NONE; + gLastHitByType[gActiveBattler] = 0; gLastResultingMoves[gActiveBattler] = MOVE_NONE; gLastPrintedMoves[gActiveBattler] = MOVE_NONE; gLastHitBy[gActiveBattler] = 0xFF; + *((u8 *)(&gBattleStruct->choicedMove[gActiveBattler]) + 0) = MOVE_NONE; *((u8 *)(&gBattleStruct->choicedMove[gActiveBattler]) + 1) = MOVE_NONE; + *(gBattleStruct->lastTakenMove + gActiveBattler * 2 + 0) = MOVE_NONE; *(gBattleStruct->lastTakenMove + gActiveBattler * 2 + 1) = MOVE_NONE; *(0 * 2 + gActiveBattler * 8 + (u8 *)(gBattleStruct->lastTakenMoveFrom) + 0) = 0; @@ -2412,7 +2496,8 @@ void FaintClearSetData(void) *(2 * 2 + gActiveBattler * 8 + (u8 *)(gBattleStruct->lastTakenMoveFrom) + 1) = 0; *(3 * 2 + gActiveBattler * 8 + (u8 *)(gBattleStruct->lastTakenMoveFrom) + 0) = 0; *(3 * 2 + gActiveBattler * 8 + (u8 *)(gBattleStruct->lastTakenMoveFrom) + 1) = 0; - for (i = 0; i < gBattlersCount; ++i) + + for (i = 0; i < gBattlersCount; i++) { if (i != gActiveBattler) { @@ -2435,12 +2520,12 @@ static void BattleIntroGetMonsData(void) gActiveBattler = gBattleCommunication[1]; BtlController_EmitGetMonData(BUFFER_A, REQUEST_ALL_BATTLE, 0); MarkBattlerForControllerExec(gActiveBattler); - ++gBattleCommunication[MULTIUSE_STATE]; + gBattleCommunication[MULTIUSE_STATE]++; break; case 1: if (gBattleControllerExecFlags == 0) { - ++gBattleCommunication[1]; + gBattleCommunication[1]++; if (gBattleCommunication[1] == gBattlersCount) gBattleMainFunc = BattleIntroPrepareBackgroundSlide; else @@ -2455,7 +2540,7 @@ static void BattleIntroPrepareBackgroundSlide(void) if (gBattleControllerExecFlags == 0) { gActiveBattler = GetBattlerAtPosition(0); - BtlController_EmitIntroSlide(0, gBattleTerrain); + BtlController_EmitIntroSlide(BUFFER_A, gBattleTerrain); MarkBattlerForControllerExec(gActiveBattler); gBattleMainFunc = BattleIntroDrawTrainersOrMonsSprites; gBattleCommunication[MULTIUSE_STATE] = 0; @@ -2468,85 +2553,90 @@ static void BattleIntroDrawTrainersOrMonsSprites(void) u8 *ptr; s32 i; - if (gBattleControllerExecFlags == 0) - { - for (gActiveBattler = 0; gActiveBattler < gBattlersCount; ++gActiveBattler) - { - if ((gBattleTypeFlags & BATTLE_TYPE_SAFARI) - && GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) - { - ptr = (u8 *)&gBattleMons[gActiveBattler]; - for (i = 0; i < sizeof(struct BattlePokemon); ++i) - ptr[i] = 0; - } - else - { - u16 *hpOnSwitchout; + if (gBattleControllerExecFlags) + return; - ptr = (u8 *)&gBattleMons[gActiveBattler]; - for (i = 0; i < sizeof(struct BattlePokemon); ++i) - ptr[i] = gBattleBufferB[gActiveBattler][4 + i]; - gBattleMons[gActiveBattler].type1 = gBaseStats[gBattleMons[gActiveBattler].species].type1; - gBattleMons[gActiveBattler].type2 = gBaseStats[gBattleMons[gActiveBattler].species].type2; - gBattleMons[gActiveBattler].ability = GetAbilityBySpecies(gBattleMons[gActiveBattler].species, gBattleMons[gActiveBattler].abilityNum); - hpOnSwitchout = &gBattleStruct->hpOnSwitchout[GetBattlerSide(gActiveBattler)]; - *hpOnSwitchout = gBattleMons[gActiveBattler].hp; - for (i = 0; i < NUM_BATTLE_STATS; ++i) - gBattleMons[gActiveBattler].statStages[i] = 6; - gBattleMons[gActiveBattler].status2 = 0; - } - if (GetBattlerPosition(gActiveBattler) == B_POSITION_PLAYER_LEFT) + for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++) + { + if ((gBattleTypeFlags & BATTLE_TYPE_SAFARI) + && GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) + { + ptr = (u8 *)&gBattleMons[gActiveBattler]; + for (i = 0; i < sizeof(struct BattlePokemon); i++) + ptr[i] = 0; + } + else + { + u16 *hpOnSwitchout; + + ptr = (u8 *)&gBattleMons[gActiveBattler]; + for (i = 0; i < sizeof(struct BattlePokemon); i++) + ptr[i] = gBattleBufferB[gActiveBattler][4 + i]; + + gBattleMons[gActiveBattler].type1 = gBaseStats[gBattleMons[gActiveBattler].species].type1; + gBattleMons[gActiveBattler].type2 = gBaseStats[gBattleMons[gActiveBattler].species].type2; + gBattleMons[gActiveBattler].ability = GetAbilityBySpecies(gBattleMons[gActiveBattler].species, gBattleMons[gActiveBattler].abilityNum); + hpOnSwitchout = &gBattleStruct->hpOnSwitchout[GetBattlerSide(gActiveBattler)]; + *hpOnSwitchout = gBattleMons[gActiveBattler].hp; + for (i = 0; i < NUM_BATTLE_STATS; i++) + gBattleMons[gActiveBattler].statStages[i] = DEFAULT_STAT_STAGE; + gBattleMons[gActiveBattler].status2 = 0; + } + + if (GetBattlerPosition(gActiveBattler) == B_POSITION_PLAYER_LEFT) + { + BtlController_EmitDrawTrainerPic(BUFFER_A); + MarkBattlerForControllerExec(gActiveBattler); + } + + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + { + if (GetBattlerPosition(gActiveBattler) == B_POSITION_OPPONENT_LEFT) { - BtlController_EmitDrawTrainerPic(0); + BtlController_EmitDrawTrainerPic(BUFFER_A); MarkBattlerForControllerExec(gActiveBattler); } - if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + if (GetBattlerSide(gActiveBattler) == B_SIDE_OPPONENT + && !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER + | BATTLE_TYPE_POKEDUDE + | BATTLE_TYPE_LINK + | BATTLE_TYPE_GHOST + | BATTLE_TYPE_OLD_MAN_TUTORIAL + | BATTLE_TYPE_LEGENDARY))) { - if (GetBattlerPosition(gActiveBattler) == B_POSITION_OPPONENT_LEFT) - { - BtlController_EmitDrawTrainerPic(0); - MarkBattlerForControllerExec(gActiveBattler); - } - if (GetBattlerSide(gActiveBattler) == B_SIDE_OPPONENT - && !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER - | BATTLE_TYPE_POKEDUDE - | BATTLE_TYPE_LINK - | BATTLE_TYPE_GHOST - | BATTLE_TYPE_OLD_MAN_TUTORIAL - | BATTLE_TYPE_LEGENDARY))) - HandleSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBattler].species), FLAG_SET_SEEN, gBattleMons[gActiveBattler].personality); + HandleSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBattler].species), FLAG_SET_SEEN, gBattleMons[gActiveBattler].personality); } - else + } + else + { + if (GetBattlerSide(gActiveBattler) == B_SIDE_OPPONENT) { - if (GetBattlerSide(gActiveBattler) == B_SIDE_OPPONENT) + if (gBattleTypeFlags & (BATTLE_TYPE_GHOST | BATTLE_TYPE_GHOST_UNVEILED)) { - if (gBattleTypeFlags & (BATTLE_TYPE_GHOST | BATTLE_TYPE_GHOST_UNVEILED)) - { - if (!IS_BATTLE_TYPE_GHOST_WITHOUT_SCOPE(gBattleTypeFlags)) - HandleSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBattler].species), FLAG_SET_SEEN, gBattleMons[gActiveBattler].personality); - } - else if (!(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER - | BATTLE_TYPE_POKEDUDE - | BATTLE_TYPE_LINK - | BATTLE_TYPE_GHOST - | BATTLE_TYPE_OLD_MAN_TUTORIAL - | BATTLE_TYPE_LEGENDARY))) - { + if (!IS_BATTLE_TYPE_GHOST_WITHOUT_SCOPE(gBattleTypeFlags)) HandleSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBattler].species), FLAG_SET_SEEN, gBattleMons[gActiveBattler].personality); - } - BtlController_EmitLoadMonSprite(0); - MarkBattlerForControllerExec(gActiveBattler); } - } - if (gBattleTypeFlags & BATTLE_TYPE_MULTI - && (GetBattlerPosition(gActiveBattler) == B_POSITION_PLAYER_RIGHT || GetBattlerPosition(gActiveBattler) == B_POSITION_OPPONENT_RIGHT)) - { - BtlController_EmitDrawTrainerPic(0); + else if (!(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER + | BATTLE_TYPE_POKEDUDE + | BATTLE_TYPE_LINK + | BATTLE_TYPE_GHOST + | BATTLE_TYPE_OLD_MAN_TUTORIAL + | BATTLE_TYPE_LEGENDARY))) + { + HandleSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBattler].species), FLAG_SET_SEEN, gBattleMons[gActiveBattler].personality); + } + BtlController_EmitLoadMonSprite(0); MarkBattlerForControllerExec(gActiveBattler); } } - gBattleMainFunc = BattleIntroDrawPartySummaryScreens; + if (gBattleTypeFlags & BATTLE_TYPE_MULTI + && (GetBattlerPosition(gActiveBattler) == B_POSITION_PLAYER_RIGHT || GetBattlerPosition(gActiveBattler) == B_POSITION_OPPONENT_RIGHT)) + { + BtlController_EmitDrawTrainerPic(BUFFER_A); + MarkBattlerForControllerExec(gActiveBattler); + } } + gBattleMainFunc = BattleIntroDrawPartySummaryScreens; } static void BattleIntroDrawPartySummaryScreens(void) @@ -2554,68 +2644,71 @@ static void BattleIntroDrawPartySummaryScreens(void) s32 i; struct HpAndStatus hpStatus[PARTY_SIZE]; - if (gBattleControllerExecFlags == 0) - { - if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) - { - for (i = 0; i < PARTY_SIZE; ++i) - { - if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_NONE - || GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_EGG) - { - hpStatus[i].hp = 0xFFFF; - hpStatus[i].status = 0; - } - else - { - hpStatus[i].hp = GetMonData(&gEnemyParty[i], MON_DATA_HP); - hpStatus[i].status = GetMonData(&gEnemyParty[i], MON_DATA_STATUS); - } - } - gActiveBattler = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); - BtlController_EmitDrawPartyStatusSummary(0, hpStatus, 0x80); - MarkBattlerForControllerExec(gActiveBattler); - for (i = 0; i < PARTY_SIZE; ++i) - { - if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) == SPECIES_NONE - || GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) == SPECIES_EGG) - { - hpStatus[i].hp = 0xFFFF; - hpStatus[i].status = 0; - } - else - { - hpStatus[i].hp = GetMonData(&gPlayerParty[i], MON_DATA_HP); - hpStatus[i].status = GetMonData(&gPlayerParty[i], MON_DATA_STATUS); - } - } - gActiveBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); - BtlController_EmitDrawPartyStatusSummary(0, hpStatus, 0x80); - MarkBattlerForControllerExec(gActiveBattler); + if (gBattleControllerExecFlags) + return; - gBattleMainFunc = BattleIntroPrintTrainerWantsToBattle; - } - else + if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) + { + for (i = 0; i < PARTY_SIZE; i++) { - // The struct gets set here, but nothing is ever done with it since - // wild battles don't show the party summary. - // Still, there's no point in having dead code. - for (i = 0; i < PARTY_SIZE; ++i) + if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_NONE + || GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2) == SPECIES_EGG) { - if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) == SPECIES_NONE - || GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) == SPECIES_EGG) - { - hpStatus[i].hp = 0xFFFF; - hpStatus[i].status = 0; - } - else - { - hpStatus[i].hp = GetMonData(&gPlayerParty[i], MON_DATA_HP); - hpStatus[i].status = GetMonData(&gPlayerParty[i], MON_DATA_STATUS); - } + hpStatus[i].hp = HP_EMPTY_SLOT; + hpStatus[i].status = 0; + } + else + { + hpStatus[i].hp = GetMonData(&gEnemyParty[i], MON_DATA_HP); + hpStatus[i].status = GetMonData(&gEnemyParty[i], MON_DATA_STATUS); } - gBattleMainFunc = BattleIntroPrintWildMonAttacked; } + gActiveBattler = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); + BtlController_EmitDrawPartyStatusSummary(BUFFER_A, hpStatus, PARTY_SUMM_SKIP_DRAW_DELAY); + MarkBattlerForControllerExec(gActiveBattler); + + for (i = 0; i < PARTY_SIZE; i++) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) == SPECIES_NONE + || GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) == SPECIES_EGG) + { + hpStatus[i].hp = HP_EMPTY_SLOT; + hpStatus[i].status = 0; + } + else + { + hpStatus[i].hp = GetMonData(&gPlayerParty[i], MON_DATA_HP); + hpStatus[i].status = GetMonData(&gPlayerParty[i], MON_DATA_STATUS); + } + } + gActiveBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); + BtlController_EmitDrawPartyStatusSummary(BUFFER_A, hpStatus, PARTY_SUMM_SKIP_DRAW_DELAY); + MarkBattlerForControllerExec(gActiveBattler); + + gBattleMainFunc = BattleIntroPrintTrainerWantsToBattle; + } + else + { + // The struct gets set here, but nothing is ever done with it since + // wild battles don't show the party summary. + // Still, there's no point in having dead code. + + for (i = 0; i < PARTY_SIZE; i++) + { + if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) == SPECIES_NONE + || GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2) == SPECIES_EGG) + { + hpStatus[i].hp = HP_EMPTY_SLOT; + hpStatus[i].status = 0; + } + else + { + hpStatus[i].hp = GetMonData(&gPlayerParty[i], MON_DATA_HP); + hpStatus[i].status = GetMonData(&gPlayerParty[i], MON_DATA_STATUS); + } + } + + gBattleMainFunc = BattleIntroPrintWildMonAttacked; } } @@ -2656,7 +2749,7 @@ static void BattleIntroOpponentSendsOutMonAnimation(void) { if (gBattleControllerExecFlags == 0) { - for (gActiveBattler = 0; gActiveBattler < gBattlersCount; ++gActiveBattler) + for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++) { if (GetBattlerPosition(gActiveBattler) == B_POSITION_OPPONENT_LEFT) { @@ -2677,7 +2770,7 @@ static void BattleIntroRecordMonsToDex(void) { if (gBattleControllerExecFlags == 0) { - for (gActiveBattler = 0; gActiveBattler < gBattlersCount; ++gActiveBattler) + for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++) if (GetBattlerSide(gActiveBattler) == B_SIDE_OPPONENT && !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_POKEDUDE @@ -2697,7 +2790,7 @@ static void Unused_AutoProgressToIntro(void) gBattleMainFunc = BattleIntroPrintPlayerSendsOut; } -void BattleIntroPrintPlayerSendsOut(void) +static void BattleIntroPrintPlayerSendsOut(void) { if (gBattleControllerExecFlags == 0) { @@ -2711,34 +2804,35 @@ static void BattleIntroPlayerSendsOutMonAnimation(void) { u32 position; - if (gBattleControllerExecFlags == 0) + if (gBattleControllerExecFlags) + return; + + for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++) { - for (gActiveBattler = 0; gActiveBattler < gBattlersCount; ++gActiveBattler) + if (GetBattlerPosition(gActiveBattler) == B_POSITION_PLAYER_LEFT) { - if (GetBattlerPosition(gActiveBattler) == B_POSITION_PLAYER_LEFT) - { - BtlController_EmitIntroTrainerBallThrow(0); - MarkBattlerForControllerExec(gActiveBattler); - } - if (gBattleTypeFlags & BATTLE_TYPE_MULTI && GetBattlerPosition(gActiveBattler) == B_POSITION_PLAYER_RIGHT) - { - BtlController_EmitIntroTrainerBallThrow(0); - MarkBattlerForControllerExec(gActiveBattler); - } + BtlController_EmitIntroTrainerBallThrow(0); + MarkBattlerForControllerExec(gActiveBattler); + } + if (gBattleTypeFlags & BATTLE_TYPE_MULTI && GetBattlerPosition(gActiveBattler) == B_POSITION_PLAYER_RIGHT) + { + BtlController_EmitIntroTrainerBallThrow(0); + MarkBattlerForControllerExec(gActiveBattler); } - gBattleStruct->switchInAbilitiesCounter = 0; - gBattleStruct->switchInItemsCounter = 0; - gBattleStruct->overworldWeatherDone = FALSE; - gBattleMainFunc = TryDoEventsBeforeFirstTurn; } + gBattleStruct->switchInAbilitiesCounter = 0; + gBattleStruct->switchInItemsCounter = 0; + gBattleStruct->overworldWeatherDone = FALSE; + + gBattleMainFunc = TryDoEventsBeforeFirstTurn; } -// not used -static void Unused_AutoProgressToSwitchInAnims(void) +// Unused +static void BattleIntroSwitchInPlayerMons(void) { if (gBattleControllerExecFlags == 0) { - for (gActiveBattler = 0; gActiveBattler < gBattlersCount; ++gActiveBattler) + for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++) { if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) { @@ -2746,9 +2840,11 @@ static void Unused_AutoProgressToSwitchInAnims(void) MarkBattlerForControllerExec(gActiveBattler); } } + gBattleStruct->switchInAbilitiesCounter = 0; gBattleStruct->switchInItemsCounter = 0; gBattleStruct->overworldWeatherDone = FALSE; + gBattleMainFunc = TryDoEventsBeforeFirstTurn; } } @@ -2758,73 +2854,72 @@ static void TryDoEventsBeforeFirstTurn(void) s32 i, j; u8 effect = 0; - if (gBattleControllerExecFlags == 0) - { + if (gBattleControllerExecFlags) + return; - if (gBattleStruct->switchInAbilitiesCounter == 0) - { - for (i = 0; i < gBattlersCount; ++i) - gBattlerByTurnOrder[i] = i; - for (i = 0; i < gBattlersCount - 1; ++i) - for (j = i + 1; j < gBattlersCount; ++j) - if (GetWhoStrikesFirst(gBattlerByTurnOrder[i], gBattlerByTurnOrder[j], TRUE) != 0) - SwapTurnOrder(i, j); - } - if (!gBattleStruct->overworldWeatherDone - && AbilityBattleEffects(0, 0, 0, ABILITYEFFECT_SWITCH_IN_WEATHER, 0) != 0) - { - gBattleStruct->overworldWeatherDone = TRUE; - return; - } - // Check all switch in abilities happening from the fastest mon to slowest. - while (gBattleStruct->switchInAbilitiesCounter < gBattlersCount) - { - if (AbilityBattleEffects(ABILITYEFFECT_ON_SWITCHIN, gBattlerByTurnOrder[gBattleStruct->switchInAbilitiesCounter], 0, 0, 0) != 0) - ++effect; - ++gBattleStruct->switchInAbilitiesCounter; - if (effect) - return; - } - if (AbilityBattleEffects(ABILITYEFFECT_INTIMIDATE1, 0, 0, 0, 0) != 0) - return; - if (AbilityBattleEffects(ABILITYEFFECT_TRACE, 0, 0, 0, 0) != 0) - return; - // Check all switch in items having effect from the fastest mon to slowest. - while (gBattleStruct->switchInItemsCounter < gBattlersCount) - { - if (ItemBattleEffects(ITEMEFFECT_ON_SWITCH_IN, gBattlerByTurnOrder[gBattleStruct->switchInItemsCounter], FALSE)) - ++effect; - ++gBattleStruct->switchInItemsCounter; - if (effect) - return; - } - for (i = 0; i < gBattlersCount; ++i) // pointless, ruby leftover - ; - for (i = 0; i < MAX_BATTLERS_COUNT; ++i) - { - *(gBattleStruct->monToSwitchIntoId + i) = PARTY_SIZE; - gChosenActionByBattler[i] = B_ACTION_NONE; - gChosenMoveByBattler[i] = MOVE_NONE; - } - TurnValuesCleanUp(FALSE); - SpecialStatusesClear(); - *(&gBattleStruct->absentBattlerFlags) = gAbsentBattlerFlags; - gBattleMainFunc = HandleTurnActionSelectionState; - ResetSentPokesToOpponentValue(); - for (i = 0; i < BATTLE_COMMUNICATION_ENTRIES_COUNT; ++i) - gBattleCommunication[i] = 0; - for (i = 0; i < gBattlersCount; ++i) - gBattleMons[i].status2 &= ~(STATUS2_FLINCHED); - *(&gBattleStruct->turnEffectsTracker) = 0; - *(&gBattleStruct->turnEffectsBattlerId) = 0; - *(&gBattleStruct->wishPerishSongState) = 0; - *(&gBattleStruct->wishPerishSongBattlerId) = 0; - gBattleScripting.moveendState = 0; - gBattleStruct->faintedActionsState = 0; - gBattleStruct->turnCountersTracker = 0; - gMoveResultFlags = 0; - gRandomTurnNumber = Random(); + if (gBattleStruct->switchInAbilitiesCounter == 0) + { + for (i = 0; i < gBattlersCount; i++) + gBattlerByTurnOrder[i] = i; + for (i = 0; i < gBattlersCount - 1; i++) + for (j = i + 1; j < gBattlersCount; j++) + if (GetWhoStrikesFirst(gBattlerByTurnOrder[i], gBattlerByTurnOrder[j], TRUE) != 0) + SwapTurnOrder(i, j); } + if (!gBattleStruct->overworldWeatherDone + && AbilityBattleEffects(0, 0, 0, ABILITYEFFECT_SWITCH_IN_WEATHER, 0) != 0) + { + gBattleStruct->overworldWeatherDone = TRUE; + return; + } + // Check all switch in abilities happening from the fastest mon to slowest. + while (gBattleStruct->switchInAbilitiesCounter < gBattlersCount) + { + if (AbilityBattleEffects(ABILITYEFFECT_ON_SWITCHIN, gBattlerByTurnOrder[gBattleStruct->switchInAbilitiesCounter], 0, 0, 0) != 0) + effect++; + ++gBattleStruct->switchInAbilitiesCounter; + if (effect != 0) + return; + } + if (AbilityBattleEffects(ABILITYEFFECT_INTIMIDATE1, 0, 0, 0, 0) != 0) + return; + if (AbilityBattleEffects(ABILITYEFFECT_TRACE, 0, 0, 0, 0) != 0) + return; + // Check all switch in items having effect from the fastest mon to slowest. + while (gBattleStruct->switchInItemsCounter < gBattlersCount) + { + if (ItemBattleEffects(ITEMEFFECT_ON_SWITCH_IN, gBattlerByTurnOrder[gBattleStruct->switchInItemsCounter], FALSE)) + effect++; + ++gBattleStruct->switchInItemsCounter; + if (effect != 0) + return; + } + for (i = 0; i < gBattlersCount; i++) // pointless, ruby leftover + ; + for (i = 0; i < MAX_BATTLERS_COUNT; i++) + { + *(gBattleStruct->monToSwitchIntoId + i) = PARTY_SIZE; + gChosenActionByBattler[i] = B_ACTION_NONE; + gChosenMoveByBattler[i] = MOVE_NONE; + } + TurnValuesCleanUp(FALSE); + SpecialStatusesClear(); + *(&gBattleStruct->absentBattlerFlags) = gAbsentBattlerFlags; + gBattleMainFunc = HandleTurnActionSelectionState; + ResetSentPokesToOpponentValue(); + for (i = 0; i < BATTLE_COMMUNICATION_ENTRIES_COUNT; i++) + gBattleCommunication[i] = 0; + for (i = 0; i < gBattlersCount; i++) + gBattleMons[i].status2 &= ~(STATUS2_FLINCHED); + *(&gBattleStruct->turnEffectsTracker) = 0; + *(&gBattleStruct->turnEffectsBattlerId) = 0; + *(&gBattleStruct->wishPerishSongState) = 0; + *(&gBattleStruct->wishPerishSongBattlerId) = 0; + gBattleScripting.moveendState = 0; + gBattleStruct->faintedActionsState = 0; + gBattleStruct->turnCountersTracker = 0; + gMoveResultFlags = 0; + gRandomTurnNumber = Random(); } static void HandleEndTurn_ContinueBattle(void) @@ -2834,9 +2929,9 @@ static void HandleEndTurn_ContinueBattle(void) if (gBattleControllerExecFlags == 0) { gBattleMainFunc = BattleTurnPassed; - for (i = 0; i < BATTLE_COMMUNICATION_ENTRIES_COUNT; ++i) + for (i = 0; i < BATTLE_COMMUNICATION_ENTRIES_COUNT; i++) gBattleCommunication[i] = 0; - for (i = 0; i < gBattlersCount; ++i) + for (i = 0; i < gBattlersCount; i++) { gBattleMons[i].status2 &= ~(STATUS2_FLINCHED); if ((gBattleMons[i].status1 & STATUS1_SLEEP) && (gBattleMons[i].status2 & STATUS2_MULTIPLETURNS)) @@ -2878,7 +2973,7 @@ void BattleTurnPassed(void) gBattleScripting.moveendState = 0; gBattleMoveDamage = 0; gMoveResultFlags = 0; - for (i = 0; i < 5; ++i) + for (i = 0; i < 5; i++) gBattleCommunication[i] = 0; if (gBattleOutcome != 0) { @@ -2888,12 +2983,12 @@ void BattleTurnPassed(void) } if (gBattleResults.battleTurnCounter < 0xFF) ++gBattleResults.battleTurnCounter; - for (i = 0; i < gBattlersCount; ++i) + for (i = 0; i < gBattlersCount; i++) { gChosenActionByBattler[i] = B_ACTION_NONE; gChosenMoveByBattler[i] = MOVE_NONE; } - for (i = 0; i < MAX_BATTLERS_COUNT; ++i) + for (i = 0; i < MAX_BATTLERS_COUNT; i++) *(gBattleStruct->monToSwitchIntoId + i) = PARTY_SIZE; *(&gBattleStruct->absentBattlerFlags) = gAbsentBattlerFlags; gBattleMainFunc = HandleTurnActionSelectionState; @@ -2916,7 +3011,7 @@ u8 IsRunningFromBattleImpossible(void) || gBattleMons[gActiveBattler].ability == ABILITY_RUN_AWAY) return BATTLE_RUN_SUCCESS; side = GetBattlerSide(gActiveBattler); - for (i = 0; i < gBattlersCount; ++i) + for (i = 0; i < gBattlersCount; i++) { if (side != GetBattlerSide(i) && gBattleMons[i].ability == ABILITY_SHADOW_TAG) @@ -2964,14 +3059,14 @@ void UpdatePartyOwnerOnSwitch_NonMulti(u8 battler) s32 i; u8 r4, r1; - for (i = 0; i < 3; ++i) + for (i = 0; i < 3; i++) gBattlePartyCurrentOrder[i] = *(battler * 3 + i + (u8 *)(gBattleStruct->battlerPartyOrders)); r4 = GetPartyIdFromBattlePartyId(gBattlerPartyIndexes[battler]); r1 = GetPartyIdFromBattlePartyId(*(gBattleStruct->monToSwitchIntoId + battler)); SwitchPartyMonSlots(r4, r1); if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) { - for (i = 0; i < 3; ++i) + for (i = 0; i < 3; i++) { *(battler * 3 + i + (u8 *)(gBattleStruct->battlerPartyOrders)) = gBattlePartyCurrentOrder[i]; *(BATTLE_PARTNER(battler) * 3 + i + (u8 *)(gBattleStruct->battlerPartyOrders)) = gBattlePartyCurrentOrder[i]; @@ -2979,7 +3074,7 @@ void UpdatePartyOwnerOnSwitch_NonMulti(u8 battler) } else { - for (i = 0; i < 3; ++i) + for (i = 0; i < 3; i++) *(battler * 3 + i + (u8 *)(gBattleStruct->battlerPartyOrders)) = gBattlePartyCurrentOrder[i]; } } @@ -3000,7 +3095,7 @@ static void HandleTurnActionSelectionState(void) s32 i; gBattleCommunication[ACTIONS_CONFIRMED_COUNT] = 0; - for (gActiveBattler = 0; gActiveBattler < gBattlersCount; ++gActiveBattler) + for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++) { u8 position = GetBattlerPosition(gActiveBattler); @@ -3033,7 +3128,7 @@ static void HandleTurnActionSelectionState(void) { BtlController_EmitChooseAction(0, gChosenActionByBattler[0], gBattleBufferB[0][1] | (gBattleBufferB[0][2] << 8)); MarkBattlerForControllerExec(gActiveBattler); - ++gBattleCommunication[gActiveBattler]; + gBattleCommunication[gActiveBattler]++; } } } @@ -3067,7 +3162,7 @@ static void HandleTurnActionSelectionState(void) moveInfo.species = gBattleMons[gActiveBattler].species; moveInfo.monType1 = gBattleMons[gActiveBattler].type1; moveInfo.monType2 = gBattleMons[gActiveBattler].type2; - for (i = 0; i < MAX_MON_MOVES; ++i) + for (i = 0; i < MAX_MON_MOVES; i++) { moveInfo.moves[i] = gBattleMons[gActiveBattler].moves[i]; moveInfo.currentPp[i] = gBattleMons[gActiveBattler].pp[i]; @@ -3155,7 +3250,7 @@ static void HandleTurnActionSelectionState(void) } else { - ++gBattleCommunication[gActiveBattler]; + gBattleCommunication[gActiveBattler]++; } } break; @@ -3188,7 +3283,7 @@ static void HandleTurnActionSelectionState(void) *(gBattleStruct->chosenMovePositions + gActiveBattler) = gBattleBufferB[gActiveBattler][2]; gChosenMoveByBattler[gActiveBattler] = gBattleMons[gActiveBattler].moves[*(gBattleStruct->chosenMovePositions + gActiveBattler)]; *(gBattleStruct->moveTarget + gActiveBattler) = gBattleBufferB[gActiveBattler][3]; - ++gBattleCommunication[gActiveBattler]; + gBattleCommunication[gActiveBattler]++; } break; } @@ -3201,7 +3296,7 @@ static void HandleTurnActionSelectionState(void) else { gLastUsedItem = (gBattleBufferB[gActiveBattler][1] | (gBattleBufferB[gActiveBattler][2] << 8)); - ++gBattleCommunication[gActiveBattler]; + gBattleCommunication[gActiveBattler]++; } break; case B_ACTION_SWITCH: @@ -3221,29 +3316,29 @@ static void HandleTurnActionSelectionState(void) *((gActiveBattler ^ BIT_FLANK) * 3 + (u8 *)(gBattleStruct->battlerPartyOrders) + 0) |= (gBattleBufferB[gActiveBattler][2] & 0xF0) >> 4; *((gActiveBattler ^ BIT_FLANK) * 3 + (u8 *)(gBattleStruct->battlerPartyOrders) + 2) = gBattleBufferB[gActiveBattler][3]; } - ++gBattleCommunication[gActiveBattler]; + gBattleCommunication[gActiveBattler]++; } break; case B_ACTION_RUN: gHitMarker |= HITMARKER_RUN; - ++gBattleCommunication[gActiveBattler]; + gBattleCommunication[gActiveBattler]++; break; case B_ACTION_SAFARI_WATCH_CAREFULLY: - ++gBattleCommunication[gActiveBattler]; + gBattleCommunication[gActiveBattler]++; break; case B_ACTION_SAFARI_BALL: - ++gBattleCommunication[gActiveBattler]; + gBattleCommunication[gActiveBattler]++; break; case B_ACTION_SAFARI_BAIT: case B_ACTION_SAFARI_GO_NEAR: - ++gBattleCommunication[gActiveBattler]; + gBattleCommunication[gActiveBattler]++; break; case B_ACTION_SAFARI_RUN: gHitMarker |= HITMARKER_RUN; - ++gBattleCommunication[gActiveBattler]; + gBattleCommunication[gActiveBattler]++; break; case B_ACTION_OLDMAN_THROW: - ++gBattleCommunication[gActiveBattler]; + gBattleCommunication[gActiveBattler]++; break; } } @@ -3258,7 +3353,7 @@ static void HandleTurnActionSelectionState(void) else BtlController_EmitLinkStandbyMsg(BUFFER_A, LINK_STANDBY_STOP_BOUNCE_ONLY); MarkBattlerForControllerExec(gActiveBattler); - ++gBattleCommunication[gActiveBattler]; + gBattleCommunication[gActiveBattler]++; } break; case STATE_WAIT_ACTION_CONFIRMED: @@ -3310,12 +3405,12 @@ u8 GetWhoStrikesFirst(u8 battler1, u8 battler2, bool8 ignoreChosenMoves) if (WEATHER_HAS_EFFECT) { if ((gBattleMons[battler1].ability == ABILITY_SWIFT_SWIM && gBattleWeather & B_WEATHER_RAIN) - || (gBattleMons[battler1].ability == ABILITY_CHLOROPHYLL && gBattleWeather & B_WEATHER_SUN)) + || (gBattleMons[battler1].ability == ABILITY_CHLOROPHYLL && gBattleWeather & B_WEATHER_SUN)) speedMultiplierBattler1 = 2; else speedMultiplierBattler1 = 1; if ((gBattleMons[battler2].ability == ABILITY_SWIFT_SWIM && gBattleWeather & B_WEATHER_RAIN) - || (gBattleMons[battler2].ability == ABILITY_CHLOROPHYLL && gBattleWeather & B_WEATHER_SUN)) + || (gBattleMons[battler2].ability == ABILITY_CHLOROPHYLL && gBattleWeather & B_WEATHER_SUN)) speedMultiplierBattler2 = 2; else speedMultiplierBattler2 = 1; @@ -3325,9 +3420,11 @@ u8 GetWhoStrikesFirst(u8 battler1, u8 battler2, bool8 ignoreChosenMoves) speedMultiplierBattler1 = 1; speedMultiplierBattler2 = 1; } + speedBattler1 = (gBattleMons[battler1].speed * speedMultiplierBattler1) - * (gStatStageRatios[gBattleMons[battler1].statStages[STAT_SPEED]][0]) - / (gStatStageRatios[gBattleMons[battler1].statStages[STAT_SPEED]][1]); + * (gStatStageRatios[gBattleMons[battler1].statStages[STAT_SPEED]][0]) + / (gStatStageRatios[gBattleMons[battler1].statStages[STAT_SPEED]][1]); + if (gBattleMons[battler1].item == ITEM_ENIGMA_BERRY) { holdEffect = gEnigmaBerries[battler1].holdEffect; @@ -3435,18 +3532,18 @@ static void SetActionsAndBattlersTurnOrder(void) if (gBattleTypeFlags & BATTLE_TYPE_SAFARI) { - for (gActiveBattler = 0; gActiveBattler < gBattlersCount; ++gActiveBattler) + for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++) { gActionsByTurnOrder[turnOrderId] = gChosenActionByBattler[gActiveBattler]; gBattlerByTurnOrder[turnOrderId] = gActiveBattler; - ++turnOrderId; + turnOrderId++; } } else { if (gBattleTypeFlags & BATTLE_TYPE_LINK) { - for (gActiveBattler = 0; gActiveBattler < gBattlersCount; ++gActiveBattler) + for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++) { if (gChosenActionByBattler[gActiveBattler] == B_ACTION_RUN) { @@ -3465,13 +3562,13 @@ static void SetActionsAndBattlersTurnOrder(void) gActionsByTurnOrder[0] = gChosenActionByBattler[gActiveBattler]; gBattlerByTurnOrder[0] = gActiveBattler; turnOrderId = 1; - for (i = 0; i < gBattlersCount; ++i) + for (i = 0; i < gBattlersCount; i++) { if (i != gActiveBattler) { gActionsByTurnOrder[turnOrderId] = gChosenActionByBattler[i]; gBattlerByTurnOrder[turnOrderId] = i; - ++turnOrderId; + turnOrderId++; } } gBattleMainFunc = CheckFocusPunch_ClearVarsBeforeTurnStarts; @@ -3480,27 +3577,27 @@ static void SetActionsAndBattlersTurnOrder(void) } else { - for (gActiveBattler = 0; gActiveBattler < gBattlersCount; ++gActiveBattler) + for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++) { if (gChosenActionByBattler[gActiveBattler] == B_ACTION_USE_ITEM || gChosenActionByBattler[gActiveBattler] == B_ACTION_SWITCH) { gActionsByTurnOrder[turnOrderId] = gChosenActionByBattler[gActiveBattler]; gBattlerByTurnOrder[turnOrderId] = gActiveBattler; - ++turnOrderId; + turnOrderId++; } } - for (gActiveBattler = 0; gActiveBattler < gBattlersCount; ++gActiveBattler) + for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++) { if (gChosenActionByBattler[gActiveBattler] != B_ACTION_USE_ITEM && gChosenActionByBattler[gActiveBattler] != B_ACTION_SWITCH) { gActionsByTurnOrder[turnOrderId] = gChosenActionByBattler[gActiveBattler]; gBattlerByTurnOrder[turnOrderId] = gActiveBattler; - ++turnOrderId; + turnOrderId++; } } - for (i = 0; i < gBattlersCount - 1; ++i) + for (i = 0; i < gBattlersCount - 1; i++) { - for (j = i + 1; j < gBattlersCount; ++j) + for (j = i + 1; j < gBattlersCount; j++) { u8 battler1 = gBattlerByTurnOrder[i]; u8 battler2 = gBattlerByTurnOrder[j]; @@ -3524,7 +3621,7 @@ static void TurnValuesCleanUp(bool8 var0) s32 i; u8 *dataPtr; - for (gActiveBattler = 0; gActiveBattler < gBattlersCount; ++gActiveBattler) + for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++) { if (var0) { @@ -3534,7 +3631,7 @@ static void TurnValuesCleanUp(bool8 var0) else { dataPtr = (u8 *)(&gProtectStructs[gActiveBattler]); - for (i = 0; i < sizeof(struct ProtectStruct); ++i) + for (i = 0; i < sizeof(struct ProtectStruct); i++) dataPtr[i] = 0; if (gDisableStructs[gActiveBattler].isFirstTurn) --gDisableStructs[gActiveBattler].isFirstTurn; @@ -3555,12 +3652,12 @@ static void TurnValuesCleanUp(bool8 var0) static void SpecialStatusesClear(void) { - for (gActiveBattler = 0; gActiveBattler < gBattlersCount; ++gActiveBattler) + for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++) { s32 i; u8 *dataPtr = (u8 *)(&gSpecialStatuses[gActiveBattler]); - for (i = 0; i < sizeof(struct SpecialStatus); ++i) + for (i = 0; i < sizeof(struct SpecialStatus); i++) dataPtr[i] = 0; } } @@ -3697,7 +3794,7 @@ static void HandleEndTurn_BattleLost(void) static void HandleEndTurn_RanFromBattle(void) { gCurrentActionFuncId = 0; - switch (gProtectStructs[gBattlerAttacker].fleeFlag) + switch (gProtectStructs[gBattlerAttacker].fleeType) { default: gBattlescriptCurrInstr = BattleScript_GotAwaySafely; @@ -3726,7 +3823,7 @@ static void HandleEndTurn_FinishBattle(void) { if (!(gBattleTypeFlags & (BATTLE_TYPE_TRAINER_TOWER | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_OLD_MAN_TUTORIAL | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_SAFARI | BATTLE_TYPE_FIRST_BATTLE | BATTLE_TYPE_LINK))) { - for (gActiveBattler = 0; gActiveBattler < gBattlersCount; ++gActiveBattler) + for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++) { if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) { @@ -3782,7 +3879,7 @@ static void TryEvolvePokemon(void) while (gLeveledUpInBattle != 0) { - for (i = 0; i < PARTY_SIZE; ++i) + for (i = 0; i < PARTY_SIZE; i++) { if (gLeveledUpInBattle & gBitTable[i]) { @@ -3791,6 +3888,7 @@ static void TryEvolvePokemon(void) levelUpBits &= ~(gBitTable[i]); gLeveledUpInBattle = levelUpBits; + species = GetEvolutionTargetSpecies(&gPlayerParty[i], EVO_MODE_NORMAL, levelUpBits); if (species != SPECIES_NONE) { @@ -3842,7 +3940,7 @@ void RunBattleScriptCommands_PopCallbacksStack(void) if (gCurrentActionFuncId == B_ACTION_TRY_FINISH || gCurrentActionFuncId == B_ACTION_FINISHED) { if (gBattleResources->battleCallbackStack->size != 0) - --gBattleResources->battleCallbackStack->size; + gBattleResources->battleCallbackStack->size--; gBattleMainFunc = gBattleResources->battleCallbackStack->function[gBattleResources->battleCallbackStack->size]; } else @@ -3882,7 +3980,7 @@ static void HandleAction_UseMove(void) gProtectStructs[gBattlerAttacker].noValidMoves = 0; gCurrentMove = gChosenMove = MOVE_STRUGGLE; gHitMarker |= HITMARKER_NO_PPDEDUCT; - *(gBattleStruct->moveTarget + gBattlerAttacker) = GetMoveTarget(MOVE_STRUGGLE, 0); + *(gBattleStruct->moveTarget + gBattlerAttacker) = GetMoveTarget(MOVE_STRUGGLE, NO_TARGET_OVERRIDE); } else if (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS || gBattleMons[gBattlerAttacker].status2 & STATUS2_RECHARGE) { @@ -3894,7 +3992,7 @@ static void HandleAction_UseMove(void) { gCurrentMove = gChosenMove = gDisableStructs[gBattlerAttacker].encoredMove; gCurrMovePos = gChosenMovePos = gDisableStructs[gBattlerAttacker].encoredMovePos; - *(gBattleStruct->moveTarget + gBattlerAttacker) = GetMoveTarget(gCurrentMove, 0); + *(gBattleStruct->moveTarget + gBattlerAttacker) = GetMoveTarget(gCurrentMove, NO_TARGET_OVERRIDE); } // check if the encored move wasn't overwritten else if (gDisableStructs[gBattlerAttacker].encoredMove != MOVE_NONE @@ -3905,12 +4003,12 @@ static void HandleAction_UseMove(void) gDisableStructs[gBattlerAttacker].encoredMove = MOVE_NONE; gDisableStructs[gBattlerAttacker].encoredMovePos = 0; gDisableStructs[gBattlerAttacker].encoreTimer = 0; - *(gBattleStruct->moveTarget + gBattlerAttacker) = GetMoveTarget(gCurrentMove, 0); + *(gBattleStruct->moveTarget + gBattlerAttacker) = GetMoveTarget(gCurrentMove, NO_TARGET_OVERRIDE); } else if (gBattleMons[gBattlerAttacker].moves[gCurrMovePos] != gChosenMoveByBattler[gBattlerAttacker]) { gCurrentMove = gChosenMove = gBattleMons[gBattlerAttacker].moves[gCurrMovePos]; - *(gBattleStruct->moveTarget + gBattlerAttacker) = GetMoveTarget(gCurrentMove, 0); + *(gBattleStruct->moveTarget + gBattlerAttacker) = GetMoveTarget(gCurrentMove, NO_TARGET_OVERRIDE); } else { @@ -3937,7 +4035,7 @@ static void HandleAction_UseMove(void) && gBattleMoves[gCurrentMove].type == TYPE_ELECTRIC) { side = GetBattlerSide(gBattlerAttacker); - for (gActiveBattler = 0; gActiveBattler < gBattlersCount; ++gActiveBattler) + for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++) if (side != GetBattlerSide(gActiveBattler) && *(gBattleStruct->moveTarget + gBattlerAttacker) != gActiveBattler && gBattleMons[gActiveBattler].ability == ABILITY_LIGHTNING_ROD @@ -4138,19 +4236,19 @@ bool8 TryRunFromBattle(u8 battler) if (holdEffect == HOLD_EFFECT_CAN_ALWAYS_RUN) { gLastUsedItem = gBattleMons[battler].item; - gProtectStructs[battler].fleeFlag = 1; - ++effect; + gProtectStructs[battler].fleeType = FLEE_ITEM; + effect++; } else if (gBattleMons[battler].ability == ABILITY_RUN_AWAY) { gLastUsedAbility = ABILITY_RUN_AWAY; - gProtectStructs[battler].fleeFlag = 2; - ++effect; + gProtectStructs[battler].fleeType = FLEE_ABILITY; + effect++; } else if (IS_BATTLE_TYPE_GHOST_WITHOUT_SCOPE(gBattleTypeFlags)) { if (GetBattlerSide(battler) == B_SIDE_PLAYER) - ++effect; + effect++; } else { @@ -4160,17 +4258,17 @@ bool8 TryRunFromBattle(u8 battler) { speedVar = (gBattleMons[battler].speed * 128) / (gBattleMons[BATTLE_OPPOSITE(battler)].speed) + (gBattleStruct->runTries * 30); if (speedVar > (Random() & 0xFF)) - ++effect; + effect++; } else // same speed or faster { - ++effect; + effect++; } } ++gBattleStruct->runTries; } - if (effect) + if (effect != 0) { gCurrentTurnActionNumber = gBattlersCount; gBattleOutcome = B_OUTCOME_RAN; @@ -4185,7 +4283,7 @@ static void HandleAction_Run(void) if (gBattleTypeFlags & BATTLE_TYPE_LINK) { gCurrentTurnActionNumber = gBattlersCount; - for (gActiveBattler = 0; gActiveBattler < gBattlersCount; ++gActiveBattler) + for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++) { if (GetBattlerSide(gActiveBattler) == B_SIDE_PLAYER) { diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 92dc9ecf4..a17b14708 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -9278,7 +9278,7 @@ static void Cmd_pickup(void) { s32 random = Random() % 100; - for (j = 0; j < 15; ++j) + for (j = 0; j < 15; j++) if (sPickupItems[j].chance > random) break; SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, &sPickupItems[j]); diff --git a/src/battle_setup.c b/src/battle_setup.c index 9f99defd5..0c2136c7c 100644 --- a/src/battle_setup.c +++ b/src/battle_setup.c @@ -533,7 +533,7 @@ static u16 GetSumOfPlayerPartyLevel(u8 numMons) u8 sum = 0; s32 i; - for (i = 0; i < PARTY_SIZE; ++i) + for (i = 0; i < PARTY_SIZE; i++) { u32 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2); @@ -563,7 +563,7 @@ static u8 GetSumOfEnemyPartyLevel(u16 opponentId, u8 numMons) const struct TrainerMonNoItemDefaultMoves *party; party = gTrainers[opponentId].party.NoItemDefaultMoves; - for (i = 0; i < count; ++i) + for (i = 0; i < count; i++) sum += party[i].lvl; } break; @@ -572,7 +572,7 @@ static u8 GetSumOfEnemyPartyLevel(u16 opponentId, u8 numMons) const struct TrainerMonNoItemCustomMoves *party; party = gTrainers[opponentId].party.NoItemCustomMoves; - for (i = 0; i < count; ++i) + for (i = 0; i < count; i++) sum += party[i].lvl; } break; @@ -581,7 +581,7 @@ static u8 GetSumOfEnemyPartyLevel(u16 opponentId, u8 numMons) const struct TrainerMonItemDefaultMoves *party; party = gTrainers[opponentId].party.ItemDefaultMoves; - for (i = 0; i < count; ++i) + for (i = 0; i < count; i++) sum += party[i].lvl; } break; @@ -590,7 +590,7 @@ static u8 GetSumOfEnemyPartyLevel(u16 opponentId, u8 numMons) const struct TrainerMonItemCustomMoves *party; party = gTrainers[opponentId].party.ItemCustomMoves; - for (i = 0; i < count; ++i) + for (i = 0; i < count; i++) sum += party[i].lvl; } break; diff --git a/src/battle_transition.c b/src/battle_transition.c index 21d732aa5..6f68abd66 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -861,7 +861,7 @@ static bool8 BT_Phase2BigPokeball_Init(struct Task *task) sTransitionStructPtr->win0V = WIN_RANGE(0, 0xA0); sTransitionStructPtr->bldCnt = BLDCNT_TGT1_BG0 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD; sTransitionStructPtr->bldAlpha = (task->tEvb << 8) | task->tEva; - for (i = 0; i < 160; ++i) + for (i = 0; i < 160; i++) gScanlineEffectRegBuffers[1][i] = 0xF0; SetVBlankCallback(VBCB_BT_Phase2BigPokeball1); BT_GetBg0TilemapAndTilesetBase(&tilemapAddr, &tilesetAddr); @@ -879,7 +879,7 @@ static bool8 BT_Phase2BigPokeball_LoadTilemapAndWave(struct Task *task) const u16 *BigPokeballMap = sBigPokeballTilemap; BT_GetBg0TilemapAndTilesetBase(&tilemapAddr, &tilesetAddr); - for (i = 0; i < 20; ++i) + for (i = 0; i < 20; i++) for (j = 0; j < 30; ++j, ++BigPokeballMap) tilemapAddr[i * 32 + j] = *BigPokeballMap | 0xF000; // use palette #15 BT_LoadWaveIntoBuffer(gScanlineEffectRegBuffers[0], 0, task->tTheta, 132, task->tAmplitude, 160); @@ -1147,7 +1147,7 @@ static bool8 BT_Phase2ClockwiseBlackFade_Init(struct Task *task) sTransitionStructPtr->winOut = WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR; sTransitionStructPtr->win0H = WIN_RANGE(0xF0, 0xF1); sTransitionStructPtr->win0V = WIN_RANGE(0, 0xA0); - for (i = 0; i < 160; ++i) + for (i = 0; i < 160; i++) gScanlineEffectRegBuffers[1][i] = WIN_RANGE(0xF3, 0xF4); SetVBlankCallback(VBCB_BT_Phase2ClockwiseBlackFade); sTransitionStructPtr->trEndPtX = 120; @@ -1349,7 +1349,7 @@ static bool8 BT_Phase2FullScreenWave_Init(struct Task *task) BT_InitCtrlBlk(); ScanlineEffect_Clear(); - for (i = 0; i < 160; ++i) + for (i = 0; i < 160; i++) gScanlineEffectRegBuffers[1][i] = sTransitionStructPtr->bg123VOfs; SetVBlankCallback(VBCB_BT_Phase2FullScreenWave); SetHBlankCallback(HBCB_BT_Phase2FullScreenWave); @@ -1429,7 +1429,7 @@ static bool8 BT_Phase2BlackWaveToRight_Init(struct Task *task) sTransitionStructPtr->winOut = 0; sTransitionStructPtr->win0H = WIN_RANGE(0, 0xF0); sTransitionStructPtr->win0V = WIN_RANGE(0, 0xA0); - for (i = 0; i < 160; ++i) + for (i = 0; i < 160; i++) gScanlineEffectRegBuffers[1][i] = WIN_RANGE(0, 0xF2); SetVBlankCallback(VBCB_BT_Phase2BlackWaveToRight); ++task->tState; @@ -1500,7 +1500,7 @@ static void BT_AntiClockwiseSpiral_DoUpdateFrame(s16 initRadius, s16 deltaAngleM s16 i, amplitude1, amplitude2; s16 y1, x1, y2, x2; - for (i = 320; i < 960; ++i) + for (i = 320; i < 960; i++) gScanlineEffectRegBuffers[1][i] = 120; for (i = 0; i < (deltaAngleMax * 16); ++i, ++theta) @@ -1813,7 +1813,7 @@ static bool8 BT_Phase2Mugshot_Init(struct Task *task) sTransitionStructPtr->winIn = WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR; sTransitionStructPtr->winOut = WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_BG3 | WININ_WIN0_OBJ | WININ_WIN0_CLR; sTransitionStructPtr->win0V = WIN_RANGE(0, 0xA0); - for (i = 0; i < 160; ++i) + for (i = 0; i < 160; i++) gScanlineEffectRegBuffers[1][i] = WIN_RANGE(0xF0, 0xF1); SetVBlankCallback(VBCB_BT_Phase2Mugshot1_Slide); ++task->tState; @@ -1830,7 +1830,7 @@ static bool8 BT_Phase2Mugshot_LoadGfx(struct Task *task) CpuCopy16(sVsBarTileset, tilesetAddr, 0x1E0); LoadPalette(sVsBarOpponentPalettes[task->tWhichMugshot], 0xF0, 0x20); LoadPalette(sVsBarPlayerPalettes[gSaveBlock2Ptr->playerGender], 0xFA, 0xC); - for (i = 0; i < 20; ++i) + for (i = 0; i < 20; i++) for (j = 0; j < 32; ++j, ++mugshotsMap) tilemapAddr[i * 32 + j] = *mugshotsMap | 0xF000; // use palette #15 EnableInterrupts(INTR_FLAG_HBLANK); @@ -1956,7 +1956,7 @@ static bool8 BT_Phase2Mugshot_ExpandWhiteBand(struct Task *task) { s16 i; - for (i = 0, nextFunc = FALSE; i <= task->tHalfBandwidth; ++i) + for (i = 0, nextFunc = FALSE; i <= task->tHalfBandwidth; i++) { s16 y1 = 80 - i; s16 y2 = 80 + i; @@ -2174,7 +2174,7 @@ static bool8 BT_Phase2SlicedScreen_Init(struct Task *task) sTransitionStructPtr->winIn = WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR; sTransitionStructPtr->winOut = 0; sTransitionStructPtr->win0V = WIN_RANGE(0, 0xA0); - for (i = 0; i < 160; ++i) + for (i = 0; i < 160; i++) { gScanlineEffectRegBuffers[1][i] = sTransitionStructPtr->bg123HOfs; gScanlineEffectRegBuffers[1][160 + i] = 0xF0; @@ -2198,7 +2198,7 @@ static bool8 BT_Phase2SlicedScreen_UpdateOffsets(struct Task *task) task->tAcc += task->tJerk; if (task->tJerk < 128) task->tJerk <<= 1; - for (i = 0; i < 160; ++i) + for (i = 0; i < 160; i++) { u16 *ofsBuffer = &gScanlineEffectRegBuffers[0][i]; u16 *win0HBuffer = &gScanlineEffectRegBuffers[0][i + 160]; @@ -2274,7 +2274,7 @@ static bool8 BT_Phase2WhiteFadeInStripes_Init(struct Task *task) sTransitionStructPtr->winIn = WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2 | WINOUT_WIN01_BG3 | WINOUT_WIN01_OBJ; sTransitionStructPtr->winOut = WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WININ_WIN0_CLR; sTransitionStructPtr->win0V = WIN_RANGE(0, 0xA0); - for (i = 0; i < 160; ++i) + for (i = 0; i < 160; i++) { gScanlineEffectRegBuffers[1][i] = 0; gScanlineEffectRegBuffers[1][i + 160] = 0xF0; @@ -2393,7 +2393,7 @@ static void SpriteCB_BT_Phase2WhiteFadeInStripes(struct Sprite *sprite) u16 *win0H = &gScanlineEffectRegBuffers[0][sprite->y + 160]; u32 stripeWidth = sprite->spLastSprite ? 0x19 : 0x1B; - for (i = 0; i < stripeWidth; ++i) + for (i = 0; i < stripeWidth; i++) { bldY[i] = sprite->spBldyCounter >> 8; win0H[i] = (u8)(sprite->x); @@ -2499,7 +2499,7 @@ static bool8 BT_Phase2BlackDoodles_Init(struct Task *task) sTransitionStructPtr->winIn = WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR; sTransitionStructPtr->winOut = 0; sTransitionStructPtr->win0V = WIN_RANGE(0, 0xA0); - for (i = 0; i < 160; ++i) + for (i = 0; i < 160; i++) gScanlineEffectRegBuffers[0][i] = WIN_RANGE(0, 0xF0); CpuCopy16(gScanlineEffectRegBuffers[0], gScanlineEffectRegBuffers[1], 0x140); SetVBlankCallback(VBCB_BT_Phase2BlackDoodles); @@ -2521,7 +2521,7 @@ static bool8 BT_Phase2BlackDoodles_DrawSingleBrush(struct Task *task) bool8 nextFunc; sTransitionStructPtr->vblankDma = FALSE; - for (i = 0, nextFunc = FALSE; i < 16; ++i) + for (i = 0, nextFunc = FALSE; i < 16; i++) { s16 left = gScanlineEffectRegBuffers[0][sTransitionStructPtr->trCurrentPtY] >> 8; s16 right = gScanlineEffectRegBuffers[0][sTransitionStructPtr->trCurrentPtY] & 0xFF; @@ -2736,7 +2736,7 @@ static void BT_GenerateCircle(s16 *buffer, s16 x, s16 y, s16 radius) memset(buffer, 0xA, 320); // 64 iterations because we only want to cover [0, π/2) discretely. - for (i = 0; i < 64; ++i) + for (i = 0; i < 64; i++) { s16 sinResult, cosResult, leftX, topY, bottomY, nextTopY, nextBottomY, winVal; diff --git a/src/battle_util.c b/src/battle_util.c index 383a8fc0e..ece2eade9 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -27,16 +27,17 @@ #include "constants/battle_move_effects.h" #include "constants/battle_script_commands.h" +#define SOUND_MOVES_END 0xFFFF + static const u16 sSoundMovesTable[] = { MOVE_GROWL, MOVE_ROAR, MOVE_SING, MOVE_SUPERSONIC, MOVE_SCREECH, MOVE_SNORE, - MOVE_UPROAR, MOVE_METAL_SOUND, MOVE_GRASS_WHISTLE, MOVE_HYPER_VOICE, 0xFFFF + MOVE_UPROAR, MOVE_METAL_SOUND, MOVE_GRASS_WHISTLE, MOVE_HYPER_VOICE, SOUND_MOVES_END }; u8 GetBattlerForBattleScript(u8 caseId) { - u32 ret = 0; - + u8 ret = 0; switch (caseId) { case BS_TARGET: @@ -57,7 +58,7 @@ u8 GetBattlerForBattleScript(u8 caseId) case BS_FAINTED: ret = gBattlerFainted; break; - case 5: + case BS_FAINTED_LINK_MULTIPLE_1: ret = gBattlerFainted; break; case BS_PLAYER1: @@ -66,10 +67,10 @@ u8 GetBattlerForBattleScript(u8 caseId) case BS_OPPONENT1: ret = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); break; - case 4: - case 6: - case 8: - case 9: + case BS_ATTACKER_WITH_PARTNER: + case BS_FAINTED_LINK_MULTIPLE_2: + case BS_ATTACKER_SIDE: + case BS_NOT_ATTACKER_SIDE: break; } return ret; @@ -77,99 +78,115 @@ u8 GetBattlerForBattleScript(u8 caseId) void PressurePPLose(u8 target, u8 attacker, u16 move) { - s32 i; + int moveIndex; - if (gBattleMons[target].ability == ABILITY_PRESSURE) + if (gBattleMons[target].ability != ABILITY_PRESSURE) + return; + + for (moveIndex = 0; moveIndex < MAX_MON_MOVES; moveIndex++) { - for (i = 0; i < MAX_MON_MOVES && gBattleMons[attacker].moves[i] != move; ++i); - if (i != MAX_MON_MOVES) - { - if (gBattleMons[attacker].pp[i]) - --gBattleMons[attacker].pp[i]; - if (!(gBattleMons[attacker].status2 & STATUS2_TRANSFORMED) - && !(gDisableStructs[attacker].mimickedMoves & gBitTable[i])) - { - gActiveBattler = attacker; - BtlController_EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + i, 0, 1, &gBattleMons[gActiveBattler].pp[i]); - MarkBattlerForControllerExec(gActiveBattler); - } - } + if (gBattleMons[attacker].moves[moveIndex] == move) + break; + } + + if (moveIndex == MAX_MON_MOVES) + return; + + if (gBattleMons[attacker].pp[moveIndex] != 0) + gBattleMons[attacker].pp[moveIndex]--; + + if (MOVE_IS_PERMANENT(attacker, moveIndex)) + { + gActiveBattler = attacker; + BtlController_EmitSetMonData(BUFFER_A, REQUEST_PPMOVE1_BATTLE + moveIndex, 0, 1, &gBattleMons[gActiveBattler].pp[moveIndex]); + MarkBattlerForControllerExec(gActiveBattler); } } void PressurePPLoseOnUsingImprison(u8 attacker) { - s32 i, j; - s32 imprisonPos = 4; + int i, j; + int imprisonPos = MAX_MON_MOVES; u8 atkSide = GetBattlerSide(attacker); - for (i = 0; i < gBattlersCount; ++i) + for (i = 0; i < gBattlersCount; i++) { if (atkSide != GetBattlerSide(i) && gBattleMons[i].ability == ABILITY_PRESSURE) { - for (j = 0; j < MAX_MON_MOVES && gBattleMons[attacker].moves[j] != MOVE_IMPRISON; ++j); + for (j = 0; j < MAX_MON_MOVES; j++) + { + if (gBattleMons[attacker].moves[j] == MOVE_IMPRISON) + break; + } if (j != MAX_MON_MOVES) { imprisonPos = j; - if (gBattleMons[attacker].pp[j]) - --gBattleMons[attacker].pp[j]; + if (gBattleMons[attacker].pp[j] != 0) + gBattleMons[attacker].pp[j]--; } } } - if (imprisonPos != 4 - && !(gBattleMons[attacker].status2 & STATUS2_TRANSFORMED) - && !(gDisableStructs[attacker].mimickedMoves & gBitTable[imprisonPos])) + + if (imprisonPos != MAX_MON_MOVES && MOVE_IS_PERMANENT(attacker, imprisonPos)) { gActiveBattler = attacker; - BtlController_EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + imprisonPos, 0, 1, &gBattleMons[gActiveBattler].pp[imprisonPos]); + BtlController_EmitSetMonData(BUFFER_A, REQUEST_PPMOVE1_BATTLE + imprisonPos, 0, 1, &gBattleMons[gActiveBattler].pp[imprisonPos]); MarkBattlerForControllerExec(gActiveBattler); } } void PressurePPLoseOnUsingPerishSong(u8 attacker) { - s32 i, j; - s32 perishSongPos = 4; + int i, j; + int perishSongPos = MAX_MON_MOVES; - for (i = 0; i < gBattlersCount; ++i) + for (i = 0; i < gBattlersCount; i++) { if (gBattleMons[i].ability == ABILITY_PRESSURE && i != attacker) { - for (j = 0; j < MAX_MON_MOVES && gBattleMons[attacker].moves[j] != MOVE_PERISH_SONG; ++j); + for (j = 0; j < MAX_MON_MOVES; j++) + { + if (gBattleMons[attacker].moves[j] == MOVE_PERISH_SONG) + break; + } if (j != MAX_MON_MOVES) { perishSongPos = j; - if (gBattleMons[attacker].pp[j]) - --gBattleMons[attacker].pp[j]; + if (gBattleMons[attacker].pp[j] != 0) + gBattleMons[attacker].pp[j]--; } } } - if (perishSongPos != MAX_MON_MOVES - && !(gBattleMons[attacker].status2 & STATUS2_TRANSFORMED) - && !(gDisableStructs[attacker].mimickedMoves & gBitTable[perishSongPos])) + + if (perishSongPos != MAX_MON_MOVES && MOVE_IS_PERMANENT(attacker, perishSongPos)) { gActiveBattler = attacker; - BtlController_EmitSetMonData(0, REQUEST_PPMOVE1_BATTLE + perishSongPos, 0, 1, &gBattleMons[gActiveBattler].pp[perishSongPos]); + BtlController_EmitSetMonData(BUFFER_A, REQUEST_PPMOVE1_BATTLE + perishSongPos, 0, 1, &gBattleMons[gActiveBattler].pp[perishSongPos]); MarkBattlerForControllerExec(gActiveBattler); } } -void MarkAllBattlersForControllerExec(void) +// Unused +static void MarkAllBattlersForControllerExec(void) { - s32 i; + int i; if (gBattleTypeFlags & BATTLE_TYPE_LINK) - for (i = 0; i < gBattlersCount; ++i) - gBattleControllerExecFlags |= gBitTable[i] << 0x1C; + { + for (i = 0; i < gBattlersCount; i++) + gBattleControllerExecFlags |= gBitTable[i] << (32 - MAX_BATTLERS_COUNT); + } else - for (i = 0; i < gBattlersCount; ++i) + { + for (i = 0; i < gBattlersCount; i++) gBattleControllerExecFlags |= gBitTable[i]; + } } void MarkBattlerForControllerExec(u8 battlerId) { if (gBattleTypeFlags & BATTLE_TYPE_LINK) - gBattleControllerExecFlags |= gBitTable[battlerId] << 0x1C; + gBattleControllerExecFlags |= gBitTable[battlerId] << (32 - MAX_BATTLERS_COUNT); else gBattleControllerExecFlags |= gBitTable[battlerId]; } @@ -178,19 +195,21 @@ void MarkBattlerReceivedLinkData(u8 battlerId) { s32 i; - for (i = 0; i < GetLinkPlayerCount(); ++i) + for (i = 0; i < GetLinkPlayerCount(); i++) gBattleControllerExecFlags |= gBitTable[battlerId] << (i << 2); - gBattleControllerExecFlags &= ~(0x10000000 << battlerId); + gBattleControllerExecFlags &= ~((1 << 28) << battlerId); } void CancelMultiTurnMoves(u8 battler) { - gBattleMons[battler].status2 &= ~(STATUS2_MULTIPLETURNS); - gBattleMons[battler].status2 &= ~(STATUS2_LOCK_CONFUSE); - gBattleMons[battler].status2 &= ~(STATUS2_UPROAR); - gBattleMons[battler].status2 &= ~(STATUS2_BIDE); - gStatuses3[battler] &= ~(STATUS3_SEMI_INVULNERABLE); + gBattleMons[battler].status2 &= ~STATUS2_MULTIPLETURNS; + gBattleMons[battler].status2 &= ~STATUS2_LOCK_CONFUSE; + gBattleMons[battler].status2 &= ~STATUS2_UPROAR; + gBattleMons[battler].status2 &= ~STATUS2_BIDE; + + gStatuses3[battler] &= ~STATUS3_SEMI_INVULNERABLE; + gDisableStructs[battler].rolloutTimer = 0; gDisableStructs[battler].furyCutterCounter = 0; } @@ -198,14 +217,14 @@ void CancelMultiTurnMoves(u8 battler) bool8 WasUnableToUseMove(u8 battler) { if (gProtectStructs[battler].prlzImmobility - || gProtectStructs[battler].targetNotAffected - || gProtectStructs[battler].usedImprisonedMove - || gProtectStructs[battler].loveImmobility - || gProtectStructs[battler].usedDisabledMove - || gProtectStructs[battler].usedTauntedMove - || gProtectStructs[battler].flag2Unknown - || gProtectStructs[battler].flinchImmobility - || gProtectStructs[battler].confusionSelfDmg) + || gProtectStructs[battler].targetNotAffected + || gProtectStructs[battler].usedImprisonedMove + || gProtectStructs[battler].loveImmobility + || gProtectStructs[battler].usedDisabledMove + || gProtectStructs[battler].usedTauntedMove + || gProtectStructs[battler].flag2Unknown + || gProtectStructs[battler].flinchImmobility + || gProtectStructs[battler].confusionSelfDmg) return TRUE; else return FALSE; @@ -214,7 +233,7 @@ bool8 WasUnableToUseMove(u8 battler) void PrepareStringBattle(u16 stringId, u8 battler) { gActiveBattler = battler; - BtlController_EmitPrintString(0, stringId); + BtlController_EmitPrintString(BUFFER_A, stringId); MarkBattlerForControllerExec(gActiveBattler); } @@ -225,8 +244,10 @@ void ResetSentPokesToOpponentValue(void) gSentPokesToOpponent[0] = 0; gSentPokesToOpponent[1] = 0; + for (i = 0; i < gBattlersCount; i += 2) bits |= gBitTable[gBattlerPartyIndexes[i]]; + for (i = 1; i < gBattlersCount; i += 2) gSentPokesToOpponent[(i & BIT_FLANK) >> 1] = bits; } @@ -242,8 +263,10 @@ void OpponentSwitchInResetSentPokesToOpponentValue(u8 battler) gSentPokesToOpponent[flank] = 0; for (i = 0; i < gBattlersCount; i += 2) + { if (!(gAbsentBattlerFlags & gBitTable[i])) bits |= gBitTable[gBattlerPartyIndexes[i]]; + } gSentPokesToOpponent[flank] = bits; } } @@ -257,8 +280,7 @@ void UpdateSentPokesToOpponentValue(u8 battler) else { s32 i; - - for (i = 1; i < gBattlersCount; ++i) + for (i = 1; i < gBattlersCount; i++) gSentPokesToOpponent[(i & BIT_FLANK) >> 1] |= gBitTable[gBattlerPartyIndexes[battler]]; } } @@ -292,40 +314,47 @@ u8 TrySetCantSelectMoveBattleScript(void) gSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingDisabledMove; limitations = 1; } + if (move == gLastMoves[gActiveBattler] && move != MOVE_STRUGGLE && (gBattleMons[gActiveBattler].status2 & STATUS2_TORMENT)) { CancelMultiTurnMoves(gActiveBattler); gSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingTormentedMove; - ++limitations; + limitations++; } - if (gDisableStructs[gActiveBattler].tauntTimer && !gBattleMoves[move].power) + + if (gDisableStructs[gActiveBattler].tauntTimer != 0 && gBattleMoves[move].power == 0) { gCurrentMove = move; gSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingNotAllowedMoveTaunt; - ++limitations; + limitations++; } + if (GetImprisonedMovesCount(gActiveBattler, move)) { gCurrentMove = move; gSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingImprisonedMove; - ++limitations; + limitations++; } + if (gBattleMons[gActiveBattler].item == ITEM_ENIGMA_BERRY) holdEffect = gEnigmaBerries[gActiveBattler].holdEffect; else holdEffect = ItemId_GetHoldEffect(gBattleMons[gActiveBattler].item); + gPotentialItemEffectBattler = gActiveBattler; - if (holdEffect == HOLD_EFFECT_CHOICE_BAND && *choicedMove && *choicedMove != 0xFFFF && *choicedMove != move) + + if (holdEffect == HOLD_EFFECT_CHOICE_BAND && *choicedMove != MOVE_NONE && *choicedMove != MOVE_UNAVAILABLE && *choicedMove != move) { gCurrentMove = *choicedMove; gLastUsedItem = gBattleMons[gActiveBattler].item; gSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingNotAllowedMoveChoiceItem; - ++limitations; + limitations++; } - if (!gBattleMons[gActiveBattler].pp[gBattleBufferB[gActiveBattler][2]]) + + if (gBattleMons[gActiveBattler].pp[gBattleBufferB[gActiveBattler][2]] == 0) { gSelectionBattleScripts[gActiveBattler] = BattleScript_SelectingMoveWithNoPP; - ++limitations; + limitations++; } return limitations; } @@ -340,37 +369,48 @@ u8 CheckMoveLimitations(u8 battlerId, u8 unusableMoves, u8 check) holdEffect = gEnigmaBerries[battlerId].holdEffect; else holdEffect = ItemId_GetHoldEffect(gBattleMons[battlerId].item); + gPotentialItemEffectBattler = battlerId; - for (i = 0; i < MAX_MON_MOVES; ++i) + for (i = 0; i < MAX_MON_MOVES; i++) { - if (gBattleMons[battlerId].moves[i] == 0 && check & MOVE_LIMITATION_ZEROMOVE) + // No move + if (gBattleMons[battlerId].moves[i] == MOVE_NONE && check & MOVE_LIMITATION_ZEROMOVE) unusableMoves |= gBitTable[i]; + // No PP if (gBattleMons[battlerId].pp[i] == 0 && check & MOVE_LIMITATION_PP) unusableMoves |= gBitTable[i]; + // Disable if (gBattleMons[battlerId].moves[i] == gDisableStructs[battlerId].disabledMove && check & MOVE_LIMITATION_DISABLED) unusableMoves |= gBitTable[i]; + // Torment if (gBattleMons[battlerId].moves[i] == gLastMoves[battlerId] && check & MOVE_LIMITATION_TORMENTED && gBattleMons[battlerId].status2 & STATUS2_TORMENT) unusableMoves |= gBitTable[i]; + // Taunt if (gDisableStructs[battlerId].tauntTimer && check & MOVE_LIMITATION_TAUNT && gBattleMoves[gBattleMons[battlerId].moves[i]].power == 0) unusableMoves |= gBitTable[i]; + // Imprison if (GetImprisonedMovesCount(battlerId, gBattleMons[battlerId].moves[i]) && check & MOVE_LIMITATION_IMPRISON) unusableMoves |= gBitTable[i]; + // Encore if (gDisableStructs[battlerId].encoreTimer && gDisableStructs[battlerId].encoredMove != gBattleMons[battlerId].moves[i]) unusableMoves |= gBitTable[i]; - if (holdEffect == HOLD_EFFECT_CHOICE_BAND && *choicedMove != 0 && *choicedMove != 0xFFFF && *choicedMove != gBattleMons[battlerId].moves[i]) + // Choice Band + if (holdEffect == HOLD_EFFECT_CHOICE_BAND && *choicedMove != MOVE_NONE && *choicedMove != MOVE_UNAVAILABLE && *choicedMove != gBattleMons[battlerId].moves[i]) unusableMoves |= gBitTable[i]; } return unusableMoves; } +#define ALL_MOVES_MASK ((1 << MAX_MON_MOVES) - 1) bool8 AreAllMovesUnusable(void) { - u8 unusable = CheckMoveLimitations(gActiveBattler, 0, 0xFF); + u8 unusable; + unusable = CheckMoveLimitations(gActiveBattler, 0, MOVE_LIMITATIONS_ALL); - if (unusable == 0xF) // All moves are unusable. + if (unusable == ALL_MOVES_MASK) // All moves are unusable. { - gProtectStructs[gActiveBattler].noValidMoves = 1; + gProtectStructs[gActiveBattler].noValidMoves = TRUE; gSelectionBattleScripts[gActiveBattler] = BattleScript_NoMovesLeft; if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) gBattleBufferB[gActiveBattler][3] = GetBattlerAtPosition((BATTLE_OPPOSITE(GetBattlerPosition(gActiveBattler))) | (Random() & 2)); @@ -379,10 +419,12 @@ bool8 AreAllMovesUnusable(void) } else { - gProtectStructs[gActiveBattler].noValidMoves = 0; + gProtectStructs[gActiveBattler].noValidMoves = FALSE; } - return (unusable == 0xF); + + return (unusable == ALL_MOVES_MASK); } +#undef ALL_MOVES_MASK u8 GetImprisonedMovesCount(u8 battlerId, u16 move) { @@ -390,17 +432,21 @@ u8 GetImprisonedMovesCount(u8 battlerId, u16 move) u8 imprisonedMoves = 0; u8 battlerSide = GetBattlerSide(battlerId); - for (i = 0; i < gBattlersCount; ++i) + for (i = 0; i < gBattlersCount; i++) { if (battlerSide != GetBattlerSide(i) && gStatuses3[i] & STATUS3_IMPRISONED_OTHERS) { s32 j; - - for (j = 0; j < MAX_MON_MOVES && move != gBattleMons[i].moves[j]; ++j); + for (j = 0; j < MAX_MON_MOVES; j++) + { + if (move == gBattleMons[i].moves[j]) + break; + } if (j < MAX_MON_MOVES) - ++imprisonedMoves; + imprisonedMoves++; } } + return imprisonedMoves; } @@ -424,8 +470,13 @@ u8 DoFieldEndTurnEffects(void) u8 effect = 0; s32 i; - for (gBattlerAttacker = 0; gBattlerAttacker < gBattlersCount && gAbsentBattlerFlags & gBitTable[gBattlerAttacker]; ++gBattlerAttacker); - for (gBattlerTarget = 0; gBattlerTarget < gBattlersCount && gAbsentBattlerFlags & gBitTable[gBattlerTarget]; ++gBattlerTarget); + for (gBattlerAttacker = 0; gBattlerAttacker < gBattlersCount && gAbsentBattlerFlags & gBitTable[gBattlerAttacker]; gBattlerAttacker++) + { + } + for (gBattlerTarget = 0; gBattlerTarget < gBattlersCount && gAbsentBattlerFlags & gBitTable[gBattlerTarget]; gBattlerTarget++) + { + } + do { u8 side; @@ -433,15 +484,18 @@ u8 DoFieldEndTurnEffects(void) switch (gBattleStruct->turnCountersTracker) { case ENDTURN_ORDER: - for (i = 0; i < gBattlersCount; ++i) + for (i = 0; i < gBattlersCount; i++) + { gBattlerByTurnOrder[i] = i; - for (i = 0; i < gBattlersCount - 1; ++i) + } + for (i = 0; i < gBattlersCount - 1; i++) { s32 j; - - for (j = i + 1; j < gBattlersCount; ++j) - if (GetWhoStrikesFirst(gBattlerByTurnOrder[i], gBattlerByTurnOrder[j], 0)) + for (j = i + 1; j < gBattlersCount; j++) + { + if (GetWhoStrikesFirst(gBattlerByTurnOrder[i], gBattlerByTurnOrder[j], FALSE)) SwapTurnOrder(i, j); + } } { u8 *var = &gBattleStruct->turnCountersTracker; @@ -462,16 +516,16 @@ u8 DoFieldEndTurnEffects(void) gSideStatuses[side] &= ~SIDE_STATUS_REFLECT; BattleScriptExecute(BattleScript_SideStatusWoreOff); PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_REFLECT); - ++effect; + effect++; } } - ++gBattleStruct->turnSideTracker; - if (effect) + gBattleStruct->turnSideTracker++; + if (effect != 0) break; } if (!effect) { - ++gBattleStruct->turnCountersTracker; + gBattleStruct->turnCountersTracker++; gBattleStruct->turnSideTracker = 0; } break; @@ -488,16 +542,16 @@ u8 DoFieldEndTurnEffects(void) BattleScriptExecute(BattleScript_SideStatusWoreOff); gBattleCommunication[MULTISTRING_CHOOSER] = side; PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_LIGHT_SCREEN); - ++effect; + effect++; } } - ++gBattleStruct->turnSideTracker; - if (effect) + gBattleStruct->turnSideTracker++; + if (effect != 0) break; } if (!effect) { - ++gBattleStruct->turnCountersTracker; + gBattleStruct->turnCountersTracker++; gBattleStruct->turnSideTracker = 0; } break; @@ -506,21 +560,22 @@ u8 DoFieldEndTurnEffects(void) { side = gBattleStruct->turnSideTracker; gActiveBattler = gBattlerAttacker = gSideTimers[side].mistBattlerId; - if (gSideTimers[side].mistTimer != 0 && --gSideTimers[side].mistTimer == 0) + if (gSideTimers[side].mistTimer != 0 + && --gSideTimers[side].mistTimer == 0) { gSideStatuses[side] &= ~SIDE_STATUS_MIST; BattleScriptExecute(BattleScript_SideStatusWoreOff); gBattleCommunication[MULTISTRING_CHOOSER] = side; PREPARE_MOVE_BUFFER(gBattleTextBuff1, MOVE_MIST); - ++effect; + effect++; } - ++gBattleStruct->turnSideTracker; - if (effect) + gBattleStruct->turnSideTracker++; + if (effect != 0) break; } if (!effect) { - ++gBattleStruct->turnCountersTracker; + gBattleStruct->turnCountersTracker++; gBattleStruct->turnSideTracker = 0; } break; @@ -535,16 +590,16 @@ u8 DoFieldEndTurnEffects(void) { gSideStatuses[side] &= ~SIDE_STATUS_SAFEGUARD; BattleScriptExecute(BattleScript_SafeguardEnds); - ++effect; + effect++; } } - ++gBattleStruct->turnSideTracker; - if (effect) + gBattleStruct->turnSideTracker++; + if (effect != 0) break; } if (!effect) { - ++gBattleStruct->turnCountersTracker; + gBattleStruct->turnCountersTracker++; gBattleStruct->turnSideTracker = 0; } break; @@ -558,14 +613,16 @@ u8 DoFieldEndTurnEffects(void) { gBattlerTarget = gActiveBattler; BattleScriptExecute(BattleScript_WishComesTrue); - ++effect; + effect++; } - ++gBattleStruct->turnSideTracker; - if (effect) + gBattleStruct->turnSideTracker++; + if (effect != 0) break; } if (!effect) - ++gBattleStruct->turnCountersTracker; + { + gBattleStruct->turnCountersTracker++; + } break; case ENDTURN_RAIN: if (gBattleWeather & B_WEATHER_RAIN) @@ -576,25 +633,26 @@ u8 DoFieldEndTurnEffects(void) { gBattleWeather &= ~B_WEATHER_RAIN_TEMPORARY; gBattleWeather &= ~B_WEATHER_RAIN_DOWNPOUR; - gBattleCommunication[MULTISTRING_CHOOSER] = 2; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_RAIN_STOPPED; } else if (gBattleWeather & B_WEATHER_RAIN_DOWNPOUR) - gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_DOWNPOUR_CONTINUES; else - gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_RAIN_CONTINUES; } else if (gBattleWeather & B_WEATHER_RAIN_DOWNPOUR) { - gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_DOWNPOUR_CONTINUES; } else { - gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_RAIN_CONTINUES; } + BattleScriptExecute(BattleScript_RainContinuesOrEnds); - ++effect; + effect++; } - ++gBattleStruct->turnCountersTracker; + gBattleStruct->turnCountersTracker++; break; case ENDTURN_SANDSTORM: if (gBattleWeather & B_WEATHER_SANDSTORM) @@ -608,12 +666,13 @@ u8 DoFieldEndTurnEffects(void) { gBattlescriptCurrInstr = BattleScript_DamagingWeatherContinues; } + gBattleScripting.animArg1 = B_ANIM_SANDSTORM_CONTINUES; - gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SANDSTORM; BattleScriptExecute(gBattlescriptCurrInstr); - ++effect; + effect++; } - ++gBattleStruct->turnCountersTracker; + gBattleStruct->turnCountersTracker++; break; case ENDTURN_SUN: if (gBattleWeather & B_WEATHER_SUN) @@ -627,10 +686,11 @@ u8 DoFieldEndTurnEffects(void) { gBattlescriptCurrInstr = BattleScript_SunlightContinues; } + BattleScriptExecute(gBattlescriptCurrInstr); - ++effect; + effect++; } - ++gBattleStruct->turnCountersTracker; + gBattleStruct->turnCountersTracker++; break; case ENDTURN_HAIL: if (gBattleWeather & B_WEATHER_HAIL) @@ -644,18 +704,19 @@ u8 DoFieldEndTurnEffects(void) { gBattlescriptCurrInstr = BattleScript_DamagingWeatherContinues; } + gBattleScripting.animArg1 = B_ANIM_HAIL_CONTINUES; - gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_HAIL; BattleScriptExecute(gBattlescriptCurrInstr); - ++effect; + effect++; } - ++gBattleStruct->turnCountersTracker; + gBattleStruct->turnCountersTracker++; break; case ENDTURN_FIELD_COUNT: - ++effect; + effect++; break; } - } while (!effect); + } while (effect == 0); return (gBattleMainFunc != BattleTurnPassed); } @@ -693,7 +754,7 @@ u8 DoBattlerEndTurnEffects(void) gActiveBattler = gBattlerAttacker = gBattlerByTurnOrder[gBattleStruct->turnEffectsBattlerId]; if (gAbsentBattlerFlags & gBitTable[gActiveBattler]) { - ++gBattleStruct->turnEffectsBattlerId; + gBattleStruct->turnEffectsBattlerId++; } else { @@ -709,24 +770,24 @@ u8 DoBattlerEndTurnEffects(void) gBattleMoveDamage = 1; gBattleMoveDamage *= -1; BattleScriptExecute(BattleScript_IngrainTurnHeal); - ++effect; + effect++; } - ++gBattleStruct->turnEffectsTracker; + gBattleStruct->turnEffectsTracker++; break; case ENDTURN_ABILITIES: // end turn abilities if (AbilityBattleEffects(ABILITYEFFECT_ENDTURN, gActiveBattler, 0, 0, 0)) - ++effect; - ++gBattleStruct->turnEffectsTracker; + effect++; + gBattleStruct->turnEffectsTracker++; break; case ENDTURN_ITEMS1: // item effects - if (ItemBattleEffects(1, gActiveBattler, FALSE)) - ++effect; - ++gBattleStruct->turnEffectsTracker; + if (ItemBattleEffects(ITEMEFFECT_NORMAL, gActiveBattler, FALSE)) + effect++; + gBattleStruct->turnEffectsTracker++; break; case ENDTURN_ITEMS2: // item effects again - if (ItemBattleEffects(1, gActiveBattler, TRUE)) - ++effect; - ++gBattleStruct->turnEffectsTracker; + if (ItemBattleEffects(ITEMEFFECT_NORMAL, gActiveBattler, TRUE)) + effect++; + gBattleStruct->turnEffectsTracker++; break; case ENDTURN_LEECH_SEED: // leech seed if ((gStatuses3[gActiveBattler] & STATUS3_LEECHSEED) @@ -740,9 +801,9 @@ u8 DoBattlerEndTurnEffects(void) gBattleScripting.animArg1 = gBattlerTarget; gBattleScripting.animArg2 = gBattlerAttacker; BattleScriptExecute(BattleScript_LeechSeedTurnDrain); - ++effect; + effect++; } - ++gBattleStruct->turnEffectsTracker; + gBattleStruct->turnEffectsTracker++; break; case ENDTURN_POISON: // poison if ((gBattleMons[gActiveBattler].status1 & STATUS1_POISON) && gBattleMons[gActiveBattler].hp != 0) @@ -751,9 +812,9 @@ u8 DoBattlerEndTurnEffects(void) if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; BattleScriptExecute(BattleScript_PoisonTurnDmg); - ++effect; + effect++; } - ++gBattleStruct->turnEffectsTracker; + gBattleStruct->turnEffectsTracker++; break; case ENDTURN_BAD_POISON: // toxic poison if ((gBattleMons[gActiveBattler].status1 & STATUS1_TOXIC_POISON) && gBattleMons[gActiveBattler].hp != 0) @@ -761,13 +822,13 @@ u8 DoBattlerEndTurnEffects(void) gBattleMoveDamage = gBattleMons[gActiveBattler].maxHP / 16; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; - if ((gBattleMons[gActiveBattler].status1 & 0xF00) != 0xF00) // not 16 turns - gBattleMons[gActiveBattler].status1 += 0x100; - gBattleMoveDamage *= (gBattleMons[gActiveBattler].status1 & 0xF00) >> 8; + if ((gBattleMons[gActiveBattler].status1 & STATUS1_TOXIC_COUNTER) != STATUS1_TOXIC_TURN(15)) // not 16 turns + gBattleMons[gActiveBattler].status1 += STATUS1_TOXIC_TURN(1); + gBattleMoveDamage *= (gBattleMons[gActiveBattler].status1 & STATUS1_TOXIC_COUNTER) >> 8; BattleScriptExecute(BattleScript_PoisonTurnDmg); - ++effect; + effect++; } - ++gBattleStruct->turnEffectsTracker; + gBattleStruct->turnEffectsTracker++; break; case ENDTURN_BURN: // burn if ((gBattleMons[gActiveBattler].status1 & STATUS1_BURN) && gBattleMons[gActiveBattler].hp != 0) @@ -776,9 +837,9 @@ u8 DoBattlerEndTurnEffects(void) if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; BattleScriptExecute(BattleScript_BurnTurnDmg); - ++effect; + effect++; } - ++gBattleStruct->turnEffectsTracker; + gBattleStruct->turnEffectsTracker++; break; case ENDTURN_NIGHTMARES: // spooky nightmares if ((gBattleMons[gActiveBattler].status2 & STATUS2_NIGHTMARE) && gBattleMons[gActiveBattler].hp != 0) @@ -791,14 +852,14 @@ u8 DoBattlerEndTurnEffects(void) if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; BattleScriptExecute(BattleScript_NightmareTurnDmg); - ++effect; + effect++; } else { gBattleMons[gActiveBattler].status2 &= ~STATUS2_NIGHTMARE; } } - ++gBattleStruct->turnEffectsTracker; + gBattleStruct->turnEffectsTracker++; break; case ENDTURN_CURSE: // curse if ((gBattleMons[gActiveBattler].status2 & STATUS2_CURSED) && gBattleMons[gActiveBattler].hp != 0) @@ -807,14 +868,14 @@ u8 DoBattlerEndTurnEffects(void) if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; BattleScriptExecute(BattleScript_CurseTurnDmg); - ++effect; + effect++; } - ++gBattleStruct->turnEffectsTracker; + gBattleStruct->turnEffectsTracker++; break; case ENDTURN_WRAP: // wrap if ((gBattleMons[gActiveBattler].status2 & STATUS2_WRAPPED) && gBattleMons[gActiveBattler].hp != 0) { - gBattleMons[gActiveBattler].status2 -= 0x2000; + gBattleMons[gActiveBattler].status2 -= STATUS2_WRAPPED_TURN(1); if (gBattleMons[gActiveBattler].status2 & STATUS2_WRAPPED) // damaged by wrap { gBattleScripting.animArg1 = *(gBattleStruct->wrappedMove + gActiveBattler * 2 + 0); @@ -839,24 +900,24 @@ u8 DoBattlerEndTurnEffects(void) gBattlescriptCurrInstr = BattleScript_WrapEnds; } BattleScriptExecute(gBattlescriptCurrInstr); - ++effect; + effect++; } - ++gBattleStruct->turnEffectsTracker; + gBattleStruct->turnEffectsTracker++; break; case ENDTURN_UPROAR: // uproar if (gBattleMons[gActiveBattler].status2 & STATUS2_UPROAR) { - for (gBattlerAttacker = 0; gBattlerAttacker < gBattlersCount; ++gBattlerAttacker) + for (gBattlerAttacker = 0; gBattlerAttacker < gBattlersCount; gBattlerAttacker++) { if ((gBattleMons[gBattlerAttacker].status1 & STATUS1_SLEEP) && gBattleMons[gBattlerAttacker].ability != ABILITY_SOUNDPROOF) { - gBattleMons[gBattlerAttacker].status1 &= ~(STATUS1_SLEEP); - gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_NIGHTMARE); + gBattleMons[gBattlerAttacker].status1 &= ~STATUS1_SLEEP; + gBattleMons[gBattlerAttacker].status2 &= ~STATUS2_NIGHTMARE; gBattleCommunication[MULTISTRING_CHOOSER] = 1; BattleScriptExecute(BattleScript_MonWokeUpInUproar); gActiveBattler = gBattlerAttacker; - BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1); + BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1); MarkBattlerForControllerExec(gActiveBattler); break; } @@ -869,20 +930,20 @@ u8 DoBattlerEndTurnEffects(void) else { gBattlerAttacker = gActiveBattler; - gBattleMons[gActiveBattler].status2 -= 0x10; // uproar timer goes down + gBattleMons[gActiveBattler].status2 -= STATUS2_UPROAR_TURN(1); if (WasUnableToUseMove(gActiveBattler)) { CancelMultiTurnMoves(gActiveBattler); - gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_UPROAR_ENDS; } else if (gBattleMons[gActiveBattler].status2 & STATUS2_UPROAR) { - gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_UPROAR_CONTINUES; gBattleMons[gActiveBattler].status2 |= STATUS2_MULTIPLETURNS; } else { - gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_UPROAR_ENDS; CancelMultiTurnMoves(gActiveBattler); } BattleScriptExecute(BattleScript_PrintUproarOverTurns); @@ -890,36 +951,35 @@ u8 DoBattlerEndTurnEffects(void) } } if (effect != 2) - ++gBattleStruct->turnEffectsTracker; + gBattleStruct->turnEffectsTracker++; break; case ENDTURN_THRASH: // thrash if (gBattleMons[gActiveBattler].status2 & STATUS2_LOCK_CONFUSE) { - gBattleMons[gActiveBattler].status2 -= 0x400; + gBattleMons[gActiveBattler].status2 -= STATUS2_LOCK_CONFUSE_TURN(1); if (WasUnableToUseMove(gActiveBattler)) CancelMultiTurnMoves(gActiveBattler); else if (!(gBattleMons[gActiveBattler].status2 & STATUS2_LOCK_CONFUSE) - && (gBattleMons[gActiveBattler].status2 & STATUS2_MULTIPLETURNS)) + && (gBattleMons[gActiveBattler].status2 & STATUS2_MULTIPLETURNS)) { - gBattleMons[gActiveBattler].status2 &= ~(STATUS2_MULTIPLETURNS); + gBattleMons[gActiveBattler].status2 &= ~STATUS2_MULTIPLETURNS; if (!(gBattleMons[gActiveBattler].status2 & STATUS2_CONFUSION)) { gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_CONFUSION | MOVE_EFFECT_AFFECTS_USER; - SetMoveEffect(1, 0); + SetMoveEffect(TRUE, 0); if (gBattleMons[gActiveBattler].status2 & STATUS2_CONFUSION) BattleScriptExecute(BattleScript_ThrashConfuses); - ++effect; + effect++; } } } - ++gBattleStruct->turnEffectsTracker; + gBattleStruct->turnEffectsTracker++; break; case ENDTURN_DISABLE: // disable if (gDisableStructs[gActiveBattler].disableTimer != 0) { s32 i; - - for (i = 0; i < MAX_MON_MOVES; ++i) + for (i = 0; i < MAX_MON_MOVES; i++) { if (gDisableStructs[gActiveBattler].disabledMove == gBattleMons[gActiveBattler].moves[i]) break; @@ -933,10 +993,10 @@ u8 DoBattlerEndTurnEffects(void) { gDisableStructs[gActiveBattler].disabledMove = MOVE_NONE; BattleScriptExecute(BattleScript_DisabledNoMore); - ++effect; + effect++; } } - ++gBattleStruct->turnEffectsTracker; + gBattleStruct->turnEffectsTracker++; break; case ENDTURN_ENCORE: // encore if (gDisableStructs[gActiveBattler].encoreTimer != 0) @@ -947,56 +1007,56 @@ u8 DoBattlerEndTurnEffects(void) gDisableStructs[gActiveBattler].encoreTimer = 0; } else if (--gDisableStructs[gActiveBattler].encoreTimer == 0 - || gBattleMons[gActiveBattler].pp[gDisableStructs[gActiveBattler].encoredMovePos] == 0) + || gBattleMons[gActiveBattler].pp[gDisableStructs[gActiveBattler].encoredMovePos] == 0) { gDisableStructs[gActiveBattler].encoredMove = MOVE_NONE; gDisableStructs[gActiveBattler].encoreTimer = 0; BattleScriptExecute(BattleScript_EncoredNoMore); - ++effect; + effect++; } } - ++gBattleStruct->turnEffectsTracker; + gBattleStruct->turnEffectsTracker++; break; case ENDTURN_LOCK_ON: // lock-on decrement if (gStatuses3[gActiveBattler] & STATUS3_ALWAYS_HITS) - gStatuses3[gActiveBattler] -= 0x8; - ++gBattleStruct->turnEffectsTracker; + gStatuses3[gActiveBattler] -= STATUS3_ALWAYS_HITS_TURN(1); + gBattleStruct->turnEffectsTracker++; break; case ENDTURN_CHARGE: // charge if (gDisableStructs[gActiveBattler].chargeTimer && --gDisableStructs[gActiveBattler].chargeTimer == 0) gStatuses3[gActiveBattler] &= ~STATUS3_CHARGED_UP; - ++gBattleStruct->turnEffectsTracker; + gBattleStruct->turnEffectsTracker++; break; case ENDTURN_TAUNT: // taunt if (gDisableStructs[gActiveBattler].tauntTimer) - --gDisableStructs[gActiveBattler].tauntTimer; - ++gBattleStruct->turnEffectsTracker; + gDisableStructs[gActiveBattler].tauntTimer--; + gBattleStruct->turnEffectsTracker++; break; case ENDTURN_YAWN: // yawn if (gStatuses3[gActiveBattler] & STATUS3_YAWN) { - gStatuses3[gActiveBattler] -= 0x800; + gStatuses3[gActiveBattler] -= STATUS3_YAWN_TURN(1); if (!(gStatuses3[gActiveBattler] & STATUS3_YAWN) && !(gBattleMons[gActiveBattler].status1 & STATUS1_ANY) && gBattleMons[gActiveBattler].ability != ABILITY_VITAL_SPIRIT && gBattleMons[gActiveBattler].ability != ABILITY_INSOMNIA && !UproarWakeUpCheck(gActiveBattler)) { CancelMultiTurnMoves(gActiveBattler); - gBattleMons[gActiveBattler].status1 |= (Random() & 3) + 2; - BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1); + gBattleMons[gActiveBattler].status1 |= STATUS1_SLEEP_TURN((Random() & 3) + 2); // 2-5 turns of sleep + BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1); MarkBattlerForControllerExec(gActiveBattler); gEffectBattler = gActiveBattler; BattleScriptExecute(BattleScript_YawnMakesAsleep); - ++effect; + effect++; } } - ++gBattleStruct->turnEffectsTracker; + gBattleStruct->turnEffectsTracker++; break; case ENDTURN_BATTLER_COUNT: // done gBattleStruct->turnEffectsTracker = 0; - ++gBattleStruct->turnEffectsBattlerId; + gBattleStruct->turnEffectsBattlerId++; break; } - if (effect) + if (effect != 0) return effect; } } @@ -1007,6 +1067,7 @@ u8 DoBattlerEndTurnEffects(void) bool8 HandleWishPerishSongOnTurnEnd(void) { gHitMarker |= (HITMARKER_GRUDGE | HITMARKER_SKIP_DMG_TRACK); + switch (gBattleStruct->wishPerishSongState) { case 0: @@ -1015,19 +1076,22 @@ bool8 HandleWishPerishSongOnTurnEnd(void) gActiveBattler = gBattleStruct->wishPerishSongBattlerId; if (gAbsentBattlerFlags & gBitTable[gActiveBattler]) { - ++gBattleStruct->wishPerishSongBattlerId; + gBattleStruct->wishPerishSongBattlerId++; continue; } - ++gBattleStruct->wishPerishSongBattlerId; + + gBattleStruct->wishPerishSongBattlerId++; if (gWishFutureKnock.futureSightCounter[gActiveBattler] != 0 && --gWishFutureKnock.futureSightCounter[gActiveBattler] == 0 && gBattleMons[gActiveBattler].hp != 0) { if (gWishFutureKnock.futureSightMove[gActiveBattler] == MOVE_FUTURE_SIGHT) - gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_FUTURE_SIGHT; else - gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_DOOM_DESIRE; + PREPARE_MOVE_BUFFER(gBattleTextBuff1, gWishFutureKnock.futureSightMove[gActiveBattler]); + gBattlerTarget = gActiveBattler; gBattlerAttacker = gWishFutureKnock.futureSightAttacker[gActiveBattler]; gBattleMoveDamage = gWishFutureKnock.futureSightDmg[gActiveBattler]; @@ -1038,7 +1102,6 @@ bool8 HandleWishPerishSongOnTurnEnd(void) } { u8 *state = &gBattleStruct->wishPerishSongState; - *state = 1; gBattleStruct->wishPerishSongBattlerId = 0; } @@ -1049,10 +1112,10 @@ bool8 HandleWishPerishSongOnTurnEnd(void) gActiveBattler = gBattlerAttacker = gBattlerByTurnOrder[gBattleStruct->wishPerishSongBattlerId]; if (gAbsentBattlerFlags & gBitTable[gActiveBattler]) { - ++gBattleStruct->wishPerishSongBattlerId; + gBattleStruct->wishPerishSongBattlerId++; continue; } - ++gBattleStruct->wishPerishSongBattlerId; + gBattleStruct->wishPerishSongBattlerId++; if (gStatuses3[gActiveBattler] & STATUS3_PERISH_SONG) { PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff1, 1, gDisableStructs[gActiveBattler].perishSongTimer); @@ -1064,7 +1127,7 @@ bool8 HandleWishPerishSongOnTurnEnd(void) } else { - --gDisableStructs[gActiveBattler].perishSongTimer; + gDisableStructs[gActiveBattler].perishSongTimer--; gBattlescriptCurrInstr = BattleScript_PerishSongCountGoesDown; } BattleScriptExecute(gBattlescriptCurrInstr); @@ -1073,7 +1136,9 @@ bool8 HandleWishPerishSongOnTurnEnd(void) } break; } + gHitMarker &= ~(HITMARKER_GRUDGE | HITMARKER_SKIP_DMG_TRACK); + return FALSE; } @@ -1090,8 +1155,8 @@ bool8 HandleFaintedMonActions(void) { case 0: gBattleStruct->faintedActionsBattlerId = 0; - ++gBattleStruct->faintedActionsState; - for (i = 0; i < gBattlersCount; ++i) + gBattleStruct->faintedActionsState++; + for (i = 0; i < gBattlersCount; i++) { if (gAbsentBattlerFlags & gBitTable[i] && !HasNoMonsToSwitch(i, PARTY_SIZE, PARTY_SIZE)) gAbsentBattlerFlags &= ~(gBitTable[i]); @@ -1121,7 +1186,7 @@ bool8 HandleFaintedMonActions(void) break; case 3: gBattleStruct->faintedActionsBattlerId = 0; - ++gBattleStruct->faintedActionsState; + gBattleStruct->faintedActionsState++; // fall through case 4: do @@ -1144,9 +1209,12 @@ bool8 HandleFaintedMonActions(void) gBattleStruct->faintedActionsState = 4; break; case 6: - if (AbilityBattleEffects(ABILITYEFFECT_INTIMIDATE1, 0, 0, 0, 0) || AbilityBattleEffects(ABILITYEFFECT_TRACE, 0, 0, 0, 0) || ItemBattleEffects(1, 0, TRUE) || AbilityBattleEffects(ABILITYEFFECT_FORECAST, 0, 0, 0, 0)) + if (AbilityBattleEffects(ABILITYEFFECT_INTIMIDATE1, 0, 0, 0, 0) + || AbilityBattleEffects(ABILITYEFFECT_TRACE, 0, 0, 0, 0) + || ItemBattleEffects(ITEMEFFECT_NORMAL, 0, TRUE) + || AbilityBattleEffects(ABILITYEFFECT_FORECAST, 0, 0, 0, 0)) return TRUE; - ++gBattleStruct->faintedActionsState; + gBattleStruct->faintedActionsState++; break; case FAINTED_ACTIONS_MAX_CASE: break; @@ -1158,10 +1226,11 @@ bool8 HandleFaintedMonActions(void) void TryClearRageStatuses(void) { s32 i; - - for (i = 0; i < gBattlersCount; ++i) + for (i = 0; i < gBattlersCount; i++) + { if ((gBattleMons[i].status2 & STATUS2_RAGE) && gChosenMoveByBattler[i] != MOVE_RAGE) - gBattleMons[i].status2 &= ~(STATUS2_RAGE); + gBattleMons[i].status2 &= ~STATUS2_RAGE; + } } enum @@ -1188,38 +1257,36 @@ u8 AtkCanceller_UnableToUseMove(void) { u8 effect = 0; s32 *bideDmg = &gBattleScripting.bideDmg; - do { switch (gBattleStruct->atkCancellerTracker) { case CANCELLER_FLAGS: // flags clear - gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_DESTINY_BOND); - gStatuses3[gBattlerAttacker] &= ~(STATUS3_GRUDGE); - ++gBattleStruct->atkCancellerTracker; + gBattleMons[gBattlerAttacker].status2 &= ~STATUS2_DESTINY_BOND; + gStatuses3[gBattlerAttacker] &= ~STATUS3_GRUDGE; + gBattleStruct->atkCancellerTracker++; break; case CANCELLER_ASLEEP: // check being asleep if (gBattleMons[gBattlerAttacker].status1 & STATUS1_SLEEP) { if (UproarWakeUpCheck(gBattlerAttacker)) { - gBattleMons[gBattlerAttacker].status1 &= ~(STATUS1_SLEEP); - gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_NIGHTMARE); + gBattleMons[gBattlerAttacker].status1 &= ~STATUS1_SLEEP; + gBattleMons[gBattlerAttacker].status2 &= ~STATUS2_NIGHTMARE; BattleScriptPushCursor(); - gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_WOKE_UP_UPROAR; gBattlescriptCurrInstr = BattleScript_MoveUsedWokeUp; effect = 2; } else { u8 toSub; - if (gBattleMons[gBattlerAttacker].ability == ABILITY_EARLY_BIRD) toSub = 2; else toSub = 1; if ((gBattleMons[gBattlerAttacker].status1 & STATUS1_SLEEP) < toSub) - gBattleMons[gBattlerAttacker].status1 &= ~(STATUS1_SLEEP); + gBattleMons[gBattlerAttacker].status1 &= ~STATUS1_SLEEP; else gBattleMons[gBattlerAttacker].status1 -= toSub; if (gBattleMons[gBattlerAttacker].status1 & STATUS1_SLEEP) @@ -1233,15 +1300,15 @@ u8 AtkCanceller_UnableToUseMove(void) } else { - gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_NIGHTMARE); + gBattleMons[gBattlerAttacker].status2 &= ~STATUS2_NIGHTMARE; BattleScriptPushCursor(); - gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_WOKE_UP; gBattlescriptCurrInstr = BattleScript_MoveUsedWokeUp; effect = 2; } } } - ++gBattleStruct->atkCancellerTracker; + gBattleStruct->atkCancellerTracker++; break; case CANCELLER_FROZEN: // check being frozen if (gBattleMons[gBattlerAttacker].status1 & STATUS1_FREEZE) @@ -1255,56 +1322,56 @@ u8 AtkCanceller_UnableToUseMove(void) } else { - ++gBattleStruct->atkCancellerTracker; + gBattleStruct->atkCancellerTracker++; break; } } else // unfreeze { - gBattleMons[gBattlerAttacker].status1 &= ~(STATUS1_FREEZE); + gBattleMons[gBattlerAttacker].status1 &= ~STATUS1_FREEZE; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_MoveUsedUnfroze; - gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_DEFROSTED; } effect = 2; } - ++gBattleStruct->atkCancellerTracker; + gBattleStruct->atkCancellerTracker++; break; case CANCELLER_TRUANT: // truant if (gBattleMons[gBattlerAttacker].ability == ABILITY_TRUANT && gDisableStructs[gBattlerAttacker].truantCounter) { CancelMultiTurnMoves(gBattlerAttacker); gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; - gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_LOAFING; gBattlescriptCurrInstr = BattleScript_MoveUsedLoafingAround; gMoveResultFlags |= MOVE_RESULT_MISSED; effect = 1; } - ++gBattleStruct->atkCancellerTracker; + gBattleStruct->atkCancellerTracker++; break; case CANCELLER_RECHARGE: // recharge if (gBattleMons[gBattlerAttacker].status2 & STATUS2_RECHARGE) { - gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_RECHARGE); + gBattleMons[gBattlerAttacker].status2 &= ~STATUS2_RECHARGE; gDisableStructs[gBattlerAttacker].rechargeTimer = 0; CancelMultiTurnMoves(gBattlerAttacker); gBattlescriptCurrInstr = BattleScript_MoveUsedMustRecharge; gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; effect = 1; } - ++gBattleStruct->atkCancellerTracker; + gBattleStruct->atkCancellerTracker++; break; case CANCELLER_FLINCH: // flinch if (gBattleMons[gBattlerAttacker].status2 & STATUS2_FLINCHED) { - gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_FLINCHED); + gBattleMons[gBattlerAttacker].status2 &= ~STATUS2_FLINCHED; gProtectStructs[gBattlerAttacker].flinchImmobility = 1; CancelMultiTurnMoves(gBattlerAttacker); gBattlescriptCurrInstr = BattleScript_MoveUsedFlinched; gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; effect = 1; } - ++gBattleStruct->atkCancellerTracker; + gBattleStruct->atkCancellerTracker++; break; case CANCELLER_DISABLED: // disabled move if (gDisableStructs[gBattlerAttacker].disabledMove == gCurrentMove && gDisableStructs[gBattlerAttacker].disabledMove != MOVE_NONE) @@ -1316,7 +1383,7 @@ u8 AtkCanceller_UnableToUseMove(void) gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; effect = 1; } - ++gBattleStruct->atkCancellerTracker; + gBattleStruct->atkCancellerTracker++; break; case CANCELLER_TAUNTED: // taunt if (gDisableStructs[gBattlerAttacker].tauntTimer && gBattleMoves[gCurrentMove].power == 0) @@ -1327,7 +1394,7 @@ u8 AtkCanceller_UnableToUseMove(void) gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; effect = 1; } - ++gBattleStruct->atkCancellerTracker; + gBattleStruct->atkCancellerTracker++; break; case CANCELLER_IMPRISONED: // imprisoned if (GetImprisonedMovesCount(gBattlerAttacker, gCurrentMove)) @@ -1338,22 +1405,24 @@ u8 AtkCanceller_UnableToUseMove(void) gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; effect = 1; } - ++gBattleStruct->atkCancellerTracker; + gBattleStruct->atkCancellerTracker++; break; case CANCELLER_CONFUSED: // confusion if (gBattleMons[gBattlerAttacker].status2 & STATUS2_CONFUSION) { - --gBattleMons[gBattlerAttacker].status2; + gBattleMons[gBattlerAttacker].status2 -= STATUS2_CONFUSION_TURN(1); if (gBattleMons[gBattlerAttacker].status2 & STATUS2_CONFUSION) { if (Random() & 1) { - gBattleCommunication[MULTISTRING_CHOOSER] = 0; + // The MULTISTRING_CHOOSER is used here as a bool to signal + // to BattleScript_MoveUsedIsConfused whether or not damage was taken + gBattleCommunication[MULTISTRING_CHOOSER] = FALSE; BattleScriptPushCursor(); } else // confusion dmg { - gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gBattleCommunication[MULTISTRING_CHOOSER] = TRUE; gBattlerTarget = gBattlerAttacker; gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBattlerAttacker], &gBattleMons[gBattlerAttacker], MOVE_POUND, 0, 40, 0, gBattlerAttacker, gBattlerAttacker); gProtectStructs[gBattlerAttacker].confusionSelfDmg = 1; @@ -1368,17 +1437,19 @@ u8 AtkCanceller_UnableToUseMove(void) } effect = 1; } - ++gBattleStruct->atkCancellerTracker; + gBattleStruct->atkCancellerTracker++; break; case CANCELLER_PARALYSED: // paralysis if ((gBattleMons[gBattlerAttacker].status1 & STATUS1_PARALYSIS) && (Random() % 4) == 0) { gProtectStructs[gBattlerAttacker].prlzImmobility = 1; + // This is removed in FRLG and Emerald for some reason + //CancelMultiTurnMoves(gBattlerAttacker); gBattlescriptCurrInstr = BattleScript_MoveUsedIsParalyzed; gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE; effect = 1; } - ++gBattleStruct->atkCancellerTracker; + gBattleStruct->atkCancellerTracker++; break; case CANCELLER_GHOST: // GHOST in pokemon tower if (IS_BATTLE_TYPE_GHOST_WITHOUT_SCOPE(gBattleTypeFlags)) @@ -1390,7 +1461,7 @@ u8 AtkCanceller_UnableToUseMove(void) gBattleCommunication[MULTISTRING_CHOOSER] = 0; effect = 1; } - ++gBattleStruct->atkCancellerTracker; + gBattleStruct->atkCancellerTracker++; break; case CANCELLER_IN_LOVE: // infatuation if (gBattleMons[gBattlerAttacker].status2 & STATUS2_INFATUATION) @@ -1410,25 +1481,27 @@ u8 AtkCanceller_UnableToUseMove(void) gBattlescriptCurrInstr = BattleScript_MoveUsedIsInLove; effect = 1; } - ++gBattleStruct->atkCancellerTracker; + gBattleStruct->atkCancellerTracker++; break; case CANCELLER_BIDE: // bide if (gBattleMons[gBattlerAttacker].status2 & STATUS2_BIDE) { - gBattleMons[gBattlerAttacker].status2 -= 0x100; + gBattleMons[gBattlerAttacker].status2 -= STATUS2_BIDE_TURN(1); if (gBattleMons[gBattlerAttacker].status2 & STATUS2_BIDE) { gBattlescriptCurrInstr = BattleScript_BideStoringEnergy; } else { + // This is removed in FRLG and Emerald for some reason + //gBattleMons[gBattlerAttacker].status2 &= ~STATUS2_MULTIPLETURNS; if (gTakenDmg[gBattlerAttacker]) { gCurrentMove = MOVE_BIDE; *bideDmg = gTakenDmg[gBattlerAttacker] * 2; gBattlerTarget = gTakenDmgByBattler[gBattlerAttacker]; if (gAbsentBattlerFlags & gBitTable[gBattlerTarget]) - gBattlerTarget = GetMoveTarget(MOVE_BIDE, 1); + gBattlerTarget = GetMoveTarget(MOVE_BIDE, MOVE_TARGET_SELECTED + 1); gBattlescriptCurrInstr = BattleScript_BideAttack; } else @@ -1438,31 +1511,32 @@ u8 AtkCanceller_UnableToUseMove(void) } effect = 1; } - ++gBattleStruct->atkCancellerTracker; + gBattleStruct->atkCancellerTracker++; break; case CANCELLER_THAW: // move thawing if (gBattleMons[gBattlerAttacker].status1 & STATUS1_FREEZE) { if (gBattleMoves[gCurrentMove].effect == EFFECT_THAW_HIT) { - gBattleMons[gBattlerAttacker].status1 &= ~(STATUS1_FREEZE); + gBattleMons[gBattlerAttacker].status1 &= ~STATUS1_FREEZE; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_MoveUsedUnfroze; - gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_DEFROSTED_BY_MOVE; } effect = 2; } - ++gBattleStruct->atkCancellerTracker; + gBattleStruct->atkCancellerTracker++; break; case CANCELLER_END: break; } - } while (gBattleStruct->atkCancellerTracker != CANCELLER_END && !effect); + } while (gBattleStruct->atkCancellerTracker != CANCELLER_END && effect == 0); + if (effect == 2) { gActiveBattler = gBattlerAttacker; - BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1); + BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1); MarkBattlerForControllerExec(gActiveBattler); } return effect; @@ -1470,64 +1544,61 @@ u8 AtkCanceller_UnableToUseMove(void) bool8 HasNoMonsToSwitch(u8 battler, u8 partyIdBattlerOn1, u8 partyIdBattlerOn2) { - u8 playerId, flankId; struct Pokemon *party; + u8 id1, id2; s32 i; if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE)) - { return FALSE; + + if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + { + id2 = GetBattlerMultiplayerId(battler); + if (GetBattlerSide(battler) == B_SIDE_PLAYER) + party = gPlayerParty; + else + party = gEnemyParty; + + id1 = GetLinkTrainerFlankId(id2); + for (i = id1 * MULTI_PARTY_SIZE; i < id1 * MULTI_PARTY_SIZE + MULTI_PARTY_SIZE; i++) + { + if (GetMonData(&party[i], MON_DATA_HP) != 0 + && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_NONE + && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_EGG) + break; + } + return (i == id1 * MULTI_PARTY_SIZE + MULTI_PARTY_SIZE); } else { - if (gBattleTypeFlags & BATTLE_TYPE_MULTI) + if (GetBattlerSide(battler) == B_SIDE_OPPONENT) { - playerId = GetBattlerMultiplayerId(battler); - if (GetBattlerSide(battler) == B_SIDE_PLAYER) - party = gPlayerParty; - else - party = gEnemyParty; - flankId = GetLinkTrainerFlankId(playerId); - for (i = flankId * 3; i < flankId * 3 + 3; ++i) - { - if (GetMonData(&party[i], MON_DATA_HP) != 0 - && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_NONE - && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_EGG) - break; - } - return (i == flankId * 3 + 3); + id2 = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); + id1 = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT); + party = gEnemyParty; } else { - if (GetBattlerSide(battler) == B_SIDE_OPPONENT) - { - playerId = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); - flankId = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT); - party = gEnemyParty; - } - else - { - playerId = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); - flankId = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT); - party = gPlayerParty; - } - if (partyIdBattlerOn1 == PARTY_SIZE) - partyIdBattlerOn1 = gBattlerPartyIndexes[playerId]; - if (partyIdBattlerOn2 == PARTY_SIZE) - partyIdBattlerOn2 = gBattlerPartyIndexes[flankId]; - for (i = 0; i < PARTY_SIZE; ++i) - { - if (GetMonData(&party[i], MON_DATA_HP) != 0 - && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_NONE - && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_EGG - && i != partyIdBattlerOn1 - && i != partyIdBattlerOn2 - && i != *(gBattleStruct->monToSwitchIntoId + playerId) - && i != flankId[gBattleStruct->monToSwitchIntoId]) - break; - } - return (i == PARTY_SIZE); + id2 = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT); + id1 = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT); + party = gPlayerParty; } + + if (partyIdBattlerOn1 == PARTY_SIZE) + partyIdBattlerOn1 = gBattlerPartyIndexes[id2]; + if (partyIdBattlerOn2 == PARTY_SIZE) + partyIdBattlerOn2 = gBattlerPartyIndexes[id1]; + + for (i = 0; i < PARTY_SIZE; i++) + { + if (GetMonData(&party[i], MON_DATA_HP) != 0 + && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_NONE + && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_EGG + && i != partyIdBattlerOn1 && i != partyIdBattlerOn2 + && i != *(gBattleStruct->monToSwitchIntoId + id2) && i != id1[gBattleStruct->monToSwitchIntoId]) + break; + } + return (i == PARTY_SIZE); } } @@ -1587,24 +1658,31 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA if (gBattlerAttacker >= gBattlersCount) gBattlerAttacker = battler; + if (GetBattlerSide(gBattlerAttacker) == B_SIDE_PLAYER) pokeAtk = &gPlayerParty[gBattlerPartyIndexes[gBattlerAttacker]]; else pokeAtk = &gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker]]; + if (gBattlerTarget >= gBattlersCount) gBattlerTarget = battler; + if (GetBattlerSide(gBattlerTarget) == B_SIDE_PLAYER) pokeDef = &gPlayerParty[gBattlerPartyIndexes[gBattlerTarget]]; else pokeDef = &gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]]; + speciesAtk = GetMonData(pokeAtk, MON_DATA_SPECIES); pidAtk = GetMonData(pokeAtk, MON_DATA_PERSONALITY); + speciesDef = GetMonData(pokeDef, MON_DATA_SPECIES); pidDef = GetMonData(pokeDef, MON_DATA_PERSONALITY); + if (!(gBattleTypeFlags & BATTLE_TYPE_SAFARI)) // Why isn't that check done at the beginning? { u8 moveType; s32 i; + u16 move; u8 side; u8 target1; @@ -1612,12 +1690,18 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA gLastUsedAbility = special; else gLastUsedAbility = gBattleMons[battler].ability; - if (!moveArg) - moveArg = gCurrentMove; - GET_MOVE_TYPE(moveArg, moveType); + + if (moveArg) + move = moveArg; + else + move = gCurrentMove; + + GET_MOVE_TYPE(move, moveType); + if (IS_BATTLE_TYPE_GHOST_WITHOUT_SCOPE(gBattleTypeFlags) && (gLastUsedAbility == ABILITY_INTIMIDATE || gLastUsedAbility == ABILITY_TRACE)) return effect; + switch (caseID) { case ABILITYEFFECT_ON_SWITCHIN: // 0 @@ -1636,29 +1720,29 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA gBattleWeather = (B_WEATHER_RAIN_TEMPORARY | B_WEATHER_RAIN_PERMANENT); gBattleScripting.animArg1 = B_ANIM_RAIN_CONTINUES; gBattleScripting.battler = battler; - ++effect; + effect++; } break; case WEATHER_SANDSTORM: if (!(gBattleWeather & B_WEATHER_SANDSTORM)) { - gBattleWeather = (B_WEATHER_SANDSTORM_PERMANENT | B_WEATHER_SANDSTORM_TEMPORARY); + gBattleWeather = B_WEATHER_SANDSTORM; gBattleScripting.animArg1 = B_ANIM_SANDSTORM_CONTINUES; gBattleScripting.battler = battler; - ++effect; + effect++; } break; case WEATHER_DROUGHT: if (!(gBattleWeather & B_WEATHER_SUN)) { - gBattleWeather = (B_WEATHER_SUN_PERMANENT | B_WEATHER_SUN_TEMPORARY); + gBattleWeather = B_WEATHER_SUN; gBattleScripting.animArg1 = B_ANIM_SUN_CONTINUES; gBattleScripting.battler = battler; - ++effect; + effect++; } break; } - if (effect) + if (effect != 0) { gBattleCommunication[MULTISTRING_CHOOSER] = GetCurrentWeather(); BattleScriptPushCursorAndCallback(BattleScript_OverworldWeatherStarts); @@ -1670,25 +1754,25 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA gBattleWeather = (B_WEATHER_RAIN_PERMANENT | B_WEATHER_RAIN_TEMPORARY); BattleScriptPushCursorAndCallback(BattleScript_DrizzleActivates); gBattleScripting.battler = battler; - ++effect; + effect++; } break; case ABILITY_SAND_STREAM: if (!(gBattleWeather & B_WEATHER_SANDSTORM_PERMANENT)) { - gBattleWeather = (B_WEATHER_SANDSTORM_PERMANENT | B_WEATHER_SANDSTORM_TEMPORARY); + gBattleWeather = B_WEATHER_SANDSTORM; BattleScriptPushCursorAndCallback(BattleScript_SandstreamActivates); gBattleScripting.battler = battler; - ++effect; + effect++; } break; case ABILITY_DROUGHT: if (!(gBattleWeather & B_WEATHER_SUN_PERMANENT)) { - gBattleWeather = (B_WEATHER_SUN_PERMANENT | B_WEATHER_SUN_TEMPORARY); + gBattleWeather = B_WEATHER_SUN; BattleScriptPushCursorAndCallback(BattleScript_DroughtActivates); gBattleScripting.battler = battler; - ++effect; + effect++; } break; case ABILITY_INTIMIDATE: @@ -1717,7 +1801,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA case ABILITY_CLOUD_NINE: case ABILITY_AIR_LOCK: { - for (target1 = 0; target1 < gBattlersCount; ++target1) + for (target1 = 0; target1 < gBattlersCount; target1++) { effect = CastformDataTypeChange(target1); if (effect != 0) @@ -1748,7 +1832,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; gBattleMoveDamage *= -1; - ++effect; + effect++; } break; case ABILITY_SHED_SKIN: @@ -1765,23 +1849,23 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA if (gBattleMons[battler].status1 & STATUS1_FREEZE) StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn); gBattleMons[battler].status1 = 0; - gBattleMons[battler].status2 &= ~(STATUS2_NIGHTMARE); // fix nightmare glitch + gBattleMons[battler].status2 &= ~STATUS2_NIGHTMARE; // fix nightmare glitch gBattleScripting.battler = gActiveBattler = battler; BattleScriptPushCursorAndCallback(BattleScript_ShedSkinActivates); - BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[battler].status1); + BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[battler].status1); MarkBattlerForControllerExec(gActiveBattler); - ++effect; + effect++; } break; case ABILITY_SPEED_BOOST: - if (gBattleMons[battler].statStages[STAT_SPEED] < 0xC && gDisableStructs[battler].isFirstTurn != 2) + if (gBattleMons[battler].statStages[STAT_SPEED] < MAX_STAT_STAGE && gDisableStructs[battler].isFirstTurn != 2) { - ++gBattleMons[battler].statStages[STAT_SPEED]; - gBattleScripting.animArg1 = 0x11; + gBattleMons[battler].statStages[STAT_SPEED]++; + gBattleScripting.animArg1 = 14 + STAT_SPEED; gBattleScripting.animArg2 = 0; BattleScriptPushCursorAndCallback(BattleScript_SpeedBoostActivates); gBattleScripting.battler = battler; - ++effect; + effect++; } break; case ABILITY_TRUANT: @@ -1793,10 +1877,12 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA case ABILITYEFFECT_MOVES_BLOCK: // 2 if (gLastUsedAbility == ABILITY_SOUNDPROOF) { - for (i = 0; sSoundMovesTable[i] != 0xFFFF; ++i) - if (sSoundMovesTable[i] == moveArg) + for (i = 0; sSoundMovesTable[i] != SOUND_MOVES_END; i++) + { + if (sSoundMovesTable[i] == move) break; - if (sSoundMovesTable[i] != 0xFFFF) + } + if (sSoundMovesTable[i] != SOUND_MOVES_END) { if (gBattleMons[gBattlerAttacker].status2 & STATUS2_MULTIPLETURNS) gHitMarker |= HITMARKER_NO_PPDEDUCT; @@ -1806,27 +1892,29 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA } break; case ABILITYEFFECT_ABSORBING: // 3 - if (moveArg) + if (move) { switch (gLastUsedAbility) { case ABILITY_VOLT_ABSORB: - if (moveType == TYPE_ELECTRIC && gBattleMoves[moveArg].power != 0) + if (moveType == TYPE_ELECTRIC && gBattleMoves[move].power != 0) { if (gProtectStructs[gBattlerAttacker].notFirstStrike) gBattlescriptCurrInstr = BattleScript_MoveHPDrain; else gBattlescriptCurrInstr = BattleScript_MoveHPDrain_PPLoss; + effect = 1; } break; case ABILITY_WATER_ABSORB: - if (moveType == TYPE_WATER && gBattleMoves[moveArg].power != 0) + if (moveType == TYPE_WATER && gBattleMoves[move].power != 0) { if (gProtectStructs[gBattlerAttacker].notFirstStrike) gBattlescriptCurrInstr = BattleScript_MoveHPDrain; else gBattlescriptCurrInstr = BattleScript_MoveHPDrain_PPLoss; + effect = 1; } break; @@ -1835,21 +1923,23 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA { if (!(gBattleResources->flags->flags[battler] & RESOURCE_FLAG_FLASH_FIRE)) { - gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_FLASH_FIRE_BOOST; if (gProtectStructs[gBattlerAttacker].notFirstStrike) gBattlescriptCurrInstr = BattleScript_FlashFireBoost; else gBattlescriptCurrInstr = BattleScript_FlashFireBoost_PPLoss; + gBattleResources->flags->flags[battler] |= RESOURCE_FLAG_FLASH_FIRE; effect = 2; } else { - gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_FLASH_FIRE_NO_BOOST; if (gProtectStructs[gBattlerAttacker].notFirstStrike) gBattlescriptCurrInstr = BattleScript_FlashFireBoost; else gBattlescriptCurrInstr = BattleScript_FlashFireBoost_PPLoss; + effect = 2; } } @@ -1879,8 +1969,8 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA { case ABILITY_COLOR_CHANGE: if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) - && moveArg != MOVE_STRUGGLE - && gBattleMoves[moveArg].power != 0 + && move != MOVE_STRUGGLE + && gBattleMoves[move].power != 0 && TARGET_TURN_DAMAGED && !IS_BATTLER_OF_TYPE(battler, moveType) && gBattleMons[battler].hp != 0) @@ -1889,7 +1979,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA PREPARE_TYPE_BUFFER(gBattleTextBuff1, moveType); BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_ColorChangeActivates; - ++effect; + effect++; } break; case ABILITY_ROUGH_SKIN: @@ -1897,14 +1987,14 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA && gBattleMons[gBattlerAttacker].hp != 0 && !gProtectStructs[gBattlerAttacker].confusionSelfDmg && TARGET_TURN_DAMAGED - && (gBattleMoves[moveArg].flags & FLAG_MAKES_CONTACT)) + && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)) { gBattleMoveDamage = gBattleMons[gBattlerAttacker].maxHP / 16; if (gBattleMoveDamage == 0) gBattleMoveDamage = 1; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_RoughSkinActivates; - ++effect; + effect++; } break; case ABILITY_EFFECT_SPORE: @@ -1912,20 +2002,22 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA && gBattleMons[gBattlerAttacker].hp != 0 && !gProtectStructs[gBattlerAttacker].confusionSelfDmg && TARGET_TURN_DAMAGED - && (gBattleMoves[moveArg].flags & FLAG_MAKES_CONTACT) + && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) && (Random() % 10) == 0) { do + { gBattleCommunication[MOVE_EFFECT_BYTE] = Random() & 3; - while (gBattleCommunication[MOVE_EFFECT_BYTE] == 0); + } while (gBattleCommunication[MOVE_EFFECT_BYTE] == 0); if (gBattleCommunication[MOVE_EFFECT_BYTE] == MOVE_EFFECT_BURN) gBattleCommunication[MOVE_EFFECT_BYTE] += 2; // 5 MOVE_EFFECT_PARALYSIS + gBattleCommunication[MOVE_EFFECT_BYTE] += MOVE_EFFECT_AFFECTS_USER; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; - ++effect; + effect++; } break; case ABILITY_POISON_POINT: @@ -1933,14 +2025,14 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA && gBattleMons[gBattlerAttacker].hp != 0 && !gProtectStructs[gBattlerAttacker].confusionSelfDmg && TARGET_TURN_DAMAGED - && (gBattleMoves[moveArg].flags & FLAG_MAKES_CONTACT) + && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) && (Random() % 3) == 0) { gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_POISON; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; - ++effect; + effect++; } break; case ABILITY_STATIC: @@ -1948,21 +2040,21 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA && gBattleMons[gBattlerAttacker].hp != 0 && !gProtectStructs[gBattlerAttacker].confusionSelfDmg && TARGET_TURN_DAMAGED - && (gBattleMoves[moveArg].flags & FLAG_MAKES_CONTACT) + && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) && (Random() % 3) == 0) { gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_PARALYSIS; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; - ++effect; + effect++; } break; case ABILITY_FLAME_BODY: if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) && gBattleMons[gBattlerAttacker].hp != 0 && !gProtectStructs[gBattlerAttacker].confusionSelfDmg - && (gBattleMoves[moveArg].flags & FLAG_MAKES_CONTACT) + && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) && TARGET_TURN_DAMAGED && (Random() % 3) == 0) { @@ -1970,14 +2062,14 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect; gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; - ++effect; + effect++; } break; case ABILITY_CUTE_CHARM: if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) && gBattleMons[gBattlerAttacker].hp != 0 && !gProtectStructs[gBattlerAttacker].confusionSelfDmg - && (gBattleMoves[moveArg].flags & FLAG_MAKES_CONTACT) + && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT) && TARGET_TURN_DAMAGED && gBattleMons[gBattlerTarget].hp != 0 && (Random() % 3) == 0 @@ -1990,13 +2082,13 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA gBattleMons[gBattlerAttacker].status2 |= STATUS2_INFATUATED_WITH(gBattlerTarget); BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_CuteCharmActivates; - ++effect; + effect++; } break; } break; case ABILITYEFFECT_IMMUNITY: // 5 - for (battler = 0; battler < gBattlersCount; ++battler) + for (battler = 0; battler < gBattlersCount; battler++) { switch (gBattleMons[battler].ability) { @@ -2025,7 +2117,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA case ABILITY_VITAL_SPIRIT: if (gBattleMons[battler].status1 & STATUS1_SLEEP) { - gBattleMons[battler].status2 &= ~(STATUS2_NIGHTMARE); + gBattleMons[battler].status2 &= ~STATUS2_NIGHTMARE; StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn); effect = 1; } @@ -2052,7 +2144,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA } break; } - if (effect) + if (effect != 0) { switch (effect) { @@ -2060,10 +2152,10 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA gBattleMons[battler].status1 = 0; break; case 2: // get rid of confusion - gBattleMons[battler].status2 &= ~(STATUS2_CONFUSION); + gBattleMons[battler].status2 &= ~STATUS2_CONFUSION; break; case 3: // get rid of infatuation - gBattleMons[battler].status2 &= ~(STATUS2_INFATUATION); + gBattleMons[battler].status2 &= ~STATUS2_INFATUATION; break; } @@ -2071,19 +2163,19 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA gBattlescriptCurrInstr = BattleScript_AbilityCuredStatus; gBattleScripting.battler = battler; gActiveBattler = battler; - BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1); + BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1); MarkBattlerForControllerExec(gActiveBattler); return effect; } } break; case ABILITYEFFECT_FORECAST: // 6 - for (battler = 0; battler < gBattlersCount; ++battler) + for (battler = 0; battler < gBattlersCount; battler++) { if (gBattleMons[battler].ability == ABILITY_FORECAST) { effect = CastformDataTypeChange(battler); - if (effect) + if (effect != 0) { BattleScriptPushCursorAndCallback(BattleScript_CastformChange); gBattleScripting.battler = battler; @@ -2096,80 +2188,81 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA case ABILITYEFFECT_SYNCHRONIZE: // 7 if (gLastUsedAbility == ABILITY_SYNCHRONIZE && (gHitMarker & HITMARKER_SYNCHRONISE_EFFECT)) { - gHitMarker &= ~(HITMARKER_SYNCHRONISE_EFFECT); + gHitMarker &= ~HITMARKER_SYNCHRONISE_EFFECT; gBattleStruct->synchronizeMoveEffect &= ~(MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN); if (gBattleStruct->synchronizeMoveEffect == MOVE_EFFECT_TOXIC) gBattleStruct->synchronizeMoveEffect = MOVE_EFFECT_POISON; + gBattleCommunication[MOVE_EFFECT_BYTE] = gBattleStruct->synchronizeMoveEffect + MOVE_EFFECT_AFFECTS_USER; gBattleScripting.battler = gBattlerTarget; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_SynchronizeActivates; gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; - ++effect; + effect++; } break; case ABILITYEFFECT_ATK_SYNCHRONIZE: // 8 if (gLastUsedAbility == ABILITY_SYNCHRONIZE && (gHitMarker & HITMARKER_SYNCHRONISE_EFFECT)) { - gHitMarker &= ~(HITMARKER_SYNCHRONISE_EFFECT); + gHitMarker &= ~HITMARKER_SYNCHRONISE_EFFECT; gBattleStruct->synchronizeMoveEffect &= ~(MOVE_EFFECT_AFFECTS_USER | MOVE_EFFECT_CERTAIN); if (gBattleStruct->synchronizeMoveEffect == MOVE_EFFECT_TOXIC) gBattleStruct->synchronizeMoveEffect = MOVE_EFFECT_POISON; + gBattleCommunication[MOVE_EFFECT_BYTE] = gBattleStruct->synchronizeMoveEffect; gBattleScripting.battler = gBattlerAttacker; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_SynchronizeActivates; gHitMarker |= HITMARKER_IGNORE_SAFEGUARD; - ++effect; + effect++; } break; case ABILITYEFFECT_INTIMIDATE1: // 9 - for (i = 0; i < gBattlersCount; ++i) + for (i = 0; i < gBattlersCount; i++) { if (gBattleMons[i].ability == ABILITY_INTIMIDATE && gStatuses3[i] & STATUS3_INTIMIDATE_POKES) { gLastUsedAbility = ABILITY_INTIMIDATE; - gStatuses3[i] &= ~(STATUS3_INTIMIDATE_POKES); + gStatuses3[i] &= ~STATUS3_INTIMIDATE_POKES; BattleScriptPushCursorAndCallback(BattleScript_IntimidateActivatesEnd3); gBattleStruct->intimidateBattler = i; - ++effect; + effect++; break; } } break; case ABILITYEFFECT_TRACE: // 11 - for (i = 0; i < gBattlersCount; ++i) + for (i = 0; i < gBattlersCount; i++) { if (gBattleMons[i].ability == ABILITY_TRACE && (gStatuses3[i] & STATUS3_TRACE)) { u8 target2; - side = (GetBattlerPosition(i) ^ BIT_SIDE) & BIT_SIDE; // side of the opposing pokemon target1 = GetBattlerAtPosition(side); target2 = GetBattlerAtPosition(side + BIT_FLANK); if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) { - if (gBattleMons[target1].ability != 0 && gBattleMons[target1].hp != 0 - && gBattleMons[target2].ability != 0 && gBattleMons[target2].hp != 0) + if (gBattleMons[target1].ability != ABILITY_NONE && gBattleMons[target1].hp != 0 + && gBattleMons[target2].ability != ABILITY_NONE && gBattleMons[target2].hp != 0) { gActiveBattler = GetBattlerAtPosition(((Random() & 1) * 2) | side); gBattleMons[i].ability = gBattleMons[gActiveBattler].ability; gLastUsedAbility = gBattleMons[gActiveBattler].ability; - ++effect; + effect++; } - else if (gBattleMons[target1].ability != 0 && gBattleMons[target1].hp != 0) + else if (gBattleMons[target1].ability != ABILITY_NONE && gBattleMons[target1].hp != 0) { gActiveBattler = target1; gBattleMons[i].ability = gBattleMons[gActiveBattler].ability; gLastUsedAbility = gBattleMons[gActiveBattler].ability; - ++effect; + effect++; } - else if (gBattleMons[target2].ability != 0 && gBattleMons[target2].hp != 0) + else if (gBattleMons[target2].ability != ABILITY_NONE && gBattleMons[target2].hp != 0) { gActiveBattler = target2; gBattleMons[i].ability = gBattleMons[gActiveBattler].ability; gLastUsedAbility = gBattleMons[gActiveBattler].ability; - ++effect; + effect++; } } else @@ -2179,14 +2272,15 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA { gBattleMons[i].ability = gBattleMons[target1].ability; gLastUsedAbility = gBattleMons[target1].ability; - ++effect; + effect++; } } - if (effect) + if (effect != 0) { BattleScriptPushCursorAndCallback(BattleScript_TraceActivates); - gStatuses3[i] &= ~(STATUS3_TRACE); + gStatuses3[i] &= ~STATUS3_TRACE; gBattleScripting.battler = i; + PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, gActiveBattler, gBattlerPartyIndexes[gActiveBattler]) PREPARE_ABILITY_BUFFER(gBattleTextBuff2, gLastUsedAbility) break; @@ -2195,23 +2289,23 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA } break; case ABILITYEFFECT_INTIMIDATE2: // 10 - for (i = 0; i < gBattlersCount; ++i) + for (i = 0; i < gBattlersCount; i++) { if (gBattleMons[i].ability == ABILITY_INTIMIDATE && (gStatuses3[i] & STATUS3_INTIMIDATE_POKES)) { gLastUsedAbility = ABILITY_INTIMIDATE; - gStatuses3[i] &= ~(STATUS3_INTIMIDATE_POKES); + gStatuses3[i] &= ~STATUS3_INTIMIDATE_POKES; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_IntimidateActivates; gBattleStruct->intimidateBattler = i; - ++effect; + effect++; break; } } break; case ABILITYEFFECT_CHECK_OTHER_SIDE: // 12 side = GetBattlerSide(battler); - for (i = 0; i < gBattlersCount; ++i) + for (i = 0; i < gBattlersCount; i++) { if (GetBattlerSide(i) != side && gBattleMons[i].ability == ability) { @@ -2222,7 +2316,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA break; case ABILITYEFFECT_CHECK_BATTLER_SIDE: // 13 side = GetBattlerSide(battler); - for (i = 0; i < gBattlersCount; ++i) + for (i = 0; i < gBattlersCount; i++) { if (GetBattlerSide(i) == side && gBattleMons[i].ability == ability) { @@ -2235,17 +2329,21 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA switch (gLastUsedAbility) { case ABILITYEFFECT_MUD_SPORT: - for (i = 0; i < gBattlersCount; ++i) + for (i = 0; i < gBattlersCount; i++) + { if (gStatuses3[i] & STATUS3_MUDSPORT) effect = i + 1; + } break; case ABILITYEFFECT_WATER_SPORT: - for (i = 0; i < gBattlersCount; ++i) + for (i = 0; i < gBattlersCount; i++) + { if (gStatuses3[i] & STATUS3_WATERSPORT) effect = i + 1; + } break; default: - for (i = 0; i < gBattlersCount; ++i) + for (i = 0; i < gBattlersCount; i++) { if (gBattleMons[i].ability == ability) { @@ -2257,7 +2355,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA } break; case ABILITYEFFECT_CHECK_ON_FIELD: // 19 - for (i = 0; i < gBattlersCount; ++i) + for (i = 0; i < gBattlersCount; i++) { if (gBattleMons[i].ability == ability && gBattleMons[i].hp != 0) { @@ -2268,7 +2366,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA break; case ABILITYEFFECT_CHECK_FIELD_EXCEPT_BATTLER: // 15 side = GetBattlerSide(battler); - for (i = 0; i < gBattlersCount; ++i) + for (i = 0; i < gBattlersCount; i++) { if (GetBattlerSide(i) != side && gBattleMons[i].ability == ability) { @@ -2279,7 +2377,7 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA } if (!effect) { - for (i = 0; i < gBattlersCount; ++i) + for (i = 0; i < gBattlersCount; i++) { if (gBattleMons[i].ability == ability && GetBattlerSide(i) == side && i != battler) { @@ -2291,40 +2389,42 @@ u8 AbilityBattleEffects(u8 caseID, u8 battler, u8 ability, u8 special, u16 moveA break; case ABILITYEFFECT_COUNT_OTHER_SIDE: // 16 side = GetBattlerSide(battler); - for (i = 0; i < gBattlersCount; ++i) + for (i = 0; i < gBattlersCount; i++) { if (GetBattlerSide(i) != side && gBattleMons[i].ability == ability) { gLastUsedAbility = ability; - ++effect; + effect++; } } break; case ABILITYEFFECT_COUNT_BATTLER_SIDE: // 17 side = GetBattlerSide(battler); - for (i = 0; i < gBattlersCount; ++i) + for (i = 0; i < gBattlersCount; i++) { if (GetBattlerSide(i) == side && gBattleMons[i].ability == ability) { gLastUsedAbility = ability; - ++effect; + effect++; } } break; case ABILITYEFFECT_COUNT_ON_FIELD: // 18 - for (i = 0; i < gBattlersCount; ++i) + for (i = 0; i < gBattlersCount; i++) { if (gBattleMons[i].ability == ability && i != battler) { gLastUsedAbility = ability; - ++effect; + effect++; } } break; } + if (effect && caseID < ABILITYEFFECT_CHECK_OTHER_SIDE && gLastUsedAbility != 0xFF) RecordAbilityBattle(battler, gLastUsedAbility); } + return effect; } @@ -2354,6 +2454,36 @@ enum ITEM_STATS_CHANGE, }; +#define TRY_EAT_CONFUSE_BERRY(flavor) \ + if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / 2 && !moveTurn) \ + { \ + PREPARE_FLAVOR_BUFFER(gBattleTextBuff1, flavor); \ + gBattleMoveDamage = gBattleMons[battlerId].maxHP / battlerHoldEffectParam; \ + if (gBattleMoveDamage == 0) \ + gBattleMoveDamage = 1; \ + if (gBattleMons[battlerId].hp + gBattleMoveDamage > gBattleMons[battlerId].maxHP) \ + gBattleMoveDamage = gBattleMons[battlerId].maxHP - gBattleMons[battlerId].hp; \ + gBattleMoveDamage *= -1; \ + if (GetFlavorRelationByPersonality(gBattleMons[battlerId].personality, flavor) < 0) \ + BattleScriptExecute(BattleScript_BerryConfuseHealEnd2); \ + else \ + BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem); \ + effect = ITEM_HP_CHANGE; \ + } + +#define TRY_EAT_STAT_UP_BERRY(stat) \ + if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / battlerHoldEffectParam \ + && !moveTurn && gBattleMons[battlerId].statStages[stat] < MAX_STAT_STAGE) \ + { \ + PREPARE_STAT_BUFFER(gBattleTextBuff1, stat); \ + gEffectBattler = battlerId; \ + SET_STATCHANGER(stat, 1, FALSE); \ + gBattleScripting.animArg1 = 14 + (stat); \ + gBattleScripting.animArg2 = 0; \ + BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); \ + effect = ITEM_STATS_CHANGE; \ + } + u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) { int i = 0; @@ -2399,6 +2529,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) defHoldEffect = ItemId_GetHoldEffect(defItem); defHoldEffectParam = ItemId_GetHoldEffectParam(defItem); } + switch (caseID) { case ITEMEFFECT_ON_SWITCH_IN: @@ -2408,15 +2539,15 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) gBattleStruct->moneyMultiplier = 2; break; case HOLD_EFFECT_RESTORE_STATS: - for (i = 0; i < NUM_BATTLE_STATS; ++i) + for (i = 0; i < NUM_BATTLE_STATS; i++) { - if (gBattleMons[battlerId].statStages[i] < 6) + if (gBattleMons[battlerId].statStages[i] < DEFAULT_STAT_STAGE) { - gBattleMons[battlerId].statStages[i] = 6; + gBattleMons[battlerId].statStages[i] = DEFAULT_STAT_STAGE; effect = ITEM_STATS_CHANGE; } } - if (effect) + if (effect != 0) { gBattleScripting.battler = battlerId; gPotentialItemEffectBattler = battlerId; @@ -2426,7 +2557,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) break; } break; - case 1: + case ITEMEFFECT_NORMAL: if (gBattleMons[battlerId].hp) { switch (battlerHoldEffect) @@ -2439,7 +2570,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) gBattleMoveDamage = gBattleMons[battlerId].maxHP - gBattleMons[battlerId].hp; gBattleMoveDamage *= -1; BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem); - effect = 4; + effect = ITEM_HP_CHANGE; } break; case HOLD_EFFECT_RESTORE_PP: @@ -2453,7 +2584,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) mon = &gPlayerParty[gBattlerPartyIndexes[battlerId]]; else mon = &gEnemyParty[gBattlerPartyIndexes[battlerId]]; - for (i = 0; i < MAX_MON_MOVES; ++i) + for (i = 0; i < MAX_MON_MOVES; i++) { move = GetMonData(mon, MON_DATA_MOVE1 + i); changedPP = GetMonData(mon, MON_DATA_PP1 + i); @@ -2468,24 +2599,26 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) changedPP = maxPP; else changedPP = changedPP + battlerHoldEffectParam; + PREPARE_MOVE_BUFFER(gBattleTextBuff1, move); + BattleScriptExecute(BattleScript_BerryPPHealEnd2); - BtlController_EmitSetMonData(0, i + REQUEST_PPMOVE1_BATTLE, 0, 1, &changedPP); + BtlController_EmitSetMonData(BUFFER_A, i + REQUEST_PPMOVE1_BATTLE, 0, 1, &changedPP); MarkBattlerForControllerExec(gActiveBattler); effect = ITEM_PP_CHANGE; } } break; case HOLD_EFFECT_RESTORE_STATS: - for (i = 0; i < NUM_BATTLE_STATS; ++i) + for (i = 0; i < NUM_BATTLE_STATS; i++) { - if (gBattleMons[battlerId].statStages[i] < 6) + if (gBattleMons[battlerId].statStages[i] < DEFAULT_STAT_STAGE) { - gBattleMons[battlerId].statStages[i] = 6; + gBattleMons[battlerId].statStages[i] = DEFAULT_STAT_STAGE; effect = ITEM_STATS_CHANGE; } } - if (effect) + if (effect != 0) { gBattleScripting.battler = battlerId; gPotentialItemEffectBattler = battlerId; @@ -2508,153 +2641,49 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) } break; case HOLD_EFFECT_CONFUSE_SPICY: - if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / 2 && !moveTurn) - { - PREPARE_FLAVOR_BUFFER(gBattleTextBuff1, FLAVOR_SPICY); - gBattleMoveDamage = gBattleMons[battlerId].maxHP / battlerHoldEffectParam; - if (gBattleMoveDamage == 0) - gBattleMoveDamage = 1; - if (gBattleMons[battlerId].hp + gBattleMoveDamage > gBattleMons[battlerId].maxHP) - gBattleMoveDamage = gBattleMons[battlerId].maxHP - gBattleMons[battlerId].hp; - gBattleMoveDamage *= -1; - if (GetFlavorRelationByPersonality(gBattleMons[battlerId].personality, FLAVOR_SPICY) < 0) - BattleScriptExecute(BattleScript_BerryConfuseHealEnd2); - else - BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem); - effect = ITEM_HP_CHANGE; - } + TRY_EAT_CONFUSE_BERRY(FLAVOR_SPICY); break; case HOLD_EFFECT_CONFUSE_DRY: - if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / 2 && !moveTurn) - { - PREPARE_FLAVOR_BUFFER(gBattleTextBuff1, FLAVOR_DRY); - gBattleMoveDamage = gBattleMons[battlerId].maxHP / battlerHoldEffectParam; - if (gBattleMoveDamage == 0) - gBattleMoveDamage = 1; - if (gBattleMons[battlerId].hp + gBattleMoveDamage > gBattleMons[battlerId].maxHP) - gBattleMoveDamage = gBattleMons[battlerId].maxHP - gBattleMons[battlerId].hp; - gBattleMoveDamage *= -1; - if (GetFlavorRelationByPersonality(gBattleMons[battlerId].personality, FLAVOR_DRY) < 0) - BattleScriptExecute(BattleScript_BerryConfuseHealEnd2); - else - BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem); - effect = ITEM_HP_CHANGE; - } + TRY_EAT_CONFUSE_BERRY(FLAVOR_DRY); break; case HOLD_EFFECT_CONFUSE_SWEET: - if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / 2 && !moveTurn) - { - PREPARE_FLAVOR_BUFFER(gBattleTextBuff1, FLAVOR_SWEET); - gBattleMoveDamage = gBattleMons[battlerId].maxHP / battlerHoldEffectParam; - if (gBattleMoveDamage == 0) - gBattleMoveDamage = 1; - if (gBattleMons[battlerId].hp + gBattleMoveDamage > gBattleMons[battlerId].maxHP) - gBattleMoveDamage = gBattleMons[battlerId].maxHP - gBattleMons[battlerId].hp; - gBattleMoveDamage *= -1; - if (GetFlavorRelationByPersonality(gBattleMons[battlerId].personality, FLAVOR_SWEET) < 0) - BattleScriptExecute(BattleScript_BerryConfuseHealEnd2); - else - BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem); - effect = ITEM_HP_CHANGE; - } + TRY_EAT_CONFUSE_BERRY(FLAVOR_SWEET); break; case HOLD_EFFECT_CONFUSE_BITTER: - if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / 2 && !moveTurn) - { - PREPARE_FLAVOR_BUFFER(gBattleTextBuff1, FLAVOR_BITTER); - gBattleMoveDamage = gBattleMons[battlerId].maxHP / battlerHoldEffectParam; - if (gBattleMoveDamage == 0) - gBattleMoveDamage = 1; - if (gBattleMons[battlerId].hp + gBattleMoveDamage > gBattleMons[battlerId].maxHP) - gBattleMoveDamage = gBattleMons[battlerId].maxHP - gBattleMons[battlerId].hp; - gBattleMoveDamage *= -1; - if (GetFlavorRelationByPersonality(gBattleMons[battlerId].personality, FLAVOR_BITTER) < 0) - BattleScriptExecute(BattleScript_BerryConfuseHealEnd2); - else - BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem); - effect = ITEM_HP_CHANGE; - } + TRY_EAT_CONFUSE_BERRY(FLAVOR_BITTER); break; case HOLD_EFFECT_CONFUSE_SOUR: - if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / 2 && !moveTurn) - { - PREPARE_FLAVOR_BUFFER(gBattleTextBuff1, FLAVOR_SOUR); - gBattleMoveDamage = gBattleMons[battlerId].maxHP / battlerHoldEffectParam; - if (gBattleMoveDamage == 0) - gBattleMoveDamage = 1; - if (gBattleMons[battlerId].hp + gBattleMoveDamage > gBattleMons[battlerId].maxHP) - gBattleMoveDamage = gBattleMons[battlerId].maxHP - gBattleMons[battlerId].hp; - gBattleMoveDamage *= -1; - if (GetFlavorRelationByPersonality(gBattleMons[battlerId].personality, FLAVOR_SOUR) < 0) - BattleScriptExecute(BattleScript_BerryConfuseHealEnd2); - else - BattleScriptExecute(BattleScript_ItemHealHP_RemoveItem); - effect = ITEM_HP_CHANGE; - } + TRY_EAT_CONFUSE_BERRY(FLAVOR_SOUR); break; case HOLD_EFFECT_ATTACK_UP: - if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / battlerHoldEffectParam && !moveTurn && gBattleMons[battlerId].statStages[STAT_ATK] < 0xC) + if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / battlerHoldEffectParam + && !moveTurn && gBattleMons[battlerId].statStages[STAT_ATK] < MAX_STAT_STAGE) { PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_ATK); - PREPARE_STRING_BUFFER(gBattleTextBuff2, STRINGID_STATROSE); + PREPARE_STRING_BUFFER(gBattleTextBuff2, STRINGID_STATROSE); // Only the Attack stat-up berry has this gEffectBattler = battlerId; SET_STATCHANGER(STAT_ATK, 1, FALSE); - gBattleScripting.animArg1 = 0xE + STAT_ATK; + gBattleScripting.animArg1 = 14 + STAT_ATK; gBattleScripting.animArg2 = 0; BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); effect = ITEM_STATS_CHANGE; } break; case HOLD_EFFECT_DEFENSE_UP: - if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / battlerHoldEffectParam && !moveTurn && gBattleMons[battlerId].statStages[STAT_DEF] < 0xC) - { - PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_DEF); - gEffectBattler = battlerId; - SET_STATCHANGER(STAT_DEF, 1, FALSE); - gBattleScripting.animArg1 = 0xE + STAT_DEF; - gBattleScripting.animArg2 = 0; - BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); - effect = ITEM_STATS_CHANGE; - } + TRY_EAT_STAT_UP_BERRY(STAT_DEF); break; case HOLD_EFFECT_SPEED_UP: - if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / battlerHoldEffectParam && !moveTurn && gBattleMons[battlerId].statStages[STAT_SPEED] < 0xC) - { - PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_SPEED); - gEffectBattler = battlerId; - SET_STATCHANGER(STAT_SPEED, 1, FALSE); - gBattleScripting.animArg1 = 0xE + STAT_SPEED; - gBattleScripting.animArg2 = 0; - BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); - effect = ITEM_STATS_CHANGE; - } + TRY_EAT_STAT_UP_BERRY(STAT_SPEED); break; case HOLD_EFFECT_SP_ATTACK_UP: - if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / battlerHoldEffectParam && !moveTurn && gBattleMons[battlerId].statStages[STAT_SPATK] < 0xC) - { - PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_SPATK); - gEffectBattler = battlerId; - SET_STATCHANGER(STAT_SPATK, 1, FALSE); - gBattleScripting.animArg1 = 0xE + STAT_SPATK; - gBattleScripting.animArg2 = 0; - BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); - effect = ITEM_STATS_CHANGE; - } + TRY_EAT_STAT_UP_BERRY(STAT_SPATK); break; case HOLD_EFFECT_SP_DEFENSE_UP: - if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / battlerHoldEffectParam && !moveTurn && gBattleMons[battlerId].statStages[STAT_SPDEF] < 0xC) - { - PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_SPDEF); - gEffectBattler = battlerId; - SET_STATCHANGER(STAT_SPDEF, 1, FALSE); - gBattleScripting.animArg1 = 0xE + STAT_SPDEF; - gBattleScripting.animArg2 = 0; - BattleScriptExecute(BattleScript_BerryStatRaiseEnd2); - effect = ITEM_STATS_CHANGE; - } + TRY_EAT_STAT_UP_BERRY(STAT_SPDEF); break; case HOLD_EFFECT_CRITICAL_UP: - if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / battlerHoldEffectParam && !moveTurn && !(gBattleMons[battlerId].status2 & STATUS2_FOCUS_ENERGY)) + if (gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / battlerHoldEffectParam && !moveTurn + && !(gBattleMons[battlerId].status2 & STATUS2_FOCUS_ENERGY)) { gBattleMons[battlerId].status2 |= STATUS2_FOCUS_ENERGY; BattleScriptExecute(BattleScript_BerryFocusEnergyEnd2); @@ -2664,13 +2693,20 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) case HOLD_EFFECT_RANDOM_STAT_UP: if (!moveTurn && gBattleMons[battlerId].hp <= gBattleMons[battlerId].maxHP / battlerHoldEffectParam) { - for (i = 0; i < 5 && gBattleMons[battlerId].statStages[STAT_ATK + i] >= 0xC; ++i); - if (i != 5) + for (i = 0; i < NUM_STATS - 1; i++) + { + if (gBattleMons[battlerId].statStages[STAT_ATK + i] < MAX_STAT_STAGE) + break; + } + if (i != NUM_STATS - 1) { do - i = Random() % 5; - while (gBattleMons[battlerId].statStages[STAT_ATK + i] == 0xC); + { + i = Random() % (NUM_STATS - 1); + } while (gBattleMons[battlerId].statStages[STAT_ATK + i] == MAX_STAT_STAGE); + PREPARE_STAT_BUFFER(gBattleTextBuff1, i + 1); + gBattleTextBuff2[0] = B_BUFF_PLACEHOLDER_BEGIN; gBattleTextBuff2[1] = B_BUFF_STRING; gBattleTextBuff2[2] = STRINGID_STATSHARPLY; @@ -2679,6 +2715,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) gBattleTextBuff2[5] = STRINGID_STATROSE; gBattleTextBuff2[6] = STRINGID_STATROSE >> 8; gBattleTextBuff2[7] = EOS; + gEffectBattler = battlerId; SET_STATCHANGER(i + 1, 2, FALSE); gBattleScripting.animArg1 = 0x21 + i + 6; @@ -2691,7 +2728,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) case HOLD_EFFECT_CURE_PAR: if (gBattleMons[battlerId].status1 & STATUS1_PARALYSIS) { - gBattleMons[battlerId].status1 &= ~(STATUS1_PARALYSIS); + gBattleMons[battlerId].status1 &= ~STATUS1_PARALYSIS; BattleScriptExecute(BattleScript_BerryCurePrlzEnd2); effect = ITEM_STATUS_CHANGE; } @@ -2707,7 +2744,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) case HOLD_EFFECT_CURE_BRN: if (gBattleMons[battlerId].status1 & STATUS1_BURN) { - gBattleMons[battlerId].status1 &= ~(STATUS1_BURN); + gBattleMons[battlerId].status1 &= ~STATUS1_BURN; BattleScriptExecute(BattleScript_BerryCureBrnEnd2); effect = ITEM_STATUS_CHANGE; } @@ -2715,7 +2752,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) case HOLD_EFFECT_CURE_FRZ: if (gBattleMons[battlerId].status1 & STATUS1_FREEZE) { - gBattleMons[battlerId].status1 &= ~(STATUS1_FREEZE); + gBattleMons[battlerId].status1 &= ~STATUS1_FREEZE; BattleScriptExecute(BattleScript_BerryCureFrzEnd2); effect = ITEM_STATUS_CHANGE; } @@ -2723,8 +2760,8 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) case HOLD_EFFECT_CURE_SLP: if (gBattleMons[battlerId].status1 & STATUS1_SLEEP) { - gBattleMons[battlerId].status1 &= ~(STATUS1_SLEEP); - gBattleMons[battlerId].status2 &= ~(STATUS2_NIGHTMARE); + gBattleMons[battlerId].status1 &= ~STATUS1_SLEEP; + gBattleMons[battlerId].status2 &= ~STATUS2_NIGHTMARE; BattleScriptExecute(BattleScript_BerryCureSlpEnd2); effect = ITEM_STATUS_CHANGE; } @@ -2732,7 +2769,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) case HOLD_EFFECT_CURE_CONFUSION: if (gBattleMons[battlerId].status2 & STATUS2_CONFUSION) { - gBattleMons[battlerId].status2 &= ~(STATUS2_CONFUSION); + gBattleMons[battlerId].status2 &= ~STATUS2_CONFUSION; BattleScriptExecute(BattleScript_BerryCureConfusionEnd2); effect = ITEM_EFFECT_OTHER; } @@ -2744,40 +2781,40 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) if (gBattleMons[battlerId].status1 & STATUS1_PSN_ANY) { StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn); - ++i; + i++; } if (gBattleMons[battlerId].status1 & STATUS1_SLEEP) { - gBattleMons[battlerId].status2 &= ~(STATUS2_NIGHTMARE); + gBattleMons[battlerId].status2 &= ~STATUS2_NIGHTMARE; StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn); - ++i; + i++; } if (gBattleMons[battlerId].status1 & STATUS1_PARALYSIS) { StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn); - ++i; + i++; } if (gBattleMons[battlerId].status1 & STATUS1_BURN) { StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn); - ++i; + i++; } if (gBattleMons[battlerId].status1 & STATUS1_FREEZE) { StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn); - ++i; + i++; } if (gBattleMons[battlerId].status2 & STATUS2_CONFUSION) { StringCopy(gBattleTextBuff1, gStatusConditionString_ConfusionJpn); - ++i; + i++; } - if (!(i > 1)) - gBattleCommunication[MULTISTRING_CHOOSER] = 0; + if (i <= 1) + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_CURED_PROBLEM; else - gBattleCommunication[MULTISTRING_CHOOSER] = 1; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_NORMALIZED_STATUS; gBattleMons[battlerId].status1 = 0; - gBattleMons[battlerId].status2 &= ~(STATUS2_CONFUSION); + gBattleMons[battlerId].status2 &= ~STATUS2_CONFUSION; BattleScriptExecute(BattleScript_BerryCureChosenStatusEnd2); effect = ITEM_STATUS_CHANGE; } @@ -2785,15 +2822,15 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) case HOLD_EFFECT_CURE_ATTRACT: if (gBattleMons[battlerId].status2 & STATUS2_INFATUATION) { - gBattleMons[battlerId].status2 &= ~(STATUS2_INFATUATION); + gBattleMons[battlerId].status2 &= ~STATUS2_INFATUATION; StringCopy(gBattleTextBuff1, gStatusConditionString_LoveJpn); BattleScriptExecute(BattleScript_BerryCureChosenStatusEnd2); - gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_CURED_PROBLEM; effect = ITEM_EFFECT_OTHER; } break; } - if (effect) + if (effect != 0) { gBattleScripting.battler = battlerId; gPotentialItemEffectBattler = battlerId; @@ -2801,21 +2838,21 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) switch (effect) { case ITEM_STATUS_CHANGE: - BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[battlerId].status1); + BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[battlerId].status1); MarkBattlerForControllerExec(gActiveBattler); break; case ITEM_PP_CHANGE: - if (!(gBattleMons[battlerId].status2 & STATUS2_TRANSFORMED) && !(gDisableStructs[battlerId].mimickedMoves & gBitTable[i])) + if (MOVE_IS_PERMANENT(battlerId, i)) gBattleMons[battlerId].pp[i] = changedPP; break; } } } break; - case 2: + case ITEMEFFECT_DUMMY: break; case ITEMEFFECT_MOVE_END: - for (battlerId = 0; battlerId < gBattlersCount; ++battlerId) + for (battlerId = 0; battlerId < gBattlersCount; battlerId++) { gLastUsedItem = gBattleMons[battlerId].item; if (gBattleMons[battlerId].item == ITEM_ENIGMA_BERRY) @@ -2833,7 +2870,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) case HOLD_EFFECT_CURE_PAR: if (gBattleMons[battlerId].status1 & STATUS1_PARALYSIS) { - gBattleMons[battlerId].status1 &= ~(STATUS1_PARALYSIS); + gBattleMons[battlerId].status1 &= ~STATUS1_PARALYSIS; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_BerryCureParRet; effect = ITEM_STATUS_CHANGE; @@ -2851,7 +2888,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) case HOLD_EFFECT_CURE_BRN: if (gBattleMons[battlerId].status1 & STATUS1_BURN) { - gBattleMons[battlerId].status1 &= ~(STATUS1_BURN); + gBattleMons[battlerId].status1 &= ~STATUS1_BURN; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_BerryCureBrnRet; effect = ITEM_STATUS_CHANGE; @@ -2860,7 +2897,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) case HOLD_EFFECT_CURE_FRZ: if (gBattleMons[battlerId].status1 & STATUS1_FREEZE) { - gBattleMons[battlerId].status1 &= ~(STATUS1_FREEZE); + gBattleMons[battlerId].status1 &= ~STATUS1_FREEZE; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_BerryCureFrzRet; effect = ITEM_STATUS_CHANGE; @@ -2869,8 +2906,8 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) case HOLD_EFFECT_CURE_SLP: if (gBattleMons[battlerId].status1 & STATUS1_SLEEP) { - gBattleMons[battlerId].status1 &= ~(STATUS1_SLEEP); - gBattleMons[battlerId].status2 &= ~(STATUS2_NIGHTMARE); + gBattleMons[battlerId].status1 &= ~STATUS1_SLEEP; + gBattleMons[battlerId].status2 &= ~STATUS2_NIGHTMARE; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_BerryCureSlpRet; effect = ITEM_STATUS_CHANGE; @@ -2879,7 +2916,7 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) case HOLD_EFFECT_CURE_CONFUSION: if (gBattleMons[battlerId].status2 & STATUS2_CONFUSION) { - gBattleMons[battlerId].status2 &= ~(STATUS2_CONFUSION); + gBattleMons[battlerId].status2 &= ~STATUS2_CONFUSION; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_BerryCureConfusionRet; effect = ITEM_EFFECT_OTHER; @@ -2888,10 +2925,10 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) case HOLD_EFFECT_CURE_ATTRACT: if (gBattleMons[battlerId].status2 & STATUS2_INFATUATION) { - gBattleMons[battlerId].status2 &= ~(STATUS2_INFATUATION); + gBattleMons[battlerId].status2 &= ~STATUS2_INFATUATION; StringCopy(gBattleTextBuff1, gStatusConditionString_LoveJpn); BattleScriptPushCursor(); - gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_CURED_PROBLEM; gBattlescriptCurrInstr = BattleScript_BerryCureChosenStatusRet; effect = ITEM_EFFECT_OTHER; } @@ -2900,48 +2937,44 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) if (gBattleMons[battlerId].status1 & STATUS1_ANY || gBattleMons[battlerId].status2 & STATUS2_CONFUSION) { if (gBattleMons[battlerId].status1 & STATUS1_PSN_ANY) - { StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn); - } + if (gBattleMons[battlerId].status1 & STATUS1_SLEEP) { - gBattleMons[battlerId].status2 &= ~(STATUS2_NIGHTMARE); + gBattleMons[battlerId].status2 &= ~STATUS2_NIGHTMARE; StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn); } + if (gBattleMons[battlerId].status1 & STATUS1_PARALYSIS) - { StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn); - } + if (gBattleMons[battlerId].status1 & STATUS1_BURN) - { StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn); - } + if (gBattleMons[battlerId].status1 & STATUS1_FREEZE) - { StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn); - } + if (gBattleMons[battlerId].status2 & STATUS2_CONFUSION) - { StringCopy(gBattleTextBuff1, gStatusConditionString_ConfusionJpn); - } + gBattleMons[battlerId].status1 = 0; - gBattleMons[battlerId].status2 &= ~(STATUS2_CONFUSION); + gBattleMons[battlerId].status2 &= ~STATUS2_CONFUSION; BattleScriptPushCursor(); - gBattleCommunication[MULTISTRING_CHOOSER] = 0; + gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_CURED_PROBLEM; gBattlescriptCurrInstr = BattleScript_BerryCureChosenStatusRet; effect = ITEM_STATUS_CHANGE; } break; case HOLD_EFFECT_RESTORE_STATS: - for (i = 0; i < NUM_BATTLE_STATS; ++i) + for (i = 0; i < NUM_BATTLE_STATS; i++) { - if (gBattleMons[battlerId].statStages[i] < 6) + if (gBattleMons[battlerId].statStages[i] < DEFAULT_STAT_STAGE) { - gBattleMons[battlerId].statStages[i] = 6; + gBattleMons[battlerId].statStages[i] = DEFAULT_STAT_STAGE; effect = ITEM_STATS_CHANGE; } } - if (effect) + if (effect != 0) { gBattleScripting.battler = battlerId; gPotentialItemEffectBattler = battlerId; @@ -2951,12 +2984,12 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) } break; } - if (effect) + if (effect != 0) { gBattleScripting.battler = battlerId; gPotentialItemEffectBattler = battlerId; gActiveBattler = battlerId; - BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1); + BtlController_EmitSetMonData(BUFFER_A, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBattler].status1); MarkBattlerForControllerExec(gActiveBattler); break; } @@ -2969,10 +3002,10 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) { case HOLD_EFFECT_FLINCH: if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) - && TARGET_TURN_DAMAGED - && (Random() % 100) < battlerHoldEffectParam - && gBattleMoves[gCurrentMove].flags & FLAG_KINGS_ROCK_AFFECTED - && gBattleMons[gBattlerTarget].hp) + && TARGET_TURN_DAMAGED + && (Random() % 100) < battlerHoldEffectParam + && gBattleMoves[gCurrentMove].flags & FLAG_KINGS_ROCK_AFFECTED + && gBattleMons[gBattlerTarget].hp) { gBattleCommunication[MOVE_EFFECT_BYTE] = MOVE_EFFECT_FLINCH; BattleScriptPushCursor(); @@ -2982,11 +3015,11 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) break; case HOLD_EFFECT_SHELL_BELL: if (!(gMoveResultFlags & MOVE_RESULT_NO_EFFECT) - && gSpecialStatuses[gBattlerTarget].dmg != 0 - && gSpecialStatuses[gBattlerTarget].dmg != 0xFFFF - && gBattlerAttacker != gBattlerTarget - && gBattleMons[gBattlerAttacker].hp != gBattleMons[gBattlerAttacker].maxHP - && gBattleMons[gBattlerAttacker].hp != 0) + && gSpecialStatuses[gBattlerTarget].dmg != 0 + && gSpecialStatuses[gBattlerTarget].dmg != 0xFFFF + && gBattlerAttacker != gBattlerTarget + && gBattleMons[gBattlerAttacker].hp != gBattleMons[gBattlerAttacker].maxHP + && gBattleMons[gBattlerAttacker].hp != 0) { gLastUsedItem = atkItem; gPotentialItemEffectBattler = gBattlerAttacker; @@ -2997,21 +3030,22 @@ u8 ItemBattleEffects(u8 caseID, u8 battlerId, bool8 moveTurn) gSpecialStatuses[gBattlerTarget].dmg = 0; BattleScriptPushCursor(); gBattlescriptCurrInstr = BattleScript_ItemHealHP_Ret; - ++effect; + effect++; } break; } } break; } + return effect; } void ClearFuryCutterDestinyBondGrudge(u8 battlerId) { gDisableStructs[battlerId].furyCutterCounter = 0; - gBattleMons[battlerId].status2 &= ~(STATUS2_DESTINY_BOND); - gStatuses3[battlerId] &= ~(STATUS3_GRUDGE); + gBattleMons[battlerId].status2 &= ~STATUS2_DESTINY_BOND; + gStatuses3[battlerId] &= ~STATUS3_GRUDGE; } void HandleAction_RunBattleScript(void) // identical to RunBattleScriptCommands @@ -3026,10 +3060,11 @@ u8 GetMoveTarget(u16 move, u8 setTarget) u8 moveTarget; u8 side; - if (setTarget) + if (setTarget != NO_TARGET_OVERRIDE) moveTarget = setTarget - 1; else moveTarget = gBattleMoves[move].target; + switch (moveTarget) { case MOVE_TARGET_SELECTED: @@ -3044,8 +3079,8 @@ u8 GetMoveTarget(u16 move, u8 setTarget) targetBattler = Random() % gBattlersCount; } while (targetBattler == gBattlerAttacker || side == GetBattlerSide(targetBattler) || gAbsentBattlerFlags & gBitTable[targetBattler]); if (gBattleMoves[move].type == TYPE_ELECTRIC - && AbilityBattleEffects(ABILITYEFFECT_COUNT_OTHER_SIDE, gBattlerAttacker, ABILITY_LIGHTNING_ROD, 0, 0) - && gBattleMons[targetBattler].ability != ABILITY_LIGHTNING_ROD) + && AbilityBattleEffects(ABILITYEFFECT_COUNT_OTHER_SIDE, gBattlerAttacker, ABILITY_LIGHTNING_ROD, 0, 0) + && gBattleMons[targetBattler].ability != ABILITY_LIGHTNING_ROD) { targetBattler ^= BIT_FLANK; RecordAbilityBattle(targetBattler, gBattleMons[targetBattler].ability); @@ -3092,16 +3127,19 @@ u8 GetMoveTarget(u16 move, u8 setTarget) targetBattler = gBattlerAttacker; break; } + *(gBattleStruct->moveTarget + gBattlerAttacker) = targetBattler; + return targetBattler; } -static bool32 IsNotEventLegalMewOrDeoxys(u8 battlerId) +static bool32 IsMonEventLegal(u8 battlerId) { - if (GetBattlerSide(battlerId) == B_SIDE_OPPONENT - || (GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES, NULL) != SPECIES_DEOXYS - && GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES, NULL) != SPECIES_MEW)) + if (GetBattlerSide(battlerId) == B_SIDE_OPPONENT) return TRUE; + if (GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES, NULL) != SPECIES_DEOXYS + && GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES, NULL) != SPECIES_MEW) + return TRUE; return GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_EVENT_LEGAL, NULL); } @@ -3111,13 +3149,20 @@ u8 IsMonDisobedient(void) s32 calc; u8 obedienceLevel = 0; - if ((gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_POKEDUDE)) || GetBattlerSide(gBattlerAttacker) == B_SIDE_OPPONENT) + if ((gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_POKEDUDE))) return 0; - if (IsNotEventLegalMewOrDeoxys(gBattlerAttacker)) // only if species is Mew or Deoxys + if (GetBattlerSide(gBattlerAttacker) == B_SIDE_OPPONENT) + return 0; + + if (IsMonEventLegal(gBattlerAttacker)) // only false if illegal Mew or Deoxys { - if (!IsOtherTrainer(gBattleMons[gBattlerAttacker].otId, gBattleMons[gBattlerAttacker].otName) || FlagGet(FLAG_BADGE08_GET)) + if (!IsOtherTrainer(gBattleMons[gBattlerAttacker].otId, gBattleMons[gBattlerAttacker].otName)) return 0; + if (FlagGet(FLAG_BADGE08_GET)) + return 0; + obedienceLevel = 10; + if (FlagGet(FLAG_BADGE02_GET)) obedienceLevel = 30; if (FlagGet(FLAG_BADGE04_GET)) @@ -3125,39 +3170,46 @@ u8 IsMonDisobedient(void) if (FlagGet(FLAG_BADGE06_GET)) obedienceLevel = 70; } + if (gBattleMons[gBattlerAttacker].level <= obedienceLevel) return 0; rnd = (Random() & 255); calc = (gBattleMons[gBattlerAttacker].level + obedienceLevel) * rnd >> 8; if (calc < obedienceLevel) return 0; + // is not obedient if (gCurrentMove == MOVE_RAGE) - gBattleMons[gBattlerAttacker].status2 &= ~(STATUS2_RAGE); + gBattleMons[gBattlerAttacker].status2 &= ~STATUS2_RAGE; if (gBattleMons[gBattlerAttacker].status1 & STATUS1_SLEEP && (gCurrentMove == MOVE_SNORE || gCurrentMove == MOVE_SLEEP_TALK)) { gBattlescriptCurrInstr = BattleScript_IgnoresWhileAsleep; return 1; } + rnd = (Random() & 255); calc = (gBattleMons[gBattlerAttacker].level + obedienceLevel) * rnd >> 8; if (calc < obedienceLevel && gCurrentMove != MOVE_FOCUS_PUNCH) // Additional check for focus punch in FR { - calc = CheckMoveLimitations(gBattlerAttacker, gBitTable[gCurrMovePos], 0xFF); + calc = CheckMoveLimitations(gBattlerAttacker, gBitTable[gCurrMovePos], MOVE_LIMITATIONS_ALL); if (calc == 0xF) // all moves cannot be used { - gBattleCommunication[MULTISTRING_CHOOSER] = Random() & 3; + // Randomly select, then print a disobedient string + // B_MSG_LOAFING, B_MSG_WONT_OBEY, B_MSG_TURNED_AWAY, or B_MSG_PRETEND_NOT_NOTICE + gBattleCommunication[MULTISTRING_CHOOSER] = Random() & (NUM_LOAF_STRINGS - 1); gBattlescriptCurrInstr = BattleScript_MoveUsedLoafingAround; return 1; } else // use a random move { do - gCurrMovePos = gChosenMovePos = Random() & 3; - while (gBitTable[gCurrMovePos] & calc); + { + gCurrMovePos = gChosenMovePos = Random() & (MAX_MON_MOVES - 1); + } while (gBitTable[gCurrMovePos] & calc); + gCalledMove = gBattleMons[gBattlerAttacker].moves[gCurrMovePos]; gBattlescriptCurrInstr = BattleScript_IgnoresAndUsesRandomMove; - gBattlerTarget = GetMoveTarget(gCalledMove, 0); + gBattlerTarget = GetMoveTarget(gCalledMove, NO_TARGET_OVERRIDE); gHitMarker |= HITMARKER_DISOBEDIENT_MOVE; return 2; } @@ -3165,15 +3217,17 @@ u8 IsMonDisobedient(void) else { obedienceLevel = gBattleMons[gBattlerAttacker].level - obedienceLevel; + calc = (Random() & 255); if (calc < obedienceLevel && !(gBattleMons[gBattlerAttacker].status1 & STATUS1_ANY) && gBattleMons[gBattlerAttacker].ability != ABILITY_VITAL_SPIRIT && gBattleMons[gBattlerAttacker].ability != ABILITY_INSOMNIA) { // try putting asleep int i; - - for (i = 0; i < gBattlersCount; ++i) + for (i = 0; i < gBattlersCount; i++) + { if (gBattleMons[i].status2 & STATUS2_UPROAR) break; + } if (i == gBattlersCount) { gBattlescriptCurrInstr = BattleScript_IgnoresAndFallsAsleep; @@ -3191,7 +3245,9 @@ u8 IsMonDisobedient(void) } else { - gBattleCommunication[MULTISTRING_CHOOSER] = Random() & 3; + // Randomly select, then print a disobedient string + // B_MSG_LOAFING, B_MSG_WONT_OBEY, B_MSG_TURNED_AWAY, or B_MSG_PRETEND_NOT_NOTICE + gBattleCommunication[MULTISTRING_CHOOSER] = Random() & (NUM_LOAF_STRINGS - 1); gBattlescriptCurrInstr = BattleScript_MoveUsedLoafingAround; return 1; } diff --git a/src/battle_util2.c b/src/battle_util2.c index e3fa1a6a7..8a5fbccf6 100644 --- a/src/battle_util2.c +++ b/src/battle_util2.c @@ -2,8 +2,8 @@ #include "bg.h" #include "battle.h" #include "battle_anim.h" -#include "pokemon.h" #include "malloc.h" +#include "pokemon.h" #include "trainer_tower.h" void AllocateBattleResources(void) @@ -14,10 +14,12 @@ void AllocateBattleResources(void) { s32 i; - for (i = 0; i < 4; ++i) + for (i = 0; i < 4; i++) gPokedudeBattlerStates[i] = AllocZeroed(sizeof(struct PokedudeBattlerState)); } + gBattleStruct = AllocZeroed(sizeof(*gBattleStruct)); + gBattleResources = AllocZeroed(sizeof(*gBattleResources)); gBattleResources->secretBase = AllocZeroed(sizeof(*gBattleResources->secretBase)); gBattleResources->flags = AllocZeroed(sizeof(*gBattleResources->flags)); @@ -27,12 +29,15 @@ void AllocateBattleResources(void) gBattleResources->ai = AllocZeroed(sizeof(*gBattleResources->ai)); gBattleResources->battleHistory = AllocZeroed(sizeof(*gBattleResources->battleHistory)); gBattleResources->AI_ScriptsStack = AllocZeroed(sizeof(*gBattleResources->AI_ScriptsStack)); + gLinkBattleSendBuffer = AllocZeroed(BATTLE_BUFFER_LINK_SIZE); gLinkBattleRecvBuffer = AllocZeroed(BATTLE_BUFFER_LINK_SIZE); - gBattleAnimMons_BgTilesBuffer = AllocZeroed(0x2000); - gBattleAnimMons_BgTilemapBuffer = AllocZeroed(0x1000); - SetBgTilemapBuffer(1, gBattleAnimMons_BgTilemapBuffer); - SetBgTilemapBuffer(2, gBattleAnimMons_BgTilemapBuffer); + + gBattleAnimBgTileBuffer = AllocZeroed(0x2000); + gBattleAnimBgTilemapBuffer = AllocZeroed(0x1000); + + SetBgTilemapBuffer(1, gBattleAnimBgTilemapBuffer); + SetBgTilemapBuffer(2, gBattleAnimBgTilemapBuffer); } void FreeBattleResources(void) @@ -43,7 +48,7 @@ void FreeBattleResources(void) { s32 i; - for (i = 0; i < 4; ++i) + for (i = 0; i < 4; i++) { FREE_AND_SET_NULL(gPokedudeBattlerStates[i]); } @@ -51,6 +56,7 @@ void FreeBattleResources(void) if (gBattleResources != NULL) { FREE_AND_SET_NULL(gBattleStruct); + FREE_AND_SET_NULL(gBattleResources->secretBase); FREE_AND_SET_NULL(gBattleResources->flags); FREE_AND_SET_NULL(gBattleResources->battleScriptsStack); @@ -60,21 +66,26 @@ void FreeBattleResources(void) FREE_AND_SET_NULL(gBattleResources->battleHistory); FREE_AND_SET_NULL(gBattleResources->AI_ScriptsStack); FREE_AND_SET_NULL(gBattleResources); + FREE_AND_SET_NULL(gLinkBattleSendBuffer); FREE_AND_SET_NULL(gLinkBattleRecvBuffer); - FREE_AND_SET_NULL(gBattleAnimMons_BgTilesBuffer); - FREE_AND_SET_NULL(gBattleAnimMons_BgTilemapBuffer); + + FREE_AND_SET_NULL(gBattleAnimBgTileBuffer); + FREE_AND_SET_NULL(gBattleAnimBgTilemapBuffer); } } void AdjustFriendshipOnBattleFaint(u8 battlerId) { - u8 opposingBattlerId, opposingBattlerId2; + u8 opposingBattlerId; if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) { + u8 opposingBattlerId2; + opposingBattlerId = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); opposingBattlerId2 = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT); + if (gBattleMons[opposingBattlerId2].level > gBattleMons[opposingBattlerId].level) opposingBattlerId = opposingBattlerId2; } @@ -82,6 +93,7 @@ void AdjustFriendshipOnBattleFaint(u8 battlerId) { opposingBattlerId = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT); } + if (gBattleMons[opposingBattlerId].level > gBattleMons[battlerId].level) { if (gBattleMons[opposingBattlerId].level - gBattleMons[battlerId].level > 29) diff --git a/src/berry_crush.c b/src/berry_crush.c index 7843ce5cb..fd421c80b 100644 --- a/src/berry_crush.c +++ b/src/berry_crush.c @@ -1392,7 +1392,7 @@ static u32 Cmd_WaitForOthersToPickBerries(struct BerryCrushGame * game, u8 *args case 4: if (GetBlockReceivedStatus() != sReceivedPlayerBitmasks[game->playerCount - 2]) return 0; - for (i = 0; i < game->playerCount; ++i) + for (i = 0; i < game->playerCount; i++) { game->players[i].berryId = gBlockRecvBuffer[i][0]; if (game->players[i].berryId > LAST_BERRY_INDEX + 1) @@ -1562,7 +1562,7 @@ static void HandlePartnerInput(struct BerryCrushGame * game) s32 temp = 0; struct BerryCrushGame_LinkState *linkState; - for (i = 0; i < game->playerCount; ++i) + for (i = 0; i < game->playerCount; i++) { linkState = (struct BerryCrushGame_LinkState *)gRecvCmds[i]; @@ -1611,7 +1611,7 @@ static void HandlePartnerInput(struct BerryCrushGame * game) { // For each player that pressed A, flag their input as synchronous // This is used to change their impact sprite to a big impact - for (i = 0; i < game->playerCount; ++i) + for (i = 0; i < game->playerCount; i++) { if (game->players[i].inputState == INPUT_STATE_NONE) continue; @@ -1647,7 +1647,7 @@ static void BerryCrush_BuildLocalState(struct BerryCrushGame * game) u16 r1 = 0; u8 i = 0; - for (i = 0; i < game->playerCount; ++i) + for (i = 0; i < game->playerCount; i++) { if (game->players[i].inputState != 0) { @@ -1796,7 +1796,7 @@ static void RecvLinkData(struct BerryCrushGame * game) u8 i = 0; struct BerryCrushGame_LinkState * linkState = NULL; - for (i = 0; i < game->playerCount; ++i) + for (i = 0; i < game->playerCount; i++) game->players[i].inputState = INPUT_STATE_NONE; if ((gRecvCmds[0][0] & 0xFF00) != RFUCMD_SEND_PACKET) @@ -2006,7 +2006,7 @@ static u32 Cmd_TabulateResults(struct BerryCrushGame * game, UNUSED u8 *args) case 2: if (GetBlockReceivedStatus() != sReceivedPlayerBitmasks[game->playerCount - 2]) return 0; - for (i = 0; i < game->playerCount; ++i) + for (i = 0; i < game->playerCount; i++) game->players[i].timePressingA = gBlockRecvBuffer[i][0]; game->cmdTimer = 0; game->sendCmd[0] = 0; @@ -2044,7 +2044,7 @@ static u32 Cmd_TabulateResults(struct BerryCrushGame * game, UNUSED u8 *args) // Choose random second results page game->results.randomPageId = Random() % NUM_RANDOM_RESULTS_PAGES; - for (i = 0; i < game->playerCount; ++i) + for (i = 0; i < game->playerCount; i++) { game->results.playerIdsRanked[0][i] = i; game->results.playerIdsRanked[1][i] = i; @@ -2116,7 +2116,7 @@ static u32 Cmd_TabulateResults(struct BerryCrushGame * game, UNUSED u8 *args) } break; case 4: - for (i = 0; i < game->playerCount - 1; ++i) + for (i = 0; i < game->playerCount - 1; i++) { for (j = game->playerCount - 1; j > i; --j) { @@ -2312,7 +2312,7 @@ static u32 Cmd_CommunicatePlayAgainResponses(struct BerryCrushGame * game, UNUSE return 0; // Read partners responses - for (i = 0; i < game->playerCount; ++i) + for (i = 0; i < game->playerCount; i++) game->recvCmd[0] += gBlockRecvBuffer[i][0]; if (game->recvCmd[0] != PLAY_AGAIN_YES) @@ -2447,7 +2447,7 @@ static void ResetGame(struct BerryCrushGame * game) game->numBigSparkleChecks = -1; game->numBigSparkles = 0; game->sparkleCounter = 0; - for (i = 0; i < MAX_RFU_PLAYERS; ++i) + for (i = 0; i < MAX_RFU_PLAYERS; i++) { game->players[i].berryId = -1; game->players[i].inputTime = 0; @@ -3002,7 +3002,7 @@ static void printCrushingResults(struct BerryCrushGame * game) x = 190 - (u8)GetStringWidth(FONT_2, gText_TimesPerSec, 0); AddTextPrinterParameterized3(game->gfx.resultsWindowId, FONT_3, x, y, sBerryCrushTextColorTable[COLORID_GRAY], 0, gText_TimesPerSec); - for (i = 0; i < 8; ++i) + for (i = 0; i < 8; i++) if (((u8)game->pressingSpeed >> (7 - i)) & 1) score += *(i + sPressingSpeedConversionTable); // It's accessed in a different way here for unknown reason ConvertIntToDecimalStringN(gStringVar1, game->pressingSpeed >> 8, STR_CONV_MODE_RIGHT_ALIGN, 3); @@ -3130,7 +3130,7 @@ static void Task_ShowBerryCrushRankings(u8 taskId) gText_PressingSpeedRankings ); yPos = 42; - for (i = 0; i < 4; ++i) + for (i = 0; i < 4; i++) { ConvertIntToDecimalStringN(gStringVar1, i + 2, STR_CONV_MODE_LEFT_ALIGN, 1); StringExpandPlaceholders(gStringVar4, gText_Var1Players); @@ -3143,7 +3143,7 @@ static void Task_ShowBerryCrushRankings(u8 taskId) 0, gStringVar4 ); - for (j = 0; j < 8; ++j) + for (j = 0; j < 8; j++) { if (((tPressingSpeeds(i) & 0xFF) >> (7 - j)) & 1) score += sPressingSpeedConversionTable[j]; @@ -3219,7 +3219,7 @@ static void CreatePlayerNameWindows(struct BerryCrushGame * game) { u8 i; - for (i = 0; i < game->playerCount; ++i) + for (i = 0; i < game->playerCount; i++) { game->gfx.playerCoords[i] = &sPlayerCoords[gUnknown_846F280[game->playerCount - 2][i]]; game->gfx.nameWindowIds[i] = AddWindow(&sWindowTemplates_PlayerNames[game->gfx.playerCoords[i]->playerId]); @@ -3232,7 +3232,7 @@ static void DrawPlayerNameWindows(struct BerryCrushGame * game) { u8 i; - for (i = 0; i < game->playerCount; ++i) + for (i = 0; i < game->playerCount; i++) { PutWindowTilemap(game->gfx.nameWindowIds[i]); if (i == game->localId) @@ -3275,7 +3275,7 @@ static void CopyPlayerNameWindowGfxToBg(struct BerryCrushGame * game) u8 *crusherGfx; LZ77UnCompWram(gBerryCrush_Crusher_Tilemap, gDecompressionBuffer); - for (crusherGfx = gDecompressionBuffer; i < game->playerCount; ++i) + for (crusherGfx = gDecompressionBuffer; i < game->playerCount; i++) { CopyToBgTilemapBufferRect( 3, @@ -3298,7 +3298,7 @@ static void CreateGameSprites(struct BerryCrushGame * game) game->vibration = 0; gSpriteCoordOffsetX = 0; gSpriteCoordOffsetY = CRUSHER_START_Y; - for (i = 0; i < NELEMS(sSpriteSheets) - 1; ++i) + for (i = 0; i < NELEMS(sSpriteSheets) - 1; i++) LoadCompressedSpriteSheet(&sSpriteSheets[i]); LoadSpritePalettes(sSpritePals); @@ -3310,7 +3310,7 @@ static void CreateGameSprites(struct BerryCrushGame * game) game->gfx.coreSprite->animPaused = TRUE; // Create sprites for the impact effect - for (i = 0; i < game->playerCount; ++i) + for (i = 0; i < game->playerCount; i++) { spriteId = CreateSprite( &sSpriteTemplate_BerryCrushImpact, @@ -3326,7 +3326,7 @@ static void CreateGameSprites(struct BerryCrushGame * game) } // Create sprites for sparkle effect - for (i = 0; i < NELEMS(game->gfx.sparkleSprites); ++i) + for (i = 0; i < NELEMS(game->gfx.sparkleSprites); i++) { spriteId = CreateSprite( &sSpriteTemplate_BerryCrushPowderSparkles, @@ -3342,7 +3342,7 @@ static void CreateGameSprites(struct BerryCrushGame * game) } // Create sprites for timer - for (i = 0; i < NELEMS(game->gfx.timerSprites); ++i) + for (i = 0; i < NELEMS(game->gfx.timerSprites); i++) { spriteId = CreateSprite( &sSpriteTemplate_BerryCrushTimer, @@ -3374,14 +3374,14 @@ static void DestroyGameSprites(struct BerryCrushGame * game) FreeSpritePaletteByTag(TAG_TIMER_DIGITS); FreeSpritePaletteByTag(PALTAG_EFFECT); FreeSpritePaletteByTag(TAG_CRUSHER_BASE); - for (; i < NELEMS(game->gfx.timerSprites); ++i) + for (; i < NELEMS(game->gfx.timerSprites); i++) DestroySprite(game->gfx.timerSprites[i]); DigitObjUtil_DeletePrinter(2); DigitObjUtil_DeletePrinter(1); DigitObjUtil_DeletePrinter(0); - for (i = 0; i < NELEMS(game->gfx.sparkleSprites); ++i) + for (i = 0; i < NELEMS(game->gfx.sparkleSprites); i++) DestroySprite(game->gfx.sparkleSprites[i]); - for (i = 0; i < game->playerCount; ++i) + for (i = 0; i < game->playerCount; i++) DestroySprite(game->gfx.impactSprites[i]); if (game->gfx.coreSprite->inUse) DestroySprite(game->gfx.coreSprite); diff --git a/src/bike.c b/src/bike.c index 4a24fb2a3..56c228111 100644 --- a/src/bike.c +++ b/src/bike.c @@ -342,7 +342,7 @@ void BikeClearState(u32 directionHistory, u32 abStartSelectHistory) gPlayerAvatar.directionHistory = directionHistory; gPlayerAvatar.abStartSelectHistory = abStartSelectHistory; gPlayerAvatar.lastSpinTile = 0; - for (i = 0; i < NELEMS(gPlayerAvatar.dirTimerHistory); ++i) + for (i = 0; i < NELEMS(gPlayerAvatar.dirTimerHistory); i++) gPlayerAvatar.dirTimerHistory[i] = 0; } diff --git a/src/bug.c b/src/bug.c index 32d2f3b3f..0a1821c3a 100644 --- a/src/bug.c +++ b/src/bug.c @@ -428,7 +428,7 @@ static void AnimMissileArcStep(struct Sprite *sprite) s16 y2 = sprite->y2; s32 i; - for (i = 0; i < 8; ++i) + for (i = 0; i < 8; i++) tempData[i] = data[i]; x2 += x1; y2 += y1; @@ -439,7 +439,7 @@ static void AnimMissileArcStep(struct Sprite *sprite) rotation += 0xC000; TrySetSpriteRotScale(sprite, FALSE, 0x100, 0x100, rotation); - for (i = 0; i < 8; ++i) + for (i = 0; i < 8; i++) data[i] = tempData[i]; } } diff --git a/src/dark.c b/src/dark.c index 9b12555d9..1dfccd048 100644 --- a/src/dark.c +++ b/src/dark.c @@ -437,7 +437,7 @@ void AnimTask_MoveAttackerMementoShadow(u8 taskId) task->data[1] = 0; task->data[2] = 0; sub_80B856C(3); - for (i = 0; i < 112; ++i) + for (i = 0; i < 112; i++) { gScanlineEffectRegBuffers[0][i] = task->data[10]; gScanlineEffectRegBuffers[1][i] = task->data[10]; @@ -574,7 +574,7 @@ void AnimTask_MoveTargetMementoShadow(u8 taskId) scanlineParams.dmaDest = ®_BG1VOFS; else scanlineParams.dmaDest = ®_BG2VOFS; - for (i = 0; i < 112; ++i) + for (i = 0; i < 112; i++) { gScanlineEffectRegBuffers[0][i] = task->data[10] + (159 - i); gScanlineEffectRegBuffers[1][i] = task->data[10] + (159 - i); @@ -682,9 +682,9 @@ static void sub_80B843C(struct Task *task) { var0 = task->data[13] / var2; var1 = task->data[6] << 8; - for (i = 0; i < task->data[4]; ++i) + for (i = 0; i < task->data[4]; i++) gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = task->data[10] - (i - 159); - for (i = task->data[4]; i <= task->data[5]; ++i) + for (i = task->data[4]; i <= task->data[5]; i++) { if (i >= 0) { @@ -695,14 +695,14 @@ static void sub_80B843C(struct Task *task) var1 += var0; } var4 = task->data[10] - (i - 159); - for (; i < task->data[7]; ++i) + for (; i < task->data[7]; i++) if (i >= 0) gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = var4--; } else { var4 = task->data[10] + 159; - for (i = 0; i < 112; ++i) + for (i = 0; i < 112; i++) { gScanlineEffectRegBuffers[0][i] = var4; gScanlineEffectRegBuffers[1][i] = var4; @@ -715,7 +715,7 @@ static void sub_80B856C(u8 priority) { u16 i; - for (i = 0; i < MAX_BATTLERS_COUNT; ++i) + for (i = 0; i < MAX_BATTLERS_COUNT; i++) { u8 spriteId = GetAnimBattlerSpriteId(i); diff --git a/src/dragon.c b/src/dragon.c index cef5d219d..e9f0a3b8a 100644 --- a/src/dragon.c +++ b/src/dragon.c @@ -344,7 +344,7 @@ void AnimTask_DragonDanceWaver(u8 taskId) task->data[4] = r1 + 32; if (task->data[3] < 0) task->data[3] = 0; - for (i = task->data[3]; i <= task->data[4]; ++i) + for (i = task->data[3]; i <= task->data[4]; i++) { gScanlineEffectRegBuffers[0][i] = task->data[2]; gScanlineEffectRegBuffers[1][i] = task->data[2]; @@ -396,7 +396,7 @@ static void sub_80B776C(struct Task *task) { u16 i, r3 = task->data[5]; - for (i = task->data[3]; i <= task->data[4]; ++i) + for (i = task->data[3]; i <= task->data[4]; i++) { gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = ((gSineTable[r3] * task->data[6]) >> 7) + task->data[2]; r3 = (r3 + 8) & 0xFF; @@ -416,7 +416,7 @@ static void AnimOverheatFlame(struct Sprite *sprite) sprite->y += sprite->data[2] * gBattleAnimArgs[0]; sprite->data[3] = gBattleAnimArgs[3]; sprite->callback = sub_80B7894; - for (i = 0; i < 7; ++i) + for (i = 0; i < 7; i++) gUnknown_20399A4[i] = sprite->data[i]; } diff --git a/src/field_tasks.c b/src/field_tasks.c index 20dcb4696..b20c281e5 100644 --- a/src/field_tasks.c +++ b/src/field_tasks.c @@ -126,7 +126,7 @@ static void DummyPerStepCallback(u8 taskId) static void MarkIcefallCaveCoordVisited(s16 x, s16 y) { u8 i = 0; - for (; i < NELEMS(sIcefallCaveIceTileCoords); ++i) + for (; i < NELEMS(sIcefallCaveIceTileCoords); i++) { if (sIcefallCaveIceTileCoords[i][0] + 7 == x && sIcefallCaveIceTileCoords[i][1] + 7 == y) { @@ -139,7 +139,7 @@ static void MarkIcefallCaveCoordVisited(s16 x, s16 y) void SetIcefallCaveCrackedIceMetatiles(void) { u8 i = 0; - for (; i < NELEMS(sIcefallCaveIceTileCoords); ++i) + for (; i < NELEMS(sIcefallCaveIceTileCoords); i++) { if (FlagGet(i + 1) == TRUE) { diff --git a/src/fire.c b/src/fire.c index a8f0c8503..d10b6f22c 100644 --- a/src/fire.c +++ b/src/fire.c @@ -858,7 +858,7 @@ static void sub_80AD1F8(u8 spriteId, u8 taskId, u8 a3) x += 0x10; sign = -1; } - for (i = 0, j = 0; i <= 6; ++i) + for (i = 0, j = 0; i <= 6; i++) { u8 spriteId = CreateSprite(&gEruptionLaunchRockSpriteTemplate, x, y, 2); diff --git a/src/ghost.c b/src/ghost.c index a531cec44..2bea6bd0e 100644 --- a/src/ghost.c +++ b/src/ghost.c @@ -802,7 +802,7 @@ void AnimTask_DestinyBondWhiteShadow(u8 taskId) baseY = GetBattlerSpriteCoordAttr(gBattleAnimAttacker, BATTLER_COORD_ATTR_BOTTOM); if (!IsContest()) { - for (battler = 0; battler < 4; ++battler) + for (battler = 0; battler < 4; battler++) { if (battler != gBattleAnimAttacker && battler != (gBattleAnimAttacker ^ 2) @@ -903,7 +903,7 @@ static void sub_80B623C(u8 taskId) SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(task->data[8], task->data[9])); if (task->data[8] == 0 && task->data[9] == 16) { - for (i = 0; i < task->data[12]; ++i) + for (i = 0; i < task->data[12]; i++) DestroySprite(&gSprites[task->data[i + 13]]); ++task->data[0]; } @@ -1166,7 +1166,7 @@ static void sub_80B696C(u8 taskId) switch (task->data[0]) { case 0: - for (i = 0; i < 6; ++i) + for (i = 0; i < 6; i++) { spriteId = CreateSprite(&gGrudgeFlameSpriteTemplate, task->data[9], task->data[10], task->data[6]); if (spriteId != MAX_SPRITES) diff --git a/src/ground.c b/src/ground.c index 1ed06be1a..5dc068784 100644 --- a/src/ground.c +++ b/src/ground.c @@ -557,7 +557,7 @@ void AnimTask_HorizontalShake(u8 taskId) break; case 4: task->data[13] = 0; - for (i = 0; i < MAX_BATTLERS_COUNT; ++i) + for (i = 0; i < MAX_BATTLERS_COUNT; i++) { if (IsBattlerSpriteVisible(i)) { @@ -664,7 +664,7 @@ static void sub_80B967C(u8 taskId) } break; case 2: - for (i = 0; i < task->data[13]; ++i) + for (i = 0; i < task->data[13]; i++) gSprites[task->data[9 + i]].x2 = 0; DestroyAnimVisualTask(taskId); break; @@ -679,7 +679,7 @@ static void sub_80B9760(struct Task *task) xOffset = (task->data[14] / 2) + (task->data[14] & 1); else xOffset = -(task->data[14] / 2); - for (i = 0; i < task->data[13]; ++i) + for (i = 0; i < task->data[13]; i++) gSprites[task->data[9 + i]].x2 = xOffset; } diff --git a/src/ice.c b/src/ice.c index 8e09574a9..e7c89c1c1 100644 --- a/src/ice.c +++ b/src/ice.c @@ -667,7 +667,7 @@ static void AnimSwirlingSnowball_Step1(struct Sprite *sprite) sprite->data[2] -= gBattleAnimArgs[2]; else sprite->data[2] += gBattleAnimArgs[2]; - for (i = 0; i < 8; ++i) + for (i = 0; i < 8; i++) tempDataHolder[i] = sprite->data[i]; InitAnimFastLinearTranslationWithSpeed(sprite); sprite->data[1] ^= 1; @@ -684,7 +684,7 @@ static void AnimSwirlingSnowball_Step1(struct Sprite *sprite) sprite->x += sprite->x2; sprite->y += sprite->y2; sprite->x2 = sprite->y2 = 0; - for (i = 0; i < 8; ++i) + for (i = 0; i < 8; i++) sprite->data[i] = tempDataHolder[i]; sprite->callback = InitAndStartAnimFastLinearTranslationWithSpeed; StoreSpriteCallbackInData6(sprite, AnimSwirlingSnowball_Step2); @@ -772,7 +772,7 @@ static void AnimMoveParticleBeyondTarget(struct Sprite *sprite) sprite->data[2] += gBattleAnimArgs[2]; sprite->data[4] += gBattleAnimArgs[3]; InitAnimFastLinearTranslationWithSpeed(sprite); - for (i = 0; i < 8; ++i) + for (i = 0; i < 8; i++) tempDataHolder[i] = sprite->data[i]; sprite->data[1] ^= 1; sprite->data[2] ^= 1; @@ -789,7 +789,7 @@ static void AnimMoveParticleBeyondTarget(struct Sprite *sprite) sprite->y += sprite->y2; sprite->y2 = 0; sprite->x2 = 0; - for (i = 0; i < 8; ++i) + for (i = 0; i < 8; i++) sprite->data[i] = tempDataHolder[i]; sprite->data[5] = gBattleAnimArgs[5]; sprite->data[6] = gBattleAnimArgs[6]; diff --git a/src/librfu_rfu.c b/src/librfu_rfu.c index 9f642907b..5723b664c 100644 --- a/src/librfu_rfu.c +++ b/src/librfu_rfu.c @@ -156,7 +156,7 @@ u16 rfu_initializeAPI(u32 *APIBuffer, u16 buffByteSize, IntrFunc *sioIntrTable_p gRfuFixed = (void *)APIBuffer + 0xdc; // + sizeof(*gRfuStatic) gRfuSlotStatusNI[0] = (void *)APIBuffer + 0x1bc; // + sizeof(*gRfuFixed) gRfuSlotStatusUNI[0] = (void *)APIBuffer + 0x37c; // + sizeof(*gRfuSlotStatusNI[0]) * RFU_CHILD_MAX - for (i = 1; i < RFU_CHILD_MAX; ++i) + for (i = 1; i < RFU_CHILD_MAX; i++) { gRfuSlotStatusNI[i] = &gRfuSlotStatusNI[i - 1][1]; gRfuSlotStatusUNI[i] = &gRfuSlotStatusUNI[i - 1][1]; @@ -165,7 +165,7 @@ u16 rfu_initializeAPI(u32 *APIBuffer, u16 buffByteSize, IntrFunc *sioIntrTable_p gRfuFixed->STWIBuffer = (struct RfuIntrStruct *)&gRfuSlotStatusUNI[3][1]; STWI_init_all((struct RfuIntrStruct *)&gRfuSlotStatusUNI[3][1], sioIntrTable_p, copyInterruptToRam); rfu_STC_clearAPIVariables(); - for (i = 0; i < RFU_CHILD_MAX; ++i) + for (i = 0; i < RFU_CHILD_MAX; i++) { gRfuSlotStatusNI[i]->recvBuffer = NULL; gRfuSlotStatusNI[i]->recvBufferSize = 0; @@ -206,7 +206,7 @@ static void rfu_STC_clearAPIVariables(void) gRfuLinkStatus->parentChild = MODE_NEUTRAL; rfu_clearAllSlot(); gRfuStatic->SCStartFlag = 0; - for (i = 0; i < RFU_CHILD_MAX; ++i) + for (i = 0; i < RFU_CHILD_MAX; i++) gRfuStatic->cidBak[i] = 0; REG_IME = IMEBackup; } @@ -286,7 +286,7 @@ static void rfu_CB_defaultCallback(u8 reqCommand, u16 reqResult) if (gRfuStatic->flags & 8) gRfuFixed->reqCallback(reqCommand, reqResult); bmSlotFlags = gRfuLinkStatus->connSlotFlag | gRfuLinkStatus->linkLossSlotFlag; - for (i = 0; i < RFU_CHILD_MAX; ++i) + for (i = 0; i < RFU_CHILD_MAX; i++) if ((bmSlotFlags >> i) & 1) rfu_STC_removeLinkData(i, 1); gRfuLinkStatus->parentChild = MODE_NEUTRAL; @@ -343,7 +343,7 @@ u16 rfu_MBOOT_CHILD_inheritanceLinkStatus(void) // The size of struct RfuLinkStatus is 180 checksum = 0; - for (i = 0; i < 180/2; ++i) + for (i = 0; i < 180/2; i++) checksum += *mb_buff_iwram_p++; if (checksum != *(u16 *)0x30000FA) return 1; @@ -447,11 +447,11 @@ void rfu_REQ_configGameData(u8 mbootFlag, u16 serialNo, const u8 *gname, const u packet[1] = serialNo >> 8; if (mbootFlag != 0) packet[1] = (serialNo >> 8) | 0x80; - for (i = 2; i < 15; ++i) + for (i = 2; i < 15; i++) packet[i] = *gname++; check_sum = 0; unameBackup = uname; - for (i = 0; i < 8; ++i) + for (i = 0; i < 8; i++) { check_sum += *unameBackup++; check_sum += *gnameBackup++; @@ -485,10 +485,10 @@ static void rfu_CB_configGameData(u8 reqCommand, u16 reqResult) { gRfuLinkStatus->my.mbootFlag = 0; } - for (i = 0; i < RFU_GAME_NAME_LENGTH; ++i) + for (i = 0; i < RFU_GAME_NAME_LENGTH; i++) gRfuLinkStatus->my.gname[i] = *gname_uname_p++; ++gname_uname_p; - for (i = 0; i < RFU_USER_NAME_LENGTH; ++i) + for (i = 0; i < RFU_USER_NAME_LENGTH; i++) gRfuLinkStatus->my.uname[i] = *gname_uname_p++; } rfu_STC_REQ_callback(reqCommand, reqResult); @@ -538,7 +538,7 @@ static void rfu_STC_clearLinkStatus(u8 parentChild) CpuFill16(0, gRfuLinkStatus->partner, sizeof(gRfuLinkStatus->partner)); gRfuLinkStatus->findParentCount = 0; } - for (i = 0; i < RFU_CHILD_MAX; ++i) + for (i = 0; i < RFU_CHILD_MAX; i++) gRfuLinkStatus->strength[i] = 0; gRfuLinkStatus->connCount = 0; gRfuLinkStatus->connSlotFlag = 0; @@ -601,7 +601,7 @@ static void rfu_STC_readChildList(void) if (STWI_poll_CommandEnd() == 0) { data_p = &gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[4]; - for (i = 0; i < RFU_CHILD_MAX; ++i) + for (i = 0; i < RFU_CHILD_MAX; i++) true_slots[i] = *data_p++; } gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket32.data[0] = stwiParam; @@ -688,7 +688,7 @@ static void rfu_STC_readParentCandidateList(void) numSlots = packet_p[1]; packet_p += 4; gRfuLinkStatus->findParentCount = 0; - for (i = 0; i < RFU_CHILD_MAX && numSlots != 0; ++i) + for (i = 0; i < RFU_CHILD_MAX && numSlots != 0; i++) { numSlots -= 7; uname_p = packet_p + 6; @@ -696,7 +696,7 @@ static void rfu_STC_readParentCandidateList(void) check_sum = ~*packet_p; ++packet_p; my_check_sum = 0; - for (j = 0; j < 8; ++j) + for (j = 0; j < 8; j++) { my_check_sum += *packet_p++; my_check_sum += *uname_p++; @@ -715,10 +715,10 @@ static void rfu_STC_readParentCandidateList(void) else target->mbootFlag = 0; packet_p += 2; - for (j = 0; j < RFU_GAME_NAME_LENGTH; ++j) + for (j = 0; j < RFU_GAME_NAME_LENGTH; j++) target->gname[j] = *packet_p++; ++packet_p; - for (j = 0; j < RFU_USER_NAME_LENGTH; ++j) + for (j = 0; j < RFU_USER_NAME_LENGTH; j++) target->uname[j] = *packet_p++; ++gRfuLinkStatus->findParentCount; } @@ -729,7 +729,7 @@ void rfu_REQ_startConnectParent(u16 pid) { u16 result = 0; u8 i; - for (i = 0; i < RFU_CHILD_MAX && gRfuLinkStatus->partner[i].id != pid; ++i) + for (i = 0; i < RFU_CHILD_MAX && gRfuLinkStatus->partner[i].id != pid; i++) ; if (i == RFU_CHILD_MAX) result = ERR_PID_NOT_FOUND; @@ -774,7 +774,7 @@ static void rfu_CB_pollConnectParent(u8 reqCommand, u16 reqResult) ++gRfuLinkStatus->connCount; gRfuLinkStatus->parentChild = MODE_CHILD; gRfuStatic->flags |= 0x80; - for (i = 0; i < RFU_CHILD_MAX; ++i) + for (i = 0; i < RFU_CHILD_MAX; i++) { if (gRfuLinkStatus->partner[i].id == gRfuStatic->tryPid) { @@ -860,7 +860,7 @@ u16 rfu_syncVBlank(void) { gRfuStatic->flags &= 0xFB; bmSlotFlag = gRfuLinkStatus->connSlotFlag | gRfuLinkStatus->linkLossSlotFlag; - for (i = 0; i < RFU_CHILD_MAX; ++i) + for (i = 0; i < RFU_CHILD_MAX; i++) if ((bmSlotFlag >> i) & 1) rfu_STC_removeLinkData(i, 1); gRfuLinkStatus->parentChild = MODE_NEUTRAL; @@ -913,7 +913,7 @@ u16 rfu_REQBN_watchLink(u16 reqCommandId, u8 *bmLinkLossSlot, u8 *linkLossReason newLinkLossFlag ^= gRfuLinkStatus->connSlotFlag; *bmLinkLossSlot = newLinkLossFlag & gRfuLinkStatus->connSlotFlag; *linkLossReason = REASON_LINK_LOSS; - for (i = 0; i < RFU_CHILD_MAX; ++i) + for (i = 0; i < RFU_CHILD_MAX; i++) { if ((*bmLinkLossSlot >> i) & 1) { @@ -933,7 +933,7 @@ u16 rfu_REQBN_watchLink(u16 reqCommandId, u8 *bmLinkLossSlot, u8 *linkLossReason if (reqResult == 0) { packet_p = &gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[4]; - for (i = 0; i < RFU_CHILD_MAX; ++i) + for (i = 0; i < RFU_CHILD_MAX; i++) gRfuLinkStatus->strength[i] = *packet_p++; to_req_disconnect = 0; i = 0; @@ -943,7 +943,7 @@ u16 rfu_REQBN_watchLink(u16 reqCommandId, u8 *bmLinkLossSlot, u8 *linkLossReason rfu_STC_REQ_callback(ID_LINK_STATUS_REQ, reqResult); return reqResult; } - for (; i < RFU_CHILD_MAX; ++i) + for (; i < RFU_CHILD_MAX; i++) { #if LIBRFU_VERSION >= 1026 if (gRfuStatic->lsFixedCount[i] != 0) @@ -1120,7 +1120,7 @@ static void rfu_CB_disconnect(u8 reqCommand, u16 reqResult) gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[8] = gRfuStatic->recoveryBmSlot; if (reqResult == 0) { - for (i = 0; i < RFU_CHILD_MAX; ++i) + for (i = 0; i < RFU_CHILD_MAX; i++) { bm_slot_flag = 1 << i; if (bm_slot_flag & gRfuStatic->recoveryBmSlot) @@ -1145,7 +1145,7 @@ void rfu_REQ_CHILD_startConnectRecovery(u8 bmRecoverySlot) u8 i; gRfuStatic->recoveryBmSlot = bmRecoverySlot; - for (i = 0; i < RFU_CHILD_MAX && !((bmRecoverySlot >> i) & 1); ++i) + for (i = 0; i < RFU_CHILD_MAX && !((bmRecoverySlot >> i) & 1); i++) ; STWI_set_Callback_M(rfu_STC_REQ_callback); // if i == 4, gRfuLinkStatus->partner[i].id becomes gRfuLinkStatus->my.id @@ -1166,7 +1166,7 @@ static void rfu_CB_CHILD_pollConnectRecovery(u8 reqCommand, u16 reqResult) if (reqResult == 0 && gRfuFixed->STWIBuffer->rxPacketAlloc.rfuPacket8.data[4] == 0 && gRfuStatic->recoveryBmSlot) { gRfuLinkStatus->parentChild = MODE_CHILD; - for (i = 0; i < RFU_CHILD_MAX; ++i) + for (i = 0; i < RFU_CHILD_MAX; i++) { bm_slot_flag = 1 << i; rfuLinkStatus = gRfuLinkStatus; // ??? @@ -1248,7 +1248,7 @@ void rfu_clearAllSlot(void) u16 IMEBackup = REG_IME; REG_IME = 0; - for (i = 0; i < RFU_CHILD_MAX; ++i) + for (i = 0; i < RFU_CHILD_MAX; i++) { CpuFill16(0, gRfuSlotStatusNI[i], 2 * sizeof(struct NIComm)); CpuFill16(0, gRfuSlotStatusUNI[i], sizeof(struct UNISend) + sizeof(struct UNIRecv)); @@ -1316,7 +1316,7 @@ u16 rfu_clearSlot(u8 connTypeFlag, u8 slotStatusIndex) if (NI_comm->state & SLOT_BUSY_FLAG) { rfu_STC_releaseFrame(slotStatusIndex, send_recv, NI_comm); - for (i = 0; i < RFU_CHILD_MAX; ++i) + for (i = 0; i < RFU_CHILD_MAX; i++) if ((NI_comm->bmSlotOrg >> i) & 1) NI_comm->failCounter = 0; } @@ -1441,7 +1441,7 @@ static u16 rfu_STC_setSendData_org(u8 ni_or_uni, u8 bmSendSlot, u8 subFrameSize, slotStatus_NI->send.src = src; slotStatus_NI->send.ack = 0; slotStatus_NI->send.phase = 0; - for (i = 0; i < WINDOW_COUNT; ++i) + for (i = 0; i < WINDOW_COUNT; i++) { slotStatus_NI->send.recvAckFlag[i] = 0; slotStatus_NI->send.n[i] = 1; @@ -1494,7 +1494,7 @@ u16 rfu_changeSendTarget(u8 connType, u8 slotStatusIndex, u8 bmNewTgtSlot) { imeBak = REG_IME; REG_IME = 0; - for (i = 0; i < RFU_CHILD_MAX; ++i) + for (i = 0; i < RFU_CHILD_MAX; i++) { if ((connType >> i) & 1) gRfuSlotStatusNI[i]->send.failCounter = 0; @@ -1527,7 +1527,7 @@ u16 rfu_changeSendTarget(u8 connType, u8 slotStatusIndex, u8 bmNewTgtSlot) if (gRfuSlotStatusUNI[slotStatusIndex]->send.state != SLOT_STATE_SEND_UNI) return ERR_SLOT_NOT_SENDING; - for (bmSlot = 0, i = 0; i < RFU_CHILD_MAX; ++i) + for (bmSlot = 0, i = 0; i < RFU_CHILD_MAX; i++) if (i != slotStatusIndex) bmSlot |= gRfuSlotStatusUNI[i]->send.bmSlot; if (bmNewTgtSlot & bmSlot) @@ -1687,7 +1687,7 @@ static void rfu_CB_sendData(UNUSED u8 reqCommand, u16 reqResult) if (reqResult == 0) { - for (i = 0; i < RFU_CHILD_MAX; ++i) + for (i = 0; i < RFU_CHILD_MAX; i++) { if (gRfuSlotStatusUNI[i]->send.dataReadyFlag) gRfuSlotStatusUNI[i]->send.dataReadyFlag = 0; @@ -1732,7 +1732,7 @@ static void rfu_constructSendLLFrame(void) gRfuLinkStatus->LLFReadyFlag = 0; pakcketSize = 0; llf_p = (u8 *)&gRfuFixed->LLFBuffer[1]; - for (i = 0; i < RFU_CHILD_MAX; ++i) + for (i = 0; i < RFU_CHILD_MAX; i++) { currSize = 0; if (gRfuSlotStatusNI[i]->send.state & SLOT_BUSY_FLAG) @@ -1808,7 +1808,7 @@ static u16 rfu_STC_NI_constructLLSF(u8 bm_slot_id, u8 **dest_pp, struct NIComm * if (gRfuLinkStatus->parentChild == MODE_PARENT) frame |= NI_comm->bmSlot << 18; frame8_p = (u8 *)&frame; - for (i = 0; i < llsf->frameSize; ++i) + for (i = 0; i < llsf->frameSize; i++) *(*dest_pp)++ = *frame8_p++; if (size != 0) { @@ -1846,7 +1846,7 @@ static u16 rfu_STC_UNI_constructLLSF(u8 bm_slot_id, u8 **dest_p) if (gRfuLinkStatus->parentChild == MODE_PARENT) frame |= UNI_send->bmSlot << 18; frame8_p = (u8 *)&frame; - for (i = 0; i < llsf->frameSize; ++i) + for (i = 0; i < llsf->frameSize; i++) *(*dest_p)++ = *frame8_p++; src_p = UNI_send->src; gRfuFixed->fastCopyPtr(&src_p, dest_p, UNI_send->payloadSize); @@ -1881,7 +1881,7 @@ static void rfu_CB_recvData(u8 reqCommand, u16 reqResult) rfu_STC_PARENT_analyzeRecvPacket(); else rfu_STC_CHILD_analyzeRecvPacket(); - for (i = 0; i < RFU_CHILD_MAX; ++i) + for (i = 0; i < RFU_CHILD_MAX; i++) { slotStatusNI = gRfuSlotStatusNI[i]; if (slotStatusNI->recv.state == SLOT_STATE_RECV_LAST && !((gRfuStatic->NIEndRecvFlag >> i) & 1)) @@ -1965,7 +1965,7 @@ static u16 rfu_STC_analyzeLLSF(u8 slot_id, const u8 *src, u16 last_frame) if (last_frame < llsf_p->frameSize) return last_frame; frames = 0; - for (i = 0; i < llsf_p->frameSize; ++i) + for (i = 0; i < llsf_p->frameSize; i++) frames |= *src++ << 8 * i; llsf_NI.recvFirst = (frames >> llsf_p->recvFirstShift) & llsf_p->recvFirstMask; llsf_NI.connSlotFlag = (frames >> llsf_p->connSlotFlagShift) & llsf_p->connSlotFlagMask; @@ -1991,7 +1991,7 @@ static u16 rfu_STC_analyzeLLSF(u8 slot_id, const u8 *src, u16 last_frame) } else { - for (i = 0; i < RFU_CHILD_MAX; ++i) + for (i = 0; i < RFU_CHILD_MAX; i++) if (((gRfuSlotStatusNI[i]->send.bmSlot >> slot_id) & 1) && ((gRfuLinkStatus->sendSlotNIFlag >> slot_id) & 1)) break; @@ -2006,7 +2006,7 @@ static u16 rfu_STC_analyzeLLSF(u8 slot_id, const u8 *src, u16 last_frame) if (conSlots) { - for (i = 0; i < RFU_CHILD_MAX; ++i) + for (i = 0; i < RFU_CHILD_MAX; i++) { if ((conSlots >> i) & 1) { @@ -2097,7 +2097,7 @@ static void rfu_STC_NI_receive_Sender(u8 NI_slot, u8 bm_flag, const struct RfuLo NI_comm->phase = 0; if (NI_comm->state == SLOT_STATE_SEND_START) { - for (i = 0; i < WINDOW_COUNT; ++i) + for (i = 0; i < WINDOW_COUNT; i++) { NI_comm->n[i] = 1; NI_comm->now_p[i] = NI_comm->src + NI_comm->payloadSize * i; diff --git a/src/librfu_stwi.c b/src/librfu_stwi.c index fb90cb452..cbf6cfcf2 100644 --- a/src/librfu_stwi.c +++ b/src/librfu_stwi.c @@ -208,13 +208,13 @@ void STWI_send_GameConfigREQ(const u8 *serial_gname, const u8 *uname) *(u16 *)packetBytes = *(u16 *)serial_gname; packetBytes += sizeof(u16); serial_gname += sizeof(u16); - for (i = 0; i < 14; ++i) + for (i = 0; i < 14; i++) { *packetBytes = *serial_gname; ++packetBytes; ++serial_gname; } - for (i = 0; i < 8; ++i) + for (i = 0; i < 8; i++) { *packetBytes = *uname; ++packetBytes; diff --git a/src/mail_data.c b/src/mail_data.c index bb5fa6581..9bff74b6d 100644 --- a/src/mail_data.c +++ b/src/mail_data.c @@ -5,6 +5,8 @@ #include "constants/items.h" #include "pokemon_icon.h" +#define UNOWN_OFFSET 30000 + void ClearMailData(void) { u8 i; @@ -73,7 +75,7 @@ u8 GiveMailToMon(struct Pokemon *mon, u16 itemId) u16 SpeciesToMailSpecies(u16 species, u32 personality) { if (species == SPECIES_UNOWN) { - u32 mailSpecies = GetUnownLetterByPersonality(personality) + 30000; + u32 mailSpecies = GetUnownLetterByPersonality(personality) + UNOWN_OFFSET; return mailSpecies; } return species; @@ -83,10 +85,10 @@ u16 MailSpeciesToSpecies(u16 mailSpecies, u16 *unownLetter) { u16 result; - if (mailSpecies >= 30000 && mailSpecies < (30000 + UNOWN_FORM_COUNT)) + if (mailSpecies >= UNOWN_OFFSET && mailSpecies < (UNOWN_OFFSET + NUM_UNOWN_FORMS)) { result = SPECIES_UNOWN; - *unownLetter = mailSpecies - 30000; + *unownLetter = mailSpecies - UNOWN_OFFSET; } else { diff --git a/src/menu.c b/src/menu.c index 3aedd0574..4d546a0f7 100644 --- a/src/menu.c +++ b/src/menu.c @@ -580,8 +580,8 @@ void MultichoiceGrid_PrintItems(u8 windowId, u8 fontId, u8 itemWidth, u8 itemHei itemHeight = itemHeight; width = GetFontAttribute(fontId, FONTATTR_MAX_LETTER_WIDTH); yOffset = (16 - GetFontAttribute(fontId, FONTATTR_MAX_LETTER_HEIGHT)) / 2; - for (i = 0; i < rows; ++i) - for (j = 0; j < cols; ++j) + for (i = 0; i < rows; i++) + for (j = 0; j < cols; j++) AddTextPrinterParameterized(windowId, fontId, strs[i * cols + j].text, itemWidth * j + width, yOffset + itemHeight * i, 0xFF, 0); CopyWindowToVram(windowId, COPYWIN_GFX); } @@ -595,8 +595,8 @@ static void MultichoiceGrid_PrintItemsCustomOrder(u8 windowId, u8 fontId, u8 ite itemWidth = itemWidth; itemHeight = itemHeight; width = GetFontAttribute(fontId, FONTATTR_MAX_LETTER_WIDTH); - for (i = 0; i < rows; ++i) - for (j = 0; j < cols; ++j) + for (i = 0; i < rows; i++) + for (j = 0; j < cols; j++) AddTextPrinterParameterized(windowId, fontId, strs[orderArray[i * cols + j]].text, itemWidth * j + width, itemHeight * i, 0xFF, 0); CopyWindowToVram(windowId, COPYWIN_GFX); } diff --git a/src/mevent_show_news.c b/src/mevent_show_news.c index 088f00f11..9a739e315 100644 --- a/src/mevent_show_news.c +++ b/src/mevent_show_news.c @@ -299,7 +299,7 @@ static void sub_8146980(void) u8 i = 0; memcpy(sWork->title, sWork->wonderNews.titleText, 40); sWork->title[40] = EOS; - for (; i < 10; ++i) + for (; i < 10; i++) { memcpy(sWork->messages[i], sWork->wonderNews.bodyText[i], 40); sWork->messages[i][40] = EOS; @@ -322,7 +322,7 @@ static void sub_8146A30(void) if (x < 0) x = 0; AddTextPrinterParameterized3(sWork->windowIds[0], FONT_3, x, 6, sTextPals[sWork->bgSpec->textPal1], 0, sWork->title); - for (; i < 10; ++i) + for (; i < 10; i++) { AddTextPrinterParameterized3(sWork->windowIds[1], FONT_3, 0, 16 * i + 2, sTextPals[sWork->bgSpec->textPal2], 0, sWork->messages[i]); } diff --git a/src/normal.c b/src/normal.c index 157af414a..dbabe502d 100644 --- a/src/normal.c +++ b/src/normal.c @@ -473,7 +473,7 @@ void AnimTask_BlendColorCycleExclude(u8 taskId) gTasks[taskId].data[4] = gBattleAnimArgs[4]; gTasks[taskId].data[5] = gBattleAnimArgs[5]; gTasks[taskId].data[8] = 0; - for (battler = 0; battler < gBattlersCount; ++battler) + for (battler = 0; battler < gBattlersCount; battler++) if (battler != gBattleAnimAttacker && battler != gBattleAnimTarget) selectedPalettes |= 1 << (battler + 16); if (gBattleAnimArgs[0] == 1) @@ -765,7 +765,7 @@ static void sub_80BA320(struct Sprite *sprite) *(u16 *)(sprite->data[6] | (sprite->data[7] << 16)) = sprite->data[4]; var0 = sprite->data[5] - 2; if (var0 < 2) - for (i = 0; i < gBattlersCount; ++i) + for (i = 0; i < gBattlersCount; i++) gSprites[gBattlerSpriteIds[i]].coordOffsetEnabled = 0; DestroyAnimSprite(sprite); } diff --git a/src/palette.c b/src/palette.c index 014199a7a..ad9f15699 100644 --- a/src/palette.c +++ b/src/palette.c @@ -129,7 +129,7 @@ void ResetPaletteFade(void) { u8 i; - for (i = 0; i < 16; ++i) + for (i = 0; i < 16; i++) ResetPaletteStruct(i); ResetPaletteFadeControl(); } @@ -139,7 +139,7 @@ void ReadPlttIntoBuffers(void) u16 i; u16 *pltt = (u16 *)PLTT; - for (i = 0; i < PLTT_SIZE / 2; ++i) + for (i = 0; i < PLTT_SIZE / 2; i++) { gPlttBufferUnfaded[i] = pltt[i]; gPlttBufferFaded[i] = pltt[i]; @@ -199,7 +199,7 @@ static void sub_8070718(u8 a1, u32 *a2) { u8 i; - for (i = 0; i < NUM_PALETTE_STRUCTS; ++i) + for (i = 0; i < NUM_PALETTE_STRUCTS; i++) { struct PaletteStruct *palstruct = &sPaletteStructs[i]; @@ -291,7 +291,7 @@ static void sub_80708F4(struct PaletteStruct *a1, u32 *a2) u32 srcOffset = a1->srcIndex * a1->base->size; u8 i; - for (i = 0; i < a1->base->size; ++i) + for (i = 0; i < a1->base->size; i++) gPlttBufferFaded[a1->baseDestOffset + i] = a1->base->src[srcOffset + i]; } } @@ -388,7 +388,7 @@ static u8 GetPaletteNumByUid(u16 uid) { u8 i; - for (i = 0; i < NUM_PALETTE_STRUCTS; ++i) + for (i = 0; i < NUM_PALETTE_STRUCTS; i++) if (sPaletteStructs[i].base->uid == uid) return i; return 16; @@ -482,7 +482,7 @@ void InvertPlttBuffer(u32 selectedPalettes) { u8 i; - for (i = 0; i < 16; ++i) + for (i = 0; i < 16; i++) gPlttBufferFaded[paletteOffset + i] = ~gPlttBufferFaded[paletteOffset + i]; } selectedPalettes >>= 1; @@ -500,7 +500,7 @@ void TintPlttBuffer(u32 selectedPalettes, s8 r, s8 g, s8 b) { u8 i; - for (i = 0; i < 16; ++i) + for (i = 0; i < 16; i++) { struct PlttData *data = (struct PlttData *)&gPlttBufferFaded[paletteOffset + i]; @@ -524,7 +524,7 @@ void UnfadePlttBuffer(u32 selectedPalettes) { u8 i; - for (i = 0; i < 16; ++i) + for (i = 0; i < 16; i++) gPlttBufferFaded[paletteOffset + i] = gPlttBufferUnfaded[paletteOffset + i]; } selectedPalettes >>= 1; @@ -574,7 +574,7 @@ static u8 UpdateFastPaletteFade(void) switch (gPaletteFade_submode) { case FAST_FADE_IN_FROM_WHITE: - for (i = paletteOffsetStart; i < paletteOffsetEnd; ++i) + for (i = paletteOffsetStart; i < paletteOffsetEnd; i++) { struct PlttData *unfaded; struct PlttData *faded; @@ -597,7 +597,7 @@ static u8 UpdateFastPaletteFade(void) } break; case FAST_FADE_OUT_TO_WHITE: - for (i = paletteOffsetStart; i < paletteOffsetEnd; ++i) + for (i = paletteOffsetStart; i < paletteOffsetEnd; i++) { struct PlttData *data = (struct PlttData *)&gPlttBufferFaded[i]; @@ -614,7 +614,7 @@ static u8 UpdateFastPaletteFade(void) } break; case FAST_FADE_IN_FROM_BLACK: - for (i = paletteOffsetStart; i < paletteOffsetEnd; ++i) + for (i = paletteOffsetStart; i < paletteOffsetEnd; i++) { struct PlttData *unfaded; struct PlttData *faded; @@ -637,7 +637,7 @@ static u8 UpdateFastPaletteFade(void) } break; case FAST_FADE_OUT_TO_BLACK: - for (i = paletteOffsetStart; i < paletteOffsetEnd; ++i) + for (i = paletteOffsetStart; i < paletteOffsetEnd; i++) { struct PlttData *data = (struct PlttData *)&gPlttBufferFaded[i]; @@ -804,7 +804,7 @@ void TintPalette_GrayScale(u16 *palette, u16 count) s32 r, g, b, i; u32 gray; - for (i = 0; i < count; ++i) + for (i = 0; i < count; i++) { r = (*palette >> 0) & 0x1F; g = (*palette >> 5) & 0x1F; @@ -819,7 +819,7 @@ void TintPalette_GrayScale2(u16 *palette, u16 count) s32 r, g, b, i; u32 gray; - for (i = 0; i < count; ++i) + for (i = 0; i < count; i++) { r = (*palette >> 0) & 0x1F; g = (*palette >> 5) & 0x1F; @@ -838,7 +838,7 @@ void TintPalette_SepiaTone(u16 *palette, u16 count) s32 r, g, b, i; u32 gray; - for (i = 0; i < count; ++i) + for (i = 0; i < count; i++) { r = (*palette >> 0) & 0x1F; g = (*palette >> 5) & 0x1F; @@ -858,7 +858,7 @@ void TintPalette_CustomTone(u16 *palette, u16 count, u16 rTone, u16 gTone, u16 b s32 r, g, b, i; u32 gray; - for (i = 0; i < count; ++i) + for (i = 0; i < count; i++) { r = (*palette >> 0) & 0x1F; g = (*palette >> 5) & 0x1F; @@ -884,7 +884,7 @@ void sub_80716F8(const u16 *src, u16 *dst, u16 count, u8 a4) if (!a4) { - for (i = 0; i < count; ++i) + for (i = 0; i < count; i++) *dst++ = *src++; } else @@ -932,7 +932,7 @@ bool32 sub_807185C(u8 var) { s32 i; - for (i = 0; i < NUM_TASKS; ++i) + for (i = 0; i < NUM_TASKS; i++) if (gTasks[i].isActive == TRUE && gTasks[i].func == sub_80718B8 && gTasks[i].data[8] == var) diff --git a/src/party_menu.c b/src/party_menu.c index ee2800801..ae26fdef5 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -427,9 +427,9 @@ void InitPartyMenu(u8 menuType, u8 layout, u8 partyAction, bool8 keepCursorPos, sPartyMenuInternal->chooseHalf = FALSE; if (layout != KEEP_PARTY_LAYOUT) gPartyMenu.layout = layout; - for (i = 0; i < NELEMS(sPartyMenuInternal->data); ++i) + for (i = 0; i < NELEMS(sPartyMenuInternal->data); i++) sPartyMenuInternal->data[i] = 0; - for (i = 0; i < NELEMS(sPartyMenuInternal->windowId); ++i) + for (i = 0; i < NELEMS(sPartyMenuInternal->windowId); i++) sPartyMenuInternal->windowId[i] = 0xFF; if (!keepCursorPos) gPartyMenu.slotId = 0; @@ -710,7 +710,7 @@ static void InitPartyMenuBoxes(u8 layout) u8 i; sPartyMenuBoxes = Alloc(sizeof(struct PartyMenuBox[PARTY_SIZE])); - for (i = 0; i < PARTY_SIZE; ++i) + for (i = 0; i < PARTY_SIZE; i++) { sPartyMenuBoxes[i].infoRects = &sPartyBoxInfoRects[PARTY_BOX_RIGHT_COLUMN]; sPartyMenuBoxes[i].spriteCoords = sPartyMenuSpriteCoords[layout][i]; @@ -811,7 +811,7 @@ static void DisplayPartyPokemonDataForChooseHalf(u8 slot) maxBattlers = 2; else maxBattlers = 3; - for (i = 0; i < maxBattlers; ++i) + for (i = 0; i < maxBattlers; i++) { if (order[i] != 0 && (order[i] - 1) == slot) { @@ -1800,12 +1800,12 @@ static void SetPartyMonsAllowedInMinigame(void) gPartyMenu.data1 = 0; if (gSpecialVar_0x8005 == 0) { - for (i = 0; i < gPlayerPartyCount; ++i) + for (i = 0; i < gPlayerPartyCount; i++) *ptr += IsMonAllowedInPokemonJump(&gPlayerParty[i]) << i; } else { - for (i = 0; i < gPlayerPartyCount; ++i) + for (i = 0; i < gPlayerPartyCount; i++) *ptr += IsMonAllowedInDodrioBerryPicking(&gPlayerParty[i]) << i; } } @@ -2140,7 +2140,7 @@ static void InitPartyMenuWindows(u8 layout) break; } DeactivateAllTextPrinters(); - for (i = 0; i < PARTY_SIZE; ++i) + for (i = 0; i < PARTY_SIZE; i++) FillWindowPixelBuffer(i, PIXEL_FILL(0)); TextWindow_SetUserSelectedFrame(0, 0x4F, 0xD0); TextWindow_SetStdFrame0_WithPal(0, 0x58, 0xF0); @@ -2201,8 +2201,8 @@ static void BlitBitmapToPartyWindow(u8 windowId, const u8 *b, u8 c, u8 x, u8 y, if (pixels != NULL) { - for (i = 0; i < height; ++i) - for (j = 0; j < width; ++j) + for (i = 0; i < height; i++) + for (j = 0; j < width; j++) CpuCopy16(GetPartyMenuBgTile(b[x + j + ((y + i) * c)]), &pixels[(i * width + j) * 32], 32); BlitBitmapToWindow(windowId, pixels, x * 8, y * 8, width * 8, height * 8); Free(pixels); @@ -2543,7 +2543,7 @@ static bool8 ShouldUseChooseMonText(void) if (gPartyMenu.action == PARTY_ACTION_SEND_OUT) return TRUE; - for (i = 0; i < PARTY_SIZE; ++i) + for (i = 0; i < PARTY_SIZE; i++) { if (GetMonData(&party[i], MON_DATA_SPECIES) != SPECIES_NONE && (GetMonData(&party[i], MON_DATA_HP) != 0 || GetMonData(&party[i], MON_DATA_IS_EGG))) ++numAliveMons; @@ -2581,7 +2581,7 @@ static u8 DisplaySelectionWindow(u8 windowType) return sPartyMenuInternal->windowId[0]; cursorDimension = GetMenuCursorDimensionByFont(FONT_2, 0); fontAttribute = GetFontAttribute(FONT_2, FONTATTR_LETTER_SPACING); - for (i = 0; i < sPartyMenuInternal->numActions; ++i) + for (i = 0; i < sPartyMenuInternal->numActions; i++) { u8 fontColorsId = (sPartyMenuInternal->actions[i] >= MENU_FIELD_MOVES) ? 4 : 3; @@ -2815,7 +2815,7 @@ void DrawHeldItemIconsForTrade(u8 *partyCounts, u8 *partySpriteIds, u8 whichPart switch (whichParty) { case TRADE_PLAYER: - for (i = 0; i < partyCounts[TRADE_PLAYER]; ++i) + for (i = 0; i < partyCounts[TRADE_PLAYER]; i++) { item = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM); if (item != ITEM_NONE) @@ -2823,7 +2823,7 @@ void DrawHeldItemIconsForTrade(u8 *partyCounts, u8 *partySpriteIds, u8 whichPart } break; case TRADE_PARTNER: - for (i = 0; i < partyCounts[TRADE_PARTNER]; ++i) + for (i = 0; i < partyCounts[TRADE_PARTNER]; i++) { item = GetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM); if (item != ITEM_NONE) @@ -2980,7 +2980,7 @@ static void SetPartyMonSelectionActions(struct Pokemon *mons, u8 slotId, u8 acti else { sPartyMenuInternal->numActions = sPartyMenuActionCounts[action]; - for (i = 0; i < sPartyMenuInternal->numActions; ++i) + for (i = 0; i < sPartyMenuInternal->numActions; i++) sPartyMenuInternal->actions[i] = sPartyMenuActions[action][i]; } } @@ -2992,9 +2992,9 @@ static void SetPartyMonFieldSelectionActions(struct Pokemon *mons, u8 slotId) sPartyMenuInternal->numActions = 0; AppendToList(sPartyMenuInternal->actions, &sPartyMenuInternal->numActions, MENU_SUMMARY); // Add field moves to action list - for (i = 0; i < MAX_MON_MOVES; ++i) + for (i = 0; i < MAX_MON_MOVES; i++) { - for (j = 0; sFieldMoves[j] != FIELD_MOVE_END; ++j) + for (j = 0; sFieldMoves[j] != FIELD_MOVE_END; j++) { if (GetMonData(&mons[slotId], i + MON_DATA_MOVE1) == sFieldMoves[j]) { @@ -3798,7 +3798,7 @@ static void CursorCB_Enter(u8 taskId) } PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]); PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[1]); - for (i = 0; i < maxBattlers; ++i) + for (i = 0; i < maxBattlers; i++) { if (gSelectedOrderFromParty[i] == 0) { @@ -3831,7 +3831,7 @@ static void CursorCB_NoEntry(u8 taskId) PlaySE(SE_SELECT); PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]); PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[1]); - for (i = 0; i < 3; ++i) + for (i = 0; i < 3; i++) { if (gSelectedOrderFromParty[i] == gPartyMenu.slotId + 1) { @@ -4240,7 +4240,7 @@ void CB2_ShowPartyMenuForItemUse(void) if (GetItemEffectType(gSpecialVar_ItemId) == ITEM_EFFECT_SACRED_ASH) { gPartyMenu.slotId = 0; - for (i = 0; i < PARTY_SIZE; ++i) + for (i = 0; i < PARTY_SIZE; i++) { if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != SPECIES_NONE && GetMonData(&gPlayerParty[i], MON_DATA_HP) == 0) { @@ -4588,7 +4588,7 @@ static void ShowMoveSelectWindow(u8 slot) u8 windowId = DisplaySelectionWindow(SELECTWINDOW_MOVES); u16 move; - for (i = 0; i < MAX_MON_MOVES; ++i) + for (i = 0; i < MAX_MON_MOVES; i++) { move = GetMonData(&gPlayerParty[slot], MON_DATA_MOVE1 + i); AddTextPrinterParameterized(windowId, @@ -4758,7 +4758,7 @@ bool8 IsMoveHm(u16 move) { u8 i; - for (i = 0; i < NUM_HIDDEN_MACHINES - 1; ++i) // no dive + for (i = 0; i < NUM_HIDDEN_MACHINES - 1; i++) // no dive if (sTMHMMoves[i + NUM_TECHNICAL_MACHINES] == move) return TRUE; return FALSE; @@ -4768,7 +4768,7 @@ bool8 MonKnowsMove(struct Pokemon *mon, u16 move) { u8 i; - for (i = 0; i < MAX_MON_MOVES; ++i) + for (i = 0; i < MAX_MON_MOVES; i++) { if (GetMonData(mon, MON_DATA_MOVE1 + i) == move) return TRUE; @@ -5725,7 +5725,7 @@ static bool8 GetBattleEntryEligibility(struct Pokemon *mon) && GetMonData(mon, MON_DATA_LEVEL) > 50) return FALSE; species = GetMonData(mon, MON_DATA_SPECIES); - for (; gBattleTowerBannedSpecies[i] != 0xFFFF; ++i) + for (; gBattleTowerBannedSpecies[i] != 0xFFFF; i++) if (gBattleTowerBannedSpecies[i] == species) return FALSE; break; @@ -5744,11 +5744,11 @@ static u8 CheckBattleEntriesAndGetMessage(void) case 1: if (order[2] == 0) return PARTY_MSG_THREE_MONS_ARE_NEEDED; - for (i = 0; i < 2; ++i) + for (i = 0; i < 2; i++) { sPartyMenuInternal->data[15] = GetMonData(&party[order[i] - 1], MON_DATA_SPECIES); sPartyMenuInternal->data[14] = GetMonData(&party[order[i] - 1], MON_DATA_HELD_ITEM); - for (j = i + 1; j < 3; ++j) + for (j = i + 1; j < 3; j++) { if (sPartyMenuInternal->data[15] == GetMonData(&party[order[j] - 1], MON_DATA_SPECIES)) return PARTY_MSG_MONS_CANT_BE_SAME; @@ -5769,7 +5769,7 @@ static bool8 HasPartySlotAlreadyBeenSelected(u8 slot) { u8 i; - for (i = 0; i < NELEMS(gSelectedOrderFromParty); ++i) + for (i = 0; i < NELEMS(gSelectedOrderFromParty); i++) if (gSelectedOrderFromParty[i] == slot) return TRUE; return FALSE; @@ -5964,7 +5964,7 @@ static bool8 TrySwitchInPokemon(void) StringExpandPlaceholders(gStringVar4, gText_PkmnHasNoEnergy); return FALSE; } - for (i = 0; i < gBattlersCount; ++i) + for (i = 0; i < gBattlersCount; i++) { if (GetBattlerSide(i) == B_SIDE_PLAYER && GetPartyIdFromBattleSlot(slot) == gBattlerPartyIndexes[i]) { @@ -6037,7 +6037,7 @@ static void BufferBattlePartyOrder(u8 *partyBattleOrder, u8 flankId) { j = 1; partyIds[0] = gBattlerPartyIndexes[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]; - for (i = 0; i < PARTY_SIZE; ++i) + for (i = 0; i < PARTY_SIZE; i++) { if (i != partyIds[0]) { @@ -6051,7 +6051,7 @@ static void BufferBattlePartyOrder(u8 *partyBattleOrder, u8 flankId) j = 2; partyIds[0] = gBattlerPartyIndexes[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]; partyIds[1] = gBattlerPartyIndexes[GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT)]; - for (i = 0; i < PARTY_SIZE; ++i) + for (i = 0; i < PARTY_SIZE; i++) { if (i != partyIds[0] && i != partyIds[1]) { @@ -6060,7 +6060,7 @@ static void BufferBattlePartyOrder(u8 *partyBattleOrder, u8 flankId) } } } - for (i = 0; i < (s32)NELEMS(gBattlePartyCurrentOrder); ++i) + for (i = 0; i < (s32)NELEMS(gBattlePartyCurrentOrder); i++) partyBattleOrder[i] = (partyIds[0 + (i * 2)] << 4) | partyIds[1 + (i * 2)]; } @@ -6107,7 +6107,7 @@ static void BufferBattlePartyOrderBySide(u8 *partyBattleOrder, u8 flankId, u8 ba { j = 1; partyIndexes[0] = gBattlerPartyIndexes[leftBattler]; - for (i = 0; i < PARTY_SIZE; ++i) + for (i = 0; i < PARTY_SIZE; i++) { if (i != partyIndexes[0]) { @@ -6121,7 +6121,7 @@ static void BufferBattlePartyOrderBySide(u8 *partyBattleOrder, u8 flankId, u8 ba j = 2; partyIndexes[0] = gBattlerPartyIndexes[leftBattler]; partyIndexes[1] = gBattlerPartyIndexes[rightBattler]; - for (i = 0; i < PARTY_SIZE; ++i) + for (i = 0; i < PARTY_SIZE; i++) { if (i != partyIndexes[0] && i != partyIndexes[1]) { @@ -6130,7 +6130,7 @@ static void BufferBattlePartyOrderBySide(u8 *partyBattleOrder, u8 flankId, u8 ba } } } - for (i = 0; i < 3; ++i) + for (i = 0; i < 3; i++) partyBattleOrder[i] = (partyIndexes[0 + (i * 2)] << 4) | partyIndexes[1 + (i * 2)]; } @@ -6152,7 +6152,7 @@ void SwitchPartyOrderLinkMulti(u8 battlerId, u8 slot, u8 slot2) partyIds[j] = partyBattleOrder[i] & 0xF; } partyIdBuffer = partyIds[slot2]; - for (i = 0; i < PARTY_SIZE; ++i) + for (i = 0; i < PARTY_SIZE; i++) { if (partyIds[i] == slot) { @@ -6229,7 +6229,7 @@ static void UpdatePartyToBattleOrder(void) u8 i; memcpy(partyBuffer, gPlayerParty, sizeof(gPlayerParty)); - for (i = 0; i < PARTY_SIZE; ++i) + for (i = 0; i < PARTY_SIZE; i++) memcpy(&gPlayerParty[GetPartyIdFromBattlePartyId(i)], &partyBuffer[i], sizeof(struct Pokemon)); Free(partyBuffer); } @@ -6240,7 +6240,7 @@ static void UpdatePartyToFieldOrder(void) u8 i; memcpy(partyBuffer, gPlayerParty, sizeof(gPlayerParty)); - for (i = 0; i < PARTY_SIZE; ++i) + for (i = 0; i < PARTY_SIZE; i++) memcpy(&gPlayerParty[GetPartyIdFromBattleSlot(i)], &partyBuffer[i], sizeof(struct Pokemon)); Free(partyBuffer); } @@ -6252,7 +6252,7 @@ static void SwitchAliveMonIntoLeadSlot(void) struct Pokemon *mon; u8 partyId; - for (i = 1; i < PARTY_SIZE; ++i) + for (i = 1; i < PARTY_SIZE; i++) { mon = &gPlayerParty[GetPartyIdFromBattleSlot(i)]; if (GetMonData(mon, MON_DATA_SPECIES) != SPECIES_NONE && GetMonData(mon, MON_DATA_HP) != 0) @@ -6298,7 +6298,7 @@ static void Task_MultiPartnerPartySlideIn(u8 taskId) SlideMultiPartyMenuBoxSpritesOneStep(taskId); if (tXPos == 0) { - for (i = 3; i < PARTY_SIZE; ++i) + for (i = 3; i < PARTY_SIZE; i++) { if (gMultiPartnerParty[i - MULTI_PARTY_SIZE].species != SPECIES_NONE) AnimateSelectedPartyIcon(sPartyMenuBoxes[i].monSpriteId, 0); @@ -6329,7 +6329,7 @@ static void SlideMultiPartyMenuBoxSpritesOneStep(u8 taskId) s16 *data = gTasks[taskId].data; u8 i; - for (i = 3; i < PARTY_SIZE; ++i) + for (i = 3; i < PARTY_SIZE; i++) { if (gMultiPartnerParty[i - MULTI_PARTY_SIZE].species != SPECIES_NONE) { diff --git a/src/party_menu_specials.c b/src/party_menu_specials.c index aaa066980..73c02f85d 100644 --- a/src/party_menu_specials.c +++ b/src/party_menu_specials.c @@ -53,7 +53,7 @@ void GetNumMovesSelectedMonHas(void) u8 i; gSpecialVar_Result = 0; - for (i = 0; i < MAX_MON_MOVES; ++i) + for (i = 0; i < MAX_MON_MOVES; i++) if (GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_MOVE1 + i) != MOVE_NONE) ++gSpecialVar_Result; } @@ -95,7 +95,7 @@ void MoveDeleterForgetMove(void) SetMonMoveSlot(&gPlayerParty[gSpecialVar_0x8004], MOVE_NONE, gSpecialVar_0x8005); RemoveMonPPBonus(&gPlayerParty[gSpecialVar_0x8004], gSpecialVar_0x8005); - for (i = gSpecialVar_0x8005; i < MAX_MON_MOVES - 1; ++i) + for (i = gSpecialVar_0x8005; i < MAX_MON_MOVES - 1; i++) ShiftMoveSlot(&gPlayerParty[gSpecialVar_0x8004], i, i + 1); } diff --git a/src/pokedex_screen.c b/src/pokedex_screen.c index 764d3c770..17f29ac13 100644 --- a/src/pokedex_screen.c +++ b/src/pokedex_screen.c @@ -797,7 +797,7 @@ const u8 (*const sCategoryPageIconCoords[])[4] = { sPageIconCoords_4Mons, }; -static const u8 * const sDexCategoryNamePtrs[] = { +static const u8 *const sDexCategoryNamePtrs[] = { gText_DexCategory_GrasslandPkmn, gText_DexCategory_ForestPkmn, gText_DexCategory_WatersEdgePkmn, diff --git a/src/pokemon.c b/src/pokemon.c index e2bfb20cf..3191f6749 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -1856,7 +1856,7 @@ void CreateMonWithGenderNatureLetter(struct Pokemon *mon, u16 species, u8 level, { u32 personality; - if ((u8)(unownLetter - 1) < 28) + if ((u8)(unownLetter - 1) < NUM_UNOWN_FORMS) { u16 actualLetter; @@ -3919,7 +3919,7 @@ static void CopyPlayerPartyMonToBattleData(u8 battlerId, u8 partyIndex) *hpSwitchout = gBattleMons[battlerId].hp; for (i = 0; i < 8; i++) - gBattleMons[battlerId].statStages[i] = 6; + gBattleMons[battlerId].statStages[i] = DEFAULT_STAT_STAGE; gBattleMons[battlerId].status2 = 0; UpdateSentPokesToOpponentValue(battlerId); @@ -6095,10 +6095,10 @@ static void OakSpeechNidoranFSetupTemplate(struct OakSpeechNidoranFStruct *struc if (battlePosition > 3) { - for (i = 0; i < (s8)structPtr->spriteCount; ++i) + for (i = 0; i < (s8)structPtr->spriteCount; i++) { structPtr->templates[i] = gSpriteTemplates_Battlers[i]; - for (j = 0; j < structPtr->frameCount; ++j) + for (j = 0; j < structPtr->frameCount; j++) structPtr->frameImages[i * structPtr->frameCount + j].data = &structPtr->bufferPtrs[i][j * 0x800]; structPtr->templates[i].images = &structPtr->frameImages[i * structPtr->frameCount]; } @@ -6108,7 +6108,7 @@ static void OakSpeechNidoranFSetupTemplate(struct OakSpeechNidoranFStruct *struc const struct SpriteTemplate *template = &gSpriteTemplates_Battlers[battlePosition]; structPtr->templates[0] = *template; - for (j = 0; j < structPtr->frameCount; ++j) + for (j = 0; j < structPtr->frameCount; j++) structPtr->frameImages[j].data = &structPtr->bufferPtrs[0][j * 0x800]; structPtr->templates[0].images = structPtr->frameImages; } @@ -6119,10 +6119,10 @@ static void OakSpeechNidoranFSetupTemplateDummy(struct OakSpeechNidoranFStruct * { u16 i, j; - for (i = 0; i < (s8)structPtr->spriteCount; ++i) + for (i = 0; i < (s8)structPtr->spriteCount; i++) { structPtr->templates[i] = sOakSpeechNidoranFDummyTemplate; - for (j = 0; j < structPtr->frameCount; ++j) + for (j = 0; j < structPtr->frameCount; j++) structPtr->frameImages[i * structPtr->spriteCount + j].data = &structPtr->bufferPtrs[i][j * 0x800]; structPtr->templates[i].images = &structPtr->frameImages[i * structPtr->spriteCount]; // should be frameCount logically structPtr->templates[i].anims = gSpriteAnimTable_82349BC; @@ -6187,7 +6187,7 @@ struct OakSpeechNidoranFStruct *OakSpeechNidoranFSetup(u8 battlePosition, bool8 { do { - for (i = 0; i < (s8)sOakSpeechNidoranResources->spriteCount; ++i) + for (i = 0; i < (s8)sOakSpeechNidoranResources->spriteCount; i++) sOakSpeechNidoranResources->bufferPtrs[i] = &sOakSpeechNidoranResources->dataBuffer[sOakSpeechNidoranResources->sizePerSprite * i]; } while (0); } @@ -6199,7 +6199,7 @@ struct OakSpeechNidoranFStruct *OakSpeechNidoranFSetup(u8 battlePosition, bool8 } else { - for (i = 0; i < sOakSpeechNidoranResources->frameCount * sOakSpeechNidoranResources->spriteCount; ++i) + for (i = 0; i < sOakSpeechNidoranResources->frameCount * sOakSpeechNidoranResources->spriteCount; i++) sOakSpeechNidoranResources->frameImages[i].size = 0x800; switch (sOakSpeechNidoranResources->enable2) { diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index fa3731083..0b510f5e8 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -626,14 +626,14 @@ static const u32 sBgTilemap_MovesPage[] = INCBIN_U32( "graphics/interface/pokesu #include "data/text/nature_names.h" -static const u8 * const sEggHatchTimeTexts[] = { +static const u8 *const sEggHatchTimeTexts[] = { gText_PokeSum_EggHatch_LongTime, gText_PokeSum_EggHatch_SomeTime, gText_PokeSum_EggHatch_Soon, gText_PokeSum_EggHatch_AlmostReady }; -static const u8 * const sEggOriginTexts[] = { +static const u8 *const sEggOriginTexts[] = { gText_PokeSum_EggOrigin_DayCare, gText_PokeSum_EggOrigin_Trade, gText_PokeSum_EggOrigin_TravelingMan, diff --git a/src/psychic.c b/src/psychic.c index 1c31bfdca..f7efd9e60 100644 --- a/src/psychic.c +++ b/src/psychic.c @@ -756,7 +756,7 @@ static void sub_80B3618(u8 taskId) SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(task->data[3], task->data[4])); if (++task->data[1] == 32) { - for (i = 8; i < 13; ++i) + for (i = 8; i < 13; i++) if (task->data[i] != 64) DestroySprite(&gSprites[task->data[i]]); ++task->data[0]; @@ -923,7 +923,7 @@ void AnimTask_ExtrasensoryDistortion(u8 taskId) task->data[10] = gBattle_BG2_X; scanlineParams.dmaDest = ®_BG2HOFS; } - for (i = task->data[14]; i <= task->data[14] + 64; ++i) + for (i = task->data[14]; i <= task->data[14] + 64; i++) { gScanlineEffectRegBuffers[0][i] = task->data[10]; gScanlineEffectRegBuffers[1][i] = task->data[10]; @@ -944,7 +944,7 @@ static void sub_80B3B78(u8 taskId) { case 0: sineIndex = task->data[13]; - for (i = task->data[14]; i <= task->data[15]; ++i) + for (i = task->data[14]; i <= task->data[15]; i++) { s16 var2 = (gSineTable[sineIndex] >> task->data[12]); diff --git a/src/rom_header_gf.c b/src/rom_header_gf.c index 9b7975c72..ee6dffcbd 100644 --- a/src/rom_header_gf.c +++ b/src/rom_header_gf.c @@ -16,7 +16,7 @@ struct GFRomHeader const struct CompressedSpriteSheet * monBackPics; const struct CompressedSpritePalette * monNormalPalettes; const struct CompressedSpritePalette * monShinyPalettes; - const u8 * const * monIcons; + const u8 *const * monIcons; const u8 * monIconPaletteIds; const struct SpritePalette * monIconPalettes; const u8 (* monSpeciesNames)[]; @@ -63,7 +63,7 @@ struct GFRomHeader u32 unk18; const struct BaseStats * baseStats; const u8 (* abilityNames)[]; - const u8 * const * abilityDescriptions; + const u8 *const * abilityDescriptions; const struct Item * items; const struct BattleMove * moves; const struct CompressedSpriteSheet * ballGfx; diff --git a/src/teachy_tv.c b/src/teachy_tv.c index b3985d676..94cde88e7 100644 --- a/src/teachy_tv.c +++ b/src/teachy_tv.c @@ -1320,9 +1320,9 @@ static void TeachyTvComputeSingleMapTileBlockFromTilesetAndMetaTiles(u8 *blockBu CpuFastCopy(tileset, buffer, 0x20); if (metaTile & 1) { - for (i = 0; i < 8; ++i) + for (i = 0; i < 8; i++) { - for (j = 0; j < 4; ++j) + for (j = 0; j < 4; j++) { u32 offset = j - 3; u8 value = buffer[(i << 2) - offset]; @@ -1333,11 +1333,11 @@ static void TeachyTvComputeSingleMapTileBlockFromTilesetAndMetaTiles(u8 *blockBu } if (metaTile & 2) { - for (i = 0; i < 8; ++i) + for (i = 0; i < 8; i++) memcpy(&src[4 * i], &buffer[4 * (7 - i)], 4); CpuFastCopy(src, buffer, 0x20); } - for (i = 0; i < 32; ++i) + for (i = 0; i < 32; i++) { if (buffer[i] & 0xF0) blockBuf[i] = (blockBuf[i] & 0xF) + (buffer[i] & 0xF0); diff --git a/src/text.c b/src/text.c index 15487a889..3ee08bb2a 100644 --- a/src/text.c +++ b/src/text.c @@ -993,7 +993,7 @@ s32 (*GetFontWidthFunc(u8 glyphId))(u16 _glyphId, bool32 _isJapanese) { u32 i; - for (i = 0; i < 7; ++i) + for (i = 0; i < 7; i++) { if (glyphId == sGlyphWidthFuncs[i].fontId) return *sGlyphWidthFuncs[i].func; diff --git a/src/text_printer.c b/src/text_printer.c index 329463859..d4267f8f5 100644 --- a/src/text_printer.c +++ b/src/text_printer.c @@ -79,7 +79,7 @@ bool16 AddTextPrinter(struct TextPrinterTemplate *textSubPrinter, u8 speed, void sTempTextPrinter.delayCounter = 0; sTempTextPrinter.scrollDistance = 0; - for (i = 0; i < 7; ++i) + for (i = 0; i < 7; i++) { sTempTextPrinter.subUnion.fields[i] = 0; } @@ -98,7 +98,7 @@ bool16 AddTextPrinter(struct TextPrinterTemplate *textSubPrinter, u8 speed, void else { sTempTextPrinter.textSpeed = 0; - for (j = 0; j < 0x400; ++j) + for (j = 0; j < 0x400; j++) { if ((u32)RenderFont(&sTempTextPrinter) == 1) break; @@ -116,7 +116,7 @@ void RunTextPrinters(void) int i; u16 temp; - for (i = 0; i < 0x20; ++i) + for (i = 0; i < 0x20; i++) { if (sTextPrinters[i].active != 0) { diff --git a/src/window.c b/src/window.c index 1b1d347a0..4dfb6e6e8 100644 --- a/src/window.c +++ b/src/window.c @@ -25,7 +25,7 @@ bool16 InitWindows(const struct WindowTemplate *templates) u8 *allocatedTilemapBuffer; int allocatedBaseBlock; - for (i = 0; i < 4; ++i) + for (i = 0; i < 4; i++) { bgTilemapBuffer = GetBgTilemapBuffer(i); if (bgTilemapBuffer != NULL) @@ -34,7 +34,7 @@ bool16 InitWindows(const struct WindowTemplate *templates) gWindowBgTilemapBuffers[i] = bgTilemapBuffer; } - for (i = 0; i < WINDOWS_MAX; ++i) + for (i = 0; i < WINDOWS_MAX; i++) { gWindows[i].window = sDummyWindowTemplate; gWindows[i].tileData = NULL; @@ -63,7 +63,7 @@ bool16 InitWindows(const struct WindowTemplate *templates) return FALSE; } - for (j = 0; j < bgSize; ++j) + for (j = 0; j < bgSize; j++) allocatedTilemapBuffer[j] = 0; gWindowBgTilemapBuffers[bgLayer] = allocatedTilemapBuffer; @@ -138,7 +138,7 @@ u16 AddWindow(const struct WindowTemplate *template) if (allocatedTilemapBuffer == NULL) return 0xFF; - for (i = 0; i < bgSize; ++i) + for (i = 0; i < bgSize; i++) allocatedTilemapBuffer[i] = 0; gWindowBgTilemapBuffers[bgLayer] = allocatedTilemapBuffer; @@ -201,7 +201,7 @@ void FreeAllWindowBuffers(void) { int i; - for (i = 0; i < 4; ++i) + for (i = 0; i < 4; i++) { if (gWindowBgTilemapBuffers[i] != NULL && gWindowBgTilemapBuffers[i] != nullsub_8) { @@ -210,7 +210,7 @@ void FreeAllWindowBuffers(void) } } - for (i = 0; i < WINDOWS_MAX; ++i) + for (i = 0; i < WINDOWS_MAX; i++) { if (gWindows[i].tileData != NULL) { @@ -261,7 +261,7 @@ void PutWindowRectTilemapOverridePalette(u8 windowId, u8 x, u8 y, u8 width, u8 h u16 currentRow = windowLocal.window.baseBlock + (y * windowLocal.window.width) + x + GetBgAttribute(windowLocal.window.bg, BG_ATTR_BASETILE); int i; - for (i = 0; i < height; ++i) + for (i = 0; i < height; i++) { WriteSequenceToBgTilemapBuffer( windowLocal.window.bg, @@ -297,7 +297,7 @@ void PutWindowRectTilemap(u8 windowId, u8 x, u8 y, u8 width, u8 height) u16 currentRow = windowLocal.window.baseBlock + (y * windowLocal.window.width) + x + GetBgAttribute(windowLocal.window.bg, BG_ATTR_BASETILE); int i; - for (i = 0; i < height; ++i) + for (i = 0; i < height; i++) { WriteSequenceToBgTilemapBuffer( windowLocal.window.bg, diff --git a/tools/jsonproc/inja.hpp b/tools/jsonproc/inja.hpp index d5bf5bcba..56e4027f8 100644 --- a/tools/jsonproc/inja.hpp +++ b/tools/jsonproc/inja.hpp @@ -2811,7 +2811,7 @@ class Renderer { if ((bc.flags & Bytecode::Flag::ValueMask) != Bytecode::Flag::ValuePop) { popArgs -= 1; } - for (unsigned int i = 0; i < popArgs; ++i) { + for (unsigned int i = 0; i < popArgs; i++) { m_stack.pop_back(); } } @@ -2925,7 +2925,7 @@ class Renderer { void render_to(std::ostream& os, const Template& tmpl, const json& data) { m_data = &data; - for (size_t i = 0; i < tmpl.bytecodes.size(); ++i) { + for (size_t i = 0; i < tmpl.bytecodes.size(); i++) { const auto& bc = tmpl.bytecodes[i]; switch (bc.op) { diff --git a/tools/jsonproc/nlohmann/json.hpp b/tools/jsonproc/nlohmann/json.hpp index 5003a4fa2..15ab684dd 100644 --- a/tools/jsonproc/nlohmann/json.hpp +++ b/tools/jsonproc/nlohmann/json.hpp @@ -1438,7 +1438,7 @@ auto from_json_array_impl(const BasicJsonType& j, std::array& arr, priority_tag<2> /*unused*/) -> decltype(j.template get(), void()) { - for (std::size_t i = 0; i < N; ++i) + for (std::size_t i = 0; i < N; i++) { arr[i] = j.at(i).template get(); } @@ -4301,7 +4301,7 @@ class binary_reader if (len != std::size_t(-1)) { - for (std::size_t i = 0; i < len; ++i) + for (std::size_t i = 0; i < len; i++) { if (JSON_UNLIKELY(not parse_cbor_internal())) { @@ -4338,7 +4338,7 @@ class binary_reader string_t key; if (len != std::size_t(-1)) { - for (std::size_t i = 0; i < len; ++i) + for (std::size_t i = 0; i < len; i++) { get(); if (JSON_UNLIKELY(not get_cbor_string(key) or not sax->key(key))) @@ -4832,7 +4832,7 @@ class binary_reader return false; } - for (std::size_t i = 0; i < len; ++i) + for (std::size_t i = 0; i < len; i++) { if (JSON_UNLIKELY(not parse_msgpack_internal())) { @@ -4855,7 +4855,7 @@ class binary_reader } string_t key; - for (std::size_t i = 0; i < len; ++i) + for (std::size_t i = 0; i < len; i++) { get(); if (JSON_UNLIKELY(not get_msgpack_string(key) or not sax->key(key))) @@ -5190,7 +5190,7 @@ class binary_reader { if (size_and_type.second != 'N') { - for (std::size_t i = 0; i < size_and_type.first; ++i) + for (std::size_t i = 0; i < size_and_type.first; i++) { if (JSON_UNLIKELY(not get_ubjson_value(size_and_type.second))) { @@ -5201,7 +5201,7 @@ class binary_reader } else { - for (std::size_t i = 0; i < size_and_type.first; ++i) + for (std::size_t i = 0; i < size_and_type.first; i++) { if (JSON_UNLIKELY(not parse_ubjson_internal())) { @@ -5251,7 +5251,7 @@ class binary_reader if (size_and_type.second != 0) { - for (std::size_t i = 0; i < size_and_type.first; ++i) + for (std::size_t i = 0; i < size_and_type.first; i++) { if (JSON_UNLIKELY(not get_ubjson_string(key) or not sax->key(key))) { @@ -5266,7 +5266,7 @@ class binary_reader } else { - for (std::size_t i = 0; i < size_and_type.first; ++i) + for (std::size_t i = 0; i < size_and_type.first; i++) { if (JSON_UNLIKELY(not get_ubjson_string(key) or not sax->key(key))) { @@ -5356,7 +5356,7 @@ class binary_reader { // step 1: read input into array with system's byte order std::array vec; - for (std::size_t i = 0; i < sizeof(NumberType); ++i) + for (std::size_t i = 0; i < sizeof(NumberType); i++) { get(); if (JSON_UNLIKELY(not unexpect_eof(format, "number"))) @@ -6705,7 +6705,7 @@ scan_number_done: token_type return_type) { assert(current == literal_text[0]); - for (std::size_t i = 1; i < length; ++i) + for (std::size_t i = 1; i < length; i++) { if (JSON_UNLIKELY(get() != literal_text[i])) { @@ -9235,7 +9235,7 @@ class json_pointer else { // iterate array and use index as reference string - for (std::size_t i = 0; i < value.m_value.array->size(); ++i) + for (std::size_t i = 0; i < value.m_value.array->size(); i++) { flatten(reference_string + "/" + std::to_string(i), value.m_value.array->operator[](i), result); @@ -12183,7 +12183,7 @@ class serializer // first n-1 elements for (auto i = val.m_value.array->cbegin(); - i != val.m_value.array->cend() - 1; ++i) + i != val.m_value.array->cend() - 1; i++) { o->write_characters(indent_string.c_str(), new_indent); dump(*i, true, ensure_ascii, indent_step, new_indent); @@ -12205,7 +12205,7 @@ class serializer // first n-1 elements for (auto i = val.m_value.array->cbegin(); - i != val.m_value.array->cend() - 1; ++i) + i != val.m_value.array->cend() - 1; i++) { dump(*i, false, ensure_ascii, indent_step, current_indent); o->write_character(','); @@ -12302,7 +12302,7 @@ class serializer std::size_t bytes_after_last_accept = 0; std::size_t undumped_chars = 0; - for (std::size_t i = 0; i < s.size(); ++i) + for (std::size_t i = 0; i < s.size(); i++) { const auto byte = static_cast(s[i]);