Fix tera tint not applying on activation (#8135)
This commit is contained in:
parent
6c383fac96
commit
3e583f8add
@ -29002,7 +29002,7 @@ gBattleAnimMove_Transform::
|
||||
monbg ANIM_ATTACKER
|
||||
playsewithpan SE_M_TELEPORT, SOUND_PAN_ATTACKER
|
||||
waitplaysewithpan SE_M_MINIMIZE, SOUND_PAN_ATTACKER, 48
|
||||
createvisualtask AnimTask_TransformMon, 2, 0, 1
|
||||
createvisualtask AnimTask_TransformMon, 2, SPECIES_GFX_CHANGE_TRANSFORM
|
||||
waitforvisualfinish
|
||||
clearmonbg ANIM_ATTACKER
|
||||
end
|
||||
@ -31513,14 +31513,14 @@ gBattleAnimGeneral_SimpleHeal::
|
||||
|
||||
gBattleAnimGeneral_IllusionOff::
|
||||
monbg ANIM_TARGET
|
||||
createvisualtask AnimTask_TransformMon, 2, 1, 0
|
||||
createvisualtask AnimTask_TransformMon, 2, SPECIES_GFX_CHANGE_ILLUSION_OFF
|
||||
waitforvisualfinish
|
||||
clearmonbg ANIM_TARGET
|
||||
end
|
||||
|
||||
gBattleAnimGeneral_FormChange::
|
||||
monbg ANIM_ATTACKER
|
||||
createvisualtask AnimTask_TransformMon, 2, 1, 0
|
||||
createvisualtask AnimTask_TransformMon, 2, SPECIES_GFX_CHANGE_FORM_CHANGE
|
||||
waitforvisualfinish
|
||||
clearmonbg ANIM_ATTACKER
|
||||
end
|
||||
@ -31552,7 +31552,7 @@ gBattleAnimGeneral_MegaEvolution::
|
||||
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 0, 16, RGB_WHITEALPHA
|
||||
waitforvisualfinish
|
||||
createvisualtask SoundTask_PlayNormalCry, 0
|
||||
createvisualtask AnimTask_HideSwapSprite, 2, 1, 0
|
||||
createvisualtask AnimTask_HideSwapSprite, 2
|
||||
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 16, 0, RGB_WHITEALPHA
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_TARGET, 5, 14
|
||||
createsprite gMegaSymbolSpriteTemplate ANIM_ATTACKER, 3, 0, 0, ANIM_ATTACKER
|
||||
@ -31637,7 +31637,7 @@ gBattleAnimGeneral_TeraActivate::
|
||||
createvisualtask AnimTask_SetOpponentShadowCallbacks, 2 @ Restore shadows hidden in the charge script
|
||||
loadspritegfx ANIM_TAG_TERA_SYMBOL
|
||||
loadspritegfx ANIM_TAG_SPARKLE_6
|
||||
createvisualtask AnimTask_HideSwapSprite, 2, 1, 0
|
||||
createvisualtask AnimTask_HideSwapSprite, 2
|
||||
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 16, 0, RGB_WHITEALPHA
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_TARGET, 5, 14
|
||||
createvisualtask SoundTask_PlayNormalCry, 0
|
||||
@ -31777,7 +31777,7 @@ General_PrimalReversion_Alpha:
|
||||
delay 20
|
||||
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 0, 16, RGB_WHITEALPHA
|
||||
waitforvisualfinish
|
||||
createvisualtask AnimTask_HideSwapSprite, 2, 1, 0
|
||||
createvisualtask AnimTask_HideSwapSprite, 2
|
||||
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 16, 0, RGB_WHITEALPHA
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_TARGET, 5, 14
|
||||
createvisualtask SoundTask_PlayNormalCry, 0
|
||||
@ -31810,7 +31810,7 @@ General_PrimalReversion_Omega:
|
||||
delay 20
|
||||
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 0, 16, RGB_WHITEALPHA
|
||||
waitforvisualfinish
|
||||
createvisualtask AnimTask_HideSwapSprite, 2, 1, 0
|
||||
createvisualtask AnimTask_HideSwapSprite, 2
|
||||
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 16, 0, RGB_WHITEALPHA
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_TARGET, 5, 14
|
||||
createvisualtask SoundTask_PlayNormalCry, 0
|
||||
@ -31850,7 +31850,7 @@ gBattleAnimGeneral_PowerConstruct::
|
||||
delay 20
|
||||
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 0, 16, RGB_WHITEALPHA
|
||||
waitforvisualfinish
|
||||
createvisualtask AnimTask_HideSwapSprite, 2, 1, 0
|
||||
createvisualtask AnimTask_HideSwapSprite, 2
|
||||
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 16, 0, RGB_WHITEALPHA
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_TARGET, 5, 14
|
||||
createvisualtask SoundTask_PlayNormalCry, 0
|
||||
@ -31920,7 +31920,7 @@ gBattleAnimGeneral_UltraBurst::
|
||||
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 0, 16, RGB_WHITEALPHA
|
||||
createsprite gUltraBurstSymbolSpriteTemplate, ANIM_ATTACKER, 0x0, 0x0, 0x0, 0x0, 0x0
|
||||
waitforvisualfinish
|
||||
createvisualtask AnimTask_HideSwapSprite, 2, 1, 0
|
||||
createvisualtask AnimTask_HideSwapSprite, 2
|
||||
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 16, 0, RGB_WHITEALPHA
|
||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_TARGET, 5, 14
|
||||
createvisualtask SoundTask_PlayNormalCry, 0
|
||||
|
||||
@ -22,7 +22,7 @@ bool8 BattleInitAllSprites(u8 *state1, u8 *battler);
|
||||
void ClearSpritesHealthboxAnimData(void);
|
||||
void CopyAllBattleSpritesInvisibilities(void);
|
||||
void CopyBattleSpriteInvisibility(u8 battler);
|
||||
void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool32 megaEvo, bool8 trackEnemyPersonality);
|
||||
void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, u8 changeType);
|
||||
void BattleLoadSubstituteOrMonSpriteGfx(u8 battler, bool8 loadMonSprite);
|
||||
void LoadBattleMonGfxAndAnimate(u8 battler, bool8 loadMonSprite, u8 spriteId);
|
||||
void TrySetBehindSubstituteSpriteBit(u8 battler, u16 move);
|
||||
|
||||
@ -667,6 +667,14 @@
|
||||
#define ANIM_ORDER_UP_DROOPY 2
|
||||
#define ANIM_ORDER_UP_STRETCHY 3
|
||||
|
||||
// AnimTask_TransformMon variations
|
||||
enum SpeciesGfxChange
|
||||
{
|
||||
SPECIES_GFX_CHANGE_TRANSFORM,
|
||||
SPECIES_GFX_CHANGE_FORM_CHANGE,
|
||||
SPECIES_GFX_CHANGE_ILLUSION_OFF,
|
||||
};
|
||||
|
||||
// Flags given to various functions to indicate which palettes to consider.
|
||||
// Handled by UnpackSelectedBattlePalettes
|
||||
#define F_PAL_BG (1 << 0)
|
||||
|
||||
@ -2484,11 +2484,10 @@ void AnimTask_HideSwapSprite(u8 taskId)
|
||||
case 0:
|
||||
gTasks[taskId].data[11] = gSprites[spriteId].x; // Save battler position
|
||||
gSprites[spriteId].x = -64; // hide it from screen to avoid the blip/glitch effect when swapping the sprite.
|
||||
gTasks[taskId].data[10] = gBattleAnimArgs[0];
|
||||
gTasks[taskId].data[0]++;
|
||||
break;
|
||||
case 1:
|
||||
HandleSpeciesGfxDataChange(gBattleAnimAttacker, gBattleAnimTarget, gTasks[taskId].data[10], gBattleAnimArgs[1]);
|
||||
HandleSpeciesGfxDataChange(gBattleAnimAttacker, gBattleAnimTarget, SPECIES_GFX_CHANGE_FORM_CHANGE);
|
||||
GetBgDataForTransform(&animBg, gBattleAnimAttacker);
|
||||
|
||||
if (IsContest())
|
||||
@ -2536,14 +2535,6 @@ void AnimTask_HideSwapSprite(u8 taskId)
|
||||
break;
|
||||
case 2:
|
||||
gSprites[spriteId].x = gTasks[taskId].data[11]; // restores battler position
|
||||
if (!IsContest())
|
||||
{
|
||||
if (!IsOnPlayerSide(gBattleAnimAttacker))
|
||||
{
|
||||
if (gTasks[taskId].data[10] == 0)
|
||||
SetBattlerShadowSpriteCallback(gBattleAnimAttacker, gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies);
|
||||
}
|
||||
}
|
||||
|
||||
DestroyAnimVisualTask(taskId);
|
||||
break;
|
||||
@ -2596,7 +2587,6 @@ void AnimTask_TransformMon(u8 taskId)
|
||||
SetAnimBgAttribute(2, BG_ANIM_MOSAIC, 1);
|
||||
|
||||
gTasks[taskId].data[10] = gBattleAnimArgs[0];
|
||||
gTasks[taskId].data[11] = gBattleAnimArgs[1];
|
||||
gTasks[taskId].data[0]++;
|
||||
break;
|
||||
case 1:
|
||||
@ -2611,7 +2601,7 @@ void AnimTask_TransformMon(u8 taskId)
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
HandleSpeciesGfxDataChange(gBattleAnimAttacker, gBattleAnimTarget, gTasks[taskId].data[10], gTasks[taskId].data[11]);
|
||||
HandleSpeciesGfxDataChange(gBattleAnimAttacker, gBattleAnimTarget, gTasks[taskId].data[10]);
|
||||
GetBgDataForTransform(&animBg, gBattleAnimAttacker);
|
||||
|
||||
if (IsContest())
|
||||
@ -2680,7 +2670,7 @@ void AnimTask_TransformMon(u8 taskId)
|
||||
{
|
||||
if (!IsOnPlayerSide(gBattleAnimAttacker))
|
||||
{
|
||||
if (gTasks[taskId].data[10] == 0)
|
||||
if (gTasks[taskId].data[10] == SPECIES_GFX_CHANGE_TRANSFORM)
|
||||
SetBattlerShadowSpriteCallback(gBattleAnimAttacker, gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies);
|
||||
}
|
||||
}
|
||||
|
||||
@ -906,7 +906,7 @@ void CopyBattleSpriteInvisibility(u8 battler)
|
||||
gBattleSpritesDataPtr->battlerData[battler].invisible = gSprites[gBattlerSpriteIds[battler]].invisible;
|
||||
}
|
||||
|
||||
void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool32 megaEvo, bool8 trackEnemyPersonality)
|
||||
void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, u8 changeType)
|
||||
{
|
||||
u32 personalityValue, position, paletteOffset, targetSpecies;
|
||||
bool32 isShiny;
|
||||
@ -947,7 +947,7 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool32 megaEvo, bo
|
||||
targetSpecies = gBattleSpritesDataPtr->battlerData[battlerAtk].transformSpecies;
|
||||
}
|
||||
|
||||
if (trackEnemyPersonality)
|
||||
if (changeType == SPECIES_GFX_CHANGE_TRANSFORM)
|
||||
{
|
||||
personalityValue = gDisableStructs[battlerAtk].transformedMonPersonality;
|
||||
isShiny = gDisableStructs[battlerAtk].transformedMonShininess;
|
||||
@ -969,7 +969,7 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool32 megaEvo, bo
|
||||
paletteData = GetMonSpritePalFromSpeciesAndPersonality(targetSpecies, isShiny, personalityValue);
|
||||
LoadPalette(paletteData, paletteOffset, PLTT_SIZE_4BPP);
|
||||
|
||||
if (!megaEvo)
|
||||
if (changeType == SPECIES_GFX_CHANGE_TRANSFORM)
|
||||
{
|
||||
BlendPalette(paletteOffset, 16, 6, RGB_WHITE);
|
||||
CpuCopy32(&gPlttBufferFaded[paletteOffset], &gPlttBufferUnfaded[paletteOffset], PLTT_SIZEOF(16));
|
||||
@ -986,6 +986,13 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool32 megaEvo, bo
|
||||
CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, PLTT_SIZEOF(16));
|
||||
}
|
||||
|
||||
// Terastallization's tint
|
||||
if (changeType != SPECIES_GFX_CHANGE_ILLUSION_OFF && 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