mirror of
https://github.com/rh-hideout/pokeemerald-expansion.git
synced 2026-04-26 10:25:49 -05:00
Remove non-volatile status EFFECTs (#6772)
This commit is contained in:
parent
c133da2437
commit
edf7c67775
|
|
@ -135,6 +135,7 @@ bool32 HasOnlyMovesWithCategory(u32 battlerId, u32 category, bool32 onlyOffensiv
|
|||
bool32 HasMoveWithCategory(u32 battler, u32 category);
|
||||
bool32 HasMoveWithType(u32 battler, u32 type);
|
||||
bool32 HasMoveEffect(u32 battlerId, enum BattleMoveEffects moveEffect);
|
||||
bool32 HasNonVolatileMoveEffect(u32 battlerId, u32 effect);
|
||||
bool32 IsPowerBasedOnStatus(u32 battlerId, enum BattleMoveEffects effect, u32 argument);
|
||||
bool32 HasMoveWithAdditionalEffect(u32 battlerId, u32 moveEffect);
|
||||
bool32 HasMoveWithCriticalHitChance(u32 battlerId);
|
||||
|
|
@ -143,7 +144,7 @@ bool32 HasMoveThatLowersOwnStats(u32 battlerId);
|
|||
bool32 HasMoveWithLowAccuracy(u32 battlerAtk, u32 battlerDef, u32 accCheck, bool32 ignoreStatus, u32 atkAbility, u32 defAbility, u32 atkHoldEffect, u32 defHoldEffect);
|
||||
bool32 HasAnyKnownMove(u32 battlerId);
|
||||
bool32 IsAromaVeilProtectedEffect(enum BattleMoveEffects moveEffect);
|
||||
bool32 IsNonVolatileStatusMoveEffect(enum BattleMoveEffects moveEffect);
|
||||
bool32 IsNonVolatileStatusMove(u32 moveEffect);
|
||||
bool32 IsMoveRedirectionPrevented(u32 battlerAtk, u32 move, u32 atkAbility);
|
||||
bool32 IsMoveEncouragedToHit(u32 battlerAtk, u32 battlerDef, u32 move);
|
||||
bool32 IsHazardMove(u32 move);
|
||||
|
|
|
|||
|
|
@ -867,7 +867,6 @@ extern const u8 BattleScript_EffectFickleBeam[];
|
|||
extern const u8 BattleScript_FickleBeamDoubled[];
|
||||
extern const u8 BattleScript_QuestionForfeitBattle[];
|
||||
extern const u8 BattleScript_ForfeitBattleGaveMoney[];
|
||||
extern const u8 BattleScript_EffectNonVolatileStatus[];
|
||||
extern const u8 BattleScript_AbilityPopUp[];
|
||||
|
||||
#endif // GUARD_BATTLE_SCRIPTS_H
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ enum BattleMoveEffects
|
|||
{
|
||||
EFFECT_PLACEHOLDER,
|
||||
EFFECT_HIT,
|
||||
EFFECT_SLEEP,
|
||||
EFFECT_NON_VOLATILE_STATUS,
|
||||
EFFECT_ABSORB,
|
||||
EFFECT_EXPLOSION,
|
||||
EFFECT_DREAM_EATER,
|
||||
|
|
@ -31,7 +31,6 @@ enum BattleMoveEffects
|
|||
EFFECT_MULTI_HIT,
|
||||
EFFECT_CONVERSION,
|
||||
EFFECT_RESTORE_HP,
|
||||
EFFECT_TOXIC,
|
||||
EFFECT_LIGHT_SCREEN,
|
||||
EFFECT_REST,
|
||||
EFFECT_OHKO,
|
||||
|
|
@ -59,8 +58,6 @@ enum BattleMoveEffects
|
|||
EFFECT_ACCURACY_DOWN_2,
|
||||
EFFECT_EVASION_DOWN_2,
|
||||
EFFECT_REFLECT,
|
||||
EFFECT_POISON,
|
||||
EFFECT_PARALYZE,
|
||||
EFFECT_TWO_TURNS_ATTACK,
|
||||
EFFECT_SUBSTITUTE,
|
||||
EFFECT_RAGE,
|
||||
|
|
@ -138,7 +135,6 @@ enum BattleMoveEffects
|
|||
EFFECT_HAIL,
|
||||
EFFECT_TORMENT,
|
||||
EFFECT_FLATTER,
|
||||
EFFECT_WILL_O_WISP,
|
||||
EFFECT_MEMENTO,
|
||||
EFFECT_FACADE,
|
||||
EFFECT_FOCUS_PUNCH,
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
#define GUARD_MOVES_H
|
||||
|
||||
#include "contest_effect.h"
|
||||
#include "constants/battle.h"
|
||||
#include "constants/battle_move_effects.h"
|
||||
#include "constants/moves.h"
|
||||
|
||||
|
|
@ -535,9 +536,18 @@ static inline u32 GetMoveRecoil(u32 moveId)
|
|||
return gMovesInfo[SanitizeMoveId(moveId)].argument.recoilPercentage;
|
||||
}
|
||||
|
||||
static inline u32 GetMoveNonVolatileStatus(u32 moveId)
|
||||
static inline u32 GetMoveNonVolatileStatus(u32 move)
|
||||
{
|
||||
return gMovesInfo[SanitizeMoveId(moveId)].argument.nonVolatileStatus;
|
||||
move = SanitizeMoveId(move);
|
||||
switch(GetMoveEffect(move))
|
||||
{
|
||||
case EFFECT_NON_VOLATILE_STATUS:
|
||||
case EFFECT_YAWN:
|
||||
case EFFECT_DARK_VOID:
|
||||
return gMovesInfo[move].argument.nonVolatileStatus;
|
||||
default:
|
||||
return MOVE_EFFECT_NONE;
|
||||
}
|
||||
}
|
||||
|
||||
static inline const struct AdditionalEffect *GetMoveAdditionalEffectById(u32 moveId, u32 effect)
|
||||
|
|
|
|||
|
|
@ -996,6 +996,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
|||
{
|
||||
// move data
|
||||
enum BattleMoveEffects moveEffect = GetMoveEffect(move);
|
||||
u32 nonVolatileStatus = GetMoveNonVolatileStatus(move);
|
||||
s32 moveType;
|
||||
u32 moveTarget = GetBattlerMoveTargetType(battlerAtk, move);
|
||||
struct AiLogicData *aiData = gAiLogicData;
|
||||
|
|
@ -1027,8 +1028,11 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
|||
RETURN_SCORE_MINUS(20);
|
||||
|
||||
// Don't setup into expected Focus Punch.
|
||||
if (GetMoveCategory(move) == DAMAGE_CATEGORY_STATUS && moveEffect != EFFECT_SLEEP && GetMoveEffect(predictedMove) != EFFECT_FOCUS_PUNCH
|
||||
&& GetMoveEffect(GetBestDmgMoveFromBattler(battlerDef, battlerAtk, AI_DEFENDING)) == EFFECT_FOCUS_PUNCH && RandomPercentage(RNG_AI_STATUS_FOCUS_PUNCH, STATUS_MOVE_FOCUS_PUNCH_CHANCE))
|
||||
if (GetMoveCategory(move) == DAMAGE_CATEGORY_STATUS
|
||||
&& nonVolatileStatus != MOVE_EFFECT_SLEEP
|
||||
&& GetMoveEffect(predictedMove) != EFFECT_FOCUS_PUNCH
|
||||
&& GetMoveEffect(GetBestDmgMoveFromBattler(battlerDef, battlerAtk, AI_DEFENDING)) == EFFECT_FOCUS_PUNCH
|
||||
&& RandomPercentage(RNG_AI_STATUS_FOCUS_PUNCH, STATUS_MOVE_FOCUS_PUNCH_CHANCE))
|
||||
{
|
||||
RETURN_SCORE_MINUS(20);
|
||||
}
|
||||
|
|
@ -1091,9 +1095,6 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
|||
case ABILITY_MAGIC_GUARD:
|
||||
switch (moveEffect)
|
||||
{
|
||||
case EFFECT_POISON:
|
||||
case EFFECT_WILL_O_WISP:
|
||||
case EFFECT_TOXIC:
|
||||
case EFFECT_LEECH_SEED:
|
||||
ADJUST_SCORE(-5);
|
||||
break;
|
||||
|
|
@ -1104,6 +1105,16 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
|||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
switch(nonVolatileStatus)
|
||||
{
|
||||
case MOVE_EFFECT_POISON:
|
||||
case MOVE_EFFECT_TOXIC:
|
||||
case MOVE_EFFECT_BURN:
|
||||
ADJUST_SCORE(-5);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
break;
|
||||
case ABILITY_WONDER_GUARD:
|
||||
if (effectiveness < UQ_4_12(2.0))
|
||||
|
|
@ -1123,11 +1134,11 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
|||
RETURN_SCORE_MINUS(10);
|
||||
break;
|
||||
case ABILITY_SWEET_VEIL:
|
||||
if (moveEffect == EFFECT_SLEEP || moveEffect == EFFECT_YAWN)
|
||||
if (nonVolatileStatus == MOVE_EFFECT_SLEEP)
|
||||
RETURN_SCORE_MINUS(10);
|
||||
break;
|
||||
case ABILITY_FLOWER_VEIL:
|
||||
if (IS_BATTLER_OF_TYPE(battlerDef, TYPE_GRASS) && (IsNonVolatileStatusMoveEffect(moveEffect)))
|
||||
if (IS_BATTLER_OF_TYPE(battlerDef, TYPE_GRASS) && (IsNonVolatileStatusMove(move)))
|
||||
RETURN_SCORE_MINUS(10);
|
||||
break;
|
||||
case ABILITY_MAGIC_BOUNCE:
|
||||
|
|
@ -1139,17 +1150,17 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
|||
RETURN_SCORE_MINUS(20);
|
||||
break;
|
||||
case ABILITY_COMATOSE:
|
||||
if (IsNonVolatileStatusMoveEffect(moveEffect))
|
||||
if (IsNonVolatileStatusMove(move))
|
||||
RETURN_SCORE_MINUS(10);
|
||||
break;
|
||||
case ABILITY_SHIELDS_DOWN:
|
||||
if (IsShieldsDownProtected(battlerAtk, aiData->abilities[battlerAtk]) && IsNonVolatileStatusMoveEffect(moveEffect))
|
||||
if (IsShieldsDownProtected(battlerAtk, aiData->abilities[battlerAtk]) && IsNonVolatileStatusMove(move))
|
||||
RETURN_SCORE_MINUS(10);
|
||||
break;
|
||||
case ABILITY_LEAF_GUARD:
|
||||
if ((AI_GetWeather() & B_WEATHER_SUN)
|
||||
&& aiData->holdEffects[battlerDef] != HOLD_EFFECT_UTILITY_UMBRELLA
|
||||
&& IsNonVolatileStatusMoveEffect(moveEffect))
|
||||
&& IsNonVolatileStatusMove(move))
|
||||
RETURN_SCORE_MINUS(10);
|
||||
break;
|
||||
} // def ability checks
|
||||
|
|
@ -1172,11 +1183,11 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
|||
RETURN_SCORE_MINUS(20);
|
||||
break;
|
||||
case ABILITY_SWEET_VEIL:
|
||||
if (moveEffect == EFFECT_SLEEP || moveEffect == EFFECT_YAWN)
|
||||
if (nonVolatileStatus == MOVE_EFFECT_SLEEP)
|
||||
RETURN_SCORE_MINUS(20);
|
||||
break;
|
||||
case ABILITY_FLOWER_VEIL:
|
||||
if ((IS_BATTLER_OF_TYPE(battlerDef, TYPE_GRASS)) && (IsNonVolatileStatusMoveEffect(moveEffect) || IsStatLoweringEffect(moveEffect)))
|
||||
if ((IS_BATTLER_OF_TYPE(battlerDef, TYPE_GRASS)) && (IsNonVolatileStatusMove(move) || IsStatLoweringEffect(moveEffect)))
|
||||
RETURN_SCORE_MINUS(10);
|
||||
break;
|
||||
case ABILITY_AROMA_VEIL:
|
||||
|
|
@ -1195,13 +1206,13 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
|||
// terrain & effect checks
|
||||
if (IsBattlerTerrainAffected(battlerDef, STATUS_FIELD_ELECTRIC_TERRAIN))
|
||||
{
|
||||
if (moveEffect == EFFECT_SLEEP || moveEffect == EFFECT_YAWN)
|
||||
if (nonVolatileStatus == MOVE_EFFECT_SLEEP)
|
||||
RETURN_SCORE_MINUS(20);
|
||||
}
|
||||
|
||||
if (IsBattlerTerrainAffected(battlerDef, STATUS_FIELD_MISTY_TERRAIN))
|
||||
{
|
||||
if (IsNonVolatileStatusMoveEffect(moveEffect) || IsConfusionMoveEffect(moveEffect))
|
||||
if (IsNonVolatileStatusMove(move) || IsConfusionMoveEffect(moveEffect))
|
||||
RETURN_SCORE_MINUS(20);
|
||||
}
|
||||
|
||||
|
|
@ -1261,12 +1272,6 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
|||
break;
|
||||
default:
|
||||
break; // check move damage
|
||||
case EFFECT_SLEEP:
|
||||
if (!AI_CanPutToSleep(battlerAtk, battlerDef, abilityDef, move, aiData->partnerMove))
|
||||
ADJUST_SCORE(-10);
|
||||
if (PartnerMoveActivatesSleepClause(aiData->partnerMove))
|
||||
ADJUST_SCORE(-20);
|
||||
break;
|
||||
case EFFECT_EXPLOSION:
|
||||
if (!(gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_WILL_SUICIDE))
|
||||
ADJUST_SCORE(-2);
|
||||
|
|
@ -1609,7 +1614,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
|||
ADJUST_SCORE(-10);
|
||||
if (HasMoveEffect(battlerAtk, EFFECT_SUBSTITUTE) && !(gBattleMons[battlerAtk].status2 & STATUS2_SUBSTITUTE))
|
||||
ADJUST_SCORE(-10);
|
||||
if (HasMoveEffect(battlerAtk, EFFECT_SLEEP) && ! (gBattleMons[battlerDef].status1 & STATUS1_SLEEP))
|
||||
if (HasNonVolatileMoveEffect(battlerAtk, MOVE_EFFECT_SLEEP) && ! (gBattleMons[battlerDef].status1 & STATUS1_SLEEP))
|
||||
ADJUST_SCORE(-10);
|
||||
break;
|
||||
case EFFECT_COUNTER:
|
||||
|
|
@ -1634,13 +1639,6 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
|||
if (!ShouldLowerStat(battlerAtk, battlerDef, abilityDef, STAT_SPEED))
|
||||
ADJUST_SCORE(-1); // may still want to just poison
|
||||
//fallthrough
|
||||
case EFFECT_POISON:
|
||||
case EFFECT_TOXIC:
|
||||
if (!AI_CanPoison(battlerAtk, battlerDef, abilityDef, move, aiData->partnerMove))
|
||||
ADJUST_SCORE(-10);
|
||||
if (!ShouldPoison(battlerAtk, battlerDef))
|
||||
ADJUST_SCORE(-5);
|
||||
break;
|
||||
case EFFECT_LIGHT_SCREEN:
|
||||
if (gSideStatuses[GetBattlerSide(battlerAtk)] & SIDE_STATUS_LIGHTSCREEN
|
||||
|| PartnerHasSameMoveEffectWithoutTarget(BATTLE_PARTNER(battlerAtk), move, aiData->partnerMove))
|
||||
|
|
@ -1680,12 +1678,6 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
|||
if (!AI_CanConfuse(battlerAtk, battlerDef, aiData->abilities[battlerDef], BATTLE_PARTNER(battlerAtk), move, aiData->partnerMove))
|
||||
ADJUST_SCORE(-10);
|
||||
break;
|
||||
case EFFECT_PARALYZE:
|
||||
if (!AI_CanParalyze(battlerAtk, battlerDef, aiData->abilities[battlerDef], move, aiData->partnerMove))
|
||||
ADJUST_SCORE(-10);
|
||||
if (!ShouldParalyze(battlerAtk, battlerDef, aiData->abilities[battlerDef]))
|
||||
ADJUST_SCORE(-5);
|
||||
break;
|
||||
case EFFECT_SUBSTITUTE:
|
||||
if (gBattleMons[battlerAtk].status2 & STATUS2_SUBSTITUTE || aiData->abilities[battlerDef] == ABILITY_INFILTRATOR)
|
||||
ADJUST_SCORE(-8);
|
||||
|
|
@ -1974,12 +1966,6 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
|||
if (B_MENTAL_HERB >= GEN_5 && aiData->holdEffects[battlerDef] == HOLD_EFFECT_MENTAL_HERB)
|
||||
ADJUST_SCORE(-6);
|
||||
break;
|
||||
case EFFECT_WILL_O_WISP:
|
||||
if (!AI_CanBurn(battlerAtk, battlerDef, aiData->abilities[battlerDef], BATTLE_PARTNER(battlerAtk), move, aiData->partnerMove))
|
||||
ADJUST_SCORE(-10);
|
||||
if (!ShouldBurn(battlerAtk, battlerDef, aiData->abilities[battlerDef]))
|
||||
ADJUST_SCORE(-5);
|
||||
break;
|
||||
case EFFECT_MEMENTO:
|
||||
if (CountUsablePartyMons(battlerAtk) == 0 || DoesPartnerHaveSameMoveEffect(BATTLE_PARTNER(battlerAtk), battlerDef, move, aiData->partnerMove))
|
||||
ADJUST_SCORE(-10);
|
||||
|
|
@ -2864,6 +2850,36 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
|||
return 0; // cannot even select
|
||||
} // move effect checks
|
||||
|
||||
// check non-volatile effects
|
||||
switch(nonVolatileStatus)
|
||||
{
|
||||
case MOVE_EFFECT_POISON:
|
||||
case MOVE_EFFECT_TOXIC:
|
||||
if (!AI_CanPoison(battlerAtk, battlerDef, abilityDef, move, aiData->partnerMove))
|
||||
ADJUST_SCORE(-10);
|
||||
if (!ShouldPoison(battlerAtk, battlerDef))
|
||||
ADJUST_SCORE(-5);
|
||||
break;
|
||||
case MOVE_EFFECT_SLEEP:
|
||||
if (!AI_CanPutToSleep(battlerAtk, battlerDef, abilityDef, move, aiData->partnerMove))
|
||||
ADJUST_SCORE(-10);
|
||||
if (PartnerMoveActivatesSleepClause(aiData->partnerMove))
|
||||
ADJUST_SCORE(-20);
|
||||
break;
|
||||
case MOVE_EFFECT_PARALYSIS:
|
||||
if (!AI_CanParalyze(battlerAtk, battlerDef, aiData->abilities[battlerDef], move, aiData->partnerMove))
|
||||
ADJUST_SCORE(-10);
|
||||
if (!ShouldParalyze(battlerAtk, battlerDef, aiData->abilities[battlerDef]))
|
||||
ADJUST_SCORE(-5);
|
||||
break;
|
||||
case MOVE_EFFECT_BURN:
|
||||
if (!AI_CanBurn(battlerAtk, battlerDef, aiData->abilities[battlerDef], BATTLE_PARTNER(battlerAtk), move, aiData->partnerMove))
|
||||
ADJUST_SCORE(-10);
|
||||
if (!ShouldBurn(battlerAtk, battlerDef, aiData->abilities[battlerDef]))
|
||||
ADJUST_SCORE(-5);
|
||||
break;
|
||||
}
|
||||
|
||||
// Choice items
|
||||
if (HOLD_EFFECT_CHOICE(aiData->holdEffects[battlerAtk]) && IsBattlerItemEnabled(battlerAtk))
|
||||
{
|
||||
|
|
@ -3790,10 +3806,26 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move)
|
|||
ADJUST_SCORE(-20); // Force switch if all your attacking moves are physical and you have Natural Cure.
|
||||
}
|
||||
|
||||
// Non-volatile statuses
|
||||
switch(GetMoveNonVolatileStatus(move))
|
||||
{
|
||||
case MOVE_EFFECT_POISON:
|
||||
case MOVE_EFFECT_TOXIC:
|
||||
IncreasePoisonScore(battlerAtk, battlerDef, move, &score);
|
||||
break;
|
||||
case MOVE_EFFECT_SLEEP:
|
||||
IncreaseSleepScore(battlerAtk, battlerDef, move, &score);
|
||||
break;
|
||||
case MOVE_EFFECT_PARALYSIS:
|
||||
IncreaseParalyzeScore(battlerAtk, battlerDef, move, &score);
|
||||
break;
|
||||
case MOVE_EFFECT_BURN:
|
||||
IncreaseBurnScore(battlerAtk, battlerDef, move, &score);
|
||||
break;
|
||||
}
|
||||
// move effect checks
|
||||
switch (moveEffect)
|
||||
{
|
||||
case EFFECT_SLEEP:
|
||||
case EFFECT_YAWN:
|
||||
IncreaseSleepScore(battlerAtk, battlerDef, move, &score);
|
||||
break;
|
||||
|
|
@ -4029,10 +4061,6 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move)
|
|||
if (ShouldRecover(battlerAtk, battlerDef, move, 50, AI_DEFENDING))
|
||||
ADJUST_SCORE(GOOD_EFFECT);
|
||||
break;
|
||||
case EFFECT_TOXIC:
|
||||
case EFFECT_POISON:
|
||||
IncreasePoisonScore(battlerAtk, battlerDef, move, &score);
|
||||
break;
|
||||
case EFFECT_LIGHT_SCREEN:
|
||||
case EFFECT_REFLECT:
|
||||
case EFFECT_AURORA_VEIL:
|
||||
|
|
@ -4081,9 +4109,6 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move)
|
|||
case EFFECT_CONFUSE:
|
||||
IncreaseConfusionScore(battlerAtk, battlerDef, move, &score);
|
||||
break;
|
||||
case EFFECT_PARALYZE:
|
||||
IncreaseParalyzeScore(battlerAtk, battlerDef, move, &score);
|
||||
break;
|
||||
case EFFECT_SUBSTITUTE:
|
||||
case EFFECT_SHED_TAIL:
|
||||
ADJUST_SCORE(IncreaseSubstituteMoveScore(battlerAtk, battlerDef, move));
|
||||
|
|
@ -4164,13 +4189,25 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move)
|
|||
}
|
||||
break;
|
||||
case EFFECT_ENCORE:
|
||||
{
|
||||
if (GetActiveGimmick(battlerDef) == GIMMICK_DYNAMAX)
|
||||
break;
|
||||
else if (gDisableStructs[battlerDef].encoreTimer == 0
|
||||
|
||||
bool32 encourage = gBattleMoveEffects[GetMoveEffect(gLastMoves[battlerDef])].encourageEncore;
|
||||
|
||||
switch(GetMoveNonVolatileStatus(gLastMoves[battlerDef]))
|
||||
{
|
||||
case MOVE_EFFECT_POISON:
|
||||
case MOVE_EFFECT_PARALYSIS:
|
||||
encourage = TRUE;
|
||||
break;
|
||||
}
|
||||
if (gDisableStructs[battlerDef].encoreTimer == 0
|
||||
&& (B_MENTAL_HERB < GEN_5 || aiData->holdEffects[battlerDef] != HOLD_EFFECT_MENTAL_HERB)
|
||||
&& (gBattleMoveEffects[GetMoveEffect(gLastMoves[battlerDef])].encourageEncore))
|
||||
&& (encourage))
|
||||
ADJUST_SCORE(BEST_EFFECT);
|
||||
break;
|
||||
}
|
||||
case EFFECT_SLEEP_TALK:
|
||||
case EFFECT_SNORE:
|
||||
if (!IsWakeupTurn(battlerAtk) && gBattleMons[battlerAtk].status1 & STATUS1_SLEEP)
|
||||
|
|
@ -4464,9 +4501,6 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move)
|
|||
break;
|
||||
case EFFECT_TORMENT:
|
||||
break;
|
||||
case EFFECT_WILL_O_WISP:
|
||||
IncreaseBurnScore(battlerAtk, battlerDef, move, &score);
|
||||
break;
|
||||
case EFFECT_FOLLOW_ME:
|
||||
if (isDoubleBattle
|
||||
&& GetMoveTarget(move) == MOVE_TARGET_USER
|
||||
|
|
@ -5360,8 +5394,7 @@ static s32 AI_ForceSetupFirstTurn(u32 battlerAtk, u32 battlerDef, u32 move, s32
|
|||
case EFFECT_ACCURACY_DOWN_2:
|
||||
case EFFECT_EVASION_DOWN_2:
|
||||
case EFFECT_REFLECT:
|
||||
case EFFECT_POISON:
|
||||
case EFFECT_PARALYZE:
|
||||
case EFFECT_NON_VOLATILE_STATUS:
|
||||
case EFFECT_SUBSTITUTE:
|
||||
case EFFECT_LEECH_SEED:
|
||||
case EFFECT_MINIMIZE:
|
||||
|
|
@ -5372,7 +5405,6 @@ static s32 AI_ForceSetupFirstTurn(u32 battlerAtk, u32 battlerDef, u32 move, s32
|
|||
case EFFECT_DEFENSE_CURL:
|
||||
case EFFECT_TORMENT:
|
||||
case EFFECT_FLATTER:
|
||||
case EFFECT_WILL_O_WISP:
|
||||
case EFFECT_INGRAIN:
|
||||
case EFFECT_IMPRISON:
|
||||
case EFFECT_TICKLE:
|
||||
|
|
@ -5741,7 +5773,6 @@ static s32 AI_HPAware(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
|||
case EFFECT_SPECIAL_DEFENSE_DOWN_2:
|
||||
case EFFECT_ACCURACY_DOWN_2:
|
||||
case EFFECT_EVASION_DOWN_2:
|
||||
case EFFECT_POISON:
|
||||
case EFFECT_PAIN_SPLIT:
|
||||
case EFFECT_PERISH_SONG:
|
||||
case EFFECT_SAFEGUARD:
|
||||
|
|
@ -5757,6 +5788,13 @@ static s32 AI_HPAware(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
|||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
switch(GetMoveNonVolatileStatus(move))
|
||||
{
|
||||
case MOVE_EFFECT_POISON:
|
||||
ADJUST_SCORE(-2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
|
|
@ -204,11 +204,16 @@ static bool32 ShouldSwitchIfHasBadOdds(u32 battler)
|
|||
aiMoveEffect = GetMoveEffect(aiMove);
|
||||
if (aiMove != MOVE_NONE)
|
||||
{
|
||||
u32 nonVolatileStatus = GetMoveNonVolatileStatus(aiMove);
|
||||
// Check if mon has an "important" status move
|
||||
if (aiMoveEffect == EFFECT_REFLECT || aiMoveEffect == EFFECT_LIGHT_SCREEN
|
||||
|| aiMoveEffect == EFFECT_SPIKES || aiMoveEffect == EFFECT_TOXIC_SPIKES || aiMoveEffect == EFFECT_STEALTH_ROCK || aiMoveEffect == EFFECT_STICKY_WEB || aiMoveEffect == EFFECT_LEECH_SEED
|
||||
|| aiMoveEffect == EFFECT_EXPLOSION
|
||||
|| aiMoveEffect == EFFECT_SLEEP || aiMoveEffect == EFFECT_YAWN || aiMoveEffect == EFFECT_TOXIC || aiMoveEffect == EFFECT_WILL_O_WISP || aiMoveEffect == EFFECT_PARALYZE
|
||||
|| nonVolatileStatus == MOVE_EFFECT_SLEEP
|
||||
|| nonVolatileStatus == MOVE_EFFECT_TOXIC
|
||||
|| nonVolatileStatus == MOVE_EFFECT_PARALYSIS
|
||||
|| nonVolatileStatus == MOVE_EFFECT_BURN
|
||||
|| aiMoveEffect == EFFECT_YAWN
|
||||
|| aiMoveEffect == EFFECT_TRICK || aiMoveEffect == EFFECT_TRICK_ROOM || aiMoveEffect== EFFECT_WONDER_ROOM || aiMoveEffect == EFFECT_PSYCHO_SHIFT || aiMoveEffect == EFFECT_FIRST_TURN_ONLY
|
||||
)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1504,20 +1504,9 @@ bool32 IsAromaVeilProtectedEffect(enum BattleMoveEffects moveEffect)
|
|||
}
|
||||
}
|
||||
|
||||
bool32 IsNonVolatileStatusMoveEffect(enum BattleMoveEffects moveEffect)
|
||||
bool32 IsNonVolatileStatusMove(u32 move)
|
||||
{
|
||||
switch (moveEffect)
|
||||
{
|
||||
case EFFECT_SLEEP:
|
||||
case EFFECT_TOXIC:
|
||||
case EFFECT_POISON:
|
||||
case EFFECT_PARALYZE:
|
||||
case EFFECT_WILL_O_WISP:
|
||||
case EFFECT_YAWN:
|
||||
return TRUE;
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
return GetMoveNonVolatileStatus(move) != MOVE_EFFECT_NONE;
|
||||
}
|
||||
|
||||
bool32 IsConfusionMoveEffect(enum BattleMoveEffects moveEffect)
|
||||
|
|
@ -1678,8 +1667,10 @@ bool32 IsMoveEncouragedToHit(u32 battlerAtk, u32 battlerDef, u32 move)
|
|||
if (gAiLogicData->abilities[battlerDef] == ABILITY_NO_GUARD || gAiLogicData->abilities[battlerAtk] == ABILITY_NO_GUARD)
|
||||
return TRUE;
|
||||
|
||||
enum BattleMoveEffects effect = GetMoveEffect(move);
|
||||
if (B_TOXIC_NEVER_MISS >= GEN_6 && effect == EFFECT_TOXIC && IS_BATTLER_OF_TYPE(battlerAtk, TYPE_POISON))
|
||||
u32 nonVolatileStatus = GetMoveNonVolatileStatus(move);
|
||||
if (B_TOXIC_NEVER_MISS >= GEN_6
|
||||
&& nonVolatileStatus == MOVE_EFFECT_TOXIC
|
||||
&& IS_BATTLER_OF_TYPE(battlerAtk, TYPE_POISON))
|
||||
return TRUE;
|
||||
|
||||
// discouraged from hitting
|
||||
|
|
@ -2201,6 +2192,20 @@ bool32 HasMoveEffect(u32 battlerId, enum BattleMoveEffects effect)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
bool32 HasNonVolatileMoveEffect(u32 battlerId, u32 effect)
|
||||
{
|
||||
s32 i;
|
||||
u16 *moves = GetMovesArray(battlerId);
|
||||
|
||||
for (i = 0; i < MAX_MON_MOVES; i++)
|
||||
{
|
||||
if (GetMoveNonVolatileStatus(moves[i]) == effect)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool32 IsPowerBasedOnStatus(u32 battlerId, enum BattleMoveEffects effect, u32 argument)
|
||||
{
|
||||
s32 i;
|
||||
|
|
@ -2348,7 +2353,8 @@ bool32 HasSleepMoveWithLowAccuracy(u32 battlerAtk, u32 battlerDef)
|
|||
if (IsMoveUnusable(i, moves[i], moveLimitations))
|
||||
continue;
|
||||
|
||||
if (GetMoveEffect(moves[i]) == EFFECT_SLEEP && gAiLogicData->moveAccuracy[battlerAtk][battlerDef][i] < 85)
|
||||
if (GetMoveNonVolatileStatus(moves[i]) == MOVE_EFFECT_SLEEP
|
||||
&& gAiLogicData->moveAccuracy[battlerAtk][battlerDef][i] < 85)
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
|
|
@ -2594,13 +2600,17 @@ static inline bool32 IsMoveSleepClauseTrigger(u32 move)
|
|||
// Sleeping effects like Sleep Powder, Yawn, Dark Void, etc.
|
||||
switch (effect)
|
||||
{
|
||||
case EFFECT_SLEEP:
|
||||
case EFFECT_YAWN:
|
||||
case EFFECT_DARK_VOID:
|
||||
return TRUE;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
switch(GetMoveNonVolatileStatus(move))
|
||||
{
|
||||
case MOVE_EFFECT_SLEEP:
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
// Sleeping effects like G-Max Befuddle, G-Max Snooze, etc.
|
||||
u32 additionalEffectCount = GetMoveAdditionalEffectCount(move);
|
||||
|
|
@ -3614,13 +3624,14 @@ bool32 PartnerMoveEffectIsStatusSameTarget(u32 battlerAtkPartner, u32 battlerDef
|
|||
return FALSE;
|
||||
|
||||
enum BattleMoveEffects partnerEffect = GetMoveEffect(partnerMove);
|
||||
u32 nonVolatileStatus = GetMoveNonVolatileStatus(partnerMove);
|
||||
if (partnerMove != MOVE_NONE
|
||||
&& gBattleStruct->moveTarget[battlerAtkPartner] == battlerDef
|
||||
&& (partnerEffect == EFFECT_SLEEP
|
||||
|| partnerEffect == EFFECT_POISON
|
||||
|| partnerEffect == EFFECT_TOXIC
|
||||
|| partnerEffect == EFFECT_PARALYZE
|
||||
|| partnerEffect == EFFECT_WILL_O_WISP
|
||||
&& (nonVolatileStatus == MOVE_EFFECT_POISON
|
||||
|| nonVolatileStatus == MOVE_EFFECT_TOXIC
|
||||
|| nonVolatileStatus == MOVE_EFFECT_SLEEP
|
||||
|| nonVolatileStatus == MOVE_EFFECT_PARALYSIS
|
||||
|| nonVolatileStatus == MOVE_EFFECT_BURN
|
||||
|| partnerEffect == EFFECT_YAWN))
|
||||
return TRUE;
|
||||
return FALSE;
|
||||
|
|
@ -4494,11 +4505,10 @@ u32 IncreaseSubstituteMoveScore(u32 battlerAtk, u32 battlerDef, u32 move)
|
|||
if (IsBattlerPredictedToSwitch(battlerDef))
|
||||
scoreIncrease += DECENT_EFFECT;
|
||||
|
||||
if (HasMoveEffect(battlerDef, EFFECT_SLEEP)
|
||||
|| HasMoveEffect(battlerDef, EFFECT_TOXIC)
|
||||
|| HasMoveEffect(battlerDef, EFFECT_POISON)
|
||||
|| HasMoveEffect(battlerDef, EFFECT_PARALYZE)
|
||||
|| HasMoveEffect(battlerDef, EFFECT_WILL_O_WISP)
|
||||
if (HasNonVolatileMoveEffect(battlerDef, MOVE_EFFECT_SLEEP)
|
||||
|| HasNonVolatileMoveEffect(battlerDef, MOVE_EFFECT_TOXIC)
|
||||
|| HasNonVolatileMoveEffect(battlerDef, MOVE_EFFECT_PARALYSIS)
|
||||
|| HasNonVolatileMoveEffect(battlerDef, MOVE_EFFECT_BURN)
|
||||
|| HasMoveEffect(battlerDef, EFFECT_CONFUSE)
|
||||
|| HasMoveEffect(battlerDef, EFFECT_LEECH_SEED))
|
||||
scoreIncrease += GOOD_EFFECT;
|
||||
|
|
|
|||
|
|
@ -4002,25 +4002,26 @@ static bool32 IsDomeStatusMoveEffect(u32 move)
|
|||
{
|
||||
switch(GetMoveEffect(move))
|
||||
{
|
||||
case EFFECT_SLEEP:
|
||||
case EFFECT_CONFUSE:
|
||||
case EFFECT_DISABLE:
|
||||
case EFFECT_POISON:
|
||||
case EFFECT_PARALYZE:
|
||||
case EFFECT_TOXIC:
|
||||
case EFFECT_LEECH_SEED:
|
||||
case EFFECT_TAUNT:
|
||||
case EFFECT_TORMENT:
|
||||
case EFFECT_WILL_O_WISP:
|
||||
case EFFECT_ENCORE:
|
||||
case EFFECT_ATTRACT:
|
||||
case EFFECT_NIGHTMARE:
|
||||
case EFFECT_YAWN:
|
||||
case EFFECT_CURSE:
|
||||
return TRUE;
|
||||
default:
|
||||
return MoveHasAdditionalEffect(move, MOVE_EFFECT_WRAP);
|
||||
break;
|
||||
}
|
||||
|
||||
if (GetMoveNonVolatileStatus(move) != MOVE_EFFECT_NONE)
|
||||
return TRUE;
|
||||
if (MoveHasAdditionalEffect(move, MOVE_EFFECT_WRAP))
|
||||
return TRUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static bool32 IsDomeRareMove(u32 move)
|
||||
|
|
@ -4085,8 +4086,6 @@ static bool32 IsDomeComboMove(u32 move)
|
|||
case EFFECT_TOXIC_SPIKES:
|
||||
case EFFECT_STEALTH_ROCK:
|
||||
case EFFECT_STICKY_WEB:
|
||||
// Inflicting sleep & related effects
|
||||
case EFFECT_SLEEP:
|
||||
case EFFECT_YAWN:
|
||||
case EFFECT_DREAM_EATER:
|
||||
case EFFECT_NIGHTMARE:
|
||||
|
|
@ -4121,11 +4120,21 @@ static bool32 IsDomeComboMove(u32 move)
|
|||
break;
|
||||
}
|
||||
|
||||
// Move flags
|
||||
if (MoveAlwaysHitsInRain(move))
|
||||
return TRUE;
|
||||
else if (MoveAlwaysHitsInHailSnow(move))
|
||||
return TRUE;
|
||||
|
||||
// Inflicting sleep & related effects
|
||||
switch(GetMoveNonVolatileStatus(move))
|
||||
{
|
||||
case MOVE_EFFECT_SLEEP:
|
||||
return TRUE;
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1280,7 +1280,7 @@ static void Cmd_attackcanceler(void)
|
|||
ABILITY_RUN_SCRIPT))
|
||||
return;
|
||||
|
||||
if (effect == EFFECT_PARALYZE)
|
||||
if (GetMoveNonVolatileStatus(gCurrentMove) == MOVE_EFFECT_PARALYSIS)
|
||||
{
|
||||
if (CanAbilityAbsorbMove(gBattlerAttacker,
|
||||
gBattlerTarget,
|
||||
|
|
@ -1493,9 +1493,12 @@ static bool32 AccuracyCalcHelper(u32 move, u32 battler)
|
|||
bool32 effect = FALSE;
|
||||
u32 ability = ABILITY_NONE;
|
||||
enum BattleMoveEffects moveEffect = GetMoveEffect(move);
|
||||
u32 nonVolatileStatus = GetMoveNonVolatileStatus(move);
|
||||
|
||||
if ((gStatuses3[battler] & STATUS3_ALWAYS_HITS && gDisableStructs[battler].battlerWithSureHit == gBattlerAttacker)
|
||||
|| (B_TOXIC_NEVER_MISS >= GEN_6 && moveEffect == EFFECT_TOXIC && IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_POISON))
|
||||
|| (B_TOXIC_NEVER_MISS >= GEN_6
|
||||
&& nonVolatileStatus == MOVE_EFFECT_TOXIC
|
||||
&& IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_POISON))
|
||||
|| gStatuses4[battler] & STATUS4_GLAIVE_RUSH)
|
||||
{
|
||||
effect = TRUE;
|
||||
|
|
|
|||
|
|
@ -809,6 +809,22 @@ static void AddMovePoints(u8 caseId, u16 arg1, u8 arg2, u8 arg3)
|
|||
default:
|
||||
break;
|
||||
}
|
||||
switch(GetMoveNonVolatileStatus(arg2))
|
||||
{
|
||||
case MOVE_EFFECT_SLEEP:
|
||||
baseFromEffect++;
|
||||
break;
|
||||
case MOVE_EFFECT_PARALYSIS:
|
||||
baseFromEffect += 3;
|
||||
break;
|
||||
case MOVE_EFFECT_BURN:
|
||||
case MOVE_EFFECT_POISON:
|
||||
baseFromEffect += 4;
|
||||
break;
|
||||
case MOVE_EFFECT_TOXIC:
|
||||
baseFromEffect += 5;
|
||||
break;
|
||||
}
|
||||
|
||||
// Guaranteed hit but without negative priority
|
||||
if (GetMoveAccuracy(move) == 0 && GetMovePriority(move) >= 0)
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ struct BattlePyramidRequirement {
|
|||
u8 nEvoItems;
|
||||
};
|
||||
|
||||
// EFFECT_PARALYZE, MOVE_EFFECT_PARALYZE (30% or more)
|
||||
// MOVE_EFFECT_PARALYZE (30% or more)
|
||||
static const u16 sParalyzingMoves[] = {
|
||||
//MOVE_THUNDER_PUNCH,
|
||||
MOVE_BODY_SLAM,
|
||||
|
|
@ -35,7 +35,7 @@ static const u16 sParalyzingMoves[] = {
|
|||
MOVE_COMBAT_TORQUE,
|
||||
};
|
||||
|
||||
// MOVE_EFFECT_POISON (30% or more), EFFECT_POISON, MOVE_EFFECT_TOXIC, EFFECT_TOXIC, EFFECT_TOXIC_THREAD
|
||||
// MOVE_EFFECT_POISON (30% or more), MOVE_EFFECT_TOXIC, EFFECT_TOXIC_THREAD
|
||||
static const u16 sPoisoningMoves[] = {
|
||||
MOVE_POISON_STING,
|
||||
//MOVE_TWINEEDLE,
|
||||
|
|
@ -57,7 +57,7 @@ static const u16 sPoisoningMoves[] = {
|
|||
MOVE_TOXIC_THREAD,
|
||||
};
|
||||
|
||||
// MOVE_EFFECT_BURN, EFFECT_WILL_O_WISP
|
||||
// MOVE_EFFECT_BURN
|
||||
static const u16 sBurningMoves[] = {
|
||||
MOVE_WILL_O_WISP,
|
||||
//MOVE_EMBER,
|
||||
|
|
|
|||
|
|
@ -16,10 +16,10 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] =
|
|||
.battleTvScore = 1,
|
||||
},
|
||||
|
||||
[EFFECT_SLEEP] =
|
||||
[EFFECT_NON_VOLATILE_STATUS] =
|
||||
{
|
||||
.battleScript = BattleScript_EffectNonVolatileStatus,
|
||||
.battleTvScore = 1,
|
||||
.battleTvScore = 0, // Handled within the battle TV functions
|
||||
},
|
||||
|
||||
[EFFECT_ABSORB] =
|
||||
|
|
@ -183,13 +183,6 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] =
|
|||
.encourageEncore = TRUE,
|
||||
},
|
||||
|
||||
[EFFECT_TOXIC] =
|
||||
{
|
||||
.battleScript = BattleScript_EffectNonVolatileStatus,
|
||||
.battleTvScore = 5,
|
||||
.encourageEncore = TRUE,
|
||||
},
|
||||
|
||||
[EFFECT_LIGHT_SCREEN] =
|
||||
{
|
||||
.battleScript = BattleScript_EffectLightScreen,
|
||||
|
|
@ -366,20 +359,6 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] =
|
|||
.encourageEncore = TRUE,
|
||||
},
|
||||
|
||||
[EFFECT_POISON] =
|
||||
{
|
||||
.battleScript = BattleScript_EffectNonVolatileStatus,
|
||||
.battleTvScore = 4,
|
||||
.encourageEncore = TRUE,
|
||||
},
|
||||
|
||||
[EFFECT_PARALYZE] =
|
||||
{
|
||||
.battleScript = BattleScript_EffectNonVolatileStatus,
|
||||
.battleTvScore = 4,
|
||||
.encourageEncore = TRUE,
|
||||
},
|
||||
|
||||
[EFFECT_TWO_TURNS_ATTACK] =
|
||||
{
|
||||
.battleScript = BattleScript_EffectTwoTurnsAttack,
|
||||
|
|
@ -887,13 +866,6 @@ const struct BattleMoveEffect gBattleMoveEffects[NUM_BATTLE_MOVE_EFFECTS] =
|
|||
.battleTvScore = 7,
|
||||
},
|
||||
|
||||
[EFFECT_WILL_O_WISP] =
|
||||
{
|
||||
.battleScript = BattleScript_EffectNonVolatileStatus,
|
||||
.battleTvScore = 5,
|
||||
.encourageEncore = TRUE,
|
||||
},
|
||||
|
||||
[EFFECT_MEMENTO] =
|
||||
{
|
||||
.battleScript = BattleScript_EffectMemento,
|
||||
|
|
|
|||
|
|
@ -1311,7 +1311,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
|
|||
.description = COMPOUND_STRING(
|
||||
"A soothing song lulls the\n"
|
||||
"foe into a deep slumber."),
|
||||
.effect = EFFECT_SLEEP,
|
||||
.effect = EFFECT_NON_VOLATILE_STATUS,
|
||||
.power = 0,
|
||||
.type = TYPE_NORMAL,
|
||||
.accuracy = 55,
|
||||
|
|
@ -2084,7 +2084,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
|
|||
.description = COMPOUND_STRING(
|
||||
"Scatters a toxic powder\n"
|
||||
"that may poison the foe."),
|
||||
.effect = EFFECT_POISON,
|
||||
.effect = EFFECT_NON_VOLATILE_STATUS,
|
||||
.power = 0,
|
||||
.type = TYPE_POISON,
|
||||
.accuracy = 75,
|
||||
|
|
@ -2110,7 +2110,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
|
|||
.description = COMPOUND_STRING(
|
||||
"Scatters a powder that may\n"
|
||||
"paralyze the foe."),
|
||||
.effect = EFFECT_PARALYZE,
|
||||
.effect = EFFECT_NON_VOLATILE_STATUS,
|
||||
.power = 0,
|
||||
.type = TYPE_GRASS,
|
||||
.accuracy = 75,
|
||||
|
|
@ -2136,7 +2136,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
|
|||
.description = COMPOUND_STRING(
|
||||
"Scatters a powder that may\n"
|
||||
"cause the foe to sleep."),
|
||||
.effect = EFFECT_SLEEP,
|
||||
.effect = EFFECT_NON_VOLATILE_STATUS,
|
||||
.power = 0,
|
||||
.type = TYPE_GRASS,
|
||||
.accuracy = 75,
|
||||
|
|
@ -2321,7 +2321,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
|
|||
.description = COMPOUND_STRING(
|
||||
"A weak jolt of electricity\n"
|
||||
"that paralyzes the foe."),
|
||||
.effect = EFFECT_PARALYZE,
|
||||
.effect = EFFECT_NON_VOLATILE_STATUS,
|
||||
.power = 0,
|
||||
.type = TYPE_ELECTRIC,
|
||||
.accuracy = B_UPDATED_MOVE_DATA >= GEN_7 ? 90 : 100,
|
||||
|
|
@ -2473,7 +2473,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
|
|||
.description = COMPOUND_STRING(
|
||||
"Poisons the foe with an\n"
|
||||
"intensifying toxin."),
|
||||
.effect = EFFECT_TOXIC,
|
||||
.effect = EFFECT_NON_VOLATILE_STATUS,
|
||||
.power = 0,
|
||||
.type = TYPE_POISON,
|
||||
.accuracy = B_UPDATED_MOVE_DATA >= GEN_5 ? 90 : 85,
|
||||
|
|
@ -2549,7 +2549,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
|
|||
.description = COMPOUND_STRING(
|
||||
"A hypnotizing move that\n"
|
||||
"may induce sleep."),
|
||||
.effect = EFFECT_SLEEP,
|
||||
.effect = EFFECT_NON_VOLATILE_STATUS,
|
||||
.power = 0,
|
||||
.type = TYPE_PSYCHIC,
|
||||
.accuracy = 60,
|
||||
|
|
@ -3656,7 +3656,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
|
|||
#else
|
||||
.accuracy = 75,
|
||||
#endif
|
||||
.effect = EFFECT_PARALYZE,
|
||||
.effect = EFFECT_NON_VOLATILE_STATUS,
|
||||
.power = 0,
|
||||
.type = TYPE_NORMAL,
|
||||
.pp = 30,
|
||||
|
|
@ -3715,7 +3715,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
|
|||
#else
|
||||
.accuracy = 55,
|
||||
#endif
|
||||
.effect = EFFECT_POISON,
|
||||
.effect = EFFECT_NON_VOLATILE_STATUS,
|
||||
.power = 0,
|
||||
.type = TYPE_POISON,
|
||||
.pp = 40,
|
||||
|
|
@ -3785,7 +3785,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
|
|||
.description = COMPOUND_STRING(
|
||||
"Demands a kiss with a scary\n"
|
||||
"face that induces sleep."),
|
||||
.effect = EFFECT_SLEEP,
|
||||
.effect = EFFECT_NON_VOLATILE_STATUS,
|
||||
.power = 0,
|
||||
.type = TYPE_NORMAL,
|
||||
.accuracy = 75,
|
||||
|
|
@ -3926,7 +3926,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
|
|||
.description = COMPOUND_STRING(
|
||||
"Scatters a cloud of spores\n"
|
||||
"that always induce sleep."),
|
||||
.effect = EFFECT_SLEEP,
|
||||
.effect = EFFECT_NON_VOLATILE_STATUS,
|
||||
.power = 0,
|
||||
.type = TYPE_GRASS,
|
||||
.accuracy = 100,
|
||||
|
|
@ -6920,7 +6920,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
|
|||
.description = COMPOUND_STRING(
|
||||
"Inflicts a burn on the foe\n"
|
||||
"with intense fire."),
|
||||
.effect = EFFECT_WILL_O_WISP,
|
||||
.effect = EFFECT_NON_VOLATILE_STATUS,
|
||||
.power = 0,
|
||||
.type = TYPE_FIRE,
|
||||
.accuracy = B_UPDATED_MOVE_DATA >= GEN_6 ? 85 : 75,
|
||||
|
|
@ -8459,7 +8459,7 @@ const struct MoveInfo gMovesInfo[MOVES_COUNT_ALL] =
|
|||
.description = COMPOUND_STRING(
|
||||
"Lulls the foe into sleep\n"
|
||||
"with a pleasant melody."),
|
||||
.effect = EFFECT_SLEEP,
|
||||
.effect = EFFECT_NON_VOLATILE_STATUS,
|
||||
.power = 0,
|
||||
.type = TYPE_GRASS,
|
||||
.accuracy = 55,
|
||||
|
|
|
|||
|
|
@ -30,8 +30,10 @@ SINGLE_BATTLE_TEST("Corrosion can poison or badly poison a Steel type with a sta
|
|||
PARAMETRIZE { move = MOVE_TOXIC; }
|
||||
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_POISON_POWDER) == EFFECT_POISON);
|
||||
ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_TOXIC);
|
||||
ASSUME(GetMoveEffect(MOVE_POISON_POWDER) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_POISON_POWDER) == MOVE_EFFECT_POISON);
|
||||
ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_TOXIC) == MOVE_EFFECT_TOXIC);
|
||||
PLAYER(SPECIES_SALANDIT) { Ability(ABILITY_CORROSION); }
|
||||
OPPONENT(SPECIES_BELDUM);
|
||||
} WHEN {
|
||||
|
|
@ -111,8 +113,10 @@ SINGLE_BATTLE_TEST("If a Poison- or Steel-type Pokémon with Corrosion poisons a
|
|||
PARAMETRIZE { move = MOVE_TOXIC; }
|
||||
PARAMETRIZE { move = MOVE_POISON_POWDER; }
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_TOXIC);
|
||||
ASSUME(GetMoveEffect(MOVE_POISON_POWDER) == EFFECT_POISON);
|
||||
ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_TOXIC) == MOVE_EFFECT_TOXIC);
|
||||
ASSUME(GetMoveEffect(MOVE_POISON_POWDER) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_POISON_POWDER) == MOVE_EFFECT_POISON);
|
||||
PLAYER(SPECIES_SALANDIT) { Ability(ABILITY_CORROSION); }
|
||||
OPPONENT(SPECIES_ABRA) { Ability(ABILITY_SYNCHRONIZE); }
|
||||
} WHEN {
|
||||
|
|
@ -138,8 +142,10 @@ SINGLE_BATTLE_TEST("Corrosion cannot bypass moves that prevent poisoning such as
|
|||
PARAMETRIZE { move = MOVE_TOXIC; }
|
||||
PARAMETRIZE { move = MOVE_POISON_POWDER; }
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_TOXIC);
|
||||
ASSUME(GetMoveEffect(MOVE_POISON_POWDER) == EFFECT_POISON);
|
||||
ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_TOXIC) == MOVE_EFFECT_TOXIC);
|
||||
ASSUME(GetMoveEffect(MOVE_POISON_POWDER) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_POISON_POWDER) == MOVE_EFFECT_POISON);
|
||||
PLAYER(SPECIES_SALANDIT) { Ability(ABILITY_CORROSION); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
|
|
@ -160,8 +166,10 @@ SINGLE_BATTLE_TEST("Corrosion cannot bypass abilities that prevent poisoning suc
|
|||
PARAMETRIZE { move = MOVE_TOXIC; }
|
||||
PARAMETRIZE { move = MOVE_POISON_POWDER; }
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_TOXIC);
|
||||
ASSUME(GetMoveEffect(MOVE_POISON_POWDER) == EFFECT_POISON);
|
||||
ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_TOXIC) == MOVE_EFFECT_TOXIC);
|
||||
ASSUME(GetMoveEffect(MOVE_POISON_POWDER) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_POISON_POWDER) == MOVE_EFFECT_POISON);
|
||||
PLAYER(SPECIES_SALANDIT) { Ability(ABILITY_CORROSION); }
|
||||
OPPONENT(SPECIES_SNORLAX) { Ability(ABILITY_IMMUNITY); }
|
||||
} WHEN {
|
||||
|
|
@ -182,8 +190,10 @@ SINGLE_BATTLE_TEST("Corrosion allows the Pokémon with the ability to poison a S
|
|||
PARAMETRIZE { move = MOVE_TOXIC; }
|
||||
PARAMETRIZE { move = MOVE_POISON_POWDER; }
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_TOXIC);
|
||||
ASSUME(GetMoveEffect(MOVE_POISON_POWDER) == EFFECT_POISON);
|
||||
ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_TOXIC) == MOVE_EFFECT_TOXIC);
|
||||
ASSUME(GetMoveEffect(MOVE_POISON_POWDER) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_POISON_POWDER) == MOVE_EFFECT_POISON);
|
||||
ASSUME(GetMoveEffect(MOVE_MAGIC_COAT) == EFFECT_MAGIC_COAT);
|
||||
PLAYER(SPECIES_SALANDIT) { Ability(ABILITY_CORROSION); }
|
||||
OPPONENT(SPECIES_BELDUM);
|
||||
|
|
@ -206,8 +216,10 @@ SINGLE_BATTLE_TEST("Corrosion's effect is lost if the move used by the Pokémon
|
|||
PARAMETRIZE { move = MOVE_TOXIC; }
|
||||
PARAMETRIZE { move = MOVE_POISON_POWDER; }
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_TOXIC);
|
||||
ASSUME(GetMoveEffect(MOVE_POISON_POWDER) == EFFECT_POISON);
|
||||
ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_TOXIC) == MOVE_EFFECT_TOXIC);
|
||||
ASSUME(GetMoveEffect(MOVE_POISON_POWDER) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_POISON_POWDER) == MOVE_EFFECT_POISON);
|
||||
ASSUME(GetMoveEffect(MOVE_MAGIC_COAT) == EFFECT_MAGIC_COAT);
|
||||
PLAYER(SPECIES_SALANDIT) { Ability(ABILITY_CORROSION); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
|
|
|
|||
|
|
@ -3,15 +3,15 @@
|
|||
|
||||
ASSUMPTIONS
|
||||
{
|
||||
ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_TOXIC);
|
||||
ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_TOXIC) == MOVE_EFFECT_TOXIC);
|
||||
ASSUME(GetMoveEffect(MOVE_POISON_GAS) == EFFECT_POISON);
|
||||
ASSUME(GetMoveEffect(MOVE_POISON_GAS) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_POISON_GAS) == MOVE_EFFECT_POISON);
|
||||
ASSUME(GetMoveEffect(MOVE_WILL_O_WISP) == EFFECT_WILL_O_WISP);
|
||||
ASSUME(GetMoveEffect(MOVE_WILL_O_WISP) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_WILL_O_WISP) == MOVE_EFFECT_BURN);
|
||||
ASSUME(GetMoveEffect(MOVE_THUNDER_WAVE) == EFFECT_PARALYZE);
|
||||
ASSUME(GetMoveEffect(MOVE_THUNDER_WAVE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_THUNDER_WAVE) == MOVE_EFFECT_PARALYSIS);
|
||||
ASSUME(GetMoveEffect(MOVE_HYPNOSIS) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_HYPNOSIS) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_HYPNOSIS) == MOVE_EFFECT_SLEEP);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -43,7 +43,8 @@ SINGLE_BATTLE_TEST("Hyper Cutter prevents Attack stage reduction from moves")
|
|||
SINGLE_BATTLE_TEST("Hyper Cutter doesn't prevent Attack reduction from burn")
|
||||
{
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_WILL_O_WISP) == EFFECT_WILL_O_WISP);
|
||||
ASSUME(GetMoveEffect(MOVE_WILL_O_WISP) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_WILL_O_WISP) == MOVE_EFFECT_BURN);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_KRABBY) { Ability(ABILITY_HYPER_CUTTER); }
|
||||
} WHEN {
|
||||
|
|
|
|||
|
|
@ -18,7 +18,8 @@ SINGLE_BATTLE_TEST("Immunity prevents Poison Sting poison")
|
|||
SINGLE_BATTLE_TEST("Immunity prevents Toxic bad poison")
|
||||
{
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_TOXIC);
|
||||
ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_TOXIC) == MOVE_EFFECT_TOXIC);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_SNORLAX) { Ability(ABILITY_IMMUNITY); }
|
||||
} WHEN {
|
||||
|
|
|
|||
|
|
@ -4,7 +4,8 @@
|
|||
SINGLE_BATTLE_TEST("Insomnia prevents sleep")
|
||||
{
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
PLAYER(SPECIES_DROWZEE) { Ability(ABILITY_INSOMNIA); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
|
|
|
|||
|
|
@ -11,10 +11,14 @@ SINGLE_BATTLE_TEST("Leaf Guard prevents non-volatile status conditions in sun")
|
|||
PARAMETRIZE { move = MOVE_TOXIC; status = STATUS1_TOXIC_POISON; }
|
||||
// PARAMETRIZE { move = MOVE_POWDER_SNOW; status = STATUS1_FREEZE; } // Pointless since you can't freeze in sunlight anyway
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_WILL_O_WISP) == EFFECT_WILL_O_WISP);
|
||||
ASSUME(GetMoveEffect(MOVE_HYPNOSIS) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_THUNDER_WAVE) == EFFECT_PARALYZE);
|
||||
ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_TOXIC);
|
||||
ASSUME(GetMoveEffect(MOVE_WILL_O_WISP) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_WILL_O_WISP) == MOVE_EFFECT_BURN);
|
||||
ASSUME(GetMoveEffect(MOVE_HYPNOSIS) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_HYPNOSIS) == MOVE_EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_THUNDER_WAVE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_THUNDER_WAVE) == MOVE_EFFECT_PARALYSIS);
|
||||
ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_TOXIC) == MOVE_EFFECT_TOXIC);
|
||||
PLAYER(SPECIES_LEAFEON) { Ability(ABILITY_LEAF_GUARD); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ SINGLE_BATTLE_TEST("Limber prevents paralysis")
|
|||
SINGLE_BATTLE_TEST("Limber prevents paralysis from Thunder Wave")
|
||||
{
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_THUNDER_WAVE) == EFFECT_PARALYZE);
|
||||
ASSUME(GetMoveEffect(MOVE_THUNDER_WAVE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_THUNDER_WAVE) == MOVE_EFFECT_PARALYSIS);
|
||||
PLAYER(SPECIES_PERSIAN) { Ability(ABILITY_LIMBER); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
|
|
|
|||
|
|
@ -142,7 +142,8 @@ SINGLE_BATTLE_TEST("Liquid Ooze causes Dream Eater users to lose HP instead of h
|
|||
{
|
||||
s16 damage;
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_DREAM_EATER) == EFFECT_DREAM_EATER);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_TENTACRUEL) { Ability(ABILITY_LIQUID_OOZE); }
|
||||
|
|
|
|||
|
|
@ -5,7 +5,8 @@
|
|||
SINGLE_BATTLE_TEST("Magic Bounce bounces back status moves")
|
||||
{
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_TOXIC);
|
||||
ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_TOXIC) == MOVE_EFFECT_TOXIC);
|
||||
PLAYER(SPECIES_WYNAUT);
|
||||
OPPONENT(SPECIES_ESPEON) { Ability(ABILITY_MAGIC_BOUNCE); }
|
||||
} WHEN {
|
||||
|
|
@ -23,7 +24,8 @@ SINGLE_BATTLE_TEST("Magic Bounce bounces back powder moves")
|
|||
{
|
||||
GIVEN {
|
||||
ASSUME(IsPowderMove(MOVE_STUN_SPORE));
|
||||
ASSUME(GetMoveEffect(MOVE_STUN_SPORE) == EFFECT_PARALYZE);
|
||||
ASSUME(GetMoveEffect(MOVE_STUN_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_STUN_SPORE) == MOVE_EFFECT_PARALYSIS);
|
||||
PLAYER(SPECIES_WYNAUT);
|
||||
OPPONENT(SPECIES_ESPEON) { Ability(ABILITY_MAGIC_BOUNCE); }
|
||||
} WHEN {
|
||||
|
|
@ -118,7 +120,8 @@ DOUBLE_BATTLE_TEST("Magic Bounce bounces back moves hitting foes field")
|
|||
SINGLE_BATTLE_TEST("Magic Bounce bounced back status moves can not be bounced back by Magic Bounce")
|
||||
{
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_TOXIC);
|
||||
ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_TOXIC) == MOVE_EFFECT_TOXIC);
|
||||
PLAYER(SPECIES_ESPEON) { Ability(ABILITY_MAGIC_BOUNCE); }
|
||||
OPPONENT(SPECIES_ESPEON) { Ability(ABILITY_MAGIC_BOUNCE); }
|
||||
} WHEN {
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
ASSUMPTIONS
|
||||
{
|
||||
ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_TOXIC);
|
||||
ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_TOXIC) == MOVE_EFFECT_TOXIC);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -61,10 +61,14 @@ SINGLE_BATTLE_TEST("Purifying Salt grants immunity to status effects")
|
|||
PARAMETRIZE { move = MOVE_TOXIC; status = STATUS1_TOXIC_POISON; }
|
||||
PARAMETRIZE { move = MOVE_POWDER_SNOW; status = STATUS1_FREEZE; }
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_WILL_O_WISP) == EFFECT_WILL_O_WISP);
|
||||
ASSUME(GetMoveEffect(MOVE_HYPNOSIS) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_THUNDER_WAVE) == EFFECT_PARALYZE);
|
||||
ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_TOXIC);
|
||||
ASSUME(GetMoveEffect(MOVE_WILL_O_WISP) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_WILL_O_WISP) == MOVE_EFFECT_BURN);
|
||||
ASSUME(GetMoveEffect(MOVE_HYPNOSIS) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_HYPNOSIS) == MOVE_EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_THUNDER_WAVE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_THUNDER_WAVE) == MOVE_EFFECT_PARALYSIS);
|
||||
ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_TOXIC) == MOVE_EFFECT_TOXIC);
|
||||
ASSUME(MoveHasAdditionalEffect(MOVE_POWDER_SNOW, MOVE_EFFECT_FREEZE_OR_FROSTBITE) == TRUE);
|
||||
PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_PURIFYING_SALT); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
ASSUMPTIONS
|
||||
{
|
||||
ASSUME(GetMoveEffect(MOVE_HYPNOSIS) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_HYPNOSIS) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_HYPNOSIS) == MOVE_EFFECT_SLEEP);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,8 @@ SINGLE_BATTLE_TEST("Synchronize will mirror back non volatile status back at opp
|
|||
{
|
||||
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_TOXIC);
|
||||
ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_TOXIC) == MOVE_EFFECT_TOXIC);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_TOXIC) == MOVE_EFFECT_TOXIC);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_ABRA) { Ability(ABILITY_SYNCHRONIZE); }
|
||||
|
|
|
|||
|
|
@ -4,7 +4,8 @@
|
|||
SINGLE_BATTLE_TEST("Thermal Exchange makes Will-O-Wisp fail")
|
||||
{
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_WILL_O_WISP) == EFFECT_WILL_O_WISP);
|
||||
ASSUME(GetMoveEffect(MOVE_WILL_O_WISP) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_WILL_O_WISP) == MOVE_EFFECT_BURN);
|
||||
PLAYER(SPECIES_BAXCALIBUR) { Ability(ABILITY_THERMAL_EXCHANGE); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
|
|
@ -37,7 +38,8 @@ SINGLE_BATTLE_TEST("Thermal Exchange prevents the user from getting burned when
|
|||
SINGLE_BATTLE_TEST("Thermal Exchange cures burns when acquired")
|
||||
{
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_WILL_O_WISP) == EFFECT_WILL_O_WISP);
|
||||
ASSUME(GetMoveEffect(MOVE_WILL_O_WISP) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_WILL_O_WISP) == MOVE_EFFECT_BURN);
|
||||
ASSUME(GetMoveEffect(MOVE_SKILL_SWAP) == EFFECT_SKILL_SWAP);
|
||||
PLAYER(SPECIES_BAXCALIBUR) { Ability(ABILITY_THERMAL_EXCHANGE); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
|
|
@ -56,7 +58,8 @@ SINGLE_BATTLE_TEST("Thermal Exchange cures burns when acquired")
|
|||
SINGLE_BATTLE_TEST("Thermal Exchange burn prevention can be bypassed with Mold Breaker but is cured after")
|
||||
{
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_WILL_O_WISP) == EFFECT_WILL_O_WISP);
|
||||
ASSUME(GetMoveEffect(MOVE_WILL_O_WISP) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_WILL_O_WISP) == MOVE_EFFECT_BURN);
|
||||
PLAYER(SPECIES_BAXCALIBUR) { Ability(ABILITY_THERMAL_EXCHANGE); }
|
||||
OPPONENT(SPECIES_RAMPARDOS) { Ability(ABILITY_MOLD_BREAKER); }
|
||||
} WHEN {
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
SINGLE_BATTLE_TEST("Water Bubble prevents burn from Will-o-Wisp")
|
||||
{
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_WILL_O_WISP) == EFFECT_WILL_O_WISP);
|
||||
ASSUME(GetMoveEffect(MOVE_WILL_O_WISP) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_WILL_O_WISP) == MOVE_EFFECT_BURN);
|
||||
PLAYER(SPECIES_DEWPIDER) { Ability(ABILITY_WATER_BUBBLE); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
|
|
|
|||
|
|
@ -802,9 +802,12 @@ AI_SINGLE_BATTLE_TEST("AI won't use status moves against opponents that would be
|
|||
PARAMETRIZE { aiMove = MOVE_TOXIC; }
|
||||
PARAMETRIZE { aiMove = MOVE_THUNDER_WAVE; }
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_WILL_O_WISP) == EFFECT_WILL_O_WISP);
|
||||
ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_TOXIC);
|
||||
ASSUME(GetMoveEffect(MOVE_THUNDER_WAVE) == EFFECT_PARALYZE);
|
||||
ASSUME(GetMoveEffect(MOVE_WILL_O_WISP) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_WILL_O_WISP) == MOVE_EFFECT_BURN);
|
||||
ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_TOXIC) == MOVE_EFFECT_TOXIC);
|
||||
ASSUME(GetMoveEffect(MOVE_THUNDER_WAVE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_THUNDER_WAVE) == MOVE_EFFECT_PARALYSIS);
|
||||
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_OMNISCIENT);
|
||||
PLAYER(SPECIES_SWELLOW) { Ability(ABILITY_GUTS); Moves(MOVE_TACKLE); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_TACKLE, aiMove); }
|
||||
|
|
|
|||
|
|
@ -612,7 +612,8 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will switch out if it has bee
|
|||
PARAMETRIZE { species = SPECIES_HARIYAMA, odds = SHOULD_SWITCH_BADLY_POISONED_PERCENTAGE; }
|
||||
PASSES_RANDOMLY(odds, 100, RNG_AI_SWITCH_BADLY_POISONED);
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_TOXIC);
|
||||
ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_TOXIC) == MOVE_EFFECT_TOXIC);
|
||||
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_SWITCHING);
|
||||
PLAYER(SPECIES_ZIGZAGOON) { Moves(MOVE_SCRATCH, MOVE_CELEBRATE, MOVE_TOXIC, MOVE_AURA_SPHERE); }
|
||||
OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_SCRATCH); }
|
||||
|
|
@ -1138,7 +1139,8 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will switch out if all moves
|
|||
{
|
||||
PASSES_RANDOMLY(SHOULD_SWITCH_ALL_SCORES_BAD_PERCENTAGE, 100, RNG_AI_SWITCH_ALL_SCORES_BAD);
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_WILL_O_WISP) == EFFECT_WILL_O_WISP);
|
||||
ASSUME(GetMoveEffect(MOVE_WILL_O_WISP) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_WILL_O_WISP) == MOVE_EFFECT_BURN);
|
||||
ASSUME(GetMoveEffect(MOVE_POLTERGEIST) == EFFECT_POLTERGEIST);
|
||||
ASSUME(GetMoveType(MOVE_SCALD) == TYPE_WATER);
|
||||
ASSUME(GetMoveType(MOVE_EARTHQUAKE) == TYPE_GROUND);
|
||||
|
|
|
|||
|
|
@ -13,7 +13,8 @@ ASSUMPTIONS
|
|||
ASSUME(GetMoveEffect(MOVE_SPIKES) == EFFECT_SPIKES);
|
||||
ASSUME(GetMoveEffect(MOVE_TOXIC_SPIKES) == EFFECT_TOXIC_SPIKES);
|
||||
ASSUME(GetMoveEffect(MOVE_STICKY_WEB) == EFFECT_STICKY_WEB);
|
||||
ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_TOXIC);
|
||||
ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_TOXIC) == MOVE_EFFECT_TOXIC);
|
||||
ASSUME(GetMoveEffect(MOVE_SCREECH) == EFFECT_DEFENSE_DOWN_2);
|
||||
ASSUME(GetMoveCategory(MOVE_SCRATCH) == DAMAGE_CATEGORY_PHYSICAL);
|
||||
ASSUME(GetMoveCategory(MOVE_GUST) == DAMAGE_CATEGORY_SPECIAL);
|
||||
|
|
|
|||
|
|
@ -60,7 +60,8 @@ DOUBLE_BATTLE_TEST("Instruct-called move targets the target of the move picked o
|
|||
DOUBLE_BATTLE_TEST("Instruct doesn't bypass sleep")
|
||||
{
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_SCRATCH, MOVE_POUND, MOVE_SCRATCH, MOVE_GROWL); }
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
|
|
|
|||
|
|
@ -9,7 +9,8 @@ ASSUMPTIONS
|
|||
SINGLE_BATTLE_TEST("Magic Coat prints the correct message when bouncing back a move")
|
||||
{
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
PLAYER(SPECIES_ZIGZAGOON);
|
||||
PLAYER(SPECIES_ZIGZAGOON);
|
||||
OPPONENT(SPECIES_ZIGZAGOON);
|
||||
|
|
|
|||
|
|
@ -27,7 +27,8 @@ SINGLE_BATTLE_TEST("Metronome's called powder move fails against Grass Types")
|
|||
GIVEN {
|
||||
ASSUME(IsPowderMove(MOVE_POISON_POWDER));
|
||||
ASSUME(gSpeciesInfo[SPECIES_TANGELA].types[0] == TYPE_GRASS);
|
||||
ASSUME(GetMoveEffect(MOVE_POISON_POWDER) == EFFECT_POISON);
|
||||
ASSUME(GetMoveEffect(MOVE_POISON_POWDER) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_POISON_POWDER) == MOVE_EFFECT_POISON);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_TANGELA);
|
||||
} WHEN {
|
||||
|
|
|
|||
|
|
@ -43,7 +43,8 @@ SINGLE_BATTLE_TEST("Mirror Move's called powder move fails against Grass Types")
|
|||
GIVEN {
|
||||
ASSUME(IsPowderMove(MOVE_STUN_SPORE));
|
||||
ASSUME(gSpeciesInfo[SPECIES_ODDISH].types[0] == TYPE_GRASS);
|
||||
ASSUME(GetMoveEffect(MOVE_STUN_SPORE) == EFFECT_PARALYZE);
|
||||
ASSUME(GetMoveEffect(MOVE_STUN_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_STUN_SPORE) == MOVE_EFFECT_PARALYSIS);
|
||||
PLAYER(SPECIES_ODDISH);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
} WHEN {
|
||||
|
|
|
|||
|
|
@ -45,7 +45,8 @@ SINGLE_BATTLE_TEST("Refresh does not cure the user of Freeze")
|
|||
SINGLE_BATTLE_TEST("Refresh does not cure sleep when used by Sleep Talk")
|
||||
{
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SLEEP_TALK) == EFFECT_SLEEP_TALK);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_SLEEP_TALK, MOVE_REFRESH); }
|
||||
|
|
|
|||
|
|
@ -63,9 +63,12 @@ DOUBLE_BATTLE_TEST("Retaliate works with passive damage")
|
|||
PARAMETRIZE { move = MOVE_FLAME_BURST; moveTarget = playerRight; }
|
||||
PARAMETRIZE { move = MOVE_FIRE_PLEDGE; moveTarget = playerRight; move2 = MOVE_GRASS_PLEDGE; }
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_TOXIC);
|
||||
ASSUME(GetMoveEffect(MOVE_POISON_POWDER) == EFFECT_POISON);
|
||||
ASSUME(GetMoveEffect(MOVE_WILL_O_WISP) == EFFECT_WILL_O_WISP);
|
||||
ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_TOXIC) == MOVE_EFFECT_TOXIC);
|
||||
ASSUME(GetMoveEffect(MOVE_POISON_POWDER) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_POISON_POWDER) == MOVE_EFFECT_POISON);
|
||||
ASSUME(GetMoveEffect(MOVE_WILL_O_WISP) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_WILL_O_WISP) == MOVE_EFFECT_BURN);
|
||||
#if B_USE_FROSTBITE == TRUE
|
||||
ASSUME(GetMoveAdditionalEffectById(MOVE_ICE_BEAM, 0)->moveEffect == MOVE_EFFECT_FREEZE_OR_FROSTBITE);
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -3,7 +3,8 @@
|
|||
|
||||
ASSUMPTIONS
|
||||
{
|
||||
ASSUME(GetMoveEffect(MOVE_HYPNOSIS) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_HYPNOSIS) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_HYPNOSIS) == MOVE_EFFECT_SLEEP);
|
||||
}
|
||||
|
||||
SINGLE_BATTLE_TEST("Hypnosis inflicts 1-3 turns of sleep")
|
||||
|
|
|
|||
|
|
@ -50,7 +50,8 @@ SINGLE_BATTLE_TEST("Take Heart cures the user of all status conditions")
|
|||
SINGLE_BATTLE_TEST("Take Heart cures sleep when used by Sleep Talk")
|
||||
{
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SLEEP_TALK) == EFFECT_SLEEP_TALK);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_SLEEP_TALK, MOVE_TAKE_HEART); }
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
ASSUMPTIONS
|
||||
{
|
||||
ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_TOXIC);
|
||||
ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_TOXIC) == MOVE_EFFECT_TOXIC);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,8 @@ AI_SINGLE_BATTLE_TEST("Sleep Clause: AI will not use sleep moves while sleep cla
|
|||
{
|
||||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
|
|
@ -21,7 +22,8 @@ AI_DOUBLE_BATTLE_TEST("Sleep Clause: AI will not use sleep moves while sleep cla
|
|||
{
|
||||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
|
|
@ -39,7 +41,8 @@ AI_DOUBLE_BATTLE_TEST("Sleep Clause: AI will not use sleep move if partner is al
|
|||
{
|
||||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
|
|
@ -55,7 +58,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Sleep moves fail when sleep clause is active")
|
|||
{
|
||||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
|
|
@ -82,7 +86,8 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Sleep moves fail when sleep clause is active (
|
|||
{
|
||||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET) { HP(1); MaxHP(100); }
|
||||
|
|
@ -108,7 +113,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Rest does not activate sleep clause")
|
|||
{
|
||||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_REST) == EFFECT_REST);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
|
|
@ -128,7 +134,8 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Rest does not activate sleep clause (Doubles)"
|
|||
{
|
||||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_REST) == EFFECT_REST);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
|
|
@ -150,7 +157,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Rest can still be used when sleep clause is ac
|
|||
{
|
||||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_REST) == EFFECT_REST);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
|
|
@ -174,7 +182,8 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Rest can still be used when sleep clause is ac
|
|||
{
|
||||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_REST) == EFFECT_REST);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
|
|
@ -196,7 +205,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Psycho Shift'ing sleep will fail if sleep clau
|
|||
{
|
||||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SLEEP_TALK) == EFFECT_SLEEP_TALK);
|
||||
ASSUME(GetMoveEffect(MOVE_PSYCHO_SHIFT) == EFFECT_PSYCHO_SHIFT);
|
||||
PLAYER(SPECIES_WOBBUFFET)
|
||||
|
|
@ -222,7 +232,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Psycho Shift'ing sleep will activate sleep cla
|
|||
{
|
||||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SLEEP_TALK) == EFFECT_SLEEP_TALK);
|
||||
ASSUME(GetMoveEffect(MOVE_PSYCHO_SHIFT) == EFFECT_PSYCHO_SHIFT);
|
||||
PLAYER(SPECIES_ZIGZAGOON)
|
||||
|
|
@ -298,7 +309,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Effect Spore causes sleep 11% of the time with
|
|||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_5);
|
||||
ASSUME(MoveMakesContact(MOVE_SCRATCH));
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_BRELOOM) { Ability(ABILITY_EFFECT_SPORE); }
|
||||
|
|
@ -322,7 +334,8 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Effect Spore causes sleep 11% of the time with
|
|||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_5);
|
||||
ASSUME(MoveMakesContact(MOVE_SCRATCH));
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_BRELOOM) { Ability(ABILITY_EFFECT_SPORE); }
|
||||
|
|
@ -349,7 +362,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Sleep from Effect Spore will not activate slee
|
|||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_5);
|
||||
ASSUME(MoveMakesContact(MOVE_SCRATCH));
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_BRELOOM) { Ability(ABILITY_EFFECT_SPORE); }
|
||||
|
|
@ -376,7 +390,8 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Sleep from Effect Spore will not activate slee
|
|||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_5);
|
||||
ASSUME(MoveMakesContact(MOVE_SCRATCH));
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_BRELOOM) { Ability(ABILITY_EFFECT_SPORE); }
|
||||
|
|
@ -401,7 +416,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Moves with sleep effect chance will activate s
|
|||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(MoveHasAdditionalEffect(MOVE_RELIC_SONG, MOVE_EFFECT_SLEEP));
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
|
|
@ -429,7 +445,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Moves with sleep effect chance will still do d
|
|||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(MoveHasAdditionalEffect(MOVE_RELIC_SONG, MOVE_EFFECT_SLEEP));
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
|
|
@ -456,7 +473,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Dire Claw cannot sleep a mon when sleep clause
|
|||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(MoveHasAdditionalEffect(MOVE_DIRE_CLAW, MOVE_EFFECT_DIRE_CLAW));
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
|
|
@ -532,7 +550,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Sleep clause is deactivated when a sleeping mo
|
|||
{
|
||||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
ASSUME(B_SLEEP_TURNS >= GEN_5);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
|
|
@ -564,7 +583,8 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Sleep clause is deactivated when a sleeping mo
|
|||
PARAMETRIZE { move = MOVE_SPARKLY_SWIRL; healingSlot = opponentLeft; sporedSlot = opponentRight; switchIndex = 1; }
|
||||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_AROMATHERAPY) == EFFECT_HEAL_BELL);
|
||||
ASSUME(GetMoveEffect(MOVE_HEAL_BELL) == EFFECT_HEAL_BELL);
|
||||
ASSUME(MoveHasAdditionalEffect(MOVE_SPARKLY_SWIRL, MOVE_EFFECT_AROMATHERAPY));
|
||||
|
|
@ -622,7 +642,8 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Sleep clause is deactivated when a sleeping mo
|
|||
{
|
||||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
ASSUME(MoveHasAdditionalEffect(MOVE_WAKE_UP_SLAP, MOVE_EFFECT_REMOVE_STATUS));
|
||||
PLAYER(SPECIES_ZIGZAGOON);
|
||||
PLAYER(SPECIES_ZIGZAGOON);
|
||||
|
|
@ -664,7 +685,8 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Sleep clause is deactivated when a sleeping mo
|
|||
{
|
||||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_UPROAR) == EFFECT_UPROAR);
|
||||
PLAYER(SPECIES_ZIGZAGOON);
|
||||
PLAYER(SPECIES_ZIGZAGOON);
|
||||
|
|
@ -705,7 +727,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Sleep clause is deactivated when a sleeping mo
|
|||
PARAMETRIZE { move = MOVE_AROMATHERAPY; }
|
||||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SLEEP_TALK) == EFFECT_SLEEP_TALK);
|
||||
ASSUME(GetMoveEffect(MOVE_PSYCHO_SHIFT) == EFFECT_PSYCHO_SHIFT);
|
||||
ASSUME(GetMoveEffect(MOVE_JUNGLE_HEALING) == EFFECT_JUNGLE_HEALING);
|
||||
|
|
@ -761,7 +784,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Sleep clause is deactivated when a sleeping mo
|
|||
{
|
||||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
PLAYER(SPECIES_PELIPPER) { Ability(ABILITY_DRIZZLE); }
|
||||
OPPONENT(SPECIES_LUVDISC) { Ability(ABILITY_HYDRATION); }
|
||||
} WHEN {
|
||||
|
|
@ -785,7 +809,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Sleep clause is deactivated when a sleeping mo
|
|||
{
|
||||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
PLAYER(SPECIES_ZIGZAGOON);
|
||||
OPPONENT(SPECIES_SWABLU) { Ability(ABILITY_NATURAL_CURE); }
|
||||
OPPONENT(SPECIES_ZIGZAGOON);
|
||||
|
|
@ -815,7 +840,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Sleep clause is deactivated when a sleeping mo
|
|||
PASSES_RANDOMLY(33, 100, RNG_SHED_SKIN);
|
||||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
PLAYER(SPECIES_ZIGZAGOON);
|
||||
OPPONENT(SPECIES_DRATINI) { Ability(ABILITY_SHED_SKIN); }
|
||||
} WHEN {
|
||||
|
|
@ -839,7 +865,8 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Sleep clause is deactivated when a sleeping mo
|
|||
PASSES_RANDOMLY(30, 100, RNG_HEALER);
|
||||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
PLAYER(SPECIES_ZIGZAGOON);
|
||||
PLAYER(SPECIES_ZIGZAGOON);
|
||||
OPPONENT(SPECIES_ZIGZAGOON);
|
||||
|
|
@ -867,7 +894,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Sleep clause is deactivated when a sleeping mo
|
|||
PARAMETRIZE { heldItem = ITEM_LUM_BERRY; }
|
||||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
ASSUME(gItemsInfo[ITEM_CHESTO_BERRY].holdEffect == HOLD_EFFECT_CURE_SLP);
|
||||
ASSUME(gItemsInfo[ITEM_LUM_BERRY].holdEffect == HOLD_EFFECT_CURE_STATUS);
|
||||
PLAYER(SPECIES_ZIGZAGOON);
|
||||
|
|
@ -898,7 +926,8 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Sleep clause is deactivated when a sleeping mo
|
|||
PARAMETRIZE { heldItem = ITEM_LUM_BERRY; }
|
||||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_FLING) == EFFECT_FLING);
|
||||
ASSUME(gItemsInfo[ITEM_CHESTO_BERRY].holdEffect == HOLD_EFFECT_CURE_SLP);
|
||||
ASSUME(gItemsInfo[ITEM_LUM_BERRY].holdEffect == HOLD_EFFECT_CURE_STATUS);
|
||||
|
|
@ -931,7 +960,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Sleep clause is deactivated when a sleeping mo
|
|||
{
|
||||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
ASSUME(gItemsInfo[ITEM_AWAKENING].battleUsage == EFFECT_ITEM_CURE_STATUS);
|
||||
PLAYER(SPECIES_ZIGZAGOON);
|
||||
OPPONENT(SPECIES_ZIGZAGOON);
|
||||
|
|
@ -955,7 +985,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Sleep clause is deactivated when a sleeping mo
|
|||
{
|
||||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
PLAYER(SPECIES_ZIGZAGOON);
|
||||
OPPONENT(SPECIES_ZIGZAGOON) { Level(5); }
|
||||
OPPONENT(SPECIES_ZIGZAGOON);
|
||||
|
|
@ -980,7 +1011,8 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Sleep clause is deactivated when a sleeping mo
|
|||
{
|
||||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
PLAYER(SPECIES_ZIGZAGOON);
|
||||
PLAYER(SPECIES_ZIGZAGOON);
|
||||
OPPONENT(SPECIES_ZIGZAGOON) { Level(5); }
|
||||
|
|
@ -1008,7 +1040,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Sleep clause is deactivated when a sleeping mo
|
|||
PARAMETRIZE { ability = ABILITY_INSOMNIA; }
|
||||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
PLAYER(SPECIES_DELIBIRD) { Ability(ability); }
|
||||
OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_SLEEP_TALK, MOVE_SKILL_SWAP); }
|
||||
} WHEN {
|
||||
|
|
@ -1044,7 +1077,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Sleep clause is deactivated when a sleeping mo
|
|||
PARAMETRIZE { ability = ABILITY_INSOMNIA; }
|
||||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
PLAYER(SPECIES_ZIGZAGOON)
|
||||
PLAYER(SPECIES_DELIBIRD) { Ability(ability); }
|
||||
OPPONENT(SPECIES_RALTS) { Ability(ABILITY_TRACE); }
|
||||
|
|
@ -1081,7 +1115,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Sleep clause is deactivated when a sleeping mo
|
|||
KNOWN_FAILING; // Sleep Clause parts work, but Imposter seems broken with battle messages / targeting. Issue #5565 https://github.com/rh-hideout/pokeemerald-expansion/issues/5565
|
||||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
ASSUME(gItemsInfo[ITEM_LAGGING_TAIL].holdEffect == HOLD_EFFECT_LAGGING_TAIL);
|
||||
PLAYER(SPECIES_ZIGZAGOON)
|
||||
PLAYER(SPECIES_DELIBIRD) { Ability(ability); }
|
||||
|
|
@ -1116,7 +1151,8 @@ AI_SINGLE_BATTLE_TEST("Sleep Clause: AI will use sleep moves again when sleep cl
|
|||
{
|
||||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
ASSUME(gItemsInfo[ITEM_CHESTO_BERRY].holdEffect == HOLD_EFFECT_CURE_SLP);
|
||||
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT);
|
||||
PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_CHESTO_BERRY); }
|
||||
|
|
@ -1132,7 +1168,8 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Sleep clause is deactivated when a sleeping mo
|
|||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(MoveHasAdditionalEffect(MOVE_G_MAX_SWEETNESS, MOVE_EFFECT_AROMATHERAPY));
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
PLAYER(SPECIES_APPLETUN) { GigantamaxFactor(TRUE); }
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(SPECIES_WOBBUFFET);
|
||||
|
|
@ -1158,7 +1195,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Pre-existing sleep condition doesn't activate
|
|||
{
|
||||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
PLAYER(SPECIES_ZIGZAGOON);
|
||||
OPPONENT(SPECIES_ZIGZAGOON) { Status1(STATUS1_SLEEP); }
|
||||
OPPONENT(SPECIES_ZIGZAGOON);
|
||||
|
|
@ -1178,7 +1216,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Sleep caused by Effect Spore does not prevent
|
|||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_5);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_AROMATHERAPY) == EFFECT_HEAL_BELL);
|
||||
ASSUME(MoveMakesContact(MOVE_SCRATCH));
|
||||
PLAYER(SPECIES_ZIGZAGOON);
|
||||
|
|
@ -1214,7 +1253,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Waking up after Effect Spore doesn't deactivat
|
|||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_5);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
ASSUME(MoveMakesContact(MOVE_SCRATCH));
|
||||
PLAYER(SPECIES_ZIGZAGOON);
|
||||
PLAYER(SPECIES_ZIGZAGOON);
|
||||
|
|
@ -1251,7 +1291,8 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Waking up after Effect Spore doesn't deactivat
|
|||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_5);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_AROMATHERAPY) == EFFECT_HEAL_BELL);
|
||||
ASSUME(MoveMakesContact(MOVE_SCRATCH));
|
||||
PLAYER(SPECIES_ZIGZAGOON);
|
||||
|
|
@ -1291,7 +1332,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Waking up after Rest doesn't deactivate sleep
|
|||
{
|
||||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_REST) == EFFECT_REST);
|
||||
PLAYER(SPECIES_ZIGZAGOON) { HP(1); MaxHP(100); }
|
||||
PLAYER(SPECIES_ZIGZAGOON);
|
||||
|
|
@ -1327,7 +1369,8 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Waking up after Rest doesn't deactivate sleep
|
|||
{
|
||||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_REST) == EFFECT_REST);
|
||||
PLAYER(SPECIES_ZIGZAGOON) { HP(1); MaxHP(100); }
|
||||
PLAYER(SPECIES_ZIGZAGOON);
|
||||
|
|
@ -1365,7 +1408,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Suppressing and then sleeping Vital Spirit / I
|
|||
PARAMETRIZE { ability = ABILITY_INSOMNIA; }
|
||||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
PLAYER(SPECIES_ZIGZAGOON);
|
||||
OPPONENT(SPECIES_DELIBIRD) { Ability(ability); }
|
||||
OPPONENT(SPECIES_ZIGZAGOON);
|
||||
|
|
@ -1395,7 +1439,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Mold Breaker Pokémon sleeping Vital Spirit /
|
|||
PARAMETRIZE { ability = ABILITY_INSOMNIA; }
|
||||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
PLAYER(SPECIES_PANCHAM) { Ability(ABILITY_MOLD_BREAKER); }
|
||||
OPPONENT(SPECIES_DELIBIRD) { Ability(ability); }
|
||||
OPPONENT(SPECIES_ZIGZAGOON);
|
||||
|
|
@ -1422,7 +1467,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Yawn'd Pokémon slept due to Effect Spore befo
|
|||
PASSES_RANDOMLY(11, 100, RNG_EFFECT_SPORE);
|
||||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_YAWN) == EFFECT_YAWN);
|
||||
ASSUME(MoveMakesContact(MOVE_SCRATCH));
|
||||
PLAYER(SPECIES_BRELOOM) { Ability(ABILITY_EFFECT_SPORE); }
|
||||
|
|
@ -1449,7 +1495,8 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Yawn'd Pokémon who's partner is slept before
|
|||
{
|
||||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_YAWN) == EFFECT_YAWN);
|
||||
PLAYER(SPECIES_ZIGZAGOON);
|
||||
PLAYER(SPECIES_ZIGZAGOON);
|
||||
|
|
@ -1476,7 +1523,8 @@ DOUBLE_BATTLE_TEST("Sleep Clause: If both Pokémon on one side are Yawn'd at the
|
|||
{
|
||||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_YAWN) == EFFECT_YAWN);
|
||||
PLAYER(SPECIES_ZIGZAGOON) { Speed(5); }
|
||||
PLAYER(SPECIES_ZIGZAGOON) { Speed(4); }
|
||||
|
|
@ -1501,7 +1549,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Reflection moves (ie. Magic Coat) fail if slee
|
|||
{
|
||||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_MAGIC_COAT) == EFFECT_MAGIC_COAT);
|
||||
PLAYER(SPECIES_ZIGZAGOON);
|
||||
PLAYER(SPECIES_ZIGZAGOON);
|
||||
|
|
@ -1526,7 +1575,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Reflection moves (ie. Magic Coat) that reflect
|
|||
{
|
||||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_MAGIC_COAT) == EFFECT_MAGIC_COAT);
|
||||
PLAYER(SPECIES_ZIGZAGOON);
|
||||
PLAYER(SPECIES_ZIGZAGOON);
|
||||
|
|
@ -1581,7 +1631,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Magic Bounce'ing a sleep move activates sleep
|
|||
{
|
||||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
PLAYER(SPECIES_ESPEON) { Ability(ABILITY_MAGIC_BOUNCE); }
|
||||
PLAYER(SPECIES_ZIGZAGOON);
|
||||
OPPONENT(SPECIES_ZIGZAGOON);
|
||||
|
|
@ -1634,7 +1685,8 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Sleep Clause does not prevent sleeping your pa
|
|||
{
|
||||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
PLAYER(SPECIES_ZIGZAGOON);
|
||||
PLAYER(SPECIES_ZIGZAGOON);
|
||||
PLAYER(SPECIES_ZIGZAGOON);
|
||||
|
|
@ -1720,7 +1772,8 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Sleep moves used after being Encore'd are prev
|
|||
{
|
||||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
PLAYER(SPECIES_ZIGZAGOON);
|
||||
PLAYER(SPECIES_ZIGZAGOON);
|
||||
PLAYER(SPECIES_ZIGZAGOON);
|
||||
|
|
@ -1749,7 +1802,8 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Spore'ing opponent after Yawn'ing partner does
|
|||
{
|
||||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_YAWN) == EFFECT_YAWN);
|
||||
PLAYER(SPECIES_ZIGZAGOON);
|
||||
PLAYER(SPECIES_ZIGZAGOON);
|
||||
|
|
@ -1786,7 +1840,8 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Opponent Spore'ing player's partner after part
|
|||
{
|
||||
GIVEN {
|
||||
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
|
||||
ASSUME(GetMoveEffect(MOVE_YAWN) == EFFECT_YAWN);
|
||||
PLAYER(SPECIES_ZIGZAGOON);
|
||||
PLAYER(SPECIES_ZIGZAGOON);
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
ASSUMPTIONS
|
||||
{
|
||||
ASSUME(GetMoveEffect(MOVE_WILL_O_WISP) == EFFECT_WILL_O_WISP);
|
||||
ASSUME(GetMoveEffect(MOVE_WILL_O_WISP) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_WILL_O_WISP) == MOVE_EFFECT_BURN);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -25,7 +25,8 @@ SINGLE_BATTLE_TEST("Poison can't bad poison a poison or steel type")
|
|||
PARAMETRIZE { species = SPECIES_BULBASAUR; }
|
||||
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_POISON_GAS) == EFFECT_POISON);
|
||||
ASSUME(GetMoveEffect(MOVE_POISON_GAS) == EFFECT_NON_VOLATILE_STATUS);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_POISON_GAS) == MOVE_EFFECT_POISON);
|
||||
ASSUME(GetMoveNonVolatileStatus(MOVE_POISON_GAS) == MOVE_EFFECT_POISON);
|
||||
PLAYER(SPECIES_WOBBUFFET);
|
||||
OPPONENT(species);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user