Fixed test battle move category assumptions (#4051)
* Fixed move category assumptions * Update test/battle/ai_check_viability.c --------- Co-authored-by: Bassoonian <iasperbassoonian@gmail.com>
This commit is contained in:
parent
4c21c85ee2
commit
6d1d6a5d5f
@ -67,6 +67,7 @@ DOUBLE_BATTLE_TEST("Flower Gift increases the attack of Cherrim and its allies b
|
||||
PARAMETRIZE { sunny = FALSE; }
|
||||
PARAMETRIZE { sunny = TRUE; }
|
||||
GIVEN {
|
||||
ASSUME(gBattleMoves[MOVE_TACKLE].category == BATTLE_CATEGORY_PHYSICAL);
|
||||
PLAYER(SPECIES_CHERRIM_OVERCAST) { Ability(ABILITY_FLOWER_GIFT); }
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
@ -101,6 +102,7 @@ DOUBLE_BATTLE_TEST("Flower Gift increases the Sp. Def of Cherrim and its allies
|
||||
PARAMETRIZE { sunny = FALSE; }
|
||||
PARAMETRIZE { sunny = TRUE; }
|
||||
GIVEN {
|
||||
ASSUME(gBattleMoves[MOVE_HYPER_VOICE].category == BATTLE_CATEGORY_SPECIAL);
|
||||
PLAYER(SPECIES_CHERRIM_OVERCAST) { Ability(ABILITY_FLOWER_GIFT); }
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
|
||||
@ -15,6 +15,7 @@ SINGLE_BATTLE_TEST("Innards Out deal dmg on fainting equal to the amount of dmg
|
||||
OPPONENT(SPECIES_WOBBUFFET) { HP(70); SpAttack(1000); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
ASSUME(gBattleMoves[MOVE_PSYCHIC].power != 0);
|
||||
ASSUME(gBattleMoves[MOVE_PSYCHIC].category == BATTLE_CATEGORY_SPECIAL);
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_PSYCHIC); SEND_OUT(player, 1); if (hp == 100) { SEND_OUT(opponent, 1); } }
|
||||
} SCENE {
|
||||
|
||||
@ -1,6 +1,11 @@
|
||||
#include "global.h"
|
||||
#include "test/battle.h"
|
||||
|
||||
ASSUMPTIONS
|
||||
{
|
||||
ASSUME(gBattleMoves[MOVE_TACKLE].category == BATTLE_CATEGORY_PHYSICAL);
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Opportunist only copies foe's positive stat changes in a turn", s16 damage)
|
||||
{
|
||||
u32 ability;
|
||||
|
||||
@ -9,6 +9,7 @@ SINGLE_BATTLE_TEST("Swarm boosts Bug-type moves in a pinch", s16 damage)
|
||||
GIVEN {
|
||||
ASSUME(gBattleMoves[MOVE_BUG_BITE].type == TYPE_BUG);
|
||||
ASSUME(gBattleMoves[MOVE_BUG_BITE].power == 60);
|
||||
ASSUME(gBattleMoves[MOVE_BUG_BITE].category == BATTLE_CATEGORY_PHYSICAL);
|
||||
ASSUME(gSpeciesInfo[SPECIES_LEDYBA].types[0] == TYPE_BUG);
|
||||
ASSUME(gSpeciesInfo[SPECIES_WOBBUFFET].types[0] == TYPE_PSYCHIC);
|
||||
ASSUME(gSpeciesInfo[SPECIES_WOBBUFFET].types[1] == TYPE_PSYCHIC);
|
||||
|
||||
@ -1,6 +1,12 @@
|
||||
#include "global.h"
|
||||
#include "test/battle.h"
|
||||
|
||||
ASSUMPTIONS
|
||||
{
|
||||
ASSUME(gBattleMoves[MOVE_TACKLE].category == BATTLE_CATEGORY_PHYSICAL);
|
||||
ASSUME(gBattleMoves[MOVE_SWIFT].category == BATTLE_CATEGORY_SPECIAL);
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Toxic Debris sets Toxic Spikes on the opposing side if hit by a physical attack")
|
||||
{
|
||||
u32 move;
|
||||
|
||||
@ -110,6 +110,15 @@ AI_SINGLE_BATTLE_TEST("AI prefers moves with better accuracy, but only if they b
|
||||
ASSUME(gBattleMoves[MOVE_SHOCK_WAVE].accuracy == 0);
|
||||
ASSUME(gBattleMoves[MOVE_THUNDERBOLT].accuracy == 100);
|
||||
ASSUME(gBattleMoves[MOVE_ICY_WIND].accuracy != 100);
|
||||
ASSUME(gBattleMoves[MOVE_SLAM].category == BATTLE_CATEGORY_PHYSICAL);
|
||||
ASSUME(gBattleMoves[MOVE_STRENGTH].category == BATTLE_CATEGORY_PHYSICAL);
|
||||
ASSUME(gBattleMoves[MOVE_TACKLE].category == BATTLE_CATEGORY_PHYSICAL);
|
||||
ASSUME(gBattleMoves[MOVE_MEGA_KICK].category == BATTLE_CATEGORY_PHYSICAL);
|
||||
ASSUME(gBattleMoves[MOVE_SWIFT].category == BATTLE_CATEGORY_SPECIAL);
|
||||
ASSUME(gBattleMoves[MOVE_SHOCK_WAVE].category == BATTLE_CATEGORY_SPECIAL);
|
||||
ASSUME(gBattleMoves[MOVE_ICY_WIND].category == BATTLE_CATEGORY_SPECIAL);
|
||||
ASSUME(gBattleMoves[MOVE_THUNDERBOLT].category == BATTLE_CATEGORY_SPECIAL);
|
||||
ASSUME(gBattleMoves[MOVE_GUST].category == BATTLE_CATEGORY_SPECIAL);
|
||||
OPPONENT(SPECIES_EXPLOUD) { Moves(move1, move2, move3, move4); Ability(abilityAtk); SpAttack(50); } // Low Sp.Atk, so Swift deals less damage than Strength.
|
||||
} WHEN {
|
||||
switch (turns)
|
||||
@ -157,6 +166,10 @@ AI_SINGLE_BATTLE_TEST("AI prefers moves which deal more damage instead of moves
|
||||
PARAMETRIZE { move1 = MOVE_POISON_JAB; move2 = MOVE_WATER_GUN; expectedMove = MOVE_POISON_JAB; abilityDef = ABILITY_IMMUNITY; turns = 3; }
|
||||
|
||||
GIVEN {
|
||||
ASSUME(gBattleMoves[MOVE_WATERFALL].category == BATTLE_CATEGORY_PHYSICAL);
|
||||
ASSUME(gBattleMoves[MOVE_SCALD].category == BATTLE_CATEGORY_SPECIAL);
|
||||
ASSUME(gBattleMoves[MOVE_POISON_JAB].category == BATTLE_CATEGORY_PHYSICAL);
|
||||
ASSUME(gBattleMoves[MOVE_WATER_GUN].category == BATTLE_CATEGORY_SPECIAL);
|
||||
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT);
|
||||
PLAYER(SPECIES_TYPHLOSION) { Ability(abilityDef); }
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
@ -183,6 +196,8 @@ AI_SINGLE_BATTLE_TEST("AI prefers Earthquake over Drill Run if both require the
|
||||
{
|
||||
// Drill Run has less accuracy than E-quake, but can score a higher crit. However the chance is too small, so AI should ignore it.
|
||||
GIVEN {
|
||||
ASSUME(gBattleMoves[MOVE_EARTHQUAKE].category == BATTLE_CATEGORY_PHYSICAL); // Added because Geodude has to KO Typhlosion
|
||||
ASSUME(gBattleMoves[MOVE_DRILL_RUN].category == BATTLE_CATEGORY_PHYSICAL); // Added because Geodude has to KO Typhlosion
|
||||
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT);
|
||||
PLAYER(SPECIES_TYPHLOSION);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
@ -207,6 +222,8 @@ AI_SINGLE_BATTLE_TEST("AI prefers a weaker move over a one with a downside effec
|
||||
PARAMETRIZE { move1 = MOVE_OVERHEAT; move2 = MOVE_FLAMETHROWER; hp = 250; expectedMove = MOVE_OVERHEAT; turns = 1; }
|
||||
|
||||
GIVEN {
|
||||
ASSUME(gBattleMoves[MOVE_FLAMETHROWER].category == BATTLE_CATEGORY_SPECIAL); // Added because Typhlosion has to KO Wobbuffet
|
||||
ASSUME(gBattleMoves[MOVE_OVERHEAT].category == BATTLE_CATEGORY_SPECIAL); // Added because Typhlosion has to KO Wobbuffet
|
||||
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT);
|
||||
PLAYER(SPECIES_WOBBUFFET) { HP(hp); }
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
@ -245,6 +262,8 @@ AI_SINGLE_BATTLE_TEST("AI prefers moves with the best possible score, chosen ran
|
||||
AI_SINGLE_BATTLE_TEST("AI can choose a status move that boosts the attack by two")
|
||||
{
|
||||
GIVEN {
|
||||
ASSUME(gBattleMoves[MOVE_STRENGTH].category == BATTLE_CATEGORY_PHYSICAL);
|
||||
ASSUME(gBattleMoves[MOVE_HORN_ATTACK].category == BATTLE_CATEGORY_PHYSICAL);
|
||||
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT);
|
||||
PLAYER(SPECIES_WOBBUFFET) { HP(277); };
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
@ -308,6 +327,8 @@ AI_SINGLE_BATTLE_TEST("AI won't use Solar Beam if there is no Sun up or the user
|
||||
PARAMETRIZE { }
|
||||
|
||||
GIVEN {
|
||||
ASSUME(gBattleMoves[MOVE_SOLAR_BEAM].category == BATTLE_CATEGORY_SPECIAL);
|
||||
ASSUME(gBattleMoves[MOVE_GRASS_PLEDGE].category == BATTLE_CATEGORY_SPECIAL);
|
||||
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT);
|
||||
PLAYER(SPECIES_WOBBUFFET) { HP(211); }
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
@ -331,14 +352,15 @@ AI_SINGLE_BATTLE_TEST("AI won't use Solar Beam if there is no Sun up or the user
|
||||
AI_SINGLE_BATTLE_TEST("AI won't use ground type attacks against flying type Pokemon unless Gravity is in effect")
|
||||
{
|
||||
GIVEN {
|
||||
ASSUME(gBattleMoves[MOVE_EARTHQUAKE].category == BATTLE_CATEGORY_PHYSICAL); // Otherwise, it doesn't KO Crobat
|
||||
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT);
|
||||
PLAYER(SPECIES_CROBAT);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_NIDOQUEEN) { Moves(MOVE_EARTHQUAKE, MOVE_TACKLE, MOVE_POISON_STING, MOVE_GUST); }
|
||||
} WHEN {
|
||||
TURN { NOT_EXPECT_MOVE(opponent, MOVE_EARTHQUAKE); }
|
||||
TURN { MOVE(player, MOVE_GRAVITY); NOT_EXPECT_MOVE(opponent, MOVE_EARTHQUAKE); }
|
||||
TURN { EXPECT_MOVE(opponent, MOVE_EARTHQUAKE); SEND_OUT(player, 1); }
|
||||
TURN { NOT_EXPECT_MOVE(opponent, MOVE_EARTHQUAKE); }
|
||||
TURN { MOVE(player, MOVE_GRAVITY); NOT_EXPECT_MOVE(opponent, MOVE_EARTHQUAKE); }
|
||||
TURN { EXPECT_MOVE(opponent, MOVE_EARTHQUAKE); SEND_OUT(player, 1); }
|
||||
} SCENE {
|
||||
MESSAGE("Gravity intensified!");
|
||||
}
|
||||
@ -492,6 +514,11 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: AI will not switch in a Pokemo
|
||||
PARAMETRIZE{ speedAlakazm = 400; alakazamFirst = TRUE; aiSmartSwitchFlags = AI_FLAG_SMART_SWITCHING | AI_FLAG_SMART_MON_CHOICES; } // AI_FLAG_SMART_MON_CHOICES recognizes that Alakazam is faster and can KO, and will switch it in
|
||||
|
||||
GIVEN {
|
||||
ASSUME(gBattleMoves[MOVE_PSYCHIC].category == BATTLE_CATEGORY_SPECIAL);
|
||||
ASSUME(gBattleMoves[MOVE_FOCUS_BLAST].category == BATTLE_CATEGORY_SPECIAL);
|
||||
ASSUME(gBattleMoves[MOVE_BUBBLE_BEAM].category == BATTLE_CATEGORY_SPECIAL);
|
||||
ASSUME(gBattleMoves[MOVE_WATER_GUN].category == BATTLE_CATEGORY_SPECIAL);
|
||||
ASSUME(gBattleMoves[MOVE_STRENGTH].category == BATTLE_CATEGORY_PHYSICAL);
|
||||
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | aiSmartSwitchFlags);
|
||||
PLAYER(SPECIES_WEAVILE) { Speed(300); Ability(ABILITY_SHADOW_TAG); } // Weavile has Shadow Tag, so AI can't switch on the first turn, but has to do it after fainting.
|
||||
OPPONENT(SPECIES_KADABRA) { Speed(200); Moves(MOVE_PSYCHIC, MOVE_DISABLE, MOVE_TAUNT, MOVE_CALM_MIND); }
|
||||
@ -526,32 +553,6 @@ AI_SINGLE_BATTLE_TEST("AI switches if Perish Song is about to kill")
|
||||
}
|
||||
}
|
||||
|
||||
AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: AI will not switch in a Pokemon which is slower and gets 1HKOed after fainting")
|
||||
{
|
||||
bool32 alakazamFaster;
|
||||
u32 speedAlakazm;
|
||||
|
||||
PARAMETRIZE{ speedAlakazm = 200; alakazamFaster = FALSE; }
|
||||
PARAMETRIZE{ speedAlakazm = 400; alakazamFaster = TRUE; }
|
||||
|
||||
GIVEN {
|
||||
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_MON_CHOICES);
|
||||
PLAYER(SPECIES_WEAVILE) { Speed(300); Ability(ABILITY_SHADOW_TAG); } // Weavile has Shadow Tag, so AI can't switch on the first turn, but has to do it after fainting.
|
||||
OPPONENT(SPECIES_KADABRA) { Speed(200); Moves(MOVE_PSYCHIC, MOVE_DISABLE, MOVE_TAUNT, MOVE_CALM_MIND); }
|
||||
OPPONENT(SPECIES_ALAKAZAM) { Speed(speedAlakazm); Moves(MOVE_FOCUS_BLAST, MOVE_PSYCHIC); } // Alakazam has a move which OHKOes Weavile, but it doesn't matter if he's getting KO-ed first.
|
||||
OPPONENT(SPECIES_BLASTOISE) { Speed(200); Moves(MOVE_BUBBLE_BEAM, MOVE_WATER_GUN, MOVE_LEER, MOVE_STRENGTH); } // Can't OHKO, but survives a hit from Weavile's Night Slash.
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_NIGHT_SLASH) ; EXPECT_SEND_OUT(opponent, alakazamFaster ? 1 : 2); }
|
||||
} SCENE {
|
||||
MESSAGE("Foe Kadabra fainted!");
|
||||
if (alakazamFaster) {
|
||||
MESSAGE("{PKMN} TRAINER LEAF sent out Alakazam!");
|
||||
} else {
|
||||
MESSAGE("{PKMN} TRAINER LEAF sent out Blastoise!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: AI considers hazard damage when choosing which Pokemon to switch in")
|
||||
{
|
||||
u32 aiIsSmart = 0;
|
||||
@ -643,20 +644,24 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will not switch out if Pokemo
|
||||
PARAMETRIZE{move1 = MOVE_RAPID_SPIN; }
|
||||
|
||||
GIVEN {
|
||||
ASSUME(gBattleMoves[MOVE_TACKLE].category == BATTLE_CATEGORY_PHYSICAL);
|
||||
ASSUME(gBattleMoves[MOVE_RAPID_SPIN].category == BATTLE_CATEGORY_PHYSICAL);
|
||||
ASSUME(gBattleMoves[MOVE_EARTHQUAKE].category == BATTLE_CATEGORY_PHYSICAL);
|
||||
ASSUME(gBattleMoves[MOVE_HEADBUTT].category == BATTLE_CATEGORY_PHYSICAL);
|
||||
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_SWITCHING);
|
||||
PLAYER(SPECIES_HITMONTOP) { Level(30); Moves(MOVE_CHARM, MOVE_TACKLE, MOVE_STEALTH_ROCK, MOVE_EARTHQUAKE); Ability(ABILITY_INTIMIDATE); Speed(5); }
|
||||
OPPONENT(SPECIES_GRIMER) { Level(30); Moves(MOVE_TACKLE); Item(ITEM_FOCUS_SASH); Speed(4); }
|
||||
OPPONENT(SPECIES_PONYTA) { Level(30); Moves(MOVE_HEADBUTT, move1); Speed(4); }
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_STEALTH_ROCK) ;}
|
||||
TURN { MOVE(player, MOVE_EARTHQUAKE) ;}
|
||||
TURN { MOVE(player, MOVE_CHARM) ;}
|
||||
TURN { // If the AI has a mon that can remove hazards, don't prevent them switching out
|
||||
MOVE(player, MOVE_CHARM);
|
||||
if (move1 == MOVE_RAPID_SPIN)
|
||||
EXPECT_SWITCH(opponent, 1);
|
||||
else if (move1 == MOVE_TACKLE)
|
||||
EXPECT_MOVE(opponent, MOVE_TACKLE);
|
||||
}
|
||||
TURN { MOVE(player, MOVE_STEALTH_ROCK) ;}
|
||||
TURN { MOVE(player, MOVE_EARTHQUAKE) ;}
|
||||
TURN { MOVE(player, MOVE_CHARM) ;}
|
||||
TURN { // If the AI has a mon that can remove hazards, don't prevent them switching out
|
||||
MOVE(player, MOVE_CHARM);
|
||||
if (move1 == MOVE_RAPID_SPIN)
|
||||
EXPECT_SWITCH(opponent, 1);
|
||||
else if (move1 == MOVE_TACKLE)
|
||||
EXPECT_MOVE(opponent, MOVE_TACKLE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -157,6 +157,8 @@ AI_SINGLE_BATTLE_TEST("AI can choose Counter or Mirror Coat if the predicted mov
|
||||
GIVEN {
|
||||
ASSUME(gBattleMoves[MOVE_COUNTER].effect == EFFECT_COUNTER);
|
||||
ASSUME(gBattleMoves[MOVE_MIRROR_COAT].effect == EFFECT_MIRROR_COAT);
|
||||
ASSUME(gBattleMoves[MOVE_STRENGTH].category == BATTLE_CATEGORY_PHYSICAL);
|
||||
ASSUME(gBattleMoves[MOVE_POWER_GEM].category == BATTLE_CATEGORY_SPECIAL);
|
||||
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT);
|
||||
PLAYER(SPECIES_WOBBUFFET) { Speed(1); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { HP(102); Speed(100); Moves(opponentMove, MOVE_STRENGTH); }
|
||||
|
||||
@ -24,6 +24,7 @@ SINGLE_BATTLE_TEST("Damage calculation matches Gen5+")
|
||||
PARAMETRIZE { expectedDamage = 168; }
|
||||
PARAMETRIZE { expectedDamage = 168; }
|
||||
GIVEN {
|
||||
ASSUME(gBattleMoves[MOVE_ICE_FANG].category == BATTLE_CATEGORY_PHYSICAL);
|
||||
PLAYER(SPECIES_GLACEON) { Level(75); Attack(123); }
|
||||
OPPONENT(SPECIES_GARCHOMP) { Defense(163); }
|
||||
} WHEN {
|
||||
@ -61,6 +62,7 @@ SINGLE_BATTLE_TEST("Damage calculation matches Gen5+ (Muscle Band, crit)")
|
||||
PARAMETRIZE { expectedDamage = 276; }
|
||||
PARAMETRIZE { expectedDamage = 268; }
|
||||
GIVEN {
|
||||
ASSUME(gBattleMoves[MOVE_ICE_FANG].category == BATTLE_CATEGORY_PHYSICAL);
|
||||
PLAYER(SPECIES_GLACEON) { Level(75); Attack(123); Item(ITEM_MUSCLE_BAND); }
|
||||
OPPONENT(SPECIES_GARCHOMP) { Defense(163); }
|
||||
} WHEN {
|
||||
@ -98,6 +100,7 @@ SINGLE_BATTLE_TEST("Damage calculation matches Gen5+ (Marshadow vs Mawile)")
|
||||
PARAMETRIZE { expectedDamage = 124; }
|
||||
PARAMETRIZE { expectedDamage = 123; }
|
||||
GIVEN {
|
||||
ASSUME(gBattleMoves[MOVE_SPECTRAL_THIEF].category == BATTLE_CATEGORY_PHYSICAL);
|
||||
PLAYER(SPECIES_MARSHADOW) { Level(100); Attack(286); }
|
||||
OPPONENT(SPECIES_MAWILE) { Level(100); Defense(226); HP(241); }
|
||||
} WHEN {
|
||||
|
||||
@ -12,6 +12,7 @@ SINGLE_BATTLE_TEST("Berserk Gene sharply raises attack at the start of a single
|
||||
PARAMETRIZE { item = ITEM_NONE; }
|
||||
PARAMETRIZE { item = ITEM_BERSERK_GENE; }
|
||||
GIVEN {
|
||||
ASSUME(gBattleMoves[MOVE_TACKLE].category == BATTLE_CATEGORY_PHYSICAL);
|
||||
PLAYER(SPECIES_WOBBUFFET) { Item(item); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
@ -36,6 +37,7 @@ DOUBLE_BATTLE_TEST("Berserk Gene sharply raises attack at the start of a double
|
||||
PARAMETRIZE { item = ITEM_NONE; }
|
||||
PARAMETRIZE { item = ITEM_BERSERK_GENE; }
|
||||
GIVEN {
|
||||
ASSUME(gBattleMoves[MOVE_TACKLE].category == BATTLE_CATEGORY_PHYSICAL);
|
||||
PLAYER(SPECIES_WYNAUT);
|
||||
PLAYER(SPECIES_WOBBUFFET) { Item(item); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
@ -62,6 +64,7 @@ SINGLE_BATTLE_TEST("Berserk Gene activates on switch in", s16 damage)
|
||||
PARAMETRIZE { item = ITEM_NONE; }
|
||||
PARAMETRIZE { item = ITEM_BERSERK_GENE; }
|
||||
GIVEN {
|
||||
ASSUME(gBattleMoves[MOVE_TACKLE].category == BATTLE_CATEGORY_PHYSICAL);
|
||||
PLAYER(SPECIES_WYNAUT);
|
||||
PLAYER(SPECIES_WOBBUFFET) { Item(item); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
@ -88,6 +91,7 @@ SINGLE_BATTLE_TEST("Berserk Gene does not confuse a Pokemon with Own Tempo but s
|
||||
PARAMETRIZE { item = ITEM_NONE; }
|
||||
PARAMETRIZE { item = ITEM_BERSERK_GENE; }
|
||||
GIVEN {
|
||||
ASSUME(gBattleMoves[MOVE_TACKLE].category == BATTLE_CATEGORY_PHYSICAL);
|
||||
PLAYER(SPECIES_SLOWBRO) { Ability(ABILITY_OWN_TEMPO); Item(item); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
@ -118,6 +122,7 @@ DOUBLE_BATTLE_TEST("Berserk Gene does not confuse a Pokemon with Own Tempo but s
|
||||
PARAMETRIZE { item = ITEM_BERSERK_GENE; positionLeft = TRUE; }
|
||||
PARAMETRIZE { item = ITEM_BERSERK_GENE; positionLeft = FALSE; }
|
||||
GIVEN {
|
||||
ASSUME(gBattleMoves[MOVE_TACKLE].category == BATTLE_CATEGORY_PHYSICAL);
|
||||
if (positionLeft) {
|
||||
PLAYER(SPECIES_SLOWBRO) { Ability(ABILITY_OWN_TEMPO); Item(item); }
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
@ -151,6 +156,7 @@ DOUBLE_BATTLE_TEST("Berserk Gene does not confuse a Pokemon with Own Tempo but s
|
||||
SINGLE_BATTLE_TEST("Berserk Gene does not confuse on Misty Terrain but still raises attack sharply")
|
||||
{
|
||||
GIVEN {
|
||||
ASSUME(gBattleMoves[MOVE_TACKLE].category == BATTLE_CATEGORY_PHYSICAL);
|
||||
PLAYER(SPECIES_TAPU_FINI) { Ability(ABILITY_MISTY_SURGE); Item(ITEM_BERSERK_GENE); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
|
||||
@ -12,6 +12,7 @@ SINGLE_BATTLE_TEST("Mirror Herb copies all of foe's positive stat changes in a t
|
||||
PARAMETRIZE { item = ITEM_NONE; }
|
||||
PARAMETRIZE { item = ITEM_MIRROR_HERB; }
|
||||
GIVEN {
|
||||
ASSUME(gBattleMoves[MOVE_TACKLE].category == BATTLE_CATEGORY_PHYSICAL);
|
||||
PLAYER(SPECIES_WOBBUFFET) { Speed(4); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Speed(5); Item(item); }
|
||||
} WHEN {
|
||||
|
||||
@ -8,6 +8,7 @@ SINGLE_BATTLE_TEST("X Attack sharply raises battler's Attack stat", s16 damage)
|
||||
PARAMETRIZE { useItem = TRUE; }
|
||||
GIVEN {
|
||||
ASSUME(gItems[ITEM_X_ATTACK].battleUsage == EFFECT_ITEM_INCREASE_STAT);
|
||||
ASSUME(gBattleMoves[MOVE_TACKLE].category == BATTLE_CATEGORY_PHYSICAL);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
@ -31,6 +32,7 @@ SINGLE_BATTLE_TEST("X Defense sharply raises battler's Defense stat", s16 damage
|
||||
PARAMETRIZE { useItem = TRUE; }
|
||||
GIVEN {
|
||||
ASSUME(gItems[ITEM_X_DEFENSE].battleUsage == EFFECT_ITEM_INCREASE_STAT);
|
||||
ASSUME(gBattleMoves[MOVE_TACKLE].category == BATTLE_CATEGORY_PHYSICAL);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
@ -54,6 +56,7 @@ SINGLE_BATTLE_TEST("X Sp. Atk sharply raises battler's Sp. Attack stat", s16 dam
|
||||
PARAMETRIZE { useItem = TRUE; }
|
||||
GIVEN {
|
||||
ASSUME(gItems[ITEM_X_SP_ATK].battleUsage == EFFECT_ITEM_INCREASE_STAT);
|
||||
ASSUME(gBattleMoves[MOVE_DISARMING_VOICE].category == BATTLE_CATEGORY_SPECIAL);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
@ -77,6 +80,7 @@ SINGLE_BATTLE_TEST("X Sp. Def sharply raises battler's Sp. Defense stat", s16 da
|
||||
PARAMETRIZE { useItem = TRUE; }
|
||||
GIVEN {
|
||||
ASSUME(gItems[ITEM_X_SP_DEF].battleUsage == EFFECT_ITEM_INCREASE_STAT);
|
||||
ASSUME(gBattleMoves[MOVE_DISARMING_VOICE].category == BATTLE_CATEGORY_SPECIAL);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
|
||||
@ -362,6 +362,7 @@ SINGLE_BATTLE_TEST("Fling - thrown berry's effect activates for the target even
|
||||
PARAMETRIZE { item = ITEM_SALAC_BERRY; effect = HOLD_EFFECT_SPEED_UP; statId = STAT_SPEED; }
|
||||
|
||||
GIVEN {
|
||||
ASSUME(gBattleMoves[MOVE_FLING].category == BATTLE_CATEGORY_PHYSICAL);
|
||||
PLAYER(SPECIES_WOBBUFFET) { Item(item); Attack(1); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Status1(status1); HP(399); MaxHP(400); MovesWithPP({MOVE_CELEBRATE, 35}); }
|
||||
} WHEN {
|
||||
|
||||
@ -97,7 +97,7 @@ SINGLE_BATTLE_TEST("Glaive Rush doesn't affect the user if the effect is blocked
|
||||
u32 species;
|
||||
|
||||
PARAMETRIZE { species = SPECIES_CLEFAIRY; }
|
||||
PARAMETRIZE { species = SPECIES_WOBBUFFET; }
|
||||
PARAMETRIZE { species = SPECIES_SHELLOS; } // Closest mon in both Defense and Sp. Defense
|
||||
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
|
||||
@ -69,7 +69,6 @@ SINGLE_BATTLE_TEST("Healing Wish effect activates only if the switched pokemon c
|
||||
MESSAGE("Wynaut regained health!");
|
||||
}
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_U_TURN, player);
|
||||
MESSAGE("Do it! Wynaut!");
|
||||
MESSAGE("The healing wish came true for Wynaut!");
|
||||
HP_BAR(player, hp: 100);
|
||||
STATUS_ICON(player, none: TRUE);
|
||||
|
||||
@ -67,7 +67,7 @@ SINGLE_BATTLE_TEST("U-turn does not switch the user out if Wimp Out activates")
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
PLAYER(SPECIES_WYNAUT);
|
||||
OPPONENT(SPECIES_WIMPOD) { MaxHP(100); HP(51); Ability(ABILITY_WIMP_OUT); }
|
||||
OPPONENT(SPECIES_WIMPOD) { MaxHP(200); HP(101); Ability(ABILITY_WIMP_OUT); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_U_TURN); SEND_OUT(opponent, 1); }
|
||||
@ -84,20 +84,21 @@ SINGLE_BATTLE_TEST("U-turn switches the user out if Wimp Out fails to activate")
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
PLAYER(SPECIES_WYNAUT);
|
||||
OPPONENT(SPECIES_WIMPOD) { MaxHP(100); HP(51); Ability(ABILITY_WIMP_OUT); }
|
||||
OPPONENT(SPECIES_WIMPOD) { MaxHP(200); HP(101); Ability(ABILITY_WIMP_OUT); }
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_U_TURN); SEND_OUT(player, 1); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_U_TURN, player);
|
||||
HP_BAR(opponent);
|
||||
NOT ABILITY_POPUP(opponent);
|
||||
MESSAGE("Your foe's weak! Get 'em, Wynaut!");
|
||||
MESSAGE("Go for it, Wynaut!");
|
||||
}
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("U-turn switches the user out after Ice Face activates")
|
||||
{
|
||||
GIVEN {
|
||||
ASSUME(gBattleMoves[MOVE_U_TURN].category == BATTLE_CATEGORY_PHYSICAL);
|
||||
PLAYER(SPECIES_BEEDRILL);
|
||||
PLAYER(SPECIES_WYNAUT);
|
||||
OPPONENT(SPECIES_EISCUE) { Ability(ABILITY_ICE_FACE); }
|
||||
|
||||
@ -12,6 +12,7 @@ SINGLE_BATTLE_TEST("Make It Rain lowers special attack by one stage")
|
||||
s16 damage[2];
|
||||
|
||||
GIVEN {
|
||||
ASSUME(gBattleMoves[MOVE_MAKE_IT_RAIN].category == BATTLE_CATEGORY_SPECIAL);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
|
||||
@ -9,6 +9,8 @@ ASSUMPTIONS
|
||||
SINGLE_BATTLE_TEST("Photon Geyser can be mirror coated if it is a special move")
|
||||
{
|
||||
GIVEN {
|
||||
// EFFECT_PHOTON_GEYSER requires the move data to be Special to work
|
||||
ASSUME(gBattleMoves[MOVE_PHOTON_GEYSER].category == BATTLE_CATEGORY_SPECIAL);
|
||||
PLAYER(SPECIES_WOBBUFFET) { Attack(100); SpAttack(110); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
|
||||
@ -313,6 +313,7 @@ DOUBLE_BATTLE_TEST("Damage calculation: Combined pledge move")
|
||||
PARAMETRIZE { expectedDamage = 136; }
|
||||
PARAMETRIZE { expectedDamage = 135; }
|
||||
GIVEN {
|
||||
ASSUME(gBattleMoves[MOVE_GRASS_PLEDGE].category == BATTLE_CATEGORY_SPECIAL);
|
||||
PLAYER(SPECIES_WOBBUFFET) { Speed(4); }
|
||||
PLAYER(SPECIES_WOBBUFFET) { HP(521); SpDefense(152); Speed(3); }
|
||||
OPPONENT(SPECIES_CHARIZARD) { Speed(8); }
|
||||
|
||||
@ -130,6 +130,7 @@ SINGLE_BATTLE_TEST("Rage Fist base power is not increased if a substitute was hi
|
||||
s16 timesGotHit[2];
|
||||
|
||||
GIVEN {
|
||||
ASSUME(gBattleMoves[MOVE_CRUNCH].category == BATTLE_CATEGORY_PHYSICAL); // Substitute doesn't fade otherwise
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_REGIROCK);
|
||||
} WHEN {
|
||||
|
||||
@ -12,6 +12,7 @@ SINGLE_BATTLE_TEST("Reflect reduces physical damage", s16 damage)
|
||||
PARAMETRIZE { move = MOVE_CELEBRATE; }
|
||||
PARAMETRIZE { move = MOVE_REFLECT; }
|
||||
GIVEN {
|
||||
ASSUME(gBattleMoves[MOVE_TACKLE].category == BATTLE_CATEGORY_PHYSICAL);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
@ -29,6 +30,7 @@ SINGLE_BATTLE_TEST("Reflect applies for 5 turns")
|
||||
{
|
||||
s16 damage[6];
|
||||
GIVEN {
|
||||
ASSUME(gBattleMoves[MOVE_TACKLE].category == BATTLE_CATEGORY_PHYSICAL);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
|
||||
@ -24,6 +24,7 @@ SINGLE_BATTLE_TEST("Burn reduces Attack by 50%", s16 damage)
|
||||
PARAMETRIZE { burned = FALSE; }
|
||||
PARAMETRIZE { burned = TRUE; }
|
||||
GIVEN {
|
||||
ASSUME(gBattleMoves[MOVE_TACKLE].category == BATTLE_CATEGORY_PHYSICAL);
|
||||
PLAYER(SPECIES_WOBBUFFET) { if (burned) Status1(STATUS1_BURN); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
|
||||
@ -7,6 +7,7 @@ SINGLE_BATTLE_TEST("Frostbite reduces the special attack by 50 percent")
|
||||
s16 normaleDamage;
|
||||
|
||||
GIVEN {
|
||||
ASSUME(gBattleMoves[MOVE_SWIFT].category == BATTLE_CATEGORY_SPECIAL);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Status1(STATUS1_FROSTBITE); }
|
||||
} WHEN {
|
||||
|
||||
@ -23,6 +23,7 @@ SINGLE_BATTLE_TEST("Sandstorm multiplies the special defense of Rock-types by 1.
|
||||
PARAMETRIZE{ move = MOVE_SANDSTORM; }
|
||||
PARAMETRIZE{ move = MOVE_CELEBRATE; }
|
||||
GIVEN {
|
||||
ASSUME(gBattleMoves[MOVE_SWIFT].category == BATTLE_CATEGORY_SPECIAL);
|
||||
PLAYER(SPECIES_WOBBUFFET) ;
|
||||
OPPONENT(SPECIES_NOSEPASS);
|
||||
} WHEN {
|
||||
|
||||
@ -7,6 +7,7 @@ ASSUMPTIONS
|
||||
ASSUME(gBattleMoves[MOVE_SNOWSCAPE].effect == EFFECT_SNOWSCAPE);
|
||||
ASSUME(gSpeciesInfo[SPECIES_WOBBUFFET].types[0] != TYPE_ICE && gSpeciesInfo[SPECIES_WOBBUFFET].types[1] != TYPE_ICE);
|
||||
ASSUME(gSpeciesInfo[SPECIES_GLALIE].types[0] == TYPE_ICE || gSpeciesInfo[SPECIES_GLALIE].types[1] == TYPE_ICE);
|
||||
ASSUME(gBattleMoves[MOVE_TACKLE].category == BATTLE_CATEGORY_PHYSICAL);
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Snow multiplies the defense of Ice-types by 1.5x", s16 damage)
|
||||
|
||||
@ -701,6 +701,8 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) Max Knuckle raises both allies' attack")
|
||||
s16 damage[4];
|
||||
GIVEN {
|
||||
ASSUME(gBattleMoves[MOVE_MAX_KNUCKLE].argument == MAX_EFFECT_RAISE_TEAM_ATTACK);
|
||||
ASSUME(gBattleMoves[MOVE_CLOSE_COMBAT].category == BATTLE_CATEGORY_PHYSICAL);
|
||||
ASSUME(gBattleMoves[MOVE_TACKLE].category == BATTLE_CATEGORY_PHYSICAL);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
PLAYER(SPECIES_WYNAUT);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
@ -1271,6 +1273,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Snooze makes only the target drowsy")
|
||||
PASSES_RANDOMLY(1, 2, RNG_G_MAX_SNOOZE);
|
||||
GIVEN {
|
||||
ASSUME(gBattleMoves[MOVE_G_MAX_SNOOZE].argument == MAX_EFFECT_YAWN_FOE);
|
||||
ASSUME(gBattleMoves[MOVE_DARK_PULSE].category == BATTLE_CATEGORY_SPECIAL); // Otherwise, Blissey faints.
|
||||
PLAYER(SPECIES_GRIMMSNARL) { GigantamaxFactor(TRUE); }
|
||||
PLAYER(SPECIES_IMPIDIMP);
|
||||
OPPONENT(SPECIES_BLISSEY);
|
||||
@ -1391,6 +1394,7 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Chi Strike boosts allies' crit chance")
|
||||
DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Depletion takes away 2 PP from the target's last move")
|
||||
{
|
||||
GIVEN {
|
||||
ASSUME(gBattleMoves[MOVE_DRAGON_CLAW].category == BATTLE_CATEGORY_PHYSICAL); // Otherwise Sableye faints.
|
||||
ASSUME(gBattleMoves[MOVE_G_MAX_DEPLETION].argument == MAX_EFFECT_SPITE);
|
||||
PLAYER(SPECIES_DURALUDON) { GigantamaxFactor(TRUE); }
|
||||
PLAYER(SPECIES_WYNAUT);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user