diff --git a/.gitattributes b/.gitattributes index 7b89ce24bee..0f547883290 100644 --- a/.gitattributes +++ b/.gitattributes @@ -4651,6 +4651,7 @@ res/cardsfolder/m/megrim.txt svneol=native#text/plain res/cardsfolder/m/meishin_the_mind_cage.txt svneol=native#text/plain res/cardsfolder/m/melancholy.txt svneol=native#text/plain res/cardsfolder/m/melesse_spirit.txt svneol=native#text/plain +res/cardsfolder/m/melira_sylvok_outcast.txt -text res/cardsfolder/m/meliras_keepers.txt svneol=native#text/plain res/cardsfolder/m/meloku_the_clouded_mirror.txt svneol=native#text/plain res/cardsfolder/m/melt_terrain.txt svneol=native#text/plain diff --git a/res/cardsfolder/m/melira_sylvok_outcast.txt b/res/cardsfolder/m/melira_sylvok_outcast.txt new file mode 100644 index 00000000000..65ada5235d1 --- /dev/null +++ b/res/cardsfolder/m/melira_sylvok_outcast.txt @@ -0,0 +1,13 @@ +Name:Melira, Sylvok Outcast +ManaCost:1 G +Types:Legendary Creature Human Scout +Text:no text +PT:2/2 +S:Mode$ Continuous | Affected$ You | AddKeyword$ You can't get poison counters | Description$ You can't get poison counters. +S:Mode$ Continuous | Affected$ Creature.YouCtrl | AddHiddenKeyword$ HIDDEN CARDNAME can't have -1/-1 counters placed on it. | Description$ Creatures you control can't have -1/-1 counters placed on them. +S:Mode$ Continuous | Affected$ Creature.YouDontCtrl | RemoveKeyword$ Infect | Description$ Creatures your opponents control lose infect. +SVar:Rarity:Rare +SVar:Picture:http://www.wizards.com/global/images/magic/general/melira_sylvok_outcast.jpg +SetInfo:NPH|Rare|http://magiccards.info/scans/en/nph/115.jpg +Oracle:You can't get poison counters.\nCreatures you control can't have -1/-1 counters placed on them.\nCreatures your opponents control lose infect. +End \ No newline at end of file diff --git a/src/main/java/forge/Card.java b/src/main/java/forge/Card.java index c92aaedabab..d1e5152a9d2 100644 --- a/src/main/java/forge/Card.java +++ b/src/main/java/forge/Card.java @@ -822,6 +822,9 @@ public class Card extends GameEntity implements Comparable { if (this.hasKeyword("CARDNAME can't have counters placed on it.")) { return; } + if (this.hasKeyword("CARDNAME can't have -1/-1 counters placed on it.") && counterName.equals(Counters.M1M1)) { + return; + } if (counters.containsKey(counterName)) { Integer aux = counters.get(counterName) + n; counters.put(counterName, aux); @@ -882,6 +885,9 @@ public class Card extends GameEntity implements Comparable { if (this.hasKeyword("CARDNAME can't have counters placed on it.")) { return; } + if (this.hasKeyword("CARDNAME can't have -1/-1 counters placed on it.") && counterName.equals(Counters.M1M1)) { + return; + } int multiplier = AllZoneUtil.getDoublingSeasonMagnitude(this.getController()); if (counters.containsKey(counterName)) { Integer aux = counters.get(counterName) + (multiplier * n); @@ -1013,7 +1019,9 @@ public class Card extends GameEntity implements Comparable { if (this.hasKeyword("CARDNAME can't have counters placed on it.")) { return; } - + if (this.hasKeyword("CARDNAME can't have -1/-1 counters placed on it.") && counterName.equals(Counters.M1M1)) { + return; + } // sometimes you just need to set the value without being affected by DoublingSeason if (bSetValue) { counters.put(counterName, Integer.valueOf(n)); diff --git a/src/main/java/forge/Player.java b/src/main/java/forge/Player.java index 27923d62ab9..ad7820ed962 100644 --- a/src/main/java/forge/Player.java +++ b/src/main/java/forge/Player.java @@ -627,8 +627,10 @@ public abstract class Player extends GameEntity { * @param num a int. */ public void addPoisonCounters(int num) { - poisonCounters += num; - this.updateObservers(); + if(!this.hasKeyword("You can't get poison counters")) { + poisonCounters += num; + this.updateObservers(); + } } /** diff --git a/src/main/java/forge/card/abilityFactory/AbilityFactory_Counters.java b/src/main/java/forge/card/abilityFactory/AbilityFactory_Counters.java index db5ccd6803a..a8d6668ea2c 100644 --- a/src/main/java/forge/card/abilityFactory/AbilityFactory_Counters.java +++ b/src/main/java/forge/card/abilityFactory/AbilityFactory_Counters.java @@ -200,7 +200,7 @@ public class AbilityFactory_Counters { final Card source = sa.getSourceCard(); CardList list; Card choice = null; - String type = params.get("CounterType"); + final String type = params.get("CounterType"); String amountStr = params.get("CounterNum"); Player player = af.isCurse() ? AllZone.getHumanPlayer() : AllZone.getComputerPlayer(); @@ -210,7 +210,8 @@ public class AbilityFactory_Counters { list = list.filter(new CardListFilter() { public boolean addCard(final Card c) { return CardFactoryUtil.canTarget(source, c) - && !c.hasKeyword("CARDNAME can't have counters placed on it."); + && !c.hasKeyword("CARDNAME can't have counters placed on it.") + && !(c.hasKeyword("CARDNAME can't have -1/-1 counters placed on it.") && type.equals("M1M1")); } }); @@ -1990,7 +1991,8 @@ public class AbilityFactory_Counters { if (null != source && null != dest) { if (source.getCounters(cType) >= amount) { - if (!dest.hasKeyword("CARDNAME can't have counters placed on it.")) { + if (!dest.hasKeyword("CARDNAME can't have counters placed on it.") + && !(dest.hasKeyword("CARDNAME can't have -1/-1 counters placed on it.") && cType.equals("M1M1"))) { dest.addCounter(cType, amount); source.subtractCounter(cType, amount); } diff --git a/src/main/java/forge/card/cost/CostPutCounter.java b/src/main/java/forge/card/cost/CostPutCounter.java index c7df070469d..17b50966e67 100644 --- a/src/main/java/forge/card/cost/CostPutCounter.java +++ b/src/main/java/forge/card/cost/CostPutCounter.java @@ -52,6 +52,9 @@ public class CostPutCounter extends CostPart { if(source.hasKeyword("CARDNAME can't have counters placed on it.")) { return false; } + if (source.hasKeyword("CARDNAME can't have -1/-1 counters placed on it.") && counter.equals(Counters.M1M1)) { + return false; + } return true; }