From 2931ea4c26a154372a07e942b52575171d78f55c Mon Sep 17 00:00:00 2001 From: fireshoes Date: Fri, 17 Jul 2015 01:23:33 -0500 Subject: [PATCH] Updated Ben's Cube. Implemented Blood Funnel, Mizzium Transreliquat, Jilt, Stand Together, Torpid Moloch, Tidewater Minion --- .../src/mage/tournament/cubes/BensCube.java | 83 +++---- Mage.Sets/src/mage/sets/apocalypse/Jilt.java | 111 +++++++++ .../mage/sets/darksteel/StandTogether.java | 66 +++++ .../sets/guildpact/MizziumTransreliquat.java | 134 ++++++++++ .../mage/sets/planeshift/RushingRiver.java | 231 +++++++++--------- .../src/mage/sets/ravnica/BloodFunnel.java | 86 +++++++ .../mage/sets/ravnica/TidewaterMinion.java | 83 +++++++ .../src/mage/sets/ravnica/TorpidMoloch.java | 75 ++++++ 8 files changed, 712 insertions(+), 157 deletions(-) create mode 100644 Mage.Sets/src/mage/sets/apocalypse/Jilt.java create mode 100644 Mage.Sets/src/mage/sets/darksteel/StandTogether.java create mode 100644 Mage.Sets/src/mage/sets/guildpact/MizziumTransreliquat.java create mode 100644 Mage.Sets/src/mage/sets/ravnica/BloodFunnel.java create mode 100644 Mage.Sets/src/mage/sets/ravnica/TidewaterMinion.java create mode 100644 Mage.Sets/src/mage/sets/ravnica/TorpidMoloch.java diff --git a/Mage.Server.Plugins/Mage.Tournament.BoosterDraft/src/mage/tournament/cubes/BensCube.java b/Mage.Server.Plugins/Mage.Tournament.BoosterDraft/src/mage/tournament/cubes/BensCube.java index 8ab2768632f..a22b0b7e2d0 100644 --- a/Mage.Server.Plugins/Mage.Tournament.BoosterDraft/src/mage/tournament/cubes/BensCube.java +++ b/Mage.Server.Plugins/Mage.Tournament.BoosterDraft/src/mage/tournament/cubes/BensCube.java @@ -38,6 +38,7 @@ public class BensCube extends DraftCube { public BensCube() { super("Ben's Cube (720 cards)"); // http://cubetutor.com/viewcube/1 + cubeCards.add(new CardIdentity("Abrupt Decay", "")); cubeCards.add(new CardIdentity("Abyssal Persecutor", "")); cubeCards.add(new CardIdentity("Academy Rector", "")); @@ -47,9 +48,9 @@ public class BensCube extends DraftCube { cubeCards.add(new CardIdentity("AEther Adept", "")); cubeCards.add(new CardIdentity("AEther Vial", "")); cubeCards.add(new CardIdentity("AEtherling", "")); - cubeCards.add(new CardIdentity("Aftershock", "")); cubeCards.add(new CardIdentity("Agony Warp", "")); cubeCards.add(new CardIdentity("Ajani Goldmane", "")); + cubeCards.add(new CardIdentity("Ajani Steadfast", "")); cubeCards.add(new CardIdentity("Ajani Vengeant", "")); cubeCards.add(new CardIdentity("Ajani, Caller of the Pride", "")); cubeCards.add(new CardIdentity("Akroma, Angel of Wrath", "")); @@ -61,7 +62,6 @@ public class BensCube extends DraftCube { cubeCards.add(new CardIdentity("Ancient Grudge", "")); cubeCards.add(new CardIdentity("Ancient Tomb", "")); cubeCards.add(new CardIdentity("Angel of Serenity", "")); - cubeCards.add(new CardIdentity("Angelic Destiny", "")); cubeCards.add(new CardIdentity("Anger of the Gods", "")); cubeCards.add(new CardIdentity("Animate Dead", "")); cubeCards.add(new CardIdentity("Ankh of Mishra", "")); @@ -84,14 +84,12 @@ public class BensCube extends DraftCube { cubeCards.add(new CardIdentity("Badlands", "")); cubeCards.add(new CardIdentity("Balance", "")); cubeCards.add(new CardIdentity("Baleful Strix", "")); - cubeCards.add(new CardIdentity("Ball Lightning", "")); cubeCards.add(new CardIdentity("Banefire", "")); cubeCards.add(new CardIdentity("Baneslayer Angel", "")); cubeCards.add(new CardIdentity("Basalt Monolith", "")); cubeCards.add(new CardIdentity("Basilisk Collar", "")); cubeCards.add(new CardIdentity("Batterskull", "")); cubeCards.add(new CardIdentity("Bayou", "")); - cubeCards.add(new CardIdentity("Beacon of Destruction", "")); cubeCards.add(new CardIdentity("Beast Within", "")); cubeCards.add(new CardIdentity("Birds of Paradise", "")); cubeCards.add(new CardIdentity("Birthing Pod", "")); @@ -101,6 +99,7 @@ public class BensCube extends DraftCube { cubeCards.add(new CardIdentity("Black Sun's Zenith", "")); cubeCards.add(new CardIdentity("Blade Splicer", "")); cubeCards.add(new CardIdentity("Blastoderm", "")); + cubeCards.add(new CardIdentity("Blightsteel Colossus", "")); cubeCards.add(new CardIdentity("Blistering Firecat", "")); cubeCards.add(new CardIdentity("Blood Crypt", "")); cubeCards.add(new CardIdentity("Blood Scrivener", "")); @@ -108,6 +107,7 @@ public class BensCube extends DraftCube { cubeCards.add(new CardIdentity("Bloodghast", "")); cubeCards.add(new CardIdentity("Bloodgift Demon", "")); cubeCards.add(new CardIdentity("Bloodline Keeper", "")); + cubeCards.add(new CardIdentity("Bloodsoaked Champion", "")); cubeCards.add(new CardIdentity("Bloodstained Mire", "")); cubeCards.add(new CardIdentity("Bogardan Hellkite", "")); cubeCards.add(new CardIdentity("Boggart Ram-Gang", "")); @@ -115,6 +115,7 @@ public class BensCube extends DraftCube { cubeCards.add(new CardIdentity("Bonesplitter", "")); cubeCards.add(new CardIdentity("Bonfire of the Damned", "")); cubeCards.add(new CardIdentity("Booster Tutor", "")); + cubeCards.add(new CardIdentity("Borderland Marauder", "")); cubeCards.add(new CardIdentity("Boros Charm", "")); cubeCards.add(new CardIdentity("Boros Reckoner", "")); cubeCards.add(new CardIdentity("Braids, Cabal Minion", "")); @@ -124,7 +125,6 @@ public class BensCube extends DraftCube { cubeCards.add(new CardIdentity("Bribery", "")); cubeCards.add(new CardIdentity("Brimaz, King of Oreskos", "")); cubeCards.add(new CardIdentity("Brimstone Volley", "")); - cubeCards.add(new CardIdentity("Brine Elemental", "")); cubeCards.add(new CardIdentity("Buried Alive", "")); cubeCards.add(new CardIdentity("Burning-Tree Emissary", "")); cubeCards.add(new CardIdentity("Burst Lightning", "")); @@ -139,7 +139,6 @@ public class BensCube extends DraftCube { cubeCards.add(new CardIdentity("Chained to the Rocks", "")); cubeCards.add(new CardIdentity("Chainer's Edict", "")); cubeCards.add(new CardIdentity("Chameleon Colossus", "")); - cubeCards.add(new CardIdentity("Chandra Nalaar", "")); cubeCards.add(new CardIdentity("Chandra, the Firebrand", "")); cubeCards.add(new CardIdentity("Chandra's Phoenix", "")); cubeCards.add(new CardIdentity("Channel", "")); @@ -151,18 +150,18 @@ public class BensCube extends DraftCube { cubeCards.add(new CardIdentity("City of Traitors", "")); cubeCards.add(new CardIdentity("Clifftop Retreat", "")); cubeCards.add(new CardIdentity("Cloudgoat Ranger", "")); - cubeCards.add(new CardIdentity("Cloudshift", "")); cubeCards.add(new CardIdentity("Cloudthresher", "")); cubeCards.add(new CardIdentity("Coalition Relic", "")); cubeCards.add(new CardIdentity("Coiling Oracle", "")); - cubeCards.add(new CardIdentity("Cold-Eyed Selkie", "")); cubeCards.add(new CardIdentity("Coldsteel Heart", "")); cubeCards.add(new CardIdentity("Compulsive Research", "")); cubeCards.add(new CardIdentity("Condemn", "")); cubeCards.add(new CardIdentity("Consecrated Sphinx", "")); cubeCards.add(new CardIdentity("Consuming Vapors", "")); + cubeCards.add(new CardIdentity("Containment Priest", "")); cubeCards.add(new CardIdentity("Control Magic", "")); cubeCards.add(new CardIdentity("Corpse Dance", "")); + cubeCards.add(new CardIdentity("Council's Judgment", "")); cubeCards.add(new CardIdentity("Counterspell", "")); cubeCards.add(new CardIdentity("Countryside Crusher", "")); cubeCards.add(new CardIdentity("Courser of Kruphix", "")); @@ -173,16 +172,19 @@ public class BensCube extends DraftCube { cubeCards.add(new CardIdentity("Cryptic Command", "")); cubeCards.add(new CardIdentity("Crystal Shard", "")); cubeCards.add(new CardIdentity("Cultivate", "")); - cubeCards.add(new CardIdentity("Cursecatcher", "")); cubeCards.add(new CardIdentity("Cursed Scroll", "")); cubeCards.add(new CardIdentity("Cyclonic Rift", "")); + cubeCards.add(new CardIdentity("Dack Fayden", "")); + cubeCards.add(new CardIdentity("Dack's Duplicate", "")); cubeCards.add(new CardIdentity("Damnation", "")); + cubeCards.add(new CardIdentity("Daretti, Scrap Savant", "")); cubeCards.add(new CardIdentity("Dark Confidant", "")); cubeCards.add(new CardIdentity("Dark Ritual", "")); cubeCards.add(new CardIdentity("Dauthi Horror", "")); cubeCards.add(new CardIdentity("Day of Judgment", "")); cubeCards.add(new CardIdentity("Daze", "")); cubeCards.add(new CardIdentity("Deathrite Shaman", "")); + cubeCards.add(new CardIdentity("Deceiver Exarch", "")); cubeCards.add(new CardIdentity("Decree of Justice", "")); cubeCards.add(new CardIdentity("Deep Analysis", "")); cubeCards.add(new CardIdentity("Defense of the Heart", "")); @@ -194,6 +196,7 @@ public class BensCube extends DraftCube { cubeCards.add(new CardIdentity("Devil's Play", "")); cubeCards.add(new CardIdentity("Devoted Druid", "")); cubeCards.add(new CardIdentity("Diabolic Servitude", "")); + cubeCards.add(new CardIdentity("Dig Through Time", "")); cubeCards.add(new CardIdentity("Diregraf Ghoul", "")); cubeCards.add(new CardIdentity("Disciple of Bolas", "")); cubeCards.add(new CardIdentity("Disenchant", "")); @@ -202,19 +205,20 @@ public class BensCube extends DraftCube { cubeCards.add(new CardIdentity("Dissipate", "")); cubeCards.add(new CardIdentity("Domri Rade", "")); cubeCards.add(new CardIdentity("Doom Blade", "")); + cubeCards.add(new CardIdentity("Dragon Hunter", "")); cubeCards.add(new CardIdentity("Dragonskull Summit", "")); cubeCards.add(new CardIdentity("Dreadbore", "")); cubeCards.add(new CardIdentity("Drowned Catacomb", "")); cubeCards.add(new CardIdentity("Dryad Militant", "")); + cubeCards.add(new CardIdentity("Dualcaster Mage", "")); cubeCards.add(new CardIdentity("Duress", "")); cubeCards.add(new CardIdentity("Duskmantle Seer", "")); cubeCards.add(new CardIdentity("Earthquake", "")); cubeCards.add(new CardIdentity("Edric, Spymaster of Trest", "")); + cubeCards.add(new CardIdentity("Eidolon of the Great Revel", "")); cubeCards.add(new CardIdentity("Eight-and-a-Half-Tails", "")); - cubeCards.add(new CardIdentity("Eldrazi Monument", "")); cubeCards.add(new CardIdentity("Electrolyze", "")); cubeCards.add(new CardIdentity("Elesh Norn, Grand Cenobite", "")); - cubeCards.add(new CardIdentity("Elite Vanguard", "")); cubeCards.add(new CardIdentity("Elspeth, Knight-Errant", "")); cubeCards.add(new CardIdentity("Elspeth, Sun's Champion", "")); cubeCards.add(new CardIdentity("Elves of Deep Shadow", "")); @@ -243,6 +247,7 @@ public class BensCube extends DraftCube { cubeCards.add(new CardIdentity("Falkenrath Aristocrat", "")); cubeCards.add(new CardIdentity("Far // Away", "")); cubeCards.add(new CardIdentity("Farseek", "")); + cubeCards.add(new CardIdentity("Fastbond", "")); cubeCards.add(new CardIdentity("Fathom Seer", "")); cubeCards.add(new CardIdentity("Fauna Shaman", "")); cubeCards.add(new CardIdentity("Fellwar Stone", "")); @@ -275,7 +280,6 @@ public class BensCube extends DraftCube { cubeCards.add(new CardIdentity("Geist of Saint Traft", "")); cubeCards.add(new CardIdentity("Genesis Wave", "")); cubeCards.add(new CardIdentity("Genesis", "")); - cubeCards.add(new CardIdentity("Geralf's Messenger", "")); cubeCards.add(new CardIdentity("Ghitu Encampment", "")); cubeCards.add(new CardIdentity("Gideon Jura", "")); cubeCards.add(new CardIdentity("Gideon's Lawkeeper", "")); @@ -289,15 +293,14 @@ public class BensCube extends DraftCube { cubeCards.add(new CardIdentity("Go for the Throat", "")); cubeCards.add(new CardIdentity("Goblin Bushwhacker", "")); cubeCards.add(new CardIdentity("Goblin Guide", "")); + cubeCards.add(new CardIdentity("Goblin Rabblemaster", "")); cubeCards.add(new CardIdentity("Goblin Ruinblaster", "")); cubeCards.add(new CardIdentity("Goblin Wardriver", "")); cubeCards.add(new CardIdentity("Goblin Welder", "")); cubeCards.add(new CardIdentity("Godless Shrine", "")); cubeCards.add(new CardIdentity("Gore-House Chainwalker", "")); cubeCards.add(new CardIdentity("Grafted Wargear", "")); - cubeCards.add(new CardIdentity("Grand Arbiter Augustin IV", "")); cubeCards.add(new CardIdentity("Grave Titan", "")); - cubeCards.add(new CardIdentity("Graveborn Muse", "")); cubeCards.add(new CardIdentity("Gravecrawler", "")); cubeCards.add(new CardIdentity("Greater Gargadon", "")); cubeCards.add(new CardIdentity("Green Sun's Zenith", "")); @@ -324,12 +327,10 @@ public class BensCube extends DraftCube { cubeCards.add(new CardIdentity("Huntmaster of the Fells", "")); cubeCards.add(new CardIdentity("Hymn to Tourach", "")); cubeCards.add(new CardIdentity("Hypnotic Specter", "")); - cubeCards.add(new CardIdentity("Ideas Unbound", "")); cubeCards.add(new CardIdentity("Imperial Recruiter", "")); cubeCards.add(new CardIdentity("Imposing Sovereign", "")); cubeCards.add(new CardIdentity("Impulse", "")); cubeCards.add(new CardIdentity("Incinerate", "")); - cubeCards.add(new CardIdentity("Increasing Devotion", "")); cubeCards.add(new CardIdentity("Indrik Stomphowler", "")); cubeCards.add(new CardIdentity("Inferno Titan", "")); cubeCards.add(new CardIdentity("Ink-Eyes, Servant of Oni", "")); @@ -354,20 +355,20 @@ public class BensCube extends DraftCube { cubeCards.add(new CardIdentity("Kargan Dragonlord", "")); cubeCards.add(new CardIdentity("Karmic Guide", "")); cubeCards.add(new CardIdentity("Karn Liberated", "")); - cubeCards.add(new CardIdentity("Keiga, the Tide Star", "")); cubeCards.add(new CardIdentity("Keldon Champion", "")); cubeCards.add(new CardIdentity("Keldon Marauders", "")); cubeCards.add(new CardIdentity("Kiki-Jiki, Mirror Breaker", "")); cubeCards.add(new CardIdentity("Kiora, the Crashing Wave", "")); + cubeCards.add(new CardIdentity("Kiora's Follower", "")); cubeCards.add(new CardIdentity("Kira, Great Glass-Spinner", "")); cubeCards.add(new CardIdentity("Kitchen Finks", "")); cubeCards.add(new CardIdentity("Kjeldoran Outpost", "")); - cubeCards.add(new CardIdentity("Knight of Glory", "")); cubeCards.add(new CardIdentity("Knight of Infamy", "")); cubeCards.add(new CardIdentity("Knight of Meadowgrain", "")); cubeCards.add(new CardIdentity("Knight of the Reliquary", "")); cubeCards.add(new CardIdentity("Kodama's Reach", "")); cubeCards.add(new CardIdentity("Kokusho, the Evening Star", "")); + cubeCards.add(new CardIdentity("Kolaghan's Command", "")); cubeCards.add(new CardIdentity("Kor Sanctifiers", "")); cubeCards.add(new CardIdentity("Kor Skyfisher", "")); cubeCards.add(new CardIdentity("Koth of the Hammer", "")); @@ -402,10 +403,10 @@ public class BensCube extends DraftCube { cubeCards.add(new CardIdentity("Mana Crypt", "")); cubeCards.add(new CardIdentity("Mana Drain", "")); cubeCards.add(new CardIdentity("Mana Leak", "")); - cubeCards.add(new CardIdentity("Mana Tithe", "")); cubeCards.add(new CardIdentity("Mana Vault", "")); cubeCards.add(new CardIdentity("Manamorphose", "")); cubeCards.add(new CardIdentity("Man-o'-War", "")); + cubeCards.add(new CardIdentity("Mardu Woe-Reaper", "")); cubeCards.add(new CardIdentity("Marsh Flats", "")); cubeCards.add(new CardIdentity("Martial Coup", "")); cubeCards.add(new CardIdentity("Master of the Feast", "")); @@ -430,6 +431,7 @@ public class BensCube extends DraftCube { cubeCards.add(new CardIdentity("Miscalculation", "")); cubeCards.add(new CardIdentity("Mishra's Factory", "")); cubeCards.add(new CardIdentity("Misty Rainforest", "")); + cubeCards.add(new CardIdentity("Moat", "")); cubeCards.add(new CardIdentity("Mogg Flunkies", "")); cubeCards.add(new CardIdentity("Mogg War Marshal", "")); cubeCards.add(new CardIdentity("Mold Shambler", "")); @@ -437,6 +439,7 @@ public class BensCube extends DraftCube { cubeCards.add(new CardIdentity("Molten-Tail Masticore", "")); cubeCards.add(new CardIdentity("Momentary Blink", "")); cubeCards.add(new CardIdentity("Moment's Peace", "")); + cubeCards.add(new CardIdentity("Monastery Mentor", "")); cubeCards.add(new CardIdentity("Mortarpod", "")); cubeCards.add(new CardIdentity("Mother of Runes", "")); cubeCards.add(new CardIdentity("Mox Diamond", "")); @@ -446,13 +449,13 @@ public class BensCube extends DraftCube { cubeCards.add(new CardIdentity("Mox Ruby", "")); cubeCards.add(new CardIdentity("Mox Sapphire", "")); cubeCards.add(new CardIdentity("Mulldrifter", "")); + cubeCards.add(new CardIdentity("Murderous Cut", "")); cubeCards.add(new CardIdentity("Murderous Redcap", "")); cubeCards.add(new CardIdentity("Mutavault", "")); cubeCards.add(new CardIdentity("Myr Battlesphere", "")); cubeCards.add(new CardIdentity("Mystic Snake", "")); cubeCards.add(new CardIdentity("Mystical Tutor", "")); cubeCards.add(new CardIdentity("Nantuko Shade", "")); - cubeCards.add(new CardIdentity("Nantuko Vigilante", "")); cubeCards.add(new CardIdentity("Narcolepsy", "")); cubeCards.add(new CardIdentity("Natural Order", "")); cubeCards.add(new CardIdentity("Naturalize", "")); @@ -467,19 +470,16 @@ public class BensCube extends DraftCube { cubeCards.add(new CardIdentity("Nicol Bolas, Planeswalker", "")); cubeCards.add(new CardIdentity("Night's Whisper", "")); cubeCards.add(new CardIdentity("Nightscape Familiar", "")); - cubeCards.add(new CardIdentity("Niv-Mizzet, Dracogenius", "")); + cubeCards.add(new CardIdentity("Nissa, Worldwaker", "")); cubeCards.add(new CardIdentity("Noble Hierarch", "")); - cubeCards.add(new CardIdentity("Nucklavee", "")); cubeCards.add(new CardIdentity("Oath of Druids", "")); cubeCards.add(new CardIdentity("Oblivion Ring", "")); cubeCards.add(new CardIdentity("Obstinate Baloth", "")); cubeCards.add(new CardIdentity("Obzedat, Ghost Council", "")); cubeCards.add(new CardIdentity("Ohran Viper", "")); - cubeCards.add(new CardIdentity("Olivia Voldaren", "")); cubeCards.add(new CardIdentity("Omenspeaker", "")); cubeCards.add(new CardIdentity("Omniscience", "")); cubeCards.add(new CardIdentity("Oona's Prowler", "")); - cubeCards.add(new CardIdentity("Opportunity", "")); cubeCards.add(new CardIdentity("Opposition", "")); cubeCards.add(new CardIdentity("Opt", "")); cubeCards.add(new CardIdentity("Oracle of Mul Daya", "")); @@ -490,9 +490,9 @@ public class BensCube extends DraftCube { cubeCards.add(new CardIdentity("Pact of Negation", "")); cubeCards.add(new CardIdentity("Palinchron", "")); cubeCards.add(new CardIdentity("Palladium Myr", "")); - cubeCards.add(new CardIdentity("Parallax Wave", "")); cubeCards.add(new CardIdentity("Path to Exile", "")); cubeCards.add(new CardIdentity("Pernicious Deed", "")); + cubeCards.add(new CardIdentity("Pestermite", "")); cubeCards.add(new CardIdentity("Phantasmal Image", "")); cubeCards.add(new CardIdentity("Phyrexian Arena", "")); cubeCards.add(new CardIdentity("Phyrexian Metamorph", "")); @@ -503,14 +503,12 @@ public class BensCube extends DraftCube { cubeCards.add(new CardIdentity("Pithing Needle", "")); cubeCards.add(new CardIdentity("Plateau", "")); cubeCards.add(new CardIdentity("Plated Geopede", "")); - cubeCards.add(new CardIdentity("Platinum Angel", "")); cubeCards.add(new CardIdentity("Plow Under", "")); cubeCards.add(new CardIdentity("Plumeveil", "")); cubeCards.add(new CardIdentity("Polluted Delta", "")); cubeCards.add(new CardIdentity("Polukranos, World Eater", "")); cubeCards.add(new CardIdentity("Ponder", "")); cubeCards.add(new CardIdentity("Porcelain Legionnaire", "")); - cubeCards.add(new CardIdentity("Powder Keg", "")); cubeCards.add(new CardIdentity("Precursor Golem", "")); cubeCards.add(new CardIdentity("Preordain", "")); cubeCards.add(new CardIdentity("Primal Command", "")); @@ -528,7 +526,6 @@ public class BensCube extends DraftCube { cubeCards.add(new CardIdentity("Putrefy", "")); cubeCards.add(new CardIdentity("Putrid Leech", "")); cubeCards.add(new CardIdentity("Pyroclasm", "")); - cubeCards.add(new CardIdentity("Pyrokinesis", "")); cubeCards.add(new CardIdentity("Qasali Pridemage", "")); cubeCards.add(new CardIdentity("Raging Ravine", "")); cubeCards.add(new CardIdentity("Rakdos Cackler", "")); @@ -541,12 +538,12 @@ public class BensCube extends DraftCube { cubeCards.add(new CardIdentity("Reanimate", "")); cubeCards.add(new CardIdentity("Reckless Charge", "")); cubeCards.add(new CardIdentity("Reckless Waif", "")); + cubeCards.add(new CardIdentity("Reclamation Sage", "")); cubeCards.add(new CardIdentity("Recurring Nightmare", "")); cubeCards.add(new CardIdentity("Regrowth", "")); cubeCards.add(new CardIdentity("Relic of Progenitus", "")); cubeCards.add(new CardIdentity("Remand", "")); cubeCards.add(new CardIdentity("Repeal", "")); - cubeCards.add(new CardIdentity("Restock", "")); cubeCards.add(new CardIdentity("Restoration Angel", "")); cubeCards.add(new CardIdentity("Reveillark", "")); cubeCards.add(new CardIdentity("Rift Bolt", "")); @@ -559,7 +556,7 @@ public class BensCube extends DraftCube { cubeCards.add(new CardIdentity("Rude Awakening", "")); cubeCards.add(new CardIdentity("Sacred Foundry", "")); cubeCards.add(new CardIdentity("Sakura-Tribe Elder", "")); - cubeCards.add(new CardIdentity("Sarkhan the Mad", "")); + cubeCards.add(new CardIdentity("Sarkhan, the Dragonspeaker", "")); cubeCards.add(new CardIdentity("Savannah", "")); cubeCards.add(new CardIdentity("Scalding Tarn", "")); cubeCards.add(new CardIdentity("Scavenging Ooze", "")); @@ -585,38 +582,38 @@ public class BensCube extends DraftCube { cubeCards.add(new CardIdentity("Sinkhole", "")); cubeCards.add(new CardIdentity("Skinrender", "")); cubeCards.add(new CardIdentity("Skithiryx, the Blight Dragon", "")); - cubeCards.add(new CardIdentity("Skizzik", "")); cubeCards.add(new CardIdentity("Skullclamp", "")); cubeCards.add(new CardIdentity("Slagstorm", "")); cubeCards.add(new CardIdentity("Slaughter Pact", "")); - cubeCards.add(new CardIdentity("Slith Firewalker", "")); cubeCards.add(new CardIdentity("Smokestack", "")); cubeCards.add(new CardIdentity("Snapcaster Mage", "")); cubeCards.add(new CardIdentity("Sneak Attack", "")); - cubeCards.add(new CardIdentity("Snuff Out", "")); cubeCards.add(new CardIdentity("Sol Ring", "")); cubeCards.add(new CardIdentity("Soldier of the Pantheon", "")); cubeCards.add(new CardIdentity("Solemn Simulacrum", "")); cubeCards.add(new CardIdentity("Soltari Champion", "")); - cubeCards.add(new CardIdentity("Soltari Monk", "")); cubeCards.add(new CardIdentity("Soltari Priest", "")); + cubeCards.add(new CardIdentity("Song of the Dryads", "")); cubeCards.add(new CardIdentity("Sorin Markov", "")); cubeCards.add(new CardIdentity("Sorin, Lord of Innistrad", "")); + cubeCards.add(new CardIdentity("Soulfire Grand Master", "")); cubeCards.add(new CardIdentity("Sower of Temptation", "")); cubeCards.add(new CardIdentity("Spear of Heliod", "")); cubeCards.add(new CardIdentity("Spectral Procession", "")); cubeCards.add(new CardIdentity("Spellskite", "")); cubeCards.add(new CardIdentity("Sphere of the Suns", "")); cubeCards.add(new CardIdentity("Sphinx of the Steel Wind", "")); + cubeCards.add(new CardIdentity("Sphinx's Revelation", "")); cubeCards.add(new CardIdentity("Spikeshot Elder", "")); cubeCards.add(new CardIdentity("Spirit of the Labyrinth", "")); + cubeCards.add(new CardIdentity("Splinter Twin", "")); cubeCards.add(new CardIdentity("Squee, Goblin Nabob", "")); cubeCards.add(new CardIdentity("Staggershock", "")); cubeCards.add(new CardIdentity("Steam Augury", "")); cubeCards.add(new CardIdentity("Steam Vents", "")); - cubeCards.add(new CardIdentity("Steppe Lynx", "")); cubeCards.add(new CardIdentity("Stillmoon Cavalier", "")); cubeCards.add(new CardIdentity("Stirring Wildwood", "")); + cubeCards.add(new CardIdentity("Stoke the Flames", "")); cubeCards.add(new CardIdentity("Stomping Ground", "")); cubeCards.add(new CardIdentity("Stone Rain", "")); cubeCards.add(new CardIdentity("Stonecloaker", "")); @@ -624,10 +621,10 @@ public class BensCube extends DraftCube { cubeCards.add(new CardIdentity("Stonewood Invocation", "")); cubeCards.add(new CardIdentity("Stormblood Berserker", "")); cubeCards.add(new CardIdentity("Strangleroot Geist", "")); + cubeCards.add(new CardIdentity("Stratus Dancer", "")); cubeCards.add(new CardIdentity("Strip Mine", "")); cubeCards.add(new CardIdentity("Stromkirk Noble", "")); cubeCards.add(new CardIdentity("Student of Warfare", "")); - cubeCards.add(new CardIdentity("Stunted Growth", "")); cubeCards.add(new CardIdentity("Sublime Archangel", "")); cubeCards.add(new CardIdentity("Sulfur Falls", "")); cubeCards.add(new CardIdentity("Sulfuric Vortex", "")); @@ -651,16 +648,17 @@ public class BensCube extends DraftCube { cubeCards.add(new CardIdentity("Tamiyo, the Moon Sage", "")); cubeCards.add(new CardIdentity("Tangle Wire", "")); cubeCards.add(new CardIdentity("Tarmogoyf", "")); - cubeCards.add(new CardIdentity("Tattermunge Maniac", "")); cubeCards.add(new CardIdentity("Tectonic Edge", "")); cubeCards.add(new CardIdentity("Teetering Peaks", "")); cubeCards.add(new CardIdentity("Temple Garden", "")); cubeCards.add(new CardIdentity("Temporal Isolation", "")); cubeCards.add(new CardIdentity("Tendrils of Agony", "")); cubeCards.add(new CardIdentity("Terastodon", "")); + cubeCards.add(new CardIdentity("Terminate", "")); cubeCards.add(new CardIdentity("Terminus", "")); cubeCards.add(new CardIdentity("Terramorphic Expanse", "")); cubeCards.add(new CardIdentity("Terror", "")); + cubeCards.add(new CardIdentity("Tezzeret the Seeker", "")); cubeCards.add(new CardIdentity("Tezzeret, Agent of Bolas", "")); cubeCards.add(new CardIdentity("Thalia, Guardian of Thraben", "")); cubeCards.add(new CardIdentity("The Abyss", "")); @@ -671,11 +669,12 @@ public class BensCube extends DraftCube { cubeCards.add(new CardIdentity("Thoughtseize", "")); cubeCards.add(new CardIdentity("Thragtusk", "")); cubeCards.add(new CardIdentity("Thran Dynamo", "")); + cubeCards.add(new CardIdentity("Through the Breach", "")); cubeCards.add(new CardIdentity("Thrun, the Last Troll", "")); cubeCards.add(new CardIdentity("Thundermaw Hellkite", "")); - cubeCards.add(new CardIdentity("Thunderscape Battlemage", "")); cubeCards.add(new CardIdentity("Tidehollow Sculler", "")); cubeCards.add(new CardIdentity("Time Spiral", "")); + cubeCards.add(new CardIdentity("Time Vault", "")); cubeCards.add(new CardIdentity("Time Walk", "")); cubeCards.add(new CardIdentity("Time Warp", "")); cubeCards.add(new CardIdentity("Timetwister", "")); @@ -686,12 +685,15 @@ public class BensCube extends DraftCube { cubeCards.add(new CardIdentity("Tormented Hero", "")); cubeCards.add(new CardIdentity("Tradewind Rider", "")); cubeCards.add(new CardIdentity("Treachery", "")); + cubeCards.add(new CardIdentity("Treasure Cruise", "")); cubeCards.add(new CardIdentity("Treetop Village", "")); cubeCards.add(new CardIdentity("Trinket Mage", "")); + cubeCards.add(new CardIdentity("Triplicate Spirits", "")); cubeCards.add(new CardIdentity("Tropical Island", "")); cubeCards.add(new CardIdentity("Trygon Predator", "")); cubeCards.add(new CardIdentity("Tundra", "")); cubeCards.add(new CardIdentity("Turnabout", "")); + cubeCards.add(new CardIdentity("Ugin, the Spirit Dragon", "")); cubeCards.add(new CardIdentity("Ulamog, the Infinite Gyre", "")); cubeCards.add(new CardIdentity("Ultimate Price", "")); cubeCards.add(new CardIdentity("Ulvenwald Tracker", "")); @@ -712,15 +714,13 @@ public class BensCube extends DraftCube { cubeCards.add(new CardIdentity("Venser, Shaper Savant", "")); cubeCards.add(new CardIdentity("Venser, the Sojourner", "")); cubeCards.add(new CardIdentity("Verdant Catacombs", "")); - cubeCards.add(new CardIdentity("Vesuvan Shapeshifter", "")); cubeCards.add(new CardIdentity("Vexing Devil", "")); cubeCards.add(new CardIdentity("Vindicate", "")); - cubeCards.add(new CardIdentity("Vines of Vastwood", "")); cubeCards.add(new CardIdentity("Voice of Resurgence", "")); cubeCards.add(new CardIdentity("Voidslime", "")); - cubeCards.add(new CardIdentity("Volcanic Fallout", "")); cubeCards.add(new CardIdentity("Volcanic Island", "")); cubeCards.add(new CardIdentity("Volrath's Stronghold", "")); + cubeCards.add(new CardIdentity("Voltaic Key", "")); cubeCards.add(new CardIdentity("Vorapede", "")); cubeCards.add(new CardIdentity("Vraska the Unseen", "")); cubeCards.add(new CardIdentity("Wake Thrasher", "")); @@ -757,5 +757,6 @@ public class BensCube extends DraftCube { cubeCards.add(new CardIdentity("Young Pyromancer", "")); cubeCards.add(new CardIdentity("Zealous Conscripts", "")); cubeCards.add(new CardIdentity("Zo-Zu the Punisher", "")); + cubeCards.add(new CardIdentity("Zurgo Bellstriker", "")); } } diff --git a/Mage.Sets/src/mage/sets/apocalypse/Jilt.java b/Mage.Sets/src/mage/sets/apocalypse/Jilt.java new file mode 100644 index 00000000000..1dc7fa14ae4 --- /dev/null +++ b/Mage.Sets/src/mage/sets/apocalypse/Jilt.java @@ -0,0 +1,111 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.apocalypse; + +import java.util.UUID; +import mage.abilities.Ability; +import mage.abilities.SpellAbility; +import mage.abilities.condition.common.KickedCondition; +import mage.abilities.decorator.ConditionalOneShotEffect; +import mage.abilities.effects.Effect; +import mage.abilities.effects.common.DamageTargetEffect; +import mage.abilities.effects.common.ReturnToHandTargetEffect; +import mage.abilities.keyword.KickerAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.filter.common.FilterCreaturePermanent; +import mage.game.Game; +import mage.target.common.TargetCreaturePermanent; +import mage.target.targetpointer.SecondTargetPointer; + +/** + * + * @author fireshoes + */ +public class Jilt extends CardImpl { + + public Jilt(UUID ownerId) { + super(ownerId, 27, "Jilt", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{1}{U}"); + this.expansionSetCode = "APC"; + + // Kicker {1}{R} + this.addAbility(new KickerAbility("{1}{R}")); + + // Return target creature to its owner's hand. If Jilt was kicked, it deals 2 damage to another target creature. + this.getSpellAbility().addEffect(new ReturnToHandTargetEffect()); + Effect effect = new ConditionalOneShotEffect( + new DamageTargetEffect(2), + KickedCondition.getInstance(), + "If {this} was kicked, it deals 2 damage to another target creature"); + effect.setTargetPointer(new SecondTargetPointer()); + this.getSpellAbility().addEffect(effect); + this.getSpellAbility().addTarget(new TargetCreaturePermanent()); + } + + @Override + public void adjustTargets(Ability ability, Game game) { + if (ability instanceof SpellAbility && KickedCondition.getInstance().apply(game, ability)) { + ability.addTarget(new TargetOtherCreaturePermanent(new FilterCreaturePermanent("another target creature"))); + } + + } + + public Jilt(final Jilt card) { + super(card); + } + + @Override + public Jilt copy() { + return new Jilt(this); + } +} + +class TargetOtherCreaturePermanent extends TargetCreaturePermanent { + + public TargetOtherCreaturePermanent(FilterCreaturePermanent filter) { + super(filter); + } + + public TargetOtherCreaturePermanent(final TargetOtherCreaturePermanent target) { + super(target); + } + + @Override + public boolean canTarget(UUID controllerId, UUID id, Ability source, Game game) { + if (source.getTargets().get(0).getTargets().contains(id)) { + return false; + } + return super.canTarget(controllerId, id, source, game); + } + + @Override + public TargetOtherCreaturePermanent copy() { + return new TargetOtherCreaturePermanent(this); + } +} diff --git a/Mage.Sets/src/mage/sets/darksteel/StandTogether.java b/Mage.Sets/src/mage/sets/darksteel/StandTogether.java new file mode 100644 index 00000000000..6295029d68a --- /dev/null +++ b/Mage.Sets/src/mage/sets/darksteel/StandTogether.java @@ -0,0 +1,66 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.darksteel; + +import java.util.UUID; +import mage.abilities.effects.Effect; +import mage.abilities.effects.common.counter.AddCountersTargetEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.counters.CounterType; +import mage.target.Target; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author fireshoes + */ +public class StandTogether extends CardImpl { + + public StandTogether(UUID ownerId) { + super(ownerId, 84, "Stand Together", Rarity.UNCOMMON, new CardType[]{CardType.INSTANT}, "{3}{G}{G}"); + this.expansionSetCode = "DST"; + + // Put two +1/+1 counters on target creature and two +1/+1 counters on another target creature. + Effect effect = new AddCountersTargetEffect(CounterType.P1P1.createInstance(2)); + effect.setText("Put two +1/+1 counters on target creature and two +1/+1 counters on another target creature"); + this.getSpellAbility().addEffect(effect); + Target target = new TargetCreaturePermanent(2,2); + this.getSpellAbility().addTarget(target); + } + + public StandTogether(final StandTogether card) { + super(card); + } + + @Override + public StandTogether copy() { + return new StandTogether(this); + } +} diff --git a/Mage.Sets/src/mage/sets/guildpact/MizziumTransreliquat.java b/Mage.Sets/src/mage/sets/guildpact/MizziumTransreliquat.java new file mode 100644 index 00000000000..c1c75827a9b --- /dev/null +++ b/Mage.Sets/src/mage/sets/guildpact/MizziumTransreliquat.java @@ -0,0 +1,134 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.guildpact; + +import java.util.UUID; +import mage.abilities.Ability; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.OneShotEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Outcome; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.target.common.TargetArtifactPermanent; +import mage.util.functions.EmptyApplyToPermanent; + +/** + * + * @author fireshoes + */ +public class MizziumTransreliquat extends CardImpl { + + public MizziumTransreliquat(UUID ownerId) { + super(ownerId, 153, "Mizzium Transreliquat", Rarity.RARE, new CardType[]{CardType.ARTIFACT}, "{3}"); + this.expansionSetCode = "GPT"; + + // {3}: Mizzium Transreliquat becomes a copy of target artifact until end of turn. + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new MizziumTransreliquatCopyEffect(), new ManaCostsImpl("{3}")); + ability.addTarget(new TargetArtifactPermanent()); + this.addAbility(ability); + + // {1}{U}{R}: Mizzium Transreliquat becomes a copy of target artifact and gains this ability. + ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new MizziumTransreliquatCopyAndGainAbilityEffect(), new ManaCostsImpl("{1}{U}{R}")); + ability.addTarget(new TargetArtifactPermanent()); + this.addAbility(ability); + } + + public MizziumTransreliquat(final MizziumTransreliquat card) { + super(card); + } + + @Override + public MizziumTransreliquat copy() { + return new MizziumTransreliquat(this); + } +} + + +class MizziumTransreliquatCopyEffect extends OneShotEffect { + + public MizziumTransreliquatCopyEffect() { + super(Outcome.Copy); + this.staticText = "Mizzium Transreliquat becomes a copy of target artifact until end of turn"; + } + + public MizziumTransreliquatCopyEffect(final MizziumTransreliquatCopyEffect effect) { + super(effect); + } + + @Override + public MizziumTransreliquatCopyEffect copy() { + return new MizziumTransreliquatCopyEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Permanent sourcePermanent = game.getPermanent(source.getSourceId()); + Permanent copyFromPermanent = game.getPermanent(getTargetPointer().getFirst(game, source)); + if (sourcePermanent != null && copyFromPermanent != null) { + game.copyPermanent(Duration.EndOfTurn, copyFromPermanent, sourcePermanent, source, new EmptyApplyToPermanent()); + return true; + } + return false; + } +} +class MizziumTransreliquatCopyAndGainAbilityEffect extends OneShotEffect { + + public MizziumTransreliquatCopyAndGainAbilityEffect() { + super(Outcome.Benefit); + this.staticText = "Mizzium Transreliquat becomes a copy of target artifact and gains this ability"; + } + + public MizziumTransreliquatCopyAndGainAbilityEffect(final MizziumTransreliquatCopyAndGainAbilityEffect effect) { + super(effect); + } + + @Override + public MizziumTransreliquatCopyAndGainAbilityEffect copy() { + return new MizziumTransreliquatCopyAndGainAbilityEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Permanent sourcePermanent = game.getPermanent(source.getSourceId()); + Permanent copyFromPermanent = game.getPermanent(getTargetPointer().getFirst(game, source)); + if (sourcePermanent != null && copyFromPermanent != null) { + Permanent newPermanent = game.copyPermanent(copyFromPermanent, sourcePermanent, source, new EmptyApplyToPermanent()); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new MizziumTransreliquatCopyAndGainAbilityEffect(), new ManaCostsImpl("{1}{U}{R}")); + ability.addTarget(new TargetArtifactPermanent()); + newPermanent.addAbility(ability, source.getSourceId(), game); + return true; + } + return false; + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/planeshift/RushingRiver.java b/Mage.Sets/src/mage/sets/planeshift/RushingRiver.java index ce6d9e7473d..34b0cee256e 100644 --- a/Mage.Sets/src/mage/sets/planeshift/RushingRiver.java +++ b/Mage.Sets/src/mage/sets/planeshift/RushingRiver.java @@ -1,116 +1,115 @@ -/* - * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, are - * permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this list of - * conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, this list - * of conditions and the following disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON - * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * The views and conclusions contained in the software and documentation are those of the - * authors and should not be interpreted as representing official policies, either expressed - * or implied, of BetaSteward_at_googlemail.com. - */ -package mage.sets.planeshift; - -import java.util.UUID; -import mage.abilities.Ability; -import mage.abilities.SpellAbility; -import mage.abilities.condition.common.KickedCondition; -import mage.abilities.costs.common.SacrificeTargetCost; -import mage.abilities.decorator.ConditionalOneShotEffect; -import mage.abilities.effects.Effect; -import mage.abilities.effects.common.ReturnToHandTargetEffect; -import mage.abilities.keyword.KickerAbility; -import mage.cards.CardImpl; -import mage.constants.CardType; -import mage.constants.Rarity; -import mage.filter.Filter; -import mage.filter.common.FilterControlledLandPermanent; -import mage.filter.common.FilterNonlandPermanent; -import mage.game.Game; -import mage.target.common.TargetControlledPermanent; -import mage.target.common.TargetNonlandPermanent; -import mage.target.targetpointer.SecondTargetPointer; - -/** - * - * @author LevelX2 - */ -public class RushingRiver extends CardImpl { - - public RushingRiver(UUID ownerId) { - super(ownerId, 30, "Rushing River", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{2}{U}"); - this.expansionSetCode = "PLS"; - - - // Kicker-Sacrifice a land. - this.addAbility(new KickerAbility(new SacrificeTargetCost(new TargetControlledPermanent(new FilterControlledLandPermanent("a land"))))); - - // Return target nonland permanent to its owner's hand. If Rushing River was kicked, return another target nonland permanent to its owner's hand. - this.getSpellAbility().addEffect(new ReturnToHandTargetEffect()); - Effect effect = new ConditionalOneShotEffect( - new ReturnToHandTargetEffect(), - KickedCondition.getInstance(), - "If {this} was kicked, return another target nonland permanent to its owner's hand"); - effect.setTargetPointer(new SecondTargetPointer()); - this.getSpellAbility().addEffect(effect); - this.getSpellAbility().addTarget(new TargetNonlandPermanent()); - - } - - @Override - public void adjustTargets(Ability ability, Game game) { - if (ability instanceof SpellAbility && KickedCondition.getInstance().apply(game, ability)) { - ability.addTarget(new TargetOtherNonlandPermanent(new FilterNonlandPermanent("another target nonland permanent"))); - } - - } - - public RushingRiver(final RushingRiver card) { - super(card); - } - - @Override - public RushingRiver copy() { - return new RushingRiver(this); - } -} - -class TargetOtherNonlandPermanent extends TargetNonlandPermanent { - - public TargetOtherNonlandPermanent(FilterNonlandPermanent filter) { - super(filter); - } - - public TargetOtherNonlandPermanent(final TargetOtherNonlandPermanent target) { - super(target); - } - - @Override - public boolean canTarget(UUID controllerId, UUID id, Ability source, Game game) { - if (source.getTargets().get(0).getTargets().contains(id)) { - return false; - } - return super.canTarget(controllerId, id, source, game); - } - - @Override - public TargetOtherNonlandPermanent copy() { - return new TargetOtherNonlandPermanent(this); - } -} +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.planeshift; + +import java.util.UUID; +import mage.abilities.Ability; +import mage.abilities.SpellAbility; +import mage.abilities.condition.common.KickedCondition; +import mage.abilities.costs.common.SacrificeTargetCost; +import mage.abilities.decorator.ConditionalOneShotEffect; +import mage.abilities.effects.Effect; +import mage.abilities.effects.common.ReturnToHandTargetEffect; +import mage.abilities.keyword.KickerAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.filter.common.FilterControlledLandPermanent; +import mage.filter.common.FilterNonlandPermanent; +import mage.game.Game; +import mage.target.common.TargetControlledPermanent; +import mage.target.common.TargetNonlandPermanent; +import mage.target.targetpointer.SecondTargetPointer; + +/** + * + * @author LevelX2 + */ +public class RushingRiver extends CardImpl { + + public RushingRiver(UUID ownerId) { + super(ownerId, 30, "Rushing River", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{2}{U}"); + this.expansionSetCode = "PLS"; + + + // Kicker-Sacrifice a land. + this.addAbility(new KickerAbility(new SacrificeTargetCost(new TargetControlledPermanent(new FilterControlledLandPermanent("a land"))))); + + // Return target nonland permanent to its owner's hand. If Rushing River was kicked, return another target nonland permanent to its owner's hand. + this.getSpellAbility().addEffect(new ReturnToHandTargetEffect()); + Effect effect = new ConditionalOneShotEffect( + new ReturnToHandTargetEffect(), + KickedCondition.getInstance(), + "If {this} was kicked, return another target nonland permanent to its owner's hand"); + effect.setTargetPointer(new SecondTargetPointer()); + this.getSpellAbility().addEffect(effect); + this.getSpellAbility().addTarget(new TargetNonlandPermanent()); + + } + + @Override + public void adjustTargets(Ability ability, Game game) { + if (ability instanceof SpellAbility && KickedCondition.getInstance().apply(game, ability)) { + ability.addTarget(new TargetOtherNonlandPermanent(new FilterNonlandPermanent("another target nonland permanent"))); + } + + } + + public RushingRiver(final RushingRiver card) { + super(card); + } + + @Override + public RushingRiver copy() { + return new RushingRiver(this); + } +} + +class TargetOtherNonlandPermanent extends TargetNonlandPermanent { + + public TargetOtherNonlandPermanent(FilterNonlandPermanent filter) { + super(filter); + } + + public TargetOtherNonlandPermanent(final TargetOtherNonlandPermanent target) { + super(target); + } + + @Override + public boolean canTarget(UUID controllerId, UUID id, Ability source, Game game) { + if (source.getTargets().get(0).getTargets().contains(id)) { + return false; + } + return super.canTarget(controllerId, id, source, game); + } + + @Override + public TargetOtherNonlandPermanent copy() { + return new TargetOtherNonlandPermanent(this); + } +} diff --git a/Mage.Sets/src/mage/sets/ravnica/BloodFunnel.java b/Mage.Sets/src/mage/sets/ravnica/BloodFunnel.java new file mode 100644 index 00000000000..54aacd10457 --- /dev/null +++ b/Mage.Sets/src/mage/sets/ravnica/BloodFunnel.java @@ -0,0 +1,86 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.ravnica; + +import java.util.UUID; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.common.SpellCastControllerTriggeredAbility; +import mage.abilities.costs.common.SacrificeTargetCost; +import mage.abilities.effects.Effect; +import mage.abilities.effects.common.CounterUnlessPaysEffect; +import mage.abilities.effects.common.cost.SpellsCostReductionControllerEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.filter.FilterCard; +import mage.filter.FilterSpell; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.target.common.TargetControlledCreaturePermanent; + +/** + * + * @author fireshoes + */ +public class BloodFunnel extends CardImpl { + + private static final FilterCard filter = new FilterCard("Noncreature spells"); + private static final FilterSpell filterNoncreature = new FilterSpell("a noncreature spell"); + + static { + filter.add(Predicates.not(new CardTypePredicate(CardType.CREATURE))); + filterNoncreature.add(Predicates.not(new CardTypePredicate(CardType.CREATURE))); + } + + public BloodFunnel(UUID ownerId) { + super(ownerId, 77, "Blood Funnel", Rarity.RARE, new CardType[]{CardType.ENCHANTMENT}, "{1}{B}"); + this.expansionSetCode = "RAV"; + + // Noncreature spells you cast cost {2} less to cast. + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SpellsCostReductionControllerEffect(filter, 2))); + + // Whenever you cast a noncreature spell, counter that spell unless you sacrifice a creature. + Effect effect = new CounterUnlessPaysEffect(new SacrificeTargetCost(new TargetControlledCreaturePermanent())); + effect.setText("counter that spell unless you sacrifice a creature"); + this.addAbility(new SpellCastControllerTriggeredAbility(Zone.BATTLEFIELD, + effect, + filterNoncreature, + false, + true)); + } + + public BloodFunnel(final BloodFunnel card) { + super(card); + } + + @Override + public BloodFunnel copy() { + return new BloodFunnel(this); + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/ravnica/TidewaterMinion.java b/Mage.Sets/src/mage/sets/ravnica/TidewaterMinion.java new file mode 100644 index 00000000000..7f4c692ce14 --- /dev/null +++ b/Mage.Sets/src/mage/sets/ravnica/TidewaterMinion.java @@ -0,0 +1,83 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.ravnica; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.UntapTargetEffect; +import mage.abilities.effects.common.continuous.LoseAbilitySourceEffect; +import mage.abilities.keyword.DefenderAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.target.TargetPermanent; + +/** + * + * @author fireshoes + */ +public class TidewaterMinion extends CardImpl { + + public TidewaterMinion(UUID ownerId) { + super(ownerId, 71, "Tidewater Minion", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{3}{U}{U}"); + this.expansionSetCode = "RAV"; + this.subtype.add("Elemental"); + this.subtype.add("Minion"); + this.power = new MageInt(4); + this.toughness = new MageInt(4); + + // Defender + this.addAbility(DefenderAbility.getInstance()); + + // {4}: Tidewater Minion loses defender until end of turn. + this.addAbility(new SimpleActivatedAbility( + Zone.BATTLEFIELD, + new LoseAbilitySourceEffect(DefenderAbility.getInstance(), Duration.EndOfTurn), + new ManaCostsImpl("{4}"))); + + // {tap}: Untap target permanent. + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new UntapTargetEffect(), new TapSourceCost()); + ability.addTarget(new TargetPermanent()); + this.addAbility(ability); + } + + public TidewaterMinion(final TidewaterMinion card) { + super(card); + } + + @Override + public TidewaterMinion copy() { + return new TidewaterMinion(this); + } +} diff --git a/Mage.Sets/src/mage/sets/ravnica/TorpidMoloch.java b/Mage.Sets/src/mage/sets/ravnica/TorpidMoloch.java new file mode 100644 index 00000000000..fe25ccf895b --- /dev/null +++ b/Mage.Sets/src/mage/sets/ravnica/TorpidMoloch.java @@ -0,0 +1,75 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.ravnica; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.SacrificeTargetCost; +import mage.abilities.effects.common.continuous.LoseAbilitySourceEffect; +import mage.abilities.keyword.DefenderAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.filter.common.FilterControlledLandPermanent; +import mage.target.common.TargetControlledPermanent; + +/** + * + * @author fireshoes + */ +public class TorpidMoloch extends CardImpl { + + public TorpidMoloch(UUID ownerId) { + super(ownerId, 147, "Torpid Moloch", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{R}"); + this.expansionSetCode = "RAV"; + this.subtype.add("Lizard"); + this.power = new MageInt(3); + this.toughness = new MageInt(2); + + // Defender + this.addAbility(DefenderAbility.getInstance()); + + // Sacrifice three lands: Torpid Moloch loses defender until end of turn. + this.addAbility(new SimpleActivatedAbility( + Zone.BATTLEFIELD, + new LoseAbilitySourceEffect(DefenderAbility.getInstance(), Duration.EndOfTurn), + new SacrificeTargetCost(new TargetControlledPermanent(3, 3, new FilterControlledLandPermanent("three lands"), true)))); + } + + public TorpidMoloch(final TorpidMoloch card) { + super(card); + } + + @Override + public TorpidMoloch copy() { + return new TorpidMoloch(this); + } +}