From 00208b69a761a3f5995bb9ef54a93ae45c1c7ac6 Mon Sep 17 00:00:00 2001 From: swordshine Date: Thu, 5 Sep 2013 04:05:34 +0000 Subject: [PATCH] - Added Hall of the Bandit Lord --- .gitattributes | 1 + res/cardsfolder/h/hall_of_the_bandit_lord.txt | 7 +++++ src/main/java/forge/card/mana/Mana.java | 21 +++++++++++++++ src/main/java/forge/card/mana/ManaPool.java | 6 +++++ .../card/spellability/AbilityManaPart.java | 26 +++++++++++++++++++ 5 files changed, 61 insertions(+) create mode 100644 res/cardsfolder/h/hall_of_the_bandit_lord.txt diff --git a/.gitattributes b/.gitattributes index 995e9861d63..0193a743f93 100644 --- a/.gitattributes +++ b/.gitattributes @@ -4890,6 +4890,7 @@ res/cardsfolder/h/halcyon_glaze.txt svneol=native#text/plain res/cardsfolder/h/halimar_depths.txt svneol=native#text/plain res/cardsfolder/h/halimar_excavator.txt svneol=native#text/plain res/cardsfolder/h/halimar_wavewatch.txt svneol=native#text/plain +res/cardsfolder/h/hall_of_the_bandit_lord.txt -text res/cardsfolder/h/hallow.txt -text res/cardsfolder/h/hallowed_burial.txt svneol=native#text/plain res/cardsfolder/h/hallowed_fountain.txt svneol=native#text/plain diff --git a/res/cardsfolder/h/hall_of_the_bandit_lord.txt b/res/cardsfolder/h/hall_of_the_bandit_lord.txt new file mode 100644 index 00000000000..ad122d6990d --- /dev/null +++ b/res/cardsfolder/h/hall_of_the_bandit_lord.txt @@ -0,0 +1,7 @@ +Name:Hall of the Bandit Lord +ManaCost:no cost +Types:Legendary Land +K:CARDNAME enters the battlefield tapped. +A:AB$ Mana | Cost$ T PayLife<3> | Produced$ 1 | AddsKeywords$ Haste | SpellDescription$ Add 1 to your mana pool. If that mana is spent on a creature spell, it gains haste. +SVar:Picture:http://www.wizards.com/global/images/magic/general/hall_of_the_bandit_lord.jpg +Oracle:Hall of the Bandit Lord enters the battlefield tapped.\n{T}, Pay 3 life: Add {1} to your mana pool. If that mana is spent on a creature spell, it gains haste. diff --git a/src/main/java/forge/card/mana/Mana.java b/src/main/java/forge/card/mana/Mana.java index 3b5f496aca8..b20a9eee662 100644 --- a/src/main/java/forge/card/mana/Mana.java +++ b/src/main/java/forge/card/mana/Mana.java @@ -144,6 +144,27 @@ public class Mana { return this.manaAbility != null && manaAbility.cannotCounterPaidWith(saBeingPaid); } + /** + *

+ * addsKeywords. + *

+ * + * @return a boolean. + */ + public final boolean addsKeywords(SpellAbility saBeingPaid) { + return this.manaAbility != null && manaAbility.addKeywords(saBeingPaid); + } + + /** + *

+ * getAddedKeywords. + *

+ * @return a String. + */ + public final String getAddedKeywords() { + return this.manaAbility.getKeywords(); + } + /** *

* isColor. diff --git a/src/main/java/forge/card/mana/ManaPool.java b/src/main/java/forge/card/mana/ManaPool.java index 85443e1a057..ad89e4ac480 100644 --- a/src/main/java/forge/card/mana/ManaPool.java +++ b/src/main/java/forge/card/mana/ManaPool.java @@ -18,6 +18,7 @@ package forge.card.mana; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.List; @@ -299,6 +300,11 @@ public class ManaPool { if (mana.addsNoCounterMagic(sa) && sa.getSourceCard() != null) { sa.getSourceCard().setCanCounter(false); } + if (sa.isSpell() && sa.getSourceCard() != null + && sa.getSourceCard().isCreature() && mana.addsKeywords(sa)) { + final long timestamp = sa.getSourceCard().getGame().getNextTimestamp(); + sa.getSourceCard().addChangedCardKeywords(Arrays.asList(mana.getAddedKeywords().split(" & ")), new ArrayList(), false, timestamp); + } } } diff --git a/src/main/java/forge/card/spellability/AbilityManaPart.java b/src/main/java/forge/card/spellability/AbilityManaPart.java index 36f9275b2c9..0a53f264004 100644 --- a/src/main/java/forge/card/spellability/AbilityManaPart.java +++ b/src/main/java/forge/card/spellability/AbilityManaPart.java @@ -49,6 +49,7 @@ public class AbilityManaPart implements java.io.Serializable { private String lastExpressChoice = ""; private final String manaRestrictions; private final String cannotCounterSpell; + private final String addsKeywords; private final boolean persistentMana; private transient ArrayList lastManaProduced = new ArrayList(); @@ -78,6 +79,7 @@ public class AbilityManaPart implements java.io.Serializable { origProduced = params.containsKey("Produced") ? params.get("Produced") : "1"; this.manaRestrictions = params.containsKey("RestrictValid") ? params.get("RestrictValid") : ""; this.cannotCounterSpell = params.get("AddsNoCounter"); + this.addsKeywords = params.get("AddsKeywords"); this.persistentMana = (null == params.get("PersistentMana")) ? false : "True".equalsIgnoreCase(params.get("PersistentMana")); } @@ -167,6 +169,29 @@ public class AbilityManaPart implements java.io.Serializable { return source.isValid(cannotCounterSpell, sourceCard.getController(), sourceCard); } + /** + *

+ * addKeywords. + *

+ * @param saBeingPaid + * + * @return a {@link java.lang.String} object. + */ + public boolean addKeywords(SpellAbility saBeingPaid) { + return this.addsKeywords != null; + } + + /** + *

+ * getKeywords. + *

+ * @param saBeingPaid + * + * @return a {@link java.lang.String} object. + */ + public String getKeywords() { + return this.addsKeywords; + } /** *

* getManaRestrictions. @@ -452,5 +477,6 @@ public class AbilityManaPart implements java.io.Serializable { return this.persistentMana; } + } // end class AbilityMana