diff --git a/forge-game/src/main/java/forge/game/ability/effects/SurveilEffect.java b/forge-game/src/main/java/forge/game/ability/effects/SurveilEffect.java index 5729b4d7191..1c0c72efcbc 100644 --- a/forge-game/src/main/java/forge/game/ability/effects/SurveilEffect.java +++ b/forge-game/src/main/java/forge/game/ability/effects/SurveilEffect.java @@ -2,6 +2,7 @@ package forge.game.ability.effects; import forge.game.ability.AbilityUtils; import forge.game.ability.SpellAbilityEffect; +import forge.game.card.CardZoneTable; import forge.game.player.Player; import forge.game.spellability.SpellAbility; import forge.util.Lang; @@ -32,15 +33,18 @@ public class SurveilEffect extends SpellAbilityEffect { boolean isOptional = sa.hasParam("Optional"); + CardZoneTable table = new CardZoneTable(); + for (final Player p : getTargetPlayers(sa)) { if (!sa.usesTargeting() || p.canBeTargetedBy(sa)) { if (isOptional && !p.getController().confirmAction(sa, null, Localizer.getInstance().getMessage("lblDoYouWantSurveil"))) { continue; } - p.surveil(num, sa); + p.surveil(num, sa, table); } } + table.triggerChangesZoneAll(sa.getHostCard().getGame(), sa); } diff --git a/forge-game/src/main/java/forge/game/player/Player.java b/forge-game/src/main/java/forge/game/player/Player.java index 1cdd6832f38..a109941e95f 100644 --- a/forge-game/src/main/java/forge/game/player/Player.java +++ b/forge-game/src/main/java/forge/game/player/Player.java @@ -1234,7 +1234,7 @@ public class Player extends GameEntity implements Comparable { return drawCards(1, null); } - public void surveil(int num, SpellAbility cause) { + public void surveil(int num, SpellAbility cause, CardZoneTable table) { final Map repParams = AbilityKey.mapFromAffected(this); repParams.put(AbilityKey.Source, cause); repParams.put(AbilityKey.SurveilNum, num); @@ -1265,7 +1265,9 @@ public class Player extends GameEntity implements Comparable { if (toGrave != null) { for (Card c : toGrave) { - getGame().getAction().moveToGraveyard(c, cause); + ZoneType oZone = c.getZone().getZoneType(); + Card moved = getGame().getAction().moveToGraveyard(c, cause); + table.put(oZone, moved.getZone().getZoneType(), moved); numToGrave++; } }