Fix terastallization anims flickering (#7613)
This commit is contained in:
parent
ff3e8da007
commit
0a3c281cdd
@ -28732,6 +28732,7 @@ MegaEvolutionSpinEffect:
|
||||
return
|
||||
|
||||
gBattleAnimGeneral_TeraCharge::
|
||||
createvisualtask AnimTask_HideOpponentShadows, 2 @ Hide opponent shadows so they don't flicker between battle anims
|
||||
loadspritegfx ANIM_TAG_TERA_CRYSTAL
|
||||
loadspritegfx ANIM_TAG_TERA_SHATTER
|
||||
loadspritegfx ANIM_TAG_FOCUS_ENERGY
|
||||
@ -28753,7 +28754,6 @@ gBattleAnimGeneral_TeraCharge::
|
||||
delay 20
|
||||
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 0, 16, RGB_WHITEALPHA
|
||||
waitforvisualfinish
|
||||
createvisualtask AnimTask_TransformMon, 2, 1, 0
|
||||
call TeraChargeParticles
|
||||
playsewithpan SE_M_BRICK_BREAK, SOUND_PAN_ATTACKER
|
||||
clearmonbg ANIM_ATK_PARTNER
|
||||
@ -28770,6 +28770,7 @@ TeraChargeParticles:
|
||||
return
|
||||
|
||||
gBattleAnimGeneral_TeraActivate::
|
||||
createvisualtask AnimTask_SetOpponentShadowCallbacks, 2 @ Restore shadows hidden in the charge script
|
||||
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 16, 0, RGB_WHITEALPHA
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_TARGET, 5, 14
|
||||
waitforvisualfinish
|
||||
|
||||
@ -2515,6 +2515,32 @@ void AnimTask_HideSwapSprite(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
void AnimTask_HideOpponentShadows(u8 taskId)
|
||||
{
|
||||
u32 battlerLeft = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
|
||||
gSprites[gBattleSpritesDataPtr->healthBoxesData[battlerLeft].shadowSpriteIdPrimary].callback = SpriteCB_SetInvisible;
|
||||
gSprites[gBattleSpritesDataPtr->healthBoxesData[battlerLeft].shadowSpriteIdSecondary].callback = SpriteCB_SetInvisible;
|
||||
if (IsDoubleBattle())
|
||||
{
|
||||
u32 battlerRight = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
|
||||
gSprites[gBattleSpritesDataPtr->healthBoxesData[battlerRight].shadowSpriteIdPrimary].callback = SpriteCB_SetInvisible;
|
||||
gSprites[gBattleSpritesDataPtr->healthBoxesData[battlerRight].shadowSpriteIdSecondary].callback = SpriteCB_SetInvisible;
|
||||
}
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
void AnimTask_SetOpponentShadowCallbacks(u8 taskId)
|
||||
{
|
||||
u32 battlerLeft = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
|
||||
SetBattlerShadowSpriteCallback(battlerLeft, gBattleMons[battlerLeft].species);
|
||||
if (IsDoubleBattle())
|
||||
{
|
||||
u32 battlerRight = GetBattlerAtPosition(B_POSITION_OPPONENT_RIGHT);
|
||||
SetBattlerShadowSpriteCallback(battlerRight, gBattleMons[battlerRight].species);
|
||||
}
|
||||
DestroyAnimVisualTask(taskId);
|
||||
}
|
||||
|
||||
void AnimTask_TransformMon(u8 taskId)
|
||||
{
|
||||
int i, j;
|
||||
|
||||
@ -1003,13 +1003,6 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool32 megaEvo, bo
|
||||
CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, PLTT_SIZEOF(16));
|
||||
}
|
||||
|
||||
// Terastallization's tint
|
||||
if (GetActiveGimmick(battlerAtk) == GIMMICK_TERA)
|
||||
{
|
||||
BlendPalette(paletteOffset, 16, 8, GetTeraTypeRGB(GetBattlerTeraType(battlerAtk)));
|
||||
CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, PLTT_SIZEOF(16));
|
||||
}
|
||||
|
||||
gSprites[gBattlerSpriteIds[battlerAtk]].y = GetBattlerSpriteDefault_Y(battlerAtk);
|
||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[battlerAtk]], 0);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user