B_ABILITY_TRIGGER_CHANCE config tests (#8594)
This commit is contained in:
parent
126100c027
commit
45295d9544
@ -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)) \
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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); }
|
||||
|
||||
@ -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); }
|
||||
|
||||
@ -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); }
|
||||
|
||||
@ -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); }
|
||||
|
||||
@ -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); }
|
||||
|
||||
@ -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); }
|
||||
|
||||
@ -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);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user