2025-10-03 15:04:56 +02:00

84 lines
3.3 KiB
C

#include "global.h"
#include "test/battle.h"
ASSUMPTIONS
{
ASSUME(GetMoveEffect(MOVE_ENDURE) == EFFECT_ENDURE);
}
TO_DO_BATTLE_TEST("Endure allows the user to survive any attack with 1 HP left");
SINGLE_BATTLE_TEST("Endure does not prevent multiple hits and stat changes occur at the end of the turn")
{
GIVEN {
ASSUME(GetMoveEffect(MOVE_SCALE_SHOT) == EFFECT_MULTI_HIT);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET) { HP(1); }
} WHEN {
TURN { MOVE(opponent, MOVE_ENDURE); MOVE(player, MOVE_SCALE_SHOT); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_ENDURE, opponent);
ANIMATION(ANIM_TYPE_MOVE, MOVE_SCALE_SHOT, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_SCALE_SHOT, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_SCALE_SHOT, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_SCALE_SHOT, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_SCALE_SHOT, player);
MESSAGE("The Pokémon was hit 5 time(s)!");
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player);
MESSAGE("Wobbuffet's Defense fell!");
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player);
MESSAGE("Wobbuffet's Speed rose!");
}
}
DOUBLE_BATTLE_TEST("Endure is not transferred to a mon that is switched in due to Eject Button")
{
GIVEN {
PLAYER(SPECIES_WOBBUFFET);
PLAYER(SPECIES_WYNAUT);
OPPONENT(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WYNAUT) { HP(1); Item(ITEM_EJECT_BUTTON); }
OPPONENT(SPECIES_SQUIRTLE) { HP(1); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
TURN {
MOVE(opponentRight, MOVE_ENDURE);
MOVE(playerLeft, MOVE_POUND, target: opponentRight);
SEND_OUT(opponentRight, 2);
MOVE(playerRight, MOVE_POUND, target: opponentRight);
SEND_OUT(opponentRight, 3);
}
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_ENDURE, opponentRight);
ANIMATION(ANIM_TYPE_MOVE, MOVE_POUND, playerLeft);
MESSAGE("The opposing Wynaut endured the hit!");
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponentRight);
ANIMATION(ANIM_TYPE_MOVE, MOVE_POUND, playerRight);
NOT MESSAGE("The opposing Squirtle endured the hit!");
}
}
SINGLE_BATTLE_TEST("Endure only lasts for one turn")
{
GIVEN {
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET) { HP(1); }
} WHEN {
TURN { MOVE(opponent, MOVE_ENDURE); MOVE(player, MOVE_POUND); }
TURN { MOVE(player, MOVE_POUND); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_ENDURE, opponent);
ANIMATION(ANIM_TYPE_MOVE, MOVE_POUND, player);
MESSAGE("The opposing Wobbuffet endured the hit!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_POUND, player);
NOT MESSAGE("The opposing Wobbuffet endured the hit!");
}
}
TO_DO_BATTLE_TEST("Endure's success rate decreases for every consecutively used turn");
TO_DO_BATTLE_TEST("Endure uses the same counter as Protect");
TO_DO_BATTLE_TEST("Endure doesn't trigger effects that require damage to be done to the Pokémon (Gen 2-4)"); // Eg. Rough Skin
TO_DO_BATTLE_TEST("Endure triggers effects that require damage to be done to the Pokémon (Gen 5+)"); // Eg. Rough Skin
TO_DO_BATTLE_TEST("Endure doesn't protect against Future Sight (Gen 2-4)");
TO_DO_BATTLE_TEST("Endure protects against Future Sight (Gen 5+)");