- Fixed sorcery speed AI bug in AF DealDamage.

This commit is contained in:
Sloth
2012-06-30 15:41:44 +00:00
parent 125d4e4bc7
commit 8a8fdd91be

View File

@@ -37,6 +37,7 @@ import forge.card.spellability.Spell;
import forge.card.spellability.SpellAbility; import forge.card.spellability.SpellAbility;
import forge.card.spellability.Target; import forge.card.spellability.Target;
import forge.card.spellability.TargetSelection; import forge.card.spellability.TargetSelection;
import forge.game.phase.PhaseHandler;
import forge.game.phase.PhaseType; import forge.game.phase.PhaseType;
import forge.game.player.ComputerUtil; import forge.game.player.ComputerUtil;
import forge.game.player.Player; import forge.game.player.Player;
@@ -592,6 +593,7 @@ public class AbilityFactoryDealDamage {
private boolean damageChoosingTargets(final SpellAbility saMe, final Target tgt, final int dmg, private boolean damageChoosingTargets(final SpellAbility saMe, final Target tgt, final int dmg,
final boolean isTrigger, final boolean mandatory) { final boolean isTrigger, final boolean mandatory) {
final boolean noPrevention = this.abilityFactory.getMapParams().containsKey("NoPrevention"); final boolean noPrevention = this.abilityFactory.getMapParams().containsKey("NoPrevention");
final PhaseHandler phase = Singletons.getModel().getGameState().getPhaseHandler();
// target loop // target loop
tgt.resetTargets(); tgt.resetTargets();
@@ -620,10 +622,8 @@ public class AbilityFactoryDealDamage {
// on the stack // on the stack
// or from taking combat damage // or from taking combat damage
final boolean freePing = isTrigger || saMe.getPayCosts() == null || tgt.getNumTargeted() > 0 final boolean freePing = isTrigger || saMe.getPayCosts() == null || tgt.getNumTargeted() > 0
|| (Singletons.getModel().getGameState().getPhaseHandler().is(PhaseType.END_OF_TURN) && saMe.isAbility() || (phase.is(PhaseType.END_OF_TURN) && saMe.isAbility()&& phase.isNextTurn(AllZone.getComputerPlayer()))
&& Singletons.getModel().getGameState().getPhaseHandler().isNextTurn(AllZone.getComputerPlayer())) || (phase.is(PhaseType.MAIN2) && saMe.getRestrictions().getPlaneswalker());
|| (Singletons.getModel().getGameState().getPhaseHandler().is(PhaseType.MAIN2)
&& saMe.getRestrictions().getPlaneswalker());
if (freePing && saMe.canTarget(AllZone.getHumanPlayer()) && tgt.addTarget(AllZone.getHumanPlayer())) { if (freePing && saMe.canTarget(AllZone.getHumanPlayer()) && tgt.addTarget(AllZone.getHumanPlayer())) {
continue; continue;
@@ -638,11 +638,11 @@ public class AbilityFactoryDealDamage {
// TODO: Improve Damage, we shouldn't just target the player just // TODO: Improve Damage, we shouldn't just target the player just
// because we can // because we can
else if (saMe.canTarget(AllZone.getHumanPlayer()) && ((Singletons.getModel().getGameState().getPhaseHandler().is(PhaseType.END_OF_TURN) else if (saMe.canTarget(AllZone.getHumanPlayer())
&& Singletons.getModel().getGameState().getPhaseHandler().isNextTurn(AllZone.getComputerPlayer())) && ((phase.is(PhaseType.END_OF_TURN) && phase.isNextTurn(AllZone.getComputerPlayer()))
|| saMe.getPayCosts() == null || isTrigger)) { || (AbilityFactory.isSorcerySpeed(saMe) && phase.is(PhaseType.MAIN2))
|| saMe.getPayCosts() == null || isTrigger)) {
if (tgt.addTarget(AllZone.getHumanPlayer())) { if (tgt.addTarget(AllZone.getHumanPlayer())) {
System.out.println(saMe.getSourceCard() + " - damageChoosingTargets");
continue; continue;
} }
} }