219 lines
8.8 KiB
C
219 lines
8.8 KiB
C
#include "global.h"
|
|
#include "test/battle.h"
|
|
|
|
ASSUMPTIONS
|
|
{
|
|
ASSUME(GetMoveEffect(MOVE_HEAL_BELL) == EFFECT_HEAL_BELL);
|
|
ASSUME(GetMoveEffect(MOVE_AROMATHERAPY) == EFFECT_HEAL_BELL);
|
|
ASSUME(MoveHasAdditionalEffect(MOVE_SPARKLY_SWIRL, MOVE_EFFECT_AROMATHERAPY));
|
|
}
|
|
|
|
DOUBLE_BATTLE_TEST("Sparkly Swirl cures the entire party")
|
|
{
|
|
GIVEN {
|
|
PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_POISON); }
|
|
PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_POISON); }
|
|
PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_POISON); }
|
|
PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_POISON); }
|
|
PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_POISON); }
|
|
PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_POISON); }
|
|
OPPONENT(SPECIES_WYNAUT);
|
|
OPPONENT(SPECIES_WYNAUT);
|
|
} WHEN {
|
|
TURN { MOVE(playerLeft, MOVE_SPARKLY_SWIRL, target: opponentLeft); }
|
|
TURN { SWITCH(playerLeft, 2); SWITCH(playerRight, 3); }
|
|
} SCENE {
|
|
int i;
|
|
|
|
ANIMATION(ANIM_TYPE_MOVE, MOVE_SPARKLY_SWIRL, playerLeft);
|
|
STATUS_ICON(playerLeft, none: TRUE);
|
|
STATUS_ICON(playerRight, none: TRUE);
|
|
NOT MESSAGE("Wobbuffet was hurt by its poisoning!");
|
|
for (i = 0; i < PARTY_SIZE; i++)
|
|
EXPECT_EQ(GetMonData(&gPlayerParty[i], MON_DATA_STATUS), STATUS1_NONE);
|
|
}
|
|
}
|
|
|
|
DOUBLE_BATTLE_TEST("Heal Bell/Aromatherapy cures the entire party of the user from primary status effects")
|
|
{
|
|
u32 j, move, status;
|
|
PARAMETRIZE { move = MOVE_HEAL_BELL; status = STATUS1_SLEEP; }
|
|
PARAMETRIZE { move = MOVE_AROMATHERAPY; status = STATUS1_SLEEP; }
|
|
PARAMETRIZE { move = MOVE_HEAL_BELL; status = STATUS1_POISON; }
|
|
PARAMETRIZE { move = MOVE_AROMATHERAPY; status = STATUS1_POISON; }
|
|
PARAMETRIZE { move = MOVE_HEAL_BELL; status = STATUS1_BURN; }
|
|
PARAMETRIZE { move = MOVE_AROMATHERAPY; status = STATUS1_BURN; }
|
|
PARAMETRIZE { move = MOVE_HEAL_BELL; status = STATUS1_FREEZE; }
|
|
PARAMETRIZE { move = MOVE_AROMATHERAPY; status = STATUS1_FREEZE; }
|
|
PARAMETRIZE { move = MOVE_HEAL_BELL; status = STATUS1_PARALYSIS; }
|
|
PARAMETRIZE { move = MOVE_AROMATHERAPY; status = STATUS1_PARALYSIS; }
|
|
PARAMETRIZE { move = MOVE_HEAL_BELL; status = STATUS1_TOXIC_POISON; }
|
|
PARAMETRIZE { move = MOVE_AROMATHERAPY; status = STATUS1_TOXIC_POISON; }
|
|
PARAMETRIZE { move = MOVE_HEAL_BELL; status = STATUS1_FROSTBITE; }
|
|
PARAMETRIZE { move = MOVE_AROMATHERAPY; status = STATUS1_FROSTBITE; }
|
|
|
|
GIVEN {
|
|
ASSUME(GetMoveEffect(MOVE_AROMATHERAPY) == EFFECT_HEAL_BELL);
|
|
PLAYER(SPECIES_WOBBUFFET) {
|
|
if (status != STATUS1_SLEEP && status != STATUS1_FREEZE)
|
|
Status1(status);
|
|
}
|
|
PLAYER(SPECIES_WOBBUFFET) { Status1(status); }
|
|
PLAYER(SPECIES_WOBBUFFET) { Status1(status); }
|
|
PLAYER(SPECIES_WOBBUFFET) { Status1(status); }
|
|
PLAYER(SPECIES_WOBBUFFET) { Status1(status); }
|
|
PLAYER(SPECIES_WOBBUFFET) { Status1(status); }
|
|
OPPONENT(SPECIES_WYNAUT);
|
|
OPPONENT(SPECIES_WYNAUT);
|
|
} WHEN {
|
|
TURN { MOVE(playerLeft, move, target: playerLeft); }
|
|
TURN { SWITCH(playerLeft, 2); SWITCH(playerRight, 3); }
|
|
} SCENE {
|
|
ANIMATION(ANIM_TYPE_MOVE, move, playerLeft);
|
|
switch(status)
|
|
{
|
|
case STATUS1_SLEEP: STATUS_ICON(playerLeft, sleep: FALSE); STATUS_ICON(playerRight, sleep: FALSE); break;
|
|
case STATUS1_POISON: STATUS_ICON(playerLeft, poison: FALSE); STATUS_ICON(playerRight, poison: FALSE); break;
|
|
case STATUS1_BURN: STATUS_ICON(playerLeft, burn: FALSE); STATUS_ICON(playerRight, burn: FALSE); break;
|
|
case STATUS1_PARALYSIS: STATUS_ICON(playerLeft, paralysis: FALSE); STATUS_ICON(playerRight, paralysis: FALSE); break;
|
|
case STATUS1_TOXIC_POISON: STATUS_ICON(playerLeft, badPoison: FALSE); STATUS_ICON(playerRight, badPoison: FALSE); break;
|
|
case STATUS1_FROSTBITE: STATUS_ICON(playerLeft, frostbite: FALSE); STATUS_ICON(playerRight, frostbite: FALSE); break;
|
|
}
|
|
for (j = 0; j < PARTY_SIZE; j++)
|
|
EXPECT_EQ(GetMonData(&gPlayerParty[j], MON_DATA_STATUS), STATUS1_NONE);
|
|
}
|
|
}
|
|
|
|
DOUBLE_BATTLE_TEST("Heal Bell does not cure Soundproof partners (Gen 4, Gen 6+)")
|
|
{
|
|
enum Ability ability;
|
|
u32 config;
|
|
|
|
PARAMETRIZE { ability = ABILITY_SCRAPPY; config = GEN_4; }
|
|
PARAMETRIZE { ability = ABILITY_SOUNDPROOF; config = GEN_4; }
|
|
PARAMETRIZE { ability = ABILITY_SOUNDPROOF; config = GEN_5; }
|
|
PARAMETRIZE { ability = ABILITY_SOUNDPROOF; config = GEN_6; }
|
|
|
|
GIVEN {
|
|
ASSUME(IsSoundMove(MOVE_HEAL_BELL));
|
|
WITH_CONFIG(CONFIG_HEAL_BELL_SOUNDPROOF, config);
|
|
PLAYER(SPECIES_WOBBUFFET);
|
|
PLAYER(SPECIES_EXPLOUD) { Ability(ability); Status1(STATUS1_POISON); }
|
|
OPPONENT(SPECIES_WYNAUT);
|
|
OPPONENT(SPECIES_WYNAUT);
|
|
} WHEN {
|
|
TURN { MOVE(playerLeft, MOVE_HEAL_BELL, target: playerLeft); }
|
|
} SCENE {
|
|
ANIMATION(ANIM_TYPE_MOVE, MOVE_HEAL_BELL, playerLeft);
|
|
if (ability == ABILITY_SOUNDPROOF && config != GEN_5) {
|
|
MESSAGE("Exploud was hurt by its poisoning!");
|
|
} else {
|
|
NOT MESSAGE("Exploud was hurt by its poisoning!");
|
|
}
|
|
}
|
|
}
|
|
|
|
SINGLE_BATTLE_TEST("Heal Bell cures inactive Soundproof Pokemon (Gen5+)")
|
|
{
|
|
u32 config;
|
|
enum Ability ability;
|
|
|
|
PARAMETRIZE { config = GEN_4, ability = ABILITY_SCRAPPY; }
|
|
PARAMETRIZE { config = GEN_4, ability = ABILITY_SOUNDPROOF; }
|
|
PARAMETRIZE { config = GEN_5, ability = ABILITY_SOUNDPROOF; }
|
|
|
|
GIVEN {
|
|
ASSUME(IsSoundMove(MOVE_HEAL_BELL));
|
|
WITH_CONFIG(CONFIG_HEAL_BELL_SOUNDPROOF, config);
|
|
PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_POISON); }
|
|
PLAYER(SPECIES_EXPLOUD) { Ability(ability); Status1(STATUS1_POISON); }
|
|
OPPONENT(SPECIES_WYNAUT);
|
|
} WHEN {
|
|
TURN { MOVE(player, MOVE_HEAL_BELL, target: player); }
|
|
TURN { SWITCH(player, 1); }
|
|
} SCENE {
|
|
ANIMATION(ANIM_TYPE_MOVE, MOVE_HEAL_BELL, player);
|
|
SEND_IN_MESSAGE("Exploud");
|
|
if (ability == ABILITY_SCRAPPY || config >= GEN_5) {
|
|
NOT MESSAGE("Exploud was hurt by its poisoning!");
|
|
} else {
|
|
MESSAGE("Exploud was hurt by its poisoning!");
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
SINGLE_BATTLE_TEST("Heal Bell cures a Soundproof user (Gen5, Gen8+)")
|
|
{
|
|
u32 config;
|
|
PARAMETRIZE { config = GEN_4; }
|
|
PARAMETRIZE { config = GEN_5; }
|
|
PARAMETRIZE { config = GEN_6; }
|
|
PARAMETRIZE { config = GEN_8; }
|
|
GIVEN {
|
|
ASSUME(IsSoundMove(MOVE_HEAL_BELL));
|
|
WITH_CONFIG(CONFIG_HEAL_BELL_SOUNDPROOF, config);
|
|
PLAYER(SPECIES_EXPLOUD) { Ability(ABILITY_SOUNDPROOF); Status1(STATUS1_POISON); }
|
|
OPPONENT(SPECIES_WYNAUT);
|
|
} WHEN {
|
|
TURN { MOVE(player, MOVE_HEAL_BELL, target: player); }
|
|
} SCENE {
|
|
ANIMATION(ANIM_TYPE_MOVE, MOVE_HEAL_BELL, player);
|
|
if (config == GEN_5 || config >= GEN_8) {
|
|
NOT MESSAGE("Exploud was hurt by its poisoning!");
|
|
} else {
|
|
MESSAGE("Exploud was hurt by its poisoning!");
|
|
}
|
|
}
|
|
}
|
|
|
|
DOUBLE_BATTLE_TEST("Aromatherapy cure Soundproof battlers regardless of config")
|
|
{
|
|
u32 ability, config;
|
|
|
|
PARAMETRIZE { ability = ABILITY_SOUNDPROOF; config = GEN_4; }
|
|
PARAMETRIZE { ability = ABILITY_SOUNDPROOF; config = GEN_5; }
|
|
PARAMETRIZE { ability = ABILITY_SOUNDPROOF; config = GEN_6; }
|
|
PARAMETRIZE { ability = ABILITY_SOUNDPROOF; config = GEN_8; }
|
|
|
|
GIVEN {
|
|
ASSUME(!IsSoundMove(MOVE_AROMATHERAPY));
|
|
WITH_CONFIG(CONFIG_HEAL_BELL_SOUNDPROOF, config);
|
|
PLAYER(SPECIES_WOBBUFFET) { Ability(ability); Status1(STATUS1_POISON); }
|
|
PLAYER(SPECIES_EXPLOUD) { Ability(ability); Status1(STATUS1_POISON); }
|
|
OPPONENT(SPECIES_WYNAUT);
|
|
OPPONENT(SPECIES_WYNAUT);
|
|
} WHEN {
|
|
TURN { MOVE(playerLeft, MOVE_AROMATHERAPY, target: playerLeft); }
|
|
} SCENE {
|
|
ANIMATION(ANIM_TYPE_MOVE, MOVE_AROMATHERAPY, playerLeft);
|
|
NONE_OF {
|
|
MESSAGE("Exploud was hurt by its poisoning!");
|
|
MESSAGE("Wobbuffet was hurt by its poisoning!");
|
|
}
|
|
}
|
|
}
|
|
|
|
SINGLE_BATTLE_TEST("Aromatherapy cures inactive Soundproof Pokemon regardless of config")
|
|
{
|
|
u32 config, ability;
|
|
|
|
PARAMETRIZE { config = GEN_4, ability = ABILITY_SOUNDPROOF; }
|
|
PARAMETRIZE { config = GEN_5, ability = ABILITY_SOUNDPROOF; }
|
|
|
|
GIVEN {
|
|
ASSUME(!IsSoundMove(MOVE_AROMATHERAPY));
|
|
WITH_CONFIG(CONFIG_HEAL_BELL_SOUNDPROOF, config);
|
|
PLAYER(SPECIES_WOBBUFFET) { }
|
|
PLAYER(SPECIES_EXPLOUD) { Ability(ability); Status1(STATUS1_POISON); }
|
|
OPPONENT(SPECIES_WYNAUT);
|
|
} WHEN {
|
|
TURN { MOVE(player, MOVE_AROMATHERAPY, target: player); }
|
|
TURN { SWITCH(player, 1); }
|
|
} SCENE {
|
|
ANIMATION(ANIM_TYPE_MOVE, MOVE_AROMATHERAPY, player);
|
|
SEND_IN_MESSAGE("Exploud");
|
|
NOT MESSAGE("Exploud was hurt by its poisoning!");
|
|
}
|
|
}
|