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
|
monbg ANIM_ATTACKER
|
||||||
playsewithpan SE_M_TELEPORT, SOUND_PAN_ATTACKER
|
playsewithpan SE_M_TELEPORT, SOUND_PAN_ATTACKER
|
||||||
waitplaysewithpan SE_M_MINIMIZE, SOUND_PAN_ATTACKER, 48
|
waitplaysewithpan SE_M_MINIMIZE, SOUND_PAN_ATTACKER, 48
|
||||||
createvisualtask AnimTask_TransformMon, 2, 0, 1
|
createvisualtask AnimTask_TransformMon, 2, SPECIES_GFX_CHANGE_TRANSFORM
|
||||||
waitforvisualfinish
|
waitforvisualfinish
|
||||||
clearmonbg ANIM_ATTACKER
|
clearmonbg ANIM_ATTACKER
|
||||||
end
|
end
|
||||||
@ -31513,14 +31513,14 @@ gBattleAnimGeneral_SimpleHeal::
|
|||||||
|
|
||||||
gBattleAnimGeneral_IllusionOff::
|
gBattleAnimGeneral_IllusionOff::
|
||||||
monbg ANIM_TARGET
|
monbg ANIM_TARGET
|
||||||
createvisualtask AnimTask_TransformMon, 2, 1, 0
|
createvisualtask AnimTask_TransformMon, 2, SPECIES_GFX_CHANGE_ILLUSION_OFF
|
||||||
waitforvisualfinish
|
waitforvisualfinish
|
||||||
clearmonbg ANIM_TARGET
|
clearmonbg ANIM_TARGET
|
||||||
end
|
end
|
||||||
|
|
||||||
gBattleAnimGeneral_FormChange::
|
gBattleAnimGeneral_FormChange::
|
||||||
monbg ANIM_ATTACKER
|
monbg ANIM_ATTACKER
|
||||||
createvisualtask AnimTask_TransformMon, 2, 1, 0
|
createvisualtask AnimTask_TransformMon, 2, SPECIES_GFX_CHANGE_FORM_CHANGE
|
||||||
waitforvisualfinish
|
waitforvisualfinish
|
||||||
clearmonbg ANIM_ATTACKER
|
clearmonbg ANIM_ATTACKER
|
||||||
end
|
end
|
||||||
@ -31552,7 +31552,7 @@ gBattleAnimGeneral_MegaEvolution::
|
|||||||
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 0, 16, RGB_WHITEALPHA
|
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 0, 16, RGB_WHITEALPHA
|
||||||
waitforvisualfinish
|
waitforvisualfinish
|
||||||
createvisualtask SoundTask_PlayNormalCry, 0
|
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_BlendBattleAnimPalExclude, 5, 5, 2, 16, 0, RGB_WHITEALPHA
|
||||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_TARGET, 5, 14
|
createvisualtask AnimTask_HorizontalShake, 5, ANIM_TARGET, 5, 14
|
||||||
createsprite gMegaSymbolSpriteTemplate ANIM_ATTACKER, 3, 0, 0, ANIM_ATTACKER
|
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
|
createvisualtask AnimTask_SetOpponentShadowCallbacks, 2 @ Restore shadows hidden in the charge script
|
||||||
loadspritegfx ANIM_TAG_TERA_SYMBOL
|
loadspritegfx ANIM_TAG_TERA_SYMBOL
|
||||||
loadspritegfx ANIM_TAG_SPARKLE_6
|
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_BlendBattleAnimPalExclude, 5, 5, 2, 16, 0, RGB_WHITEALPHA
|
||||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_TARGET, 5, 14
|
createvisualtask AnimTask_HorizontalShake, 5, ANIM_TARGET, 5, 14
|
||||||
createvisualtask SoundTask_PlayNormalCry, 0
|
createvisualtask SoundTask_PlayNormalCry, 0
|
||||||
@ -31777,7 +31777,7 @@ General_PrimalReversion_Alpha:
|
|||||||
delay 20
|
delay 20
|
||||||
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 0, 16, RGB_WHITEALPHA
|
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 0, 16, RGB_WHITEALPHA
|
||||||
waitforvisualfinish
|
waitforvisualfinish
|
||||||
createvisualtask AnimTask_HideSwapSprite, 2, 1, 0
|
createvisualtask AnimTask_HideSwapSprite, 2
|
||||||
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 16, 0, RGB_WHITEALPHA
|
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 16, 0, RGB_WHITEALPHA
|
||||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_TARGET, 5, 14
|
createvisualtask AnimTask_HorizontalShake, 5, ANIM_TARGET, 5, 14
|
||||||
createvisualtask SoundTask_PlayNormalCry, 0
|
createvisualtask SoundTask_PlayNormalCry, 0
|
||||||
@ -31810,7 +31810,7 @@ General_PrimalReversion_Omega:
|
|||||||
delay 20
|
delay 20
|
||||||
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 0, 16, RGB_WHITEALPHA
|
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 0, 16, RGB_WHITEALPHA
|
||||||
waitforvisualfinish
|
waitforvisualfinish
|
||||||
createvisualtask AnimTask_HideSwapSprite, 2, 1, 0
|
createvisualtask AnimTask_HideSwapSprite, 2
|
||||||
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 16, 0, RGB_WHITEALPHA
|
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 16, 0, RGB_WHITEALPHA
|
||||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_TARGET, 5, 14
|
createvisualtask AnimTask_HorizontalShake, 5, ANIM_TARGET, 5, 14
|
||||||
createvisualtask SoundTask_PlayNormalCry, 0
|
createvisualtask SoundTask_PlayNormalCry, 0
|
||||||
@ -31850,7 +31850,7 @@ gBattleAnimGeneral_PowerConstruct::
|
|||||||
delay 20
|
delay 20
|
||||||
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 0, 16, RGB_WHITEALPHA
|
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 0, 16, RGB_WHITEALPHA
|
||||||
waitforvisualfinish
|
waitforvisualfinish
|
||||||
createvisualtask AnimTask_HideSwapSprite, 2, 1, 0
|
createvisualtask AnimTask_HideSwapSprite, 2
|
||||||
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 16, 0, RGB_WHITEALPHA
|
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 16, 0, RGB_WHITEALPHA
|
||||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_TARGET, 5, 14
|
createvisualtask AnimTask_HorizontalShake, 5, ANIM_TARGET, 5, 14
|
||||||
createvisualtask SoundTask_PlayNormalCry, 0
|
createvisualtask SoundTask_PlayNormalCry, 0
|
||||||
@ -31920,7 +31920,7 @@ gBattleAnimGeneral_UltraBurst::
|
|||||||
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 0, 16, RGB_WHITEALPHA
|
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 0, 16, RGB_WHITEALPHA
|
||||||
createsprite gUltraBurstSymbolSpriteTemplate, ANIM_ATTACKER, 0x0, 0x0, 0x0, 0x0, 0x0
|
createsprite gUltraBurstSymbolSpriteTemplate, ANIM_ATTACKER, 0x0, 0x0, 0x0, 0x0, 0x0
|
||||||
waitforvisualfinish
|
waitforvisualfinish
|
||||||
createvisualtask AnimTask_HideSwapSprite, 2, 1, 0
|
createvisualtask AnimTask_HideSwapSprite, 2
|
||||||
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 16, 0, RGB_WHITEALPHA
|
createvisualtask AnimTask_BlendBattleAnimPalExclude, 5, 5, 2, 16, 0, RGB_WHITEALPHA
|
||||||
createvisualtask AnimTask_HorizontalShake, 5, ANIM_TARGET, 5, 14
|
createvisualtask AnimTask_HorizontalShake, 5, ANIM_TARGET, 5, 14
|
||||||
createvisualtask SoundTask_PlayNormalCry, 0
|
createvisualtask SoundTask_PlayNormalCry, 0
|
||||||
|
|||||||
@ -22,7 +22,7 @@ bool8 BattleInitAllSprites(u8 *state1, u8 *battler);
|
|||||||
void ClearSpritesHealthboxAnimData(void);
|
void ClearSpritesHealthboxAnimData(void);
|
||||||
void CopyAllBattleSpritesInvisibilities(void);
|
void CopyAllBattleSpritesInvisibilities(void);
|
||||||
void CopyBattleSpriteInvisibility(u8 battler);
|
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 BattleLoadSubstituteOrMonSpriteGfx(u8 battler, bool8 loadMonSprite);
|
||||||
void LoadBattleMonGfxAndAnimate(u8 battler, bool8 loadMonSprite, u8 spriteId);
|
void LoadBattleMonGfxAndAnimate(u8 battler, bool8 loadMonSprite, u8 spriteId);
|
||||||
void TrySetBehindSubstituteSpriteBit(u8 battler, u16 move);
|
void TrySetBehindSubstituteSpriteBit(u8 battler, u16 move);
|
||||||
|
|||||||
@ -667,6 +667,14 @@
|
|||||||
#define ANIM_ORDER_UP_DROOPY 2
|
#define ANIM_ORDER_UP_DROOPY 2
|
||||||
#define ANIM_ORDER_UP_STRETCHY 3
|
#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.
|
// Flags given to various functions to indicate which palettes to consider.
|
||||||
// Handled by UnpackSelectedBattlePalettes
|
// Handled by UnpackSelectedBattlePalettes
|
||||||
#define F_PAL_BG (1 << 0)
|
#define F_PAL_BG (1 << 0)
|
||||||
|
|||||||
@ -2484,11 +2484,10 @@ void AnimTask_HideSwapSprite(u8 taskId)
|
|||||||
case 0:
|
case 0:
|
||||||
gTasks[taskId].data[11] = gSprites[spriteId].x; // Save battler position
|
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.
|
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]++;
|
gTasks[taskId].data[0]++;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
HandleSpeciesGfxDataChange(gBattleAnimAttacker, gBattleAnimTarget, gTasks[taskId].data[10], gBattleAnimArgs[1]);
|
HandleSpeciesGfxDataChange(gBattleAnimAttacker, gBattleAnimTarget, SPECIES_GFX_CHANGE_FORM_CHANGE);
|
||||||
GetBgDataForTransform(&animBg, gBattleAnimAttacker);
|
GetBgDataForTransform(&animBg, gBattleAnimAttacker);
|
||||||
|
|
||||||
if (IsContest())
|
if (IsContest())
|
||||||
@ -2536,14 +2535,6 @@ void AnimTask_HideSwapSprite(u8 taskId)
|
|||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
gSprites[spriteId].x = gTasks[taskId].data[11]; // restores battler position
|
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);
|
DestroyAnimVisualTask(taskId);
|
||||||
break;
|
break;
|
||||||
@ -2596,7 +2587,6 @@ void AnimTask_TransformMon(u8 taskId)
|
|||||||
SetAnimBgAttribute(2, BG_ANIM_MOSAIC, 1);
|
SetAnimBgAttribute(2, BG_ANIM_MOSAIC, 1);
|
||||||
|
|
||||||
gTasks[taskId].data[10] = gBattleAnimArgs[0];
|
gTasks[taskId].data[10] = gBattleAnimArgs[0];
|
||||||
gTasks[taskId].data[11] = gBattleAnimArgs[1];
|
|
||||||
gTasks[taskId].data[0]++;
|
gTasks[taskId].data[0]++;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
@ -2611,7 +2601,7 @@ void AnimTask_TransformMon(u8 taskId)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
HandleSpeciesGfxDataChange(gBattleAnimAttacker, gBattleAnimTarget, gTasks[taskId].data[10], gTasks[taskId].data[11]);
|
HandleSpeciesGfxDataChange(gBattleAnimAttacker, gBattleAnimTarget, gTasks[taskId].data[10]);
|
||||||
GetBgDataForTransform(&animBg, gBattleAnimAttacker);
|
GetBgDataForTransform(&animBg, gBattleAnimAttacker);
|
||||||
|
|
||||||
if (IsContest())
|
if (IsContest())
|
||||||
@ -2680,7 +2670,7 @@ void AnimTask_TransformMon(u8 taskId)
|
|||||||
{
|
{
|
||||||
if (!IsOnPlayerSide(gBattleAnimAttacker))
|
if (!IsOnPlayerSide(gBattleAnimAttacker))
|
||||||
{
|
{
|
||||||
if (gTasks[taskId].data[10] == 0)
|
if (gTasks[taskId].data[10] == SPECIES_GFX_CHANGE_TRANSFORM)
|
||||||
SetBattlerShadowSpriteCallback(gBattleAnimAttacker, gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies);
|
SetBattlerShadowSpriteCallback(gBattleAnimAttacker, gBattleSpritesDataPtr->battlerData[gBattleAnimAttacker].transformSpecies);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -906,7 +906,7 @@ void CopyBattleSpriteInvisibility(u8 battler)
|
|||||||
gBattleSpritesDataPtr->battlerData[battler].invisible = gSprites[gBattlerSpriteIds[battler]].invisible;
|
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;
|
u32 personalityValue, position, paletteOffset, targetSpecies;
|
||||||
bool32 isShiny;
|
bool32 isShiny;
|
||||||
@ -947,7 +947,7 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool32 megaEvo, bo
|
|||||||
targetSpecies = gBattleSpritesDataPtr->battlerData[battlerAtk].transformSpecies;
|
targetSpecies = gBattleSpritesDataPtr->battlerData[battlerAtk].transformSpecies;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (trackEnemyPersonality)
|
if (changeType == SPECIES_GFX_CHANGE_TRANSFORM)
|
||||||
{
|
{
|
||||||
personalityValue = gDisableStructs[battlerAtk].transformedMonPersonality;
|
personalityValue = gDisableStructs[battlerAtk].transformedMonPersonality;
|
||||||
isShiny = gDisableStructs[battlerAtk].transformedMonShininess;
|
isShiny = gDisableStructs[battlerAtk].transformedMonShininess;
|
||||||
@ -969,7 +969,7 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool32 megaEvo, bo
|
|||||||
paletteData = GetMonSpritePalFromSpeciesAndPersonality(targetSpecies, isShiny, personalityValue);
|
paletteData = GetMonSpritePalFromSpeciesAndPersonality(targetSpecies, isShiny, personalityValue);
|
||||||
LoadPalette(paletteData, paletteOffset, PLTT_SIZE_4BPP);
|
LoadPalette(paletteData, paletteOffset, PLTT_SIZE_4BPP);
|
||||||
|
|
||||||
if (!megaEvo)
|
if (changeType == SPECIES_GFX_CHANGE_TRANSFORM)
|
||||||
{
|
{
|
||||||
BlendPalette(paletteOffset, 16, 6, RGB_WHITE);
|
BlendPalette(paletteOffset, 16, 6, RGB_WHITE);
|
||||||
CpuCopy32(&gPlttBufferFaded[paletteOffset], &gPlttBufferUnfaded[paletteOffset], PLTT_SIZEOF(16));
|
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));
|
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);
|
gSprites[gBattlerSpriteIds[battlerAtk]].y = GetBattlerSpriteDefault_Y(battlerAtk);
|
||||||
StartSpriteAnim(&gSprites[gBattlerSpriteIds[battlerAtk]], 0);
|
StartSpriteAnim(&gSprites[gBattlerSpriteIds[battlerAtk]], 0);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user