diff --git a/src/main/java/forge/Card.java b/src/main/java/forge/Card.java index 95aeceb5454..187ab052f7a 100644 --- a/src/main/java/forge/Card.java +++ b/src/main/java/forge/Card.java @@ -7299,7 +7299,7 @@ public class Card extends GameEntity implements Comparable { cardsInCommand = this.getGame().getCardsIn(ZoneType.Command); } - this.getController().getController().playSpellAbilityNoStack(shieldSA); + this.getController().getController().playSpellAbilityNoStack(shieldSA, true); if (apiIsEffect) { List newCardsInCommand = this.getGame().getCardsIn(ZoneType.Command); newCardsInCommand.removeAll(cardsInCommand); diff --git a/src/main/java/forge/card/ability/ai/DamageDealAi.java b/src/main/java/forge/card/ability/ai/DamageDealAi.java index d089366cfca..0e09a176e89 100644 --- a/src/main/java/forge/card/ability/ai/DamageDealAi.java +++ b/src/main/java/forge/card/ability/ai/DamageDealAi.java @@ -4,7 +4,6 @@ import java.util.List; import java.util.Random; import com.google.common.base.Predicate; -import com.google.common.collect.Iterables; import com.google.common.collect.Lists; import forge.Card; diff --git a/src/main/java/forge/card/cardfactory/CardFactoryCreatures.java b/src/main/java/forge/card/cardfactory/CardFactoryCreatures.java index 513fde35522..cbc11cc4548 100644 --- a/src/main/java/forge/card/cardfactory/CardFactoryCreatures.java +++ b/src/main/java/forge/card/cardfactory/CardFactoryCreatures.java @@ -21,12 +21,10 @@ import java.util.ArrayList; import java.util.List; import com.google.common.base.Predicate; -import com.google.common.base.Predicates; import com.google.common.collect.Iterables; import forge.Card; import forge.CardLists; -import forge.CardPredicates; import forge.Singletons; import forge.CardPredicates.Presets; import forge.Command; @@ -38,19 +36,14 @@ import forge.card.spellability.AbilityActivated; import forge.card.spellability.AbilityStatic; import forge.card.spellability.SpellAbility; import forge.card.spellability.SpellPermanent; -import forge.card.spellability.TargetRestrictions; import forge.card.trigger.Trigger; import forge.card.trigger.TriggerHandler; import forge.game.Game; -import forge.game.ai.ComputerUtilCard; -import forge.game.ai.ComputerUtilCombat; import forge.game.player.Player; import forge.game.zone.PlayerZone; import forge.game.zone.ZoneType; import forge.gui.GuiChoose; import forge.gui.input.InputSelectCards; -import forge.gui.input.InputSelectCardsFromList; -import forge.util.Aggregates; /** *

diff --git a/src/main/java/forge/card/replacement/ReplacementHandler.java b/src/main/java/forge/card/replacement/ReplacementHandler.java index 566372c7874..95424ab0d63 100644 --- a/src/main/java/forge/card/replacement/ReplacementHandler.java +++ b/src/main/java/forge/card/replacement/ReplacementHandler.java @@ -238,7 +238,7 @@ public class ReplacementHandler { } Player player = replacementEffect.getHostCard().getController(); - player.getController().playSpellAbilityNoStack(effectSA); + player.getController().playSpellAbilityNoStack(effectSA, true); return ReplacementResult.Replaced; } diff --git a/src/main/java/forge/card/trigger/WrappedAbility.java b/src/main/java/forge/card/trigger/WrappedAbility.java index 60f1048973a..b7b17d99009 100644 --- a/src/main/java/forge/card/trigger/WrappedAbility.java +++ b/src/main/java/forge/card/trigger/WrappedAbility.java @@ -352,7 +352,7 @@ public class WrappedAbility extends Ability implements ISpellAbility { if (decider != null && !confirmTrigger(decider, triggerParams)) return; - getActivatingPlayer().getController().playSpellAbilityNoStack(sa); + getActivatingPlayer().getController().playSpellAbilityNoStack(sa, false); // Add eventual delayed trigger. if (triggerParams.containsKey("DelayedTrigger")) { diff --git a/src/main/java/forge/game/GameAction.java b/src/main/java/forge/game/GameAction.java index c6ac834b39e..d5a98468eb8 100644 --- a/src/main/java/forge/game/GameAction.java +++ b/src/main/java/forge/game/GameAction.java @@ -1624,7 +1624,7 @@ public class GameAction { if (!takesAction.getZone(ZoneType.Hand).contains(sa.getSourceCard())) continue; - takesAction.getController().playSpellAbilityNoStack(sa); + takesAction.getController().playSpellAbilityNoStack(sa, true); } takesAction = game.getNextPlayerAfter(takesAction); } while( takesAction != first ); diff --git a/src/main/java/forge/game/player/Player.java b/src/main/java/forge/game/player/Player.java index 77141d86832..49945777a1d 100644 --- a/src/main/java/forge/game/player/Player.java +++ b/src/main/java/forge/game/player/Player.java @@ -920,7 +920,7 @@ public class Player extends GameEntity implements Comparable { cardsInCommand = this.getGame().getCardsIn(ZoneType.Command); } - this.getController().playSpellAbilityNoStack(shieldSA); + this.getController().playSpellAbilityNoStack(shieldSA, true); if (apiIsEffect) { List newCardsInCommand = this.getGame().getCardsIn(ZoneType.Command); newCardsInCommand.removeAll(cardsInCommand); diff --git a/src/main/java/forge/game/player/PlayerController.java b/src/main/java/forge/game/player/PlayerController.java index 281096d928a..5befbd4ca25 100644 --- a/src/main/java/forge/game/player/PlayerController.java +++ b/src/main/java/forge/game/player/PlayerController.java @@ -97,7 +97,7 @@ public abstract class PlayerController { //public abstract void playFromSuspend(Card c); public abstract boolean playCascade(Card cascadedCard, Card sourceCard); public abstract void playSpellAbilityForFree(SpellAbility copySA, boolean mayChoseNewTargets); - public abstract void playSpellAbilityNoStack(SpellAbility effectSA); + public abstract void playSpellAbilityNoStack(SpellAbility effectSA, boolean mayChoseNewTargets); public abstract Deck sideboard(final Deck deck, GameType gameType); diff --git a/src/main/java/forge/game/player/PlayerControllerAi.java b/src/main/java/forge/game/player/PlayerControllerAi.java index d905e4bc251..739b6be6bcf 100644 --- a/src/main/java/forge/game/player/PlayerControllerAi.java +++ b/src/main/java/forge/game/player/PlayerControllerAi.java @@ -251,7 +251,9 @@ public class PlayerControllerAi extends PlayerController { } @Override - public void playSpellAbilityNoStack(SpellAbility effectSA) { + public void playSpellAbilityNoStack(SpellAbility effectSA, boolean canSetupTargets) { + if ( canSetupTargets ) + effectSA.doTrigger(true, player); // first parameter does not matter, since return value won't be used ComputerUtil.playNoStack(player, effectSA, game); } diff --git a/src/main/java/forge/game/player/PlayerControllerHuman.java b/src/main/java/forge/game/player/PlayerControllerHuman.java index 591cc7d6c3e..b41e7bb9047 100644 --- a/src/main/java/forge/game/player/PlayerControllerHuman.java +++ b/src/main/java/forge/game/player/PlayerControllerHuman.java @@ -124,8 +124,8 @@ public class PlayerControllerHuman extends PlayerController { } @Override - public void playSpellAbilityNoStack(SpellAbility effectSA) { - HumanPlay.playSpellAbilityNoStack(player, effectSA); + public void playSpellAbilityNoStack(SpellAbility effectSA, boolean canSetupTargets) { + HumanPlay.playSpellAbilityNoStack(player, effectSA, !canSetupTargets); } /* (non-Javadoc)