#include "global.h" #include "test_battle.h" ASSUMPTIONS { ASSUME(gBattleMoves[MOVE_EMBER].power != 0); ASSUME(gBattleMoves[MOVE_EMBER].type == TYPE_FIRE); ASSUME(gBattleMoves[MOVE_WATER_GUN].power != 0); ASSUME(gBattleMoves[MOVE_WATER_GUN].type == TYPE_WATER); } SINGLE_BATTLE_TEST("Primordial Sea blocks damaging Fire-type moves") { GIVEN { PLAYER(SPECIES_KYOGRE) {Item(ITEM_BLUE_ORB);} OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(opponent, MOVE_EMBER); } TURN { MOVE(opponent, MOVE_EMBER); } } SCENE { MESSAGE("Foe Wobbuffet used Ember!"); NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_EMBER, opponent); MESSAGE("The Fire-type attack fizzled out\nin the heavy rain!"); NOT HP_BAR(player); MESSAGE("Foe Wobbuffet used Ember!"); NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_EMBER, opponent); MESSAGE("The Fire-type attack fizzled out\nin the heavy rain!"); NOT HP_BAR(player); } THEN { EXPECT_EQ(player->hp, player->maxHP); } } DOUBLE_BATTLE_TEST("Primordial Sea blocks damaging Fire-type moves and prints the message only once with moves hitting multiple targets") { GIVEN { ASSUME(gBattleMoves[MOVE_ERUPTION].power != 0); ASSUME(gBattleMoves[MOVE_ERUPTION].type == TYPE_FIRE); ASSUME(gBattleMoves[MOVE_ERUPTION].target == MOVE_TARGET_BOTH); PLAYER(SPECIES_KYOGRE) {Item(ITEM_BLUE_ORB); {Speed(5);}} PLAYER(SPECIES_WOBBUFFET) {Speed(5);} OPPONENT(SPECIES_WOBBUFFET) {Speed(10);} OPPONENT(SPECIES_WOBBUFFET) {Speed(8);} } WHEN { TURN { MOVE(opponentLeft, MOVE_ERUPTION); } } SCENE { MESSAGE("Foe Wobbuffet used Eruption!"); NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_ERUPTION, opponentLeft); MESSAGE("The Fire-type attack fizzled out\nin the heavy rain!"); NOT MESSAGE("The Fire-type attack fizzled out\nin the heavy rain!"); } THEN { EXPECT_EQ(playerLeft->hp, playerLeft->maxHP); EXPECT_EQ(playerRight->hp, playerRight->maxHP); } } SINGLE_BATTLE_TEST("Primordial Sea does not block a move if pokemon is asleep and uses a Fire-type move") // Sleep/confusion/paralysis all happen before the check for primal weather { GIVEN { PLAYER(SPECIES_KYOGRE) {Item(ITEM_BLUE_ORB);} OPPONENT(SPECIES_WOBBUFFET) {Status1(STATUS1_SLEEP);} } WHEN { TURN { MOVE(opponent, MOVE_EMBER); } } SCENE { NOT MESSAGE("The Fire-type attack fizzled out\nin the heavy rain!"); MESSAGE("Foe Wobbuffet is fast asleep."); } } SINGLE_BATTLE_TEST("Desolate Land blocks damaging Water-type moves") { GIVEN { PLAYER(SPECIES_GROUDON) {Item(ITEM_RED_ORB);} OPPONENT(SPECIES_WOBBUFFET); } WHEN { TURN { MOVE(opponent, MOVE_WATER_GUN); } TURN { MOVE(opponent, MOVE_WATER_GUN); } } SCENE { MESSAGE("Foe Wobbuffet used Water Gun!"); NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_WATER_GUN, opponent); MESSAGE("The Water-type attack evaporated in the harsh sunlight!"); NOT HP_BAR(player); MESSAGE("Foe Wobbuffet used Water Gun!"); NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_WATER_GUN, opponent); MESSAGE("The Water-type attack evaporated in the harsh sunlight!"); NOT HP_BAR(player); } THEN { EXPECT_EQ(player->hp, player->maxHP); } } DOUBLE_BATTLE_TEST("Desolate Land blocks damaging Water-type moves and prints the message only once with moves hitting multiple targets") { GIVEN { ASSUME(gBattleMoves[MOVE_SURF].power != 0); ASSUME(gBattleMoves[MOVE_SURF].type == TYPE_WATER); ASSUME(gBattleMoves[MOVE_SURF].target == MOVE_TARGET_FOES_AND_ALLY); PLAYER(SPECIES_GROUDON) {Item(ITEM_RED_ORB); {Speed(5);}} PLAYER(SPECIES_WOBBUFFET) {Speed(5);} OPPONENT(SPECIES_WOBBUFFET) {Speed(10);} OPPONENT(SPECIES_WOBBUFFET) {Speed(8);} } WHEN { TURN { MOVE(opponentLeft, MOVE_SURF); } } SCENE { MESSAGE("Foe Wobbuffet used Surf!"); NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_SURF, opponentLeft); MESSAGE("The Water-type attack evaporated in the harsh sunlight!"); NOT MESSAGE("The Water-type attack evaporated in the harsh sunlight!"); } THEN { EXPECT_EQ(playerLeft->hp, playerLeft->maxHP); EXPECT_EQ(playerRight->hp, playerRight->maxHP); EXPECT_EQ(opponentRight->hp, opponentRight->maxHP); } } SINGLE_BATTLE_TEST("Desolate Land does not block a move if pokemon is asleep and uses a Water-type move") // Sleep/confusion/paralysis all happen before the check for primal weather { GIVEN { PLAYER(SPECIES_GROUDON) {Item(ITEM_RED_ORB);} OPPONENT(SPECIES_WOBBUFFET) {Status1(STATUS1_SLEEP);} } WHEN { TURN { MOVE(opponent, MOVE_WATER_GUN); } } SCENE { NOT MESSAGE("The Water-type attack evaporated in the harsh sunlight!"); MESSAGE("Foe Wobbuffet is fast asleep."); } }