#include "global.h" #include "test/battle.h" ASSUMPTIONS { ASSUME(gItemsInfo[ITEM_AIR_BALLOON].holdEffect == HOLD_EFFECT_AIR_BALLOON); ASSUME(GetMoveType(MOVE_EARTHQUAKE) == TYPE_GROUND); ASSUME(GetMoveType(MOVE_SCRATCH) != TYPE_GROUND); ASSUME(GetMoveEffect(MOVE_RECYCLE) == EFFECT_RECYCLE); } SINGLE_BATTLE_TEST("Air Balloon prevents the holder from taking damage from ground type moves") { GIVEN { PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_AIR_BALLOON); }; OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(opponent, MOVE_EARTHQUAKE); } } SCENE { MESSAGE("Wobbuffet floats in the air with its Air Balloon!"); MESSAGE("The opposing Wobbuffet used Earthquake!"); NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_EARTHQUAKE, opponent); MESSAGE("It doesn't affect Wobbuffet…"); } } SINGLE_BATTLE_TEST("Air Balloon pops when the holder is hit by a move that is not ground type") { GIVEN { PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_AIR_BALLOON); }; OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { MESSAGE("Wobbuffet floats in the air with its Air Balloon!"); MESSAGE("The opposing Wobbuffet used Scratch!"); MESSAGE("Wobbuffet's Air Balloon popped!"); } } SINGLE_BATTLE_TEST("Air Balloon no longer prevents the holder from taking damage from ground type moves once it has been popped") { GIVEN { PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_AIR_BALLOON); }; OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(opponent, MOVE_SCRATCH); } TURN { MOVE(opponent, MOVE_EARTHQUAKE); } } SCENE { MESSAGE("Wobbuffet floats in the air with its Air Balloon!"); MESSAGE("The opposing Wobbuffet used Scratch!"); MESSAGE("Wobbuffet's Air Balloon popped!"); MESSAGE("The opposing Wobbuffet used Earthquake!"); ANIMATION(ANIM_TYPE_MOVE, MOVE_EARTHQUAKE, opponent); NOT MESSAGE("It doesn't affect Wobbuffet…"); } } SINGLE_BATTLE_TEST("Air Balloon can not be restored with Recycle after it has been popped") { GIVEN { PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_AIR_BALLOON); }; OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(opponent, MOVE_SCRATCH); MOVE(player, MOVE_RECYCLE); } } SCENE { MESSAGE("Wobbuffet floats in the air with its Air Balloon!"); MESSAGE("The opposing Wobbuffet used Scratch!"); MESSAGE("Wobbuffet's Air Balloon popped!"); MESSAGE("Wobbuffet used Recycle!"); MESSAGE("But it failed!"); } } SINGLE_BATTLE_TEST("Air Balloon prevents the user from being healed by Grassy Terrain") { GIVEN { PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_AIR_BALLOON); MaxHP(100); HP(1); }; OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(player, MOVE_GRASSY_TERRAIN); } } SCENE { MESSAGE("Wobbuffet floats in the air with its Air Balloon!"); NOT MESSAGE("Wobbuffet is healed by the Grassy Terrain!"); } } SINGLE_BATTLE_TEST("Air Balloon pops before it can be stolen with Magician") { GIVEN { PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_AIR_BALLOON); }; OPPONENT(SPECIES_DELPHOX) { Ability(ABILITY_MAGICIAN); }; } WHEN { TURN { MOVE(opponent, MOVE_SCRATCH); } } SCENE { MESSAGE("Wobbuffet floats in the air with its Air Balloon!"); MESSAGE("Wobbuffet's Air Balloon popped!"); NOT ABILITY_POPUP(opponent, ABILITY_MAGICIAN); } } SINGLE_BATTLE_TEST("Air Balloon pops before it can be stolen by Thief") { GIVEN { ASSUME(GetMoveEffect(MOVE_THIEF) == EFFECT_STEAL_ITEM); PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_AIR_BALLOON); }; OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(opponent, MOVE_THIEF); } } SCENE { MESSAGE("Wobbuffet floats in the air with its Air Balloon!"); MESSAGE("Wobbuffet's Air Balloon popped!"); NOT MESSAGE("The opposing Wobbuffet stole Wobbuffet's Air Balloon!"); } }