Fix Commander Dondozo Switching (#8624)
This commit is contained in:
parent
1e0e1ffca6
commit
4f55dade50
@ -1091,6 +1091,23 @@ static bool32 ShouldSwitchIfAttackingStatsLowered(u32 battler)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static bool32 CanBattlerConsiderSwitch(u32 battler)
|
||||
{
|
||||
if (gBattleMons[battler].volatiles.wrapped)
|
||||
return FALSE;
|
||||
if (gBattleMons[battler].volatiles.escapePrevention)
|
||||
return FALSE;
|
||||
if (gBattleMons[battler].volatiles.root)
|
||||
return FALSE;
|
||||
if (IsAbilityPreventingEscape(battler))
|
||||
return FALSE;
|
||||
if (gBattleStruct->battlerState[battler].commanderSpecies)
|
||||
return FALSE;
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_ARENA)
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool32 ShouldSwitch(u32 battler)
|
||||
{
|
||||
u32 battlerIn1, battlerIn2;
|
||||
@ -1100,15 +1117,7 @@ bool32 ShouldSwitch(u32 battler)
|
||||
s32 i;
|
||||
s32 availableToSwitch;
|
||||
|
||||
if (gBattleMons[battler].volatiles.wrapped)
|
||||
return FALSE;
|
||||
if (gBattleMons[battler].volatiles.escapePrevention)
|
||||
return FALSE;
|
||||
if (gBattleMons[battler].volatiles.root)
|
||||
return FALSE;
|
||||
if (IsAbilityPreventingEscape(battler))
|
||||
return FALSE;
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_ARENA)
|
||||
if (!CanBattlerConsiderSwitch(battler))
|
||||
return FALSE;
|
||||
|
||||
// Sequence Switching AI never switches mid-battle
|
||||
@ -1251,15 +1260,7 @@ void ModifySwitchAfterMoveScoring(u32 battler)
|
||||
s32 i;
|
||||
s32 availableToSwitch;
|
||||
|
||||
if (gBattleMons[battler].volatiles.wrapped)
|
||||
return;
|
||||
if (gBattleMons[battler].volatiles.escapePrevention)
|
||||
return;
|
||||
if (gBattleMons[battler].volatiles.root)
|
||||
return;
|
||||
if (IsAbilityPreventingEscape(battler))
|
||||
return;
|
||||
if (gBattleTypeFlags & BATTLE_TYPE_ARENA)
|
||||
if (!CanBattlerConsiderSwitch(battler))
|
||||
return;
|
||||
|
||||
// Sequence Switching AI never switches mid-battle
|
||||
|
||||
@ -1724,3 +1724,24 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_MON_CHOICES: AI considers both meeting and
|
||||
TURN { MOVE(player, MOVE_PROTECT); EXPECT_MOVE(opponent, MOVE_EXPLOSION); hp > 80 ? EXPECT_SEND_OUT(opponent, 2) : EXPECT_SEND_OUT(opponent, 1); }
|
||||
}
|
||||
}
|
||||
|
||||
AI_DOUBLE_BATTLE_TEST("AI will not choose to switch out Dondozo with Commander Tatsugiri")
|
||||
{
|
||||
PASSES_RANDOMLY(100, 100);
|
||||
GIVEN {
|
||||
ASSUME(GetMoveEffect(MOVE_PERISH_SONG) == EFFECT_PERISH_SONG);
|
||||
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT | AI_FLAG_SMART_SWITCHING | AI_FLAG_SMART_MON_CHOICES);
|
||||
OPPONENT(SPECIES_DONDOZO) { Level(50); Moves(MOVE_WATER_GUN); }
|
||||
OPPONENT(SPECIES_TATSUGIRI) { Moves(MOVE_WATER_GUN); Ability(ABILITY_COMMANDER); }
|
||||
OPPONENT(SPECIES_ZIGZAGOON) { Moves(MOVE_HEADBUTT); }
|
||||
PLAYER(SPECIES_ZIGZAGOON) { Moves(MOVE_CELEBRATE, MOVE_SCRATCH); }
|
||||
PLAYER(SPECIES_ZIGZAGOON) { Moves(MOVE_CELEBRATE, MOVE_PERISH_SONG); }
|
||||
PLAYER(SPECIES_ZIGZAGOON) { Moves(MOVE_CELEBRATE); }
|
||||
PLAYER(SPECIES_ZIGZAGOON) { Moves (MOVE_CELEBRATE); }
|
||||
} WHEN {
|
||||
TURN { MOVE(playerLeft, MOVE_CELEBRATE); MOVE(playerRight, MOVE_PERISH_SONG); }
|
||||
TURN { MOVE(playerLeft, MOVE_CELEBRATE); MOVE(playerRight, MOVE_CELEBRATE); }
|
||||
TURN { SWITCH(playerLeft, 2); SWITCH(playerRight, 3); }
|
||||
TURN { MOVE(playerLeft, MOVE_CELEBRATE); MOVE(playerRight, MOVE_CELEBRATE); EXPECT_MOVE(opponentLeft, MOVE_WATER_GUN); }
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user