From 10ef7f7839f58f303ab9863a7ca48cb5043b83b6 Mon Sep 17 00:00:00 2001 From: PhallenTree <168426989+PhallenTree@users.noreply.github.com> Date: Sun, 23 Nov 2025 16:29:50 +0000 Subject: [PATCH] More Neutralizing Gas cleanup (#8335) --- data/battle_scripts_1.s | 6 ------ include/battle.h | 2 +- include/battle_scripts.h | 1 - src/battle_script_commands.c | 14 +++++--------- src/battle_util.c | 4 ++-- 5 files changed, 8 insertions(+), 19 deletions(-) diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 8a93eb9436..93e928c880 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -8112,12 +8112,6 @@ BattleScript_SwitchInAbilityMsg:: waitmessage B_WAIT_TIME_LONG end3 -BattleScript_SwitchInAbilityMsgRet:: - call BattleScript_AbilityPopUp - printfromtable gSwitchInAbilityStringIds - waitmessage B_WAIT_TIME_LONG - return - BattleScript_ActivateAsOne:: call BattleScript_AbilityPopUp printfromtable gSwitchInAbilityStringIds diff --git a/include/battle.h b/include/battle.h index 864b6a1217..fb9fcbc695 100755 --- a/include/battle.h +++ b/include/battle.h @@ -197,8 +197,8 @@ struct SpecialStatus u8 switchInItemDone:1; u8 instructedChosenTarget:3; u8 berryReduced:1; - u8 announceNeutralizingGas:1; // See Cmd_switchineffects u8 neutralizingGasRemoved:1; // See VARIOUS_TRY_END_NEUTRALIZING_GAS + u8 padding:1; // End of byte u8 gemParam; // End of byte diff --git a/include/battle_scripts.h b/include/battle_scripts.h index 16a07e971a..b5d9d25109 100644 --- a/include/battle_scripts.h +++ b/include/battle_scripts.h @@ -287,7 +287,6 @@ extern const u8 BattleScript_AttackerAbilityStatRaiseEnd3[]; extern const u8 BattleScript_PoisonHealActivates[]; extern const u8 BattleScript_BadDreamsActivates[]; extern const u8 BattleScript_SwitchInAbilityMsg[]; -extern const u8 BattleScript_SwitchInAbilityMsgRet[]; extern const u8 BattleScript_ToxicSpikesPoisoned[]; extern const u8 BattleScript_ToxicSpikesBadlyPoisoned[]; extern const u8 BattleScript_ToxicSpikesAbsorbed[]; diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index dcc03aa74e..e5d9d0a588 100755 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -7873,13 +7873,9 @@ static bool32 DoSwitchInEffectsForBattler(u32 battler) u32 i = 0; u32 side = GetBattlerSide(battler); // Neutralizing Gas announces itself before hazards - if (gBattleMons[battler].ability == ABILITY_NEUTRALIZING_GAS && gSpecialStatuses[battler].announceNeutralizingGas == 0) + if (AbilityBattleEffects(ABILITYEFFECT_NEUTRALIZINGGAS, battler, 0, 0, 0)) { - gBattleCommunication[MULTISTRING_CHOOSER] = B_MSG_SWITCHIN_NEUTRALIZING_GAS; - gSpecialStatuses[battler].announceNeutralizingGas = TRUE; - gDisableStructs[battler].neutralizingGas = TRUE; - gBattlerAbility = battler; - BattleScriptCall(BattleScript_SwitchInAbilityMsgRet); + return TRUE; } // Healing Wish activates before hazards. // Starting from Gen8 - it heals only pokemon which can be healed. In gens 5,6,7 the effect activates anyways. @@ -13103,7 +13099,7 @@ static void Cmd_setgastroacid(void) } else { - if (gBattleMons[gBattlerTarget].ability == ABILITY_NEUTRALIZING_GAS) + if (gDisableStructs[gBattlerTarget].neutralizingGas) gSpecialStatuses[gBattlerTarget].neutralizingGasRemoved = TRUE; gBattleMons[gBattlerTarget].volatiles.gastroAcid = TRUE; @@ -14681,7 +14677,7 @@ static void Cmd_tryworryseed(void) } else { - if (gBattleMons[gBattlerTarget].ability == ABILITY_NEUTRALIZING_GAS) + if (gDisableStructs[gBattlerTarget].neutralizingGas) gSpecialStatuses[gBattlerTarget].neutralizingGasRemoved = TRUE; gBattleScripting.abilityPopupOverwrite = gBattleMons[gBattlerTarget].ability; @@ -17522,7 +17518,7 @@ void BS_SetSimpleBeam(void) } else { - if (gBattleMons[gBattlerTarget].ability == ABILITY_NEUTRALIZING_GAS) + if (gDisableStructs[gBattlerTarget].neutralizingGas) gSpecialStatuses[gBattlerTarget].neutralizingGasRemoved = TRUE; gBattleScripting.abilityPopupOverwrite = gBattleMons[gBattlerTarget].ability; diff --git a/src/battle_util.c b/src/battle_util.c index ecf836d882..9c569cd989 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -5185,7 +5185,7 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32 case ABILITYEFFECT_NEUTRALIZINGGAS: // Prints message only. separate from ABILITYEFFECT_ON_SWITCHIN bc activates before entry hazards - if (gBattleMons[battler].ability == ABILITY_NEUTRALIZING_GAS && !gDisableStructs[battler].neutralizingGas) + if (gLastUsedAbility == ABILITY_NEUTRALIZING_GAS && !gDisableStructs[battler].neutralizingGas) { gDisableStructs[battler].neutralizingGas = TRUE; gBattlerAbility = battler; @@ -5386,7 +5386,7 @@ u32 GetBattlerAbilityInternal(u32 battler, u32 ignoreMoldBreaker, u32 noAbilityS if (!hasAbilityShield && IsNeutralizingGasOnField() - && !gDisableStructs[battler].neutralizingGas) + && (gBattleMons[battler].ability != ABILITY_NEUTRALIZING_GAS || gBattleMons[battler].volatiles.gastroAcid)) return ABILITY_NONE; if (CanBreakThroughAbility(gBattlerAttacker, battler, gBattleMons[gBattlerAttacker].ability, hasAbilityShield, ignoreMoldBreaker))