AI uses Magnetic Flux. (#7642)

This commit is contained in:
surskitty 2025-08-29 04:08:42 -04:00 committed by GitHub
parent f07112bda6
commit 9bfae7fa93
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 31 additions and 7 deletions

View File

@ -1557,12 +1557,7 @@ static s32 AI_CheckBadMove(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
else if (!BattlerStatCanRise(battlerAtk, aiData->abilities[battlerAtk], STAT_SPDEF))
ADJUST_SCORE(-8);
}
else if (!hasPartner)
{
ADJUST_SCORE(-10); // our stats wont rise from this move
}
if (hasPartner)
else if (hasPartner)
{
if (aiData->abilities[BATTLE_PARTNER(battlerAtk)] == ABILITY_PLUS || aiData->abilities[BATTLE_PARTNER(battlerAtk)] == ABILITY_MINUS)
{
@ -1576,6 +1571,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); // our stats wont rise from this move
}
break;
// stat lowering effects
case EFFECT_ATTACK_DOWN:
@ -4178,6 +4177,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_MAGNETIC_FLUX:
if (aiData->abilities[battlerAtk] == ABILITY_PLUS || aiData->abilities[battlerAtk] == ABILITY_MINUS)
{
ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_DEF));
ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_SPDEF));
}
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_DEF));
ADJUST_SCORE(IncreaseStatUpScore(BATTLE_PARTNER(battlerAtk), battlerDef, STAT_CHANGE_SPDEF));
}
break;
case EFFECT_ATTACK_ACCURACY_UP: // hone claws
ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_ATK));
ADJUST_SCORE(IncreaseStatUpScore(battlerAtk, battlerDef, STAT_CHANGE_ACC));

View File

@ -522,7 +522,6 @@ AI_DOUBLE_BATTLE_TEST("AI can use all moves, 601-700")
switch (effect)
{
//TODO: AI HANDLING
case EFFECT_MAGNETIC_FLUX:
case EFFECT_GEAR_UP:
case EFFECT_FAIL_IF_NOT_ARG_TYPE:
case EFFECT_STUFF_CHEEKS:
@ -541,6 +540,7 @@ 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:
// Skipped on purpose.

View File

@ -2,3 +2,16 @@
#include "test/battle.h"
TO_DO_BATTLE_TEST("TODO: Write Magnetic Flux (Move Effect) test titles")
AI_DOUBLE_BATTLE_TEST("AI uses Magnetic Flux")
{
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_KLINK) { Ability(ABILITY_PLUS); Moves(MOVE_MAGNETIC_FLUX, MOVE_POUND); }
OPPONENT(SPECIES_KLINK) { Ability(ABILITY_PLUS); Moves(MOVE_MAGNETIC_FLUX, MOVE_POUND); }
} WHEN {
TURN { EXPECT_MOVE(opponentLeft, MOVE_MAGNETIC_FLUX); }
}
}