pokeemerald-expansion/test/battle/ability/hadron_engine.c

46 lines
1.9 KiB
C

#include "global.h"
#include "test/battle.h"
SINGLE_BATTLE_TEST("Hadron Engine creates Electric Terrain when entering the battle")
{
GIVEN {
PLAYER(SPECIES_MIRAIDON) { Ability(ABILITY_HADRON_ENGINE); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN {}
} SCENE {
ABILITY_POPUP(player, ABILITY_HADRON_ENGINE);
MESSAGE("An electric current ran across the battlefield!");
}
}
SINGLE_BATTLE_TEST("Hadron Engine boosts the Pokemon's Special Attack on Electric Terrain even if not grounded", s16 damage)
{
bool32 overrideTerrain, airBalloon;
PARAMETRIZE { airBalloon = FALSE; overrideTerrain = TRUE; }
PARAMETRIZE { airBalloon = FALSE; overrideTerrain = FALSE; }
PARAMETRIZE { airBalloon = TRUE; overrideTerrain = TRUE; }
PARAMETRIZE { airBalloon = TRUE; overrideTerrain = FALSE; }
GIVEN {
ASSUME(gItemsInfo[ITEM_AIR_BALLOON].holdEffect == HOLD_EFFECT_AIR_BALLOON);
ASSUME(GetMoveEffect(MOVE_GRASSY_TERRAIN) == EFFECT_GRASSY_TERRAIN);
ASSUME(GetMoveCategory(MOVE_POWER_GEM) == DAMAGE_CATEGORY_SPECIAL);
PLAYER(SPECIES_MIRAIDON) { Ability(ABILITY_HADRON_ENGINE); Moves(MOVE_POWER_GEM, MOVE_CELEBRATE); Item(airBalloon ? ITEM_AIR_BALLOON : ITEM_NONE); Speed(1); }
OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_GRASSY_TERRAIN, MOVE_CELEBRATE); Speed(2); }
} WHEN {
if (overrideTerrain)
TURN { MOVE(opponent, MOVE_GRASSY_TERRAIN); }
TURN { MOVE(player, MOVE_POWER_GEM); }
} SCENE {
if (overrideTerrain)
ANIMATION(ANIM_TYPE_MOVE, MOVE_GRASSY_TERRAIN, opponent);
ANIMATION(ANIM_TYPE_MOVE, MOVE_POWER_GEM, player);
HP_BAR(opponent, captureDamage: &results[i].damage);
} FINALLY {
EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.3333), results[1].damage);
EXPECT_MUL_EQ(results[2].damage, Q_4_12(1.3333), results[3].damage);
}
}