pokeemmo/test/battle/ability/power_construct.c
2025-10-31 19:41:46 +01:00

58 lines
1.9 KiB
C

#include "global.h"
#include "test/battle.h"
TO_DO_BATTLE_TEST("TODO: Write Power Construct (Ability) test titles")
SINGLE_BATTLE_TEST("Power Construct switches Zygarde's form when HP is below half")
{
u16 baseSpecies;
PARAMETRIZE { baseSpecies = SPECIES_ZYGARDE_10_POWER_CONSTRUCT; }
PARAMETRIZE { baseSpecies = SPECIES_ZYGARDE_50_POWER_CONSTRUCT; }
GIVEN {
PLAYER(baseSpecies)
{
Ability(ABILITY_POWER_CONSTRUCT);
HP((GetMonData(&PLAYER_PARTY[0], MON_DATA_MAX_HP) / 2) + 1);
}
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN { MOVE(opponent, MOVE_SCRATCH); MOVE(player, MOVE_CELEBRATE); }
} SCENE {
MESSAGE("You sense the presence of many!");
ABILITY_POPUP(player, ABILITY_POWER_CONSTRUCT);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_POWER_CONSTRUCT, player);
} THEN {
EXPECT_EQ(player->species, SPECIES_ZYGARDE_COMPLETE);
}
}
WILD_BATTLE_TEST("Power Construct Zygarde reverts to its original form upon catching")
{
u16 baseSpecies;
PARAMETRIZE { baseSpecies = SPECIES_ZYGARDE_10_POWER_CONSTRUCT; }
PARAMETRIZE { baseSpecies = SPECIES_ZYGARDE_50_POWER_CONSTRUCT; }
GIVEN {
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(baseSpecies)
{
Ability(ABILITY_POWER_CONSTRUCT);
HP((GetMonData(&OPPONENT_PARTY[0], MON_DATA_MAX_HP) / 2) + 1);
}
} WHEN {
TURN { MOVE(player, MOVE_SCRATCH); }
TURN { USE_ITEM(player, ITEM_MASTER_BALL); }
} SCENE {
// Turn 1
MESSAGE("You sense the presence of many!");
ABILITY_POPUP(opponent, ABILITY_POWER_CONSTRUCT);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_POWER_CONSTRUCT, opponent);
// Turn 2
ANIMATION(ANIM_TYPE_SPECIAL, B_ANIM_BALL_THROW, player);
} THEN {
EXPECT_EQ(GetMonData(&gPlayerParty[1], MON_DATA_SPECIES), baseSpecies);
}
}