From 7018745230a241990f2747fe60e5d2f547908d92 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sat, 23 Mar 2019 17:21:14 +0100 Subject: [PATCH] Fix Defiant stat raise by allies --- include/battle.h | 1 + src/battle_script_commands.c | 2 ++ src/battle_util.c | 7 ++++--- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/include/battle.h b/include/battle.h index 09a8916a6d..4f45972945 100644 --- a/include/battle.h +++ b/include/battle.h @@ -226,6 +226,7 @@ struct SpecialStatus s32 specialDmg; u8 physicalBattlerId; u8 specialBattlerId; + u8 changedStatsBattlerId; // Battler that was responsible for the latest stat change. Can be self. }; struct SideTimer diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 2599d11cfe..a5b6e46f45 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -7808,6 +7808,8 @@ static u32 ChangeStatBuffs(s8 statValue, u32 statId, u32 flags, const u8 *BS_ptr else gActiveBattler = gBattlerTarget; + gSpecialStatuses[gActiveBattler].changedStatsBattlerId = gBattlerAttacker; + flags &= ~(MOVE_EFFECT_AFFECTS_USER); if (flags & MOVE_EFFECT_CERTAIN) diff --git a/src/battle_util.c b/src/battle_util.c index 6741c51e95..901edb152e 100644 --- a/src/battle_util.c +++ b/src/battle_util.c @@ -489,9 +489,10 @@ void PrepareStringBattle(u16 stringId, u8 battler) stringId = STRINGID_STATSWONTDECREASE2; // Check Defiant and Competitive stat raise whenever a stat is lowered. - else if (((GetBattlerAbility(gBattlerTarget) == ABILITY_DEFIANT && gBattleMons[gBattlerTarget].statStages[STAT_ATK] != 12) - || (GetBattlerAbility(gBattlerTarget) == ABILITY_COMPETITIVE && gBattleMons[gBattlerTarget].statStages[STAT_SPATK] != 12)) - && stringId == STRINGID_PKMNSSTATCHANGED4) + else if (stringId == STRINGID_PKMNSSTATCHANGED4 + && ((GetBattlerAbility(gBattlerTarget) == ABILITY_DEFIANT && gBattleMons[gBattlerTarget].statStages[STAT_ATK] != 12) + || (GetBattlerAbility(gBattlerTarget) == ABILITY_COMPETITIVE && gBattleMons[gBattlerTarget].statStages[STAT_SPATK] != 12)) + && gSpecialStatuses[gBattlerTarget].changedStatsBattlerId != BATTLE_PARTNER(gBattlerTarget)) { gBattlerAbility = gBattlerTarget; BattleScriptPushCursor();