diff --git a/.gitattributes b/.gitattributes index c9b715c9742..93557ed5a25 100644 --- a/.gitattributes +++ b/.gitattributes @@ -7282,6 +7282,7 @@ res/cardsfolder/n/noxious_ghoul.txt svneol=native#text/plain res/cardsfolder/n/noxious_hatchling.txt svneol=native#text/plain res/cardsfolder/n/noxious_revival.txt svneol=native#text/plain res/cardsfolder/n/noxious_toad.txt svneol=native#text/plain +res/cardsfolder/n/noxious_vapors.txt -text res/cardsfolder/n/nucklavee.txt svneol=native#text/plain res/cardsfolder/n/nuisance_engine.txt svneol=native#text/plain res/cardsfolder/n/null_brooch.txt svneol=native#text/plain @@ -7747,6 +7748,7 @@ res/cardsfolder/p/phyrexian_furnace.txt -text res/cardsfolder/p/phyrexian_gargantua.txt svneol=native#text/plain res/cardsfolder/p/phyrexian_ghoul.txt svneol=native#text/plain res/cardsfolder/p/phyrexian_gremlins.txt svneol=native#text/plain +res/cardsfolder/p/phyrexian_grimoire.txt -text res/cardsfolder/p/phyrexian_hulk.txt svneol=native#text/plain res/cardsfolder/p/phyrexian_hydra.txt svneol=native#text/plain res/cardsfolder/p/phyrexian_infiltrator.txt -text @@ -8097,6 +8099,7 @@ res/cardsfolder/p/puresteel_paladin.txt -text res/cardsfolder/p/purgatory.txt -text res/cardsfolder/p/purge.txt svneol=native#text/plain res/cardsfolder/p/purge_the_profane.txt -text +res/cardsfolder/p/purging_scythe.txt -text res/cardsfolder/p/purify.txt svneol=native#text/plain res/cardsfolder/p/purify_the_grave.txt -text res/cardsfolder/p/purity.txt svneol=native#text/plain diff --git a/res/cardsfolder/n/noxious_vapors.txt b/res/cardsfolder/n/noxious_vapors.txt new file mode 100644 index 00000000000..e1ba7e05b64 --- /dev/null +++ b/res/cardsfolder/n/noxious_vapors.txt @@ -0,0 +1,16 @@ +Name:Noxious Vapors +ManaCost:1 B B +Types:Sorcery +A:SP$ RepeatEach | Cost$ 1 B B | RepeatPlayers$ Player | RepeatSubAbility$ DBReveal | StackDescription$ SpellDescription | SpellDescription$ Each player reveals his or her hand and chooses one card of each color from it, then discards all other nonland cards. +SVar:DBReveal:DB$ RevealHand | Defined$ Player.IsRemembered | SubAbility$ DBChooseW +SVar:DBChooseW:DB$ ChooseCard | Defined$ Player.IsRemembered | Choices$ Card.RememberedPlayerCtrl+White | ChoiceZone$ Hand | RememberChosen$ True | SubAbility$ DBChooseG +SVar:DBChooseG:DB$ ChooseCard | Defined$ Player.IsRemembered | Choices$ Card.RememberedPlayerCtrl+Green | ChoiceZone$ Hand | RememberChosen$ True | SubAbility$ DBChooseR +SVar:DBChooseR:DB$ ChooseCard | Defined$ Player.IsRemembered | Choices$ Card.RememberedPlayerCtrl+Red | ChoiceZone$ Hand | RememberChosen$ True | SubAbility$ DBChooseB +SVar:DBChooseB:DB$ ChooseCard | Defined$ Player.IsRemembered | Choices$ Card.RememberedPlayerCtrl+Black | ChoiceZone$ Hand | RememberChosen$ True | SubAbility$ DBChooseU +SVar:DBChooseU:DB$ ChooseCard | Defined$ Player.IsRemembered | Choices$ Card.RememberedPlayerCtrl+Blue | ChoiceZone$ Hand | RememberChosen$ True | SubAbility$ DBDiscard +SVar:DBDiscard:DB$ Discard | Mode$ Defined | Defined$ Player.IsRemembered | DefinedCards$ ValidHand Card.IsNotRemembered+nonLand+RememberedPlayerCtrl | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:RemAIDeck:True +SVar:Picture:http://www.wizards.com/global/images/magic/general/noxious_vapors.jpg +Oracle:Each player reveals his or her hand and chooses one card of each color from it, then discards all other nonland cards. +SetInfo:PLS Uncommon \ No newline at end of file diff --git a/res/cardsfolder/p/phyrexian_grimoire.txt b/res/cardsfolder/p/phyrexian_grimoire.txt new file mode 100644 index 00000000000..f10a53b9e2f --- /dev/null +++ b/res/cardsfolder/p/phyrexian_grimoire.txt @@ -0,0 +1,12 @@ +Name:Phyrexian Grimoire +ManaCost:3 +Types:Artifact +A:AB$ PumpAll | Cost$ 4 T | ValidCards$ Card.TopGraveyard2+YouCtrl | PumpZone$ Graveyard | RememberAllPumped$ True | SubAbility$ DBChoose | StackDescription$ None | SpellDescription$ Target opponent chooses one of the top two cards of your graveyard. Exile that card and put the other one into your hand. +SVar:DBChoose:DB$ ChooseCard | ValidTgts$ Opponent | Choices$ Card.IsRemembered | ChoiceZone$ Graveyard | Mandatory$ True | ForgetChosen$ True | SubAbility$ DBExile +SVar:DBExile:DB$ ChangeZone | Defined$ ChosenCard | Origin$ Graveyard | Destination$ Exile | SubAbility$ DBReturn +SVar:DBReturn:DB$ ChangeZone | Defined$ Remembered | Origin$ Graveyard | Destination$ Hand | SubAbility$ DBCleanup +SVar:DBCleanup:DB$ Cleanup | ClearRemembered$ True +SVar:RemAIDeck:True +SVar:Picture:http://www.wizards.com/global/images/magic/general/phyrexian_grimoire.jpg +Oracle:{4}, {T}: Target opponent chooses one of the top two cards of your graveyard. Exile that card and put the other one into your hand. +SetInfo:TMP Rare \ No newline at end of file diff --git a/res/cardsfolder/p/purging_scythe.txt b/res/cardsfolder/p/purging_scythe.txt new file mode 100644 index 00000000000..5da4f6165a7 --- /dev/null +++ b/res/cardsfolder/p/purging_scythe.txt @@ -0,0 +1,12 @@ +Name:Purging Scythe +ManaCost:5 +Types:Artifact +Text:no text +T:Mode$ Phase | Phase$ Upkeep | ValidPlayer$ You | Execute$ TrigChooseDmg | TriggerZones$ Battlefield | TriggerDescription$ At the beginning of your upkeep, CARDNAME deals 2 damage to the creature with the least toughness. If two or more creatures are tied for least toughness, you choose one of them. +SVar:TrigChooseDmg:AB$ ChooseCard | Cost$ 0 | Defined$ You | Choices$ Creature.leastToughness | Mandatory$ True | SubAbility$ DBDmg +SVar:DBDmg:DB$ DealDamage | NumDmg$ 2 | Defined$ ChosenCard +SVar:RemAIDeck:True +SVar:RemRandomDeck:True +SVar:Picture:http://www.wizards.com/global/images/magic/general/purging_scythe.jpg +Oracle:At the beginning of your upkeep, Purging Scythe deals 2 damage to the creature with the least toughness. If two or more creatures are tied for least toughness, you choose one of them. +SetInfo:USG Rare \ No newline at end of file diff --git a/src/main/java/forge/Card.java b/src/main/java/forge/Card.java index 9abe7209c4a..feef7038acf 100644 --- a/src/main/java/forge/Card.java +++ b/src/main/java/forge/Card.java @@ -6574,8 +6574,20 @@ public class Card extends GameEntity implements Comparable { } else if (property.startsWith("TopGraveyard")) { final List list = new ArrayList(this.getOwner().getCardsIn(ZoneType.Graveyard)); Collections.reverse(list); - if (list.isEmpty() || !this.equals(list.get(0))) { - return false; + if (property.substring(12).matches("[0-9][0-9]?")) { + int n = Integer.parseInt(property.substring(12)); + int num = Math.min(n, list.size()); + final List newlist = new ArrayList(); + for (int i = 0; i < num; i++) { + newlist.add(list.get(i)); + } + if (list.isEmpty() || !newlist.contains(this)) { + return false; + } + } else { + if (list.isEmpty() || !this.equals(list.get(0))) { + return false; + } } } else if (property.startsWith("BottomGraveyard")) { final List list = this.getOwner().getCardsIn(ZoneType.Graveyard); @@ -6999,6 +7011,13 @@ public class Card extends GameEntity implements Comparable { return false; } } + } else if (property.startsWith("leastToughness")) { + final List list = CardLists.filter(Singletons.getModel().getGame().getCardsIn(ZoneType.Battlefield), Presets.CREATURES); + for (final Card crd : list) { + if (crd.getNetDefense() < this.getNetDefense()) { + return false; + } + } } else if (property.startsWith("greatestCMC")) { final List list = CardLists.filter(Singletons.getModel().getGame().getCardsIn(ZoneType.Battlefield), Presets.CREATURES); for (final Card crd : list) {