diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c index d7004d7635..1beaee4cc4 100644 --- a/src/battle_gfx_sfx_util.c +++ b/src/battle_gfx_sfx_util.c @@ -633,15 +633,8 @@ void BattleLoadMonSpriteGfx(struct Pokemon *mon, u32 battler) if (GetActiveGimmick(battler) == GIMMICK_DYNAMAX && GetMonData(mon, MON_DATA_GIGANTAMAX_FACTOR)) gBattleSpritesDataPtr->battlerData[battler].transformSpecies = species = GetGMaxTargetSpecies(species); - if (B_TRANSFORM_SHINY >= GEN_4) - { - personalityValue = gTransformedPersonalities[battler]; - isShiny = gTransformedShininess[battler]; - } - else - { - personalityValue = GetMonData(mon, MON_DATA_PERSONALITY); - } + personalityValue = gTransformedPersonalities[battler]; + isShiny = gTransformedShininess[battler]; } position = GetBattlerPosition(battler); @@ -947,24 +940,23 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool32 megaEvo, bo targetSpecies = GetIllusionMonSpecies(battlerDef); else targetSpecies = GetMonData(monDef, MON_DATA_SPECIES); - personalityValue = GetMonData(monAtk, MON_DATA_PERSONALITY); - isShiny = GetMonData(monAtk, MON_DATA_IS_SHINY); + gBattleSpritesDataPtr->battlerData[battlerAtk].transformSpecies = targetSpecies; } else { targetSpecies = gBattleSpritesDataPtr->battlerData[battlerAtk].transformSpecies; - if (B_TRANSFORM_SHINY >= GEN_4 && trackEnemyPersonality && !megaEvo) - { - personalityValue = GetMonData(monDef, MON_DATA_PERSONALITY); - isShiny = GetMonData(monDef, MON_DATA_IS_SHINY); - } - else - { - personalityValue = GetMonData(monAtk, MON_DATA_PERSONALITY); - isShiny = GetMonData(monAtk, MON_DATA_IS_SHINY); - } } + if (trackEnemyPersonality) + { + personalityValue = gDisableStructs[battlerAtk].transformedMonPersonality; + isShiny = gDisableStructs[battlerAtk].transformedMonShininess; + } + else + { + personalityValue = GetMonData(monAtk, MON_DATA_PERSONALITY); + isShiny = GetMonData(monAtk, MON_DATA_IS_SHINY); + } HandleLoadSpecialPokePic(!IsOnPlayerSide(battlerAtk), gMonSpritesGfxPtr->spritesGfx[position], targetSpecies, @@ -981,10 +973,6 @@ void HandleSpeciesGfxDataChange(u8 battlerAtk, u8 battlerDef, bool32 megaEvo, bo { BlendPalette(paletteOffset, 16, 6, RGB_WHITE); CpuCopy32(&gPlttBufferFaded[paletteOffset], &gPlttBufferUnfaded[paletteOffset], PLTT_SIZEOF(16)); - if (!IsContest()) - { - gBattleSpritesDataPtr->battlerData[battlerAtk].transformSpecies = targetSpecies; - } } // dynamax tint diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index bc4e8d6551..f3a4cbd803 100755 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -11218,7 +11218,10 @@ static void Cmd_transformdataexecution(void) gDisableStructs[gBattlerAttacker].disabledMove = MOVE_NONE; gDisableStructs[gBattlerAttacker].disableTimer = 0; gDisableStructs[gBattlerAttacker].transformedMonPersonality = gBattleMons[gBattlerTarget].personality; - gDisableStructs[gBattlerAttacker].transformedMonShininess = gBattleMons[gBattlerTarget].isShiny; + if (B_TRANSFORM_SHINY >= GEN_4) + gDisableStructs[gBattlerAttacker].transformedMonShininess = gBattleMons[gBattlerTarget].isShiny; + else + gDisableStructs[gBattlerAttacker].transformedMonShininess = gBattleMons[gBattlerAttacker].isShiny; gDisableStructs[gBattlerAttacker].mimickedMoves = 0; gDisableStructs[gBattlerAttacker].usedMoves = 0;