From 3cf1361d352358a514185e74d76a015481c2880f Mon Sep 17 00:00:00 2001 From: slapshot5 Date: Wed, 21 Dec 2011 13:31:14 +0000 Subject: [PATCH] add Lion's Eye Diamond (form Mirage) --- .../card/abilityfactory/AbilityFactory.java | 17 ++++++++++++ .../spellability/SpellAbilityRestriction.java | 4 +++ .../spellability/SpellAbilityVariables.java | 26 +++++++++++++++++++ .../forge/gui/input/InputPayManaCostUtil.java | 5 ++++ 4 files changed, 52 insertions(+) diff --git a/src/main/java/forge/card/abilityfactory/AbilityFactory.java b/src/main/java/forge/card/abilityfactory/AbilityFactory.java index 5527f88fe28..34599dc0541 100644 --- a/src/main/java/forge/card/abilityfactory/AbilityFactory.java +++ b/src/main/java/forge/card/abilityfactory/AbilityFactory.java @@ -1402,6 +1402,23 @@ public class AbilityFactory { return false; } + /** + *

+ * isInstantSpeed. To be used for mana abilities like Lion's Eye Diamond + *

+ * + * @param sa + * a {@link forge.card.spellability.SpellAbility} object. + * @return a boolean. + */ + public static boolean isInstantSpeed(final SpellAbility sa) { + if (sa.isAbility()) { + return sa.getRestrictions().isInstantSpeed(); + } + + return false; + } + // Utility functions used by the AFs /** *

diff --git a/src/main/java/forge/card/spellability/SpellAbilityRestriction.java b/src/main/java/forge/card/spellability/SpellAbilityRestriction.java index c7cfe8cbc8a..f46a1599162 100644 --- a/src/main/java/forge/card/spellability/SpellAbilityRestriction.java +++ b/src/main/java/forge/card/spellability/SpellAbilityRestriction.java @@ -100,6 +100,10 @@ public class SpellAbilityRestriction extends SpellAbilityVariables { this.setSorcerySpeed(true); } + if (params.containsKey("InstantSpeed")) { + this.setInstantSpeed(true); + } + if (params.containsKey("PlayerTurn")) { this.setPlayerTurn(true); } diff --git a/src/main/java/forge/card/spellability/SpellAbilityVariables.java b/src/main/java/forge/card/spellability/SpellAbilityVariables.java index 349eb2d52c4..ec81f8a851f 100644 --- a/src/main/java/forge/card/spellability/SpellAbilityVariables.java +++ b/src/main/java/forge/card/spellability/SpellAbilityVariables.java @@ -54,6 +54,9 @@ public class SpellAbilityVariables { /** The b sorcery speed. */ private boolean sorcerySpeed = false; + + /** The b instant speed. */ + private boolean instantSpeed = false; /** The b any player. */ private boolean anyPlayer = false; @@ -243,6 +246,29 @@ public class SpellAbilityVariables { return this.sorcerySpeed; } + /** + *

+ * setInstantSpeed. + *

+ * + * @param bSpeed + * a boolean. + */ + public final void setInstantSpeed(final boolean bSpeed) { + this.instantSpeed = bSpeed; + } + + /** + *

+ * getInstantSpeed. + *

+ * + * @return a boolean. + */ + public final boolean isInstantSpeed() { + return this.instantSpeed; + } + /** *

* setAnyPlayer. diff --git a/src/main/java/forge/gui/input/InputPayManaCostUtil.java b/src/main/java/forge/gui/input/InputPayManaCostUtil.java index 3f539726aa0..0ce7b678d55 100644 --- a/src/main/java/forge/gui/input/InputPayManaCostUtil.java +++ b/src/main/java/forge/gui/input/InputPayManaCostUtil.java @@ -27,6 +27,7 @@ import forge.Card; import forge.CardUtil; import forge.Constant; import forge.Constant.Zone; +import forge.card.abilityfactory.AbilityFactory; import forge.card.abilityfactory.AbilityFactoryMana; import forge.card.mana.ManaCost; import forge.card.mana.ManaPool; @@ -93,6 +94,10 @@ public class InputPayManaCostUtil { it.remove(); } else if (!InputPayManaCostUtil.canMake(ma, cneeded.toString())) { it.remove(); + } else if (AbilityFactory.isInstantSpeed(ma)) { + System.out.println("Removing ability from: "+card); + System.out.println("Ability: "+ma); + it.remove(); } if (!skipExpress) {