mirror of
https://github.com/correl/mage.git
synced 2024-11-16 03:00:12 +00:00
commit
6975362b29
38 changed files with 2881 additions and 295 deletions
|
@ -0,0 +1,643 @@
|
||||||
|
/*
|
||||||
|
* 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 MTGOLegacyCube2015 extends DraftCube {
|
||||||
|
|
||||||
|
public MTGOLegacyCube2015() {
|
||||||
|
super("MTGO Legacy Cube 2015 (600 cards)");
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Accorder Paladin",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Abrupt Decay",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Acidic Slime",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Act of Aggression",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Adarkar Wastes",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("AEther Vial",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Ajani Goldmane",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Ajani Vengeant",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Ajani, Caller of the Pride",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Akroma's Vengeance",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Ancestral Vision",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Ancient Tomb",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Angel of Serenity",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Angelic Destiny",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Anger of the Gods",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Animate Dead",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Anowon, the Ruiun Sage",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Arbor Elf",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Arc Trail",""));
|
||||||
|
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("Ascendant Evincar",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Ashcloud Phoenix",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Ashiok, Nightmare Weaver",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Assemble the Legion",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Attrition",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Augur of Bolas",""));
|
||||||
|
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("Badlands",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Baleful Strix",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Banefire",""));
|
||||||
|
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("Basalt Monolith",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Basilisk Collar",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Batterskull",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Battlefield Forge",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Bayou",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Beast Within",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Beetleback Chief",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Bident of Thassa",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Birds of Paradise",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Birthing Pod",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Bitterblossom",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Blade of the Bloodchief",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Blade Splicer",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Blood Crypt",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Bloodbraid Elf",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Bloodcrazed Neonate",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Bloodghast",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Bloodline Keeper",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Bloodlord of Vaasgoth",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Bloodstained Mire",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Bogarden Hellkite",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Bone Shredder",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Bonesplitter",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Bonfire of the Damned",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Boon Satyr",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Boros Charm",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Boros Elite",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Boros Reckoner",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Brago, King Eternal",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Brainstorm",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Breeding Pool",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Brimaz, King of Oreskos",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Brimstone Volley",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Brushland",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Buried Alive",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Burst Lightning",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Call of the Herd",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Captivating Vampire",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Carnophage",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Caves of Koilos",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Chain Lightning",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Chainer's Edict",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Chameleon Colossus",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Champion of the Parish",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Chandra Nalaar",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Chandra, Pyromaster",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Chandra's Phoenix",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Char",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Chasm Skulker",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Chord of Calling",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Chromatic Lantern",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Chrome Mox",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("City of Brass",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Clifftop Retreat",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Cloudgoat Ranger",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Coalition Relic",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Compulsive Research",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Condemn",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Condescend",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Consecrated Sphinx",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Consuming Vapors",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Control Magic",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Coralhelm Commander",""));
|
||||||
|
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("Crusade",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Crux of Fate",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Cryptic Command",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Cultivate",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Cunning Sparkmage",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Cursed Scroll",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Cyclonic Rift",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Damnation",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Dark Confidant",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Dark Impostor",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Dark Ritual",""));
|
||||||
|
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("Deep Analysis",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Delver of Secrets",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Deranged Hermit",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Desecration Demon",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Detention Sphere",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Devil's Play",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Diabolic Servitude",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Dictate of Heliod",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Dig Through Time",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Disciple of Bolas",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Disfigure",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Dismember",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Dismiss",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Dissipate",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Dissolve",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Domri Rade",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Doom Blade",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Doomed Traveler",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Dragon Fodder",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Dragonskull Summit",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Dread Return",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Dreadbore",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Drowned Catacomb",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Dualcaster Mage",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Dungeon Geists",""));
|
||||||
|
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("Eight-and-a-Half-Tails",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Electrolyze",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Elesh Norn, Grand Cenobite",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Elite Vanguard",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Elixir of Immortality",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Elspeth Tirel",""));
|
||||||
|
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("Emrakul, the Aeons Torn",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Empty the Warrens",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Entomb",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Entreat the Angels",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Essence Scatter",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Eternal Dragon",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Eternal Witness",""));
|
||||||
|
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("Explore",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Fact or Fiction",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Faith's Fetters",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Falkenrath Aristocrat",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Far // Away",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Farseek",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Fauna Shaman",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Fertile Ground",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Fiend Hunter",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Fire // Ice",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Firebolt",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Fires of Yavimaya",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Firefist Striker",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Flame Slash",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Flametongue Kavu",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Flamewake Phoenix",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Fleecemane Lion",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Flickerwisp",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Flooded Strand",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Forbid",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Forbidden Alchemy",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Force of Will",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Force Spike",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Form of the Dragon",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Frenzied Goblin",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Freyalise, Llanowar's Fury",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Frontline Medic",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Frost Titan",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Future Sight",""));
|
||||||
|
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, Caller of Beasts",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Garruk, Primal Hunter",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Gatekeeper of Malakir",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Gather the Townsfolk",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Geist of Saint Traft",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Genesis Wave",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Geralf's Messenger",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Gerrard's Verdict",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Ghor-Clan Rampager",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Gideon Jura",""));
|
||||||
|
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("Glacial Fortress",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Glen Elendra Archmage",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Glorious Anthem",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Gnarled Scarhide",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Go for the Throat",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Goblin Bombardment",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Goblin Bushwhacker",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Goblin Guide",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Goblin Rabblemaster",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Godless Shrine",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Gore-House Chainwalker",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Grafted Wargear",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Grave Titan",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Graveborn Muse",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Gravecrawler",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Gray Merchant of Asphodel",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Greater Gargadon",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Green Sun's Zenith",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Grim Lavamancer",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Griselbrand",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Gruul Draz Assassin",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Gruul Draz Vampire",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Hall of Triumph",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Hallowed Fountain",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Hallowed Spiritkeeper",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Hammer of Purphoros",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Harmonize",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Hellrider",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Herald of Torment",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Hero of Bladehold",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Hero of Oxid Ridge",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Hero's Downfall",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Hinterland Harbor",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Honor of the Pure",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Hordeling Outburst",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Hornet Queen",""));
|
||||||
|
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("Impulse",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Incinerate",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Indrik Stomphowler",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Inquisition of Kozilek",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Into the Roil",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Isamaru, Hound of Konda",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Isochron Scepter",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Isolated Chapel",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Izzet Charm",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Jace Beleren",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Jace, Architect of Thought",""));
|
||||||
|
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("Journey to Nowhere",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Kalastria Highborn",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Kami of Ancient Law",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Karmic Guide",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Karn Liberated",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Karplusan Forest",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Keiga, the Tide Star",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Keranos, God of Storms",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Kiki-Jiki, Mirror Breaker",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Kiln Fiend",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Kiora, the Crashing Wave",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Kiora's Follower",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Kira, Great Glass-Spinner",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Kitchen Finks",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Kodama's Reach",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Kokusho, the Evening Star",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Kolaghan, the Storm's Fury",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Kor Skyfisher",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Koth of the Hammer",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Kozilek, Butcher of Truth",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Krenko's Command",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Land Tax",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Legacy's Allure",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Leonin Relic-Warder",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Life From the Loam",""));
|
||||||
|
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 Vess",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Lingering Souls",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Linvala, Keeper of Silence",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Living Death",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Llanowar Elves",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Llanowar Wastes",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Looter il-Kor",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Lotleth Troll",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Lotus Cobra",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Loxodon Warhammer",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Madcap Skills",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Maelstrom Pulse",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Magma Jet",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Malakir Bloodwitch",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Malicious Affliction",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Man-o'-War",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Mana Confluence",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Mana Leak",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Mana Tithe",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Manic Vandal",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Marsh Flats",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Martial Coup",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Massacre Wurm",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Master of the Wild Hunt",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Master of Waves",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Meloku the Clouded Mirror",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Mentor of the Meek",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Merfolk Looter",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Mind Stone",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Mirari's Wake",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Mirran Crusader",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Miscalculation",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Mishra's Factory",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Misty Rainforest",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Mizzium Mortars",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Mogg Fanatic",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Mogg War Marshal",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Molten Rain",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Momentary Blink",""));
|
||||||
|
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("Mulch",""));
|
||||||
|
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 Snake",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Natural Order",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Nature's Lore",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Necromancy",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Necropolis Regent",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Negate",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Nekrataal",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Nicol Bolas, Planeswalker",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Night's Whisper",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Nightveil Specter",""));
|
||||||
|
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("Oblivion Ring",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Obstinate Baloth",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Ohran Viper",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Old Man of the Sea",""));
|
||||||
|
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("Oust",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Overgrown Battlement",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Overgrown Tomb",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Overrun",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Pack Rat",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Pact of Negation",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Pain Seer",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Parallax Wave",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Path to Exile",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Pestermite",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Phantasmal Image",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Phyrexian Arena",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Phyrexian Metamorph",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Phyrexian Revoker",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Pillar of Flame",""));
|
||||||
|
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("Precinct Captain",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Precursor Golem",""));
|
||||||
|
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("Profane Command",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Prophetic Bolt",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Prophetic Flamespeaker",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Psychatog",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Purphoros, God of the Forge",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Qasali Pridemage",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Raise the Alarm",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Ral Zarek",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Rakish Heir",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Rampaging Baloths",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Rampant Growth",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Ranger of Eos",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Ratchet Bomb",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Ravages of War",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Reanimate",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Reclamation Sage",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Recurring Nightmare",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Reflecting Pool",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Regrowth",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Relic of Progenitus",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Remand",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Remove Soul",""));
|
||||||
|
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("Riptide Laboratory",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Rishadan Port",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("River Boa",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Rofellos, Llanowar Emissary",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Rootbound Crag",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Sacred Foundry",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Sakashima's Student",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Sakura-Tribe Elder",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Sangromancer",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Sarkhan, the Dragonspeaker",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Savannah",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Scalding Tarn",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Scapeshift",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Scavenging Ooze",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Scorched Rusalka",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Scrubland",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Sea Gate Oracle",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Seal of Fire",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Search for Tomorrow",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Searing Spear",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Seeker of the Way",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Sensei's Divining Top",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Serendib Efreet",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Serum Visions",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Shadowmage Infiltrator",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Shardless Agent",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Sheoldred, Whispering One",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Shivan Reef",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Shriekmaw",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Siege-Gang Commander",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Silverblade Paladin",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Sin Collector",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Sinkhole",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Skinrender",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Skullcrack",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Slagstorm",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Slaughter Pact",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Snapcaster Mage",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Sneak Attack",""));
|
||||||
|
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("Sorin Markov",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Sorin, Lord of Innistrad",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Sorin, Solemn Visitor",""));
|
||||||
|
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("Spellskite",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Spell Pierce",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Sphere of the Suns",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Sphinx's Revelation",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Spikeshot Elder",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Splinter Twin",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Staggershock",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Steam Vents",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Steppe Lynx",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Stoke the Flames",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Stomping Ground",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Stormbreath Dragon",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Stroke of Genius",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Stromkirk Captain",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Stromkirk Noble",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Student of Warfare",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Sublime Archangel",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Sulfur Falls",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Sulfurous Springs",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Summoning Trap",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Sun Titan",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Sundering Titan",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Sunpetal Grove",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Supreme Verdict",""));
|
||||||
|
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("Talrand, Sky Summoner",""));
|
||||||
|
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("Taurean Mauler",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Tectonic Edge",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Teferi, Mage of Zhalfir",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Temple Garden",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Temple of Abandon",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Temple of Deceit",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Temple of Enlightenment",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Temple of Epiphany",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Temple of Malady",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Temple of Malice",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Temple of Mystery",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Temple of Plenty",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Temple of Silence",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Temple of Triumph",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Tempt with Vengeance",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Terastodon",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Terminate",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Terminus",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Thalia, Guardian of Thraben",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Thassa, God of the Sea",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Thieving Magpie",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Think Twice",""));
|
||||||
|
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 Warp",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Tooth and Nail",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Toxic Deluge",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Tradewind Rider",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Treachery",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Troll Ascetic",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Tropical Island",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Trygon Predator",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Tundra",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Ugin, the Spirit Dragon",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Ulamog, the Infinite Gyre",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Ultimate Price",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Unburial Rites",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Underground River",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Underground Sea",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Underworld Connections",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Unexpectedly Absent",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Unflinching Courage",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Upheaval",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Utopia Sprawl",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Valakut, the Molten Pinnacle",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Vampire Hexmage",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Vampire Interloper",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Vampire Lacerator",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Vampire Nighthawk",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Vampire Nocturnus",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Vedalken Shackles",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Vendilion Clique",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Vengevine",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Venser, Shaper Savant",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Venser, the Sojourner",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Verdant Catacombs",""));
|
||||||
|
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("Volrath's Stronghold",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Voyaging Satyr",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Vraska the Unseen",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Wake Thrasher",""));
|
||||||
|
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("Warden of the First Tree",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Warleader's Helix",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Waterfront Bouncer",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Watery Grave",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Whip of Erebos",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Whisperwood Elemental",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Wickerbough Elder",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Wild Mongrel",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Windbrisk Heights",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Windswept Heath",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Winter Orb",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Wolfir Silverheart",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Wood Elves",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Wooded Foothills",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Woodfall Primus",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Woodland Cemetery",""));
|
||||||
|
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("Xathrid Necromancer",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Xenagos, the Reveler",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Yavimaya Coast",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Yavimaya Elder",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Yosei, the Morning Star",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Young Pyromancer",""));
|
||||||
|
cubeCards.add(new DraftCube.CardIdentity("Zealous Conscripts",""));
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -71,6 +71,7 @@
|
||||||
<draftCube name="MTGO Holiday Cube 2013" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.HolidayCube2013"/>
|
<draftCube name="MTGO Holiday Cube 2013" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.HolidayCube2013"/>
|
||||||
<draftCube name="MTGO Holiday Cube 2014" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.HolidayCube2014"/>
|
<draftCube name="MTGO Holiday Cube 2014" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.HolidayCube2014"/>
|
||||||
<draftCube name="MTGO Legacy Cube (600 cards)" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.MTGOLegacyCube"/>
|
<draftCube name="MTGO Legacy Cube (600 cards)" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.MTGOLegacyCube"/>
|
||||||
|
<draftCube name="MTGO Legacy Cube 2015 (600 cards)" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.MTGOLegacyCube2015"/>
|
||||||
<draftCube name="The Peasant's Toolbox (800 cards)" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.PeasantsToolboxCube"/>
|
<draftCube name="The Peasant's Toolbox (800 cards)" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.PeasantsToolboxCube"/>
|
||||||
<draftCube name="www.MTGCube.com (502 cards)" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.MTGCube"/>
|
<draftCube name="www.MTGCube.com (502 cards)" jar="mage-tournament-booster-draft.jar" className="mage.tournament.cubes.MTGCube"/>
|
||||||
</draftCubes>
|
</draftCubes>
|
||||||
|
|
|
@ -49,6 +49,7 @@
|
||||||
<draftCube name="MTGO Holiday Cube 2014" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.HolidayCube2014"/>
|
<draftCube name="MTGO Holiday Cube 2014" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.HolidayCube2014"/>
|
||||||
<draftCube name="MTGO Cube March 2014" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.MTGOMarchCube2014"/>
|
<draftCube name="MTGO Cube March 2014" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.MTGOMarchCube2014"/>
|
||||||
<draftCube name="MTGO Legacy Cube (600 cards)" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.MTGOLegacyCube"/>
|
<draftCube name="MTGO Legacy Cube (600 cards)" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.MTGOLegacyCube"/>
|
||||||
|
<draftCube name="MTGO Legacy Cube 2015 (600 cards)" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.MTGOLegacyCube2015"/>
|
||||||
<draftCube name="The Peasant's Toolbox (800 cards)" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.PeasantsToolboxCube"/>
|
<draftCube name="The Peasant's Toolbox (800 cards)" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.PeasantsToolboxCube"/>
|
||||||
<draftCube name="www.MTGCube.com (502 cards)" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.MTGCube"/>
|
<draftCube name="www.MTGCube.com (502 cards)" jar="mage-tournament-booster-draft-${project.version}.jar" className="mage.tournament.cubes.MTGCube"/>
|
||||||
</draftCubes>
|
</draftCubes>
|
||||||
|
|
|
@ -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.sets.dragonsoftarkir;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
import mage.MageInt;
|
||||||
|
import mage.abilities.Ability;
|
||||||
|
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
|
||||||
|
import mage.abilities.effects.common.continuous.BoostTargetEffect;
|
||||||
|
import mage.abilities.keyword.FlyingAbility;
|
||||||
|
import mage.cards.CardImpl;
|
||||||
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.Duration;
|
||||||
|
import mage.constants.Rarity;
|
||||||
|
import mage.constants.Zone;
|
||||||
|
import mage.filter.common.FilterControlledCreaturePermanent;
|
||||||
|
import mage.filter.predicate.permanent.AnotherPredicate;
|
||||||
|
import mage.target.common.TargetCreaturePermanent;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author fireshoes
|
||||||
|
*/
|
||||||
|
public class BoltwingMarauder extends CardImpl {
|
||||||
|
|
||||||
|
private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("another creature under your control");
|
||||||
|
|
||||||
|
static {
|
||||||
|
filter.add(new AnotherPredicate());
|
||||||
|
}
|
||||||
|
|
||||||
|
public BoltwingMarauder(UUID ownerId) {
|
||||||
|
super(ownerId, 214, "Boltwing Marauder", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{3}{B}{R}");
|
||||||
|
this.expansionSetCode = "DTK";
|
||||||
|
this.subtype.add("Dragon");
|
||||||
|
this.power = new MageInt(5);
|
||||||
|
this.toughness = new MageInt(4);
|
||||||
|
|
||||||
|
// Flying
|
||||||
|
this.addAbility(FlyingAbility.getInstance());
|
||||||
|
// Whenever another creature enters the battlefield under your control, target creature gets +2/+0 until end of turn.
|
||||||
|
Ability ability = new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new BoostTargetEffect(2,0, Duration.EndOfTurn),filter,false);
|
||||||
|
ability.addTarget(new TargetCreaturePermanent());
|
||||||
|
this.addAbility(ability);
|
||||||
|
}
|
||||||
|
|
||||||
|
public BoltwingMarauder(final BoltwingMarauder card) {
|
||||||
|
super(card);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public BoltwingMarauder copy() {
|
||||||
|
return new BoltwingMarauder(this);
|
||||||
|
}
|
||||||
|
}
|
52
Mage.Sets/src/mage/sets/dragonsoftarkir/DragonFodder.java
Normal file
52
Mage.Sets/src/mage/sets/dragonsoftarkir/DragonFodder.java
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
* permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
* conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||||
|
* provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||||
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* The views and conclusions contained in the software and documentation are those of the
|
||||||
|
* authors and should not be interpreted as representing official policies, either expressed
|
||||||
|
* or implied, of BetaSteward_at_googlemail.com.
|
||||||
|
*/
|
||||||
|
package mage.sets.dragonsoftarkir;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author fireshoes
|
||||||
|
*/
|
||||||
|
public class DragonFodder extends mage.sets.shardsofalara.DragonFodder {
|
||||||
|
|
||||||
|
public DragonFodder(UUID ownerId) {
|
||||||
|
super(ownerId);
|
||||||
|
this.cardNumber = 135;
|
||||||
|
this.expansionSetCode = "DTK";
|
||||||
|
}
|
||||||
|
|
||||||
|
public DragonFodder(final DragonFodder card) {
|
||||||
|
super(card);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public DragonFodder copy() {
|
||||||
|
return new DragonFodder(this);
|
||||||
|
}
|
||||||
|
}
|
|
@ -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.sets.dragonsoftarkir;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
import mage.MageInt;
|
||||||
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
|
import mage.abilities.effects.common.cost.SpellsCostReductionControllerEffect;
|
||||||
|
import mage.cards.CardImpl;
|
||||||
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.Rarity;
|
||||||
|
import mage.constants.Zone;
|
||||||
|
import mage.filter.FilterCard;
|
||||||
|
import mage.filter.predicate.mageobject.SubtypePredicate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author fireshoes
|
||||||
|
*/
|
||||||
|
public class DragonlordsServant extends CardImpl {
|
||||||
|
|
||||||
|
private static final FilterCard filter = new FilterCard("Dragon spells");
|
||||||
|
|
||||||
|
static {
|
||||||
|
filter.add(new SubtypePredicate("Dragon"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public DragonlordsServant(UUID ownerId) {
|
||||||
|
super(ownerId, 138, "Dragonlord's Servant", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{1}{R}");
|
||||||
|
this.expansionSetCode = "DTK";
|
||||||
|
this.subtype.add("Goblin");
|
||||||
|
this.subtype.add("Shaman");
|
||||||
|
this.power = new MageInt(1);
|
||||||
|
this.toughness = new MageInt(3);
|
||||||
|
|
||||||
|
// Dragon spells you cast cost {1} less to cast.
|
||||||
|
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SpellsCostReductionControllerEffect(filter, 2)));
|
||||||
|
}
|
||||||
|
|
||||||
|
public DragonlordsServant(final DragonlordsServant card) {
|
||||||
|
super(card);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public DragonlordsServant copy() {
|
||||||
|
return new DragonlordsServant(this);
|
||||||
|
}
|
||||||
|
}
|
52
Mage.Sets/src/mage/sets/dragonsoftarkir/EvolvingWilds.java
Normal file
52
Mage.Sets/src/mage/sets/dragonsoftarkir/EvolvingWilds.java
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
* permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
* conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||||
|
* provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||||
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* The views and conclusions contained in the software and documentation are those of the
|
||||||
|
* authors and should not be interpreted as representing official policies, either expressed
|
||||||
|
* or implied, of BetaSteward_at_googlemail.com.
|
||||||
|
*/
|
||||||
|
package mage.sets.dragonsoftarkir;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author fireshoes
|
||||||
|
*/
|
||||||
|
public class EvolvingWilds extends mage.sets.riseoftheeldrazi.EvolvingWilds {
|
||||||
|
|
||||||
|
public EvolvingWilds(UUID ownerId) {
|
||||||
|
super(ownerId);
|
||||||
|
this.cardNumber = 248;
|
||||||
|
this.expansionSetCode = "DTK";
|
||||||
|
}
|
||||||
|
|
||||||
|
public EvolvingWilds(final EvolvingWilds card) {
|
||||||
|
super(card);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public EvolvingWilds copy() {
|
||||||
|
return new EvolvingWilds(this);
|
||||||
|
}
|
||||||
|
}
|
|
@ -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.sets.dragonsoftarkir;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
import mage.MageInt;
|
||||||
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||||
|
import mage.abilities.effects.common.continuous.BoostSourceEffect;
|
||||||
|
import mage.abilities.keyword.DashAbility;
|
||||||
|
import mage.cards.CardImpl;
|
||||||
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.Duration;
|
||||||
|
import mage.constants.Rarity;
|
||||||
|
import mage.constants.Zone;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author fireshoes
|
||||||
|
*/
|
||||||
|
public class LightningBerserker extends CardImpl {
|
||||||
|
|
||||||
|
public LightningBerserker(UUID ownerId) {
|
||||||
|
super(ownerId, 146, "Lightning Berserker", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{R}");
|
||||||
|
this.expansionSetCode = "DTK";
|
||||||
|
this.subtype.add("Human");
|
||||||
|
this.subtype.add("Berserker");
|
||||||
|
this.power = new MageInt(1);
|
||||||
|
this.toughness = new MageInt(1);
|
||||||
|
|
||||||
|
// {R}: Lightning Berserker gets +1/+0 until end of turn.
|
||||||
|
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD,
|
||||||
|
new BoostSourceEffect(1, 0, Duration.EndOfTurn),
|
||||||
|
new ManaCostsImpl("{R}")));
|
||||||
|
|
||||||
|
// Dash {R}
|
||||||
|
this.addAbility(new DashAbility(this, "{R}"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public LightningBerserker(final LightningBerserker card) {
|
||||||
|
super(card);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public LightningBerserker copy() {
|
||||||
|
return new LightningBerserker(this);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,76 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
* permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
* conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||||
|
* provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||||
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* The views and conclusions contained in the software and documentation are those of the
|
||||||
|
* authors and should not be interpreted as representing official policies, either expressed
|
||||||
|
* or implied, of BetaSteward_at_googlemail.com.
|
||||||
|
*/
|
||||||
|
package mage.sets.dragonsoftarkir;
|
||||||
|
|
||||||
|
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.common.CreateTokenEffect;
|
||||||
|
import mage.abilities.effects.common.DoIfCostPaid;
|
||||||
|
import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveEachPlayerEffect;
|
||||||
|
import mage.abilities.keyword.FlyingAbility;
|
||||||
|
import mage.cards.CardImpl;
|
||||||
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.Rarity;
|
||||||
|
import mage.constants.TargetController;
|
||||||
|
import mage.game.permanent.token.ZombieToken;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author fireshoes
|
||||||
|
*/
|
||||||
|
public class NecromasterDragon extends CardImpl {
|
||||||
|
|
||||||
|
public NecromasterDragon(UUID ownerId) {
|
||||||
|
super(ownerId, 226, "Necromaster Dragon", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{3}{U}{B}");
|
||||||
|
this.expansionSetCode = "DTK";
|
||||||
|
this.subtype.add("Dragon");
|
||||||
|
this.power = new MageInt(4);
|
||||||
|
this.toughness = new MageInt(4);
|
||||||
|
|
||||||
|
// Flying
|
||||||
|
this.addAbility(FlyingAbility.getInstance());
|
||||||
|
|
||||||
|
// Whenever Necromaster Dragon deals combat damage to a player, you may pay {2}. If you do, put a 2/2 black Zombie creature token onto the battlefield and each opponent puts the top two cards of his or her library into his or her graveyard
|
||||||
|
Ability ability = new DealsCombatDamageToAPlayerTriggeredAbility(
|
||||||
|
new DoIfCostPaid(new CreateTokenEffect(new ZombieToken(), 1), new ManaCostsImpl("{2}")), false);
|
||||||
|
ability.addEffect(new PutTopCardOfLibraryIntoGraveEachPlayerEffect(2, TargetController.OPPONENT));
|
||||||
|
this.addAbility(ability);
|
||||||
|
}
|
||||||
|
|
||||||
|
public NecromasterDragon(final NecromasterDragon card) {
|
||||||
|
super(card);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public NecromasterDragon copy() {
|
||||||
|
return new NecromasterDragon(this);
|
||||||
|
}
|
||||||
|
}
|
102
Mage.Sets/src/mage/sets/dragonsoftarkir/OjutaisCommand.java
Normal file
102
Mage.Sets/src/mage/sets/dragonsoftarkir/OjutaisCommand.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.sets.dragonsoftarkir;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
import mage.abilities.Mode;
|
||||||
|
import mage.abilities.effects.common.CounterTargetEffect;
|
||||||
|
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||||
|
import mage.abilities.effects.common.GainLifeEffect;
|
||||||
|
import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect;
|
||||||
|
import mage.cards.CardImpl;
|
||||||
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.Rarity;
|
||||||
|
import mage.filter.Filter;
|
||||||
|
import mage.filter.FilterCard;
|
||||||
|
import mage.filter.FilterSpell;
|
||||||
|
import mage.filter.common.FilterCreatureCard;
|
||||||
|
import mage.filter.predicate.mageobject.CardTypePredicate;
|
||||||
|
import mage.filter.predicate.mageobject.ConvertedManaCostPredicate;
|
||||||
|
import mage.target.TargetSpell;
|
||||||
|
import mage.target.common.TargetCardInYourGraveyard;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author fireshoes
|
||||||
|
*/
|
||||||
|
public class OjutaisCommand extends CardImpl {
|
||||||
|
|
||||||
|
private static final FilterCard filter = new FilterCreatureCard("creature card with converted mana cost 2 or less from your graveyard");
|
||||||
|
static {
|
||||||
|
filter.add(new ConvertedManaCostPredicate(Filter.ComparisonType.LessThan, 3));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final FilterSpell filter2 = new FilterSpell("creature spell");
|
||||||
|
|
||||||
|
static {
|
||||||
|
filter2.add(new CardTypePredicate(CardType.CREATURE));
|
||||||
|
}
|
||||||
|
|
||||||
|
public OjutaisCommand(UUID ownerId) {
|
||||||
|
super(ownerId, 227, "Ojutai's Command", Rarity.RARE, new CardType[]{CardType.INSTANT}, "{2}{W}{U}");
|
||||||
|
this.expansionSetCode = "DTK";
|
||||||
|
|
||||||
|
// Choose two -
|
||||||
|
this.getSpellAbility().getModes().setMinModes(2);
|
||||||
|
this.getSpellAbility().getModes().setMaxModes(2);
|
||||||
|
|
||||||
|
// Return target creature card with converted mana cost 2 or less from your graveyard to the battlefield;
|
||||||
|
this.getSpellAbility().getEffects().add(new ReturnFromGraveyardToBattlefieldTargetEffect());
|
||||||
|
this.getSpellAbility().getTargets().add(new TargetCardInYourGraveyard(filter));
|
||||||
|
|
||||||
|
// or You gain 4 life;
|
||||||
|
Mode mode = new Mode();
|
||||||
|
mode.getEffects().add(new GainLifeEffect(4));
|
||||||
|
this.getSpellAbility().getModes().addMode(mode);
|
||||||
|
|
||||||
|
// or Counter target creature spell;
|
||||||
|
mode = new Mode();
|
||||||
|
mode.getTargets().add(new TargetSpell(filter2));
|
||||||
|
mode.getEffects().add(new CounterTargetEffect());
|
||||||
|
this.getSpellAbility().getModes().addMode(mode);
|
||||||
|
|
||||||
|
// or Draw a card
|
||||||
|
mode = new Mode();
|
||||||
|
mode.getEffects().add(new DrawCardSourceControllerEffect(1));
|
||||||
|
this.getSpellAbility().getModes().addMode(mode);
|
||||||
|
}
|
||||||
|
|
||||||
|
public OjutaisCommand(final OjutaisCommand card) {
|
||||||
|
super(card);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public OjutaisCommand copy() {
|
||||||
|
return new OjutaisCommand(this);
|
||||||
|
}
|
||||||
|
}
|
71
Mage.Sets/src/mage/sets/dragonsoftarkir/SunscorchRegent.java
Normal file
71
Mage.Sets/src/mage/sets/dragonsoftarkir/SunscorchRegent.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.sets.dragonsoftarkir;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
import mage.MageInt;
|
||||||
|
import mage.abilities.Ability;
|
||||||
|
import mage.abilities.common.SpellCastOpponentTriggeredAbility;
|
||||||
|
import mage.abilities.effects.common.GainLifeEffect;
|
||||||
|
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
|
||||||
|
import mage.abilities.keyword.FlyingAbility;
|
||||||
|
import mage.cards.CardImpl;
|
||||||
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.Rarity;
|
||||||
|
import mage.counters.CounterType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author fireshoes
|
||||||
|
*/
|
||||||
|
public class SunscorchRegent extends CardImpl {
|
||||||
|
|
||||||
|
public SunscorchRegent(UUID ownerId) {
|
||||||
|
super(ownerId, 41, "Sunscorch Regent", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{3}{W}{W}");
|
||||||
|
this.expansionSetCode = "DTK";
|
||||||
|
this.subtype.add("Dragon");
|
||||||
|
this.power = new MageInt(4);
|
||||||
|
this.toughness = new MageInt(3);
|
||||||
|
|
||||||
|
// Flying
|
||||||
|
this.addAbility(FlyingAbility.getInstance());
|
||||||
|
// Whenever an opponent casts a spell, put a +1/+1 counter on Sunscorch Regent and you gain 1 life.
|
||||||
|
Ability ability = new SpellCastOpponentTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance()), false);
|
||||||
|
ability.addEffect(new GainLifeEffect(1));
|
||||||
|
this.addAbility(ability);
|
||||||
|
}
|
||||||
|
|
||||||
|
public SunscorchRegent(final SunscorchRegent card) {
|
||||||
|
super(card);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SunscorchRegent copy() {
|
||||||
|
return new SunscorchRegent(this);
|
||||||
|
}
|
||||||
|
}
|
82
Mage.Sets/src/mage/sets/invasion/CapashenUnicorn.java
Normal file
82
Mage.Sets/src/mage/sets/invasion/CapashenUnicorn.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.sets.invasion;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
import mage.MageInt;
|
||||||
|
import mage.abilities.Ability;
|
||||||
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
|
import mage.abilities.costs.common.SacrificeSourceCost;
|
||||||
|
import mage.abilities.costs.common.TapSourceCost;
|
||||||
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||||
|
import mage.abilities.effects.common.DestroyTargetEffect;
|
||||||
|
import mage.cards.CardImpl;
|
||||||
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.Rarity;
|
||||||
|
import mage.constants.Zone;
|
||||||
|
import mage.filter.FilterPermanent;
|
||||||
|
import mage.filter.predicate.Predicates;
|
||||||
|
import mage.filter.predicate.mageobject.CardTypePredicate;
|
||||||
|
import mage.target.TargetPermanent;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author anonymous
|
||||||
|
*/
|
||||||
|
public class CapashenUnicorn extends CardImpl {
|
||||||
|
|
||||||
|
private static final FilterPermanent filter = new FilterPermanent("artifact or enchantment");
|
||||||
|
static {
|
||||||
|
filter.add(Predicates.or(new CardTypePredicate(CardType.ARTIFACT),
|
||||||
|
new CardTypePredicate(CardType.ENCHANTMENT)));
|
||||||
|
}
|
||||||
|
|
||||||
|
public CapashenUnicorn(UUID ownerId) {
|
||||||
|
super(ownerId, 10, "Capashen Unicorn", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{1}{W}");
|
||||||
|
this.expansionSetCode = "INV";
|
||||||
|
this.subtype.add("Unicorn");
|
||||||
|
this.power = new MageInt(1);
|
||||||
|
this.toughness = new MageInt(2);
|
||||||
|
|
||||||
|
// {1}{W}, {tap}, Sacrifice Capashen Unicorn: Destroy target artifact or enchantment.
|
||||||
|
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DestroyTargetEffect(), new ManaCostsImpl("{1}{W}"));
|
||||||
|
ability.addCost(new TapSourceCost());
|
||||||
|
ability.addCost(new SacrificeSourceCost());
|
||||||
|
ability.addTarget(new TargetPermanent(filter));
|
||||||
|
this.addAbility(ability);
|
||||||
|
}
|
||||||
|
|
||||||
|
public CapashenUnicorn(final CapashenUnicorn card) {
|
||||||
|
super(card);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CapashenUnicorn copy() {
|
||||||
|
return new CapashenUnicorn(this);
|
||||||
|
}
|
||||||
|
}
|
84
Mage.Sets/src/mage/sets/invasion/CrusadingKnight.java
Normal file
84
Mage.Sets/src/mage/sets/invasion/CrusadingKnight.java
Normal file
|
@ -0,0 +1,84 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
* permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
* conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||||
|
* provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||||
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* The views and conclusions contained in the software and documentation are those of the
|
||||||
|
* authors and should not be interpreted as representing official policies, either expressed
|
||||||
|
* or implied, of BetaSteward_at_googlemail.com.
|
||||||
|
*/
|
||||||
|
package mage.sets.invasion;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
import mage.MageInt;
|
||||||
|
import mage.ObjectColor;
|
||||||
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
|
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
|
||||||
|
import mage.abilities.effects.common.continuous.BoostSourceEffect;
|
||||||
|
import mage.abilities.keyword.ProtectionAbility;
|
||||||
|
import mage.cards.CardImpl;
|
||||||
|
import mage.constants.*;
|
||||||
|
import mage.filter.FilterCard;
|
||||||
|
import mage.filter.common.FilterLandPermanent;
|
||||||
|
import mage.filter.predicate.mageobject.ColorPredicate;
|
||||||
|
import mage.filter.predicate.mageobject.SubtypePredicate;
|
||||||
|
import mage.filter.predicate.permanent.ControllerPredicate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author anonymous
|
||||||
|
*/
|
||||||
|
public class CrusadingKnight extends CardImpl {
|
||||||
|
|
||||||
|
private static final FilterCard protectionFilter = new FilterCard("Black");
|
||||||
|
private static final FilterLandPermanent swampFilter = new FilterLandPermanent("Swamp your opponent controls");
|
||||||
|
static {
|
||||||
|
protectionFilter.add(new ColorPredicate(ObjectColor.BLACK));
|
||||||
|
swampFilter.add(new SubtypePredicate("Swamp"));
|
||||||
|
swampFilter.add(new ControllerPredicate(TargetController.OPPONENT));
|
||||||
|
}
|
||||||
|
|
||||||
|
public CrusadingKnight(UUID ownerId) {
|
||||||
|
super(ownerId, 12, "Crusading Knight", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{2}{W}{W}");
|
||||||
|
this.expansionSetCode = "INV";
|
||||||
|
this.subtype.add("Human");
|
||||||
|
this.subtype.add("Knight");
|
||||||
|
this.power = new MageInt(2);
|
||||||
|
this.toughness = new MageInt(2);
|
||||||
|
|
||||||
|
// Protection from black
|
||||||
|
this.addAbility(new ProtectionAbility(protectionFilter));
|
||||||
|
|
||||||
|
// Crusading Knight gets +1/+1 for each Swamp your opponents control.
|
||||||
|
PermanentsOnBattlefieldCount amount = new PermanentsOnBattlefieldCount(swampFilter, 1);
|
||||||
|
SimpleStaticAbility ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostSourceEffect(amount, amount, Duration.WhileOnBattlefield));
|
||||||
|
this.addAbility(ability);
|
||||||
|
}
|
||||||
|
|
||||||
|
public CrusadingKnight(final CrusadingKnight card) {
|
||||||
|
super(card);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CrusadingKnight copy() {
|
||||||
|
return new CrusadingKnight(this);
|
||||||
|
}
|
||||||
|
}
|
66
Mage.Sets/src/mage/sets/invasion/Firescreamer.java
Normal file
66
Mage.Sets/src/mage/sets/invasion/Firescreamer.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.sets.invasion;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
import mage.MageInt;
|
||||||
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||||
|
import mage.abilities.effects.common.continuous.BoostSourceEffect;
|
||||||
|
import mage.cards.CardImpl;
|
||||||
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.Duration;
|
||||||
|
import mage.constants.Rarity;
|
||||||
|
import mage.constants.Zone;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author michael.napoleon@gmail.com
|
||||||
|
*/
|
||||||
|
public class Firescreamer extends CardImpl {
|
||||||
|
|
||||||
|
public Firescreamer(UUID ownerId) {
|
||||||
|
super(ownerId, 106, "Firescreamer", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{3}{B}");
|
||||||
|
this.expansionSetCode = "INV";
|
||||||
|
this.subtype.add("Kavu");
|
||||||
|
this.power = new MageInt(2);
|
||||||
|
this.toughness = new MageInt(2);
|
||||||
|
|
||||||
|
// {R}: Firescreamer gets +1/+0 until end of turn.
|
||||||
|
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(1,0, Duration.EndOfTurn), new ManaCostsImpl("{R}")));
|
||||||
|
}
|
||||||
|
|
||||||
|
public Firescreamer(final Firescreamer card) {
|
||||||
|
super(card);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Firescreamer copy() {
|
||||||
|
return new Firescreamer(this);
|
||||||
|
}
|
||||||
|
}
|
84
Mage.Sets/src/mage/sets/invasion/MaraudingKnight.java
Normal file
84
Mage.Sets/src/mage/sets/invasion/MaraudingKnight.java
Normal file
|
@ -0,0 +1,84 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
* permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
* conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||||
|
* provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||||
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* The views and conclusions contained in the software and documentation are those of the
|
||||||
|
* authors and should not be interpreted as representing official policies, either expressed
|
||||||
|
* or implied, of BetaSteward_at_googlemail.com.
|
||||||
|
*/
|
||||||
|
package mage.sets.invasion;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
import mage.MageInt;
|
||||||
|
import mage.ObjectColor;
|
||||||
|
import mage.abilities.common.SimpleStaticAbility;
|
||||||
|
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
|
||||||
|
import mage.abilities.effects.common.continuous.BoostSourceEffect;
|
||||||
|
import mage.abilities.keyword.ProtectionAbility;
|
||||||
|
import mage.cards.CardImpl;
|
||||||
|
import mage.constants.*;
|
||||||
|
import mage.filter.FilterCard;
|
||||||
|
import mage.filter.common.FilterLandPermanent;
|
||||||
|
import mage.filter.predicate.mageobject.ColorPredicate;
|
||||||
|
import mage.filter.predicate.mageobject.SubtypePredicate;
|
||||||
|
import mage.filter.predicate.permanent.ControllerPredicate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author michael.napoleon@gmail.com
|
||||||
|
*/
|
||||||
|
public class MaraudingKnight extends CardImpl {
|
||||||
|
|
||||||
|
private static final FilterCard protectionFilter = new FilterCard("White");
|
||||||
|
private static final FilterLandPermanent plainsFilter = new FilterLandPermanent("Plains your opponent controls");
|
||||||
|
static {
|
||||||
|
protectionFilter.add(new ColorPredicate(ObjectColor.WHITE));
|
||||||
|
plainsFilter.add(new SubtypePredicate("Plains"));
|
||||||
|
plainsFilter.add(new ControllerPredicate(TargetController.OPPONENT));
|
||||||
|
}
|
||||||
|
|
||||||
|
public MaraudingKnight(UUID ownerId) {
|
||||||
|
super(ownerId, 110, "Marauding Knight", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{2}{B}{B}");
|
||||||
|
this.expansionSetCode = "INV";
|
||||||
|
this.subtype.add("Zombie");
|
||||||
|
this.subtype.add("Knight");
|
||||||
|
this.power = new MageInt(2);
|
||||||
|
this.toughness = new MageInt(2);
|
||||||
|
|
||||||
|
// Protection from white
|
||||||
|
this.addAbility(new ProtectionAbility(protectionFilter));
|
||||||
|
|
||||||
|
// Marauding Knight gets +1/+1 for each Plains your opponents control.
|
||||||
|
PermanentsOnBattlefieldCount amount = new PermanentsOnBattlefieldCount(plainsFilter, 1);
|
||||||
|
SimpleStaticAbility ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostSourceEffect(amount, amount, Duration.WhileOnBattlefield));
|
||||||
|
this.addAbility(ability);
|
||||||
|
}
|
||||||
|
|
||||||
|
public MaraudingKnight(final MaraudingKnight card) {
|
||||||
|
super(card);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MaraudingKnight copy() {
|
||||||
|
return new MaraudingKnight(this);
|
||||||
|
}
|
||||||
|
}
|
67
Mage.Sets/src/mage/sets/invasion/SerpentineKavu.java
Normal file
67
Mage.Sets/src/mage/sets/invasion/SerpentineKavu.java
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
* permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
* conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||||
|
* provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||||
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* The views and conclusions contained in the software and documentation are those of the
|
||||||
|
* authors and should not be interpreted as representing official policies, either expressed
|
||||||
|
* or implied, of BetaSteward_at_googlemail.com.
|
||||||
|
*/
|
||||||
|
package mage.sets.invasion;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
import mage.MageInt;
|
||||||
|
import mage.abilities.common.SimpleActivatedAbility;
|
||||||
|
import mage.abilities.costs.mana.ManaCostsImpl;
|
||||||
|
import mage.abilities.effects.common.continuous.GainAbilitySourceEffect;
|
||||||
|
import mage.abilities.keyword.HasteAbility;
|
||||||
|
import mage.cards.CardImpl;
|
||||||
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.Duration;
|
||||||
|
import mage.constants.Rarity;
|
||||||
|
import mage.constants.Zone;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author anonymous
|
||||||
|
*/
|
||||||
|
public class SerpentineKavu extends CardImpl {
|
||||||
|
|
||||||
|
public SerpentineKavu(UUID ownerId) {
|
||||||
|
super(ownerId, 211, "Serpentine Kavu", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{4}{G}");
|
||||||
|
this.expansionSetCode = "INV";
|
||||||
|
this.subtype.add("Kavu");
|
||||||
|
this.power = new MageInt(4);
|
||||||
|
this.toughness = new MageInt(4);
|
||||||
|
|
||||||
|
// {R}: Serpentine Kavu gains haste until end of turn.
|
||||||
|
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilitySourceEffect(HasteAbility.getInstance(), Duration.EndOfTurn), new ManaCostsImpl("{R}")));
|
||||||
|
}
|
||||||
|
|
||||||
|
public SerpentineKavu(final SerpentineKavu card) {
|
||||||
|
super(card);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SerpentineKavu copy() {
|
||||||
|
return new SerpentineKavu(this);
|
||||||
|
}
|
||||||
|
}
|
52
Mage.Sets/src/mage/sets/invasion/Stun.java
Normal file
52
Mage.Sets/src/mage/sets/invasion/Stun.java
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
* permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
* conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||||
|
* provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||||
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* The views and conclusions contained in the software and documentation are those of the
|
||||||
|
* authors and should not be interpreted as representing official policies, either expressed
|
||||||
|
* or implied, of BetaSteward_at_googlemail.com.
|
||||||
|
*/
|
||||||
|
package mage.sets.invasion;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author anonymous
|
||||||
|
*/
|
||||||
|
public class Stun extends mage.sets.tempest.Stun {
|
||||||
|
|
||||||
|
public Stun(UUID ownerId) {
|
||||||
|
super(ownerId);
|
||||||
|
this.cardNumber = 172;
|
||||||
|
this.expansionSetCode = "INV";
|
||||||
|
}
|
||||||
|
|
||||||
|
public Stun(final Stun card) {
|
||||||
|
super(card);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Stun copy() {
|
||||||
|
return new Stun(this);
|
||||||
|
}
|
||||||
|
}
|
63
Mage.Sets/src/mage/sets/mercadianmasques/CloseQuarters.java
Normal file
63
Mage.Sets/src/mage/sets/mercadianmasques/CloseQuarters.java
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
* permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
* conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||||
|
* provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||||
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* The views and conclusions contained in the software and documentation are those of the
|
||||||
|
* authors and should not be interpreted as representing official policies, either expressed
|
||||||
|
* or implied, of BetaSteward_at_googlemail.com.
|
||||||
|
*/
|
||||||
|
package mage.sets.mercadianmasques;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
import mage.abilities.Ability;
|
||||||
|
import mage.abilities.common.BecomesBlockedAllTriggeredAbility;
|
||||||
|
import mage.abilities.effects.common.DamageTargetEffect;
|
||||||
|
import mage.cards.CardImpl;
|
||||||
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.Rarity;
|
||||||
|
import mage.target.common.TargetCreatureOrPlayer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author fireshoes
|
||||||
|
*/
|
||||||
|
public class CloseQuarters extends CardImpl {
|
||||||
|
|
||||||
|
public CloseQuarters(UUID ownerId) {
|
||||||
|
super(ownerId, 184, "Close Quarters", Rarity.UNCOMMON, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}{R}");
|
||||||
|
this.expansionSetCode = "MMQ";
|
||||||
|
|
||||||
|
// Whenever a creature you control becomes blocked, Close Quarters deals 1 damage to target creature or player.
|
||||||
|
Ability ability = new BecomesBlockedAllTriggeredAbility(new DamageTargetEffect(1), true);
|
||||||
|
ability.addTarget(new TargetCreatureOrPlayer());
|
||||||
|
this.addAbility(ability);
|
||||||
|
}
|
||||||
|
|
||||||
|
public CloseQuarters(final CloseQuarters card) {
|
||||||
|
super(card);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CloseQuarters copy() {
|
||||||
|
return new CloseQuarters(this);
|
||||||
|
}
|
||||||
|
}
|
|
@ -29,11 +29,11 @@ package mage.sets.mirrodin;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.TriggeredAbilityImpl;
|
|
||||||
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||||
import mage.abilities.effects.Effect;
|
import mage.abilities.effects.Effect;
|
||||||
import mage.abilities.effects.OneShotEffect;
|
import mage.abilities.effects.OneShotEffect;
|
||||||
import mage.abilities.effects.common.AddManaOfAnyTypeProducedEffect;
|
import mage.abilities.effects.common.AddManaOfAnyTypeProducedEffect;
|
||||||
|
import mage.abilities.mana.TriggeredManaAbility;
|
||||||
import mage.cards.Card;
|
import mage.cards.Card;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
|
@ -125,11 +125,10 @@ class ExtraplanarLensImprintEffect extends OneShotEffect {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class ExtraplanarLensTriggeredAbility extends TriggeredAbilityImpl {
|
class ExtraplanarLensTriggeredAbility extends TriggeredManaAbility {
|
||||||
|
|
||||||
public ExtraplanarLensTriggeredAbility() {
|
public ExtraplanarLensTriggeredAbility() {
|
||||||
super(Zone.BATTLEFIELD, new AddManaOfAnyTypeProducedEffect());
|
super(Zone.BATTLEFIELD, new AddManaOfAnyTypeProducedEffect());
|
||||||
this.usesStack = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public ExtraplanarLensTriggeredAbility(final ExtraplanarLensTriggeredAbility ability) {
|
public ExtraplanarLensTriggeredAbility(final ExtraplanarLensTriggeredAbility ability) {
|
||||||
|
|
52
Mage.Sets/src/mage/sets/onslaught/GustcloakHarrier.java
Normal file
52
Mage.Sets/src/mage/sets/onslaught/GustcloakHarrier.java
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
* permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
* conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||||
|
* provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||||
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* The views and conclusions contained in the software and documentation are those of the
|
||||||
|
* authors and should not be interpreted as representing official policies, either expressed
|
||||||
|
* or implied, of BetaSteward_at_googlemail.com.
|
||||||
|
*/
|
||||||
|
package mage.sets.onslaught;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author fireshoes
|
||||||
|
*/
|
||||||
|
public class GustcloakHarrier extends mage.sets.vintagemasters.GustcloakHarrier {
|
||||||
|
|
||||||
|
public GustcloakHarrier(UUID ownerId) {
|
||||||
|
super(ownerId);
|
||||||
|
this.cardNumber = 34;
|
||||||
|
this.expansionSetCode = "ONS";
|
||||||
|
}
|
||||||
|
|
||||||
|
public GustcloakHarrier(final GustcloakHarrier card) {
|
||||||
|
super(card);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public GustcloakHarrier copy() {
|
||||||
|
return new GustcloakHarrier(this);
|
||||||
|
}
|
||||||
|
}
|
71
Mage.Sets/src/mage/sets/onslaught/GustcloakRunner.java
Normal file
71
Mage.Sets/src/mage/sets/onslaught/GustcloakRunner.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.sets.onslaught;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
import mage.MageInt;
|
||||||
|
import mage.abilities.Ability;
|
||||||
|
import mage.abilities.common.BecomesBlockedTriggeredAbility;
|
||||||
|
import mage.abilities.effects.Effect;
|
||||||
|
import mage.abilities.effects.common.RemoveFromCombatSourceEffect;
|
||||||
|
import mage.abilities.effects.common.UntapSourceEffect;
|
||||||
|
import mage.cards.CardImpl;
|
||||||
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.Rarity;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author fireshoes
|
||||||
|
*/
|
||||||
|
public class GustcloakRunner extends CardImpl {
|
||||||
|
|
||||||
|
public GustcloakRunner(UUID ownerId) {
|
||||||
|
super(ownerId, 35, "Gustcloak Runner", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{W}");
|
||||||
|
this.expansionSetCode = "ONS";
|
||||||
|
this.subtype.add("Human");
|
||||||
|
this.subtype.add("Soldier");
|
||||||
|
this.power = new MageInt(1);
|
||||||
|
this.toughness = new MageInt(1);
|
||||||
|
|
||||||
|
// Whenever Gustcloak Runner becomes blocked, you may untap it and remove it from combat.
|
||||||
|
Ability ability = new BecomesBlockedTriggeredAbility(new UntapSourceEffect(), true);
|
||||||
|
Effect effect = new RemoveFromCombatSourceEffect();
|
||||||
|
effect.setText("and remove it from combat");
|
||||||
|
ability.addEffect(effect);
|
||||||
|
this.addAbility(ability);
|
||||||
|
}
|
||||||
|
|
||||||
|
public GustcloakRunner(final GustcloakRunner card) {
|
||||||
|
super(card);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public GustcloakRunner copy() {
|
||||||
|
return new GustcloakRunner(this);
|
||||||
|
}
|
||||||
|
}
|
75
Mage.Sets/src/mage/sets/onslaught/GustcloakSkirmisher.java
Normal file
75
Mage.Sets/src/mage/sets/onslaught/GustcloakSkirmisher.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.sets.onslaught;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
import mage.MageInt;
|
||||||
|
import mage.abilities.Ability;
|
||||||
|
import mage.abilities.common.BecomesBlockedTriggeredAbility;
|
||||||
|
import mage.abilities.effects.Effect;
|
||||||
|
import mage.abilities.effects.common.RemoveFromCombatSourceEffect;
|
||||||
|
import mage.abilities.effects.common.UntapSourceEffect;
|
||||||
|
import mage.abilities.keyword.FlyingAbility;
|
||||||
|
import mage.cards.CardImpl;
|
||||||
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.Rarity;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author fireshoes
|
||||||
|
*/
|
||||||
|
public class GustcloakSkirmisher extends CardImpl {
|
||||||
|
|
||||||
|
public GustcloakSkirmisher(UUID ownerId) {
|
||||||
|
super(ownerId, 38, "Gustcloak Skirmisher", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{3}{W}");
|
||||||
|
this.expansionSetCode = "ONS";
|
||||||
|
this.subtype.add("Bird");
|
||||||
|
this.subtype.add("Soldier");
|
||||||
|
this.power = new MageInt(2);
|
||||||
|
this.toughness = new MageInt(3);
|
||||||
|
|
||||||
|
// Flying
|
||||||
|
this.addAbility(FlyingAbility.getInstance());
|
||||||
|
|
||||||
|
// Whenever Gustcloak Skirmisher becomes blocked, you may untap it and remove it from combat.
|
||||||
|
Ability ability = new BecomesBlockedTriggeredAbility(new UntapSourceEffect(), true);
|
||||||
|
Effect effect = new RemoveFromCombatSourceEffect();
|
||||||
|
effect.setText("and remove it from combat");
|
||||||
|
ability.addEffect(effect);
|
||||||
|
this.addAbility(ability);
|
||||||
|
}
|
||||||
|
|
||||||
|
public GustcloakSkirmisher(final GustcloakSkirmisher card) {
|
||||||
|
super(card);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public GustcloakSkirmisher copy() {
|
||||||
|
return new GustcloakSkirmisher(this);
|
||||||
|
}
|
||||||
|
}
|
|
@ -28,6 +28,7 @@
|
||||||
package mage.sets.prophecy;
|
package mage.sets.prophecy;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
import mage.MageObject;
|
||||||
import mage.abilities.Ability;
|
import mage.abilities.Ability;
|
||||||
import mage.abilities.common.SpellCastOpponentTriggeredAbility;
|
import mage.abilities.common.SpellCastOpponentTriggeredAbility;
|
||||||
import mage.abilities.costs.Cost;
|
import mage.abilities.costs.Cost;
|
||||||
|
@ -53,10 +54,8 @@ public class RhysticStudy extends CardImpl {
|
||||||
super(ownerId, 45, "Rhystic Study", Rarity.COMMON, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}");
|
super(ownerId, 45, "Rhystic Study", Rarity.COMMON, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}");
|
||||||
this.expansionSetCode = "PCY";
|
this.expansionSetCode = "PCY";
|
||||||
|
|
||||||
this.color.setBlue(true);
|
|
||||||
|
|
||||||
// Whenever an opponent casts a spell, you may draw a card unless that player pays {1}.
|
// Whenever an opponent casts a spell, you may draw a card unless that player pays {1}.
|
||||||
this.addAbility(new SpellCastOpponentTriggeredAbility(Zone.BATTLEFIELD, new RhysticStudyDrawEffect(), new FilterSpell(), true, SetTargetPointer.PLAYER));
|
this.addAbility(new SpellCastOpponentTriggeredAbility(Zone.BATTLEFIELD, new RhysticStudyDrawEffect(), new FilterSpell(), false, SetTargetPointer.PLAYER));
|
||||||
}
|
}
|
||||||
|
|
||||||
public RhysticStudy(final RhysticStudy card) {
|
public RhysticStudy(final RhysticStudy card) {
|
||||||
|
@ -89,12 +88,15 @@ class RhysticStudyDrawEffect extends OneShotEffect {
|
||||||
public boolean apply(Game game, Ability source) {
|
public boolean apply(Game game, Ability source) {
|
||||||
Player controller = game.getPlayer(source.getControllerId());
|
Player controller = game.getPlayer(source.getControllerId());
|
||||||
Player opponent = game.getPlayer(targetPointer.getFirst(game, source));
|
Player opponent = game.getPlayer(targetPointer.getFirst(game, source));
|
||||||
if (controller != null && opponent != null) {
|
MageObject sourceObject = source.getSourceObject(game);
|
||||||
|
if (controller != null && opponent != null && sourceObject != null) {
|
||||||
Cost cost = new GenericManaCost(1);
|
Cost cost = new GenericManaCost(1);
|
||||||
String message = "Would you like to pay {1} to prevent the opponent to draw a card?";
|
String message = "Would you like to pay {1} to prevent the opponent to draw a card?";
|
||||||
if (!(opponent.chooseUse(Outcome.Benefit, message, game) && cost.pay(source, game, source.getSourceId(), opponent.getId(), false))) {
|
if (!(opponent.chooseUse(Outcome.Benefit, message, game) && cost.pay(source, game, source.getSourceId(), opponent.getId(), false))) {
|
||||||
|
if(controller.chooseUse(Outcome.DrawCard, "Draw a card (" + sourceObject.getLogName() +")", game)) {
|
||||||
controller.drawCards(1, game);
|
controller.drawCards(1, game);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|
79
Mage.Sets/src/mage/sets/shadowmoor/IntimidatorInitiate.java
Normal file
79
Mage.Sets/src/mage/sets/shadowmoor/IntimidatorInitiate.java
Normal file
|
@ -0,0 +1,79 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
* permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
* conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||||
|
* provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||||
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* The views and conclusions contained in the software and documentation are those of the
|
||||||
|
* authors and should not be interpreted as representing official policies, either expressed
|
||||||
|
* or implied, of BetaSteward_at_googlemail.com.
|
||||||
|
*/
|
||||||
|
package mage.sets.shadowmoor;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
import mage.MageInt;
|
||||||
|
import mage.ObjectColor;
|
||||||
|
import mage.abilities.common.SpellCastAllTriggeredAbility;
|
||||||
|
import mage.abilities.costs.mana.GenericManaCost;
|
||||||
|
import mage.abilities.effects.common.DoIfCostPaid;
|
||||||
|
import mage.abilities.effects.common.combat.CantBlockTargetEffect;
|
||||||
|
import mage.cards.CardImpl;
|
||||||
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.Duration;
|
||||||
|
import mage.constants.Rarity;
|
||||||
|
import mage.filter.FilterSpell;
|
||||||
|
import mage.filter.predicate.mageobject.ColorPredicate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author jeffwadsworth
|
||||||
|
*/
|
||||||
|
public class IntimidatorInitiate extends CardImpl {
|
||||||
|
|
||||||
|
private static final FilterSpell filter = new FilterSpell("red spell");
|
||||||
|
|
||||||
|
static {
|
||||||
|
filter.add(new ColorPredicate(ObjectColor.RED));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final String rule = "Whenever a player casts a red spell, you may pay {1}. If you do, target creature can't block this turn";
|
||||||
|
|
||||||
|
public IntimidatorInitiate(UUID ownerId) {
|
||||||
|
super(ownerId, 96, "Intimidator Initiate", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{R}");
|
||||||
|
this.expansionSetCode = "SHM";
|
||||||
|
this.subtype.add("Goblin");
|
||||||
|
this.subtype.add("Shaman");
|
||||||
|
this.power = new MageInt(1);
|
||||||
|
this.toughness = new MageInt(1);
|
||||||
|
|
||||||
|
// Whenever a player casts a red spell, you may pay {1}. If you do, target creature can't block this turn.
|
||||||
|
this.addAbility(new SpellCastAllTriggeredAbility(new DoIfCostPaid(new CantBlockTargetEffect(Duration.EndOfTurn), new GenericManaCost(1)), filter, true, rule));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public IntimidatorInitiate(final IntimidatorInitiate card) {
|
||||||
|
super(card);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IntimidatorInitiate copy() {
|
||||||
|
return new IntimidatorInitiate(this);
|
||||||
|
}
|
||||||
|
}
|
76
Mage.Sets/src/mage/sets/shadowmoor/JawsOfStone.java
Normal file
76
Mage.Sets/src/mage/sets/shadowmoor/JawsOfStone.java
Normal file
|
@ -0,0 +1,76 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
* permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
* conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||||
|
* provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||||
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* The views and conclusions contained in the software and documentation are those of the
|
||||||
|
* authors and should not be interpreted as representing official policies, either expressed
|
||||||
|
* or implied, of BetaSteward_at_googlemail.com.
|
||||||
|
*/
|
||||||
|
package mage.sets.shadowmoor;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
|
||||||
|
import mage.abilities.effects.Effect;
|
||||||
|
import mage.abilities.effects.common.DamageMultiEffect;
|
||||||
|
import mage.cards.CardImpl;
|
||||||
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.Rarity;
|
||||||
|
import mage.filter.common.FilterControlledLandPermanent;
|
||||||
|
import mage.filter.predicate.mageobject.SubtypePredicate;
|
||||||
|
import mage.target.common.TargetCreatureOrPlayerAmount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author jeffwadsworth
|
||||||
|
*/
|
||||||
|
public class JawsOfStone extends CardImpl {
|
||||||
|
|
||||||
|
static final private FilterControlledLandPermanent filter = new FilterControlledLandPermanent("mountains you control");
|
||||||
|
|
||||||
|
static {
|
||||||
|
filter.add(new SubtypePredicate("Mountain"));
|
||||||
|
}
|
||||||
|
|
||||||
|
static final private String rule = "{this} deals X damage divided as you choose among any number of target creatures and/or players, where X is the number of Mountains you control as you cast {this}";
|
||||||
|
|
||||||
|
public JawsOfStone(UUID ownerId) {
|
||||||
|
super(ownerId, 97, "Jaws of Stone", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{5}{R}");
|
||||||
|
this.expansionSetCode = "SHM";
|
||||||
|
|
||||||
|
// Jaws of Stone deals X damage divided as you choose among any number of target creatures and/or players, where X is the number of Mountains you control as you cast Jaws of Stone.
|
||||||
|
PermanentsOnBattlefieldCount mountains = new PermanentsOnBattlefieldCount(filter, null);
|
||||||
|
Effect effect = new DamageMultiEffect(mountains);
|
||||||
|
effect.setText(rule);
|
||||||
|
this.getSpellAbility().addEffect(effect);
|
||||||
|
this.getSpellAbility().addTarget(new TargetCreatureOrPlayerAmount(mountains));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public JawsOfStone(final JawsOfStone card) {
|
||||||
|
super(card);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JawsOfStone copy() {
|
||||||
|
return new JawsOfStone(this);
|
||||||
|
}
|
||||||
|
}
|
116
Mage.Sets/src/mage/sets/shadowmoor/KnollspineDragon.java
Normal file
116
Mage.Sets/src/mage/sets/shadowmoor/KnollspineDragon.java
Normal file
|
@ -0,0 +1,116 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
* permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
* conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||||
|
* provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||||
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* The views and conclusions contained in the software and documentation are those of the
|
||||||
|
* authors and should not be interpreted as representing official policies, either expressed
|
||||||
|
* or implied, of BetaSteward_at_googlemail.com.
|
||||||
|
*/
|
||||||
|
package mage.sets.shadowmoor;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
import mage.MageInt;
|
||||||
|
import mage.abilities.Ability;
|
||||||
|
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||||
|
import mage.abilities.effects.OneShotEffect;
|
||||||
|
import mage.abilities.effects.common.discard.DiscardHandControllerEffect;
|
||||||
|
import mage.abilities.keyword.FlyingAbility;
|
||||||
|
import mage.cards.CardImpl;
|
||||||
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.Outcome;
|
||||||
|
import mage.constants.Rarity;
|
||||||
|
import mage.game.Game;
|
||||||
|
import mage.players.Player;
|
||||||
|
import mage.target.common.TargetOpponent;
|
||||||
|
import mage.watchers.common.AmountOfDamageAPlayerReceivedThisTurnWatcher;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author jeffwadsworth
|
||||||
|
*/
|
||||||
|
public class KnollspineDragon extends CardImpl {
|
||||||
|
|
||||||
|
public KnollspineDragon(UUID ownerId) {
|
||||||
|
super(ownerId, 98, "Knollspine Dragon", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{5}{R}{R}");
|
||||||
|
this.expansionSetCode = "SHM";
|
||||||
|
this.subtype.add("Dragon");
|
||||||
|
this.power = new MageInt(7);
|
||||||
|
this.toughness = new MageInt(5);
|
||||||
|
|
||||||
|
// Flying
|
||||||
|
this.addAbility(FlyingAbility.getInstance());
|
||||||
|
|
||||||
|
// When Knollspine Dragon enters the battlefield, you may discard your hand and draw cards equal to the damage dealt to target opponent this turn.
|
||||||
|
Ability ability = new EntersBattlefieldTriggeredAbility(new KnollspineDragonEffect(), true);
|
||||||
|
ability.addTarget(new TargetOpponent());
|
||||||
|
this.addAbility(ability, new AmountOfDamageAPlayerReceivedThisTurnWatcher());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public KnollspineDragon(final KnollspineDragon card) {
|
||||||
|
super(card);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public KnollspineDragon copy() {
|
||||||
|
return new KnollspineDragon(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class KnollspineDragonEffect extends OneShotEffect {
|
||||||
|
|
||||||
|
public KnollspineDragonEffect() {
|
||||||
|
super(Outcome.Neutral);
|
||||||
|
staticText = "you may discard your hand and draw cards equal to the damage dealt to target opponent this turn";
|
||||||
|
}
|
||||||
|
|
||||||
|
public KnollspineDragonEffect(KnollspineDragonEffect effect) {
|
||||||
|
super(effect);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean apply(Game game, Ability source) {
|
||||||
|
Player controller = game.getPlayer(source.getControllerId());
|
||||||
|
Player targetOpponent = game.getPlayer(targetPointer.getFirst(game, source));
|
||||||
|
if (controller != null) {
|
||||||
|
new DiscardHandControllerEffect().apply(game, source);
|
||||||
|
if (targetOpponent != null) {
|
||||||
|
AmountOfDamageAPlayerReceivedThisTurnWatcher watcher = (AmountOfDamageAPlayerReceivedThisTurnWatcher) game.getState().getWatchers().get("AmountOfDamageReceivedThisTurn");
|
||||||
|
if (watcher != null) {
|
||||||
|
int drawAmount = watcher.getAmountOfDamageReceivedThisTurn(targetOpponent.getId());
|
||||||
|
controller.drawCards(drawAmount, game);
|
||||||
|
game.informPlayers(controller.getName() + "draws " + drawAmount + " cards");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
game.informPlayers(controller.getName() + "drew no cards");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public KnollspineDragonEffect copy() {
|
||||||
|
return new KnollspineDragonEffect(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -36,6 +36,7 @@ import mage.abilities.costs.common.SacrificeTargetCost;
|
||||||
import mage.abilities.costs.common.TapSourceCost;
|
import mage.abilities.costs.common.TapSourceCost;
|
||||||
import mage.abilities.effects.common.AddManaToManaPoolTargetControllerEffect;
|
import mage.abilities.effects.common.AddManaToManaPoolTargetControllerEffect;
|
||||||
import mage.abilities.effects.common.DamageTargetEffect;
|
import mage.abilities.effects.common.DamageTargetEffect;
|
||||||
|
import mage.abilities.mana.SimpleManaAbility;
|
||||||
import mage.cards.CardImpl;
|
import mage.cards.CardImpl;
|
||||||
import mage.constants.CardType;
|
import mage.constants.CardType;
|
||||||
import mage.constants.Rarity;
|
import mage.constants.Rarity;
|
||||||
|
@ -74,7 +75,7 @@ public class Valleymaker extends CardImpl {
|
||||||
this.addAbility(ability);
|
this.addAbility(ability);
|
||||||
|
|
||||||
// {tap}, Sacrifice a Forest: Choose a player. That player adds {G}{G}{G} to his or her mana pool.
|
// {tap}, Sacrifice a Forest: Choose a player. That player adds {G}{G}{G} to his or her mana pool.
|
||||||
Ability ability2 = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddManaToManaPoolTargetControllerEffect(new Mana(0,3,0,0,0,0,0), "chosen player"), new TapSourceCost(), false);
|
Ability ability2 = new SimpleManaAbility(Zone.BATTLEFIELD, new AddManaToManaPoolTargetControllerEffect(new Mana(0,3,0,0,0,0,0), "chosen player"), new TapSourceCost());
|
||||||
ability2.addCost(new SacrificeTargetCost(new TargetControlledPermanent(filter2)));
|
ability2.addCost(new SacrificeTargetCost(new TargetControlledPermanent(filter2)));
|
||||||
ability2.addTarget(new TargetPlayer(1, 1, true));
|
ability2.addTarget(new TargetPlayer(1, 1, true));
|
||||||
this.addAbility(ability2);
|
this.addAbility(ability2);
|
||||||
|
|
70
Mage.Sets/src/mage/sets/tempest/Stun.java
Normal file
70
Mage.Sets/src/mage/sets/tempest/Stun.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.sets.tempest;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
|
||||||
|
|
||||||
|
import mage.abilities.effects.Effect;
|
||||||
|
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
||||||
|
import mage.abilities.effects.common.combat.CantBlockTargetEffect;
|
||||||
|
import mage.cards.CardImpl;
|
||||||
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.Duration;
|
||||||
|
import mage.constants.Rarity;
|
||||||
|
import mage.target.common.TargetCreaturePermanent;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author anonymous
|
||||||
|
*/
|
||||||
|
public class Stun extends CardImpl {
|
||||||
|
|
||||||
|
public Stun(UUID ownerId) {
|
||||||
|
super(ownerId, 207, "Stun", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{1}{R}");
|
||||||
|
this.expansionSetCode = "TMP";
|
||||||
|
|
||||||
|
// Target creature can't block this turn.
|
||||||
|
Effect effect = new CantBlockTargetEffect(Duration.EndOfTurn);
|
||||||
|
effect.setText("Target creature can't block this turn.");
|
||||||
|
this.getSpellAbility().addEffect(effect);
|
||||||
|
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
|
||||||
|
|
||||||
|
// Draw a card.
|
||||||
|
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1));
|
||||||
|
}
|
||||||
|
|
||||||
|
public Stun(final Stun card) {
|
||||||
|
super(card);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Stun copy() {
|
||||||
|
return new Stun(this);
|
||||||
|
}
|
||||||
|
}
|
52
Mage.Sets/src/mage/sets/tenth/Stun.java
Normal file
52
Mage.Sets/src/mage/sets/tenth/Stun.java
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
* permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
* conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||||
|
* provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||||
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* The views and conclusions contained in the software and documentation are those of the
|
||||||
|
* authors and should not be interpreted as representing official policies, either expressed
|
||||||
|
* or implied, of BetaSteward_at_googlemail.com.
|
||||||
|
*/
|
||||||
|
package mage.sets.tenth;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author anonymous
|
||||||
|
*/
|
||||||
|
public class Stun extends mage.sets.tempest.Stun {
|
||||||
|
|
||||||
|
public Stun(UUID ownerId) {
|
||||||
|
super(ownerId);
|
||||||
|
this.cardNumber = 240;
|
||||||
|
this.expansionSetCode = "10E";
|
||||||
|
}
|
||||||
|
|
||||||
|
public Stun(final Stun card) {
|
||||||
|
super(card);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Stun copy() {
|
||||||
|
return new Stun(this);
|
||||||
|
}
|
||||||
|
}
|
83
Mage.Sets/src/mage/sets/timespiral/GustcloakCavalier.java
Normal file
83
Mage.Sets/src/mage/sets/timespiral/GustcloakCavalier.java
Normal file
|
@ -0,0 +1,83 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without modification, are
|
||||||
|
* permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||||
|
* conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||||
|
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||||
|
* provided with the distribution.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||||
|
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
|
||||||
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||||
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* The views and conclusions contained in the software and documentation are those of the
|
||||||
|
* authors and should not be interpreted as representing official policies, either expressed
|
||||||
|
* or implied, of BetaSteward_at_googlemail.com.
|
||||||
|
*/
|
||||||
|
package mage.sets.timespiral;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
import mage.MageInt;
|
||||||
|
import mage.abilities.Ability;
|
||||||
|
import mage.abilities.common.AttacksTriggeredAbility;
|
||||||
|
import mage.abilities.common.BecomesBlockedTriggeredAbility;
|
||||||
|
import mage.abilities.effects.Effect;
|
||||||
|
import mage.abilities.effects.common.RemoveFromCombatSourceEffect;
|
||||||
|
import mage.abilities.effects.common.TapTargetEffect;
|
||||||
|
import mage.abilities.effects.common.UntapSourceEffect;
|
||||||
|
import mage.abilities.keyword.FlankingAbility;
|
||||||
|
import mage.cards.CardImpl;
|
||||||
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.Rarity;
|
||||||
|
import mage.target.common.TargetCreaturePermanent;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author fireshoes
|
||||||
|
*/
|
||||||
|
public class GustcloakCavalier extends CardImpl {
|
||||||
|
|
||||||
|
public GustcloakCavalier(UUID ownerId) {
|
||||||
|
super(ownerId, 22, "Gustcloak Cavalier", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{3}{W}{W}");
|
||||||
|
this.expansionSetCode = "TSP";
|
||||||
|
this.subtype.add("Human");
|
||||||
|
this.subtype.add("Knight");
|
||||||
|
this.power = new MageInt(2);
|
||||||
|
this.toughness = new MageInt(2);
|
||||||
|
|
||||||
|
// Flanking
|
||||||
|
this.addAbility(new FlankingAbility());
|
||||||
|
|
||||||
|
// Whenever Gustcloak Cavalier attacks, you may tap target creature.
|
||||||
|
Ability ability = new AttacksTriggeredAbility(new TapTargetEffect(), true);
|
||||||
|
ability.addTarget(new TargetCreaturePermanent());
|
||||||
|
this.addAbility(ability);
|
||||||
|
|
||||||
|
// Whenever Gustcloak Cavalier becomes blocked, you may untap Gustcloak Cavalier and remove it from combat.
|
||||||
|
Ability ability2 = new BecomesBlockedTriggeredAbility(new UntapSourceEffect(), true);
|
||||||
|
Effect effect = new RemoveFromCombatSourceEffect();
|
||||||
|
effect.setText("and remove it from combat");
|
||||||
|
ability2.addEffect(effect);
|
||||||
|
this.addAbility(ability2);
|
||||||
|
}
|
||||||
|
|
||||||
|
public GustcloakCavalier(final GustcloakCavalier card) {
|
||||||
|
super(card);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public GustcloakCavalier copy() {
|
||||||
|
return new GustcloakCavalier(this);
|
||||||
|
}
|
||||||
|
}
|
75
Mage.Sets/src/mage/sets/vintagemasters/GustcloakHarrier.java
Normal file
75
Mage.Sets/src/mage/sets/vintagemasters/GustcloakHarrier.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.sets.vintagemasters;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
import mage.MageInt;
|
||||||
|
import mage.abilities.Ability;
|
||||||
|
import mage.abilities.common.BecomesBlockedTriggeredAbility;
|
||||||
|
import mage.abilities.effects.Effect;
|
||||||
|
import mage.abilities.effects.common.RemoveFromCombatSourceEffect;
|
||||||
|
import mage.abilities.effects.common.UntapSourceEffect;
|
||||||
|
import mage.abilities.keyword.FlyingAbility;
|
||||||
|
import mage.cards.CardImpl;
|
||||||
|
import mage.constants.CardType;
|
||||||
|
import mage.constants.Rarity;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author fireshoes
|
||||||
|
*/
|
||||||
|
public class GustcloakHarrier extends CardImpl {
|
||||||
|
|
||||||
|
public GustcloakHarrier(UUID ownerId) {
|
||||||
|
super(ownerId, 30, "Gustcloak Harrier", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{1}{W}{W}");
|
||||||
|
this.expansionSetCode = "VMA";
|
||||||
|
this.subtype.add("Bird");
|
||||||
|
this.subtype.add("Soldier");
|
||||||
|
this.power = new MageInt(2);
|
||||||
|
this.toughness = new MageInt(2);
|
||||||
|
|
||||||
|
// Flying
|
||||||
|
this.addAbility(FlyingAbility.getInstance());
|
||||||
|
|
||||||
|
// Whenever Gustcloak Harrier becomes blocked, you may untap it and remove it from combat.
|
||||||
|
Ability ability = new BecomesBlockedTriggeredAbility(new UntapSourceEffect(), true);
|
||||||
|
Effect effect = new RemoveFromCombatSourceEffect();
|
||||||
|
effect.setText("and remove it from combat");
|
||||||
|
ability.addEffect(effect);
|
||||||
|
this.addAbility(ability);
|
||||||
|
}
|
||||||
|
|
||||||
|
public GustcloakHarrier(final GustcloakHarrier card) {
|
||||||
|
super(card);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public GustcloakHarrier copy() {
|
||||||
|
return new GustcloakHarrier(this);
|
||||||
|
}
|
||||||
|
}
|
|
@ -53,11 +53,6 @@ public class SimpleActivatedAbility extends ActivatedAbilityImpl {
|
||||||
super(zone, effect, cost);
|
super(zone, effect, cost);
|
||||||
}
|
}
|
||||||
|
|
||||||
public SimpleActivatedAbility(Zone zone, Effect effect, Cost cost, boolean usesStack) {
|
|
||||||
super(zone, effect, cost);
|
|
||||||
this.usesStack = usesStack;
|
|
||||||
}
|
|
||||||
|
|
||||||
public SimpleActivatedAbility(SimpleActivatedAbility ability) {
|
public SimpleActivatedAbility(SimpleActivatedAbility ability) {
|
||||||
super(ability);
|
super(ability);
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,6 +38,8 @@ import mage.abilities.effects.common.continuous.CommanderManaReplacementEffect;
|
||||||
import mage.abilities.effects.common.continuous.CommanderReplacementEffect;
|
import mage.abilities.effects.common.continuous.CommanderReplacementEffect;
|
||||||
import mage.abilities.effects.common.cost.CommanderCostModification;
|
import mage.abilities.effects.common.cost.CommanderCostModification;
|
||||||
import mage.cards.Card;
|
import mage.cards.Card;
|
||||||
|
import mage.cards.repository.CardInfo;
|
||||||
|
import mage.cards.repository.CardRepository;
|
||||||
import mage.constants.MultiplayerAttackOption;
|
import mage.constants.MultiplayerAttackOption;
|
||||||
import mage.constants.PhaseStep;
|
import mage.constants.PhaseStep;
|
||||||
import mage.constants.RangeOfInfluence;
|
import mage.constants.RangeOfInfluence;
|
||||||
|
@ -73,7 +75,12 @@ public abstract class GameTinyLeadersImpl extends GameImpl{
|
||||||
Player player = getPlayer(playerId);
|
Player player = getPlayer(playerId);
|
||||||
if (player != null){
|
if (player != null){
|
||||||
if (player.getSideboard().size() > 0){
|
if (player.getSideboard().size() > 0){
|
||||||
Card commander = getCard((UUID)player.getSideboard().toArray()[0]);
|
CardInfo cardInfo = CardRepository.instance.findCard(player.getMatchPlayer().getDeck().getName());
|
||||||
|
if (cardInfo != null) {
|
||||||
|
Card commander = cardInfo.getCard();
|
||||||
|
Set<Card> cards = new HashSet<>();
|
||||||
|
cards.add(commander);
|
||||||
|
this.loadCards(cards, playerId);
|
||||||
if (commander != null) {
|
if (commander != null) {
|
||||||
player.setCommanderId(commander.getId());
|
player.setCommanderId(commander.getId());
|
||||||
commander.moveToZone(Zone.COMMAND, null, this, true);
|
commander.moveToZone(Zone.COMMAND, null, this, true);
|
||||||
|
@ -84,6 +91,7 @@ public abstract class GameTinyLeadersImpl extends GameImpl{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
this.getState().addAbility(ability, null);
|
this.getState().addAbility(ability, null);
|
||||||
|
|
|
@ -98,6 +98,7 @@ public abstract class MatchImpl implements Match {
|
||||||
@Override
|
@Override
|
||||||
public void addPlayer(Player player, Deck deck) {
|
public void addPlayer(Player player, Deck deck) {
|
||||||
MatchPlayer matchPlayer = new MatchPlayer(player, deck);
|
MatchPlayer matchPlayer = new MatchPlayer(player, deck);
|
||||||
|
player.setMatchPlayer(matchPlayer);
|
||||||
players.add(matchPlayer);
|
players.add(matchPlayer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -61,6 +61,7 @@ import java.io.Serializable;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import mage.constants.PlayerAction;
|
import mage.constants.PlayerAction;
|
||||||
import mage.game.combat.CombatGroup;
|
import mage.game.combat.CombatGroup;
|
||||||
|
import mage.game.match.MatchPlayer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -531,4 +532,6 @@ public interface Player extends MageItem, Copyable<Player> {
|
||||||
|
|
||||||
boolean isInPayManaMode();
|
boolean isInPayManaMode();
|
||||||
|
|
||||||
|
void setMatchPlayer(MatchPlayer matchPlayer);
|
||||||
|
MatchPlayer getMatchPlayer();
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,6 @@
|
||||||
* authors and should not be interpreted as representing official policies, either expressed
|
* authors and should not be interpreted as representing official policies, either expressed
|
||||||
* or implied, of BetaSteward_at_googlemail.com.
|
* or implied, of BetaSteward_at_googlemail.com.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package mage.players;
|
package mage.players;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
@ -119,6 +118,7 @@ import mage.game.events.DamagePlayerEvent;
|
||||||
import mage.game.events.DamagedPlayerEvent;
|
import mage.game.events.DamagedPlayerEvent;
|
||||||
import mage.game.events.GameEvent;
|
import mage.game.events.GameEvent;
|
||||||
import mage.game.events.GameEvent.EventType;
|
import mage.game.events.GameEvent.EventType;
|
||||||
|
import mage.game.match.MatchPlayer;
|
||||||
import mage.game.permanent.Permanent;
|
import mage.game.permanent.Permanent;
|
||||||
import mage.game.permanent.PermanentCard;
|
import mage.game.permanent.PermanentCard;
|
||||||
import mage.game.stack.Spell;
|
import mage.game.stack.Spell;
|
||||||
|
@ -175,8 +175,9 @@ public abstract class PlayerImpl implements Player, Serializable {
|
||||||
protected Date dateLastAddedToStack; // F8
|
protected Date dateLastAddedToStack; // F8
|
||||||
protected boolean skippedAtLeastOnce; // used to track if passed started in specific phase
|
protected boolean skippedAtLeastOnce; // used to track if passed started in specific phase
|
||||||
/**
|
/**
|
||||||
* This indicates that player passed all turns until his own turn starts (F9).
|
* This indicates that player passed all turns until his own turn starts
|
||||||
* Note! This differs from passedTurn as it doesn't care about spells and abilities in the stack and will pass them as well.
|
* (F9). Note! This differs from passedTurn as it doesn't care about spells
|
||||||
|
* and abilities in the stack and will pass them as well.
|
||||||
*/
|
*/
|
||||||
protected boolean passedAllTurns; // F9
|
protected boolean passedAllTurns; // F9
|
||||||
|
|
||||||
|
@ -184,7 +185,6 @@ public abstract class PlayerImpl implements Player, Serializable {
|
||||||
protected int storedBookmark = -1;
|
protected int storedBookmark = -1;
|
||||||
protected int priorityTimeLeft = Integer.MAX_VALUE;
|
protected int priorityTimeLeft = Integer.MAX_VALUE;
|
||||||
|
|
||||||
|
|
||||||
// conceded or connection lost game
|
// conceded or connection lost game
|
||||||
protected boolean left;
|
protected boolean left;
|
||||||
// set if the player quits the complete match
|
// set if the player quits the complete match
|
||||||
|
@ -229,13 +229,16 @@ public abstract class PlayerImpl implements Player, Serializable {
|
||||||
protected boolean payManaMode = false;
|
protected boolean payManaMode = false;
|
||||||
|
|
||||||
protected UserData userData;
|
protected UserData userData;
|
||||||
|
protected MatchPlayer matchPlayer;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* During some steps we can't play anything
|
* During some steps we can't play anything
|
||||||
*/
|
*/
|
||||||
protected final Map<PhaseStep, Step.StepPart> silentPhaseSteps = new HashMap<PhaseStep, Step.StepPart>()
|
protected final Map<PhaseStep, Step.StepPart> silentPhaseSteps = new HashMap<PhaseStep, Step.StepPart>() {
|
||||||
{{ put(PhaseStep.DECLARE_ATTACKERS, Step.StepPart.PRE);}};
|
{
|
||||||
|
put(PhaseStep.DECLARE_ATTACKERS, Step.StepPart.PRE);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
public PlayerImpl(String name, RangeOfInfluence range) {
|
public PlayerImpl(String name, RangeOfInfluence range) {
|
||||||
this(UUID.randomUUID());
|
this(UUID.randomUUID());
|
||||||
|
@ -398,6 +401,7 @@ public abstract class PlayerImpl implements Player, Serializable {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cast e.g. from Karn Liberated to restart the current game
|
* Cast e.g. from Karn Liberated to restart the current game
|
||||||
|
*
|
||||||
* @param game
|
* @param game
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@ -443,6 +447,7 @@ public abstract class PlayerImpl implements Player, Serializable {
|
||||||
game.getState().getWatchers().add(new BloodthirstWatcher(playerId));
|
game.getState().getWatchers().add(new BloodthirstWatcher(playerId));
|
||||||
this.castSourceIdWithoutMana = null;
|
this.castSourceIdWithoutMana = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* called before apply effects
|
* called before apply effects
|
||||||
*
|
*
|
||||||
|
@ -476,7 +481,6 @@ public abstract class PlayerImpl implements Player, Serializable {
|
||||||
findRange(game);
|
findRange(game);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void beginTurn(Game game) {
|
public void beginTurn(Game game) {
|
||||||
this.landsPlayed = 0;
|
this.landsPlayed = 0;
|
||||||
|
@ -497,16 +501,14 @@ public abstract class PlayerImpl implements Player, Serializable {
|
||||||
inRange.add(player.getId());
|
inRange.add(player.getId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
if ((range.getRange() * 2) + 1 >= game.getPlayers().size()) {
|
if ((range.getRange() * 2) + 1 >= game.getPlayers().size()) {
|
||||||
for (Player player : game.getPlayers().values()) {
|
for (Player player : game.getPlayers().values()) {
|
||||||
if (!player.hasLeft()) {
|
if (!player.hasLeft()) {
|
||||||
inRange.add(player.getId());
|
inRange.add(player.getId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
inRange.add(playerId);
|
inRange.add(playerId);
|
||||||
PlayerList players = game.getState().getPlayerList(playerId);
|
PlayerList players = game.getState().getPlayerList(playerId);
|
||||||
for (int i = 0; i < range.getRange(); i++) {
|
for (int i = 0; i < range.getRange(); i++) {
|
||||||
|
@ -603,8 +605,8 @@ public abstract class PlayerImpl implements Player, Serializable {
|
||||||
} else if (source instanceof StackObject) {
|
} else if (source instanceof StackObject) {
|
||||||
controllerId = ((StackObject) source).getControllerId();
|
controllerId = ((StackObject) source).getControllerId();
|
||||||
}
|
}
|
||||||
if (controllerId != null && this.hasOpponent(controllerId, game) &&
|
if (controllerId != null && this.hasOpponent(controllerId, game)
|
||||||
!game.getContinuousEffects().asThough(this.getId(), AsThoughEffectType.HEXPROOF, this.getId(), game)) {
|
&& !game.getContinuousEffects().asThough(this.getId(), AsThoughEffectType.HEXPROOF, this.getId(), game)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -818,7 +820,6 @@ public abstract class PlayerImpl implements Player, Serializable {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean putCardsOnBottomOfLibrary(Cards cards, Game game, Ability source, boolean anyOrder) {
|
public boolean putCardsOnBottomOfLibrary(Cards cards, Game game, Ability source, boolean anyOrder) {
|
||||||
if (cards.size() != 0) {
|
if (cards.size() != 0) {
|
||||||
|
@ -840,15 +841,15 @@ public abstract class PlayerImpl implements Player, Serializable {
|
||||||
}
|
}
|
||||||
if (cards.size() == 1) {
|
if (cards.size() == 1) {
|
||||||
Card chosenCard = cards.get(cards.iterator().next(), game);
|
Card chosenCard = cards.get(cards.iterator().next(), game);
|
||||||
|
if (chosenCard != null) {
|
||||||
moveObjectToLibrary(chosenCard.getId(), source.getSourceId(), game, false, false);
|
moveObjectToLibrary(chosenCard.getId(), source.getSourceId(), game, false, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Can be cards or permanents that go to library
|
* Can be cards or permanents that go to library
|
||||||
*
|
*
|
||||||
|
@ -913,7 +914,6 @@ public abstract class PlayerImpl implements Player, Serializable {
|
||||||
return payManaMode;
|
return payManaMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean cast(SpellAbility ability, Game game, boolean noMana) {
|
public boolean cast(SpellAbility ability, Game game, boolean noMana) {
|
||||||
if (!ability.getSpellAbilityType().equals(SpellAbilityType.BASE)) {
|
if (!ability.getSpellAbilityType().equals(SpellAbilityType.BASE)) {
|
||||||
|
@ -1083,11 +1083,9 @@ public abstract class PlayerImpl implements Player, Serializable {
|
||||||
|
|
||||||
if (ability.getAbilityType().equals(AbilityType.SPECIAL_ACTION)) {
|
if (ability.getAbilityType().equals(AbilityType.SPECIAL_ACTION)) {
|
||||||
result = specialAction((SpecialAction) ability.copy(), game);
|
result = specialAction((SpecialAction) ability.copy(), game);
|
||||||
}
|
} else if (ability.getAbilityType().equals(AbilityType.MANA)) {
|
||||||
else if (ability.getAbilityType().equals(AbilityType.MANA)) {
|
|
||||||
result = playManaAbility((ManaAbility) ability.copy(), game);
|
result = playManaAbility((ManaAbility) ability.copy(), game);
|
||||||
}
|
} else if (ability.getAbilityType().equals(AbilityType.SPELL)) {
|
||||||
else if (ability.getAbilityType().equals(AbilityType.SPELL)) {
|
|
||||||
if (ability instanceof FlashbackAbility) {
|
if (ability instanceof FlashbackAbility) {
|
||||||
result = playAbility(ability.copy(), game);
|
result = playAbility(ability.copy(), game);
|
||||||
} else {
|
} else {
|
||||||
|
@ -1161,7 +1159,6 @@ public abstract class PlayerImpl implements Player, Serializable {
|
||||||
return useable;
|
return useable;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
protected LinkedHashMap<UUID, ActivatedAbility> getUseableActivatedAbilities(MageObject object, Zone zone, Game game) {
|
protected LinkedHashMap<UUID, ActivatedAbility> getUseableActivatedAbilities(MageObject object, Zone zone, Game game) {
|
||||||
LinkedHashMap<UUID, ActivatedAbility> useable = new LinkedHashMap<>();
|
LinkedHashMap<UUID, ActivatedAbility> useable = new LinkedHashMap<>();
|
||||||
if (!(object instanceof Permanent) || ((Permanent) object).canUseActivatedAbilities(game)) {
|
if (!(object instanceof Permanent) || ((Permanent) object).canUseActivatedAbilities(game)) {
|
||||||
|
@ -1205,9 +1202,7 @@ public abstract class PlayerImpl implements Player, Serializable {
|
||||||
return useable;
|
return useable;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Adds special abilities that are given to non permanants by continuous effects
|
// Adds special abilities that are given to non permanants by continuous effects
|
||||||
|
|
||||||
private void getOtherUseableActivatedAbilities(MageObject object, Zone zone, Game game, Map<UUID, ActivatedAbility> useable) {
|
private void getOtherUseableActivatedAbilities(MageObject object, Zone zone, Game game, Map<UUID, ActivatedAbility> useable) {
|
||||||
Abilities<ActivatedAbility> otherAbilities = game.getState().getActivatedOtherAbilities(object.getId(), zone);
|
Abilities<ActivatedAbility> otherAbilities = game.getState().getActivatedOtherAbilities(object.getId(), zone);
|
||||||
if (otherAbilities != null) {
|
if (otherAbilities != null) {
|
||||||
|
@ -1218,8 +1213,7 @@ public abstract class PlayerImpl implements Player, Serializable {
|
||||||
// Left Half
|
// Left Half
|
||||||
if (card.getCardType().contains(CardType.INSTANT)) {
|
if (card.getCardType().contains(CardType.INSTANT)) {
|
||||||
flashbackAbility = new FlashbackAbility(((SplitCard) card).getLeftHalfCard().getManaCost(), TimingRule.INSTANT);
|
flashbackAbility = new FlashbackAbility(((SplitCard) card).getLeftHalfCard().getManaCost(), TimingRule.INSTANT);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
flashbackAbility = new FlashbackAbility(((SplitCard) card).getLeftHalfCard().getManaCost(), TimingRule.SORCERY);
|
flashbackAbility = new FlashbackAbility(((SplitCard) card).getLeftHalfCard().getManaCost(), TimingRule.SORCERY);
|
||||||
}
|
}
|
||||||
flashbackAbility.setSourceId(card.getId());
|
flashbackAbility.setSourceId(card.getId());
|
||||||
|
@ -1232,8 +1226,7 @@ public abstract class PlayerImpl implements Player, Serializable {
|
||||||
// Right Half
|
// Right Half
|
||||||
if (card.getCardType().contains(CardType.INSTANT)) {
|
if (card.getCardType().contains(CardType.INSTANT)) {
|
||||||
flashbackAbility = new FlashbackAbility(((SplitCard) card).getRightHalfCard().getManaCost(), TimingRule.INSTANT);
|
flashbackAbility = new FlashbackAbility(((SplitCard) card).getRightHalfCard().getManaCost(), TimingRule.INSTANT);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
flashbackAbility = new FlashbackAbility(((SplitCard) card).getRightHalfCard().getManaCost(), TimingRule.SORCERY);
|
flashbackAbility = new FlashbackAbility(((SplitCard) card).getRightHalfCard().getManaCost(), TimingRule.SORCERY);
|
||||||
}
|
}
|
||||||
flashbackAbility.setSourceId(card.getId());
|
flashbackAbility.setSourceId(card.getId());
|
||||||
|
@ -1444,7 +1437,6 @@ public abstract class PlayerImpl implements Player, Serializable {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
//20091005 - 502.2
|
//20091005 - 502.2
|
||||||
for (Permanent permanent : game.getBattlefield().getAllActivePermanents(playerId)) {
|
for (Permanent permanent : game.getBattlefield().getAllActivePermanents(playerId)) {
|
||||||
|
@ -1605,6 +1597,7 @@ public abstract class PlayerImpl implements Player, Serializable {
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int damage(int damage, UUID sourceId, Game game, boolean combatDamage, boolean preventable) {
|
public int damage(int damage, UUID sourceId, Game game, boolean combatDamage, boolean preventable) {
|
||||||
return doDamage(damage, sourceId, game, combatDamage, preventable, null);
|
return doDamage(damage, sourceId, game, combatDamage, preventable, null);
|
||||||
|
@ -1615,7 +1608,6 @@ public abstract class PlayerImpl implements Player, Serializable {
|
||||||
return doDamage(damage, sourceId, game, combatDamage, preventable, appliedEffects);
|
return doDamage(damage, sourceId, game, combatDamage, preventable, appliedEffects);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@SuppressWarnings({"null", "ConstantConditions"})
|
@SuppressWarnings({"null", "ConstantConditions"})
|
||||||
private int doDamage(int damage, UUID sourceId, Game game, boolean combatDamage, boolean preventable, ArrayList<UUID> appliedEffects) {
|
private int doDamage(int damage, UUID sourceId, Game game, boolean combatDamage, boolean preventable, ArrayList<UUID> appliedEffects) {
|
||||||
if (damage > 0 && canDamage(game.getObject(sourceId), game)) {
|
if (damage > 0 && canDamage(game.getObject(sourceId), game)) {
|
||||||
|
@ -1733,19 +1725,24 @@ public abstract class PlayerImpl implements Player, Serializable {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setResponseString(String responseString) {}
|
public void setResponseString(String responseString) {
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setResponseManaType(UUID manaTypePlayerId, ManaType responseManaType) {}
|
public void setResponseManaType(UUID manaTypePlayerId, ManaType responseManaType) {
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setResponseUUID(UUID responseUUID) {}
|
public void setResponseUUID(UUID responseUUID) {
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setResponseBoolean(Boolean responseBoolean) {}
|
public void setResponseBoolean(Boolean responseBoolean) {
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setResponseInteger(Integer responseInteger) {}
|
public void setResponseInteger(Integer responseInteger) {
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isPassed() {
|
public boolean isPassed() {
|
||||||
|
@ -1958,6 +1955,7 @@ public abstract class PlayerImpl implements Player, Serializable {
|
||||||
public boolean hasLost() {
|
public boolean hasLost() {
|
||||||
return this.loses;
|
return this.loses;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isInGame() {
|
public boolean isInGame() {
|
||||||
return !hasQuit() && !hasLost() && !hasWon() && !hasLeft();
|
return !hasQuit() && !hasLost() && !hasWon() && !hasLeft();
|
||||||
|
@ -1967,8 +1965,7 @@ public abstract class PlayerImpl implements Player, Serializable {
|
||||||
public boolean hasWon() {
|
public boolean hasWon() {
|
||||||
if (!this.loses) {
|
if (!this.loses) {
|
||||||
return this.wins;
|
return this.wins;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2051,7 +2048,6 @@ public abstract class PlayerImpl implements Player, Serializable {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean flipCoin(Game game) {
|
public boolean flipCoin(Game game) {
|
||||||
return this.flipCoin(game, null);
|
return this.flipCoin(game, null);
|
||||||
|
@ -2194,8 +2190,7 @@ public abstract class PlayerImpl implements Player, Serializable {
|
||||||
ManaOptions abilityOptions = copy.getManaCostsToPay().getOptions();
|
ManaOptions abilityOptions = copy.getManaCostsToPay().getOptions();
|
||||||
if (abilityOptions.size() == 0) {
|
if (abilityOptions.size() == 0) {
|
||||||
return true;
|
return true;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
for (Mana mana : abilityOptions) {
|
for (Mana mana : abilityOptions) {
|
||||||
for (Mana avail : available) {
|
for (Mana avail : available) {
|
||||||
if (mana.enough(avail)) {
|
if (mana.enough(avail)) {
|
||||||
|
@ -2242,8 +2237,7 @@ public abstract class PlayerImpl implements Player, Serializable {
|
||||||
|
|
||||||
if (manaCosts.size() == 0) {
|
if (manaCosts.size() == 0) {
|
||||||
return true;
|
return true;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
for (Mana mana : manaCosts.getOptions()) {
|
for (Mana mana : manaCosts.getOptions()) {
|
||||||
for (Mana avail : available) {
|
for (Mana avail : available) {
|
||||||
if (mana.enough(avail)) {
|
if (mana.enough(avail)) {
|
||||||
|
@ -2259,6 +2253,7 @@ public abstract class PlayerImpl implements Player, Serializable {
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected boolean canLandPlayAlternateSourceCostsAbility(Card sourceObject, ManaOptions available, Ability ability, Game game) {
|
protected boolean canLandPlayAlternateSourceCostsAbility(Card sourceObject, ManaOptions available, Ability ability, Game game) {
|
||||||
if (!(sourceObject instanceof Permanent)) {
|
if (!(sourceObject instanceof Permanent)) {
|
||||||
Ability sourceAbility = null;
|
Ability sourceAbility = null;
|
||||||
|
@ -2279,8 +2274,7 @@ public abstract class PlayerImpl implements Player, Serializable {
|
||||||
|
|
||||||
if (manaCosts.size() == 0) {
|
if (manaCosts.size() == 0) {
|
||||||
return true;
|
return true;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
for (Mana mana : manaCosts.getOptions()) {
|
for (Mana mana : manaCosts.getOptions()) {
|
||||||
for (Mana avail : available) {
|
for (Mana avail : available) {
|
||||||
if (mana.enough(avail)) {
|
if (mana.enough(avail)) {
|
||||||
|
@ -2309,8 +2303,8 @@ public abstract class PlayerImpl implements Player, Serializable {
|
||||||
for (Ability ability : card.getAbilities()) { // gets this activated ability from hand? (Morph?)
|
for (Ability ability : card.getAbilities()) { // gets this activated ability from hand? (Morph?)
|
||||||
if (ability.getZone().match(Zone.HAND)) {
|
if (ability.getZone().match(Zone.HAND)) {
|
||||||
if (ability instanceof ActivatedAbility) {
|
if (ability instanceof ActivatedAbility) {
|
||||||
if (!(ability instanceof PlayLandAbility) ||
|
if (!(ability instanceof PlayLandAbility)
|
||||||
!game.getContinuousEffects().preventedByRuleModification(GameEvent.getEvent(GameEvent.EventType.PLAY_LAND, ability.getSourceId(), ability.getSourceId(), playerId), ability, game, true)) {
|
|| !game.getContinuousEffects().preventedByRuleModification(GameEvent.getEvent(GameEvent.EventType.PLAY_LAND, ability.getSourceId(), ability.getSourceId(), playerId), ability, game, true)) {
|
||||||
if (canPlay((ActivatedAbility) ability, availableMana, card, game)) {
|
if (canPlay((ActivatedAbility) ability, availableMana, card, game)) {
|
||||||
playable.add(ability);
|
playable.add(ability);
|
||||||
}
|
}
|
||||||
|
@ -2408,9 +2402,8 @@ public abstract class PlayerImpl implements Player, Serializable {
|
||||||
* @see mage.server.GameSessionPlayer#getGameView()
|
* @see mage.server.GameSessionPlayer#getGameView()
|
||||||
*
|
*
|
||||||
* @param game
|
* @param game
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Set<UUID> getPlayableInHand(Game game) {
|
public Set<UUID> getPlayableInHand(Game game) {
|
||||||
Set<UUID> playable = new HashSet<>();
|
Set<UUID> playable = new HashSet<>();
|
||||||
|
@ -2537,16 +2530,14 @@ public abstract class PlayerImpl implements Player, Serializable {
|
||||||
int amount = target.getTargetAmount(targetId);
|
int amount = target.getTargetAmount(targetId);
|
||||||
newOption.getTargets().get(targetNum).addTarget(targetId, amount, newOption, game, true);
|
newOption.getTargets().get(targetNum).addTarget(targetId, amount, newOption, game, true);
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
for (UUID targetId : target.getTargets()) {
|
for (UUID targetId : target.getTargets()) {
|
||||||
newOption.getTargets().get(targetNum).addTarget(targetId, newOption, game, true);
|
newOption.getTargets().get(targetNum).addTarget(targetId, newOption, game, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (targetNum < option.getTargets().size() - 2) {
|
if (targetNum < option.getTargets().size() - 2) {
|
||||||
addTargetOptions(options, newOption, targetNum + 1, game);
|
addTargetOptions(options, newOption, targetNum + 1, game);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
if (option.getChoices().size() > 0) {
|
if (option.getChoices().size() > 0) {
|
||||||
addChoiceOptions(options, newOption, 0, game);
|
addChoiceOptions(options, newOption, 0, game);
|
||||||
} else if (option.getCosts().getTargets().size() > 0) {
|
} else if (option.getCosts().getTargets().size() > 0) {
|
||||||
|
@ -2564,8 +2555,7 @@ public abstract class PlayerImpl implements Player, Serializable {
|
||||||
newOption.getChoices().get(choiceNum).setChoice(choice);
|
newOption.getChoices().get(choiceNum).setChoice(choice);
|
||||||
if (choiceNum < option.getChoices().size() - 1) {
|
if (choiceNum < option.getChoices().size() - 1) {
|
||||||
addChoiceOptions(options, newOption, choiceNum + 1, game);
|
addChoiceOptions(options, newOption, choiceNum + 1, game);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
if (option.getCosts().getTargets().size() > 0) {
|
if (option.getCosts().getTargets().size() > 0) {
|
||||||
addCostTargetOptions(options, newOption, 0, game);
|
addCostTargetOptions(options, newOption, 0, game);
|
||||||
} else {
|
} else {
|
||||||
|
@ -2581,8 +2571,7 @@ public abstract class PlayerImpl implements Player, Serializable {
|
||||||
newOption.getCosts().getTargets().get(targetNum).addTarget(targetId, option, game, true);
|
newOption.getCosts().getTargets().get(targetNum).addTarget(targetId, option, game, true);
|
||||||
if (targetNum < option.getCosts().getTargets().size() - 1) {
|
if (targetNum < option.getCosts().getTargets().size() - 1) {
|
||||||
addCostTargetOptions(options, newOption, targetNum + 1, game);
|
addCostTargetOptions(options, newOption, targetNum + 1, game);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
options.add(newOption);
|
options.add(newOption);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2707,7 +2696,6 @@ public abstract class PlayerImpl implements Player, Serializable {
|
||||||
setStoredBookmark(-1);
|
setStoredBookmark(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void revealFaceDownCard(Card card, Game game) {
|
public void revealFaceDownCard(Card card, Game game) {
|
||||||
if (game.getContinuousEffects().asThough(card.getId(), AsThoughEffectType.REVEAL_FACE_DOWN, this.getId(), game)) {
|
if (game.getContinuousEffects().asThough(card.getId(), AsThoughEffectType.REVEAL_FACE_DOWN, this.getId(), game)) {
|
||||||
|
@ -2759,7 +2747,9 @@ public abstract class PlayerImpl implements Player, Serializable {
|
||||||
@Override
|
@Override
|
||||||
public void setCommanderId(UUID commanderId) {
|
public void setCommanderId(UUID commanderId) {
|
||||||
this.commanderId = commanderId;
|
this.commanderId = commanderId;
|
||||||
};
|
}
|
||||||
|
|
||||||
|
;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public UUID getCommanderId() {
|
public UUID getCommanderId() {
|
||||||
|
@ -2922,6 +2912,7 @@ public abstract class PlayerImpl implements Player, Serializable {
|
||||||
public boolean isRequestToShowHandCardsAllowed() {
|
public boolean isRequestToShowHandCardsAllowed() {
|
||||||
return requestsAllowedToSeeHandCards;
|
return requestsAllowedToSeeHandCards;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean hasUserPermissionToSeeHand(UUID userId) {
|
public boolean hasUserPermissionToSeeHand(UUID userId) {
|
||||||
return usersAllowedToSeeHandCards.contains(userId);
|
return usersAllowedToSeeHandCards.contains(userId);
|
||||||
|
@ -2932,5 +2923,14 @@ public abstract class PlayerImpl implements Player, Serializable {
|
||||||
return usersAllowedToSeeHandCards;
|
return usersAllowedToSeeHandCards;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setMatchPlayer(MatchPlayer matchPlayer) {
|
||||||
|
this.matchPlayer = matchPlayer;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public MatchPlayer getMatchPlayer() {
|
||||||
|
return matchPlayer;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,94 @@
|
||||||
|
/*
|
||||||
|
* 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.watchers.common;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Map.Entry;
|
||||||
|
import java.util.UUID;
|
||||||
|
import mage.constants.WatcherScope;
|
||||||
|
import mage.game.Game;
|
||||||
|
import mage.game.events.GameEvent;
|
||||||
|
import mage.watchers.Watcher;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author jeffwadsworth
|
||||||
|
*
|
||||||
|
* Amount of damage received by a player this turn
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class AmountOfDamageAPlayerReceivedThisTurnWatcher extends Watcher {
|
||||||
|
|
||||||
|
private final Map<UUID, Integer> amountOfDamageReceivedThisTurn = new HashMap<>();
|
||||||
|
|
||||||
|
public AmountOfDamageAPlayerReceivedThisTurnWatcher() {
|
||||||
|
super("AmountOfDamageReceivedThisTurn", WatcherScope.GAME);
|
||||||
|
}
|
||||||
|
|
||||||
|
public AmountOfDamageAPlayerReceivedThisTurnWatcher(final AmountOfDamageAPlayerReceivedThisTurnWatcher watcher) {
|
||||||
|
super(watcher);
|
||||||
|
for (Entry<UUID, Integer> entry : watcher.amountOfDamageReceivedThisTurn.entrySet()) {
|
||||||
|
amountOfDamageReceivedThisTurn.put(entry.getKey(), entry.getValue());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void watch(GameEvent event, Game game) {
|
||||||
|
if (event.getType() == GameEvent.EventType.DAMAGED_PLAYER) {
|
||||||
|
UUID playerId = event.getTargetId();
|
||||||
|
if (playerId != null) {
|
||||||
|
Integer amount = amountOfDamageReceivedThisTurn.get(playerId);
|
||||||
|
if (amount == null) {
|
||||||
|
amount = Integer.valueOf(event.getAmount());
|
||||||
|
} else {
|
||||||
|
amount = Integer.valueOf(amount + event.getAmount());
|
||||||
|
}
|
||||||
|
amountOfDamageReceivedThisTurn.put(playerId, amount);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getAmountOfDamageReceivedThisTurn(UUID playerId) {
|
||||||
|
Integer amount = amountOfDamageReceivedThisTurn.get(playerId);
|
||||||
|
if (amount != null) {
|
||||||
|
return amount;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void reset() {
|
||||||
|
amountOfDamageReceivedThisTurn.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AmountOfDamageAPlayerReceivedThisTurnWatcher copy() {
|
||||||
|
return new AmountOfDamageAPlayerReceivedThisTurnWatcher(this);
|
||||||
|
}
|
||||||
|
}
|
|
@ -25571,26 +25571,38 @@ Curse of Thirst|WPN Gateway|81|Special|{4}{B}|Enchantment — Aura Curse|||Encha
|
||||||
Nearheath Stalker|WPN Gateway|82|Special|{4}{R}|Creature — Vampire Rogue|4|1|Undying <i>(When this creature dies, if it had no +1/+1 counters on it, return it to the battlefield under its owner's control with a +1/+1 counter on it.)</i>|
|
Nearheath Stalker|WPN Gateway|82|Special|{4}{R}|Creature — Vampire Rogue|4|1|Undying <i>(When this creature dies, if it had no +1/+1 counters on it, return it to the battlefield under its owner's control with a +1/+1 counter on it.)</i>|
|
||||||
Bloodcrazed Neonate|WPN Gateway|83|Special|{1}{R}|Creature — Vampire|2|1|Bloodcrazed Neonate attacks each turn if able.$Whenever Bloodcrazed Neonate deals combat damage to a player, put a +1/+1 counter on it.|
|
Bloodcrazed Neonate|WPN Gateway|83|Special|{1}{R}|Creature — Vampire|2|1|Bloodcrazed Neonate attacks each turn if able.$Whenever Bloodcrazed Neonate deals combat damage to a player, put a +1/+1 counter on it.|
|
||||||
Boneyard Wurm|WPN Gateway|84|Special|{1}{G}|Creature — Wurm|*|*|Boneyard Wurm's power and toughness are each equal to the number of creature cards in your graveyard.|
|
Boneyard Wurm|WPN Gateway|84|Special|{1}{G}|Creature — Wurm|*|*|Boneyard Wurm's power and toughness are each equal to the number of creature cards in your graveyard.|
|
||||||
|
Aven Sunstriker|Dragons of Tarkir|5|U|{1}{W}{W}|Creature - Bird Warrior|1|1|Flying$Double strike <i>(This creature deals both first-strike and regular combat damage.)</i>$Megamorph {4}{W} <i>(You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its megamorph cost and put a +1/+1 counter on it.)</i>|
|
||||||
Profound Journey|Dragons of Tarkir|30|R|{5}{W}{W}|Sorcery|||Return target permanent card from your graveyard to the battlefield.$Rebound <i>(If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)</i>|
|
Profound Journey|Dragons of Tarkir|30|R|{5}{W}{W}|Sorcery|||Return target permanent card from your graveyard to the battlefield.$Rebound <i>(If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)</i>|
|
||||||
Radiant Purge|Dragons of Tarkir|31|R|{1}{W}|Instant|||Exile target multicolored creature or multicolored enchantment.|
|
Radiant Purge|Dragons of Tarkir|31|R|{1}{W}|Instant|||Exile target multicolored creature or multicolored enchantment.|
|
||||||
Sandcrafter Mage|Dragons of Tarkir|33|C|{2}{W}|Creature - Human Wizard|2|2|When Sandcrafter Mage enters the battlefield, bolster 1 <i>(Choose a creature with the least toughness among the creatures you control and put a +1/+1 counter on it.)</i>|
|
Sandcrafter Mage|Dragons of Tarkir|33|C|{2}{W}|Creature - Human Wizard|2|2|When Sandcrafter Mage enters the battlefield, bolster 1 <i>(Choose a creature with the least toughness among the creatures you control and put a +1/+1 counter on it.)</i>|
|
||||||
Sunscorch Regent|Dragons of Tarkir|41|R|{3}{W}{W}|Creature - Dragon|4|3|Flying$Whenever an opponent casts a spell, put a +1/+1 counter on Sunscorch Regent and you gain 1 life.|
|
Sunscorch Regent|Dragons of Tarkir|41|R|{3}{W}{W}|Creature - Dragon|4|3|Flying$Whenever an opponent casts a spell, put a +1/+1 counter on Sunscorch Regent and you gain 1 life.|
|
||||||
|
Gudul Lurker|Dragons of Tarkir|56|U|{U}|Creature - Salamander|1|1|Gudul Lurker can't be blocked.$Megamorph {U} <i>(You may cast this card face down as a 2/2 creature for {3}. Turn it up anytime for its megamorph cost and put a +1/+1 counter on it.)</i>|
|
||||||
Ojutai's Summons|Dragons of Tarkir|68|C|{3}{U}{U}|Sorcery|||Put a 2/2 blue Djinn Monk creature token with flying onto the battlefield.$Rebound <i>(If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)</i>|
|
Ojutai's Summons|Dragons of Tarkir|68|C|{3}{U}{U}|Sorcery|||Put a 2/2 blue Djinn Monk creature token with flying onto the battlefield.$Rebound <i>(If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)</i>|
|
||||||
Stratus Dancer|Dragons of Tarkir|80|R|{1}{U}|Creature - Djinn Monk|2|1|Flying$Megamorph {1}{U} <i>You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time from its megamorph cost and put a +1/+1 counter on it.)</i>|
|
Stratus Dancer|Dragons of Tarkir|80|R|{1}{U}|Creature - Djinn Monk|2|1|Flying$Megamorph {1}{U} <i>You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time from its megamorph cost and put a +1/+1 counter on it.)</i>|
|
||||||
Dragonlord's Reaper|Dragons of Tarkir|96|R|{5}{B}{B}|Creature - Dragon|5|6|Flying$When Dragonlord's Reaper enters the battlefield, if you cast it from your hand and there are five or more other creatures on the battlefield, destroy all other creatures.|
|
Deathbringer Regent|Dragons of Tarkir|96|R|{5}{B}{B}|Creature - Dragon|5|6|Flying$When Deathbringer Regent enters the battlefield, if you cast it from your hand and there are five or more other creatures on the battlefield, destroy all other creatures.|
|
||||||
|
Marang River Skeleton|Dragons of Tarkir|108|U|{1}{B}|Creature - Skeleton|1|1|{B}: Regenerate Marang River Skeleton.$Megamorph {3}{B} <i>You may cast this card face down as a 2/2 creature for {3}. Turn it face up at any time for its megamorph cost and put a +1/+1 counter on it.)</i>|
|
||||||
Sidisi, Undead Vizier|Dragons of Tarkir|120|R|{3}{B}{B}|Legendary Creature - Zombie Naga|4|6|Deathtouch$Exploit <i>(When this creature enters the battlefield, you may sacrifice a creature.)</i>$When Sidisi, Undead Vizier exploits a creature, you may search your library for a card, put it into your hand, then shuffle your library.|
|
Sidisi, Undead Vizier|Dragons of Tarkir|120|R|{3}{B}{B}|Legendary Creature - Zombie Naga|4|6|Deathtouch$Exploit <i>(When this creature enters the battlefield, you may sacrifice a creature.)</i>$When Sidisi, Undead Vizier exploits a creature, you may search your library for a card, put it into your hand, then shuffle your library.|
|
||||||
Silumgar's Assassin|Dragons of Tarkir|121|R|{1}{B}|Creature - Human Assassin|2|1|Creatures with power greater than Silumgar's Assassin's power can't block it.$Megamorph {2}{B} <i>(You may cast this card face down as a 2/2 creature for {3}. Turn it face up at any time for its megamorph cost and put a +1/+1 counter on it.)</i>$When Silumgar's Assassin is turned face up, destroy target creature with power 3 or less an opponent controls.|
|
Silumgar Assassin|Dragons of Tarkir|121|R|{1}{B}|Creature - Human Assassin|2|1|Creatures with power greater than Silumgar Assassin's power can't block it.$Megamorph {2}{B} <i>(You may cast this card face down as a 2/2 creature for {3}. Turn it face up at any time for its megamorph cost and put a +1/+1 counter on it.)</i>$When Silumgar Assassin is turned face up, destroy target creature with power 3 or less an opponent controls.|
|
||||||
Silumgar Butcher|Dragons of Tarkir|122|C|{4}{B}|Creature - Zombie Djinn|3|3|Exploit <i>(When this creature enters the battlefield, you may sacrifice a creature.)</i>$When Silumgar Butcher exploits a creature, target creature gets -3/-3 until end of turn.|
|
Silumgar Butcher|Dragons of Tarkir|122|C|{4}{B}|Creature - Zombie Djinn|3|3|Exploit <i>(When this creature enters the battlefield, you may sacrifice a creature.)</i>$When Silumgar Butcher exploits a creature, target creature gets -3/-3 until end of turn.|
|
||||||
|
Dragon Fodder|Dragons of Tarkir|135|C|{1}{R}|Sorcery|||Put two 1/1 red Goblin creature tokens onto the battlefield.|
|
||||||
Dragon Tempest|Dragons of Tarkir|136|R|{1}{R}|Enchantment|||Whenever a creature with flying enters the battlefield under your control, it gains haste until the end of turn.$Whenever a Dragon enters the battlefield under your control, it deals X damage to target creature or player, where X is the number of Dragons you control.|
|
Dragon Tempest|Dragons of Tarkir|136|R|{1}{R}|Enchantment|||Whenever a creature with flying enters the battlefield under your control, it gains haste until the end of turn.$Whenever a Dragon enters the battlefield under your control, it deals X damage to target creature or player, where X is the number of Dragons you control.|
|
||||||
|
Dragonlord's Servant|Dragons of Tarkir|138|U|{1}{R}|Creature - Goblin Shaman|1|3|Dragon spells you cast cost {1} less to cast.|
|
||||||
Sprinting Warbrute|Dragons of Tarkir|157|C|{4}{R}|Creature - Ogre Berserker|5|4|Sprinting Warbrute attacks each turn if able.$Dash {3}{R} <i>(You may cast this spell for its dash cost. If you do, it gains haste, and it's returned from the battlefield to its owner's hand at the beginning of the next end step.)</i>|
|
Sprinting Warbrute|Dragons of Tarkir|157|C|{4}{R}|Creature - Ogre Berserker|5|4|Sprinting Warbrute attacks each turn if able.$Dash {3}{R} <i>(You may cast this spell for its dash cost. If you do, it gains haste, and it's returned from the battlefield to its owner's hand at the beginning of the next end step.)</i>|
|
||||||
|
Stormcrag Elemental|Dragons of Tarkir|158|U|{5}{R}|Creature - Elemental|5|5|Trample$Megamorph {4}{R}{R} <i>(You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its megamorph cost and put a +1/+1 counter on it.)</i>|
|
||||||
Thunderbreak Regent|Dragons of Tarkir|162|R|{2}{R}{R}|Creature - Dragon|4|4|Flying$Whenever a Dragon you control becomes the target of a spell or ability your opponent controls, Thunderbreak Regent deals 3 damage to that player.|
|
Thunderbreak Regent|Dragons of Tarkir|162|R|{2}{R}{R}|Creature - Dragon|4|4|Flying$Whenever a Dragon you control becomes the target of a spell or ability your opponent controls, Thunderbreak Regent deals 3 damage to that player.|
|
||||||
Aerie Bowmasters|Dragons of Tarkir|170|C|{2}|{G}{G}|Creature - Hound Archer|Reach <i>(This creature can block creatures with flying.)</i>$Megamorph {5}{G} <i>(You may cast this card face down as a 2/2 creature for {3}. Turn it face up at any time for its megamorph cost and put a +1/+1 counter on it.)</i>|
|
Aerie Bowmasters|Dragons of Tarkir|170|C|{2}|{G}{G}|Creature - Hound Archer|Reach <i>(This creature can block creatures with flying.)</i>$Megamorph {5}{G} <i>(You may cast this card face down as a 2/2 creature for {3}. Turn it face up at any time for its megamorph cost and put a +1/+1 counter on it.)</i>|
|
||||||
|
Foe-Razer Regent|Dragons of Tarkir|187|R|{5}{G}{G}|Creature - Dragon|4|5|Flying$When Foe-Razer Regent enters the battlefield, you may have it fight target creature you don't control.$Whenever a creature you control fights, put two +1/+1 counters on it at the beginning of the next end step.|
|
||||||
|
Salt Road Ambushers|Dragons of Tarkir|198|U|{3}{G}|Creature - Hound Warrior|3|3|Whenever another permanent you control is turned face up, if it's a creature, put two +1/+1 counters on it.$Megamorph {3}{G}{G} <i>You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its megamorph cost and put a +1/+1 counter on it.)</i>|
|
||||||
|
Scaleguard Sentinels|Dragons of Tarkir|201|U|{G}{G}|Creature - Human Soldier|2|3|As an additional cost to cast Scaleguard Sentinels, you may reveal a Dragon card from your hand.$Scaleguard Sentinels enters the battlefield with a +1/+1 counter on it if you revealed a Dragon card or controlled a Dragon as you cast Scaleguard Sentinels.|
|
||||||
Shaman of Forgotten Ways|Dragons of Tarkir|204|M|{2}G}|Creature - Human Shaman| 2|3|{T}:Add two mana in any combination of colors to your mana pool. Spend this mana only to cast creature spells.$<i>Formidable</i> - {9}{G}{G},{T}:Each player's life total becomes the number of creatures he or she controls. Acitave the ability only if creatures you control have total power 8 or greater.|
|
Shaman of Forgotten Ways|Dragons of Tarkir|204|M|{2}G}|Creature - Human Shaman| 2|3|{T}:Add two mana in any combination of colors to your mana pool. Spend this mana only to cast creature spells.$<i>Formidable</i> - {9}{G}{G},{T}:Each player's life total becomes the number of creatures he or she controls. Acitave the ability only if creatures you control have total power 8 or greater.|
|
||||||
Stampeding Elk Herd|Dragons of Tarkir|208|C|{3}{G}{G}|Creature - Elk|5|5|<i>Formidable</i> - Whenever Stampeding Elk Herd attacks, if creatures you control have total power 8 or greater, creatures you control gain trample until end of turn.|
|
Stampeding Elk Herd|Dragons of Tarkir|208|C|{3}{G}{G}|Creature - Elk|5|5|<i>Formidable</i> - Whenever Stampeding Elk Herd attacks, if creatures you control have total power 8 or greater, creatures you control gain trample until end of turn.|
|
||||||
Arashin Sovereign|Dragons of Tarkir|212|R|{5}{G}{W}|Creature - Dragon|6|6|Flying$When Arashin Sovereign dies, you may put it on the top or bottom of its owner's library.|
|
Arashin Sovereign|Dragons of Tarkir|212|R|{5}{G}{W}|Creature - Dragon|6|6|Flying$When Arashin Sovereign dies, you may put it on the top or bottom of its owner's library.|
|
||||||
Boltwing Marauder|Dragons of Tarkir|214|R|{3}{B}{R}|Creature - Dragon|5|4|Flying$Whenever another creature enters the battlefield under your control, target creature gets +2/+0 until end of turn.|
|
Boltwing Marauder|Dragons of Tarkir|214|R|{3}{B}{R}|Creature - Dragon|5|4|Flying$Whenever another creature enters the battlefield under your control, target creature gets +2/+0 until end of turn.|
|
||||||
|
Dragonlord Kolaghan|Dragons of Tarkir|218|{4}{B}{R}|Legendary Creature - Elder Dragon|6|5|Flying$Haste$Other creatures you control have haste.$Whenever an opponent casts a creature or planeswalker spell with the same name as a card in their graveyard, that player loses 10 life.|
|
||||||
Dragonlord Silumgar|Dragons of Tarkir|220|M|{4}{U}{B}|Legendary Creature - Elder Dragon|3|5|Flying$Deathtouch$When Dragonlord Silumgar enters the battlefield, gain control of target creature or planeswalker for as long as you control Dragonlord Silumgar.|
|
Dragonlord Silumgar|Dragons of Tarkir|220|M|{4}{U}{B}|Legendary Creature - Elder Dragon|3|5|Flying$Deathtouch$When Dragonlord Silumgar enters the battlefield, gain control of target creature or planeswalker for as long as you control Dragonlord Silumgar.|
|
||||||
Harbinger of the Hunt|Dragons of Tarkir|223|R|{3]{R}{G}|Creature - Dragon|5|3|Flying${2}{R}: Harbinger of the Hunt deals 1 damage to each creature without flying.${2}{G} Harbinger of the Hunt deals 1 damage to each other creature with flying.|
|
Harbinger of the Hunt|Dragons of Tarkir|223|R|{3]{R}{G}|Creature - Dragon|5|3|Flying${2}{R}: Harbinger of the Hunt deals 1 damage to each creature without flying.${2}{G} Harbinger of the Hunt deals 1 damage to each other creature with flying.|
|
||||||
Necromaster Dragon|Dragons of Tarkir|226|R|{3}U}{B}|Creature - Dragon|4|4|Flying$Whenever Necromaster Dragon deals combat damage to a player, you may pay {2}. If you do, put a 2/2 black Zombie creature token onto the battlefield and each opponent puts the top two cards of his or her library into his or her graveyard.|
|
Narset Transcendent|Dragons of Tarkir|225|M|{2}{W}{U}|Planeswalker - Narset|||+1: Look at the top card of your library. If it's a noncreature, nonland card, you may reveal it and put it into your hand.$-2: When you cast your next instant or sorcery spell from your hand this turn, it gains rebound.$-9:You get an emblem with "Your opponents can't cast noncreature spells."|
|
||||||
|
Necromaster Dragon|Dragons of Tarkir|226|R|{3}{U}{B}|Creature - Dragon|4|4|Flying$Whenever Necromaster Dragon deals combat damage to a player, you may pay {2}. If you do, put a 2/2 black Zombie creature token onto the battlefield and each opponent puts the top two cards of his or her library into his or her graveyard.|
|
||||||
Ojutai's Command|Dragons of Tarkir|227|R|{2}{W}{U}|Instant|||Choose two - Return target creature card with converted mana cost 2 or less from your graveyard to the battlefield; or You gain 4 life; or Counter target creature spell; or Draw a card|
|
Ojutai's Command|Dragons of Tarkir|227|R|{2}{W}{U}|Instant|||Choose two - Return target creature card with converted mana cost 2 or less from your graveyard to the battlefield; or You gain 4 life; or Counter target creature spell; or Draw a card|
|
||||||
Pristine Skywise|Dragons of Tarkir|228|R|{4}{W}{U}|Creature - Dragon|6|4|Flying$Whenever you cast a noncreature spell, untap Pristine Skywise. It gains protection from the color of your choice until the end of turn.|
|
Pristine Skywise|Dragons of Tarkir|228|R|{4}{W}{U}|Creature - Dragon|6|4|Flying$Whenever you cast a noncreature spell, untap Pristine Skywise. It gains protection from the color of your choice until the end of turn.|
|
||||||
|
Evolving Wilds|Dragons of Tarkir|248|C||Land|||{T}, Sacrifice Evolving Wilds: Search your library for a basic land card and put it onto the battlefield tapped. Then shuffle your library.|
|
Loading…
Reference in a new issue