Fix psychic terrain affecting semi-invulnerable mons (#7986)
This commit is contained in:
parent
e5df8f0212
commit
24c595bfec
@ -2403,8 +2403,7 @@ static enum MoveCanceller CancellerProtean(void)
|
||||
|
||||
static enum MoveCanceller CancellerPsychicTerrain(void)
|
||||
{
|
||||
if (gFieldStatuses & STATUS_FIELD_PSYCHIC_TERRAIN
|
||||
&& IsBattlerGrounded(gBattlerTarget)
|
||||
if (IsBattlerTerrainAffected(gBattlerTarget, STATUS_FIELD_PSYCHIC_TERRAIN)
|
||||
&& GetChosenMovePriority(gBattlerAttacker, GetBattlerAbility(gBattlerAttacker)) > 0
|
||||
&& GetMoveTarget(gCurrentMove) != MOVE_TARGET_ALL_BATTLERS
|
||||
&& GetMoveTarget(gCurrentMove) != MOVE_TARGET_OPPONENTS_FIELD
|
||||
|
||||
@ -114,6 +114,38 @@ SINGLE_BATTLE_TEST("Psychic Terrain doesn't block priority field moves")
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Psychic Terrain doesn't block priority moves against semi-invulnerable targets")
|
||||
{
|
||||
u32 move = 0, shouldWork = 0;
|
||||
PARAMETRIZE { move = MOVE_SOLAR_BEAM; shouldWork = FALSE;}
|
||||
PARAMETRIZE { move = MOVE_FLY; shouldWork = TRUE;}
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_SHROODLE) { Ability(ABILITY_PRANKSTER); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_PSYCHIC_TERRAIN); MOVE(opponent,move);}
|
||||
TURN { MOVE(player, MOVE_TOXIC); SKIP_TURN(opponent);}
|
||||
} SCENE {
|
||||
if (shouldWork)
|
||||
{
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_TOXIC, player);
|
||||
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent);
|
||||
}
|
||||
else
|
||||
{
|
||||
NONE_OF {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_TOXIC, player);
|
||||
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent);
|
||||
}
|
||||
}
|
||||
} THEN {
|
||||
if (shouldWork)
|
||||
EXPECT(opponent->status1 & STATUS1_TOXIC_POISON);
|
||||
else
|
||||
EXPECT(!(opponent->status1 & STATUS1_TOXIC_POISON));
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Psychic Terrain lasts for 5 turns")
|
||||
{
|
||||
GIVEN {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user