2025-05-26 10:41:11 +02:00

102 lines
4.4 KiB
C

#include "global.h"
#include "test/battle.h"
SINGLE_BATTLE_TEST("Unburden doubles speed once user uses item")
{
GIVEN {
ASSUME(GetItemHoldEffect(ITEM_GRASSY_SEED) == HOLD_EFFECT_SEEDS);
ASSUME(GetMoveEffect(MOVE_U_TURN) == EFFECT_HIT_ESCAPE);
PLAYER(SPECIES_DRIFBLIM) { Ability(ABILITY_UNBURDEN); Item(ITEM_GRASSY_SEED); Speed(5); }
OPPONENT(SPECIES_WOBBUFFET) { Speed(7); }
OPPONENT(SPECIES_RILLABOOM) { Speed(7); Ability(ABILITY_GRASSY_SURGE); }
} WHEN {
TURN { MOVE(opponent, MOVE_U_TURN); SEND_OUT(opponent, 1); }
TURN { }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_U_TURN, opponent);
ABILITY_POPUP(opponent, ABILITY_GRASSY_SURGE);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player);
// Turn 2, doubled speed
ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent);
}
}
SINGLE_BATTLE_TEST("Unburden doubles speed once user gets their item knocked off")
{
GIVEN {
ASSUME(GetMoveEffect(MOVE_KNOCK_OFF) == EFFECT_KNOCK_OFF);
PLAYER(SPECIES_DRIFBLIM) { Ability(ABILITY_UNBURDEN); Item(ITEM_POTION); Speed(5); }
OPPONENT(SPECIES_WOBBUFFET) { Speed(7); }
} WHEN {
TURN { MOVE(opponent, MOVE_KNOCK_OFF); }
TURN { }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_KNOCK_OFF, opponent);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ITEM_KNOCKOFF, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player);
// Turn 2, doubled speed
ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent);
}
}
SINGLE_BATTLE_TEST("Unburden doesn't activate when item is consumed in Neutralizing Gas")
{
GIVEN {
ASSUME(GetMoveEffect(MOVE_U_TURN) == EFFECT_HIT_ESCAPE);
ASSUME(GetMoveEffect(MOVE_KNOCK_OFF) == EFFECT_KNOCK_OFF);
PLAYER(SPECIES_DRIFBLIM) { Ability(ABILITY_UNBURDEN); Item(ITEM_POTION); Speed(5); }
OPPONENT(SPECIES_WEEZING) { Speed(7); Ability(ABILITY_NEUTRALIZING_GAS); }
OPPONENT(SPECIES_WOBBUFFET) { Speed(7); }
} WHEN {
TURN { MOVE(opponent, MOVE_KNOCK_OFF); }
TURN { MOVE(opponent, MOVE_U_TURN); SEND_OUT(opponent, 1); }
TURN { }
} SCENE {
ABILITY_POPUP(opponent, ABILITY_NEUTRALIZING_GAS);
ANIMATION(ANIM_TYPE_MOVE, MOVE_KNOCK_OFF, opponent);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ITEM_KNOCKOFF, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player);
// Turn 2, no speed increase
ANIMATION(ANIM_TYPE_MOVE, MOVE_U_TURN, opponent);
MESSAGE("The effects of the neutralizing gas wore off!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player);
// Turn 3, no speed increase
ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent);
ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player);
}
}
SINGLE_BATTLE_TEST("Unburden doubling speed effect is ignored by Neutralizing Gas")
{
GIVEN {
ASSUME(GetMoveEffect(MOVE_U_TURN) == EFFECT_HIT_ESCAPE);
ASSUME(GetMoveEffect(MOVE_KNOCK_OFF) == EFFECT_KNOCK_OFF);
PLAYER(SPECIES_DRIFBLIM) { Ability(ABILITY_UNBURDEN); Item(ITEM_POTION); Speed(5); }
OPPONENT(SPECIES_WOBBUFFET) { Speed(7); }
OPPONENT(SPECIES_WEEZING) { Speed(7); Ability(ABILITY_NEUTRALIZING_GAS); }
} WHEN {
TURN { MOVE(opponent, MOVE_KNOCK_OFF); }
TURN { MOVE(opponent, MOVE_U_TURN); SEND_OUT(opponent, 1); }
TURN { MOVE(opponent, MOVE_U_TURN); SEND_OUT(opponent, 0); }
TURN { }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_KNOCK_OFF, opponent);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ITEM_KNOCKOFF, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player);
// Turn 2, doubled speed
ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_U_TURN, opponent);
ABILITY_POPUP(opponent, ABILITY_NEUTRALIZING_GAS);
// Turn 3, no speed increase
ANIMATION(ANIM_TYPE_MOVE, MOVE_U_TURN, opponent);
MESSAGE("The effects of the neutralizing gas wore off!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player);
// Turn 4, doubled speed
ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent);
}
}