diff --git a/forge-game/src/main/java/forge/game/card/CardZoneTable.java b/forge-game/src/main/java/forge/game/card/CardZoneTable.java index c8867965587..a6fdf463828 100644 --- a/forge-game/src/main/java/forge/game/card/CardZoneTable.java +++ b/forge-game/src/main/java/forge/game/card/CardZoneTable.java @@ -130,9 +130,9 @@ public class CardZoneTable extends ForwardingTable origin, ZoneType destination, String valid, Card host, CardTraitBase sa) { + public CardCollection filterCards(Iterable origin, Iterable destination, String valid, Card host, CardTraitBase sa) { CardCollection allCards = new CardCollection(); - if (destination != null && !containsColumn(destination)) { + if (destination != null && !Iterables.any(destination, d -> columnKeySet().contains(d))) { return allCards; } if (origin != null) { @@ -147,9 +147,11 @@ public class CardZoneTable extends ForwardingTable trigOrigin = null; - ZoneType trigDestination = null; + List trigDestination = null; if (trigger.hasParam("Destination") && !trigger.getParam("Destination").equals("Any")) { - trigDestination = ZoneType.valueOf(trigger.getParam("Destination")); + trigDestination = ZoneType.listValueOf(trigger.getParam("Destination")); } if (trigger.hasParam("Origin") && !trigger.getParam("Origin").equals("Any")) { trigOrigin = ZoneType.listValueOf(trigger.getParam("Origin")); } CardCollection causesForTrigger = table.filterCards(trigOrigin, trigDestination, trigger.getParam("ValidCards"), trigger.getHostCard(), trigger); - CardCollection causesForStatic = table.filterCards(origin == null ? null : ImmutableList.of(ZoneType.smartValueOf(origin)), ZoneType.smartValueOf(destination), stAb.getParam("ValidCause"), host, stAb); + CardCollection causesForStatic = table.filterCards(origin == null ? null : ImmutableList.of(ZoneType.smartValueOf(origin)), destination == null ? null : ZoneType.listValueOf(destination), stAb.getParam("ValidCause"), host, stAb); // check that whatever caused the trigger to fire is also a cause the static applies for if (Collections.disjoint(causesForTrigger, causesForStatic)) { diff --git a/forge-game/src/main/java/forge/game/trigger/TriggerChangesZoneAll.java b/forge-game/src/main/java/forge/game/trigger/TriggerChangesZoneAll.java index 02cc9272c52..a71f12f2bdb 100644 --- a/forge-game/src/main/java/forge/game/trigger/TriggerChangesZoneAll.java +++ b/forge-game/src/main/java/forge/game/trigger/TriggerChangesZoneAll.java @@ -74,11 +74,11 @@ public class TriggerChangesZoneAll extends Trigger { } private CardCollection filterCards(CardZoneTable table) { - ZoneType destination = null; + List destination = null; List origin = null; if (hasParam("Destination") && !getParam("Destination").equals("Any")) { - destination = ZoneType.valueOf(getParam("Destination")); + destination = ZoneType.listValueOf(getParam("Destination")); } if (hasParam("Origin") && !getParam("Origin").equals("Any")) {