diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index f4433082c2..fbe8dd5390 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -3299,12 +3299,17 @@ static s32 AI_DoubleBattle(enum BattlerId battlerAtk, enum BattlerId battlerDef, if (gBattleMons[battlerAtkPartner].volatiles.dragonCheer || gBattleMons[battlerAtkPartner].volatiles.focusEnergy || !HasDamagingMove(battlerAtkPartner)) + { ADJUST_SCORE(-5); - else if (atkPartnerHoldEffect == HOLD_EFFECT_SCOPE_LENS - || IS_BATTLER_OF_TYPE(battlerAtkPartner, TYPE_DRAGON) - || GetMoveCriticalHitStage(aiData->partnerMove) > 0 - || HasMoveWithCriticalHitChance(battlerAtkPartner)) + } + else if (!partnerProtecting + && (atkPartnerHoldEffect == HOLD_EFFECT_SCOPE_LENS + || IS_BATTLER_OF_TYPE(battlerAtkPartner, TYPE_DRAGON) + || GetMoveCriticalHitStage(aiData->partnerMove) > 0 + || HasMoveWithCriticalHitChance(battlerAtkPartner))) + { ADJUST_SCORE(GOOD_EFFECT); + } break; case EFFECT_COACHING: if (!hasPartner @@ -3446,7 +3451,9 @@ static s32 AI_DoubleBattle(enum BattlerId battlerAtk, enum BattlerId battlerDef, switch (atkPartnerHoldEffect) { case HOLD_EFFECT_WEAKNESS_POLICY: - if (aiData->effectiveness[battlerAtk][battlerAtkPartner][gAiThinkingStruct->movesetIndex] >= UQ_4_12(2.0) && isFriendlyFireOK) + if (!partnerProtecting + && aiData->effectiveness[battlerAtk][battlerAtkPartner][gAiThinkingStruct->movesetIndex] >= UQ_4_12(2.0) + && isFriendlyFireOK) { ADJUST_SCORE(GOOD_EFFECT); } diff --git a/src/battle_ai_switch.c b/src/battle_ai_switch.c index 9b37e7b47f..178d1a1730 100644 --- a/src/battle_ai_switch.c +++ b/src/battle_ai_switch.c @@ -591,6 +591,7 @@ static bool32 FindMonThatAbsorbsOpponentsMove(enum BattlerId battler) if (incomingType == TYPE_FIRE) { absorbingTypeAbilities[numAbsorbingAbilities++] = ABILITY_FLASH_FIRE; + absorbingTypeAbilities[numAbsorbingAbilities++] = ABILITY_WELL_BAKED_BODY; } if (incomingType == TYPE_WATER) { diff --git a/test/battle/ai/ai_switching.c b/test/battle/ai/ai_switching.c index 02c579806e..8241a2de15 100644 --- a/test/battle/ai/ai_switching.c +++ b/test/battle/ai/ai_switching.c @@ -1196,6 +1196,7 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will switch out if it has an enum Move move; enum Ability absorbingAbility; PARAMETRIZE { aiMon = SPECIES_NINETALES; absorbingAbility = ABILITY_FLASH_FIRE; move = MOVE_FLAMETHROWER; } + PARAMETRIZE { aiMon = SPECIES_DACHSBUN; absorbingAbility = ABILITY_WELL_BAKED_BODY; move = MOVE_FLAMETHROWER; } PARAMETRIZE { aiMon = SPECIES_MANTINE; absorbingAbility = ABILITY_WATER_ABSORB; move = MOVE_SURF; } PARAMETRIZE { aiMon = SPECIES_TOXICROAK; absorbingAbility = ABILITY_DRY_SKIN; move = MOVE_SURF; } PARAMETRIZE { aiMon = SPECIES_GASTRODON; absorbingAbility = ABILITY_STORM_DRAIN; move = MOVE_SURF; }