AI uses Life Dew. (#7643)

This commit is contained in:
surskitty 2025-08-29 14:49:28 -04:00 committed by GitHub
parent 16fa6c8f71
commit 3ff23ef212
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 48 additions and 1 deletions

View File

@ -2165,6 +2165,20 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
else if ((AI_GetWeather() & (B_WEATHER_LOW_LIGHT)))
ADJUST_SCORE(-3);
break;
case EFFECT_LIFE_DEW:
if (AI_BattlerAtMaxHp(battlerAtk))
{
if (hasPartner)
{
if (AI_BattlerAtMaxHp(BATTLE_PARTNER(battlerAtk)))
ADJUST_SCORE(-10);
}
else
{
ADJUST_SCORE(-10);
}
}
break;
case EFFECT_PURIFY:
if (!(gBattleMons[battlerDef].status1 & STATUS1_ANY))
ADJUST_SCORE(-10);
@ -4310,6 +4324,12 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move)
if (ShouldRecover(battlerAtk, battlerDef, move, 50))
ADJUST_SCORE(GOOD_EFFECT);
break;
case EFFECT_LIFE_DEW:
if (ShouldRecover(battlerAtk, battlerDef, move, 25))
ADJUST_SCORE(GOOD_EFFECT);
if (ShouldRecover(BATTLE_PARTNER(battlerAtk), battlerDef, move, 25))
ADJUST_SCORE(GOOD_EFFECT);
break;
case EFFECT_LIGHT_SCREEN:
case EFFECT_REFLECT:
case EFFECT_AURORA_VEIL:

View File

@ -595,7 +595,6 @@ AI_DOUBLE_BATTLE_TEST("AI can use all moves, 701-800")
{
//TODO: AI HANDLING
case EFFECT_CLANGOROUS_SOUL:
case EFFECT_LIFE_DEW:
case EFFECT_POLTERGEIST:
case EFFECT_COACHING:
case EFFECT_REVIVAL_BLESSING:
@ -611,6 +610,7 @@ AI_DOUBLE_BATTLE_TEST("AI can use all moves, 701-800")
// tests exist elsewhere
case EFFECT_COURT_CHANGE:
case EFFECT_DOODLE:
case EFFECT_LIFE_DEW:
// Skipped on purpose.
case EFFECT_PROTECT:

View File

@ -84,3 +84,30 @@ DOUBLE_BATTLE_TEST("Life Dew only works on partner if user is at full hp")
HP_BAR(playerRight);
}
}
AI_SINGLE_BATTLE_TEST("AI uses Life Dew if it outheals your damage and outspeeds (singles)")
{
PASSES_RANDOMLY(100, 100, RNG_AI_SHOULD_RECOVER);
GIVEN {
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_OMNISCIENT);
PLAYER(SPECIES_WOBBUFFET) { Speed(2); Moves(MOVE_TACKLE); }
OPPONENT(SPECIES_WOBBUFFET) { Speed(5); Moves(MOVE_SCALD, MOVE_LIFE_DEW); HP(1); }
} WHEN {
TURN { MOVE(player, MOVE_TACKLE); EXPECT_MOVE(opponent, MOVE_LIFE_DEW); }
}
}
AI_DOUBLE_BATTLE_TEST("AI uses Life Dew if it outheals your damage and outspeeds (doubles)")
{
PASSES_RANDOMLY(100, 100, RNG_AI_SHOULD_RECOVER);
GIVEN {
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_OMNISCIENT);
PLAYER(SPECIES_WOBBUFFET) { Speed(2); Moves(MOVE_TACKLE); }
PLAYER(SPECIES_WOBBUFFET) { Speed(2); Moves(MOVE_TACKLE); }
OPPONENT(SPECIES_WOBBUFFET) { Speed(5); Moves(MOVE_SCALD, MOVE_LIFE_DEW); HP(1); }
OPPONENT(SPECIES_WOBBUFFET) { Speed(5); Moves(MOVE_SCALD); HP(1); }
} WHEN {
TURN { MOVE(playerLeft, MOVE_TACKLE); MOVE(playerRight, MOVE_TACKLE); EXPECT_MOVE(opponentLeft, MOVE_LIFE_DEW); }
}
}