From 09013ee2db4eb95dba258480df2e1804eb8d7505 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Tue, 27 Jun 2023 22:39:43 +0200 Subject: [PATCH] Fix createsprite battle anim cmd not checking MAX_SPRITES --- src/battle_anim.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/battle_anim.c b/src/battle_anim.c index f051fc7fa8..5691e21e2a 100644 --- a/src/battle_anim.c +++ b/src/battle_anim.c @@ -457,7 +457,7 @@ static u8 GetBattleAnimMoveTargets(u8 battlerArgIndex, u8 *targets) if (IsBattlerAlive(BATTLE_PARTNER(BATTLE_OPPOSITE(targets[0])))) { - targets[2] = BATTLE_PARTNER(BATTLE_OPPOSITE(targets[0])); + targets[2] = BATTLE_PARTNER(BATTLE_OPPOSITE(targets[0])); numTargets++; } break; @@ -525,12 +525,13 @@ static void Cmd_createsprite(void) subpriority = GetSubpriorityForMoveAnim(argVar); - CreateSpriteAndAnimate( - template, + if (CreateSpriteAndAnimate(template, GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X_2), GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y_PIC_OFFSET), - subpriority); - gAnimVisualTaskCount++; + subpriority) != MAX_SPRITES) // Don't increment the task count if the sprite couldn't be created(i.e. there are too many created sprites atm). + { + gAnimVisualTaskCount++; + } } static void CreateSpriteOnTargets(const struct SpriteTemplate *template, u8 argVar, u8 battlerArgIndex, u8 argsCount, bool32 overwriteAnimTgt) @@ -555,12 +556,13 @@ static void CreateSpriteOnTargets(const struct SpriteTemplate *template, u8 argV if (overwriteAnimTgt) gBattleAnimArgs[battlerArgIndex] = targets[i]; - CreateSpriteAndAnimate( - template, + if (CreateSpriteAndAnimate(template, GetBattlerSpriteCoord(targets[i], BATTLER_COORD_X_2), GetBattlerSpriteCoord(targets[i], BATTLER_COORD_Y_PIC_OFFSET), - subpriority); - gAnimVisualTaskCount++; + subpriority) != MAX_SPRITES) // Don't increment the task count if the sprite couldn't be created(i.e. there are too many created sprites atm). + { + gAnimVisualTaskCount++; + } } }