getAlternativeCosts: only build spells when in correct zone

This commit is contained in:
tool4EvEr
2021-11-13 19:36:42 +01:00
parent 6c7706cdd1
commit 5a1f9fa327

View File

@@ -175,11 +175,15 @@ public final class GameActionUtil {
final String keyword = inst.getOriginal(); final String keyword = inst.getOriginal();
if (keyword.startsWith("Disturb")) { if (keyword.startsWith("Disturb")) {
if (!source.isInZone(ZoneType.Graveyard)) {
continue;
}
final String[] k = keyword.split(":"); final String[] k = keyword.split(":");
final Cost disturbCost = new Cost(k[1], true); final Cost disturbCost = new Cost(k[1], true);
SpellAbility newSA; SpellAbility newSA;
if (source.getAlternateState() != null && source.getAlternateState().getType().hasSubtype("Aura")) { if (source.getAlternateState().getType().hasSubtype("Aura")) {
newSA = source.getAlternateState().getFirstAbility().copyWithManaCostReplaced(activator, newSA = source.getAlternateState().getFirstAbility().copyWithManaCostReplaced(activator,
disturbCost); disturbCost);
} else { } else {
@@ -203,6 +207,10 @@ public final class GameActionUtil {
alternatives.add(newSA); alternatives.add(newSA);
} else if (keyword.startsWith("Escape")) { } else if (keyword.startsWith("Escape")) {
if (!source.isInZone(ZoneType.Graveyard)) {
continue;
}
final String[] k = keyword.split(":"); final String[] k = keyword.split(":");
final Cost escapeCost = new Cost(k[1], true); final Cost escapeCost = new Cost(k[1], true);
@@ -224,6 +232,10 @@ public final class GameActionUtil {
alternatives.add(newSA); alternatives.add(newSA);
} else if (keyword.startsWith("Flashback")) { } else if (keyword.startsWith("Flashback")) {
if (!source.isInZone(ZoneType.Graveyard)) {
continue;
}
// if source has No Mana cost, and flashback doesn't have own one, // if source has No Mana cost, and flashback doesn't have own one,
// flashback can't work // flashback can't work
if (keyword.equals("Flashback") && source.getManaCost().isNoCost()) { if (keyword.equals("Flashback") && source.getManaCost().isNoCost()) {