107 lines
3.8 KiB
C
107 lines
3.8 KiB
C
#include "global.h"
|
|
#include "test/battle.h"
|
|
|
|
SINGLE_BATTLE_TEST("Paralysis reduces Speed by 50% (Gen 7+) or 75% (Gen 1-6)")
|
|
{
|
|
u32 playerSpeed, genConfig;
|
|
bool32 playerFirst;
|
|
PARAMETRIZE { playerSpeed = 196; playerFirst = FALSE; genConfig = GEN_6; }
|
|
PARAMETRIZE { playerSpeed = 204; playerFirst = TRUE; genConfig = GEN_6; }
|
|
PARAMETRIZE { playerSpeed = 98; playerFirst = FALSE; genConfig = GEN_7; }
|
|
PARAMETRIZE { playerSpeed = 102; playerFirst = TRUE; genConfig = GEN_7; }
|
|
GIVEN {
|
|
WITH_CONFIG(GEN_CONFIG_PARALYSIS_SPEED, genConfig);
|
|
PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_PARALYSIS); Speed(playerSpeed); }
|
|
OPPONENT(SPECIES_WOBBUFFET) { Speed(50); }
|
|
} WHEN {
|
|
TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_CELEBRATE); }
|
|
} SCENE {
|
|
if (playerFirst) {
|
|
ONE_OF {
|
|
MESSAGE("Wobbuffet used Celebrate!");
|
|
MESSAGE("Wobbuffet is paralyzed, so it may be unable to move!");
|
|
}
|
|
MESSAGE("The opposing Wobbuffet used Celebrate!");
|
|
} else {
|
|
MESSAGE("The opposing Wobbuffet used Celebrate!");
|
|
ONE_OF {
|
|
MESSAGE("Wobbuffet used Celebrate!");
|
|
MESSAGE("Wobbuffet is paralyzed, so it may be unable to move!");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
SINGLE_BATTLE_TEST("Paralysis has a 25% chance of skipping the turn")
|
|
{
|
|
PASSES_RANDOMLY(25, 100, RNG_PARALYSIS);
|
|
GIVEN {
|
|
PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_PARALYSIS); }
|
|
OPPONENT(SPECIES_WOBBUFFET);
|
|
} WHEN {
|
|
TURN { MOVE(player, MOVE_CELEBRATE); }
|
|
} SCENE {
|
|
MESSAGE("Wobbuffet couldn't move because it's paralyzed!");
|
|
}
|
|
}
|
|
|
|
AI_SINGLE_BATTLE_TEST("AI avoids Thunder Wave when it can not paralyse target")
|
|
{
|
|
u32 species, ability;
|
|
|
|
PARAMETRIZE { species = SPECIES_HITMONLEE; ability = ABILITY_LIMBER; }
|
|
PARAMETRIZE { species = SPECIES_KOMALA; ability = ABILITY_COMATOSE; }
|
|
PARAMETRIZE { species = SPECIES_NACLI; ability = ABILITY_PURIFYING_SALT; }
|
|
PARAMETRIZE { species = SPECIES_PIKACHU; ability = ABILITY_STATIC; }
|
|
|
|
GIVEN {
|
|
WITH_CONFIG(GEN_CONFIG_PARALYZE_ELECTRIC, GEN_6);
|
|
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_OMNISCIENT);
|
|
PLAYER(species) { Ability(ability); }
|
|
OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_CELEBRATE, MOVE_THUNDER_WAVE); }
|
|
} WHEN {
|
|
TURN { SCORE_EQ(opponent, MOVE_CELEBRATE, MOVE_THUNDER_WAVE); } // Both get -10
|
|
}
|
|
}
|
|
|
|
SINGLE_BATTLE_TEST("Thunder Wave doesn't affect Electric types (Gen6+)")
|
|
{
|
|
u32 gen = 0;
|
|
PARAMETRIZE { gen = GEN_5; }
|
|
PARAMETRIZE { gen = GEN_6; }
|
|
GIVEN {
|
|
WITH_CONFIG(GEN_CONFIG_PARALYZE_ELECTRIC, gen);
|
|
ASSUME(GetSpeciesType(SPECIES_PIKACHU, 0) == TYPE_ELECTRIC);
|
|
PLAYER(SPECIES_WOBBUFFET);
|
|
OPPONENT(SPECIES_PIKACHU);
|
|
} WHEN {
|
|
TURN { MOVE(player, MOVE_THUNDER_WAVE); }
|
|
} SCENE {
|
|
MESSAGE("Wobbuffet used Thunder Wave!");
|
|
if (gen == GEN_6) {
|
|
NONE_OF {
|
|
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, opponent);
|
|
STATUS_ICON(opponent, paralysis: TRUE);
|
|
}
|
|
MESSAGE("It doesn't affect the opposing Pikachu…");
|
|
} else {
|
|
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, opponent);
|
|
STATUS_ICON(opponent, paralysis: TRUE);
|
|
}
|
|
}
|
|
}
|
|
|
|
SINGLE_BATTLE_TEST("Thunder Wave doesn't print an effectiveness message")
|
|
{
|
|
GIVEN {
|
|
ASSUME(gSpeciesInfo[SPECIES_PIDGEY].types[1] == TYPE_FLYING);
|
|
PLAYER(SPECIES_PIDGEY);
|
|
OPPONENT(SPECIES_WOBBUFFET);
|
|
} WHEN {
|
|
TURN { MOVE(opponent, MOVE_THUNDER_WAVE); }
|
|
} SCENE {
|
|
MESSAGE("The opposing Wobbuffet used Thunder Wave!");
|
|
NOT MESSAGE("It's super effective!");
|
|
}
|
|
}
|