diff --git a/src/battle_ai_main.c b/src/battle_ai_main.c index 81fd9716df..2971e68bdb 100644 --- a/src/battle_ai_main.c +++ b/src/battle_ai_main.c @@ -3562,7 +3562,9 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score) case EFFECT_PURIFY: if (gBattleMons[battlerAtkPartner].status1 & STATUS1_ANY) { - RETURN_SCORE_PLUS(WEAK_EFFECT); + if (gBattleMons[battlerAtkPartner].status1 & STATUS1_CAN_MOVE) + RETURN_SCORE_PLUS(WEAK_EFFECT); + RETURN_SCORE_PLUS(GOOD_EFFECT); } break; case EFFECT_SWAGGER: diff --git a/test/battle/move_effect/purify.c b/test/battle/move_effect/purify.c index 134c96119f..26cc661054 100644 --- a/test/battle/move_effect/purify.c +++ b/test/battle/move_effect/purify.c @@ -2,3 +2,25 @@ #include "test/battle.h" TO_DO_BATTLE_TEST("TODO: Write Purify (Move Effect) test titles") + +AI_DOUBLE_BATTLE_TEST("AI uses Purify") +{ + u32 status1; + + PARAMETRIZE { status1 = STATUS1_NONE; } + PARAMETRIZE { status1 = STATUS1_FREEZE; } + + GIVEN { + AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_TRY_TO_FAINT | AI_FLAG_CHECK_VIABILITY); + PLAYER(SPECIES_WOBBUFFET); + PLAYER(SPECIES_WOBBUFFET); + OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_HEADBUTT, MOVE_PURIFY); } + OPPONENT(SPECIES_WOBBUFFET) { Status1(status1); Moves(MOVE_HEADBUTT); } + } WHEN { + if (status1 == STATUS1_NONE) + TURN { NOT_EXPECT_MOVE(opponentLeft, MOVE_PURIFY); } + else + TURN { EXPECT_MOVE(opponentLeft, MOVE_PURIFY, target: opponentRight); } + } +} +