diff --git a/.gitattributes b/.gitattributes index beb1bc5de44..48719d5b232 100644 --- a/.gitattributes +++ b/.gitattributes @@ -8295,6 +8295,7 @@ res/cardsfolder/r/rain_of_blades.txt svneol=native#text/plain res/cardsfolder/r/rain_of_daggers.txt -text res/cardsfolder/r/rain_of_embers.txt svneol=native#text/plain res/cardsfolder/r/rain_of_filth.txt -text svneol=unset#text/plain +res/cardsfolder/r/rain_of_gore.txt -text res/cardsfolder/r/rain_of_rust.txt svneol=native#text/plain res/cardsfolder/r/rain_of_salt.txt svneol=native#text/plain res/cardsfolder/r/rain_of_tears.txt svneol=native#text/plain diff --git a/res/cardsfolder/r/rain_of_gore.txt b/res/cardsfolder/r/rain_of_gore.txt new file mode 100644 index 00000000000..a7c3727e68b --- /dev/null +++ b/res/cardsfolder/r/rain_of_gore.txt @@ -0,0 +1,10 @@ +Name:Rain of Gore +ManaCost:B R +Types:Enchantment +R:Event$ GainLife | ActiveZones$ Battlefield | ValidSource$ Card | SourceController$ True | ReplaceWith$ RLoseLife | Description$ If a spell or ability would cause its controller to gain life, that player loses that much life instead. +SVar:RLoseLife:AB$ LoseLife | Cost$ 0 | LifeAmount$ X | Defined$ ReplacedPlayer | References$ X +SVar:X:ReplaceCount$LifeGained +SVar:RemRandomDeck:True +SVar:Picture:http://www.wizards.com/global/images/magic/general/rain_of_gore.jpg +Oracle:If a spell or ability would cause its controller to gain life, that player loses that much life instead. +SetInfo:DIS Rare \ No newline at end of file diff --git a/src/main/java/forge/card/ability/effects/ChooseTypeEffect.java b/src/main/java/forge/card/ability/effects/ChooseTypeEffect.java index dac03234ec8..70010f69bfe 100644 --- a/src/main/java/forge/card/ability/effects/ChooseTypeEffect.java +++ b/src/main/java/forge/card/ability/effects/ChooseTypeEffect.java @@ -206,7 +206,7 @@ public class ChooseTypeEffect extends SpellAbilityEffect { for (Card c : lands) { for (String t : c.getType()) { if (!invalidTypes.contains(t) - && CardType.isALandType(t)) { + && CardType.getLandTypes().contains(t)) { choice = t; break; } diff --git a/src/main/java/forge/card/replacement/ReplaceGainLife.java b/src/main/java/forge/card/replacement/ReplaceGainLife.java index d5dd570c472..a5ae9774200 100644 --- a/src/main/java/forge/card/replacement/ReplaceGainLife.java +++ b/src/main/java/forge/card/replacement/ReplaceGainLife.java @@ -51,6 +51,16 @@ public class ReplaceGainLife extends ReplacementEffect { return false; } } + if (this.getMapParams().containsKey("ValidSource")) { + if (!matchesValid(runParams.get("Source"), this.getMapParams().get("ValidSource").split(","), this.getHostCard())) { + return false; + } + } + if ("True".equals(this.getMapParams().get("SourceController"))) { + if (runParams.get("Source") == null || !runParams.get("Affected").equals(((Card)runParams.get("Source")).getController())) { + return false; + } + } return true; } @@ -73,6 +83,7 @@ public class ReplaceGainLife extends ReplacementEffect { @Override public void setReplacingObjects(Map runParams, SpellAbility sa) { sa.setReplacingObject("LifeGained", runParams.get("LifeGained")); + sa.setReplacingObject("Player", runParams.get("Affected")); } } diff --git a/src/main/java/forge/game/player/Player.java b/src/main/java/forge/game/player/Player.java index 1c52e4d8898..acbe897b877 100644 --- a/src/main/java/forge/game/player/Player.java +++ b/src/main/java/forge/game/player/Player.java @@ -441,6 +441,7 @@ public abstract class Player extends GameEntity implements Comparable { repParams.put("Event", "GainLife"); repParams.put("Affected", this); repParams.put("LifeGained", toGain); + repParams.put("Source", source); if (game.getReplacementHandler().run(repParams) != ReplacementResult.NotReplaced) { return false; }