76 lines
2.2 KiB
C

#include "global.h"
#include "test/battle.h"
TO_DO_BATTLE_TEST("Struggle deals recoil 1/4 of damage dealt (Gen 2-3)")
SINGLE_BATTLE_TEST("Struggle deals recoil 1/4 of user's hp (Gen 4+)")
{
ASSUME(GetMoveEffect(MOVE_STRUGGLE) == EFFECT_STRUGGLE);
s16 recoil;
u32 atkStat = 0;
u32 hpStat = 0;
PARAMETRIZE { atkStat = 100; hpStat = 200; }
PARAMETRIZE { atkStat = 50; hpStat = 200; }
PARAMETRIZE { atkStat = 100; hpStat = 300; }
GIVEN {
PLAYER(SPECIES_WOBBUFFET) { MaxHP(hpStat); HP(hpStat); Attack(atkStat); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN { MOVE(player, MOVE_STRUGGLE); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_STRUGGLE, player);
HP_BAR(player, captureDamage: &recoil);
} THEN {
EXPECT_MUL_EQ(hpStat, Q_4_12(0.25), recoil);
}
}
SINGLE_BATTLE_TEST("Struggle can hit ghost types")
{
ASSUME(GetSpeciesType(SPECIES_DRIFBLIM, 0) == TYPE_GHOST);
s16 damage;
GIVEN {
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_DRIFBLIM);
} WHEN {
TURN { MOVE(player, MOVE_STRUGGLE); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_STRUGGLE, player);
HP_BAR(opponent, captureDamage: &damage);
} THEN {
EXPECT_NE(0, damage);
}
}
SINGLE_BATTLE_TEST("Struggle does not receive normal-type STAB")
{
// Compare with Cut, which does receive normal-type STAB
ASSUME(GetSpeciesType(SPECIES_ZANGOOSE, 0) == GetMoveType(MOVE_STRUGGLE));
ASSUME(GetMovePower(MOVE_CUT) == GetMovePower(MOVE_STRUGGLE));
ASSUME(GetMoveCategory(MOVE_CUT) == GetMoveCategory(MOVE_STRUGGLE));
ASSUME(GetMoveType(MOVE_CUT) == GetMoveType(MOVE_STRUGGLE));
s16 cutDamage;
s16 struggleDamage;
GIVEN {
PLAYER(SPECIES_ZANGOOSE);
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN { MOVE(player, MOVE_CUT); }
TURN { MOVE(player, MOVE_STRUGGLE); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_CUT, player);
HP_BAR(opponent, captureDamage: &cutDamage);
ANIMATION(ANIM_TYPE_MOVE, MOVE_STRUGGLE, player);
HP_BAR(opponent, captureDamage: &struggleDamage);
} THEN {
EXPECT_MUL_EQ(struggleDamage, Q_4_12(1.5), cutDamage);
}
}