diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index 6dd50eaaa1..e35cf19828 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -2779,6 +2779,7 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) break; case ABILITY_WATER_ABSORB: case ABILITY_DRY_SKIN: + case ABILITY_EARTH_EATER: if (!(AI_THINKING_STRUCT->aiFlags[battlerAtk] & AI_FLAG_HP_AWARE)) { RETURN_SCORE_MINUS(10); @@ -4886,6 +4887,7 @@ static s32 AI_HPAware(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) { if ((effect == EFFECT_HEAL_PULSE || effect == EFFECT_HIT_ENEMY_HEAL_ALLY) || (moveType == TYPE_ELECTRIC && AI_DATA->abilities[BATTLE_PARTNER(battlerAtk)] == ABILITY_VOLT_ABSORB) + || (moveType == TYPE_GROUND && AI_DATA->abilities[BATTLE_PARTNER(battlerAtk)] == ABILITY_EARTH_EATER) || (moveType == TYPE_WATER && (AI_DATA->abilities[BATTLE_PARTNER(battlerAtk)] == ABILITY_DRY_SKIN || AI_DATA->abilities[BATTLE_PARTNER(battlerAtk)] == ABILITY_WATER_ABSORB))) { if (gStatuses3[battlerDef] & STATUS3_HEAL_BLOCK) diff --git a/src/battle_ai_switch_items.c b/src/battle_ai_switch_items.c index ae56264d87..66bea62206 100644 --- a/src/battle_ai_switch_items.c +++ b/src/battle_ai_switch_items.c @@ -356,6 +356,11 @@ static bool32 FindMonThatAbsorbsOpponentsMove(u32 battler, bool32 emitResult) absorbingTypeAbilities[0] = ABILITY_SAP_SIPPER; numAbsorbingAbilities = 1; } + else if (gMovesInfo[gLastLandedMoves[battler]].type == TYPE_GROUND) + { + absorbingTypeAbilities[0] = ABILITY_EARTH_EATER; + numAbsorbingAbilities = 1; + } else { return FALSE; diff --git a/src/battle_ai_util.c b/src/battle_ai_util.c index 8e0955b1de..cc3f8bd93c 100644 --- a/src/battle_ai_util.c +++ b/src/battle_ai_util.c @@ -410,6 +410,10 @@ bool32 IsDamageMoveUsable(u32 move, u32 battlerAtk, u32 battlerDef) if (moveType == TYPE_GRASS) return TRUE; break; + case ABILITY_EARTH_EATER: + if (moveType == TYPE_GROUND) + return TRUE; + break; } switch (gMovesInfo[move].effect)