Fix misleading name (#6865)
This commit is contained in:
parent
406fd7ce81
commit
f1c1906324
@ -134,7 +134,7 @@ bool32 HasMove(u32 battlerId, u32 move);
|
||||
bool32 HasOnlyMovesWithCategory(u32 battlerId, u32 category, bool32 onlyOffensive);
|
||||
bool32 HasMoveWithCategory(u32 battler, u32 category);
|
||||
bool32 HasMoveWithType(u32 battler, u32 type);
|
||||
bool32 HasMoveEffect(u32 battlerId, enum BattleMoveEffects moveEffect);
|
||||
bool32 HasMoveWithEffect(u32 battlerId, enum BattleMoveEffects moveEffect);
|
||||
bool32 HasNonVolatileMoveEffect(u32 battlerId, u32 effect);
|
||||
bool32 IsPowerBasedOnStatus(u32 battlerId, enum BattleMoveEffects effect, u32 argument);
|
||||
bool32 HasMoveWithAdditionalEffect(u32 battlerId, u32 moveEffect);
|
||||
|
||||
@ -1105,7 +1105,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
switch(nonVolatileStatus)
|
||||
{
|
||||
case MOVE_EFFECT_POISON:
|
||||
@ -1612,7 +1612,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
||||
|| IsBattlerIncapacitated(battlerDef, abilityDef)
|
||||
|| gBattleMons[battlerDef].status2 & (STATUS2_INFATUATION | STATUS2_CONFUSION)))
|
||||
ADJUST_SCORE(-10);
|
||||
if (HasMoveEffect(battlerAtk, EFFECT_SUBSTITUTE) && !(gBattleMons[battlerAtk].status2 & STATUS2_SUBSTITUTE))
|
||||
if (HasMoveWithEffect(battlerAtk, EFFECT_SUBSTITUTE) && !(gBattleMons[battlerAtk].status2 & STATUS2_SUBSTITUTE))
|
||||
ADJUST_SCORE(-10);
|
||||
if (HasNonVolatileMoveEffect(battlerAtk, MOVE_EFFECT_SLEEP) && ! (gBattleMons[battlerDef].status1 & STATUS1_SLEEP))
|
||||
ADJUST_SCORE(-10);
|
||||
@ -2954,7 +2954,7 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
||||
|
||||
u32 friendlyFireThreshold = GetFriendlyFireKOThreshold(battlerAtk);
|
||||
u32 noOfHitsToKOPartner = GetNoOfHitsToKOBattler(battlerAtk, battlerAtkPartner, gAiThinkingStruct->movesetIndex, AI_ATTACKING);
|
||||
bool32 wouldPartnerFaint = CanIndexMoveFaintTarget(battlerAtk, battlerAtkPartner, gAiThinkingStruct->movesetIndex, AI_ATTACKING)
|
||||
bool32 wouldPartnerFaint = CanIndexMoveFaintTarget(battlerAtk, battlerAtkPartner, gAiThinkingStruct->movesetIndex, AI_ATTACKING)
|
||||
&& !partnerProtecting && IsBattlerAlive(battlerAtkPartner);
|
||||
bool32 isFriendlyFireOK = !wouldPartnerFaint && (noOfHitsToKOPartner == 0 || noOfHitsToKOPartner > friendlyFireThreshold);
|
||||
|
||||
@ -3082,16 +3082,16 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
||||
if (wouldPartnerFaint)
|
||||
{
|
||||
// If it kills both opponents, that's a good reason.
|
||||
if (CanIndexMoveFaintTarget(battlerAtk, BATTLE_OPPOSITE(battlerAtk), gAiThinkingStruct->movesetIndex, AI_ATTACKING)
|
||||
if (CanIndexMoveFaintTarget(battlerAtk, BATTLE_OPPOSITE(battlerAtk), gAiThinkingStruct->movesetIndex, AI_ATTACKING)
|
||||
&& CanIndexMoveFaintTarget(battlerAtk, BATTLE_OPPOSITE(battlerAtkPartner), gAiThinkingStruct->movesetIndex, AI_ATTACKING))
|
||||
{
|
||||
switch (effect)
|
||||
{
|
||||
case EFFECT_EXPLOSION:
|
||||
if (gAiThinkingStruct->aiFlags[battlerAtk] & (AI_FLAG_RISKY | AI_FLAG_WILL_SUICIDE))
|
||||
if (gAiThinkingStruct->aiFlags[battlerAtk] & (AI_FLAG_RISKY | AI_FLAG_WILL_SUICIDE))
|
||||
{
|
||||
RETURN_SCORE_PLUS(10);
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
RETURN_SCORE_PLUS(10);
|
||||
@ -3099,16 +3099,16 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
||||
}
|
||||
}
|
||||
// Both opponents can kill the partner
|
||||
else if (CanTargetFaintAi(BATTLE_OPPOSITE(battlerAtk), battlerAtkPartner)
|
||||
else if (CanTargetFaintAi(BATTLE_OPPOSITE(battlerAtk), battlerAtkPartner)
|
||||
&& (CanTargetFaintAi(BATTLE_OPPOSITE(battlerAtkPartner), battlerAtkPartner)))
|
||||
{
|
||||
// The spread move should kill an opponent.
|
||||
if (CanIndexMoveFaintTarget(battlerAtk, BATTLE_OPPOSITE(battlerAtk), gAiThinkingStruct->movesetIndex, AI_ATTACKING)
|
||||
if (CanIndexMoveFaintTarget(battlerAtk, BATTLE_OPPOSITE(battlerAtk), gAiThinkingStruct->movesetIndex, AI_ATTACKING)
|
||||
|| CanIndexMoveFaintTarget(battlerAtk, BATTLE_OPPOSITE(battlerAtkPartner), gAiThinkingStruct->movesetIndex, AI_ATTACKING))
|
||||
{
|
||||
ADJUST_SCORE(WEAK_EFFECT);
|
||||
}
|
||||
|
||||
|
||||
// Alternatively, it benefits from the ally's death, and it will probably die anyway.
|
||||
if (IsMoxieTypeAbility(aiData->abilities[battlerAtk]))
|
||||
{
|
||||
@ -3125,10 +3125,10 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
||||
}
|
||||
// It can kill one opponent when killing its ally, and its ally is not in extreme danger.
|
||||
// This is easy for the player to cheese.
|
||||
else if (CanIndexMoveFaintTarget(battlerAtk, BATTLE_OPPOSITE(battlerAtk), gAiThinkingStruct->movesetIndex, AI_ATTACKING)
|
||||
else if (CanIndexMoveFaintTarget(battlerAtk, BATTLE_OPPOSITE(battlerAtk), gAiThinkingStruct->movesetIndex, AI_ATTACKING)
|
||||
|| CanIndexMoveFaintTarget(battlerAtk, BATTLE_OPPOSITE(battlerAtkPartner), gAiThinkingStruct->movesetIndex, AI_ATTACKING))
|
||||
{
|
||||
if (gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_WILL_SUICIDE)
|
||||
if (gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_WILL_SUICIDE)
|
||||
{
|
||||
RETURN_SCORE_PLUS(10);
|
||||
}
|
||||
@ -3143,7 +3143,7 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
||||
RETURN_SCORE_MINUS(10);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Partner will not faint.
|
||||
else {
|
||||
|
||||
@ -3154,7 +3154,7 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
||||
if (aiData->effectiveness[battlerAtk][battlerAtkPartner][gAiThinkingStruct->movesetIndex] >= UQ_4_12(2.0) && isFriendlyFireOK)
|
||||
{
|
||||
ADJUST_SCORE(GOOD_EFFECT);
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@ -3171,7 +3171,7 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
||||
{
|
||||
RETURN_SCORE_MINUS(30);
|
||||
}
|
||||
|
||||
|
||||
// partner ability checks
|
||||
if (!partnerProtecting && moveTarget != MOVE_TARGET_BOTH && !DoesBattlerIgnoreAbilityChecks(battlerAtk, aiData->abilities[battlerAtk], move))
|
||||
{
|
||||
@ -3253,7 +3253,7 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
||||
{
|
||||
RETURN_SCORE_MINUS(10);
|
||||
}
|
||||
|
||||
|
||||
if (moveTarget == MOVE_TARGET_FOES_AND_ALLY)
|
||||
{
|
||||
ADJUST_SCORE(DECENT_EFFECT);
|
||||
@ -3280,7 +3280,7 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
||||
{
|
||||
ADJUST_SCORE(DECENT_EFFECT);
|
||||
}
|
||||
|
||||
|
||||
if (GetMoveStrikeCount(move) > 1 && effect != EFFECT_DRAGON_DARTS)
|
||||
{
|
||||
ADJUST_SCORE(DECENT_EFFECT);
|
||||
@ -3353,7 +3353,7 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
||||
{
|
||||
ADJUST_SCORE(DECENT_EFFECT);
|
||||
}
|
||||
|
||||
|
||||
if (ShouldTriggerAbility(battlerAtkPartner, atkPartnerAbility))
|
||||
{
|
||||
RETURN_SCORE_PLUS(WEAK_EFFECT);
|
||||
@ -3428,7 +3428,7 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
||||
{
|
||||
RETURN_SCORE_MINUS(30);
|
||||
}
|
||||
|
||||
|
||||
switch (effect)
|
||||
{
|
||||
case EFFECT_SPICY_EXTRACT:
|
||||
@ -4080,8 +4080,8 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move)
|
||||
{
|
||||
if (aiData->holdEffects[battlerAtk] == HOLD_EFFECT_CURE_SLP
|
||||
|| aiData->holdEffects[battlerAtk] == HOLD_EFFECT_CURE_STATUS
|
||||
|| HasMoveEffect(EFFECT_SLEEP_TALK, battlerAtk)
|
||||
|| HasMoveEffect(EFFECT_SNORE, battlerAtk)
|
||||
|| HasMoveWithEffect(EFFECT_SLEEP_TALK, battlerAtk)
|
||||
|| HasMoveWithEffect(EFFECT_SNORE, battlerAtk)
|
||||
|| aiData->abilities[battlerAtk] == ABILITY_SHED_SKIN
|
||||
|| aiData->abilities[battlerAtk] == ABILITY_EARLY_BIRD
|
||||
|| (AI_GetWeather() & B_WEATHER_RAIN && gWishFutureKnock.weatherDuration != 1 && aiData->abilities[battlerAtk] == ABILITY_HYDRATION && aiData->holdEffects[battlerAtk] != HOLD_EFFECT_UTILITY_UMBRELLA))
|
||||
@ -4123,7 +4123,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move)
|
||||
case EFFECT_LEECH_SEED:
|
||||
if (IS_BATTLER_OF_TYPE(battlerDef, TYPE_GRASS)
|
||||
|| gStatuses3[battlerDef] & STATUS3_LEECHSEED
|
||||
|| HasMoveEffect(battlerDef, EFFECT_RAPID_SPIN)
|
||||
|| HasMoveWithEffect(battlerDef, EFFECT_RAPID_SPIN)
|
||||
|| aiData->abilities[battlerDef] == ABILITY_LIQUID_OOZE
|
||||
|| aiData->abilities[battlerDef] == ABILITY_MAGIC_GUARD)
|
||||
break;
|
||||
@ -4194,7 +4194,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move)
|
||||
break;
|
||||
|
||||
bool32 encourage = gBattleMoveEffects[GetMoveEffect(gLastMoves[battlerDef])].encourageEncore;
|
||||
|
||||
|
||||
switch(GetMoveNonVolatileStatus(gLastMoves[battlerDef]))
|
||||
{
|
||||
case MOVE_EFFECT_POISON:
|
||||
@ -4214,7 +4214,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move)
|
||||
ADJUST_SCORE(BEST_EFFECT);
|
||||
break;
|
||||
case EFFECT_LOCK_ON:
|
||||
if (HasMoveEffect(battlerAtk, EFFECT_OHKO))
|
||||
if (HasMoveWithEffect(battlerAtk, EFFECT_OHKO))
|
||||
ADJUST_SCORE(GOOD_EFFECT);
|
||||
else if (HasMoveWithLowAccuracy(battlerAtk, battlerDef, 85, TRUE, aiData->abilities[battlerAtk], aiData->abilities[battlerDef], aiData->holdEffects[battlerAtk], aiData->holdEffects[battlerDef]))
|
||||
ADJUST_SCORE(GOOD_EFFECT);
|
||||
@ -4298,7 +4298,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move)
|
||||
&& IsPinchBerryItemEffect(aiData->holdEffects[battlerAtk]))
|
||||
ADJUST_SCORE(GOOD_EFFECT);
|
||||
else if ((gBattleMons[battlerAtk].hp > 1) // Only spam endure for Flail/Reversal if you're not at Min Health
|
||||
&& (HasMoveEffect(battlerAtk, EFFECT_FLAIL) || HasMoveEffect(battlerAtk, EFFECT_ENDEAVOR)))
|
||||
&& (HasMoveWithEffect(battlerAtk, EFFECT_FLAIL) || HasMoveWithEffect(battlerAtk, EFFECT_ENDEAVOR)))
|
||||
ADJUST_SCORE(GOOD_EFFECT);
|
||||
}
|
||||
break;
|
||||
@ -4338,41 +4338,41 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move)
|
||||
ADJUST_SCORE(DECENT_EFFECT);
|
||||
if (aiData->holdEffects[battlerAtk] == HOLD_EFFECT_SMOOTH_ROCK)
|
||||
ADJUST_SCORE(WEAK_EFFECT);
|
||||
if (HasMoveEffect(battlerDef, EFFECT_MORNING_SUN)
|
||||
|| HasMoveEffect(battlerDef, EFFECT_SYNTHESIS)
|
||||
|| HasMoveEffect(battlerDef, EFFECT_MOONLIGHT))
|
||||
if (HasMoveWithEffect(battlerDef, EFFECT_MORNING_SUN)
|
||||
|| HasMoveWithEffect(battlerDef, EFFECT_SYNTHESIS)
|
||||
|| HasMoveWithEffect(battlerDef, EFFECT_MOONLIGHT))
|
||||
ADJUST_SCORE(WEAK_EFFECT);
|
||||
}
|
||||
break;
|
||||
case EFFECT_HAIL:
|
||||
if (ShouldSetHail(battlerAtk, aiData->abilities[battlerAtk], aiData->holdEffects[battlerAtk]))
|
||||
{
|
||||
if ((HasMoveEffect(battlerAtk, EFFECT_AURORA_VEIL) || HasMoveEffect(BATTLE_PARTNER(battlerAtk), EFFECT_AURORA_VEIL))
|
||||
if ((HasMoveWithEffect(battlerAtk, EFFECT_AURORA_VEIL) || HasMoveWithEffect(BATTLE_PARTNER(battlerAtk), EFFECT_AURORA_VEIL))
|
||||
&& ShouldSetScreen(battlerAtk, battlerDef, EFFECT_AURORA_VEIL))
|
||||
ADJUST_SCORE(GOOD_EFFECT);
|
||||
|
||||
ADJUST_SCORE(DECENT_EFFECT);
|
||||
if (aiData->holdEffects[battlerAtk] == HOLD_EFFECT_ICY_ROCK)
|
||||
ADJUST_SCORE(WEAK_EFFECT);
|
||||
if (HasMoveEffect(battlerDef, EFFECT_MORNING_SUN)
|
||||
|| HasMoveEffect(battlerDef, EFFECT_SYNTHESIS)
|
||||
|| HasMoveEffect(battlerDef, EFFECT_MOONLIGHT))
|
||||
if (HasMoveWithEffect(battlerDef, EFFECT_MORNING_SUN)
|
||||
|| HasMoveWithEffect(battlerDef, EFFECT_SYNTHESIS)
|
||||
|| HasMoveWithEffect(battlerDef, EFFECT_MOONLIGHT))
|
||||
ADJUST_SCORE(WEAK_EFFECT);
|
||||
}
|
||||
break;
|
||||
case EFFECT_SNOWSCAPE:
|
||||
if (ShouldSetSnow(battlerAtk, aiData->abilities[battlerAtk], aiData->holdEffects[battlerAtk]))
|
||||
{
|
||||
if ((HasMoveEffect(battlerAtk, EFFECT_AURORA_VEIL) || HasMoveEffect(BATTLE_PARTNER(battlerAtk), EFFECT_AURORA_VEIL))
|
||||
if ((HasMoveWithEffect(battlerAtk, EFFECT_AURORA_VEIL) || HasMoveWithEffect(BATTLE_PARTNER(battlerAtk), EFFECT_AURORA_VEIL))
|
||||
&& ShouldSetScreen(battlerAtk, battlerDef, EFFECT_AURORA_VEIL))
|
||||
ADJUST_SCORE(GOOD_EFFECT);
|
||||
|
||||
ADJUST_SCORE(DECENT_EFFECT);
|
||||
if (aiData->holdEffects[battlerAtk] == HOLD_EFFECT_ICY_ROCK)
|
||||
ADJUST_SCORE(WEAK_EFFECT);
|
||||
if (HasMoveEffect(battlerDef, EFFECT_MORNING_SUN)
|
||||
|| HasMoveEffect(battlerDef, EFFECT_SYNTHESIS)
|
||||
|| HasMoveEffect(battlerDef, EFFECT_MOONLIGHT))
|
||||
if (HasMoveWithEffect(battlerDef, EFFECT_MORNING_SUN)
|
||||
|| HasMoveWithEffect(battlerDef, EFFECT_SYNTHESIS)
|
||||
|| HasMoveWithEffect(battlerDef, EFFECT_MOONLIGHT))
|
||||
ADJUST_SCORE(WEAK_EFFECT);
|
||||
}
|
||||
break;
|
||||
@ -4382,10 +4382,10 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move)
|
||||
ADJUST_SCORE(DECENT_EFFECT);
|
||||
if (aiData->holdEffects[battlerAtk] == HOLD_EFFECT_DAMP_ROCK)
|
||||
ADJUST_SCORE(WEAK_EFFECT);
|
||||
if (HasMoveEffect(battlerDef, EFFECT_MORNING_SUN)
|
||||
|| HasMoveEffect(battlerDef, EFFECT_SYNTHESIS)
|
||||
|| HasMoveEffect(battlerDef, EFFECT_SOLAR_BEAM)
|
||||
|| HasMoveEffect(battlerDef, EFFECT_MOONLIGHT))
|
||||
if (HasMoveWithEffect(battlerDef, EFFECT_MORNING_SUN)
|
||||
|| HasMoveWithEffect(battlerDef, EFFECT_SYNTHESIS)
|
||||
|| HasMoveWithEffect(battlerDef, EFFECT_SOLAR_BEAM)
|
||||
|| HasMoveWithEffect(battlerDef, EFFECT_MOONLIGHT))
|
||||
ADJUST_SCORE(WEAK_EFFECT);
|
||||
if (HasMoveWithType(battlerDef, TYPE_FIRE) || HasMoveWithType(BATTLE_PARTNER(battlerDef), TYPE_FIRE))
|
||||
ADJUST_SCORE(WEAK_EFFECT);
|
||||
@ -4431,7 +4431,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move)
|
||||
}
|
||||
break;
|
||||
case EFFECT_DEFENSE_CURL:
|
||||
if (HasMoveEffect(battlerAtk, EFFECT_ROLLOUT) && !(gBattleMons[battlerAtk].status2 & STATUS2_DEFENSE_CURL))
|
||||
if (HasMoveWithEffect(battlerAtk, EFFECT_ROLLOUT) && !(gBattleMons[battlerAtk].status2 & STATUS2_DEFENSE_CURL))
|
||||
ADJUST_SCORE(DECENT_EFFECT);
|
||||
ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_DEF));
|
||||
break;
|
||||
@ -4444,16 +4444,16 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move)
|
||||
case EFFECT_STOCKPILE:
|
||||
if (aiData->abilities[battlerAtk] == ABILITY_CONTRARY)
|
||||
break;
|
||||
if (HasMoveEffect(battlerAtk, EFFECT_SWALLOW) || HasMoveEffect(battlerAtk, EFFECT_SPIT_UP))
|
||||
if (HasMoveWithEffect(battlerAtk, EFFECT_SWALLOW) || HasMoveWithEffect(battlerAtk, EFFECT_SPIT_UP))
|
||||
ADJUST_SCORE(DECENT_EFFECT);
|
||||
ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_DEF));
|
||||
ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_SPDEF));
|
||||
break;
|
||||
case EFFECT_SWAGGER:
|
||||
case EFFECT_FLATTER:
|
||||
if (HasMoveEffect(battlerAtk, EFFECT_FOUL_PLAY)
|
||||
|| HasMoveEffect(battlerAtk, EFFECT_PSYCH_UP)
|
||||
|| HasMoveEffect(battlerAtk, EFFECT_SPECTRAL_THIEF))
|
||||
if (HasMoveWithEffect(battlerAtk, EFFECT_FOUL_PLAY)
|
||||
|| HasMoveWithEffect(battlerAtk, EFFECT_PSYCH_UP)
|
||||
|| HasMoveWithEffect(battlerAtk, EFFECT_SPECTRAL_THIEF))
|
||||
ADJUST_SCORE(DECENT_EFFECT);
|
||||
if (aiData->abilities[battlerDef] == ABILITY_CONTRARY)
|
||||
ADJUST_SCORE(GOOD_EFFECT);
|
||||
@ -4553,7 +4553,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move)
|
||||
ADJUST_SCORE(DECENT_EFFECT);
|
||||
break;
|
||||
case HOLD_EFFECT_IRON_BALL:
|
||||
if (!HasMoveEffect(battlerDef, EFFECT_FLING) || !IsBattlerGrounded(battlerDef))
|
||||
if (!HasMoveWithEffect(battlerDef, EFFECT_FLING) || !IsBattlerGrounded(battlerDef))
|
||||
ADJUST_SCORE(DECENT_EFFECT);
|
||||
break;
|
||||
case HOLD_EFFECT_LAGGING_TAIL:
|
||||
@ -4603,7 +4603,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move)
|
||||
ADJUST_SCORE(DECENT_EFFECT);
|
||||
break;
|
||||
case HOLD_EFFECT_IRON_BALL:
|
||||
if (HasMoveEffect(battlerAtk, EFFECT_FLING))
|
||||
if (HasMoveWithEffect(battlerAtk, EFFECT_FLING))
|
||||
ADJUST_SCORE(DECENT_EFFECT);
|
||||
break;
|
||||
case HOLD_EFFECT_LAGGING_TAIL:
|
||||
@ -4622,7 +4622,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move)
|
||||
switch (aiData->holdEffects[battlerDef])
|
||||
{
|
||||
case HOLD_EFFECT_IRON_BALL:
|
||||
if (HasMoveEffect(battlerDef, EFFECT_FLING))
|
||||
if (HasMoveWithEffect(battlerDef, EFFECT_FLING))
|
||||
ADJUST_SCORE(DECENT_EFFECT);
|
||||
break;
|
||||
case HOLD_EFFECT_LAGGING_TAIL:
|
||||
@ -4859,7 +4859,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move)
|
||||
ADJUST_SCORE(GOOD_EFFECT);
|
||||
break;
|
||||
case EFFECT_PLEDGE:
|
||||
if (isDoubleBattle && HasMoveEffect(BATTLE_PARTNER(battlerAtk), EFFECT_PLEDGE))
|
||||
if (isDoubleBattle && HasMoveWithEffect(BATTLE_PARTNER(battlerAtk), EFFECT_PLEDGE))
|
||||
ADJUST_SCORE(GOOD_EFFECT); // Partner might use pledge move
|
||||
break;
|
||||
case EFFECT_TRICK_ROOM:
|
||||
@ -4943,7 +4943,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move)
|
||||
ADJUST_SCORE(DECENT_EFFECT);
|
||||
break;
|
||||
case EFFECT_SOAK:
|
||||
if (HasMoveWithType(battlerAtk, TYPE_ELECTRIC) || HasMoveWithType(battlerAtk, TYPE_GRASS) || (HasMoveEffect(battlerAtk, EFFECT_SUPER_EFFECTIVE_ON_ARG) && GetMoveArgType(move) == TYPE_WATER) )
|
||||
if (HasMoveWithType(battlerAtk, TYPE_ELECTRIC) || HasMoveWithType(battlerAtk, TYPE_GRASS) || (HasMoveWithEffect(battlerAtk, EFFECT_SUPER_EFFECTIVE_ON_ARG) && GetMoveArgType(move) == TYPE_WATER) )
|
||||
ADJUST_SCORE(DECENT_EFFECT); // Get some super effective moves
|
||||
break;
|
||||
case EFFECT_THIRD_TYPE:
|
||||
@ -5070,7 +5070,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move)
|
||||
switch (aiData->holdEffects[battlerDef])
|
||||
{
|
||||
case HOLD_EFFECT_IRON_BALL:
|
||||
if (HasMoveEffect(battlerDef, EFFECT_FLING))
|
||||
if (HasMoveWithEffect(battlerDef, EFFECT_FLING))
|
||||
ADJUST_SCORE(DECENT_EFFECT);
|
||||
break;
|
||||
case HOLD_EFFECT_LAGGING_TAIL:
|
||||
@ -5234,7 +5234,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move)
|
||||
&& aiData->items[battlerDef] != ITEM_NONE
|
||||
&& CanBattlerGetOrLoseItem(battlerDef, aiData->items[battlerDef])
|
||||
&& CanBattlerGetOrLoseItem(battlerAtk, aiData->items[battlerDef])
|
||||
&& !HasMoveEffect(battlerAtk, EFFECT_ACROBATICS)
|
||||
&& !HasMoveWithEffect(battlerAtk, EFFECT_ACROBATICS)
|
||||
&& aiData->abilities[battlerDef] != ABILITY_STICKY_HOLD)
|
||||
{
|
||||
switch (aiData->holdEffects[battlerDef])
|
||||
@ -5259,7 +5259,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move)
|
||||
ADJUST_SCORE(DECENT_EFFECT);
|
||||
break;
|
||||
case HOLD_EFFECT_IRON_BALL:
|
||||
if (HasMoveEffect(battlerAtk, EFFECT_FLING))
|
||||
if (HasMoveWithEffect(battlerAtk, EFFECT_FLING))
|
||||
ADJUST_SCORE(DECENT_EFFECT);
|
||||
break;
|
||||
case HOLD_EFFECT_LAGGING_TAIL:
|
||||
@ -5297,7 +5297,7 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move)
|
||||
}
|
||||
break;
|
||||
case MOVE_EFFECT_WRAP:
|
||||
if (!HasMoveEffect(battlerDef, EFFECT_RAPID_SPIN) && ShouldTrap(battlerAtk, battlerDef, move))
|
||||
if (!HasMoveWithEffect(battlerDef, EFFECT_RAPID_SPIN) && ShouldTrap(battlerAtk, battlerDef, move))
|
||||
ADJUST_SCORE(BEST_EFFECT);
|
||||
break;
|
||||
case MOVE_EFFECT_SALT_CURE:
|
||||
@ -5562,7 +5562,7 @@ static s32 AI_PreferBatonPass(u32 battlerAtk, u32 battlerDef, u32 move, s32 scor
|
||||
if (IS_TARGETING_PARTNER(battlerAtk, battlerDef)
|
||||
|| CountUsablePartyMons(battlerAtk) == 0
|
||||
|| !IsBattleMoveStatus(move)
|
||||
|| !HasMoveEffect(battlerAtk, EFFECT_BATON_PASS)
|
||||
|| !HasMoveWithEffect(battlerAtk, EFFECT_BATON_PASS)
|
||||
|| (!AI_CanBattlerEscape(battlerAtk) && IsBattlerTrapped(battlerDef, battlerAtk)))
|
||||
return score;
|
||||
|
||||
@ -5821,15 +5821,15 @@ static s32 AI_PowerfulStatus(u32 battlerAtk, u32 battlerDef, u32 move, s32 score
|
||||
ADJUST_SCORE(POWERFUL_STATUS_MOVE);
|
||||
break;
|
||||
case EFFECT_TRICK_ROOM:
|
||||
if (!(gFieldStatuses & STATUS_FIELD_TRICK_ROOM) && !HasMoveEffect(battlerDef, EFFECT_TRICK_ROOM))
|
||||
if (!(gFieldStatuses & STATUS_FIELD_TRICK_ROOM) && !HasMoveWithEffect(battlerDef, EFFECT_TRICK_ROOM))
|
||||
ADJUST_SCORE(POWERFUL_STATUS_MOVE);
|
||||
break;
|
||||
case EFFECT_MAGIC_ROOM:
|
||||
if (!(gFieldStatuses & STATUS_FIELD_MAGIC_ROOM) && !HasMoveEffect(battlerDef, EFFECT_MAGIC_ROOM))
|
||||
if (!(gFieldStatuses & STATUS_FIELD_MAGIC_ROOM) && !HasMoveWithEffect(battlerDef, EFFECT_MAGIC_ROOM))
|
||||
ADJUST_SCORE(POWERFUL_STATUS_MOVE);
|
||||
break;
|
||||
case EFFECT_WONDER_ROOM:
|
||||
if (!(gFieldStatuses & STATUS_FIELD_WONDER_ROOM) && !HasMoveEffect(battlerDef, EFFECT_WONDER_ROOM))
|
||||
if (!(gFieldStatuses & STATUS_FIELD_WONDER_ROOM) && !HasMoveWithEffect(battlerDef, EFFECT_WONDER_ROOM))
|
||||
ADJUST_SCORE(POWERFUL_STATUS_MOVE);
|
||||
break;
|
||||
case EFFECT_GRAVITY:
|
||||
|
||||
@ -677,7 +677,7 @@ static bool32 ShouldSwitchIfBadlyStatused(u32 battler)
|
||||
|| monAbility == ABILITY_EARLY_BIRD)
|
||||
|| holdEffect == (HOLD_EFFECT_CURE_SLP | HOLD_EFFECT_CURE_STATUS)
|
||||
|| HasMove(battler, MOVE_SLEEP_TALK)
|
||||
|| (HasMoveEffect(battler, MOVE_SNORE) && AI_GetMoveEffectiveness(MOVE_SNORE, battler, opposingBattler) >= UQ_4_12(2.0))
|
||||
|| (HasMoveWithEffect(battler, MOVE_SNORE) && AI_GetMoveEffectiveness(MOVE_SNORE, battler, opposingBattler) >= UQ_4_12(2.0))
|
||||
|| (IsBattlerGrounded(battler)
|
||||
&& (HasMove(battler, MOVE_MISTY_TERRAIN) || HasMove(battler, MOVE_ELECTRIC_TERRAIN)))
|
||||
)
|
||||
|
||||
@ -1588,7 +1588,7 @@ bool32 IsAllyProtectingFromMove(u32 battlerAtk, u32 attackerMove, u32 allyMove)
|
||||
else
|
||||
{
|
||||
enum ProtectMethod protectMethod = GetMoveProtectMethod(allyMove);
|
||||
|
||||
|
||||
if (protectMethod == PROTECT_QUICK_GUARD)
|
||||
{
|
||||
u32 priority = GetBattleMovePriority(battlerAtk, gAiLogicData->abilities[battlerAtk], attackerMove);
|
||||
@ -1735,8 +1735,8 @@ bool32 ShouldSetSandstorm(u32 battler, u32 ability, enum ItemHoldEffect holdEffe
|
||||
|| ability == ABILITY_MAGIC_GUARD
|
||||
|| holdEffect == HOLD_EFFECT_SAFETY_GOGGLES
|
||||
|| IS_BATTLER_ANY_TYPE(battler, TYPE_ROCK, TYPE_GROUND, TYPE_STEEL)
|
||||
|| HasMoveEffect(battler, EFFECT_SHORE_UP)
|
||||
|| HasMoveEffect(battler, EFFECT_WEATHER_BALL))
|
||||
|| HasMoveWithEffect(battler, EFFECT_SHORE_UP)
|
||||
|| HasMoveWithEffect(battler, EFFECT_WEATHER_BALL))
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
@ -1758,8 +1758,8 @@ bool32 ShouldSetHail(u32 battler, u32 ability, enum ItemHoldEffect holdEffect)
|
||||
|| holdEffect == HOLD_EFFECT_SAFETY_GOGGLES
|
||||
|| IS_BATTLER_OF_TYPE(battler, TYPE_ICE)
|
||||
|| HasMoveWithFlag(battler, MoveAlwaysHitsInHailSnow)
|
||||
|| HasMoveEffect(battler, EFFECT_AURORA_VEIL)
|
||||
|| HasMoveEffect(battler, EFFECT_WEATHER_BALL))
|
||||
|| HasMoveWithEffect(battler, EFFECT_AURORA_VEIL)
|
||||
|| HasMoveWithEffect(battler, EFFECT_WEATHER_BALL))
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
@ -1779,7 +1779,7 @@ bool32 ShouldSetRain(u32 battlerAtk, u32 atkAbility, enum ItemHoldEffect holdEff
|
||||
|| atkAbility == ABILITY_RAIN_DISH
|
||||
|| atkAbility == ABILITY_DRY_SKIN
|
||||
|| HasMoveWithFlag(battlerAtk, MoveAlwaysHitsInRain)
|
||||
|| HasMoveEffect(battlerAtk, EFFECT_WEATHER_BALL)
|
||||
|| HasMoveWithEffect(battlerAtk, EFFECT_WEATHER_BALL)
|
||||
|| HasMoveWithType(battlerAtk, TYPE_WATER)))
|
||||
{
|
||||
return TRUE;
|
||||
@ -1800,12 +1800,12 @@ bool32 ShouldSetSun(u32 battlerAtk, u32 atkAbility, enum ItemHoldEffect holdEffe
|
||||
|| atkAbility == ABILITY_LEAF_GUARD
|
||||
|| atkAbility == ABILITY_SOLAR_POWER
|
||||
|| atkAbility == ABILITY_HARVEST
|
||||
|| HasMoveEffect(battlerAtk, EFFECT_SOLAR_BEAM)
|
||||
|| HasMoveEffect(battlerAtk, EFFECT_MORNING_SUN)
|
||||
|| HasMoveEffect(battlerAtk, EFFECT_SYNTHESIS)
|
||||
|| HasMoveEffect(battlerAtk, EFFECT_MOONLIGHT)
|
||||
|| HasMoveEffect(battlerAtk, EFFECT_WEATHER_BALL)
|
||||
|| HasMoveEffect(battlerAtk, EFFECT_GROWTH)
|
||||
|| HasMoveWithEffect(battlerAtk, EFFECT_SOLAR_BEAM)
|
||||
|| HasMoveWithEffect(battlerAtk, EFFECT_MORNING_SUN)
|
||||
|| HasMoveWithEffect(battlerAtk, EFFECT_SYNTHESIS)
|
||||
|| HasMoveWithEffect(battlerAtk, EFFECT_MOONLIGHT)
|
||||
|| HasMoveWithEffect(battlerAtk, EFFECT_WEATHER_BALL)
|
||||
|| HasMoveWithEffect(battlerAtk, EFFECT_GROWTH)
|
||||
|| HasMoveWithType(battlerAtk, TYPE_FIRE)))
|
||||
{
|
||||
return TRUE;
|
||||
@ -1825,8 +1825,8 @@ bool32 ShouldSetSnow(u32 battler, u32 ability, enum ItemHoldEffect holdEffect)
|
||||
|| ability == ABILITY_SLUSH_RUSH
|
||||
|| IS_BATTLER_OF_TYPE(battler, TYPE_ICE)
|
||||
|| HasMoveWithFlag(battler, MoveAlwaysHitsInHailSnow)
|
||||
|| HasMoveEffect(battler, EFFECT_AURORA_VEIL)
|
||||
|| HasMoveEffect(battler, EFFECT_WEATHER_BALL))
|
||||
|| HasMoveWithEffect(battler, EFFECT_AURORA_VEIL)
|
||||
|| HasMoveWithEffect(battler, EFFECT_WEATHER_BALL))
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
@ -1916,7 +1916,7 @@ bool32 ShouldLowerStat(u32 battlerAtk, u32 battlerDef, u32 abilityDef, u32 stat)
|
||||
// If AI is faster and doesn't have any mons left, lowering speed doesn't give any
|
||||
return !(AI_IsFaster(battlerAtk, battlerDef, gAiThinkingStruct->moveConsidered)
|
||||
&& CountUsablePartyMons(battlerAtk) == 0
|
||||
&& !HasMoveEffect(battlerAtk, EFFECT_ELECTRO_BALL));
|
||||
&& !HasMoveWithEffect(battlerAtk, EFFECT_ELECTRO_BALL));
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
@ -2177,7 +2177,7 @@ bool32 HasMoveWithType(u32 battler, u32 type)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool32 HasMoveEffect(u32 battlerId, enum BattleMoveEffects effect)
|
||||
bool32 HasMoveWithEffect(u32 battlerId, enum BattleMoveEffects effect)
|
||||
{
|
||||
s32 i;
|
||||
u16 *moves = GetMovesArray(battlerId);
|
||||
@ -3131,7 +3131,7 @@ bool32 IsBattlerIncapacitated(u32 battler, u32 ability)
|
||||
if ((gBattleMons[battler].status1 & STATUS1_FREEZE) && !HasThawingMove(battler))
|
||||
return TRUE; // if battler has thawing move we assume they will definitely use it, and thus being frozen should be neglected
|
||||
|
||||
if (gBattleMons[battler].status1 & STATUS1_SLEEP && !HasMoveEffect(battler, EFFECT_SLEEP_TALK))
|
||||
if (gBattleMons[battler].status1 & STATUS1_SLEEP && !HasMoveWithEffect(battler, EFFECT_SLEEP_TALK))
|
||||
return TRUE;
|
||||
|
||||
if (gBattleMons[battler].status2 & STATUS2_RECHARGE || (ability == ABILITY_TRUANT && gDisableStructs[battler].truantCounter != 0))
|
||||
@ -3155,8 +3155,8 @@ static inline bool32 DoesBattlerBenefitFromAllVolatileStatus(u32 battler, u32 ab
|
||||
|| ability == ABILITY_QUICK_FEET
|
||||
|| ability == ABILITY_MAGIC_GUARD
|
||||
|| (ability == ABILITY_GUTS && HasMoveWithCategory(battler, DAMAGE_CATEGORY_PHYSICAL))
|
||||
|| HasMoveEffect(battler, EFFECT_FACADE)
|
||||
|| HasMoveEffect(battler, EFFECT_PSYCHO_SHIFT))
|
||||
|| HasMoveWithEffect(battler, EFFECT_FACADE)
|
||||
|| HasMoveWithEffect(battler, EFFECT_PSYCHO_SHIFT))
|
||||
return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
@ -3538,8 +3538,8 @@ bool32 ShouldSetScreen(u32 battlerAtk, u32 battlerDef, enum BattleMoveEffects mo
|
||||
u32 atkSide = GetBattlerSide(battlerAtk);
|
||||
|
||||
// Don't waste a turn if screens will be broken
|
||||
if (HasMoveEffect(battlerDef, EFFECT_BRICK_BREAK)
|
||||
|| HasMoveEffect(battlerDef, EFFECT_RAGING_BULL))
|
||||
if (HasMoveWithEffect(battlerDef, EFFECT_BRICK_BREAK)
|
||||
|| HasMoveWithEffect(battlerDef, EFFECT_RAGING_BULL))
|
||||
return FALSE;
|
||||
|
||||
switch (moveEffect)
|
||||
@ -4071,10 +4071,10 @@ static enum AIScore IncreaseStatUpScoreInternal(u32 battlerAtk, u32 battlerDef,
|
||||
return NO_INCREASE;
|
||||
|
||||
// Don't increase stats if opposing battler has Encore
|
||||
if (HasMoveEffect(battlerDef, EFFECT_ENCORE))
|
||||
if (HasMoveWithEffect(battlerDef, EFFECT_ENCORE))
|
||||
return NO_INCREASE;
|
||||
|
||||
if (IsDoubleBattle() && HasMoveEffect(GetPartnerBattler(battlerDef), EFFECT_ENCORE))
|
||||
if (IsDoubleBattle() && HasMoveWithEffect(GetPartnerBattler(battlerDef), EFFECT_ENCORE))
|
||||
return NO_INCREASE;
|
||||
|
||||
// Predicting switch
|
||||
@ -4193,12 +4193,12 @@ void IncreasePoisonScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score)
|
||||
if (!HasDamagingMove(battlerDef))
|
||||
ADJUST_SCORE_PTR(DECENT_EFFECT);
|
||||
|
||||
if (gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_STALL && HasMoveEffect(battlerAtk, EFFECT_PROTECT))
|
||||
if (gAiThinkingStruct->aiFlags[battlerAtk] & AI_FLAG_STALL && HasMoveWithEffect(battlerAtk, EFFECT_PROTECT))
|
||||
ADJUST_SCORE_PTR(WEAK_EFFECT); // stall tactic
|
||||
|
||||
if (IsPowerBasedOnStatus(battlerAtk, EFFECT_DOUBLE_POWER_ON_ARG_STATUS, STATUS1_PSN_ANY)
|
||||
|| HasMoveEffect(battlerAtk, EFFECT_VENOM_DRENCH)
|
||||
|| gAiLogicData->abilities[battlerAtk] == ABILITY_MERCILESS)
|
||||
|| HasMoveWithEffect(battlerAtk, EFFECT_VENOM_DRENCH)
|
||||
|| gAiLogicData->abilities[battlerAtk] == ABILITY_MERCILESS)
|
||||
ADJUST_SCORE_PTR(DECENT_EFFECT);
|
||||
else
|
||||
ADJUST_SCORE_PTR(WEAK_EFFECT);
|
||||
@ -4262,8 +4262,8 @@ void IncreaseSleepScore(u32 battlerAtk, u32 battlerDef, u32 move, s32 *score)
|
||||
else
|
||||
return;
|
||||
|
||||
if ((HasMoveEffect(battlerAtk, EFFECT_DREAM_EATER) || HasMoveEffect(battlerAtk, EFFECT_NIGHTMARE))
|
||||
&& !(HasMoveEffect(battlerDef, EFFECT_SNORE) || HasMoveEffect(battlerDef, EFFECT_SLEEP_TALK)))
|
||||
if ((HasMoveWithEffect(battlerAtk, EFFECT_DREAM_EATER) || HasMoveWithEffect(battlerAtk, EFFECT_NIGHTMARE))
|
||||
&& !(HasMoveWithEffect(battlerDef, EFFECT_SNORE) || HasMoveWithEffect(battlerDef, EFFECT_SLEEP_TALK)))
|
||||
ADJUST_SCORE_PTR(WEAK_EFFECT);
|
||||
|
||||
if (IsPowerBasedOnStatus(battlerAtk, EFFECT_DOUBLE_POWER_ON_ARG_STATUS, STATUS1_SLEEP)
|
||||
@ -4409,11 +4409,11 @@ bool32 AI_ShouldSetUpHazards(u32 battlerAtk, u32 battlerDef, struct AiLogicData
|
||||
{
|
||||
if (aiData->abilities[battlerDef] == ABILITY_MAGIC_BOUNCE
|
||||
|| CountUsablePartyMons(battlerDef) == 0
|
||||
|| HasMoveEffect(battlerDef, EFFECT_RAPID_SPIN)
|
||||
|| HasMoveEffect(battlerDef, EFFECT_TIDY_UP)
|
||||
|| HasMoveEffect(battlerDef, EFFECT_DEFOG)
|
||||
|| HasMoveWithEffect(battlerDef, EFFECT_RAPID_SPIN)
|
||||
|| HasMoveWithEffect(battlerDef, EFFECT_TIDY_UP)
|
||||
|| HasMoveWithEffect(battlerDef, EFFECT_DEFOG)
|
||||
|| HasMoveWithAdditionalEffect(battlerDef, MOVE_EFFECT_DEFOG)
|
||||
|| HasMoveEffect(battlerDef, EFFECT_MAGIC_COAT))
|
||||
|| HasMoveWithEffect(battlerDef, EFFECT_MAGIC_COAT))
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
@ -4451,8 +4451,8 @@ bool32 AI_ShouldSpicyExtract(u32 battlerAtk, u32 battlerAtkPartner, u32 move, st
|
||||
if (gBattleMons[battlerAtkPartner].statStages[STAT_ATK] == MAX_STAT_STAGE
|
||||
|| partnerAbility == ABILITY_CONTRARY
|
||||
|| partnerAbility == ABILITY_GOOD_AS_GOLD
|
||||
|| HasMoveEffect(BATTLE_OPPOSITE(battlerAtk), EFFECT_FOUL_PLAY)
|
||||
|| HasMoveEffect(BATTLE_OPPOSITE(battlerAtkPartner), EFFECT_FOUL_PLAY))
|
||||
|| HasMoveWithEffect(BATTLE_OPPOSITE(battlerAtk), EFFECT_FOUL_PLAY)
|
||||
|| HasMoveWithEffect(BATTLE_OPPOSITE(battlerAtkPartner), EFFECT_FOUL_PLAY))
|
||||
return FALSE;
|
||||
|
||||
preventsStatLoss = (partnerAbility == ABILITY_CLEAR_BODY
|
||||
@ -4509,8 +4509,8 @@ u32 IncreaseSubstituteMoveScore(u32 battlerAtk, u32 battlerDef, u32 move)
|
||||
|| HasNonVolatileMoveEffect(battlerDef, MOVE_EFFECT_TOXIC)
|
||||
|| HasNonVolatileMoveEffect(battlerDef, MOVE_EFFECT_PARALYSIS)
|
||||
|| HasNonVolatileMoveEffect(battlerDef, MOVE_EFFECT_BURN)
|
||||
|| HasMoveEffect(battlerDef, EFFECT_CONFUSE)
|
||||
|| HasMoveEffect(battlerDef, EFFECT_LEECH_SEED))
|
||||
|| HasMoveWithEffect(battlerDef, EFFECT_CONFUSE)
|
||||
|| HasMoveWithEffect(battlerDef, EFFECT_LEECH_SEED))
|
||||
scoreIncrease += GOOD_EFFECT;
|
||||
|
||||
if (gAiLogicData->hpPercents[battlerAtk] > 70)
|
||||
@ -4586,7 +4586,7 @@ bool32 ShouldTriggerAbility(u32 battler, u32 ability)
|
||||
case ABILITY_STORM_DRAIN:
|
||||
if (B_REDIRECT_ABILITY_IMMUNITY < GEN_5)
|
||||
return FALSE;
|
||||
else
|
||||
else
|
||||
return (BattlerStatCanRise(battler, ability, STAT_SPATK) && HasMoveWithCategory(battler, DAMAGE_CATEGORY_SPECIAL));
|
||||
|
||||
case ABILITY_DEFIANT:
|
||||
@ -4601,7 +4601,7 @@ bool32 ShouldTriggerAbility(u32 battler, u32 ability)
|
||||
|
||||
case ABILITY_CONTRARY:
|
||||
return TRUE;
|
||||
|
||||
|
||||
case ABILITY_DRY_SKIN:
|
||||
case ABILITY_VOLT_ABSORB:
|
||||
case ABILITY_WATER_ABSORB:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user