79 lines
3.2 KiB
C
79 lines
3.2 KiB
C
#include "global.h"
|
|
#include "test/battle.h"
|
|
#include "battle_ai_util.h"
|
|
|
|
AI_DOUBLE_BATTLE_TEST("AI_FLAG_ATTACKS_PARTNER is willing to kill either the partner or the player")
|
|
{
|
|
ASSUME(GetMoveTarget(MOVE_EARTHQUAKE) == MOVE_TARGET_FOES_AND_ALLY);
|
|
|
|
u32 move, level;
|
|
|
|
PARAMETRIZE { move = MOVE_BRUTAL_SWING; level = 1; }
|
|
PARAMETRIZE { move = MOVE_MIGHTY_CLEAVE; level = 1; }
|
|
PARAMETRIZE { move = MOVE_BRUTAL_SWING; level = 100; }
|
|
PARAMETRIZE { move = MOVE_MIGHTY_CLEAVE; level = 100; }
|
|
PARAMETRIZE { move = MOVE_BRUTAL_SWING; level = 50; }
|
|
PARAMETRIZE { move = MOVE_MIGHTY_CLEAVE; level = 50; }
|
|
|
|
GIVEN {
|
|
ASSUME(GetMovePower(MOVE_OVERDRIVE) == 80);
|
|
ASSUME(GetMovePower(MOVE_BRUTAL_SWING) == 60);
|
|
ASSUME(GetMovePower(MOVE_MIGHTY_CLEAVE) == 95);
|
|
ASSUME(gSpeciesInfo[SPECIES_ZIGZAGOON].baseAttack == gSpeciesInfo[SPECIES_ZIGZAGOON].baseSpAttack);
|
|
ASSUME(gSpeciesInfo[SPECIES_ZIGZAGOON].baseDefense == gSpeciesInfo[SPECIES_ZIGZAGOON].baseSpDefense);
|
|
ASSUME(gSpeciesInfo[SPECIES_ZIGZAGOON].baseHP == 38);
|
|
ASSUME(gSpeciesInfo[SPECIES_ZIGZAGOON].baseAttack == 30);
|
|
ASSUME(gSpeciesInfo[SPECIES_ZIGZAGOON].baseDefense == 41);
|
|
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_ATTACKS_PARTNER);
|
|
PLAYER(SPECIES_ZIGZAGOON) { Level(50); }
|
|
PLAYER(SPECIES_ZIGZAGOON) { Level(16); }
|
|
OPPONENT(SPECIES_ZIGZAGOON) { Level(50); Moves(move, MOVE_OVERDRIVE, MOVE_TACKLE); }
|
|
OPPONENT(SPECIES_ZIGZAGOON) { Level(level); Moves(MOVE_CELEBRATE); }
|
|
} WHEN {
|
|
TURN
|
|
{
|
|
if (move == MOVE_MIGHTY_CLEAVE)
|
|
{
|
|
if (level == 1)
|
|
EXPECT_MOVE(opponentLeft, move, target: opponentRight);
|
|
else
|
|
EXPECT_MOVE(opponentLeft, move, target: playerRight);
|
|
}
|
|
else
|
|
{
|
|
if (level == 1 || AI_FLAG_ATTACKS_PARTNER_FOCUSES_PARTNER)
|
|
EXPECT_MOVE(opponentLeft, move);
|
|
else
|
|
EXPECT_MOVE(opponentLeft, MOVE_OVERDRIVE);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
AI_DOUBLE_BATTLE_TEST("AI_FLAG_ATTACKS_PARTNER steps on its ally's weather")
|
|
{
|
|
u32 weather1, move1, weather2, move2;
|
|
|
|
PARAMETRIZE { weather1 = MOVE_SUNNY_DAY; move1 = MOVE_SOLAR_BEAM; weather2 = MOVE_RAIN_DANCE; move2 = MOVE_THUNDER; }
|
|
PARAMETRIZE { weather1 = MOVE_RAIN_DANCE; move1 = MOVE_THUNDER; weather2 = MOVE_SUNNY_DAY; move2 = MOVE_SOLAR_BEAM; }
|
|
|
|
GIVEN {
|
|
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_ATTACKS_PARTNER);
|
|
PLAYER(SPECIES_WOBBUFFET) { Speed(50); }
|
|
PLAYER(SPECIES_WOBBUFFET) { Speed(50); }
|
|
OPPONENT(SPECIES_WOBBUFFET) { Speed(75); Moves(weather1, move1, MOVE_HEADBUTT); }
|
|
OPPONENT(SPECIES_WOBBUFFET) { Speed(100); Moves(weather2, move2, MOVE_HEADBUTT); }
|
|
} WHEN {
|
|
TURN
|
|
{
|
|
EXPECT_MOVE(opponentLeft, weather1);
|
|
EXPECT_MOVE(opponentRight, weather2);
|
|
}
|
|
TURN
|
|
{
|
|
EXPECT_MOVE(opponentLeft, move1);
|
|
EXPECT_MOVE(opponentRight, weather2);
|
|
}
|
|
}
|
|
}
|