diff --git a/src/main/java/forge/Card.java b/src/main/java/forge/Card.java index 861f0b08ada..ffcbb96c330 100644 --- a/src/main/java/forge/Card.java +++ b/src/main/java/forge/Card.java @@ -48,7 +48,6 @@ import forge.card.replacement.ReplacementEffect; import forge.card.replacement.ReplacementResult; import forge.card.spellability.AbilityManaPart; import forge.card.spellability.AbilityTriggered; -import forge.card.spellability.Spell; import forge.card.spellability.SpellAbility; import forge.card.spellability.SpellPermanent; import forge.card.spellability.Target; @@ -56,9 +55,7 @@ import forge.card.staticability.StaticAbility; import forge.card.trigger.Trigger; import forge.card.trigger.TriggerType; import forge.card.trigger.ZCTrigger; -import forge.game.GameState; import forge.game.GlobalRuleChange; -import forge.game.ai.ComputerUtil; import forge.game.event.CounterAddedEvent; import forge.game.event.CardEquippedEvent; import forge.game.event.CounterRemovedEvent; @@ -1328,7 +1325,7 @@ public class Card extends GameEntity implements Comparable { } if (this.hasSuspend() && Singletons.getModel().getGame().isCardExiled(this)) { - playFromSuspend(); + getOwner().getController().playFromSuspend(this); } } @@ -1338,41 +1335,6 @@ public class Card extends GameEntity implements Comparable { this.updateObservers(); } - private void playFromSuspend() { - final Card c = this; - final GameState game = Singletons.getModel().getGame(); - - c.setSuspendCast(true); - // set activating player for base spell ability - c.getSpellAbility()[0].setActivatingPlayer(c.getOwner()); - // Any trigger should cause the phase not to skip - for (Player p : game.getPlayers()) { - p.getController().autoPassCancel(); - } - - if (c.getOwner().isHuman()) { - game.getAction().playCardWithoutManaCost(c, c.getOwner()); - } else { - final List choices = this.getBasicSpells(); - - for (final SpellAbility sa : choices) { - //Spells - if (sa instanceof Spell) { - Spell spell = (Spell) sa; - if (!spell.canPlayFromEffectAI(true, true)) { - continue; - } - } else { - if (!sa.canPlayAI()) { - continue; - } - } - ComputerUtil.playSpellAbilityWithoutPayingManaCost(c.getOwner(), sa, game); - break; - } - } - } - /** *

* Getter for the field counters. diff --git a/src/main/java/forge/card/cardfactory/CardFactory.java b/src/main/java/forge/card/cardfactory/CardFactory.java index 3a8926db3a8..80025e3b58d 100644 --- a/src/main/java/forge/card/cardfactory/CardFactory.java +++ b/src/main/java/forge/card/cardfactory/CardFactory.java @@ -28,12 +28,10 @@ import forge.Singletons; import forge.card.CardRules; import forge.card.cost.Cost; import forge.card.spellability.AbilityActivated; -import forge.card.spellability.Spell; import forge.card.spellability.SpellAbility; import forge.card.spellability.SpellPermanent; import forge.card.spellability.Target; import forge.error.ErrorViewer; -import forge.game.ai.ComputerUtil; import forge.game.player.Player; import forge.gui.GuiUtils; import forge.item.CardDb; @@ -209,16 +207,7 @@ public class CardFactory { } } - if (controller.isHuman()) { - Singletons.getModel().getGame().getAction().playSpellAbilityForFree(copySA); - } else if (copySA instanceof Spell) { - Spell spell = (Spell) copySA; - if (spell.canPlayFromEffectAI(false, true)) { - ComputerUtil.playStackFree(controller, copySA); - } - } else if (copySA.canPlayAI()) { - ComputerUtil.playStackFree(controller, copySA); - } + controller.getController().mayPlaySpellAbilityForFree(copySA); c.addController(originalController); } diff --git a/src/main/java/forge/game/ai/ComputerUtil.java b/src/main/java/forge/game/ai/ComputerUtil.java index 9457967fb04..0f4de5e98ef 100644 --- a/src/main/java/forge/game/ai/ComputerUtil.java +++ b/src/main/java/forge/game/ai/ComputerUtil.java @@ -107,7 +107,6 @@ public class ComputerUtil { if (cost == null) { ComputerUtilMana.payManaCost(ai, sa); - sa.getBeforePayManaAI().execute(); game.getStack().addAndUnfreeze(sa); return true; } else {