diff --git a/res/cardsfolder/e/everlasting_torment.txt b/res/cardsfolder/e/everlasting_torment.txt index e06f8da8d6a..98435e8f433 100644 --- a/res/cardsfolder/e/everlasting_torment.txt +++ b/res/cardsfolder/e/everlasting_torment.txt @@ -1,8 +1,9 @@ Name:Everlasting Torment ManaCost:2 BR Types:Enchantment -Text:Damage can't be prevented. All damage is dealt as though it's source had wither. (A source with wither deals damage to creatures in the form of -1/-1 counters.) +Text:All damage is dealt as though it's source had wither. (A source with wither deals damage to creatures in the form of -1/-1 counters.) S:Mode$ Continuous | Affected$ Player | AddKeyword$ You can't gain life. | Description$ Players can't gain life. +S:Mode$ Continuous | GlobalRule$ Damage can't be prevented. | Description$ Damage can't be prevented. SVar:RemRandomDeck:True SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/everlasting_torment.jpg diff --git a/res/cardsfolder/l/leyline_of_punishment.txt b/res/cardsfolder/l/leyline_of_punishment.txt index 7a8994096d1..97ef20e9c5c 100644 --- a/res/cardsfolder/l/leyline_of_punishment.txt +++ b/res/cardsfolder/l/leyline_of_punishment.txt @@ -1,8 +1,9 @@ Name:Leyline of Punishment ManaCost:2 R R Types:Enchantment -Text:If Leyline of Punishment is in your opening hand, you may begin the game with it on the battlefield. Damage can't be prevented. +Text:If Leyline of Punishment is in your opening hand, you may begin the game with it on the battlefield. S:Mode$ Continuous | Affected$ Player | AddKeyword$ You can't gain life. | Description$ Players can't gain life. +S:Mode$ Continuous | GlobalRule$ Damage can't be prevented. | Description$ Damage can't be prevented. SVar:RemRandomDeck:True SVar:Rarity:Rare SVar:Picture:http://www.wizards.com/global/images/magic/general/leyline_of_punishment.jpg diff --git a/src/main/java/forge/Card.java b/src/main/java/forge/Card.java index 2f968dc0dc8..a78a1bc94c0 100644 --- a/src/main/java/forge/Card.java +++ b/src/main/java/forge/Card.java @@ -7931,8 +7931,7 @@ public class Card extends GameEntity implements Comparable { public final int staticDamagePrevention(final int damage, final int possiblePrvenetion, final Card source, final boolean isCombat) { - if (Singletons.getModel().getGame().isCardInPlay("Leyline of Punishment") - || Singletons.getModel().getGame().isCardInPlay("Everlasting Torment")) { + if (Singletons.getModel().getGame().getStaticEffects().isNoPrevention()) { return damage; } @@ -7961,8 +7960,7 @@ public class Card extends GameEntity implements Comparable { @Override public final int staticDamagePrevention(final int damageIn, final Card source, final boolean isCombat) { - if (Singletons.getModel().getGame().isCardInPlay("Leyline of Punishment") - || Singletons.getModel().getGame().isCardInPlay("Everlasting Torment")) { + if (Singletons.getModel().getGame().getStaticEffects().isNoPrevention()) { return damageIn; } @@ -8078,8 +8076,7 @@ public class Card extends GameEntity implements Comparable { @Override public final int preventDamage(final int damage, final Card source, final boolean isCombat) { - if (Singletons.getModel().getGame().isCardInPlay("Leyline of Punishment") - || Singletons.getModel().getGame().isCardInPlay("Everlasting Torment") + if (Singletons.getModel().getGame().getStaticEffects().isNoPrevention() || source.hasKeyword("Damage that would be dealt by CARDNAME can't be prevented.")) { return damage; } diff --git a/src/main/java/forge/StaticEffects.java b/src/main/java/forge/StaticEffects.java index aaeaf44d739..54cfaf93ba2 100644 --- a/src/main/java/forge/StaticEffects.java +++ b/src/main/java/forge/StaticEffects.java @@ -45,11 +45,16 @@ public class StaticEffects { * staticEffects. */ private ArrayList staticEffects; + + //Global rule changes + private boolean noPrevention = false; /** * clearStaticEffect. TODO Write javadoc for this method. */ public final void clearStaticEffects() { + noPrevention = false; + // remove all static effects for (int i = 0; i < this.staticEffects.size(); i++) { this.removeStaticEffect(this.staticEffects.get(i)); @@ -59,6 +64,20 @@ public class StaticEffects { Singletons.getModel().getGame().getTriggerHandler().cleanUpTemporaryTriggers(); } + /** + * @param noPrevent the noPrevention to set + */ + public void setNoPrevention(boolean noPrevent) { + this.noPrevention = noPrevent; + } + + /** + * @return the noPrevention + */ + public boolean isNoPrevention() { + return noPrevention; + } + /** * addStaticEffect. TODO Write javadoc for this method. * diff --git a/src/main/java/forge/card/staticability/StaticAbilityContinuous.java b/src/main/java/forge/card/staticability/StaticAbilityContinuous.java index aeb0a222a2d..30867f70a7d 100644 --- a/src/main/java/forge/card/staticability/StaticAbilityContinuous.java +++ b/src/main/java/forge/card/staticability/StaticAbilityContinuous.java @@ -28,6 +28,7 @@ import forge.Singletons; import forge.CardLists; import forge.CardUtil; import forge.StaticEffect; +import forge.StaticEffects; import forge.card.abilityfactory.AbilityFactory; import forge.card.cardfactory.CardFactoryUtil; import forge.card.replacement.ReplacementEffect; @@ -89,6 +90,14 @@ public class StaticAbilityContinuous { boolean removeCardTypes = false; boolean removeSubTypes = false; boolean removeCreatureTypes = false; + + //Global rules changes + if (params.containsKey("GlobalRule")) { + final StaticEffects effects = Singletons.getModel().getGame().getStaticEffects(); + if (params.get("GlobalRule").equals("Damage can't be prevented.")) { + effects.setNoPrevention(true); + } + } if (params.containsKey("SetPower")) { setP = params.get("SetPower"); diff --git a/src/main/java/forge/game/player/Player.java b/src/main/java/forge/game/player/Player.java index b0be34172d1..8996b4bdbfc 100644 --- a/src/main/java/forge/game/player/Player.java +++ b/src/main/java/forge/game/player/Player.java @@ -603,7 +603,7 @@ public abstract class Player extends GameEntity implements Comparable { @Override public final int staticDamagePrevention(final int damage, final Card source, final boolean isCombat) { - if (game.isCardInPlay("Leyline of Punishment") || game.isCardInPlay("Everlasting Torment")) { + if (Singletons.getModel().getGame().getStaticEffects().isNoPrevention()) { return damage; } @@ -816,7 +816,7 @@ public abstract class Player extends GameEntity implements Comparable { @Override public final int preventDamage(final int damage, final Card source, final boolean isCombat) { - if (game.isCardInPlay("Leyline of Punishment") || game.isCardInPlay("Everlasting Torment") + if (Singletons.getModel().getGame().getStaticEffects().isNoPrevention() || source.hasKeyword("Damage that would be dealt by CARDNAME can't be prevented.")) { return damage; }