Fix missing AI handling for partnerProtecting and Well-Baked Body (#9385)
Some checks are pending
CI / build (push) Waiting to run
CI / docs_validate (push) Waiting to run
CI / allcontributors (push) Waiting to run
Docs / deploy (push) Waiting to run

This commit is contained in:
GGbond 2026-03-02 02:02:02 +08:00 committed by GitHub
parent 9f251f95be
commit a7ecf56328
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 14 additions and 5 deletions

View File

@ -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);
}

View File

@ -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)
{

View File

@ -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; }