From c971e1ef9f45f78865f9708b92988c72777c22c4 Mon Sep 17 00:00:00 2001 From: jendave Date: Sat, 6 Aug 2011 03:35:40 +0000 Subject: [PATCH] - Added Rob's buyback code (includes Brush with Death). --- res/cards.txt | 7 +++++++ src/forge/CardFactory.java | 14 ++++++++++++++ src/forge/CardFactory_Creatures.java | 1 - src/forge/CardUtil.java | 18 ++++++++++++++++++ src/forge/SpellAbility.java | 11 +++++++++++ 5 files changed, 50 insertions(+), 1 deletion(-) diff --git a/res/cards.txt b/res/cards.txt index e6e092f589c..c9881dbe686 100644 --- a/res/cards.txt +++ b/res/cards.txt @@ -1,3 +1,10 @@ +Brush With Death +2 B +Sorcery +no text +spLoseLifeTgt:2:Drawback$YouGainLife/2:Target opponent loses 2 life and you gain 2 life. +SVar:Buyback:2 B B + Windstorm X G Instant diff --git a/src/forge/CardFactory.java b/src/forge/CardFactory.java index b6b0f693659..e29356fd36b 100644 --- a/src/forge/CardFactory.java +++ b/src/forge/CardFactory.java @@ -2993,6 +2993,20 @@ public class CardFactory implements NewConstants { card.clearSpellAbility(); card.addSpellAbility(spLoseLife); + + String bbCost = card.getSVar("Buyback"); + if (!bbCost.equals("")) + { + SpellAbility bbLoseLife = spLoseLife.copy(); + bbLoseLife.setManaCost(CardUtil.addManaCosts(card.getManaCost(), bbCost)); + bbLoseLife.setDescription("Buyback " + bbCost + "(You may pay an additional " + bbCost + " as you cast this spell. If you do, put this card into your hand as it resolves.)"); + bbLoseLife.setIsBuyBackAbility(true); + + if (Tgt[0] == true) + bbLoseLife.setBeforePayMana(CardFactoryUtil.input_targetPlayer(bbLoseLife)); + + card.addSpellAbility(bbLoseLife); + } } } diff --git a/src/forge/CardFactory_Creatures.java b/src/forge/CardFactory_Creatures.java index 6b47edafbbd..b59b2124ef2 100644 --- a/src/forge/CardFactory_Creatures.java +++ b/src/forge/CardFactory_Creatures.java @@ -3368,7 +3368,6 @@ public class CardFactory_Creatures { else ability.setTargetCard(human); - AllZone.Stack.add(ability); }//else }//execute() diff --git a/src/forge/CardUtil.java b/src/forge/CardUtil.java index 7c0c1df0eed..3c92e349e1a 100644 --- a/src/forge/CardUtil.java +++ b/src/forge/CardUtil.java @@ -227,6 +227,24 @@ public class CardUtil { return tok.countTokens(); } + static public String addManaCosts(String mc1, String mc2) + { + String tMC = new String(""); + + Integer cl1, cl2, tCL; + cl1 = Integer.valueOf(mc1.replaceAll("[WUBRGSX]", "").trim()); + cl2 = Integer.valueOf(mc2.replaceAll("[WUBRGSX]", "").trim()); + tCL = cl1 + cl2; + + mc1 = mc1.replace(cl1.toString(), "").trim(); + mc2 = mc2.replace(cl2.toString(), "").trim(); + + tMC = tCL.toString() + " " + mc1 + " " + mc2; + + System.out.println("TMC:" + tMC); + return tMC; + } + static public Card getRelative(Card c, String relation) { if(relation.equals("CARDNAME")) return c; diff --git a/src/forge/SpellAbility.java b/src/forge/SpellAbility.java index c1bf3af5b70..c3f6efaa956 100644 --- a/src/forge/SpellAbility.java +++ b/src/forge/SpellAbility.java @@ -294,4 +294,15 @@ public abstract class SpellAbility { public boolean isFlashBackAbility() { return flashBackAbility; } + + public SpellAbility copy() + { + SpellAbility clone = null; + try { + clone = (SpellAbility)this.clone(); + } catch (CloneNotSupportedException e) { + System.err.println(e); + } + return clone; + } }