From ef4893e70c25f1019978a260582d556649a00416 Mon Sep 17 00:00:00 2001 From: jendave Date: Sat, 6 Aug 2011 08:27:14 +0000 Subject: [PATCH] - Initial submission of Static Abilities which resolve instead of get added to the Stack. - Added Ability_Static.java - Changed Morph, Totem Armor, Hatchling's etb, Multikicker's etb, Swans of Bryn Argoll, An-Zerrin Ruins to be a Static Ability. - Fixed Morph interaction with Linvala --- .gitattributes | 1 + src/forge/Ability_Static.java | 15 +++++++++++++++ src/forge/CardFactory.java | 2 +- src/forge/CardFactoryUtil.java | 11 ++++++----- src/forge/CardFactory_Creatures.java | 6 +++--- src/forge/GameAction.java | 4 ++-- src/forge/MagicStack.java | 2 +- 7 files changed, 29 insertions(+), 12 deletions(-) create mode 100644 src/forge/Ability_Static.java diff --git a/.gitattributes b/.gitattributes index 73c27c13d42..8c2077c7562 100644 --- a/.gitattributes +++ b/.gitattributes @@ -4765,6 +4765,7 @@ src/forge/Ability_Cost.java -text svneol=native#text/plain src/forge/Ability_Hand.java svneol=native#text/plain src/forge/Ability_Mana.java -text svneol=native#text/plain src/forge/Ability_Reflected_Mana.java svneol=native#text/plain +src/forge/Ability_Static.java -text svneol=native#text/plain src/forge/Ability_Tap.java svneol=native#text/plain src/forge/Ability_Triggered.java svneol=native#text/plain src/forge/All.java svneol=native#text/plain diff --git a/src/forge/Ability_Static.java b/src/forge/Ability_Static.java new file mode 100644 index 00000000000..59e2fc54403 --- /dev/null +++ b/src/forge/Ability_Static.java @@ -0,0 +1,15 @@ +package forge; + +import com.esotericsoftware.minlog.Log; + +abstract public class Ability_Static extends Ability { + public Ability_Static(Card sourceCard, String manaCost) { + super(sourceCard, manaCost); + } + + public Ability_Static(Card sourceCard, String manaCost, String stackDescription) { + this(sourceCard, manaCost); + setStackDescription(stackDescription); + Log.debug("an ability is being played from" + sourceCard.getName()); + } +} diff --git a/src/forge/CardFactory.java b/src/forge/CardFactory.java index 2312ef51a23..7f1076f0f1b 100644 --- a/src/forge/CardFactory.java +++ b/src/forge/CardFactory.java @@ -10532,7 +10532,7 @@ public class CardFactory implements NewConstants { //*************** START *********** START ************************** else if (cardName.equals("An-Zerrin Ruins")) { - final SpellAbility comesIntoPlayAbility = new Ability(card, "0") { + final Ability_Static comesIntoPlayAbility = new Ability_Static(card, "0") { @Override public void resolve() { String chosenType = ""; diff --git a/src/forge/CardFactoryUtil.java b/src/forge/CardFactoryUtil.java index 59cbc633ef7..9c469d664d8 100644 --- a/src/forge/CardFactoryUtil.java +++ b/src/forge/CardFactoryUtil.java @@ -1141,13 +1141,13 @@ public class CardFactoryUtil { return ability; } - public static Ability ability_Morph_Up(final Card sourceCard, String cost, String orgManaCost, int a, int d) { + public static Ability_Static ability_Morph_Up(final Card sourceCard, String cost, String orgManaCost, int a, int d) { //final String player = sourceCard.getController(); //final String manaCost = cost; final int attack = a; final int defense = d; final String origManaCost = orgManaCost; - final Ability morph_up = new Ability(sourceCard, cost) { + final Ability_Static morph_up = new Ability_Static(sourceCard, cost) { private static final long serialVersionUID = -7892773658629724785L; @Override @@ -1167,9 +1167,10 @@ public class CardFactoryUtil { @Override public boolean canPlay() { - CardList Silence = AllZoneUtil.getPlayerCardsInPlay(AllZone.GameAction.getOpponent(getSourceCard().getController())); - Silence = Silence.getName("Linvala, Keeper of Silence"); - return sourceCard.isFaceDown() && AllZone.GameAction.isCardInPlay(sourceCard) && Silence.size() == 0; + // unMorphing a card is a Special Action, and not effected by Linvala + //CardList Silence = AllZoneUtil.getPlayerCardsInPlay(AllZone.GameAction.getOpponent(getSourceCard().getController())); + //Silence = Silence.getName("Linvala, Keeper of Silence"); + return sourceCard.isFaceDown() && AllZone.GameAction.isCardInPlay(sourceCard); // && Silence.size() == 0; } };//morph_up diff --git a/src/forge/CardFactory_Creatures.java b/src/forge/CardFactory_Creatures.java index 62112689798..8a7a8d1aa01 100644 --- a/src/forge/CardFactory_Creatures.java +++ b/src/forge/CardFactory_Creatures.java @@ -96,7 +96,7 @@ public class CardFactory_Creatures { else if(cardName.equals("Belligerent Hatchling") || cardName.equals("Noxious Hatchling") || cardName.equals("Shrewd Hatchling") || cardName.equals("Sturdy Hatchling") || cardName.equals("Voracious Hatchling")) { - final SpellAbility ability = new Ability(card, "0") { + final SpellAbility ability = new Ability_Static(card, "0") { @Override public void resolve() { card.addCounter(Counters.M1M1, 4); @@ -16726,7 +16726,7 @@ public class CardFactory_Creatures { final Card newCard = new Card() { @Override public void addDamage(final int n, final Card source) { - final Ability ability = new Ability(card, "0") { + final Ability_Static ability = new Ability_Static(card, "0") { @Override public void resolve() { String player = source.getController(); @@ -17346,7 +17346,7 @@ public class CardFactory_Creatures { else if(cardName.equals("Gnarlid Pack") || cardName.equals("Apex Hawks") || cardName.equals("Enclave Elite") || cardName.equals("Quag Vampires") || cardName.equals("Skitter of Lizards")) { - final Ability ability = new Ability(card, "0") { + final Ability_Static ability = new Ability_Static(card, "0") { @Override public void resolve() { card.addCounter(Counters.P1P1, card.getMultiKickerMagnitude()); diff --git a/src/forge/GameAction.java b/src/forge/GameAction.java index 12756da1997..de1dfd69232 100644 --- a/src/forge/GameAction.java +++ b/src/forge/GameAction.java @@ -886,7 +886,7 @@ public class GameAction { } final Card card = c; - Ability ability = new Ability(crd, "0") + Ability_Static ability = new Ability_Static(crd, "0") { public void resolve() { @@ -2390,7 +2390,7 @@ public class GameAction { } final Card card = c; - Ability ability = new Ability(crd, "0") + Ability_Static ability = new Ability_Static(crd, "0") { public void resolve() { diff --git a/src/forge/MagicStack.java b/src/forge/MagicStack.java index 61773d84ee1..0af39d4ce98 100644 --- a/src/forge/MagicStack.java +++ b/src/forge/MagicStack.java @@ -133,7 +133,7 @@ public class MagicStack extends MyObservable } if(ActualEffectTriggered == false) { // // WheneverKeyword Test: Added one } at end - if(sp instanceof Ability_Triggered)//TODO make working triggered abilities! + if(sp instanceof Ability_Triggered || sp instanceof Ability_Static)//TODO make working triggered abilities! sp.resolve(); else { if(sp.isKickerAbility()) {