From 987e28cef3056235eaf685aa1385a0b1ede073c5 Mon Sep 17 00:00:00 2001 From: North Date: Mon, 23 Jul 2012 23:52:12 +0300 Subject: [PATCH] [M10] Mirror of Fate --- .../src/mage/player/human/HumanPlayer.java | 20 +- Mage.Server/plugins/mage-player-human.jar | Bin 14496 -> 14441 bytes .../src/mage/sets/magic2010/MirrorOfFate.java | 179 ++++++++++++++++++ .../mage/target/common/TargetCardInExile.java | 2 +- 4 files changed, 196 insertions(+), 5 deletions(-) create mode 100644 Mage.Sets/src/mage/sets/magic2010/MirrorOfFate.java diff --git a/Mage.Server.Plugins/Mage.Player.Human/src/mage/player/human/HumanPlayer.java b/Mage.Server.Plugins/Mage.Player.Human/src/mage/player/human/HumanPlayer.java index 595ec0b5cc2..6323f1cc630 100644 --- a/Mage.Server.Plugins/Mage.Player.Human/src/mage/player/human/HumanPlayer.java +++ b/Mage.Server.Plugins/Mage.Player.Human/src/mage/player/human/HumanPlayer.java @@ -217,10 +217,22 @@ public class HumanPlayer extends PlayerImpl { return true; } } - } else if (target.canTarget(response.getUUID(), game)) { - target.add(response.getUUID(), game); - if(target.doneChosing()){ - return true; + } else { + MageObject object = game.getObject(sourceId); + if (object instanceof Ability) { + if (target.canTarget(response.getUUID(), (Ability) object, game)) { + target.add(response.getUUID(), game); + if (target.doneChosing()) { + return true; + } + } + } else { + if (target.canTarget(response.getUUID(), game)) { + target.add(response.getUUID(), game); + if (target.doneChosing()) { + return true; + } + } } } } else { diff --git a/Mage.Server/plugins/mage-player-human.jar b/Mage.Server/plugins/mage-player-human.jar index b10caac72adf76bf1f54374eedf78c5b5b09aa23..d22341095b32b8e229839bcb16b26cfed4f34240 100644 GIT binary patch delta 12204 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 J90C60_+QohXy^a{ delta 12243 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 diff --git a/Mage.Sets/src/mage/sets/magic2010/MirrorOfFate.java b/Mage.Sets/src/mage/sets/magic2010/MirrorOfFate.java new file mode 100644 index 00000000000..626f6836b92 --- /dev/null +++ b/Mage.Sets/src/mage/sets/magic2010/MirrorOfFate.java @@ -0,0 +1,179 @@ +/* + * 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.magic2010; + +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.common.SimpleActivatedAbility; +import mage.abilities.costs.common.SacrificeSourceCost; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.effects.OneShotEffect; +import mage.cards.Card; +import mage.cards.CardImpl; +import mage.cards.CardsImpl; +import mage.filter.FilterCard; +import mage.filter.predicate.Predicate; +import mage.game.ExileZone; +import mage.game.Game; +import mage.players.Player; +import mage.target.TargetCard; + +/** + * + * @author North + */ +public class MirrorOfFate extends CardImpl { + + public MirrorOfFate(UUID ownerId) { + super(ownerId, 215, "Mirror of Fate", Rarity.RARE, new CardType[]{CardType.ARTIFACT}, "{5}"); + this.expansionSetCode = "M10"; + + // {tap}, Sacrifice Mirror of Fate: Choose up to seven face-up exiled cards you own. Exile all the cards from your library, then put the chosen cards on top of your library. + SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, + new MirrorOfFateEffect(), + new TapSourceCost()); + ability.addCost(new SacrificeSourceCost()); + this.addAbility(ability); + } + + public MirrorOfFate(final MirrorOfFate card) { + super(card); + } + + @Override + public MirrorOfFate copy() { + return new MirrorOfFate(this); + } +} + +class MirrorOfFateEffect extends OneShotEffect { + + public MirrorOfFateEffect() { + super(Outcome.Neutral); + this.staticText = "Choose up to seven face-up exiled cards you own. Exile all the cards from your library, then put the chosen cards on top of your library"; + } + + public MirrorOfFateEffect(final MirrorOfFateEffect effect) { + super(effect); + } + + @Override + public MirrorOfFateEffect copy() { + return new MirrorOfFateEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Player player = game.getPlayer(source.getControllerId()); + if (player == null) { + return false; + } + + CardsImpl cards = new CardsImpl(); + MirrorOfFateTarget targetExile = new MirrorOfFateTarget(); + if (player.choose(outcome, targetExile, source.getSourceId(), game)) { + for (UUID cardId : targetExile.getTargets()) { + Card card = game.getCard(cardId); + if (card != null) { + cards.add(card); + } + } + } + + for (Card card : player.getLibrary().getCards(game)) { + card.moveToExile(null, null, source.getSourceId(), game); + } + + TargetCard target = new TargetCard(Zone.PICK, new FilterCard("card to put on top of your library")); + target.setRequired(true); + while (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.getId(), game, true); + } + target.clearChosen(); + } + if (cards.size() == 1) { + Card card = cards.get(cards.iterator().next(), game); + card.moveToZone(Zone.LIBRARY, source.getId(), game, true); + } + + return true; + } +} + +class FaceUpPredicate implements Predicate { + + @Override + public boolean apply(Card input, Game game) { + return !input.isFaceDown(); + } + + @Override + public String toString() { + return "FaceUp"; + } +} + +class MirrorOfFateTarget extends TargetCard { + + public MirrorOfFateTarget() { + super(0, 7, Zone.EXILED, new FilterCard()); + filter.add(new FaceUpPredicate()); + this.targetName = "face-up exiled cards you own"; + } + + public MirrorOfFateTarget(final MirrorOfFateTarget target) { + super(target); + } + + @Override + public boolean canTarget(UUID id, Ability source, Game game) { + Card card = game.getCard(id); + if (card != null && card.getOwnerId().equals(source.getControllerId()) + && game.getState().getZone(card.getId()) == Zone.EXILED) { + for (ExileZone exile : game.getExile().getExileZones()) { + if (exile != null && exile.contains(id)) { + return filter.match(card, source.getControllerId(), game); + } + } + } + return false; + } + + @Override + public MirrorOfFateTarget copy() { + return new MirrorOfFateTarget(this); + } +} diff --git a/Mage/src/mage/target/common/TargetCardInExile.java b/Mage/src/mage/target/common/TargetCardInExile.java index a1947f3f184..9ae9d7aef04 100644 --- a/Mage/src/mage/target/common/TargetCardInExile.java +++ b/Mage/src/mage/target/common/TargetCardInExile.java @@ -71,7 +71,7 @@ public class TargetCardInExile extends TargetCard { exile = game.getExile().getPermanentExile(); } if (exile != null && exile.contains(id)) { - return filter.match(card, game); + return filter.match(card, source.getControllerId(), game); } } return false;