GetBattlerMon cleanup (#6967)
This commit is contained in:
parent
ec15948ea8
commit
5502fe2c5e
@ -866,15 +866,8 @@ bool8 BattleInitAllSprites(u8 *state1, u8 *battler)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
if (IsOnPlayerSide(*battler))
|
if (!IsOnPlayerSide(*battler) || !(gBattleTypeFlags & BATTLE_TYPE_SAFARI))
|
||||||
{
|
|
||||||
if (!(gBattleTypeFlags & BATTLE_TYPE_SAFARI))
|
|
||||||
UpdateHealthboxAttribute(gHealthboxSpriteIds[*battler], GetBattlerMon(*battler), HEALTHBOX_ALL);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
UpdateHealthboxAttribute(gHealthboxSpriteIds[*battler], GetBattlerMon(*battler), HEALTHBOX_ALL);
|
UpdateHealthboxAttribute(gHealthboxSpriteIds[*battler], GetBattlerMon(*battler), HEALTHBOX_ALL);
|
||||||
}
|
|
||||||
SetHealthboxSpriteInvisible(gHealthboxSpriteIds[*battler]);
|
SetHealthboxSpriteInvisible(gHealthboxSpriteIds[*battler]);
|
||||||
(*battler)++;
|
(*battler)++;
|
||||||
if (*battler == gBattlersCount)
|
if (*battler == gBattlersCount)
|
||||||
|
|||||||
@ -1175,12 +1175,13 @@ void SwapHpBarsWithHpText(void)
|
|||||||
|
|
||||||
for (i = 0; i < gBattlersCount; i++)
|
for (i = 0; i < gBattlersCount; i++)
|
||||||
{
|
{
|
||||||
|
struct Pokemon *mon = GetBattlerMon(i);
|
||||||
if (gSprites[gHealthboxSpriteIds[i]].callback == SpriteCallbackDummy
|
if (gSprites[gHealthboxSpriteIds[i]].callback == SpriteCallbackDummy
|
||||||
&& IsOnPlayerSide(i)
|
&& IsOnPlayerSide(i)
|
||||||
&& (GetBattlerCoordsIndex(i) != BATTLE_COORDS_SINGLES || !IsOnPlayerSide(i)))
|
&& (GetBattlerCoordsIndex(i) != BATTLE_COORDS_SINGLES || !IsOnPlayerSide(i)))
|
||||||
{
|
{
|
||||||
s32 currHp = GetMonData(GetBattlerMon(i), MON_DATA_HP);
|
s32 currHp = GetMonData(mon, MON_DATA_HP);
|
||||||
s32 maxHp = GetMonData(GetBattlerMon(i), MON_DATA_MAX_HP);
|
s32 maxHp = GetMonData(mon, MON_DATA_MAX_HP);
|
||||||
bool8 noBars;
|
bool8 noBars;
|
||||||
|
|
||||||
gBattleSpritesDataPtr->battlerData[i].hpNumbersNoBars ^= 1;
|
gBattleSpritesDataPtr->battlerData[i].hpNumbersNoBars ^= 1;
|
||||||
@ -1202,7 +1203,7 @@ void SwapHpBarsWithHpText(void)
|
|||||||
else // text to bars
|
else // text to bars
|
||||||
{
|
{
|
||||||
UpdateStatusIconInHealthbox(gHealthboxSpriteIds[i]);
|
UpdateStatusIconInHealthbox(gHealthboxSpriteIds[i]);
|
||||||
UpdateHealthboxAttribute(gHealthboxSpriteIds[i], GetBattlerMon(i), HEALTHBOX_HEALTH_BAR);
|
UpdateHealthboxAttribute(gHealthboxSpriteIds[i], mon, HEALTHBOX_HEALTH_BAR);
|
||||||
CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_FRAME_END_BAR), (void *)(OBJ_VRAM0 + 0x680 + gSprites[gHealthboxSpriteIds[i]].oam.tileNum * TILE_SIZE_4BPP), 32);
|
CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_FRAME_END_BAR), (void *)(OBJ_VRAM0 + 0x680 + gSprites[gHealthboxSpriteIds[i]].oam.tileNum * TILE_SIZE_4BPP), 32);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1213,7 +1214,7 @@ void SwapHpBarsWithHpText(void)
|
|||||||
if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
|
if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
|
||||||
{
|
{
|
||||||
// Most likely a debug function.
|
// Most likely a debug function.
|
||||||
PrintSafariMonInfo(gHealthboxSpriteIds[i], GetBattlerMon(i));
|
PrintSafariMonInfo(gHealthboxSpriteIds[i], mon);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1226,9 +1227,9 @@ void SwapHpBarsWithHpText(void)
|
|||||||
else // text to bars
|
else // text to bars
|
||||||
{
|
{
|
||||||
UpdateStatusIconInHealthbox(gHealthboxSpriteIds[i]);
|
UpdateStatusIconInHealthbox(gHealthboxSpriteIds[i]);
|
||||||
UpdateHealthboxAttribute(gHealthboxSpriteIds[i], GetBattlerMon(i), HEALTHBOX_HEALTH_BAR);
|
UpdateHealthboxAttribute(gHealthboxSpriteIds[i], mon, HEALTHBOX_HEALTH_BAR);
|
||||||
if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
|
if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
|
||||||
UpdateHealthboxAttribute(gHealthboxSpriteIds[i], GetBattlerMon(i), HEALTHBOX_NICK);
|
UpdateHealthboxAttribute(gHealthboxSpriteIds[i], mon, HEALTHBOX_NICK);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
gSprites[gHealthboxSpriteIds[i]].hMain_Data7 ^= 1;
|
gSprites[gHealthboxSpriteIds[i]].hMain_Data7 ^= 1;
|
||||||
@ -1805,9 +1806,9 @@ static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId)
|
|||||||
|
|
||||||
battler = gSprites[healthboxSpriteId].hMain_Battler;
|
battler = gSprites[healthboxSpriteId].hMain_Battler;
|
||||||
healthBarSpriteId = gSprites[healthboxSpriteId].hMain_HealthBarSpriteId;
|
healthBarSpriteId = gSprites[healthboxSpriteId].hMain_HealthBarSpriteId;
|
||||||
|
status = GetMonData(GetBattlerMon(battler), MON_DATA_STATUS);
|
||||||
if (IsOnPlayerSide(battler))
|
if (IsOnPlayerSide(battler))
|
||||||
{
|
{
|
||||||
status = GetMonData(GetBattlerMon(battler), MON_DATA_STATUS);
|
|
||||||
switch (GetBattlerCoordsIndex(battler))
|
switch (GetBattlerCoordsIndex(battler))
|
||||||
{
|
{
|
||||||
case BATTLE_COORDS_SINGLES:
|
case BATTLE_COORDS_SINGLES:
|
||||||
@ -1820,7 +1821,6 @@ static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
status = GetMonData(GetBattlerMon(battler), MON_DATA_STATUS);
|
|
||||||
tileNumAdder = 0x11;
|
tileNumAdder = 0x11;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -10158,10 +10158,7 @@ static void Cmd_various(void)
|
|||||||
case VARIOUS_UPDATE_NICK:
|
case VARIOUS_UPDATE_NICK:
|
||||||
{
|
{
|
||||||
VARIOUS_ARGS();
|
VARIOUS_ARGS();
|
||||||
if (IsOnPlayerSide(battler))
|
mon = GetBattlerMon(battler);
|
||||||
mon = GetBattlerMon(battler);
|
|
||||||
else
|
|
||||||
mon = GetBattlerMon(battler);
|
|
||||||
UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], mon, HEALTHBOX_NICK);
|
UpdateHealthboxAttribute(gHealthboxSpriteIds[battler], mon, HEALTHBOX_NICK);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -15848,7 +15845,8 @@ static void Cmd_handleballthrow(void)
|
|||||||
MarkBattlerForControllerExec(gBattlerAttacker);
|
MarkBattlerForControllerExec(gBattlerAttacker);
|
||||||
TryBattleFormChange(gBattlerTarget, FORM_CHANGE_END_BATTLE);
|
TryBattleFormChange(gBattlerTarget, FORM_CHANGE_END_BATTLE);
|
||||||
gBattlescriptCurrInstr = BattleScript_SuccessBallThrow;
|
gBattlescriptCurrInstr = BattleScript_SuccessBallThrow;
|
||||||
SetMonData(GetBattlerMon(gBattlerTarget), MON_DATA_POKEBALL, &ballId);
|
struct Pokemon *caughtMon = GetBattlerMon(gBattlerTarget);
|
||||||
|
SetMonData(caughtMon, MON_DATA_POKEBALL, &ballId);
|
||||||
|
|
||||||
if (CalculatePlayerPartyCount() == PARTY_SIZE)
|
if (CalculatePlayerPartyCount() == PARTY_SIZE)
|
||||||
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
|
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
|
||||||
@ -15857,15 +15855,15 @@ static void Cmd_handleballthrow(void)
|
|||||||
|
|
||||||
if (ballId == BALL_HEAL)
|
if (ballId == BALL_HEAL)
|
||||||
{
|
{
|
||||||
MonRestorePP(GetBattlerMon(gBattlerTarget));
|
MonRestorePP(caughtMon);
|
||||||
HealStatusConditions(GetBattlerMon(gBattlerTarget), STATUS1_ANY, gBattlerTarget);
|
HealStatusConditions(caughtMon, STATUS1_ANY, gBattlerTarget);
|
||||||
gBattleMons[gBattlerTarget].hp = gBattleMons[gBattlerTarget].maxHP;
|
gBattleMons[gBattlerTarget].hp = gBattleMons[gBattlerTarget].maxHP;
|
||||||
SetMonData(GetBattlerMon(gBattlerTarget), MON_DATA_HP, &gBattleMons[gBattlerTarget].hp);
|
SetMonData(caughtMon, MON_DATA_HP, &gBattleMons[gBattlerTarget].hp);
|
||||||
}
|
}
|
||||||
else if (ballId == BALL_FRIEND)
|
else if (ballId == BALL_FRIEND)
|
||||||
{
|
{
|
||||||
u32 friendship = (B_FRIEND_BALL_MODIFIER >= GEN_8 ? 150 : 200);
|
u32 friendship = (B_FRIEND_BALL_MODIFIER >= GEN_8 ? 150 : 200);
|
||||||
SetMonData(GetBattlerMon(gBattlerTarget), MON_DATA_FRIENDSHIP, &friendship);
|
SetMonData(caughtMon, MON_DATA_FRIENDSHIP, &friendship);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else // mon may be caught, calculate shakes
|
else // mon may be caught, calculate shakes
|
||||||
@ -15907,7 +15905,8 @@ static void Cmd_handleballthrow(void)
|
|||||||
|
|
||||||
TryBattleFormChange(gBattlerTarget, FORM_CHANGE_END_BATTLE);
|
TryBattleFormChange(gBattlerTarget, FORM_CHANGE_END_BATTLE);
|
||||||
gBattlescriptCurrInstr = BattleScript_SuccessBallThrow;
|
gBattlescriptCurrInstr = BattleScript_SuccessBallThrow;
|
||||||
SetMonData(GetBattlerMon(gBattlerTarget), MON_DATA_POKEBALL, &ballId);
|
struct Pokemon *caughtMon = GetBattlerMon(gBattlerTarget);
|
||||||
|
SetMonData(caughtMon, MON_DATA_POKEBALL, &ballId);
|
||||||
|
|
||||||
if (CalculatePlayerPartyCount() == PARTY_SIZE)
|
if (CalculatePlayerPartyCount() == PARTY_SIZE)
|
||||||
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
|
gBattleCommunication[MULTISTRING_CHOOSER] = 0;
|
||||||
@ -15916,15 +15915,15 @@ static void Cmd_handleballthrow(void)
|
|||||||
|
|
||||||
if (ballId == BALL_HEAL)
|
if (ballId == BALL_HEAL)
|
||||||
{
|
{
|
||||||
MonRestorePP(GetBattlerMon(gBattlerTarget));
|
MonRestorePP(caughtMon);
|
||||||
HealStatusConditions(GetBattlerMon(gBattlerTarget), STATUS1_ANY, gBattlerTarget);
|
HealStatusConditions(caughtMon, STATUS1_ANY, gBattlerTarget);
|
||||||
gBattleMons[gBattlerTarget].hp = gBattleMons[gBattlerTarget].maxHP;
|
gBattleMons[gBattlerTarget].hp = gBattleMons[gBattlerTarget].maxHP;
|
||||||
SetMonData(GetBattlerMon(gBattlerTarget), MON_DATA_HP, &gBattleMons[gBattlerTarget].hp);
|
SetMonData(caughtMon, MON_DATA_HP, &gBattleMons[gBattlerTarget].hp);
|
||||||
}
|
}
|
||||||
else if (ballId == BALL_FRIEND)
|
else if (ballId == BALL_FRIEND)
|
||||||
{
|
{
|
||||||
u32 friendship = (B_FRIEND_BALL_MODIFIER >= GEN_8 ? 150 : 200);
|
u32 friendship = (B_FRIEND_BALL_MODIFIER >= GEN_8 ? 150 : 200);
|
||||||
SetMonData(GetBattlerMon(gBattlerTarget), MON_DATA_FRIENDSHIP, &friendship);
|
SetMonData(caughtMon, MON_DATA_FRIENDSHIP, &friendship);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else // not caught
|
else // not caught
|
||||||
@ -16042,26 +16041,28 @@ static void Cmd_givecaughtmon(void)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case GIVECAUGHTMON_GIVE_AND_SHOW_MSG:
|
case GIVECAUGHTMON_GIVE_AND_SHOW_MSG:
|
||||||
|
{
|
||||||
|
struct Pokemon *caughtMon = GetBattlerMon(GetCatchingBattler());
|
||||||
if (B_RESTORE_HELD_BATTLE_ITEMS >= GEN_9)
|
if (B_RESTORE_HELD_BATTLE_ITEMS >= GEN_9)
|
||||||
{
|
{
|
||||||
u16 lostItem = gBattleStruct->itemLost[B_SIDE_OPPONENT][gBattlerPartyIndexes[GetCatchingBattler()]].originalItem;
|
u16 lostItem = gBattleStruct->itemLost[B_SIDE_OPPONENT][gBattlerPartyIndexes[GetCatchingBattler()]].originalItem;
|
||||||
if (lostItem != ITEM_NONE && GetItemPocket(lostItem) != POCKET_BERRIES)
|
if (lostItem != ITEM_NONE && GetItemPocket(lostItem) != POCKET_BERRIES)
|
||||||
SetMonData(GetBattlerMon(GetCatchingBattler()), MON_DATA_HELD_ITEM, &lostItem); // Restore non-berry items
|
SetMonData(caughtMon, MON_DATA_HELD_ITEM, &lostItem); // Restore non-berry items
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GiveMonToPlayer(GetBattlerMon(GetCatchingBattler())) != MON_GIVEN_TO_PARTY
|
if (GiveMonToPlayer(caughtMon) != MON_GIVEN_TO_PARTY
|
||||||
&& gBattleCommunication[MULTISTRING_CHOOSER] != B_MSG_SWAPPED_INTO_PARTY)
|
&& gBattleCommunication[MULTISTRING_CHOOSER] != B_MSG_SWAPPED_INTO_PARTY)
|
||||||
{
|
{
|
||||||
if (!ShouldShowBoxWasFullMessage())
|
if (!ShouldShowBoxWasFullMessage())
|
||||||
{
|
{
|
||||||
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SENT_SOMEONES_PC;
|
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SENT_SOMEONES_PC;
|
||||||
StringCopy(gStringVar1, GetBoxNamePtr(VarGet(VAR_PC_BOX_TO_SEND_MON)));
|
StringCopy(gStringVar1, GetBoxNamePtr(VarGet(VAR_PC_BOX_TO_SEND_MON)));
|
||||||
GetMonData(GetBattlerMon(GetCatchingBattler()), MON_DATA_NICKNAME, gStringVar2);
|
GetMonData(caughtMon, MON_DATA_NICKNAME, gStringVar2);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
StringCopy(gStringVar1, GetBoxNamePtr(VarGet(VAR_PC_BOX_TO_SEND_MON))); // box the mon was sent to
|
StringCopy(gStringVar1, GetBoxNamePtr(VarGet(VAR_PC_BOX_TO_SEND_MON))); // box the mon was sent to
|
||||||
GetMonData(GetBattlerMon(GetCatchingBattler()), MON_DATA_NICKNAME, gStringVar2);
|
GetMonData(caughtMon, MON_DATA_NICKNAME, gStringVar2);
|
||||||
StringCopy(gStringVar3, GetBoxNamePtr(GetPCBoxToSendMon())); //box the mon was going to be sent to
|
StringCopy(gStringVar3, GetBoxNamePtr(GetPCBoxToSendMon())); //box the mon was going to be sent to
|
||||||
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SOMEONES_BOX_FULL;
|
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SOMEONES_BOX_FULL;
|
||||||
}
|
}
|
||||||
@ -16071,9 +16072,9 @@ static void Cmd_givecaughtmon(void)
|
|||||||
gBattleCommunication[MULTISTRING_CHOOSER]++;
|
gBattleCommunication[MULTISTRING_CHOOSER]++;
|
||||||
}
|
}
|
||||||
|
|
||||||
gBattleResults.caughtMonSpecies = GetMonData(GetBattlerMon(GetCatchingBattler()), MON_DATA_SPECIES, NULL);
|
gBattleResults.caughtMonSpecies = GetMonData(caughtMon, MON_DATA_SPECIES, NULL);
|
||||||
GetMonData(GetBattlerMon(GetCatchingBattler()), MON_DATA_NICKNAME, gBattleResults.caughtMonNick);
|
GetMonData(caughtMon, MON_DATA_NICKNAME, gBattleResults.caughtMonNick);
|
||||||
gBattleResults.caughtMonBall = GetMonData(GetBattlerMon(GetCatchingBattler()), MON_DATA_POKEBALL, NULL);
|
gBattleResults.caughtMonBall = GetMonData(caughtMon, MON_DATA_POKEBALL, NULL);
|
||||||
|
|
||||||
gSelectedMonPartyId = PARTY_SIZE;
|
gSelectedMonPartyId = PARTY_SIZE;
|
||||||
gBattleCommunication[MULTIUSE_STATE] = 0;
|
gBattleCommunication[MULTIUSE_STATE] = 0;
|
||||||
@ -16084,14 +16085,16 @@ static void Cmd_givecaughtmon(void)
|
|||||||
gBattlescriptCurrInstr = cmd->nextInstr;
|
gBattlescriptCurrInstr = cmd->nextInstr;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void Cmd_trysetcaughtmondexflags(void)
|
static void Cmd_trysetcaughtmondexflags(void)
|
||||||
{
|
{
|
||||||
CMD_ARGS(const u8 *failInstr);
|
CMD_ARGS(const u8 *failInstr);
|
||||||
|
|
||||||
u32 species = GetMonData(GetBattlerMon(GetCatchingBattler()), MON_DATA_SPECIES, NULL);
|
struct Pokemon *caughtMon = GetBattlerMon(GetCatchingBattler());
|
||||||
u32 personality = GetMonData(GetBattlerMon(GetCatchingBattler()), MON_DATA_PERSONALITY, NULL);
|
u32 species = GetMonData(caughtMon, MON_DATA_SPECIES, NULL);
|
||||||
|
u32 personality = GetMonData(caughtMon, MON_DATA_PERSONALITY, NULL);
|
||||||
|
|
||||||
if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_CAUGHT))
|
if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_CAUGHT))
|
||||||
{
|
{
|
||||||
@ -16108,7 +16111,8 @@ static void Cmd_displaydexinfo(void)
|
|||||||
{
|
{
|
||||||
CMD_ARGS();
|
CMD_ARGS();
|
||||||
|
|
||||||
u16 species = GetMonData(GetBattlerMon(GetCatchingBattler()), MON_DATA_SPECIES, NULL);
|
struct Pokemon *mon = GetBattlerMon(GetCatchingBattler());
|
||||||
|
u16 species = GetMonData(mon, MON_DATA_SPECIES, NULL);
|
||||||
|
|
||||||
switch (gBattleCommunication[0])
|
switch (gBattleCommunication[0])
|
||||||
{
|
{
|
||||||
@ -16119,7 +16123,6 @@ static void Cmd_displaydexinfo(void)
|
|||||||
case 1:
|
case 1:
|
||||||
if (!gPaletteFade.active)
|
if (!gPaletteFade.active)
|
||||||
{
|
{
|
||||||
struct Pokemon *mon = GetBattlerMon(GetCatchingBattler());
|
|
||||||
FreeAllWindowBuffers();
|
FreeAllWindowBuffers();
|
||||||
gBattleCommunication[TASK_ID] = DisplayCaughtMonDexPage(species,
|
gBattleCommunication[TASK_ID] = DisplayCaughtMonDexPage(species,
|
||||||
GetMonData(mon, MON_DATA_IS_SHINY),
|
GetMonData(mon, MON_DATA_IS_SHINY),
|
||||||
@ -16275,14 +16278,15 @@ static void Cmd_trygivecaughtmonnick(void)
|
|||||||
case 2:
|
case 2:
|
||||||
if (!gPaletteFade.active)
|
if (!gPaletteFade.active)
|
||||||
{
|
{
|
||||||
GetMonData(GetBattlerMon(gBattlerTarget), MON_DATA_NICKNAME, gBattleStruct->caughtMonNick);
|
struct Pokemon *caughtMon = GetBattlerMon(gBattlerTarget);
|
||||||
|
GetMonData(caughtMon, MON_DATA_NICKNAME, gBattleStruct->caughtMonNick);
|
||||||
FreeAllWindowBuffers();
|
FreeAllWindowBuffers();
|
||||||
MainCallback callback = CalculatePlayerPartyCount() == PARTY_SIZE ? ReshowBlankBattleScreenAfterMenu : BattleMainCB2;
|
MainCallback callback = CalculatePlayerPartyCount() == PARTY_SIZE ? ReshowBlankBattleScreenAfterMenu : BattleMainCB2;
|
||||||
|
|
||||||
DoNamingScreen(NAMING_SCREEN_CAUGHT_MON, gBattleStruct->caughtMonNick,
|
DoNamingScreen(NAMING_SCREEN_CAUGHT_MON, gBattleStruct->caughtMonNick,
|
||||||
GetMonData(GetBattlerMon(gBattlerTarget), MON_DATA_SPECIES),
|
GetMonData(caughtMon, MON_DATA_SPECIES),
|
||||||
GetMonGender(GetBattlerMon(gBattlerTarget)),
|
GetMonGender(caughtMon),
|
||||||
GetMonData(GetBattlerMon(gBattlerTarget), MON_DATA_PERSONALITY, NULL),
|
GetMonData(caughtMon, MON_DATA_PERSONALITY, NULL),
|
||||||
callback);
|
callback);
|
||||||
|
|
||||||
gBattleCommunication[MULTIUSE_STATE]++;
|
gBattleCommunication[MULTIUSE_STATE]++;
|
||||||
@ -17674,24 +17678,26 @@ static void TryUpdateEvolutionTracker(u32 evolutionCondition, u32 upAmount, u16
|
|||||||
{
|
{
|
||||||
if (evolutions[i].params[j].condition == evolutionCondition)
|
if (evolutions[i].params[j].condition == evolutionCondition)
|
||||||
{
|
{
|
||||||
|
struct Pokemon *monAtk = GetBattlerMon(gBattlerAttacker);
|
||||||
|
struct Pokemon *monDef = GetBattlerMon(gBattlerTarget);
|
||||||
// We only have 10 bits to use
|
// We only have 10 bits to use
|
||||||
u16 val = min(1023, GetMonData(GetBattlerMon(gBattlerAttacker), MON_DATA_EVOLUTION_TRACKER) + upAmount);
|
u16 val = min(1023, GetMonData(monAtk, MON_DATA_EVOLUTION_TRACKER) + upAmount);
|
||||||
// Reset progress if you faint for the recoil method.
|
// Reset progress if you faint for the recoil method.
|
||||||
switch (evolutionCondition)
|
switch (evolutionCondition)
|
||||||
{
|
{
|
||||||
case IF_USED_MOVE_X_TIMES:
|
case IF_USED_MOVE_X_TIMES:
|
||||||
if (evolutions[i].params[j].arg1 == usedMove)
|
if (evolutions[i].params[j].arg1 == usedMove)
|
||||||
SetMonData(GetBattlerMon(gBattlerAttacker), MON_DATA_EVOLUTION_TRACKER, &val);
|
SetMonData(monAtk, MON_DATA_EVOLUTION_TRACKER, &val);
|
||||||
break;
|
break;
|
||||||
case IF_RECOIL_DAMAGE_GE:
|
case IF_RECOIL_DAMAGE_GE:
|
||||||
if (gBattleMons[gBattlerAttacker].hp == 0)
|
if (gBattleMons[gBattlerAttacker].hp == 0)
|
||||||
val = 0;
|
val = 0;
|
||||||
SetMonData(GetBattlerMon(gBattlerAttacker), MON_DATA_EVOLUTION_TRACKER, &val);
|
SetMonData(monAtk, MON_DATA_EVOLUTION_TRACKER, &val);
|
||||||
break;
|
break;
|
||||||
case IF_DEFEAT_X_WITH_ITEMS:
|
case IF_DEFEAT_X_WITH_ITEMS:
|
||||||
if (GetMonData(GetBattlerMon(gBattlerTarget), MON_DATA_SPECIES) == evolutions[i].params[j].arg1
|
if (GetMonData(monDef, MON_DATA_SPECIES) == evolutions[i].params[j].arg1
|
||||||
&& GetMonData(GetBattlerMon(gBattlerTarget), MON_DATA_HELD_ITEM) == evolutions[i].params[j].arg2)
|
&& GetMonData(monDef, MON_DATA_HELD_ITEM) == evolutions[i].params[j].arg2)
|
||||||
SetMonData(GetBattlerMon(gBattlerAttacker), MON_DATA_EVOLUTION_TRACKER, &val);
|
SetMonData(monAtk, MON_DATA_EVOLUTION_TRACKER, &val);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
|||||||
@ -10194,12 +10194,7 @@ bool32 TryClearIllusion(u32 battler, u32 caseID)
|
|||||||
struct Pokemon *GetIllusionMonPtr(u32 battler)
|
struct Pokemon *GetIllusionMonPtr(u32 battler)
|
||||||
{
|
{
|
||||||
if (gBattleStruct->illusion[battler].state == ILLUSION_NOT_SET)
|
if (gBattleStruct->illusion[battler].state == ILLUSION_NOT_SET)
|
||||||
{
|
SetIllusionMon(GetBattlerMon(battler), battler);
|
||||||
if (IsOnPlayerSide(battler))
|
|
||||||
SetIllusionMon(GetBattlerMon(battler), battler);
|
|
||||||
else
|
|
||||||
SetIllusionMon(GetBattlerMon(battler), battler);
|
|
||||||
}
|
|
||||||
if (gBattleStruct->illusion[battler].state != ILLUSION_ON)
|
if (gBattleStruct->illusion[battler].state != ILLUSION_ON)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
|||||||
@ -95,17 +95,10 @@ void AdjustFriendshipOnBattleFaint(u8 battler)
|
|||||||
opposingBattlerId = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
|
opposingBattlerId = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gBattleMons[opposingBattlerId].level > gBattleMons[battler].level)
|
if (gBattleMons[opposingBattlerId].level - gBattleMons[battler].level > 29)
|
||||||
{
|
AdjustFriendship(GetBattlerMon(battler), FRIENDSHIP_EVENT_FAINT_LARGE);
|
||||||
if (gBattleMons[opposingBattlerId].level - gBattleMons[battler].level > 29)
|
|
||||||
AdjustFriendship(GetBattlerMon(battler), FRIENDSHIP_EVENT_FAINT_LARGE);
|
|
||||||
else
|
|
||||||
AdjustFriendship(GetBattlerMon(battler), FRIENDSHIP_EVENT_FAINT_SMALL);
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
|
||||||
AdjustFriendship(GetBattlerMon(battler), FRIENDSHIP_EVENT_FAINT_SMALL);
|
AdjustFriendship(GetBattlerMon(battler), FRIENDSHIP_EVENT_FAINT_SMALL);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SwitchPartyOrderInGameMulti(u8 battler, u8 arg1)
|
void SwitchPartyOrderInGameMulti(u8 battler, u8 arg1)
|
||||||
|
|||||||
@ -758,25 +758,26 @@ void RecordedBattle_CheckMovesetChanges(u8 mode)
|
|||||||
|
|
||||||
if (!(gBattleMons[battler].status2 & STATUS2_TRANSFORMED))
|
if (!(gBattleMons[battler].status2 & STATUS2_TRANSFORMED))
|
||||||
{
|
{
|
||||||
|
struct Pokemon *mon = GetBattlerMon(battler);
|
||||||
for (j = 0; j < MAX_MON_MOVES; j++)
|
for (j = 0; j < MAX_MON_MOVES; j++)
|
||||||
ppBonuses[j] = (GetMonData(GetBattlerMon(battler), MON_DATA_PP_BONUSES, NULL) & ((3 << (j << 1)))) >> (j << 1);
|
ppBonuses[j] = (GetMonData(mon, MON_DATA_PP_BONUSES, NULL) & ((3 << (j << 1)))) >> (j << 1);
|
||||||
|
|
||||||
for (j = 0; j < MAX_MON_MOVES; j++)
|
for (j = 0; j < MAX_MON_MOVES; j++)
|
||||||
{
|
{
|
||||||
movePp.moves[j] = GetMonData(GetBattlerMon(battler), MON_DATA_MOVE1 + moveSlots[j], NULL);
|
movePp.moves[j] = GetMonData(mon, MON_DATA_MOVE1 + moveSlots[j], NULL);
|
||||||
movePp.currentPp[j] = GetMonData(GetBattlerMon(battler), MON_DATA_PP1 + moveSlots[j], NULL);
|
movePp.currentPp[j] = GetMonData(mon, MON_DATA_PP1 + moveSlots[j], NULL);
|
||||||
movePp.maxPp[j] = ppBonuses[moveSlots[j]];
|
movePp.maxPp[j] = ppBonuses[moveSlots[j]];
|
||||||
}
|
}
|
||||||
for (j = 0; j < MAX_MON_MOVES; j++)
|
for (j = 0; j < MAX_MON_MOVES; j++)
|
||||||
{
|
{
|
||||||
SetMonData(GetBattlerMon(battler), MON_DATA_MOVE1 + j, &movePp.moves[j]);
|
SetMonData(mon, MON_DATA_MOVE1 + j, &movePp.moves[j]);
|
||||||
SetMonData(GetBattlerMon(battler), MON_DATA_PP1 + j, &movePp.currentPp[j]);
|
SetMonData(mon, MON_DATA_PP1 + j, &movePp.currentPp[j]);
|
||||||
}
|
}
|
||||||
ppBonusSet = 0;
|
ppBonusSet = 0;
|
||||||
for (j = 0; j < MAX_MON_MOVES; j++)
|
for (j = 0; j < MAX_MON_MOVES; j++)
|
||||||
ppBonusSet |= movePp.maxPp[j] << (j << 1);
|
ppBonusSet |= movePp.maxPp[j] << (j << 1);
|
||||||
|
|
||||||
SetMonData(GetBattlerMon(battler), MON_DATA_PP_BONUSES, &ppBonusSet);
|
SetMonData(mon, MON_DATA_PP_BONUSES, &ppBonusSet);
|
||||||
}
|
}
|
||||||
gChosenMoveByBattler[battler] = gBattleMons[battler].moves[gBattleStruct->chosenMovePositions[battler]];
|
gChosenMoveByBattler[battler] = gBattleMons[battler].moves[gBattleStruct->chosenMovePositions[battler]];
|
||||||
}
|
}
|
||||||
|
|||||||
@ -302,17 +302,19 @@ void CreateBattlerSprite(u32 battler)
|
|||||||
|
|
||||||
if (!IsOnPlayerSide(battler))
|
if (!IsOnPlayerSide(battler))
|
||||||
{
|
{
|
||||||
if (GetMonData(GetBattlerMon(battler), MON_DATA_HP) == 0)
|
struct Pokemon *mon = GetBattlerMon(battler);
|
||||||
|
if (GetMonData(mon, MON_DATA_HP) == 0)
|
||||||
return;
|
return;
|
||||||
if (gBattleScripting.monCaught) // Don't create opponent sprite if it has been caught.
|
if (gBattleScripting.monCaught) // Don't create opponent sprite if it has been caught.
|
||||||
return;
|
return;
|
||||||
|
u32 species = GetMonData(mon, MON_DATA_SPECIES);
|
||||||
|
|
||||||
SetMultiuseSpriteTemplateToPokemon(GetMonData(GetBattlerMon(battler), MON_DATA_SPECIES), GetBattlerPosition(battler));
|
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(battler));
|
||||||
gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2), posY, GetBattlerSpriteSubpriority(battler));
|
gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2), posY, GetBattlerSpriteSubpriority(battler));
|
||||||
gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler;
|
gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler;
|
||||||
gSprites[gBattlerSpriteIds[battler]].callback = SpriteCallbackDummy;
|
gSprites[gBattlerSpriteIds[battler]].callback = SpriteCallbackDummy;
|
||||||
gSprites[gBattlerSpriteIds[battler]].data[0] = battler;
|
gSprites[gBattlerSpriteIds[battler]].data[0] = battler;
|
||||||
gSprites[gBattlerSpriteIds[battler]].data[2] = GetMonData(GetBattlerMon(battler), MON_DATA_SPECIES);
|
gSprites[gBattlerSpriteIds[battler]].data[2] = species;
|
||||||
|
|
||||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[battler]], 0);
|
StartSpriteAnim(&gSprites[gBattlerSpriteIds[battler]], 0);
|
||||||
}
|
}
|
||||||
@ -338,15 +340,17 @@ void CreateBattlerSprite(u32 battler)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!IsValidForBattle(GetBattlerMon(battler)))
|
struct Pokemon *mon = GetBattlerMon(battler);
|
||||||
|
if (!IsValidForBattle(mon))
|
||||||
return;
|
return;
|
||||||
|
u32 species = GetMonData(mon, MON_DATA_SPECIES);
|
||||||
|
|
||||||
SetMultiuseSpriteTemplateToPokemon(GetMonData(GetBattlerMon(battler), MON_DATA_SPECIES), GetBattlerPosition(battler));
|
SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(battler));
|
||||||
gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2), posY, GetBattlerSpriteSubpriority(battler));
|
gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2), posY, GetBattlerSpriteSubpriority(battler));
|
||||||
gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler;
|
gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler;
|
||||||
gSprites[gBattlerSpriteIds[battler]].callback = SpriteCallbackDummy;
|
gSprites[gBattlerSpriteIds[battler]].callback = SpriteCallbackDummy;
|
||||||
gSprites[gBattlerSpriteIds[battler]].data[0] = battler;
|
gSprites[gBattlerSpriteIds[battler]].data[0] = battler;
|
||||||
gSprites[gBattlerSpriteIds[battler]].data[2] = GetMonData(GetBattlerMon(battler), MON_DATA_SPECIES);
|
gSprites[gBattlerSpriteIds[battler]].data[2] = species;
|
||||||
|
|
||||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[battler]], 0);
|
StartSpriteAnim(&gSprites[gBattlerSpriteIds[battler]], 0);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user