Use GetPartyBattlerData where appropiate (#6779)

This commit is contained in:
Eduardo Quezada 2025-05-06 11:13:50 -04:00 committed by GitHub
parent 76b9a6918e
commit 1f23fe0dd3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
27 changed files with 225 additions and 231 deletions

View File

@ -2379,11 +2379,11 @@ static bool32 ShouldUseItem(u32 battler)
switch (ItemId_GetBattleUsage(item))
{
case EFFECT_ITEM_HEAL_AND_CURE_STATUS:
healAmount = GetHPHealAmount(itemEffects[GetItemEffectParamOffset(battler, item, 4, ITEM4_HEAL_HP)], &gEnemyParty[gBattlerPartyIndexes[battler]]);
healAmount = GetHPHealAmount(itemEffects[GetItemEffectParamOffset(battler, item, 4, ITEM4_HEAL_HP)], GetPartyBattlerData(battler));
shouldUse = AI_ShouldHeal(battler, healAmount);
break;
case EFFECT_ITEM_RESTORE_HP:
healAmount = GetHPHealAmount(itemEffects[GetItemEffectParamOffset(battler, item, 4, ITEM4_HEAL_HP)], &gEnemyParty[gBattlerPartyIndexes[battler]]);
healAmount = GetHPHealAmount(itemEffects[GetItemEffectParamOffset(battler, item, 4, ITEM4_HEAL_HP)], GetPartyBattlerData(battler));
shouldUse = AI_ShouldHeal(battler, healAmount);
break;
case EFFECT_ITEM_CURE_STATUS:

View File

@ -2236,7 +2236,7 @@ static void Cmd_createdragondartsprite(void)
u8 argVar;
u8 argsCount;
s16 subpriority;
struct Pokemon *party = GetBattlerParty(gBattleAnimAttacker);
struct Pokemon *mon = GetPartyBattlerData(gBattleAnimAttacker);
sBattleAnimScriptPtr++;
@ -2253,10 +2253,10 @@ static void Cmd_createdragondartsprite(void)
subpriority = GetSubpriorityForMoveAnim(argVar);
if (GetMonData(&party[gBattlerPartyIndexes[gBattleAnimAttacker]], MON_DATA_SPECIES) == SPECIES_DRAGAPULT)
if (GetMonData(mon, MON_DATA_SPECIES) == SPECIES_DRAGAPULT)
{
template.tileTag = ANIM_TAG_DREEPY;
if (IsMonShiny(&party[gBattlerPartyIndexes[gBattleAnimAttacker]]) == TRUE)
if (IsMonShiny(mon) == TRUE)
template.paletteTag = ANIM_TAG_DREEPY_SHINY;
else
template.paletteTag = ANIM_TAG_DREEPY;

View File

@ -9281,8 +9281,8 @@ void AnimTask_GetWeatherToSet(u8 taskId)
void AnimTask_SyrupBomb(u8 taskId)
{
struct Pokemon *party = GetBattlerParty(gBattleAnimAttacker);
gBattleAnimArgs[0] = IsMonShiny(&party[gBattlerPartyIndexes[gBattleAnimAttacker]]);
struct Pokemon *mon = GetPartyBattlerData(gBattleAnimAttacker);
gBattleAnimArgs[0] = IsMonShiny(mon);
DestroyAnimVisualTask(taskId);
}

View File

@ -198,14 +198,14 @@ static void Intro_TryShinyAnimShowHealthbox(u32 battler)
&& !gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim
&& !gBattleSpritesDataPtr->healthBoxesData[battler].finishedShinyMonAnim)
{
TryShinyAnimation(battler, &gEnemyParty[gBattlerPartyIndexes[battler]]);
TryShinyAnimation(battler, GetPartyBattlerData(battler));
}
if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI)
&& !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(battler)].ballAnimActive
&& !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(battler)].triedShinyMonAnim
&& !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(battler)].finishedShinyMonAnim)
{
TryShinyAnimation(BATTLE_PARTNER(battler), &gEnemyParty[gBattlerPartyIndexes[BATTLE_PARTNER(battler)]]);
TryShinyAnimation(BATTLE_PARTNER(battler), GetPartyBattlerData(BATTLE_PARTNER(battler)));
}
if (!gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(battler)].ballAnimActive)
@ -214,11 +214,11 @@ static void Intro_TryShinyAnimShowHealthbox(u32 battler)
{
if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
UpdateHealthboxAttribute(gHealthboxSpriteIds[BATTLE_PARTNER(battler)], &gEnemyParty[gBattlerPartyIndexes[BATTLE_PARTNER(battler)]], HEALTHBOX_ALL);
UpdateHealthboxAttribute(gHealthboxSpriteIds[BATTLE_PARTNER(battler)], GetPartyBattlerData(BATTLE_PARTNER(battler)), HEALTHBOX_ALL);
StartHealthboxSlideIn(BATTLE_PARTNER(battler));
SetHealthboxSpriteVisible(gHealthboxSpriteIds[BATTLE_PARTNER(battler)]);
}
UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &gEnemyParty[gBattlerPartyIndexes[battler]], HEALTHBOX_ALL);
UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], GetPartyBattlerData(battler), HEALTHBOX_ALL);
StartHealthboxSlideIn(battler);
SetHealthboxSpriteVisible(gHealthboxSpriteIds[battler]);
}
@ -262,12 +262,12 @@ static void Intro_TryShinyAnimShowHealthbox(u32 battler)
if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
DestroySprite(&gSprites[gBattleControllerData[BATTLE_PARTNER(battler)]]);
SetBattlerShadowSpriteCallback(BATTLE_PARTNER(battler), GetMonData(&gEnemyParty[gBattlerPartyIndexes[BATTLE_PARTNER(battler)]], MON_DATA_SPECIES));
SetBattlerShadowSpriteCallback(BATTLE_PARTNER(battler), GetMonData(GetPartyBattlerData(BATTLE_PARTNER(battler)), MON_DATA_SPECIES));
}
DestroySprite(&gSprites[gBattleControllerData[battler]]);
SetBattlerShadowSpriteCallback(battler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES));
SetBattlerShadowSpriteCallback(battler, GetMonData(GetPartyBattlerData(battler), MON_DATA_SPECIES));
gBattleSpritesDataPtr->animationData->introAnimActive = FALSE;
gBattleSpritesDataPtr->healthBoxesData[battler].bgmRestored = FALSE;
@ -285,7 +285,7 @@ static void TryShinyAnimAfterMonAnim(u32 battler)
{
if (!gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim)
{
TryShinyAnimation(battler, &gEnemyParty[gBattlerPartyIndexes[battler]]);
TryShinyAnimation(battler, GetPartyBattlerData(battler));
}
else if (gBattleSpritesDataPtr->healthBoxesData[battler].finishedShinyMonAnim)
{
@ -335,7 +335,7 @@ static void SwitchIn_ShowHealthbox(u32 battler)
StartSpriteAnim(&gSprites[gBattlerSpriteIds[battler]], 0);
UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &gEnemyParty[gBattlerPartyIndexes[battler]], HEALTHBOX_ALL);
UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], GetPartyBattlerData(battler), HEALTHBOX_ALL);
StartHealthboxSlideIn(battler);
SetHealthboxSpriteVisible(gHealthboxSpriteIds[battler]);
CopyBattleSpriteInvisibility(battler);
@ -348,14 +348,14 @@ static void SwitchIn_TryShinyAnim(u32 battler)
if (!gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive
&& !gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim)
{
TryShinyAnimation(battler, &gEnemyParty[gBattlerPartyIndexes[battler]]);
TryShinyAnimation(battler, GetPartyBattlerData(battler));
}
if (gSprites[gBattleControllerData[battler]].callback == SpriteCallbackDummy
&& !gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive)
{
DestroySprite(&gSprites[gBattleControllerData[battler]]);
SetBattlerShadowSpriteCallback(battler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES));
SetBattlerShadowSpriteCallback(battler, GetMonData(GetPartyBattlerData(battler), MON_DATA_SPECIES));
gBattlerControllerFuncs[battler] = SwitchIn_ShowHealthbox;
}
}

View File

@ -160,9 +160,9 @@ static void SwitchIn_ShowHealthbox(u32 battler)
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
CreateTask(Task_PlayerController_RestoreBgmAfterCry, 10);
HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[battler]], battler);
HandleLowHpMusicChange(GetPartyBattlerData(battler), battler);
StartSpriteAnim(&gSprites[gBattlerSpriteIds[battler]], 0);
UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &gPlayerParty[gBattlerPartyIndexes[battler]], HEALTHBOX_ALL);
UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], GetPartyBattlerData(battler), HEALTHBOX_ALL);
StartHealthboxSlideIn(battler);
SetHealthboxSpriteVisible(gHealthboxSpriteIds[battler]);
@ -175,7 +175,7 @@ static void SwitchIn_TryShinyAnim(u32 battler)
if (!gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim
&& !gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive)
{
TryShinyAnimation(battler, &gPlayerParty[gBattlerPartyIndexes[battler]]);
TryShinyAnimation(battler, GetPartyBattlerData(battler));
}
if (gSprites[gBattleControllerData[battler]].callback == SpriteCallbackDummy

View File

@ -220,7 +220,7 @@ static void TrySetBattlerShadowSpriteCallback(u32 battler)
|| P_GBA_STYLE_SPECIES_GFX == TRUE
|| gSprites[gBattleSpritesDataPtr->healthBoxesData[battler].shadowSpriteIdSecondary].callback == SpriteCallbackDummy)
{
SetBattlerShadowSpriteCallback(battler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES));
SetBattlerShadowSpriteCallback(battler, GetMonData(GetPartyBattlerData(battler), MON_DATA_SPECIES));
}
}
}
@ -234,7 +234,7 @@ static void Intro_TryShinyAnimShowHealthbox(u32 battler)
if (!gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim
&& !gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive
&& !gBattleSpritesDataPtr->healthBoxesData[battler].finishedShinyMonAnim)
TryShinyAnimation(battler, &gEnemyParty[gBattlerPartyIndexes[battler]]);
TryShinyAnimation(battler, GetPartyBattlerData(battler));
twoMons = TwoOpponentIntroMons(battler);
if (!(gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS)
@ -243,7 +243,7 @@ static void Intro_TryShinyAnimShowHealthbox(u32 battler)
&& !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(battler)].triedShinyMonAnim
&& !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(battler)].ballAnimActive
&& !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(battler)].finishedShinyMonAnim)
TryShinyAnimation(BATTLE_PARTNER(battler), &gEnemyParty[gBattlerPartyIndexes[BATTLE_PARTNER(battler)]]);
TryShinyAnimation(BATTLE_PARTNER(battler), GetPartyBattlerData(BATTLE_PARTNER(battler)));
if (!gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(battler)].ballAnimActive)
{
@ -251,11 +251,11 @@ static void Intro_TryShinyAnimShowHealthbox(u32 battler)
{
if (twoMons && (!(gBattleTypeFlags & BATTLE_TYPE_MULTI) || BATTLE_TWO_VS_ONE_OPPONENT))
{
UpdateHealthboxAttribute(gHealthboxSpriteIds[BATTLE_PARTNER(battler)], &gEnemyParty[gBattlerPartyIndexes[BATTLE_PARTNER(battler)]], HEALTHBOX_ALL);
UpdateHealthboxAttribute(gHealthboxSpriteIds[BATTLE_PARTNER(battler)], GetPartyBattlerData(BATTLE_PARTNER(battler)), HEALTHBOX_ALL);
StartHealthboxSlideIn(BATTLE_PARTNER(battler));
SetHealthboxSpriteVisible(gHealthboxSpriteIds[BATTLE_PARTNER(battler)]);
}
UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &gEnemyParty[gBattlerPartyIndexes[battler]], HEALTHBOX_ALL);
UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], GetPartyBattlerData(battler), HEALTHBOX_ALL);
StartHealthboxSlideIn(battler);
SetHealthboxSpriteVisible(gHealthboxSpriteIds[battler]);
}
@ -328,7 +328,7 @@ static void TryShinyAnimAfterMonAnim(u32 battler)
if (gSprites[gBattlerSpriteIds[battler]].x2 == 0
&& !gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim
&& !gBattleSpritesDataPtr->healthBoxesData[battler].finishedShinyMonAnim)
TryShinyAnimation(battler, &gEnemyParty[gBattlerPartyIndexes[battler]]);
TryShinyAnimation(battler, GetPartyBattlerData(battler));
if (gSprites[gBattlerSpriteIds[battler]].callback == SpriteCallbackDummy
&& gBattleSpritesDataPtr->healthBoxesData[battler].finishedShinyMonAnim)
@ -374,7 +374,7 @@ static void SwitchIn_ShowHealthbox(u32 battler)
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
StartSpriteAnim(&gSprites[gBattlerSpriteIds[battler]], 0);
UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &gEnemyParty[gBattlerPartyIndexes[battler]], HEALTHBOX_ALL);
UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], GetPartyBattlerData(battler), HEALTHBOX_ALL);
StartHealthboxSlideIn(battler);
SetHealthboxSpriteVisible(gHealthboxSpriteIds[battler]);
CopyBattleSpriteInvisibility(battler);
@ -386,13 +386,13 @@ static void SwitchIn_TryShinyAnim(u32 battler)
{
if (!gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim
&& !gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive)
TryShinyAnimation(battler, &gEnemyParty[gBattlerPartyIndexes[battler]]);
TryShinyAnimation(battler, GetPartyBattlerData(battler));
if (gSprites[gBattleControllerData[battler]].callback == SpriteCallbackDummy
&& !gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive)
{
DestroySprite(&gSprites[gBattleControllerData[battler]]);
SetBattlerShadowSpriteCallback(battler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES));
SetBattlerShadowSpriteCallback(battler, GetMonData(GetPartyBattlerData(battler), MON_DATA_SPECIES));
gBattlerControllerFuncs[battler] = SwitchIn_ShowHealthbox;
}
}

View File

@ -429,7 +429,7 @@ void HandleInputChooseTarget(u32 battler)
{
s32 i;
static const u8 identities[MAX_BATTLERS_COUNT] = {B_POSITION_PLAYER_LEFT, B_POSITION_PLAYER_RIGHT, B_POSITION_OPPONENT_RIGHT, B_POSITION_OPPONENT_LEFT};
u16 move = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_MOVE1 + gMoveSelectionCursor[battler]);
u16 move = GetMonData(GetPartyBattlerData(battler), MON_DATA_MOVE1 + gMoveSelectionCursor[battler]);
u16 moveTarget = GetBattlerMoveTargetType(battler, move);
DoBounceEffect(gMultiUsePlayerCursor, BOUNCE_HEALTHBOX, 15, 1);
@ -1037,11 +1037,11 @@ void HandleMoveSwitching(u32 battler)
{
for (i = 0; i < MAX_MON_MOVES; i++)
{
moveStruct.moves[i] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_MOVE1 + i);
moveStruct.currentPp[i] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_PP1 + i);
moveStruct.moves[i] = GetMonData(GetPartyBattlerData(battler), MON_DATA_MOVE1 + i);
moveStruct.currentPp[i] = GetMonData(GetPartyBattlerData(battler), MON_DATA_PP1 + i);
}
totalPPBonuses = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_PP_BONUSES);
totalPPBonuses = GetMonData(GetPartyBattlerData(battler), MON_DATA_PP_BONUSES);
for (i = 0; i < MAX_MON_MOVES; i++)
perMovePPBonuses[i] = (totalPPBonuses & (3 << (i * 2))) >> (i * 2);
@ -1063,11 +1063,11 @@ void HandleMoveSwitching(u32 battler)
for (i = 0; i < MAX_MON_MOVES; i++)
{
SetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_MOVE1 + i, &moveStruct.moves[i]);
SetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_PP1 + i, &moveStruct.currentPp[i]);
SetMonData(GetPartyBattlerData(battler), MON_DATA_MOVE1 + i, &moveStruct.moves[i]);
SetMonData(GetPartyBattlerData(battler), MON_DATA_PP1 + i, &moveStruct.currentPp[i]);
}
SetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_PP_BONUSES, &totalPPBonuses);
SetMonData(GetPartyBattlerData(battler), MON_DATA_PP_BONUSES, &totalPPBonuses);
}
}
@ -1264,10 +1264,10 @@ static void Intro_WaitForShinyAnimAndHealthbox(u32 battler)
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[battler]], battler);
HandleLowHpMusicChange(GetPartyBattlerData(battler), battler);
if (TwoPlayerIntroMons(battler))
HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[BATTLE_PARTNER(battler)]], BATTLE_PARTNER(battler));
HandleLowHpMusicChange(GetPartyBattlerData(BATTLE_PARTNER(battler)), BATTLE_PARTNER(battler));
gBattleSpritesDataPtr->healthBoxesData[battler].introEndDelay = 3;
gBattlerControllerFuncs[battler] = Intro_DelayAndEnd;
@ -1282,12 +1282,12 @@ static void Intro_TryShinyAnimShowHealthbox(u32 battler)
// Start shiny animation if applicable for 1st Pokémon
if (!gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim
&& !gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive)
TryShinyAnimation(battler, &gPlayerParty[gBattlerPartyIndexes[battler]]);
TryShinyAnimation(battler, GetPartyBattlerData(battler));
// Start shiny animation if applicable for 2nd Pokémon
if (!gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(battler)].triedShinyMonAnim
&& !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(battler)].ballAnimActive)
TryShinyAnimation(BATTLE_PARTNER(battler), &gPlayerParty[gBattlerPartyIndexes[BATTLE_PARTNER(battler)]]);
TryShinyAnimation(BATTLE_PARTNER(battler), GetPartyBattlerData(BATTLE_PARTNER(battler)));
// Show healthbox after ball anim
if (!gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive
@ -1297,11 +1297,11 @@ static void Intro_TryShinyAnimShowHealthbox(u32 battler)
{
if (TwoPlayerIntroMons(battler) && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
UpdateHealthboxAttribute(gHealthboxSpriteIds[BATTLE_PARTNER(battler)], &gPlayerParty[gBattlerPartyIndexes[BATTLE_PARTNER(battler)]], HEALTHBOX_ALL);
UpdateHealthboxAttribute(gHealthboxSpriteIds[BATTLE_PARTNER(battler)], GetPartyBattlerData(BATTLE_PARTNER(battler)), HEALTHBOX_ALL);
StartHealthboxSlideIn(BATTLE_PARTNER(battler));
SetHealthboxSpriteVisible(gHealthboxSpriteIds[BATTLE_PARTNER(battler)]);
}
UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &gPlayerParty[gBattlerPartyIndexes[battler]], HEALTHBOX_ALL);
UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], GetPartyBattlerData(battler), HEALTHBOX_ALL);
StartHealthboxSlideIn(battler);
SetHealthboxSpriteVisible(gHealthboxSpriteIds[battler]);
}
@ -1388,7 +1388,7 @@ static void SwitchIn_HandleSoundAndEnd(u32 battler)
&& !IsCryPlayingOrClearCrySongs())
{
m4aMPlayVolumeControl(&gMPlayInfo_BGM, TRACKS_ALL, 0x100);
HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[battler]], battler);
HandleLowHpMusicChange(GetPartyBattlerData(battler), battler);
PlayerBufferExecCompleted(battler);
}
}
@ -1398,14 +1398,14 @@ static void SwitchIn_TryShinyAnimShowHealthbox(u32 battler)
// Start shiny animation if applicable
if (!gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim
&& !gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive)
TryShinyAnimation(battler, &gPlayerParty[gBattlerPartyIndexes[battler]]);
TryShinyAnimation(battler, GetPartyBattlerData(battler));
// Wait for ball anim, then show healthbox
if (gSprites[gBattleControllerData[battler]].callback == SpriteCallbackDummy
&& !gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive)
{
DestroySprite(&gSprites[gBattleControllerData[battler]]);
UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &gPlayerParty[gBattlerPartyIndexes[battler]], HEALTHBOX_ALL);
UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], GetPartyBattlerData(battler), HEALTHBOX_ALL);
StartHealthboxSlideIn(battler);
SetHealthboxSpriteVisible(gHealthboxSpriteIds[battler]);
gBattlerControllerFuncs[battler] = SwitchIn_CleanShinyAnimShowSubstitute;
@ -1768,7 +1768,7 @@ static void MoveSelectionDisplayMoveType(u32 battler)
}
else if (P_SHOW_DYNAMIC_TYPES) // Non-vanilla changes to battle UI showing dynamic types
{
struct Pokemon *mon = &gPlayerParty[gBattlerPartyIndexes[battler]];
struct Pokemon *mon = GetPartyBattlerData(battler);
type = CheckDynamicMoveType(mon, move, battler);
}
end = StringCopy(txtPtr, gTypesInfo[type].name);
@ -1892,7 +1892,7 @@ static void PrintLinkStandbyMsg(void)
static void PlayerHandleLoadMonSprite(u32 battler)
{
BattleLoadMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[battler]], battler);
BattleLoadMonSpriteGfx(GetPartyBattlerData(battler), battler);
gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler;
gBattlerControllerFuncs[battler] = CompleteOnBattlerSpritePosX_0;
}
@ -2276,9 +2276,9 @@ void PlayerHandleExpUpdate(u32 battler)
static void PlayerHandleStatusXor(u32 battler)
{
u32 val = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_STATUS) ^ gBattleResources->bufferA[battler][1];
u32 val = GetMonData(GetPartyBattlerData(battler), MON_DATA_STATUS) ^ gBattleResources->bufferA[battler][1];
SetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_STATUS, &val);
SetMonData(GetPartyBattlerData(battler), MON_DATA_STATUS, &val);
PlayerBufferExecCompleted(battler);
}
@ -2449,7 +2449,7 @@ static bool32 ShouldShowTypeEffectiveness(u32 targetId)
static u32 CheckTypeEffectiveness(u32 targetId, u32 battler)
{
struct ChooseMoveStruct *moveInfo = (struct ChooseMoveStruct *)(&gBattleResources->bufferA[battler][4]);
struct Pokemon *mon = &gPlayerParty[gBattlerPartyIndexes[battler]];
struct Pokemon *mon = GetPartyBattlerData(battler);
u32 move = moveInfo->moves[gMoveSelectionCursor[battler]];
u32 moveType = CheckDynamicMoveType(mon, move, battler);
uq4_12_t modifier = CalcTypeEffectivenessMultiplier(move, moveType, battler, targetId, GetBattlerAbility(targetId), FALSE);

View File

@ -173,18 +173,18 @@ void Controller_PlayerPartnerShowIntroHealthbox(u32 battler)
&& ++gBattleSpritesDataPtr->healthBoxesData[battler].introEndDelay != 1)
{
gBattleSpritesDataPtr->healthBoxesData[battler].introEndDelay = 0;
TryShinyAnimation(battler, &gPlayerParty[gBattlerPartyIndexes[battler]]);
TryShinyAnimation(battler, GetPartyBattlerData(battler));
if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
DestroySprite(&gSprites[gBattleControllerData[BATTLE_PARTNER(battler)]]);
UpdateHealthboxAttribute(gHealthboxSpriteIds[BATTLE_PARTNER(battler)], &gPlayerParty[gBattlerPartyIndexes[BATTLE_PARTNER(battler)]], HEALTHBOX_ALL);
UpdateHealthboxAttribute(gHealthboxSpriteIds[BATTLE_PARTNER(battler)], GetPartyBattlerData(BATTLE_PARTNER(battler)), HEALTHBOX_ALL);
StartHealthboxSlideIn(BATTLE_PARTNER(battler));
SetHealthboxSpriteVisible(gHealthboxSpriteIds[BATTLE_PARTNER(battler)]);
}
DestroySprite(&gSprites[gBattleControllerData[battler]]);
UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &gPlayerParty[gBattlerPartyIndexes[battler]], HEALTHBOX_ALL);
UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], GetPartyBattlerData(battler), HEALTHBOX_ALL);
StartHealthboxSlideIn(battler);
SetHealthboxSpriteVisible(gHealthboxSpriteIds[battler]);
@ -232,9 +232,9 @@ static void SwitchIn_ShowHealthbox(u32 battler)
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
CreateTask(Task_PlayerController_RestoreBgmAfterCry, 10);
HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[battler]], battler);
HandleLowHpMusicChange(GetPartyBattlerData(battler), battler);
StartSpriteAnim(&gSprites[gBattlerSpriteIds[battler]], 0);
UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &gPlayerParty[gBattlerPartyIndexes[battler]], HEALTHBOX_ALL);
UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], GetPartyBattlerData(battler), HEALTHBOX_ALL);
StartHealthboxSlideIn(battler);
SetHealthboxSpriteVisible(gHealthboxSpriteIds[battler]);
@ -247,7 +247,7 @@ static void SwitchIn_TryShinyAnim(u32 battler)
if (!gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim
&& !gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive)
{
TryShinyAnimation(battler, &gPlayerParty[gBattlerPartyIndexes[battler]]);
TryShinyAnimation(battler, GetPartyBattlerData(battler));
}
if (gSprites[gBattleControllerData[battler]].callback == SpriteCallbackDummy

View File

@ -205,7 +205,7 @@ static void TrySetBattlerShadowSpriteCallback(u32 battler)
|| P_GBA_STYLE_SPECIES_GFX == TRUE
|| gSprites[gBattleSpritesDataPtr->healthBoxesData[battler].shadowSpriteIdSecondary].callback == SpriteCallbackDummy)
{
SetBattlerShadowSpriteCallback(battler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES));
SetBattlerShadowSpriteCallback(battler, GetMonData(GetPartyBattlerData(battler), MON_DATA_SPECIES));
}
}
}
@ -217,11 +217,11 @@ static void Intro_TryShinyAnimShowHealthbox(u32 battler)
if (!gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim
&& !gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive)
TryShinyAnimation(battler, &gEnemyParty[gBattlerPartyIndexes[battler]]);
TryShinyAnimation(battler, GetPartyBattlerData(battler));
if (!gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(battler)].triedShinyMonAnim
&& !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(battler)].ballAnimActive)
TryShinyAnimation(BATTLE_PARTNER(battler), &gEnemyParty[gBattlerPartyIndexes[BATTLE_PARTNER(battler)]]);
TryShinyAnimation(BATTLE_PARTNER(battler), GetPartyBattlerData(BATTLE_PARTNER(battler)));
if (!gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(battler)].ballAnimActive)
{
@ -229,11 +229,11 @@ static void Intro_TryShinyAnimShowHealthbox(u32 battler)
{
if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
UpdateHealthboxAttribute(gHealthboxSpriteIds[BATTLE_PARTNER(battler)], &gEnemyParty[gBattlerPartyIndexes[BATTLE_PARTNER(battler)]], HEALTHBOX_ALL);
UpdateHealthboxAttribute(gHealthboxSpriteIds[BATTLE_PARTNER(battler)], GetPartyBattlerData(BATTLE_PARTNER(battler)), HEALTHBOX_ALL);
StartHealthboxSlideIn(BATTLE_PARTNER(battler));
SetHealthboxSpriteVisible(gHealthboxSpriteIds[BATTLE_PARTNER(battler)]);
}
UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &gEnemyParty[gBattlerPartyIndexes[battler]], HEALTHBOX_ALL);
UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], GetPartyBattlerData(battler), HEALTHBOX_ALL);
StartHealthboxSlideIn(battler);
SetHealthboxSpriteVisible(gHealthboxSpriteIds[battler]);
}
@ -307,7 +307,7 @@ static void TryShinyAnimAfterMonAnim(u32 battler)
{
if (!gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim)
{
TryShinyAnimation(battler, &gEnemyParty[gBattlerPartyIndexes[battler]]);
TryShinyAnimation(battler, GetPartyBattlerData(battler));
}
else
{
@ -361,7 +361,7 @@ static void SwitchIn_ShowHealthbox(u32 battler)
StartSpriteAnim(&gSprites[gBattlerSpriteIds[battler]], 0);
UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &gEnemyParty[gBattlerPartyIndexes[battler]], HEALTHBOX_ALL);
UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], GetPartyBattlerData(battler), HEALTHBOX_ALL);
StartHealthboxSlideIn(battler);
SetHealthboxSpriteVisible(gHealthboxSpriteIds[battler]);
CopyBattleSpriteInvisibility(battler);
@ -373,13 +373,13 @@ static void SwitchIn_TryShinyAnim(u32 battler)
{
if (!gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive
&& !gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim)
TryShinyAnimation(battler, &gEnemyParty[gBattlerPartyIndexes[battler]]);
TryShinyAnimation(battler, GetPartyBattlerData(battler));
if (gSprites[gBattleControllerData[battler]].callback == SpriteCallbackDummy
&& !gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive)
{
DestroySprite(&gSprites[gBattleControllerData[battler]]);
SetBattlerShadowSpriteCallback(battler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES));
SetBattlerShadowSpriteCallback(battler, GetMonData(GetPartyBattlerData(battler), MON_DATA_SPECIES));
gBattlerControllerFuncs[battler] = SwitchIn_ShowHealthbox;
}
}
@ -501,7 +501,7 @@ static void RecordedOpponentHandleStatusIconUpdate(u32 battler)
{
DoStatusIconUpdate(battler);
if (gTestRunnerEnabled)
TestRunner_Battle_RecordStatus1(battler, GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_STATUS));
TestRunner_Battle_RecordStatus1(battler, GetMonData(GetPartyBattlerData(battler), MON_DATA_STATUS));
}
}

View File

@ -167,9 +167,9 @@ static void Intro_WaitForShinyAnimAndHealthbox(u32 battler)
FreeSpriteTilesByTag(ANIM_TAG_GOLD_STARS);
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[battler]], battler);
HandleLowHpMusicChange(GetPartyBattlerData(battler), battler);
if (IsDoubleBattle())
HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[BATTLE_PARTNER(battler)]], BATTLE_PARTNER(battler));
HandleLowHpMusicChange(GetPartyBattlerData(BATTLE_PARTNER(battler)), BATTLE_PARTNER(battler));
gBattleSpritesDataPtr->healthBoxesData[battler].introEndDelay = 3;
gBattlerControllerFuncs[battler] = Intro_DelayAndEnd;
@ -210,11 +210,11 @@ static void Intro_TryShinyAnimShowHealthbox(u32 battler)
{
if (!gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim
&& !gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive)
TryShinyAnimation(battler, &gPlayerParty[gBattlerPartyIndexes[battler]]);
TryShinyAnimation(battler, GetPartyBattlerData(battler));
if (!gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(battler)].triedShinyMonAnim
&& !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(battler)].ballAnimActive)
TryShinyAnimation(BATTLE_PARTNER(battler), &gPlayerParty[gBattlerPartyIndexes[BATTLE_PARTNER(battler)]]);
TryShinyAnimation(BATTLE_PARTNER(battler), GetPartyBattlerData(BATTLE_PARTNER(battler)));
}
if (!gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive
@ -224,11 +224,11 @@ static void Intro_TryShinyAnimShowHealthbox(u32 battler)
{
if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
UpdateHealthboxAttribute(gHealthboxSpriteIds[BATTLE_PARTNER(battler)], &gPlayerParty[gBattlerPartyIndexes[BATTLE_PARTNER(battler)]], HEALTHBOX_ALL);
UpdateHealthboxAttribute(gHealthboxSpriteIds[BATTLE_PARTNER(battler)], GetPartyBattlerData(BATTLE_PARTNER(battler)), HEALTHBOX_ALL);
StartHealthboxSlideIn(BATTLE_PARTNER(battler));
SetHealthboxSpriteVisible(gHealthboxSpriteIds[BATTLE_PARTNER(battler)]);
}
UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &gPlayerParty[gBattlerPartyIndexes[battler]], HEALTHBOX_ALL);
UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], GetPartyBattlerData(battler), HEALTHBOX_ALL);
StartHealthboxSlideIn(battler);
SetHealthboxSpriteVisible(gHealthboxSpriteIds[battler]);
}
@ -309,9 +309,9 @@ static void SwitchIn_ShowHealthbox(u32 battler)
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
CreateTask(Task_PlayerController_RestoreBgmAfterCry, 10);
HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[battler]], battler);
HandleLowHpMusicChange(GetPartyBattlerData(battler), battler);
StartSpriteAnim(&gSprites[gBattlerSpriteIds[battler]], 0);
UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &gPlayerParty[gBattlerPartyIndexes[battler]], HEALTHBOX_ALL);
UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], GetPartyBattlerData(battler), HEALTHBOX_ALL);
StartHealthboxSlideIn(battler);
SetHealthboxSpriteVisible(gHealthboxSpriteIds[battler]);
@ -324,7 +324,7 @@ static void SwitchIn_TryShinyAnim(u32 battler)
if (!gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim
&& !gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive)
{
TryShinyAnimation(battler, &gPlayerParty[gBattlerPartyIndexes[battler]]);
TryShinyAnimation(battler, GetPartyBattlerData(battler));
}
if (gSprites[gBattleControllerData[battler]].callback == SpriteCallbackDummy
@ -494,7 +494,7 @@ static void RecordedPlayerHandleStatusIconUpdate(u32 battler)
{
DoStatusIconUpdate(battler);
if (gTestRunnerEnabled)
TestRunner_Battle_RecordStatus1(battler, GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_STATUS));
TestRunner_Battle_RecordStatus1(battler, GetMonData(GetPartyBattlerData(battler), MON_DATA_STATUS));
}
}

View File

@ -307,7 +307,7 @@ static void SafariHandleChooseItem(u32 battler)
static void SafariHandleStatusIconUpdate(u32 battler)
{
UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &gPlayerParty[gBattlerPartyIndexes[battler]], HEALTHBOX_SAFARI_BALLS_TEXT);
UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], GetPartyBattlerData(battler), HEALTHBOX_SAFARI_BALLS_TEXT);
SafariBufferExecCompleted(battler);
}
@ -315,7 +315,7 @@ static void SafariHandleStatusIconUpdate(u32 battler)
// Player is not a pokemon, so it can't really faint in the Safari anyway.
static void SafariHandleFaintingCry(u32 battler)
{
u16 species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES);
u16 species = GetMonData(GetPartyBattlerData(battler), MON_DATA_SPECIES);
PlayCry_Normal(species, 25);
SafariBufferExecCompleted(battler);
@ -324,7 +324,7 @@ static void SafariHandleFaintingCry(u32 battler)
static void SafariHandleIntroTrainerBallThrow(u32 battler)
{
UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &gPlayerParty[gBattlerPartyIndexes[battler]], HEALTHBOX_SAFARI_ALL_TEXT);
UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], GetPartyBattlerData(battler), HEALTHBOX_SAFARI_ALL_TEXT);
StartHealthboxSlideIn(battler);
SetHealthboxSpriteVisible(gHealthboxSpriteIds[battler]);
gBattlerControllerFuncs[battler] = Controller_WaitForHealthbox;

View File

@ -218,11 +218,11 @@ static void Intro_TryShinyAnimShowHealthbox(u32 battler)
{
if (!gBattleSpritesDataPtr->healthBoxesData[battler].triedShinyMonAnim
&& !gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive)
TryShinyAnimation(battler, &gPlayerParty[gBattlerPartyIndexes[battler]]);
TryShinyAnimation(battler, GetPartyBattlerData(battler));
if (!gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(battler)].triedShinyMonAnim
&& !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(battler)].ballAnimActive)
TryShinyAnimation(BATTLE_PARTNER(battler), &gPlayerParty[gBattlerPartyIndexes[BATTLE_PARTNER(battler)]]);
TryShinyAnimation(BATTLE_PARTNER(battler), GetPartyBattlerData(BATTLE_PARTNER(battler)));
if (!gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive
&& !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(battler)].ballAnimActive
@ -232,12 +232,12 @@ static void Intro_TryShinyAnimShowHealthbox(u32 battler)
if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
{
DestroySprite(&gSprites[gBattleControllerData[BATTLE_PARTNER(battler)]]);
UpdateHealthboxAttribute(gHealthboxSpriteIds[BATTLE_PARTNER(battler)], &gPlayerParty[gBattlerPartyIndexes[BATTLE_PARTNER(battler)]], HEALTHBOX_ALL);
UpdateHealthboxAttribute(gHealthboxSpriteIds[BATTLE_PARTNER(battler)], GetPartyBattlerData(BATTLE_PARTNER(battler)), HEALTHBOX_ALL);
StartHealthboxSlideIn(BATTLE_PARTNER(battler));
SetHealthboxSpriteVisible(gHealthboxSpriteIds[BATTLE_PARTNER(battler)]);
}
DestroySprite(&gSprites[gBattleControllerData[battler]]);
UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &gPlayerParty[gBattlerPartyIndexes[battler]], HEALTHBOX_ALL);
UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], GetPartyBattlerData(battler), HEALTHBOX_ALL);
StartHealthboxSlideIn(battler);
SetHealthboxSpriteVisible(gHealthboxSpriteIds[battler]);
@ -266,7 +266,7 @@ static void Intro_WaitForShinyAnimAndHealthbox(u32 battler)
FreeSpritePaletteByTag(ANIM_TAG_GOLD_STARS);
CreateTask(Task_PlayerController_RestoreBgmAfterCry, 10);
HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[battler]], battler);
HandleLowHpMusicChange(GetPartyBattlerData(battler), battler);
WallyBufferExecCompleted(battler);
}
@ -408,7 +408,7 @@ static void WallyHandlePlaySE(u32 battler)
// Wally's Pokémon during the tutorial is never intended to faint, so that's probably why it's different here.
static void WallyHandleFaintingCry(u32 battler)
{
u16 species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES);
u16 species = GetMonData(GetPartyBattlerData(battler), MON_DATA_SPECIES);
PlayCry_Normal(species, 25);
WallyBufferExecCompleted(battler);

View File

@ -2079,7 +2079,7 @@ static bool8 ShouldDoSlideInAnim(u32 battler)
)
return FALSE;
if (GetFirstLiveMon() != &gPlayerParty[gBattlerPartyIndexes[battler]])
if (GetFirstLiveMon() != GetPartyBattlerData(battler))
return FALSE;
return TRUE;
@ -2089,17 +2089,17 @@ void StartSendOutAnim(u32 battler, bool32 dontClearTransform, bool32 dontClearSu
{
u16 species;
u32 side = GetBattlerSide(battler);
struct Pokemon *party = GetBattlerParty(battler);
struct Pokemon *mon = GetPartyBattlerData(battler);
ClearTemporarySpeciesSpriteData(battler, dontClearTransform, dontClearSubstituteBit);
gBattlerPartyIndexes[battler] = gBattleResources->bufferA[battler][1];
species = GetIllusionMonSpecies(battler);
if (species == SPECIES_NONE)
species = GetMonData(&party[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES);
species = GetMonData(mon, MON_DATA_SPECIES);
gBattleControllerData[battler] = CreateInvisibleSpriteWithCallback(SpriteCB_WaitForBattlerBallReleaseAnim);
// Load sprite for opponent only, player sprite is expected to be already loaded.
if (side == B_SIDE_OPPONENT)
BattleLoadMonSpriteGfx(&party[gBattlerPartyIndexes[battler]], battler);
BattleLoadMonSpriteGfx(mon, battler);
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(battler));
gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate,
@ -2163,7 +2163,7 @@ static void Controller_FaintPlayerMon(u32 battler)
u32 spriteId = gBattlerSpriteIds[battler];
if (gSprites[spriteId].y + gSprites[spriteId].y2 > DISPLAY_HEIGHT)
{
BattleGfxSfxDummy2(GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES));
BattleGfxSfxDummy2(GetMonData(GetPartyBattlerData(battler), MON_DATA_SPECIES));
FreeOamMatrix(gSprites[spriteId].oam.matrixNum);
DestroySprite(&gSprites[spriteId]);
SetHealthboxSpriteInvisible(gHealthboxSpriteIds[battler]);
@ -2254,7 +2254,7 @@ void Controller_WaitForHealthBar(u32 battler)
else
{
if (GetBattlerSide(battler) == B_SIDE_PLAYER)
HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[battler]], battler);
HandleLowHpMusicChange(GetPartyBattlerData(battler), battler);
BattleControllerComplete(battler);
}
}
@ -2362,9 +2362,9 @@ void BtlController_HandleGetMonData(u32 battler)
void BtlController_HandleGetRawMonData(u32 battler)
{
struct BattlePokemon battleMon;
struct Pokemon *party = GetBattlerParty(battler);
struct Pokemon *mon = GetPartyBattlerData(battler);
u8 *src = (u8 *)&party[gBattlerPartyIndexes[battler]] + gBattleResources->bufferA[battler][1];
u8 *src = (u8 *)mon + gBattleResources->bufferA[battler][1];
u8 *dst = (u8 *)&battleMon + gBattleResources->bufferA[battler][1];
u8 i;
@ -2400,8 +2400,7 @@ void BtlController_HandleSetMonData(u32 battler)
void BtlController_HandleSetRawMonData(u32 battler)
{
u32 i;
struct Pokemon *party = GetBattlerParty(battler);
u8 *dst = (u8 *)&party[gBattlerPartyIndexes[battler]] + gBattleResources->bufferA[battler][1];
u8 *dst = (u8 *)GetPartyBattlerData(battler) + gBattleResources->bufferA[battler][1];
for (i = 0; i < gBattleResources->bufferA[battler][2]; i++)
dst[i] = gBattleResources->bufferA[battler][3 + i];
@ -2411,10 +2410,10 @@ void BtlController_HandleSetRawMonData(u32 battler)
void BtlController_HandleLoadMonSprite(u32 battler, void (*controllerCallback)(u32 battler))
{
struct Pokemon *party = GetBattlerParty(battler);
u16 species = GetMonData(&party[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES);
struct Pokemon *mon = GetPartyBattlerData(battler);
u16 species = GetMonData(mon, MON_DATA_SPECIES);
BattleLoadMonSpriteGfx(&party[gBattlerPartyIndexes[battler]], battler);
BattleLoadMonSpriteGfx(mon, battler);
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(battler));
gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate,
@ -2439,7 +2438,7 @@ void BtlController_HandleSwitchInAnim(u32 battler, bool32 isPlayerSide, void (*c
ClearTemporarySpeciesSpriteData(battler, gBattleResources->bufferA[battler][2], gBattleResources->bufferA[battler][3]);
gBattlerPartyIndexes[battler] = gBattleResources->bufferA[battler][1];
if (isPlayerSide)
BattleLoadMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[battler]], battler);
BattleLoadMonSpriteGfx(GetPartyBattlerData(battler), battler);
StartSendOutAnim(battler, gBattleResources->bufferA[battler][2], gBattleResources->bufferA[battler][3], FALSE);
gBattlerControllerFuncs[battler] = controllerCallback;
}
@ -2594,7 +2593,7 @@ void BtlController_HandleFaintAnimation(u32 battler)
gBattleSpritesDataPtr->healthBoxesData[battler].animationState = 0;
if (GetBattlerSide(battler) == B_SIDE_PLAYER)
{
HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[battler]], battler);
HandleLowHpMusicChange(GetPartyBattlerData(battler), battler);
gSprites[gBattlerSpriteIds[battler]].sSpeedX = 0;
gSprites[gBattlerSpriteIds[battler]].sSpeedY = 5;
PlaySE12WithPanning(SE_FAINT, SOUND_PAN_ATTACKER);
@ -2691,12 +2690,12 @@ void BtlController_HandleHealthBarUpdate(u32 battler, bool32 updateHpText)
{
s32 maxHP, curHP;
s16 hpVal;
struct Pokemon *party = GetBattlerParty(battler);
struct Pokemon *mon = GetPartyBattlerData(battler);
LoadBattleBarGfx(0);
hpVal = gBattleResources->bufferA[battler][2] | (gBattleResources->bufferA[battler][3] << 8);
maxHP = GetMonData(&party[gBattlerPartyIndexes[battler]], MON_DATA_MAX_HP);
curHP = GetMonData(&party[gBattlerPartyIndexes[battler]], MON_DATA_HP);
maxHP = GetMonData(mon, MON_DATA_MAX_HP);
curHP = GetMonData(mon, MON_DATA_HP);
if (hpVal != INSTANT_HP_BAR_DROP)
{
@ -2716,9 +2715,9 @@ void BtlController_HandleHealthBarUpdate(u32 battler, bool32 updateHpText)
void DoStatusIconUpdate(u32 battler)
{
struct Pokemon *party = GetBattlerParty(battler);
struct Pokemon *mon = GetPartyBattlerData(battler);
UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &party[gBattlerPartyIndexes[battler]], HEALTHBOX_STATUS_ICON);
UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], mon, HEALTHBOX_STATUS_ICON);
gBattleSpritesDataPtr->healthBoxesData[battler].statusAnimActive = 0;
gBattlerControllerFuncs[battler] = Controller_WaitForStatusAnimation;
}
@ -2818,14 +2817,14 @@ void BtlController_HandleSpriteInvisibility(u32 battler)
bool32 TwoPlayerIntroMons(u32 battler) // Double battle with both player pokemon active.
{
return (IsDoubleBattle() && IsValidForBattle(&gPlayerParty[gBattlerPartyIndexes[battler ^ BIT_FLANK]]));
return (IsDoubleBattle() && IsValidForBattle(GetPartyBattlerData(battler ^ BIT_FLANK)));
}
bool32 TwoOpponentIntroMons(u32 battler) // Double battle with both opponent pokemon active.
{
return (IsDoubleBattle()
&& IsValidForBattle(&gEnemyParty[gBattlerPartyIndexes[battler]])
&& IsValidForBattle(&gEnemyParty[gBattlerPartyIndexes[BATTLE_PARTNER(battler)]]));
&& IsValidForBattle(GetPartyBattlerData(battler))
&& IsValidForBattle(GetPartyBattlerData(BATTLE_PARTNER(battler))));
}
// Task data for Task_StartSendOutAnim
@ -2925,7 +2924,7 @@ static void Task_StartSendOutAnim(u8 taskId)
battlerPartner = battler ^ BIT_FLANK;
gBattleResources->bufferA[battlerPartner][1] = gBattlerPartyIndexes[battlerPartner];
BattleLoadMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[battlerPartner]], battlerPartner);
BattleLoadMonSpriteGfx(GetPartyBattlerData(battlerPartner), battlerPartner);
StartSendOutAnim(battlerPartner, FALSE, FALSE, ShouldDoSlideInAnim(battler));
}
else
@ -2954,7 +2953,7 @@ static void SpriteCB_FreePlayerSpriteLoadMonSprite(struct Sprite *sprite)
DestroySprite(sprite);
// Load mon sprite
BattleLoadMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[battler]], battler);
BattleLoadMonSpriteGfx(GetPartyBattlerData(battler), battler);
StartSpriteAnim(&gSprites[gBattlerSpriteIds[battler]], 0);
}

View File

@ -1046,8 +1046,7 @@ static void Task_ShowAiPoints(u8 taskId)
data->spriteIds.aiIconSpriteIds[i] = 0xFF;
}
}
mon = &GetBattlerParty(data->aiBattlerId)[gBattlerPartyIndexes[data->aiBattlerId]];
mon = GetPartyBattlerData(data->aiBattlerId);
data->aiMonSpriteId = CreateMonPicSprite(gBattleMons[data->aiBattlerId].species,
GetMonData(mon, MON_DATA_IS_SHINY),
@ -1228,7 +1227,7 @@ static void Task_ShowAiKnowledge(u8 taskId)
}
}
mon = &GetBattlerParty(data->aiBattlerId)[gBattlerPartyIndexes[data->aiBattlerId]];
mon = GetPartyBattlerData(data->aiBattlerId);
data->aiMonSpriteId = CreateMonPicSprite(gBattleMons[data->aiBattlerId].species,
GetMonData(mon, MON_DATA_IS_SHINY),

View File

@ -867,11 +867,11 @@ bool8 BattleInitAllSprites(u8 *state1, u8 *battler)
if (GetBattlerSide(*battler) == B_SIDE_PLAYER)
{
if (!(gBattleTypeFlags & BATTLE_TYPE_SAFARI))
UpdateHealthboxAttribute(gHealthboxSpriteIds[*battler], &gPlayerParty[gBattlerPartyIndexes[*battler]], HEALTHBOX_ALL);
UpdateHealthboxAttribute(gHealthboxSpriteIds[*battler], GetPartyBattlerData(*battler), HEALTHBOX_ALL);
}
else
{
UpdateHealthboxAttribute(gHealthboxSpriteIds[*battler], &gEnemyParty[gBattlerPartyIndexes[*battler]], HEALTHBOX_ALL);
UpdateHealthboxAttribute(gHealthboxSpriteIds[*battler], GetPartyBattlerData(*battler), HEALTHBOX_ALL);
}
SetHealthboxSpriteInvisible(gHealthboxSpriteIds[*battler]);
(*battler)++;
@ -1039,7 +1039,7 @@ void BattleLoadSubstituteOrMonSpriteGfx(u8 battler, bool8 loadMonSprite)
else
{
if (!IsContest())
BattleLoadMonSpriteGfx(&GetBattlerParty(battler)[gBattlerPartyIndexes[battler]], battler);
BattleLoadMonSpriteGfx(GetPartyBattlerData(battler), battler);
}
}

View File

@ -1180,8 +1180,8 @@ void SwapHpBarsWithHpText(void)
&& GetBattlerSide(i) != B_SIDE_OPPONENT
&& (WhichBattleCoords(i) || GetBattlerSide(i) != B_SIDE_PLAYER))
{
s32 currHp = GetMonData(&gPlayerParty[gBattlerPartyIndexes[i]], MON_DATA_HP);
s32 maxHp = GetMonData(&gPlayerParty[gBattlerPartyIndexes[i]], MON_DATA_MAX_HP);
s32 currHp = GetMonData(GetPartyBattlerData(i), MON_DATA_HP);
s32 maxHp = GetMonData(GetPartyBattlerData(i), MON_DATA_MAX_HP);
bool8 noBars;
gBattleSpritesDataPtr->battlerData[i].hpNumbersNoBars ^= 1;
@ -1203,7 +1203,7 @@ void SwapHpBarsWithHpText(void)
else // text to bars
{
UpdateStatusIconInHealthbox(gHealthboxSpriteIds[i]);
UpdateHealthboxAttribute(gHealthboxSpriteIds[i], &gPlayerParty[gBattlerPartyIndexes[i]], HEALTHBOX_HEALTH_BAR);
UpdateHealthboxAttribute(gHealthboxSpriteIds[i], GetPartyBattlerData(i), HEALTHBOX_HEALTH_BAR);
CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_FRAME_END_BAR), (void *)(OBJ_VRAM0 + 0x680 + gSprites[gHealthboxSpriteIds[i]].oam.tileNum * TILE_SIZE_4BPP), 32);
}
}
@ -1214,7 +1214,7 @@ void SwapHpBarsWithHpText(void)
if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
{
// Most likely a debug function.
PrintSafariMonInfo(gHealthboxSpriteIds[i], &gEnemyParty[gBattlerPartyIndexes[i]]);
PrintSafariMonInfo(gHealthboxSpriteIds[i], GetPartyBattlerData(i));
}
else
{
@ -1227,9 +1227,9 @@ void SwapHpBarsWithHpText(void)
else // text to bars
{
UpdateStatusIconInHealthbox(gHealthboxSpriteIds[i]);
UpdateHealthboxAttribute(gHealthboxSpriteIds[i], &gEnemyParty[gBattlerPartyIndexes[i]], HEALTHBOX_HEALTH_BAR);
UpdateHealthboxAttribute(gHealthboxSpriteIds[i], GetPartyBattlerData(i), HEALTHBOX_HEALTH_BAR);
if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
UpdateHealthboxAttribute(gHealthboxSpriteIds[i], &gEnemyParty[gBattlerPartyIndexes[i]], HEALTHBOX_NICK);
UpdateHealthboxAttribute(gHealthboxSpriteIds[i], GetPartyBattlerData(i), HEALTHBOX_NICK);
}
}
gSprites[gHealthboxSpriteIds[i]].hMain_Data7 ^= 1;
@ -1779,7 +1779,7 @@ static void TryAddPokeballIconToHealthbox(u8 healthboxSpriteId, bool8 noStatus)
battlerId = gSprites[healthboxSpriteId].hMain_Battler;
if (GetBattlerSide(battlerId) == B_SIDE_PLAYER)
return;
if (!GetSetPokedexFlag(SpeciesToNationalPokedexNum(GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES)), FLAG_GET_CAUGHT))
if (!GetSetPokedexFlag(SpeciesToNationalPokedexNum(GetMonData(GetPartyBattlerData(battlerId), MON_DATA_SPECIES)), FLAG_GET_CAUGHT))
return;
healthBarSpriteId = gSprites[healthboxSpriteId].hMain_HealthBarSpriteId;
@ -1803,7 +1803,7 @@ static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId)
healthBarSpriteId = gSprites[healthboxSpriteId].hMain_HealthBarSpriteId;
if (GetBattlerSide(battlerId) == B_SIDE_PLAYER)
{
status = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_STATUS);
status = GetMonData(GetPartyBattlerData(battlerId), MON_DATA_STATUS);
if (!WhichBattleCoords(battlerId))
tileNumAdder = 0x1A;
else
@ -1811,7 +1811,7 @@ static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId)
}
else
{
status = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_STATUS);
status = GetMonData(GetPartyBattlerData(battlerId), MON_DATA_STATUS);
tileNumAdder = 0x11;
}
@ -2135,7 +2135,7 @@ static void MoveBattleBarGraphically(u8 battlerId, u8 whichBar)
gBattleSpritesDataPtr->battleBars[battlerId].receivedValue,
&gBattleSpritesDataPtr->battleBars[battlerId].currValue,
array, B_EXPBAR_PIXELS / 8);
level = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_LEVEL);
level = GetMonData(GetPartyBattlerData(battlerId), MON_DATA_LEVEL);
if (level >= MAX_LEVEL)
{
for (i = 0; i < 8; i++)

View File

@ -2669,7 +2669,7 @@ void SpriteCallbackDummy_2(struct Sprite *sprite)
void SpriteCB_FaintOpponentMon(struct Sprite *sprite)
{
u8 battler = sprite->sBattler;
u32 personality = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_PERSONALITY);
u32 personality = GetMonData(GetPartyBattlerData(battler), MON_DATA_PERSONALITY);
u16 species;
u8 yOffset;
@ -3480,7 +3480,7 @@ static void DoBattleIntro(void)
{
BtlController_EmitLoadMonSprite(battler, BUFFER_A);
MarkBattlerForControllerExec(battler);
gBattleResults.lastOpponentSpecies = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES, NULL);
gBattleResults.lastOpponentSpecies = GetMonData(GetPartyBattlerData(battler), MON_DATA_SPECIES, NULL);
}
break;
case B_POSITION_PLAYER_RIGHT:
@ -3503,7 +3503,7 @@ static void DoBattleIntro(void)
{
BtlController_EmitLoadMonSprite(battler, BUFFER_A);
MarkBattlerForControllerExec(battler);
gBattleResults.lastOpponentSpecies = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES, NULL);
gBattleResults.lastOpponentSpecies = GetMonData(GetPartyBattlerData(battler), MON_DATA_SPECIES, NULL);
}
break;
}
@ -3739,8 +3739,7 @@ static void TryDoEventsBeforeFirstTurn(void)
for (i = 0; i < gBattlersCount; i++)
{
gBattleStruct->monToSwitchIntoId[i] = PARTY_SIZE; // Included here because switches can happen before during set ups (eg. eject pack)
struct Pokemon *party = GetBattlerParty(i);
struct Pokemon *mon = &party[gBattlerPartyIndexes[i]];
struct Pokemon *mon = GetPartyBattlerData(i);
if (!IsBattlerAlive(i) || gBattleMons[i].species == SPECIES_NONE || GetMonData(mon, MON_DATA_IS_EGG))
gAbsentBattlerFlags |= 1u << i;
}
@ -5508,13 +5507,13 @@ static void HandleEndTurn_FinishBattle(void)
{
if (gBattleResults.playerMon1Species == SPECIES_NONE)
{
gBattleResults.playerMon1Species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES, NULL);
GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_NICKNAME, gBattleResults.playerMon1Name);
gBattleResults.playerMon1Species = GetMonData(GetPartyBattlerData(battler), MON_DATA_SPECIES, NULL);
GetMonData(GetPartyBattlerData(battler), MON_DATA_NICKNAME, gBattleResults.playerMon1Name);
}
else
{
gBattleResults.playerMon2Species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES, NULL);
GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_NICKNAME, gBattleResults.playerMon2Name);
gBattleResults.playerMon2Species = GetMonData(GetPartyBattlerData(battler), MON_DATA_SPECIES, NULL);
GetMonData(GetPartyBattlerData(battler), MON_DATA_NICKNAME, gBattleResults.playerMon2Name);
}
}
else if (GetBattlerSide(battler) == B_SIDE_OPPONENT)
@ -6028,7 +6027,7 @@ void SetTypeBeforeUsingMove(u32 move, u32 battler)
gBattleStruct->ateBoost[battler] = FALSE;
gSpecialStatuses[battler].gemBoost = FALSE;
moveType = GetDynamicMoveType(&GetBattlerParty(battler)[gBattlerPartyIndexes[battler]],
moveType = GetDynamicMoveType(GetPartyBattlerData(battler),
move,
battler,
&gBattleStruct->ateBoost[battler]);

View File

@ -2121,7 +2121,7 @@ void BufferStringBattle(enum StringID stringID, u32 battler)
{
if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY)
stringPtr = sText_LegendaryPkmnAppeared;
else if (IsDoubleBattle() && IsValidForBattle(&gEnemyParty[gBattlerPartyIndexes[GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT)]]))
else if (IsDoubleBattle() && IsValidForBattle(GetPartyBattlerData(GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT))))
stringPtr = sText_TwoWildPkmnAppeared;
else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL)
stringPtr = sText_WildPkmnAppearedPause;
@ -2132,7 +2132,7 @@ void BufferStringBattle(enum StringID stringID, u32 battler)
case STRINGID_INTROSENDOUT: // poke first send-out
if (GetBattlerSide(battler) == B_SIDE_PLAYER)
{
if (IsDoubleBattle() && IsValidForBattle(&gPlayerParty[gBattlerPartyIndexes[BATTLE_PARTNER(battler)]]))
if (IsDoubleBattle() && IsValidForBattle(GetPartyBattlerData(BATTLE_PARTNER(battler))))
{
if (gBattleTypeFlags & BATTLE_TYPE_INGAME_PARTNER)
stringPtr = sText_InGamePartnerSentOutZGoN;
@ -2150,7 +2150,7 @@ void BufferStringBattle(enum StringID stringID, u32 battler)
}
else
{
if (IsDoubleBattle() && IsValidForBattle(&gEnemyParty[gBattlerPartyIndexes[BATTLE_PARTNER(battler)]]))
if (IsDoubleBattle() && IsValidForBattle(GetPartyBattlerData(BATTLE_PARTNER(battler))))
{
if (BATTLE_TWO_VS_ONE_OPPONENT)
stringPtr = sText_Trainer1SentOutTwoPkmn;
@ -3180,7 +3180,7 @@ static void IllusionNickHack(u32 battler, u32 partyId, u8 *dst)
if (GetMonAbility(mon) == ABILITY_ILLUSION)
{
if (IsBattlerAlive(BATTLE_PARTNER(battler)))
partnerMon = &gEnemyParty[gBattlerPartyIndexes[BATTLE_PARTNER(battler)]];
partnerMon = GetPartyBattlerData(BATTLE_PARTNER(battler));
else
partnerMon = mon;

View File

@ -3884,11 +3884,11 @@ void SetMoveEffect(bool32 primary, bool32 certain)
case MOVE_EFFECT_SYRUP_BOMB:
if (!(gStatuses4[gEffectBattler] & STATUS4_SYRUP_BOMB))
{
struct Pokemon *party = GetBattlerParty(gBattlerAttacker);
struct Pokemon *mon = GetPartyBattlerData(gBattlerAttacker);
gStatuses4[gEffectBattler] |= STATUS4_SYRUP_BOMB;
gDisableStructs[gEffectBattler].syrupBombTimer = 3;
gDisableStructs[gEffectBattler].syrupBombIsShiny = IsMonShiny(&party[gBattlerPartyIndexes[gBattlerAttacker]]);
gDisableStructs[gEffectBattler].syrupBombIsShiny = IsMonShiny(mon);
gBattleStruct->stickySyrupdBy[gEffectBattler] = gBattlerAttacker;
BattleScriptPush(gBattlescriptCurrInstr + 1);
gBattlescriptCurrInstr = BattleScript_SyrupBombActivates;
@ -4619,7 +4619,7 @@ static void Cmd_tryfaintmon(void)
{
if (gBattleResults.opponentFaintCounter < 255)
gBattleResults.opponentFaintCounter++;
gBattleResults.lastOpponentSpecies = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES, NULL);
gBattleResults.lastOpponentSpecies = GetMonData(GetPartyBattlerData(battler), MON_DATA_SPECIES, NULL);
gSideTimers[B_SIDE_OPPONENT].retaliateTimer = 2;
}
if ((gHitMarker & HITMARKER_DESTINYBOND) && IsBattlerAlive(gBattlerAttacker)
@ -5136,7 +5136,7 @@ static void Cmd_getexp(void)
{
u16 temp, battler = 0xFF;
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && gBattlerPartyIndexes[expBattler] == *expMonId)
HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[expBattler]], expBattler);
HandleLowHpMusicChange(GetPartyBattlerData(expBattler), expBattler);
PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, expBattler, *expMonId);
PREPARE_BYTE_NUMBER_BUFFER(gBattleTextBuff2, 3, GetMonData(&gPlayerParty[*expMonId], MON_DATA_LEVEL));
@ -9586,7 +9586,7 @@ static void Cmd_useitemonopponent(void)
CMD_ARGS();
gBattlerInMenuId = gBattlerAttacker;
PokemonUseItemEffects(&gEnemyParty[gBattlerPartyIndexes[gBattlerAttacker]], gLastUsedItem, gBattlerPartyIndexes[gBattlerAttacker], 0, TRUE);
PokemonUseItemEffects(GetPartyBattlerData(gBattlerAttacker), gLastUsedItem, gBattlerPartyIndexes[gBattlerAttacker], 0, TRUE);
gBattlescriptCurrInstr = cmd->nextInstr;
}
@ -9938,8 +9938,7 @@ void BS_CourtChangeSwapSideStatuses(void)
static void HandleScriptMegaPrimalBurst(u32 caseId, u32 battler, u32 type)
{
struct Pokemon *party = GetBattlerParty(battler);
struct Pokemon *mon = &party[gBattlerPartyIndexes[battler]];
struct Pokemon *mon = GetPartyBattlerData(battler);
u32 side = GetBattlerSide(battler);
// Change species.
@ -10211,9 +10210,9 @@ static void Cmd_various(void)
{
VARIOUS_ARGS();
if (GetBattlerSide(battler) == B_SIDE_PLAYER)
mon = &gPlayerParty[gBattlerPartyIndexes[battler]];
mon = GetPartyBattlerData(battler);
else
mon = &gEnemyParty[gBattlerPartyIndexes[battler]];
mon = GetPartyBattlerData(battler);
UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], mon, HEALTHBOX_NICK);
break;
}
@ -10524,7 +10523,7 @@ static void Cmd_various(void)
gAbsentBattlerFlags |= 1u << battler;
gHitMarker |= HITMARKER_FAINTED(battler);
gBattleMons[battler].hp = 0;
SetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_HP, &gBattleMons[battler].hp);
SetMonData(GetPartyBattlerData(battler), MON_DATA_HP, &gBattleMons[battler].hp);
SetHealthboxSpriteInvisible(gHealthboxSpriteIds[battler]);
FaintClearSetData(battler);
}
@ -11060,13 +11059,13 @@ static void Cmd_various(void)
if (IsBattlerAlive(battler))
{
SetBattlerShadowSpriteCallback(battler, gBattleMons[battler].species);
BattleLoadMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[battler]], battler);
BattleLoadMonSpriteGfx(GetPartyBattlerData(battler), battler);
}
i = BATTLE_PARTNER(battler);
if (IsBattlerAlive(i))
{
SetBattlerShadowSpriteCallback(i, gBattleMons[i].species);
BattleLoadMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[i]], i);
BattleLoadMonSpriteGfx(GetPartyBattlerData(i), i);
}
}
gBattlescriptCurrInstr = cmd->nextInstr;
@ -15858,8 +15857,8 @@ static void Cmd_handleballthrow(void)
case BALL_LOVE:
if (gBattleMons[gBattlerTarget].species == gBattleMons[gBattlerAttacker].species)
{
u8 gender1 = GetMonGender(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]]);
u8 gender2 = GetMonGender(&gPlayerParty[gBattlerPartyIndexes[gBattlerAttacker]]);
u8 gender1 = GetMonGender(GetPartyBattlerData(gBattlerTarget));
u8 gender2 = GetMonGender(GetPartyBattlerData(gBattlerAttacker));
if (gender1 != gender2 && gender1 != MON_GENDERLESS && gender2 != MON_GENDERLESS)
ballMultiplier = 800;
@ -15941,7 +15940,7 @@ static void Cmd_handleballthrow(void)
MarkBattlerForControllerExec(gBattlerAttacker);
TryBattleFormChange(gBattlerTarget, FORM_CHANGE_END_BATTLE);
gBattlescriptCurrInstr = BattleScript_SuccessBallThrow;
SetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_POKEBALL, &ballId);
SetMonData(GetPartyBattlerData(gBattlerTarget), MON_DATA_POKEBALL, &ballId);
if (CalculatePlayerPartyCount() == PARTY_SIZE)
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
@ -15950,15 +15949,15 @@ static void Cmd_handleballthrow(void)
if (ballId == BALL_HEAL)
{
MonRestorePP(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]]);
HealStatusConditions(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], STATUS1_ANY, gBattlerTarget);
MonRestorePP(GetPartyBattlerData(gBattlerTarget));
HealStatusConditions(GetPartyBattlerData(gBattlerTarget), STATUS1_ANY, gBattlerTarget);
gBattleMons[gBattlerTarget].hp = gBattleMons[gBattlerTarget].maxHP;
SetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_HP, &gBattleMons[gBattlerTarget].hp);
SetMonData(GetPartyBattlerData(gBattlerTarget), MON_DATA_HP, &gBattleMons[gBattlerTarget].hp);
}
else if (ballId == BALL_FRIEND)
{
u32 friendship = (B_FRIEND_BALL_MODIFIER >= GEN_8 ? 150 : 200);
SetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_FRIENDSHIP, &friendship);
SetMonData(GetPartyBattlerData(gBattlerTarget), MON_DATA_FRIENDSHIP, &friendship);
}
}
else // mon may be caught, calculate shakes
@ -16000,7 +15999,7 @@ static void Cmd_handleballthrow(void)
TryBattleFormChange(gBattlerTarget, FORM_CHANGE_END_BATTLE);
gBattlescriptCurrInstr = BattleScript_SuccessBallThrow;
SetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_POKEBALL, &ballId);
SetMonData(GetPartyBattlerData(gBattlerTarget), MON_DATA_POKEBALL, &ballId);
if (CalculatePlayerPartyCount() == PARTY_SIZE)
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
@ -16009,15 +16008,15 @@ static void Cmd_handleballthrow(void)
if (ballId == BALL_HEAL)
{
MonRestorePP(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]]);
HealStatusConditions(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], STATUS1_ANY, gBattlerTarget);
MonRestorePP(GetPartyBattlerData(gBattlerTarget));
HealStatusConditions(GetPartyBattlerData(gBattlerTarget), STATUS1_ANY, gBattlerTarget);
gBattleMons[gBattlerTarget].hp = gBattleMons[gBattlerTarget].maxHP;
SetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_HP, &gBattleMons[gBattlerTarget].hp);
SetMonData(GetPartyBattlerData(gBattlerTarget), MON_DATA_HP, &gBattleMons[gBattlerTarget].hp);
}
else if (ballId == BALL_FRIEND)
{
u32 friendship = (B_FRIEND_BALL_MODIFIER >= GEN_8 ? 150 : 200);
SetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_FRIENDSHIP, &friendship);
SetMonData(GetPartyBattlerData(gBattlerTarget), MON_DATA_FRIENDSHIP, &friendship);
}
}
else // not caught
@ -16139,22 +16138,22 @@ static void Cmd_givecaughtmon(void)
{
u16 lostItem = gBattleStruct->itemLost[B_SIDE_OPPONENT][gBattlerPartyIndexes[GetCatchingBattler()]].originalItem;
if (lostItem != ITEM_NONE && ItemId_GetPocket(lostItem) != POCKET_BERRIES)
SetMonData(&gEnemyParty[gBattlerPartyIndexes[GetCatchingBattler()]], MON_DATA_HELD_ITEM, &lostItem); // Restore non-berry items
SetMonData(GetPartyBattlerData(GetCatchingBattler()), MON_DATA_HELD_ITEM, &lostItem); // Restore non-berry items
}
if (GiveMonToPlayer(&gEnemyParty[gBattlerPartyIndexes[GetCatchingBattler()]]) != MON_GIVEN_TO_PARTY
if (GiveMonToPlayer(GetPartyBattlerData(GetCatchingBattler())) != MON_GIVEN_TO_PARTY
&& gBattleCommunication[MULTISTRING_CHOOSER] != B_MSG_SWAPPED_INTO_PARTY)
{
if (!ShouldShowBoxWasFullMessage())
{
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SENT_SOMEONES_PC;
StringCopy(gStringVar1, GetBoxNamePtr(VarGet(VAR_PC_BOX_TO_SEND_MON)));
GetMonData(&gEnemyParty[gBattlerPartyIndexes[GetCatchingBattler()]], MON_DATA_NICKNAME, gStringVar2);
GetMonData(GetPartyBattlerData(GetCatchingBattler()), MON_DATA_NICKNAME, gStringVar2);
}
else
{
StringCopy(gStringVar1, GetBoxNamePtr(VarGet(VAR_PC_BOX_TO_SEND_MON))); // box the mon was sent to
GetMonData(&gEnemyParty[gBattlerPartyIndexes[GetCatchingBattler()]], MON_DATA_NICKNAME, gStringVar2);
GetMonData(GetPartyBattlerData(GetCatchingBattler()), MON_DATA_NICKNAME, gStringVar2);
StringCopy(gStringVar3, GetBoxNamePtr(GetPCBoxToSendMon())); //box the mon was going to be sent to
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SOMEONES_BOX_FULL;
}
@ -16164,9 +16163,9 @@ static void Cmd_givecaughtmon(void)
gBattleCommunication[MULTISTRING_CHOOSER]++;
}
gBattleResults.caughtMonSpecies = GetMonData(&gEnemyParty[gBattlerPartyIndexes[GetCatchingBattler()]], MON_DATA_SPECIES, NULL);
GetMonData(&gEnemyParty[gBattlerPartyIndexes[GetCatchingBattler()]], MON_DATA_NICKNAME, gBattleResults.caughtMonNick);
gBattleResults.caughtMonBall = GetMonData(&gEnemyParty[gBattlerPartyIndexes[GetCatchingBattler()]], MON_DATA_POKEBALL, NULL);
gBattleResults.caughtMonSpecies = GetMonData(GetPartyBattlerData(GetCatchingBattler()), MON_DATA_SPECIES, NULL);
GetMonData(GetPartyBattlerData(GetCatchingBattler()), MON_DATA_NICKNAME, gBattleResults.caughtMonNick);
gBattleResults.caughtMonBall = GetMonData(GetPartyBattlerData(GetCatchingBattler()), MON_DATA_POKEBALL, NULL);
gSelectedMonPartyId = PARTY_SIZE;
gBattleCommunication[MULTIUSE_STATE] = 0;
@ -16183,8 +16182,8 @@ static void Cmd_trysetcaughtmondexflags(void)
{
CMD_ARGS(const u8 *failInstr);
u32 species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[GetCatchingBattler()]], MON_DATA_SPECIES, NULL);
u32 personality = GetMonData(&gEnemyParty[gBattlerPartyIndexes[GetCatchingBattler()]], MON_DATA_PERSONALITY, NULL);
u32 species = GetMonData(GetPartyBattlerData(GetCatchingBattler()), MON_DATA_SPECIES, NULL);
u32 personality = GetMonData(GetPartyBattlerData(GetCatchingBattler()), MON_DATA_PERSONALITY, NULL);
if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_CAUGHT))
{
@ -16201,7 +16200,7 @@ static void Cmd_displaydexinfo(void)
{
CMD_ARGS();
u16 species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[GetCatchingBattler()]], MON_DATA_SPECIES, NULL);
u16 species = GetMonData(GetPartyBattlerData(GetCatchingBattler()), MON_DATA_SPECIES, NULL);
switch (gBattleCommunication[0])
{
@ -16212,7 +16211,7 @@ static void Cmd_displaydexinfo(void)
case 1:
if (!gPaletteFade.active)
{
struct Pokemon *mon = &gEnemyParty[gBattlerPartyIndexes[GetCatchingBattler()]];
struct Pokemon *mon = GetPartyBattlerData(GetCatchingBattler());
FreeAllWindowBuffers();
gBattleCommunication[TASK_ID] = DisplayCaughtMonDexPage(species,
GetMonData(mon, MON_DATA_IS_SHINY),
@ -16368,14 +16367,14 @@ static void Cmd_trygivecaughtmonnick(void)
case 2:
if (!gPaletteFade.active)
{
GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_NICKNAME, gBattleStruct->caughtMonNick);
GetMonData(GetPartyBattlerData(gBattlerTarget), MON_DATA_NICKNAME, gBattleStruct->caughtMonNick);
FreeAllWindowBuffers();
MainCallback callback = CalculatePlayerPartyCount() == PARTY_SIZE ? ReshowBlankBattleScreenAfterMenu : BattleMainCB2;
DoNamingScreen(NAMING_SCREEN_CAUGHT_MON, gBattleStruct->caughtMonNick,
GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_SPECIES),
GetMonGender(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]]),
GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_PERSONALITY, NULL),
GetMonData(GetPartyBattlerData(gBattlerTarget), MON_DATA_SPECIES),
GetMonGender(GetPartyBattlerData(gBattlerTarget)),
GetMonData(GetPartyBattlerData(gBattlerTarget), MON_DATA_PERSONALITY, NULL),
callback);
gBattleCommunication[MULTIUSE_STATE]++;
@ -16384,7 +16383,7 @@ static void Cmd_trygivecaughtmonnick(void)
case 3:
if (gMain.callback2 == BattleMainCB2 && !gPaletteFade.active)
{
SetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_NICKNAME, gBattleStruct->caughtMonNick);
SetMonData(GetPartyBattlerData(gBattlerTarget), MON_DATA_NICKNAME, gBattleStruct->caughtMonNick);
gBattleCommunication[MULTIUSE_STATE]++;
}
break;
@ -17774,23 +17773,23 @@ static void TryUpdateEvolutionTracker(u32 evolutionCondition, u32 upAmount, u16
if (evolutions[i].params[j].condition == evolutionCondition)
{
// We only have 10 bits to use
u16 val = min(1023, GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattlerAttacker]], MON_DATA_EVOLUTION_TRACKER) + upAmount);
u16 val = min(1023, GetMonData(GetPartyBattlerData(gBattlerAttacker), MON_DATA_EVOLUTION_TRACKER) + upAmount);
// Reset progress if you faint for the recoil method.
switch (evolutionCondition)
{
case IF_USED_MOVE_X_TIMES:
if (evolutions[i].params[j].arg1 == usedMove)
SetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattlerAttacker]], MON_DATA_EVOLUTION_TRACKER, &val);
SetMonData(GetPartyBattlerData(gBattlerAttacker), MON_DATA_EVOLUTION_TRACKER, &val);
break;
case IF_RECOIL_DAMAGE_GE:
if (gBattleMons[gBattlerAttacker].hp == 0)
val = 0;
SetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattlerAttacker]], MON_DATA_EVOLUTION_TRACKER, &val);
SetMonData(GetPartyBattlerData(gBattlerAttacker), MON_DATA_EVOLUTION_TRACKER, &val);
break;
case IF_DEFEAT_X_WITH_ITEMS:
if (GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_SPECIES) == evolutions[i].params[j].arg1
&& GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_HELD_ITEM) == evolutions[i].params[j].arg2)
SetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattlerAttacker]], MON_DATA_EVOLUTION_TRACKER, &val);
if (GetMonData(GetPartyBattlerData(gBattlerTarget), MON_DATA_SPECIES) == evolutions[i].params[j].arg1
&& GetMonData(GetPartyBattlerData(gBattlerTarget), MON_DATA_HELD_ITEM) == evolutions[i].params[j].arg2)
SetMonData(GetPartyBattlerData(gBattlerAttacker), MON_DATA_EVOLUTION_TRACKER, &val);
break;
}
return;
@ -18726,7 +18725,7 @@ void BS_JumpIfCanGigantamax(void)
NATIVE_ARGS(u8 battler, const u8 *jumpInstr);
u32 battler = GetBattlerForBattleScript(cmd->battler);
if (GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_GIGANTAMAX_FACTOR)
if (GetMonData(GetPartyBattlerData(battler), MON_DATA_GIGANTAMAX_FACTOR)
&& GetGMaxTargetSpecies(gBattleMons[battler].species) != SPECIES_NONE)
gBattlescriptCurrInstr = cmd->jumpInstr;
else

View File

@ -110,7 +110,7 @@ bool32 CanTerastallize(u32 battler)
// Returns a battler's Tera type.
u32 GetBattlerTeraType(u32 battler)
{
return GetMonData(&GetBattlerParty(battler)[gBattlerPartyIndexes[battler]], MON_DATA_TERA_TYPE);
return GetMonData(GetPartyBattlerData(battler), MON_DATA_TERA_TYPE);
}
// Uses up a type's Stellar boost.

View File

@ -2655,8 +2655,8 @@ static void SetTowerInterviewData(void)
StripExtCtrlCodes(text);
StringCopy(gSaveBlock2Ptr->frontier.towerInterview.opponentName, text);
GetBattleTowerTrainerLanguage(&gSaveBlock2Ptr->frontier.towerInterview.opponentLanguage, TRAINER_BATTLE_PARAM.opponentA);
gSaveBlock2Ptr->frontier.towerInterview.opponentSpecies = GetMonData(&gEnemyParty[gBattlerPartyIndexes[1]], MON_DATA_SPECIES, NULL);
gSaveBlock2Ptr->frontier.towerInterview.playerSpecies = GetMonData(&gPlayerParty[gBattlerPartyIndexes[0]], MON_DATA_SPECIES, NULL);
gSaveBlock2Ptr->frontier.towerInterview.opponentSpecies = GetMonData(GetPartyBattlerData(1), MON_DATA_SPECIES, NULL);
gSaveBlock2Ptr->frontier.towerInterview.playerSpecies = GetMonData(GetPartyBattlerData(0), MON_DATA_SPECIES, NULL);
for (i = 0; i < VANILLA_POKEMON_NAME_LENGTH + 1; i++)
gSaveBlock2Ptr->frontier.towerInterview.opponentMonNickname[i] = gBattleMons[0].nickname[i];
gSaveBlock2Ptr->frontier.towerBattleOutcome = gBattleOutcome;

View File

@ -1286,8 +1286,8 @@ static void TrySetBattleSeminarShow(void)
bestMoveId = i;
}
opponentSpecies = GetMonData(&gEnemyParty [gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_SPECIES, NULL);
playerSpecies = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gBattlerAttacker]], MON_DATA_SPECIES, NULL);
opponentSpecies = GetMonData(GetPartyBattlerData(gBattlerTarget), MON_DATA_SPECIES, NULL);
playerSpecies = GetMonData(GetPartyBattlerData(gBattlerAttacker), MON_DATA_SPECIES, NULL);
TryPutBattleSeminarOnAir(opponentSpecies, playerSpecies, gMoveSelectionCursor[gBattlerAttacker], gBattleMons[gBattlerAttacker].moves, gBattleMons[gBattlerAttacker].moves[bestMoveId]);
break;
}
@ -1363,15 +1363,14 @@ void BattleTv_ClearExplosionFaintCause(void)
u8 GetBattlerMoveSlotId(u8 battlerId, u16 moveId)
{
s32 i;
struct Pokemon *party;
party = GetBattlerParty(battlerId);
struct Pokemon *mon = GetPartyBattlerData(battlerId);
i = 0;
while (1)
{
if (i >= MAX_MON_MOVES)
break;
if (GetMonData(&party[gBattlerPartyIndexes[battlerId]], MON_DATA_MOVE1 + i, NULL) == moveId)
if (GetMonData(mon, MON_DATA_MOVE1 + i, NULL) == moveId)
break;
i++;
}

View File

@ -1646,8 +1646,8 @@ u8 GetImprisonedMovesCount(u32 battler, u16 move)
u32 GetBattlerAffectionHearts(u32 battler)
{
u8 side = GetBattlerSide(battler);
struct Pokemon *party = GetSideParty(side);
u16 species = GetMonData(&party[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES);
struct Pokemon *mon = GetPartyBattlerData(battler);
u16 species = GetMonData(mon, MON_DATA_SPECIES);
if (side != B_SIDE_PLAYER)
return AFFECTION_NO_HEARTS;
@ -1659,7 +1659,7 @@ u32 GetBattlerAffectionHearts(u32 battler)
| BATTLE_TYPE_SECRET_BASE)))
return AFFECTION_NO_HEARTS;
return GetMonAffectionHearts(&party[gBattlerPartyIndexes[battler]]);
return GetMonAffectionHearts(mon);
}
// gBattlerAttacker is the battler that's trying to raise their stats and due to limitations of RandomUniformExcept, cannot be an argument
@ -4029,7 +4029,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
break;
case ABILITY_ZERO_TO_HERO:
side = GetBattlerSide(battler);
mon = &GetSideParty(side)[gBattlerPartyIndexes[battler]];
mon = GetPartyBattlerData(battler);
if (!gSpecialStatuses[battler].switchInAbilityDone
&& GetMonData(mon, MON_DATA_SPECIES) == SPECIES_PALAFIN_HERO
@ -6119,8 +6119,7 @@ static enum ItemEffect TryEjectPack(u32 battler, enum ItemCaseId caseID)
static u32 ItemRestorePp(u32 battler, u32 itemId, enum ItemCaseId caseID)
{
struct Pokemon *party = GetBattlerParty(battler);
struct Pokemon *mon = &party[gBattlerPartyIndexes[battler]];
struct Pokemon *mon = GetPartyBattlerData(battler);
u32 i, changedPP = 0;
for (i = 0; i < MAX_MON_MOVES; i++)
@ -10117,7 +10116,7 @@ u16 GetBattleFormChangeTargetSpecies(u32 battler, enum FormChanges method)
u32 species = gBattleMons[battler].species;
u32 targetSpecies = species;
const struct FormChange *formChanges = GetSpeciesFormChanges(species);
struct Pokemon *mon = &GetBattlerParty(battler)[gBattlerPartyIndexes[battler]];
struct Pokemon *mon = GetPartyBattlerData(battler);
u16 heldItem = gBattleMons[battler].item;
for (i = 0; formChanges != NULL && formChanges[i].method != FORM_CHANGE_TERMINATOR; i++)
@ -10342,9 +10341,9 @@ struct Pokemon *GetIllusionMonPtr(u32 battler)
if (!gBattleStruct->illusion[battler].set)
{
if (GetBattlerSide(battler) == B_SIDE_PLAYER)
SetIllusionMon(&gPlayerParty[gBattlerPartyIndexes[battler]], battler);
SetIllusionMon(GetPartyBattlerData(battler), battler);
else
SetIllusionMon(&gEnemyParty[gBattlerPartyIndexes[battler]], battler);
SetIllusionMon(GetPartyBattlerData(battler), battler);
}
if (!gBattleStruct->illusion[battler].on)
return NULL;

View File

@ -98,13 +98,13 @@ void AdjustFriendshipOnBattleFaint(u8 battler)
if (gBattleMons[opposingBattlerId].level > gBattleMons[battler].level)
{
if (gBattleMons[opposingBattlerId].level - gBattleMons[battler].level > 29)
AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[battler]], FRIENDSHIP_EVENT_FAINT_LARGE);
AdjustFriendship(GetPartyBattlerData(battler), FRIENDSHIP_EVENT_FAINT_LARGE);
else
AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[battler]], FRIENDSHIP_EVENT_FAINT_SMALL);
AdjustFriendship(GetPartyBattlerData(battler), FRIENDSHIP_EVENT_FAINT_SMALL);
}
else
{
AdjustFriendship(&gPlayerParty[gBattlerPartyIndexes[battler]], FRIENDSHIP_EVENT_FAINT_SMALL);
AdjustFriendship(GetPartyBattlerData(battler), FRIENDSHIP_EVENT_FAINT_SMALL);
}
}

View File

@ -551,7 +551,7 @@ void LaunchAnimationTaskForBackSprite(struct Sprite *sprite, u8 backAnimSet)
gTasks[taskId].tPtrLo = (u32)(sprite);
battlerId = sprite->data[0];
nature = GetNature(&gPlayerParty[gBattlerPartyIndexes[battlerId]]);
nature = GetNature(GetPartyBattlerData(battlerId));
// * 3 below because each back anim has 3 variants depending on nature
animId = 3 * backAnimSet + gNaturesInfo[nature].backAnim;

View File

@ -759,24 +759,24 @@ void RecordedBattle_CheckMovesetChanges(u8 mode)
if (!(gBattleMons[battlerId].status2 & STATUS2_TRANSFORMED))
{
for (j = 0; j < MAX_MON_MOVES; j++)
ppBonuses[j] = (GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PP_BONUSES, NULL) & ((3 << (j << 1)))) >> (j << 1);
ppBonuses[j] = (GetMonData(GetPartyBattlerData(battlerId), MON_DATA_PP_BONUSES, NULL) & ((3 << (j << 1)))) >> (j << 1);
for (j = 0; j < MAX_MON_MOVES; j++)
{
movePp.moves[j] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_MOVE1 + moveSlots[j], NULL);
movePp.currentPp[j] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PP1 + moveSlots[j], NULL);
movePp.moves[j] = GetMonData(GetPartyBattlerData(battlerId), MON_DATA_MOVE1 + moveSlots[j], NULL);
movePp.currentPp[j] = GetMonData(GetPartyBattlerData(battlerId), MON_DATA_PP1 + moveSlots[j], NULL);
movePp.maxPp[j] = ppBonuses[moveSlots[j]];
}
for (j = 0; j < MAX_MON_MOVES; j++)
{
SetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_MOVE1 + j, &movePp.moves[j]);
SetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PP1 + j, &movePp.currentPp[j]);
SetMonData(GetPartyBattlerData(battlerId), MON_DATA_MOVE1 + j, &movePp.moves[j]);
SetMonData(GetPartyBattlerData(battlerId), MON_DATA_PP1 + j, &movePp.currentPp[j]);
}
ppBonusSet = 0;
for (j = 0; j < MAX_MON_MOVES; j++)
ppBonusSet |= movePp.maxPp[j] << (j << 1);
SetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_PP_BONUSES, &ppBonusSet);
SetMonData(GetPartyBattlerData(battlerId), MON_DATA_PP_BONUSES, &ppBonusSet);
}
gChosenMoveByBattler[battlerId] = gBattleMons[battlerId].moves[gBattleStruct->chosenMovePositions[battlerId]];
}

View File

@ -138,13 +138,13 @@ static void CB2_ReshowBattleScreenAfterMenu(void)
LoadAndCreateEnemyShadowSprites();
opponentBattler = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[opponentBattler]], MON_DATA_SPECIES);
species = GetMonData(GetPartyBattlerData(opponentBattler), MON_DATA_SPECIES);
SetBattlerShadowSpriteCallback(opponentBattler, species);
if (IsDoubleBattle())
{
opponentBattler = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
species = GetMonData(&gEnemyParty[gBattlerPartyIndexes[opponentBattler]], MON_DATA_SPECIES);
species = GetMonData(GetPartyBattlerData(opponentBattler), MON_DATA_SPECIES);
SetBattlerShadowSpriteCallback(opponentBattler, species);
}
@ -271,7 +271,7 @@ static bool8 LoadBattlerSpriteGfx(u32 battler)
if (GetBattlerSide(battler) != B_SIDE_PLAYER)
{
if (!gBattleSpritesDataPtr->battlerData[battler].behindSubstitute)
BattleLoadMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[battler]], battler);
BattleLoadMonSpriteGfx(GetPartyBattlerData(battler), battler);
else
BattleLoadSubstituteOrMonSpriteGfx(battler, FALSE);
}
@ -280,7 +280,7 @@ static bool8 LoadBattlerSpriteGfx(u32 battler)
else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL && battler == B_POSITION_PLAYER_LEFT) // Should be checking position, not battler.
DecompressTrainerBackPic(TRAINER_BACK_PIC_WALLY, battler);
else if (!gBattleSpritesDataPtr->battlerData[battler].behindSubstitute)
BattleLoadMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[battler]], battler);
BattleLoadMonSpriteGfx(GetPartyBattlerData(battler), battler);
else
BattleLoadSubstituteOrMonSpriteGfx(battler, FALSE);
@ -302,17 +302,17 @@ void CreateBattlerSprite(u32 battler)
if (GetBattlerSide(battler) != B_SIDE_PLAYER)
{
if (GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_HP) == 0)
if (GetMonData(GetPartyBattlerData(battler), MON_DATA_HP) == 0)
return;
if (gBattleScripting.monCaught) // Don't create opponent sprite if it has been caught.
return;
SetMultiuseSpriteTemplateToPokemon(GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES), GetBattlerPosition(battler));
SetMultiuseSpriteTemplateToPokemon(GetMonData(GetPartyBattlerData(battler), MON_DATA_SPECIES), GetBattlerPosition(battler));
gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2), posY, GetBattlerSpriteSubpriority(battler));
gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler;
gSprites[gBattlerSpriteIds[battler]].callback = SpriteCallbackDummy;
gSprites[gBattlerSpriteIds[battler]].data[0] = battler;
gSprites[gBattlerSpriteIds[battler]].data[2] = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES);
gSprites[gBattlerSpriteIds[battler]].data[2] = GetMonData(GetPartyBattlerData(battler), MON_DATA_SPECIES);
StartSpriteAnim(&gSprites[gBattlerSpriteIds[battler]], 0);
}
@ -338,15 +338,15 @@ void CreateBattlerSprite(u32 battler)
}
else
{
if (!IsValidForBattle(&gPlayerParty[gBattlerPartyIndexes[battler]]))
if (!IsValidForBattle(GetPartyBattlerData(battler)))
return;
SetMultiuseSpriteTemplateToPokemon(GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES), GetBattlerPosition(battler));
SetMultiuseSpriteTemplateToPokemon(GetMonData(GetPartyBattlerData(battler), MON_DATA_SPECIES), GetBattlerPosition(battler));
gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2), posY, GetBattlerSpriteSubpriority(battler));
gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler;
gSprites[gBattlerSpriteIds[battler]].callback = SpriteCallbackDummy;
gSprites[gBattlerSpriteIds[battler]].data[0] = battler;
gSprites[gBattlerSpriteIds[battler]].data[2] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES);
gSprites[gBattlerSpriteIds[battler]].data[2] = GetMonData(GetPartyBattlerData(battler), MON_DATA_SPECIES);
StartSpriteAnim(&gSprites[gBattlerSpriteIds[battler]], 0);
}
@ -373,11 +373,11 @@ static void CreateHealthboxSprite(u32 battler)
SetHealthboxSpriteVisible(healthboxSpriteId);
if (GetBattlerSide(battler) != B_SIDE_PLAYER)
UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &gEnemyParty[gBattlerPartyIndexes[battler]], HEALTHBOX_ALL);
UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], GetPartyBattlerData(battler), HEALTHBOX_ALL);
else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &gPlayerParty[gBattlerPartyIndexes[battler]], HEALTHBOX_SAFARI_ALL_TEXT);
UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], GetPartyBattlerData(battler), HEALTHBOX_SAFARI_ALL_TEXT);
else
UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], &gPlayerParty[gBattlerPartyIndexes[battler]], HEALTHBOX_ALL);
UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], GetPartyBattlerData(battler), HEALTHBOX_ALL);
if (GetBattlerPosition(battler) == B_POSITION_OPPONENT_RIGHT || GetBattlerPosition(battler) == B_POSITION_PLAYER_RIGHT)
DummyBattleInterfaceFunc(gHealthboxSpriteIds[battler], TRUE);
@ -386,12 +386,12 @@ static void CreateHealthboxSprite(u32 battler)
if (GetBattlerSide(battler) != B_SIDE_PLAYER)
{
if (GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_HP) == 0)
if (GetMonData(GetPartyBattlerData(battler), MON_DATA_HP) == 0)
SetHealthboxSpriteInvisible(healthboxSpriteId);
}
else if (!(gBattleTypeFlags & BATTLE_TYPE_SAFARI))
{
if (!IsValidForBattle(&gPlayerParty[gBattlerPartyIndexes[battler]]))
if (!IsValidForBattle(GetPartyBattlerData(battler)))
SetHealthboxSpriteInvisible(healthboxSpriteId);
}
}
@ -399,12 +399,12 @@ static void CreateHealthboxSprite(u32 battler)
static void CreateCaughtMonSprite(void)
{
SetMultiuseSpriteTemplateToPokemon(GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_SPECIES), GetBattlerPosition(gBattlerTarget));
SetMultiuseSpriteTemplateToPokemon(GetMonData(GetPartyBattlerData(gBattlerTarget), MON_DATA_SPECIES), GetBattlerPosition(gBattlerTarget));
gBattlerSpriteIds[gBattlerTarget] = CreateSprite(&gMultiuseSpriteTemplate, DISPLAY_WIDTH / 2, DISPLAY_HEIGHT / 2, GetBattlerSpriteSubpriority(gBattlerTarget));
gSprites[gBattlerSpriteIds[gBattlerTarget]].oam.paletteNum = gBattlerTarget;
gSprites[gBattlerSpriteIds[gBattlerTarget]].callback = SpriteCallbackDummy;
gSprites[gBattlerSpriteIds[gBattlerTarget]].data[0] = gBattlerTarget;
gSprites[gBattlerSpriteIds[gBattlerTarget]].data[2] = GetMonData(&gEnemyParty[gBattlerPartyIndexes[gBattlerTarget]], MON_DATA_SPECIES);
gSprites[gBattlerSpriteIds[gBattlerTarget]].data[2] = GetMonData(GetPartyBattlerData(gBattlerTarget), MON_DATA_SPECIES);
StartSpriteAnim(&gSprites[gBattlerSpriteIds[gBattlerTarget]], 0);