From d05875dd04003ebf291d1b9b96d580cde8503b1d Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Thu, 20 Sep 2018 20:59:00 +0200 Subject: [PATCH] New mega trigger sprite --- graphics/battle_interface/mega_trigger.pal | 19 ++ graphics/battle_interface/mega_trigger.png | Bin 1005 -> 3454 bytes .../battle_interface/mega_trigger_off.pal | 259 ------------------ graphics/battle_interface/mega_trigger_on.pal | 259 ------------------ include/battle_interface.h | 5 +- src/battle_controller_player.c | 2 +- src/battle_interface.c | 131 +++++---- 7 files changed, 105 insertions(+), 570 deletions(-) create mode 100644 graphics/battle_interface/mega_trigger.pal delete mode 100644 graphics/battle_interface/mega_trigger_off.pal delete mode 100644 graphics/battle_interface/mega_trigger_on.pal diff --git a/graphics/battle_interface/mega_trigger.pal b/graphics/battle_interface/mega_trigger.pal new file mode 100644 index 0000000000..2672d1f10a --- /dev/null +++ b/graphics/battle_interface/mega_trigger.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +185 207 163 +77 105 97 +199 159 199 +221 177 207 +57 151 117 +139 221 253 +247 161 133 +255 255 255 +153 87 67 +233 233 125 +129 255 223 +149 147 247 +195 207 201 +123 151 135 +0 0 0 +0 0 0 diff --git a/graphics/battle_interface/mega_trigger.png b/graphics/battle_interface/mega_trigger.png index b189e6529db4348808636d4c8cf24a8dda9fc6fb..a269ee738cd1905d9caba94efc346bf6a44e7be2 100644 GIT binary patch delta 3445 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 diff --git a/graphics/battle_interface/mega_trigger_off.pal b/graphics/battle_interface/mega_trigger_off.pal deleted file mode 100644 index 643b1c3f44..0000000000 --- a/graphics/battle_interface/mega_trigger_off.pal +++ /dev/null @@ -1,259 +0,0 @@ -JASC-PAL -0100 -256 -152 184 136 -112 136 120 -80 104 96 -32 32 32 -160 160 160 -80 80 80 -48 48 48 -176 176 176 -160 160 160 -200 200 200 -184 184 184 -216 216 216 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/graphics/battle_interface/mega_trigger_on.pal b/graphics/battle_interface/mega_trigger_on.pal deleted file mode 100644 index b3239a17e0..0000000000 --- a/graphics/battle_interface/mega_trigger_on.pal +++ /dev/null @@ -1,259 +0,0 @@ -JASC-PAL -0100 -256 -152 184 136 -120 144 128 -80 104 96 -32 56 0 -240 160 128 -152 80 144 -56 80 64 -216 176 208 -136 184 224 -184 224 240 -184 208 104 -232 232 104 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 diff --git a/include/battle_interface.h b/include/battle_interface.h index cbd0bc3c6d..308ab3bdf5 100644 --- a/include/battle_interface.h +++ b/include/battle_interface.h @@ -46,8 +46,7 @@ enum #define TAG_STATUS_SUMMARY_BAR_PAL 0xD710 #define TAG_STATUS_SUMMARY_BALLS_PAL 0xD712 -#define TAG_MEGA_TRIGGER_OFF_PAL 0xD777 -#define TAG_MEGA_TRIGGER_ON_PAL 0xD778 +#define TAG_MEGA_TRIGGER_PAL 0xD777 enum { @@ -76,7 +75,7 @@ void UpdateOamPriorityInAllHealthboxes(u8 priority); void InitBattlerHealthboxCoords(u8 battler); void UpdateHpTextInHealthbox(u8 healthboxSpriteId, s16 value, u8 maxOrCurrent); void SwapHpBarsWithHpText(void); -void SetMegaTriggerSpritePal(u8 spriteId, u8 palId); +void ChangeMegaTriggerSprite(u8 spriteId, u8 animId); void CreateMegaTriggerSprite(u8 battlerId, u8 palId); bool32 IsMegaTriggerSpriteActive(void); void HideMegaTriggerSprite(void); diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 23a01616e5..e4083f567e 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -644,7 +644,7 @@ static void HandleInputChooseMove(void) if (CanMegaEvolve(gActiveBattler)) { gBattleStruct->mega.playerSelect ^= 1; - SetMegaTriggerSpritePal(gBattleStruct->mega.triggerSpriteId, gBattleStruct->mega.playerSelect); + ChangeMegaTriggerSprite(gBattleStruct->mega.triggerSpriteId, gBattleStruct->mega.playerSelect); PlaySE(SE_SELECT); } } diff --git a/src/battle_interface.c b/src/battle_interface.c index d8b103762f..36e0d6aaae 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -561,20 +561,15 @@ static const u16 sStatusIconColors[] = static const struct WindowTemplate sHealthboxWindowTemplate = {0, 0, 0, 8, 2, 0, 0}; // width = 8, height = 2 static const u8 sMegaTriggerGfx[] = INCBIN_U8("graphics/battle_interface/mega_trigger.4bpp"); -static const u16 sMegaTriggerOnPal[] = INCBIN_U16("graphics/battle_interface/mega_trigger_on.gbapal"); -static const u16 sMegaTriggerOffPal[] = INCBIN_U16("graphics/battle_interface/mega_trigger_off.gbapal"); +static const u16 sMegaTriggerPal[] = INCBIN_U16("graphics/battle_interface/mega_trigger.gbapal"); static const struct SpriteSheet sSpriteSheet_MegaTrigger = { sMegaTriggerGfx, sizeof(sMegaTriggerGfx), TAG_MEGA_TRIGGER_TILE }; -static const struct SpritePalette sSpritePalette_MegaTriggerOn = +static const struct SpritePalette sSpritePalette_MegaTrigger = { - sMegaTriggerOnPal, TAG_MEGA_TRIGGER_ON_PAL -}; -static const struct SpritePalette sSpritePalette_MegaTriggerOff = -{ - sMegaTriggerOffPal, TAG_MEGA_TRIGGER_OFF_PAL + sMegaTriggerPal, TAG_MEGA_TRIGGER_PAL }; static const struct OamData sOamData_MegaTrigger = @@ -589,17 +584,35 @@ static const struct OamData sOamData_MegaTrigger = .matrixNum = 0, .size = 2, .tileNum = 0, - .priority = 3, + .priority = 1, .paletteNum = 0, .affineParam = 0, }; +static const union AnimCmd sSpriteAnim_MegaTriggerOff[] = +{ + ANIMCMD_FRAME(0, 0), + ANIMCMD_END +}; + +static const union AnimCmd sSpriteAnim_MegaTriggerOn[] = +{ + ANIMCMD_FRAME(16, 0), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_MegaTrigger[] = +{ + sSpriteAnim_MegaTriggerOff, + sSpriteAnim_MegaTriggerOn, +}; + static const struct SpriteTemplate sSpriteTemplate_MegaTrigger = { .tileTag = TAG_MEGA_TRIGGER_TILE, - .paletteTag = TAG_MEGA_TRIGGER_ON_PAL, + .paletteTag = TAG_MEGA_TRIGGER_PAL, .oam = &sOamData_MegaTrigger, - .anims = gDummySpriteAnimTable, + .anims = sSpriteAnimTable_MegaTrigger, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCb_MegaTrigger @@ -1532,71 +1545,93 @@ void SwapHpBarsWithHpText(void) } // Mega Evolution gfx functions. -void SetMegaTriggerSpritePal(u8 spriteId, u8 palId) +void ChangeMegaTriggerSprite(u8 spriteId, u8 animId) { - switch (palId) - { - case 0: // off - FreeSpritePaletteByTag(TAG_MEGA_TRIGGER_ON_PAL); - LoadSpritePalette(&sSpritePalette_MegaTriggerOff); - if (spriteId != 0xFF) - gSprites[spriteId].oam.paletteNum = IndexOfSpritePaletteTag(TAG_MEGA_TRIGGER_OFF_PAL); - break; - case 1: // on - FreeSpritePaletteByTag(TAG_MEGA_TRIGGER_OFF_PAL); - LoadSpritePalette(&sSpritePalette_MegaTriggerOn); - if (spriteId != 0xFF) - gSprites[spriteId].oam.paletteNum = IndexOfSpritePaletteTag(TAG_MEGA_TRIGGER_ON_PAL); - break; - } + StartSpriteAnim(&gSprites[spriteId], animId); } -#define MEGA_TRIGGER_POS_X_DIFF 19 -#define MEGA_TRIGGER_POS_Y_DIFF 1 +#define SINGLES_MEGA_TRIGGER_POS_X_OPTIMAL (30) +#define SINGLES_MEGA_TRIGGER_POS_X_PRIORITY (31) +#define SINGLES_MEGA_TRIGGER_POS_X_SLIDE (15) +#define SINGLES_MEGA_TRIGGER_POS_Y_DIFF (-11) + +#define DOUBLES_MEGA_TRIGGER_POS_X_OPTIMAL (30) +#define DOUBLES_MEGA_TRIGGER_POS_X_PRIORITY (31) +#define DOUBLES_MEGA_TRIGGER_POS_X_SLIDE (15) +#define DOUBLES_MEGA_TRIGGER_POS_Y_DIFF (-4) #define tBattler data[0] #define tHide data[1] void CreateMegaTriggerSprite(u8 battlerId, u8 palId) { + LoadSpritePalette(&sSpritePalette_MegaTrigger); if (GetSpriteTileStartByTag(TAG_MEGA_TRIGGER_TILE) == 0xFFFF) LoadSpriteSheet(&sSpriteSheet_MegaTrigger); if (gBattleStruct->mega.triggerSpriteId == 0xFF) { - gBattleStruct->mega.triggerSpriteId = CreateSprite(&sSpriteTemplate_MegaTrigger, - gSprites[gHealthboxSpriteIds[battlerId]].pos1.x, - gSprites[gHealthboxSpriteIds[battlerId]].pos1.y - MEGA_TRIGGER_POS_Y_DIFF, 0); + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + gBattleStruct->mega.triggerSpriteId = CreateSprite(&sSpriteTemplate_MegaTrigger, + gSprites[gHealthboxSpriteIds[battlerId]].pos1.x - SINGLES_MEGA_TRIGGER_POS_X_SLIDE, + gSprites[gHealthboxSpriteIds[battlerId]].pos1.y - SINGLES_MEGA_TRIGGER_POS_Y_DIFF, 0); + else + gBattleStruct->mega.triggerSpriteId = CreateSprite(&sSpriteTemplate_MegaTrigger, + gSprites[gHealthboxSpriteIds[battlerId]].pos1.x - DOUBLES_MEGA_TRIGGER_POS_X_SLIDE, + gSprites[gHealthboxSpriteIds[battlerId]].pos1.y - DOUBLES_MEGA_TRIGGER_POS_Y_DIFF, 0); } gSprites[gBattleStruct->mega.triggerSpriteId].tBattler = battlerId; gSprites[gBattleStruct->mega.triggerSpriteId].tHide = FALSE; - SetMegaTriggerSpritePal(gBattleStruct->mega.triggerSpriteId, palId); + ChangeMegaTriggerSprite(gBattleStruct->mega.triggerSpriteId, palId); } static void SpriteCb_MegaTrigger(struct Sprite *sprite) { + s32 xSlide, xPriority, xOptimal; + s32 yDiff; + + if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) + { + xSlide = DOUBLES_MEGA_TRIGGER_POS_X_SLIDE; + xPriority = DOUBLES_MEGA_TRIGGER_POS_X_PRIORITY; + xOptimal = DOUBLES_MEGA_TRIGGER_POS_X_OPTIMAL; + yDiff = DOUBLES_MEGA_TRIGGER_POS_Y_DIFF; + } + else + { + xSlide = SINGLES_MEGA_TRIGGER_POS_X_SLIDE; + xPriority = SINGLES_MEGA_TRIGGER_POS_X_PRIORITY; + xOptimal = SINGLES_MEGA_TRIGGER_POS_X_OPTIMAL; + yDiff = SINGLES_MEGA_TRIGGER_POS_Y_DIFF; + } + if (sprite->tHide) { - if (sprite->pos1.x != gSprites[gHealthboxSpriteIds[sprite->tBattler]].pos1.x + MEGA_TRIGGER_POS_X_DIFF) + if (sprite->pos1.x != gSprites[gHealthboxSpriteIds[sprite->tBattler]].pos1.x - xSlide) sprite->pos1.x++; - if (sprite->pos2.x != gSprites[gHealthboxSpriteIds[sprite->tBattler]].pos2.x + MEGA_TRIGGER_POS_X_DIFF) - sprite->pos2.x++; - sprite->pos1.y = gSprites[gHealthboxSpriteIds[sprite->tBattler]].pos1.y - MEGA_TRIGGER_POS_Y_DIFF; - sprite->pos2.y = gSprites[gHealthboxSpriteIds[sprite->tBattler]].pos2.y - MEGA_TRIGGER_POS_Y_DIFF; - if (sprite->pos1.x == gSprites[gHealthboxSpriteIds[sprite->tBattler]].pos1.x + MEGA_TRIGGER_POS_X_DIFF - && sprite->pos2.x == gSprites[gHealthboxSpriteIds[sprite->tBattler]].pos2.x + MEGA_TRIGGER_POS_X_DIFF) + if (sprite->pos1.x >= xPriority) + sprite->oam.priority = 2; + else + sprite->oam.priority = 1; + + sprite->pos1.y = gSprites[gHealthboxSpriteIds[sprite->tBattler]].pos1.y - yDiff; + sprite->pos2.y = gSprites[gHealthboxSpriteIds[sprite->tBattler]].pos2.y - yDiff; + if (sprite->pos1.x == gSprites[gHealthboxSpriteIds[sprite->tBattler]].pos1.x - xSlide) DestroyMegaTriggerSprite(); } else { - if (sprite->pos1.x != gSprites[gHealthboxSpriteIds[sprite->tBattler]].pos1.x - MEGA_TRIGGER_POS_X_DIFF) + if (sprite->pos1.x != gSprites[gHealthboxSpriteIds[sprite->tBattler]].pos1.x - xOptimal) sprite->pos1.x--; - if (sprite->pos2.x != gSprites[gHealthboxSpriteIds[sprite->tBattler]].pos2.x - MEGA_TRIGGER_POS_X_DIFF) - sprite->pos2.x--; - sprite->pos1.y = gSprites[gHealthboxSpriteIds[sprite->tBattler]].pos1.y - MEGA_TRIGGER_POS_Y_DIFF; - sprite->pos2.y = gSprites[gHealthboxSpriteIds[sprite->tBattler]].pos2.y - MEGA_TRIGGER_POS_Y_DIFF; + if (sprite->pos1.x >= xPriority) + sprite->oam.priority = 2; + else + sprite->oam.priority = 1; + + sprite->pos1.y = gSprites[gHealthboxSpriteIds[sprite->tBattler]].pos1.y - yDiff; + sprite->pos2.y = gSprites[gHealthboxSpriteIds[sprite->tBattler]].pos2.y - yDiff; } } @@ -1604,7 +1639,7 @@ bool32 IsMegaTriggerSpriteActive(void) { if (GetSpriteTileStartByTag(TAG_MEGA_TRIGGER_TILE) == 0xFFFF) return FALSE; - else if (IndexOfSpritePaletteTag(TAG_MEGA_TRIGGER_OFF_PAL) != 0xFF || IndexOfSpritePaletteTag(TAG_MEGA_TRIGGER_ON_PAL) != 0xFF) + else if (IndexOfSpritePaletteTag(TAG_MEGA_TRIGGER_PAL) != 0xFF) return TRUE; else return FALSE; @@ -1612,13 +1647,13 @@ bool32 IsMegaTriggerSpriteActive(void) void HideMegaTriggerSprite(void) { + ChangeMegaTriggerSprite(gBattleStruct->mega.triggerSpriteId, 0); gSprites[gBattleStruct->mega.triggerSpriteId].tHide = TRUE; } void DestroyMegaTriggerSprite(void) { - FreeSpritePaletteByTag(TAG_MEGA_TRIGGER_OFF_PAL); - FreeSpritePaletteByTag(TAG_MEGA_TRIGGER_ON_PAL); + FreeSpritePaletteByTag(TAG_MEGA_TRIGGER_PAL); FreeSpriteTilesByTag(TAG_MEGA_TRIGGER_TILE); if (gBattleStruct->mega.triggerSpriteId != 0xFF) DestroySprite(&gSprites[gBattleStruct->mega.triggerSpriteId]);