From dc4fed493b9d4df6f7c815be61e650d455c036c0 Mon Sep 17 00:00:00 2001 From: magenoxx Date: Fri, 29 Jul 2011 18:40:12 +0400 Subject: [PATCH] Face down cards. Updated card plugin. [SOM] Clone Shell --- Mage.Client/plugins/mage-card-plugin.jar | Bin 318581 -> 318713 bytes .../mage/interfaces/plugin/CardPlugin.java | 2 +- Mage.Common/src/mage/view/CardView.java | 63 ++++-- Mage.Plugins/Mage.Card.Plugin/pom.xml | 2 +- .../java/org/mage/card/arcane/CardPanel.java | 5 + .../org/mage/plugins/card/CardPluginImpl.java | 5 +- .../mage/sets/scarsofmirrodin/CloneShell.java | 183 ++++++++++++++++++ Mage/src/mage/cards/Card.java | 2 + Mage/src/mage/cards/CardImpl.java | 12 ++ Mage/src/mage/game/stack/Spell.java | 11 ++ 10 files changed, 264 insertions(+), 21 deletions(-) create mode 100644 Mage.Sets/src/mage/sets/scarsofmirrodin/CloneShell.java diff --git a/Mage.Client/plugins/mage-card-plugin.jar b/Mage.Client/plugins/mage-card-plugin.jar index 21609c7d8d2bed7ea534729642ae6fa2b84b3ef5..9bfd0cbcf7aa877ae7b691b71f0e907047e9e7be 100644 GIT binary patch delta 35836 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 hbCJX^UHJX00CC19mxfTl4czZ;JE+* delta 35546 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 targets; - + public CardView(Card card) { this.id = card.getId(); + this.faceDown = card.isFaceDown(); + + // no information available for face down cards + if (this.faceDown) { + fillEmpty(); + return; + } + this.name = card.getName(); this.rules = card.getRules(); if (card instanceof Permanent) { @@ -101,7 +109,7 @@ public class CardView implements Serializable { this.cardNumber = card.getCardNumber(); if (card instanceof Spell) { - Spell spell = (Spell)card; + Spell spell = (Spell) card; if (spell.getSpellAbility().getTargets().size() > 0) { setTargets(spell.getSpellAbility().getTargets()); } @@ -109,7 +117,23 @@ public class CardView implements Serializable { } protected CardView() { + } + private void fillEmpty() { + this.name = "Face Down"; + this.rules = new ArrayList(); + this.power = ""; + this.toughness = ""; + this.loyalty = ""; + this.cardTypes = new ArrayList(); + this.subTypes = new ArrayList(); + this.superTypes = new ArrayList(); + this.color = new ObjectColor(); + this.manaCost = new ArrayList(); + this.convertedManaCost = 0; + this.rarity = Rarity.COMMON; + this.expansionSetCode = ""; + this.cardNumber = 0; } CardView(Token token) { @@ -135,10 +159,10 @@ public class CardView implements Serializable { if (this.targets == null) this.targets = new ArrayList(); this.targets.add(targetUUID); } - } + } } } - + // protected List formatRules(List rules) { // List newRules = new ArrayList(); // for (String rule: rules) { @@ -160,7 +184,7 @@ public class CardView implements Serializable { public List getRules() { return rules; } - + public void overrideRules(List rules) { this.rules = rules; } @@ -168,11 +192,11 @@ public class CardView implements Serializable { public void setIsAbility(boolean isAbility) { this.isAbility = isAbility; } - + public boolean isAbility() { return isAbility; } - + public String getPower() { return power; } @@ -220,48 +244,53 @@ public class CardView implements Serializable { public UUID getId() { return id; } - + public int getCardNumber() { return cardNumber; } - + /** * Returns UUIDs for targets. * Can be null if there is no target selected. + * * @return */ public List getTargets() { return targets; } - + public void overrideTargets(List newTargets) { this.targets = newTargets; } - + public void overrideId(UUID id) { if (parentId == null) { parentId = this.id; } this.id = id; } - + public UUID getParentId() { if (parentId != null) { return parentId; } return id; } - + public void setAbility(CardView ability) { this.ability = ability; } - + public CardView getAbility() { return this.ability; } - + @Override public String toString() { return getName() + " [" + getId() + "]"; } + + public boolean isFaceDown() { + return faceDown; + } } diff --git a/Mage.Plugins/Mage.Card.Plugin/pom.xml b/Mage.Plugins/Mage.Card.Plugin/pom.xml index 9cbcfb5df56..169270d8560 100644 --- a/Mage.Plugins/Mage.Card.Plugin/pom.xml +++ b/Mage.Plugins/Mage.Card.Plugin/pom.xml @@ -76,7 +76,7 @@ - 0.6 + 0.7 0.9.1 diff --git a/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/card/arcane/CardPanel.java b/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/card/arcane/CardPanel.java index 11b13aae449..c03f83d1fa5 100644 --- a/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/card/arcane/CardPanel.java +++ b/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/card/arcane/CardPanel.java @@ -150,6 +150,7 @@ public class CardPanel extends MagePermanent implements MouseListener, MouseMoti try { tappedAngle = isTapped() ? CardPanel.TAPPED_ANGLE : 0; flippedAngle = isFlipped() ? CardPanel.FLIPPED_ANGLE : 0; + if (gameCard.isFaceDown()) return; BufferedImage srcImage = ImageCache.getThumbnail(gameCard); if (srcImage != null) { hasImage = true; @@ -627,6 +628,7 @@ public class CardPanel extends MagePermanent implements MouseListener, MouseMoti @Override public void mouseEntered(MouseEvent e) { + if (gameCard.isFaceDown()) return; if (!popupShowing) { synchronized (this) { if (!popupShowing) { @@ -643,12 +645,14 @@ public class CardPanel extends MagePermanent implements MouseListener, MouseMoti @Override public void mouseMoved(MouseEvent e) { + if (gameCard.isFaceDown()) return; data.component = this; callback.mouseMoved(e, data); } @Override public void mouseExited(MouseEvent e) { + if (gameCard.isFaceDown()) return; if (getMousePosition(true) != null) return; if (popupShowing) { synchronized (this) { @@ -665,6 +669,7 @@ public class CardPanel extends MagePermanent implements MouseListener, MouseMoti @Override public void mousePressed(MouseEvent e) { + if (gameCard.isFaceDown()) return; data.component = this; data.card = this.gameCard; data.gameId = this.gameId; diff --git a/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/plugins/card/CardPluginImpl.java b/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/plugins/card/CardPluginImpl.java index 2c11513da2a..e1bc3d05dc9 100644 --- a/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/plugins/card/CardPluginImpl.java +++ b/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/plugins/card/CardPluginImpl.java @@ -38,7 +38,8 @@ import java.util.List; * * @author nantuko * @version 0.1 01.11.2010 Mage permanents. Sorting card layout. - * @version 0.6 17,07.2011 #sortPermanents got option to display non-land permanents in one pile + * @version 0.6 17.07.2011 #sortPermanents got option to display non-land permanents in one pile + * @version 0.7 29.07.2011 face down cards support */ @PluginImplementation @Author(name = "nantuko") @@ -76,7 +77,7 @@ public class CardPluginImpl implements CardPlugin { @Override public String toString() { - return "[Card plugin, version 0.6]"; + return "[Card plugin, version 0.7]"; } @Override diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/CloneShell.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/CloneShell.java new file mode 100644 index 00000000000..a9d3871256d --- /dev/null +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/CloneShell.java @@ -0,0 +1,183 @@ +/* + * 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.scarsofmirrodin; + +import mage.Constants; +import mage.Constants.CardType; +import mage.Constants.Rarity; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.DiesTriggeredAbility; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.effects.OneShotEffect; +import mage.cards.Card; +import mage.cards.CardImpl; +import mage.cards.Cards; +import mage.cards.CardsImpl; +import mage.filter.FilterCard; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.players.Player; +import mage.target.TargetCard; + +import java.util.List; +import java.util.UUID; + +/** + * @author nantuko + */ +public class CloneShell extends CardImpl { + + public CloneShell(UUID ownerId) { + super(ownerId, 143, "Clone Shell", Rarity.UNCOMMON, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{5}"); + this.expansionSetCode = "SOM"; + this.subtype.add("Shapeshifter"); + + this.power = new MageInt(2); + this.toughness = new MageInt(2); + + // Imprint - When Clone Shell enters the battlefield, look at the top four cards of your library, exile one face down, then put the rest on the bottom of your library in any order. + this.addAbility(new EntersBattlefieldTriggeredAbility(new CloneShellEffect(), false)); + + // When Clone Shell dies, turn the exiled card face up. If it's a creature card, put it onto the battlefield under your control. + this.addAbility(new DiesTriggeredAbility(new CloneShellDiesEffect())); + } + + public CloneShell(final CloneShell card) { + super(card); + } + + @Override + public CloneShell copy() { + return new CloneShell(this); + } +} + +class CloneShellEffect extends OneShotEffect { + + protected static FilterCard filter1 = new FilterCard("card to exile face down"); + protected static FilterCard filter2 = new FilterCard("card to put on the bottom of your library"); + + public CloneShellEffect() { + super(Constants.Outcome.Benefit); + staticText = "look at the top four cards of your library, exile one face down, then put the rest on the bottom of your library in any order"; + } + + public CloneShellEffect(CloneShellEffect effect) { + super(effect); + } + + @Override + public boolean apply(Game game, Ability source) { + Player player = game.getPlayer(source.getControllerId()); + Cards cards = new CardsImpl(Constants.Zone.PICK); + int count = Math.min(player.getLibrary().size(), 4); + for (int i = 0; i < count; i++) { + Card card = player.getLibrary().removeFromTop(game); + cards.add(card); + game.setZone(card.getId(), Constants.Zone.PICK); + } + + if (cards.size() == 0) { + return false; + + } + TargetCard target1 = new TargetCard(Constants.Zone.PICK, filter1); + if (player.choose(Constants.Outcome.Detriment, cards, target1, game)) { + Card card = cards.get(target1.getFirstTarget(), game); + if (card != null) { + cards.remove(card); + card.setFaceDown(true); + card.moveToExile(getId(), "Clone Shell (Imprint)", source.getSourceId(), game); + Permanent permanent = game.getPermanent(source.getSourceId()); + if (permanent != null) { + permanent.imprint(card.getId(), game); + } + } + target1.clearChosen(); + } + + if (cards.size() > 0) { + TargetCard target2 = new TargetCard(Constants.Zone.PICK, filter2); + target2.setRequired(true); + while (cards.size() > 1) { + player.choose(Constants.Outcome.Benefit, cards, target2, game); + Card card = cards.get(target2.getFirstTarget(), game); + if (card != null) { + cards.remove(card); + card.moveToZone(Constants.Zone.LIBRARY, source.getId(), game, false); + } + target2.clearChosen(); + } + Card card = cards.get(cards.iterator().next(), game); + card.moveToZone(Constants.Zone.LIBRARY, source.getId(), game, true); + } + + return true; + } + + @Override + public CloneShellEffect copy() { + return new CloneShellEffect(this); + } + +} + +class CloneShellDiesEffect extends OneShotEffect { + + public CloneShellDiesEffect() { + super(Constants.Outcome.Benefit); + staticText = "turn the exiled card face up. If it's a creature card, put it onto the battlefield under your control"; + } + + public CloneShellDiesEffect(CloneShellDiesEffect effect) { + super(effect); + } + + @Override + public boolean apply(Game game, Ability source) { + Permanent permanent = (Permanent) game.getLastKnownInformation(source.getSourceId(), Constants.Zone.BATTLEFIELD); + if (permanent != null) { + List imprinted = permanent.getImprinted(); + if (imprinted.size() > 0) { + Card imprintedCard = game.getCard(imprinted.get(0)); + if (imprintedCard.getCardType().contains(CardType.CREATURE)) { + imprintedCard.putOntoBattlefield(game, Constants.Zone.EXILED, source.getSourceId(), source.getControllerId()); + } + } + } + + return true; + } + + @Override + public CloneShellDiesEffect copy() { + return new CloneShellDiesEffect(this); + } + +} diff --git a/Mage/src/mage/cards/Card.java b/Mage/src/mage/cards/Card.java index 8c4e03617cd..45bc21a2eef 100644 --- a/Mage/src/mage/cards/Card.java +++ b/Mage/src/mage/cards/Card.java @@ -55,6 +55,8 @@ public interface Card extends MageObject { public Watchers getWatchers(); public String getExpansionSetCode(); public void setExpansionSetCode(String expansionSetCode); + public void setFaceDown(boolean value); + public boolean isFaceDown(); public void assignNewId(); public boolean moveToZone(Zone zone, UUID sourceId, Game game, boolean flag); diff --git a/Mage/src/mage/cards/CardImpl.java b/Mage/src/mage/cards/CardImpl.java index 35ef9de2d77..874d55f7015 100644 --- a/Mage/src/mage/cards/CardImpl.java +++ b/Mage/src/mage/cards/CardImpl.java @@ -60,6 +60,7 @@ public abstract class CardImpl> extends MageObjectImpl protected Watchers watchers = new Watchers(); protected String expansionSetCode; protected Rarity rarity; + protected boolean faceDown; public CardImpl(UUID ownerId, int cardNumber, String name, Rarity rarity, CardType[] cardTypes, String costs) { this(ownerId, name); @@ -91,6 +92,7 @@ public abstract class CardImpl> extends MageObjectImpl expansionSetCode = card.expansionSetCode; rarity = card.rarity; watchers = card.watchers.copy(); + faceDown = card.faceDown; } @Override @@ -328,4 +330,14 @@ public abstract class CardImpl> extends MageObjectImpl public void setCardNumber(int cid) { this.cardNumber = cid; } + + @Override + public void setFaceDown(boolean value) { + this.faceDown = value; + } + + @Override + public boolean isFaceDown() { + return this.faceDown; + } } diff --git a/Mage/src/mage/game/stack/Spell.java b/Mage/src/mage/game/stack/Spell.java index c7019b172e8..1214b0ea631 100644 --- a/Mage/src/mage/game/stack/Spell.java +++ b/Mage/src/mage/game/stack/Spell.java @@ -51,6 +51,7 @@ import mage.game.events.GameEvent; import mage.players.Player; import mage.target.Target; import mage.watchers.Watchers; +import sun.reflect.generics.reflectiveObjects.NotImplementedException; /** * @@ -286,6 +287,16 @@ public class Spell> implements StackObject, Card { @Override public void setExpansionSetCode(String expansionSetCode) {} + @Override + public void setFaceDown(boolean value) { + throw new NotImplementedException(); + } + + @Override + public boolean isFaceDown() { + return false; + } + @Override public Spell copy() { return new Spell(this);