Merge pull request #2055 from AsparagusEduardo/BE_configs

Once again, Battle Configs
This commit is contained in:
ghoulslash 2022-05-07 11:31:25 -04:00 committed by GitHub
commit 9fa4d916d3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 69 additions and 10 deletions

View File

@ -2152,7 +2152,9 @@ BattleScript_GrowthDoMoveAnim::
waitanimation
setbyte sSTAT_ANIM_PLAYED, FALSE
playstatchangeanimation BS_ATTACKER, BIT_ATK | BIT_SPATK, 0
.if B_GROWTH_UNDER_SUN >= GEN_5
jumpifweatheraffected BS_ATTACKER, B_WEATHER_SUN, BattleScript_GrowthAtk2
.endif
setstatchanger STAT_ATK, 1, FALSE
goto BattleScript_GrowthAtk
BattleScript_GrowthAtk2:
@ -2163,7 +2165,9 @@ BattleScript_GrowthAtk:
printfromtable gStatUpStringIds
waitmessage B_WAIT_TIME_LONG
BattleScript_GrowthTrySpAtk::
.if B_GROWTH_UNDER_SUN >= GEN_5
jumpifweatheraffected BS_ATTACKER, B_WEATHER_SUN, BattleScript_GrowthSpAtk2
.endif
setstatchanger STAT_SPATK, 1, FALSE
goto BattleScript_GrowthSpAtk
BattleScript_GrowthSpAtk2:
@ -4584,7 +4588,11 @@ BattleScript_NightmareWorked::
BattleScript_EffectMinimize::
attackcanceler
setminimize
.if B_MINIMIZE_EVASION >= GEN_5
setstatchanger STAT_EVASION, 2, FALSE
.else
setstatchanger STAT_EVASION, 1, FALSE
.endif
goto BattleScript_EffectStatUpAfterAtkCanceler
BattleScript_EffectCurse::

View File

@ -99,7 +99,7 @@
#endif
// Calculation settings
#define B_CRIT_CHANCE GEN_7 // Chances of a critical hit landing. See CalcCritChanceStage.
#define B_CRIT_CHANCE GEN_7 // Chances of a critical hit landing. See CalcCritChanceStage. Gen6+ chances guarantee that Farfetch'd and Sirfetch'd always get critical hits while holding a Leek and using high-crit ratio moves.
#define B_CRIT_MULTIPLIER GEN_7 // In Gen6+, critical hits multiply damage by 1.5 instead of 2.
#define B_PARALYSIS_SPEED GEN_7 // In Gen7+, Speed is decreased by 50% instead of 75%.
#define B_CONFUSION_SELF_DMG_CHANCE GEN_7 // In Gen7+, confusion has a 33.3% of self-damage, instead of 50%.
@ -116,6 +116,7 @@
// Damage settings
#define B_BURN_DAMAGE GEN_7 // In Gen7+, burn damage is 1/16th of max HP instead of 1/8th.
#define B_BURN_FACADE_DMG GEN_7 // In Gen6+, burn's effect of lowering the Attack stat no longer applies to Facade.
#define B_BINDING_DAMAGE GEN_7 // In Gen6+, binding damage is 1/8 of max HP instead of 1/16. (With Binding Band, 1/6 and 1/8 respectively.)
#define B_PSYWAVE_DMG GEN_7 // Psywave's damage formula. See Cmd_psywavedamageeffect.
#define B_PAYBACK_SWITCH_BOOST GEN_7 // In Gen5+, if the opponent switches out, Payback's damage will no longer be doubled.
@ -152,16 +153,18 @@
#define B_RECOIL_IF_MISS_DMG GEN_7 // In Gen5+, Jump Kick and High Jump Kick will always do half of the user's max HP when missing.
#define B_KLUTZ_FLING_INTERACTION GEN_7 // In Gen5+, Pokémon with the Klutz ability can't use Fling.
#define B_UPDATED_CONVERSION GEN_7 // In Gen6+, Conversion changes the user's type to match their first move's. Before, it would choose a move at random.
#define B_PP_REDUCED_BY_SPITE GEN_7 // In Gen4+, Spite reduces the foe's last move's PP by 4, instead of 2 to 5.
#define B_MINIMIZE_EVASION GEN_7 // In Gen5+, Minimize raises evasion by 2 stages instead of 1.
// Move accuracy settings
#define B_TOXIC_NEVER_MISS GEN_7 // In Gen6+, if Toxic is used by a Poison-type Pokémon, it will never miss.
#define B_MINIMIZE_DMG_ACC GEN_7 // In Gen6+, moves that causes double damage to minimized Pokémon will also skip accuracy checks.
#define B_BLIZZARD_HAIL GEN_7 // In Gen4+, Blizzard bypasses accuracy checks if it's hailing.
#define B_SHEER_COLD_ACC GEN_7 // In Gen7+, Sheer Cold's base chance of hitting is reduced to 20% if the user isn't Ice-typed.
// Other move settings
#define B_SOUND_SUBSTITUTE GEN_7 // In Gen6+, sound moves bypass Substitute.
#define B_INCINERATE_GEMS GEN_7 // In Gen6+, Incinerate can destroy Gems.
#define B_PP_REDUCED_BY_SPITE GEN_7 // In Gen4+, Spite reduces the foe's last move's PP by 4, instead of 2 to 5.
#define B_CAN_SPITE_FAIL GEN_7 // In Gen4+, Spite can no longer fail if the foe's last move only has 1 remaining PP.
#define B_CRASH_IF_TARGET_IMMUNE GEN_7 // In Gen4+, The user of Jump Kick or High Jump Kick will "keep going and crash" if it attacks a target that is immune to the move.
#define B_MEMENTO_FAIL GEN_7 // In Gen4+, Memento fails if there is no target or if the target is protected or behind substitute. But not if Atk/Sp. Atk are at -6.
@ -172,6 +175,8 @@
#define B_RAMPAGE_CANCELLING GEN_7 // In Gen5+, a failed Thrash, etc, will cancel except on its last turn.
#define B_HEAL_BLOCKING GEN_7 // In Gen5+, Heal Block prevents healing by Black Sludge, Leftovers, Shell Bell. Affected Pokémon will not consume held HP-restoring Berries or Berry Juice.
// Draining abilities will not heal but will prevent damage. In Gen6+, Heal Block prevents the use of most HP-draining moves.
#define B_ROOTED_GROUNDING GEN_7 // In Gen4+, Ingrain causes the affected Pokémon to become grounded.
#define B_GROWTH_UNDER_SUN GEN_7 // In Gen5+, Growth's effects are doubled when under the effects of the sun.
// Ability settings
#define B_EXPANDED_ABILITY_NAMES TRUE // If TRUE, ability names are increased from 12 characters to 16 characters.
@ -184,6 +189,7 @@
#define B_SYNCHRONIZE_NATURE GEN_8 // In Gen8, if a Pokémon with Synchronize is leading the party, it's 100% guaranteed that wild Pokémon will have the same ability, as opposed to 50% previously.
#define B_SYNCHRONIZE_TOXIC GEN_8 // In Gen5+, if a Pokémon with Synchronize is badly poisoned, the opponent will also become badly poisoned. Previously, the opponent would become regular poisoned.
#define B_UPDATED_INTIMIDATE GEN_8 // In Gen8, Intimidate doesn't work on opponents with the Inner Focus, Scrappy, Own Tempo or Oblivious abilities. It also activates Rattled.
#define B_OBLIVIOUS_TAUNT GEN_7 // In Gen6+, Pokémon with Oblivious can't be taunted.
// Item settings
#define B_HP_BERRIES GEN_7 // In Gen4+, berries which restore hp activate immediately after HP drops to half. In Gen3, the effect occurs at the end of the turn.
@ -203,7 +209,6 @@
#define B_HEAVY_BALL_MODIFIER GEN_7 // In Gen7+, Heavy Ball's ranges change. See Cmd_handleballthrow.
#define B_DREAM_BALL_MODIFIER GEN_8 // In Gen8, Dream Ball's catch multiplier is x4 when the target is asleep or has the ability Comatose.
#define B_SERENE_GRACE_BOOST GEN_7 // In Gen5+, Serene Grace boosts the added flinch chance of King's Rock and Razor Fang.
#define B_LEEK_ALWAYS_CRIT GEN_7 // In Gen6+, if a Farfetch'd or Sirfetch'd holding a Leek use a move with increased Critical Hit ratio, it will always result in a Critical Hit.
// Flag settings
// To use the following features in scripting, replace the 0s with the flag ID you're assigning it to.

View File

@ -1499,6 +1499,10 @@ bool32 ShouldTryOHKO(u8 battlerAtk, u8 battlerDef, u16 atkAbility, u16 defAbilit
else // test the odds
{
u16 odds = accuracy + (gBattleMons[battlerAtk].level - gBattleMons[battlerDef].level);
#if B_SHEER_COLD_ACC >= GEN_7
if (gCurrentMove == MOVE_SHEER_COLD && !IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_ICE))
odds -= 10;
#endif
if (Random() % 100 + 1 < odds && gBattleMons[battlerAtk].level >= gBattleMons[battlerDef].level)
return TRUE;
}

View File

@ -1874,11 +1874,7 @@ s32 CalcCritChanceStage(u8 battlerAtk, u8 battlerDef, u32 move, bool32 recordAbi
else if (gStatuses3[battlerAtk] & STATUS3_LASER_FOCUS
|| gBattleMoves[move].effect == EFFECT_ALWAYS_CRIT
|| (abilityAtk == ABILITY_MERCILESS && gBattleMons[battlerDef].status1 & STATUS1_PSN_ANY)
|| move == MOVE_SURGING_STRIKES
#if B_LEEK_ALWAYS_CRIT >= GEN_6
|| ((gBattleMoves[gCurrentMove].flags & FLAG_HIGH_CRIT) && BENEFITS_FROM_LEEK(battlerAtk, holdEffectAtk))
#endif
)
|| move == MOVE_SURGING_STRIKES)
{
critChance = -2;
}
@ -10898,6 +10894,10 @@ static void Cmd_tryKO(void)
else
{
u16 odds = gBattleMoves[gCurrentMove].accuracy + (gBattleMons[gBattlerAttacker].level - gBattleMons[gBattlerTarget].level);
#if B_SHEER_COLD_ACC >= GEN_7
if (gCurrentMove == MOVE_SHEER_COLD && !IS_BATTLER_OF_TYPE(gBattlerAttacker, TYPE_ICE))
odds -= 10;
#endif
if (Random() % 100 + 1 < odds && gBattleMons[gBattlerAttacker].level >= gBattleMons[gBattlerTarget].level)
lands = TRUE;
}
@ -12470,13 +12470,16 @@ static void Cmd_jumpifnodamage(void)
static void Cmd_settaunt(void)
{
#if B_OBLIVIOUS_TAUNT >= GEN_6
if (GetBattlerAbility(gBattlerTarget) == ABILITY_OBLIVIOUS)
{
gBattlescriptCurrInstr = BattleScript_NotAffectedAbilityPopUp;
gLastUsedAbility = ABILITY_OBLIVIOUS;
RecordAbilityBattle(gBattlerTarget, ABILITY_OBLIVIOUS);
}
else if (gDisableStructs[gBattlerTarget].tauntTimer == 0)
else
#endif
if (gDisableStructs[gBattlerTarget].tauntTimer == 0)
{
#if B_TAUNT_TURNS >= GEN_5
u8 turns = 4;

View File

@ -7768,8 +7768,10 @@ bool32 IsBattlerGrounded(u8 battlerId)
return TRUE;
else if (gFieldStatuses & STATUS_FIELD_GRAVITY)
return TRUE;
#if B_ROOTED_GROUNDING >= GEN_4
else if (gStatuses3[battlerId] & STATUS3_ROOTED)
return TRUE;
#endif
else if (gStatuses3[battlerId] & STATUS3_SMACKED_DOWN)
return TRUE;
@ -8910,7 +8912,8 @@ static u32 CalcFinalDmg(u32 dmg, u16 move, u8 battlerAtk, u8 battlerDef, u8 move
// check burn
if (gBattleMons[battlerAtk].status1 & STATUS1_BURN && IS_MOVE_PHYSICAL(move)
&& gBattleMoves[move].effect != EFFECT_FACADE && abilityAtk != ABILITY_GUTS)
&& (gBattleMoves[move].effect != EFFECT_FACADE || B_BURN_FACADE_DMG < GEN_6)
&& abilityAtk != ABILITY_GUTS)
dmg = ApplyModifier(UQ_4_12(0.5), dmg);
// check sunny/rain weather

View File

@ -79,7 +79,11 @@ static const u8 sFlyDescription[] = _(
static const u8 sBindDescription[] = _(
"Binds and squeezes the foe\n"
#if B_BINDING_TURNS >= GEN_5
"for 4 or 5 turns.");
#else
"for 2 to 5 turns.");
#endif
static const u8 sSlamDescription[] = _(
"Slams the foe with a long\n"
@ -139,7 +143,11 @@ static const u8 sBodySlamDescription[] = _(
static const u8 sWrapDescription[] = _(
"Wraps and squeezes the foe\n"
#if B_BINDING_TURNS >= GEN_5
"4 or 5 times with vines, etc.");
#else
"2 to 5 times with vines, etc.");
#endif
static const u8 sTakeDownDescription[] = _(
"A reckless charge attack\n"
@ -331,7 +339,11 @@ static const u8 sDragonRageDescription[] = _(
static const u8 sFireSpinDescription[] = _(
"Traps the foe in a ring of\n"
#if B_BINDING_TURNS >= GEN_5
"fire for 4 or 5 turns.");
#else
"fire for 2 to 5 turns.");
#endif
static const u8 sThunderShockDescription[] = _(
"An electrical attack that\n"
@ -511,7 +523,11 @@ static const u8 sWaterfallDescription[] = _(
static const u8 sClampDescription[] = _(
"Traps and squeezes the\n"
#if B_BINDING_TURNS >= GEN_5
"foe for 4 or 5 turns.");
#else
"foe for 2 to 5 turns.");
#endif
static const u8 sSwiftDescription[] = _(
"Sprays star-shaped rays\n"
@ -999,7 +1015,11 @@ static const u8 sRockSmashDescription[] = _(
static const u8 sWhirlpoolDescription[] = _(
"Traps and hurts the foe in\n"
#if B_BINDING_TURNS >= GEN_5
"a whirlpool for 4 or 5 turns.");
#else
"a whirlpool for 2 to 5 turns.");
#endif
static const u8 sBeatUpDescription[] = _(
"Summons party Pokémon to\n"
@ -1311,7 +1331,11 @@ static const u8 sSkyUppercutDescription[] = _(
static const u8 sSandTombDescription[] = _(
"Traps and hurts the foe in\n"
#if B_BINDING_TURNS >= GEN_5
"quicksand for 4 or 5 turns.");
#else
"quicksand for 2 to 5 turns.");
#endif
static const u8 sSheerColdDescription[] = _(
"A chilling attack that\n"
@ -1815,7 +1839,11 @@ static const u8 sSpacialRendDescription[] = _(
static const u8 sMagmaStormDescription[] = _(
"Traps the foe in a vortex\n"
#if B_BINDING_TURNS >= GEN_5
"of fire for 4 or 5 turns.");
#else
"of fire for 2 to 5 turns.");
#endif
static const u8 sDarkVoidDescription[] = _(
"Drags the foe into total\n"
@ -2367,7 +2395,11 @@ static const u8 sNuzzleDescription[] = _(
static const u8 sInfestationDescription[] = _(
"The foe is infested and\n"
#if B_BINDING_TURNS >= GEN_5
"attacked for 4 or 5 turns.");
#else
"attacked for 2 to 5 turns.");
#endif
static const u8 sPowerUpPunchDescription[] = _(
"A hard punch that raises\n"
@ -2912,7 +2944,11 @@ static const u8 sSurgingStrikesDescription[] = _(
static const u8 sThunderCageDescription[] = _(
"Traps the foe in a cage of\n"
#if B_BINDING_TURNS >= GEN_5
"electricity for 4 or 5 turns.");
#else
"electricity for 2 to 5 turns.");
#endif
static const u8 sDragonEnergyDescription[] = _(
"The higher the user's HP\n"