From f45924f919ad7544726bcf28d4f6eb24820f9743 Mon Sep 17 00:00:00 2001 From: jendave Date: Sat, 6 Aug 2011 03:42:04 +0000 Subject: [PATCH] - Added "Landfall - Whenever a land enters the battlefield under your control, CARDNAME gets +2/+2 until end of turn." keyword. - Added Talon Sliver + +2/+2 EOT landfall cards. --- res/cards.txt | 50 +++++++++++++++++ src/forge/GameActionUtil.java | 74 ++++++++++++++++++++++++- src/forge/PlayerZone_ComesIntoPlay.java | 3 +- src/forge/StaticEffects.java | 1 + 4 files changed, 126 insertions(+), 2 deletions(-) diff --git a/res/cards.txt b/res/cards.txt index 19581e840f9..1a149aa7db7 100644 --- a/res/cards.txt +++ b/res/cards.txt @@ -1,3 +1,53 @@ +Windrider Eel +3 U +Creature Fish +no text +2/2 +Flying +Landfall - Whenever a land enters the battlefield under your control, CARDNAME gets +2/+2 until end of turn. + +Territorial Baloth +4 G +Creature Beast +no text +4/4 +Landfall - Whenever a land enters the battlefield under your control, CARDNAME gets +2/+2 until end of turn. + +Plated Geopede +1 R +Creature Insect +no text +1/1 +First Strike +Landfall - Whenever a land enters the battlefield under your control, CARDNAME gets +2/+2 until end of turn. + +Hedron Rover +4 +Artifact Creature Construct +no text +2/2 +Landfall - Whenever a land enters the battlefield under your control, CARDNAME gets +2/+2 until end of turn. + +Hagra Crocodile +3 B +Creature Crocodile +no text +3/1 +Landfall - Whenever a land enters the battlefield under your control, CARDNAME gets +2/+2 until end of turn. + +Steppe Lynx +W +Creature Cat +no text +0/1 +Landfall - Whenever a land enters the battlefield under your control, CARDNAME gets +2/+2 until end of turn. + +Talon Sliver +1 W +Creature Sliver +All sliver creatures have first strike. +1/1 + Stormscape Apprentice U Creature Human Wizard diff --git a/src/forge/GameActionUtil.java b/src/forge/GameActionUtil.java index 59b24e0cd85..feb73c386e4 100644 --- a/src/forge/GameActionUtil.java +++ b/src/forge/GameActionUtil.java @@ -3282,7 +3282,10 @@ public class GameActionUtil { //***ENCHANTMENTS END HERE*** public static void executeLandfallEffects(Card c) { - if(c.getName().equals("Rampaging Baloths")) landfall_Rampaging_Baloths(c); + if (c.getKeyword().contains("Landfall - Whenever a land enters the battlefield under your control, CARDNAME gets +2/+2 until end of turn.")) + landfall_Generic_P2P2_UntilEOT(c); + + if(c.getName().equals("Rampaging Baloths")) landfall_Rampaging_Baloths(c); else if(c.getName().equals("Emeria Angel")) landfall_Emeria_Angel(c); else if(c.getName().equals("Ob Nixilis, the Fallen")) landfall_Ob_Nixilis(c); else if(c.getName().equals("Ior Ruin Expedition")) landfall_Ior_Ruin_Expedition(c); @@ -3303,6 +3306,39 @@ public class GameActionUtil { else return true; } + private static void landfall_Generic_P2P2_UntilEOT(Card c) + { + final Card crd = c; + Ability ability = new Ability(c, "0") + { + @Override + public void resolve() + { + final Command untilEOT = new Command() { + private static final long serialVersionUID = 8919719388859986796L; + + public void execute() { + if(AllZone.GameAction.isCardInPlay(crd)) { + crd.addTempAttackBoost(-2); + crd.addTempDefenseBoost(-2); + } + } + }; + crd.addTempAttackBoost(2); + crd.addTempDefenseBoost(2); + + AllZone.EndOfTurn.addUntil(untilEOT); + } + }; + ability.setStackDescription(c + " - Landfall: gets +2/+2 until EOT."); + + if(c.getController().equals(Constant.Player.Human)) { + if(showLandfallDialog(c)) AllZone.Stack.add(ability); + } + + else if(c.getController().equals(Constant.Player.Computer)) AllZone.Stack.add(ability); + } + private static void landfall_Rampaging_Baloths(Card c) { final Card crd = c; Ability ability = new Ability(c, "0") { @@ -8361,6 +8397,41 @@ public class GameActionUtil { }// for outer }// execute() }; + + public static Command Talon_Sliver = new Command() { + + private static final long serialVersionUID = -7392607614574103064L; + CardList gloriousAnthemList = new CardList(); + + public void execute() { + String keyword = "First Strike"; + + CardList list = gloriousAnthemList; + Card c; + // reset all cards in list - aka "old" cards + for(int i = 0; i < list.size(); i++) { + c = list.get(i); + c.removeExtrinsicKeyword(keyword); + } + + list.clear(); + PlayerZone[] zone = getZone("Talon Sliver"); + + for(int outer = 0; outer < zone.length; outer++) { + CardList creature = new CardList(); + creature.addAll(AllZone.Human_Play.getCards()); + creature.addAll(AllZone.Computer_Play.getCards()); + creature = creature.getType("Sliver"); + + for(int i = 0; i < creature.size(); i++) { + c = creature.get(i); + c.addExtrinsicKeyword(keyword); + + gloriousAnthemList.add(c); + }// for inner + }// for outer + }// execute() + }; public static Command Crystalline_Sliver = new Command() { @@ -14539,6 +14610,7 @@ public class GameActionUtil { commands.put("Winged_Sliver", Winged_Sliver); commands.put("Synchronous_Sliver", Synchronous_Sliver); commands.put("Fury_Sliver", Fury_Sliver); + commands.put("Talon_Sliver", Talon_Sliver); commands.put("Plated_Sliver", Plated_Sliver); commands.put("Crystalline_Sliver", Crystalline_Sliver); commands.put("Virulent_Sliver", Virulent_Sliver); diff --git a/src/forge/PlayerZone_ComesIntoPlay.java b/src/forge/PlayerZone_ComesIntoPlay.java index 52ebc727af4..b8bf5087088 100644 --- a/src/forge/PlayerZone_ComesIntoPlay.java +++ b/src/forge/PlayerZone_ComesIntoPlay.java @@ -67,7 +67,8 @@ public class PlayerZone_ComesIntoPlay extends DefaultPlayerZone { list = list.filter(new CardListFilter() { public boolean addCard(Card c) { - return c.getKeyword().contains("Landfall"); + return c.getKeyword().contains("Landfall") || + c.getKeyword().contains("Landfall - Whenever a land enters the battlefield under your control, CARDNAME gets +2/+2 until end of turn."); } }); diff --git a/src/forge/StaticEffects.java b/src/forge/StaticEffects.java index 20442f74c3e..a35583c896d 100644 --- a/src/forge/StaticEffects.java +++ b/src/forge/StaticEffects.java @@ -156,6 +156,7 @@ public class StaticEffects cardToEffectsList.put("Winged Sliver", new String[] {"Winged_Sliver"}); cardToEffectsList.put("Synchronous Sliver", new String[] {"Synchronous_Sliver"}); cardToEffectsList.put("Fury Sliver", new String[] {"Fury_Sliver"}); + cardToEffectsList.put("Talon Sliver", new String[] {"Talon_Sliver"}); cardToEffectsList.put("Plated Sliver", new String[] {"Plated_Sliver"}); cardToEffectsList.put("Virulent Sliver", new String[] {"Virulent_Sliver"}); cardToEffectsList.put("Sidewinder Sliver", new String[] {"Sidewinder_Sliver"});