Add AI for Zero to Hero Palafin (#6791)
This commit is contained in:
parent
5820cc99f6
commit
da047dfd22
@ -769,6 +769,11 @@ static bool32 ShouldSwitchIfAbilityBenefit(u32 battler)
|
||||
break;
|
||||
|
||||
return FALSE;
|
||||
|
||||
case ABILITY_ZERO_TO_HERO:
|
||||
// Want to activate Palafin-Zero at all costs
|
||||
if (gBattleMons[battler].species == SPECIES_PALAFIN_ZERO)
|
||||
break;
|
||||
|
||||
default:
|
||||
return FALSE;
|
||||
|
||||
@ -2907,6 +2907,12 @@ enum AIPivot ShouldPivot(u32 battlerAtk, u32 battlerDef, u32 defAbility, u32 mov
|
||||
|
||||
battlerToSwitch = gBattleStruct->AI_monToSwitchIntoId[battlerAtk];
|
||||
|
||||
// Palafin always wants to activate Zero to Hero
|
||||
if (gBattleMons[battlerAtk].species == SPECIES_PALAFIN_ZERO
|
||||
&& gBattleMons[battlerAtk].ability == ABILITY_ZERO_TO_HERO
|
||||
&& CountUsablePartyMons(battlerAtk) != 0)
|
||||
return SHOULD_PIVOT;
|
||||
|
||||
if (PartyBattlerShouldAvoidHazards(battlerAtk, battlerToSwitch))
|
||||
return DONT_PIVOT;
|
||||
|
||||
|
||||
@ -1153,3 +1153,27 @@ AI_SINGLE_BATTLE_TEST("AI_FLAG_SMART_SWITCHING: AI will switch out if all moves
|
||||
TURN { EXPECT_SWITCH(opponent, 1); MOVE(player, MOVE_ROOST); }
|
||||
}
|
||||
}
|
||||
|
||||
AI_SINGLE_BATTLE_TEST("Switch AI: AI will switch out if Palafin-Zero isn't transformed yet")
|
||||
{
|
||||
GIVEN {
|
||||
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT);
|
||||
PLAYER(SPECIES_FINIZEN);
|
||||
OPPONENT(SPECIES_PALAFIN_ZERO);
|
||||
OPPONENT(SPECIES_FINIZEN);
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_CELEBRATE); EXPECT_SWITCH(opponent, 1); }
|
||||
}
|
||||
}
|
||||
|
||||
AI_SINGLE_BATTLE_TEST("Switch AI: AI will use pivot move to activate Palafin's Zero to Hero rather than hard switching")
|
||||
{
|
||||
GIVEN {
|
||||
AI_FLAGS(AI_FLAG_CHECK_BAD_MOVE | AI_FLAG_CHECK_VIABILITY | AI_FLAG_TRY_TO_FAINT);
|
||||
PLAYER(SPECIES_FINIZEN);
|
||||
OPPONENT(SPECIES_PALAFIN_ZERO) { Moves(MOVE_FLIP_TURN); }
|
||||
OPPONENT(SPECIES_FINIZEN);
|
||||
} WHEN {
|
||||
TURN { MOVE(player, MOVE_CELEBRATE); EXPECT_MOVE(opponent, MOVE_FLIP_TURN); EXPECT_SEND_OUT(opponent, 1); }
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user