diff --git a/Mage.Sets/src/mage/sets/commander/AvatarOfSlaughter.java b/Mage.Sets/src/mage/sets/commander/AvatarOfSlaughter.java
new file mode 100644
index 0000000000..bfe50914d2
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/commander/AvatarOfSlaughter.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.commander;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.effects.Effect;
+import mage.abilities.effects.common.combat.AttacksIfAbleAllEffect;
+import mage.abilities.effects.common.continuous.GainAbilityAllEffect;
+import mage.abilities.keyword.DoubleStrikeAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.filter.common.FilterCreaturePermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class AvatarOfSlaughter extends CardImpl {
+
+ public AvatarOfSlaughter(UUID ownerId) {
+ super(ownerId, 111, "Avatar of Slaughter", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{6}{R}{R}");
+ this.expansionSetCode = "CMD";
+ this.subtype.add("Avatar");
+ this.power = new MageInt(8);
+ this.toughness = new MageInt(8);
+
+ // All creatures have double strike and attack each turn if able.
+ Effect effect = new GainAbilityAllEffect(DoubleStrikeAbility.getInstance(), Duration.WhileOnBattlefield);
+ effect.setText("All creatures have double strike");
+ Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, effect);
+ effect = new AttacksIfAbleAllEffect(new FilterCreaturePermanent("creatures"));
+ effect.setText("and attack each turn if able");
+ ability.addEffect(effect);
+ this.addAbility(ability);
+ }
+
+ public AvatarOfSlaughter(final AvatarOfSlaughter card) {
+ super(card);
+ }
+
+ @Override
+ public AvatarOfSlaughter copy() {
+ return new AvatarOfSlaughter(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/conspiracy/ExtractFromDarkness.java b/Mage.Sets/src/mage/sets/conspiracy/ExtractFromDarkness.java
index 0af8c57cf1..9b30e45ef2 100644
--- a/Mage.Sets/src/mage/sets/conspiracy/ExtractFromDarkness.java
+++ b/Mage.Sets/src/mage/sets/conspiracy/ExtractFromDarkness.java
@@ -29,14 +29,10 @@ package mage.sets.conspiracy;
import java.util.UUID;
import mage.abilities.Ability;
-import mage.abilities.effects.ContinuousEffect;
import mage.abilities.effects.OneShotEffect;
-import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
-import mage.abilities.keyword.HasteAbility;
import mage.cards.Card;
import mage.cards.CardImpl;
import mage.constants.CardType;
-import mage.constants.Duration;
import mage.constants.Outcome;
import mage.constants.Rarity;
import mage.constants.Zone;
@@ -45,7 +41,6 @@ import mage.game.Game;
import mage.players.Player;
import mage.target.Target;
import mage.target.common.TargetCardInGraveyard;
-import mage.target.targetpointer.FixedTarget;
/**
*
@@ -126,13 +121,7 @@ class ExtractFromDarknessReturnFromGraveyardToBattlefieldEffect extends OneShotE
if (target.canChoose(source.getSourceId(), source.getControllerId(), game)
&& player.chooseTarget(outcome, target, source, game)) {
Card card = game.getCard(target.getFirstTarget());
- if (card != null) {
- if (card.putOntoBattlefield(game, Zone.GRAVEYARD, source.getSourceId(), source.getControllerId())) {
- ContinuousEffect effect = new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn);
- effect.setTargetPointer(new FixedTarget(card.getId()));
- game.addEffect(effect, source);
- }
- }
+ player.putOntoBattlefieldWithInfo(card, game, Zone.GRAVEYARD, source.getSourceId());
}
return true;
}
diff --git a/Mage.Sets/src/mage/sets/conspiracy/MuzzioVisionaryArchitect.java b/Mage.Sets/src/mage/sets/conspiracy/MuzzioVisionaryArchitect.java
index 195d592eae..71a562bab0 100644
--- a/Mage.Sets/src/mage/sets/conspiracy/MuzzioVisionaryArchitect.java
+++ b/Mage.Sets/src/mage/sets/conspiracy/MuzzioVisionaryArchitect.java
@@ -43,7 +43,6 @@ import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.Rarity;
import mage.constants.Zone;
-import mage.filter.FilterCard;
import mage.filter.common.FilterArtifactCard;
import mage.filter.common.FilterArtifactPermanent;
import mage.game.Game;
@@ -139,21 +138,7 @@ class MuzzioVisionaryArchitectEffect extends OneShotEffect {
}
}
-
- TargetCard target = new TargetCard(Zone.PICK, new FilterCard("card to put on the bottom of your library"));
- while (player.isInGame() && cards.size() > 1) {
- player.choose(Outcome.Neutral, cards, target, game);
- Card card = cards.get(target.getFirstTarget(), game);
- if (card != null) {
- cards.remove(card);
- card.moveToZone(Zone.LIBRARY, source.getSourceId(), game, false);
- }
- target.clearChosen();
- }
- if (cards.size() == 1) {
- Card card = cards.get(cards.iterator().next(), game);
- card.moveToZone(Zone.LIBRARY, source.getSourceId(), game, false);
- }
+ player.putCardsOnBottomOfLibrary(cards, game, source, true);
return true;
}
}
\ No newline at end of file
diff --git a/Mage.Sets/src/mage/sets/invasion/FirebrandRanger.java b/Mage.Sets/src/mage/sets/invasion/FirebrandRanger.java
index 0f293697d6..17e16b89c3 100644
--- a/Mage.Sets/src/mage/sets/invasion/FirebrandRanger.java
+++ b/Mage.Sets/src/mage/sets/invasion/FirebrandRanger.java
@@ -41,12 +41,10 @@ import mage.constants.Outcome;
import mage.constants.Rarity;
import mage.constants.Zone;
import mage.filter.FilterCard;
-import mage.filter.common.FilterLandCard;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.CardTypePredicate;
import mage.filter.predicate.mageobject.SupertypePredicate;
import mage.game.Game;
-import mage.game.permanent.Permanent;
import mage.players.Player;
import mage.target.common.TargetCardInHand;
@@ -82,7 +80,7 @@ public class FirebrandRanger extends CardImpl {
class PutLandOnBattlefieldEffect extends OneShotEffect {
- private static final FilterCard filter = new FilterCard("card other than a basic land card");
+ private static final FilterCard filter = new FilterCard("basic land card");
static {
filter.add(Predicates.and(new CardTypePredicate(CardType.LAND), new SupertypePredicate("Basic")));
@@ -116,10 +114,7 @@ class PutLandOnBattlefieldEffect extends OneShotEffect {
Card card = game.getCard(target.getFirstTarget());
if (card != null) {
card.putOntoBattlefield(game, Zone.HAND, source.getSourceId(), source.getControllerId());
- Permanent permanent = game.getPermanent(card.getId());
- if (permanent != null) {
- permanent.setTapped(true);
- }
+
return true;
}
}
diff --git a/Mage.Sets/src/mage/sets/journeyintonyx/NessianGameWarden.java b/Mage.Sets/src/mage/sets/journeyintonyx/NessianGameWarden.java
index 4fc4e9d651..c0da2b6ed2 100644
--- a/Mage.Sets/src/mage/sets/journeyintonyx/NessianGameWarden.java
+++ b/Mage.Sets/src/mage/sets/journeyintonyx/NessianGameWarden.java
@@ -1,151 +1,136 @@
-/*
- * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * The views and conclusions contained in the software and documentation are those of the
- * authors and should not be interpreted as representing official policies, either expressed
- * or implied, of BetaSteward_at_googlemail.com.
- */
-package mage.sets.journeyintonyx;
-
-import java.util.UUID;
-import mage.MageInt;
-import mage.abilities.Ability;
-import mage.abilities.common.EntersBattlefieldTriggeredAbility;
-import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
-import mage.abilities.effects.OneShotEffect;
-import mage.cards.Card;
-import mage.cards.CardImpl;
-import mage.cards.Cards;
-import mage.cards.CardsImpl;
-import mage.constants.CardType;
-import mage.constants.Outcome;
-import mage.constants.Rarity;
-import mage.constants.Zone;
-import mage.filter.FilterCard;
-import mage.filter.common.FilterControlledPermanent;
-import mage.filter.common.FilterCreatureCard;
-import mage.filter.predicate.mageobject.SubtypePredicate;
-import mage.game.Game;
-import mage.game.permanent.Permanent;
-import mage.players.Player;
-import mage.target.TargetCard;
-
-/**
- *
- * @author LevelX2
- */
-public class NessianGameWarden extends CardImpl {
-
- public NessianGameWarden(UUID ownerId) {
- super(ownerId, 132, "Nessian Game Warden", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{3}{G}{G}");
- this.expansionSetCode = "JOU";
- this.subtype.add("Beast");
-
- this.power = new MageInt(4);
- this.toughness = new MageInt(5);
-
- // When Nessian Game Warden enters the battlefield, look at the top X cards of your library, where X is the number of forests you control. You may reveal a creature card from among them and put it into your hand. Put the rest on the bottom of your library in any order.
- this.addAbility(new EntersBattlefieldTriggeredAbility(new NessianGameWardenEffect(), false));
- }
-
- public NessianGameWarden(final NessianGameWarden card) {
- super(card);
- }
-
- @Override
- public NessianGameWarden copy() {
- return new NessianGameWarden(this);
- }
-}
-
-class NessianGameWardenEffect extends OneShotEffect {
-
- private static final FilterControlledPermanent filter = new FilterControlledPermanent("forests you control");
-
- static {
- filter.add(new SubtypePredicate("Forest"));
- }
-
- public NessianGameWardenEffect() {
- super(Outcome.DrawCard);
- this.staticText = "look at the top X cards of your library, where X is the number of forests you control. You may reveal a creature card from among them and put it into your hand. Put the rest on the bottom of your library in any order";
- }
-
- public NessianGameWardenEffect(final NessianGameWardenEffect effect) {
- super(effect);
- }
-
- @Override
- public NessianGameWardenEffect copy() {
- return new NessianGameWardenEffect(this);
- }
-
- @Override
- public boolean apply(Game game, Ability source) {
- Player player = game.getPlayer(source.getControllerId());
- Permanent sourcePermanent = game.getPermanentOrLKIBattlefield(source.getSourceId());
- if (player == null || sourcePermanent == null) {
- return false;
- }
-
- Cards cards = new CardsImpl();
- int count = new PermanentsOnBattlefieldCount(filter).calculate(game, source, this);
- count = Math.min(player.getLibrary().size(), count);
- for (int i = 0; i < count; i++) {
- Card card = player.getLibrary().removeFromTop(game);
- if (card != null) {
- cards.add(card);
- }
- }
- player.lookAtCards(sourcePermanent.getName(), cards, game);
-
- if (!cards.isEmpty()) {
- TargetCard target = new TargetCard(Zone.LIBRARY, new FilterCreatureCard("creature card to put into your hand"));
- if (target.canChoose(source.getSourceId(), player.getId(), game) && player.choose(Outcome.DrawCard, cards, target, game)) {
- Card card = cards.get(target.getFirstTarget(), game);
- if (card != null) {
- player.revealCards(sourcePermanent.getName(), new CardsImpl(card), game);
- cards.remove(card);
- player.moveCardToHandWithInfo(card, source.getSourceId(), game, Zone.LIBRARY);
- }
- }
- }
-
-
- TargetCard target = new TargetCard(Zone.PICK, new FilterCard("card to put on the bottom of your library"));
- while (player.isInGame() && cards.size() > 1) {
- player.choose(Outcome.Neutral, cards, target, game);
- Card card = cards.get(target.getFirstTarget(), game);
- if (card != null) {
- cards.remove(card);
- card.moveToZone(Zone.LIBRARY, source.getSourceId(), game, false);
- }
- target.clearChosen();
- }
- if (cards.size() == 1) {
- Card card = cards.get(cards.iterator().next(), game);
- card.moveToZone(Zone.LIBRARY, source.getSourceId(), game, false);
- }
- return true;
- }
-}
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.journeyintonyx;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.EntersBattlefieldTriggeredAbility;
+import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
+import mage.abilities.effects.OneShotEffect;
+import mage.cards.Card;
+import mage.cards.CardImpl;
+import mage.cards.Cards;
+import mage.cards.CardsImpl;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.filter.common.FilterControlledPermanent;
+import mage.filter.common.FilterCreatureCard;
+import mage.filter.predicate.mageobject.SubtypePredicate;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
+import mage.players.Player;
+import mage.target.TargetCard;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class NessianGameWarden extends CardImpl {
+
+ public NessianGameWarden(UUID ownerId) {
+ super(ownerId, 132, "Nessian Game Warden", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{3}{G}{G}");
+ this.expansionSetCode = "JOU";
+ this.subtype.add("Beast");
+
+ this.power = new MageInt(4);
+ this.toughness = new MageInt(5);
+
+ // When Nessian Game Warden enters the battlefield, look at the top X cards of your library, where X is the number of forests you control. You may reveal a creature card from among them and put it into your hand. Put the rest on the bottom of your library in any order.
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new NessianGameWardenEffect(), false));
+ }
+
+ public NessianGameWarden(final NessianGameWarden card) {
+ super(card);
+ }
+
+ @Override
+ public NessianGameWarden copy() {
+ return new NessianGameWarden(this);
+ }
+}
+
+class NessianGameWardenEffect extends OneShotEffect {
+
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent("forests you control");
+
+ static {
+ filter.add(new SubtypePredicate("Forest"));
+ }
+
+ public NessianGameWardenEffect() {
+ super(Outcome.DrawCard);
+ this.staticText = "look at the top X cards of your library, where X is the number of forests you control. You may reveal a creature card from among them and put it into your hand. Put the rest on the bottom of your library in any order";
+ }
+
+ public NessianGameWardenEffect(final NessianGameWardenEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public NessianGameWardenEffect copy() {
+ return new NessianGameWardenEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player player = game.getPlayer(source.getControllerId());
+ Permanent sourcePermanent = game.getPermanentOrLKIBattlefield(source.getSourceId());
+ if (player == null || sourcePermanent == null) {
+ return false;
+ }
+
+ Cards cards = new CardsImpl();
+ int count = new PermanentsOnBattlefieldCount(filter).calculate(game, source, this);
+ count = Math.min(player.getLibrary().size(), count);
+ for (int i = 0; i < count; i++) {
+ Card card = player.getLibrary().removeFromTop(game);
+ if (card != null) {
+ cards.add(card);
+ }
+ }
+ player.lookAtCards(sourcePermanent.getName(), cards, game);
+
+ if (!cards.isEmpty()) {
+ TargetCard target = new TargetCard(Zone.LIBRARY, new FilterCreatureCard("creature card to put into your hand"));
+ if (target.canChoose(source.getSourceId(), player.getId(), game) && player.choose(Outcome.DrawCard, cards, target, game)) {
+ Card card = cards.get(target.getFirstTarget(), game);
+ if (card != null) {
+ player.revealCards(sourcePermanent.getName(), new CardsImpl(card), game);
+ cards.remove(card);
+ player.moveCardToHandWithInfo(card, source.getSourceId(), game, Zone.LIBRARY);
+ }
+ }
+ }
+
+ player.putCardsOnBottomOfLibrary(cards, game, source, true);
+ return true;
+ }
+}
diff --git a/Utils/mtg-cards-data.txt b/Utils/mtg-cards-data.txt
index 2a635f134a..1b5eb9831c 100644
--- a/Utils/mtg-cards-data.txt
+++ b/Utils/mtg-cards-data.txt
@@ -11088,7 +11088,7 @@ Faerie Noble|Masters Edition III|117|U|{2}{G}|Creature - Faerie|1|2|Flying$Other
Fire Sprites|Masters Edition III|118|C|{1}{G}|Creature - Faerie|1|1|Flying${G}, {tap}: Add {R} to your mana pool.|
Freyalise's Winds|Masters Edition III|119|R|{2}{G}{G}|Enchantment|||Whenever a permanent becomes tapped, put a wind counter on it.$If a permanent with a wind counter on it would untap during its controller's untap step, remove all wind counters from it instead.|
Guan Yu, Sainted Warrior|Masters Edition III|12|U|{3}{W}{W}|Legendary Creature - Human Soldier Warrior|3|5|Horsemanship (This creature can't be blocked except by creatures with horsemanship.)$When Guan Yu, Sainted Warrior is put into your graveyard from the battlefield, you may shuffle Guan Yu into your library.|
-Gaea's Touch|Masters Edition III|120|U|{G}{G}|Enchantment|||You may play an additional land during your turn if that land is a basic Forest.$Sacrifice Gaea's Touch: Add {G}{G} to your mana pool.|
+Gaea's Touch|Masters Edition III|120|U|{G}{G}|Enchantment|||You may put a basic Forest card from your hand onto the battlefield. Activate this ability only any time you could cast a sorcery and only once each turn.$Sacrifice Gaea's Touch: Add {G}{G} to your mana pool.|
Giant Growth|Masters Edition III|121|C|{G}|Instant|||Target creature gets +3/+3 until end of turn.|
Heavy Fog|Masters Edition III|122|C|{1}{G}|Instant|||Cast Heavy Fog only during the declare attackers step and only if you've been attacked this step.$Prevent all damage that would be dealt to you this turn by attacking creatures.|
Hua Tuo, Honored Physician|Masters Edition III|123|R|{1}{G}{G}|Legendary Creature - Human|1|2|{tap}: Put target creature card from your graveyard on top of your library. Activate this ability only during your turn, before attackers are declared.|
@@ -19206,7 +19206,7 @@ Riptide|The Dark|38|C|{U}|Instant|||Tap all blue creatures.|
Carnivorous Plant|The Dark|38|C|{3}{G}|Creature - Plant Wall|4|5|Defender|
Elves of Deep Shadow|The Dark|39|U|{G}|Creature - Elf Druid|1|1|{tap}: Add {B} to your mana pool. Elves of Deep Shadow deals 1 damage to you.|
Bog Rats|The Dark|4|C|{B}|Creature - Rat|1|1|Bog Rats can't be blocked by Walls.|
-Gaea's Touch|The Dark|40|C|{G}{G}|Enchantment|||You may play an additional land during your turn if that land is a basic Forest.$Sacrifice Gaea's Touch: Add {G}{G} to your mana pool.|
+Gaea's Touch|The Dark|40|C|{G}{G}|Enchantment|||You may put a basic Forest card from your hand onto the battlefield. Activate this ability only any time you could cast a sorcery and only once each turn.$Sacrifice Gaea's Touch: Add {G}{G} to your mana pool.|
Hidden Path|The Dark|41|R|{2}{G}{G}{G}{G}|Enchantment|||Green creatures have forestwalk.|
Land Leeches|The Dark|42|C|{1}{G}{G}|Creature - Leech|2|2|First strike|
Marsh Viper|The Dark|44|C|{3}{G}|Creature - Snake|1|2|Whenever Marsh Viper deals damage to a player, that player gets two poison counters. (A player with ten or more poison counters loses the game.)|