Simplifying calls to IsBattlerTrapped; treats being unable to switch as trappedness (#7671)
This commit is contained in:
parent
927f1898bb
commit
0a0d574998
@ -2979,7 +2979,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
||||
else if (GetBattleMoveCategory(move) == DAMAGE_CATEGORY_STATUS
|
||||
&& (CountUsablePartyMons(battlerAtk) < 1
|
||||
|| gAiLogicData->mostSuitableMonId[battlerAtk] == PARTY_SIZE
|
||||
|| (!AI_CanBattlerEscape(battlerAtk) && IsBattlerTrapped(battlerDef, battlerAtk))))
|
||||
|| IsBattlerTrapped(battlerDef, battlerAtk)))
|
||||
ADJUST_SCORE(-30);
|
||||
}
|
||||
|
||||
@ -4432,7 +4432,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move)
|
||||
break;
|
||||
ADJUST_SCORE(GOOD_EFFECT);
|
||||
if (!HasDamagingMove(battlerDef)
|
||||
|| (!AI_CanBattlerEscape(battlerDef) && IsBattlerTrapped(battlerAtk, battlerDef))
|
||||
|| IsBattlerTrapped(battlerAtk, battlerDef)
|
||||
|| aiData->holdEffects[battlerAtk] == HOLD_EFFECT_BIG_ROOT)
|
||||
ADJUST_SCORE(DECENT_EFFECT);
|
||||
break;
|
||||
@ -4542,7 +4542,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move)
|
||||
case EFFECT_CURSE:
|
||||
if (IS_BATTLER_OF_TYPE(battlerAtk, TYPE_GHOST))
|
||||
{
|
||||
if (!AI_CanBattlerEscape(battlerDef) && IsBattlerTrapped(battlerAtk, battlerDef))
|
||||
if (IsBattlerTrapped(battlerAtk, battlerDef))
|
||||
ADJUST_SCORE(GOOD_EFFECT);
|
||||
else
|
||||
ADJUST_SCORE(WEAK_EFFECT);
|
||||
@ -4640,7 +4640,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move)
|
||||
ADJUST_SCORE(DECENT_EFFECT);
|
||||
break;
|
||||
case EFFECT_PERISH_SONG:
|
||||
if (!AI_CanBattlerEscape(battlerDef) && IsBattlerTrapped(battlerAtk, battlerDef))
|
||||
if (IsBattlerTrapped(battlerAtk, battlerDef))
|
||||
ADJUST_SCORE(GOOD_EFFECT);
|
||||
break;
|
||||
case EFFECT_SANDSTORM:
|
||||
@ -4799,7 +4799,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move)
|
||||
break; // Don't use if the attract won't have a change to activate
|
||||
if (gBattleMons[battlerDef].status1 & STATUS1_ANY
|
||||
|| gBattleMons[battlerDef].volatiles.confusionTurns > 0
|
||||
|| (!AI_CanBattlerEscape(battlerDef) && IsBattlerTrapped(battlerAtk, battlerDef)))
|
||||
|| IsBattlerTrapped(battlerAtk, battlerDef))
|
||||
ADJUST_SCORE(GOOD_EFFECT);
|
||||
else
|
||||
ADJUST_SCORE(DECENT_EFFECT);
|
||||
@ -6049,7 +6049,7 @@ static s32 AI_PreferBatonPass(u32 battlerAtk, u32 battlerDef, u32 move, s32 scor
|
||||
|| CountUsablePartyMons(battlerAtk) == 0
|
||||
|| !IsBattleMoveStatus(move)
|
||||
|| !HasMoveWithEffect(battlerAtk, EFFECT_BATON_PASS)
|
||||
|| (!AI_CanBattlerEscape(battlerAtk) && IsBattlerTrapped(battlerDef, battlerAtk)))
|
||||
|| IsBattlerTrapped(battlerAtk, battlerDef))
|
||||
return score;
|
||||
|
||||
enum BattleMoveEffects effect = GetMoveEffect(move);
|
||||
|
||||
@ -469,6 +469,9 @@ bool32 AI_CanBattlerEscape(u32 battler)
|
||||
|
||||
bool32 IsBattlerTrapped(u32 battlerAtk, u32 battlerDef)
|
||||
{
|
||||
if (AI_CanBattlerEscape(battlerDef))
|
||||
return FALSE;
|
||||
|
||||
if (gBattleMons[battlerDef].volatiles.wrapped)
|
||||
return TRUE;
|
||||
if (gBattleMons[battlerDef].volatiles.escapePrevention)
|
||||
@ -489,6 +492,9 @@ bool32 IsBattlerTrapped(u32 battlerAtk, u32 battlerDef)
|
||||
&& IS_BATTLER_OF_TYPE(battlerAtk, TYPE_STEEL))
|
||||
return TRUE;
|
||||
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && CountUsablePartyMons(battlerDef) == 0)
|
||||
return TRUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user