From 5a1f9fa327e5514c3ebe450d8ed2a915b622699b Mon Sep 17 00:00:00 2001 From: tool4EvEr Date: Sat, 13 Nov 2021 19:36:42 +0100 Subject: [PATCH] getAlternativeCosts: only build spells when in correct zone --- .../src/main/java/forge/game/GameActionUtil.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/forge-game/src/main/java/forge/game/GameActionUtil.java b/forge-game/src/main/java/forge/game/GameActionUtil.java index 4cfb608aaa2..b3fecdba818 100644 --- a/forge-game/src/main/java/forge/game/GameActionUtil.java +++ b/forge-game/src/main/java/forge/game/GameActionUtil.java @@ -175,11 +175,15 @@ public final class GameActionUtil { final String keyword = inst.getOriginal(); if (keyword.startsWith("Disturb")) { + if (!source.isInZone(ZoneType.Graveyard)) { + continue; + } + final String[] k = keyword.split(":"); final Cost disturbCost = new Cost(k[1], true); SpellAbility newSA; - if (source.getAlternateState() != null && source.getAlternateState().getType().hasSubtype("Aura")) { + if (source.getAlternateState().getType().hasSubtype("Aura")) { newSA = source.getAlternateState().getFirstAbility().copyWithManaCostReplaced(activator, disturbCost); } else { @@ -203,6 +207,10 @@ public final class GameActionUtil { alternatives.add(newSA); } else if (keyword.startsWith("Escape")) { + if (!source.isInZone(ZoneType.Graveyard)) { + continue; + } + final String[] k = keyword.split(":"); final Cost escapeCost = new Cost(k[1], true); @@ -224,6 +232,10 @@ public final class GameActionUtil { alternatives.add(newSA); } else if (keyword.startsWith("Flashback")) { + if (!source.isInZone(ZoneType.Graveyard)) { + continue; + } + // if source has No Mana cost, and flashback doesn't have own one, // flashback can't work if (keyword.equals("Flashback") && source.getManaCost().isNoCost()) {