From 676261a0e02b5dd4325474130d00fa1202ec7a13 Mon Sep 17 00:00:00 2001 From: Ariel Antonitis Date: Sat, 11 Jul 2020 04:24:50 -0400 Subject: [PATCH] Fixed bug applying time filter to followers. --- src/event_object_movement.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 348d65fdc8..ab9c6dad5a 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1633,13 +1633,19 @@ static void FollowerSetGraphics(struct ObjectEvent *objectEvent, u16 species, u8 objectEvent->extra.mon.shiny = shiny; if (graphicsInfo->paletteTag1 == OBJ_EVENT_PAL_TAG_DYNAMIC) { // Use palette from species palette table struct Sprite *sprite = &gSprites[objectEvent->spriteId]; + // Note that the shiny palette tag is `species + SPECIES_SHINY_TAG`, which must be increased with more pokemon + // so that palette tags do not overlap const struct CompressedSpritePalette *spritePalette = &(shiny ? gMonShinyPaletteTable : gMonPaletteTable)[species]; // Free palette if otherwise unused sprite->inUse = FALSE; FieldEffectFreePaletteIfUnused(sprite->oam.paletteNum); sprite->inUse = TRUE; - LoadCompressedSpritePalette(spritePalette); - sprite->oam.paletteNum = IndexOfSpritePaletteTag(spritePalette->tag); // Tag is always present + if (IndexOfSpritePaletteTag(spritePalette->tag) == 0xFF) { // Load compressed palette + LoadCompressedSpritePalette(spritePalette); + sprite->oam.paletteNum = IndexOfSpritePaletteTag(spritePalette->tag); // Tag is always present + UpdateSpritePaletteWithTime(sprite->oam.paletteNum); + } else + sprite->oam.paletteNum = IndexOfSpritePaletteTag(spritePalette->tag); // Tag is always present } }