forked from DizzyEggg/pokeemerald
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Co-authored-by: Hedara <[email protected]>
- Loading branch information
Showing
10 changed files
with
343 additions
and
23 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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"); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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!"); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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!"); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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!"); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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!"); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.