From de1e5f8eb36036aef3db6aeca79301095f5b3cdf Mon Sep 17 00:00:00 2001 From: Sloth Date: Mon, 26 Sep 2011 16:55:07 +0000 Subject: [PATCH] - Added support for "CombatDamage$" "True" and "False" to the PreventDamage static ability. - Converted Mark of Asylum to script. --- res/cardsfolder/m/mark_of_asylum.txt | 3 ++- src/main/java/forge/Card.java | 9 +-------- src/main/java/forge/Player.java | 2 +- .../java/forge/card/staticAbility/StaticAbility.java | 4 ++-- .../staticAbility/StaticAbility_PreventDamage.java | 11 ++++++++++- 5 files changed, 16 insertions(+), 13 deletions(-) diff --git a/res/cardsfolder/m/mark_of_asylum.txt b/res/cardsfolder/m/mark_of_asylum.txt index 8db4bab10dc..9a869a68e22 100644 --- a/res/cardsfolder/m/mark_of_asylum.txt +++ b/res/cardsfolder/m/mark_of_asylum.txt @@ -1,7 +1,8 @@ Name:Mark of Asylum ManaCost:1 W Types:Enchantment -Text:Prevent all noncombat damage that would be dealt to creatures you control. +Text:no text +S:Mode$ PreventDamage | Target$ Creature.YouCtrl | CombatDamage$ False | Description$ Prevent all noncombat damage that would be dealt to creatures you control. SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/mark_of_asylum.jpg SetInfo:CFX|Rare|http://magiccards.info/scans/en/cfx/10.jpg diff --git a/src/main/java/forge/Card.java b/src/main/java/forge/Card.java index e636e2bea74..0556d794afe 100644 --- a/src/main/java/forge/Card.java +++ b/src/main/java/forge/Card.java @@ -5660,7 +5660,6 @@ public class Card extends GameEntity implements Comparable { } int restDamage = damageIn; - Player player = getController(); if (CardFactoryUtil.hasProtectionFrom(source, this)) { return 0; @@ -5694,14 +5693,12 @@ public class Card extends GameEntity implements Comparable { } } - - //Prevent Damage static abilities CardList allp = AllZoneUtil.getCardsIn(Zone.Battlefield); for (Card ca : allp) { ArrayList staticAbilities = ca.getStaticAbilities(); for (StaticAbility stAb : staticAbilities) { - restDamage = stAb.applyAbility("PreventDamage", source, this, restDamage); + restDamage = stAb.applyAbility("PreventDamage", source, this, restDamage, isCombat); } } @@ -5715,10 +5712,6 @@ public class Card extends GameEntity implements Comparable { return 0; } - if ((!isCombat && AllZoneUtil.isCardInPlay("Mark of Asylum", player))) { - return 0; - } - if (getName().equals("Callous Giant") && restDamage <= 3) { return 0; } diff --git a/src/main/java/forge/Player.java b/src/main/java/forge/Player.java index 704bbf99184..69519ce195e 100644 --- a/src/main/java/forge/Player.java +++ b/src/main/java/forge/Player.java @@ -410,7 +410,7 @@ public abstract class Player extends GameEntity { for (Card ca : allp) { ArrayList staticAbilities = ca.getStaticAbilities(); for (StaticAbility stAb : staticAbilities) { - restDamage = stAb.applyAbility("PreventDamage", source, this, restDamage); + restDamage = stAb.applyAbility("PreventDamage", source, this, restDamage, isCombat); } } diff --git a/src/main/java/forge/card/staticAbility/StaticAbility.java b/src/main/java/forge/card/staticAbility/StaticAbility.java index 3a4868a9e51..458478c85f9 100644 --- a/src/main/java/forge/card/staticAbility/StaticAbility.java +++ b/src/main/java/forge/card/staticAbility/StaticAbility.java @@ -153,7 +153,7 @@ public class StaticAbility { } //apply the ability if it has the right mode - public int applyAbility(String mode, Card source, GameEntity target, int in) { + public int applyAbility(String mode, Card source, GameEntity target, int in, boolean b) { //don't apply the ability if it hasn't got the right mode if (!mapParams.get("Mode").equals(mode)) @@ -163,7 +163,7 @@ public class StaticAbility { return in; if (mode.equals("PreventDamage")) - return StaticAbility_PreventDamage.applyPreventDamageAbility(this, source, target, in); + return StaticAbility_PreventDamage.applyPreventDamageAbility(this, source, target, in, b); return in; } diff --git a/src/main/java/forge/card/staticAbility/StaticAbility_PreventDamage.java b/src/main/java/forge/card/staticAbility/StaticAbility_PreventDamage.java index fa1c4d62344..62bd280f3d7 100644 --- a/src/main/java/forge/card/staticAbility/StaticAbility_PreventDamage.java +++ b/src/main/java/forge/card/staticAbility/StaticAbility_PreventDamage.java @@ -13,7 +13,7 @@ public class StaticAbility_PreventDamage { * TODO Write javadoc for this method. * @param stAb a StaticAbility */ - public static int applyPreventDamageAbility(final StaticAbility stAb, Card source, GameEntity target, int damage) { + public static int applyPreventDamageAbility(final StaticAbility stAb, Card source, GameEntity target, int damage, boolean isCombat) { HashMap params = stAb.getMapParams(); Card hostCard = stAb.getHostCard(); int restDamage = damage; @@ -26,6 +26,15 @@ public class StaticAbility_PreventDamage { return restDamage; } + if(params.containsKey("CombatDamage") && params.get("CombatDamage").equals("True") && !isCombat) { + return restDamage; + } + + if(params.containsKey("CombatDamage") && params.get("CombatDamage").equals("False") && isCombat) { + return restDamage; + } + + // no amount means all if(!params.containsKey("Amount") || params.get("Amount").equals("All")) { return 0; }