diff --git a/test/battle/ability/aroma_veil.c b/test/battle/ability/aroma_veil.c index dc53fa149225..4965fec217e4 100644 --- a/test/battle/ability/aroma_veil.c +++ b/test/battle/ability/aroma_veil.c @@ -1,15 +1,198 @@ #include "global.h" #include "test/battle.h" -TO_DO_BATTLE_TEST("Aroma Veil protects the Pokémon's side from Taunt"); -TO_DO_BATTLE_TEST("Aroma Veil protects the Pokémon's side from Torment"); -TO_DO_BATTLE_TEST("Aroma Veil protects the Pokémon's side from Encore"); -TO_DO_BATTLE_TEST("Aroma Veil protects the Pokémon's side from Disable"); -TO_DO_BATTLE_TEST("Aroma Veil protects the Pokémon's side from Cursed Body"); -TO_DO_BATTLE_TEST("Aroma Veil protects the Pokémon's side from Heal Block"); -TO_DO_BATTLE_TEST("Aroma Veil protects the Pokémon's side from Infatuation"); -TO_DO_BATTLE_TEST("Aroma Veil does not protect the Pokémon's side from Imprison"); +DOUBLE_BATTLE_TEST("Aroma Veil protects the Pokémon's side from Taunt") +{ + struct BattlePokemon *moveTarget = NULL; + PARAMETRIZE { moveTarget = playerLeft; } + PARAMETRIZE { moveTarget = playerRight; } + GIVEN { + ASSUME(gMovesInfo[MOVE_TAUNT].effect == EFFECT_TAUNT); + ASSUME(gMovesInfo[MOVE_HARDEN].category == DAMAGE_CATEGORY_STATUS); + PLAYER(SPECIES_AROMATISSE) { Ability(ABILITY_AROMA_VEIL); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(opponentLeft, MOVE_TAUNT, target: moveTarget); MOVE(moveTarget, MOVE_HARDEN); } + } SCENE { + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_TAUNT, opponentLeft); + ABILITY_POPUP(playerLeft, ABILITY_AROMA_VEIL); + ANIMATION(ANIM_TYPE_MOVE, MOVE_HARDEN, moveTarget); + } +} + +DOUBLE_BATTLE_TEST("Aroma Veil protects the Pokémon's side from Torment") +{ + struct BattlePokemon *moveTarget = NULL; + PARAMETRIZE { moveTarget = playerLeft; } + PARAMETRIZE { moveTarget = playerRight; } + GIVEN { + ASSUME(gMovesInfo[MOVE_TORMENT].effect == EFFECT_TORMENT); + ASSUME(gMovesInfo[MOVE_HARDEN].category == DAMAGE_CATEGORY_STATUS); + PLAYER(SPECIES_AROMATISSE) { Ability(ABILITY_AROMA_VEIL); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(opponentLeft, MOVE_TORMENT, target: moveTarget); MOVE(moveTarget, MOVE_HARDEN); } + TURN { MOVE(moveTarget, MOVE_HARDEN); } + } SCENE { + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_TORMENT, opponentLeft); + ABILITY_POPUP(playerLeft, ABILITY_AROMA_VEIL); + ANIMATION(ANIM_TYPE_MOVE, MOVE_HARDEN, moveTarget); + ANIMATION(ANIM_TYPE_MOVE, MOVE_HARDEN, moveTarget); + } +} + +DOUBLE_BATTLE_TEST("Aroma Veil protects the Pokémon's side from Encore") +{ + struct BattlePokemon *moveTarget = NULL; + PARAMETRIZE { moveTarget = playerLeft; } + PARAMETRIZE { moveTarget = playerRight; } + GIVEN { + ASSUME(gMovesInfo[MOVE_ENCORE].effect == EFFECT_ENCORE); + ASSUME(gMovesInfo[MOVE_HARDEN].category == DAMAGE_CATEGORY_STATUS); + PLAYER(SPECIES_AROMATISSE) { Ability(ABILITY_AROMA_VEIL); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(opponentLeft, MOVE_ENCORE, target: moveTarget); MOVE(moveTarget, MOVE_HARDEN); } + TURN { MOVE(moveTarget, MOVE_CELEBRATE); } + } SCENE { + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_ENCORE, opponentLeft); + ABILITY_POPUP(playerLeft, ABILITY_AROMA_VEIL); + ANIMATION(ANIM_TYPE_MOVE, MOVE_HARDEN, moveTarget); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, moveTarget); + } +} + +DOUBLE_BATTLE_TEST("Aroma Veil protects the Pokémon's side from Disable") +{ + struct BattlePokemon *moveTarget = NULL; + PARAMETRIZE { moveTarget = playerLeft; } + PARAMETRIZE { moveTarget = playerRight; } + GIVEN { + ASSUME(gMovesInfo[MOVE_DISABLE].effect == EFFECT_DISABLE); + ASSUME(gMovesInfo[MOVE_HARDEN].category == DAMAGE_CATEGORY_STATUS); + PLAYER(SPECIES_AROMATISSE) { Ability(ABILITY_AROMA_VEIL); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(opponentLeft, MOVE_DISABLE, target: moveTarget); MOVE(moveTarget, MOVE_HARDEN); } + TURN { MOVE(moveTarget, MOVE_HARDEN); } + } SCENE { + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_DISABLE, opponentLeft); + ABILITY_POPUP(playerLeft, ABILITY_AROMA_VEIL); + ANIMATION(ANIM_TYPE_MOVE, MOVE_HARDEN, moveTarget); + ANIMATION(ANIM_TYPE_MOVE, MOVE_HARDEN, moveTarget); + } +} + +DOUBLE_BATTLE_TEST("Aroma Veil protects the Pokémon's side from Cursed Body") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_PECK].makesContact); + PLAYER(SPECIES_AROMATISSE) { Ability(ABILITY_AROMA_VEIL); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_JELLICENT) { Ability(ABILITY_CURSED_BODY); } + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(playerLeft, MOVE_PECK, target: opponentLeft); MOVE(playerRight, MOVE_PECK, target: opponentLeft); } + TURN { MOVE(playerLeft, MOVE_PECK, target: opponentLeft); MOVE(playerRight, MOVE_PECK, target: opponentLeft); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_PECK, playerLeft); + NOT ABILITY_POPUP(opponentLeft, ABILITY_CURSED_BODY); + ANIMATION(ANIM_TYPE_MOVE, MOVE_PECK, playerRight); + NOT ABILITY_POPUP(opponentLeft, ABILITY_CURSED_BODY); + ANIMATION(ANIM_TYPE_MOVE, MOVE_PECK, playerLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_PECK, playerRight); + } +} + +DOUBLE_BATTLE_TEST("Aroma Veil protects the Pokémon's side from Heal Block") +{ + struct BattlePokemon *moveTarget = NULL; + PARAMETRIZE { moveTarget = playerLeft; } + PARAMETRIZE { moveTarget = playerRight; } + GIVEN { + ASSUME(gMovesInfo[MOVE_HEAL_BLOCK].effect == EFFECT_HEAL_BLOCK); + ASSUME(gMovesInfo[MOVE_RECOVER].effect == EFFECT_RESTORE_HP); + PLAYER(SPECIES_AROMATISSE) { Ability(ABILITY_AROMA_VEIL); HP(1); } + PLAYER(SPECIES_WOBBUFFET) { HP(1); } + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(opponentLeft, MOVE_HEAL_BLOCK, target: moveTarget); MOVE(moveTarget, MOVE_RECOVER); } + } SCENE { + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_HEAL_BLOCK, opponentLeft); + ABILITY_POPUP(playerLeft, ABILITY_AROMA_VEIL); + ANIMATION(ANIM_TYPE_MOVE, MOVE_RECOVER, moveTarget); + } +} + +DOUBLE_BATTLE_TEST("Aroma Veil protects the Pokémon's side from Infatuation") +{ + struct BattlePokemon *moveTarget = NULL; + PARAMETRIZE { moveTarget = playerLeft; } + PARAMETRIZE { moveTarget = playerRight; } + GIVEN { + ASSUME(gMovesInfo[MOVE_ATTRACT].effect == EFFECT_ATTRACT); + PLAYER(SPECIES_AROMATISSE) { Ability(ABILITY_AROMA_VEIL); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(opponentLeft, MOVE_ATTRACT, target: moveTarget); MOVE(moveTarget, MOVE_CELEBRATE); } + } SCENE { + NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_ATTRACT, opponentLeft); + ABILITY_POPUP(playerLeft, ABILITY_AROMA_VEIL); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, moveTarget); + } +} + +DOUBLE_BATTLE_TEST("Aroma Veil does not protect the Pokémon's side from Imprison") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_IMPRISON].effect == EFFECT_IMPRISON); + PLAYER(SPECIES_AROMATISSE) { Ability(ABILITY_AROMA_VEIL); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) {Moves(MOVE_IMPRISON, MOVE_CELEBRATE); } + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(opponentLeft, MOVE_IMPRISON); MOVE(playerLeft, MOVE_CELEBRATE); MOVE(playerRight, MOVE_CELEBRATE); MOVE(opponentRight, MOVE_SPLASH); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_IMPRISON, opponentLeft); + NONE_OF { + ABILITY_POPUP(playerLeft, ABILITY_AROMA_VEIL); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, playerLeft); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, playerRight); + } + ANIMATION(ANIM_TYPE_MOVE, MOVE_SPLASH, opponentRight); + } +} + +DOUBLE_BATTLE_TEST("Aroma Veil prevents Psychic Noise's effect") +{ + struct BattlePokemon *moveTarget = NULL; + PARAMETRIZE { moveTarget = playerLeft; } + PARAMETRIZE { moveTarget = playerRight; } + GIVEN { + ASSUME(gMovesInfo[MOVE_PSYCHIC_NOISE].additionalEffects[0].moveEffect == MOVE_EFFECT_PSYCHIC_NOISE); + PLAYER(SPECIES_AROMATISSE) { Ability(ABILITY_AROMA_VEIL); } + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(opponentLeft, MOVE_PSYCHIC_NOISE, target: moveTarget); MOVE(moveTarget, MOVE_RECOVER); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_PSYCHIC_NOISE, opponentLeft); + ABILITY_POPUP(playerLeft, ABILITY_AROMA_VEIL); + ANIMATION(ANIM_TYPE_MOVE, MOVE_RECOVER, moveTarget); + } +} // Marked in Bulbapedia as need of research //TO_DO_BATTLE_TEST("Aroma Veil prevents G-Max Meltdown's effect"); -//TO_DO_BATTLE_TEST("Aroma Veil prevents Psychic Noise's effect"); diff --git a/test/battle/ability/chlorophyll.c b/test/battle/ability/chlorophyll.c index 493a197638be..84546dbe4cf4 100644 --- a/test/battle/ability/chlorophyll.c +++ b/test/battle/ability/chlorophyll.c @@ -1,6 +1,50 @@ #include "global.h" #include "test/battle.h" -TO_DO_BATTLE_TEST("Chlorophyll doubles speed if it's sunny"); -TO_DO_BATTLE_TEST("Chlorophyll doesn't double speed if Cloud Nine/Air Lock is on the field"); -TO_DO_BATTLE_TEST("Chlorophyll doesn't double speed if they have an Utility Umbrella"); +SINGLE_BATTLE_TEST("Chlorophyll doubles speed if it's sunny") +{ + GIVEN { + PLAYER(SPECIES_VENUSAUR) { Ability(ABILITY_CHLOROPHYLL); Speed(100); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(199); } + } WHEN { + TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_SUNNY_DAY); } + TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_CELEBRATE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SUNNY_DAY, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent); + } +} + +SINGLE_BATTLE_TEST("Chlorophyll doesn't double speed if Cloud Nine/Air Lock is on the field") +{ + GIVEN { + PLAYER(SPECIES_VENUSAUR) { Ability(ABILITY_CHLOROPHYLL); Speed(100); } + OPPONENT(SPECIES_GOLDUCK) { Speed(199); Ability(ABILITY_CLOUD_NINE); } + } WHEN { + TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_SUNNY_DAY); } + TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_CELEBRATE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SUNNY_DAY, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player); + } +} + +SINGLE_BATTLE_TEST("Chlorophyll doesn't double speed if they have an Utility Umbrella") +{ + GIVEN { + PLAYER(SPECIES_VENUSAUR) { Ability(ABILITY_CHLOROPHYLL); Speed(100); Item(ITEM_UTILITY_UMBRELLA); } + OPPONENT(SPECIES_WOBBUFFET) { Speed(199); } + } WHEN { + TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_SUNNY_DAY); } + TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_CELEBRATE); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_SUNNY_DAY, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent); + ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player); + } +} diff --git a/test/battle/ability/electric_surge.c b/test/battle/ability/electric_surge.c index 3509f1c68702..3213cfc3235b 100644 --- a/test/battle/ability/electric_surge.c +++ b/test/battle/ability/electric_surge.c @@ -1,4 +1,15 @@ #include "global.h" #include "test/battle.h" -TO_DO_BATTLE_TEST("Electric Surge creates Electric Terrain when entering the battle"); +SINGLE_BATTLE_TEST("Electric Surge creates Electric Terrain when entering the battle") +{ + GIVEN { + PLAYER(SPECIES_TAPU_KOKO) { Ability(ABILITY_ELECTRIC_SURGE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN {} + } SCENE { + ABILITY_POPUP(player, ABILITY_ELECTRIC_SURGE); + MESSAGE("An electric current ran across the battlefield!"); + } +} diff --git a/test/battle/ability/grassy_surge.c b/test/battle/ability/grassy_surge.c index ccdb471d9f05..e8f1a0cbaedc 100644 --- a/test/battle/ability/grassy_surge.c +++ b/test/battle/ability/grassy_surge.c @@ -1,4 +1,15 @@ #include "global.h" #include "test/battle.h" -TO_DO_BATTLE_TEST("Grassy Surge creates Grassy Terrain when entering the battle"); +SINGLE_BATTLE_TEST("Grassy Surge creates Grassy Terrain when entering the battle") +{ + GIVEN { + PLAYER(SPECIES_TAPU_BULU) { Ability(ABILITY_GRASSY_SURGE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN {} + } SCENE { + ABILITY_POPUP(player, ABILITY_GRASSY_SURGE); + MESSAGE("Grass grew to cover the battlefield!"); + } +} diff --git a/test/battle/ability/hydration.c b/test/battle/ability/hydration.c index 7d16ad04ae8c..7df2681c13fc 100644 --- a/test/battle/ability/hydration.c +++ b/test/battle/ability/hydration.c @@ -15,4 +15,15 @@ SINGLE_BATTLE_TEST("Hydration cures non-volatile Status conditions if it is rain } } -TO_DO_BATTLE_TEST("Hydration doesn't cure status conditions if Cloud Nine/Air Lock is on the field"); +SINGLE_BATTLE_TEST("Hydration doesn't cure status conditions if Cloud Nine/Air Lock is on the field") +{ + GIVEN { + PLAYER(SPECIES_VAPOREON) { Ability(ABILITY_HYDRATION); Status1(STATUS1_BURN); } + OPPONENT(SPECIES_GOLDUCK) { Ability(ABILITY_CLOUD_NINE); } + } WHEN { + TURN { MOVE(player, MOVE_RAIN_DANCE); } + } SCENE { + NOT ABILITY_POPUP(player, ABILITY_HYDRATION); + MESSAGE("Vaporeon was hurt by its burn!"); + } +} diff --git a/test/battle/ability/misty_surge.c b/test/battle/ability/misty_surge.c index 229d26c3ba80..d09f3e8f653c 100644 --- a/test/battle/ability/misty_surge.c +++ b/test/battle/ability/misty_surge.c @@ -1,4 +1,15 @@ #include "global.h" #include "test/battle.h" -TO_DO_BATTLE_TEST("Misty Surge creates Misty Terrain when entering the battle"); +SINGLE_BATTLE_TEST("Misty Surge creates Misty Terrain when entering the battle") +{ + GIVEN { + PLAYER(SPECIES_TAPU_FINI) { Ability(ABILITY_MISTY_SURGE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN {} + } SCENE { + ABILITY_POPUP(player, ABILITY_MISTY_SURGE); + MESSAGE("Mist swirled around the battlefield!"); + } +} diff --git a/test/battle/ability/psychic_surge.c b/test/battle/ability/psychic_surge.c index d840e8d44032..02b2080043b4 100644 --- a/test/battle/ability/psychic_surge.c +++ b/test/battle/ability/psychic_surge.c @@ -1,4 +1,15 @@ #include "global.h" #include "test/battle.h" -TO_DO_BATTLE_TEST("Psychic Surge creates Psychic Terrain when entering the battle"); +SINGLE_BATTLE_TEST("Psychic Surge creates Psychic Terrain when entering the battle") +{ + GIVEN { + PLAYER(SPECIES_TAPU_LELE) { Ability(ABILITY_PSYCHIC_SURGE); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN {} + } SCENE { + ABILITY_POPUP(player, ABILITY_PSYCHIC_SURGE); + MESSAGE("The battlefield got weird!"); + } +} diff --git a/test/battle/ability/snow_cloak.c b/test/battle/ability/snow_cloak.c index a4d1acadb7c5..5b589f168f78 100644 --- a/test/battle/ability/snow_cloak.c +++ b/test/battle/ability/snow_cloak.c @@ -28,5 +28,30 @@ SINGLE_BATTLE_TEST("Snow Cloak increases evasion during hail") } } -TO_DO_BATTLE_TEST("Snow Cloak doesn't prevent hail damage if Cloud Nine/Air Lock is on the field"); -TO_DO_BATTLE_TEST("Snow Cloak doesn't increase evasion if Cloud Nine/Air Lock is on the field"); +SINGLE_BATTLE_TEST("Snow Cloak doesn't increase evasion if Cloud Nine/Air Lock is on the field") +{ + PASSES_RANDOMLY(10, 10, RNG_ACCURACY); + GIVEN { + PLAYER(SPECIES_GLACEON) { Ability(ABILITY_SNOW_CLOAK); } + OPPONENT(SPECIES_GOLDUCK) { Ability(ABILITY_CLOUD_NINE); } + } WHEN { + TURN { MOVE(player, MOVE_HAIL); MOVE(opponent, MOVE_TACKLE); } + } SCENE { + HP_BAR(player); + } +} + +SINGLE_BATTLE_TEST("Snow Cloak increases evasion during snow") +{ + PASSES_RANDOMLY(4, 5, RNG_ACCURACY); + GIVEN { + ASSUME(gMovesInfo[MOVE_POUND].accuracy == 100); + PLAYER(SPECIES_GLACEON) { Ability(ABILITY_SNOW_CLOAK); } + OPPONENT(SPECIES_WOBBUFFET); + } WHEN { + TURN { MOVE(opponent, MOVE_SNOWSCAPE); } + TURN { MOVE(opponent, MOVE_POUND); } + } SCENE { + HP_BAR(player); + } +} diff --git a/test/battle/ability/stance_change.c b/test/battle/ability/stance_change.c index f8a0c70b3e48..7998c907cb6c 100644 --- a/test/battle/ability/stance_change.c +++ b/test/battle/ability/stance_change.c @@ -79,5 +79,3 @@ SINGLE_BATTLE_TEST("Stance Change doesn't change Aegislash to Shield if King's S EXPECT_EQ(player->species, SPECIES_AEGISLASH_BLADE); } } - -TO_DO_BATTLE_TEST("Stance Change doesn't change Aegislash to Shield if King's Shield is called by a different move - Me First"); diff --git a/test/battle/gimmick/dynamax.c b/test/battle/gimmick/dynamax.c index 91773b01bc81..089587c71deb 100644 --- a/test/battle/gimmick/dynamax.c +++ b/test/battle/gimmick/dynamax.c @@ -1202,7 +1202,22 @@ DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Terror traps both opponents") } } -TO_DO_BATTLE_TEST("(DYNAMAX) Baton Pass passes G-Max Terror's escape prevention effect"); +SINGLE_BATTLE_TEST("(DYNAMAX) Baton Pass passes G-Max Terror's escape prevention effect") +{ + GIVEN { + ASSUME(gMovesInfo[MOVE_G_MAX_TERROR].argument == MAX_EFFECT_MEAN_LOOK); + PLAYER(SPECIES_GENGAR) { GigantamaxFactor(TRUE); } + OPPONENT(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WYNAUT); + } WHEN { + TURN { MOVE(player, MOVE_LICK, gimmick: GIMMICK_DYNAMAX); MOVE(opponent, MOVE_BATON_PASS); SEND_OUT(opponent, 1); } + } SCENE { + ANIMATION(ANIM_TYPE_MOVE, MOVE_G_MAX_TERROR, player); + ANIMATION(ANIM_TYPE_MOVE, MOVE_BATON_PASS, opponent); + } THEN { + EXPECT(opponent->status2 & STATUS2_ESCAPE_PREVENTION); + } +} DOUBLE_BATTLE_TEST("(DYNAMAX) G-Max Meltdown torments both opponents for 3 turns") { @@ -1583,4 +1598,4 @@ SINGLE_BATTLE_TEST("(DYNAMAX) Max Moves don't bypass absorbing abilities") } ABILITY_POPUP(opponent, ability); } -} \ No newline at end of file +}