Merge commit '2044bea883d08ec9266d21ac0cd6a56c3e0d5962' into pret-merge
Conflicts: include/battle.h include/battle_ai_script_commands.h include/battle_anim.h include/battle_controllers.h include/battle_gfx_sfx_util.h include/battle_main.h include/battle_script_commands.h include/battle_util.h include/pokemon.h include/recorded_battle.h src/battle_ai_script_commands.c src/battle_anim.c src/battle_anim_mons.c src/battle_anim_sound_tasks.c src/battle_anim_status_effects.c src/battle_controller_link_opponent.c src/battle_controller_link_partner.c src/battle_controller_opponent.c src/battle_controller_player.c src/battle_controller_player_partner.c src/battle_controller_recorded_opponent.c src/battle_controller_recorded_player.c src/battle_controller_wally.c src/battle_controllers.c src/battle_gfx_sfx_util.c src/battle_interface.c src/battle_main.c src/battle_message.c src/battle_records.c src/battle_script_commands.c src/battle_tv.c src/battle_util.c src/battle_util2.c src/pokeball.c src/pokemon.c src/recorded_battle.c src/reshow_battle_screen.c
This commit is contained in:
commit
2945c83bbc
@ -859,51 +859,51 @@ static inline bool32 IsBattleMoveRecoil(u32 move)
|
||||
return GetMoveRecoil(move) > 0 || GetMoveEffect(move) == EFFECT_RECOIL_IF_MISS;
|
||||
}
|
||||
|
||||
/* Checks if 'battlerId' is any of the types.
|
||||
/* Checks if 'battler' is any of the types.
|
||||
* Passing multiple types is more efficient than calling this multiple
|
||||
* times with one type because it shares the 'GetBattlerTypes' result. */
|
||||
#define _IS_BATTLER_ANY_TYPE(battlerId, ignoreTera, ...) \
|
||||
({ \
|
||||
u32 types[3]; \
|
||||
GetBattlerTypes(battlerId, ignoreTera, types); \
|
||||
#define _IS_BATTLER_ANY_TYPE(battler, ignoreTera, ...) \
|
||||
({ \
|
||||
u32 types[3]; \
|
||||
GetBattlerTypes(battler, ignoreTera, types); \
|
||||
RECURSIVELY(R_FOR_EACH(_IS_BATTLER_ANY_TYPE_HELPER, __VA_ARGS__)) FALSE; \
|
||||
})
|
||||
|
||||
#define _IS_BATTLER_ANY_TYPE_HELPER(type) (types[0] == type) || (types[1] == type) || (types[2] == type) ||
|
||||
|
||||
#define IS_BATTLER_ANY_TYPE(battlerId, ...) _IS_BATTLER_ANY_TYPE(battlerId, FALSE, __VA_ARGS__)
|
||||
#define IS_BATTLER_ANY_TYPE(battler, ...) _IS_BATTLER_ANY_TYPE(battler, FALSE, __VA_ARGS__)
|
||||
#define IS_BATTLER_OF_TYPE IS_BATTLER_ANY_TYPE
|
||||
#define IS_BATTLER_ANY_BASE_TYPE(battlerId, ...) _IS_BATTLER_ANY_TYPE(battlerId, TRUE, __VA_ARGS__)
|
||||
#define IS_BATTLER_ANY_BASE_TYPE(battler, ...) _IS_BATTLER_ANY_TYPE(battler, TRUE, __VA_ARGS__)
|
||||
#define IS_BATTLER_OF_BASE_TYPE IS_BATTLER_ANY_BASE_TYPE
|
||||
|
||||
#define IS_BATTLER_TYPELESS(battlerId) \
|
||||
({ \
|
||||
u32 types[3]; \
|
||||
GetBattlerTypes(battlerId, FALSE, types); \
|
||||
#define IS_BATTLER_TYPELESS(battlerId) \
|
||||
({ \
|
||||
u32 types[3]; \
|
||||
GetBattlerTypes(battlerId, FALSE, types); \
|
||||
types[0] == TYPE_MYSTERY && types[1] == TYPE_MYSTERY && types[2] == TYPE_MYSTERY; \
|
||||
})
|
||||
|
||||
#define SET_BATTLER_TYPE(battlerId, type) \
|
||||
{ \
|
||||
gBattleMons[battlerId].types[0] = type; \
|
||||
gBattleMons[battlerId].types[1] = type; \
|
||||
gBattleMons[battlerId].types[2] = TYPE_MYSTERY; \
|
||||
#define SET_BATTLER_TYPE(battler, type) \
|
||||
{ \
|
||||
gBattleMons[battler].types[0] = type; \
|
||||
gBattleMons[battler].types[1] = type; \
|
||||
gBattleMons[battler].types[2] = TYPE_MYSTERY; \
|
||||
}
|
||||
|
||||
#define RESTORE_BATTLER_TYPE(battlerId) \
|
||||
{ \
|
||||
gBattleMons[battlerId].types[0] = gSpeciesInfo[gBattleMons[battlerId].species].types[0]; \
|
||||
gBattleMons[battlerId].types[1] = gSpeciesInfo[gBattleMons[battlerId].species].types[1]; \
|
||||
gBattleMons[battlerId].types[2] = TYPE_MYSTERY; \
|
||||
#define RESTORE_BATTLER_TYPE(battler) \
|
||||
{ \
|
||||
gBattleMons[battler].types[0] = gSpeciesInfo[gBattleMons[battler].species].types[0]; \
|
||||
gBattleMons[battler].types[1] = gSpeciesInfo[gBattleMons[battler].species].types[1]; \
|
||||
gBattleMons[battler].types[2] = TYPE_MYSTERY; \
|
||||
}
|
||||
|
||||
#define IS_BATTLER_PROTECTED(battlerId)(gProtectStructs[battlerId].protected \
|
||||
|| gProtectStructs[battlerId].spikyShielded \
|
||||
|| gProtectStructs[battlerId].kingsShielded \
|
||||
|| gProtectStructs[battlerId].banefulBunkered \
|
||||
|| gProtectStructs[battlerId].burningBulwarked \
|
||||
|| gProtectStructs[battlerId].obstructed \
|
||||
|| gProtectStructs[battlerId].silkTrapped)
|
||||
#define IS_BATTLER_PROTECTED(battler)(gProtectStructs[battler].protected \
|
||||
|| gProtectStructs[battler].spikyShielded \
|
||||
|| gProtectStructs[battler].kingsShielded \
|
||||
|| gProtectStructs[battler].banefulBunkered \
|
||||
|| gProtectStructs[battler].burningBulwarked \
|
||||
|| gProtectStructs[battler].obstructed \
|
||||
|| gProtectStructs[battler].silkTrapped)
|
||||
|
||||
#define GET_STAT_BUFF_ID(n) ((n & 7)) // first three bits 0x1, 0x2, 0x4
|
||||
#define GET_STAT_BUFF_VALUE_WITH_SIGN(n) ((n & 0xF8))
|
||||
|
||||
0
include/battle_ai_script_commands.h
Normal file
0
include/battle_ai_script_commands.h
Normal file
@ -68,8 +68,8 @@ void DestroyAnimSprite(struct Sprite *sprite);
|
||||
void DestroyAnimVisualTask(u8 taskId);
|
||||
void DestroyAnimSoundTask(u8 taskId);
|
||||
u8 GetAnimBattlerId(u8 wantedBattler);
|
||||
bool8 IsBattlerSpriteVisible(u8 battlerId);
|
||||
void MoveBattlerSpriteToBG(u8 battlerId, bool8 toBG_2, bool8 setSpriteInvisible);
|
||||
bool8 IsBattlerSpriteVisible(u8 battler);
|
||||
void MoveBattlerSpriteToBG(u8 battler, bool8 toBG_2, bool8 setSpriteInvisible);
|
||||
bool8 IsContest(void);
|
||||
s8 BattleAnimAdjustPanning(s8 pan);
|
||||
s8 BattleAnimAdjustPanning2(s8 pan);
|
||||
@ -92,7 +92,7 @@ void AnimTranslateLinearAndFlicker_Flipped(struct Sprite *sprite);
|
||||
void AnimWeatherBallUp(struct Sprite *sprite);
|
||||
void AnimWeatherBallDown(struct Sprite *sprite);
|
||||
void AnimSpinningSparkle(struct Sprite *sprite);
|
||||
void SetAverageBattlerPositions(u8 battlerId, bool8 respectMonPicOffsets, s16 *x, s16 *y);
|
||||
void SetAverageBattlerPositions(u8 battler, bool8 respectMonPicOffsets, s16 *x, s16 *y);
|
||||
void DestroySpriteAndMatrix(struct Sprite *sprite);
|
||||
void TranslateSpriteLinearFixedPoint(struct Sprite *sprite);
|
||||
void InitSpritePosToAnimAttacker(struct Sprite *sprite, bool8 respectMonPicOffsets);
|
||||
@ -102,7 +102,7 @@ void StartAnimLinearTranslation(struct Sprite *sprite);
|
||||
void InitAnimArcTranslation(struct Sprite *sprite);
|
||||
bool8 AnimTranslateLinear(struct Sprite *sprite);
|
||||
void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite);
|
||||
u8 GetBattlerSpriteCoord2(u8 battlerId, u8 attributeId);
|
||||
u8 GetBattlerSpriteCoord2(u8 battler, u8 attributeId);
|
||||
void InitAnimLinearTranslationWithSpeed(struct Sprite *sprite);
|
||||
u16 ArcTan2Neg(s16 x, s16 y);
|
||||
void TrySetSpriteRotScale(struct Sprite *sprite, bool8 recalcCenterVector, s16 xScale, s16 yScale, u16 rotation);
|
||||
@ -111,19 +111,19 @@ void TranslateSpriteLinearAndFlicker(struct Sprite *sprite);
|
||||
void SetSpriteCoordsToAnimAttackerCoords(struct Sprite *sprite);
|
||||
void RunStoredCallbackWhenAnimEnds(struct Sprite *sprite);
|
||||
void SetAnimSpriteInitialXOffset(struct Sprite *sprite, s16 xOffset);
|
||||
s16 GetBattlerSpriteCoordAttr(u8 battlerId, u8 attr);
|
||||
u8 GetBattlerYCoordWithElevation(u8 battlerId);
|
||||
s16 GetBattlerSpriteCoordAttr(u8 battler, u8 attr);
|
||||
u8 GetBattlerYCoordWithElevation(u8 battler);
|
||||
void WaitAnimForDuration(struct Sprite *sprite);
|
||||
void AnimTravelDiagonally(struct Sprite *sprite);
|
||||
void InitAnimLinearTranslation(struct Sprite *sprite);
|
||||
void AnimTranslateLinear_WithFollowup(struct Sprite *sprite);
|
||||
u8 GetBattlerSpriteBGPriority(u8 battlerId);
|
||||
u8 GetBattlerSpriteBGPriority(u8 battler);
|
||||
void *LoadPointerFromVars(s16 bottom, s16 top);
|
||||
void StorePointerInVars(s16 *bottom, s16 *top, const void *ptr);
|
||||
void InitPrioritiesForVisibleBattlers(void);
|
||||
void GetBattleAnimBg1Data(struct BattleAnimBgData *);
|
||||
void GetBattleAnimBgData(struct BattleAnimBgData *, u32 bgId);
|
||||
u8 GetBattlerSpriteSubpriority(u8 battlerId);
|
||||
u8 GetBattlerSpriteSubpriority(u8 battler);
|
||||
bool8 TranslateAnimHorizontalArc(struct Sprite *sprite);
|
||||
void TranslateSpriteLinearByIdFixedPoint(struct Sprite *sprite);
|
||||
void ResetSpriteRotScale(u8 spriteId);
|
||||
@ -158,8 +158,8 @@ void SetGrayscaleOrOriginalPalette(u16 palNum, bool8 restoreOriginal);
|
||||
void PrepareAffineAnimInTaskData(struct Task *task, u8 spriteId, const union AffineAnimCmd *affineAnimCmds);
|
||||
bool8 RunAffineAnimFromTaskData(struct Task *task);
|
||||
void AnimThrowProjectile(struct Sprite *sprite);
|
||||
void GetBgDataForTransform(struct BattleAnimBgData *dest, u8 battlerId);
|
||||
u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 id, s16 x, s16 y, u8 subpriority, u32 personality, bool8 isShiny, u32 battlerId);
|
||||
void GetBgDataForTransform(struct BattleAnimBgData *dest, u8 battler);
|
||||
u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 id, s16 x, s16 y, u8 subpriority, u32 personality, bool8 isShiny, u32 battler);
|
||||
void ResetSpriteRotScale_PreserveAffine(struct Sprite *sprite);
|
||||
void Trade_MoveSelectedMonToTarget(struct Sprite *sprite);
|
||||
void DestroyAnimVisualTaskAndDisableBlend(u8 taskId);
|
||||
@ -188,17 +188,17 @@ enum
|
||||
BATTLER_COORD_ATTR_RAW_BOTTOM,
|
||||
};
|
||||
|
||||
u8 GetBattlerSpriteCoord(u8 battlerId, u8 attributeId);
|
||||
u8 GetBattlerSpriteCoord(u8 battler, u8 attributeId);
|
||||
|
||||
bool8 IsBattlerSpritePresent(u8 battlerId);
|
||||
bool8 IsBattlerSpritePresent(u8 battler);
|
||||
void ClearBattleAnimBg(u32 bgId);
|
||||
u8 GetAnimBattlerSpriteId(u8 wantedBattler);
|
||||
u8 GetBattleBgPaletteNum(void);
|
||||
u8 GetBattlerSpriteBGPriorityRank(u8 battlerId);
|
||||
u8 GetBattlerSpriteBGPriorityRank(u8 battler);
|
||||
void StoreSpriteCallbackInData6(struct Sprite *sprite, void (*spriteCallback)(struct Sprite *));
|
||||
void SetSpritePrimaryCoordsFromSecondaryCoords(struct Sprite *sprite);
|
||||
u8 GetBattlerSpriteDefault_Y(u8 battlerId);
|
||||
u8 GetSubstituteSpriteDefault_Y(u8 battlerId);
|
||||
u8 GetBattlerSpriteDefault_Y(u8 battler);
|
||||
u8 GetSubstituteSpriteDefault_Y(u8 battler);
|
||||
|
||||
// battle_anim_status_effects.c
|
||||
#define STAT_ANIM_PLUS1 (MOVE_EFFECT_ATK_PLUS_1 - 1)
|
||||
@ -221,7 +221,7 @@ enum {
|
||||
STAT_ANIM_PAL_MULTIPLE = 0xFF
|
||||
};
|
||||
|
||||
void LaunchStatusAnimation(u8 battlerId, u8 statusAnimId);
|
||||
void LaunchStatusAnimation(u8 battler, u8 statusAnimId);
|
||||
extern const union AnimCmd *const gAnims_SpinningSparkle[];
|
||||
|
||||
// battle_anim_ground.c
|
||||
|
||||
@ -67,7 +67,7 @@ const u8* FaintClearSetData(u32 battler);
|
||||
void BattleTurnPassed(void);
|
||||
u8 IsRunningFromBattleImpossible(u32 battler);
|
||||
void SwitchTwoBattlersInParty(u32 battler, u32 battler2);
|
||||
void SwitchPartyOrder(u32 battlerId);
|
||||
void SwitchPartyOrder(u32 battler);
|
||||
void SwapTurnOrder(u8 id1, u8 id2);
|
||||
u32 GetBattlerTotalSpeedStatArgs(u32 battler, u32 ability, u32 holdEffect);
|
||||
u32 GetBattlerTotalSpeedStat(u32 battler);
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
extern u8 gRecordsWindowId;
|
||||
|
||||
void ClearPlayerLinkBattleRecords(void);
|
||||
void UpdatePlayerLinkBattleRecords(s32 battlerId);
|
||||
void UpdatePlayerLinkBattleRecords(s32 battler);
|
||||
void ShowLinkBattleRecords(void);
|
||||
void RemoveRecordsWindow(void);
|
||||
void ShowTrainerHillRecords(void);
|
||||
|
||||
@ -25,7 +25,7 @@ struct PickupItem
|
||||
s32 CalcCritChanceStage(u32 battlerAtk, u32 battlerDef, u32 move, bool32 recordAbility, u32 abilityAtk, u32 abilityDef, u32 holdEffectAtk);
|
||||
s32 GetCritHitOdds(s32 critChanceIndex);
|
||||
u32 GetTotalAccuracy(u32 battlerAtk, u32 battlerDef, u32 move, u32 atkAbility, u32 defAbility, u32 atkHoldEffect, u32 defHoldEffect);
|
||||
u8 GetBattlerTurnOrderNum(u8 battlerId);
|
||||
u8 GetBattlerTurnOrderNum(u8 battler);
|
||||
bool32 NoAliveMonsForPlayer(void);
|
||||
bool32 NoAliveMonsForEitherParty(void);
|
||||
void SetMoveEffect(bool32 primary, bool32 certain);
|
||||
@ -34,7 +34,7 @@ void BattleDestroyYesNoCursorAt(u8 cursorPosition);
|
||||
void BattleCreateYesNoCursorAt(u8 cursorPosition);
|
||||
void BufferMoveToLearnIntoBattleTextBuff2(void);
|
||||
void HandleBattleWindow(u8 xStart, u8 yStart, u8 xEnd, u8 yEnd, u8 flags);
|
||||
bool8 UproarWakeUpCheck(u8 battlerId);
|
||||
bool8 UproarWakeUpCheck(u8 battler);
|
||||
bool32 DoesSubstituteBlockMove(u32 battlerAtk, u32 battlerDef, u32 move);
|
||||
bool32 DoesDisguiseBlockMove(u32 battler, u32 move);
|
||||
bool32 CanPoisonType(u8 battlerAttacker, u8 battlerTarget);
|
||||
|
||||
@ -6,6 +6,6 @@ void BattleTv_SetDataBasedOnMove(u16 move, u16 weatherFlags, struct DisableStruc
|
||||
void BattleTv_SetDataBasedOnAnimation(u8 animationId);
|
||||
void TryPutLinkBattleTvShowOnAir(void);
|
||||
void BattleTv_ClearExplosionFaintCause(void);
|
||||
u8 GetBattlerMoveSlotId(u8 battlerId, u16 moveId);
|
||||
u8 GetBattlerMoveSlotId(u8 battler, u16 moveId);
|
||||
|
||||
#endif // GUARD_BATTLE_TV_H
|
||||
|
||||
@ -87,8 +87,8 @@ void ChooseMonForWirelessMinigame(void);
|
||||
void OpenPartyMenuInBattle(u8 partyAction);
|
||||
void ChooseMonForInBattleItem(void);
|
||||
void BufferBattlePartyCurrentOrder(void);
|
||||
void BufferBattlePartyCurrentOrderBySide(u8 battlerId, u8 flankId);
|
||||
void SwitchPartyOrderLinkMulti(u8 battlerId, u8 slot, u8 arrayIndex);
|
||||
void BufferBattlePartyCurrentOrderBySide(u8 battler, u8 flankId);
|
||||
void SwitchPartyOrderLinkMulti(u8 battler, u8 slot, u8 arrayIndex);
|
||||
void SwitchPartyMonSlots(u8 slot, u8 slot2);
|
||||
u8 GetPartyIdFromBattlePartyId(u8 slot);
|
||||
void ShowPartyMenuToShowcaseMultiBattleParty(void);
|
||||
|
||||
@ -640,7 +640,7 @@ void CreateBattleTowerMon_HandleLevel(struct Pokemon *mon, struct BattleTowerPok
|
||||
void CreateApprenticeMon(struct Pokemon *mon, const struct Apprentice *src, u8 monId);
|
||||
void CreateMonWithEVSpreadNatureOTID(struct Pokemon *mon, u16 species, u8 level, u8 nature, u8 fixedIV, u8 evSpread, u32 otId);
|
||||
void ConvertPokemonToBattleTowerPokemon(struct Pokemon *mon, struct BattleTowerPokemon *dest);
|
||||
bool8 ShouldIgnoreDeoxysForm(u8 caseId, u8 battlerId);
|
||||
bool8 ShouldIgnoreDeoxysForm(u8 caseId, u8 battler);
|
||||
u16 GetUnionRoomTrainerPic(void);
|
||||
u16 GetUnionRoomTrainerClass(void);
|
||||
void CreateEnemyEventMon(void);
|
||||
@ -659,7 +659,7 @@ u16 MonTryLearningNewMove(struct Pokemon *mon, bool8 firstMove);
|
||||
void DeleteFirstMoveAndGiveMoveToMon(struct Pokemon *mon, u16 move);
|
||||
void DeleteFirstMoveAndGiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move);
|
||||
u8 CountAliveMonsInBattle(u8 caseId, u32 battler);
|
||||
u8 GetDefaultMoveTarget(u8 battlerId);
|
||||
u8 GetDefaultMoveTarget(u8 battler);
|
||||
u8 GetMonGender(struct Pokemon *mon);
|
||||
u8 GetBoxMonGender(struct BoxPokemon *boxMon);
|
||||
u8 GetGenderFromSpeciesAndPersonality(u16 species, u32 personality);
|
||||
@ -713,10 +713,10 @@ u8 CalculatePPWithBonus(u16 move, u8 ppBonuses, u8 moveIndex);
|
||||
void RemoveMonPPBonus(struct Pokemon *mon, u8 moveIndex);
|
||||
void RemoveBattleMonPPBonus(struct BattlePokemon *mon, u8 moveIndex);
|
||||
void PokemonToBattleMon(struct Pokemon *src, struct BattlePokemon *dst);
|
||||
void CopyPartyMonToBattleData(u32 battlerId, u32 partyIndex);
|
||||
void CopyPartyMonToBattleData(u32 battler, u32 partyIndex);
|
||||
bool8 ExecuteTableBasedItemEffect(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex);
|
||||
bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex, u8 e);
|
||||
bool8 HealStatusConditions(struct Pokemon *mon, u32 healMask, u8 battlerId);
|
||||
bool8 HealStatusConditions(struct Pokemon *mon, u32 healMask, u8 battler);
|
||||
u8 GetItemEffectParamOffset(u32 battler, u16 itemId, u8 effectByte, u8 effectBit);
|
||||
u8 *UseStatIncreaseItem(u16 itemId);
|
||||
u8 GetNature(struct Pokemon *mon);
|
||||
|
||||
@ -60,9 +60,9 @@ extern u8 gRecordedBattleMultiplayerId;
|
||||
|
||||
void RecordedBattle_Init(u8 mode);
|
||||
void RecordedBattle_SetTrainerInfo(void);
|
||||
void RecordedBattle_SetBattlerAction(u8 battlerId, u8 action);
|
||||
void RecordedBattle_ClearBattlerAction(u8 battlerId, u8 bytesToClear);
|
||||
u8 RecordedBattle_GetBattlerAction(u32 actionType, u8 battlerId);
|
||||
void RecordedBattle_SetBattlerAction(u8 battler, u8 action);
|
||||
void RecordedBattle_ClearBattlerAction(u8 battler, u8 bytesToClear);
|
||||
u8 RecordedBattle_GetBattlerAction(u32 actionType, u8 battler);
|
||||
u8 RecordedBattle_BufferNewBattlerData(u8 *dst);
|
||||
void RecordedBattle_RecordAllBattlerData(u8 *data);
|
||||
bool32 CanCopyRecordedBattleSaveData(void);
|
||||
|
||||
0
src/battle_ai_script_commands.c
Normal file
0
src/battle_ai_script_commands.c
Normal file
@ -954,30 +954,30 @@ static void Cmd_monbg(void)
|
||||
{
|
||||
bool8 toBG_2;
|
||||
u8 taskId;
|
||||
u8 battlerId;
|
||||
u8 battler;
|
||||
u8 animBattler;
|
||||
|
||||
sBattleAnimScriptPtr++;
|
||||
|
||||
animBattler = sBattleAnimScriptPtr[0];
|
||||
if (animBattler & ANIM_TARGET)
|
||||
battlerId = gBattleAnimTarget;
|
||||
battler = gBattleAnimTarget;
|
||||
else
|
||||
battlerId = gBattleAnimAttacker;
|
||||
battler = gBattleAnimAttacker;
|
||||
|
||||
// Move designated battler to background
|
||||
if (IsBattlerSpriteVisible(battlerId))
|
||||
if (IsBattlerSpriteVisible(battler))
|
||||
{
|
||||
u8 position = GetBattlerPosition(battlerId);
|
||||
u8 position = GetBattlerPosition(battler);
|
||||
if (position == B_POSITION_OPPONENT_LEFT || position == B_POSITION_PLAYER_RIGHT || IsContest())
|
||||
toBG_2 = FALSE;
|
||||
else
|
||||
toBG_2 = TRUE;
|
||||
|
||||
MoveBattlerSpriteToBG(battlerId, toBG_2, FALSE);
|
||||
MoveBattlerSpriteToBG(battler, toBG_2, FALSE);
|
||||
taskId = CreateTask(Task_InitUpdateMonBg, 10);
|
||||
gAnimVisualTaskCount++;
|
||||
gTasks[taskId].tBattlerId = battlerId;
|
||||
gTasks[taskId].tBattlerId = battler;
|
||||
gTasks[taskId].tInBg2 = toBG_2;
|
||||
gTasks[taskId].tActive = TRUE;
|
||||
gTasks[taskId].tIsPartner = FALSE;
|
||||
@ -985,19 +985,19 @@ static void Cmd_monbg(void)
|
||||
}
|
||||
|
||||
// Move battler's partner to background
|
||||
battlerId ^= BIT_FLANK;
|
||||
if (IsBattlerSpriteVisible(battlerId))
|
||||
battler ^= BIT_FLANK;
|
||||
if (IsBattlerSpriteVisible(battler))
|
||||
{
|
||||
u8 position = GetBattlerPosition(battlerId);
|
||||
u8 position = GetBattlerPosition(battler);
|
||||
if (position == B_POSITION_OPPONENT_LEFT || position == B_POSITION_PLAYER_RIGHT || IsContest())
|
||||
toBG_2 = FALSE;
|
||||
else
|
||||
toBG_2 = TRUE;
|
||||
|
||||
MoveBattlerSpriteToBG(battlerId, toBG_2, FALSE);
|
||||
MoveBattlerSpriteToBG(battler, toBG_2, FALSE);
|
||||
taskId = CreateTask(Task_InitUpdateMonBg, 10);
|
||||
gAnimVisualTaskCount++;
|
||||
gTasks[taskId].tBattlerId = battlerId;
|
||||
gTasks[taskId].tBattlerId = battler;
|
||||
gTasks[taskId].tInBg2 = toBG_2;
|
||||
gTasks[taskId].tActive = TRUE;
|
||||
gTasks[taskId].tIsPartner = TRUE;
|
||||
@ -1026,26 +1026,26 @@ u8 GetAnimBattlerId(u8 wantedBattler)
|
||||
}
|
||||
}
|
||||
|
||||
bool8 IsBattlerSpriteVisible(u8 battlerId)
|
||||
bool8 IsBattlerSpriteVisible(u8 battler)
|
||||
{
|
||||
if (IsContest())
|
||||
{
|
||||
if (battlerId == gBattleAnimAttacker)
|
||||
if (battler == gBattleAnimAttacker)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
if (!IsBattlerSpritePresent(battlerId))
|
||||
if (!IsBattlerSpritePresent(battler))
|
||||
return FALSE;
|
||||
if (IsContest())
|
||||
return TRUE; // This line won't ever be reached.
|
||||
if (!gBattleSpritesDataPtr->battlerData[battlerId].invisible || !gSprites[gBattlerSpriteIds[battlerId]].invisible)
|
||||
if (!gBattleSpritesDataPtr->battlerData[battler].invisible || !gSprites[gBattlerSpriteIds[battler]].invisible)
|
||||
return TRUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void MoveBattlerSpriteToBG(u8 battlerId, bool8 toBG_2, bool8 setSpriteInvisible)
|
||||
void MoveBattlerSpriteToBG(u8 battler, bool8 toBG_2, bool8 setSpriteInvisible)
|
||||
{
|
||||
struct BattleAnimBgData animBg;
|
||||
u8 battlerSpriteId;
|
||||
@ -1073,7 +1073,7 @@ void MoveBattlerSpriteToBG(u8 battlerId, bool8 toBG_2, bool8 setSpriteInvisible)
|
||||
SetAnimBgAttribute(1, BG_ANIM_SCREEN_SIZE, 1);
|
||||
SetAnimBgAttribute(1, BG_ANIM_AREA_OVERFLOW_MODE, 0);
|
||||
|
||||
battlerSpriteId = gBattlerSpriteIds[battlerId];
|
||||
battlerSpriteId = gBattlerSpriteIds[battler];
|
||||
|
||||
gBattle_BG1_X = -(gSprites[battlerSpriteId].x + gSprites[battlerSpriteId].x2) + 0x20;
|
||||
if (IsContest() && IsSpeciesNotUnown(gContestResources->moveAnim->species))
|
||||
@ -1081,18 +1081,18 @@ void MoveBattlerSpriteToBG(u8 battlerId, bool8 toBG_2, bool8 setSpriteInvisible)
|
||||
|
||||
gBattle_BG1_Y = -(gSprites[battlerSpriteId].y + gSprites[battlerSpriteId].y2) + 0x20;
|
||||
if (setSpriteInvisible)
|
||||
gSprites[gBattlerSpriteIds[battlerId]].invisible = TRUE;
|
||||
gSprites[gBattlerSpriteIds[battler]].invisible = TRUE;
|
||||
|
||||
SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X);
|
||||
SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y);
|
||||
|
||||
LoadPalette(&gPlttBufferUnfaded[OBJ_PLTT_ID(battlerId)], BG_PLTT_ID(animBg.paletteId), PLTT_SIZE_4BPP);
|
||||
CpuCopy32(&gPlttBufferUnfaded[OBJ_PLTT_ID(battlerId)], (void *)(BG_PLTT + PLTT_OFFSET_4BPP(animBg.paletteId)), PLTT_SIZE_4BPP);
|
||||
LoadPalette(&gPlttBufferUnfaded[OBJ_PLTT_ID(battler)], BG_PLTT_ID(animBg.paletteId), PLTT_SIZE_4BPP);
|
||||
CpuCopy32(&gPlttBufferUnfaded[OBJ_PLTT_ID(battler)], (void *)(BG_PLTT + PLTT_OFFSET_4BPP(animBg.paletteId)), PLTT_SIZE_4BPP);
|
||||
|
||||
if (IsContest())
|
||||
battlerPosition = 0;
|
||||
else
|
||||
battlerPosition = GetBattlerPosition(battlerId);
|
||||
battlerPosition = GetBattlerPosition(battler);
|
||||
|
||||
DrawBattlerOnBg(1, 0, 0, battlerPosition, animBg.paletteId, animBg.bgTiles, animBg.bgTilemap, animBg.tilesOffset);
|
||||
|
||||
@ -1110,21 +1110,21 @@ void MoveBattlerSpriteToBG(u8 battlerId, bool8 toBG_2, bool8 setSpriteInvisible)
|
||||
SetAnimBgAttribute(2, BG_ANIM_SCREEN_SIZE, 1);
|
||||
SetAnimBgAttribute(2, BG_ANIM_AREA_OVERFLOW_MODE, 0);
|
||||
|
||||
battlerSpriteId = gBattlerSpriteIds[battlerId];
|
||||
battlerSpriteId = gBattlerSpriteIds[battler];
|
||||
|
||||
gBattle_BG2_X = -(gSprites[battlerSpriteId].x + gSprites[battlerSpriteId].x2) + 0x20;
|
||||
gBattle_BG2_Y = -(gSprites[battlerSpriteId].y + gSprites[battlerSpriteId].y2) + 0x20;
|
||||
|
||||
if (setSpriteInvisible)
|
||||
gSprites[gBattlerSpriteIds[battlerId]].invisible = TRUE;
|
||||
gSprites[gBattlerSpriteIds[battler]].invisible = TRUE;
|
||||
|
||||
SetGpuReg(REG_OFFSET_BG2HOFS, gBattle_BG2_X);
|
||||
SetGpuReg(REG_OFFSET_BG2VOFS, gBattle_BG2_Y);
|
||||
|
||||
LoadPalette(&gPlttBufferUnfaded[OBJ_PLTT_ID(battlerId)], BG_PLTT_ID(9), PLTT_SIZE_4BPP);
|
||||
CpuCopy32(&gPlttBufferUnfaded[OBJ_PLTT_ID(battlerId)], (void *)(BG_PLTT + PLTT_OFFSET_4BPP(9)), PLTT_SIZE_4BPP);
|
||||
LoadPalette(&gPlttBufferUnfaded[OBJ_PLTT_ID(battler)], BG_PLTT_ID(9), PLTT_SIZE_4BPP);
|
||||
CpuCopy32(&gPlttBufferUnfaded[OBJ_PLTT_ID(battler)], (void *)(BG_PLTT + PLTT_OFFSET_4BPP(9)), PLTT_SIZE_4BPP);
|
||||
|
||||
DrawBattlerOnBg(2, 0, 0, GetBattlerPosition(battlerId), animBg.paletteId, animBg.bgTiles + 0x1000, animBg.bgTilemap + 0x400, animBg.tilesOffset);
|
||||
DrawBattlerOnBg(2, 0, 0, GetBattlerPosition(battler), animBg.paletteId, animBg.bgTiles + 0x1000, animBg.bgTilemap + 0x400, animBg.tilesOffset);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1192,12 +1192,12 @@ void ResetBattleAnimBg(bool8 toBG2)
|
||||
|
||||
static void Task_UpdateMonBg(u8 taskId)
|
||||
{
|
||||
u8 spriteId, battlerId;
|
||||
u8 spriteId, battler;
|
||||
s16 x, y;
|
||||
struct BattleAnimBgData animBg;
|
||||
|
||||
spriteId = gTasks[taskId].t2_SpriteId;
|
||||
battlerId = gTasks[taskId].t2_BattlerId;
|
||||
battler = gTasks[taskId].t2_BattlerId;
|
||||
GetBattleAnimBg1Data(&animBg);
|
||||
x = gTasks[taskId].t2_SpriteX - (gSprites[spriteId].x + gSprites[spriteId].x2);
|
||||
y = gTasks[taskId].t2_SpriteY - (gSprites[spriteId].y + gSprites[spriteId].y2);
|
||||
@ -1206,13 +1206,13 @@ static void Task_UpdateMonBg(u8 taskId)
|
||||
{
|
||||
gBattle_BG1_X = x + gTasks[taskId].t2_BgX;
|
||||
gBattle_BG1_Y = y + gTasks[taskId].t2_BgY;
|
||||
CpuCopy32(&gPlttBufferFaded[OBJ_PLTT_ID(battlerId)], &gPlttBufferFaded[BG_PLTT_ID(animBg.paletteId)], PLTT_SIZE_4BPP);
|
||||
CpuCopy32(&gPlttBufferFaded[OBJ_PLTT_ID(battler)], &gPlttBufferFaded[BG_PLTT_ID(animBg.paletteId)], PLTT_SIZE_4BPP);
|
||||
}
|
||||
else
|
||||
{
|
||||
gBattle_BG2_X = x + gTasks[taskId].t2_BgX;
|
||||
gBattle_BG2_Y = y + gTasks[taskId].t2_BgY;
|
||||
CpuCopy32(&gPlttBufferFaded[OBJ_PLTT_ID(battlerId)], &gPlttBufferFaded[BG_PLTT_ID(9)], PLTT_SIZE_4BPP);
|
||||
CpuCopy32(&gPlttBufferFaded[OBJ_PLTT_ID(battler)], &gPlttBufferFaded[BG_PLTT_ID(9)], PLTT_SIZE_4BPP);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1232,7 +1232,7 @@ static void Task_UpdateMonBg(u8 taskId)
|
||||
static void Cmd_clearmonbg(void)
|
||||
{
|
||||
u8 animBattlerId;
|
||||
u8 battlerId;
|
||||
u8 battler;
|
||||
u8 taskId;
|
||||
|
||||
sBattleAnimScriptPtr++;
|
||||
@ -1244,20 +1244,20 @@ static void Cmd_clearmonbg(void)
|
||||
animBattlerId = ANIM_DEF_PARTNER;
|
||||
|
||||
if (animBattlerId == ANIM_ATTACKER || animBattlerId == ANIM_ATK_PARTNER)
|
||||
battlerId = gBattleAnimAttacker;
|
||||
battler = gBattleAnimAttacker;
|
||||
else
|
||||
battlerId = gBattleAnimTarget;
|
||||
battler = gBattleAnimTarget;
|
||||
|
||||
if (sMonAnimTaskIdArray[0] != TASK_NONE)
|
||||
gSprites[gBattlerSpriteIds[battlerId]].invisible = FALSE;
|
||||
gSprites[gBattlerSpriteIds[battler]].invisible = FALSE;
|
||||
if (animBattlerId > 1 && sMonAnimTaskIdArray[1] != TASK_NONE)
|
||||
gSprites[gBattlerSpriteIds[BATTLE_PARTNER(battlerId)]].invisible = FALSE;
|
||||
gSprites[gBattlerSpriteIds[BATTLE_PARTNER(battler)]].invisible = FALSE;
|
||||
else
|
||||
animBattlerId = 0;
|
||||
|
||||
taskId = CreateTask(Task_ClearMonBg, 5);
|
||||
gTasks[taskId].data[0] = animBattlerId;
|
||||
gTasks[taskId].data[2] = battlerId;
|
||||
gTasks[taskId].data[2] = battler;
|
||||
|
||||
sBattleAnimScriptPtr++;
|
||||
}
|
||||
@ -1294,7 +1294,7 @@ static void Task_ClearMonBg(u8 taskId)
|
||||
static void Cmd_monbg_static(void)
|
||||
{
|
||||
bool8 toBG_2;
|
||||
u8 battlerId;
|
||||
u8 battler;
|
||||
u8 animBattlerId;
|
||||
|
||||
sBattleAnimScriptPtr++;
|
||||
@ -1307,31 +1307,31 @@ static void Cmd_monbg_static(void)
|
||||
animBattlerId = ANIM_DEF_PARTNER;
|
||||
|
||||
if (animBattlerId == ANIM_ATTACKER || animBattlerId == ANIM_ATK_PARTNER)
|
||||
battlerId = gBattleAnimAttacker;
|
||||
battler = gBattleAnimAttacker;
|
||||
else
|
||||
battlerId = gBattleAnimTarget;
|
||||
battler = gBattleAnimTarget;
|
||||
|
||||
if (IsBattlerSpriteVisible(battlerId))
|
||||
if (IsBattlerSpriteVisible(battler))
|
||||
{
|
||||
u8 position = GetBattlerPosition(battlerId);
|
||||
u8 position = GetBattlerPosition(battler);
|
||||
if (position == B_POSITION_OPPONENT_LEFT || position == B_POSITION_PLAYER_RIGHT || IsContest())
|
||||
toBG_2 = FALSE;
|
||||
else
|
||||
toBG_2 = TRUE;
|
||||
|
||||
MoveBattlerSpriteToBG(battlerId, toBG_2, FALSE);
|
||||
MoveBattlerSpriteToBG(battler, toBG_2, FALSE);
|
||||
}
|
||||
|
||||
battlerId ^= BIT_FLANK;
|
||||
if (animBattlerId > 1 && IsBattlerSpriteVisible(battlerId))
|
||||
battler ^= BIT_FLANK;
|
||||
if (animBattlerId > 1 && IsBattlerSpriteVisible(battler))
|
||||
{
|
||||
u8 position = GetBattlerPosition(battlerId);
|
||||
u8 position = GetBattlerPosition(battler);
|
||||
if (position == B_POSITION_OPPONENT_LEFT || position == B_POSITION_PLAYER_RIGHT || IsContest())
|
||||
toBG_2 = FALSE;
|
||||
else
|
||||
toBG_2 = TRUE;
|
||||
|
||||
MoveBattlerSpriteToBG(battlerId, toBG_2, FALSE);
|
||||
MoveBattlerSpriteToBG(battler, toBG_2, FALSE);
|
||||
}
|
||||
|
||||
sBattleAnimScriptPtr++;
|
||||
@ -1340,7 +1340,7 @@ static void Cmd_monbg_static(void)
|
||||
static void Cmd_clearmonbg_static(void)
|
||||
{
|
||||
u8 animBattlerId;
|
||||
u8 battlerId;
|
||||
u8 battler;
|
||||
u8 taskId;
|
||||
|
||||
sBattleAnimScriptPtr++;
|
||||
@ -1352,20 +1352,20 @@ static void Cmd_clearmonbg_static(void)
|
||||
animBattlerId = ANIM_DEF_PARTNER;
|
||||
|
||||
if (animBattlerId == ANIM_ATTACKER || animBattlerId == ANIM_ATK_PARTNER)
|
||||
battlerId = gBattleAnimAttacker;
|
||||
battler = gBattleAnimAttacker;
|
||||
else
|
||||
battlerId = gBattleAnimTarget;
|
||||
battler = gBattleAnimTarget;
|
||||
|
||||
if (IsBattlerSpriteVisible(battlerId))
|
||||
gSprites[gBattlerSpriteIds[battlerId]].invisible = FALSE;
|
||||
if (animBattlerId > 1 && IsBattlerSpriteVisible(BATTLE_PARTNER(battlerId)))
|
||||
gSprites[gBattlerSpriteIds[BATTLE_PARTNER(battlerId)]].invisible = FALSE;
|
||||
if (IsBattlerSpriteVisible(battler))
|
||||
gSprites[gBattlerSpriteIds[battler]].invisible = FALSE;
|
||||
if (animBattlerId > 1 && IsBattlerSpriteVisible(BATTLE_PARTNER(battler)))
|
||||
gSprites[gBattlerSpriteIds[BATTLE_PARTNER(battler)]].invisible = FALSE;
|
||||
else
|
||||
animBattlerId = 0;
|
||||
|
||||
taskId = CreateTask(Task_ClearMonBgStatic, 5);
|
||||
gTasks[taskId].data[0] = animBattlerId;
|
||||
gTasks[taskId].data[2] = battlerId;
|
||||
gTasks[taskId].data[2] = battler;
|
||||
|
||||
sBattleAnimScriptPtr++;
|
||||
}
|
||||
@ -1376,16 +1376,16 @@ static void Task_ClearMonBgStatic(u8 taskId)
|
||||
if (gTasks[taskId].data[1] != 1)
|
||||
{
|
||||
bool8 toBG_2;
|
||||
u8 battlerId = gTasks[taskId].data[2];
|
||||
u8 position = GetBattlerPosition(battlerId);
|
||||
u8 battler = gTasks[taskId].data[2];
|
||||
u8 position = GetBattlerPosition(battler);
|
||||
if (position == B_POSITION_OPPONENT_LEFT || position == B_POSITION_PLAYER_RIGHT || IsContest())
|
||||
toBG_2 = FALSE;
|
||||
else
|
||||
toBG_2 = TRUE;
|
||||
|
||||
if (IsBattlerSpriteVisible(battlerId))
|
||||
if (IsBattlerSpriteVisible(battler))
|
||||
ResetBattleAnimBg(toBG_2);
|
||||
if (gTasks[taskId].data[0] > 1 && IsBattlerSpriteVisible(BATTLE_PARTNER(battlerId)))
|
||||
if (gTasks[taskId].data[0] > 1 && IsBattlerSpriteVisible(BATTLE_PARTNER(battler)))
|
||||
ResetBattleAnimBg(toBG_2 ^ 1);
|
||||
|
||||
DestroyTask(taskId);
|
||||
@ -2067,19 +2067,19 @@ static void Cmd_jumpifcontest(void)
|
||||
static void Cmd_splitbgprio(void)
|
||||
{
|
||||
u8 wantedBattler;
|
||||
u8 battlerId;
|
||||
u8 battler;
|
||||
u8 battlerPosition;
|
||||
|
||||
wantedBattler = sBattleAnimScriptPtr[1];
|
||||
sBattleAnimScriptPtr += 2;
|
||||
|
||||
if (wantedBattler != ANIM_ATTACKER)
|
||||
battlerId = gBattleAnimTarget;
|
||||
battler = gBattleAnimTarget;
|
||||
else
|
||||
battlerId = gBattleAnimAttacker;
|
||||
battler = gBattleAnimAttacker;
|
||||
|
||||
// Apply only if the given battler is the lead (on left from team's perspective)
|
||||
battlerPosition = GetBattlerPosition(battlerId);
|
||||
battlerPosition = GetBattlerPosition(battler);
|
||||
if (!IsContest() && (battlerPosition == B_POSITION_PLAYER_LEFT || battlerPosition == B_POSITION_OPPONENT_RIGHT))
|
||||
{
|
||||
SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1);
|
||||
@ -2101,7 +2101,7 @@ static void Cmd_splitbgprio_foes(void)
|
||||
{
|
||||
u8 wantedBattler;
|
||||
u8 battlerPosition;
|
||||
u8 battlerId;
|
||||
u8 battler;
|
||||
|
||||
wantedBattler = sBattleAnimScriptPtr[1];
|
||||
sBattleAnimScriptPtr += 2;
|
||||
@ -2110,12 +2110,12 @@ static void Cmd_splitbgprio_foes(void)
|
||||
if (GetBattlerSide(gBattleAnimAttacker) != GetBattlerSide(gBattleAnimTarget))
|
||||
{
|
||||
if (wantedBattler != ANIM_ATTACKER)
|
||||
battlerId = gBattleAnimTarget;
|
||||
battler = gBattleAnimTarget;
|
||||
else
|
||||
battlerId = gBattleAnimAttacker;
|
||||
battler = gBattleAnimAttacker;
|
||||
|
||||
// Apply only if the given battler is the lead (on left from team's perspective)
|
||||
battlerPosition = GetBattlerPosition(battlerId);
|
||||
battlerPosition = GetBattlerPosition(battler);
|
||||
if (!IsContest() && (battlerPosition == B_POSITION_PLAYER_LEFT || battlerPosition == B_POSITION_OPPONENT_RIGHT))
|
||||
{
|
||||
SetAnimBgAttribute(1, BG_ANIM_PRIORITY, 1);
|
||||
|
||||
@ -183,7 +183,7 @@ void AnimTask_ShakeMon2(u8 taskId)
|
||||
{
|
||||
u8 spriteId;
|
||||
bool8 abort = FALSE;
|
||||
u8 battlerId;
|
||||
u8 battler;
|
||||
|
||||
if (gBattleAnimArgs[0] < MAX_BATTLERS_COUNT)
|
||||
{
|
||||
@ -196,24 +196,24 @@ void AnimTask_ShakeMon2(u8 taskId)
|
||||
switch (gBattleAnimArgs[0])
|
||||
{
|
||||
case ANIM_PLAYER_LEFT:
|
||||
battlerId = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
|
||||
battler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
|
||||
break;
|
||||
case ANIM_PLAYER_RIGHT:
|
||||
battlerId = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT);
|
||||
battler = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT);
|
||||
break;
|
||||
case ANIM_OPPONENT_LEFT:
|
||||
battlerId = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
|
||||
battler = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
|
||||
break;
|
||||
case ANIM_OPPONENT_RIGHT:
|
||||
default:
|
||||
battlerId = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
|
||||
battler = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
|
||||
break;
|
||||
}
|
||||
|
||||
if (IsBattlerSpriteVisible(battlerId) == FALSE)
|
||||
if (IsBattlerSpriteVisible(battler) == FALSE)
|
||||
abort = TRUE;
|
||||
|
||||
spriteId = gBattlerSpriteIds[battlerId];
|
||||
spriteId = gBattlerSpriteIds[battler];
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -675,16 +675,16 @@ static void SlideMonToOffsetPartner(struct Sprite *sprite)
|
||||
static void SlideMonToOffsetAndBack(struct Sprite *sprite)
|
||||
{
|
||||
u8 spriteId;
|
||||
u8 battlerId;
|
||||
u8 battler;
|
||||
sprite->invisible = TRUE;
|
||||
|
||||
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
|
||||
battlerId = gBattleAnimAttacker;
|
||||
battler = gBattleAnimAttacker;
|
||||
else
|
||||
battlerId = gBattleAnimTarget;
|
||||
battler = gBattleAnimTarget;
|
||||
|
||||
spriteId = gBattlerSpriteIds[battlerId];
|
||||
if (GetBattlerSide(battlerId))
|
||||
spriteId = gBattlerSpriteIds[battler];
|
||||
if (GetBattlerSide(battler))
|
||||
{
|
||||
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
|
||||
if (gBattleAnimArgs[3] == 1)
|
||||
|
||||
@ -82,7 +82,7 @@ static const struct SpriteSheet sSpriteSheets_MoveEffectMons[] =
|
||||
{ gMiscBlank_Gfx, MON_PIC_SIZE, TAG_MOVE_EFFECT_MON_2, },
|
||||
};
|
||||
|
||||
u8 GetBattlerSpriteCoord(u8 battlerId, u8 coordType)
|
||||
u8 GetBattlerSpriteCoord(u8 battler, u8 coordType)
|
||||
{
|
||||
u8 retVal;
|
||||
u16 species;
|
||||
@ -91,7 +91,7 @@ u8 GetBattlerSpriteCoord(u8 battlerId, u8 coordType)
|
||||
|
||||
if (IsContest())
|
||||
{
|
||||
if (coordType == BATTLER_COORD_Y_PIC_OFFSET && battlerId == 3)
|
||||
if (coordType == BATTLER_COORD_Y_PIC_OFFSET && battler == 3)
|
||||
coordType = BATTLER_COORD_Y;
|
||||
}
|
||||
|
||||
@ -99,10 +99,10 @@ u8 GetBattlerSpriteCoord(u8 battlerId, u8 coordType)
|
||||
{
|
||||
case BATTLER_COORD_X:
|
||||
case BATTLER_COORD_X_2:
|
||||
retVal = sBattlerCoords[WhichBattleCoords(battlerId)][GetBattlerPosition(battlerId)].x;
|
||||
retVal = sBattlerCoords[WhichBattleCoords(battler)][GetBattlerPosition(battler)].x;
|
||||
break;
|
||||
case BATTLER_COORD_Y:
|
||||
retVal = sBattlerCoords[WhichBattleCoords(battlerId)][GetBattlerPosition(battlerId)].y;
|
||||
retVal = sBattlerCoords[WhichBattleCoords(battler)][GetBattlerPosition(battler)].y;
|
||||
break;
|
||||
case BATTLER_COORD_Y_PIC_OFFSET:
|
||||
case BATTLER_COORD_Y_PIC_OFFSET_DEFAULT:
|
||||
@ -116,27 +116,27 @@ u8 GetBattlerSpriteCoord(u8 battlerId, u8 coordType)
|
||||
}
|
||||
else
|
||||
{
|
||||
mon = GetPartyBattlerData(battlerId);
|
||||
illusionMon = GetIllusionMonPtr(battlerId);
|
||||
mon = GetPartyBattlerData(battler);
|
||||
illusionMon = GetIllusionMonPtr(battler);
|
||||
if (illusionMon != NULL)
|
||||
mon = illusionMon;
|
||||
spriteInfo = gBattleSpritesDataPtr->battlerData;
|
||||
if (!spriteInfo[battlerId].transformSpecies)
|
||||
if (!spriteInfo[battler].transformSpecies)
|
||||
species = GetMonData(mon, MON_DATA_SPECIES);
|
||||
else
|
||||
species = spriteInfo[battlerId].transformSpecies;
|
||||
species = spriteInfo[battler].transformSpecies;
|
||||
}
|
||||
if (coordType == BATTLER_COORD_Y_PIC_OFFSET)
|
||||
retVal = GetBattlerSpriteFinal_Y(battlerId, species, TRUE);
|
||||
retVal = GetBattlerSpriteFinal_Y(battler, species, TRUE);
|
||||
else
|
||||
retVal = GetBattlerSpriteFinal_Y(battlerId, species, FALSE);
|
||||
retVal = GetBattlerSpriteFinal_Y(battler, species, FALSE);
|
||||
break;
|
||||
}
|
||||
|
||||
return retVal;
|
||||
}
|
||||
|
||||
u8 GetBattlerYDelta(u8 battlerId, u16 species)
|
||||
u8 GetBattlerYDelta(u8 battler, u16 species)
|
||||
{
|
||||
u32 personality;
|
||||
struct BattleSpriteInfo *spriteInfo;
|
||||
@ -159,25 +159,25 @@ u8 GetBattlerYDelta(u8 battlerId, u16 species)
|
||||
if (species == SPECIES_UNOWN)
|
||||
{
|
||||
spriteInfo = gBattleSpritesDataPtr->battlerData;
|
||||
if (!spriteInfo[battlerId].transformSpecies)
|
||||
personality = GetMonData(GetPartyBattlerData(battlerId), MON_DATA_PERSONALITY);
|
||||
if (!spriteInfo[battler].transformSpecies)
|
||||
personality = GetMonData(GetPartyBattlerData(battler), MON_DATA_PERSONALITY);
|
||||
else
|
||||
personality = gTransformedPersonalities[battlerId];
|
||||
personality = gTransformedPersonalities[battler];
|
||||
species = GetUnownSpeciesId(personality);
|
||||
}
|
||||
}
|
||||
|
||||
if (GetBattlerSide(battlerId) == B_SIDE_PLAYER || IsContest())
|
||||
if (GetBattlerSide(battler) == B_SIDE_PLAYER || IsContest())
|
||||
ret = gSpeciesInfo[species].backPicYOffset;
|
||||
else
|
||||
ret = gSpeciesInfo[species].frontPicYOffset;
|
||||
return ret;
|
||||
}
|
||||
|
||||
u8 GetBattlerElevation(u8 battlerId, u16 species)
|
||||
u8 GetBattlerElevation(u8 battler, u16 species)
|
||||
{
|
||||
u8 ret = 0;
|
||||
if (GetBattlerSide(battlerId) == B_SIDE_OPPONENT)
|
||||
if (GetBattlerSide(battler) == B_SIDE_OPPONENT)
|
||||
{
|
||||
if (!IsContest())
|
||||
{
|
||||
@ -188,24 +188,24 @@ u8 GetBattlerElevation(u8 battlerId, u16 species)
|
||||
return ret;
|
||||
}
|
||||
|
||||
u8 GetBattlerSpriteFinal_Y(u8 battlerId, u16 species, bool8 a3)
|
||||
u8 GetBattlerSpriteFinal_Y(u8 battler, u16 species, bool8 a3)
|
||||
{
|
||||
u16 offset;
|
||||
u8 y;
|
||||
|
||||
if (GetBattlerSide(battlerId) == B_SIDE_PLAYER || IsContest())
|
||||
if (GetBattlerSide(battler) == B_SIDE_PLAYER || IsContest())
|
||||
{
|
||||
offset = GetBattlerYDelta(battlerId, species);
|
||||
offset = GetBattlerYDelta(battler, species);
|
||||
}
|
||||
else
|
||||
{
|
||||
offset = GetBattlerYDelta(battlerId, species);
|
||||
offset -= GetBattlerElevation(battlerId, species);
|
||||
offset = GetBattlerYDelta(battler, species);
|
||||
offset -= GetBattlerElevation(battler, species);
|
||||
}
|
||||
y = offset + sBattlerCoords[WhichBattleCoords(battlerId)][GetBattlerPosition(battlerId)].y;
|
||||
y = offset + sBattlerCoords[WhichBattleCoords(battler)][GetBattlerPosition(battler)].y;
|
||||
if (a3)
|
||||
{
|
||||
if (GetBattlerSide(battlerId) == B_SIDE_PLAYER)
|
||||
if (GetBattlerSide(battler) == B_SIDE_PLAYER)
|
||||
y += 8;
|
||||
if (y > DISPLAY_HEIGHT - MON_PIC_HEIGHT + 8)
|
||||
y = DISPLAY_HEIGHT - MON_PIC_HEIGHT + 8;
|
||||
@ -213,7 +213,7 @@ u8 GetBattlerSpriteFinal_Y(u8 battlerId, u16 species, bool8 a3)
|
||||
return y;
|
||||
}
|
||||
|
||||
u8 GetBattlerSpriteCoord2(u8 battlerId, u8 coordType)
|
||||
u8 GetBattlerSpriteCoord2(u8 battler, u8 coordType)
|
||||
{
|
||||
u16 species;
|
||||
struct BattleSpriteInfo *spriteInfo;
|
||||
@ -230,55 +230,55 @@ u8 GetBattlerSpriteCoord2(u8 battlerId, u8 coordType)
|
||||
else
|
||||
{
|
||||
spriteInfo = gBattleSpritesDataPtr->battlerData;
|
||||
if (!spriteInfo[battlerId].transformSpecies)
|
||||
species = gAnimBattlerSpecies[battlerId];
|
||||
if (!spriteInfo[battler].transformSpecies)
|
||||
species = gAnimBattlerSpecies[battler];
|
||||
else
|
||||
species = spriteInfo[battlerId].transformSpecies;
|
||||
species = spriteInfo[battler].transformSpecies;
|
||||
}
|
||||
if (coordType == BATTLER_COORD_Y_PIC_OFFSET)
|
||||
return GetBattlerSpriteFinal_Y(battlerId, species, TRUE);
|
||||
return GetBattlerSpriteFinal_Y(battler, species, TRUE);
|
||||
else
|
||||
return GetBattlerSpriteFinal_Y(battlerId, species, FALSE);
|
||||
return GetBattlerSpriteFinal_Y(battler, species, FALSE);
|
||||
}
|
||||
else
|
||||
{
|
||||
return GetBattlerSpriteCoord(battlerId, coordType);
|
||||
return GetBattlerSpriteCoord(battler, coordType);
|
||||
}
|
||||
}
|
||||
|
||||
u8 GetBattlerSpriteDefault_Y(u8 battlerId)
|
||||
u8 GetBattlerSpriteDefault_Y(u8 battler)
|
||||
{
|
||||
return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y_PIC_OFFSET_DEFAULT);
|
||||
return GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET_DEFAULT);
|
||||
}
|
||||
|
||||
u8 GetSubstituteSpriteDefault_Y(u8 battlerId)
|
||||
u8 GetSubstituteSpriteDefault_Y(u8 battler)
|
||||
{
|
||||
u16 y;
|
||||
if (GetBattlerSide(battlerId) != B_SIDE_PLAYER)
|
||||
y = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y) + 16;
|
||||
if (GetBattlerSide(battler) != B_SIDE_PLAYER)
|
||||
y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y) + 16;
|
||||
else
|
||||
y = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y) + 17;
|
||||
y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y) + 17;
|
||||
return y;
|
||||
}
|
||||
|
||||
u8 GetBattlerYCoordWithElevation(u8 battlerId)
|
||||
u8 GetBattlerYCoordWithElevation(u8 battler)
|
||||
{
|
||||
u16 species;
|
||||
u8 y;
|
||||
struct BattleSpriteInfo *spriteInfo;
|
||||
|
||||
y = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y);
|
||||
y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y);
|
||||
if (!IsContest())
|
||||
{
|
||||
spriteInfo = gBattleSpritesDataPtr->battlerData;
|
||||
|
||||
if (!spriteInfo[battlerId].transformSpecies)
|
||||
species = GetMonData(GetPartyBattlerData(battlerId), MON_DATA_SPECIES);
|
||||
if (!spriteInfo[battler].transformSpecies)
|
||||
species = GetMonData(GetPartyBattlerData(battler), MON_DATA_SPECIES);
|
||||
else
|
||||
species = spriteInfo[battlerId].transformSpecies;
|
||||
species = spriteInfo[battler].transformSpecies;
|
||||
|
||||
if (GetBattlerSide(battlerId) != B_SIDE_PLAYER)
|
||||
y -= GetBattlerElevation(battlerId, species);
|
||||
if (GetBattlerSide(battler) != B_SIDE_PLAYER)
|
||||
y -= GetBattlerElevation(battler, species);
|
||||
}
|
||||
return y;
|
||||
}
|
||||
@ -799,23 +799,23 @@ bool32 InitSpritePosToAnimBattler(u32 animBattlerId, struct Sprite *sprite, bool
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 IsBattlerSpritePresent(u8 battlerId)
|
||||
bool8 IsBattlerSpritePresent(u8 battler)
|
||||
{
|
||||
if (IsContest())
|
||||
{
|
||||
if (gBattleAnimAttacker == battlerId)
|
||||
if (gBattleAnimAttacker == battler)
|
||||
return TRUE;
|
||||
else if (gBattleAnimTarget == battlerId)
|
||||
else if (gBattleAnimTarget == battler)
|
||||
return TRUE;
|
||||
else
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (GetBattlerPosition(battlerId) == 0xff)
|
||||
if (GetBattlerPosition(battler) == 0xff)
|
||||
return FALSE;
|
||||
|
||||
if (!gBattleStruct->spriteIgnore0Hp && GetMonData(GetPartyBattlerData(battlerId), MON_DATA_HP) == 0)
|
||||
if (!gBattleStruct->spriteIgnore0Hp && GetMonData(GetPartyBattlerData(battler), MON_DATA_HP) == 0)
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
@ -873,7 +873,7 @@ void GetBattleAnimBgData(struct BattleAnimBgData *out, u32 bgId)
|
||||
}
|
||||
}
|
||||
|
||||
void GetBgDataForTransform(struct BattleAnimBgData *out, u8 battlerId)
|
||||
void GetBgDataForTransform(struct BattleAnimBgData *out, u8 battler)
|
||||
{
|
||||
out->bgTiles = gBattleAnimBgTileBuffer;
|
||||
out->bgTilemap = (u16 *)gBattleAnimBgTilemapBuffer;
|
||||
@ -1211,14 +1211,14 @@ static bool8 ShouldRotScaleSpeciesBeFlipped(void)
|
||||
|
||||
void PrepareBattlerSpriteForRotScale(u8 spriteId, u8 objMode)
|
||||
{
|
||||
u8 battlerId = gSprites[spriteId].data[0];
|
||||
u8 battler = gSprites[spriteId].data[0];
|
||||
|
||||
if (IsContest() || IsBattlerSpriteVisible(battlerId))
|
||||
if (IsContest() || IsBattlerSpriteVisible(battler))
|
||||
gSprites[spriteId].invisible = FALSE;
|
||||
gSprites[spriteId].oam.objMode = objMode;
|
||||
gSprites[spriteId].affineAnimPaused = TRUE;
|
||||
if (!IsContest() && !gSprites[spriteId].oam.affineMode)
|
||||
gSprites[spriteId].oam.matrixNum = gBattleSpritesDataPtr->healthBoxesData[battlerId].matrixNum;
|
||||
gSprites[spriteId].oam.matrixNum = gBattleSpritesDataPtr->healthBoxesData[battler].matrixNum;
|
||||
gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_DOUBLE;
|
||||
CalcCenterToCornerVec(&gSprites[spriteId], gSprites[spriteId].oam.shape, gSprites[spriteId].oam.size, gSprites[spriteId].oam.affineMode);
|
||||
}
|
||||
@ -1521,7 +1521,7 @@ static void AnimThrowProjectile_Step(struct Sprite *sprite)
|
||||
void AnimTravelDiagonally(struct Sprite *sprite)
|
||||
{
|
||||
bool8 respectMonPicOffsets;
|
||||
u8 battlerId, coordType;
|
||||
u8 battler, coordType;
|
||||
|
||||
if (!gBattleAnimArgs[6])
|
||||
{
|
||||
@ -1536,19 +1536,19 @@ void AnimTravelDiagonally(struct Sprite *sprite)
|
||||
if (gBattleAnimArgs[5] == ANIM_ATTACKER)
|
||||
{
|
||||
InitSpritePosToAnimAttacker(sprite, respectMonPicOffsets);
|
||||
battlerId = gBattleAnimAttacker;
|
||||
battler = gBattleAnimAttacker;
|
||||
}
|
||||
else
|
||||
{
|
||||
InitSpritePosToAnimTarget(sprite, respectMonPicOffsets);
|
||||
battlerId = gBattleAnimTarget;
|
||||
battler = gBattleAnimTarget;
|
||||
}
|
||||
if (GetBattlerSide(gBattleAnimAttacker))
|
||||
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
|
||||
InitSpritePosToAnimTarget(sprite, respectMonPicOffsets);
|
||||
sprite->data[0] = gBattleAnimArgs[4];
|
||||
sprite->data[2] = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2) + gBattleAnimArgs[2];
|
||||
sprite->data[4] = GetBattlerSpriteCoord(battlerId, coordType) + gBattleAnimArgs[3];
|
||||
sprite->data[2] = GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2) + gBattleAnimArgs[2];
|
||||
sprite->data[4] = GetBattlerSpriteCoord(battler, coordType) + gBattleAnimArgs[3];
|
||||
sprite->callback = StartAnimLinearTranslation;
|
||||
StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
|
||||
}
|
||||
@ -1832,7 +1832,7 @@ void SetBattlerSpriteYOffsetFromOtherYScale(u8 spriteId, u8 otherSpriteId)
|
||||
static u16 GetBattlerYDeltaFromSpriteId(u8 spriteId)
|
||||
{
|
||||
struct BattleSpriteInfo *spriteInfo;
|
||||
u8 battlerId = gSprites[spriteId].data[0];
|
||||
u8 battler = gSprites[spriteId].data[0];
|
||||
u16 species;
|
||||
u16 i;
|
||||
|
||||
@ -1848,10 +1848,10 @@ static u16 GetBattlerYDeltaFromSpriteId(u8 spriteId)
|
||||
else
|
||||
{
|
||||
spriteInfo = gBattleSpritesDataPtr->battlerData;
|
||||
if (!spriteInfo[battlerId].transformSpecies)
|
||||
if (!spriteInfo[battler].transformSpecies)
|
||||
species = GetMonData(GetPartyBattlerData(i), MON_DATA_SPECIES);
|
||||
else
|
||||
species = spriteInfo[battlerId].transformSpecies;
|
||||
species = spriteInfo[battler].transformSpecies;
|
||||
|
||||
if (GetBattlerSide(i) == B_SIDE_PLAYER)
|
||||
return gSpeciesInfo[species].backPicYOffset;
|
||||
@ -1951,21 +1951,21 @@ void InitPrioritiesForVisibleBattlers(void)
|
||||
}
|
||||
}
|
||||
|
||||
u8 GetBattlerSpriteSubpriority(u8 battlerId)
|
||||
u8 GetBattlerSpriteSubpriority(u8 battler)
|
||||
{
|
||||
u8 position;
|
||||
u8 subpriority;
|
||||
|
||||
if (IsContest())
|
||||
{
|
||||
if (battlerId == 2)
|
||||
if (battler == 2)
|
||||
return 30;
|
||||
else
|
||||
return 40;
|
||||
}
|
||||
else
|
||||
{
|
||||
position = GetBattlerPosition(battlerId);
|
||||
position = GetBattlerPosition(battler);
|
||||
if (position == B_POSITION_PLAYER_LEFT)
|
||||
subpriority = 30;
|
||||
else if (position == B_POSITION_PLAYER_RIGHT)
|
||||
@ -1979,9 +1979,9 @@ u8 GetBattlerSpriteSubpriority(u8 battlerId)
|
||||
return subpriority;
|
||||
}
|
||||
|
||||
u8 GetBattlerSpriteBGPriority(u8 battlerId)
|
||||
u8 GetBattlerSpriteBGPriority(u8 battler)
|
||||
{
|
||||
u8 position = GetBattlerPosition(battlerId);
|
||||
u8 position = GetBattlerPosition(battler);
|
||||
|
||||
if (IsContest())
|
||||
return 2;
|
||||
@ -1991,11 +1991,11 @@ u8 GetBattlerSpriteBGPriority(u8 battlerId)
|
||||
return GetAnimBgAttribute(1, BG_ANIM_PRIORITY);
|
||||
}
|
||||
|
||||
u8 GetBattlerSpriteBGPriorityRank(u8 battlerId)
|
||||
u8 GetBattlerSpriteBGPriorityRank(u8 battler)
|
||||
{
|
||||
if (!IsContest())
|
||||
{
|
||||
u8 position = GetBattlerPosition(battlerId);
|
||||
u8 position = GetBattlerPosition(battler);
|
||||
if (position == B_POSITION_PLAYER_LEFT || position == B_POSITION_OPPONENT_RIGHT)
|
||||
return 2;
|
||||
else
|
||||
@ -2005,7 +2005,7 @@ u8 GetBattlerSpriteBGPriorityRank(u8 battlerId)
|
||||
}
|
||||
|
||||
// Create Pokémon sprite to be used for a move animation effect (e.g. Role Play / Snatch)
|
||||
u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 id, s16 x, s16 y, u8 subpriority, u32 personality, bool8 isShiny, u32 battlerId)
|
||||
u8 CreateAdditionalMonSpriteForMoveAnim(u16 species, bool8 isBackpic, u8 id, s16 x, s16 y, u8 subpriority, u32 personality, bool8 isShiny, u32 battler)
|
||||
{
|
||||
u8 spriteId;
|
||||
u16 sheet = LoadSpriteSheet(&sSpriteSheets_MoveEffectMons[id]);
|
||||
@ -2051,7 +2051,7 @@ void DestroySpriteAndFreeResources_(struct Sprite *sprite)
|
||||
DestroySpriteAndFreeResources(sprite);
|
||||
}
|
||||
|
||||
s16 GetBattlerSpriteCoordAttr(u8 battlerId, u8 attr)
|
||||
s16 GetBattlerSpriteCoordAttr(u8 battler, u8 attr)
|
||||
{
|
||||
u16 species;
|
||||
u32 personality;
|
||||
@ -2080,25 +2080,25 @@ s16 GetBattlerSpriteCoordAttr(u8 battlerId, u8 attr)
|
||||
}
|
||||
else
|
||||
{
|
||||
struct Pokemon *mon = GetPartyBattlerData(battlerId);
|
||||
struct Pokemon *mon = GetPartyBattlerData(battler);
|
||||
|
||||
spriteInfo = gBattleSpritesDataPtr->battlerData;
|
||||
if (!spriteInfo[battlerId].transformSpecies)
|
||||
if (!spriteInfo[battler].transformSpecies)
|
||||
{
|
||||
species = GetMonData(mon, MON_DATA_SPECIES);
|
||||
personality = GetMonData(mon, MON_DATA_PERSONALITY);
|
||||
}
|
||||
else
|
||||
{
|
||||
species = spriteInfo[battlerId].transformSpecies;
|
||||
personality = gTransformedPersonalities[battlerId];
|
||||
species = spriteInfo[battler].transformSpecies;
|
||||
personality = gTransformedPersonalities[battler];
|
||||
}
|
||||
|
||||
species = SanitizeSpeciesId(species);
|
||||
if (species == SPECIES_UNOWN)
|
||||
species = GetUnownSpeciesId(personality);
|
||||
|
||||
if (GetBattlerSide(battlerId) == B_SIDE_PLAYER)
|
||||
if (GetBattlerSide(battler) == B_SIDE_PLAYER)
|
||||
{
|
||||
#if P_GENDER_DIFFERENCES
|
||||
if (gSpeciesInfo[species].backPicFemale != NULL && IsPersonalityFemale(species, personality))
|
||||
@ -2129,22 +2129,22 @@ s16 GetBattlerSpriteCoordAttr(u8 battlerId, u8 attr)
|
||||
case BATTLER_COORD_ATTR_WIDTH:
|
||||
return GET_MON_COORDS_WIDTH(size);
|
||||
case BATTLER_COORD_ATTR_LEFT:
|
||||
return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2) - (GET_MON_COORDS_WIDTH(size) / 2);
|
||||
return GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2) - (GET_MON_COORDS_WIDTH(size) / 2);
|
||||
case BATTLER_COORD_ATTR_RIGHT:
|
||||
return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X_2) + (GET_MON_COORDS_WIDTH(size) / 2);
|
||||
return GetBattlerSpriteCoord(battler, BATTLER_COORD_X_2) + (GET_MON_COORDS_WIDTH(size) / 2);
|
||||
case BATTLER_COORD_ATTR_TOP:
|
||||
return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y_PIC_OFFSET) - (GET_MON_COORDS_HEIGHT(size) / 2);
|
||||
return GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET) - (GET_MON_COORDS_HEIGHT(size) / 2);
|
||||
case BATTLER_COORD_ATTR_BOTTOM:
|
||||
return GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y_PIC_OFFSET) + (GET_MON_COORDS_HEIGHT(size) / 2);
|
||||
return GetBattlerSpriteCoord(battler, BATTLER_COORD_Y_PIC_OFFSET) + (GET_MON_COORDS_HEIGHT(size) / 2);
|
||||
case BATTLER_COORD_ATTR_RAW_BOTTOM:
|
||||
ret = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y) + 31;
|
||||
ret = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y) + 31;
|
||||
return ret - y_offset;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
void SetAverageBattlerPositions(u8 battlerId, bool8 respectMonPicOffsets, s16 *x, s16 *y)
|
||||
void SetAverageBattlerPositions(u8 battler, bool8 respectMonPicOffsets, s16 *x, s16 *y)
|
||||
{
|
||||
u8 xCoordType, yCoordType;
|
||||
s16 battlerX, battlerY;
|
||||
@ -2161,12 +2161,12 @@ void SetAverageBattlerPositions(u8 battlerId, bool8 respectMonPicOffsets, s16 *x
|
||||
yCoordType = BATTLER_COORD_Y_PIC_OFFSET;
|
||||
}
|
||||
|
||||
battlerX = GetBattlerSpriteCoord(battlerId, xCoordType);
|
||||
battlerY = GetBattlerSpriteCoord(battlerId, yCoordType);
|
||||
battlerX = GetBattlerSpriteCoord(battler, xCoordType);
|
||||
battlerY = GetBattlerSpriteCoord(battler, yCoordType);
|
||||
if (IsDoubleBattle() && !IsContest())
|
||||
{
|
||||
partnerX = GetBattlerSpriteCoord(BATTLE_PARTNER(battlerId), xCoordType);
|
||||
partnerY = GetBattlerSpriteCoord(BATTLE_PARTNER(battlerId), yCoordType);
|
||||
partnerX = GetBattlerSpriteCoord(BATTLE_PARTNER(battler), xCoordType);
|
||||
partnerY = GetBattlerSpriteCoord(BATTLE_PARTNER(battler), yCoordType);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -2178,7 +2178,7 @@ void SetAverageBattlerPositions(u8 battlerId, bool8 respectMonPicOffsets, s16 *x
|
||||
*y = (battlerY + partnerY) / 2;
|
||||
}
|
||||
|
||||
u8 CreateInvisibleSpriteCopy(int battlerId, u8 spriteId, int species)
|
||||
u8 CreateInvisibleSpriteCopy(int battler, u8 spriteId, int species)
|
||||
{
|
||||
u8 newSpriteId = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy);
|
||||
gSprites[newSpriteId] = gSprites[spriteId];
|
||||
|
||||
@ -148,26 +148,26 @@ void SoundTask_PlayCryHighPitch(u8 taskId)
|
||||
}
|
||||
else
|
||||
{
|
||||
u8 battlerId;
|
||||
u8 battler;
|
||||
|
||||
// Get wanted battler.
|
||||
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
|
||||
battlerId = gBattleAnimAttacker;
|
||||
battler = gBattleAnimAttacker;
|
||||
else if (gBattleAnimArgs[0] == ANIM_TARGET)
|
||||
battlerId = gBattleAnimTarget;
|
||||
battler = gBattleAnimTarget;
|
||||
else if (gBattleAnimArgs[0] == ANIM_ATK_PARTNER)
|
||||
battlerId = BATTLE_PARTNER(gBattleAnimAttacker);
|
||||
battler = BATTLE_PARTNER(gBattleAnimAttacker);
|
||||
else
|
||||
battlerId = BATTLE_PARTNER(gBattleAnimTarget);
|
||||
battler = BATTLE_PARTNER(gBattleAnimTarget);
|
||||
|
||||
// Check if battler is visible.
|
||||
if ((gBattleAnimArgs[0] == ANIM_TARGET || gBattleAnimArgs[0] == ANIM_DEF_PARTNER) && !IsBattlerSpriteVisible(battlerId))
|
||||
if ((gBattleAnimArgs[0] == ANIM_TARGET || gBattleAnimArgs[0] == ANIM_DEF_PARTNER) && !IsBattlerSpriteVisible(battler))
|
||||
{
|
||||
DestroyAnimVisualTask(taskId);
|
||||
return;
|
||||
}
|
||||
|
||||
species = (GetIllusionMonSpecies(battlerId) != SPECIES_NONE) ? GetIllusionMonSpecies(battlerId) : gAnimBattlerSpecies[battlerId];
|
||||
species = (GetIllusionMonSpecies(battler) != SPECIES_NONE) ? GetIllusionMonSpecies(battler) : gAnimBattlerSpecies[battler];
|
||||
}
|
||||
|
||||
if (species != SPECIES_NONE)
|
||||
@ -193,26 +193,26 @@ void SoundTask_PlayDoubleCry(u8 taskId)
|
||||
}
|
||||
else
|
||||
{
|
||||
u8 battlerId;
|
||||
u8 battler;
|
||||
|
||||
// Get wanted battler.
|
||||
if (gBattleAnimArgs[0] == ANIM_ATTACKER)
|
||||
battlerId = gBattleAnimAttacker;
|
||||
battler = gBattleAnimAttacker;
|
||||
else if (gBattleAnimArgs[0] == ANIM_TARGET)
|
||||
battlerId = gBattleAnimTarget;
|
||||
battler = gBattleAnimTarget;
|
||||
else if (gBattleAnimArgs[0] == ANIM_ATK_PARTNER)
|
||||
battlerId = BATTLE_PARTNER(gBattleAnimAttacker);
|
||||
battler = BATTLE_PARTNER(gBattleAnimAttacker);
|
||||
else
|
||||
battlerId = BATTLE_PARTNER(gBattleAnimTarget);
|
||||
battler = BATTLE_PARTNER(gBattleAnimTarget);
|
||||
|
||||
// Check if battler is visible.
|
||||
if ((gBattleAnimArgs[0] == ANIM_TARGET || gBattleAnimArgs[0] == ANIM_DEF_PARTNER) && !IsBattlerSpriteVisible(battlerId))
|
||||
if ((gBattleAnimArgs[0] == ANIM_TARGET || gBattleAnimArgs[0] == ANIM_DEF_PARTNER) && !IsBattlerSpriteVisible(battler))
|
||||
{
|
||||
DestroyAnimVisualTask(taskId);
|
||||
return;
|
||||
}
|
||||
|
||||
species = (GetIllusionMonSpecies(battlerId) != SPECIES_NONE) ? GetIllusionMonSpecies(battlerId) : gAnimBattlerSpecies[battlerId];
|
||||
species = (GetIllusionMonSpecies(battler) != SPECIES_NONE) ? GetIllusionMonSpecies(battler) : gAnimBattlerSpecies[battler];
|
||||
}
|
||||
|
||||
gTasks[taskId].data[0] = gBattleAnimArgs[1];
|
||||
|
||||
@ -269,16 +269,16 @@ static const struct SpriteTemplate sFlashingCircleImpactSpriteTemplate =
|
||||
.callback = AnimFlashingCircleImpact,
|
||||
};
|
||||
|
||||
static u8 UNUSED Task_FlashingCircleImpacts(u8 battlerId, bool8 red)
|
||||
static u8 UNUSED Task_FlashingCircleImpacts(u8 battler, bool8 red)
|
||||
{
|
||||
u8 battlerSpriteId = gBattlerSpriteIds[battlerId];
|
||||
u8 battlerSpriteId = gBattlerSpriteIds[battler];
|
||||
u8 taskId = CreateTask(Task_UpdateFlashingCircleImpacts, 10);
|
||||
u8 spriteId;
|
||||
u8 i;
|
||||
|
||||
LoadCompressedSpriteSheetUsingHeap(&gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(ANIM_TAG_CIRCLE_IMPACT)]);
|
||||
LoadCompressedSpritePaletteUsingHeap(&gBattleAnimPaletteTable[GET_TRUE_SPRITE_INDEX(ANIM_TAG_CIRCLE_IMPACT)]);
|
||||
gTasks[taskId].data[0] = battlerId;
|
||||
gTasks[taskId].data[0] = battler;
|
||||
if (red)
|
||||
{
|
||||
gTasks[taskId].data[1] = RGB_RED;
|
||||
@ -588,15 +588,15 @@ void AnimTask_StatsChange(u8 taskId)
|
||||
|
||||
#undef CASE
|
||||
|
||||
void LaunchStatusAnimation(u8 battlerId, u8 statusAnimId)
|
||||
void LaunchStatusAnimation(u8 battler, u8 statusAnimId)
|
||||
{
|
||||
u8 taskId;
|
||||
|
||||
gBattleAnimAttacker = battlerId;
|
||||
gBattleAnimTarget = battlerId;
|
||||
gBattleAnimAttacker = battler;
|
||||
gBattleAnimTarget = battler;
|
||||
LaunchBattleAnimation(ANIM_TYPE_STATUS, statusAnimId);
|
||||
taskId = CreateTask(Task_DoStatusAnimation, 10);
|
||||
gTasks[taskId].data[0] = battlerId;
|
||||
gTasks[taskId].data[0] = battler;
|
||||
}
|
||||
|
||||
static void Task_DoStatusAnimation(u8 taskId)
|
||||
|
||||
@ -634,13 +634,13 @@ static const struct WindowTemplate sHealthboxWindowTemplate = {
|
||||
|
||||
// This function is here to cover a specific case - one player's mon in a 2 vs 1 double battle. In this scenario - display singles layout.
|
||||
// The same goes for a 2 vs 1 where opponent has only one pokemon.
|
||||
u32 WhichBattleCoords(u32 battlerId) // 0 - singles, 1 - doubles
|
||||
u32 WhichBattleCoords(u32 battler) // 0 - singles, 1 - doubles
|
||||
{
|
||||
if (GetBattlerPosition(battlerId) == B_POSITION_PLAYER_LEFT
|
||||
if (GetBattlerPosition(battler) == B_POSITION_PLAYER_LEFT
|
||||
&& gPlayerPartyCount == 1
|
||||
&& !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
|
||||
return 0;
|
||||
else if (GetBattlerPosition(battlerId) == B_POSITION_OPPONENT_LEFT
|
||||
else if (GetBattlerPosition(battler) == B_POSITION_OPPONENT_LEFT
|
||||
&& gEnemyPartyCount == 1
|
||||
&& !(gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS))
|
||||
return 0;
|
||||
@ -648,16 +648,16 @@ u32 WhichBattleCoords(u32 battlerId) // 0 - singles, 1 - doubles
|
||||
return IsDoubleBattle();
|
||||
}
|
||||
|
||||
u8 CreateBattlerHealthboxSprites(u8 battlerId)
|
||||
u8 CreateBattlerHealthboxSprites(u8 battler)
|
||||
{
|
||||
s16 data6 = 0;
|
||||
u8 healthboxLeftSpriteId, healthboxRightSpriteId;
|
||||
u8 healthbarSpriteId;
|
||||
struct Sprite *healthBarSpritePtr;
|
||||
|
||||
if (WhichBattleCoords(battlerId) == 0) // Singles
|
||||
if (WhichBattleCoords(battler) == 0) // Singles
|
||||
{
|
||||
if (GetBattlerSide(battlerId) == B_SIDE_PLAYER)
|
||||
if (GetBattlerSide(battler) == B_SIDE_PLAYER)
|
||||
{
|
||||
healthboxLeftSpriteId = CreateSprite(&sHealthboxPlayerSpriteTemplates[0], DISPLAY_WIDTH, DISPLAY_HEIGHT, 1);
|
||||
healthboxRightSpriteId = CreateSpriteAtEnd(&sHealthboxPlayerSpriteTemplates[0], DISPLAY_WIDTH, DISPLAY_HEIGHT, 1);
|
||||
@ -683,10 +683,10 @@ u8 CreateBattlerHealthboxSprites(u8 battlerId)
|
||||
}
|
||||
else
|
||||
{
|
||||
if (GetBattlerSide(battlerId) == B_SIDE_PLAYER)
|
||||
if (GetBattlerSide(battler) == B_SIDE_PLAYER)
|
||||
{
|
||||
healthboxLeftSpriteId = CreateSprite(&sHealthboxPlayerSpriteTemplates[GetBattlerPosition(battlerId) / 2], DISPLAY_WIDTH, DISPLAY_HEIGHT, 1);
|
||||
healthboxRightSpriteId = CreateSpriteAtEnd(&sHealthboxPlayerSpriteTemplates[GetBattlerPosition(battlerId) / 2], DISPLAY_WIDTH, DISPLAY_HEIGHT, 1);
|
||||
healthboxLeftSpriteId = CreateSprite(&sHealthboxPlayerSpriteTemplates[GetBattlerPosition(battler) / 2], DISPLAY_WIDTH, DISPLAY_HEIGHT, 1);
|
||||
healthboxRightSpriteId = CreateSpriteAtEnd(&sHealthboxPlayerSpriteTemplates[GetBattlerPosition(battler) / 2], DISPLAY_WIDTH, DISPLAY_HEIGHT, 1);
|
||||
|
||||
gSprites[healthboxLeftSpriteId].oam.affineParam = healthboxRightSpriteId;
|
||||
|
||||
@ -698,8 +698,8 @@ u8 CreateBattlerHealthboxSprites(u8 battlerId)
|
||||
}
|
||||
else
|
||||
{
|
||||
healthboxLeftSpriteId = CreateSprite(&sHealthboxOpponentSpriteTemplates[GetBattlerPosition(battlerId) / 2], DISPLAY_WIDTH, DISPLAY_HEIGHT, 1);
|
||||
healthboxRightSpriteId = CreateSpriteAtEnd(&sHealthboxOpponentSpriteTemplates[GetBattlerPosition(battlerId) / 2], DISPLAY_WIDTH, DISPLAY_HEIGHT, 1);
|
||||
healthboxLeftSpriteId = CreateSprite(&sHealthboxOpponentSpriteTemplates[GetBattlerPosition(battler) / 2], DISPLAY_WIDTH, DISPLAY_HEIGHT, 1);
|
||||
healthboxRightSpriteId = CreateSpriteAtEnd(&sHealthboxOpponentSpriteTemplates[GetBattlerPosition(battler) / 2], DISPLAY_WIDTH, DISPLAY_HEIGHT, 1);
|
||||
|
||||
gSprites[healthboxLeftSpriteId].oam.affineParam = healthboxRightSpriteId;
|
||||
|
||||
@ -711,16 +711,16 @@ u8 CreateBattlerHealthboxSprites(u8 battlerId)
|
||||
}
|
||||
}
|
||||
|
||||
healthbarSpriteId = CreateSpriteAtEnd(&sHealthbarSpriteTemplates[gBattlerPositions[battlerId]], 140, 60, 0);
|
||||
healthbarSpriteId = CreateSpriteAtEnd(&sHealthbarSpriteTemplates[gBattlerPositions[battler]], 140, 60, 0);
|
||||
healthBarSpritePtr = &gSprites[healthbarSpriteId];
|
||||
SetSubspriteTables(healthBarSpritePtr, &sHealthBar_SubspriteTables[GetBattlerSide(battlerId)]);
|
||||
SetSubspriteTables(healthBarSpritePtr, &sHealthBar_SubspriteTables[GetBattlerSide(battler)]);
|
||||
healthBarSpritePtr->subspriteMode = SUBSPRITES_IGNORE_PRIORITY;
|
||||
healthBarSpritePtr->oam.priority = 1;
|
||||
|
||||
CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_1), (void *)(OBJ_VRAM0 + healthBarSpritePtr->oam.tileNum * TILE_SIZE_4BPP), 64);
|
||||
|
||||
gSprites[healthboxLeftSpriteId].hMain_HealthBarSpriteId = healthbarSpriteId;
|
||||
gSprites[healthboxLeftSpriteId].hMain_Battler = battlerId;
|
||||
gSprites[healthboxLeftSpriteId].hMain_Battler = battler;
|
||||
gSprites[healthboxLeftSpriteId].invisible = TRUE;
|
||||
|
||||
gSprites[healthboxRightSpriteId].invisible = TRUE;
|
||||
@ -729,7 +729,7 @@ u8 CreateBattlerHealthboxSprites(u8 battlerId)
|
||||
healthBarSpritePtr->hBar_Data6 = data6;
|
||||
healthBarSpritePtr->invisible = TRUE;
|
||||
|
||||
CreateIndicatorSprite(battlerId);
|
||||
CreateIndicatorSprite(battler);
|
||||
|
||||
gBattleStruct->ballSpriteIds[0] = MAX_SPRITES;
|
||||
gBattleStruct->ballSpriteIds[1] = MAX_SPRITES;
|
||||
@ -800,13 +800,13 @@ static void SpriteCB_HealthBoxOther(struct Sprite *sprite)
|
||||
sprite->y2 = gSprites[healthboxMainSpriteId].y2;
|
||||
}
|
||||
|
||||
void SetBattleBarStruct(u8 battlerId, u8 healthboxSpriteId, s32 maxVal, s32 oldVal, s32 receivedValue)
|
||||
void SetBattleBarStruct(u8 battler, u8 healthboxSpriteId, s32 maxVal, s32 oldVal, s32 receivedValue)
|
||||
{
|
||||
gBattleSpritesDataPtr->battleBars[battlerId].healthboxSpriteId = healthboxSpriteId;
|
||||
gBattleSpritesDataPtr->battleBars[battlerId].maxValue = maxVal;
|
||||
gBattleSpritesDataPtr->battleBars[battlerId].oldValue = oldVal;
|
||||
gBattleSpritesDataPtr->battleBars[battlerId].receivedValue = receivedValue;
|
||||
gBattleSpritesDataPtr->battleBars[battlerId].currValue = -32768;
|
||||
gBattleSpritesDataPtr->battleBars[battler].healthboxSpriteId = healthboxSpriteId;
|
||||
gBattleSpritesDataPtr->battleBars[battler].maxValue = maxVal;
|
||||
gBattleSpritesDataPtr->battleBars[battler].oldValue = oldVal;
|
||||
gBattleSpritesDataPtr->battleBars[battler].receivedValue = receivedValue;
|
||||
gBattleSpritesDataPtr->battleBars[battler].currValue = -32768;
|
||||
}
|
||||
|
||||
void SetHealthboxSpriteInvisible(u8 healthboxSpriteId)
|
||||
@ -1062,14 +1062,14 @@ static void UpdateOpponentHpTextSingles(u32 healthboxSpriteId, s16 value, u32 ma
|
||||
|
||||
void UpdateHpTextInHealthbox(u32 healthboxSpriteId, u32 maxOrCurrent, s16 currHp, s16 maxHp)
|
||||
{
|
||||
u32 battlerId = gSprites[healthboxSpriteId].hMain_Battler;
|
||||
if (WhichBattleCoords(battlerId))
|
||||
u32 battler = gSprites[healthboxSpriteId].hMain_Battler;
|
||||
if (WhichBattleCoords(battler))
|
||||
{
|
||||
UpdateHpTextInHealthboxInDoubles(healthboxSpriteId, maxOrCurrent, currHp, maxHp);
|
||||
}
|
||||
else // Single Battle
|
||||
{
|
||||
if (GetBattlerSide(battlerId) == B_SIDE_PLAYER) // Player
|
||||
if (GetBattlerSide(battler) == B_SIDE_PLAYER) // Player
|
||||
{
|
||||
PrintHpOnHealthbox(healthboxSpriteId, currHp, maxHp, 2, 0xB00, 0x3A0);
|
||||
}
|
||||
@ -1248,7 +1248,7 @@ void SwapHpBarsWithHpText(void)
|
||||
#define tIsBattleStart data[10]
|
||||
#define tBlend data[15]
|
||||
|
||||
u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo, bool8 skipPlayer, bool8 isBattleStart)
|
||||
u8 CreatePartyStatusSummarySprites(u8 battler, struct HpAndStatus *partyInfo, bool8 skipPlayer, bool8 isBattleStart)
|
||||
{
|
||||
bool8 isOpponent;
|
||||
s16 bar_X, bar_Y, bar_pos2_X, bar_data0;
|
||||
@ -1257,9 +1257,9 @@ u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo,
|
||||
u8 ballIconSpritesIds[PARTY_SIZE];
|
||||
u8 taskId;
|
||||
|
||||
if (!skipPlayer || GetBattlerPosition(battlerId) != B_POSITION_OPPONENT_RIGHT)
|
||||
if (!skipPlayer || GetBattlerPosition(battler) != B_POSITION_OPPONENT_RIGHT)
|
||||
{
|
||||
if (GetBattlerSide(battlerId) == B_SIDE_PLAYER)
|
||||
if (GetBattlerSide(battler) == B_SIDE_PLAYER)
|
||||
{
|
||||
isOpponent = FALSE;
|
||||
bar_X = 136, bar_Y = 96;
|
||||
@ -1270,7 +1270,7 @@ u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo,
|
||||
{
|
||||
isOpponent = TRUE;
|
||||
|
||||
if (!skipPlayer || !WhichBattleCoords(battlerId))
|
||||
if (!skipPlayer || !WhichBattleCoords(battler))
|
||||
bar_X = 104, bar_Y = 40;
|
||||
else
|
||||
bar_X = 104, bar_Y = 16;
|
||||
@ -1338,7 +1338,7 @@ u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo,
|
||||
gSprites[ballIconSpritesIds[i]].data[2] = isOpponent;
|
||||
}
|
||||
|
||||
if (GetBattlerSide(battlerId) == B_SIDE_PLAYER)
|
||||
if (GetBattlerSide(battler) == B_SIDE_PLAYER)
|
||||
{
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
|
||||
{
|
||||
@ -1451,7 +1451,7 @@ u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo,
|
||||
}
|
||||
|
||||
taskId = CreateTask(TaskDummy, 5);
|
||||
gTasks[taskId].tBattler = battlerId;
|
||||
gTasks[taskId].tBattler = battler;
|
||||
gTasks[taskId].tSummaryBarSpriteId = summaryBarSpriteId;
|
||||
|
||||
for (i = 0; i < PARTY_SIZE; i++)
|
||||
@ -1474,12 +1474,12 @@ void Task_HidePartyStatusSummary(u8 taskId)
|
||||
u8 ballIconSpriteIds[PARTY_SIZE];
|
||||
bool8 isBattleStart;
|
||||
u8 summaryBarSpriteId;
|
||||
u8 battlerId;
|
||||
u8 battler;
|
||||
s32 i;
|
||||
|
||||
isBattleStart = gTasks[taskId].tIsBattleStart;
|
||||
summaryBarSpriteId = gTasks[taskId].tSummaryBarSpriteId;
|
||||
battlerId = gTasks[taskId].tBattler;
|
||||
battler = gTasks[taskId].tBattler;
|
||||
|
||||
for (i = 0; i < PARTY_SIZE; i++)
|
||||
ballIconSpriteIds[i] = gTasks[taskId].tBallIconSpriteId(i);
|
||||
@ -1498,7 +1498,7 @@ void Task_HidePartyStatusSummary(u8 taskId)
|
||||
{
|
||||
for (i = 0; i < PARTY_SIZE; i++)
|
||||
{
|
||||
if (GetBattlerSide(battlerId) != B_SIDE_PLAYER)
|
||||
if (GetBattlerSide(battler) != B_SIDE_PLAYER)
|
||||
{
|
||||
gSprites[ballIconSpriteIds[PARTY_SIZE - 1 - i]].data[1] = 7 * i;
|
||||
gSprites[ballIconSpriteIds[PARTY_SIZE - 1 - i]].data[3] = 0;
|
||||
@ -1543,7 +1543,7 @@ static void Task_HidePartyStatusSummary_BattleStart_2(u8 taskId)
|
||||
u8 ballIconSpriteIds[PARTY_SIZE];
|
||||
s32 i;
|
||||
|
||||
u8 battlerId = gTasks[taskId].tBattler;
|
||||
u8 battler = gTasks[taskId].tBattler;
|
||||
if (--gTasks[taskId].tBlend == -1)
|
||||
{
|
||||
u8 summaryBarSpriteId = gTasks[taskId].tSummaryBarSpriteId;
|
||||
@ -1570,7 +1570,7 @@ static void Task_HidePartyStatusSummary_BattleStart_2(u8 taskId)
|
||||
}
|
||||
else if (gTasks[taskId].tBlend == -3)
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[battlerId].partyStatusSummaryShown = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[battler].partyStatusSummaryShown = 0;
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
|
||||
DestroyTask(taskId);
|
||||
@ -1581,7 +1581,7 @@ static void Task_HidePartyStatusSummary_DuringBattle(u8 taskId)
|
||||
{
|
||||
u8 ballIconSpriteIds[PARTY_SIZE];
|
||||
s32 i;
|
||||
u8 battlerId = gTasks[taskId].tBattler;
|
||||
u8 battler = gTasks[taskId].tBattler;
|
||||
|
||||
if (--gTasks[taskId].tBlend >= 0)
|
||||
{
|
||||
@ -1602,7 +1602,7 @@ static void Task_HidePartyStatusSummary_DuringBattle(u8 taskId)
|
||||
}
|
||||
else if (gTasks[taskId].tBlend == -3)
|
||||
{
|
||||
gBattleSpritesDataPtr->healthBoxesData[battlerId].partyStatusSummaryShown = 0;
|
||||
gBattleSpritesDataPtr->healthBoxesData[battler].partyStatusSummaryShown = 0;
|
||||
SetGpuReg(REG_OFFSET_BLDCNT, 0);
|
||||
SetGpuReg(REG_OFFSET_BLDALPHA, 0);
|
||||
DestroyTask(taskId);
|
||||
@ -1769,17 +1769,17 @@ static void UpdateNickInHealthbox(u8 healthboxSpriteId, struct Pokemon *mon)
|
||||
|
||||
static void TryAddPokeballIconToHealthbox(u8 healthboxSpriteId, bool8 noStatus)
|
||||
{
|
||||
u8 battlerId, healthBarSpriteId;
|
||||
u8 battler, healthBarSpriteId;
|
||||
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL)
|
||||
return;
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
|
||||
return;
|
||||
|
||||
battlerId = gSprites[healthboxSpriteId].hMain_Battler;
|
||||
if (GetBattlerSide(battlerId) == B_SIDE_PLAYER)
|
||||
battler = gSprites[healthboxSpriteId].hMain_Battler;
|
||||
if (GetBattlerSide(battler) == B_SIDE_PLAYER)
|
||||
return;
|
||||
if (!GetSetPokedexFlag(SpeciesToNationalPokedexNum(GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_SPECIES)), FLAG_GET_CAUGHT))
|
||||
if (!GetSetPokedexFlag(SpeciesToNationalPokedexNum(GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES)), FLAG_GET_CAUGHT))
|
||||
return;
|
||||
|
||||
healthBarSpriteId = gSprites[healthboxSpriteId].hMain_HealthBarSpriteId;
|
||||
@ -1793,56 +1793,56 @@ static void TryAddPokeballIconToHealthbox(u8 healthboxSpriteId, bool8 noStatus)
|
||||
static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId)
|
||||
{
|
||||
s32 i;
|
||||
u8 battlerId, healthBarSpriteId;
|
||||
u8 battler, healthBarSpriteId;
|
||||
u32 status, pltAdder;
|
||||
const u8 *statusGfxPtr;
|
||||
s16 tileNumAdder;
|
||||
u8 statusPalId;
|
||||
|
||||
battlerId = gSprites[healthboxSpriteId].hMain_Battler;
|
||||
battler = gSprites[healthboxSpriteId].hMain_Battler;
|
||||
healthBarSpriteId = gSprites[healthboxSpriteId].hMain_HealthBarSpriteId;
|
||||
if (GetBattlerSide(battlerId) == B_SIDE_PLAYER)
|
||||
if (GetBattlerSide(battler) == B_SIDE_PLAYER)
|
||||
{
|
||||
status = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_STATUS);
|
||||
if (!WhichBattleCoords(battlerId))
|
||||
status = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_STATUS);
|
||||
if (!WhichBattleCoords(battler))
|
||||
tileNumAdder = 0x1A;
|
||||
else
|
||||
tileNumAdder = 0x12;
|
||||
}
|
||||
else
|
||||
{
|
||||
status = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battlerId]], MON_DATA_STATUS);
|
||||
status = GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_STATUS);
|
||||
tileNumAdder = 0x11;
|
||||
}
|
||||
|
||||
if (status & STATUS1_SLEEP)
|
||||
{
|
||||
statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBattlerId(HEALTHBOX_GFX_STATUS_SLP_BATTLER0, battlerId));
|
||||
statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBattlerId(HEALTHBOX_GFX_STATUS_SLP_BATTLER0, battler));
|
||||
statusPalId = PAL_STATUS_SLP;
|
||||
}
|
||||
else if (status & STATUS1_PSN_ANY)
|
||||
{
|
||||
statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBattlerId(HEALTHBOX_GFX_STATUS_PSN_BATTLER0, battlerId));
|
||||
statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBattlerId(HEALTHBOX_GFX_STATUS_PSN_BATTLER0, battler));
|
||||
statusPalId = PAL_STATUS_PSN;
|
||||
}
|
||||
else if (status & STATUS1_BURN)
|
||||
{
|
||||
statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBattlerId(HEALTHBOX_GFX_STATUS_BRN_BATTLER0, battlerId));
|
||||
statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBattlerId(HEALTHBOX_GFX_STATUS_BRN_BATTLER0, battler));
|
||||
statusPalId = PAL_STATUS_BRN;
|
||||
}
|
||||
else if (status & STATUS1_FREEZE)
|
||||
{
|
||||
statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBattlerId(HEALTHBOX_GFX_STATUS_FRZ_BATTLER0, battlerId));
|
||||
statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBattlerId(HEALTHBOX_GFX_STATUS_FRZ_BATTLER0, battler));
|
||||
statusPalId = PAL_STATUS_FRZ;
|
||||
}
|
||||
else if (status & STATUS1_FROSTBITE)
|
||||
{
|
||||
statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBattlerId(HEALTHBOX_GFX_STATUS_FRB_BATTLER0, battlerId));
|
||||
statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBattlerId(HEALTHBOX_GFX_STATUS_FRB_BATTLER0, battler));
|
||||
statusPalId = PAL_STATUS_FRZ;
|
||||
}
|
||||
else if (status & STATUS1_PARALYSIS)
|
||||
{
|
||||
statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBattlerId(HEALTHBOX_GFX_STATUS_PRZ_BATTLER0, battlerId));
|
||||
statusGfxPtr = GetHealthboxElementGfxPtr(GetStatusIconForBattlerId(HEALTHBOX_GFX_STATUS_PRZ_BATTLER0, battler));
|
||||
statusPalId = PAL_STATUS_PAR;
|
||||
}
|
||||
else
|
||||
@ -1852,7 +1852,7 @@ static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId)
|
||||
for (i = 0; i < 3; i++)
|
||||
CpuCopy32(statusGfxPtr, (void *)(OBJ_VRAM0 + (gSprites[healthboxSpriteId].oam.tileNum + tileNumAdder + i) * TILE_SIZE_4BPP), 32);
|
||||
|
||||
if (!gBattleSpritesDataPtr->battlerData[battlerId].hpNumbersNoBars)
|
||||
if (!gBattleSpritesDataPtr->battlerData[battler].hpNumbersNoBars)
|
||||
CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_1), (void *)(OBJ_VRAM0 + gSprites[healthBarSpriteId].oam.tileNum * TILE_SIZE_4BPP), 64);
|
||||
|
||||
TryAddPokeballIconToHealthbox(healthboxSpriteId, TRUE);
|
||||
@ -1860,14 +1860,14 @@ static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId)
|
||||
}
|
||||
|
||||
pltAdder = PLTT_ID(gSprites[healthboxSpriteId].oam.paletteNum);
|
||||
pltAdder += battlerId + 12;
|
||||
pltAdder += battler + 12;
|
||||
|
||||
FillPalette(sStatusIconColors[statusPalId], OBJ_PLTT_OFFSET + pltAdder, PLTT_SIZEOF(1));
|
||||
CpuCopy16(&gPlttBufferUnfaded[OBJ_PLTT_OFFSET + pltAdder], (u16 *)OBJ_PLTT + pltAdder, PLTT_SIZEOF(1));
|
||||
CpuCopy32(statusGfxPtr, (void *)(OBJ_VRAM0 + (gSprites[healthboxSpriteId].oam.tileNum + tileNumAdder) * TILE_SIZE_4BPP), 96);
|
||||
if (WhichBattleCoords(battlerId) == 1 || GetBattlerSide(battlerId) == B_SIDE_OPPONENT)
|
||||
if (WhichBattleCoords(battler) == 1 || GetBattlerSide(battler) == B_SIDE_OPPONENT)
|
||||
{
|
||||
if (!gBattleSpritesDataPtr->battlerData[battlerId].hpNumbersNoBars)
|
||||
if (!gBattleSpritesDataPtr->battlerData[battler].hpNumbersNoBars)
|
||||
{
|
||||
CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_0), (void *)(OBJ_VRAM0 + gSprites[healthBarSpriteId].oam.tileNum * TILE_SIZE_4BPP), 32);
|
||||
CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_65), (void *)(OBJ_VRAM0 + (gSprites[healthBarSpriteId].oam.tileNum + 1) * TILE_SIZE_4BPP), 32);
|
||||
@ -1876,68 +1876,68 @@ static void UpdateStatusIconInHealthbox(u8 healthboxSpriteId)
|
||||
TryAddPokeballIconToHealthbox(healthboxSpriteId, FALSE);
|
||||
}
|
||||
|
||||
static u8 GetStatusIconForBattlerId(u8 statusElementId, u8 battlerId)
|
||||
static u8 GetStatusIconForBattlerId(u8 statusElementId, u8 battler)
|
||||
{
|
||||
u8 ret = statusElementId;
|
||||
|
||||
switch (statusElementId)
|
||||
{
|
||||
case HEALTHBOX_GFX_STATUS_PSN_BATTLER0:
|
||||
if (battlerId == 0)
|
||||
if (battler == 0)
|
||||
ret = HEALTHBOX_GFX_STATUS_PSN_BATTLER0;
|
||||
else if (battlerId == 1)
|
||||
else if (battler == 1)
|
||||
ret = HEALTHBOX_GFX_STATUS_PSN_BATTLER1;
|
||||
else if (battlerId == 2)
|
||||
else if (battler == 2)
|
||||
ret = HEALTHBOX_GFX_STATUS_PSN_BATTLER2;
|
||||
else
|
||||
ret = HEALTHBOX_GFX_STATUS_PSN_BATTLER3;
|
||||
break;
|
||||
case HEALTHBOX_GFX_STATUS_PRZ_BATTLER0:
|
||||
if (battlerId == 0)
|
||||
if (battler == 0)
|
||||
ret = HEALTHBOX_GFX_STATUS_PRZ_BATTLER0;
|
||||
else if (battlerId == 1)
|
||||
else if (battler == 1)
|
||||
ret = HEALTHBOX_GFX_STATUS_PRZ_BATTLER1;
|
||||
else if (battlerId == 2)
|
||||
else if (battler == 2)
|
||||
ret = HEALTHBOX_GFX_STATUS_PRZ_BATTLER2;
|
||||
else
|
||||
ret = HEALTHBOX_GFX_STATUS_PRZ_BATTLER3;
|
||||
break;
|
||||
case HEALTHBOX_GFX_STATUS_SLP_BATTLER0:
|
||||
if (battlerId == 0)
|
||||
if (battler == 0)
|
||||
ret = HEALTHBOX_GFX_STATUS_SLP_BATTLER0;
|
||||
else if (battlerId == 1)
|
||||
else if (battler == 1)
|
||||
ret = HEALTHBOX_GFX_STATUS_SLP_BATTLER1;
|
||||
else if (battlerId == 2)
|
||||
else if (battler == 2)
|
||||
ret = HEALTHBOX_GFX_STATUS_SLP_BATTLER2;
|
||||
else
|
||||
ret = HEALTHBOX_GFX_STATUS_SLP_BATTLER3;
|
||||
break;
|
||||
case HEALTHBOX_GFX_STATUS_FRZ_BATTLER0:
|
||||
if (battlerId == 0)
|
||||
if (battler == 0)
|
||||
ret = HEALTHBOX_GFX_STATUS_FRZ_BATTLER0;
|
||||
else if (battlerId == 1)
|
||||
else if (battler == 1)
|
||||
ret = HEALTHBOX_GFX_STATUS_FRZ_BATTLER1;
|
||||
else if (battlerId == 2)
|
||||
else if (battler == 2)
|
||||
ret = HEALTHBOX_GFX_STATUS_FRZ_BATTLER2;
|
||||
else
|
||||
ret = HEALTHBOX_GFX_STATUS_FRZ_BATTLER3;
|
||||
break;
|
||||
case HEALTHBOX_GFX_STATUS_FRB_BATTLER0:
|
||||
if (battlerId == 0)
|
||||
if (battler == 0)
|
||||
ret = HEALTHBOX_GFX_STATUS_FRB_BATTLER0;
|
||||
else if (battlerId == 1)
|
||||
else if (battler == 1)
|
||||
ret = HEALTHBOX_GFX_STATUS_FRB_BATTLER1;
|
||||
else if (battlerId == 2)
|
||||
else if (battler == 2)
|
||||
ret = HEALTHBOX_GFX_STATUS_FRB_BATTLER2;
|
||||
else
|
||||
ret = HEALTHBOX_GFX_STATUS_FRB_BATTLER3;
|
||||
break;
|
||||
case HEALTHBOX_GFX_STATUS_BRN_BATTLER0:
|
||||
if (battlerId == 0)
|
||||
if (battler == 0)
|
||||
ret = HEALTHBOX_GFX_STATUS_BRN_BATTLER0;
|
||||
else if (battlerId == 1)
|
||||
else if (battler == 1)
|
||||
ret = HEALTHBOX_GFX_STATUS_BRN_BATTLER1;
|
||||
else if (battlerId == 2)
|
||||
else if (battler == 2)
|
||||
ret = HEALTHBOX_GFX_STATUS_BRN_BATTLER2;
|
||||
else
|
||||
ret = HEALTHBOX_GFX_STATUS_BRN_BATTLER3;
|
||||
@ -1977,13 +1977,13 @@ static void UpdateLeftNoOfBallsTextOnHealthbox(u8 healthboxSpriteId)
|
||||
|
||||
void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elementId)
|
||||
{
|
||||
u32 battlerId = gSprites[healthboxSpriteId].hMain_Battler;
|
||||
u32 battler = gSprites[healthboxSpriteId].hMain_Battler;
|
||||
s32 maxHp = GetMonData(mon, MON_DATA_MAX_HP);
|
||||
s32 currHp = GetMonData(mon, MON_DATA_HP);
|
||||
|
||||
if (GetBattlerSide(battlerId) == B_SIDE_PLAYER)
|
||||
if (GetBattlerSide(battler) == B_SIDE_PLAYER)
|
||||
{
|
||||
u8 isDoubles = WhichBattleCoords(battlerId);
|
||||
u8 isDoubles = WhichBattleCoords(battler);
|
||||
|
||||
if (elementId == HEALTHBOX_LEVEL || elementId == HEALTHBOX_ALL)
|
||||
UpdateLvlInHealthbox(healthboxSpriteId, GetMonData(mon, MON_DATA_LEVEL));
|
||||
@ -1998,8 +1998,8 @@ void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elem
|
||||
if (elementId == HEALTHBOX_HEALTH_BAR || elementId == HEALTHBOX_ALL)
|
||||
{
|
||||
LoadBattleBarGfx(0);
|
||||
SetBattleBarStruct(battlerId, healthboxSpriteId, maxHp, currHp, 0);
|
||||
MoveBattleBar(battlerId, healthboxSpriteId, HEALTH_BAR, 0);
|
||||
SetBattleBarStruct(battler, healthboxSpriteId, maxHp, currHp, 0);
|
||||
MoveBattleBar(battler, healthboxSpriteId, HEALTH_BAR, 0);
|
||||
}
|
||||
|
||||
if (!isDoubles && (elementId == HEALTHBOX_EXP_BAR || elementId == HEALTHBOX_ALL))
|
||||
@ -2016,8 +2016,8 @@ void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elem
|
||||
currLevelExp = gExperienceTables[gSpeciesInfo[species].growthRate][level];
|
||||
currExpBarValue = exp - currLevelExp;
|
||||
maxExpBarValue = gExperienceTables[gSpeciesInfo[species].growthRate][level + 1] - currLevelExp;
|
||||
SetBattleBarStruct(battlerId, healthboxSpriteId, maxExpBarValue, currExpBarValue, isDoubles);
|
||||
MoveBattleBar(battlerId, healthboxSpriteId, EXP_BAR, 0);
|
||||
SetBattleBarStruct(battler, healthboxSpriteId, maxExpBarValue, currExpBarValue, isDoubles);
|
||||
MoveBattleBar(battler, healthboxSpriteId, EXP_BAR, 0);
|
||||
}
|
||||
if (elementId == HEALTHBOX_NICK || elementId == HEALTHBOX_ALL)
|
||||
UpdateNickInHealthbox(healthboxSpriteId, mon);
|
||||
@ -2032,7 +2032,7 @@ void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elem
|
||||
{
|
||||
if (elementId == HEALTHBOX_LEVEL || elementId == HEALTHBOX_ALL)
|
||||
UpdateLvlInHealthbox(healthboxSpriteId, GetMonData(mon, MON_DATA_LEVEL));
|
||||
if (gBattleSpritesDataPtr->battlerData[battlerId].hpNumbersNoBars)
|
||||
if (gBattleSpritesDataPtr->battlerData[battler].hpNumbersNoBars)
|
||||
{
|
||||
if (elementId == HEALTHBOX_ALL)
|
||||
UpdateHpTextInHealthbox(healthboxSpriteId, HP_BOTH, currHp, maxHp);
|
||||
@ -2044,8 +2044,8 @@ void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elem
|
||||
if (elementId == HEALTHBOX_HEALTH_BAR || elementId == HEALTHBOX_ALL)
|
||||
{
|
||||
LoadBattleBarGfx(0);
|
||||
SetBattleBarStruct(battlerId, healthboxSpriteId, maxHp, currHp, 0);
|
||||
MoveBattleBar(battlerId, healthboxSpriteId, HEALTH_BAR, 0);
|
||||
SetBattleBarStruct(battler, healthboxSpriteId, maxHp, currHp, 0);
|
||||
MoveBattleBar(battler, healthboxSpriteId, HEALTH_BAR, 0);
|
||||
}
|
||||
if (elementId == HEALTHBOX_NICK || elementId == HEALTHBOX_ALL)
|
||||
UpdateNickInHealthbox(healthboxSpriteId, mon);
|
||||
@ -2057,45 +2057,45 @@ void UpdateHealthboxAttribute(u8 healthboxSpriteId, struct Pokemon *mon, u8 elem
|
||||
#define B_EXPBAR_PIXELS 64
|
||||
#define B_HEALTHBAR_PIXELS 48
|
||||
|
||||
s32 MoveBattleBar(u8 battlerId, u8 healthboxSpriteId, u8 whichBar, u8 unused)
|
||||
s32 MoveBattleBar(u8 battler, u8 healthboxSpriteId, u8 whichBar, u8 unused)
|
||||
{
|
||||
s32 currentBarValue;
|
||||
|
||||
if (whichBar == HEALTH_BAR) // health bar
|
||||
{
|
||||
u16 hpFraction = B_FAST_HP_DRAIN == FALSE ? 1 : max(gBattleSpritesDataPtr->battleBars[battlerId].maxValue / (B_HEALTHBAR_PIXELS / 2), 1);
|
||||
currentBarValue = CalcNewBarValue(gBattleSpritesDataPtr->battleBars[battlerId].maxValue,
|
||||
gBattleSpritesDataPtr->battleBars[battlerId].oldValue,
|
||||
gBattleSpritesDataPtr->battleBars[battlerId].receivedValue,
|
||||
&gBattleSpritesDataPtr->battleBars[battlerId].currValue,
|
||||
u16 hpFraction = B_FAST_HP_DRAIN == FALSE ? 1 : max(gBattleSpritesDataPtr->battleBars[battler].maxValue / (B_HEALTHBAR_PIXELS / 2), 1);
|
||||
currentBarValue = CalcNewBarValue(gBattleSpritesDataPtr->battleBars[battler].maxValue,
|
||||
gBattleSpritesDataPtr->battleBars[battler].oldValue,
|
||||
gBattleSpritesDataPtr->battleBars[battler].receivedValue,
|
||||
&gBattleSpritesDataPtr->battleBars[battler].currValue,
|
||||
B_HEALTHBAR_PIXELS / 8, hpFraction);
|
||||
}
|
||||
else // exp bar
|
||||
{
|
||||
u16 expFraction = GetScaledExpFraction(gBattleSpritesDataPtr->battleBars[battlerId].oldValue,
|
||||
gBattleSpritesDataPtr->battleBars[battlerId].receivedValue,
|
||||
gBattleSpritesDataPtr->battleBars[battlerId].maxValue, 8);
|
||||
u16 expFraction = GetScaledExpFraction(gBattleSpritesDataPtr->battleBars[battler].oldValue,
|
||||
gBattleSpritesDataPtr->battleBars[battler].receivedValue,
|
||||
gBattleSpritesDataPtr->battleBars[battler].maxValue, 8);
|
||||
if (expFraction == 0)
|
||||
expFraction = 1;
|
||||
expFraction = abs(gBattleSpritesDataPtr->battleBars[battlerId].receivedValue / expFraction);
|
||||
expFraction = abs(gBattleSpritesDataPtr->battleBars[battler].receivedValue / expFraction);
|
||||
|
||||
currentBarValue = CalcNewBarValue(gBattleSpritesDataPtr->battleBars[battlerId].maxValue,
|
||||
gBattleSpritesDataPtr->battleBars[battlerId].oldValue,
|
||||
gBattleSpritesDataPtr->battleBars[battlerId].receivedValue,
|
||||
&gBattleSpritesDataPtr->battleBars[battlerId].currValue,
|
||||
currentBarValue = CalcNewBarValue(gBattleSpritesDataPtr->battleBars[battler].maxValue,
|
||||
gBattleSpritesDataPtr->battleBars[battler].oldValue,
|
||||
gBattleSpritesDataPtr->battleBars[battler].receivedValue,
|
||||
&gBattleSpritesDataPtr->battleBars[battler].currValue,
|
||||
B_EXPBAR_PIXELS / 8, expFraction);
|
||||
}
|
||||
|
||||
if (whichBar == EXP_BAR || (whichBar == HEALTH_BAR && !gBattleSpritesDataPtr->battlerData[battlerId].hpNumbersNoBars))
|
||||
MoveBattleBarGraphically(battlerId, whichBar);
|
||||
if (whichBar == EXP_BAR || (whichBar == HEALTH_BAR && !gBattleSpritesDataPtr->battlerData[battler].hpNumbersNoBars))
|
||||
MoveBattleBarGraphically(battler, whichBar);
|
||||
|
||||
if (currentBarValue == -1)
|
||||
gBattleSpritesDataPtr->battleBars[battlerId].currValue = 0;
|
||||
gBattleSpritesDataPtr->battleBars[battler].currValue = 0;
|
||||
|
||||
return currentBarValue;
|
||||
}
|
||||
|
||||
static void MoveBattleBarGraphically(u8 battlerId, u8 whichBar)
|
||||
static void MoveBattleBarGraphically(u8 battler, u8 whichBar)
|
||||
{
|
||||
u8 array[8];
|
||||
u8 filledPixelsCount, level;
|
||||
@ -2105,10 +2105,10 @@ static void MoveBattleBarGraphically(u8 battlerId, u8 whichBar)
|
||||
switch (whichBar)
|
||||
{
|
||||
case HEALTH_BAR:
|
||||
filledPixelsCount = CalcBarFilledPixels(gBattleSpritesDataPtr->battleBars[battlerId].maxValue,
|
||||
gBattleSpritesDataPtr->battleBars[battlerId].oldValue,
|
||||
gBattleSpritesDataPtr->battleBars[battlerId].receivedValue,
|
||||
&gBattleSpritesDataPtr->battleBars[battlerId].currValue,
|
||||
filledPixelsCount = CalcBarFilledPixels(gBattleSpritesDataPtr->battleBars[battler].maxValue,
|
||||
gBattleSpritesDataPtr->battleBars[battler].oldValue,
|
||||
gBattleSpritesDataPtr->battleBars[battler].receivedValue,
|
||||
&gBattleSpritesDataPtr->battleBars[battler].currValue,
|
||||
array, B_HEALTHBAR_PIXELS / 8);
|
||||
|
||||
if (filledPixelsCount > (B_HEALTHBAR_PIXELS * 50 / 100)) // more than 50 % hp
|
||||
@ -2120,7 +2120,7 @@ static void MoveBattleBarGraphically(u8 battlerId, u8 whichBar)
|
||||
|
||||
for (i = 0; i < 6; i++)
|
||||
{
|
||||
u8 healthbarSpriteId = gSprites[gBattleSpritesDataPtr->battleBars[battlerId].healthboxSpriteId].hMain_HealthBarSpriteId;
|
||||
u8 healthbarSpriteId = gSprites[gBattleSpritesDataPtr->battleBars[battler].healthboxSpriteId].hMain_HealthBarSpriteId;
|
||||
if (i < 2)
|
||||
CpuCopy32(GetHealthboxElementGfxPtr(barElementId) + array[i] * 32,
|
||||
(void *)(OBJ_VRAM0 + (gSprites[healthbarSpriteId].oam.tileNum + 2 + i) * TILE_SIZE_4BPP), 32);
|
||||
@ -2130,12 +2130,12 @@ static void MoveBattleBarGraphically(u8 battlerId, u8 whichBar)
|
||||
}
|
||||
break;
|
||||
case EXP_BAR:
|
||||
CalcBarFilledPixels(gBattleSpritesDataPtr->battleBars[battlerId].maxValue,
|
||||
gBattleSpritesDataPtr->battleBars[battlerId].oldValue,
|
||||
gBattleSpritesDataPtr->battleBars[battlerId].receivedValue,
|
||||
&gBattleSpritesDataPtr->battleBars[battlerId].currValue,
|
||||
CalcBarFilledPixels(gBattleSpritesDataPtr->battleBars[battler].maxValue,
|
||||
gBattleSpritesDataPtr->battleBars[battler].oldValue,
|
||||
gBattleSpritesDataPtr->battleBars[battler].receivedValue,
|
||||
&gBattleSpritesDataPtr->battleBars[battler].currValue,
|
||||
array, B_EXPBAR_PIXELS / 8);
|
||||
level = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battlerId]], MON_DATA_LEVEL);
|
||||
level = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_LEVEL);
|
||||
if (level >= MAX_LEVEL)
|
||||
{
|
||||
for (i = 0; i < 8; i++)
|
||||
@ -2145,10 +2145,10 @@ static void MoveBattleBarGraphically(u8 battlerId, u8 whichBar)
|
||||
{
|
||||
if (i < 4)
|
||||
CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_12) + array[i] * 32,
|
||||
(void *)(OBJ_VRAM0 + (gSprites[gBattleSpritesDataPtr->battleBars[battlerId].healthboxSpriteId].oam.tileNum + 0x24 + i) * TILE_SIZE_4BPP), 32);
|
||||
(void *)(OBJ_VRAM0 + (gSprites[gBattleSpritesDataPtr->battleBars[battler].healthboxSpriteId].oam.tileNum + 0x24 + i) * TILE_SIZE_4BPP), 32);
|
||||
else
|
||||
CpuCopy32(GetHealthboxElementGfxPtr(HEALTHBOX_GFX_12) + array[i] * 32,
|
||||
(void *)(OBJ_VRAM0 + 0xB80 + (i + gSprites[gBattleSpritesDataPtr->battleBars[battlerId].healthboxSpriteId].oam.tileNum) * TILE_SIZE_4BPP), 32);
|
||||
(void *)(OBJ_VRAM0 + 0xB80 + (i + gSprites[gBattleSpritesDataPtr->battleBars[battler].healthboxSpriteId].oam.tileNum) * TILE_SIZE_4BPP), 32);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
@ -202,7 +202,7 @@ static void UpdateLinkBattleGameStats(s32 battleOutcome)
|
||||
IncrementGameStat(stat);
|
||||
}
|
||||
|
||||
static void UpdateLinkBattleRecords(struct LinkBattleRecords *records, const u8 *name, u16 trainerId, s32 battleOutcome, u8 battlerId)
|
||||
static void UpdateLinkBattleRecords(struct LinkBattleRecords *records, const u8 *name, u16 trainerId, s32 battleOutcome, u8 battler)
|
||||
{
|
||||
s32 index;
|
||||
|
||||
@ -215,7 +215,7 @@ static void UpdateLinkBattleRecords(struct LinkBattleRecords *records, const u8
|
||||
ClearLinkBattleRecord(&records->entries[index]);
|
||||
StringCopyN(records->entries[index].name, name, PLAYER_NAME_LENGTH);
|
||||
records->entries[index].trainerId = trainerId;
|
||||
records->languages[index] = gLinkPlayers[battlerId].language;
|
||||
records->languages[index] = gLinkPlayers[battler].language;
|
||||
}
|
||||
UpdateLinkBattleRecord(&records->entries[index], battleOutcome);
|
||||
SortLinkBattleRecords(records);
|
||||
@ -230,50 +230,50 @@ void ClearPlayerLinkBattleRecords(void)
|
||||
}
|
||||
|
||||
#if FREE_LINK_BATTLE_RECORDS == FALSE
|
||||
static void IncTrainerCardWins(s32 battlerId)
|
||||
static void IncTrainerCardWins(s32 battler)
|
||||
{
|
||||
u16 *wins = &gTrainerCards[battlerId].linkBattleWins;
|
||||
u16 *wins = &gTrainerCards[battler].linkBattleWins;
|
||||
(*wins)++;
|
||||
if (*wins > 9999)
|
||||
*wins = 9999;
|
||||
}
|
||||
|
||||
static void IncTrainerCardLosses(s32 battlerId)
|
||||
static void IncTrainerCardLosses(s32 battler)
|
||||
{
|
||||
u16 *losses = &gTrainerCards[battlerId].linkBattleLosses;
|
||||
u16 *losses = &gTrainerCards[battler].linkBattleLosses;
|
||||
(*losses)++;
|
||||
if (*losses > 9999)
|
||||
*losses = 9999;
|
||||
}
|
||||
|
||||
static void UpdateTrainerCardWinsLosses(s32 battlerId)
|
||||
static void UpdateTrainerCardWinsLosses(s32 battler)
|
||||
{
|
||||
switch (gBattleOutcome)
|
||||
{
|
||||
case B_OUTCOME_WON:
|
||||
IncTrainerCardWins(BATTLE_OPPOSITE(battlerId));
|
||||
IncTrainerCardLosses(battlerId);
|
||||
IncTrainerCardWins(BATTLE_OPPOSITE(battler));
|
||||
IncTrainerCardLosses(battler);
|
||||
break;
|
||||
case B_OUTCOME_LOST:
|
||||
IncTrainerCardLosses(BATTLE_OPPOSITE(battlerId));
|
||||
IncTrainerCardWins(battlerId);
|
||||
IncTrainerCardLosses(BATTLE_OPPOSITE(battler));
|
||||
IncTrainerCardWins(battler);
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif //FREE_LINK_BATTLE_RECORDS
|
||||
|
||||
void UpdatePlayerLinkBattleRecords(s32 battlerId)
|
||||
void UpdatePlayerLinkBattleRecords(s32 battler)
|
||||
{
|
||||
#if FREE_LINK_BATTLE_RECORDS == FALSE
|
||||
if (InUnionRoom() != TRUE)
|
||||
{
|
||||
UpdateTrainerCardWinsLosses(battlerId);
|
||||
UpdateTrainerCardWinsLosses(battler);
|
||||
UpdateLinkBattleRecords(
|
||||
&gSaveBlock1Ptr->linkBattleRecords,
|
||||
gTrainerCards[battlerId].playerName,
|
||||
gTrainerCards[battlerId].trainerId,
|
||||
gTrainerCards[battler].playerName,
|
||||
gTrainerCards[battler].trainerId,
|
||||
gBattleOutcome,
|
||||
battlerId);
|
||||
battler);
|
||||
}
|
||||
#endif //FREE_LINK_BATTLE_RECORDS
|
||||
}
|
||||
|
||||
@ -1358,18 +1358,18 @@ void BattleTv_ClearExplosionFaintCause(void)
|
||||
}
|
||||
}
|
||||
|
||||
u8 GetBattlerMoveSlotId(u8 battlerId, u16 moveId)
|
||||
u8 GetBattlerMoveSlotId(u8 battler, u16 moveId)
|
||||
{
|
||||
s32 i;
|
||||
struct Pokemon *party;
|
||||
party = GetBattlerParty(battlerId);
|
||||
party = GetBattlerParty(battler);
|
||||
|
||||
i = 0;
|
||||
while (1)
|
||||
{
|
||||
if (i >= MAX_MON_MOVES)
|
||||
break;
|
||||
if (GetMonData(&party[gBattlerPartyIndexes[battlerId]], MON_DATA_MOVE1 + i, NULL) == moveId)
|
||||
if (GetMonData(&party[gBattlerPartyIndexes[battler]], MON_DATA_MOVE1 + i, NULL) == moveId)
|
||||
break;
|
||||
i++;
|
||||
}
|
||||
|
||||
1
src/data/map_group_count.h
Normal file
1
src/data/map_group_count.h
Normal file
@ -0,0 +1 @@
|
||||
static const u8 MAP_GROUP_COUNT[] = {57, 5, 5, 6, 7, 8, 9, 7, 7, 14, 8, 17, 10, 23, 13, 15, 15, 2, 2, 2, 3, 1, 1, 1, 108, 61, 89, 2, 1, 13, 1, 1, 3, 1, 0};
|
||||
@ -7350,20 +7350,20 @@ static void BufferBattlePartyOrder(u8 *partyBattleOrder, u8 flankId)
|
||||
partyBattleOrder[i] = (partyIds[0 + (i * 2)] << 4) | partyIds[1 + (i * 2)];
|
||||
}
|
||||
|
||||
void BufferBattlePartyCurrentOrderBySide(u8 battlerId, u8 flankId)
|
||||
void BufferBattlePartyCurrentOrderBySide(u8 battler, u8 flankId)
|
||||
{
|
||||
BufferBattlePartyOrderBySide(gBattleStruct->battlerPartyOrders[battlerId], flankId, battlerId);
|
||||
BufferBattlePartyOrderBySide(gBattleStruct->battlerPartyOrders[battler], flankId, battler);
|
||||
}
|
||||
|
||||
// when GetBattlerSide(battlerId) == B_SIDE_PLAYER, this function is identical the one above
|
||||
static void BufferBattlePartyOrderBySide(u8 *partyBattleOrder, u8 flankId, u8 battlerId)
|
||||
// when GetBattlerSide(battler) == B_SIDE_PLAYER, this function is identical the one above
|
||||
static void BufferBattlePartyOrderBySide(u8 *partyBattleOrder, u8 flankId, u8 battler)
|
||||
{
|
||||
u8 partyIndexes[PARTY_SIZE];
|
||||
int i, j;
|
||||
u8 leftBattler;
|
||||
u8 rightBattler;
|
||||
|
||||
if (GetBattlerSide(battlerId) == B_SIDE_PLAYER)
|
||||
if (GetBattlerSide(battler) == B_SIDE_PLAYER)
|
||||
{
|
||||
leftBattler = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
|
||||
rightBattler = GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT);
|
||||
@ -7422,7 +7422,7 @@ static void BufferBattlePartyOrderBySide(u8 *partyBattleOrder, u8 flankId, u8 ba
|
||||
partyBattleOrder[i] = (partyIndexes[0 + (i * 2)] << 4) | partyIndexes[1 + (i * 2)];
|
||||
}
|
||||
|
||||
void SwitchPartyOrderLinkMulti(u8 battlerId, u8 slot, u8 slot2)
|
||||
void SwitchPartyOrderLinkMulti(u8 battler, u8 slot, u8 slot2)
|
||||
{
|
||||
u8 partyIds[PARTY_SIZE];
|
||||
u8 tempSlot = 0;
|
||||
@ -7432,7 +7432,7 @@ void SwitchPartyOrderLinkMulti(u8 battlerId, u8 slot, u8 slot2)
|
||||
|
||||
if (IsMultiBattle())
|
||||
{
|
||||
partyBattleOrder = gBattleStruct->battlerPartyOrders[battlerId];
|
||||
partyBattleOrder = gBattleStruct->battlerPartyOrders[battler];
|
||||
for (i = j = 0; i < PARTY_SIZE / 2; j++, i++)
|
||||
{
|
||||
partyIds[j] = partyBattleOrder[i] >> 4;
|
||||
|
||||
@ -44,7 +44,7 @@ static void SpriteCB_TradePokeballEnd(struct Sprite *sprite);
|
||||
static void SpriteCB_HealthboxSlideInDelayed(struct Sprite *sprite);
|
||||
static void SpriteCB_HealthboxSlideIn(struct Sprite *sprite);
|
||||
static void SpriteCB_HitAnimHealthoxEffect(struct Sprite *sprite);
|
||||
static u16 GetBattlerPokeballItemId(u8 battlerId);
|
||||
static u16 GetBattlerPokeballItemId(u8 battler);
|
||||
|
||||
// rom const data
|
||||
|
||||
@ -563,7 +563,7 @@ u8 DoPokeballSendOutAnimation(u32 battler, s16 pan, u8 kindOfThrow)
|
||||
|
||||
static void Task_DoPokeballSendOutAnim(u8 taskId)
|
||||
{
|
||||
u32 throwCaseId, ballId, battlerId, ballSpriteId;
|
||||
u32 throwCaseId, ballId, battler, ballSpriteId;
|
||||
bool32 notSendOut = FALSE;
|
||||
u32 throwXoffset = (B_ENEMY_THROW_BALLS >= GEN_6) ? 24 : 0;
|
||||
s32 throwYoffset = (B_ENEMY_THROW_BALLS >= GEN_6) ? -16 : 24;
|
||||
@ -575,8 +575,8 @@ static void Task_DoPokeballSendOutAnim(u8 taskId)
|
||||
}
|
||||
|
||||
throwCaseId = gTasks[taskId].tThrowId;
|
||||
battlerId = gTasks[taskId].tBattler;
|
||||
ballId = GetBattlerPokeballItemId(battlerId);
|
||||
battler = gTasks[taskId].tBattler;
|
||||
ballId = GetBattlerPokeballItemId(battler);
|
||||
LoadBallGfx(ballId);
|
||||
ballSpriteId = CreateSprite(&gBallSpriteTemplates[ballId], 32, 80, 29);
|
||||
gSprites[ballSpriteId].data[0] = 0x80;
|
||||
@ -586,24 +586,24 @@ static void Task_DoPokeballSendOutAnim(u8 taskId)
|
||||
switch (throwCaseId)
|
||||
{
|
||||
case POKEBALL_PLAYER_SLIDEIN: // don't actually send out, trigger the slide-in animation
|
||||
gBattlerTarget = battlerId;
|
||||
gBattlerTarget = battler;
|
||||
gSprites[ballSpriteId].callback = HandleBallAnimEnd;
|
||||
gSprites[ballSpriteId].invisible = TRUE;
|
||||
break;
|
||||
case POKEBALL_PLAYER_SENDOUT:
|
||||
gBattlerTarget = battlerId;
|
||||
gBattlerTarget = battler;
|
||||
gSprites[ballSpriteId].x = 24;
|
||||
gSprites[ballSpriteId].y = 68;
|
||||
gSprites[ballSpriteId].callback = SpriteCB_MonSendOut_1;
|
||||
DoPokeballSendOutSoundEffect(battlerId);
|
||||
DoPokeballSendOutSoundEffect(battler);
|
||||
break;
|
||||
case POKEBALL_OPPONENT_SENDOUT:
|
||||
gSprites[ballSpriteId].x = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_X) + throwXoffset;
|
||||
gSprites[ballSpriteId].y = GetBattlerSpriteCoord(battlerId, BATTLER_COORD_Y) + throwYoffset;
|
||||
gBattlerTarget = battlerId;
|
||||
gSprites[ballSpriteId].x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X) + throwXoffset;
|
||||
gSprites[ballSpriteId].y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y) + throwYoffset;
|
||||
gBattlerTarget = battler;
|
||||
gSprites[ballSpriteId].data[0] = 0;
|
||||
gSprites[ballSpriteId].callback = GetOpponentMonSendOutCallback();
|
||||
DoPokeballSendOutSoundEffect(battlerId);
|
||||
DoPokeballSendOutSoundEffect(battler);
|
||||
break;
|
||||
default:
|
||||
gBattlerTarget = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
|
||||
@ -895,7 +895,7 @@ static void Task_PlayCryWhenReleasedFromBall(u8 taskId)
|
||||
u8 wantedCry = gTasks[taskId].tCryTaskWantedCry;
|
||||
s8 pan = gTasks[taskId].tCryTaskPan;
|
||||
u16 species = gTasks[taskId].tCryTaskSpecies;
|
||||
u8 battlerId = gTasks[taskId].tCryTaskBattler;
|
||||
u8 battler = gTasks[taskId].tCryTaskBattler;
|
||||
u8 monSpriteId = gTasks[taskId].tCryTaskMonSpriteId;
|
||||
struct Pokemon *mon = (void *)(u32)((gTasks[taskId].tCryTaskMonPtr1 << 16) | (u16)(gTasks[taskId].tCryTaskMonPtr2));
|
||||
|
||||
@ -912,7 +912,7 @@ static void Task_PlayCryWhenReleasedFromBall(u8 taskId)
|
||||
PlayCry_ByMode(species, pan, CRY_MODE_NORMAL);
|
||||
else
|
||||
PlayCry_ByMode(species, pan, CRY_MODE_WEAK);
|
||||
gBattleSpritesDataPtr->healthBoxesData[battlerId].waitForCry = FALSE;
|
||||
gBattleSpritesDataPtr->healthBoxesData[battler].waitForCry = FALSE;
|
||||
DestroyTask(taskId);
|
||||
break;
|
||||
case 2:
|
||||
@ -929,7 +929,7 @@ static void Task_PlayCryWhenReleasedFromBall(u8 taskId)
|
||||
else
|
||||
PlayCry_ReleaseDouble(species, pan, CRY_MODE_WEAK_DOUBLES);
|
||||
|
||||
gBattleSpritesDataPtr->healthBoxesData[battlerId].waitForCry = FALSE;
|
||||
gBattleSpritesDataPtr->healthBoxesData[battler].waitForCry = FALSE;
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
else
|
||||
@ -969,7 +969,7 @@ static void Task_PlayCryWhenReleasedFromBall(u8 taskId)
|
||||
else
|
||||
PlayCry_ReleaseDouble(species, pan, CRY_MODE_WEAK);
|
||||
|
||||
gBattleSpritesDataPtr->healthBoxesData[battlerId].waitForCry = FALSE;
|
||||
gBattleSpritesDataPtr->healthBoxesData[battler].waitForCry = FALSE;
|
||||
DestroyTask(taskId);
|
||||
break;
|
||||
}
|
||||
@ -977,11 +977,11 @@ static void Task_PlayCryWhenReleasedFromBall(u8 taskId)
|
||||
|
||||
static void SpriteCB_ReleaseMonFromBall(struct Sprite *sprite)
|
||||
{
|
||||
u8 battlerId = sprite->sBattler;
|
||||
u8 battler = sprite->sBattler;
|
||||
u32 ballId;
|
||||
|
||||
StartSpriteAnim(sprite, 1);
|
||||
ballId = GetBattlerPokeballItemId(battlerId);
|
||||
ballId = GetBattlerPokeballItemId(battler);
|
||||
AnimateBallOpenParticles(sprite->x, sprite->y - 5, 1, 28, ballId);
|
||||
sprite->data[0] = LaunchBallFadeMonTask(TRUE, sprite->sBattler, 14, ballId);
|
||||
sprite->callback = HandleBallAnimEnd;
|
||||
@ -993,13 +993,13 @@ static void SpriteCB_ReleaseMonFromBall(struct Sprite *sprite)
|
||||
u16 wantedCryCase;
|
||||
u8 taskId;
|
||||
|
||||
mon = GetPartyBattlerData(battlerId);
|
||||
if (GetBattlerSide(battlerId) != B_SIDE_PLAYER)
|
||||
mon = GetPartyBattlerData(battler);
|
||||
if (GetBattlerSide(battler) != B_SIDE_PLAYER)
|
||||
pan = 25;
|
||||
else
|
||||
pan = -25;
|
||||
|
||||
if ((battlerId == GetBattlerAtPosition(B_POSITION_PLAYER_LEFT) || battlerId == GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT))
|
||||
if ((battler == GetBattlerAtPosition(B_POSITION_PLAYER_LEFT) || battler == GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT))
|
||||
&& IsDoubleBattle() && gBattleSpritesDataPtr->animationData->introAnimActive)
|
||||
{
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_MULTI && gBattleTypeFlags & BATTLE_TYPE_LINK)
|
||||
@ -1015,16 +1015,16 @@ static void SpriteCB_ReleaseMonFromBall(struct Sprite *sprite)
|
||||
|
||||
if (!IsDoubleBattle() || !gBattleSpritesDataPtr->animationData->introAnimActive)
|
||||
wantedCryCase = 0;
|
||||
else if (battlerId == GetBattlerAtPosition(B_POSITION_PLAYER_LEFT) || battlerId == GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT))
|
||||
else if (battler == GetBattlerAtPosition(B_POSITION_PLAYER_LEFT) || battler == GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT))
|
||||
wantedCryCase = 1;
|
||||
else
|
||||
wantedCryCase = 2;
|
||||
|
||||
gBattleSpritesDataPtr->healthBoxesData[battlerId].waitForCry = TRUE;
|
||||
gBattleSpritesDataPtr->healthBoxesData[battler].waitForCry = TRUE;
|
||||
|
||||
taskId = CreateTask(Task_PlayCryWhenReleasedFromBall, 3);
|
||||
|
||||
illusionMon = GetIllusionMonPtr(battlerId);
|
||||
illusionMon = GetIllusionMonPtr(battler);
|
||||
if (illusionMon != NULL)
|
||||
gTasks[taskId].tCryTaskSpecies = GetMonData(illusionMon, MON_DATA_SPECIES);
|
||||
else
|
||||
@ -1032,7 +1032,7 @@ static void SpriteCB_ReleaseMonFromBall(struct Sprite *sprite)
|
||||
|
||||
gTasks[taskId].tCryTaskPan = pan;
|
||||
gTasks[taskId].tCryTaskWantedCry = wantedCryCase;
|
||||
gTasks[taskId].tCryTaskBattler = battlerId;
|
||||
gTasks[taskId].tCryTaskBattler = battler;
|
||||
gTasks[taskId].tCryTaskMonSpriteId = gBattlerSpriteIds[sprite->sBattler];
|
||||
gTasks[taskId].tCryTaskMonPtr1 = (u32)(mon) >> 16;
|
||||
gTasks[taskId].tCryTaskMonPtr2 = (u32)(mon);
|
||||
@ -1072,35 +1072,35 @@ static void SpriteCB_BallThrow_StartCaptureMon(struct Sprite *sprite)
|
||||
static void HandleBallAnimEnd(struct Sprite *sprite)
|
||||
{
|
||||
bool8 affineAnimEnded = FALSE;
|
||||
u8 battlerId = sprite->sBattler;
|
||||
u8 battler = sprite->sBattler;
|
||||
|
||||
if (sprite->data[7] == POKEBALL_PLAYER_SLIDEIN)
|
||||
{
|
||||
gSprites[gBattlerSpriteIds[sprite->sBattler]].callback = SpriteCB_PlayerMonSlideIn;
|
||||
AnimateSprite(&gSprites[gBattlerSpriteIds[sprite->sBattler]]);
|
||||
gSprites[gBattlerSpriteIds[sprite->sBattler]].data[1] = 0x1000;
|
||||
gSprites[gBattlerSpriteIds[battler]].callback = SpriteCB_PlayerMonSlideIn;
|
||||
AnimateSprite(&gSprites[gBattlerSpriteIds[battler]]);
|
||||
gSprites[gBattlerSpriteIds[battler]].data[1] = 0x1000;
|
||||
}
|
||||
|
||||
gSprites[gBattlerSpriteIds[battlerId]].invisible = FALSE;
|
||||
gSprites[gBattlerSpriteIds[battler]].invisible = FALSE;
|
||||
if (sprite->animEnded)
|
||||
sprite->invisible = TRUE;
|
||||
if (gSprites[gBattlerSpriteIds[battlerId]].affineAnimEnded)
|
||||
if (gSprites[gBattlerSpriteIds[battler]].affineAnimEnded)
|
||||
{
|
||||
StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[battlerId]], BATTLER_AFFINE_NORMAL);
|
||||
StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[battler]], BATTLER_AFFINE_NORMAL);
|
||||
affineAnimEnded = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
gSprites[gBattlerSpriteIds[battlerId]].data[1] -= 288;
|
||||
gSprites[gBattlerSpriteIds[battlerId]].y2 = gSprites[gBattlerSpriteIds[battlerId]].data[1] >> 8;
|
||||
gSprites[gBattlerSpriteIds[battler]].data[1] -= 288;
|
||||
gSprites[gBattlerSpriteIds[battler]].y2 = gSprites[gBattlerSpriteIds[battler]].data[1] >> 8;
|
||||
}
|
||||
if (sprite->animEnded && affineAnimEnded)
|
||||
{
|
||||
s32 i, doneBattlers;
|
||||
|
||||
gSprites[gBattlerSpriteIds[battlerId]].y2 = 0;
|
||||
gSprites[gBattlerSpriteIds[battler]].y2 = 0;
|
||||
gDoingBattleAnim = FALSE;
|
||||
gBattleSpritesDataPtr->healthBoxesData[battlerId].ballAnimActive = FALSE;
|
||||
gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive = FALSE;
|
||||
FreeSpriteOamMatrix(sprite);
|
||||
DestroySprite(sprite);
|
||||
|
||||
@ -1119,7 +1119,7 @@ static void HandleBallAnimEnd(struct Sprite *sprite)
|
||||
|
||||
static void SpriteCB_BallThrow_CaptureMon(struct Sprite *sprite)
|
||||
{
|
||||
u8 battlerId = sprite->sBattler;
|
||||
u8 battler = sprite->sBattler;
|
||||
|
||||
sprite->data[4]++;
|
||||
if (sprite->data[4] == 40)
|
||||
@ -1134,11 +1134,11 @@ static void SpriteCB_BallThrow_CaptureMon(struct Sprite *sprite)
|
||||
}
|
||||
else if (sprite->data[4] == 315)
|
||||
{
|
||||
FreeOamMatrix(gSprites[gBattlerSpriteIds[sprite->sBattler]].oam.matrixNum);
|
||||
DestroySprite(&gSprites[gBattlerSpriteIds[sprite->sBattler]]);
|
||||
FreeOamMatrix(gSprites[gBattlerSpriteIds[battler]].oam.matrixNum);
|
||||
DestroySprite(&gSprites[gBattlerSpriteIds[battler]]);
|
||||
DestroySpriteAndFreeResources(sprite);
|
||||
if (gMain.inBattle)
|
||||
gBattleSpritesDataPtr->healthBoxesData[battlerId].ballAnimActive = FALSE;
|
||||
gBattleSpritesDataPtr->healthBoxesData[battler].ballAnimActive = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1482,16 +1482,16 @@ static void UNUSED DestroySpriteAndFreeResources_Ball(struct Sprite *sprite)
|
||||
|
||||
#define sDelayTimer data[1]
|
||||
|
||||
void StartHealthboxSlideIn(u8 battlerId)
|
||||
void StartHealthboxSlideIn(u8 battler)
|
||||
{
|
||||
struct Sprite *healthboxSprite = &gSprites[gHealthboxSpriteIds[battlerId]];
|
||||
struct Sprite *healthboxSprite = &gSprites[gHealthboxSpriteIds[battler]];
|
||||
|
||||
healthboxSprite->sSpeedX = 5;
|
||||
healthboxSprite->sSpeedY = 0;
|
||||
healthboxSprite->x2 = 0x73;
|
||||
healthboxSprite->y2 = 0;
|
||||
healthboxSprite->callback = SpriteCB_HealthboxSlideIn;
|
||||
if (GetBattlerSide(battlerId) != B_SIDE_PLAYER)
|
||||
if (GetBattlerSide(battler) != B_SIDE_PLAYER)
|
||||
{
|
||||
healthboxSprite->sSpeedX = -healthboxSprite->sSpeedX;
|
||||
healthboxSprite->sSpeedY = -healthboxSprite->sSpeedY;
|
||||
@ -1499,7 +1499,7 @@ void StartHealthboxSlideIn(u8 battlerId)
|
||||
healthboxSprite->y2 = -healthboxSprite->y2;
|
||||
}
|
||||
gSprites[healthboxSprite->data[5]].callback(&gSprites[healthboxSprite->data[5]]);
|
||||
if (GetBattlerPosition(battlerId) == B_POSITION_PLAYER_RIGHT)
|
||||
if (GetBattlerPosition(battler) == B_POSITION_PLAYER_RIGHT)
|
||||
healthboxSprite->callback = SpriteCB_HealthboxSlideInDelayed;
|
||||
}
|
||||
|
||||
@ -1525,13 +1525,13 @@ static void SpriteCB_HealthboxSlideIn(struct Sprite *sprite)
|
||||
#undef sSpeedY
|
||||
#undef sDelayTimer
|
||||
|
||||
void DoHitAnimHealthboxEffect(u8 battlerId)
|
||||
void DoHitAnimHealthboxEffect(u8 battler)
|
||||
{
|
||||
u8 spriteId;
|
||||
|
||||
spriteId = CreateInvisibleSpriteWithCallback(SpriteCB_HitAnimHealthoxEffect);
|
||||
gSprites[spriteId].data[0] = 1;
|
||||
gSprites[spriteId].data[1] = gHealthboxSpriteIds[battlerId];
|
||||
gSprites[spriteId].data[1] = gHealthboxSpriteIds[battler];
|
||||
gSprites[spriteId].callback = SpriteCB_HitAnimHealthoxEffect;
|
||||
}
|
||||
|
||||
@ -1578,12 +1578,12 @@ void FreeBallGfx(u8 ballId)
|
||||
FreeSpritePaletteByTag(gBallSpritePalettes[ballId].tag);
|
||||
}
|
||||
|
||||
static u16 GetBattlerPokeballItemId(u8 battlerId)
|
||||
static u16 GetBattlerPokeballItemId(u8 battler)
|
||||
{
|
||||
struct Pokemon *illusionMon;
|
||||
struct Pokemon *mon = GetPartyBattlerData(battlerId);
|
||||
struct Pokemon *mon = GetPartyBattlerData(battler);
|
||||
|
||||
illusionMon = GetIllusionMonPtr(battlerId);
|
||||
illusionMon = GetIllusionMonPtr(battler);
|
||||
if (illusionMon != NULL)
|
||||
mon = illusionMon;
|
||||
|
||||
|
||||
@ -1619,7 +1619,7 @@ static void CreateEventMon(struct Pokemon *mon, u16 species, u8 level, u8 fixedI
|
||||
}
|
||||
|
||||
// If FALSE, should load this game's Deoxys form. If TRUE, should load normal Deoxys form
|
||||
bool8 ShouldIgnoreDeoxysForm(u8 caseId, u8 battlerId)
|
||||
bool8 ShouldIgnoreDeoxysForm(u8 caseId, u8 battler)
|
||||
{
|
||||
switch (caseId)
|
||||
{
|
||||
@ -1631,7 +1631,7 @@ bool8 ShouldIgnoreDeoxysForm(u8 caseId, u8 battlerId)
|
||||
return FALSE;
|
||||
if (!gMain.inBattle)
|
||||
return FALSE;
|
||||
if (gLinkPlayers[GetMultiplayerId()].id == battlerId)
|
||||
if (gLinkPlayers[GetMultiplayerId()].id == battler)
|
||||
return FALSE;
|
||||
break;
|
||||
case 2:
|
||||
@ -1641,7 +1641,7 @@ bool8 ShouldIgnoreDeoxysForm(u8 caseId, u8 battlerId)
|
||||
return FALSE;
|
||||
if (!gMain.inBattle)
|
||||
return FALSE;
|
||||
if (battlerId == 1 || battlerId == 4 || battlerId == 5)
|
||||
if (battler == 1 || battler == 4 || battler == 5)
|
||||
return TRUE;
|
||||
return FALSE;
|
||||
case 4:
|
||||
@ -1653,12 +1653,12 @@ bool8 ShouldIgnoreDeoxysForm(u8 caseId, u8 battlerId)
|
||||
return FALSE;
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
|
||||
{
|
||||
if (gLinkPlayers[GetMultiplayerId()].id == battlerId)
|
||||
if (gLinkPlayers[GetMultiplayerId()].id == battler)
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (GetBattlerSide(battlerId) == B_SIDE_PLAYER)
|
||||
if (GetBattlerSide(battler) == B_SIDE_PLAYER)
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
@ -1666,7 +1666,7 @@ bool8 ShouldIgnoreDeoxysForm(u8 caseId, u8 battlerId)
|
||||
{
|
||||
if (!gMain.inBattle)
|
||||
return FALSE;
|
||||
if (GetBattlerSide(battlerId) == B_SIDE_PLAYER)
|
||||
if (GetBattlerSide(battler) == B_SIDE_PLAYER)
|
||||
return FALSE;
|
||||
}
|
||||
break;
|
||||
@ -3720,14 +3720,14 @@ void PokemonToBattleMon(struct Pokemon *src, struct BattlePokemon *dst)
|
||||
dst->status2 = 0;
|
||||
}
|
||||
|
||||
void CopyPartyMonToBattleData(u32 battlerId, u32 partyIndex)
|
||||
void CopyPartyMonToBattleData(u32 battler, u32 partyIndex)
|
||||
{
|
||||
u32 side = GetBattlerSide(battlerId);
|
||||
u32 side = GetBattlerSide(battler);
|
||||
struct Pokemon *party = GetSideParty(side);
|
||||
PokemonToBattleMon(&party[partyIndex], &gBattleMons[battlerId]);
|
||||
gBattleStruct->hpOnSwitchout[side] = gBattleMons[battlerId].hp;
|
||||
UpdateSentPokesToOpponentValue(battlerId);
|
||||
ClearTemporarySpeciesSpriteData(battlerId, FALSE, FALSE);
|
||||
PokemonToBattleMon(&party[partyIndex], &gBattleMons[battler]);
|
||||
gBattleStruct->hpOnSwitchout[side] = gBattleMons[battler].hp;
|
||||
UpdateSentPokesToOpponentValue(battler);
|
||||
ClearTemporarySpeciesSpriteData(battler, FALSE, FALSE);
|
||||
}
|
||||
|
||||
bool8 ExecuteTableBasedItemEffect(struct Pokemon *mon, u16 item, u8 partyIndex, u8 moveIndex)
|
||||
@ -3783,7 +3783,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
|
||||
u32 temp1, temp2;
|
||||
s8 friendshipChange = 0;
|
||||
u8 holdEffect;
|
||||
u8 battlerId = MAX_BATTLERS_COUNT;
|
||||
u8 battler = MAX_BATTLERS_COUNT;
|
||||
u32 friendshipOnly = FALSE;
|
||||
u16 heldItem;
|
||||
u8 effectFlags;
|
||||
@ -3869,15 +3869,15 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
|
||||
}
|
||||
|
||||
// Cure status
|
||||
if ((itemEffect[i] & ITEM3_SLEEP) && HealStatusConditions(mon, STATUS1_SLEEP, battlerId) == 0)
|
||||
if ((itemEffect[i] & ITEM3_SLEEP) && HealStatusConditions(mon, STATUS1_SLEEP, battler) == 0)
|
||||
retVal = FALSE;
|
||||
if ((itemEffect[i] & ITEM3_POISON) && HealStatusConditions(mon, STATUS1_PSN_ANY | STATUS1_TOXIC_COUNTER, battlerId) == 0)
|
||||
if ((itemEffect[i] & ITEM3_POISON) && HealStatusConditions(mon, STATUS1_PSN_ANY | STATUS1_TOXIC_COUNTER, battler) == 0)
|
||||
retVal = FALSE;
|
||||
if ((itemEffect[i] & ITEM3_BURN) && HealStatusConditions(mon, STATUS1_BURN, battlerId) == 0)
|
||||
if ((itemEffect[i] & ITEM3_BURN) && HealStatusConditions(mon, STATUS1_BURN, battler) == 0)
|
||||
retVal = FALSE;
|
||||
if ((itemEffect[i] & ITEM3_FREEZE) && HealStatusConditions(mon, STATUS1_FREEZE | STATUS1_FROSTBITE, battlerId) == 0)
|
||||
if ((itemEffect[i] & ITEM3_FREEZE) && HealStatusConditions(mon, STATUS1_FREEZE | STATUS1_FROSTBITE, battler) == 0)
|
||||
retVal = FALSE;
|
||||
if ((itemEffect[i] & ITEM3_PARALYSIS) && HealStatusConditions(mon, STATUS1_PARALYSIS, battlerId) == 0)
|
||||
if ((itemEffect[i] & ITEM3_PARALYSIS) && HealStatusConditions(mon, STATUS1_PARALYSIS, battler) == 0)
|
||||
retVal = FALSE;
|
||||
break;
|
||||
|
||||
@ -4209,7 +4209,7 @@ bool8 PokemonUseItemEffects(struct Pokemon *mon, u16 item, u8 partyIndex, u8 mov
|
||||
return retVal;
|
||||
}
|
||||
|
||||
bool8 HealStatusConditions(struct Pokemon *mon, u32 healMask, u8 battlerId)
|
||||
bool8 HealStatusConditions(struct Pokemon *mon, u32 healMask, u8 battler)
|
||||
{
|
||||
u32 status = GetMonData(mon, MON_DATA_STATUS, 0);
|
||||
|
||||
@ -4217,13 +4217,13 @@ bool8 HealStatusConditions(struct Pokemon *mon, u32 healMask, u8 battlerId)
|
||||
{
|
||||
status &= ~healMask;
|
||||
SetMonData(mon, MON_DATA_STATUS, &status);
|
||||
if (gMain.inBattle && battlerId != MAX_BATTLERS_COUNT)
|
||||
if (gMain.inBattle && battler != MAX_BATTLERS_COUNT)
|
||||
{
|
||||
gBattleMons[battlerId].status1 &= ~healMask;
|
||||
gBattleMons[battler].status1 &= ~healMask;
|
||||
if((healMask & STATUS1_SLEEP))
|
||||
{
|
||||
u32 i = 0;
|
||||
u32 battlerSide = GetBattlerSide(battlerId);
|
||||
u32 battlerSide = GetBattlerSide(battler);
|
||||
struct Pokemon *party = GetSideParty(battlerSide);
|
||||
|
||||
for (i = 0; i < PARTY_SIZE; i++)
|
||||
@ -6238,22 +6238,22 @@ void BattleAnimateBackSprite(struct Sprite *sprite, u16 species)
|
||||
static u8 UNUSED GetOwnOpposingLinkMultiBattlerId(bool8 rightSide)
|
||||
{
|
||||
s32 i;
|
||||
s32 battlerId = 0;
|
||||
s32 battler = 0;
|
||||
u8 multiplayerId = GetMultiplayerId();
|
||||
switch (gLinkPlayers[multiplayerId].id)
|
||||
{
|
||||
case 0:
|
||||
case 2:
|
||||
battlerId = rightSide ? 1 : 3;
|
||||
battler = rightSide ? 1 : 3;
|
||||
break;
|
||||
case 1:
|
||||
case 3:
|
||||
battlerId = rightSide ? 2 : 0;
|
||||
battler = rightSide ? 2 : 0;
|
||||
break;
|
||||
}
|
||||
for (i = 0; i < MAX_LINK_PLAYERS; i++)
|
||||
{
|
||||
if (gLinkPlayers[i].id == (s16)battlerId)
|
||||
if (gLinkPlayers[i].id == (s16)battler)
|
||||
break;
|
||||
}
|
||||
return i;
|
||||
@ -6262,21 +6262,21 @@ static u8 UNUSED GetOwnOpposingLinkMultiBattlerId(bool8 rightSide)
|
||||
u8 GetOpposingLinkMultiBattlerId(bool8 rightSide, u8 multiplayerId)
|
||||
{
|
||||
s32 i;
|
||||
s32 battlerId = 0;
|
||||
s32 battler = 0;
|
||||
switch (gLinkPlayers[multiplayerId].id)
|
||||
{
|
||||
case 0:
|
||||
case 2:
|
||||
battlerId = rightSide ? 1 : 3;
|
||||
battler = rightSide ? 1 : 3;
|
||||
break;
|
||||
case 1:
|
||||
case 3:
|
||||
battlerId = rightSide ? 2 : 0;
|
||||
battler = rightSide ? 2 : 0;
|
||||
break;
|
||||
}
|
||||
for (i = 0; i < MAX_LINK_PLAYERS; i++)
|
||||
{
|
||||
if (gLinkPlayers[i].id == (s16)battlerId)
|
||||
if (gLinkPlayers[i].id == (s16)battler)
|
||||
break;
|
||||
}
|
||||
return i;
|
||||
|
||||
@ -544,14 +544,14 @@ void StartMonSummaryAnimation(struct Sprite *sprite, u8 frontAnimId)
|
||||
|
||||
void LaunchAnimationTaskForBackSprite(struct Sprite *sprite, u8 backAnimSet)
|
||||
{
|
||||
u8 nature, taskId, animId, battlerId;
|
||||
u8 nature, taskId, animId, battler;
|
||||
|
||||
taskId = CreateTask(Task_HandleMonAnimation, 128);
|
||||
gTasks[taskId].tPtrHi = (u32)(sprite) >> 16;
|
||||
gTasks[taskId].tPtrLo = (u32)(sprite);
|
||||
|
||||
battlerId = sprite->data[0];
|
||||
nature = GetNature(&gPlayerParty[gBattlerPartyIndexes[battlerId]]);
|
||||
battler = sprite->data[0];
|
||||
nature = GetNature(&gPlayerParty[gBattlerPartyIndexes[battler]]);
|
||||
|
||||
// * 3 below because each back anim has 3 variants depending on nature
|
||||
animId = 3 * backAnimSet + gNaturesInfo[nature].backAnim;
|
||||
|
||||
@ -26,7 +26,7 @@ struct PlayerInfo
|
||||
u32 trainerId;
|
||||
u8 name[PLAYER_NAME_LENGTH + 1];
|
||||
u8 gender;
|
||||
u16 battlerId;
|
||||
u16 battler;
|
||||
u16 language;
|
||||
};
|
||||
|
||||
@ -120,7 +120,7 @@ void RecordedBattle_SetTrainerInfo(void)
|
||||
{
|
||||
sPlayers[i].trainerId = gLinkPlayers[i].trainerId;
|
||||
sPlayers[i].gender = gLinkPlayers[i].gender;
|
||||
sPlayers[i].battlerId = gLinkPlayers[i].id;
|
||||
sPlayers[i].battler = gLinkPlayers[i].id;
|
||||
sPlayers[i].language = gLinkPlayers[i].language;
|
||||
|
||||
// Record names
|
||||
@ -146,7 +146,7 @@ void RecordedBattle_SetTrainerInfo(void)
|
||||
| (gSaveBlock2Ptr->playerTrainerId[3] << 24);
|
||||
|
||||
sPlayers[0].gender = gSaveBlock2Ptr->playerGender;
|
||||
sPlayers[0].battlerId = 0;
|
||||
sPlayers[0].battler = 0;
|
||||
sPlayers[0].language = gGameLanguage;
|
||||
|
||||
for (i = 0; i < PLAYER_NAME_LENGTH + 1; i++)
|
||||
@ -154,32 +154,32 @@ void RecordedBattle_SetTrainerInfo(void)
|
||||
}
|
||||
}
|
||||
|
||||
void RecordedBattle_SetBattlerAction(u8 battlerId, u8 action)
|
||||
void RecordedBattle_SetBattlerAction(u8 battler, u8 action)
|
||||
{
|
||||
if (sBattlerRecordSizes[battlerId] < BATTLER_RECORD_SIZE && sRecordMode != B_RECORD_MODE_PLAYBACK)
|
||||
sBattleRecords[battlerId][sBattlerRecordSizes[battlerId]++] = action;
|
||||
if (sBattlerRecordSizes[battler] < BATTLER_RECORD_SIZE && sRecordMode != B_RECORD_MODE_PLAYBACK)
|
||||
sBattleRecords[battler][sBattlerRecordSizes[battler]++] = action;
|
||||
}
|
||||
|
||||
void RecordedBattle_ClearBattlerAction(u8 battlerId, u8 bytesToClear)
|
||||
void RecordedBattle_ClearBattlerAction(u8 battler, u8 bytesToClear)
|
||||
{
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < bytesToClear; i++)
|
||||
{
|
||||
sBattlerRecordSizes[battlerId]--;
|
||||
sBattleRecords[battlerId][sBattlerRecordSizes[battlerId]] = 0xFF;
|
||||
if (sBattlerRecordSizes[battlerId] == 0)
|
||||
sBattlerRecordSizes[battler]--;
|
||||
sBattleRecords[battler][sBattlerRecordSizes[battler]] = 0xFF;
|
||||
if (sBattlerRecordSizes[battler] == 0)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
u8 RecordedBattle_GetBattlerAction(u32 actionType, u8 battlerId)
|
||||
u8 RecordedBattle_GetBattlerAction(u32 actionType, u8 battler)
|
||||
{
|
||||
if (gTestRunnerEnabled)
|
||||
TestRunner_Battle_CheckBattleRecordActionType(battlerId, sBattlerRecordSizes[battlerId], actionType);
|
||||
TestRunner_Battle_CheckBattleRecordActionType(battler, sBattlerRecordSizes[battler], actionType);
|
||||
|
||||
// Trying to read past array or invalid action byte, battle is over.
|
||||
if (sBattlerRecordSizes[battlerId] >= BATTLER_RECORD_SIZE || sBattleRecords[battlerId][sBattlerRecordSizes[battlerId]] == 0xFF)
|
||||
if (sBattlerRecordSizes[battler] >= BATTLER_RECORD_SIZE || sBattleRecords[battler][sBattlerRecordSizes[battler]] == 0xFF)
|
||||
{
|
||||
gSpecialVar_Result = gBattleOutcome = B_OUTCOME_PLAYER_TELEPORTED; // hah
|
||||
ResetPaletteFadeControl();
|
||||
@ -189,7 +189,7 @@ u8 RecordedBattle_GetBattlerAction(u32 actionType, u8 battlerId)
|
||||
}
|
||||
else
|
||||
{
|
||||
return sBattleRecords[battlerId][sBattlerRecordSizes[battlerId]++];
|
||||
return sBattleRecords[battler][sBattlerRecordSizes[battler]++];
|
||||
}
|
||||
}
|
||||
|
||||
@ -239,11 +239,11 @@ void RecordedBattle_RecordAllBattlerData(u8 *src)
|
||||
{
|
||||
for (size = *src; size != 0;)
|
||||
{
|
||||
u8 battlerId = GetNextRecordedDataByte(src, &idx, &size);
|
||||
u8 battler = GetNextRecordedDataByte(src, &idx, &size);
|
||||
u8 numActions = GetNextRecordedDataByte(src, &idx, &size);
|
||||
|
||||
for (i = 0; i < numActions; i++)
|
||||
sBattleRecords[battlerId][sBattlerSavedRecordSizes[battlerId]++] = GetNextRecordedDataByte(src, &idx, &size);
|
||||
sBattleRecords[battler][sBattlerSavedRecordSizes[battler]++] = GetNextRecordedDataByte(src, &idx, &size);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -310,7 +310,7 @@ bool32 MoveRecordedBattleToSaveData(void)
|
||||
battleSave->playersName[i][j] = sPlayers[i].name[j];
|
||||
battleSave->playersGender[i] = sPlayers[i].gender;
|
||||
battleSave->playersLanguage[i] = sPlayers[i].language;
|
||||
battleSave->playersBattlers[i] = sPlayers[i].battlerId;
|
||||
battleSave->playersBattlers[i] = sPlayers[i].battler;
|
||||
battleSave->playersTrainerId[i] = sPlayers[i].trainerId;
|
||||
}
|
||||
|
||||
@ -329,16 +329,16 @@ bool32 MoveRecordedBattleToSaveData(void)
|
||||
}
|
||||
else if (sBattleFlags & BATTLE_TYPE_MULTI)
|
||||
{
|
||||
switch (sPlayers[0].battlerId)
|
||||
switch (sPlayers[0].battler)
|
||||
{
|
||||
case 0:
|
||||
case 2:
|
||||
if (!(sPlayers[gRecordedBattleMultiplayerId].battlerId & 1))
|
||||
if (!(sPlayers[gRecordedBattleMultiplayerId].battler & 1))
|
||||
battleSave->battleFlags |= BATTLE_TYPE_RECORDED_IS_MASTER;
|
||||
break;
|
||||
case 1:
|
||||
case 3:
|
||||
if ((sPlayers[gRecordedBattleMultiplayerId].battlerId & 1))
|
||||
if ((sPlayers[gRecordedBattleMultiplayerId].battler & 1))
|
||||
battleSave->battleFlags |= BATTLE_TYPE_RECORDED_IS_MASTER;
|
||||
break;
|
||||
}
|
||||
@ -683,35 +683,35 @@ void RecordedBattle_CopyBattlerMoves(u32 battler)
|
||||
|
||||
void RecordedBattle_CheckMovesetChanges(u8 mode)
|
||||
{
|
||||
s32 battlerId, j, k;
|
||||
s32 battler, j, k;
|
||||
|
||||
if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK))
|
||||
return;
|
||||
|
||||
for (battlerId = 0; battlerId < gBattlersCount; battlerId++)
|
||||
for (battler = 0; battler < gBattlersCount; battler++)
|
||||
{
|
||||
// Player's side only
|
||||
if (GetBattlerSide(battlerId) != B_SIDE_OPPONENT)
|
||||
if (GetBattlerSide(battler) != B_SIDE_OPPONENT)
|
||||
{
|
||||
if (mode == B_RECORD_MODE_RECORDING)
|
||||
{
|
||||
// Check if any of the battler's moves have changed.
|
||||
for (j = 0; j < MAX_MON_MOVES; j++)
|
||||
{
|
||||
if (gBattleMons[battlerId].moves[j] != sPlayerMonMoves[battlerId / 2][j])
|
||||
if (gBattleMons[battler].moves[j] != sPlayerMonMoves[battler / 2][j])
|
||||
break;
|
||||
}
|
||||
if (j != MAX_MON_MOVES)
|
||||
{
|
||||
// At least one of the moves has been changed
|
||||
RecordedBattle_SetBattlerAction(battlerId, ACTION_MOVE_CHANGE);
|
||||
RecordedBattle_SetBattlerAction(battler, ACTION_MOVE_CHANGE);
|
||||
for (j = 0; j < MAX_MON_MOVES; j++)
|
||||
{
|
||||
for (k = 0; k < MAX_MON_MOVES; k++)
|
||||
{
|
||||
if (gBattleMons[battlerId].moves[j] == sPlayerMonMoves[battlerId / 2][k])
|
||||
if (gBattleMons[battler].moves[j] == sPlayerMonMoves[battler / 2][k])
|
||||
{
|
||||
RecordedBattle_SetBattlerAction(battlerId, k);
|
||||
RecordedBattle_SetBattlerAction(battler, k);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -720,7 +720,7 @@ void RecordedBattle_CheckMovesetChanges(u8 mode)
|
||||
}
|
||||
else // B_RECORD_MODE_PLAYBACK
|
||||
{
|
||||
if (sBattleRecords[battlerId][sBattlerRecordSizes[battlerId]] == ACTION_MOVE_CHANGE)
|
||||
if (sBattleRecords[battler][sBattlerRecordSizes[battler]] == ACTION_MOVE_CHANGE)
|
||||
{
|
||||
u8 ppBonuses[MAX_MON_MOVES];
|
||||
u8 moveSlots[MAX_MON_MOVES];
|
||||
@ -730,55 +730,55 @@ void RecordedBattle_CheckMovesetChanges(u8 mode)
|
||||
|
||||
// We know the current action is ACTION_MOVE_CHANGE, retrieve
|
||||
// it without saving it to move on to the next action.
|
||||
RecordedBattle_GetBattlerAction(RECORDED_BYTE, battlerId);
|
||||
RecordedBattle_GetBattlerAction(RECORDED_BYTE, battler);
|
||||
|
||||
for (j = 0; j < MAX_MON_MOVES; j++)
|
||||
ppBonuses[j] = ((gBattleMons[battlerId].ppBonuses & (3 << (j << 1))) >> (j << 1));
|
||||
ppBonuses[j] = ((gBattleMons[battler].ppBonuses & (3 << (j << 1))) >> (j << 1));
|
||||
|
||||
for (j = 0; j < MAX_MON_MOVES; j++)
|
||||
{
|
||||
moveSlots[j] = RecordedBattle_GetBattlerAction(RECORDED_BYTE, battlerId);
|
||||
movePp.moves[j] = gBattleMons[battlerId].moves[moveSlots[j]];
|
||||
movePp.currentPp[j] = gBattleMons[battlerId].pp[moveSlots[j]];
|
||||
moveSlots[j] = RecordedBattle_GetBattlerAction(RECORDED_BYTE, battler);
|
||||
movePp.moves[j] = gBattleMons[battler].moves[moveSlots[j]];
|
||||
movePp.currentPp[j] = gBattleMons[battler].pp[moveSlots[j]];
|
||||
movePp.maxPp[j] = ppBonuses[moveSlots[j]];
|
||||
mimickedMoveSlots[j] = (gDisableStructs[battlerId].mimickedMoves & (1u << j)) >> j;
|
||||
mimickedMoveSlots[j] = (gDisableStructs[battler].mimickedMoves & (1u << j)) >> j;
|
||||
}
|
||||
for (j = 0; j < MAX_MON_MOVES; j++)
|
||||
{
|
||||
gBattleMons[battlerId].moves[j] = movePp.moves[j];
|
||||
gBattleMons[battlerId].pp[j] = movePp.currentPp[j];
|
||||
gBattleMons[battler].moves[j] = movePp.moves[j];
|
||||
gBattleMons[battler].pp[j] = movePp.currentPp[j];
|
||||
}
|
||||
gBattleMons[battlerId].ppBonuses = 0;
|
||||
gDisableStructs[battlerId].mimickedMoves = 0;
|
||||
gBattleMons[battler].ppBonuses = 0;
|
||||
gDisableStructs[battler].mimickedMoves = 0;
|
||||
for (j = 0; j < MAX_MON_MOVES; j++)
|
||||
{
|
||||
gBattleMons[battlerId].ppBonuses |= movePp.maxPp[j] << (j << 1);
|
||||
gDisableStructs[battlerId].mimickedMoves |= mimickedMoveSlots[j] << j;
|
||||
gBattleMons[battler].ppBonuses |= movePp.maxPp[j] << (j << 1);
|
||||
gDisableStructs[battler].mimickedMoves |= mimickedMoveSlots[j] << j;
|
||||
}
|
||||
|
||||
if (!(gBattleMons[battlerId].status2 & STATUS2_TRANSFORMED))
|
||||
if (!(gBattleMons[battler].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(&gPlayerParty[gBattlerPartyIndexes[battler]], 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(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_MOVE1 + moveSlots[j], NULL);
|
||||
movePp.currentPp[j] = GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], 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(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_MOVE1 + j, &movePp.moves[j]);
|
||||
SetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], 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(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_PP_BONUSES, &ppBonusSet);
|
||||
}
|
||||
gChosenMoveByBattler[battlerId] = gBattleMons[battlerId].moves[gBattleStruct->chosenMovePositions[battlerId]];
|
||||
gChosenMoveByBattler[battler] = gBattleMons[battler].moves[gBattleStruct->chosenMovePositions[battler]];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
BIN
tools/mgba-rom-test-hydra/mgba-rom-test-hydra
Executable file
BIN
tools/mgba-rom-test-hydra/mgba-rom-test-hydra
Executable file
Binary file not shown.
BIN
tools/patchelf/patchelf
Executable file
BIN
tools/patchelf/patchelf
Executable file
Binary file not shown.
BIN
tools/trainerproc/trainerproc
Executable file
BIN
tools/trainerproc/trainerproc
Executable file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user