From e2f24bbb3ff9811ecefd2314738f349a429f10b6 Mon Sep 17 00:00:00 2001 From: Alex <93446519+AlexOn1ine@users.noreply.github.com> Date: Mon, 25 Aug 2025 17:37:57 +0200 Subject: [PATCH] Prevents a regression for custom abilties (#7616) --- include/constants/battle.h | 17 +++++++++-------- src/battle_script_commands.c | 4 ++-- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/include/constants/battle.h b/include/constants/battle.h index 0f83eaecae..926023359f 100644 --- a/include/constants/battle.h +++ b/include/constants/battle.h @@ -363,16 +363,17 @@ enum BattleWeather #define B_WEATHER_LOW_LIGHT (B_WEATHER_FOG | B_WEATHER_ICY_ANY | B_WEATHER_RAIN | B_WEATHER_SANDSTORM) #define B_WEATHER_PRIMAL_ANY (B_WEATHER_RAIN_PRIMAL | B_WEATHER_SUN_PRIMAL | B_WEATHER_STRONG_WINDS) +// Explicit numbers until frostbite because those shouldn't be shifted enum __attribute__((packed)) MoveEffect { - MOVE_EFFECT_NONE, - MOVE_EFFECT_SLEEP, - MOVE_EFFECT_POISON, - MOVE_EFFECT_BURN, - MOVE_EFFECT_FREEZE, - MOVE_EFFECT_PARALYSIS, - MOVE_EFFECT_TOXIC, - MOVE_EFFECT_FROSTBITE, + MOVE_EFFECT_NONE = 0, + MOVE_EFFECT_SLEEP = 1, + MOVE_EFFECT_POISON = 2, + MOVE_EFFECT_BURN = 3, + MOVE_EFFECT_FREEZE = 4, + MOVE_EFFECT_PARALYSIS = 5, + MOVE_EFFECT_TOXIC = 6, + MOVE_EFFECT_FROSTBITE = 7, MOVE_EFFECT_CONFUSION, MOVE_EFFECT_FLINCH, MOVE_EFFECT_TRI_ATTACK, diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index c58b85d187..3d8041966f 100755 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -12906,7 +12906,7 @@ static bool32 CanAbilityShieldActivateForBattler(u32 battler) { if (GetBattlerHoldEffectIgnoreAbility(battler, TRUE) != HOLD_EFFECT_ABILITY_SHIELD) return FALSE; - + RecordItemEffectBattle(battler, HOLD_EFFECT_ABILITY_SHIELD); gBattlerAbility = battler; gLastUsedItem = gBattleMons[battler].item; @@ -14534,7 +14534,7 @@ static void Cmd_setnonvolatilestatus(void) switch (cmd->trigger) { case TRIGGER_ON_ABILITY: - if (gBattleScripting.moveEffect == MOVE_EFFECT_CONFUSION) + if (gBattleScripting.moveEffect >= MOVE_EFFECT_CONFUSION) SetMoveEffect(gBattleScripting.battler, gEffectBattler, FALSE, FALSE); else SetNonVolatileStatusCondition(gEffectBattler, gBattleScripting.moveEffect, TRIGGER_ON_ABILITY);