Misc style and whitespace cleanup (#8681)
This commit is contained in:
parent
d214d178f3
commit
e82ed111ba
@ -2364,26 +2364,26 @@
|
||||
.4byte \minutes
|
||||
.endm
|
||||
|
||||
@ When OW_USE_FAKE_RTC is true, adds a specified number of days to the time.
|
||||
@ When OW_USE_FAKE_RTC is true, adds a specified number of days to the time.
|
||||
.macro adddays days:req
|
||||
callnative ScrCmd_adddays, requests_effects=1
|
||||
.4byte \days
|
||||
.endm
|
||||
|
||||
@ When OW_USE_FAKE_RTC is true, adds a specified number of days, hours, and minutes to the time.
|
||||
@ When OW_USE_FAKE_RTC is true, adds a specified number of days, hours, and minutes to the time.
|
||||
.macro addhours hours:req
|
||||
callnative ScrCmd_addhours, requests_effects=1
|
||||
.4byte \hours
|
||||
.endm
|
||||
|
||||
@ When OW_USE_FAKE_RTC is true, adds a specified number of days, hours, and minutes to the time.
|
||||
@ When OW_USE_FAKE_RTC is true, adds a specified number of days, hours, and minutes to the time.
|
||||
.macro addminutes minutes:req
|
||||
callnative ScrCmd_addminutes, requests_effects=1
|
||||
.4byte \minutes
|
||||
.endm
|
||||
|
||||
@ Forwards the time to a specified hour and minute.
|
||||
@ This causes the time to go to the next day if the time has already been past.
|
||||
@ Forwards the time to a specified hour and minute.
|
||||
@ This causes the time to go to the next day if the time has already been past.
|
||||
.macro fwdtime hours:req, minutes:req
|
||||
callnative ScrCmd_fwdtime, requests_effects=1
|
||||
.4byte \hours
|
||||
|
||||
@ -399,4 +399,4 @@ gFieldEffectScript_RockClimbDust:: @ 82DBB28
|
||||
gFieldEffectScript_ORASDowse::
|
||||
field_eff_callnative FldEff_ORASDowsing
|
||||
field_eff_end
|
||||
|
||||
|
||||
|
||||
@ -616,7 +616,7 @@ struct EventStates
|
||||
u32 arenaTurn:8;
|
||||
enum BattleSide battlerSide:4;
|
||||
enum BattlerId moveEndBattler:4;
|
||||
enum FirstTurnEventsStates beforeFristTurn:8;
|
||||
enum FirstTurnEventsStates beforeFirstTurn:8;
|
||||
enum FaintedActions faintedAction:8;
|
||||
enum BattlerId faintedActionBattler:4;
|
||||
enum MoveSuccessOrder atkCanceler:8;
|
||||
|
||||
@ -370,7 +370,7 @@ static void OpponentHandleDrawTrainerPic(u32 battler)
|
||||
{
|
||||
s16 xPos;
|
||||
u32 trainerPicId;
|
||||
|
||||
|
||||
// Sets Multibattle test opponent sprites to not be Hiker
|
||||
if (IsMultibattleTest())
|
||||
{
|
||||
@ -391,7 +391,7 @@ static void OpponentHandleDrawTrainerPic(u32 battler)
|
||||
else
|
||||
{
|
||||
trainerPicId = OpponentGetTrainerPicId(battler);
|
||||
|
||||
|
||||
if (gBattleTypeFlags & (BATTLE_TYPE_MULTI | BATTLE_TYPE_TWO_OPPONENTS) && !BATTLE_TWO_VS_ONE_OPPONENT)
|
||||
{
|
||||
if ((GetBattlerPosition(battler) & BIT_FLANK) != 0) // second mon
|
||||
|
||||
@ -3735,7 +3735,7 @@ static void DoBattleIntro(void)
|
||||
case BATTLE_INTRO_STATE_SET_DEX_AND_BATTLE_VARS:
|
||||
if (!gBattleControllerExecFlags)
|
||||
{
|
||||
gBattleStruct->eventState.beforeFristTurn = 0;
|
||||
gBattleStruct->eventState.beforeFirstTurn = 0;
|
||||
gBattleStruct->switchInBattlerCounter = 0;
|
||||
Ai_InitPartyStruct(); // Save mons party counts, and first 2/4 mons on the battlefield.
|
||||
|
||||
@ -3773,7 +3773,7 @@ static void TryDoEventsBeforeFirstTurn(void)
|
||||
if (gBattleControllerExecFlags)
|
||||
return;
|
||||
|
||||
switch (gBattleStruct->eventState.beforeFristTurn)
|
||||
switch (gBattleStruct->eventState.beforeFirstTurn)
|
||||
{
|
||||
case FIRST_TURN_EVENTS_START:
|
||||
// Set invalid mons as absent(for example when starting a double battle with only one pokemon).
|
||||
@ -3823,20 +3823,20 @@ static void TryDoEventsBeforeFirstTurn(void)
|
||||
SwapTurnOrder(i, j);
|
||||
}
|
||||
}
|
||||
gBattleStruct->eventState.beforeFristTurn++;
|
||||
gBattleStruct->eventState.beforeFirstTurn++;
|
||||
break;
|
||||
case FIRST_TURN_EVENTS_OVERWORLD_WEATHER:
|
||||
gBattleStruct->eventState.beforeFristTurn++;
|
||||
gBattleStruct->eventState.beforeFirstTurn++;
|
||||
if (TryFieldEffects(FIELD_EFFECT_OVERWORLD_WEATHER))
|
||||
return;
|
||||
break;
|
||||
case FIRST_TURN_EVENTS_TERRAIN:
|
||||
gBattleStruct->eventState.beforeFristTurn++;
|
||||
gBattleStruct->eventState.beforeFirstTurn++;
|
||||
if (TryFieldEffects(FIELD_EFFECT_OVERWORLD_TERRAIN))
|
||||
return;
|
||||
break;
|
||||
case FIRST_TURN_EVENTS_STARTING_STATUS:
|
||||
gBattleStruct->eventState.beforeFristTurn++;
|
||||
gBattleStruct->eventState.beforeFirstTurn++;
|
||||
if (TryFieldEffects(FIELD_EFFECT_TRAINER_STATUSES))
|
||||
return;
|
||||
break;
|
||||
@ -3851,7 +3851,7 @@ static void TryDoEventsBeforeFirstTurn(void)
|
||||
}
|
||||
}
|
||||
memset(gQueuedStatBoosts, 0, sizeof(gQueuedStatBoosts)); // erase all totem boosts for Mirror Herb and Opportunist
|
||||
gBattleStruct->eventState.beforeFristTurn++;
|
||||
gBattleStruct->eventState.beforeFirstTurn++;
|
||||
break;
|
||||
case FIRST_TURN_EVENTS_NEUTRALIZING_GAS:
|
||||
while (gBattleStruct->switchInBattlerCounter < gBattlersCount) // From fastest to slowest
|
||||
@ -3861,7 +3861,7 @@ static void TryDoEventsBeforeFirstTurn(void)
|
||||
return;
|
||||
}
|
||||
gBattleStruct->switchInBattlerCounter = 0;
|
||||
gBattleStruct->eventState.beforeFristTurn++;
|
||||
gBattleStruct->eventState.beforeFirstTurn++;
|
||||
break;
|
||||
case FIRST_TURN_EVENTS_SWITCH_IN_ABILITIES:
|
||||
while (gBattleStruct->switchInBattlerCounter < gBattlersCount) // From fastest to slowest
|
||||
@ -3878,7 +3878,7 @@ static void TryDoEventsBeforeFirstTurn(void)
|
||||
return;
|
||||
}
|
||||
gBattleStruct->switchInBattlerCounter = 0;
|
||||
gBattleStruct->eventState.beforeFristTurn++;
|
||||
gBattleStruct->eventState.beforeFirstTurn++;
|
||||
break;
|
||||
case FIRST_TURN_EVENTS_ITEM_EFFECTS:
|
||||
while (gBattleStruct->switchInBattlerCounter < gBattlersCount) // From fastest to slowest
|
||||
@ -3888,7 +3888,7 @@ static void TryDoEventsBeforeFirstTurn(void)
|
||||
return;
|
||||
}
|
||||
gBattleStruct->switchInBattlerCounter = 0;
|
||||
gBattleStruct->eventState.beforeFristTurn++;
|
||||
gBattleStruct->eventState.beforeFirstTurn++;
|
||||
break;
|
||||
case FIRST_TURN_EVENTS_WHITE_HERB:
|
||||
while (gBattleStruct->switchInBattlerCounter < gBattlersCount) // From fastest to slowest
|
||||
@ -3898,7 +3898,7 @@ static void TryDoEventsBeforeFirstTurn(void)
|
||||
return;
|
||||
}
|
||||
gBattleStruct->switchInBattlerCounter = 0;
|
||||
gBattleStruct->eventState.beforeFristTurn++;
|
||||
gBattleStruct->eventState.beforeFirstTurn++;
|
||||
break;
|
||||
case FIRST_TURN_EVENTS_OPPORTUNIST:
|
||||
while (gBattleStruct->switchInBattlerCounter < gBattlersCount) // From fastest to slowest
|
||||
@ -3908,7 +3908,7 @@ static void TryDoEventsBeforeFirstTurn(void)
|
||||
return;
|
||||
}
|
||||
gBattleStruct->switchInBattlerCounter = 0;
|
||||
gBattleStruct->eventState.beforeFristTurn++;
|
||||
gBattleStruct->eventState.beforeFirstTurn++;
|
||||
break;
|
||||
case FIRST_TURN_EVENTS_MIRROR_HERB:
|
||||
while (gBattleStruct->switchInBattlerCounter < gBattlersCount) // From fastest to slowest
|
||||
@ -3918,10 +3918,10 @@ static void TryDoEventsBeforeFirstTurn(void)
|
||||
return;
|
||||
}
|
||||
gBattleStruct->switchInBattlerCounter = 0;
|
||||
gBattleStruct->eventState.beforeFristTurn++;
|
||||
gBattleStruct->eventState.beforeFirstTurn++;
|
||||
break;
|
||||
case FIRST_TURN_EVENTS_EJECT_PACK:
|
||||
gBattleStruct->eventState.beforeFristTurn++;
|
||||
gBattleStruct->eventState.beforeFirstTurn++;
|
||||
if (TrySwitchInEjectPack(FIRST_TURN))
|
||||
return;
|
||||
break;
|
||||
@ -3960,7 +3960,7 @@ static void TryDoEventsBeforeFirstTurn(void)
|
||||
|
||||
if ((i = ShouldDoTrainerSlide(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), TRAINER_SLIDE_BEFORE_FIRST_TURN)))
|
||||
BattleScriptExecute(i == 1 ? BattleScript_TrainerASlideMsgEnd2 : BattleScript_TrainerBSlideMsgEnd2);
|
||||
gBattleStruct->eventState.beforeFristTurn = 0;
|
||||
gBattleStruct->eventState.beforeFirstTurn = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -4702,7 +4702,7 @@ static void Cmd_getexp(void)
|
||||
if ((holdEffect == HOLD_EFFECT_EXP_SHARE || IsGen6ExpShareEnabled())
|
||||
&& (B_SPLIT_EXP < GEN_6 || gBattleStruct->battlerExpReward == 0)) // only give exp share bonus in later gens if the mon wasn't sent out
|
||||
{
|
||||
gBattleStruct->battlerExpReward += GetSoftLevelCapExpValue(gPlayerParty[*expMonId].level, gBattleStruct->expShareExpValue);;
|
||||
gBattleStruct->battlerExpReward += GetSoftLevelCapExpValue(gPlayerParty[*expMonId].level, gBattleStruct->expShareExpValue);
|
||||
}
|
||||
|
||||
ApplyExperienceMultipliers(&gBattleStruct->battlerExpReward, *expMonId, gBattlerFainted);
|
||||
|
||||
@ -2446,7 +2446,7 @@ static bool8 Mugshot_WaitPlayerSlide(struct Task *task)
|
||||
else
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -2468,7 +2468,7 @@ static bool8 Mugshot_WaitPlayerSlide(struct Task *task)
|
||||
else
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
@ -2634,7 +2634,7 @@ static void Mugshots_CreateTrainerPics(struct Task *task)
|
||||
task->tPlayerSpriteId = CreateTrainerSprite(PlayerGenderToFrontTrainerPicId(gSaveBlock2Ptr->playerGender),
|
||||
DISPLAY_WIDTH + 32,
|
||||
106,
|
||||
0, NULL);
|
||||
0, NULL);
|
||||
|
||||
opponentSpriteA = &gSprites[task->tOpponentSpriteAId];
|
||||
playerSprite = &gSprites[task->tPlayerSpriteId];
|
||||
|
||||
@ -2086,7 +2086,7 @@ static void Debug_Display_ItemInfo(u32 itemId, u32 digit, u8 windowId)
|
||||
else if (CheckIfItemIsTMHMOrEvolutionStone(itemId) == 1)
|
||||
{
|
||||
end = StringCopy(end, COMPOUND_STRING(" None"));
|
||||
}
|
||||
}
|
||||
|
||||
WrapFontIdToFit(gStringVar1, end, DEBUG_MENU_FONT, WindowWidthPx(windowId));
|
||||
StringCopyPadded(gStringVar1, gStringVar1, CHAR_SPACE, 15);
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
|
||||
.global FastUnsafeCopy32
|
||||
.type FastUnsafeCopy32, %function
|
||||
|
||||
|
||||
@ Word aligned, 32-byte copy
|
||||
@ This function WILL overwrite your buffer, so make sure it is at least 32 bytes larger than the desired size.
|
||||
FastUnsafeCopy32:
|
||||
@ -18,10 +18,10 @@ FastUnsafeCopy32:
|
||||
bgt .Lloop_32
|
||||
pop {r4-r10}
|
||||
bx lr
|
||||
|
||||
|
||||
|
||||
|
||||
@ Credit to: luckytyphlosion as it's his implementation
|
||||
|
||||
|
||||
.section .text @Copied to stack on run-time
|
||||
.align 2
|
||||
|
||||
@ -126,6 +126,6 @@ LZ77_EightBlockLoop_HandleLoop:
|
||||
LZ77_Done:
|
||||
pop {r4, r5, r6, lr}
|
||||
bx lr
|
||||
|
||||
|
||||
.global LZ77UnCompWRAMOptimized_end
|
||||
LZ77UnCompWRAMOptimized_end:
|
||||
|
||||
@ -226,7 +226,7 @@ static void TurnNPCIntoFollower(u32 localId, u32 followerFlags, u32 setScript, c
|
||||
SetFollowerNPCData(FNPC_DATA_COME_OUT_DOOR, FNPC_DOOR_NONE);
|
||||
if (FollowerNPCHasRunningFrames())
|
||||
followerFlags |= FOLLOWER_NPC_FLAG_HAS_RUNNING_FRAMES;
|
||||
|
||||
|
||||
SetFollowerNPCData(FNPC_DATA_FOLLOWER_FLAGS, followerFlags);
|
||||
|
||||
// If the player is biking and the follower flags prohibit biking, force the player to dismount the bike.
|
||||
@ -810,7 +810,7 @@ void CreateFollowerNPC(u32 gfx, u32 followerFlags, const u8 *scriptPtr)
|
||||
{
|
||||
if (PlayerHasFollowerNPC())
|
||||
return;
|
||||
|
||||
|
||||
struct ObjectEvent *player = &gObjectEvents[gPlayerAvatar.objectEventId];
|
||||
struct ObjectEvent *follower;
|
||||
struct ObjectEventTemplate npc =
|
||||
@ -827,7 +827,7 @@ void CreateFollowerNPC(u32 gfx, u32 followerFlags, const u8 *scriptPtr)
|
||||
follower = &gObjectEvents[GetFollowerNPCData(FNPC_DATA_OBJ_ID)];
|
||||
follower->movementType = MOVEMENT_TYPE_NONE;
|
||||
gSprites[follower->spriteId].callback = MovementType_None;
|
||||
|
||||
|
||||
SetFollowerNPCData(FNPC_DATA_IN_PROGRESS, TRUE);
|
||||
SetFollowerNPCData(FNPC_DATA_GFX_ID, follower->graphicsId);
|
||||
SetFollowerNPCData(FNPC_DATA_SURF_BLOB, FNPC_SURF_BLOB_NONE);
|
||||
@ -835,7 +835,7 @@ void CreateFollowerNPC(u32 gfx, u32 followerFlags, const u8 *scriptPtr)
|
||||
SetFollowerNPCScriptPointer(scriptPtr);
|
||||
if (FollowerNPCHasRunningFrames())
|
||||
followerFlags |= FOLLOWER_NPC_FLAG_HAS_RUNNING_FRAMES;
|
||||
|
||||
|
||||
SetFollowerNPCData(FNPC_DATA_FOLLOWER_FLAGS, followerFlags);
|
||||
|
||||
// If the player is biking and the follower flags prohibit biking, force the player to dismount the bike.
|
||||
@ -887,7 +887,7 @@ u32 DetermineFollowerNPCState(struct ObjectEvent *follower, u32 state, u32 direc
|
||||
// Follower won't move if player is forced back onto the same tile.
|
||||
if (GetFollowerNPCData(FNPC_DATA_FORCED_MOVEMENT) == FNPC_FORCED_STAY)
|
||||
return MOVEMENT_ACTION_NONE;
|
||||
|
||||
|
||||
GetXYCoordsPlayerMovementDest(playerMoveDirection, &playerDestX, &playerDestY);
|
||||
newPlayerMB = MapGridGetMetatileBehaviorAt(playerDestX, playerDestY);
|
||||
|
||||
@ -1863,7 +1863,7 @@ void ScriptHideNPCFollower(struct ScriptContext *ctx)
|
||||
{
|
||||
if (!FNPC_ENABLE_NPC_FOLLOWERS || !PlayerHasFollowerNPC())
|
||||
return;
|
||||
|
||||
|
||||
u32 walkSpeed = ScriptReadByte(ctx);
|
||||
struct ObjectEvent *npc = &gObjectEvents[GetFollowerNPCObjectId()];
|
||||
|
||||
@ -1893,7 +1893,7 @@ void ScriptChangeFollowerNPCBattlePartner(struct ScriptContext *ctx)
|
||||
{
|
||||
if (!FNPC_ENABLE_NPC_FOLLOWERS || !PlayerHasFollowerNPC())
|
||||
return;
|
||||
|
||||
|
||||
u32 newBattlePartner = ScriptReadHalfword(ctx);
|
||||
|
||||
SetFollowerNPCData(FNPC_DATA_BATTLE_PARTNER, newBattlePartner);
|
||||
|
||||
@ -713,7 +713,7 @@ static void Task_FossilFallAndSink(u8 taskId)
|
||||
FieldEffectFreePaletteIfUnused(gSprites[sFallingFossil->spriteId].oam.paletteNum);
|
||||
gSprites[sFallingFossil->spriteId].inUse = TRUE;
|
||||
DestroySprite(&gSprites[sFallingFossil->spriteId]);
|
||||
FREE_AND_SET_NULL(sFallingFossil->disintegrateRand);;
|
||||
FREE_AND_SET_NULL(sFallingFossil->disintegrateRand);
|
||||
FREE_AND_SET_NULL(sFallingFossil->frameImage);
|
||||
FREE_AND_SET_NULL(sFallingFossil->frameImageTiles);
|
||||
FREE_AND_SET_NULL(sFallingFossil);
|
||||
|
||||
@ -531,7 +531,7 @@ void UpdateDowsingAnimDirection(struct Sprite *sprite, struct ObjectEvent *playe
|
||||
anim += 16;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
// Don't completely restart anim if wiggling didn't stop.
|
||||
if (sprite->sPrevDowseState != ORASD_WIGGLE_NONE && sprite->sDowseState != ORASD_WIGGLE_NONE)
|
||||
SetAndStartSpriteAnim(sprite, anim, sprite->animCmdIndex);
|
||||
|
||||
@ -1945,7 +1945,7 @@ static void FrontFlip_2(struct Sprite *sprite)
|
||||
{
|
||||
TryFlipX(sprite);
|
||||
sprite->x2++;
|
||||
sprite->y2--;;
|
||||
sprite->y2--;
|
||||
|
||||
if (sprite->x2 >= 0)
|
||||
{
|
||||
|
||||
@ -2027,7 +2027,7 @@ void TryUpdateRelearnType(enum IncrDecrUpdateValues delta)
|
||||
return;
|
||||
}
|
||||
zeroCounter++;
|
||||
|
||||
|
||||
} while (zeroCounter <= MOVE_RELEARNER_COUNT && !hasRelearnableMoves);
|
||||
}
|
||||
|
||||
|
||||
@ -372,7 +372,7 @@ bool8 CheckForTrainersWantingBattle(void)
|
||||
|
||||
// Adds trainers wanting to battle to array
|
||||
for (i = 0; i < OBJECT_EVENTS_COUNT; i++)
|
||||
{
|
||||
{
|
||||
if (!gObjectEvents[i].active)
|
||||
continue;
|
||||
if (gObjectEvents[i].trainerType != TRAINER_TYPE_NORMAL && gObjectEvents[i].trainerType != TRAINER_TYPE_SEE_ALL_DIRECTIONS && gObjectEvents[i].trainerType != TRAINER_TYPE_BURIED)
|
||||
|
||||
@ -6,10 +6,10 @@ SINGLE_BATTLE_TEST("Aftermath damages the attacker by 1/4th of its max HP if fai
|
||||
s16 aftermathDamage;
|
||||
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_VOLTORB) { HP(1); Ability(ABILITY_AFTERMATH); };
|
||||
PLAYER(SPECIES_VOLTORB) { HP(1); Ability(ABILITY_AFTERMATH); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN {MOVE(opponent, MOVE_SCRATCH);}
|
||||
TURN { MOVE(opponent, MOVE_SCRATCH); }
|
||||
} SCENE {
|
||||
MESSAGE("The opposing Wobbuffet used Scratch!");
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, opponent);
|
||||
@ -24,10 +24,10 @@ SINGLE_BATTLE_TEST("Aftermath damages the attacker by 1/4th of its max HP if fai
|
||||
SINGLE_BATTLE_TEST("Aftermath ability pop-up will be displayed correctly: player point of view")
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_SHROOMISH) { Ability(ABILITY_POISON_HEAL); };
|
||||
OPPONENT(SPECIES_VOLTORB) { HP(1); Ability(ABILITY_AFTERMATH); };
|
||||
PLAYER(SPECIES_SHROOMISH) { Ability(ABILITY_POISON_HEAL); }
|
||||
OPPONENT(SPECIES_VOLTORB) { HP(1); Ability(ABILITY_AFTERMATH); }
|
||||
} WHEN {
|
||||
TURN {MOVE(player, MOVE_HEADBUTT);}
|
||||
TURN { MOVE(player, MOVE_HEADBUTT); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_HEADBUTT, player);
|
||||
MESSAGE("The opposing Voltorb fainted!");
|
||||
@ -38,10 +38,10 @@ SINGLE_BATTLE_TEST("Aftermath ability pop-up will be displayed correctly: player
|
||||
SINGLE_BATTLE_TEST("Aftermath ability pop-up will be displayed correctly: opponent point of view")
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_VOLTORB) { HP(1); Ability(ABILITY_AFTERMATH); };
|
||||
OPPONENT(SPECIES_SHROOMISH) { Ability(ABILITY_POISON_HEAL); };
|
||||
PLAYER(SPECIES_VOLTORB) { HP(1); Ability(ABILITY_AFTERMATH); }
|
||||
OPPONENT(SPECIES_SHROOMISH) { Ability(ABILITY_POISON_HEAL); }
|
||||
} WHEN {
|
||||
TURN {MOVE(opponent, MOVE_HEADBUTT);}
|
||||
TURN { MOVE(opponent, MOVE_HEADBUTT); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_HEADBUTT, opponent);
|
||||
MESSAGE("Voltorb fainted!");
|
||||
|
||||
@ -10,7 +10,7 @@ SINGLE_BATTLE_TEST("Anticipation causes notifies if an opponent has a super-effe
|
||||
PLAYER(SPECIES_EEVEE) { Ability(ABILITY_ANTICIPATION); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_CLOSE_COMBAT, MOVE_SCRATCH, MOVE_POUND, MOVE_CELEBRATE); }
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ABILITY_POPUP(player, ABILITY_ANTICIPATION);
|
||||
}
|
||||
@ -22,7 +22,7 @@ SINGLE_BATTLE_TEST("Anticipation does not trigger even when a move is super effe
|
||||
PLAYER(SPECIES_WHISCASH) { Ability(ABILITY_ANTICIPATION); }
|
||||
OPPONENT(SPECIES_PIKACHU) { Moves(MOVE_CELEBRATE, MOVE_THUNDERBOLT); }
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
NOT ABILITY_POPUP(player, ABILITY_ANTICIPATION);
|
||||
}
|
||||
@ -35,7 +35,7 @@ SINGLE_BATTLE_TEST("Anticipation causes notifies if an opponent has a One-hit KO
|
||||
PLAYER(SPECIES_EEVEE) { Ability(ABILITY_ANTICIPATION); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_FISSURE, MOVE_SCRATCH, MOVE_POUND, MOVE_CELEBRATE); }
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ABILITY_POPUP(player, ABILITY_ANTICIPATION);
|
||||
}
|
||||
@ -48,7 +48,7 @@ SINGLE_BATTLE_TEST("Anticipation treats Self-Destruct and Explosion like all oth
|
||||
PLAYER(SPECIES_EEVEE) { Ability(ABILITY_ANTICIPATION); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_EXPLOSION, MOVE_SCRATCH, MOVE_POUND, MOVE_CELEBRATE); }
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
NOT ABILITY_POPUP(player, ABILITY_ANTICIPATION);
|
||||
}
|
||||
@ -63,7 +63,7 @@ SINGLE_BATTLE_TEST("Anticipation doesn't consider Normalize into their effective
|
||||
PLAYER(SPECIES_EEVEE) { Ability(ABILITY_ANTICIPATION); }
|
||||
OPPONENT(SPECIES_DELCATTY) { Ability(ABILITY_NORMALIZE); Moves(MOVE_CLOSE_COMBAT, MOVE_SCRATCH, MOVE_POUND, MOVE_CELEBRATE); }
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ABILITY_POPUP(player, ABILITY_ANTICIPATION);
|
||||
}
|
||||
@ -78,7 +78,7 @@ SINGLE_BATTLE_TEST("Anticipation doesn't consider Scrappy into their effectivene
|
||||
PLAYER(SPECIES_DOUBLADE) { Ability(ABILITY_ANTICIPATION); }
|
||||
OPPONENT(SPECIES_KANGASKHAN) { Ability(ABILITY_SCRAPPY); Moves(MOVE_CLOSE_COMBAT, MOVE_CELEBRATE); }
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
NOT ABILITY_POPUP(player, ABILITY_ANTICIPATION);
|
||||
}
|
||||
@ -197,7 +197,7 @@ SINGLE_BATTLE_TEST("Anticipation treats dynamic move types as their base type (N
|
||||
PLAYER(SPECIES_EEVEE) { Ability(ABILITY_ANTICIPATION); }
|
||||
OPPONENT(SPECIES_ARCEUS) { Item(ITEM_FIST_PLATE); Moves(MOVE_JUDGMENT, MOVE_SCRATCH, MOVE_POUND, MOVE_CELEBRATE); }
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
NOT ABILITY_POPUP(player, ABILITY_ANTICIPATION);
|
||||
}
|
||||
@ -230,7 +230,7 @@ SINGLE_BATTLE_TEST("Anticipation treats dynamic move types as their base type (N
|
||||
PLAYER(SPECIES_EEVEE) { Ability(ABILITY_ANTICIPATION); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_LEPPA_BERRY); Moves(MOVE_NATURAL_GIFT, MOVE_SCRATCH, MOVE_POUND, MOVE_CELEBRATE); }
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
NOT ABILITY_POPUP(player, ABILITY_ANTICIPATION);
|
||||
}
|
||||
@ -245,7 +245,7 @@ SINGLE_BATTLE_TEST("Anticipation treats dynamic move types as their base type (N
|
||||
PLAYER(SPECIES_FERROTHORN) { Ability(ABILITY_ANTICIPATION); }
|
||||
OPPONENT(SPECIES_GENESECT) { Item(ITEM_BURN_DRIVE); Moves(MOVE_TECHNO_BLAST, MOVE_SCRATCH, MOVE_POUND, MOVE_CELEBRATE); }
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
NOT ABILITY_POPUP(player, ABILITY_ANTICIPATION);
|
||||
}
|
||||
@ -261,7 +261,7 @@ SINGLE_BATTLE_TEST("Anticipation treats dynamic move types as their base type (N
|
||||
PLAYER(SPECIES_FERROTHORN) { Ability(ABILITY_ANTICIPATION); }
|
||||
OPPONENT(SPECIES_ORICORIO_BAILE) { Moves(MOVE_REVELATION_DANCE, MOVE_SCRATCH, MOVE_POUND, MOVE_CELEBRATE); }
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
NOT ABILITY_POPUP(player, ABILITY_ANTICIPATION);
|
||||
}
|
||||
@ -276,7 +276,7 @@ SINGLE_BATTLE_TEST("Anticipation treats dynamic move types as their base type (N
|
||||
PLAYER(SPECIES_EEVEE) { Ability(ABILITY_ANTICIPATION); }
|
||||
OPPONENT(SPECIES_SILVALLY) { Item(ITEM_FIGHTING_MEMORY); Moves(MOVE_MULTI_ATTACK, MOVE_SCRATCH, MOVE_POUND, MOVE_CELEBRATE); }
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
NOT ABILITY_POPUP(player, ABILITY_ANTICIPATION);
|
||||
}
|
||||
@ -308,7 +308,7 @@ SINGLE_BATTLE_TEST("Anticipation does not consider ate-abilities")
|
||||
PLAYER(SPECIES_WORMADAM_PLANT) { Ability(ABILITY_ANTICIPATION); }
|
||||
OPPONENT(SPECIES_AURORUS) { Ability(ABILITY_REFRIGERATE); Moves(MOVE_GROWL, MOVE_SCRATCH, MOVE_POUND, MOVE_CELEBRATE); }
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
NOT ABILITY_POPUP(player, ABILITY_ANTICIPATION);
|
||||
}
|
||||
@ -343,7 +343,7 @@ SINGLE_BATTLE_TEST("Anticipation considers Inverse Battle types")
|
||||
PLAYER(SPECIES_FERROTHORN) { Ability(ABILITY_ANTICIPATION); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_GROWL, MOVE_SCRATCH, MOVE_POUND, MOVE_CELEBRATE); }
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ABILITY_POPUP(player, ABILITY_ANTICIPATION);
|
||||
}
|
||||
|
||||
@ -159,7 +159,7 @@ DOUBLE_BATTLE_TEST("Aroma Veil does not protect the Pokémon's side from Impriso
|
||||
ASSUME(GetMoveEffect(MOVE_IMPRISON) == EFFECT_IMPRISON);
|
||||
PLAYER(SPECIES_AROMATISSE) { Ability(ABILITY_AROMA_VEIL); }
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET) {Moves(MOVE_IMPRISON, MOVE_CELEBRATE); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_IMPRISON, MOVE_CELEBRATE); }
|
||||
OPPONENT(SPECIES_WYNAUT);
|
||||
} WHEN {
|
||||
TURN { MOVE(opponentLeft, MOVE_IMPRISON); MOVE(playerLeft, MOVE_CELEBRATE); MOVE(playerRight, MOVE_CELEBRATE); MOVE(opponentRight, MOVE_SPLASH); }
|
||||
|
||||
@ -9,9 +9,9 @@ SINGLE_BATTLE_TEST("Bad Dreams causes the sleeping enemy Pokemon to lose 1/8 of
|
||||
PARAMETRIZE { status = STATUS1_SLEEP; }
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_DARKRAI);
|
||||
OPPONENT(SPECIES_WOBBUFFET) {Status1(status);}
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Status1(status); }
|
||||
} WHEN {
|
||||
TURN {;}
|
||||
TURN {}
|
||||
} SCENE {
|
||||
if (status == STATUS1_SLEEP) {
|
||||
ABILITY_POPUP(player, ABILITY_BAD_DREAMS);
|
||||
@ -41,7 +41,7 @@ SINGLE_BATTLE_TEST("Bad Dreams causes Pokémon with Comatose to lose 1/8 of HP")
|
||||
PLAYER(SPECIES_DARKRAI);
|
||||
OPPONENT(SPECIES_KOMALA) { Ability(ABILITY_COMATOSE); }
|
||||
} WHEN {
|
||||
TURN {;}
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ABILITY_POPUP(player, ABILITY_BAD_DREAMS);
|
||||
MESSAGE("The opposing Komala is tormented!");
|
||||
@ -55,11 +55,11 @@ DOUBLE_BATTLE_TEST("Bad Dreams does not activate if only the partner Pokemon is
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_DARKRAI);
|
||||
PLAYER(SPECIES_WOBBUFFET) {Status1(STATUS1_SLEEP);}
|
||||
PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_SLEEP); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN {;}
|
||||
TURN {}
|
||||
} SCENE {
|
||||
NONE_OF {
|
||||
ABILITY_POPUP(playerLeft, ABILITY_BAD_DREAMS);
|
||||
@ -76,12 +76,12 @@ DOUBLE_BATTLE_TEST("Bad Dreams does not activate if only the partner Pokemon is
|
||||
DOUBLE_BATTLE_TEST("Bad Dreams activates for both sleeping Pokémon on the player side")
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WOBBUFFET) {Status1(STATUS1_SLEEP);}
|
||||
PLAYER(SPECIES_WOBBUFFET) {Status1(STATUS1_SLEEP);}
|
||||
PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_SLEEP); }
|
||||
PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_SLEEP); }
|
||||
OPPONENT(SPECIES_DARKRAI);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN {;}
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ABILITY_POPUP(opponentLeft, ABILITY_BAD_DREAMS);
|
||||
MESSAGE("Wobbuffet is tormented!");
|
||||
@ -99,14 +99,14 @@ DOUBLE_BATTLE_TEST("Bad Dreams activates for both sleeping Pokémon on the playe
|
||||
DOUBLE_BATTLE_TEST("Bad Dreams faints both sleeping Pokemon on player side")
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WOBBUFFET) {Status1(STATUS1_SLEEP); HP(1);}
|
||||
PLAYER(SPECIES_WOBBUFFET) {Status1(STATUS1_SLEEP); HP(1);}
|
||||
PLAYER(SPECIES_WOBBUFFET) {Status1(STATUS1_SLEEP);}
|
||||
PLAYER(SPECIES_WOBBUFFET) {Status1(STATUS1_SLEEP);}
|
||||
PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_SLEEP); HP(1); }
|
||||
PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_SLEEP); HP(1); }
|
||||
PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_SLEEP); }
|
||||
PLAYER(SPECIES_WOBBUFFET) { Status1(STATUS1_SLEEP); }
|
||||
OPPONENT(SPECIES_DARKRAI);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN {SEND_OUT(playerLeft, 2); SEND_OUT(playerRight, 3);}
|
||||
TURN { SEND_OUT(playerLeft, 2); SEND_OUT(playerRight, 3); }
|
||||
} SCENE {
|
||||
ABILITY_POPUP(opponentLeft, ABILITY_BAD_DREAMS);
|
||||
MESSAGE("Wobbuffet is tormented!");
|
||||
@ -123,12 +123,12 @@ DOUBLE_BATTLE_TEST("Bad Dreams faints both sleeping Pokemon on opponent side")
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_DARKRAI);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET) {Status1(STATUS1_SLEEP); HP(1);}
|
||||
OPPONENT(SPECIES_WOBBUFFET) {Status1(STATUS1_SLEEP); HP(1);}
|
||||
OPPONENT(SPECIES_WOBBUFFET) {Status1(STATUS1_SLEEP);}
|
||||
OPPONENT(SPECIES_WOBBUFFET) {Status1(STATUS1_SLEEP);}
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Status1(STATUS1_SLEEP); HP(1); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Status1(STATUS1_SLEEP); HP(1); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Status1(STATUS1_SLEEP); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Status1(STATUS1_SLEEP); }
|
||||
} WHEN {
|
||||
TURN {SEND_OUT(opponentLeft, 2); SEND_OUT(opponentRight, 3);}
|
||||
TURN { SEND_OUT(opponentLeft, 2); SEND_OUT(opponentRight, 3); }
|
||||
} SCENE {
|
||||
ABILITY_POPUP(playerLeft, ABILITY_BAD_DREAMS);
|
||||
MESSAGE("The opposing Wobbuffet is tormented!");
|
||||
|
||||
@ -15,7 +15,7 @@ WILD_BATTLE_TEST("Ball Fetch causes the Pokémon to pick up the last failed Ball
|
||||
PLAYER(SPECIES_YAMPER) { Ability(ABILITY_BALL_FETCH); }
|
||||
OPPONENT(SPECIES_METAGROSS);
|
||||
} WHEN {
|
||||
TURN { USE_ITEM(player, item, WITH_RNG(RNG_BALLTHROW_SHAKE, MAX_u16) );}
|
||||
TURN { USE_ITEM(player, item, WITH_RNG(RNG_BALLTHROW_SHAKE, MAX_u16)); }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
if (item != ITEM_X_ACCURACY)
|
||||
@ -51,8 +51,7 @@ WILD_BATTLE_TEST("Ball Fetch doesn't trigger if the Pokémon is already holding
|
||||
}
|
||||
else
|
||||
{
|
||||
NONE_OF
|
||||
{
|
||||
NONE_OF {
|
||||
ABILITY_POPUP(player, ABILITY_BALL_FETCH);
|
||||
MESSAGE("Yamper found a Great Ball!");
|
||||
}
|
||||
@ -74,7 +73,7 @@ WILD_BATTLE_TEST("Ball Fetch only picks up the first failed ball, once per battl
|
||||
PARAMETRIZE { item = ITEM_GREAT_BALL; item2 = ITEM_ULTRA_BALL; }
|
||||
PARAMETRIZE { item = ITEM_GREAT_BALL; item2 = ITEM_FAST_BALL; }
|
||||
PARAMETRIZE { item = ITEM_GREAT_BALL; item2 = ITEM_STRANGE_BALL; }
|
||||
|
||||
|
||||
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_YAMPER) { Ability(ABILITY_BALL_FETCH); }
|
||||
|
||||
@ -11,10 +11,10 @@ SINGLE_BATTLE_TEST("Battle Bond transforms player's Greninja - Singles")
|
||||
{
|
||||
u32 monsCountPlayer, monsCountOpponent;
|
||||
|
||||
PARAMETRIZE {monsCountPlayer = 1; monsCountOpponent = 1; }
|
||||
PARAMETRIZE {monsCountPlayer = 1; monsCountOpponent = 2; }
|
||||
PARAMETRIZE {monsCountPlayer = 2; monsCountOpponent = 1; }
|
||||
PARAMETRIZE {monsCountPlayer = 2; monsCountOpponent = 2; }
|
||||
PARAMETRIZE { monsCountPlayer = 1; monsCountOpponent = 1; }
|
||||
PARAMETRIZE { monsCountPlayer = 1; monsCountOpponent = 2; }
|
||||
PARAMETRIZE { monsCountPlayer = 2; monsCountOpponent = 1; }
|
||||
PARAMETRIZE { monsCountPlayer = 2; monsCountOpponent = 2; }
|
||||
|
||||
GIVEN {
|
||||
WITH_CONFIG(CONFIG_BATTLE_BOND, GEN_8);
|
||||
@ -59,10 +59,10 @@ SINGLE_BATTLE_TEST("Battle Bond transforms opponent's Greninja - Singles")
|
||||
{
|
||||
u32 monsCountPlayer, monsCountOpponent;
|
||||
|
||||
PARAMETRIZE {monsCountPlayer = 1; monsCountOpponent = 1; }
|
||||
PARAMETRIZE {monsCountPlayer = 1; monsCountOpponent = 2; }
|
||||
PARAMETRIZE {monsCountPlayer = 2; monsCountOpponent = 1; }
|
||||
PARAMETRIZE {monsCountPlayer = 2; monsCountOpponent = 2; }
|
||||
PARAMETRIZE { monsCountPlayer = 1; monsCountOpponent = 1; }
|
||||
PARAMETRIZE { monsCountPlayer = 1; monsCountOpponent = 2; }
|
||||
PARAMETRIZE { monsCountPlayer = 2; monsCountOpponent = 1; }
|
||||
PARAMETRIZE { monsCountPlayer = 2; monsCountOpponent = 2; }
|
||||
|
||||
GIVEN {
|
||||
WITH_CONFIG(CONFIG_BATTLE_BOND, GEN_8);
|
||||
@ -70,7 +70,7 @@ SINGLE_BATTLE_TEST("Battle Bond transforms opponent's Greninja - Singles")
|
||||
if (monsCountOpponent == 2) {
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
}
|
||||
PLAYER(SPECIES_WOBBUFFET) {HP(1); }
|
||||
PLAYER(SPECIES_WOBBUFFET) { HP(1); }
|
||||
if (monsCountPlayer == 2) {
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
}
|
||||
@ -107,10 +107,10 @@ DOUBLE_BATTLE_TEST("Battle Bond transforms player's Greninja when fainting its A
|
||||
{
|
||||
u32 monsCountPlayer, monsCountOpponent;
|
||||
|
||||
PARAMETRIZE {monsCountPlayer = 2; monsCountOpponent = 2; }
|
||||
PARAMETRIZE {monsCountPlayer = 2; monsCountOpponent = 3; }
|
||||
PARAMETRIZE {monsCountPlayer = 3; monsCountOpponent = 2; }
|
||||
PARAMETRIZE {monsCountPlayer = 3; monsCountOpponent = 3; }
|
||||
PARAMETRIZE { monsCountPlayer = 2; monsCountOpponent = 2; }
|
||||
PARAMETRIZE { monsCountPlayer = 2; monsCountOpponent = 3; }
|
||||
PARAMETRIZE { monsCountPlayer = 3; monsCountOpponent = 2; }
|
||||
PARAMETRIZE { monsCountPlayer = 3; monsCountOpponent = 3; }
|
||||
|
||||
GIVEN {
|
||||
WITH_CONFIG(CONFIG_BATTLE_BOND, GEN_8);
|
||||
|
||||
@ -35,7 +35,7 @@ SINGLE_BATTLE_TEST("Beads of Ruin's message displays correctly after all battler
|
||||
{
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_EXPLOSION) == EFFECT_EXPLOSION);
|
||||
PLAYER(SPECIES_WOBBUFFET) { HP(1);}
|
||||
PLAYER(SPECIES_WOBBUFFET) { HP(1); }
|
||||
PLAYER(SPECIES_CHI_YU);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
@ -59,7 +59,7 @@ SINGLE_BATTLE_TEST("Beads of Ruin's message displays correctly after all battler
|
||||
ASSUME(GetMoveEffect(MOVE_EXPLOSION) == EFFECT_EXPLOSION);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET) { HP(1);}
|
||||
OPPONENT(SPECIES_WOBBUFFET) { HP(1); }
|
||||
OPPONENT(SPECIES_CHI_YU);
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_EXPLOSION); SEND_OUT(player, 1); SEND_OUT(opponent, 1); }
|
||||
|
||||
@ -12,9 +12,9 @@ SINGLE_BATTLE_TEST("Clear Body, Full Metal Body, and White Smoke prevent intimid
|
||||
PARAMETRIZE{ species = SPECIES_SOLGALEO; ability = ABILITY_FULL_METAL_BODY; }
|
||||
PARAMETRIZE{ species = SPECIES_TORKOAL; ability = ABILITY_WHITE_SMOKE; }
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_EKANS) { Ability(ABILITY_SHED_SKIN); };
|
||||
PLAYER(SPECIES_EKANS) { Ability(ABILITY_INTIMIDATE); };
|
||||
OPPONENT(species) { Ability(ability); };
|
||||
PLAYER(SPECIES_EKANS) { Ability(ABILITY_SHED_SKIN); }
|
||||
PLAYER(SPECIES_EKANS) { Ability(ABILITY_INTIMIDATE); }
|
||||
OPPONENT(species) { Ability(ability); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_SCRATCH); }
|
||||
TURN { SWITCH(player, 1); MOVE(opponent, MOVE_SCRATCH); }
|
||||
@ -220,7 +220,7 @@ SINGLE_BATTLE_TEST("Clear Body, Full Metal Body, and White Smoke don't prevent S
|
||||
PLAYER(SPECIES_WOBBUFFET) { Speed(4); }
|
||||
OPPONENT(species) { Speed(6); Ability(ability); Item(heldItem); }
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
NOT ABILITY_POPUP(opponent, ability);
|
||||
if (heldItem == ITEM_IRON_BALL) {
|
||||
@ -393,9 +393,9 @@ SINGLE_BATTLE_TEST("Clear Body, Full Metal Body, and White Smoke don't prevent S
|
||||
PLAYER(SPECIES_WOBBUFFET) { Speed(4); }
|
||||
OPPONENT(species) { Speed(5); Ability(ability); }
|
||||
} WHEN {
|
||||
TURN{ MOVE(opponent, MOVE_AGILITY); }
|
||||
TURN{ MOVE(player, MOVE_SPECTRAL_THIEF); }
|
||||
TURN{ }
|
||||
TURN { MOVE(opponent, MOVE_AGILITY); }
|
||||
TURN { MOVE(player, MOVE_SPECTRAL_THIEF); }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
if (ability == ABILITY_FULL_METAL_BODY)
|
||||
MESSAGE("The opposing Solgaleo used Agility!");
|
||||
|
||||
@ -90,8 +90,8 @@ SINGLE_BATTLE_TEST("Color Change changes the type when a Pokemon is hit by Futur
|
||||
OPPONENT(SPECIES_KECLEON) { Ability(ABILITY_COLOR_CHANGE); }
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_FUTURE_SIGHT); }
|
||||
TURN { }
|
||||
TURN { }
|
||||
TURN {}
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_FUTURE_SIGHT, player);
|
||||
MESSAGE("The opposing Kecleon took the Future Sight attack!");
|
||||
@ -107,8 +107,8 @@ SINGLE_BATTLE_TEST("Color Change changes the type when a Pokemon is hit by Doom
|
||||
OPPONENT(SPECIES_KECLEON) { Ability(ABILITY_COLOR_CHANGE); }
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_DOOM_DESIRE); }
|
||||
TURN { }
|
||||
TURN { }
|
||||
TURN {}
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_DOOM_DESIRE, player);
|
||||
MESSAGE("The opposing Kecleon took the Doom Desire attack!");
|
||||
@ -124,7 +124,7 @@ SINGLE_BATTLE_TEST("Color Change changes the type to Electric when a Pokemon is
|
||||
OPPONENT(SPECIES_KECLEON) { Ability(ABILITY_COLOR_CHANGE); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_FUTURE_SIGHT); }
|
||||
TURN { }
|
||||
TURN {}
|
||||
TURN { MOVE(opponent, MOVE_ELECTRIFY); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_FUTURE_SIGHT, player);
|
||||
@ -142,7 +142,7 @@ SINGLE_BATTLE_TEST("Color Change changes the type to Normal when a Pokemon is hi
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_FUTURE_SIGHT); }
|
||||
TURN { MOVE(player, MOVE_SOAK); }
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_FUTURE_SIGHT, player);
|
||||
MESSAGE("Wobbuffet used Soak!");
|
||||
@ -162,7 +162,7 @@ SINGLE_BATTLE_TEST("Color Change does not change the type to Normal when a Pokem
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_SOAK); }
|
||||
TURN { MOVE(player, MOVE_STRUGGLE); }
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_SOAK, player);
|
||||
MESSAGE("The opposing Kecleon transformed into the Water type!");
|
||||
|
||||
@ -64,7 +64,7 @@ DOUBLE_BATTLE_TEST("Commander Tatsugiri will still take residual damage from a f
|
||||
OPPONENT(SPECIES_TYRANITAR) { Ability(ABILITY_SAND_STREAM); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ABILITY_POPUP(playerLeft, ABILITY_COMMANDER);
|
||||
MESSAGE("Tatsugiri was swallowed by Dondozo and became Dondozo's commander!");
|
||||
@ -83,7 +83,7 @@ DOUBLE_BATTLE_TEST("Commander Tatsugiri will still take poison damage if while i
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ABILITY_POPUP(playerLeft, ABILITY_COMMANDER);
|
||||
MESSAGE("Tatsugiri was swallowed by Dondozo and became Dondozo's commander!");
|
||||
@ -176,7 +176,7 @@ DOUBLE_BATTLE_TEST("Commander Tatsugiri is not damaged by a double target move i
|
||||
{
|
||||
GIVEN {
|
||||
ASSUME(GetMoveTarget(MOVE_SURF) == MOVE_TARGET_FOES_AND_ALLY);
|
||||
PLAYER(SPECIES_DONDOZO) { HP(1); };
|
||||
PLAYER(SPECIES_DONDOZO) { HP(1); }
|
||||
PLAYER(SPECIES_TATSUGIRI) { Ability(ABILITY_COMMANDER); }
|
||||
PLAYER(SPECIES_WYNAUT);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
@ -244,7 +244,7 @@ DOUBLE_BATTLE_TEST("Commander doesn't prevent Imposter from working on a Command
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_DITTO) { Ability(ABILITY_IMPOSTER); }
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
TURN { SWITCH(opponentLeft, 2); }
|
||||
} SCENE {
|
||||
ABILITY_POPUP(playerRight, ABILITY_COMMANDER);
|
||||
|
||||
@ -174,7 +174,7 @@ SINGLE_BATTLE_TEST("Competitive correctly activates after Sticky Web lowers Spee
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_STICKY_WEB); MOVE(opponent, MOVE_COURT_CHANGE); }
|
||||
TURN { SWITCH(player, 1); }
|
||||
TURN { MOVE(opponent, MOVE_GROWL);}
|
||||
TURN { MOVE(opponent, MOVE_GROWL); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_STICKY_WEB, player);
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_COURT_CHANGE, opponent);
|
||||
|
||||
@ -246,7 +246,7 @@ AI_SINGLE_BATTLE_TEST("AI sees Contrary-effected moves correctly in MoveEffectIn
|
||||
{
|
||||
GIVEN{
|
||||
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_SMART_SWITCHING | AI_FLAG_SMART_MON_CHOICES | AI_FLAG_OMNISCIENT);
|
||||
PLAYER(SPECIES_HERACROSS){
|
||||
PLAYER(SPECIES_HERACROSS) {
|
||||
Level(44);
|
||||
HP(1);
|
||||
Speed(5);
|
||||
@ -254,7 +254,7 @@ AI_SINGLE_BATTLE_TEST("AI sees Contrary-effected moves correctly in MoveEffectIn
|
||||
Item(ITEM_LOADED_DICE);
|
||||
Moves(MOVE_PIN_MISSILE);
|
||||
}
|
||||
OPPONENT(SPECIES_SERPERIOR){
|
||||
OPPONENT(SPECIES_SERPERIOR) {
|
||||
Level(44);
|
||||
Speed(10);
|
||||
Nature(NATURE_TIMID);
|
||||
@ -262,7 +262,7 @@ AI_SINGLE_BATTLE_TEST("AI sees Contrary-effected moves correctly in MoveEffectIn
|
||||
Moves(MOVE_DRAGON_PULSE, MOVE_SPIN_OUT, MOVE_HIDDEN_POWER, MOVE_GLARE);
|
||||
}
|
||||
} WHEN {
|
||||
TURN{
|
||||
TURN {
|
||||
MOVE(player, MOVE_PIN_MISSILE);
|
||||
EXPECT_MOVE(opponent, MOVE_SPIN_OUT); // previously all 107, now sees speed can rise w/ Contrary
|
||||
}
|
||||
|
||||
@ -100,7 +100,7 @@ SINGLE_BATTLE_TEST("If a Poison- or Steel-type Pokémon with Corrosion holds a T
|
||||
PLAYER(SPECIES_SALANDIT) { Ability(ABILITY_CORROSION); Item(ITEM_TOXIC_ORB); }
|
||||
OPPONENT(SPECIES_ODDISH);
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_PSN, player);
|
||||
STATUS_ICON(player, badPoison: TRUE);
|
||||
|
||||
@ -10,7 +10,7 @@ SINGLE_BATTLE_TEST("Cud Chew will activate Kee Berry effect again on the next tu
|
||||
OPPONENT(SPECIES_TAUROS_PALDEA_COMBAT) { Ability(ABILITY_CUD_CHEW); Item(ITEM_KEE_BERRY); }
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_SCRATCH); }
|
||||
TURN { MOVE(player, MOVE_CELEBRATE);}
|
||||
TURN { MOVE(player, MOVE_CELEBRATE); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_SCRATCH, player);
|
||||
HP_BAR(opponent);
|
||||
@ -34,7 +34,7 @@ SINGLE_BATTLE_TEST("Cud Chew will activate Oran Berry effect again on the next t
|
||||
OPPONENT(SPECIES_TAUROS_PALDEA_COMBAT) { MaxHP(60); HP(60); Ability(ABILITY_CUD_CHEW); Item(ITEM_ORAN_BERRY); }
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_DRAGON_RAGE); }
|
||||
TURN { MOVE(player, MOVE_CELEBRATE);}
|
||||
TURN { MOVE(player, MOVE_CELEBRATE); }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_DRAGON_RAGE, player);
|
||||
|
||||
@ -7,7 +7,7 @@ SINGLE_BATTLE_TEST("Dauntless Shield raises Defense by one stage")
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_ZAMAZENTA) { Ability(ABILITY_DAUNTLESS_SHIELD); }
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ABILITY_POPUP(opponent, ABILITY_DAUNTLESS_SHIELD);
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
|
||||
|
||||
@ -13,7 +13,7 @@ SINGLE_BATTLE_TEST("Defeatist halves Attack when HP <= 50%", s16 damage)
|
||||
PARAMETRIZE { hp = 400; }
|
||||
PARAMETRIZE { hp = 200; }
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_ARCHEN) { Ability(ABILITY_DEFEATIST); HP(hp), MaxHP(400);}
|
||||
PLAYER(SPECIES_ARCHEN) { Ability(ABILITY_DEFEATIST); HP(hp), MaxHP(400); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_SCRATCH); MOVE(opponent, MOVE_CELEBRATE); }
|
||||
@ -32,7 +32,7 @@ SINGLE_BATTLE_TEST("Defeatist halves Special Attack when HP <= 50%", s16 damage)
|
||||
PARAMETRIZE { hp = 400; }
|
||||
PARAMETRIZE { hp = 200; }
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_ARCHEN) { Ability(ABILITY_DEFEATIST); HP(hp), MaxHP(400);}
|
||||
PLAYER(SPECIES_ARCHEN) { Ability(ABILITY_DEFEATIST); HP(hp), MaxHP(400); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_ECHOED_VOICE); MOVE(opponent, MOVE_CELEBRATE); }
|
||||
|
||||
@ -151,7 +151,7 @@ SINGLE_BATTLE_TEST("Defiant doesn't activate after Sticky Web lowers Speed if Co
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_STICKY_WEB); MOVE(opponent, MOVE_COURT_CHANGE); }
|
||||
TURN { SWITCH(player, 1); MOVE(opponent, MOVE_GROWL);}
|
||||
TURN { SWITCH(player, 1); MOVE(opponent, MOVE_GROWL); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_STICKY_WEB, player);
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_COURT_CHANGE, opponent);
|
||||
@ -188,7 +188,7 @@ SINGLE_BATTLE_TEST("Defiant activates after Sticky Web lowers Speed if Court Cha
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_STICKY_WEB); MOVE(opponent, MOVE_COURT_CHANGE); }
|
||||
TURN { SWITCH(player, 1); MOVE(opponent, MOVE_GROWL);}
|
||||
TURN { SWITCH(player, 1); MOVE(opponent, MOVE_GROWL); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_STICKY_WEB, player);
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_COURT_CHANGE, opponent);
|
||||
|
||||
@ -10,7 +10,7 @@ ASSUMPTIONS
|
||||
SINGLE_BATTLE_TEST("Desolate Land blocks damaging Water-type moves")
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_GROUDON) {Item(ITEM_RED_ORB);}
|
||||
PLAYER(SPECIES_GROUDON) { Item(ITEM_RED_ORB); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_WATER_GUN); }
|
||||
@ -35,10 +35,10 @@ DOUBLE_BATTLE_TEST("Desolate Land blocks damaging Water-type moves and prints th
|
||||
ASSUME(!IsBattleMoveStatus(MOVE_SURF));
|
||||
ASSUME(GetMoveType(MOVE_SURF) == TYPE_WATER);
|
||||
ASSUME(GetMoveTarget(MOVE_SURF) == MOVE_TARGET_FOES_AND_ALLY);
|
||||
PLAYER(SPECIES_GROUDON) {Item(ITEM_RED_ORB); {Speed(5);}}
|
||||
PLAYER(SPECIES_WOBBUFFET) {Speed(5);}
|
||||
OPPONENT(SPECIES_WOBBUFFET) {Speed(10);}
|
||||
OPPONENT(SPECIES_WOBBUFFET) {Speed(8);}
|
||||
PLAYER(SPECIES_GROUDON) { Item(ITEM_RED_ORB); Speed(5); }
|
||||
PLAYER(SPECIES_WOBBUFFET) { Speed(5); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Speed(10); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Speed(8); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponentLeft, MOVE_SURF); }
|
||||
} SCENE {
|
||||
@ -56,8 +56,8 @@ DOUBLE_BATTLE_TEST("Desolate Land blocks damaging Water-type moves and prints th
|
||||
SINGLE_BATTLE_TEST("Desolate Land does not block a move if Pokémon is asleep and uses a Water-type move") // Sleep/confusion/paralysis all happen before the check for primal weather
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_GROUDON) {Item(ITEM_RED_ORB);}
|
||||
OPPONENT(SPECIES_WOBBUFFET) {Status1(STATUS1_SLEEP);}
|
||||
PLAYER(SPECIES_GROUDON) { Item(ITEM_RED_ORB); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Status1(STATUS1_SLEEP); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_WATER_GUN); }
|
||||
} SCENE {
|
||||
|
||||
@ -52,7 +52,7 @@ SINGLE_BATTLE_TEST("Disguised Mimikyu takes no damage from a confusion hit and c
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_CONFUSE_RAY); }
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_CONFUSE_RAY, opponent);
|
||||
ANIMATION(ANIM_TYPE_STATUS, B_ANIM_STATUS_CONFUSION, player);
|
||||
|
||||
@ -6,8 +6,8 @@ SINGLE_BATTLE_TEST("Electromorphosis sets up Charge when hit by any move")
|
||||
s16 dmgBefore, dmgAfter;
|
||||
u16 move;
|
||||
|
||||
PARAMETRIZE {move = MOVE_SCRATCH; }
|
||||
PARAMETRIZE {move = MOVE_GUST; }
|
||||
PARAMETRIZE { move = MOVE_SCRATCH; }
|
||||
PARAMETRIZE { move = MOVE_GUST; }
|
||||
|
||||
GIVEN {
|
||||
ASSUME(!IsBattleMoveStatus(MOVE_SCRATCH));
|
||||
@ -18,7 +18,7 @@ SINGLE_BATTLE_TEST("Electromorphosis sets up Charge when hit by any move")
|
||||
ASSUME(GetMoveType(MOVE_THUNDER_SHOCK) == TYPE_ELECTRIC);
|
||||
|
||||
PLAYER(SPECIES_BELLIBOLT) { Ability(ABILITY_ELECTROMORPHOSIS); Speed(10); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) {Ability(ABILITY_LIMBER); Speed(5) ;} // Limber, so it doesn't get paralyzed.
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Ability(ABILITY_LIMBER); Speed(5); } // Limber, so it doesn't get paralyzed.
|
||||
}
|
||||
WHEN {
|
||||
TURN { MOVE(player, MOVE_THUNDER_SHOCK), MOVE(opponent, move); }
|
||||
|
||||
@ -16,7 +16,7 @@ SINGLE_BATTLE_TEST("Embody Aspect raises a stat depending on the users form by o
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(species) { Ability(ability); }
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ABILITY_POPUP(opponent, ability);
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
|
||||
|
||||
@ -5,7 +5,7 @@ SINGLE_BATTLE_TEST("Emergency Exit switches out when taking 50% max-hp damage")
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_GOLISOPOD) { Ability(ABILITY_EMERGENCY_EXIT); MaxHP(263); HP(262); };
|
||||
OPPONENT(SPECIES_GOLISOPOD) { Ability(ABILITY_EMERGENCY_EXIT); MaxHP(263); HP(262); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_SUPER_FANG); SEND_OUT(opponent, 1); }
|
||||
@ -20,7 +20,7 @@ SINGLE_BATTLE_TEST("Emergency Exit does not switch out when going below 50% max-
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WOBBUFFET)
|
||||
OPPONENT(SPECIES_GOLISOPOD) { Ability(ABILITY_EMERGENCY_EXIT); MaxHP(263); HP(262); Item(ITEM_SITRUS_BERRY); };
|
||||
OPPONENT(SPECIES_GOLISOPOD) { Ability(ABILITY_EMERGENCY_EXIT); MaxHP(263); HP(262); Item(ITEM_SITRUS_BERRY); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_SUPER_FANG); }
|
||||
@ -36,7 +36,7 @@ SINGLE_BATTLE_TEST("Emergency Exit switches out when going below 50% max-HP but
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WOBBUFFET)
|
||||
OPPONENT(SPECIES_GOLISOPOD) { Ability(ABILITY_EMERGENCY_EXIT); MaxHP(263); HP(133); Item(ITEM_ORAN_BERRY); };
|
||||
OPPONENT(SPECIES_GOLISOPOD) { Ability(ABILITY_EMERGENCY_EXIT); MaxHP(263); HP(133); Item(ITEM_ORAN_BERRY); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_SUPER_FANG); SEND_OUT(opponent, 1); }
|
||||
@ -53,8 +53,8 @@ DOUBLE_BATTLE_TEST("Only the fastest Wimp Out (Emergency Exit) user switches out
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_ZAPDOS) { Speed(10); }
|
||||
PLAYER(SPECIES_WOBBUFFET) { Speed(10); }
|
||||
OPPONENT(SPECIES_WIMPOD) { Speed(1); Ability(ABILITY_WIMP_OUT); Item(ITEM_FOCUS_SASH); };
|
||||
OPPONENT(SPECIES_WIMPOD) { Speed(2); Ability(ABILITY_WIMP_OUT); Item(ITEM_FOCUS_SASH); };
|
||||
OPPONENT(SPECIES_WIMPOD) { Speed(1); Ability(ABILITY_WIMP_OUT); Item(ITEM_FOCUS_SASH); }
|
||||
OPPONENT(SPECIES_WIMPOD) { Speed(2); Ability(ABILITY_WIMP_OUT); Item(ITEM_FOCUS_SASH); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Speed(10); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Speed(10); }
|
||||
} WHEN {
|
||||
@ -71,7 +71,7 @@ SINGLE_BATTLE_TEST("Emergency Exit activates when taking residual damage and fal
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_GOLISOPOD) { Ability(ABILITY_EMERGENCY_EXIT); MaxHP(263); HP(134); Status1(STATUS1_BURN); };
|
||||
OPPONENT(SPECIES_GOLISOPOD) { Ability(ABILITY_EMERGENCY_EXIT); MaxHP(263); HP(134); Status1(STATUS1_BURN); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { SEND_OUT(opponent, 1); }
|
||||
@ -87,7 +87,7 @@ SINGLE_BATTLE_TEST("Emergency Exit activates when healing from under 50% max-hp
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_AQUA_RING) == EFFECT_AQUA_RING);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_GOLISOPOD) { Ability(ABILITY_EMERGENCY_EXIT); MaxHP(263); HP(130); Status1(STATUS1_BURN); };
|
||||
OPPONENT(SPECIES_GOLISOPOD) { Ability(ABILITY_EMERGENCY_EXIT); MaxHP(263); HP(130); Status1(STATUS1_BURN); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_AQUA_RING); SEND_OUT(opponent, 1); }
|
||||
@ -102,7 +102,7 @@ SINGLE_BATTLE_TEST("Emergency Exit activates when taking residual damage and fal
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_GOLISOPOD) { Ability(ABILITY_EMERGENCY_EXIT); MaxHP(263); HP(134); };
|
||||
OPPONENT(SPECIES_GOLISOPOD) { Ability(ABILITY_EMERGENCY_EXIT); MaxHP(263); HP(134); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_SANDSTORM); SEND_OUT(opponent, 1); }
|
||||
@ -119,7 +119,7 @@ SINGLE_BATTLE_TEST("Emergency Exit activates when healing from under 50% max-hp
|
||||
ASSUME(GetMoveEffect(MOVE_AQUA_RING) == EFFECT_AQUA_RING);
|
||||
ASSUME(GetItemHoldEffect(ITEM_STICKY_BARB) == HOLD_EFFECT_STICKY_BARB);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_GOLISOPOD) { Ability(ABILITY_EMERGENCY_EXIT); MaxHP(263); HP(130); Item(ITEM_STICKY_BARB); };
|
||||
OPPONENT(SPECIES_GOLISOPOD) { Ability(ABILITY_EMERGENCY_EXIT); MaxHP(263); HP(130); Item(ITEM_STICKY_BARB); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_AQUA_RING); SEND_OUT(opponent, 1); }
|
||||
@ -134,7 +134,7 @@ SINGLE_BATTLE_TEST("Emergency Exit activates when taking residual damage and fal
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_GOLISOPOD) { Ability(ABILITY_EMERGENCY_EXIT); MaxHP(263); HP(160); };
|
||||
OPPONENT(SPECIES_GOLISOPOD) { Ability(ABILITY_EMERGENCY_EXIT); MaxHP(263); HP(160); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_SALT_CURE); SEND_OUT(opponent, 1); }
|
||||
@ -149,9 +149,9 @@ WILD_BATTLE_TEST("Emergency Exit makes the pokemon flee during wild battle")
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
PLAYER(SPECIES_WYNAUT);
|
||||
OPPONENT(SPECIES_GOLISOPOD) { Ability(ABILITY_EMERGENCY_EXIT); MaxHP(263); HP(262); };
|
||||
OPPONENT(SPECIES_GOLISOPOD) { Ability(ABILITY_EMERGENCY_EXIT); MaxHP(263); HP(262); }
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_SUPER_FANG);}
|
||||
TURN { MOVE(player, MOVE_SUPER_FANG); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_SUPER_FANG, player);
|
||||
HP_BAR(opponent);
|
||||
@ -166,9 +166,9 @@ WILD_BATTLE_TEST("Emergency Exit activates when taking residual damage and falli
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
PLAYER(SPECIES_WYNAUT);
|
||||
OPPONENT(SPECIES_GOLISOPOD) { Ability(ABILITY_EMERGENCY_EXIT); MaxHP(263); HP(134); Status1(STATUS1_BURN); };
|
||||
OPPONENT(SPECIES_GOLISOPOD) { Ability(ABILITY_EMERGENCY_EXIT); MaxHP(263); HP(134); Status1(STATUS1_BURN); }
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
HP_BAR(opponent);
|
||||
ABILITY_POPUP(opponent, ABILITY_EMERGENCY_EXIT);
|
||||
@ -180,11 +180,11 @@ WILD_BATTLE_TEST("Emergency Exit activates when taking residual damage and falli
|
||||
WILD_BATTLE_TEST("Emergency Exit makes the player ran during wild battle")
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_GOLISOPOD) { Ability(ABILITY_EMERGENCY_EXIT); MaxHP(263); HP(262); };
|
||||
PLAYER(SPECIES_GOLISOPOD) { Ability(ABILITY_EMERGENCY_EXIT); MaxHP(263); HP(262); }
|
||||
PLAYER(SPECIES_WYNAUT);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_SUPER_FANG);}
|
||||
TURN { MOVE(opponent, MOVE_SUPER_FANG); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_SUPER_FANG, opponent);
|
||||
HP_BAR(player);
|
||||
@ -197,11 +197,11 @@ WILD_BATTLE_TEST("Emergency Exit makes the player ran during wild battle")
|
||||
WILD_BATTLE_TEST("Emergency Exit activates when taking residual damage and falling under 50% max-hp (wild battle player side)")
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_GOLISOPOD) { Ability(ABILITY_EMERGENCY_EXIT); MaxHP(263); HP(134); };
|
||||
PLAYER(SPECIES_GOLISOPOD) { Ability(ABILITY_EMERGENCY_EXIT); MaxHP(263); HP(134); }
|
||||
PLAYER(SPECIES_WYNAUT);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_SANDSTORM);}
|
||||
TURN { MOVE(opponent, MOVE_SANDSTORM); }
|
||||
} SCENE {
|
||||
HP_BAR(player);
|
||||
ABILITY_POPUP(player, ABILITY_EMERGENCY_EXIT);
|
||||
|
||||
@ -4,12 +4,12 @@
|
||||
DOUBLE_BATTLE_TEST("Frisk does not trigger when Pokémon hold no items")
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_FURRET) { Ability(ABILITY_FRISK); };
|
||||
PLAYER(SPECIES_FURRET) { Ability(ABILITY_FRISK); };
|
||||
OPPONENT(SPECIES_SENTRET) { Ability(ABILITY_FRISK); };
|
||||
OPPONENT(SPECIES_SENTRET) { Ability(ABILITY_FRISK); };
|
||||
PLAYER(SPECIES_FURRET) { Ability(ABILITY_FRISK); }
|
||||
PLAYER(SPECIES_FURRET) { Ability(ABILITY_FRISK); }
|
||||
OPPONENT(SPECIES_SENTRET) { Ability(ABILITY_FRISK); }
|
||||
OPPONENT(SPECIES_SENTRET) { Ability(ABILITY_FRISK); }
|
||||
} WHEN {
|
||||
TURN { ; }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
NONE_OF {
|
||||
ABILITY_POPUP(playerLeft, ABILITY_FRISK);
|
||||
@ -23,10 +23,10 @@ DOUBLE_BATTLE_TEST("Frisk does not trigger when Pokémon hold no items")
|
||||
SINGLE_BATTLE_TEST("Frisk triggers in a Single Battle")
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_FURRET) { Ability(ABILITY_FRISK); Item(ITEM_POTION); };
|
||||
OPPONENT(SPECIES_SENTRET) { Ability(ABILITY_FRISK); Item(ITEM_POTION); };
|
||||
PLAYER(SPECIES_FURRET) { Ability(ABILITY_FRISK); Item(ITEM_POTION); }
|
||||
OPPONENT(SPECIES_SENTRET) { Ability(ABILITY_FRISK); Item(ITEM_POTION); }
|
||||
} WHEN {
|
||||
TURN { ; }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ABILITY_POPUP(player, ABILITY_FRISK);
|
||||
MESSAGE("Furret frisked the opposing Sentret and found its Potion!");
|
||||
@ -45,7 +45,7 @@ DOUBLE_BATTLE_TEST("Frisk triggers for player in a Double Battle after switching
|
||||
ASSUME(!IsBattleMoveStatus(MOVE_POUND));
|
||||
PLAYER(SPECIES_WOBBUFFET) { HP(1); }
|
||||
PLAYER(SPECIES_WOBBUFFET) { HP(1); }
|
||||
PLAYER(SPECIES_FURRET) { Ability(ABILITY_FRISK); };
|
||||
PLAYER(SPECIES_FURRET) { Ability(ABILITY_FRISK); }
|
||||
OPPONENT(SPECIES_WYNAUT) { Item(ITEM_POTION); }
|
||||
OPPONENT(SPECIES_WYNAUT);
|
||||
} WHEN {
|
||||
@ -70,7 +70,7 @@ DOUBLE_BATTLE_TEST("Frisk triggers for opponent in a Double Battle after switchi
|
||||
PLAYER(SPECIES_WYNAUT);
|
||||
OPPONENT(SPECIES_WOBBUFFET) { HP(1); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { HP(1); }
|
||||
OPPONENT(SPECIES_FURRET) { Ability(ABILITY_FRISK); };
|
||||
OPPONENT(SPECIES_FURRET) { Ability(ABILITY_FRISK); }
|
||||
} WHEN {
|
||||
TURN { MOVE(playerLeft, MOVE_POUND, target: target); SEND_OUT(target, 2); }
|
||||
} SCENE {
|
||||
|
||||
@ -11,8 +11,8 @@ SINGLE_BATTLE_TEST("Gale Wings only grants priority at full HP (Gen 7+)")
|
||||
GIVEN {
|
||||
WITH_CONFIG(CONFIG_GALE_WINGS, config);
|
||||
ASSUME(GetMoveType(MOVE_AERIAL_ACE) == TYPE_FLYING);
|
||||
PLAYER(SPECIES_TALONFLAME) { Ability(ABILITY_GALE_WINGS); HP(hp); MaxHP(100); Speed(1);}
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Speed(100);};
|
||||
PLAYER(SPECIES_TALONFLAME) { Ability(ABILITY_GALE_WINGS); HP(hp); MaxHP(100); Speed(1); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Speed(100); }
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_AERIAL_ACE); }
|
||||
} SCENE {
|
||||
@ -35,8 +35,8 @@ SINGLE_BATTLE_TEST("Gale Wings only grants priority to Flying-type moves")
|
||||
GIVEN {
|
||||
ASSUME(GetMoveType(MOVE_AERIAL_ACE) == TYPE_FLYING);
|
||||
ASSUME(GetMoveType(MOVE_FLARE_BLITZ) == TYPE_FIRE);
|
||||
PLAYER(SPECIES_TALONFLAME) { Ability(ABILITY_GALE_WINGS); HP(100); MaxHP(100); Speed(1);}
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Speed(100);};
|
||||
PLAYER(SPECIES_TALONFLAME) { Ability(ABILITY_GALE_WINGS); HP(100); MaxHP(100); Speed(1); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Speed(100); }
|
||||
} WHEN {
|
||||
TURN { MOVE(player, move); }
|
||||
} SCENE {
|
||||
@ -68,7 +68,7 @@ SINGLE_BATTLE_TEST("Gale Wings doesn't increase priority of Flying-type Natural
|
||||
ASSUME(gItemsInfo[ITEM_SKY_PLATE].secondaryId == TYPE_FLYING);
|
||||
ASSUME(gNaturalGiftTable[ITEM_TO_BERRY(ITEM_LUM_BERRY)].type == TYPE_FLYING);
|
||||
OPPONENT(SPECIES_TALONFLAME) { Ability(ABILITY_GALE_WINGS); Speed(1); Item(heldItem); HPIV(31); AttackIV(3); DefenseIV(31); SpAttackIV(30); SpDefenseIV(30); SpeedIV(30); TeraType(TYPE_FLYING); }
|
||||
PLAYER(SPECIES_WOBBUFFET) { Speed(100); };
|
||||
PLAYER(SPECIES_WOBBUFFET) { Speed(100); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, move); }
|
||||
} SCENE {
|
||||
|
||||
@ -15,7 +15,7 @@ DOUBLE_BATTLE_TEST("Grim Neigh raises Sp. Attack by one stage after directly cau
|
||||
OPPONENT(SPECIES_ABRA) { HP(1); }
|
||||
OPPONENT(SPECIES_ABRA);
|
||||
} WHEN {
|
||||
TURN { MOVE(playerLeft, MOVE_DISCHARGE); SEND_OUT(opponentLeft, 2); }
|
||||
TURN { MOVE(playerLeft, MOVE_DISCHARGE); SEND_OUT(opponentLeft, 2); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_DISCHARGE, playerLeft);
|
||||
MESSAGE("The opposing Glalie fainted!");
|
||||
@ -45,7 +45,7 @@ DOUBLE_BATTLE_TEST("Grim Neigh does not trigger if Pokemon faint to indirect dam
|
||||
OPPONENT(SPECIES_ABRA) { HP(1); }
|
||||
OPPONENT(SPECIES_ABRA);
|
||||
} WHEN {
|
||||
TURN { MOVE(playerRight, MOVE_QUICK_ATTACK, target: opponentRight); SEND_OUT(opponentLeft, 2); }
|
||||
TURN { MOVE(playerRight, MOVE_QUICK_ATTACK, target: opponentRight); SEND_OUT(opponentLeft, 2); }
|
||||
} SCENE {
|
||||
int i;
|
||||
|
||||
|
||||
@ -18,7 +18,7 @@ DOUBLE_BATTLE_TEST("Healer cures adjacent ally's status condition 30% of the tim
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Status1(status); }
|
||||
OPPONENT(SPECIES_CHANSEY) { Ability(ABILITY_HEALER); }
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
MESSAGE("The opposing Chansey's Healer cured the opposing Wobbuffet's problem!");
|
||||
}
|
||||
|
||||
@ -14,7 +14,7 @@ DOUBLE_BATTLE_TEST("Hospitality user restores 25% of ally's health")
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
if (health == 75) {
|
||||
ABILITY_POPUP(playerLeft, ABILITY_HOSPITALITY);
|
||||
@ -72,8 +72,8 @@ DOUBLE_BATTLE_TEST("Hospitality ignores Substitute")
|
||||
DOUBLE_BATTLE_TEST("Hospitality does not trigger if there is no ally on the field")
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WOBBUFFET) { HP(1); }
|
||||
PLAYER(SPECIES_WOBBUFFET) { HP(1); }
|
||||
PLAYER(SPECIES_WOBBUFFET) { HP(1); }
|
||||
PLAYER(SPECIES_WOBBUFFET) { HP(1); }
|
||||
PLAYER(SPECIES_POLTCHAGEIST) { Ability(ABILITY_HOSPITALITY); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
|
||||
@ -42,7 +42,7 @@ SINGLE_BATTLE_TEST("Hunger Switch does not switch Morpeko's form when Terastalli
|
||||
PLAYER(SPECIES_MORPEKO) { Ability(ABILITY_HUNGER_SWITCH); TeraType(TYPE_NORMAL); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
TURN { MOVE(player, MOVE_SCRATCH, gimmick: GIMMICK_TERA); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player);
|
||||
@ -59,7 +59,7 @@ SINGLE_BATTLE_TEST("Hunger Switch does not switch Morpeko's form after switching
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
TURN { MOVE(player, MOVE_SCRATCH, gimmick: GIMMICK_TERA); MOVE(opponent, MOVE_ROAR); }
|
||||
TURN { SWITCH(player, 0); }
|
||||
} SCENE {
|
||||
|
||||
@ -13,7 +13,7 @@ SINGLE_BATTLE_TEST("Illusion can only imitate Normal Form terapagos")
|
||||
// Switch to Terapagos which enters Terastal Form
|
||||
TURN { SWITCH(player, 1); }
|
||||
// Switch back to Zoroark, should not be Terastal Terapagos
|
||||
TURN { SWITCH(player, 0); MOVE(opponent, MOVE_SCRATCH);}
|
||||
TURN { SWITCH(player, 0); MOVE(opponent, MOVE_SCRATCH); }
|
||||
// Switch back to Terapagos
|
||||
TURN { SWITCH(player, 1); }
|
||||
// Terapagos Stellar, Zoroark gets Roared in, should not be Stellar Terapagos
|
||||
@ -77,7 +77,7 @@ SINGLE_BATTLE_TEST("Illusion breaks in Neutralizing Gas")
|
||||
PLAYER(SPECIES_WYNAUT);
|
||||
OPPONENT(SPECIES_WEEZING) { Ability(ABILITY_NEUTRALIZING_GAS); }
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ABILITY_POPUP(opponent, ABILITY_NEUTRALIZING_GAS);
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ILLUSION_OFF, player);
|
||||
@ -117,12 +117,12 @@ SINGLE_BATTLE_TEST("Illusion breaks if user loses Illusion due to Worry Seed")
|
||||
SINGLE_BATTLE_TEST("Illusion breaks when attacked behind a substitute")
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_DRAGAPULT) {Ability(ABILITY_INFILTRATOR); Speed(1);};
|
||||
OPPONENT(SPECIES_WOBBUFFET) {Speed(2);};
|
||||
OPPONENT(SPECIES_ZOROARK) {Speed(2);};
|
||||
OPPONENT(SPECIES_WYNAUT) {Speed(2);};
|
||||
PLAYER(SPECIES_DRAGAPULT) { Ability(ABILITY_INFILTRATOR); Speed(1); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Speed(2); }
|
||||
OPPONENT(SPECIES_ZOROARK) { Speed(2); }
|
||||
OPPONENT(SPECIES_WYNAUT) { Speed(2); }
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_TACKLE); MOVE(opponent, MOVE_SHED_TAIL); SEND_OUT(opponent, 1);}
|
||||
TURN { MOVE(player, MOVE_TACKLE); MOVE(opponent, MOVE_SHED_TAIL); SEND_OUT(opponent, 1); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_SWAP_FROM_SUBSTITUTE, opponent);
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ILLUSION_OFF, opponent);
|
||||
|
||||
@ -75,7 +75,7 @@ SINGLE_BATTLE_TEST("Innards Out uses correct damage amount for Future Sight")
|
||||
OPPONENT(SPECIES_WYNAUT);
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_FUTURE_SIGHT); }
|
||||
TURN { }
|
||||
TURN {}
|
||||
TURN { SEND_OUT(player, 1); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_FUTURE_SIGHT, opponent);
|
||||
|
||||
@ -8,9 +8,9 @@ SINGLE_BATTLE_TEST("Inner Focus doesn't prevent intimidate (Gen3-7)")
|
||||
|
||||
GIVEN {
|
||||
WITH_CONFIG(CONFIG_UPDATED_INTIMIDATE, GEN_7);
|
||||
PLAYER(SPECIES_EKANS) { Ability(ABILITY_SHED_SKIN); };
|
||||
PLAYER(SPECIES_EKANS) { Ability(ABILITY_INTIMIDATE); };
|
||||
OPPONENT(SPECIES_ZUBAT) { Ability(ABILITY_INNER_FOCUS); };
|
||||
PLAYER(SPECIES_EKANS) { Ability(ABILITY_SHED_SKIN); }
|
||||
PLAYER(SPECIES_EKANS) { Ability(ABILITY_INTIMIDATE); }
|
||||
OPPONENT(SPECIES_ZUBAT) { Ability(ABILITY_INNER_FOCUS); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_SCRATCH); }
|
||||
TURN { SWITCH(player, 1); MOVE(opponent, MOVE_SCRATCH); }
|
||||
@ -35,9 +35,9 @@ SINGLE_BATTLE_TEST("Inner Focus prevents intimidate (Gen8+)")
|
||||
|
||||
GIVEN {
|
||||
WITH_CONFIG(CONFIG_UPDATED_INTIMIDATE, GEN_8);
|
||||
PLAYER(SPECIES_EKANS) { Ability(ABILITY_SHED_SKIN); };
|
||||
PLAYER(SPECIES_EKANS) { Ability(ABILITY_INTIMIDATE); };
|
||||
OPPONENT(SPECIES_ZUBAT) { Ability(ABILITY_INNER_FOCUS); };
|
||||
PLAYER(SPECIES_EKANS) { Ability(ABILITY_SHED_SKIN); }
|
||||
PLAYER(SPECIES_EKANS) { Ability(ABILITY_INTIMIDATE); }
|
||||
OPPONENT(SPECIES_ZUBAT) { Ability(ABILITY_INNER_FOCUS); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_SCRATCH); }
|
||||
TURN { SWITCH(player, 1); MOVE(opponent, MOVE_SCRATCH); }
|
||||
@ -58,7 +58,7 @@ SINGLE_BATTLE_TEST("Inner Focus prevents flinching")
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_ZUBAT) { Ability(ABILITY_INNER_FOCUS); };
|
||||
OPPONENT(SPECIES_ZUBAT) { Ability(ABILITY_INNER_FOCUS); }
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_FAKE_OUT);
|
||||
MOVE(opponent, MOVE_SCRATCH);
|
||||
@ -73,8 +73,8 @@ SINGLE_BATTLE_TEST("Inner Focus prevents flinching")
|
||||
SINGLE_BATTLE_TEST("Mold Breaker ignores Inner Focus")
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_PINSIR) { Ability(ABILITY_MOLD_BREAKER); };
|
||||
OPPONENT(SPECIES_ZUBAT) { Ability(ABILITY_INNER_FOCUS); };
|
||||
PLAYER(SPECIES_PINSIR) { Ability(ABILITY_MOLD_BREAKER); }
|
||||
OPPONENT(SPECIES_ZUBAT) { Ability(ABILITY_INNER_FOCUS); }
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_FAKE_OUT); }
|
||||
} SCENE {
|
||||
|
||||
@ -171,7 +171,7 @@ DOUBLE_BATTLE_TEST("Intimidate activates on an empty slot")
|
||||
DOUBLE_BATTLE_TEST("Intimidate activates immediately after the mon was switched in as long as one opposing mon is alive")
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_TAPU_KOKO) { Ability(ABILITY_ELECTRIC_SURGE); };
|
||||
PLAYER(SPECIES_TAPU_KOKO) { Ability(ABILITY_ELECTRIC_SURGE); }
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
PLAYER(SPECIES_EKANS) { Ability(ABILITY_INTIMIDATE); Item(ITEM_ELECTRIC_SEED); }
|
||||
OPPONENT(SPECIES_WYNAUT) { HP(1); }
|
||||
|
||||
@ -7,7 +7,7 @@ SINGLE_BATTLE_TEST("Intrepid Sword raises Attack by one stage")
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_ZACIAN) { Ability(ABILITY_INTREPID_SWORD); }
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ABILITY_POPUP(opponent, ABILITY_INTREPID_SWORD);
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponent);
|
||||
@ -122,9 +122,9 @@ SINGLE_BATTLE_TEST("Intrepid Sword and Dauntless Shield do not proc at max stage
|
||||
PLAYER(SPECIES_ZACIAN) { Ability(ABILITY_INTREPID_SWORD); }
|
||||
OPPONENT(SPECIES_ZAMAZENTA) { Ability(ABILITY_DAUNTLESS_SHIELD); }
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_IRON_DEFENSE); MOVE(opponent, MOVE_SWORDS_DANCE);}
|
||||
TURN { MOVE(player, MOVE_IRON_DEFENSE); MOVE(opponent, MOVE_SWORDS_DANCE);}
|
||||
TURN { MOVE(player, MOVE_IRON_DEFENSE); MOVE(opponent, MOVE_SWORDS_DANCE);}
|
||||
TURN { MOVE(player, MOVE_IRON_DEFENSE); MOVE(opponent, MOVE_SWORDS_DANCE); }
|
||||
TURN { MOVE(player, MOVE_IRON_DEFENSE); MOVE(opponent, MOVE_SWORDS_DANCE); }
|
||||
TURN { MOVE(player, MOVE_IRON_DEFENSE); MOVE(opponent, MOVE_SWORDS_DANCE); }
|
||||
TURN { MOVE(player, MOVE_SKILL_SWAP); }
|
||||
} SCENE {
|
||||
NONE_OF {
|
||||
@ -145,10 +145,10 @@ SINGLE_BATTLE_TEST("Intrepid Sword and Dauntless Shield do not proc at max stage
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_ZACIAN) { Ability(ABILITY_INTREPID_SWORD); }
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_IRON_DEFENSE); MOVE(opponent, MOVE_SWORDS_DANCE);}
|
||||
TURN { MOVE(player, MOVE_IRON_DEFENSE); MOVE(opponent, MOVE_SWORDS_DANCE);}
|
||||
TURN { MOVE(player, MOVE_IRON_DEFENSE); MOVE(opponent, MOVE_SWORDS_DANCE);}
|
||||
TURN { MOVE(player, MOVE_BATON_PASS); MOVE(opponent, MOVE_BATON_PASS); SEND_OUT(player, 1); SEND_OUT(opponent, 1);}
|
||||
TURN { MOVE(player, MOVE_IRON_DEFENSE); MOVE(opponent, MOVE_SWORDS_DANCE); }
|
||||
TURN { MOVE(player, MOVE_IRON_DEFENSE); MOVE(opponent, MOVE_SWORDS_DANCE); }
|
||||
TURN { MOVE(player, MOVE_IRON_DEFENSE); MOVE(opponent, MOVE_SWORDS_DANCE); }
|
||||
TURN { MOVE(player, MOVE_BATON_PASS); MOVE(opponent, MOVE_BATON_PASS); SEND_OUT(player, 1); SEND_OUT(opponent, 1); }
|
||||
} SCENE {
|
||||
NONE_OF {
|
||||
ABILITY_POPUP(player, ABILITY_DAUNTLESS_SHIELD);
|
||||
|
||||
@ -23,7 +23,7 @@ SINGLE_BATTLE_TEST("Magic Guard ignores immobilization that can be caused by par
|
||||
else
|
||||
PASSES_RANDOMLY(75, 100, RNG_PARALYSIS);
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_CLEFABLE) { Ability(ABILITY_MAGIC_GUARD); Status1(STATUS1_PARALYSIS);}
|
||||
PLAYER(SPECIES_CLEFABLE) { Ability(ABILITY_MAGIC_GUARD); Status1(STATUS1_PARALYSIS); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_CELEBRATE); }
|
||||
@ -35,10 +35,10 @@ SINGLE_BATTLE_TEST("Magic Guard ignores immobilization that can be caused by par
|
||||
SINGLE_BATTLE_TEST("Magic Guard does not ignore speed stat changes caused by paralysis")
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_CLEFABLE) { Speed(100); Ability(ABILITY_MAGIC_GUARD); Status1(STATUS1_PARALYSIS);}
|
||||
PLAYER(SPECIES_CLEFABLE) { Speed(100); Ability(ABILITY_MAGIC_GUARD); Status1(STATUS1_PARALYSIS); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Speed(99); }
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, opponent);
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_CELEBRATE, player);
|
||||
|
||||
@ -53,7 +53,7 @@ SINGLE_BATTLE_TEST("Mimicry restores the battler's types when terrain is removed
|
||||
GIVEN {
|
||||
ASSUME(GetSpeciesType(SPECIES_STUNFISK_GALAR, 0) == TYPE_GROUND);
|
||||
ASSUME(GetSpeciesType(SPECIES_STUNFISK_GALAR, 1) == TYPE_STEEL);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_STUNFISK_GALAR) { Ability(ABILITY_MIMICRY); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, terrainMove); MOVE(player, removeTerrainMove); }
|
||||
|
||||
@ -8,7 +8,7 @@ SINGLE_BATTLE_TEST("Mind's Eye allows to hit Ghost-type Pokémon with Normal- an
|
||||
PARAMETRIZE { move = MOVE_KARATE_CHOP; }
|
||||
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_MINDS_EYE); };
|
||||
PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_MINDS_EYE); }
|
||||
OPPONENT(SPECIES_GASTLY);
|
||||
} WHEN {
|
||||
TURN { MOVE(player, move); }
|
||||
@ -26,8 +26,8 @@ SINGLE_BATTLE_TEST("Mind's Eye doesn't bypass a Ghost-type's Wonder Guard")
|
||||
PARAMETRIZE { move = MOVE_KARATE_CHOP; }
|
||||
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_SCRAPPY); };
|
||||
OPPONENT(SPECIES_SHEDINJA) { Ability(ABILITY_WONDER_GUARD); };
|
||||
PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_SCRAPPY); }
|
||||
OPPONENT(SPECIES_SHEDINJA) { Ability(ABILITY_WONDER_GUARD); }
|
||||
} WHEN {
|
||||
TURN { MOVE(player, move); }
|
||||
} SCENE {
|
||||
|
||||
@ -13,7 +13,7 @@ SINGLE_BATTLE_TEST("Mirror Armor lowers a stat of the attacking Pokémon")
|
||||
PARAMETRIZE { move = MOVE_FAKE_TEARS; statId = STAT_SPDEF; }
|
||||
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_CORVIKNIGHT) {Ability(ABILITY_MIRROR_ARMOR);}
|
||||
PLAYER(SPECIES_CORVIKNIGHT) { Ability(ABILITY_MIRROR_ARMOR); }
|
||||
OPPONENT(SPECIES_WYNAUT);
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, move); }
|
||||
@ -129,8 +129,8 @@ SINGLE_BATTLE_TEST("Mirror Armor doesn't lower the stats of an attacking Pokemon
|
||||
SINGLE_BATTLE_TEST("Mirror Armor raises the stat of an attacking Pokemon with Contrary")
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_CORVIKNIGHT) {Ability(ABILITY_MIRROR_ARMOR);}
|
||||
OPPONENT(SPECIES_SHUCKLE) {Ability(ABILITY_CONTRARY);}
|
||||
PLAYER(SPECIES_CORVIKNIGHT) { Ability(ABILITY_MIRROR_ARMOR); }
|
||||
OPPONENT(SPECIES_SHUCKLE) { Ability(ABILITY_CONTRARY); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_LEER); }
|
||||
} SCENE {
|
||||
@ -147,7 +147,7 @@ SINGLE_BATTLE_TEST("Mirror Armor raises the stat of an attacking Pokemon with Co
|
||||
SINGLE_BATTLE_TEST("Mirror Armor doesn't lower the stat of the attacking Pokemon if it is already at -6")
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_CORVIKNIGHT) {Ability(ABILITY_MIRROR_ARMOR);}
|
||||
PLAYER(SPECIES_CORVIKNIGHT) { Ability(ABILITY_MIRROR_ARMOR); }
|
||||
OPPONENT(SPECIES_WYNAUT);
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_SCREECH); }
|
||||
@ -177,15 +177,15 @@ DOUBLE_BATTLE_TEST("Mirror Armor lowers Speed of the partner Pokemon after Court
|
||||
ASSUME(GetMoveEffect(MOVE_COURT_CHANGE) == EFFECT_COURT_CHANGE);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
PLAYER(SPECIES_CORVIKNIGHT) {Ability(ABILITY_MIRROR_ARMOR); Item(ITEM_IRON_BALL); }
|
||||
PLAYER(SPECIES_CORVIKNIGHT) { Ability(ABILITY_MIRROR_ARMOR); Item(ITEM_IRON_BALL); }
|
||||
OPPONENT(SPECIES_WYNAUT);
|
||||
OPPONENT(SPECIES_WYNAUT);
|
||||
OPPONENT(SPECIES_WYNAUT);
|
||||
} WHEN {
|
||||
TURN { MOVE(playerLeft, MOVE_STICKY_WEB); }
|
||||
TURN { MOVE(opponentLeft, MOVE_COURT_CHANGE); }
|
||||
TURN { SWITCH(playerRight, 2);}
|
||||
TURN { }
|
||||
TURN { SWITCH(playerRight, 2); }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
MESSAGE("Wobbuffet used Sticky Web!");
|
||||
MESSAGE("The opposing Wynaut used Court Change!");
|
||||
|
||||
@ -15,7 +15,7 @@ SINGLE_BATTLE_TEST("Moody randomly raises the user's Attack, Defense, Sp. Atk, S
|
||||
PLAYER(SPECIES_OCTILLERY) { Ability(ABILITY_MOODY); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ABILITY_POPUP(player, ABILITY_MOODY);
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player);
|
||||
@ -40,7 +40,7 @@ SINGLE_BATTLE_TEST("Moody randomly lowers the user's Attack, Defense, Sp. Atk, S
|
||||
PLAYER(SPECIES_OCTILLERY) { Ability(ABILITY_MOODY); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ABILITY_POPUP(player, ABILITY_MOODY);
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player);
|
||||
@ -64,7 +64,7 @@ SINGLE_BATTLE_TEST("Moody randomly raises the holder's Attack, Defense, Sp. Atk,
|
||||
PLAYER(SPECIES_OCTILLERY) { Ability(ABILITY_MOODY); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ABILITY_POPUP(player, ABILITY_MOODY);
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, player);
|
||||
|
||||
@ -16,7 +16,7 @@ DOUBLE_BATTLE_TEST("Moxie/Chilling Neigh raises Attack by one stage after direct
|
||||
OPPONENT(SPECIES_ABRA) { HP(1); }
|
||||
OPPONENT(SPECIES_ABRA);
|
||||
} WHEN {
|
||||
TURN { MOVE(playerLeft, MOVE_EARTHQUAKE); SEND_OUT(opponentLeft, 2); }
|
||||
TURN { MOVE(playerLeft, MOVE_EARTHQUAKE); SEND_OUT(opponentLeft, 2); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_EARTHQUAKE, playerLeft);
|
||||
MESSAGE("The opposing Glalie fainted!");
|
||||
@ -49,7 +49,7 @@ DOUBLE_BATTLE_TEST("Moxie/Chilling Neigh does not trigger if Pokemon faint to in
|
||||
OPPONENT(SPECIES_ABRA) { HP(1); }
|
||||
OPPONENT(SPECIES_ABRA);
|
||||
} WHEN {
|
||||
TURN { MOVE(playerRight, MOVE_QUICK_ATTACK, target: opponentRight); SEND_OUT(opponentLeft, 2); }
|
||||
TURN { MOVE(playerRight, MOVE_QUICK_ATTACK, target: opponentRight); SEND_OUT(opponentLeft, 2); }
|
||||
} SCENE {
|
||||
int i;
|
||||
|
||||
|
||||
@ -7,7 +7,7 @@ SINGLE_BATTLE_TEST("Mummy/Lingering Aroma replace the attacker's ability on cont
|
||||
enum Ability ability;
|
||||
|
||||
PARAMETRIZE { move = MOVE_AQUA_JET; ability = ABILITY_MUMMY; species = SPECIES_YAMASK; }
|
||||
PARAMETRIZE { move = MOVE_WATER_GUN; ability = ABILITY_MUMMY; species = SPECIES_YAMASK;}
|
||||
PARAMETRIZE { move = MOVE_WATER_GUN; ability = ABILITY_MUMMY; species = SPECIES_YAMASK; }
|
||||
PARAMETRIZE { move = MOVE_AQUA_JET; ability = ABILITY_LINGERING_AROMA; species = SPECIES_OINKOLOGNE; }
|
||||
PARAMETRIZE { move = MOVE_WATER_GUN; ability = ABILITY_LINGERING_AROMA; species = SPECIES_OINKOLOGNE; }
|
||||
GIVEN {
|
||||
|
||||
@ -34,7 +34,7 @@ SINGLE_BATTLE_TEST("Mycelium Might ignores opposing abilities")
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_TOEDSCOOL) { Speed(100); Ability(ABILITY_MYCELIUM_MIGHT); }
|
||||
OPPONENT(SPECIES_BELDUM) { Speed(1); Ability(ABILITY_CLEAR_BODY);}
|
||||
OPPONENT(SPECIES_BELDUM) { Speed(1); Ability(ABILITY_CLEAR_BODY); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_SCREECH); }
|
||||
} SCENE {
|
||||
@ -51,7 +51,7 @@ SINGLE_BATTLE_TEST("Mycelium Might vs Stall action order depends on speed")
|
||||
PARAMETRIZE { speed = 101; }
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_TOEDSCOOL) { Speed(100); Ability(ABILITY_MYCELIUM_MIGHT); }
|
||||
OPPONENT(SPECIES_SABLEYE) { Speed(speed); Ability(ABILITY_STALL);}
|
||||
OPPONENT(SPECIES_SABLEYE) { Speed(speed); Ability(ABILITY_STALL); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_CELEBRATE); }
|
||||
} SCENE {
|
||||
|
||||
@ -7,7 +7,7 @@ SINGLE_BATTLE_TEST("Neutralizing Gas activates on switch-in")
|
||||
PLAYER(SPECIES_WEEZING) { Ability(ABILITY_NEUTRALIZING_GAS); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ABILITY_POPUP(player, ABILITY_NEUTRALIZING_GAS);
|
||||
MESSAGE("Neutralizing gas filled the area!");
|
||||
@ -20,7 +20,7 @@ SINGLE_BATTLE_TEST("Neutralizing Gas prevents opponent's switch-in ability from
|
||||
PLAYER(SPECIES_WEEZING) { Ability(ABILITY_NEUTRALIZING_GAS); }
|
||||
OPPONENT(SPECIES_ZEKROM) { Ability(ABILITY_TERAVOLT); }
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ABILITY_POPUP(player, ABILITY_NEUTRALIZING_GAS);
|
||||
NONE_OF {
|
||||
@ -38,7 +38,7 @@ DOUBLE_BATTLE_TEST("Neutralizing Gas prevents ally's switch-in ability from acti
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ABILITY_POPUP(playerLeft, ABILITY_NEUTRALIZING_GAS);
|
||||
NONE_OF {
|
||||
@ -243,7 +243,7 @@ SINGLE_BATTLE_TEST("Neutralizing Gas prevents Trace from copying it")
|
||||
PLAYER(SPECIES_RALTS) { Ability(ABILITY_TRACE); }
|
||||
OPPONENT(SPECIES_WEEZING) { Ability(ABILITY_NEUTRALIZING_GAS); }
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ABILITY_POPUP(opponent, ABILITY_NEUTRALIZING_GAS);
|
||||
NONE_OF {
|
||||
|
||||
@ -17,7 +17,7 @@ SINGLE_BATTLE_TEST("Normalize turns a move into a Normal-type move")
|
||||
GIVEN {
|
||||
ASSUME(GetSpeciesType(SPECIES_GASTLY, 0) == TYPE_GHOST);
|
||||
PLAYER(SPECIES_GASTLY);
|
||||
OPPONENT(SPECIES_SKITTY) { Ability(ability); Moves(MOVE_WATER_GUN);}
|
||||
OPPONENT(SPECIES_SKITTY) { Ability(ability); Moves(MOVE_WATER_GUN); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_WATER_GUN); }
|
||||
} SCENE {
|
||||
@ -43,7 +43,7 @@ SINGLE_BATTLE_TEST("Normalize affects status moves")
|
||||
ASSUME(GetMoveType(MOVE_THUNDER_WAVE) == TYPE_ELECTRIC);
|
||||
ASSUME(GetSpeciesType(SPECIES_DRILBUR, 0) == TYPE_GROUND);
|
||||
PLAYER(SPECIES_DRILBUR);
|
||||
OPPONENT(SPECIES_SKITTY) { Ability(ability); Moves(MOVE_THUNDER_WAVE);}
|
||||
OPPONENT(SPECIES_SKITTY) { Ability(ability); Moves(MOVE_THUNDER_WAVE); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_THUNDER_WAVE); }
|
||||
} SCENE {
|
||||
@ -70,7 +70,7 @@ SINGLE_BATTLE_TEST("Normalize still makes Freeze-Dry do super effective damage t
|
||||
ASSUME(GetMoveEffect(MOVE_FREEZE_DRY) == EFFECT_SUPER_EFFECTIVE_ON_ARG);
|
||||
ASSUME(GetSpeciesType(SPECIES_MUDKIP, 0) == TYPE_WATER);
|
||||
PLAYER(SPECIES_MUDKIP);
|
||||
OPPONENT(SPECIES_SKITTY) { Ability(ability); Moves(MOVE_FREEZE_DRY);}
|
||||
OPPONENT(SPECIES_SKITTY) { Ability(ability); Moves(MOVE_FREEZE_DRY); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_FREEZE_DRY); }
|
||||
} SCENE {
|
||||
|
||||
@ -218,7 +218,7 @@ DOUBLE_BATTLE_TEST("Opportunist copies the stat of each Pokémon that were raise
|
||||
OPPONENT(SPECIES_ZACIAN) { Ability(ABILITY_INTREPID_SWORD); }
|
||||
OPPONENT(SPECIES_ZACIAN) { Ability(ABILITY_INTREPID_SWORD); }
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ABILITY_POPUP(opponentLeft, ABILITY_INTREPID_SWORD);
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_STATS_CHANGE, opponentLeft);
|
||||
@ -281,7 +281,7 @@ SINGLE_BATTLE_TEST("Opportunist and Mirror Herb stack stat increases")
|
||||
PLAYER(SPECIES_ZACIAN) { Ability(ABILITY_INTREPID_SWORD); }
|
||||
OPPONENT(SPECIES_ESPATHRA) { Ability(ABILITY_OPPORTUNIST); Item(ITEM_MIRROR_HERB); }
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ABILITY_POPUP(player, ABILITY_INTREPID_SWORD);
|
||||
ABILITY_POPUP(opponent, ABILITY_OPPORTUNIST);
|
||||
@ -303,7 +303,7 @@ DOUBLE_BATTLE_TEST("Opportunist and Mirror Herb resolve correctly")
|
||||
OPPONENT(SPECIES_MEOWSCARADA) { Item(ITEM_MIRROR_HERB); }
|
||||
OPPONENT(SPECIES_ESPATHRA) { Ability(ABILITY_OPPORTUNIST); Item(ITEM_MIRROR_HERB); }
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ABILITY_POPUP(playerLeft, ABILITY_INTREPID_SWORD);
|
||||
ABILITY_POPUP(opponentRight, ABILITY_OPPORTUNIST);
|
||||
|
||||
@ -78,8 +78,8 @@ SINGLE_BATTLE_TEST("Overcoat blocks Effect Spore's effect (Gen6+)")
|
||||
PARAMETRIZE { config = GEN_6; }
|
||||
GIVEN {
|
||||
WITH_CONFIG(CONFIG_POWDER_OVERCOAT, config);
|
||||
PLAYER(SPECIES_PINECO) {Ability(ABILITY_OVERCOAT);}
|
||||
OPPONENT(SPECIES_SHROOMISH) {Ability(ABILITY_EFFECT_SPORE);}
|
||||
PLAYER(SPECIES_PINECO) { Ability(ABILITY_OVERCOAT); }
|
||||
OPPONENT(SPECIES_SHROOMISH) { Ability(ABILITY_EFFECT_SPORE); }
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_TACKLE, WITH_RNG(RNG_EFFECT_SPORE, 1)); }
|
||||
} SCENE {
|
||||
|
||||
@ -6,10 +6,10 @@ SINGLE_BATTLE_TEST("Own Tempo doesn't prevent Intimidate (Gen3-7)")
|
||||
GIVEN {
|
||||
WITH_CONFIG(CONFIG_UPDATED_INTIMIDATE, GEN_7);
|
||||
ASSUME(GetMoveEffect(MOVE_CONFUSE_RAY) == EFFECT_CONFUSE);
|
||||
PLAYER(SPECIES_EKANS) { Ability(ABILITY_INTIMIDATE); };
|
||||
OPPONENT(SPECIES_SLOWPOKE) { Ability(ABILITY_OWN_TEMPO); };
|
||||
PLAYER(SPECIES_EKANS) { Ability(ABILITY_INTIMIDATE); }
|
||||
OPPONENT(SPECIES_SLOWPOKE) { Ability(ABILITY_OWN_TEMPO); }
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ABILITY_POPUP(player, ABILITY_INTIMIDATE);
|
||||
NONE_OF {
|
||||
@ -24,8 +24,8 @@ SINGLE_BATTLE_TEST("Own Tempo prevents Intimidate but no other stat down changes
|
||||
GIVEN {
|
||||
WITH_CONFIG(CONFIG_UPDATED_INTIMIDATE, GEN_8);
|
||||
ASSUME(GetMoveEffect(MOVE_CONFUSE_RAY) == EFFECT_CONFUSE);
|
||||
PLAYER(SPECIES_EKANS) { Ability(ABILITY_INTIMIDATE); };
|
||||
OPPONENT(SPECIES_SLOWPOKE) { Ability(ABILITY_OWN_TEMPO); };
|
||||
PLAYER(SPECIES_EKANS) { Ability(ABILITY_INTIMIDATE); }
|
||||
OPPONENT(SPECIES_SLOWPOKE) { Ability(ABILITY_OWN_TEMPO); }
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_SCARY_FACE); }
|
||||
} SCENE {
|
||||
@ -45,7 +45,7 @@ SINGLE_BATTLE_TEST("Own Tempo prevents confusion from moves by the opponent")
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_CONFUSE_RAY) == EFFECT_CONFUSE);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_SLOWPOKE) { Ability(ABILITY_OWN_TEMPO); };
|
||||
OPPONENT(SPECIES_SLOWPOKE) { Ability(ABILITY_OWN_TEMPO); }
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_CONFUSE_RAY); }
|
||||
} SCENE {
|
||||
@ -59,7 +59,7 @@ SINGLE_BATTLE_TEST("Own Tempo prevents confusion from moves by the user")
|
||||
GIVEN {
|
||||
ASSUME(MoveHasAdditionalEffectSelf(MOVE_PETAL_DANCE, MOVE_EFFECT_THRASH));
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_SLOWPOKE) { Ability(ABILITY_OWN_TEMPO); };
|
||||
OPPONENT(SPECIES_SLOWPOKE) { Ability(ABILITY_OWN_TEMPO); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_PETAL_DANCE); }
|
||||
TURN { MOVE(opponent, MOVE_PETAL_DANCE); }
|
||||
@ -79,7 +79,7 @@ SINGLE_BATTLE_TEST("Mold Breaker ignores Own Tempo")
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_CONFUSE_RAY) == EFFECT_CONFUSE);
|
||||
PLAYER(SPECIES_PINSIR) { Ability(ABILITY_MOLD_BREAKER); }
|
||||
OPPONENT(SPECIES_SLOWPOKE) { Ability(ABILITY_OWN_TEMPO); };
|
||||
OPPONENT(SPECIES_SLOWPOKE) { Ability(ABILITY_OWN_TEMPO); }
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_CONFUSE_RAY); }
|
||||
} SCENE {
|
||||
@ -92,8 +92,8 @@ SINGLE_BATTLE_TEST("Mold Breaker does not prevent Own Tempo from curing confusio
|
||||
{
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_CONFUSE_RAY) == EFFECT_CONFUSE);
|
||||
PLAYER(SPECIES_PINSIR) { Ability(ABILITY_MOLD_BREAKER); };
|
||||
OPPONENT(SPECIES_SLOWPOKE) { Ability(ABILITY_OWN_TEMPO); };
|
||||
PLAYER(SPECIES_PINSIR) { Ability(ABILITY_MOLD_BREAKER); }
|
||||
OPPONENT(SPECIES_SLOWPOKE) { Ability(ABILITY_OWN_TEMPO); }
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_CONFUSE_RAY); }
|
||||
} SCENE {
|
||||
@ -112,7 +112,7 @@ SINGLE_BATTLE_TEST("Own Tempo cures confusion if it's obtained via Skill Swap")
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_CONFUSE_RAY) == EFFECT_CONFUSE);
|
||||
ASSUME(GetMoveEffect(MOVE_SKILL_SWAP) == EFFECT_SKILL_SWAP);
|
||||
PLAYER(SPECIES_SLOWPOKE) { Ability(ABILITY_OWN_TEMPO); };
|
||||
PLAYER(SPECIES_SLOWPOKE) { Ability(ABILITY_OWN_TEMPO); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_CONFUSE_RAY); }
|
||||
@ -134,7 +134,7 @@ SINGLE_BATTLE_TEST("Own Tempo prevents confusion from items")
|
||||
GIVEN {
|
||||
ASSUME(gItemsInfo[ITEM_BERSERK_GENE].holdEffect == HOLD_EFFECT_BERSERK_GENE);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_SLOWPOKE) { Ability(ABILITY_OWN_TEMPO); Item(ITEM_BERSERK_GENE); };
|
||||
OPPONENT(SPECIES_SLOWPOKE) { Ability(ABILITY_OWN_TEMPO); Item(ITEM_BERSERK_GENE); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_SCRATCH); }
|
||||
} SCENE {
|
||||
|
||||
@ -28,8 +28,8 @@ SINGLE_BATTLE_TEST("Poison Heal heals from Toxic Poison damage are constant")
|
||||
PLAYER(SPECIES_SHROOMISH) { Ability(ABILITY_POISON_HEAL); Status1(STATUS1_TOXIC_POISON); HP(1), MaxHP(400); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN { }
|
||||
TURN {}
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ABILITY_POPUP(player, ABILITY_POISON_HEAL);
|
||||
MESSAGE("The poisoning healed Shroomish a little bit!");
|
||||
|
||||
@ -54,7 +54,7 @@ SINGLE_BATTLE_TEST("Poison Puppeteer does not trigger if poison is Toxic Spikes
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_TOXIC_SPIKES);}
|
||||
TURN { MOVE(player, MOVE_TOXIC_SPIKES); }
|
||||
TURN { SWITCH(opponent, 1); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_TOXIC_SPIKES, player);
|
||||
|
||||
@ -58,7 +58,7 @@ SINGLE_BATTLE_TEST("Poison Touch applies between multi-hit move hits")
|
||||
ASSUME(MoveMakesContact(MOVE_ARM_THRUST));
|
||||
ASSUME(gItemsInfo[ITEM_PECHA_BERRY].holdEffect == HOLD_EFFECT_CURE_PSN);
|
||||
PLAYER(SPECIES_GRIMER) { Ability(ABILITY_POISON_TOUCH); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_PECHA_BERRY); };
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_PECHA_BERRY); }
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_ARM_THRUST); }
|
||||
} SCENE {
|
||||
|
||||
@ -67,7 +67,7 @@ SINGLE_BATTLE_TEST("Prankster-affected moves called via Assist don't affect Dark
|
||||
WITH_CONFIG(CONFIG_PRANKSTER_DARK_TYPES, gen);
|
||||
PLAYER(SPECIES_UMBREON);
|
||||
OPPONENT(SPECIES_VOLBEAT) { Ability(ABILITY_PRANKSTER); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_CONFUSE_RAY); };
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_CONFUSE_RAY); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_ASSIST); }
|
||||
} SCENE {
|
||||
@ -89,7 +89,7 @@ DOUBLE_BATTLE_TEST("Prankster-affected moves called via Instruct do not affect D
|
||||
GIVEN {
|
||||
WITH_CONFIG(CONFIG_PRANKSTER_DARK_TYPES, gen);
|
||||
PLAYER(SPECIES_VOLBEAT) { Speed(20); Ability(ABILITY_PRANKSTER); }
|
||||
PLAYER(SPECIES_WOBBUFFET) { Speed(10);}
|
||||
PLAYER(SPECIES_WOBBUFFET) { Speed(10); }
|
||||
OPPONENT(SPECIES_UMBREON) { Speed(15); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Speed(1); }
|
||||
OPPONENT(SPECIES_UMBREON) { Speed(1); }
|
||||
@ -134,7 +134,7 @@ DOUBLE_BATTLE_TEST("Moves called via Prankster-affected After you affect Dark-ty
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_VOLBEAT) { Speed(1); Ability(ABILITY_PRANKSTER); }
|
||||
PLAYER(SPECIES_WOBBUFFET) { Speed(1);}
|
||||
PLAYER(SPECIES_WOBBUFFET) { Speed(1); }
|
||||
OPPONENT(SPECIES_UMBREON) { Speed(10); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Speed(10); }
|
||||
} WHEN {
|
||||
|
||||
@ -10,7 +10,7 @@ ASSUMPTIONS
|
||||
SINGLE_BATTLE_TEST("Primordial Sea blocks damaging Fire-type moves")
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_KYOGRE) {Item(ITEM_BLUE_ORB);}
|
||||
PLAYER(SPECIES_KYOGRE) { Item(ITEM_BLUE_ORB); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_EMBER); }
|
||||
@ -35,10 +35,10 @@ DOUBLE_BATTLE_TEST("Primordial Sea blocks damaging Fire-type moves and prints th
|
||||
ASSUME(!IsBattleMoveStatus(MOVE_ERUPTION));
|
||||
ASSUME(GetMoveType(MOVE_ERUPTION) == TYPE_FIRE);
|
||||
ASSUME(GetMoveTarget(MOVE_ERUPTION) == MOVE_TARGET_BOTH);
|
||||
PLAYER(SPECIES_KYOGRE) {Item(ITEM_BLUE_ORB); {Speed(5);}}
|
||||
PLAYER(SPECIES_WOBBUFFET) {Speed(5);}
|
||||
OPPONENT(SPECIES_WOBBUFFET) {Speed(10);}
|
||||
OPPONENT(SPECIES_WOBBUFFET) {Speed(8);}
|
||||
PLAYER(SPECIES_KYOGRE) { Item(ITEM_BLUE_ORB); Speed(5); }
|
||||
PLAYER(SPECIES_WOBBUFFET) { Speed(5); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Speed(10); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Speed(8); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponentLeft, MOVE_ERUPTION); }
|
||||
} SCENE {
|
||||
@ -55,8 +55,8 @@ DOUBLE_BATTLE_TEST("Primordial Sea blocks damaging Fire-type moves and prints th
|
||||
SINGLE_BATTLE_TEST("Primordial Sea does not block a move if Pokémon is asleep and uses a Fire-type move") // Sleep/confusion/paralysis all happen before the check for primal weather
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_KYOGRE) {Item(ITEM_BLUE_ORB);}
|
||||
OPPONENT(SPECIES_WOBBUFFET) {Status1(STATUS1_SLEEP);}
|
||||
PLAYER(SPECIES_KYOGRE) { Item(ITEM_BLUE_ORB); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Status1(STATUS1_SLEEP); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_EMBER); }
|
||||
} SCENE {
|
||||
|
||||
@ -61,7 +61,7 @@ SINGLE_BATTLE_TEST("Protosynthesis ability pop up activates only once during the
|
||||
GIVEN {
|
||||
WITH_CONFIG(CONFIG_ABILITY_WEATHER, GEN_6);
|
||||
PLAYER(SPECIES_WALKING_WAKE) { Ability(ABILITY_PROTOSYNTHESIS); }
|
||||
OPPONENT(SPECIES_NINETALES) { Ability(ABILITY_DROUGHT); };
|
||||
OPPONENT(SPECIES_NINETALES) { Ability(ABILITY_DROUGHT); }
|
||||
} WHEN {
|
||||
for (turns = 0; turns < 5; turns++)
|
||||
TURN {}
|
||||
@ -90,7 +90,7 @@ SINGLE_BATTLE_TEST("Protosynthesis activates on switch-in")
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
PLAYER(SPECIES_ROARING_MOON) { Ability(ABILITY_PROTOSYNTHESIS); }
|
||||
OPPONENT(SPECIES_NINETALES) { Ability(ABILITY_DROUGHT); };
|
||||
OPPONENT(SPECIES_NINETALES) { Ability(ABILITY_DROUGHT); }
|
||||
} WHEN {
|
||||
TURN { SWITCH(player, 1); }
|
||||
} SCENE {
|
||||
@ -113,7 +113,7 @@ SINGLE_BATTLE_TEST("Protosynthesis prioritizes stats in the case of a tie in the
|
||||
PLAYER(SPECIES_GREAT_TUSK) { Ability(ABILITY_PROTOSYNTHESIS); Attack(stats[0]); Defense(stats[1]); SpAttack(stats[2]); SpDefense(stats[3]); Speed(stats[4]); }
|
||||
OPPONENT(SPECIES_GROUDON) { Ability(ABILITY_DROUGHT); Speed(5); }
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ABILITY_POPUP(opponent, ABILITY_DROUGHT);
|
||||
ABILITY_POPUP(player, ABILITY_PROTOSYNTHESIS);
|
||||
@ -176,7 +176,7 @@ SINGLE_BATTLE_TEST("Protosynthesis activates even if the Pokémon is holding an
|
||||
PLAYER(SPECIES_GREAT_TUSK) { Ability(ABILITY_PROTOSYNTHESIS); Item(ITEM_UTILITY_UMBRELLA); }
|
||||
OPPONENT(SPECIES_NINETALES) { Ability(ABILITY_DROUGHT); }
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ABILITY_POPUP(opponent, ABILITY_DROUGHT);
|
||||
ABILITY_POPUP(player, ABILITY_PROTOSYNTHESIS);
|
||||
|
||||
@ -40,7 +40,7 @@ SINGLE_BATTLE_TEST("Purifying Salt halves damage from dynamic Ghost-type moves",
|
||||
SINGLE_BATTLE_TEST("Purifying Salt makes Rest fail")
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_GARGANACL) { Ability(ABILITY_PURIFYING_SALT); HP(1); MaxHP(100);}
|
||||
PLAYER(SPECIES_GARGANACL) { Ability(ABILITY_PURIFYING_SALT); HP(1); MaxHP(100); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_REST); }
|
||||
|
||||
@ -143,7 +143,7 @@ SINGLE_BATTLE_TEST("Quark Drive activates on switch-in")
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
PLAYER(SPECIES_IRON_MOTH) { Ability(ABILITY_QUARK_DRIVE); }
|
||||
OPPONENT(SPECIES_TAPU_KOKO) { Ability(ABILITY_ELECTRIC_SURGE); };
|
||||
OPPONENT(SPECIES_TAPU_KOKO) { Ability(ABILITY_ELECTRIC_SURGE); }
|
||||
} WHEN {
|
||||
TURN { SWITCH(player, 1); }
|
||||
} SCENE {
|
||||
@ -159,9 +159,9 @@ SINGLE_BATTLE_TEST("Quark Drive activates on Electric Terrain even if not ground
|
||||
GIVEN {
|
||||
ASSUME(GetSpeciesType(SPECIES_IRON_JUGULIS, 0) == TYPE_FLYING || GetSpeciesType(SPECIES_IRON_JUGULIS, 1) == TYPE_FLYING);
|
||||
PLAYER(SPECIES_IRON_JUGULIS) { Ability(ABILITY_QUARK_DRIVE); }
|
||||
OPPONENT(SPECIES_TAPU_KOKO) { Ability(ABILITY_ELECTRIC_SURGE); };
|
||||
OPPONENT(SPECIES_TAPU_KOKO) { Ability(ABILITY_ELECTRIC_SURGE); }
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ABILITY_POPUP(opponent, ABILITY_ELECTRIC_SURGE);
|
||||
ABILITY_POPUP(player, ABILITY_QUARK_DRIVE);
|
||||
@ -180,7 +180,7 @@ SINGLE_BATTLE_TEST("Quark Drive prioritizes stats in the case of a tie in the fo
|
||||
PLAYER(SPECIES_IRON_TREADS) { Ability(ABILITY_QUARK_DRIVE); Attack(stats[0]); Defense(stats[1]); SpAttack(stats[2]); SpDefense(stats[3]); Speed(stats[4]); }
|
||||
OPPONENT(SPECIES_TAPU_KOKO) { Ability(ABILITY_ELECTRIC_SURGE); Speed(5); }
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ABILITY_POPUP(opponent, ABILITY_ELECTRIC_SURGE);
|
||||
ABILITY_POPUP(player, ABILITY_QUARK_DRIVE);
|
||||
|
||||
@ -21,8 +21,8 @@ SINGLE_BATTLE_TEST("Rattled boosts speed by 1 when hit by Bug, Dark or Ghost typ
|
||||
PARAMETRIZE { move = MOVE_SHADOW_PUNCH; }
|
||||
PARAMETRIZE { move = MOVE_SCRATCH; }
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WOBBUFFET) {Speed(42) ;}
|
||||
OPPONENT(SPECIES_SUDOWOODO) {Speed(40); Ability(ABILITY_RATTLED);}
|
||||
PLAYER(SPECIES_WOBBUFFET) { Speed(42) ; }
|
||||
OPPONENT(SPECIES_SUDOWOODO) { Speed(40); Ability(ABILITY_RATTLED); }
|
||||
} WHEN {
|
||||
TURN { MOVE(player, move); }
|
||||
TURN { MOVE(player, move); }
|
||||
@ -56,8 +56,8 @@ SINGLE_BATTLE_TEST("Rattled does not boost speed by 1 when affected by Intimidat
|
||||
{
|
||||
GIVEN {
|
||||
WITH_CONFIG(CONFIG_UPDATED_INTIMIDATE, GEN_7);
|
||||
PLAYER(SPECIES_GYARADOS) {Ability(ABILITY_INTIMIDATE); }
|
||||
OPPONENT(SPECIES_SUDOWOODO) {Ability(ABILITY_RATTLED); }
|
||||
PLAYER(SPECIES_GYARADOS) { Ability(ABILITY_INTIMIDATE); }
|
||||
OPPONENT(SPECIES_SUDOWOODO) { Ability(ABILITY_RATTLED); }
|
||||
} WHEN {
|
||||
TURN {}
|
||||
} SCENE {
|
||||
@ -76,8 +76,8 @@ SINGLE_BATTLE_TEST("Rattled boosts speed by 1 when affected by Intimidate (Gen8+
|
||||
{
|
||||
GIVEN {
|
||||
WITH_CONFIG(CONFIG_UPDATED_INTIMIDATE, GEN_8);
|
||||
PLAYER(SPECIES_GYARADOS) {Ability(ABILITY_INTIMIDATE); }
|
||||
OPPONENT(SPECIES_SUDOWOODO) {Ability(ABILITY_RATTLED); }
|
||||
PLAYER(SPECIES_GYARADOS) { Ability(ABILITY_INTIMIDATE); }
|
||||
OPPONENT(SPECIES_SUDOWOODO) { Ability(ABILITY_RATTLED); }
|
||||
} WHEN {
|
||||
TURN {}
|
||||
} SCENE {
|
||||
@ -97,7 +97,7 @@ SINGLE_BATTLE_TEST("Rattled triggers correctly when hit by U-Turn") // Specific
|
||||
ASSUME(GetMoveType(MOVE_U_TURN) == TYPE_BUG);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
PLAYER(SPECIES_WYNAUT);
|
||||
OPPONENT(SPECIES_SUDOWOODO) {Ability(ABILITY_RATTLED); }
|
||||
OPPONENT(SPECIES_SUDOWOODO) { Ability(ABILITY_RATTLED); }
|
||||
OPPONENT(SPECIES_SUDOWOODO);
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_U_TURN); SEND_OUT(player, 1); }
|
||||
|
||||
@ -66,7 +66,7 @@ SINGLE_BATTLE_TEST("Rivalry doesn't modify power if the attacker is genderless",
|
||||
GIVEN {
|
||||
ASSUME(GetSpeciesAbility(SPECIES_PORYGON, 0) == ABILITY_TRACE);
|
||||
PLAYER(SPECIES_PORYGON) { Ability(ABILITY_TRACE); } // No genderless mon naturally gets Rivalry
|
||||
OPPONENT(species) { Ability(ability); };
|
||||
OPPONENT(species) { Ability(ability); }
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_SCRATCH); }
|
||||
} SCENE {
|
||||
@ -89,7 +89,7 @@ SINGLE_BATTLE_TEST("Rivalry doesn't modify power if the target is genderless", s
|
||||
PARAMETRIZE { species = SPECIES_NIDOQUEEN; ability = ABILITY_RIVALRY; }
|
||||
|
||||
GIVEN {
|
||||
PLAYER(species) { Ability(ability); };
|
||||
PLAYER(species) { Ability(ability); }
|
||||
OPPONENT(SPECIES_PORYGON);
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_SCRATCH); }
|
||||
|
||||
@ -8,9 +8,9 @@ SINGLE_BATTLE_TEST("Scrappy doesn't prevent Intimidate (Gen4-7)")
|
||||
|
||||
GIVEN {
|
||||
WITH_CONFIG(CONFIG_UPDATED_INTIMIDATE, GEN_7);
|
||||
PLAYER(SPECIES_EKANS) { Ability(ABILITY_SHED_SKIN); };
|
||||
PLAYER(SPECIES_EKANS) { Ability(ABILITY_INTIMIDATE); };
|
||||
OPPONENT(SPECIES_KANGASKHAN) { Ability(ABILITY_SCRAPPY); };
|
||||
PLAYER(SPECIES_EKANS) { Ability(ABILITY_SHED_SKIN); }
|
||||
PLAYER(SPECIES_EKANS) { Ability(ABILITY_INTIMIDATE); }
|
||||
OPPONENT(SPECIES_KANGASKHAN) { Ability(ABILITY_SCRAPPY); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_SCRATCH); }
|
||||
TURN { SWITCH(player, 1); MOVE(opponent, MOVE_SCRATCH); }
|
||||
@ -36,9 +36,9 @@ SINGLE_BATTLE_TEST("Scrappy prevents Intimidate (Gen8+)")
|
||||
|
||||
GIVEN {
|
||||
WITH_CONFIG(CONFIG_UPDATED_INTIMIDATE, GEN_8);
|
||||
PLAYER(SPECIES_EKANS) { Ability(ABILITY_SHED_SKIN); };
|
||||
PLAYER(SPECIES_EKANS) { Ability(ABILITY_INTIMIDATE); };
|
||||
OPPONENT(SPECIES_KANGASKHAN) { Ability(ABILITY_SCRAPPY); };
|
||||
PLAYER(SPECIES_EKANS) { Ability(ABILITY_SHED_SKIN); }
|
||||
PLAYER(SPECIES_EKANS) { Ability(ABILITY_INTIMIDATE); }
|
||||
OPPONENT(SPECIES_KANGASKHAN) { Ability(ABILITY_SCRAPPY); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_SCRATCH); }
|
||||
TURN { SWITCH(player, 1); MOVE(opponent, MOVE_SCRATCH); }
|
||||
@ -62,7 +62,7 @@ SINGLE_BATTLE_TEST("Scrappy allows to hit Ghost-type Pokémon with Normal- and F
|
||||
PARAMETRIZE { move = MOVE_KARATE_CHOP; }
|
||||
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_KANGASKHAN) { Ability(ABILITY_SCRAPPY); };
|
||||
PLAYER(SPECIES_KANGASKHAN) { Ability(ABILITY_SCRAPPY); }
|
||||
OPPONENT(SPECIES_GASTLY);
|
||||
} WHEN {
|
||||
TURN { MOVE(player, move); }
|
||||
@ -79,8 +79,8 @@ SINGLE_BATTLE_TEST("Scrappy doesn't bypass a Ghost-type's Wonder Guard")
|
||||
PARAMETRIZE { move = MOVE_KARATE_CHOP; }
|
||||
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_KANGASKHAN) { Ability(ABILITY_SCRAPPY); };
|
||||
OPPONENT(SPECIES_SHEDINJA) { Ability(ABILITY_WONDER_GUARD); };
|
||||
PLAYER(SPECIES_KANGASKHAN) { Ability(ABILITY_SCRAPPY); }
|
||||
OPPONENT(SPECIES_SHEDINJA) { Ability(ABILITY_WONDER_GUARD); }
|
||||
} WHEN {
|
||||
TURN { MOVE(player, move); }
|
||||
} SCENE {
|
||||
|
||||
@ -68,7 +68,7 @@ SINGLE_BATTLE_TEST("Sheer Force doesn't boost Present", s16 damage)
|
||||
} WHEN {
|
||||
//Test will fail if present heals because the hp change would be 0
|
||||
//so we want a damaging version of present
|
||||
TURN { MOVE(player, MOVE_PRESENT, WITH_RNG(RNG_PRESENT, 1)); }
|
||||
TURN { MOVE(player, MOVE_PRESENT, WITH_RNG(RNG_PRESENT, 1)); }
|
||||
} SCENE {
|
||||
HP_BAR(opponent, captureDamage: &results[i].damage);
|
||||
} FINALLY {
|
||||
@ -219,7 +219,7 @@ SINGLE_BATTLE_TEST("Sheer Force doesn't boost Double Shock", s16 damage)
|
||||
PARAMETRIZE { move = MOVE_CELEBRATE; }
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_PIKACHU);
|
||||
OPPONENT(SPECIES_TAUROS) { Ability(ABILITY_SHEER_FORCE); };
|
||||
OPPONENT(SPECIES_TAUROS) { Ability(ABILITY_SHEER_FORCE); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, move); MOVE(player, MOVE_DOUBLE_SHOCK); }
|
||||
} SCENE {
|
||||
@ -270,7 +270,7 @@ SINGLE_BATTLE_TEST("Sheer Force doesn't boost Aura Wheel", s16 damage)
|
||||
PARAMETRIZE { move = MOVE_CELEBRATE; }
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_MORPEKO);
|
||||
OPPONENT(SPECIES_TAUROS) { Ability(ABILITY_SHEER_FORCE); };
|
||||
OPPONENT(SPECIES_TAUROS) { Ability(ABILITY_SHEER_FORCE); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, move); MOVE(player, MOVE_AURA_WHEEL); }
|
||||
} SCENE {
|
||||
@ -287,7 +287,7 @@ SINGLE_BATTLE_TEST("Sheer Force doesn't boost Hyperspace Fury", s16 damage)
|
||||
PARAMETRIZE { move = MOVE_CELEBRATE; }
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_HOOPA_UNBOUND);
|
||||
OPPONENT(SPECIES_TAUROS) { Ability(ABILITY_SHEER_FORCE); };
|
||||
OPPONENT(SPECIES_TAUROS) { Ability(ABILITY_SHEER_FORCE); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, move); MOVE(player, MOVE_HYPERSPACE_FURY); }
|
||||
} SCENE {
|
||||
@ -664,11 +664,11 @@ DOUBLE_BATTLE_TEST("Sheer Force only boosts the damage of moves it's supposed to
|
||||
case EFFECT_SOLAR_BEAM:
|
||||
case EFFECT_SKY_DROP:
|
||||
TURN { SKIP_TURN(playerLeft); SKIP_TURN(opponentLeft); }
|
||||
TURN { ; }
|
||||
TURN {}
|
||||
break;
|
||||
case EFFECT_FUTURE_SIGHT:
|
||||
TURN { ; }
|
||||
TURN { ; }
|
||||
TURN {}
|
||||
TURN {}
|
||||
break;
|
||||
case EFFECT_BIDE:
|
||||
TURN { MOVE(opponentRight, MOVE_WATER_GUN, target: playerLeft); MOVE(playerRight, MOVE_WATER_GUN, target: opponentLeft); SKIP_TURN(playerLeft); SKIP_TURN(opponentLeft); }
|
||||
@ -752,11 +752,11 @@ DOUBLE_BATTLE_TEST("Sheer Force only boosts the damage of moves it's supposed to
|
||||
case EFFECT_SOLAR_BEAM:
|
||||
case EFFECT_SKY_DROP:
|
||||
TURN { SKIP_TURN(playerLeft); SKIP_TURN(opponentLeft); }
|
||||
TURN { ; }
|
||||
TURN {}
|
||||
break;
|
||||
case EFFECT_FUTURE_SIGHT:
|
||||
TURN { ; }
|
||||
TURN { ; }
|
||||
TURN {}
|
||||
TURN {}
|
||||
break;
|
||||
case EFFECT_BIDE:
|
||||
TURN { MOVE(opponentRight, MOVE_WATER_GUN, target: playerLeft); MOVE(playerRight, MOVE_WATER_GUN, target: opponentLeft); SKIP_TURN(playerLeft); SKIP_TURN(opponentLeft); }
|
||||
@ -840,11 +840,11 @@ DOUBLE_BATTLE_TEST("Sheer Force only boosts the damage of moves it's supposed to
|
||||
case EFFECT_SOLAR_BEAM:
|
||||
case EFFECT_SKY_DROP:
|
||||
TURN { SKIP_TURN(playerLeft); SKIP_TURN(opponentLeft); }
|
||||
TURN { ; }
|
||||
TURN {}
|
||||
break;
|
||||
case EFFECT_FUTURE_SIGHT:
|
||||
TURN { ; }
|
||||
TURN { ; }
|
||||
TURN {}
|
||||
TURN {}
|
||||
break;
|
||||
case EFFECT_BIDE:
|
||||
TURN { MOVE(opponentRight, MOVE_WATER_GUN, target: playerLeft); MOVE(playerRight, MOVE_WATER_GUN, target: opponentLeft); SKIP_TURN(playerLeft); SKIP_TURN(opponentLeft); }
|
||||
@ -928,11 +928,11 @@ DOUBLE_BATTLE_TEST("Sheer Force only boosts the damage of moves it's supposed to
|
||||
case EFFECT_SOLAR_BEAM:
|
||||
case EFFECT_SKY_DROP:
|
||||
TURN { SKIP_TURN(playerLeft); SKIP_TURN(opponentLeft); }
|
||||
TURN { ; }
|
||||
TURN {}
|
||||
break;
|
||||
case EFFECT_FUTURE_SIGHT:
|
||||
TURN { ; }
|
||||
TURN { ; }
|
||||
TURN {}
|
||||
TURN {}
|
||||
break;
|
||||
case EFFECT_BIDE:
|
||||
TURN { MOVE(opponentRight, MOVE_WATER_GUN, target: playerLeft); MOVE(playerRight, MOVE_WATER_GUN, target: opponentLeft); SKIP_TURN(playerLeft); SKIP_TURN(opponentLeft); }
|
||||
@ -1016,11 +1016,11 @@ DOUBLE_BATTLE_TEST("Sheer Force only boosts the damage of moves it's supposed to
|
||||
case EFFECT_SOLAR_BEAM:
|
||||
case EFFECT_SKY_DROP:
|
||||
TURN { SKIP_TURN(playerLeft); SKIP_TURN(opponentLeft); }
|
||||
TURN { ; }
|
||||
TURN {}
|
||||
break;
|
||||
case EFFECT_FUTURE_SIGHT:
|
||||
TURN { ; }
|
||||
TURN { ; }
|
||||
TURN {}
|
||||
TURN {}
|
||||
break;
|
||||
case EFFECT_BIDE:
|
||||
TURN { MOVE(opponentRight, MOVE_WATER_GUN, target: playerLeft); MOVE(playerRight, MOVE_WATER_GUN, target: opponentLeft); SKIP_TURN(playerLeft); SKIP_TURN(opponentLeft); }
|
||||
@ -1104,11 +1104,11 @@ DOUBLE_BATTLE_TEST("Sheer Force only boosts the damage of moves it's supposed to
|
||||
case EFFECT_SOLAR_BEAM:
|
||||
case EFFECT_SKY_DROP:
|
||||
TURN { SKIP_TURN(playerLeft); SKIP_TURN(opponentLeft); }
|
||||
TURN { ; }
|
||||
TURN {}
|
||||
break;
|
||||
case EFFECT_FUTURE_SIGHT:
|
||||
TURN { ; }
|
||||
TURN { ; }
|
||||
TURN {}
|
||||
TURN {}
|
||||
break;
|
||||
case EFFECT_BIDE:
|
||||
TURN { MOVE(opponentRight, MOVE_WATER_GUN, target: playerLeft); MOVE(playerRight, MOVE_WATER_GUN, target: opponentLeft); SKIP_TURN(playerLeft); SKIP_TURN(opponentLeft); }
|
||||
@ -1192,11 +1192,11 @@ DOUBLE_BATTLE_TEST("Sheer Force only boosts the damage of moves it's supposed to
|
||||
case EFFECT_SOLAR_BEAM:
|
||||
case EFFECT_SKY_DROP:
|
||||
TURN { SKIP_TURN(playerLeft); SKIP_TURN(opponentLeft); }
|
||||
TURN { ; }
|
||||
TURN {}
|
||||
break;
|
||||
case EFFECT_FUTURE_SIGHT:
|
||||
TURN { ; }
|
||||
TURN { ; }
|
||||
TURN {}
|
||||
TURN {}
|
||||
break;
|
||||
case EFFECT_BIDE:
|
||||
TURN { MOVE(opponentRight, MOVE_WATER_GUN, target: playerLeft); MOVE(playerRight, MOVE_WATER_GUN, target: opponentLeft); SKIP_TURN(playerLeft); SKIP_TURN(opponentLeft); }
|
||||
@ -1280,11 +1280,11 @@ DOUBLE_BATTLE_TEST("Sheer Force only boosts the damage of moves it's supposed to
|
||||
case EFFECT_SOLAR_BEAM:
|
||||
case EFFECT_SKY_DROP:
|
||||
TURN { SKIP_TURN(playerLeft); SKIP_TURN(opponentLeft); }
|
||||
TURN { ; }
|
||||
TURN {}
|
||||
break;
|
||||
case EFFECT_FUTURE_SIGHT:
|
||||
TURN { ; }
|
||||
TURN { ; }
|
||||
TURN {}
|
||||
TURN {}
|
||||
break;
|
||||
case EFFECT_BIDE:
|
||||
TURN { MOVE(opponentRight, MOVE_WATER_GUN, target: playerLeft); MOVE(playerRight, MOVE_WATER_GUN, target: opponentLeft); SKIP_TURN(playerLeft); SKIP_TURN(opponentLeft); }
|
||||
@ -1369,11 +1369,11 @@ DOUBLE_BATTLE_TEST("Sheer Force only boosts the damage of moves it's supposed to
|
||||
case EFFECT_SOLAR_BEAM:
|
||||
case EFFECT_SKY_DROP:
|
||||
TURN { SKIP_TURN(playerLeft); SKIP_TURN(opponentLeft); }
|
||||
TURN { ; }
|
||||
TURN {}
|
||||
break;
|
||||
case EFFECT_FUTURE_SIGHT:
|
||||
TURN { ; }
|
||||
TURN { ; }
|
||||
TURN {}
|
||||
TURN {}
|
||||
break;
|
||||
case EFFECT_BIDE:
|
||||
TURN { MOVE(opponentRight, MOVE_WATER_GUN, target: playerLeft); MOVE(playerRight, MOVE_WATER_GUN, target: opponentLeft); SKIP_TURN(playerLeft); SKIP_TURN(opponentLeft); }
|
||||
|
||||
@ -41,7 +41,7 @@ SINGLE_BATTLE_TEST("Minior Core transforms into Minior Meteor on battle start if
|
||||
PLAYER(SPECIES_WYNAUT);
|
||||
OPPONENT(SPECIES_MINIOR_CORE) { Ability(ABILITY_SHIELDS_DOWN); HP(51); MaxHP(101); }
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ABILITY_POPUP(opponent, ABILITY_SHIELDS_DOWN);
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, opponent);
|
||||
|
||||
@ -20,8 +20,8 @@ SINGLE_BATTLE_TEST("Stamina raises Defense by 1 when hit by a move")
|
||||
s16 turnOneHit, turnTwoHit;
|
||||
u16 move;
|
||||
|
||||
PARAMETRIZE {move = MOVE_SCRATCH; }
|
||||
PARAMETRIZE {move = MOVE_GUST; }
|
||||
PARAMETRIZE { move = MOVE_SCRATCH; }
|
||||
PARAMETRIZE { move = MOVE_GUST; }
|
||||
|
||||
GIVEN {
|
||||
ASSUME(!IsBattleMoveStatus(MOVE_SCRATCH));
|
||||
@ -51,18 +51,18 @@ DOUBLE_BATTLE_TEST("Stamina activates correctly for every battler with the abili
|
||||
{
|
||||
enum Ability abilityLeft, abilityRight;
|
||||
|
||||
PARAMETRIZE {abilityLeft = ABILITY_NONE, abilityRight = ABILITY_STAMINA; }
|
||||
PARAMETRIZE {abilityLeft = ABILITY_STAMINA, abilityRight = ABILITY_NONE; }
|
||||
PARAMETRIZE {abilityLeft = ABILITY_STAMINA, abilityRight = ABILITY_STAMINA; }
|
||||
PARAMETRIZE { abilityLeft = ABILITY_NONE, abilityRight = ABILITY_STAMINA; }
|
||||
PARAMETRIZE { abilityLeft = ABILITY_STAMINA, abilityRight = ABILITY_NONE; }
|
||||
PARAMETRIZE { abilityLeft = ABILITY_STAMINA, abilityRight = ABILITY_STAMINA; }
|
||||
|
||||
GIVEN {
|
||||
ASSUME(GetMoveTarget(MOVE_EARTHQUAKE) == MOVE_TARGET_FOES_AND_ALLY);
|
||||
PLAYER(SPECIES_WOBBUFFET) { Ability(abilityLeft); Speed(10); }
|
||||
PLAYER(SPECIES_WOBBUFFET) { Ability(abilityRight); Speed(5); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) {Speed(20); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) {Speed(15); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Speed(20); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Speed(15); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponentLeft, MOVE_EARTHQUAKE);}
|
||||
TURN { MOVE(opponentLeft, MOVE_EARTHQUAKE); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_EARTHQUAKE, opponentLeft);
|
||||
|
||||
|
||||
@ -63,7 +63,7 @@ DOUBLE_BATTLE_TEST("Stench doesn't trigger if partner uses a move")
|
||||
PLAYER(SPECIES_WOBBUFFET) { Speed(20); }
|
||||
PLAYER(SPECIES_WYNAUT) { Speed(10); }
|
||||
OPPONENT(SPECIES_GRIMER) { Speed(100); Ability(ABILITY_STENCH); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) {Speed(50); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Speed(50); }
|
||||
} WHEN {
|
||||
TURN {
|
||||
MOVE(playerLeft, MOVE_FAKE_OUT, target: opponentLeft);
|
||||
|
||||
@ -12,7 +12,7 @@ SINGLE_BATTLE_TEST("Super Luck increases the critical hit ratio by 1 stage")
|
||||
GIVEN {
|
||||
ASSUME(GetSpeciesBaseSpeed(SPECIES_TOGEPI) == 20);
|
||||
WITH_CONFIG(CONFIG_CRIT_CHANCE, genConfig);
|
||||
PLAYER(SPECIES_TOGEPI) { Ability(ABILITY_SUPER_LUCK); };
|
||||
PLAYER(SPECIES_TOGEPI) { Ability(ABILITY_SUPER_LUCK); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_SCRATCH); }
|
||||
|
||||
@ -34,7 +34,7 @@ DOUBLE_BATTLE_TEST("Supersweet Syrup lowers evasion of both opposing mon's in ba
|
||||
OPPONENT(SPECIES_DIPPLIN) { Ability(ABILITY_SUPERSWEET_SYRUP); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ABILITY_POPUP(opponentLeft, ABILITY_SUPERSWEET_SYRUP);
|
||||
MESSAGE("A supersweet aroma is wafting from the syrup covering the opposing Dipplin!");
|
||||
|
||||
@ -96,7 +96,7 @@ SINGLE_BATTLE_TEST("Supreme Overlord's message displays correctly after all batt
|
||||
{
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_EXPLOSION) == EFFECT_EXPLOSION);
|
||||
PLAYER(SPECIES_WOBBUFFET) { HP(1);}
|
||||
PLAYER(SPECIES_WOBBUFFET) { HP(1); }
|
||||
PLAYER(SPECIES_KINGAMBIT) { Ability(ABILITY_SUPREME_OVERLORD); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
@ -119,7 +119,7 @@ SINGLE_BATTLE_TEST("Supreme Overlord's message displays correctly after all batt
|
||||
ASSUME(GetMoveEffect(MOVE_EXPLOSION) == EFFECT_EXPLOSION);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET) { HP(1);}
|
||||
OPPONENT(SPECIES_WOBBUFFET) { HP(1); }
|
||||
OPPONENT(SPECIES_KINGAMBIT) { Ability(ABILITY_SUPREME_OVERLORD); }
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_EXPLOSION); SEND_OUT(player, 1); SEND_OUT(opponent, 1); }
|
||||
|
||||
@ -34,7 +34,7 @@ SINGLE_BATTLE_TEST("Sword of Ruin's message displays correctly after all battler
|
||||
{
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_EXPLOSION) == EFFECT_EXPLOSION);
|
||||
PLAYER(SPECIES_WOBBUFFET) { HP(1);}
|
||||
PLAYER(SPECIES_WOBBUFFET) { HP(1); }
|
||||
PLAYER(SPECIES_CHIEN_PAO);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
@ -58,7 +58,7 @@ SINGLE_BATTLE_TEST("Sword of Ruin's message displays correctly after all battler
|
||||
ASSUME(GetMoveEffect(MOVE_EXPLOSION) == EFFECT_EXPLOSION);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET) { HP(1);}
|
||||
OPPONENT(SPECIES_WOBBUFFET) { HP(1); }
|
||||
OPPONENT(SPECIES_CHIEN_PAO);
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_EXPLOSION); SEND_OUT(player, 1); SEND_OUT(opponent, 1); }
|
||||
|
||||
@ -34,7 +34,7 @@ SINGLE_BATTLE_TEST("Tablets of Ruin's message displays correctly after all battl
|
||||
{
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_EXPLOSION) == EFFECT_EXPLOSION);
|
||||
PLAYER(SPECIES_WOBBUFFET) { HP(1);}
|
||||
PLAYER(SPECIES_WOBBUFFET) { HP(1); }
|
||||
PLAYER(SPECIES_WO_CHIEN);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
@ -58,7 +58,7 @@ SINGLE_BATTLE_TEST("Tablets of Ruin's message displays correctly after all battl
|
||||
ASSUME(GetMoveEffect(MOVE_EXPLOSION) == EFFECT_EXPLOSION);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET) { HP(1);}
|
||||
OPPONENT(SPECIES_WOBBUFFET) { HP(1); }
|
||||
OPPONENT(SPECIES_WO_CHIEN);
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_EXPLOSION); SEND_OUT(player, 1); SEND_OUT(opponent, 1); }
|
||||
|
||||
@ -89,7 +89,7 @@ SINGLE_BATTLE_TEST("Tangling Hair does not trigger on Clear Body")
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_DUGTRIO) { Ability(ABILITY_TANGLING_HAIR); }
|
||||
OPPONENT(SPECIES_BELDUM) { Ability(ABILITY_CLEAR_BODY); };
|
||||
OPPONENT(SPECIES_BELDUM) { Ability(ABILITY_CLEAR_BODY); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_SCRATCH); }
|
||||
} SCENE {
|
||||
@ -103,7 +103,7 @@ SINGLE_BATTLE_TEST("Tangling Hair will trigger if move is boosted by Sheer Force
|
||||
ASSUME(MoveIsAffectedBySheerForce(MOVE_POISON_JAB));
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_DUGTRIO) { Ability(ABILITY_TANGLING_HAIR); }
|
||||
OPPONENT(SPECIES_NIDOKING) { Ability(ABILITY_SHEER_FORCE); };
|
||||
OPPONENT(SPECIES_NIDOKING) { Ability(ABILITY_SHEER_FORCE); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_POISON_JAB); }
|
||||
} SCENE {
|
||||
|
||||
@ -7,7 +7,7 @@ SINGLE_BATTLE_TEST("Tera Shell makes all moves against Terapagos not very effect
|
||||
PARAMETRIZE { hp = 100; }
|
||||
PARAMETRIZE { hp = 99; }
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_TERAPAGOS_TERASTAL) { Ability(ABILITY_TERA_SHELL); HP(hp); MaxHP(100);}
|
||||
PLAYER(SPECIES_TERAPAGOS_TERASTAL) { Ability(ABILITY_TERA_SHELL); HP(hp); MaxHP(100); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_SCRATCH); }
|
||||
|
||||
@ -7,7 +7,7 @@ SINGLE_BATTLE_TEST("Tera Shift transforms Terapagos into its Terastal form on sw
|
||||
PLAYER(SPECIES_TERAPAGOS_NORMAL) { Ability(ABILITY_TERA_SHIFT); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
TURN { ; }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ABILITY_POPUP(player, ABILITY_TERA_SHIFT);
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_FORM_CHANGE, player);
|
||||
@ -23,7 +23,7 @@ SINGLE_BATTLE_TEST("Tera Shift can't be suppressed by Neutralizing Gas")
|
||||
PLAYER(SPECIES_TERAPAGOS_NORMAL) { Ability(ABILITY_TERA_SHIFT); }
|
||||
OPPONENT(SPECIES_KOFFING) { Ability(ABILITY_NEUTRALIZING_GAS); }
|
||||
} WHEN {
|
||||
TURN { ; }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ABILITY_POPUP(opponent, ABILITY_NEUTRALIZING_GAS);
|
||||
ABILITY_POPUP(player, ABILITY_TERA_SHIFT);
|
||||
|
||||
@ -6,8 +6,8 @@ DOUBLE_BATTLE_TEST("Teraform Zero clears weather and terrain upon activation")
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_TERAPAGOS_TERASTAL);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_KYOGRE) {Ability(ABILITY_DRIZZLE); }
|
||||
OPPONENT(SPECIES_TAPU_KOKO) {Ability(ABILITY_ELECTRIC_SURGE); }
|
||||
OPPONENT(SPECIES_KYOGRE) { Ability(ABILITY_DRIZZLE); }
|
||||
OPPONENT(SPECIES_TAPU_KOKO) { Ability(ABILITY_ELECTRIC_SURGE); }
|
||||
} WHEN {
|
||||
TURN { MOVE(playerLeft, MOVE_CELEBRATE, gimmick: GIMMICK_TERA); }
|
||||
} SCENE {
|
||||
@ -22,9 +22,9 @@ DOUBLE_BATTLE_TEST("Teraform Zero can be supressed")
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_TERAPAGOS_TERASTAL);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
PLAYER(SPECIES_WEEZING) {Ability(ABILITY_NEUTRALIZING_GAS); }
|
||||
OPPONENT(SPECIES_KYOGRE) {Ability(ABILITY_DRIZZLE); }
|
||||
OPPONENT(SPECIES_TAPU_KOKO) {Ability(ABILITY_ELECTRIC_SURGE); }
|
||||
PLAYER(SPECIES_WEEZING) { Ability(ABILITY_NEUTRALIZING_GAS); }
|
||||
OPPONENT(SPECIES_KYOGRE) { Ability(ABILITY_DRIZZLE); }
|
||||
OPPONENT(SPECIES_TAPU_KOKO) { Ability(ABILITY_ELECTRIC_SURGE); }
|
||||
} WHEN {
|
||||
TURN { SWITCH(playerRight, 2); MOVE(playerLeft, MOVE_CELEBRATE, gimmick: GIMMICK_TERA); }
|
||||
} SCENE {
|
||||
@ -87,10 +87,10 @@ DOUBLE_BATTLE_TEST("Teraform Zero shouldn't cause Neutralizing Gas to show it's
|
||||
{
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_TERAPAGOS_TERASTAL);
|
||||
PLAYER(SPECIES_ABSOL) {Ability(ABILITY_PRESSURE); }
|
||||
PLAYER(SPECIES_WEEZING) {Ability(ABILITY_NEUTRALIZING_GAS); }
|
||||
OPPONENT(SPECIES_KYOGRE) {Ability(ABILITY_DRIZZLE); }
|
||||
OPPONENT(SPECIES_TAPU_KOKO) {Ability(ABILITY_ELECTRIC_SURGE); }
|
||||
PLAYER(SPECIES_ABSOL) { Ability(ABILITY_PRESSURE); }
|
||||
PLAYER(SPECIES_WEEZING) { Ability(ABILITY_NEUTRALIZING_GAS); }
|
||||
OPPONENT(SPECIES_KYOGRE) { Ability(ABILITY_DRIZZLE); }
|
||||
OPPONENT(SPECIES_TAPU_KOKO) { Ability(ABILITY_ELECTRIC_SURGE); }
|
||||
} WHEN {
|
||||
TURN { SWITCH(playerRight, 2); MOVE(playerLeft, MOVE_CELEBRATE, gimmick: GIMMICK_TERA); }
|
||||
} SCENE {
|
||||
|
||||
@ -11,8 +11,8 @@ SINGLE_BATTLE_TEST("Toxic Debris sets Toxic Spikes on the opposing side if hit b
|
||||
{
|
||||
u32 move;
|
||||
|
||||
PARAMETRIZE { move = MOVE_SCRATCH;}
|
||||
PARAMETRIZE { move = MOVE_SWIFT;}
|
||||
PARAMETRIZE { move = MOVE_SCRATCH; }
|
||||
PARAMETRIZE { move = MOVE_SWIFT; }
|
||||
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_GLIMMORA) { Ability(ABILITY_TOXIC_DEBRIS); }
|
||||
|
||||
@ -7,7 +7,7 @@ SINGLE_BATTLE_TEST("Trace copies opponents ability")
|
||||
PLAYER(SPECIES_RALTS) { Ability(ABILITY_TRACE); }
|
||||
OPPONENT(SPECIES_TORCHIC) { Ability(ABILITY_BLAZE); }
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ABILITY_POPUP(player, ABILITY_TRACE);
|
||||
MESSAGE("It traced the opposing Torchic's Blaze!");
|
||||
@ -48,7 +48,7 @@ DOUBLE_BATTLE_TEST("Trace copies opponents ability randomly")
|
||||
{
|
||||
enum Ability ability1, ability2;
|
||||
|
||||
PARAMETRIZE { ability1 = ABILITY_SPEED_BOOST; ability2 = ABILITY_BLAZE;}
|
||||
PARAMETRIZE { ability1 = ABILITY_SPEED_BOOST; ability2 = ABILITY_BLAZE; }
|
||||
PARAMETRIZE { ability1 = ABILITY_BLAZE; ability2 = ABILITY_SPEED_BOOST; }
|
||||
|
||||
PASSES_RANDOMLY(1, 2, RNG_TRACE);
|
||||
@ -58,7 +58,7 @@ DOUBLE_BATTLE_TEST("Trace copies opponents ability randomly")
|
||||
OPPONENT(SPECIES_TORCHIC) { Ability(ability1); }
|
||||
OPPONENT(SPECIES_TORCHIC) { Ability(ability2); }
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ABILITY_POPUP(playerLeft, ABILITY_TRACE);
|
||||
MESSAGE("It traced the opposing Torchic's Blaze!");
|
||||
@ -87,7 +87,7 @@ SINGLE_BATTLE_TEST("Trace copies opponent's Intimidate and triggers it immediate
|
||||
PLAYER(SPECIES_RALTS) { Ability(ABILITY_TRACE); }
|
||||
OPPONENT(SPECIES_MASQUERAIN) { Ability(ABILITY_INTIMIDATE); }
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ABILITY_POPUP(player, ABILITY_TRACE);
|
||||
ABILITY_POPUP(player, ABILITY_INTIMIDATE);
|
||||
@ -103,7 +103,7 @@ DOUBLE_BATTLE_TEST("Trace respects the turn order")
|
||||
OPPONENT(SPECIES_HIPPOWDON) { Speed(10); Ability(ABILITY_SAND_STREAM); }
|
||||
OPPONENT(SPECIES_DEOXYS_SPEED) { Speed(30); Ability(ABILITY_PRESSURE); }
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ABILITY_POPUP(playerLeft, ABILITY_PRESSURE);
|
||||
ABILITY_POPUP(opponentRight, ABILITY_PRESSURE);
|
||||
|
||||
@ -11,7 +11,7 @@ SINGLE_BATTLE_TEST("Unburden doubles speed once user uses item")
|
||||
OPPONENT(SPECIES_RILLABOOM) { Speed(7); Ability(ABILITY_GRASSY_SURGE); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_U_TURN); SEND_OUT(opponent, 1); }
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_U_TURN, opponent);
|
||||
ABILITY_POPUP(opponent, ABILITY_GRASSY_SURGE);
|
||||
@ -31,7 +31,7 @@ SINGLE_BATTLE_TEST("Unburden doubles speed once user gets their item knocked off
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Speed(7); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_KNOCK_OFF); }
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_KNOCK_OFF, opponent);
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ITEM_KNOCKOFF, player);
|
||||
@ -53,7 +53,7 @@ SINGLE_BATTLE_TEST("Unburden doesn't activate when item is consumed in Neutraliz
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_KNOCK_OFF); }
|
||||
TURN { MOVE(opponent, MOVE_U_TURN); SEND_OUT(opponent, 1); }
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ABILITY_POPUP(opponent, ABILITY_NEUTRALIZING_GAS);
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_KNOCK_OFF, opponent);
|
||||
@ -81,7 +81,7 @@ SINGLE_BATTLE_TEST("Unburden doubling speed effect is ignored by Neutralizing Ga
|
||||
TURN { MOVE(opponent, MOVE_KNOCK_OFF); }
|
||||
TURN { MOVE(opponent, MOVE_U_TURN); SEND_OUT(opponent, 1); }
|
||||
TURN { MOVE(opponent, MOVE_U_TURN); SEND_OUT(opponent, 0); }
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_KNOCK_OFF, opponent);
|
||||
ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_ITEM_KNOCKOFF, player);
|
||||
|
||||
@ -13,7 +13,7 @@ SINGLE_BATTLE_TEST("Unnerve prevents opposing Pokémon from eating their own ber
|
||||
PLAYER(mon) { Ability(ability); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Item(ITEM_RAWST_BERRY); Status1(STATUS1_BURN); }
|
||||
} WHEN {
|
||||
TURN { }
|
||||
TURN {}
|
||||
} SCENE {
|
||||
ABILITY_POPUP(player, ability);
|
||||
NOT ANIMATION(ANIM_TYPE_GENERAL, B_ANIM_HELD_ITEM_EFFECT, opponent);
|
||||
@ -104,7 +104,7 @@ DOUBLE_BATTLE_TEST("Unnerve stops applying on death but applies on revive")
|
||||
{
|
||||
u16 mon;
|
||||
u16 ability;
|
||||
PARAMETRIZE { mon = SPECIES_JOLTIK, ability = ABILITY_UNNERVE;}
|
||||
PARAMETRIZE { mon = SPECIES_JOLTIK, ability = ABILITY_UNNERVE; }
|
||||
PARAMETRIZE { mon = SPECIES_CALYREX_ICE, ability = ABILITY_AS_ONE_ICE_RIDER; }
|
||||
GIVEN {
|
||||
ASSUME(gItemsInfo[ITEM_RAWST_BERRY].holdEffect == HOLD_EFFECT_CURE_BRN);
|
||||
|
||||
@ -34,7 +34,7 @@ SINGLE_BATTLE_TEST("Vessel of Ruin's message displays correctly after all battle
|
||||
{
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_EXPLOSION) == EFFECT_EXPLOSION);
|
||||
PLAYER(SPECIES_WOBBUFFET) { HP(1);}
|
||||
PLAYER(SPECIES_WOBBUFFET) { HP(1); }
|
||||
PLAYER(SPECIES_TING_LU);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
@ -58,7 +58,7 @@ SINGLE_BATTLE_TEST("Vessel of Ruin's message displays correctly after all battle
|
||||
ASSUME(GetMoveEffect(MOVE_EXPLOSION) == EFFECT_EXPLOSION);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET) { HP(1);}
|
||||
OPPONENT(SPECIES_WOBBUFFET) { HP(1); }
|
||||
OPPONENT(SPECIES_TING_LU);
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_EXPLOSION); SEND_OUT(player, 1); SEND_OUT(opponent, 1); }
|
||||
|
||||
@ -21,12 +21,12 @@ SINGLE_BATTLE_TEST("Wind Power sets up Charge for player when hit by a wind move
|
||||
s16 dmgBefore, dmgAfter;
|
||||
u16 move;
|
||||
|
||||
PARAMETRIZE {move = MOVE_SCRATCH; }
|
||||
PARAMETRIZE {move = MOVE_AIR_CUTTER; }
|
||||
PARAMETRIZE { move = MOVE_SCRATCH; }
|
||||
PARAMETRIZE { move = MOVE_AIR_CUTTER; }
|
||||
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WATTREL) { Ability(ABILITY_WIND_POWER); Speed(10); }
|
||||
OPPONENT(SPECIES_PERSIAN) {Ability(ABILITY_LIMBER); Speed(5) ;} // Limber, so it doesn't get paralyzed.
|
||||
OPPONENT(SPECIES_PERSIAN) { Ability(ABILITY_LIMBER); Speed(5); } // Limber, so it doesn't get paralyzed.
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_NUZZLE), MOVE(opponent, move); }
|
||||
TURN { MOVE(player, MOVE_NUZZLE), MOVE(opponent, move); }
|
||||
@ -66,11 +66,11 @@ SINGLE_BATTLE_TEST("Wind Power sets up Charge for opponent when hit by a wind mo
|
||||
s16 dmgBefore, dmgAfter;
|
||||
u16 move;
|
||||
|
||||
PARAMETRIZE {move = MOVE_SCRATCH; }
|
||||
PARAMETRIZE {move = MOVE_AIR_CUTTER; }
|
||||
PARAMETRIZE { move = MOVE_SCRATCH; }
|
||||
PARAMETRIZE { move = MOVE_AIR_CUTTER; }
|
||||
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_PERSIAN) {Ability(ABILITY_LIMBER); Speed(5) ;} // Limber, so it doesn't get paralyzed.
|
||||
PLAYER(SPECIES_PERSIAN) { Ability(ABILITY_LIMBER); Speed(5); } // Limber, so it doesn't get paralyzed.
|
||||
OPPONENT(SPECIES_WATTREL) { Ability(ABILITY_WIND_POWER); Speed(10); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_NUZZLE), MOVE(player, move); }
|
||||
@ -111,12 +111,12 @@ SINGLE_BATTLE_TEST("Wind Power sets up Charge for only one attack when hit by a
|
||||
s16 dmgCharged, dmgAfter;
|
||||
u16 move;
|
||||
|
||||
PARAMETRIZE {move = MOVE_SCRATCH; }
|
||||
PARAMETRIZE {move = MOVE_AIR_CUTTER; }
|
||||
PARAMETRIZE { move = MOVE_SCRATCH; }
|
||||
PARAMETRIZE { move = MOVE_AIR_CUTTER; }
|
||||
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WATTREL) { Ability(ABILITY_WIND_POWER); Speed(5); }
|
||||
OPPONENT(SPECIES_PERSIAN) {Ability(ABILITY_LIMBER); Speed(10) ;} // Limber, so it doesn't get paralyzed.
|
||||
OPPONENT(SPECIES_PERSIAN) { Ability(ABILITY_LIMBER); Speed(10); } // Limber, so it doesn't get paralyzed.
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, move); MOVE(player, MOVE_NUZZLE); }
|
||||
TURN { MOVE(player, MOVE_NUZZLE); }
|
||||
@ -148,9 +148,9 @@ DOUBLE_BATTLE_TEST("Wind Power activates correctly for every battler with the ab
|
||||
{
|
||||
enum Ability abilityLeft, abilityRight;
|
||||
|
||||
PARAMETRIZE {abilityLeft = ABILITY_NONE, abilityRight = ABILITY_WIND_POWER;}
|
||||
PARAMETRIZE {abilityLeft = ABILITY_WIND_POWER, abilityRight = ABILITY_NONE; }
|
||||
PARAMETRIZE {abilityLeft = ABILITY_WIND_POWER, abilityRight = ABILITY_WIND_POWER; }
|
||||
PARAMETRIZE { abilityLeft = ABILITY_NONE, abilityRight = ABILITY_WIND_POWER; }
|
||||
PARAMETRIZE { abilityLeft = ABILITY_WIND_POWER, abilityRight = ABILITY_NONE; }
|
||||
PARAMETRIZE { abilityLeft = ABILITY_WIND_POWER, abilityRight = ABILITY_WIND_POWER; }
|
||||
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WATTREL) { Ability(abilityLeft); Speed(10); }
|
||||
@ -158,7 +158,7 @@ DOUBLE_BATTLE_TEST("Wind Power activates correctly for every battler with the ab
|
||||
OPPONENT(SPECIES_PERSIAN) { Ability(ABILITY_LIMBER); Speed(20); }
|
||||
OPPONENT(SPECIES_PERSIAN) { Ability(ABILITY_LIMBER); Speed(15); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponentLeft, MOVE_AIR_CUTTER); MOVE(opponentRight, MOVE_AIR_CUTTER);}
|
||||
TURN { MOVE(opponentLeft, MOVE_AIR_CUTTER); MOVE(opponentRight, MOVE_AIR_CUTTER); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_AIR_CUTTER, opponentLeft);
|
||||
|
||||
@ -189,9 +189,9 @@ DOUBLE_BATTLE_TEST("Wind Power activates correctly for every battler with the ab
|
||||
{
|
||||
enum Ability abilityLeft, abilityRight;
|
||||
|
||||
PARAMETRIZE {abilityLeft = ABILITY_NONE, abilityRight = ABILITY_WIND_POWER; }
|
||||
PARAMETRIZE {abilityLeft = ABILITY_WIND_POWER, abilityRight = ABILITY_NONE; }
|
||||
PARAMETRIZE {abilityLeft = ABILITY_WIND_POWER, abilityRight = ABILITY_WIND_POWER; }
|
||||
PARAMETRIZE { abilityLeft = ABILITY_NONE, abilityRight = ABILITY_WIND_POWER; }
|
||||
PARAMETRIZE { abilityLeft = ABILITY_WIND_POWER, abilityRight = ABILITY_NONE; }
|
||||
PARAMETRIZE { abilityLeft = ABILITY_WIND_POWER, abilityRight = ABILITY_WIND_POWER; }
|
||||
|
||||
GIVEN {
|
||||
PLAYER(SPECIES_WATTREL) { Ability(abilityLeft); Speed(10); }
|
||||
@ -199,7 +199,7 @@ DOUBLE_BATTLE_TEST("Wind Power activates correctly for every battler with the ab
|
||||
OPPONENT(SPECIES_PERSIAN) { Ability(ABILITY_LIMBER); Speed(20); }
|
||||
OPPONENT(SPECIES_PERSIAN) { Ability(ABILITY_LIMBER); Speed(15); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponentLeft, MOVE_PETAL_BLIZZARD);}
|
||||
TURN { MOVE(opponentLeft, MOVE_PETAL_BLIZZARD); }
|
||||
} SCENE {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_PETAL_BLIZZARD, opponentLeft);
|
||||
|
||||
@ -228,8 +228,8 @@ DOUBLE_BATTLE_TEST("Wind Power activates correctly when Tailwind is used")
|
||||
{
|
||||
bool8 opponentSide;
|
||||
|
||||
PARAMETRIZE {opponentSide = TRUE;}
|
||||
PARAMETRIZE {opponentSide = FALSE;}
|
||||
PARAMETRIZE { opponentSide = TRUE; }
|
||||
PARAMETRIZE { opponentSide = FALSE; }
|
||||
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_TAILWIND) == EFFECT_TAILWIND);
|
||||
@ -238,7 +238,7 @@ DOUBLE_BATTLE_TEST("Wind Power activates correctly when Tailwind is used")
|
||||
OPPONENT(SPECIES_WATTREL) { Ability(ABILITY_WIND_POWER); Speed(20); }
|
||||
OPPONENT(SPECIES_WATTREL) { Ability(ABILITY_WIND_POWER); Speed(15); }
|
||||
} WHEN {
|
||||
TURN { MOVE((opponentSide == TRUE) ? opponentLeft : playerLeft, MOVE_TAILWIND);}
|
||||
TURN { MOVE((opponentSide == TRUE) ? opponentLeft : playerLeft, MOVE_TAILWIND); }
|
||||
} SCENE {
|
||||
if (opponentSide) {
|
||||
ANIMATION(ANIM_TYPE_MOVE, MOVE_TAILWIND, opponentLeft);
|
||||
|
||||
@ -141,7 +141,7 @@ SINGLE_BATTLE_TEST("Zero to Hero's message displays correctly after all battlers
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_EXPLOSION) == EFFECT_EXPLOSION);
|
||||
PLAYER(SPECIES_PALAFIN_ZERO);
|
||||
PLAYER(SPECIES_WOBBUFFET) { HP(1);}
|
||||
PLAYER(SPECIES_WOBBUFFET) { HP(1); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
@ -166,7 +166,7 @@ SINGLE_BATTLE_TEST("Zero to Hero's message displays correctly after all battlers
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_PALAFIN_ZERO);
|
||||
OPPONENT(SPECIES_WOBBUFFET) { HP(1);}
|
||||
OPPONENT(SPECIES_WOBBUFFET) { HP(1); }
|
||||
} WHEN {
|
||||
TURN { MOVE(opponent, MOVE_FLIP_TURN); SEND_OUT(opponent, 1); }
|
||||
TURN { MOVE(opponent, MOVE_CELEBRATE); MOVE(player, MOVE_EXPLOSION); SEND_OUT(player, 1); SEND_OUT(opponent, 0); }
|
||||
|
||||
@ -236,7 +236,7 @@ AI_SINGLE_BATTLE_TEST("AI prefers moves with the best possible score, chosen ran
|
||||
{
|
||||
GIVEN {
|
||||
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT);
|
||||
PLAYER(SPECIES_WOBBUFFET) { HP(5); };
|
||||
PLAYER(SPECIES_WOBBUFFET) { HP(5); }
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_THUNDERBOLT, MOVE_SLUDGE_BOMB, MOVE_TAKE_DOWN); }
|
||||
} WHEN {
|
||||
@ -253,7 +253,7 @@ AI_SINGLE_BATTLE_TEST("AI can choose a status move that boosts the attack by two
|
||||
ASSUME(GetMoveCategory(MOVE_STRENGTH) == DAMAGE_CATEGORY_PHYSICAL);
|
||||
ASSUME(GetMoveCategory(MOVE_HORN_ATTACK) == DAMAGE_CATEGORY_PHYSICAL);
|
||||
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT);
|
||||
PLAYER(SPECIES_WOBBUFFET) { HP(277); };
|
||||
PLAYER(SPECIES_WOBBUFFET) { HP(277); }
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_KANGASKHAN) { Moves(MOVE_STRENGTH, MOVE_HORN_ATTACK, MOVE_SWORDS_DANCE); }
|
||||
} WHEN {
|
||||
@ -292,7 +292,7 @@ AI_SINGLE_BATTLE_TEST("AI chooses the safest option to faint the target, taking
|
||||
OPPONENT(SPECIES_GEODUDE) { Moves(move1, move2, move3, move4); Ability(abilityAtk); Item(holdItemAtk); }
|
||||
} WHEN {
|
||||
TURN { if (expectedMove2 == MOVE_NONE) { EXPECT_MOVE(opponent, expectedMove); SEND_OUT(player, 1); }
|
||||
else {EXPECT_MOVES(opponent, expectedMove, expectedMove2); SCORE_EQ(opponent, expectedMove, expectedMove2); SEND_OUT(player, 1);}
|
||||
else { EXPECT_MOVES(opponent, expectedMove, expectedMove2); SCORE_EQ(opponent, expectedMove, expectedMove2); SEND_OUT(player, 1); }
|
||||
}
|
||||
}
|
||||
SCENE {
|
||||
@ -322,7 +322,7 @@ AI_SINGLE_BATTLE_TEST("AI chooses the safest option to faint the target, taking
|
||||
OPPONENT(SPECIES_GEODUDE) { Moves(move1, move2, move3, move4); Ability(abilityAtk); Item(holdItemAtk); }
|
||||
} WHEN {
|
||||
TURN { if (expectedMove2 == MOVE_NONE) { EXPECT_MOVE(opponent, expectedMove); SEND_OUT(player, 1); }
|
||||
else {EXPECT_MOVES(opponent, expectedMove, expectedMove2); SCORE_EQ(opponent, expectedMove, expectedMove2); SEND_OUT(player, 1);}
|
||||
else { EXPECT_MOVES(opponent, expectedMove, expectedMove2); SCORE_EQ(opponent, expectedMove, expectedMove2); SEND_OUT(player, 1); }
|
||||
}
|
||||
}
|
||||
SCENE {
|
||||
@ -490,7 +490,7 @@ AI_SINGLE_BATTLE_TEST("AI will only choose Surf 1/3 times if the opposing mon ha
|
||||
GIVEN {
|
||||
ASSUME(GetMoveType(MOVE_THUNDERBOLT) == TYPE_ELECTRIC);
|
||||
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT);
|
||||
PLAYER(SPECIES_LANTURN) { Ability(ABILITY_VOLT_ABSORB); };
|
||||
PLAYER(SPECIES_LANTURN) { Ability(ABILITY_VOLT_ABSORB); }
|
||||
OPPONENT(SPECIES_LANTURN) { Moves(MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_SURF); }
|
||||
} WHEN {
|
||||
TURN { EXPECT_MOVE(opponent, MOVE_SURF); }
|
||||
@ -507,7 +507,7 @@ AI_SINGLE_BATTLE_TEST("AI will choose Thunderbolt then Surf 2/3 times if the opp
|
||||
GIVEN {
|
||||
ASSUME(GetMoveType(MOVE_THUNDERBOLT) == TYPE_ELECTRIC);
|
||||
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT);
|
||||
PLAYER(SPECIES_LANTURN) { Ability(ABILITY_VOLT_ABSORB); };
|
||||
PLAYER(SPECIES_LANTURN) { Ability(ABILITY_VOLT_ABSORB); }
|
||||
OPPONENT(SPECIES_LANTURN) { Moves(MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_SURF); }
|
||||
} WHEN {
|
||||
TURN { EXPECT_MOVE(opponent, MOVE_THUNDERBOLT); }
|
||||
@ -522,8 +522,8 @@ AI_SINGLE_BATTLE_TEST("AI will choose Scratch over Power-up Punch with Contrary"
|
||||
{
|
||||
enum Ability ability;
|
||||
|
||||
PARAMETRIZE {ability = ABILITY_SUCTION_CUPS; }
|
||||
PARAMETRIZE {ability = ABILITY_CONTRARY; }
|
||||
PARAMETRIZE { ability = ABILITY_SUCTION_CUPS; }
|
||||
PARAMETRIZE { ability = ABILITY_CONTRARY; }
|
||||
GIVEN {
|
||||
ASSUME(GetMovePower(MOVE_SCRATCH) == 40);
|
||||
ASSUME(GetMoveType(MOVE_SCRATCH) == TYPE_NORMAL);
|
||||
@ -548,8 +548,8 @@ AI_SINGLE_BATTLE_TEST("AI will choose Superpower over Outrage with Contrary")
|
||||
{
|
||||
enum Ability ability;
|
||||
|
||||
PARAMETRIZE {ability = ABILITY_SUCTION_CUPS; }
|
||||
PARAMETRIZE {ability = ABILITY_CONTRARY; }
|
||||
PARAMETRIZE { ability = ABILITY_SUCTION_CUPS; }
|
||||
PARAMETRIZE { ability = ABILITY_CONTRARY; }
|
||||
GIVEN {
|
||||
ASSUME(GetMovePower(MOVE_SUPERPOWER) == 120);
|
||||
ASSUME(GetMoveType(MOVE_SUPERPOWER) == TYPE_FIGHTING);
|
||||
@ -944,10 +944,10 @@ AI_SINGLE_BATTLE_TEST("AI will prefer resisted move over failing move")
|
||||
GIVEN {
|
||||
WITH_CONFIG(CONFIG_POWDER_GRASS, GEN_6);
|
||||
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY);
|
||||
PLAYER(SPECIES_ROSELIA) { Moves(MOVE_ABSORB); };
|
||||
PLAYER(SPECIES_ROSELIA) { Moves(MOVE_ABSORB); }
|
||||
OPPONENT(SPECIES_GLOOM) { Moves(MOVE_MEGA_DRAIN, MOVE_STUN_SPORE, MOVE_LEECH_SEED, MOVE_SYNTHESIS); }
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_ABSORB); EXPECT_MOVE(opponent, MOVE_MEGA_DRAIN);}
|
||||
TURN { MOVE(player, MOVE_ABSORB); EXPECT_MOVE(opponent, MOVE_MEGA_DRAIN); }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -15,7 +15,7 @@ AI_SINGLE_BATTLE_TEST("AI will not further increase Attack / Sp. Atk stat if it
|
||||
|| GetMoveEffect(MOVE_HOWL) == EFFECT_ATTACK_UP_USER_ALLY);
|
||||
ASSUME(GetMoveEffect(MOVE_CALM_MIND) == EFFECT_CALM_MIND);
|
||||
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT);
|
||||
PLAYER(SPECIES_COMBUSKEN) { Speed(15); Moves(MOVE_SKY_UPPERCUT, MOVE_CELEBRATE); };
|
||||
PLAYER(SPECIES_COMBUSKEN) { Speed(15); Moves(MOVE_SKY_UPPERCUT, MOVE_CELEBRATE); }
|
||||
OPPONENT(SPECIES_KANGASKHAN) { Speed(20); Moves(MOVE_CHIP_AWAY, MOVE_SWIFT, move); }
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_SKY_UPPERCUT); EXPECT_MOVE(opponent, move); }
|
||||
@ -36,7 +36,7 @@ AI_SINGLE_BATTLE_TEST("AI will not further increase Attack / Sp. Atk stat if it
|
||||
|| GetMoveEffect(MOVE_HOWL) == EFFECT_ATTACK_UP_USER_ALLY);
|
||||
ASSUME(GetMoveEffect(MOVE_CALM_MIND) == EFFECT_CALM_MIND);
|
||||
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT);
|
||||
PLAYER(SPECIES_COMBUSKEN) { Speed(20); Moves(MOVE_DOUBLE_KICK, MOVE_CELEBRATE); };
|
||||
PLAYER(SPECIES_COMBUSKEN) { Speed(20); Moves(MOVE_DOUBLE_KICK, MOVE_CELEBRATE); }
|
||||
OPPONENT(SPECIES_KANGASKHAN) { Speed(15); Moves(MOVE_CHIP_AWAY, MOVE_SWIFT, move); }
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_DOUBLE_KICK); EXPECT_MOVE(opponent, move); }
|
||||
@ -48,7 +48,7 @@ AI_SINGLE_BATTLE_TEST("AI will increase speed if it is slower")
|
||||
{
|
||||
GIVEN {
|
||||
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT);
|
||||
PLAYER(SPECIES_COMBUSKEN) { Speed(20); Moves(MOVE_DOUBLE_KICK, MOVE_CELEBRATE); };
|
||||
PLAYER(SPECIES_COMBUSKEN) { Speed(20); Moves(MOVE_DOUBLE_KICK, MOVE_CELEBRATE); }
|
||||
OPPONENT(SPECIES_KANGASKHAN) { Speed(15); Moves(MOVE_CHIP_AWAY, MOVE_AGILITY); }
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_DOUBLE_KICK); EXPECT_MOVE(opponent, MOVE_AGILITY); }
|
||||
@ -69,7 +69,7 @@ AI_SINGLE_BATTLE_TEST("AI will not waste a turn setting up if it knows target ca
|
||||
|| GetMoveEffect(MOVE_HOWL) == EFFECT_ATTACK_UP_USER_ALLY);
|
||||
ASSUME(GetMoveEffect(MOVE_CALM_MIND) == EFFECT_CALM_MIND);
|
||||
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_OMNISCIENT);
|
||||
PLAYER(SPECIES_COMBUSKEN) { Speed(15); Moves(MOVE_SKY_UPPERCUT, MOVE_DOUBLE_KICK, MOVE_FLAME_WHEEL, MOVE_CELEBRATE); };
|
||||
PLAYER(SPECIES_COMBUSKEN) { Speed(15); Moves(MOVE_SKY_UPPERCUT, MOVE_DOUBLE_KICK, MOVE_FLAME_WHEEL, MOVE_CELEBRATE); }
|
||||
OPPONENT(SPECIES_KANGASKHAN) { Speed(20); Moves(MOVE_CHIP_AWAY, MOVE_SWIFT, move); }
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_DOUBLE_KICK); EXPECT_MOVE(opponent, move); }
|
||||
@ -86,12 +86,12 @@ AI_SINGLE_BATTLE_TEST("AI will not use Throat Chop if opposing mon has a better
|
||||
ASSUME(GetMovePower(MOVE_FLAME_BURST) == 70);
|
||||
ASSUME(MoveHasAdditionalEffect(MOVE_THROAT_CHOP, MOVE_EFFECT_THROAT_CHOP) == TRUE);
|
||||
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT);
|
||||
PLAYER(SPECIES_REGIROCK) { Speed(15); Moves(MOVE_DISARMING_VOICE, MOVE_FLAME_BURST); };
|
||||
PLAYER(SPECIES_REGIROCK) { Speed(15); Moves(MOVE_DISARMING_VOICE, MOVE_FLAME_BURST); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Speed(20); Moves(MOVE_THROAT_CHOP, MOVE_PSYCHIC_FANGS); }
|
||||
} WHEN {
|
||||
TURN { EXPECT_MOVE(opponent, MOVE_PSYCHIC_FANGS); MOVE(player, MOVE_FLAME_BURST); }
|
||||
TURN { EXPECT_MOVE(opponent, MOVE_PSYCHIC_FANGS); MOVE(player, MOVE_DISARMING_VOICE); }
|
||||
TURN { EXPECT_MOVE(opponent, MOVE_PSYCHIC_FANGS); MOVE(player, MOVE_FLAME_BURST);}
|
||||
TURN { EXPECT_MOVE(opponent, MOVE_PSYCHIC_FANGS); MOVE(player, MOVE_FLAME_BURST); }
|
||||
}
|
||||
}
|
||||
|
||||
@ -104,12 +104,12 @@ AI_SINGLE_BATTLE_TEST("AI will select Throat Chop if the sound move is the best
|
||||
ASSUME(GetMovePower(MOVE_FLAME_BURST) == 70);
|
||||
ASSUME(GetMovePower(MOVE_HYPER_VOICE) == 90);
|
||||
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT);
|
||||
PLAYER(SPECIES_REGIROCK) { Speed(15); Moves(MOVE_HYPER_VOICE, MOVE_FLAME_BURST); };
|
||||
PLAYER(SPECIES_REGIROCK) { Speed(15); Moves(MOVE_HYPER_VOICE, MOVE_FLAME_BURST); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Speed(20); Moves(MOVE_THROAT_CHOP, MOVE_PSYCHIC_FANGS); }
|
||||
} WHEN {
|
||||
TURN { EXPECT_MOVE(opponent, MOVE_PSYCHIC_FANGS); MOVE(player, MOVE_FLAME_BURST); }
|
||||
TURN { EXPECT_MOVE(opponent, MOVE_PSYCHIC_FANGS); MOVE(player, MOVE_HYPER_VOICE); }
|
||||
TURN { EXPECT_MOVE(opponent, MOVE_THROAT_CHOP); MOVE(player, MOVE_HYPER_VOICE);}
|
||||
TURN { EXPECT_MOVE(opponent, MOVE_THROAT_CHOP); MOVE(player, MOVE_HYPER_VOICE); }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -456,7 +456,7 @@ AI_DOUBLE_BATTLE_TEST("AI sees type-changing moves as the correct type")
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Moves(fieldStatus, MOVE_RETURN, MOVE_TAUNT); }
|
||||
OPPONENT(species) { Ability(ability); Moves(MOVE_HYPER_VOICE); }
|
||||
OPPONENT(species) { Ability(ability); Moves(MOVE_HYPER_VOICE); }
|
||||
} WHEN {
|
||||
if (ability != ABILITY_NONE)
|
||||
TURN { EXPECT_MOVE(opponentLeft, fieldStatus); }
|
||||
|
||||
@ -23,11 +23,12 @@ AI_DOUBLE_BATTLE_TEST("AI won't use a Weather changing move if partner already c
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Moves(weatherMoveLeft); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_SCRATCH, weatherMoveRight); }
|
||||
} WHEN {
|
||||
TURN { NOT_EXPECT_MOVE(opponentRight, weatherMoveRight);
|
||||
SCORE_LT_VAL(opponentRight, weatherMoveRight, AI_SCORE_DEFAULT, target:playerLeft);
|
||||
SCORE_LT_VAL(opponentRight, weatherMoveRight, AI_SCORE_DEFAULT, target:playerRight);
|
||||
SCORE_LT_VAL(opponentRight, weatherMoveRight, AI_SCORE_DEFAULT, target:opponentLeft);
|
||||
}
|
||||
TURN {
|
||||
NOT_EXPECT_MOVE(opponentRight, weatherMoveRight);
|
||||
SCORE_LT_VAL(opponentRight, weatherMoveRight, AI_SCORE_DEFAULT, target:playerLeft);
|
||||
SCORE_LT_VAL(opponentRight, weatherMoveRight, AI_SCORE_DEFAULT, target:playerRight);
|
||||
SCORE_LT_VAL(opponentRight, weatherMoveRight, AI_SCORE_DEFAULT, target:opponentLeft);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -46,11 +47,12 @@ AI_DOUBLE_BATTLE_TEST("AI will not use Helping Hand if partner does not have any
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_HELPING_HAND, MOVE_SCRATCH); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Moves(move1, move2, move3, move4); }
|
||||
} WHEN {
|
||||
TURN { NOT_EXPECT_MOVE(opponentLeft, MOVE_HELPING_HAND);
|
||||
SCORE_LT_VAL(opponentLeft, MOVE_HELPING_HAND, AI_SCORE_DEFAULT, target:playerLeft);
|
||||
SCORE_LT_VAL(opponentLeft, MOVE_HELPING_HAND, AI_SCORE_DEFAULT, target:playerRight);
|
||||
SCORE_LT_VAL(opponentLeft, MOVE_HELPING_HAND, AI_SCORE_DEFAULT, target:opponentLeft);
|
||||
}
|
||||
TURN {
|
||||
NOT_EXPECT_MOVE(opponentLeft, MOVE_HELPING_HAND);
|
||||
SCORE_LT_VAL(opponentLeft, MOVE_HELPING_HAND, AI_SCORE_DEFAULT, target:playerLeft);
|
||||
SCORE_LT_VAL(opponentLeft, MOVE_HELPING_HAND, AI_SCORE_DEFAULT, target:playerRight);
|
||||
SCORE_LT_VAL(opponentLeft, MOVE_HELPING_HAND, AI_SCORE_DEFAULT, target:opponentLeft);
|
||||
}
|
||||
} SCENE {
|
||||
NOT MESSAGE("The opposing Wobbuffet used Helping Hand!");
|
||||
}
|
||||
@ -157,12 +159,13 @@ AI_DOUBLE_BATTLE_TEST("AI will not use a status move if partner already chose He
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_HELPING_HAND, MOVE_EXPLOSION); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_SCRATCH, statusMove, MOVE_WATER_GUN); }
|
||||
} WHEN {
|
||||
TURN { EXPECT_MOVE(opponentLeft, MOVE_HELPING_HAND);
|
||||
NOT_EXPECT_MOVE(opponentRight, statusMove);
|
||||
SCORE_LT_VAL(opponentRight, statusMove, AI_SCORE_DEFAULT, target:playerLeft);
|
||||
SCORE_LT_VAL(opponentRight, statusMove, AI_SCORE_DEFAULT, target:playerRight);
|
||||
SCORE_LT_VAL(opponentRight, statusMove, AI_SCORE_DEFAULT, target:opponentLeft);
|
||||
}
|
||||
TURN {
|
||||
EXPECT_MOVE(opponentLeft, MOVE_HELPING_HAND);
|
||||
NOT_EXPECT_MOVE(opponentRight, statusMove);
|
||||
SCORE_LT_VAL(opponentRight, statusMove, AI_SCORE_DEFAULT, target:playerLeft);
|
||||
SCORE_LT_VAL(opponentRight, statusMove, AI_SCORE_DEFAULT, target:playerRight);
|
||||
SCORE_LT_VAL(opponentRight, statusMove, AI_SCORE_DEFAULT, target:opponentLeft);
|
||||
}
|
||||
} SCENE {
|
||||
MESSAGE("The opposing Wobbuffet used Helping Hand!");
|
||||
}
|
||||
@ -415,7 +418,7 @@ AI_DOUBLE_BATTLE_TEST("AI will choose Earthquake if it kills both opposing mons"
|
||||
PLAYER(SPECIES_WOBBUFFET) { HP(1); }
|
||||
PLAYER(SPECIES_WOBBUFFET) { HP(1); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_EARTHQUAKE, MOVE_SCRATCH); }
|
||||
OPPONENT(SPECIES_PARAS) { Moves(MOVE_CELEBRATE); HP(1); }
|
||||
OPPONENT(SPECIES_PARAS) { Moves(MOVE_CELEBRATE); HP(1); }
|
||||
} WHEN {
|
||||
TURN { EXPECT_MOVE(opponentLeft, MOVE_EARTHQUAKE); }
|
||||
}
|
||||
@ -437,7 +440,7 @@ AI_DOUBLE_BATTLE_TEST("AI will trigger its ally's Weakness Policy")
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_EARTHQUAKE, MOVE_STOMPING_TANTRUM); }
|
||||
OPPONENT(species) { Moves(MOVE_CELEBRATE); Item(ITEM_WEAKNESS_POLICY); }
|
||||
OPPONENT(species) { Moves(MOVE_CELEBRATE); Item(ITEM_WEAKNESS_POLICY); }
|
||||
} WHEN {
|
||||
if (species == SPECIES_INCINEROAR)
|
||||
TURN { EXPECT_MOVE(opponentLeft, MOVE_EARTHQUAKE); }
|
||||
@ -655,7 +658,7 @@ AI_DOUBLE_BATTLE_TEST("AI sets up terrain for its ally")
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Moves(goodTerrain, badTerrain, MOVE_RETURN, MOVE_TAUNT); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Moves(terrainTrigger, MOVE_EARTH_POWER); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Moves(terrainTrigger, MOVE_EARTH_POWER); }
|
||||
} WHEN {
|
||||
TURN { EXPECT_MOVE(opponentLeft, goodTerrain); }
|
||||
}
|
||||
@ -724,12 +727,12 @@ AI_DOUBLE_BATTLE_TEST("AI uses Trick Room with both battlers on the turn it expi
|
||||
OPPONENT(SPECIES_WYNAUT) { Moves(MOVE_TRICK_ROOM, MOVE_PSYCHIC); Speed(2); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_TRICK_ROOM, MOVE_PSYCHIC); Speed(1); }
|
||||
} WHEN {
|
||||
TURN { EXPECT_MOVE(opponentLeft, MOVE_TRICK_ROOM); NOT_EXPECT_MOVE(opponentRight, MOVE_TRICK_ROOM); }
|
||||
TURN { NOT_EXPECT_MOVE(opponentLeft, MOVE_TRICK_ROOM); NOT_EXPECT_MOVE(opponentRight, MOVE_TRICK_ROOM); }
|
||||
TURN { NOT_EXPECT_MOVE(opponentLeft, MOVE_TRICK_ROOM); NOT_EXPECT_MOVE(opponentRight, MOVE_TRICK_ROOM); }
|
||||
TURN { NOT_EXPECT_MOVE(opponentLeft, MOVE_TRICK_ROOM); NOT_EXPECT_MOVE(opponentRight, MOVE_TRICK_ROOM); }
|
||||
TURN { EXPECT_MOVE(opponentLeft, MOVE_TRICK_ROOM); EXPECT_MOVE(opponentRight, MOVE_TRICK_ROOM); }
|
||||
}
|
||||
TURN { EXPECT_MOVE(opponentLeft, MOVE_TRICK_ROOM); NOT_EXPECT_MOVE(opponentRight, MOVE_TRICK_ROOM); }
|
||||
TURN { NOT_EXPECT_MOVE(opponentLeft, MOVE_TRICK_ROOM); NOT_EXPECT_MOVE(opponentRight, MOVE_TRICK_ROOM); }
|
||||
TURN { NOT_EXPECT_MOVE(opponentLeft, MOVE_TRICK_ROOM); NOT_EXPECT_MOVE(opponentRight, MOVE_TRICK_ROOM); }
|
||||
TURN { NOT_EXPECT_MOVE(opponentLeft, MOVE_TRICK_ROOM); NOT_EXPECT_MOVE(opponentRight, MOVE_TRICK_ROOM); }
|
||||
TURN { EXPECT_MOVE(opponentLeft, MOVE_TRICK_ROOM); EXPECT_MOVE(opponentRight, MOVE_TRICK_ROOM); }
|
||||
}
|
||||
}
|
||||
|
||||
AI_DOUBLE_BATTLE_TEST("AI uses Helping Hand if it's about to die")
|
||||
@ -747,10 +750,10 @@ AI_DOUBLE_BATTLE_TEST("AI uses Helping Hand if it's about to die")
|
||||
OPPONENT(SPECIES_WOBBUFFET) { HP(hp); Moves(MOVE_HELPING_HAND, MOVE_MUDDY_WATER); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_MUDDY_WATER); }
|
||||
} WHEN {
|
||||
if (hp == 1)
|
||||
TURN { EXPECT_MOVE(opponentLeft, MOVE_HELPING_HAND); }
|
||||
else
|
||||
TURN { NOT_EXPECT_MOVE(opponentLeft, MOVE_HELPING_HAND); }
|
||||
if (hp == 1)
|
||||
TURN { EXPECT_MOVE(opponentLeft, MOVE_HELPING_HAND); }
|
||||
else
|
||||
TURN { NOT_EXPECT_MOVE(opponentLeft, MOVE_HELPING_HAND); }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -26,12 +26,11 @@ AI_DOUBLE_BATTLE_TEST("AI_FLAG_ATTACKS_PARTNER is willing to kill either the par
|
||||
ASSUME(gSpeciesInfo[SPECIES_ZIGZAGOON].baseDefense == 41);
|
||||
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_ATTACKS_PARTNER);
|
||||
PLAYER(SPECIES_ZIGZAGOON) { Level(50); }
|
||||
PLAYER(SPECIES_ZIGZAGOON) { Level(16); }
|
||||
PLAYER(SPECIES_ZIGZAGOON) { Level(16); }
|
||||
OPPONENT(SPECIES_ZIGZAGOON) { Level(50); Moves(move, MOVE_OVERDRIVE, MOVE_TACKLE); }
|
||||
OPPONENT(SPECIES_ZIGZAGOON) { Level(level); Moves(MOVE_CELEBRATE); }
|
||||
} WHEN {
|
||||
TURN
|
||||
{
|
||||
TURN {
|
||||
if (move == MOVE_MIGHTY_CLEAVE)
|
||||
{
|
||||
if (level == 1)
|
||||
@ -46,7 +45,7 @@ AI_DOUBLE_BATTLE_TEST("AI_FLAG_ATTACKS_PARTNER is willing to kill either the par
|
||||
else
|
||||
EXPECT_MOVE(opponentLeft, MOVE_OVERDRIVE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -59,18 +58,16 @@ AI_DOUBLE_BATTLE_TEST("AI_FLAG_ATTACKS_PARTNER steps on its ally's weather")
|
||||
|
||||
GIVEN {
|
||||
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_ATTACKS_PARTNER);
|
||||
PLAYER(SPECIES_WOBBUFFET) { Speed(50); }
|
||||
PLAYER(SPECIES_WOBBUFFET) { Speed(50); }
|
||||
PLAYER(SPECIES_WOBBUFFET) { Speed(50); }
|
||||
PLAYER(SPECIES_WOBBUFFET) { Speed(50); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Speed(75); Moves(weather1, move1, MOVE_HEADBUTT); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Speed(100); Moves(weather2, move2, MOVE_HEADBUTT); }
|
||||
} WHEN {
|
||||
TURN
|
||||
{
|
||||
TURN {
|
||||
EXPECT_MOVE(opponentLeft, weather1);
|
||||
EXPECT_MOVE(opponentRight, weather2);
|
||||
}
|
||||
TURN
|
||||
{
|
||||
TURN {
|
||||
EXPECT_MOVE(opponentLeft, move1);
|
||||
EXPECT_MOVE(opponentRight, weather2);
|
||||
}
|
||||
|
||||
@ -8,7 +8,7 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_WEIGH_ABILITY_PREDICTION: AI will predict opposin
|
||||
GIVEN {
|
||||
ASSUME(GetMoveType(MOVE_THUNDERBOLT) == TYPE_ELECTRIC);
|
||||
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_WEIGH_ABILITY_PREDICTION);
|
||||
PLAYER(SPECIES_LANTURN) { Ability(ABILITY_VOLT_ABSORB); };
|
||||
PLAYER(SPECIES_LANTURN) { Ability(ABILITY_VOLT_ABSORB); }
|
||||
OPPONENT(SPECIES_LANTURN) { Moves(MOVE_THUNDERBOLT, MOVE_ICE_BEAM, MOVE_SURF); }
|
||||
} WHEN {
|
||||
TURN { EXPECT_MOVE(opponent, MOVE_THUNDERBOLT); }
|
||||
|
||||
@ -44,7 +44,7 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SEQUENCE_SWITCHING: Roar and Dragon Tail still fo
|
||||
u32 move;
|
||||
|
||||
PARAMETRIZE { move = MOVE_ROAR; }
|
||||
PARAMETRIZE {move = MOVE_DRAGON_TAIL; }
|
||||
PARAMETRIZE { move = MOVE_DRAGON_TAIL; }
|
||||
|
||||
PASSES_RANDOMLY(1, 2, RNG_FORCE_RANDOM_SWITCH);
|
||||
GIVEN {
|
||||
|
||||
@ -73,10 +73,10 @@ AI_MULTI_BATTLE_TEST("AI partner makes sensible move selections in battle (multi
|
||||
MULTI_PARTNER(SPECIES_GENGAR) { Moves(MOVE_SHADOW_BALL, MOVE_AURA_SPHERE); }
|
||||
MULTI_OPPONENT_A(SPECIES_RATTATA) { Moves(MOVE_CELEBRATE); HP(1); }
|
||||
MULTI_OPPONENT_B(SPECIES_KANGASKHAN) { Moves(MOVE_CELEBRATE); }
|
||||
|
||||
|
||||
} WHEN {
|
||||
TURN { MOVE(playerLeft, MOVE_AURA_SPHERE, target:opponentRight); EXPECT_MOVE(playerRight, MOVE_AURA_SPHERE, target:opponentLeft); };
|
||||
}
|
||||
TURN { MOVE(playerLeft, MOVE_AURA_SPHERE, target:opponentRight); EXPECT_MOVE(playerRight, MOVE_AURA_SPHERE, target:opponentLeft); }
|
||||
}
|
||||
}
|
||||
|
||||
// Used to test EXPECT_MOVE only on partner
|
||||
@ -90,10 +90,10 @@ AI_TWO_VS_ONE_BATTLE_TEST("AI partner makes sensible move selections in battle (
|
||||
MULTI_PARTNER(SPECIES_GENGAR) { Moves(MOVE_SHADOW_BALL, MOVE_AURA_SPHERE); }
|
||||
MULTI_OPPONENT_A(SPECIES_RATTATA) { Moves(MOVE_CELEBRATE); HP(1); }
|
||||
MULTI_OPPONENT_A(SPECIES_KANGASKHAN) { Moves(MOVE_CELEBRATE); }
|
||||
|
||||
|
||||
} WHEN {
|
||||
TURN { MOVE(playerLeft, MOVE_AURA_SPHERE, target:opponentRight); EXPECT_MOVE(playerRight, MOVE_AURA_SPHERE, target:opponentLeft); };
|
||||
}
|
||||
TURN { MOVE(playerLeft, MOVE_AURA_SPHERE, target:opponentRight); EXPECT_MOVE(playerRight, MOVE_AURA_SPHERE, target:opponentLeft); }
|
||||
}
|
||||
}
|
||||
|
||||
AI_TWO_VS_ONE_BATTLE_TEST("Battler 3 has Battler 1 AI flags set correctly (2v1)")
|
||||
@ -138,7 +138,7 @@ AI_MULTI_BATTLE_TEST("Partner will not steal your pokemon when running out")
|
||||
MULTI_OPPONENT_A(SPECIES_WOBBUFFET) { Moves(MOVE_CELEBRATE); }
|
||||
MULTI_OPPONENT_B(SPECIES_WOBBUFFET) { Moves(MOVE_CELEBRATE); }
|
||||
} WHEN {
|
||||
TURN {EXPECT_MOVE(playerRight, MOVE_MEMENTO, target:opponentLeft);}
|
||||
TURN { EXPECT_MOVE(playerRight, MOVE_MEMENTO, target:opponentLeft); }
|
||||
TURN {}
|
||||
} THEN {
|
||||
EXPECT_EQ(gAbsentBattlerFlags, (1u << GetBattlerAtPosition(B_POSITION_PLAYER_RIGHT)));
|
||||
@ -159,7 +159,7 @@ AI_MULTI_BATTLE_TEST("Partner will not steal your pokemon to delay using their a
|
||||
MULTI_OPPONENT_A(SPECIES_WOBBUFFET) { Moves(MOVE_CELEBRATE); }
|
||||
MULTI_OPPONENT_B(SPECIES_WOBBUFFET) { Moves(MOVE_CELEBRATE); }
|
||||
} WHEN {
|
||||
TURN {EXPECT_MOVE(playerRight, MOVE_MEMENTO, target:opponentLeft);}
|
||||
TURN { EXPECT_MOVE(playerRight, MOVE_MEMENTO, target:opponentLeft); }
|
||||
TURN {}
|
||||
} THEN {
|
||||
EXPECT_EQ(SPECIES_METAGROSS, playerRight->species);
|
||||
@ -174,12 +174,12 @@ AI_MULTI_BATTLE_TEST("AI opponents do not steal their partner pokemon in multi b
|
||||
BATTLER_AI_FLAGS(B_POSITION_OPPONENT_LEFT, AI_FLAG_ACE_POKEMON);
|
||||
MULTI_PLAYER(SPECIES_WOBBUFFET) { }
|
||||
MULTI_PARTNER(SPECIES_WOBBUFFET) { }
|
||||
MULTI_OPPONENT_A(SPECIES_WOBBUFFET) { Moves(MOVE_CELEBRATE); HP(1);}
|
||||
MULTI_OPPONENT_A(SPECIES_WOBBUFFET) { Moves(MOVE_CELEBRATE); HP(1); }
|
||||
MULTI_OPPONENT_A(SPECIES_VENUSAUR) { Moves(MOVE_GIGA_DRAIN); }
|
||||
MULTI_OPPONENT_B(SPECIES_WYNAUT) { Moves(MOVE_CELEBRATE); }
|
||||
} WHEN {
|
||||
TURN {MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft); }
|
||||
TURN {MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft); }
|
||||
TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft); }
|
||||
TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft); }
|
||||
} THEN {
|
||||
EXPECT_EQ(SPECIES_VENUSAUR, opponentLeft->species);
|
||||
}
|
||||
@ -188,19 +188,19 @@ AI_MULTI_BATTLE_TEST("AI opponents do not steal their partner pokemon in multi b
|
||||
AI_MULTI_BATTLE_TEST("AI opponents do not steal their partner pokemon in multi battle when forced out")
|
||||
{
|
||||
u32 item, move;
|
||||
PARAMETRIZE {item = ITEM_EJECT_BUTTON; move = MOVE_TACKLE;}
|
||||
PARAMETRIZE {item = ITEM_EJECT_PACK; move = MOVE_TAIL_WHIP;}
|
||||
PARAMETRIZE {item = ITEM_NONE; move = MOVE_ROAR;}
|
||||
PARAMETRIZE { item = ITEM_EJECT_BUTTON; move = MOVE_TACKLE; }
|
||||
PARAMETRIZE { item = ITEM_EJECT_PACK; move = MOVE_TAIL_WHIP; }
|
||||
PARAMETRIZE { item = ITEM_NONE; move = MOVE_ROAR; }
|
||||
GIVEN {
|
||||
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT);
|
||||
BATTLER_AI_FLAGS(B_POSITION_OPPONENT_LEFT, AI_FLAG_ACE_POKEMON);
|
||||
MULTI_PLAYER(SPECIES_WOBBUFFET) { }
|
||||
MULTI_PARTNER(SPECIES_WOBBUFFET) { }
|
||||
MULTI_OPPONENT_A(SPECIES_WOBBUFFET) { Moves(MOVE_CELEBRATE); Item(item);}
|
||||
MULTI_OPPONENT_A(SPECIES_WOBBUFFET) { Moves(MOVE_CELEBRATE); Item(item); }
|
||||
MULTI_OPPONENT_A(SPECIES_VENUSAUR) { Moves(MOVE_GIGA_DRAIN); }
|
||||
MULTI_OPPONENT_B(SPECIES_WYNAUT) { Moves(MOVE_CELEBRATE); }
|
||||
} WHEN {
|
||||
TURN {MOVE(playerLeft, move, target: opponentLeft); }
|
||||
TURN { MOVE(playerLeft, move, target: opponentLeft); }
|
||||
} THEN {
|
||||
EXPECT_EQ(SPECIES_VENUSAUR, opponentLeft->species);
|
||||
}
|
||||
@ -213,11 +213,11 @@ AI_MULTI_BATTLE_TEST("AI opponents do not steal their partner pokemon in multi b
|
||||
BATTLER_AI_FLAGS(B_POSITION_OPPONENT_LEFT, AI_FLAG_ACE_POKEMON);
|
||||
MULTI_PLAYER(SPECIES_WOBBUFFET) { }
|
||||
MULTI_PARTNER(SPECIES_WOBBUFFET) { }
|
||||
MULTI_OPPONENT_A(SPECIES_GOLISOPOD) { Moves(MOVE_CELEBRATE); HP(101); MaxHP(200); Ability(ABILITY_EMERGENCY_EXIT);}
|
||||
MULTI_OPPONENT_A(SPECIES_GOLISOPOD) { Moves(MOVE_CELEBRATE); HP(101); MaxHP(200); Ability(ABILITY_EMERGENCY_EXIT); }
|
||||
MULTI_OPPONENT_A(SPECIES_VENUSAUR) { Moves(MOVE_GIGA_DRAIN); }
|
||||
MULTI_OPPONENT_B(SPECIES_WYNAUT) { Moves(MOVE_CELEBRATE); }
|
||||
} WHEN {
|
||||
TURN {MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft); }
|
||||
TURN { MOVE(playerLeft, MOVE_TACKLE, target: opponentLeft); }
|
||||
} THEN {
|
||||
EXPECT_EQ(SPECIES_VENUSAUR, opponentLeft->species);
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user