From 90f8e0380313bd674bb8da2ce41d122c5b1e6544 Mon Sep 17 00:00:00 2001
From: drmDev <dmontur1@gmail.com>
Date: Tue, 29 Mar 2016 14:52:33 -0400
Subject: [PATCH] bug fix Ulvenwald Mysteries trigger on clue sac

---
 .../UlvenwaldMysteries.java                   | 41 ++++++++++++++++++-
 1 file changed, 39 insertions(+), 2 deletions(-)

diff --git a/Mage.Sets/src/mage/sets/shadowsoverinnistrad/UlvenwaldMysteries.java b/Mage.Sets/src/mage/sets/shadowsoverinnistrad/UlvenwaldMysteries.java
index 08a9eb83d4..92f2aa9c73 100644
--- a/Mage.Sets/src/mage/sets/shadowsoverinnistrad/UlvenwaldMysteries.java
+++ b/Mage.Sets/src/mage/sets/shadowsoverinnistrad/UlvenwaldMysteries.java
@@ -28,20 +28,24 @@
 package mage.sets.shadowsoverinnistrad;
 
 import java.util.UUID;
+import mage.abilities.TriggeredAbilityImpl;
 import mage.abilities.common.DiesCreatureTriggeredAbility;
-import mage.abilities.common.SacrificeAllTriggeredAbility;
 import mage.abilities.effects.common.CreateTokenEffect;
 import mage.abilities.effects.keyword.InvestigateEffect;
 import mage.cards.CardImpl;
 import mage.constants.CardType;
 import mage.constants.Rarity;
 import mage.constants.TargetController;
+import mage.constants.Zone;
 import mage.filter.common.FilterControlledPermanent;
 import mage.filter.common.FilterCreaturePermanent;
 import mage.filter.predicate.Predicates;
 import mage.filter.predicate.mageobject.SubtypePredicate;
 import mage.filter.predicate.permanent.ControllerPredicate;
 import mage.filter.predicate.permanent.TokenPredicate;
+import mage.game.Game;
+import mage.game.events.GameEvent;
+import mage.game.events.GameEvent.EventType;
 
 /**
  *
@@ -66,7 +70,7 @@ public class UlvenwaldMysteries extends CardImpl {
         this.addAbility(new DiesCreatureTriggeredAbility(new InvestigateEffect(), false, filter));
 
         // Whenever you sacrifice a Clue, put a 1/1 white Human Soldier creature token onto the battlefield.
-        this.addAbility(new SacrificeAllTriggeredAbility(new CreateTokenEffect(new HumanSoldierToken()), filterClue, TargetController.YOU, false));
+        this.addAbility(new UlvenwaldMysteriesTriggeredAbility());
     }
 
     public UlvenwaldMysteries(final UlvenwaldMysteries card) {
@@ -78,3 +82,36 @@ public class UlvenwaldMysteries extends CardImpl {
         return new UlvenwaldMysteries(this);
     }
 }
+
+class UlvenwaldMysteriesTriggeredAbility extends TriggeredAbilityImpl {
+
+    public UlvenwaldMysteriesTriggeredAbility() {
+        super(Zone.BATTLEFIELD, new CreateTokenEffect(new HumanSoldierToken()));
+        setLeavesTheBattlefieldTrigger(true);
+    }
+
+    public UlvenwaldMysteriesTriggeredAbility(final UlvenwaldMysteriesTriggeredAbility ability) {
+        super(ability);
+    }
+
+    @Override
+    public UlvenwaldMysteriesTriggeredAbility copy() {
+        return new UlvenwaldMysteriesTriggeredAbility(this);
+    }
+
+    @Override
+    public boolean checkEventType(GameEvent event, Game game) {
+        return event.getType() == EventType.SACRIFICED_PERMANENT;
+    }
+
+    @Override
+    public boolean checkTrigger(GameEvent event, Game game) {
+        return event.getPlayerId().equals(this.getControllerId())
+                && game.getLastKnownInformation(event.getTargetId(), Zone.BATTLEFIELD).getSubtype().contains("Clue");
+    }
+
+    @Override
+    public String getRule() {
+        return "Whenever you sacrifice a Clue, " + super.getRule();
+    }
+}
\ No newline at end of file