From 9f72901b4070efb0b91115eeecbdee28d68606c2 Mon Sep 17 00:00:00 2001 From: Sol Date: Mon, 3 Dec 2012 01:28:23 +0000 Subject: [PATCH] - Convert Goblin Charbelcher to script --- res/cardsfolder/g/goblin_charbelcher.txt | 7 ++ .../effects/DigUntilEffect.java | 1 + .../cardfactory/CardFactoryArtifacts.java | 85 ------------------- 3 files changed, 8 insertions(+), 85 deletions(-) diff --git a/res/cardsfolder/g/goblin_charbelcher.txt b/res/cardsfolder/g/goblin_charbelcher.txt index 0a49bca4243..32e6c7c0b10 100644 --- a/res/cardsfolder/g/goblin_charbelcher.txt +++ b/res/cardsfolder/g/goblin_charbelcher.txt @@ -2,6 +2,13 @@ Name:Goblin Charbelcher ManaCost:4 Types:Artifact Text:no text +A:AB$ DigUntil | Cost$ 3 T | Valid$ Land | ValidDescription$ land | RememberRevealed$ True | RevealedDestination$ Library | RevealedLibraryPosition$ -1 | SubAbility$ DBBelch | SpellDescription$ Reveal cards from the top of your library until you reveal a land card. CARDNAME deals damage equal to the number of nonland cards revealed this way to target creature or player. If the revealed land card was a Mountain, CARDNAME deals double that damage instead. Put the revealed cards on the bottom of your library in any order. | StackDescription$ SpellDescription +SVar:DBBelch:DB$ DealDamage | Tgt$ CP | NumDmg$ X | ConditionCheckSVar$ FoundMountain | ConditionSVarCompare$ EQ0 | SubAbility$ DBDoubleBelch | StackDescription$ None +SVar:DBDoubleBelch:DB$ DealDamage | Defined$ Targeted | NumDmg$ DoubleX | SubAbility$ DBCleanup | ConditionCheckSVar$ FoundMountain | ConditionSVarCompare$ EQ1 | StackDescription$ None +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:X:Remembered$Valid Card.nonLand +SVar:DoubleX:Remembered$Valid Card.nonLand/Times.2 +SVar:FoundMountain:Remembered$Valid Card.Mountain SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/goblin_charbelcher.jpg SetInfo:MRD|Rare|http://magiccards.info/scans/en/mi/176.jpg diff --git a/src/main/java/forge/card/abilityfactory/effects/DigUntilEffect.java b/src/main/java/forge/card/abilityfactory/effects/DigUntilEffect.java index 85b83dea19f..8a6a99835ee 100644 --- a/src/main/java/forge/card/abilityfactory/effects/DigUntilEffect.java +++ b/src/main/java/forge/card/abilityfactory/effects/DigUntilEffect.java @@ -146,6 +146,7 @@ public class DigUntilEffect extends SpellEffect { } } + // TODO Use getOrderChoices before this moveTo call for the Human final Iterator itr = revealed.iterator(); while (itr.hasNext()) { final Card c = itr.next(); diff --git a/src/main/java/forge/card/cardfactory/CardFactoryArtifacts.java b/src/main/java/forge/card/cardfactory/CardFactoryArtifacts.java index 7d4a3fd775d..3c1ec0b1db0 100644 --- a/src/main/java/forge/card/cardfactory/CardFactoryArtifacts.java +++ b/src/main/java/forge/card/cardfactory/CardFactoryArtifacts.java @@ -149,91 +149,6 @@ class CardFactoryArtifacts { } // *************** END ************ END ************************** - - // *************** START *********** START ************************** - else if (cardName.equals("Goblin Charbelcher")) { - final Cost abCost = new Cost(card, "3 T", true); - class AbilityGoblinCharbelcher extends AbilityActivated { - public AbilityGoblinCharbelcher(final Card ca, final Cost co, final Target t) { - super(ca, co, t); - } - - @Override - public AbilityActivated getCopy() { - AbilityActivated res = new AbilityGoblinCharbelcher(getSourceCard(), - getPayCosts(), getTarget() == null ? null : new Target(getTarget())); - CardFactoryUtil.copySpellAbility(this, res); - return res; - } - - private static final long serialVersionUID = -840041589720758423L; - - @Override - public boolean canPlayAI() { - this.getTarget().resetTargets(); - final List libList = getActivatingPlayer().getCardsIn(ZoneType.Library); - return !libList.isEmpty() && ComputerUtil.targetHumanAI(this); - } - - - @Override - public void resolve() { - final List topOfLibrary = card.getController().getCardsIn(ZoneType.Library); - final List revealed = new ArrayList(); - - if (topOfLibrary.size() == 0) { - return; - } - - int damage = 0; - int count = 0; - Card c = null; - Card crd; - while (c == null) { - revealed.add(topOfLibrary.get(count)); - crd = topOfLibrary.get(count++); - if (crd.isLand() || (count == topOfLibrary.size())) { - c = crd; - damage = count; - if (crd.isLand()) { - damage--; - } - - if (crd.isType("Mountain")) { - damage *= 2; - } - } - } // while - GuiChoose.oneOrNone("Revealed cards:", revealed); - for (final Card revealedCard : revealed) { - Singletons.getModel().getGame().getAction().moveToBottomOfLibrary(revealedCard); - } - - if (this.getTargetCard() != null) { - if (this.getTargetCard().isInPlay() - && this.getTargetCard().canBeTargetedBy(this)) { - this.getTargetCard().addDamage(damage, card); - } - } else { - this.getTargetPlayer().addDamage(damage, card); - } - } - } - - final AbilityActivated ability = new AbilityGoblinCharbelcher(card, abCost, new Target(card, "TgtCP")); - - final StringBuilder sb = new StringBuilder(); - sb.append(abCost); - sb.append("Reveal cards from the top of your library until you reveal a land card. "); - sb.append("Goblin Charbelcher deals damage equal to the number of nonland cards revealed "); - sb.append("this way to target creature or player. If the revealed land card was a "); - sb.append("Mountain, Goblin Charbelcher deals double that damage instead. Put the "); - sb.append("revealed cards on the bottom of your library in any order."); - ability.setDescription(sb.toString()); - - card.addSpellAbility(ability); - } // *************** END ************ END ************************** - // *************** START *********** START ************************** else if (cardName.equals("Grindstone")) {