mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-16 10:48:00 +00:00
- Fixed sorcery speed AI bug in AF DealDamage.
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user