Fix Sleep Clause AI handling of partner sleeping moves (#5761)

Co-authored-by: Alex <93446519+AlexOn1ine@users.noreply.github.com>
This commit is contained in:
Pawkkie 2024-12-02 15:59:05 -05:00 committed by GitHub
parent 7ac7ab8f6f
commit 8eab725485
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -2371,6 +2371,32 @@ bool32 IsSwitchOutEffect(u32 effect)
}
}
static inline bool32 IsMoveSleepClauseTrigger(u32 move)
{
u32 i, effect = gMovesInfo[move].effect;
// Sleeping effects like Sleep Powder, Yawn, Dark Void, etc.
switch (effect)
{
case EFFECT_SLEEP:
case EFFECT_YAWN:
case EFFECT_DARK_VOID:
return TRUE;
}
// Sleeping effects like G-Max Befuddle, G-Max Snooze, etc.
for (i = 0; i < gMovesInfo[move].numAdditionalEffects; i++)
{
switch (gMovesInfo[move].additionalEffects[i].moveEffect)
{
case MAX_EFFECT_EFFECT_SPORE_FOES:
case MAX_EFFECT_YAWN_FOE:
return TRUE;
}
}
return FALSE;
}
bool32 HasDamagingMove(u32 battlerId)
{
u32 i;
@ -3394,13 +3420,9 @@ bool32 PartnerMoveIsSameNoTarget(u32 battlerAtkPartner, u32 move, u32 partnerMov
bool32 PartnerMoveActivatesSleepClause(u32 partnerMove)
{
u32 effect = gMovesInfo[partnerMove].effect;
if (!IsDoubleBattle() || !FlagGet(B_FLAG_SLEEP_CLAUSE))
return FALSE;
if (effect == EFFECT_SLEEP
|| effect == EFFECT_YAWN)
return TRUE;
return FALSE;
return IsMoveSleepClauseTrigger(partnerMove);
}
bool32 ShouldUseWishAromatherapy(u32 battlerAtk, u32 battlerDef, u32 move)