AI handling for Coaching. (#7661)
This commit is contained in:
parent
406e5b1def
commit
927f1898bb
@ -3174,6 +3174,20 @@ static s32 AI_DoubleBattle(u32 battlerAtk, u32 battlerDef, u32 move, s32 score)
|
||||
|| HasMoveWithCriticalHitChance(battlerAtkPartner))
|
||||
ADJUST_SCORE(GOOD_EFFECT);
|
||||
break;
|
||||
case EFFECT_COACHING:
|
||||
if (!hasPartner
|
||||
|| !HasMoveWithCategory(battlerAtkPartner, DAMAGE_CATEGORY_PHYSICAL))
|
||||
{
|
||||
ADJUST_SCORE(WORST_EFFECT);
|
||||
}
|
||||
else
|
||||
{
|
||||
ADJUST_SCORE(IncreaseStatUpScore(battlerAtkPartner, BATTLE_OPPOSITE(battlerAtk), STAT_CHANGE_ATK));
|
||||
ADJUST_SCORE(IncreaseStatUpScore(battlerAtkPartner, BATTLE_OPPOSITE(battlerAtk), STAT_CHANGE_DEF));
|
||||
ADJUST_SCORE(IncreaseStatUpScore(battlerAtkPartner, BATTLE_OPPOSITE(battlerAtkPartner), STAT_CHANGE_ATK));
|
||||
ADJUST_SCORE(IncreaseStatUpScore(battlerAtkPartner, BATTLE_OPPOSITE(battlerAtkPartner), STAT_CHANGE_DEF));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
} // our effect relative to partner
|
||||
|
||||
@ -72,10 +72,11 @@ AI_DOUBLE_BATTLE_TEST("AI will not use a status move if partner already chose He
|
||||
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_OMNISCIENT);
|
||||
PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_CELEBRATE, MOVE_SCRATCH, statusMove, MOVE_WATER_GUN); }
|
||||
PLAYER(SPECIES_WOBBUFFET) { Moves(MOVE_CELEBRATE, MOVE_SCRATCH, statusMove, MOVE_WATER_GUN); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_HELPING_HAND); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_HELPING_HAND, MOVE_EXPLOSION); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Moves(MOVE_SCRATCH, statusMove, MOVE_WATER_GUN); }
|
||||
} WHEN {
|
||||
TURN { NOT_EXPECT_MOVE(opponentRight, statusMove);
|
||||
TURN { EXPECT_MOVE(opponentLeft, MOVE_HELPING_HAND);
|
||||
NOT_EXPECT_MOVE(opponentRight, statusMove);
|
||||
SCORE_LT_VAL(opponentRight, statusMove, AI_SCORE_DEFAULT, target:playerLeft);
|
||||
SCORE_LT_VAL(opponentRight, statusMove, AI_SCORE_DEFAULT, target:playerRight);
|
||||
SCORE_LT_VAL(opponentRight, statusMove, AI_SCORE_DEFAULT, target:opponentLeft);
|
||||
|
||||
@ -117,3 +117,23 @@ DOUBLE_BATTLE_TEST("Coaching fails if there's no ally")
|
||||
MESSAGE("But it failed!");
|
||||
}
|
||||
}
|
||||
|
||||
AI_DOUBLE_BATTLE_TEST("AI uses Coaching")
|
||||
{
|
||||
u32 move;
|
||||
PARAMETRIZE { move = MOVE_HEADBUTT; }
|
||||
PARAMETRIZE { move = MOVE_DAZZLING_GLEAM; }
|
||||
|
||||
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_WOBBUFFET) { Moves(MOVE_COACHING, MOVE_POUND); }
|
||||
OPPONENT(SPECIES_WOBBUFFET) { Moves(move); }
|
||||
} WHEN {
|
||||
if (move == MOVE_HEADBUTT)
|
||||
TURN { EXPECT_MOVE(opponentLeft, MOVE_COACHING); }
|
||||
else
|
||||
TURN { NOT_EXPECT_MOVE(opponentLeft, MOVE_COACHING); }
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user