diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index 79effbe76..732dea780 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -4393,10 +4393,13 @@ static s16 AI_CheckViability(u8 battlerAtk, u8 battlerDef, u16 move, s16 score) break; case EFFECT_RELIC_SONG: #if (defined SPECIES_MELOETTA && defined SPECIES_MELOETTA_PIROUETTE) - if (gBattleMons[battlerAtk].species == SPECIES_MELOETTA && gBattleMons[battlerDef].defense < gBattleMons[battlerDef].spDefense) - score += 3; // Change to pirouette if can do more damage - else if (gBattleMons[battlerAtk].species == SPECIES_MELOETTA_PIROUETTE && gBattleMons[battlerDef].spDefense < gBattleMons[battlerDef].defense) - score += 3; // Change to Aria if can do more damage + if (!(gBattleMons[battlerAtk].status2 & STATUS2_TRANSFORMED)) // Don't try to change form if it's transformed. + { + if (gBattleMons[battlerAtk].species == SPECIES_MELOETTA && gBattleMons[battlerDef].defense < gBattleMons[battlerDef].spDefense) + score += 3; // Change to Pirouette if can do more damage + else if (gBattleMons[battlerAtk].species == SPECIES_MELOETTA_PIROUETTE && gBattleMons[battlerDef].spDefense < gBattleMons[battlerDef].defense) + score += 3; // Change to Aria if can do more damage + } #endif break; case EFFECT_ELECTRIC_TERRAIN: diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index ba576a36a..a4f5ab9a6 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -3494,7 +3494,7 @@ void SetMoveEffect(bool32 primary, u32 certain) } break; case MOVE_EFFECT_RELIC_SONG: - if (GetBattlerAbility(gBattlerAttacker) != ABILITY_SHEER_FORCE) + if (GetBattlerAbility(gBattlerAttacker) != ABILITY_SHEER_FORCE && !(gBattleMons[gBattlerAttacker].status2 & STATUS2_TRANSFORMED)) { if (gBattleMons[gBattlerAttacker].species == SPECIES_MELOETTA) { diff --git a/src/battle_util.c b/src/battle_util.c index 4c3786f0c..45374249a 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -4072,6 +4072,9 @@ static bool32 ShouldChangeFormHpBased(u32 battler) u32 i; u16 battlerAbility = GetBattlerAbility(battler); + if (gBattleMons[battler].status2 & STATUS2_TRANSFORMED) + return FALSE; + for (i = 0; i < ARRAY_COUNT(forms); i++) { if (battlerAbility == forms[i][0])