sovereignx/test/battle/move_effect/stealth_rock.c
sneed 87e2526665
Add switching message macros for tests (#4717)
* Add switching message macros

* Add test
2024-06-03 19:59:28 -04:00

75 lines
2.8 KiB
C

#include "global.h"
#include "test/battle.h"
ASSUMPTIONS
{
ASSUME(gMovesInfo[MOVE_STEALTH_ROCK].effect == EFFECT_STEALTH_ROCK);
}
SINGLE_BATTLE_TEST("Stealth Rock damage on switch in based on typing")
{
u32 species, divisor;
PARAMETRIZE { species = SPECIES_CHARIZARD; divisor = 2; } // Fire / Flying
PARAMETRIZE { species = SPECIES_PIDGEOT; divisor = 4; } // Flying
PARAMETRIZE { species = SPECIES_RATICATE; divisor = 8; } // Normal dmg
PARAMETRIZE { species = SPECIES_GOLEM; divisor = 16; } // Ground not very effective
PARAMETRIZE { species = SPECIES_STEELIX; divisor = 32; } // Ground/Steel not very effective
GIVEN {
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);
OPPONENT(species);
} WHEN {
TURN { MOVE(player, MOVE_STEALTH_ROCK); }
TURN { SWITCH(opponent, 1); }
} SCENE {
s32 maxHP = GetMonData(&OPPONENT_PARTY[1], MON_DATA_MAX_HP);
ANIMATION(ANIM_TYPE_MOVE, MOVE_STEALTH_ROCK, player);
// MESSAGE("2 sent out species!");
HP_BAR(opponent, damage: maxHP / divisor);
}
}
SINGLE_BATTLE_TEST("Stealth Rock damages the correct pokemon when Eject Button is triggered")
{
GIVEN {
PLAYER(SPECIES_METAPOD) { Item(ITEM_EJECT_BUTTON); }
PLAYER(SPECIES_METAPOD);
OPPONENT(SPECIES_JOLTEON);
} WHEN {
TURN { MOVE(opponent, MOVE_STEALTH_ROCK); MOVE(player, MOVE_HARDEN); }
TURN { MOVE(opponent, MOVE_QUICK_ATTACK); MOVE(player, MOVE_HARDEN); SEND_OUT(player, 1); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_STEALTH_ROCK, opponent);
ANIMATION(ANIM_TYPE_MOVE, MOVE_HARDEN, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_QUICK_ATTACK, opponent);
NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_HARDEN, player);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player);
SEND_IN_MESSAGE("Metapod");
HP_BAR(player);
} THEN {
EXPECT_EQ(opponent->hp, opponent->maxHP);
}
}
DOUBLE_BATTLE_TEST("Stealth Rock damages the correct pokemon when Eject Button is triggered in double battle")
{
GIVEN {
PLAYER(SPECIES_METAPOD) { Item(ITEM_EJECT_BUTTON); }
PLAYER(SPECIES_METAPOD) { Item(ITEM_EJECT_BUTTON); }
PLAYER(SPECIES_METAPOD);
OPPONENT(SPECIES_JOLTEON);
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN { MOVE(opponentLeft, MOVE_STEALTH_ROCK); MOVE(opponentRight, MOVE_TACKLE, target: playerLeft); SEND_OUT(playerLeft, 2); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_STEALTH_ROCK, opponentLeft);
ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentRight);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, playerLeft);
SEND_IN_MESSAGE("Metapod");
HP_BAR(playerLeft);
} THEN {
EXPECT_EQ(opponentLeft->hp, opponentLeft->maxHP);
}
}