Added missing Dream Eater and Reflect Type tests (#6245)
This commit is contained in:
parent
5aeeb3365f
commit
845679471f
@ -3550,6 +3550,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_DYNAMAX] =
|
||||
.priority = 0,
|
||||
.category = DAMAGE_CATEGORY_SPECIAL,
|
||||
.healingMove = B_HEAL_BLOCKING >= GEN_6,
|
||||
.ignoresSubstitute = B_UPDATED_MOVE_FLAGS >= GEN_5,
|
||||
.contestEffect = CONTEST_EFFECT_STARTLE_PREV_MONS,
|
||||
.contestCategory = CONTEST_CATEGORY_SMART,
|
||||
.contestComboStarterId = 0,
|
||||
|
||||
@ -55,6 +55,62 @@ SINGLE_BATTLE_TEST("Dream Eater fails if Heal Block applies")
|
||||
}
|
||||
}
|
||||
|
||||
TO_DO_BATTLE_TEST("Dream Eater works on targets with Comatose");
|
||||
TO_DO_BATTLE_TEST("Dream Eater fails if the target is behind a Substitute (Gen 1-4)");
|
||||
TO_DO_BATTLE_TEST("Dream Eater works if the target is behind a Substitute (Gen 5+)");
|
||||
SINGLE_BATTLE_TEST("Dream Eater works on targets with Comatose")
|
||||
{
|
||||
s16 damage;
|
||||
s16 healed;
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WOBBUFFET) { HP(1); }
|
||||
OPPONENT(SPECIES_KOMALA) { Ability(ABILITY_COMATOSE); }
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_DREAM_EATER); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_DREAM_EATER, player);
|
||||
HP_BAR(opponent, captureDamage: &damage);
|
||||
HP_BAR(player, captureDamage: &healed);
|
||||
} THEN {
|
||||
EXPECT_MUL_EQ(damage, Q_4_12(-1.0/2.0), healed);
|
||||
}
|
||||
}
|
||||
|
||||
#if B_UPDATED_MOVE_FLAGS < GEN_5
|
||||
SINGLE_BATTLE_TEST("Dream Eater fails if the target is behind a Substitute (Gen 1-4)")
|
||||
{
|
||||
GIVEN {
|
||||
ASSUME(gMovesInfo[MOVE_YAWN].effect == EFFECT_YAWN);
|
||||
ASSUME(gMovesInfo[MOVE_SUBSTITUTE].effect == EFFECT_SUBSTITUTE);
|
||||
ASSUME(!gMovesInfo[MOVE_DREAM_EATER].ignoresSubstitute);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_YAWN); MOVE(player, MOVE_SUBSTITUTE); }
|
||||
TURN { }
|
||||
TURN { MOVE(opponent, MOVE_DREAM_EATER); }
|
||||
} SCENE {
|
||||
MESSAGE("The opposing Wobbuffet used Dream Eater!");
|
||||
MESSAGE("Wobbuffet wasn't affected!");
|
||||
}
|
||||
}
|
||||
#else
|
||||
SINGLE_BATTLE_TEST("Dream Eater works if the target is behind a Substitute (Gen 5+)")
|
||||
{
|
||||
s16 damage;
|
||||
s16 healed;
|
||||
GIVEN {
|
||||
ASSUME(gMovesInfo[MOVE_YAWN].effect == EFFECT_YAWN);
|
||||
ASSUME(gMovesInfo[MOVE_SUBSTITUTE].effect == EFFECT_SUBSTITUTE);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET) { HP(1); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_YAWN); MOVE(player, MOVE_SUBSTITUTE); }
|
||||
TURN { }
|
||||
TURN { MOVE(opponent, MOVE_DREAM_EATER); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_DREAM_EATER, opponent);
|
||||
HP_BAR(player, captureDamage: &damage);
|
||||
HP_BAR(opponent, captureDamage: &healed);
|
||||
} THEN {
|
||||
EXPECT_MUL_EQ(damage, Q_4_12(-1.0/2.0), healed);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -1,9 +1,6 @@
|
||||
#include "global.h"
|
||||
#include "test/battle.h"
|
||||
|
||||
TO_DO_BATTLE_TEST("Reflect Type fails if the user is Terastallized");
|
||||
TO_DO_BATTLE_TEST("Reflect Type succeeds against a Terastallized target and copies its Tera type");
|
||||
|
||||
SINGLE_BATTLE_TEST("Reflect Type does not affect any of Arceus' forms")
|
||||
{
|
||||
u32 j;
|
||||
@ -86,7 +83,7 @@ SINGLE_BATTLE_TEST("Reflect Type does not affect any of Silvally's forms")
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Reflect Type does not affect Pokémon with no types")
|
||||
SINGLE_BATTLE_TEST("Reflect Type fails if the target has no types")
|
||||
{
|
||||
GIVEN {
|
||||
ASSUME(gSpeciesInfo[SPECIES_ARCANINE].types[0] == TYPE_FIRE);
|
||||
@ -151,7 +148,7 @@ SINGLE_BATTLE_TEST("Reflect Type copies a target's pure type")
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Reflect Type defaults to Normal type for the user's types[0] and types[1] if the target only has a 3rd type")
|
||||
SINGLE_BATTLE_TEST("Reflect Type defaults to Normal type for the user's 1st and 2nd types if the target only has a 3rd type")
|
||||
{
|
||||
GIVEN {
|
||||
ASSUME(gSpeciesInfo[SPECIES_WOBBUFFET].types[0] == TYPE_PSYCHIC);
|
||||
@ -184,3 +181,38 @@ SINGLE_BATTLE_TEST("Reflect Type defaults to Normal type for the user's types[0]
|
||||
EXPECT_EQ(player->types[2], TYPE_GRASS);
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Reflect Type fails if the user is Terastallized")
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_ARCANINE) { TeraType(TYPE_NORMAL); }
|
||||
OPPONENT(SPECIES_POLIWRATH);
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_REFLECT_TYPE, gimmick: GIMMICK_TERA); }
|
||||
} SCENE {
|
||||
MESSAGE("Arcanine used Reflect Type!");
|
||||
MESSAGE("But it failed!");
|
||||
} THEN {
|
||||
EXPECT_EQ(player->types[0], TYPE_FIRE);
|
||||
EXPECT_EQ(player->types[1], TYPE_FIRE);
|
||||
EXPECT_EQ(player->types[2], TYPE_MYSTERY);
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Reflect Type succeeds against a Terastallized target and copies its Tera type")
|
||||
{
|
||||
GIVEN {
|
||||
ASSUME(gSpeciesInfo[SPECIES_POLIWRATH].types[0] != TYPE_NORMAL);
|
||||
ASSUME(gSpeciesInfo[SPECIES_POLIWRATH].types[1] != TYPE_NORMAL);
|
||||
PLAYER(SPECIES_ARCANINE) { TeraType(TYPE_NORMAL); }
|
||||
OPPONENT(SPECIES_POLIWRATH);
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_TACKLE, gimmick: GIMMICK_TERA); MOVE(opponent, MOVE_REFLECT_TYPE); }
|
||||
} SCENE {
|
||||
MESSAGE("The opposing Poliwrath used Reflect Type!");
|
||||
} THEN {
|
||||
EXPECT_EQ(opponent->types[0], TYPE_NORMAL);
|
||||
EXPECT_EQ(opponent->types[1], TYPE_NORMAL);
|
||||
EXPECT_EQ(opponent->types[2], TYPE_NORMAL);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user