From b8eff3db00be1e34236dd681999026377534dde2 Mon Sep 17 00:00:00 2001 From: swordshine Date: Tue, 23 Jul 2013 00:53:28 +0000 Subject: [PATCH] - Added Edge of Malacol --- .gitattributes | 2 + res/cardsfolder/e/edge_of_malacol.txt | 10 +++ src/main/java/forge/Card.java | 8 +++ .../forge/card/replacement/ReplaceUntap.java | 72 +++++++++++++++++++ .../card/replacement/ReplacementType.java | 3 +- 5 files changed, 94 insertions(+), 1 deletion(-) create mode 100644 res/cardsfolder/e/edge_of_malacol.txt create mode 100644 src/main/java/forge/card/replacement/ReplaceUntap.java diff --git a/.gitattributes b/.gitattributes index 150f2ab099d..b41a931a1e9 100644 --- a/.gitattributes +++ b/.gitattributes @@ -3169,6 +3169,7 @@ res/cardsfolder/e/echoing_decay.txt svneol=native#text/plain res/cardsfolder/e/echoing_ruin.txt svneol=native#text/plain res/cardsfolder/e/echoing_truth.txt svneol=native#text/plain res/cardsfolder/e/edge_of_autumn.txt svneol=native#text/plain +res/cardsfolder/e/edge_of_malacol.txt -text res/cardsfolder/e/edge_of_the_divinity.txt svneol=native#text/plain res/cardsfolder/e/edgewalker.txt svneol=native#text/plain res/cardsfolder/e/edric_spymaster_of_trest.txt svneol=native#text/plain @@ -14486,6 +14487,7 @@ src/main/java/forge/card/replacement/ReplaceGameLoss.java -text src/main/java/forge/card/replacement/ReplaceMoved.java -text src/main/java/forge/card/replacement/ReplaceSetInMotion.java -text src/main/java/forge/card/replacement/ReplaceTurnFaceUp.java -text +src/main/java/forge/card/replacement/ReplaceUntap.java -text src/main/java/forge/card/replacement/ReplacementEffect.java -text src/main/java/forge/card/replacement/ReplacementHandler.java -text src/main/java/forge/card/replacement/ReplacementLayer.java -text diff --git a/res/cardsfolder/e/edge_of_malacol.txt b/res/cardsfolder/e/edge_of_malacol.txt new file mode 100644 index 00000000000..5e456df436a --- /dev/null +++ b/res/cardsfolder/e/edge_of_malacol.txt @@ -0,0 +1,10 @@ +Name:Edge of Malacol +ManaCost:no cost +Types:Plane Belenon +R:Event$ Untap | ActiveZones$ Command | ValidCard$ Creature.YouCtrl | ReplaceWith$ RepPutCounter | UntapStep$ True | Description$ If a creature you control would untap during your untap step, put two +1/+1 counters on it instead. +SVar:RepPutCounter:AB$ PutCounter | Cost$ 0 | Defined$ ReplacedCard | CounterType$ P1P1 | CounterNum$ 2 +T:Mode$ PlanarDice | Result$ Chaos | TriggerZones$ Command | Execute$ RolledChaos | TriggerDescription$ Whenever you roll Chaos, untap each creature you control. +SVar:RolledChaos:AB$ UntapAll | Cost$ 0 | ValidCards$ Creature.YouCtrl +SVar:AIRollPlanarDieParams:Mode$ Always | HasCreatureInPlay$ True +SVar:Picture:http://www.wizards.com/global/images/magic/general/edge_of_malacol.jpg +Oracle:If a creature you control would untap during your untap step, put two +1/+1 counters on it instead.\nWhenever you roll {C}, untap each creature you control. diff --git a/src/main/java/forge/Card.java b/src/main/java/forge/Card.java index 0d486b24b6d..58480b87df7 100644 --- a/src/main/java/forge/Card.java +++ b/src/main/java/forge/Card.java @@ -4233,6 +4233,14 @@ public class Card extends GameEntity implements Comparable { public final void untap() { if (this.isUntapped()) return; + // Run Replacement effects + final HashMap repRunParams = new HashMap(); + repRunParams.put("Event", "Untap"); + repRunParams.put("Affected", this); + + if (getGame().getReplacementHandler().run(repRunParams) != ReplacementResult.NotReplaced) { + return; + } // Run triggers final Map runParams = new TreeMap(); diff --git a/src/main/java/forge/card/replacement/ReplaceUntap.java b/src/main/java/forge/card/replacement/ReplaceUntap.java new file mode 100644 index 00000000000..85ecb971f2e --- /dev/null +++ b/src/main/java/forge/card/replacement/ReplaceUntap.java @@ -0,0 +1,72 @@ +/* + * Forge: Play Magic: the Gathering. + * Copyright (C) 2011 Forge Team + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package forge.card.replacement; + +import java.util.Map; + +import forge.Card; +import forge.card.spellability.SpellAbility; +import forge.game.phase.PhaseType; + +/** + * TODO: Write javadoc for this type. + * + */ +public class ReplaceUntap extends ReplacementEffect { + + /** + * Instantiates a new replace discard. + * + * @param params the params + * @param host the host + */ + public ReplaceUntap(final Map params, final Card host, final boolean intrinsic) { + super(params, host, intrinsic); + } + + /* (non-Javadoc) + * @see forge.card.replacement.ReplacementEffect#canReplace(java.util.HashMap) + */ + @Override + public boolean canReplace(Map runParams) { + if (!runParams.get("Event").equals("Untap")) { + return false; + } + if (this.getMapParams().containsKey("ValidCard")) { + if (!matchesValid(runParams.get("Affected"), this.getMapParams().get("ValidCard").split(","), this.getHostCard())) { + return false; + } + } + if (this.getMapParams().containsKey("UntapStep")) { + if (!this.getHostCard().getController().getGame().getPhaseHandler().is(PhaseType.UNTAP)) { + return false; + } + } + + return true; + } + + /* (non-Javadoc) + * @see forge.card.replacement.ReplacementEffect#setReplacingObjects(java.util.HashMap, forge.card.spellability.SpellAbility) + */ + @Override + public void setReplacingObjects(Map runParams, SpellAbility sa) { + sa.setReplacingObject("Card", runParams.get("Affected")); + } + +} diff --git a/src/main/java/forge/card/replacement/ReplacementType.java b/src/main/java/forge/card/replacement/ReplacementType.java index 3a76062cabd..19cdb7aff5e 100644 --- a/src/main/java/forge/card/replacement/ReplacementType.java +++ b/src/main/java/forge/card/replacement/ReplacementType.java @@ -20,7 +20,8 @@ public enum ReplacementType { GameLoss(ReplaceGameLoss.class), Moved(ReplaceMoved.class), SetInMotion(ReplaceSetInMotion.class), - TurnFaceUp(ReplaceTurnFaceUp.class); + TurnFaceUp(ReplaceTurnFaceUp.class), + Untap(ReplaceUntap.class); Class clasz; private ReplacementType(Class cls) {