mirror of
https://github.com/correl/mage.git
synced 2024-12-29 11:09:17 +00:00
commit
ba80bf9227
254 changed files with 16561 additions and 2397 deletions
|
@ -141,7 +141,8 @@ public class DeckImportFromClipboardDialog extends JDialog {
|
|||
txtDeckList.setMinimumSize(new Dimension(250, 400));
|
||||
txtDeckList.setPreferredSize(new Dimension(550, 400));
|
||||
txtDeckList.setText("// Example:\n//1 Library of Congress\n//1 Cryptic Gateway\n//1 Azami, Lady of Scrolls\n// NB: This is slow as, and will lock your screen :)");
|
||||
panel3.add(txtDeckList, new GridBagConstraints(0, 0, 1, 1, 1.0, 0.0,
|
||||
JScrollPane txtScrollableDeckList = new JScrollPane(txtDeckList);
|
||||
panel3.add(txtScrollableDeckList, new GridBagConstraints(0, 0, 1, 1, 1.0, 0.0,
|
||||
GridBagConstraints.CENTER, GridBagConstraints.BOTH,
|
||||
new Insets(0, 0, 0, 0), 0, 0));
|
||||
}
|
||||
|
|
|
@ -59,7 +59,8 @@ public class GathererSets implements Iterable<DownloadJob> {
|
|||
"BFZ", "OGW",
|
||||
"SOI", "EMN",
|
||||
"KLD", "AER",
|
||||
"AKH", "HOU"
|
||||
"AKH", "HOU",
|
||||
"E01"
|
||||
};
|
||||
|
||||
private static final String[] onlyMythics = {
|
||||
|
|
|
@ -595,6 +595,9 @@
|
|||
|Generate|TOK:HOP|Pentavite|||PentaviteToken|
|
||||
|Generate|TOK:HOP|Pest|||PestToken|
|
||||
|Generate|TOK:HOP|Saproling|||SaprolingToken|
|
||||
|Generate|TOK:HOU|Insect|||TheLocustGodInsectToken|
|
||||
|Generate|TOK:HOU|Snake|||RhonassLastStandToken|
|
||||
|Generate|TOK:HOU|Zombie||
|
||||
|Generate|TOK:ICE|Caribou|||CaribouToken|
|
||||
|Generate|TOK:INV|Bird|||OwlToken|
|
||||
|Generate|TOK:INV|Elephant|||ElephantToken|
|
||||
|
|
|
@ -0,0 +1,583 @@
|
|||
/*
|
||||
* 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.tournament.cubes;
|
||||
|
||||
import mage.game.draft.DraftCube;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author fireshoes
|
||||
*/
|
||||
public class VintageCubeJune2017 extends DraftCube {
|
||||
|
||||
public VintageCubeJune2017() {
|
||||
super("MTGO Vintage Cube June 2017");
|
||||
|
||||
cubeCards.add(new DraftCube.CardIdentity("Abbot of Keral Keep", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Abrupt Decay", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Academy Ruins", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Acidic Slime", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Ajani Vengeant", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Ancestral Recall", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Ancestral Vision", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Ancient Grudge", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Ancient Tomb", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Angel of Sanctions", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Angel of Serenity", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Anguished Unmaking", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Animate Dead", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Anticipate", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Arbor Elf", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Archangel of Thune", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Arid Mesa", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Armageddon", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Ashiok, Nightmare Weaver", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Avacyn's Pilgrim", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Avalanche Riders", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Avenger of Zendikar", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Awakening Zone", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Azorius Signet", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Badlands", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Balance", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Baleful Strix", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Baneslayer Angel", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Banisher Priest", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Banishing Light", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Baral, Chief of Compliance", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Basalt Monolith", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Batterskull", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Bayou", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Bazaar of Baghdad", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Beast Within", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Birds of Paradise", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Bitterblossom", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Black Lotus", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Blackcleave Cliffs", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Blade Splicer", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Blightsteel Colossus", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Blood Crypt", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Bloodbraid Elf", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Bloodstained Mire", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Blooming Marsh", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Bone Shredder", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Bonfire of the Damned", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Boros Charm", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Boros Signet", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Botanical Sanctum", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Braids, Cabal Minion", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Brain Freeze", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Brain Maggot", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Brainstorm", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Breeding Pool", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Bribery", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Brimaz, King of Oreskos", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Brimstone Volley", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Bring to Light", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Buried Alive", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Burning of Xinye", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Burst Lightning", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Cabal Ritual", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Careful Study", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Cast Out", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Celestial Colonnade", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Chain Lightning", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Chandra, Flamecaller", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Chandra, Pyromaster", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Chandra, Torch of Defiance", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Channel", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Char", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Chrome Mox", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Coalition Relic", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Coercive Portal", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Commit // Memory", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Compulsive Research", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Concealed Courtyard", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Consecrated Sphinx", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Control Magic", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Copperline Gorge", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Corpse Dance", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Council's Judgment", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Counterspell", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Courser of Kruphix", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Crater's Claws", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Craterhoof Behemoth", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Creeping Tar Pit", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Crucible of Worlds", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Cryptic Command", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Dack Fayden", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Damnation", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Daretti, Scrap Savant", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Dark Confidant", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Dark Petition", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Dark Ritual", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Darkslick Shores", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Day of Judgment", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Daze", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Deathrite Shaman", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Deceiver Exarch", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Declaration in Stone", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Delver of Secrets", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Demonic Tutor", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Den Protector", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Deranged Hermit", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Desecration Demon", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Diabolic Edict", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Dig Through Time", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Dimir Signet", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Disenchant", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Dismember", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Dissenter's Deliverance", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Dragonlord Atarka", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Dragonlord Dromoka", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Dragonlord Ojutai", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Dragonlord Silumgar", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Dreadbore", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Dromoka's Command", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Dualcaster Mage", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Duplicant", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Duress", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Edric, Spymaster of Trest", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Eidolon of the Great Revel", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Electrolyze", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Elesh Norn, Grand Cenobite", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Elspeth, Knight-Errant", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Elspeth, Sun's Champion", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Elves of Deep Shadow", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Elvish Mystic", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Emeria Angel", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Empty the Warrens", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Emrakul, the Aeons Torn", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Emrakul, the Promised End", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Enlightened Tutor", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Entomb", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Eternal Witness", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Eureka", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Everflowing Chalice", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Exalted Angel", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Exhume", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Exquisite Firecraft", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Fact or Fiction", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Faithless Looting", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Falkenrath Gorger", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Fastbond", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Fatal Push", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Fauna Shaman", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Fiend Hunter", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Fiery Confluence", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Figure of Destiny", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Fire // Ice", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Fireblast", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Firebolt", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Firedrinker Satyr", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Flametongue Kavu", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Flickerwisp", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Flooded Strand", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Force Spike", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Force of Will", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Frantic Search", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Freyalise, Llanowar's Fury", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Frost Titan", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Fyndhorn Elves", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Gaea's Cradle", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Garruk Relentless", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Garruk Wildspeaker", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Garruk, Apex Predator", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Garruk, Primal Hunter", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Geist of Saint Traft", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Genesis Wave", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Gideon Jura", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Gideon of the Trials", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Gideon, Ally of Zendikar", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Gifts Ungiven", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Gilded Lotus", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Gitaxian Probe", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Glen Elendra Archmage", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Go for the Throat", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Goblin Dark-Dwellers", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Goblin Guide", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Goblin Welder", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Godless Shrine", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Golgari Signet", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Grave Titan", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Green Sun's Zenith", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Grim Lavamancer", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Grim Monolith", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Grim Tutor", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Griselbrand", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Gruul Signet", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Gurmag Angler", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Gush", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Guttersnipe", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Hallowed Fountain", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Hangarback Walker", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Harmonize", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Harsh Mentor", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Heartbeat of Spring", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Hedron Archive", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Hellrider", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Hero of Bladehold", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Hero's Downfall", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("High Tide", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Hissing Quagmire", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Honor of the Pure", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Huntmaster of the Fells", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Hymn to Tourach", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Hypnotic Specter", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Imperial Recruiter", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Imperial Seal", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Impulse", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Incinerate", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Inferno Titan", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Inkwell Leviathan", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Inquisition of Kozilek", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Inspiring Vantage", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Iona, Shield of Emeria", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Izzet Charm", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Izzet Signet", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Jace Beleren", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Jace, Architect of Thought", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Jace, Vryn's Prodigy", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Jace, the Mind Sculptor", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Jackal Pup", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Joraga Treespeaker", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Kalitas, Traitor of Ghet", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Karakas", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Kargan Dragonlord", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Karn Liberated", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Kiki-Jiki, Mirror Breaker", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Kitchen Finks", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Knight of the White Orchid", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Kolaghan's Command", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Koth of the Hammer", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Kozilek, Butcher of Truth", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Kuldotha Forgemaster", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Kytheon, Hero of Akros", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Land Tax", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Lavaclaw Reaches", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Leonin Relic-Warder", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Leovold, Emissary of Trest", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Leyline of Sanctity", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Library of Alexandria", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Lifebane Zombie", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Lightning Bolt", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Lightning Greaves", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Lightning Helix", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Lightning Mauler", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Lightning Strike", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Liliana of the Veil", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Liliana, Death's Majesty", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Lingering Souls", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Linvala, Keeper of Silence", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Linvala, the Preserver", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Lion's Eye Diamond", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Living Death", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Llanowar Elves", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Lodestone Golem", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Looter il-Kor", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Lotus Bloom", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Lotus Cobra", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Lumbering Falls", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Maelstrom Pulse", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Magma Jet", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Magus of the Moon", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Magus of the Wheel", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Magus of the Will", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Makeshift Mannequin", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Mana Confluence", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Mana Crypt", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Mana Drain", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Mana Leak", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Mana Tithe", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Mana Vault", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Managorger Hydra", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Manglehorn", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Manic Vandal", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Mardu Woe-Reaper", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Marsh Flats", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Massacre Wurm", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Master of the Wild Hunt", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Maze of Ith", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Memory Jar", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Mental Misstep", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Mesmeric Fiend", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Metalworker", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Mind Twist", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Mind's Desire", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Mindslaver", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Mirari's Wake", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Mirran Crusader", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Mishra's Factory", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Mishra's Workshop", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Misty Rainforest", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Mizzium Mortars", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Moat", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Monastery Mentor", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Monastery Swiftspear", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Mother of Runes", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Mox Diamond", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Mox Emerald", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Mox Jet", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Mox Pearl", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Mox Ruby", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Mox Sapphire", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Mulldrifter", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Murderous Cut", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Mutavault", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Myr Battlesphere", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Mystic Confluence", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Mystic Snake", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Mystical Tutor", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Nahiri, the Harbinger", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Natural Order", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Nature's Claim", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Necromancy", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Necropotence", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Needle Spires", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Nekrataal", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Nevinyrral's Disk", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Nezumi Graverobber", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Nezumi Shortfang", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Nicol Bolas, Planeswalker", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Nissa, Worldwaker", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Noble Hierarch", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Nykthos, Shrine to Nyx", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Oath of Druids", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Oath of Nissa", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Oblivion Ring", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Olivia Voldaren", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Oona's Prowler", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Ophiomancer", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Opposition", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Oracle of Mul Daya", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Orzhov Signet", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Overgrown Tomb", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Pack Rat", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Painful Truths", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Palinchron", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Parallax Wave", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Path to Exile", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Pentad Prism", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Pernicious Deed", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Pestermite", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Phantasmal Image", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Phyrexian Metamorph", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Phyrexian Revoker", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Pithing Needle", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Plateau", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Polluted Delta", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Polukranos, World Eater", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Ponder", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Porcelain Legionnaire", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Preordain", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Primal Command", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Primeval Titan", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Progenitus", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Putrid Imp", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Qasali Pridemage", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Raging Ravine", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Rakdos Signet", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Rakdos's Return", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Ral Zarek", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Ravages of War", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Razorverge Thicket", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Reanimate", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Reckless Bushwhacker", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Reclamation Sage", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Recruiter of the Guard", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Recurring Nightmare", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Reflector Mage", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Regrowth", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Remand", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Repeal", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Restoration Angel", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Reveillark", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Rift Bolt", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Riftwing Cloudskate", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Rishadan Port", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Rishkar, Peema Renegade", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Rofellos, Llanowar Emissary", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Sacred Foundry", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Sakura-Tribe Elder", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Savannah", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Scalding Tarn", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Scavenging Ooze", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Scroll Rack", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Scrubland", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Seachrome Coast", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Search for Tomorrow", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Searing Blaze", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Searing Spear", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Seasons Past", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Seeker of the Way", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Seething Song", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Selesnya Signet", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Selfless Spirit", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Sensei's Divining Top", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Shadowmage Infiltrator", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Shallow Grave", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Shambling Vent", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Shardless Agent", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Shelldock Isle", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Sheoldred, Whispering One", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Show and Tell", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Shriekmaw", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Shrine of Burning Rage", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Sidisi, Undead Vizier", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Siege-Gang Commander", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Silverblade Paladin", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Simic Signet", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Skinrender", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Skullclamp", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Smash to Smithereens", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Smokestack", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Smuggler's Copter", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Snapcaster Mage", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Sneak Attack", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Sol Ring", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Soldier of the Pantheon", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Solemn Simulacrum", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Song of the Dryads", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Soulfire Grand Master", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Sower of Temptation", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Spear of Heliod", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Spectral Procession", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Spell Pierce", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Spellskite", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Sphinx of the Steel Wind", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Sphinx's Revelation", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Spirebluff Canal", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Spirit of the Labyrinth", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Splinter Twin", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Steam Vents", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Stirring Wildwood", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Stomping Ground", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Stoneforge Mystic", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Stormbreath Dragon", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Strip Mine", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Student of Warfare", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Sulfuric Vortex", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Sun Titan", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Sundering Titan", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Supreme Verdict", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Survival of the Fittest", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Sweltering Suns", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Sword of Body and Mind", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Sword of Feast and Famine", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Sword of Fire and Ice", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Sword of Light and Shadow", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Sword of War and Peace", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Swords to Plowshares", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Sylvan Caryatid", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Sylvan Library", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Taiga", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Tamiyo, the Moon Sage", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Tangle Wire", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Tarmogoyf", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Tasigur, the Golden Fang", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Temple Garden", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Tendrils of Agony", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Terastodon", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Terminate", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Tezzeret the Seeker", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Tezzeret, Agent of Bolas", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Thada Adel, Acquisitor", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Thalia, Guardian of Thraben", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("The Abyss", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Thirst for Knowledge", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Thoughtseize", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Thragtusk", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Thran Dynamo", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Through the Breach", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Thrun, the Last Troll", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Thundermaw Hellkite", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Tidehollow Sculler", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Time Spiral", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Time Walk", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Timely Reinforcements", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Timetwister", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Tinker", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Tolarian Academy", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Tooth and Nail", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Torrential Gearhulk", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Toxic Deluge", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Traverse the Ulvenwald", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Treachery", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Treasure Cruise", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Trinket Mage", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Tropical Island", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("True-Name Nemesis", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Trygon Predator", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Tundra", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Turnabout", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Ugin, the Spirit Dragon", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Ulamog, the Ceaseless Hunger", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Ulamog, the Infinite Gyre", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Ultimate Price", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Umezawa's Jitte", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Unburial Rites", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Underground Sea", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Unexpectedly Absent", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Upheaval", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Urborg, Tomb of Yawgmoth", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Vampire Nighthawk", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Vampiric Tutor", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Vedalken Shackles", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Vendilion Clique", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Venser, Shaper Savant", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Verdant Catacombs", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Verdurous Gearhulk", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Vindicate", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Voice of Resurgence", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Volcanic Island", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Vryn Wingmare", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Walking Ballista", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Wall of Blossoms", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Wall of Omens", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Wall of Roots", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Wandering Fumarole", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Wasteland", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Watery Grave", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Westvale Abbey", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Wheel of Fortune", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Wildfire", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Windswept Heath", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Winter Orb", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Wooded Foothills", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Woodfall Primus", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Worn Powerstone", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Wrath of God", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Wurmcoil Engine", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Xenagos, the Reveler", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Yavimaya Elder", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Yawgmoth's Bargain", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Yawgmoth's Will", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Young Pyromancer", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Zealous Conscripts", ""));
|
||||
cubeCards.add(new DraftCube.CardIdentity("Zurgo Bellstriker", ""));
|
||||
}
|
||||
}
|
|
@ -122,6 +122,7 @@
|
|||
<draftCube name="MTGO Vintage Cube 2016" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.VintageCube2016"/>
|
||||
<draftCube name="MTGO Vintage Cube June 2016" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.VintageCubeJune2016"/>
|
||||
<draftCube name="MTGO Vintage Cube November 2016" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.VintageCubeNovember2016"/>
|
||||
<draftCube name="MTGO Vintage Cube June 2017" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.VintageCubeJune2017"/>
|
||||
<draftCube name="The Peasant's Toolbox" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.PeasantsToolboxCube"/>
|
||||
<draftCube name="www.MTGCube.com" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.MTGCube"/>
|
||||
<draftCube name="Cube From Deck" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.CubeFromDeck"/>
|
||||
|
|
|
@ -119,6 +119,7 @@
|
|||
<draftCube name="MTGO Vintage Cube 2016" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.VintageCube2016"/>
|
||||
<draftCube name="MTGO Vintage Cube June 2016" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.VintageCubeJune2016"/>
|
||||
<draftCube name="MTGO Vintage Cube November 2016" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.VintageCubeNovember2016"/>
|
||||
<draftCube name="MTGO Vintage Cube June 2017" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.VintageCubeJune2017"/>
|
||||
<draftCube name="The Peasant's Toolbox" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.PeasantsToolboxCube"/>
|
||||
<draftCube name="www.MTGCube.com" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.MTGCube"/>
|
||||
<draftCube name="Cube From Deck" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.CubeFromDeck"/>
|
||||
|
|
77
Mage.Sets/src/mage/cards/a/ActOfHeroism.java
Normal file
77
Mage.Sets/src/mage/cards/a/ActOfHeroism.java
Normal file
|
@ -0,0 +1,77 @@
|
|||
/*
|
||||
* 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.cards.a;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.effects.Effect;
|
||||
import mage.abilities.effects.common.UntapTargetEffect;
|
||||
import mage.abilities.effects.common.combat.CanBlockAdditionalCreatureEffect;
|
||||
import mage.abilities.effects.common.continuous.BoostTargetEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.Zone;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Archer262
|
||||
*/
|
||||
public class ActOfHeroism extends CardImpl {
|
||||
|
||||
public ActOfHeroism(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{G}");
|
||||
|
||||
// Untap target creature.
|
||||
Effect effect = new UntapTargetEffect();
|
||||
effect.setText("Untap target creature");
|
||||
this.getSpellAbility().addEffect(effect);
|
||||
|
||||
// It gets +2/+2 and can block an additional creature this turn.
|
||||
effect = new BoostTargetEffect(2, 2, Duration.EndOfTurn);
|
||||
effect.setText("It gets +2/+2");
|
||||
this.getSpellAbility().addEffect(effect);
|
||||
effect = new GainAbilityTargetEffect(new SimpleStaticAbility(Zone.BATTLEFIELD, new CanBlockAdditionalCreatureEffect()), Duration.EndOfTurn);
|
||||
effect.setText("and can block an additional creature this turn");
|
||||
this.getSpellAbility().addEffect(effect);
|
||||
|
||||
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
||||
}
|
||||
|
||||
public ActOfHeroism(final ActOfHeroism card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ActOfHeroism copy() {
|
||||
return new ActOfHeroism(this);
|
||||
}
|
||||
}
|
64
Mage.Sets/src/mage/cards/a/AdornedPouncer.java
Normal file
64
Mage.Sets/src/mage/cards/a/AdornedPouncer.java
Normal file
|
@ -0,0 +1,64 @@
|
|||
/*
|
||||
* 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.cards.a;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.keyword.DoubleStrikeAbility;
|
||||
import mage.abilities.keyword.EternalizeAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class AdornedPouncer extends CardImpl {
|
||||
|
||||
public AdornedPouncer(UUID ownerId, CardSetInfo cardSetInfo) {
|
||||
super(ownerId, cardSetInfo, new CardType[]{CardType.CREATURE}, "{1}{W}");
|
||||
|
||||
subtype.add("Cat");
|
||||
|
||||
this.power = new MageInt(1);
|
||||
this.toughness = new MageInt(1);
|
||||
|
||||
//double strike
|
||||
addAbility(DoubleStrikeAbility.getInstance());
|
||||
|
||||
//eternalize 3WW
|
||||
addAbility(new EternalizeAbility(new ManaCostsImpl("{3}{W}{W}"), this));
|
||||
}
|
||||
|
||||
public AdornedPouncer(AdornedPouncer adornedPouncer) {
|
||||
super(adornedPouncer);
|
||||
}
|
||||
|
||||
public AdornedPouncer copy() {
|
||||
return new AdornedPouncer(this);
|
||||
}
|
||||
}
|
82
Mage.Sets/src/mage/cards/a/AerialGuide.java
Normal file
82
Mage.Sets/src/mage/cards/a/AerialGuide.java
Normal file
|
@ -0,0 +1,82 @@
|
|||
/*
|
||||
* 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.cards.a;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.AttacksTriggeredAbility;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.filter.common.FilterAttackingCreature;
|
||||
import mage.filter.predicate.permanent.AnotherPredicate;
|
||||
import mage.target.common.TargetAttackingCreature;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author ciaccona007
|
||||
*/
|
||||
public class AerialGuide extends CardImpl {
|
||||
|
||||
static final FilterAttackingCreature filter = new FilterAttackingCreature("another target attacking creature");
|
||||
|
||||
static {
|
||||
filter.add(new AnotherPredicate());
|
||||
}
|
||||
|
||||
public AerialGuide(UUID ownerId, CardSetInfo setInfo) {
|
||||
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
|
||||
|
||||
this.subtype.add("Drake");
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(2);
|
||||
|
||||
// Flying
|
||||
this.addAbility(FlyingAbility.getInstance());
|
||||
|
||||
// Whenever Aerial Guide attacks, another target attacking creature gains flying until end of turn.
|
||||
Ability ability = new AttacksTriggeredAbility(new GainAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn), false);
|
||||
ability.addTarget(new TargetAttackingCreature(1, 1, filter, false));
|
||||
addAbility(ability);
|
||||
|
||||
}
|
||||
|
||||
public AerialGuide(final AerialGuide card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AerialGuide copy() {
|
||||
return new AerialGuide(this);
|
||||
}
|
||||
}
|
81
Mage.Sets/src/mage/cards/a/Ambuscade.java
Normal file
81
Mage.Sets/src/mage/cards/a/Ambuscade.java
Normal file
|
@ -0,0 +1,81 @@
|
|||
/*
|
||||
* 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.cards.a;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.effects.Effect;
|
||||
import mage.abilities.effects.common.DamageWithPowerTargetEffect;
|
||||
import mage.abilities.effects.common.continuous.BoostTargetEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.TargetController;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.filter.predicate.permanent.ControllerPredicate;
|
||||
import mage.target.common.TargetControlledCreaturePermanent;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author ciaccona007
|
||||
*/
|
||||
public class Ambuscade extends CardImpl {
|
||||
|
||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature you don't control");
|
||||
|
||||
static {
|
||||
filter.add(new ControllerPredicate(TargetController.NOT_YOU));
|
||||
}
|
||||
|
||||
public Ambuscade(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{G}");
|
||||
|
||||
|
||||
// Target creature you control gets +1/+0 until end of turn.
|
||||
Effect effect = new BoostTargetEffect(1, 0, Duration.EndOfTurn);
|
||||
effect.setApplyEffectsAfter(); // needed to count the boost for the second effect
|
||||
this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent());
|
||||
this.getSpellAbility().addEffect(effect);
|
||||
|
||||
// It deals damage equal to its power to target creature you don't control.
|
||||
effect = new DamageWithPowerTargetEffect();
|
||||
effect.setText("It deals damage equal to its power to target creature you don't control");
|
||||
this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter));
|
||||
this.getSpellAbility().addEffect(effect);
|
||||
}
|
||||
|
||||
public Ambuscade(final Ambuscade card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Ambuscade copy() {
|
||||
return new Ambuscade(this);
|
||||
}
|
||||
}
|
42
Mage.Sets/src/mage/cards/a/AmmitEternal.java
Normal file
42
Mage.Sets/src/mage/cards/a/AmmitEternal.java
Normal file
|
@ -0,0 +1,42 @@
|
|||
package mage.cards.a;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility;
|
||||
import mage.abilities.common.SpellCastOpponentTriggeredAbility;
|
||||
import mage.abilities.effects.common.RemoveAllCountersSourceEffect;
|
||||
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
||||
import mage.abilities.keyword.AfflictAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.counters.CounterType;
|
||||
|
||||
public class AmmitEternal extends CardImpl {
|
||||
|
||||
public AmmitEternal(UUID ownerId, CardSetInfo cardSetInfo) {
|
||||
super(ownerId, cardSetInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
|
||||
subtype.add("Zombie");
|
||||
subtype.add("Crocodile");
|
||||
subtype.add("Demon");
|
||||
power = new MageInt(5);
|
||||
toughness = new MageInt(5);
|
||||
|
||||
// Afflict 3 (Whenever this creature becomes blocked, defending player loses 3 life.)
|
||||
this.addAbility(new AfflictAbility(3));
|
||||
|
||||
// Whenever an opponent casts a spell, put a -1/-1 counter on Ammit Eternal.
|
||||
this.addAbility(new SpellCastOpponentTriggeredAbility(new AddCountersSourceEffect(CounterType.M1M1.createInstance()), false));
|
||||
|
||||
// Whenever Ammit Eternal deals combat damage to a player, remove all -1/-1 counters from it.
|
||||
this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(new RemoveAllCountersSourceEffect(CounterType.M1M1), false));
|
||||
}
|
||||
|
||||
public AmmitEternal(final AmmitEternal ammitEternal) {
|
||||
super(ammitEternal);
|
||||
}
|
||||
|
||||
public AmmitEternal copy() {
|
||||
return new AmmitEternal(this);
|
||||
}
|
||||
}
|
|
@ -1,139 +1,132 @@
|
|||
/*
|
||||
* 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.cards.a;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.ActivateAsSorceryActivatedAbility;
|
||||
import mage.abilities.common.DiesCreatureTriggeredAbility;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.costs.common.SacrificeTargetCost;
|
||||
import mage.abilities.effects.ReplacementEffectImpl;
|
||||
import mage.abilities.effects.common.TransformSourceEffect;
|
||||
import mage.abilities.effects.common.continuous.BoostTargetEffect;
|
||||
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
||||
import mage.abilities.keyword.TransformAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.d.DarthVader;
|
||||
import mage.constants.*;
|
||||
import mage.counters.CounterType;
|
||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||
import mage.filter.predicate.permanent.AnotherPredicate;
|
||||
import mage.game.Game;
|
||||
import mage.game.events.GameEvent;
|
||||
import mage.game.events.ZoneChangeEvent;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.target.common.TargetControlledCreaturePermanent;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Styxo
|
||||
*/
|
||||
public class AnakinSkywalker extends CardImpl {
|
||||
|
||||
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another creature");
|
||||
|
||||
static {
|
||||
filter.add(new AnotherPredicate());
|
||||
}
|
||||
|
||||
public AnakinSkywalker(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}{B}{R}");
|
||||
addSuperType(SuperType.LEGENDARY);
|
||||
this.subtype.add("Human");
|
||||
this.subtype.add("Sith");
|
||||
this.power = new MageInt(4);
|
||||
this.toughness = new MageInt(4);
|
||||
|
||||
this.transformable = true;
|
||||
this.secondSideCardClazz = DarthVader.class;
|
||||
|
||||
// Whenever another creature dies, put a +1/+1 counter on Anakin Skywalker.
|
||||
this.addAbility(new DiesCreatureTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false, true));
|
||||
|
||||
// Sacrifice another creature: Target creature gets -1/-1 until end of turn. Activate this ability only as a sorcery.
|
||||
Ability ability = new ActivateAsSorceryActivatedAbility(Zone.BATTLEFIELD, new BoostTargetEffect(-1, -1, Duration.EndOfTurn), new SacrificeTargetCost(new TargetControlledCreaturePermanent(filter)));
|
||||
ability.addTarget(new TargetCreaturePermanent());
|
||||
this.addAbility(ability);
|
||||
|
||||
// If Anakin Skywalker would be destroyed, regenerate, then transform him instead.
|
||||
this.addAbility(new TransformAbility());
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new AnakinSkywalkerEffect()));
|
||||
|
||||
}
|
||||
|
||||
public AnakinSkywalker(final AnakinSkywalker card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AnakinSkywalker copy() {
|
||||
return new AnakinSkywalker(this);
|
||||
}
|
||||
}
|
||||
|
||||
class AnakinSkywalkerEffect extends ReplacementEffectImpl {
|
||||
|
||||
AnakinSkywalkerEffect() {
|
||||
super(Duration.WhileOnBattlefield, Outcome.Transform);
|
||||
staticText = "If {this} would die, regenerate and transform him instead";
|
||||
}
|
||||
|
||||
AnakinSkywalkerEffect(final AnakinSkywalkerEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean replaceEvent(GameEvent event, Ability source, Game game) {
|
||||
Permanent permanent = game.getPermanent(event.getTargetId());
|
||||
if (permanent != null) {
|
||||
permanent.regenerate(source.getSourceId(), game);
|
||||
return new TransformSourceEffect(true).apply(game, source);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checksEventType(GameEvent event, Game game) {
|
||||
return event.getType() == GameEvent.EventType.ZONE_CHANGE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean applies(GameEvent event, Ability source, Game game) {
|
||||
return event.getTargetId().equals(source.getSourceId()) && ((ZoneChangeEvent) event).isDiesEvent();
|
||||
}
|
||||
|
||||
@Override
|
||||
public AnakinSkywalkerEffect copy() {
|
||||
return new AnakinSkywalkerEffect(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.cards.a;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.ActivateAsSorceryActivatedAbility;
|
||||
import mage.abilities.common.DiesCreatureTriggeredAbility;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.costs.common.SacrificeTargetCost;
|
||||
import mage.abilities.effects.ReplacementEffectImpl;
|
||||
import mage.abilities.effects.common.TransformSourceEffect;
|
||||
import mage.abilities.effects.common.continuous.BoostTargetEffect;
|
||||
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
||||
import mage.abilities.keyword.TransformAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.d.DarthVader;
|
||||
import mage.constants.*;
|
||||
import mage.counters.CounterType;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.game.Game;
|
||||
import mage.game.events.GameEvent;
|
||||
import mage.game.events.ZoneChangeEvent;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.target.common.TargetControlledCreaturePermanent;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Styxo
|
||||
*/
|
||||
public class AnakinSkywalker extends CardImpl {
|
||||
|
||||
public AnakinSkywalker(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}{B}{R}");
|
||||
addSuperType(SuperType.LEGENDARY);
|
||||
this.subtype.add("Human");
|
||||
this.subtype.add("Sith");
|
||||
this.power = new MageInt(4);
|
||||
this.toughness = new MageInt(4);
|
||||
|
||||
this.transformable = true;
|
||||
this.secondSideCardClazz = DarthVader.class;
|
||||
|
||||
// Whenever another creature dies, put a +1/+1 counter on Anakin Skywalker.
|
||||
this.addAbility(new DiesCreatureTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false, true));
|
||||
|
||||
// Sacrifice another creature: Target creature gets -1/-1 until end of turn. Activate this ability only as a sorcery.
|
||||
Ability ability = new ActivateAsSorceryActivatedAbility(Zone.BATTLEFIELD, new BoostTargetEffect(-1, -1, Duration.EndOfTurn),
|
||||
new SacrificeTargetCost(new TargetControlledCreaturePermanent(StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE)));
|
||||
ability.addTarget(new TargetCreaturePermanent());
|
||||
this.addAbility(ability);
|
||||
|
||||
// If Anakin Skywalker would be destroyed, regenerate, then transform him instead.
|
||||
this.addAbility(new TransformAbility());
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new AnakinSkywalkerEffect()));
|
||||
|
||||
}
|
||||
|
||||
public AnakinSkywalker(final AnakinSkywalker card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AnakinSkywalker copy() {
|
||||
return new AnakinSkywalker(this);
|
||||
}
|
||||
}
|
||||
|
||||
class AnakinSkywalkerEffect extends ReplacementEffectImpl {
|
||||
|
||||
AnakinSkywalkerEffect() {
|
||||
super(Duration.WhileOnBattlefield, Outcome.Transform);
|
||||
staticText = "If {this} would die, regenerate and transform him instead";
|
||||
}
|
||||
|
||||
AnakinSkywalkerEffect(final AnakinSkywalkerEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean replaceEvent(GameEvent event, Ability source, Game game) {
|
||||
Permanent permanent = game.getPermanent(event.getTargetId());
|
||||
if (permanent != null) {
|
||||
permanent.regenerate(source.getSourceId(), game);
|
||||
return new TransformSourceEffect(true).apply(game, source);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checksEventType(GameEvent event, Game game) {
|
||||
return event.getType() == GameEvent.EventType.ZONE_CHANGE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean applies(GameEvent event, Ability source, Game game) {
|
||||
return event.getTargetId().equals(source.getSourceId()) && ((ZoneChangeEvent) event).isDiesEvent();
|
||||
}
|
||||
|
||||
@Override
|
||||
public AnakinSkywalkerEffect copy() {
|
||||
return new AnakinSkywalkerEffect(this);
|
||||
}
|
||||
}
|
||||
|
|
143
Mage.Sets/src/mage/cards/a/AngelOfCondemnation.java
Normal file
143
Mage.Sets/src/mage/cards/a/AngelOfCondemnation.java
Normal file
|
@ -0,0 +1,143 @@
|
|||
/*
|
||||
* 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.cards.a;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.common.delayed.AtTheBeginOfNextEndStepDelayedTriggeredAbility;
|
||||
import mage.abilities.common.delayed.OnLeaveReturnExiledToBattlefieldAbility;
|
||||
import mage.abilities.costs.common.ExertSourceCost;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.Effect;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect;
|
||||
import mage.abilities.effects.common.ExileUntilSourceLeavesEffect;
|
||||
import mage.abilities.effects.common.ReturnToBattlefieldUnderOwnerControlTargetEffect;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.abilities.keyword.VigilanceAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.filter.predicate.permanent.AnotherPredicate;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author emerald000
|
||||
*/
|
||||
public class AngelOfCondemnation extends CardImpl {
|
||||
|
||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another target creature");
|
||||
static {
|
||||
filter.add(new AnotherPredicate());
|
||||
}
|
||||
|
||||
public AngelOfCondemnation(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{W}");
|
||||
|
||||
this.subtype.add("Angel");
|
||||
this.power = new MageInt(3);
|
||||
this.toughness = new MageInt(3);
|
||||
|
||||
// Flying
|
||||
this.addAbility(FlyingAbility.getInstance());
|
||||
|
||||
// Vigilance
|
||||
this.addAbility(VigilanceAbility.getInstance());
|
||||
|
||||
// {2}{W}, {T}: Exile another target creature. Return that card to the battlefield under its owner's control at the beginning of the next end step.
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AngelOfCondemnationExileUntilEOTEffect(), new ManaCostsImpl<>("{2}{W}"));
|
||||
ability.addCost(new TapSourceCost());
|
||||
ability.addTarget(new TargetCreaturePermanent(filter));
|
||||
this.addAbility(ability);
|
||||
|
||||
// {2}{W}, {T}, Exert Angel of Condemnation: Exile another target creature until Angel of Condemnation leaves the battlefield.
|
||||
Effect effect = new ExileUntilSourceLeavesEffect("");
|
||||
effect.setText("Exile another target creature until {this} leaves the battlefield");
|
||||
ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl<>("{2}{W}"));
|
||||
ability.addCost(new TapSourceCost());
|
||||
ability.addCost(new ExertSourceCost());
|
||||
ability.addTarget(new TargetCreaturePermanent(filter));
|
||||
ability.addEffect(new CreateDelayedTriggeredAbilityEffect(new OnLeaveReturnExiledToBattlefieldAbility()));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
public AngelOfCondemnation(final AngelOfCondemnation card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AngelOfCondemnation copy() {
|
||||
return new AngelOfCondemnation(this);
|
||||
}
|
||||
}
|
||||
|
||||
class AngelOfCondemnationExileUntilEOTEffect extends OneShotEffect {
|
||||
|
||||
AngelOfCondemnationExileUntilEOTEffect() {
|
||||
super(Outcome.Detriment);
|
||||
staticText = "exile another target creature. Return that card to the battlefield under its owner's control at the beginning of the next end step";
|
||||
}
|
||||
|
||||
AngelOfCondemnationExileUntilEOTEffect(final AngelOfCondemnationExileUntilEOTEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Permanent permanent = game.getPermanent(this.getTargetPointer().getFirst(game, source));
|
||||
Player controller = game.getPlayer(source.getControllerId());
|
||||
Permanent sourcePermanent = game.getPermanentOrLKIBattlefield(source.getSourceId());
|
||||
if (controller != null && permanent != null && sourcePermanent != null) {
|
||||
if (controller.moveCardToExileWithInfo(permanent, source.getSourceId(), sourcePermanent.getIdName(), source.getSourceId(), game, Zone.BATTLEFIELD, true)) {
|
||||
//create delayed triggered ability
|
||||
Effect effect = new ReturnToBattlefieldUnderOwnerControlTargetEffect();
|
||||
effect.setText("return that card to the battlefield under its owner's control");
|
||||
effect.setTargetPointer(new FixedTarget(source.getFirstTarget(), game));
|
||||
game.addDelayedTriggeredAbility(new AtTheBeginOfNextEndStepDelayedTriggeredAbility(effect), source);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AngelOfCondemnationExileUntilEOTEffect copy() {
|
||||
return new AngelOfCondemnationExileUntilEOTEffect(this);
|
||||
}
|
||||
}
|
91
Mage.Sets/src/mage/cards/a/AppealAuthority.java
Normal file
91
Mage.Sets/src/mage/cards/a/AppealAuthority.java
Normal file
|
@ -0,0 +1,91 @@
|
|||
/*
|
||||
* 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.cards.a;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.dynamicvalue.DynamicValue;
|
||||
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
|
||||
import mage.abilities.effects.common.TapTargetEffect;
|
||||
import mage.abilities.effects.common.continuous.BoostTargetEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
|
||||
import mage.abilities.keyword.AftermathAbility;
|
||||
import mage.abilities.keyword.TrampleAbility;
|
||||
import mage.abilities.keyword.VigilanceAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.SplitCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SpellAbilityType;
|
||||
import mage.constants.TargetController;
|
||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.filter.predicate.permanent.ControllerPredicate;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public class AppealAuthority extends SplitCard {
|
||||
|
||||
public AppealAuthority(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, new CardType[]{CardType.SORCERY}, "{G}", "{1}{W}", SpellAbilityType.SPLIT_AFTERMATH);
|
||||
|
||||
// Appeal
|
||||
// Until end of turn, target creature gains trample and gets +X/+X, where X is the number of creatures you control.
|
||||
getLeftHalfCard().getSpellAbility().addEffect(new GainAbilityTargetEffect(TrampleAbility.getInstance(), Duration.EndOfTurn)
|
||||
.setText("Until end of turn, target creature gains trample"));
|
||||
DynamicValue controlledCreatures = new PermanentsOnBattlefieldCount(new FilterControlledCreaturePermanent("the number of creatures you control"));
|
||||
getLeftHalfCard().getSpellAbility().addEffect(new BoostTargetEffect(controlledCreatures, controlledCreatures, Duration.EndOfTurn, true)
|
||||
.setText("and gets +X/+X, where X is the number of creatures you control"));
|
||||
getLeftHalfCard().getSpellAbility().addTarget(new TargetCreaturePermanent());
|
||||
|
||||
// Authority
|
||||
// Aftermath
|
||||
((CardImpl) (getRightHalfCard())).addAbility(new AftermathAbility().setRuleAtTheTop(true));
|
||||
// Tap up to two target creatures your opponents control. Creatures you control gain vigilance until end of turn.
|
||||
getRightHalfCard().getSpellAbility().addEffect(new TapTargetEffect());
|
||||
FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures your opponents control");
|
||||
filter.add(new ControllerPredicate(TargetController.OPPONENT));
|
||||
getRightHalfCard().getSpellAbility().addTarget(new TargetCreaturePermanent(0, 2, filter, false));
|
||||
getRightHalfCard().getSpellAbility().addEffect(new GainAbilityControlledEffect(VigilanceAbility.getInstance(),
|
||||
Duration.EndOfTurn, new FilterControlledCreaturePermanent("creatures")));
|
||||
|
||||
}
|
||||
|
||||
public AppealAuthority(final AppealAuthority card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AppealAuthority copy() {
|
||||
return new AppealAuthority(this);
|
||||
}
|
||||
}
|
68
Mage.Sets/src/mage/cards/a/AvenOfEnduringHope.java
Normal file
68
Mage.Sets/src/mage/cards/a/AvenOfEnduringHope.java
Normal file
|
@ -0,0 +1,68 @@
|
|||
/*
|
||||
* 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.cards.a;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
import mage.abilities.effects.common.GainLifeEffect;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Archer262
|
||||
*/
|
||||
public class AvenOfEnduringHope extends CardImpl {
|
||||
|
||||
public AvenOfEnduringHope(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{W}");
|
||||
|
||||
this.subtype.add("Bird");
|
||||
this.subtype.add("Cleric");
|
||||
this.power = new MageInt(3);
|
||||
this.toughness = new MageInt(3);
|
||||
|
||||
// Flying
|
||||
this.addAbility(FlyingAbility.getInstance());
|
||||
|
||||
// When Aven of Enduring Hope enters the battlefield, you gain 3 life.
|
||||
this.addAbility(new EntersBattlefieldTriggeredAbility(new GainLifeEffect(3), false));
|
||||
}
|
||||
|
||||
public AvenOfEnduringHope(final AvenOfEnduringHope card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AvenOfEnduringHope copy() {
|
||||
return new AvenOfEnduringHope(this);
|
||||
}
|
||||
}
|
68
Mage.Sets/src/mage/cards/a/AvenReedstalker.java
Normal file
68
Mage.Sets/src/mage/cards/a/AvenReedstalker.java
Normal file
|
@ -0,0 +1,68 @@
|
|||
/*
|
||||
* 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.cards.a;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.keyword.FlashAbility;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author emerald000
|
||||
*/
|
||||
public class AvenReedstalker extends CardImpl {
|
||||
|
||||
public AvenReedstalker(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
|
||||
|
||||
this.subtype.add("Bird");
|
||||
this.subtype.add("Warrior");
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(3);
|
||||
|
||||
// Flash
|
||||
this.addAbility(FlashAbility.getInstance());
|
||||
|
||||
// Flying
|
||||
this.addAbility(FlyingAbility.getInstance());
|
||||
|
||||
}
|
||||
|
||||
public AvenReedstalker(final AvenReedstalker card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AvenReedstalker copy() {
|
||||
return new AvenReedstalker(this);
|
||||
}
|
||||
}
|
85
Mage.Sets/src/mage/cards/a/AvidReclaimer.java
Normal file
85
Mage.Sets/src/mage/cards/a/AvidReclaimer.java
Normal file
|
@ -0,0 +1,85 @@
|
|||
/*
|
||||
* 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.cards.a;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.GainLifeEffect;
|
||||
import mage.abilities.mana.BlueManaAbility;
|
||||
import mage.abilities.mana.GreenManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.common.FilterControlledPermanent;
|
||||
import mage.filter.predicate.mageobject.CardTypePredicate;
|
||||
import mage.filter.predicate.mageobject.SubtypePredicate;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author spjspj
|
||||
*/
|
||||
public class AvidReclaimer extends CardImpl {
|
||||
|
||||
private static final FilterControlledPermanent filter = new FilterControlledPermanent();
|
||||
|
||||
static {
|
||||
filter.add(new CardTypePredicate(CardType.PLANESWALKER));
|
||||
filter.add(new SubtypePredicate(SubType.NISSA));
|
||||
}
|
||||
|
||||
public AvidReclaimer(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
|
||||
|
||||
this.subtype.add("Human");
|
||||
this.subtype.add("Druid");
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(2);
|
||||
|
||||
// {T}: Add {G} or {U} to your mana pool. If you control a Nissa planeswalker, you gain 2 life.
|
||||
Ability GreenManaAbility = new GreenManaAbility();
|
||||
GreenManaAbility.addEffect(new ConditionalOneShotEffect(new GainLifeEffect(2), new PermanentsOnTheBattlefieldCondition(filter), "If you control a Nissa planeswalker, you gain 2 life."));
|
||||
this.addAbility(GreenManaAbility);
|
||||
|
||||
Ability BlueManaAbility = new BlueManaAbility();
|
||||
BlueManaAbility.addEffect(new ConditionalOneShotEffect(new GainLifeEffect(2), new PermanentsOnTheBattlefieldCondition(filter), "If you control a Nissa planeswalker, you gain 2 life."));
|
||||
this.addAbility(BlueManaAbility);
|
||||
}
|
||||
|
||||
public AvidReclaimer(final AvidReclaimer card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AvidReclaimer copy() {
|
||||
return new AvidReclaimer(this);
|
||||
}
|
||||
}
|
|
@ -27,6 +27,7 @@
|
|||
*/
|
||||
package mage.cards.a;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
|
@ -45,29 +46,20 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||
import mage.filter.common.FilterControlledPermanent;
|
||||
import mage.filter.predicate.permanent.AnotherPredicate;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.game.Game;
|
||||
import mage.players.Player;
|
||||
import mage.target.common.TargetControlledPermanent;
|
||||
import mage.target.common.TargetNonlandPermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author fireshoes
|
||||
*/
|
||||
public class AyliEternalPilgrim extends CardImpl {
|
||||
|
||||
private static final FilterControlledPermanent filter = new FilterControlledCreaturePermanent("another creature");
|
||||
static {
|
||||
filter.add(new AnotherPredicate());
|
||||
}
|
||||
|
||||
public AyliEternalPilgrim(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{B}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}{B}");
|
||||
this.addSuperType(SuperType.LEGENDARY);
|
||||
this.subtype.add("Kor");
|
||||
this.subtype.add("Cleric");
|
||||
|
@ -76,14 +68,14 @@ public class AyliEternalPilgrim extends CardImpl {
|
|||
|
||||
// Deathtouch
|
||||
this.addAbility(DeathtouchAbility.getInstance());
|
||||
|
||||
|
||||
// {1}, Sacrifice another creature: You gain life equal to the sacrificed creature's toughness.
|
||||
Effect effect = new GainLifeEffect(new SacrificeCostCreaturesToughness());
|
||||
effect.setText("You gain life equal to the sacrificed creature's toughness");
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new GenericManaCost(1));
|
||||
ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(filter)));
|
||||
ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE)));
|
||||
this.addAbility(ability);
|
||||
|
||||
|
||||
// {1}{W}{B}, Sacrifice another creature: Exile target nonland permanent. Activate this ability only if you have at least 10 life more than your starting life total.
|
||||
ability = new ConditionalActivatedAbility(
|
||||
Zone.BATTLEFIELD,
|
||||
|
@ -91,7 +83,7 @@ public class AyliEternalPilgrim extends CardImpl {
|
|||
new ManaCostsImpl("{1}{W}{B}"),
|
||||
new AyliEternalPilgrimCondition(),
|
||||
"{1}{W}{B}, Sacrifice another creature: Exile target nonland permanent. Activate this ability only if you have at least 10 life more than your starting life total");
|
||||
ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(filter)));
|
||||
ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE)));
|
||||
ability.addTarget(new TargetNonlandPermanent());
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
|
57
Mage.Sets/src/mage/cards/b/BanewhipPunisher.java
Normal file
57
Mage.Sets/src/mage/cards/b/BanewhipPunisher.java
Normal file
|
@ -0,0 +1,57 @@
|
|||
package mage.cards.b;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.common.SacrificeSourceCost;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.common.DestroyTargetEffect;
|
||||
import mage.abilities.effects.common.counter.AddCountersTargetEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Zone;
|
||||
import mage.counters.CounterType;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.filter.predicate.permanent.CounterPredicate;
|
||||
import mage.target.TargetPermanent;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
public class BanewhipPunisher extends CardImpl {
|
||||
|
||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with a -1/-1 counter on it");
|
||||
|
||||
static {
|
||||
filter.add(new CounterPredicate(CounterType.M1M1));
|
||||
}
|
||||
|
||||
public BanewhipPunisher(UUID ownerId, CardSetInfo cardSetInfo) {
|
||||
super(ownerId, cardSetInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
|
||||
subtype.add("Human");
|
||||
subtype.add("Warrior");
|
||||
power = new MageInt(2);
|
||||
toughness = new MageInt(2);
|
||||
|
||||
// When Banewhip Punisher enters the battlefield, you may put a -1/-1 counter on target creature.
|
||||
Ability etbAbility = new EntersBattlefieldTriggeredAbility(new AddCountersTargetEffect(CounterType.M1M1.createInstance(1)), true);
|
||||
etbAbility.addTarget(new TargetCreaturePermanent());
|
||||
this.addAbility(etbAbility);
|
||||
|
||||
// {B}, sacrifice Banewhip Punisher: Destroy target creature that has a -1/-1 counter on it.
|
||||
Ability destroyAbility = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DestroyTargetEffect(), new ManaCostsImpl("{B}"));
|
||||
destroyAbility.addCost(new SacrificeSourceCost());
|
||||
destroyAbility.addTarget(new TargetPermanent(filter));
|
||||
this.addAbility(destroyAbility);
|
||||
|
||||
}
|
||||
|
||||
public BanewhipPunisher(final BanewhipPunisher banewhipPunisher) {
|
||||
super(banewhipPunisher);
|
||||
}
|
||||
|
||||
public BanewhipPunisher copy() {
|
||||
return new BanewhipPunisher(this);
|
||||
}
|
||||
}
|
65
Mage.Sets/src/mage/cards/b/BeneathTheSands.java
Normal file
65
Mage.Sets/src/mage/cards/b/BeneathTheSands.java
Normal file
|
@ -0,0 +1,65 @@
|
|||
/*
|
||||
* 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.cards.b;
|
||||
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect;
|
||||
import mage.abilities.keyword.CyclingAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.filter.common.FilterBasicLandCard;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Archer262
|
||||
*/
|
||||
public class BeneathTheSands extends CardImpl {
|
||||
|
||||
public BeneathTheSands(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{G}");
|
||||
|
||||
// Search your library for a basic land card, put it onto the battlefield tapped, then shuffle your library.
|
||||
this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(new FilterBasicLandCard()), true, true));
|
||||
|
||||
// Cycling {2}
|
||||
this.addAbility(new CyclingAbility(new ManaCostsImpl("{2}")));
|
||||
}
|
||||
|
||||
public BeneathTheSands(final BeneathTheSands card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BeneathTheSands copy() {
|
||||
return new BeneathTheSands(this);
|
||||
}
|
||||
}
|
68
Mage.Sets/src/mage/cards/b/BitterbowSharpshooters.java
Normal file
68
Mage.Sets/src/mage/cards/b/BitterbowSharpshooters.java
Normal file
|
@ -0,0 +1,68 @@
|
|||
/*
|
||||
* 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.cards.b;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.keyword.VigilanceAbility;
|
||||
import mage.abilities.keyword.ReachAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author ciaccona007
|
||||
*/
|
||||
public class BitterbowSharpshooters extends CardImpl {
|
||||
|
||||
public BitterbowSharpshooters(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}");
|
||||
|
||||
this.subtype.add("Jackal");
|
||||
this.subtype.add("Archer");
|
||||
this.power = new MageInt(4);
|
||||
this.toughness = new MageInt(4);
|
||||
|
||||
// Vigilance
|
||||
this.addAbility(VigilanceAbility.getInstance());
|
||||
|
||||
// Reach
|
||||
this.addAbility(ReachAbility.getInstance());
|
||||
|
||||
}
|
||||
|
||||
public BitterbowSharpshooters(final BitterbowSharpshooters card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BitterbowSharpshooters copy() {
|
||||
return new BitterbowSharpshooters(this);
|
||||
}
|
||||
}
|
|
@ -37,28 +37,20 @@ import mage.cards.CardImpl;
|
|||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||
import mage.filter.common.FilterControlledPermanent;
|
||||
import mage.filter.predicate.permanent.AnotherPredicate;
|
||||
import mage.target.common.TargetControlledPermanent;
|
||||
import mage.target.common.TargetCreatureOrPlayer;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.filter.StaticFilters;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author fireshoes
|
||||
*/
|
||||
public class BlazingHellhound extends CardImpl {
|
||||
|
||||
private static final FilterControlledPermanent filter = new FilterControlledCreaturePermanent("another creature");
|
||||
|
||||
static {
|
||||
filter.add(new AnotherPredicate());
|
||||
}
|
||||
|
||||
public BlazingHellhound(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}{R}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}{R}");
|
||||
this.subtype.add("Elemental");
|
||||
this.subtype.add("Hound");
|
||||
this.power = new MageInt(4);
|
||||
|
@ -66,7 +58,7 @@ public class BlazingHellhound extends CardImpl {
|
|||
|
||||
// {1}, Sacrifice another creature: Blazing Hellhound deals 1 damage to target creature or player.
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1), new ManaCostsImpl("{1}"));
|
||||
ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(filter)));
|
||||
ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE)));
|
||||
ability.addTarget(new TargetCreatureOrPlayer());
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
|
|
@ -36,11 +36,10 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||
import mage.filter.predicate.permanent.AnotherPredicate;
|
||||
import mage.target.common.TargetControlledCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.filter.StaticFilters;
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -48,13 +47,8 @@ import java.util.UUID;
|
|||
*/
|
||||
public class BloodBairn extends CardImpl {
|
||||
|
||||
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another creature");
|
||||
static {
|
||||
filter.add(new AnotherPredicate());
|
||||
}
|
||||
|
||||
public BloodBairn(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
|
||||
this.subtype.add("Vampire");
|
||||
|
||||
this.power = new MageInt(2);
|
||||
|
@ -63,8 +57,8 @@ public class BloodBairn extends CardImpl {
|
|||
// Sacrifice another creature: Blood Bairn gets +2/+2 until end of turn.
|
||||
this.addAbility(new SimpleActivatedAbility(
|
||||
Zone.BATTLEFIELD,
|
||||
new BoostSourceEffect(2,2, Duration.EndOfTurn),
|
||||
new SacrificeTargetCost(new TargetControlledCreaturePermanent(1,1,filter, true))));
|
||||
new BoostSourceEffect(2, 2, Duration.EndOfTurn),
|
||||
new SacrificeTargetCost(new TargetControlledCreaturePermanent(1, 1, StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE, true))));
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -40,26 +40,19 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.Zone;
|
||||
import mage.counters.CounterType;
|
||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||
import mage.filter.common.FilterControlledPermanent;
|
||||
import mage.filter.predicate.permanent.AnotherPredicate;
|
||||
import mage.target.common.TargetControlledPermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.filter.StaticFilters;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author emerald000
|
||||
*/
|
||||
public class BloodHost extends CardImpl {
|
||||
|
||||
private static final FilterControlledPermanent filter = new FilterControlledCreaturePermanent("another creature");
|
||||
static {
|
||||
filter.add(new AnotherPredicate());
|
||||
}
|
||||
|
||||
public BloodHost(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}");
|
||||
this.subtype.add("Vampire");
|
||||
|
||||
this.power = new MageInt(3);
|
||||
|
@ -69,7 +62,7 @@ public class BloodHost extends CardImpl {
|
|||
Effect effect = new AddCountersSourceEffect(CounterType.P1P1.createInstance());
|
||||
effect.setText("Put a +1/+1 counter on {this}");
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl("{1}{B}"));
|
||||
ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(filter)));
|
||||
ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE)));
|
||||
// and you gain 2 life.
|
||||
effect = new GainLifeEffect(2);
|
||||
effect.setText("and you gain 2 life");
|
||||
|
@ -85,4 +78,4 @@ public class BloodHost extends CardImpl {
|
|||
public BloodHost copy() {
|
||||
return new BloodHost(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
66
Mage.Sets/src/mage/cards/b/BlurOfBlades.java
Normal file
66
Mage.Sets/src/mage/cards/b/BlurOfBlades.java
Normal file
|
@ -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.cards.b;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.effects.Effect;
|
||||
import mage.abilities.effects.common.DamageTargetControllerEffect;
|
||||
import mage.abilities.effects.common.counter.AddCountersTargetEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.counters.CounterType;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author ciaccona007
|
||||
*/
|
||||
public class BlurOfBlades extends CardImpl {
|
||||
|
||||
public BlurOfBlades(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{R}");
|
||||
|
||||
// Put a -1/-1 counter on target creature. Blur of Blades deals 2 damage to that creature's controller.
|
||||
getSpellAbility().addEffect(new AddCountersTargetEffect(CounterType.M1M1.createInstance(1)));
|
||||
Effect effect = new DamageTargetControllerEffect(2);
|
||||
effect.setText("{this} deals 2 damage to that creature's controller");
|
||||
getSpellAbility().addEffect(effect);
|
||||
getSpellAbility().addTarget(new TargetCreaturePermanent());
|
||||
|
||||
}
|
||||
|
||||
public BlurOfBlades(final BlurOfBlades card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlurOfBlades copy() {
|
||||
return new BlurOfBlades(this);
|
||||
}
|
||||
}
|
|
@ -47,8 +47,7 @@ import mage.constants.CardType;
|
|||
import mage.constants.Duration;
|
||||
import mage.constants.SuperType;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||
import mage.filter.predicate.permanent.AnotherPredicate;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
|
@ -61,12 +60,6 @@ import mage.watchers.common.CreaturesDiedWatcher;
|
|||
*/
|
||||
public class BontuTheGlorified extends CardImpl {
|
||||
|
||||
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another creature");
|
||||
|
||||
static {
|
||||
filter.add(new AnotherPredicate());
|
||||
}
|
||||
|
||||
public BontuTheGlorified(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
|
||||
addSuperType(SuperType.LEGENDARY);
|
||||
|
@ -89,7 +82,7 @@ public class BontuTheGlorified extends CardImpl {
|
|||
Effect effect = new GainLifeEffect(1);
|
||||
effect.setText("and you gain 1 life");
|
||||
ability.addEffect(effect);
|
||||
ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(filter)));
|
||||
ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE)));
|
||||
this.addAbility(ability);
|
||||
|
||||
}
|
||||
|
|
65
Mage.Sets/src/mage/cards/b/BontusLastReckoning.java
Normal file
65
Mage.Sets/src/mage/cards/b/BontusLastReckoning.java
Normal file
|
@ -0,0 +1,65 @@
|
|||
/*
|
||||
* 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.cards.b;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.effects.common.DestroyAllEffect;
|
||||
import mage.abilities.effects.common.DontUntapInControllersUntapStepAllEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.TargetController;
|
||||
import mage.filter.common.FilterControlledLandPermanent;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author spjspj
|
||||
*/
|
||||
public class BontusLastReckoning extends CardImpl {
|
||||
|
||||
public BontusLastReckoning(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}{B}");
|
||||
|
||||
// Destroy all creatures. Lands you control don't untap during your next untap step.
|
||||
this.getSpellAbility().addEffect(new DestroyAllEffect(new FilterCreaturePermanent()));
|
||||
this.getSpellAbility().addEffect(new DontUntapInControllersUntapStepAllEffect(
|
||||
Duration.UntilYourNextTurn, TargetController.YOU, new FilterControlledLandPermanent("Lands you control"))
|
||||
.setText("Lands you control don't untap during your next untap phase"));
|
||||
}
|
||||
|
||||
public BontusLastReckoning(final BontusLastReckoning card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BontusLastReckoning copy() {
|
||||
return new BontusLastReckoning(this);
|
||||
}
|
||||
}
|
62
Mage.Sets/src/mage/cards/b/BrambleweftBehemoth.java
Normal file
62
Mage.Sets/src/mage/cards/b/BrambleweftBehemoth.java
Normal file
|
@ -0,0 +1,62 @@
|
|||
/*
|
||||
* 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.cards.b;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.keyword.TrampleAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author spjspj
|
||||
*/
|
||||
public class BrambleweftBehemoth extends CardImpl {
|
||||
|
||||
public BrambleweftBehemoth(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}{G}");
|
||||
|
||||
this.subtype.add("Elemental");
|
||||
this.power = new MageInt(6);
|
||||
this.toughness = new MageInt(6);
|
||||
|
||||
// Trample.
|
||||
this.addAbility(TrampleAbility.getInstance());
|
||||
}
|
||||
|
||||
public BrambleweftBehemoth(final BrambleweftBehemoth card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BrambleweftBehemoth copy() {
|
||||
return new BrambleweftBehemoth(this);
|
||||
}
|
||||
}
|
75
Mage.Sets/src/mage/cards/b/BurningFistMinotaur.java
Normal file
75
Mage.Sets/src/mage/cards/b/BurningFistMinotaur.java
Normal file
|
@ -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.cards.b;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.common.DiscardCardCost;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.common.continuous.BoostSourceEffect;
|
||||
import mage.abilities.keyword.FirstStrikeAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.Zone;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public class BurningFistMinotaur extends CardImpl {
|
||||
|
||||
public BurningFistMinotaur(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
|
||||
|
||||
this.subtype.add("Minotaur");
|
||||
this.subtype.add("Wizard");
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(1);
|
||||
|
||||
// First strike
|
||||
this.addAbility(FirstStrikeAbility.getInstance());
|
||||
|
||||
// {1}{R}, Discard a card: Burning-Fist Minotaur gets +2/+0 until end of turn.
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(2, 0, Duration.EndOfTurn), new ManaCostsImpl("{1}{R}"));
|
||||
ability.addCost(new DiscardCardCost());
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
public BurningFistMinotaur(final BurningFistMinotaur card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public BurningFistMinotaur copy() {
|
||||
return new BurningFistMinotaur(this);
|
||||
}
|
||||
}
|
|
@ -47,8 +47,6 @@ import mage.constants.CardType;
|
|||
import mage.constants.Duration;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||
import mage.filter.predicate.permanent.AnotherPredicate;
|
||||
import mage.game.Game;
|
||||
import mage.players.Player;
|
||||
import mage.target.common.TargetControlledCreaturePermanent;
|
||||
|
@ -56,6 +54,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
|
|||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import mage.filter.StaticFilters;
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -63,14 +62,8 @@ import java.util.UUID;
|
|||
*/
|
||||
public class ButcherOfTheHorde extends CardImpl {
|
||||
|
||||
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another creature");
|
||||
|
||||
static {
|
||||
filter.add(new AnotherPredicate());
|
||||
}
|
||||
|
||||
public ButcherOfTheHorde(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{W}{B}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}{W}{B}");
|
||||
this.subtype.add("Demon");
|
||||
|
||||
this.power = new MageInt(5);
|
||||
|
@ -80,7 +73,8 @@ public class ButcherOfTheHorde extends CardImpl {
|
|||
this.addAbility(FlyingAbility.getInstance());
|
||||
// Sacrifice another creature: Butcher of the Horde gains your choice of vigilance, lifelink, or haste until end of turn.
|
||||
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD,
|
||||
new ButcherOfTheHordeEffect(), new SacrificeTargetCost(new TargetControlledCreaturePermanent(1,1,filter, false))));
|
||||
new ButcherOfTheHordeEffect(), new SacrificeTargetCost(
|
||||
new TargetControlledCreaturePermanent(1, 1, StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE, false))));
|
||||
}
|
||||
|
||||
public ButcherOfTheHorde(final ButcherOfTheHorde card) {
|
||||
|
@ -94,6 +88,7 @@ public class ButcherOfTheHorde extends CardImpl {
|
|||
}
|
||||
|
||||
class ButcherOfTheHordeEffect extends OneShotEffect {
|
||||
|
||||
ButcherOfTheHordeEffect() {
|
||||
super(Outcome.AddAbility);
|
||||
staticText = "{this} gains your choice of vigilance, lifelink, or haste until end of turn";
|
||||
|
@ -148,4 +143,4 @@ class ButcherOfTheHordeEffect extends OneShotEffect {
|
|||
return new ButcherOfTheHordeEffect(this);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -36,12 +36,10 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||
import mage.filter.common.FilterControlledPermanent;
|
||||
import mage.filter.predicate.permanent.AnotherPredicate;
|
||||
import mage.target.common.TargetControlledPermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.filter.StaticFilters;
|
||||
|
||||
/**
|
||||
* Gatecrash FAQ (01.2013) You choose the color when the ability resolves.
|
||||
|
@ -50,14 +48,8 @@ import java.util.UUID;
|
|||
*/
|
||||
public class CartelAristocrat extends CardImpl {
|
||||
|
||||
private static final FilterControlledPermanent filter = new FilterControlledCreaturePermanent("another creature");
|
||||
|
||||
static {
|
||||
filter.add(new AnotherPredicate());
|
||||
}
|
||||
|
||||
public CartelAristocrat(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{W}{B}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}{B}");
|
||||
this.subtype.add("Human");
|
||||
this.subtype.add("Advisor");
|
||||
|
||||
|
@ -66,7 +58,8 @@ public class CartelAristocrat extends CardImpl {
|
|||
|
||||
// Sacrifice another creature: Cartel Aristocrat gains protection from the color of your choice until end of turn.
|
||||
this.addAbility(new SimpleActivatedAbility(
|
||||
Zone.BATTLEFIELD, new GainProtectionFromColorSourceEffect(Duration.EndOfTurn), new SacrificeTargetCost(new TargetControlledPermanent(filter))));
|
||||
Zone.BATTLEFIELD, new GainProtectionFromColorSourceEffect(Duration.EndOfTurn),
|
||||
new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE))));
|
||||
}
|
||||
|
||||
public CartelAristocrat(final CartelAristocrat card) {
|
||||
|
|
|
@ -31,12 +31,10 @@ import mage.abilities.effects.common.ExileCardYouChooseTargetOpponentEffect;
|
|||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.predicate.Predicates;
|
||||
import mage.filter.predicate.mageobject.CardTypePredicate;
|
||||
import mage.target.common.TargetOpponent;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.filter.StaticFilters;
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -44,17 +42,11 @@ import java.util.UUID;
|
|||
*/
|
||||
public class Castigate extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterCard("a nonland card");
|
||||
|
||||
static {
|
||||
filter.add(Predicates.not(new CardTypePredicate(CardType.LAND)));
|
||||
}
|
||||
|
||||
public Castigate(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.SORCERY},"{W}{B}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{W}{B}");
|
||||
|
||||
// Target opponent reveals his or her hand. You choose a nonland card from it and exile that card.
|
||||
this.getSpellAbility().addEffect(new ExileCardYouChooseTargetOpponentEffect(filter));
|
||||
this.getSpellAbility().addEffect(new ExileCardYouChooseTargetOpponentEffect(StaticFilters.FILTER_CARD_A_NON_LAND));
|
||||
this.getSpellAbility().addTarget(new TargetOpponent());
|
||||
}
|
||||
|
||||
|
|
81
Mage.Sets/src/mage/cards/c/ChampionOfWits.java
Normal file
81
Mage.Sets/src/mage/cards/c/ChampionOfWits.java
Normal file
|
@ -0,0 +1,81 @@
|
|||
/*
|
||||
* 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.cards.c;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.dynamicvalue.DynamicValue;
|
||||
import mage.abilities.dynamicvalue.common.SourcePermanentPowerCount;
|
||||
import mage.abilities.effects.Effect;
|
||||
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||
import mage.abilities.effects.common.discard.DiscardControllerEffect;
|
||||
import mage.abilities.keyword.EternalizeAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author spjspj
|
||||
*/
|
||||
public class ChampionOfWits extends CardImpl {
|
||||
|
||||
public ChampionOfWits(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
|
||||
|
||||
this.subtype.add("Naga");
|
||||
this.subtype.add("Wizard");
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(1);
|
||||
|
||||
// When Champion of Wits enters the battlefield, you may draw cards equal to its power. If you do, discard two cards
|
||||
DynamicValue xValue = new SourcePermanentPowerCount();
|
||||
Effect effect = new DrawCardSourceControllerEffect(xValue);
|
||||
effect.setText("you may draw cards equal to its power");
|
||||
Ability ability = new EntersBattlefieldTriggeredAbility(effect, true);
|
||||
effect = new DiscardControllerEffect(2);
|
||||
effect.setText("If you do, discard two cards");
|
||||
ability.addEffect(effect);
|
||||
this.addAbility(ability);
|
||||
|
||||
// Eternalize {5}{U}{U}
|
||||
this.addAbility(new EternalizeAbility(new ManaCostsImpl("{5}{U}{U}"), this));
|
||||
}
|
||||
|
||||
public ChampionOfWits(final ChampionOfWits card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChampionOfWits copy() {
|
||||
return new ChampionOfWits(this);
|
||||
}
|
||||
}
|
121
Mage.Sets/src/mage/cards/c/ChandrasDefeat.java
Normal file
121
Mage.Sets/src/mage/cards/c/ChandrasDefeat.java
Normal file
|
@ -0,0 +1,121 @@
|
|||
/*
|
||||
* 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.cards.c;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.ObjectColor;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.predicate.Predicates;
|
||||
import mage.filter.predicate.mageobject.CardTypePredicate;
|
||||
import mage.filter.predicate.mageobject.ColorPredicate;
|
||||
import mage.filter.predicate.mageobject.SubtypePredicate;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
import mage.target.TargetPermanent;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author spjspj
|
||||
*/
|
||||
public class ChandrasDefeat extends CardImpl {
|
||||
|
||||
private final static FilterPermanent filter = new FilterPermanent("creature or planeswalker");
|
||||
|
||||
static {
|
||||
filter.add(new ColorPredicate(ObjectColor.RED));
|
||||
filter.add(Predicates.or(new CardTypePredicate(CardType.CREATURE), new CardTypePredicate(CardType.PLANESWALKER)));
|
||||
}
|
||||
|
||||
public ChandrasDefeat(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{R}");
|
||||
|
||||
// Chandra's Defeat deals 5 damage to target red creature or red planeswalker. If it was a Chandra planeswalker, you may discard a card. If you do, draw a card.
|
||||
this.getSpellAbility().addEffect(new ChandrasDefeatEffect());
|
||||
this.getSpellAbility().addTarget(new TargetPermanent(filter));
|
||||
}
|
||||
|
||||
public ChandrasDefeat(final ChandrasDefeat card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChandrasDefeat copy() {
|
||||
return new ChandrasDefeat(this);
|
||||
}
|
||||
}
|
||||
|
||||
class ChandrasDefeatEffect extends OneShotEffect {
|
||||
|
||||
private static final FilterPermanent filter = new FilterPermanent();
|
||||
|
||||
static {
|
||||
filter.add(new CardTypePredicate(CardType.PLANESWALKER));
|
||||
filter.add(new SubtypePredicate(SubType.CHANDRA));
|
||||
}
|
||||
|
||||
public ChandrasDefeatEffect() {
|
||||
super(Outcome.Damage);
|
||||
this.staticText = "{this} deals 5 damage to target red creature or red planeswalker. If it was a Chandra planeswalker, you may discard a card. If you do, draw a card.";
|
||||
}
|
||||
|
||||
public ChandrasDefeatEffect(final ChandrasDefeatEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChandrasDefeatEffect copy() {
|
||||
return new ChandrasDefeatEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Permanent permanent = game.getPermanent(source.getFirstTarget());
|
||||
Player controller = game.getPlayer(source.getControllerId());
|
||||
|
||||
if (permanent != null) {
|
||||
permanent.damage(5, source.getSourceId(), game, false, true);
|
||||
|
||||
// If it was a Chandra planeswalker, you may discard a card. If you do, draw a card
|
||||
if (filter.match(permanent, game) && controller != null
|
||||
&& controller.chooseUse(outcome, "Discard a card and draw a card?", source, game)) {
|
||||
controller.discard(1, false, source, game);
|
||||
controller.drawCards(1, game);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
36
Mage.Sets/src/mage/cards/c/ChaosMaw.java
Normal file
36
Mage.Sets/src/mage/cards/c/ChaosMaw.java
Normal file
|
@ -0,0 +1,36 @@
|
|||
package mage.cards.c;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
import mage.abilities.effects.common.DamageAllEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.filter.predicate.permanent.AnotherPredicate;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class ChaosMaw extends CardImpl {
|
||||
private static FilterCreaturePermanent filter = new FilterCreaturePermanent("other creature");
|
||||
static {
|
||||
filter.add(new AnotherPredicate());
|
||||
}
|
||||
public ChaosMaw(UUID ownerId, CardSetInfo cardSetInfo){
|
||||
super(ownerId, cardSetInfo, new CardType[]{CardType.CREATURE}, "{5}{R}{R}");
|
||||
subtype.add("Hellion");
|
||||
power = new MageInt(6);
|
||||
toughness = new MageInt(6);
|
||||
|
||||
// When Chaos Maw enters the battlefield, it deals 3 damage to each other creature
|
||||
addAbility(new EntersBattlefieldTriggeredAbility(new DamageAllEffect(3, filter)));
|
||||
}
|
||||
|
||||
public ChaosMaw(final ChaosMaw chaosMaw){
|
||||
super(chaosMaw);
|
||||
}
|
||||
|
||||
public ChaosMaw copy(){
|
||||
return new ChaosMaw(this);
|
||||
}
|
||||
}
|
117
Mage.Sets/src/mage/cards/c/Chaosphere.java
Normal file
117
Mage.Sets/src/mage/cards/c/Chaosphere.java
Normal file
|
@ -0,0 +1,117 @@
|
|||
/*
|
||||
* 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.cards.c;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.effects.RestrictionEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityAllEffect;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.abilities.keyword.ReachAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SuperType;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.filter.predicate.Predicates;
|
||||
import mage.filter.predicate.mageobject.AbilityPredicate;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jeffwadsworth
|
||||
*/
|
||||
public class Chaosphere extends CardImpl {
|
||||
|
||||
static final private FilterCreaturePermanent filterCreature = new FilterCreaturePermanent();
|
||||
static final private String rule = "Creatures without flying have reach.";
|
||||
|
||||
static {
|
||||
filterCreature.add(Predicates.not(new AbilityPredicate(FlyingAbility.class)));
|
||||
}
|
||||
|
||||
public Chaosphere(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}");
|
||||
|
||||
addSuperType(SuperType.WORLD);
|
||||
|
||||
// Creatures with flying can block only creatures with flying.
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ChaosphereEffect()));
|
||||
|
||||
// Creatures without flying have reach.
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(ReachAbility.getInstance(), Duration.WhileOnBattlefield, filterCreature, rule)));
|
||||
|
||||
}
|
||||
|
||||
public Chaosphere(final Chaosphere card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Chaosphere copy() {
|
||||
return new Chaosphere(this);
|
||||
}
|
||||
}
|
||||
|
||||
class ChaosphereEffect extends RestrictionEffect {
|
||||
|
||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Creatures with flying");
|
||||
|
||||
static {
|
||||
filter.add(new AbilityPredicate(FlyingAbility.class));
|
||||
}
|
||||
|
||||
public ChaosphereEffect() {
|
||||
super(Duration.WhileOnBattlefield);
|
||||
staticText = "creatures with flying can block only creatures with flying";
|
||||
}
|
||||
|
||||
public ChaosphereEffect(final ChaosphereEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean applies(Permanent permanent, Ability source, Game game) {
|
||||
return filter.match(permanent, source.getSourceId(), source.getControllerId(), game);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) {
|
||||
return attacker.hasAbility(FlyingAbility.getInstance().getId(), game);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChaosphereEffect copy() {
|
||||
return new ChaosphereEffect(this);
|
||||
}
|
||||
|
||||
}
|
|
@ -27,23 +27,17 @@
|
|||
*/
|
||||
package mage.cards.c;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.Mode;
|
||||
import mage.abilities.costs.mana.GenericManaCost;
|
||||
import java.util.UUID;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.dynamicvalue.common.CardsInControllerGraveyardCount;
|
||||
import mage.abilities.effects.Effect;
|
||||
import mage.abilities.effects.common.CounterUnlessPaysEffect;
|
||||
import mage.abilities.keyword.MadnessAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.game.Game;
|
||||
import mage.game.stack.StackObject;
|
||||
import mage.players.Player;
|
||||
import mage.target.TargetSpell;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author magenoxx_at_gmail.com
|
||||
|
@ -53,13 +47,14 @@ public class CircularLogic extends CardImpl {
|
|||
public CircularLogic(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{U}");
|
||||
|
||||
|
||||
// Counter target spell unless its controller pays {1} for each card in your graveyard.
|
||||
this.getSpellAbility().addEffect(new CircularLogicCounterUnlessPaysEffect());
|
||||
Effect effect = new CounterUnlessPaysEffect(new CardsInControllerGraveyardCount());
|
||||
effect.setText("Counter target spell unless its controller pays {1} for each card in your graveyard");
|
||||
this.getSpellAbility().addEffect(effect);
|
||||
this.getSpellAbility().addTarget(new TargetSpell());
|
||||
|
||||
// Madness {U}
|
||||
this.addAbility(new MadnessAbility(this, new ManaCostsImpl("{U}")));
|
||||
this.addAbility(new MadnessAbility(this, new ManaCostsImpl<>("{U}")));
|
||||
}
|
||||
|
||||
public CircularLogic(final CircularLogic card) {
|
||||
|
@ -71,47 +66,3 @@ public class CircularLogic extends CardImpl {
|
|||
return new CircularLogic(this);
|
||||
}
|
||||
}
|
||||
|
||||
class CircularLogicCounterUnlessPaysEffect extends OneShotEffect {
|
||||
|
||||
public CircularLogicCounterUnlessPaysEffect() {
|
||||
super(Outcome.Detriment);
|
||||
}
|
||||
|
||||
public CircularLogicCounterUnlessPaysEffect(final CircularLogicCounterUnlessPaysEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CircularLogicCounterUnlessPaysEffect copy() {
|
||||
return new CircularLogicCounterUnlessPaysEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
StackObject spell = game.getStack().getStackObject(targetPointer.getFirst(game, source));
|
||||
if (spell != null) {
|
||||
Player player = game.getPlayer(spell.getControllerId());
|
||||
Player controller = game.getPlayer(source.getControllerId());
|
||||
if (player != null && controller != null) {
|
||||
int amount = controller.getGraveyard().size();
|
||||
if (amount == 0) {
|
||||
game.informPlayers("Circular Logic: no cards in controller's graveyard.");
|
||||
} else {
|
||||
GenericManaCost cost = new GenericManaCost(amount);
|
||||
if (!cost.pay(source, game, spell.getControllerId(), spell.getControllerId(), false)) {
|
||||
game.informPlayers("Circular Logic: cost wasn't payed - countering target spell.");
|
||||
return game.getStack().counter(source.getFirstTarget(), source.getSourceId(), game);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getText(Mode mode) {
|
||||
return "Counter target spell unless its controller pays {1} for each card in your graveyard";
|
||||
}
|
||||
|
||||
}
|
||||
|
|
88
Mage.Sets/src/mage/cards/c/ClaimFame.java
Normal file
88
Mage.Sets/src/mage/cards/c/ClaimFame.java
Normal file
|
@ -0,0 +1,88 @@
|
|||
/*
|
||||
* 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.cards.c;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect;
|
||||
import mage.abilities.effects.common.continuous.BoostTargetEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
|
||||
import mage.abilities.keyword.AftermathAbility;
|
||||
import mage.abilities.keyword.HasteAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.SplitCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SpellAbilityType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.common.FilterCreatureCard;
|
||||
import mage.filter.predicate.mageobject.ConvertedManaCostPredicate;
|
||||
import mage.target.common.TargetCardInYourGraveyard;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public class ClaimFame extends SplitCard {
|
||||
|
||||
private static final FilterCard filter = new FilterCreatureCard("creature card with converted mana cost 2 or less from your graveyard");
|
||||
|
||||
static {
|
||||
filter.add(new ConvertedManaCostPredicate(ComparisonType.FEWER_THAN, 3));
|
||||
}
|
||||
|
||||
public ClaimFame(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, new CardType[]{CardType.SORCERY}, "{B}", "{1}{R}", SpellAbilityType.SPLIT_AFTERMATH);
|
||||
|
||||
// Claim
|
||||
// Return target creature card with converted mana cost 2 or less from your graveyard to the battlefield.
|
||||
getLeftHalfCard().getSpellAbility().addEffect(new ReturnFromGraveyardToBattlefieldTargetEffect());
|
||||
getLeftHalfCard().getSpellAbility().addTarget(new TargetCardInYourGraveyard(filter));
|
||||
|
||||
// Fame
|
||||
// Aftermath
|
||||
((CardImpl) (getRightHalfCard())).addAbility(new AftermathAbility().setRuleAtTheTop(true));
|
||||
// Target creature gets +2/+0 and gains haste until end of turn.
|
||||
getRightHalfCard().getSpellAbility().addEffect(new BoostTargetEffect(2, 0, Duration.EndOfTurn));
|
||||
getRightHalfCard().getSpellAbility().addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn)
|
||||
.setText("and gains haste until end of turn"));
|
||||
getRightHalfCard().getSpellAbility().addTarget(new TargetCreaturePermanent());
|
||||
|
||||
}
|
||||
|
||||
public ClaimFame(final ClaimFame card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ClaimFame copy() {
|
||||
return new ClaimFame(this);
|
||||
}
|
||||
}
|
72
Mage.Sets/src/mage/cards/c/ConsignOblivion.java
Normal file
72
Mage.Sets/src/mage/cards/c/ConsignOblivion.java
Normal file
|
@ -0,0 +1,72 @@
|
|||
/*
|
||||
* 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.cards.c;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.effects.common.ReturnToHandTargetEffect;
|
||||
import mage.abilities.effects.common.discard.DiscardTargetEffect;
|
||||
import mage.abilities.keyword.AftermathAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.SplitCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SpellAbilityType;
|
||||
import mage.target.common.TargetNonlandPermanent;
|
||||
import mage.target.common.TargetOpponent;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public class ConsignOblivion extends SplitCard {
|
||||
|
||||
public ConsignOblivion(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, new CardType[]{CardType.SORCERY}, "{1}{U}", "{4}{B}", SpellAbilityType.SPLIT_AFTERMATH);
|
||||
|
||||
// Return target nonland permanent to its owner's hand.
|
||||
getLeftHalfCard().getSpellAbility().addEffect(new ReturnToHandTargetEffect());
|
||||
getLeftHalfCard().getSpellAbility().addTarget(new TargetNonlandPermanent());
|
||||
|
||||
// Oblivion {4}{B}
|
||||
// Sorcery
|
||||
// Aftermath
|
||||
((CardImpl) (getRightHalfCard())).addAbility(new AftermathAbility().setRuleAtTheTop(true));
|
||||
// Target opponent discards two cards.
|
||||
getRightHalfCard().getSpellAbility().addEffect(new DiscardTargetEffect(2));
|
||||
getRightHalfCard().getSpellAbility().addTarget(new TargetOpponent());
|
||||
}
|
||||
|
||||
public ConsignOblivion(final ConsignOblivion card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ConsignOblivion copy() {
|
||||
return new ConsignOblivion(this);
|
||||
}
|
||||
}
|
|
@ -38,11 +38,10 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||
import mage.filter.predicate.permanent.AnotherPredicate;
|
||||
import mage.target.common.TargetControlledCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.filter.StaticFilters;
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -50,13 +49,8 @@ import java.util.UUID;
|
|||
*/
|
||||
public class CorpseBlockade extends CardImpl {
|
||||
|
||||
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another creature");
|
||||
static {
|
||||
filter.add(new AnotherPredicate());
|
||||
}
|
||||
|
||||
public CorpseBlockade(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{B}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
|
||||
this.subtype.add("Zombie");
|
||||
|
||||
this.power = new MageInt(1);
|
||||
|
@ -69,7 +63,7 @@ public class CorpseBlockade extends CardImpl {
|
|||
this.addAbility(new SimpleActivatedAbility(
|
||||
Zone.BATTLEFIELD,
|
||||
new GainAbilitySourceEffect(DeathtouchAbility.getInstance(), Duration.EndOfTurn),
|
||||
new SacrificeTargetCost(new TargetControlledCreaturePermanent(1,1,filter, true))));
|
||||
new SacrificeTargetCost(new TargetControlledCreaturePermanent(1, 1, StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE, true))));
|
||||
}
|
||||
|
||||
public CorpseBlockade(final CorpseBlockade card) {
|
||||
|
|
69
Mage.Sets/src/mage/cards/c/CountervailingWinds.java
Normal file
69
Mage.Sets/src/mage/cards/c/CountervailingWinds.java
Normal file
|
@ -0,0 +1,69 @@
|
|||
/*
|
||||
* 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.cards.c;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.costs.mana.GenericManaCost;
|
||||
import mage.abilities.dynamicvalue.common.CardsInControllerGraveyardCount;
|
||||
import mage.abilities.effects.Effect;
|
||||
import mage.abilities.effects.common.CounterUnlessPaysEffect;
|
||||
import mage.abilities.keyword.CyclingAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.target.TargetSpell;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author emerald000
|
||||
*/
|
||||
public class CountervailingWinds extends CardImpl {
|
||||
|
||||
public CountervailingWinds(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{U}");
|
||||
|
||||
// Counter target spell unless its controller pays {1} for each card in your graveyard.
|
||||
Effect effect = new CounterUnlessPaysEffect(new CardsInControllerGraveyardCount());
|
||||
effect.setText("Counter target spell unless its controller pays {1} for each card in your graveyard");
|
||||
this.getSpellAbility().addEffect(effect);
|
||||
this.getSpellAbility().addTarget(new TargetSpell());
|
||||
|
||||
// Cycling {2}
|
||||
this.addAbility(new CyclingAbility(new GenericManaCost(2)));
|
||||
|
||||
}
|
||||
|
||||
public CountervailingWinds(final CountervailingWinds card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CountervailingWinds copy() {
|
||||
return new CountervailingWinds(this);
|
||||
}
|
||||
}
|
68
Mage.Sets/src/mage/cards/c/CrashThrough.java
Normal file
68
Mage.Sets/src/mage/cards/c/CrashThrough.java
Normal file
|
@ -0,0 +1,68 @@
|
|||
/*
|
||||
* 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.cards.c;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityAllEffect;
|
||||
import mage.abilities.keyword.TrampleAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.TargetController;
|
||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.filter.predicate.permanent.ControllerPredicate;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author ciaccona007
|
||||
*/
|
||||
public class CrashThrough extends CardImpl {
|
||||
|
||||
public CrashThrough(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{R}");
|
||||
|
||||
|
||||
// Creatures you control gain trample until end of turn.
|
||||
getSpellAbility().addEffect(new GainAbilityAllEffect(TrampleAbility.getInstance(), Duration.EndOfTurn, new FilterControlledCreaturePermanent(), "Creatures you control gain trample until end of turn"));
|
||||
|
||||
// Draw a card.
|
||||
getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1));
|
||||
}
|
||||
|
||||
public CrashThrough(final CrashThrough card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CrashThrough copy() {
|
||||
return new CrashThrough(this);
|
||||
}
|
||||
}
|
102
Mage.Sets/src/mage/cards/c/CrestedSunmare.java
Normal file
102
Mage.Sets/src/mage/cards/c/CrestedSunmare.java
Normal file
|
@ -0,0 +1,102 @@
|
|||
/*
|
||||
* 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.cards.c;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.BeginningOfEndStepTriggeredAbility;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.condition.common.YouGainedLifeCondition;
|
||||
import mage.abilities.decorator.ConditionalTriggeredAbility;
|
||||
import mage.abilities.effects.common.CreateTokenEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityAllEffect;
|
||||
import mage.abilities.keyword.IndestructibleAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.TargetController;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.common.FilterControlledPermanent;
|
||||
import mage.filter.predicate.mageobject.SubtypePredicate;
|
||||
import mage.game.permanent.token.Token;
|
||||
import mage.watchers.common.PlayerGainedLifeWatcher;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author emerald000
|
||||
*/
|
||||
public class CrestedSunmare extends CardImpl {
|
||||
|
||||
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Horses you control");
|
||||
static {
|
||||
filter.add(new SubtypePredicate(SubType.HORSE));
|
||||
}
|
||||
|
||||
public CrestedSunmare(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}{W}");
|
||||
|
||||
this.subtype.add("Horse");
|
||||
this.power = new MageInt(5);
|
||||
this.toughness = new MageInt(5);
|
||||
|
||||
// Other Horses you control have indestructible.
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(IndestructibleAbility.getInstance(), Duration.WhileOnBattlefield, filter, true)));
|
||||
|
||||
// At the beginning of each end step, if you gained life this turn, create a 5/5 white Horse creature token.
|
||||
this.addAbility(
|
||||
new ConditionalTriggeredAbility(
|
||||
new BeginningOfEndStepTriggeredAbility(new CreateTokenEffect(new CrestedSunmareToken()), TargetController.ANY, false),
|
||||
new YouGainedLifeCondition(ComparisonType.MORE_THAN, 0),
|
||||
"At the beginning of each end step, if you gained life this turn, create a 5/5 white Horse creature token."),
|
||||
new PlayerGainedLifeWatcher());
|
||||
}
|
||||
|
||||
public CrestedSunmare(final CrestedSunmare card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CrestedSunmare copy() {
|
||||
return new CrestedSunmare(this);
|
||||
}
|
||||
}
|
||||
|
||||
class CrestedSunmareToken extends Token {
|
||||
|
||||
CrestedSunmareToken() {
|
||||
super("Horse", "5/5 white Horse creature token");
|
||||
power = new MageInt(5);
|
||||
toughness = new MageInt(5);
|
||||
color.setWhite(true);
|
||||
subtype.add("Horse");
|
||||
cardType.add(CardType.CREATURE);
|
||||
}
|
||||
}
|
77
Mage.Sets/src/mage/cards/c/CrookOfComdemnation.java
Normal file
77
Mage.Sets/src/mage/cards/c/CrookOfComdemnation.java
Normal file
|
@ -0,0 +1,77 @@
|
|||
/*
|
||||
* 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.cards.c;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.common.ExileSourceCost;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.common.ExileGraveyardAllPlayersEffect;
|
||||
import mage.abilities.effects.common.ExileTargetEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Zone;
|
||||
import mage.target.common.TargetCardInGraveyard;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jeffwadsworth
|
||||
*/
|
||||
public class CrookOfComdemnation extends CardImpl {
|
||||
|
||||
private UUID exileId = UUID.randomUUID();
|
||||
|
||||
public CrookOfComdemnation(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
|
||||
|
||||
|
||||
// {1}, {t}: Exile target card from a graveyard.
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ExileTargetEffect(), new ManaCostsImpl("{1}"));
|
||||
ability.addCost(new TapSourceCost());
|
||||
ability.addTarget(new TargetCardInGraveyard());
|
||||
this.addAbility(ability);
|
||||
|
||||
// {1}, Exile Crook of Condemnation: Exile all cards from all graveyards.
|
||||
Ability ability2 = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ExileGraveyardAllPlayersEffect(), new ManaCostsImpl("{1}"));
|
||||
ability2.addCost(new ExileSourceCost());
|
||||
this.addAbility(ability2);
|
||||
|
||||
}
|
||||
|
||||
public CrookOfComdemnation(final CrookOfComdemnation card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CrookOfComdemnation copy() {
|
||||
return new CrookOfComdemnation(this);
|
||||
}
|
||||
}
|
77
Mage.Sets/src/mage/cards/c/CrookOfCondemnation.java
Normal file
77
Mage.Sets/src/mage/cards/c/CrookOfCondemnation.java
Normal file
|
@ -0,0 +1,77 @@
|
|||
/*
|
||||
* 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.cards.c;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.common.ExileSourceCost;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.common.ExileGraveyardAllPlayersEffect;
|
||||
import mage.abilities.effects.common.ExileTargetEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Zone;
|
||||
import mage.target.common.TargetCardInGraveyard;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jeffwadsworth
|
||||
*/
|
||||
public class CrookOfCondemnation extends CardImpl {
|
||||
|
||||
private UUID exileId = UUID.randomUUID();
|
||||
|
||||
public CrookOfCondemnation(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{2}");
|
||||
|
||||
|
||||
// {1}, {t}: Exile target card from a graveyard.
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ExileTargetEffect(), new ManaCostsImpl("{1}"));
|
||||
ability.addCost(new TapSourceCost());
|
||||
ability.addTarget(new TargetCardInGraveyard());
|
||||
this.addAbility(ability);
|
||||
|
||||
// {1}, Exile Crook of Condemnation: Exile all cards from all graveyards.
|
||||
Ability ability2 = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ExileGraveyardAllPlayersEffect(), new ManaCostsImpl("{1}"));
|
||||
ability2.addCost(new ExileSourceCost());
|
||||
this.addAbility(ability2);
|
||||
|
||||
}
|
||||
|
||||
public CrookOfCondemnation(final CrookOfCondemnation card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CrookOfCondemnation copy() {
|
||||
return new CrookOfCondemnation(this);
|
||||
}
|
||||
}
|
|
@ -27,16 +27,12 @@
|
|||
*/
|
||||
package mage.cards.c;
|
||||
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.PlayLandAbility;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.effects.ContinuousEffectImpl;
|
||||
import mage.cards.Card;
|
||||
import mage.abilities.effects.common.ruleModifying.PlayLandsFromGraveyardEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.*;
|
||||
import mage.game.Game;
|
||||
import mage.players.Player;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Zone;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
@ -50,7 +46,7 @@ public class CrucibleOfWorlds extends CardImpl {
|
|||
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
|
||||
|
||||
// You may play land cards from your graveyard.
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CrucibleOfWorldsEffect()));
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new PlayLandsFromGraveyardEffect()));
|
||||
}
|
||||
|
||||
public CrucibleOfWorlds(final CrucibleOfWorlds card) {
|
||||
|
@ -62,45 +58,3 @@ public class CrucibleOfWorlds extends CardImpl {
|
|||
return new CrucibleOfWorlds(this);
|
||||
}
|
||||
}
|
||||
|
||||
class CrucibleOfWorldsEffect extends ContinuousEffectImpl {
|
||||
|
||||
public CrucibleOfWorldsEffect() {
|
||||
super(Duration.WhileOnBattlefield, Layer.AbilityAddingRemovingEffects_6, SubLayer.NA, Outcome.AddAbility);
|
||||
this.staticText = "You may play land cards from your graveyard";
|
||||
}
|
||||
|
||||
public CrucibleOfWorldsEffect(final CrucibleOfWorldsEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CrucibleOfWorldsEffect copy() {
|
||||
return new CrucibleOfWorldsEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Player player = game.getPlayer(source.getControllerId());
|
||||
if (player != null) {
|
||||
for (UUID cardId: player.getGraveyard()) {
|
||||
Card card = game.getCard(cardId);
|
||||
if(card != null && card.isLand()){
|
||||
PlayLandFromGraveyardAbility ability = new PlayLandFromGraveyardAbility(card.getName());
|
||||
ability.setSourceId(cardId);
|
||||
ability.setControllerId(card.getOwnerId());
|
||||
game.getState().addOtherAbility(card, ability);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
class PlayLandFromGraveyardAbility extends PlayLandAbility{
|
||||
PlayLandFromGraveyardAbility(String name){
|
||||
super(name);
|
||||
zone = Zone.GRAVEYARD;
|
||||
}
|
||||
}
|
72
Mage.Sets/src/mage/cards/c/CunningSurvivor.java
Normal file
72
Mage.Sets/src/mage/cards/c/CunningSurvivor.java
Normal file
|
@ -0,0 +1,72 @@
|
|||
/*
|
||||
* 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.cards.c;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.CycleOrDiscardControllerTriggeredAbility;
|
||||
import mage.abilities.effects.Effect;
|
||||
import mage.abilities.effects.common.combat.CantBeBlockedSourceEffect;
|
||||
import mage.abilities.effects.common.continuous.BoostSourceEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author emerald000
|
||||
*/
|
||||
public class CunningSurvivor extends CardImpl {
|
||||
|
||||
public CunningSurvivor(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{U}");
|
||||
|
||||
this.subtype.add("Human");
|
||||
this.subtype.add("Warrior");
|
||||
this.power = new MageInt(1);
|
||||
this.toughness = new MageInt(3);
|
||||
|
||||
// Whenever you cycle or discard a card, Cunning Survivor gets +1/+0 until end of turn and can't be blocked this turn.
|
||||
Ability ability = new CycleOrDiscardControllerTriggeredAbility(new BoostSourceEffect(1, 0, Duration.EndOfTurn));
|
||||
Effect effect = new CantBeBlockedSourceEffect(Duration.EndOfTurn);
|
||||
effect.setText("and can't be blocked this turn");
|
||||
ability.addEffect(effect);
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
public CunningSurvivor(final CunningSurvivor card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CunningSurvivor copy() {
|
||||
return new CunningSurvivor(this);
|
||||
}
|
||||
}
|
|
@ -27,6 +27,7 @@
|
|||
*/
|
||||
package mage.cards.c;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.TriggeredAbilityImpl;
|
||||
import mage.abilities.effects.common.AttachEffect;
|
||||
|
@ -46,8 +47,6 @@ import mage.players.Player;
|
|||
import mage.target.TargetPlayer;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author BetaSteward
|
||||
|
@ -55,11 +54,10 @@ import java.util.UUID;
|
|||
public class CurseOfOblivion extends CardImpl {
|
||||
|
||||
public CurseOfOblivion(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{3}{B}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{3}{B}");
|
||||
this.subtype.add("Aura");
|
||||
this.subtype.add("Curse");
|
||||
|
||||
|
||||
// Enchant player
|
||||
TargetPlayer target = new TargetPlayer();
|
||||
this.getSpellAbility().addTarget(target);
|
||||
|
@ -119,4 +117,4 @@ class CurseOfOblivionAbility extends TriggeredAbilityImpl {
|
|||
return "At the beginning of enchanted player's upkeep, that player exiles two cards from his or her graveyard.";
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -150,14 +150,15 @@ class DarkIntimationsEffect extends OneShotEffect {
|
|||
}
|
||||
}
|
||||
TargetCardInYourGraveyard target = new TargetCardInYourGraveyard(filterCard);
|
||||
if (target.canChoose(source.getSourceId(), source.getControllerId(), game) && controller.choose(Outcome.ReturnToHand, target, source.getSourceId(), game)) {
|
||||
if (target.canChoose(source.getSourceId(), source.getControllerId(), game)
|
||||
&& controller.choose(Outcome.ReturnToHand, target, source.getSourceId(), game)) {
|
||||
Card card = game.getCard(target.getFirstTarget());
|
||||
if (card == null) {
|
||||
return false;
|
||||
}
|
||||
controller.moveCards(card, Zone.HAND, source, game);
|
||||
controller.drawCards(1, game);
|
||||
}
|
||||
controller.drawCards(1, game);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -217,7 +218,8 @@ class DarkIntimationsReplacementEffect extends ReplacementEffectImpl {
|
|||
@Override
|
||||
public boolean applies(GameEvent event, Ability source, Game game) {
|
||||
Permanent creature = ((EntersTheBattlefieldEvent) event).getTarget();
|
||||
return creature != null && event.getTargetId().equals(getTargetPointer().getFirst(game, source));
|
||||
return creature != null
|
||||
&& event.getTargetId().equals(getTargetPointer().getFirst(game, source));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
73
Mage.Sets/src/mage/cards/d/DauntlessAven.java
Normal file
73
Mage.Sets/src/mage/cards/d/DauntlessAven.java
Normal file
|
@ -0,0 +1,73 @@
|
|||
/*
|
||||
* 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.cards.d;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.AttacksTriggeredAbility;
|
||||
import mage.abilities.effects.common.UntapTargetEffect;
|
||||
import mage.abilities.keyword.FlyingAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.target.common.TargetControlledCreaturePermanent;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Archer262
|
||||
*/
|
||||
public class DauntlessAven extends CardImpl {
|
||||
|
||||
public DauntlessAven(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
|
||||
|
||||
this.subtype.add("Bird");
|
||||
this.subtype.add("Warrior");
|
||||
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(1);
|
||||
|
||||
// Flying
|
||||
this.addAbility(FlyingAbility.getInstance());
|
||||
|
||||
// Whenever Dauntless Aven attacks, untap target creature you control.
|
||||
Ability ability = new AttacksTriggeredAbility(new UntapTargetEffect(), false);
|
||||
ability.addTarget(new TargetControlledCreaturePermanent(1, 1));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
public DauntlessAven(final DauntlessAven card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DauntlessAven copy() {
|
||||
return new DauntlessAven(this);
|
||||
}
|
||||
}
|
99
Mage.Sets/src/mage/cards/d/DesertsHold.java
Normal file
99
Mage.Sets/src/mage/cards/d/DesertsHold.java
Normal file
|
@ -0,0 +1,99 @@
|
|||
/*
|
||||
* 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.cards.d;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.condition.OrCondition;
|
||||
import mage.abilities.condition.common.CardsInControllerGraveCondition;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.decorator.ConditionalTriggeredAbility;
|
||||
import mage.abilities.effects.common.AttachEffect;
|
||||
import mage.abilities.effects.common.GainLifeEffect;
|
||||
import mage.abilities.effects.common.combat.CantBlockAttackActivateAttachedEffect;
|
||||
import mage.abilities.keyword.EnchantAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.common.FilterControlledPermanent;
|
||||
import mage.filter.predicate.mageobject.SubtypePredicate;
|
||||
import mage.target.TargetPermanent;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author emerald000
|
||||
*/
|
||||
public class DesertsHold extends CardImpl {
|
||||
|
||||
private static final FilterControlledPermanent filterDesertPermanent = new FilterControlledPermanent("Desert");
|
||||
private static final FilterCard filterDesertCard = new FilterCard("Desert card");
|
||||
static {
|
||||
filterDesertPermanent.add(new SubtypePredicate(SubType.DESERT));
|
||||
filterDesertCard.add(new SubtypePredicate(SubType.DESERT));
|
||||
}
|
||||
|
||||
public DesertsHold(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}");
|
||||
|
||||
this.subtype.add("Aura");
|
||||
|
||||
// Enchant creature
|
||||
TargetPermanent auraTarget = new TargetCreaturePermanent();
|
||||
this.getSpellAbility().addTarget(auraTarget);
|
||||
this.getSpellAbility().addEffect(new AttachEffect(Outcome.Removal));
|
||||
Ability ability = new EnchantAbility(auraTarget.getTargetName());
|
||||
this.addAbility(ability);
|
||||
|
||||
// When Desert's Hold enters the battlefield, if you control a Desert or there is a Desert card in your graveyard, you gain 3 life.
|
||||
this.addAbility(new ConditionalTriggeredAbility(
|
||||
new EntersBattlefieldTriggeredAbility(new GainLifeEffect(3)),
|
||||
new OrCondition(
|
||||
new PermanentsOnTheBattlefieldCondition(new FilterControlledPermanent(filterDesertPermanent)),
|
||||
new CardsInControllerGraveCondition(1, filterDesertCard)),
|
||||
"When {this} enters the battlefield, if you control a Desert or there is a Desert card in your graveyard, you gain 3 life."));
|
||||
|
||||
// Enchanted creature can't attack or block, and its activated abilities can't be activated.
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantBlockAttackActivateAttachedEffect()));
|
||||
}
|
||||
|
||||
public DesertsHold(final DesertsHold card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DesertsHold copy() {
|
||||
return new DesertsHold(this);
|
||||
}
|
||||
}
|
70
Mage.Sets/src/mage/cards/d/DevoteeOfStrength.java
Normal file
70
Mage.Sets/src/mage/cards/d/DevoteeOfStrength.java
Normal file
|
@ -0,0 +1,70 @@
|
|||
/*
|
||||
* 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.cards.d;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.common.continuous.BoostTargetEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.Zone;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author ciaccona007
|
||||
*/
|
||||
public class DevoteeOfStrength extends CardImpl {
|
||||
|
||||
public DevoteeOfStrength(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
|
||||
|
||||
this.subtype.add("Naga");
|
||||
this.subtype.add("Wizard");
|
||||
this.power = new MageInt(3);
|
||||
this.toughness = new MageInt(2);
|
||||
|
||||
// {4}{G}: Target creature gets +2/+2 until end of turn.
|
||||
SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostTargetEffect(2,2,Duration.EndOfTurn), new ManaCostsImpl("{4}{G}"));
|
||||
ability.addTarget(new TargetCreaturePermanent());
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
public DevoteeOfStrength(final DevoteeOfStrength card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DevoteeOfStrength copy() {
|
||||
return new DevoteeOfStrength(this);
|
||||
}
|
||||
}
|
|
@ -35,8 +35,6 @@ import mage.cards.CardImpl;
|
|||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||
import mage.filter.predicate.permanent.AnotherPredicate;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
|
@ -44,6 +42,7 @@ import mage.target.Target;
|
|||
import mage.target.common.TargetControlledCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.filter.StaticFilters;
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -52,7 +51,7 @@ import java.util.UUID;
|
|||
public class DiscipleOfBolas extends CardImpl {
|
||||
|
||||
public DiscipleOfBolas(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}");
|
||||
this.subtype.add("Human");
|
||||
this.subtype.add("Wizard");
|
||||
|
||||
|
@ -90,12 +89,10 @@ class DiscipleOfBolasEffect extends OneShotEffect {
|
|||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Player controller = game.getPlayer(source.getControllerId());
|
||||
if (controller != null) {
|
||||
FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another creature");
|
||||
filter.add(new AnotherPredicate());
|
||||
Target target = new TargetControlledCreaturePermanent(1,1, filter, true);
|
||||
Target target = new TargetControlledCreaturePermanent(1, 1, StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE, true);
|
||||
target.setRequired(true);
|
||||
if (target.canChoose(source.getSourceId(), source.getControllerId(), game)) {
|
||||
controller.chooseTarget(outcome, target, source, game);
|
||||
|
@ -112,5 +109,3 @@ class DiscipleOfBolasEffect extends OneShotEffect {
|
|||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
70
Mage.Sets/src/mage/cards/d/DisposalMummy.java
Normal file
70
Mage.Sets/src/mage/cards/d/DisposalMummy.java
Normal file
|
@ -0,0 +1,70 @@
|
|||
/*
|
||||
* 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.cards.d;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.target.Target;
|
||||
import mage.target.common.TargetCardInOpponentsGraveyard;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Archer262
|
||||
*/
|
||||
public class DisposalMummy extends CardImpl {
|
||||
|
||||
public DisposalMummy(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
|
||||
|
||||
this.subtype.add("Zombie");
|
||||
this.subtype.add("Jackal");
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(3);
|
||||
|
||||
// When Disposal Mummy enters the battlefield, exile target card from an opponent's graveyard.
|
||||
Ability ability = new EntersBattlefieldTriggeredAbility(new ExileTargetEffect());
|
||||
Target target = new TargetCardInOpponentsGraveyard(new FilterCard("card from an opponent's graveyard"));
|
||||
ability.addTarget(target);
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
public DisposalMummy(final DisposalMummy card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DisposalMummy copy() {
|
||||
return new DisposalMummy(this);
|
||||
}
|
||||
}
|
126
Mage.Sets/src/mage/cards/d/DjeruWithEyesOpen.java
Normal file
126
Mage.Sets/src/mage/cards/d/DjeruWithEyesOpen.java
Normal file
|
@ -0,0 +1,126 @@
|
|||
/*
|
||||
* 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.cards.d;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.effects.Effect;
|
||||
import mage.abilities.effects.PreventionEffectImpl;
|
||||
import mage.abilities.effects.common.search.SearchLibraryPutInHandEffect;
|
||||
import mage.abilities.keyword.VigilanceAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SuperType;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.predicate.mageobject.CardTypePredicate;
|
||||
import mage.game.Game;
|
||||
import mage.game.events.GameEvent;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public class DjeruWithEyesOpen extends CardImpl {
|
||||
|
||||
private static final FilterCard filter = new FilterCard("planeswalker card");
|
||||
|
||||
static {
|
||||
filter.add(new CardTypePredicate(CardType.PLANESWALKER));
|
||||
}
|
||||
|
||||
public DjeruWithEyesOpen(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}{W}");
|
||||
|
||||
addSuperType(SuperType.LEGENDARY);
|
||||
this.subtype.add("Human");
|
||||
this.subtype.add("Warrior");
|
||||
this.power = new MageInt(4);
|
||||
this.toughness = new MageInt(3);
|
||||
|
||||
// Vigilance
|
||||
this.addAbility(VigilanceAbility.getInstance());
|
||||
|
||||
// When Djeru, With Eyes Open enters the battlefield, you may search your library for a planeswalker card, reveal it, put it into your hand, then shuffle your library.
|
||||
Effect effect = new SearchLibraryPutInHandEffect(new TargetCardInLibrary(0, 1, filter), true, true);
|
||||
effect.setText("you may search your library for a planeswalker card, reveal it, put it into your hand, then shuffle your library");
|
||||
this.addAbility(new EntersBattlefieldTriggeredAbility(effect, true));
|
||||
|
||||
// If a source would deal damage to a planeswalker you control, prevent 1 of that damage.
|
||||
this.addAbility(new SimpleStaticAbility(Zone.COMMAND, new DjeruWithEyesOpenPreventEffect()));
|
||||
}
|
||||
|
||||
public DjeruWithEyesOpen(final DjeruWithEyesOpen card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DjeruWithEyesOpen copy() {
|
||||
return new DjeruWithEyesOpen(this);
|
||||
}
|
||||
}
|
||||
|
||||
class DjeruWithEyesOpenPreventEffect extends PreventionEffectImpl {
|
||||
|
||||
public DjeruWithEyesOpenPreventEffect() {
|
||||
super(Duration.EndOfGame, 1, false, false);
|
||||
this.staticText = "If a source would deal damage to a planeswalker you control, prevent 1 of that damage";
|
||||
}
|
||||
|
||||
public DjeruWithEyesOpenPreventEffect(DjeruWithEyesOpenPreventEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean applies(GameEvent event, Ability source, Game game) {
|
||||
if (event.getType() == GameEvent.EventType.DAMAGE_PLANESWALKER) {
|
||||
Permanent permanent = game.getPermanent(event.getTargetId());
|
||||
if (permanent != null && permanent.getControllerId().equals(source.getControllerId())) {
|
||||
return super.applies(event, source, game);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DjeruWithEyesOpenPreventEffect copy() {
|
||||
return new DjeruWithEyesOpenPreventEffect(this);
|
||||
}
|
||||
}
|
65
Mage.Sets/src/mage/cards/d/DjerusRenunciation.java
Normal file
65
Mage.Sets/src/mage/cards/d/DjerusRenunciation.java
Normal file
|
@ -0,0 +1,65 @@
|
|||
/*
|
||||
* 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.cards.d;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.common.TapTargetEffect;
|
||||
import mage.abilities.keyword.CyclingAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Archer262
|
||||
*/
|
||||
public class DjerusRenunciation extends CardImpl {
|
||||
|
||||
public DjerusRenunciation(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{W}");
|
||||
|
||||
// Tap up to two target creatures.
|
||||
this.getSpellAbility().addEffect(new TapTargetEffect());
|
||||
this.getSpellAbility().addTarget(new TargetCreaturePermanent(0, 2));
|
||||
|
||||
// Cycling {W}
|
||||
this.addAbility(new CyclingAbility(new ManaCostsImpl("{W}")));
|
||||
|
||||
}
|
||||
|
||||
public DjerusRenunciation(final DjerusRenunciation card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DjerusRenunciation copy() {
|
||||
return new DjerusRenunciation(this);
|
||||
}
|
||||
}
|
112
Mage.Sets/src/mage/cards/d/Doomfall.java
Normal file
112
Mage.Sets/src/mage/cards/d/Doomfall.java
Normal file
|
@ -0,0 +1,112 @@
|
|||
/*
|
||||
* 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.cards.d;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.Mode;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.effects.common.ExileCardYouChooseTargetOpponentEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.game.Game;
|
||||
import mage.players.Player;
|
||||
import mage.target.Target;
|
||||
import mage.target.TargetPlayer;
|
||||
import mage.target.common.TargetControlledCreaturePermanent;
|
||||
import mage.target.common.TargetOpponent;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public class Doomfall extends CardImpl {
|
||||
|
||||
public Doomfall(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{2}{B}");
|
||||
|
||||
// Choose one —
|
||||
this.getSpellAbility().getModes().setMinModes(1);
|
||||
this.getSpellAbility().getModes().setMaxModes(1);
|
||||
|
||||
// • Target player exiles a creature he or she controls.
|
||||
this.getSpellAbility().addEffect(new DoomfallEffect());
|
||||
this.getSpellAbility().addTarget(new TargetPlayer());
|
||||
|
||||
// • Target opponent reveals his or her hand. You choose a nonland card from it. Exile that card.
|
||||
Mode mode = new Mode();
|
||||
mode.getEffects().add(new ExileCardYouChooseTargetOpponentEffect(StaticFilters.FILTER_CARD_A_NON_LAND)
|
||||
.setText("Target opponent reveals his or her hand. You choose a nonland card from it. Exile that card"));
|
||||
mode.getTargets().add(new TargetOpponent());
|
||||
this.getSpellAbility().addMode(mode);
|
||||
}
|
||||
|
||||
public Doomfall(final Doomfall card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Doomfall copy() {
|
||||
return new Doomfall(this);
|
||||
}
|
||||
}
|
||||
|
||||
class DoomfallEffect extends OneShotEffect {
|
||||
|
||||
public DoomfallEffect() {
|
||||
super(Outcome.Exile);
|
||||
this.staticText = "target player exiles a creature he or she controls";
|
||||
}
|
||||
|
||||
public DoomfallEffect(final DoomfallEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DoomfallEffect copy() {
|
||||
return new DoomfallEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Player targetPlayer = game.getPlayer(getTargetPointer().getFirst(game, source));
|
||||
if (targetPlayer != null) {
|
||||
Target target = new TargetControlledCreaturePermanent();
|
||||
target.setNotTarget(true);
|
||||
if (targetPlayer.choose(outcome, target, source.getSourceId(), game)) {
|
||||
targetPlayer.moveCards(game.getCard(target.getFirstTarget()), Zone.EXILED, source, game);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
|
@ -27,6 +27,7 @@
|
|||
*/
|
||||
package mage.cards.d;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SpellCastControllerTriggeredAbility;
|
||||
|
@ -37,8 +38,6 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.CardType;
|
||||
import mage.filter.common.FilterSpiritOrArcaneCard;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
|
@ -46,15 +45,15 @@ import java.util.UUID;
|
|||
public class Dreamcatcher extends CardImpl {
|
||||
|
||||
public Dreamcatcher(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{U}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{U}");
|
||||
this.subtype.add("Spirit");
|
||||
|
||||
this.power = new MageInt(1);
|
||||
this.toughness = new MageInt(1);
|
||||
|
||||
// Whenever you cast a Spirit or Arcane spell, you may sacrifice Dreamcatcher. If you do, draw a card.
|
||||
Ability ability = new SpellCastControllerTriggeredAbility(new SacrificeSourceEffect(), new FilterSpiritOrArcaneCard(), true,
|
||||
"Whenever you cast a Spirit or Arcane spell, you may sacrifice Dreamcatcher. If you do, draw a card.");
|
||||
Ability ability = new SpellCastControllerTriggeredAbility(new SacrificeSourceEffect(), new FilterSpiritOrArcaneCard(), true,
|
||||
"Whenever you cast a Spirit or Arcane spell, you may sacrifice {this}. If you do, draw a card.");
|
||||
ability.addEffect(new DrawCardSourceControllerEffect(1));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
|
108
Mage.Sets/src/mage/cards/d/Dreamstealer.java
Normal file
108
Mage.Sets/src/mage/cards/d/Dreamstealer.java
Normal file
|
@ -0,0 +1,108 @@
|
|||
/*
|
||||
* 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.cards.d;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.keyword.EternalizeAbility;
|
||||
import mage.abilities.keyword.MenaceAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.game.Game;
|
||||
import mage.players.Player;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public class Dreamstealer extends CardImpl {
|
||||
|
||||
public Dreamstealer(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
|
||||
|
||||
this.subtype.add("Human");
|
||||
this.subtype.add("Wizard");
|
||||
this.power = new MageInt(1);
|
||||
this.toughness = new MageInt(2);
|
||||
|
||||
// Menace
|
||||
this.addAbility(new MenaceAbility());
|
||||
|
||||
// When Dreamstealer deals combat damage to a player, that player discards that many cards.
|
||||
this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(new DreamstealerDiscardEffect(), false, true));
|
||||
|
||||
// Eternalize {4}{B}{B}
|
||||
this.addAbility(new EternalizeAbility(new ManaCostsImpl("{4}{B}{B}"), this));
|
||||
|
||||
}
|
||||
|
||||
public Dreamstealer(final Dreamstealer card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Dreamstealer copy() {
|
||||
return new Dreamstealer(this);
|
||||
}
|
||||
}
|
||||
|
||||
class DreamstealerDiscardEffect extends OneShotEffect {
|
||||
|
||||
public DreamstealerDiscardEffect() {
|
||||
super(Outcome.Discard);
|
||||
this.staticText = "that player discards that many cards";
|
||||
}
|
||||
|
||||
public DreamstealerDiscardEffect(final DreamstealerDiscardEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DreamstealerDiscardEffect copy() {
|
||||
return new DreamstealerDiscardEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Player targetPlayer = game.getPlayer(targetPointer.getFirst(game, source));
|
||||
if (targetPlayer != null) {
|
||||
int damage = (Integer) getValue("damage");
|
||||
targetPlayer.discard(damage, false, source, game);
|
||||
game.informPlayers(targetPlayer.getLogName() + "discards " + damage + " card(s)");
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
81
Mage.Sets/src/mage/cards/d/DrivenDespair.java
Normal file
81
Mage.Sets/src/mage/cards/d/DrivenDespair.java
Normal file
|
@ -0,0 +1,81 @@
|
|||
/*
|
||||
* 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.cards.d;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.TriggeredAbility;
|
||||
import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility;
|
||||
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityControlledEffect;
|
||||
import mage.abilities.effects.common.discard.DiscardTargetEffect;
|
||||
import mage.abilities.keyword.AftermathAbility;
|
||||
import mage.abilities.keyword.MenaceAbility;
|
||||
import mage.abilities.keyword.TrampleAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.SplitCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SpellAbilityType;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public class DrivenDespair extends SplitCard {
|
||||
|
||||
public DrivenDespair(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, new CardType[]{CardType.SORCERY}, "{1}{G}", "{1}{B}", SpellAbilityType.SPLIT_AFTERMATH);
|
||||
|
||||
// Until end of turn, creatures you control gain trample and "Whenever this creature deals combat damage to a player, draw a card."
|
||||
getLeftHalfCard().getSpellAbility().addEffect(new GainAbilityControlledEffect(TrampleAbility.getInstance(), Duration.EndOfTurn));
|
||||
TriggeredAbility ability = new DealsCombatDamageToAPlayerTriggeredAbility(new DrawCardSourceControllerEffect(1), false);
|
||||
getLeftHalfCard().getSpellAbility().addEffect(new GainAbilityControlledEffect(ability, Duration.EndOfTurn)
|
||||
.setText("and \"Whenever this creature deals combat damage to a player, draw a card.\""));
|
||||
|
||||
// Despair {1}{B}
|
||||
// Sorcery
|
||||
// Aftermath
|
||||
((CardImpl) (getRightHalfCard())).addAbility(new AftermathAbility().setRuleAtTheTop(true));
|
||||
// Until end of turn, creatures you control gain menace and "Whenever this creature deals combat damage to a player, that player discards a card."
|
||||
getRightHalfCard().getSpellAbility().addEffect(new GainAbilityControlledEffect(new MenaceAbility(), Duration.EndOfTurn));
|
||||
ability = new DealsCombatDamageToAPlayerTriggeredAbility(new DiscardTargetEffect(1), false, true);
|
||||
getRightHalfCard().getSpellAbility().addEffect(new GainAbilityControlledEffect(ability, Duration.EndOfTurn)
|
||||
.setText("and \"Whenever this creature deals combat damage to a player, that player discards a card.\""));
|
||||
|
||||
}
|
||||
|
||||
public DrivenDespair(final DrivenDespair card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DrivenDespair copy() {
|
||||
return new DrivenDespair(this);
|
||||
}
|
||||
}
|
64
Mage.Sets/src/mage/cards/d/DunesOfTheDead.java
Normal file
64
Mage.Sets/src/mage/cards/d/DunesOfTheDead.java
Normal file
|
@ -0,0 +1,64 @@
|
|||
/*
|
||||
* 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.cards.d;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.common.PutIntoGraveFromBattlefieldSourceTriggeredAbility;
|
||||
import mage.abilities.effects.common.CreateTokenEffect;
|
||||
import mage.abilities.mana.ColorlessManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.game.permanent.token.ZombieToken;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author ciaccona007
|
||||
*/
|
||||
public class DunesOfTheDead extends CardImpl {
|
||||
|
||||
public DunesOfTheDead(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
this.subtype.add("Desert");
|
||||
|
||||
// {T}: Add {C} to your mana pool.
|
||||
addAbility(new ColorlessManaAbility());
|
||||
// When Dunes of the Dead is put into a graveyard from the battlefield, create a 2/2 black Zombie creature token.
|
||||
this.addAbility(new PutIntoGraveFromBattlefieldSourceTriggeredAbility(new CreateTokenEffect(new ZombieToken(), 1), false));
|
||||
}
|
||||
|
||||
public DunesOfTheDead(final DunesOfTheDead card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DunesOfTheDead copy() {
|
||||
return new DunesOfTheDead(this);
|
||||
}
|
||||
}
|
58
Mage.Sets/src/mage/cards/d/DutifulServants.java
Normal file
58
Mage.Sets/src/mage/cards/d/DutifulServants.java
Normal file
|
@ -0,0 +1,58 @@
|
|||
/*
|
||||
* 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.cards.d;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Archer262
|
||||
*/
|
||||
public class DutifulServants extends CardImpl {
|
||||
|
||||
public DutifulServants(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
|
||||
|
||||
this.subtype.add("Zombie");
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(5);
|
||||
}
|
||||
|
||||
public DutifulServants(final DutifulServants card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DutifulServants copy() {
|
||||
return new DutifulServants(this);
|
||||
}
|
||||
}
|
104
Mage.Sets/src/mage/cards/e/EarthshakerKhenra.java
Normal file
104
Mage.Sets/src/mage/cards/e/EarthshakerKhenra.java
Normal file
|
@ -0,0 +1,104 @@
|
|||
/*
|
||||
* 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.cards.e;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
import mage.abilities.common.PlanswalkerEntersWithLoyalityCountersAbility;
|
||||
import mage.abilities.keyword.HasteAbility;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.common.combat.CantBlockTargetEffect;
|
||||
import mage.abilities.keyword.EternalizeAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.constants.Duration;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.filter.predicate.mageobject.PowerPredicate;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jeffwadsworth
|
||||
*/
|
||||
public class EarthshakerKhenra extends CardImpl {
|
||||
|
||||
private final UUID originalId;
|
||||
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power less than or equal to {this}'s power");
|
||||
|
||||
public EarthshakerKhenra(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}");
|
||||
|
||||
this.subtype.add("Jackal");
|
||||
this.subtype.add("Warrior");
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(1);
|
||||
|
||||
// Haste
|
||||
this.addAbility(HasteAbility.getInstance());
|
||||
|
||||
// When Earthshaker Khenra enters the battlefield, target creature with power less than or equal to Earthshaker Khenra's power can't block this turn.
|
||||
Ability ability = new EntersBattlefieldTriggeredAbility(new CantBlockTargetEffect(Duration.EndOfTurn));
|
||||
ability.addTarget(new TargetCreaturePermanent(filter));
|
||||
this.addAbility(ability);
|
||||
originalId = ability.getOriginalId();
|
||||
|
||||
// Eternalize {4}{R}{R}
|
||||
this.addAbility(new EternalizeAbility(new ManaCostsImpl("{4}{R}{R}"), this));
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void adjustTargets(Ability ability, Game game) {
|
||||
if (ability.getOriginalId().equals(originalId)) {
|
||||
Permanent sourcePermanent = game.getPermanent(ability.getSourceId());
|
||||
if (sourcePermanent != null) {
|
||||
int power = sourcePermanent.getPower().getValue();
|
||||
FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with power less than or equal to " + getLogName() + "'s power");
|
||||
filter.add(new PowerPredicate(ComparisonType.FEWER_THAN, power + 1));
|
||||
ability.getTargets().clear();
|
||||
ability.getTargets().add(new TargetCreaturePermanent(filter));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public EarthshakerKhenra(final EarthshakerKhenra card) {
|
||||
super(card);
|
||||
this.originalId = card.originalId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public EarthshakerKhenra copy() {
|
||||
return new EarthshakerKhenra(this);
|
||||
}
|
||||
}
|
|
@ -27,6 +27,7 @@
|
|||
*/
|
||||
package mage.cards.e;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
|
@ -39,29 +40,26 @@ import mage.cards.CardImpl;
|
|||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||
import mage.filter.predicate.permanent.AnotherPredicate;
|
||||
import mage.target.common.TargetControlledCreaturePermanent;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Quercitron
|
||||
*/
|
||||
public class EaterOfHope extends CardImpl {
|
||||
|
||||
private static final FilterControlledCreaturePermanent regenFilter = new FilterControlledCreaturePermanent("another creature");
|
||||
private static final FilterControlledCreaturePermanent destroyFilter = new FilterControlledCreaturePermanent("two other creatures");
|
||||
|
||||
static {
|
||||
regenFilter.add(new AnotherPredicate());
|
||||
destroyFilter.add(new AnotherPredicate());
|
||||
}
|
||||
|
||||
public EaterOfHope(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{B}{B}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{B}{B}");
|
||||
this.subtype.add("Demon");
|
||||
|
||||
this.power = new MageInt(6);
|
||||
|
@ -72,7 +70,7 @@ public class EaterOfHope extends CardImpl {
|
|||
|
||||
// {B}, Sacrifice another creature: Regenerate Eater of Hope.
|
||||
Ability regenAbility = new SimpleActivatedAbility(Zone.BATTLEFIELD, new RegenerateSourceEffect(), new ManaCostsImpl("{B}"));
|
||||
regenAbility.addCost(new SacrificeTargetCost(new TargetControlledCreaturePermanent(1, 1, regenFilter, true)));
|
||||
regenAbility.addCost(new SacrificeTargetCost(new TargetControlledCreaturePermanent(1, 1, StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE, true)));
|
||||
this.addAbility(regenAbility);
|
||||
|
||||
// {2}{B}, Sacrifice two other creatures: Destroy target creature.
|
||||
|
|
68
Mage.Sets/src/mage/cards/e/EternalOfHarshTruths.java
Normal file
68
Mage.Sets/src/mage/cards/e/EternalOfHarshTruths.java
Normal file
|
@ -0,0 +1,68 @@
|
|||
/*
|
||||
* 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.cards.e;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.AttacksAndIsNotBlockedTriggeredAbility;
|
||||
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||
import mage.abilities.keyword.AfflictAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author emerald000
|
||||
*/
|
||||
public class EternalOfHarshTruths extends CardImpl {
|
||||
|
||||
public EternalOfHarshTruths(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}");
|
||||
|
||||
this.subtype.add("Zombie");
|
||||
this.subtype.add("Cleric");
|
||||
this.power = new MageInt(1);
|
||||
this.toughness = new MageInt(3);
|
||||
|
||||
// Afflict 2
|
||||
this.addAbility(new AfflictAbility(2));
|
||||
|
||||
// Whenever Eternal of Harsh Truths attacks and isn't blocked, draw a card.
|
||||
this.addAbility(new AttacksAndIsNotBlockedTriggeredAbility(new DrawCardSourceControllerEffect(1)));
|
||||
}
|
||||
|
||||
public EternalOfHarshTruths(final EternalOfHarshTruths card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public EternalOfHarshTruths copy() {
|
||||
return new EternalOfHarshTruths(this);
|
||||
}
|
||||
}
|
71
Mage.Sets/src/mage/cards/f/FarmMarket.java
Normal file
71
Mage.Sets/src/mage/cards/f/FarmMarket.java
Normal file
|
@ -0,0 +1,71 @@
|
|||
/*
|
||||
* 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.cards.f;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.effects.common.DestroyTargetEffect;
|
||||
import mage.abilities.effects.common.DrawDiscardControllerEffect;
|
||||
import mage.abilities.keyword.AftermathAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.SplitCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SpellAbilityType;
|
||||
import mage.target.common.TargetAttackingOrBlockingCreature;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public class FarmMarket extends SplitCard {
|
||||
|
||||
public FarmMarket(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, new CardType[]{CardType.SORCERY}, "{2}{W}", "{2}{U}", SpellAbilityType.SPLIT_AFTERMATH);
|
||||
|
||||
// Destroy target attacking or blocking creature.
|
||||
getLeftHalfCard().getSpellAbility().addEffect(new DestroyTargetEffect());
|
||||
getLeftHalfCard().getSpellAbility().addTarget(new TargetAttackingOrBlockingCreature());
|
||||
|
||||
// Market {2}{U}
|
||||
// Sorcery
|
||||
// Aftermath
|
||||
((CardImpl) (getRightHalfCard())).addAbility(new AftermathAbility().setRuleAtTheTop(true));
|
||||
// Draw two cards, then discard two cards
|
||||
getRightHalfCard().getSpellAbility().addEffect(new DrawDiscardControllerEffect(2, 2));
|
||||
|
||||
}
|
||||
|
||||
public FarmMarket(final FarmMarket card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public FarmMarket copy() {
|
||||
return new FarmMarket(this);
|
||||
}
|
||||
}
|
|
@ -27,23 +27,18 @@
|
|||
*/
|
||||
package mage.cards.f;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.effects.RestrictionEffect;
|
||||
import mage.abilities.effects.common.combat.CantBlockUnlessYouControlSourceEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.common.FilterControlledPermanent;
|
||||
import mage.filter.predicate.mageobject.SubtypePredicate;
|
||||
import mage.filter.predicate.permanent.AnotherPredicate;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -51,15 +46,22 @@ import java.util.UUID;
|
|||
*/
|
||||
public class FelhideBrawler extends CardImpl {
|
||||
|
||||
private static final FilterControlledPermanent filter = new FilterControlledPermanent("another Minotaur");
|
||||
|
||||
static {
|
||||
filter.add(new SubtypePredicate(SubType.MINOTAUR));
|
||||
filter.add(new AnotherPredicate());
|
||||
}
|
||||
|
||||
public FelhideBrawler(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{B}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}");
|
||||
this.subtype.add("Minotaur");
|
||||
|
||||
this.power = new MageInt(2);
|
||||
this.toughness = new MageInt(2);
|
||||
|
||||
// Felhide Brawler can't block unless you control another Minotaur.
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new FelhideBrawlerRestrictionEffect()));
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantBlockUnlessYouControlSourceEffect(filter)));
|
||||
}
|
||||
|
||||
public FelhideBrawler(final FelhideBrawler card) {
|
||||
|
@ -71,42 +73,3 @@ public class FelhideBrawler extends CardImpl {
|
|||
return new FelhideBrawler(this);
|
||||
}
|
||||
}
|
||||
|
||||
class FelhideBrawlerRestrictionEffect extends RestrictionEffect {
|
||||
|
||||
private static final FilterControlledPermanent filter = new FilterControlledPermanent("another Minotaur");
|
||||
|
||||
static {
|
||||
filter.add(new SubtypePredicate(SubType.MINOTAUR));
|
||||
filter.add(new AnotherPredicate());
|
||||
}
|
||||
|
||||
public FelhideBrawlerRestrictionEffect() {
|
||||
super(Duration.WhileOnBattlefield);
|
||||
|
||||
staticText = "{this} can't block unless you control another Minotaur";
|
||||
}
|
||||
|
||||
public FelhideBrawlerRestrictionEffect(final FelhideBrawlerRestrictionEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public FelhideBrawlerRestrictionEffect copy() {
|
||||
return new FelhideBrawlerRestrictionEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean applies(Permanent permanent, Ability source, Game game) {
|
||||
if (permanent.getId().equals(source.getSourceId())
|
||||
&& game.getBattlefield().count(filter, source.getSourceId(), source.getControllerId(), game) == 0) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -40,8 +40,6 @@ import mage.cards.Card;
|
|||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.*;
|
||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||
import mage.filter.predicate.permanent.AnotherPredicate;
|
||||
import mage.game.Game;
|
||||
import mage.game.events.GameEvent;
|
||||
import mage.game.events.GameEvent.EventType;
|
||||
|
@ -53,6 +51,7 @@ import mage.watchers.Watcher;
|
|||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import mage.filter.StaticFilters;
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -60,13 +59,8 @@ import java.util.UUID;
|
|||
*/
|
||||
public class FellShepherd extends CardImpl {
|
||||
|
||||
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another creature");
|
||||
static {
|
||||
filter.add(new AnotherPredicate());
|
||||
}
|
||||
|
||||
public FellShepherd(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{5}{B}{B}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{B}{B}");
|
||||
this.subtype.add("Avatar");
|
||||
|
||||
this.power = new MageInt(8);
|
||||
|
@ -76,8 +70,8 @@ public class FellShepherd extends CardImpl {
|
|||
this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(new FellShepherdEffect(), true), new FellShepherdWatcher());
|
||||
|
||||
// {B}, Sacrifice another creature: Target creature gets -2/-2 until end of turn.
|
||||
SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostTargetEffect(-2,-2, Duration.EndOfTurn), new ManaCostsImpl("{B}"));
|
||||
ability.addCost(new SacrificeTargetCost(new TargetControlledCreaturePermanent(1, 1, filter, false)));
|
||||
SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostTargetEffect(-2, -2, Duration.EndOfTurn), new ManaCostsImpl("{B}"));
|
||||
ability.addCost(new SacrificeTargetCost(new TargetControlledCreaturePermanent(1, 1, StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE, false)));
|
||||
ability.addTarget(new TargetCreaturePermanent());
|
||||
this.addAbility(ability);
|
||||
|
||||
|
@ -120,7 +114,7 @@ class FellShepherdWatcher extends Watcher {
|
|||
public void watch(GameEvent event, Game game) {
|
||||
if (event.getType() == EventType.ZONE_CHANGE && ((ZoneChangeEvent) event).isDiesEvent()) {
|
||||
MageObject card = game.getLastKnownInformation(event.getTargetId(), Zone.BATTLEFIELD);
|
||||
if (card != null && ((Card)card).getOwnerId().equals(this.controllerId) && card.isCreature()) {
|
||||
if (card != null && ((Card) card).getOwnerId().equals(this.controllerId) && card.isCreature()) {
|
||||
creatureIds.add(card.getId());
|
||||
}
|
||||
}
|
||||
|
@ -163,7 +157,7 @@ class FellShepherdEffect extends OneShotEffect {
|
|||
}
|
||||
}
|
||||
}
|
||||
if (sb.length()> 0) {
|
||||
if (sb.length() > 0) {
|
||||
sb.insert(0, "Fell Shepherd - returning to hand:");
|
||||
game.informPlayers(sb.toString());
|
||||
}
|
||||
|
|
31
Mage.Sets/src/mage/cards/f/FeralProwler.java
Normal file
31
Mage.Sets/src/mage/cards/f/FeralProwler.java
Normal file
|
@ -0,0 +1,31 @@
|
|||
package mage.cards.f;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.DiesTriggeredAbility;
|
||||
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class FeralProwler extends CardImpl {
|
||||
|
||||
public FeralProwler(UUID ownerId, CardSetInfo cardSetInfo) {
|
||||
super(ownerId, cardSetInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
|
||||
subtype.add("Cat");
|
||||
|
||||
power = new MageInt(1);
|
||||
toughness = new MageInt(3);
|
||||
|
||||
addAbility(new DiesTriggeredAbility(new DrawCardSourceControllerEffect(1), false));
|
||||
}
|
||||
|
||||
public FeralProwler(final FeralProwler feralProwler) {
|
||||
super(feralProwler);
|
||||
}
|
||||
|
||||
public FeralProwler copy() {
|
||||
return new FeralProwler(this);
|
||||
}
|
||||
}
|
80
Mage.Sets/src/mage/cards/f/FerventPaincaster.java
Normal file
80
Mage.Sets/src/mage/cards/f/FerventPaincaster.java
Normal file
|
@ -0,0 +1,80 @@
|
|||
/*
|
||||
* 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.cards.f;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleActivatedAbility;
|
||||
import mage.abilities.costs.common.ExertSourceCost;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.effects.common.DamageTargetEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Zone;
|
||||
import mage.target.TargetPlayer;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jeffwadsworth
|
||||
*/
|
||||
public class FerventPaincaster extends CardImpl {
|
||||
|
||||
public FerventPaincaster(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
|
||||
|
||||
this.subtype.add("Human");
|
||||
this.subtype.add("Wizard");
|
||||
|
||||
this.power = new MageInt(3);
|
||||
this.toughness = new MageInt(1);
|
||||
|
||||
// {T}: Fervent Paincaster deals 1 damage to target player.
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1), new TapSourceCost());
|
||||
ability.addTarget(new TargetPlayer());
|
||||
this.addAbility(ability);
|
||||
|
||||
// {T}, Exert Fervent Paincaster: It deals 1 damage to target creature.
|
||||
Ability ability2 = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1), new TapSourceCost());
|
||||
ability2.addCost(new ExertSourceCost());
|
||||
ability2.addTarget(new TargetCreaturePermanent());
|
||||
this.addAbility(ability2);
|
||||
|
||||
}
|
||||
|
||||
public FerventPaincaster(final FerventPaincaster card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public FerventPaincaster copy() {
|
||||
return new FerventPaincaster(this);
|
||||
}
|
||||
}
|
|
@ -27,22 +27,19 @@
|
|||
*/
|
||||
package mage.cards.f;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.effects.common.DestroyTargetEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.common.FilterArtifactOrEnchantmentPermanent;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
import mage.target.TargetPermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author North
|
||||
|
@ -50,11 +47,10 @@ import java.util.UUID;
|
|||
public class FiligreeFracture extends CardImpl {
|
||||
|
||||
public FiligreeFracture(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{G}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{G}");
|
||||
|
||||
// Destroy target artifact or enchantment. If that permanent was blue or black, draw a card.
|
||||
this.getSpellAbility().addTarget(new TargetPermanent(new FilterArtifactOrEnchantmentPermanent()));
|
||||
this.getSpellAbility().addEffect(new DestroyTargetEffect());
|
||||
this.getSpellAbility().addEffect(new FiligreeFractureEffect());
|
||||
}
|
||||
|
||||
|
@ -71,8 +67,8 @@ public class FiligreeFracture extends CardImpl {
|
|||
class FiligreeFractureEffect extends OneShotEffect {
|
||||
|
||||
public FiligreeFractureEffect() {
|
||||
super(Outcome.DrawCard);
|
||||
this.staticText = "If that permanent was blue or black, draw a card";
|
||||
super(Outcome.DestroyPermanent);
|
||||
this.staticText = "Destroy target artifact or enchantment. If that permanent was blue or black, draw a card";
|
||||
}
|
||||
|
||||
public FiligreeFractureEffect(final FiligreeFractureEffect effect) {
|
||||
|
@ -87,10 +83,13 @@ class FiligreeFractureEffect extends OneShotEffect {
|
|||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Player player = game.getPlayer(source.getControllerId());
|
||||
Permanent permanent = (Permanent) game.getLastKnownInformation(source.getFirstTarget(), Zone.BATTLEFIELD);
|
||||
if (player != null && permanent != null
|
||||
&& (permanent.getColor(game).isBlack() || permanent.getColor(game).isBlue())) {
|
||||
player.drawCards(1, game);
|
||||
Permanent permanent = game.getPermanent(getTargetPointer().getFirst(game, source));
|
||||
if (player != null && permanent != null) {
|
||||
permanent.destroy(source.getSourceId(), game, true);
|
||||
game.applyEffects();
|
||||
if (permanent.getColor(game).isBlack() || permanent.getColor(game).isBlue()) {
|
||||
player.drawCards(1, game);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
|
|
@ -45,8 +45,7 @@ import mage.constants.CardType;
|
|||
import mage.constants.Outcome;
|
||||
import mage.constants.Zone;
|
||||
import mage.counters.CounterType;
|
||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||
import mage.filter.predicate.permanent.AnotherPredicate;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.game.Game;
|
||||
import mage.game.events.GameEvent;
|
||||
import mage.game.permanent.Permanent;
|
||||
|
@ -60,12 +59,6 @@ import mage.target.common.TargetControlledPermanent;
|
|||
*/
|
||||
public class FleshCarver extends CardImpl {
|
||||
|
||||
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another creature");
|
||||
|
||||
static {
|
||||
filter.add(new AnotherPredicate());
|
||||
}
|
||||
|
||||
public FleshCarver(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{B}");
|
||||
this.subtype.add("Human");
|
||||
|
@ -78,7 +71,7 @@ public class FleshCarver extends CardImpl {
|
|||
this.addAbility(IntimidateAbility.getInstance());
|
||||
// {1}{B}, Sacrifice another creature: Put two +1/+1 counters on Flesh Carver.
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)), new ManaCostsImpl("{1}{B}"));
|
||||
ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(filter)));
|
||||
ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE)));
|
||||
this.addAbility(ability);
|
||||
|
||||
// When Flesh Carver dies, create an X/X black Horror creature token, where X is Flesh Carver's power.
|
||||
|
|
146
Mage.Sets/src/mage/cards/f/FrayingSanity.java
Normal file
146
Mage.Sets/src/mage/cards/f/FrayingSanity.java
Normal file
|
@ -0,0 +1,146 @@
|
|||
/*
|
||||
* 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.cards.f;
|
||||
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.TriggeredAbilityImpl;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.effects.common.AttachEffect;
|
||||
import mage.constants.Outcome;
|
||||
import mage.abilities.keyword.EnchantAbility;
|
||||
import mage.cards.Card;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Zone;
|
||||
import mage.game.Game;
|
||||
import mage.game.events.GameEvent;
|
||||
import mage.game.events.GameEvent.EventType;
|
||||
import mage.players.Player;
|
||||
import mage.target.TargetPlayer;
|
||||
import mage.watchers.common.CardsPutIntoGraveyardWatcher;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jeffwadsworth
|
||||
*/
|
||||
public class FrayingSanity extends CardImpl {
|
||||
|
||||
public FrayingSanity(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}");
|
||||
|
||||
this.subtype.add("Aura");
|
||||
this.subtype.add("Curse");
|
||||
|
||||
// Enchant player
|
||||
TargetPlayer auraTarget = new TargetPlayer();
|
||||
this.getSpellAbility().addTarget(auraTarget);
|
||||
this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
|
||||
Ability ability = new EnchantAbility(auraTarget.getTargetName());
|
||||
this.addAbility(ability);
|
||||
|
||||
// At the beginning of each end step, enchanted player puts the top X cards of his or her library into his or her graveyard, where X is the total number of cards put into his or her graveyard from anywhere this turn.
|
||||
this.addAbility(new FrayingSanityTriggeredAbility(), new CardsPutIntoGraveyardWatcher());
|
||||
|
||||
}
|
||||
|
||||
public FrayingSanity(final FrayingSanity card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public FrayingSanity copy() {
|
||||
return new FrayingSanity(this);
|
||||
}
|
||||
}
|
||||
|
||||
class FrayingSanityTriggeredAbility extends TriggeredAbilityImpl {
|
||||
|
||||
public FrayingSanityTriggeredAbility() {
|
||||
super(Zone.BATTLEFIELD, new FrayingSanityEffect());
|
||||
}
|
||||
|
||||
public FrayingSanityTriggeredAbility(final FrayingSanityTriggeredAbility ability) {
|
||||
super(ability);
|
||||
}
|
||||
|
||||
@Override
|
||||
public FrayingSanityTriggeredAbility copy() {
|
||||
return new FrayingSanityTriggeredAbility(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkEventType(GameEvent event, Game game) {
|
||||
return event.getType() == EventType.END_TURN_STEP_PRE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean checkTrigger(GameEvent event, Game game) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getRule() {
|
||||
return "At the beginning of each end step, enchanted player puts the top X cards of his or her library into his or her graveyard, where X is the total number of cards put into his or her graveyard from anywhere this turn.";
|
||||
}
|
||||
}
|
||||
|
||||
class FrayingSanityEffect extends OneShotEffect {
|
||||
|
||||
int xAmount = 0;
|
||||
|
||||
public FrayingSanityEffect() {
|
||||
super(Outcome.Detriment);
|
||||
this.staticText = "";
|
||||
}
|
||||
|
||||
public FrayingSanityEffect(final FrayingSanityEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public FrayingSanityEffect copy() {
|
||||
return new FrayingSanityEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Player enchantedPlayer = game.getPlayer(game.getPermanent(source.getSourceId()).getAttachedTo());
|
||||
if (enchantedPlayer != null) {
|
||||
CardsPutIntoGraveyardWatcher watcher = (CardsPutIntoGraveyardWatcher) game.getState().getWatchers().get(CardsPutIntoGraveyardWatcher.class.getSimpleName());
|
||||
if (watcher != null) {
|
||||
xAmount = watcher.getAmountCardsPutToGraveyard(enchantedPlayer.getId());
|
||||
}
|
||||
Set<Card> topXCardsFromLibrary = enchantedPlayer.getLibrary().getTopCards(game, xAmount);
|
||||
return enchantedPlayer.moveCards(topXCardsFromLibrary, Zone.GRAVEYARD, source, game, false, false, true, null);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
|
@ -42,13 +42,12 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.SuperType;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||
import mage.filter.predicate.permanent.AnotherPredicate;
|
||||
import mage.game.permanent.token.Token;
|
||||
import mage.game.permanent.token.ZombieToken;
|
||||
import mage.target.common.TargetControlledCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.filter.StaticFilters;
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -56,14 +55,8 @@ import java.util.UUID;
|
|||
*/
|
||||
public class GhoulcallerGisa extends CardImpl {
|
||||
|
||||
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another creature");
|
||||
|
||||
static {
|
||||
filter.add(new AnotherPredicate());
|
||||
}
|
||||
|
||||
public GhoulcallerGisa(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{B}{B}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{B}{B}");
|
||||
addSuperType(SuperType.LEGENDARY);
|
||||
this.subtype.add("Human");
|
||||
this.subtype.add("Wizard");
|
||||
|
@ -79,7 +72,7 @@ public class GhoulcallerGisa extends CardImpl {
|
|||
effect.setText("create X 2/2 black Zombie creature tokens, where X is the sacrificed creature's power");
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl("{B}"));
|
||||
ability.addCost(new TapSourceCost());
|
||||
ability.addCost(new SacrificeTargetCost(new TargetControlledCreaturePermanent(filter)));
|
||||
ability.addCost(new SacrificeTargetCost(new TargetControlledCreaturePermanent(StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE)));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
|
|
109
Mage.Sets/src/mage/cards/g/GideonsDefeat.java
Normal file
109
Mage.Sets/src/mage/cards/g/GideonsDefeat.java
Normal file
|
@ -0,0 +1,109 @@
|
|||
/*
|
||||
* 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.cards.g;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.ObjectColor;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.common.FilterAttackingOrBlockingCreature;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.filter.predicate.mageobject.ColorPredicate;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public class GideonsDefeat extends CardImpl {
|
||||
|
||||
private static final FilterCreaturePermanent filter = new FilterAttackingOrBlockingCreature("white creature that's attacking or blocking");
|
||||
|
||||
static {
|
||||
filter.add(new ColorPredicate(ObjectColor.WHITE));
|
||||
}
|
||||
|
||||
public GideonsDefeat(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{W}");
|
||||
|
||||
// Exile target white creature that's attacking or blocking. If it was a Gideon planeswalker, you gain 5 life.
|
||||
this.getSpellAbility().addEffect(new GideonsDefeatEffect());
|
||||
this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter));
|
||||
}
|
||||
|
||||
public GideonsDefeat(final GideonsDefeat card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public GideonsDefeat copy() {
|
||||
return new GideonsDefeat(this);
|
||||
}
|
||||
}
|
||||
|
||||
class GideonsDefeatEffect extends OneShotEffect {
|
||||
|
||||
public GideonsDefeatEffect() {
|
||||
super(Outcome.Exile);
|
||||
staticText = "Exile target white creature that's attacking or blocking. If it was a Gideon planeswalker, you gain 5 life";
|
||||
}
|
||||
|
||||
public GideonsDefeatEffect(final GideonsDefeatEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public GideonsDefeatEffect copy() {
|
||||
return new GideonsDefeatEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Player controller = game.getPlayer(source.getControllerId());
|
||||
Permanent permanent = game.getPermanent(getTargetPointer().getFirst(game, source));
|
||||
if (controller != null && permanent != null) {
|
||||
controller.moveCards(permanent, Zone.EXILED, source, game);
|
||||
game.applyEffects();
|
||||
if (permanent.isPlaneswalker() && permanent.hasSubtype(SubType.GIDEON.getDescription(), game)) {
|
||||
controller.gainLife(5, game);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
37
Mage.Sets/src/mage/cards/g/GiftOfStrength.java
Normal file
37
Mage.Sets/src/mage/cards/g/GiftOfStrength.java
Normal file
|
@ -0,0 +1,37 @@
|
|||
package mage.cards.g;
|
||||
|
||||
import mage.abilities.effects.Effect;
|
||||
import mage.abilities.effects.common.continuous.BoostTargetEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
|
||||
import mage.abilities.keyword.ReachAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class GiftOfStrength extends CardImpl {
|
||||
|
||||
public GiftOfStrength(UUID ownerId, CardSetInfo cardSetInfo) {
|
||||
super(ownerId, cardSetInfo, new CardType[]{CardType.INSTANT}, "{1}{G}");
|
||||
|
||||
// Target creature gets +3/+3 and gains reach until end of turn.
|
||||
Effect effect = new BoostTargetEffect(3, 3, Duration.EndOfTurn);
|
||||
effect.setText("Target creature gets +3/+3");
|
||||
this.getSpellAbility().addEffect(effect);
|
||||
effect = new GainAbilityTargetEffect(ReachAbility.getInstance(), Duration.EndOfTurn);
|
||||
effect.setText("and gains reach until end of turn");
|
||||
this.getSpellAbility().addEffect(effect);
|
||||
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
||||
}
|
||||
|
||||
public GiftOfStrength(final GiftOfStrength giftOfStrength) {
|
||||
super(giftOfStrength);
|
||||
}
|
||||
|
||||
public GiftOfStrength copy() {
|
||||
return new GiftOfStrength(this);
|
||||
}
|
||||
}
|
108
Mage.Sets/src/mage/cards/g/GildedCerodon.java
Normal file
108
Mage.Sets/src/mage/cards/g/GildedCerodon.java
Normal file
|
@ -0,0 +1,108 @@
|
|||
/*
|
||||
* 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.cards.g;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.AttacksTriggeredAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.decorator.ConditionalTriggeredAbility;
|
||||
import mage.abilities.effects.common.combat.CantBlockTargetEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.predicate.mageobject.SubtypePredicate;
|
||||
import mage.game.Game;
|
||||
import mage.players.Player;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jeffwadsworth
|
||||
*/
|
||||
public class GildedCerodon extends CardImpl {
|
||||
|
||||
private static final String rule = "Whenever {this} attacks, if you control a Desert or there is a Desert card in your graveyard, target creature can't block this turn.";
|
||||
|
||||
public GildedCerodon(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{R}");
|
||||
|
||||
this.subtype.add("Beast");
|
||||
|
||||
this.power = new MageInt(4);
|
||||
this.toughness = new MageInt(4);
|
||||
|
||||
// Whenever Gilded Cerodon attacks, if you control a Desert or there is a Desert card in your graveyard, target creature can't block this turn.
|
||||
Ability ability = new ConditionalTriggeredAbility(new AttacksTriggeredAbility(new CantBlockTargetEffect(Duration.EndOfTurn), false), new GildedCerodonCondition(), rule);
|
||||
ability.addTarget(new TargetCreaturePermanent());
|
||||
this.addAbility(ability);
|
||||
|
||||
}
|
||||
|
||||
public GildedCerodon(final GildedCerodon card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public GildedCerodon copy() {
|
||||
return new GildedCerodon(this);
|
||||
}
|
||||
}
|
||||
|
||||
class GildedCerodonCondition implements Condition {
|
||||
|
||||
private static final FilterPermanent filter = new FilterPermanent();
|
||||
private static final FilterCard filter2 = new FilterCard();
|
||||
|
||||
static {
|
||||
filter.add(new SubtypePredicate(SubType.DESERT));
|
||||
filter2.add(new SubtypePredicate(SubType.DESERT));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Player controller = game.getPlayer(source.getControllerId());
|
||||
if (controller != null
|
||||
&& !game.getBattlefield().getAllActivePermanents(filter, source.getControllerId(), game).isEmpty()
|
||||
|| controller.getGraveyard().count(filter2, game) > 0) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "if you control a Desert or there is a Desert card in your graveyard";
|
||||
}
|
||||
|
||||
}
|
|
@ -38,34 +38,27 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.Zone;
|
||||
import mage.counters.CounterType;
|
||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||
import mage.filter.predicate.permanent.AnotherPredicate;
|
||||
import mage.target.common.TargetControlledCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.filter.StaticFilters;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public class GobblingOoze extends CardImpl {
|
||||
|
||||
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another creature");
|
||||
|
||||
static {
|
||||
filter.add(new AnotherPredicate());
|
||||
}
|
||||
|
||||
public GobblingOoze(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{G}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{G}");
|
||||
this.subtype.add("Ooze");
|
||||
|
||||
this.power = new MageInt(3);
|
||||
this.toughness = new MageInt(3);
|
||||
|
||||
// {G}, Sacrifice another creature: Put a +1/+1 counter on Gobbling Ooze.
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.P1P1.createInstance(1)),new ManaCostsImpl("{G}"));
|
||||
ability.addCost(new SacrificeTargetCost(new TargetControlledCreaturePermanent(1, 1, filter, false)));
|
||||
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.P1P1.createInstance(1)), new ManaCostsImpl("{G}"));
|
||||
ability.addCost(new SacrificeTargetCost(new TargetControlledCreaturePermanent(1, 1, StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE, false)));
|
||||
this.addAbility(ability);
|
||||
}
|
||||
|
||||
|
|
124
Mage.Sets/src/mage/cards/g/GoblinShrine.java
Normal file
124
Mage.Sets/src/mage/cards/g/GoblinShrine.java
Normal file
|
@ -0,0 +1,124 @@
|
|||
/*
|
||||
* 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.cards.g;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.target.common.TargetLandPermanent;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.LeavesBattlefieldTriggeredAbility;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.condition.Condition;
|
||||
import mage.abilities.decorator.ConditionalContinuousEffect;
|
||||
import mage.abilities.effects.common.AttachEffect;
|
||||
import mage.abilities.effects.common.DamageAllEffect;
|
||||
import mage.abilities.effects.common.continuous.BoostAllEffect;
|
||||
import mage.constants.Outcome;
|
||||
import mage.target.TargetPermanent;
|
||||
import mage.abilities.keyword.EnchantAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.filter.common.FilterLandPermanent;
|
||||
import mage.filter.predicate.mageobject.SubtypePredicate;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jeffwadsworth
|
||||
*/
|
||||
public class GoblinShrine extends CardImpl {
|
||||
|
||||
private static final FilterCreaturePermanent filterGoblin = new FilterCreaturePermanent("Goblin creature");
|
||||
private static final String rule = "As long as enchanted land is a basic Mountain, Goblin creatures get +1/+0.";
|
||||
|
||||
static {
|
||||
filterGoblin.add(new SubtypePredicate(SubType.GOBLIN));
|
||||
}
|
||||
|
||||
public GoblinShrine(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{R}{R}");
|
||||
|
||||
this.subtype.add("Aura");
|
||||
|
||||
// Enchant land
|
||||
TargetPermanent auraTarget = new TargetLandPermanent();
|
||||
this.getSpellAbility().addTarget(auraTarget);
|
||||
this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
|
||||
Ability ability = new EnchantAbility(auraTarget.getTargetName());
|
||||
this.addAbility(ability);
|
||||
|
||||
// As long as enchanted land is a basic Mountain, Goblin creatures get +1/+0.
|
||||
ConditionalContinuousEffect effect = new ConditionalContinuousEffect(new BoostAllEffect(1, 0, Duration.WhileOnBattlefield, filterGoblin, false), new EnchantedPermanentSubtypeCondition(SubType.MOUNTAIN), rule);
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
|
||||
|
||||
// When Goblin Shrine leaves the battlefield, it deals 1 damage to each Goblin creature.
|
||||
this.addAbility(new LeavesBattlefieldTriggeredAbility(new DamageAllEffect(1, filterGoblin), false));
|
||||
|
||||
}
|
||||
|
||||
public GoblinShrine(final GoblinShrine card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public GoblinShrine copy() {
|
||||
return new GoblinShrine(this);
|
||||
}
|
||||
}
|
||||
|
||||
class EnchantedPermanentSubtypeCondition implements Condition {
|
||||
|
||||
private final FilterLandPermanent filter = new FilterLandPermanent();
|
||||
|
||||
public EnchantedPermanentSubtypeCondition(SubType subType) {
|
||||
filter.add(new SubtypePredicate(subType));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Permanent enchantment = game.getPermanent(source.getSourceId());
|
||||
if (enchantment != null) {
|
||||
Permanent permanent = game.getPermanent(enchantment.getAttachedTo());
|
||||
if (permanent != null) {
|
||||
return filter.match(permanent, source.getSourceId(), enchantment.getControllerId(), game);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return filter.getMessage();
|
||||
}
|
||||
|
||||
}
|
73
Mage.Sets/src/mage/cards/g/GodPharaohsFaithful.java
Normal file
73
Mage.Sets/src/mage/cards/g/GodPharaohsFaithful.java
Normal file
|
@ -0,0 +1,73 @@
|
|||
/*
|
||||
* 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.cards.g;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.ObjectColor;
|
||||
import mage.abilities.common.SpellCastControllerTriggeredAbility;
|
||||
import mage.abilities.effects.common.GainLifeEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.filter.FilterSpell;
|
||||
import mage.filter.predicate.Predicates;
|
||||
import mage.filter.predicate.mageobject.ColorPredicate;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author emerald000
|
||||
*/
|
||||
public class GodPharaohsFaithful extends CardImpl {
|
||||
|
||||
private static final FilterSpell filter = new FilterSpell("a blue, black or red spell");
|
||||
static {
|
||||
filter.add(Predicates.or(new ColorPredicate(ObjectColor.BLUE), new ColorPredicate(ObjectColor.BLACK), new ColorPredicate(ObjectColor.RED)));
|
||||
}
|
||||
|
||||
public GodPharaohsFaithful(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{W}");
|
||||
|
||||
this.subtype.add("Human");
|
||||
this.subtype.add("Wizard");
|
||||
this.power = new MageInt(0);
|
||||
this.toughness = new MageInt(4);
|
||||
|
||||
// Whenever you cast a blue, black or red spell, you gain 1 life.
|
||||
this.addAbility(new SpellCastControllerTriggeredAbility(new GainLifeEffect(1), filter, false));
|
||||
}
|
||||
|
||||
public GodPharaohsFaithful(final GodPharaohsFaithful card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public GodPharaohsFaithful copy() {
|
||||
return new GodPharaohsFaithful(this);
|
||||
}
|
||||
}
|
129
Mage.Sets/src/mage/cards/g/GodPharaohsGift.java
Normal file
129
Mage.Sets/src/mage/cards/g/GodPharaohsGift.java
Normal file
|
@ -0,0 +1,129 @@
|
|||
/*
|
||||
* 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.cards.g;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.ObjectColor;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.BeginningOfCombatTriggeredAbility;
|
||||
import mage.abilities.effects.ContinuousEffect;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
|
||||
import mage.abilities.keyword.HasteAbility;
|
||||
import mage.cards.Card;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.TargetController;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.common.FilterCreatureCard;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.game.permanent.token.EmptyToken;
|
||||
import mage.players.Player;
|
||||
import mage.target.common.TargetCardInYourGraveyard;
|
||||
import mage.target.targetpointer.FixedTarget;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jeffwadsworth
|
||||
*/
|
||||
public class GodPharaohsGift extends CardImpl {
|
||||
|
||||
public GodPharaohsGift(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{7}");
|
||||
|
||||
// At the beginning of combat on your turn, you may exile a creature card from your graveyard. If you do, create a token that's a copy of that card, except it's a 4/4 black Zombie. It gains haste until end of turn.
|
||||
this.addAbility(new BeginningOfCombatTriggeredAbility(Zone.BATTLEFIELD, new GodPharaohsGiftEffect(), TargetController.YOU, true, false));
|
||||
|
||||
}
|
||||
|
||||
public GodPharaohsGift(final GodPharaohsGift card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public GodPharaohsGift copy() {
|
||||
return new GodPharaohsGift(this);
|
||||
}
|
||||
}
|
||||
|
||||
class GodPharaohsGiftEffect extends OneShotEffect {
|
||||
|
||||
private static final FilterCreatureCard filter = new FilterCreatureCard("creature card from your graveyard");
|
||||
private UUID exileId = UUID.randomUUID();
|
||||
|
||||
public GodPharaohsGiftEffect() {
|
||||
super(Outcome.PutCreatureInPlay);
|
||||
this.staticText = "you may exile a creature card from your graveyard. If you do, create a token that's a copy of that card, except it's a 4/4 black Zombie. It gains haste until end of turn";
|
||||
}
|
||||
|
||||
public GodPharaohsGiftEffect(final GodPharaohsGiftEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public GodPharaohsGiftEffect copy() {
|
||||
return new GodPharaohsGiftEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Player controller = game.getPlayer(source.getControllerId());
|
||||
TargetCardInYourGraveyard target = new TargetCardInYourGraveyard(filter);
|
||||
target.setNotTarget(true);
|
||||
if (controller != null
|
||||
&& !controller.getGraveyard().getCards(filter, game).isEmpty()
|
||||
&& controller.choose(Outcome.PutCreatureInPlay, target, source.getId(), game)) {
|
||||
Card cardChosen = game.getCard(target.getFirstTarget());
|
||||
if (cardChosen != null
|
||||
&& cardChosen.moveToExile(exileId, "God-Pharaoh's Gift", source.getId(), game)) {
|
||||
EmptyToken token = new EmptyToken();
|
||||
CardUtil.copyTo(token).from(cardChosen);
|
||||
token.getPower().modifyBaseValue(4);
|
||||
token.getToughness().modifyBaseValue(4);
|
||||
token.getColor(game).setColor(ObjectColor.BLACK);
|
||||
token.getSubtype(game).clear();
|
||||
token.getSubtype(game).add("Zombie");
|
||||
if (token.putOntoBattlefield(1, game, source.getSourceId(), source.getControllerId())) {
|
||||
Permanent tokenPermanent = game.getPermanent(token.getLastAddedToken());
|
||||
if (tokenPermanent != null) {
|
||||
ContinuousEffect effect = new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn);
|
||||
effect.setTargetPointer(new FixedTarget(tokenPermanent.getId()));
|
||||
game.addEffect(effect, source);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
|
@ -27,6 +27,7 @@
|
|||
*/
|
||||
package mage.cards.g;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
||||
import mage.abilities.effects.common.continuous.BoostControlledEffect;
|
||||
|
@ -35,22 +36,13 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||
import mage.filter.predicate.permanent.AnotherPredicate;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.filter.StaticFilters;
|
||||
|
||||
/**
|
||||
* @author Loki
|
||||
*/
|
||||
public class GoldnightCommander extends CardImpl {
|
||||
|
||||
private final static FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another creature");
|
||||
|
||||
static {
|
||||
filter.add(new AnotherPredicate());
|
||||
}
|
||||
|
||||
public GoldnightCommander(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
|
||||
this.subtype.add("Human");
|
||||
|
@ -61,7 +53,8 @@ public class GoldnightCommander extends CardImpl {
|
|||
this.toughness = new MageInt(2);
|
||||
|
||||
// Whenever another creature enters the battlefield under your control, creatures you control get +1/+1 until end of turn.
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.EndOfTurn), filter, false, null, true));
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD,
|
||||
new BoostControlledEffect(1, 1, Duration.EndOfTurn), StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE, false, null, true));
|
||||
}
|
||||
|
||||
public GoldnightCommander(final GoldnightCommander card) {
|
||||
|
|
36
Mage.Sets/src/mage/cards/g/GraniticTitan.java
Normal file
36
Mage.Sets/src/mage/cards/g/GraniticTitan.java
Normal file
|
@ -0,0 +1,36 @@
|
|||
package mage.cards.g;
|
||||
|
||||
import mage.MageInt;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.keyword.CyclingAbility;
|
||||
import mage.abilities.keyword.MenaceAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class GraniticTitan extends CardImpl {
|
||||
|
||||
public GraniticTitan(UUID ownerId, CardSetInfo cardSetInfo){
|
||||
super(ownerId, cardSetInfo, new CardType[]{CardType.CREATURE},"{4}{R}{R}");
|
||||
subtype.add("Elemental");
|
||||
power = new MageInt(5);
|
||||
toughness = new MageInt(4);
|
||||
|
||||
// Menace
|
||||
addAbility(new MenaceAbility());
|
||||
|
||||
// Cycling {2}
|
||||
addAbility(new CyclingAbility(new ManaCostsImpl<>("{2}")));
|
||||
|
||||
}
|
||||
|
||||
public GraniticTitan(final GraniticTitan graniticTitan){
|
||||
super(graniticTitan);
|
||||
}
|
||||
|
||||
public GraniticTitan copy(){
|
||||
return new GraniticTitan(this);
|
||||
}
|
||||
}
|
93
Mage.Sets/src/mage/cards/g/GravenAbomination.java
Normal file
93
Mage.Sets/src/mage/cards/g/GravenAbomination.java
Normal file
|
@ -0,0 +1,93 @@
|
|||
/*
|
||||
* 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.cards.g;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.AttacksTriggeredAbility;
|
||||
import mage.abilities.effects.common.ExileTargetEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.filter.FilterCard;
|
||||
import mage.filter.predicate.other.OwnerIdPredicate;
|
||||
import mage.game.Game;
|
||||
import mage.players.Player;
|
||||
import mage.target.common.TargetCardInGraveyard;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jeffwadsworth
|
||||
*/
|
||||
public class GravenAbomination extends CardImpl {
|
||||
|
||||
private final UUID originalId;
|
||||
|
||||
private final static String rule = "Whenever {this} attacks, exile target card from defending player's graveyard.";
|
||||
|
||||
public GravenAbomination(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{3}");
|
||||
|
||||
this.subtype.add("Horror");
|
||||
this.power = new MageInt(3);
|
||||
this.toughness = new MageInt(1);
|
||||
|
||||
// Whenever Graven Abomination attacks, exile target card from defending player's graveyard.
|
||||
Ability ability = new AttacksTriggeredAbility(new ExileTargetEffect(), false, rule);
|
||||
ability.addTarget(new TargetCardInGraveyard());
|
||||
this.addAbility(ability);
|
||||
originalId = ability.getOriginalId();
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void adjustTargets(Ability ability, Game game) {
|
||||
UUID gravenAbominationId = ability.getSourceId();
|
||||
FilterCard filter = new FilterCard("target card from defending player's graveyard");
|
||||
if (ability.getOriginalId().equals(originalId)) {
|
||||
UUID defendingPlayerId = game.getCombat().getDefendingPlayerId(gravenAbominationId, game);
|
||||
Player defendingPlayer = game.getPlayer(defendingPlayerId);
|
||||
if (defendingPlayer != null) {
|
||||
filter.add(new OwnerIdPredicate(defendingPlayerId));
|
||||
ability.getTargets().clear();
|
||||
ability.getTargets().add(new TargetCardInGraveyard(filter));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public GravenAbomination(final GravenAbomination card) {
|
||||
super(card);
|
||||
this.originalId = card.originalId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public GravenAbomination copy() {
|
||||
return new GravenAbomination(this);
|
||||
}
|
||||
}
|
|
@ -36,10 +36,9 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||
import mage.filter.predicate.permanent.AnotherPredicate;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.filter.StaticFilters;
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -47,12 +46,6 @@ import java.util.UUID;
|
|||
*/
|
||||
public class GriffinProtector extends CardImpl {
|
||||
|
||||
private final static FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another creature");
|
||||
|
||||
static {
|
||||
filter.add(new AnotherPredicate());
|
||||
}
|
||||
|
||||
public GriffinProtector(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
|
||||
this.subtype.add("Griffin");
|
||||
|
@ -64,7 +57,8 @@ public class GriffinProtector extends CardImpl {
|
|||
this.addAbility(FlyingAbility.getInstance());
|
||||
|
||||
// Whenever another creature enters the battlefield under your control, Griffin Protector gets +1/+1 until end of turn.
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new BoostSourceEffect(1, 1, Duration.EndOfTurn), filter, false, null, true));
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new BoostSourceEffect(1, 1, Duration.EndOfTurn),
|
||||
StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE, false, null, true));
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -43,9 +43,7 @@ import mage.constants.CardType;
|
|||
import mage.constants.SuperType;
|
||||
import mage.constants.Zone;
|
||||
import mage.counters.CounterType;
|
||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.filter.predicate.permanent.AnotherPredicate;
|
||||
import mage.filter.predicate.permanent.ControllerIdPredicate;
|
||||
import mage.game.Game;
|
||||
import mage.game.events.GameEvent;
|
||||
|
@ -54,6 +52,7 @@ import mage.target.common.TargetControlledCreaturePermanent;
|
|||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.filter.StaticFilters;
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -61,13 +60,8 @@ import java.util.UUID;
|
|||
*/
|
||||
public class GrimgrinCorpseBorn extends CardImpl {
|
||||
|
||||
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another creature");
|
||||
static {
|
||||
filter.add(new AnotherPredicate());
|
||||
}
|
||||
|
||||
public GrimgrinCorpseBorn(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}{B}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}{B}");
|
||||
addSuperType(SuperType.LEGENDARY);
|
||||
this.subtype.add("Zombie");
|
||||
this.subtype.add("Warrior");
|
||||
|
@ -80,10 +74,10 @@ public class GrimgrinCorpseBorn extends CardImpl {
|
|||
"{this} enters the battlefield tapped and doesn't untap during your untap step.");
|
||||
ability.addEffect(new DontUntapInControllersUntapStepSourceEffect());
|
||||
this.addAbility(ability);
|
||||
|
||||
|
||||
// Sacrifice another creature: Untap Grimgrin and put a +1/+1 counter on it.
|
||||
ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new UntapSourceEffect(),
|
||||
new SacrificeTargetCost(new TargetControlledCreaturePermanent(1, 1, filter, false)));
|
||||
new SacrificeTargetCost(new TargetControlledCreaturePermanent(1, 1, StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE, false)));
|
||||
ability.addEffect(new AddCountersSourceEffect(CounterType.P1P1.createInstance()));
|
||||
this.addAbility(ability);
|
||||
// Whenever Grimgrin attacks, destroy target creature defending player controls, then put a +1/+1 counter on Grimgrin.
|
||||
|
@ -140,4 +134,4 @@ class GrimgrinCorpseBornAbility extends TriggeredAbilityImpl {
|
|||
public GrimgrinCorpseBornAbility copy() {
|
||||
return new GrimgrinCorpseBornAbility(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
80
Mage.Sets/src/mage/cards/g/GrindDust.java
Normal file
80
Mage.Sets/src/mage/cards/g/GrindDust.java
Normal file
|
@ -0,0 +1,80 @@
|
|||
/*
|
||||
* 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.cards.g;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.effects.Effect;
|
||||
import mage.abilities.effects.common.ExileTargetEffect;
|
||||
import mage.abilities.effects.common.counter.AddCountersTargetEffect;
|
||||
import mage.abilities.keyword.AftermathAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.cards.SplitCard;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SpellAbilityType;
|
||||
import mage.counters.CounterType;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.filter.predicate.permanent.CounterPredicate;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public class GrindDust extends SplitCard {
|
||||
|
||||
public GrindDust(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, new CardType[]{CardType.SORCERY}, "{1}{B}", "{3}{W}", SpellAbilityType.SPLIT_AFTERMATH);
|
||||
|
||||
// Grind
|
||||
// Put a -1/-1 counter on each of up to two target creatures.
|
||||
Effect effect = new AddCountersTargetEffect(CounterType.M1M1.createInstance());
|
||||
effect.setText("Put a -1/-1 counter on each of up to two target creatures");
|
||||
getLeftHalfCard().getSpellAbility().addEffect(effect);
|
||||
getLeftHalfCard().getSpellAbility().addTarget(new TargetCreaturePermanent(0, 2));
|
||||
|
||||
// Dust
|
||||
// Aftermath
|
||||
((CardImpl) (getRightHalfCard())).addAbility(new AftermathAbility().setRuleAtTheTop(true));
|
||||
// Exile any number of target creatures that have -1/-1 counters on them.
|
||||
getRightHalfCard().getSpellAbility().addEffect(new ExileTargetEffect());
|
||||
FilterCreaturePermanent filter = new FilterCreaturePermanent();
|
||||
filter.add(new CounterPredicate(CounterType.M1M1));
|
||||
getRightHalfCard().getSpellAbility().addTarget(new TargetCreaturePermanent(0, Integer.MAX_VALUE, filter, false));
|
||||
|
||||
}
|
||||
|
||||
public GrindDust(final GrindDust card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public GrindDust copy() {
|
||||
return new GrindDust(this);
|
||||
}
|
||||
}
|
59
Mage.Sets/src/mage/cards/h/HarrierNaga.java
Normal file
59
Mage.Sets/src/mage/cards/h/HarrierNaga.java
Normal file
|
@ -0,0 +1,59 @@
|
|||
/*
|
||||
* 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.cards.h;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author ciaccona007
|
||||
*/
|
||||
public class HarrierNaga extends CardImpl {
|
||||
|
||||
public HarrierNaga(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{G}");
|
||||
|
||||
this.subtype.add("Naga");
|
||||
this.subtype.add("Warrior");
|
||||
this.power = new MageInt(3);
|
||||
this.toughness = new MageInt(3);
|
||||
}
|
||||
|
||||
public HarrierNaga(final HarrierNaga card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public HarrierNaga copy() {
|
||||
return new HarrierNaga(this);
|
||||
}
|
||||
}
|
|
@ -35,8 +35,7 @@ import mage.cards.CardImpl;
|
|||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||
import mage.filter.predicate.permanent.AnotherPredicate;
|
||||
import mage.filter.StaticFilters;
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -44,12 +43,6 @@ import mage.filter.predicate.permanent.AnotherPredicate;
|
|||
*/
|
||||
public class HealerOfThePride extends CardImpl {
|
||||
|
||||
private final static FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another creature");
|
||||
|
||||
static {
|
||||
filter.add(new AnotherPredicate());
|
||||
}
|
||||
|
||||
public HealerOfThePride(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{W}");
|
||||
this.subtype.add("Cat");
|
||||
|
@ -59,7 +52,8 @@ public class HealerOfThePride extends CardImpl {
|
|||
this.toughness = new MageInt(3);
|
||||
|
||||
// Whenever another creature enters the battlefield under your control, you gain 2 life.
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new GainLifeEffect(2), filter, false, null, true));
|
||||
this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new GainLifeEffect(2),
|
||||
StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE, false, null, true));
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -43,8 +43,7 @@ import mage.cards.CardSetInfo;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||
import mage.filter.predicate.permanent.AnotherPredicate;
|
||||
import mage.filter.StaticFilters;
|
||||
import mage.game.Game;
|
||||
import mage.game.events.GameEvent;
|
||||
import mage.game.events.GameEvent.EventType;
|
||||
|
@ -91,12 +90,6 @@ public class HeartPiercerManticore extends CardImpl {
|
|||
|
||||
class HeartPiercerManticoreSacrificeEffect extends OneShotEffect {
|
||||
|
||||
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another creature");
|
||||
|
||||
static {
|
||||
filter.add(new AnotherPredicate());
|
||||
}
|
||||
|
||||
public HeartPiercerManticoreSacrificeEffect() {
|
||||
super(Outcome.Damage);
|
||||
this.staticText = "you may sacrifice another creature";
|
||||
|
@ -115,7 +108,7 @@ class HeartPiercerManticoreSacrificeEffect extends OneShotEffect {
|
|||
public boolean apply(Game game, Ability source) {
|
||||
Player controller = game.getPlayer(source.getControllerId());
|
||||
if (controller != null) {
|
||||
Target target = new TargetControlledCreaturePermanent(1, 1, filter, true);
|
||||
Target target = new TargetControlledCreaturePermanent(1, 1, StaticFilters.FILTER_CONTROLLED_ANOTHER_CREATURE, true);
|
||||
if (controller.choose(outcome, target, source.getSourceId(), game)) {
|
||||
Permanent toSacrifice = game.getPermanent(target.getFirstTarget());
|
||||
if (toSacrifice != null) {
|
||||
|
|
123
Mage.Sets/src/mage/cards/h/HollowOne.java
Normal file
123
Mage.Sets/src/mage/cards/h/HollowOne.java
Normal file
|
@ -0,0 +1,123 @@
|
|||
/*
|
||||
* 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.cards.h;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.SpellAbility;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.common.cost.CostModificationEffectImpl;
|
||||
import mage.abilities.keyword.CyclingAbility;
|
||||
import mage.cards.Card;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.CostModificationType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.Zone;
|
||||
import mage.game.Game;
|
||||
import mage.players.Player;
|
||||
import mage.util.CardUtil;
|
||||
import mage.watchers.common.CardsCycledOrDiscardedThisTurnWatcher;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author spjspj
|
||||
*/
|
||||
public class HollowOne extends CardImpl {
|
||||
|
||||
public HollowOne(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{5}");
|
||||
|
||||
this.subtype.add("Golem");
|
||||
this.power = new MageInt(4);
|
||||
this.toughness = new MageInt(4);
|
||||
|
||||
// Hollow One costs {2} less to cast for each card you've cycled or discarded this turn.
|
||||
Ability ability = new SimpleStaticAbility(Zone.ALL, new HollowOneReductionEffect());
|
||||
ability.setRuleAtTheTop(true);
|
||||
this.addAbility(ability, new CardsCycledOrDiscardedThisTurnWatcher());
|
||||
|
||||
// Cycling {2}
|
||||
this.addAbility(new CyclingAbility(new ManaCostsImpl("{2}")));
|
||||
}
|
||||
|
||||
public HollowOne(final HollowOne card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public HollowOne copy() {
|
||||
return new HollowOne(this);
|
||||
}
|
||||
}
|
||||
|
||||
class HollowOneReductionEffect extends CostModificationEffectImpl {
|
||||
|
||||
public HollowOneReductionEffect() {
|
||||
super(Duration.WhileOnStack, Outcome.Benefit, CostModificationType.REDUCE_COST);
|
||||
staticText = "{this} costs {2} less to cast for each card you've cycled or discarded this turn";
|
||||
}
|
||||
|
||||
protected HollowOneReductionEffect(HollowOneReductionEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source, Ability abilityToModify) {
|
||||
Player controller = game.getPlayer(source.getControllerId());
|
||||
CardsCycledOrDiscardedThisTurnWatcher watcher = (CardsCycledOrDiscardedThisTurnWatcher) game.getState().getWatchers().get(CardsCycledOrDiscardedThisTurnWatcher.class.getSimpleName());
|
||||
int reductionAmount = 0;
|
||||
if (controller != null
|
||||
&& watcher != null) {
|
||||
for (Card card : watcher.getCardsCycledOrDiscardedThisTurn(controller.getId()).getCards(game)) {
|
||||
if (card.getOwnerId().equals(controller.getId())) {
|
||||
reductionAmount++;
|
||||
}
|
||||
}
|
||||
CardUtil.reduceCost(abilityToModify, reductionAmount * 2);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean applies(Ability abilityToModify, Ability source, Game game) {
|
||||
return abilityToModify instanceof SpellAbility
|
||||
&& abilityToModify.getSourceId().equals(source.getSourceId())
|
||||
&& game.getCard(abilityToModify.getSourceId()) != null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public HollowOneReductionEffect copy() {
|
||||
return new HollowOneReductionEffect(this);
|
||||
}
|
||||
}
|
117
Mage.Sets/src/mage/cards/h/HourOfEternity.java
Normal file
117
Mage.Sets/src/mage/cards/h/HourOfEternity.java
Normal file
|
@ -0,0 +1,117 @@
|
|||
/*
|
||||
* 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.cards.h;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import mage.ObjectColor;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.cards.Card;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.common.FilterCreatureCard;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.token.EmptyToken;
|
||||
import mage.players.Player;
|
||||
import mage.target.common.TargetCardInYourGraveyard;
|
||||
import mage.util.CardUtil;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author emerald000
|
||||
*/
|
||||
public class HourOfEternity extends CardImpl {
|
||||
|
||||
public HourOfEternity(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{X}{X}{U}{U}{U}");
|
||||
|
||||
// Exile X target creature cards from your graveyard. For each card exiled this way, create a token that's a copy of that card, except it's a 4/4 black Zombie.
|
||||
this.getSpellAbility().addEffect(new HourOfEternityEffect());
|
||||
this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, Integer.MAX_VALUE, new FilterCreatureCard("creature cards from your graveyard")));
|
||||
}
|
||||
|
||||
public HourOfEternity(final HourOfEternity card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public HourOfEternity copy() {
|
||||
return new HourOfEternity(this);
|
||||
}
|
||||
}
|
||||
|
||||
class HourOfEternityEffect extends OneShotEffect {
|
||||
|
||||
HourOfEternityEffect() {
|
||||
super(Outcome.PutCreatureInPlay);
|
||||
this.staticText = "Exile X target creature cards from your graveyard. For each card exiled this way, create a token that's a copy of that card, except it's a 4/4 black Zombie";
|
||||
}
|
||||
|
||||
HourOfEternityEffect(final HourOfEternityEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public HourOfEternityEffect copy() {
|
||||
return new HourOfEternityEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Player controller = game.getPlayer(source.getControllerId());
|
||||
if (controller != null) {
|
||||
Set<Card> cardsToExile = new HashSet<>(this.getTargetPointer().getTargets(game, source).size());
|
||||
for (UUID targetId : this.getTargetPointer().getTargets(game, source)) {
|
||||
Card card = controller.getGraveyard().get(targetId, game);
|
||||
if (card != null) {
|
||||
cardsToExile.add(card);
|
||||
}
|
||||
}
|
||||
controller.moveCardsToExile(cardsToExile, source, game, true, null, "");
|
||||
for (Card card : cardsToExile) {
|
||||
if (game.getState().getZone(card.getId()) == Zone.EXILED) {
|
||||
EmptyToken token = new EmptyToken();
|
||||
CardUtil.copyTo(token).from(card);
|
||||
token.getPower().modifyBaseValue(4);
|
||||
token.getToughness().modifyBaseValue(4);
|
||||
token.getColor(game).setColor(ObjectColor.BLACK);
|
||||
token.getSubtype(game).clear();
|
||||
token.getSubtype(game).add("Zombie");
|
||||
token.putOntoBattlefield(1, game, source.getSourceId(), source.getControllerId());
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
113
Mage.Sets/src/mage/cards/h/HourOfGlory.java
Normal file
113
Mage.Sets/src/mage/cards/h/HourOfGlory.java
Normal file
|
@ -0,0 +1,113 @@
|
|||
/*
|
||||
* 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.cards.h;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import mage.MageObject;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.cards.Card;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Outcome;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Zone;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.players.Player;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public class HourOfGlory extends CardImpl {
|
||||
|
||||
public HourOfGlory(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{3}{B}");
|
||||
|
||||
// Exile target creature. If that creature was a God, its controller reveals his or her hand and exiles all cards with the same name as that creature.
|
||||
this.getSpellAbility().addEffect(new HourOfGloryEffect());
|
||||
}
|
||||
|
||||
public HourOfGlory(final HourOfGlory card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public HourOfGlory copy() {
|
||||
return new HourOfGlory(this);
|
||||
}
|
||||
}
|
||||
|
||||
class HourOfGloryEffect extends OneShotEffect {
|
||||
|
||||
public HourOfGloryEffect() {
|
||||
super(Outcome.Exile);
|
||||
this.staticText = "Exile target creature. If that creature was a God, its controller reveals his or her hand and exiles all cards with the same name as that creature";
|
||||
}
|
||||
|
||||
public HourOfGloryEffect(final HourOfGloryEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public HourOfGloryEffect copy() {
|
||||
return new HourOfGloryEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Player controller = game.getPlayer(source.getControllerId());
|
||||
MageObject sourceObject = source.getSourceObject(game);
|
||||
if (controller != null && sourceObject != null) {
|
||||
Permanent targetCreature = game.getPermanent(getTargetPointer().getFirst(game, source));
|
||||
if (targetCreature != null) {
|
||||
controller.moveCards(targetCreature, Zone.EXILED, source, game);
|
||||
if (targetCreature.hasSubtype(SubType.GOD.getDescription(), game)) {
|
||||
game.applyEffects();
|
||||
Player targetController = game.getPlayer(targetCreature.getControllerId());
|
||||
if (targetController != null) {
|
||||
targetController.revealCards(sourceObject.getIdName(), targetController.getHand(), game);
|
||||
Set<Card> toExile = new HashSet<>();
|
||||
for (Card card : targetController.getHand().getCards(game)) {
|
||||
if (card.getName().equals(targetCreature.getName())) {
|
||||
toExile.add(card);
|
||||
}
|
||||
}
|
||||
targetController.moveCards(toExile, Zone.EXILED, source, game);
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
71
Mage.Sets/src/mage/cards/h/HourOfPromise.java
Normal file
71
Mage.Sets/src/mage/cards/h/HourOfPromise.java
Normal file
|
@ -0,0 +1,71 @@
|
|||
/*
|
||||
* 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.cards.h;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.decorator.ConditionalOneShotEffect;
|
||||
import mage.abilities.effects.common.CreateTokenEffect;
|
||||
import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.ComparisonType;
|
||||
import mage.constants.SubType;
|
||||
import mage.filter.FilterPermanent;
|
||||
import mage.filter.common.FilterLandCard;
|
||||
import mage.game.permanent.token.ZombieToken;
|
||||
import mage.target.common.TargetCardInLibrary;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public class HourOfPromise extends CardImpl {
|
||||
|
||||
public HourOfPromise(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{G}");
|
||||
|
||||
// Search your library for up to two land cards and put them onto the battlefield tapped, then shuffle your library.
|
||||
this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(0, 2, new FilterLandCard("land cards")), true));
|
||||
// Then if you control three or more Deserts, create two 2/2 black Zombie creature tokens.
|
||||
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(new CreateTokenEffect(new ZombieToken(), 2),
|
||||
new PermanentsOnTheBattlefieldCondition(new FilterPermanent(SubType.DESERT, "three or more Deserts"), ComparisonType.MORE_THAN, 2, true),
|
||||
"Then if you control three or more Deserts, create two 2/2 black Zombie creature tokens"));
|
||||
|
||||
}
|
||||
|
||||
public HourOfPromise(final HourOfPromise card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public HourOfPromise copy() {
|
||||
return new HourOfPromise(this);
|
||||
}
|
||||
}
|
|
@ -27,7 +27,6 @@
|
|||
*/
|
||||
package mage.cards.h;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition;
|
||||
import mage.abilities.effects.common.DestroyAllEffect;
|
||||
|
@ -39,6 +38,8 @@ import mage.constants.ComparisonType;
|
|||
import mage.constants.Zone;
|
||||
import mage.filter.common.FilterNonlandPermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author fireshoes
|
||||
|
@ -49,8 +50,11 @@ public class HourOfRevelation extends CardImpl {
|
|||
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{W}{W}{W}");
|
||||
|
||||
// Hour of Revelation costs {3} less to cast if there are ten or more nonland permanents on the battlefield.
|
||||
this.addAbility(new SimpleStaticAbility(Zone.STACK,
|
||||
new SpellCostReductionSourceEffect(3, new PermanentsOnTheBattlefieldCondition(new FilterNonlandPermanent(), ComparisonType.MORE_THAN, 9))));
|
||||
SimpleStaticAbility ability = new SimpleStaticAbility(Zone.STACK,
|
||||
new SpellCostReductionSourceEffect(3, new PermanentsOnTheBattlefieldCondition(
|
||||
new FilterNonlandPermanent("there are ten or more nonland permanents on the battlefield"), ComparisonType.MORE_THAN, 9, false)));
|
||||
ability.setRuleAtTheTop(true);
|
||||
this.addAbility(ability);
|
||||
|
||||
// Destroy all nonland permanents.
|
||||
this.getSpellAbility().addEffect(new DestroyAllEffect(new FilterNonlandPermanent("nonland permanents")));
|
||||
|
|
|
@ -29,21 +29,17 @@ package mage.cards.h;
|
|||
|
||||
import java.util.UUID;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.SimpleStaticAbility;
|
||||
import mage.abilities.effects.RestrictionEffect;
|
||||
import mage.abilities.effects.common.combat.CantBlockUnlessYouControlSourceEffect;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Zone;
|
||||
import mage.filter.common.FilterControlledPermanent;
|
||||
import mage.filter.predicate.Predicates;
|
||||
import mage.filter.predicate.mageobject.SubtypePredicate;
|
||||
import mage.filter.predicate.permanent.AnotherPredicate;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -51,14 +47,21 @@ import mage.game.permanent.Permanent;
|
|||
*/
|
||||
public class HowlpackWolf extends CardImpl {
|
||||
|
||||
private static final FilterControlledPermanent filter = new FilterControlledPermanent("another Wolf or Werewolf");
|
||||
|
||||
static {
|
||||
filter.add(Predicates.or(new SubtypePredicate(SubType.WOLF), new SubtypePredicate(SubType.WEREWOLF)));
|
||||
filter.add(new AnotherPredicate());
|
||||
}
|
||||
|
||||
public HowlpackWolf(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{R}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{R}");
|
||||
this.subtype.add("Wolf");
|
||||
this.power = new MageInt(3);
|
||||
this.toughness = new MageInt(3);
|
||||
|
||||
// Howlpack Wolf can't block unless you control another Wolf or Werewolf.
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new HowlpackWolfRestrictionEffect()));
|
||||
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantBlockUnlessYouControlSourceEffect(filter)));
|
||||
}
|
||||
|
||||
public HowlpackWolf(final HowlpackWolf card) {
|
||||
|
@ -70,39 +73,3 @@ public class HowlpackWolf extends CardImpl {
|
|||
return new HowlpackWolf(this);
|
||||
}
|
||||
}
|
||||
|
||||
class HowlpackWolfRestrictionEffect extends RestrictionEffect {
|
||||
|
||||
private static final FilterControlledPermanent filter = new FilterControlledPermanent("another Wolf or Werewolf");
|
||||
|
||||
static {
|
||||
filter.add(Predicates.or(new SubtypePredicate(SubType.WOLF), new SubtypePredicate(SubType.WEREWOLF)));
|
||||
filter.add(new AnotherPredicate());
|
||||
}
|
||||
|
||||
public HowlpackWolfRestrictionEffect() {
|
||||
super(Duration.WhileOnBattlefield);
|
||||
|
||||
staticText = "{this} can't block unless you control another Wolf or Werewolf";
|
||||
}
|
||||
|
||||
public HowlpackWolfRestrictionEffect(final HowlpackWolfRestrictionEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public HowlpackWolfRestrictionEffect copy() {
|
||||
return new HowlpackWolfRestrictionEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canBlock(Permanent attacker, Permanent blocker, Ability source, Game game) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean applies(Permanent permanent, Ability source, Game game) {
|
||||
return permanent.getId().equals(source.getSourceId())
|
||||
&& game.getBattlefield().count(filter, source.getSourceId(), source.getControllerId(), game) == 0;
|
||||
}
|
||||
}
|
||||
|
|
93
Mage.Sets/src/mage/cards/i/IfnirDeadlands.java
Normal file
93
Mage.Sets/src/mage/cards/i/IfnirDeadlands.java
Normal file
|
@ -0,0 +1,93 @@
|
|||
/*
|
||||
* 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.cards.i;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.ActivateAsSorceryActivatedAbility;
|
||||
import mage.abilities.costs.common.PayLifeCost;
|
||||
import mage.abilities.costs.common.SacrificeTargetCost;
|
||||
import mage.abilities.costs.common.TapSourceCost;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.common.counter.AddCountersTargetEffect;
|
||||
import mage.abilities.mana.BlackManaAbility;
|
||||
import mage.abilities.mana.ColorlessManaAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
import mage.constants.Zone;
|
||||
import mage.counters.CounterType;
|
||||
import mage.filter.common.FilterControlledPermanent;
|
||||
import mage.filter.predicate.mageobject.SubtypePredicate;
|
||||
import mage.target.common.TargetControlledPermanent;
|
||||
import mage.target.common.TargetOpponentsCreaturePermanent;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author jeffwadsworth
|
||||
*/
|
||||
public class IfnirDeadlands extends CardImpl {
|
||||
|
||||
private static final FilterControlledPermanent filter = new FilterControlledPermanent("Desert");
|
||||
|
||||
static {
|
||||
filter.add(new SubtypePredicate(SubType.DESERT));
|
||||
}
|
||||
|
||||
public IfnirDeadlands(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.LAND}, "");
|
||||
|
||||
this.subtype.add("Desert");
|
||||
|
||||
// {t}: Add {C} to your mana pool.
|
||||
this.addAbility(new ColorlessManaAbility());
|
||||
|
||||
// {t}, Pay 1 life: Add {B} to your mana pool.
|
||||
Ability manaAbility = new BlackManaAbility();
|
||||
manaAbility.addCost(new PayLifeCost(1));
|
||||
this.addAbility(manaAbility);
|
||||
|
||||
// {2}{B}{B}, {t}, Sacrifice a Desert: Put two -1/-1 counters on target creature an opponent controls. Activate this ability only any time you could cast a sorcery.
|
||||
Ability ability = new ActivateAsSorceryActivatedAbility(Zone.BATTLEFIELD, new AddCountersTargetEffect(CounterType.M1M1.createInstance(2)), new ManaCostsImpl("{2}{B}{B}"));
|
||||
ability.addCost(new TapSourceCost());
|
||||
ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(1, 1, filter, true)));
|
||||
ability.addTarget(new TargetOpponentsCreaturePermanent());
|
||||
this.addAbility(ability);
|
||||
|
||||
}
|
||||
|
||||
public IfnirDeadlands(final IfnirDeadlands card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IfnirDeadlands copy() {
|
||||
return new IfnirDeadlands(this);
|
||||
}
|
||||
}
|
106
Mage.Sets/src/mage/cards/i/ImaginaryThreats.java
Normal file
106
Mage.Sets/src/mage/cards/i/ImaginaryThreats.java
Normal file
|
@ -0,0 +1,106 @@
|
|||
/*
|
||||
* 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.cards.i;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||
import mage.abilities.effects.OneShotEffect;
|
||||
import mage.abilities.effects.RequirementEffect;
|
||||
import mage.abilities.effects.common.DontUntapInOpponentsNextUntapStepAllEffect;
|
||||
import mage.abilities.effects.common.combat.AttacksIfAbleAllEffect;
|
||||
import mage.abilities.keyword.CyclingAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.constants.Outcome;
|
||||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.filter.predicate.permanent.ControllerIdPredicate;
|
||||
import mage.game.Game;
|
||||
import mage.players.Player;
|
||||
import mage.target.common.TargetOpponent;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author LevelX2
|
||||
*/
|
||||
public class ImaginaryThreats extends CardImpl {
|
||||
|
||||
public ImaginaryThreats(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{U}{U}");
|
||||
|
||||
// Creatures target opponent controls attack this turn if able. During that player's next untap step, creatures he or she controls don't untap.
|
||||
getSpellAbility().addEffect(new ImaginaryThreatsEffect());
|
||||
getSpellAbility().addTarget(new TargetOpponent());
|
||||
getSpellAbility().addEffect(new DontUntapInOpponentsNextUntapStepAllEffect(new FilterCreaturePermanent())
|
||||
.setText("During that player's next untap step, creatures he or she controls don't untap"));
|
||||
// Cycling {2}
|
||||
this.addAbility(new CyclingAbility(new ManaCostsImpl("{2}")));
|
||||
|
||||
}
|
||||
|
||||
public ImaginaryThreats(final ImaginaryThreats card) {
|
||||
super(card);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ImaginaryThreats copy() {
|
||||
return new ImaginaryThreats(this);
|
||||
}
|
||||
}
|
||||
|
||||
class ImaginaryThreatsEffect extends OneShotEffect {
|
||||
|
||||
public ImaginaryThreatsEffect() {
|
||||
super(Outcome.Detriment);
|
||||
staticText = "Creatures target opponent controls attack this turn if able";
|
||||
}
|
||||
|
||||
public ImaginaryThreatsEffect(final ImaginaryThreatsEffect effect) {
|
||||
super(effect);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ImaginaryThreatsEffect copy() {
|
||||
return new ImaginaryThreatsEffect(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Game game, Ability source) {
|
||||
Player player = game.getPlayer(this.getTargetPointer().getFirst(game, source));
|
||||
if (player != null) {
|
||||
FilterCreaturePermanent filter = new FilterCreaturePermanent();
|
||||
filter.add(new ControllerIdPredicate(player.getId()));
|
||||
RequirementEffect effect = new AttacksIfAbleAllEffect(filter, Duration.EndOfTurn);
|
||||
game.addEffect(effect, source);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
|
@ -63,7 +63,7 @@ public class InciteWar extends CardImpl {
|
|||
}
|
||||
|
||||
public InciteWar(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{2}{R}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{2}{R}");
|
||||
|
||||
// Choose one - Creatures target player controls attack this turn if able;
|
||||
this.getSpellAbility().addEffect(new InciteWarMustAttackEffect());
|
||||
|
@ -93,7 +93,7 @@ class InciteWarMustAttackEffect extends OneShotEffect {
|
|||
|
||||
public InciteWarMustAttackEffect() {
|
||||
super(Outcome.Detriment);
|
||||
staticText = "Creatures target player control attack this turn if able";
|
||||
staticText = "Creatures target player controls attack this turn if able";
|
||||
}
|
||||
|
||||
public InciteWarMustAttackEffect(final InciteWarMustAttackEffect effect) {
|
||||
|
|
|
@ -28,8 +28,6 @@
|
|||
package mage.cards.i;
|
||||
|
||||
import java.util.UUID;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.MageInt;
|
||||
import mage.abilities.Ability;
|
||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||
|
@ -39,6 +37,8 @@ import mage.abilities.keyword.EvokeAbility;
|
|||
import mage.abilities.keyword.HasteAbility;
|
||||
import mage.cards.CardImpl;
|
||||
import mage.cards.CardSetInfo;
|
||||
import mage.constants.CardType;
|
||||
import mage.constants.Duration;
|
||||
import mage.target.common.TargetCreaturePermanent;
|
||||
|
||||
/**
|
||||
|
@ -48,7 +48,7 @@ import mage.target.common.TargetCreaturePermanent;
|
|||
public class InnerFlameAcolyte extends CardImpl {
|
||||
|
||||
public InnerFlameAcolyte(UUID ownerId, CardSetInfo setInfo) {
|
||||
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{1}{R}{R}");
|
||||
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}{R}");
|
||||
this.subtype.add("Elemental");
|
||||
this.subtype.add("Shaman");
|
||||
|
||||
|
@ -56,8 +56,9 @@ public class InnerFlameAcolyte extends CardImpl {
|
|||
this.toughness = new MageInt(2);
|
||||
|
||||
// When Inner-Flame Acolyte enters the battlefield, target creature gets +2/+0 and gains haste until end of turn.
|
||||
Ability ability = new EntersBattlefieldTriggeredAbility(new BoostTargetEffect(2,0, Duration.EndOfTurn));
|
||||
ability.addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn));
|
||||
Ability ability = new EntersBattlefieldTriggeredAbility(new BoostTargetEffect(2, 0, Duration.EndOfTurn));
|
||||
ability.addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn)
|
||||
.setText("and gains haste until end of turn"));
|
||||
ability.addTarget(new TargetCreaturePermanent());
|
||||
this.addAbility(ability);
|
||||
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue