From bb22cc6ba99e9b313b0112c6444ef8ceb1939428 Mon Sep 17 00:00:00 2001 From: Sloth Date: Wed, 26 Jun 2013 21:19:20 +0000 Subject: [PATCH] - Converted the second ability of Fastbond to script. --- res/cardsfolder/f/fastbond.txt | 4 +- .../card/cardfactory/CardFactoryUtil.java | 39 ------------------- .../forge/card/trigger/TriggerLandPlayed.java | 10 ++++- src/main/java/forge/game/player/Player.java | 10 ++--- 4 files changed, 15 insertions(+), 48 deletions(-) diff --git a/res/cardsfolder/f/fastbond.txt b/res/cardsfolder/f/fastbond.txt index 5ae7db2b5c1..619482dc843 100644 --- a/res/cardsfolder/f/fastbond.txt +++ b/res/cardsfolder/f/fastbond.txt @@ -1,6 +1,8 @@ Name:Fastbond ManaCost:G Types:Enchantment -Text:You may play as many lands as you choose on your turn. Whenever you play a land other than the first land of the turn, Fastbond deals 1 damage to you. +Text:You may play any number of additional lands on each of your turns. +T:Mode$ LandPlayed | ValidCard$ Land.YouCtrl | NotFirstLand$ True | Execute$ DBPain | TriggerZones$ Battlefield | TriggerDescription$ Whenever you play a land, if it wasn't the first land you played this turn, CARDNAME deals 1 damage to you. +SVar:DBPain:DB$ DealDamage | NumDmg$ 1 | Defined$ You SVar:Picture:http://www.wizards.com/global/images/magic/general/fastbond.jpg Oracle:You may play any number of additional lands on each of your turns.\nWhenever you play a land, if it wasn't the first land you played this turn, Fastbond deals 1 damage to you. \ No newline at end of file diff --git a/src/main/java/forge/card/cardfactory/CardFactoryUtil.java b/src/main/java/forge/card/cardfactory/CardFactoryUtil.java index 7cb07c564e7..cf2d24f12dc 100644 --- a/src/main/java/forge/card/cardfactory/CardFactoryUtil.java +++ b/src/main/java/forge/card/cardfactory/CardFactoryUtil.java @@ -2141,37 +2141,6 @@ public class CardFactoryUtil { return neededDamage; } - - /** - *

- * playLandEffects. - *

- * - * @param c - * a {@link forge.Card} object. - */ - public static void playLandEffects(final Card c) { - final Player player = c.getController(); - - // > 0 because land amount isn't incremented until after playLandEffects - final boolean extraLand = player.getNumLandsPlayed() > 0; - - if (extraLand) { - final List fastbonds = player.getCardsIn(ZoneType.Battlefield, "Fastbond"); - for (final Card f : fastbonds) { - final SpellAbility ability = new Ability(f, ManaCost.ZERO) { - @Override - public void resolve() { - f.getController().addDamage(1, f); - } - }; - ability.setStackDescription("Fastbond - Deals 1 damage to you."); - c.getGame().getStack().addSimultaneousStackEntry(ability); - } - } - } - - public static void correctAbilityChainSourceCard(final SpellAbility sa, final Card card) { sa.setSourceCard(card); @@ -2209,13 +2178,6 @@ public class CardFactoryUtil { // Cards with Cycling abilities // -1 means keyword "Cycling" not found - // TODO - certain cards have two different kicker types, kicker will - // need - // to be written differently to handle this - // TODO - kicker costs can only be mana right now i think? - // TODO - this kicker only works for pemanents. maybe we can create an - // optional cost class for buyback, kicker, that type of thing - if (hasKeyword(card, "Multikicker") != -1) { final int n = hasKeyword(card, "Multikicker"); if (n != -1) { @@ -2356,7 +2318,6 @@ public class CardFactoryUtil { } }; card.addComesIntoPlayCommand(intoPlay); - } // echo if (hasKeyword(card, "Suspend") != -1) { diff --git a/src/main/java/forge/card/trigger/TriggerLandPlayed.java b/src/main/java/forge/card/trigger/TriggerLandPlayed.java index 2aa877c2437..243a0e5c781 100644 --- a/src/main/java/forge/card/trigger/TriggerLandPlayed.java +++ b/src/main/java/forge/card/trigger/TriggerLandPlayed.java @@ -57,9 +57,15 @@ public class TriggerLandPlayed extends Trigger { /** {@inheritDoc} */ @Override public final boolean performTest(final java.util.Map runParams2) { + Card land = (Card) runParams2.get("Card"); if (this.mapParams.containsKey("ValidCard")) { - if (!matchesValid(runParams2.get("Card"), this.mapParams.get("ValidCard").split(","), - this.getHostCard())) { + if (!matchesValid(land, this.mapParams.get("ValidCard").split(","), this.getHostCard())) { + return false; + } + } + + if (this.mapParams.containsKey("NotFirstLand")) { + if (land.getController().getNumLandsPlayed() < 1) { return false; } } diff --git a/src/main/java/forge/game/player/Player.java b/src/main/java/forge/game/player/Player.java index 5d332b6cd95..9d534dfce68 100644 --- a/src/main/java/forge/game/player/Player.java +++ b/src/main/java/forge/game/player/Player.java @@ -43,7 +43,6 @@ import forge.Singletons; import forge.card.MagicColor; import forge.card.ability.AbilityFactory; import forge.card.ability.AbilityUtils; -import forge.card.cardfactory.CardFactoryUtil; import forge.card.mana.ManaCost; import forge.card.mana.ManaPool; import forge.card.replacement.ReplacementResult; @@ -1747,11 +1746,6 @@ public class Player extends GameEntity implements Comparable { if (this.canPlayLand(land, ignoreTiming)) { land.setController(this, 0); game.getAction().moveTo(this.getZone(ZoneType.Battlefield), land); - CardFactoryUtil.playLandEffects(land); - this.numLandsPlayed++; - if (land.isBasicLand() && land.isType("Forest")) { - this.numBasicForestsPlayed++; - } // check state effects for static animate (Living Lands, Conversion, // etc...) @@ -1765,6 +1759,10 @@ public class Player extends GameEntity implements Comparable { runParams.put("Card", land); game.getTriggerHandler().runTrigger(TriggerType.LandPlayed, runParams, false); game.getStack().unfreezeStack(); + this.numLandsPlayed++; + if (land.isBasicLand() && land.isType("Forest")) { + this.numBasicForestsPlayed++; + } return true; }