Update battle messages to Gen 5+ standards (#3240)

Co-authored-by: Eduardo Quezada <eduardo602002@gmail.com>
This commit is contained in:
kittenchilly 2024-10-21 12:52:45 -05:00 committed by GitHub
parent 3205f377d5
commit db24128ee3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
265 changed files with 2888 additions and 2393 deletions

View file

@ -413,6 +413,10 @@ B_DEF_TEAM1 = FD 3A
B_DEF_TEAM2 = FD 3B
@ FD 3C - preiously gActiveBattler
@ FD 3D - preiously gActiveBattler without Illusion Check
B_ATK_NAME_WITH_PREFIX2 = FD 3E
B_DEF_NAME_WITH_PREFIX2 = FD 3F
B_EFF_NAME_WITH_PREFIX2 = FD 40
B_SCR_ACTIVE_NAME_WITH_PREFIX2 = FD 41
@ indicates the end of a town/city name (before " TOWN" or " CITY")
NAME_END = FC 00

View file

@ -3094,7 +3094,7 @@ BattleScript_DreamEaterWorked:
healthbarupdate BS_ATTACKER
datahpupdate BS_ATTACKER
jumpifmovehadnoeffect BattleScript_DreamEaterTryFaintEnd
printstring STRINGID_PKMNDREAMEATEN
printstring STRINGID_PKMNENERGYDRAINED
waitmessage B_WAIT_TIME_LONG
BattleScript_DreamEaterTryFaintEnd:
tryfaintmon BS_TARGET
@ -5962,7 +5962,7 @@ BattleScript_OverworldWeatherStarts::
end3
BattleScript_OverworldTerrain::
printfromtable gTerrainStringIds
printfromtable gTerrainStartsStringIds
waitmessage B_WAIT_TIME_LONG
playanimation BS_BATTLER_0, B_ANIM_RESTORE_BG
call BattleScript_ActivateTerrainEffects
@ -9083,8 +9083,6 @@ BattleScript_BerryConfuseHealEnd2_Anim:
orword gHitMarker, HITMARKER_IGNORE_BIDE | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE
healthbarupdate BS_SCRIPTING
datahpupdate BS_SCRIPTING
printstring STRINGID_FORXCOMMAYZ
waitmessage B_WAIT_TIME_LONG
seteffectprimary MOVE_EFFECT_CONFUSION | MOVE_EFFECT_AFFECTS_USER
removeitem BS_SCRIPTING
end2
@ -9101,8 +9099,6 @@ BattleScript_BerryConfuseHealRet_Anim:
orword gHitMarker, HITMARKER_IGNORE_BIDE | HITMARKER_IGNORE_SUBSTITUTE | HITMARKER_PASSIVE_DAMAGE
healthbarupdate BS_SCRIPTING
datahpupdate BS_SCRIPTING
printstring STRINGID_FORXCOMMAYZ
waitmessage B_WAIT_TIME_LONG
seteffectprimary MOVE_EFFECT_CONFUSION | MOVE_EFFECT_CERTAIN
removeitem BS_TARGET
return

View file

@ -44,7 +44,7 @@ SINGLE_BATTLE_TEST("Stun Spore inflicts paralysis")
TURN { MOVE(player, MOVE_STUN_SPORE); } // 3.
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_STUN_SPORE, player);
MESSAGE("Foe Wobbuffet is paralyzed! It may be unable to move!"); // 4
MESSAGE("The opposing Wobbuffet is paralyzed, so it may be unable to move!"); // 4
STATUS_ICON(opponent, paralysis: TRUE); // 4.
}
}
@ -86,7 +86,7 @@ SINGLE_BATTLE_TEST("Stun Spore does not affect Grass-types")
TURN { MOVE(player, MOVE_STUN_SPORE); } // 3.
} SCENE {
NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_STUN_SPORE, player); // 4.
MESSAGE("It doesn't affect Foe Oddish…"); // 5.
MESSAGE("It doesn't affect the opposing Oddish…"); // 5.
}
}
```
@ -226,7 +226,7 @@ SINGLE_BATTLE_TEST("Paralysis has a 25% chance of skipping the turn")
} WHEN {
TURN { MOVE(player, MOVE_CELEBRATE); }
} SCENE {
MESSAGE("Wobbuffet is paralyzed! It can't move!");
MESSAGE("Wobbuffet couldn't move because it's paralyzed!");
}
}
```
@ -428,7 +428,7 @@ Spaces in pattern match newlines (\n, \l, and \p) in the message.
Often used to check that a battler took its turn but it failed, e.g.:
```
MESSAGE("Wobbuffet used Dream Eater!");
MESSAGE("Foe Wobbuffet wasn't affected!");
MESSAGE("The opposing Wobbuffet wasn't affected!");
```
### `STATUS_ICON`
@ -452,7 +452,7 @@ Causes the test to fail if the `SCENE` command succeeds before the following com
```
// Our Wobbuffet does not Celebrate before the foe's.
NOT MESSAGE("Wobbuffet used Celebrate!");
MESSAGE("Foe Wobbuffet used Celebrate!");
MESSAGE("The opposing Wobbuffet used Celebrate!");
```
**NOTE**: If this condition fails, the viewable ROM freezes at the NOT command.
**WARNING: `NOT` is an alias of `NONE_OF`, so it behaves surprisingly when applied to multiple commands wrapped in braces.**
@ -467,7 +467,7 @@ Causes the test to fail unless one of the `SCENE` commands succeeds.
```
ONE_OF {
MESSAGE("Wobbuffet used Celebrate!");
MESSAGE("Wobbuffet is paralyzed! It can't move!");
MESSAGE("Wobbuffet couldn't move because it's paralyzed!");
}
```
@ -482,9 +482,9 @@ Causes the test to fail if one of the `SCENE` commands succeeds before the comma
// Our Wobbuffet does not move before the foe's.
NONE_OF {
MESSAGE("Wobbuffet used Celebrate!");
MESSAGE("Wobbuffet is paralyzed! It can't move!");
MESSAGE("Wobbuffet couldn't move because it's paralyzed!");
}
MESSAGE("Foe Wobbuffet used Celebrate!");
MESSAGE("The opposing Wobbuffet used Celebrate!");
```
### `PLAYER_PARTY`

View file

@ -1,12 +1,15 @@
#ifndef GUARD_BATTLE_MESSAGE_H
#define GUARD_BATTLE_MESSAGE_H
#include "constants/battle.h"
// This buffer can hold many different things. Some of the things it can hold
// that have explicit sizes are listed below to ensure it can contain them.
#define TEXT_BUFF_ARRAY_COUNT max(16, \
max(MOVE_NAME_LENGTH + 2, /* +2 to hold the "!" and EOS. */ \
max(POKEMON_NAME_LENGTH + 1, \
ABILITY_NAME_LENGTH + 1)))
#define BATTLE_MSG_MAX_WIDTH 208
// for 0xFD
#define B_TXT_BUFF1 0x0
@ -71,20 +74,23 @@
#define B_TXT_DEF_TEAM2 0x3B // your/the opposing
// #define B_TXT_SELECTION_NAME 0x3C - removed
// #define B_TXT_SELECTION_NAME2 0x3D no Illusion check - removed
#define B_TXT_ATK_NAME_WITH_PREFIX2 0x3E //lowercase
#define B_TXT_DEF_NAME_WITH_PREFIX2 0x3F //lowercase
#define B_TXT_EFF_NAME_WITH_PREFIX2 0x40 //lowercase
#define B_TXT_SCR_ACTIVE_NAME_WITH_PREFIX2 0x41 //lowercase
// for B_TXT_BUFF1, B_TXT_BUFF2 and B_TXT_BUFF3
#define B_BUFF_STRING 0
#define B_BUFF_NUMBER 1
#define B_BUFF_MOVE 2
#define B_BUFF_TYPE 3
#define B_BUFF_MON_NICK_WITH_PREFIX 4
#define B_BUFF_STAT 5
#define B_BUFF_SPECIES 6
#define B_BUFF_MON_NICK 7
#define B_BUFF_NEGATIVE_FLAVOR 8
#define B_BUFF_ABILITY 9
#define B_BUFF_ITEM 10
#define B_BUFF_STRING 0
#define B_BUFF_NUMBER 1
#define B_BUFF_MOVE 2
#define B_BUFF_TYPE 3
#define B_BUFF_MON_NICK_WITH_PREFIX 4
#define B_BUFF_STAT 5
#define B_BUFF_SPECIES 6
#define B_BUFF_MON_NICK 7
#define B_BUFF_NEGATIVE_FLAVOR 8
#define B_BUFF_ABILITY 9
#define B_BUFF_ITEM 10
#define B_BUFF_MON_NICK_WITH_PREFIX_LOWER 11 // lowercase prefix
#define B_BUFF_PLACEHOLDER_BEGIN 0xFD
#define B_BUFF_EOS 0xFF
@ -201,6 +207,15 @@
textVar[4] = B_BUFF_EOS; \
}
#define PREPARE_MON_NICK_WITH_PREFIX_LOWER_BUFFER(textVar, battler, partyId) \
{ \
textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \
textVar[1] = B_BUFF_MON_NICK_WITH_PREFIX_LOWER; \
textVar[2] = battler; \
textVar[3] = partyId; \
textVar[4] = B_BUFF_EOS; \
}
#define PREPARE_MON_NICK_BUFFER(textVar, battler, partyId) \
{ \
textVar[0] = B_BUFF_PLACEHOLDER_BEGIN; \
@ -243,7 +258,7 @@ enum
void BufferStringBattle(u16 stringID, u32 battler);
u32 BattleStringExpandPlaceholdersToDisplayedString(const u8 *src);
u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst);
u32 BattleStringExpandPlaceholders(const u8 *src, u8 *dst, u32 dstSize);
void BattlePutTextOnWindow(const u8 *text, u8 windowId);
void SetPpNumbersPaletteInMoveSelection(u32 battler);
u8 GetCurrentPpToMaxPpState(u8 currentPp, u8 maxPp);
@ -302,6 +317,9 @@ extern const u8 gText_Loss[];
extern const u8 gText_Draw[];
extern const u8 gText_StatSharply[];
extern const u8 gText_StatRose[];
extern const u8 sText_StatFell[];
extern const u8 sText_drastically[];
extern const u8 sText_severely[];
extern const u8 gText_DefendersStatRose[];
extern const u8 gText_PkmnGettingPumped[];
extern const u8 gText_PkmnShroudedInMist[];

View file

@ -716,8 +716,16 @@
#define STRINGID_POKEFLUTECATCHY 714
#define STRINGID_POKEFLUTE 715
#define STRINGID_MONHEARINGFLUTEAWOKE 716
#define STRINGID_SUNLIGHTISHARSH 717
#define STRINGID_ITISHAILING 718
#define STRINGID_ITISSNOWING 719
#define STRINGID_ISCOVEREDWITHGRASS 720
#define STRINGID_MISTSWIRLSAROUND 721
#define STRINGID_ELECTRICCURRENTISRUNNING 722
#define STRINGID_SEEMSWEIRD 723
#define STRINGID_WAGGLINGAFINGER 724
#define BATTLESTRINGS_COUNT 717
#define BATTLESTRINGS_COUNT 725
// This is the string id that gBattleStringsTable starts with.
// String ids before this (e.g. STRINGID_INTROMSG) are not in the table,

View file

@ -21,6 +21,7 @@ u8 *StringAppend(u8 *dest, const u8 *src);
u8 *StringCopyN(u8 *dest, const u8 *src, u8 n);
u8 *StringAppendN(u8 *dest, const u8 *src, u8 n);
u16 StringLength(const u8 *str);
u16 StringLineLength(const u8 *str);
s32 StringCompare(const u8 *str1, const u8 *str2);
s32 StringCompareN(const u8 *str1, const u8 *str2, u32 n);
bool8 IsStringLengthAtLeast(const u8 *str, s32 n);

View file

@ -41,7 +41,7 @@
* TURN { MOVE(player, MOVE_STUN_SPORE); } // 3.
* } SCENE {
* ANIMATION(ANIM_TYPE_MOVE, MOVE_STUN_SPORE, player);
* MESSAGE("Foe Wobbuffet is paralyzed! It may be unable to move!"); // 4
* MESSAGE("The opposing Wobbuffet is paralyzed, so it may be unable to move!"); // 4
* STATUS_ICON(opponent, paralysis: TRUE); // 4.
* }
* }
@ -95,7 +95,7 @@
* TURN { MOVE(player, MOVE_STUN_SPORE); } // 3.
* } SCENE {
* NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_STUN_SPORE, player); // 4.
* MESSAGE("It doesn't affect Foe Oddish…"); // 5.
* MESSAGE("It doesn't affect the opposing Oddish…"); // 5.
* }
* }
*
@ -256,7 +256,7 @@
* } WHEN {
* TURN { MOVE(player, MOVE_CELEBRATE); }
* } SCENE {
* MESSAGE("Wobbuffet is paralyzed! It can't move!");
* MESSAGE("Wobbuffet is paralyzed, so it may be unable to move!");
* }
* }
* All BattleRandom calls involving tag will return the same number, so
@ -413,7 +413,7 @@
* Spaces in pattern match newlines (\n, \l, and \p) in the message.
* Often used to check that a battler took its turn but it failed, e.g.:
* MESSAGE("Wobbuffet used Dream Eater!");
* MESSAGE("Foe Wobbuffet wasn't affected!");
* MESSAGE("The opposing Wobbuffet wasn't affected!");
*
* STATUS_ICON(battler, status1 | none: | sleep: | poison: | burn: | freeze: | paralysis:, badPoison:)
* Causes the test to fail if the battler's status is not changed to the
@ -432,7 +432,7 @@
* following command succeeds.
* // Our Wobbuffet does not Celebrate before the foe's.
* NOT MESSAGE("Wobbuffet used Celebrate!");
* MESSAGE("Foe Wobbuffet used Celebrate!");
* MESSAGE("The opposing Wobbuffet used Celebrate!");
* WARNING: NOT is an alias of NONE_OF, so it behaves surprisingly when
* applied to multiple commands wrapped in braces.
*
@ -440,7 +440,7 @@
* Causes the test to fail unless one of the SCENE commands succeeds.
* ONE_OF {
* MESSAGE("Wobbuffet used Celebrate!");
* MESSAGE("Wobbuffet is paralyzed! It can't move!");
* MESSAGE("Wobbuffet is paralyzed, so it may be unable to move!");
* }
*
* NONE_OF
@ -449,9 +449,9 @@
* // Our Wobbuffet does not move before the foe's.
* NONE_OF {
* MESSAGE("Wobbuffet used Celebrate!");
* MESSAGE("Wobbuffet is paralyzed! It can't move!");
* MESSAGE("Wobbuffet is paralyzed, so it may be unable to move!");
* }
* MESSAGE("Foe Wobbuffet used Celebrate!");
* MESSAGE("The opposing Wobbuffet used Celebrate!");
*
* PLAYER_PARTY and OPPONENT_PARTY
* Refer to the party members defined in GIVEN, e.g.:
@ -1017,11 +1017,11 @@ void SendOut(u32 sourceLine, struct BattlePokemon *, u32 partyIndex);
MESSAGE(name ", good! Come back!"); \
}
#define SEND_IN_MESSAGE(name) ONE_OF { \
MESSAGE("Go! " name "!"); \
MESSAGE("Do it! " name "!"); \
MESSAGE("Go for it, " name "!"); \
MESSAGE("Your foe's weak! Get 'em, " name "!"); \
#define SEND_IN_MESSAGE(name) ONE_OF { \
MESSAGE("Go! " name "!"); \
MESSAGE("You're in charge, " name "!"); \
MESSAGE("Go for it, " name "!"); \
MESSAGE("Your opponent's weak! Get 'em, " name "!"); \
}
enum QueueGroupType

View file

@ -157,7 +157,9 @@ bool32 TextPrinterWaitAutoMode(struct TextPrinter *textPrinter);
bool32 TextPrinterWaitWithDownArrow(struct TextPrinter *textPrinter);
bool32 TextPrinterWait(struct TextPrinter *textPrinter);
void DrawDownArrow(u8 windowId, u16 x, u16 y, u8 bgColor, bool32 drawArrow, u8 *counter, u8 *yCoordIndex);
s32 GetGlyphWidth(u16 glyphId, bool32 isJapanese, u8 fontId);
s32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing);
s32 GetStringLineWidth(u8 fontId, const u8 *str, s16 letterSpacing, u32 lineNum, u32 strSize, bool32 printDebug);
u8 RenderTextHandleBold(u8 *pixels, u8 fontId, u8 *str);
u8 DrawKeypadIcon(u8 windowId, u8 keypadIconId, u16 x, u16 y);
u8 GetKeypadIconTileOffset(u8 keypadIconId);

File diff suppressed because it is too large Load diff

View file

@ -12770,8 +12770,8 @@ static void Cmd_metronome(void)
#endif
gCurrentMove = RandomUniformExcept(RNG_METRONOME, 1, moveCount - 1, InvalidMetronomeMove);
gHitMarker &= ~HITMARKER_ATTACKSTRING_PRINTED;
SetAtkCancellerForCalledMove();
PrepareStringBattle(STRINGID_WAGGLINGAFINGER, gBattlerAttacker);
gBattlescriptCurrInstr = GET_MOVE_BATTLESCRIPT(gCurrentMove);
gBattlerTarget = GetMoveTarget(gCurrentMove, NO_TARGET_OVERRIDE);
}

View file

@ -4469,7 +4469,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
RecordAbilityBattle(chosenTarget, gLastUsedAbility); // Record the opposing battler has this ability
gBattlerAbility = battler;
PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, chosenTarget, gBattlerPartyIndexes[chosenTarget])
PREPARE_MON_NICK_WITH_PREFIX_LOWER_BUFFER(gBattleTextBuff1, chosenTarget, gBattlerPartyIndexes[chosenTarget])
PREPARE_ABILITY_BUFFER(gBattleTextBuff2, gLastUsedAbility)
}
}

View file

@ -37,6 +37,7 @@
#include "gba/defines.h"
#include "config/general.h"
#include "constants/characters.h"
#include "string_util.h"
#ifndef NDEBUG

View file

@ -5925,7 +5925,7 @@ void SetMonPreventsSwitchingString(void)
PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff2, gBattlerInMenuId, GetPartyIdFromBattlePartyId(gBattlerPartyIndexes[gBattlerInMenuId]))
BattleStringExpandPlaceholders(gText_PkmnsXPreventsSwitching, gStringVar4);
BattleStringExpandPlaceholders(gText_PkmnsXPreventsSwitching, gStringVar4, sizeof(gStringVar4));
}
static s32 GetWildMonTableIdInAlteringCave(u16 species)

View file

@ -122,6 +122,28 @@ u16 StringLength(const u8 *str)
return length;
}
u16 StringLineLength(const u8 *str)
{
u16 i = 0, length = 0;
while (str[length] != EOS)
{
switch (str[length])
{
case CHAR_PROMPT_SCROLL:
case CHAR_PROMPT_CLEAR:
case CHAR_NEWLINE:
return length;
default:
i++;
length++;
break;
}
}
return length;
}
s32 StringCompare(const u8 *str1, const u8 *str2)
{
while (*str1 == *str2)

View file

@ -1423,6 +1423,16 @@ static u32 (*GetFontWidthFunc(u8 fontId))(u16, bool32)
return NULL;
}
s32 GetGlyphWidth(u16 glyphId, bool32 isJapanese, u8 fontId)
{
u32 (*func)(u16 fontId, bool32 isJapanese);
func = GetFontWidthFunc(fontId);
if (func == NULL)
return 0;
return func(glyphId, isJapanese);
}
s32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing)
{
bool32 isJapanese;
@ -1595,6 +1605,32 @@ s32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing)
return width;
}
s32 GetStringLineWidth(u8 fontId, const u8 *str, s16 letterSpacing, u32 lineNum, u32 strSize, bool32 printDebug)
{
u32 strWidth = 0, strLen, currLine;
u8 strCopy[strSize];
for (currLine = 1; currLine <= lineNum; currLine++)
{
strWidth = GetStringWidth(fontId, str, letterSpacing);
strLen = StringLineLength(str);
memset(strCopy, EOS, strSize);
if (currLine == lineNum && strLen != 0)
{
StringCopyN(strCopy, str, strLen);
strWidth = GetStringWidth(fontId, strCopy, letterSpacing);
strLen = StringLineLength(strCopy);
StringAppend(strCopy, gText_EmptyString3);
#ifndef NDEBUG
if (printDebug && strWidth != 0)
DebugPrintf(" Line %d, len:%d, width:%d, \"%S\"", currLine, strLen, strWidth, strCopy);
#endif
}
str += strLen + 1;
}
return strWidth;
}
u8 RenderTextHandleBold(u8 *pixels, u8 fontId, u8 *str)
{
u8 shadowColor;

View file

@ -11,7 +11,7 @@ SINGLE_BATTLE_TEST("Aftermath damages the attacker by 1/4th of its max HP if fai
} WHEN {
TURN {MOVE(opponent, MOVE_TACKLE);}
} SCENE {
MESSAGE("Foe Wobbuffet used Tackle!");
MESSAGE("The opposing Wobbuffet used Tackle!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent);
MESSAGE("Voltorb fainted!");
ABILITY_POPUP(player, ABILITY_AFTERMATH);

View file

@ -32,7 +32,7 @@ SINGLE_BATTLE_TEST("Anger Point does not trigger when already at maximum Attack
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_BELLY_DRUM, player);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player);
MESSAGE("Primeape cut its own HP and maximized ATTACK!");
MESSAGE("Primeape cut its own HP and maximized its Attack!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_FROST_BREATH, opponent);
MESSAGE("A critical hit!");
NONE_OF {
@ -58,7 +58,7 @@ SINGLE_BATTLE_TEST("Anger Point does not trigger when a substitute takes the hit
TURN { MOVE(player, MOVE_SUBSTITUTE); MOVE(opponent, MOVE_FROST_BREATH); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_SUBSTITUTE, player);
MESSAGE("Primeape made a SUBSTITUTE!");
MESSAGE("Primeape put in a substitute!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_FROST_BREATH, opponent);
MESSAGE("A critical hit!");
NONE_OF {

View file

@ -15,13 +15,13 @@ SINGLE_BATTLE_TEST("Bad Dreams causes the sleeping enemy Pokemon to lose 1/8 of
} SCENE {
if (status == STATUS1_SLEEP) {
ABILITY_POPUP(player, ABILITY_BAD_DREAMS);
MESSAGE("Foe Wobbuffet is tormented!");
MESSAGE("The opposing Wobbuffet is tormented!");
HP_BAR(opponent);
}
else {
NONE_OF {
ABILITY_POPUP(player, ABILITY_BAD_DREAMS);
MESSAGE("Foe Wobbuffet is tormented!");
MESSAGE("The opposing Wobbuffet is tormented!");
HP_BAR(opponent);
};
}
@ -115,11 +115,11 @@ DOUBLE_BATTLE_TEST("Bad Dreams faints both sleeping Pokemon on opponent side")
TURN {SEND_OUT(opponentLeft, 2); SEND_OUT(opponentRight, 3);}
} SCENE {
ABILITY_POPUP(playerLeft, ABILITY_BAD_DREAMS);
MESSAGE("Foe Wobbuffet is tormented!");
MESSAGE("The opposing Wobbuffet is tormented!");
HP_BAR(opponentLeft);
MESSAGE("Foe Wobbuffet fainted!");
MESSAGE("Foe Wobbuffet is tormented!");
MESSAGE("The opposing Wobbuffet fainted!");
MESSAGE("The opposing Wobbuffet is tormented!");
HP_BAR(opponentRight);
MESSAGE("Foe Wobbuffet fainted!");
MESSAGE("The opposing Wobbuffet fainted!");
}
}

View file

@ -16,7 +16,7 @@ SINGLE_BATTLE_TEST("Battle Bond does not transform species other than Greninja")
TURN { MOVE(player, MOVE_WATER_GUN); SEND_OUT(opponent, 1); }
} SCENE {
HP_BAR(opponent);
MESSAGE("Foe Wobbuffet fainted!");
MESSAGE("The opposing Wobbuffet fainted!");
NONE_OF {
ABILITY_POPUP(player, ABILITY_BATTLE_BOND);
MESSAGE("Wobbuffet became fully charged due to its bond with its trainer!");
@ -54,7 +54,7 @@ SINGLE_BATTLE_TEST("Battle Bond transforms player's Greninja - Singles")
} SCENE {
HP_BAR(opponent);
MESSAGE("Foe Wobbuffet fainted!");
MESSAGE("The opposing Wobbuffet fainted!");
if (monsCountOpponent != 1) {
ABILITY_POPUP(player, ABILITY_BATTLE_BOND);
MESSAGE("Greninja became fully charged due to its bond with its trainer!");
@ -104,12 +104,12 @@ SINGLE_BATTLE_TEST("Battle Bond transforms opponent's Greninja - Singles")
MESSAGE("Wobbuffet fainted!");
if (monsCountPlayer != 1) {
ABILITY_POPUP(opponent, ABILITY_BATTLE_BOND);
MESSAGE("Foe Greninja became fully charged due to its bond with its trainer!");
MESSAGE("Foe Greninja became Ash-Greninja!");
MESSAGE("The opposing Greninja became fully charged due to its bond with its trainer!");
MESSAGE("The opposing Greninja became Ash-Greninja!");
} else {
NONE_OF {
ABILITY_POPUP(opponent, ABILITY_BATTLE_BOND);
MESSAGE("Foe Greninja became fully charged due to its bond with its trainer!");
MESSAGE("The opposing Greninja became fully charged due to its bond with its trainer!");
}
}
} FINALLY {

View file

@ -70,6 +70,6 @@ SINGLE_BATTLE_TEST("Beads of Ruin's message displays correctly after all battler
SEND_IN_MESSAGE("Wobbuffet");
MESSAGE("2 sent out Chi-Yu!");
ABILITY_POPUP(opponent, ABILITY_BEADS_OF_RUIN);
MESSAGE("Foe Chi-Yu's Beads of Ruin weakened the Sp. Def of all surrounding Pokémon!");
MESSAGE("The opposing Chi-Yu's Beads of Ruin weakened the Sp. Def of all surrounding Pokémon!");
}
}

View file

@ -26,11 +26,11 @@ SINGLE_BATTLE_TEST("Clear Body, Full Metal Body, and White Smoke prevent intimid
}
ABILITY_POPUP(opponent, ability);
if (ability == ABILITY_FULL_METAL_BODY)
MESSAGE("Foe Solgaleo's Full Metal Body prevents stat loss!");
MESSAGE("The opposing Solgaleo's Full Metal Body prevents stat loss!");
else if (ability == ABILITY_WHITE_SMOKE)
MESSAGE("Foe Torkoal's White Smoke prevents stat loss!");
MESSAGE("The opposing Torkoal's White Smoke prevents stat loss!");
else
MESSAGE("Foe Metang's Clear Body prevents stat loss!");
MESSAGE("The opposing Metang's Clear Body prevents stat loss!");
HP_BAR(player, captureDamage: &turnTwoHit);
} THEN {
EXPECT_EQ(turnOneHit, turnTwoHit);
@ -76,11 +76,11 @@ SINGLE_BATTLE_TEST("Clear Body, Full Metal Body, and White Smoke prevent stat st
}
ABILITY_POPUP(opponent, ability);
if (ability == ABILITY_FULL_METAL_BODY)
MESSAGE("Foe Solgaleo's Full Metal Body prevents stat loss!");
MESSAGE("The opposing Solgaleo's Full Metal Body prevents stat loss!");
else if (ability == ABILITY_WHITE_SMOKE)
MESSAGE("Foe Torkoal's White Smoke prevents stat loss!");
MESSAGE("The opposing Torkoal's White Smoke prevents stat loss!");
else
MESSAGE("Foe Metang's Clear Body prevents stat loss!");
MESSAGE("The opposing Metang's Clear Body prevents stat loss!");
}
}
@ -104,11 +104,11 @@ SINGLE_BATTLE_TEST("Clear Body, Full Metal Body, and White Smoke prevent Sticky
}
ABILITY_POPUP(opponent, ability);
if (ability == ABILITY_FULL_METAL_BODY)
MESSAGE("Foe Solgaleo's Full Metal Body prevents stat loss!");
MESSAGE("The opposing Solgaleo's Full Metal Body prevents stat loss!");
else if (ability == ABILITY_WHITE_SMOKE)
MESSAGE("Foe Torkoal's White Smoke prevents stat loss!");
MESSAGE("The opposing Torkoal's White Smoke prevents stat loss!");
else
MESSAGE("Foe Metang's Clear Body prevents stat loss!");
MESSAGE("The opposing Metang's Clear Body prevents stat loss!");
}
}
@ -128,9 +128,9 @@ SINGLE_BATTLE_TEST("Clear Body, Full Metal Body, and White Smoke don't prevent s
ANIMATION(ANIM_TYPE_MOVE, MOVE_SUPERPOWER, opponent);
NONE_OF {
ABILITY_POPUP(opponent, ability);
MESSAGE("Foe Solgaleo's Full Metal Body prevents stat loss!");
MESSAGE("Foe Torkoal's White Smoke prevents stat loss!");
MESSAGE("Foe Metang's Clear Body prevents stat loss!");
MESSAGE("The opposing Solgaleo's Full Metal Body prevents stat loss!");
MESSAGE("The opposing Torkoal's White Smoke prevents stat loss!");
MESSAGE("The opposing Metang's Clear Body prevents stat loss!");
}
}
}
@ -181,15 +181,15 @@ SINGLE_BATTLE_TEST("Mold Breaker, Teravolt, and Turboblaze ignore Clear Body and
if (ability == ABILITY_FULL_METAL_BODY){ // Full Metal Body can't be ignored by breaker abilities
NOT ANIMATION(ANIM_TYPE_MOVE, move, player);
ABILITY_POPUP(opponent, ability);
MESSAGE("Foe Solgaleo's Full Metal Body prevents stat loss!");
MESSAGE("The opposing Solgaleo's Full Metal Body prevents stat loss!");
}
else{
ANIMATION(ANIM_TYPE_MOVE, move, player);
NONE_OF {
ABILITY_POPUP(opponent, ability);
MESSAGE("Foe Solgaleo's Full Metal Body prevents stat loss!");
MESSAGE("Foe Torkoal's White Smoke prevents stat loss!");
MESSAGE("Foe Metang's Clear Body prevents stat loss!");
MESSAGE("The opposing Solgaleo's Full Metal Body prevents stat loss!");
MESSAGE("The opposing Torkoal's White Smoke prevents stat loss!");
MESSAGE("The opposing Metang's Clear Body prevents stat loss!");
}
}
}
@ -220,18 +220,18 @@ SINGLE_BATTLE_TEST("Clear Body, Full Metal Body, and White Smoke don't prevent S
if (heldItem == ITEM_IRON_BALL) {
MESSAGE("Wobbuffet used Celebrate!");
if (ability == ABILITY_FULL_METAL_BODY)
MESSAGE("Foe Solgaleo used Celebrate!");
MESSAGE("The opposing Solgaleo used Celebrate!");
else if (ability == ABILITY_WHITE_SMOKE)
MESSAGE("Foe Torkoal used Celebrate!");
MESSAGE("The opposing Torkoal used Celebrate!");
else
MESSAGE("Foe Metang used Celebrate!");
MESSAGE("The opposing Metang used Celebrate!");
} else {
if (ability == ABILITY_FULL_METAL_BODY)
MESSAGE("Foe Solgaleo used Celebrate!");
MESSAGE("The opposing Solgaleo used Celebrate!");
else if (ability == ABILITY_WHITE_SMOKE)
MESSAGE("Foe Torkoal used Celebrate!");
MESSAGE("The opposing Torkoal used Celebrate!");
else
MESSAGE("Foe Metang used Celebrate!");
MESSAGE("The opposing Metang used Celebrate!");
MESSAGE("Wobbuffet used Celebrate!");
}
}
@ -253,22 +253,22 @@ SINGLE_BATTLE_TEST("Clear Body, Full Metal Body, and White Smoke don't prevent S
TURN { MOVE(player, MOVE_THUNDER_WAVE); }
} SCENE {
if (ability == ABILITY_FULL_METAL_BODY)
MESSAGE("Foe Solgaleo used Celebrate!");
MESSAGE("The opposing Solgaleo used Celebrate!");
else if (ability == ABILITY_WHITE_SMOKE)
MESSAGE("Foe Torkoal used Celebrate!");
MESSAGE("The opposing Torkoal used Celebrate!");
else
MESSAGE("Foe Metang used Celebrate!");
MESSAGE("The opposing Metang used Celebrate!");
MESSAGE("Wobbuffet used Thunder Wave!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_THUNDER_WAVE, player);
NOT ABILITY_POPUP(opponent, ability);
MESSAGE("Wobbuffet used Thunder Wave!");
ONE_OF {
MESSAGE("Foe Metang used Celebrate!");
MESSAGE("Foe Metang is paralyzed! It can't move!");
MESSAGE("Foe Solgaleo used Celebrate!");
MESSAGE("Foe Solgaleo is paralyzed! It can't move!");
MESSAGE("Foe Torkoal used Celebrate!");
MESSAGE("Foe Torkoal is paralyzed! It can't move!");
MESSAGE("The opposing Metang used Celebrate!");
MESSAGE("The opposing Metang couldn't move because it's paralyzed!");
MESSAGE("The opposing Solgaleo used Celebrate!");
MESSAGE("The opposing Solgaleo couldn't move because it's paralyzed!");
MESSAGE("The opposing Torkoal used Celebrate!");
MESSAGE("The opposing Torkoal couldn't move because it's paralyzed!");
}
}
}
@ -319,11 +319,11 @@ SINGLE_BATTLE_TEST("Clear Body, Full Metal Body, and White Smoke don't prevent r
ANIMATION(ANIM_TYPE_MOVE, MOVE_SCARY_FACE, player);
ABILITY_POPUP(opponent, ability);
if (ability == ABILITY_FULL_METAL_BODY)
MESSAGE("Foe Solgaleo used Celebrate!");
MESSAGE("The opposing Solgaleo used Celebrate!");
else if (ability == ABILITY_WHITE_SMOKE)
MESSAGE("Foe Torkoal used Celebrate!");
MESSAGE("The opposing Torkoal used Celebrate!");
else
MESSAGE("Foe Metang used Celebrate!");
MESSAGE("The opposing Metang used Celebrate!");
}
}
@ -351,16 +351,16 @@ SINGLE_BATTLE_TEST("Clear Body, Full Metal Body, and White Smoke don't prevent T
NOT ABILITY_POPUP(opponent, ability);
ANIMATION(ANIM_TYPE_MOVE, MOVE_TOPSY_TURVY, player);
if (ability == ABILITY_FULL_METAL_BODY) {
MESSAGE("Foe Solgaleo used Celebrate!");
MESSAGE("Foe Solgaleo used Celebrate!");
MESSAGE("The opposing Solgaleo used Celebrate!");
MESSAGE("The opposing Solgaleo used Celebrate!");
}
else if (ability == ABILITY_WHITE_SMOKE) {
MESSAGE("Foe Torkoal used Celebrate!");
MESSAGE("Foe Torkoal used Celebrate!");
MESSAGE("The opposing Torkoal used Celebrate!");
MESSAGE("The opposing Torkoal used Celebrate!");
}
else {
MESSAGE("Foe Metang used Celebrate!");
MESSAGE("Foe Metang used Celebrate!");
MESSAGE("The opposing Metang used Celebrate!");
MESSAGE("The opposing Metang used Celebrate!");
}
MESSAGE("Wobbuffet used Scary Face!");
NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_SCARY_FACE, player);
@ -387,28 +387,28 @@ SINGLE_BATTLE_TEST("Clear Body, Full Metal Body, and White Smoke don't prevent S
TURN{ }
} SCENE {
if (ability == ABILITY_FULL_METAL_BODY)
MESSAGE("Foe Solgaleo used Agility!");
MESSAGE("The opposing Solgaleo used Agility!");
else if (ability == ABILITY_WHITE_SMOKE)
MESSAGE("Foe Torkoal used Agility!");
MESSAGE("The opposing Torkoal used Agility!");
else
MESSAGE("Foe Metang used Agility!");
MESSAGE("The opposing Metang used Agility!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_AGILITY, opponent);
MESSAGE("Wobbuffet used Celebrate!");
if (ability == ABILITY_FULL_METAL_BODY)
MESSAGE("Foe Solgaleo used Celebrate!");
MESSAGE("The opposing Solgaleo used Celebrate!");
else if (ability == ABILITY_WHITE_SMOKE)
MESSAGE("Foe Torkoal used Celebrate!");
MESSAGE("The opposing Torkoal used Celebrate!");
else
MESSAGE("Foe Metang used Celebrate!");
MESSAGE("The opposing Metang used Celebrate!");
MESSAGE("Wobbuffet used Spectral Thief!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_SPECTRAL_THIEF, player);
NOT ABILITY_POPUP(opponent, ability);
MESSAGE("Wobbuffet used Celebrate!");
if (ability == ABILITY_FULL_METAL_BODY)
MESSAGE("Foe Solgaleo used Celebrate!");
MESSAGE("The opposing Solgaleo used Celebrate!");
else if (ability == ABILITY_WHITE_SMOKE)
MESSAGE("Foe Torkoal used Celebrate!");
MESSAGE("The opposing Torkoal used Celebrate!");
else
MESSAGE("Foe Metang used Celebrate!");
MESSAGE("The opposing Metang used Celebrate!");
}
}

View file

@ -15,16 +15,16 @@ SINGLE_BATTLE_TEST("Cloud Nine/Air Lock prevent basic weather effects, but witho
TURN {}
} SCENE {
ABILITY_POPUP(player, ability);
MESSAGE("The effects of weather disappeared.");
MESSAGE("Foe Wobbuffet used Sandstorm!");
MESSAGE("The sandstorm rages.");
MESSAGE("The effects of the weather disappeared.");
MESSAGE("The opposing Wobbuffet used Sandstorm!");
MESSAGE("The sandstorm is raging.");
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SANDSTORM_CONTINUES);
NONE_OF {
HP_BAR(player);
HP_BAR(opponent);
MESSAGE("Foe Wobbuffet is buffeted by the sandstorm!");
MESSAGE("The opposing Wobbuffet is buffeted by the sandstorm!");
}
MESSAGE("The sandstorm rages.");
MESSAGE("The sandstorm is raging.");
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SANDSTORM_CONTINUES);
}
}

View file

@ -11,7 +11,7 @@ SINGLE_BATTLE_TEST("Color Change changes the type of a Pokemon being hit by a mo
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player);
ABILITY_POPUP(opponent, ABILITY_COLOR_CHANGE);
MESSAGE("Foe Wobbuffet's Color Change made it the Normal type!");
MESSAGE("The opposing Wobbuffet's Color Change made it the Normal type!");
}
}
@ -26,7 +26,7 @@ SINGLE_BATTLE_TEST("Color Change does not change the type when hit by a move tha
ANIMATION(ANIM_TYPE_MOVE, MOVE_PSYCHO_CUT, player);
NONE_OF {
ABILITY_POPUP(opponent, ABILITY_COLOR_CHANGE);
MESSAGE("Foe Wobbuffet's Color Change made it the Normal type!");
MESSAGE("The opposing Wobbuffet's Color Change made it the Normal type!");
}
}
}
@ -42,7 +42,7 @@ SINGLE_BATTLE_TEST("Color Change does not change the type of a dual-type Pokemon
ANIMATION(ANIM_TYPE_MOVE, MOVE_PSYCHO_CUT, player);
NONE_OF {
ABILITY_POPUP(opponent, ABILITY_COLOR_CHANGE);
MESSAGE("Foe Xatu's Color Change made it the Psychic type!");
MESSAGE("The opposing Xatu's Color Change made it the Psychic type!");
}
}
}
@ -58,7 +58,7 @@ SINGLE_BATTLE_TEST("Color Change does not change the type of a dual-type Pokemon
ANIMATION(ANIM_TYPE_MOVE, MOVE_PSYCHO_CUT, player);
NONE_OF {
ABILITY_POPUP(opponent, ABILITY_COLOR_CHANGE);
MESSAGE("Foe Slowbro's Color Change made it the Psychic type!");
MESSAGE("The opposing Slowbro's Color Change made it the Psychic type!");
}
}
}
@ -73,7 +73,7 @@ SINGLE_BATTLE_TEST("Color Change changes the user to Electric type if hit by a m
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_PSYCHO_CUT, player);
ABILITY_POPUP(opponent, ABILITY_COLOR_CHANGE);
MESSAGE("Foe Wobbuffet's Color Change made it the Electric type!");
MESSAGE("The opposing Wobbuffet's Color Change made it the Electric type!");
}
}
@ -88,9 +88,9 @@ SINGLE_BATTLE_TEST("Color Change changes the type when a Pokemon is hit by Futur
TURN { }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_FUTURE_SIGHT, player);
MESSAGE("Foe Snorlax took the Future Sight attack!");
MESSAGE("The opposing Snorlax took the Future Sight attack!");
ABILITY_POPUP(opponent, ABILITY_COLOR_CHANGE);
MESSAGE("Foe Snorlax's Color Change made it the Psychic type!");
MESSAGE("The opposing Snorlax's Color Change made it the Psychic type!");
}
}
@ -105,9 +105,9 @@ SINGLE_BATTLE_TEST("Color Change changes the type when a Pokemon is hit by Doom
TURN { }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_DOOM_DESIRE, player);
MESSAGE("Foe Wobbuffet took the Doom Desire attack!");
MESSAGE("The opposing Wobbuffet took the Doom Desire attack!");
ABILITY_POPUP(opponent, ABILITY_COLOR_CHANGE);
MESSAGE("Foe Wobbuffet's Color Change made it the Steel type!");
MESSAGE("The opposing Wobbuffet's Color Change made it the Steel type!");
}
}
@ -123,10 +123,10 @@ SINGLE_BATTLE_TEST("Color Change changes the type to Electric when a Pokemon is
TURN { MOVE(opponent, MOVE_ELECTRIFY); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_FUTURE_SIGHT, player);
MESSAGE("Foe Blastoise took the Future Sight attack!");
MESSAGE("The opposing Blastoise took the Future Sight attack!");
MESSAGE("It's super effective!");
ABILITY_POPUP(opponent, ABILITY_COLOR_CHANGE);
MESSAGE("Foe Blastoise's Color Change made it the Electr type!");
MESSAGE("The opposing Blastoise's Color Change made it the Electr type!");
}
}
@ -141,8 +141,8 @@ SINGLE_BATTLE_TEST("Color Change changes the type to Normal when a Pokemon is hi
TURN { }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_FUTURE_SIGHT, player);
MESSAGE("Foe Blastoise took the Future Sight attack!");
MESSAGE("The opposing Blastoise took the Future Sight attack!");
ABILITY_POPUP(opponent, ABILITY_COLOR_CHANGE);
MESSAGE("Foe Blastoise's Color Change made it the Normal type!");
MESSAGE("The opposing Blastoise's Color Change made it the Normal type!");
}
}

View file

@ -45,8 +45,8 @@ SINGLE_BATTLE_TEST("Comatose may be suppressed if pokemon transformed into a pok
} SCENE {
MESSAGE("Komala is drowsing!");
MESSAGE("Komala used Gastro Acid!");
MESSAGE("Foe Ditto used Transform!");
MESSAGE("Foe Ditto transformed into Komala!");
MESSAGE("The opposing Ditto used Transform!");
MESSAGE("The opposing Ditto transformed into Komala!");
ANIMATION(ANIM_TYPE_MOVE, move, player);
if (move == MOVE_POISONPOWDER) { STATUS_ICON(opponent, poison: TRUE); }

View file

@ -51,7 +51,7 @@ DOUBLE_BATTLE_TEST("Commander Tatsugiri avoids moves targetted towards it")
ABILITY_POPUP(playerLeft, ABILITY_COMMANDER);
MESSAGE("Tatsugiri was swallowed by Dondozo and became Dondozo's commander!");
NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentLeft);
MESSAGE("Foe Wobbuffet's attack missed!");
MESSAGE("The opposing Wobbuffet's attack missed!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_POUND, opponentRight);
}
}
@ -71,7 +71,7 @@ DOUBLE_BATTLE_TEST("Commander Tatsugiri will still take residual damage from a f
ABILITY_POPUP(opponentLeft, ABILITY_SAND_STREAM);
MESSAGE("Dondozo is buffeted by the sandstorm!");
MESSAGE("Tatsugiri is buffeted by the sandstorm!");
MESSAGE("Foe Wobbuffet is buffeted by the sandstorm!");
MESSAGE("The opposing Wobbuffet is buffeted by the sandstorm!");
}
}
@ -87,7 +87,7 @@ DOUBLE_BATTLE_TEST("Commander Tatsugiri will still take poison damage if while i
} SCENE {
ABILITY_POPUP(playerLeft, ABILITY_COMMANDER);
MESSAGE("Tatsugiri was swallowed by Dondozo and became Dondozo's commander!");
MESSAGE("Tatsugiri is hurt by poison!");
MESSAGE("Tatsugiri was hurt by its poisoning!");
}
}
@ -104,7 +104,7 @@ DOUBLE_BATTLE_TEST("Commander Tatsugiri still avoids moves even when the attacke
ABILITY_POPUP(playerLeft, ABILITY_COMMANDER);
MESSAGE("Tatsugiri was swallowed by Dondozo and became Dondozo's commander!");
NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentLeft);
MESSAGE("Foe Machamp's attack missed!");
MESSAGE("The opposing Machamp's attack missed!");
}
}
@ -122,7 +122,7 @@ DOUBLE_BATTLE_TEST("Commander cannot affect a Dondozo that was previously affect
} SCENE {
ABILITY_POPUP(playerLeft, ABILITY_COMMANDER);
MESSAGE("Tatsugiri was swallowed by Dondozo and became Dondozo's commander!");
MESSAGE("Tatsugiri is hurt by poison!");
MESSAGE("Tatsugiri was hurt by its poisoning!");
NONE_OF {
ABILITY_POPUP(playerLeft, ABILITY_COMMANDER);
MESSAGE("Tatsugiri was swallowed by Dondozo and became Dondozo's commander!");
@ -144,9 +144,9 @@ DOUBLE_BATTLE_TEST("Commander prevents Whirlwind from working against Dondozo or
} SCENE {
ABILITY_POPUP(playerLeft, ABILITY_COMMANDER);
MESSAGE("Tatsugiri was swallowed by Dondozo and became Dondozo's commander!");
MESSAGE("Foe Wobbuffet used Whirlwind!");
MESSAGE("The opposing Wobbuffet used Whirlwind!");
MESSAGE("But it failed!");
MESSAGE("Foe Wobbuffet used Whirlwind!");
MESSAGE("The opposing Wobbuffet used Whirlwind!");
MESSAGE("But it failed!");
}
}
@ -250,7 +250,7 @@ DOUBLE_BATTLE_TEST("Commander doesn't prevent Imposter from working on a Command
ABILITY_POPUP(playerRight, ABILITY_COMMANDER);
MESSAGE("Tatsugiri was swallowed by Dondozo and became Dondozo's commander!");
ABILITY_POPUP(opponentRight, ABILITY_IMPOSTER);
MESSAGE("Foe Ditto transformed into Tatsugiri using Imposter!");
MESSAGE("The opposing Ditto transformed into Tatsugiri using Imposter!");
}
}
@ -270,17 +270,17 @@ DOUBLE_BATTLE_TEST("Commander Tatsugiri is still affected by Perish Song while c
ABILITY_POPUP(playerRight, ABILITY_COMMANDER);
MESSAGE("Tatsugiri was swallowed by Dondozo and became Dondozo's commander!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_PERISH_SONG, opponentLeft);
MESSAGE("All affected POKéMON will faint in three turns!");
MESSAGE("Dondozo's PERISH count fell to 0!");
MESSAGE("All Pokémon that heard the song will faint in three turns!");
MESSAGE("Dondozo's perish count fell to 0!");
MESSAGE("Dondozo fainted!");
MESSAGE("Foe Wobbuffet's PERISH count fell to 0!");
MESSAGE("Foe Wobbuffet fainted!");
MESSAGE("The opposing Wobbuffet's perish count fell to 0!");
MESSAGE("The opposing Wobbuffet fainted!");
NONE_OF {
MESSAGE("Tatsugiri's PERISH count fell to 0!");
MESSAGE("Tatsugiri's perish count fell to 0!");
MESSAGE("Tatsugiri fainted!");
}
MESSAGE("Foe Wynaut's PERISH count fell to 0!");
MESSAGE("Foe Wynaut fainted!");
MESSAGE("The opposing Wynaut's perish count fell to 0!");
MESSAGE("The opposing Wynaut fainted!");
}
}
@ -323,7 +323,7 @@ DOUBLE_BATTLE_TEST("Commander Attacker is kept (Dondozo Left Slot)")
MESSAGE("Tatsugiri was swallowed by Dondozo and became Dondozo's commander!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_SURF, opponentLeft);
HP_BAR(playerLeft);
MESSAGE("Foe Wobbuffet's attack missed!");
MESSAGE("The opposing Wobbuffet's attack missed!");
HP_BAR(opponentRight);
}
}
@ -344,7 +344,7 @@ DOUBLE_BATTLE_TEST("Commander Attacker is kept (Dondozo Right Slot)")
ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentRight);
ABILITY_POPUP(playerLeft, ABILITY_COMMANDER);
MESSAGE("Tatsugiri was swallowed by Dondozo and became Dondozo's commander!");
MESSAGE("Foe Wobbuffet's attack missed!");
MESSAGE("The opposing Wobbuffet's attack missed!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_SURF, opponentLeft);
HP_BAR(playerRight);
HP_BAR(opponentRight);

View file

@ -21,7 +21,7 @@ SINGLE_BATTLE_TEST("Contrary raises Attack when Intimidated in a single battle",
if (ability == ABILITY_CONTRARY) {
ABILITY_POPUP(opponent, ABILITY_CONTRARY);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
MESSAGE("Foe Spinda's Attack rose!");
MESSAGE("The opposing Spinda's Attack rose!");
}
HP_BAR(player, captureDamage: &results[i].damage);
}
@ -51,18 +51,18 @@ DOUBLE_BATTLE_TEST("Contrary raises Attack when Intimidated in a double battle",
if (abilityLeft == ABILITY_CONTRARY) {
ABILITY_POPUP(opponentLeft, ABILITY_CONTRARY);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft);
MESSAGE("Foe Spinda's Attack rose!");
MESSAGE("The opposing Spinda's Attack rose!");
} else {
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft);
MESSAGE("Mightyena's Intimidate cuts Foe Spinda's attack!");
MESSAGE("Mightyena's Intimidate cuts the opposing Spinda's attack!");
}
if (abilityRight == ABILITY_CONTRARY) {
ABILITY_POPUP(opponentRight, ABILITY_CONTRARY);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentRight);
MESSAGE("Foe Spinda's Attack rose!");
MESSAGE("The opposing Spinda's Attack rose!");
} else {
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentRight);
MESSAGE("Mightyena's Intimidate cuts Foe Spinda's attack!");
MESSAGE("Mightyena's Intimidate cuts the opposing Spinda's attack!");
}
HP_BAR(playerLeft, captureDamage: &results[i].damageLeft);
HP_BAR(playerRight, captureDamage: &results[i].damageRight);
@ -90,28 +90,28 @@ SINGLE_BATTLE_TEST("Contrary raises stats after using a move which would normall
TURN { MOVE(opponent, MOVE_OVERHEAT); }
TURN { MOVE(opponent, MOVE_OVERHEAT); }
} SCENE {
MESSAGE("Foe Spinda used Overheat!");
MESSAGE("The opposing Spinda used Overheat!");
HP_BAR(player, captureDamage: &results[i].damageBefore);
if (ability == ABILITY_CONTRARY) {
// ABILITY_POPUP(opponent, ABILITY_CONTRARY);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
MESSAGE("Foe Spinda's Sp. Atk sharply rose!");
MESSAGE("The opposing Spinda's Sp. Atk sharply rose!");
}
else {
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
MESSAGE("Foe Spinda's Sp. Atk harshly fell!");
MESSAGE("The opposing Spinda's Sp. Atk harshly fell!");
}
// MESSAGE("Foe Spinda used Overheat!");
// MESSAGE("The opposing Spinda used Overheat!");
HP_BAR(player, captureDamage: &results[i].damageAfter);
if (ability == ABILITY_CONTRARY) {
// ABILITY_POPUP(opponent, ABILITY_CONTRARY);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
MESSAGE("Foe Spinda's Sp. Atk sharply rose!");
MESSAGE("The opposing Spinda's Sp. Atk sharply rose!");
}
else {
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
MESSAGE("Foe Spinda's Sp. Atk harshly fell!");
MESSAGE("The opposing Spinda's Sp. Atk harshly fell!");
}
}
FINALLY {
@ -134,21 +134,21 @@ SINGLE_BATTLE_TEST("Contrary lowers a stat after using a move which would normal
TURN { MOVE(opponent, MOVE_SWORDS_DANCE); }
TURN { MOVE(opponent, MOVE_TACKLE); }
} SCENE {
MESSAGE("Foe Spinda used Tackle!");
MESSAGE("The opposing Spinda used Tackle!");
HP_BAR(player, captureDamage: &results[i].damageBefore);
//MESSAGE("Foe Spinda used Swords Dance!");
//MESSAGE("The opposing Spinda used Swords Dance!");
if (ability == ABILITY_CONTRARY) {
// ABILITY_POPUP(opponent, ABILITY_CONTRARY);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
MESSAGE("Foe Spinda's Attack harshly fell!");
MESSAGE("The opposing Spinda's Attack harshly fell!");
}
else {
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
MESSAGE("Foe Spinda's Attack sharply rose!");
MESSAGE("The opposing Spinda's Attack sharply rose!");
}
// MESSAGE("Foe Spinda used Tackle!");
// MESSAGE("The opposing Spinda used Tackle!");
HP_BAR(player, captureDamage: &results[i].damageAfter);
}
FINALLY {
@ -173,14 +173,14 @@ SINGLE_BATTLE_TEST("Contrary raises a stat after using a move which would normal
if (ability == ABILITY_CONTRARY) {
// ABILITY_POPUP(opponent, ABILITY_CONTRARY);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
MESSAGE("Foe Spinda's Attack rose!");
MESSAGE("The opposing Spinda's Attack rose!");
}
else {
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
MESSAGE("Foe Spinda's Attack fell!");
MESSAGE("The opposing Spinda's Attack fell!");
}
MESSAGE("Foe Spinda used Tackle!");
MESSAGE("The opposing Spinda used Tackle!");
HP_BAR(player, captureDamage: &results[i].damage);
}
FINALLY {
@ -202,16 +202,16 @@ SINGLE_BATTLE_TEST("Contrary lowers a stat after using a move which would normal
TURN { MOVE(opponent, MOVE_BELLY_DRUM); }
TURN { MOVE(opponent, MOVE_TACKLE); }
} SCENE {
MESSAGE("Foe Spinda used Tackle!");
MESSAGE("The opposing Spinda used Tackle!");
HP_BAR(player, captureDamage: &results[i].damageBefore);
if (ability == ABILITY_CONTRARY) {
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
MESSAGE("Foe Spinda cut its own HP and maximized ATTACK!"); //Message stays the same
MESSAGE("The opposing Spinda cut its own HP and maximized its Attack!"); //Message stays the same
}
else {
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
MESSAGE("Foe Spinda cut its own HP and maximized ATTACK!");
MESSAGE("The opposing Spinda cut its own HP and maximized its Attack!");
}
HP_BAR(player, captureDamage: &results[i].damageAfter);
@ -234,10 +234,10 @@ SINGLE_BATTLE_TEST("Sticky Web raises Speed by 1 for Contrary mon on switch-in")
TURN {}
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_STICKY_WEB, player);
MESSAGE("A sticky web spreads out on the ground around the opposing team!");
MESSAGE("A sticky web has been laid out on the ground around the opposing team!");
MESSAGE("2 sent out Snivy!");
MESSAGE("Foe Snivy was caught in a Sticky Web!");
MESSAGE("The opposing Snivy was caught in a sticky web!");
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
MESSAGE("Foe Snivy's Speed rose!");
MESSAGE("The opposing Snivy's Speed rose!");
}
}

View file

@ -14,12 +14,12 @@ DOUBLE_BATTLE_TEST("Costar copies an ally's stat stages upon entering battle")
TURN { SWITCH(opponentRight, 2); MOVE(playerLeft, MOVE_CELEBRATE); }
} SCENE {
// Turn 1 - buff up
MESSAGE("Foe Wobbuffet used Swords Dance!");
MESSAGE("The opposing Wobbuffet used Swords Dance!");
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft);
// Turn 2 - Switch into Flamigo
MESSAGE("2 sent out Flamigo!");
ABILITY_POPUP(opponentRight, ABILITY_COSTAR);
MESSAGE("Foe Flamigo copied Foe Wobbuffet's stat changes!");
MESSAGE("The opposing Flamigo copied the opposing Wobbuffet's stat changes!");
} THEN {
EXPECT_EQ(opponentRight->statStages[STAT_ATK], DEFAULT_STAT_STAGE + 2);
}

View file

@ -55,7 +55,7 @@ DOUBLE_BATTLE_TEST("Cotton Down drops speed by one of all other battlers on the
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerRight);
MESSAGE("Wynaut's Speed fell!");
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentRight);
MESSAGE("Foe Wobbuffet's Speed fell!");
MESSAGE("The opposing Wobbuffet's Speed fell!");
} THEN {
EXPECT_EQ(playerLeft->statStages[STAT_SPEED], DEFAULT_STAT_STAGE - 1);
EXPECT_EQ(playerRight->statStages[STAT_SPEED], DEFAULT_STAT_STAGE - 1);

View file

@ -19,14 +19,14 @@ DOUBLE_BATTLE_TEST("Curious Medicine resets ally's stat stages upon entering bat
TURN { SWITCH(opponentRight, 2); MOVE(playerLeft, MOVE_CELEBRATE); }
} SCENE {
// Turn 1 - buff up
MESSAGE("Foe Scolipede used Quiver Dance!");
MESSAGE("The opposing Scolipede used Quiver Dance!");
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft);
// Turn 2 - Switch into Slowking
MESSAGE("2 sent out Slowking!");
if (ability == ABILITY_CURIOUS_MEDICINE)
{
ABILITY_POPUP(opponentRight, ABILITY_CURIOUS_MEDICINE);
MESSAGE("Foe Scolipede's stat changes were reset!");
MESSAGE("The opposing Scolipede's stat changes were removed!");
}
} THEN {
EXPECT_EQ(opponentLeft->statStages[STAT_ATK], (ability == ABILITY_CURIOUS_MEDICINE) ? DEFAULT_STAT_STAGE : DEFAULT_STAT_STAGE - 2);

View file

@ -12,6 +12,6 @@ SINGLE_BATTLE_TEST("Cursed Body triggers 30% of the time")
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_AQUA_JET, player);
ABILITY_POPUP(opponent, ABILITY_CURSED_BODY);
MESSAGE("Wobbuffet's Aqua Jet was disabled by Foe Frillish's Cursed Body!");
MESSAGE("Wobbuffet's Aqua Jet was disabled by the opposing Frillish's Cursed Body!");
}
}

View file

@ -18,14 +18,14 @@ SINGLE_BATTLE_TEST("Cute Charm inflicts infatuation on contact")
if (gMovesInfo[move].makesContact) {
ABILITY_POPUP(opponent, ABILITY_CUTE_CHARM);
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_INFATUATION, player);
MESSAGE("Foe Clefairy's Cute Charm infatuated Wobbuffet!");
MESSAGE("Wobbuffet is in love with Foe Clefairy!");
MESSAGE("The opposing Clefairy's Cute Charm infatuated Wobbuffet!");
MESSAGE("Wobbuffet is in love with the opposing Clefairy!");
} else {
NONE_OF {
ABILITY_POPUP(opponent, ABILITY_CUTE_CHARM);
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_INFATUATION, player);
MESSAGE("Foe Clefairy's Cute Charm infatuated Wobbuffet!");
MESSAGE("Wobbuffet is in love with Foe Clefairy!");
MESSAGE("The opposing Clefairy's Cute Charm infatuated Wobbuffet!");
MESSAGE("Wobbuffet is in love with the opposing Clefairy!");
}
}
}
@ -60,7 +60,7 @@ SINGLE_BATTLE_TEST("Cute Charm triggers 30% of the time")
} SCENE {
ABILITY_POPUP(opponent, ABILITY_CUTE_CHARM);
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_INFATUATION, player);
MESSAGE("Foe Clefairy's Cute Charm infatuated Wobbuffet!");
MESSAGE("Wobbuffet is in love with Foe Clefairy!");
MESSAGE("The opposing Clefairy's Cute Charm infatuated Wobbuffet!");
MESSAGE("Wobbuffet is in love with the opposing Clefairy!");
}
}

View file

@ -90,7 +90,7 @@ SINGLE_BATTLE_TEST("Dancer doesn't trigger if the original user flinches")
TURN { MOVE(opponent, MOVE_FAKE_OUT); MOVE(player, MOVE_DRAGON_DANCE); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_FAKE_OUT, opponent);
MESSAGE("Wobbuffet flinched!");
MESSAGE("Wobbuffet flinched and couldn't move!");
NONE_OF {
ABILITY_POPUP(opponent, ABILITY_DANCER);
ANIMATION(ANIM_TYPE_MOVE, MOVE_DRAGON_DANCE, opponent);
@ -114,14 +114,14 @@ DOUBLE_BATTLE_TEST("Dancer still triggers if another dancer flinches")
ANIMATION(ANIM_TYPE_MOVE, MOVE_DRAGON_DANCE, playerRight);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerRight);
ABILITY_POPUP(playerLeft, ABILITY_DANCER);
MESSAGE("Wobbuffet flinched!");
MESSAGE("Wobbuffet flinched and couldn't move!");
NONE_OF {
MESSAGE("Wobbuffet used Dragon Dance!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_DRAGON_DANCE, playerLeft);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft);
}
ABILITY_POPUP(opponentLeft, ABILITY_DANCER);
MESSAGE("Foe Oricorio used Dragon Dance!");
MESSAGE("The opposing Oricorio used Dragon Dance!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_DRAGON_DANCE, opponentLeft);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft);
}

View file

@ -16,7 +16,7 @@ SINGLE_BATTLE_TEST("Dauntless Shield raises Defense by one stage")
} SCENE {
ABILITY_POPUP(opponent, ABILITY_DAUNTLESS_SHIELD);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
MESSAGE("Foe Zamazenta's Dauntless Shield raised its Defense!");
MESSAGE("The opposing Zamazenta's Dauntless Shield raised its Defense!");
} THEN {
EXPECT_EQ(opponent->statStages[STAT_DEF], DEFAULT_STAT_STAGE + 1);
}
@ -34,11 +34,11 @@ SINGLE_BATTLE_TEST("Dauntless Shield raises Defense by one stage only once per b
} SCENE {
ABILITY_POPUP(opponent, ABILITY_DAUNTLESS_SHIELD);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
MESSAGE("Foe Zamazenta's Dauntless Shield raised its Defense!");
MESSAGE("The opposing Zamazenta's Dauntless Shield raised its Defense!");
NONE_OF {
ABILITY_POPUP(opponent, ABILITY_DAUNTLESS_SHIELD);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
MESSAGE("Foe Zamazenta's Dauntless Shield raised its Defense!");
MESSAGE("The opposing Zamazenta's Dauntless Shield raised its Defense!");
}
} THEN {
EXPECT_EQ(opponent->statStages[STAT_DEF], DEFAULT_STAT_STAGE);
@ -55,12 +55,12 @@ SINGLE_BATTLE_TEST("Dauntless Shield activates when it's no longer effected by N
TURN { SWITCH(player, 1); }
} SCENE {
ABILITY_POPUP(player, ABILITY_NEUTRALIZING_GAS);
MESSAGE("Neutralizing Gas filled the area!");
MESSAGE("Neutralizing gas filled the area!");
SWITCH_OUT_MESSAGE("Weezing");
MESSAGE("The effects of Neutralizing Gas wore off!");
MESSAGE("The effects of the neutralizing gas wore off!");
ABILITY_POPUP(opponent, ABILITY_DAUNTLESS_SHIELD);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
MESSAGE("Foe Zamazenta's Dauntless Shield raised its Defense!");
MESSAGE("The opposing Zamazenta's Dauntless Shield raised its Defense!");
}
}

View file

@ -21,14 +21,14 @@ DOUBLE_BATTLE_TEST("Defiant sharply raises player's Attack after Intimidate")
//1st mon Intimidate
ABILITY_POPUP(opponentLeft, ABILITY_INTIMIDATE);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft);
MESSAGE("Foe Gyarados's Intimidate cuts Mankey's attack!");
MESSAGE("The opposing Gyarados's Intimidate cuts Mankey's attack!");
if (abilityLeft == ABILITY_DEFIANT) {
ABILITY_POPUP(playerLeft, ABILITY_DEFIANT);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft);
MESSAGE("Mankey's Attack sharply rose!");
}
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerRight);
MESSAGE("Foe Gyarados's Intimidate cuts Primeape's attack!");
MESSAGE("The opposing Gyarados's Intimidate cuts Primeape's attack!");
if (abilityRight == ABILITY_DEFIANT) {
ABILITY_POPUP(playerRight, ABILITY_DEFIANT);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerRight);
@ -38,14 +38,14 @@ DOUBLE_BATTLE_TEST("Defiant sharply raises player's Attack after Intimidate")
//2nd mon Intimidate
ABILITY_POPUP(opponentRight, ABILITY_INTIMIDATE);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft);
MESSAGE("Foe Arbok's Intimidate cuts Mankey's attack!");
MESSAGE("The opposing Arbok's Intimidate cuts Mankey's attack!");
if (abilityLeft == ABILITY_DEFIANT) {
ABILITY_POPUP(playerLeft, ABILITY_DEFIANT);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft);
MESSAGE("Mankey's Attack sharply rose!");
}
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerRight);
MESSAGE("Foe Arbok's Intimidate cuts Primeape's attack!");
MESSAGE("The opposing Arbok's Intimidate cuts Primeape's attack!");
if (abilityRight == ABILITY_DEFIANT) {
ABILITY_POPUP(playerRight, ABILITY_DEFIANT);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerRight);
@ -79,35 +79,35 @@ DOUBLE_BATTLE_TEST("Defiant sharply raises opponent's Attack after Intimidate")
//1st mon Intimidate
ABILITY_POPUP(playerLeft, ABILITY_INTIMIDATE);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft);
MESSAGE("Gyarados's Intimidate cuts Foe Mankey's attack!");
MESSAGE("Gyarados's Intimidate cuts the opposing Mankey's attack!");
if (abilityLeft == ABILITY_DEFIANT) {
ABILITY_POPUP(opponentLeft, ABILITY_DEFIANT);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft);
MESSAGE("Foe Mankey's Attack sharply rose!");
MESSAGE("The opposing Mankey's Attack sharply rose!");
}
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentRight);
MESSAGE("Gyarados's Intimidate cuts Foe Primeape's attack!");
MESSAGE("Gyarados's Intimidate cuts the opposing Primeape's attack!");
if (abilityRight == ABILITY_DEFIANT) {
ABILITY_POPUP(opponentRight, ABILITY_DEFIANT);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentRight);
MESSAGE("Foe Primeape's Attack sharply rose!");
MESSAGE("The opposing Primeape's Attack sharply rose!");
}
//2nd mon Intimidate
ABILITY_POPUP(playerRight, ABILITY_INTIMIDATE);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft);
MESSAGE("Arbok's Intimidate cuts Foe Mankey's attack!");
MESSAGE("Arbok's Intimidate cuts the opposing Mankey's attack!");
if (abilityLeft == ABILITY_DEFIANT) {
ABILITY_POPUP(opponentLeft, ABILITY_DEFIANT);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft);
MESSAGE("Foe Mankey's Attack sharply rose!");
MESSAGE("The opposing Mankey's Attack sharply rose!");
}
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentRight);
MESSAGE("Arbok's Intimidate cuts Foe Primeape's attack!");
MESSAGE("Arbok's Intimidate cuts the opposing Primeape's attack!");
if (abilityRight == ABILITY_DEFIANT) {
ABILITY_POPUP(opponentRight, ABILITY_DEFIANT);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentRight);
MESSAGE("Foe Primeape's Attack sharply rose!");
MESSAGE("The opposing Primeape's Attack sharply rose!");
}
} FINALLY {
// -2 from Intimidates and +4 from Defiants gets +2 total
@ -129,7 +129,7 @@ SINGLE_BATTLE_TEST("Defiant activates after Sticky Web lowers Speed")
ANIMATION(ANIM_TYPE_MOVE, MOVE_STICKY_WEB, opponent);
// Switch-in - Sticky Web activates
SEND_IN_MESSAGE("Mankey");
MESSAGE("Mankey was caught in a Sticky Web!");
MESSAGE("Mankey was caught in a sticky web!");
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player);
MESSAGE("Mankey's Speed fell!");
// Defiant activates
@ -153,7 +153,7 @@ SINGLE_BATTLE_TEST("Defiant doesn't activate after Sticky Web lowers Speed if Co
ANIMATION(ANIM_TYPE_MOVE, MOVE_COURT_CHANGE, opponent);
// Switch-in - Sticky Web activates
SEND_IN_MESSAGE("Mankey");
MESSAGE("Mankey was caught in a Sticky Web!");
MESSAGE("Mankey was caught in a sticky web!");
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player);
MESSAGE("Mankey's Speed fell!");
// Defiant doesn't activate
@ -180,7 +180,7 @@ SINGLE_BATTLE_TEST("Defiant correctly activates after Sticky Web lowers Speed if
ANIMATION(ANIM_TYPE_MOVE, MOVE_COURT_CHANGE, opponent);
// Switch-in - Sticky Web activates
SEND_IN_MESSAGE("Mankey");
MESSAGE("Mankey was caught in a Sticky Web!");
MESSAGE("Mankey was caught in a sticky web!");
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player);
MESSAGE("Mankey's Speed fell!");
// Defiant doesn't activate
@ -225,7 +225,7 @@ DOUBLE_BATTLE_TEST("Defiant is activated by Cotton Down for non-ally pokemon")
MESSAGE("Mankey's Attack sharply rose!");
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentRight);
MESSAGE("Foe Mankey's Speed fell!");
MESSAGE("The opposing Mankey's Speed fell!");
} THEN {
EXPECT_EQ(playerLeft->statStages[STAT_SPEED], DEFAULT_STAT_STAGE - 1);
EXPECT_EQ(playerRight->statStages[STAT_SPEED], DEFAULT_STAT_STAGE - 1);
@ -257,11 +257,11 @@ SINGLE_BATTLE_TEST("Defiant activates before White Herb")
if (move == MOVE_LEER) {
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player);
MESSAGE("Mankey's White Herb restored its status!");
MESSAGE("Mankey returned its stats to normal using its White Herb!");
} else {
NONE_OF {
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player);
MESSAGE("Mankey's White Herb restored its status!");
MESSAGE("Mankey returned its stats to normal using its White Herb!");
}
}
} THEN {

View file

@ -16,13 +16,13 @@ SINGLE_BATTLE_TEST("Desolate Land blocks damaging Water-type moves")
TURN { MOVE(opponent, MOVE_WATER_GUN); }
TURN { MOVE(opponent, MOVE_WATER_GUN); }
} SCENE {
MESSAGE("Foe Wobbuffet used Water Gun!");
MESSAGE("The opposing Wobbuffet used Water Gun!");
NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_WATER_GUN, opponent);
MESSAGE("The Water-type attack evaporated in the harsh sunlight!");
MESSAGE("The Water-type attack evaporated in the extremely harsh sunlight!");
NOT HP_BAR(player);
MESSAGE("Foe Wobbuffet used Water Gun!");
MESSAGE("The opposing Wobbuffet used Water Gun!");
NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_WATER_GUN, opponent);
MESSAGE("The Water-type attack evaporated in the harsh sunlight!");
MESSAGE("The Water-type attack evaporated in the extremely harsh sunlight!");
NOT HP_BAR(player);
} THEN {
EXPECT_EQ(player->hp, player->maxHP);
@ -42,10 +42,10 @@ DOUBLE_BATTLE_TEST("Desolate Land blocks damaging Water-type moves and prints th
} WHEN {
TURN { MOVE(opponentLeft, MOVE_SURF); }
} SCENE {
MESSAGE("Foe Wobbuffet used Surf!");
MESSAGE("The opposing 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!");
MESSAGE("The Water-type attack evaporated in the extremely harsh sunlight!");
NOT MESSAGE("The Water-type attack evaporated in the extremely harsh sunlight!");
} THEN {
EXPECT_EQ(playerLeft->hp, playerLeft->maxHP);
EXPECT_EQ(playerRight->hp, playerRight->maxHP);
@ -61,7 +61,7 @@ SINGLE_BATTLE_TEST("Desolate Land does not block a move if pokemon is asleep and
} 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.");
NOT MESSAGE("The Water-type attack evaporated in the extremely harsh sunlight!");
MESSAGE("The opposing Wobbuffet is fast asleep.");
}
}

View file

@ -98,7 +98,7 @@ SINGLE_BATTLE_TEST("Disguised Mimikyu takes damage from Rocky Helmet without bre
HP_BAR(opponent);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent);
HP_BAR(player);
MESSAGE("Mimikyu was hurt by Foe Wobbuffet's Rocky Helmet!");
MESSAGE("Mimikyu was hurt by the opposing Wobbuffet's Rocky Helmet!");
} THEN {
EXPECT_EQ(player->species, SPECIES_MIMIKYU_DISGUISED);
}
@ -116,7 +116,7 @@ SINGLE_BATTLE_TEST("Disguised Mimikyu takes damage from Rough Skin without break
HP_BAR(opponent);
ABILITY_POPUP(opponent, ABILITY_ROUGH_SKIN);
HP_BAR(player);
MESSAGE("Mimikyu was hurt by Foe Carvanha's Rough Skin!");
MESSAGE("Mimikyu was hurt by the opposing Carvanha's Rough Skin!");
} THEN {
EXPECT_EQ(player->species, SPECIES_MIMIKYU_DISGUISED);
}
@ -146,11 +146,11 @@ SINGLE_BATTLE_TEST("Disguised Mimikyu's types revert back to Ghost/Fairy when Di
TURN { MOVE(opponent, MOVE_TACKLE); }
TURN { MOVE(opponent, MOVE_SHADOW_CLAW); }
} SCENE {
MESSAGE("Foe Wobbuffet used Soak!");
MESSAGE("The opposing Wobbuffet used Soak!");
MESSAGE("Mimikyu transformed into the Water type!");
MESSAGE("Foe Wobbuffet used Tackle!");
MESSAGE("The opposing Wobbuffet used Tackle!");
ABILITY_POPUP(player, ABILITY_DISGUISE);
MESSAGE("Foe Wobbuffet used Shadow Claw!");
MESSAGE("The opposing Wobbuffet used Shadow Claw!");
MESSAGE("It's super effective!");
}
}
@ -167,7 +167,7 @@ SINGLE_BATTLE_TEST("Disguised Mimikyu blocks a move after getting Gastro Acid Ba
TURN { MOVE(opponent, MOVE_SHADOW_CLAW); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_GASTRO_ACID, opponent);
MESSAGE("Wobbuffet's ability was suppressed!");
MESSAGE("Wobbuffet's Ability was suppressed!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_BATON_PASS, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_SHADOW_CLAW, opponent);
ABILITY_POPUP(player, ABILITY_DISGUISE);

View file

@ -22,7 +22,7 @@ SINGLE_BATTLE_TEST("Download raises Attack if player has lower Def than Sp. Def"
{
ABILITY_POPUP(opponent, ABILITY_DOWNLOAD);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
MESSAGE("Foe Porygon's Download raised its Attack!");
MESSAGE("The opposing Porygon's Download raised its Attack!");
}
HP_BAR(player, captureDamage: &results[i].damage);
} FINALLY {
@ -85,7 +85,7 @@ SINGLE_BATTLE_TEST("Download doesn't activate if target hasn't been sent out yet
{
ABILITY_POPUP(opponent, ABILITY_DOWNLOAD);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
MESSAGE("Foe Porygon2's Download raised its Sp. Atk!");
MESSAGE("The opposing Porygon2's Download raised its Sp. Atk!");
}
ANIMATION(ANIM_TYPE_MOVE, MOVE_TRI_ATTACK, opponent);

View file

@ -19,13 +19,13 @@ SINGLE_BATTLE_TEST("Effect Spore only inflicts status on contact")
if (gMovesInfo[move].makesContact) {
ABILITY_POPUP(opponent, ABILITY_EFFECT_SPORE);
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, player);
MESSAGE("Wobbuffet was poisoned by Foe Breloom's Effect Spore!");
MESSAGE("Wobbuffet was poisoned by the opposing Breloom's Effect Spore!");
STATUS_ICON(player, poison: TRUE);
} else {
NONE_OF {
ABILITY_POPUP(opponent, ABILITY_EFFECT_SPORE);
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, player);
MESSAGE("Wobbuffet was poisoned by Foe Breloom's Effect Spore!");
MESSAGE("Wobbuffet was poisoned by the opposing Breloom's Effect Spore!");
STATUS_ICON(player, poison: TRUE);
}
}
@ -46,7 +46,7 @@ SINGLE_BATTLE_TEST("Effect Spore causes poison 9% of the time")
} SCENE {
ABILITY_POPUP(opponent, ABILITY_EFFECT_SPORE);
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, player);
MESSAGE("Wobbuffet was poisoned by Foe Breloom's Effect Spore!");
MESSAGE("Wobbuffet was poisoned by the opposing Breloom's Effect Spore!");
STATUS_ICON(player, poison: TRUE);
}
}
@ -65,7 +65,7 @@ SINGLE_BATTLE_TEST("Effect Spore causes paralysis 10% of the time")
} SCENE {
ABILITY_POPUP(opponent, ABILITY_EFFECT_SPORE);
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, player);
MESSAGE("Foe Breloom's Effect Spore paralyzed Wobbuffet! It may be unable to move!");
MESSAGE("The opposing Breloom's Effect Spore paralyzed Wobbuffet, so it may be unable to move!");
STATUS_ICON(player, paralysis: TRUE);
}
}
@ -84,7 +84,7 @@ SINGLE_BATTLE_TEST("Effect Spore causes sleep 11% of the time")
} SCENE {
ABILITY_POPUP(opponent, ABILITY_EFFECT_SPORE);
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_SLP, player);
MESSAGE("Foe Breloom's Effect Spore made Wobbuffet sleep!");
MESSAGE("The opposing Breloom's Effect Spore made Wobbuffet sleep!");
STATUS_ICON(player, sleep: TRUE);
}
}

View file

@ -20,13 +20,13 @@ SINGLE_BATTLE_TEST("Embody Aspect raises a stat depending on the users form by o
ABILITY_POPUP(opponent, ability);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
if (ability == ABILITY_EMBODY_ASPECT_TEAL_MASK)
MESSAGE("Foe Ogerpon's Embody Aspect raised its Speed!");
MESSAGE("The opposing Ogerpon's Embody Aspect raised its Speed!");
else if (ability == ABILITY_EMBODY_ASPECT_HEARTHFLAME_MASK)
MESSAGE("Foe Ogerpon's Embody Aspect raised its Attack!");
MESSAGE("The opposing Ogerpon's Embody Aspect raised its Attack!");
else if (ability == ABILITY_EMBODY_ASPECT_WELLSPRING_MASK)
MESSAGE("Foe Ogerpon's Embody Aspect raised its Sp. Def!");
MESSAGE("The opposing Ogerpon's Embody Aspect raised its Sp. Def!");
else if (ability == ABILITY_EMBODY_ASPECT_CORNERSTONE_MASK)
MESSAGE("Foe Ogerpon's Embody Aspect raised its Defense!");
MESSAGE("The opposing Ogerpon's Embody Aspect raised its Defense!");
} THEN {
if (ability == ABILITY_EMBODY_ASPECT_TEAL_MASK)
EXPECT_EQ(opponent->statStages[STAT_SPEED], DEFAULT_STAT_STAGE + 1);
@ -49,11 +49,11 @@ SINGLE_BATTLE_TEST("Embody Aspect activates when it's no longer effected by Neut
TURN { SWITCH(player, 1); }
} SCENE {
ABILITY_POPUP(player, ABILITY_NEUTRALIZING_GAS);
MESSAGE("Neutralizing Gas filled the area!");
MESSAGE("Neutralizing gas filled the area!");
SWITCH_OUT_MESSAGE("Weezing");
MESSAGE("The effects of Neutralizing Gas wore off!");
MESSAGE("The effects of the neutralizing gas wore off!");
ABILITY_POPUP(opponent, ABILITY_EMBODY_ASPECT_TEAL_MASK);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
MESSAGE("Foe Ogerpon's Embody Aspect raised its Speed!");
MESSAGE("The opposing Ogerpon's Embody Aspect raised its Speed!");
}
}

View file

@ -17,13 +17,13 @@ SINGLE_BATTLE_TEST("Flame Body inflicts burn on contact")
if (gMovesInfo[move].makesContact) {
ABILITY_POPUP(opponent, ABILITY_FLAME_BODY);
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_BRN, player);
MESSAGE("Foe Magmar's Flame Body burned Wobbuffet!");
MESSAGE("The opposing Magmar's Flame Body burned Wobbuffet!");
STATUS_ICON(player, burn: TRUE);
} else {
NONE_OF {
ABILITY_POPUP(opponent, ABILITY_FLAME_BODY);
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_BRN, player);
MESSAGE("Foe Magmar's Flame Body burned Wobbuffet!");
MESSAGE("The opposing Magmar's Flame Body burned Wobbuffet!");
STATUS_ICON(player, burn: TRUE);
}
}
@ -43,7 +43,7 @@ SINGLE_BATTLE_TEST("Flame Body triggers 30% of the time")
} SCENE {
ABILITY_POPUP(opponent, ABILITY_FLAME_BODY);
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_BRN, player);
MESSAGE("Foe Magmar's Flame Body burned Wobbuffet!");
MESSAGE("The opposing Magmar's Flame Body burned Wobbuffet!");
STATUS_ICON(player, burn: TRUE);
}
}

View file

@ -122,13 +122,13 @@ DOUBLE_BATTLE_TEST("Forecast transforms all Castforms present in weather")
MESSAGE("Castform transformed!");
ABILITY_POPUP(opponentLeft, ABILITY_FORECAST);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, opponentLeft);
MESSAGE("Foe Castform transformed!");
MESSAGE("The opposing Castform transformed!");
ABILITY_POPUP(playerRight, ABILITY_FORECAST);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, playerRight);
MESSAGE("Castform transformed!");
ABILITY_POPUP(opponentRight, ABILITY_FORECAST);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, opponentRight);
MESSAGE("Foe Castform transformed!");
MESSAGE("The opposing Castform transformed!");
} THEN {
switch (move)
{

View file

@ -29,9 +29,9 @@ SINGLE_BATTLE_TEST("Frisk triggers in a Single Battle")
TURN { ; }
} SCENE {
ABILITY_POPUP(player, ABILITY_FRISK);
MESSAGE("Furret frisked Foe Sentret and found its Potion!");
MESSAGE("Furret frisked the opposing Sentret and found its Potion!");
ABILITY_POPUP(opponent, ABILITY_FRISK);
MESSAGE("Foe Sentret frisked Furret and found its Potion!");
MESSAGE("The opposing Sentret frisked Furret and found its Potion!");
}
}
@ -51,10 +51,10 @@ DOUBLE_BATTLE_TEST("Frisk triggers for player in a Double Battle after switching
} WHEN {
TURN { MOVE(opponentLeft, MOVE_POUND, target: target); SEND_OUT(target, 2); }
} SCENE {
MESSAGE("Foe Wynaut used Pound!");
MESSAGE("The opposing Wynaut used Pound!");
MESSAGE("Wobbuffet fainted!");
ABILITY_POPUP(target, ABILITY_FRISK);
MESSAGE("Furret frisked Foe Wynaut and found its Potion!");
MESSAGE("Furret frisked the opposing Wynaut and found its Potion!");
}
}
@ -75,8 +75,8 @@ DOUBLE_BATTLE_TEST("Frisk triggers for opponent in a Double Battle after switchi
TURN { MOVE(playerLeft, MOVE_POUND, target: target); SEND_OUT(target, 2); }
} SCENE {
MESSAGE("Wynaut used Pound!");
MESSAGE("Foe Wobbuffet fainted!");
MESSAGE("The opposing Wobbuffet fainted!");
ABILITY_POPUP(target, ABILITY_FRISK);
MESSAGE("Foe Furret frisked Wynaut and found its Potion!");
MESSAGE("The opposing Furret frisked Wynaut and found its Potion!");
}
}

View file

@ -16,10 +16,10 @@ SINGLE_BATTLE_TEST("Gale Wings only grants priority at full HP")
} SCENE {
if (hp == 100) {
MESSAGE("Talonflame used Aerial Ace!");
MESSAGE("Foe Wobbuffet used Celebrate!");
MESSAGE("The opposing Wobbuffet used Celebrate!");
}
else {
MESSAGE("Foe Wobbuffet used Celebrate!");
MESSAGE("The opposing Wobbuffet used Celebrate!");
MESSAGE("Talonflame used Aerial Ace!");
}
}
@ -41,10 +41,10 @@ SINGLE_BATTLE_TEST("Gale Wings only grants priority to Flying-type moves")
} SCENE {
if (move == MOVE_AERIAL_ACE) {
MESSAGE("Talonflame used Aerial Ace!");
MESSAGE("Foe Wobbuffet used Celebrate!");
MESSAGE("The opposing Wobbuffet used Celebrate!");
}
else {
MESSAGE("Foe Wobbuffet used Celebrate!");
MESSAGE("The opposing Wobbuffet used Celebrate!");
MESSAGE("Talonflame used Flare Blitz!");
}
}
@ -74,16 +74,16 @@ SINGLE_BATTLE_TEST("Gale Wings doesn't increase priority of Flying-type Natural
} SCENE {
MESSAGE("Wobbuffet used Celebrate!");
if (move == MOVE_NATURAL_GIFT) {
MESSAGE("Foe Talonflame used Natural Gift!");
MESSAGE("The opposing Talonflame used Natural Gift!");
}
else if (move == MOVE_JUDGMENT) {
MESSAGE("Foe Talonflame used Judgment!");
MESSAGE("The opposing Talonflame used Judgment!");
}
else if (move == MOVE_HIDDEN_POWER) {
MESSAGE("Foe Talonflame used Hidden Power!");
MESSAGE("The opposing Talonflame used Hidden Power!");
}
else {
MESSAGE("Foe Talonflame used Tera Blast!");
MESSAGE("The opposing Talonflame used Tera Blast!");
}
}
}

View file

@ -13,7 +13,7 @@ SINGLE_BATTLE_TEST("Good as Gold protects from status moves")
} SCENE {
NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_TOXIC, player);
ABILITY_POPUP(opponent, ABILITY_GOOD_AS_GOLD);
MESSAGE("It doesn't affect Foe Gholdengo…");
MESSAGE("It doesn't affect the opposing Gholdengo…");
}
}
@ -29,7 +29,7 @@ SINGLE_BATTLE_TEST("Good as Gold doesn't protect the user from it's own moves")
ANIMATION(ANIM_TYPE_MOVE, MOVE_NASTY_PLOT, opponent);
NONE_OF {
ABILITY_POPUP(opponent, ABILITY_GOOD_AS_GOLD);
MESSAGE("It doesn't affect Foe Gholdengo…");
MESSAGE("It doesn't affect the opposing Gholdengo…");
}
}
}
@ -47,7 +47,7 @@ SINGLE_BATTLE_TEST("Good as Gold doesn't protect from moves that target the fiel
ANIMATION(ANIM_TYPE_MOVE, MOVE_STEALTH_ROCK, player);
NONE_OF {
ABILITY_POPUP(opponent, ABILITY_GOOD_AS_GOLD);
MESSAGE("It doesn't affect Foe Gholdengo…");
MESSAGE("It doesn't affect the opposing Gholdengo…");
}
}
}
@ -65,6 +65,6 @@ DOUBLE_BATTLE_TEST("Good as Gold protects from partner's status moves")
} SCENE {
NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_HELPING_HAND, opponentRight);
ABILITY_POPUP(opponentLeft, ABILITY_GOOD_AS_GOLD);
MESSAGE("It doesn't affect Foe Gholdengo…");
MESSAGE("It doesn't affect the opposing Gholdengo…");
}
}

View file

@ -22,8 +22,8 @@ DOUBLE_BATTLE_TEST("Grim Neigh raises Sp. Attack by one stage after directly cau
for (i = 0; i < 3; i++) {
ONE_OF {
MESSAGE("Snorunt fainted!");
MESSAGE("Foe Glalie fainted!");
MESSAGE("Foe Abra fainted!");
MESSAGE("The opposing Glalie fainted!");
MESSAGE("The opposing Abra fainted!");
}
ABILITY_POPUP(playerLeft, abilityPopUp);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft);
@ -57,8 +57,8 @@ DOUBLE_BATTLE_TEST("Grim Neigh does not trigger if Pokemon faint to indirect dam
for (i = 0; i < 3; i++) {
ONE_OF {
MESSAGE("Snorunt fainted!");
MESSAGE("Foe Glalie fainted!");
MESSAGE("Foe Abra fainted!");
MESSAGE("The opposing Glalie fainted!");
MESSAGE("The opposing Abra fainted!");
}
NONE_OF {
ABILITY_POPUP(playerLeft, abilityPopUp);

View file

@ -89,7 +89,7 @@ SINGLE_BATTLE_TEST("(Gulp Missile) Transformed Cramorant deal 1/4 of damage oppo
ABILITY_POPUP(player, ABILITY_GULP_MISSILE);
HP_BAR(opponent, captureDamage: &gulpMissileDamage);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
MESSAGE("Foe Wobbuffet's Defense fell!");
MESSAGE("The opposing Wobbuffet's Defense fell!");
} THEN {
EXPECT_EQ(gulpMissileDamage, opponent->maxHP / 4);
}

View file

@ -13,7 +13,7 @@ SINGLE_BATTLE_TEST("Hunger Switch switches Morpeko's forms at the end of the tur
TURN { MOVE(player, MOVE_CELEBRATE); }
} SCENE {
MESSAGE("Morpeko used Celebrate!");
MESSAGE("Foe Wobbuffet used Celebrate!");
MESSAGE("The opposing Wobbuffet used Celebrate!");
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player);
} THEN {
if (species == SPECIES_MORPEKO_FULL_BELLY)

View file

@ -19,7 +19,7 @@ SINGLE_BATTLE_TEST("Hyper Cutter prevents intimidate")
ABILITY_POPUP(player, ABILITY_INTIMIDATE);
NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); }
ABILITY_POPUP(opponent, ABILITY_HYPER_CUTTER);
MESSAGE("Foe Krabby's Hyper Cutter prevents Attack loss!");
MESSAGE("The opposing Krabby's Hyper Cutter prevents Attack loss!");
HP_BAR(player, captureDamage: &turnTwoHit);
} THEN {
EXPECT_EQ(turnOneHit, turnTwoHit);
@ -36,7 +36,7 @@ SINGLE_BATTLE_TEST("Hyper Cutter prevents Attack stage reduction from moves")
TURN { MOVE(player, MOVE_GROWL); }
} SCENE {
ABILITY_POPUP(opponent, ABILITY_HYPER_CUTTER);
MESSAGE("Foe Krabby's Hyper Cutter prevents Attack loss!");
MESSAGE("The opposing Krabby's Hyper Cutter prevents Attack loss!");
}
}
@ -50,7 +50,7 @@ SINGLE_BATTLE_TEST("Hyper Cutter doesn't prevent Attack reduction from burn")
TURN { MOVE(player, MOVE_WILL_O_WISP); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_WILL_O_WISP, player);
MESSAGE("Foe Krabby was burned!");
MESSAGE("The opposing Krabby was burned!");
} THEN {
EXPECT_EQ(opponent->statStages[STAT_ATK], DEFAULT_STAT_STAGE);
}
@ -68,10 +68,10 @@ SINGLE_BATTLE_TEST("Hyper Cutter is ignored by Mold Breaker")
ABILITY_POPUP(player, ABILITY_MOLD_BREAKER);
MESSAGE("Pinsir breaks the mold!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_GROWL, player);
MESSAGE("Foe Krabby's Attack fell!");
MESSAGE("The opposing Krabby's Attack fell!");
NONE_OF {
ABILITY_POPUP(opponent, ABILITY_HYPER_CUTTER);
MESSAGE("Foe Krabby's Hyper Cutter prevents Attack loss!");
MESSAGE("The opposing Krabby's Hyper Cutter prevents Attack loss!");
}
}
}
@ -87,8 +87,8 @@ SINGLE_BATTLE_TEST("Hyper Cutter doesn't prevent Attack stage reduction from mov
TURN {}
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_SUPERPOWER, opponent);
MESSAGE("Foe Krabby's Attack fell!");
MESSAGE("Foe Krabby's Defense fell!");
MESSAGE("The opposing Krabby's Attack fell!");
MESSAGE("The opposing Krabby's Defense fell!");
} THEN {
EXPECT_EQ(opponent->statStages[STAT_ATK], DEFAULT_STAT_STAGE - 1);
}
@ -105,9 +105,9 @@ SINGLE_BATTLE_TEST("Hyper Cutter doesn't prevent Topsy-Turvy")
TURN { MOVE(opponent, MOVE_SWORDS_DANCE); MOVE(player, MOVE_TOPSY_TURVY); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_SWORDS_DANCE, opponent);
MESSAGE("Foe Krabby's Attack sharply rose!");
MESSAGE("The opposing Krabby's Attack sharply rose!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_TOPSY_TURVY, player);
MESSAGE("Foe Krabby's stat changes were all reversed!");
MESSAGE("All stat changes on the opposing Krabby were inverted!");
} THEN {
EXPECT_EQ(opponent->statStages[STAT_ATK], DEFAULT_STAT_STAGE - 2);
}
@ -124,7 +124,7 @@ SINGLE_BATTLE_TEST("Hyper Cutter doesn't prevent Spectral Thief from resetting p
TURN { MOVE(opponent, MOVE_SWORDS_DANCE); MOVE(player, MOVE_SPECTRAL_THIEF); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_SWORDS_DANCE, opponent);
MESSAGE("Foe Krabby's Attack sharply rose!");
MESSAGE("The opposing Krabby's Attack sharply rose!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_SPECTRAL_THIEF, player);
MESSAGE("Wobbuffet stole the target's boosted stats!");
} THEN {

View file

@ -26,7 +26,7 @@ SINGLE_BATTLE_TEST("Immunity prevents Toxic bad poison")
} SCENE {
MESSAGE("Wobbuffet used Toxic!");
ABILITY_POPUP(opponent, ABILITY_IMMUNITY);
MESSAGE("Foe Snorlax's Immunity prevents poisoning!");
MESSAGE("The opposing Snorlax's Immunity prevents poisoning!");
NOT STATUS_ICON(opponent, poison: TRUE);
}
}

View file

@ -19,7 +19,7 @@ SINGLE_BATTLE_TEST("Innards Out deal dmg on fainting equal to the amount of dmg
} WHEN {
TURN { MOVE(opponent, MOVE_PSYCHIC); SEND_OUT(player, 1); if (hp == 100) { SEND_OUT(opponent, 1); } }
} SCENE {
MESSAGE("Foe Wobbuffet used Psychic!");
MESSAGE("The opposing Wobbuffet used Psychic!");
HP_BAR(player, hp);
ABILITY_POPUP(player, ABILITY_INNARDS_OUT);
HP_BAR(opponent, hp);
@ -38,8 +38,8 @@ SINGLE_BATTLE_TEST("Innards Out does not trigger after Gastro Acid has been used
TURN { MOVE(opponent, MOVE_GASTRO_ACID); }
TURN { MOVE(opponent, MOVE_PSYCHIC); SEND_OUT(player, 1); }
} SCENE {
MESSAGE("Foe Wobbuffet used Gastro Acid!");
MESSAGE("Foe Wobbuffet used Psychic!");
MESSAGE("The opposing Wobbuffet used Gastro Acid!");
MESSAGE("The opposing Wobbuffet used Psychic!");
HP_BAR(player);
NONE_OF {
ABILITY_POPUP(player, ABILITY_INNARDS_OUT);
@ -59,7 +59,7 @@ SINGLE_BATTLE_TEST("Innards Out does not damage Magic Guard Pokemon")
} WHEN {
TURN { MOVE(opponent, MOVE_PSYCHIC); SEND_OUT(player, 1); }
} SCENE {
MESSAGE("Foe Clefable used Psychic!");
MESSAGE("The opposing Clefable used Psychic!");
HP_BAR(player);
ABILITY_POPUP(player, ABILITY_INNARDS_OUT);
NOT HP_BAR(opponent);

View file

@ -20,7 +20,7 @@ SINGLE_BATTLE_TEST("Inner Focus prevents intimidate")
ABILITY_POPUP(player, ABILITY_INTIMIDATE);
NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); }
ABILITY_POPUP(opponent, ABILITY_INNER_FOCUS);
MESSAGE("Foe Zubat's Inner Focus prevents stat loss!");
MESSAGE("The opposing Zubat's Inner Focus prevents stat loss!");
HP_BAR(player, captureDamage: &turnTwoHit);
} THEN {
EXPECT_EQ(turnOneHit, turnTwoHit);
@ -38,7 +38,7 @@ SINGLE_BATTLE_TEST("Inner Focus prevents flinching")
}
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_FAKE_OUT, player);
NONE_OF { MESSAGE("Foe Zubat flinched!"); }
NONE_OF { MESSAGE("The opposing Zubat flinched and couldn't move!"); }
ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent);
}
}
@ -52,6 +52,6 @@ SINGLE_BATTLE_TEST("Inner Focus is ignored by Mold Breaker")
TURN { MOVE(player, MOVE_FAKE_OUT); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_FAKE_OUT, player);
MESSAGE("Foe Zubat flinched!");
MESSAGE("The opposing Zubat flinched and couldn't move!");
}
}

View file

@ -23,7 +23,7 @@ SINGLE_BATTLE_TEST("Intimidate (opponent) lowers player's attack after switch ou
{
ABILITY_POPUP(opponent, ABILITY_INTIMIDATE);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player);
MESSAGE("Foe Arbok's Intimidate cuts Wobbuffet's attack!");
MESSAGE("The opposing Arbok's Intimidate cuts Wobbuffet's attack!");
}
HP_BAR(opponent, captureDamage: &results[i].damage);
} FINALLY {
@ -49,7 +49,7 @@ SINGLE_BATTLE_TEST("Intimidate (opponent) lowers player's attack after KO", s16
{
ABILITY_POPUP(opponent, ABILITY_INTIMIDATE);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player);
MESSAGE("Foe Arbok's Intimidate cuts Wobbuffet's attack!");
MESSAGE("The opposing Arbok's Intimidate cuts Wobbuffet's attack!");
}
HP_BAR(opponent, captureDamage: &results[i].damage);
} FINALLY {
@ -92,15 +92,15 @@ DOUBLE_BATTLE_TEST("Intimidate doesn't activate on an empty field in a double ba
// Intimidate activates after all battlers have been brought out
ABILITY_POPUP(playerLeft, ABILITY_INTIMIDATE);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft);
MESSAGE("Ekans's Intimidate cuts Foe Arbok's attack!");
MESSAGE("Ekans's Intimidate cuts the opposing Arbok's attack!");
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentRight);
MESSAGE("Ekans's Intimidate cuts Foe Wynaut's attack!");
MESSAGE("Ekans's Intimidate cuts the opposing Wynaut's attack!");
ABILITY_POPUP(opponentLeft, ABILITY_INTIMIDATE);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft);
MESSAGE("Foe Arbok's Intimidate cuts Ekans's attack!");
MESSAGE("The opposing Arbok's Intimidate cuts Ekans's attack!");
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerRight);
MESSAGE("Foe Arbok's Intimidate cuts Abra's attack!");
MESSAGE("The opposing Arbok's Intimidate cuts Abra's attack!");
}
}
@ -120,13 +120,13 @@ SINGLE_BATTLE_TEST("Intimidate and Eject Button force the opponent to Attack")
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_QUICK_ATTACK, player);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent);
MESSAGE("Foe Wobbuffet is switched out with the Eject Button!");
MESSAGE("The opposing Wobbuffet is switched out with the Eject Button!");
MESSAGE("2 sent out Hitmontop!");
ABILITY_POPUP(opponent, ABILITY_INTIMIDATE);
MESSAGE("Foe Hitmontop's Intimidate cuts Wobbuffet's attack!");
MESSAGE("The opposing Hitmontop's Intimidate cuts Wobbuffet's attack!");
NONE_OF {
ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent);
MESSAGE("Foe Hitmontop used Tackle!");
MESSAGE("The opposing Hitmontop used Tackle!");
}
}
}
@ -161,10 +161,10 @@ DOUBLE_BATTLE_TEST("Intimidate activates on an empty slot")
SEND_IN_MESSAGE("Hitmontop");
ABILITY_POPUP(playerLeft, ABILITY_INTIMIDATE);
NONE_OF {
MESSAGE("Hitmontop's Intimidate cuts Foe Ralts's attack!");
MESSAGE("Hitmontop's Intimidate cuts the opposing Ralts's attack!");
}
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentRight);
MESSAGE("Hitmontop's Intimidate cuts Foe Azurill's attack!");
MESSAGE("Hitmontop's Intimidate cuts the opposing Azurill's attack!");
}
}
@ -209,9 +209,9 @@ SINGLE_BATTLE_TEST("Intimidate can not further lower opponents Atk stat if it is
ABILITY_POPUP(opponent, ABILITY_INTIMIDATE);
NONE_OF {
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player);
MESSAGE("Foe Arbok's Intimidate cuts Wobbuffet's attack!");
MESSAGE("The opposing Arbok's Intimidate cuts Wobbuffet's attack!");
}
MESSAGE("Wobbuffet's Attack won't go lower!");
MESSAGE("Wobbuffet's Attack won't go any lower!");
} THEN {
EXPECT_EQ(player->statStages[STAT_ATK], MIN_STAT_STAGE);
}
@ -256,9 +256,9 @@ SINGLE_BATTLE_TEST("Intimidate activates when it's no longer effected by Neutral
TURN { SWITCH(player, 1); }
} SCENE {
ABILITY_POPUP(player, ABILITY_NEUTRALIZING_GAS);
MESSAGE("Neutralizing Gas filled the area!");
MESSAGE("Neutralizing gas filled the area!");
SWITCH_OUT_MESSAGE("Weezing");
MESSAGE("The effects of Neutralizing Gas wore off!");
MESSAGE("The effects of the neutralizing gas wore off!");
ABILITY_POPUP(opponent, ABILITY_INTIMIDATE);
SEND_IN_MESSAGE("Wobbuffet");
}

View file

@ -16,7 +16,7 @@ SINGLE_BATTLE_TEST("Intrepid Sword raises Attack by one stage")
} SCENE {
ABILITY_POPUP(opponent, ABILITY_INTREPID_SWORD);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
MESSAGE("Foe Zacian's Intrepid Sword raised its Attack!");
MESSAGE("The opposing Zacian's Intrepid Sword raised its Attack!");
} THEN {
EXPECT_EQ(opponent->statStages[STAT_ATK], DEFAULT_STAT_STAGE + 1);
}
@ -34,11 +34,11 @@ SINGLE_BATTLE_TEST("Intrepid Sword raises Attack by one stage only once per batt
} SCENE {
ABILITY_POPUP(opponent, ABILITY_INTREPID_SWORD);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
MESSAGE("Foe Zacian's Intrepid Sword raised its Attack!");
MESSAGE("The opposing Zacian's Intrepid Sword raised its Attack!");
NONE_OF {
ABILITY_POPUP(opponent, ABILITY_INTREPID_SWORD);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
MESSAGE("Foe Zacian's Intrepid Sword raised its Attack!");
MESSAGE("The opposing Zacian's Intrepid Sword raised its Attack!");
}
} THEN {
EXPECT_EQ(opponent->statStages[STAT_ATK], DEFAULT_STAT_STAGE);
@ -55,12 +55,12 @@ SINGLE_BATTLE_TEST("Intrepid Sword activates when it's no longer effected by Neu
TURN { SWITCH(player, 1); }
} SCENE {
ABILITY_POPUP(player, ABILITY_NEUTRALIZING_GAS);
MESSAGE("Neutralizing Gas filled the area!");
MESSAGE("Neutralizing gas filled the area!");
SWITCH_OUT_MESSAGE("Weezing");
MESSAGE("The effects of Neutralizing Gas wore off!");
MESSAGE("The effects of the neutralizing gas wore off!");
ABILITY_POPUP(opponent, ABILITY_INTREPID_SWORD);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
MESSAGE("Foe Zacian's Intrepid Sword raised its Attack!");
MESSAGE("The opposing Zacian's Intrepid Sword raised its Attack!");
}
}
@ -77,7 +77,7 @@ SINGLE_BATTLE_TEST("Intrepid Sword and Dauntless Shield both can be Skill Swappe
} SCENE {
ABILITY_POPUP(opponent, ABILITY_INTREPID_SWORD);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
MESSAGE("Foe Zacian's Intrepid Sword raised its Attack!");
MESSAGE("The opposing Zacian's Intrepid Sword raised its Attack!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_SKILL_SWAP, player);
ABILITY_POPUP(player, ABILITY_INTREPID_SWORD);
@ -86,7 +86,7 @@ SINGLE_BATTLE_TEST("Intrepid Sword and Dauntless Shield both can be Skill Swappe
ABILITY_POPUP(opponent, ABILITY_DAUNTLESS_SHIELD);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
MESSAGE("Foe Zamazenta's Dauntless Shield raised its Defense!");
MESSAGE("The opposing Zamazenta's Dauntless Shield raised its Defense!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_SKILL_SWAP, player);
ABILITY_POPUP(player, ABILITY_DAUNTLESS_SHIELD);

View file

@ -27,11 +27,11 @@ SINGLE_BATTLE_TEST("Keen Eye, Gen9+ Illuminate & Minds Eye prevent accuracy stag
ABILITY_POPUP(opponent, ability);
NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player);
if (species == SPECIES_HITMONCHAN)
MESSAGE("Foe Hitmonchan's Keen Eye prevents accuracy loss!");
MESSAGE("The opposing Hitmonchan's Keen Eye prevents accuracy loss!");
else if (species == SPECIES_STARYU)
MESSAGE("Foe Staryu's Illuminate prevents accuracy loss!");
MESSAGE("The opposing Staryu's Illuminate prevents accuracy loss!");
else
MESSAGE("Foe Ursaluna's Mind's Eye prevents accuracy loss!");
MESSAGE("The opposing Ursaluna's Mind's Eye prevents accuracy loss!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent);
}
}
@ -111,22 +111,22 @@ SINGLE_BATTLE_TEST("Keen Eye, Gen9+ Illuminate & Minds Eye don't prevent Topsy-T
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_HONE_CLAWS, opponent);
if (species == SPECIES_HITMONCHAN) {
MESSAGE("Foe Hitmonchan's Attack rose!");
MESSAGE("Foe Hitmonchan's accuracy rose!");
MESSAGE("The opposing Hitmonchan's Attack rose!");
MESSAGE("The opposing Hitmonchan's accuracy rose!");
} else if (species == SPECIES_STARYU) {
MESSAGE("Foe Staryu's Attack rose!");
MESSAGE("Foe Staryu's accuracy rose!");
MESSAGE("The opposing Staryu's Attack rose!");
MESSAGE("The opposing Staryu's accuracy rose!");
} else {
MESSAGE("Foe Ursaluna's Attack rose!");
MESSAGE("Foe Ursaluna's accuracy rose!");
MESSAGE("The opposing Ursaluna's Attack rose!");
MESSAGE("The opposing Ursaluna's accuracy rose!");
}
ANIMATION(ANIM_TYPE_MOVE, MOVE_TOPSY_TURVY, player);
if (species == SPECIES_HITMONCHAN)
MESSAGE("Foe Hitmonchan's stat changes were all reversed!");
MESSAGE("All stat changes on the opposing Hitmonchan were inverted!");
else if (species == SPECIES_STARYU)
MESSAGE("Foe Staryu's stat changes were all reversed!");
MESSAGE("All stat changes on the opposing Staryu were inverted!");
else
MESSAGE("Foe Ursaluna's stat changes were all reversed!");
MESSAGE("All stat changes on the opposing Ursaluna were inverted!");
} THEN {
EXPECT_EQ(opponent->statStages[STAT_ACC], DEFAULT_STAT_STAGE - 1);
}
@ -183,13 +183,13 @@ SINGLE_BATTLE_TEST("Keen Eye & Gen9+ Illuminate don't prevent Spectral Thief fro
ANIMATION(ANIM_TYPE_MOVE, MOVE_HONE_CLAWS, opponent);
if (species == SPECIES_HITMONCHAN)
{
MESSAGE("Foe Hitmonchan's Attack rose!");
MESSAGE("Foe Hitmonchan's accuracy rose!");
MESSAGE("The opposing Hitmonchan's Attack rose!");
MESSAGE("The opposing Hitmonchan's accuracy rose!");
}
else
{
MESSAGE("Foe Staryu's Attack rose!");
MESSAGE("Foe Staryu's accuracy rose!");
MESSAGE("The opposing Staryu's Attack rose!");
MESSAGE("The opposing Staryu's accuracy rose!");
}
ANIMATION(ANIM_TYPE_MOVE, MOVE_SPECTRAL_THIEF, player);
MESSAGE("Wobbuffet stole the target's boosted stats!");

View file

@ -46,7 +46,7 @@ SINGLE_BATTLE_TEST("Leaf Guard prevents status conditions from Flame Orb and Tox
NONE_OF { MESSAGE("Leafeon was burned!"); STATUS_ICON(player, burn: TRUE); }
}
else {
NONE_OF { MESSAGE("Leafeon is badly poisoned!"); STATUS_ICON(player, poison: TRUE); }
NONE_OF { MESSAGE("Leafeon was badly poisoned!"); STATUS_ICON(player, poison: TRUE); }
}
}
}

View file

@ -17,12 +17,12 @@ SINGLE_BATTLE_TEST("Lightning Rod absorbs Electric-type moves and increases the
};
ABILITY_POPUP(opponent, ABILITY_LIGHTNING_ROD);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
MESSAGE("Foe Raichu's Sp. Atk rose!");
MESSAGE("The opposing Raichu's Sp. Atk rose!");
} else {
NONE_OF {
ABILITY_POPUP(opponent, ABILITY_LIGHTNING_ROD);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
MESSAGE("Foe Raichu's Sp. Atk rose!");
MESSAGE("The opposing Raichu's Sp. Atk rose!");
};
ANIMATION(ANIM_TYPE_MOVE, MOVE_THUNDERBOLT, player);
HP_BAR(opponent);
@ -54,10 +54,10 @@ DOUBLE_BATTLE_TEST("Lightning Rod forces single-target Electric-type moves to ta
};
ABILITY_POPUP(opponentLeft, ABILITY_LIGHTNING_ROD);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft);
MESSAGE("Foe Raichu's Sp. Atk rose!");
MESSAGE("The opposing Raichu's Sp. Atk rose!");
ABILITY_POPUP(opponentLeft, ABILITY_LIGHTNING_ROD);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft);
MESSAGE("Foe Raichu's Sp. Atk rose!");
MESSAGE("The opposing Raichu's Sp. Atk rose!");
} else {
NONE_OF {
HP_BAR(opponentRight);

View file

@ -13,7 +13,7 @@ SINGLE_BATTLE_TEST("Magic Bounce bounces back status moves")
} SCENE {
ABILITY_POPUP(opponent, ABILITY_MAGIC_BOUNCE);
NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_TOXIC, player);
MESSAGE("Wynaut's Toxic was bounced back by Foe Espeon's Magic Bounce!");
MESSAGE("Wynaut's Toxic was bounced back by the opposing Espeon's Magic Bounce!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_TOXIC, opponent);
STATUS_ICON(player, badPoison: TRUE);
}
@ -31,7 +31,7 @@ SINGLE_BATTLE_TEST("Magic Bounce bounces back powder moves")
} SCENE {
ABILITY_POPUP(opponent, ABILITY_MAGIC_BOUNCE);
NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_TOXIC, player);
MESSAGE("Wynaut's Stun Spore was bounced back by Foe Espeon's Magic Bounce!");
MESSAGE("Wynaut's Stun Spore was bounced back by the opposing Espeon's Magic Bounce!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_STUN_SPORE, opponent);
STATUS_ICON(player, paralysis: TRUE);
}
@ -49,7 +49,7 @@ SINGLE_BATTLE_TEST("Magic Bounce cannot bounce back powder moves against Grass T
} SCENE {
ABILITY_POPUP(opponent, ABILITY_MAGIC_BOUNCE);
NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_STUN_SPORE, player);
MESSAGE("Oddish's Stun Spore was bounced back by Foe Espeon's Magic Bounce!");
MESSAGE("Oddish's Stun Spore was bounced back by the opposing Espeon's Magic Bounce!");
NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_STUN_SPORE, opponent);
MESSAGE("It doesn't affect Oddish…");
NOT STATUS_ICON(player, paralysis: TRUE);
@ -70,7 +70,7 @@ DOUBLE_BATTLE_TEST("Magic Bounce bounces back moves hitting both foes at two foe
} SCENE {
ABILITY_POPUP(opponentLeft, ABILITY_MAGIC_BOUNCE);
NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_LEER, playerLeft);
MESSAGE("Abra's Leer was bounced back by Foe Espeon's Magic Bounce!");
MESSAGE("Abra's Leer was bounced back by the opposing Espeon's Magic Bounce!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_LEER, opponentLeft);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft);
MESSAGE("Abra's Defense fell!");
@ -78,7 +78,7 @@ DOUBLE_BATTLE_TEST("Magic Bounce bounces back moves hitting both foes at two foe
MESSAGE("Kadabra's Defense fell!");
// Also check if second original target gets hit by Leer as this was once bugged
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentRight);
MESSAGE("Foe Wynaut's Defense fell!");
MESSAGE("The opposing Wynaut's Defense fell!");
}
}
@ -106,10 +106,10 @@ DOUBLE_BATTLE_TEST("Magic Bounce bounces back moves hitting foes field")
ABILITY_POPUP(opponentRight, ABILITY_MAGIC_BOUNCE);
NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_STEALTH_ROCK, playerLeft);
if (abilityBattlerOne == ABILITY_MAGIC_BOUNCE) {
MESSAGE("Abra's Stealth Rock was bounced back by Foe Natu's Magic Bounce!");
MESSAGE("Abra's Stealth Rock was bounced back by the opposing Natu's Magic Bounce!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_STEALTH_ROCK, opponentLeft);
} else {
MESSAGE("Abra's Stealth Rock was bounced back by Foe Espeon's Magic Bounce!");
MESSAGE("Abra's Stealth Rock was bounced back by the opposing Espeon's Magic Bounce!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_STEALTH_ROCK, opponentRight);
}
}
@ -126,7 +126,7 @@ SINGLE_BATTLE_TEST("Magic Bounce bounced back status moves can not be bounced ba
} SCENE {
ABILITY_POPUP(opponent, ABILITY_MAGIC_BOUNCE);
NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_TOXIC, player);
MESSAGE("Espeon's Toxic was bounced back by Foe Espeon's Magic Bounce!");
MESSAGE("Espeon's Toxic was bounced back by the opposing Espeon's Magic Bounce!");
NOT ABILITY_POPUP(player, ABILITY_MAGIC_BOUNCE);
ANIMATION(ANIM_TYPE_MOVE, MOVE_TOXIC, opponent);
STATUS_ICON(player, badPoison: TRUE);

View file

@ -15,15 +15,15 @@ SINGLE_BATTLE_TEST("Magician does not get self-damage recoil after stealing Life
// 1st turn
MESSAGE("Delphox used Tackle!");
ABILITY_POPUP(player, ABILITY_MAGICIAN);
MESSAGE("Delphox stole Foe Wobbuffet's Life Orb!");
MESSAGE("Delphox stole the opposing Wobbuffet's Life Orb!");
NONE_OF {
HP_BAR(player);
MESSAGE("Delphox was hurt by its Life Orb!");
MESSAGE("Delphox was hurt by the Life Orb!");
}
// 2nd turn - Life Orb recoil happens now
MESSAGE("Delphox used Tackle!");
HP_BAR(player);
MESSAGE("Delphox was hurt by its Life Orb!");
MESSAGE("Delphox was hurt by the Life Orb!");
}
}

View file

@ -36,7 +36,7 @@ SINGLE_BATTLE_TEST("Mind's Eye doesn't bypass a Ghost-type's Wonder Guard")
HP_BAR(opponent);
}
ABILITY_POPUP(opponent, ABILITY_WONDER_GUARD);
MESSAGE("Foe Shedinja avoided damage with Wonder Guard!");
MESSAGE("The opposing Shedinja avoided damage with Wonder Guard!");
}
}

View file

@ -23,22 +23,22 @@ SINGLE_BATTLE_TEST("Mirror Armor lowers a stat of the attacking pokemon")
switch (statId)
{
case STAT_DEF:
MESSAGE("Foe Wynaut's Defense fell!");
MESSAGE("The opposing Wynaut's Defense fell!");
break;
case STAT_ATK:
MESSAGE("Foe Wynaut's Attack fell!");
MESSAGE("The opposing Wynaut's Attack fell!");
break;
case STAT_EVASION:
MESSAGE("Foe Wynaut's evasiveness harshly fell!");
MESSAGE("The opposing Wynaut's evasiveness harshly fell!");
break;
case STAT_ACC:
MESSAGE("Foe Wynaut's accuracy fell!");
MESSAGE("The opposing Wynaut's accuracy fell!");
break;
case STAT_SPATK:
MESSAGE("Foe Wynaut's Sp. Atk fell!");
MESSAGE("The opposing Wynaut's Sp. Atk fell!");
break;
case STAT_SPDEF:
MESSAGE("Foe Wynaut's Sp. Def harshly fell!");
MESSAGE("The opposing Wynaut's Sp. Def harshly fell!");
break;
}
} THEN {
@ -55,11 +55,11 @@ SINGLE_BATTLE_TEST("Mirror Armor triggers even if the attacking Pokemon also has
} WHEN {
TURN { MOVE(opponent, MOVE_LEER); }
} SCENE {
MESSAGE("Foe Corviknight used Leer!");
MESSAGE("The opposing Corviknight used Leer!");
ABILITY_POPUP(player, ABILITY_MIRROR_ARMOR);
NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
MESSAGE("Foe Corviknight's Defense fell!");
MESSAGE("The opposing Corviknight's Defense fell!");
} THEN {
EXPECT_EQ(player->statStages[STAT_DEF], DEFAULT_STAT_STAGE);
EXPECT_EQ(opponent->statStages[STAT_DEF], DEFAULT_STAT_STAGE - 1);
@ -74,10 +74,10 @@ SINGLE_BATTLE_TEST("Mirror Armor doesn't lower the stats of an attacking Pokemon
} WHEN {
TURN { MOVE(opponent, MOVE_LEER); }
} SCENE {
MESSAGE("Foe Wynaut used Leer!");
MESSAGE("The opposing Wynaut used Leer!");
ABILITY_POPUP(player, ABILITY_MIRROR_ARMOR);
ABILITY_POPUP(opponent, ABILITY_CLEAR_BODY);
MESSAGE("Foe Wynaut's Clear Body prevents stat loss!");
MESSAGE("The opposing Wynaut's Clear Body prevents stat loss!");
} THEN {
EXPECT_EQ(player->statStages[STAT_DEF], DEFAULT_STAT_STAGE);
EXPECT_EQ(opponent->statStages[STAT_DEF], DEFAULT_STAT_STAGE);
@ -95,7 +95,7 @@ SINGLE_BATTLE_TEST("Mirror Armor lowers the Attack of Pokemon with Intimidate")
ABILITY_POPUP(opponent, ABILITY_INTIMIDATE);
ABILITY_POPUP(player, ABILITY_MIRROR_ARMOR);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
MESSAGE("Foe Gyarados's Attack fell!");
MESSAGE("The opposing Gyarados's Attack fell!");
} THEN {
EXPECT_EQ(player->statStages[STAT_ATK], DEFAULT_STAT_STAGE);
EXPECT_EQ(opponent->statStages[STAT_ATK], DEFAULT_STAT_STAGE - 1);
@ -113,9 +113,9 @@ SINGLE_BATTLE_TEST("Mirror Armor doesn't lower the stats of an attacking Pokemon
TURN { MOVE(opponent, MOVE_SUBSTITUTE); }
TURN { MOVE(opponent, MOVE_LEER); }
} SCENE {
MESSAGE("Foe Wynaut used Substitute!");
MESSAGE("The opposing Wynaut used Substitute!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_SUBSTITUTE, opponent);
MESSAGE("Foe Wynaut used Leer!");
MESSAGE("The opposing Wynaut used Leer!");
ABILITY_POPUP(player, ABILITY_MIRROR_ARMOR);
NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
} THEN {
@ -132,10 +132,10 @@ SINGLE_BATTLE_TEST("Mirror Armor raises the stat of an attacking Pokemon with Co
} WHEN {
TURN { MOVE(opponent, MOVE_LEER); }
} SCENE {
MESSAGE("Foe Shuckle used Leer!");
MESSAGE("The opposing Shuckle used Leer!");
ABILITY_POPUP(player, ABILITY_MIRROR_ARMOR);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
MESSAGE("Foe Shuckle's Defense rose!");
MESSAGE("The opposing Shuckle's Defense rose!");
} THEN {
EXPECT_EQ(player->statStages[STAT_DEF], DEFAULT_STAT_STAGE);
EXPECT_EQ(opponent->statStages[STAT_DEF], DEFAULT_STAT_STAGE + 1);
@ -156,10 +156,10 @@ SINGLE_BATTLE_TEST("Mirror Armor doesn't lower the stat of the attacking Pokemon
MESSAGE("Corviknight used Screech!");
MESSAGE("Corviknight used Screech!");
MESSAGE("Corviknight used Screech!");
MESSAGE("Foe Wynaut used Leer!");
MESSAGE("The opposing Wynaut used Leer!");
ABILITY_POPUP(player, ABILITY_MIRROR_ARMOR);
NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
MESSAGE("Foe Wynaut's Defense won't go lower!");
MESSAGE("The opposing Wynaut's Defense won't go any lower!");
} THEN {
EXPECT_EQ(player->statStages[STAT_DEF], DEFAULT_STAT_STAGE);
EXPECT_EQ(opponent->statStages[STAT_DEF], MIN_STAT_STAGE);
@ -186,10 +186,10 @@ DOUBLE_BATTLE_TEST("Mirror Armor lowers Speed of the partner Pokemon after Court
TURN { }
} SCENE {
MESSAGE("Wobbuffet used Sticky Web!");
MESSAGE("Foe Wynaut used Court Change!");
MESSAGE("Foe Wynaut swapped the battle effects affecting each side!");
MESSAGE("The opposing Wynaut used Court Change!");
MESSAGE("The opposing Wynaut swapped the battle effects affecting each side of the field!");
SEND_IN_MESSAGE("Corviknight");
MESSAGE("Corviknight was caught in a Sticky Web!");
MESSAGE("Corviknight was caught in a sticky web!");
ABILITY_POPUP(playerRight, ABILITY_MIRROR_ARMOR);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft);
MESSAGE("Wobbuffet's Speed fell!");

View file

@ -23,8 +23,8 @@ DOUBLE_BATTLE_TEST("Moxie/Chilling Neigh raises Attack by one stage after direct
for (i = 0; i < 3; i++) {
ONE_OF {
MESSAGE("Snorunt fainted!");
MESSAGE("Foe Glalie fainted!");
MESSAGE("Foe Abra fainted!");
MESSAGE("The opposing Glalie fainted!");
MESSAGE("The opposing Abra fainted!");
}
ABILITY_POPUP(playerLeft, abilityPopUp);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft);
@ -61,8 +61,8 @@ DOUBLE_BATTLE_TEST("Moxie/Chilling Neigh does not trigger if Pokemon faint to in
for (i = 0; i < 3; i++) {
ONE_OF {
MESSAGE("Snorunt fainted!");
MESSAGE("Foe Glalie fainted!");
MESSAGE("Foe Abra fainted!");
MESSAGE("The opposing Glalie fainted!");
MESSAGE("The opposing Abra fainted!");
}
NONE_OF {
ABILITY_POPUP(playerLeft, abilityPopUp);
@ -95,13 +95,13 @@ SINGLE_BATTLE_TEST("Moxie/Chilling Neigh does not trigger when already at maximu
ANIMATION(ANIM_TYPE_MOVE, MOVE_BELLY_DRUM, player);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player);
if (species == SPECIES_SALAMENCE)
MESSAGE("Salamence cut its own HP and maximized ATTACK!");
MESSAGE("Salamence cut its own HP and maximized its Attack!");
else if (species == SPECIES_GLASTRIER)
MESSAGE("Glastrier cut its own HP and maximized ATTACK!");
MESSAGE("Glastrier cut its own HP and maximized its Attack!");
else
MESSAGE("Calyrex cut its own HP and maximized ATTACK!");
MESSAGE("Calyrex cut its own HP and maximized its Attack!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_QUICK_ATTACK, player);
MESSAGE("Foe Snorunt fainted!");
MESSAGE("The opposing Snorunt fainted!");
NONE_OF {
ABILITY_POPUP(player, abilityPopUp);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player);

View file

@ -61,18 +61,18 @@ DOUBLE_BATTLE_TEST("Opportunist raises Attack only once when partner has Intimid
if (abilityLeft == ABILITY_CONTRARY) {
ABILITY_POPUP(opponentLeft, ABILITY_CONTRARY);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft);
MESSAGE("Foe Spinda's Attack rose!");
MESSAGE("The opposing Spinda's Attack rose!");
} else {
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft);
MESSAGE("Mightyena's Intimidate cuts Foe Spinda's attack!");
MESSAGE("Mightyena's Intimidate cuts the opposing Spinda's attack!");
}
if (abilityRight == ABILITY_CONTRARY) {
ABILITY_POPUP(opponentRight, ABILITY_CONTRARY);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentRight);
MESSAGE("Foe Spinda's Attack rose!");
MESSAGE("The opposing Spinda's Attack rose!");
} else {
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentRight);
MESSAGE("Mightyena's Intimidate cuts Foe Spinda's attack!");
MESSAGE("Mightyena's Intimidate cuts the opposing Spinda's attack!");
}
if ((abilityLeft == ABILITY_CONTRARY && abilityRight != ABILITY_CONTRARY)

View file

@ -12,7 +12,7 @@ SINGLE_BATTLE_TEST("Overcoat blocks powder and spore moves")
} SCENE {
ABILITY_POPUP(opponent, ABILITY_OVERCOAT);
NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_STUN_SPORE, player);
MESSAGE("It doesn't affect Foe Pineco…");
MESSAGE("It doesn't affect the opposing Pineco…");
}
}

View file

@ -13,11 +13,11 @@ SINGLE_BATTLE_TEST("Own Tempo prevents Intimidate but no other stat down changes
} SCENE {
ABILITY_POPUP(player, ABILITY_INTIMIDATE);
ABILITY_POPUP(opponent, ABILITY_OWN_TEMPO);
MESSAGE("Foe Slowpoke's Own Tempo prevents stat loss!");
MESSAGE("The opposing Slowpoke's Own Tempo prevents stat loss!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_SCARY_FACE, player);
NONE_OF {
ABILITY_POPUP(opponent, ABILITY_OWN_TEMPO);
MESSAGE("Foe Slowpoke's Own Tempo prevents stat loss!");
MESSAGE("The opposing Slowpoke's Own Tempo prevents stat loss!");
}
}
}
@ -32,7 +32,7 @@ SINGLE_BATTLE_TEST("Own Tempo prevents confusion from moves by the opponent")
TURN { MOVE(player, MOVE_CONFUSE_RAY); }
} SCENE {
ABILITY_POPUP(opponent, ABILITY_OWN_TEMPO);
MESSAGE("Foe Slowpoke's Own Tempo prevents confusion!");
MESSAGE("The opposing Slowpoke's Own Tempo prevents confusion!");
}
}
@ -52,7 +52,7 @@ SINGLE_BATTLE_TEST("Own Tempo prevents confusion from moves by the user")
ANIMATION(ANIM_TYPE_MOVE, MOVE_PETAL_DANCE, opponent);
ANIMATION(ANIM_TYPE_MOVE, MOVE_PETAL_DANCE, opponent);
ANIMATION(ANIM_TYPE_MOVE, MOVE_PETAL_DANCE, opponent);
NONE_OF { MESSAGE("Foe Slowpoke became confused due to fatigue!"); }
NONE_OF { MESSAGE("The opposing Slowpoke became confused due to fatigue!"); }
}
}
@ -68,7 +68,7 @@ SINGLE_BATTLE_TEST("Own Tempo is ignored by Mold Breaker")
} SCENE {
NONE_OF {
ABILITY_POPUP(opponent, ABILITY_OWN_TEMPO);
MESSAGE("Foe Slowpoke's Own Tempo prevents confusion!");
MESSAGE("The opposing Slowpoke's Own Tempo prevents confusion!");
}
}
}
@ -84,12 +84,12 @@ SINGLE_BATTLE_TEST("Own Tempo cures confusion obtained from an opponent with Mol
TURN { MOVE(player, MOVE_CONFUSE_RAY); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_CONFUSE_RAY, player);
MESSAGE("Foe Slowpoke became confused!");
MESSAGE("The opposing Slowpoke became confused!");
NONE_OF {
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_CONFUSION, opponent);
}
ABILITY_POPUP(opponent, ABILITY_OWN_TEMPO);
MESSAGE("Foe Slowpoke's Own Tempo cured its confusion problem!");
MESSAGE("The opposing Slowpoke's Own Tempo cured its confusion problem!");
}
}
@ -107,10 +107,10 @@ SINGLE_BATTLE_TEST("Own Tempo cures confusion if it's obtained via Skill Swap")
}
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_CONFUSE_RAY, player);
MESSAGE("Foe Wobbuffet became confused!");
MESSAGE("The opposing Wobbuffet became confused!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_SKILL_SWAP, player);
ABILITY_POPUP(opponent, ABILITY_OWN_TEMPO);
MESSAGE("Foe Wobbuffet's Own Tempo cured its confusion problem!");
MESSAGE("The opposing Wobbuffet's Own Tempo cured its confusion problem!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent);
}
}

View file

@ -94,7 +94,7 @@ DOUBLE_BATTLE_TEST("Parental Bond does not convert multi-target moves into a two
ANIMATION(ANIM_TYPE_MOVE, MOVE_EARTHQUAKE, playerLeft);
HP_BAR(opponentLeft);
MESSAGE("It doesn't affect Pidgey…");
MESSAGE("It doesn't affect Foe Pidgey…");
MESSAGE("It doesn't affect the opposing Pidgey…");
ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, playerRight);
ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponentLeft);
ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponentRight);
@ -149,7 +149,7 @@ SINGLE_BATTLE_TEST("Parental Bond has no affect on multi hit moves and they stil
MESSAGE("Kangaskhan has Mega Evolved into Mega Kangaskhan!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_COMET_PUNCH, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_COMET_PUNCH, player);
MESSAGE("Hit 2 time(s)!");
MESSAGE("The Pokémon was hit 2 time(s)!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent);
}
THEN {
@ -176,7 +176,7 @@ SINGLE_BATTLE_TEST("Parental Bond has no affect on multi hit moves and they stil
ANIMATION(ANIM_TYPE_MOVE, MOVE_COMET_PUNCH, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_COMET_PUNCH, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_COMET_PUNCH, player);
MESSAGE("Hit 3 time(s)!");
MESSAGE("The Pokémon was hit 3 time(s)!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent);
}
THEN {
@ -204,7 +204,7 @@ SINGLE_BATTLE_TEST("Parental Bond has no affect on multi hit moves and they stil
ANIMATION(ANIM_TYPE_MOVE, MOVE_COMET_PUNCH, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_COMET_PUNCH, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_COMET_PUNCH, player);
MESSAGE("Hit 4 time(s)!");
MESSAGE("The Pokémon was hit 4 time(s)!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent);
}
THEN {
@ -231,7 +231,7 @@ SINGLE_BATTLE_TEST("Parental Bond has no affect on multi hit moves and they stil
ANIMATION(ANIM_TYPE_MOVE, MOVE_COMET_PUNCH, player);
ANIMATION(ANIM_TYPE_MOVE, MOVE_COMET_PUNCH, player);
NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_COMET_PUNCH, player);
MESSAGE("Hit 5 time(s)!");
MESSAGE("The Pokémon was hit 5 time(s)!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent);
}
THEN {
@ -255,9 +255,9 @@ SINGLE_BATTLE_TEST("Parental Bond Smack Down effect triggers after 2nd hit")
MESSAGE("Kangaskhan has Mega Evolved into Mega Kangaskhan!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_SMACK_DOWN, player);
HP_BAR(opponent);
NOT MESSAGE("Foe Skarmory fell straight down!");
NOT MESSAGE("The opposing Skarmory fell straight down!");
HP_BAR(opponent);
MESSAGE("Foe Skarmory fell straight down!");
MESSAGE("The opposing Skarmory fell straight down!");
} THEN {
EXPECT_EQ(player->species, SPECIES_KANGASKHAN_MEGA);
}
@ -277,7 +277,7 @@ SINGLE_BATTLE_TEST("Parental Bond Snore strikes twice while asleep")
ANIMATION(ANIM_TYPE_MOVE, MOVE_SNORE, player);
HP_BAR(opponent, captureDamage: &damage[0]);
HP_BAR(opponent, captureDamage: &damage[1]);
MESSAGE("Hit 2 time(s)!");
MESSAGE("The Pokémon was hit 2 time(s)!");
} THEN {
if (B_PARENTAL_BOND_DMG == GEN_6)
EXPECT_MUL_EQ(damage[0], Q_4_12(0.5), damage[1]);

View file

@ -44,7 +44,7 @@ SINGLE_BATTLE_TEST("Pastel Veil immediately cures Mold Breaker poison")
ANIMATION(ANIM_TYPE_MOVE, MOVE_TOXIC, player);
STATUS_ICON(opponent, badPoison: TRUE);
ABILITY_POPUP(opponent, ABILITY_PASTEL_VEIL);
MESSAGE("Foe Ponyta's Pastel Veil cured its poison problem!");
MESSAGE("The opposing Ponyta's Pastel Veil cured its poison problem!");
STATUS_ICON(opponent, none: TRUE);
ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent);
}
@ -78,7 +78,7 @@ SINGLE_BATTLE_TEST("Pastel Veil prevents Toxic bad poison")
} SCENE {
MESSAGE("Wobbuffet used Toxic!");
ABILITY_POPUP(opponent, ABILITY_PASTEL_VEIL);
MESSAGE("Foe Ponyta is protected by a pastel veil!");
MESSAGE("The opposing Ponyta is protected by a pastel veil!");
NOT STATUS_ICON(opponent, badPoison: TRUE);
}
}
@ -96,7 +96,7 @@ DOUBLE_BATTLE_TEST("Pastel Veil prevents Toxic bad poison on partner")
} SCENE {
MESSAGE("Wobbuffet used Toxic!");
ABILITY_POPUP(opponentLeft, ABILITY_PASTEL_VEIL);
MESSAGE("Foe Wynaut is protected by a pastel veil!");
MESSAGE("The opposing Wynaut is protected by a pastel veil!");
NOT STATUS_ICON(opponentRight, badPoison: TRUE);
}
}
@ -147,7 +147,7 @@ DOUBLE_BATTLE_TEST("Pastel Veil cures partner's poison on initial switch in")
} SCENE {
MESSAGE("2 sent out Wobbuffet and Ponyta!");
ABILITY_POPUP(opponentRight, ABILITY_PASTEL_VEIL);
MESSAGE("Foe Wobbuffet was cured of its poisoning!");
MESSAGE("The opposing Wobbuffet was cured of its poisoning!");
STATUS_ICON(opponentLeft, none: TRUE);
}
}
@ -165,7 +165,7 @@ DOUBLE_BATTLE_TEST("Pastel Veil cures partner's poison on switch in")
} SCENE {
MESSAGE("2 sent out Ponyta!");
ABILITY_POPUP(opponentRight, ABILITY_PASTEL_VEIL);
MESSAGE("Foe Wobbuffet was cured of its poisoning!");
MESSAGE("The opposing Wobbuffet was cured of its poisoning!");
STATUS_ICON(opponentLeft, none: TRUE);
}
}

View file

@ -18,13 +18,13 @@ SINGLE_BATTLE_TEST("Poison Point inflicts poison on contact")
if (gMovesInfo[move].makesContact) {
ABILITY_POPUP(opponent, ABILITY_POISON_POINT);
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, player);
MESSAGE("Wobbuffet was poisoned by Foe Nidoran♂'s Poison Point!");
MESSAGE("Wobbuffet was poisoned by the opposing Nidoran♂'s Poison Point!");
STATUS_ICON(player, poison: TRUE);
} else {
NONE_OF {
ABILITY_POPUP(opponent, ABILITY_POISON_POINT);
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, player);
MESSAGE("Wobbuffet was poisoned by Foe Nidoran♂'s Poison Point!");
MESSAGE("Wobbuffet was poisoned by the opposing Nidoran♂'s Poison Point!");
STATUS_ICON(player, poison: TRUE);
}
}
@ -45,7 +45,7 @@ SINGLE_BATTLE_TEST("Poison Point triggers 30% of the time")
} SCENE {
ABILITY_POPUP(opponent, ABILITY_POISON_POINT);
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, player);
MESSAGE("Wobbuffet was poisoned by Foe Nidoran♂'s Poison Point!");
MESSAGE("Wobbuffet was poisoned by the opposing Nidoran♂'s Poison Point!");
STATUS_ICON(player, poison: TRUE);
}
}

View file

@ -20,7 +20,7 @@ SINGLE_BATTLE_TEST("Poison Puppeteer confuses target if it was poisoned by a dam
STATUS_ICON(opponent, poison: TRUE);
ABILITY_POPUP(player, ABILITY_POISON_PUPPETEER);
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_CONFUSION, opponent);
MESSAGE("Foe Wobbuffet became confused!");
MESSAGE("The opposing Wobbuffet became confused!");
}
}
@ -46,7 +46,7 @@ SINGLE_BATTLE_TEST("Poison Puppeteer confuses target if it was (badly) poisoned
STATUS_ICON(opponent, badPoison: TRUE);
ABILITY_POPUP(player, ABILITY_POISON_PUPPETEER);
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_CONFUSION, opponent);
MESSAGE("Foe Wobbuffet became confused!");
MESSAGE("The opposing Wobbuffet became confused!");
}
}
@ -67,7 +67,7 @@ SINGLE_BATTLE_TEST("Poison Puppeteer does not trigger if poison is Toxic Spikes
NONE_OF {
ABILITY_POPUP(player, ABILITY_POISON_PUPPETEER);
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_CONFUSION, opponent);
MESSAGE("Foe Wobbuffet became confused!");
MESSAGE("The opposing Wobbuffet became confused!");
}
}
}

View file

@ -15,7 +15,7 @@ SINGLE_BATTLE_TEST("Poison Touch has a 30% chance to poison when attacking with
ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, player);
ABILITY_POPUP(player, ABILITY_POISON_TOUCH);
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent);
MESSAGE("Foe Wobbuffet was poisoned by Grimer's Poison Touch!");
MESSAGE("The opposing Wobbuffet was poisoned by Grimer's Poison Touch!");
STATUS_ICON(opponent, poison: TRUE);
}
}
@ -38,13 +38,13 @@ SINGLE_BATTLE_TEST("Poison Touch only applies when using contact moves")
if (gMovesInfo[move].makesContact) {
ABILITY_POPUP(player, ABILITY_POISON_TOUCH);
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent);
MESSAGE("Foe Wobbuffet was poisoned by Grimer's Poison Touch!");
MESSAGE("The opposing Wobbuffet was poisoned by Grimer's Poison Touch!");
STATUS_ICON(opponent, poison: TRUE);
} else {
NONE_OF {
ABILITY_POPUP(player, ABILITY_POISON_TOUCH);
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent);
MESSAGE("Foe Wobbuffet was poisoned by Grimer's Poison Touch!");
MESSAGE("The opposing Wobbuffet was poisoned by Grimer's Poison Touch!");
STATUS_ICON(opponent, poison: TRUE);
}
}
@ -65,13 +65,13 @@ SINGLE_BATTLE_TEST("Poison Touch applies between multi-hit move hits")
ANIMATION(ANIM_TYPE_MOVE, MOVE_ARM_THRUST, player);
ABILITY_POPUP(player, ABILITY_POISON_TOUCH);
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent);
MESSAGE("Foe Wobbuffet was poisoned by Grimer's Poison Touch!");
MESSAGE("The opposing Wobbuffet was poisoned by Grimer's Poison Touch!");
STATUS_ICON(opponent, poison: TRUE);
MESSAGE("Foe Wobbuffet's Pecha Berry cured poison!");
MESSAGE("The opposing Wobbuffet's Pecha Berry cured its poison!");
STATUS_ICON(opponent, poison: FALSE);
ABILITY_POPUP(player, ABILITY_POISON_TOUCH);
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent);
MESSAGE("Foe Wobbuffet was poisoned by Grimer's Poison Touch!");
MESSAGE("The opposing Wobbuffet was poisoned by Grimer's Poison Touch!");
STATUS_ICON(opponent, poison: TRUE);
}
}

View file

@ -77,11 +77,11 @@ DOUBLE_BATTLE_TEST("Prankster-affected moves called via Instruct do not affect D
}
} SCENE {
NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_CONFUSE_RAY, playerLeft);
MESSAGE("It doesn't affect Foe Umbreon…");
MESSAGE("It doesn't affect the opposing Umbreon…");
MESSAGE("Wobbuffet used Instruct!");
MESSAGE("Volbeat used Confuse Ray!");
NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_CONFUSE_RAY, playerLeft);
MESSAGE("It doesn't affect Foe Umbreon…");
MESSAGE("It doesn't affect the opposing Umbreon…");
}
}
@ -114,7 +114,7 @@ DOUBLE_BATTLE_TEST("Moves called via Prankster-affected After you affect Dark-ty
ANIMATION(ANIM_TYPE_MOVE, MOVE_AFTER_YOU, playerLeft);
MESSAGE("Wobbuffet used Confuse Ray!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_CONFUSE_RAY, playerRight);
MESSAGE("Foe Umbreon became confused!");
MESSAGE("The opposing Umbreon became confused!");
}
}
@ -156,10 +156,10 @@ SINGLE_BATTLE_TEST("Prankster-affected moves can still be bounced back by Dark-t
TURN { MOVE(player, MOVE_MAGIC_COAT); MOVE(opponent, MOVE_CONFUSE_RAY); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_MAGIC_COAT, player);
MESSAGE("Foe Volbeat used Confuse Ray!");
MESSAGE("Foe Volbeat's Confuse Ray was bounced back by MAGIC COAT!");
MESSAGE("The opposing Volbeat used Confuse Ray!");
MESSAGE("Umbreon bounced the Confuse Ray back!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_CONFUSE_RAY, player);
MESSAGE("Foe Volbeat became confused!");
MESSAGE("The opposing Volbeat became confused!");
}
}
@ -178,14 +178,14 @@ SINGLE_BATTLE_TEST("Prankster-affected moves which are reflected by Magic Coat c
} SCENE {
MESSAGE("Sableye used Magic Coat!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_MAGIC_COAT, player);
MESSAGE("Foe Murkrow used Confuse Ray!");
MESSAGE("Foe Murkrow's Confuse Ray was bounced back by MAGIC COAT!");
MESSAGE("The opposing Murkrow used Confuse Ray!");
MESSAGE("Sableye bounced the Confuse Ray back!");
if (sableyeAbility == ABILITY_PRANKSTER) {
NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_CONFUSE_RAY, player);
MESSAGE("It doesn't affect Foe Murkrow…");
MESSAGE("It doesn't affect the opposing Murkrow…");
} else {
ANIMATION(ANIM_TYPE_MOVE, MOVE_CONFUSE_RAY, player);
MESSAGE("Foe Murkrow became confused!");
MESSAGE("The opposing Murkrow became confused!");
}
}
}
@ -198,7 +198,7 @@ SINGLE_BATTLE_TEST("Prankster-affected moves can still be bounced back by a Dark
} WHEN {
TURN { MOVE(player, MOVE_CELEBRATE, gimmick: GIMMICK_MEGA); MOVE(opponent, MOVE_CONFUSE_RAY); }
} SCENE {
MESSAGE("Foe Volbeat's Confuse Ray was bounced back by Absol's Magic Bounce!");
MESSAGE("The opposing Volbeat's Confuse Ray was bounced back by Absol's Magic Bounce!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_CONFUSE_RAY, player);
}
}
@ -211,9 +211,9 @@ SINGLE_BATTLE_TEST("Prankster-affected moves that are bounced back by Magic Boun
} WHEN {
TURN { MOVE(player, MOVE_CELEBRATE, gimmick: GIMMICK_MEGA); MOVE(opponent, MOVE_CONFUSE_RAY); }
} SCENE {
MESSAGE("Foe Murkrow's Confuse Ray was bounced back by Absol's Magic Bounce!");
MESSAGE("The opposing Murkrow's Confuse Ray was bounced back by Absol's Magic Bounce!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_CONFUSE_RAY, player);
MESSAGE("Foe Murkrow became confused!");
MESSAGE("The opposing Murkrow became confused!");
}
}

View file

@ -16,13 +16,13 @@ SINGLE_BATTLE_TEST("Primordial Sea blocks damaging Fire-type moves")
TURN { MOVE(opponent, MOVE_EMBER); }
TURN { MOVE(opponent, MOVE_EMBER); }
} SCENE {
MESSAGE("Foe Wobbuffet used Ember!");
MESSAGE("The opposing Wobbuffet used Ember!");
NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_EMBER, opponent);
MESSAGE("The Fire-type attack fizzled out\nin the heavy rain!");
MESSAGE("The Fire-type attack fizzled out in the heavy rain!");
NOT HP_BAR(player);
MESSAGE("Foe Wobbuffet used Ember!");
MESSAGE("The opposing Wobbuffet used Ember!");
NOT ANIMATION(ANIM_TYPE_MOVE, MOVE_EMBER, opponent);
MESSAGE("The Fire-type attack fizzled out\nin the heavy rain!");
MESSAGE("The Fire-type attack fizzled out in the heavy rain!");
NOT HP_BAR(player);
} THEN {
EXPECT_EQ(player->hp, player->maxHP);
@ -42,10 +42,10 @@ DOUBLE_BATTLE_TEST("Primordial Sea blocks damaging Fire-type moves and prints th
} WHEN {
TURN { MOVE(opponentLeft, MOVE_ERUPTION); }
} SCENE {
MESSAGE("Foe Wobbuffet used Eruption!");
MESSAGE("The opposing 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!");
MESSAGE("The Fire-type attack fizzled out in the heavy rain!");
NOT MESSAGE("The Fire-type attack fizzled out in the heavy rain!");
} THEN {
EXPECT_EQ(playerLeft->hp, playerLeft->maxHP);
EXPECT_EQ(playerRight->hp, playerRight->maxHP);
@ -60,7 +60,7 @@ SINGLE_BATTLE_TEST("Primordial Sea does not block a move if pokemon is asleep an
} 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.");
NOT MESSAGE("The Fire-type attack fizzled out in the heavy rain!");
MESSAGE("The opposing Wobbuffet is fast asleep.");
}
}

View file

@ -20,15 +20,15 @@ SINGLE_BATTLE_TEST("Protean changes the type of the user only once per switch in
TURN { MOVE(opponent, MOVE_WATER_GUN); }
} SCENE {
ABILITY_POPUP(opponent, ABILITY_PROTEAN);
MESSAGE("Foe Kecleon transformed into the Water type!");
MESSAGE("The opposing Kecleon transformed into the Water type!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_WATER_GUN, opponent);
NONE_OF {
ABILITY_POPUP(opponent, ABILITY_PROTEAN);
MESSAGE("Foe Kecleon transformed into the Normal type!");
MESSAGE("The opposing Kecleon transformed into the Normal type!");
}
ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent);
ABILITY_POPUP(opponent, ABILITY_PROTEAN);
MESSAGE("Foe Kecleon transformed into the Water type!");
MESSAGE("The opposing Kecleon transformed into the Water type!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_WATER_GUN, opponent);
}
}

View file

@ -12,7 +12,7 @@ SINGLE_BATTLE_TEST("Quick Draw has a 30% chance of going first")
} SCENE {
ABILITY_POPUP(player, ABILITY_QUICK_DRAW);
MESSAGE("Slowbro used Tackle!");
MESSAGE("Foe Wobbuffet used Celebrate!");
MESSAGE("The opposing Wobbuffet used Celebrate!");
}
}
@ -26,7 +26,7 @@ SINGLE_BATTLE_TEST("Quick Draw does not activate 70% of the time")
TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_TACKLE); }
} SCENE {
NOT ABILITY_POPUP(player, ABILITY_QUICK_DRAW);
MESSAGE("Foe Wobbuffet used Celebrate!");
MESSAGE("The opposing Wobbuffet used Celebrate!");
MESSAGE("Slowbro used Tackle!");
}
}

View file

@ -32,22 +32,22 @@ SINGLE_BATTLE_TEST("Rattled boosts speed by 1 when hit by Bug, Dark or Ghost typ
if (move != MOVE_TACKLE) {
ABILITY_POPUP(opponent, ABILITY_RATTLED);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
MESSAGE("Foe Sudowoodo's Speed rose!");
MESSAGE("The opposing Sudowoodo's Speed rose!");
}
MESSAGE("Foe Sudowoodo used Celebrate!");
MESSAGE("The opposing Sudowoodo used Celebrate!");
// Sudowoodo is now faster
if (move != MOVE_TACKLE){
MESSAGE("Foe Sudowoodo used Celebrate!");
MESSAGE("The opposing Sudowoodo used Celebrate!");
ANIMATION(ANIM_TYPE_MOVE, move, player);
HP_BAR(opponent);
ABILITY_POPUP(opponent, ABILITY_RATTLED);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
MESSAGE("Foe Sudowoodo's Speed rose!");
MESSAGE("The opposing Sudowoodo's Speed rose!");
}
else {
ANIMATION(ANIM_TYPE_MOVE, move, player);
HP_BAR(opponent);
MESSAGE("Foe Sudowoodo used Celebrate!");
MESSAGE("The opposing Sudowoodo used Celebrate!");
}
}
}
@ -63,10 +63,10 @@ SINGLE_BATTLE_TEST("Rattled boosts speed by 1 when affected by Intimidate")
} SCENE {
ABILITY_POPUP(player, ABILITY_INTIMIDATE);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
MESSAGE("Gyarados's Intimidate cuts Foe Sudowoodo's attack!");
MESSAGE("Gyarados's Intimidate cuts the opposing Sudowoodo's attack!");
ABILITY_POPUP(opponent, ABILITY_RATTLED);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
MESSAGE("Foe Sudowoodo's Speed rose!");
MESSAGE("The opposing Sudowoodo's Speed rose!");
}
}
@ -87,7 +87,7 @@ SINGLE_BATTLE_TEST("Rattled triggers correctly when hit by U-Turn") // Specific
HP_BAR(opponent);
ABILITY_POPUP(opponent, ABILITY_RATTLED);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
MESSAGE("Foe Sudowoodo's Speed rose!");
MESSAGE("The opposing Sudowoodo's Speed rose!");
SEND_IN_MESSAGE("Wynaut");
}
}

View file

@ -67,14 +67,14 @@ SINGLE_BATTLE_TEST("Sap Sipper blocks multi-hit grass type moves")
} WHEN {
TURN { MOVE(opponent, MOVE_BULLET_SEED); }
} SCENE {
MESSAGE("Foe Shellder used Bullet Seed!");
MESSAGE("The opposing Shellder used Bullet Seed!");
ABILITY_POPUP(player, ABILITY_SAP_SIPPER);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player);
MESSAGE("Marill's Attack rose!");
NONE_OF {
ANIMATION(ANIM_TYPE_MOVE, MOVE_BULLET_SEED, opponent);
HP_BAR(player);
MESSAGE("Hit 5 time(s)!");
MESSAGE("The Pokémon was hit 5 time(s)!");
}
}
}

View file

@ -25,7 +25,7 @@ SINGLE_BATTLE_TEST("Schooling switches Level 20+ Wishiwashi's form when HP is 25
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player);
}
MESSAGE("Wishiwashi used Celebrate!");
MESSAGE("Foe Wobbuffet used Super Fang!");
MESSAGE("The opposing Wobbuffet used Super Fang!");
HP_BAR(player);
if (level >= 20)
{
@ -64,7 +64,7 @@ SINGLE_BATTLE_TEST("Schooling switches Level 20+ Wishiwashi's form when HP is ov
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player);
}
MESSAGE("Wishiwashi used Celebrate!");
MESSAGE("Foe Wobbuffet used Celebrate!");
MESSAGE("The opposing Wobbuffet used Celebrate!");
} THEN {
if (level >= 20 && overQuarterHP)
EXPECT_EQ(player->species, SPECIES_WISHIWASHI_SCHOOL);
@ -92,7 +92,7 @@ SINGLE_BATTLE_TEST("Schooling switches Level 20+ Wishiwashi's form when HP is he
TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_HEAL_PULSE); }
} SCENE {
MESSAGE("Wishiwashi used Celebrate!");
MESSAGE("Foe Wobbuffet used Heal Pulse!");
MESSAGE("The opposing Wobbuffet used Heal Pulse!");
HP_BAR(player);
if (level >= 20)
{

View file

@ -20,7 +20,7 @@ SINGLE_BATTLE_TEST("Scrappy prevents intimidate")
ABILITY_POPUP(player, ABILITY_INTIMIDATE);
NONE_OF { ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player); }
ABILITY_POPUP(opponent, ABILITY_SCRAPPY);
MESSAGE("Foe Kangaskhan's Scrappy prevents stat loss!");
MESSAGE("The opposing Kangaskhan's Scrappy prevents stat loss!");
HP_BAR(player, captureDamage: &turnTwoHit);
} THEN {
EXPECT_EQ(turnOneHit, turnTwoHit);
@ -61,6 +61,6 @@ SINGLE_BATTLE_TEST("Scrappy doesn't bypass a Ghost-type's Wonder Guard")
HP_BAR(opponent);
}
ABILITY_POPUP(opponent, ABILITY_WONDER_GUARD);
MESSAGE("Foe Shedinja avoided damage with Wonder Guard!");
MESSAGE("The opposing Shedinja avoided damage with Wonder Guard!");
}
}

View file

@ -9,7 +9,7 @@ SINGLE_BATTLE_TEST("Seed Sower sets up Grassy Terrain when hit by an attack")
} WHEN {
TURN { MOVE(opponent, MOVE_TACKLE); }
} SCENE {
MESSAGE("Foe Wobbuffet used Tackle!");
MESSAGE("The opposing Wobbuffet used Tackle!");
HP_BAR(player);
ABILITY_POPUP(player);
MESSAGE("Grass grew to cover the battlefield!");

View file

@ -13,7 +13,7 @@ SINGLE_BATTLE_TEST("Shed Skin triggers 30% of the time")
TURN;
} SCENE {
ABILITY_POPUP(opponent, ABILITY_SHED_SKIN);
MESSAGE("Foe Arbok's Shed Skin cured its poison problem!");
MESSAGE("The opposing Arbok's Shed Skin cured its poison problem!");
STATUS_ICON(opponent, poison: FALSE);
}
}

View file

@ -51,13 +51,13 @@ SINGLE_BATTLE_TEST("Sheer Force boosts power, but removes secondary effects of m
STATUS_ICON(opponent, STATUS1_TOXIC_POISON);
STATUS_ICON(opponent, STATUS1_PARALYSIS);
MESSAGE("Wobbuffet is confused!");
MESSAGE("Wobbuffet flinched!");
MESSAGE("Wobbuffet flinched and couldn't move!");
}
// Volt Tackle/Flare Blitz edge case: recoil happens, but target isn't statused
if (gMovesInfo[move].recoil > 0)
{
HP_BAR(player);
MESSAGE("Tauros is hit with recoil!");
MESSAGE("Tauros was damaged by the recoil!");
}
}
} FINALLY {

View file

@ -28,12 +28,12 @@ SINGLE_BATTLE_TEST("Shield Dust blocks secondary effects")
ANIMATION(ANIM_TYPE_MOVE, move, player);
HP_BAR(opponent);
NONE_OF {
MESSAGE("Foe Vivillon is paralyzed! It may be unable to move!");
MESSAGE("Foe Vivillon was burned!");
MESSAGE("Foe Vivillon was poisoned!");
MESSAGE("Foe Vivillon flinched!");
MESSAGE("The opposing Vivillon is paralyzed, so it may be unable to move!");
MESSAGE("The opposing Vivillon was burned!");
MESSAGE("The opposing Vivillon was poisoned!");
MESSAGE("The opposing Vivillon flinched and couldn't move!");
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
MESSAGE("Foe Vivillon was prevented from healing!");
MESSAGE("The opposing Vivillon was prevented from healing!");
}
} THEN { // Can't find good way to test trapping
EXPECT(!(opponent->status2 & STATUS2_ESCAPE_PREVENTION));
@ -64,16 +64,16 @@ SINGLE_BATTLE_TEST("Shield Dust does not block primary effects")
switch (move)
{
case MOVE_INFESTATION:
MESSAGE("Foe Vivillon has been afflicted with an infestation by Wobbuffet!");
MESSAGE("The opposing Vivillon has been afflicted with an infestation by Wobbuffet!");
break;
case MOVE_THOUSAND_ARROWS:
MESSAGE("Foe Vivillon fell straight down!");
MESSAGE("The opposing Vivillon fell straight down!");
break;
case MOVE_JAW_LOCK:
MESSAGE("Neither Pokémon can run away!");
break;
case MOVE_PAY_DAY:
MESSAGE("Coins scattered everywhere!");
MESSAGE("Coins were scattered everywhere!");
break;
}
} THEN { // Can't find good way to test trapping
@ -137,11 +137,11 @@ DOUBLE_BATTLE_TEST("Shield Dust does or does not block Sparkling Aria depending
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_SPARKLING_ARIA, playerLeft);
if (moveToUse == MOVE_TACKLE) {
MESSAGE("Foe Vivillon's burn was healed.");
MESSAGE("The opposing Vivillon's burn was cured!");
STATUS_ICON(opponentLeft, none: TRUE);
} else {
NONE_OF {
MESSAGE("Foe Vivillon's burn was healed.");
MESSAGE("The opposing Vivillon's burn was cured!");
STATUS_ICON(opponentLeft, none: TRUE);
}
}
@ -159,7 +159,7 @@ SINGLE_BATTLE_TEST("Shield Dust blocks Sparkling Aria in singles")
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_SPARKLING_ARIA, player);
NONE_OF {
MESSAGE("Foe Vivillon's burn was healed.");
MESSAGE("The opposing Vivillon's burn was cured!");
STATUS_ICON(opponent, none: TRUE);
}
}

View file

@ -10,11 +10,11 @@ SINGLE_BATTLE_TEST("Speed Boost gradually boosts Speed")
TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_CELEBRATE); }
TURN { MOVE(player, MOVE_CELEBRATE); MOVE(opponent, MOVE_CELEBRATE); }
} SCENE {
MESSAGE("Foe Wobbuffet used Celebrate!");
MESSAGE("The opposing Wobbuffet used Celebrate!");
MESSAGE("Torchic used Celebrate!");
ABILITY_POPUP(player, ABILITY_SPEED_BOOST);
MESSAGE("Torchic's Speed Boost raised its SPEED!");
MESSAGE("Torchic's Speed Boost raised its Speed!");
MESSAGE("Torchic used Celebrate!");
MESSAGE("Foe Wobbuffet used Celebrate!");
MESSAGE("The opposing Wobbuffet used Celebrate!");
}
}

View file

@ -43,7 +43,7 @@ DOUBLE_BATTLE_TEST("Stalwart stops Lightning Rod and Storm Drain from redirectin
NONE_OF {
ABILITY_POPUP(opponentLeft, ability);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft);
MESSAGE("Foe Raichu's Sp. Atk rose!");
MESSAGE("The opposing Raichu's Sp. Atk rose!");
}
} else {
HP_BAR(opponentRight);

View file

@ -98,8 +98,8 @@ SINGLE_BATTLE_TEST("Stamina activates for every hit of a multi hit move")
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_DOUBLE_KICK, player);
HP_BAR(opponent);
STAMINA_STAT_RAISE(opponent, "Foe Mudbray's Defense rose!");
STAMINA_STAT_RAISE(opponent, "Foe Mudbray's Defense rose!");
STAMINA_STAT_RAISE(opponent, "The opposing Mudbray's Defense rose!");
STAMINA_STAT_RAISE(opponent, "The opposing Mudbray's Defense rose!");
} THEN {
EXPECT_EQ(opponent->statStages[STAT_DEF], DEFAULT_STAT_STAGE + 2);
}
@ -114,7 +114,7 @@ SINGLE_BATTLE_TEST("Stamina is not activated by users own Substitute")
TURN { MOVE(player, MOVE_SUBSTITUTE); }
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_SUBSTITUTE, player);
MESSAGE("Mudbray made a SUBSTITUTE!");
MESSAGE("Mudbray put in a substitute!");
NONE_OF {
ABILITY_POPUP(player, ABILITY_STAMINA);
MESSAGE("Mudbray's Defense rose!");

View file

@ -17,13 +17,13 @@ SINGLE_BATTLE_TEST("Static inflicts paralysis on contact")
if (gMovesInfo[move].makesContact) {
ABILITY_POPUP(opponent, ABILITY_STATIC);
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, player);
MESSAGE("Foe Pikachu's Static paralyzed Wobbuffet! It may be unable to move!");
MESSAGE("The opposing Pikachu's Static paralyzed Wobbuffet, so it may be unable to move!");
STATUS_ICON(player, paralysis: TRUE);
} else {
NONE_OF {
ABILITY_POPUP(opponent, ABILITY_STATIC);
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, player);
MESSAGE("Foe Pikachu's Static paralyzed Wobbuffet! It may be unable to move!");
MESSAGE("The opposing Pikachu's Static paralyzed Wobbuffet, so it may be unable to move!");
STATUS_ICON(player, paralysis: TRUE);
}
}
@ -43,7 +43,7 @@ SINGLE_BATTLE_TEST("Static triggers 30% of the time")
} SCENE {
ABILITY_POPUP(opponent, ABILITY_STATIC);
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PRZ, player);
MESSAGE("Foe Pikachu's Static paralyzed Wobbuffet! It may be unable to move!");
MESSAGE("The opposing Pikachu's Static paralyzed Wobbuffet, so it may be unable to move!");
STATUS_ICON(player, paralysis: TRUE);
}
}

View file

@ -11,7 +11,7 @@ SINGLE_BATTLE_TEST("Stench has a 10% chance to flinch")
} WHEN {
TURN { MOVE(player, MOVE_TACKLE); MOVE(opponent, MOVE_CELEBRATE); }
} SCENE {
MESSAGE("Foe Wobbuffet flinched!");
MESSAGE("The opposing Wobbuffet flinched and couldn't move!");
}
}
@ -27,7 +27,7 @@ SINGLE_BATTLE_TEST("Stench does not stack with King's Rock")
} WHEN {
TURN { MOVE(player, MOVE_TACKLE); MOVE(opponent, MOVE_CELEBRATE); }
} SCENE {
MESSAGE("Foe Wobbuffet flinched!");
MESSAGE("The opposing Wobbuffet flinched and couldn't move!");
}
}
@ -51,7 +51,7 @@ DOUBLE_BATTLE_TEST("Stench only triggers if target takes damage")
MOVE(playerRight, MOVE_TACKLE, target: opponentRight);
}
} SCENE {
NONE_OF { MESSAGE("Wynaut flinched!"); }
NONE_OF { MESSAGE("Wynaut flinched and couldn't move!"); }
}
}
@ -72,9 +72,9 @@ DOUBLE_BATTLE_TEST("Stench doesn't trigger if partner uses a move")
}
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_FAKE_OUT, playerLeft);
MESSAGE("Foe Grimer flinched!");
MESSAGE("The opposing Grimer flinched and couldn't move!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponentRight);
NOT MESSAGE("Wynaut flinched!");
NOT MESSAGE("Wynaut flinched and couldn't move!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, playerRight);
}
}

View file

@ -12,7 +12,7 @@ SINGLE_BATTLE_TEST("Sticky Hold prevents item theft")
} SCENE {
MESSAGE("Ursaluna used Thief!");
ABILITY_POPUP(opponent, ABILITY_STICKY_HOLD);
MESSAGE("Foe Gastrodon's Sticky Hold made Thief ineffective!");
MESSAGE("The opposing Gastrodon's Sticky Hold made Thief ineffective!");
}
}

View file

@ -17,12 +17,12 @@ SINGLE_BATTLE_TEST("Storm Drain absorbs Water-type moves and increases the Sp. A
};
ABILITY_POPUP(opponent, ABILITY_STORM_DRAIN);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
MESSAGE("Foe Gastrodon's Sp. Atk rose!");
MESSAGE("The opposing Gastrodon's Sp. Atk rose!");
} else {
NONE_OF {
ABILITY_POPUP(opponent, ABILITY_STORM_DRAIN);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
MESSAGE("Foe Gastrodon's Sp. Atk rose!");
MESSAGE("The opposing Gastrodon's Sp. Atk rose!");
};
ANIMATION(ANIM_TYPE_MOVE, MOVE_WATER_GUN, player);
HP_BAR(opponent);
@ -54,10 +54,10 @@ DOUBLE_BATTLE_TEST("Storm Drain forces single-target Water-type moves to target
};
ABILITY_POPUP(opponentLeft, ABILITY_STORM_DRAIN);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft);
MESSAGE("Foe Gastrodon's Sp. Atk rose!");
MESSAGE("The opposing Gastrodon's Sp. Atk rose!");
ABILITY_POPUP(opponentLeft, ABILITY_STORM_DRAIN);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft);
MESSAGE("Foe Gastrodon's Sp. Atk rose!");
MESSAGE("The opposing Gastrodon's Sp. Atk rose!");
} else {
NONE_OF {
HP_BAR(opponentRight);

View file

@ -10,7 +10,7 @@ SINGLE_BATTLE_TEST("Sturdy prevents OHKO moves")
} WHEN {
TURN { MOVE(opponent, MOVE_FISSURE); }
} SCENE {
MESSAGE("Foe Wobbuffet used Fissure!");
MESSAGE("The opposing Wobbuffet used Fissure!");
ABILITY_POPUP(player, ABILITY_STURDY);
MESSAGE("Geodude was protected by Sturdy!");
} THEN {

View file

@ -12,7 +12,7 @@ SINGLE_BATTLE_TEST("Supersweet Syrup lowers evasion once per battle by one stage
TURN { SWITCH(opponent, 0); }
} SCENE {
ABILITY_POPUP(opponent, ABILITY_SUPERSWEET_SYRUP);
MESSAGE("A supersweet aroma is wafting from the syrup covering Foe Dipplin!");
MESSAGE("A supersweet aroma is wafting from the syrup covering the opposing Dipplin!");
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player);
MESSAGE("2 withdrew Dipplin!");
MESSAGE("2 withdrew Wobbuffet!");
@ -37,7 +37,7 @@ DOUBLE_BATTLE_TEST("Supersweet Syrup lowers evasion of both opposing mon's in ba
TURN { }
} SCENE {
ABILITY_POPUP(opponentLeft, ABILITY_SUPERSWEET_SYRUP);
MESSAGE("A supersweet aroma is wafting from the syrup covering Foe Dipplin!");
MESSAGE("A supersweet aroma is wafting from the syrup covering the opposing Dipplin!");
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerLeft);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, playerRight);
} THEN {
@ -66,7 +66,7 @@ SINGLE_BATTLE_TEST("Supersweet Syrup can not further lower opponents evasion if
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player);
MESSAGE("Oddish's evasiveness fell!");
}
MESSAGE("Oddish's evasiveness won't go lower!");
MESSAGE("Oddish's evasiveness won't go any lower!");
} THEN {
EXPECT_EQ(player->statStages[STAT_EVASION], MIN_STAT_STAGE);
}

View file

@ -130,6 +130,6 @@ SINGLE_BATTLE_TEST("Supreme Overlord's message displays correctly after all batt
SEND_IN_MESSAGE("Wobbuffet");
MESSAGE("2 sent out Kingambit!");
ABILITY_POPUP(opponent, ABILITY_SUPREME_OVERLORD);
MESSAGE("Foe Kingambit gained strength from the fallen!");
MESSAGE("The opposing Kingambit gained strength from the fallen!");
}
}

View file

@ -70,6 +70,6 @@ SINGLE_BATTLE_TEST("Sword of Ruin's message displays correctly after all battler
SEND_IN_MESSAGE("Wobbuffet");
MESSAGE("2 sent out Chien-Pao!");
ABILITY_POPUP(opponent, ABILITY_SWORD_OF_RUIN);
MESSAGE("Foe Chien-Pao's Sword of Ruin weakened the Defense of all surrounding Pokémon!");
MESSAGE("The opposing Chien-Pao's Sword of Ruin weakened the Defense of all surrounding Pokémon!");
}
}

View file

@ -70,6 +70,6 @@ SINGLE_BATTLE_TEST("Tablets of Ruin's message displays correctly after all battl
SEND_IN_MESSAGE("Wobbuffet");
MESSAGE("2 sent out Wo-Chien!");
ABILITY_POPUP(opponent, ABILITY_TABLETS_OF_RUIN);
MESSAGE("Foe Wo-Chien's Tablets of Ruin weakened the Attack of all surrounding Pokémon!");
MESSAGE("The opposing Wo-Chien's Tablets of Ruin weakened the Attack of all surrounding Pokémon!");
}
}

View file

@ -27,7 +27,7 @@ SINGLE_BATTLE_TEST("Tangling Hair drops opposing mon's speed if ability user got
if (move == MOVE_TACKLE) {
ABILITY_POPUP(player, ABILITY_TANGLING_HAIR);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
MESSAGE("Foe Wynaut's Speed fell!");
MESSAGE("The opposing Wynaut's Speed fell!");
}
}
}
@ -44,9 +44,9 @@ SINGLE_BATTLE_TEST("Tangling Hair does not cause Rocky Helmet miss activation")
ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent);
ABILITY_POPUP(player, ABILITY_TANGLING_HAIR);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
MESSAGE("Foe Wynaut's Speed fell!");
MESSAGE("The opposing Wynaut's Speed fell!");
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player);
MESSAGE("Foe Wynaut was hurt by Dugtrio's Rocky Helmet!");
MESSAGE("The opposing Wynaut was hurt by Dugtrio's Rocky Helmet!");
}
}
@ -61,10 +61,10 @@ SINGLE_BATTLE_TEST("Tangling Hair Speed stat drop triggers defiant and keeps ori
ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent);
ABILITY_POPUP(player, ABILITY_TANGLING_HAIR);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
MESSAGE("Foe Pawniard's Speed fell!");
MESSAGE("The opposing Pawniard's Speed fell!");
ABILITY_POPUP(opponent, ABILITY_DEFIANT);
MESSAGE("Foe Pawniard's Attack sharply rose!");
MESSAGE("The opposing Pawniard's Attack sharply rose!");
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, player);
MESSAGE("Foe Pawniard was hurt by Dugtrio's Rocky Helmet!");
MESSAGE("The opposing Pawniard was hurt by Dugtrio's Rocky Helmet!");
}
}

View file

@ -13,7 +13,7 @@ SINGLE_BATTLE_TEST("Tera Shell makes all moves against Terapagos not very effect
TURN { MOVE(opponent, MOVE_TACKLE); }
} SCENE {
if (hp == 100) {
MESSAGE("Foe Wobbuffet used Tackle!");
MESSAGE("The opposing Wobbuffet used Tackle!");
ABILITY_POPUP(player, ABILITY_TERA_SHELL);
MESSAGE("Terapagos made its shell gleam! It's distorting type matchups!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent);
@ -40,7 +40,7 @@ SINGLE_BATTLE_TEST("Tera Shell makes all hits of multi-hit moves against Terapag
} WHEN {
TURN { MOVE(opponent, MOVE_DOUBLE_HIT); }
} SCENE {
MESSAGE("Foe Wobbuffet used Double Hit!");
MESSAGE("The opposing Wobbuffet used Double Hit!");
ABILITY_POPUP(player, ABILITY_TERA_SHELL);
MESSAGE("Terapagos made its shell gleam! It's distorting type matchups!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_DOUBLE_HIT, opponent);

View file

@ -46,7 +46,7 @@ SINGLE_BATTLE_TEST("Teraform Zero can be replaced")
} WHEN {
TURN { MOVE(opponent, MOVE_WORRY_SEED); MOVE(player, MOVE_REST, gimmick: GIMMICK_TERA); }
} SCENE {
MESSAGE("Foe Whimsicott used Worry Seed!");
MESSAGE("The opposing Whimsicott used Worry Seed!");
MESSAGE("Terapagos acquired Insomnia!");
MESSAGE("Terapagos used Rest!");
ABILITY_POPUP(player, ABILITY_INSOMNIA);
@ -63,7 +63,7 @@ SINGLE_BATTLE_TEST("Teraform Zero cannot be swapped")
} WHEN {
TURN { MOVE(player, MOVE_CELEBRATE, gimmick: GIMMICK_TERA); MOVE(opponent, MOVE_SKILL_SWAP); }
} SCENE {
MESSAGE("Foe Wobbuffet used Skill Swap!");
MESSAGE("The opposing Wobbuffet used Skill Swap!");
MESSAGE("But it failed!");
}
}
@ -77,7 +77,7 @@ SINGLE_BATTLE_TEST("Teraform Zero cannot be copied")
} WHEN {
TURN { MOVE(player, MOVE_CELEBRATE, gimmick: GIMMICK_TERA); MOVE(opponent, MOVE_ROLE_PLAY); }
} SCENE {
MESSAGE("Foe Wobbuffet used Role Play!");
MESSAGE("The opposing Wobbuffet used Role Play!");
MESSAGE("But it failed!");
}
}

View file

@ -14,7 +14,7 @@ SINGLE_BATTLE_TEST("Toxic Chain inflicts bad poison when attacking")
} SCENE {
ABILITY_POPUP(player, ABILITY_TOXIC_CHAIN);
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent);
MESSAGE("Foe Wobbuffet is badly poisoned!");
MESSAGE("The opposing Wobbuffet was badly poisoned!");
STATUS_ICON(opponent, badPoison: TRUE);
} THEN {
EXPECT(opponent->status1 & STATUS1_TOXIC_POISON);
@ -35,13 +35,13 @@ SINGLE_BATTLE_TEST("Toxic Chain inflicts bad poison on any hit of a multi-hit mo
} SCENE {
ABILITY_POPUP(player, ABILITY_TOXIC_CHAIN);
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent);
MESSAGE("Foe Wobbuffet is badly poisoned!");
MESSAGE("The opposing Wobbuffet was badly poisoned!");
STATUS_ICON(opponent, badPoison: TRUE);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent);
STATUS_ICON(opponent, badPoison: FALSE);
ABILITY_POPUP(player, ABILITY_TOXIC_CHAIN);
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent);
MESSAGE("Foe Wobbuffet is badly poisoned!");
MESSAGE("The opposing Wobbuffet was badly poisoned!");
STATUS_ICON(opponent, badPoison: TRUE);
} THEN {
EXPECT(opponent->status1 & STATUS1_TOXIC_POISON);
@ -64,12 +64,12 @@ DOUBLE_BATTLE_TEST("Toxic Chain can inflict bad poison on both foes")
HP_BAR(opponentLeft);
ABILITY_POPUP(playerLeft, ABILITY_TOXIC_CHAIN);
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponentLeft);
MESSAGE("Foe Wobbuffet is badly poisoned!");
MESSAGE("The opposing Wobbuffet was badly poisoned!");
STATUS_ICON(opponentLeft, badPoison: TRUE);
HP_BAR(opponentRight);
ABILITY_POPUP(playerLeft, ABILITY_TOXIC_CHAIN);
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponentRight);
MESSAGE("Foe Wynaut is badly poisoned!");
MESSAGE("The opposing Wynaut was badly poisoned!");
STATUS_ICON(opponentRight, badPoison: TRUE);
} THEN {
EXPECT(opponentLeft->status1 & STATUS1_TOXIC_POISON);
@ -97,14 +97,14 @@ SINGLE_BATTLE_TEST("Toxic Chain makes Lum/Pecha Berry trigger before being knock
} SCENE {
ABILITY_POPUP(player, ABILITY_TOXIC_CHAIN);
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, opponent);
MESSAGE("Foe Wobbuffet is badly poisoned!");
MESSAGE("The opposing Wobbuffet was badly poisoned!");
STATUS_ICON(opponent, badPoison: TRUE);
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent);
STATUS_ICON(opponent, badPoison: FALSE);
NONE_OF {
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ITEM_KNOCKOFF);
MESSAGE("Okidogi knocked off Foe Wobbuffet's Pecha Berry!");
MESSAGE("Okidogi knocked off Foe Wobbuffet's Lum Berry!");
MESSAGE("Okidogi knocked off the opposing Wobbuffet's Pecha Berry!");
MESSAGE("Okidogi knocked off the opposing Wobbuffet's Lum Berry!");
}
} THEN {
EXPECT(opponent->status1 == 0);

View file

@ -22,11 +22,11 @@ SINGLE_BATTLE_TEST("Toxic Debris sets Toxic Spikes on the opposing side if hit b
} SCENE {
if (move == MOVE_TACKLE) {
ABILITY_POPUP(player, ABILITY_TOXIC_DEBRIS);
MESSAGE("Poison Spikes were scattered all around the opposing team's feet!");
MESSAGE("Poison spikes were scattered on the ground all around the opposing team!");
} else {
NONE_OF {
ABILITY_POPUP(player, ABILITY_TOXIC_DEBRIS);
MESSAGE("Poison Spikes were scattered all around the opposing team's feet!");
MESSAGE("Poison spikes were scattered on the ground all around the opposing team!");
}
}
}
@ -44,14 +44,14 @@ SINGLE_BATTLE_TEST("Toxic Debris does not activate if two layers of Toxic Spikes
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent);
ABILITY_POPUP(player, ABILITY_TOXIC_DEBRIS);
MESSAGE("Poison Spikes were scattered all around the opposing team's feet!");
MESSAGE("Poison spikes were scattered on the ground all around the opposing team!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent);
ABILITY_POPUP(player, ABILITY_TOXIC_DEBRIS);
MESSAGE("Poison Spikes were scattered all around the opposing team's feet!");
MESSAGE("Poison spikes were scattered on the ground all around the opposing team!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent);
NONE_OF {
ABILITY_POPUP(player, ABILITY_TOXIC_DEBRIS);
MESSAGE("Poison Spikes were scattered all around the opposing team's feet!");
MESSAGE("Poison spikes were scattered on the ground all around the opposing team!");
}
}
}
@ -69,7 +69,7 @@ SINGLE_BATTLE_TEST("If a Substitute is hit, Toxic Debris does not set Toxic Spik
ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent);
NONE_OF {
ABILITY_POPUP(player, ABILITY_TOXIC_DEBRIS);
MESSAGE("Poison Spikes were scattered all around the opposing team's feet!");
MESSAGE("Poison spikes were scattered on the ground all around the opposing team!");
}
}
}
@ -84,10 +84,10 @@ SINGLE_BATTLE_TEST("Each hit of a Multi Hit move activates Toxic Debris")
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_FURY_SWIPES, opponent);
ABILITY_POPUP(player, ABILITY_TOXIC_DEBRIS);
MESSAGE("Poison Spikes were scattered all around the opposing team's feet!");
MESSAGE("Poison spikes were scattered on the ground all around the opposing team!");
ANIMATION(ANIM_TYPE_MOVE, MOVE_FURY_SWIPES, opponent);
ABILITY_POPUP(player, ABILITY_TOXIC_DEBRIS);
MESSAGE("Poison Spikes were scattered all around the opposing team's feet!");
MESSAGE("Poison spikes were scattered on the ground all around the opposing team!");
}
}
@ -102,7 +102,7 @@ SINGLE_BATTLE_TEST("Toxic Debris activates if user faints after physical hit")
ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent);
MESSAGE("Glimmora fainted!");
ABILITY_POPUP(player, ABILITY_TOXIC_DEBRIS);
MESSAGE("Poison Spikes were scattered all around the opposing team's feet!");
MESSAGE("Poison spikes were scattered on the ground all around the opposing team!");
}
}
@ -116,7 +116,7 @@ SINGLE_BATTLE_TEST("Air Balloon is popped after Toxic Debris activates")
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_TACKLE, opponent);
ABILITY_POPUP(player, ABILITY_TOXIC_DEBRIS);
MESSAGE("Poison Spikes were scattered all around the opposing team's feet!");
MESSAGE("Poison spikes were scattered on the ground all around the opposing team!");
MESSAGE("Glimmora's Air Balloon popped!");
}
}

View file

@ -10,7 +10,7 @@ SINGLE_BATTLE_TEST("Trace copies opponents ability")
TURN { }
} SCENE {
ABILITY_POPUP(player, ABILITY_TRACE);
MESSAGE("Ralts TRACED Foe Torchic's Blaze!");
MESSAGE("It traced the opposing Torchic's Blaze!");
}
}
@ -24,7 +24,7 @@ SINGLE_BATTLE_TEST("Trace copies opponents ability on switch-in")
TURN { SWITCH(player, 1); }
} SCENE {
ABILITY_POPUP(player, ABILITY_TRACE);
MESSAGE("Ralts TRACED Foe Torchic's Blaze!");
MESSAGE("It traced the opposing Torchic's Blaze!");
}
}
@ -40,7 +40,7 @@ SINGLE_BATTLE_TEST("Trace copies opponents ability on switch-in even if opponent
} SCENE {
ANIMATION(ANIM_TYPE_MOVE, MOVE_MISTY_EXPLOSION);
ABILITY_POPUP(player, ABILITY_TRACE);
MESSAGE("Ralts TRACED Foe Torchic's Blaze!");
MESSAGE("It traced the opposing Torchic's Blaze!");
}
}
@ -61,7 +61,7 @@ DOUBLE_BATTLE_TEST("Trace copies opponents ability randomly")
TURN { }
} SCENE {
ABILITY_POPUP(playerLeft, ABILITY_TRACE);
MESSAGE("Ralts TRACED Foe Torchic's Blaze!");
MESSAGE("It traced the opposing Torchic's Blaze!");
}
}
@ -76,7 +76,7 @@ SINGLE_BATTLE_TEST("Trace will copy an opponent's ability whenever it has the ch
} SCENE {
// TURN 2
ABILITY_POPUP(player, ABILITY_TRACE);
MESSAGE("Ralts TRACED Foe Torchic's Blaze!");
MESSAGE("It traced the opposing Torchic's Blaze!");
}
}

View file

@ -70,6 +70,6 @@ SINGLE_BATTLE_TEST("Vessel of Ruin's message displays correctly after all battle
SEND_IN_MESSAGE("Wobbuffet");
MESSAGE("2 sent out Ting-Lu!");
ABILITY_POPUP(opponent, ABILITY_VESSEL_OF_RUIN);
MESSAGE("Foe Ting-Lu's Vessel of Ruin weakened the Sp. Atk of all surrounding Pokémon!");
MESSAGE("The opposing Ting-Lu's Vessel of Ruin weakened the Sp. Atk of all surrounding Pokémon!");
}
}

Some files were not shown because too many files have changed in this diff Show more