Fixed removeobject clearing the palettes of unloaded dummy sprites.

This commit is contained in:
Ariel A 2022-04-27 20:00:02 -04:00
parent 483d4b3448
commit 13565fc023

View file

@ -1389,9 +1389,17 @@ static void RemoveObjectEventInternal(struct ObjectEvent *objectEvent)
image.size = GetObjectEventGraphicsInfo(objectEvent->graphicsId)->size;
gSprites[objectEvent->spriteId].images = ℑ
paletteNum = gSprites[objectEvent->spriteId].oam.paletteNum;
// It's possible that this function is called while the sprite pointed to `== sDummySprite`, i.e during map resume;
// In this case, don't free the palette as `paletteNum` is likely blank dummy data
if (!gSprites[objectEvent->spriteId].inUse &&
!gSprites[objectEvent->spriteId].oam.paletteNum &&
gSprites[objectEvent->spriteId].callback == SpriteCallbackDummy) {
DestroySprite(&gSprites[objectEvent->spriteId]);
} else {
DestroySprite(&gSprites[objectEvent->spriteId]);
FieldEffectFreePaletteIfUnused(paletteNum);
}
}
void RemoveAllObjectEventsExceptPlayer(void)
{