Use direct config names instead of enum names (#8824)

This commit is contained in:
Eduardo Quezada 2026-02-06 07:57:33 -03:00 committed by GitHub
parent 83be28dc37
commit 32d1777b7a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
156 changed files with 694 additions and 696 deletions

View File

@ -1185,7 +1185,7 @@ BattleScript_EffectPartingShotTrySpAtk:
statbuffchange BS_TARGET, STAT_CHANGE_ALLOW_PTR, BattleScript_EffectPartingShotMaybeSwitch
call BattleScript_EffectPartingShotMaybePrintStat
BattleScript_EffectPartingShotMaybeSwitch:
jumpifgenconfiglowerthan CONFIG_PARTING_SHOT_SWITCH, GEN_7, BattleScript_EffectPartingShotSwitch
jumpifgenconfiglowerthan CONFIG_B_PARTING_SHOT_SWITCH, GEN_7, BattleScript_EffectPartingShotSwitch
jumpifbyte CMP_NOT_EQUAL, sB_ANIM_TARGETS_HIT, 0, BattleScript_EffectPartingShotSwitch
goto BattleScript_MoveEnd
@ -1534,7 +1534,7 @@ BattleScript_EffectHitEnemyHealAlly::
BattleScript_EffectDefog::
setstatchanger STAT_EVASION, 1, TRUE
attackcanceler
jumpifgenconfiglowerthan CONFIG_DEFOG_EFFECT_CLEARING, GEN_5, BattleScript_DefogAfterSubstituteCheck
jumpifgenconfiglowerthan CONFIG_B_DEFOG_EFFECT_CLEARING, GEN_5, BattleScript_DefogAfterSubstituteCheck
jumpifsubstituteblocks BattleScript_DefogIfCanClearHazards
BattleScript_DefogAfterSubstituteCheck:
jumpifstat BS_TARGET, CMP_NOT_EQUAL, STAT_EVASION, MIN_STAT_STAGE, BattleScript_DefogWorks
@ -1542,7 +1542,7 @@ BattleScript_DefogIfCanClearHazards:
trydefog FALSE, BattleScript_ButItFailed
BattleScript_DefogWorks:
accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
jumpifgenconfiglowerthan CONFIG_DEFOG_EFFECT_CLEARING, GEN_5, BattleScript_DefogWorksAfterSubstituteCheck
jumpifgenconfiglowerthan CONFIG_B_DEFOG_EFFECT_CLEARING, GEN_5, BattleScript_DefogWorksAfterSubstituteCheck
jumpifsubstituteblocks BattleScript_DefogTryHazardsWithAnim
BattleScript_DefogWorksAfterSubstituteCheck:
statbuffchange BS_TARGET, STAT_CHANGE_ALLOW_PTR | STAT_CHANGE_ONLY_CHECKING, BattleScript_DefogTryHazardsWithAnim
@ -2071,7 +2071,7 @@ BattleScript_EffectHealingWish::
setatkhptozero
tryfaintmon BS_ATTACKER
storehealingwish BS_ATTACKER
jumpifgenconfiglowerthan CONFIG_HEALING_WISH_SWITCH, GEN_5, BattleScript_EffectHealingWishGen4
jumpifgenconfiglowerthan CONFIG_B_HEALING_WISH_SWITCH, GEN_5, BattleScript_EffectHealingWishGen4
BattleScript_EffectHealingWishEnd:
moveendall
end
@ -2357,7 +2357,7 @@ BattleScript_TryTailwindAbilitiesLoop_WindPower:
BattleScript_EffectMiracleEye::
attackcanceler
accuracycheck BattleScript_MoveMissedPause, ACC_CURR_MOVE
jumpifgenconfiglowerthan CONFIG_MIRACLE_EYE_FAIL, GEN_5, BattleScript_MiracleEyeSet
jumpifgenconfiglowerthan CONFIG_B_MIRACLE_EYE_FAIL, GEN_5, BattleScript_MiracleEyeSet
jumpifvolatile BS_TARGET, VOLATILE_MIRACLE_EYE, BattleScript_ButItFailed
BattleScript_MiracleEyeSet:
setvolatile BS_TARGET, VOLATILE_MIRACLE_EYE
@ -3380,7 +3380,7 @@ BattleScript_EffectMeanLook::
accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON
jumpifvolatile BS_TARGET, VOLATILE_ESCAPE_PREVENTION, BattleScript_ButItFailed
jumpifsubstituteblocks BattleScript_ButItFailed
jumpifgenconfiglowerthan CONFIG_GHOSTS_ESCAPE, GEN_6, BattleScript_EffectMeanLookGen5
jumpifgenconfiglowerthan CONFIG_B_GHOSTS_ESCAPE, GEN_6, BattleScript_EffectMeanLookGen5
jumpiftype BS_TARGET, TYPE_GHOST, BattleScript_ButItFailed
BattleScript_EffectMeanLookGen5:
attackanimation
@ -3409,7 +3409,7 @@ BattleScript_NightmareWorked::
BattleScript_EffectMinimize::
attackcanceler
setvolatile BS_ATTACKER, VOLATILE_MINIMIZE
jumpifgenconfiglowerthan CONFIG_MINIMIZE_EVASION, GEN_5, BattleScript_EffectMinimizeGen4
jumpifgenconfiglowerthan CONFIG_B_MINIMIZE_EVASION, GEN_5, BattleScript_EffectMinimizeGen4
setstatchanger STAT_EVASION, 2, FALSE
goto BattleScript_EffectStatUpAfterAtkCanceler
BattleScript_EffectMinimizeGen4:
@ -3483,8 +3483,8 @@ BattleScript_EffectSpikes::
BattleScript_EffectForesight::
attackcanceler
accuracycheck BattleScript_ButItFailed, NO_ACC_CALC_CHECK_LOCK_ON
jumpifgenconfiglowerthan CONFIG_FORESIGHT_FAIL, GEN_3, BattleScript_ForesightFailCheck
jumpifgenconfiglowerthan CONFIG_FORESIGHT_FAIL, GEN_5, BattleScript_ForesightSet
jumpifgenconfiglowerthan CONFIG_B_FORESIGHT_FAIL, GEN_3, BattleScript_ForesightFailCheck
jumpifgenconfiglowerthan CONFIG_B_FORESIGHT_FAIL, GEN_5, BattleScript_ForesightSet
BattleScript_ForesightFailCheck:
jumpifvolatile BS_TARGET, VOLATILE_FORESIGHT, BattleScript_ButItFailed
BattleScript_ForesightSet:
@ -3795,7 +3795,7 @@ BattleScript_EffectFutureSight::
goto BattleScript_MoveEnd
BattleScript_EffectTeleport::
jumpifgenconfiglowerthan CONFIG_TELEPORT_BEHAVIOR, GEN_8, BattleScript_EffectTeleportGen7
jumpifgenconfiglowerthan CONFIG_B_TELEPORT_BEHAVIOR, GEN_8, BattleScript_EffectTeleportGen7
jumpifbattletype BATTLE_TYPE_TRAINER, BattleScript_EffectBatonPass
jumpifside BS_ATTACKER, B_SIDE_PLAYER, BattleScript_EffectBatonPass
goto BattleScript_DoEffectTeleport
@ -3814,7 +3814,7 @@ BattleScript_DoEffectTeleport::
goto BattleScript_MoveEnd
BattleScript_EffectBeatUp::
jumpifgenconfiglowerthan CONFIG_BEAT_UP, GEN_5, BattleScript_EffectBeatUpGen3
jumpifgenconfiglowerthan CONFIG_B_BEAT_UP, GEN_5, BattleScript_EffectBeatUpGen3
goto BattleScript_EffectHit
BattleScript_EffectBeatUpGen3:
@ -5974,7 +5974,7 @@ BattleScript_CudChewActivates::
end2
BattleScript_ApplyDisguiseFormChangeHPLoss::
jumpifgenconfiglowerthan CONFIG_DISGUISE_HP_LOSS, GEN_8, BattleScript_ApplyDisguiseFormChangeHPLossReturn
jumpifgenconfiglowerthan CONFIG_B_DISGUISE_HP_LOSS, GEN_8, BattleScript_ApplyDisguiseFormChangeHPLossReturn
healthbarupdate BS_SCRIPTING, PASSIVE_HP_UPDATE
datahpupdate BS_SCRIPTING, PASSIVE_HP_UPDATE
BattleScript_ApplyDisguiseFormChangeHPLossReturn:
@ -7338,7 +7338,7 @@ BattleScript_WeakArmorDefPrintString:
printstring STRINGID_TARGETABILITYSTATLOWER
waitmessage B_WAIT_TIME_LONG
BattleScript_WeakArmorActivatesSpeed:
jumpifgenconfiglowerthan CONFIG_WEAK_ARMOR_SPEED, GEN_7, BattleScript_WeakArmorSetSpeedGen6
jumpifgenconfiglowerthan CONFIG_B_WEAK_ARMOR_SPEED, GEN_7, BattleScript_WeakArmorSetSpeedGen6
setstatchanger STAT_SPEED, 2, FALSE
goto BattleScript_WeakArmorDoSpeed
BattleScript_WeakArmorSetSpeedGen6:

View File

@ -4,202 +4,202 @@
/* Config definitions */
#define CONFIG_DEFINITIONS(F) \
/* Calculation settings */ \
F(CRIT_CHANCE, critChance, (u32, GEN_COUNT - 1)) \
F(CRIT_MULTIPLIER, critMultiplier, (u32, GEN_COUNT - 1)) \
F(PARALYSIS_SPEED, paralysisSpeed, (u32, GEN_COUNT - 1)) \
F(CONFUSION_SELF_DMG_CHANCE, confusionSelfDmgChance, (u32, GEN_COUNT - 1)) \
F(MULTI_HIT_CHANCE, multiHitChance, (u32, GEN_COUNT - 1)) \
F(WHITEOUT_MONEY, whiteoutMoney, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(LIGHT_BALL_ATTACK_BOOST, lightBallAttackBoost, (u32, GEN_COUNT - 1)) \
F(B_CRIT_CHANCE, critChance, (u32, GEN_COUNT - 1)) \
F(B_CRIT_MULTIPLIER, critMultiplier, (u32, GEN_COUNT - 1)) \
F(B_PARALYSIS_SPEED, paralysisSpeed, (u32, GEN_COUNT - 1)) \
F(B_CONFUSION_SELF_DMG_CHANCE, confusionSelfDmgChance, (u32, GEN_COUNT - 1)) \
F(B_MULTI_HIT_CHANCE, multiHitChance, (u32, GEN_COUNT - 1)) \
F(B_WHITEOUT_MONEY, whiteoutMoney, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_LIGHT_BALL_ATTACK_BOOST, lightBallAttackBoost, (u32, GEN_COUNT - 1)) \
/* Experience settings */ \
F(EXP_CATCH, expCatch, (u32, GEN_COUNT - 1)) \
F(TRAINER_EXP_MULTIPLIER, trainerExpMultiplier, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(SPLIT_EXP, splitExp, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(SCALED_EXP, scaledExp, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(UNEVOLVED_EXP_MULTIPLIER, unevolvedExpMultiplier, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(LEVEL_UP_NOTIFICATION, levelUpNotification, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_EXP_CATCH, expCatch, (u32, GEN_COUNT - 1)) \
F(B_TRAINER_EXP_MULTIPLIER, trainerExpMultiplier, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_SPLIT_EXP, splitExp, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_SCALED_EXP, scaledExp, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_UNEVOLVED_EXP_MULTIPLIER, unevolvedExpMultiplier, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_LEVEL_UP_NOTIFICATION, levelUpNotification, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
/* Stat settings */ \
F(BADGE_BOOST, badgeBoost, (u32, GEN_COUNT - 1)) \
F(FRIENDSHIP_BOOST, friendshipBoost, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(MAX_LEVEL_EV_GAINS, maxLevelEvGains, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(RECALCULATE_STATS, recalculateStats, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_BADGE_BOOST, badgeBoost, (u32, GEN_COUNT - 1)) \
F(B_FRIENDSHIP_BOOST, friendshipBoost, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_MAX_LEVEL_EV_GAINS, maxLevelEvGains, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_RECALCULATE_STATS, recalculateStats, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
/* Damage settings */ \
F(BURN_DAMAGE, burnDamage, (u32, GEN_COUNT - 1)) \
F(BURN_FACADE_DMG, burnFacadeDmg, (u32, GEN_COUNT - 1)) \
F(BINDING_DAMAGE, bindingDamage, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(PSYWAVE_DMG, psywaveDmg, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(PAYBACK_SWITCH_BOOST, paybackSwitchBoost, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(HIDDEN_POWER_DMG, hiddenPowerDmg, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(ROUGH_SKIN_DMG, roughSkinDmg, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(KNOCK_OFF_DMG, knockOffDmg, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(SPORT_DMG_REDUCTION, sportDmgReduction, (u32, GEN_COUNT - 1)) \
F(EXPLOSION_DEFENSE, explosionDefense, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(PARENTAL_BOND_DMG, parentalBondDmg, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(MULTIPLE_TARGETS_DMG, multipleTargetsDmg, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_BURN_DAMAGE, burnDamage, (u32, GEN_COUNT - 1)) \
F(B_BURN_FACADE_DMG, burnFacadeDmg, (u32, GEN_COUNT - 1)) \
F(B_BINDING_DAMAGE, bindingDamage, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_PSYWAVE_DMG, psywaveDmg, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_PAYBACK_SWITCH_BOOST, paybackSwitchBoost, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_HIDDEN_POWER_DMG, hiddenPowerDmg, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_ROUGH_SKIN_DMG, roughSkinDmg, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_KNOCK_OFF_DMG, knockOffDmg, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_SPORT_DMG_REDUCTION, sportDmgReduction, (u32, GEN_COUNT - 1)) \
F(B_EXPLOSION_DEFENSE, explosionDefense, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_PARENTAL_BOND_DMG, parentalBondDmg, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_MULTIPLE_TARGETS_DMG, multipleTargetsDmg, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
/* Type settings */ \
F(GHOSTS_ESCAPE, ghostsEscape, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(PARALYZE_ELECTRIC, paralyzeElectric, (u32, GEN_COUNT - 1)) \
F(POWDER_GRASS, powderGrass, (u32, GEN_COUNT - 1)) \
F(POWDER_OVERCOAT, powderOvercoat, (u32, GEN_COUNT - 1)) \
F(UPDATED_TYPE_MATCHUPS, updatedTypeMatchups, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(PRANKSTER_DARK_TYPES, pranksterDarkTypes, (u32, GEN_COUNT - 1)) \
F(SHEER_COLD_IMMUNITY, sheerColdImmunity, (u32, GEN_COUNT - 1)) \
F(ROOST_PURE_FLYING, roostPureFlying, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(STATUS_TYPE_IMMUNITY, statusTypeImmunity, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_GHOSTS_ESCAPE, ghostsEscape, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_PARALYZE_ELECTRIC, paralyzeElectric, (u32, GEN_COUNT - 1)) \
F(B_POWDER_GRASS, powderGrass, (u32, GEN_COUNT - 1)) \
F(B_POWDER_OVERCOAT, powderOvercoat, (u32, GEN_COUNT - 1)) \
F(B_UPDATED_TYPE_MATCHUPS, updatedTypeMatchups, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_PRANKSTER_DARK_TYPES, pranksterDarkTypes, (u32, GEN_COUNT - 1)) \
F(B_SHEER_COLD_IMMUNITY, sheerColdImmunity, (u32, GEN_COUNT - 1)) \
F(B_ROOST_PURE_FLYING, roostPureFlying, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_STATUS_TYPE_IMMUNITY, statusTypeImmunity, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
/* Turn settings */ \
F(BINDING_TURNS, bindingTurns, (u32, GEN_COUNT - 1)) \
F(UPROAR_TURNS, uproarTurns, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(UPROAR_IGNORE_SOUNDPROOF, uproarIgnoreSoundproof, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(DISABLE_TURNS, disableTurns, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(TAILWIND_TURNS, tailwindTurns, (u32, GEN_COUNT - 1)) \
F(SLEEP_TURNS, sleepTurns, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(TAUNT_TURNS, tauntTurns, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(SPORT_TURNS, sportTurns, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(MEGA_EVO_TURN_ORDER, megaEvoTurnOrder, (u32, GEN_COUNT - 1)) \
F(RECALC_TURN_AFTER_ACTIONS, recalcTurnAfterActions, (u32, GEN_COUNT - 1)) \
F(FAINT_SWITCH_IN, faintSwitchIn, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_BINDING_TURNS, bindingTurns, (u32, GEN_COUNT - 1)) \
F(B_UPROAR_TURNS, uproarTurns, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_UPROAR_IGNORE_SOUNDPROOF, uproarIgnoreSoundproof, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_DISABLE_TURNS, disableTurns, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_TAILWIND_TURNS, tailwindTurns, (u32, GEN_COUNT - 1)) \
F(B_SLEEP_TURNS, sleepTurns, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_TAUNT_TURNS, tauntTurns, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_SPORT_TURNS, sportTurns, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_MEGA_EVO_TURN_ORDER, megaEvoTurnOrder, (u32, GEN_COUNT - 1)) \
F(B_RECALC_TURN_AFTER_ACTIONS, recalcTurnAfterActions, (u32, GEN_COUNT - 1)) \
F(B_FAINT_SWITCH_IN, faintSwitchIn, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
/* Move data settings */ \
F(UPDATED_MOVE_DATA, updatedMoveData, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(UPDATED_MOVE_TYPES, updatedMoveTypes, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(UPDATED_MOVE_FLAGS, updatedMoveFlags, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(PHYSICAL_SPECIAL_SPLIT, physicalSpecialSplit, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(RECOIL_IF_MISS_DMG, recoilIfMissDmg, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(KLUTZ_FLING_INTERACTION, klutzFlingInteraction, (u32, GEN_COUNT - 1)) \
F(UPDATED_CONVERSION, updatedConversion, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(UPDATED_CONVERSION_2, updatedConversion2, (u32, GEN_COUNT - 1)) \
F(PP_REDUCED_BY_SPITE, ppReducedBySpite, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(EXTRAPOLATED_MOVE_FLAGS, extrapolatedMoveFlags, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_UPDATED_MOVE_DATA, updatedMoveData, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_UPDATED_MOVE_TYPES, updatedMoveTypes, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_UPDATED_MOVE_FLAGS, updatedMoveFlags, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_PHYSICAL_SPECIAL_SPLIT, physicalSpecialSplit, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_RECOIL_IF_MISS_DMG, recoilIfMissDmg, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_KLUTZ_FLING_INTERACTION, klutzFlingInteraction, (u32, GEN_COUNT - 1)) \
F(B_UPDATED_CONVERSION, updatedConversion, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_UPDATED_CONVERSION_2, updatedConversion2, (u32, GEN_COUNT - 1)) \
F(B_PP_REDUCED_BY_SPITE, ppReducedBySpite, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_EXTRAPOLATED_MOVE_FLAGS, extrapolatedMoveFlags, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
/* Ability data settings */ \
F(UPDATED_ABILITY_DATA, updatedAbilityData, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_UPDATED_ABILITY_DATA, updatedAbilityData, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
/* Move accuracy settings */ \
F(TOXIC_NEVER_MISS, toxicNeverMiss, (u32, GEN_COUNT - 1)) \
F(MINIMIZE_DMG_ACC, minimizeDmgAcc, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(BLIZZARD_HAIL, blizzardHail, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(SHEER_COLD_ACC, sheerColdAcc, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_TOXIC_NEVER_MISS, toxicNeverMiss, (u32, GEN_COUNT - 1)) \
F(B_MINIMIZE_DMG_ACC, minimizeDmgAcc, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_BLIZZARD_HAIL, blizzardHail, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_SHEER_COLD_ACC, sheerColdAcc, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
/* Move stat change settings */ \
F(FELL_STINGER_STAT_RAISE, fellStingerStatRaise, (u32, GEN_COUNT - 1)) \
F(KINGS_SHIELD_LOWER_ATK, kingsShieldLowerAtk, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(SPEED_BUFFING_RAPID_SPIN, speedBuffingRapidSpin, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(CHARGE_SPDEF_RAISE, chargeSpDefRaise, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(MINIMIZE_EVASION, minimizeEvasion, (u32, GEN_COUNT - 1)) \
F(GROWTH_STAT_RAISE, growthStatRaise, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(FOCUS_ENERGY_CRIT_RATIO, focusEnergyCritRatio, (u32, GEN_COUNT - 1)) \
F(PSYCH_UP_CRIT_RATIO, psychUpCritRatio, (u32, GEN_COUNT - 1)) \
F(B_FELL_STINGER_STAT_RAISE, fellStingerStatRaise, (u32, GEN_COUNT - 1)) \
F(B_KINGS_SHIELD_LOWER_ATK, kingsShieldLowerAtk, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_SPEED_BUFFING_RAPID_SPIN, speedBuffingRapidSpin, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_CHARGE_SPDEF_RAISE, chargeSpDefRaise, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_MINIMIZE_EVASION, minimizeEvasion, (u32, GEN_COUNT - 1)) \
F(B_GROWTH_STAT_RAISE, growthStatRaise, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_FOCUS_ENERGY_CRIT_RATIO, focusEnergyCritRatio, (u32, GEN_COUNT - 1)) \
F(B_PSYCH_UP_CRIT_RATIO, psychUpCritRatio, (u32, GEN_COUNT - 1)) \
/* Other move settings */ \
F(INCINERATE_GEMS, incinerateGems, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(CAN_SPITE_FAIL, canSpiteFail, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(CRASH_IF_TARGET_IMMUNE, crashIfTargetImmune, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(MEMENTO_FAIL, mementoFail, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(PARTING_SHOT_SWITCH, partingShotSwitch, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(GLARE_GHOST, glareGhost, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(SKILL_SWAP, skillSwap, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(BRICK_BREAK, brickBreak, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(WISH_HP_SOURCE, wishHpSource, (u32, GEN_COUNT - 1)) \
F(RAMPAGE_CANCELLING, rampageCancelling, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(HEAL_BLOCKING, healBlocking, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(ROOTED_GROUNDING, rootedGrounding, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(METRONOME_MOVES, metronomeMoves, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(TELEPORT_BEHAVIOR, teleportBehavior, (u32, GEN_COUNT - 1)) \
F(BEAT_UP, beatUp, (u32, GEN_COUNT - 1)) \
F(DARK_VOID_FAIL, darkVoidFail, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(BURN_HIT_THAW, burnHitThaw, (u32, GEN_COUNT - 1)) \
F(HEALING_WISH_SWITCH, healingWishSwitch, (u32, GEN_COUNT - 1)) \
F(DEFOG_EFFECT_CLEARING, defogEffectClearing, (u32, GEN_COUNT - 1)) \
F(STOCKPILE_RAISES_DEFS, stockpileRaisesDefs, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(TRANSFORM_SHINY, transformShiny, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(TRANSFORM_FORM_CHANGES, transformFormChanges, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(WIDE_GUARD, wideGuard, (u32, GEN_COUNT - 1)) \
F(QUICK_GUARD, quickGuard, (u32, GEN_COUNT - 1)) \
F(IMPRISON, imprison, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(ALLY_SWITCH_FAIL_CHANCE, allySwitchFailChance, (u32, GEN_COUNT - 1)) \
F(SKETCH_BANS, sketchBans, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(KNOCK_OFF_REMOVAL, knockOffRemoval, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(HEAL_BELL_SOUNDPROOF, healBellSoundproof, (u32, GEN_COUNT - 1)) \
F(CHARGE, charge, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(POWDER_RAIN, powderRain, (u32, GEN_COUNT - 1)) \
F(AFTER_YOU_TURN_ORDER, afterYouTurnOrder, (u32, GEN_COUNT - 1)) \
F(QUASH_TURN_ORDER, quashTurnOrder, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(DESTINY_BOND_FAIL, destinyBondFail, (u32, GEN_COUNT - 1)) \
F(FORESIGHT_FAIL, foresightFail, (u32, GEN_COUNT - 1)) \
F(MIRACLE_EYE_FAIL, miracleEyeFail, (u32, GEN_COUNT - 1)) \
F(PURSUIT_TARGET, pursuitTarget, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(SKIP_RECHARGE, skipRecharge, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(ENCORE_TARGET, encoreTarget, (u32, GEN_COUNT - 1)) \
F(TIME_OF_DAY_HEALING_MOVES, timeOfDayHealingMoves, (u32, GEN_COUNT - 1)) \
F(DREAM_EATER_LIQUID_OOZE, dreamEaterLiquidOoze, (u32, GEN_COUNT - 1)) \
F(B_INCINERATE_GEMS, incinerateGems, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_CAN_SPITE_FAIL, canSpiteFail, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_CRASH_IF_TARGET_IMMUNE, crashIfTargetImmune, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_MEMENTO_FAIL, mementoFail, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_PARTING_SHOT_SWITCH, partingShotSwitch, (u32, GEN_COUNT - 1)) \
F(B_GLARE_GHOST, glareGhost, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_SKILL_SWAP, skillSwap, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_BRICK_BREAK, brickBreak, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_WISH_HP_SOURCE, wishHpSource, (u32, GEN_COUNT - 1)) \
F(B_RAMPAGE_CANCELLING, rampageCancelling, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_HEAL_BLOCKING, healBlocking, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_ROOTED_GROUNDING, rootedGrounding, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_METRONOME_MOVES, metronomeMoves, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_TELEPORT_BEHAVIOR, teleportBehavior, (u32, GEN_COUNT - 1)) \
F(B_BEAT_UP, beatUp, (u32, GEN_COUNT - 1)) \
F(B_DARK_VOID_FAIL, darkVoidFail, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_BURN_HIT_THAW, burnHitThaw, (u32, GEN_COUNT - 1)) \
F(B_HEALING_WISH_SWITCH, healingWishSwitch, (u32, GEN_COUNT - 1)) \
F(B_DEFOG_EFFECT_CLEARING, defogEffectClearing, (u32, GEN_COUNT - 1)) \
F(B_STOCKPILE_RAISES_DEFS, stockpileRaisesDefs, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_TRANSFORM_SHINY, transformShiny, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_TRANSFORM_FORM_CHANGES, transformFormChanges, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_WIDE_GUARD, wideGuard, (u32, GEN_COUNT - 1)) \
F(B_QUICK_GUARD, quickGuard, (u32, GEN_COUNT - 1)) \
F(B_IMPRISON, imprison, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_ALLY_SWITCH_FAIL_CHANCE, allySwitchFailChance, (u32, GEN_COUNT - 1)) \
F(B_SKETCH_BANS, sketchBans, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_KNOCK_OFF_REMOVAL, knockOffRemoval, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_HEAL_BELL_SOUNDPROOF, healBellSoundproof, (u32, GEN_COUNT - 1)) \
F(B_CHARGE, charge, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_POWDER_RAIN, powderRain, (u32, GEN_COUNT - 1)) \
F(B_AFTER_YOU_TURN_ORDER, afterYouTurnOrder, (u32, GEN_COUNT - 1)) \
F(B_QUASH_TURN_ORDER, quashTurnOrder, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_DESTINY_BOND_FAIL, destinyBondFail, (u32, GEN_COUNT - 1)) \
F(B_FORESIGHT_FAIL, foresightFail, (u32, GEN_COUNT - 1)) \
F(B_MIRACLE_EYE_FAIL, miracleEyeFail, (u32, GEN_COUNT - 1)) \
F(B_PURSUIT_TARGET, pursuitTarget, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_SKIP_RECHARGE, skipRecharge, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_ENCORE_TARGET, encoreTarget, (u32, GEN_COUNT - 1)) \
F(B_TIME_OF_DAY_HEALING_MOVES, timeOfDayHealingMoves, (u32, GEN_COUNT - 1)) \
F(B_DREAM_EATER_LIQUID_OOZE, dreamEaterLiquidOoze, (u32, GEN_COUNT - 1)) \
/* Ability settings */ \
F(GALE_WINGS, galeWings, (u32, GEN_COUNT - 1)) \
F(STANCE_CHANGE_FAIL, stanceChangeFail, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(SHADOW_TAG_ESCAPE, shadowTagEscape, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(MOODY_ACC_EVASION, moodyAccEvasion, (u32, GEN_COUNT - 1)) \
F(FLASH_FIRE_FROZEN, flashFireFrozen, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(SYNCHRONIZE_TOXIC, synchronizeToxic, (u32, GEN_COUNT - 1)) \
F(UPDATED_INTIMIDATE, updatedIntimidate, (u32, GEN_COUNT - 1)) \
F(OBLIVIOUS_TAUNT, obliviousTaunt, (u32, GEN_COUNT - 1)) \
F(STURDY, sturdy, (u32, GEN_COUNT - 1)) \
F(PLUS_MINUS_INTERACTION, plusMinusInteraction, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(WEATHER_FORMS, weatherForms, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(SYMBIOSIS_GEMS, symbiosisGems, (u32, GEN_COUNT - 1)) \
F(ABSORBING_ABILITY_STRING, absorbingAbilityString, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(REDIRECT_ABILITY_IMMUNITY, redirectAbilityImmunity, (u32, GEN_COUNT - 1)) \
F(REDIRECT_ABILITY_ALLIES, redirectAbilityAllies, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(LEAF_GUARD_PREVENTS_REST, leafGuardPreventsRest, (u32, GEN_COUNT - 1)) \
F(TRANSISTOR_BOOST, transistorBoost, (u32, GEN_COUNT - 1)) \
F(ILLUMINATE_EFFECT, illuminateEffect, (u32, GEN_COUNT - 1)) \
F(WEAK_ARMOR_SPEED, weakArmorSpeed, (u32, GEN_COUNT - 1)) \
F(PROTEAN_LIBERO, proteanLibero, (u32, GEN_COUNT - 1)) \
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)) \
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)) \
F(ATE_MULTIPLIER, ateMultiplier, (u32, GEN_COUNT - 1)) \
F(DEFIANT_STICKY_WEB, defiantStickyWeb, (u32, GEN_COUNT - 1)) \
F(INFILTRATOR_SUBSTITUTE, infiltratorSubstitute, (u32, GEN_COUNT - 1)) \
F(B_GALE_WINGS, galeWings, (u32, GEN_COUNT - 1)) \
F(B_STANCE_CHANGE_FAIL, stanceChangeFail, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_SHADOW_TAG_ESCAPE, shadowTagEscape, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_MOODY_ACC_EVASION, moodyAccEvasion, (u32, GEN_COUNT - 1)) \
F(B_FLASH_FIRE_FROZEN, flashFireFrozen, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_SYNCHRONIZE_TOXIC, synchronizeToxic, (u32, GEN_COUNT - 1)) \
F(B_UPDATED_INTIMIDATE, updatedIntimidate, (u32, GEN_COUNT - 1)) \
F(B_OBLIVIOUS_TAUNT, obliviousTaunt, (u32, GEN_COUNT - 1)) \
F(B_STURDY, sturdy, (u32, GEN_COUNT - 1)) \
F(B_PLUS_MINUS_INTERACTION, plusMinusInteraction, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_WEATHER_FORMS, weatherForms, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_SYMBIOSIS_GEMS, symbiosisGems, (u32, GEN_COUNT - 1)) \
F(B_ABSORBING_ABILITY_STRING, absorbingAbilityString, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_REDIRECT_ABILITY_IMMUNITY, redirectAbilityImmunity, (u32, GEN_COUNT - 1)) \
F(B_REDIRECT_ABILITY_ALLIES, redirectAbilityAllies, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_LEAF_GUARD_PREVENTS_REST, leafGuardPreventsRest, (u32, GEN_COUNT - 1)) \
F(B_TRANSISTOR_BOOST, transistorBoost, (u32, GEN_COUNT - 1)) \
F(B_ILLUMINATE_EFFECT, illuminateEffect, (u32, GEN_COUNT - 1)) \
F(B_WEAK_ARMOR_SPEED, weakArmorSpeed, (u32, GEN_COUNT - 1)) \
F(B_PROTEAN_LIBERO, proteanLibero, (u32, GEN_COUNT - 1)) \
F(B_INTREPID_SWORD, intrepidSword, (u32, GEN_COUNT - 1)) \
F(B_DAUNTLESS_SHIELD, dauntlessShield, (u32, GEN_COUNT - 1)) \
F(B_DISGUISE_HP_LOSS, disguiseHpLoss, (u32, GEN_COUNT - 1)) \
F(B_ABILITY_TRIGGER_CHANCE, abilityTriggerChance, (u32, GEN_COUNT - 1)) \
F(B_PICKUP_WILD, pickupWild, (u32, GEN_COUNT - 1)) \
F(B_MAGIC_GUARD, magicGuard, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_BATTLE_BOND, battleBond, (u32, GEN_COUNT - 1)) \
F(B_ATE_MULTIPLIER, ateMultiplier, (u32, GEN_COUNT - 1)) \
F(B_DEFIANT_STICKY_WEB, defiantStickyWeb, (u32, GEN_COUNT - 1)) \
F(B_INFILTRATOR_SUBSTITUTE, infiltratorSubstitute, (u32, GEN_COUNT - 1)) \
/* Item settings */ \
F(CONFUSE_BERRIES_HEAL, confuseBerriesHeal, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(X_ITEMS_BUFF, xItemsBuff, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(MENTAL_HERB, mentalHerb, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(TRAINERS_KNOCK_OFF_ITEMS, trainersKnockOffItems, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(RETURN_STOLEN_NPC_ITEMS, returnStolenNpcItems, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(STEAL_WILD_ITEMS, stealWildItems, (u32, GEN_COUNT - 1)) \
F(RESTORE_HELD_BATTLE_ITEMS, restoreHeldBattleItems, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(SOUL_DEW_BOOST, soulDewBoost, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(NET_BALL_MODIFIER, netBallModifier, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(DIVE_BALL_MODIFIER, diveBallModifier, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(NEST_BALL_MODIFIER, nestBallModifier, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(REPEAT_BALL_MODIFIER, repeatBallModifier, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(TIMER_BALL_MODIFIER, timerBallModifier, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(DUSK_BALL_MODIFIER, duskBallModifier, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(QUICK_BALL_MODIFIER, quickBallModifier, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(LURE_BALL_MODIFIER, lureBallModifier, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(HEAVY_BALL_MODIFIER, heavyBallModifier, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(DREAM_BALL_MODIFIER, dreamBallModifier, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(SPORT_BALL_MODIFIER, sportBallModifier, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(SAFARI_BALL_MODIFIER, safariBallModifier, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(FRIEND_BALL_MODIFIER, friendBallModifier, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(SERENE_GRACE_BOOST, sereneGraceBoost, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(IRON_BALL, ironBall, (u32, GEN_COUNT - 1)) \
F(B_CONFUSE_BERRIES_HEAL, confuseBerriesHeal, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_X_ITEMS_BUFF, xItemsBuff, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_MENTAL_HERB, mentalHerb, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_TRAINERS_KNOCK_OFF_ITEMS, trainersKnockOffItems, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_RETURN_STOLEN_NPC_ITEMS, returnStolenNpcItems, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_STEAL_WILD_ITEMS, stealWildItems, (u32, GEN_COUNT - 1)) \
F(B_RESTORE_HELD_BATTLE_ITEMS, restoreHeldBattleItems, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_SOUL_DEW_BOOST, soulDewBoost, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_NET_BALL_MODIFIER, netBallModifier, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_DIVE_BALL_MODIFIER, diveBallModifier, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_NEST_BALL_MODIFIER, nestBallModifier, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_REPEAT_BALL_MODIFIER, repeatBallModifier, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_TIMER_BALL_MODIFIER, timerBallModifier, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_DUSK_BALL_MODIFIER, duskBallModifier, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_QUICK_BALL_MODIFIER, quickBallModifier, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_LURE_BALL_MODIFIER, lureBallModifier, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_HEAVY_BALL_MODIFIER, heavyBallModifier, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_DREAM_BALL_MODIFIER, dreamBallModifier, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_SPORT_BALL_MODIFIER, sportBallModifier, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_SAFARI_BALL_MODIFIER, safariBallModifier, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_FRIEND_BALL_MODIFIER, friendBallModifier, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_SERENE_GRACE_BOOST, sereneGraceBoost, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_IRON_BALL, ironBall, (u32, GEN_COUNT - 1)) \
/* Weather settings */ \
F(ABILITY_WEATHER, abilityWeather, (u32, GEN_COUNT - 1)) \
F(SANDSTORM_SPDEF_BOOST, sandstormSpDefBoost, (u32, GEN_COUNT - 1)) \
F(OVERWORLD_FOG, overworldFog, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(OVERWORLD_SNOW, overworldSnow, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(SNOW_WARNING, snowWarning, (u32, GEN_COUNT - 1)) \
F(PREFERRED_ICE_WEATHER, preferredIceWeather, (u32, B_ICE_WEATHER_SNOW)) /* TODO: use in tests */ \
F(B_ABILITY_WEATHER, abilityWeather, (u32, GEN_COUNT - 1)) \
F(B_SANDSTORM_SPDEF_BOOST, sandstormSpDefBoost, (u32, GEN_COUNT - 1)) \
F(B_OVERWORLD_FOG, overworldFog, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_OVERWORLD_SNOW, overworldSnow, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_SNOW_WARNING, snowWarning, (u32, GEN_COUNT - 1)) \
F(B_PREFERRED_ICE_WEATHER, preferredIceWeather, (u32, B_ICE_WEATHER_SNOW)) /* TODO: use in tests */ \
/* Terrain settings */ \
F(TERRAIN_TYPE_BOOST, terrainTypeBoost, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(SECRET_POWER_EFFECT, secretPowerEffect, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(SECRET_POWER_ANIMATION, secretPowerAnimation, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(NATURE_POWER_MOVES, naturePowerMoves, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(CAMOUFLAGE_TYPES, camouflageTypes, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_TERRAIN_TYPE_BOOST, terrainTypeBoost, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_SECRET_POWER_EFFECT, secretPowerEffect, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_SECRET_POWER_ANIMATION, secretPowerAnimation, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_NATURE_POWER_MOVES, naturePowerMoves, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_CAMOUFLAGE_TYPES, camouflageTypes, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
/* Other settings */ \
F(WILD_NATURAL_ENEMIES, wildNaturalEnemies, (u32, TRUE)) /* TODO: use in tests */ \
F(AFFECTION_MECHANICS, affectionMechanics, (u32, TRUE)) /* TODO: use in tests */ \
F(OBEDIENCE_MECHANICS, obedienceMechanics, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(USE_FROSTBITE, useFrostbite, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_WILD_NATURAL_ENEMIES, wildNaturalEnemies, (u32, TRUE)) /* TODO: use in tests */ \
F(B_AFFECTION_MECHANICS, affectionMechanics, (u32, TRUE)) /* TODO: use in tests */ \
F(B_OBEDIENCE_MECHANICS, obedienceMechanics, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
F(B_USE_FROSTBITE, useFrostbite, (u32, GEN_COUNT - 1)) /* TODO: use in tests */ \
#define GET_CONFIG_MAXIMUM(_typeMaxValue, ...) INVOKE_WITH_B(GET_CONFIG_MAXIMUM_, _typeMaxValue)

View File

@ -16,7 +16,9 @@ struct GenChanges
// ...
};
u32 GetConfig(enum ConfigTag configTag);
#define GetConfig(name) GetConfigInternal(CONFIG_##name)
u32 GetConfigInternal(enum ConfigTag configTag);
void SetConfig(enum ConfigTag configTag, u32 value);
#if TESTING

View File

@ -309,7 +309,7 @@
* of `enum ConfigTag`
* Example:
* GIVEN {
* WITH_CONFIG(CONFIG_GALE_WINGS, GEN_6);
* WITH_CONFIG(B_GALE_WINGS, GEN_6);
* }
* The `value` may be inferred from a local variable, e.g. set by
* PARAMETRIZE.
@ -970,7 +970,7 @@ struct moveWithPP {
#define AI_LOG AILogScores(__LINE__)
#define FLAG_SET(flagId) SetFlagForTest(__LINE__, flagId)
#define WITH_CONFIG(configTag, value) TestSetConfig(__LINE__, configTag, value)
#define WITH_CONFIG(configTag, value) TestSetConfig(__LINE__, CONFIG_##configTag, value)
#define PLAYER(species) for (OpenPokemon(__LINE__, B_POSITION_PLAYER_LEFT, species); gBattleTestRunnerState->data.currentMon; ClosePokemon(__LINE__))
#define OPPONENT(species) for (OpenPokemon(__LINE__, B_POSITION_OPPONENT_LEFT, species); gBattleTestRunnerState->data.currentMon; ClosePokemon(__LINE__))

View File

@ -1267,7 +1267,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
} // def partner ability checks
// gen7+ dark type mons immune to priority->elevated moves from prankster
if (GetConfig(CONFIG_PRANKSTER_DARK_TYPES) >= GEN_7 && IS_BATTLER_OF_TYPE(battlerDef, TYPE_DARK)
if (GetConfig(B_PRANKSTER_DARK_TYPES) >= GEN_7 && IS_BATTLER_OF_TYPE(battlerDef, TYPE_DARK)
&& aiData->abilities[battlerAtk] == ABILITY_PRANKSTER && IsBattleMoveStatus(move)
&& !(moveTarget & (MOVE_TARGET_OPPONENTS_FIELD | MOVE_TARGET_USER)))
RETURN_SCORE_MINUS(10);
@ -1729,7 +1729,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
ADJUST_SCORE(-10);
break;
case EFFECT_SHEER_COLD:
if (GetConfig(CONFIG_SHEER_COLD_IMMUNITY) >= GEN_7 && IS_BATTLER_OF_TYPE(battlerDef, TYPE_ICE))
if (GetConfig(B_SHEER_COLD_IMMUNITY) >= GEN_7 && IS_BATTLER_OF_TYPE(battlerDef, TYPE_ICE))
RETURN_SCORE_MINUS(20);
// fallthrough
case EFFECT_OHKO:
@ -3396,7 +3396,7 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
case ABILITY_VOLT_ABSORB:
if (moveType == TYPE_ELECTRIC)
{
if (GetConfig(CONFIG_REDIRECT_ABILITY_IMMUNITY) < GEN_5 && atkPartnerAbility == ABILITY_LIGHTNING_ROD)
if (GetConfig(B_REDIRECT_ABILITY_IMMUNITY) < GEN_5 && atkPartnerAbility == ABILITY_LIGHTNING_ROD)
{
RETURN_SCORE_MINUS(10);
}
@ -3442,7 +3442,7 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
case ABILITY_STORM_DRAIN:
if (moveType == TYPE_WATER)
{
if (GetConfig(CONFIG_REDIRECT_ABILITY_IMMUNITY) < GEN_5 && atkPartnerAbility == ABILITY_STORM_DRAIN)
if (GetConfig(B_REDIRECT_ABILITY_IMMUNITY) < GEN_5 && atkPartnerAbility == ABILITY_STORM_DRAIN)
{
RETURN_SCORE_MINUS(10);
}
@ -5395,7 +5395,7 @@ static s32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move, stru
case EFFECT_ION_DELUGE:
if ((aiData->abilities[battlerAtk] == ABILITY_VOLT_ABSORB
|| aiData->abilities[battlerAtk] == ABILITY_MOTOR_DRIVE
|| (GetConfig(CONFIG_REDIRECT_ABILITY_IMMUNITY) >= GEN_5 && aiData->abilities[battlerAtk] == ABILITY_LIGHTNING_ROD))
|| (GetConfig(B_REDIRECT_ABILITY_IMMUNITY) >= GEN_5 && aiData->abilities[battlerAtk] == ABILITY_LIGHTNING_ROD))
&& predictedType == TYPE_NORMAL)
ADJUST_SCORE(DECENT_EFFECT);
break;
@ -5455,7 +5455,7 @@ static s32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move, stru
if (predictedMove != MOVE_NONE
&& (aiData->abilities[battlerAtk] == ABILITY_VOLT_ABSORB
|| aiData->abilities[battlerAtk] == ABILITY_MOTOR_DRIVE
|| (GetConfig(CONFIG_REDIRECT_ABILITY_IMMUNITY) >= GEN_5 && aiData->abilities[battlerAtk] == ABILITY_LIGHTNING_ROD)))
|| (GetConfig(B_REDIRECT_ABILITY_IMMUNITY) >= GEN_5 && aiData->abilities[battlerAtk] == ABILITY_LIGHTNING_ROD)))
{
ADJUST_SCORE(DECENT_EFFECT);
}

View File

@ -298,7 +298,7 @@ static bool32 ShouldSwitchIfHasBadOdds(u32 battler)
// Check if mon gets one shot
if (maxDamageTaken > gBattleMons[battler].hp
&& !(gItemsInfo[gBattleMons[battler].item].holdEffect == HOLD_EFFECT_FOCUS_SASH || (!IsMoldBreakerTypeAbility(opposingBattler, gAiLogicData->abilities[opposingBattler]) && GetConfig(CONFIG_STURDY) >= GEN_5 && aiAbility == ABILITY_STURDY)))
&& !(gItemsInfo[gBattleMons[battler].item].holdEffect == HOLD_EFFECT_FOCUS_SASH || (!IsMoldBreakerTypeAbility(opposingBattler, gAiLogicData->abilities[opposingBattler]) && GetConfig(B_STURDY) >= GEN_5 && aiAbility == ABILITY_STURDY)))
{
getsOneShot = TRUE;
}
@ -534,14 +534,14 @@ static bool32 FindMonThatAbsorbsOpponentsMove(u32 battler)
{
absorbingTypeAbilities[numAbsorbingAbilities++] = ABILITY_WATER_ABSORB;
absorbingTypeAbilities[numAbsorbingAbilities++] = ABILITY_DRY_SKIN;
if (GetConfig(CONFIG_REDIRECT_ABILITY_IMMUNITY) >= GEN_5)
if (GetConfig(B_REDIRECT_ABILITY_IMMUNITY) >= GEN_5)
absorbingTypeAbilities[numAbsorbingAbilities++] = ABILITY_STORM_DRAIN;
}
if (incomingType == TYPE_ELECTRIC || (isOpposingBattlerChargingOrInvulnerable && incomingType == TYPE_ELECTRIC))
{
absorbingTypeAbilities[numAbsorbingAbilities++] = ABILITY_VOLT_ABSORB;
absorbingTypeAbilities[numAbsorbingAbilities++] = ABILITY_MOTOR_DRIVE;
if (GetConfig(CONFIG_REDIRECT_ABILITY_IMMUNITY) >= GEN_5)
if (GetConfig(B_REDIRECT_ABILITY_IMMUNITY) >= GEN_5)
absorbingTypeAbilities[numAbsorbingAbilities++] = ABILITY_LIGHTNING_ROD;
}
if (incomingType == TYPE_GRASS || (isOpposingBattlerChargingOrInvulnerable && incomingType == TYPE_GRASS))
@ -567,7 +567,7 @@ static bool32 FindMonThatAbsorbsOpponentsMove(u32 battler)
}
if (IsPowderMove(incomingMove) || (isOpposingBattlerChargingOrInvulnerable && IsPowderMove(incomingMove)))
{
if (GetConfig(CONFIG_POWDER_OVERCOAT) >= GEN_6)
if (GetConfig(B_POWDER_OVERCOAT) >= GEN_6)
absorbingTypeAbilities[numAbsorbingAbilities++] = ABILITY_OVERCOAT;
}
if (numAbsorbingAbilities == 0)
@ -720,7 +720,7 @@ static bool32 ShouldSwitchIfBadlyStatused(u32 battler)
&& gAiLogicData->abilities[opposingBattler] != ABILITY_UNAWARE
&& gAiLogicData->abilities[opposingBattler] != ABILITY_KEEN_EYE
&& gAiLogicData->abilities[opposingBattler] != ABILITY_MINDS_EYE
&& (GetConfig(CONFIG_ILLUMINATE_EFFECT) >= GEN_9 && gAiLogicData->abilities[opposingBattler] != ABILITY_ILLUMINATE)
&& (GetConfig(B_ILLUMINATE_EFFECT) >= GEN_9 && gAiLogicData->abilities[opposingBattler] != ABILITY_ILLUMINATE)
&& !gBattleMons[battler].volatiles.foresight
&& !gBattleMons[battler].volatiles.miracleEye)
switchMon = FALSE;
@ -1763,7 +1763,7 @@ static u32 GetSwitchinStatusDamage(u32 battler)
{
if (status & STATUS1_BURN)
{
if (GetConfig(CONFIG_BURN_DAMAGE) >= GEN_7 || GetConfig(CONFIG_BURN_DAMAGE) == GEN_1)
if (GetConfig(B_BURN_DAMAGE) >= GEN_7 || GetConfig(B_BURN_DAMAGE) == GEN_1)
statusDamage = maxHP / 16;
else
statusDamage = maxHP / 8;
@ -1774,7 +1774,7 @@ static u32 GetSwitchinStatusDamage(u32 battler)
}
else if (status & STATUS1_FROSTBITE)
{
if (GetConfig(CONFIG_BURN_DAMAGE) >= GEN_7 || GetConfig(CONFIG_BURN_DAMAGE) == GEN_1)
if (GetConfig(B_BURN_DAMAGE) >= GEN_7 || GetConfig(B_BURN_DAMAGE) == GEN_1)
statusDamage = maxHP / 16;
else
statusDamage = maxHP / 8;
@ -1858,7 +1858,7 @@ static u32 GetSwitchinHitsToKO(s32 damageTaken, u32 battler)
currentHP = currentHP - damageTaken;
// One shot prevention effects
if (damageTaken >= maxHP && startingHP == maxHP && (heldItemEffect == HOLD_EFFECT_FOCUS_SASH || (!opponentCanBreakMold && GetConfig(CONFIG_STURDY) >= GEN_5 && ability == ABILITY_STURDY)) && hitsToKO < 1)
if (damageTaken >= maxHP && startingHP == maxHP && (heldItemEffect == HOLD_EFFECT_FOCUS_SASH || (!opponentCanBreakMold && GetConfig(B_STURDY) >= GEN_5 && ability == ABILITY_STURDY)) && hitsToKO < 1)
currentHP = 1;
// If mon is still alive, apply weather impact first, as it might KO the mon before it can heal with its item (order is weather -> item -> status)
@ -2050,7 +2050,7 @@ static s32 GetMaxPriorityDamagePlayerCouldDealToSwitchin(u32 battler, u32 opposi
static bool32 CanAbilityTrapOpponent(enum Ability ability, u32 opponent)
{
if ((GetConfig(CONFIG_GHOSTS_ESCAPE) >= GEN_6 && IS_BATTLER_OF_TYPE(opponent, TYPE_GHOST)))
if ((GetConfig(B_GHOSTS_ESCAPE) >= GEN_6 && IS_BATTLER_OF_TYPE(opponent, TYPE_GHOST)))
return FALSE;
else if (ability == ABILITY_SHADOW_TAG)
{

View File

@ -474,7 +474,7 @@ bool32 AI_CanBattlerEscape(u32 battler)
{
enum HoldEffect holdEffect = gAiLogicData->holdEffects[battler];
if (GetConfig(CONFIG_GHOSTS_ESCAPE) >= GEN_6 && IS_BATTLER_OF_TYPE(battler, TYPE_GHOST))
if (GetConfig(B_GHOSTS_ESCAPE) >= GEN_6 && IS_BATTLER_OF_TYPE(battler, TYPE_GHOST))
return TRUE;
if (holdEffect == HOLD_EFFECT_SHED_SHELL)
return TRUE;
@ -818,7 +818,7 @@ static inline void CalcDynamicMoveDamage(struct DamageContext *ctx, u16 *medianD
median = maximum = minimum = max(0, gBattleMons[ctx->battlerDef].hp - gBattleMons[ctx->battlerAtk].hp);
break;
case EFFECT_BEAT_UP:
if (GetConfig(CONFIG_BEAT_UP) >= GEN_5)
if (GetConfig(B_BEAT_UP) >= GEN_5)
{
u32 partyCount = CalculatePartyCount(GetBattlerParty(ctx->battlerAtk));
u32 i;
@ -873,7 +873,7 @@ static inline bool32 ShouldCalcCritDamage(u32 battlerAtk, u32 battlerDef, u32 mo
s32 critChanceIndex = 0;
// Get crit chance
if (GetConfig(CONFIG_CRIT_CHANCE) == GEN_1)
if (GetConfig(B_CRIT_CHANCE) == GEN_1)
critChanceIndex = CalcCritChanceStageGen1(battlerAtk, battlerDef, move, FALSE, aiData->abilities[battlerAtk], aiData->abilities[battlerDef], aiData->holdEffects[battlerAtk]);
else
critChanceIndex = CalcCritChanceStage(battlerAtk, battlerDef, move, FALSE, aiData->abilities[battlerAtk], aiData->abilities[battlerDef], aiData->holdEffects[battlerAtk]);
@ -882,11 +882,11 @@ static inline bool32 ShouldCalcCritDamage(u32 battlerAtk, u32 battlerDef, u32 mo
return TRUE;
if (critChanceIndex >= RISKY_AI_CRIT_STAGE_THRESHOLD // Not guaranteed but above Risky threshold
&& (gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_RISKY)
&& GetConfig(CONFIG_CRIT_CHANCE) != GEN_1)
&& GetConfig(B_CRIT_CHANCE) != GEN_1)
return TRUE;
if (critChanceIndex >= RISKY_AI_CRIT_THRESHOLD_GEN_1 // Not guaranteed but above Risky threshold
&& (gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_RISKY)
&& GetConfig(CONFIG_CRIT_CHANCE) == GEN_1)
&& GetConfig(B_CRIT_CHANCE) == GEN_1)
return TRUE;
return FALSE;
}
@ -1476,7 +1476,7 @@ bool32 CanEndureHit(u32 battler, u32 battlerTarget, u32 move)
if (!DoesBattlerIgnoreAbilityChecks(battler, gAiLogicData->abilities[battler], move))
{
if (GetConfig(CONFIG_STURDY) >= GEN_5 && gAiLogicData->abilities[battlerTarget] == ABILITY_STURDY)
if (GetConfig(B_STURDY) >= GEN_5 && gAiLogicData->abilities[battlerTarget] == ABILITY_STURDY)
return TRUE;
if (IsMimikyuDisguised(battlerTarget))
return TRUE;
@ -1830,7 +1830,7 @@ u32 AI_GetSwitchinWeather(struct BattlePokemon battleMon)
case ABILITY_SAND_STREAM:
return B_WEATHER_SANDSTORM;
case ABILITY_SNOW_WARNING:
return GetConfig(CONFIG_SNOW_WARNING) >= GEN_9 ? B_WEATHER_SNOW : B_WEATHER_HAIL;
return GetConfig(B_SNOW_WARNING) >= GEN_9 ? B_WEATHER_SNOW : B_WEATHER_HAIL;
default:
return gBattleWeather;
}
@ -1931,7 +1931,7 @@ bool32 IsHazardClearingMove(u32 move)
case EFFECT_TIDY_UP:
return TRUE;
case EFFECT_DEFOG:
if (GetConfig(CONFIG_DEFOG_EFFECT_CLEARING) >= GEN_6)
if (GetConfig(B_DEFOG_EFFECT_CLEARING) >= GEN_6)
return TRUE;
break;
}
@ -2198,7 +2198,7 @@ bool32 CanLowerStat(u32 battlerAtk, u32 battlerDef, struct AiLogicData *aiData,
if (stat == STAT_DEF)
return FALSE;
case ABILITY_ILLUMINATE:
if (GetConfig(CONFIG_ILLUMINATE_EFFECT) < GEN_9)
if (GetConfig(B_ILLUMINATE_EFFECT) < GEN_9)
break;
case ABILITY_KEEN_EYE:
case ABILITY_MINDS_EYE:
@ -2938,7 +2938,7 @@ bool32 IsSwitchOutEffect(enum BattleMoveEffects effect)
switch (effect)
{
case EFFECT_TELEPORT:
if (GetConfig(CONFIG_TELEPORT_BEHAVIOR) >= GEN_8)
if (GetConfig(B_TELEPORT_BEHAVIOR) >= GEN_8)
return TRUE;
case EFFECT_HIT_ESCAPE:
case EFFECT_PARTING_SHOT:
@ -3365,7 +3365,7 @@ enum AIPivot ShouldPivot(u32 battlerAtk, u32 battlerDef, enum Ability defAbility
if (!IsBattleMoveStatus(move) && ((gAiLogicData->shouldSwitch & (1u << battlerAtk))
|| (AI_BattlerAtMaxHp(battlerDef) && (gAiLogicData->holdEffects[battlerDef] == HOLD_EFFECT_FOCUS_SASH
|| (GetConfig(CONFIG_STURDY) >= GEN_5 && defAbility == ABILITY_STURDY)
|| (GetConfig(B_STURDY) >= GEN_5 && defAbility == ABILITY_STURDY)
|| defAbility == ABILITY_MULTISCALE
|| defAbility == ABILITY_SHADOW_SHIELD))))
return SHOULD_PIVOT; // pivot to break sash/sturdy/multiscale
@ -3373,7 +3373,7 @@ enum AIPivot ShouldPivot(u32 battlerAtk, u32 battlerDef, enum Ability defAbility
else if (!hasStatBoost)
{
if (!IsBattleMoveStatus(move) && (AI_BattlerAtMaxHp(battlerDef) && (gAiLogicData->holdEffects[battlerDef] == HOLD_EFFECT_FOCUS_SASH
|| (GetConfig(CONFIG_STURDY) >= GEN_5 && defAbility == ABILITY_STURDY)
|| (GetConfig(B_STURDY) >= GEN_5 && defAbility == ABILITY_STURDY)
|| defAbility == ABILITY_MULTISCALE
|| defAbility == ABILITY_SHADOW_SHIELD)))
return SHOULD_PIVOT; // pivot to break sash/sturdy/multiscale
@ -3859,7 +3859,7 @@ bool32 AnyPartyMemberStatused(u32 battlerId, bool32 checkSoundproof)
battlerOnField1 = gBattlerPartyIndexes[battlerId];
battlerOnField2 = gBattlerPartyIndexes[GetPartnerBattler(battlerId)];
// Check partner's status
if ((GetConfig(CONFIG_HEAL_BELL_SOUNDPROOF) == GEN_5
if ((GetConfig(B_HEAL_BELL_SOUNDPROOF) == GEN_5
|| gAiLogicData->abilities[BATTLE_PARTNER(battlerId)] != ABILITY_SOUNDPROOF
|| !checkSoundproof)
&& GetMonData(&party[battlerOnField2], MON_DATA_STATUS) != STATUS1_NONE
@ -3873,8 +3873,8 @@ bool32 AnyPartyMemberStatused(u32 battlerId, bool32 checkSoundproof)
}
// Check attacker's status
if ((GetConfig(CONFIG_HEAL_BELL_SOUNDPROOF) == GEN_5
|| GetConfig(CONFIG_HEAL_BELL_SOUNDPROOF) >= GEN_8
if ((GetConfig(B_HEAL_BELL_SOUNDPROOF) == GEN_5
|| GetConfig(B_HEAL_BELL_SOUNDPROOF) >= GEN_8
|| gAiLogicData->abilities[battlerId] != ABILITY_SOUNDPROOF || !checkSoundproof)
&& GetMonData(&party[battlerOnField1], MON_DATA_STATUS) != STATUS1_NONE
&& ShouldCureStatus(battlerId, battlerId, gAiLogicData))
@ -3885,7 +3885,7 @@ bool32 AnyPartyMemberStatused(u32 battlerId, bool32 checkSoundproof)
{
if (i == battlerOnField1 || i == battlerOnField2)
continue;
if (GetConfig(CONFIG_HEAL_BELL_SOUNDPROOF) < GEN_5
if (GetConfig(B_HEAL_BELL_SOUNDPROOF) < GEN_5
&& checkSoundproof
&& GetMonAbility(&party[i]) == ABILITY_SOUNDPROOF)
continue;
@ -5780,7 +5780,7 @@ bool32 ShouldTriggerAbility(u32 battlerAtk, u32 battlerDef, enum Ability ability
{
case ABILITY_LIGHTNING_ROD:
case ABILITY_STORM_DRAIN:
if (GetConfig(CONFIG_REDIRECT_ABILITY_IMMUNITY) < GEN_5)
if (GetConfig(B_REDIRECT_ABILITY_IMMUNITY) < GEN_5)
return FALSE;
else
return (BattlerStatCanRise(battlerDef, ability, STAT_SPATK) && HasMoveWithCategory(battlerDef, DAMAGE_CATEGORY_SPECIAL));

View File

@ -270,7 +270,7 @@ static bool32 HandleEndTurnWish(u32 battler)
s32 wishHeal = 0;
gBattlerTarget = battler;
PREPARE_MON_NICK_WITH_PREFIX_BUFFER(gBattleTextBuff1, battler, gWishFutureKnock.wishPartyId[battler])
if (GetConfig(CONFIG_WISH_HP_SOURCE) >= GEN_5)
if (GetConfig(B_WISH_HP_SOURCE) >= GEN_5)
{
if (IsOnPlayerSide(battler))
wishHeal = GetMonData(&gPlayerParty[gWishFutureKnock.wishPartyId[battler]], MON_DATA_MAX_HP) / 2;
@ -531,7 +531,7 @@ static bool32 HandleEndTurnBurn(u32 battler)
&& IsBattlerAlive(battler)
&& !IsAbilityAndRecord(battler, ability, ABILITY_MAGIC_GUARD))
{
s32 burnDamage = GetNonDynamaxMaxHP(battler) / ((GetConfig(CONFIG_BURN_DAMAGE) >= GEN_7 || GetConfig(CONFIG_BURN_DAMAGE) == GEN_1) ? 16 : 8);
s32 burnDamage = GetNonDynamaxMaxHP(battler) / ((GetConfig(B_BURN_DAMAGE) >= GEN_7 || GetConfig(B_BURN_DAMAGE) == GEN_1) ? 16 : 8);
if (ability == ABILITY_HEATPROOF)
{
if (burnDamage > (burnDamage / 2) + 1) // Record ability if the burn takes less damage than it normally would.
@ -556,7 +556,7 @@ static bool32 HandleEndTurnFrostbite(u32 battler)
&& IsBattlerAlive(battler)
&& !IsAbilityAndRecord(battler, GetBattlerAbility(battler), ABILITY_MAGIC_GUARD))
{
SetPassiveDamageAmount(battler, GetNonDynamaxMaxHP(battler) / ((GetConfig(CONFIG_BURN_DAMAGE) >= GEN_7 || GetConfig(CONFIG_BURN_DAMAGE) == GEN_1) ? 16 : 8));
SetPassiveDamageAmount(battler, GetNonDynamaxMaxHP(battler) / ((GetConfig(B_BURN_DAMAGE) >= GEN_7 || GetConfig(B_BURN_DAMAGE) == GEN_1) ? 16 : 8));
BattleScriptExecute(BattleScript_FrostbiteTurnDmg);
effect = TRUE;
}

View File

@ -3010,7 +3010,7 @@ static void ClearSetBScriptingStruct(void)
gBattleScripting.battleStyle = OPTIONS_BATTLE_STYLE_SET;
else
gBattleScripting.battleStyle = gSaveBlock2Ptr->optionsBattleStyle;
gBattleScripting.expOnCatch = (GetConfig(CONFIG_EXP_CATCH) >= GEN_6);
gBattleScripting.expOnCatch = (GetConfig(B_EXP_CATCH) >= GEN_6);
gBattleScripting.specialTrainerBattleType = specialBattleType;
}
@ -4108,7 +4108,7 @@ u8 IsRunningFromBattleImpossible(u32 battler)
if (holdEffect == HOLD_EFFECT_CAN_ALWAYS_RUN)
return BATTLE_RUN_SUCCESS;
if (GetConfig(CONFIG_GHOSTS_ESCAPE) >= GEN_6 && IS_BATTLER_OF_TYPE(battler, TYPE_GHOST))
if (GetConfig(B_GHOSTS_ESCAPE) >= GEN_6 && IS_BATTLER_OF_TYPE(battler, TYPE_GHOST))
return BATTLE_RUN_SUCCESS;
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
return BATTLE_RUN_SUCCESS;
@ -4275,7 +4275,7 @@ static void HandleTurnActionSelectionState(void)
gBattleStruct->moveTarget[battler] = gBattleResources->bufferB[battler][3];
return;
}
else if (GetConfig(CONFIG_ENCORE_TARGET) < GEN_5 && gDisableStructs[battler].encoredMove != MOVE_NONE)
else if (GetConfig(B_ENCORE_TARGET) < GEN_5 && gDisableStructs[battler].encoredMove != MOVE_NONE)
{
gChosenMoveByBattler[battler] = gDisableStructs[battler].encoredMove;
gBattleStruct->chosenMovePositions[battler] = gDisableStructs[battler].encoredMovePos;
@ -4817,7 +4817,7 @@ u32 GetBattlerTotalSpeedStat(u32 battler, enum Ability ability, enum HoldEffect
// paralysis drop
if (gBattleMons[battler].status1 & STATUS1_PARALYSIS && ability != ABILITY_QUICK_FEET)
speed /= GetConfig(CONFIG_PARALYSIS_SPEED) >= GEN_7 ? 2 : 4;
speed /= GetConfig(B_PARALYSIS_SPEED) >= GEN_7 ? 2 : 4;
if (gSideStatuses[GetBattlerSide(battler)] & SIDE_STATUS_SWAMP)
speed /= 4;
@ -4856,7 +4856,7 @@ s32 GetBattleMovePriority(u32 battler, enum Ability ability, u32 move)
priority = -8;
}
else if (ability == ABILITY_GALE_WINGS
&& (GetConfig(CONFIG_GALE_WINGS) < GEN_7 || IsBattlerAtMaxHp(battler))
&& (GetConfig(B_GALE_WINGS) < GEN_7 || IsBattlerAtMaxHp(battler))
&& GetMoveType(move) == TYPE_FLYING)
{
priority++;
@ -5214,7 +5214,7 @@ static bool32 TryDoGimmicksBeforeMoves(void)
}
}
if (GetConfig(CONFIG_MEGA_EVO_TURN_ORDER) >= GEN_7)
if (GetConfig(B_MEGA_EVO_TURN_ORDER) >= GEN_7)
TryChangeTurnOrder(); // This will just do nothing if no mon has mega evolved.
return FALSE;
}

View File

@ -862,7 +862,7 @@ static bool8 DoesTypePreventStatus(u16 species, u32 status)
break;
case STATUS1_PARALYSIS:
if (GetSpeciesType(species, 0) == TYPE_GROUND || GetSpeciesType(species, 1) == TYPE_GROUND
|| (GetConfig(CONFIG_PARALYZE_ELECTRIC) >= GEN_6 && (GetSpeciesType(species, 0) == TYPE_ELECTRIC || GetSpeciesType(species, 1) == TYPE_ELECTRIC)))
|| (GetConfig(B_PARALYZE_ELECTRIC) >= GEN_6 && (GetSpeciesType(species, 0) == TYPE_ELECTRIC || GetSpeciesType(species, 1) == TYPE_ELECTRIC)))
ret = TRUE;
break;
case STATUS1_BURN:

View File

@ -1584,11 +1584,11 @@ static const u32 sGen2CriticalHitOdds[] = {17, 32, 64, 85, 128}; // X/256
static inline u32 GetCriticalHitOdds(u32 critChance)
{
if (GetConfig(CONFIG_CRIT_CHANCE) >= GEN_7)
if (GetConfig(B_CRIT_CHANCE) >= GEN_7)
return sGen7CriticalHitOdds[critChance];
if (GetConfig(CONFIG_CRIT_CHANCE) == GEN_6)
if (GetConfig(B_CRIT_CHANCE) == GEN_6)
return sGen6CriticalHitOdds[critChance];
if (GetConfig(CONFIG_CRIT_CHANCE) == GEN_2)
if (GetConfig(B_CRIT_CHANCE) == GEN_2)
return sGen2CriticalHitOdds[critChance];
return sCriticalHitOdds[critChance];
@ -1765,7 +1765,7 @@ static void Cmd_critcalc(void)
enum Ability abilityDef = GetBattlerAbility(battlerDef);
enum Ability abilityAtk = GetBattlerAbility(gBattlerAttacker);
if (GetConfig(CONFIG_CRIT_CHANCE) == GEN_1)
if (GetConfig(B_CRIT_CHANCE) == GEN_1)
gBattleStruct->critChance[battlerDef] = CalcCritChanceStageGen1(gBattlerAttacker, battlerDef, gCurrentMove, TRUE, abilityAtk, abilityDef, holdEffectAtk);
else
gBattleStruct->critChance[battlerDef] = CalcCritChanceStage(gBattlerAttacker, battlerDef, gCurrentMove, TRUE, abilityAtk, abilityDef, holdEffectAtk);
@ -1778,9 +1778,9 @@ static void Cmd_critcalc(void)
gSpecialStatuses[battlerDef].criticalHit = TRUE;
else
{
if (GetConfig(CONFIG_CRIT_CHANCE) == GEN_1)
if (GetConfig(B_CRIT_CHANCE) == GEN_1)
gSpecialStatuses[battlerDef].criticalHit = RandomChance(RNG_CRITICAL_HIT, gBattleStruct->critChance[battlerDef], 256);
else if (GetConfig(CONFIG_CRIT_CHANCE) == GEN_2)
else if (GetConfig(B_CRIT_CHANCE) == GEN_2)
gSpecialStatuses[battlerDef].criticalHit = RandomChance(RNG_CRITICAL_HIT, GetCriticalHitOdds(gBattleStruct->critChance[battlerDef]), 256);
else
gSpecialStatuses[battlerDef].criticalHit = RandomChance(RNG_CRITICAL_HIT, 1, GetCriticalHitOdds(gBattleStruct->critChance[battlerDef]));
@ -1949,7 +1949,7 @@ static void Cmd_adjustdamage(void)
gLastUsedItem = gBattleMons[battlerDef].item;
gBattleStruct->moveResultFlags[battlerDef] |= MOVE_RESULT_FOE_HUNG_ON;
}
else if (GetConfig(CONFIG_STURDY) >= GEN_5 && GetBattlerAbility(battlerDef) == ABILITY_STURDY && IsBattlerAtMaxHp(battlerDef))
else if (GetConfig(B_STURDY) >= GEN_5 && GetBattlerAbility(battlerDef) == ABILITY_STURDY && IsBattlerAtMaxHp(battlerDef))
{
enduredHit |= 1u << battlerDef;
RecordAbilityBattle(battlerDef, ABILITY_STURDY);
@ -2418,7 +2418,7 @@ static void MoveDamageDataHpUpdate(u32 battler, u32 scriptBattler, const u8 *nex
gBattleMons[battler].species = SPECIES_MIMIKYU_BUSTED_TOTEM;
else
gBattleMons[battler].species = SPECIES_MIMIKYU_BUSTED;
if (GetConfig(CONFIG_DISGUISE_HP_LOSS) >= GEN_8)
if (GetConfig(B_DISGUISE_HP_LOSS) >= GEN_8)
SetPassiveDamageAmount(battler, GetNonDynamaxMaxHP(battler) / 8);
BattleScriptPush(nextInstr);
gBattlescriptCurrInstr = BattleScript_TargetFormChange;
@ -2882,7 +2882,7 @@ void StealTargetItem(u8 battlerStealer, u8 itemBattler)
gLastUsedItem = gBattleMons[itemBattler].item;
gBattleMons[itemBattler].item = ITEM_NONE;
if (GetConfig(CONFIG_STEAL_WILD_ITEMS) >= GEN_9
if (GetConfig(B_STEAL_WILD_ITEMS) >= GEN_9
&& !(gBattleTypeFlags & (BATTLE_TYPE_TRAINER | BATTLE_TYPE_PALACE))
&& GetMoveEffect(gCurrentMove) == EFFECT_STEAL_ITEM
&& battlerStealer == gBattlerAttacker) // ensure that Pickpocket isn't activating this
@ -3236,9 +3236,9 @@ void SetMoveEffect(u32 battler, u32 effectBattler, enum MoveEffect moveEffect, c
else
{
if (GetBattlerHoldEffect(gBattlerAttacker) == HOLD_EFFECT_GRIP_CLAW)
gDisableStructs[gEffectBattler].wrapTurns = GetConfig(CONFIG_BINDING_TURNS) >= GEN_5 ? 7 : 5;
gDisableStructs[gEffectBattler].wrapTurns = GetConfig(B_BINDING_TURNS) >= GEN_5 ? 7 : 5;
else
gDisableStructs[gEffectBattler].wrapTurns = GetConfig(CONFIG_BINDING_TURNS) >= GEN_5 ? RandomUniform(RNG_WRAP, 4, 5) : RandomUniform(RNG_WRAP, 2, 5);
gDisableStructs[gEffectBattler].wrapTurns = GetConfig(B_BINDING_TURNS) >= GEN_5 ? RandomUniform(RNG_WRAP, 4, 5) : RandomUniform(RNG_WRAP, 2, 5);
gBattleMons[gEffectBattler].volatiles.wrapped = TRUE;
gBattleMons[gEffectBattler].volatiles.wrappedMove = gCurrentMove;
gBattleMons[gEffectBattler].volatiles.wrappedBy = gBattlerAttacker;
@ -3999,7 +3999,7 @@ void SetMoveEffect(u32 battler, u32 effectBattler, enum MoveEffect moveEffect, c
{
gBattleMons[battler].volatiles.wrapped = TRUE;
if (GetBattlerHoldEffect(gBattlerAttacker) == HOLD_EFFECT_GRIP_CLAW)
gDisableStructs[battler].wrapTurns = (GetConfig(CONFIG_BINDING_TURNS) >= GEN_5) ? 7 : 5;
gDisableStructs[battler].wrapTurns = (GetConfig(B_BINDING_TURNS) >= GEN_5) ? 7 : 5;
else
gDisableStructs[battler].wrapTurns = (Random() % 2) + 4;
// The Wrap effect does not expire when the user switches, so here's some cheese.
@ -5418,7 +5418,7 @@ static void Cmd_isdmgblockedbydisguise(void)
gBattleMons[gBattlerAttacker].species = SPECIES_MIMIKYU_BUSTED_TOTEM;
else
gBattleMons[gBattlerAttacker].species = SPECIES_MIMIKYU_BUSTED;
if (GetConfig(CONFIG_DISGUISE_HP_LOSS) >= GEN_8)
if (GetConfig(B_DISGUISE_HP_LOSS) >= GEN_8)
SetPassiveDamageAmount(gBattlerAttacker, GetNonDynamaxMaxHP(gBattlerAttacker) / 8);
BattleScriptPush(BattleScript_MoveEnd);
gBattlescriptCurrInstr = BattleScript_TargetFormChange;
@ -5745,7 +5745,7 @@ static bool32 HandleMoveEndAbilityBlock(u32 battlerAtk, u32 battlerDef, u32 move
if (GetBattlerPartyState(battlerAtk)->battleBondBoost)
break;
if (GetConfig(CONFIG_BATTLE_BOND) < GEN_9 && gBattleMons[battlerAtk].species == SPECIES_GRENINJA_BATTLE_BOND)
if (GetConfig(B_BATTLE_BOND) < GEN_9 && gBattleMons[battlerAtk].species == SPECIES_GRENINJA_BATTLE_BOND)
{
// TODO: Convert this to a proper FORM_CHANGE type.
gLastUsedAbility = abilityAtk;
@ -5867,7 +5867,7 @@ static bool32 HandleMoveEndMoveBlock(u32 moveEffect)
{
StealTargetItem(gBattlerAttacker, gBattlerTarget); // Attacker steals target item
if (!(GetConfig(CONFIG_STEAL_WILD_ITEMS) >= GEN_9
if (!(GetConfig(B_STEAL_WILD_ITEMS) >= GEN_9
&& !(gBattleTypeFlags & (BATTLE_TYPE_TRAINER | BATTLE_TYPE_PALACE))))
{
gBattleMons[gBattlerAttacker].item = ITEM_NONE; // Item assigned later on with thief (see MOVEEND_CHANGED_ITEMS)
@ -6020,7 +6020,7 @@ static bool32 HandleMoveEndMoveBlock(u32 moveEffect)
&& !NoAliveMonsForEitherParty()
&& CompareStat(gBattlerAttacker, STAT_ATK, MAX_STAT_STAGE, CMP_LESS_THAN, GetBattlerAbility(gBattlerAttacker)))
{
SET_STATCHANGER(STAT_ATK, GetConfig(CONFIG_FELL_STINGER_STAT_RAISE) >= GEN_7 ? 3 : 2, FALSE);
SET_STATCHANGER(STAT_ATK, GetConfig(B_FELL_STINGER_STAT_RAISE) >= GEN_7 ? 3 : 2, FALSE);
PREPARE_STAT_BUFFER(gBattleTextBuff1, STAT_ATK);
BattleScriptPushCursor();
gBattlescriptCurrInstr = BattleScript_FellStingerRaisesStat;
@ -6241,7 +6241,7 @@ static void Cmd_moveend(void)
s32 healAmount = (gBattleStruct->moveDamage[gBattlerTarget] * GetMoveAbsorbPercentage(gCurrentMove) / 100);
healAmount = GetDrainedBigRootHp(gBattlerAttacker, healAmount);
effect = TRUE;
if ((moveEffect == EFFECT_DREAM_EATER && GetConfig(CONFIG_DREAM_EATER_LIQUID_OOZE) < GEN_5)
if ((moveEffect == EFFECT_DREAM_EATER && GetConfig(B_DREAM_EATER_LIQUID_OOZE) < GEN_5)
|| GetBattlerAbility(gBattlerTarget) != ABILITY_LIQUID_OOZE)
{
SetHealAmount(gBattlerAttacker, healAmount);
@ -6334,7 +6334,7 @@ static void Cmd_moveend(void)
for (i = 0; i < gBattlersCount; i++)
{
if ((gSpecialStatuses[i].berryReduced
|| (GetConfig(CONFIG_SYMBIOSIS_GEMS) >= GEN_7 && gSpecialStatuses[i].gemBoost))
|| (GetConfig(B_SYMBIOSIS_GEMS) >= GEN_7 && gSpecialStatuses[i].gemBoost))
&& TryTriggerSymbiosis(i, BATTLE_PARTNER(i)))
{
BestowItem(BATTLE_PARTNER(i), i);
@ -8004,7 +8004,7 @@ static bool32 DoSwitchInEffectsForBattler(u32 battler)
// Starting from Gen8 - it heals only pokemon which can be healed.
// In Gen5-7 the effect activates anyways.
else if ((gBattleStruct->battlerState[battler].storedHealingWish)
&& (GetConfig(CONFIG_HEALING_WISH_SWITCH) < GEN_8
&& (GetConfig(B_HEALING_WISH_SWITCH) < GEN_8
|| gBattleMons[battler].hp != gBattleMons[battler].maxHP
|| gBattleMons[battler].status1 != 0))
{
@ -8013,7 +8013,7 @@ static bool32 DoSwitchInEffectsForBattler(u32 battler)
gBattleStruct->battlerState[battler].storedHealingWish = FALSE;
}
else if ((gBattleStruct->battlerState[battler].storedLunarDance)
&& (GetConfig(CONFIG_HEALING_WISH_SWITCH) < GEN_8
&& (GetConfig(B_HEALING_WISH_SWITCH) < GEN_8
|| gBattleMons[battler].hp != gBattleMons[battler].maxHP
|| gBattleMons[battler].status1 != 0
|| gBattleMons[battler].pp[0] < CalculatePPWithBonus(gBattleMons[battler].moves[0], gBattleMons[battler].ppBonuses, 0)
@ -8869,7 +8869,7 @@ static bool32 TrySymbiosis(u32 battler, u32 itemId, bool32 moveEnd)
&& gBattleStruct->changedItems[battler] == ITEM_NONE
&& GetBattlerHoldEffect(battler) != HOLD_EFFECT_EJECT_BUTTON
&& GetBattlerHoldEffect(battler) != HOLD_EFFECT_EJECT_PACK
&& (GetConfig(CONFIG_SYMBIOSIS_GEMS) < GEN_7 || !(gSpecialStatuses[battler].gemBoost))
&& (GetConfig(B_SYMBIOSIS_GEMS) < GEN_7 || !(gSpecialStatuses[battler].gemBoost))
&& GetMoveEffect(gCurrentMove) != EFFECT_FLING //Fling and damage-reducing berries are handled separately.
&& !gSpecialStatuses[battler].berryReduced
&& TryTriggerSymbiosis(battler, BATTLE_PARTNER(battler)))
@ -9463,7 +9463,7 @@ static bool32 TryDefogClear(u32 battlerAtk, bool32 clear)
DEFOG_CLEAR(SIDE_STATUS_AURORA_VEIL, auroraVeilTimer, BattleScript_SideStatusWoreOffReturn, MOVE_AURORA_VEIL);
DEFOG_CLEAR(SIDE_STATUS_SAFEGUARD, safeguardTimer, BattleScript_SideStatusWoreOffReturn, MOVE_SAFEGUARD);
}
if (GetConfig(CONFIG_DEFOG_EFFECT_CLEARING) >= GEN_6)
if (GetConfig(B_DEFOG_EFFECT_CLEARING) >= GEN_6)
{
gBattlerAttacker = i; // For correct battle string. Ally's / Foe's
if (DefogClearHazards(saveBattler, i, clear))
@ -9478,7 +9478,7 @@ static bool32 TryDefogClear(u32 battlerAtk, bool32 clear)
}
return TRUE;
}
if (GetConfig(CONFIG_DEFOG_EFFECT_CLEARING) >= GEN_8 && (gFieldStatuses & STATUS_FIELD_TERRAIN_ANY))
if (GetConfig(B_DEFOG_EFFECT_CLEARING) >= GEN_8 && (gFieldStatuses & STATUS_FIELD_TERRAIN_ANY))
{
if (clear)
{
@ -9582,7 +9582,7 @@ static bool32 IsElectricAbilityAffected(u32 battler, enum Ability ability)
moveType = GetMoveType(gCurrentMove);
if (moveType == TYPE_ELECTRIC
&& (ability != ABILITY_LIGHTNING_ROD || GetConfig(CONFIG_REDIRECT_ABILITY_IMMUNITY) >= GEN_5)
&& (ability != ABILITY_LIGHTNING_ROD || GetConfig(B_REDIRECT_ABILITY_IMMUNITY) >= GEN_5)
&& GetBattlerAbility(battler) == ability)
return TRUE;
else
@ -9712,7 +9712,7 @@ static bool32 ChangeOrderTargetAfterAttacker(void)
if (attackerTurnOrderNum > targetTurnOrderNum)
return FALSE;
if (attackerTurnOrderNum + 1 == targetTurnOrderNum)
return GetConfig(CONFIG_AFTER_YOU_TURN_ORDER) >= GEN_8;
return GetConfig(B_AFTER_YOU_TURN_ORDER) >= GEN_8;
for (i = 0; i < MAX_BATTLERS_COUNT; i++)
{
@ -9755,8 +9755,8 @@ static void TryResetProtectUseCounter(u32 battler)
enum BattleMoveEffects lastEffect = GetMoveEffect(lastMove);
if (lastMove == MOVE_UNAVAILABLE
|| (!gBattleMoveEffects[lastEffect].usesProtectCounter
&& ((GetConfig(CONFIG_ALLY_SWITCH_FAIL_CHANCE) >= GEN_9 && lastEffect != EFFECT_ALLY_SWITCH)
|| GetConfig(CONFIG_ALLY_SWITCH_FAIL_CHANCE) < GEN_9)))
&& ((GetConfig(B_ALLY_SWITCH_FAIL_CHANCE) >= GEN_9 && lastEffect != EFFECT_ALLY_SWITCH)
|| GetConfig(B_ALLY_SWITCH_FAIL_CHANCE) < GEN_9)))
gDisableStructs[battler].protectUses = 0;
}
@ -9773,8 +9773,8 @@ static void Cmd_setprotectlike(void)
notLastTurn = FALSE;
if ((sProtectSuccessRates[gDisableStructs[gBattlerAttacker].protectUses] >= RandomUniform(RNG_PROTECT_FAIL, 0, USHRT_MAX) && notLastTurn)
|| (protectMethod == PROTECT_WIDE_GUARD && GetConfig(CONFIG_WIDE_GUARD) >= GEN_6)
|| (protectMethod == PROTECT_QUICK_GUARD && GetConfig(CONFIG_QUICK_GUARD) >= GEN_6)
|| (protectMethod == PROTECT_WIDE_GUARD && GetConfig(B_WIDE_GUARD) >= GEN_6)
|| (protectMethod == PROTECT_QUICK_GUARD && GetConfig(B_QUICK_GUARD) >= GEN_6)
|| (protectMethod == PROTECT_CRAFTY_SHIELD))
{
if (GetMoveEffect(gCurrentMove) == EFFECT_ENDURE)
@ -10231,7 +10231,7 @@ static void TryPlayStatChangeAnimation(u32 battler, enum Ability ability, u32 st
}
}
else if (!((ability == ABILITY_KEEN_EYE || ability == ABILITY_MINDS_EYE) && currStat == STAT_ACC)
&& !(GetConfig(CONFIG_ILLUMINATE_EFFECT) >= GEN_9 && ability == ABILITY_ILLUMINATE && currStat == STAT_ACC)
&& !(GetConfig(B_ILLUMINATE_EFFECT) >= GEN_9 && ability == ABILITY_ILLUMINATE && currStat == STAT_ACC)
&& !(ability == ABILITY_HYPER_CUTTER && currStat == STAT_ATK)
&& !(ability == ABILITY_BIG_PECKS && currStat == STAT_DEF))
{
@ -10400,7 +10400,7 @@ static u32 ChangeStatBuffs(u32 battler, s8 statValue, enum Stat statId, union St
}
else if (!flags.certain
&& (((battlerAbility == ABILITY_KEEN_EYE || battlerAbility == ABILITY_MINDS_EYE) && statId == STAT_ACC)
|| (GetConfig(CONFIG_ILLUMINATE_EFFECT) >= GEN_9 && battlerAbility == ABILITY_ILLUMINATE && statId == STAT_ACC)
|| (GetConfig(B_ILLUMINATE_EFFECT) >= GEN_9 && battlerAbility == ABILITY_ILLUMINATE && statId == STAT_ACC)
|| (battlerAbility == ABILITY_HYPER_CUTTER && statId == STAT_ATK)
|| (battlerAbility == ABILITY_BIG_PECKS && statId == STAT_DEF)))
{
@ -11249,8 +11249,8 @@ static void Cmd_setfocusenergy(void)
}
else
{
if (GetConfig(CONFIG_FOCUS_ENERGY_CRIT_RATIO) >= GEN_3
|| GetConfig(CONFIG_CRIT_CHANCE) == GEN_1)
if (GetConfig(B_FOCUS_ENERGY_CRIT_RATIO) >= GEN_3
|| GetConfig(B_CRIT_CHANCE) == GEN_1)
gBattleMons[battler].volatiles.focusEnergy = TRUE;
else
gBattleMons[battler].volatiles.dragonCheer = TRUE;
@ -11587,7 +11587,7 @@ static void Cmd_settypetorandomresistance(void)
u32 moveToCheck;
u32 typeToCheck;
if (GetConfig(CONFIG_UPDATED_CONVERSION_2) < GEN_5)
if (GetConfig(B_UPDATED_CONVERSION_2) < GEN_5)
{
moveToCheck = gLastLandedMoves[gBattlerAttacker];
if (GetMoveEffect(moveToCheck) == EFFECT_STRUGGLE)
@ -11752,7 +11752,7 @@ static void Cmd_settailwind(void)
if (!(gSideStatuses[side] & SIDE_STATUS_TAILWIND))
{
gSideStatuses[side] |= SIDE_STATUS_TAILWIND;
gSideTimers[side].tailwindTimer = (GetConfig(CONFIG_TAILWIND_TURNS) >= GEN_5 ? 4 : 3);
gSideTimers[side].tailwindTimer = (GetConfig(B_TAILWIND_TURNS) >= GEN_5 ? 4 : 3);
gBattlescriptCurrInstr = cmd->nextInstr;
}
else
@ -11842,8 +11842,8 @@ static void Cmd_healpartystatus(void)
struct Pokemon *party = GetBattlerParty(gBattlerAttacker);
bool32 isSoundMove = IsSoundMove(gCurrentMove);
if (GetConfig(CONFIG_HEAL_BELL_SOUNDPROOF) == GEN_5
|| GetConfig(CONFIG_HEAL_BELL_SOUNDPROOF) >= GEN_8
if (GetConfig(B_HEAL_BELL_SOUNDPROOF) == GEN_5
|| GetConfig(B_HEAL_BELL_SOUNDPROOF) >= GEN_8
|| !(isSoundMove && GetBattlerAbility(gBattlerAttacker) == ABILITY_SOUNDPROOF))
{
if (isSoundMove)
@ -11863,7 +11863,7 @@ static void Cmd_healpartystatus(void)
if (IsBattlerAlive(partner))
{
if (GetConfig(CONFIG_HEAL_BELL_SOUNDPROOF) == GEN_5
if (GetConfig(B_HEAL_BELL_SOUNDPROOF) == GEN_5
|| !(isSoundMove && GetBattlerAbility(partner) == ABILITY_SOUNDPROOF))
{
gBattleMons[partner].status1 = 0;
@ -11889,10 +11889,10 @@ static void Cmd_healpartystatus(void)
bool32 isAttacker = gBattlerPartyIndexes[gBattlerAttacker] == i;
bool32 isDoublesPartner = gBattlerPartyIndexes[partner] == i && IsBattlerAlive(partner);
if (GetConfig(CONFIG_HEAL_BELL_SOUNDPROOF) == GEN_5
|| (GetConfig(CONFIG_HEAL_BELL_SOUNDPROOF) >= GEN_8 && isAttacker))
if (GetConfig(B_HEAL_BELL_SOUNDPROOF) == GEN_5
|| (GetConfig(B_HEAL_BELL_SOUNDPROOF) >= GEN_8 && isAttacker))
ability = ABILITY_NONE;
else if (GetConfig(CONFIG_HEAL_BELL_SOUNDPROOF) > GEN_5 && !isAttacker && !isDoublesPartner)
else if (GetConfig(B_HEAL_BELL_SOUNDPROOF) > GEN_5 && !isAttacker && !isDoublesPartner)
ability = ABILITY_NONE;
else if (isAttacker)
ability = GetBattlerAbility(gBattlerAttacker);
@ -12310,7 +12310,7 @@ static void Cmd_copyfoestats(void)
{
gBattleMons[gBattlerAttacker].statStages[i] = gBattleMons[gBattlerTarget].statStages[i];
}
if (GetConfig(CONFIG_PSYCH_UP_CRIT_RATIO) >= GEN_6)
if (GetConfig(B_PSYCH_UP_CRIT_RATIO) >= GEN_6)
{
// Copy crit boosts (Focus Energy, Dragon Cheer, G-Max Chi Strike)
gBattleMons[gBattlerAttacker].volatiles.focusEnergy = gBattleMons[gBattlerTarget].volatiles.focusEnergy;
@ -12380,7 +12380,7 @@ static void Cmd_recoverbasedonsunlight(void)
else
recoverAmount = GetNonDynamaxMaxHP(gBattlerAttacker) / 2;
}
else if (GetConfig(CONFIG_TIME_OF_DAY_HEALING_MOVES) != GEN_2)
else if (GetConfig(B_TIME_OF_DAY_HEALING_MOVES) != GEN_2)
{
if (!(gBattleWeather & B_WEATHER_ANY) || !HasWeatherEffect() || GetBattlerHoldEffect(gBattlerAttacker) == HOLD_EFFECT_UTILITY_UMBRELLA)
recoverAmount = GetNonDynamaxMaxHP(gBattlerAttacker) / 2;
@ -12668,7 +12668,7 @@ static void Cmd_settaunt(void)
{
CMD_ARGS(const u8 *failInstr);
if (GetConfig(CONFIG_OBLIVIOUS_TAUNT) >= GEN_6 && GetBattlerAbility(gBattlerTarget) == ABILITY_OBLIVIOUS)
if (GetConfig(B_OBLIVIOUS_TAUNT) >= GEN_6 && GetBattlerAbility(gBattlerTarget) == ABILITY_OBLIVIOUS)
{
gBattlescriptCurrInstr = BattleScript_NotAffectedAbilityPopUp;
gLastUsedAbility = ABILITY_OBLIVIOUS;
@ -13404,7 +13404,7 @@ bool32 DoesSubstituteBlockMove(u32 battlerAtk, u32 battlerDef, u32 move)
return FALSE;
else if (MoveIgnoresSubstitute(move))
return FALSE;
else if (GetConfig(CONFIG_INFILTRATOR_SUBSTITUTE) < GEN_6)
else if (GetConfig(B_INFILTRATOR_SUBSTITUTE) < GEN_6)
return TRUE;
else if (GetMoveEffect(move) == EFFECT_TRANSFORM || GetMoveEffect(move) == EFFECT_SKY_DROP)
return TRUE;
@ -14737,7 +14737,7 @@ bool32 CanBurnHitThaw(u16 move)
{
u8 i;
if (GetConfig(CONFIG_BURN_HIT_THAW) >= GEN_6)
if (GetConfig(B_BURN_HIT_THAW) >= GEN_6)
{
u32 numAdditionalEffects = GetMoveAdditionalEffectCount(move);
for (i = 0; i < numAdditionalEffects; i++)
@ -15521,7 +15521,7 @@ void BS_TryAllySwitch(void)
{
gBattlescriptCurrInstr = cmd->failInstr;
}
else if (GetConfig(CONFIG_ALLY_SWITCH_FAIL_CHANCE) >= GEN_9)
else if (GetConfig(B_ALLY_SWITCH_FAIL_CHANCE) >= GEN_9)
{
TryResetProtectUseCounter(gBattlerAttacker);
if (sProtectSuccessRates[gDisableStructs[gBattlerAttacker].protectUses] < Random())
@ -16401,7 +16401,7 @@ void BS_JumpIfIntimidateAbilityPrevented(void)
case ABILITY_SCRAPPY:
case ABILITY_OWN_TEMPO:
case ABILITY_OBLIVIOUS:
if (GetConfig(CONFIG_UPDATED_INTIMIDATE) >= GEN_8)
if (GetConfig(B_UPDATED_INTIMIDATE) >= GEN_8)
{
hasAbility = TRUE;
gBattlescriptCurrInstr = BattleScript_IntimidatePrevented;
@ -18017,7 +18017,7 @@ void BS_JumpIfAbilityPreventsRest(void)
NATIVE_ARGS(u8 battler, const u8 *jumpInstr);
u32 battler = GetBattlerForBattleScript(cmd->battler);
u32 ability = GetBattlerAbility(battler);
if (GetConfig(CONFIG_LEAF_GUARD_PREVENTS_REST) >= GEN_5 && IsLeafGuardProtected(battler, ability))
if (GetConfig(B_LEAF_GUARD_PREVENTS_REST) >= GEN_5 && IsLeafGuardProtected(battler, ability))
gBattlescriptCurrInstr = cmd->jumpInstr;
else if (IsShieldsDownProtected(battler, ability))
gBattlescriptCurrInstr = cmd->jumpInstr;
@ -18112,7 +18112,7 @@ void BS_BattlerItemToLastUsedItem(void)
void BS_JumpIfGenConfigLowerThan(void)
{
NATIVE_ARGS(u16 tag, u8 gen, const u8 *jumpInstr);
if (GetConfig(cmd->tag) < cmd->gen)
if (GetConfigInternal(cmd->tag) < cmd->gen)
gBattlescriptCurrInstr = cmd->jumpInstr;
else
gBattlescriptCurrInstr = cmd->nextInstr;

View File

@ -480,7 +480,7 @@ void HandleAction_UseMove(void)
{
gCurrentMove = gChosenMove = gDisableStructs[gBattlerAttacker].encoredMove;
gCurrMovePos = gChosenMovePos = gDisableStructs[gBattlerAttacker].encoredMovePos;
if (GetConfig(CONFIG_ENCORE_TARGET) < GEN_5)
if (GetConfig(B_ENCORE_TARGET) < GEN_5)
gBattleStruct->moveTarget[gBattlerAttacker] = GetBattleMoveTarget(gCurrentMove, NO_TARGET_OVERRIDE);
}
// check if the encored move wasn't overwritten
@ -695,7 +695,7 @@ bool32 TryRunFromBattle(u32 battler)
gProtectStructs[battler].fleeType = FLEE_ITEM;
effect++;
}
else if (GetConfig(CONFIG_GHOSTS_ESCAPE) >= GEN_6 && IS_BATTLER_OF_TYPE(battler, TYPE_GHOST))
else if (GetConfig(B_GHOSTS_ESCAPE) >= GEN_6 && IS_BATTLER_OF_TYPE(battler, TYPE_GHOST))
{
effect++;
}
@ -970,7 +970,7 @@ void HandleAction_ActionFinished(void)
gBattleResources->battleScriptsStack->size = 0;
gBattleStruct->synchronizeMoveEffect = MOVE_EFFECT_NONE;
if (GetConfig(CONFIG_RECALC_TURN_AFTER_ACTIONS) >= GEN_8 && !afterYouActive && !gBattleStruct->pledgeMove && !IsPursuitTargetSet())
if (GetConfig(B_RECALC_TURN_AFTER_ACTIONS) >= GEN_8 && !afterYouActive && !gBattleStruct->pledgeMove && !IsPursuitTargetSet())
{
// i starts at `gCurrentTurnActionNumber` because we don't want to recalculate turn order for mon that have already
// taken action. It's been previously increased, which we want in order to not recalculate the turn of the mon that just finished its action
@ -1245,7 +1245,7 @@ bool32 ShouldDefiantCompetitiveActivate(u32 battler, enum Ability ability)
if (IsBattlerAlly(gSpecialStatuses[battler].changedStatsBattlerId, battler) && !gBattleScripting.stickyWebStatDrop)
return FALSE;
if (GetConfig(CONFIG_DEFIANT_STICKY_WEB) >= GEN_9 || !gBattleScripting.stickyWebStatDrop)
if (GetConfig(B_DEFIANT_STICKY_WEB) >= GEN_9 || !gBattleScripting.stickyWebStatDrop)
return TRUE;
// only activate Defiant/Competitive if Web was setup by foe
return gSideTimers[side].stickyWebBattlerSide != side;
@ -1283,7 +1283,7 @@ void PrepareStringBattle(enum StringID stringId, u32 battler)
stringId = STRINGID_STATSWONTINCREASE2;
break;
case STRINGID_PKMNCUTSATTACKWITH:
if (GetConfig(CONFIG_UPDATED_INTIMIDATE) >= GEN_8
if (GetConfig(B_UPDATED_INTIMIDATE) >= GEN_8
&& targetAbility == ABILITY_RATTLED
&& CompareStat(gBattlerTarget, STAT_SPEED, MAX_STAT_STAGE, CMP_LESS_THAN, targetAbility))
{
@ -1425,7 +1425,7 @@ u32 TrySetCantSelectMoveBattleScript(u32 battler)
u16 *choicedMove = &gBattleStruct->choicedMove[battler];
enum BattleMoveEffects moveEffect = GetMoveEffect(move);
if (GetConfig(CONFIG_ENCORE_TARGET) >= GEN_5
if (GetConfig(B_ENCORE_TARGET) >= GEN_5
&& DYNAMAX_BYPASS_CHECK && GetActiveGimmick(battler) != GIMMICK_Z_MOVE && gDisableStructs[battler].encoredMove != move && gDisableStructs[battler].encoredMove != MOVE_NONE)
{
gBattleScripting.battler = battler;
@ -2282,7 +2282,7 @@ static enum MoveCanceler CancelerConfused(struct BattleContext *ctx)
if (gBattleMons[ctx->battlerAtk].volatiles.confusionTurns)
{
// confusion dmg
if (RandomPercentage(RNG_CONFUSION, (GetConfig(CONFIG_CONFUSION_SELF_DMG_CHANCE) >= GEN_7 ? 33 : 50)))
if (RandomPercentage(RNG_CONFUSION, (GetConfig(B_CONFUSION_SELF_DMG_CHANCE) >= GEN_7 ? 33 : 50)))
{
gBattleCommunication[MULTISTRING_CHOOSER] = TRUE;
struct DamageContext dmgCtx = {0};
@ -2619,7 +2619,7 @@ static enum MoveCanceler CancelerWeatherPrimal(struct BattleContext *ctx)
if (HasWeatherEffect() && GetMovePower(ctx->currentMove) > 0)
{
enum Type moveType = GetBattleMoveType(ctx->currentMove);
if (moveType == TYPE_FIRE && (gBattleWeather & B_WEATHER_RAIN_PRIMAL) && (GetConfig(CONFIG_POWDER_RAIN) >= GEN_7 || !TryActivatePowderStatus(ctx->currentMove)))
if (moveType == TYPE_FIRE && (gBattleWeather & B_WEATHER_RAIN_PRIMAL) && (GetConfig(B_POWDER_RAIN) >= GEN_7 || !TryActivatePowderStatus(ctx->currentMove)))
{
gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_PRIMAL_WEATHER_FIZZLED_BY_RAIN;
effect = MOVE_STEP_FAILURE;
@ -2852,7 +2852,7 @@ static enum MoveCanceler CancelerProtean(struct BattleContext *ctx)
enum Type moveType = GetBattleMoveType(ctx->currentMove);
if (ProteanTryChangeType(ctx->battlerAtk, ctx->abilities[ctx->battlerAtk], ctx->currentMove, moveType))
{
if (GetConfig(CONFIG_PROTEAN_LIBERO) >= GEN_9)
if (GetConfig(B_PROTEAN_LIBERO) >= GEN_9)
gDisableStructs[ctx->battlerAtk].usedProteanLibero = TRUE;
PREPARE_TYPE_BUFFER(gBattleTextBuff1, moveType);
gBattlerAbility = ctx->battlerAtk;
@ -2935,7 +2935,7 @@ static enum MoveCanceler CancelerMultihitMoves(struct BattleContext *ctx)
&& !GetMonData(&party[i], MON_DATA_IS_EGG)
&& !GetMonData(&party[i], MON_DATA_STATUS))
{
if (GetConfig(CONFIG_BEAT_UP) >= GEN_5)
if (GetConfig(B_BEAT_UP) >= GEN_5)
gBattleStruct->beatUpSpecies[gMultiHitCounter] = species;
else
gBattleStruct->beatUpSpecies[gMultiHitCounter] = i;
@ -3232,7 +3232,7 @@ bool32 TryChangeBattleWeather(u32 battler, u32 battleWeatherId, u32 ability)
{
return FALSE;
}
else if (GetConfig(CONFIG_ABILITY_WEATHER) < GEN_6 && ability != ABILITY_NONE)
else if (GetConfig(B_ABILITY_WEATHER) < GEN_6 && ability != ABILITY_NONE)
{
gBattleWeather = sBattleWeatherInfo[battleWeatherId].flag;
for (u32 i = 0; i < gBattlersCount; i++)
@ -3582,14 +3582,14 @@ bool32 CanAbilityAbsorbMove(u32 battlerAtk, u32 battlerDef, enum Ability ability
}
break;
case ABILITY_LIGHTNING_ROD:
if (GetConfig(CONFIG_REDIRECT_ABILITY_IMMUNITY) >= GEN_5 && moveType == TYPE_ELECTRIC && GetBattlerMoveTargetType(battlerAtk, move) != MOVE_TARGET_ALL_BATTLERS)
if (GetConfig(B_REDIRECT_ABILITY_IMMUNITY) >= GEN_5 && moveType == TYPE_ELECTRIC && GetBattlerMoveTargetType(battlerAtk, move) != MOVE_TARGET_ALL_BATTLERS)
{
effect = MOVE_ABSORBED_BY_STAT_INCREASE_ABILITY;
statId = STAT_SPATK;
}
break;
case ABILITY_STORM_DRAIN:
if (GetConfig(CONFIG_REDIRECT_ABILITY_IMMUNITY) >= GEN_5 && moveType == TYPE_WATER)
if (GetConfig(B_REDIRECT_ABILITY_IMMUNITY) >= GEN_5 && moveType == TYPE_WATER)
{
effect = MOVE_ABSORBED_BY_STAT_INCREASE_ABILITY;
statId = STAT_SPATK;
@ -4329,12 +4329,12 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, u32 battler, enum Ability ab
}
break;
case ABILITY_SNOW_WARNING:
if (GetConfig(CONFIG_SNOW_WARNING) >= GEN_9 && TryChangeBattleWeather(battler, BATTLE_WEATHER_SNOW, gLastUsedAbility))
if (GetConfig(B_SNOW_WARNING) >= GEN_9 && TryChangeBattleWeather(battler, BATTLE_WEATHER_SNOW, gLastUsedAbility))
{
BattleScriptPushCursorAndCallback(BattleScript_SnowWarningActivatesSnow);
effect++;
}
else if (GetConfig(CONFIG_SNOW_WARNING) < GEN_9 && TryChangeBattleWeather(battler, BATTLE_WEATHER_HAIL, gLastUsedAbility))
else if (GetConfig(B_SNOW_WARNING) < GEN_9 && TryChangeBattleWeather(battler, BATTLE_WEATHER_HAIL, gLastUsedAbility))
{
BattleScriptPushCursorAndCallback(BattleScript_SnowWarningActivatesHail);
effect++;
@ -4433,7 +4433,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, u32 battler, enum Ability ab
if (!gSpecialStatuses[battler].switchInAbilityDone
&& !GetBattlerPartyState(battler)->intrepidSwordBoost)
{
if (GetConfig(CONFIG_INTREPID_SWORD) == GEN_9)
if (GetConfig(B_INTREPID_SWORD) == GEN_9)
GetBattlerPartyState(battler)->intrepidSwordBoost = TRUE;
gSpecialStatuses[battler].switchInAbilityDone = TRUE;
if (CompareStat(battler, STAT_ATK, MAX_STAT_STAGE, CMP_LESS_THAN, gLastUsedAbility))
@ -4448,7 +4448,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, u32 battler, enum Ability ab
if (!gSpecialStatuses[battler].switchInAbilityDone
&& !GetBattlerPartyState(battler)->dauntlessShieldBoost)
{
if (GetConfig(CONFIG_DAUNTLESS_SHIELD) == GEN_9)
if (GetConfig(B_DAUNTLESS_SHIELD) == GEN_9)
GetBattlerPartyState(battler)->dauntlessShieldBoost = TRUE;
gSpecialStatuses[battler].switchInAbilityDone = TRUE;
if (CompareStat(battler, STAT_DEF, MAX_STAT_STAGE, CMP_LESS_THAN, gLastUsedAbility))
@ -4718,7 +4718,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, u32 battler, enum Ability ab
break;
case ABILITY_SHED_SKIN:
if ((gBattleMons[battler].status1 & STATUS1_ANY)
&& (GetConfig(CONFIG_ABILITY_TRIGGER_CHANCE) == GEN_4 ? RandomPercentage(RNG_SHED_SKIN, 30) : RandomChance(RNG_SHED_SKIN, 1, 3)))
&& (GetConfig(B_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))
@ -4759,7 +4759,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, u32 battler, enum Ability ab
if (gDisableStructs[battler].isFirstTurn != 2)
{
u32 validToRaise = 0, validToLower = 0;
u32 statsNum = GetConfig(CONFIG_MOODY_ACC_EVASION) >= GEN_8 ? NUM_STATS : NUM_BATTLE_STATS;
u32 statsNum = GetConfig(B_MOODY_ACC_EVASION) >= GEN_8 ? NUM_STATS : NUM_BATTLE_STATS;
for (i = STAT_ATK; i < statsNum; i++)
{
@ -5142,7 +5142,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, u32 battler, enum Ability ab
{
u32 poison, paralysis, sleep;
if (GetConfig(CONFIG_ABILITY_TRIGGER_CHANCE) >= GEN_5)
if (GetConfig(B_ABILITY_TRIGGER_CHANCE) >= GEN_5)
{
poison = 9;
paralysis = 19;
@ -5154,7 +5154,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, u32 battler, enum Ability ab
}
sleep = 30;
i = RandomUniform(RNG_EFFECT_SPORE, 0, GetConfig(CONFIG_ABILITY_TRIGGER_CHANCE) >= GEN_4 ? 99 : 299);
i = RandomUniform(RNG_EFFECT_SPORE, 0, GetConfig(B_ABILITY_TRIGGER_CHANCE) >= GEN_4 ? 99 : 299);
if (i < poison)
goto POISON_POINT;
if (i < paralysis)
@ -5180,7 +5180,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, u32 battler, enum Ability ab
}
break;
case ABILITY_POISON_POINT:
if (GetConfig(CONFIG_ABILITY_TRIGGER_CHANCE) >= GEN_4 ? RandomPercentage(RNG_POISON_POINT, 30) : RandomChance(RNG_POISON_POINT, 1, 3))
if (GetConfig(B_ABILITY_TRIGGER_CHANCE) >= GEN_4 ? RandomPercentage(RNG_POISON_POINT, 30) : RandomChance(RNG_POISON_POINT, 1, 3))
{
POISON_POINT:
{
@ -5202,7 +5202,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, u32 battler, enum Ability ab
}
break;
case ABILITY_STATIC:
if (GetConfig(CONFIG_ABILITY_TRIGGER_CHANCE) >= GEN_4 ? RandomPercentage(RNG_STATIC, 30) : RandomChance(RNG_STATIC, 1, 3))
if (GetConfig(B_ABILITY_TRIGGER_CHANCE) >= GEN_4 ? RandomPercentage(RNG_STATIC, 30) : RandomChance(RNG_STATIC, 1, 3))
{
STATIC:
{
@ -5229,7 +5229,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))
&& (GetConfig(CONFIG_ABILITY_TRIGGER_CHANCE) >= GEN_4 ? RandomPercentage(RNG_FLAME_BODY, 30) : RandomChance(RNG_FLAME_BODY, 1, 3)))
&& (GetConfig(B_ABILITY_TRIGGER_CHANCE) >= GEN_4 ? RandomPercentage(RNG_FLAME_BODY, 30) : RandomChance(RNG_FLAME_BODY, 1, 3)))
{
gEffectBattler = gBattlerAttacker;
gBattleScripting.battler = gBattlerTarget;
@ -5244,7 +5244,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, u32 battler, enum Ability ab
&& !gProtectStructs[gBattlerAttacker].confusionSelfDmg
&& IsBattlerTurnDamaged(gBattlerTarget)
&& IsBattlerAlive(gBattlerTarget)
&& (GetConfig(CONFIG_ABILITY_TRIGGER_CHANCE) >= GEN_4 ? RandomPercentage(RNG_CUTE_CHARM, 30) : RandomChance(RNG_CUTE_CHARM, 1, 3))
&& (GetConfig(B_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)
@ -5532,7 +5532,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, u32 battler, enum Ability ab
gBattleScripting.battler = gBattlerAbility = gBattlerTarget;
RecordAbilityBattle(gBattlerTarget, ABILITY_SYNCHRONIZE);
if (GetConfig(CONFIG_SYNCHRONIZE_TOXIC) < GEN_5 && gBattleStruct->synchronizeMoveEffect == MOVE_EFFECT_TOXIC)
if (GetConfig(B_SYNCHRONIZE_TOXIC) < GEN_5 && gBattleStruct->synchronizeMoveEffect == MOVE_EFFECT_TOXIC)
gBattleStruct->synchronizeMoveEffect = MOVE_EFFECT_POISON;
if (CanSetNonVolatileStatus(
@ -5562,7 +5562,7 @@ u32 AbilityBattleEffects(enum AbilityEffect caseID, u32 battler, enum Ability ab
gBattleScripting.battler = gBattlerAbility = gBattlerAttacker;
RecordAbilityBattle(gBattlerAttacker, ABILITY_SYNCHRONIZE);
if (GetConfig(CONFIG_SYNCHRONIZE_TOXIC) < GEN_5 && gBattleStruct->synchronizeMoveEffect == MOVE_EFFECT_TOXIC)
if (GetConfig(B_SYNCHRONIZE_TOXIC) < GEN_5 && gBattleStruct->synchronizeMoveEffect == MOVE_EFFECT_TOXIC)
gBattleStruct->synchronizeMoveEffect = MOVE_EFFECT_POISON;
if (CanSetNonVolatileStatus(
@ -5836,7 +5836,7 @@ u32 IsAbilityOnFieldExcept(u32 battler, enum Ability ability)
u32 IsAbilityPreventingEscape(u32 battler)
{
if (GetConfig(CONFIG_GHOSTS_ESCAPE) >= GEN_6 && IS_BATTLER_OF_TYPE(battler, TYPE_GHOST))
if (GetConfig(B_GHOSTS_ESCAPE) >= GEN_6 && IS_BATTLER_OF_TYPE(battler, TYPE_GHOST))
return 0;
bool32 isBattlerGrounded = IsBattlerGrounded(battler, GetBattlerAbility(battler), GetBattlerHoldEffect(battler));
@ -5864,7 +5864,7 @@ bool32 CanBattlerEscape(u32 battler) // no ability check
{
if (gBattleStruct->battlerState[battler].commanderSpecies != SPECIES_NONE)
return FALSE;
else if (GetConfig(CONFIG_GHOSTS_ESCAPE) >= GEN_6 && IS_BATTLER_OF_TYPE(battler, TYPE_GHOST))
else if (GetConfig(B_GHOSTS_ESCAPE) >= GEN_6 && IS_BATTLER_OF_TYPE(battler, TYPE_GHOST))
return TRUE;
else if (gBattleMons[battler].volatiles.escapePrevention)
return FALSE;
@ -6162,7 +6162,7 @@ bool32 CanSetNonVolatileStatus(u32 battlerAtk, u32 battlerDef, enum Ability abil
{
battleScript = BattleScript_AlreadyParalyzed;
}
else if (GetConfig(CONFIG_PARALYZE_ELECTRIC) >= GEN_6 && IS_BATTLER_OF_TYPE(battlerDef, TYPE_ELECTRIC))
else if (GetConfig(B_PARALYZE_ELECTRIC) >= GEN_6 && IS_BATTLER_OF_TYPE(battlerDef, TYPE_ELECTRIC))
{
battleScript = BattleScript_NotAffected;
}
@ -7307,7 +7307,7 @@ static inline u32 CalcMoveBasePower(struct DamageContext *ctx)
basePower *= 2;
break;
case EFFECT_BEAT_UP:
if (GetConfig(CONFIG_BEAT_UP) >= GEN_5)
if (GetConfig(B_BEAT_UP) >= GEN_5)
basePower = CalcBeatUpPower();
break;
case EFFECT_PSYBLADE:
@ -7421,9 +7421,9 @@ static inline u32 CalcMoveBasePowerAfterModifiers(struct DamageContext *ctx)
if (IsBattlerTerrainAffected(battlerAtk, ctx->abilityAtk, ctx->holdEffectAtk, STATUS_FIELD_PSYCHIC_TERRAIN) && moveType == TYPE_PSYCHIC)
modifier = uq4_12_multiply(modifier, (B_TERRAIN_TYPE_BOOST >= GEN_8 ? UQ_4_12(1.3) : UQ_4_12(1.5)));
if (IsFieldMudSportAffected(ctx->moveType))
modifier = uq4_12_multiply(modifier, UQ_4_12(GetConfig(CONFIG_SPORT_DMG_REDUCTION) >= GEN_5 ? 0.33 : 0.5));
modifier = uq4_12_multiply(modifier, UQ_4_12(GetConfig(B_SPORT_DMG_REDUCTION) >= GEN_5 ? 0.33 : 0.5));
if (IsFieldWaterSportAffected(ctx->moveType))
modifier = uq4_12_multiply(modifier, UQ_4_12(GetConfig(CONFIG_SPORT_DMG_REDUCTION) >= GEN_5 ? 0.33 : 0.5));
modifier = uq4_12_multiply(modifier, UQ_4_12(GetConfig(B_SPORT_DMG_REDUCTION) >= GEN_5 ? 0.33 : 0.5));
// attacker's abilities
switch (ctx->abilityAtk)
@ -7489,22 +7489,22 @@ static inline u32 CalcMoveBasePowerAfterModifiers(struct DamageContext *ctx)
break;
case ABILITY_PIXILATE:
if (moveType == TYPE_FAIRY && gBattleStruct->battlerState[battlerAtk].ateBoost)
modifier = uq4_12_multiply(modifier, UQ_4_12(GetConfig(CONFIG_ATE_MULTIPLIER) >= GEN_7 ? 1.2 : 1.3));
modifier = uq4_12_multiply(modifier, UQ_4_12(GetConfig(B_ATE_MULTIPLIER) >= GEN_7 ? 1.2 : 1.3));
break;
case ABILITY_GALVANIZE:
if (moveType == TYPE_ELECTRIC && gBattleStruct->battlerState[battlerAtk].ateBoost)
modifier = uq4_12_multiply(modifier, UQ_4_12(GetConfig(CONFIG_ATE_MULTIPLIER) >= GEN_7 ? 1.2 : 1.3));
modifier = uq4_12_multiply(modifier, UQ_4_12(GetConfig(B_ATE_MULTIPLIER) >= GEN_7 ? 1.2 : 1.3));
break;
case ABILITY_REFRIGERATE:
if (moveType == TYPE_ICE && gBattleStruct->battlerState[battlerAtk].ateBoost)
modifier = uq4_12_multiply(modifier, UQ_4_12(GetConfig(CONFIG_ATE_MULTIPLIER) >= GEN_7 ? 1.2 : 1.3));
modifier = uq4_12_multiply(modifier, UQ_4_12(GetConfig(B_ATE_MULTIPLIER) >= GEN_7 ? 1.2 : 1.3));
break;
case ABILITY_AERILATE:
if (moveType == TYPE_FLYING && gBattleStruct->battlerState[battlerAtk].ateBoost)
modifier = uq4_12_multiply(modifier, UQ_4_12(GetConfig(CONFIG_ATE_MULTIPLIER) >= GEN_7 ? 1.2 : 1.3));
modifier = uq4_12_multiply(modifier, UQ_4_12(GetConfig(B_ATE_MULTIPLIER) >= GEN_7 ? 1.2 : 1.3));
break;
case ABILITY_NORMALIZE:
if (moveType == TYPE_NORMAL && gBattleStruct->battlerState[battlerAtk].ateBoost && GetConfig(CONFIG_ATE_MULTIPLIER) >= GEN_7)
if (moveType == TYPE_NORMAL && gBattleStruct->battlerState[battlerAtk].ateBoost && GetConfig(B_ATE_MULTIPLIER) >= GEN_7)
modifier = uq4_12_multiply(modifier, UQ_4_12(1.2));
break;
case ABILITY_PUNK_ROCK:
@ -7836,7 +7836,7 @@ static inline u32 CalcAttackStat(struct DamageContext *ctx)
case ABILITY_TRANSISTOR:
if (moveType == TYPE_ELECTRIC)
{
if (GetConfig(CONFIG_TRANSISTOR_BOOST) >= GEN_9)
if (GetConfig(B_TRANSISTOR_BOOST) >= GEN_9)
modifier = uq4_12_multiply(modifier, UQ_4_12(1.3));
else
modifier = uq4_12_multiply(modifier, UQ_4_12(1.5));
@ -7945,7 +7945,7 @@ static inline u32 CalcAttackStat(struct DamageContext *ctx)
modifier = uq4_12_multiply_half_down(modifier, UQ_4_12(2.0));
break;
case HOLD_EFFECT_LIGHT_BALL:
if (atkBaseSpeciesId == SPECIES_PIKACHU && (GetConfig(CONFIG_LIGHT_BALL_ATTACK_BOOST) >= GEN_4 || IsBattleMoveSpecial(move)))
if (atkBaseSpeciesId == SPECIES_PIKACHU && (GetConfig(B_LIGHT_BALL_ATTACK_BOOST) >= GEN_4 || IsBattleMoveSpecial(move)))
modifier = uq4_12_multiply_half_down(modifier, UQ_4_12(2.0));
break;
case HOLD_EFFECT_CHOICE_BAND:
@ -8153,7 +8153,7 @@ static inline u32 CalcDefenseStat(struct DamageContext *ctx)
}
// sandstorm sp.def boost for rock types
if (GetConfig(CONFIG_SANDSTORM_SPDEF_BOOST) >= GEN_4 && IS_BATTLER_OF_TYPE(battlerDef, TYPE_ROCK) && IsBattlerWeatherAffected(battlerDef, B_WEATHER_SANDSTORM) && !usesDefStat)
if (GetConfig(B_SANDSTORM_SPDEF_BOOST) >= GEN_4 && IS_BATTLER_OF_TYPE(battlerDef, TYPE_ROCK) && IsBattlerWeatherAffected(battlerDef, B_WEATHER_SANDSTORM) && !usesDefStat)
modifier = uq4_12_multiply_half_down(modifier, UQ_4_12(1.5));
// snow def boost for ice types
if (IS_BATTLER_OF_TYPE(battlerDef, TYPE_ICE) && IsBattlerWeatherAffected(battlerDef, B_WEATHER_SNOW) && usesDefStat)
@ -8231,12 +8231,12 @@ static inline uq4_12_t GetBurnOrFrostBiteModifier(struct DamageContext *ctx)
if (gBattleMons[ctx->battlerAtk].status1 & STATUS1_BURN
&& IsBattleMovePhysical(ctx->move)
&& (GetConfig(CONFIG_BURN_FACADE_DMG) < GEN_6 || moveEffect != EFFECT_FACADE)
&& (GetConfig(B_BURN_FACADE_DMG) < GEN_6 || moveEffect != EFFECT_FACADE)
&& ctx->abilityAtk != ABILITY_GUTS)
return UQ_4_12(0.5);
if (gBattleMons[ctx->battlerAtk].status1 & STATUS1_FROSTBITE
&& IsBattleMoveSpecial(ctx->move)
&& (GetConfig(CONFIG_BURN_FACADE_DMG) < GEN_6 || moveEffect != EFFECT_FACADE))
&& (GetConfig(B_BURN_FACADE_DMG) < GEN_6 || moveEffect != EFFECT_FACADE))
return UQ_4_12(0.5);
return UQ_4_12(1.0);
}
@ -8244,7 +8244,7 @@ static inline uq4_12_t GetBurnOrFrostBiteModifier(struct DamageContext *ctx)
static inline uq4_12_t GetCriticalModifier(bool32 isCrit)
{
if (isCrit)
return GetConfig(CONFIG_CRIT_MULTIPLIER) >= GEN_6 ? UQ_4_12(1.5) : UQ_4_12(2.0);
return GetConfig(B_CRIT_MULTIPLIER) >= GEN_6 ? UQ_4_12(1.5) : UQ_4_12(2.0);
return UQ_4_12(1.0);
}
@ -8609,7 +8609,7 @@ s32 DoFixedDamageMoveCalc(struct DamageContext *ctx)
dmg = GetNonDynamaxHP(ctx->battlerAtk);
break;
case EFFECT_BEAT_UP:
if (GetConfig(CONFIG_BEAT_UP) < GEN_5)
if (GetConfig(B_BEAT_UP) < GEN_5)
dmg = CalcBeatUpDamage(ctx);
else
return INT32_MAX;
@ -8883,7 +8883,7 @@ static inline uq4_12_t CalcTypeEffectivenessMultiplierInternal(struct DamageCont
RecordAbilityBattle(ctx->battlerDef, ABILITY_LEVITATE);
}
}
else if (GetConfig(CONFIG_SHEER_COLD_IMMUNITY) >= GEN_7 && GetMoveEffect(ctx->move) == EFFECT_SHEER_COLD && IS_BATTLER_OF_TYPE(ctx->battlerDef, TYPE_ICE))
else if (GetConfig(B_SHEER_COLD_IMMUNITY) >= GEN_7 && GetMoveEffect(ctx->move) == EFFECT_SHEER_COLD && IS_BATTLER_OF_TYPE(ctx->battlerDef, TYPE_ICE))
{
modifier = UQ_4_12(0.0);
}
@ -8897,7 +8897,7 @@ static inline uq4_12_t CalcTypeEffectivenessMultiplierInternal(struct DamageCont
}
// Iron Ball ignores type modifiers for flying-type mons if it is the only source of grounding
if (GetConfig(CONFIG_IRON_BALL) >= GEN_5
if (GetConfig(B_IRON_BALL) >= GEN_5
&& ctx->moveType == TYPE_GROUND
&& ctx->holdEffectDef == HOLD_EFFECT_IRON_BALL
&& IS_BATTLER_OF_TYPE(ctx->battlerDef, TYPE_FLYING)
@ -9663,7 +9663,7 @@ u32 TryImmunityAbilityHealStatus(u32 battler, enum AbilityEffect caseID)
case ABILITY_OBLIVIOUS:
if (gBattleMons[battler].volatiles.infatuation)
effect = 3;
else if (GetConfig(CONFIG_OBLIVIOUS_TAUNT) >= GEN_6 && gDisableStructs[battler].tauntTimer != 0)
else if (GetConfig(B_OBLIVIOUS_TAUNT) >= GEN_6 && gDisableStructs[battler].tauntTimer != 0)
effect = 4;
break;
}
@ -9713,7 +9713,7 @@ u32 TryImmunityAbilityHealStatus(u32 battler, enum AbilityEffect caseID)
uq4_12_t GetBadgeBoostModifier(void)
{
if (GetConfig(CONFIG_BADGE_BOOST) < GEN_3)
if (GetConfig(B_BADGE_BOOST) < GEN_3)
return UQ_4_12(1.125);
else
return UQ_4_12(1.1);
@ -9721,7 +9721,7 @@ uq4_12_t GetBadgeBoostModifier(void)
bool32 ShouldGetStatBadgeBoost(u16 badgeFlag, u32 battler)
{
if (GetConfig(CONFIG_BADGE_BOOST) <= GEN_3 && badgeFlag != 0)
if (GetConfig(B_BADGE_BOOST) <= GEN_3 && badgeFlag != 0)
{
if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_RECORDED_LINK | BATTLE_TYPE_FRONTIER))
return FALSE;
@ -9849,7 +9849,7 @@ bool32 CanFling(u32 battler)
u16 item = gBattleMons[battler].item;
if (item == ITEM_NONE
|| (GetConfig(CONFIG_KLUTZ_FLING_INTERACTION) >= GEN_5 && GetBattlerAbility(battler) == ABILITY_KLUTZ)
|| (GetConfig(B_KLUTZ_FLING_INTERACTION) >= GEN_5 && GetBattlerAbility(battler) == ABILITY_KLUTZ)
|| gFieldStatuses & STATUS_FIELD_MAGIC_ROOM
|| gBattleMons[battler].volatiles.embargo
|| (GetItemTMHMIndex(item) != 0 && GetItemImportance(item) == 1) // don't fling reusable TMs
@ -10058,7 +10058,7 @@ bool32 CompareStat(u32 battler, enum Stat statId, u8 cmpTo, u8 cmpKind, enum Abi
bool32 BlocksPrankster(u16 move, u32 battlerPrankster, u32 battlerDef, bool32 checkTarget)
{
if (GetConfig(CONFIG_PRANKSTER_DARK_TYPES) < GEN_7)
if (GetConfig(B_PRANKSTER_DARK_TYPES) < GEN_7)
return FALSE;
if (!gProtectStructs[battlerPrankster].pranksterElevated)
return FALSE;
@ -10077,7 +10077,7 @@ bool32 BlocksPrankster(u16 move, u32 battlerPrankster, u32 battlerDef, bool32 ch
bool32 CantPickupItem(u32 battler)
{
// Used by RandomUniformExcept() for RNG_PICKUP
if (battler == gBattlerAttacker && (GetConfig(CONFIG_PICKUP_WILD) < GEN_9 || gBattleTypeFlags & (BATTLE_TYPE_TRAINER | BATTLE_TYPE_LINK)))
if (battler == gBattlerAttacker && (GetConfig(B_PICKUP_WILD) < GEN_9 || gBattleTypeFlags & (BATTLE_TYPE_TRAINER | BATTLE_TYPE_LINK)))
return TRUE;
return !(IsBattlerAlive(battler) && GetBattlerPartyState(battler)->usedHeldItem && gBattleStruct->battlerState[battler].canPickupItem);
}
@ -10139,7 +10139,7 @@ static void SetRandomMultiHitCounter()
{
if (GetBattlerHoldEffect(gBattlerAttacker) == HOLD_EFFECT_LOADED_DICE)
gMultiHitCounter = RandomUniform(RNG_LOADED_DICE, 4, 5);
else if (GetConfig(CONFIG_MULTI_HIT_CHANCE) >= GEN_5)
else if (GetConfig(B_MULTI_HIT_CHANCE) >= GEN_5)
gMultiHitCounter = RandomWeighted(RNG_HITS, 0, 0, 7, 7, 3, 3); // 35%: 2 hits, 35%: 3 hits, 15% 4 hits, 15% 5 hits.
else
gMultiHitCounter = RandomWeighted(RNG_HITS, 0, 0, 3, 3, 1, 1); // 37.5%: 2 hits, 37.5%: 3 hits, 12.5% 4 hits, 12.5% 5 hits.
@ -10577,7 +10577,7 @@ void ClearDamageCalcResults(void)
bool32 DoesDestinyBondFail(u32 battler)
{
return GetConfig(CONFIG_DESTINY_BOND_FAIL) >= GEN_7 && gBattleMons[battler].volatiles.destinyBond;
return GetConfig(B_DESTINY_BOND_FAIL) >= GEN_7 && gBattleMons[battler].volatiles.destinyBond;
}
// This check has always to be the last in a condtion statement because of the recording of AI data.
@ -10863,7 +10863,7 @@ bool32 CanMoveSkipAccuracyCalc(u32 battlerAtk, u32 battlerDef, enum Ability abil
u32 nonVolatileStatus = GetMoveNonVolatileStatus(move);
if ((gBattleMons[battlerDef].volatiles.lockOn && gDisableStructs[battlerDef].battlerWithSureHit == battlerAtk)
|| (GetConfig(CONFIG_TOXIC_NEVER_MISS) >= GEN_6 && nonVolatileStatus == MOVE_EFFECT_TOXIC && IS_BATTLER_OF_TYPE(battlerAtk, TYPE_POISON))
|| (GetConfig(B_TOXIC_NEVER_MISS) >= GEN_6 && nonVolatileStatus == MOVE_EFFECT_TOXIC && IS_BATTLER_OF_TYPE(battlerAtk, TYPE_POISON))
|| gBattleMons[battlerDef].volatiles.glaiveRush)
{
effect = TRUE;
@ -10950,7 +10950,7 @@ u32 GetTotalAccuracy(u32 battlerAtk, u32 battlerDef, u32 move, enum Ability atkA
accStage = gBattleMons[battlerAtk].statStages[STAT_ACC];
evasionStage = gBattleMons[battlerDef].statStages[STAT_EVASION];
if (atkAbility == ABILITY_UNAWARE || atkAbility == ABILITY_KEEN_EYE || atkAbility == ABILITY_MINDS_EYE
|| (GetConfig(CONFIG_ILLUMINATE_EFFECT) >= GEN_9 && atkAbility == ABILITY_ILLUMINATE))
|| (GetConfig(B_ILLUMINATE_EFFECT) >= GEN_9 && atkAbility == ABILITY_ILLUMINATE))
evasionStage = DEFAULT_STAT_STAGE;
if (MoveIgnoresDefenseEvasionStages(move))
evasionStage = DEFAULT_STAT_STAGE;
@ -11126,8 +11126,8 @@ static bool32 IsOpposingSideEmpty(u32 battler)
bool32 IsAffectedByPowderMove(u32 battler, u32 ability, enum HoldEffect holdEffect)
{
if ((GetConfig(CONFIG_POWDER_OVERCOAT) >= GEN_6 && ability == ABILITY_OVERCOAT)
|| (GetConfig(CONFIG_POWDER_GRASS) >= GEN_6 && IS_BATTLER_OF_TYPE(battler, TYPE_GRASS))
if ((GetConfig(B_POWDER_OVERCOAT) >= GEN_6 && ability == ABILITY_OVERCOAT)
|| (GetConfig(B_POWDER_GRASS) >= GEN_6 && IS_BATTLER_OF_TYPE(battler, TYPE_GRASS))
|| holdEffect == HOLD_EFFECT_SAFETY_GOGGLES)
return FALSE;
return TRUE;

View File

@ -3,7 +3,7 @@
#include "malloc.h"
#include "constants/generational_changes.h"
#define UNPACK_CONFIG_GEN_CHANGES2(_name, _field, ...) ._field = B_##_name,
#define UNPACK_CONFIG_GEN_CHANGES2(_name, _field, ...) ._field = _name,
const struct GenChanges sConfigChanges =
{
@ -31,7 +31,7 @@ EWRAM_DATA struct GenChanges *gConfigChangesTestOverride = NULL;
// Gets the value of a volatile status flag for a certain battler
// Primarily used for the debug menu and scripts. Outside of it explicit references are preferred
u32 GetConfig(enum ConfigTag _genConfig)
u32 GetConfigInternal(enum ConfigTag _genConfig)
{
#if TESTING
if (gConfigChangesTestOverride == NULL)

View File

@ -54,7 +54,7 @@ SINGLE_BATTLE_TEST("Aerilate boosts power of affected moves by 20% (Gen7+) or 30
PARAMETRIZE { move = MOVE_SKILL_SWAP; genConfig = GEN_6; }
GIVEN {
WITH_CONFIG(CONFIG_ATE_MULTIPLIER, genConfig);
WITH_CONFIG(B_ATE_MULTIPLIER, genConfig);
ASSUME(GetMoveType(MOVE_TACKLE) == TYPE_NORMAL);
ASSUME(GetMoveEffect(MOVE_SKILL_SWAP) == EFFECT_SKILL_SWAP);
PLAYER(SPECIES_WOBBUFFET);

View File

@ -47,7 +47,7 @@ SINGLE_BATTLE_TEST("Arena Trap doesn't prevent switch outs via moves that switch
GIVEN {
ASSUME(GetMoveEffect(move) == effect);
ASSUME(GetMoveEffect(MOVE_SOAK) == EFFECT_SOAK);
WITH_CONFIG(CONFIG_TELEPORT_BEHAVIOR, GEN_8);
WITH_CONFIG(B_TELEPORT_BEHAVIOR, GEN_8);
PLAYER(SPECIES_WOBBUFFET);
PLAYER(SPECIES_WYNAUT);
OPPONENT(SPECIES_DIGLETT) { Ability(ABILITY_ARENA_TRAP); }
@ -113,7 +113,7 @@ SINGLE_BATTLE_TEST("Arena Trap prevents switch outs from Ghost-type Pokémon (Ge
{
GIVEN {
ASSUME(GetSpeciesType(SPECIES_SHUPPET, 0) == TYPE_GHOST);
WITH_CONFIG(CONFIG_GHOSTS_ESCAPE, GEN_5);
WITH_CONFIG(B_GHOSTS_ESCAPE, GEN_5);
PLAYER(SPECIES_SHUPPET);
OPPONENT(SPECIES_DIGLETT) { Ability(ABILITY_ARENA_TRAP); }
} WHEN {
@ -129,7 +129,7 @@ SINGLE_BATTLE_TEST("Arena Trap doesn't prevent switch outs from Ghost-type Poké
{
GIVEN {
ASSUME(GetSpeciesType(SPECIES_SHUPPET, 0) == TYPE_GHOST);
WITH_CONFIG(CONFIG_GHOSTS_ESCAPE, GEN_6);
WITH_CONFIG(B_GHOSTS_ESCAPE, GEN_6);
PLAYER(SPECIES_SHUPPET);
OPPONENT(SPECIES_DIGLETT) { Ability(ABILITY_ARENA_TRAP); }
} WHEN {

View File

@ -17,7 +17,7 @@ SINGLE_BATTLE_TEST("Battle Bond transforms player's Greninja - Singles")
PARAMETRIZE { monsCountPlayer = 2; monsCountOpponent = 2; }
GIVEN {
WITH_CONFIG(CONFIG_BATTLE_BOND, GEN_8);
WITH_CONFIG(B_BATTLE_BOND, GEN_8);
PLAYER(SPECIES_GRENINJA_BATTLE_BOND);
if (monsCountPlayer == 2) {
PLAYER(SPECIES_WOBBUFFET);
@ -65,7 +65,7 @@ SINGLE_BATTLE_TEST("Battle Bond transforms opponent's Greninja - Singles")
PARAMETRIZE { monsCountPlayer = 2; monsCountOpponent = 2; }
GIVEN {
WITH_CONFIG(CONFIG_BATTLE_BOND, GEN_8);
WITH_CONFIG(B_BATTLE_BOND, GEN_8);
OPPONENT(SPECIES_GRENINJA_BATTLE_BOND);
if (monsCountOpponent == 2) {
OPPONENT(SPECIES_WOBBUFFET);
@ -113,7 +113,7 @@ DOUBLE_BATTLE_TEST("Battle Bond transforms player's Greninja when fainting its A
PARAMETRIZE { monsCountPlayer = 3; monsCountOpponent = 3; }
GIVEN {
WITH_CONFIG(CONFIG_BATTLE_BOND, GEN_8);
WITH_CONFIG(B_BATTLE_BOND, GEN_8);
PLAYER(SPECIES_GRENINJA_BATTLE_BOND);
PLAYER(SPECIES_WOBBUFFET) { HP(1); }
if (monsCountPlayer == 3) {
@ -145,7 +145,7 @@ DOUBLE_BATTLE_TEST("Battle Bond transforms player's Greninja when fainting its A
SINGLE_BATTLE_TEST("Battle Bond increases Atk, SpAtk and Speed by 1 stage (Gen9+)")
{
GIVEN {
WITH_CONFIG(CONFIG_BATTLE_BOND, GEN_9);
WITH_CONFIG(B_BATTLE_BOND, GEN_9);
PLAYER(SPECIES_GRENINJA_BATTLE_BOND) { Ability(ABILITY_BATTLE_BOND); }
OPPONENT(SPECIES_WOBBUFFET) { HP(1); }
OPPONENT(SPECIES_WOBBUFFET);
@ -166,7 +166,7 @@ SINGLE_BATTLE_TEST("Battle Bond increases Atk, SpAtk and Speed by 1 stage (Gen9+
SINGLE_BATTLE_TEST("Battle Bond increases a Stat even if only one can be increased (Gen9+)")
{
GIVEN {
WITH_CONFIG(CONFIG_BATTLE_BOND, GEN_9);
WITH_CONFIG(B_BATTLE_BOND, GEN_9);
PLAYER(SPECIES_GRENINJA_BATTLE_BOND) { Ability(ABILITY_BATTLE_BOND); }
OPPONENT(SPECIES_WOBBUFFET) { HP(1); }
OPPONENT(SPECIES_WOBBUFFET);

View File

@ -140,7 +140,7 @@ SINGLE_BATTLE_TEST("Competitive activates after Sticky Web lowers Speed")
SINGLE_BATTLE_TEST("Competitive doesn't activate after Sticky Web lowers Speed if Court Changed (gen8)")
{
GIVEN {
WITH_CONFIG(CONFIG_DEFIANT_STICKY_WEB, GEN_8);
WITH_CONFIG(B_DEFIANT_STICKY_WEB, GEN_8);
PLAYER(SPECIES_WOBBUFFET);
PLAYER(SPECIES_IGGLYBUFF) { Ability(ABILITY_COMPETITIVE); }
OPPONENT(SPECIES_WOBBUFFET);
@ -167,7 +167,7 @@ SINGLE_BATTLE_TEST("Competitive doesn't activate after Sticky Web lowers Speed i
SINGLE_BATTLE_TEST("Competitive correctly activates after Sticky Web lowers Speed if Court Changed (Gen8)")
{
GIVEN {
WITH_CONFIG(CONFIG_DEFIANT_STICKY_WEB, GEN_8);
WITH_CONFIG(B_DEFIANT_STICKY_WEB, GEN_8);
PLAYER(SPECIES_WOBBUFFET);
PLAYER(SPECIES_IGGLYBUFF) { Ability(ABILITY_COMPETITIVE); }
OPPONENT(SPECIES_WOBBUFFET);

View File

@ -55,7 +55,7 @@ SINGLE_BATTLE_TEST("Cute Charm triggers 1/3 times (Gen3) or 30% (Gen 4+) of the
PARAMETRIZE { config = GEN_4; passes = 3; trials = 10; } // 30%
PASSES_RANDOMLY(passes, trials, RNG_CUTE_CHARM);
GIVEN {
WITH_CONFIG(CONFIG_ABILITY_TRIGGER_CHANCE, config);
WITH_CONFIG(B_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

@ -580,7 +580,7 @@ SINGLE_BATTLE_TEST("Dancer user may hit itself in confusion instead of copying a
PARAMETRIZE { genConfig = GEN_7; pctChance = 33; }
PASSES_RANDOMLY(pctChance, 100, RNG_CONFUSION);
GIVEN {
WITH_CONFIG(CONFIG_CONFUSION_SELF_DMG_CHANCE, genConfig);
WITH_CONFIG(B_CONFUSION_SELF_DMG_CHANCE, genConfig);
ASSUME(IsDanceMove(MOVE_DRAGON_DANCE));
ASSUME(GetMoveEffect(MOVE_CONFUSE_RAY) == EFFECT_CONFUSE);
PLAYER(SPECIES_WOBBUFFET) { Speed(30); }
@ -747,7 +747,7 @@ SINGLE_BATTLE_TEST("Dancer can still copy status moves if the user is holding an
DOUBLE_BATTLE_TEST("Dancer copies Lunar Dance after the original user faints, but before the replacement is sent out")
{
GIVEN {
WITH_CONFIG(CONFIG_HEALING_WISH_SWITCH, GEN_7);
WITH_CONFIG(B_HEALING_WISH_SWITCH, GEN_7);
ASSUME(GetMoveEffect(MOVE_LUNAR_DANCE) == EFFECT_LUNAR_DANCE);
PLAYER(SPECIES_WOBBUFFET) { Speed(50); }
PLAYER(SPECIES_ORICORIO) { Ability(ABILITY_DANCER); Speed(20); }

View File

@ -20,7 +20,7 @@ SINGLE_BATTLE_TEST("Dauntless Shield raises Defense by one stage")
SINGLE_BATTLE_TEST("Dauntless Shield raises Defense by one stage every time it switches in (Gen8)")
{
GIVEN {
WITH_CONFIG(CONFIG_DAUNTLESS_SHIELD, GEN_8);
WITH_CONFIG(B_DAUNTLESS_SHIELD, GEN_8);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_ZAMAZENTA) { Ability(ABILITY_DAUNTLESS_SHIELD); }
OPPONENT(SPECIES_WYNAUT);
@ -42,7 +42,7 @@ SINGLE_BATTLE_TEST("Dauntless Shield raises Defense by one stage every time it s
SINGLE_BATTLE_TEST("Dauntless Shield raises Defense by one stage only once per battle (Gen 9+)")
{
GIVEN {
WITH_CONFIG(CONFIG_DAUNTLESS_SHIELD, GEN_9);
WITH_CONFIG(B_DAUNTLESS_SHIELD, GEN_9);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_ZAMAZENTA) { Ability(ABILITY_DAUNTLESS_SHIELD); }
OPPONENT(SPECIES_WYNAUT);

View File

@ -142,7 +142,7 @@ SINGLE_BATTLE_TEST("Defiant activates after Sticky Web lowers Speed")
SINGLE_BATTLE_TEST("Defiant doesn't activate after Sticky Web lowers Speed if Court Changed (Gen8)")
{
GIVEN {
WITH_CONFIG(CONFIG_DEFIANT_STICKY_WEB, GEN_8);
WITH_CONFIG(B_DEFIANT_STICKY_WEB, GEN_8);
ASSUME(GetMoveEffect(MOVE_GROWL) == EFFECT_ATTACK_DOWN);
ASSUME(GetMoveEffect(MOVE_STICKY_WEB) == EFFECT_STICKY_WEB);
ASSUME(GetMoveEffect(MOVE_COURT_CHANGE) == EFFECT_COURT_CHANGE);
@ -179,7 +179,7 @@ SINGLE_BATTLE_TEST("Defiant doesn't activate after Sticky Web lowers Speed if Co
SINGLE_BATTLE_TEST("Defiant activates after Sticky Web lowers Speed if Court Changed (Gen9)")
{
GIVEN {
WITH_CONFIG(CONFIG_DEFIANT_STICKY_WEB, GEN_9);
WITH_CONFIG(B_DEFIANT_STICKY_WEB, GEN_9);
ASSUME(GetMoveEffect(MOVE_GROWL) == EFFECT_ATTACK_DOWN);
ASSUME(GetMoveEffect(MOVE_STICKY_WEB) == EFFECT_STICKY_WEB);
ASSUME(GetMoveEffect(MOVE_COURT_CHANGE) == EFFECT_COURT_CHANGE);

View File

@ -9,7 +9,7 @@ ASSUMPTIONS
SINGLE_BATTLE_TEST("Disguised Mimikyu doesn't lose 1/8 of its max HP upon changing to its busted form (Gen7)")
{
GIVEN {
WITH_CONFIG(CONFIG_DISGUISE_HP_LOSS, GEN_7);
WITH_CONFIG(B_DISGUISE_HP_LOSS, GEN_7);
PLAYER(SPECIES_MIMIKYU_DISGUISED) { Ability(ABILITY_DISGUISE); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
@ -29,7 +29,7 @@ SINGLE_BATTLE_TEST("Disguised Mimikyu will lose 1/8 of its max HP upon changing
s16 disguiseDamage;
GIVEN {
WITH_CONFIG(CONFIG_DISGUISE_HP_LOSS, GEN_8);
WITH_CONFIG(B_DISGUISE_HP_LOSS, GEN_8);
PLAYER(SPECIES_MIMIKYU_DISGUISED) { Ability(ABILITY_DISGUISE); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {

View File

@ -26,7 +26,7 @@ SINGLE_BATTLE_TEST("Drizzle summons rain", s16 damage)
SINGLE_BATTLE_TEST("Drizzle sets up rain for 5 turns (Gen6+)")
{
GIVEN {
WITH_CONFIG(CONFIG_ABILITY_WEATHER, GEN_6);
WITH_CONFIG(B_ABILITY_WEATHER, GEN_6);
PLAYER(SPECIES_POLITOED) { Moves(MOVE_CELEBRATE); Ability(ABILITY_DRIZZLE); }
OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_CELEBRATE); }
} WHEN {
@ -48,7 +48,7 @@ SINGLE_BATTLE_TEST("Drizzle sets up rain for 5 turns (Gen6+)")
SINGLE_BATTLE_TEST("Drizzle sets up rain for 8 turns with Damp Rock (Gen6+)")
{
GIVEN {
WITH_CONFIG(CONFIG_ABILITY_WEATHER, GEN_6);
WITH_CONFIG(B_ABILITY_WEATHER, GEN_6);
PLAYER(SPECIES_POLITOED) { Moves(MOVE_CELEBRATE); Ability(ABILITY_DRIZZLE); Item(ITEM_DAMP_ROCK); }
OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_CELEBRATE); }
} WHEN {
@ -76,7 +76,7 @@ SINGLE_BATTLE_TEST("Drizzle sets up rain for 8 turns with Damp Rock (Gen6+)")
SINGLE_BATTLE_TEST("Drizzle sets up permanent rain (Gen3-5)")
{
GIVEN {
WITH_CONFIG(CONFIG_ABILITY_WEATHER, GEN_3);
WITH_CONFIG(B_ABILITY_WEATHER, GEN_3);
PLAYER(SPECIES_POLITOED) { Moves(MOVE_CELEBRATE); Ability(ABILITY_DRIZZLE); }
OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_CELEBRATE); }
} WHEN {

View File

@ -4,7 +4,7 @@
SINGLE_BATTLE_TEST("Drought sets up sun for 5 turns (Gen6+)")
{
GIVEN {
WITH_CONFIG(CONFIG_ABILITY_WEATHER, GEN_6);
WITH_CONFIG(B_ABILITY_WEATHER, GEN_6);
PLAYER(SPECIES_NINETALES) { Moves(MOVE_CELEBRATE); Ability(ABILITY_DROUGHT); }
OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_CELEBRATE); }
} WHEN {
@ -26,7 +26,7 @@ SINGLE_BATTLE_TEST("Drought sets up sun for 5 turns (Gen6+)")
SINGLE_BATTLE_TEST("Drought sets up sun for 8 turns with Heat Rock (Gen6+)")
{
GIVEN {
WITH_CONFIG(CONFIG_ABILITY_WEATHER, GEN_6);
WITH_CONFIG(B_ABILITY_WEATHER, GEN_6);
PLAYER(SPECIES_NINETALES) { Moves(MOVE_CELEBRATE); Ability(ABILITY_DROUGHT); Item(ITEM_HEAT_ROCK); }
OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_CELEBRATE); }
} WHEN {
@ -54,7 +54,7 @@ SINGLE_BATTLE_TEST("Drought sets up sun for 8 turns with Heat Rock (Gen6+)")
SINGLE_BATTLE_TEST("Drought sets up permanent sun (Gen3-5)")
{
GIVEN {
WITH_CONFIG(CONFIG_ABILITY_WEATHER, GEN_3);
WITH_CONFIG(B_ABILITY_WEATHER, GEN_3);
PLAYER(SPECIES_NINETALES) { Moves(MOVE_CELEBRATE); Ability(ABILITY_DROUGHT); }
OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_CELEBRATE); }
} WHEN {

View File

@ -40,7 +40,7 @@ SINGLE_BATTLE_TEST("Effect Spore causes poison 3.3% (Gen3), 10% (Gen4) and 9% (G
PARAMETRIZE { config = GEN_5; passes = 9; trials = 100; } // 9%
PASSES_RANDOMLY(passes, trials, RNG_EFFECT_SPORE);
GIVEN {
WITH_CONFIG(CONFIG_ABILITY_TRIGGER_CHANCE, config);
WITH_CONFIG(B_ABILITY_TRIGGER_CHANCE, config);
ASSUME(MoveMakesContact(MOVE_SCRATCH));
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_BRELOOM) { Ability(ABILITY_EFFECT_SPORE); }
@ -63,7 +63,7 @@ SINGLE_BATTLE_TEST("Effect Spore causes paralysis 3.3% (Gen3) and 10% (Gen4+) of
PARAMETRIZE { config = GEN_5; passes = 1; trials = 10; } // 10%
PASSES_RANDOMLY(passes, trials, RNG_EFFECT_SPORE);
GIVEN {
WITH_CONFIG(CONFIG_ABILITY_TRIGGER_CHANCE, config);
WITH_CONFIG(B_ABILITY_TRIGGER_CHANCE, config);
ASSUME(MoveMakesContact(MOVE_SCRATCH));
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_BRELOOM) { Ability(ABILITY_EFFECT_SPORE); }
@ -86,7 +86,7 @@ SINGLE_BATTLE_TEST("Effect Spore causes sleep 3.3% (Gen3), 10% (Gen4) and 11% (G
PARAMETRIZE { config = GEN_5; passes = 11; trials = 100; } // 11%
PASSES_RANDOMLY(passes, trials, RNG_EFFECT_SPORE);
GIVEN {
WITH_CONFIG(CONFIG_ABILITY_TRIGGER_CHANCE, config);
WITH_CONFIG(B_ABILITY_TRIGGER_CHANCE, config);
ASSUME(MoveMakesContact(MOVE_SCRATCH));
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_BRELOOM) { Ability(ABILITY_EFFECT_SPORE); }
@ -109,7 +109,7 @@ SINGLE_BATTLE_TEST("Effect Spore will check if it can inflict status onto attack
PARAMETRIZE { config = GEN_5; passes = 11; trials = 100; } // 11%
PASSES_RANDOMLY(passes, trials, RNG_EFFECT_SPORE);
GIVEN {
WITH_CONFIG(CONFIG_ABILITY_TRIGGER_CHANCE, config);
WITH_CONFIG(B_ABILITY_TRIGGER_CHANCE, config);
ASSUME(MoveMakesContact(MOVE_SCRATCH));
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_BRELOOM) { Status1(STATUS1_BURN); Ability(ABILITY_EFFECT_SPORE); }

View File

@ -37,7 +37,7 @@ SINGLE_BATTLE_TEST("Flame Body triggers 1/3 times (Gen3) or 30% (Gen 4+) of the
PARAMETRIZE { config = GEN_4; passes = 3; trials = 10; } // 30%
PASSES_RANDOMLY(passes, trials, RNG_FLAME_BODY);
GIVEN {
WITH_CONFIG(CONFIG_ABILITY_TRIGGER_CHANCE, config);
WITH_CONFIG(B_ABILITY_TRIGGER_CHANCE, config);
ASSUME(MoveMakesContact(MOVE_SCRATCH));
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_MAGMAR) { Ability(ABILITY_FLAME_BODY); }

View File

@ -9,7 +9,7 @@ SINGLE_BATTLE_TEST("Gale Wings only grants priority at full HP (Gen 7+)")
PARAMETRIZE { hp = 100; config = GEN_6; }
PARAMETRIZE { hp = 99; config = GEN_6; }
GIVEN {
WITH_CONFIG(CONFIG_GALE_WINGS, config);
WITH_CONFIG(B_GALE_WINGS, config);
ASSUME(GetMoveType(MOVE_AERIAL_ACE) == TYPE_FLYING);
PLAYER(SPECIES_TALONFLAME) { Ability(ABILITY_GALE_WINGS); HP(hp); MaxHP(100); Speed(1); }
OPPONENT(SPECIES_WOBBUFFET) { Speed(100); }

View File

@ -52,7 +52,7 @@ SINGLE_BATTLE_TEST("Galvanize boosts power of affected moves by 20% (Gen7+) or 3
PARAMETRIZE { ability = ABILITY_GALVANIZE; genConfig = GEN_6; }
GIVEN {
WITH_CONFIG(CONFIG_ATE_MULTIPLIER, genConfig);
WITH_CONFIG(B_ATE_MULTIPLIER, genConfig);
PLAYER(SPECIES_GEODUDE_ALOLA) { Ability(ability); Moves(MOVE_TACKLE); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {

View File

@ -37,7 +37,7 @@ SINGLE_BATTLE_TEST("Heatproof halves the damage done by burn from 1/8th to 1/16t
PARAMETRIZE { config = GEN_6; burnRate = 16; }
GIVEN {
WITH_CONFIG(CONFIG_BURN_DAMAGE, config);
WITH_CONFIG(B_BURN_DAMAGE, config);
PLAYER (SPECIES_BRONZONG) { Ability(ABILITY_HEATPROOF); Status1(STATUS1_BURN); }
OPPONENT (SPECIES_WOBBUFFET);
}
@ -49,4 +49,3 @@ SINGLE_BATTLE_TEST("Heatproof halves the damage done by burn from 1/8th to 1/16t
HP_BAR(player, damage: maxHP / burnRate);
}
}

View File

@ -117,7 +117,7 @@ SINGLE_BATTLE_TEST("Illusion breaks if user loses Illusion due to Worry Seed")
SINGLE_BATTLE_TEST("Illusion breaks when attacked behind a substitute")
{
GIVEN {
WITH_CONFIG(CONFIG_INFILTRATOR_SUBSTITUTE, GEN_6);
WITH_CONFIG(B_INFILTRATOR_SUBSTITUTE, GEN_6);
PLAYER(SPECIES_DRAGAPULT) { Ability(ABILITY_INFILTRATOR); Speed(1); }
OPPONENT(SPECIES_WOBBUFFET) { Speed(2); }
OPPONENT(SPECIES_ZOROARK) { Speed(2); }

View File

@ -167,7 +167,7 @@ SINGLE_BATTLE_TEST("Infiltrator bypasses the opponent's Substitute (Gen 6+)")
PARAMETRIZE { ability = ABILITY_INFILTRATOR; config = GEN_6; }
GIVEN {
WITH_CONFIG(CONFIG_INFILTRATOR_SUBSTITUTE, config);
WITH_CONFIG(B_INFILTRATOR_SUBSTITUTE, config);
ASSUME(GetMoveEffect(MOVE_SUBSTITUTE) == EFFECT_SUBSTITUTE);
ASSUME(!MoveIgnoresSubstitute(MOVE_SCRATCH));
PLAYER(SPECIES_DRAGAPULT) { Ability(ability); }
@ -194,7 +194,7 @@ DOUBLE_BATTLE_TEST("Infiltrator bypasses an ally's Substitute (Gen 6+)")
PARAMETRIZE { ability = ABILITY_INFILTRATOR; config = GEN_6; }
GIVEN {
WITH_CONFIG(CONFIG_INFILTRATOR_SUBSTITUTE, config);
WITH_CONFIG(B_INFILTRATOR_SUBSTITUTE, config);
ASSUME(GetMoveEffect(MOVE_SUBSTITUTE) == EFFECT_SUBSTITUTE);
ASSUME(!MoveIgnoresSubstitute(MOVE_SCRATCH));
PLAYER(SPECIES_DRAGAPULT) { Ability(ability); }
@ -223,7 +223,7 @@ SINGLE_BATTLE_TEST("Infiltrator doesn't ignore a battler's Substitute when using
PARAMETRIZE { ability = ABILITY_INFILTRATOR; move = MOVE_SKY_DROP; }
GIVEN {
WITH_CONFIG(CONFIG_INFILTRATOR_SUBSTITUTE, GEN_6);
WITH_CONFIG(B_INFILTRATOR_SUBSTITUTE, GEN_6);
ASSUME(GetMoveEffect(MOVE_SUBSTITUTE) == EFFECT_SUBSTITUTE);
ASSUME(GetMoveEffect(MOVE_TRANSFORM) == EFFECT_TRANSFORM);
ASSUME(GetMoveEffect(MOVE_SKY_DROP) == EFFECT_SKY_DROP);

View File

@ -7,7 +7,7 @@ SINGLE_BATTLE_TEST("Inner Focus doesn't prevent intimidate (Gen3-7)")
s16 turnTwoHit;
GIVEN {
WITH_CONFIG(CONFIG_UPDATED_INTIMIDATE, GEN_7);
WITH_CONFIG(B_UPDATED_INTIMIDATE, GEN_7);
PLAYER(SPECIES_EKANS) { Ability(ABILITY_SHED_SKIN); }
PLAYER(SPECIES_EKANS) { Ability(ABILITY_INTIMIDATE); }
OPPONENT(SPECIES_ZUBAT) { Ability(ABILITY_INNER_FOCUS); }
@ -34,7 +34,7 @@ SINGLE_BATTLE_TEST("Inner Focus prevents intimidate (Gen8+)")
s16 turnTwoHit;
GIVEN {
WITH_CONFIG(CONFIG_UPDATED_INTIMIDATE, GEN_8);
WITH_CONFIG(B_UPDATED_INTIMIDATE, GEN_8);
PLAYER(SPECIES_EKANS) { Ability(ABILITY_SHED_SKIN); }
PLAYER(SPECIES_EKANS) { Ability(ABILITY_INTIMIDATE); }
OPPONENT(SPECIES_ZUBAT) { Ability(ABILITY_INNER_FOCUS); }

View File

@ -20,7 +20,7 @@ SINGLE_BATTLE_TEST("Intrepid Sword raises Attack by one stage")
SINGLE_BATTLE_TEST("Intrepid Sword raises Attack by one stage every time it switches in (Gen8)")
{
GIVEN {
WITH_CONFIG(CONFIG_INTREPID_SWORD, GEN_8);
WITH_CONFIG(B_INTREPID_SWORD, GEN_8);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_ZACIAN) { Ability(ABILITY_INTREPID_SWORD); }
OPPONENT(SPECIES_WYNAUT);
@ -42,7 +42,7 @@ SINGLE_BATTLE_TEST("Intrepid Sword raises Attack by one stage every time it swit
SINGLE_BATTLE_TEST("Intrepid Sword raises Attack by one stage only once per battle (Gen9+)")
{
GIVEN {
WITH_CONFIG(CONFIG_INTREPID_SWORD, GEN_9);
WITH_CONFIG(B_INTREPID_SWORD, GEN_9);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_ZACIAN) { Ability(ABILITY_INTREPID_SWORD); }
OPPONENT(SPECIES_WYNAUT);

View File

@ -18,7 +18,7 @@ SINGLE_BATTLE_TEST("Keen Eye, Gen9+ Illuminate & Minds Eye prevent accuracy stag
PASSES_RANDOMLY(100, 100, RNG_ACCURACY);
GIVEN {
WITH_CONFIG(CONFIG_ILLUMINATE_EFFECT, GEN_9);
WITH_CONFIG(B_ILLUMINATE_EFFECT, GEN_9);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(species) { Ability(ability); }
} WHEN {
@ -47,7 +47,7 @@ SINGLE_BATTLE_TEST("Keen Eye, Gen9+ Illuminate & Minds Eye ignore target's evasi
PASSES_RANDOMLY(100, 100, RNG_ACCURACY);
GIVEN {
WITH_CONFIG(CONFIG_ILLUMINATE_EFFECT, GEN_9);
WITH_CONFIG(B_ILLUMINATE_EFFECT, GEN_9);
ASSUME(GetMoveEffect(MOVE_DOUBLE_TEAM) == EFFECT_EVASION_UP);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(species) { Ability(ability); }
@ -81,7 +81,7 @@ SINGLE_BATTLE_TEST("Keen Eye, Gen9+ Illuminate & Minds Eye are ignored by Mold B
PASSES_RANDOMLY(GetMoveAccuracy(MOVE_SCRATCH) * 3 / 4, 100, RNG_ACCURACY);
GIVEN {
WITH_CONFIG(CONFIG_ILLUMINATE_EFFECT, GEN_9);
WITH_CONFIG(B_ILLUMINATE_EFFECT, GEN_9);
PLAYER(speciesPlayer) { Ability(abilityPlayer); }
OPPONENT(speciesOpponent) { Ability(abilityOpponent); }
} WHEN {
@ -104,7 +104,7 @@ SINGLE_BATTLE_TEST("Keen Eye, Gen9+ Illuminate & Minds Eye don't prevent Topsy-T
PARAMETRIZE { species = SPECIES_URSALUNA_BLOODMOON; ability = ABILITY_MINDS_EYE; }
GIVEN {
WITH_CONFIG(CONFIG_ILLUMINATE_EFFECT, GEN_9);
WITH_CONFIG(B_ILLUMINATE_EFFECT, GEN_9);
ASSUME(GetMoveEffect(MOVE_HONE_CLAWS) == EFFECT_ATTACK_ACCURACY_UP);
ASSUME(GetMoveEffect(MOVE_TOPSY_TURVY) == EFFECT_TOPSY_TURVY);
PLAYER(SPECIES_WOBBUFFET);
@ -144,7 +144,7 @@ SINGLE_BATTLE_TEST("Keen Eye, Gen9+ Illuminate & Minds Eye don't prevent receivi
PARAMETRIZE { species = SPECIES_URSALUNA_BLOODMOON; ability = ABILITY_MINDS_EYE; }
GIVEN {
WITH_CONFIG(CONFIG_ILLUMINATE_EFFECT, GEN_9);
WITH_CONFIG(B_ILLUMINATE_EFFECT, GEN_9);
ASSUME(GetMoveEffect(MOVE_BATON_PASS) == EFFECT_BATON_PASS);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);
@ -177,7 +177,7 @@ SINGLE_BATTLE_TEST("Keen Eye & Gen9+ Illuminate don't prevent Spectral Thief fro
PARAMETRIZE { species = SPECIES_STARYU; ability = ABILITY_ILLUMINATE; }
GIVEN {
WITH_CONFIG(CONFIG_ILLUMINATE_EFFECT, GEN_9);
WITH_CONFIG(B_ILLUMINATE_EFFECT, GEN_9);
ASSUME(GetMoveEffect(MOVE_HONE_CLAWS) == EFFECT_ATTACK_ACCURACY_UP);
ASSUME(GetMoveEffect(MOVE_SPECTRAL_THIEF) == EFFECT_SPECTRAL_THIEF);
PLAYER(SPECIES_WOBBUFFET);

View File

@ -121,7 +121,7 @@ SINGLE_BATTLE_TEST("Leaf Guard prevents Rest during sun (Gen 5+)")
PARAMETRIZE { gen = GEN_4; }
PARAMETRIZE { gen = GEN_5; }
GIVEN {
WITH_CONFIG(CONFIG_LEAF_GUARD_PREVENTS_REST, gen);
WITH_CONFIG(B_LEAF_GUARD_PREVENTS_REST, gen);
ASSUME(GetMoveEffect(MOVE_REST) == EFFECT_REST);
PLAYER(SPECIES_LEAFEON) { Ability(ABILITY_LEAF_GUARD); HP(100); MaxHP(200); }
OPPONENT(SPECIES_WOBBUFFET);
@ -151,7 +151,7 @@ SINGLE_BATTLE_TEST("Leaf Guard doesn't prevent Rest if Cloud Nine/Air Lock is on
PARAMETRIZE { species = SPECIES_RAYQUAZA; ability = ABILITY_AIR_LOCK; }
PARAMETRIZE { species = SPECIES_RAYQUAZA; ability = ABILITY_AIR_LOCK; }
GIVEN {
WITH_CONFIG(CONFIG_LEAF_GUARD_PREVENTS_REST, GEN_5);
WITH_CONFIG(B_LEAF_GUARD_PREVENTS_REST, GEN_5);
ASSUME(GetMoveEffect(MOVE_REST) == EFFECT_REST);
PLAYER(SPECIES_LEAFEON) { Ability(ABILITY_LEAF_GUARD); HP(100); MaxHP(200); }
OPPONENT(species) { Ability(ability); }

View File

@ -7,7 +7,7 @@ SINGLE_BATTLE_TEST("Lightning Rod absorbs Electric-type moves and increases the
PARAMETRIZE { config = GEN_4; }
PARAMETRIZE { config = GEN_5; }
GIVEN {
WITH_CONFIG(CONFIG_REDIRECT_ABILITY_IMMUNITY, config);
WITH_CONFIG(B_REDIRECT_ABILITY_IMMUNITY, config);
ASSUME(GetMoveType(MOVE_THUNDERBOLT) == TYPE_ELECTRIC);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_RAICHU) { Ability(ABILITY_LIGHTNING_ROD); }
@ -47,7 +47,7 @@ DOUBLE_BATTLE_TEST("Lightning Rod forces single-target Electric-type moves to ta
PARAMETRIZE { config = GEN_4; }
PARAMETRIZE { config = GEN_5; }
GIVEN {
WITH_CONFIG(CONFIG_REDIRECT_ABILITY_IMMUNITY, config);
WITH_CONFIG(B_REDIRECT_ABILITY_IMMUNITY, config);
ASSUME(GetMoveType(MOVE_THUNDERBOLT) == TYPE_ELECTRIC);
PLAYER(SPECIES_WOBBUFFET);
PLAYER(SPECIES_WOBBUFFET);
@ -115,7 +115,7 @@ DOUBLE_BATTLE_TEST("Lightning Rod redirects an ally's attack")
DOUBLE_BATTLE_TEST("Lightning Rod absorbs moves that targets all battlers but does not redirect (Gen6+)")
{
GIVEN {
WITH_CONFIG(CONFIG_REDIRECT_ABILITY_IMMUNITY, GEN_5);
WITH_CONFIG(B_REDIRECT_ABILITY_IMMUNITY, GEN_5);
ASSUME(GetMoveType(MOVE_DISCHARGE) == TYPE_ELECTRIC);
PLAYER(SPECIES_WOBBUFFET);
PLAYER(SPECIES_WOBBUFFET);

View File

@ -142,7 +142,7 @@ SINGLE_BATTLE_TEST("Liquid Ooze causes Dream Eater users to lose HP instead of h
{
s16 damage;
GIVEN {
WITH_CONFIG(CONFIG_DREAM_EATER_LIQUID_OOZE, GEN_5);
WITH_CONFIG(B_DREAM_EATER_LIQUID_OOZE, GEN_5);
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
ASSUME(GetMoveEffect(MOVE_DREAM_EATER) == EFFECT_DREAM_EATER);
@ -167,7 +167,7 @@ SINGLE_BATTLE_TEST("Liquid Ooze does not cause Dream Eater users to lose HP inst
{
s16 damage;
GIVEN {
WITH_CONFIG(CONFIG_DREAM_EATER_LIQUID_OOZE, GEN_3);
WITH_CONFIG(B_DREAM_EATER_LIQUID_OOZE, GEN_3);
ASSUME(GetMoveEffect(MOVE_SPORE) == EFFECT_NON_VOLATILE_STATUS);
ASSUME(GetMoveNonVolatileStatus(MOVE_SPORE) == MOVE_EFFECT_SLEEP);
ASSUME(GetMoveEffect(MOVE_DREAM_EATER) == EFFECT_DREAM_EATER);

View File

@ -42,7 +42,7 @@ SINGLE_BATTLE_TEST("Magic Bounce bounces back powder moves")
SINGLE_BATTLE_TEST("Magic Bounce cannot bounce back powder moves against Grass Types")
{
GIVEN {
WITH_CONFIG(CONFIG_POWDER_GRASS, GEN_6);
WITH_CONFIG(B_POWDER_GRASS, GEN_6);
ASSUME(IsPowderMove(MOVE_STUN_SPORE));
ASSUME(GetSpeciesType(SPECIES_ODDISH, 0) == TYPE_GRASS);
PLAYER(SPECIES_ODDISH);

View File

@ -11,7 +11,7 @@ SINGLE_BATTLE_TEST("Moody randomly raises the user's Attack, Defense, Sp. Atk, S
// HP is not included
PASSES_RANDOMLY(1, statsNum - 1, RNG_MOODY_INCREASE);
GIVEN {
WITH_CONFIG(CONFIG_MOODY_ACC_EVASION, config);
WITH_CONFIG(B_MOODY_ACC_EVASION, config);
PLAYER(SPECIES_OCTILLERY) { Ability(ABILITY_MOODY); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
@ -36,7 +36,7 @@ SINGLE_BATTLE_TEST("Moody randomly lowers the user's Attack, Defense, Sp. Atk, S
// One stat becomes unavailable due to it already increasing
PASSES_RANDOMLY(1, statsNum - 2, RNG_MOODY_DECREASE);
GIVEN {
WITH_CONFIG(CONFIG_MOODY_ACC_EVASION, config);
WITH_CONFIG(B_MOODY_ACC_EVASION, config);
PLAYER(SPECIES_OCTILLERY) { Ability(ABILITY_MOODY); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
@ -60,7 +60,7 @@ SINGLE_BATTLE_TEST("Moody randomly raises the holder's Attack, Defense, Sp. Atk,
PASSES_RANDOMLY(statsNum - 1, statsNum - 1, RNG_MOODY_DECREASE);
GIVEN {
WITH_CONFIG(CONFIG_MOODY_ACC_EVASION, config);
WITH_CONFIG(B_MOODY_ACC_EVASION, config);
PLAYER(SPECIES_OCTILLERY) { Ability(ABILITY_MOODY); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {

View File

@ -87,7 +87,7 @@ SINGLE_BATTLE_TEST("Normalize doesn't boost power of unaffected moves by 20% (<
PARAMETRIZE { ability = ABILITY_NORMALIZE; }
GIVEN {
WITH_CONFIG(CONFIG_ATE_MULTIPLIER, GEN_6);
WITH_CONFIG(B_ATE_MULTIPLIER, GEN_6);
PLAYER(SPECIES_DELCATTY) { Ability(ability); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
@ -106,7 +106,7 @@ SINGLE_BATTLE_TEST("Normalize boosts power of unaffected moves by 20% (Gen7+)",
PARAMETRIZE { ability = ABILITY_NORMALIZE; }
GIVEN {
WITH_CONFIG(CONFIG_ATE_MULTIPLIER, GEN_7);
WITH_CONFIG(B_ATE_MULTIPLIER, GEN_7);
PLAYER(SPECIES_DELCATTY) { Ability(ability); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
@ -125,7 +125,7 @@ SINGLE_BATTLE_TEST("Normalize doesn't boost power of affected moves by 20% (< Ge
PARAMETRIZE { ability = ABILITY_NORMALIZE; }
GIVEN {
WITH_CONFIG(CONFIG_ATE_MULTIPLIER, GEN_6);
WITH_CONFIG(B_ATE_MULTIPLIER, GEN_6);
PLAYER(SPECIES_SKITTY) { Ability(ability); Moves(MOVE_WATER_GUN); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
@ -144,7 +144,7 @@ SINGLE_BATTLE_TEST("Normalize boosts power of affected moves by 20% (Gen7+)", s1
PARAMETRIZE { ability = ABILITY_NORMALIZE; }
GIVEN {
WITH_CONFIG(CONFIG_ATE_MULTIPLIER, GEN_7);
WITH_CONFIG(B_ATE_MULTIPLIER, GEN_7);
PLAYER(SPECIES_SKITTY) { Ability(ability); Moves(MOVE_WATER_GUN); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {

View File

@ -37,7 +37,7 @@ SINGLE_BATTLE_TEST("Oblivious prevents Taunt (Gen6+)")
PARAMETRIZE { gen = GEN_5; }
PARAMETRIZE { gen = GEN_6; }
GIVEN {
WITH_CONFIG(CONFIG_OBLIVIOUS_TAUNT, gen);
WITH_CONFIG(B_OBLIVIOUS_TAUNT, gen);
ASSUME(GetMoveEffect(MOVE_TAUNT) == EFFECT_TAUNT);
PLAYER(SPECIES_SLOWPOKE) { Ability(ABILITY_OBLIVIOUS); }
OPPONENT(SPECIES_WOBBUFFET);
@ -66,7 +66,7 @@ SINGLE_BATTLE_TEST("Oblivious prevents Taunt (Gen6+)")
SINGLE_BATTLE_TEST("Oblivious doesn't prevent Intimidate (Gen3-7)")
{
GIVEN {
WITH_CONFIG(CONFIG_UPDATED_INTIMIDATE, GEN_7);
WITH_CONFIG(B_UPDATED_INTIMIDATE, GEN_7);
PLAYER(SPECIES_SLOWPOKE) { Ability(ABILITY_OBLIVIOUS); }
OPPONENT(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_EKANS) { Ability(ABILITY_INTIMIDATE); }
@ -86,7 +86,7 @@ SINGLE_BATTLE_TEST("Oblivious doesn't prevent Intimidate (Gen3-7)")
SINGLE_BATTLE_TEST("Oblivious prevents Intimidate (Gen8+)")
{
GIVEN {
WITH_CONFIG(CONFIG_UPDATED_INTIMIDATE, GEN_8);
WITH_CONFIG(B_UPDATED_INTIMIDATE, GEN_8);
PLAYER(SPECIES_SLOWPOKE) { Ability(ABILITY_OBLIVIOUS); }
OPPONENT(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_EKANS) { Ability(ABILITY_INTIMIDATE); }

View File

@ -7,7 +7,7 @@ SINGLE_BATTLE_TEST("Overcoat blocks powder and spore moves (Gen6+)")
PARAMETRIZE { gen = GEN_5; }
PARAMETRIZE { gen = GEN_6; }
GIVEN {
WITH_CONFIG(CONFIG_POWDER_OVERCOAT, gen);
WITH_CONFIG(B_POWDER_OVERCOAT, gen);
ASSUME(IsPowderMove(MOVE_STUN_SPORE));
PLAYER(SPECIES_WYNAUT);
OPPONENT(SPECIES_PINECO) { Ability(ABILITY_OVERCOAT); }
@ -77,7 +77,7 @@ SINGLE_BATTLE_TEST("Overcoat blocks Effect Spore's effect (Gen6+)")
PARAMETRIZE { config = GEN_5; }
PARAMETRIZE { config = GEN_6; }
GIVEN {
WITH_CONFIG(CONFIG_POWDER_OVERCOAT, config);
WITH_CONFIG(B_POWDER_OVERCOAT, config);
PLAYER(SPECIES_PINECO) { Ability(ABILITY_OVERCOAT); }
OPPONENT(SPECIES_SHROOMISH) { Ability(ABILITY_EFFECT_SPORE); }
} WHEN {

View File

@ -4,7 +4,7 @@
SINGLE_BATTLE_TEST("Own Tempo doesn't prevent Intimidate (Gen3-7)")
{
GIVEN {
WITH_CONFIG(CONFIG_UPDATED_INTIMIDATE, GEN_7);
WITH_CONFIG(B_UPDATED_INTIMIDATE, GEN_7);
ASSUME(GetMoveEffect(MOVE_CONFUSE_RAY) == EFFECT_CONFUSE);
PLAYER(SPECIES_EKANS) { Ability(ABILITY_INTIMIDATE); }
OPPONENT(SPECIES_SLOWPOKE) { Ability(ABILITY_OWN_TEMPO); }
@ -22,7 +22,7 @@ SINGLE_BATTLE_TEST("Own Tempo doesn't prevent Intimidate (Gen3-7)")
SINGLE_BATTLE_TEST("Own Tempo prevents Intimidate but no other stat down changes (Gen8+)")
{
GIVEN {
WITH_CONFIG(CONFIG_UPDATED_INTIMIDATE, GEN_8);
WITH_CONFIG(B_UPDATED_INTIMIDATE, GEN_8);
ASSUME(GetMoveEffect(MOVE_CONFUSE_RAY) == EFFECT_CONFUSE);
PLAYER(SPECIES_EKANS) { Ability(ABILITY_INTIMIDATE); }
OPPONENT(SPECIES_SLOWPOKE) { Ability(ABILITY_OWN_TEMPO); }

View File

@ -111,7 +111,7 @@ SINGLE_BATTLE_TEST("Parental Bond-converted moves only hit once on Lightning Rod
PARAMETRIZE { move = MOVE_THUNDERBOLT; ability = ABILITY_LIGHTNING_ROD; species = SPECIES_RAICHU; type = TYPE_ELECTRIC; }
PARAMETRIZE { move = MOVE_SURF; ability = ABILITY_STORM_DRAIN; species = SPECIES_LILEEP; type = TYPE_WATER; }
GIVEN {
WITH_CONFIG(CONFIG_REDIRECT_ABILITY_IMMUNITY, GEN_5);
WITH_CONFIG(B_REDIRECT_ABILITY_IMMUNITY, GEN_5);
ASSUME(GetMoveStrikeCount(move) < 2);
ASSUME(GetMoveType(move) == type);
PLAYER(SPECIES_KANGASKHAN) { Item(ITEM_KANGASKHANITE); }
@ -142,7 +142,7 @@ SINGLE_BATTLE_TEST("Parental Bond has no affect on multi hit moves and they stil
PASSES_RANDOMLY(passes, trials, RNG_HITS);
GIVEN {
WITH_CONFIG(CONFIG_MULTI_HIT_CHANCE, genConfig);
WITH_CONFIG(B_MULTI_HIT_CHANCE, genConfig);
ASSUME(GetMoveCategory(MOVE_COMET_PUNCH) != DAMAGE_CATEGORY_STATUS);
ASSUME(GetMoveEffect(MOVE_COMET_PUNCH) == EFFECT_MULTI_HIT);
PLAYER(SPECIES_KANGASKHAN) { Item(ITEM_KANGASKHANITE); }
@ -171,7 +171,7 @@ SINGLE_BATTLE_TEST("Parental Bond has no affect on multi hit moves and they stil
PASSES_RANDOMLY(passes, trials, RNG_HITS);
GIVEN {
WITH_CONFIG(CONFIG_MULTI_HIT_CHANCE, genConfig);
WITH_CONFIG(B_MULTI_HIT_CHANCE, genConfig);
ASSUME(GetMoveCategory(MOVE_COMET_PUNCH) != DAMAGE_CATEGORY_STATUS);
ASSUME(GetMoveEffect(MOVE_COMET_PUNCH) == EFFECT_MULTI_HIT);
PLAYER(SPECIES_KANGASKHAN) { Item(ITEM_KANGASKHANITE); }
@ -201,7 +201,7 @@ SINGLE_BATTLE_TEST("Parental Bond has no affect on multi hit moves and they stil
PASSES_RANDOMLY(passes, trials, RNG_HITS);
GIVEN {
WITH_CONFIG(CONFIG_MULTI_HIT_CHANCE, genConfig);
WITH_CONFIG(B_MULTI_HIT_CHANCE, genConfig);
ASSUME(GetMoveCategory(MOVE_COMET_PUNCH) != DAMAGE_CATEGORY_STATUS);
ASSUME(GetMoveEffect(MOVE_COMET_PUNCH) == EFFECT_MULTI_HIT);
PLAYER(SPECIES_KANGASKHAN) { Item(ITEM_KANGASKHANITE); }
@ -232,7 +232,7 @@ SINGLE_BATTLE_TEST("Parental Bond has no affect on multi hit moves and they stil
PASSES_RANDOMLY(passes, trials, RNG_HITS);
GIVEN {
WITH_CONFIG(CONFIG_MULTI_HIT_CHANCE, genConfig);
WITH_CONFIG(B_MULTI_HIT_CHANCE, genConfig);
ASSUME(GetMoveCategory(MOVE_COMET_PUNCH) != DAMAGE_CATEGORY_STATUS);
ASSUME(GetMoveEffect(MOVE_COMET_PUNCH) == EFFECT_MULTI_HIT);
PLAYER(SPECIES_KANGASKHAN) { Item(ITEM_KANGASKHANITE); }

View File

@ -26,7 +26,7 @@ SINGLE_BATTLE_TEST("Pickup grants an item used by another Pokémon")
WILD_BATTLE_TEST("Pickup grants an item used by itself in wild battles (Gen9+)")
{
GIVEN {
WITH_CONFIG(CONFIG_PICKUP_WILD, GEN_9);
WITH_CONFIG(B_PICKUP_WILD, GEN_9);
PLAYER(SPECIES_ZIGZAGOON) { Ability(ABILITY_PICKUP); MaxHP(100); HP(51); Item(ITEM_SITRUS_BERRY); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {

View File

@ -31,7 +31,7 @@ SINGLE_BATTLE_TEST("Pixilate boosts power of affected moves by 20% (Gen7+) or 30
PARAMETRIZE { ability = ABILITY_PIXILATE; genConfig = GEN_6; }
GIVEN {
WITH_CONFIG(CONFIG_ATE_MULTIPLIER, genConfig);
WITH_CONFIG(B_ATE_MULTIPLIER, genConfig);
PLAYER(SPECIES_SYLVEON) { Ability(ability); Moves(MOVE_TACKLE); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {

View File

@ -38,7 +38,7 @@ SINGLE_BATTLE_TEST("Poison Point triggers 1/3 times (Gen3) or 30% (Gen 4+) of th
PARAMETRIZE { config = GEN_4; passes = 3; trials = 10; } // 30%
PASSES_RANDOMLY(passes, trials, RNG_POISON_POINT);
GIVEN {
WITH_CONFIG(CONFIG_ABILITY_TRIGGER_CHANCE, config);
WITH_CONFIG(B_ABILITY_TRIGGER_CHANCE, config);
ASSUME(MoveMakesContact(MOVE_SCRATCH));
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_NIDORAN_M) { Ability(ABILITY_POISON_POINT); }

View File

@ -13,7 +13,7 @@ SINGLE_BATTLE_TEST("Prankster-affected moves don't affect Dark-type Pokémon (Ge
PARAMETRIZE { gen = GEN_6; }
PARAMETRIZE { gen = GEN_7; }
GIVEN {
WITH_CONFIG(CONFIG_PRANKSTER_DARK_TYPES, gen);
WITH_CONFIG(B_PRANKSTER_DARK_TYPES, gen);
PLAYER(SPECIES_UMBREON);
OPPONENT(SPECIES_VOLBEAT) { Ability(ABILITY_PRANKSTER); }
} WHEN {
@ -31,7 +31,7 @@ SINGLE_BATTLE_TEST("Prankster-affected moves don't affect Dark-type Pokémon (Ge
SINGLE_BATTLE_TEST("Prankster-affected moves don't affect Dark-type Pokémon after they switch-in")
{
GIVEN {
WITH_CONFIG(CONFIG_PRANKSTER_DARK_TYPES, GEN_7);
WITH_CONFIG(B_PRANKSTER_DARK_TYPES, GEN_7);
PLAYER(SPECIES_WOBBUFFET);
PLAYER(SPECIES_UMBREON);
OPPONENT(SPECIES_VOLBEAT) { Ability(ABILITY_PRANKSTER); }
@ -64,7 +64,7 @@ SINGLE_BATTLE_TEST("Prankster-affected moves called via Assist don't affect Dark
PARAMETRIZE { gen = GEN_6; }
PARAMETRIZE { gen = GEN_7; }
GIVEN {
WITH_CONFIG(CONFIG_PRANKSTER_DARK_TYPES, gen);
WITH_CONFIG(B_PRANKSTER_DARK_TYPES, gen);
PLAYER(SPECIES_UMBREON);
OPPONENT(SPECIES_VOLBEAT) { Ability(ABILITY_PRANKSTER); }
OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_CONFUSE_RAY); }
@ -87,7 +87,7 @@ DOUBLE_BATTLE_TEST("Prankster-affected moves called via Instruct do not affect D
PARAMETRIZE { gen = GEN_6; }
PARAMETRIZE { gen = GEN_7; }
GIVEN {
WITH_CONFIG(CONFIG_PRANKSTER_DARK_TYPES, gen);
WITH_CONFIG(B_PRANKSTER_DARK_TYPES, gen);
PLAYER(SPECIES_VOLBEAT) { Speed(20); Ability(ABILITY_PRANKSTER); }
PLAYER(SPECIES_WOBBUFFET) { Speed(10); }
OPPONENT(SPECIES_UMBREON) { Speed(15); }
@ -203,7 +203,7 @@ SINGLE_BATTLE_TEST("Prankster-affected moves which are reflected by Magic Coat c
PARAMETRIZE { sableyeAbility = ABILITY_KEEN_EYE; }
GIVEN {
WITH_CONFIG(CONFIG_PRANKSTER_DARK_TYPES, GEN_7);
WITH_CONFIG(B_PRANKSTER_DARK_TYPES, GEN_7);
PLAYER(SPECIES_SABLEYE) { Ability(sableyeAbility); }
OPPONENT(SPECIES_MURKROW) { Ability(ABILITY_PRANKSTER); }
} WHEN {

View File

@ -7,7 +7,7 @@ SINGLE_BATTLE_TEST("Protean/Libero changes the type of the user to the move used
PARAMETRIZE { ability = ABILITY_PROTEAN; species = SPECIES_KECLEON; }
PARAMETRIZE { ability = ABILITY_LIBERO; species = SPECIES_RABOOT; }
GIVEN {
WITH_CONFIG(CONFIG_PROTEAN_LIBERO, GEN_6);
WITH_CONFIG(B_PROTEAN_LIBERO, GEN_6);
PLAYER(SPECIES_REGIROCK);
OPPONENT(species) { Ability(ability); }
OPPONENT(SPECIES_WOBBUFFET);
@ -45,7 +45,7 @@ SINGLE_BATTLE_TEST("Protean/Libero changes the type of the user only once per sw
PARAMETRIZE { ability = ABILITY_PROTEAN; species = SPECIES_KECLEON; }
PARAMETRIZE { ability = ABILITY_LIBERO; species = SPECIES_RABOOT; }
GIVEN {
WITH_CONFIG(CONFIG_PROTEAN_LIBERO, GEN_9);
WITH_CONFIG(B_PROTEAN_LIBERO, GEN_9);
PLAYER(SPECIES_REGIROCK);
OPPONENT(species) { Ability(ability); }
OPPONENT(SPECIES_WOBBUFFET);

View File

@ -59,7 +59,7 @@ SINGLE_BATTLE_TEST("Protosynthesis ability pop up activates only once during the
u16 turns;
GIVEN {
WITH_CONFIG(CONFIG_ABILITY_WEATHER, GEN_6);
WITH_CONFIG(B_ABILITY_WEATHER, GEN_6);
PLAYER(SPECIES_WALKING_WAKE) { Ability(ABILITY_PROTOSYNTHESIS); }
OPPONENT(SPECIES_NINETALES) { Ability(ABILITY_DROUGHT); }
} WHEN {

View File

@ -55,7 +55,7 @@ SINGLE_BATTLE_TEST("Rattled boosts speed by 1 when hit by Bug, Dark or Ghost typ
SINGLE_BATTLE_TEST("Rattled does not boost speed by 1 when affected by Intimidate (Gen5-7)")
{
GIVEN {
WITH_CONFIG(CONFIG_UPDATED_INTIMIDATE, GEN_7);
WITH_CONFIG(B_UPDATED_INTIMIDATE, GEN_7);
PLAYER(SPECIES_GYARADOS) { Ability(ABILITY_INTIMIDATE); }
OPPONENT(SPECIES_SUDOWOODO) { Ability(ABILITY_RATTLED); }
} WHEN {
@ -75,7 +75,7 @@ SINGLE_BATTLE_TEST("Rattled does not boost speed by 1 when affected by Intimidat
SINGLE_BATTLE_TEST("Rattled boosts speed by 1 when affected by Intimidate (Gen8+)")
{
GIVEN {
WITH_CONFIG(CONFIG_UPDATED_INTIMIDATE, GEN_8);
WITH_CONFIG(B_UPDATED_INTIMIDATE, GEN_8);
PLAYER(SPECIES_GYARADOS) { Ability(ABILITY_INTIMIDATE); }
OPPONENT(SPECIES_SUDOWOODO) { Ability(ABILITY_RATTLED); }
} WHEN {

View File

@ -30,7 +30,7 @@ SINGLE_BATTLE_TEST("Refrigerate boosts power of affected moves by 20% (Gen7+) or
PARAMETRIZE { ability = ABILITY_REFRIGERATE; genConfig = GEN_6; }
GIVEN {
WITH_CONFIG(CONFIG_ATE_MULTIPLIER, genConfig);
WITH_CONFIG(B_ATE_MULTIPLIER, genConfig);
PLAYER(SPECIES_AMAURA) { Ability(ability); Moves(MOVE_TACKLE); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
@ -54,7 +54,7 @@ SINGLE_BATTLE_TEST("Refrigerate doesn't affect Weather Ball's type", s16 damage)
PARAMETRIZE { move = MOVE_CELEBRATE; ability = ABILITY_REFRIGERATE; }
PARAMETRIZE { move = MOVE_SUNNY_DAY; ability = ABILITY_REFRIGERATE; }
GIVEN {
WITH_CONFIG(CONFIG_SNOW_WARNING, GEN_9); //To prevent capturing hail damage
WITH_CONFIG(B_SNOW_WARNING, GEN_9); //To prevent capturing hail damage
ASSUME(GetMoveEffect(MOVE_WEATHER_BALL) == EFFECT_WEATHER_BALL);
ASSUME(GetSpeciesType(SPECIES_PINSIR, 0) == TYPE_BUG);
PLAYER(SPECIES_AMAURA) { Ability(ability); }

View File

@ -4,7 +4,7 @@
SINGLE_BATTLE_TEST("Sand Stream sets up sandstorm for 5 turns (Gen6+)")
{
GIVEN {
WITH_CONFIG(CONFIG_ABILITY_WEATHER, GEN_6);
WITH_CONFIG(B_ABILITY_WEATHER, GEN_6);
PLAYER(SPECIES_HIPPOWDON) { Moves(MOVE_CELEBRATE); Ability(ABILITY_SAND_STREAM); }
OPPONENT(SPECIES_SANDSLASH) { Moves(MOVE_CELEBRATE); }
} WHEN {
@ -26,7 +26,7 @@ SINGLE_BATTLE_TEST("Sand Stream sets up sandstorm for 5 turns (Gen6+)")
SINGLE_BATTLE_TEST("Sand Stream sets up sandstorm for 8 turns with Smooth Rock (Gen6+)")
{
GIVEN {
WITH_CONFIG(CONFIG_ABILITY_WEATHER, GEN_6);
WITH_CONFIG(B_ABILITY_WEATHER, GEN_6);
PLAYER(SPECIES_HIPPOWDON) { Moves(MOVE_CELEBRATE); Ability(ABILITY_SAND_STREAM); Item(ITEM_SMOOTH_ROCK); }
OPPONENT(SPECIES_SANDSLASH) { Moves(MOVE_CELEBRATE); }
} WHEN {
@ -54,7 +54,7 @@ SINGLE_BATTLE_TEST("Sand Stream sets up sandstorm for 8 turns with Smooth Rock (
SINGLE_BATTLE_TEST("Sand Stream sets up permanent sandstorm (Gen3-5)")
{
GIVEN {
WITH_CONFIG(CONFIG_ABILITY_WEATHER, GEN_3);
WITH_CONFIG(B_ABILITY_WEATHER, GEN_3);
PLAYER(SPECIES_HIPPOWDON) { Moves(MOVE_CELEBRATE); Ability(ABILITY_SAND_STREAM); }
OPPONENT(SPECIES_SANDSLASH) { Moves(MOVE_CELEBRATE); }
} WHEN {

View File

@ -7,7 +7,7 @@ SINGLE_BATTLE_TEST("Scrappy doesn't prevent Intimidate (Gen4-7)")
s16 turnTwoHit;
GIVEN {
WITH_CONFIG(CONFIG_UPDATED_INTIMIDATE, GEN_7);
WITH_CONFIG(B_UPDATED_INTIMIDATE, GEN_7);
PLAYER(SPECIES_EKANS) { Ability(ABILITY_SHED_SKIN); }
PLAYER(SPECIES_EKANS) { Ability(ABILITY_INTIMIDATE); }
OPPONENT(SPECIES_KANGASKHAN) { Ability(ABILITY_SCRAPPY); }
@ -35,7 +35,7 @@ SINGLE_BATTLE_TEST("Scrappy prevents Intimidate (Gen8+)")
s16 turnTwoHit;
GIVEN {
WITH_CONFIG(CONFIG_UPDATED_INTIMIDATE, GEN_8);
WITH_CONFIG(B_UPDATED_INTIMIDATE, GEN_8);
PLAYER(SPECIES_EKANS) { Ability(ABILITY_SHED_SKIN); }
PLAYER(SPECIES_EKANS) { Ability(ABILITY_INTIMIDATE); }
OPPONENT(SPECIES_KANGASKHAN) { Ability(ABILITY_SCRAPPY); }

View File

@ -10,7 +10,7 @@ SINGLE_BATTLE_TEST("Shed Skin triggers 33% (Gen3, Gen5+) or 30% (Gen 4) of the t
PASSES_RANDOMLY(passes, 100, RNG_SHED_SKIN);
GIVEN {
WITH_CONFIG(CONFIG_ABILITY_TRIGGER_CHANCE, config);
WITH_CONFIG(B_ABILITY_TRIGGER_CHANCE, config);
ASSUME(MoveMakesContact(MOVE_SCRATCH));
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_ARBOK) { Status1(STATUS1_POISON); Ability(ABILITY_SHED_SKIN); }

View File

@ -4,8 +4,8 @@
SINGLE_BATTLE_TEST("Snow Warning sets up hail for 5 turns (Gen6-8)")
{
GIVEN {
WITH_CONFIG(CONFIG_SNOW_WARNING, GEN_8);
WITH_CONFIG(CONFIG_ABILITY_WEATHER, GEN_6);
WITH_CONFIG(B_SNOW_WARNING, GEN_8);
WITH_CONFIG(B_ABILITY_WEATHER, GEN_6);
PLAYER(SPECIES_ABOMASNOW) { Moves(MOVE_CELEBRATE); Ability(ABILITY_SNOW_WARNING); }
OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_CELEBRATE); }
} WHEN {
@ -27,8 +27,8 @@ SINGLE_BATTLE_TEST("Snow Warning sets up hail for 5 turns (Gen6-8)")
SINGLE_BATTLE_TEST("Snow Warning sets up hail for 8 turns with Icy Rock (Gen6-8)")
{
GIVEN {
WITH_CONFIG(CONFIG_SNOW_WARNING, GEN_8);
WITH_CONFIG(CONFIG_ABILITY_WEATHER, GEN_6);
WITH_CONFIG(B_SNOW_WARNING, GEN_8);
WITH_CONFIG(B_ABILITY_WEATHER, GEN_6);
PLAYER(SPECIES_ABOMASNOW) { Moves(MOVE_CELEBRATE); Ability(ABILITY_SNOW_WARNING); Item(ITEM_ICY_ROCK); }
OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_CELEBRATE); }
} WHEN {
@ -56,8 +56,8 @@ SINGLE_BATTLE_TEST("Snow Warning sets up hail for 8 turns with Icy Rock (Gen6-8)
SINGLE_BATTLE_TEST("Snow Warning sets up permanent hail (Gen4-5)")
{
GIVEN {
WITH_CONFIG(CONFIG_SNOW_WARNING, GEN_8);
WITH_CONFIG(CONFIG_ABILITY_WEATHER, GEN_5);
WITH_CONFIG(B_SNOW_WARNING, GEN_8);
WITH_CONFIG(B_ABILITY_WEATHER, GEN_5);
PLAYER(SPECIES_ABOMASNOW) { Moves(MOVE_CELEBRATE); Ability(ABILITY_SNOW_WARNING); }
OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_CELEBRATE); }
} WHEN {
@ -88,8 +88,8 @@ SINGLE_BATTLE_TEST("Snow Warning sets up permanent hail (Gen4-5)")
SINGLE_BATTLE_TEST("Snow Warning sets up snow for 5 turns (Gen9+)")
{
GIVEN {
WITH_CONFIG(CONFIG_SNOW_WARNING, GEN_9);
WITH_CONFIG(CONFIG_ABILITY_WEATHER, GEN_9);
WITH_CONFIG(B_SNOW_WARNING, GEN_9);
WITH_CONFIG(B_ABILITY_WEATHER, GEN_9);
PLAYER(SPECIES_ABOMASNOW) { Moves(MOVE_CELEBRATE); Ability(ABILITY_SNOW_WARNING); }
OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_CELEBRATE); }
} WHEN {
@ -111,8 +111,8 @@ SINGLE_BATTLE_TEST("Snow Warning sets up snow for 5 turns (Gen9+)")
SINGLE_BATTLE_TEST("Snow Warning sets up snow for 8 turns with Icy Rock (Gen9+)")
{
GIVEN {
WITH_CONFIG(CONFIG_SNOW_WARNING, GEN_9);
WITH_CONFIG(CONFIG_ABILITY_WEATHER, GEN_9);
WITH_CONFIG(B_SNOW_WARNING, GEN_9);
WITH_CONFIG(B_ABILITY_WEATHER, GEN_9);
PLAYER(SPECIES_ABOMASNOW) { Moves(MOVE_CELEBRATE); Ability(ABILITY_SNOW_WARNING); Item(ITEM_ICY_ROCK); }
OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_CELEBRATE); }
} WHEN {

View File

@ -27,7 +27,7 @@ DOUBLE_BATTLE_TEST("Stalwart stops Lightning Rod and Storm Drain from redirectin
PARAMETRIZE { ability = ABILITY_LIGHTNING_ROD; species = SPECIES_RAICHU; config = GEN_4; }
PARAMETRIZE { ability = ABILITY_LIGHTNING_ROD; species = SPECIES_RAICHU; config = GEN_5; }
GIVEN {
WITH_CONFIG(CONFIG_REDIRECT_ABILITY_IMMUNITY, config);
WITH_CONFIG(B_REDIRECT_ABILITY_IMMUNITY, config);
ASSUME(GetMoveType(MOVE_SPARK) == TYPE_ELECTRIC);
ASSUME(GetMoveType(MOVE_WATER_GUN) == TYPE_WATER);
PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_STALWART); }

View File

@ -37,7 +37,7 @@ SINGLE_BATTLE_TEST("Static triggers 1/3 times (Gen3) or 30% (Gen4+) of the time"
PARAMETRIZE { config = GEN_4; passes = 3; trials = 10; } // 30%
PASSES_RANDOMLY(passes, trials, RNG_STATIC);
GIVEN {
WITH_CONFIG(CONFIG_ABILITY_TRIGGER_CHANCE, config);
WITH_CONFIG(B_ABILITY_TRIGGER_CHANCE, config);
ASSUME(MoveMakesContact(MOVE_SCRATCH));
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_PIKACHU) { Ability(ABILITY_STATIC); }

View File

@ -31,7 +31,7 @@ SINGLE_BATTLE_TEST("Sticky Hold prevents Incinerate from destroying berries")
SINGLE_BATTLE_TEST("Sticky Hold prevents Incinerate from destroying gems")
{
GIVEN {
WITH_CONFIG(CONFIG_INCINERATE_GEMS, GEN_6);
WITH_CONFIG(B_INCINERATE_GEMS, GEN_6);
PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_INCINERATE); }
OPPONENT(SPECIES_GASTRODON) { Ability(ABILITY_STICKY_HOLD); Item(ITEM_GHOST_GEM); }
} WHEN {

View File

@ -7,7 +7,7 @@ SINGLE_BATTLE_TEST("Storm Drain absorbs Water-type moves and increases the Sp. A
PARAMETRIZE { config = GEN_4; }
PARAMETRIZE { config = GEN_5; }
GIVEN {
WITH_CONFIG(CONFIG_REDIRECT_ABILITY_IMMUNITY, config);
WITH_CONFIG(B_REDIRECT_ABILITY_IMMUNITY, config);
ASSUME(GetMoveType(MOVE_WATER_GUN) == TYPE_WATER);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_GASTRODON_EAST) { Ability(ABILITY_STORM_DRAIN); }
@ -41,7 +41,7 @@ DOUBLE_BATTLE_TEST("Storm Drain forces single-target Water-type moves to target
PARAMETRIZE { config = GEN_4; }
PARAMETRIZE { config = GEN_5; }
GIVEN {
WITH_CONFIG(CONFIG_REDIRECT_ABILITY_IMMUNITY, config);
WITH_CONFIG(B_REDIRECT_ABILITY_IMMUNITY, config);
ASSUME(GetMoveType(MOVE_WATER_GUN) == TYPE_WATER);
PLAYER(SPECIES_WOBBUFFET);
PLAYER(SPECIES_WOBBUFFET);

View File

@ -24,7 +24,7 @@ SINGLE_BATTLE_TEST("Sturdy prevents OHKOs (Gen5+)")
PARAMETRIZE { config = GEN_4; }
PARAMETRIZE { config = GEN_5; }
GIVEN {
WITH_CONFIG(CONFIG_STURDY, config);
WITH_CONFIG(B_STURDY, config);
PLAYER(SPECIES_GEODUDE) { Ability(ABILITY_STURDY); MaxHP(100); HP(100); }
PLAYER(SPECIES_GEODUDE);
OPPONENT(SPECIES_WOBBUFFET);

View File

@ -11,7 +11,7 @@ SINGLE_BATTLE_TEST("Super Luck increases the critical hit ratio by 1 stage")
PASSES_RANDOMLY(passes, trials, RNG_CRITICAL_HIT);
GIVEN {
ASSUME(GetSpeciesBaseSpeed(SPECIES_TOGEPI) == 20);
WITH_CONFIG(CONFIG_CRIT_CHANCE, genConfig);
WITH_CONFIG(B_CRIT_CHANCE, genConfig);
PLAYER(SPECIES_TOGEPI) { Ability(ABILITY_SUPER_LUCK); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {

View File

@ -137,7 +137,7 @@ DOUBLE_BATTLE_TEST("Symbiosis transfers its item after Gem consumption and move
{
GIVEN {
ASSUME(GetItemHoldEffect(ITEM_NORMAL_GEM) == HOLD_EFFECT_GEMS);
WITH_CONFIG(CONFIG_SYMBIOSIS_GEMS, GEN_7);
WITH_CONFIG(B_SYMBIOSIS_GEMS, GEN_7);
PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_NORMAL_GEM); }
PLAYER(SPECIES_ORANGURU) { Ability(ABILITY_SYMBIOSIS); Item(ITEM_TOXIC_ORB); }
OPPONENT(SPECIES_WOBBUFFET);
@ -160,7 +160,7 @@ DOUBLE_BATTLE_TEST("Symbiosis transfers its item after Gem consumption, but befo
{
GIVEN {
ASSUME(GetItemHoldEffect(ITEM_NORMAL_GEM) == HOLD_EFFECT_GEMS);
WITH_CONFIG(CONFIG_SYMBIOSIS_GEMS, GEN_6);
WITH_CONFIG(B_SYMBIOSIS_GEMS, GEN_6);
PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_NORMAL_GEM); }
PLAYER(SPECIES_ORANGURU) { Ability(ABILITY_SYMBIOSIS); Item(ITEM_TOXIC_ORB); }
OPPONENT(SPECIES_WOBBUFFET);

View File

@ -9,7 +9,7 @@ SINGLE_BATTLE_TEST("Synchronize will mirror back non volatile status back at opp
GIVEN {
ASSUME(GetMoveEffect(MOVE_TOXIC) == EFFECT_NON_VOLATILE_STATUS);
ASSUME(GetMoveNonVolatileStatus(MOVE_TOXIC) == MOVE_EFFECT_TOXIC);
WITH_CONFIG(CONFIG_SYNCHRONIZE_TOXIC, config);
WITH_CONFIG(B_SYNCHRONIZE_TOXIC, config);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_ABRA) { Ability(ABILITY_SYNCHRONIZE); }
} WHEN {
@ -30,7 +30,7 @@ SINGLE_BATTLE_TEST("Synchronize will mirror back non volatile status back at opp
SINGLE_BATTLE_TEST("Synchronize will still show up the ability pop up even if it fails")
{
GIVEN {
WITH_CONFIG(CONFIG_PARALYZE_ELECTRIC, GEN_6);
WITH_CONFIG(B_PARALYZE_ELECTRIC, GEN_6);
ASSUME(MoveMakesContact(MOVE_TACKLE));
PLAYER(SPECIES_PIKACHU) { Ability(ABILITY_STATIC); }
OPPONENT(SPECIES_ABRA) { Ability(ABILITY_SYNCHRONIZE); }

View File

@ -18,7 +18,7 @@ SINGLE_BATTLE_TEST("Weak Armor lowers Defense by 1 and boosts Speed by 1 (Gen5-6
PARAMETRIZE { move = MOVE_GUST; gen = GEN_7; }
GIVEN {
WITH_CONFIG(CONFIG_WEAK_ARMOR_SPEED, gen);
WITH_CONFIG(B_WEAK_ARMOR_SPEED, gen);
PLAYER(SPECIES_SLUGMA) { Ability(ABILITY_WEAK_ARMOR); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
@ -84,7 +84,7 @@ SINGLE_BATTLE_TEST("Weak Armor still boosts Speed if Defense can't go any lower"
PARAMETRIZE { gen = GEN_6; }
PARAMETRIZE { gen = GEN_7; }
GIVEN {
WITH_CONFIG(CONFIG_WEAK_ARMOR_SPEED, gen);
WITH_CONFIG(B_WEAK_ARMOR_SPEED, gen);
PLAYER(SPECIES_SLUGMA) { Ability(ABILITY_WEAK_ARMOR); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
@ -144,7 +144,7 @@ SINGLE_BATTLE_TEST("Weak Armor doesn't interrupt multi hit moves if Defense can'
{
u32 j;
GIVEN {
WITH_CONFIG(CONFIG_WEAK_ARMOR_SPEED, GEN_7);
WITH_CONFIG(B_WEAK_ARMOR_SPEED, GEN_7);
PLAYER(SPECIES_MAGCARGO) { Ability(ABILITY_WEAK_ARMOR); Defense(999); }
OPPONENT(SPECIES_CLOYSTER) { Ability(ABILITY_SKILL_LINK); }
} WHEN {
@ -183,7 +183,7 @@ SINGLE_BATTLE_TEST("Weak Armor doesn't interrupt multi hit moves if Speed can't
{
u32 j;
GIVEN {
WITH_CONFIG(CONFIG_WEAK_ARMOR_SPEED, GEN_7);
WITH_CONFIG(B_WEAK_ARMOR_SPEED, GEN_7);
PLAYER(SPECIES_MAGCARGO) { Ability(ABILITY_WEAK_ARMOR); Defense(999); }
OPPONENT(SPECIES_CLOYSTER) { Ability(ABILITY_SKILL_LINK); }
} WHEN {

View File

@ -699,7 +699,7 @@ AI_SINGLE_BATTLE_TEST("AI won't use thawing moves if target is frozen unless it
PARAMETRIZE { status = STATUS1_FROSTBITE; aiMove = MOVE_EMBER; aiFlags = AI_FLAG_CHECK_BAD_MOVE; }
GIVEN {
WITH_CONFIG(CONFIG_BURN_HIT_THAW, GEN_6); // In Gen 5, non-Fire burning moves didn't cause thawing
WITH_CONFIG(B_BURN_HIT_THAW, GEN_6); // In Gen 5, non-Fire burning moves didn't cause thawing
ASSUME(GetMoveType(MOVE_EMBER) == TYPE_FIRE);
ASSUME(GetMoveCategory(MOVE_TACKLE) == DAMAGE_CATEGORY_PHYSICAL);
ASSUME(GetMoveCategory(MOVE_WATER_GUN) == DAMAGE_CATEGORY_SPECIAL);
@ -846,7 +846,7 @@ AI_DOUBLE_BATTLE_TEST("AI sees opposing drain ability")
ASSUME(GetMoveType(MOVE_THUNDERBOLT) == TYPE_ELECTRIC);
ASSUME(GetMoveType(MOVE_RAZOR_LEAF) != TYPE_ELECTRIC);
ASSUME(GetMoveType(MOVE_METAL_CLAW) != TYPE_ELECTRIC);
WITH_CONFIG(CONFIG_REDIRECT_ABILITY_IMMUNITY, GEN_5);
WITH_CONFIG(B_REDIRECT_ABILITY_IMMUNITY, GEN_5);
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_OMNISCIENT);
PLAYER(SPECIES_RAICHU) { Ability(ABILITY_LIGHTNING_ROD); Moves(MOVE_CELEBRATE); }
PLAYER(SPECIES_KRABBY) { Ability(ABILITY_VOLT_ABSORB); Moves(MOVE_CELEBRATE); }
@ -942,7 +942,7 @@ AI_SINGLE_BATTLE_TEST("AI will see Magnitude damage")
AI_SINGLE_BATTLE_TEST("AI will prefer resisted move over failing move")
{
GIVEN {
WITH_CONFIG(CONFIG_POWDER_GRASS, GEN_6);
WITH_CONFIG(B_POWDER_GRASS, GEN_6);
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY);
PLAYER(SPECIES_ROSELIA) { Moves(MOVE_ABSORB); }
OPPONENT(SPECIES_GLOOM) { Moves(MOVE_MEGA_DRAIN, MOVE_STUN_SPORE, MOVE_LEECH_SEED, MOVE_SYNTHESIS); }

View File

@ -18,7 +18,7 @@ AI_SINGLE_BATTLE_TEST("AI sees increased base power of Facade")
PARAMETRIZE { status1 = STATUS1_BURN; expectedMove = MOVE_FACADE; }
GIVEN {
WITH_CONFIG(CONFIG_BURN_FACADE_DMG, GEN_6);
WITH_CONFIG(B_BURN_FACADE_DMG, GEN_6);
ASSUME(GetMoveEffect(MOVE_FACADE) == EFFECT_FACADE);
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT);
PLAYER(SPECIES_WOBBUFFET) { HP(60); }
@ -237,7 +237,7 @@ AI_DOUBLE_BATTLE_TEST("AI chooses moves that cure self or partner")
GIVEN {
ASSUME(GetMoveEffect(MOVE_HEAL_BELL) == EFFECT_HEAL_BELL);
WITH_CONFIG(CONFIG_HEAL_BELL_SOUNDPROOF, GEN_8);
WITH_CONFIG(B_HEAL_BELL_SOUNDPROOF, GEN_8);
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT);
PLAYER(SPECIES_WOBBUFFET);
PLAYER(SPECIES_WOBBUFFET);
@ -286,7 +286,7 @@ AI_SINGLE_BATTLE_TEST("AI chooses moves that cure inactive party members")
GIVEN {
ASSUME(GetMoveEffect(MOVE_HEAL_BELL) == EFFECT_HEAL_BELL);
WITH_CONFIG(CONFIG_HEAL_BELL_SOUNDPROOF, config);
WITH_CONFIG(B_HEAL_BELL_SOUNDPROOF, config);
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_REGIROCK) { Moves(MOVE_BODY_PRESS, MOVE_HEAL_BELL); }

View File

@ -553,7 +553,7 @@ AI_DOUBLE_BATTLE_TEST("AI treats an ally's redirection ability appropriately")
ASSUME(GetMoveTarget(MOVE_SURF) == MOVE_TARGET_FOES_AND_ALLY);
ASSUME(GetMoveType(MOVE_SURF) == TYPE_WATER);
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_HP_AWARE);
WITH_CONFIG(CONFIG_REDIRECT_ABILITY_IMMUNITY, config);
WITH_CONFIG(B_REDIRECT_ABILITY_IMMUNITY, config);
PLAYER(SPECIES_WOBBUFFET);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET) { Moves(move, MOVE_HEADBUTT); }

View File

@ -59,7 +59,7 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_PREDICT_SWITCH: Considers ShouldSwitch and GetMos
// Switching in trapper is an advanced feature of ShouldSwitch that requires GetMostSuitableMonToSwitchInto to also return a specific mon; this passing means the AI can use both in prediction
PASSES_RANDOMLY(5, 10, RNG_AI_PREDICT_SWITCH);
GIVEN {
WITH_CONFIG(CONFIG_POWDER_GRASS, GEN_6);
WITH_CONFIG(B_POWDER_GRASS, GEN_6);
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_OMNISCIENT | AI_FLAG_SMART_SWITCHING | AI_FLAG_SMART_MON_CHOICES | AI_FLAG_PREDICT_SWITCH | AI_FLAG_PREDICT_INCOMING_MON);
PLAYER(SPECIES_SKARMORY) { Moves(MOVE_SCRATCH); }
PLAYER(SPECIES_DUGTRIO) { Ability(ABILITY_ARENA_TRAP); Moves(MOVE_ACROBATICS); }

View File

@ -405,7 +405,7 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: Switch effect moves will send
ASSUME(GetMoveEffect(MOVE_BATON_PASS) == EFFECT_BATON_PASS);
ASSUME(GetMoveEffect(MOVE_CHILLY_RECEPTION) == EFFECT_CHILLY_RECEPTION);
ASSUME(GetMoveEffect(MOVE_SHED_TAIL) == EFFECT_SHED_TAIL);
WITH_CONFIG(CONFIG_TELEPORT_BEHAVIOR, GEN_8);
WITH_CONFIG(B_TELEPORT_BEHAVIOR, GEN_8);
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_MON_CHOICES | AI_FLAG_ACE_POKEMON);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET) { Moves(aiMove); }
@ -1111,8 +1111,8 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will switch out if it has an
PARAMETRIZE { aiMon = SPECIES_SHELLDER; absorbingAbility = ABILITY_OVERCOAT; move = MOVE_MAGIC_POWDER; }
PARAMETRIZE { aiMon = SPECIES_SHELLDER; absorbingAbility = ABILITY_OVERCOAT; move = MOVE_STUN_SPORE; }
GIVEN {
WITH_CONFIG(CONFIG_REDIRECT_ABILITY_IMMUNITY, GEN_5);
WITH_CONFIG(CONFIG_POWDER_OVERCOAT, GEN_6);
WITH_CONFIG(B_REDIRECT_ABILITY_IMMUNITY, GEN_5);
WITH_CONFIG(B_POWDER_OVERCOAT, GEN_6);
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); }
OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_SCRATCH); }
@ -1204,7 +1204,7 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will switch out if Encore'd i
{
PASSES_RANDOMLY(SHOULD_SWITCH_ENCORE_DAMAGE_PERCENTAGE, 100, RNG_AI_SWITCH_ENCORE);
GIVEN {
WITH_CONFIG(CONFIG_ENCORE_TARGET, GEN_3);
WITH_CONFIG(B_ENCORE_TARGET, GEN_3);
ASSUME(GetMoveEffect(MOVE_ENCORE) == EFFECT_ENCORE);
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_SWITCHING);
PLAYER(SPECIES_AZURILL) { Moves(MOVE_SCRATCH, MOVE_ENCORE); }
@ -1322,7 +1322,7 @@ AI_SINGLE_BATTLE_TEST("Switch AI: AI will switch into mon with good type matchup
AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: AI correctly handles abilities when scoring moves")
{
GIVEN {
WITH_CONFIG(CONFIG_PRANKSTER_DARK_TYPES, GEN_7);
WITH_CONFIG(B_PRANKSTER_DARK_TYPES, GEN_7);
ASSUME(GetSpeciesType(SPECIES_GRENINJA, 1) == TYPE_DARK);
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_OMNISCIENT | AI_FLAG_SMART_MON_CHOICES);
PLAYER(SPECIES_GRENINJA) { Moves(MOVE_WATER_GUN); }
@ -1665,7 +1665,7 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will consider Hidden Power wh
{
PASSES_RANDOMLY(SHOULD_SWITCH_ABSORBS_HIDDEN_POWER_PERCENTAGE, 100, RNG_AI_SWITCH_ABSORBING_HIDDEN_POWER);
GIVEN {
WITH_CONFIG(CONFIG_REDIRECT_ABILITY_IMMUNITY, GEN_5);
WITH_CONFIG(B_REDIRECT_ABILITY_IMMUNITY, GEN_5);
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_HIDDEN_POWER); HPIV(31); AttackIV(30); DefenseIV(31); SpAttackIV(30); SpDefenseIV(31); SpeedIV(30); }
OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_SCRATCH); }

View File

@ -16,7 +16,7 @@ AI_SINGLE_BATTLE_TEST("AI will not try to lower opposing stats if target is prot
PARAMETRIZE { ability = ABILITY_CLEAR_BODY; species = SPECIES_BELDUM; move = MOVE_NOBLE_ROAR; }
GIVEN {
WITH_CONFIG(CONFIG_ILLUMINATE_EFFECT, GEN_9);
WITH_CONFIG(B_ILLUMINATE_EFFECT, GEN_9);
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_OMNISCIENT);
PLAYER(species) { Ability(ability); }
OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_TACKLE, move); }

View File

@ -16,7 +16,7 @@ WILD_BATTLE_TEST("Badge boost: B_FLAG_BADGE_BOOST_ATTACK boost Attack", s16 dmg)
FlagSet(B_FLAG_BADGE_BOOST_ATTACK);
else
FlagClear(B_FLAG_BADGE_BOOST_ATTACK);
WITH_CONFIG(CONFIG_BADGE_BOOST, genConfig);
WITH_CONFIG(B_BADGE_BOOST, genConfig);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
@ -48,7 +48,7 @@ WILD_BATTLE_TEST("Badge boost: B_FLAG_BADGE_BOOST_SPATK boost Special Attack", s
FlagSet(B_FLAG_BADGE_BOOST_SPATK);
else
FlagClear(B_FLAG_BADGE_BOOST_SPATK);
WITH_CONFIG(CONFIG_BADGE_BOOST, genConfig);
WITH_CONFIG(B_BADGE_BOOST, genConfig);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
@ -81,7 +81,7 @@ WILD_BATTLE_TEST("Badge boost: B_FLAG_BADGE_BOOST_DEFENSE boost Defense", s16 dm
FlagSet(B_FLAG_BADGE_BOOST_DEFENSE);
else
FlagClear(B_FLAG_BADGE_BOOST_DEFENSE);
WITH_CONFIG(CONFIG_BADGE_BOOST, genConfig);
WITH_CONFIG(B_BADGE_BOOST, genConfig);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
@ -114,7 +114,7 @@ WILD_BATTLE_TEST("Badge boost: B_FLAG_BADGE_BOOST_SPDEF boost Special Defense",
FlagSet(B_FLAG_BADGE_BOOST_SPDEF);
else
FlagClear(B_FLAG_BADGE_BOOST_SPDEF);
WITH_CONFIG(CONFIG_BADGE_BOOST, genConfig);
WITH_CONFIG(B_BADGE_BOOST, genConfig);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
@ -146,7 +146,7 @@ WILD_BATTLE_TEST("Badge boost: B_FLAG_BADGE_BOOST_SPEED boost Speed", s16 dmg)
FlagSet(B_FLAG_BADGE_BOOST_SPEED);
else
FlagClear(B_FLAG_BADGE_BOOST_SPEED);
WITH_CONFIG(CONFIG_BADGE_BOOST, genConfig);
WITH_CONFIG(B_BADGE_BOOST, genConfig);
PLAYER(SPECIES_WOBBUFFET) { Speed(100); HP(1); }
OPPONENT(SPECIES_WOBBUFFET) { Speed(101); HP(1); }
} WHEN {

View File

@ -13,7 +13,7 @@ SINGLE_BATTLE_TEST("Critical hits without modifiers occur at different rates by
PASSES_RANDOMLY(passes, trials, RNG_CRITICAL_HIT);
GIVEN {
WITH_CONFIG(CONFIG_CRIT_CHANCE, genConfig);
WITH_CONFIG(B_CRIT_CHANCE, genConfig);
ASSUME(GetSpeciesBaseSpeed(SPECIES_WOBBUFFET) == 33);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);
@ -35,7 +35,7 @@ SINGLE_BATTLE_TEST("Crit Chance: Raising critical hit rate to 3 guarantees a cri
PARAMETRIZE { genConfig = j; passes = 1, trials = 1; } // 100%
PASSES_RANDOMLY(passes, trials, RNG_CRITICAL_HIT);
GIVEN {
WITH_CONFIG(CONFIG_CRIT_CHANCE, genConfig);
WITH_CONFIG(B_CRIT_CHANCE, genConfig);
ASSUME(GetMoveCriticalHitStage(MOVE_SLASH) == 1);
ASSUME(gItemsInfo[ITEM_SCOPE_LENS].holdEffect == HOLD_EFFECT_SCOPE_LENS);
PLAYER(SPECIES_TOGEKISS) { Ability(ABILITY_SUPER_LUCK); Item(ITEM_SCOPE_LENS); }

View File

@ -62,7 +62,7 @@ SINGLE_BATTLE_TEST("Damage calculation matches Gen6+ (Muscle Band, crit)")
PARAMETRIZE { expectedDamage = 276; }
PARAMETRIZE { expectedDamage = 268; }
GIVEN {
WITH_CONFIG(CONFIG_CRIT_MULTIPLIER, GEN_6);
WITH_CONFIG(B_CRIT_MULTIPLIER, GEN_6);
ASSUME(GetMoveCategory(MOVE_ICE_FANG) == DAMAGE_CATEGORY_PHYSICAL);
PLAYER(SPECIES_GLACEON) { Level(75); Attack(123); Item(ITEM_MUSCLE_BAND); }
OPPONENT(SPECIES_GARCHOMP) { Defense(163); }
@ -384,7 +384,7 @@ DOUBLE_BATTLE_TEST("Transistor Damage calculation", s16 damage)
}
}
GIVEN {
WITH_CONFIG(CONFIG_TRANSISTOR_BOOST, gen);
WITH_CONFIG(B_TRANSISTOR_BOOST, gen);
ASSUME(GetMoveType(MOVE_WILD_CHARGE) == TYPE_ELECTRIC);
ASSUME(GetMoveType(MOVE_THUNDER_SHOCK) == TYPE_ELECTRIC);
ASSUME(GetMoveCategory(MOVE_WILD_CHARGE) == DAMAGE_CATEGORY_PHYSICAL);

View File

@ -11,7 +11,7 @@ WILD_BATTLE_TEST("Pokemon gain experience after catching a Pokemon (Gen6+)")
PARAMETRIZE { level = 50; config = GEN_6; }
GIVEN {
WITH_CONFIG(CONFIG_EXP_CATCH, config);
WITH_CONFIG(B_EXP_CATCH, config);
PLAYER(SPECIES_WOBBUFFET) { Level(level); }
OPPONENT(SPECIES_CATERPIE) { HP(1); }
} WHEN {

View File

@ -125,7 +125,7 @@ SINGLE_BATTLE_TEST("Meloetta returns to Aria form upon battle end after using Re
SINGLE_BATTLE_TEST("Battle Bond Greninja returns to base form upon battle end after knocking out an opponent")
{
GIVEN {
WITH_CONFIG(CONFIG_BATTLE_BOND, GEN_8);
WITH_CONFIG(B_BATTLE_BOND, GEN_8);
PLAYER(SPECIES_GRENINJA_BATTLE_BOND);
OPPONENT(SPECIES_WOBBUFFET) { HP(1); }
OPPONENT(SPECIES_WOBBUFFET);
@ -194,7 +194,7 @@ SINGLE_BATTLE_TEST("Mimikyu Busted reverts to Disguised form upon battle end aft
PARAMETRIZE { species = SPECIES_MIMIKYU_DISGUISED; }
PARAMETRIZE { species = SPECIES_MIMIKYU_TOTEM_DISGUISED; }
GIVEN {
WITH_CONFIG(CONFIG_DISGUISE_HP_LOSS, GEN_7);
WITH_CONFIG(B_DISGUISE_HP_LOSS, GEN_7);
PLAYER(species) { Ability(ABILITY_DISGUISE); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {

View File

@ -74,7 +74,7 @@ SINGLE_BATTLE_TEST("Rayquaza can Mega Evolve knowing Dragon Ascent")
SINGLE_BATTLE_TEST("Mega Evolution doesn't affect turn order (Gen6)")
{
GIVEN {
WITH_CONFIG(CONFIG_MEGA_EVO_TURN_ORDER, GEN_6);
WITH_CONFIG(B_MEGA_EVO_TURN_ORDER, GEN_6);
PLAYER(SPECIES_GARDEVOIR) { Item(ITEM_GARDEVOIRITE); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
@ -90,7 +90,7 @@ SINGLE_BATTLE_TEST("Mega Evolution doesn't affect turn order (Gen6)")
SINGLE_BATTLE_TEST("Mega Evolution affects turn order (Gen7+)")
{
GIVEN {
WITH_CONFIG(CONFIG_MEGA_EVO_TURN_ORDER, GEN_7);
WITH_CONFIG(B_MEGA_EVO_TURN_ORDER, GEN_7);
PLAYER(SPECIES_GARDEVOIR) { Item(ITEM_GARDEVOIRITE); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
@ -106,7 +106,7 @@ SINGLE_BATTLE_TEST("Mega Evolution affects turn order (Gen7+)")
SINGLE_BATTLE_TEST("Abilities replaced by Mega Evolution do not affect turn order")
{
GIVEN {
WITH_CONFIG(CONFIG_MEGA_EVO_TURN_ORDER, GEN_7);
WITH_CONFIG(B_MEGA_EVO_TURN_ORDER, GEN_7);
ASSUME(GetSpeciesAbility(SPECIES_SABLEYE_MEGA, 0) != ABILITY_STALL
&& GetSpeciesAbility(SPECIES_SABLEYE_MEGA, 1) != ABILITY_STALL);
PLAYER(SPECIES_SABLEYE) { Item(ITEM_SABLENITE); Ability(ABILITY_STALL); Speed(105); }

View File

@ -58,7 +58,7 @@ DOUBLE_BATTLE_TEST("Ultra Burst's order is determined by Speed - player faster")
SINGLE_BATTLE_TEST("Ultra Burst affects turn order")
{
GIVEN {
WITH_CONFIG(CONFIG_MEGA_EVO_TURN_ORDER, GEN_7);
WITH_CONFIG(B_MEGA_EVO_TURN_ORDER, GEN_7);
PLAYER(SPECIES_NECROZMA_DUSK_MANE) { Item(ITEM_ULTRANECROZIUM_Z); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {

View File

@ -423,7 +423,7 @@ SINGLE_BATTLE_TEST("Dynamax: Dynamaxed Pokemon that changes forms does not gain
{
u16 capturedHP, finalHP;
GIVEN {
WITH_CONFIG(CONFIG_BATTLE_BOND, GEN_8);
WITH_CONFIG(B_BATTLE_BOND, GEN_8);
PLAYER(SPECIES_GRENINJA_BATTLE_BOND) { Ability(ABILITY_BATTLE_BOND); HP(100); Speed(100); }
OPPONENT(SPECIES_CATERPIE) { HP(1); Speed(1000); }
OPPONENT(SPECIES_WOBBUFFET) { Speed(10); }
@ -940,7 +940,7 @@ SINGLE_BATTLE_TEST("Dynamax: G-Max Stonesurge sets up Stealth Rocks")
SINGLE_BATTLE_TEST("Dynamax: G-Max Steelsurge sets up sharp steel")
{
GIVEN {
WITH_CONFIG(CONFIG_DEFOG_EFFECT_CLEARING, GEN_6);
WITH_CONFIG(B_DEFOG_EFFECT_CLEARING, GEN_6);
ASSUME(MoveHasAdditionalEffect(MOVE_G_MAX_STEELSURGE, MOVE_EFFECT_STEELSURGE));
PLAYER(SPECIES_COPPERAJAH) { GigantamaxFactor(TRUE); }
OPPONENT(SPECIES_WOBBUFFET);
@ -1434,7 +1434,7 @@ DOUBLE_BATTLE_TEST("Dynamax: G-Max Chi Strike boosts allies' crit chance by 1 st
{
u32 j;
GIVEN {
WITH_CONFIG(CONFIG_CRIT_CHANCE, GEN_6);
WITH_CONFIG(B_CRIT_CHANCE, GEN_6);
ASSUME(MoveHasAdditionalEffect(MOVE_G_MAX_CHI_STRIKE, MOVE_EFFECT_CRIT_PLUS_SIDE));
PLAYER(SPECIES_MACHAMP) { GigantamaxFactor(TRUE); }
PLAYER(SPECIES_MACHOP);
@ -1597,7 +1597,7 @@ SINGLE_BATTLE_TEST("Dynamax: Max Moves don't bypass absorbing abilities")
ASSUME(GetMoveType(MOVE_EMBER) == TYPE_FIRE);
ASSUME(GetMoveType(MOVE_MUD_BOMB) == TYPE_GROUND);
ASSUME(GetMoveType(MOVE_VINE_WHIP) == TYPE_GRASS);
WITH_CONFIG(CONFIG_REDIRECT_ABILITY_IMMUNITY, GEN_5);
WITH_CONFIG(B_REDIRECT_ABILITY_IMMUNITY, GEN_5);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(species) { Ability(ability); }
} WHEN {

View File

@ -6,7 +6,7 @@
SINGLE_BATTLE_TEST("(Z-MOVE) Z-Moves do not retain priority")
{
GIVEN {
WITH_CONFIG(CONFIG_MEGA_EVO_TURN_ORDER, GEN_7); // TODO: Decouple this config from other gimmicks
WITH_CONFIG(B_MEGA_EVO_TURN_ORDER, GEN_7); // TODO: Decouple this config from other gimmicks
ASSUME(GetMoveType(MOVE_QUICK_ATTACK) == TYPE_NORMAL);
PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_NORMALIUM_Z); Speed(1); }
OPPONENT(SPECIES_WOBBUFFET) { Speed(2); }
@ -124,7 +124,7 @@ SINGLE_BATTLE_TEST("(Z-MOVE) Z_EFFECT_BOOST_CRITS raises a battler's critical hi
PARAMETRIZE { genConfig = j; chance = 2; } // 50%
PASSES_RANDOMLY(1, chance, RNG_CRITICAL_HIT);
GIVEN {
WITH_CONFIG(CONFIG_CRIT_CHANCE, genConfig);
WITH_CONFIG(B_CRIT_CHANCE, genConfig);
ASSUME(GetMoveType(MOVE_FORESIGHT) == TYPE_NORMAL);
ASSUME(GetMoveZEffect(MOVE_FORESIGHT) == Z_EFFECT_BOOST_CRITS);
PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_NORMALIUM_Z); }
@ -533,7 +533,7 @@ SINGLE_BATTLE_TEST("(Z-MOVE) 10,000,000 Volt Thunderbolt has an increased critic
PARAMETRIZE { genConfig = j; chance = 2; }
PASSES_RANDOMLY(1, chance, RNG_CRITICAL_HIT);
GIVEN {
WITH_CONFIG(CONFIG_CRIT_CHANCE, genConfig);
WITH_CONFIG(B_CRIT_CHANCE, genConfig);
ASSUME(GetMoveCriticalHitStage(MOVE_10_000_000_VOLT_THUNDERBOLT) == 2);
ASSUME(GetSpeciesBaseSpeed(SPECIES_PIKACHU_PARTNER) == 90);
PLAYER(SPECIES_PIKACHU_PARTNER) { Item(ITEM_PIKASHUNIUM_Z); }

View File

@ -38,7 +38,7 @@ SINGLE_BATTLE_TEST("Booster Energy will activate Quark Drive after Electric Terr
SINGLE_BATTLE_TEST("Booster Energy will activate Protosynthesis after harsh sunlight ends")
{
GIVEN {
WITH_CONFIG(CONFIG_ABILITY_WEATHER, GEN_6);
WITH_CONFIG(B_ABILITY_WEATHER, GEN_6);
PLAYER(SPECIES_RAGING_BOLT) { Attack(100); Defense(100); Speed(100); SpAttack(110); SpDefense(100); Ability(ABILITY_PROTOSYNTHESIS); Item(ITEM_BOOSTER_ENERGY); }
OPPONENT(SPECIES_TORKOAL) { Speed(100); Ability(ABILITY_DROUGHT); }
} WHEN {

View File

@ -57,7 +57,7 @@ SINGLE_BATTLE_TEST("Lansat Berry raises the holder's critical-hit-ratio by 2 sta
PARAMETRIZE { genConfig = j; chance = 2; } // 50%
PASSES_RANDOMLY(1, chance, RNG_CRITICAL_HIT);
GIVEN {
WITH_CONFIG(CONFIG_CRIT_CHANCE, genConfig);
WITH_CONFIG(B_CRIT_CHANCE, genConfig);
ASSUME(GetMoveCriticalHitStage(MOVE_SCRATCH) == 0);
PLAYER(SPECIES_WOBBUFFET) { MaxHP(160); HP(80); Item(ITEM_LANSAT_BERRY); }
OPPONENT(SPECIES_WOBBUFFET);

View File

@ -11,7 +11,7 @@ SINGLE_BATTLE_TEST("Ground-type moves do neutral damage to non-grounded Flying t
PARAMETRIZE { config = GEN_4; }
PARAMETRIZE { config = GEN_5; }
GIVEN {
WITH_CONFIG(CONFIG_IRON_BALL, config);
WITH_CONFIG(B_IRON_BALL, config);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_SKARMORY) { Item(ITEM_IRON_BALL); }
} WHEN {

View File

@ -20,7 +20,7 @@ SINGLE_BATTLE_TEST("Leek increases critical hit ratio by 2 stages for the Farfet
}
PASSES_RANDOMLY(passes, trials, RNG_CRITICAL_HIT);
GIVEN {
WITH_CONFIG(CONFIG_CRIT_CHANCE, genConfig);
WITH_CONFIG(B_CRIT_CHANCE, genConfig);
ASSUME(GetSpeciesBaseSpeed(SPECIES_FARFETCHD) == 60);
ASSUME(GetSpeciesBaseSpeed(SPECIES_FARFETCHD_GALAR) == 55);
ASSUME(GetSpeciesBaseSpeed(SPECIES_SIRFETCHD) == 65);

View File

@ -110,7 +110,7 @@ SINGLE_BATTLE_TEST("Life Orb does not activate if on a confusion hit")
SINGLE_BATTLE_TEST("Life Orb does not activate if move was absorbed by target")
{
GIVEN {
WITH_CONFIG(CONFIG_REDIRECT_ABILITY_IMMUNITY, GEN_5);
WITH_CONFIG(B_REDIRECT_ABILITY_IMMUNITY, GEN_5);
PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_LIFE_ORB); }
OPPONENT(SPECIES_RAICHU) { Ability(ABILITY_LIGHTNING_ROD); }
} WHEN {

View File

@ -71,7 +71,7 @@ SINGLE_BATTLE_TEST("Light Ball doubles Pikachu's Attack (Gen4+)", s16 damage)
}
GIVEN {
WITH_CONFIG(CONFIG_LIGHT_BALL_ATTACK_BOOST, config);
WITH_CONFIG(B_LIGHT_BALL_ATTACK_BOOST, config);
ASSUME(GetMoveCategory(MOVE_SPARK) == DAMAGE_CATEGORY_PHYSICAL);
if (species == SPECIES_PIKACHU_GMAX) {
PLAYER(SPECIES_PIKACHU) { Item(item); GigantamaxFactor(TRUE); }

View File

@ -11,7 +11,7 @@ SINGLE_BATTLE_TEST("Lucky Punch increases critical hit ratio by 2 stages for Cha
PARAMETRIZE { genConfig = j; passes = 1; trials = 2; } // 50%
PASSES_RANDOMLY(passes, trials, RNG_CRITICAL_HIT);
GIVEN {
WITH_CONFIG(CONFIG_CRIT_CHANCE, genConfig);
WITH_CONFIG(B_CRIT_CHANCE, genConfig);
ASSUME(gItemsInfo[ITEM_LUCKY_PUNCH].holdEffect == HOLD_EFFECT_LUCKY_PUNCH);
ASSUME(GetSpeciesBaseSpeed(SPECIES_CHANSEY) == 50);
PLAYER(SPECIES_WOBBUFFET);

View File

@ -49,7 +49,7 @@ SINGLE_BATTLE_TEST("Safety Goggles blocks Effect Spore's effect")
KNOWN_FAILING;
PASSES_RANDOMLY(100, 100, RNG_EFFECT_SPORE);
GIVEN {
WITH_CONFIG(CONFIG_POWDER_GRASS, GEN_5); // Setting it to Gen 6 causes it to pass
WITH_CONFIG(B_POWDER_GRASS, GEN_5); // Setting it to Gen 6 causes it to pass
ASSUME(MoveMakesContact(MOVE_SCRATCH));
PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_SAFETY_GOGGLES); }
OPPONENT(SPECIES_BRELOOM) { Ability(ABILITY_EFFECT_SPORE); }

View File

@ -9,7 +9,7 @@ SINGLE_BATTLE_TEST("Scope Lens increases the critical hit ratio by 1 stage")
PARAMETRIZE { genConfig = j; passes = 1; trials = 8; } // 12.5%
PASSES_RANDOMLY(passes, trials, RNG_CRITICAL_HIT);
GIVEN {
WITH_CONFIG(CONFIG_CRIT_CHANCE, genConfig);
WITH_CONFIG(B_CRIT_CHANCE, genConfig);
ASSUME(gItemsInfo[ITEM_SCOPE_LENS].holdEffect == HOLD_EFFECT_SCOPE_LENS);
ASSUME(GetSpeciesBaseSpeed(SPECIES_WOBBUFFET) == 33);
PLAYER(SPECIES_WOBBUFFET) { Item(ITEM_SCOPE_LENS); }

View File

@ -10,7 +10,7 @@ SINGLE_BATTLE_TEST("Dire Hit increases a battler's critical hit chance by 2 stag
PARAMETRIZE { genConfig = j; chance = 2; } // 50%
PASSES_RANDOMLY(1, chance, RNG_CRITICAL_HIT);
GIVEN {
WITH_CONFIG(CONFIG_CRIT_CHANCE, genConfig);
WITH_CONFIG(B_CRIT_CHANCE, genConfig);
ASSUME(gItemsInfo[ITEM_DIRE_HIT].battleUsage == EFFECT_ITEM_SET_FOCUS_ENERGY);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);

View File

@ -142,7 +142,7 @@ SINGLE_BATTLE_TEST("Critical hits deal 100% (Gen 1-5) or 50% (Gen 6+) more damag
PARAMETRIZE { criticalHit = TRUE; genConfig = GEN_5; }
PARAMETRIZE { criticalHit = TRUE; genConfig = GEN_6; }
GIVEN {
WITH_CONFIG(CONFIG_CRIT_MULTIPLIER, genConfig);
WITH_CONFIG(B_CRIT_MULTIPLIER, genConfig);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {

View File

@ -89,7 +89,7 @@ DOUBLE_BATTLE_TEST("After You calculates correct turn order if only one Pokémon
DOUBLE_BATTLE_TEST("After You fails if the turn order remains the same after After You (Gen5-7)")
{
GIVEN {
WITH_CONFIG(CONFIG_AFTER_YOU_TURN_ORDER, GEN_7);
WITH_CONFIG(B_AFTER_YOU_TURN_ORDER, GEN_7);
PLAYER(SPECIES_WOBBUFFET) { Speed(4); }
PLAYER(SPECIES_WYNAUT) { Speed(1); }
OPPONENT(SPECIES_WOBBUFFET) { Speed(2); }
@ -114,7 +114,7 @@ DOUBLE_BATTLE_TEST("After You fails if the turn order remains the same after Aft
DOUBLE_BATTLE_TEST("After You doesn't fail if the turn order remains the same after After You (Gen8+)")
{
GIVEN {
WITH_CONFIG(CONFIG_AFTER_YOU_TURN_ORDER, GEN_8);
WITH_CONFIG(B_AFTER_YOU_TURN_ORDER, GEN_8);
PLAYER(SPECIES_WOBBUFFET) { Speed(4); }
PLAYER(SPECIES_WYNAUT) { Speed(1); }
OPPONENT(SPECIES_WOBBUFFET) { Speed(2); }

View File

@ -188,7 +188,7 @@ DOUBLE_BATTLE_TEST("Ally Switch doesn't make self-targeting status moves fail")
DOUBLE_BATTLE_TEST("Ally Switch doesn't increase the Protect-like moves counter (Gen5-8)")
{
GIVEN {
WITH_CONFIG(CONFIG_ALLY_SWITCH_FAIL_CHANCE, GEN_8);
WITH_CONFIG(B_ALLY_SWITCH_FAIL_CHANCE, GEN_8);
PLAYER(SPECIES_WOBBUFFET);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);
@ -203,7 +203,7 @@ DOUBLE_BATTLE_TEST("Ally Switch doesn't increase the Protect-like moves counter
DOUBLE_BATTLE_TEST("Ally Switch increases the Protect-like moves counter (Gen9+)")
{
GIVEN {
WITH_CONFIG(CONFIG_ALLY_SWITCH_FAIL_CHANCE, GEN_9);
WITH_CONFIG(B_ALLY_SWITCH_FAIL_CHANCE, GEN_9);
PLAYER(SPECIES_WOBBUFFET);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);

View File

@ -12,7 +12,7 @@ SINGLE_BATTLE_TEST("Beat Up hits the target for each non-fainted, non-statused m
PARAMETRIZE { gen = GEN_5; }
GIVEN {
WITH_CONFIG(CONFIG_BEAT_UP, gen);
WITH_CONFIG(B_BEAT_UP, gen);
PLAYER(SPECIES_WOBBUFFET);
PLAYER(SPECIES_WYNAUT);
PLAYER(SPECIES_PICHU)
@ -66,7 +66,7 @@ SINGLE_BATTLE_TEST("Beat Up doesn't consider Comatose as a status")
SINGLE_BATTLE_TEST("Beat Up doesn't list party member's name (Gen5+)")
{
GIVEN {
WITH_CONFIG(CONFIG_BEAT_UP, GEN_5);
WITH_CONFIG(B_BEAT_UP, GEN_5);
PLAYER(SPECIES_WOBBUFFET);
PLAYER(SPECIES_WYNAUT);
OPPONENT(SPECIES_WOBBUFFET);
@ -89,7 +89,7 @@ SINGLE_BATTLE_TEST("Beat Up's damage is Dark-typed (Gen5+)", s16 damage)
ASSUME(GetMoveType(MOVE_BEAT_UP) == TYPE_DARK);
GIVEN {
WITH_CONFIG(CONFIG_BEAT_UP, GEN_5);
WITH_CONFIG(B_BEAT_UP, GEN_5);
PLAYER(SPECIES_WOBBUFFET);
PLAYER(SPECIES_WYNAUT);
OPPONENT(targetIsFairy ? SPECIES_SYLVEON : SPECIES_WOBBUFFET);
@ -109,7 +109,7 @@ SINGLE_BATTLE_TEST("Beat Up's base power is determined by each striking Pokémon
s16 firstHit, secondHit;
GIVEN {
WITH_CONFIG(CONFIG_BEAT_UP, GEN_5);
WITH_CONFIG(B_BEAT_UP, GEN_5);
PLAYER(SPECIES_SHUCKLE);
PLAYER(SPECIES_DEOXYS_ATTACK);
PLAYER(SPECIES_WYNAUT) { HP(0); }
@ -135,7 +135,7 @@ SINGLE_BATTLE_TEST("Beat Up's damage considers stat stage changes (Gen5+)", s16
PARAMETRIZE { boosted = TRUE; }
GIVEN {
WITH_CONFIG(CONFIG_BEAT_UP, GEN_5);
WITH_CONFIG(B_BEAT_UP, GEN_5);
PLAYER(SPECIES_UMBREON);
PLAYER(SPECIES_WYNAUT);
OPPONENT(SPECIES_WOBBUFFET);
@ -163,7 +163,7 @@ SINGLE_BATTLE_TEST("Beat Up's damage considers Huge Power and Choice Band (Gen5+
PARAMETRIZE { ability = ABILITY_THICK_FAT; item = ITEM_CHOICE_BAND; }
GIVEN {
WITH_CONFIG(CONFIG_BEAT_UP, GEN_5);
WITH_CONFIG(B_BEAT_UP, GEN_5);
PLAYER(SPECIES_AZUMARILL) { Ability(ability); Item(item); Moves(MOVE_BEAT_UP); }
PLAYER(SPECIES_WYNAUT);
OPPONENT(SPECIES_WOBBUFFET);
@ -183,7 +183,7 @@ SINGLE_BATTLE_TEST("Beat Up's damage considers Huge Power and Choice Band (Gen5+
SINGLE_BATTLE_TEST("Beat Up lists each party member's name")
{
GIVEN {
WITH_CONFIG(CONFIG_BEAT_UP, GEN_3);
WITH_CONFIG(B_BEAT_UP, GEN_3);
PLAYER(SPECIES_WOBBUFFET);
PLAYER(SPECIES_WYNAUT);
PLAYER(SPECIES_WYNAUT) { HP(0); }
@ -225,7 +225,7 @@ SINGLE_BATTLE_TEST("Beat Up's damage is typeless", s16 damage)
PARAMETRIZE { defender = SPECIES_SYLVEON; } // Fairy
GIVEN {
WITH_CONFIG(CONFIG_BEAT_UP, GEN_3);
WITH_CONFIG(B_BEAT_UP, GEN_3);
type1 = GetSpeciesType(defender, 0);
type2 = GetSpeciesType(defender, 1);
ASSUME(type2 == type1 || type2 == TYPE_MYSTERY); // Ensure monotype targets
@ -250,7 +250,7 @@ SINGLE_BATTLE_TEST("Beat Up's damage doesn't consider STAB")
{
s16 damage;
GIVEN {
WITH_CONFIG(CONFIG_BEAT_UP, GEN_3);
WITH_CONFIG(B_BEAT_UP, GEN_3);
damage = 0;
PLAYER(SPECIES_WOBBUFFET);
PLAYER(SPECIES_WYNAUT) { HP(0); }
@ -271,7 +271,7 @@ SINGLE_BATTLE_TEST("Beat Up's base power is the same for each strike")
{
s16 firstHit, secondHit;
GIVEN {
WITH_CONFIG(CONFIG_BEAT_UP, GEN_3);
WITH_CONFIG(B_BEAT_UP, GEN_3);
firstHit = 0;
secondHit = 0;
PLAYER(SPECIES_WYNAUT);
@ -296,7 +296,7 @@ SINGLE_BATTLE_TEST("Beat Up's damage is determined by each striking Pokémon's b
{
s16 shuckleHit, deoxysHit;
GIVEN {
WITH_CONFIG(CONFIG_BEAT_UP, GEN_3);
WITH_CONFIG(B_BEAT_UP, GEN_3);
shuckleHit = 0;
deoxysHit = 0;
PLAYER(SPECIES_SHUCKLE);
@ -330,7 +330,7 @@ SINGLE_BATTLE_TEST("Beat Up ignores stat stage changes", s16 damage)
PARAMETRIZE { boosted = TRUE; }
GIVEN {
WITH_CONFIG(CONFIG_BEAT_UP, GEN_3);
WITH_CONFIG(B_BEAT_UP, GEN_3);
PLAYER(SPECIES_WOBBUFFET);
PLAYER(SPECIES_WYNAUT);
OPPONENT(SPECIES_WOBBUFFET);
@ -356,7 +356,7 @@ SINGLE_BATTLE_TEST("Beat Up ignores Huge Power", s16 damage)
PARAMETRIZE { ability = ABILITY_HUGE_POWER; }
GIVEN {
WITH_CONFIG(CONFIG_BEAT_UP, GEN_3);
WITH_CONFIG(B_BEAT_UP, GEN_3);
PLAYER(SPECIES_AZUMARILL) { Ability(ability); Moves(MOVE_BEAT_UP); }
PLAYER(SPECIES_WYNAUT);
OPPONENT(SPECIES_WOBBUFFET);
@ -379,7 +379,7 @@ SINGLE_BATTLE_TEST("Beat Up ignores Choice Band", s16 damage)
PARAMETRIZE { item = ITEM_CHOICE_BAND; }
GIVEN {
WITH_CONFIG(CONFIG_BEAT_UP, GEN_3);
WITH_CONFIG(B_BEAT_UP, GEN_3);
PLAYER(SPECIES_URSARING) { Item(item); Moves(MOVE_BEAT_UP); }
PLAYER(SPECIES_WYNAUT);
OPPONENT(SPECIES_WOBBUFFET);

View File

@ -6,7 +6,7 @@ TO_DO_BATTLE_TEST("Conversion 2's type change considers Inverse Battles");
SINGLE_BATTLE_TEST("Conversion 2 randomly changes the type of the user to a type that resists the last move that hit the user (Gen 1-4)")
{
GIVEN {
WITH_CONFIG(CONFIG_UPDATED_CONVERSION_2, GEN_4);
WITH_CONFIG(B_UPDATED_CONVERSION_2, GEN_4);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
@ -25,7 +25,7 @@ SINGLE_BATTLE_TEST("Conversion 2 randomly changes the type of the user to a type
SINGLE_BATTLE_TEST("Conversion 2's type change considers Struggle to be Normal type (Gen 1-4)")
{
GIVEN {
WITH_CONFIG(CONFIG_UPDATED_CONVERSION_2, GEN_4);
WITH_CONFIG(B_UPDATED_CONVERSION_2, GEN_4);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
@ -46,7 +46,7 @@ SINGLE_BATTLE_TEST("Conversion 2's type change considers Struggle to be Normal t
SINGLE_BATTLE_TEST("Conversion 2 randomly changes the type of the user to a type that resists the last used target's move (Gen 5+)")
{
GIVEN {
WITH_CONFIG(CONFIG_UPDATED_CONVERSION_2, GEN_5);
WITH_CONFIG(B_UPDATED_CONVERSION_2, GEN_5);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
@ -65,7 +65,7 @@ SINGLE_BATTLE_TEST("Conversion 2 randomly changes the type of the user to a type
SINGLE_BATTLE_TEST("Conversion 2's type change considers status moves (Gen 5+)")
{
GIVEN {
WITH_CONFIG(CONFIG_UPDATED_CONVERSION_2, GEN_5);
WITH_CONFIG(B_UPDATED_CONVERSION_2, GEN_5);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
@ -85,7 +85,7 @@ SINGLE_BATTLE_TEST("Conversion 2's type change considers status moves (Gen 5+)")
SINGLE_BATTLE_TEST("Conversion 2's type change considers the type of moves called by other moves")
{
GIVEN {
WITH_CONFIG(CONFIG_UPDATED_CONVERSION_2, GEN_5);
WITH_CONFIG(B_UPDATED_CONVERSION_2, GEN_5);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
@ -105,7 +105,7 @@ SINGLE_BATTLE_TEST("Conversion 2's type change considers the type of moves calle
SINGLE_BATTLE_TEST("Conversion 2's type change considers dynamic type moves")
{
GIVEN {
WITH_CONFIG(CONFIG_UPDATED_CONVERSION_2, GEN_5);
WITH_CONFIG(B_UPDATED_CONVERSION_2, GEN_5);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
@ -127,7 +127,7 @@ SINGLE_BATTLE_TEST("Conversion 2's type change considers dynamic type moves")
SINGLE_BATTLE_TEST("Conversion 2's type change considers move types changed by Normalize and Electrify")
{
GIVEN {
WITH_CONFIG(CONFIG_UPDATED_CONVERSION_2, GEN_5);
WITH_CONFIG(B_UPDATED_CONVERSION_2, GEN_5);
PLAYER(SPECIES_WOBBUFFET) { Ability(ABILITY_NORMALIZE); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
@ -158,7 +158,7 @@ SINGLE_BATTLE_TEST("Conversion 2's type change considers move types changed by N
SINGLE_BATTLE_TEST("Conversion 2's type change fails targeting Struggle (Gen 5+)")
{
GIVEN {
WITH_CONFIG(CONFIG_UPDATED_CONVERSION_2, GEN_5);
WITH_CONFIG(B_UPDATED_CONVERSION_2, GEN_5);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {
@ -176,7 +176,7 @@ SINGLE_BATTLE_TEST("Conversion 2's type change fails targeting Struggle (Gen 5+)
SINGLE_BATTLE_TEST("Conversion 2 fails if the move used is of typeless damage (Gen 5+)")
{
GIVEN {
WITH_CONFIG(CONFIG_UPDATED_CONVERSION_2, GEN_5);
WITH_CONFIG(B_UPDATED_CONVERSION_2, GEN_5);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_ENTEI);
} WHEN {
@ -228,7 +228,7 @@ SINGLE_BATTLE_TEST("Conversion 2 fails if used by a Terastallized Pokemon")
SINGLE_BATTLE_TEST("Conversion 2 fails if last hit by a Stellar-type move (Gen 1-4)")
{
GIVEN {
WITH_CONFIG(CONFIG_UPDATED_CONVERSION_2, GEN_4);
WITH_CONFIG(B_UPDATED_CONVERSION_2, GEN_4);
PLAYER(SPECIES_WOBBUFFET) { TeraType(TYPE_STELLAR); }
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {

View File

@ -45,7 +45,7 @@ SINGLE_BATTLE_TEST("Copycat deducts power points from itself, not the copied mov
DOUBLE_BATTLE_TEST("(DYNAMAX) Dynamaxed Pokemon can have their base moves copied by Copycat")
{
GIVEN {
WITH_CONFIG(CONFIG_MEGA_EVO_TURN_ORDER, GEN_7); // TODO: Decouple this config from other gimmicks
WITH_CONFIG(B_MEGA_EVO_TURN_ORDER, GEN_7); // TODO: Decouple this config from other gimmicks
PLAYER(SPECIES_WOBBUFFET);
PLAYER(SPECIES_WYNAUT);
OPPONENT(SPECIES_WOBBUFFET);

View File

@ -81,7 +81,7 @@ DOUBLE_BATTLE_TEST("Court Change swaps entry hazards used by the player")
DOUBLE_BATTLE_TEST("Court Change used by the player swaps Mist, Safeguard, Aurora Veil, Reflect, Light Screen, Tailwind")
{
GIVEN {
WITH_CONFIG(CONFIG_TAILWIND_TURNS, GEN_5);
WITH_CONFIG(B_TAILWIND_TURNS, GEN_5);
PLAYER(SPECIES_WYNAUT);
PLAYER(SPECIES_WYNAUT);
PLAYER(SPECIES_WYNAUT);
@ -120,7 +120,7 @@ DOUBLE_BATTLE_TEST("Court Change used by the player swaps Mist, Safeguard, Auror
DOUBLE_BATTLE_TEST("Court Change used by the opponent swaps Mist, Safeguard, Aurora Veil, Reflect, Light Screen, Tailwind")
{
GIVEN {
WITH_CONFIG(CONFIG_TAILWIND_TURNS, GEN_5);
WITH_CONFIG(B_TAILWIND_TURNS, GEN_5);
PLAYER(SPECIES_WOBBUFFET);
PLAYER(SPECIES_WOBBUFFET);
PLAYER(SPECIES_WOBBUFFET);

View File

@ -59,7 +59,7 @@ SINGLE_BATTLE_TEST("Defog fails if target has minimum evasion stat change")
SINGLE_BATTLE_TEST("Defog lowers evasiveness of target behind Substitute (Gen4)")
{
GIVEN {
WITH_CONFIG(CONFIG_DEFOG_EFFECT_CLEARING, GEN_4);
WITH_CONFIG(B_DEFOG_EFFECT_CLEARING, GEN_4);
PLAYER(SPECIES_WOBBUFFET) { Speed(4); }
OPPONENT(SPECIES_WOBBUFFET) { Speed(5); }
} WHEN {
@ -78,7 +78,7 @@ SINGLE_BATTLE_TEST("Defog lowers evasiveness of target behind Substitute (Gen4)"
SINGLE_BATTLE_TEST("Defog fails if target has minimum evasion stat change behind Substitute (Gen4)")
{
GIVEN {
WITH_CONFIG(CONFIG_DEFOG_EFFECT_CLEARING, GEN_4);
WITH_CONFIG(B_DEFOG_EFFECT_CLEARING, GEN_4);
PLAYER(SPECIES_WOBBUFFET) { Speed(4); }
OPPONENT(SPECIES_WOBBUFFET) { Speed(5); Ability(ABILITY_SIMPLE); }
} WHEN {
@ -105,7 +105,7 @@ SINGLE_BATTLE_TEST("Defog does not lower evasiveness if target behind Substitute
PARAMETRIZE { move = MOVE_CELEBRATE; }
GIVEN {
WITH_CONFIG(CONFIG_DEFOG_EFFECT_CLEARING, GEN_5);
WITH_CONFIG(B_DEFOG_EFFECT_CLEARING, GEN_5);
PLAYER(SPECIES_WOBBUFFET) { Speed(4); }
OPPONENT(SPECIES_WOBBUFFET) { Speed(5); }
} WHEN {
@ -333,7 +333,7 @@ DOUBLE_BATTLE_TEST("Defog removes Stealth Rock and Sticky Web from user's side (
PARAMETRIZE { move = MOVE_DEFOG; config = GEN_5; }
PARAMETRIZE { move = MOVE_DEFOG; config = GEN_6; }
GIVEN {
WITH_CONFIG(CONFIG_DEFOG_EFFECT_CLEARING, config);
WITH_CONFIG(B_DEFOG_EFFECT_CLEARING, config);
PLAYER(SPECIES_WOBBUFFET) { Speed(4); }
PLAYER(SPECIES_WOBBUFFET) { Speed(3); }
PLAYER(SPECIES_WOBBUFFET) { Speed(3); }
@ -417,7 +417,7 @@ SINGLE_BATTLE_TEST("Defog removes Spikes from user's side (Gen 6+)")
PARAMETRIZE { move = MOVE_DEFOG; config = GEN_5; }
PARAMETRIZE { move = MOVE_DEFOG; config = GEN_6; }
GIVEN {
WITH_CONFIG(CONFIG_DEFOG_EFFECT_CLEARING, config);
WITH_CONFIG(B_DEFOG_EFFECT_CLEARING, config);
PLAYER(SPECIES_WOBBUFFET) { Speed(2); }
PLAYER(SPECIES_WOBBUFFET) { Speed(2); }
OPPONENT(SPECIES_WOBBUFFET) { Speed(5); }
@ -457,7 +457,7 @@ SINGLE_BATTLE_TEST("Defog removes terrain (Gen 8+)")
PARAMETRIZE { move = MOVE_MISTY_TERRAIN; config = GEN_8; }
PARAMETRIZE { move = MOVE_GRASSY_TERRAIN; config = GEN_8; }
GIVEN {
WITH_CONFIG(CONFIG_DEFOG_EFFECT_CLEARING, config);
WITH_CONFIG(B_DEFOG_EFFECT_CLEARING, config);
PLAYER(SPECIES_WOBBUFFET) { Speed(50); }
OPPONENT(SPECIES_WOBBUFFET) { Speed(5); }
} WHEN {
@ -534,7 +534,7 @@ SINGLE_BATTLE_TEST("Defog removes Toxic Spikes from user's side (Gen 6+)")
PARAMETRIZE { move = MOVE_DEFOG; config = GEN_5; }
PARAMETRIZE { move = MOVE_DEFOG; config = GEN_6; }
GIVEN {
WITH_CONFIG(CONFIG_DEFOG_EFFECT_CLEARING, config);
WITH_CONFIG(B_DEFOG_EFFECT_CLEARING, config);
PLAYER(SPECIES_WOBBUFFET) { Speed(5); }
OPPONENT(SPECIES_WOBBUFFET) { Speed(2); }
OPPONENT(SPECIES_WOBBUFFET) { Speed(2); }
@ -650,7 +650,7 @@ DOUBLE_BATTLE_TEST("Defog removes everything it can")
PARAMETRIZE { config = GEN_5; }
PARAMETRIZE { config = GEN_6; }
GIVEN {
WITH_CONFIG(CONFIG_DEFOG_EFFECT_CLEARING, config);
WITH_CONFIG(B_DEFOG_EFFECT_CLEARING, config);
ASSUME(GetMoveEffect(MOVE_HAIL) == EFFECT_HAIL);
ASSUME(GetSpeciesType(SPECIES_GLALIE, 0) == TYPE_ICE);
PLAYER(SPECIES_GLALIE) { Speed(4); }
@ -728,7 +728,7 @@ SINGLE_BATTLE_TEST("Defog is used on the correct side if opposing mon is behind
PARAMETRIZE { config = GEN_4; }
PARAMETRIZE { config = GEN_5; }
GIVEN {
WITH_CONFIG(CONFIG_DEFOG_EFFECT_CLEARING, config);
WITH_CONFIG(B_DEFOG_EFFECT_CLEARING, config);
PLAYER(SPECIES_WOBBUFFET);
OPPONENT(SPECIES_WOBBUFFET);
} WHEN {

View File

@ -30,7 +30,7 @@ SINGLE_BATTLE_TEST("Destiny Bond faints the opposing mon if it fainted from the
SINGLE_BATTLE_TEST("Destiny Bond doesn't fail if used sequentially (Gen2-6)")
{
GIVEN {
WITH_CONFIG(CONFIG_DESTINY_BOND_FAIL, GEN_6);
WITH_CONFIG(B_DESTINY_BOND_FAIL, GEN_6);
PLAYER(SPECIES_ZIGZAGOON);
OPPONENT(SPECIES_ZIGZAGOON);
OPPONENT(SPECIES_ZIGZAGOON);
@ -48,7 +48,7 @@ SINGLE_BATTLE_TEST("Destiny Bond doesn't fail if used sequentially (Gen2-6)")
SINGLE_BATTLE_TEST("Destiny Bond fails if used sequentially (Gen7+)")
{
GIVEN {
WITH_CONFIG(CONFIG_DESTINY_BOND_FAIL, GEN_7);
WITH_CONFIG(B_DESTINY_BOND_FAIL, GEN_7);
PLAYER(SPECIES_ZIGZAGOON);
OPPONENT(SPECIES_ZIGZAGOON);
OPPONENT(SPECIES_ZIGZAGOON);
@ -66,7 +66,7 @@ SINGLE_BATTLE_TEST("Destiny Bond fails if used sequentially (Gen7+)")
SINGLE_BATTLE_TEST("Destiny Bond does not fail if used repeatedly separated by other moves (Gen7+)")
{
GIVEN {
WITH_CONFIG(CONFIG_DESTINY_BOND_FAIL, GEN_7);
WITH_CONFIG(B_DESTINY_BOND_FAIL, GEN_7);
PLAYER(SPECIES_ZIGZAGOON);
OPPONENT(SPECIES_ZIGZAGOON);
OPPONENT(SPECIES_ZIGZAGOON);
@ -85,7 +85,7 @@ SINGLE_BATTLE_TEST("Destiny Bond does not fail if used repeatedly separated by o
SINGLE_BATTLE_TEST("Destiny Bond does not fail if used after failing (Gen7+)")
{
GIVEN {
WITH_CONFIG(CONFIG_DESTINY_BOND_FAIL, GEN_7);
WITH_CONFIG(B_DESTINY_BOND_FAIL, GEN_7);
PLAYER(SPECIES_ZIGZAGOON);
OPPONENT(SPECIES_ZIGZAGOON);
OPPONENT(SPECIES_ZIGZAGOON);

View File

@ -28,7 +28,7 @@ DOUBLE_BATTLE_TEST("Dragon Cheer increases critical hit ratio by 1 on non-Dragon
}
PASSES_RANDOMLY(1, chance, RNG_CRITICAL_HIT);
GIVEN {
WITH_CONFIG(CONFIG_CRIT_CHANCE, genConfig);
WITH_CONFIG(B_CRIT_CHANCE, genConfig);
ASSUME(GetMoveCriticalHitStage(MOVE_SCRATCH) == 0);
PLAYER(SPECIES_WOBBUFFET);
PLAYER(SPECIES_WOBBUFFET);
@ -62,7 +62,7 @@ DOUBLE_BATTLE_TEST("Dragon Cheer increases critical hit ratio by 2 on Dragon typ
}
PASSES_RANDOMLY(passes, trials, RNG_CRITICAL_HIT);
GIVEN {
WITH_CONFIG(CONFIG_CRIT_CHANCE, genConfig);
WITH_CONFIG(B_CRIT_CHANCE, genConfig);
ASSUME(GetMoveCriticalHitStage(MOVE_SCRATCH) == 0);
ASSUME(GetSpeciesBaseSpeed(SPECIES_DRATINI) == 50);
PLAYER(SPECIES_WOBBUFFET);
@ -126,6 +126,3 @@ AI_DOUBLE_BATTLE_TEST("AI uses Dragon Cheer")
TURN { NOT_EXPECT_MOVE(opponentLeft, MOVE_DRAGON_CHEER); }
}
}

Some files were not shown because too many files have changed in this diff Show More