#include "global.h" #include "test/battle.h" ASSUMPTIONS { ASSUME(gMovesInfo[MOVE_TOXIC].effect == EFFECT_TOXIC); } SINGLE_BATTLE_TEST("Toxic inflicts bad poison") { GIVEN { PLAYER(SPECIES_WOBBUFFET); OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_TOXIC); } TURN {} } SCENE { ANIMATION(ANIM_TYPE_MOVE, MOVE_TOXIC, player); ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent); STATUS_ICON(opponent, badPoison: TRUE); } } SINGLE_BATTLE_TEST("Toxic cannot miss if used by a Poison-type") { u32 species; bool32 hit; PARAMETRIZE { species = SPECIES_WOBBUFFET; hit = FALSE; } PARAMETRIZE { species = SPECIES_NIDORAN_M; hit = TRUE; } GIVEN { ASSUME(B_TOXIC_NEVER_MISS >= GEN_6); ASSUME(gSpeciesInfo[SPECIES_NIDORAN_M].types[0] == TYPE_POISON); PLAYER(species); OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_TOXIC, hit: FALSE); } } SCENE { if (hit) { ANIMATION(ANIM_TYPE_MOVE, MOVE_TOXIC, player); ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent); STATUS_ICON(opponent, badPoison: TRUE); } else { NONE_OF { ANIMATION(ANIM_TYPE_MOVE, MOVE_TOXIC, player); ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent); STATUS_ICON(opponent, badPoison: TRUE); } } } } AI_SINGLE_BATTLE_TEST("AI avoids toxic when it can not poison target") { u32 species, ability; PARAMETRIZE { species = SPECIES_SNORLAX; ability = ABILITY_IMMUNITY; } PARAMETRIZE { species = SPECIES_KOMALA; ability = ABILITY_COMATOSE; } PARAMETRIZE { species = SPECIES_NACLI; ability = ABILITY_PURIFYING_SALT; } PARAMETRIZE { species = SPECIES_BULBASAUR; ability = ABILITY_OVERGROW; } GIVEN { 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_TOXIC); } } WHEN { TURN { SCORE_EQ(opponent, MOVE_CELEBRATE, MOVE_TOXIC); } // Both get -10 } }