From 19c9aa508d91338ab298a7363c066895e060a5dc Mon Sep 17 00:00:00 2001 From: PhallenTree <168426989+PhallenTree@users.noreply.github.com> Date: Wed, 16 Jul 2025 21:31:06 +0100 Subject: [PATCH] Fixes shadows and mon animations for Illusioned battlers (#7347) --- src/battle_controllers.c | 10 ++++------ src/battle_gfx_sfx_util.c | 4 ++-- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/battle_controllers.c b/src/battle_controllers.c index d189c67215..dfd7138bcb 100644 --- a/src/battle_controllers.c +++ b/src/battle_controllers.c @@ -2172,9 +2172,7 @@ void StartSendOutAnim(u32 battler, bool32 dontClearTransform, bool32 dontClearSu ClearTemporarySpeciesSpriteData(battler, dontClearTransform, dontClearSubstituteBit); gBattlerPartyIndexes[battler] = gBattleResources->bufferA[battler][1]; - species = GetIllusionMonSpecies(battler); - if (species == SPECIES_NONE) - species = GetMonData(mon, MON_DATA_SPECIES); + species = GetBattlerVisualSpecies(battler); gBattleControllerData[battler] = CreateInvisibleSpriteWithCallback(SpriteCB_WaitForBattlerBallReleaseAnim); // Load sprite for opponent only, player sprite is expected to be already loaded. if (!IsOnPlayerSide(battler)) @@ -2490,7 +2488,7 @@ void BtlController_HandleSetRawMonData(u32 battler) void BtlController_HandleLoadMonSprite(u32 battler, void (*controllerCallback)(u32 battler)) { struct Pokemon *mon = GetBattlerMon(battler); - u16 species = GetMonData(mon, MON_DATA_SPECIES); + u16 species = GetBattlerVisualSpecies(battler); BattleLoadMonSpriteGfx(mon, battler); SetMultiuseSpriteTemplateToPokemon(species, GetBattlerPosition(battler)); @@ -3153,7 +3151,7 @@ void TrySetBattlerShadowSpriteCallback(u32 battler) if (gSprites[gBattleSpritesDataPtr->healthBoxesData[battler].shadowSpriteIdPrimary].callback == SpriteCallbackDummy && (B_ENEMY_MON_SHADOW_STYLE <= GEN_3 || P_GBA_STYLE_SPECIES_GFX == TRUE || gSprites[gBattleSpritesDataPtr->healthBoxesData[battler].shadowSpriteIdSecondary].callback == SpriteCallbackDummy)) - SetBattlerShadowSpriteCallback(battler, GetMonData(GetBattlerMon(battler), MON_DATA_SPECIES)); + SetBattlerShadowSpriteCallback(battler, GetBattlerVisualSpecies(battler)); } bool32 TryShinyAnimAfterMonAnimUtil(u32 battler) @@ -3256,7 +3254,7 @@ bool32 SwitchIn_TryShinyAnimUtil(u32 battler) DestroySprite(&gSprites[gBattleControllerData[battler]]); if (GetBattlerSide(battler) == B_SIDE_OPPONENT) - SetBattlerShadowSpriteCallback(battler, GetMonData(GetBattlerMon(battler), MON_DATA_SPECIES)); + SetBattlerShadowSpriteCallback(battler, GetBattlerVisualSpecies(battler)); return TRUE; } diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c index 3d8d2f48be..9b272a51b4 100644 --- a/src/battle_gfx_sfx_util.c +++ b/src/battle_gfx_sfx_util.c @@ -1168,7 +1168,7 @@ void CreateEnemyShadowSprite(u32 battler) { if (B_ENEMY_MON_SHADOW_STYLE >= GEN_4 && P_GBA_STYLE_SPECIES_GFX == FALSE) { - u16 species = SanitizeSpeciesId(gBattleMons[battler].species); + u16 species = GetBattlerVisualSpecies(battler); u8 size = gSpeciesInfo[species].enemyShadowSize; gBattleSpritesDataPtr->healthBoxesData[battler].shadowSpriteIdPrimary = CreateSprite(&gSpriteTemplate_EnemyShadow, @@ -1282,7 +1282,7 @@ void SpriteCB_EnemyShadow(struct Sprite *shadowSprite) } else if (B_ENEMY_MON_SHADOW_STYLE >= GEN_4 && P_GBA_STYLE_SPECIES_GFX == FALSE) { - u16 species = SanitizeSpeciesId(gBattleMons[battler].species); + u16 species = GetBattlerVisualSpecies(battler); xOffset = gSpeciesInfo[species].enemyShadowXOffset + (shadowSprite->tSpriteSide == SPRITE_SIDE_LEFT ? -16 : 16); yOffset = gSpeciesInfo[species].enemyShadowYOffset + 16; size = gSpeciesInfo[species].enemyShadowSize;