76 lines
2.2 KiB
C
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);
|
|
}
|
|
}
|