From 3dbbfac1baa93f85696e06a17aee0b32439a679e Mon Sep 17 00:00:00 2001
From: North <robyter@gmail>
Date: Sun, 29 Apr 2012 12:30:05 +0300
Subject: [PATCH] [AVR] 5 cards

---
 .../avacynrestored/AmassTheComponents.java    | 110 +++++++++++
 .../avacynrestored/AppetiteForBrains.java     | 111 +++++++++++
 .../sets/avacynrestored/BarterInBlood.java    | 112 +++++++++++
 .../sets/avacynrestored/BurnAtTheStake.java   | 175 ++++++++++++++++++
 .../avacynrestored/DesolateLighthouse.java    |  69 +++++++
 .../src/mage/sets/mirrodin/BarterInBlood.java |  52 ++++++
 6 files changed, 629 insertions(+)
 create mode 100644 Mage.Sets/src/mage/sets/avacynrestored/AmassTheComponents.java
 create mode 100644 Mage.Sets/src/mage/sets/avacynrestored/AppetiteForBrains.java
 create mode 100644 Mage.Sets/src/mage/sets/avacynrestored/BarterInBlood.java
 create mode 100644 Mage.Sets/src/mage/sets/avacynrestored/BurnAtTheStake.java
 create mode 100644 Mage.Sets/src/mage/sets/avacynrestored/DesolateLighthouse.java
 create mode 100644 Mage.Sets/src/mage/sets/mirrodin/BarterInBlood.java

diff --git a/Mage.Sets/src/mage/sets/avacynrestored/AmassTheComponents.java b/Mage.Sets/src/mage/sets/avacynrestored/AmassTheComponents.java
new file mode 100644
index 0000000000..eab57b5f3e
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/avacynrestored/AmassTheComponents.java
@@ -0,0 +1,110 @@
+/*
+ *  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.avacynrestored;
+
+import java.util.UUID;
+import mage.Constants.CardType;
+import mage.Constants.Outcome;
+import mage.Constants.Rarity;
+import mage.Constants.Zone;
+import mage.abilities.Ability;
+import mage.abilities.effects.OneShotEffect;
+import mage.cards.Card;
+import mage.cards.CardImpl;
+import mage.filter.FilterCard;
+import mage.game.Game;
+import mage.players.Player;
+import mage.target.TargetCard;
+
+/**
+ *
+ * @author North
+ */
+public class AmassTheComponents extends CardImpl<AmassTheComponents> {
+
+    public AmassTheComponents(UUID ownerId) {
+        super(ownerId, 43, "Amass the Components", Rarity.COMMON, new CardType[]{CardType.SORCERY}, "{3}{U}");
+        this.expansionSetCode = "AVR";
+
+        this.color.setBlue(true);
+
+        // Draw three cards, then put a card from your hand on the bottom of your library.
+        this.getSpellAbility().addEffect(new AmassTheComponentsEffect());
+
+    }
+
+    public AmassTheComponents(final AmassTheComponents card) {
+        super(card);
+    }
+
+    @Override
+    public AmassTheComponents copy() {
+        return new AmassTheComponents(this);
+    }
+}
+
+class AmassTheComponentsEffect extends OneShotEffect<AmassTheComponentsEffect> {
+
+    public AmassTheComponentsEffect() {
+        super(Outcome.DrawCard);
+        this.staticText = "Draw three cards, then put a card from your hand on the bottom of your library";
+    }
+
+    public AmassTheComponentsEffect(final AmassTheComponentsEffect effect) {
+        super(effect);
+    }
+
+    @Override
+    public AmassTheComponentsEffect copy() {
+        return new AmassTheComponentsEffect(this);
+    }
+
+    @Override
+    public boolean apply(Game game, Ability source) {
+        Player player = game.getPlayer(source.getControllerId());
+        if (player == null) {
+            return false;
+        }
+
+        player.drawCards(3, game);
+        if (player.getHand().size() > 0) {
+            FilterCard filter = new FilterCard("card from your hand to put on the bottom of your library");
+            TargetCard target = new TargetCard(Zone.HAND, filter);
+            target.setRequired(true);
+
+            if (player.choose(Outcome.Detriment, player.getHand(), target, game)) {
+                Card card = player.getHand().get(target.getFirstTarget(), game);
+                if (card != null) {
+                    player.removeFromHand(card, game);
+                    card.moveToZone(Zone.LIBRARY, source.getId(), game, false);
+                }
+            }
+        }
+        return true;
+    }
+}
diff --git a/Mage.Sets/src/mage/sets/avacynrestored/AppetiteForBrains.java b/Mage.Sets/src/mage/sets/avacynrestored/AppetiteForBrains.java
new file mode 100644
index 0000000000..468f30cb20
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/avacynrestored/AppetiteForBrains.java
@@ -0,0 +1,111 @@
+/*
+ *  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.avacynrestored;
+
+import java.util.UUID;
+import mage.Constants.CardType;
+import mage.Constants.Outcome;
+import mage.Constants.Rarity;
+import mage.Constants.Zone;
+import mage.abilities.Ability;
+import mage.abilities.effects.OneShotEffect;
+import mage.cards.Card;
+import mage.cards.CardImpl;
+import mage.filter.Filter;
+import mage.filter.FilterCard;
+import mage.game.Game;
+import mage.players.Player;
+import mage.target.TargetCard;
+import mage.target.common.TargetOpponent;
+
+/**
+ *
+ * @author North
+ */
+public class AppetiteForBrains extends CardImpl<AppetiteForBrains> {
+
+    public AppetiteForBrains(UUID ownerId) {
+        super(ownerId, 84, "Appetite for Brains", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{B}");
+        this.expansionSetCode = "AVR";
+
+        this.color.setBlack(true);
+
+        // Target opponent reveals his or her hand. You choose a card from it with converted mana cost 4 or greater and exile that card.
+        this.getSpellAbility().addEffect(new AppetiteForBrainsEffect());
+        this.getSpellAbility().addTarget(new TargetOpponent());
+    }
+
+    public AppetiteForBrains(final AppetiteForBrains card) {
+        super(card);
+    }
+
+    @Override
+    public AppetiteForBrains copy() {
+        return new AppetiteForBrains(this);
+    }
+}
+
+class AppetiteForBrainsEffect extends OneShotEffect<AppetiteForBrainsEffect> {
+
+    public AppetiteForBrainsEffect() {
+        super(Outcome.Exile);
+        this.staticText = "Target opponent reveals his or her hand. You choose a card from it with converted mana cost 4 or greater and exile that card";
+    }
+
+    public AppetiteForBrainsEffect(final AppetiteForBrainsEffect effect) {
+        super(effect);
+    }
+
+    @Override
+    public AppetiteForBrainsEffect copy() {
+        return new AppetiteForBrainsEffect(this);
+    }
+
+    @Override
+    public boolean apply(Game game, Ability source) {
+        Player player = game.getPlayer(source.getControllerId());
+        Player targetPlayer = game.getPlayer(source.getFirstTarget());
+        if (player != null && targetPlayer != null) {
+            FilterCard filter = new FilterCard("with converted mana cost 4 or greater");
+            filter.setConvertedManaCost(3);
+            filter.setConvertedManaCostComparison(Filter.ComparisonType.GreaterThan);
+
+            targetPlayer.revealCards("Appetite for Brains", targetPlayer.getHand(), game);
+            TargetCard target = new TargetCard(Zone.PICK, filter);
+            target.setRequired(true);
+            if (targetPlayer.getHand().count(filter, game) > 0
+                    && player.choose(Outcome.Exile, targetPlayer.getHand(), target, game)) {
+                Card card = targetPlayer.getHand().get(target.getFirstTarget(), game);
+                if (card != null) {
+                    return card.moveToExile(null, "", source.getId(), game);
+                }
+            }
+        }
+        return false;
+    }
+}
diff --git a/Mage.Sets/src/mage/sets/avacynrestored/BarterInBlood.java b/Mage.Sets/src/mage/sets/avacynrestored/BarterInBlood.java
new file mode 100644
index 0000000000..fffd05fe0c
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/avacynrestored/BarterInBlood.java
@@ -0,0 +1,112 @@
+/*
+ *  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.avacynrestored;
+
+import java.util.UUID;
+import mage.Constants.CardType;
+import mage.Constants.Outcome;
+import mage.Constants.Rarity;
+import mage.abilities.Ability;
+import mage.abilities.effects.OneShotEffect;
+import mage.cards.CardImpl;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
+import mage.players.Player;
+import mage.target.Target;
+import mage.target.common.TargetControlledPermanent;
+
+/**
+ *
+ * @author North
+ */
+public class BarterInBlood extends CardImpl<BarterInBlood> {
+
+    public BarterInBlood(UUID ownerId) {
+        super(ownerId, 85, "Barter in Blood", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{2}{B}{B}");
+        this.expansionSetCode = "AVR";
+
+        this.color.setBlack(true);
+
+        // Each player sacrifices two creatures.
+        this.getSpellAbility().addEffect(new BarterInBloodEffect());
+    }
+
+    public BarterInBlood(final BarterInBlood card) {
+        super(card);
+    }
+
+    @Override
+    public BarterInBlood copy() {
+        return new BarterInBlood(this);
+    }
+}
+
+class BarterInBloodEffect extends OneShotEffect<BarterInBloodEffect> {
+
+    public BarterInBloodEffect() {
+        super(Outcome.Sacrifice);
+        this.staticText = "Each player sacrifices two creatures";
+    }
+
+    public BarterInBloodEffect(final BarterInBloodEffect effect) {
+        super(effect);
+    }
+
+    @Override
+    public BarterInBloodEffect copy() {
+        return new BarterInBloodEffect(this);
+    }
+
+    @Override
+    public boolean apply(Game game, Ability source) {
+        Player controller = game.getPlayer(source.getControllerId());
+        if (controller != null) {
+            FilterCreaturePermanent filter = new FilterCreaturePermanent();
+            for (UUID playerId : controller.getInRange()) {
+                Player player = game.getPlayer(playerId);
+                if (player != null) {
+                    int amount = Math.min(2, game.getBattlefield().countAll(filter, player.getId()));
+                    Target target = new TargetControlledPermanent(amount, amount, filter, false);
+                    target.setRequired(true);
+                    if (amount > 0 && target.canChoose(player.getId(), game)
+                            && player.choose(Outcome.Sacrifice, target, source.getSourceId(), game)) {
+                        for (UUID targetId : target.getTargets()) {
+                            Permanent permanent = game.getPermanent(targetId);
+                            if (permanent != null) {
+                                permanent.sacrifice(source.getSourceId(), game);
+                            }
+                        }
+                    }
+                }
+            }
+            return true;
+        }
+        return false;
+    }
+}
diff --git a/Mage.Sets/src/mage/sets/avacynrestored/BurnAtTheStake.java b/Mage.Sets/src/mage/sets/avacynrestored/BurnAtTheStake.java
new file mode 100644
index 0000000000..666a042a4e
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/avacynrestored/BurnAtTheStake.java
@@ -0,0 +1,175 @@
+/*
+ *  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.avacynrestored;
+
+import java.util.UUID;
+import mage.Constants.CardType;
+import mage.Constants.Outcome;
+import mage.Constants.Rarity;
+import mage.abilities.Ability;
+import mage.abilities.costs.CostImpl;
+import mage.abilities.costs.VariableCost;
+import mage.abilities.dynamicvalue.common.GetXValue;
+import mage.abilities.effects.OneShotEffect;
+import mage.cards.CardImpl;
+import mage.filter.FilterMana;
+import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
+import mage.players.Player;
+import mage.target.Target;
+import mage.target.common.TargetControlledCreaturePermanent;
+import mage.target.common.TargetCreatureOrPlayer;
+
+/**
+ *
+ * @author North
+ */
+public class BurnAtTheStake extends CardImpl<BurnAtTheStake> {
+
+    public BurnAtTheStake(UUID ownerId) {
+        super(ownerId, 130, "Burn at the Stake", Rarity.RARE, new CardType[]{CardType.SORCERY}, "{2}{R}{R}{R}");
+        this.expansionSetCode = "AVR";
+
+        this.color.setRed(true);
+
+        // As an additional cost to cast Burn at the Stake, tap any number of untapped creatures you control.
+        this.getSpellAbility().addCost(new BurnAtTheStakeCost());
+        // Burn at the Stake deals damage to target creature or player equal to three times the number of creatures tapped this way.
+        this.getSpellAbility().addEffect(new BurnAtTheStakeEffect());
+        this.getSpellAbility().addTarget(new TargetCreatureOrPlayer());
+    }
+
+    public BurnAtTheStake(final BurnAtTheStake card) {
+        super(card);
+    }
+
+    @Override
+    public BurnAtTheStake copy() {
+        return new BurnAtTheStake(this);
+    }
+}
+
+class BurnAtTheStakeCost extends CostImpl<BurnAtTheStakeCost> implements VariableCost {
+
+    private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped creature you control");
+
+    static {
+        filter.setTapped(false);
+        filter.setUseTapped(true);
+    }
+    private int amountPaid = 0;
+
+    public BurnAtTheStakeCost() {
+        this.text = "As an additional cost to cast {this}, tap any number of untapped creatures you control";
+    }
+
+    public BurnAtTheStakeCost(final BurnAtTheStakeCost cost) {
+        super(cost);
+        this.amountPaid = cost.amountPaid;
+    }
+
+    @Override
+    public BurnAtTheStakeCost copy() {
+        return new BurnAtTheStakeCost(this);
+    }
+
+    @Override
+    public boolean canPay(UUID sourceId, UUID controllerId, Game game) {
+        return true;
+    }
+
+    @Override
+    public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana) {
+        this.amountPaid = 0;
+
+        Target target = new TargetControlledCreaturePermanent(1, 1, filter, false);
+        while (target.canChoose(controllerId, game) && target.choose(Outcome.Tap, controllerId, sourceId, game)) {
+            Permanent permanent = game.getPermanent(target.getFirstTarget());
+            if (permanent != null) {
+                permanent.tap(game);
+                amountPaid++;
+            }
+
+            target.clearChosen();
+        }
+
+        paid = true;
+        return true;
+    }
+
+    @Override
+    public int getAmount() {
+        return this.amountPaid;
+    }
+
+    @Override
+    public void setFilter(FilterMana filter) {
+    }
+
+    @Override
+    public void setAmount(int amount) {
+        this.amountPaid = amount;
+    }
+}
+
+class BurnAtTheStakeEffect extends OneShotEffect<BurnAtTheStakeEffect> {
+
+    public BurnAtTheStakeEffect() {
+        super(Outcome.Damage);
+        this.staticText = "{this} deals damage to target creature or player equal to three times the number of creatures tapped this way";
+    }
+
+    public BurnAtTheStakeEffect(final BurnAtTheStakeEffect effect) {
+        super(effect);
+    }
+
+    @Override
+    public BurnAtTheStakeEffect copy() {
+        return new BurnAtTheStakeEffect(this);
+    }
+
+    @Override
+    public boolean apply(Game game, Ability source) {
+        int amount = (new GetXValue()).calculate(game, source) * 3;
+
+        Permanent permanent = game.getPermanent(targetPointer.getFirst(source));
+        if (permanent != null) {
+            permanent.damage(amount, source.getSourceId(), game, true, false);
+            return true;
+        }
+
+        Player player = game.getPlayer(targetPointer.getFirst(source));
+        if (player != null) {
+            player.damage(amount, source.getSourceId(), game, false, true);
+            return true;
+        }
+
+        return false;
+    }
+}
diff --git a/Mage.Sets/src/mage/sets/avacynrestored/DesolateLighthouse.java b/Mage.Sets/src/mage/sets/avacynrestored/DesolateLighthouse.java
new file mode 100644
index 0000000000..3e3484661f
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/avacynrestored/DesolateLighthouse.java
@@ -0,0 +1,69 @@
+/*
+ *  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.avacynrestored;
+
+import java.util.UUID;
+import mage.Constants.CardType;
+import mage.Constants.Rarity;
+import mage.Constants.Zone;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.DrawDiscardControllerEffect;
+import mage.abilities.mana.ColorlessManaAbility;
+import mage.cards.CardImpl;
+
+/**
+ *
+ * @author North
+ */
+public class DesolateLighthouse extends CardImpl<DesolateLighthouse> {
+
+    public DesolateLighthouse(UUID ownerId) {
+        super(ownerId, 227, "Desolate Lighthouse", Rarity.RARE, new CardType[]{CardType.LAND}, "");
+        this.expansionSetCode = "AVR";
+
+        // {tap}: Add {1} to your mana pool.
+        this.addAbility(new ColorlessManaAbility());
+        // {1}{U}{R}, {tap}: Draw a card, then discard a card.
+        SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
+                new DrawDiscardControllerEffect(),
+                new ManaCostsImpl("{1}{U}{R}"));
+        ability.addCost(new TapSourceCost());
+        this.addAbility(ability);
+    }
+
+    public DesolateLighthouse(final DesolateLighthouse card) {
+        super(card);
+    }
+
+    @Override
+    public DesolateLighthouse copy() {
+        return new DesolateLighthouse(this);
+    }
+}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/BarterInBlood.java b/Mage.Sets/src/mage/sets/mirrodin/BarterInBlood.java
new file mode 100644
index 0000000000..7ffb3d2db3
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/mirrodin/BarterInBlood.java
@@ -0,0 +1,52 @@
+/*
+ *  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.mirrodin;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author North
+ */
+public class BarterInBlood extends mage.sets.avacynrestored.BarterInBlood {
+
+    public BarterInBlood(UUID ownerId) {
+        super(ownerId);
+        this.cardNumber = 57;
+        this.expansionSetCode = "MRD";
+    }
+
+    public BarterInBlood(final BarterInBlood card) {
+        super(card);
+    }
+
+    @Override
+    public BarterInBlood copy() {
+        return new BarterInBlood(this);
+    }
+}