Fixes Aura Wheel + Normalize and Hunger Switch while Transformed/Terastallized (#7061)

This commit is contained in:
PhallenTree 2025-06-04 20:58:10 +01:00 committed by GitHub
parent 2358f9a871
commit b3752e13d8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 94 additions and 4 deletions

View File

@ -5998,7 +5998,9 @@ u32 GetDynamicMoveType(struct Pokemon *mon, u32 move, u32 battler, enum MonState
{
return TYPE_WATER;
}
else if (moveEffect == EFFECT_AURA_WHEEL && species == SPECIES_MORPEKO_HANGRY)
else if (moveEffect == EFFECT_AURA_WHEEL
&& species == SPECIES_MORPEKO_HANGRY
&& ability != ABILITY_NORMALIZE)
{
return TYPE_DARK;
}

View File

@ -1470,7 +1470,7 @@ const u8 gText_Body[] = _("Body");
const u8 gText_Judgment[] = _("{B_BUFF1}{CLEAR 13}Judgment{CLEAR 13}{B_BUFF2}");
static const u8 sText_TwoTrainersSentPkmn[] = _("{B_TRAINER1_NAME_WITH_CLASS} sent out {B_OPPONENT_MON1_NAME}!\p{B_TRAINER2_NAME_WITH_CLASS} sent out {B_OPPONENT_MON2_NAME}!");
static const u8 sText_Trainer2SentOutPkmn[] = _("{B_TRAINER2_NAME_WITH_CLASS} sent out {B_BUFF1}!");
static const u8 sText_TwoTrainersWantToBattle[] = _("You are challenged by\n{B_TRAINER1_NAME_WITH_CLASS} and {B_TRAINER2_NAME_WITH_CLASS}!\p");
static const u8 sText_TwoTrainersWantToBattle[] = _("You are challenged by {B_TRAINER1_NAME_WITH_CLASS} and {B_TRAINER2_NAME_WITH_CLASS}!\p");
static const u8 sText_InGamePartnerSentOutZGoN[] = _("{B_PARTNER_NAME_WITH_CLASS} sent out {B_PLAYER_MON2_NAME}! Go, {B_PLAYER_MON1_NAME}!");
const u16 gBattlePalaceFlavorTextTable[] =

View File

@ -4320,7 +4320,9 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
}
break;
case ABILITY_HUNGER_SWITCH:
if (TryBattleFormChange(battler, FORM_CHANGE_BATTLE_TURN_END))
if (!(gBattleMons[battler].status2 & STATUS2_TRANSFORMED)
&& GetActiveGimmick(battler) != GIMMICK_TERA
&& TryBattleFormChange(battler, FORM_CHANGE_BATTLE_TURN_END))
{
gBattlerAttacker = battler;
BattleScriptPushCursorAndCallback(BattleScript_AttackerFormChangeEnd3NoPopup);

View File

@ -22,3 +22,52 @@ SINGLE_BATTLE_TEST("Hunger Switch switches Morpeko's forms at the end of the tur
EXPECT_EQ(player->species, SPECIES_MORPEKO_FULL_BELLY);
}
}
SINGLE_BATTLE_TEST("Hunger Switch does not switch a mon transformed into Morpeko's form")
{
GIVEN {
ASSUME(GetMoveEffect(MOVE_TRANSFORM) == EFFECT_TRANSFORM);
PLAYER(SPECIES_MORPEKO) { Ability(ABILITY_HUNGER_SWITCH); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN { MOVE(opponent, MOVE_TRANSFORM); }
} SCENE {
NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, opponent);
}
}
SINGLE_BATTLE_TEST("Hunger Switch does not switch Morpeko's form when Terastallized")
{
GIVEN {
PLAYER(SPECIES_MORPEKO) { Ability(ABILITY_HUNGER_SWITCH); TeraType(TYPE_NORMAL); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN { }
TURN { MOVE(player, MOVE_SCRATCH, gimmick: GIMMICK_TERA); }
} SCENE {
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player);
NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player);
}
}
SINGLE_BATTLE_TEST("Hunger Switch does not switch Morpeko's form after switching out while Terastallized")
{
KNOWN_FAILING; // #7062
GIVEN {
ASSUME(GetMoveEffect(MOVE_ROAR) == EFFECT_ROAR);
PLAYER(SPECIES_MORPEKO) { Ability(ABILITY_HUNGER_SWITCH); TeraType(TYPE_NORMAL); }
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN { }
TURN { MOVE(player, MOVE_SCRATCH, gimmick: GIMMICK_TERA); MOVE(opponent, MOVE_ROAR); }
TURN { SWITCH(player, 0); }
} SCENE {
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player);
NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player);
} THEN {
EXPECT_EQ(player->species, SPECIES_MORPEKO_HANGRY);
}
}

View File

@ -50,4 +50,41 @@ SINGLE_BATTLE_TEST("Aura Wheel changes type depending on Morpeko's form")
}
}
TO_DO_BATTLE_TEST("Aura Wheel can be used by Pokémon transformed into Morpeko");
SINGLE_BATTLE_TEST("Aura Wheel can be used by Pokémon transformed into Morpeko")
{
KNOWN_FAILING; // Aura Wheel for some reason isn't used by the opponent?
GIVEN {
PLAYER(SPECIES_MORPEKO) { Ability(ABILITY_HUNGER_SWITCH); }
OPPONENT(SPECIES_DITTO) { Ability(ABILITY_IMPOSTER); }
} WHEN {
TURN { MOVE(opponent, MOVE_AURA_WHEEL); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_AURA_WHEEL, opponent);
}
}
SINGLE_BATTLE_TEST("Aura Wheel can be turned into a Normal-type move after Morpeko gains Normalize")
{
bool32 hangryMode;
PARAMETRIZE { hangryMode = FALSE; }
PARAMETRIZE { hangryMode = TRUE; }
GIVEN {
ASSUME(GetMoveEffect(MOVE_ENTRAINMENT) == EFFECT_ENTRAINMENT);
ASSUME(gSpeciesInfo[SPECIES_DUSKULL].types[0] == TYPE_GHOST || gSpeciesInfo[SPECIES_DUSKULL].types[1] == TYPE_GHOST);
PLAYER(SPECIES_MORPEKO) { Ability(ABILITY_HUNGER_SWITCH); }
OPPONENT(SPECIES_DELCATTY) { Ability(ABILITY_NORMALIZE); }
OPPONENT(SPECIES_DUSKULL);
} WHEN {
if (hangryMode)
TURN { }
TURN { MOVE(opponent, MOVE_ENTRAINMENT); }
TURN { MOVE(player, MOVE_AURA_WHEEL); SWITCH(opponent, 1); }
} SCENE {
if (hangryMode)
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player);
NONE_OF {
ANIMATION(ANIM_TYPE_MOVE, MOVE_AURA_WHEEL, player);
HP_BAR(opponent);
}
}
}