Fixes gimmick icon flying off the screen (#6401)

This commit is contained in:
PhallenTree 2025-03-10 16:01:02 +00:00 committed by GitHub
parent 3def0e751b
commit af3984bee4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -204,6 +204,7 @@ static void SpriteCb_GimmickTrigger(struct Sprite *sprite)
{
s32 xSlide, xPriority, xOptimal;
s32 yDiff;
s32 xHealthbox = gSprites[gHealthboxSpriteIds[sprite->tBattler]].x;
if (IsDoubleBattle())
{
@ -222,25 +223,29 @@ static void SpriteCb_GimmickTrigger(struct Sprite *sprite)
if (sprite->tHide)
{
if (sprite->x != gSprites[gHealthboxSpriteIds[sprite->tBattler]].x - xSlide)
if (sprite->x < xHealthbox - xSlide)
sprite->x++;
if (sprite->x >= gSprites[gHealthboxSpriteIds[sprite->tBattler]].x - xPriority)
if (sprite->x >= xHealthbox - xPriority)
sprite->oam.priority = 2;
else
sprite->oam.priority = 1;
sprite->y = gSprites[gHealthboxSpriteIds[sprite->tBattler]].y - yDiff;
sprite->y2 = gSprites[gHealthboxSpriteIds[sprite->tBattler]].y2 - yDiff;
if (sprite->x == gSprites[gHealthboxSpriteIds[sprite->tBattler]].x - xSlide)
if (sprite->x == xHealthbox - xSlide)
DestroyGimmickTriggerSprite();
}
else
{
if (sprite->x != gSprites[gHealthboxSpriteIds[sprite->tBattler]].x - xOptimal)
// Edge case: in doubles, if selecting move and next mon's action too fast, the second battler's gimmick icon uses the x from the first battler's gimmick icon
if (sprite->y != gSprites[gHealthboxSpriteIds[sprite->tBattler]].y - yDiff)
sprite->x = xHealthbox - xSlide;
if (sprite->x > xHealthbox - xOptimal)
sprite->x--;
if (sprite->x >= gSprites[gHealthboxSpriteIds[sprite->tBattler]].x - xPriority)
if (sprite->x >= xHealthbox - xPriority)
sprite->oam.priority = 2;
else
sprite->oam.priority = 1;