AI uses Life Dew. (#7643)
This commit is contained in:
parent
16fa6c8f71
commit
3ff23ef212
@ -2165,6 +2165,20 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
|||||||
else if ((AI_GetWeather() & (B_WEATHER_LOW_LIGHT)))
|
else if ((AI_GetWeather() & (B_WEATHER_LOW_LIGHT)))
|
||||||
ADJUST_SCORE(-3);
|
ADJUST_SCORE(-3);
|
||||||
break;
|
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:
|
case EFFECT_PURIFY:
|
||||||
if (!(gBattleMons[battlerDef].status1 & STATUS1_ANY))
|
if (!(gBattleMons[battlerDef].status1 & STATUS1_ANY))
|
||||||
ADJUST_SCORE(-10);
|
ADJUST_SCORE(-10);
|
||||||
@ -4310,6 +4324,12 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move)
|
|||||||
if (ShouldRecover(battlerAtk, battlerDef, move, 50))
|
if (ShouldRecover(battlerAtk, battlerDef, move, 50))
|
||||||
ADJUST_SCORE(GOOD_EFFECT);
|
ADJUST_SCORE(GOOD_EFFECT);
|
||||||
break;
|
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_LIGHT_SCREEN:
|
||||||
case EFFECT_REFLECT:
|
case EFFECT_REFLECT:
|
||||||
case EFFECT_AURORA_VEIL:
|
case EFFECT_AURORA_VEIL:
|
||||||
|
|||||||
@ -595,7 +595,6 @@ AI_DOUBLE_BATTLE_TEST("AI can use all moves, 701-800")
|
|||||||
{
|
{
|
||||||
//TODO: AI HANDLING
|
//TODO: AI HANDLING
|
||||||
case EFFECT_CLANGOROUS_SOUL:
|
case EFFECT_CLANGOROUS_SOUL:
|
||||||
case EFFECT_LIFE_DEW:
|
|
||||||
case EFFECT_POLTERGEIST:
|
case EFFECT_POLTERGEIST:
|
||||||
case EFFECT_COACHING:
|
case EFFECT_COACHING:
|
||||||
case EFFECT_REVIVAL_BLESSING:
|
case EFFECT_REVIVAL_BLESSING:
|
||||||
@ -611,6 +610,7 @@ AI_DOUBLE_BATTLE_TEST("AI can use all moves, 701-800")
|
|||||||
// tests exist elsewhere
|
// tests exist elsewhere
|
||||||
case EFFECT_COURT_CHANGE:
|
case EFFECT_COURT_CHANGE:
|
||||||
case EFFECT_DOODLE:
|
case EFFECT_DOODLE:
|
||||||
|
case EFFECT_LIFE_DEW:
|
||||||
|
|
||||||
// Skipped on purpose.
|
// Skipped on purpose.
|
||||||
case EFFECT_PROTECT:
|
case EFFECT_PROTECT:
|
||||||
|
|||||||
@ -84,3 +84,30 @@ DOUBLE_BATTLE_TEST("Life Dew only works on partner if user is at full hp")
|
|||||||
HP_BAR(playerRight);
|
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); }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user