Score adjustments towards guaranteed stat drops. (#7670)
This commit is contained in:
parent
0a0d574998
commit
2f75c6a264
@ -5685,11 +5685,20 @@ case EFFECT_GUARD_SPLIT:
|
||||
if (CanLowerStat(battlerAtk, battlerDef, aiData, STAT_SPEED))
|
||||
ADJUST_SCORE(IncreaseStatDownScore(battlerAtk, battlerDef, STAT_SPEED));
|
||||
break;
|
||||
case MOVE_EFFECT_ACC_MINUS_1:
|
||||
case MOVE_EFFECT_ACC_MINUS_2:
|
||||
if (CanLowerStat(battlerAtk, battlerDef, aiData, STAT_ACC))
|
||||
{
|
||||
u32 scoreIncrease = IncreaseStatDownScore(battlerAtk, battlerDef, STAT_ACC);
|
||||
if (scoreIncrease == WEAK_EFFECT)
|
||||
scoreIncrease = DECENT_EFFECT;
|
||||
ADJUST_SCORE(scoreIncrease);
|
||||
}
|
||||
break;
|
||||
case MOVE_EFFECT_ATK_MINUS_1:
|
||||
case MOVE_EFFECT_DEF_MINUS_1:
|
||||
case MOVE_EFFECT_SP_ATK_MINUS_1:
|
||||
case MOVE_EFFECT_SP_DEF_MINUS_1:
|
||||
case MOVE_EFFECT_ACC_MINUS_1:
|
||||
case MOVE_EFFECT_EVS_MINUS_1:
|
||||
{
|
||||
u32 statId = STAT_ATK + additionalEffect->moveEffect - MOVE_EFFECT_ATK_MINUS_1;
|
||||
@ -5701,7 +5710,6 @@ case EFFECT_GUARD_SPLIT:
|
||||
case MOVE_EFFECT_DEF_MINUS_2:
|
||||
case MOVE_EFFECT_SP_ATK_MINUS_2:
|
||||
case MOVE_EFFECT_SP_DEF_MINUS_2:
|
||||
case MOVE_EFFECT_ACC_MINUS_2:
|
||||
case MOVE_EFFECT_EVS_MINUS_2:
|
||||
{
|
||||
u32 statId = STAT_ATK + additionalEffect->moveEffect - MOVE_EFFECT_ATK_MINUS_2;
|
||||
|
||||
@ -2113,13 +2113,15 @@ u32 IncreaseStatDownScore(u32 battlerAtk, u32 battlerDef, u32 stat)
|
||||
tempScore += DECENT_EFFECT;
|
||||
break;
|
||||
case STAT_DEF:
|
||||
if (HasMoveWithCategory(battlerAtk, DAMAGE_CATEGORY_PHYSICAL))
|
||||
if (HasMoveWithCategory(battlerAtk, DAMAGE_CATEGORY_PHYSICAL)
|
||||
|| HasMoveWithCategory(BATTLE_PARTNER(battlerAtk), DAMAGE_CATEGORY_PHYSICAL))
|
||||
tempScore += DECENT_EFFECT;
|
||||
break;
|
||||
case STAT_SPEED:
|
||||
{
|
||||
u32 predictedMoveSpeedCheck = GetIncomingMoveSpeedCheck(battlerAtk, battlerDef, gAiLogicData);
|
||||
if (AI_IsSlower(battlerAtk, battlerDef, gAiThinkingStruct->moveConsidered, predictedMoveSpeedCheck, DONT_CONSIDER_PRIORITY))
|
||||
if (AI_IsSlower(battlerAtk, battlerDef, MOVE_NONE, predictedMoveSpeedCheck, DONT_CONSIDER_PRIORITY)
|
||||
|| AI_IsSlower(BATTLE_PARTNER(battlerAtk), battlerDef, MOVE_NONE, predictedMoveSpeedCheck, DONT_CONSIDER_PRIORITY))
|
||||
tempScore += DECENT_EFFECT;
|
||||
break;
|
||||
}
|
||||
@ -2128,16 +2130,16 @@ u32 IncreaseStatDownScore(u32 battlerAtk, u32 battlerDef, u32 stat)
|
||||
tempScore += DECENT_EFFECT;
|
||||
break;
|
||||
case STAT_SPDEF:
|
||||
if (HasMoveWithCategory(battlerAtk, DAMAGE_CATEGORY_SPECIAL))
|
||||
if (HasMoveWithCategory(battlerAtk, DAMAGE_CATEGORY_SPECIAL)
|
||||
|| HasMoveWithCategory(BATTLE_PARTNER(battlerAtk), DAMAGE_CATEGORY_SPECIAL))
|
||||
tempScore += DECENT_EFFECT;
|
||||
break;
|
||||
case STAT_ACC:
|
||||
if (gBattleMons[battlerDef].status1 & STATUS1_PSN_ANY)
|
||||
tempScore += WEAK_EFFECT;
|
||||
tempScore += WEAK_EFFECT;
|
||||
if (IsBattlerTrapped(battlerAtk, battlerDef))
|
||||
tempScore += DECENT_EFFECT;
|
||||
if (gBattleMons[battlerDef].volatiles.leechSeed)
|
||||
tempScore += WEAK_EFFECT;
|
||||
if (gBattleMons[battlerDef].volatiles.root)
|
||||
tempScore += WEAK_EFFECT;
|
||||
if (gBattleMons[battlerDef].volatiles.cursed)
|
||||
tempScore += WEAK_EFFECT;
|
||||
break;
|
||||
|
||||
@ -60,7 +60,7 @@ AI_SINGLE_BATTLE_TEST("AI doesn't use accuracy-lowering moves if it knows that t
|
||||
if (abilityAI == ABILITY_MOLD_BREAKER) {
|
||||
SCORE_GT(opponent, MOVE_SAND_ATTACK, MOVE_CELEBRATE);
|
||||
} else {
|
||||
SCORE_EQ(opponent, MOVE_SAND_ATTACK, MOVE_CELEBRATE);
|
||||
SCORE_LT_VAL(opponent, MOVE_SAND_ATTACK, AI_SCORE_DEFAULT);
|
||||
}
|
||||
}
|
||||
} SCENE {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user