60 lines
2.2 KiB
C
60 lines
2.2 KiB
C
#include "global.h"
|
|
#include "test/battle.h"
|
|
|
|
ASSUMPTIONS
|
|
{
|
|
ASSUME(GetMoveEffect(MOVE_SPEED_SWAP) == EFFECT_SPEED_SWAP);
|
|
}
|
|
|
|
SINGLE_BATTLE_TEST("Speed Swap swaps user and target's speed stats")
|
|
{
|
|
GIVEN {
|
|
PLAYER(SPECIES_WOBBUFFET) { Speed(6); }
|
|
OPPONENT(SPECIES_WOBBUFFET) { Speed(10); }
|
|
}WHEN {
|
|
TURN { MOVE(opponent, MOVE_SCRATCH); MOVE(player, MOVE_SPEED_SWAP); }
|
|
TURN { MOVE(opponent, MOVE_SCRATCH); MOVE(player, MOVE_SCRATCH); }
|
|
} SCENE {
|
|
// Turn 1
|
|
ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent);
|
|
ANIMATION(ANIM_TYPE_MOVE, MOVE_SPEED_SWAP, player);
|
|
// Turn 2
|
|
ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player);
|
|
ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent);
|
|
} THEN {
|
|
EXPECT_EQ(player->speed, 10);
|
|
EXPECT_EQ(opponent->speed, 6);
|
|
}
|
|
}
|
|
|
|
SINGLE_BATTLE_TEST("Speed Swap doesn't swap user and target's speed modifiers")
|
|
{
|
|
u32 species, move;
|
|
enum Ability ability;
|
|
PARAMETRIZE { species = SPECIES_WOBBUFFET; ability = ABILITY_TELEPATHY; move = MOVE_ROCK_POLISH; } // x2.0
|
|
PARAMETRIZE { species = SPECIES_PSYDUCK; ability = ABILITY_SWIFT_SWIM; move = MOVE_RAIN_DANCE; } // x2.0
|
|
GIVEN {
|
|
ASSUME(GetMoveEffect(MOVE_ROCK_POLISH) == EFFECT_SPEED_UP_2);
|
|
ASSUME(GetMoveEffect(MOVE_RAIN_DANCE) == EFFECT_RAIN_DANCE);
|
|
PLAYER(SPECIES_WOBBUFFET) { Speed(8); }
|
|
OPPONENT(species) { Speed(10); Ability(ability); }
|
|
}WHEN {
|
|
TURN { MOVE(opponent, move); MOVE(player, MOVE_SPEED_SWAP); }
|
|
TURN { MOVE(opponent, MOVE_SCRATCH); MOVE(player, MOVE_SCRATCH); }
|
|
} SCENE {
|
|
// Turn 1
|
|
ANIMATION(ANIM_TYPE_MOVE, move, opponent);
|
|
ANIMATION(ANIM_TYPE_MOVE, MOVE_SPEED_SWAP, player);
|
|
// Turn 2
|
|
ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent); // Opponent is still first
|
|
ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player);
|
|
} THEN {
|
|
EXPECT_EQ(player->speed, 10);
|
|
EXPECT_EQ(opponent->speed, 8);
|
|
if (move == MOVE_ROCK_POLISH) {
|
|
EXPECT_EQ(player->statStages[STAT_SPEED], DEFAULT_STAT_STAGE);
|
|
EXPECT_EQ(opponent->statStages[STAT_SPEED], DEFAULT_STAT_STAGE + 2);
|
|
}
|
|
}
|
|
}
|