From 955255223ba33dcd0caee947584b4b4771b04e3f Mon Sep 17 00:00:00 2001 From: jendave Date: Sat, 6 Aug 2011 09:35:35 +0000 Subject: [PATCH] add Spirit of Resistance (from Invasion) --- .gitattributes | 1 + res/cardsfolder/spirit_of_resistance.txt | 7 ++++++ src/forge/Player.java | 28 +++++++++++++++++++++--- 3 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 res/cardsfolder/spirit_of_resistance.txt diff --git a/.gitattributes b/.gitattributes index d72b2053939..fa33b47bd73 100644 --- a/.gitattributes +++ b/.gitattributes @@ -3944,6 +3944,7 @@ res/cardsfolder/spiraling_embers.txt -text svneol=native#text/plain res/cardsfolder/spire_barrage.txt -text svneol=native#text/plain res/cardsfolder/spire_golem.txt -text svneol=native#text/plain res/cardsfolder/spire_owl.txt -text svneol=native#text/plain +res/cardsfolder/spirit_of_resistance.txt -text svneol=native#text/plain res/cardsfolder/spirit_of_the_night.txt -text svneol=native#text/plain res/cardsfolder/spirit_shackle.txt -text svneol=native#text/plain res/cardsfolder/spiritmonger.txt -text svneol=native#text/plain diff --git a/res/cardsfolder/spirit_of_resistance.txt b/res/cardsfolder/spirit_of_resistance.txt new file mode 100644 index 00000000000..6b3df812188 --- /dev/null +++ b/res/cardsfolder/spirit_of_resistance.txt @@ -0,0 +1,7 @@ +Name:Spirit of Resistance +ManaCost:2 W +Types:Enchantment +Text:As long as you control a permanent of each color, prevent all damage that would be dealt to you. +SVar:Rarity:Rare +SVar:Picture:http://www.wizards.com/global/images/magic/general/spirit_of_resistance.jpg +End diff --git a/src/forge/Player.java b/src/forge/Player.java index f4e23d7c023..e001251bc62 100644 --- a/src/forge/Player.java +++ b/src/forge/Player.java @@ -127,11 +127,10 @@ public abstract class Player extends MyObservable{ public void addDamage(final int damage, final Card source) { int damageToDo = damage; - if (source.getKeyword().contains("Prevent all damage that would be dealt to and dealt by CARDNAME.") - || source.getKeyword().contains("Prevent all damage that would be dealt by CARDNAME.")) + if( reducePlayerDamageToZero(source, false) ) damageToDo = 0; - if (source.getKeyword().contains("Infect")) { + if( source.getKeyword().contains("Infect") ) { addPoisonCounters(damage); } else { @@ -151,6 +150,27 @@ public abstract class Player extends MyObservable{ GameActionUtil.executePlayerDamageEffects(this, source, damageToDo, false); } + private boolean reducePlayerDamageToZero(final Card source, final boolean isCombat) { + boolean reduce = false; + if(isCombat) { + //for future use + } + reduce = reduce || source.getKeyword().contains("Prevent all damage that would be dealt to and dealt by CARDNAME."); + reduce = reduce || source.getKeyword().contains("Prevent all damage that would be dealt by CARDNAME."); + + //Spirit of Resistance + if(AllZoneUtil.isCardInPlay("Spirit of Resistance", this)) { + if( AllZoneUtil.getPlayerColorInPlay(this, Constant.Color.Black).size() > 0 + && AllZoneUtil.getPlayerColorInPlay(this, Constant.Color.Blue).size() > 0 + && AllZoneUtil.getPlayerColorInPlay(this, Constant.Color.Green).size() > 0 + && AllZoneUtil.getPlayerColorInPlay(this, Constant.Color.Red).size() > 0 + && AllZoneUtil.getPlayerColorInPlay(this, Constant.Color.White).size() > 0) { + reduce = true; + } + } + return reduce; + } + public void setAssignedDamage(int n) { assignedDamage = n; } public int getAssignedDamage() { return assignedDamage; } @@ -209,6 +229,8 @@ public abstract class Player extends MyObservable{ return new CardList(); } + + //////////////////////////////// // // generic Object overrides