120 lines
3.7 KiB
C
120 lines
3.7 KiB
C
#include "global.h"
|
|
#include "test/battle.h"
|
|
|
|
ASSUMPTIONS
|
|
{
|
|
ASSUME(gItemsInfo[ITEM_NORMAL_GEM].holdEffect == HOLD_EFFECT_GEMS);
|
|
}
|
|
|
|
SINGLE_BATTLE_TEST("Gem is consumed when it corresponds to the type of a move")
|
|
{
|
|
GIVEN {
|
|
PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_NORMAL_GEM); };
|
|
OPPONENT(SPECIES_WOBBUFFET);
|
|
} WHEN {
|
|
TURN { MOVE(player, MOVE_EMBER); }
|
|
TURN { MOVE(player, MOVE_SCRATCH); }
|
|
} SCENE {
|
|
NONE_OF {
|
|
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player);
|
|
MESSAGE("The Fire Gem strengthened Wobbuffet's power!");
|
|
}
|
|
ANIMATION(ANIM_TYPE_MOVE, MOVE_EMBER, player);
|
|
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player);
|
|
MESSAGE("The Normal Gem strengthened Wobbuffet's power!");
|
|
ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player);
|
|
}
|
|
}
|
|
|
|
SINGLE_BATTLE_TEST("Gem is not consumed when using Struggle", s16 damage)
|
|
{
|
|
u32 item = 0;
|
|
|
|
PARAMETRIZE { item = ITEM_NONE; }
|
|
PARAMETRIZE { item = ITEM_NORMAL_GEM; }
|
|
|
|
GIVEN {
|
|
if (item != ITEM_NONE) {
|
|
ASSUME(GetItemHoldEffect(item) == HOLD_EFFECT_GEMS);
|
|
ASSUME(GetItemSecondaryId(item) == GetMoveType(MOVE_STRUGGLE));
|
|
}
|
|
PLAYER(SPECIES_WOBBUFFET) { Item(item); }
|
|
OPPONENT(SPECIES_WOBBUFFET);
|
|
} WHEN {
|
|
TURN { MOVE(player, MOVE_STRUGGLE); }
|
|
} SCENE {
|
|
NONE_OF {
|
|
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player);
|
|
MESSAGE("The Normal Gem strengthened Wobbuffet's power!");
|
|
}
|
|
ANIMATION(ANIM_TYPE_MOVE, MOVE_STRUGGLE, player);
|
|
HP_BAR(opponent, captureDamage: &results[i].damage);
|
|
} FINALLY {
|
|
EXPECT_EQ(results[0].damage, results[1].damage);
|
|
}
|
|
}
|
|
|
|
SINGLE_BATTLE_TEST("Gem boost is only applied once")
|
|
{
|
|
s16 boostedHit;
|
|
s16 normalHit;
|
|
|
|
GIVEN {
|
|
PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_NORMAL_GEM); };
|
|
OPPONENT(SPECIES_WOBBUFFET);
|
|
} WHEN {
|
|
TURN { MOVE(player, MOVE_SCRATCH); }
|
|
TURN { MOVE(player, MOVE_SCRATCH); }
|
|
} SCENE {
|
|
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player);
|
|
MESSAGE("The Normal Gem strengthened Wobbuffet's power!");
|
|
ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player);
|
|
HP_BAR(opponent, captureDamage: &boostedHit);
|
|
ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player);
|
|
HP_BAR(opponent, captureDamage: &normalHit);
|
|
} THEN {
|
|
if (I_GEM_BOOST_POWER >= GEN_6)
|
|
EXPECT_MUL_EQ(normalHit, Q_4_12(1.3), boostedHit);
|
|
else
|
|
EXPECT_MUL_EQ(normalHit, Q_4_12(1.5), boostedHit);
|
|
}
|
|
}
|
|
|
|
SINGLE_BATTLE_TEST("Gem modifier is used for all hits of Multi Hit Moves")
|
|
{
|
|
s16 firstHit;
|
|
s16 secondHit;
|
|
|
|
GIVEN {
|
|
PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_NORMAL_GEM); };
|
|
OPPONENT(SPECIES_WOBBUFFET);
|
|
} WHEN {
|
|
TURN {
|
|
MOVE(player, MOVE_DOUBLE_HIT);
|
|
}
|
|
} SCENE {
|
|
ANIMATION(ANIM_TYPE_MOVE, MOVE_DOUBLE_HIT, player);
|
|
HP_BAR(opponent, captureDamage: &firstHit);
|
|
ANIMATION(ANIM_TYPE_MOVE, MOVE_DOUBLE_HIT, player);
|
|
HP_BAR(opponent, captureDamage: &secondHit);
|
|
} THEN {
|
|
EXPECT_EQ(firstHit, secondHit);
|
|
}
|
|
}
|
|
|
|
SINGLE_BATTLE_TEST("Gem is consumed if the move type is changed")
|
|
{
|
|
GIVEN {
|
|
PLAYER(SPECIES_DELCATTY) { Ability(ABILITY_NORMALIZE); Item(ITEM_NORMAL_GEM); };
|
|
OPPONENT(SPECIES_WOBBUFFET);
|
|
} WHEN {
|
|
TURN {
|
|
MOVE(player, MOVE_FEINT_ATTACK);
|
|
}
|
|
} SCENE {
|
|
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player);
|
|
MESSAGE("The Normal Gem strengthened Delcatty's power!");
|
|
ANIMATION(ANIM_TYPE_MOVE, MOVE_FEINT_ATTACK, player);
|
|
}
|
|
}
|