diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index 7c0c98bf46..e0fb048d9b 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -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; diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c index 3997797b13..04eba48677 100644 --- a/src/battle_ai_util.c +++ b/src/battle_ai_util.c @@ -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; diff --git a/test/battle/ability/minds_eye.c b/test/battle/ability/minds_eye.c index 0300c2e4d5..3772a9df1d 100644 --- a/test/battle/ability/minds_eye.c +++ b/test/battle/ability/minds_eye.c @@ -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 {