Clear Body tests include Full Metal Body and White Smoke (#4797)
This commit is contained in:
parent
84d13d0abf
commit
9ec16f4eb6
@ -1,15 +1,19 @@
|
||||
#include "global.h"
|
||||
#include "test/battle.h"
|
||||
|
||||
SINGLE_BATTLE_TEST("Clear Body prevents intimidate")
|
||||
SINGLE_BATTLE_TEST("Clear Body, Full Metal Body, and White Smoke prevent intimidate")
|
||||
{
|
||||
s16 turnOneHit;
|
||||
s16 turnTwoHit;
|
||||
u32 species, ability;
|
||||
|
||||
PARAMETRIZE{ species = SPECIES_METANG; ability = ABILITY_CLEAR_BODY; }
|
||||
PARAMETRIZE{ species = SPECIES_SOLGALEO; ability = ABILITY_FULL_METAL_BODY; }
|
||||
PARAMETRIZE{ species = SPECIES_TORKOAL; ability = ABILITY_WHITE_SMOKE; }
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_EKANS) { Ability(ABILITY_SHED_SKIN); };
|
||||
PLAYER(SPECIES_EKANS) { Ability(ABILITY_INTIMIDATE); };
|
||||
OPPONENT(SPECIES_BELDUM) { Ability(ABILITY_CLEAR_BODY); };
|
||||
OPPONENT(species) { Ability(ability); };
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_TACKLE); }
|
||||
TURN { SWITCH(player, 1); MOVE(opponent, MOVE_TACKLE); }
|
||||
@ -20,24 +24,38 @@ SINGLE_BATTLE_TEST("Clear Body prevents intimidate")
|
||||
NONE_OF {
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
|
||||
}
|
||||
ABILITY_POPUP(opponent, ABILITY_CLEAR_BODY);
|
||||
MESSAGE("Foe Beldum's Clear Body prevents stat loss!");
|
||||
ABILITY_POPUP(opponent, ability);
|
||||
if (ability == ABILITY_FULL_METAL_BODY)
|
||||
MESSAGE("Foe Solgaleo's Full Metal Body prevents stat loss!");
|
||||
else if (ability == ABILITY_WHITE_SMOKE)
|
||||
MESSAGE("Foe Torkoal's White Smoke prevents stat loss!");
|
||||
else
|
||||
MESSAGE("Foe Metang's Clear Body prevents stat loss!");
|
||||
HP_BAR(player, captureDamage: &turnTwoHit);
|
||||
} THEN {
|
||||
EXPECT_EQ(turnOneHit, turnTwoHit);
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Clear Body prevents stat stage reduction from moves")
|
||||
SINGLE_BATTLE_TEST("Clear Body, Full Metal Body, and White Smoke prevent stat stage reduction from moves")
|
||||
{
|
||||
u16 move;
|
||||
PARAMETRIZE{ move = MOVE_GROWL; }
|
||||
PARAMETRIZE{ move = MOVE_LEER; }
|
||||
PARAMETRIZE{ move = MOVE_CONFIDE; }
|
||||
PARAMETRIZE{ move = MOVE_FAKE_TEARS; }
|
||||
PARAMETRIZE{ move = MOVE_SCARY_FACE; }
|
||||
PARAMETRIZE{ move = MOVE_SWEET_SCENT; }
|
||||
PARAMETRIZE{ move = MOVE_SAND_ATTACK; }
|
||||
u16 move = MOVE_NONE;
|
||||
u32 j, species = SPECIES_NONE, ability = ABILITY_NONE;
|
||||
static const u16 statReductionMoves[] = {
|
||||
MOVE_GROWL,
|
||||
MOVE_LEER,
|
||||
MOVE_CONFIDE,
|
||||
MOVE_FAKE_TEARS,
|
||||
MOVE_SCARY_FACE,
|
||||
MOVE_SWEET_SCENT,
|
||||
MOVE_SAND_ATTACK,
|
||||
};
|
||||
for (j = 0; j < ARRAY_COUNT(statReductionMoves); j++)
|
||||
{
|
||||
PARAMETRIZE{ species = SPECIES_METANG; ability = ABILITY_CLEAR_BODY; move = statReductionMoves[j]; }
|
||||
PARAMETRIZE{ species = SPECIES_SOLGALEO; ability = ABILITY_FULL_METAL_BODY; move = statReductionMoves[j]; }
|
||||
PARAMETRIZE{ species = SPECIES_TORKOAL; ability = ABILITY_WHITE_SMOKE; move = statReductionMoves[j]; }
|
||||
}
|
||||
|
||||
GIVEN {
|
||||
ASSUME(gMovesInfo[MOVE_GROWL].effect == EFFECT_ATTACK_DOWN);
|
||||
@ -48,7 +66,7 @@ SINGLE_BATTLE_TEST("Clear Body prevents stat stage reduction from moves")
|
||||
ASSUME(gMovesInfo[MOVE_SWEET_SCENT].effect == (B_UPDATED_MOVE_DATA >= GEN_6 ? EFFECT_EVASION_DOWN_2 : EFFECT_EVASION_DOWN));
|
||||
ASSUME(gMovesInfo[MOVE_SAND_ATTACK].effect == EFFECT_ACCURACY_DOWN);
|
||||
PLAYER(SPECIES_WOBBUFFET)
|
||||
OPPONENT(SPECIES_BELDUM) { Ability(ABILITY_CLEAR_BODY); }
|
||||
OPPONENT(species) { Ability(ability); }
|
||||
} WHEN {
|
||||
TURN { MOVE(player, move); }
|
||||
} SCENE {
|
||||
@ -56,18 +74,27 @@ SINGLE_BATTLE_TEST("Clear Body prevents stat stage reduction from moves")
|
||||
ANIMATION(ANIM_TYPE_MOVE, move, player);
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
|
||||
}
|
||||
ABILITY_POPUP(opponent, ABILITY_CLEAR_BODY);
|
||||
MESSAGE("Foe Beldum's Clear Body prevents stat loss!");
|
||||
ABILITY_POPUP(opponent, ability);
|
||||
if (ability == ABILITY_FULL_METAL_BODY)
|
||||
MESSAGE("Foe Solgaleo's Full Metal Body prevents stat loss!");
|
||||
else if (ability == ABILITY_WHITE_SMOKE)
|
||||
MESSAGE("Foe Torkoal's White Smoke prevents stat loss!");
|
||||
else
|
||||
MESSAGE("Foe Metang's Clear Body prevents stat loss!");
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Clear Body prevents Sticky Web")
|
||||
SINGLE_BATTLE_TEST("Clear Body, Full Metal Body, and White Smoke prevent Sticky Web effect on switchin")
|
||||
{
|
||||
u32 species, ability;
|
||||
PARAMETRIZE{ species = SPECIES_METANG; ability = ABILITY_CLEAR_BODY; }
|
||||
PARAMETRIZE{ species = SPECIES_SOLGALEO; ability = ABILITY_FULL_METAL_BODY; }
|
||||
PARAMETRIZE{ species = SPECIES_TORKOAL; ability = ABILITY_WHITE_SMOKE; }
|
||||
GIVEN {
|
||||
ASSUME(gMovesInfo[MOVE_STICKY_WEB].effect == EFFECT_STICKY_WEB);
|
||||
PLAYER(SPECIES_WOBBUFFET)
|
||||
OPPONENT(SPECIES_WOBBUFFET)
|
||||
OPPONENT(SPECIES_BELDUM) { Ability(ABILITY_CLEAR_BODY); }
|
||||
OPPONENT(species) { Ability(ability); }
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_STICKY_WEB); }
|
||||
TURN { SWITCH(opponent, 1); }
|
||||
@ -75,32 +102,43 @@ SINGLE_BATTLE_TEST("Clear Body prevents Sticky Web")
|
||||
NONE_OF {
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
|
||||
}
|
||||
ABILITY_POPUP(opponent, ABILITY_CLEAR_BODY);
|
||||
MESSAGE("Foe Beldum's Clear Body prevents stat loss!");
|
||||
ABILITY_POPUP(opponent, ability);
|
||||
if (ability == ABILITY_FULL_METAL_BODY)
|
||||
MESSAGE("Foe Solgaleo's Full Metal Body prevents stat loss!");
|
||||
else if (ability == ABILITY_WHITE_SMOKE)
|
||||
MESSAGE("Foe Torkoal's White Smoke prevents stat loss!");
|
||||
else
|
||||
MESSAGE("Foe Metang's Clear Body prevents stat loss!");
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Clear Body doesn't prevent stat stage reduction from moves used by the user")
|
||||
SINGLE_BATTLE_TEST("Clear Body, Full Metal Body, and White Smoke don't prevent stat stage reduction from moves used by the user")
|
||||
{
|
||||
u32 species, ability;
|
||||
PARAMETRIZE{ species = SPECIES_METANG; ability = ABILITY_CLEAR_BODY; }
|
||||
PARAMETRIZE{ species = SPECIES_SOLGALEO; ability = ABILITY_FULL_METAL_BODY; }
|
||||
PARAMETRIZE{ species = SPECIES_TORKOAL; ability = ABILITY_WHITE_SMOKE; }
|
||||
GIVEN {
|
||||
ASSUME(MoveHasAdditionalEffectSelf(MOVE_SUPERPOWER, MOVE_EFFECT_ATK_DEF_DOWN) == TRUE);
|
||||
PLAYER(SPECIES_WOBBUFFET)
|
||||
OPPONENT(SPECIES_BELDUM) { Ability(ABILITY_CLEAR_BODY); }
|
||||
OPPONENT(species) { Ability(ability); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_SUPERPOWER); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_SUPERPOWER, opponent);
|
||||
NONE_OF {
|
||||
ABILITY_POPUP(opponent, ABILITY_CLEAR_BODY);
|
||||
MESSAGE("Foe Beldum's Clear Body prevents stat loss!");
|
||||
ABILITY_POPUP(opponent, ability);
|
||||
MESSAGE("Foe Solgaleo's Full Metal Body prevents stat loss!");
|
||||
MESSAGE("Foe Torkoal's White Smoke prevents stat loss!");
|
||||
MESSAGE("Foe Metang's Clear Body prevents stat loss!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Mold Breaker, Teravolt, and Turboblaze ignore Clear Body")
|
||||
SINGLE_BATTLE_TEST("Mold Breaker, Teravolt, and Turboblaze ignore Clear Body and White Smoke, but not Full Metal Body")
|
||||
{
|
||||
u32 j, k;
|
||||
u16 ability = ABILITY_NONE;
|
||||
u32 j, k, species = SPECIES_NONE, ability = ABILITY_NONE;
|
||||
u16 breakerAbility = ABILITY_NONE;
|
||||
u16 move = ABILITY_NONE;
|
||||
static const u16 breakerAbilities[] = {
|
||||
ABILITY_MOLD_BREAKER,
|
||||
@ -121,7 +159,9 @@ SINGLE_BATTLE_TEST("Mold Breaker, Teravolt, and Turboblaze ignore Clear Body")
|
||||
{
|
||||
for (k = 0; k < ARRAY_COUNT(breakerAbilities); k++)
|
||||
{
|
||||
PARAMETRIZE{ move = statReductionMoves[j]; ability = breakerAbilities[k]; }
|
||||
PARAMETRIZE{ species = SPECIES_METANG; ability = ABILITY_CLEAR_BODY; move = statReductionMoves[j]; breakerAbility = breakerAbilities[k]; }
|
||||
PARAMETRIZE{ species = SPECIES_SOLGALEO; ability = ABILITY_FULL_METAL_BODY; move = statReductionMoves[j]; breakerAbility = breakerAbilities[k]; }
|
||||
PARAMETRIZE{ species = SPECIES_TORKOAL; ability = ABILITY_WHITE_SMOKE; move = statReductionMoves[j]; breakerAbility = breakerAbilities[k]; }
|
||||
}
|
||||
}
|
||||
|
||||
@ -133,146 +173,242 @@ SINGLE_BATTLE_TEST("Mold Breaker, Teravolt, and Turboblaze ignore Clear Body")
|
||||
ASSUME(gMovesInfo[MOVE_SCARY_FACE].effect == EFFECT_SPEED_DOWN_2);
|
||||
ASSUME(gMovesInfo[MOVE_SWEET_SCENT].effect == (B_UPDATED_MOVE_DATA >= GEN_6 ? EFFECT_EVASION_DOWN_2 : EFFECT_EVASION_DOWN));
|
||||
ASSUME(gMovesInfo[MOVE_SAND_ATTACK].effect == EFFECT_ACCURACY_DOWN);
|
||||
PLAYER(SPECIES_WOBBUFFET) { Ability(ability); }
|
||||
OPPONENT(SPECIES_BELDUM) { Ability(ABILITY_CLEAR_BODY); }
|
||||
PLAYER(SPECIES_WOBBUFFET) { Ability(breakerAbility); }
|
||||
OPPONENT(species) { Ability(ability); }
|
||||
} WHEN {
|
||||
TURN { MOVE(player, move); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, move, player);
|
||||
NONE_OF {
|
||||
ABILITY_POPUP(opponent, ABILITY_CLEAR_BODY);
|
||||
MESSAGE("Foe Beldum's Clear Body prevents stat loss!");
|
||||
if (ability == ABILITY_FULL_METAL_BODY){ // Full Metal Body can't be ignored by breaker abilities
|
||||
NOT ANIMATION(ANIM_TYPE_MOVE, move, player);
|
||||
ABILITY_POPUP(opponent, ability);
|
||||
MESSAGE("Foe Solgaleo's Full Metal Body prevents stat loss!");
|
||||
}
|
||||
else{
|
||||
ANIMATION(ANIM_TYPE_MOVE, move, player);
|
||||
NONE_OF {
|
||||
ABILITY_POPUP(opponent, ability);
|
||||
MESSAGE("Foe Solgaleo's Full Metal Body prevents stat loss!");
|
||||
MESSAGE("Foe Torkoal's White Smoke prevents stat loss!");
|
||||
MESSAGE("Foe Metang's Clear Body prevents stat loss!");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Clear Body doesn't prevent Speed reduction from Iron Ball")
|
||||
SINGLE_BATTLE_TEST("Clear Body, Full Metal Body, and White Smoke don't prevent Speed reduction from Iron Ball")
|
||||
{
|
||||
u16 heldItem;
|
||||
PARAMETRIZE{ heldItem = ITEM_NONE; }
|
||||
PARAMETRIZE{ heldItem = ITEM_IRON_BALL; }
|
||||
u32 j, species = SPECIES_NONE, ability = ABILITY_NONE;
|
||||
u16 heldItem = ITEM_NONE;
|
||||
static const u16 heldItems[] = {
|
||||
ITEM_NONE,
|
||||
ITEM_IRON_BALL,
|
||||
};
|
||||
for (j = 0; j < ARRAY_COUNT(heldItems); j++)
|
||||
{
|
||||
PARAMETRIZE{ species = SPECIES_METANG; ability = ABILITY_CLEAR_BODY; heldItem = heldItems[j]; }
|
||||
PARAMETRIZE{ species = SPECIES_SOLGALEO; ability = ABILITY_FULL_METAL_BODY; heldItem = heldItems[j]; }
|
||||
PARAMETRIZE{ species = SPECIES_TORKOAL; ability = ABILITY_WHITE_SMOKE; heldItem = heldItems[j]; }
|
||||
}
|
||||
GIVEN {
|
||||
ASSUME(gItemsInfo[ITEM_IRON_BALL].holdEffect == HOLD_EFFECT_IRON_BALL);
|
||||
PLAYER(SPECIES_WOBBUFFET) { Speed(4); }
|
||||
OPPONENT(SPECIES_BELDUM) { Speed(6); Ability(ABILITY_CLEAR_BODY); Item(heldItem); }
|
||||
OPPONENT(species) { Speed(6); Ability(ability); Item(heldItem); }
|
||||
} WHEN {
|
||||
TURN { }
|
||||
} SCENE {
|
||||
NOT ABILITY_POPUP(opponent, ABILITY_CLEAR_BODY);
|
||||
NOT ABILITY_POPUP(opponent, ability);
|
||||
if (heldItem == ITEM_IRON_BALL) {
|
||||
MESSAGE("Wobbuffet used Celebrate!");
|
||||
MESSAGE("Foe Beldum used Celebrate!");
|
||||
if (ability == ABILITY_FULL_METAL_BODY)
|
||||
MESSAGE("Foe Solgaleo used Celebrate!");
|
||||
else if (ability == ABILITY_WHITE_SMOKE)
|
||||
MESSAGE("Foe Torkoal used Celebrate!");
|
||||
else
|
||||
MESSAGE("Foe Metang used Celebrate!");
|
||||
} else {
|
||||
MESSAGE("Foe Beldum used Celebrate!");
|
||||
if (ability == ABILITY_FULL_METAL_BODY)
|
||||
MESSAGE("Foe Solgaleo used Celebrate!");
|
||||
else if (ability == ABILITY_WHITE_SMOKE)
|
||||
MESSAGE("Foe Torkoal used Celebrate!");
|
||||
else
|
||||
MESSAGE("Foe Metang used Celebrate!");
|
||||
MESSAGE("Wobbuffet used Celebrate!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Clear Body doesn't prevent Speed reduction from paralysis")
|
||||
SINGLE_BATTLE_TEST("Clear Body, Full Metal Body, and White Smoke don't prevent Speed reduction from paralysis")
|
||||
{
|
||||
u32 species, ability;
|
||||
|
||||
PARAMETRIZE{ species = SPECIES_METANG; ability = ABILITY_CLEAR_BODY; }
|
||||
PARAMETRIZE{ species = SPECIES_SOLGALEO; ability = ABILITY_FULL_METAL_BODY; }
|
||||
PARAMETRIZE{ species = SPECIES_TORKOAL; ability = ABILITY_WHITE_SMOKE; }
|
||||
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WOBBUFFET) { Speed(4); }
|
||||
OPPONENT(SPECIES_BELDUM) { Speed(6); Ability(ABILITY_CLEAR_BODY); }
|
||||
OPPONENT(species) { Speed(6); Ability(ability); }
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_THUNDER_WAVE); }
|
||||
TURN { MOVE(player, MOVE_THUNDER_WAVE); }
|
||||
} SCENE {
|
||||
MESSAGE("Foe Beldum used Celebrate!");
|
||||
if (ability == ABILITY_FULL_METAL_BODY)
|
||||
MESSAGE("Foe Solgaleo used Celebrate!");
|
||||
else if (ability == ABILITY_WHITE_SMOKE)
|
||||
MESSAGE("Foe Torkoal used Celebrate!");
|
||||
else
|
||||
MESSAGE("Foe Metang used Celebrate!");
|
||||
MESSAGE("Wobbuffet used Thunder Wave!");
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_THUNDER_WAVE, player);
|
||||
NOT ABILITY_POPUP(opponent, ABILITY_CLEAR_BODY);
|
||||
NOT ABILITY_POPUP(opponent, ability);
|
||||
MESSAGE("Wobbuffet used Thunder Wave!");
|
||||
ONE_OF {
|
||||
MESSAGE("Foe Beldum used Celebrate!");
|
||||
MESSAGE("Foe Beldum is paralyzed! It can't move!");
|
||||
MESSAGE("Foe Metang used Celebrate!");
|
||||
MESSAGE("Foe Metang is paralyzed! It can't move!");
|
||||
MESSAGE("Foe Solgaleo used Celebrate!");
|
||||
MESSAGE("Foe Solgaleo is paralyzed! It can't move!");
|
||||
MESSAGE("Foe Torkoal used Celebrate!");
|
||||
MESSAGE("Foe Torkoal is paralyzed! It can't move!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Clear Body doesn't prevent Attack reduction from burn", s16 damage)
|
||||
SINGLE_BATTLE_TEST("Clear Body, Full Metal Body, and White Smoke don't prevent Attack reduction from burn", s16 damage)
|
||||
{
|
||||
bool32 burned;
|
||||
PARAMETRIZE{ burned = FALSE; }
|
||||
PARAMETRIZE{ burned = TRUE; }
|
||||
bool32 burned = FALSE;
|
||||
u32 species, ability;
|
||||
PARAMETRIZE{ species = SPECIES_METANG; ability = ABILITY_CLEAR_BODY; burned = FALSE; }
|
||||
PARAMETRIZE{ species = SPECIES_METANG; ability = ABILITY_CLEAR_BODY; burned = TRUE; }
|
||||
PARAMETRIZE{ species = SPECIES_SOLGALEO; ability = ABILITY_FULL_METAL_BODY; burned = FALSE; }
|
||||
PARAMETRIZE{ species = SPECIES_SOLGALEO; ability = ABILITY_FULL_METAL_BODY; burned = TRUE; }
|
||||
PARAMETRIZE{ species = SPECIES_TORKOAL; ability = ABILITY_WHITE_SMOKE; burned = FALSE; }
|
||||
PARAMETRIZE{ species = SPECIES_TORKOAL; ability = ABILITY_WHITE_SMOKE; burned = TRUE; }
|
||||
GIVEN {
|
||||
ASSUME(gMovesInfo[MOVE_TACKLE].category == DAMAGE_CATEGORY_PHYSICAL);
|
||||
PLAYER(SPECIES_WOBBUFFET)
|
||||
OPPONENT(SPECIES_BELDUM) { Ability(ABILITY_CLEAR_BODY); if (burned) Status1(STATUS1_BURN); }
|
||||
OPPONENT(species) { Ability(ability); if (burned) Status1(STATUS1_BURN); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_TACKLE); }
|
||||
} SCENE {
|
||||
NOT ABILITY_POPUP(opponent, ABILITY_CLEAR_BODY);
|
||||
NOT ABILITY_POPUP(opponent, ability);
|
||||
HP_BAR(player, captureDamage: &results[i].damage);
|
||||
} FINALLY {
|
||||
EXPECT_MUL_EQ(results[0].damage, Q_4_12(0.5), results[1].damage);
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Clear Body doesn't prevent receiving negative stat changes from Baton Pass")
|
||||
SINGLE_BATTLE_TEST("Clear Body, Full Metal Body, and White Smoke don't prevent receiving negative stat changes from Baton Pass")
|
||||
{
|
||||
u32 species, ability;
|
||||
|
||||
PARAMETRIZE{ species = SPECIES_METANG; ability = ABILITY_CLEAR_BODY; }
|
||||
PARAMETRIZE{ species = SPECIES_SOLGALEO; ability = ABILITY_FULL_METAL_BODY; }
|
||||
PARAMETRIZE{ species = SPECIES_TORKOAL; ability = ABILITY_WHITE_SMOKE; }
|
||||
|
||||
GIVEN {
|
||||
ASSUME(gMovesInfo[MOVE_SCARY_FACE].effect == EFFECT_SPEED_DOWN_2);
|
||||
ASSUME(gMovesInfo[MOVE_BATON_PASS].effect == EFFECT_BATON_PASS);
|
||||
PLAYER(SPECIES_WOBBUFFET) { Speed(4); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Speed(3); }
|
||||
OPPONENT(SPECIES_BELDUM) { Speed(6); Ability(ABILITY_CLEAR_BODY); }
|
||||
OPPONENT(species) { Speed(6); Ability(ability); }
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_SCARY_FACE); MOVE(opponent, MOVE_BATON_PASS); SEND_OUT(opponent, 1); }
|
||||
TURN { MOVE(player, MOVE_SCARY_FACE); }
|
||||
} SCENE {
|
||||
MESSAGE("Wobbuffet used Scary Face!");
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_SCARY_FACE, player);
|
||||
ABILITY_POPUP(opponent, ABILITY_CLEAR_BODY);
|
||||
MESSAGE("Foe Beldum used Celebrate!");
|
||||
ABILITY_POPUP(opponent, ability);
|
||||
if (ability == ABILITY_FULL_METAL_BODY)
|
||||
MESSAGE("Foe Solgaleo used Celebrate!");
|
||||
else if (ability == ABILITY_WHITE_SMOKE)
|
||||
MESSAGE("Foe Torkoal used Celebrate!");
|
||||
else
|
||||
MESSAGE("Foe Metang used Celebrate!");
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Clear Body doesn't prevent Topsy-Turvy")
|
||||
SINGLE_BATTLE_TEST("Clear Body, Full Metal Body, and White Smoke don't prevent Topsy-Turvy")
|
||||
{
|
||||
u32 species, ability;
|
||||
|
||||
PARAMETRIZE{ species = SPECIES_METANG; ability = ABILITY_CLEAR_BODY; }
|
||||
PARAMETRIZE{ species = SPECIES_SOLGALEO; ability = ABILITY_FULL_METAL_BODY; }
|
||||
PARAMETRIZE{ species = SPECIES_TORKOAL; ability = ABILITY_WHITE_SMOKE; }
|
||||
|
||||
GIVEN {
|
||||
ASSUME(gMovesInfo[MOVE_TOPSY_TURVY].effect == EFFECT_TOPSY_TURVY);
|
||||
ASSUME(gMovesInfo[MOVE_SCARY_FACE].effect == EFFECT_SPEED_DOWN_2);
|
||||
ASSUME(gMovesInfo[MOVE_BATON_PASS].effect == EFFECT_BATON_PASS);
|
||||
PLAYER(SPECIES_WOBBUFFET) { Speed(4); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Speed(3); }
|
||||
OPPONENT(SPECIES_BELDUM) { Speed(6); Ability(ABILITY_CLEAR_BODY); }
|
||||
OPPONENT(species) { Speed(6); Ability(ability); }
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_SCARY_FACE); MOVE(opponent, MOVE_BATON_PASS); SEND_OUT(opponent, 1); }
|
||||
TURN { MOVE(player, MOVE_TOPSY_TURVY); }
|
||||
TURN { MOVE(player, MOVE_SCARY_FACE); }
|
||||
} SCENE {
|
||||
MESSAGE("Wobbuffet used Topsy-Turvy!");
|
||||
NOT ABILITY_POPUP(opponent, ABILITY_CLEAR_BODY);
|
||||
NOT ABILITY_POPUP(opponent, ability);
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_TOPSY_TURVY, player);
|
||||
MESSAGE("Foe Beldum used Celebrate!");
|
||||
MESSAGE("Foe Beldum used Celebrate!");
|
||||
if (ability == ABILITY_FULL_METAL_BODY) {
|
||||
MESSAGE("Foe Solgaleo used Celebrate!");
|
||||
MESSAGE("Foe Solgaleo used Celebrate!");
|
||||
}
|
||||
else if (ability == ABILITY_WHITE_SMOKE) {
|
||||
MESSAGE("Foe Torkoal used Celebrate!");
|
||||
MESSAGE("Foe Torkoal used Celebrate!");
|
||||
}
|
||||
else {
|
||||
MESSAGE("Foe Metang used Celebrate!");
|
||||
MESSAGE("Foe Metang used Celebrate!");
|
||||
}
|
||||
MESSAGE("Wobbuffet used Scary Face!");
|
||||
NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_SCARY_FACE, player);
|
||||
ABILITY_POPUP(opponent, ABILITY_CLEAR_BODY);
|
||||
ABILITY_POPUP(opponent, ability);
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Clear Body doesn't prevent Spectral Thief from resetting positive stat changes")
|
||||
SINGLE_BATTLE_TEST("Clear Body, Full Metal Body, and White Smoke don't prevent Spectral Thief from resetting positive stat changes")
|
||||
{
|
||||
u32 species, ability;
|
||||
|
||||
PARAMETRIZE{ species = SPECIES_METANG; ability = ABILITY_CLEAR_BODY; }
|
||||
PARAMETRIZE{ species = SPECIES_SOLGALEO; ability = ABILITY_FULL_METAL_BODY; }
|
||||
PARAMETRIZE{ species = SPECIES_TORKOAL; ability = ABILITY_WHITE_SMOKE; }
|
||||
|
||||
GIVEN {
|
||||
ASSUME(MoveHasAdditionalEffect(MOVE_SPECTRAL_THIEF, MOVE_EFFECT_SPECTRAL_THIEF) == TRUE);
|
||||
ASSUME(gMovesInfo[MOVE_AGILITY].effect == EFFECT_SPEED_UP_2);
|
||||
PLAYER(SPECIES_WOBBUFFET) { Speed(4); }
|
||||
OPPONENT(SPECIES_METANG) { Speed(5); Ability(ABILITY_CLEAR_BODY); }
|
||||
OPPONENT(species) { Speed(5); Ability(ability); }
|
||||
} WHEN {
|
||||
TURN{ MOVE(opponent, MOVE_AGILITY); }
|
||||
TURN{ MOVE(player, MOVE_SPECTRAL_THIEF); }
|
||||
TURN{ }
|
||||
} SCENE {
|
||||
MESSAGE("Foe Metang used Agility!");
|
||||
if (ability == ABILITY_FULL_METAL_BODY)
|
||||
MESSAGE("Foe Solgaleo used Agility!");
|
||||
else if (ability == ABILITY_WHITE_SMOKE)
|
||||
MESSAGE("Foe Torkoal used Agility!");
|
||||
else
|
||||
MESSAGE("Foe Metang used Agility!");
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_AGILITY, opponent);
|
||||
MESSAGE("Wobbuffet used Celebrate!");
|
||||
MESSAGE("Foe Metang used Celebrate!");
|
||||
if (ability == ABILITY_FULL_METAL_BODY)
|
||||
MESSAGE("Foe Solgaleo used Celebrate!");
|
||||
else if (ability == ABILITY_WHITE_SMOKE)
|
||||
MESSAGE("Foe Torkoal used Celebrate!");
|
||||
else
|
||||
MESSAGE("Foe Metang used Celebrate!");
|
||||
MESSAGE("Wobbuffet used SpectrlThief!");
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_SPECTRAL_THIEF, player);
|
||||
NOT ABILITY_POPUP(opponent, ABILITY_CLEAR_BODY);
|
||||
NOT ABILITY_POPUP(opponent, ability);
|
||||
MESSAGE("Wobbuffet used Celebrate!");
|
||||
MESSAGE("Foe Metang used Celebrate!");
|
||||
if (ability == ABILITY_FULL_METAL_BODY)
|
||||
MESSAGE("Foe Solgaleo used Celebrate!");
|
||||
else if (ability == ABILITY_WHITE_SMOKE)
|
||||
MESSAGE("Foe Torkoal used Celebrate!");
|
||||
else
|
||||
MESSAGE("Foe Metang used Celebrate!");
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,38 +0,0 @@
|
||||
#include "global.h"
|
||||
#include "test/battle.h"
|
||||
|
||||
SINGLE_BATTLE_TEST("Full Metal Body prevents intimidate")
|
||||
{
|
||||
s16 turnOneHit;
|
||||
s16 turnTwoHit;
|
||||
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_EKANS) { Ability(ABILITY_SHED_SKIN); };
|
||||
PLAYER(SPECIES_EKANS) { Ability(ABILITY_INTIMIDATE); };
|
||||
OPPONENT(SPECIES_SOLGALEO) { Ability(ABILITY_FULL_METAL_BODY); };
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_TACKLE); }
|
||||
TURN { SWITCH(player, 1); MOVE(opponent, MOVE_TACKLE); }
|
||||
|
||||
} SCENE {
|
||||
HP_BAR(player, captureDamage: &turnOneHit);
|
||||
ABILITY_POPUP(player, ABILITY_INTIMIDATE);
|
||||
NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); }
|
||||
ABILITY_POPUP(opponent, ABILITY_FULL_METAL_BODY);
|
||||
MESSAGE("Foe Solgaleo's Full Metal Body prevents stat loss!");
|
||||
HP_BAR(player, captureDamage: &turnTwoHit);
|
||||
} THEN {
|
||||
EXPECT_EQ(turnOneHit, turnTwoHit);
|
||||
}
|
||||
}
|
||||
|
||||
TO_DO_BATTLE_TEST("Full Metal Body prevents stat stage reduction from moves"); // Growl, Leer, Confide, Fake Tears, Scary Face, Sweet Scent, Sand Attack (Attack, Defense, Sp. Attack, Sp. Defense, Speed, Evasion, Accuracy
|
||||
TO_DO_BATTLE_TEST("Full Metal Body prevents Sticky Web");
|
||||
TO_DO_BATTLE_TEST("Full Metal Body doesn't prevent stat stage reduction from moves used by the user"); // e.g. Superpower
|
||||
TO_DO_BATTLE_TEST("Full Metal Body doesn't prevent Speed reduction from Iron Ball");
|
||||
TO_DO_BATTLE_TEST("Full Metal Body doesn't prevent Speed reduction from paralysis");
|
||||
TO_DO_BATTLE_TEST("Full Metal Body doesn't prevent Attack reduction from burn");
|
||||
TO_DO_BATTLE_TEST("Full Metal Body doesn't prevent receiving negative stat changes from Baton Pass");
|
||||
TO_DO_BATTLE_TEST("Full Metal Body doesn't prevent Topsy-Turvy");
|
||||
TO_DO_BATTLE_TEST("Full Metal Body doesn't prevent Spectral Thief from resetting positive stat changes");
|
||||
TO_DO_BATTLE_TEST("Full Metal Body is ignored by Mold Breaker");
|
||||
@ -1,39 +0,0 @@
|
||||
#include "global.h"
|
||||
#include "test/battle.h"
|
||||
|
||||
SINGLE_BATTLE_TEST("White Smoke prevents intimidate")
|
||||
{
|
||||
s16 turnOneHit;
|
||||
s16 turnTwoHit;
|
||||
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_EKANS) { Ability(ABILITY_SHED_SKIN); };
|
||||
PLAYER(SPECIES_EKANS) { Ability(ABILITY_INTIMIDATE); };
|
||||
OPPONENT(SPECIES_TORKOAL) { Ability(ABILITY_WHITE_SMOKE); };
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_TACKLE); }
|
||||
TURN { SWITCH(player, 1); MOVE(opponent, MOVE_TACKLE); }
|
||||
|
||||
} SCENE {
|
||||
HP_BAR(player, captureDamage: &turnOneHit);
|
||||
ABILITY_POPUP(player, ABILITY_INTIMIDATE);
|
||||
NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); }
|
||||
ABILITY_POPUP(opponent, ABILITY_WHITE_SMOKE);
|
||||
MESSAGE("Foe Torkoal's White Smoke prevents stat loss!");
|
||||
HP_BAR(player, captureDamage: &turnTwoHit);
|
||||
} THEN {
|
||||
EXPECT_EQ(turnOneHit, turnTwoHit);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
TO_DO_BATTLE_TEST("White Smoke prevents stat stage reduction from moves"); // Growl, Leer, Confide, Fake Tears, Scary Face, Sweet Scent, Sand Attack (Attack, Defense, Sp. Attack, Sp. Defense, Speed, Evasion, Accuracy
|
||||
TO_DO_BATTLE_TEST("White Smoke prevents Sticky Web");
|
||||
TO_DO_BATTLE_TEST("White Smoke doesn't prevent stat stage reduction from moves used by the user"); // e.g. Superpower
|
||||
TO_DO_BATTLE_TEST("White Smoke doesn't prevent Speed reduction from Iron Ball");
|
||||
TO_DO_BATTLE_TEST("White Smoke doesn't prevent Speed reduction from paralysis");
|
||||
TO_DO_BATTLE_TEST("White Smoke doesn't prevent Attack reduction from burn");
|
||||
TO_DO_BATTLE_TEST("White Smoke doesn't prevent receiving negative stat changes from Baton Pass");
|
||||
TO_DO_BATTLE_TEST("White Smoke doesn't prevent Topsy-Turvy");
|
||||
TO_DO_BATTLE_TEST("White Smoke doesn't prevent Spectral Thief from resetting positive stat changes");
|
||||
TO_DO_BATTLE_TEST("White Smoke is ignored by Mold Breaker");
|
||||
Loading…
x
Reference in New Issue
Block a user