AI uses Gear Up. (#7641)

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

View File

@ -1526,12 +1526,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
ADJUST_SCORE(-8);
break;
}
else if (!hasPartner)
{
ADJUST_SCORE(-10); // no partner and our stats wont rise, so don't use
}
if (hasPartner)
else if (hasPartner)
{
if (aiData->abilities[BATTLE_PARTNER(battlerAtk)] == ABILITY_PLUS || aiData->abilities[BATTLE_PARTNER(battlerAtk)] == ABILITY_MINUS)
{
@ -1544,6 +1539,10 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
ADJUST_SCORE(-10); // nor our or our partner's ability is plus/minus
}
}
else
{
ADJUST_SCORE(-10); // no partner and our stats wont rise, so don't use
}
break;
case EFFECT_ACUPRESSURE:
if (DoesSubstituteBlockMove(battlerAtk, battlerDef, move) || AreBattlersStatsMaxed(battlerDef))
@ -4191,6 +4190,18 @@ static u32 AI_CalcMoveEffectScore(u32 battlerAtk, u32 battlerDef, u32 move)
ADJUST_SCORE(-2); // Should be either removed or turned into increasing score
case EFFECT_ACUPRESSURE:
break;
case EFFECT_GEAR_UP:
if (aiData->abilities[battlerAtk] == ABILITY_PLUS || aiData->abilities[battlerAtk] == ABILITY_MINUS)
{
ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_ATK));
ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_SPATK));
}
if (hasPartner && (aiData->abilities[BATTLE_PARTNER(battlerAtk)] == ABILITY_PLUS || aiData->abilities[BATTLE_PARTNER(battlerAtk)] == ABILITY_MINUS))
{
ADJUST_SCORE(IncreaseStatUpScore(BATTLE_PARTNER(battlerAtk), battlerDef, STAT_CHANGE_ATK));
ADJUST_SCORE(IncreaseStatUpScore(BATTLE_PARTNER(battlerAtk), battlerDef, STAT_CHANGE_SPATK));
}
break;
case EFFECT_MAGNETIC_FLUX:
if (aiData->abilities[battlerAtk] == ABILITY_PLUS || aiData->abilities[battlerAtk] == ABILITY_MINUS)
{

View File

@ -522,7 +522,6 @@ AI_DOUBLE_BATTLE_TEST("AI can use all moves, 601-700")
switch (effect)
{
//TODO: AI HANDLING
case EFFECT_GEAR_UP:
case EFFECT_FAIL_IF_NOT_ARG_TYPE:
case EFFECT_STUFF_CHEEKS:
case EFFECT_NO_RETREAT:
@ -540,8 +539,9 @@ AI_DOUBLE_BATTLE_TEST("AI can use all moves, 601-700")
// tests exist elsewhere
case EFFECT_ELECTRIC_TERRAIN:
case EFFECT_PSYCHIC_TERRAIN:
case EFFECT_MAGNETIC_FLUX:
case EFFECT_AURORA_VEIL:
case EFFECT_GEAR_UP:
case EFFECT_MAGNETIC_FLUX:
// Skipped on purpose.
case EFFECT_PROTECT:

View File

@ -2,3 +2,16 @@
#include "test/battle.h"
TO_DO_BATTLE_TEST("TODO: Write Gear Up (Move Effect) test titles")
AI_DOUBLE_BATTLE_TEST("AI uses Gear Up")
{
GIVEN {
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_KLINKLANG) { Ability(ABILITY_PLUS); Moves(MOVE_GEAR_UP, MOVE_WATER_GUN, MOVE_POUND); }
OPPONENT(SPECIES_KLINKLANG) { Ability(ABILITY_PLUS); Moves(MOVE_GEAR_UP, MOVE_WATER_GUN, MOVE_POUND); }
} WHEN {
TURN { EXPECT_MOVE(opponentLeft, MOVE_GEAR_UP); }
}
}