AI uses Flower Shield. (#7640)

This commit is contained in:
surskitty 2025-08-29 04:10:59 -04:00 committed by GitHub
parent 9bfae7fa93
commit 16fa6c8f71
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 41 additions and 1 deletions

View File

@ -4224,6 +4224,30 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move)
ADJUST_SCORE(AWFUL_EFFECT);
}
break;
case EFFECT_FLOWER_SHIELD:
if (IS_BATTLER_OF_TYPE(battlerAtk, TYPE_GRASS))
{
ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_DEF));
}
if (hasPartner && IS_BATTLER_OF_TYPE(BATTLE_PARTNER(battlerAtk), TYPE_GRASS))
{
ADJUST_SCORE(IncreaseStatUpScore(BATTLE_PARTNER(battlerAtk), battlerDef, STAT_CHANGE_DEF));
}
if (IS_BATTLER_OF_TYPE(FOE(battlerAtk), TYPE_GRASS))
{
if (aiData->abilities[FOE(battlerAtk)] == ABILITY_CONTRARY)
ADJUST_SCORE(WEAK_EFFECT);
else
ADJUST_SCORE(AWFUL_EFFECT);
}
if (IS_BATTLER_OF_TYPE(BATTLE_PARTNER(FOE(battlerAtk)), TYPE_GRASS))
{
if (aiData->abilities[BATTLE_PARTNER(FOE(battlerAtk))] == ABILITY_CONTRARY)
ADJUST_SCORE(WEAK_EFFECT);
else
ADJUST_SCORE(AWFUL_EFFECT);
}
break;
case EFFECT_HAZE:
if (AnyStatIsRaised(BATTLE_PARTNER(battlerAtk))
|| DoesPartnerHaveSameMoveEffect(BATTLE_PARTNER(battlerAtk), battlerDef, move, aiData->partnerMove))

View File

@ -456,7 +456,6 @@ AI_DOUBLE_BATTLE_TEST("AI can use all moves, 501-600")
case EFFECT_ION_DELUGE:
case EFFECT_AROMATIC_MIST:
case EFFECT_POWDER:
case EFFECT_FLOWER_SHIELD:
case EFFECT_ELECTRIFY:
//TODO: AI TESTS
@ -467,6 +466,7 @@ AI_DOUBLE_BATTLE_TEST("AI can use all moves, 501-600")
case EFFECT_FAIRY_LOCK:
// tests exist elsewhere
case EFFECT_FLOWER_SHIELD:
case EFFECT_ROTOTILLER:
case EFFECT_GRASSY_TERRAIN:
case EFFECT_MISTY_TERRAIN:

View File

@ -37,3 +37,19 @@ DOUBLE_BATTLE_TEST("Flower Shield raises the defense of all Grass-type Pokémon"
}
TO_DO_BATTLE_TEST("Flower Shield fails if there's no Grass-type Pokémon on the field")
AI_DOUBLE_BATTLE_TEST("AI uses Flower Shield")
{
GIVEN {
ASSUME(GetSpeciesType(SPECIES_TANGELA, 0) == TYPE_GRASS);
ASSUME(GetSpeciesType(SPECIES_WOBBUFFET, 0) != TYPE_GRASS);
ASSUME(GetSpeciesType(SPECIES_WOBBUFFET, 1) != TYPE_GRASS);
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_OMNISCIENT);
PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_POUND, MOVE_CELEBRATE); }
PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_POUND, MOVE_CELEBRATE); }
OPPONENT(SPECIES_TANGELA) { Moves(MOVE_FLOWER_SHIELD, MOVE_POUND); }
OPPONENT(SPECIES_TANGELA);
} WHEN {
TURN { EXPECT_MOVE(opponentLeft, MOVE_FLOWER_SHIELD); }
}
}