B_ABILITY_TRIGGER_CHANCE config tests (#8594)

This commit is contained in:
Eduardo Quezada 2026-01-06 11:53:29 -03:00 committed by GitHub
parent 126100c027
commit 45295d9544
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
9 changed files with 86 additions and 51 deletions

View File

@ -147,7 +147,7 @@
F(INTREPID_SWORD, intrepidSword, (u32, GEN_COUNT - 1)) \
F(DAUNTLESS_SHIELD, dauntlessShield, (u32, GEN_COUNT - 1)) \
F(DISGUISE_HP_LOSS, disguiseHpLoss, (u32, GEN_COUNT - 1)) \
F(ABILITY_TRIGGER_CHANCE, abilityTriggerChance, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(ABILITY_TRIGGER_CHANCE, abilityTriggerChance, (u32, GEN_COUNT - 1)) \
F(PICKUP_WILD, pickupWild, (u32, GEN_COUNT - 1)) \
F(MAGIC_GUARD, magicGuard, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(BATTLE_BOND, battleBond, (u32, GEN_COUNT - 1)) \

View File

@ -4686,7 +4686,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, u32 battler, enum Ability ab
break;
case ABILITY_SHED_SKIN:
if ((gBattleMons[battler].status1 & STATUS1_ANY)
&& (B_ABILITY_TRIGGER_CHANCE == GEN_4 ? RandomPercentage(RNG_SHED_SKIN, 30) : RandomChance(RNG_SHED_SKIN, 1, 3)))
&& (GetConfig(CONFIG_ABILITY_TRIGGER_CHANCE) == GEN_4 ? RandomPercentage(RNG_SHED_SKIN, 30) : RandomChance(RNG_SHED_SKIN, 1, 3)))
{
ABILITY_HEAL_MON_STATUS:
if (gBattleMons[battler].status1 & (STATUS1_POISON | STATUS1_TOXIC_POISON))
@ -5110,7 +5110,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, u32 battler, enum Ability ab
{
u32 poison, paralysis, sleep;
if (B_ABILITY_TRIGGER_CHANCE >= GEN_5)
if (GetConfig(CONFIG_ABILITY_TRIGGER_CHANCE) >= GEN_5)
{
poison = 9;
paralysis = 19;
@ -5122,7 +5122,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, u32 battler, enum Ability ab
}
sleep = 30;
i = RandomUniform(RNG_EFFECT_SPORE, 0, B_ABILITY_TRIGGER_CHANCE >= GEN_4 ? 99 : 299);
i = RandomUniform(RNG_EFFECT_SPORE, 0, GetConfig(CONFIG_ABILITY_TRIGGER_CHANCE) >= GEN_4 ? 99 : 299);
if (i < poison)
goto POISON_POINT;
if (i < paralysis)
@ -5148,7 +5148,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, u32 battler, enum Ability ab
}
break;
case ABILITY_POISON_POINT:
if (B_ABILITY_TRIGGER_CHANCE >= GEN_4 ? RandomPercentage(RNG_POISON_POINT, 30) : RandomChance(RNG_POISON_POINT, 1, 3))
if (GetConfig(CONFIG_ABILITY_TRIGGER_CHANCE) >= GEN_4 ? RandomPercentage(RNG_POISON_POINT, 30) : RandomChance(RNG_POISON_POINT, 1, 3))
{
POISON_POINT:
{
@ -5170,7 +5170,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, u32 battler, enum Ability ab
}
break;
case ABILITY_STATIC:
if (B_ABILITY_TRIGGER_CHANCE >= GEN_4 ? RandomPercentage(RNG_STATIC, 30) : RandomChance(RNG_STATIC, 1, 3))
if (GetConfig(CONFIG_ABILITY_TRIGGER_CHANCE) >= GEN_4 ? RandomPercentage(RNG_STATIC, 30) : RandomChance(RNG_STATIC, 1, 3))
{
STATIC:
{
@ -5197,7 +5197,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, u32 battler, enum Ability ab
&& !CanBattlerAvoidContactEffects(gBattlerAttacker, gBattlerTarget, GetBattlerAbility(gBattlerAttacker), GetBattlerHoldEffect(gBattlerAttacker), move)
&& IsBattlerTurnDamaged(gBattlerTarget)
&& CanBeBurned(gBattlerTarget, gBattlerAttacker, GetBattlerAbility(gBattlerAttacker))
&& (B_ABILITY_TRIGGER_CHANCE >= GEN_4 ? RandomPercentage(RNG_FLAME_BODY, 30) : RandomChance(RNG_FLAME_BODY, 1, 3)))
&& (GetConfig(CONFIG_ABILITY_TRIGGER_CHANCE) >= GEN_4 ? RandomPercentage(RNG_FLAME_BODY, 30) : RandomChance(RNG_FLAME_BODY, 1, 3)))
{
gEffectBattler = gBattlerAttacker;
gBattleScripting.battler = gBattlerTarget;
@ -5212,7 +5212,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, u32 battler, enum Ability ab
&& !gProtectStructs[gBattlerAttacker].confusionSelfDmg
&& IsBattlerTurnDamaged(gBattlerTarget)
&& IsBattlerAlive(gBattlerTarget)
&& (B_ABILITY_TRIGGER_CHANCE >= GEN_4 ? RandomPercentage(RNG_CUTE_CHARM, 30) : RandomChance(RNG_CUTE_CHARM, 1, 3))
&& (GetConfig(CONFIG_ABILITY_TRIGGER_CHANCE) >= GEN_4 ? RandomPercentage(RNG_CUTE_CHARM, 30) : RandomChance(RNG_CUTE_CHARM, 1, 3))
&& !(gBattleMons[gBattlerAttacker].volatiles.infatuation)
&& AreBattlersOfOppositeGender(gBattlerAttacker, gBattlerTarget)
&& !IsAbilityAndRecord(gBattlerAttacker, GetBattlerAbility(gBattlerAttacker), ABILITY_OBLIVIOUS)

View File

@ -48,13 +48,14 @@ SINGLE_BATTLE_TEST("Cute Charm cannot infatuate same gender")
TO_DO_BATTLE_TEST("Cute Charm cannot infatuate if either Pokémon are Gender-unknown")
TO_DO_BATTLE_TEST("Cute Charm triggers 1/3 of the time (Gen 3)")
SINGLE_BATTLE_TEST("Cute Charm triggers 30% of the time (Gen 4+)")
SINGLE_BATTLE_TEST("Cute Charm triggers 1/3 times (Gen3) or 30% (Gen 4+) of the time")
{
PASSES_RANDOMLY(3, 10, RNG_CUTE_CHARM);
u32 config, passes, trials;
PARAMETRIZE { config = GEN_3; passes = 1; trials = 3; } // 33.3%
PARAMETRIZE { config = GEN_4; passes = 3; trials = 10; } // 30%
PASSES_RANDOMLY(passes, trials, RNG_CUTE_CHARM);
GIVEN {
ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_4);
WITH_CONFIG(CONFIG_ABILITY_TRIGGER_CHANCE, config);
ASSUME(MoveMakesContact(MOVE_SCRATCH));
PLAYER(SPECIES_WOBBUFFET) { Gender(MON_MALE); }
OPPONENT(SPECIES_CLEFAIRY) { Gender(MON_FEMALE); Ability(ABILITY_CUTE_CHARM); }

View File

@ -32,11 +32,15 @@ SINGLE_BATTLE_TEST("Effect Spore only inflicts status on contact")
}
}
SINGLE_BATTLE_TEST("Effect Spore causes poison 9% of the time")
SINGLE_BATTLE_TEST("Effect Spore causes poison 3.3% (Gen3), 10% (Gen4) and 9% (Gen5+) of the time")
{
PASSES_RANDOMLY(9, 100, RNG_EFFECT_SPORE);
u32 config, passes, trials;
PARAMETRIZE { config = GEN_3; passes = 1; trials = 30; } // 3.3%
PARAMETRIZE { config = GEN_4; passes = 1; trials = 10; } // 10%
PARAMETRIZE { config = GEN_5; passes = 9; trials = 100; } // 9%
PASSES_RANDOMLY(passes, trials, RNG_EFFECT_SPORE);
GIVEN {
ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_5);
WITH_CONFIG(CONFIG_ABILITY_TRIGGER_CHANCE, config);
ASSUME(MoveMakesContact(MOVE_SCRATCH));
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_BRELOOM) { Ability(ABILITY_EFFECT_SPORE); }
@ -51,11 +55,15 @@ SINGLE_BATTLE_TEST("Effect Spore causes poison 9% of the time")
}
}
SINGLE_BATTLE_TEST("Effect Spore causes paralysis 10% of the time")
SINGLE_BATTLE_TEST("Effect Spore causes paralysis 3.3% (Gen3) and 10% (Gen4+) of the time")
{
PASSES_RANDOMLY(10, 100, RNG_EFFECT_SPORE);
u32 config, passes, trials;
PARAMETRIZE { config = GEN_3; passes = 1; trials = 30; } // 3.3%
PARAMETRIZE { config = GEN_4; passes = 1; trials = 10; } // 10%
PARAMETRIZE { config = GEN_5; passes = 1; trials = 10; } // 10%
PASSES_RANDOMLY(passes, trials, RNG_EFFECT_SPORE);
GIVEN {
ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_5);
WITH_CONFIG(CONFIG_ABILITY_TRIGGER_CHANCE, config);
ASSUME(MoveMakesContact(MOVE_SCRATCH));
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_BRELOOM) { Ability(ABILITY_EFFECT_SPORE); }
@ -70,11 +78,15 @@ SINGLE_BATTLE_TEST("Effect Spore causes paralysis 10% of the time")
}
}
SINGLE_BATTLE_TEST("Effect Spore causes sleep 11% of the time")
SINGLE_BATTLE_TEST("Effect Spore causes sleep 3.3% (Gen3), 10% (Gen4) and 11% (Gen5+) of the time")
{
PASSES_RANDOMLY(11, 100, RNG_EFFECT_SPORE);
u32 config, passes, trials;
PARAMETRIZE { config = GEN_3; passes = 1; trials = 30; } // 3.3%
PARAMETRIZE { config = GEN_4; passes = 1; trials = 10; } // 10%
PARAMETRIZE { config = GEN_5; passes = 11; trials = 100; } // 11%
PASSES_RANDOMLY(passes, trials, RNG_EFFECT_SPORE);
GIVEN {
ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_5);
WITH_CONFIG(CONFIG_ABILITY_TRIGGER_CHANCE, config);
ASSUME(MoveMakesContact(MOVE_SCRATCH));
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_BRELOOM) { Ability(ABILITY_EFFECT_SPORE); }
@ -91,9 +103,13 @@ SINGLE_BATTLE_TEST("Effect Spore causes sleep 11% of the time")
SINGLE_BATTLE_TEST("Effect Spore will check if it can inflict status onto attacker, not itself")
{
PASSES_RANDOMLY(11, 100, RNG_EFFECT_SPORE);
u32 config, passes, trials;
PARAMETRIZE { config = GEN_3; passes = 1; trials = 30; } // 3.3%
PARAMETRIZE { config = GEN_4; passes = 1; trials = 10; } // 10%
PARAMETRIZE { config = GEN_5; passes = 11; trials = 100; } // 11%
PASSES_RANDOMLY(passes, trials, RNG_EFFECT_SPORE);
GIVEN {
ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_5);
WITH_CONFIG(CONFIG_ABILITY_TRIGGER_CHANCE, config);
ASSUME(MoveMakesContact(MOVE_SCRATCH));
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_BRELOOM) { Status1(STATUS1_BURN); Ability(ABILITY_EFFECT_SPORE); }

View File

@ -30,11 +30,14 @@ SINGLE_BATTLE_TEST("Flame Body inflicts burn on contact")
}
}
SINGLE_BATTLE_TEST("Flame Body triggers 30% of the time")
SINGLE_BATTLE_TEST("Flame Body triggers 1/3 times (Gen3) or 30% (Gen 4+) of the time")
{
PASSES_RANDOMLY(3, 10, RNG_FLAME_BODY);
u32 config, passes, trials;
PARAMETRIZE { config = GEN_3; passes = 1; trials = 3; } // 33.3%
PARAMETRIZE { config = GEN_4; passes = 3; trials = 10; } // 30%
PASSES_RANDOMLY(passes, trials, RNG_FLAME_BODY);
GIVEN {
ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_4);
WITH_CONFIG(CONFIG_ABILITY_TRIGGER_CHANCE, config);
ASSUME(MoveMakesContact(MOVE_SCRATCH));
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_MAGMAR) { Ability(ABILITY_FLAME_BODY); }

View File

@ -31,11 +31,14 @@ SINGLE_BATTLE_TEST("Poison Point inflicts poison on contact")
}
}
SINGLE_BATTLE_TEST("Poison Point triggers 30% of the time")
SINGLE_BATTLE_TEST("Poison Point triggers 1/3 times (Gen3) or 30% (Gen 4+) of the time")
{
PASSES_RANDOMLY(3, 10, RNG_POISON_POINT);
u32 config, passes, trials;
PARAMETRIZE { config = GEN_3; passes = 1; trials = 3; } // 33.3%
PARAMETRIZE { config = GEN_4; passes = 3; trials = 10; } // 30%
PASSES_RANDOMLY(passes, trials, RNG_POISON_POINT);
GIVEN {
ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_4);
WITH_CONFIG(CONFIG_ABILITY_TRIGGER_CHANCE, config);
ASSUME(MoveMakesContact(MOVE_SCRATCH));
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_NIDORAN_M) { Ability(ABILITY_POISON_POINT); }

View File

@ -1,13 +1,16 @@
#include "global.h"
#include "test/battle.h"
SINGLE_BATTLE_TEST("Shed Skin triggers 33% of the time")
SINGLE_BATTLE_TEST("Shed Skin triggers 33% (Gen3, Gen5+) or 30% (Gen 4) of the time")
{
if (B_ABILITY_TRIGGER_CHANCE == GEN_4)
PASSES_RANDOMLY(30, 100, RNG_SHED_SKIN);
else
PASSES_RANDOMLY(33, 100, RNG_SHED_SKIN);
u32 config, passes;
PARAMETRIZE { config = GEN_3; passes = 33; }
PARAMETRIZE { config = GEN_4; passes = 30; }
PARAMETRIZE { config = GEN_5; passes = 33; }
PASSES_RANDOMLY(passes, 100, RNG_SHED_SKIN);
GIVEN {
WITH_CONFIG(CONFIG_ABILITY_TRIGGER_CHANCE, config);
ASSUME(MoveMakesContact(MOVE_SCRATCH));
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_ARBOK) { Status1(STATUS1_POISON); Ability(ABILITY_SHED_SKIN); }

View File

@ -30,11 +30,14 @@ SINGLE_BATTLE_TEST("Static inflicts paralysis on contact")
}
}
SINGLE_BATTLE_TEST("Static triggers 30% of the time")
SINGLE_BATTLE_TEST("Static triggers 1/3 times (Gen3) or 30% (Gen4+) of the time")
{
PASSES_RANDOMLY(3, 10, RNG_STATIC);
u32 config, passes, trials;
PARAMETRIZE { config = GEN_3; passes = 1; trials = 3; } // 33.3%
PARAMETRIZE { config = GEN_4; passes = 3; trials = 10; } // 30%
PASSES_RANDOMLY(passes, trials, RNG_STATIC);
GIVEN {
ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_4);
WITH_CONFIG(CONFIG_ABILITY_TRIGGER_CHANCE, config);
ASSUME(MoveMakesContact(MOVE_SCRATCH));
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_PIKACHU) { Ability(ABILITY_STATIC); }

View File

@ -302,12 +302,12 @@ SINGLE_BATTLE_TEST("Sleep Clause: Yawn will fail when sleep clause is active")
}
}
SINGLE_BATTLE_TEST("Sleep Clause: Effect Spore causes sleep 11% of the time with sleep clause active")
SINGLE_BATTLE_TEST("Sleep Clause: Effect Spore causes sleep 11% (Gen5+) of the time with sleep clause active")
{
PASSES_RANDOMLY(11, 100, RNG_EFFECT_SPORE);
GIVEN {
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_5);
WITH_CONFIG(CONFIG_ABILITY_TRIGGER_CHANCE, GEN_5);
ASSUME(MoveMakesContact(MOVE_SCRATCH));
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
@ -327,12 +327,12 @@ SINGLE_BATTLE_TEST("Sleep Clause: Effect Spore causes sleep 11% of the time with
}
}
DOUBLE_BATTLE_TEST("Sleep Clause: Effect Spore causes sleep 11% of the time with sleep clause active (Doubles)")
DOUBLE_BATTLE_TEST("Sleep Clause: Effect Spore causes sleep 11% (Gen5+) of the time with sleep clause active (Doubles)")
{
PASSES_RANDOMLY(11, 100, RNG_EFFECT_SPORE);
GIVEN {
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_5);
WITH_CONFIG(CONFIG_ABILITY_TRIGGER_CHANCE, GEN_5);
ASSUME(MoveMakesContact(MOVE_SCRATCH));
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
@ -360,7 +360,7 @@ SINGLE_BATTLE_TEST("Sleep Clause: Sleep from Effect Spore will not activate slee
PASSES_RANDOMLY(11, 100, RNG_EFFECT_SPORE);
GIVEN {
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_5);
WITH_CONFIG(CONFIG_ABILITY_TRIGGER_CHANCE, GEN_5);
ASSUME(MoveMakesContact(MOVE_SCRATCH));
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
@ -388,7 +388,7 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Sleep from Effect Spore will not activate slee
PASSES_RANDOMLY(11, 100, RNG_EFFECT_SPORE);
GIVEN {
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_5);
WITH_CONFIG(CONFIG_ABILITY_TRIGGER_CHANCE, GEN_5);
ASSUME(MoveMakesContact(MOVE_SCRATCH));
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
@ -834,11 +834,14 @@ SINGLE_BATTLE_TEST("Sleep Clause: Sleep clause is deactivated when a sleeping mo
SINGLE_BATTLE_TEST("Sleep Clause: Sleep clause is deactivated when a sleeping mon is woken up by Shed Skin")
{
if (B_ABILITY_TRIGGER_CHANCE == GEN_4)
PASSES_RANDOMLY(30, 100, RNG_SHED_SKIN);
else
PASSES_RANDOMLY(33, 100, RNG_SHED_SKIN);
u32 config, passes;
PARAMETRIZE { config = GEN_3; passes = 33; }
PARAMETRIZE { config = GEN_4; passes = 30; }
PARAMETRIZE { config = GEN_5; passes = 33; }
PASSES_RANDOMLY(passes, 100, RNG_SHED_SKIN);
GIVEN {
WITH_CONFIG(CONFIG_ABILITY_TRIGGER_CHANCE, config);
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
@ -1216,7 +1219,7 @@ SINGLE_BATTLE_TEST("Sleep Clause: Sleep caused by Effect Spore does not prevent
PASSES_RANDOMLY(11, 100, RNG_EFFECT_SPORE);
GIVEN {
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_5);
WITH_CONFIG(CONFIG_ABILITY_TRIGGER_CHANCE, GEN_5);
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
ASSUME(GetMoveEffect(MOVE_AROMATHERAPY) == EFFECT_HEAL_BELL);
@ -1253,7 +1256,7 @@ SINGLE_BATTLE_TEST("Sleep Clause: Waking up after Effect Spore doesn't deactivat
PASSES_RANDOMLY(11, 100, RNG_EFFECT_SPORE);
GIVEN {
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_5);
WITH_CONFIG(CONFIG_ABILITY_TRIGGER_CHANCE, GEN_5);
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
ASSUME(MoveMakesContact(MOVE_SCRATCH));
@ -1265,6 +1268,8 @@ SINGLE_BATTLE_TEST("Sleep Clause: Waking up after Effect Spore doesn't deactivat
TURN {}
TURN {}
TURN {}
TURN {}
TURN {}
TURN { MOVE(opponent, MOVE_SPORE); }
TURN { SWITCH(player, 1); MOVE(opponent, MOVE_SPORE); }
} SCENE {
@ -1291,7 +1296,7 @@ DOUBLE_BATTLE_TEST("Sleep Clause: Waking up after Effect Spore doesn't deactivat
PASSES_RANDOMLY(11, 100, RNG_EFFECT_SPORE);
GIVEN {
FLAG_SET(B_FLAG_SLEEP_CLAUSE);
ASSUME(B_ABILITY_TRIGGER_CHANCE >= GEN_5);
WITH_CONFIG(CONFIG_ABILITY_TRIGGER_CHANCE, GEN_5);
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
ASSUME(GetMoveEffect(MOVE_AROMATHERAPY) == EFFECT_HEAL_BELL);
@ -1468,6 +1473,7 @@ 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);
WITH_CONFIG(CONFIG_ABILITY_TRIGGER_CHANCE, GEN_5);
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
ASSUME(GetMoveEffect(MOVE_YAWN) == EFFECT_YAWN);