Fixes Intrepid Sword/Dauntless Shield boosting after entering while at max stats (#7716)

This commit is contained in:
PhallenTree 2025-09-10 15:38:09 +01:00 committed by GitHub
parent 7a0e5046d1
commit 827dd4a67c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 18 additions and 12 deletions

View File

@ -7920,7 +7920,7 @@ BattleScript_TeraShellDistortingTypeMatchups::
BattleScript_CursedBodyActivates::
call BattleScript_AbilityPopUp
printstring STRINGID_CUSEDBODYDISABLED
printstring STRINGID_CURSEDBODYDISABLED
waitmessage B_WAIT_TIME_LONG
return

View File

@ -480,7 +480,7 @@ enum StringID
STRINGID_HEALINGWISHCAMETRUE,
STRINGID_HEALINGWISHHEALED,
STRINGID_LUNARDANCECAMETRUE,
STRINGID_CUSEDBODYDISABLED,
STRINGID_CURSEDBODYDISABLED,
STRINGID_ATTACKERACQUIREDABILITY,
STRINGID_TARGETABILITYSTATLOWER,
STRINGID_TARGETSTATWONTGOHIGHER,

View File

@ -640,7 +640,7 @@ const u8 *const gBattleStringsTable[STRINGID_COUNT] =
[STRINGID_HEALINGWISHCAMETRUE] = COMPOUND_STRING("The healing wish came true for {B_ATK_NAME_WITH_PREFIX2}!"),
[STRINGID_HEALINGWISHHEALED] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} regained health!"),
[STRINGID_LUNARDANCECAMETRUE] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} became cloaked in mystical moonlight!"),
[STRINGID_CUSEDBODYDISABLED] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1} was disabled by {B_DEF_NAME_WITH_PREFIX2}'s {B_DEF_ABILITY}!"),
[STRINGID_CURSEDBODYDISABLED] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX}'s {B_BUFF1} was disabled by {B_DEF_NAME_WITH_PREFIX2}'s {B_DEF_ABILITY}!"),
[STRINGID_ATTACKERACQUIREDABILITY] = COMPOUND_STRING("{B_ATK_NAME_WITH_PREFIX} acquired {B_ATK_ABILITY}!"),
[STRINGID_TARGETABILITYSTATLOWER] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}'s {B_DEF_ABILITY} lowered its {B_BUFF1}!"),
[STRINGID_TARGETSTATWONTGOHIGHER] = COMPOUND_STRING("{B_DEF_NAME_WITH_PREFIX}'s {B_BUFF1} won't go any higher!"),

View File

@ -3975,27 +3975,33 @@ u32 AbilityBattleEffects(u32 caseID, u32 battler, u32 ability, u32 special, u32
}
break;
case ABILITY_INTREPID_SWORD:
if (!gSpecialStatuses[battler].switchInAbilityDone && CompareStat(battler, STAT_ATK, MAX_STAT_STAGE, CMP_LESS_THAN)
if (!gSpecialStatuses[battler].switchInAbilityDone
&& !GetBattlerPartyState(battler)->intrepidSwordBoost)
{
if (GetGenConfig(GEN_INTREPID_SWORD) == GEN_9)
GetBattlerPartyState(battler)->intrepidSwordBoost = TRUE;
gSpecialStatuses[battler].switchInAbilityDone = TRUE;
SET_STATCHANGER(STAT_ATK, 1, FALSE);
BattleScriptPushCursorAndCallback(BattleScript_BattlerAbilityStatRaiseOnSwitchIn);
effect++;
if (CompareStat(battler, STAT_ATK, MAX_STAT_STAGE, CMP_LESS_THAN))
{
SET_STATCHANGER(STAT_ATK, 1, FALSE);
BattleScriptPushCursorAndCallback(BattleScript_BattlerAbilityStatRaiseOnSwitchIn);
effect++;
}
}
break;
case ABILITY_DAUNTLESS_SHIELD:
if (!gSpecialStatuses[battler].switchInAbilityDone && CompareStat(battler, STAT_DEF, MAX_STAT_STAGE, CMP_LESS_THAN)
if (!gSpecialStatuses[battler].switchInAbilityDone
&& !GetBattlerPartyState(battler)->dauntlessShieldBoost)
{
if (GetGenConfig(GEN_DAUNTLESS_SHIELD) == GEN_9)
GetBattlerPartyState(battler)->dauntlessShieldBoost = TRUE;
gSpecialStatuses[battler].switchInAbilityDone = TRUE;
SET_STATCHANGER(STAT_DEF, 1, FALSE);
BattleScriptPushCursorAndCallback(BattleScript_BattlerAbilityStatRaiseOnSwitchIn);
effect++;
if (CompareStat(battler, STAT_DEF, MAX_STAT_STAGE, CMP_LESS_THAN))
{
SET_STATCHANGER(STAT_DEF, 1, FALSE);
BattleScriptPushCursorAndCallback(BattleScript_BattlerAbilityStatRaiseOnSwitchIn);
effect++;
}
}
break;
case ABILITY_WIND_RIDER:

View File

@ -675,7 +675,7 @@ TEST("Battle strings fit on the battle message window")
case STRINGID_PKMNSXWOREOFF:
case STRINGID_BUFFERENDS:
case STRINGID_FOREWARNACTIVATES:
case STRINGID_CUSEDBODYDISABLED:
case STRINGID_CURSEDBODYDISABLED:
case STRINGID_CURRENTMOVECANTSELECT:
case STRINGID_TARGETISHURTBYSALTCURE:
PREPARE_MOVE_BUFFER(gBattleTextBuff1, longMoveID);