Add tests for Hadron Engine and Psyblade (#9314)
This commit is contained in:
parent
484eef4143
commit
d2ae1175c4
@ -1,4 +1,45 @@
|
||||
#include "global.h"
|
||||
#include "test/battle.h"
|
||||
|
||||
TO_DO_BATTLE_TEST("TODO: Write Hadron Engine (Ability) test titles")
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,4 +1,37 @@
|
||||
#include "global.h"
|
||||
#include "test/battle.h"
|
||||
|
||||
TO_DO_BATTLE_TEST("TODO: Write Psyblade (Move Effect) test titles")
|
||||
ASSUMPTIONS
|
||||
{
|
||||
ASSUME(GetMoveEffect(MOVE_PSYBLADE) == EFFECT_PSYBLADE);
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Psyblade's power increases by 50% on Electric Terrain even if the user is not grounded", s16 damage)
|
||||
{
|
||||
bool32 terrain, airBalloon;
|
||||
|
||||
PARAMETRIZE { terrain = FALSE; airBalloon = FALSE; }
|
||||
PARAMETRIZE { terrain = TRUE; airBalloon = FALSE; }
|
||||
PARAMETRIZE { terrain = FALSE; airBalloon = TRUE; }
|
||||
PARAMETRIZE { terrain = TRUE; airBalloon = TRUE; }
|
||||
|
||||
GIVEN {
|
||||
ASSUME(gItemsInfo[ITEM_AIR_BALLOON].holdEffect == HOLD_EFFECT_AIR_BALLOON);
|
||||
ASSUME(GetMoveEffect(MOVE_ELECTRIC_TERRAIN) == EFFECT_ELECTRIC_TERRAIN);
|
||||
ASSUME(GetMoveEffect(MOVE_PSYBLADE) == EFFECT_PSYBLADE);
|
||||
PLAYER(SPECIES_SLOWKING) { Moves(MOVE_ELECTRIC_TERRAIN, MOVE_PSYBLADE); Item(airBalloon ? ITEM_AIR_BALLOON : ITEM_NONE); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
if (terrain)
|
||||
TURN { MOVE(player, MOVE_ELECTRIC_TERRAIN); }
|
||||
TURN { MOVE(player, MOVE_PSYBLADE); }
|
||||
} SCENE {
|
||||
if (terrain)
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_ELECTRIC_TERRAIN, player);
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_PSYBLADE, player);
|
||||
HP_BAR(opponent, captureDamage: &results[i].damage);
|
||||
} FINALLY {
|
||||
EXPECT_MUL_EQ(results[0].damage, Q_4_12(1.5), results[1].damage);
|
||||
EXPECT_MUL_EQ(results[2].damage, Q_4_12(1.5), results[3].damage);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user