diff --git a/include/constants/generational_changes.h b/include/constants/generational_changes.h index 8cabad41ea..81ff4bece6 100644 --- a/include/constants/generational_changes.h +++ b/include/constants/generational_changes.h @@ -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)) \ diff --git a/src/battle_util.c b/src/battle_util.c index 3380420310..5493354f0c 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -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) diff --git a/test/battle/ability/cute_charm.c b/test/battle/ability/cute_charm.c index 0813296a2e..d2395fda17 100644 --- a/test/battle/ability/cute_charm.c +++ b/test/battle/ability/cute_charm.c @@ -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); } diff --git a/test/battle/ability/effect_spore.c b/test/battle/ability/effect_spore.c index ff61683b54..59b680f422 100644 --- a/test/battle/ability/effect_spore.c +++ b/test/battle/ability/effect_spore.c @@ -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); } diff --git a/test/battle/ability/flame_body.c b/test/battle/ability/flame_body.c index 6120af0c20..8db6f2c142 100644 --- a/test/battle/ability/flame_body.c +++ b/test/battle/ability/flame_body.c @@ -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); } diff --git a/test/battle/ability/poison_point.c b/test/battle/ability/poison_point.c index 243ed51bb5..2b6c4aa19f 100644 --- a/test/battle/ability/poison_point.c +++ b/test/battle/ability/poison_point.c @@ -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); } diff --git a/test/battle/ability/shed_skin.c b/test/battle/ability/shed_skin.c index 60554f921e..73f09bc9e9 100644 --- a/test/battle/ability/shed_skin.c +++ b/test/battle/ability/shed_skin.c @@ -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); } diff --git a/test/battle/ability/static.c b/test/battle/ability/static.c index 110cfbaa0e..c40197e742 100644 --- a/test/battle/ability/static.c +++ b/test/battle/ability/static.c @@ -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); } diff --git a/test/battle/sleep_clause.c b/test/battle/sleep_clause.c index 14ee7f052f..ba14671b43 100644 --- a/test/battle/sleep_clause.c +++ b/test/battle/sleep_clause.c @@ -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);