From 66ea30d5f68a5df4e6c2811a8628e54980baf3ec Mon Sep 17 00:00:00 2001 From: jendave Date: Sat, 6 Aug 2011 07:22:33 +0000 Subject: [PATCH] -Added Leeches -addPoison and getPoison (player) added to GameAction --- .gitattributes | 1 + res/cardsfolder/leeches.txt | 7 +++++ src/forge/CardFactory_Sorceries.java | 41 ++++++++++++++++++++++++++++ src/forge/GameAction.java | 29 ++++++++++++-------- src/forge/GameActionUtil.java | 4 ++- 5 files changed, 69 insertions(+), 13 deletions(-) create mode 100644 res/cardsfolder/leeches.txt diff --git a/.gitattributes b/.gitattributes index b9efccac269..d79c6363cb8 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2017,6 +2017,7 @@ res/cardsfolder/leafdrake_roost.txt -text svneol=native#text/plain res/cardsfolder/leap.txt -text svneol=native#text/plain res/cardsfolder/leaping_lizard.txt -text svneol=native#text/plain res/cardsfolder/leatherback_baloth.txt -text svneol=native#text/plain +res/cardsfolder/leeches.txt svneol=native#text/plain res/cardsfolder/legacy_weapon.txt -text svneol=native#text/plain res/cardsfolder/leonin_elder.txt -text svneol=native#text/plain res/cardsfolder/leonin_scimitar.txt -text svneol=native#text/plain diff --git a/res/cardsfolder/leeches.txt b/res/cardsfolder/leeches.txt new file mode 100644 index 00000000000..ab990508638 --- /dev/null +++ b/res/cardsfolder/leeches.txt @@ -0,0 +1,7 @@ +Name:Leeches +ManaCost:1 W W +Types:Sorcery +Text:Target player loses all poison counters. Leeches deals that much damage to that player. +K:SVar:Rarity:Rare +K:SVar:Picture:http://www.wizards.com/global/images/magic/general/leeches.jpg +End \ No newline at end of file diff --git a/src/forge/CardFactory_Sorceries.java b/src/forge/CardFactory_Sorceries.java index 4e1eb015c42..88f6db61292 100644 --- a/src/forge/CardFactory_Sorceries.java +++ b/src/forge/CardFactory_Sorceries.java @@ -8397,6 +8397,47 @@ public class CardFactory_Sorceries { card.setSVar("PlayMain1", "TRUE"); }//*************** END ************ END ************************** + //*************** START *********** START ************************** + else if(cardName.equals("Leeches")) { + /* + * Target player loses all poison counters. + * Leeches deals that much damage to that player. + */ + SpellAbility spell = new Spell(card) { + private static final long serialVersionUID = 8555498267738686288L; + + @Override + public void resolve() { + int counters = AllZone.GameAction.getPoison(getTargetPlayer()); + AllZone.GameAction.addDamage(getTargetPlayer(), card, counters); + AllZone.GameAction.addPoison(getTargetPlayer(), -counters); + }// resolve() + + @Override + public boolean canPlayAI() { + PlayerLife compLife = AllZone.GameAction.getPlayerLife(Constant.Player.Computer); + PlayerLife humanLife = AllZone.GameAction.getPlayerLife(Constant.Player.Human); + int humanPoison = AllZone.GameAction.getPoison(Constant.Player.Human); + int compPoison = AllZone.GameAction.getPoison(Constant.Player.Computer); + + if(humanLife.getLife() <= humanPoison ) { + setTargetPlayer(Constant.Player.Human); + return true; + } + + if( (2*(11 - compPoison) < compLife.getLife() || compPoison > 7) && compPoison < compLife.getLife() - 2) { + setTargetPlayer(Constant.Player.Computer); + return true; + } + + return false; + } + };// SpellAbility + spell.setBeforePayMana(CardFactoryUtil.input_targetPlayer(spell)); + card.clearSpellAbility(); + card.addSpellAbility(spell); + }// *************** END ************ END ************************** + /* Converted to keyword //*************** START *********** START ************************** else if(cardName.equals("Fabricate")) { diff --git a/src/forge/GameAction.java b/src/forge/GameAction.java index f06a9da1916..dc713dfe178 100644 --- a/src/forge/GameAction.java +++ b/src/forge/GameAction.java @@ -3744,12 +3744,7 @@ public class GameAction { { //addDamage(player, source, damage); if (source.getKeyword().contains("Infect")) - { - if(player.equals(Constant.Player.Human)) - AllZone.Human_PoisonCounter.addPoisonCounters(damage); - else - AllZone.Computer_PoisonCounter.addPoisonCounters(damage); - } + addPoison(player, damage); else getPlayerLife(player).subtractLife(damage,source); @@ -3760,12 +3755,7 @@ public class GameAction { public void addDamage(String player, Card source, int damage) { if (source.getKeyword().contains("Infect")) - { - if(player.equals(Constant.Player.Human)) - AllZone.Human_PoisonCounter.addPoisonCounters(damage); - else - AllZone.Computer_PoisonCounter.addPoisonCounters(damage); - } + addPoison(player, damage); else getPlayerLife(player).subtractLife(damage,source); @@ -3779,6 +3769,21 @@ public class GameAction { GameActionUtil.executePlayerDamageEffects(player, source, damage, false); } + public void addPoison(String player, int poison) + { + if(player.equals(Constant.Player.Human)) + AllZone.Human_PoisonCounter.addPoisonCounters(poison); + else + AllZone.Computer_PoisonCounter.addPoisonCounters(poison); + } + public int getPoison(String player) + { + if(player.equals(Constant.Player.Human)) + return AllZone.Human_PoisonCounter.getPoisonCounters(); + else + return AllZone.Computer_PoisonCounter.getPoisonCounters(); + } + public void searchLibraryLand(String type, String player, String Zone1, boolean tapLand) { searchLibraryTwoLand(type, player, Zone1, tapLand, "", false); } diff --git a/src/forge/GameActionUtil.java b/src/forge/GameActionUtil.java index 439a81626de..890e12e1752 100644 --- a/src/forge/GameActionUtil.java +++ b/src/forge/GameActionUtil.java @@ -5233,7 +5233,9 @@ public class GameActionUtil { sb.append(c); sb.append(" - Poisonous: "); sb.append(AllZone.GameAction.getOpponent(c.getController())); - sb.append(" gets poison counters."); + sb.append(" gets "); + sb.append(poison); + sb.append(" poison counters."); ability.setStackDescription(sb.toString()); ArrayList keywords = c.getKeyword();