fix choice switches
This commit is contained in:
parent
08f11ca5c1
commit
11a7ea99f1
@ -987,10 +987,11 @@ static bool32 ShouldSwitchIfEncored(u32 battler)
|
||||
static bool32 ShouldSwitchIfBadChoiceLock(u32 battler)
|
||||
{
|
||||
u32 holdEffect = GetBattlerHoldEffect(battler, FALSE);
|
||||
u32 lastUsedMove = AI_DATA->lastUsedMove[battler];
|
||||
|
||||
if (HOLD_EFFECT_CHOICE(holdEffect) && IsBattlerItemEnabled(battler))
|
||||
{
|
||||
if (GetMoveCategory(AI_DATA->lastUsedMove[battler]) == DAMAGE_CATEGORY_STATUS && RandomPercentage(RNG_AI_SWITCH_CHOICE_LOCKED, GetSwitchChance(SHOULD_SWITCH_CHOICE_LOCKED)))
|
||||
if ((GetMoveCategory(lastUsedMove) == DAMAGE_CATEGORY_STATUS || AI_GetMoveEffectiveness(lastUsedMove, battler, GetOppositeBattler(battler)) > UQ_4_12(0.0)) && RandomPercentage(RNG_AI_SWITCH_CHOICE_LOCKED, GetSwitchChance(SHOULD_SWITCH_CHOICE_LOCKED)))
|
||||
return SetSwitchinAndSwitch(battler, PARTY_SIZE);
|
||||
}
|
||||
|
||||
|
||||
@ -195,3 +195,19 @@ AI_SINGLE_BATTLE_TEST("Choiced Pokémon won't use status move if they are trappe
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
AI_SINGLE_BATTLE_TEST("Choiced Pokémon will switch if locked into a move the player is immune to")
|
||||
{
|
||||
GIVEN {
|
||||
ASSUME(GetMoveType(MOVE_SURF) == TYPE_WATER);
|
||||
ASSUME(GetMoveType(MOVE_BODY_SLAM) == TYPE_NORMAL);
|
||||
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT);
|
||||
PLAYER(SPECIES_GASTLY) { Level(1); Moves(MOVE_CELEBRATE); }
|
||||
PLAYER(SPECIES_VAPOREON) { Ability(ABILITY_WATER_ABSORB); Moves(MOVE_SURF); }
|
||||
OPPONENT(SPECIES_ZIGZAGOON) { Item(ITEM_CHOICE_BAND); Moves(MOVE_SURF, MOVE_BODY_SLAM); }
|
||||
OPPONENT(SPECIES_ZIGZAGOON) { Item(ITEM_CHOICE_BAND); Moves(MOVE_SURF, MOVE_BODY_SLAM); }
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_CELEBRATE); EXPECT_MOVE(opponent, MOVE_SURF); SEND_OUT(player, 1); }
|
||||
TURN { MOVE(player, MOVE_SURF); EXPECT_SWITCH(opponent, 1); }
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user