From ef9e02fbd7a1d00a61fa572b6f9f593821866e8c Mon Sep 17 00:00:00 2001 From: jendave Date: Sat, 6 Aug 2011 14:07:13 +0000 Subject: [PATCH] add Vengeful Dreams (from Torment) --- .gitattributes | 1 + res/cardsfolder/vengeful_dreams.txt | 8 +++ src/forge/CardFactory_Creatures.java | 2 +- src/forge/CardFactory_Instants.java | 80 ++++++++++++++++++++++++++++ 4 files changed, 90 insertions(+), 1 deletion(-) create mode 100644 res/cardsfolder/vengeful_dreams.txt diff --git a/.gitattributes b/.gitattributes index 0a4bf7c4988..a46914a630e 100644 --- a/.gitattributes +++ b/.gitattributes @@ -5316,6 +5316,7 @@ res/cardsfolder/venerable_kumo.txt -text svneol=native#text/plain res/cardsfolder/venerable_monk.txt -text svneol=native#text/plain res/cardsfolder/venerated_teacher.txt -text svneol=native#text/plain res/cardsfolder/vengeance.txt -text svneol=native#text/plain +res/cardsfolder/vengeful_dreams.txt -text svneol=native#text/plain res/cardsfolder/vengeful_firebrand.txt -text svneol=native#text/plain res/cardsfolder/vengevine.txt -text svneol=native#text/plain res/cardsfolder/venomous_dragonfly.txt -text svneol=native#text/plain diff --git a/res/cardsfolder/vengeful_dreams.txt b/res/cardsfolder/vengeful_dreams.txt new file mode 100644 index 00000000000..be056ed736c --- /dev/null +++ b/res/cardsfolder/vengeful_dreams.txt @@ -0,0 +1,8 @@ +Name:Vengeful Dreams +ManaCost:W W +Types:Instant +Text:As an additional cost to cast Vengeful Dreams, discard X cards.\r\n\r\nExile X target attacking creatures. +SVar:RemAIDeck:True +SVar:Rarity:Rare +SVar:Picture:http://www.wizards.com/global/images/magic/general/vengeful_dreams.jpg +End \ No newline at end of file diff --git a/src/forge/CardFactory_Creatures.java b/src/forge/CardFactory_Creatures.java index 6f7b176f90d..893966da6b5 100644 --- a/src/forge/CardFactory_Creatures.java +++ b/src/forge/CardFactory_Creatures.java @@ -6093,7 +6093,7 @@ public class CardFactory_Creatures { //*************** START *********** START ************************** else if(cardName.equals("Memnarch")) { - //has 2 non-tap abilities that effects itself + //has 2 non-tap abilities that affect itself final SpellAbility ability1 = new Ability(card, "1 U U") { @Override public void resolve() { diff --git a/src/forge/CardFactory_Instants.java b/src/forge/CardFactory_Instants.java index 29a7db29b54..42d04bad622 100644 --- a/src/forge/CardFactory_Instants.java +++ b/src/forge/CardFactory_Instants.java @@ -3944,6 +3944,86 @@ public class CardFactory_Instants { card.addSpellAbility(spell); }//*************** END ************ END ************************** + + //*************** START *********** START ************************** + else if(cardName.equals("Vengeful Dreams")) { + final CardList targets = new CardList(); + final SpellAbility spell = new Spell(card) { + private static final long serialVersionUID = 1593405082929818055L; + + @Override + public boolean canPlayAI() { + return false; + } + + @Override + public void resolve() { + for(Card c:targets) { + if(AllZone.GameAction.isCardInPlay(c) && CardFactoryUtil.canTarget(card, c)) { + AllZone.GameAction.exile(c); + }//if isCardInPlay + } + targets.clear(); + } + }; + + Input runtime = new Input() { + private static final long serialVersionUID = 4656252051002867111L; + int max = 0; + + @Override + public void showMessage() { + PlayerZone hand = AllZone.getZone(Constant.Zone.Hand, AllZone.HumanPlayer); + hand.remove(card); + hand.updateObservers(); + max = AllZoneUtil.getPlayerHand(card.getController()).size(); + if(max == targets.size()) done(); + StringBuilder sb = new StringBuilder(); + sb.append(card.getName()).append(" - Select target attacking creatures. Currently, ("); + sb.append(targets.size()).append(") selected."); + sb.append(" Press OK when done."); + AllZone.Display.showMessage(sb.toString()); + ButtonUtil.enableAll(); + } + + @Override + public void selectButtonCancel() { + targets.clear(); + PlayerZone hand = AllZone.getZone(Constant.Zone.Hand, AllZone.HumanPlayer); + hand.add(card); + stop(); + } + + @Override + public void selectCard(Card c, PlayerZone zone) { + if(zone.is(Constant.Zone.Battlefield) && !targets.contains(c) + && CardFactoryUtil.canTarget(card, c) && c.isAttacking()) { + targets.add(c); + showMessage(); + } + } + + @Override + public void selectButtonOK() { + done(); + } + + private void done() { + if(targets.size() > AllZoneUtil.getPlayerHand(card.getController()).size()) stop(); + else { + card.getController().discard(targets.size(), spell, false); + stopSetNext(new Input_PayManaCost(spell)); + } + + } + }; + spell.setStackDescription(cardName+" - exile X attacking creatures."); + spell.setBeforePayMana(runtime); + + card.clearSpellAbility(); + card.addSpellAbility(spell); + }//*************** END ************ END ************************** + return card; }//getCard }