From 3d2d6eb5b2646e900facca50ce2c4f97bd5bcce9 Mon Sep 17 00:00:00 2001 From: Sol Date: Sat, 9 Feb 2013 03:00:09 +0000 Subject: [PATCH] - Convert Permanent Multikickers to Script --- res/cardsfolder/a/apex_hawks.txt | 5 +- res/cardsfolder/e/enclave_elite.txt | 5 +- res/cardsfolder/e/everflowing_chalice.txt | 5 +- res/cardsfolder/g/gnarlid_pack.txt | 5 +- res/cardsfolder/j/joraga_warcaller.txt | 5 +- res/cardsfolder/q/quag_vampires.txt | 5 +- res/cardsfolder/s/skitter_of_lizards.txt | 5 +- .../cardfactory/CardFactoryArtifacts.java | 134 ------------------ .../cardfactory/CardFactoryCreatures.java | 28 ---- 9 files changed, 28 insertions(+), 169 deletions(-) diff --git a/res/cardsfolder/a/apex_hawks.txt b/res/cardsfolder/a/apex_hawks.txt index 6990457373b..6729eee1037 100644 --- a/res/cardsfolder/a/apex_hawks.txt +++ b/res/cardsfolder/a/apex_hawks.txt @@ -1,10 +1,13 @@ Name:Apex Hawks ManaCost:2 W Types:Creature Bird -Text:Apex Hawks enters the battlefield with a +1/+1 counter on it for each time it was kicked. +Text:no text PT:2/2 K:Flying K:Multikicker 1 W +K:ETBReplacement:Other:Multikicked +SVar:Multikicked:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ XKicked | SpellDescription$ CARDNAME enters the battlefield with a +1/+1 counter on it for each time it was kicked. +SVar:XKicked:Count$TimesKicked SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/apex_hawks.jpg SetInfo:WWK|Common|http://magiccards.info/scans/en/wwk/2.jpg diff --git a/res/cardsfolder/e/enclave_elite.txt b/res/cardsfolder/e/enclave_elite.txt index 56a6da0d16c..fab3698c90d 100644 --- a/res/cardsfolder/e/enclave_elite.txt +++ b/res/cardsfolder/e/enclave_elite.txt @@ -1,10 +1,13 @@ Name:Enclave Elite ManaCost:2 U Types:Creature Merfolk Soldier -Text:Enclave Elite enters the battlefield with a +1/+1 counter on it for each time it was kicked. +Text:no text PT:2/2 K:Islandwalk K:Multikicker 1 U +K:ETBReplacement:Other:Multikicked +SVar:Multikicked:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ XKicked | SpellDescription$ CARDNAME enters the battlefield with a +1/+1 counter on it for each time it was kicked. +SVar:XKicked:Count$TimesKicked SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/enclave_elite.jpg SetInfo:WWK|Common|http://magiccards.info/scans/en/wwk/27.jpg diff --git a/res/cardsfolder/e/everflowing_chalice.txt b/res/cardsfolder/e/everflowing_chalice.txt index 38212520ca1..4dd49aec62c 100644 --- a/res/cardsfolder/e/everflowing_chalice.txt +++ b/res/cardsfolder/e/everflowing_chalice.txt @@ -1,10 +1,13 @@ Name:Everflowing Chalice ManaCost:0 Types:Artifact -Text:Everflowing Chalice enters the battlefield with a charge counter on it for each time it was kicked. +Text: K:Multikicker 2 +K:ETBReplacement:Other:Multikicked +SVar:Multikicked:DB$ PutCounter | Defined$ Self | CounterType$ Charge | CounterNum$ XKicked | SpellDescription$ Everflowing Chalice enters the battlefield with a charge counter on it for each time it was kicked. A:AB$ Mana | Cost$ T | Produced$ 1 | Amount$ X | References$ X | SpellDescription$ Add 1 to your mana pool for each charge counter on CARDNAME. SVar:X:Count$CardCounters.CHARGE +SVar:XKicked:Count$TimesKicked SVar:RemAIDeck:True SVar:Rarity:Uncommon SVar:Picture:http://www.wizards.com/global/images/magic/general/everflowing_chalice.jpg diff --git a/res/cardsfolder/g/gnarlid_pack.txt b/res/cardsfolder/g/gnarlid_pack.txt index ebd654aa660..f2f7667efc0 100644 --- a/res/cardsfolder/g/gnarlid_pack.txt +++ b/res/cardsfolder/g/gnarlid_pack.txt @@ -1,9 +1,12 @@ Name:Gnarlid Pack ManaCost:1 G Types:Creature Beast -Text:Gnarlid Pack enters the battlefield with a +1/+1 counter on it for each time it was kicked. +Text:no text PT:2/2 K:Multikicker 1 G +K:ETBReplacement:Other:Multikicked +SVar:Multikicked:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ XKicked | SpellDescription$ CARDNAME enters the battlefield with a +1/+1 counter on it for each time it was kicked. +SVar:XKicked:Count$TimesKicked SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/gnarlid_pack.jpg SetInfo:WWK|Common|http://magiccards.info/scans/en/wwk/101.jpg diff --git a/res/cardsfolder/j/joraga_warcaller.txt b/res/cardsfolder/j/joraga_warcaller.txt index d3731931beb..097523ba2c6 100644 --- a/res/cardsfolder/j/joraga_warcaller.txt +++ b/res/cardsfolder/j/joraga_warcaller.txt @@ -1,11 +1,14 @@ Name:Joraga Warcaller ManaCost:G Types:Creature Elf Warrior -Text:Joraga Warcaller enters the battlefield with a +1/+1 counter on it for each time it was kicked. +Text:no text PT:1/1 K:Multikicker 1 G +K:ETBReplacement:Other:Multikicked +SVar:Multikicked:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ XKicked | SpellDescription$ CARDNAME enters the battlefield with a +1/+1 counter on it for each time it was kicked. S:Mode$ Continuous | Affected$ Creature.Elf+Other+YouCtrl | AddPower$ X | AddToughness$ X | Description$ Other Elf creatures you control get +1/+1 for each +1/+1 counter on CARDNAME. SVar:X:Count$CardCounters.P1P1 +SVar:XKicked:Count$TimesKicked SVar:RemRandomDeck:True SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/joraga_warcaller.jpg diff --git a/res/cardsfolder/q/quag_vampires.txt b/res/cardsfolder/q/quag_vampires.txt index 3b0bc38a01f..4cee0cb0d2a 100644 --- a/res/cardsfolder/q/quag_vampires.txt +++ b/res/cardsfolder/q/quag_vampires.txt @@ -1,10 +1,13 @@ Name:Quag Vampires ManaCost:B Types:Creature Vampire Rogue -Text:Quag Vampires enters the battlefield with a +1/+1 counter on it for each time it was kicked. +Text:no text PT:1/1 K:Swampwalk K:Multikicker 1 B +K:ETBReplacement:Other:Multikicked +SVar:Multikicked:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ XKicked | SpellDescription$ CARDNAME enters the battlefield with a +1/+1 counter on it for each time it was kicked. +SVar:XKicked:Count$TimesKicked SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/quag_vampires.jpg SetInfo:WWK|Common|http://magiccards.info/scans/en/wwk/63.jpg diff --git a/res/cardsfolder/s/skitter_of_lizards.txt b/res/cardsfolder/s/skitter_of_lizards.txt index db25b78282b..b6270302121 100644 --- a/res/cardsfolder/s/skitter_of_lizards.txt +++ b/res/cardsfolder/s/skitter_of_lizards.txt @@ -1,10 +1,13 @@ Name:Skitter of Lizards ManaCost:R Types:Creature Lizard -Text:Skitter of Lizards enters the battlefield with a +1/+1 counter on it for each time it was kicked. +Text:no text PT:1/1 K:Haste K:Multikicker 1 R +K:ETBReplacement:Other:Multikicked +SVar:Multikicked:DB$ PutCounter | Defined$ Self | CounterType$ P1P1 | CounterNum$ XKicked | SpellDescription$ CARDNAME enters the battlefield with a +1/+1 counter on it for each time it was kicked. +SVar:XKicked:Count$TimesKicked SVar:Rarity:Common SVar:Picture:http://www.wizards.com/global/images/magic/general/skitter_of_lizards.jpg SetInfo:WWK|Common|http://magiccards.info/scans/en/wwk/91.jpg diff --git a/src/main/java/forge/card/cardfactory/CardFactoryArtifacts.java b/src/main/java/forge/card/cardfactory/CardFactoryArtifacts.java index 6fd39d0dd07..acc126ddddd 100644 --- a/src/main/java/forge/card/cardfactory/CardFactoryArtifacts.java +++ b/src/main/java/forge/card/cardfactory/CardFactoryArtifacts.java @@ -107,20 +107,6 @@ class CardFactoryArtifacts { card.addSpellAbility(ab1); } // *************** END ************ END ************************** - // *************** START *********** START ************************** - else if (cardName.equals("Everflowing Chalice")) { - final Command comesIntoPlay = new Command() { - private static final long serialVersionUID = 4245563898487609274L; - - @Override - public void execute() { - card.addCounter(CounterType.CHARGE, card.getMultiKickerMagnitude(), true); - card.setMultiKickerMagnitude(0); - } - }; - card.addComesIntoPlayCommand(comesIntoPlay); - } // *************** END ************ END ************************** - // *************** START *********** START ************************** else if (cardName.equals("Scroll Rack")) { class AbilityScrollRack extends AbilityActivated { @@ -211,125 +197,5 @@ class CardFactoryArtifacts { ability.setStackDescription(sbStack.toString()); card.addSpellAbility(ability); } // *************** END ************ END ************************** - - // *************** START *********** START ************************** - else if (cardName.equals("Temporal Aperture")) { - /* - * 5, Tap: Shuffle your library, then reveal the top card. Until end - * of turn, for as long as that card remains on top of your library, - * play with the top card of your library revealed and you may play - * that card without paying its mana cost. (If it has X in its mana - * cost, X is 0.) - */ - final Card[] topCard = new Card[1]; - - final Ability freeCast = new Ability(card, SpellManaCost.ZERO) { - - @Override - public boolean canPlay() { - final PlayerZone lib = card.getController().getZone(ZoneType.Library); - return super.canPlay() && ((lib.size() > 0) && lib.get(0).equals(topCard[0])); - } - - @Override - public void resolve() { - final Card freeCard = topCard[0]; - final Player player = card.getController(); - if (freeCard != null) { - if (freeCard.isLand()) { - if (player.canPlayLand()) { - player.playLand(freeCard); - } else { - JOptionPane.showMessageDialog(null, "You can't play any more lands this turn.", "", - JOptionPane.INFORMATION_MESSAGE); - } - } else { - Singletons.getModel().getGame().getActionPlay().playCardWithoutManaCost(freeCard, player); - } - } else { - final StringBuilder sb = new StringBuilder(); - sb.append("Error in ").append(cardName).append(". freeCard is null"); - JOptionPane.showMessageDialog(null, sb.toString(), "", JOptionPane.INFORMATION_MESSAGE); - } - - } - - @Override - public boolean canPlayAI() { - return false; - } - - }; - freeCast.setDescription("Play the previously revealed top card of your library for free."); - final StringBuilder sb = new StringBuilder(); - sb.append(cardName).append(" - play card without paying its mana cost."); - freeCast.setStackDescription(sb.toString()); - - class AbilityTemporalAperture extends AbilityActivated { - public AbilityTemporalAperture(final Card ca, final Cost co, final Target t) { - super(ca, co, t); - } - - @Override - public AbilityActivated getCopy() { - AbilityActivated res = new AbilityTemporalAperture(getSourceCard(), - getPayCosts(), getTarget() == null ? null : new Target(getTarget())); - CardFactoryUtil.copySpellAbility(this, res); - return res; - } - - private static final long serialVersionUID = -7328518969488588777L; - - @Override - public void resolve() { - final PlayerZone lib = card.getController().getZone(ZoneType.Library); - if (lib.size() > 0) { - - // shuffle your library - card.getController().shuffle(); - - // reveal the top card - topCard[0] = lib.get(0); - final StringBuilder sb = new StringBuilder(); - sb.append("Revealed card:\n").append(topCard[0].getName()); - JOptionPane.showMessageDialog(null, sb.toString(), card.getName(), JOptionPane.PLAIN_MESSAGE); - - card.addSpellAbility(freeCast); - card.addExtrinsicKeyword("Play with the top card of your library revealed."); - Singletons.getModel().getGame().getEndOfTurn().addUntil(new Command() { - private static final long serialVersionUID = -2860753262177388046L; - - @Override - public void execute() { - card.removeSpellAbility(freeCast); - card.removeExtrinsicKeyword("Play with the top card of your library revealed."); - } - }); - } - } // resolve - - @Override - public boolean canPlayAI() { - return false; - } - } - - final Cost abCost = new Cost(card, "5 T", true); - final AbilityActivated ability = new AbilityTemporalAperture(card, abCost, null); - - final StringBuilder sbStack = new StringBuilder(); - sbStack.append(card).append(" - Shuffle your library, then reveal the top card."); - ability.setStackDescription(sbStack.toString()); - - final StringBuilder sbDesc = new StringBuilder(); - sbDesc.append(abCost).append("Shuffle your library, then reveal the top card. "); - sbDesc.append("Until end of turn, for as long as that card remains on top of your "); - sbDesc.append("library, play with the top card of your library revealed "); - sbDesc.append("and you may play that card without paying its mana cost. "); - sbDesc.append("(If it has X in its mana cost, X is 0.)"); - ability.setDescription(sbDesc.toString()); - - card.addSpellAbility(ability); - } // *************** END ************ END ************************** } } diff --git a/src/main/java/forge/card/cardfactory/CardFactoryCreatures.java b/src/main/java/forge/card/cardfactory/CardFactoryCreatures.java index 9b366f8997c..8c1a6f230f7 100644 --- a/src/main/java/forge/card/cardfactory/CardFactoryCreatures.java +++ b/src/main/java/forge/card/cardfactory/CardFactoryCreatures.java @@ -397,31 +397,6 @@ public class CardFactoryCreatures { card.addDestroyCommand(destroy); } - private static void getCard_MultikickerP1P1(final Card card, final String cardName) { - final AbilityStatic ability = new AbilityStatic(card, SpellManaCost.ZERO) { - @Override - public void resolve() { - card.addCounter(CounterType.P1P1, card.getMultiKickerMagnitude(), true); - card.setMultiKickerMagnitude(0); - } - }; - final StringBuilder sb = new StringBuilder(); - sb.append(cardName); - sb.append(" enters the battlefield with a +1/+1 counter "); - sb.append("on it for each time it was kicked."); - ability.setStackDescription(sb.toString()); - - final Command comesIntoPlay = new Command() { - private static final long serialVersionUID = 4245563898487609274L; - - @Override - public void execute() { - Singletons.getModel().getGame().getStack().addSimultaneousStackEntry(ability); - - } - }; - card.addComesIntoPlayCommand(comesIntoPlay); - } private static void getCard_SurturedGhoul(final Card card) { final int[] numCreatures = new int[1]; final int[] sumPower = new int[1]; @@ -759,9 +734,6 @@ public class CardFactoryCreatures { getCard_ApocalypseHydra(card); } else if (cardName.equals("Kinsbaile Borderguard")) { getCard_KinsbaileBorderguard(card); - } else if (cardName.equals("Gnarlid Pack") || cardName.equals("Apex Hawks") || cardName.equals("Enclave Elite") - || cardName.equals("Quag Vampires") || cardName.equals("Skitter of Lizards") || cardName.equals("Joraga Warcaller")) { - getCard_MultikickerP1P1(card, cardName); } else if (cardName.equals("Sutured Ghoul")) { getCard_SurturedGhoul(card); } else if (cardName.equals("Phyrexian Dreadnought")) {