AI uses After You to help set up Trick Room. (#7310)

This commit is contained in:
surskitty 2025-07-10 14:03:46 -04:00 committed by GitHub
parent cb03086c1d
commit 4e558af76e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 36 additions and 2 deletions

View File

@ -2991,6 +2991,14 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
if (IsMoveEffectWeather(move))
ADJUST_SCORE(-10);
break;
case EFFECT_AFTER_YOU:
if (effect == EFFECT_TRICK_ROOM)
ADJUST_SCORE(DECENT_EFFECT);
break;
case EFFECT_TRICK_ROOM:
if (effect == EFFECT_AFTER_YOU)
ADJUST_SCORE(DECENT_EFFECT);
break;
default:
break;
}
@ -3521,12 +3529,15 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
}
break;
case EFFECT_AFTER_YOU:
if (!(gFieldStatuses & STATUS_FIELD_TRICK_ROOM) && HasMoveWithEffect(battlerAtkPartner, EFFECT_TRICK_ROOM))
ADJUST_SCORE(DECENT_EFFECT);
if (AI_IsSlower(battlerAtkPartner, FOE(battlerAtkPartner), aiData->partnerMove) // Opponent mon 1 goes before partner
|| AI_IsSlower(battlerAtkPartner, BATTLE_PARTNER(FOE(battlerAtkPartner)), aiData->partnerMove)) // Opponent mon 2 goes before partner
&& AI_IsSlower(battlerAtkPartner, BATTLE_PARTNER(FOE(battlerAtkPartner)), aiData->partnerMove)) // Opponent mon 2 goes before partner
{
if (partnerEffect == EFFECT_COUNTER || partnerEffect == EFFECT_MIRROR_COAT)
break; // These moves need to go last
RETURN_SCORE_PLUS(WEAK_EFFECT);
ADJUST_SCORE(WEAK_EFFECT);
}
break;
case EFFECT_HEAL_PULSE:

View File

@ -410,6 +410,29 @@ AI_DOUBLE_BATTLE_TEST("AI prioritizes Skill Swapping Contrary to allied mons tha
}
}
AI_DOUBLE_BATTLE_TEST("AI uses After You to set up Trick Room")
{
u32 move;
PARAMETRIZE { move = MOVE_TRICK_ROOM; }
PARAMETRIZE { move = MOVE_MOONBLAST; }
GIVEN {
ASSUME(GetMoveEffect(MOVE_AFTER_YOU) == EFFECT_AFTER_YOU);
ASSUME(GetMoveEffect(MOVE_TRICK_ROOM) == EFFECT_TRICK_ROOM);
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY | AI_FLAG_DOUBLE_BATTLE);
PLAYER(SPECIES_WOBBUFFET) { Speed(4); }
PLAYER(SPECIES_WOBBUFFET) { Speed(4); }
OPPONENT(SPECIES_INDEEDEE_M) { Speed(5); Moves(MOVE_AFTER_YOU, MOVE_PSYCHIC); }
OPPONENT(SPECIES_CLEFAIRY) { Speed(3); Moves(move, MOVE_PSYCHIC); }
} WHEN {
if (move == MOVE_TRICK_ROOM)
TURN { EXPECT_MOVE(opponentLeft, MOVE_AFTER_YOU, target:opponentRight); EXPECT_MOVE(opponentRight, MOVE_TRICK_ROOM); }
else
TURN { NOT_EXPECT_MOVE(opponentLeft, MOVE_AFTER_YOU); }
}
}
AI_DOUBLE_BATTLE_TEST("AI uses Guard Split to improve its stats")
{