107 lines
4.0 KiB
C
107 lines
4.0 KiB
C
#include "global.h"
|
|
#include "test/battle.h"
|
|
|
|
ASSUMPTIONS
|
|
{
|
|
ASSUME(gItemsInfo[ITEM_STARF_BERRY].holdEffect == HOLD_EFFECT_RANDOM_STAT_UP);
|
|
}
|
|
|
|
SINGLE_BATTLE_TEST("Starf Berry randomly raises the holder's Attack, Defense, Sp. Atk, Sp. Def, or Speed by two stages")
|
|
{
|
|
PASSES_RANDOMLY(1, 5, RNG_RANDOM_STAT_UP);
|
|
GIVEN {
|
|
PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_STARF_BERRY); HP(100); MaxHP(400); }
|
|
OPPONENT(SPECIES_WOBBUFFET);
|
|
} WHEN {
|
|
TURN {}
|
|
} SCENE {
|
|
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player);
|
|
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player);
|
|
MESSAGE("Using Starf Berry, the Attack of Wobbuffet sharply rose!");
|
|
} THEN {
|
|
EXPECT_EQ(player->statStages[STAT_ATK], DEFAULT_STAT_STAGE + 2);
|
|
}
|
|
}
|
|
|
|
SINGLE_BATTLE_TEST("Starf Berry randomly raises the holder's Attack, Defense, Sp. Atk, Sp. Def, or Speed by two stages when the holder's HP drop to 1/4 or below")
|
|
{
|
|
GIVEN {
|
|
PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_STARF_BERRY); HP(101); MaxHP(400); }
|
|
OPPONENT(SPECIES_WOBBUFFET);
|
|
} WHEN {
|
|
TURN { MOVE(opponent, MOVE_SCRATCH); }
|
|
} SCENE {
|
|
ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent);
|
|
HP_BAR(player);
|
|
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player);
|
|
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player);
|
|
} THEN {
|
|
int boostedStats = 0;
|
|
EXPECT_EQ(player->item, ITEM_NONE);
|
|
EXPECT_LE(player->hp * 4, player->maxHP);
|
|
for (int stat = STAT_ATK; stat < NUM_STATS; stat++)
|
|
{
|
|
if (player->statStages[stat] == DEFAULT_STAT_STAGE + 2)
|
|
boostedStats++;
|
|
else
|
|
EXPECT_EQ(player->statStages[stat], DEFAULT_STAT_STAGE);
|
|
}
|
|
EXPECT_EQ(boostedStats, 1);
|
|
}
|
|
}
|
|
|
|
SINGLE_BATTLE_TEST("Starf Berry randomly raises the holder's Attack, Defense, Sp. Atk, Sp. Def, or Speed by two stages when the holder's HP drop to 1/2 or below if it has Gluttony")
|
|
{
|
|
GIVEN {
|
|
PLAYER(SPECIES_MUNCHLAX) { Item(ITEM_STARF_BERRY); HP(201); MaxHP(400); Ability(ABILITY_GLUTTONY); }
|
|
OPPONENT(SPECIES_WOBBUFFET);
|
|
} WHEN {
|
|
TURN { MOVE(opponent, MOVE_SCRATCH); }
|
|
} SCENE {
|
|
ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent);
|
|
HP_BAR(player);
|
|
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player);
|
|
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player);
|
|
} THEN {
|
|
int boostedStats = 0;
|
|
EXPECT_EQ(player->item, ITEM_NONE);
|
|
EXPECT_LE(player->hp * 2, player->maxHP);
|
|
for (int stat = STAT_ATK; stat < NUM_STATS; stat++)
|
|
{
|
|
if (player->statStages[stat] == DEFAULT_STAT_STAGE + 2)
|
|
boostedStats++;
|
|
else
|
|
EXPECT_EQ(player->statStages[stat], DEFAULT_STAT_STAGE);
|
|
}
|
|
EXPECT_EQ(boostedStats, 1);
|
|
}
|
|
}
|
|
|
|
SINGLE_BATTLE_TEST("Starf Berry randomly raises the holder's Attack, Defense, Sp. Atk, Sp. Def, or Speed by four stages when the holder's HP drop to 1/4 or below if it has Ripen")
|
|
{
|
|
GIVEN {
|
|
PLAYER(SPECIES_FLAPPLE) { Item(ITEM_STARF_BERRY); HP(101); MaxHP(400); Ability(ABILITY_RIPEN); }
|
|
OPPONENT(SPECIES_WOBBUFFET);
|
|
} WHEN {
|
|
TURN { MOVE(opponent, MOVE_SCRATCH); }
|
|
} SCENE {
|
|
ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent);
|
|
HP_BAR(player);
|
|
ABILITY_POPUP(player, ABILITY_RIPEN);
|
|
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player);
|
|
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player);
|
|
} THEN {
|
|
int boostedStats = 0;
|
|
EXPECT_EQ(player->item, ITEM_NONE);
|
|
EXPECT_LE(player->hp * 4, player->maxHP);
|
|
for (int stat = STAT_ATK; stat < NUM_STATS; stat++)
|
|
{
|
|
if (player->statStages[stat] == DEFAULT_STAT_STAGE + 4)
|
|
boostedStats++;
|
|
else
|
|
EXPECT_EQ(player->statStages[stat], DEFAULT_STAT_STAGE);
|
|
}
|
|
EXPECT_EQ(boostedStats, 1);
|
|
}
|
|
}
|