From 4ab1ace4d3578c95a2cd7986a0c869b30b0285a9 Mon Sep 17 00:00:00 2001 From: swordshine Date: Thu, 4 Apr 2013 10:39:07 +0000 Subject: [PATCH] - vanguard: Added Kresh the Bloodbraided Avatar - Added Karmic Justice --- .gitattributes | 4 + res/cardsfolder/k/karmic_justice.txt | 6 ++ .../k/kresh_the_bloodbraided_avatar.txt | 10 +++ src/main/java/forge/Card.java | 2 +- .../ability/effects/ControlGainEffect.java | 4 +- .../card/ability/effects/CounterEffect.java | 2 +- .../ability/effects/DestroyAllEffect.java | 4 +- .../card/ability/effects/DestroyEffect.java | 8 +- .../card/ability/effects/SacrificeEffect.java | 2 +- .../card/cardfactory/CardFactoryUtil.java | 8 ++ .../forge/card/trigger/TriggerDestroyed.java | 85 +++++++++++++++++++ .../forge/card/trigger/TriggerDevoured.java | 79 +++++++++++++++++ .../java/forge/card/trigger/TriggerType.java | 2 + src/main/java/forge/game/GameAction.java | 15 ++-- src/main/java/forge/game/GameActionUtil.java | 4 +- src/main/java/forge/game/phase/EndOfTurn.java | 4 +- src/main/java/forge/game/phase/Upkeep.java | 12 +-- src/main/java/forge/gui/GuiDisplayUtil.java | 2 +- 18 files changed, 226 insertions(+), 27 deletions(-) create mode 100644 res/cardsfolder/k/karmic_justice.txt create mode 100644 res/cardsfolder/k/kresh_the_bloodbraided_avatar.txt create mode 100644 src/main/java/forge/card/trigger/TriggerDestroyed.java create mode 100644 src/main/java/forge/card/trigger/TriggerDevoured.java diff --git a/.gitattributes b/.gitattributes index b43c75ebcce..4b707c32b3c 100644 --- a/.gitattributes +++ b/.gitattributes @@ -5565,6 +5565,7 @@ res/cardsfolder/k/karakas.txt svneol=native#text/plain res/cardsfolder/k/kargan_dragonlord.txt svneol=native#text/plain res/cardsfolder/k/karma.txt svneol=native#text/plain res/cardsfolder/k/karmic_guide.txt svneol=native#text/plain +res/cardsfolder/k/karmic_justice.txt -text res/cardsfolder/k/karn.txt -text res/cardsfolder/k/karn_liberated.txt -text res/cardsfolder/k/karn_silver_golem.txt svneol=native#text/plain @@ -5814,6 +5815,7 @@ res/cardsfolder/k/krark_clan_stoker.txt svneol=native#text/plain res/cardsfolder/k/krenko_mob_boss.txt -text res/cardsfolder/k/krenkos_command.txt -text res/cardsfolder/k/kresh_the_bloodbraided.txt svneol=native#text/plain +res/cardsfolder/k/kresh_the_bloodbraided_avatar.txt -text res/cardsfolder/k/kris_mage.txt svneol=native#text/plain res/cardsfolder/k/krond_the_dawn_clad.txt -text res/cardsfolder/k/krosa.txt -text @@ -13817,6 +13819,8 @@ src/main/java/forge/card/trigger/TriggerCounterRemoved.java -text src/main/java/forge/card/trigger/TriggerCountered.java -text src/main/java/forge/card/trigger/TriggerCycled.java svneol=native#text/plain src/main/java/forge/card/trigger/TriggerDamageDone.java svneol=native#text/plain +src/main/java/forge/card/trigger/TriggerDestroyed.java -text +src/main/java/forge/card/trigger/TriggerDevoured.java -text src/main/java/forge/card/trigger/TriggerDiscarded.java svneol=native#text/plain src/main/java/forge/card/trigger/TriggerDrawn.java svneol=native#text/plain src/main/java/forge/card/trigger/TriggerHandler.java svneol=native#text/plain diff --git a/res/cardsfolder/k/karmic_justice.txt b/res/cardsfolder/k/karmic_justice.txt new file mode 100644 index 00000000000..64d72c14040 --- /dev/null +++ b/res/cardsfolder/k/karmic_justice.txt @@ -0,0 +1,6 @@ +Name:Karmic Justice +ManaCost:2 W +Types:Enchantment +T:Mode$ Destroyed | ValidCauser$ Player.Opponent | ValidCard$ Permanent.nonCreature+YouCtrl | TriggerZones$ Battlefield | OptionalDecider$ You | Execute$ TrigDestroy | TriggerDescription$ Whenever a spell or ability an opponent controls destroys a noncreature permanent you control, you may destroy target permanent that opponent controls. +SVar:TrigDestroy:AB$ Destroy | Cost$ 0 | ValidTgts$ Permanent | TargetsWithDefinedController$ TriggeredCauser +SVar:Picture:http://www.wizards.com/global/images/magic/general/karmic_justice.jpg diff --git a/res/cardsfolder/k/kresh_the_bloodbraided_avatar.txt b/res/cardsfolder/k/kresh_the_bloodbraided_avatar.txt new file mode 100644 index 00000000000..b058c1437b6 --- /dev/null +++ b/res/cardsfolder/k/kresh_the_bloodbraided_avatar.txt @@ -0,0 +1,10 @@ +Name:Kresh the Bloodbraided Avatar +ManaCost:no cost +Types:Vanguard +HandLifeModifier:+1/-3 +T:Mode$ Devoured | ValidDevoured$ Creature.YouCtrl | TriggerZones$ Command | Execute$ TrigToken | TriggerDescription$ Whenever a creature you control is devoured, put an X/X green Ooze creature token onto the battlefield, where X is the devoured creature's power. +SVar:TrigToken:AB$ Token | Cost$ 0 | TokenImage$ G X X Ooze | TokenAmount$ 1 | TokenName$ Ooze | TokenTypes$ Creature,Ooze | TokenOwner$ You | TokenColors$ Green | TokenPower$ X | TokenToughness$ X | References$ X | TokenImage$ g x x ooze rtr | SpellDescription$ Put an X/X green Ooze creature token onto the battlefield. +SVar:X:TriggeredDevoured$CardPower +SVar:Picture:http://www.cardforge.org/fpics/vgd-lq/kresh_the_bloodbraided_avatar.jpg +Oracle:Hand +1, life -3\nWhenever a creature you control is devoured, put an X/X green Ooze creature token onto the battlefield, where X is the devoured creature's power. +SetInfo:VAN Special \ No newline at end of file diff --git a/src/main/java/forge/Card.java b/src/main/java/forge/Card.java index 168a1890016..4d48a54f78a 100644 --- a/src/main/java/forge/Card.java +++ b/src/main/java/forge/Card.java @@ -8346,7 +8346,7 @@ public class Card extends GameEntity implements Comparable { additionalLog = "(As -1/-1 Counters)"; } if (source.hasKeyword("Deathtouch") && this.isCreature()) { - Singletons.getModel().getGame().getAction().destroy(this); + Singletons.getModel().getGame().getAction().destroy(this, null); additionalLog = "(Deathtouch)"; } else if (this.isInPlay() && !wither) { this.damage += damageToAdd; diff --git a/src/main/java/forge/card/ability/effects/ControlGainEffect.java b/src/main/java/forge/card/ability/effects/ControlGainEffect.java index e0263bd79d3..839d143435f 100644 --- a/src/main/java/forge/card/ability/effects/ControlGainEffect.java +++ b/src/main/java/forge/card/ability/effects/ControlGainEffect.java @@ -197,9 +197,9 @@ public class ControlGainEffect extends SpellAbilityEffect { public void resolve() { if (bNoRegen) { - Singletons.getModel().getGame().getAction().destroyNoRegeneration(c); + Singletons.getModel().getGame().getAction().destroyNoRegeneration(c, null); } else { - Singletons.getModel().getGame().getAction().destroy(c); + Singletons.getModel().getGame().getAction().destroy(c, null); } } }; diff --git a/src/main/java/forge/card/ability/effects/CounterEffect.java b/src/main/java/forge/card/ability/effects/CounterEffect.java index c72603a9cd7..dffc1b272bc 100644 --- a/src/main/java/forge/card/ability/effects/CounterEffect.java +++ b/src/main/java/forge/card/ability/effects/CounterEffect.java @@ -106,7 +106,7 @@ public class CounterEffect extends SpellAbilityEffect { // Destroy Permanent may be able to be turned into a SubAbility if (tgtSA.isAbility() && sa.hasParam("DestroyPermanent")) { - Singletons.getModel().getGame().getAction().destroy(tgtSACard); + Singletons.getModel().getGame().getAction().destroy(tgtSACard, sa); } if (sa.hasParam("RememberCountered")) { diff --git a/src/main/java/forge/card/ability/effects/DestroyAllEffect.java b/src/main/java/forge/card/ability/effects/DestroyAllEffect.java index 43297ef91c5..6311a8993d3 100644 --- a/src/main/java/forge/card/ability/effects/DestroyAllEffect.java +++ b/src/main/java/forge/card/ability/effects/DestroyAllEffect.java @@ -87,13 +87,13 @@ public class DestroyAllEffect extends SpellAbilityEffect { if (noRegen) { for (int i = 0; i < list.size(); i++) { - if (Singletons.getModel().getGame().getAction().destroyNoRegeneration(list.get(i)) && remDestroyed) { + if (Singletons.getModel().getGame().getAction().destroyNoRegeneration(list.get(i), sa) && remDestroyed) { card.addRemembered(list.get(i)); } } } else { for (int i = 0; i < list.size(); i++) { - if (Singletons.getModel().getGame().getAction().destroy(list.get(i)) && remDestroyed) { + if (Singletons.getModel().getGame().getAction().destroy(list.get(i), sa) && remDestroyed) { card.addRemembered(list.get(i)); } } diff --git a/src/main/java/forge/card/ability/effects/DestroyEffect.java b/src/main/java/forge/card/ability/effects/DestroyEffect.java index f00c694abf0..51367b4bf37 100644 --- a/src/main/java/forge/card/ability/effects/DestroyEffect.java +++ b/src/main/java/forge/card/ability/effects/DestroyEffect.java @@ -96,9 +96,9 @@ public class DestroyEffect extends SpellAbilityEffect { if (sac) { destroyed = Singletons.getModel().getGame().getAction().sacrifice(tgtC, sa); } else if (noRegen) { - destroyed = Singletons.getModel().getGame().getAction().destroyNoRegeneration(tgtC); + destroyed = Singletons.getModel().getGame().getAction().destroyNoRegeneration(tgtC, sa); } else { - destroyed = Singletons.getModel().getGame().getAction().destroy(tgtC); + destroyed = Singletons.getModel().getGame().getAction().destroy(tgtC, sa); } if (destroyed && remDestroyed) { card.addRemembered(tgtC); } @@ -111,9 +111,9 @@ public class DestroyEffect extends SpellAbilityEffect { if (sac) { destroyed = Singletons.getModel().getGame().getAction().sacrifice(unTgtC, sa); } else if (noRegen) { - destroyed = Singletons.getModel().getGame().getAction().destroyNoRegeneration(unTgtC); + destroyed = Singletons.getModel().getGame().getAction().destroyNoRegeneration(unTgtC, sa); } else { - destroyed = Singletons.getModel().getGame().getAction().destroy(unTgtC); + destroyed = Singletons.getModel().getGame().getAction().destroy(unTgtC, sa); } if (destroyed && remDestroyed) { card.addRemembered(unTgtC); } diff --git a/src/main/java/forge/card/ability/effects/SacrificeEffect.java b/src/main/java/forge/card/ability/effects/SacrificeEffect.java index d7c53e35181..94e063c5e2d 100644 --- a/src/main/java/forge/card/ability/effects/SacrificeEffect.java +++ b/src/main/java/forge/card/ability/effects/SacrificeEffect.java @@ -66,7 +66,7 @@ public class SacrificeEffect extends SpellAbilityEffect { for(Card sac : choosenToSacrifice) { boolean wasSacrificed = !destroy && game.getAction().sacrifice(sac, sa); - boolean wasDestroyed = destroy && game.getAction().destroy(sac); + boolean wasDestroyed = destroy && game.getAction().destroy(sac, sa); if ( remSacrificed && (wasDestroyed || wasSacrificed) ) { card.addRemembered(sac); diff --git a/src/main/java/forge/card/cardfactory/CardFactoryUtil.java b/src/main/java/forge/card/cardfactory/CardFactoryUtil.java index fb3f882ed9c..c385be15a9e 100644 --- a/src/main/java/forge/card/cardfactory/CardFactoryUtil.java +++ b/src/main/java/forge/card/cardfactory/CardFactoryUtil.java @@ -3406,6 +3406,10 @@ public class CardFactoryUtil { Card dinner = (Card) o; card.addDevoured(dinner); Singletons.getModel().getGame().getAction().sacrifice(dinner, null); + final HashMap runParams = new HashMap(); + runParams.put("Devoured", dinner); + card.getController().getGame().getTriggerHandler() + .runTrigger(TriggerType.Devoured, runParams, false); } } } // human @@ -3416,6 +3420,10 @@ public class CardFactoryUtil { if ((c.getNetAttack() <= 1) && ((c.getNetAttack() + c.getNetDefense()) <= 3)) { card.addDevoured(c); Singletons.getModel().getGame().getAction().sacrifice(c, null); + final HashMap runParams = new HashMap(); + runParams.put("Devoured", c); + card.getController().getGame().getTriggerHandler() + .runTrigger(TriggerType.Devoured, runParams, false); count++; } } diff --git a/src/main/java/forge/card/trigger/TriggerDestroyed.java b/src/main/java/forge/card/trigger/TriggerDestroyed.java new file mode 100644 index 00000000000..9ce42966148 --- /dev/null +++ b/src/main/java/forge/card/trigger/TriggerDestroyed.java @@ -0,0 +1,85 @@ +/* + * Forge: Play Magic: the Gathering. + * Copyright (C) 2011 Forge Team + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package forge.card.trigger; + +import forge.Card; +import forge.card.spellability.SpellAbility; + +/** + *

+ * Trigger_Destroyed class. + *

+ * + * @author Forge + * @version $Id: TriggerDestroyed.java 17802 2012-10-31 08:05:14Z Max mtg $ + */ +public class TriggerDestroyed extends Trigger { + + /** + *

+ * Constructor for Trigger_Destroyed. + *

+ * + * @param params + * a {@link java.util.HashMap} object. + * @param host + * a {@link forge.Card} object. + * @param intrinsic + * the intrinsic + */ + public TriggerDestroyed(final java.util.Map params, final Card host, final boolean intrinsic) { + super(params, host, intrinsic); + } + + /** {@inheritDoc} */ + @Override + public final boolean performTest(final java.util.Map runParams2) { + if (this.getMapParams().containsKey("ValidCauser")) { + if (!matchesValid(runParams2.get("Causer"), this.getMapParams().get("ValidCauser").split(","), + this.getHostCard())) { + return false; + } + } + if (this.getMapParams().containsKey("ValidCard")) { + if (!matchesValid(runParams2.get("Card"), this.getMapParams().get("ValidCard").split(","), + this.getHostCard())) { + return false; + } + } + return true; + } + + /** {@inheritDoc} */ + @Override + public final Trigger getCopy() { + final Trigger copy = new TriggerDestroyed(this.getMapParams(), this.getHostCard(), this.isIntrinsic()); + if (this.getOverridingAbility() != null) { + copy.setOverridingAbility(this.getOverridingAbility()); + } + + copyFieldsTo(copy); + return copy; + } + + /** {@inheritDoc} */ + @Override + public final void setTriggeringObjects(final SpellAbility sa) { + sa.setTriggeringObject("Card", this.getRunParams().get("Card")); + sa.setTriggeringObject("Causer", this.getRunParams().get("Causer")); + } +} diff --git a/src/main/java/forge/card/trigger/TriggerDevoured.java b/src/main/java/forge/card/trigger/TriggerDevoured.java new file mode 100644 index 00000000000..4b83937cf2c --- /dev/null +++ b/src/main/java/forge/card/trigger/TriggerDevoured.java @@ -0,0 +1,79 @@ +/* + * Forge: Play Magic: the Gathering. + * Copyright (C) 2011 Forge Team + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package forge.card.trigger; + +import forge.Card; +import forge.card.spellability.SpellAbility; + +/** + *

+ * Trigger_Devoured class. + *

+ * + * @author Forge + * @version $Id: TriggerSacrificed.java 17802 2012-10-31 08:05:14Z Max mtg $ + */ +public class TriggerDevoured extends Trigger { + + /** + *

+ * Constructor for Trigger_Devoured. + *

+ * + * @param params + * a {@link java.util.HashMap} object. + * @param host + * a {@link forge.Card} object. + * @param intrinsic + * the intrinsic + */ + public TriggerDevoured(final java.util.Map params, final Card host, final boolean intrinsic) { + super(params, host, intrinsic); + } + + /** {@inheritDoc} */ + @Override + public final boolean performTest(final java.util.Map runParams2) { + final Card sac = (Card) runParams2.get("Devoured"); + if (this.getMapParams().containsKey("ValidDevoured")) { + if (!sac.isValid(this.getMapParams().get("ValidDevoured").split(","), this.getHostCard().getController(), + this.getHostCard())) { + return false; + } + } + return true; + } + + /** {@inheritDoc} */ + @Override + public final Trigger getCopy() { + final Trigger copy = new TriggerDevoured(this.getMapParams(), this.getHostCard(), this.isIntrinsic()); + if (this.getOverridingAbility() != null) { + copy.setOverridingAbility(this.getOverridingAbility()); + } + + copyFieldsTo(copy); + return copy; + } + + /** {@inheritDoc} */ + @Override + public final void setTriggeringObjects(final SpellAbility sa) { + sa.setTriggeringObject("Devoured", this.getRunParams().get("Devoured")); + } +} diff --git a/src/main/java/forge/card/trigger/TriggerType.java b/src/main/java/forge/card/trigger/TriggerType.java index 9af39aaf1d0..622a7b980a5 100644 --- a/src/main/java/forge/card/trigger/TriggerType.java +++ b/src/main/java/forge/card/trigger/TriggerType.java @@ -20,6 +20,8 @@ public enum TriggerType { ChangesZone(TriggerChangesZone.class), Clashed(TriggerClashed.class), + Destroyed(TriggerDestroyed.class), + Devoured(TriggerDevoured.class), Countered(TriggerCountered.class), TapsForMana(TriggerTapsForMana.class), CounterAdded(TriggerCounterAdded.class), diff --git a/src/main/java/forge/game/GameAction.java b/src/main/java/forge/game/GameAction.java index 50282765780..a8c86700c07 100644 --- a/src/main/java/forge/game/GameAction.java +++ b/src/main/java/forge/game/GameAction.java @@ -1018,7 +1018,7 @@ public class GameAction { checkAgain = true; } if (c.getNetDefense() <= 0 || c.getNetDefense() <= c.getDamage()) { - this.destroy(c); + this.destroy(c, null); checkAgain = true; } // Soulbond unpairing @@ -1189,7 +1189,7 @@ public class GameAction { * a {@link forge.Card} object. * @return a boolean. */ - public final boolean destroy(final Card c) { + public final boolean destroy(final Card c, final SpellAbility sa) { if (!c.canBeDestroyed()) { return false; } @@ -1208,7 +1208,7 @@ public class GameAction { return false; } - return this.destroyNoRegeneration(c); + return this.destroyNoRegeneration(c, sa); } /** @@ -1220,7 +1220,7 @@ public class GameAction { * a {@link forge.Card} object. * @return a boolean. */ - public final boolean destroyNoRegeneration(final Card c) { + public final boolean destroyNoRegeneration(final Card c, final SpellAbility sa) { if (!c.canBeDestroyed()) return false; @@ -1250,7 +1250,7 @@ public class GameAction { final AbilityStatic ability = new AbilityStatic(crd, ManaCost.ZERO) { @Override public void resolve() { - GameAction.this.destroy(crd); + GameAction.this.destroy(crd, sa); card.setDamage(0); // Play the Destroy sound @@ -1269,6 +1269,11 @@ public class GameAction { // Play the Destroy sound game.getEvents().post(new CardDestroyedEvent()); + // Run triggers + final HashMap runParams = new HashMap(); + runParams.put("Card", c); + runParams.put("Causer", sa.getActivatingPlayer()); + game.getTriggerHandler().runTrigger(TriggerType.Destroyed, runParams, false); return this.sacrificeDestroy(c); } diff --git a/src/main/java/forge/game/GameActionUtil.java b/src/main/java/forge/game/GameActionUtil.java index 73fb9ba5595..e685b7651cf 100644 --- a/src/main/java/forge/game/GameActionUtil.java +++ b/src/main/java/forge/game/GameActionUtil.java @@ -103,9 +103,9 @@ public final class GameActionUtil { public void resolve() { final GameState game = Singletons.getModel().getGame(); if ( canRegenerate ) - game.getAction().destroy(affected); + game.getAction().destroy(affected, this); else - game.getAction().destroyNoRegeneration(affected); + game.getAction().destroyNoRegeneration(affected, this); } } diff --git a/src/main/java/forge/game/phase/EndOfTurn.java b/src/main/java/forge/game/phase/EndOfTurn.java index 10f411dd34c..0ddb0ee19b4 100644 --- a/src/main/java/forge/game/phase/EndOfTurn.java +++ b/src/main/java/forge/game/phase/EndOfTurn.java @@ -96,7 +96,7 @@ public class EndOfTurn extends Phase { @Override public void resolve() { if (card.isInPlay()) { - game.getAction().destroy(card); + game.getAction().destroy(card, this); } } }; @@ -116,7 +116,7 @@ public class EndOfTurn extends Phase { @Override public void resolve() { if (card.isInPlay()) { - game.getAction().destroy(card); + game.getAction().destroy(card, this); } } }; diff --git a/src/main/java/forge/game/phase/Upkeep.java b/src/main/java/forge/game/phase/Upkeep.java index 306fe5cc6c4..d3d92dad5f9 100644 --- a/src/main/java/forge/game/phase/Upkeep.java +++ b/src/main/java/forge/game/phase/Upkeep.java @@ -285,7 +285,7 @@ public class Upkeep extends Phase { if (c.getName().equals("Cosmic Horror")) { controller.addDamage(7, c); } - game.getAction().destroy(c); + game.getAction().destroy(c, this); } } @@ -444,20 +444,20 @@ public class Upkeep extends Phase { chooseArt.setMessage(abyss.getName() + " - Select one nonartifact creature to destroy"); FThreads.setInputAndWait(chooseArt); // Input if (!chooseArt.hasCancelled()) { - game.getAction().destroyNoRegeneration(chooseArt.getSelected().get(0)); + game.getAction().destroyNoRegeneration(chooseArt.getSelected().get(0), this); } } else { // computer final List indestruct = CardLists.getKeyword(targets, "Indestructible"); if (indestruct.size() > 0) { - game.getAction().destroyNoRegeneration(indestruct.get(0)); + game.getAction().destroyNoRegeneration(indestruct.get(0), this); } else if (targets.size() > 0) { final Card target = ComputerUtilCard.getWorstCreatureAI(targets); if (null == target) { // must be nothing valid to destroy } else { - game.getAction().destroyNoRegeneration(target); + game.getAction().destroyNoRegeneration(target, this); } } } @@ -504,11 +504,11 @@ public class Upkeep extends Phase { inp.setMessage("Select creature with power: " + power + " to sacrifice."); FThreads.setInputAndWait(inp); if(!inp.hasCancelled()) - game.getAction().destroyNoRegeneration(inp.getSelected().get(0)); + game.getAction().destroyNoRegeneration(inp.getSelected().get(0), this); } else { // computer final Card compyTarget = this.getCompyCardToDestroy(creatures); - game.getAction().destroyNoRegeneration(compyTarget); + game.getAction().destroyNoRegeneration(compyTarget, this); } } } // resolve diff --git a/src/main/java/forge/gui/GuiDisplayUtil.java b/src/main/java/forge/gui/GuiDisplayUtil.java index b723be45366..5648033c35f 100644 --- a/src/main/java/forge/gui/GuiDisplayUtil.java +++ b/src/main/java/forge/gui/GuiDisplayUtil.java @@ -684,7 +684,7 @@ public final class GuiDisplayUtil { PlanarDice.roll(p, res); - Singletons.getModel().getGame().getStack().chooseOrderOfSimultaneousStackEntryAll(); + p.getGame().getStack().chooseOrderOfSimultaneousStackEntryAll(); } } // end class GuiDisplayUtil