From f0d9988e9b0d63a501199cf8d19c40d010165b40 Mon Sep 17 00:00:00 2001
From: Jeff <jeff@delmarus.com>
Date: Fri, 14 Jul 2017 11:39:11 -0500
Subject: [PATCH] - Fixed bug #3656

---
 .../mage/watchers/common/LandfallWatcher.java   | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/Mage/src/main/java/mage/watchers/common/LandfallWatcher.java b/Mage/src/main/java/mage/watchers/common/LandfallWatcher.java
index f006cef8a8..e5b141f2c6 100644
--- a/Mage/src/main/java/mage/watchers/common/LandfallWatcher.java
+++ b/Mage/src/main/java/mage/watchers/common/LandfallWatcher.java
@@ -3,7 +3,6 @@ package mage.watchers.common;
 import java.util.HashSet;
 import java.util.Set;
 import java.util.UUID;
-import mage.constants.CardType;
 import mage.constants.WatcherScope;
 import mage.game.Game;
 import mage.game.events.GameEvent;
@@ -16,7 +15,8 @@ import mage.watchers.Watcher;
  */
 public class LandfallWatcher extends Watcher {
 
-    final Set<UUID> playerPlayedLand = new HashSet<>();
+    final Set<UUID> playerPlayedLand = new HashSet<>(); // player that played land
+    final Set<UUID> landPlayed = new HashSet<>(); // land played
 
     public LandfallWatcher() {
         super(LandfallWatcher.class.getSimpleName(), WatcherScope.GAME);
@@ -25,6 +25,7 @@ public class LandfallWatcher extends Watcher {
     public LandfallWatcher(final LandfallWatcher watcher) {
         super(watcher);
         playerPlayedLand.addAll(watcher.playerPlayedLand);
+        landPlayed.addAll(watcher.landPlayed);
     }
 
     @Override
@@ -34,10 +35,13 @@ public class LandfallWatcher extends Watcher {
 
     @Override
     public void watch(GameEvent event, Game game) {
-        if (event.getType() == GameEvent.EventType.ENTERS_THE_BATTLEFIELD) {
+        if (event.getType() == GameEvent.EventType.LAND_PLAYED) {
             Permanent permanent = game.getPermanentOrLKIBattlefield(event.getTargetId());
-            if (permanent != null && permanent.isLand() && !playerPlayedLand.contains(event.getPlayerId())) {
+            if (permanent != null
+                    && permanent.isLand()
+                    && !playerPlayedLand.contains(event.getPlayerId())) {
                 playerPlayedLand.add(event.getPlayerId());
+                landPlayed.add(event.getTargetId());
             }
         }
     }
@@ -45,10 +49,15 @@ public class LandfallWatcher extends Watcher {
     @Override
     public void reset() {
         playerPlayedLand.clear();
+        landPlayed.clear();
         super.reset();
     }
 
     public boolean landPlayed(UUID playerId) {
         return playerPlayedLand.contains(playerId);
     }
+
+    public boolean wasLandPlayed(UUID landId) {
+        return landPlayed.contains(landId);
+    }
 }