diff --git a/Mage.Client/pom.xml b/Mage.Client/pom.xml
index 2fd01058e6..e48d07e809 100644
--- a/Mage.Client/pom.xml
+++ b/Mage.Client/pom.xml
@@ -6,7 +6,7 @@
org.magemage-root
- 1.4.2
+ 1.4.3org.mage
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/4c Solar Flare TDtB ST Dec 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/4c Solar Flare TDtB ST Dec 2011.mwDeck.dck
new file mode 100644
index 0000000000..2387cf5b12
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/4c Solar Flare TDtB ST Dec 2011.mwDeck.dck
@@ -0,0 +1,36 @@
+1 [M15:51] Dissipate
+1 [UNH:138] Swamp
+4 [UNH:137] Island
+2 [UNH:136] Plains
+2 [M12:73] Ponder
+2 [M12:72] Phantasmal Image
+4 [ISD:55] Forbidden Alchemy
+1 [UNH:139] Mountain
+3 [NPH:86] Gut Shot
+4 [ISD:139] Desperate Ravings
+3 [C14:91] Sun Titan
+3 [M13:22] Oblivion Ring
+1 [C14:298] Ghost Quarter
+3 [M14:229] Shimmering Grotto
+4 [ISD:248] Sulfur Falls
+1 [ISD:122] Unburial Rites
+4 [M12:63] Mana Leak
+1 [NPH:9] Elesh Norn, Grand Cenobite
+4 [SOM:229] Seachrome Coast
+1 [M14:215] Ratchet Bomb
+4 [M13:225] Glacial Fortress
+3 [C14:264] Pristine Talisman
+1 [M14:25] Pacifism
+1 [SOM:224] Blackcleave Cliffs
+1 [C13:32] Blue Sun's Zenith
+1 [M12:12] Day of Judgment
+SB: 2 [M12:40] Timely Reinforcements
+SB: 1 [M15:51] Dissipate
+SB: 2 [C13:249] Nihil Spellbomb
+SB: 1 [M14:215] Ratchet Bomb
+SB: 1 [M12:72] Phantasmal Image
+SB: 2 [ISD:127] Ancient Grudge
+SB: 1 [C14:298] Ghost Quarter
+SB: 1 [M12:12] Day of Judgment
+SB: 1 [C13:32] Blue Sun's Zenith
+SB: 3 [M12:11] Celestial Purge
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Abzan Control TDtB ST Mar 2015.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Abzan Control TDtB ST Mar 2015.mwDeck.dck
new file mode 100644
index 0000000000..f249e97c24
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Abzan Control TDtB ST Mar 2015.mwDeck.dck
@@ -0,0 +1,31 @@
+4 [KTK:248] Windswept Heath
+2 [M15:241] Caves of Koilos
+3 [BNG:61] Bile Blight
+1 [FRF:87] Tasigur, the Golden Fang
+2 [UNH:136] Plains
+4 [JOU:165] Temple of Malady
+4 [KTK:161] Abzan Charm
+4 [KTK:200] Siege Rhino
+1 [M15:103] Liliana Vess
+2 [C14:158] Read the Bones
+4 [THS:107] Thoughtseize
+4 [KTK:241] Sandsteppe Citadel
+2 [KTK:8] End Hostilities
+3 [THS:90] Hero's Downfall
+1 [KTK:81] Murderous Cut
+1 [M15:248] Urborg, Tomb of Yawgmoth
+3 [THS:9] Elspeth, Sun's Champion
+1 [FRF:1] Ugin, the Spirit Dragon
+1 [KTK:210] Utter End
+2 [UNH:140] Forest
+3 [M15:244] Llanowar Wastes
+4 [BNG:119] Courser of Kruphix
+4 [THS:227] Temple of Silence
+SB: 4 [THS:193] Fleecemane Lion
+SB: 1 [FRF:87] Tasigur, the Golden Fang
+SB: 1 [C14:158] Read the Bones
+SB: 1 [KTK:9] Erase
+SB: 2 [THS:15] Glare of Heresy
+SB: 1 [M15:210] Garruk, Apex Predator
+SB: 2 [KTK:202] Sorin, Solemn Visitor
+SB: 3 [BNG:65] Drown in Sorrow
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Abzan Midrange TDtB ST Apr 2015.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Abzan Midrange TDtB ST Apr 2015.mwDeck.dck
new file mode 100644
index 0000000000..31c07138b1
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Abzan Midrange TDtB ST Apr 2015.mwDeck.dck
@@ -0,0 +1,29 @@
+4 [KTK:248] Windswept Heath
+2 [M15:241] Caves of Koilos
+2 [BNG:61] Bile Blight
+2 [FRF:87] Tasigur, the Golden Fang
+2 [UNH:136] Plains
+4 [JOU:165] Temple of Malady
+1 [DTK:221] Dromoka's Command
+4 [KTK:161] Abzan Charm
+4 [KTK:200] Siege Rhino
+1 [KTK:202] Sorin, Solemn Visitor
+4 [THS:193] Fleecemane Lion
+1 [DTK:124] Ultimate Price
+4 [THS:107] Thoughtseize
+4 [KTK:241] Sandsteppe Citadel
+4 [THS:90] Hero's Downfall
+1 [M15:248] Urborg, Tomb of Yawgmoth
+3 [THS:9] Elspeth, Sun's Champion
+2 [UNH:140] Forest
+3 [M15:244] Llanowar Wastes
+4 [BNG:119] Courser of Kruphix
+4 [THS:227] Temple of Silence
+SB: 2 [C14:158] Read the Bones
+SB: 1 [M15:187] Nissa, Worldwaker
+SB: 1 [DTK:221] Dromoka's Command
+SB: 2 [KTK:8] End Hostilities
+SB: 1 [FRF:1] Ugin, the Spirit Dragon
+SB: 3 [DTK:98] Duress
+SB: 1 [KTK:202] Sorin, Solemn Visitor
+SB: 4 [BNG:65] Drown in Sorrow
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Abzan Midrange TDtB ST Dec 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Abzan Midrange TDtB ST Dec 2014.mwDeck.dck
new file mode 100644
index 0000000000..0115fc7ca6
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Abzan Midrange TDtB ST Dec 2014.mwDeck.dck
@@ -0,0 +1,44 @@
+4 [KTK:248] Windswept Heath
+1 [TPR:267] Forest
+2 [JOU:165] Temple of Malady
+1 [PLC:165] Urborg, Tomb of Yawgmoth
+1 [JOU:5] Banishing Light
+4 [KTK:200] Siege Rhino
+2 [M15:34] Soul of Theros
+2 [C14:191] Elvish Mystic
+1 [FNMP:172] Banishing Light
+1 [M11:233] Plains
+1 [LRW:299] Forest
+4 [KTK:241] Sandsteppe Citadel
+1 [10E:355] Llanowar Wastes
+1 [M15:178] Hornet Queen
+1 [UNH:140] Forest
+1 [APC:140] Caves of Koilos
+1 [M15:173] Elvish Mystic
+2 [BNG:136] Satyr Wayfinder
+4 [BNG:119] Courser of Kruphix
+1 [RAV:287] Plains
+2 [THS:227] Temple of Silence
+1 [APC:141] Llanowar Wastes
+4 [KTK:31] Wingmate Roc
+2 [M15:198] Satyr Wayfinder
+2 [THS:155] Commune with the Gods
+2 [THS:180] Sylvan Caryatid
+1 [MBP:77] Sylvan Caryatid
+2 [THS:110] Whip of Erebos
+1 [FNMP:165] Elvish Mystic
+3 [KTK:81] Murderous Cut
+2 [CMD:159] Hornet Queen
+2 [M15:244] Llanowar Wastes
+SB: 1 [M15:194] Reclamation Sage
+SB: 1 [PTC:80] Doomwake Giant
+SB: 2 [LRW:145] Thoughtseize
+SB: 1 [KTK:174] Duneblast
+SB: 1 [M15:187] Nissa, Worldwaker
+SB: 1 [THS:110] Whip of Erebos
+SB: 2 [THS:15] Glare of Heresy
+SB: 2 [KTK:8] End Hostilities
+SB: 1 [JOU:66] Doomwake Giant
+SB: 1 [C14:213] Reclamation Sage
+SB: 1 [THS:101] Read the Bones
+SB: 1 [MBP:103] Nissa, Worldwaker
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Abzan Midrange TDtB ST Feb 2015.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Abzan Midrange TDtB ST Feb 2015.mwDeck.dck
new file mode 100644
index 0000000000..06c3dfdfb0
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Abzan Midrange TDtB ST Feb 2015.mwDeck.dck
@@ -0,0 +1,31 @@
+4 [KTK:248] Windswept Heath
+3 [M15:241] Caves of Koilos
+3 [BNG:61] Bile Blight
+2 [FRF:87] Tasigur, the Golden Fang
+4 [KTK:192] Rakshasa Deathdealer
+2 [UNH:136] Plains
+3 [JOU:165] Temple of Malady
+1 [BNG:165] Temple of Plenty
+3 [KTK:163] Anafenza, the Foremost
+2 [KTK:161] Abzan Charm
+4 [KTK:200] Siege Rhino
+1 [KTK:202] Sorin, Solemn Visitor
+4 [THS:193] Fleecemane Lion
+2 [THS:107] Thoughtseize
+4 [KTK:241] Sandsteppe Citadel
+4 [THS:90] Hero's Downfall
+1 [M15:248] Urborg, Tomb of Yawgmoth
+1 [UNH:140] Forest
+3 [BNG:119] Courser of Kruphix
+4 [M15:244] Llanowar Wastes
+3 [KTK:31] Wingmate Roc
+2 [THS:227] Temple of Silence
+SB: 2 [FRF:143] Warden of the First Tree
+SB: 1 [BNG:61] Bile Blight
+SB: 1 [M15:187] Nissa, Worldwaker
+SB: 1 [THS:107] Thoughtseize
+SB: 3 [THS:15] Glare of Heresy
+SB: 1 [THS:9] Elspeth, Sun's Champion
+SB: 1 [BNG:119] Courser of Kruphix
+SB: 4 [BNG:65] Drown in Sorrow
+SB: 1 [KTK:202] Sorin, Solemn Visitor
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Abzan Midrange TDtB ST Jan 2015.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Abzan Midrange TDtB ST Jan 2015.mwDeck.dck
new file mode 100644
index 0000000000..92f4be60eb
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Abzan Midrange TDtB ST Jan 2015.mwDeck.dck
@@ -0,0 +1,27 @@
+4 [KTK:248] Windswept Heath
+2 [M15:241] Caves of Koilos
+4 [BNG:61] Bile Blight
+4 [KTK:192] Rakshasa Deathdealer
+1 [JOU:163] Mana Confluence
+1 [UNH:136] Plains
+2 [JOU:165] Temple of Malady
+4 [KTK:163] Anafenza, the Foremost
+3 [KTK:161] Abzan Charm
+4 [KTK:200] Siege Rhino
+1 [KTK:202] Sorin, Solemn Visitor
+4 [THS:193] Fleecemane Lion
+4 [THS:107] Thoughtseize
+4 [KTK:241] Sandsteppe Citadel
+3 [THS:90] Hero's Downfall
+2 [M15:248] Urborg, Tomb of Yawgmoth
+2 [UNH:140] Forest
+3 [M15:244] Llanowar Wastes
+4 [KTK:31] Wingmate Roc
+4 [THS:227] Temple of Silence
+SB: 3 [M15:169] Back to Nature
+SB: 3 [THS:15] Glare of Heresy
+SB: 2 [JOU:145] Ajani, Mentor of Heroes
+SB: 1 [KTK:81] Murderous Cut
+SB: 2 [THS:9] Elspeth, Sun's Champion
+SB: 3 [BNG:65] Drown in Sorrow
+SB: 1 [KTK:202] Sorin, Solemn Visitor
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Abzan Midrange TDtB ST May 2015.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Abzan Midrange TDtB ST May 2015.mwDeck.dck
new file mode 100644
index 0000000000..d2096c453c
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Abzan Midrange TDtB ST May 2015.mwDeck.dck
@@ -0,0 +1,27 @@
+4 [KTK:248] Windswept Heath
+3 [M15:241] Caves of Koilos
+4 [KTK:192] Rakshasa Deathdealer
+1 [JOU:163] Mana Confluence
+2 [UNH:136] Plains
+3 [JOU:165] Temple of Malady
+3 [DTK:221] Dromoka's Command
+4 [KTK:163] Anafenza, the Foremost
+4 [KTK:161] Abzan Charm
+4 [KTK:200] Siege Rhino
+2 [KTK:202] Sorin, Solemn Visitor
+2 [FRF:143] Warden of the First Tree
+4 [THS:193] Fleecemane Lion
+3 [THS:107] Thoughtseize
+4 [KTK:241] Sandsteppe Citadel
+2 [THS:90] Hero's Downfall
+1 [M15:248] Urborg, Tomb of Yawgmoth
+2 [UNH:140] Forest
+3 [M15:244] Llanowar Wastes
+3 [THS:227] Temple of Silence
+2 [KTK:31] Wingmate Roc
+SB: 3 [DTK:124] Ultimate Price
+SB: 1 [THS:107] Thoughtseize
+SB: 3 [DTK:117] Self-Inflicted Wound
+SB: 3 [DTK:181] Den Protector
+SB: 2 [DTK:98] Duress
+SB: 3 [BNG:65] Drown in Sorrow
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Abzan Midrange TDtB ST Nov 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Abzan Midrange TDtB ST Nov 2014.mwDeck.dck
new file mode 100644
index 0000000000..d21efee1f9
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Abzan Midrange TDtB ST Nov 2014.mwDeck.dck
@@ -0,0 +1,39 @@
+2 [ONS:328] Windswept Heath
+1 [KTK:248] Windswept Heath
+2 [M15:241] Caves of Koilos
+4 [JOU:165] Temple of Malady
+1 [PLC:165] Urborg, Tomb of Yawgmoth
+4 [KTK:161] Abzan Charm
+4 [KTK:200] Siege Rhino
+2 [KTK:202] Sorin, Solemn Visitor
+2 [THS:107] Thoughtseize
+1 [9ED:334] Plains
+1 [ONS:347] Forest
+1 [KTK:241] Sandsteppe Citadel
+2 [KTK:8] End Hostilities
+4 [THS:90] Hero's Downfall
+2 [JOU:145] Ajani, Mentor of Heroes
+3 [THS:9] Elspeth, Sun's Champion
+1 [PTK:168] Plains
+4 [BNG:119] Courser of Kruphix
+3 [THS:227] Temple of Silence
+1 [APC:141] Llanowar Wastes
+2 [KTK:31] Wingmate Roc
+1 [JR:46] Windswept Heath
+1 [JOU:163] Mana Confluence
+1 [BNG:165] Temple of Plenty
+2 [LRW:145] Thoughtseize
+1 [DDO:64] Forest
+2 [9ED:322] Llanowar Wastes
+4 [THS:180] Sylvan Caryatid
+1 [ARC:150] Forest
+SB: 1 [MBP:101] Liliana Vess
+SB: 2 [M15:169] Back to Nature
+SB: 1 [FNMP:171] Bile Blight
+SB: 2 [BNG:61] Bile Blight
+SB: 1 [C14:158] Read the Bones
+SB: 1 [M15:187] Nissa, Worldwaker
+SB: 1 [KTK:8] End Hostilities
+SB: 2 [KTK:163] Anafenza, the Foremost
+SB: 1 [MBP:103] Nissa, Worldwaker
+SB: 3 [BNG:65] Drown in Sorrow
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Abzan Midrange TDtB ST Oct 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Abzan Midrange TDtB ST Oct 2014.mwDeck.dck
new file mode 100644
index 0000000000..a89c781067
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Abzan Midrange TDtB ST Oct 2014.mwDeck.dck
@@ -0,0 +1,33 @@
+4 [KTK:248] Windswept Heath
+2 [BNG:61] Bile Blight
+1 [UNH:138] Swamp
+1 [JOU:163] Mana Confluence
+2 [UNH:136] Plains
+1 [JOU:165] Temple of Malady
+1 [BNG:165] Temple of Plenty
+1 [KTK:163] Anafenza, the Foremost
+3 [KTK:161] Abzan Charm
+4 [KTK:200] Siege Rhino
+1 [BNG:65] Drown in Sorrow
+2 [KTK:202] Sorin, Solemn Visitor
+4 [THS:180] Sylvan Caryatid
+4 [THS:193] Fleecemane Lion
+1 [THS:107] Thoughtseize
+1 [THS:110] Whip of Erebos
+4 [KTK:241] Sandsteppe Citadel
+4 [THS:90] Hero's Downfall
+1 [M15:248] Urborg, Tomb of Yawgmoth
+2 [UNH:140] Forest
+4 [BNG:119] Courser of Kruphix
+4 [M15:244] Llanowar Wastes
+4 [KTK:31] Wingmate Roc
+4 [THS:227] Temple of Silence
+SB: 1 [M15:169] Back to Nature
+SB: 3 [THS:107] Thoughtseize
+SB: 1 [KTK:9] Erase
+SB: 4 [KTK:8] End Hostilities
+SB: 1 [KTK:163] Anafenza, the Foremost
+SB: 2 [THS:9] Elspeth, Sun's Champion
+SB: 1 [JOU:59] Agent of Erebos
+SB: 1 [KTK:210] Utter End
+SB: 1 [M15:117] Stain the Mind
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Aristocrats TDtB ST Apr 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Aristocrats TDtB ST Apr 2013.mwDeck.dck
new file mode 100644
index 0000000000..8430324756
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Aristocrats TDtB ST Apr 2013.mwDeck.dck
@@ -0,0 +1,25 @@
+4 [CNS:69] Doomed Traveler
+2 [UNH:136] Plains
+4 [RTR:238] Blood Crypt
+4 [GTC:242] Godless Shrine
+4 [GTC:150] Cartel Aristocrat
+1 [ISD:238] Clifftop Retreat
+4 [DKA:12] Lingering Souls
+4 [ISD:242] Isolated Chapel
+4 [GTC:245] Sacred Foundry
+4 [C14:167] Tragic Slip
+4 [M13:222] Dragonskull Summit
+4 [C14:163] Skirsdag High Priest
+4 [GTC:215] Boros Reckoner
+3 [C14:172] Blasphemous Act
+1 [DKA:142] Sorin, Lord of Innistrad
+4 [DKA:138] Falkenrath Aristocrat
+1 [C13:312] Orzhov Guildgate
+4 [AVR:86] Blood Artist
+SB: 3 [M14:97] Duress
+SB: 1 [GTC:182] Obzedat, Ghost Council
+SB: 1 [RTR:157] Dreadbore
+SB: 3 [CNS:72] Intangible Virtue
+SB: 1 [C14:172] Blasphemous Act
+SB: 3 [DKA:142] Sorin, Lord of Innistrad
+SB: 3 [C14:278] Tormod's Crypt
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Aristocrats TDtB ST Jun 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Aristocrats TDtB ST Jun 2013.mwDeck.dck
new file mode 100644
index 0000000000..a0585c1f3f
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Aristocrats TDtB ST Jun 2013.mwDeck.dck
@@ -0,0 +1,28 @@
+4 [CNS:69] Doomed Traveler
+2 [UNH:136] Plains
+4 [RTR:238] Blood Crypt
+4 [GTC:242] Godless Shrine
+4 [GTC:150] Cartel Aristocrat
+1 [ISD:238] Clifftop Retreat
+4 [DKA:12] Lingering Souls
+4 [ISD:242] Isolated Chapel
+4 [GTC:245] Sacred Foundry
+4 [C14:167] Tragic Slip
+4 [M13:222] Dragonskull Summit
+2 [C14:163] Skirsdag High Priest
+4 [GTC:215] Boros Reckoner
+3 [C14:172] Blasphemous Act
+2 [DKA:142] Sorin, Lord of Innistrad
+4 [DKA:138] Falkenrath Aristocrat
+1 [GTC:185] Orzhov Charm
+1 [AVR:226] Cavern of Souls
+4 [AVR:86] Blood Artist
+SB: 2 [RTR:93] Electrickery
+SB: 1 [M13:22] Oblivion Ring
+SB: 2 [GTC:182] Obzedat, Ghost Council
+SB: 1 [M14:97] Duress
+SB: 2 [AVR:166] Zealous Conscripts
+SB: 1 [C14:172] Blasphemous Act
+SB: 3 [M13:141] Mark of Mutiny
+SB: 2 [AVR:84] Appetite for Brains
+SB: 1 [AVR:226] Cavern of Souls
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Aristocrats TDtB ST May 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Aristocrats TDtB ST May 2013.mwDeck.dck
new file mode 100644
index 0000000000..3971eba7b9
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Aristocrats TDtB ST May 2013.mwDeck.dck
@@ -0,0 +1,28 @@
+4 [CNS:69] Doomed Traveler
+2 [UNH:136] Plains
+4 [RTR:238] Blood Crypt
+4 [GTC:242] Godless Shrine
+4 [GTC:150] Cartel Aristocrat
+4 [DKA:12] Lingering Souls
+4 [ISD:242] Isolated Chapel
+4 [GTC:245] Sacred Foundry
+4 [C14:167] Tragic Slip
+4 [M13:222] Dragonskull Summit
+3 [C14:163] Skirsdag High Priest
+1 [DKA:158] Vault of the Archangel
+4 [GTC:215] Boros Reckoner
+3 [C14:172] Blasphemous Act
+2 [DKA:142] Sorin, Lord of Innistrad
+4 [DKA:138] Falkenrath Aristocrat
+1 [AVR:226] Cavern of Souls
+4 [AVR:86] Blood Artist
+SB: 1 [GTC:142] Assemble the Legion
+SB: 2 [RTR:93] Electrickery
+SB: 1 [M14:97] Duress
+SB: 2 [GTC:182] Obzedat, Ghost Council
+SB: 1 [RTR:197] Slaughter Games
+SB: 1 [AVR:166] Zealous Conscripts
+SB: 3 [RTR:157] Dreadbore
+SB: 1 [CNS:72] Intangible Virtue
+SB: 1 [DKA:142] Sorin, Lord of Innistrad
+SB: 2 [M13:141] Mark of Mutiny
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Azorius Heroic TDtB ST Dec 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Azorius Heroic TDtB ST Dec 2014.mwDeck.dck
new file mode 100644
index 0000000000..685feb5db0
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Azorius Heroic TDtB ST Dec 2014.mwDeck.dck
@@ -0,0 +1,31 @@
+1 [THS:39] Aqueous Form
+4 [THS:58] Ordeal of Thassa
+1 [JOU:163] Mana Confluence
+3 [UNH:137] Island
+2 [KTK:246] Tranquil Cove
+4 [KTK:233] Flooded Strand
+8 [UNH:136] Plains
+1 [KTK:56] Stubborn Denial
+4 [THS:189] Battlewise Hoplite
+1 [JOU:2] Ajani's Presence
+4 [BNG:163] Temple of Enlightenment
+4 [BNG:17] Hero of Iroas
+2 [BNG:52] Stratus Walk
+4 [M15:14] Heliod's Pilgrim
+4 [KTK:7] Defiant Strike
+1 [KTK:10] Feat of Resistance
+1 [THS:25] Ordeal of Heliod
+4 [THS:13] Favored Hoplite
+4 [THS:16] Gods Willing
+3 [KTK:22] Seeker of the Way
+SB: 1 [THS:39] Aqueous Form
+SB: 1 [JOU:17] Mortal Obstinacy
+SB: 1 [KTK:59] Treasure Cruise
+SB: 2 [JOU:14] Lagonna-Band Trailblazer
+SB: 3 [KTK:56] Stubborn Denial
+SB: 1 [KTK:9] Erase
+SB: 2 [BNG:5] Brimaz, King of Oreskos
+SB: 1 [THS:15] Glare of Heresy
+SB: 1 [KTK:36] Dig Through Time
+SB: 1 [THS:71] Triton Tactics
+SB: 1 [JOU:2] Ajani's Presence
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Azorius Heroic TDtB ST Feb 2015.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Azorius Heroic TDtB ST Feb 2015.mwDeck.dck
new file mode 100644
index 0000000000..310e00fc7b
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Azorius Heroic TDtB ST Feb 2015.mwDeck.dck
@@ -0,0 +1,25 @@
+2 [THS:39] Aqueous Form
+4 [THS:58] Ordeal of Thassa
+3 [UNH:137] Island
+3 [JOU:163] Mana Confluence
+4 [KTK:233] Flooded Strand
+6 [UNH:136] Plains
+4 [THS:189] Battlewise Hoplite
+3 [JOU:2] Ajani's Presence
+4 [BNG:163] Temple of Enlightenment
+4 [BNG:17] Hero of Iroas
+2 [BNG:52] Stratus Walk
+2 [JOU:14] Lagonna-Band Trailblazer
+4 [KTK:7] Defiant Strike
+1 [KTK:10] Feat of Resistance
+3 [THS:25] Ordeal of Heliod
+1 [THS:71] Triton Tactics
+4 [THS:13] Favored Hoplite
+4 [THS:16] Gods Willing
+2 [KTK:22] Seeker of the Way
+SB: 2 [KTK:59] Treasure Cruise
+SB: 3 [KTK:56] Stubborn Denial
+SB: 1 [KTK:9] Erase
+SB: 3 [KTK:37] Disdainful Stroke
+SB: 4 [THS:15] Glare of Heresy
+SB: 2 [KTK:22] Seeker of the Way
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Azorius Heroic TDtB ST Jan 2015.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Azorius Heroic TDtB ST Jan 2015.mwDeck.dck
new file mode 100644
index 0000000000..642aa77eb2
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Azorius Heroic TDtB ST Jan 2015.mwDeck.dck
@@ -0,0 +1,24 @@
+2 [THS:39] Aqueous Form
+4 [THS:58] Ordeal of Thassa
+6 [UNH:137] Island
+4 [KTK:246] Tranquil Cove
+10 [UNH:136] Plains
+1 [KTK:56] Stubborn Denial
+4 [THS:189] Battlewise Hoplite
+2 [BNG:163] Temple of Enlightenment
+4 [BNG:17] Hero of Iroas
+4 [M15:14] Heliod's Pilgrim
+4 [KTK:7] Defiant Strike
+2 [KTK:10] Feat of Resistance
+2 [THS:25] Ordeal of Heliod
+1 [THS:71] Triton Tactics
+4 [THS:13] Favored Hoplite
+4 [THS:16] Gods Willing
+2 [KTK:22] Seeker of the Way
+SB: 2 [KTK:59] Treasure Cruise
+SB: 3 [KTK:56] Stubborn Denial
+SB: 2 [KTK:9] Erase
+SB: 3 [THS:15] Glare of Heresy
+SB: 1 [THS:19] Hopeful Eidolon
+SB: 2 [JOU:2] Ajani's Presence
+SB: 2 [BNG:7] Eidolon of Countless Battles
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Azorius Human TDtB ST Oct 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Azorius Human TDtB ST Oct 2012.mwDeck.dck
new file mode 100644
index 0000000000..5f605bde9f
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Azorius Human TDtB ST Oct 2012.mwDeck.dck
@@ -0,0 +1,26 @@
+2 [DKA:7] Faith's Shield
+1 [UNH:137] Island
+9 [UNH:136] Plains
+4 [C14:88] Silverblade Paladin
+4 [ISD:213] Geist of Saint Traft
+4 [M13:36] Sublime Archangel
+2 [RTR:179] Lyev Skyknight
+4 [M13:38] War Falcon
+3 [DKA:24] Thalia, Guardian of Thraben
+4 [RTR:17] Precinct Captain
+1 [M14:1] Ajani, Caller of the Pride
+4 [ISD:6] Champion of the Parish
+4 [M13:21] Knight of Glory
+4 [M13:225] Glacial Fortress
+1 [ISD:14] Feeling of Dread
+1 [ISD:13] Elite Inquisitor
+4 [AVR:226] Cavern of Souls
+4 [RTR:241] Hallowed Fountain
+SB: 3 [RTR:214] Dryad Militant
+SB: 3 [M15:71] Negate
+SB: 2 [RTR:155] Detention Sphere
+SB: 2 [AVR:33] Riders of Gavony
+SB: 1 [ISD:14] Feeling of Dread
+SB: 2 [C13:11] Fiend Hunter
+SB: 1 [DKA:24] Thalia, Guardian of Thraben
+SB: 1 [M13:39] War Priest of Thune
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/BR Vampires TDtB ST May 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/BR Vampires TDtB ST May 2011.mwDeck.dck
new file mode 100644
index 0000000000..1e5e302ef6
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/BR Vampires TDtB ST May 2011.mwDeck.dck
@@ -0,0 +1,28 @@
+2 [MBS:43] Go for the Throat
+2 [MBS:66] Hero of Oxid Ridge
+2 [C13:99] Viscera Seer
+4 [M11:149] Lightning Bolt
+4 [ZEN:83] Bloodghast
+4 [M13:222] Dragonskull Summit
+4 [WWK:139] Lavaclaw Reaches
+4 [ZEN:89] Gatekeeper of Malakir
+1 [M11:90] Dark Tutelage
+2 [ZEN:229] Verdant Catacombs
+2 [C14:168] Vampire Hexmage
+1 [ZEN:119] Burst Lightning
+3 [ZEN:219] Marsh Flats
+4 [WWK:62] Pulse Tracker
+4 [ZEN:115] Vampire Lacerator
+1 [M14:96] Doom Blade
+4 [SOM:224] Blackcleave Cliffs
+2 [SOM:81] Arc Trail
+4 [WWK:59] Kalastria Highborn
+6 [UNH:138] Swamp
+SB: 1 [M11:90] Dark Tutelage
+SB: 2 [M12:151] Manic Vandal
+SB: 3 [M13:141] Mark of Mutiny
+SB: 1 [C14:168] Vampire Hexmage
+SB: 3 [M11:92] Demon of Death's Gate
+SB: 2 [SOM:78] Skinrender
+SB: 1 [M14:96] Doom Blade
+SB: 2 [SOM:81] Arc Trail
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/BR Zombies TDtB ST Aug 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/BR Zombies TDtB ST Aug 2012.mwDeck.dck
new file mode 100644
index 0000000000..1e99a5d8fa
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/BR Zombies TDtB ST Aug 2012.mwDeck.dck
@@ -0,0 +1,25 @@
+2 [MBS:43] Go for the Throat
+4 [AVR:86] Blood Artist
+3 [CNS:138] Brimstone Volley
+4 [M13:222] Dragonskull Summit
+4 [ISD:97] Diregraf Ghoul
+3 [C14:167] Tragic Slip
+2 [NPH:42] Phyrexian Metamorph
+3 [DKA:138] Falkenrath Aristocrat
+3 [AVR:226] Cavern of Souls
+4 [DKA:63] Geralf's Messenger
+2 [SOM:63] Fume Spitter
+4 [DKA:64] Gravecrawler
+4 [C14:161] Sign in Blood
+2 [MBS:115] Mortarpod
+4 [SOM:224] Blackcleave Cliffs
+12 [UNH:138] Swamp
+SB: 2 [NPH:61] Geth's Verdict
+SB: 2 [M14:156] Smelt
+SB: 1 [NPH:74] Surgical Extraction
+SB: 1 [NPH:42] Phyrexian Metamorph
+SB: 2 [AVR:149] Pillar of Flame
+SB: 2 [SOM:81] Arc Trail
+SB: 2 [C13:249] Nihil Spellbomb
+SB: 1 [M12:94] Distress
+SB: 2 [KTK:69] Despise
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/BR Zombies TDtB ST Dec 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/BR Zombies TDtB ST Dec 2012.mwDeck.dck
new file mode 100644
index 0000000000..0392fffa64
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/BR Zombies TDtB ST Dec 2012.mwDeck.dck
@@ -0,0 +1,22 @@
+4 [AVR:86] Blood Artist
+3 [M13:147] Searing Spear
+4 [M13:222] Dragonskull Summit
+4 [C13:314] Rakdos Guildgate
+2 [M13:141] Mark of Mutiny
+4 [ISD:97] Diregraf Ghoul
+4 [RTR:220] Rakdos Cackler
+4 [RTR:238] Blood Crypt
+4 [DKA:138] Falkenrath Aristocrat
+1 [AVR:226] Cavern of Souls
+4 [AVR:149] Pillar of Flame
+4 [DKA:63] Geralf's Messenger
+1 [M14:139] Flames of the Firebrand
+4 [M13:96] Knight of Infamy
+4 [DKA:64] Gravecrawler
+9 [UNH:138] Swamp
+SB: 1 [M13:141] Mark of Mutiny
+SB: 3 [C13:97] Vampire Nighthawk
+SB: 2 [M14:139] Flames of the Firebrand
+SB: 3 [RTR:213] Deathrite Shaman
+SB: 3 [M15:92] Crippling Blight
+SB: 3 [RTR:184] Rakdos Charm
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/BUG Control TDtB ST Feb 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/BUG Control TDtB ST Feb 2011.mwDeck.dck
new file mode 100644
index 0000000000..8c38fc526f
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/BUG Control TDtB ST Feb 2011.mwDeck.dck
@@ -0,0 +1,27 @@
+1 [MBS:43] Go for the Throat
+1 [SOM:69] Memoricide
+4 [WWK:134] Creeping Tar Pit
+6 [UNH:140] Forest
+2 [WWK:137] Halimar Depths
+4 [ZEN:220] Misty Rainforest
+3 [ZEN:172] Oracle of Mul Daya
+1 [C13:135] Avenger of Zendikar
+4 [ZEN:229] Verdant Catacombs
+4 [M11:70] Preordain
+2 [C14:112] Frost Titan
+3 [C14:145] Grave Titan
+4 [ZEN:168] Lotus Cobra
+2 [ZEN:87] Disfigure
+4 [WWK:99] Explore
+3 [SOM:226] Darkslick Shores
+4 [WWK:31] Jace, the Mind Sculptor
+2 [UNH:137] Island
+2 [UNH:138] Swamp
+4 [M12:63] Mana Leak
+SB: 1 [MBS:43] Go for the Throat
+SB: 2 [C14:136] Black Sun's Zenith
+SB: 3 [SOM:69] Memoricide
+SB: 2 [SOM:194] Precursor Golem
+SB: 2 [ZEN:87] Disfigure
+SB: 3 [M14:116] Shrivel
+SB: 2 [M11:188] Obstinate Baloth
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/BW Tokens TDtB ST Feb 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/BW Tokens TDtB ST Feb 2012.mwDeck.dck
new file mode 100644
index 0000000000..58171def5d
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/BW Tokens TDtB ST Feb 2012.mwDeck.dck
@@ -0,0 +1,24 @@
+1 [SOM:6] Elspeth Tirel
+2 [NPH:161] Sword of War and Peace
+3 [DKA:158] Vault of the Archangel
+4 [ISD:242] Isolated Chapel
+4 [CNS:72] Intangible Virtue
+1 [M14:229] Shimmering Grotto
+4 [C14:80] Midnight Haunting
+4 [DKA:12] Lingering Souls
+3 [M13:22] Oblivion Ring
+4 [M12:23] Honor of the Pure
+13 [UNH:136] Plains
+2 [DKA:142] Sorin, Lord of Innistrad
+4 [ISD:6] Champion of the Parish
+4 [DKA:8] Gather the Townsfolk
+3 [UNH:138] Swamp
+4 [CNS:69] Doomed Traveler
+SB: 1 [MBS:43] Go for the Throat
+SB: 1 [MBS:5] Divine Offering
+SB: 2 [NPH:74] Surgical Extraction
+SB: 3 [M12:3] Angelic Destiny
+SB: 2 [BNG:25] Revoke Existence
+SB: 1 [M14:96] Doom Blade
+SB: 4 [MBS:8] Hero of Bladehold
+SB: 1 [M12:40] Timely Reinforcements
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/BWR Control TDtB ST Nov 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/BWR Control TDtB ST Nov 2013.mwDeck.dck
new file mode 100644
index 0000000000..41690e95a5
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/BWR Control TDtB ST Nov 2013.mwDeck.dck
@@ -0,0 +1,32 @@
+2 [RTR:82] Ultimate Price
+2 [THS:110] Whip of Erebos
+2 [RTR:73] Pack Rat
+2 [RTR:63] Desecration Demon
+4 [GTC:215] Boros Reckoner
+3 [THS:112] Anger of the Gods
+4 [THS:227] Temple of Silence
+4 [THS:228] Temple of Triumph
+2 [THS:107] Thoughtseize
+1 [UNH:139] Mountain
+2 [RTR:157] Dreadbore
+2 [RTR:101] Mizzium Mortars
+1 [RTR:232] Rakdos Keyrune
+1 [RTR:188] Rakdos's Return
+2 [GTC:182] Obzedat, Ghost Council
+4 [RTR:238] Blood Crypt
+4 [THS:90] Hero's Downfall
+1 [M14:96] Doom Blade
+4 [GTC:245] Sacred Foundry
+2 [UNH:136] Plains
+4 [GTC:242] Godless Shrine
+2 [THS:9] Elspeth, Sun's Champion
+3 [UNH:138] Swamp
+2 [GTC:142] Assemble the Legion
+SB: 2 [RTR:157] Dreadbore
+SB: 2 [THS:15] Glare of Heresy
+SB: 2 [DGM:57] Blood Baron of Vizkopa
+SB: 1 [RTR:231] Pithing Needle
+SB: 1 [THS:112] Anger of the Gods
+SB: 3 [M14:97] Duress
+SB: 2 [DGM:135] Wear // Tear
+SB: 2 [THS:107] Thoughtseize
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/BWR Control TDtB ST Oct 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/BWR Control TDtB ST Oct 2013.mwDeck.dck
new file mode 100644
index 0000000000..9ffe3a9b39
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/BWR Control TDtB ST Oct 2013.mwDeck.dck
@@ -0,0 +1,34 @@
+1 [THS:110] Whip of Erebos
+4 [GTC:215] Boros Reckoner
+4 [RTR:63] Desecration Demon
+3 [THS:112] Anger of the Gods
+4 [THS:227] Temple of Silence
+3 [THS:228] Temple of Triumph
+2 [THS:107] Thoughtseize
+1 [C13:314] Rakdos Guildgate
+3 [UNH:139] Mountain
+2 [RTR:157] Dreadbore
+2 [C14:158] Read the Bones
+2 [RTR:232] Rakdos Keyrune
+2 [THS:4] Chained to the Rocks
+2 [RTR:188] Rakdos's Return
+2 [DGM:57] Blood Baron of Vizkopa
+2 [GTC:182] Obzedat, Ghost Council
+4 [RTR:238] Blood Crypt
+2 [THS:90] Hero's Downfall
+1 [M14:96] Doom Blade
+3 [DGM:116] Warleader's Helix
+4 [GTC:245] Sacred Foundry
+4 [GTC:242] Godless Shrine
+1 [THS:9] Elspeth, Sun's Champion
+2 [UNH:138] Swamp
+SB: 1 [M15:134] Chandra, Pyromaster
+SB: 1 [RTR:101] Mizzium Mortars
+SB: 3 [M14:155] Shock
+SB: 2 [RTR:83] Underworld Connections
+SB: 1 [RTR:188] Rakdos's Return
+SB: 1 [THS:15] Glare of Heresy
+SB: 1 [M14:101] Lifebane Zombie
+SB: 1 [THS:112] Anger of the Gods
+SB: 2 [THS:107] Thoughtseize
+SB: 2 [DGM:103] Sin Collector
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Bant Control TDtB ST Dec 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Bant Control TDtB ST Dec 2012.mwDeck.dck
new file mode 100644
index 0000000000..5c48e82675
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Bant Control TDtB ST Dec 2012.mwDeck.dck
@@ -0,0 +1,33 @@
+3 [RTR:145] Azorius Charm
+2 [ISD:245] Nephalia Drownyard
+2 [RTR:243] Overgrown Tomb
+4 [M15:51] Dissipate
+1 [RTR:155] Detention Sphere
+4 [M13:170] Farseek
+2 [UNH:137] Island
+3 [RTR:248] Temple Garden
+1 [AVR:32] Restoration Angel
+4 [M13:193] Thragtusk
+1 [AVR:43] Amass the Components
+4 [RTR:200] Sphinx's Revelation
+3 [RTR:201] Supreme Verdict
+4 [ISD:241] Hinterland Harbor
+4 [ISD:83] Think Twice
+1 [RTR:18] Rest in Peace
+4 [M13:225] Glacial Fortress
+1 [AVR:38] Terminus
+3 [C13:30] Augur of Bolas
+4 [M13:229] Sunpetal Grove
+1 [AVR:225] Alchemist's Refuge
+4 [RTR:241] Hallowed Fountain
+SB: 1 [RTR:231] Pithing Needle
+SB: 2 [M15:71] Negate
+SB: 1 [RTR:145] Azorius Charm
+SB: 1 [RTR:155] Detention Sphere
+SB: 1 [AVR:32] Restoration Angel
+SB: 2 [RTR:36] Dispel
+SB: 2 [M13:29] Rhox Faithmender
+SB: 2 [AVR:38] Terminus
+SB: 1 [C14:214] Silklash Spider
+SB: 1 [M14:60] Jace, Memory Adept
+SB: 1 [RTR:18] Rest in Peace
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Bant Control TDtB ST Jan 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Bant Control TDtB ST Jan 2013.mwDeck.dck
new file mode 100644
index 0000000000..22c946ebd8
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Bant Control TDtB ST Jan 2013.mwDeck.dck
@@ -0,0 +1,28 @@
+4 [RTR:145] Azorius Charm
+2 [ISD:245] Nephalia Drownyard
+2 [RTR:44] Jace, Architect of Thought
+2 [RTR:243] Overgrown Tomb
+3 [M15:51] Dissipate
+2 [RTR:155] Detention Sphere
+4 [M13:170] Farseek
+2 [UNH:137] Island
+4 [RTR:248] Temple Garden
+1 [AVR:32] Restoration Angel
+4 [M13:193] Thragtusk
+3 [RTR:200] Sphinx's Revelation
+4 [RTR:201] Supreme Verdict
+4 [ISD:241] Hinterland Harbor
+4 [ISD:83] Think Twice
+4 [M13:225] Glacial Fortress
+2 [C13:30] Augur of Bolas
+1 [AVR:79] Tamiyo, the Moon Sage
+3 [M13:229] Sunpetal Grove
+1 [AVR:225] Alchemist's Refuge
+4 [RTR:241] Hallowed Fountain
+SB: 1 [RTR:231] Pithing Needle
+SB: 3 [M15:71] Negate
+SB: 1 [RTR:36] Dispel
+SB: 3 [AVR:38] Terminus
+SB: 3 [M13:29] Rhox Faithmender
+SB: 2 [M14:60] Jace, Memory Adept
+SB: 2 [RTR:18] Rest in Peace
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Bant Control TDtB ST Nov 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Bant Control TDtB ST Nov 2012.mwDeck.dck
new file mode 100644
index 0000000000..a65e81c913
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Bant Control TDtB ST Nov 2012.mwDeck.dck
@@ -0,0 +1,28 @@
+4 [RTR:145] Azorius Charm
+3 [RTR:44] Jace, Architect of Thought
+4 [M15:51] Dissipate
+3 [RTR:155] Detention Sphere
+4 [M13:170] Farseek
+1 [UNH:137] Island
+4 [RTR:248] Temple Garden
+2 [UNH:136] Plains
+4 [M13:193] Thragtusk
+4 [RTR:200] Sphinx's Revelation
+4 [RTR:201] Supreme Verdict
+4 [ISD:241] Hinterland Harbor
+4 [M13:225] Glacial Fortress
+1 [AVR:38] Terminus
+1 [M14:209] Elixir of Immortality
+1 [M13:217] Staff of Nin
+4 [M13:229] Sunpetal Grove
+1 [UNH:140] Forest
+1 [RTR:54] Syncopate
+2 [AVR:226] Cavern of Souls
+4 [RTR:241] Hallowed Fountain
+SB: 2 [M15:71] Negate
+SB: 1 [DKA:17] Ray of Revelation
+SB: 3 [AVR:32] Restoration Angel
+SB: 4 [RTR:148] Centaur Healer
+SB: 2 [RTR:36] Dispel
+SB: 2 [M13:176] Ground Seal
+SB: 1 [AVR:79] Tamiyo, the Moon Sage
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Bant Control TDtB ST Oct 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Bant Control TDtB ST Oct 2012.mwDeck.dck
new file mode 100644
index 0000000000..05033f59ce
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Bant Control TDtB ST Oct 2012.mwDeck.dck
@@ -0,0 +1,28 @@
+2 [RTR:1] Angel of Serenity
+4 [RTR:145] Azorius Charm
+3 [RTR:155] Detention Sphere
+2 [UNH:137] Island
+4 [RTR:248] Temple Garden
+4 [AVR:32] Restoration Angel
+4 [M13:193] Thragtusk
+3 [UNH:136] Plains
+4 [RTR:178] Loxodon Smiter
+2 [C14:104] Cyclonic Rift
+4 [ISD:241] Hinterland Harbor
+1 [ISD:181] Garruk Relentless
+1 [C13:236] Azorius Keyrune
+3 [M13:225] Glacial Fortress
+3 [AVR:38] Terminus
+2 [AVR:79] Tamiyo, the Moon Sage
+4 [M13:229] Sunpetal Grove
+2 [C13:42] Dungeon Geists
+1 [UNH:140] Forest
+3 [RTR:54] Syncopate
+4 [RTR:241] Hallowed Fountain
+SB: 3 [M13:21] Knight of Glory
+SB: 1 [RTR:206] Trostani, Selesnya's Voice
+SB: 2 [RTR:44] Jace, Architect of Thought
+SB: 2 [RTR:201] Supreme Verdict
+SB: 4 [ISD:213] Geist of Saint Traft
+SB: 1 [C13:42] Dungeon Geists
+SB: 2 [RTR:18] Rest in Peace
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Bant Hexproof TDtB ST Aug 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Bant Hexproof TDtB ST Aug 2013.mwDeck.dck
new file mode 100644
index 0000000000..e4bb3c1bdf
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Bant Hexproof TDtB ST Aug 2013.mwDeck.dck
@@ -0,0 +1,24 @@
+4 [ISD:79] Spectral Flight
+4 [RTR:248] Temple Garden
+4 [M13:185] Rancor
+4 [RTR:9] Ethereal Armor
+1 [C14:88] Silverblade Paladin
+4 [ISD:213] Geist of Saint Traft
+4 [GTC:240] Breeding Pool
+4 [M14:176] Gladecover Scout
+4 [ISD:60] Invisible Stalker
+1 [C13:211] Selesnya Charm
+4 [ISD:241] Hinterland Harbor
+4 [ISD:170] Avacyn's Pilgrim
+1 [DKA:120] Increasing Savagery
+1 [GTC:195] Simic Charm
+2 [M13:225] Glacial Fortress
+4 [DGM:111] Unflinching Courage
+4 [M13:229] Sunpetal Grove
+2 [M14:18] Fiendslayer Paladin
+4 [RTR:241] Hallowed Fountain
+SB: 2 [DGM:44] Mending Touch
+SB: 2 [M14:171] Fog
+SB: 4 [DGM:114] Voice of Resurgence
+SB: 4 [DGM:51] Advent of the Wurm
+SB: 3 [GTC:52] Spell Rupture
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Bant Hexproof TDtB ST Jan 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Bant Hexproof TDtB ST Jan 2013.mwDeck.dck
new file mode 100644
index 0000000000..e6a926ac04
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Bant Hexproof TDtB ST Jan 2013.mwDeck.dck
@@ -0,0 +1,26 @@
+4 [ISD:79] Spectral Flight
+1 [UNH:137] Island
+4 [RTR:248] Temple Garden
+4 [M13:185] Rancor
+4 [RTR:9] Ethereal Armor
+3 [C14:88] Silverblade Paladin
+4 [ISD:213] Geist of Saint Traft
+4 [ISD:60] Invisible Stalker
+4 [C13:211] Selesnya Charm
+4 [ISD:241] Hinterland Harbor
+4 [ISD:170] Avacyn's Pilgrim
+2 [DKA:120] Increasing Savagery
+4 [AVR:167] Abundant Growth
+1 [M13:225] Glacial Fortress
+2 [M13:229] Sunpetal Grove
+4 [UNH:140] Forest
+3 [AVR:226] Cavern of Souls
+4 [RTR:241] Hallowed Fountain
+SB: 1 [M15:71] Negate
+SB: 1 [RTR:19] Rootborn Defenses
+SB: 3 [AVR:31] Nearheath Pilgrim
+SB: 1 [ISD:3] Angelic Overseer
+SB: 2 [RTR:178] Loxodon Smiter
+SB: 2 [ISD:14] Feeling of Dread
+SB: 2 [ISD:25] Nevermore
+SB: 3 [RTR:18] Rest in Peace
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Bant Hexproof TDtB ST Jul 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Bant Hexproof TDtB ST Jul 2013.mwDeck.dck
new file mode 100644
index 0000000000..78a7517fae
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Bant Hexproof TDtB ST Jul 2013.mwDeck.dck
@@ -0,0 +1,26 @@
+4 [ISD:79] Spectral Flight
+4 [RTR:248] Temple Garden
+4 [M13:185] Rancor
+4 [RTR:9] Ethereal Armor
+4 [ISD:213] Geist of Saint Traft
+4 [GTC:240] Breeding Pool
+4 [RTR:178] Loxodon Smiter
+4 [ISD:60] Invisible Stalker
+2 [C13:211] Selesnya Charm
+4 [ISD:241] Hinterland Harbor
+4 [ISD:170] Avacyn's Pilgrim
+4 [DGM:114] Voice of Resurgence
+2 [M13:225] Glacial Fortress
+4 [DGM:111] Unflinching Courage
+3 [M13:229] Sunpetal Grove
+1 [UNH:140] Forest
+4 [RTR:241] Hallowed Fountain
+SB: 1 [RTR:19] Rootborn Defenses
+SB: 2 [AVR:31] Nearheath Pilgrim
+SB: 2 [GTC:219] Gift of Orzhova
+SB: 1 [AVR:32] Restoration Angel
+SB: 2 [M13:29] Rhox Faithmender
+SB: 2 [GTC:212] Beckon Apparition
+SB: 2 [M14:25] Pacifism
+SB: 1 [ISD:25] Nevermore
+SB: 2 [RTR:18] Rest in Peace
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Bant Hexproof TDtB ST Jun 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Bant Hexproof TDtB ST Jun 2013.mwDeck.dck
new file mode 100644
index 0000000000..c94fac6cf3
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Bant Hexproof TDtB ST Jun 2013.mwDeck.dck
@@ -0,0 +1,23 @@
+4 [ISD:79] Spectral Flight
+4 [RTR:248] Temple Garden
+4 [M13:185] Rancor
+4 [RTR:9] Ethereal Armor
+4 [ISD:213] Geist of Saint Traft
+4 [GTC:240] Breeding Pool
+4 [ISD:60] Invisible Stalker
+4 [C13:211] Selesnya Charm
+4 [ISD:241] Hinterland Harbor
+2 [M14:1] Ajani, Caller of the Pride
+3 [ISD:170] Avacyn's Pilgrim
+4 [DGM:114] Voice of Resurgence
+4 [DGM:111] Unflinching Courage
+4 [M13:229] Sunpetal Grove
+1 [UNH:140] Forest
+2 [DKA:127] Strangleroot Geist
+4 [RTR:241] Hallowed Fountain
+SB: 1 [RTR:145] Azorius Charm
+SB: 3 [RTR:19] Rootborn Defenses
+SB: 4 [RTR:148] Centaur Healer
+SB: 4 [DGM:51] Advent of the Wurm
+SB: 2 [AVR:210] Sigarda, Host of Herons
+SB: 1 [UNH:140] Forest
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Bant Hexproof TDtB ST May 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Bant Hexproof TDtB ST May 2013.mwDeck.dck
new file mode 100644
index 0000000000..febb10bcb4
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Bant Hexproof TDtB ST May 2013.mwDeck.dck
@@ -0,0 +1,23 @@
+4 [ISD:79] Spectral Flight
+4 [RTR:248] Temple Garden
+4 [M13:185] Rancor
+4 [RTR:9] Ethereal Armor
+4 [RTR:11] Fencing Ace
+4 [ISD:213] Geist of Saint Traft
+4 [GTC:240] Breeding Pool
+4 [ISD:60] Invisible Stalker
+4 [ISD:241] Hinterland Harbor
+4 [ISD:170] Avacyn's Pilgrim
+4 [DGM:114] Voice of Resurgence
+2 [GTC:195] Simic Charm
+2 [M13:225] Glacial Fortress
+4 [DGM:111] Unflinching Courage
+4 [M13:229] Sunpetal Grove
+4 [RTR:241] Hallowed Fountain
+SB: 2 [M15:71] Negate
+SB: 2 [M14:171] Fog
+SB: 2 [AVR:31] Nearheath Pilgrim
+SB: 2 [M13:176] Ground Seal
+SB: 1 [ISD:14] Feeling of Dread
+SB: 2 [ISD:25] Nevermore
+SB: 4 [DKA:127] Strangleroot Geist
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Bant Megamorph TDtB ST May 2015.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Bant Megamorph TDtB ST May 2015.mwDeck.dck
new file mode 100644
index 0000000000..fd9481d544
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Bant Megamorph TDtB ST May 2015.mwDeck.dck
@@ -0,0 +1,31 @@
+4 [KTK:248] Windswept Heath
+2 [FRF:19] Mastery of the Unseen
+3 [FRF:28] Valorous Stance
+1 [UNH:137] Island
+2 [JOU:163] Mana Confluence
+2 [UNH:136] Plains
+3 [KTK:233] Flooded Strand
+2 [DTK:219] Dragonlord Ojutai
+3 [DTK:221] Dromoka's Command
+4 [BNG:165] Temple of Plenty
+1 [DTK:23] Hidden Dragonslayer
+2 [DTK:210] Surrak, the Hunt Caller
+1 [THS:226] Temple of Mystery
+4 [C14:191] Elvish Mystic
+4 [THS:180] Sylvan Caryatid
+4 [THS:193] Fleecemane Lion
+1 [THS:172] Polukranos, World Eater
+3 [M15:249] Yavimaya Coast
+1 [DTK:181] Den Protector
+4 [DTK:180] Deathmist Raptor
+4 [UNH:140] Forest
+3 [BNG:119] Courser of Kruphix
+2 [FRF:145] Whisperwood Elemental
+SB: 2 [DTK:54] Encase in Ice
+SB: 2 [DTK:65] Negate
+SB: 2 [M15:177] Hornet Nest
+SB: 1 [THS:15] Glare of Heresy
+SB: 3 [KTK:37] Disdainful Stroke
+SB: 2 [DTK:80] Stratus Dancer
+SB: 2 [THS:150] Arbor Colossus
+SB: 1 [DTK:70] Profaner of the Dead
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Bant Pod TDtB ST Nov 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Bant Pod TDtB ST Nov 2011.mwDeck.dck
new file mode 100644
index 0000000000..20025d07b8
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Bant Pod TDtB ST Nov 2011.mwDeck.dck
@@ -0,0 +1,36 @@
+2 [UNH:137] Island
+2 [UNH:136] Plains
+1 [ISD:77] Skaab Ruinator
+1 [M12:6] Archon of Justice
+4 [MBS:95] Viridian Emissary
+2 [M12:72] Phantasmal Image
+1 [C14:112] Frost Titan
+1 [SOM:135] Venser, the Sojourner
+2 [M13:22] Oblivion Ring
+1 [C14:91] Sun Titan
+2 [C14:271] Solemn Simulacrum
+6 [UNH:140] Forest
+4 [NPH:104] Birthing Pod
+4 [M12:165] Birds of Paradise
+1 [NPH:9] Elesh Norn, Grand Cenobite
+4 [ISD:241] Hinterland Harbor
+2 [NPH:4] Blade Splicer
+1 [C14:283] Wurmcoil Engine
+3 [SOM:229] Seachrome Coast
+2 [ISD:170] Avacyn's Pilgrim
+4 [SOM:228] Razorverge Thicket
+1 [C13:11] Fiend Hunter
+3 [M13:229] Sunpetal Grove
+2 [NPH:42] Phyrexian Metamorph
+2 [SOM:175] Mimic Vat
+2 [C13:134] Acidic Slime
+SB: 1 [M12:64] Master Thief
+SB: 2 [MBS:14] Mirran Crusader
+SB: 3 [M12:40] Timely Reinforcements
+SB: 1 [SOM:209] Sylvok Lifestaff
+SB: 1 [ISD:188] Hollowhenge Scavenger
+SB: 1 [SOM:48] Trinket Mage
+SB: 2 [C13:249] Nihil Spellbomb
+SB: 2 [MBS:78] Creeping Corrosion
+SB: 1 [M12:6] Archon of Justice
+SB: 1 [MBS:92] Thrun, the Last Troll
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Bant Pod TDtB ST Oct 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Bant Pod TDtB ST Oct 2011.mwDeck.dck
new file mode 100644
index 0000000000..e0f57b4765
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Bant Pod TDtB ST Oct 2011.mwDeck.dck
@@ -0,0 +1,40 @@
+2 [UNH:137] Island
+2 [UNH:136] Plains
+3 [MBS:95] Viridian Emissary
+1 [M12:6] Archon of Justice
+1 [ISD:77] Skaab Ruinator
+2 [M12:72] Phantasmal Image
+1 [C14:112] Frost Titan
+2 [M13:22] Oblivion Ring
+1 [C14:91] Sun Titan
+1 [MBS:8] Hero of Bladehold
+1 [C14:271] Solemn Simulacrum
+6 [UNH:140] Forest
+4 [NPH:104] Birthing Pod
+4 [M12:165] Birds of Paradise
+1 [C14:79] Mentor of the Meek
+1 [NPH:9] Elesh Norn, Grand Cenobite
+4 [ISD:241] Hinterland Harbor
+1 [ISD:207] Tree of Redemption
+1 [FNMP:147] Avacyn's Pilgrim
+1 [ISD:193] Mayor of Avabruck
+1 [NPH:4] Blade Splicer
+1 [C14:283] Wurmcoil Engine
+1 [ISD:170] Avacyn's Pilgrim
+3 [SOM:229] Seachrome Coast
+4 [SOM:228] Razorverge Thicket
+2 [NPH:42] Phyrexian Metamorph
+3 [M13:229] Sunpetal Grove
+1 [C13:11] Fiend Hunter
+2 [SOM:175] Mimic Vat
+2 [C13:134] Acidic Slime
+SB: 1 [M12:64] Master Thief
+SB: 2 [MBS:14] Mirran Crusader
+SB: 3 [M12:40] Timely Reinforcements
+SB: 1 [SOM:209] Sylvok Lifestaff
+SB: 1 [SOM:48] Trinket Mage
+SB: 1 [ISD:188] Hollowhenge Scavenger
+SB: 1 [MBS:8] Hero of Bladehold
+SB: 2 [C13:249] Nihil Spellbomb
+SB: 2 [MBS:78] Creeping Corrosion
+SB: 1 [ISD:207] Tree of Redemption
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Bg Zombie TDtB ST Oct 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Bg Zombie TDtB ST Oct 2012.mwDeck.dck
new file mode 100644
index 0000000000..7d393a4a78
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Bg Zombie TDtB ST Oct 2012.mwDeck.dck
@@ -0,0 +1,23 @@
+2 [UNH:140] Forest
+2 [RTR:120] Deadbridge Goliath
+2 [RTR:164] Golgari Charm
+4 [M13:185] Rancor
+4 [RTR:243] Overgrown Tomb
+3 [RTR:221] Rakdos Shred-Freak
+4 [RTR:177] Lotleth Troll
+4 [ISD:97] Diregraf Ghoul
+3 [C14:167] Tragic Slip
+4 [AVR:226] Cavern of Souls
+4 [DKA:63] Geralf's Messenger
+4 [RTR:158] Dreg Mangler
+4 [DKA:64] Gravecrawler
+4 [ISD:249] Woodland Cemetery
+3 [M15:92] Crippling Blight
+9 [UNH:138] Swamp
+SB: 1 [M13:193] Thragtusk
+SB: 3 [C13:97] Vampire Nighthawk
+SB: 3 [AVR:84] Appetite for Brains
+SB: 2 [RTR:213] Deathrite Shaman
+SB: 2 [ISD:115] Sever the Bloodline
+SB: 2 [RTR:120] Deadbridge Goliath
+SB: 2 [RTR:164] Golgari Charm
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Birthing Pod TDtB ST Dec 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Birthing Pod TDtB ST Dec 2011.mwDeck.dck
new file mode 100644
index 0000000000..51b66b4fa5
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Birthing Pod TDtB ST Dec 2011.mwDeck.dck
@@ -0,0 +1,31 @@
+4 [M13:229] Sunpetal Grove
+1 [M13:228] Rootbound Crag
+8 [UNH:140] Forest
+4 [MBS:95] Viridian Emissary
+1 [NPH:4] Blade Splicer
+4 [MBS:81] Green Sun's Zenith
+4 [M12:188] Primeval Titan
+4 [M12:165] Birds of Paradise
+2 [NPH:104] Birthing Pod
+1 [UNH:139] Mountain
+1 [C14:258] Palladium Myr
+2 [C13:134] Acidic Slime
+2 [ISD:243] Kessig Wolf Run
+4 [M12:190] Rampant Growth
+1 [NPH:9] Elesh Norn, Grand Cenobite
+4 [SOM:228] Razorverge Thicket
+2 [C14:283] Wurmcoil Engine
+2 [MBS:145] Inkmoth Nexus
+4 [C14:271] Solemn Simulacrum
+2 [M12:12] Day of Judgment
+3 [UNH:136] Plains
+SB: 2 [NPH:86] Gut Shot
+SB: 1 [C14:298] Ghost Quarter
+SB: 1 [MBS:94] Viridian Corrupter
+SB: 2 [M12:12] Day of Judgment
+SB: 1 [MBS:92] Thrun, the Last Troll
+SB: 2 [NPH:103] Beast Within
+SB: 2 [M12:40] Timely Reinforcements
+SB: 2 [M12:164] Autumn's Veil
+SB: 1 [M12:197] Stingerfling Spider
+SB: 1 [ISD:127] Ancient Grudge
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Black Kessig TDtB ST Feb 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Black Kessig TDtB ST Feb 2012.mwDeck.dck
new file mode 100644
index 0000000000..fd9a777682
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Black Kessig TDtB ST Feb 2012.mwDeck.dck
@@ -0,0 +1,32 @@
+1 [MBS:43] Go for the Throat
+6 [UNH:140] Forest
+1 [MBS:96] Glissa, the Traitor
+2 [MBS:81] Green Sun's Zenith
+1 [M13:222] Dragonskull Summit
+4 [M12:188] Primeval Titan
+1 [M12:165] Birds of Paradise
+1 [UNH:139] Mountain
+3 [C14:136] Black Sun's Zenith
+2 [C13:134] Acidic Slime
+4 [C14:145] Grave Titan
+1 [C14:298] Ghost Quarter
+2 [ISD:243] Kessig Wolf Run
+4 [M12:190] Rampant Growth
+2 [M14:215] Ratchet Bomb
+2 [C14:295] Evolving Wilds
+4 [MBS:145] Inkmoth Nexus
+4 [C14:271] Solemn Simulacrum
+4 [MBS:134] Sphere of the Suns
+3 [M14:96] Doom Blade
+4 [ISD:249] Woodland Cemetery
+4 [UNH:138] Swamp
+SB: 1 [M13:174] Garruk, Primal Hunter
+SB: 1 [C14:136] Black Sun's Zenith
+SB: 1 [MBS:94] Viridian Corrupter
+SB: 2 [NPH:130] Batterskull
+SB: 2 [MBS:92] Thrun, the Last Troll
+SB: 1 [ISD:207] Tree of Redemption
+SB: 2 [C13:249] Nihil Spellbomb
+SB: 2 [ISD:94] Curse of Death's Hold
+SB: 1 [ISD:105] Liliana of the Veil
+SB: 2 [ISD:127] Ancient Grudge
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Bolt Caw-Blade TDtB ST Mar 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Bolt Caw-Blade TDtB ST Mar 2011.mwDeck.dck
new file mode 100644
index 0000000000..6fef8d58c9
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Bolt Caw-Blade TDtB ST Mar 2011.mwDeck.dck
@@ -0,0 +1,31 @@
+3 [WWK:133] Celestial Colonnade
+1 [WWK:122] Basilisk Collar
+2 [M12:16] Gideon Jura
+3 [M11:149] Lightning Bolt
+1 [M13:225] Glacial Fortress
+4 [ZEN:211] Arid Mesa
+4 [UNH:139] Mountain
+1 [C13:114] Inferno Titan
+3 [ZEN:67] Spell Pierce
+4 [M11:70] Preordain
+4 [ZEN:223] Scalding Tarn
+1 [MBS:138] Sword of Feast and Famine
+1 [C14:295] Evolving Wilds
+4 [SOM:229] Seachrome Coast
+4 [M11:33] Squadron Hawk
+4 [WWK:20] Stoneforge Mystic
+4 [WWK:31] Jace, the Mind Sculptor
+2 [SOM:81] Arc Trail
+2 [UNH:136] Plains
+3 [UNH:137] Island
+3 [WWK:79] Cunning Sparkmage
+2 [M12:63] Mana Leak
+SB: 1 [C13:114] Inferno Titan
+SB: 1 [MBS:5] Divine Offering
+SB: 1 [ROE:59] Deprive
+SB: 1 [SOM:208] Sword of Body and Mind
+SB: 2 [SOM:50] Twisted Image
+SB: 2 [M11:154] Pyroclasm
+SB: 1 [WWK:79] Cunning Sparkmage
+SB: 2 [M12:63] Mana Leak
+SB: 4 [M12:52] Flashfreeze
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Boros Aggro TDtB ST Feb 2015.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Boros Aggro TDtB ST Feb 2015.mwDeck.dck
new file mode 100644
index 0000000000..6713536ffa
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Boros Aggro TDtB ST Feb 2015.mwDeck.dck
@@ -0,0 +1,27 @@
+2 [FRF:110] Outpost Siege
+1 [FRF:175] Wind-Scarred Crag
+2 [BNG:5] Brimaz, King of Oreskos
+4 [THS:143] Stormbreath Dragon
+2 [FRF:118] Wild Slash
+4 [KTK:22] Seeker of the Way
+4 [M15:240] Battlefield Forge
+4 [THS:228] Temple of Triumph
+4 [M15:164] Stoke the Flames
+10 [UNH:139] Mountain
+3 [M15:155] Lightning Strike
+4 [M15:145] Goblin Rabblemaster
+2 [M15:134] Chandra, Pyromaster
+4 [KTK:111] Hordeling Outburst
+4 [THS:4] Chained to the Rocks
+1 [C14:295] Evolving Wilds
+4 [UNH:136] Plains
+1 [FRF:27] Soulfire Grand Master
+SB: 2 [FRF:28] Valorous Stance
+SB: 2 [M15:15] Hushwing Gryff
+SB: 1 [M15:135] Circle of Flame
+SB: 3 [THS:15] Glare of Heresy
+SB: 1 [KTK:9] Erase
+SB: 2 [KTK:97] Arc Lightning
+SB: 1 [FRF:2] Abzan Advantage
+SB: 1 [BNG:110] Scouring Sands
+SB: 2 [KTK:119] Sarkhan, the Dragonspeaker
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Boros Aggro TDtB ST Jan 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Boros Aggro TDtB ST Jan 2014.mwDeck.dck
new file mode 100644
index 0000000000..ea58c669a6
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Boros Aggro TDtB ST Jan 2014.mwDeck.dck
@@ -0,0 +1,24 @@
+4 [RTR:86] Ash Zealot
+1 [THS:143] Stormbreath Dragon
+4 [THS:122] Firedrinker Satyr
+4 [THS:128] Magma Jet
+4 [THS:228] Temple of Triumph
+3 [M14:163] Young Pyromancer
+11 [UNH:139] Mountain
+4 [M15:155] Lightning Strike
+2 [M15:134] Chandra, Pyromaster
+3 [M14:155] Shock
+1 [DGM:36] Pyrewild Shaman
+4 [M14:134] Chandra's Phoenix
+2 [THS:4] Chained to the Rocks
+4 [RTR:220] Rakdos Cackler
+1 [M14:139] Flames of the Firebrand
+4 [M14:228] Mutavault
+4 [GTC:245] Sacred Foundry
+SB: 2 [RTR:101] Mizzium Mortars
+SB: 2 [THS:4] Chained to the Rocks
+SB: 1 [THS:143] Stormbreath Dragon
+SB: 2 [THS:121] Fanatic of Mogis
+SB: 4 [GTC:215] Boros Reckoner
+SB: 3 [GTC:106] Skullcrack
+SB: 1 [M14:217] Rod of Ruin
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Boros Aggro TDtB ST Jul 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Boros Aggro TDtB ST Jul 2014.mwDeck.dck
new file mode 100644
index 0000000000..02bea98168
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Boros Aggro TDtB ST Jul 2014.mwDeck.dck
@@ -0,0 +1,23 @@
+4 [GTC:106] Skullcrack
+4 [THS:128] Magma Jet
+4 [THS:228] Temple of Triumph
+4 [M14:163] Young Pyromancer
+9 [UNH:139] Mountain
+4 [M15:155] Lightning Strike
+3 [M14:155] Shock
+4 [C13:179] Boros Charm
+4 [M14:134] Chandra's Phoenix
+2 [THS:4] Chained to the Rocks
+4 [M14:228] Mutavault
+4 [DGM:116] Warleader's Helix
+2 [C13:280] Boros Guildgate
+4 [GTC:245] Sacred Foundry
+4 [BNG:111] Searing Blood
+SB: 2 [THS:124] Hammer of Purphoros
+SB: 2 [JOU:18] Nyx-Fleece Ram
+SB: 1 [RTR:101] Mizzium Mortars
+SB: 2 [THS:4] Chained to the Rocks
+SB: 4 [GTC:215] Boros Reckoner
+SB: 2 [JOU:5] Banishing Light
+SB: 1 [THS:112] Anger of the Gods
+SB: 1 [THS:9] Elspeth, Sun's Champion
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Boros Aggro TDtB ST Mar 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Boros Aggro TDtB ST Mar 2014.mwDeck.dck
new file mode 100644
index 0000000000..bc31e4cf72
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Boros Aggro TDtB ST Mar 2014.mwDeck.dck
@@ -0,0 +1,22 @@
+4 [RTR:86] Ash Zealot
+2 [THS:143] Stormbreath Dragon
+4 [GTC:215] Boros Reckoner
+4 [THS:128] Magma Jet
+4 [THS:228] Temple of Triumph
+11 [UNH:139] Mountain
+4 [M15:155] Lightning Strike
+2 [M15:134] Chandra, Pyromaster
+4 [C13:179] Boros Charm
+4 [M14:134] Chandra's Phoenix
+3 [THS:4] Chained to the Rocks
+3 [M14:228] Mutavault
+2 [DGM:116] Warleader's Helix
+2 [C13:280] Boros Guildgate
+4 [GTC:245] Sacred Foundry
+3 [BNG:111] Searing Blood
+SB: 2 [BNG:94] Fated Conflagration
+SB: 2 [RTR:101] Mizzium Mortars
+SB: 1 [THS:4] Chained to the Rocks
+SB: 4 [THS:122] Firedrinker Satyr
+SB: 4 [GTC:106] Skullcrack
+SB: 2 [GTC:199] Spark Trooper
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Boros Aggro TDtB ST Mar 2015.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Boros Aggro TDtB ST Mar 2015.mwDeck.dck
new file mode 100644
index 0000000000..3537da50af
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Boros Aggro TDtB ST Mar 2015.mwDeck.dck
@@ -0,0 +1,29 @@
+4 [FRF:110] Outpost Siege
+3 [FRF:118] Wild Slash
+2 [KTK:237] Nomad Outpost
+4 [KTK:22] Seeker of the Way
+1 [KTK:202] Sorin, Solemn Visitor
+3 [THS:228] Temple of Triumph
+4 [M15:240] Battlefield Forge
+4 [M15:164] Stoke the Flames
+5 [UNH:139] Mountain
+2 [M15:155] Lightning Strike
+3 [M15:145] Goblin Rabblemaster
+4 [KTK:111] Hordeling Outburst
+4 [THS:4] Chained to the Rocks
+4 [KTK:230] Bloodstained Mire
+2 [DTK:248] Evolving Wilds
+3 [KTK:171] Crackling Doom
+3 [UNH:136] Plains
+1 [UNH:138] Swamp
+4 [FRF:27] Soulfire Grand Master
+SB: 1 [FRF:28] Valorous Stance
+SB: 1 [KTK:210] Utter End
+SB: 2 [KTK:186] Mardu Charm
+SB: 1 [KTK:9] Erase
+SB: 3 [THS:143] Stormbreath Dragon
+SB: 1 [KTK:171] Crackling Doom
+SB: 2 [KTK:97] Arc Lightning
+SB: 1 [KTK:119] Sarkhan, the Dragonspeaker
+SB: 2 [KTK:99] Ashcloud Phoenix
+SB: 1 [KTK:202] Sorin, Solemn Visitor
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Boros Burn TDtB ST Apr 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Boros Burn TDtB ST Apr 2014.mwDeck.dck
new file mode 100644
index 0000000000..c83d243609
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Boros Burn TDtB ST Apr 2014.mwDeck.dck
@@ -0,0 +1,22 @@
+4 [GTC:106] Skullcrack
+2 [THS:227] Temple of Silence
+4 [THS:128] Magma Jet
+4 [THS:228] Temple of Triumph
+5 [UNH:139] Mountain
+4 [M15:155] Lightning Strike
+3 [M14:155] Shock
+4 [C13:179] Boros Charm
+4 [M14:134] Chandra's Phoenix
+2 [THS:4] Chained to the Rocks
+4 [DGM:133] Toil // Trouble
+4 [RTR:238] Blood Crypt
+4 [M14:228] Mutavault
+4 [DGM:116] Warleader's Helix
+4 [GTC:245] Sacred Foundry
+4 [BNG:111] Searing Blood
+SB: 2 [GTC:6] Blind Obedience
+SB: 1 [M15:134] Chandra, Pyromaster
+SB: 2 [THS:4] Chained to the Rocks
+SB: 4 [BNG:108] Satyr Firedancer
+SB: 4 [THS:122] Firedrinker Satyr
+SB: 2 [M14:130] Burning Earth
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Boros Burn TDtB ST Dec 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Boros Burn TDtB ST Dec 2013.mwDeck.dck
new file mode 100644
index 0000000000..d8c572cbd7
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Boros Burn TDtB ST Dec 2013.mwDeck.dck
@@ -0,0 +1,21 @@
+1 [THS:224] Temple of Abandon
+3 [THS:143] Stormbreath Dragon
+4 [THS:112] Anger of the Gods
+4 [THS:227] Temple of Silence
+4 [THS:128] Magma Jet
+4 [THS:228] Temple of Triumph
+10 [UNH:139] Mountain
+4 [M15:155] Lightning Strike
+2 [M15:134] Chandra, Pyromaster
+4 [C13:179] Boros Charm
+4 [M14:155] Shock
+2 [RTR:101] Mizzium Mortars
+4 [M14:134] Chandra's Phoenix
+4 [THS:4] Chained to the Rocks
+3 [DGM:116] Warleader's Helix
+4 [GTC:245] Sacred Foundry
+SB: 1 [RTR:101] Mizzium Mortars
+SB: 4 [DGM:133] Toil // Trouble
+SB: 4 [GTC:215] Boros Reckoner
+SB: 4 [GTC:106] Skullcrack
+SB: 2 [GTC:142] Assemble the Legion
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Boros Burn TDtB ST Jun 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Boros Burn TDtB ST Jun 2014.mwDeck.dck
new file mode 100644
index 0000000000..26d7627c38
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Boros Burn TDtB ST Jun 2014.mwDeck.dck
@@ -0,0 +1,25 @@
+4 [GTC:106] Skullcrack
+1 [THS:227] Temple of Silence
+4 [THS:128] Magma Jet
+4 [THS:228] Temple of Triumph
+4 [M14:163] Young Pyromancer
+8 [UNH:139] Mountain
+4 [M15:155] Lightning Strike
+3 [M14:155] Shock
+4 [C13:179] Boros Charm
+4 [M14:134] Chandra's Phoenix
+3 [THS:4] Chained to the Rocks
+1 [BNG:164] Temple of Malice
+3 [M14:228] Mutavault
+2 [JOU:163] Mana Confluence
+4 [DGM:116] Warleader's Helix
+4 [GTC:245] Sacred Foundry
+3 [BNG:111] Searing Blood
+SB: 1 [BNG:94] Fated Conflagration
+SB: 3 [RTR:101] Mizzium Mortars
+SB: 1 [M15:134] Chandra, Pyromaster
+SB: 1 [THS:4] Chained to the Rocks
+SB: 2 [THS:15] Glare of Heresy
+SB: 3 [DGM:133] Toil // Trouble
+SB: 2 [JOU:5] Banishing Light
+SB: 2 [JOU:94] Eidolon of the Great Revel
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Boros Burn TDtB ST May 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Boros Burn TDtB ST May 2014.mwDeck.dck
new file mode 100644
index 0000000000..4367eed457
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Boros Burn TDtB ST May 2014.mwDeck.dck
@@ -0,0 +1,22 @@
+4 [GTC:106] Skullcrack
+4 [THS:128] Magma Jet
+2 [M14:161] Wild Guess
+4 [THS:228] Temple of Triumph
+9 [UNH:139] Mountain
+4 [M15:155] Lightning Strike
+2 [M14:155] Shock
+4 [C13:179] Boros Charm
+4 [M14:134] Chandra's Phoenix
+2 [THS:4] Chained to the Rocks
+4 [M14:228] Mutavault
+2 [JOU:163] Mana Confluence
+4 [DGM:116] Warleader's Helix
+4 [GTC:245] Sacred Foundry
+3 [BNG:111] Searing Blood
+4 [JOU:94] Eidolon of the Great Revel
+SB: 2 [THS:4] Chained to the Rocks
+SB: 4 [BNG:108] Satyr Firedancer
+SB: 4 [THS:122] Firedrinker Satyr
+SB: 2 [KTK:95] Act of Treason
+SB: 2 [DGM:135] Wear // Tear
+SB: 1 [JOU:93] Dictate of the Twin Gods
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Boros Landfall TDtB ST Apr 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Boros Landfall TDtB ST Apr 2011.mwDeck.dck
new file mode 100644
index 0000000000..dd67fb5626
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Boros Landfall TDtB ST Apr 2011.mwDeck.dck
@@ -0,0 +1,28 @@
+1 [MBS:66] Hero of Oxid Ridge
+4 [M11:149] Lightning Bolt
+4 [ZEN:211] Arid Mesa
+1 [C14:229] Bonehoard
+2 [C14:315] Terramorphic Expanse
+1 [ZEN:195] Adventuring Gear
+4 [ZEN:141] Plated Geopede
+5 [UNH:139] Mountain
+4 [ZEN:36] Steppe Lynx
+4 [ZEN:219] Marsh Flats
+4 [ZEN:223] Scalding Tarn
+2 [CMD:17] Journey to Nowhere
+4 [ZEN:126] Goblin Guide
+1 [SOM:208] Sword of Body and Mind
+2 [ZEN:226] Teetering Peaks
+4 [M11:33] Squadron Hawk
+3 [SOM:94] Koth of the Hammer
+2 [SOM:104] Spikeshot Elder
+3 [WWK:20] Stoneforge Mystic
+5 [UNH:136] Plains
+SB: 2 [M13:141] Mark of Mutiny
+SB: 1 [C13:114] Inferno Titan
+SB: 1 [MBS:5] Divine Offering
+SB: 1 [WWK:122] Basilisk Collar
+SB: 2 [M12:16] Gideon Jura
+SB: 4 [WWK:11] Kor Firewalker
+SB: 1 [SOM:94] Koth of the Hammer
+SB: 3 [WWK:79] Cunning Sparkmage
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Boros Landfall TDtB ST Feb 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Boros Landfall TDtB ST Feb 2011.mwDeck.dck
new file mode 100644
index 0000000000..11d07714d3
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Boros Landfall TDtB ST Feb 2011.mwDeck.dck
@@ -0,0 +1,28 @@
+2 [MBS:66] Hero of Oxid Ridge
+3 [M11:149] Lightning Bolt
+4 [ZEN:211] Arid Mesa
+2 [ZEN:195] Adventuring Gear
+4 [ZEN:141] Plated Geopede
+5 [UNH:139] Mountain
+4 [ZEN:36] Steppe Lynx
+4 [ZEN:219] Marsh Flats
+4 [ZEN:223] Scalding Tarn
+2 [CMD:17] Journey to Nowhere
+1 [MBS:138] Sword of Feast and Famine
+4 [ZEN:126] Goblin Guide
+1 [SOM:208] Sword of Body and Mind
+1 [ZEN:226] Teetering Peaks
+3 [C14:295] Evolving Wilds
+4 [M11:33] Squadron Hawk
+1 [SOM:94] Koth of the Hammer
+1 [SOM:104] Spikeshot Elder
+3 [WWK:20] Stoneforge Mystic
+5 [UNH:136] Plains
+2 [MBS:14] Mirran Crusader
+SB: 1 [M13:141] Mark of Mutiny
+SB: 1 [WWK:122] Basilisk Collar
+SB: 3 [WWK:11] Kor Firewalker
+SB: 1 [SOM:94] Koth of the Hammer
+SB: 4 [SOM:81] Arc Trail
+SB: 1 [MBS:14] Mirran Crusader
+SB: 4 [WWK:79] Cunning Sparkmage
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Boros Landfall TDtB ST Jun 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Boros Landfall TDtB ST Jun 2011.mwDeck.dck
new file mode 100644
index 0000000000..f5d673e0fa
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Boros Landfall TDtB ST Jun 2011.mwDeck.dck
@@ -0,0 +1,22 @@
+3 [MBS:97] Tezzeret, Agent of Bolas
+2 [M11:58] Jace Beleren
+4 [WWK:134] Creeping Tar Pit
+4 [NPH:162] Torpor Orb
+4 [M13:223] Drowned Catacomb
+3 [ROE:115] Inquisition of Kozilek
+4 [C14:239] Everflowing Chalice
+2 [KTK:69] Despise
+1 [ROE:100] Consume the Meek
+3 [C14:313] Tectonic Edge
+1 [C14:136] Black Sun's Zenith
+4 [M11:70] Preordain
+2 [ZEN:87] Disfigure
+3 [SOM:218] Tumble Magnet
+1 [C14:283] Wurmcoil Engine
+2 [MBS:145] Inkmoth Nexus
+2 [M14:96] Doom Blade
+4 [SOM:226] Darkslick Shores
+2 [WWK:31] Jace, the Mind Sculptor
+4 [UNH:137] Island
+3 [UNH:138] Swamp
+2 [M12:63] Mana Leak
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Boros Landfall TDtB ST Mar 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Boros Landfall TDtB ST Mar 2011.mwDeck.dck
new file mode 100644
index 0000000000..c89544ffeb
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Boros Landfall TDtB ST Mar 2011.mwDeck.dck
@@ -0,0 +1,29 @@
+2 [MBS:66] Hero of Oxid Ridge
+4 [M11:149] Lightning Bolt
+4 [ZEN:211] Arid Mesa
+1 [C14:229] Bonehoard
+3 [C14:315] Terramorphic Expanse
+2 [ZEN:195] Adventuring Gear
+4 [ZEN:141] Plated Geopede
+5 [UNH:139] Mountain
+4 [ZEN:36] Steppe Lynx
+4 [ZEN:219] Marsh Flats
+4 [ZEN:223] Scalding Tarn
+2 [CMD:17] Journey to Nowhere
+4 [ZEN:126] Goblin Guide
+1 [SOM:208] Sword of Body and Mind
+1 [ZEN:226] Teetering Peaks
+4 [M11:33] Squadron Hawk
+1 [SOM:94] Koth of the Hammer
+1 [SOM:104] Spikeshot Elder
+3 [WWK:20] Stoneforge Mystic
+5 [UNH:136] Plains
+1 [MBS:14] Mirran Crusader
+SB: 2 [M13:141] Mark of Mutiny
+SB: 2 [MBS:5] Divine Offering
+SB: 1 [M12:16] Gideon Jura
+SB: 3 [WWK:11] Kor Firewalker
+SB: 1 [M11:7] Baneslayer Angel
+SB: 1 [SOM:94] Koth of the Hammer
+SB: 4 [SOM:81] Arc Trail
+SB: 1 [ROE:146] Forked Bolt
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Boros Midrange TDtB ST Jan 2015.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Boros Midrange TDtB ST Jan 2015.mwDeck.dck
new file mode 100644
index 0000000000..2856495829
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Boros Midrange TDtB ST Jan 2015.mwDeck.dck
@@ -0,0 +1,24 @@
+1 [M15:15] Hushwing Gryff
+3 [BNG:5] Brimaz, King of Oreskos
+4 [THS:143] Stormbreath Dragon
+1 [KTK:99] Ashcloud Phoenix
+4 [KTK:22] Seeker of the Way
+1 [THS:128] Magma Jet
+4 [M15:240] Battlefield Forge
+4 [THS:228] Temple of Triumph
+4 [M15:164] Stoke the Flames
+10 [UNH:139] Mountain
+4 [M15:155] Lightning Strike
+4 [M15:145] Goblin Rabblemaster
+2 [M15:134] Chandra, Pyromaster
+4 [KTK:111] Hordeling Outburst
+4 [THS:4] Chained to the Rocks
+1 [C14:295] Evolving Wilds
+5 [UNH:136] Plains
+SB: 3 [M15:15] Hushwing Gryff
+SB: 1 [M15:134] Chandra, Pyromaster
+SB: 3 [THS:15] Glare of Heresy
+SB: 3 [KTK:9] Erase
+SB: 1 [JOU:5] Banishing Light
+SB: 2 [KTK:119] Sarkhan, the Dragonspeaker
+SB: 2 [BNG:110] Scouring Sands
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Br Vampires TDtB ST Dec 2010.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Br Vampires TDtB ST Dec 2010.mwDeck.dck
new file mode 100644
index 0000000000..b7f33f4df0
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Br Vampires TDtB ST Dec 2010.mwDeck.dck
@@ -0,0 +1,22 @@
+4 [C13:99] Viscera Seer
+4 [M11:149] Lightning Bolt
+4 [ZEN:83] Bloodghast
+4 [M13:222] Dragonskull Summit
+4 [WWK:139] Lavaclaw Reaches
+4 [ZEN:89] Gatekeeper of Malakir
+2 [M11:90] Dark Tutelage
+2 [M13:141] Mark of Mutiny
+2 [ZEN:119] Burst Lightning
+4 [WWK:62] Pulse Tracker
+2 [ZEN:115] Vampire Lacerator
+2 [SOM:208] Sword of Body and Mind
+4 [SOM:224] Blackcleave Cliffs
+2 [SOM:81] Arc Trail
+4 [WWK:59] Kalastria Highborn
+12 [UNH:138] Swamp
+SB: 1 [M13:141] Mark of Mutiny
+SB: 1 [M11:90] Dark Tutelage
+SB: 3 [M12:151] Manic Vandal
+SB: 4 [M14:96] Doom Blade
+SB: 4 [M14:97] Duress
+SB: 2 [SOM:81] Arc Trail
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Br Vampires TDtB ST Feb 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Br Vampires TDtB ST Feb 2011.mwDeck.dck
new file mode 100644
index 0000000000..3ee00a7f90
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Br Vampires TDtB ST Feb 2011.mwDeck.dck
@@ -0,0 +1,25 @@
+2 [MBS:43] Go for the Throat
+3 [C13:99] Viscera Seer
+4 [M11:149] Lightning Bolt
+4 [ZEN:83] Bloodghast
+4 [M13:222] Dragonskull Summit
+4 [WWK:139] Lavaclaw Reaches
+4 [ZEN:89] Gatekeeper of Malakir
+2 [M11:90] Dark Tutelage
+1 [C14:168] Vampire Hexmage
+3 [ZEN:219] Marsh Flats
+4 [WWK:62] Pulse Tracker
+4 [ZEN:115] Vampire Lacerator
+2 [M11:87] Captivating Vampire
+4 [SOM:224] Blackcleave Cliffs
+3 [SOM:81] Arc Trail
+4 [WWK:59] Kalastria Highborn
+8 [UNH:138] Swamp
+SB: 1 [M11:90] Dark Tutelage
+SB: 2 [M13:141] Mark of Mutiny
+SB: 1 [C14:168] Vampire Hexmage
+SB: 3 [M11:92] Demon of Death's Gate
+SB: 2 [SOM:78] Skinrender
+SB: 2 [C13:97] Vampire Nighthawk
+SB: 2 [M14:97] Duress
+SB: 2 [ROE:146] Forked Bolt
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Br Vampires TDtB ST Jul 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Br Vampires TDtB ST Jul 2011.mwDeck.dck
new file mode 100644
index 0000000000..ee4774b5cd
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Br Vampires TDtB ST Jul 2011.mwDeck.dck
@@ -0,0 +1,26 @@
+1 [MBS:43] Go for the Throat
+3 [C13:99] Viscera Seer
+4 [M11:149] Lightning Bolt
+4 [ZEN:83] Bloodghast
+2 [M12:145] Grim Lavamancer
+3 [ROE:115] Inquisition of Kozilek
+4 [M13:222] Dragonskull Summit
+4 [WWK:139] Lavaclaw Reaches
+4 [ZEN:89] Gatekeeper of Malakir
+3 [ZEN:229] Verdant Catacombs
+2 [ZEN:219] Marsh Flats
+3 [WWK:62] Pulse Tracker
+4 [ZEN:115] Vampire Lacerator
+3 [NPH:57] Dismember
+2 [M14:96] Doom Blade
+4 [SOM:224] Blackcleave Cliffs
+4 [WWK:59] Kalastria Highborn
+6 [UNH:138] Swamp
+SB: 4 [M12:151] Manic Vandal
+SB: 1 [MBS:43] Go for the Throat
+SB: 3 [M11:92] Demon of Death's Gate
+SB: 2 [NPH:78] Act of Aggression
+SB: 1 [M14:97] Duress
+SB: 1 [M12:145] Grim Lavamancer
+SB: 1 [KTK:69] Despise
+SB: 2 [M12:110] Sorin's Thirst
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Br Vampires TDtB ST Jun 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Br Vampires TDtB ST Jun 2011.mwDeck.dck
new file mode 100644
index 0000000000..0edede07f7
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Br Vampires TDtB ST Jun 2011.mwDeck.dck
@@ -0,0 +1,22 @@
+4 [MBS:43] Go for the Throat
+3 [C13:99] Viscera Seer
+4 [M11:149] Lightning Bolt
+4 [ZEN:83] Bloodghast
+4 [M13:222] Dragonskull Summit
+4 [WWK:139] Lavaclaw Reaches
+3 [M12:151] Manic Vandal
+4 [ZEN:89] Gatekeeper of Malakir
+4 [ZEN:229] Verdant Catacombs
+1 [ZEN:219] Marsh Flats
+4 [WWK:62] Pulse Tracker
+4 [ZEN:115] Vampire Lacerator
+3 [NPH:57] Dismember
+4 [SOM:224] Blackcleave Cliffs
+4 [WWK:59] Kalastria Highborn
+6 [UNH:138] Swamp
+SB: 3 [M13:141] Mark of Mutiny
+SB: 3 [M11:90] Dark Tutelage
+SB: 2 [SOM:78] Skinrender
+SB: 2 [MBS:61] Crush
+SB: 1 [M14:96] Doom Blade
+SB: 4 [SOM:81] Arc Trail
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Br Vampires TDtB ST Mar 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Br Vampires TDtB ST Mar 2011.mwDeck.dck
new file mode 100644
index 0000000000..82dc53721d
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Br Vampires TDtB ST Mar 2011.mwDeck.dck
@@ -0,0 +1,24 @@
+3 [MBS:43] Go for the Throat
+3 [C13:99] Viscera Seer
+4 [M11:149] Lightning Bolt
+4 [ZEN:83] Bloodghast
+4 [M13:222] Dragonskull Summit
+4 [WWK:139] Lavaclaw Reaches
+4 [ZEN:89] Gatekeeper of Malakir
+4 [ZEN:229] Verdant Catacombs
+4 [C14:168] Vampire Hexmage
+1 [ZEN:219] Marsh Flats
+3 [WWK:62] Pulse Tracker
+4 [ZEN:115] Vampire Lacerator
+4 [SOM:224] Blackcleave Cliffs
+4 [SOM:81] Arc Trail
+4 [WWK:59] Kalastria Highborn
+6 [UNH:138] Swamp
+SB: 2 [M11:90] Dark Tutelage
+SB: 1 [M13:141] Mark of Mutiny
+SB: 2 [M11:92] Demon of Death's Gate
+SB: 3 [SOM:78] Skinrender
+SB: 2 [MBS:61] Crush
+SB: 1 [M14:96] Doom Blade
+SB: 2 [M14:97] Duress
+SB: 2 [ROE:115] Inquisition of Kozilek
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Br Vampires TDtB ST Sep 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Br Vampires TDtB ST Sep 2011.mwDeck.dck
new file mode 100644
index 0000000000..043194e455
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Br Vampires TDtB ST Sep 2011.mwDeck.dck
@@ -0,0 +1,30 @@
+1 [MBS:43] Go for the Throat
+4 [C13:99] Viscera Seer
+4 [M11:149] Lightning Bolt
+4 [ZEN:83] Bloodghast
+4 [ROE:115] Inquisition of Kozilek
+4 [M13:222] Dragonskull Summit
+4 [WWK:139] Lavaclaw Reaches
+4 [ZEN:89] Gatekeeper of Malakir
+1 [M13:141] Mark of Mutiny
+2 [ZEN:229] Verdant Catacombs
+2 [C14:168] Vampire Hexmage
+3 [ZEN:219] Marsh Flats
+4 [ZEN:115] Vampire Lacerator
+2 [NPH:78] Act of Aggression
+1 [NPH:57] Dismember
+4 [SOM:224] Blackcleave Cliffs
+2 [SOM:81] Arc Trail
+4 [WWK:59] Kalastria Highborn
+1 [M13:83] Bloodthrone Vampire
+5 [UNH:138] Swamp
+SB: 1 [M13:141] Mark of Mutiny
+SB: 2 [M11:90] Dark Tutelage
+SB: 3 [M12:151] Manic Vandal
+SB: 1 [MBS:43] Go for the Throat
+SB: 2 [NPH:74] Surgical Extraction
+SB: 1 [NPH:161] Sword of War and Peace
+SB: 1 [NPH:78] Act of Aggression
+SB: 2 [NPH:68] Phyrexian Obliterator
+SB: 1 [SOM:81] Arc Trail
+SB: 1 [KTK:69] Despise
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Caw-Blade TDtB ST Apr 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Caw-Blade TDtB ST Apr 2011.mwDeck.dck
new file mode 100644
index 0000000000..3dccdaff9e
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Caw-Blade TDtB ST Apr 2011.mwDeck.dck
@@ -0,0 +1,32 @@
+4 [WWK:133] Celestial Colonnade
+3 [M12:16] Gideon Jura
+4 [M13:225] Glacial Fortress
+2 [C14:69] Condemn
+4 [C14:313] Tectonic Edge
+1 [C14:115] Into the Roil
+3 [ZEN:67] Spell Pierce
+4 [M11:70] Preordain
+1 [ZEN:223] Scalding Tarn
+1 [MBS:138] Sword of Feast and Famine
+4 [SOM:229] Seachrome Coast
+2 [SOM:218] Tumble Magnet
+1 [MBS:145] Inkmoth Nexus
+4 [M11:33] Squadron Hawk
+1 [MBS:115] Mortarpod
+4 [WWK:20] Stoneforge Mystic
+4 [WWK:31] Jace, the Mind Sculptor
+2 [M12:12] Day of Judgment
+4 [UNH:136] Plains
+4 [UNH:137] Island
+3 [M12:63] Mana Leak
+SB: 2 [MBS:5] Divine Offering
+SB: 2 [CMD:17] Journey to Nowhere
+SB: 1 [ROE:59] Deprive
+SB: 1 [MBS:138] Sword of Feast and Famine
+SB: 1 [SOM:209] Sylvok Lifestaff
+SB: 1 [C14:91] Sun Titan
+SB: 1 [M11:7] Baneslayer Angel
+SB: 2 [SOM:53] Volition Reins
+SB: 1 [M12:12] Day of Judgment
+SB: 1 [C14:69] Condemn
+SB: 2 [M12:52] Flashfreeze
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Caw-Blade TDtB ST Aug 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Caw-Blade TDtB ST Aug 2011.mwDeck.dck
new file mode 100644
index 0000000000..16ca951619
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Caw-Blade TDtB ST Aug 2011.mwDeck.dck
@@ -0,0 +1,29 @@
+2 [MBS:21] Consecrated Sphinx
+4 [WWK:133] Celestial Colonnade
+1 [M11:58] Jace Beleren
+3 [M12:16] Gideon Jura
+3 [M13:225] Glacial Fortress
+1 [ZEN:211] Arid Mesa
+4 [C14:313] Tectonic Edge
+2 [ZEN:67] Spell Pierce
+3 [C14:115] Into the Roil
+4 [M11:70] Preordain
+2 [ZEN:223] Scalding Tarn
+2 [MBS:138] Sword of Feast and Famine
+4 [SOM:229] Seachrome Coast
+2 [ZEN:11] Emeria Angel
+3 [NPH:57] Dismember
+2 [MBS:145] Inkmoth Nexus
+4 [M11:33] Squadron Hawk
+2 [M12:12] Day of Judgment
+3 [UNH:136] Plains
+4 [UNH:137] Island
+2 [M12:40] Timely Reinforcements
+3 [M12:63] Mana Leak
+SB: 2 [C14:98] Azure Mage
+SB: 1 [M11:58] Jace Beleren
+SB: 2 [M14:215] Ratchet Bomb
+SB: 1 [M12:12] Day of Judgment
+SB: 3 [NPH:38] Mental Misstep
+SB: 2 [M12:40] Timely Reinforcements
+SB: 4 [M12:52] Flashfreeze
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Caw-Blade TDtB ST Feb 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Caw-Blade TDtB ST Feb 2011.mwDeck.dck
new file mode 100644
index 0000000000..0d6129c72b
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Caw-Blade TDtB ST Feb 2011.mwDeck.dck
@@ -0,0 +1,26 @@
+4 [WWK:133] Celestial Colonnade
+1 [ROE:59] Deprive
+1 [SOM:46] Stoic Rebuttal
+3 [M12:16] Gideon Jura
+1 [ZEN:220] Misty Rainforest
+4 [M13:225] Glacial Fortress
+4 [C14:313] Tectonic Edge
+4 [ZEN:67] Spell Pierce
+4 [M11:70] Preordain
+1 [SOM:209] Sylvok Lifestaff
+1 [SOM:208] Sword of Body and Mind
+4 [SOM:229] Seachrome Coast
+4 [M11:33] Squadron Hawk
+4 [WWK:20] Stoneforge Mystic
+4 [WWK:31] Jace, the Mind Sculptor
+4 [M12:12] Day of Judgment
+4 [UNH:136] Plains
+5 [UNH:137] Island
+3 [M12:63] Mana Leak
+SB: 2 [MBS:5] Divine Offering
+SB: 1 [SOM:208] Sword of Body and Mind
+SB: 3 [M14:215] Ratchet Bomb
+SB: 2 [M11:7] Baneslayer Angel
+SB: 4 [ROE:40] Oust
+SB: 2 [M12:52] Flashfreeze
+SB: 1 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Caw-Blade TDtB ST Jul 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Caw-Blade TDtB ST Jul 2011.mwDeck.dck
new file mode 100644
index 0000000000..b6daf16052
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Caw-Blade TDtB ST Jul 2011.mwDeck.dck
@@ -0,0 +1,28 @@
+4 [WWK:133] Celestial Colonnade
+2 [M12:16] Gideon Jura
+4 [M13:225] Glacial Fortress
+4 [NPH:4] Blade Splicer
+4 [C14:313] Tectonic Edge
+1 [C14:115] Into the Roil
+3 [ZEN:67] Spell Pierce
+4 [M11:70] Preordain
+3 [MBS:138] Sword of Feast and Famine
+4 [SOM:229] Seachrome Coast
+2 [NPH:57] Dismember
+3 [MBS:145] Inkmoth Nexus
+1 [C14:91] Sun Titan
+4 [M11:33] Squadron Hawk
+1 [M13:22] Oblivion Ring
+1 [M12:12] Day of Judgment
+4 [UNH:136] Plains
+4 [UNH:137] Island
+3 [MBS:8] Hero of Bladehold
+4 [M12:63] Mana Leak
+SB: 1 [C14:115] Into the Roil
+SB: 3 [M14:215] Ratchet Bomb
+SB: 1 [WWK:11] Kor Firewalker
+SB: 2 [M12:12] Day of Judgment
+SB: 1 [M13:22] Oblivion Ring
+SB: 2 [NPH:159] Spellskite
+SB: 2 [M12:40] Timely Reinforcements
+SB: 3 [M12:52] Flashfreeze
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Caw-Blade TDtB ST Jun 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Caw-Blade TDtB ST Jun 2011.mwDeck.dck
new file mode 100644
index 0000000000..761ef03abb
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Caw-Blade TDtB ST Jun 2011.mwDeck.dck
@@ -0,0 +1,31 @@
+1 [MBS:21] Consecrated Sphinx
+4 [WWK:133] Celestial Colonnade
+1 [M11:58] Jace Beleren
+1 [NPH:161] Sword of War and Peace
+3 [M13:225] Glacial Fortress
+1 [NPH:130] Batterskull
+4 [C14:313] Tectonic Edge
+2 [C14:115] Into the Roil
+3 [ZEN:67] Spell Pierce
+4 [M11:70] Preordain
+1 [MBS:5] Divine Offering
+1 [MBS:138] Sword of Feast and Famine
+4 [SOM:229] Seachrome Coast
+3 [NPH:57] Dismember
+2 [MBS:145] Inkmoth Nexus
+4 [M11:33] Squadron Hawk
+4 [WWK:20] Stoneforge Mystic
+4 [WWK:31] Jace, the Mind Sculptor
+4 [UNH:136] Plains
+5 [UNH:137] Island
+4 [M12:63] Mana Leak
+SB: 2 [MBS:5] Divine Offering
+SB: 1 [ROE:59] Deprive
+SB: 1 [NPH:57] Dismember
+SB: 1 [C14:91] Sun Titan
+SB: 1 [NPH:130] Batterskull
+SB: 1 [M12:11] Celestial Purge
+SB: 1 [M12:12] Day of Judgment
+SB: 3 [ROE:40] Oust
+SB: 2 [C14:69] Condemn
+SB: 2 [M12:52] Flashfreeze
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Caw-Blade TDtB ST Mar 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Caw-Blade TDtB ST Mar 2011.mwDeck.dck
new file mode 100644
index 0000000000..fef5871925
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Caw-Blade TDtB ST Mar 2011.mwDeck.dck
@@ -0,0 +1,27 @@
+4 [WWK:133] Celestial Colonnade
+1 [ROE:59] Deprive
+3 [M12:16] Gideon Jura
+1 [ZEN:220] Misty Rainforest
+4 [M13:225] Glacial Fortress
+4 [C14:313] Tectonic Edge
+3 [ZEN:67] Spell Pierce
+4 [M11:70] Preordain
+1 [MBS:138] Sword of Feast and Famine
+1 [SOM:209] Sylvok Lifestaff
+1 [SOM:208] Sword of Body and Mind
+4 [SOM:229] Seachrome Coast
+1 [C14:91] Sun Titan
+4 [M11:33] Squadron Hawk
+4 [WWK:20] Stoneforge Mystic
+4 [WWK:31] Jace, the Mind Sculptor
+4 [M12:12] Day of Judgment
+4 [UNH:136] Plains
+5 [UNH:137] Island
+3 [M12:63] Mana Leak
+SB: 3 [MBS:5] Divine Offering
+SB: 1 [C14:91] Sun Titan
+SB: 2 [M11:7] Baneslayer Angel
+SB: 1 [MBS:115] Mortarpod
+SB: 3 [ROE:40] Oust
+SB: 2 [C14:69] Condemn
+SB: 3 [M12:52] Flashfreeze
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Caw-Blade TDtB ST May 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Caw-Blade TDtB ST May 2011.mwDeck.dck
new file mode 100644
index 0000000000..4f3c624f75
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Caw-Blade TDtB ST May 2011.mwDeck.dck
@@ -0,0 +1,25 @@
+4 [WWK:133] Celestial Colonnade
+2 [M11:58] Jace Beleren
+1 [NPH:161] Sword of War and Peace
+4 [M13:225] Glacial Fortress
+1 [NPH:130] Batterskull
+2 [C14:69] Condemn
+4 [C14:313] Tectonic Edge
+3 [C14:115] Into the Roil
+4 [ZEN:67] Spell Pierce
+4 [M11:70] Preordain
+1 [MBS:138] Sword of Feast and Famine
+4 [SOM:229] Seachrome Coast
+2 [MBS:145] Inkmoth Nexus
+4 [M11:33] Squadron Hawk
+4 [WWK:20] Stoneforge Mystic
+4 [WWK:31] Jace, the Mind Sculptor
+3 [UNH:136] Plains
+5 [UNH:137] Island
+4 [M12:63] Mana Leak
+SB: 3 [MBS:5] Divine Offering
+SB: 4 [M11:21] Leyline of Sanctity
+SB: 2 [C14:91] Sun Titan
+SB: 1 [MBS:115] Mortarpod
+SB: 2 [M12:12] Day of Judgment
+SB: 3 [ROE:40] Oust
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Caw-Blade TDtB ST Sep 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Caw-Blade TDtB ST Sep 2011.mwDeck.dck
new file mode 100644
index 0000000000..bd01e2df5f
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Caw-Blade TDtB ST Sep 2011.mwDeck.dck
@@ -0,0 +1,29 @@
+4 [WWK:133] Celestial Colonnade
+2 [M12:16] Gideon Jura
+4 [M13:225] Glacial Fortress
+3 [NPH:4] Blade Splicer
+1 [ZEN:211] Arid Mesa
+4 [C14:313] Tectonic Edge
+2 [C14:115] Into the Roil
+3 [ZEN:67] Spell Pierce
+4 [M11:70] Preordain
+1 [ZEN:223] Scalding Tarn
+3 [MBS:138] Sword of Feast and Famine
+4 [SOM:229] Seachrome Coast
+2 [ZEN:11] Emeria Angel
+2 [NPH:57] Dismember
+2 [MBS:145] Inkmoth Nexus
+1 [C14:91] Sun Titan
+4 [M11:33] Squadron Hawk
+2 [M13:22] Oblivion Ring
+3 [UNH:136] Plains
+2 [M12:72] Phantasmal Image
+3 [UNH:137] Island
+4 [M12:63] Mana Leak
+SB: 1 [M11:58] Jace Beleren
+SB: 1 [C14:91] Sun Titan
+SB: 2 [NPH:38] Mental Misstep
+SB: 1 [M12:72] Phantasmal Image
+SB: 2 [C14:69] Condemn
+SB: 4 [M12:40] Timely Reinforcements
+SB: 4 [M12:52] Flashfreeze
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Cawless UW Control TDtB ST Feb 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Cawless UW Control TDtB ST Feb 2011.mwDeck.dck
new file mode 100644
index 0000000000..ab90f6f0f4
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Cawless UW Control TDtB ST Feb 2011.mwDeck.dck
@@ -0,0 +1,29 @@
+4 [WWK:133] Celestial Colonnade
+2 [M11:58] Jace Beleren
+2 [SOM:46] Stoic Rebuttal
+2 [M12:16] Gideon Jura
+2 [ZEN:70] Spreading Seas
+1 [ZEN:220] Misty Rainforest
+4 [M13:225] Glacial Fortress
+2 [M11:7] Baneslayer Angel
+3 [CMD:37] Wall of Omens
+2 [C14:69] Condemn
+4 [C14:313] Tectonic Edge
+3 [ZEN:67] Spell Pierce
+4 [M11:70] Preordain
+2 [CMD:17] Journey to Nowhere
+3 [SOM:229] Seachrome Coast
+2 [C14:91] Sun Titan
+3 [WWK:31] Jace, the Mind Sculptor
+2 [M12:12] Day of Judgment
+4 [UNH:136] Plains
+5 [UNH:137] Island
+4 [M12:63] Mana Leak
+SB: 4 [ZEN:25] Luminarch Ascension
+SB: 1 [M11:58] Jace Beleren
+SB: 2 [M14:215] Ratchet Bomb
+SB: 2 [ZEN:70] Spreading Seas
+SB: 1 [M11:7] Baneslayer Angel
+SB: 1 [M12:12] Day of Judgment
+SB: 2 [M12:52] Flashfreeze
+SB: 2 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Charmed TDtB ST Feb 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Charmed TDtB ST Feb 2013.mwDeck.dck
new file mode 100644
index 0000000000..ba172b550c
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Charmed TDtB ST Feb 2013.mwDeck.dck
@@ -0,0 +1,30 @@
+3 [AVR:32] Restoration Angel
+4 [C13:30] Augur of Bolas
+4 [GTC:215] Boros Reckoner
+2 [M13:225] Glacial Fortress
+3 [M13:147] Searing Spear
+2 [RTR:241] Hallowed Fountain
+2 [RTR:172] Izzet Charm
+3 [ISD:78] Snapcaster Mage
+1 [CNS:74] Moment of Heroism
+3 [RTR:200] Sphinx's Revelation
+4 [RTR:145] Azorius Charm
+4 [C13:179] Boros Charm
+2 [AVR:226] Cavern of Souls
+2 [AVR:149] Pillar of Flame
+4 [RTR:247] Steam Vents
+1 [M13:75] Unsummon
+2 [C14:172] Blasphemous Act
+4 [GTC:245] Sacred Foundry
+1 [UNH:136] Plains
+1 [UNH:137] Island
+4 [ISD:238] Clifftop Retreat
+4 [ISD:248] Sulfur Falls
+SB: 2 [RTR:201] Supreme Verdict
+SB: 2 [M13:150] Thundermaw Hellkite
+SB: 2 [C14:278] Tormod's Crypt
+SB: 1 [AVR:149] Pillar of Flame
+SB: 1 [RTR:47] Psychic Spiral
+SB: 4 [ISD:213] Geist of Saint Traft
+SB: 1 [M14:60] Jace, Memory Adept
+SB: 2 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Cobra Valakut TDtB ST Apr 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Cobra Valakut TDtB ST Apr 2011.mwDeck.dck
new file mode 100644
index 0000000000..a506899b5d
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Cobra Valakut TDtB ST Apr 2011.mwDeck.dck
@@ -0,0 +1,22 @@
+5 [UNH:140] Forest
+3 [ZEN:220] Misty Rainforest
+4 [ROE:203] Overgrown Battlement
+3 [ZEN:167] Khalni Heart Expedition
+2 [MBS:81] Green Sun's Zenith
+4 [M12:188] Primeval Titan
+3 [C14:315] Terramorphic Expanse
+4 [ZEN:184] Summoning Trap
+1 [C13:302] Khalni Garden
+11 [UNH:139] Mountain
+3 [C13:114] Inferno Titan
+4 [ZEN:228] Valakut, the Molten Pinnacle
+4 [ZEN:168] Lotus Cobra
+4 [C14:199] Harrow
+1 [C14:295] Evolving Wilds
+4 [WWK:99] Explore
+SB: 2 [C13:134] Acidic Slime
+SB: 3 [CNS:171] Nature's Claim
+SB: 2 [KTK:95] Act of Treason
+SB: 3 [M11:188] Obstinate Baloth
+SB: 1 [MBS:81] Green Sun's Zenith
+SB: 4 [M11:154] Pyroclasm
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Darkblade TDtB ST Jun 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Darkblade TDtB ST Jun 2011.mwDeck.dck
new file mode 100644
index 0000000000..b5c8557722
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Darkblade TDtB ST Jun 2011.mwDeck.dck
@@ -0,0 +1,31 @@
+3 [MBS:43] Go for the Throat
+1 [NPH:161] Sword of War and Peace
+4 [WWK:134] Creeping Tar Pit
+3 [M13:225] Glacial Fortress
+1 [NPH:130] Batterskull
+2 [ZEN:211] Arid Mesa
+4 [ROE:115] Inquisition of Kozilek
+1 [KTK:69] Despise
+1 [C14:115] Into the Roil
+4 [M11:70] Preordain
+4 [ZEN:219] Marsh Flats
+1 [MBS:138] Sword of Feast and Famine
+4 [SOM:229] Seachrome Coast
+2 [ZEN:11] Emeria Angel
+4 [M11:33] Squadron Hawk
+4 [SOM:226] Darkslick Shores
+1 [M14:97] Duress
+4 [WWK:20] Stoneforge Mystic
+4 [WWK:31] Jace, the Mind Sculptor
+4 [UNH:136] Plains
+2 [UNH:138] Swamp
+2 [M12:63] Mana Leak
+SB: 3 [MBS:5] Divine Offering
+SB: 2 [NPH:74] Surgical Extraction
+SB: 1 [C13:97] Vampire Nighthawk
+SB: 1 [ZEN:11] Emeria Angel
+SB: 1 [NPH:57] Dismember
+SB: 1 [M14:97] Duress
+SB: 1 [NPH:130] Batterskull
+SB: 3 [NPH:159] Spellskite
+SB: 2 [M12:52] Flashfreeze
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Delver Blade TDtB ST Jan 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Delver Blade TDtB ST Jan 2012.mwDeck.dck
new file mode 100644
index 0000000000..6569d1f9c4
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Delver Blade TDtB ST Jan 2012.mwDeck.dck
@@ -0,0 +1,27 @@
+4 [NPH:161] Sword of War and Peace
+4 [M13:225] Glacial Fortress
+4 [ISD:78] Snapcaster Mage
+2 [NPH:86] Gut Shot
+2 [ISD:231] Runechanter's Pike
+4 [SOM:229] Seachrome Coast
+3 [NPH:35] Gitaxian Probe
+2 [M12:65] Merfolk Looter
+3 [ISD:213] Geist of Saint Traft
+2 [C14:80] Midnight Haunting
+4 [NPH:48] Vapor Snag
+3 [ISD:244] Moorland Haunt
+1 [UNH:136] Plains
+4 [ISD:51] Delver of Secrets
+9 [UNH:137] Island
+4 [M12:73] Ponder
+3 [ISD:60] Invisible Stalker
+4 [M12:63] Mana Leak
+SB: 2 [MBS:5] Divine Offering
+SB: 1 [NPH:86] Gut Shot
+SB: 2 [M14:215] Ratchet Bomb
+SB: 1 [M15:51] Dissipate
+SB: 1 [M12:11] Celestial Purge
+SB: 2 [M13:22] Oblivion Ring
+SB: 2 [M12:72] Phantasmal Image
+SB: 2 [M12:40] Timely Reinforcements
+SB: 2 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Black TDtB ST Apr 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Black TDtB ST Apr 2014.mwDeck.dck
new file mode 100644
index 0000000000..6688b64a1a
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Black TDtB ST Apr 2014.mwDeck.dck
@@ -0,0 +1,21 @@
+1 [RTR:82] Ultimate Price
+4 [RTR:83] Underworld Connections
+1 [THS:225] Temple of Deceit
+4 [RTR:73] Pack Rat
+4 [RTR:63] Desecration Demon
+1 [THS:227] Temple of Silence
+4 [THS:107] Thoughtseize
+1 [BNG:61] Bile Blight
+4 [C14:146] Gray Merchant of Asphodel
+4 [M14:101] Lifebane Zombie
+4 [THS:90] Hero's Downfall
+4 [M14:228] Mutavault
+1 [M14:97] Duress
+4 [GTC:63] Devour Flesh
+19 [UNH:138] Swamp
+SB: 4 [M15:232] Staff of the Death Magus
+SB: 1 [BNG:61] Bile Blight
+SB: 2 [C14:158] Read the Bones
+SB: 3 [M14:96] Doom Blade
+SB: 3 [M14:97] Duress
+SB: 2 [THS:85] Erebos, God of the Dead
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Black TDtB ST Dec 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Black TDtB ST Dec 2013.mwDeck.dck
new file mode 100644
index 0000000000..095418fea5
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Black TDtB ST Dec 2013.mwDeck.dck
@@ -0,0 +1,21 @@
+2 [RTR:82] Ultimate Price
+4 [RTR:83] Underworld Connections
+3 [THS:225] Temple of Deceit
+4 [RTR:73] Pack Rat
+4 [RTR:63] Desecration Demon
+4 [THS:107] Thoughtseize
+4 [C14:146] Gray Merchant of Asphodel
+4 [THS:90] Hero's Downfall
+4 [M14:228] Mutavault
+1 [M14:96] Doom Blade
+4 [GTC:222] Nightveil Specter
+2 [GTC:63] Devour Flesh
+1 [THS:85] Erebos, God of the Dead
+19 [UNH:138] Swamp
+SB: 3 [M14:101] Lifebane Zombie
+SB: 2 [THS:100] Pharika's Cure
+SB: 1 [M14:116] Shrivel
+SB: 2 [M14:96] Doom Blade
+SB: 3 [M14:97] Duress
+SB: 3 [THS:83] Dark Betrayal
+SB: 1 [THS:85] Erebos, God of the Dead
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Black TDtB ST Feb 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Black TDtB ST Feb 2014.mwDeck.dck
new file mode 100644
index 0000000000..e9ddb6bebd
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Black TDtB ST Feb 2014.mwDeck.dck
@@ -0,0 +1,19 @@
+1 [RTR:82] Ultimate Price
+4 [RTR:83] Underworld Connections
+4 [THS:225] Temple of Deceit
+4 [RTR:73] Pack Rat
+4 [RTR:63] Desecration Demon
+4 [THS:107] Thoughtseize
+3 [BNG:61] Bile Blight
+4 [C14:146] Gray Merchant of Asphodel
+4 [THS:90] Hero's Downfall
+4 [M14:228] Mutavault
+4 [GTC:222] Nightveil Specter
+2 [GTC:63] Devour Flesh
+18 [UNH:138] Swamp
+SB: 3 [M14:101] Lifebane Zombie
+SB: 2 [M14:96] Doom Blade
+SB: 4 [M14:97] Duress
+SB: 2 [THS:83] Dark Betrayal
+SB: 2 [BNG:65] Drown in Sorrow
+SB: 2 [THS:85] Erebos, God of the Dead
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Black TDtB ST Jan 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Black TDtB ST Jan 2014.mwDeck.dck
new file mode 100644
index 0000000000..2df4cd1151
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Black TDtB ST Jan 2014.mwDeck.dck
@@ -0,0 +1,20 @@
+1 [RTR:82] Ultimate Price
+4 [RTR:83] Underworld Connections
+3 [THS:225] Temple of Deceit
+4 [RTR:73] Pack Rat
+2 [THS:100] Pharika's Cure
+4 [RTR:63] Desecration Demon
+1 [THS:227] Temple of Silence
+4 [THS:107] Thoughtseize
+4 [C14:146] Gray Merchant of Asphodel
+4 [THS:90] Hero's Downfall
+4 [M14:228] Mutavault
+4 [GTC:222] Nightveil Specter
+3 [GTC:63] Devour Flesh
+18 [UNH:138] Swamp
+SB: 3 [M14:101] Lifebane Zombie
+SB: 2 [THS:100] Pharika's Cure
+SB: 2 [M14:96] Doom Blade
+SB: 3 [M14:97] Duress
+SB: 3 [THS:83] Dark Betrayal
+SB: 2 [THS:85] Erebos, God of the Dead
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Black TDtB ST Jul 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Black TDtB ST Jul 2014.mwDeck.dck
new file mode 100644
index 0000000000..6220223704
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Black TDtB ST Jul 2014.mwDeck.dck
@@ -0,0 +1,23 @@
+1 [RTR:82] Ultimate Price
+3 [RTR:83] Underworld Connections
+2 [THS:225] Temple of Deceit
+4 [RTR:73] Pack Rat
+4 [RTR:63] Desecration Demon
+4 [THS:107] Thoughtseize
+3 [BNG:61] Bile Blight
+4 [C14:146] Gray Merchant of Asphodel
+1 [M15:248] Urborg, Tomb of Yawgmoth
+4 [THS:90] Hero's Downfall
+4 [M14:228] Mutavault
+2 [C14:161] Sign in Blood
+4 [GTC:222] Nightveil Specter
+2 [GTC:63] Devour Flesh
+18 [UNH:138] Swamp
+SB: 1 [RTR:82] Ultimate Price
+SB: 1 [RTR:83] Underworld Connections
+SB: 3 [M14:101] Lifebane Zombie
+SB: 1 [M15:103] Liliana Vess
+SB: 2 [THS:100] Pharika's Cure
+SB: 2 [M14:96] Doom Blade
+SB: 4 [M14:97] Duress
+SB: 1 [THS:85] Erebos, God of the Dead
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Black TDtB ST Jun 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Black TDtB ST Jun 2014.mwDeck.dck
new file mode 100644
index 0000000000..f8114ec83b
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Black TDtB ST Jun 2014.mwDeck.dck
@@ -0,0 +1,19 @@
+1 [BNG:61] Bile Blight
+1 [RTR:82] Ultimate Price
+4 [RTR:83] Underworld Connections
+4 [C14:146] Gray Merchant of Asphodel
+4 [M14:101] Lifebane Zombie
+4 [RTR:73] Pack Rat
+4 [RTR:63] Desecration Demon
+4 [THS:90] Hero's Downfall
+4 [M14:228] Mutavault
+4 [GTC:63] Devour Flesh
+4 [THS:107] Thoughtseize
+22 [UNH:138] Swamp
+SB: 1 [BNG:61] Bile Blight
+SB: 1 [C14:158] Read the Bones
+SB: 1 [RTR:231] Pithing Needle
+SB: 4 [M14:96] Doom Blade
+SB: 4 [M14:97] Duress
+SB: 2 [THS:83] Dark Betrayal
+SB: 2 [THS:85] Erebos, God of the Dead
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Black TDtB ST Nov 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Black TDtB ST Nov 2013.mwDeck.dck
new file mode 100644
index 0000000000..592d047014
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Black TDtB ST Nov 2013.mwDeck.dck
@@ -0,0 +1,17 @@
+4 [RTR:83] Underworld Connections
+4 [C14:146] Gray Merchant of Asphodel
+2 [THS:110] Whip of Erebos
+3 [RTR:73] Pack Rat
+4 [THS:100] Pharika's Cure
+4 [RTR:63] Desecration Demon
+4 [THS:90] Hero's Downfall
+4 [M14:228] Mutavault
+4 [GTC:222] Nightveil Specter
+2 [THS:85] Erebos, God of the Dead
+4 [THS:107] Thoughtseize
+21 [UNH:138] Swamp
+SB: 3 [RTR:82] Ultimate Price
+SB: 4 [M14:215] Ratchet Bomb
+SB: 1 [RTR:73] Pack Rat
+SB: 3 [M14:97] Duress
+SB: 4 [M14:98] Festering Newt
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Black TDtB ST Oct 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Black TDtB ST Oct 2013.mwDeck.dck
new file mode 100644
index 0000000000..f2523f433e
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Black TDtB ST Oct 2013.mwDeck.dck
@@ -0,0 +1,21 @@
+1 [THS:223] Nykthos, Shrine to Nyx
+4 [RTR:83] Underworld Connections
+2 [THS:110] Whip of Erebos
+2 [RTR:73] Pack Rat
+4 [RTR:63] Desecration Demon
+4 [THS:227] Temple of Silence
+4 [THS:107] Thoughtseize
+4 [C14:146] Gray Merchant of Asphodel
+4 [M14:101] Lifebane Zombie
+4 [THS:90] Hero's Downfall
+4 [M14:228] Mutavault
+4 [M14:96] Doom Blade
+2 [GTC:63] Devour Flesh
+1 [THS:85] Erebos, God of the Dead
+16 [UNH:138] Swamp
+SB: 4 [M14:123] Xathrid Necromancer
+SB: 1 [RTR:231] Pithing Needle
+SB: 4 [THS:100] Pharika's Cure
+SB: 4 [M14:97] Duress
+SB: 1 [GTC:63] Devour Flesh
+SB: 1 [THS:85] Erebos, God of the Dead
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Blue TDtB ST Apr 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Blue TDtB ST Apr 2014.mwDeck.dck
new file mode 100644
index 0000000000..5ffc130cef
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Blue TDtB ST Apr 2014.mwDeck.dck
@@ -0,0 +1,23 @@
+1 [THS:223] Nykthos, Shrine to Nyx
+1 [C14:104] Cyclonic Rift
+4 [RTR:215] Frostburn Weird
+4 [M14:228] Mutavault
+4 [M14:73] Tidebinder Mage
+3 [GTC:44] Rapid Hybridization
+4 [GTC:32] Cloudfin Raptor
+4 [RTR:218] Judge's Familiar
+1 [M14:53] Domestication
+4 [GTC:222] Nightveil Specter
+4 [THS:53] Master of Waves
+2 [THS:42] Bident of Thassa
+20 [UNH:137] Island
+4 [THS:66] Thassa, God of the Sea
+SB: 1 [C14:104] Cyclonic Rift
+SB: 2 [THS:47] Dissolve
+SB: 3 [THS:49] Gainsay
+SB: 1 [GTC:44] Rapid Hybridization
+SB: 2 [RTR:36] Dispel
+SB: 1 [M14:53] Domestication
+SB: 1 [RTR:44] Jace, Architect of Thought
+SB: 2 [M14:60] Jace, Memory Adept
+SB: 2 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Blue TDtB ST Aug 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Blue TDtB ST Aug 2014.mwDeck.dck
new file mode 100644
index 0000000000..5c4037a895
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Blue TDtB ST Aug 2014.mwDeck.dck
@@ -0,0 +1,23 @@
+1 [THS:223] Nykthos, Shrine to Nyx
+1 [C14:104] Cyclonic Rift
+4 [RTR:215] Frostburn Weird
+4 [M14:228] Mutavault
+4 [M14:73] Tidebinder Mage
+3 [GTC:44] Rapid Hybridization
+4 [GTC:32] Cloudfin Raptor
+4 [RTR:218] Judge's Familiar
+1 [JOU:162] Hall of Triumph
+4 [GTC:222] Nightveil Specter
+4 [THS:53] Master of Waves
+2 [THS:42] Bident of Thassa
+20 [UNH:137] Island
+4 [THS:66] Thassa, God of the Sea
+SB: 1 [C14:104] Cyclonic Rift
+SB: 2 [THS:47] Dissolve
+SB: 3 [THS:49] Gainsay
+SB: 1 [DGM:11] AEtherling
+SB: 1 [RTR:36] Dispel
+SB: 2 [M14:53] Domestication
+SB: 2 [RTR:44] Jace, Architect of Thought
+SB: 1 [M15:75] Polymorphist's Jest
+SB: 2 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Blue TDtB ST Dec 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Blue TDtB ST Dec 2013.mwDeck.dck
new file mode 100644
index 0000000000..3a8e3daf93
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Blue TDtB ST Dec 2013.mwDeck.dck
@@ -0,0 +1,23 @@
+1 [THS:223] Nykthos, Shrine to Nyx
+2 [C14:104] Cyclonic Rift
+4 [RTR:215] Frostburn Weird
+4 [M14:228] Mutavault
+4 [M14:73] Tidebinder Mage
+1 [GTC:44] Rapid Hybridization
+4 [GTC:32] Cloudfin Raptor
+4 [RTR:218] Judge's Familiar
+2 [RTR:44] Jace, Architect of Thought
+4 [GTC:222] Nightveil Specter
+4 [THS:53] Master of Waves
+2 [THS:42] Bident of Thassa
+20 [UNH:137] Island
+4 [THS:66] Thassa, God of the Sea
+SB: 1 [C14:104] Cyclonic Rift
+SB: 1 [THS:46] Curse of the Swine
+SB: 4 [THS:49] Gainsay
+SB: 1 [DGM:11] AEtherling
+SB: 2 [GTC:44] Rapid Hybridization
+SB: 1 [RTR:44] Jace, Architect of Thought
+SB: 3 [M14:53] Domestication
+SB: 1 [THS:42] Bident of Thassa
+SB: 1 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Blue TDtB ST Feb 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Blue TDtB ST Feb 2014.mwDeck.dck
new file mode 100644
index 0000000000..ebc2ac9a9e
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Blue TDtB ST Feb 2014.mwDeck.dck
@@ -0,0 +1,24 @@
+1 [THS:223] Nykthos, Shrine to Nyx
+4 [RTR:215] Frostburn Weird
+4 [M14:228] Mutavault
+4 [M14:73] Tidebinder Mage
+1 [GTC:44] Rapid Hybridization
+4 [GTC:32] Cloudfin Raptor
+4 [RTR:218] Judge's Familiar
+2 [RTR:44] Jace, Architect of Thought
+2 [M14:53] Domestication
+4 [GTC:222] Nightveil Specter
+4 [THS:53] Master of Waves
+2 [THS:42] Bident of Thassa
+20 [UNH:137] Island
+4 [THS:66] Thassa, God of the Sea
+SB: 2 [C14:104] Cyclonic Rift
+SB: 1 [THS:47] Dissolve
+SB: 3 [THS:49] Gainsay
+SB: 1 [DGM:11] AEtherling
+SB: 1 [GTC:44] Rapid Hybridization
+SB: 1 [RTR:36] Dispel
+SB: 2 [M14:53] Domestication
+SB: 1 [THS:42] Bident of Thassa
+SB: 1 [M14:60] Jace, Memory Adept
+SB: 2 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Blue TDtB ST Jan 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Blue TDtB ST Jan 2014.mwDeck.dck
new file mode 100644
index 0000000000..4a725d1414
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Blue TDtB ST Jan 2014.mwDeck.dck
@@ -0,0 +1,25 @@
+1 [THS:223] Nykthos, Shrine to Nyx
+1 [C14:104] Cyclonic Rift
+4 [RTR:215] Frostburn Weird
+4 [M14:228] Mutavault
+4 [M14:73] Tidebinder Mage
+1 [GTC:44] Rapid Hybridization
+4 [GTC:32] Cloudfin Raptor
+4 [RTR:218] Judge's Familiar
+2 [RTR:44] Jace, Architect of Thought
+1 [M14:53] Domestication
+4 [GTC:222] Nightveil Specter
+4 [THS:53] Master of Waves
+2 [THS:42] Bident of Thassa
+20 [UNH:137] Island
+4 [THS:66] Thassa, God of the Sea
+SB: 1 [C14:104] Cyclonic Rift
+SB: 1 [THS:46] Curse of the Swine
+SB: 2 [THS:47] Dissolve
+SB: 4 [THS:49] Gainsay
+SB: 2 [GTC:44] Rapid Hybridization
+SB: 1 [RTR:36] Dispel
+SB: 1 [RTR:44] Jace, Architect of Thought
+SB: 1 [M14:53] Domestication
+SB: 1 [THS:42] Bident of Thassa
+SB: 1 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Blue TDtB ST Jul 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Blue TDtB ST Jul 2014.mwDeck.dck
new file mode 100644
index 0000000000..33d00defc0
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Blue TDtB ST Jul 2014.mwDeck.dck
@@ -0,0 +1,25 @@
+1 [THS:223] Nykthos, Shrine to Nyx
+1 [C14:104] Cyclonic Rift
+4 [RTR:215] Frostburn Weird
+4 [M14:228] Mutavault
+4 [M14:73] Tidebinder Mage
+2 [GTC:44] Rapid Hybridization
+4 [GTC:32] Cloudfin Raptor
+4 [RTR:218] Judge's Familiar
+2 [M14:53] Domestication
+4 [GTC:222] Nightveil Specter
+4 [THS:53] Master of Waves
+2 [THS:42] Bident of Thassa
+20 [UNH:137] Island
+4 [THS:66] Thassa, God of the Sea
+SB: 2 [THS:47] Dissolve
+SB: 1 [THS:38] Annul
+SB: 4 [THS:49] Gainsay
+SB: 1 [DGM:11] AEtherling
+SB: 1 [GTC:44] Rapid Hybridization
+SB: 1 [RTR:36] Dispel
+SB: 1 [M14:53] Domestication
+SB: 1 [RTR:44] Jace, Architect of Thought
+SB: 1 [RTR:45] Mizzium Skin
+SB: 1 [M15:75] Polymorphist's Jest
+SB: 1 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Blue TDtB ST Jun 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Blue TDtB ST Jun 2014.mwDeck.dck
new file mode 100644
index 0000000000..3bb0b6321d
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Blue TDtB ST Jun 2014.mwDeck.dck
@@ -0,0 +1,25 @@
+1 [THS:223] Nykthos, Shrine to Nyx
+4 [RTR:215] Frostburn Weird
+4 [M14:228] Mutavault
+4 [M14:73] Tidebinder Mage
+1 [GTC:44] Rapid Hybridization
+4 [GTC:32] Cloudfin Raptor
+4 [RTR:218] Judge's Familiar
+1 [RTR:44] Jace, Architect of Thought
+3 [JOU:162] Hall of Triumph
+4 [GTC:222] Nightveil Specter
+4 [THS:53] Master of Waves
+2 [THS:42] Bident of Thassa
+20 [UNH:137] Island
+4 [THS:66] Thassa, God of the Sea
+SB: 2 [C14:104] Cyclonic Rift
+SB: 1 [THS:223] Nykthos, Shrine to Nyx
+SB: 1 [THS:47] Dissolve
+SB: 2 [THS:49] Gainsay
+SB: 2 [DGM:11] AEtherling
+SB: 1 [RTR:36] Dispel
+SB: 1 [GTC:44] Rapid Hybridization
+SB: 1 [M14:53] Domestication
+SB: 2 [RTR:44] Jace, Architect of Thought
+SB: 1 [THS:42] Bident of Thassa
+SB: 1 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Blue TDtB ST Mar 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Blue TDtB ST Mar 2014.mwDeck.dck
new file mode 100644
index 0000000000..87b9f501c3
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Blue TDtB ST Mar 2014.mwDeck.dck
@@ -0,0 +1,20 @@
+1 [THS:223] Nykthos, Shrine to Nyx
+2 [C14:104] Cyclonic Rift
+4 [RTR:215] Frostburn Weird
+4 [M14:228] Mutavault
+4 [M14:73] Tidebinder Mage
+3 [GTC:44] Rapid Hybridization
+4 [GTC:32] Cloudfin Raptor
+4 [RTR:218] Judge's Familiar
+4 [GTC:222] Nightveil Specter
+4 [THS:53] Master of Waves
+2 [THS:42] Bident of Thassa
+20 [UNH:137] Island
+4 [THS:66] Thassa, God of the Sea
+SB: 3 [THS:47] Dissolve
+SB: 3 [THS:49] Gainsay
+SB: 1 [DGM:11] AEtherling
+SB: 2 [M14:46] Claustrophobia
+SB: 3 [M14:53] Domestication
+SB: 2 [RTR:44] Jace, Architect of Thought
+SB: 1 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Blue TDtB ST May 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Blue TDtB ST May 2014.mwDeck.dck
new file mode 100644
index 0000000000..ae1cbf3049
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Blue TDtB ST May 2014.mwDeck.dck
@@ -0,0 +1,25 @@
+1 [THS:223] Nykthos, Shrine to Nyx
+1 [C14:104] Cyclonic Rift
+4 [RTR:215] Frostburn Weird
+4 [M14:228] Mutavault
+4 [M14:73] Tidebinder Mage
+1 [JOU:42] Hypnotic Siren
+1 [GTC:44] Rapid Hybridization
+3 [RTR:218] Judge's Familiar
+4 [GTC:32] Cloudfin Raptor
+2 [JOU:162] Hall of Triumph
+1 [M14:53] Domestication
+4 [GTC:222] Nightveil Specter
+4 [THS:53] Master of Waves
+2 [THS:42] Bident of Thassa
+20 [UNH:137] Island
+4 [THS:66] Thassa, God of the Sea
+SB: 1 [C14:104] Cyclonic Rift
+SB: 1 [THS:47] Dissolve
+SB: 1 [RTR:231] Pithing Needle
+SB: 2 [THS:49] Gainsay
+SB: 2 [DGM:11] AEtherling
+SB: 2 [GTC:44] Rapid Hybridization
+SB: 2 [RTR:36] Dispel
+SB: 2 [M14:53] Domestication
+SB: 2 [M14:60] Jace, Memory Adept
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Blue TDtB ST Nov 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Blue TDtB ST Nov 2013.mwDeck.dck
new file mode 100644
index 0000000000..e1179110f0
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Blue TDtB ST Nov 2013.mwDeck.dck
@@ -0,0 +1,25 @@
+1 [THS:223] Nykthos, Shrine to Nyx
+2 [C14:104] Cyclonic Rift
+4 [RTR:215] Frostburn Weird
+4 [M14:228] Mutavault
+4 [M14:73] Tidebinder Mage
+1 [GTC:44] Rapid Hybridization
+4 [GTC:32] Cloudfin Raptor
+4 [RTR:218] Judge's Familiar
+1 [RTR:44] Jace, Architect of Thought
+1 [M14:53] Domestication
+4 [GTC:222] Nightveil Specter
+4 [THS:53] Master of Waves
+2 [THS:42] Bident of Thassa
+20 [UNH:137] Island
+4 [THS:66] Thassa, God of the Sea
+SB: 1 [THS:46] Curse of the Swine
+SB: 1 [C14:104] Cyclonic Rift
+SB: 1 [THS:47] Dissolve
+SB: 4 [THS:49] Gainsay
+SB: 2 [GTC:44] Rapid Hybridization
+SB: 1 [RTR:44] Jace, Architect of Thought
+SB: 1 [M14:53] Domestication
+SB: 1 [THS:42] Bident of Thassa
+SB: 2 [M14:60] Jace, Memory Adept
+SB: 1 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Blue TDtB ST Oct 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Blue TDtB ST Oct 2013.mwDeck.dck
new file mode 100644
index 0000000000..3bf028754a
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Blue TDtB ST Oct 2013.mwDeck.dck
@@ -0,0 +1,22 @@
+2 [THS:57] Omenspeaker
+2 [C14:104] Cyclonic Rift
+4 [RTR:215] Frostburn Weird
+3 [M14:228] Mutavault
+4 [M14:73] Tidebinder Mage
+1 [M14:51] Disperse
+4 [GTC:32] Cloudfin Raptor
+4 [RTR:218] Judge's Familiar
+2 [RTR:44] Jace, Architect of Thought
+4 [GTC:222] Nightveil Specter
+4 [THS:53] Master of Waves
+1 [THS:42] Bident of Thassa
+21 [UNH:137] Island
+4 [THS:66] Thassa, God of the Sea
+SB: 1 [RTR:231] Pithing Needle
+SB: 2 [DGM:11] AEtherling
+SB: 2 [M14:215] Ratchet Bomb
+SB: 1 [M14:228] Mutavault
+SB: 1 [THS:71] Triton Tactics
+SB: 3 [M15:83] Wall of Frost
+SB: 2 [RTR:44] Jace, Architect of Thought
+SB: 3 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Boros TDtB ST Jan 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Boros TDtB ST Jan 2014.mwDeck.dck
new file mode 100644
index 0000000000..ba49079ea0
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Boros TDtB ST Jan 2014.mwDeck.dck
@@ -0,0 +1,23 @@
+4 [THS:223] Nykthos, Shrine to Nyx
+3 [THS:124] Hammer of Purphoros
+4 [RTR:86] Ash Zealot
+4 [THS:121] Fanatic of Mogis
+4 [THS:143] Stormbreath Dragon
+4 [GTC:216] Burning-Tree Emissary
+4 [GTC:215] Boros Reckoner
+4 [THS:228] Temple of Triumph
+12 [UNH:139] Mountain
+2 [M15:134] Chandra, Pyromaster
+3 [RTR:101] Mizzium Mortars
+3 [THS:4] Chained to the Rocks
+4 [RTR:215] Frostburn Weird
+1 [C13:280] Boros Guildgate
+4 [GTC:245] Sacred Foundry
+SB: 1 [THS:135] Purphoros, God of the Forge
+SB: 1 [RTR:101] Mizzium Mortars
+SB: 3 [C13:179] Boros Charm
+SB: 1 [THS:4] Chained to the Rocks
+SB: 4 [THS:112] Anger of the Gods
+SB: 2 [DGM:135] Wear // Tear
+SB: 1 [THS:9] Elspeth, Sun's Champion
+SB: 2 [GTC:142] Assemble the Legion
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Dimir TDtB ST Mar 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Dimir TDtB ST Mar 2014.mwDeck.dck
new file mode 100644
index 0000000000..ceeca050b0
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Dimir TDtB ST Mar 2014.mwDeck.dck
@@ -0,0 +1,20 @@
+4 [RTR:83] Underworld Connections
+4 [THS:225] Temple of Deceit
+2 [GTC:249] Watery Grave
+4 [RTR:73] Pack Rat
+4 [RTR:63] Desecration Demon
+4 [THS:107] Thoughtseize
+2 [BNG:61] Bile Blight
+4 [C14:146] Gray Merchant of Asphodel
+4 [THS:90] Hero's Downfall
+4 [M14:228] Mutavault
+4 [GTC:222] Nightveil Specter
+4 [GTC:63] Devour Flesh
+16 [UNH:138] Swamp
+SB: 4 [M14:101] Lifebane Zombie
+SB: 1 [DGM:88] Notion Thief
+SB: 2 [M14:96] Doom Blade
+SB: 4 [M14:97] Duress
+SB: 1 [THS:83] Dark Betrayal
+SB: 1 [BNG:65] Drown in Sorrow
+SB: 2 [THS:85] Erebos, God of the Dead
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Golgari TDtB ST Aug 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Golgari TDtB ST Aug 2014.mwDeck.dck
new file mode 100644
index 0000000000..b64425f1a5
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Golgari TDtB ST Aug 2014.mwDeck.dck
@@ -0,0 +1,25 @@
+1 [RTR:82] Ultimate Price
+3 [RTR:83] Underworld Connections
+1 [UNH:140] Forest
+4 [RTR:73] Pack Rat
+4 [JOU:165] Temple of Malady
+4 [RTR:63] Desecration Demon
+3 [RTR:141] Abrupt Decay
+4 [THS:107] Thoughtseize
+2 [BNG:61] Bile Blight
+4 [M15:244] Llanowar Wastes
+4 [RTR:243] Overgrown Tomb
+4 [C14:146] Gray Merchant of Asphodel
+4 [M14:101] Lifebane Zombie
+2 [M15:248] Urborg, Tomb of Yawgmoth
+4 [THS:90] Hero's Downfall
+4 [M14:228] Mutavault
+2 [C14:161] Sign in Blood
+6 [UNH:138] Swamp
+SB: 1 [RTR:83] Underworld Connections
+SB: 2 [M14:96] Doom Blade
+SB: 4 [M14:97] Duress
+SB: 2 [RTR:164] Golgari Charm
+SB: 2 [BNG:65] Drown in Sorrow
+SB: 3 [M14:195] Scavenging Ooze
+SB: 1 [M15:187] Nissa, Worldwaker
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Golgari TDtB ST May 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Golgari TDtB ST May 2014.mwDeck.dck
new file mode 100644
index 0000000000..33fb10e79a
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Golgari TDtB ST May 2014.mwDeck.dck
@@ -0,0 +1,25 @@
+3 [RTR:83] Underworld Connections
+2 [THS:225] Temple of Deceit
+4 [RTR:73] Pack Rat
+4 [JOU:165] Temple of Malady
+4 [RTR:63] Desecration Demon
+2 [RTR:141] Abrupt Decay
+4 [THS:107] Thoughtseize
+2 [BNG:61] Bile Blight
+4 [RTR:243] Overgrown Tomb
+3 [M14:101] Lifebane Zombie
+4 [C14:146] Gray Merchant of Asphodel
+3 [THS:90] Hero's Downfall
+4 [M14:228] Mutavault
+3 [GTC:222] Nightveil Specter
+3 [GTC:63] Devour Flesh
+11 [UNH:138] Swamp
+SB: 1 [RTR:83] Underworld Connections
+SB: 1 [M14:101] Lifebane Zombie
+SB: 2 [THS:100] Pharika's Cure
+SB: 1 [RTR:208] Vraska the Unseen
+SB: 2 [M14:96] Doom Blade
+SB: 3 [M14:97] Duress
+SB: 1 [GTC:63] Devour Flesh
+SB: 2 [RTR:164] Golgari Charm
+SB: 2 [THS:85] Erebos, God of the Dead
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Golgari TDtB ST Nov 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Golgari TDtB ST Nov 2014.mwDeck.dck
new file mode 100644
index 0000000000..f500aa6019
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Golgari TDtB ST Nov 2014.mwDeck.dck
@@ -0,0 +1,24 @@
+4 [THS:223] Nykthos, Shrine to Nyx
+1 [THS:110] Whip of Erebos
+9 [UNH:140] Forest
+1 [THS:166] Nylea, God of the Hunt
+3 [JOU:122] Eidolon of Blossoms
+4 [JOU:165] Temple of Malady
+1 [JOU:154] Pharika, God of Affliction
+4 [JOU:66] Doomwake Giant
+4 [M15:176] Genesis Hydra
+4 [M15:244] Llanowar Wastes
+2 [M15:178] Hornet Queen
+4 [BNG:119] Courser of Kruphix
+1 [M15:248] Urborg, Tomb of Yawgmoth
+4 [THS:182] Voyaging Satyr
+1 [THS:150] Arbor Colossus
+4 [THS:172] Polukranos, World Eater
+4 [C14:191] Elvish Mystic
+4 [THS:180] Sylvan Caryatid
+1 [UNH:138] Swamp
+SB: 1 [M15:210] Garruk, Apex Predator
+SB: 4 [THS:167] Nylea's Disciple
+SB: 3 [JOU:140] Setessan Tactics
+SB: 3 [THS:162] Mistcutter Hydra
+SB: 4 [THS:107] Thoughtseize
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Green TDtB ST Aug 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Green TDtB ST Aug 2014.mwDeck.dck
new file mode 100644
index 0000000000..2bb1657d96
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Green TDtB ST Aug 2014.mwDeck.dck
@@ -0,0 +1,22 @@
+4 [THS:223] Nykthos, Shrine to Nyx
+19 [UNH:140] Forest
+1 [THS:166] Nylea, God of the Hunt
+4 [GTC:216] Burning-Tree Emissary
+4 [JOU:122] Eidolon of Blossoms
+3 [M15:172] Chord of Calling
+3 [M14:172] Garruk, Caller of Beasts
+2 [M15:187] Nissa, Worldwaker
+1 [M15:178] Hornet Queen
+4 [BNG:119] Courser of Kruphix
+1 [GTC:136] Sylvan Primordial
+4 [THS:182] Voyaging Satyr
+4 [THS:172] Polukranos, World Eater
+4 [C14:191] Elvish Mystic
+2 [THS:180] Sylvan Caryatid
+SB: 1 [M15:178] Hornet Queen
+SB: 3 [THS:167] Nylea's Disciple
+SB: 1 [GTC:136] Sylvan Primordial
+SB: 2 [THS:150] Arbor Colossus
+SB: 3 [THS:162] Mistcutter Hydra
+SB: 4 [JOU:140] Setessan Tactics
+SB: 1 [M14:195] Scavenging Ooze
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Green TDtB ST Feb 2015.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Green TDtB ST Feb 2015.mwDeck.dck
new file mode 100644
index 0000000000..0e0e10a7a3
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Green TDtB ST Feb 2015.mwDeck.dck
@@ -0,0 +1,23 @@
+4 [THS:223] Nykthos, Shrine to Nyx
+4 [THS:224] Temple of Abandon
+10 [UNH:140] Forest
+4 [JOU:122] Eidolon of Blossoms
+4 [KTK:249] Wooded Foothills
+4 [KTK:106] Crater's Claws
+2 [M15:176] Genesis Hydra
+4 [FRF:145] Whisperwood Elemental
+1 [UNH:139] Mountain
+4 [BNG:119] Courser of Kruphix
+2 [FRF:1] Ugin, the Spirit Dragon
+4 [THS:182] Voyaging Satyr
+4 [THS:172] Polukranos, World Eater
+1 [THS:152] Boon Satyr
+4 [C14:191] Elvish Mystic
+4 [THS:180] Sylvan Caryatid
+SB: 2 [C14:213] Reclamation Sage
+SB: 3 [THS:167] Nylea's Disciple
+SB: 2 [THS:150] Arbor Colossus
+SB: 2 [JOU:140] Setessan Tactics
+SB: 1 [BNG:156] Xenagos, God of Revels
+SB: 2 [M15:176] Genesis Hydra
+SB: 3 [M15:187] Nissa, Worldwaker
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Green TDtB ST Oct 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Green TDtB ST Oct 2013.mwDeck.dck
new file mode 100644
index 0000000000..e25614f212
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Green TDtB ST Oct 2013.mwDeck.dck
@@ -0,0 +1,25 @@
+4 [THS:223] Nykthos, Shrine to Nyx
+4 [THS:224] Temple of Abandon
+9 [UNH:140] Forest
+2 [THS:166] Nylea, God of the Hunt
+4 [GTC:216] Burning-Tree Emissary
+2 [THS:209] Xenagos, the Reveler
+4 [M14:172] Garruk, Caller of Beasts
+3 [M14:195] Scavenging Ooze
+2 [UNH:139] Mountain
+4 [GTC:247] Stomping Ground
+4 [THS:182] Voyaging Satyr
+3 [THS:150] Arbor Colossus
+4 [THS:172] Polukranos, World Eater
+3 [GTC:156] Domri Rade
+4 [C14:191] Elvish Mystic
+4 [THS:180] Sylvan Caryatid
+SB: 3 [RTR:101] Mizzium Mortars
+SB: 2 [M15:134] Chandra, Pyromaster
+SB: 2 [THS:167] Nylea's Disciple
+SB: 2 [GTC:139] Wasteland Viper
+SB: 1 [THS:209] Xenagos, the Reveler
+SB: 1 [GTC:136] Sylvan Primordial
+SB: 1 [THS:162] Mistcutter Hydra
+SB: 2 [M14:130] Burning Earth
+SB: 1 [THS:192] Destructive Revelry
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Gruul TDtB ST Nov 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Gruul TDtB ST Nov 2013.mwDeck.dck
new file mode 100644
index 0000000000..44f9b6e4fa
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Gruul TDtB ST Nov 2013.mwDeck.dck
@@ -0,0 +1,22 @@
+4 [THS:223] Nykthos, Shrine to Nyx
+4 [THS:224] Temple of Abandon
+9 [UNH:140] Forest
+1 [THS:166] Nylea, God of the Hunt
+4 [GTC:216] Burning-Tree Emissary
+2 [THS:209] Xenagos, the Reveler
+4 [M14:172] Garruk, Caller of Beasts
+2 [M14:195] Scavenging Ooze
+2 [UNH:139] Mountain
+1 [DGM:99] Ruric Thar, the Unbowed
+4 [GTC:247] Stomping Ground
+4 [THS:182] Voyaging Satyr
+3 [THS:150] Arbor Colossus
+4 [THS:172] Polukranos, World Eater
+4 [GTC:156] Domri Rade
+4 [C14:191] Elvish Mystic
+4 [THS:180] Sylvan Caryatid
+SB: 4 [THS:167] Nylea's Disciple
+SB: 3 [GTC:139] Wasteland Viper
+SB: 4 [THS:162] Mistcutter Hydra
+SB: 3 [M14:130] Burning Earth
+SB: 1 [THS:192] Destructive Revelry
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Gruul TDtB ST Oct 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Gruul TDtB ST Oct 2013.mwDeck.dck
new file mode 100644
index 0000000000..1ecf6e4e65
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Gruul TDtB ST Oct 2013.mwDeck.dck
@@ -0,0 +1,22 @@
+4 [THS:223] Nykthos, Shrine to Nyx
+3 [THS:135] Purphoros, God of the Forge
+2 [THS:124] Hammer of Purphoros
+4 [THS:224] Temple of Abandon
+4 [RTR:86] Ash Zealot
+4 [THS:121] Fanatic of Mogis
+4 [THS:143] Stormbreath Dragon
+4 [GTC:216] Burning-Tree Emissary
+4 [GTC:215] Boros Reckoner
+2 [THS:209] Xenagos, the Reveler
+11 [UNH:139] Mountain
+4 [RTR:215] Frostburn Weird
+2 [C13:294] Gruul Guildgate
+4 [GTC:247] Stomping Ground
+4 [GTC:156] Domri Rade
+SB: 2 [M15:134] Chandra, Pyromaster
+SB: 4 [RTR:101] Mizzium Mortars
+SB: 2 [M14:155] Shock
+SB: 2 [THS:120] Ember Swallower
+SB: 1 [M14:215] Ratchet Bomb
+SB: 2 [THS:112] Anger of the Gods
+SB: 2 [THS:192] Destructive Revelry
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Gruul TDtB ST Oct 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Gruul TDtB ST Oct 2014.mwDeck.dck
new file mode 100644
index 0000000000..8c0689faa3
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Gruul TDtB ST Oct 2014.mwDeck.dck
@@ -0,0 +1,25 @@
+4 [THS:223] Nykthos, Shrine to Nyx
+4 [THS:224] Temple of Abandon
+9 [UNH:140] Forest
+2 [THS:166] Nylea, God of the Hunt
+2 [THS:209] Xenagos, the Reveler
+4 [KTK:249] Wooded Foothills
+2 [M15:172] Chord of Calling
+2 [KTK:106] Crater's Claws
+4 [M15:176] Genesis Hydra
+1 [M15:187] Nissa, Worldwaker
+2 [UNH:139] Mountain
+2 [M15:178] Hornet Queen
+4 [KTK:144] Rattleclaw Mystic
+4 [BNG:119] Courser of Kruphix
+2 [THS:150] Arbor Colossus
+3 [THS:172] Polukranos, World Eater
+1 [THS:173] Reverent Hunter
+4 [C14:191] Elvish Mystic
+4 [THS:180] Sylvan Caryatid
+SB: 1 [C14:213] Reclamation Sage
+SB: 2 [THS:143] Stormbreath Dragon
+SB: 3 [M15:229] Scuttling Doom Engine
+SB: 2 [KTK:206] Surrak Dragonclaw
+SB: 4 [THS:162] Mistcutter Hydra
+SB: 3 [JOU:140] Setessan Tactics
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Gruul(1) TDtB ST Dec 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Gruul(1) TDtB ST Dec 2013.mwDeck.dck
new file mode 100644
index 0000000000..464c358222
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Gruul(1) TDtB ST Dec 2013.mwDeck.dck
@@ -0,0 +1,22 @@
+4 [THS:223] Nykthos, Shrine to Nyx
+2 [THS:135] Purphoros, God of the Forge
+4 [THS:224] Temple of Abandon
+4 [RTR:86] Ash Zealot
+4 [THS:121] Fanatic of Mogis
+4 [THS:143] Stormbreath Dragon
+4 [GTC:216] Burning-Tree Emissary
+4 [GTC:215] Boros Reckoner
+1 [THS:228] Temple of Triumph
+12 [UNH:139] Mountain
+2 [M15:134] Chandra, Pyromaster
+3 [RTR:101] Mizzium Mortars
+4 [RTR:215] Frostburn Weird
+4 [GTC:247] Stomping Ground
+4 [GTC:156] Domri Rade
+SB: 1 [RTR:101] Mizzium Mortars
+SB: 2 [RTR:231] Pithing Needle
+SB: 3 [THS:112] Anger of the Gods
+SB: 2 [THS:209] Xenagos, the Reveler
+SB: 2 [M15:192] Plummet
+SB: 3 [THS:162] Mistcutter Hydra
+SB: 2 [THS:192] Destructive Revelry
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Gruul(2) TDtB ST Dec 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Gruul(2) TDtB ST Dec 2013.mwDeck.dck
new file mode 100644
index 0000000000..3dd033549f
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Gruul(2) TDtB ST Dec 2013.mwDeck.dck
@@ -0,0 +1,22 @@
+4 [THS:223] Nykthos, Shrine to Nyx
+4 [THS:224] Temple of Abandon
+9 [UNH:140] Forest
+1 [THS:166] Nylea, God of the Hunt
+4 [GTC:216] Burning-Tree Emissary
+2 [THS:209] Xenagos, the Reveler
+4 [M14:172] Garruk, Caller of Beasts
+2 [M14:195] Scavenging Ooze
+2 [UNH:139] Mountain
+1 [DGM:99] Ruric Thar, the Unbowed
+4 [GTC:247] Stomping Ground
+4 [THS:182] Voyaging Satyr
+3 [THS:150] Arbor Colossus
+4 [THS:172] Polukranos, World Eater
+4 [GTC:156] Domri Rade
+4 [C14:191] Elvish Mystic
+4 [THS:180] Sylvan Caryatid
+SB: 3 [GTC:139] Wasteland Viper
+SB: 4 [THS:167] Nylea's Disciple
+SB: 4 [THS:162] Mistcutter Hydra
+SB: 3 [M14:130] Burning Earth
+SB: 1 [THS:192] Destructive Revelry
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Red TDtB ST Feb 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Red TDtB ST Feb 2014.mwDeck.dck
new file mode 100644
index 0000000000..b93a8a226f
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Red TDtB ST Feb 2014.mwDeck.dck
@@ -0,0 +1,22 @@
+4 [THS:223] Nykthos, Shrine to Nyx
+2 [THS:135] Purphoros, God of the Forge
+3 [THS:124] Hammer of Purphoros
+2 [THS:224] Temple of Abandon
+4 [RTR:86] Ash Zealot
+4 [THS:121] Fanatic of Mogis
+4 [THS:143] Stormbreath Dragon
+4 [GTC:216] Burning-Tree Emissary
+4 [GTC:215] Boros Reckoner
+4 [THS:228] Temple of Triumph
+11 [UNH:139] Mountain
+3 [RTR:101] Mizzium Mortars
+3 [THS:4] Chained to the Rocks
+4 [RTR:215] Frostburn Weird
+4 [GTC:245] Sacred Foundry
+SB: 1 [THS:135] Purphoros, God of the Forge
+SB: 1 [RTR:101] Mizzium Mortars
+SB: 4 [C13:179] Boros Charm
+SB: 1 [THS:4] Chained to the Rocks
+SB: 3 [THS:112] Anger of the Gods
+SB: 2 [DGM:135] Wear // Tear
+SB: 3 [GTC:142] Assemble the Legion
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Selesnya TDtB ST Apr 2015.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Selesnya TDtB ST Apr 2015.mwDeck.dck
new file mode 100644
index 0000000000..2df29717f0
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Selesnya TDtB ST Apr 2015.mwDeck.dck
@@ -0,0 +1,25 @@
+4 [THS:223] Nykthos, Shrine to Nyx
+2 [DTK:180] Deathmist Raptor
+4 [FRF:19] Mastery of the Unseen
+1 [FRF:141] Temur Sabertooth
+4 [UNH:140] Forest
+4 [KTK:248] Windswept Heath
+4 [KTK:249] Wooded Foothills
+3 [M15:176] Genesis Hydra
+4 [FRF:145] Whisperwood Elemental
+1 [UNH:139] Mountain
+4 [BNG:119] Courser of Kruphix
+3 [THS:182] Voyaging Satyr
+4 [BNG:165] Temple of Plenty
+2 [THS:150] Arbor Colossus
+4 [THS:172] Polukranos, World Eater
+2 [DTK:221] Dromoka's Command
+4 [C14:191] Elvish Mystic
+2 [UNH:136] Plains
+4 [THS:180] Sylvan Caryatid
+SB: 3 [THS:167] Nylea's Disciple
+SB: 4 [THS:193] Fleecemane Lion
+SB: 3 [THS:209] Xenagos, the Reveler
+SB: 2 [THS:150] Arbor Colossus
+SB: 1 [DTK:221] Dromoka's Command
+SB: 2 [M15:187] Nissa, Worldwaker
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Selesnya TDtB ST Mar 2015.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Selesnya TDtB ST Mar 2015.mwDeck.dck
new file mode 100644
index 0000000000..7744577cad
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Selesnya TDtB ST Mar 2015.mwDeck.dck
@@ -0,0 +1,27 @@
+1 [FRF:166] Blossoming Sands
+4 [THS:223] Nykthos, Shrine to Nyx
+4 [FRF:19] Mastery of the Unseen
+1 [FRF:141] Temur Sabertooth
+9 [UNH:140] Forest
+1 [JOU:5] Banishing Light
+4 [KTK:248] Windswept Heath
+4 [M15:176] Genesis Hydra
+4 [FRF:145] Whisperwood Elemental
+4 [BNG:119] Courser of Kruphix
+2 [THS:193] Fleecemane Lion
+4 [THS:182] Voyaging Satyr
+4 [BNG:165] Temple of Plenty
+4 [THS:172] Polukranos, World Eater
+4 [C14:191] Elvish Mystic
+2 [UNH:136] Plains
+4 [THS:180] Sylvan Caryatid
+SB: 2 [M15:177] Hornet Nest
+SB: 1 [FRF:28] Valorous Stance
+SB: 2 [C14:213] Reclamation Sage
+SB: 1 [M15:178] Hornet Queen
+SB: 2 [THS:159] Hunt the Hunter
+SB: 1 [THS:15] Glare of Heresy
+SB: 2 [THS:193] Fleecemane Lion
+SB: 1 [JOU:140] Setessan Tactics
+SB: 1 [THS:22] Last Breath
+SB: 2 [M15:187] Nissa, Worldwaker
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Selesnya TDtB ST May 2015.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Selesnya TDtB ST May 2015.mwDeck.dck
new file mode 100644
index 0000000000..3f7f5b4d04
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Devotion to Selesnya TDtB ST May 2015.mwDeck.dck
@@ -0,0 +1,23 @@
+1 [FRF:166] Blossoming Sands
+4 [THS:223] Nykthos, Shrine to Nyx
+4 [FRF:19] Mastery of the Unseen
+1 [DTK:181] Den Protector
+9 [UNH:140] Forest
+4 [KTK:248] Windswept Heath
+3 [M15:176] Genesis Hydra
+4 [FRF:145] Whisperwood Elemental
+2 [DTK:217] Dragonlord Dromoka
+4 [BNG:119] Courser of Kruphix
+2 [FRF:1] Ugin, the Spirit Dragon
+4 [THS:182] Voyaging Satyr
+4 [BNG:165] Temple of Plenty
+4 [THS:172] Polukranos, World Eater
+4 [C14:191] Elvish Mystic
+2 [UNH:136] Plains
+4 [THS:180] Sylvan Caryatid
+SB: 3 [DTK:181] Den Protector
+SB: 2 [JOU:145] Ajani, Mentor of Heroes
+SB: 3 [THS:167] Nylea's Disciple
+SB: 4 [THS:193] Fleecemane Lion
+SB: 2 [THS:150] Arbor Colossus
+SB: 1 [M15:187] Nissa, Worldwaker
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Domri Naya TDtB ST Aug 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Domri Naya TDtB ST Aug 2013.mwDeck.dck
new file mode 100644
index 0000000000..4499cd2970
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Domri Naya TDtB ST Aug 2013.mwDeck.dck
@@ -0,0 +1,31 @@
+3 [M13:229] Sunpetal Grove
+1 [UNH:140] Forest
+4 [M13:228] Rootbound Crag
+4 [GTC:215] Boros Reckoner
+3 [M14:195] Scavenging Ooze
+3 [RTR:178] Loxodon Smiter
+1 [RTR:101] Mizzium Mortars
+4 [M13:150] Thundermaw Hellkite
+2 [C13:211] Selesnya Charm
+1 [M13:160] Arbor Elf
+4 [ISD:170] Avacyn's Pilgrim
+1 [ISD:243] Kessig Wolf Run
+4 [RTR:248] Temple Garden
+3 [AVR:129] Bonfire of the Damned
+4 [GTC:247] Stomping Ground
+4 [GTC:245] Sacred Foundry
+2 [GTC:167] Ghor-Clan Rampager
+4 [GTC:156] Domri Rade
+1 [DKA:140] Huntmaster of the Fells
+3 [ISD:238] Clifftop Retreat
+4 [DGM:114] Voice of Resurgence
+SB: 1 [RTR:101] Mizzium Mortars
+SB: 1 [DKA:17] Ray of Revelation
+SB: 2 [C13:179] Boros Charm
+SB: 2 [DGM:111] Unflinching Courage
+SB: 1 [AVR:149] Pillar of Flame
+SB: 1 [M14:12] Celestial Flare
+SB: 2 [DGM:99] Ruric Thar, the Unbowed
+SB: 2 [M13:22] Oblivion Ring
+SB: 1 [RTR:18] Rest in Peace
+SB: 2 [M14:130] Burning Earth
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Eldrazi Green-Black TDtB ST Dec 2010.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Eldrazi Green-Black TDtB ST Dec 2010.mwDeck.dck
new file mode 100644
index 0000000000..68569150f3
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Eldrazi Green-Black TDtB ST Dec 2010.mwDeck.dck
@@ -0,0 +1,25 @@
+1 [ROE:12] Ulamog, the Infinite Gyre
+3 [ROE:186] Growth Spasm
+10 [UNH:140] Forest
+4 [ROE:190] Joraga Treespeaker
+1 [ROE:6] Kozilek, Butcher of Truth
+4 [ROE:227] Eldrazi Temple
+1 [ROE:4] Emrakul, the Aeons Torn
+1 [WWK:136] Eye of Ugin
+4 [ROE:203] Overgrown Battlement
+4 [M12:188] Primeval Titan
+4 [C14:239] Everflowing Chalice
+4 [ZEN:184] Summoning Trap
+3 [C13:302] Khalni Garden
+2 [ROE:1] All Is Dust
+4 [C14:313] Tectonic Edge
+4 [ZEN:229] Verdant Catacombs
+2 [C14:283] Wurmcoil Engine
+3 [WWK:99] Explore
+1 [UNH:138] Swamp
+SB: 3 [SOM:69] Memoricide
+SB: 4 [M14:96] Doom Blade
+SB: 4 [M11:188] Obstinate Baloth
+SB: 1 [WWK:136] Eye of Ugin
+SB: 2 [C14:218] Terastodon
+SB: 1 [ROE:1] All Is Dust
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Elves TDtB ST Dec 2010.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Elves TDtB ST Dec 2010.mwDeck.dck
new file mode 100644
index 0000000000..b3d60e24e2
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Elves TDtB ST Dec 2010.mwDeck.dck
@@ -0,0 +1,20 @@
+3 [ZEN:170] Nissa Revane
+15 [UNH:140] Forest
+3 [ROE:190] Joraga Treespeaker
+3 [ZEN:199] Eldrazi Monument
+4 [ZEN:171] Nissa's Chosen
+4 [C14:305] Oran-Rief, the Vastwood
+3 [ROE:212] Vengevine
+2 [C14:216] Sylvan Ranger
+4 [C14:204] Llanowar Elves
+3 [C14:203] Joraga Warcaller
+3 [M11:172] Fauna Shaman
+4 [M13:160] Arbor Elf
+3 [C14:195] Ezuri, Renegade Leader
+4 [C14:190] Elvish Archdruid
+2 [SOM:122] Genesis Wave
+SB: 4 [M11:183] Leyline of Vitality
+SB: 3 [C13:134] Acidic Slime
+SB: 2 [CMD:157] Garruk Wildspeaker
+SB: 3 [M11:202] Brittle Effigy
+SB: 3 [ROE:211] Tajuru Preserver
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Elves TDtB ST Jul 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Elves TDtB ST Jul 2011.mwDeck.dck
new file mode 100644
index 0000000000..d8a92dea12
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Elves TDtB ST Jul 2011.mwDeck.dck
@@ -0,0 +1,20 @@
+4 [CNS:170] Lead the Stampede
+4 [CNS:160] Copperhorn Scout
+20 [UNH:140] Forest
+4 [ROE:190] Joraga Treespeaker
+3 [ROE:212] Vengevine
+2 [C14:216] Sylvan Ranger
+4 [C14:204] Llanowar Elves
+1 [C14:225] Wolfbriar Elemental
+2 [C14:203] Joraga Warcaller
+4 [M11:172] Fauna Shaman
+4 [M13:160] Arbor Elf
+4 [C14:195] Ezuri, Renegade Leader
+4 [C14:190] Elvish Archdruid
+SB: 4 [M11:183] Leyline of Vitality
+SB: 1 [MBS:78] Creeping Corrosion
+SB: 3 [CNS:171] Nature's Claim
+SB: 2 [MBS:94] Viridian Corrupter
+SB: 1 [M11:188] Obstinate Baloth
+SB: 3 [NPH:159] Spellskite
+SB: 1 [WWK:107] Leatherback Baloth
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Esper Control TDtB ST Apr 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Esper Control TDtB ST Apr 2012.mwDeck.dck
new file mode 100644
index 0000000000..0378a40669
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Esper Control TDtB ST Apr 2012.mwDeck.dck
@@ -0,0 +1,31 @@
+2 [MBS:21] Consecrated Sphinx
+1 [MBS:43] Go for the Throat
+2 [M12:16] Gideon Jura
+2 [M13:225] Glacial Fortress
+2 [M13:223] Drowned Catacomb
+2 [ISD:78] Snapcaster Mage
+2 [ISD:55] Forbidden Alchemy
+4 [ISD:242] Isolated Chapel
+3 [C14:295] Evolving Wilds
+4 [SOM:229] Seachrome Coast
+1 [M14:96] Doom Blade
+1 [SOM:226] Darkslick Shores
+2 [MBS:115] Mortarpod
+4 [DKA:12] Lingering Souls
+3 [M12:12] Day of Judgment
+3 [UNH:136] Plains
+2 [DKA:142] Sorin, Lord of Innistrad
+2 [UNH:137] Island
+3 [ISD:94] Curse of Death's Hold
+3 [ISD:83] Think Twice
+5 [UNH:138] Swamp
+3 [ISD:105] Liliana of the Veil
+4 [M12:63] Mana Leak
+SB: 1 [C14:136] Black Sun's Zenith
+SB: 3 [M14:215] Ratchet Bomb
+SB: 2 [CNS:72] Intangible Virtue
+SB: 1 [SOM:53] Volition Reins
+SB: 1 [NPH:130] Batterskull
+SB: 3 [M12:11] Celestial Purge
+SB: 3 [KTK:69] Despise
+SB: 1 [NPH:1] Karn Liberated
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Esper Control TDtB ST Apr 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Esper Control TDtB ST Apr 2013.mwDeck.dck
new file mode 100644
index 0000000000..760326eaa9
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Esper Control TDtB ST Apr 2013.mwDeck.dck
@@ -0,0 +1,33 @@
+2 [AVR:32] Restoration Angel
+1 [RTR:82] Ultimate Price
+4 [C13:30] Augur of Bolas
+3 [RTR:54] Syncopate
+4 [GTC:249] Watery Grave
+4 [M13:225] Glacial Fortress
+2 [M13:223] Drowned Catacomb
+4 [RTR:241] Hallowed Fountain
+2 [ISD:78] Snapcaster Mage
+4 [RTR:201] Supreme Verdict
+4 [RTR:145] Azorius Charm
+4 [RTR:200] Sphinx's Revelation
+4 [ISD:242] Isolated Chapel
+1 [M15:51] Dissipate
+4 [ISD:245] Nephalia Drownyard
+1 [M13:22] Oblivion Ring
+1 [GTC:154] Dimir Charm
+2 [GTC:63] Devour Flesh
+3 [GTC:242] Godless Shrine
+1 [UNH:137] Island
+1 [M14:60] Jace, Memory Adept
+4 [ISD:83] Think Twice
+SB: 3 [C14:167] Tragic Slip
+SB: 1 [ISD:27] Purify the Grave
+SB: 1 [AVR:84] Appetite for Brains
+SB: 1 [ISD:236] Witchbane Orb
+SB: 1 [RTR:47] Psychic Spiral
+SB: 1 [RTR:36] Dispel
+SB: 1 [M14:97] Duress
+SB: 2 [ISD:212] Evil Twin
+SB: 2 [RTR:18] Rest in Peace
+SB: 1 [ISD:94] Curse of Death's Hold
+SB: 1 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Esper Control TDtB ST Apr 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Esper Control TDtB ST Apr 2014.mwDeck.dck
new file mode 100644
index 0000000000..4af6e626cb
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Esper Control TDtB ST Apr 2014.mwDeck.dck
@@ -0,0 +1,29 @@
+4 [THS:225] Temple of Deceit
+4 [THS:47] Dissolve
+2 [RTR:54] Syncopate
+4 [RTR:241] Hallowed Fountain
+4 [THS:227] Temple of Silence
+2 [THS:107] Thoughtseize
+4 [RTR:201] Supreme Verdict
+4 [RTR:200] Sphinx's Revelation
+4 [RTR:155] Detention Sphere
+1 [DGM:11] AEtherling
+2 [M14:228] Mutavault
+1 [BNG:25] Revoke Existence
+2 [M14:96] Doom Blade
+4 [RTR:44] Jace, Architect of Thought
+2 [GTC:242] Godless Shrine
+2 [UNH:136] Plains
+3 [THS:9] Elspeth, Sun's Champion
+5 [UNH:137] Island
+2 [THS:22] Last Breath
+4 [BNG:163] Temple of Enlightenment
+SB: 2 [RTR:82] Ultimate Price
+SB: 2 [GTC:6] Blind Obedience
+SB: 1 [RTR:231] Pithing Needle
+SB: 2 [M14:18] Fiendslayer Paladin
+SB: 2 [THS:49] Gainsay
+SB: 1 [BNG:25] Revoke Existence
+SB: 1 [THS:83] Dark Betrayal
+SB: 2 [THS:107] Thoughtseize
+SB: 2 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Esper Control TDtB ST Dec 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Esper Control TDtB ST Dec 2012.mwDeck.dck
new file mode 100644
index 0000000000..50d8674ab2
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Esper Control TDtB ST Dec 2012.mwDeck.dck
@@ -0,0 +1,37 @@
+4 [M13:225] Glacial Fortress
+4 [M13:223] Drowned Catacomb
+1 [C14:104] Cyclonic Rift
+2 [RTR:201] Supreme Verdict
+1 [ISD:55] Forbidden Alchemy
+4 [RTR:145] Azorius Charm
+4 [RTR:200] Sphinx's Revelation
+4 [ISD:242] Isolated Chapel
+2 [M15:51] Dissipate
+4 [ISD:245] Nephalia Drownyard
+2 [DKA:12] Lingering Souls
+1 [UNH:136] Plains
+1 [DKA:142] Sorin, Lord of Innistrad
+3 [UNH:137] Island
+1 [ISD:94] Curse of Death's Hold
+3 [AVR:38] Terminus
+2 [UNH:138] Swamp
+1 [M15:71] Negate
+2 [RTR:82] Ultimate Price
+1 [AVR:79] Tamiyo, the Moon Sage
+4 [RTR:241] Hallowed Fountain
+2 [RTR:155] Detention Sphere
+1 [C14:298] Ghost Quarter
+1 [C14:295] Evolving Wilds
+2 [RTR:44] Jace, Architect of Thought
+1 [M14:60] Jace, Memory Adept
+3 [ISD:83] Think Twice
+SB: 1 [RTR:201] Supreme Verdict
+SB: 1 [RTR:155] Detention Sphere
+SB: 2 [ISD:14] Feeling of Dread
+SB: 1 [ISD:115] Sever the Bloodline
+SB: 1 [RTR:36] Dispel
+SB: 3 [RTR:18] Rest in Peace
+SB: 1 [AVR:38] Terminus
+SB: 1 [M14:60] Jace, Memory Adept
+SB: 1 [ISD:94] Curse of Death's Hold
+SB: 3 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Esper Control TDtB ST Dec 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Esper Control TDtB ST Dec 2013.mwDeck.dck
new file mode 100644
index 0000000000..1e16ccf56b
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Esper Control TDtB ST Dec 2013.mwDeck.dck
@@ -0,0 +1,30 @@
+1 [RTR:82] Ultimate Price
+4 [THS:225] Temple of Deceit
+2 [THS:47] Dissolve
+1 [RTR:54] Syncopate
+4 [GTC:249] Watery Grave
+4 [RTR:241] Hallowed Fountain
+4 [THS:227] Temple of Silence
+2 [THS:107] Thoughtseize
+4 [RTR:201] Supreme Verdict
+3 [RTR:145] Azorius Charm
+4 [RTR:200] Sphinx's Revelation
+4 [RTR:155] Detention Sphere
+2 [DGM:11] AEtherling
+2 [THS:90] Hero's Downfall
+1 [M14:96] Doom Blade
+1 [DGM:127] Far // Away
+4 [RTR:44] Jace, Architect of Thought
+1 [GTC:63] Devour Flesh
+1 [GTC:154] Dimir Charm
+3 [GTC:242] Godless Shrine
+4 [UNH:136] Plains
+4 [UNH:137] Island
+SB: 1 [RTR:231] Pithing Needle
+SB: 3 [M14:18] Fiendslayer Paladin
+SB: 2 [DGM:57] Blood Baron of Vizkopa
+SB: 3 [THS:49] Gainsay
+SB: 3 [RTR:73] Pack Rat
+SB: 1 [M14:116] Shrivel
+SB: 1 [M14:96] Doom Blade
+SB: 1 [THS:107] Thoughtseize
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Esper Control TDtB ST Feb 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Esper Control TDtB ST Feb 2013.mwDeck.dck
new file mode 100644
index 0000000000..4eea2bbab9
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Esper Control TDtB ST Feb 2013.mwDeck.dck
@@ -0,0 +1,30 @@
+3 [AVR:32] Restoration Angel
+1 [RTR:82] Ultimate Price
+2 [M14:29] Planar Cleansing
+4 [C13:30] Augur of Bolas
+2 [GTC:249] Watery Grave
+4 [M13:225] Glacial Fortress
+4 [M13:223] Drowned Catacomb
+4 [RTR:241] Hallowed Fountain
+2 [ISD:78] Snapcaster Mage
+4 [RTR:201] Supreme Verdict
+1 [RTR:156] Dramatic Rescue
+4 [RTR:145] Azorius Charm
+4 [RTR:200] Sphinx's Revelation
+4 [ISD:242] Isolated Chapel
+2 [M15:51] Dissipate
+4 [ISD:245] Nephalia Drownyard
+2 [GTC:63] Devour Flesh
+1 [UNH:136] Plains
+2 [GTC:242] Godless Shrine
+2 [UNH:137] Island
+4 [ISD:83] Think Twice
+SB: 3 [AVR:104] Gloom Surgeon
+SB: 2 [RTR:1] Angel of Serenity
+SB: 2 [ISD:236] Witchbane Orb
+SB: 1 [RTR:47] Psychic Spiral
+SB: 1 [RTR:36] Dispel
+SB: 2 [M14:97] Duress
+SB: 1 [RTR:18] Rest in Peace
+SB: 2 [M14:60] Jace, Memory Adept
+SB: 1 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Esper Control TDtB ST Mar 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Esper Control TDtB ST Mar 2013.mwDeck.dck
new file mode 100644
index 0000000000..4eea2bbab9
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Esper Control TDtB ST Mar 2013.mwDeck.dck
@@ -0,0 +1,30 @@
+3 [AVR:32] Restoration Angel
+1 [RTR:82] Ultimate Price
+2 [M14:29] Planar Cleansing
+4 [C13:30] Augur of Bolas
+2 [GTC:249] Watery Grave
+4 [M13:225] Glacial Fortress
+4 [M13:223] Drowned Catacomb
+4 [RTR:241] Hallowed Fountain
+2 [ISD:78] Snapcaster Mage
+4 [RTR:201] Supreme Verdict
+1 [RTR:156] Dramatic Rescue
+4 [RTR:145] Azorius Charm
+4 [RTR:200] Sphinx's Revelation
+4 [ISD:242] Isolated Chapel
+2 [M15:51] Dissipate
+4 [ISD:245] Nephalia Drownyard
+2 [GTC:63] Devour Flesh
+1 [UNH:136] Plains
+2 [GTC:242] Godless Shrine
+2 [UNH:137] Island
+4 [ISD:83] Think Twice
+SB: 3 [AVR:104] Gloom Surgeon
+SB: 2 [RTR:1] Angel of Serenity
+SB: 2 [ISD:236] Witchbane Orb
+SB: 1 [RTR:47] Psychic Spiral
+SB: 1 [RTR:36] Dispel
+SB: 2 [M14:97] Duress
+SB: 1 [RTR:18] Rest in Peace
+SB: 2 [M14:60] Jace, Memory Adept
+SB: 1 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Esper Control TDtB ST Mar 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Esper Control TDtB ST Mar 2014.mwDeck.dck
new file mode 100644
index 0000000000..d109f21d9c
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Esper Control TDtB ST Mar 2014.mwDeck.dck
@@ -0,0 +1,30 @@
+4 [THS:225] Temple of Deceit
+4 [THS:47] Dissolve
+2 [RTR:54] Syncopate
+4 [RTR:241] Hallowed Fountain
+4 [THS:227] Temple of Silence
+1 [THS:107] Thoughtseize
+4 [RTR:201] Supreme Verdict
+4 [RTR:200] Sphinx's Revelation
+4 [RTR:155] Detention Sphere
+1 [DGM:11] AEtherling
+2 [M14:228] Mutavault
+1 [BNG:25] Revoke Existence
+2 [M14:96] Doom Blade
+4 [RTR:44] Jace, Architect of Thought
+2 [GTC:242] Godless Shrine
+2 [UNH:136] Plains
+3 [THS:9] Elspeth, Sun's Champion
+5 [UNH:137] Island
+2 [THS:22] Last Breath
+4 [BNG:163] Temple of Enlightenment
+1 [M15:71] Negate
+SB: 2 [RTR:82] Ultimate Price
+SB: 2 [GTC:6] Blind Obedience
+SB: 1 [RTR:231] Pithing Needle
+SB: 1 [M14:18] Fiendslayer Paladin
+SB: 2 [THS:49] Gainsay
+SB: 1 [BNG:25] Revoke Existence
+SB: 2 [THS:83] Dark Betrayal
+SB: 3 [THS:107] Thoughtseize
+SB: 1 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Esper Control TDtB ST May 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Esper Control TDtB ST May 2014.mwDeck.dck
new file mode 100644
index 0000000000..286545eace
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Esper Control TDtB ST May 2014.mwDeck.dck
@@ -0,0 +1,32 @@
+3 [RTR:82] Ultimate Price
+4 [THS:225] Temple of Deceit
+3 [THS:47] Dissolve
+1 [JOU:7] Deicide
+3 [RTR:54] Syncopate
+3 [GTC:249] Watery Grave
+1 [M14:68] Quicken
+4 [RTR:241] Hallowed Fountain
+4 [THS:227] Temple of Silence
+4 [RTR:201] Supreme Verdict
+1 [RTR:145] Azorius Charm
+4 [RTR:200] Sphinx's Revelation
+3 [RTR:155] Detention Sphere
+1 [DGM:11] AEtherling
+3 [THS:90] Hero's Downfall
+1 [M14:228] Mutavault
+4 [RTR:44] Jace, Architect of Thought
+1 [UNH:136] Plains
+3 [GTC:242] Godless Shrine
+3 [THS:9] Elspeth, Sun's Champion
+2 [UNH:137] Island
+4 [BNG:163] Temple of Enlightenment
+SB: 2 [JOU:18] Nyx-Fleece Ram
+SB: 1 [JOU:7] Deicide
+SB: 1 [THS:49] Gainsay
+SB: 1 [M14:5] Archangel of Thune
+SB: 1 [M14:96] Doom Blade
+SB: 3 [GTC:222] Nightveil Specter
+SB: 1 [GTC:154] Dimir Charm
+SB: 2 [THS:107] Thoughtseize
+SB: 2 [DGM:103] Sin Collector
+SB: 1 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Esper Control TDtB ST May 2015.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Esper Control TDtB ST May 2015.mwDeck.dck
new file mode 100644
index 0000000000..d81b73202c
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Esper Control TDtB ST May 2015.mwDeck.dck
@@ -0,0 +1,32 @@
+4 [THS:225] Temple of Deceit
+2 [THS:47] Dissolve
+1 [THS:188] Ashiok, Nightmare Weaver
+4 [KTK:239] Polluted Delta
+4 [KTK:36] Dig Through Time
+3 [THS:107] Thoughtseize
+1 [KTK:233] Flooded Strand
+2 [M15:241] Caves of Koilos
+4 [FRF:168] Dismal Backwater
+1 [FRF:157] Silumgar, the Drifting Death
+2 [DTK:249] Haven of the Spirit Dragon
+3 [BNG:61] Bile Blight
+4 [DTK:219] Dragonlord Ojutai
+3 [DTK:102] Foul-Tongue Invocation
+1 [M15:248] Urborg, Tomb of Yawgmoth
+3 [THS:90] Hero's Downfall
+1 [DTK:220] Dragonlord Silumgar
+2 [DTK:45] Anticipate
+4 [DTK:78] Silumgar's Scorn
+2 [FRF:65] Crux of Fate
+3 [UNH:137] Island
+2 [UNH:138] Swamp
+4 [BNG:163] Temple of Enlightenment
+SB: 1 [BNG:61] Bile Blight
+SB: 2 [DTK:124] Ultimate Price
+SB: 2 [THS:188] Ashiok, Nightmare Weaver
+SB: 1 [DTK:80] Stratus Dancer
+SB: 1 [DTK:220] Dragonlord Silumgar
+SB: 2 [FRF:87] Tasigur, the Golden Fang
+SB: 3 [BNG:65] Drown in Sorrow
+SB: 1 [THS:107] Thoughtseize
+SB: 2 [DTK:52] Dragonlord's Prerogative
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Esper Control TDtB ST Nov 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Esper Control TDtB ST Nov 2013.mwDeck.dck
new file mode 100644
index 0000000000..32518090e1
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Esper Control TDtB ST Nov 2013.mwDeck.dck
@@ -0,0 +1,27 @@
+4 [THS:225] Temple of Deceit
+3 [THS:47] Dissolve
+4 [GTC:249] Watery Grave
+4 [RTR:241] Hallowed Fountain
+4 [THS:227] Temple of Silence
+2 [THS:107] Thoughtseize
+4 [RTR:201] Supreme Verdict
+4 [RTR:145] Azorius Charm
+4 [RTR:200] Sphinx's Revelation
+4 [RTR:155] Detention Sphere
+2 [DGM:57] Blood Baron of Vizkopa
+1 [DGM:11] AEtherling
+2 [THS:90] Hero's Downfall
+4 [RTR:44] Jace, Architect of Thought
+2 [M15:52] Divination
+3 [UNH:136] Plains
+4 [GTC:242] Godless Shrine
+1 [THS:9] Elspeth, Sun's Champion
+4 [UNH:137] Island
+SB: 1 [RTR:82] Ultimate Price
+SB: 1 [RTR:231] Pithing Needle
+SB: 2 [DGM:57] Blood Baron of Vizkopa
+SB: 4 [THS:49] Gainsay
+SB: 2 [M14:96] Doom Blade
+SB: 1 [THS:83] Dark Betrayal
+SB: 2 [M14:60] Jace, Memory Adept
+SB: 2 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Esper Control TDtB ST Oct 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Esper Control TDtB ST Oct 2013.mwDeck.dck
new file mode 100644
index 0000000000..ca6badb6c3
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Esper Control TDtB ST Oct 2013.mwDeck.dck
@@ -0,0 +1,27 @@
+4 [THS:225] Temple of Deceit
+3 [THS:47] Dissolve
+4 [GTC:249] Watery Grave
+4 [RTR:241] Hallowed Fountain
+4 [THS:227] Temple of Silence
+2 [THS:107] Thoughtseize
+4 [RTR:201] Supreme Verdict
+3 [RTR:200] Sphinx's Revelation
+4 [RTR:145] Azorius Charm
+1 [RTR:155] Detention Sphere
+1 [DGM:11] AEtherling
+4 [THS:90] Hero's Downfall
+4 [M14:96] Doom Blade
+4 [RTR:44] Jace, Architect of Thought
+2 [M15:52] Divination
+2 [UNH:136] Plains
+4 [GTC:242] Godless Shrine
+2 [THS:9] Elspeth, Sun's Champion
+4 [UNH:137] Island
+SB: 2 [RTR:155] Detention Sphere
+SB: 2 [DGM:57] Blood Baron of Vizkopa
+SB: 1 [THS:49] Gainsay
+SB: 1 [DGM:11] AEtherling
+SB: 1 [THS:107] Thoughtseize
+SB: 2 [M15:71] Negate
+SB: 2 [DGM:103] Sin Collector
+SB: 4 [THS:32] Soldier of the Pantheon
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Esper Dragon TDtB ST Apr 2015.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Esper Dragon TDtB ST Apr 2015.mwDeck.dck
new file mode 100644
index 0000000000..a2d0b26172
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Esper Dragon TDtB ST Apr 2015.mwDeck.dck
@@ -0,0 +1,30 @@
+4 [THS:225] Temple of Deceit
+4 [THS:47] Dissolve
+4 [KTK:239] Polluted Delta
+4 [KTK:36] Dig Through Time
+1 [THS:107] Thoughtseize
+1 [KTK:233] Flooded Strand
+4 [FRF:168] Dismal Backwater
+2 [FRF:157] Silumgar, the Drifting Death
+2 [DTK:249] Haven of the Spirit Dragon
+2 [DTK:219] Dragonlord Ojutai
+1 [DTK:102] Foul-Tongue Invocation
+2 [DTK:124] Ultimate Price
+1 [M15:248] Urborg, Tomb of Yawgmoth
+1 [FRF:1] Ugin, the Spirit Dragon
+4 [THS:90] Hero's Downfall
+4 [DTK:45] Anticipate
+4 [DTK:78] Silumgar's Scorn
+3 [FRF:65] Crux of Fate
+2 [M15:63] Jace's Ingenuity
+3 [UNH:137] Island
+3 [UNH:138] Swamp
+4 [BNG:163] Temple of Enlightenment
+SB: 1 [BNG:61] Bile Blight
+SB: 2 [DTK:102] Foul-Tongue Invocation
+SB: 2 [FRF:87] Tasigur, the Golden Fang
+SB: 2 [DTK:220] Dragonlord Silumgar
+SB: 3 [BNG:65] Drown in Sorrow
+SB: 2 [THS:107] Thoughtseize
+SB: 2 [DTK:52] Dragonlord's Prerogative
+SB: 1 [DTK:65] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Esper Midrange TDtB ST Feb 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Esper Midrange TDtB ST Feb 2014.mwDeck.dck
new file mode 100644
index 0000000000..9c5f2004b4
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Esper Midrange TDtB ST Feb 2014.mwDeck.dck
@@ -0,0 +1,26 @@
+2 [RTR:82] Ultimate Price
+4 [THS:225] Temple of Deceit
+4 [M14:22] Imposing Sovereign
+2 [THS:110] Whip of Erebos
+3 [GTC:249] Watery Grave
+4 [RTR:241] Hallowed Fountain
+4 [THS:227] Temple of Silence
+4 [RTR:179] Lyev Skyknight
+2 [RTR:201] Supreme Verdict
+3 [M14:123] Xathrid Necromancer
+4 [RTR:155] Detention Sphere
+3 [GTC:182] Obzedat, Ghost Council
+2 [M14:228] Mutavault
+1 [DGM:127] Far // Away
+2 [BNG:145] Ephara, God of the Polis
+3 [RTR:17] Precinct Captain
+4 [GTC:242] Godless Shrine
+4 [UNH:136] Plains
+1 [THS:33] Spear of Heliod
+4 [THS:32] Soldier of the Pantheon
+SB: 2 [THS:15] Glare of Heresy
+SB: 3 [DGM:57] Blood Baron of Vizkopa
+SB: 2 [THS:49] Gainsay
+SB: 2 [M14:96] Doom Blade
+SB: 2 [THS:83] Dark Betrayal
+SB: 4 [THS:107] Thoughtseize
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Esper Midrange TDtB ST Jul 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Esper Midrange TDtB ST Jul 2012.mwDeck.dck
new file mode 100644
index 0000000000..aeceb56e39
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Esper Midrange TDtB ST Jul 2012.mwDeck.dck
@@ -0,0 +1,32 @@
+4 [AVR:32] Restoration Angel
+2 [MBS:43] Go for the Throat
+1 [AVR:79] Tamiyo, the Moon Sage
+2 [M12:16] Gideon Jura
+4 [M13:225] Glacial Fortress
+3 [NPH:4] Blade Splicer
+1 [M13:223] Drowned Catacomb
+4 [ISD:78] Snapcaster Mage
+2 [DKA:158] Vault of the Archangel
+1 [MBS:5] Divine Offering
+2 [NPH:86] Gut Shot
+4 [DKA:52] Thought Scour
+2 [C14:295] Evolving Wilds
+4 [SOM:229] Seachrome Coast
+2 [M14:96] Doom Blade
+4 [SOM:226] Darkslick Shores
+4 [DKA:12] Lingering Souls
+2 [UNH:136] Plains
+2 [M12:72] Phantasmal Image
+3 [UNH:137] Island
+4 [M12:73] Ponder
+1 [UNH:138] Swamp
+2 [M12:63] Mana Leak
+SB: 1 [MBS:5] Divine Offering
+SB: 1 [C14:298] Ghost Quarter
+SB: 2 [M15:51] Dissipate
+SB: 2 [C14:91] Sun Titan
+SB: 2 [M12:11] Celestial Purge
+SB: 2 [M12:12] Day of Judgment
+SB: 1 [M13:22] Oblivion Ring
+SB: 2 [C13:249] Nihil Spellbomb
+SB: 2 [M12:72] Phantasmal Image
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/FRites TDtB ST Feb 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/FRites TDtB ST Feb 2012.mwDeck.dck
new file mode 100644
index 0000000000..d492fda301
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/FRites TDtB ST Feb 2012.mwDeck.dck
@@ -0,0 +1,26 @@
+1 [M13:228] Rootbound Crag
+6 [UNH:140] Forest
+4 [M12:165] Birds of Paradise
+1 [C14:204] Llanowar Elves
+1 [UNH:139] Mountain
+2 [C13:114] Inferno Titan
+4 [ISD:170] Avacyn's Pilgrim
+4 [ISD:122] Unburial Rites
+4 [DKA:128] Tracker's Instincts
+4 [C14:175] Faithless Looting
+4 [NPH:9] Elesh Norn, Grand Cenobite
+4 [ISD:196] Mulch
+4 [SOM:228] Razorverge Thicket
+2 [C14:283] Wurmcoil Engine
+2 [SOM:226] Darkslick Shores
+4 [DKA:12] Lingering Souls
+4 [SOM:225] Copperline Gorge
+4 [SOM:224] Blackcleave Cliffs
+1 [UNH:136] Plains
+SB: 3 [DKA:17] Ray of Revelation
+SB: 2 [ISD:66] Memory's Journey
+SB: 1 [ISD:27] Purify the Grave
+SB: 2 [ISD:122] Unburial Rites
+SB: 2 [NPH:37] Jin-Gitaxias, Core Augur
+SB: 1 [MBS:92] Thrun, the Last Troll
+SB: 4 [ISD:127] Ancient Grudge
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/FRites TDtB ST Oct 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/FRites TDtB ST Oct 2012.mwDeck.dck
new file mode 100644
index 0000000000..85d1b018cd
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/FRites TDtB ST Oct 2012.mwDeck.dck
@@ -0,0 +1,29 @@
+4 [AVR:32] Restoration Angel
+3 [M13:229] Sunpetal Grove
+5 [UNH:140] Forest
+4 [RTR:1] Angel of Serenity
+1 [DKA:158] Vault of the Archangel
+4 [RTR:243] Overgrown Tomb
+3 [M13:160] Arbor Elf
+4 [ISD:170] Avacyn's Pilgrim
+4 [M13:193] Thragtusk
+4 [RTR:165] Grisly Salvage
+4 [ISD:122] Unburial Rites
+4 [RTR:248] Temple Garden
+1 [RTR:148] Centaur Healer
+1 [RTR:213] Deathrite Shaman
+4 [ISD:196] Mulch
+2 [DKA:12] Lingering Souls
+2 [AVR:169] Borderland Ranger
+1 [ISD:239] Gavony Township
+2 [UNH:136] Plains
+2 [ISD:249] Woodland Cemetery
+1 [UNH:138] Swamp
+SB: 2 [M13:174] Garruk, Primal Hunter
+SB: 2 [ISD:10] Divine Reckoning
+SB: 2 [RTR:148] Centaur Healer
+SB: 2 [RTR:213] Deathrite Shaman
+SB: 1 [ISD:115] Sever the Bloodline
+SB: 2 [M14:97] Duress
+SB: 2 [M13:22] Oblivion Ring
+SB: 2 [RTR:141] Abrupt Decay
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Fauna Quest TDtB ST Feb 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Fauna Quest TDtB ST Feb 2011.mwDeck.dck
new file mode 100644
index 0000000000..bfb6b0277e
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Fauna Quest TDtB ST Feb 2011.mwDeck.dck
@@ -0,0 +1,26 @@
+4 [SOM:174] Memnite
+3 [WWK:144] Stirring Wildwood
+4 [M13:229] Sunpetal Grove
+4 [UNH:140] Forest
+1 [SOM:10] Glint Hawk
+4 [ROE:212] Vengevine
+2 [C14:228] Argentum Armor
+4 [ZEN:23] Kor Skyfisher
+4 [M11:172] Fauna Shaman
+4 [M15:223] Ornithopter
+1 [ZEN:21] Kor Outfitter
+1 [SOM:208] Sword of Body and Mind
+4 [ZEN:33] Quest for the Holy Relic
+4 [SOM:228] Razorverge Thicket
+4 [M11:33] Squadron Hawk
+1 [WWK:20] Stoneforge Mystic
+8 [UNH:136] Plains
+3 [SOM:156] Glint Hawk Idol
+SB: 1 [ROE:33] Linvala, Keeper of Silence
+SB: 1 [MBS:10] Leonin Relic-Warder
+SB: 1 [M13:39] War Priest of Thune
+SB: 4 [SOM:14] Leonin Arbiter
+SB: 2 [WWK:17] Refraction Trap
+SB: 4 [ZEN:10] Devout Lightcaster
+SB: 1 [WWK:11] Kor Firewalker
+SB: 1 [M11:7] Baneslayer Angel
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Fauna Quest TDtB ST Mar 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Fauna Quest TDtB ST Mar 2011.mwDeck.dck
new file mode 100644
index 0000000000..87e7104dee
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Fauna Quest TDtB ST Mar 2011.mwDeck.dck
@@ -0,0 +1,27 @@
+4 [SOM:174] Memnite
+3 [WWK:144] Stirring Wildwood
+4 [M13:229] Sunpetal Grove
+4 [UNH:140] Forest
+1 [SOM:10] Glint Hawk
+4 [ROE:212] Vengevine
+2 [C14:228] Argentum Armor
+4 [ZEN:23] Kor Skyfisher
+4 [M11:172] Fauna Shaman
+4 [M15:223] Ornithopter
+1 [ZEN:21] Kor Outfitter
+1 [SOM:208] Sword of Body and Mind
+4 [ZEN:33] Quest for the Holy Relic
+4 [SOM:228] Razorverge Thicket
+4 [M11:33] Squadron Hawk
+1 [WWK:20] Stoneforge Mystic
+8 [UNH:136] Plains
+3 [SOM:156] Glint Hawk Idol
+SB: 1 [ROE:33] Linvala, Keeper of Silence
+SB: 1 [M13:39] War Priest of Thune
+SB: 1 [MBS:10] Leonin Relic-Warder
+SB: 2 [SOM:14] Leonin Arbiter
+SB: 2 [WWK:17] Refraction Trap
+SB: 2 [CMD:17] Journey to Nowhere
+SB: 2 [ZEN:10] Devout Lightcaster
+SB: 2 [WWK:11] Kor Firewalker
+SB: 2 [M11:7] Baneslayer Angel
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/GW Aggro TDtB ST Dec 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/GW Aggro TDtB ST Dec 2011.mwDeck.dck
new file mode 100644
index 0000000000..db90f390e9
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/GW Aggro TDtB ST Dec 2011.mwDeck.dck
@@ -0,0 +1,28 @@
+1 [C13:11] Fiend Hunter
+2 [SOM:6] Elspeth Tirel
+4 [M13:229] Sunpetal Grove
+8 [UNH:140] Forest
+2 [C14:72] Geist-Honored Monk
+1 [M12:16] Gideon Jura
+2 [NPH:4] Blade Splicer
+2 [MBS:92] Thrun, the Last Troll
+4 [M12:165] Birds of Paradise
+2 [NPH:116] Mutagenic Growth
+4 [ISD:170] Avacyn's Pilgrim
+4 [ISD:181] Garruk Relentless
+1 [NPH:9] Elesh Norn, Grand Cenobite
+4 [SOM:228] Razorverge Thicket
+2 [MBS:115] Mortarpod
+3 [M13:22] Oblivion Ring
+4 [ISD:239] Gavony Township
+4 [UNH:136] Plains
+3 [MBS:14] Mirran Crusader
+3 [MBS:8] Hero of Bladehold
+SB: 2 [KTK:142] Naturalize
+SB: 2 [MBS:78] Creeping Corrosion
+SB: 2 [NPH:86] Gut Shot
+SB: 2 [NPH:161] Sword of War and Peace
+SB: 2 [MBS:138] Sword of Feast and Famine
+SB: 1 [M12:16] Gideon Jura
+SB: 1 [M13:22] Oblivion Ring
+SB: 3 [M12:40] Timely Reinforcements
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/GW Aggro TDtB ST Jan 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/GW Aggro TDtB ST Jan 2012.mwDeck.dck
new file mode 100644
index 0000000000..fd44a2e814
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/GW Aggro TDtB ST Jan 2012.mwDeck.dck
@@ -0,0 +1,23 @@
+1 [NPH:161] Sword of War and Peace
+4 [M13:229] Sunpetal Grove
+7 [UNH:140] Forest
+3 [M12:16] Gideon Jura
+3 [NPH:4] Blade Splicer
+4 [M12:165] Birds of Paradise
+2 [ISD:23] Mikaeus, the Lunarch
+4 [ISD:170] Avacyn's Pilgrim
+3 [ISD:181] Garruk Relentless
+2 [NPH:86] Gut Shot
+4 [SOM:228] Razorverge Thicket
+2 [MBS:115] Mortarpod
+4 [M13:22] Oblivion Ring
+4 [ISD:239] Gavony Township
+5 [UNH:136] Plains
+4 [MBS:14] Mirran Crusader
+4 [MBS:8] Hero of Bladehold
+SB: 2 [NPH:86] Gut Shot
+SB: 2 [NPH:161] Sword of War and Peace
+SB: 2 [MBS:138] Sword of Feast and Famine
+SB: 3 [MBS:92] Thrun, the Last Troll
+SB: 2 [C13:249] Nihil Spellbomb
+SB: 4 [M12:40] Timely Reinforcements
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/GW Aggro TDtB ST Nov 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/GW Aggro TDtB ST Nov 2011.mwDeck.dck
new file mode 100644
index 0000000000..f9eee806be
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/GW Aggro TDtB ST Nov 2011.mwDeck.dck
@@ -0,0 +1,24 @@
+3 [SOM:6] Elspeth Tirel
+4 [M13:229] Sunpetal Grove
+8 [UNH:140] Forest
+1 [C14:72] Geist-Honored Monk
+4 [NPH:4] Blade Splicer
+4 [M12:165] Birds of Paradise
+4 [ISD:170] Avacyn's Pilgrim
+4 [ISD:181] Garruk Relentless
+2 [NPH:86] Gut Shot
+4 [SOM:228] Razorverge Thicket
+3 [MBS:115] Mortarpod
+4 [M13:22] Oblivion Ring
+4 [ISD:239] Gavony Township
+5 [UNH:136] Plains
+2 [MBS:14] Mirran Crusader
+4 [MBS:8] Hero of Bladehold
+SB: 1 [ISD:23] Mikaeus, the Lunarch
+SB: 2 [KTK:142] Naturalize
+SB: 2 [NPH:86] Gut Shot
+SB: 1 [NPH:161] Sword of War and Peace
+SB: 2 [MBS:138] Sword of Feast and Famine
+SB: 2 [M12:11] Celestial Purge
+SB: 2 [MBS:92] Thrun, the Last Troll
+SB: 3 [M12:40] Timely Reinforcements
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/GW Token TDtB ST Oct 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/GW Token TDtB ST Oct 2011.mwDeck.dck
new file mode 100644
index 0000000000..3913457da7
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/GW Token TDtB ST Oct 2011.mwDeck.dck
@@ -0,0 +1,22 @@
+3 [SOM:6] Elspeth Tirel
+4 [M13:229] Sunpetal Grove
+4 [UNH:140] Forest
+1 [M12:16] Gideon Jura
+4 [NPH:155] Shrine of Loyal Legions
+2 [ISD:181] Garruk Relentless
+4 [CNS:72] Intangible Virtue
+3 [SOM:228] Razorverge Thicket
+2 [NPH:57] Dismember
+4 [C14:80] Midnight Haunting
+2 [M12:23] Honor of the Pure
+3 [M13:22] Oblivion Ring
+3 [M12:12] Day of Judgment
+4 [ISD:239] Gavony Township
+10 [UNH:136] Plains
+4 [MBS:8] Hero of Bladehold
+3 [M12:40] Timely Reinforcements
+SB: 3 [ISD:193] Mayor of Avabruck
+SB: 4 [MBS:5] Divine Offering
+SB: 3 [NPH:74] Surgical Extraction
+SB: 2 [ISD:27] Purify the Grave
+SB: 3 [M12:11] Celestial Purge
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/GWb Tokens TDtB ST Oct 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/GWb Tokens TDtB ST Oct 2012.mwDeck.dck
new file mode 100644
index 0000000000..8ca4d6de5f
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/GWb Tokens TDtB ST Oct 2012.mwDeck.dck
@@ -0,0 +1,31 @@
+1 [M13:229] Sunpetal Grove
+5 [UNH:140] Forest
+1 [RTR:1] Angel of Serenity
+1 [DKA:158] Vault of the Archangel
+4 [RTR:243] Overgrown Tomb
+2 [C13:211] Selesnya Charm
+1 [RTR:143] Armada Wurm
+4 [M13:160] Arbor Elf
+4 [ISD:170] Avacyn's Pilgrim
+4 [M13:193] Thragtusk
+3 [ISD:181] Garruk Relentless
+2 [ISD:242] Isolated Chapel
+4 [RTR:248] Temple Garden
+3 [CNS:72] Intangible Virtue
+1 [ISD:115] Sever the Bloodline
+4 [DKA:12] Lingering Souls
+4 [AVR:169] Borderland Ranger
+1 [M13:22] Oblivion Ring
+2 [UNH:136] Plains
+3 [ISD:239] Gavony Township
+3 [DKA:142] Sorin, Lord of Innistrad
+2 [ISD:249] Woodland Cemetery
+1 [UNH:138] Swamp
+SB: 1 [DKA:17] Ray of Revelation
+SB: 2 [AVR:84] Appetite for Brains
+SB: 4 [RTR:148] Centaur Healer
+SB: 2 [RTR:1] Angel of Serenity
+SB: 3 [RTR:213] Deathrite Shaman
+SB: 1 [ISD:115] Sever the Bloodline
+SB: 1 [RTR:208] Vraska the Unseen
+SB: 1 [RTR:164] Golgari Charm
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Goblins Deck Wins TDtB ST Apr 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Goblins Deck Wins TDtB ST Apr 2011.mwDeck.dck
new file mode 100644
index 0000000000..0d338274f1
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Goblins Deck Wins TDtB ST Apr 2011.mwDeck.dck
@@ -0,0 +1,46 @@
+1 [POR:214] Mountain
+4 [MBS:64] Goblin Wardriver
+1 [WWK:145] Tectonic Edge
+3 [M10:139] Goblin Chieftain
+1 [M12:138] Goblin Chieftain
+1 [SHM:296] Mountain
+1 [ARC:147] Mountain
+1 [RTR:267] Mountain
+1 [C13:352] Mountain
+4 [ZEN:125] Goblin Bushwhacker
+1 [DDE:69] Mountain
+2 [ZEN:126] Goblin Guide
+3 [MPRP:47] Burst Lightning
+1 [ZEN:226] Teetering Peaks
+1 [SOM:81] Arc Trail
+1 [S00:102] Mountain
+2 [MM2:127] Spikeshot Elder
+1 [LEA:283] Mountain
+1 [MMQ:345] Mountain
+1 [RAV:300] Mountain
+2 [GPX:6] Goblin Guide
+4 [M11:135] Ember Hauler
+2 [JR:1] Lightning Bolt
+1 [M10:146] Lightning Bolt
+1 [M10:243] Mountain
+1 [M12:242] Mountain
+2 [ROE:166] Staggershock
+1 [C14:313] Tectonic Edge
+1 [MIR:301] Mountain
+1 [DDL:77] Mountain
+2 [GRC:48] Staggershock
+1 [ZEN:119] Burst Lightning
+1 [DD3B:60] Mountain
+3 [FNMP:136] Teetering Peaks
+2 [SOM:104] Spikeshot Elder
+1 [HOP:163] Mountain
+1 [LEB:163] Lightning Bolt
+1 [SOM:243] Mountain
+SB: 2 [M12:151] Manic Vandal
+SB: 2 [M13:141] Mark of Mutiny
+SB: 1 [DDN:23] Arc Trail
+SB: 1 [SOM:196] Ratchet Bomb
+SB: 2 [PC2:39] Arc Trail
+SB: 2 [PC2:47] Mark of Mutiny
+SB: 3 [M14:215] Ratchet Bomb
+SB: 2 [M11:151] Manic Vandal
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Golgari Constellation TDtB ST Dec 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Golgari Constellation TDtB ST Dec 2014.mwDeck.dck
new file mode 100644
index 0000000000..aa1635ddd9
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Golgari Constellation TDtB ST Dec 2014.mwDeck.dck
@@ -0,0 +1,28 @@
+2 [THS:223] Nykthos, Shrine to Nyx
+3 [THS:110] Whip of Erebos
+5 [UNH:140] Forest
+4 [JOU:122] Eidolon of Blossoms
+2 [THS:155] Commune with the Gods
+4 [JOU:165] Temple of Malady
+2 [JOU:154] Pharika, God of Affliction
+3 [JOU:66] Doomwake Giant
+2 [KTK:248] Windswept Heath
+2 [KTK:235] Jungle Hollow
+2 [THS:107] Thoughtseize
+4 [M15:198] Satyr Wayfinder
+4 [M15:244] Llanowar Wastes
+3 [M15:178] Hornet Queen
+4 [BNG:119] Courser of Kruphix
+4 [KTK:81] Murderous Cut
+1 [M15:248] Urborg, Tomb of Yawgmoth
+2 [THS:90] Hero's Downfall
+1 [C14:191] Elvish Mystic
+4 [THS:180] Sylvan Caryatid
+2 [UNH:138] Swamp
+SB: 2 [C14:158] Read the Bones
+SB: 2 [C14:213] Reclamation Sage
+SB: 1 [JOU:154] Pharika, God of Affliction
+SB: 2 [THS:90] Hero's Downfall
+SB: 2 [THS:150] Arbor Colossus
+SB: 4 [BNG:65] Drown in Sorrow
+SB: 2 [THS:107] Thoughtseize
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Golgari Control TDtB ST Aug 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Golgari Control TDtB ST Aug 2013.mwDeck.dck
new file mode 100644
index 0000000000..e64a0145ee
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Golgari Control TDtB ST Aug 2013.mwDeck.dck
@@ -0,0 +1,32 @@
+1 [RTR:83] Underworld Connections
+1 [UNH:140] Forest
+4 [RTR:63] Desecration Demon
+3 [M14:195] Scavenging Ooze
+2 [RTR:141] Abrupt Decay
+4 [RTR:243] Overgrown Tomb
+3 [M14:101] Lifebane Zombie
+4 [M13:193] Thragtusk
+2 [C14:167] Tragic Slip
+1 [C14:295] Evolving Wilds
+3 [M14:228] Mutavault
+2 [C14:140] Disciple of Bolas
+1 [RTR:208] Vraska the Unseen
+1 [M14:96] Doom Blade
+3 [C14:150] Mutilate
+3 [C14:161] Sign in Blood
+1 [DGM:93] Putrefy
+2 [GTC:63] Devour Flesh
+4 [ISD:249] Woodland Cemetery
+13 [UNH:138] Swamp
+3 [ISD:105] Liliana of the Veil
+SB: 1 [RTR:83] Underworld Connections
+SB: 1 [M14:101] Lifebane Zombie
+SB: 2 [AVR:94] Demonic Rising
+SB: 2 [M14:215] Ratchet Bomb
+SB: 1 [M14:190] Primeval Bounty
+SB: 1 [C14:150] Mutilate
+SB: 1 [RTR:208] Vraska the Unseen
+SB: 3 [M14:97] Duress
+SB: 1 [RTR:164] Golgari Charm
+SB: 1 [RTR:141] Abrupt Decay
+SB: 1 [ISD:105] Liliana of the Veil
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Gr Aggro TDtB ST Apr 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Gr Aggro TDtB ST Apr 2012.mwDeck.dck
new file mode 100644
index 0000000000..67b764d809
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Gr Aggro TDtB ST Apr 2012.mwDeck.dck
@@ -0,0 +1,29 @@
+4 [NPH:161] Sword of War and Peace
+4 [M13:228] Rootbound Crag
+10 [UNH:140] Forest
+2 [CNS:138] Brimstone Volley
+4 [MBS:81] Green Sun's Zenith
+4 [M12:165] Birds of Paradise
+4 [C14:204] Llanowar Elves
+3 [UNH:139] Mountain
+1 [C13:134] Acidic Slime
+1 [ISD:170] Avacyn's Pilgrim
+1 [ISD:181] Garruk Relentless
+2 [ISD:243] Kessig Wolf Run
+3 [NPH:42] Phyrexian Metamorph
+4 [DKA:127] Strangleroot Geist
+2 [ISD:176] Daybreak Ranger
+4 [SOM:225] Copperline Gorge
+4 [DKA:140] Huntmaster of the Fells
+3 [SOM:91] Galvanic Blast
+SB: 1 [M13:174] Garruk, Primal Hunter
+SB: 2 [M12:150] Manabarbs
+SB: 1 [C13:134] Acidic Slime
+SB: 1 [MBS:138] Sword of Feast and Famine
+SB: 1 [NPH:78] Act of Aggression
+SB: 1 [NPH:130] Batterskull
+SB: 2 [SOM:81] Arc Trail
+SB: 1 [M12:188] Primeval Titan
+SB: 2 [DKA:120] Increasing Savagery
+SB: 1 [M12:197] Stingerfling Spider
+SB: 2 [ISD:127] Ancient Grudge
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Gr Aggro TDtB ST Aug 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Gr Aggro TDtB ST Aug 2012.mwDeck.dck
new file mode 100644
index 0000000000..554e6e1836
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Gr Aggro TDtB ST Aug 2012.mwDeck.dck
@@ -0,0 +1,27 @@
+2 [NPH:161] Sword of War and Peace
+4 [M13:228] Rootbound Crag
+9 [UNH:140] Forest
+2 [MBS:95] Viridian Emissary
+4 [M12:165] Birds of Paradise
+3 [C14:204] Llanowar Elves
+2 [UNH:139] Mountain
+3 [M13:185] Rancor
+1 [M13:150] Thundermaw Hellkite
+4 [ISD:243] Kessig Wolf Run
+4 [DKA:127] Strangleroot Geist
+2 [MBS:138] Sword of Feast and Famine
+2 [AVR:149] Pillar of Flame
+2 [AVR:206] Wolfir Silverheart
+4 [AVR:129] Bonfire of the Damned
+4 [SOM:225] Copperline Gorge
+3 [AVR:169] Borderland Ranger
+3 [DKA:140] Huntmaster of the Fells
+2 [AVR:141] Hound of Griselbrand
+SB: 1 [M13:185] Rancor
+SB: 2 [AVR:149] Pillar of Flame
+SB: 2 [M12:128] Combust
+SB: 3 [AVR:166] Zealous Conscripts
+SB: 2 [C14:184] Whipflare
+SB: 2 [MBS:92] Thrun, the Last Troll
+SB: 1 [DKA:110] Crushing Vines
+SB: 2 [ISD:127] Ancient Grudge
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Gr Aggro TDtB ST Feb 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Gr Aggro TDtB ST Feb 2012.mwDeck.dck
new file mode 100644
index 0000000000..98ede8517f
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Gr Aggro TDtB ST Feb 2012.mwDeck.dck
@@ -0,0 +1,25 @@
+2 [MBS:66] Hero of Oxid Ridge
+4 [NPH:161] Sword of War and Peace
+4 [M13:228] Rootbound Crag
+7 [UNH:140] Forest
+1 [CNS:138] Brimstone Volley
+4 [M12:146] Incinerate
+1 [MBS:92] Thrun, the Last Troll
+4 [M12:165] Birds of Paradise
+4 [C14:204] Llanowar Elves
+6 [UNH:139] Mountain
+2 [ISD:243] Kessig Wolf Run
+1 [NPH:42] Phyrexian Metamorph
+4 [DKA:127] Strangleroot Geist
+4 [NPH:86] Gut Shot
+4 [DKA:93] Hellrider
+4 [SOM:225] Copperline Gorge
+2 [DKA:140] Huntmaster of the Fells
+2 [SOM:91] Galvanic Blast
+SB: 2 [KTK:142] Naturalize
+SB: 2 [ISD:166] Traitorous Blood
+SB: 2 [MBS:138] Sword of Feast and Famine
+SB: 3 [NPH:57] Dismember
+SB: 2 [NPH:38] Mental Misstep
+SB: 2 [MBS:92] Thrun, the Last Troll
+SB: 2 [ISD:127] Ancient Grudge
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Gr Aggro TDtB ST Jul 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Gr Aggro TDtB ST Jul 2012.mwDeck.dck
new file mode 100644
index 0000000000..63456e38ea
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Gr Aggro TDtB ST Jul 2012.mwDeck.dck
@@ -0,0 +1,28 @@
+1 [NPH:161] Sword of War and Peace
+4 [M13:228] Rootbound Crag
+8 [UNH:140] Forest
+1 [MBS:92] Thrun, the Last Troll
+4 [MBS:81] Green Sun's Zenith
+4 [M12:165] Birds of Paradise
+4 [C14:204] Llanowar Elves
+2 [UNH:139] Mountain
+4 [ISD:243] Kessig Wolf Run
+3 [DKA:127] Strangleroot Geist
+2 [AVR:226] Cavern of Souls
+3 [MBS:138] Sword of Feast and Famine
+3 [AVR:206] Wolfir Silverheart
+4 [AVR:129] Bonfire of the Damned
+2 [NPH:57] Dismember
+4 [SOM:225] Copperline Gorge
+3 [AVR:169] Borderland Ranger
+4 [DKA:140] Huntmaster of the Fells
+SB: 1 [NPH:161] Sword of War and Peace
+SB: 2 [AVR:149] Pillar of Flame
+SB: 1 [M12:128] Combust
+SB: 1 [AVR:206] Wolfir Silverheart
+SB: 2 [C14:283] Wurmcoil Engine
+SB: 2 [AVR:166] Zealous Conscripts
+SB: 1 [M15:192] Plummet
+SB: 1 [NPH:103] Beast Within
+SB: 2 [DKA:110] Crushing Vines
+SB: 2 [ISD:127] Ancient Grudge
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Gr Aggro TDtB ST May 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Gr Aggro TDtB ST May 2012.mwDeck.dck
new file mode 100644
index 0000000000..b926075697
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Gr Aggro TDtB ST May 2012.mwDeck.dck
@@ -0,0 +1,28 @@
+3 [NPH:161] Sword of War and Peace
+4 [M13:228] Rootbound Crag
+9 [UNH:140] Forest
+1 [M12:146] Incinerate
+4 [MBS:81] Green Sun's Zenith
+4 [M12:165] Birds of Paradise
+4 [C14:204] Llanowar Elves
+3 [UNH:139] Mountain
+1 [C13:134] Acidic Slime
+2 [ISD:181] Garruk Relentless
+2 [ISD:243] Kessig Wolf Run
+4 [DKA:127] Strangleroot Geist
+1 [ISD:176] Daybreak Ranger
+2 [DKA:93] Hellrider
+1 [AVR:149] Pillar of Flame
+3 [AVR:205] Wolfir Avenger
+1 [AVR:206] Wolfir Silverheart
+4 [SOM:225] Copperline Gorge
+4 [DKA:140] Huntmaster of the Fells
+3 [SOM:91] Galvanic Blast
+SB: 3 [KTK:142] Naturalize
+SB: 1 [NPH:161] Sword of War and Peace
+SB: 1 [MBS:138] Sword of Feast and Famine
+SB: 2 [NPH:78] Act of Aggression
+SB: 2 [AVR:166] Zealous Conscripts
+SB: 2 [NPH:130] Batterskull
+SB: 1 [MBS:92] Thrun, the Last Troll
+SB: 3 [SOM:81] Arc Trail
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Grixis Control TDtB ST Jan 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Grixis Control TDtB ST Jan 2012.mwDeck.dck
new file mode 100644
index 0000000000..10547d5c10
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Grixis Control TDtB ST Jan 2012.mwDeck.dck
@@ -0,0 +1,33 @@
+2 [MBS:75] Slagstorm
+1 [MBS:43] Go for the Throat
+1 [NPH:130] Batterskull
+3 [M13:223] Drowned Catacomb
+3 [M13:222] Dragonskull Summit
+2 [M12:111] Sorin's Vengeance
+2 [UNH:139] Mountain
+4 [ISD:78] Snapcaster Mage
+4 [ISD:55] Forbidden Alchemy
+2 [C14:136] Black Sun's Zenith
+1 [ISD:247] Stensia Bloodhall
+2 [M15:51] Dissipate
+3 [M14:96] Doom Blade
+4 [SOM:226] Darkslick Shores
+1 [SOM:224] Blackcleave Cliffs
+1 [ISD:119] Tribute to Hunger
+4 [UNH:137] Island
+3 [ISD:139] Desperate Ravings
+4 [ISD:248] Sulfur Falls
+4 [UNH:138] Swamp
+2 [ISD:215] Olivia Voldaren
+3 [SOM:91] Galvanic Blast
+4 [M12:63] Mana Leak
+SB: 1 [C14:136] Black Sun's Zenith
+SB: 3 [M14:215] Ratchet Bomb
+SB: 1 [MBS:74] Red Sun's Zenith
+SB: 1 [C14:283] Wurmcoil Engine
+SB: 1 [M14:96] Doom Blade
+SB: 1 [M15:51] Dissipate
+SB: 2 [M12:72] Phantasmal Image
+SB: 2 [NPH:159] Spellskite
+SB: 2 [M15:71] Negate
+SB: 1 [NPH:1] Karn Liberated
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Grixis Tezzeret TDtB ST Feb 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Grixis Tezzeret TDtB ST Feb 2011.mwDeck.dck
new file mode 100644
index 0000000000..fe801c1975
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Grixis Tezzeret TDtB ST Feb 2011.mwDeck.dck
@@ -0,0 +1,31 @@
+4 [MBS:97] Tezzeret, Agent of Bolas
+1 [SOM:176] Mindslaver
+2 [MBS:75] Slagstorm
+1 [MBS:34] Treasure Mage
+4 [WWK:134] Creeping Tar Pit
+2 [SOM:46] Stoic Rebuttal
+4 [C14:239] Everflowing Chalice
+2 [M11:154] Pyroclasm
+2 [UNH:139] Mountain
+3 [C14:313] Tectonic Edge
+4 [M11:70] Preordain
+4 [ZEN:223] Scalding Tarn
+3 [SOM:218] Tumble Magnet
+1 [C14:283] Wurmcoil Engine
+2 [MBS:145] Inkmoth Nexus
+3 [MBS:134] Sphere of the Suns
+3 [SOM:226] Darkslick Shores
+4 [GTC:234] Prophetic Prism
+3 [WWK:31] Jace, the Mind Sculptor
+1 [SOM:224] Blackcleave Cliffs
+2 [SOM:179] Mox Opal
+3 [UNH:137] Island
+2 [SOM:91] Galvanic Blast
+SB: 2 [SOM:46] Stoic Rebuttal
+SB: 1 [M14:215] Ratchet Bomb
+SB: 1 [SOM:96] Kuldotha Rebirth
+SB: 4 [ZEN:70] Spreading Seas
+SB: 3 [M14:97] Duress
+SB: 1 [WWK:31] Jace, the Mind Sculptor
+SB: 2 [M11:154] Pyroclasm
+SB: 1 [M12:52] Flashfreeze
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Grixis Twin Exarch TDtB ST May 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Grixis Twin Exarch TDtB ST May 2011.mwDeck.dck
new file mode 100644
index 0000000000..71e8b6147e
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Grixis Twin Exarch TDtB ST May 2011.mwDeck.dck
@@ -0,0 +1,25 @@
+1 [MBS:21] Consecrated Sphinx
+2 [MBS:43] Go for the Throat
+4 [WWK:134] Creeping Tar Pit
+2 [WWK:137] Halimar Depths
+4 [ROE:115] Inquisition of Kozilek
+3 [NPH:159] Spellskite
+4 [C13:37] Deceiver Exarch
+4 [ROE:165] Splinter Twin
+2 [UNH:139] Mountain
+2 [C14:115] Into the Roil
+4 [M11:70] Preordain
+4 [ZEN:223] Scalding Tarn
+2 [NPH:57] Dismember
+4 [SOM:226] Darkslick Shores
+3 [M14:97] Duress
+3 [WWK:31] Jace, the Mind Sculptor
+4 [SOM:224] Blackcleave Cliffs
+4 [UNH:137] Island
+4 [M12:63] Mana Leak
+SB: 1 [MBS:21] Consecrated Sphinx
+SB: 2 [KTK:120] Shatter
+SB: 2 [M12:128] Combust
+SB: 3 [SOM:50] Twisted Image
+SB: 4 [WWK:25] Calcite Snapper
+SB: 3 [M11:154] Pyroclasm
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Gruul Aggro TDtB ST Apr 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Gruul Aggro TDtB ST Apr 2013.mwDeck.dck
new file mode 100644
index 0000000000..422f066eea
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Gruul Aggro TDtB ST Apr 2013.mwDeck.dck
@@ -0,0 +1,22 @@
+4 [M13:228] Rootbound Crag
+4 [GTC:216] Burning-Tree Emissary
+4 [GTC:215] Boros Reckoner
+4 [M13:147] Searing Spear
+12 [UNH:139] Mountain
+2 [M13:185] Rancor
+4 [M13:171] Flinthoof Boar
+4 [RTR:220] Rakdos Cackler
+1 [RTR:248] Temple Garden
+3 [DKA:93] Hellrider
+2 [AVR:149] Pillar of Flame
+4 [ISD:164] Stromkirk Noble
+4 [GTC:247] Stomping Ground
+4 [AVR:144] Lightning Mauler
+4 [GTC:167] Ghor-Clan Rampager
+SB: 1 [RTR:93] Electrickery
+SB: 2 [C14:278] Tormod's Crypt
+SB: 2 [ISD:166] Traitorous Blood
+SB: 1 [AVR:149] Pillar of Flame
+SB: 3 [GTC:106] Skullcrack
+SB: 2 [C14:172] Blasphemous Act
+SB: 4 [M13:155] Volcanic Strength
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Gruul Aggro TDtB ST Feb 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Gruul Aggro TDtB ST Feb 2013.mwDeck.dck
new file mode 100644
index 0000000000..95a460a583
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Gruul Aggro TDtB ST Feb 2013.mwDeck.dck
@@ -0,0 +1,20 @@
+4 [RTR:86] Ash Zealot
+4 [M13:228] Rootbound Crag
+4 [GTC:216] Burning-Tree Emissary
+4 [GTC:215] Boros Reckoner
+4 [M13:147] Searing Spear
+2 [M13:155] Volcanic Strength
+10 [UNH:139] Mountain
+4 [M13:185] Rancor
+4 [M13:171] Flinthoof Boar
+4 [RTR:220] Rakdos Cackler
+4 [AVR:149] Pillar of Flame
+4 [ISD:164] Stromkirk Noble
+4 [GTC:247] Stomping Ground
+4 [AVR:144] Lightning Mauler
+SB: 3 [RTR:101] Mizzium Mortars
+SB: 1 [DKA:93] Hellrider
+SB: 4 [GTC:106] Skullcrack
+SB: 2 [C14:172] Blasphemous Act
+SB: 3 [GTC:156] Domri Rade
+SB: 2 [M13:155] Volcanic Strength
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Gruul Aggro TDtB ST Jul 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Gruul Aggro TDtB ST Jul 2013.mwDeck.dck
new file mode 100644
index 0000000000..9a1d3c60ef
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Gruul Aggro TDtB ST Jul 2013.mwDeck.dck
@@ -0,0 +1,19 @@
+4 [M13:228] Rootbound Crag
+4 [GTC:216] Burning-Tree Emissary
+4 [GTC:215] Boros Reckoner
+4 [M13:147] Searing Spear
+12 [UNH:139] Mountain
+4 [M13:171] Flinthoof Boar
+4 [RTR:220] Rakdos Cackler
+2 [RTR:248] Temple Garden
+4 [DKA:93] Hellrider
+3 [AVR:149] Pillar of Flame
+4 [ISD:164] Stromkirk Noble
+4 [GTC:247] Stomping Ground
+4 [GTC:167] Ghor-Clan Rampager
+4 [GTC:98] Madcap Skills
+SB: 3 [M13:141] Mark of Mutiny
+SB: 2 [RTR:93] Electrickery
+SB: 3 [RTR:101] Mizzium Mortars
+SB: 3 [GTC:106] Skullcrack
+SB: 4 [M13:155] Volcanic Strength
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Gruul Aggro TDtB ST Jun 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Gruul Aggro TDtB ST Jun 2013.mwDeck.dck
new file mode 100644
index 0000000000..d6e8c77502
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Gruul Aggro TDtB ST Jun 2013.mwDeck.dck
@@ -0,0 +1,23 @@
+3 [GTC:90] Firefist Striker
+4 [M13:228] Rootbound Crag
+4 [GTC:216] Burning-Tree Emissary
+4 [GTC:215] Boros Reckoner
+3 [M13:147] Searing Spear
+12 [UNH:139] Mountain
+4 [M13:171] Flinthoof Boar
+4 [RTR:220] Rakdos Cackler
+1 [RTR:248] Temple Garden
+3 [DKA:93] Hellrider
+4 [AVR:149] Pillar of Flame
+4 [ISD:164] Stromkirk Noble
+4 [GTC:247] Stomping Ground
+3 [AVR:144] Lightning Mauler
+3 [GTC:167] Ghor-Clan Rampager
+SB: 2 [RTR:101] Mizzium Mortars
+SB: 1 [C14:278] Tormod's Crypt
+SB: 3 [RTR:86] Ash Zealot
+SB: 2 [ISD:166] Traitorous Blood
+SB: 2 [GTC:106] Skullcrack
+SB: 2 [C14:172] Blasphemous Act
+SB: 1 [M13:147] Searing Spear
+SB: 2 [M13:155] Volcanic Strength
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Gruul Aggro TDtB ST Mar 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Gruul Aggro TDtB ST Mar 2013.mwDeck.dck
new file mode 100644
index 0000000000..7bd7ad080d
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Gruul Aggro TDtB ST Mar 2013.mwDeck.dck
@@ -0,0 +1,20 @@
+4 [M13:228] Rootbound Crag
+4 [GTC:216] Burning-Tree Emissary
+4 [GTC:215] Boros Reckoner
+4 [CNS:138] Brimstone Volley
+4 [M13:147] Searing Spear
+12 [UNH:139] Mountain
+4 [M13:171] Flinthoof Boar
+4 [RTR:220] Rakdos Cackler
+4 [DKA:93] Hellrider
+1 [AVR:149] Pillar of Flame
+4 [ISD:164] Stromkirk Noble
+4 [GTC:247] Stomping Ground
+4 [AVR:144] Lightning Mauler
+3 [GTC:167] Ghor-Clan Rampager
+SB: 1 [RTR:101] Mizzium Mortars
+SB: 3 [DKA:149] Grafdigger's Cage
+SB: 2 [ISD:166] Traitorous Blood
+SB: 4 [GTC:106] Skullcrack
+SB: 2 [C14:172] Blasphemous Act
+SB: 3 [M13:155] Volcanic Strength
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Gruul Aggro TDtB ST May 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Gruul Aggro TDtB ST May 2013.mwDeck.dck
new file mode 100644
index 0000000000..17ef7447b2
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Gruul Aggro TDtB ST May 2013.mwDeck.dck
@@ -0,0 +1,18 @@
+4 [M13:228] Rootbound Crag
+4 [GTC:216] Burning-Tree Emissary
+4 [GTC:215] Boros Reckoner
+3 [M13:147] Searing Spear
+13 [UNH:139] Mountain
+4 [M13:171] Flinthoof Boar
+4 [RTR:220] Rakdos Cackler
+4 [DKA:93] Hellrider
+4 [AVR:149] Pillar of Flame
+4 [ISD:164] Stromkirk Noble
+4 [GTC:247] Stomping Ground
+4 [AVR:144] Lightning Mauler
+4 [GTC:167] Ghor-Clan Rampager
+SB: 3 [DKA:101] Pyreheart Wolf
+SB: 2 [RTR:101] Mizzium Mortars
+SB: 2 [ISD:166] Traitorous Blood
+SB: 4 [GTC:106] Skullcrack
+SB: 4 [M13:155] Volcanic Strength
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Gruul Deck Wins TDtB ST Apr 2015.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Gruul Deck Wins TDtB ST Apr 2015.mwDeck.dck
new file mode 100644
index 0000000000..fe36ef1f74
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Gruul Deck Wins TDtB ST Apr 2015.mwDeck.dck
@@ -0,0 +1,25 @@
+1 [THS:224] Temple of Abandon
+1 [UNH:140] Forest
+4 [KTK:118] Monastery Swiftspear
+4 [FRF:118] Wild Slash
+4 [KTK:249] Wooded Foothills
+4 [M15:141] Foundry Street Denizen
+1 [M15:142] Frenzied Goblin
+4 [M15:164] Stoke the Flames
+10 [UNH:139] Mountain
+4 [M15:155] Lightning Strike
+2 [M15:145] Goblin Rabblemaster
+4 [KTK:111] Hordeling Outburst
+1 [KTK:130] Become Immense
+1 [DTK:146] Lightning Berserker
+4 [DTK:135] Dragon Fodder
+3 [DTK:169] Zurgo Bellstriker
+4 [DTK:213] Atarka's Command
+4 [JOU:163] Mana Confluence
+SB: 2 [M15:145] Goblin Rabblemaster
+SB: 1 [BNG:110] Scouring Sands
+SB: 2 [JOU:162] Hall of Triumph
+SB: 4 [JOU:94] Eidolon of the Great Revel
+SB: 4 [DTK:151] Roast
+SB: 1 [FRF:102] Goblin Heelcutter
+SB: 1 [THS:192] Destructive Revelry
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Gruul Deck Wins TDtB ST May 2015.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Gruul Deck Wins TDtB ST May 2015.mwDeck.dck
new file mode 100644
index 0000000000..8b77597ad7
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Gruul Deck Wins TDtB ST May 2015.mwDeck.dck
@@ -0,0 +1,25 @@
+1 [THS:224] Temple of Abandon
+1 [UNH:140] Forest
+4 [KTK:118] Monastery Swiftspear
+4 [FRF:118] Wild Slash
+4 [KTK:249] Wooded Foothills
+4 [M15:141] Foundry Street Denizen
+4 [M15:164] Stoke the Flames
+10 [UNH:139] Mountain
+4 [M15:155] Lightning Strike
+2 [M15:145] Goblin Rabblemaster
+4 [KTK:111] Hordeling Outburst
+1 [KTK:130] Become Immense
+2 [DTK:146] Lightning Berserker
+4 [DTK:135] Dragon Fodder
+3 [DTK:169] Zurgo Bellstriker
+4 [DTK:213] Atarka's Command
+4 [JOU:163] Mana Confluence
+SB: 2 [M15:145] Goblin Rabblemaster
+SB: 1 [JOU:100] Harness by Force
+SB: 1 [BNG:110] Scouring Sands
+SB: 4 [JOU:94] Eidolon of the Great Revel
+SB: 1 [DTK:150] Rending Volley
+SB: 1 [FRF:102] Goblin Heelcutter
+SB: 4 [DTK:151] Roast
+SB: 1 [THS:192] Destructive Revelry
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Gruul Dragons TDtB ST Apr 2015.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Gruul Dragons TDtB ST Apr 2015.mwDeck.dck
new file mode 100644
index 0000000000..9ae5cd7287
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Gruul Dragons TDtB ST Apr 2015.mwDeck.dck
@@ -0,0 +1,25 @@
+4 [THS:224] Temple of Abandon
+4 [THS:143] Stormbreath Dragon
+6 [UNH:140] Forest
+1 [FRF:170] Rugged Highlands
+4 [KTK:249] Wooded Foothills
+4 [KTK:106] Crater's Claws
+3 [KTK:134] Heir of the Wilds
+1 [DTK:249] Haven of the Spirit Dragon
+5 [UNH:139] Mountain
+4 [M15:145] Goblin Rabblemaster
+4 [KTK:144] Rattleclaw Mystic
+2 [JOU:163] Mana Confluence
+3 [DTK:210] Surrak, the Hunt Caller
+4 [THS:152] Boon Satyr
+2 [DTK:134] Draconic Roar
+4 [C14:191] Elvish Mystic
+4 [DTK:162] Thunderbreak Regent
+1 [DTK:151] Roast
+SB: 3 [M15:177] Hornet Nest
+SB: 3 [THS:209] Xenagos, the Reveler
+SB: 2 [KTK:97] Arc Lightning
+SB: 1 [M15:192] Plummet
+SB: 3 [FRF:118] Wild Slash
+SB: 1 [DTK:151] Roast
+SB: 2 [THS:192] Destructive Revelry
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Gruul Midrange TDtB ST Aug 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Gruul Midrange TDtB ST Aug 2013.mwDeck.dck
new file mode 100644
index 0000000000..6784a59698
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Gruul Midrange TDtB ST Aug 2013.mwDeck.dck
@@ -0,0 +1,21 @@
+4 [M13:228] Rootbound Crag
+9 [UNH:140] Forest
+3 [M14:195] Scavenging Ooze
+6 [UNH:139] Mountain
+3 [RTR:101] Mizzium Mortars
+4 [M13:150] Thundermaw Hellkite
+4 [M13:160] Arbor Elf
+4 [M13:171] Flinthoof Boar
+4 [DKA:127] Strangleroot Geist
+4 [DKA:93] Hellrider
+1 [M14:228] Mutavault
+4 [GTC:247] Stomping Ground
+4 [GTC:167] Ghor-Clan Rampager
+4 [GTC:156] Domri Rade
+2 [C14:191] Elvish Mystic
+SB: 2 [M15:134] Chandra, Pyromaster
+SB: 2 [AVR:149] Pillar of Flame
+SB: 2 [AVR:129] Bonfire of the Damned
+SB: 2 [M14:171] Fog
+SB: 3 [M13:155] Volcanic Strength
+SB: 4 [M14:130] Burning Earth
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Gruul Monsters TDtB ST Mar 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Gruul Monsters TDtB ST Mar 2014.mwDeck.dck
new file mode 100644
index 0000000000..405ab3acdc
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Gruul Monsters TDtB ST Mar 2014.mwDeck.dck
@@ -0,0 +1,26 @@
+4 [THS:224] Temple of Abandon
+4 [THS:143] Stormbreath Dragon
+8 [UNH:140] Forest
+2 [THS:209] Xenagos, the Reveler
+1 [M14:195] Scavenging Ooze
+5 [UNH:139] Mountain
+3 [RTR:101] Mizzium Mortars
+4 [BNG:119] Courser of Kruphix
+2 [M14:228] Mutavault
+4 [GTC:247] Stomping Ground
+1 [DGM:128] Flesh // Blood
+4 [THS:172] Polukranos, World Eater
+4 [GTC:167] Ghor-Clan Rampager
+4 [GTC:156] Domri Rade
+2 [BNG:156] Xenagos, God of Revels
+4 [C14:191] Elvish Mystic
+4 [THS:180] Sylvan Caryatid
+SB: 1 [RTR:101] Mizzium Mortars
+SB: 1 [M15:134] Chandra, Pyromaster
+SB: 2 [M14:155] Shock
+SB: 1 [THS:153] Bow of Nylea
+SB: 1 [DGM:99] Ruric Thar, the Unbowed
+SB: 1 [THS:150] Arbor Colossus
+SB: 2 [M15:192] Plummet
+SB: 4 [THS:162] Mistcutter Hydra
+SB: 2 [THS:192] Destructive Revelry
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Gruul Team TDtB ST Nov 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Gruul Team TDtB ST Nov 2013.mwDeck.dck
new file mode 100644
index 0000000000..4d48da0b7f
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Gruul Team TDtB ST Nov 2013.mwDeck.dck
@@ -0,0 +1,21 @@
+4 [THS:224] Temple of Abandon
+4 [THS:143] Stormbreath Dragon
+10 [UNH:140] Forest
+2 [THS:209] Xenagos, the Reveler
+4 [M14:182] Kalonian Tusker
+6 [UNH:139] Mountain
+3 [M14:202] Witchstalker
+4 [GTC:247] Stomping Ground
+2 [DGM:128] Flesh // Blood
+3 [THS:172] Polukranos, World Eater
+3 [GTC:167] Ghor-Clan Rampager
+4 [GTC:156] Domri Rade
+4 [THS:152] Boon Satyr
+4 [C14:191] Elvish Mystic
+3 [THS:180] Sylvan Caryatid
+SB: 2 [THS:157] Fade into Antiquity
+SB: 3 [RTR:101] Mizzium Mortars
+SB: 2 [RTR:231] Pithing Needle
+SB: 2 [DGM:99] Ruric Thar, the Unbowed
+SB: 2 [M15:192] Plummet
+SB: 4 [THS:162] Mistcutter Hydra
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Hoof there it is TDtB ST Nov 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Hoof there it is TDtB ST Nov 2012.mwDeck.dck
new file mode 100644
index 0000000000..6709a67d85
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Hoof there it is TDtB ST Nov 2012.mwDeck.dck
@@ -0,0 +1,22 @@
+4 [AVR:172] Craterhoof Behemoth
+4 [AVR:194] Somberwald Sage
+6 [UNH:140] Forest
+2 [RTR:241] Hallowed Fountain
+4 [RTR:243] Overgrown Tomb
+4 [M13:160] Arbor Elf
+4 [ISD:170] Avacyn's Pilgrim
+4 [RTR:165] Grisly Salvage
+3 [ISD:122] Unburial Rites
+4 [RTR:248] Temple Garden
+4 [DKA:128] Tracker's Instincts
+3 [RTR:213] Deathrite Shaman
+3 [ISD:196] Mulch
+1 [M14:229] Shimmering Grotto
+4 [DKA:12] Lingering Souls
+2 [ISD:239] Gavony Township
+4 [ISD:249] Woodland Cemetery
+SB: 2 [AVR:32] Restoration Angel
+SB: 3 [RTR:178] Loxodon Smiter
+SB: 4 [M13:193] Thragtusk
+SB: 2 [AVR:226] Cavern of Souls
+SB: 4 [RTR:1] Angel of Serenity
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Human Reanimator TDtB ST Feb 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Human Reanimator TDtB ST Feb 2013.mwDeck.dck
new file mode 100644
index 0000000000..01acdbfab3
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Human Reanimator TDtB ST Feb 2013.mwDeck.dck
@@ -0,0 +1,26 @@
+4 [C13:11] Fiend Hunter
+3 [M13:229] Sunpetal Grove
+4 [AVR:1] Angel of Glory's Rise
+1 [RTR:141] Abrupt Decay
+4 [GTC:150] Cartel Aristocrat
+1 [RTR:243] Overgrown Tomb
+4 [RTR:165] Grisly Salvage
+1 [RTR:238] Blood Crypt
+4 [M13:170] Farseek
+4 [ISD:122] Unburial Rites
+2 [RTR:248] Temple Garden
+4 [AVR:226] Cavern of Souls
+4 [C14:175] Faithless Looting
+4 [ISD:196] Mulch
+4 [GTC:247] Stomping Ground
+1 [GTC:245] Sacred Foundry
+4 [DKA:140] Huntmaster of the Fells
+1 [GTC:242] Godless Shrine
+2 [ISD:238] Clifftop Retreat
+4 [ISD:249] Woodland Cemetery
+SB: 2 [ISD:161] Rolling Temblor
+SB: 3 [M13:193] Thragtusk
+SB: 2 [ISD:27] Purify the Grave
+SB: 3 [RTR:148] Centaur Healer
+SB: 2 [M14:97] Duress
+SB: 3 [RTR:141] Abrupt Decay
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Human Reanimator TDtB ST Mar 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Human Reanimator TDtB ST Mar 2013.mwDeck.dck
new file mode 100644
index 0000000000..c3347d8770
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Human Reanimator TDtB ST Mar 2013.mwDeck.dck
@@ -0,0 +1,26 @@
+4 [C13:11] Fiend Hunter
+2 [M13:228] Rootbound Crag
+3 [GTC:216] Burning-Tree Emissary
+4 [AVR:1] Angel of Glory's Rise
+2 [GTC:150] Cartel Aristocrat
+4 [RTR:243] Overgrown Tomb
+4 [RTR:165] Grisly Salvage
+4 [RTR:238] Blood Crypt
+4 [ISD:122] Unburial Rites
+2 [AVR:226] Cavern of Souls
+3 [RTR:248] Temple Garden
+4 [ISD:242] Isolated Chapel
+4 [C14:175] Faithless Looting
+4 [ISD:196] Mulch
+2 [GTC:247] Stomping Ground
+3 [DKA:140] Huntmaster of the Fells
+1 [ISD:238] Clifftop Retreat
+1 [ISD:249] Woodland Cemetery
+2 [GTC:82] Undercity Informer
+3 [ISD:105] Liliana of the Veil
+SB: 2 [ISD:161] Rolling Temblor
+SB: 3 [M13:193] Thragtusk
+SB: 3 [DKA:138] Falkenrath Aristocrat
+SB: 2 [AVR:166] Zealous Conscripts
+SB: 1 [DKA:140] Huntmaster of the Fells
+SB: 4 [RTR:141] Abrupt Decay
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Illusions TDtB ST Dec 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Illusions TDtB ST Dec 2011.mwDeck.dck
new file mode 100644
index 0000000000..cb1a72c47e
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Illusions TDtB ST Dec 2011.mwDeck.dck
@@ -0,0 +1,25 @@
+4 [M13:225] Glacial Fortress
+4 [ISD:78] Snapcaster Mage
+4 [M12:70] Phantasmal Bear
+3 [NPH:86] Gut Shot
+4 [SOM:229] Seachrome Coast
+4 [NPH:35] Gitaxian Probe
+2 [ISD:213] Geist of Saint Traft
+4 [NPH:48] Vapor Snag
+3 [ISD:244] Moorland Haunt
+3 [M12:72] Phantasmal Image
+4 [ISD:51] Delver of Secrets
+9 [UNH:137] Island
+4 [M12:62] Lord of the Unreal
+4 [M12:73] Ponder
+4 [M12:63] Mana Leak
+SB: 1 [NPH:86] Gut Shot
+SB: 2 [M15:51] Dissipate
+SB: 1 [MBS:115] Mortarpod
+SB: 1 [ISD:244] Moorland Haunt
+SB: 3 [NPH:38] Mental Misstep
+SB: 2 [M13:22] Oblivion Ring
+SB: 1 [M12:72] Phantasmal Image
+SB: 1 [M15:71] Negate
+SB: 2 [M12:52] Flashfreeze
+SB: 1 [C14:79] Mentor of the Meek
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Illusions TDtB ST Jan 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Illusions TDtB ST Jan 2012.mwDeck.dck
new file mode 100644
index 0000000000..71da597151
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Illusions TDtB ST Jan 2012.mwDeck.dck
@@ -0,0 +1,26 @@
+2 [NPH:161] Sword of War and Peace
+4 [M13:225] Glacial Fortress
+4 [ISD:78] Snapcaster Mage
+4 [M12:70] Phantasmal Bear
+3 [NPH:86] Gut Shot
+4 [SOM:229] Seachrome Coast
+3 [NPH:35] Gitaxian Probe
+3 [ISD:213] Geist of Saint Traft
+4 [NPH:48] Vapor Snag
+4 [ISD:244] Moorland Haunt
+3 [M12:72] Phantasmal Image
+4 [ISD:51] Delver of Secrets
+8 [UNH:137] Island
+2 [M12:62] Lord of the Unreal
+4 [M12:73] Ponder
+4 [M12:63] Mana Leak
+SB: 1 [NPH:161] Sword of War and Peace
+SB: 1 [ISD:80] Stitched Drake
+SB: 2 [M15:51] Dissipate
+SB: 2 [M13:75] Unsummon
+SB: 2 [M13:22] Oblivion Ring
+SB: 1 [M12:72] Phantasmal Image
+SB: 3 [M12:40] Timely Reinforcements
+SB: 1 [M12:52] Flashfreeze
+SB: 1 [M15:71] Negate
+SB: 1 [C14:79] Mentor of the Meek
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Illusions TDtB ST Nov 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Illusions TDtB ST Nov 2011.mwDeck.dck
new file mode 100644
index 0000000000..e9843d65ae
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Illusions TDtB ST Nov 2011.mwDeck.dck
@@ -0,0 +1,25 @@
+3 [M13:225] Glacial Fortress
+4 [ISD:78] Snapcaster Mage
+4 [M12:70] Phantasmal Bear
+3 [NPH:86] Gut Shot
+4 [SOM:229] Seachrome Coast
+2 [NPH:57] Dismember
+4 [NPH:35] Gitaxian Probe
+1 [ISD:80] Stitched Drake
+2 [NPH:48] Vapor Snag
+3 [ISD:244] Moorland Haunt
+4 [ISD:51] Delver of Secrets
+4 [M12:72] Phantasmal Image
+10 [UNH:137] Island
+4 [M12:62] Lord of the Unreal
+4 [M12:73] Ponder
+4 [M12:63] Mana Leak
+SB: 3 [ISD:80] Stitched Drake
+SB: 2 [M15:51] Dissipate
+SB: 1 [MBS:115] Mortarpod
+SB: 1 [ISD:244] Moorland Haunt
+SB: 2 [NPH:38] Mental Misstep
+SB: 1 [NPH:159] Spellskite
+SB: 2 [M12:40] Timely Reinforcements
+SB: 1 [M15:71] Negate
+SB: 2 [M12:52] Flashfreeze
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Jeskai Ascendancy TDtB ST Oct 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Jeskai Ascendancy TDtB ST Oct 2014.mwDeck.dck
new file mode 100644
index 0000000000..8fc729be8c
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Jeskai Ascendancy TDtB ST Oct 2014.mwDeck.dck
@@ -0,0 +1,29 @@
+2 [THS:224] Temple of Abandon
+2 [JOU:115] Twinflame
+2 [THS:226] Temple of Mystery
+1 [UNH:140] Forest
+4 [BNG:49] Retraction Helix
+4 [THS:155] Commune with the Gods
+2 [KTK:217] Briber's Purse
+2 [KTK:249] Wooded Foothills
+3 [KTK:36] Dig Through Time
+2 [KTK:233] Flooded Strand
+4 [THS:119] Dragon Mantle
+3 [KTK:123] Tormenting Voice
+2 [KTK:234] Frontier Bivouac
+1 [M15:187] Nissa, Worldwaker
+1 [UNH:139] Mountain
+4 [KTK:144] Rattleclaw Mystic
+2 [M15:249] Yavimaya Coast
+2 [BNG:165] Temple of Plenty
+4 [JOU:163] Mana Confluence
+4 [KTK:180] Jeskai Ascendancy
+1 [UNH:136] Plains
+3 [BNG:150] Kiora's Follower
+1 [UNH:137] Island
+4 [THS:180] Sylvan Caryatid
+SB: 3 [M15:155] Lightning Strike
+SB: 4 [KTK:197] Savage Knuckleblade
+SB: 3 [KTK:97] Arc Lightning
+SB: 2 [THS:172] Polukranos, World Eater
+SB: 3 [THS:65] Swan Song
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Jeskai Midrange TDtB ST Feb 2015.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Jeskai Midrange TDtB ST Feb 2015.mwDeck.dck
new file mode 100644
index 0000000000..54744e2571
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Jeskai Midrange TDtB ST Feb 2015.mwDeck.dck
@@ -0,0 +1,29 @@
+3 [FRF:28] Valorous Stance
+1 [FRF:110] Outpost Siege
+3 [THS:143] Stormbreath Dragon
+3 [FRF:118] Wild Slash
+4 [KTK:22] Seeker of the Way
+2 [M15:240] Battlefield Forge
+4 [KTK:236] Mystic Monastery
+4 [THS:228] Temple of Triumph
+1 [KTK:36] Dig Through Time
+4 [KTK:233] Flooded Strand
+4 [M15:164] Stoke the Flames
+3 [KTK:59] Treasure Cruise
+4 [M15:155] Lightning Strike
+4 [M15:145] Goblin Rabblemaster
+4 [M15:246] Shivan Reef
+4 [KTK:184] Mantis Rider
+2 [JOU:164] Temple of Epiphany
+1 [FRF:2] Abzan Advantage
+2 [UNH:136] Plains
+2 [UNH:137] Island
+1 [FRF:27] Soulfire Grand Master
+SB: 1 [FRF:28] Valorous Stance
+SB: 1 [FRF:110] Outpost Siege
+SB: 1 [THS:15] Glare of Heresy
+SB: 2 [BNG:5] Brimaz, King of Oreskos
+SB: 3 [THS:112] Anger of the Gods
+SB: 2 [THS:9] Elspeth, Sun's Champion
+SB: 3 [KTK:37] Disdainful Stroke
+SB: 2 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Jeskai Midrange TDtB ST Mar 2015.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Jeskai Midrange TDtB ST Mar 2015.mwDeck.dck
new file mode 100644
index 0000000000..09b579052c
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Jeskai Midrange TDtB ST Mar 2015.mwDeck.dck
@@ -0,0 +1,32 @@
+3 [FRF:28] Valorous Stance
+1 [FRF:110] Outpost Siege
+2 [KTK:119] Sarkhan, the Dragonspeaker
+3 [FRF:118] Wild Slash
+4 [KTK:22] Seeker of the Way
+2 [M15:240] Battlefield Forge
+4 [KTK:236] Mystic Monastery
+4 [THS:228] Temple of Triumph
+3 [KTK:36] Dig Through Time
+4 [KTK:233] Flooded Strand
+1 [KTK:37] Disdainful Stroke
+4 [M15:164] Stoke the Flames
+4 [M15:155] Lightning Strike
+4 [M15:145] Goblin Rabblemaster
+4 [M15:246] Shivan Reef
+4 [KTK:184] Mantis Rider
+2 [JOU:164] Temple of Epiphany
+2 [UNH:136] Plains
+1 [THS:9] Elspeth, Sun's Champion
+2 [UNH:137] Island
+2 [FRF:27] Soulfire Grand Master
+SB: 1 [FRF:28] Valorous Stance
+SB: 1 [FRF:110] Outpost Siege
+SB: 1 [THS:15] Glare of Heresy
+SB: 1 [KTK:9] Erase
+SB: 1 [KTK:8] End Hostilities
+SB: 2 [BNG:5] Brimaz, King of Oreskos
+SB: 2 [THS:112] Anger of the Gods
+SB: 1 [FRF:2] Abzan Advantage
+SB: 1 [THS:9] Elspeth, Sun's Champion
+SB: 2 [KTK:37] Disdainful Stroke
+SB: 2 [DTK:65] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Jeskai Tempo TDtB ST Dec 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Jeskai Tempo TDtB ST Dec 2014.mwDeck.dck
new file mode 100644
index 0000000000..eb6306732e
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Jeskai Tempo TDtB ST Dec 2014.mwDeck.dck
@@ -0,0 +1,26 @@
+4 [KTK:22] Seeker of the Way
+3 [THS:128] Magma Jet
+2 [M15:240] Battlefield Forge
+4 [KTK:236] Mystic Monastery
+4 [KTK:36] Dig Through Time
+4 [KTK:233] Flooded Strand
+4 [M15:164] Stoke the Flames
+1 [UNH:139] Mountain
+4 [M15:155] Lightning Strike
+4 [M15:145] Goblin Rabblemaster
+4 [M15:246] Shivan Reef
+4 [KTK:184] Mantis Rider
+4 [KTK:181] Jeskai Charm
+2 [JOU:164] Temple of Epiphany
+1 [THS:60] Prognostic Sphinx
+1 [JOU:163] Mana Confluence
+4 [BNG:45] Nullify
+2 [UNH:136] Plains
+2 [UNH:137] Island
+2 [BNG:163] Temple of Enlightenment
+SB: 2 [JOU:103] Magma Spray
+SB: 3 [BNG:5] Brimaz, King of Oreskos
+SB: 1 [JOU:5] Banishing Light
+SB: 4 [KTK:25] Suspension Field
+SB: 3 [KTK:37] Disdainful Stroke
+SB: 2 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Jeskai Tempo TDtB ST Nov 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Jeskai Tempo TDtB ST Nov 2014.mwDeck.dck
new file mode 100644
index 0000000000..24e4878ad6
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Jeskai Tempo TDtB ST Nov 2014.mwDeck.dck
@@ -0,0 +1,29 @@
+3 [BNG:5] Brimaz, King of Oreskos
+1 [THS:16] Gods Willing
+1 [JOU:5] Banishing Light
+2 [KTK:119] Sarkhan, the Dragonspeaker
+2 [KTK:99] Ashcloud Phoenix
+4 [KTK:22] Seeker of the Way
+3 [THS:128] Magma Jet
+3 [M15:240] Battlefield Forge
+4 [KTK:236] Mystic Monastery
+4 [THS:228] Temple of Triumph
+1 [KTK:36] Dig Through Time
+3 [KTK:233] Flooded Strand
+3 [M15:164] Stoke the Flames
+2 [UNH:139] Mountain
+4 [M15:155] Lightning Strike
+4 [M15:145] Goblin Rabblemaster
+3 [M15:246] Shivan Reef
+4 [KTK:184] Mantis Rider
+4 [KTK:181] Jeskai Charm
+1 [JOU:164] Temple of Epiphany
+2 [UNH:136] Plains
+2 [UNH:137] Island
+SB: 3 [JOU:103] Magma Spray
+SB: 1 [THS:16] Gods Willing
+SB: 2 [KTK:97] Arc Lightning
+SB: 1 [JOU:151] Keranos, God of Storms
+SB: 3 [KTK:25] Suspension Field
+SB: 3 [KTK:37] Disdainful Stroke
+SB: 2 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Jeskai Tempo TDtB ST Oct 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Jeskai Tempo TDtB ST Oct 2014.mwDeck.dck
new file mode 100644
index 0000000000..26f8c23a1e
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Jeskai Tempo TDtB ST Oct 2014.mwDeck.dck
@@ -0,0 +1,25 @@
+3 [BNG:5] Brimaz, King of Oreskos
+2 [THS:16] Gods Willing
+3 [KTK:119] Sarkhan, the Dragonspeaker
+4 [KTK:22] Seeker of the Way
+4 [THS:128] Magma Jet
+3 [M15:240] Battlefield Forge
+4 [KTK:236] Mystic Monastery
+4 [THS:228] Temple of Triumph
+3 [KTK:233] Flooded Strand
+4 [M15:164] Stoke the Flames
+3 [UNH:139] Mountain
+4 [M15:155] Lightning Strike
+4 [M15:145] Goblin Rabblemaster
+3 [M15:246] Shivan Reef
+4 [KTK:184] Mantis Rider
+4 [KTK:181] Jeskai Charm
+2 [UNH:136] Plains
+2 [UNH:137] Island
+SB: 1 [M15:134] Chandra, Pyromaster
+SB: 3 [JOU:103] Magma Spray
+SB: 1 [THS:16] Gods Willing
+SB: 2 [THS:60] Prognostic Sphinx
+SB: 1 [THS:9] Elspeth, Sun's Champion
+SB: 4 [KTK:25] Suspension Field
+SB: 3 [KTK:37] Disdainful Stroke
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Jeskai Token TDtB ST Jan 2015.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Jeskai Token TDtB ST Jan 2015.mwDeck.dck
new file mode 100644
index 0000000000..9353431d87
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Jeskai Token TDtB ST Jan 2015.mwDeck.dck
@@ -0,0 +1,28 @@
+4 [M15:26] Raise the Alarm
+4 [KTK:22] Seeker of the Way
+1 [THS:128] Magma Jet
+3 [M15:240] Battlefield Forge
+4 [KTK:236] Mystic Monastery
+4 [THS:228] Temple of Triumph
+3 [KTK:233] Flooded Strand
+4 [M15:164] Stoke the Flames
+4 [KTK:59] Treasure Cruise
+2 [UNH:139] Mountain
+4 [M15:155] Lightning Strike
+4 [M15:145] Goblin Rabblemaster
+2 [M15:134] Chandra, Pyromaster
+4 [KTK:111] Hordeling Outburst
+3 [M15:246] Shivan Reef
+1 [KTK:181] Jeskai Charm
+2 [JOU:164] Temple of Epiphany
+4 [KTK:180] Jeskai Ascendancy
+2 [UNH:136] Plains
+1 [UNH:137] Island
+SB: 2 [M15:15] Hushwing Gryff
+SB: 2 [THS:15] Glare of Heresy
+SB: 2 [KTK:9] Erase
+SB: 3 [KTK:8] End Hostilities
+SB: 1 [JOU:23] Reprisal
+SB: 1 [THS:9] Elspeth, Sun's Champion
+SB: 3 [KTK:37] Disdainful Stroke
+SB: 1 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Jeskai Tokens TDtB ST Apr 2015.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Jeskai Tokens TDtB ST Apr 2015.mwDeck.dck
new file mode 100644
index 0000000000..3271b20570
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Jeskai Tokens TDtB ST Apr 2015.mwDeck.dck
@@ -0,0 +1,29 @@
+2 [FRF:28] Valorous Stance
+3 [M15:26] Raise the Alarm
+1 [KTK:119] Sarkhan, the Dragonspeaker
+4 [FRF:118] Wild Slash
+4 [KTK:22] Seeker of the Way
+3 [M15:240] Battlefield Forge
+4 [KTK:236] Mystic Monastery
+4 [THS:228] Temple of Triumph
+4 [KTK:233] Flooded Strand
+4 [M15:164] Stoke the Flames
+4 [KTK:59] Treasure Cruise
+2 [UNH:139] Mountain
+2 [M15:155] Lightning Strike
+4 [KTK:111] Hordeling Outburst
+3 [M15:246] Shivan Reef
+1 [DTK:135] Dragon Fodder
+1 [KTK:184] Mantis Rider
+1 [JOU:164] Temple of Epiphany
+4 [KTK:180] Jeskai Ascendancy
+2 [DTK:36] Secure the Wastes
+1 [UNH:136] Plains
+2 [UNH:137] Island
+SB: 1 [THS:15] Glare of Heresy
+SB: 2 [DTK:27] Ojutai Exemplars
+SB: 2 [KTK:8] End Hostilities
+SB: 2 [DTK:156] Seismic Rupture
+SB: 2 [THS:9] Elspeth, Sun's Champion
+SB: 4 [KTK:37] Disdainful Stroke
+SB: 2 [DTK:65] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Jund Aggro TDtB ST Apr 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Jund Aggro TDtB ST Apr 2014.mwDeck.dck
new file mode 100644
index 0000000000..cea274efcc
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Jund Aggro TDtB ST Apr 2014.mwDeck.dck
@@ -0,0 +1,28 @@
+4 [THS:224] Temple of Abandon
+4 [THS:143] Stormbreath Dragon
+4 [UNH:140] Forest
+2 [THS:209] Xenagos, the Reveler
+3 [M14:195] Scavenging Ooze
+3 [RTR:157] Dreadbore
+1 [RTR:101] Mizzium Mortars
+4 [RTR:243] Overgrown Tomb
+3 [BNG:119] Courser of Kruphix
+4 [RTR:238] Blood Crypt
+1 [BNG:164] Temple of Malice
+2 [M14:228] Mutavault
+4 [GTC:247] Stomping Ground
+4 [THS:172] Polukranos, World Eater
+4 [GTC:167] Ghor-Clan Rampager
+4 [GTC:156] Domri Rade
+4 [C14:191] Elvish Mystic
+1 [DGM:104] Sire of Insanity
+4 [THS:180] Sylvan Caryatid
+SB: 2 [RTR:82] Ultimate Price
+SB: 1 [RTR:101] Mizzium Mortars
+SB: 1 [M15:134] Chandra, Pyromaster
+SB: 1 [RTR:208] Vraska the Unseen
+SB: 3 [THS:162] Mistcutter Hydra
+SB: 2 [RTR:164] Golgari Charm
+SB: 2 [THS:107] Thoughtseize
+SB: 2 [RTR:141] Abrupt Decay
+SB: 1 [DGM:104] Sire of Insanity
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Jund Aggro TDtB ST Mar 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Jund Aggro TDtB ST Mar 2013.mwDeck.dck
new file mode 100644
index 0000000000..6d0c16098f
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Jund Aggro TDtB ST Mar 2013.mwDeck.dck
@@ -0,0 +1,27 @@
+4 [GTC:119] Experiment One
+2 [UNH:140] Forest
+3 [M13:228] Rootbound Crag
+4 [GTC:216] Burning-Tree Emissary
+2 [M13:147] Searing Spear
+2 [M13:222] Dragonskull Summit
+2 [RTR:141] Abrupt Decay
+4 [M13:143] Mogg Flunkies
+1 [UNH:139] Mountain
+3 [RTR:157] Dreadbore
+4 [RTR:243] Overgrown Tomb
+4 [M13:171] Flinthoof Boar
+4 [RTR:220] Rakdos Cackler
+4 [RTR:238] Blood Crypt
+4 [DKA:138] Falkenrath Aristocrat
+3 [RTR:158] Dreg Mangler
+4 [GTC:247] Stomping Ground
+4 [GTC:167] Ghor-Clan Rampager
+2 [ISD:249] Woodland Cemetery
+SB: 1 [ISD:243] Kessig Wolf Run
+SB: 3 [C13:97] Vampire Nighthawk
+SB: 2 [AVR:206] Wolfir Silverheart
+SB: 1 [M13:147] Searing Spear
+SB: 2 [GTC:156] Domri Rade
+SB: 1 [RTR:141] Abrupt Decay
+SB: 3 [RTR:59] Cremate
+SB: 2 [ISD:215] Olivia Voldaren
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Jund Control TDtB ST Apr 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Jund Control TDtB ST Apr 2013.mwDeck.dck
new file mode 100644
index 0000000000..4fbb154180
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Jund Control TDtB ST Apr 2013.mwDeck.dck
@@ -0,0 +1,35 @@
+2 [C13:97] Vampire Nighthawk
+1 [M13:228] Rootbound Crag
+2 [UNH:140] Forest
+4 [M13:222] Dragonskull Summit
+1 [M13:101] Murder
+2 [M13:174] Garruk, Primal Hunter
+1 [RTR:101] Mizzium Mortars
+4 [RTR:243] Overgrown Tomb
+2 [RTR:188] Rakdos's Return
+4 [M13:193] Thragtusk
+2 [C14:167] Tragic Slip
+2 [ISD:243] Kessig Wolf Run
+4 [M13:170] Farseek
+2 [AVR:129] Bonfire of the Damned
+4 [GTC:247] Stomping Ground
+1 [ISD:124] Victim of Night
+4 [DKA:140] Huntmaster of the Fells
+4 [ISD:249] Woodland Cemetery
+1 [ISD:105] Liliana of the Veil
+1 [RTR:141] Abrupt Decay
+2 [M13:176] Ground Seal
+1 [RTR:157] Dreadbore
+2 [M13:160] Arbor Elf
+4 [RTR:238] Blood Crypt
+3 [ISD:215] Olivia Voldaren
+SB: 1 [RTR:101] Mizzium Mortars
+SB: 2 [RTR:83] Underworld Connections
+SB: 1 [RTR:188] Rakdos's Return
+SB: 1 [DKA:149] Grafdigger's Cage
+SB: 2 [AVR:149] Pillar of Flame
+SB: 1 [AVR:129] Bonfire of the Damned
+SB: 1 [RTR:208] Vraska the Unseen
+SB: 2 [M14:97] Duress
+SB: 2 [RTR:197] Slaughter Games
+SB: 2 [ISD:105] Liliana of the Veil
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Jund Control TDtB ST Dec 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Jund Control TDtB ST Dec 2012.mwDeck.dck
new file mode 100644
index 0000000000..0dbbe14581
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Jund Control TDtB ST Dec 2012.mwDeck.dck
@@ -0,0 +1,24 @@
+4 [M13:228] Rootbound Crag
+4 [RTR:173] Izzet Staticaster
+4 [RTR:243] Overgrown Tomb
+2 [RTR:188] Rakdos's Return
+4 [M13:193] Thragtusk
+1 [ISD:243] Kessig Wolf Run
+3 [RTR:238] Blood Crypt
+4 [M13:170] Farseek
+2 [AVR:226] Cavern of Souls
+4 [DKA:128] Tracker's Instincts
+3 [RTR:247] Steam Vents
+4 [ISD:241] Hinterland Harbor
+4 [RTR:213] Deathrite Shaman
+1 [AVR:129] Bonfire of the Damned
+4 [DKA:140] Huntmaster of the Fells
+4 [ISD:249] Woodland Cemetery
+4 [AVR:187] Nightshade Peddler
+4 [ISD:215] Olivia Voldaren
+SB: 3 [ISD:78] Snapcaster Mage
+SB: 3 [AVR:84] Appetite for Brains
+SB: 4 [AVR:149] Pillar of Flame
+SB: 1 [AVR:129] Bonfire of the Damned
+SB: 1 [M14:97] Duress
+SB: 3 [RTR:197] Slaughter Games
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Jund Control TDtB ST Feb 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Jund Control TDtB ST Feb 2013.mwDeck.dck
new file mode 100644
index 0000000000..d89a80d4c4
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Jund Control TDtB ST Feb 2013.mwDeck.dck
@@ -0,0 +1,32 @@
+1 [RTR:82] Ultimate Price
+1 [M13:228] Rootbound Crag
+3 [UNH:140] Forest
+3 [M13:222] Dragonskull Summit
+1 [M13:101] Murder
+2 [RTR:141] Abrupt Decay
+2 [M13:174] Garruk, Primal Hunter
+1 [RTR:157] Dreadbore
+4 [RTR:243] Overgrown Tomb
+2 [RTR:188] Rakdos's Return
+3 [M13:160] Arbor Elf
+4 [M13:193] Thragtusk
+2 [ISD:243] Kessig Wolf Run
+4 [RTR:238] Blood Crypt
+4 [M13:170] Farseek
+2 [AVR:149] Pillar of Flame
+4 [AVR:129] Bonfire of the Damned
+4 [GTC:247] Stomping Ground
+4 [DKA:140] Huntmaster of the Fells
+4 [ISD:249] Woodland Cemetery
+2 [ISD:215] Olivia Voldaren
+3 [ISD:105] Liliana of the Veil
+SB: 2 [RTR:83] Underworld Connections
+SB: 1 [RTR:188] Rakdos's Return
+SB: 1 [C14:167] Tragic Slip
+SB: 2 [DKA:149] Grafdigger's Cage
+SB: 2 [DKA:127] Strangleroot Geist
+SB: 1 [AVR:149] Pillar of Flame
+SB: 2 [M13:217] Staff of Nin
+SB: 2 [M14:97] Duress
+SB: 1 [M13:101] Murder
+SB: 1 [ISD:215] Olivia Voldaren
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Jund Control TDtB ST Jan 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Jund Control TDtB ST Jan 2013.mwDeck.dck
new file mode 100644
index 0000000000..f45f86d438
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Jund Control TDtB ST Jan 2013.mwDeck.dck
@@ -0,0 +1,29 @@
+3 [RTR:82] Ultimate Price
+4 [C13:97] Vampire Nighthawk
+2 [UNH:140] Forest
+4 [M13:228] Rootbound Crag
+3 [M13:147] Searing Spear
+1 [M13:222] Dragonskull Summit
+1 [UNH:139] Mountain
+1 [M13:174] Garruk, Primal Hunter
+4 [RTR:243] Overgrown Tomb
+2 [M13:150] Thundermaw Hellkite
+1 [RTR:232] Rakdos Keyrune
+2 [RTR:188] Rakdos's Return
+4 [M13:193] Thragtusk
+2 [ISD:243] Kessig Wolf Run
+4 [RTR:238] Blood Crypt
+4 [M13:170] Farseek
+3 [AVR:226] Cavern of Souls
+2 [AVR:149] Pillar of Flame
+2 [AVR:129] Bonfire of the Damned
+4 [DKA:140] Huntmaster of the Fells
+4 [ISD:249] Woodland Cemetery
+3 [ISD:215] Olivia Voldaren
+SB: 1 [ISD:161] Rolling Temblor
+SB: 1 [RTR:188] Rakdos's Return
+SB: 1 [M13:217] Staff of Nin
+SB: 4 [RTR:213] Deathrite Shaman
+SB: 3 [RTR:197] Slaughter Games
+SB: 2 [ISD:94] Curse of Death's Hold
+SB: 3 [ISD:105] Liliana of the Veil
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Jund Control TDtB ST Jul 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Jund Control TDtB ST Jul 2013.mwDeck.dck
new file mode 100644
index 0000000000..96fa68585d
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Jund Control TDtB ST Jul 2013.mwDeck.dck
@@ -0,0 +1,31 @@
+2 [C13:97] Vampire Nighthawk
+3 [M13:228] Rootbound Crag
+3 [M13:222] Dragonskull Summit
+1 [RTR:141] Abrupt Decay
+2 [M13:176] Ground Seal
+2 [M13:174] Garruk, Primal Hunter
+4 [RTR:243] Overgrown Tomb
+1 [RTR:232] Rakdos Keyrune
+2 [RTR:188] Rakdos's Return
+4 [M13:193] Thragtusk
+2 [C14:167] Tragic Slip
+2 [ISD:243] Kessig Wolf Run
+4 [RTR:238] Blood Crypt
+4 [M13:170] Farseek
+1 [AVR:226] Cavern of Souls
+2 [AVR:149] Pillar of Flame
+4 [AVR:129] Bonfire of the Damned
+4 [GTC:247] Stomping Ground
+4 [DKA:140] Huntmaster of the Fells
+2 [DGM:93] Putrefy
+4 [ISD:249] Woodland Cemetery
+3 [ISD:215] Olivia Voldaren
+SB: 1 [RTR:83] Underworld Connections
+SB: 1 [RTR:188] Rakdos's Return
+SB: 2 [C14:167] Tragic Slip
+SB: 2 [DGM:99] Ruric Thar, the Unbowed
+SB: 1 [AVR:149] Pillar of Flame
+SB: 2 [M14:97] Duress
+SB: 1 [ISD:94] Curse of Death's Hold
+SB: 2 [M13:176] Ground Seal
+SB: 3 [ISD:105] Liliana of the Veil
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Jund Control TDtB ST May 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Jund Control TDtB ST May 2013.mwDeck.dck
new file mode 100644
index 0000000000..eceb4d98e7
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Jund Control TDtB ST May 2013.mwDeck.dck
@@ -0,0 +1,34 @@
+3 [M13:228] Rootbound Crag
+2 [M13:222] Dragonskull Summit
+1 [RTR:141] Abrupt Decay
+2 [M13:176] Ground Seal
+2 [M13:174] Garruk, Primal Hunter
+1 [RTR:157] Dreadbore
+2 [RTR:101] Mizzium Mortars
+4 [RTR:243] Overgrown Tomb
+1 [RTR:232] Rakdos Keyrune
+1 [RTR:188] Rakdos's Return
+4 [M13:193] Thragtusk
+2 [C14:167] Tragic Slip
+2 [ISD:243] Kessig Wolf Run
+4 [RTR:238] Blood Crypt
+4 [M13:170] Farseek
+2 [AVR:226] Cavern of Souls
+3 [AVR:129] Bonfire of the Damned
+4 [GTC:247] Stomping Ground
+4 [DKA:140] Huntmaster of the Fells
+2 [DGM:93] Putrefy
+4 [ISD:249] Woodland Cemetery
+2 [DGM:104] Sire of Insanity
+3 [ISD:215] Olivia Voldaren
+1 [ISD:105] Liliana of the Veil
+SB: 1 [RTR:101] Mizzium Mortars
+SB: 1 [RTR:188] Rakdos's Return
+SB: 2 [C14:167] Tragic Slip
+SB: 2 [C13:97] Vampire Nighthawk
+SB: 2 [AVR:149] Pillar of Flame
+SB: 1 [DGM:63] Deadbridge Chant
+SB: 2 [RTR:208] Vraska the Unseen
+SB: 1 [M14:97] Duress
+SB: 1 [M13:176] Ground Seal
+SB: 2 [ISD:105] Liliana of the Veil
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Jund Control TDtB ST Nov 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Jund Control TDtB ST Nov 2012.mwDeck.dck
new file mode 100644
index 0000000000..010b7a10f8
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Jund Control TDtB ST Nov 2012.mwDeck.dck
@@ -0,0 +1,31 @@
+1 [C13:97] Vampire Nighthawk
+3 [UNH:140] Forest
+3 [M13:228] Rootbound Crag
+3 [M13:222] Dragonskull Summit
+2 [UNH:139] Mountain
+3 [RTR:157] Dreadbore
+2 [RTR:101] Mizzium Mortars
+4 [RTR:243] Overgrown Tomb
+3 [M13:150] Thundermaw Hellkite
+2 [RTR:232] Rakdos Keyrune
+2 [RTR:188] Rakdos's Return
+4 [M13:193] Thragtusk
+1 [ISD:243] Kessig Wolf Run
+4 [RTR:238] Blood Crypt
+4 [M13:170] Farseek
+3 [AVR:149] Pillar of Flame
+2 [AVR:129] Bonfire of the Damned
+1 [RTR:208] Vraska the Unseen
+4 [DKA:140] Huntmaster of the Fells
+2 [ISD:249] Woodland Cemetery
+2 [UNH:138] Swamp
+2 [ISD:215] Olivia Voldaren
+3 [ISD:105] Liliana of the Veil
+SB: 1 [M13:174] Garruk, Primal Hunter
+SB: 1 [RTR:83] Underworld Connections
+SB: 1 [RTR:101] Mizzium Mortars
+SB: 3 [C13:97] Vampire Nighthawk
+SB: 3 [AVR:84] Appetite for Brains
+SB: 1 [AVR:149] Pillar of Flame
+SB: 3 [ISD:115] Sever the Bloodline
+SB: 2 [RTR:164] Golgari Charm
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Jund Midrange TDtB ST Aug 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Jund Midrange TDtB ST Aug 2013.mwDeck.dck
new file mode 100644
index 0000000000..f2c396c87a
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Jund Midrange TDtB ST Aug 2013.mwDeck.dck
@@ -0,0 +1,33 @@
+4 [M13:228] Rootbound Crag
+1 [M13:222] Dragonskull Summit
+3 [M14:195] Scavenging Ooze
+1 [RTR:141] Abrupt Decay
+2 [M13:174] Garruk, Primal Hunter
+1 [RTR:157] Dreadbore
+1 [RTR:101] Mizzium Mortars
+4 [RTR:243] Overgrown Tomb
+1 [RTR:232] Rakdos Keyrune
+2 [RTR:188] Rakdos's Return
+4 [M13:193] Thragtusk
+2 [C14:167] Tragic Slip
+2 [ISD:243] Kessig Wolf Run
+4 [RTR:238] Blood Crypt
+4 [M13:170] Farseek
+4 [AVR:129] Bonfire of the Damned
+4 [GTC:247] Stomping Ground
+1 [M14:96] Doom Blade
+4 [DKA:140] Huntmaster of the Fells
+2 [DGM:93] Putrefy
+4 [ISD:249] Woodland Cemetery
+2 [UNH:138] Swamp
+3 [ISD:215] Olivia Voldaren
+SB: 2 [RTR:83] Underworld Connections
+SB: 1 [RTR:188] Rakdos's Return
+SB: 1 [C13:134] Acidic Slime
+SB: 1 [C14:167] Tragic Slip
+SB: 1 [DKA:149] Grafdigger's Cage
+SB: 2 [AVR:149] Pillar of Flame
+SB: 1 [AVR:85] Barter in Blood
+SB: 2 [M14:97] Duress
+SB: 1 [ISD:94] Curse of Death's Hold
+SB: 3 [ISD:105] Liliana of the Veil
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Jund Midrange TDtB ST Jun 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Jund Midrange TDtB ST Jun 2013.mwDeck.dck
new file mode 100644
index 0000000000..6acb46e2c1
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Jund Midrange TDtB ST Jun 2013.mwDeck.dck
@@ -0,0 +1,33 @@
+2 [C13:97] Vampire Nighthawk
+2 [UNH:140] Forest
+2 [M13:228] Rootbound Crag
+3 [M13:222] Dragonskull Summit
+2 [M13:176] Ground Seal
+3 [M13:174] Garruk, Primal Hunter
+1 [RTR:157] Dreadbore
+2 [RTR:101] Mizzium Mortars
+4 [RTR:243] Overgrown Tomb
+1 [RTR:188] Rakdos's Return
+4 [M13:193] Thragtusk
+2 [ISD:243] Kessig Wolf Run
+4 [RTR:238] Blood Crypt
+4 [M13:170] Farseek
+2 [AVR:149] Pillar of Flame
+2 [AVR:129] Bonfire of the Damned
+4 [GTC:247] Stomping Ground
+4 [DKA:140] Huntmaster of the Fells
+2 [DGM:93] Putrefy
+4 [ISD:249] Woodland Cemetery
+1 [DGM:104] Sire of Insanity
+3 [ISD:215] Olivia Voldaren
+2 [ISD:105] Liliana of the Veil
+SB: 1 [RTR:157] Dreadbore
+SB: 2 [AVR:149] Pillar of Flame
+SB: 1 [DGM:63] Deadbridge Chant
+SB: 1 [DGM:72] Gaze of Granite
+SB: 2 [M14:97] Duress
+SB: 2 [RTR:197] Slaughter Games
+SB: 2 [GTC:63] Devour Flesh
+SB: 2 [RTR:141] Abrupt Decay
+SB: 1 [DGM:104] Sire of Insanity
+SB: 1 [ISD:105] Liliana of the Veil
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Jund Midrange TDtB ST Jun 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Jund Midrange TDtB ST Jun 2014.mwDeck.dck
new file mode 100644
index 0000000000..1a2a849022
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Jund Midrange TDtB ST Jun 2014.mwDeck.dck
@@ -0,0 +1,29 @@
+2 [RTR:82] Ultimate Price
+4 [THS:224] Temple of Abandon
+4 [THS:143] Stormbreath Dragon
+4 [UNH:140] Forest
+4 [THS:209] Xenagos, the Reveler
+3 [M14:195] Scavenging Ooze
+1 [RTR:141] Abrupt Decay
+2 [RTR:101] Mizzium Mortars
+4 [RTR:243] Overgrown Tomb
+2 [BNG:119] Courser of Kruphix
+4 [RTR:238] Blood Crypt
+1 [BNG:164] Temple of Malice
+2 [M14:228] Mutavault
+4 [GTC:247] Stomping Ground
+1 [JOU:163] Mana Confluence
+4 [THS:172] Polukranos, World Eater
+3 [GTC:167] Ghor-Clan Rampager
+3 [GTC:156] Domri Rade
+4 [C14:191] Elvish Mystic
+4 [THS:180] Sylvan Caryatid
+SB: 1 [RTR:101] Mizzium Mortars
+SB: 2 [M15:134] Chandra, Pyromaster
+SB: 2 [RTR:188] Rakdos's Return
+SB: 2 [M14:96] Doom Blade
+SB: 1 [RTR:208] Vraska the Unseen
+SB: 4 [THS:162] Mistcutter Hydra
+SB: 1 [THS:83] Dark Betrayal
+SB: 1 [DGM:93] Putrefy
+SB: 1 [RTR:164] Golgari Charm
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Jund Midrange TDtB ST Mar 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Jund Midrange TDtB ST Mar 2013.mwDeck.dck
new file mode 100644
index 0000000000..bcbad1f560
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Jund Midrange TDtB ST Mar 2013.mwDeck.dck
@@ -0,0 +1,32 @@
+2 [UNH:140] Forest
+2 [M13:228] Rootbound Crag
+3 [M13:222] Dragonskull Summit
+1 [M13:101] Murder
+2 [RTR:141] Abrupt Decay
+3 [M13:174] Garruk, Primal Hunter
+2 [RTR:157] Dreadbore
+1 [RTR:101] Mizzium Mortars
+4 [RTR:243] Overgrown Tomb
+1 [RTR:188] Rakdos's Return
+2 [M13:160] Arbor Elf
+4 [M13:193] Thragtusk
+3 [C14:167] Tragic Slip
+2 [ISD:243] Kessig Wolf Run
+4 [RTR:238] Blood Crypt
+4 [M13:170] Farseek
+3 [AVR:129] Bonfire of the Damned
+4 [GTC:247] Stomping Ground
+4 [DKA:140] Huntmaster of the Fells
+4 [ISD:249] Woodland Cemetery
+2 [ISD:215] Olivia Voldaren
+3 [ISD:105] Liliana of the Veil
+SB: 2 [RTR:83] Underworld Connections
+SB: 2 [RTR:188] Rakdos's Return
+SB: 1 [C13:134] Acidic Slime
+SB: 1 [C14:167] Tragic Slip
+SB: 2 [AVR:149] Pillar of Flame
+SB: 1 [M13:217] Staff of Nin
+SB: 2 [M14:97] Duress
+SB: 2 [RTR:197] Slaughter Games
+SB: 1 [M13:176] Ground Seal
+SB: 1 [ISD:215] Olivia Voldaren
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Jund TDtB ST Aug 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Jund TDtB ST Aug 2014.mwDeck.dck
new file mode 100644
index 0000000000..6cbfb8b166
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Jund TDtB ST Aug 2014.mwDeck.dck
@@ -0,0 +1,26 @@
+4 [THS:224] Temple of Abandon
+3 [THS:143] Stormbreath Dragon
+1 [UNH:140] Forest
+4 [JOU:165] Temple of Malady
+3 [THS:209] Xenagos, the Reveler
+4 [M14:195] Scavenging Ooze
+4 [RTR:141] Abrupt Decay
+1 [UNH:139] Mountain
+4 [RTR:157] Dreadbore
+4 [M15:244] Llanowar Wastes
+2 [M15:134] Chandra, Pyromaster
+4 [BNG:119] Courser of Kruphix
+3 [RTR:188] Rakdos's Return
+3 [RTR:238] Blood Crypt
+2 [M14:228] Mutavault
+4 [GTC:247] Stomping Ground
+4 [THS:172] Polukranos, World Eater
+2 [C14:191] Elvish Mystic
+4 [THS:180] Sylvan Caryatid
+SB: 2 [RTR:101] Mizzium Mortars
+SB: 3 [JOU:103] Magma Spray
+SB: 3 [THS:162] Mistcutter Hydra
+SB: 2 [THS:83] Dark Betrayal
+SB: 1 [DGM:93] Putrefy
+SB: 2 [RTR:164] Golgari Charm
+SB: 2 [RTR:197] Slaughter Games
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Jund TDtB ST Jul 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Jund TDtB ST Jul 2014.mwDeck.dck
new file mode 100644
index 0000000000..2a360ee846
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Jund TDtB ST Jul 2014.mwDeck.dck
@@ -0,0 +1,27 @@
+4 [THS:224] Temple of Abandon
+4 [THS:143] Stormbreath Dragon
+4 [UNH:140] Forest
+3 [THS:209] Xenagos, the Reveler
+3 [M14:195] Scavenging Ooze
+3 [RTR:157] Dreadbore
+2 [RTR:101] Mizzium Mortars
+4 [RTR:243] Overgrown Tomb
+3 [BNG:119] Courser of Kruphix
+4 [RTR:238] Blood Crypt
+1 [BNG:164] Temple of Malice
+2 [M14:228] Mutavault
+4 [GTC:247] Stomping Ground
+1 [JOU:163] Mana Confluence
+4 [THS:172] Polukranos, World Eater
+2 [GTC:167] Ghor-Clan Rampager
+4 [GTC:156] Domri Rade
+4 [C14:191] Elvish Mystic
+4 [THS:180] Sylvan Caryatid
+SB: 1 [RTR:82] Ultimate Price
+SB: 2 [RTR:101] Mizzium Mortars
+SB: 1 [M15:134] Chandra, Pyromaster
+SB: 2 [RTR:188] Rakdos's Return
+SB: 1 [RTR:208] Vraska the Unseen
+SB: 4 [THS:162] Mistcutter Hydra
+SB: 2 [DGM:93] Putrefy
+SB: 2 [RTR:164] Golgari Charm
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Jund TDtB ST Mar 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Jund TDtB ST Mar 2014.mwDeck.dck
new file mode 100644
index 0000000000..b7d3ba794b
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Jund TDtB ST Mar 2014.mwDeck.dck
@@ -0,0 +1,29 @@
+2 [THS:201] Reaper of the Wilds
+4 [THS:224] Temple of Abandon
+4 [THS:143] Stormbreath Dragon
+5 [UNH:140] Forest
+3 [THS:209] Xenagos, the Reveler
+1 [M14:195] Scavenging Ooze
+2 [UNH:139] Mountain
+2 [RTR:157] Dreadbore
+2 [RTR:101] Mizzium Mortars
+4 [RTR:243] Overgrown Tomb
+4 [BNG:119] Courser of Kruphix
+4 [RTR:238] Blood Crypt
+4 [GTC:247] Stomping Ground
+4 [THS:172] Polukranos, World Eater
+1 [RTR:208] Vraska the Unseen
+1 [GTC:167] Ghor-Clan Rampager
+4 [GTC:156] Domri Rade
+1 [BNG:156] Xenagos, God of Revels
+4 [C14:191] Elvish Mystic
+4 [THS:180] Sylvan Caryatid
+SB: 2 [RTR:82] Ultimate Price
+SB: 2 [RTR:101] Mizzium Mortars
+SB: 2 [RTR:188] Rakdos's Return
+SB: 1 [THS:153] Bow of Nylea
+SB: 1 [DGM:99] Ruric Thar, the Unbowed
+SB: 1 [M14:96] Doom Blade
+SB: 3 [THS:162] Mistcutter Hydra
+SB: 2 [RTR:164] Golgari Charm
+SB: 1 [DGM:104] Sire of Insanity
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Junk Reanimator TDtB ST Apr 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Junk Reanimator TDtB ST Apr 2013.mwDeck.dck
new file mode 100644
index 0000000000..e9d86f9ec8
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Junk Reanimator TDtB ST Apr 2013.mwDeck.dck
@@ -0,0 +1,29 @@
+3 [AVR:32] Restoration Angel
+2 [AVR:172] Craterhoof Behemoth
+3 [M13:229] Sunpetal Grove
+3 [UNH:140] Forest
+3 [RTR:1] Angel of Serenity
+3 [RTR:178] Loxodon Smiter
+1 [DKA:158] Vault of the Archangel
+4 [RTR:243] Overgrown Tomb
+3 [M13:160] Arbor Elf
+4 [ISD:170] Avacyn's Pilgrim
+4 [M13:193] Thragtusk
+4 [RTR:165] Grisly Salvage
+3 [ISD:122] Unburial Rites
+1 [AVR:226] Cavern of Souls
+4 [RTR:248] Temple Garden
+2 [RTR:213] Deathrite Shaman
+3 [ISD:196] Mulch
+3 [DKA:12] Lingering Souls
+1 [ISD:239] Gavony Township
+2 [GTC:242] Godless Shrine
+4 [ISD:249] Woodland Cemetery
+SB: 2 [M13:29] Rhox Faithmender
+SB: 4 [C13:134] Acidic Slime
+SB: 2 [GTC:182] Obzedat, Ghost Council
+SB: 1 [AVR:226] Cavern of Souls
+SB: 1 [RTR:213] Deathrite Shaman
+SB: 2 [ISD:115] Sever the Bloodline
+SB: 1 [RTR:208] Vraska the Unseen
+SB: 2 [RTR:141] Abrupt Decay
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Junk Reanimator TDtB ST Jul 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Junk Reanimator TDtB ST Jul 2013.mwDeck.dck
new file mode 100644
index 0000000000..6adab74740
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Junk Reanimator TDtB ST Jul 2013.mwDeck.dck
@@ -0,0 +1,30 @@
+3 [AVR:32] Restoration Angel
+2 [C13:11] Fiend Hunter
+1 [AVR:172] Craterhoof Behemoth
+3 [M13:229] Sunpetal Grove
+2 [UNH:140] Forest
+4 [RTR:1] Angel of Serenity
+2 [RTR:141] Abrupt Decay
+3 [RTR:178] Loxodon Smiter
+4 [RTR:243] Overgrown Tomb
+2 [M13:160] Arbor Elf
+4 [ISD:170] Avacyn's Pilgrim
+4 [M13:193] Thragtusk
+4 [RTR:165] Grisly Salvage
+4 [ISD:122] Unburial Rites
+1 [AVR:226] Cavern of Souls
+1 [ISD:242] Isolated Chapel
+4 [RTR:248] Temple Garden
+3 [ISD:196] Mulch
+1 [ISD:115] Sever the Bloodline
+1 [ISD:239] Gavony Township
+3 [GTC:242] Godless Shrine
+4 [ISD:249] Woodland Cemetery
+SB: 2 [C13:134] Acidic Slime
+SB: 1 [GTC:182] Obzedat, Ghost Council
+SB: 3 [AVR:194] Somberwald Sage
+SB: 1 [AVR:226] Cavern of Souls
+SB: 1 [DGM:72] Gaze of Granite
+SB: 2 [RTR:206] Trostani, Selesnya's Voice
+SB: 2 [ISD:96] Dead Weight
+SB: 3 [DGM:103] Sin Collector
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Junk Reanimator TDtB ST Jun 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Junk Reanimator TDtB ST Jun 2013.mwDeck.dck
new file mode 100644
index 0000000000..2fd620b73e
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Junk Reanimator TDtB ST Jun 2013.mwDeck.dck
@@ -0,0 +1,27 @@
+3 [AVR:32] Restoration Angel
+2 [C13:11] Fiend Hunter
+4 [M13:229] Sunpetal Grove
+4 [UNH:140] Forest
+3 [RTR:1] Angel of Serenity
+2 [RTR:141] Abrupt Decay
+1 [DKA:158] Vault of the Archangel
+4 [RTR:243] Overgrown Tomb
+2 [DGM:57] Blood Baron of Vizkopa
+4 [ISD:170] Avacyn's Pilgrim
+4 [M13:193] Thragtusk
+4 [RTR:165] Grisly Salvage
+4 [M13:170] Farseek
+4 [ISD:122] Unburial Rites
+1 [ISD:242] Isolated Chapel
+4 [RTR:248] Temple Garden
+1 [RTR:148] Centaur Healer
+3 [ISD:196] Mulch
+1 [ISD:115] Sever the Bloodline
+2 [GTC:242] Godless Shrine
+3 [ISD:249] Woodland Cemetery
+SB: 3 [C13:134] Acidic Slime
+SB: 2 [RTR:213] Deathrite Shaman
+SB: 2 [RTR:206] Trostani, Selesnya's Voice
+SB: 2 [RTR:141] Abrupt Decay
+SB: 2 [DGM:103] Sin Collector
+SB: 4 [DGM:114] Voice of Resurgence
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Junk Reanimator TDtB ST Mar 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Junk Reanimator TDtB ST Mar 2013.mwDeck.dck
new file mode 100644
index 0000000000..319f7f68c1
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Junk Reanimator TDtB ST Mar 2013.mwDeck.dck
@@ -0,0 +1,25 @@
+4 [AVR:32] Restoration Angel
+2 [AVR:172] Craterhoof Behemoth
+4 [M13:229] Sunpetal Grove
+3 [UNH:140] Forest
+3 [RTR:1] Angel of Serenity
+1 [DKA:158] Vault of the Archangel
+4 [RTR:243] Overgrown Tomb
+3 [M13:160] Arbor Elf
+4 [ISD:170] Avacyn's Pilgrim
+4 [M13:193] Thragtusk
+4 [RTR:165] Grisly Salvage
+4 [ISD:122] Unburial Rites
+2 [AVR:226] Cavern of Souls
+4 [RTR:248] Temple Garden
+4 [RTR:148] Centaur Healer
+3 [ISD:196] Mulch
+2 [DKA:12] Lingering Souls
+1 [GTC:242] Godless Shrine
+4 [ISD:249] Woodland Cemetery
+SB: 2 [M13:174] Garruk, Primal Hunter
+SB: 4 [C13:134] Acidic Slime
+SB: 2 [M13:29] Rhox Faithmender
+SB: 2 [RTR:213] Deathrite Shaman
+SB: 1 [ISD:115] Sever the Bloodline
+SB: 4 [RTR:141] Abrupt Decay
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Junk Reanimator TDtB ST May 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Junk Reanimator TDtB ST May 2013.mwDeck.dck
new file mode 100644
index 0000000000..f32379d543
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Junk Reanimator TDtB ST May 2013.mwDeck.dck
@@ -0,0 +1,29 @@
+3 [AVR:32] Restoration Angel
+2 [C13:11] Fiend Hunter
+1 [AVR:172] Craterhoof Behemoth
+3 [M13:229] Sunpetal Grove
+3 [UNH:140] Forest
+4 [RTR:1] Angel of Serenity
+4 [RTR:243] Overgrown Tomb
+2 [RTR:177] Lotleth Troll
+2 [M13:160] Arbor Elf
+4 [ISD:170] Avacyn's Pilgrim
+4 [M13:193] Thragtusk
+1 [ISD:181] Garruk Relentless
+4 [RTR:165] Grisly Salvage
+4 [ISD:122] Unburial Rites
+2 [ISD:242] Isolated Chapel
+4 [RTR:248] Temple Garden
+3 [ISD:196] Mulch
+2 [DKA:12] Lingering Souls
+2 [ISD:239] Gavony Township
+2 [GTC:242] Godless Shrine
+4 [ISD:249] Woodland Cemetery
+SB: 1 [DGM:111] Unflinching Courage
+SB: 2 [C13:134] Acidic Slime
+SB: 1 [ISD:181] Garruk Relentless
+SB: 2 [DGM:5] Renounce the Guilds
+SB: 1 [RTR:148] Centaur Healer
+SB: 4 [RTR:213] Deathrite Shaman
+SB: 1 [ISD:115] Sever the Bloodline
+SB: 3 [DGM:103] Sin Collector
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Junk TDtB ST Jul 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Junk TDtB ST Jul 2013.mwDeck.dck
new file mode 100644
index 0000000000..b4b7b3b16f
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Junk TDtB ST Jul 2013.mwDeck.dck
@@ -0,0 +1,25 @@
+3 [M13:229] Sunpetal Grove
+4 [AVR:86] Blood Artist
+3 [DKA:134] Young Wolf
+4 [GTC:150] Cartel Aristocrat
+4 [RTR:243] Overgrown Tomb
+1 [GTC:182] Obzedat, Ghost Council
+2 [ISD:181] Garruk Relentless
+4 [C14:167] Tragic Slip
+3 [ISD:242] Isolated Chapel
+4 [RTR:248] Temple Garden
+3 [C14:163] Skirsdag High Priest
+4 [DKA:12] Lingering Souls
+2 [ISD:239] Gavony Township
+4 [GTC:242] Godless Shrine
+3 [DGM:112] Varolz, the Scar-Striped
+4 [ISD:249] Woodland Cemetery
+4 [CNS:69] Doomed Traveler
+4 [DGM:114] Voice of Resurgence
+SB: 2 [DGM:111] Unflinching Courage
+SB: 1 [GTC:182] Obzedat, Ghost Council
+SB: 3 [RTR:213] Deathrite Shaman
+SB: 2 [M14:97] Duress
+SB: 2 [RTR:164] Golgari Charm
+SB: 3 [RTR:141] Abrupt Decay
+SB: 2 [DGM:103] Sin Collector
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Kessig Bant TDtB ST Feb 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Kessig Bant TDtB ST Feb 2013.mwDeck.dck
new file mode 100644
index 0000000000..583f40b827
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Kessig Bant TDtB ST Feb 2013.mwDeck.dck
@@ -0,0 +1,31 @@
+4 [AVR:32] Restoration Angel
+2 [M13:229] Sunpetal Grove
+3 [C13:30] Augur of Bolas
+1 [RTR:54] Syncopate
+3 [M13:225] Glacial Fortress
+4 [RTR:241] Hallowed Fountain
+3 [RTR:201] Supreme Verdict
+4 [RTR:145] Azorius Charm
+4 [RTR:200] Sphinx's Revelation
+1 [RTR:155] Detention Sphere
+4 [M13:193] Thragtusk
+2 [ISD:243] Kessig Wolf Run
+4 [M13:170] Farseek
+3 [RTR:248] Temple Garden
+1 [RTR:247] Steam Vents
+4 [ISD:241] Hinterland Harbor
+3 [RTR:148] Centaur Healer
+1 [GTC:247] Stomping Ground
+2 [M15:51] Dissipate
+1 [GTC:245] Sacred Foundry
+2 [ISD:83] Think Twice
+4 [GTC:240] Breeding Pool
+SB: 1 [RTR:201] Supreme Verdict
+SB: 1 [RTR:155] Detention Sphere
+SB: 3 [M13:29] Rhox Faithmender
+SB: 1 [AVR:209] Gisela, Blade of Goldnight
+SB: 2 [ISD:181] Garruk Relentless
+SB: 1 [RTR:148] Centaur Healer
+SB: 2 [ISD:236] Witchbane Orb
+SB: 2 [RTR:18] Rest in Peace
+SB: 2 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Kessig Titan TDtB ST Apr 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Kessig Titan TDtB ST Apr 2012.mwDeck.dck
new file mode 100644
index 0000000000..02391602d2
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Kessig Titan TDtB ST Apr 2012.mwDeck.dck
@@ -0,0 +1,28 @@
+4 [MBS:75] Slagstorm
+4 [M13:228] Rootbound Crag
+6 [UNH:140] Forest
+1 [MBS:92] Thrun, the Last Troll
+2 [MBS:81] Green Sun's Zenith
+4 [M12:188] Primeval Titan
+1 [M12:165] Birds of Paradise
+5 [UNH:139] Mountain
+3 [C13:114] Inferno Titan
+1 [C13:134] Acidic Slime
+2 [ISD:243] Kessig Wolf Run
+4 [M12:190] Rampant Growth
+1 [C14:184] Whipflare
+4 [MBS:145] Inkmoth Nexus
+2 [C14:271] Solemn Simulacrum
+4 [MBS:134] Sphere of the Suns
+4 [SOM:225] Copperline Gorge
+4 [DKA:140] Huntmaster of the Fells
+4 [SOM:91] Galvanic Blast
+SB: 1 [M13:174] Garruk, Primal Hunter
+SB: 2 [SOM:175] Mimic Vat
+SB: 2 [NPH:74] Surgical Extraction
+SB: 2 [KTK:142] Naturalize
+SB: 2 [DKA:107] Wrack with Madness
+SB: 1 [C14:184] Whipflare
+SB: 2 [MBS:92] Thrun, the Last Troll
+SB: 1 [ISD:127] Ancient Grudge
+SB: 2 [NPH:1] Karn Liberated
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Kessig Titan TDtB ST Dec 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Kessig Titan TDtB ST Dec 2011.mwDeck.dck
new file mode 100644
index 0000000000..88c503ed74
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Kessig Titan TDtB ST Dec 2011.mwDeck.dck
@@ -0,0 +1,26 @@
+3 [MBS:75] Slagstorm
+4 [M13:228] Rootbound Crag
+5 [UNH:140] Forest
+1 [MBS:92] Thrun, the Last Troll
+2 [MBS:81] Green Sun's Zenith
+4 [M12:188] Primeval Titan
+1 [M12:165] Birds of Paradise
+6 [UNH:139] Mountain
+4 [C13:114] Inferno Titan
+2 [ISD:140] Devil's Play
+1 [M14:155] Shock
+3 [ISD:243] Kessig Wolf Run
+4 [M12:190] Rampant Growth
+4 [MBS:145] Inkmoth Nexus
+4 [C14:271] Solemn Simulacrum
+4 [MBS:134] Sphere of the Suns
+4 [SOM:225] Copperline Gorge
+4 [SOM:91] Galvanic Blast
+SB: 1 [MBS:75] Slagstorm
+SB: 2 [MBS:138] Sword of Feast and Famine
+SB: 1 [MBS:94] Viridian Corrupter
+SB: 2 [MBS:92] Thrun, the Last Troll
+SB: 2 [ISD:207] Tree of Redemption
+SB: 1 [NPH:103] Beast Within
+SB: 4 [M12:164] Autumn's Veil
+SB: 2 [ISD:127] Ancient Grudge
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Kessig Titan TDtB ST Feb 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Kessig Titan TDtB ST Feb 2012.mwDeck.dck
new file mode 100644
index 0000000000..556549e5ac
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Kessig Titan TDtB ST Feb 2012.mwDeck.dck
@@ -0,0 +1,28 @@
+4 [MBS:75] Slagstorm
+4 [M13:228] Rootbound Crag
+5 [UNH:140] Forest
+1 [MBS:92] Thrun, the Last Troll
+2 [MBS:81] Green Sun's Zenith
+4 [M12:188] Primeval Titan
+1 [M12:165] Birds of Paradise
+6 [UNH:139] Mountain
+2 [C13:114] Inferno Titan
+1 [C13:134] Acidic Slime
+2 [ISD:243] Kessig Wolf Run
+4 [M12:190] Rampant Growth
+1 [C14:184] Whipflare
+4 [MBS:145] Inkmoth Nexus
+3 [C14:271] Solemn Simulacrum
+4 [MBS:134] Sphere of the Suns
+4 [SOM:225] Copperline Gorge
+4 [DKA:140] Huntmaster of the Fells
+4 [SOM:91] Galvanic Blast
+SB: 2 [M13:174] Garruk, Primal Hunter
+SB: 2 [KTK:142] Naturalize
+SB: 1 [M12:128] Combust
+SB: 1 [C14:184] Whipflare
+SB: 2 [MBS:92] Thrun, the Last Troll
+SB: 2 [NPH:103] Beast Within
+SB: 1 [M12:164] Autumn's Veil
+SB: 2 [NPH:1] Karn Liberated
+SB: 2 [ISD:127] Ancient Grudge
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Kessig Titan TDtB ST Jan 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Kessig Titan TDtB ST Jan 2012.mwDeck.dck
new file mode 100644
index 0000000000..3900c13d23
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Kessig Titan TDtB ST Jan 2012.mwDeck.dck
@@ -0,0 +1,27 @@
+4 [MBS:75] Slagstorm
+4 [M13:228] Rootbound Crag
+5 [UNH:140] Forest
+1 [MBS:92] Thrun, the Last Troll
+2 [MBS:81] Green Sun's Zenith
+4 [M12:188] Primeval Titan
+1 [M12:165] Birds of Paradise
+6 [UNH:139] Mountain
+3 [C13:114] Inferno Titan
+2 [ISD:140] Devil's Play
+3 [ISD:243] Kessig Wolf Run
+4 [M12:190] Rampant Growth
+1 [C14:283] Wurmcoil Engine
+4 [MBS:145] Inkmoth Nexus
+4 [C14:271] Solemn Simulacrum
+4 [MBS:134] Sphere of the Suns
+4 [SOM:225] Copperline Gorge
+4 [SOM:91] Galvanic Blast
+SB: 2 [C13:134] Acidic Slime
+SB: 2 [NPH:161] Sword of War and Peace
+SB: 2 [MBS:138] Sword of Feast and Famine
+SB: 1 [NPH:130] Batterskull
+SB: 1 [MBS:92] Thrun, the Last Troll
+SB: 1 [SOM:104] Spikeshot Elder
+SB: 1 [NPH:103] Beast Within
+SB: 3 [M12:164] Autumn's Veil
+SB: 2 [ISD:127] Ancient Grudge
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Kessig Titan TDtB ST Jul 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Kessig Titan TDtB ST Jul 2012.mwDeck.dck
new file mode 100644
index 0000000000..242dabfdaa
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Kessig Titan TDtB ST Jul 2012.mwDeck.dck
@@ -0,0 +1,28 @@
+4 [MBS:75] Slagstorm
+4 [UNH:140] Forest
+4 [M13:228] Rootbound Crag
+4 [M12:188] Primeval Titan
+3 [NPH:103] Beast Within
+3 [UNH:139] Mountain
+4 [C13:114] Inferno Titan
+2 [ISD:140] Devil's Play
+1 [ISD:243] Kessig Wolf Run
+4 [AVR:226] Cavern of Souls
+4 [M12:190] Rampant Growth
+1 [C14:184] Whipflare
+2 [MBS:145] Inkmoth Nexus
+4 [SOM:227] Glimmerpost
+4 [C14:271] Solemn Simulacrum
+4 [MBS:134] Sphere of the Suns
+4 [SOM:225] Copperline Gorge
+4 [DKA:140] Huntmaster of the Fells
+SB: 1 [M13:174] Garruk, Primal Hunter
+SB: 1 [ISD:243] Kessig Wolf Run
+SB: 2 [M12:128] Combust
+SB: 2 [MBS:74] Red Sun's Zenith
+SB: 1 [C14:283] Wurmcoil Engine
+SB: 1 [NPH:103] Beast Within
+SB: 1 [M13:123] Chandra, the Firebrand
+SB: 2 [SOM:222] Wall of Tanglecord
+SB: 2 [DKA:110] Crushing Vines
+SB: 2 [NPH:1] Karn Liberated
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Kessig Titan TDtB ST May 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Kessig Titan TDtB ST May 2012.mwDeck.dck
new file mode 100644
index 0000000000..2f3a4fffd2
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Kessig Titan TDtB ST May 2012.mwDeck.dck
@@ -0,0 +1,28 @@
+3 [NPH:161] Sword of War and Peace
+4 [M13:228] Rootbound Crag
+10 [UNH:140] Forest
+1 [M12:146] Incinerate
+4 [MBS:81] Green Sun's Zenith
+4 [M12:165] Birds of Paradise
+4 [C14:204] Llanowar Elves
+3 [UNH:139] Mountain
+1 [C13:134] Acidic Slime
+2 [ISD:243] Kessig Wolf Run
+2 [NPH:42] Phyrexian Metamorph
+4 [DKA:127] Strangleroot Geist
+2 [DKA:93] Hellrider
+1 [MBS:138] Sword of Feast and Famine
+3 [AVR:205] Wolfir Avenger
+4 [SOM:225] Copperline Gorge
+4 [DKA:140] Huntmaster of the Fells
+4 [SOM:91] Galvanic Blast
+SB: 1 [NPH:107] Corrosive Gale
+SB: 1 [M13:174] Garruk, Primal Hunter
+SB: 2 [M12:150] Manabarbs
+SB: 2 [KTK:142] Naturalize
+SB: 1 [ISD:176] Daybreak Ranger
+SB: 2 [NPH:78] Act of Aggression
+SB: 1 [AVR:166] Zealous Conscripts
+SB: 3 [SOM:81] Arc Trail
+SB: 1 [DKA:120] Increasing Savagery
+SB: 1 [ISD:127] Ancient Grudge
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Kessig Titan TDtB ST Nov 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Kessig Titan TDtB ST Nov 2011.mwDeck.dck
new file mode 100644
index 0000000000..88c503ed74
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Kessig Titan TDtB ST Nov 2011.mwDeck.dck
@@ -0,0 +1,26 @@
+3 [MBS:75] Slagstorm
+4 [M13:228] Rootbound Crag
+5 [UNH:140] Forest
+1 [MBS:92] Thrun, the Last Troll
+2 [MBS:81] Green Sun's Zenith
+4 [M12:188] Primeval Titan
+1 [M12:165] Birds of Paradise
+6 [UNH:139] Mountain
+4 [C13:114] Inferno Titan
+2 [ISD:140] Devil's Play
+1 [M14:155] Shock
+3 [ISD:243] Kessig Wolf Run
+4 [M12:190] Rampant Growth
+4 [MBS:145] Inkmoth Nexus
+4 [C14:271] Solemn Simulacrum
+4 [MBS:134] Sphere of the Suns
+4 [SOM:225] Copperline Gorge
+4 [SOM:91] Galvanic Blast
+SB: 1 [MBS:75] Slagstorm
+SB: 2 [MBS:138] Sword of Feast and Famine
+SB: 1 [MBS:94] Viridian Corrupter
+SB: 2 [MBS:92] Thrun, the Last Troll
+SB: 2 [ISD:207] Tree of Redemption
+SB: 1 [NPH:103] Beast Within
+SB: 4 [M12:164] Autumn's Veil
+SB: 2 [ISD:127] Ancient Grudge
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Kessig Titan TDtB ST Oct 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Kessig Titan TDtB ST Oct 2011.mwDeck.dck
new file mode 100644
index 0000000000..11ea4f3ed5
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Kessig Titan TDtB ST Oct 2011.mwDeck.dck
@@ -0,0 +1,25 @@
+3 [MBS:75] Slagstorm
+4 [M13:228] Rootbound Crag
+9 [UNH:140] Forest
+4 [MBS:95] Viridian Emissary
+4 [MBS:81] Green Sun's Zenith
+3 [M12:188] Primeval Titan
+4 [NPH:103] Beast Within
+1 [M12:165] Birds of Paradise
+3 [UNH:139] Mountain
+4 [M13:174] Garruk, Primal Hunter
+1 [C13:134] Acidic Slime
+2 [ISD:243] Kessig Wolf Run
+4 [M12:190] Rampant Growth
+3 [C14:283] Wurmcoil Engine
+4 [MBS:145] Inkmoth Nexus
+3 [C14:271] Solemn Simulacrum
+4 [SOM:225] Copperline Gorge
+SB: 1 [MBS:75] Slagstorm
+SB: 1 [MBS:94] Viridian Corrupter
+SB: 3 [MBS:138] Sword of Feast and Famine
+SB: 1 [M14:215] Ratchet Bomb
+SB: 2 [MBS:92] Thrun, the Last Troll
+SB: 2 [ISD:207] Tree of Redemption
+SB: 1 [NPH:159] Spellskite
+SB: 4 [ISD:127] Ancient Grudge
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Kessig U TDtB ST Aug 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Kessig U TDtB ST Aug 2012.mwDeck.dck
new file mode 100644
index 0000000000..29b0c89169
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Kessig U TDtB ST Aug 2012.mwDeck.dck
@@ -0,0 +1,28 @@
+5 [UNH:140] Forest
+4 [AVR:81] Temporal Mastery
+4 [M12:188] Primeval Titan
+1 [UNH:139] Mountain
+2 [ISD:78] Snapcaster Mage
+2 [C14:112] Frost Titan
+2 [M13:193] Thragtusk
+1 [ISD:243] Kessig Wolf Run
+4 [M13:170] Farseek
+2 [AVR:226] Cavern of Souls
+4 [M12:190] Rampant Growth
+4 [ISD:241] Hinterland Harbor
+4 [AVR:129] Bonfire of the Damned
+1 [MBS:145] Inkmoth Nexus
+4 [SOM:227] Glimmerpost
+2 [C14:271] Solemn Simulacrum
+4 [SOM:225] Copperline Gorge
+2 [M12:72] Phantasmal Image
+4 [UNH:137] Island
+4 [M12:73] Ponder
+SB: 2 [M13:193] Thragtusk
+SB: 2 [AVR:226] Cavern of Souls
+SB: 1 [M12:128] Combust
+SB: 2 [C14:184] Whipflare
+SB: 2 [NPH:103] Beast Within
+SB: 2 [DKA:110] Crushing Vines
+SB: 2 [NPH:1] Karn Liberated
+SB: 2 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Kozilek Caw-Blade TDtB ST May 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Kozilek Caw-Blade TDtB ST May 2011.mwDeck.dck
new file mode 100644
index 0000000000..7d67c0a5ff
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Kozilek Caw-Blade TDtB ST May 2011.mwDeck.dck
@@ -0,0 +1,28 @@
+3 [MBS:43] Go for the Throat
+1 [NPH:161] Sword of War and Peace
+4 [WWK:134] Creeping Tar Pit
+3 [M13:225] Glacial Fortress
+1 [NPH:130] Batterskull
+2 [ZEN:211] Arid Mesa
+4 [ROE:115] Inquisition of Kozilek
+2 [KTK:69] Despise
+1 [C14:115] Into the Roil
+4 [M11:70] Preordain
+4 [ZEN:219] Marsh Flats
+1 [MBS:138] Sword of Feast and Famine
+4 [SOM:229] Seachrome Coast
+2 [ZEN:11] Emeria Angel
+4 [M11:33] Squadron Hawk
+4 [SOM:226] Darkslick Shores
+4 [WWK:20] Stoneforge Mystic
+4 [WWK:31] Jace, the Mind Sculptor
+4 [UNH:136] Plains
+2 [UNH:138] Swamp
+2 [M12:63] Mana Leak
+SB: 2 [MBS:5] Divine Offering
+SB: 2 [ZEN:11] Emeria Angel
+SB: 2 [NPH:130] Batterskull
+SB: 1 [M14:97] Duress
+SB: 3 [ROE:40] Oust
+SB: 3 [NPH:159] Spellskite
+SB: 2 [M12:52] Flashfreeze
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Kuldotha Red TDtB ST Feb 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Kuldotha Red TDtB ST Feb 2011.mwDeck.dck
new file mode 100644
index 0000000000..09c1d14416
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Kuldotha Red TDtB ST Feb 2011.mwDeck.dck
@@ -0,0 +1,20 @@
+4 [SOM:174] Memnite
+3 [SOM:141] Chimeric Mass
+2 [ROE:140] Devastating Summons
+16 [UNH:139] Mountain
+4 [M15:223] Ornithopter
+4 [ZEN:125] Goblin Bushwhacker
+4 [ZEN:126] Goblin Guide
+4 [MBS:107] Flayer Husk
+4 [SOM:96] Kuldotha Rebirth
+4 [MBS:131] Signal Pest
+3 [SOM:179] Mox Opal
+4 [MBS:144] Contested War Zone
+4 [SOM:91] Galvanic Blast
+SB: 3 [M13:141] Mark of Mutiny
+SB: 4 [M11:208] Jinxed Idol
+SB: 1 [M15:225] Phyrexian Revoker
+SB: 1 [ZEN:226] Teetering Peaks
+SB: 1 [C14:183] Tuktuk the Explorer
+SB: 3 [SOM:81] Arc Trail
+SB: 2 [ROE:146] Forked Bolt
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Mardu Control TDtB ST Dec 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Mardu Control TDtB ST Dec 2014.mwDeck.dck
new file mode 100644
index 0000000000..77253da083
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Mardu Control TDtB ST Dec 2014.mwDeck.dck
@@ -0,0 +1,48 @@
+3 [ONS:313] Bloodstained Mire
+1 [THS:127] Lightning Strike
+1 [7ED:339] Mountain
+1 [INV:343] Mountain
+1 [ZEN:263] Mountain
+1 [APC:140] Caves of Koilos
+3 [KTK:22] Seeker of the Way
+1 [THS:227] Temple of Silence
+1 [KTK:202] Sorin, Solemn Visitor
+4 [THS:228] Temple of Triumph
+4 [KTK:168] Butcher of the Horde
+1 [M14:132] Chandra, Pyromaster
+2 [M15:145] Goblin Rabblemaster
+1 [APC:139] Battlefield Forge
+1 [DDL:22] Magma Jet
+3 [THS:4] Chained to the Rocks
+1 [10E:348] Battlefield Forge
+1 [PO2:157] Mountain
+1 [SOM:238] Swamp
+1 [DDO:1] Elspeth, Sun's Champion
+1 [JR:43] Bloodstained Mire
+2 [MBP:98] Goblin Rabblemaster
+1 [KTK:31] Wingmate Roc
+2 [KTK:97] Arc Lightning
+1 [9ED:320] Caves of Koilos
+2 [KTK:119] Sarkhan, the Dragonspeaker
+2 [KTK:237] Nomad Outpost
+1 [M12:243] Mountain
+2 [M15:155] Lightning Strike
+2 [DDN:34] Nomad Outpost
+4 [KTK:111] Hordeling Outburst
+1 [9ED:318] Battlefield Forge
+1 [KTK:81] Murderous Cut
+4 [KTK:171] Crackling Doom
+1 [TPR:262] Mountain
+SB: 1 [ULG:7] Erase
+SB: 1 [THS:15] Glare of Heresy
+SB: 1 [MBP:75] Chandra, Pyromaster
+SB: 2 [THS:112] Anger of the Gods
+SB: 1 [THS:101] Read the Bones
+SB: 1 [KTK:104] Burn Away
+SB: 1 [THS:107] Thoughtseize
+SB: 1 [C14:158] Read the Bones
+SB: 1 [KTK:186] Mardu Charm
+SB: 1 [MGDC:38] Utter End
+SB: 1 [KTK:9] Erase
+SB: 2 [KTK:8] End Hostilities
+SB: 1 [THS:9] Elspeth, Sun's Champion
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Mardu Control TDtB ST Nov 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Mardu Control TDtB ST Nov 2014.mwDeck.dck
new file mode 100644
index 0000000000..c02752c3ca
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Mardu Control TDtB ST Nov 2014.mwDeck.dck
@@ -0,0 +1,26 @@
+3 [KTK:119] Sarkhan, the Dragonspeaker
+4 [KTK:237] Nomad Outpost
+3 [KTK:22] Seeker of the Way
+2 [THS:227] Temple of Silence
+2 [KTK:202] Sorin, Solemn Visitor
+2 [THS:128] Magma Jet
+3 [M15:240] Battlefield Forge
+3 [THS:228] Temple of Triumph
+2 [M15:241] Caves of Koilos
+4 [KTK:168] Butcher of the Horde
+6 [UNH:139] Mountain
+4 [M15:155] Lightning Strike
+4 [M15:145] Goblin Rabblemaster
+4 [KTK:111] Hordeling Outburst
+3 [THS:4] Chained to the Rocks
+4 [KTK:230] Bloodstained Mire
+1 [KTK:81] Murderous Cut
+4 [KTK:171] Crackling Doom
+1 [THS:9] Elspeth, Sun's Champion
+1 [UNH:138] Swamp
+SB: 2 [KTK:210] Utter End
+SB: 2 [M15:134] Chandra, Pyromaster
+SB: 2 [THS:15] Glare of Heresy
+SB: 3 [KTK:8] End Hostilities
+SB: 3 [THS:112] Anger of the Gods
+SB: 3 [M15:164] Stoke the Flames
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Mardu Midrange TDtB ST Jan 2015.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Mardu Midrange TDtB ST Jan 2015.mwDeck.dck
new file mode 100644
index 0000000000..8b4efaf503
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Mardu Midrange TDtB ST Jan 2015.mwDeck.dck
@@ -0,0 +1,29 @@
+2 [KTK:31] Wingmate Roc
+2 [KTK:119] Sarkhan, the Dragonspeaker
+4 [KTK:237] Nomad Outpost
+3 [KTK:22] Seeker of the Way
+2 [THS:227] Temple of Silence
+2 [KTK:202] Sorin, Solemn Visitor
+3 [M15:240] Battlefield Forge
+4 [THS:228] Temple of Triumph
+2 [M15:241] Caves of Koilos
+4 [KTK:168] Butcher of the Horde
+5 [UNH:139] Mountain
+4 [M15:155] Lightning Strike
+4 [M15:145] Goblin Rabblemaster
+1 [KTK:210] Utter End
+4 [KTK:111] Hordeling Outburst
+3 [THS:4] Chained to the Rocks
+4 [KTK:230] Bloodstained Mire
+1 [KTK:81] Murderous Cut
+4 [KTK:171] Crackling Doom
+1 [THS:9] Elspeth, Sun's Champion
+1 [UNH:138] Swamp
+SB: 1 [KTK:210] Utter End
+SB: 2 [C14:158] Read the Bones
+SB: 3 [M15:15] Hushwing Gryff
+SB: 1 [THS:15] Glare of Heresy
+SB: 1 [KTK:9] Erase
+SB: 1 [KTK:8] End Hostilities
+SB: 3 [THS:112] Anger of the Gods
+SB: 3 [THS:107] Thoughtseize
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Mardu Midrange TDtB ST Oct 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Mardu Midrange TDtB ST Oct 2014.mwDeck.dck
new file mode 100644
index 0000000000..601d07e4c3
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Mardu Midrange TDtB ST Oct 2014.mwDeck.dck
@@ -0,0 +1,32 @@
+3 [BNG:5] Brimaz, King of Oreskos
+3 [THS:143] Stormbreath Dragon
+2 [KTK:119] Sarkhan, the Dragonspeaker
+4 [KTK:237] Nomad Outpost
+2 [THS:227] Temple of Silence
+2 [KTK:202] Sorin, Solemn Visitor
+2 [M15:240] Battlefield Forge
+2 [THS:228] Temple of Triumph
+4 [THS:107] Thoughtseize
+4 [M15:241] Caves of Koilos
+2 [M15:164] Stoke the Flames
+4 [KTK:168] Butcher of the Horde
+2 [UNH:139] Mountain
+3 [M15:155] Lightning Strike
+4 [M15:145] Goblin Rabblemaster
+4 [KTK:230] Bloodstained Mire
+1 [KTK:81] Murderous Cut
+3 [THS:90] Hero's Downfall
+4 [KTK:171] Crackling Doom
+2 [BNG:164] Temple of Malice
+1 [JOU:163] Mana Confluence
+2 [UNH:138] Swamp
+SB: 2 [JOU:18] Nyx-Fleece Ram
+SB: 1 [KTK:210] Utter End
+SB: 2 [JOU:103] Magma Spray
+SB: 1 [KTK:72] Empty the Pits
+SB: 1 [JOU:100] Harness by Force
+SB: 3 [THS:112] Anger of the Gods
+SB: 1 [KTK:31] Wingmate Roc
+SB: 1 [THS:9] Elspeth, Sun's Champion
+SB: 2 [KTK:69] Despise
+SB: 1 [KTK:25] Suspension Field
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Mono Black Aggro TDtB ST Mar 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Mono Black Aggro TDtB ST Mar 2014.mwDeck.dck
new file mode 100644
index 0000000000..8f2be96742
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Mono Black Aggro TDtB ST Mar 2014.mwDeck.dck
@@ -0,0 +1,20 @@
+1 [RTR:82] Ultimate Price
+4 [RTR:73] Pack Rat
+4 [THS:107] Thoughtseize
+4 [THS:108] Tormented Hero
+3 [BNG:61] Bile Blight
+3 [M14:101] Lifebane Zombie
+4 [RTR:220] Rakdos Cackler
+3 [BNG:80] Pain Seer
+4 [THS:90] Hero's Downfall
+4 [M14:228] Mutavault
+2 [THS:97] Mogis's Marauder
+20 [UNH:138] Swamp
+4 [BNG:75] Herald of Torment
+SB: 1 [THS:110] Whip of Erebos
+SB: 2 [RTR:63] Desecration Demon
+SB: 2 [M14:96] Doom Blade
+SB: 3 [M14:97] Duress
+SB: 3 [THS:83] Dark Betrayal
+SB: 2 [GTC:63] Devour Flesh
+SB: 2 [THS:85] Erebos, God of the Dead
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Mono Black Control TDtB ST Aug 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Mono Black Control TDtB ST Aug 2012.mwDeck.dck
new file mode 100644
index 0000000000..a97fed5624
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Mono Black Control TDtB ST Aug 2012.mwDeck.dck
@@ -0,0 +1,26 @@
+2 [MBS:43] Go for the Throat
+2 [M12:109] Sorin Markov
+4 [C13:97] Vampire Nighthawk
+1 [M12:111] Sorin's Vengeance
+2 [NPH:1] Karn Liberated
+3 [C14:136] Black Sun's Zenith
+2 [C14:145] Grave Titan
+1 [NPH:74] Surgical Extraction
+2 [NPH:42] Phyrexian Metamorph
+4 [C14:264] Pristine Talisman
+1 [NPH:57] Dismember
+1 [ISD:115] Sever the Bloodline
+1 [M14:96] Doom Blade
+3 [C14:150] Mutilate
+4 [C14:161] Sign in Blood
+3 [M14:97] Duress
+2 [ISD:94] Curse of Death's Hold
+23 [UNH:138] Swamp
+SB: 1 [NPH:74] Surgical Extraction
+SB: 3 [DKA:149] Grafdigger's Cage
+SB: 2 [M14:215] Ratchet Bomb
+SB: 1 [ISD:115] Sever the Bloodline
+SB: 2 [ISD:90] Bloodline Keeper
+SB: 2 [C13:249] Nihil Spellbomb
+SB: 1 [NPH:137] Hex Parasite
+SB: 3 [ISD:105] Liliana of the Veil
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Mono Black Control TDtB ST Jul 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Mono Black Control TDtB ST Jul 2011.mwDeck.dck
new file mode 100644
index 0000000000..bb087ddf3b
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Mono Black Control TDtB ST Jul 2011.mwDeck.dck
@@ -0,0 +1,18 @@
+1 [MBS:43] Go for the Throat
+4 [C13:97] Vampire Nighthawk
+4 [ROE:115] Inquisition of Kozilek
+4 [ZEN:89] Gatekeeper of Malakir
+4 [C14:245] Lashwrithe
+2 [M15:103] Liliana Vess
+4 [NPH:68] Phyrexian Obliterator
+2 [NPH:57] Dismember
+2 [M14:96] Doom Blade
+4 [C14:161] Sign in Blood
+4 [M14:97] Duress
+1 [M14:91] Corrupt
+24 [UNH:138] Swamp
+SB: 4 [SOM:69] Memoricide
+SB: 4 [MBS:50] Phyrexian Crusader
+SB: 2 [M14:96] Doom Blade
+SB: 4 [ZEN:83] Bloodghast
+SB: 1 [NPH:130] Batterskull
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Mono Black Infect TDtB ST Oct 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Mono Black Infect TDtB ST Oct 2011.mwDeck.dck
new file mode 100644
index 0000000000..68a90eabb8
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Mono Black Infect TDtB ST Oct 2011.mwDeck.dck
@@ -0,0 +1,24 @@
+2 [SOM:79] Skithiryx, the Blight Dragon
+4 [MBS:50] Phyrexian Crusader
+3 [C13:249] Nihil Spellbomb
+4 [C14:245] Lashwrithe
+2 [NPH:77] Whispering Specter
+1 [SOM:218] Tumble Magnet
+2 [NPH:57] Dismember
+4 [MBS:145] Inkmoth Nexus
+4 [SOM:75] Plague Stinger
+2 [M14:96] Doom Blade
+2 [NPH:47] Tezzeret's Gambit
+2 [MBS:57] Virulent Wound
+2 [M12:94] Distress
+21 [UNH:138] Swamp
+3 [ISD:105] Liliana of the Veil
+2 [SOM:144] Contagion Clasp
+SB: 2 [C14:136] Black Sun's Zenith
+SB: 2 [NPH:77] Whispering Specter
+SB: 3 [MBS:52] Phyrexian Vatmother
+SB: 1 [M14:96] Doom Blade
+SB: 2 [MBS:57] Virulent Wound
+SB: 2 [M12:94] Distress
+SB: 1 [C13:249] Nihil Spellbomb
+SB: 2 [NPH:159] Spellskite
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Mono Green Infect TDtB ST Aug 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Mono Green Infect TDtB ST Aug 2012.mwDeck.dck
new file mode 100644
index 0000000000..97005651c1
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Mono Green Infect TDtB ST Aug 2012.mwDeck.dck
@@ -0,0 +1,22 @@
+1 [MBS:94] Viridian Corrupter
+13 [UNH:140] Forest
+4 [NPH:2] Apostle's Blessing
+4 [NPH:111] Glistener Elf
+2 [MBS:81] Green Sun's Zenith
+4 [M13:221] Cathedral of War
+4 [M13:185] Rancor
+4 [NPH:116] Mutagenic Growth
+4 [AVR:203] Wild Defiance
+4 [NPH:86] Gut Shot
+4 [M15:203] Titanic Growth
+4 [MBS:145] Inkmoth Nexus
+3 [NPH:38] Mental Misstep
+1 [SOM:112] Blight Mamba
+4 [SOM:166] Ichorclaw Myr
+SB: 3 [MBS:94] Viridian Corrupter
+SB: 4 [NPH:57] Dismember
+SB: 1 [NPH:38] Mental Misstep
+SB: 2 [NPH:103] Beast Within
+SB: 1 [NPH:115] Melira, Sylvok Outcast
+SB: 3 [NPH:159] Spellskite
+SB: 1 [SOM:112] Blight Mamba
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Naya Aggro TDtB ST Apr 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Naya Aggro TDtB ST Apr 2014.mwDeck.dck
new file mode 100644
index 0000000000..ec8c5863ea
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Naya Aggro TDtB ST Apr 2014.mwDeck.dck
@@ -0,0 +1,23 @@
+3 [THS:224] Temple of Abandon
+2 [M14:1] Ajani, Caller of the Pride
+4 [GTC:119] Experiment One
+2 [UNH:140] Forest
+1 [THS:228] Temple of Triumph
+4 [C13:179] Boros Charm
+4 [C13:211] Selesnya Charm
+4 [M14:202] Witchstalker
+4 [RTR:248] Temple Garden
+4 [GTC:247] Stomping Ground
+4 [THS:193] Fleecemane Lion
+4 [BNG:165] Temple of Plenty
+3 [DGM:51] Advent of the Wurm
+4 [GTC:245] Sacred Foundry
+4 [GTC:167] Ghor-Clan Rampager
+1 [GTC:98] Madcap Skills
+3 [THS:152] Boon Satyr
+1 [UNH:136] Plains
+4 [DGM:114] Voice of Resurgence
+SB: 4 [DGM:49] Skylasher
+SB: 4 [DGM:111] Unflinching Courage
+SB: 3 [GTC:98] Madcap Skills
+SB: 4 [RTR:9] Ethereal Armor
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Naya Aggro TDtB ST Dec 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Naya Aggro TDtB ST Dec 2012.mwDeck.dck
new file mode 100644
index 0000000000..7fa129f9df
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Naya Aggro TDtB ST Dec 2012.mwDeck.dck
@@ -0,0 +1,23 @@
+4 [AVR:32] Restoration Angel
+4 [UNH:140] Forest
+4 [M13:228] Rootbound Crag
+3 [UNH:139] Mountain
+4 [RTR:178] Loxodon Smiter
+4 [M13:150] Thundermaw Hellkite
+4 [C13:211] Selesnya Charm
+4 [ISD:170] Avacyn's Pilgrim
+4 [M13:193] Thragtusk
+2 [ISD:243] Kessig Wolf Run
+4 [M13:170] Farseek
+4 [AVR:226] Cavern of Souls
+4 [RTR:248] Temple Garden
+4 [AVR:129] Bonfire of the Damned
+4 [DKA:140] Huntmaster of the Fells
+3 [ISD:238] Clifftop Retreat
+SB: 2 [M13:174] Garruk, Primal Hunter
+SB: 1 [DKA:17] Ray of Revelation
+SB: 2 [ISD:181] Garruk Relentless
+SB: 4 [AVR:149] Pillar of Flame
+SB: 2 [RTR:1] Angel of Serenity
+SB: 2 [AVR:210] Sigarda, Host of Herons
+SB: 2 [RTR:18] Rest in Peace
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Naya Aggro TDtB ST Oct 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Naya Aggro TDtB ST Oct 2013.mwDeck.dck
new file mode 100644
index 0000000000..d794aa0a0c
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Naya Aggro TDtB ST Oct 2013.mwDeck.dck
@@ -0,0 +1,33 @@
+4 [THS:224] Temple of Abandon
+4 [THS:143] Stormbreath Dragon
+3 [UNH:140] Forest
+3 [GTC:215] Boros Reckoner
+1 [THS:209] Xenagos, the Reveler
+2 [THS:228] Temple of Triumph
+1 [M14:195] Scavenging Ooze
+1 [UNH:139] Mountain
+3 [RTR:178] Loxodon Smiter
+1 [M15:134] Chandra, Pyromaster
+1 [RTR:101] Mizzium Mortars
+4 [RTR:248] Temple Garden
+4 [GTC:247] Stomping Ground
+4 [THS:193] Fleecemane Lion
+1 [THS:172] Polukranos, World Eater
+4 [GTC:245] Sacred Foundry
+4 [GTC:167] Ghor-Clan Rampager
+4 [GTC:156] Domri Rade
+4 [C14:191] Elvish Mystic
+2 [UNH:136] Plains
+1 [THS:180] Sylvan Caryatid
+4 [DGM:114] Voice of Resurgence
+SB: 1 [RTR:101] Mizzium Mortars
+SB: 1 [M14:155] Shock
+SB: 2 [C13:179] Boros Charm
+SB: 3 [DGM:111] Unflinching Courage
+SB: 1 [C13:211] Selesnya Charm
+SB: 2 [THS:15] Glare of Heresy
+SB: 1 [RTR:231] Pithing Needle
+SB: 1 [GTC:169] Gruul Charm
+SB: 1 [THS:150] Arbor Colossus
+SB: 1 [DGM:135] Wear // Tear
+SB: 1 [M14:195] Scavenging Ooze
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Naya Aura TDtB ST Mar 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Naya Aura TDtB ST Mar 2014.mwDeck.dck
new file mode 100644
index 0000000000..ea1b95c257
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Naya Aura TDtB ST Mar 2014.mwDeck.dck
@@ -0,0 +1,25 @@
+2 [M14:1] Ajani, Caller of the Pride
+2 [BNG:7] Eidolon of Countless Battles
+2 [M14:18] Fiendslayer Paladin
+4 [UNH:140] Forest
+2 [BNG:27] Spirit of the Labyrinth
+1 [THS:228] Temple of Triumph
+4 [RTR:9] Ethereal Armor
+4 [M14:176] Gladecover Scout
+4 [C13:179] Boros Charm
+4 [THS:4] Chained to the Rocks
+4 [DGM:111] Unflinching Courage
+2 [C13:211] Selesnya Charm
+4 [M14:202] Witchstalker
+4 [RTR:248] Temple Garden
+4 [GTC:247] Stomping Ground
+4 [BNG:165] Temple of Plenty
+4 [GTC:245] Sacred Foundry
+4 [GTC:98] Madcap Skills
+1 [UNH:136] Plains
+SB: 4 [DGM:49] Skylasher
+SB: 2 [C13:211] Selesnya Charm
+SB: 3 [GTC:219] Gift of Orzhova
+SB: 3 [DGM:44] Mending Touch
+SB: 2 [BNG:27] Spirit of the Labyrinth
+SB: 1 [BNG:25] Revoke Existence
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Naya Aura TDtB ST May 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Naya Aura TDtB ST May 2014.mwDeck.dck
new file mode 100644
index 0000000000..9f495c8c1a
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Naya Aura TDtB ST May 2014.mwDeck.dck
@@ -0,0 +1,24 @@
+4 [JOU:117] Bassara Tower Archer
+2 [THS:224] Temple of Abandon
+1 [UNH:140] Forest
+4 [RTR:9] Ethereal Armor
+4 [M14:176] Gladecover Scout
+4 [C13:179] Boros Charm
+4 [DGM:111] Unflinching Courage
+4 [M14:202] Witchstalker
+4 [RTR:248] Temple Garden
+4 [GTC:247] Stomping Ground
+2 [THS:193] Fleecemane Lion
+4 [JOU:163] Mana Confluence
+4 [BNG:165] Temple of Plenty
+4 [GTC:245] Sacred Foundry
+4 [GTC:167] Ghor-Clan Rampager
+4 [GTC:98] Madcap Skills
+3 [THS:152] Boon Satyr
+SB: 2 [DGM:49] Skylasher
+SB: 2 [C13:211] Selesnya Charm
+SB: 2 [THS:4] Chained to the Rocks
+SB: 2 [JOU:5] Banishing Light
+SB: 3 [GTC:106] Skullcrack
+SB: 2 [DGM:135] Wear // Tear
+SB: 2 [M14:195] Scavenging Ooze
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Naya Blitz TDtB ST Mar 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Naya Blitz TDtB ST Mar 2013.mwDeck.dck
new file mode 100644
index 0000000000..ead1e4e5b8
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Naya Blitz TDtB ST Mar 2013.mwDeck.dck
@@ -0,0 +1,24 @@
+4 [GTC:7] Boros Elite
+2 [M13:229] Sunpetal Grove
+4 [GTC:119] Experiment One
+1 [M13:228] Rootbound Crag
+4 [GTC:216] Burning-Tree Emissary
+4 [M13:147] Searing Spear
+4 [ISD:193] Mayor of Avabruck
+4 [M13:171] Flinthoof Boar
+4 [AVR:226] Cavern of Souls
+4 [RTR:248] Temple Garden
+4 [GTC:247] Stomping Ground
+4 [GTC:12] Frontline Medic
+4 [AVR:144] Lightning Mauler
+4 [GTC:245] Sacred Foundry
+1 [GTC:167] Ghor-Clan Rampager
+3 [DKA:24] Thalia, Guardian of Thraben
+1 [ISD:238] Clifftop Retreat
+4 [ISD:6] Champion of the Parish
+SB: 4 [C13:179] Boros Charm
+SB: 2 [C13:11] Fiend Hunter
+SB: 3 [M14:25] Pacifism
+SB: 2 [GTC:215] Boros Reckoner
+SB: 2 [AVR:31] Nearheath Pilgrim
+SB: 2 [M14:139] Flames of the Firebrand
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Naya Human TDtB ST Jun 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Naya Human TDtB ST Jun 2013.mwDeck.dck
new file mode 100644
index 0000000000..de64239781
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Naya Human TDtB ST Jun 2013.mwDeck.dck
@@ -0,0 +1,24 @@
+4 [GTC:7] Boros Elite
+2 [M13:229] Sunpetal Grove
+4 [GTC:119] Experiment One
+1 [M13:228] Rootbound Crag
+4 [GTC:216] Burning-Tree Emissary
+4 [M13:147] Searing Spear
+4 [ISD:193] Mayor of Avabruck
+4 [AVR:226] Cavern of Souls
+4 [RTR:248] Temple Garden
+4 [ISD:187] Hamlet Captain
+4 [GTC:247] Stomping Ground
+4 [GTC:12] Frontline Medic
+4 [AVR:144] Lightning Mauler
+4 [GTC:245] Sacred Foundry
+1 [GTC:167] Ghor-Clan Rampager
+3 [DKA:24] Thalia, Guardian of Thraben
+1 [ISD:238] Clifftop Retreat
+4 [ISD:6] Champion of the Parish
+SB: 2 [RTR:93] Electrickery
+SB: 3 [C13:179] Boros Charm
+SB: 2 [C13:11] Fiend Hunter
+SB: 3 [C14:278] Tormod's Crypt
+SB: 2 [M14:25] Pacifism
+SB: 3 [GTC:106] Skullcrack
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Naya Human TDtB ST May 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Naya Human TDtB ST May 2013.mwDeck.dck
new file mode 100644
index 0000000000..e0dbe60f93
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Naya Human TDtB ST May 2013.mwDeck.dck
@@ -0,0 +1,25 @@
+4 [GTC:7] Boros Elite
+4 [GTC:119] Experiment One
+2 [M13:228] Rootbound Crag
+4 [GTC:216] Burning-Tree Emissary
+1 [ISD:34] Spare from Evil
+2 [C13:179] Boros Charm
+4 [ISD:193] Mayor of Avabruck
+4 [M13:171] Flinthoof Boar
+4 [AVR:226] Cavern of Souls
+4 [RTR:248] Temple Garden
+4 [GTC:247] Stomping Ground
+4 [GTC:12] Frontline Medic
+4 [AVR:144] Lightning Mauler
+4 [GTC:245] Sacred Foundry
+2 [GTC:167] Ghor-Clan Rampager
+3 [DKA:24] Thalia, Guardian of Thraben
+2 [ISD:238] Clifftop Retreat
+4 [ISD:6] Champion of the Parish
+SB: 1 [ISD:34] Spare from Evil
+SB: 3 [M13:141] Mark of Mutiny
+SB: 1 [C13:179] Boros Charm
+SB: 3 [C14:278] Tormod's Crypt
+SB: 2 [C13:11] Fiend Hunter
+SB: 2 [DGM:111] Unflinching Courage
+SB: 3 [AVR:149] Pillar of Flame
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Naya Humans TDtB ST Jul 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Naya Humans TDtB ST Jul 2012.mwDeck.dck
new file mode 100644
index 0000000000..877132184b
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Naya Humans TDtB ST Jul 2012.mwDeck.dck
@@ -0,0 +1,26 @@
+4 [AVR:32] Restoration Angel
+3 [UNH:140] Forest
+3 [C14:72] Geist-Honored Monk
+4 [NPH:4] Blade Splicer
+4 [M12:165] Birds of Paradise
+2 [UNH:139] Mountain
+4 [ISD:170] Avacyn's Pilgrim
+3 [DKA:127] Strangleroot Geist
+4 [AVR:226] Cavern of Souls
+4 [AVR:129] Bonfire of the Damned
+4 [SOM:228] Razorverge Thicket
+4 [SOM:225] Copperline Gorge
+4 [AVR:169] Borderland Ranger
+4 [DKA:140] Huntmaster of the Fells
+2 [UNH:136] Plains
+4 [ISD:239] Gavony Township
+3 [DKA:24] Thalia, Guardian of Thraben
+SB: 2 [M12:128] Combust
+SB: 2 [AVR:206] Wolfir Silverheart
+SB: 3 [AVR:166] Zealous Conscripts
+SB: 1 [M15:192] Plummet
+SB: 2 [M12:11] Celestial Purge
+SB: 1 [M13:22] Oblivion Ring
+SB: 1 [DKA:110] Crushing Vines
+SB: 2 [MBS:8] Hero of Bladehold
+SB: 1 [ISD:127] Ancient Grudge
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Naya Midrange TDtB ST Jul 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Naya Midrange TDtB ST Jul 2013.mwDeck.dck
new file mode 100644
index 0000000000..45a6b08787
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Naya Midrange TDtB ST Jul 2013.mwDeck.dck
@@ -0,0 +1,24 @@
+3 [AVR:32] Restoration Angel
+3 [M13:229] Sunpetal Grove
+4 [M13:228] Rootbound Crag
+4 [GTC:215] Boros Reckoner
+4 [RTR:178] Loxodon Smiter
+4 [M13:150] Thundermaw Hellkite
+2 [C13:211] Selesnya Charm
+4 [ISD:170] Avacyn's Pilgrim
+4 [RTR:248] Temple Garden
+3 [AVR:129] Bonfire of the Damned
+4 [GTC:247] Stomping Ground
+4 [GTC:245] Sacred Foundry
+4 [GTC:156] Domri Rade
+4 [DKA:140] Huntmaster of the Fells
+2 [ISD:239] Gavony Township
+3 [ISD:238] Clifftop Retreat
+4 [DGM:114] Voice of Resurgence
+SB: 3 [C13:179] Boros Charm
+SB: 2 [DKA:17] Ray of Revelation
+SB: 2 [DGM:111] Unflinching Courage
+SB: 2 [AVR:149] Pillar of Flame
+SB: 2 [AVR:166] Zealous Conscripts
+SB: 2 [M13:22] Oblivion Ring
+SB: 2 [DKA:7] Faith's Shield
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Naya Pod TDtB ST Apr 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Naya Pod TDtB ST Apr 2012.mwDeck.dck
new file mode 100644
index 0000000000..3998b644a4
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Naya Pod TDtB ST Apr 2012.mwDeck.dck
@@ -0,0 +1,34 @@
+1 [C13:11] Fiend Hunter
+3 [M13:229] Sunpetal Grove
+3 [M13:228] Rootbound Crag
+6 [UNH:140] Forest
+1 [C14:72] Geist-Honored Monk
+4 [NPH:4] Blade Splicer
+4 [NPH:104] Birthing Pod
+1 [C14:204] Llanowar Elves
+1 [UNH:139] Mountain
+1 [C13:114] Inferno Titan
+1 [C13:134] Acidic Slime
+4 [DKA:127] Strangleroot Geist
+1 [NPH:9] Elesh Norn, Grand Cenobite
+1 [C14:283] Wurmcoil Engine
+3 [DKA:140] Huntmaster of the Fells
+1 [UNH:136] Plains
+4 [M12:165] Birds of Paradise
+3 [ISD:170] Avacyn's Pilgrim
+1 [NPH:42] Phyrexian Metamorph
+2 [ISD:176] Daybreak Ranger
+4 [SOM:228] Razorverge Thicket
+1 [C14:271] Solemn Simulacrum
+4 [SOM:225] Copperline Gorge
+2 [M13:22] Oblivion Ring
+2 [ISD:239] Gavony Township
+1 [MBS:8] Hero of Bladehold
+SB: 3 [M12:150] Manabarbs
+SB: 1 [NPH:42] Phyrexian Metamorph
+SB: 2 [ISD:176] Daybreak Ranger
+SB: 2 [NPH:78] Act of Aggression
+SB: 3 [M12:11] Celestial Purge
+SB: 1 [M13:22] Oblivion Ring
+SB: 2 [MBS:92] Thrun, the Last Troll
+SB: 1 [MBS:8] Hero of Bladehold
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Naya Pod TDtB ST Aug 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Naya Pod TDtB ST Aug 2012.mwDeck.dck
new file mode 100644
index 0000000000..d0f052dc40
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Naya Pod TDtB ST Aug 2012.mwDeck.dck
@@ -0,0 +1,34 @@
+4 [AVR:32] Restoration Angel
+1 [M13:229] Sunpetal Grove
+1 [M13:228] Rootbound Crag
+5 [UNH:140] Forest
+4 [NPH:4] Blade Splicer
+4 [M12:165] Birds of Paradise
+3 [NPH:104] Birthing Pod
+1 [UNH:139] Mountain
+1 [C13:114] Inferno Titan
+1 [C13:134] Acidic Slime
+1 [M13:193] Thragtusk
+4 [ISD:170] Avacyn's Pilgrim
+1 [NPH:42] Phyrexian Metamorph
+4 [AVR:226] Cavern of Souls
+1 [AVR:206] Wolfir Silverheart
+3 [AVR:129] Bonfire of the Damned
+4 [SOM:228] Razorverge Thicket
+1 [AVR:166] Zealous Conscripts
+3 [C14:193] Elvish Visionary
+4 [SOM:225] Copperline Gorge
+2 [DKA:140] Huntmaster of the Fells
+3 [AVR:169] Borderland Ranger
+1 [UNH:136] Plains
+3 [ISD:239] Gavony Township
+SB: 1 [M13:193] Thragtusk
+SB: 2 [AVR:149] Pillar of Flame
+SB: 1 [AVR:166] Zealous Conscripts
+SB: 2 [M12:11] Celestial Purge
+SB: 2 [SOM:81] Arc Trail
+SB: 1 [NPH:115] Melira, Sylvok Outcast
+SB: 1 [NPH:159] Spellskite
+SB: 1 [M12:197] Stingerfling Spider
+SB: 2 [DKA:110] Crushing Vines
+SB: 2 [ISD:127] Ancient Grudge
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Naya Pod TDtB ST Feb 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Naya Pod TDtB ST Feb 2012.mwDeck.dck
new file mode 100644
index 0000000000..6978cca83b
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Naya Pod TDtB ST Feb 2012.mwDeck.dck
@@ -0,0 +1,36 @@
+1 [C13:11] Fiend Hunter
+3 [M13:229] Sunpetal Grove
+2 [M13:228] Rootbound Crag
+6 [UNH:140] Forest
+1 [C14:72] Geist-Honored Monk
+4 [NPH:4] Blade Splicer
+4 [NPH:104] Birthing Pod
+1 [C14:204] Llanowar Elves
+1 [UNH:139] Mountain
+1 [C13:114] Inferno Titan
+1 [C13:134] Acidic Slime
+4 [DKA:127] Strangleroot Geist
+1 [NPH:9] Elesh Norn, Grand Cenobite
+1 [C14:283] Wurmcoil Engine
+2 [MBS:115] Mortarpod
+4 [DKA:140] Huntmaster of the Fells
+1 [UNH:136] Plains
+1 [MBS:95] Viridian Emissary
+4 [M12:165] Birds of Paradise
+3 [ISD:170] Avacyn's Pilgrim
+4 [SOM:228] Razorverge Thicket
+1 [C14:271] Solemn Simulacrum
+4 [SOM:225] Copperline Gorge
+2 [M13:22] Oblivion Ring
+3 [ISD:239] Gavony Township
+SB: 1 [DKA:17] Ray of Revelation
+SB: 1 [C13:134] Acidic Slime
+SB: 1 [NPH:42] Phyrexian Metamorph
+SB: 1 [NPH:97] Tormentor Exarch
+SB: 2 [MBS:138] Sword of Feast and Famine
+SB: 1 [M13:22] Oblivion Ring
+SB: 1 [MBS:92] Thrun, the Last Troll
+SB: 3 [NPH:38] Mental Misstep
+SB: 2 [MBS:8] Hero of Bladehold
+SB: 1 [M12:164] Autumn's Veil
+SB: 1 [ISD:127] Ancient Grudge
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Naya Pod TDtB ST May 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Naya Pod TDtB ST May 2012.mwDeck.dck
new file mode 100644
index 0000000000..bc7638937a
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Naya Pod TDtB ST May 2012.mwDeck.dck
@@ -0,0 +1,32 @@
+2 [M13:229] Sunpetal Grove
+3 [M13:228] Rootbound Crag
+8 [UNH:140] Forest
+4 [NPH:4] Blade Splicer
+4 [MBS:81] Green Sun's Zenith
+1 [M12:188] Primeval Titan
+1 [NPH:90] Priest of Urabrask
+4 [M12:165] Birds of Paradise
+4 [NPH:104] Birthing Pod
+2 [C13:114] Inferno Titan
+1 [C13:134] Acidic Slime
+2 [ISD:170] Avacyn's Pilgrim
+1 [ISD:243] Kessig Wolf Run
+1 [NPH:42] Phyrexian Metamorph
+4 [DKA:127] Strangleroot Geist
+1 [DKA:93] Hellrider
+1 [MBS:138] Sword of Feast and Famine
+4 [SOM:228] Razorverge Thicket
+2 [AVR:166] Zealous Conscripts
+4 [SOM:225] Copperline Gorge
+4 [DKA:140] Huntmaster of the Fells
+2 [ISD:239] Gavony Township
+SB: 1 [DKA:17] Ray of Revelation
+SB: 1 [NPH:42] Phyrexian Metamorph
+SB: 1 [MBS:94] Viridian Corrupter
+SB: 2 [AVR:149] Pillar of Flame
+SB: 1 [C14:175] Faithless Looting
+SB: 1 [MBS:145] Inkmoth Nexus
+SB: 2 [M12:11] Celestial Purge
+SB: 1 [MBS:92] Thrun, the Last Troll
+SB: 3 [M13:22] Oblivion Ring
+SB: 2 [ISD:127] Ancient Grudge
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Naya Podlight TDtB ST Jul 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Naya Podlight TDtB ST Jul 2012.mwDeck.dck
new file mode 100644
index 0000000000..35bd1444f5
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Naya Podlight TDtB ST Jul 2012.mwDeck.dck
@@ -0,0 +1,37 @@
+1 [C13:11] Fiend Hunter
+2 [M13:229] Sunpetal Grove
+2 [M13:228] Rootbound Crag
+4 [UNH:140] Forest
+4 [NPH:4] Blade Splicer
+2 [NPH:104] Birthing Pod
+1 [UNH:139] Mountain
+1 [C13:114] Inferno Titan
+1 [C13:134] Acidic Slime
+2 [ISD:181] Garruk Relentless
+2 [DKA:127] Strangleroot Geist
+2 [AVR:226] Cavern of Souls
+1 [AVR:206] Wolfir Silverheart
+1 [AVR:166] Zealous Conscripts
+1 [AVR:200] Ulvenwald Tracker
+1 [AVR:169] Borderland Ranger
+3 [DKA:140] Huntmaster of the Fells
+2 [UNH:136] Plains
+4 [AVR:32] Restoration Angel
+4 [M12:165] Birds of Paradise
+3 [ISD:170] Avacyn's Pilgrim
+2 [NPH:42] Phyrexian Metamorph
+4 [SOM:228] Razorverge Thicket
+4 [SOM:225] Copperline Gorge
+3 [ISD:239] Gavony Township
+3 [DKA:24] Thalia, Guardian of Thraben
+SB: 2 [NPH:161] Sword of War and Peace
+SB: 1 [ISD:176] Daybreak Ranger
+SB: 3 [AVR:129] Bonfire of the Damned
+SB: 1 [AVR:166] Zealous Conscripts
+SB: 1 [AVR:200] Ulvenwald Tracker
+SB: 1 [DKA:140] Huntmaster of the Fells
+SB: 2 [M13:22] Oblivion Ring
+SB: 1 [DKA:110] Crushing Vines
+SB: 1 [M12:197] Stingerfling Spider
+SB: 1 [MBS:8] Hero of Bladehold
+SB: 1 [ISD:127] Ancient Grudge
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Naya TDtB ST Jan 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Naya TDtB ST Jan 2013.mwDeck.dck
new file mode 100644
index 0000000000..4a1b2cb2f4
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Naya TDtB ST Jan 2013.mwDeck.dck
@@ -0,0 +1,28 @@
+4 [AVR:32] Restoration Angel
+4 [M13:229] Sunpetal Grove
+3 [UNH:140] Forest
+4 [M13:228] Rootbound Crag
+3 [RTR:1] Angel of Serenity
+1 [UNH:139] Mountain
+2 [M13:174] Garruk, Primal Hunter
+2 [RTR:178] Loxodon Smiter
+3 [C13:211] Selesnya Charm
+4 [ISD:170] Avacyn's Pilgrim
+4 [M13:193] Thragtusk
+2 [ISD:243] Kessig Wolf Run
+4 [M13:170] Farseek
+4 [AVR:226] Cavern of Souls
+4 [RTR:248] Temple Garden
+3 [AVR:129] Bonfire of the Damned
+3 [AVR:169] Borderland Ranger
+4 [DKA:140] Huntmaster of the Fells
+2 [UNH:136] Plains
+SB: 1 [M13:174] Garruk, Primal Hunter
+SB: 1 [DKA:17] Ray of Revelation
+SB: 2 [RTR:178] Loxodon Smiter
+SB: 1 [AVR:129] Bonfire of the Damned
+SB: 1 [AVR:210] Sigarda, Host of Herons
+SB: 2 [AVR:166] Zealous Conscripts
+SB: 2 [M13:22] Oblivion Ring
+SB: 3 [RTR:18] Rest in Peace
+SB: 2 [AVR:198] Triumph of Ferocity
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Orzhov Control TDtB ST Aug 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Orzhov Control TDtB ST Aug 2014.mwDeck.dck
new file mode 100644
index 0000000000..358bddefad
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Orzhov Control TDtB ST Aug 2014.mwDeck.dck
@@ -0,0 +1,28 @@
+3 [RTR:83] Underworld Connections
+1 [THS:110] Whip of Erebos
+4 [RTR:73] Pack Rat
+3 [RTR:63] Desecration Demon
+2 [JOU:5] Banishing Light
+4 [THS:227] Temple of Silence
+4 [THS:107] Thoughtseize
+4 [M15:241] Caves of Koilos
+3 [BNG:61] Bile Blight
+3 [GTC:182] Obzedat, Ghost Council
+1 [M15:248] Urborg, Tomb of Yawgmoth
+2 [THS:90] Hero's Downfall
+4 [M14:228] Mutavault
+4 [GTC:222] Nightveil Specter
+3 [GTC:63] Devour Flesh
+4 [GTC:242] Godless Shrine
+2 [THS:9] Elspeth, Sun's Champion
+2 [BNG:163] Temple of Enlightenment
+7 [UNH:138] Swamp
+SB: 1 [RTR:83] Underworld Connections
+SB: 1 [THS:110] Whip of Erebos
+SB: 2 [M14:5] Archangel of Thune
+SB: 1 [JOU:5] Banishing Light
+SB: 2 [M14:96] Doom Blade
+SB: 3 [M14:97] Duress
+SB: 2 [BNG:65] Drown in Sorrow
+SB: 1 [THS:85] Erebos, God of the Dead
+SB: 2 [THS:22] Last Breath
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Orzhov Control TDtB ST Feb 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Orzhov Control TDtB ST Feb 2014.mwDeck.dck
new file mode 100644
index 0000000000..a0e8ad57ef
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Orzhov Control TDtB ST Feb 2014.mwDeck.dck
@@ -0,0 +1,24 @@
+1 [RTR:82] Ultimate Price
+3 [RTR:83] Underworld Connections
+1 [THS:110] Whip of Erebos
+4 [RTR:73] Pack Rat
+4 [RTR:63] Desecration Demon
+4 [THS:227] Temple of Silence
+4 [THS:107] Thoughtseize
+3 [C13:312] Orzhov Guildgate
+3 [BNG:61] Bile Blight
+2 [GTC:182] Obzedat, Ghost Council
+4 [DGM:57] Blood Baron of Vizkopa
+4 [THS:90] Hero's Downfall
+4 [M14:228] Mutavault
+3 [GTC:63] Devour Flesh
+1 [UNH:136] Plains
+4 [GTC:242] Godless Shrine
+2 [THS:9] Elspeth, Sun's Champion
+9 [UNH:138] Swamp
+SB: 3 [M14:101] Lifebane Zombie
+SB: 4 [M14:96] Doom Blade
+SB: 4 [M14:97] Duress
+SB: 2 [THS:83] Dark Betrayal
+SB: 1 [THS:85] Erebos, God of the Dead
+SB: 1 [GTC:177] Merciless Eviction
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Orzhov Control TDtB ST Jan 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Orzhov Control TDtB ST Jan 2014.mwDeck.dck
new file mode 100644
index 0000000000..4d4baeef4e
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Orzhov Control TDtB ST Jan 2014.mwDeck.dck
@@ -0,0 +1,27 @@
+2 [RTR:82] Ultimate Price
+3 [RTR:83] Underworld Connections
+3 [RTR:73] Pack Rat
+4 [RTR:63] Desecration Demon
+2 [RTR:241] Hallowed Fountain
+4 [THS:227] Temple of Silence
+4 [THS:107] Thoughtseize
+2 [C13:312] Orzhov Guildgate
+4 [DGM:57] Blood Baron of Vizkopa
+1 [M14:215] Ratchet Bomb
+4 [THS:90] Hero's Downfall
+4 [M14:228] Mutavault
+3 [GTC:222] Nightveil Specter
+2 [GTC:63] Devour Flesh
+4 [GTC:242] Godless Shrine
+2 [THS:9] Elspeth, Sun's Champion
+2 [THS:22] Last Breath
+10 [UNH:138] Swamp
+SB: 2 [M14:101] Lifebane Zombie
+SB: 1 [THS:15] Glare of Heresy
+SB: 3 [GTC:182] Obzedat, Ghost Council
+SB: 1 [M14:215] Ratchet Bomb
+SB: 2 [M14:96] Doom Blade
+SB: 2 [M14:97] Duress
+SB: 2 [THS:83] Dark Betrayal
+SB: 1 [THS:22] Last Breath
+SB: 1 [DGM:103] Sin Collector
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Orzhov Control TDtB ST Jul 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Orzhov Control TDtB ST Jul 2014.mwDeck.dck
new file mode 100644
index 0000000000..7b645864cf
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Orzhov Control TDtB ST Jul 2014.mwDeck.dck
@@ -0,0 +1,30 @@
+2 [RTR:82] Ultimate Price
+3 [RTR:83] Underworld Connections
+1 [THS:110] Whip of Erebos
+4 [RTR:73] Pack Rat
+4 [RTR:63] Desecration Demon
+2 [JOU:5] Banishing Light
+4 [THS:227] Temple of Silence
+4 [THS:107] Thoughtseize
+4 [M15:241] Caves of Koilos
+1 [BNG:61] Bile Blight
+4 [M14:101] Lifebane Zombie
+2 [GTC:182] Obzedat, Ghost Council
+1 [M15:248] Urborg, Tomb of Yawgmoth
+2 [THS:90] Hero's Downfall
+4 [M14:228] Mutavault
+3 [GTC:63] Devour Flesh
+1 [UNH:136] Plains
+4 [GTC:242] Godless Shrine
+2 [THS:9] Elspeth, Sun's Champion
+8 [UNH:138] Swamp
+SB: 1 [RTR:83] Underworld Connections
+SB: 2 [DGM:57] Blood Baron of Vizkopa
+SB: 1 [THS:110] Whip of Erebos
+SB: 1 [JOU:7] Deicide
+SB: 2 [THS:100] Pharika's Cure
+SB: 1 [M14:96] Doom Blade
+SB: 2 [M14:97] Duress
+SB: 2 [BNG:65] Drown in Sorrow
+SB: 1 [THS:85] Erebos, God of the Dead
+SB: 2 [DGM:103] Sin Collector
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Orzhov Control TDtB ST Mar 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Orzhov Control TDtB ST Mar 2014.mwDeck.dck
new file mode 100644
index 0000000000..c4cff552ac
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Orzhov Control TDtB ST Mar 2014.mwDeck.dck
@@ -0,0 +1,27 @@
+3 [RTR:82] Ultimate Price
+3 [RTR:83] Underworld Connections
+2 [BNG:5] Brimaz, King of Oreskos
+1 [THS:110] Whip of Erebos
+2 [RTR:63] Desecration Demon
+4 [THS:227] Temple of Silence
+4 [THS:107] Thoughtseize
+4 [C13:312] Orzhov Guildgate
+3 [BNG:61] Bile Blight
+4 [M14:101] Lifebane Zombie
+3 [DGM:57] Blood Baron of Vizkopa
+3 [GTC:182] Obzedat, Ghost Council
+4 [THS:90] Hero's Downfall
+2 [M14:228] Mutavault
+1 [GTC:63] Devour Flesh
+4 [GTC:242] Godless Shrine
+4 [UNH:136] Plains
+2 [THS:9] Elspeth, Sun's Champion
+7 [UNH:138] Swamp
+SB: 1 [RTR:83] Underworld Connections
+SB: 1 [RTR:231] Pithing Needle
+SB: 2 [BNG:25] Revoke Existence
+SB: 3 [M14:96] Doom Blade
+SB: 4 [M14:97] Duress
+SB: 1 [GTC:63] Devour Flesh
+SB: 1 [THS:9] Elspeth, Sun's Champion
+SB: 2 [THS:85] Erebos, God of the Dead
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Orzhov Control TDtB ST May 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Orzhov Control TDtB ST May 2014.mwDeck.dck
new file mode 100644
index 0000000000..7288955c4f
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Orzhov Control TDtB ST May 2014.mwDeck.dck
@@ -0,0 +1,25 @@
+1 [RTR:82] Ultimate Price
+3 [RTR:83] Underworld Connections
+4 [RTR:73] Pack Rat
+3 [RTR:63] Desecration Demon
+4 [THS:227] Temple of Silence
+4 [THS:107] Thoughtseize
+2 [C13:312] Orzhov Guildgate
+4 [BNG:61] Bile Blight
+2 [GTC:182] Obzedat, Ghost Council
+3 [DGM:57] Blood Baron of Vizkopa
+4 [THS:90] Hero's Downfall
+4 [M14:228] Mutavault
+1 [M14:97] Duress
+3 [GTC:63] Devour Flesh
+1 [UNH:136] Plains
+4 [GTC:242] Godless Shrine
+2 [THS:9] Elspeth, Sun's Champion
+11 [UNH:138] Swamp
+SB: 1 [RTR:82] Ultimate Price
+SB: 2 [BNG:25] Revoke Existence
+SB: 2 [M14:96] Doom Blade
+SB: 3 [M14:97] Duress
+SB: 3 [THS:83] Dark Betrayal
+SB: 2 [BNG:65] Drown in Sorrow
+SB: 2 [DGM:103] Sin Collector
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Orzhov Midrange TDtB ST Jan 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Orzhov Midrange TDtB ST Jan 2014.mwDeck.dck
new file mode 100644
index 0000000000..73111d297d
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Orzhov Midrange TDtB ST Jan 2014.mwDeck.dck
@@ -0,0 +1,26 @@
+2 [RTR:82] Ultimate Price
+4 [THS:225] Temple of Deceit
+4 [M14:22] Imposing Sovereign
+2 [THS:110] Whip of Erebos
+4 [GTC:249] Watery Grave
+2 [THS:188] Ashiok, Nightmare Weaver
+2 [RTR:63] Desecration Demon
+4 [RTR:241] Hallowed Fountain
+4 [THS:227] Temple of Silence
+4 [RTR:179] Lyev Skyknight
+2 [RTR:201] Supreme Verdict
+4 [M14:123] Xathrid Necromancer
+4 [RTR:155] Detention Sphere
+3 [GTC:182] Obzedat, Ghost Council
+2 [M14:228] Mutavault
+2 [DGM:127] Far // Away
+3 [UNH:136] Plains
+4 [GTC:242] Godless Shrine
+4 [THS:32] Soldier of the Pantheon
+SB: 1 [DGM:130] Profit // Loss
+SB: 2 [THS:15] Glare of Heresy
+SB: 3 [DGM:57] Blood Baron of Vizkopa
+SB: 3 [M14:96] Doom Blade
+SB: 1 [DGM:127] Far // Away
+SB: 3 [THS:83] Dark Betrayal
+SB: 2 [DGM:103] Sin Collector
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Orzhov Midrange TDtB ST Oct 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Orzhov Midrange TDtB ST Oct 2013.mwDeck.dck
new file mode 100644
index 0000000000..0fc9e808bb
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Orzhov Midrange TDtB ST Oct 2013.mwDeck.dck
@@ -0,0 +1,29 @@
+1 [THS:110] Whip of Erebos
+4 [RTR:63] Desecration Demon
+4 [THS:227] Temple of Silence
+4 [THS:107] Thoughtseize
+4 [C13:312] Orzhov Guildgate
+3 [C14:158] Read the Bones
+1 [DGM:57] Blood Baron of Vizkopa
+3 [GTC:182] Obzedat, Ghost Council
+4 [THS:90] Hero's Downfall
+1 [M14:228] Mutavault
+3 [M14:96] Doom Blade
+4 [RTR:17] Precinct Captain
+4 [GTC:242] Godless Shrine
+7 [UNH:136] Plains
+1 [THS:9] Elspeth, Sun's Champion
+6 [UNH:138] Swamp
+2 [DGM:103] Sin Collector
+4 [THS:32] Soldier of the Pantheon
+SB: 1 [RTR:83] Underworld Connections
+SB: 2 [M14:101] Lifebane Zombie
+SB: 1 [DGM:57] Blood Baron of Vizkopa
+SB: 3 [M14:18] Fiendslayer Paladin
+SB: 1 [RTR:231] Pithing Needle
+SB: 1 [THS:100] Pharika's Cure
+SB: 1 [M14:96] Doom Blade
+SB: 1 [GTC:63] Devour Flesh
+SB: 1 [THS:9] Elspeth, Sun's Champion
+SB: 1 [THS:22] Last Breath
+SB: 2 [DGM:103] Sin Collector
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Patriot Midrange TDtB ST May 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Patriot Midrange TDtB ST May 2013.mwDeck.dck
new file mode 100644
index 0000000000..1462661435
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Patriot Midrange TDtB ST May 2013.mwDeck.dck
@@ -0,0 +1,32 @@
+3 [AVR:32] Restoration Angel
+2 [C13:30] Augur of Bolas
+3 [GTC:215] Boros Reckoner
+4 [M13:225] Glacial Fortress
+2 [M13:147] Searing Spear
+4 [RTR:241] Hallowed Fountain
+2 [RTR:172] Izzet Charm
+3 [ISD:78] Snapcaster Mage
+2 [RTR:201] Supreme Verdict
+2 [RTR:145] Azorius Charm
+3 [RTR:200] Sphinx's Revelation
+2 [RTR:101] Mizzium Mortars
+2 [AVR:227] Desolate Lighthouse
+4 [RTR:247] Steam Vents
+2 [M15:51] Dissipate
+4 [GTC:245] Sacred Foundry
+2 [DGM:94] Ral Zarek
+2 [GTC:143] Aurelia, the Warleader
+3 [DGM:134] Turn // Burn
+3 [ISD:238] Clifftop Retreat
+2 [ISD:83] Think Twice
+4 [ISD:248] Sulfur Falls
+SB: 1 [RTR:201] Supreme Verdict
+SB: 1 [AVR:149] Pillar of Flame
+SB: 3 [M14:47] Clone
+SB: 1 [RTR:1] Angel of Serenity
+SB: 1 [M15:51] Dissipate
+SB: 1 [RTR:153] Counterflux
+SB: 1 [M14:60] Jace, Memory Adept
+SB: 3 [RTR:173] Izzet Staticaster
+SB: 2 [M15:71] Negate
+SB: 1 [GTC:142] Assemble the Legion
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Prime Speaker Bant TDtB ST May 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Prime Speaker Bant TDtB ST May 2013.mwDeck.dck
new file mode 100644
index 0000000000..5deeb90149
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Prime Speaker Bant TDtB ST May 2013.mwDeck.dck
@@ -0,0 +1,32 @@
+3 [AVR:32] Restoration Angel
+4 [M13:229] Sunpetal Grove
+2 [RTR:1] Angel of Serenity
+4 [M13:225] Glacial Fortress
+2 [RTR:241] Hallowed Fountain
+2 [RTR:201] Supreme Verdict
+4 [RTR:178] Loxodon Smiter
+2 [GTC:195] Simic Charm
+3 [RTR:200] Sphinx's Revelation
+2 [RTR:155] Detention Sphere
+3 [C13:211] Selesnya Charm
+3 [M13:193] Thragtusk
+1 [ISD:243] Kessig Wolf Run
+4 [M13:170] Farseek
+2 [AVR:226] Cavern of Souls
+4 [RTR:248] Temple Garden
+3 [ISD:241] Hinterland Harbor
+1 [GTC:247] Stomping Ground
+2 [DGM:92] Progenitor Mimic
+2 [GTC:188] Prime Speaker Zegana
+3 [DGM:91] Plasm Capture
+4 [GTC:240] Breeding Pool
+SB: 1 [RTR:201] Supreme Verdict
+SB: 1 [C13:211] Selesnya Charm
+SB: 2 [M13:29] Rhox Faithmender
+SB: 1 [DGM:11] AEtherling
+SB: 2 [RTR:148] Centaur Healer
+SB: 2 [M15:51] Dissipate
+SB: 1 [M13:22] Oblivion Ring
+SB: 1 [DGM:92] Progenitor Mimic
+SB: 2 [RTR:18] Rest in Peace
+SB: 2 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Quest WW TDtB ST Dec 2010.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Quest WW TDtB ST Dec 2010.mwDeck.dck
new file mode 100644
index 0000000000..16beda9588
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Quest WW TDtB ST Dec 2010.mwDeck.dck
@@ -0,0 +1,18 @@
+4 [SOM:174] Memnite
+3 [ROE:47] Student of Warfare
+3 [SOM:10] Glint Hawk
+2 [C14:228] Argentum Armor
+2 [C14:313] Tectonic Edge
+4 [ZEN:23] Kor Skyfisher
+4 [M15:223] Ornithopter
+4 [ZEN:21] Kor Outfitter
+2 [SOM:208] Sword of Body and Mind
+4 [ZEN:33] Quest for the Holy Relic
+4 [M11:33] Squadron Hawk
+4 [WWK:20] Stoneforge Mystic
+19 [UNH:136] Plains
+1 [SOM:156] Glint Hawk Idol
+SB: 4 [CMD:17] Journey to Nowhere
+SB: 4 [ZEN:10] Devout Lightcaster
+SB: 3 [M11:39] White Knight
+SB: 4 [WWK:11] Kor Firewalker
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/RUG Control TDtB ST Apr 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/RUG Control TDtB ST Apr 2011.mwDeck.dck
new file mode 100644
index 0000000000..00af42f109
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/RUG Control TDtB ST Apr 2011.mwDeck.dck
@@ -0,0 +1,25 @@
+4 [WWK:141] Raging Ravine
+3 [SOM:194] Precursor Golem
+3 [UNH:140] Forest
+4 [M11:149] Lightning Bolt
+2 [WWK:137] Halimar Depths
+4 [ZEN:220] Misty Rainforest
+1 [ZEN:172] Oracle of Mul Daya
+2 [UNH:139] Mountain
+4 [C13:114] Inferno Titan
+1 [C13:135] Avenger of Zendikar
+4 [M11:70] Preordain
+4 [ZEN:223] Scalding Tarn
+4 [ZEN:168] Lotus Cobra
+4 [WWK:99] Explore
+3 [SOM:225] Copperline Gorge
+4 [WWK:31] Jace, the Mind Sculptor
+5 [UNH:137] Island
+4 [M12:63] Mana Leak
+SB: 2 [C13:134] Acidic Slime
+SB: 1 [ZEN:119] Burst Lightning
+SB: 1 [ROE:59] Deprive
+SB: 2 [SOM:218] Tumble Magnet
+SB: 3 [M11:188] Obstinate Baloth
+SB: 3 [M11:154] Pyroclasm
+SB: 3 [M12:52] Flashfreeze
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/RUG Control TDtB ST Dec 2010.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/RUG Control TDtB ST Dec 2010.mwDeck.dck
new file mode 100644
index 0000000000..c2200a0c97
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/RUG Control TDtB ST Dec 2010.mwDeck.dck
@@ -0,0 +1,24 @@
+4 [WWK:141] Raging Ravine
+3 [UNH:140] Forest
+4 [M11:149] Lightning Bolt
+2 [WWK:137] Halimar Depths
+4 [ZEN:220] Misty Rainforest
+3 [ZEN:172] Oracle of Mul Daya
+2 [UNH:139] Mountain
+4 [M11:70] Preordain
+3 [C14:112] Frost Titan
+4 [ZEN:223] Scalding Tarn
+4 [ZEN:168] Lotus Cobra
+3 [ZEN:127] Goblin Ruinblaster
+4 [WWK:99] Explore
+3 [SOM:225] Copperline Gorge
+4 [WWK:31] Jace, the Mind Sculptor
+5 [UNH:137] Island
+4 [M12:63] Mana Leak
+SB: 3 [ZEN:67] Spell Pierce
+SB: 1 [M14:215] Ratchet Bomb
+SB: 1 [ZEN:127] Goblin Ruinblaster
+SB: 1 [SOM:53] Volition Reins
+SB: 3 [M11:188] Obstinate Baloth
+SB: 4 [M11:154] Pyroclasm
+SB: 2 [M12:52] Flashfreeze
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/RUG Control TDtB ST Feb 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/RUG Control TDtB ST Feb 2011.mwDeck.dck
new file mode 100644
index 0000000000..c73eb8ad10
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/RUG Control TDtB ST Feb 2011.mwDeck.dck
@@ -0,0 +1,23 @@
+4 [WWK:141] Raging Ravine
+3 [SOM:194] Precursor Golem
+3 [UNH:140] Forest
+4 [M11:149] Lightning Bolt
+1 [WWK:137] Halimar Depths
+3 [CMD:157] Garruk Wildspeaker
+4 [ZEN:220] Misty Rainforest
+2 [UNH:139] Mountain
+3 [C13:114] Inferno Titan
+4 [M11:70] Preordain
+4 [ZEN:223] Scalding Tarn
+4 [ZEN:168] Lotus Cobra
+4 [WWK:99] Explore
+4 [SOM:225] Copperline Gorge
+4 [WWK:31] Jace, the Mind Sculptor
+5 [UNH:137] Island
+4 [M12:63] Mana Leak
+SB: 2 [ZEN:67] Spell Pierce
+SB: 3 [M14:215] Ratchet Bomb
+SB: 1 [M11:188] Obstinate Baloth
+SB: 2 [MBS:92] Thrun, the Last Troll
+SB: 4 [M11:154] Pyroclasm
+SB: 3 [M12:52] Flashfreeze
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/RUG Control TDtB ST Mar 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/RUG Control TDtB ST Mar 2011.mwDeck.dck
new file mode 100644
index 0000000000..b502812495
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/RUG Control TDtB ST Mar 2011.mwDeck.dck
@@ -0,0 +1,23 @@
+4 [WWK:141] Raging Ravine
+3 [UNH:140] Forest
+4 [M11:149] Lightning Bolt
+2 [WWK:137] Halimar Depths
+4 [ZEN:220] Misty Rainforest
+2 [UNH:139] Mountain
+4 [C13:114] Inferno Titan
+3 [C13:134] Acidic Slime
+4 [M11:70] Preordain
+2 [C14:112] Frost Titan
+4 [ZEN:223] Scalding Tarn
+4 [ZEN:168] Lotus Cobra
+4 [WWK:99] Explore
+3 [SOM:225] Copperline Gorge
+4 [WWK:31] Jace, the Mind Sculptor
+5 [UNH:137] Island
+4 [M12:63] Mana Leak
+SB: 2 [C13:156] Mold Shambler
+SB: 1 [WWK:84] Kazuul, Tyrant of the Cliffs
+SB: 2 [M14:215] Ratchet Bomb
+SB: 3 [M11:188] Obstinate Baloth
+SB: 4 [M11:154] Pyroclasm
+SB: 3 [M12:52] Flashfreeze
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/RUG Control TDtB ST Oct 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/RUG Control TDtB ST Oct 2011.mwDeck.dck
new file mode 100644
index 0000000000..43d5edf904
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/RUG Control TDtB ST Oct 2011.mwDeck.dck
@@ -0,0 +1,28 @@
+2 [MBS:21] Consecrated Sphinx
+2 [NPH:161] Sword of War and Peace
+4 [M13:228] Rootbound Crag
+5 [UNH:140] Forest
+4 [MBS:95] Viridian Emissary
+3 [CNS:138] Brimstone Volley
+1 [NPH:130] Batterskull
+3 [MBS:92] Thrun, the Last Troll
+2 [ISD:78] Snapcaster Mage
+4 [M12:195] Skinshifter
+2 [M13:174] Garruk, Primal Hunter
+2 [ISD:181] Garruk Relentless
+3 [ISD:144] Geistflame
+4 [ISD:241] Hinterland Harbor
+1 [C14:283] Wurmcoil Engine
+4 [SOM:225] Copperline Gorge
+1 [SOM:81] Arc Trail
+6 [UNH:137] Island
+2 [ISD:248] Sulfur Falls
+1 [M15:71] Negate
+4 [M12:63] Mana Leak
+SB: 3 [ISD:193] Mayor of Avabruck
+SB: 2 [MBS:138] Sword of Feast and Famine
+SB: 2 [M15:51] Dissipate
+SB: 2 [SOM:81] Arc Trail
+SB: 3 [ISD:207] Tree of Redemption
+SB: 2 [M15:71] Negate
+SB: 1 [ISD:127] Ancient Grudge
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/RUG Twin Exarch TDtB ST May 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/RUG Twin Exarch TDtB ST May 2011.mwDeck.dck
new file mode 100644
index 0000000000..c6c39b7da5
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/RUG Twin Exarch TDtB ST May 2011.mwDeck.dck
@@ -0,0 +1,24 @@
+4 [WWK:141] Raging Ravine
+2 [M11:58] Jace Beleren
+2 [UNH:140] Forest
+3 [M11:149] Lightning Bolt
+3 [WWK:137] Halimar Depths
+4 [ZEN:220] Misty Rainforest
+1 [ZEN:172] Oracle of Mul Daya
+4 [C13:37] Deceiver Exarch
+3 [ROE:165] Splinter Twin
+2 [UNH:139] Mountain
+4 [C13:114] Inferno Titan
+4 [M11:70] Preordain
+4 [ZEN:223] Scalding Tarn
+4 [ZEN:168] Lotus Cobra
+2 [WWK:99] Explore
+4 [SOM:225] Copperline Gorge
+4 [WWK:31] Jace, the Mind Sculptor
+4 [UNH:137] Island
+2 [M12:63] Mana Leak
+SB: 2 [ZEN:67] Spell Pierce
+SB: 3 [CNS:171] Nature's Claim
+SB: 2 [M11:188] Obstinate Baloth
+SB: 4 [M11:154] Pyroclasm
+SB: 4 [M12:52] Flashfreeze
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/RUG Twin Pod TDtB ST Aug 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/RUG Twin Pod TDtB ST Aug 2011.mwDeck.dck
new file mode 100644
index 0000000000..1245022a6b
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/RUG Twin Pod TDtB ST Aug 2011.mwDeck.dck
@@ -0,0 +1,33 @@
+2 [WWK:141] Raging Ravine
+3 [UNH:140] Forest
+4 [ZEN:220] Misty Rainforest
+1 [M11:188] Obstinate Baloth
+1 [NPH:159] Spellskite
+4 [M12:165] Birds of Paradise
+4 [NPH:104] Birthing Pod
+4 [C13:37] Deceiver Exarch
+4 [ROE:165] Splinter Twin
+3 [UNH:139] Mountain
+1 [C13:134] Acidic Slime
+1 [C14:124] Sea Gate Oracle
+4 [M11:70] Preordain
+1 [C14:112] Frost Titan
+4 [ZEN:223] Scalding Tarn
+1 [NPH:42] Phyrexian Metamorph
+4 [ZEN:168] Lotus Cobra
+1 [NPH:98] Urabrask the Hidden
+1 [NPH:57] Dismember
+1 [C14:271] Solemn Simulacrum
+4 [SOM:225] Copperline Gorge
+1 [M12:72] Phantasmal Image
+4 [UNH:137] Island
+2 [M12:73] Ponder
+SB: 1 [ZEN:67] Spell Pierce
+SB: 4 [CNS:171] Nature's Claim
+SB: 1 [C14:283] Wurmcoil Engine
+SB: 1 [RTR:36] Dispel
+SB: 2 [M12:145] Grim Lavamancer
+SB: 2 [SOM:81] Arc Trail
+SB: 2 [NPH:159] Spellskite
+SB: 1 [M15:71] Negate
+SB: 1 [SOM:210] Sylvok Replica
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/RUG Twin Pod TDtB ST Jul 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/RUG Twin Pod TDtB ST Jul 2011.mwDeck.dck
new file mode 100644
index 0000000000..86ea5652e4
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/RUG Twin Pod TDtB ST Jul 2011.mwDeck.dck
@@ -0,0 +1,32 @@
+3 [WWK:141] Raging Ravine
+2 [UNH:140] Forest
+1 [WWK:137] Halimar Depths
+4 [ZEN:220] Misty Rainforest
+4 [ROE:203] Overgrown Battlement
+2 [NPH:159] Spellskite
+4 [M12:165] Birds of Paradise
+3 [NPH:104] Birthing Pod
+4 [C13:37] Deceiver Exarch
+4 [ROE:165] Splinter Twin
+2 [UNH:139] Mountain
+1 [C13:134] Acidic Slime
+3 [M11:70] Preordain
+2 [C14:112] Frost Titan
+4 [ZEN:223] Scalding Tarn
+1 [NPH:98] Urabrask the Hidden
+1 [C14:183] Tuktuk the Explorer
+2 [C14:271] Solemn Simulacrum
+4 [SOM:225] Copperline Gorge
+1 [M12:72] Phantasmal Image
+4 [UNH:137] Island
+3 [M12:73] Ponder
+1 [SOM:177] Molten-Tail Masticore
+SB: 2 [CNS:171] Nature's Claim
+SB: 1 [C14:283] Wurmcoil Engine
+SB: 1 [M11:188] Obstinate Baloth
+SB: 1 [MBS:92] Thrun, the Last Troll
+SB: 1 [NPH:159] Spellskite
+SB: 4 [M11:154] Pyroclasm
+SB: 1 [SOM:101] Oxidda Scrapmelter
+SB: 3 [M12:63] Mana Leak
+SB: 1 [SOM:210] Sylvok Replica
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Rakdos Aggro TDtB ST Dec 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Rakdos Aggro TDtB ST Dec 2012.mwDeck.dck
new file mode 100644
index 0000000000..1ad7926e47
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Rakdos Aggro TDtB ST Dec 2012.mwDeck.dck
@@ -0,0 +1,22 @@
+4 [RTR:86] Ash Zealot
+4 [M13:147] Searing Spear
+4 [M13:222] Dragonskull Summit
+10 [UNH:139] Mountain
+3 [RTR:167] Hellhole Flailer
+2 [M13:150] Thundermaw Hellkite
+4 [RTR:220] Rakdos Cackler
+4 [RTR:238] Blood Crypt
+4 [DKA:138] Falkenrath Aristocrat
+4 [AVR:226] Cavern of Souls
+3 [DKA:93] Hellrider
+4 [AVR:149] Pillar of Flame
+4 [ISD:164] Stromkirk Noble
+4 [M13:96] Knight of Infamy
+2 [UNH:138] Swamp
+SB: 2 [RTR:82] Ultimate Price
+SB: 4 [C13:97] Vampire Nighthawk
+SB: 2 [AVR:84] Appetite for Brains
+SB: 2 [M14:139] Flames of the Firebrand
+SB: 2 [AVR:166] Zealous Conscripts
+SB: 1 [RTR:197] Slaughter Games
+SB: 2 [RTR:59] Cremate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Rakdos Aggro TDtB ST Jan 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Rakdos Aggro TDtB ST Jan 2013.mwDeck.dck
new file mode 100644
index 0000000000..d0444e8b35
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Rakdos Aggro TDtB ST Jan 2013.mwDeck.dck
@@ -0,0 +1,26 @@
+2 [RTR:82] Ultimate Price
+2 [C13:97] Vampire Nighthawk
+4 [AVR:86] Blood Artist
+2 [M13:147] Searing Spear
+4 [M13:222] Dragonskull Summit
+3 [C13:314] Rakdos Guildgate
+4 [ISD:97] Diregraf Ghoul
+2 [C14:167] Tragic Slip
+4 [RTR:238] Blood Crypt
+4 [DKA:138] Falkenrath Aristocrat
+3 [AVR:226] Cavern of Souls
+4 [DKA:93] Hellrider
+4 [DKA:63] Geralf's Messenger
+1 [AVR:129] Bonfire of the Damned
+1 [AVR:166] Zealous Conscripts
+4 [M13:96] Knight of Infamy
+4 [DKA:64] Gravecrawler
+8 [UNH:138] Swamp
+SB: 2 [M13:141] Mark of Mutiny
+SB: 2 [RTR:101] Mizzium Mortars
+SB: 2 [AVR:84] Appetite for Brains
+SB: 3 [AVR:149] Pillar of Flame
+SB: 1 [M14:139] Flames of the Firebrand
+SB: 1 [AVR:129] Bonfire of the Damned
+SB: 2 [RTR:197] Slaughter Games
+SB: 2 [RTR:184] Rakdos Charm
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Rakdos Aggro TDtB ST Nov 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Rakdos Aggro TDtB ST Nov 2012.mwDeck.dck
new file mode 100644
index 0000000000..fb48c9a3ab
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Rakdos Aggro TDtB ST Nov 2012.mwDeck.dck
@@ -0,0 +1,24 @@
+2 [CNS:138] Brimstone Volley
+4 [M13:147] Searing Spear
+4 [M13:222] Dragonskull Summit
+4 [C13:314] Rakdos Guildgate
+1 [UNH:139] Mountain
+3 [M13:150] Thundermaw Hellkite
+4 [ISD:97] Diregraf Ghoul
+4 [RTR:238] Blood Crypt
+4 [DKA:138] Falkenrath Aristocrat
+4 [AVR:226] Cavern of Souls
+3 [DKA:93] Hellrider
+4 [DKA:63] Geralf's Messenger
+4 [M13:96] Knight of Infamy
+4 [DKA:64] Gravecrawler
+2 [C14:161] Sign in Blood
+2 [ISD:124] Victim of Night
+7 [UNH:138] Swamp
+SB: 2 [RTR:83] Underworld Connections
+SB: 2 [AVR:84] Appetite for Brains
+SB: 3 [AVR:149] Pillar of Flame
+SB: 3 [AVR:129] Bonfire of the Damned
+SB: 2 [AVR:166] Zealous Conscripts
+SB: 1 [ISD:124] Victim of Night
+SB: 2 [RTR:59] Cremate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Reanimator TDtB ST Dec 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Reanimator TDtB ST Dec 2012.mwDeck.dck
new file mode 100644
index 0000000000..dec79db42c
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Reanimator TDtB ST Dec 2012.mwDeck.dck
@@ -0,0 +1,25 @@
+2 [AVR:32] Restoration Angel
+2 [AVR:172] Craterhoof Behemoth
+3 [M13:229] Sunpetal Grove
+4 [UNH:140] Forest
+4 [RTR:1] Angel of Serenity
+4 [RTR:243] Overgrown Tomb
+4 [M13:160] Arbor Elf
+4 [ISD:170] Avacyn's Pilgrim
+4 [M13:193] Thragtusk
+4 [RTR:165] Grisly Salvage
+4 [ISD:122] Unburial Rites
+2 [AVR:226] Cavern of Souls
+3 [ISD:242] Isolated Chapel
+4 [RTR:248] Temple Garden
+4 [RTR:148] Centaur Healer
+4 [ISD:196] Mulch
+1 [ISD:239] Gavony Township
+3 [ISD:249] Woodland Cemetery
+SB: 2 [M13:174] Garruk, Primal Hunter
+SB: 3 [AVR:194] Somberwald Sage
+SB: 2 [AVR:226] Cavern of Souls
+SB: 3 [RTR:213] Deathrite Shaman
+SB: 2 [ISD:115] Sever the Bloodline
+SB: 1 [M13:22] Oblivion Ring
+SB: 2 [RTR:141] Abrupt Decay
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Reanimator TDtB ST Jan 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Reanimator TDtB ST Jan 2013.mwDeck.dck
new file mode 100644
index 0000000000..8ed9a1640f
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Reanimator TDtB ST Jan 2013.mwDeck.dck
@@ -0,0 +1,28 @@
+3 [AVR:32] Restoration Angel
+2 [AVR:172] Craterhoof Behemoth
+3 [M13:229] Sunpetal Grove
+1 [UNH:140] Forest
+4 [RTR:1] Angel of Serenity
+4 [RTR:243] Overgrown Tomb
+2 [M13:160] Arbor Elf
+4 [ISD:170] Avacyn's Pilgrim
+4 [M13:193] Thragtusk
+4 [RTR:165] Grisly Salvage
+4 [ISD:122] Unburial Rites
+3 [AVR:226] Cavern of Souls
+3 [ISD:242] Isolated Chapel
+4 [RTR:248] Temple Garden
+3 [RTR:148] Centaur Healer
+4 [ISD:196] Mulch
+3 [DKA:12] Lingering Souls
+2 [ISD:239] Gavony Township
+3 [ISD:249] Woodland Cemetery
+SB: 1 [DKA:17] Ray of Revelation
+SB: 3 [RTR:178] Loxodon Smiter
+SB: 1 [M13:29] Rhox Faithmender
+SB: 1 [AVR:226] Cavern of Souls
+SB: 2 [RTR:213] Deathrite Shaman
+SB: 2 [ISD:115] Sever the Bloodline
+SB: 2 [M14:97] Duress
+SB: 2 [M13:22] Oblivion Ring
+SB: 1 [RTR:141] Abrupt Decay
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Apr 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Apr 2014.mwDeck.dck
new file mode 100644
index 0000000000..7a56d373d4
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Apr 2014.mwDeck.dck
@@ -0,0 +1,19 @@
+4 [GTC:90] Firefist Striker
+4 [GTC:216] Burning-Tree Emissary
+4 [THS:122] Firedrinker Satyr
+4 [RTR:96] Gore-House Chainwalker
+4 [M15:141] Foundry Street Denizen
+18 [UNH:139] Mountain
+4 [DGM:38] Rubblebelt Maaka
+2 [M14:155] Shock
+2 [RTR:101] Mizzium Mortars
+4 [M14:134] Chandra's Phoenix
+4 [RTR:220] Rakdos Cackler
+4 [M14:228] Mutavault
+2 [BNG:111] Searing Blood
+SB: 2 [THS:124] Hammer of Purphoros
+SB: 3 [THS:132] Peak Eruption
+SB: 4 [GTC:106] Skullcrack
+SB: 3 [GTC:215] Boros Reckoner
+SB: 2 [BNG:111] Searing Blood
+SB: 1 [M14:130] Burning Earth
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Aug 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Aug 2011.mwDeck.dck
new file mode 100644
index 0000000000..d82e7c3a33
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Aug 2011.mwDeck.dck
@@ -0,0 +1,24 @@
+1 [ROE:152] Kargan Dragonlord
+2 [MBS:66] Hero of Oxid Ridge
+1 [NPH:161] Sword of War and Peace
+4 [M11:149] Lightning Bolt
+4 [ZEN:211] Arid Mesa
+4 [M12:145] Grim Lavamancer
+4 [NPH:153] Shrine of Burning Rage
+2 [ZEN:141] Plated Geopede
+4 [ROE:166] Staggershock
+11 [UNH:139] Mountain
+4 [WWK:90] Searing Blaze
+4 [M14:134] Chandra's Phoenix
+2 [ZEN:119] Burst Lightning
+4 [ZEN:223] Scalding Tarn
+4 [ZEN:126] Goblin Guide
+4 [ZEN:226] Teetering Peaks
+1 [SOM:94] Koth of the Hammer
+SB: 3 [M12:151] Manic Vandal
+SB: 2 [M12:150] Manabarbs
+SB: 2 [M12:128] Combust
+SB: 3 [NPH:78] Act of Aggression
+SB: 2 [NPH:57] Dismember
+SB: 2 [SOM:81] Arc Trail
+SB: 1 [NPH:101] Vulshok Refugee
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Aug 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Aug 2014.mwDeck.dck
new file mode 100644
index 0000000000..4799f77ee0
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Aug 2014.mwDeck.dck
@@ -0,0 +1,23 @@
+3 [GTC:90] Firefist Striker
+2 [RTR:86] Ash Zealot
+4 [GTC:216] Burning-Tree Emissary
+4 [THS:122] Firedrinker Satyr
+1 [THS:145] Titan's Strength
+4 [M15:141] Foundry Street Denizen
+4 [M15:164] Stoke the Flames
+18 [UNH:139] Mountain
+3 [DGM:38] Rubblebelt Maaka
+3 [M15:155] Lightning Strike
+4 [M15:145] Goblin Rabblemaster
+4 [RTR:220] Rakdos Cackler
+3 [M14:228] Mutavault
+3 [GTC:97] Legion Loyalist
+SB: 1 [RTR:93] Electrickery
+SB: 2 [RTR:101] Mizzium Mortars
+SB: 2 [JOU:103] Magma Spray
+SB: 1 [RTR:92] Dynacharge
+SB: 1 [JOU:100] Harness by Force
+SB: 1 [THS:145] Titan's Strength
+SB: 2 [GTC:106] Skullcrack
+SB: 1 [BNG:111] Searing Blood
+SB: 4 [JOU:94] Eidolon of the Great Revel
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Dec 2010.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Dec 2010.mwDeck.dck
new file mode 100644
index 0000000000..4c0beb4045
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Dec 2010.mwDeck.dck
@@ -0,0 +1,20 @@
+4 [ROE:152] Kargan Dragonlord
+4 [M11:149] Lightning Bolt
+4 [ZEN:211] Arid Mesa
+4 [ROE:145] Flame Slash
+4 [ZEN:141] Plated Geopede
+13 [UNH:139] Mountain
+4 [ZEN:119] Burst Lightning
+4 [ZEN:223] Scalding Tarn
+4 [ZEN:126] Goblin Guide
+3 [ZEN:226] Teetering Peaks
+4 [SOM:94] Koth of the Hammer
+4 [SOM:104] Spikeshot Elder
+4 [SOM:177] Molten-Tail Masticore
+SB: 1 [M12:151] Manic Vandal
+SB: 3 [M13:141] Mark of Mutiny
+SB: 1 [KTK:120] Shatter
+SB: 3 [M12:128] Combust
+SB: 3 [M11:202] Brittle Effigy
+SB: 2 [SOM:105] Tunnel Ignus
+SB: 2 [M11:154] Pyroclasm
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Dec 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Dec 2011.mwDeck.dck
new file mode 100644
index 0000000000..ad9ea9eb4d
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Dec 2011.mwDeck.dck
@@ -0,0 +1,20 @@
+3 [M13:228] Rootbound Crag
+4 [M12:139] Goblin Fireslinger
+4 [NPH:100] Volt Charge
+2 [M12:146] Incinerate
+3 [M12:145] Grim Lavamancer
+4 [M12:156] Stormblood Berserker
+4 [NPH:153] Shrine of Burning Rage
+18 [UNH:139] Mountain
+4 [M14:134] Chandra's Phoenix
+4 [NPH:86] Gut Shot
+4 [ISD:164] Stromkirk Noble
+1 [SOM:104] Spikeshot Elder
+2 [SOM:81] Arc Trail
+3 [SOM:91] Galvanic Blast
+SB: 2 [MBS:66] Hero of Oxid Ridge
+SB: 2 [ISD:166] Traitorous Blood
+SB: 4 [NPH:57] Dismember
+SB: 1 [SOM:81] Arc Trail
+SB: 4 [NPH:101] Vulshok Refugee
+SB: 2 [ISD:127] Ancient Grudge
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Dec 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Dec 2013.mwDeck.dck
new file mode 100644
index 0000000000..1bdc832971
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Dec 2013.mwDeck.dck
@@ -0,0 +1,16 @@
+20 [UNH:139] Mountain
+4 [M15:155] Lightning Strike
+4 [M14:155] Shock
+4 [M14:134] Chandra's Phoenix
+4 [RTR:220] Rakdos Cackler
+4 [RTR:86] Ash Zealot
+4 [THS:121] Fanatic of Mogis
+4 [GTC:216] Burning-Tree Emissary
+4 [THS:122] Firedrinker Satyr
+4 [GTC:215] Boros Reckoner
+4 [THS:119] Dragon Mantle
+SB: 2 [RTR:101] Mizzium Mortars
+SB: 3 [THS:132] Peak Eruption
+SB: 3 [KTK:95] Act of Treason
+SB: 4 [GTC:106] Skullcrack
+SB: 3 [M14:130] Burning Earth
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Dec 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Dec 2014.mwDeck.dck
new file mode 100644
index 0000000000..1901d9eb8e
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Dec 2014.mwDeck.dck
@@ -0,0 +1,19 @@
+22 [UNH:139] Mountain
+4 [M15:155] Lightning Strike
+4 [M15:145] Goblin Rabblemaster
+4 [KTK:111] Hordeling Outburst
+4 [THS:145] Titan's Strength
+4 [KTK:118] Monastery Swiftspear
+2 [BNG:111] Searing Blood
+4 [KTK:125] Valley Dasher
+4 [THS:128] Magma Jet
+4 [M15:141] Foundry Street Denizen
+4 [M15:164] Stoke the Flames
+SB: 4 [M15:134] Chandra, Pyromaster
+SB: 1 [THS:224] Temple of Abandon
+SB: 1 [M15:147] Hammerhand
+SB: 1 [THS:143] Stormbreath Dragon
+SB: 2 [KTK:97] Arc Lightning
+SB: 3 [KTK:119] Sarkhan, the Dragonspeaker
+SB: 2 [BNG:111] Searing Blood
+SB: 1 [THS:228] Temple of Triumph
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Feb 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Feb 2011.mwDeck.dck
new file mode 100644
index 0000000000..5dd745b584
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Feb 2011.mwDeck.dck
@@ -0,0 +1,20 @@
+4 [ROE:152] Kargan Dragonlord
+1 [WWK:122] Basilisk Collar
+4 [M11:149] Lightning Bolt
+4 [ZEN:211] Arid Mesa
+4 [ZEN:141] Plated Geopede
+12 [UNH:139] Mountain
+2 [WWK:90] Searing Blaze
+2 [M13:141] Mark of Mutiny
+4 [ZEN:119] Burst Lightning
+4 [ZEN:223] Scalding Tarn
+4 [ZEN:126] Goblin Guide
+4 [ZEN:226] Teetering Peaks
+4 [SOM:94] Koth of the Hammer
+4 [SOM:104] Spikeshot Elder
+3 [SOM:81] Arc Trail
+SB: 1 [M13:141] Mark of Mutiny
+SB: 4 [M11:202] Brittle Effigy
+SB: 4 [ROE:145] Flame Slash
+SB: 3 [SOM:177] Molten-Tail Masticore
+SB: 3 [WWK:79] Cunning Sparkmage
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Feb 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Feb 2013.mwDeck.dck
new file mode 100644
index 0000000000..d9244811e0
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Feb 2013.mwDeck.dck
@@ -0,0 +1,16 @@
+22 [UNH:139] Mountain
+4 [DKA:101] Pyreheart Wolf
+4 [RTR:220] Rakdos Cackler
+4 [RTR:86] Ash Zealot
+4 [DKA:93] Hellrider
+4 [AVR:149] Pillar of Flame
+4 [ISD:164] Stromkirk Noble
+4 [GTC:215] Boros Reckoner
+4 [AVR:144] Lightning Mauler
+2 [AVR:157] Stonewright
+4 [M13:147] Searing Spear
+SB: 4 [RTR:101] Mizzium Mortars
+SB: 2 [AVR:126] Archwing Dragon
+SB: 3 [GTC:106] Skullcrack
+SB: 2 [M14:139] Flames of the Firebrand
+SB: 4 [ISD:159] Reckless Waif
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Jan 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Jan 2012.mwDeck.dck
new file mode 100644
index 0000000000..ad9ea9eb4d
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Jan 2012.mwDeck.dck
@@ -0,0 +1,20 @@
+3 [M13:228] Rootbound Crag
+4 [M12:139] Goblin Fireslinger
+4 [NPH:100] Volt Charge
+2 [M12:146] Incinerate
+3 [M12:145] Grim Lavamancer
+4 [M12:156] Stormblood Berserker
+4 [NPH:153] Shrine of Burning Rage
+18 [UNH:139] Mountain
+4 [M14:134] Chandra's Phoenix
+4 [NPH:86] Gut Shot
+4 [ISD:164] Stromkirk Noble
+1 [SOM:104] Spikeshot Elder
+2 [SOM:81] Arc Trail
+3 [SOM:91] Galvanic Blast
+SB: 2 [MBS:66] Hero of Oxid Ridge
+SB: 2 [ISD:166] Traitorous Blood
+SB: 4 [NPH:57] Dismember
+SB: 1 [SOM:81] Arc Trail
+SB: 4 [NPH:101] Vulshok Refugee
+SB: 2 [ISD:127] Ancient Grudge
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Jan 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Jan 2013.mwDeck.dck
new file mode 100644
index 0000000000..da60362949
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Jan 2013.mwDeck.dck
@@ -0,0 +1,20 @@
+4 [RTR:86] Ash Zealot
+2 [M13:226] Hellion Crucible
+2 [CNS:138] Brimstone Volley
+4 [M13:147] Searing Spear
+21 [UNH:139] Mountain
+4 [DKA:101] Pyreheart Wolf
+2 [M13:150] Thundermaw Hellkite
+4 [RTR:220] Rakdos Cackler
+4 [DKA:93] Hellrider
+3 [AVR:149] Pillar of Flame
+4 [ISD:164] Stromkirk Noble
+4 [AVR:144] Lightning Mauler
+2 [AVR:157] Stonewright
+SB: 4 [RTR:101] Mizzium Mortars
+SB: 2 [AVR:126] Archwing Dragon
+SB: 1 [RTR:215] Frostburn Weird
+SB: 1 [AVR:226] Cavern of Souls
+SB: 1 [AVR:149] Pillar of Flame
+SB: 4 [ISD:159] Reckless Waif
+SB: 2 [M13:155] Volcanic Strength
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Jul 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Jul 2011.mwDeck.dck
new file mode 100644
index 0000000000..2fe0d9b78e
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Jul 2011.mwDeck.dck
@@ -0,0 +1,20 @@
+1 [MBS:66] Hero of Oxid Ridge
+4 [M11:149] Lightning Bolt
+3 [M11:135] Ember Hauler
+4 [ZEN:211] Arid Mesa
+4 [M12:145] Grim Lavamancer
+4 [NPH:153] Shrine of Burning Rage
+4 [ZEN:141] Plated Geopede
+11 [UNH:139] Mountain
+4 [WWK:90] Searing Blaze
+2 [ZEN:119] Burst Lightning
+4 [ZEN:223] Scalding Tarn
+4 [ZEN:126] Goblin Guide
+4 [ZEN:226] Teetering Peaks
+3 [NPH:57] Dismember
+4 [SOM:81] Arc Trail
+SB: 3 [M12:151] Manic Vandal
+SB: 2 [MBS:75] Slagstorm
+SB: 3 [NPH:78] Act of Aggression
+SB: 3 [SOM:94] Koth of the Hammer
+SB: 4 [NPH:101] Vulshok Refugee
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Jun 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Jun 2011.mwDeck.dck
new file mode 100644
index 0000000000..763ec1de8f
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Jun 2011.mwDeck.dck
@@ -0,0 +1,18 @@
+4 [M11:149] Lightning Bolt
+4 [M11:135] Ember Hauler
+4 [ZEN:211] Arid Mesa
+4 [NPH:153] Shrine of Burning Rage
+4 [ROE:166] Staggershock
+12 [UNH:139] Mountain
+4 [WWK:90] Searing Blaze
+4 [ZEN:119] Burst Lightning
+4 [ZEN:223] Scalding Tarn
+4 [ZEN:126] Goblin Guide
+4 [ZEN:226] Teetering Peaks
+4 [SOM:94] Koth of the Hammer
+4 [SOM:104] Spikeshot Elder
+SB: 2 [M12:151] Manic Vandal
+SB: 3 [M12:128] Combust
+SB: 3 [NPH:78] Act of Aggression
+SB: 3 [NPH:57] Dismember
+SB: 4 [SOM:81] Arc Trail
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Jun 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Jun 2014.mwDeck.dck
new file mode 100644
index 0000000000..812baf0eee
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Jun 2014.mwDeck.dck
@@ -0,0 +1,19 @@
+3 [GTC:90] Firefist Striker
+4 [RTR:86] Ash Zealot
+4 [THS:121] Fanatic of Mogis
+4 [GTC:216] Burning-Tree Emissary
+4 [THS:122] Firedrinker Satyr
+4 [GTC:215] Boros Reckoner
+2 [THS:128] Magma Jet
+19 [UNH:139] Mountain
+4 [M15:155] Lightning Strike
+2 [M14:155] Shock
+4 [M14:134] Chandra's Phoenix
+4 [RTR:220] Rakdos Cackler
+2 [M14:228] Mutavault
+1 [BNG:111] Searing Blood
+SB: 4 [RTR:101] Mizzium Mortars
+SB: 2 [DGM:133] Toil // Trouble
+SB: 2 [JOU:100] Harness by Force
+SB: 4 [GTC:106] Skullcrack
+SB: 3 [BNG:111] Searing Blood
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Mar 2015.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Mar 2015.mwDeck.dck
new file mode 100644
index 0000000000..728f9ca264
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Mar 2015.mwDeck.dck
@@ -0,0 +1,18 @@
+20 [UNH:139] Mountain
+4 [M15:155] Lightning Strike
+4 [M15:145] Goblin Rabblemaster
+4 [KTK:111] Hordeling Outburst
+4 [THS:122] Firedrinker Satyr
+4 [FRF:108] Mardu Scout
+4 [KTK:118] Monastery Swiftspear
+4 [FRF:118] Wild Slash
+4 [BNG:111] Searing Blood
+4 [M15:141] Foundry Street Denizen
+4 [M15:164] Stoke the Flames
+SB: 2 [THS:124] Hammer of Purphoros
+SB: 2 [JOU:106] Prophetic Flamespeaker
+SB: 2 [FRF:92] Bathe in Dragonfire
+SB: 2 [THS:132] Peak Eruption
+SB: 2 [KTK:97] Arc Lightning
+SB: 4 [JOU:94] Eidolon of the Great Revel
+SB: 1 [FRF:102] Goblin Heelcutter
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST May 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST May 2011.mwDeck.dck
new file mode 100644
index 0000000000..592282bd4a
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST May 2011.mwDeck.dck
@@ -0,0 +1,20 @@
+1 [WWK:143] Smoldering Spires
+4 [M11:149] Lightning Bolt
+4 [M11:135] Ember Hauler
+4 [ZEN:211] Arid Mesa
+4 [NPH:153] Shrine of Burning Rage
+4 [ROE:166] Staggershock
+13 [UNH:139] Mountain
+4 [WWK:90] Searing Blaze
+4 [ZEN:119] Burst Lightning
+4 [ZEN:223] Scalding Tarn
+4 [ZEN:126] Goblin Guide
+2 [ZEN:226] Teetering Peaks
+4 [SOM:94] Koth of the Hammer
+4 [SOM:104] Spikeshot Elder
+SB: 3 [M13:141] Mark of Mutiny
+SB: 3 [MBS:75] Slagstorm
+SB: 1 [SOM:192] Perilous Myr
+SB: 3 [M12:128] Combust
+SB: 3 [ROE:145] Flame Slash
+SB: 2 [SOM:81] Arc Trail
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Nov 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Nov 2011.mwDeck.dck
new file mode 100644
index 0000000000..22cb3f2ea6
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Nov 2011.mwDeck.dck
@@ -0,0 +1,19 @@
+4 [M12:139] Goblin Fireslinger
+4 [NPH:100] Volt Charge
+2 [M12:146] Incinerate
+3 [M12:145] Grim Lavamancer
+4 [M12:156] Stormblood Berserker
+4 [NPH:153] Shrine of Burning Rage
+21 [UNH:139] Mountain
+4 [M14:134] Chandra's Phoenix
+4 [NPH:86] Gut Shot
+4 [ISD:164] Stromkirk Noble
+1 [SOM:104] Spikeshot Elder
+2 [SOM:81] Arc Trail
+3 [SOM:91] Galvanic Blast
+SB: 1 [M12:151] Manic Vandal
+SB: 2 [ISD:166] Traitorous Blood
+SB: 4 [NPH:57] Dismember
+SB: 2 [SOM:94] Koth of the Hammer
+SB: 2 [SOM:81] Arc Trail
+SB: 4 [NPH:101] Vulshok Refugee
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Nov 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Nov 2012.mwDeck.dck
new file mode 100644
index 0000000000..3f517fdf05
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Nov 2012.mwDeck.dck
@@ -0,0 +1,21 @@
+4 [RTR:86] Ash Zealot
+3 [RTR:96] Gore-House Chainwalker
+3 [M13:226] Hellion Crucible
+2 [M13:147] Searing Spear
+21 [UNH:139] Mountain
+4 [DKA:101] Pyreheart Wolf
+3 [M13:150] Thundermaw Hellkite
+4 [RTR:220] Rakdos Cackler
+4 [DKA:93] Hellrider
+2 [AVR:149] Pillar of Flame
+4 [ISD:164] Stromkirk Noble
+2 [M14:139] Flames of the Firebrand
+4 [AVR:144] Lightning Mauler
+SB: 1 [ISD:166] Traitorous Blood
+SB: 3 [AVR:126] Archwing Dragon
+SB: 1 [AVR:149] Pillar of Flame
+SB: 2 [M14:139] Flames of the Firebrand
+SB: 1 [M13:226] Hellion Crucible
+SB: 2 [AVR:166] Zealous Conscripts
+SB: 4 [ISD:159] Reckless Waif
+SB: 1 [M13:147] Searing Spear
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Nov 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Nov 2013.mwDeck.dck
new file mode 100644
index 0000000000..18e19448d6
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Nov 2013.mwDeck.dck
@@ -0,0 +1,18 @@
+18 [UNH:139] Mountain
+2 [DGM:38] Rubblebelt Maaka
+4 [M15:155] Lightning Strike
+4 [M14:155] Shock
+4 [M14:134] Chandra's Phoenix
+4 [GTC:90] Firefist Striker
+4 [RTR:220] Rakdos Cackler
+4 [GTC:216] Burning-Tree Emissary
+4 [THS:122] Firedrinker Satyr
+4 [RTR:96] Gore-House Chainwalker
+4 [M14:228] Mutavault
+4 [M15:141] Foundry Street Denizen
+SB: 1 [DGM:38] Rubblebelt Maaka
+SB: 4 [RTR:101] Mizzium Mortars
+SB: 3 [THS:132] Peak Eruption
+SB: 2 [KTK:95] Act of Treason
+SB: 4 [GTC:106] Skullcrack
+SB: 1 [M14:130] Burning Earth
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Nov 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Nov 2014.mwDeck.dck
new file mode 100644
index 0000000000..cd5d44d68a
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Nov 2014.mwDeck.dck
@@ -0,0 +1,17 @@
+18 [UNH:139] Mountain
+3 [M15:155] Lightning Strike
+4 [M15:145] Goblin Rabblemaster
+4 [M15:147] Hammerhand
+4 [THS:111] Akroan Crusader
+4 [THS:122] Firedrinker Satyr
+4 [THS:145] Titan's Strength
+4 [KTK:118] Monastery Swiftspear
+4 [M15:141] Foundry Street Denizen
+3 [M15:142] Frenzied Goblin
+4 [THS:119] Dragon Mantle
+4 [M15:164] Stoke the Flames
+SB: 1 [M15:155] Lightning Strike
+SB: 3 [JOU:103] Magma Spray
+SB: 3 [JOU:100] Harness by Force
+SB: 4 [BNG:111] Searing Blood
+SB: 4 [JOU:94] Eidolon of the Great Revel
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Oct 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Oct 2011.mwDeck.dck
new file mode 100644
index 0000000000..e0b6155848
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Oct 2011.mwDeck.dck
@@ -0,0 +1,18 @@
+20 [UNH:139] Mountain
+3 [NPH:84] Furnace Scamp
+4 [M14:134] Chandra's Phoenix
+4 [ISD:144] Geistflame
+3 [M13:228] Rootbound Crag
+4 [ISD:164] Stromkirk Noble
+4 [CNS:138] Brimstone Volley
+4 [SOM:94] Koth of the Hammer
+4 [M12:146] Incinerate
+2 [SOM:104] Spikeshot Elder
+4 [M12:156] Stormblood Berserker
+4 [NPH:153] Shrine of Burning Rage
+SB: 2 [MBS:66] Hero of Oxid Ridge
+SB: 2 [ISD:166] Traitorous Blood
+SB: 3 [SOM:192] Perilous Myr
+SB: 2 [SOM:81] Arc Trail
+SB: 4 [NPH:101] Vulshok Refugee
+SB: 2 [ISD:127] Ancient Grudge
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Sep 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Sep 2011.mwDeck.dck
new file mode 100644
index 0000000000..7a2314a3b8
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Red Deck Wins TDtB ST Sep 2011.mwDeck.dck
@@ -0,0 +1,21 @@
+3 [ROE:152] Kargan Dragonlord
+2 [MBS:66] Hero of Oxid Ridge
+4 [M11:149] Lightning Bolt
+4 [ZEN:211] Arid Mesa
+4 [M12:145] Grim Lavamancer
+4 [NPH:153] Shrine of Burning Rage
+3 [ROE:146] Forked Bolt
+3 [ROE:166] Staggershock
+11 [UNH:139] Mountain
+4 [WWK:90] Searing Blaze
+4 [M14:134] Chandra's Phoenix
+4 [ZEN:223] Scalding Tarn
+4 [ZEN:126] Goblin Guide
+4 [ZEN:226] Teetering Peaks
+2 [SOM:81] Arc Trail
+SB: 3 [M12:151] Manic Vandal
+SB: 3 [M12:128] Combust
+SB: 3 [NPH:78] Act of Aggression
+SB: 2 [NPH:57] Dismember
+SB: 1 [SOM:81] Arc Trail
+SB: 3 [NPH:101] Vulshok Refugee
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Saint WW TDtB ST Jan 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Saint WW TDtB ST Jan 2012.mwDeck.dck
new file mode 100644
index 0000000000..81d1b5e28e
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Saint WW TDtB ST Jan 2012.mwDeck.dck
@@ -0,0 +1,43 @@
+1 [WMCQ:2] Geist of Saint Traft
+2 [M12:18] Gideon's Lawkeeper
+1 [M12:19] Grand Abolisher
+3 [C13:11] Fiend Hunter
+1 [ALA:20] Oblivion Ring
+3 [C14:74] Grand Abolisher
+2 [M10:16] Honor of the Pure
+1 [POR:216] Plains
+1 [M10:233] Plains
+1 [M13:225] Glacial Fortress
+4 [PTC:47] Hero of Bladehold
+3 [ISD:11] Doomed Traveler
+1 [DDK:2] Doomed Traveler
+1 [DDN:81] Plains
+1 [ODY:333] Plains
+1 [DDI:40] Plains
+3 [ISD:244] Moorland Haunt
+1 [MBS:14] Mirran Crusader
+1 [ALA:230] Plains
+2 [M10:226] Glacial Fortress
+1 [M12:227] Glacial Fortress
+2 [MBP:32] Mirran Crusader
+3 [M12:3] Angelic Destiny
+1 [LRW:34] Oblivion Ring
+1 [ZEN:232] Plains
+1 [DDN:38] Plains
+1 [HOP:145] Plains
+1 [KTK:250] Plains
+1 [MM2:25] Mirran Crusader
+1 [ISD:251] Plains
+4 [SOM:229] Seachrome Coast
+1 [ISD:213] Geist of Saint Traft
+2 [M12:23] Honor of the Pure
+1 [ME3:220] Island
+4 [ISD:6] Champion of the Parish
+1 [AVR:231] Plains
+SB: 2 [NPH:161] Sword of War and Peace
+SB: 2 [NPH:57] Dismember
+SB: 1 [M12:11] Celestial Purge
+SB: 1 [MBS:115] Mortarpod
+SB: 4 [M12:40] Timely Reinforcements
+SB: 3 [M12:63] Mana Leak
+SB: 2 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Saint WW TDtB ST Oct 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Saint WW TDtB ST Oct 2011.mwDeck.dck
new file mode 100644
index 0000000000..8514cee2ba
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Saint WW TDtB ST Oct 2011.mwDeck.dck
@@ -0,0 +1,21 @@
+4 [C14:74] Grand Abolisher
+4 [M12:15] Elite Vanguard
+4 [M12:3] Angelic Destiny
+4 [M13:225] Glacial Fortress
+4 [SOM:229] Seachrome Coast
+2 [NPH:57] Dismember
+4 [ISD:213] Geist of Saint Traft
+2 [ISD:244] Moorland Haunt
+3 [M13:22] Oblivion Ring
+4 [M12:23] Honor of the Pure
+12 [UNH:136] Plains
+4 [MBS:14] Mirran Crusader
+1 [UNH:137] Island
+4 [ISD:6] Champion of the Parish
+4 [MBS:8] Hero of Bladehold
+SB: 3 [ISD:27] Purify the Grave
+SB: 3 [M14:215] Ratchet Bomb
+SB: 1 [NPH:57] Dismember
+SB: 3 [BNG:25] Revoke Existence
+SB: 1 [M13:22] Oblivion Ring
+SB: 4 [M12:40] Timely Reinforcements
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Saint WW with Leaks TDtB ST Dec 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Saint WW with Leaks TDtB ST Dec 2011.mwDeck.dck
new file mode 100644
index 0000000000..100fa00295
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Saint WW with Leaks TDtB ST Dec 2011.mwDeck.dck
@@ -0,0 +1,30 @@
+2 [MBS:10] Leonin Relic-Warder
+2 [SOM:14] Leonin Arbiter
+4 [C13:11] Fiend Hunter
+1 [NPH:161] Sword of War and Peace
+1 [M12:3] Angelic Destiny
+4 [M13:225] Glacial Fortress
+1 [C14:298] Ghost Quarter
+4 [SOM:229] Seachrome Coast
+2 [NPH:57] Dismember
+3 [ISD:213] Geist of Saint Traft
+3 [ISD:244] Moorland Haunt
+2 [M13:22] Oblivion Ring
+4 [M12:23] Honor of the Pure
+11 [UNH:136] Plains
+4 [MBS:14] Mirran Crusader
+1 [UNH:137] Island
+4 [MBS:8] Hero of Bladehold
+4 [CNS:69] Doomed Traveler
+3 [M12:63] Mana Leak
+SB: 1 [SOM:14] Leonin Arbiter
+SB: 1 [NPH:161] Sword of War and Peace
+SB: 1 [M12:3] Angelic Destiny
+SB: 1 [NPH:57] Dismember
+SB: 2 [BNG:25] Revoke Existence
+SB: 1 [M13:22] Oblivion Ring
+SB: 1 [M12:12] Day of Judgment
+SB: 4 [M12:40] Timely Reinforcements
+SB: 1 [M12:63] Mana Leak
+SB: 1 [M12:52] Flashfreeze
+SB: 1 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Saint WW with Leaks TDtB ST Nov 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Saint WW with Leaks TDtB ST Nov 2011.mwDeck.dck
new file mode 100644
index 0000000000..82965ed623
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Saint WW with Leaks TDtB ST Nov 2011.mwDeck.dck
@@ -0,0 +1,27 @@
+2 [MBS:10] Leonin Relic-Warder
+3 [M12:18] Gideon's Lawkeeper
+4 [C13:11] Fiend Hunter
+4 [M13:225] Glacial Fortress
+4 [SOM:229] Seachrome Coast
+2 [NPH:57] Dismember
+3 [ISD:213] Geist of Saint Traft
+1 [MBS:115] Mortarpod
+4 [ISD:244] Moorland Haunt
+2 [M13:22] Oblivion Ring
+4 [M12:23] Honor of the Pure
+11 [UNH:136] Plains
+4 [MBS:14] Mirran Crusader
+1 [UNH:137] Island
+4 [MBS:8] Hero of Bladehold
+4 [CNS:69] Doomed Traveler
+3 [M12:63] Mana Leak
+SB: 1 [MBS:5] Divine Offering
+SB: 1 [M12:3] Angelic Destiny
+SB: 2 [NPH:57] Dismember
+SB: 2 [BNG:25] Revoke Existence
+SB: 1 [ISD:213] Geist of Saint Traft
+SB: 1 [M12:11] Celestial Purge
+SB: 1 [M13:22] Oblivion Ring
+SB: 1 [M12:12] Day of Judgment
+SB: 4 [M12:40] Timely Reinforcements
+SB: 1 [M12:63] Mana Leak
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Saito Naya TDtB ST Feb 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Saito Naya TDtB ST Feb 2013.mwDeck.dck
new file mode 100644
index 0000000000..95279e6802
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Saito Naya TDtB ST Feb 2013.mwDeck.dck
@@ -0,0 +1,25 @@
+3 [M13:229] Sunpetal Grove
+4 [M13:228] Rootbound Crag
+4 [GTC:216] Burning-Tree Emissary
+4 [GTC:215] Boros Reckoner
+2 [UNH:139] Mountain
+4 [RTR:178] Loxodon Smiter
+4 [RTR:101] Mizzium Mortars
+3 [M13:150] Thundermaw Hellkite
+1 [M13:193] Thragtusk
+4 [M13:171] Flinthoof Boar
+4 [RTR:248] Temple Garden
+4 [DKA:93] Hellrider
+4 [GTC:247] Stomping Ground
+4 [GTC:245] Sacred Foundry
+4 [GTC:123] Gyre Sage
+4 [GTC:156] Domri Rade
+3 [ISD:238] Clifftop Retreat
+SB: 3 [C13:179] Boros Charm
+SB: 1 [M13:193] Thragtusk
+SB: 2 [ISD:181] Garruk Relentless
+SB: 2 [M14:25] Pacifism
+SB: 2 [AVR:31] Nearheath Pilgrim
+SB: 1 [GTC:143] Aurelia, the Warleader
+SB: 2 [RTR:18] Rest in Peace
+SB: 2 [AVR:198] Triumph of Ferocity
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Selesnya Aggro TDtB ST Aug 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Selesnya Aggro TDtB ST Aug 2014.mwDeck.dck
new file mode 100644
index 0000000000..4a0631f59d
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Selesnya Aggro TDtB ST Aug 2014.mwDeck.dck
@@ -0,0 +1,22 @@
+3 [M14:1] Ajani, Caller of the Pride
+4 [GTC:119] Experiment One
+7 [UNH:140] Forest
+3 [JOU:5] Banishing Light
+4 [RTR:178] Loxodon Smiter
+4 [C13:211] Selesnya Charm
+2 [M15:202] Sunblade Elf
+4 [RTR:248] Temple Garden
+4 [THS:193] Fleecemane Lion
+2 [BNG:165] Temple of Plenty
+4 [JOU:163] Mana Confluence
+4 [DGM:51] Advent of the Wurm
+7 [UNH:136] Plains
+4 [THS:32] Soldier of the Pantheon
+4 [DGM:114] Voice of Resurgence
+SB: 4 [DGM:49] Skylasher
+SB: 2 [C14:213] Reclamation Sage
+SB: 3 [DGM:111] Unflinching Courage
+SB: 2 [M14:5] Archangel of Thune
+SB: 1 [JOU:5] Banishing Light
+SB: 2 [JOU:140] Setessan Tactics
+SB: 1 [THS:152] Boon Satyr
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Selesnya Aggro TDtB ST Jul 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Selesnya Aggro TDtB ST Jul 2014.mwDeck.dck
new file mode 100644
index 0000000000..8845cd114d
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Selesnya Aggro TDtB ST Jul 2014.mwDeck.dck
@@ -0,0 +1,25 @@
+3 [M14:1] Ajani, Caller of the Pride
+4 [GTC:119] Experiment One
+5 [UNH:140] Forest
+2 [JOU:5] Banishing Light
+4 [RTR:178] Loxodon Smiter
+4 [C13:211] Selesnya Charm
+2 [M15:202] Sunblade Elf
+4 [RTR:248] Temple Garden
+2 [M14:228] Mutavault
+4 [THS:193] Fleecemane Lion
+4 [JOU:163] Mana Confluence
+4 [BNG:165] Temple of Plenty
+3 [DGM:51] Advent of the Wurm
+3 [THS:152] Boon Satyr
+5 [UNH:136] Plains
+3 [THS:32] Soldier of the Pantheon
+4 [DGM:114] Voice of Resurgence
+SB: 4 [DGM:49] Skylasher
+SB: 2 [THS:159] Hunt the Hunter
+SB: 2 [M15:1] Ajani Steadfast
+SB: 2 [THS:16] Gods Willing
+SB: 2 [M14:5] Archangel of Thune
+SB: 1 [DGM:51] Advent of the Wurm
+SB: 1 [THS:162] Mistcutter Hydra
+SB: 1 [JOU:140] Setessan Tactics
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Selesnya Aggro TDtB ST May 2015.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Selesnya Aggro TDtB ST May 2015.mwDeck.dck
new file mode 100644
index 0000000000..8047e92679
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Selesnya Aggro TDtB ST May 2015.mwDeck.dck
@@ -0,0 +1,27 @@
+2 [THS:223] Nykthos, Shrine to Nyx
+2 [FRF:28] Valorous Stance
+4 [DTK:181] Den Protector
+8 [UNH:140] Forest
+4 [KTK:248] Windswept Heath
+2 [BNG:117] Aspect of Hydra
+3 [DTK:248] Evolving Wilds
+4 [DTK:175] Avatar of the Resolute
+4 [THS:193] Fleecemane Lion
+4 [BNG:165] Temple of Plenty
+2 [DTK:210] Surrak, the Hunt Caller
+4 [THS:173] Reverent Hunter
+3 [DTK:221] Dromoka's Command
+4 [DTK:177] Collected Company
+4 [THS:152] Boon Satyr
+4 [C14:191] Elvish Mystic
+2 [UNH:136] Plains
+SB: 1 [C14:213] Reclamation Sage
+SB: 2 [FRF:18] Mardu Woe-Reaper
+SB: 1 [KTK:130] Become Immense
+SB: 1 [THS:16] Gods Willing
+SB: 2 [BNG:4] Archetype of Courage
+SB: 1 [THS:167] Nylea's Disciple
+SB: 3 [FRF:5] Arashin Cleric
+SB: 1 [DTK:221] Dromoka's Command
+SB: 1 [DTK:210] Surrak, the Hunt Caller
+SB: 2 [KTK:157] Windstorm
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Selesnya Aggro TDtB ST Nov 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Selesnya Aggro TDtB ST Nov 2012.mwDeck.dck
new file mode 100644
index 0000000000..5abc7495c8
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Selesnya Aggro TDtB ST Nov 2012.mwDeck.dck
@@ -0,0 +1,27 @@
+4 [AVR:32] Restoration Angel
+2 [C14:88] Silverblade Paladin
+2 [AVR:12] Cloudshift
+4 [M13:229] Sunpetal Grove
+6 [UNH:140] Forest
+1 [C14:72] Geist-Honored Monk
+2 [M13:36] Sublime Archangel
+4 [RTR:178] Loxodon Smiter
+3 [C13:211] Selesnya Charm
+2 [RTR:143] Armada Wurm
+4 [M13:160] Arbor Elf
+4 [ISD:170] Avacyn's Pilgrim
+4 [M13:193] Thragtusk
+2 [AVR:226] Cavern of Souls
+4 [RTR:248] Temple Garden
+2 [M13:22] Oblivion Ring
+3 [UNH:136] Plains
+4 [ISD:239] Gavony Township
+3 [DKA:24] Thalia, Guardian of Thraben
+SB: 2 [M13:174] Garruk, Primal Hunter
+SB: 2 [ISD:32] Slayer of the Wicked
+SB: 3 [RTR:148] Centaur Healer
+SB: 2 [AVR:210] Sigarda, Host of Herons
+SB: 1 [AVR:18] Divine Deflection
+SB: 1 [M13:22] Oblivion Ring
+SB: 1 [DKA:24] Thalia, Guardian of Thraben
+SB: 3 [RTR:18] Rest in Peace
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Selesnya Aggro TDtB ST Nov 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Selesnya Aggro TDtB ST Nov 2013.mwDeck.dck
new file mode 100644
index 0000000000..205021fe44
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Selesnya Aggro TDtB ST Nov 2013.mwDeck.dck
@@ -0,0 +1,20 @@
+2 [M14:1] Ajani, Caller of the Pride
+4 [GTC:119] Experiment One
+3 [THS:16] Gods Willing
+8 [UNH:140] Forest
+4 [RTR:178] Loxodon Smiter
+3 [C13:321] Selesnya Guildgate
+4 [C13:211] Selesnya Charm
+4 [RTR:248] Temple Garden
+4 [THS:193] Fleecemane Lion
+4 [DGM:51] Advent of the Wurm
+4 [THS:152] Boon Satyr
+8 [UNH:136] Plains
+4 [THS:32] Soldier of the Pantheon
+4 [DGM:114] Voice of Resurgence
+SB: 3 [DGM:111] Unflinching Courage
+SB: 3 [RTR:19] Rootborn Defenses
+SB: 1 [M14:1] Ajani, Caller of the Pride
+SB: 3 [M14:12] Celestial Flare
+SB: 2 [THS:172] Polukranos, World Eater
+SB: 3 [THS:162] Mistcutter Hydra
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Selesnya Aggro TDtB ST Oct 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Selesnya Aggro TDtB ST Oct 2012.mwDeck.dck
new file mode 100644
index 0000000000..be9097c524
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Selesnya Aggro TDtB ST Oct 2012.mwDeck.dck
@@ -0,0 +1,27 @@
+4 [AVR:32] Restoration Angel
+4 [M13:229] Sunpetal Grove
+8 [UNH:140] Forest
+3 [RTR:146] Call of the Conclave
+3 [RTR:178] Loxodon Smiter
+3 [C13:211] Selesnya Charm
+2 [RTR:143] Armada Wurm
+4 [M13:160] Arbor Elf
+4 [ISD:170] Avacyn's Pilgrim
+4 [M13:193] Thragtusk
+2 [ISD:181] Garruk Relentless
+4 [RTR:248] Temple Garden
+4 [RTR:148] Centaur Healer
+1 [AVR:200] Ulvenwald Tracker
+2 [RTR:206] Trostani, Selesnya's Voice
+2 [M13:22] Oblivion Ring
+2 [ISD:239] Gavony Township
+4 [UNH:136] Plains
+SB: 2 [RTR:223] Sundering Growth
+SB: 2 [M13:174] Garruk, Primal Hunter
+SB: 1 [DKA:17] Ray of Revelation
+SB: 1 [AVR:210] Sigarda, Host of Herons
+SB: 1 [M13:22] Oblivion Ring
+SB: 2 [DKA:24] Thalia, Guardian of Thraben
+SB: 3 [RTR:18] Rest in Peace
+SB: 1 [DKA:110] Crushing Vines
+SB: 2 [RTR:150] Collective Blessing
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Selesnya Aggro TDtB ST Oct 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Selesnya Aggro TDtB ST Oct 2013.mwDeck.dck
new file mode 100644
index 0000000000..834a1c0280
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Selesnya Aggro TDtB ST Oct 2013.mwDeck.dck
@@ -0,0 +1,22 @@
+4 [GTC:119] Experiment One
+9 [UNH:140] Forest
+2 [RTR:146] Call of the Conclave
+3 [RTR:178] Loxodon Smiter
+3 [C13:321] Selesnya Guildgate
+3 [DGM:111] Unflinching Courage
+4 [C13:211] Selesnya Charm
+4 [RTR:248] Temple Garden
+4 [THS:193] Fleecemane Lion
+4 [DGM:51] Advent of the Wurm
+1 [RTR:206] Trostani, Selesnya's Voice
+4 [THS:152] Boon Satyr
+7 [UNH:136] Plains
+4 [THS:32] Soldier of the Pantheon
+4 [DGM:114] Voice of Resurgence
+SB: 2 [M14:1] Ajani, Caller of the Pride
+SB: 4 [THS:15] Glare of Heresy
+SB: 4 [THS:159] Hunt the Hunter
+SB: 1 [RTR:19] Rootborn Defenses
+SB: 1 [GTC:13] Gideon, Champion of Justice
+SB: 1 [RTR:206] Trostani, Selesnya's Voice
+SB: 2 [M14:195] Scavenging Ooze
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Solar Flare TDtB ST Aug 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Solar Flare TDtB ST Aug 2012.mwDeck.dck
new file mode 100644
index 0000000000..7d394d2ca5
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Solar Flare TDtB ST Aug 2012.mwDeck.dck
@@ -0,0 +1,35 @@
+2 [MBS:43] Go for the Throat
+2 [M12:16] Gideon Jura
+4 [M13:225] Glacial Fortress
+1 [ISD:78] Snapcaster Mage
+4 [ISD:55] Forbidden Alchemy
+1 [ISD:122] Unburial Rites
+2 [AVR:226] Cavern of Souls
+4 [ISD:242] Isolated Chapel
+2 [M14:215] Ratchet Bomb
+1 [M14:96] Doom Blade
+4 [DKA:12] Lingering Souls
+3 [M12:12] Day of Judgment
+2 [ISD:96] Dead Weight
+3 [UNH:136] Plains
+4 [M12:72] Phantasmal Image
+2 [UNH:137] Island
+3 [M12:73] Ponder
+2 [UNH:138] Swamp
+1 [DKA:158] Vault of the Archangel
+1 [C14:298] Ghost Quarter
+1 [SOM:229] Seachrome Coast
+2 [C14:295] Evolving Wilds
+3 [C14:91] Sun Titan
+4 [SOM:226] Darkslick Shores
+2 [M13:22] Oblivion Ring
+SB: 1 [MBS:5] Divine Offering
+SB: 1 [C14:298] Ghost Quarter
+SB: 1 [BNG:25] Revoke Existence
+SB: 1 [M15:51] Dissipate
+SB: 3 [M12:11] Celestial Purge
+SB: 1 [NPH:130] Batterskull
+SB: 1 [M12:12] Day of Judgment
+SB: 3 [C13:249] Nihil Spellbomb
+SB: 1 [M15:71] Negate
+SB: 2 [NPH:1] Karn Liberated
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Solar Flare TDtB ST May 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Solar Flare TDtB ST May 2012.mwDeck.dck
new file mode 100644
index 0000000000..6df9f32520
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Solar Flare TDtB ST May 2012.mwDeck.dck
@@ -0,0 +1,30 @@
+2 [M12:16] Gideon Jura
+4 [M13:225] Glacial Fortress
+1 [NPH:130] Batterskull
+4 [ISD:55] Forbidden Alchemy
+3 [C14:298] Ghost Quarter
+1 [ISD:122] Unburial Rites
+4 [ISD:242] Isolated Chapel
+3 [M14:215] Ratchet Bomb
+2 [C14:295] Evolving Wilds
+4 [SOM:229] Seachrome Coast
+1 [NPH:9] Elesh Norn, Grand Cenobite
+3 [C14:91] Sun Titan
+1 [SOM:226] Darkslick Shores
+4 [DKA:12] Lingering Souls
+3 [M13:22] Oblivion Ring
+3 [M12:12] Day of Judgment
+2 [ISD:96] Dead Weight
+4 [UNH:136] Plains
+4 [M12:72] Phantasmal Image
+3 [UNH:137] Island
+3 [M12:73] Ponder
+1 [UNH:138] Swamp
+SB: 1 [MBS:21] Consecrated Sphinx
+SB: 2 [AVR:226] Cavern of Souls
+SB: 2 [M12:11] Celestial Purge
+SB: 1 [M12:12] Day of Judgment
+SB: 3 [C13:249] Nihil Spellbomb
+SB: 3 [M12:40] Timely Reinforcements
+SB: 2 [M15:71] Negate
+SB: 1 [NPH:1] Karn Liberated
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Solar Flare TDtB ST Nov 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Solar Flare TDtB ST Nov 2011.mwDeck.dck
new file mode 100644
index 0000000000..aeeee3c861
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Solar Flare TDtB ST Nov 2011.mwDeck.dck
@@ -0,0 +1,30 @@
+1 [MBS:21] Consecrated Sphinx
+4 [M13:225] Glacial Fortress
+3 [NPH:4] Blade Splicer
+1 [M13:223] Drowned Catacomb
+4 [ISD:55] Forbidden Alchemy
+3 [C14:298] Ghost Quarter
+2 [ISD:122] Unburial Rites
+4 [ISD:242] Isolated Chapel
+2 [M14:215] Ratchet Bomb
+4 [SOM:229] Seachrome Coast
+1 [C14:283] Wurmcoil Engine
+3 [C14:91] Sun Titan
+4 [M14:96] Doom Blade
+4 [SOM:226] Darkslick Shores
+3 [M13:22] Oblivion Ring
+3 [M12:12] Day of Judgment
+3 [UNH:136] Plains
+2 [M12:72] Phantasmal Image
+2 [UNH:137] Island
+2 [ISD:83] Think Twice
+1 [UNH:138] Swamp
+4 [M12:63] Mana Leak
+SB: 2 [M14:215] Ratchet Bomb
+SB: 1 [C14:283] Wurmcoil Engine
+SB: 2 [M15:51] Dissipate
+SB: 2 [M12:11] Celestial Purge
+SB: 1 [M13:22] Oblivion Ring
+SB: 2 [C13:249] Nihil Spellbomb
+SB: 3 [M12:40] Timely Reinforcements
+SB: 2 [ISD:94] Curse of Death's Hold
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Solar Flare TDtB ST Oct 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Solar Flare TDtB ST Oct 2011.mwDeck.dck
new file mode 100644
index 0000000000..38cfcdb9a1
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Solar Flare TDtB ST Oct 2011.mwDeck.dck
@@ -0,0 +1,31 @@
+1 [MBS:21] Consecrated Sphinx
+4 [M13:225] Glacial Fortress
+4 [M13:223] Drowned Catacomb
+3 [ISD:78] Snapcaster Mage
+4 [ISD:55] Forbidden Alchemy
+2 [ISD:122] Unburial Rites
+3 [ISD:242] Isolated Chapel
+3 [SOM:229] Seachrome Coast
+2 [C14:283] Wurmcoil Engine
+2 [C14:91] Sun Titan
+3 [M14:96] Doom Blade
+2 [SOM:226] Darkslick Shores
+4 [M13:22] Oblivion Ring
+2 [M12:12] Day of Judgment
+4 [UNH:136] Plains
+2 [M12:72] Phantasmal Image
+5 [UNH:137] Island
+3 [ISD:83] Think Twice
+3 [M12:40] Timely Reinforcements
+1 [UNH:138] Swamp
+3 [M12:63] Mana Leak
+SB: 2 [NPH:74] Surgical Extraction
+SB: 1 [MBS:5] Divine Offering
+SB: 1 [M14:96] Doom Blade
+SB: 2 [M15:51] Dissipate
+SB: 3 [M12:11] Celestial Purge
+SB: 1 [M12:12] Day of Judgment
+SB: 1 [M12:40] Timely Reinforcements
+SB: 1 [M15:71] Negate
+SB: 2 [M12:52] Flashfreeze
+SB: 1 [NPH:1] Karn Liberated
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Spirit Delver TDtB ST Feb 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Spirit Delver TDtB ST Feb 2012.mwDeck.dck
new file mode 100644
index 0000000000..41b30259ca
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Spirit Delver TDtB ST Feb 2012.mwDeck.dck
@@ -0,0 +1,33 @@
+2 [C13:42] Dungeon Geists
+3 [M13:225] Glacial Fortress
+4 [ISD:78] Snapcaster Mage
+4 [DKA:136] Drogskol Captain
+1 [MBS:5] Divine Offering
+1 [NPH:86] Gut Shot
+2 [C14:295] Evolving Wilds
+4 [SOM:229] Seachrome Coast
+1 [BNG:25] Revoke Existence
+4 [NPH:35] Gitaxian Probe
+4 [SOM:226] Darkslick Shores
+4 [NPH:48] Vapor Snag
+4 [DKA:12] Lingering Souls
+2 [ISD:244] Moorland Haunt
+1 [UNH:136] Plains
+3 [M12:72] Phantasmal Image
+4 [ISD:51] Delver of Secrets
+5 [UNH:137] Island
+4 [M12:73] Ponder
+1 [UNH:138] Swamp
+2 [M12:63] Mana Leak
+SB: 1 [MBS:5] Divine Offering
+SB: 2 [NPH:74] Surgical Extraction
+SB: 2 [C13:42] Dungeon Geists
+SB: 2 [NPH:86] Gut Shot
+SB: 1 [M12:13] Demystify
+SB: 1 [BNG:25] Revoke Existence
+SB: 1 [NPH:57] Dismember
+SB: 1 [M15:51] Dissipate
+SB: 1 [M12:11] Celestial Purge
+SB: 1 [M12:72] Phantasmal Image
+SB: 1 [M12:63] Mana Leak
+SB: 1 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Sultai Whip TDtB ST Apr 2015.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Sultai Whip TDtB ST Apr 2015.mwDeck.dck
new file mode 100644
index 0000000000..e076e26807
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Sultai Whip TDtB ST Apr 2015.mwDeck.dck
@@ -0,0 +1,36 @@
+2 [DTK:180] Deathmist Raptor
+3 [DTK:181] Den Protector
+4 [UNH:140] Forest
+3 [JOU:165] Temple of Malady
+2 [THS:107] Thoughtseize
+4 [M15:198] Satyr Wayfinder
+4 [M15:244] Llanowar Wastes
+1 [KTK:144] Rattleclaw Mystic
+1 [DTK:124] Ultimate Price
+1 [M15:248] Urborg, Tomb of Yawgmoth
+1 [M15:249] Yavimaya Coast
+1 [DTK:120] Sidisi, Undead Vizier
+1 [UNH:137] Island
+4 [THS:180] Sylvan Caryatid
+2 [UNH:138] Swamp
+2 [THS:110] Whip of Erebos
+1 [KTK:239] Polluted Delta
+4 [KTK:238] Opulent Palace
+1 [KTK:234] Frontier Bivouac
+1 [DTK:216] Dragonlord Atarka
+2 [M15:178] Hornet Queen
+4 [KTK:199] Sidisi, Brood Tyrant
+4 [BNG:119] Courser of Kruphix
+3 [KTK:81] Murderous Cut
+3 [THS:90] Hero's Downfall
+1 [JOU:163] Mana Confluence
+SB: 2 [BNG:61] Bile Blight
+SB: 1 [DTK:216] Dragonlord Atarka
+SB: 1 [DTK:70] Profaner of the Dead
+SB: 1 [C14:213] Reclamation Sage
+SB: 1 [M15:115] Soul of Innistrad
+SB: 2 [THS:188] Ashiok, Nightmare Weaver
+SB: 1 [THS:167] Nylea's Disciple
+SB: 2 [FRF:65] Crux of Fate
+SB: 1 [THS:107] Thoughtseize
+SB: 3 [KTK:37] Disdainful Stroke
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Sultai Whip TDtB ST Dec 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Sultai Whip TDtB ST Dec 2014.mwDeck.dck
new file mode 100644
index 0000000000..f23ee79b2d
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Sultai Whip TDtB ST Dec 2014.mwDeck.dck
@@ -0,0 +1,30 @@
+1 [THS:226] Temple of Mystery
+3 [THS:110] Whip of Erebos
+3 [UNH:140] Forest
+2 [JOU:165] Temple of Malady
+1 [JOU:154] Pharika, God of Affliction
+3 [JOU:66] Doomwake Giant
+2 [KTK:239] Polluted Delta
+4 [KTK:238] Opulent Palace
+3 [THS:107] Thoughtseize
+4 [M15:198] Satyr Wayfinder
+4 [M15:244] Llanowar Wastes
+3 [M15:178] Hornet Queen
+4 [KTK:199] Sidisi, Brood Tyrant
+4 [BNG:119] Courser of Kruphix
+4 [KTK:81] Murderous Cut
+1 [M15:115] Soul of Innistrad
+2 [M15:249] Yavimaya Coast
+1 [C14:295] Evolving Wilds
+3 [THS:90] Hero's Downfall
+1 [JOU:163] Mana Confluence
+1 [UNH:137] Island
+4 [THS:180] Sylvan Caryatid
+2 [UNH:138] Swamp
+SB: 2 [M15:177] Hornet Nest
+SB: 2 [C14:213] Reclamation Sage
+SB: 3 [THS:188] Ashiok, Nightmare Weaver
+SB: 1 [JOU:154] Pharika, God of Affliction
+SB: 2 [KTK:204] Sultai Charm
+SB: 2 [BNG:65] Drown in Sorrow
+SB: 3 [KTK:37] Disdainful Stroke
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Sultai Whip TDtB ST Feb 2015.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Sultai Whip TDtB ST Feb 2015.mwDeck.dck
new file mode 100644
index 0000000000..e7d60fa99a
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Sultai Whip TDtB ST Feb 2015.mwDeck.dck
@@ -0,0 +1,30 @@
+1 [THS:226] Temple of Mystery
+3 [THS:110] Whip of Erebos
+3 [UNH:140] Forest
+2 [JOU:165] Temple of Malady
+2 [JOU:66] Doomwake Giant
+2 [KTK:239] Polluted Delta
+1 [KTK:248] Windswept Heath
+4 [KTK:238] Opulent Palace
+4 [M15:198] Satyr Wayfinder
+2 [BNG:61] Bile Blight
+4 [M15:244] Llanowar Wastes
+3 [M15:178] Hornet Queen
+4 [KTK:199] Sidisi, Brood Tyrant
+4 [BNG:119] Courser of Kruphix
+4 [KTK:81] Murderous Cut
+1 [M15:248] Urborg, Tomb of Yawgmoth
+2 [M15:249] Yavimaya Coast
+3 [THS:90] Hero's Downfall
+3 [FRF:87] Tasigur, the Golden Fang
+1 [FRF:56] Torrent Elemental
+1 [UNH:137] Island
+3 [THS:180] Sylvan Caryatid
+3 [UNH:138] Swamp
+SB: 2 [BNG:61] Bile Blight
+SB: 2 [C14:213] Reclamation Sage
+SB: 2 [M15:117] Stain the Mind
+SB: 3 [THS:188] Ashiok, Nightmare Weaver
+SB: 1 [FRF:56] Torrent Elemental
+SB: 2 [BNG:65] Drown in Sorrow
+SB: 3 [THS:107] Thoughtseize
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Sultai Whip TDtB ST Jan 2015.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Sultai Whip TDtB ST Jan 2015.mwDeck.dck
new file mode 100644
index 0000000000..a12c68806d
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Sultai Whip TDtB ST Jan 2015.mwDeck.dck
@@ -0,0 +1,35 @@
+1 [THS:226] Temple of Mystery
+3 [UNH:140] Forest
+2 [JOU:165] Temple of Malady
+2 [JOU:66] Doomwake Giant
+3 [THS:107] Thoughtseize
+4 [M15:198] Satyr Wayfinder
+4 [M15:244] Llanowar Wastes
+1 [M15:248] Urborg, Tomb of Yawgmoth
+2 [M15:249] Yavimaya Coast
+1 [UNH:137] Island
+4 [THS:180] Sylvan Caryatid
+2 [UNH:138] Swamp
+3 [THS:110] Whip of Erebos
+1 [JOU:154] Pharika, God of Affliction
+2 [KTK:239] Polluted Delta
+4 [KTK:238] Opulent Palace
+1 [C14:213] Reclamation Sage
+2 [M15:178] Hornet Queen
+4 [KTK:199] Sidisi, Brood Tyrant
+4 [BNG:119] Courser of Kruphix
+4 [KTK:81] Murderous Cut
+1 [M15:115] Soul of Innistrad
+1 [C14:295] Evolving Wilds
+3 [THS:90] Hero's Downfall
+1 [JOU:163] Mana Confluence
+SB: 3 [BNG:61] Bile Blight
+SB: 1 [C14:213] Reclamation Sage
+SB: 1 [C14:158] Read the Bones
+SB: 1 [M15:115] Soul of Innistrad
+SB: 2 [THS:188] Ashiok, Nightmare Weaver
+SB: 1 [BNG:149] Kiora, the Crashing Wave
+SB: 1 [BNG:65] Drown in Sorrow
+SB: 1 [THS:107] Thoughtseize
+SB: 2 [KTK:37] Disdainful Stroke
+SB: 2 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Tempered Steel TDtB ST Aug 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Tempered Steel TDtB ST Aug 2011.mwDeck.dck
new file mode 100644
index 0000000000..1df40b7a50
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Tempered Steel TDtB ST Aug 2011.mwDeck.dck
@@ -0,0 +1,20 @@
+4 [SOM:174] Memnite
+4 [SOM:24] Tempered Steel
+2 [SOM:10] Glint Hawk
+4 [M11:214] Steel Overseer
+2 [NPH:159] Spellskite
+4 [M15:223] Ornithopter
+4 [NPH:76] Vault Skirge
+4 [NPH:7] Dispatch
+4 [MBS:145] Inkmoth Nexus
+4 [MBS:131] Signal Pest
+12 [UNH:136] Plains
+4 [SOM:179] Mox Opal
+2 [MBS:144] Contested War Zone
+6 [SOM:156] Glint Hawk Idol
+SB: 2 [WWK:17] Refraction Trap
+SB: 3 [NPH:78] Act of Aggression
+SB: 4 [WWK:11] Kor Firewalker
+SB: 3 [NPH:155] Shrine of Loyal Legions
+SB: 3 [NPH:159] Spellskite
+SB: 1 [M12:40] Timely Reinforcements
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Tempered Steel TDtB ST Dec 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Tempered Steel TDtB ST Dec 2011.mwDeck.dck
new file mode 100644
index 0000000000..808ce67d00
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Tempered Steel TDtB ST Dec 2011.mwDeck.dck
@@ -0,0 +1,23 @@
+2 [SOM:154] Etched Champion
+4 [SOM:174] Memnite
+4 [SOM:24] Tempered Steel
+3 [NPH:155] Shrine of Loyal Legions
+2 [NPH:159] Spellskite
+4 [NPH:76] Vault Skirge
+4 [NPH:7] Dispatch
+1 [NPH:57] Dismember
+4 [MBS:145] Inkmoth Nexus
+4 [MBS:131] Signal Pest
+17 [UNH:136] Plains
+3 [SOM:179] Mox Opal
+4 [MBS:8] Hero of Bladehold
+4 [SOM:156] Glint Hawk Idol
+SB: 1 [SOM:154] Etched Champion
+SB: 1 [M12:16] Gideon Jura
+SB: 2 [NPH:57] Dismember
+SB: 2 [BNG:25] Revoke Existence
+SB: 1 [NPH:155] Shrine of Loyal Legions
+SB: 1 [M12:11] Celestial Purge
+SB: 3 [M13:22] Oblivion Ring
+SB: 1 [NPH:159] Spellskite
+SB: 3 [M12:40] Timely Reinforcements
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Tempered Steel TDtB ST Jan 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Tempered Steel TDtB ST Jan 2012.mwDeck.dck
new file mode 100644
index 0000000000..808ce67d00
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Tempered Steel TDtB ST Jan 2012.mwDeck.dck
@@ -0,0 +1,23 @@
+2 [SOM:154] Etched Champion
+4 [SOM:174] Memnite
+4 [SOM:24] Tempered Steel
+3 [NPH:155] Shrine of Loyal Legions
+2 [NPH:159] Spellskite
+4 [NPH:76] Vault Skirge
+4 [NPH:7] Dispatch
+1 [NPH:57] Dismember
+4 [MBS:145] Inkmoth Nexus
+4 [MBS:131] Signal Pest
+17 [UNH:136] Plains
+3 [SOM:179] Mox Opal
+4 [MBS:8] Hero of Bladehold
+4 [SOM:156] Glint Hawk Idol
+SB: 1 [SOM:154] Etched Champion
+SB: 1 [M12:16] Gideon Jura
+SB: 2 [NPH:57] Dismember
+SB: 2 [BNG:25] Revoke Existence
+SB: 1 [NPH:155] Shrine of Loyal Legions
+SB: 1 [M12:11] Celestial Purge
+SB: 3 [M13:22] Oblivion Ring
+SB: 1 [NPH:159] Spellskite
+SB: 3 [M12:40] Timely Reinforcements
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Tempered Steel TDtB ST Jul 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Tempered Steel TDtB ST Jul 2011.mwDeck.dck
new file mode 100644
index 0000000000..1b8217208c
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Tempered Steel TDtB ST Jul 2011.mwDeck.dck
@@ -0,0 +1,19 @@
+4 [SOM:174] Memnite
+4 [SOM:24] Tempered Steel
+3 [SOM:10] Glint Hawk
+4 [M11:214] Steel Overseer
+4 [M15:223] Ornithopter
+4 [NPH:76] Vault Skirge
+4 [NPH:7] Dispatch
+4 [MBS:145] Inkmoth Nexus
+4 [MBS:131] Signal Pest
+11 [UNH:136] Plains
+4 [SOM:179] Mox Opal
+3 [MBS:144] Contested War Zone
+3 [NPH:19] Porcelain Legionnaire
+4 [SOM:156] Glint Hawk Idol
+SB: 4 [WWK:11] Kor Firewalker
+SB: 4 [NPH:155] Shrine of Loyal Legions
+SB: 2 [M12:11] Celestial Purge
+SB: 2 [NPH:38] Mental Misstep
+SB: 3 [NPH:159] Spellskite
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Tempered Steel TDtB ST May 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Tempered Steel TDtB ST May 2011.mwDeck.dck
new file mode 100644
index 0000000000..ec8cd22160
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Tempered Steel TDtB ST May 2011.mwDeck.dck
@@ -0,0 +1,19 @@
+4 [SOM:174] Memnite
+4 [SOM:24] Tempered Steel
+4 [M11:214] Steel Overseer
+4 [NPH:137] Hex Parasite
+4 [M15:223] Ornithopter
+2 [M15:225] Phyrexian Revoker
+4 [NPH:76] Vault Skirge
+4 [MBS:145] Inkmoth Nexus
+4 [MBS:131] Signal Pest
+16 [UNH:136] Plains
+3 [SOM:179] Mox Opal
+3 [NPH:19] Porcelain Legionnaire
+4 [SOM:156] Glint Hawk Idol
+SB: 2 [MBS:10] Leonin Relic-Warder
+SB: 2 [M15:225] Phyrexian Revoker
+SB: 3 [CMD:17] Journey to Nowhere
+SB: 2 [NPH:162] Torpor Orb
+SB: 3 [SOM:218] Tumble Magnet
+SB: 3 [WWK:11] Kor Firewalker
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Tempered Steel TDtB ST Nov 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Tempered Steel TDtB ST Nov 2011.mwDeck.dck
new file mode 100644
index 0000000000..b17674026f
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Tempered Steel TDtB ST Nov 2011.mwDeck.dck
@@ -0,0 +1,22 @@
+4 [SOM:154] Etched Champion
+4 [SOM:174] Memnite
+4 [SOM:24] Tempered Steel
+4 [SOM:10] Glint Hawk
+1 [ISD:23] Mikaeus, the Lunarch
+4 [NPH:76] Vault Skirge
+4 [NPH:7] Dispatch
+4 [SOM:229] Seachrome Coast
+4 [MBS:145] Inkmoth Nexus
+2 [ISD:244] Moorland Haunt
+4 [MBS:131] Signal Pest
+9 [UNH:136] Plains
+4 [SOM:179] Mox Opal
+4 [SOM:156] Glint Hawk Idol
+4 [SOM:189] Origin Spellbomb
+SB: 2 [NPH:57] Dismember
+SB: 4 [NPH:155] Shrine of Loyal Legions
+SB: 1 [M13:225] Glacial Fortress
+SB: 1 [M13:22] Oblivion Ring
+SB: 3 [NPH:159] Spellskite
+SB: 3 [MBS:8] Hero of Bladehold
+SB: 1 [M12:40] Timely Reinforcements
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Tempered Steel TDtB ST Oct 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Tempered Steel TDtB ST Oct 2011.mwDeck.dck
new file mode 100644
index 0000000000..cf344f97f0
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Tempered Steel TDtB ST Oct 2011.mwDeck.dck
@@ -0,0 +1,21 @@
+4 [SOM:174] Memnite
+4 [SOM:24] Tempered Steel
+3 [NPH:155] Shrine of Loyal Legions
+1 [NPH:159] Spellskite
+4 [NPH:76] Vault Skirge
+4 [NPH:7] Dispatch
+2 [NPH:45] Spined Thopter
+4 [MBS:145] Inkmoth Nexus
+2 [M13:22] Oblivion Ring
+4 [MBS:131] Signal Pest
+17 [UNH:136] Plains
+3 [SOM:179] Mox Opal
+4 [MBS:8] Hero of Bladehold
+4 [SOM:156] Glint Hawk Idol
+SB: 2 [ISD:23] Mikaeus, the Lunarch
+SB: 1 [M12:16] Gideon Jura
+SB: 2 [NPH:57] Dismember
+SB: 2 [BNG:25] Revoke Existence
+SB: 4 [M12:11] Celestial Purge
+SB: 1 [M13:22] Oblivion Ring
+SB: 3 [NPH:159] Spellskite
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Tempered Steel TDtB ST Sep 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Tempered Steel TDtB ST Sep 2011.mwDeck.dck
new file mode 100644
index 0000000000..28535e70f7
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Tempered Steel TDtB ST Sep 2011.mwDeck.dck
@@ -0,0 +1,19 @@
+4 [SOM:174] Memnite
+4 [SOM:24] Tempered Steel
+2 [SOM:10] Glint Hawk
+4 [M11:214] Steel Overseer
+4 [M15:223] Ornithopter
+4 [NPH:76] Vault Skirge
+4 [NPH:7] Dispatch
+4 [MBS:145] Inkmoth Nexus
+4 [MBS:131] Signal Pest
+11 [UNH:136] Plains
+4 [SOM:179] Mox Opal
+3 [MBS:144] Contested War Zone
+3 [NPH:19] Porcelain Legionnaire
+5 [SOM:156] Glint Hawk Idol
+SB: 2 [WWK:17] Refraction Trap
+SB: 4 [WWK:11] Kor Firewalker
+SB: 4 [NPH:155] Shrine of Loyal Legions
+SB: 2 [UNH:136] Plains
+SB: 3 [NPH:159] Spellskite
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Temur Aggro TDtB ST Dec 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Temur Aggro TDtB ST Dec 2014.mwDeck.dck
new file mode 100644
index 0000000000..6fb5b07ee9
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Temur Aggro TDtB ST Dec 2014.mwDeck.dck
@@ -0,0 +1,31 @@
+1 [THS:224] Temple of Abandon
+4 [THS:143] Stormbreath Dragon
+3 [UNH:140] Forest
+2 [KTK:208] Temur Charm
+4 [KTK:249] Wooded Foothills
+2 [KTK:56] Stubborn Denial
+2 [KTK:106] Crater's Claws
+4 [KTK:234] Frontier Bivouac
+2 [UNH:139] Mountain
+3 [M15:155] Lightning Strike
+4 [M15:145] Goblin Rabblemaster
+4 [KTK:144] Rattleclaw Mystic
+1 [M15:246] Shivan Reef
+4 [KTK:197] Savage Knuckleblade
+4 [M15:249] Yavimaya Coast
+2 [JOU:164] Temple of Epiphany
+3 [JOU:163] Mana Confluence
+4 [THS:172] Polukranos, World Eater
+3 [THS:152] Boon Satyr
+4 [C14:191] Elvish Mystic
+SB: 2 [KTK:196] Sagu Mauler
+SB: 1 [M15:135] Circle of Flame
+SB: 1 [M15:169] Back to Nature
+SB: 1 [KTK:208] Temur Charm
+SB: 2 [THS:112] Anger of the Gods
+SB: 1 [KTK:42] Icy Blast
+SB: 1 [BNG:143] Unravel the AEther
+SB: 1 [JOU:140] Setessan Tactics
+SB: 2 [M15:75] Polymorphist's Jest
+SB: 2 [KTK:37] Disdainful Stroke
+SB: 1 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Temur Aggro TDtB ST Nov 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Temur Aggro TDtB ST Nov 2014.mwDeck.dck
new file mode 100644
index 0000000000..55154046e5
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Temur Aggro TDtB ST Nov 2014.mwDeck.dck
@@ -0,0 +1,29 @@
+1 [THS:226] Temple of Mystery
+3 [UNH:140] Forest
+2 [KTK:208] Temur Charm
+1 [KTK:119] Sarkhan, the Dragonspeaker
+4 [KTK:99] Ashcloud Phoenix
+4 [KTK:249] Wooded Foothills
+4 [KTK:106] Crater's Claws
+4 [KTK:134] Heir of the Wilds
+4 [KTK:234] Frontier Bivouac
+2 [UNH:139] Mountain
+3 [M15:155] Lightning Strike
+4 [KTK:144] Rattleclaw Mystic
+1 [M15:246] Shivan Reef
+4 [KTK:197] Savage Knuckleblade
+4 [M15:249] Yavimaya Coast
+2 [JOU:164] Temple of Epiphany
+3 [JOU:163] Mana Confluence
+3 [THS:172] Polukranos, World Eater
+4 [THS:152] Boon Satyr
+3 [C14:191] Elvish Mystic
+SB: 1 [M15:155] Lightning Strike
+SB: 1 [KTK:100] Barrage of Boulders
+SB: 3 [THS:159] Hunt the Hunter
+SB: 2 [JOU:103] Magma Spray
+SB: 1 [M15:169] Back to Nature
+SB: 1 [KTK:208] Temur Charm
+SB: 1 [KTK:97] Arc Lightning
+SB: 3 [KTK:56] Stubborn Denial
+SB: 2 [KTK:37] Disdainful Stroke
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Thalia WW TDtB ST Feb 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Thalia WW TDtB ST Feb 2012.mwDeck.dck
new file mode 100644
index 0000000000..da61f5d518
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Thalia WW TDtB ST Feb 2012.mwDeck.dck
@@ -0,0 +1,28 @@
+3 [MBS:10] Leonin Relic-Warder
+2 [C13:11] Fiend Hunter
+2 [NPH:161] Sword of War and Peace
+1 [M12:3] Angelic Destiny
+4 [M13:225] Glacial Fortress
+4 [SOM:229] Seachrome Coast
+3 [ISD:244] Moorland Haunt
+2 [M13:22] Oblivion Ring
+4 [M12:23] Honor of the Pure
+12 [UNH:136] Plains
+3 [MBS:14] Mirran Crusader
+3 [DKA:24] Thalia, Guardian of Thraben
+1 [UNH:137] Island
+4 [ISD:6] Champion of the Parish
+4 [MBS:8] Hero of Bladehold
+4 [DKA:8] Gather the Townsfolk
+4 [CNS:69] Doomed Traveler
+SB: 1 [MBS:10] Leonin Relic-Warder
+SB: 1 [C13:11] Fiend Hunter
+SB: 2 [MBS:5] Divine Offering
+SB: 1 [NPH:161] Sword of War and Peace
+SB: 1 [M12:3] Angelic Destiny
+SB: 1 [NPH:57] Dismember
+SB: 2 [ISD:213] Geist of Saint Traft
+SB: 1 [M13:22] Oblivion Ring
+SB: 2 [M12:12] Day of Judgment
+SB: 1 [MBS:14] Mirran Crusader
+SB: 2 [M12:63] Mana Leak
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/The Aristocrats TDtB ST Feb 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/The Aristocrats TDtB ST Feb 2013.mwDeck.dck
new file mode 100644
index 0000000000..f9763f12f5
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/The Aristocrats TDtB ST Feb 2013.mwDeck.dck
@@ -0,0 +1,28 @@
+1 [AVR:32] Restoration Angel
+2 [C14:88] Silverblade Paladin
+4 [GTC:215] Boros Reckoner
+4 [GTC:150] Cartel Aristocrat
+1 [DKA:158] Vault of the Archangel
+4 [RTR:238] Blood Crypt
+4 [DKA:138] Falkenrath Aristocrat
+3 [AVR:226] Cavern of Souls
+4 [ISD:242] Isolated Chapel
+2 [C14:163] Skirsdag High Priest
+2 [AVR:166] Zealous Conscripts
+3 [M13:96] Knight of Infamy
+4 [GTC:245] Sacred Foundry
+2 [DKA:12] Lingering Souls
+3 [UNH:136] Plains
+4 [GTC:242] Godless Shrine
+1 [ISD:238] Clifftop Retreat
+4 [ISD:6] Champion of the Parish
+4 [GTC:185] Orzhov Charm
+4 [CNS:69] Doomed Traveler
+SB: 2 [GTC:182] Obzedat, Ghost Council
+SB: 3 [C14:167] Tragic Slip
+SB: 1 [C14:163] Skirsdag High Priest
+SB: 2 [C14:172] Blasphemous Act
+SB: 2 [DKA:12] Lingering Souls
+SB: 2 [RTR:18] Rest in Peace
+SB: 2 [DKA:142] Sorin, Lord of Innistrad
+SB: 1 [C14:79] Mentor of the Meek
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/The Aristocrats TDtB ST Mar 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/The Aristocrats TDtB ST Mar 2013.mwDeck.dck
new file mode 100644
index 0000000000..f9763f12f5
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/The Aristocrats TDtB ST Mar 2013.mwDeck.dck
@@ -0,0 +1,28 @@
+1 [AVR:32] Restoration Angel
+2 [C14:88] Silverblade Paladin
+4 [GTC:215] Boros Reckoner
+4 [GTC:150] Cartel Aristocrat
+1 [DKA:158] Vault of the Archangel
+4 [RTR:238] Blood Crypt
+4 [DKA:138] Falkenrath Aristocrat
+3 [AVR:226] Cavern of Souls
+4 [ISD:242] Isolated Chapel
+2 [C14:163] Skirsdag High Priest
+2 [AVR:166] Zealous Conscripts
+3 [M13:96] Knight of Infamy
+4 [GTC:245] Sacred Foundry
+2 [DKA:12] Lingering Souls
+3 [UNH:136] Plains
+4 [GTC:242] Godless Shrine
+1 [ISD:238] Clifftop Retreat
+4 [ISD:6] Champion of the Parish
+4 [GTC:185] Orzhov Charm
+4 [CNS:69] Doomed Traveler
+SB: 2 [GTC:182] Obzedat, Ghost Council
+SB: 3 [C14:167] Tragic Slip
+SB: 1 [C14:163] Skirsdag High Priest
+SB: 2 [C14:172] Blasphemous Act
+SB: 2 [DKA:12] Lingering Souls
+SB: 2 [RTR:18] Rest in Peace
+SB: 2 [DKA:142] Sorin, Lord of Innistrad
+SB: 1 [C14:79] Mentor of the Meek
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Tokens TDtB ST Nov 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Tokens TDtB ST Nov 2012.mwDeck.dck
new file mode 100644
index 0000000000..ff5977a4fe
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Tokens TDtB ST Nov 2012.mwDeck.dck
@@ -0,0 +1,33 @@
+2 [RTR:82] Ultimate Price
+2 [M13:229] Sunpetal Grove
+4 [UNH:140] Forest
+1 [RTR:150] Collective Blessing
+2 [M13:174] Garruk, Primal Hunter
+1 [DKA:158] Vault of the Archangel
+4 [RTR:243] Overgrown Tomb
+3 [C13:211] Selesnya Charm
+3 [M13:160] Arbor Elf
+4 [ISD:170] Avacyn's Pilgrim
+4 [M13:193] Thragtusk
+1 [ISD:181] Garruk Relentless
+3 [ISD:242] Isolated Chapel
+4 [RTR:248] Temple Garden
+4 [CNS:72] Intangible Virtue
+1 [ISD:115] Sever the Bloodline
+3 [C14:80] Midnight Haunting
+4 [DKA:12] Lingering Souls
+3 [AVR:169] Borderland Ranger
+1 [UNH:136] Plains
+3 [ISD:239] Gavony Township
+2 [DKA:142] Sorin, Lord of Innistrad
+1 [UNH:138] Swamp
+SB: 1 [RTR:82] Ultimate Price
+SB: 1 [M13:174] Garruk, Primal Hunter
+SB: 2 [AVR:32] Restoration Angel
+SB: 1 [ISD:32] Slayer of the Wicked
+SB: 1 [ISD:181] Garruk Relentless
+SB: 3 [RTR:148] Centaur Healer
+SB: 1 [ISD:115] Sever the Bloodline
+SB: 1 [AVR:210] Sigarda, Host of Herons
+SB: 1 [M13:20] Intrepid Hero
+SB: 3 [RTR:18] Rest in Peace
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Torpor Tezz TDtB ST Jun 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Torpor Tezz TDtB ST Jun 2011.mwDeck.dck
new file mode 100644
index 0000000000..2c0a5ad0d1
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Torpor Tezz TDtB ST Jun 2011.mwDeck.dck
@@ -0,0 +1,30 @@
+3 [MBS:97] Tezzeret, Agent of Bolas
+2 [M11:58] Jace Beleren
+4 [WWK:134] Creeping Tar Pit
+4 [NPH:162] Torpor Orb
+4 [M13:223] Drowned Catacomb
+3 [ROE:115] Inquisition of Kozilek
+4 [C14:239] Everflowing Chalice
+2 [KTK:69] Despise
+1 [ROE:100] Consume the Meek
+3 [C14:313] Tectonic Edge
+1 [C14:136] Black Sun's Zenith
+4 [M11:70] Preordain
+2 [ZEN:87] Disfigure
+3 [SOM:218] Tumble Magnet
+1 [C14:283] Wurmcoil Engine
+2 [MBS:145] Inkmoth Nexus
+2 [M14:96] Doom Blade
+4 [SOM:226] Darkslick Shores
+2 [WWK:31] Jace, the Mind Sculptor
+4 [UNH:137] Island
+3 [UNH:138] Swamp
+2 [M12:63] Mana Leak
+SB: 1 [C14:136] Black Sun's Zenith
+SB: 2 [C14:145] Grave Titan
+SB: 2 [M11:58] Jace Beleren
+SB: 2 [ZEN:87] Disfigure
+SB: 1 [ROE:115] Inquisition of Kozilek
+SB: 1 [ROE:100] Consume the Meek
+SB: 4 [M12:52] Flashfreeze
+SB: 2 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Trinket UB Control TDtB ST Dec 2010.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Trinket UB Control TDtB ST Dec 2010.mwDeck.dck
new file mode 100644
index 0000000000..c856bb28ad
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Trinket UB Control TDtB ST Dec 2010.mwDeck.dck
@@ -0,0 +1,32 @@
+1 [SOM:69] Memoricide
+3 [SOM:48] Trinket Mage
+2 [M11:58] Jace Beleren
+4 [WWK:134] Creeping Tar Pit
+1 [SOM:46] Stoic Rebuttal
+2 [ZEN:220] Misty Rainforest
+1 [M11:202] Brittle Effigy
+4 [M13:223] Drowned Catacomb
+1 [ROE:101] Consuming Vapors
+2 [C14:239] Everflowing Chalice
+1 [ROE:100] Consume the Meek
+3 [C14:313] Tectonic Edge
+2 [C14:115] Into the Roil
+1 [ZEN:229] Verdant Catacombs
+4 [M11:70] Preordain
+3 [C14:112] Frost Titan
+4 [M14:96] Doom Blade
+2 [SOM:226] Darkslick Shores
+4 [WWK:31] Jace, the Mind Sculptor
+1 [M14:209] Elixir of Immortality
+6 [UNH:137] Island
+3 [UNH:138] Swamp
+1 [M15:71] Negate
+4 [M12:63] Mana Leak
+SB: 2 [ZEN:67] Spell Pierce
+SB: 2 [SOM:69] Memoricide
+SB: 1 [M11:58] Jace Beleren
+SB: 4 [ZEN:87] Disfigure
+SB: 1 [RTR:36] Dispel
+SB: 1 [C13:249] Nihil Spellbomb
+SB: 2 [M15:71] Negate
+SB: 2 [M12:52] Flashfreeze
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/UB Control TDtB ST Apr 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/UB Control TDtB ST Apr 2011.mwDeck.dck
new file mode 100644
index 0000000000..bbaf0fbdc6
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/UB Control TDtB ST Apr 2011.mwDeck.dck
@@ -0,0 +1,32 @@
+3 [MBS:43] Go for the Throat
+1 [M11:58] Jace Beleren
+4 [WWK:134] Creeping Tar Pit
+1 [SOM:46] Stoic Rebuttal
+2 [ZEN:70] Spreading Seas
+4 [M13:223] Drowned Catacomb
+3 [ROE:115] Inquisition of Kozilek
+4 [C14:313] Tectonic Edge
+2 [C14:115] Into the Roil
+2 [C14:136] Black Sun's Zenith
+4 [M11:70] Preordain
+1 [ZEN:219] Marsh Flats
+3 [C14:145] Grave Titan
+1 [M15:103] Liliana Vess
+1 [ZEN:223] Scalding Tarn
+2 [SOM:218] Tumble Magnet
+1 [C14:283] Wurmcoil Engine
+4 [SOM:226] Darkslick Shores
+2 [M14:97] Duress
+4 [WWK:31] Jace, the Mind Sculptor
+5 [UNH:137] Island
+3 [UNH:138] Swamp
+4 [M12:63] Mana Leak
+SB: 1 [SOM:175] Mimic Vat
+SB: 2 [SOM:69] Memoricide
+SB: 1 [M11:58] Jace Beleren
+SB: 2 [SOM:194] Precursor Golem
+SB: 1 [SOM:46] Stoic Rebuttal
+SB: 3 [ZEN:87] Disfigure
+SB: 2 [M14:215] Ratchet Bomb
+SB: 1 [M14:96] Doom Blade
+SB: 2 [M12:52] Flashfreeze
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/UB Control TDtB ST Aug 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/UB Control TDtB ST Aug 2011.mwDeck.dck
new file mode 100644
index 0000000000..b9acd187fc
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/UB Control TDtB ST Aug 2011.mwDeck.dck
@@ -0,0 +1,34 @@
+1 [MBS:43] Go for the Throat
+2 [MBS:21] Consecrated Sphinx
+4 [M11:58] Jace Beleren
+4 [WWK:134] Creeping Tar Pit
+1 [M11:226] Mystifying Maze
+4 [M13:223] Drowned Catacomb
+4 [ROE:115] Inquisition of Kozilek
+1 [KTK:69] Despise
+1 [ROE:100] Consume the Meek
+1 [NPH:1] Karn Liberated
+4 [C14:313] Tectonic Edge
+1 [C14:115] Into the Roil
+1 [C14:136] Black Sun's Zenith
+4 [M11:70] Preordain
+2 [C14:145] Grave Titan
+1 [M15:103] Liliana Vess
+1 [NPH:57] Dismember
+3 [C14:271] Solemn Simulacrum
+3 [M14:96] Doom Blade
+4 [SOM:226] Darkslick Shores
+4 [UNH:137] Island
+5 [UNH:138] Swamp
+4 [M12:63] Mana Leak
+SB: 1 [NPH:71] Praetor's Grasp
+SB: 1 [C14:136] Black Sun's Zenith
+SB: 1 [SOM:69] Memoricide
+SB: 1 [NPH:74] Surgical Extraction
+SB: 2 [ZEN:87] Disfigure
+SB: 1 [C14:283] Wurmcoil Engine
+SB: 1 [SOM:53] Volition Reins
+SB: 2 [M14:97] Duress
+SB: 1 [KTK:69] Despise
+SB: 1 [CNS:201] Peace Strider
+SB: 3 [M12:52] Flashfreeze
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/UB Control TDtB ST Feb 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/UB Control TDtB ST Feb 2011.mwDeck.dck
new file mode 100644
index 0000000000..d2fafcbdcd
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/UB Control TDtB ST Feb 2011.mwDeck.dck
@@ -0,0 +1,32 @@
+1 [MBS:43] Go for the Throat
+2 [M11:58] Jace Beleren
+4 [WWK:134] Creeping Tar Pit
+2 [SOM:46] Stoic Rebuttal
+4 [ZEN:70] Spreading Seas
+1 [ZEN:220] Misty Rainforest
+4 [M13:223] Drowned Catacomb
+4 [ROE:115] Inquisition of Kozilek
+4 [C14:313] Tectonic Edge
+2 [C14:136] Black Sun's Zenith
+1 [ZEN:229] Verdant Catacombs
+4 [M11:70] Preordain
+3 [C14:145] Grave Titan
+2 [M14:215] Ratchet Bomb
+2 [ZEN:87] Disfigure
+1 [M14:96] Doom Blade
+4 [SOM:226] Darkslick Shores
+3 [WWK:31] Jace, the Mind Sculptor
+5 [UNH:137] Island
+3 [UNH:138] Swamp
+4 [M12:63] Mana Leak
+SB: 1 [ZEN:67] Spell Pierce
+SB: 1 [C14:136] Black Sun's Zenith
+SB: 1 [MBS:43] Go for the Throat
+SB: 2 [SOM:69] Memoricide
+SB: 1 [M11:58] Jace Beleren
+SB: 2 [SOM:194] Precursor Golem
+SB: 1 [ROE:59] Deprive
+SB: 2 [M14:215] Ratchet Bomb
+SB: 1 [M14:97] Duress
+SB: 1 [WWK:31] Jace, the Mind Sculptor
+SB: 2 [M12:52] Flashfreeze
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/UB Control TDtB ST Feb 2015.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/UB Control TDtB ST Feb 2015.mwDeck.dck
new file mode 100644
index 0000000000..4691909f7e
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/UB Control TDtB ST Feb 2015.mwDeck.dck
@@ -0,0 +1,29 @@
+4 [THS:225] Temple of Deceit
+4 [THS:47] Dissolve
+2 [THS:188] Ashiok, Nightmare Weaver
+4 [KTK:239] Polluted Delta
+4 [KTK:36] Dig Through Time
+1 [KTK:233] Flooded Strand
+4 [FRF:168] Dismal Backwater
+4 [KTK:37] Disdainful Stroke
+1 [KTK:49] Pearl Lake Ancient
+4 [BNG:61] Bile Blight
+3 [M15:245] Radiant Fountain
+1 [KTK:230] Bloodstained Mire
+1 [M15:224] Perilous Vault
+1 [M15:248] Urborg, Tomb of Yawgmoth
+2 [FRF:1] Ugin, the Spirit Dragon
+4 [THS:90] Hero's Downfall
+2 [FRF:65] Crux of Fate
+3 [M15:63] Jace's Ingenuity
+1 [JOU:82] Silence the Believers
+5 [UNH:137] Island
+5 [UNH:138] Swamp
+SB: 1 [M15:224] Perilous Vault
+SB: 1 [KTK:81] Murderous Cut
+SB: 1 [THS:188] Ashiok, Nightmare Weaver
+SB: 1 [FRF:65] Crux of Fate
+SB: 2 [FRF:87] Tasigur, the Golden Fang
+SB: 3 [BNG:65] Drown in Sorrow
+SB: 4 [THS:107] Thoughtseize
+SB: 2 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/UB Control TDtB ST Mar 2015.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/UB Control TDtB ST Mar 2015.mwDeck.dck
new file mode 100644
index 0000000000..a538bd2a69
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/UB Control TDtB ST Mar 2015.mwDeck.dck
@@ -0,0 +1,31 @@
+4 [THS:225] Temple of Deceit
+4 [THS:47] Dissolve
+2 [THS:188] Ashiok, Nightmare Weaver
+4 [KTK:239] Polluted Delta
+1 [KTK:238] Opulent Palace
+4 [KTK:36] Dig Through Time
+1 [KTK:233] Flooded Strand
+4 [FRF:168] Dismal Backwater
+2 [KTK:37] Disdainful Stroke
+1 [KTK:49] Pearl Lake Ancient
+4 [BNG:61] Bile Blight
+3 [M15:245] Radiant Fountain
+1 [KTK:230] Bloodstained Mire
+1 [M15:224] Perilous Vault
+1 [M15:248] Urborg, Tomb of Yawgmoth
+2 [FRF:1] Ugin, the Spirit Dragon
+4 [THS:90] Hero's Downfall
+2 [FRF:65] Crux of Fate
+3 [M15:63] Jace's Ingenuity
+1 [JOU:82] Silence the Believers
+5 [UNH:137] Island
+4 [UNH:138] Swamp
+2 [DTK:65] Negate
+SB: 2 [M15:224] Perilous Vault
+SB: 1 [M15:225] Phyrexian Revoker
+SB: 1 [THS:188] Ashiok, Nightmare Weaver
+SB: 1 [THS:100] Pharika's Cure
+SB: 2 [FRF:87] Tasigur, the Golden Fang
+SB: 3 [BNG:65] Drown in Sorrow
+SB: 4 [THS:107] Thoughtseize
+SB: 1 [KTK:37] Disdainful Stroke
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/UB Control TDtB ST Oct 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/UB Control TDtB ST Oct 2011.mwDeck.dck
new file mode 100644
index 0000000000..91cf13cbe9
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/UB Control TDtB ST Oct 2011.mwDeck.dck
@@ -0,0 +1,27 @@
+3 [MBS:21] Consecrated Sphinx
+4 [M13:223] Drowned Catacomb
+4 [ISD:78] Snapcaster Mage
+1 [NPH:61] Geth's Verdict
+2 [M14:122] Wring Flesh
+3 [ISD:55] Forbidden Alchemy
+1 [C14:136] Black Sun's Zenith
+1 [C14:145] Grave Titan
+2 [C14:298] Ghost Quarter
+1 [C14:283] Wurmcoil Engine
+4 [M15:51] Dissipate
+4 [M14:96] Doom Blade
+2 [ISD:245] Nephalia Drownyard
+4 [SOM:226] Darkslick Shores
+9 [UNH:137] Island
+4 [ISD:83] Think Twice
+6 [UNH:138] Swamp
+1 [M15:71] Negate
+4 [M12:63] Mana Leak
+SB: 1 [M14:122] Wring Flesh
+SB: 1 [C14:136] Black Sun's Zenith
+SB: 3 [M14:215] Ratchet Bomb
+SB: 2 [ISD:245] Nephalia Drownyard
+SB: 1 [C13:249] Nihil Spellbomb
+SB: 3 [M12:72] Phantasmal Image
+SB: 3 [NPH:159] Spellskite
+SB: 1 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/UB Control TDtB ST Sep 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/UB Control TDtB ST Sep 2011.mwDeck.dck
new file mode 100644
index 0000000000..bc1d20fa5a
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/UB Control TDtB ST Sep 2011.mwDeck.dck
@@ -0,0 +1,30 @@
+2 [MBS:21] Consecrated Sphinx
+3 [MBS:43] Go for the Throat
+4 [M11:58] Jace Beleren
+4 [WWK:134] Creeping Tar Pit
+4 [M13:223] Drowned Catacomb
+4 [ROE:115] Inquisition of Kozilek
+1 [KTK:69] Despise
+1 [NPH:1] Karn Liberated
+4 [C14:313] Tectonic Edge
+2 [C14:115] Into the Roil
+1 [C14:136] Black Sun's Zenith
+4 [M11:70] Preordain
+2 [C14:145] Grave Titan
+1 [M15:103] Liliana Vess
+1 [NPH:74] Surgical Extraction
+3 [C14:271] Solemn Simulacrum
+1 [M14:96] Doom Blade
+4 [SOM:226] Darkslick Shores
+5 [UNH:137] Island
+5 [UNH:138] Swamp
+4 [M12:63] Mana Leak
+SB: 1 [SOM:69] Memoricide
+SB: 1 [NPH:74] Surgical Extraction
+SB: 2 [NPH:162] Torpor Orb
+SB: 1 [ZEN:87] Disfigure
+SB: 2 [M14:215] Ratchet Bomb
+SB: 1 [C14:283] Wurmcoil Engine
+SB: 4 [ZEN:83] Bloodghast
+SB: 1 [M14:97] Duress
+SB: 2 [M12:52] Flashfreeze
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/UB Infect TDtB ST Apr 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/UB Infect TDtB ST Apr 2011.mwDeck.dck
new file mode 100644
index 0000000000..4d4729b550
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/UB Infect TDtB ST Apr 2011.mwDeck.dck
@@ -0,0 +1,25 @@
+4 [SOM:185] Necropede
+2 [M11:58] Jace Beleren
+1 [ROE:59] Deprive
+4 [WWK:134] Creeping Tar Pit
+2 [SOM:79] Skithiryx, the Blight Dragon
+4 [MBS:50] Phyrexian Crusader
+4 [M13:223] Drowned Catacomb
+4 [ROE:115] Inquisition of Kozilek
+1 [C14:115] Into the Roil
+4 [M11:70] Preordain
+4 [SOM:218] Tumble Magnet
+4 [MBS:145] Inkmoth Nexus
+4 [SOM:226] Darkslick Shores
+4 [UNH:137] Island
+6 [UNH:138] Swamp
+4 [SOM:144] Contagion Clasp
+4 [M12:63] Mana Leak
+SB: 1 [C14:115] Into the Roil
+SB: 1 [MBS:43] Go for the Throat
+SB: 1 [M11:58] Jace Beleren
+SB: 3 [ZEN:87] Disfigure
+SB: 3 [MBS:52] Phyrexian Vatmother
+SB: 2 [M14:96] Doom Blade
+SB: 2 [M14:97] Duress
+SB: 2 [M12:52] Flashfreeze
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/UB Zombi TDtB ST Feb 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/UB Zombi TDtB ST Feb 2012.mwDeck.dck
new file mode 100644
index 0000000000..957df3909a
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/UB Zombi TDtB ST Feb 2012.mwDeck.dck
@@ -0,0 +1,18 @@
+4 [M13:223] Drowned Catacomb
+4 [DKA:135] Diregraf Captain
+4 [NPH:61] Geth's Verdict
+4 [ISD:97] Diregraf Ghoul
+4 [C14:167] Tragic Slip
+4 [DKA:63] Geralf's Messenger
+4 [C14:163] Skirsdag High Priest
+3 [SOM:63] Fume Spitter
+4 [DKA:64] Gravecrawler
+4 [SOM:226] Darkslick Shores
+3 [MBS:115] Mortarpod
+4 [M12:72] Phantasmal Image
+12 [UNH:138] Swamp
+2 [ISD:105] Liliana of the Veil
+SB: 4 [NPH:107] Corrosive Gale
+SB: 4 [NPH:74] Surgical Extraction
+SB: 4 [NPH:48] Vapor Snag
+SB: 3 [NPH:19] Porcelain Legionnaire
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/UG Fauna TDtB ST Dec 2010.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/UG Fauna TDtB ST Dec 2010.mwDeck.dck
new file mode 100644
index 0000000000..81b9bb3589
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/UG Fauna TDtB ST Dec 2010.mwDeck.dck
@@ -0,0 +1,24 @@
+6 [UNH:140] Forest
+3 [CMD:157] Garruk Wildspeaker
+4 [ZEN:220] Misty Rainforest
+2 [ROE:201] Nest Invader
+4 [M12:165] Birds of Paradise
+4 [ROE:212] Vengevine
+3 [C14:313] Tectonic Edge
+4 [M11:172] Fauna Shaman
+4 [ZEN:229] Verdant Catacombs
+3 [C14:124] Sea Gate Oracle
+3 [C14:112] Frost Titan
+2 [ZEN:223] Scalding Tarn
+4 [ZEN:168] Lotus Cobra
+3 [WWK:31] Jace, the Mind Sculptor
+6 [UNH:137] Island
+1 [SOM:177] Molten-Tail Masticore
+4 [M12:63] Mana Leak
+SB: 1 [C13:134] Acidic Slime
+SB: 2 [M13:67] Sleep
+SB: 4 [ZEN:70] Spreading Seas
+SB: 2 [SOM:53] Volition Reins
+SB: 3 [M11:188] Obstinate Baloth
+SB: 1 [ROE:211] Tajuru Preserver
+SB: 2 [M12:52] Flashfreeze
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/UR Exarch Twin TDtB ST Aug 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/UR Exarch Twin TDtB ST Aug 2011.mwDeck.dck
new file mode 100644
index 0000000000..6f82b89fc6
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/UR Exarch Twin TDtB ST Aug 2011.mwDeck.dck
@@ -0,0 +1,26 @@
+2 [WWK:137] Halimar Depths
+2 [ZEN:220] Misty Rainforest
+2 [ZEN:211] Arid Mesa
+4 [C13:37] Deceiver Exarch
+4 [NPH:156] Shrine of Piercing Vision
+4 [ROE:165] Splinter Twin
+5 [UNH:139] Mountain
+2 [C14:115] Into the Roil
+4 [M11:70] Preordain
+4 [ZEN:223] Scalding Tarn
+2 [NPH:57] Dismember
+4 [NPH:35] Gitaxian Probe
+4 [RTR:36] Dispel
+1 [SOM:50] Twisted Image
+2 [NPH:38] Mental Misstep
+8 [UNH:137] Island
+4 [M12:73] Ponder
+2 [M12:63] Mana Leak
+SB: 2 [NPH:116] Mutagenic Growth
+SB: 2 [C14:98] Azure Mage
+SB: 1 [KTK:120] Shatter
+SB: 1 [NPH:38] Mental Misstep
+SB: 3 [M12:145] Grim Lavamancer
+SB: 2 [NPH:159] Spellskite
+SB: 2 [M11:154] Pyroclasm
+SB: 2 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/UR ExarchTwin TDtB ST Jul 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/UR ExarchTwin TDtB ST Jul 2011.mwDeck.dck
new file mode 100644
index 0000000000..f338e415a7
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/UR ExarchTwin TDtB ST Jul 2011.mwDeck.dck
@@ -0,0 +1,24 @@
+2 [M11:58] Jace Beleren
+2 [WWK:137] Halimar Depths
+2 [NPH:159] Spellskite
+2 [C14:315] Terramorphic Expanse
+4 [C13:37] Deceiver Exarch
+3 [NPH:156] Shrine of Piercing Vision
+4 [ROE:165] Splinter Twin
+6 [UNH:139] Mountain
+3 [C14:115] Into the Roil
+4 [M11:70] Preordain
+4 [ZEN:223] Scalding Tarn
+4 [NPH:35] Gitaxian Probe
+3 [RTR:36] Dispel
+9 [UNH:137] Island
+4 [M12:73] Ponder
+4 [M12:63] Mana Leak
+SB: 1 [C14:115] Into the Roil
+SB: 2 [ZEN:67] Spell Pierce
+SB: 1 [M11:58] Jace Beleren
+SB: 1 [ROE:59] Deprive
+SB: 1 [MBS:61] Crush
+SB: 4 [NPH:38] Mental Misstep
+SB: 1 [NPH:159] Spellskite
+SB: 4 [M12:52] Flashfreeze
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/UR ExarchTwin TDtB ST Jun 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/UR ExarchTwin TDtB ST Jun 2011.mwDeck.dck
new file mode 100644
index 0000000000..0cc139005d
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/UR ExarchTwin TDtB ST Jun 2011.mwDeck.dck
@@ -0,0 +1,28 @@
+2 [M11:58] Jace Beleren
+4 [C13:37] Deceiver Exarch
+4 [ROE:165] Splinter Twin
+4 [C14:313] Tectonic Edge
+8 [UNH:139] Mountain
+1 [C13:114] Inferno Titan
+2 [ZEN:67] Spell Pierce
+3 [C14:115] Into the Roil
+1 [C14:124] Sea Gate Oracle
+4 [M11:70] Preordain
+4 [ZEN:223] Scalding Tarn
+1 [NPH:57] Dismember
+3 [NPH:35] Gitaxian Probe
+4 [WWK:31] Jace, the Mind Sculptor
+1 [NPH:38] Mental Misstep
+10 [UNH:137] Island
+4 [M12:63] Mana Leak
+SB: 1 [M12:151] Manic Vandal
+SB: 1 [MBS:21] Consecrated Sphinx
+SB: 1 [KTK:120] Shatter
+SB: 2 [M12:128] Combust
+SB: 1 [NPH:2] Apostle's Blessing
+SB: 1 [C14:283] Wurmcoil Engine
+SB: 1 [RTR:36] Dispel
+SB: 1 [M15:63] Jace's Ingenuity
+SB: 4 [M11:154] Pyroclasm
+SB: 1 [M15:71] Negate
+SB: 1 [NPH:1] Karn Liberated
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/UR ExarchTwin TDtB ST Sep 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/UR ExarchTwin TDtB ST Sep 2011.mwDeck.dck
new file mode 100644
index 0000000000..cb131d47bf
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/UR ExarchTwin TDtB ST Sep 2011.mwDeck.dck
@@ -0,0 +1,24 @@
+4 [WWK:137] Halimar Depths
+3 [ZEN:220] Misty Rainforest
+3 [ZEN:211] Arid Mesa
+3 [M12:145] Grim Lavamancer
+4 [C13:37] Deceiver Exarch
+4 [NPH:156] Shrine of Piercing Vision
+4 [ROE:165] Splinter Twin
+5 [UNH:139] Mountain
+2 [C14:115] Into the Roil
+2 [ZEN:67] Spell Pierce
+4 [M11:70] Preordain
+4 [ZEN:223] Scalding Tarn
+2 [NPH:35] Gitaxian Probe
+4 [RTR:36] Dispel
+3 [SOM:50] Twisted Image
+5 [UNH:137] Island
+4 [M12:73] Ponder
+SB: 3 [NPH:116] Mutagenic Growth
+SB: 1 [MBS:67] Into the Core
+SB: 3 [WWK:81] Dragonmaster Outcast
+SB: 1 [M12:145] Grim Lavamancer
+SB: 2 [NPH:38] Mental Misstep
+SB: 3 [ROE:146] Forked Bolt
+SB: 2 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/UR Snap-Burn TDtB ST Dec 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/UR Snap-Burn TDtB ST Dec 2011.mwDeck.dck
new file mode 100644
index 0000000000..c36eacaa25
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/UR Snap-Burn TDtB ST Dec 2011.mwDeck.dck
@@ -0,0 +1,24 @@
+3 [CNS:138] Brimstone Volley
+2 [M12:146] Incinerate
+3 [M12:145] Grim Lavamancer
+4 [UNH:139] Mountain
+4 [ISD:78] Snapcaster Mage
+3 [M14:134] Chandra's Phoenix
+2 [C13:242] Druidic Satchel
+4 [NPH:86] Gut Shot
+2 [NPH:43] Psychic Barrier
+4 [SOM:225] Copperline Gorge
+4 [ISD:51] Delver of Secrets
+10 [UNH:137] Island
+3 [ISD:139] Desperate Ravings
+4 [M12:73] Ponder
+4 [ISD:248] Sulfur Falls
+4 [M12:63] Mana Leak
+SB: 2 [NPH:88] Moltensteel Dragon
+SB: 2 [NPH:38] Mental Misstep
+SB: 2 [SOM:81] Arc Trail
+SB: 1 [C14:229] Bonehoard
+SB: 2 [NPH:159] Spellskite
+SB: 1 [M15:71] Negate
+SB: 3 [M12:52] Flashfreeze
+SB: 2 [ISD:127] Ancient Grudge
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/UW Blade TDtB ST Oct 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/UW Blade TDtB ST Oct 2011.mwDeck.dck
new file mode 100644
index 0000000000..53a2fc717b
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/UW Blade TDtB ST Oct 2011.mwDeck.dck
@@ -0,0 +1,28 @@
+1 [NPH:161] Sword of War and Peace
+4 [M13:225] Glacial Fortress
+4 [NPH:4] Blade Splicer
+2 [C14:298] Ghost Quarter
+2 [MBS:138] Sword of Feast and Famine
+4 [SOM:229] Seachrome Coast
+4 [MBS:145] Inkmoth Nexus
+3 [ISD:213] Geist of Saint Traft
+1 [M15:51] Dissipate
+4 [M13:22] Oblivion Ring
+2 [M12:12] Day of Judgment
+6 [UNH:136] Plains
+3 [MBS:14] Mirran Crusader
+5 [UNH:137] Island
+1 [MBS:8] Hero of Bladehold
+4 [ISD:83] Think Twice
+2 [M12:40] Timely Reinforcements
+4 [M12:73] Ponder
+4 [M12:63] Mana Leak
+SB: 1 [C14:298] Ghost Quarter
+SB: 3 [ISD:27] Purify the Grave
+SB: 1 [M12:16] Gideon Jura
+SB: 2 [M12:11] Celestial Purge
+SB: 1 [M12:12] Day of Judgment
+SB: 2 [ISD:40] Urgent Exorcism
+SB: 1 [NPH:159] Spellskite
+SB: 2 [M12:72] Phantasmal Image
+SB: 2 [M12:40] Timely Reinforcements
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/UW Control TDtB ST Aug 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/UW Control TDtB ST Aug 2014.mwDeck.dck
new file mode 100644
index 0000000000..366ee2642f
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/UW Control TDtB ST Aug 2014.mwDeck.dck
@@ -0,0 +1,32 @@
+1 [JOU:38] Font of Fortunes
+4 [THS:47] Dissolve
+2 [RTR:54] Syncopate
+2 [M14:68] Quicken
+2 [THS:227] Temple of Silence
+4 [RTR:241] Hallowed Fountain
+4 [RTR:201] Supreme Verdict
+3 [RTR:145] Azorius Charm
+4 [RTR:200] Sphinx's Revelation
+4 [RTR:155] Detention Sphere
+1 [C13:275] Azorius Guildgate
+2 [JOU:164] Temple of Epiphany
+3 [M14:228] Mutavault
+3 [RTR:44] Jace, Architect of Thought
+1 [M15:63] Jace's Ingenuity
+2 [M15:52] Divination
+1 [M14:209] Elixir of Immortality
+5 [UNH:136] Plains
+1 [THS:9] Elspeth, Sun's Champion
+1 [BNG:11] Fated Retribution
+5 [UNH:137] Island
+2 [THS:22] Last Breath
+4 [BNG:163] Temple of Enlightenment
+SB: 4 [JOU:18] Nyx-Fleece Ram
+SB: 1 [GTC:6] Blind Obedience
+SB: 1 [RTR:231] Pithing Needle
+SB: 1 [JOU:7] Deicide
+SB: 2 [BNG:5] Brimaz, King of Oreskos
+SB: 1 [THS:49] Gainsay
+SB: 2 [M14:5] Archangel of Thune
+SB: 1 [M14:60] Jace, Memory Adept
+SB: 2 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/UW Control TDtB ST Dec 2010.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/UW Control TDtB ST Dec 2010.mwDeck.dck
new file mode 100644
index 0000000000..49d9e7644b
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/UW Control TDtB ST Dec 2010.mwDeck.dck
@@ -0,0 +1,23 @@
+4 [WWK:133] Celestial Colonnade
+3 [M11:58] Jace Beleren
+4 [M13:225] Glacial Fortress
+3 [M11:7] Baneslayer Angel
+4 [CMD:37] Wall of Omens
+4 [C14:69] Condemn
+4 [C14:313] Tectonic Edge
+2 [C14:115] Into the Roil
+4 [M11:70] Preordain
+4 [SOM:229] Seachrome Coast
+1 [C14:91] Sun Titan
+2 [SOM:53] Volition Reins
+2 [WWK:31] Jace, the Mind Sculptor
+3 [M12:12] Day of Judgment
+6 [UNH:136] Plains
+4 [UNH:137] Island
+2 [M15:71] Negate
+4 [M12:63] Mana Leak
+SB: 4 [SOM:14] Leonin Arbiter
+SB: 4 [ZEN:25] Luminarch Ascension
+SB: 1 [M14:215] Ratchet Bomb
+SB: 4 [WWK:11] Kor Firewalker
+SB: 2 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/UW Control TDtB ST Dec 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/UW Control TDtB ST Dec 2013.mwDeck.dck
new file mode 100644
index 0000000000..3b8170f83c
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/UW Control TDtB ST Dec 2013.mwDeck.dck
@@ -0,0 +1,25 @@
+4 [THS:47] Dissolve
+2 [RTR:54] Syncopate
+2 [M14:68] Quicken
+4 [RTR:241] Hallowed Fountain
+4 [RTR:201] Supreme Verdict
+4 [RTR:145] Azorius Charm
+4 [RTR:200] Sphinx's Revelation
+4 [RTR:155] Detention Sphere
+4 [C13:275] Azorius Guildgate
+1 [M14:215] Ratchet Bomb
+2 [M14:228] Mutavault
+3 [RTR:44] Jace, Architect of Thought
+4 [M15:52] Divination
+1 [M14:209] Elixir of Immortality
+8 [UNH:136] Plains
+1 [THS:9] Elspeth, Sun's Champion
+8 [UNH:137] Island
+SB: 1 [GTC:6] Blind Obedience
+SB: 1 [RTR:231] Pithing Needle
+SB: 3 [M14:18] Fiendslayer Paladin
+SB: 3 [THS:49] Gainsay
+SB: 1 [M14:215] Ratchet Bomb
+SB: 3 [THS:22] Last Breath
+SB: 1 [M14:60] Jace, Memory Adept
+SB: 2 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/UW Control TDtB ST Feb 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/UW Control TDtB ST Feb 2014.mwDeck.dck
new file mode 100644
index 0000000000..d8adbe4c36
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/UW Control TDtB ST Feb 2014.mwDeck.dck
@@ -0,0 +1,22 @@
+4 [THS:225] Temple of Deceit
+4 [THS:47] Dissolve
+3 [RTR:54] Syncopate
+2 [THS:227] Temple of Silence
+4 [RTR:241] Hallowed Fountain
+4 [RTR:201] Supreme Verdict
+2 [RTR:145] Azorius Charm
+4 [RTR:200] Sphinx's Revelation
+4 [RTR:155] Detention Sphere
+4 [C13:275] Azorius Guildgate
+1 [DGM:11] AEtherling
+3 [M14:228] Mutavault
+4 [RTR:44] Jace, Architect of Thought
+5 [UNH:136] Plains
+3 [THS:9] Elspeth, Sun's Champion
+5 [UNH:137] Island
+4 [THS:22] Last Breath
+SB: 3 [THS:49] Gainsay
+SB: 4 [M14:5] Archangel of Thune
+SB: 1 [C13:51] Opportunity
+SB: 3 [THS:83] Dark Betrayal
+SB: 4 [THS:32] Soldier of the Pantheon
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/UW Control TDtB ST Jan 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/UW Control TDtB ST Jan 2014.mwDeck.dck
new file mode 100644
index 0000000000..17e8d66503
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/UW Control TDtB ST Jan 2014.mwDeck.dck
@@ -0,0 +1,27 @@
+4 [THS:47] Dissolve
+2 [RTR:54] Syncopate
+2 [M14:68] Quicken
+4 [RTR:241] Hallowed Fountain
+4 [RTR:201] Supreme Verdict
+3 [RTR:145] Azorius Charm
+4 [RTR:200] Sphinx's Revelation
+4 [RTR:155] Detention Sphere
+4 [C13:275] Azorius Guildgate
+1 [M14:215] Ratchet Bomb
+2 [M14:228] Mutavault
+3 [RTR:44] Jace, Architect of Thought
+4 [M15:52] Divination
+1 [M14:209] Elixir of Immortality
+8 [UNH:136] Plains
+1 [THS:9] Elspeth, Sun's Champion
+8 [UNH:137] Island
+1 [THS:22] Last Breath
+SB: 1 [GTC:6] Blind Obedience
+SB: 1 [THS:15] Glare of Heresy
+SB: 1 [RTR:231] Pithing Needle
+SB: 2 [M14:12] Celestial Flare
+SB: 3 [THS:49] Gainsay
+SB: 1 [M14:215] Ratchet Bomb
+SB: 3 [THS:22] Last Breath
+SB: 2 [M14:60] Jace, Memory Adept
+SB: 1 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/UW Control TDtB ST Jul 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/UW Control TDtB ST Jul 2011.mwDeck.dck
new file mode 100644
index 0000000000..6290861ac7
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/UW Control TDtB ST Jul 2011.mwDeck.dck
@@ -0,0 +1,30 @@
+4 [WWK:133] Celestial Colonnade
+2 [M11:58] Jace Beleren
+1 [SOM:46] Stoic Rebuttal
+2 [C14:95] White Sun's Zenith
+2 [ZEN:70] Spreading Seas
+4 [M13:225] Glacial Fortress
+3 [CMD:37] Wall of Omens
+1 [NPH:130] Batterskull
+2 [KTK:33] Cancel
+2 [C14:69] Condemn
+1 [NPH:1] Karn Liberated
+4 [C14:313] Tectonic Edge
+2 [C14:115] Into the Roil
+4 [M11:70] Preordain
+4 [SOM:229] Seachrome Coast
+1 [C14:271] Solemn Simulacrum
+2 [M15:63] Jace's Ingenuity
+3 [M13:22] Oblivion Ring
+2 [M12:12] Day of Judgment
+4 [UNH:136] Plains
+5 [UNH:137] Island
+1 [M15:71] Negate
+4 [M12:63] Mana Leak
+SB: 2 [ZEN:25] Luminarch Ascension
+SB: 2 [MBS:5] Divine Offering
+SB: 1 [C14:74] Grand Abolisher
+SB: 3 [M11:21] Leyline of Sanctity
+SB: 4 [M12:11] Celestial Purge
+SB: 2 [M12:12] Day of Judgment
+SB: 1 [C14:69] Condemn
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/UW Control TDtB ST Jul 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/UW Control TDtB ST Jul 2014.mwDeck.dck
new file mode 100644
index 0000000000..dc0dd37ad4
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/UW Control TDtB ST Jul 2014.mwDeck.dck
@@ -0,0 +1,27 @@
+4 [THS:47] Dissolve
+2 [M14:12] Celestial Flare
+2 [RTR:54] Syncopate
+1 [M14:68] Quicken
+4 [RTR:241] Hallowed Fountain
+4 [RTR:201] Supreme Verdict
+4 [RTR:145] Azorius Charm
+4 [RTR:200] Sphinx's Revelation
+4 [RTR:155] Detention Sphere
+3 [C13:275] Azorius Guildgate
+2 [M14:228] Mutavault
+3 [RTR:44] Jace, Architect of Thought
+4 [M15:52] Divination
+1 [M14:209] Elixir of Immortality
+6 [UNH:136] Plains
+1 [THS:9] Elspeth, Sun's Champion
+7 [UNH:137] Island
+4 [BNG:163] Temple of Enlightenment
+SB: 1 [GTC:6] Blind Obedience
+SB: 2 [M14:18] Fiendslayer Paladin
+SB: 1 [THS:49] Gainsay
+SB: 2 [JOU:7] Deicide
+SB: 2 [M14:215] Ratchet Bomb
+SB: 1 [JOU:23] Reprisal
+SB: 3 [THS:22] Last Breath
+SB: 1 [M14:60] Jace, Memory Adept
+SB: 2 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/UW Control TDtB ST Jun 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/UW Control TDtB ST Jun 2014.mwDeck.dck
new file mode 100644
index 0000000000..ac66890ec4
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/UW Control TDtB ST Jun 2014.mwDeck.dck
@@ -0,0 +1,27 @@
+4 [THS:47] Dissolve
+3 [M14:29] Planar Cleansing
+1 [JOU:7] Deicide
+2 [RTR:54] Syncopate
+3 [M14:68] Quicken
+4 [RTR:241] Hallowed Fountain
+4 [RTR:201] Supreme Verdict
+4 [RTR:145] Azorius Charm
+4 [RTR:200] Sphinx's Revelation
+3 [C13:275] Azorius Guildgate
+3 [M14:228] Mutavault
+3 [RTR:44] Jace, Architect of Thought
+4 [M15:52] Divination
+1 [M14:209] Elixir of Immortality
+6 [UNH:136] Plains
+6 [UNH:137] Island
+4 [BNG:163] Temple of Enlightenment
+1 [M15:71] Negate
+SB: 2 [GTC:6] Blind Obedience
+SB: 1 [M14:18] Fiendslayer Paladin
+SB: 1 [RTR:231] Pithing Needle
+SB: 1 [JOU:7] Deicide
+SB: 3 [THS:49] Gainsay
+SB: 2 [M14:12] Celestial Flare
+SB: 2 [THS:9] Elspeth, Sun's Champion
+SB: 2 [THS:22] Last Breath
+SB: 1 [M14:60] Jace, Memory Adept
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/UW Control TDtB ST May 2014.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/UW Control TDtB ST May 2014.mwDeck.dck
new file mode 100644
index 0000000000..aa98f81bf1
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/UW Control TDtB ST May 2014.mwDeck.dck
@@ -0,0 +1,30 @@
+4 [THS:47] Dissolve
+2 [M14:29] Planar Cleansing
+1 [JOU:7] Deicide
+2 [M14:12] Celestial Flare
+2 [RTR:54] Syncopate
+4 [RTR:241] Hallowed Fountain
+4 [RTR:201] Supreme Verdict
+3 [RTR:145] Azorius Charm
+4 [RTR:200] Sphinx's Revelation
+4 [C13:275] Azorius Guildgate
+1 [DGM:11] AEtherling
+4 [M14:228] Mutavault
+3 [RTR:44] Jace, Architect of Thought
+4 [M15:52] Divination
+1 [M14:209] Elixir of Immortality
+5 [UNH:136] Plains
+1 [THS:9] Elspeth, Sun's Champion
+5 [UNH:137] Island
+2 [THS:22] Last Breath
+4 [BNG:163] Temple of Enlightenment
+SB: 3 [JOU:18] Nyx-Fleece Ram
+SB: 1 [RTR:155] Detention Sphere
+SB: 1 [RTR:231] Pithing Needle
+SB: 1 [JOU:7] Deicide
+SB: 3 [THS:49] Gainsay
+SB: 1 [JOU:5] Banishing Light
+SB: 1 [RTR:36] Dispel
+SB: 2 [THS:9] Elspeth, Sun's Champion
+SB: 1 [M14:60] Jace, Memory Adept
+SB: 1 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/UW Delver TDtB ST Apr 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/UW Delver TDtB ST Apr 2012.mwDeck.dck
new file mode 100644
index 0000000000..47f3a5caf0
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/UW Delver TDtB ST Apr 2012.mwDeck.dck
@@ -0,0 +1,29 @@
+2 [NPH:161] Sword of War and Peace
+4 [M13:225] Glacial Fortress
+1 [NPH:130] Batterskull
+4 [ISD:78] Snapcaster Mage
+2 [NPH:86] Gut Shot
+1 [ISD:231] Runechanter's Pike
+2 [DKA:52] Thought Scour
+4 [SOM:229] Seachrome Coast
+1 [NPH:57] Dismember
+4 [NPH:35] Gitaxian Probe
+4 [ISD:213] Geist of Saint Traft
+4 [NPH:48] Vapor Snag
+3 [ISD:244] Moorland Haunt
+1 [UNH:136] Plains
+4 [ISD:51] Delver of Secrets
+9 [UNH:137] Island
+4 [M12:73] Ponder
+2 [ISD:60] Invisible Stalker
+4 [M12:63] Mana Leak
+SB: 2 [NPH:107] Corrosive Gale
+SB: 1 [MBS:5] Divine Offering
+SB: 1 [BNG:25] Revoke Existence
+SB: 2 [M15:51] Dissipate
+SB: 2 [M12:11] Celestial Purge
+SB: 1 [NPH:130] Batterskull
+SB: 2 [M12:72] Phantasmal Image
+SB: 1 [M14:60] Jace, Memory Adept
+SB: 2 [M12:40] Timely Reinforcements
+SB: 1 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/UW Delver TDtB ST Aug 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/UW Delver TDtB ST Aug 2012.mwDeck.dck
new file mode 100644
index 0000000000..46f4b8bb85
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/UW Delver TDtB ST Aug 2012.mwDeck.dck
@@ -0,0 +1,25 @@
+3 [AVR:32] Restoration Angel
+3 [C13:30] Augur of Bolas
+4 [M13:225] Glacial Fortress
+4 [ISD:78] Snapcaster Mage
+4 [NPH:86] Gut Shot
+3 [ISD:231] Runechanter's Pike
+4 [DKA:52] Thought Scour
+4 [SOM:229] Seachrome Coast
+4 [NPH:35] Gitaxian Probe
+2 [ISD:213] Geist of Saint Traft
+4 [NPH:48] Vapor Snag
+2 [ISD:244] Moorland Haunt
+4 [ISD:51] Delver of Secrets
+8 [UNH:137] Island
+4 [M12:73] Ponder
+3 [M12:63] Mana Leak
+SB: 1 [MBS:5] Divine Offering
+SB: 1 [MBS:138] Sword of Feast and Famine
+SB: 1 [NPH:57] Dismember
+SB: 1 [M15:51] Dissipate
+SB: 3 [M12:11] Celestial Purge
+SB: 1 [M13:22] Oblivion Ring
+SB: 3 [NPH:38] Mental Misstep
+SB: 3 [M12:72] Phantasmal Image
+SB: 1 [M12:40] Timely Reinforcements
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/UW Delver TDtB ST Feb 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/UW Delver TDtB ST Feb 2012.mwDeck.dck
new file mode 100644
index 0000000000..6498036b31
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/UW Delver TDtB ST Feb 2012.mwDeck.dck
@@ -0,0 +1,28 @@
+4 [M13:225] Glacial Fortress
+4 [ISD:78] Snapcaster Mage
+3 [NPH:86] Gut Shot
+3 [ISD:231] Runechanter's Pike
+2 [DKA:52] Thought Scour
+4 [SOM:229] Seachrome Coast
+4 [NPH:35] Gitaxian Probe
+3 [ISD:213] Geist of Saint Traft
+3 [C14:80] Midnight Haunting
+4 [NPH:48] Vapor Snag
+3 [ISD:244] Moorland Haunt
+1 [UNH:136] Plains
+2 [M12:72] Phantasmal Image
+4 [ISD:51] Delver of Secrets
+8 [UNH:137] Island
+4 [M12:73] Ponder
+4 [M12:63] Mana Leak
+SB: 1 [MBS:5] Divine Offering
+SB: 1 [NPH:86] Gut Shot
+SB: 1 [M14:215] Ratchet Bomb
+SB: 1 [BNG:25] Revoke Existence
+SB: 1 [M15:51] Dissipate
+SB: 2 [M13:22] Oblivion Ring
+SB: 2 [M12:12] Day of Judgment
+SB: 1 [M12:72] Phantasmal Image
+SB: 2 [M14:60] Jace, Memory Adept
+SB: 2 [M12:40] Timely Reinforcements
+SB: 1 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/UW Delver TDtB ST Jul 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/UW Delver TDtB ST Jul 2012.mwDeck.dck
new file mode 100644
index 0000000000..c5893d3a7d
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/UW Delver TDtB ST Jul 2012.mwDeck.dck
@@ -0,0 +1,27 @@
+3 [AVR:32] Restoration Angel
+4 [M13:225] Glacial Fortress
+4 [ISD:78] Snapcaster Mage
+1 [NPH:116] Mutagenic Growth
+3 [NPH:86] Gut Shot
+3 [ISD:231] Runechanter's Pike
+4 [DKA:52] Thought Scour
+4 [SOM:229] Seachrome Coast
+4 [NPH:35] Gitaxian Probe
+4 [ISD:213] Geist of Saint Traft
+4 [NPH:48] Vapor Snag
+2 [ISD:244] Moorland Haunt
+1 [UNH:136] Plains
+4 [ISD:51] Delver of Secrets
+8 [UNH:137] Island
+4 [M12:73] Ponder
+3 [M12:63] Mana Leak
+SB: 1 [NPH:116] Mutagenic Growth
+SB: 1 [NPH:86] Gut Shot
+SB: 1 [NPH:161] Sword of War and Peace
+SB: 1 [ISD:79] Spectral Flight
+SB: 1 [M15:51] Dissipate
+SB: 3 [M12:11] Celestial Purge
+SB: 2 [NPH:38] Mental Misstep
+SB: 2 [M12:72] Phantasmal Image
+SB: 2 [M12:40] Timely Reinforcements
+SB: 1 [M12:63] Mana Leak
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/UW Delver TDtB ST May 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/UW Delver TDtB ST May 2012.mwDeck.dck
new file mode 100644
index 0000000000..abb8798023
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/UW Delver TDtB ST May 2012.mwDeck.dck
@@ -0,0 +1,30 @@
+2 [NPH:161] Sword of War and Peace
+4 [M13:225] Glacial Fortress
+4 [ISD:78] Snapcaster Mage
+1 [NPH:86] Gut Shot
+1 [MBS:138] Sword of Feast and Famine
+2 [DKA:52] Thought Scour
+4 [SOM:229] Seachrome Coast
+1 [NPH:57] Dismember
+4 [NPH:35] Gitaxian Probe
+4 [ISD:213] Geist of Saint Traft
+4 [NPH:48] Vapor Snag
+3 [ISD:244] Moorland Haunt
+1 [UNH:136] Plains
+2 [M12:72] Phantasmal Image
+4 [ISD:51] Delver of Secrets
+2 [DKA:7] Faith's Shield
+9 [UNH:137] Island
+4 [M12:73] Ponder
+4 [M12:63] Mana Leak
+SB: 1 [MBS:21] Consecrated Sphinx
+SB: 1 [MBS:5] Divine Offering
+SB: 1 [NPH:74] Surgical Extraction
+SB: 1 [C13:42] Dungeon Geists
+SB: 2 [NPH:78] Act of Aggression
+SB: 1 [BNG:25] Revoke Existence
+SB: 1 [M15:51] Dissipate
+SB: 2 [M12:11] Celestial Purge
+SB: 1 [NPH:130] Batterskull
+SB: 1 [M13:22] Oblivion Ring
+SB: 3 [M12:40] Timely Reinforcements
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/UW Flash TDtB ST Jul 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/UW Flash TDtB ST Jul 2013.mwDeck.dck
new file mode 100644
index 0000000000..960af27ae5
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/UW Flash TDtB ST Jul 2013.mwDeck.dck
@@ -0,0 +1,29 @@
+4 [AVR:32] Restoration Angel
+4 [C13:30] Augur of Bolas
+2 [RTR:54] Syncopate
+4 [M13:225] Glacial Fortress
+4 [RTR:241] Hallowed Fountain
+3 [ISD:78] Snapcaster Mage
+3 [RTR:201] Supreme Verdict
+2 [RTR:145] Azorius Charm
+3 [RTR:200] Sphinx's Revelation
+2 [DGM:5] Renounce the Guilds
+2 [ISD:231] Runechanter's Pike
+3 [DKA:52] Thought Scour
+1 [M13:75] Unsummon
+2 [M15:51] Dissipate
+2 [M13:65] Rewind
+2 [ISD:244] Moorland Haunt
+5 [UNH:136] Plains
+10 [UNH:137] Island
+2 [ISD:83] Think Twice
+SB: 1 [RTR:201] Supreme Verdict
+SB: 2 [AVR:34] Righteous Blow
+SB: 2 [ISD:27] Purify the Grave
+SB: 1 [DGM:5] Renounce the Guilds
+SB: 1 [DGM:11] AEtherling
+SB: 2 [RTR:36] Dispel
+SB: 1 [RTR:44] Jace, Architect of Thought
+SB: 1 [M13:22] Oblivion Ring
+SB: 3 [AVR:38] Terminus
+SB: 1 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/UW Human TDtB ST Apr 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/UW Human TDtB ST Apr 2012.mwDeck.dck
new file mode 100644
index 0000000000..0ba723c4fd
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/UW Human TDtB ST Apr 2012.mwDeck.dck
@@ -0,0 +1,20 @@
+4 [M13:225] Glacial Fortress
+4 [SOM:229] Seachrome Coast
+3 [ISD:244] Moorland Haunt
+4 [M12:23] Honor of the Pure
+4 [M13:22] Oblivion Ring
+13 [UNH:136] Plains
+3 [DKA:24] Thalia, Guardian of Thraben
+4 [DKA:13] Loyal Cathar
+4 [MBS:14] Mirran Crusader
+4 [ISD:6] Champion of the Parish
+4 [MBS:8] Hero of Bladehold
+1 [DKA:8] Gather the Townsfolk
+4 [CNS:69] Doomed Traveler
+4 [M12:63] Mana Leak
+SB: 2 [NPH:161] Sword of War and Peace
+SB: 2 [MBS:138] Sword of Feast and Famine
+SB: 2 [BNG:25] Revoke Existence
+SB: 4 [M12:12] Day of Judgment
+SB: 1 [SOM:135] Venser, the Sojourner
+SB: 4 [M12:40] Timely Reinforcements
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/UWR Midrange TDtB ST Nov 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/UWR Midrange TDtB ST Nov 2012.mwDeck.dck
new file mode 100644
index 0000000000..09ecec0336
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/UWR Midrange TDtB ST Nov 2012.mwDeck.dck
@@ -0,0 +1,30 @@
+4 [AVR:32] Restoration Angel
+2 [M14:55] Essence Scatter
+4 [M13:225] Glacial Fortress
+3 [M13:147] Searing Spear
+4 [RTR:241] Hallowed Fountain
+1 [UNH:139] Mountain
+4 [ISD:78] Snapcaster Mage
+3 [RTR:145] Azorius Charm
+3 [M13:150] Thundermaw Hellkite
+2 [ISD:231] Runechanter's Pike
+2 [AVR:149] Pillar of Flame
+4 [RTR:247] Steam Vents
+4 [DKA:52] Thought Scour
+4 [ISD:213] Geist of Saint Traft
+2 [M15:51] Dissipate
+2 [M13:75] Unsummon
+2 [ISD:244] Moorland Haunt
+4 [ISD:238] Clifftop Retreat
+2 [ISD:139] Desperate Ravings
+4 [ISD:248] Sulfur Falls
+SB: 1 [RTR:155] Detention Sphere
+SB: 1 [AVR:79] Tamiyo, the Moon Sage
+SB: 1 [C13:42] Dungeon Geists
+SB: 2 [AVR:149] Pillar of Flame
+SB: 2 [M14:47] Clone
+SB: 2 [AVR:166] Zealous Conscripts
+SB: 2 [M15:51] Dissipate
+SB: 1 [RTR:36] Dispel
+SB: 1 [M14:60] Jace, Memory Adept
+SB: 2 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/UWr Control TDtB ST Oct 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/UWr Control TDtB ST Oct 2012.mwDeck.dck
new file mode 100644
index 0000000000..ce47869b1d
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/UWr Control TDtB ST Oct 2012.mwDeck.dck
@@ -0,0 +1,26 @@
+2 [AVR:79] Tamiyo, the Moon Sage
+2 [RTR:54] Syncopate
+3 [AVR:20] Entreat the Angels
+4 [M13:225] Glacial Fortress
+4 [RTR:241] Hallowed Fountain
+2 [ISD:78] Snapcaster Mage
+1 [RTR:201] Supreme Verdict
+4 [RTR:145] Azorius Charm
+4 [RTR:155] Detention Sphere
+4 [AVR:149] Pillar of Flame
+1 [AVR:227] Desolate Lighthouse
+4 [RTR:247] Steam Vents
+4 [RTR:44] Jace, Architect of Thought
+4 [UNH:136] Plains
+2 [UNH:137] Island
+4 [ISD:238] Clifftop Retreat
+4 [ISD:83] Think Twice
+4 [AVR:38] Terminus
+3 [ISD:248] Sulfur Falls
+SB: 2 [RTR:201] Supreme Verdict
+SB: 2 [RTR:223] Sundering Growth
+SB: 2 [ISD:27] Purify the Grave
+SB: 3 [ISD:213] Geist of Saint Traft
+SB: 2 [M15:51] Dissipate
+SB: 2 [M14:60] Jace, Memory Adept
+SB: 2 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/UWr Midrange TDtB ST Apr 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/UWr Midrange TDtB ST Apr 2013.mwDeck.dck
new file mode 100644
index 0000000000..bbac01a541
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/UWr Midrange TDtB ST Apr 2013.mwDeck.dck
@@ -0,0 +1,31 @@
+3 [AVR:32] Restoration Angel
+1 [RTR:93] Electrickery
+2 [C13:30] Augur of Bolas
+4 [GTC:215] Boros Reckoner
+4 [M13:225] Glacial Fortress
+1 [M13:147] Searing Spear
+4 [RTR:241] Hallowed Fountain
+1 [UNH:139] Mountain
+3 [ISD:78] Snapcaster Mage
+2 [RTR:201] Supreme Verdict
+3 [RTR:200] Sphinx's Revelation
+4 [RTR:145] Azorius Charm
+2 [AVR:149] Pillar of Flame
+4 [RTR:247] Steam Vents
+4 [DKA:52] Thought Scour
+3 [M15:51] Dissipate
+2 [GTC:245] Sacred Foundry
+1 [ISD:146] Harvest Pyre
+1 [UNH:136] Plains
+1 [UNH:137] Island
+4 [ISD:238] Clifftop Retreat
+2 [ISD:83] Think Twice
+4 [ISD:248] Sulfur Falls
+SB: 1 [RTR:201] Supreme Verdict
+SB: 1 [RTR:93] Electrickery
+SB: 3 [M14:47] Clone
+SB: 1 [ISD:236] Witchbane Orb
+SB: 2 [RTR:36] Dispel
+SB: 3 [RTR:18] Rest in Peace
+SB: 2 [M14:60] Jace, Memory Adept
+SB: 2 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/UWr Midrange TDtB ST Jan 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/UWr Midrange TDtB ST Jan 2013.mwDeck.dck
new file mode 100644
index 0000000000..9716b7fc77
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/UWr Midrange TDtB ST Jan 2013.mwDeck.dck
@@ -0,0 +1,33 @@
+4 [AVR:32] Restoration Angel
+3 [C13:30] Augur of Bolas
+4 [M13:225] Glacial Fortress
+1 [M13:147] Searing Spear
+4 [RTR:241] Hallowed Fountain
+2 [RTR:153] Counterflux
+1 [RTR:172] Izzet Charm
+1 [UNH:139] Mountain
+4 [ISD:78] Snapcaster Mage
+1 [RTR:201] Supreme Verdict
+3 [RTR:200] Sphinx's Revelation
+4 [RTR:145] Azorius Charm
+1 [RTR:101] Mizzium Mortars
+2 [ISD:231] Runechanter's Pike
+3 [AVR:149] Pillar of Flame
+4 [RTR:247] Steam Vents
+4 [DKA:52] Thought Scour
+1 [M13:65] Rewind
+1 [ISD:244] Moorland Haunt
+1 [UNH:136] Plains
+2 [UNH:137] Island
+4 [ISD:238] Clifftop Retreat
+1 [ISD:83] Think Twice
+4 [ISD:248] Sulfur Falls
+SB: 2 [RTR:201] Supreme Verdict
+SB: 1 [RTR:155] Detention Sphere
+SB: 2 [ISD:27] Purify the Grave
+SB: 1 [RTR:36] Dispel
+SB: 1 [ISD:29] Rebuke
+SB: 1 [M13:22] Oblivion Ring
+SB: 3 [M14:60] Jace, Memory Adept
+SB: 2 [RTR:173] Izzet Staticaster
+SB: 2 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/UWr Midrange TDtB ST Jun 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/UWr Midrange TDtB ST Jun 2013.mwDeck.dck
new file mode 100644
index 0000000000..7f2a6b90b6
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/UWr Midrange TDtB ST Jun 2013.mwDeck.dck
@@ -0,0 +1,31 @@
+3 [AVR:32] Restoration Angel
+3 [C13:30] Augur of Bolas
+1 [RTR:54] Syncopate
+4 [M13:225] Glacial Fortress
+3 [M13:147] Searing Spear
+4 [RTR:241] Hallowed Fountain
+3 [ISD:78] Snapcaster Mage
+2 [RTR:201] Supreme Verdict
+3 [RTR:200] Sphinx's Revelation
+4 [RTR:145] Azorius Charm
+2 [DGM:5] Renounce the Guilds
+1 [AVR:149] Pillar of Flame
+1 [AVR:227] Desolate Lighthouse
+4 [RTR:247] Steam Vents
+1 [DGM:116] Warleader's Helix
+3 [M15:51] Dissipate
+3 [GTC:245] Sacred Foundry
+1 [ISD:244] Moorland Haunt
+2 [DGM:134] Turn // Burn
+2 [UNH:137] Island
+3 [ISD:238] Clifftop Retreat
+2 [ISD:83] Think Twice
+4 [ISD:248] Sulfur Falls
+1 [GTC:142] Assemble the Legion
+SB: 1 [RTR:201] Supreme Verdict
+SB: 3 [AVR:149] Pillar of Flame
+SB: 2 [RTR:36] Dispel
+SB: 3 [RTR:18] Rest in Peace
+SB: 2 [RTR:173] Izzet Staticaster
+SB: 2 [M14:60] Jace, Memory Adept
+SB: 2 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/UWr Midrange TDtB ST Mar 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/UWr Midrange TDtB ST Mar 2013.mwDeck.dck
new file mode 100644
index 0000000000..495275caeb
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/UWr Midrange TDtB ST Mar 2013.mwDeck.dck
@@ -0,0 +1,32 @@
+4 [AVR:32] Restoration Angel
+1 [RTR:54] Syncopate
+3 [M13:225] Glacial Fortress
+2 [M13:147] Searing Spear
+4 [RTR:241] Hallowed Fountain
+2 [RTR:172] Izzet Charm
+4 [ISD:78] Snapcaster Mage
+4 [RTR:145] Azorius Charm
+3 [RTR:101] Mizzium Mortars
+3 [M13:150] Thundermaw Hellkite
+2 [AVR:149] Pillar of Flame
+1 [AVR:227] Desolate Lighthouse
+4 [RTR:247] Steam Vents
+4 [DKA:52] Thought Scour
+4 [ISD:213] Geist of Saint Traft
+1 [M13:75] Unsummon
+2 [M15:51] Dissipate
+3 [GTC:245] Sacred Foundry
+2 [ISD:244] Moorland Haunt
+3 [ISD:238] Clifftop Retreat
+4 [ISD:248] Sulfur Falls
+SB: 1 [RTR:201] Supreme Verdict
+SB: 1 [AVR:149] Pillar of Flame
+SB: 1 [ISD:231] Runechanter's Pike
+SB: 2 [C13:30] Augur of Bolas
+SB: 1 [RTR:203] Thoughtflare
+SB: 4 [GTC:215] Boros Reckoner
+SB: 1 [RTR:36] Dispel
+SB: 1 [M13:147] Searing Spear
+SB: 1 [RTR:153] Counterflux
+SB: 1 [M15:71] Negate
+SB: 1 [GTC:142] Assemble the Legion
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/UWx Midrange TDtB ST Aug 2013.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/UWx Midrange TDtB ST Aug 2013.mwDeck.dck
new file mode 100644
index 0000000000..91871ec82e
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/UWx Midrange TDtB ST Aug 2013.mwDeck.dck
@@ -0,0 +1,29 @@
+4 [AVR:32] Restoration Angel
+3 [C13:30] Augur of Bolas
+3 [RTR:54] Syncopate
+4 [M13:225] Glacial Fortress
+4 [RTR:241] Hallowed Fountain
+1 [RTR:172] Izzet Charm
+3 [ISD:78] Snapcaster Mage
+2 [RTR:201] Supreme Verdict
+3 [RTR:145] Azorius Charm
+3 [RTR:200] Sphinx's Revelation
+3 [AVR:149] Pillar of Flame
+4 [RTR:247] Steam Vents
+2 [M15:51] Dissipate
+2 [DGM:116] Warleader's Helix
+4 [GTC:245] Sacred Foundry
+2 [ISD:244] Moorland Haunt
+1 [DGM:134] Turn // Burn
+1 [UNH:137] Island
+3 [ISD:238] Clifftop Retreat
+4 [ISD:83] Think Twice
+4 [ISD:248] Sulfur Falls
+SB: 3 [M13:150] Thundermaw Hellkite
+SB: 2 [RTR:155] Detention Sphere
+SB: 2 [M14:12] Celestial Flare
+SB: 1 [M14:215] Ratchet Bomb
+SB: 1 [RTR:36] Dispel
+SB: 1 [DGM:134] Turn // Burn
+SB: 2 [RTR:173] Izzet Staticaster
+SB: 3 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/UWx Midrange TDtB ST Dec 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/UWx Midrange TDtB ST Dec 2012.mwDeck.dck
new file mode 100644
index 0000000000..301a37552e
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/UWx Midrange TDtB ST Dec 2012.mwDeck.dck
@@ -0,0 +1,22 @@
+4 [AVR:32] Restoration Angel
+4 [C13:30] Augur of Bolas
+4 [M13:225] Glacial Fortress
+4 [RTR:241] Hallowed Fountain
+4 [ISD:78] Snapcaster Mage
+3 [RTR:200] Sphinx's Revelation
+4 [RTR:145] Azorius Charm
+1 [AVR:226] Cavern of Souls
+2 [ISD:14] Feeling of Dread
+4 [DKA:52] Thought Scour
+4 [ISD:213] Geist of Saint Traft
+2 [M15:51] Dissipate
+4 [M13:75] Unsummon
+3 [ISD:244] Moorland Haunt
+4 [UNH:136] Plains
+8 [UNH:137] Island
+1 [ISD:83] Think Twice
+SB: 3 [RTR:201] Supreme Verdict
+SB: 3 [ISD:27] Purify the Grave
+SB: 3 [RTR:36] Dispel
+SB: 3 [M13:21] Knight of Glory
+SB: 3 [M14:60] Jace, Memory Adept
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Unsolar Flare TDtB ST Jan 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Unsolar Flare TDtB ST Jan 2012.mwDeck.dck
new file mode 100644
index 0000000000..1f9e7c9728
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Unsolar Flare TDtB ST Jan 2012.mwDeck.dck
@@ -0,0 +1,38 @@
+1 [MBS:21] Consecrated Sphinx
+2 [MBS:43] Go for the Throat
+1 [SOM:6] Elspeth Tirel
+2 [C14:95] White Sun's Zenith
+1 [M12:16] Gideon Jura
+4 [M13:225] Glacial Fortress
+2 [M13:223] Drowned Catacomb
+1 [ISD:78] Snapcaster Mage
+3 [ISD:55] Forbidden Alchemy
+1 [C14:145] Grave Titan
+2 [ISD:242] Isolated Chapel
+3 [C14:264] Pristine Talisman
+1 [NPH:9] Elesh Norn, Grand Cenobite
+2 [M14:96] Doom Blade
+3 [M15:51] Dissipate
+4 [M12:12] Day of Judgment
+4 [UNH:136] Plains
+4 [UNH:137] Island
+1 [UNH:138] Swamp
+1 [NPH:130] Batterskull
+2 [C14:298] Ghost Quarter
+4 [SOM:229] Seachrome Coast
+2 [SOM:226] Darkslick Shores
+3 [M13:22] Oblivion Ring
+3 [ISD:83] Think Twice
+3 [M12:63] Mana Leak
+SB: 1 [MBS:5] Divine Offering
+SB: 1 [C13:32] Blue Sun's Zenith
+SB: 1 [C14:298] Ghost Quarter
+SB: 1 [BNG:25] Revoke Existence
+SB: 1 [M15:51] Dissipate
+SB: 1 [M12:11] Celestial Purge
+SB: 1 [M13:22] Oblivion Ring
+SB: 1 [C13:249] Nihil Spellbomb
+SB: 2 [M12:72] Phantasmal Image
+SB: 3 [M12:40] Timely Reinforcements
+SB: 1 [M15:71] Negate
+SB: 1 [NPH:1] Karn Liberated
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Valakut Ramp TDtB ST Aug 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Valakut Ramp TDtB ST Aug 2011.mwDeck.dck
new file mode 100644
index 0000000000..714c7bd9b1
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Valakut Ramp TDtB ST Aug 2011.mwDeck.dck
@@ -0,0 +1,25 @@
+1 [WWK:141] Raging Ravine
+2 [CNS:171] Nature's Claim
+4 [UNH:140] Forest
+2 [M11:149] Lightning Bolt
+3 [ZEN:167] Khalni Heart Expedition
+2 [MBS:81] Green Sun's Zenith
+4 [M12:188] Primeval Titan
+4 [ZEN:172] Oracle of Mul Daya
+3 [C14:315] Terramorphic Expanse
+3 [ZEN:184] Summoning Trap
+11 [UNH:139] Mountain
+3 [C13:114] Inferno Titan
+4 [ZEN:228] Valakut, the Molten Pinnacle
+1 [C13:135] Avenger of Zendikar
+3 [ZEN:229] Verdant Catacombs
+4 [M12:190] Rampant Growth
+2 [C14:295] Evolving Wilds
+4 [WWK:99] Explore
+SB: 1 [C13:134] Acidic Slime
+SB: 1 [CNS:171] Nature's Claim
+SB: 2 [NPH:57] Dismember
+SB: 3 [M11:188] Obstinate Baloth
+SB: 2 [MBS:92] Thrun, the Last Troll
+SB: 4 [M11:154] Pyroclasm
+SB: 2 [M11:174] Gaea's Revenge
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Valakut Ramp TDtB ST Dec 2010.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Valakut Ramp TDtB ST Dec 2010.mwDeck.dck
new file mode 100644
index 0000000000..f695f09233
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Valakut Ramp TDtB ST Dec 2010.mwDeck.dck
@@ -0,0 +1,21 @@
+5 [UNH:140] Forest
+4 [M11:149] Lightning Bolt
+4 [ZEN:167] Khalni Heart Expedition
+4 [M12:188] Primeval Titan
+2 [ZEN:172] Oracle of Mul Daya
+4 [C13:139] Cultivate
+3 [C14:315] Terramorphic Expanse
+2 [ZEN:184] Summoning Trap
+1 [M11:174] Gaea's Revenge
+13 [UNH:139] Mountain
+4 [ZEN:228] Valakut, the Molten Pinnacle
+3 [C13:135] Avenger of Zendikar
+4 [C14:199] Harrow
+3 [C14:295] Evolving Wilds
+4 [WWK:99] Explore
+SB: 3 [KTK:142] Naturalize
+SB: 2 [KTK:95] Act of Treason
+SB: 2 [WWK:87] Ricochet Trap
+SB: 3 [M11:188] Obstinate Baloth
+SB: 4 [M11:154] Pyroclasm
+SB: 1 [M11:174] Gaea's Revenge
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Valakut Ramp TDtB ST Feb 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Valakut Ramp TDtB ST Feb 2011.mwDeck.dck
new file mode 100644
index 0000000000..c804c50e30
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Valakut Ramp TDtB ST Feb 2011.mwDeck.dck
@@ -0,0 +1,21 @@
+5 [UNH:140] Forest
+4 [ZEN:220] Misty Rainforest
+4 [ROE:203] Overgrown Battlement
+4 [ZEN:167] Khalni Heart Expedition
+4 [MBS:81] Green Sun's Zenith
+4 [M12:188] Primeval Titan
+4 [C13:139] Cultivate
+4 [C14:315] Terramorphic Expanse
+11 [UNH:139] Mountain
+4 [ZEN:228] Valakut, the Molten Pinnacle
+2 [C13:135] Avenger of Zendikar
+4 [ZEN:168] Lotus Cobra
+3 [C14:199] Harrow
+3 [WWK:99] Explore
+SB: 1 [C13:134] Acidic Slime
+SB: 2 [CNS:171] Nature's Claim
+SB: 2 [SOM:218] Tumble Magnet
+SB: 1 [M11:188] Obstinate Baloth
+SB: 2 [SOM:94] Koth of the Hammer
+SB: 3 [MBS:92] Thrun, the Last Troll
+SB: 4 [M11:154] Pyroclasm
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Valakut Ramp TDtB ST Jul 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Valakut Ramp TDtB ST Jul 2011.mwDeck.dck
new file mode 100644
index 0000000000..6084a8118f
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Valakut Ramp TDtB ST Jul 2011.mwDeck.dck
@@ -0,0 +1,28 @@
+1 [WWK:141] Raging Ravine
+5 [UNH:140] Forest
+2 [M11:149] Lightning Bolt
+3 [ROE:203] Overgrown Battlement
+4 [MBS:81] Green Sun's Zenith
+4 [M12:188] Primeval Titan
+1 [M12:165] Birds of Paradise
+4 [ZEN:172] Oracle of Mul Daya
+4 [C13:139] Cultivate
+2 [C14:315] Terramorphic Expanse
+1 [ZEN:184] Summoning Trap
+10 [UNH:139] Mountain
+4 [ZEN:228] Valakut, the Molten Pinnacle
+2 [C13:135] Avenger of Zendikar
+2 [ZEN:229] Verdant Catacombs
+4 [M12:190] Rampant Growth
+4 [C14:295] Evolving Wilds
+1 [SOM:218] Tumble Magnet
+2 [WWK:99] Explore
+SB: 3 [SOM:69] Memoricide
+SB: 2 [MBS:78] Creeping Corrosion
+SB: 1 [M15:169] Back to Nature
+SB: 1 [SOM:218] Tumble Magnet
+SB: 1 [M11:188] Obstinate Baloth
+SB: 1 [MBS:92] Thrun, the Last Troll
+SB: 4 [M11:154] Pyroclasm
+SB: 1 [UNH:138] Swamp
+SB: 1 [M11:174] Gaea's Revenge
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Valakut Ramp TDtB ST Mar 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Valakut Ramp TDtB ST Mar 2011.mwDeck.dck
new file mode 100644
index 0000000000..4c987ce2b4
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Valakut Ramp TDtB ST Mar 2011.mwDeck.dck
@@ -0,0 +1,24 @@
+1 [MBS:75] Slagstorm
+7 [UNH:140] Forest
+4 [ROE:203] Overgrown Battlement
+4 [ZEN:167] Khalni Heart Expedition
+3 [MBS:81] Green Sun's Zenith
+4 [M12:188] Primeval Titan
+2 [ZEN:172] Oracle of Mul Daya
+2 [C13:139] Cultivate
+3 [M11:154] Pyroclasm
+2 [C14:315] Terramorphic Expanse
+11 [UNH:139] Mountain
+4 [ZEN:228] Valakut, the Molten Pinnacle
+2 [C13:135] Avenger of Zendikar
+1 [C13:134] Acidic Slime
+4 [C14:199] Harrow
+2 [C14:295] Evolving Wilds
+4 [WWK:99] Explore
+SB: 1 [MBS:75] Slagstorm
+SB: 2 [M13:141] Mark of Mutiny
+SB: 1 [C13:134] Acidic Slime
+SB: 2 [CNS:171] Nature's Claim
+SB: 3 [M11:188] Obstinate Baloth
+SB: 2 [MBS:92] Thrun, the Last Troll
+SB: 4 [ZEN:184] Summoning Trap
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Valakut Ramp TDtB ST May 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Valakut Ramp TDtB ST May 2011.mwDeck.dck
new file mode 100644
index 0000000000..6a97ddafb6
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Valakut Ramp TDtB ST May 2011.mwDeck.dck
@@ -0,0 +1,22 @@
+2 [WWK:141] Raging Ravine
+4 [ROE:186] Growth Spasm
+4 [CNS:171] Nature's Claim
+5 [UNH:140] Forest
+4 [ROE:203] Overgrown Battlement
+4 [M12:188] Primeval Titan
+4 [C13:139] Cultivate
+4 [C14:315] Terramorphic Expanse
+4 [ZEN:184] Summoning Trap
+11 [UNH:139] Mountain
+2 [C13:114] Inferno Titan
+4 [ZEN:228] Valakut, the Molten Pinnacle
+2 [C13:135] Avenger of Zendikar
+2 [C14:295] Evolving Wilds
+4 [WWK:99] Explore
+SB: 2 [MBS:75] Slagstorm
+SB: 2 [M12:128] Combust
+SB: 3 [WWK:87] Ricochet Trap
+SB: 3 [M11:188] Obstinate Baloth
+SB: 1 [MBS:81] Green Sun's Zenith
+SB: 1 [C14:218] Terastodon
+SB: 3 [M11:154] Pyroclasm
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Valakut Ramp TDtB ST Sep 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Valakut Ramp TDtB ST Sep 2011.mwDeck.dck
new file mode 100644
index 0000000000..4c8285c283
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Valakut Ramp TDtB ST Sep 2011.mwDeck.dck
@@ -0,0 +1,24 @@
+1 [WWK:141] Raging Ravine
+2 [CNS:171] Nature's Claim
+4 [UNH:140] Forest
+2 [M11:149] Lightning Bolt
+3 [ZEN:167] Khalni Heart Expedition
+2 [MBS:81] Green Sun's Zenith
+4 [M12:188] Primeval Titan
+4 [ZEN:172] Oracle of Mul Daya
+3 [C14:315] Terramorphic Expanse
+3 [ZEN:184] Summoning Trap
+11 [UNH:139] Mountain
+4 [C13:114] Inferno Titan
+4 [ZEN:228] Valakut, the Molten Pinnacle
+3 [ZEN:229] Verdant Catacombs
+4 [M12:190] Rampant Growth
+2 [C14:295] Evolving Wilds
+4 [WWK:99] Explore
+SB: 1 [C13:135] Avenger of Zendikar
+SB: 1 [C13:134] Acidic Slime
+SB: 2 [CNS:171] Nature's Claim
+SB: 2 [NPH:57] Dismember
+SB: 3 [M11:188] Obstinate Baloth
+SB: 2 [MBS:92] Thrun, the Last Troll
+SB: 4 [M11:154] Pyroclasm
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Vampires Br TDtB ST Aug 2011.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Vampires Br TDtB ST Aug 2011.mwDeck.dck
new file mode 100644
index 0000000000..ee4774b5cd
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Vampires Br TDtB ST Aug 2011.mwDeck.dck
@@ -0,0 +1,26 @@
+1 [MBS:43] Go for the Throat
+3 [C13:99] Viscera Seer
+4 [M11:149] Lightning Bolt
+4 [ZEN:83] Bloodghast
+2 [M12:145] Grim Lavamancer
+3 [ROE:115] Inquisition of Kozilek
+4 [M13:222] Dragonskull Summit
+4 [WWK:139] Lavaclaw Reaches
+4 [ZEN:89] Gatekeeper of Malakir
+3 [ZEN:229] Verdant Catacombs
+2 [ZEN:219] Marsh Flats
+3 [WWK:62] Pulse Tracker
+4 [ZEN:115] Vampire Lacerator
+3 [NPH:57] Dismember
+2 [M14:96] Doom Blade
+4 [SOM:224] Blackcleave Cliffs
+4 [WWK:59] Kalastria Highborn
+6 [UNH:138] Swamp
+SB: 4 [M12:151] Manic Vandal
+SB: 1 [MBS:43] Go for the Throat
+SB: 3 [M11:92] Demon of Death's Gate
+SB: 2 [NPH:78] Act of Aggression
+SB: 1 [M14:97] Duress
+SB: 1 [M12:145] Grim Lavamancer
+SB: 1 [KTK:69] Despise
+SB: 2 [M12:110] Sorin's Thirst
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/WR Humans TDtB ST May 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/WR Humans TDtB ST May 2012.mwDeck.dck
new file mode 100644
index 0000000000..4ed9860691
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/WR Humans TDtB ST May 2012.mwDeck.dck
@@ -0,0 +1,23 @@
+3 [C14:88] Silverblade Paladin
+2 [C13:11] Fiend Hunter
+3 [NPH:161] Sword of War and Peace
+3 [M12:156] Stormblood Berserker
+1 [AVR:229] Slayers' Stronghold
+3 [UNH:139] Mountain
+4 [AVR:226] Cavern of Souls
+4 [AVR:144] Lightning Mauler
+3 [M12:23] Honor of the Pure
+12 [UNH:136] Plains
+3 [MBS:14] Mirran Crusader
+3 [DKA:24] Thalia, Guardian of Thraben
+4 [ISD:238] Clifftop Retreat
+4 [ISD:6] Champion of the Parish
+4 [MBS:8] Hero of Bladehold
+2 [DKA:8] Gather the Townsfolk
+2 [CNS:69] Doomed Traveler
+SB: 2 [M14:215] Ratchet Bomb
+SB: 1 [BNG:25] Revoke Existence
+SB: 3 [AVR:166] Zealous Conscripts
+SB: 3 [M12:11] Celestial Purge
+SB: 3 [M13:22] Oblivion Ring
+SB: 3 [M12:40] Timely Reinforcements
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Weenie White TDtB ST Dec 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Weenie White TDtB ST Dec 2012.mwDeck.dck
new file mode 100644
index 0000000000..5c0837c838
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Weenie White TDtB ST Dec 2012.mwDeck.dck
@@ -0,0 +1,23 @@
+4 [M13:38] War Falcon
+2 [AVR:33] Riders of Gavony
+4 [C14:88] Silverblade Paladin
+4 [AVR:83] Wingcrafter
+4 [M13:225] Glacial Fortress
+4 [ISD:28] Rally the Peasants
+4 [RTR:241] Hallowed Fountain
+4 [AVR:226] Cavern of Souls
+2 [RTR:247] Steam Vents
+4 [ISD:213] Geist of Saint Traft
+4 [M13:21] Knight of Glory
+2 [ISD:244] Moorland Haunt
+4 [RTR:17] Precinct Captain
+6 [UNH:136] Plains
+3 [DKA:24] Thalia, Guardian of Thraben
+1 [ISD:238] Clifftop Retreat
+4 [ISD:6] Champion of the Parish
+SB: 2 [RTR:155] Detention Sphere
+SB: 2 [M14:1] Ajani, Caller of the Pride
+SB: 3 [RTR:214] Dryad Militant
+SB: 3 [AVR:18] Divine Deflection
+SB: 4 [ISD:5] Bonds of Faith
+SB: 1 [M13:22] Oblivion Ring
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Zombie Pod TDtB ST Jul 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Zombie Pod TDtB ST Jul 2012.mwDeck.dck
new file mode 100644
index 0000000000..5dcee4085b
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Zombie Pod TDtB ST Jul 2012.mwDeck.dck
@@ -0,0 +1,27 @@
+2 [MBS:43] Go for the Throat
+1 [AVR:89] Butcher Ghoul
+3 [AVR:86] Blood Artist
+4 [M13:222] Dragonskull Summit
+3 [NPH:104] Birthing Pod
+4 [ISD:97] Diregraf Ghoul
+2 [C14:167] Tragic Slip
+2 [DKA:138] Falkenrath Aristocrat
+3 [AVR:104] Gloom Surgeon
+3 [NPH:42] Phyrexian Metamorph
+4 [DKA:63] Geralf's Messenger
+1 [NPH:68] Phyrexian Obliterator
+1 [AVR:166] Zealous Conscripts
+2 [SOM:63] Fume Spitter
+4 [DKA:64] Gravecrawler
+2 [MBS:115] Mortarpod
+4 [SOM:224] Blackcleave Cliffs
+3 [ISD:249] Woodland Cemetery
+12 [UNH:138] Swamp
+SB: 1 [M12:151] Manic Vandal
+SB: 2 [NPH:74] Surgical Extraction
+SB: 2 [NPH:78] Act of Aggression
+SB: 2 [AVR:129] Bonfire of the Damned
+SB: 1 [NPH:68] Phyrexian Obliterator
+SB: 2 [M14:96] Doom Blade
+SB: 3 [KTK:69] Despise
+SB: 2 [ISD:105] Liliana of the Veil
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Zombies G TDtB ST Nov 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Zombies G TDtB ST Nov 2012.mwDeck.dck
new file mode 100644
index 0000000000..a98c3ed170
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Zombies G TDtB ST Nov 2012.mwDeck.dck
@@ -0,0 +1,21 @@
+4 [RTR:82] Ultimate Price
+4 [M13:185] Rancor
+4 [RTR:243] Overgrown Tomb
+4 [RTR:177] Lotleth Troll
+4 [ISD:97] Diregraf Ghoul
+3 [AVR:226] Cavern of Souls
+4 [DKA:63] Geralf's Messenger
+2 [RTR:213] Deathrite Shaman
+4 [RTR:158] Dreg Mangler
+2 [M13:96] Knight of Infamy
+4 [DKA:64] Gravecrawler
+2 [C14:161] Sign in Blood
+2 [C13:290] Golgari Guildgate
+4 [ISD:249] Woodland Cemetery
+4 [M15:92] Crippling Blight
+9 [UNH:138] Swamp
+SB: 4 [C13:97] Vampire Nighthawk
+SB: 2 [RTR:213] Deathrite Shaman
+SB: 2 [M13:96] Knight of Infamy
+SB: 4 [M14:97] Duress
+SB: 3 [RTR:164] Golgari Charm
diff --git a/Mage.Client/release/sample-decks/Decks to Beat/Zombies TDtB ST Apr 2012.mwDeck.dck b/Mage.Client/release/sample-decks/Decks to Beat/Zombies TDtB ST Apr 2012.mwDeck.dck
new file mode 100644
index 0000000000..294284643a
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Decks to Beat/Zombies TDtB ST Apr 2012.mwDeck.dck
@@ -0,0 +1,22 @@
+3 [MBS:43] Go for the Throat
+4 [M13:223] Drowned Catacomb
+4 [DKA:135] Diregraf Captain
+2 [NPH:61] Geth's Verdict
+4 [ISD:97] Diregraf Ghoul
+4 [C14:167] Tragic Slip
+4 [DKA:63] Geralf's Messenger
+2 [M12:86] Cemetery Reaper
+2 [SOM:63] Fume Spitter
+4 [DKA:64] Gravecrawler
+4 [SOM:226] Darkslick Shores
+3 [MBS:115] Mortarpod
+4 [DKA:68] Highborn Ghoul
+4 [M12:72] Phantasmal Image
+12 [UNH:138] Swamp
+SB: 2 [NPH:107] Corrosive Gale
+SB: 1 [NPH:61] Geth's Verdict
+SB: 4 [NPH:74] Surgical Extraction
+SB: 3 [M14:215] Ratchet Bomb
+SB: 1 [M14:96] Doom Blade
+SB: 2 [ISD:96] Dead Weight
+SB: 2 [ISD:105] Liliana of the Veil
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Abzan Control 58 PT Dragons of Tarkir (Brussels) ST 4-12-15.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Abzan Control 58 PT Dragons of Tarkir (Brussels) ST 4-12-15.dck
new file mode 100644
index 0000000000..9e68cd03f6
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Abzan Control 58 PT Dragons of Tarkir (Brussels) ST 4-12-15.dck
@@ -0,0 +1,30 @@
+2 [UNH:140] Forest
+4 [JOU:165] Temple of Malady
+4 [KTK:248] Windswept Heath
+4 [THS:227] Temple of Silence
+4 [THS:107] Thoughtseize
+2 [M15:241] Caves of Koilos
+4 [KTK:200] Siege Rhino
+2 [BNG:61] Bile Blight
+3 [M15:244] Llanowar Wastes
+2 [KTK:210] Utter End
+4 [BNG:119] Courser of Kruphix
+4 [KTK:241] Sandsteppe Citadel
+1 [M15:103] Liliana Vess
+2 [DTK:124] Ultimate Price
+4 [KTK:161] Abzan Charm
+1 [M15:248] Urborg, Tomb of Yawgmoth
+1 [KTK:8] End Hostilities
+1 [FRF:1] Ugin, the Spirit Dragon
+4 [THS:90] Hero's Downfall
+2 [FRF:87] Tasigur, the Golden Fang
+2 [UNH:136] Plains
+3 [THS:9] Elspeth, Sun's Champion
+SB: 1 [BNG:61] Bile Blight
+SB: 2 [C14:158] Read the Bones
+SB: 1 [KTK:9] Erase
+SB: 1 [KTK:8] End Hostilities
+SB: 3 [THS:193] Fleecemane Lion
+SB: 3 [BNG:65] Drown in Sorrow
+SB: 2 [M15:187] Nissa, Worldwaker
+SB: 2 [DTK:98] Duress
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Abzan Midrange 1 PT Khans of Tarkir (Honolulu) ST 10-12-14.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Abzan Midrange 1 PT Khans of Tarkir (Honolulu) ST 10-12-14.dck
new file mode 100644
index 0000000000..5eb461c2df
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Abzan Midrange 1 PT Khans of Tarkir (Honolulu) ST 10-12-14.dck
@@ -0,0 +1,31 @@
+2 [JOU:145] Ajani, Mentor of Heroes
+3 [UNH:140] Forest
+4 [JOU:165] Temple of Malady
+2 [KTK:31] Wingmate Roc
+4 [KTK:248] Windswept Heath
+1 [THS:227] Temple of Silence
+2 [KTK:202] Sorin, Solemn Visitor
+4 [THS:107] Thoughtseize
+2 [M15:241] Caves of Koilos
+4 [KTK:200] Siege Rhino
+2 [M15:244] Llanowar Wastes
+2 [KTK:210] Utter End
+4 [BNG:119] Courser of Kruphix
+4 [KTK:241] Sandsteppe Citadel
+4 [KTK:161] Abzan Charm
+1 [M15:248] Urborg, Tomb of Yawgmoth
+3 [THS:90] Hero's Downfall
+1 [JOU:163] Mana Confluence
+2 [C14:191] Elvish Mystic
+2 [UNH:136] Plains
+3 [THS:9] Elspeth, Sun's Champion
+4 [THS:180] Sylvan Caryatid
+SB: 3 [BNG:61] Bile Blight
+SB: 1 [KTK:174] Duneblast
+SB: 1 [M15:103] Liliana Vess
+SB: 2 [KTK:81] Murderous Cut
+SB: 1 [KTK:8] End Hostilities
+SB: 1 [BNG:143] Unravel the AEther
+SB: 3 [BNG:65] Drown in Sorrow
+SB: 1 [M15:18] Mass Calcify
+SB: 2 [M15:187] Nissa, Worldwaker
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Abzan Midrange(1) 34 PT Khans of Tarkir (Honolulu) ST 10-12-14.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Abzan Midrange(1) 34 PT Khans of Tarkir (Honolulu) ST 10-12-14.dck
new file mode 100644
index 0000000000..5c98d3a282
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Abzan Midrange(1) 34 PT Khans of Tarkir (Honolulu) ST 10-12-14.dck
@@ -0,0 +1,33 @@
+1 [THS:110] Whip of Erebos
+2 [UNH:140] Forest
+1 [JOU:165] Temple of Malady
+4 [KTK:31] Wingmate Roc
+4 [KTK:248] Windswept Heath
+4 [THS:227] Temple of Silence
+2 [KTK:202] Sorin, Solemn Visitor
+1 [THS:107] Thoughtseize
+4 [KTK:200] Siege Rhino
+2 [BNG:61] Bile Blight
+4 [M15:244] Llanowar Wastes
+1 [KTK:163] Anafenza, the Foremost
+4 [BNG:119] Courser of Kruphix
+4 [KTK:241] Sandsteppe Citadel
+3 [KTK:161] Abzan Charm
+1 [M15:248] Urborg, Tomb of Yawgmoth
+4 [THS:90] Hero's Downfall
+4 [THS:193] Fleecemane Lion
+1 [JOU:163] Mana Confluence
+1 [BNG:165] Temple of Plenty
+1 [BNG:65] Drown in Sorrow
+2 [UNH:136] Plains
+4 [THS:180] Sylvan Caryatid
+1 [UNH:138] Swamp
+SB: 1 [KTK:210] Utter End
+SB: 1 [KTK:163] Anafenza, the Foremost
+SB: 1 [JOU:59] Agent of Erebos
+SB: 1 [M15:169] Back to Nature
+SB: 1 [KTK:9] Erase
+SB: 4 [KTK:8] End Hostilities
+SB: 1 [M15:117] Stain the Mind
+SB: 3 [THS:107] Thoughtseize
+SB: 2 [THS:9] Elspeth, Sun's Champion
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Abzan Midrange(2) 34 PT Khans of Tarkir (Honolulu) ST 10-12-14.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Abzan Midrange(2) 34 PT Khans of Tarkir (Honolulu) ST 10-12-14.dck
new file mode 100644
index 0000000000..63966c2a49
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Abzan Midrange(2) 34 PT Khans of Tarkir (Honolulu) ST 10-12-14.dck
@@ -0,0 +1,28 @@
+2 [UNH:140] Forest
+4 [JOU:165] Temple of Malady
+4 [KTK:248] Windswept Heath
+1 [THS:227] Temple of Silence
+3 [KTK:202] Sorin, Solemn Visitor
+4 [THS:107] Thoughtseize
+4 [M15:241] Caves of Koilos
+2 [KTK:134] Heir of the Wilds
+4 [KTK:200] Siege Rhino
+2 [M15:244] Llanowar Wastes
+3 [KTK:163] Anafenza, the Foremost
+4 [KTK:241] Sandsteppe Citadel
+3 [KTK:161] Abzan Charm
+2 [M15:248] Urborg, Tomb of Yawgmoth
+4 [KTK:192] Rakshasa Deathdealer
+4 [THS:90] Hero's Downfall
+4 [THS:193] Fleecemane Lion
+1 [M15:119] Ulcerate
+1 [UNH:136] Plains
+4 [BNG:75] Herald of Torment
+SB: 3 [BNG:61] Bile Blight
+SB: 2 [KTK:9] Erase
+SB: 1 [THS:110] Whip of Erebos
+SB: 1 [JOU:145] Ajani, Mentor of Heroes
+SB: 2 [KTK:31] Wingmate Roc
+SB: 3 [BNG:65] Drown in Sorrow
+SB: 2 [KTK:69] Despise
+SB: 1 [JOU:82] Silence the Believers
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Affinity(1) 58 World Championship 2004 (San Francisco) ST 9-5-04.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Affinity(1) 58 World Championship 2004 (San Francisco) ST 9-5-04.dck
new file mode 100644
index 0000000000..914a8d00c1
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Affinity(1) 58 World Championship 2004 (San Francisco) ST 9-5-04.dck
@@ -0,0 +1,37 @@
+1 [ATQ:88] Atog
+2 [MRD:283] Seat of the Synod
+3 [MMA:198] Arcbound Ravager
+1 [HOP:136] Seat of the Synod
+4 [MRD:62] Disciple of the Vault
+4 [DST:91] AEther Vial
+2 [MRD:286] Vault of Whispers
+1 [FNMP:105] Myr Enforcer
+1 [DDF:40] Arcbound Worker
+3 [HOP:110] Cranial Plating
+2 [MRD:86] Atog
+1 [MM2:206] Cranial Plating
+3 [INV:299] Chromatic Sphere
+1 [MRD:151] Chromatic Sphere
+2 [DST:163] Blinkmoth Nexus
+1 [DST:100] Arcbound Ravager
+1 [MMA:220] Blinkmoth Nexus
+1 [MM2:64] Thoughtcast
+1 [MMA:223] Glimmervoid
+3 [MMA:201] Arcbound Worker
+4 [C14:299] Great Furnace
+1 [C14:255] Myr Retriever
+1 [MMA:207] Frogmite
+1 [MM2:236] Blinkmoth Nexus
+2 [MMA:209] Myr Enforcer
+1 [MRD:211] Myr Enforcer
+3 [C14:290] Darksteel Citadel
+1 [DDF:51] Frogmite
+1 [DDF:74] Seat of the Synod
+2 [MM2:215] Frogmite
+3 [MRD:54] Thoughtcast
+2 [HOP:141] Vault of Whispers
+SB: 2 [C14:255] Myr Retriever
+SB: 1 [MRD:281] Glimmervoid
+SB: 4 [5DN:147] Relic Barrier
+SB: 1 [MRD:51] Somber Hoverguard
+SB: 3 [M11:154] Pyroclasm
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Affinity(2) 58 World Championship 2004 (San Francisco) ST 9-5-04.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Affinity(2) 58 World Championship 2004 (San Francisco) ST 9-5-04.dck
new file mode 100644
index 0000000000..431d4219fa
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Affinity(2) 58 World Championship 2004 (San Francisco) ST 9-5-04.dck
@@ -0,0 +1,37 @@
+4 [MMA:198] Arcbound Ravager
+2 [HOP:136] Seat of the Synod
+1 [DDM:68] Night's Whisper
+1 [MM2:57] Somber Hoverguard
+2 [5DN:55] Night's Whisper
+4 [MRD:62] Disciple of the Vault
+1 [MRD:286] Vault of Whispers
+1 [ME4:243] City of Brass
+1 [DDF:40] Arcbound Worker
+2 [HOP:110] Cranial Plating
+1 [MM2:206] Cranial Plating
+2 [7ED:327] City of Brass
+1 [MRD:172] Frogmite
+2 [INV:299] Chromatic Sphere
+2 [GPX:3] Chrome Mox
+1 [MRD:151] Chromatic Sphere
+1 [MRD:152] Chrome Mox
+1 [5DN:113] Cranial Plating
+1 [DST:163] Blinkmoth Nexus
+3 [M15:161] Shrapnel Blast
+1 [MMA:220] Blinkmoth Nexus
+1 [MMA:221] City of Brass
+1 [MM2:64] Thoughtcast
+3 [MMA:201] Arcbound Worker
+2 [C14:299] Great Furnace
+3 [MMA:207] Frogmite
+3 [MRD:51] Somber Hoverguard
+1 [MM2:236] Blinkmoth Nexus
+2 [DDF:74] Seat of the Synod
+1 [MRD:54] Thoughtcast
+3 [HOP:141] Vault of Whispers
+2 [DDF:71] Thoughtcast
+3 [M12:63] Mana Leak
+SB: 2 [10E:182] Terror
+SB: 4 [THS:38] Annul
+SB: 4 [M11:154] Pyroclasm
+SB: 3 [DST:69] Slobad, Goblin Tinkerer
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Astral Slide 1 World Championship 2004 (San Francisco) ST 9-5-04.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Astral Slide 1 World Championship 2004 (San Francisco) ST 9-5-04.dck
new file mode 100644
index 0000000000..96997d1ec6
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Astral Slide 1 World Championship 2004 (San Francisco) ST 9-5-04.dck
@@ -0,0 +1,27 @@
+4 [C13:10] Eternal Dragon
+2 [C14:97] Wing Shards
+1 [UDS:117] Plow Under
+4 [CMD:152] Eternal Witness
+7 [UNH:140] Forest
+2 [CMD:3] Akroma's Vengeance
+1 [FNMP:76] Astral Slide
+4 [KTK:248] Windswept Heath
+4 [C14:316] Tranquil Thicket
+4 [C13:27] Wrath of God
+2 [ONS:50] Renewed Faith
+4 [C14:310] Secluded Steppe
+3 [VMA:13] Astral Slide
+4 [M12:190] Rampant Growth
+4 [10E:308] Viridian Shaman
+2 [VMA:42] Renewed Faith
+2 [C14:70] Decree of Justice
+6 [UNH:136] Plains
+SB: 2 [DST:79] Oxidize
+SB: 1 [5DN:92] Rude Awakening
+SB: 2 [UDS:117] Plow Under
+SB: 2 [MPRP:7] Oxidize
+SB: 2 [5ED:296] Circle of Protection: Red
+SB: 1 [MMA:160] Rude Awakening
+SB: 1 [9ED:11] Circle of Protection: Red
+SB: 1 [8ED:272] Plow Under
+SB: 3 [MRD:237] Scrabbling Claws
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Astral Slide 58 World Championship 2004 (San Francisco) ST 9-5-04.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Astral Slide 58 World Championship 2004 (San Francisco) ST 9-5-04.dck
new file mode 100644
index 0000000000..31dc11bd2c
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Astral Slide 58 World Championship 2004 (San Francisco) ST 9-5-04.dck
@@ -0,0 +1,31 @@
+1 [INV:327] Shivan Oasis
+4 [C13:10] Eternal Dragon
+4 [CMD:152] Eternal Witness
+1 [ONS:4] Astral Slide
+5 [UNH:140] Forest
+2 [FNMP:76] Astral Slide
+1 [KTK:249] Wooded Foothills
+2 [C13:119] Slice and Dice
+4 [C14:316] Tranquil Thicket
+4 [C13:27] Wrath of God
+1 [UNH:139] Mountain
+1 [ONS:50] Renewed Faith
+4 [C14:310] Secluded Steppe
+1 [VMA:13] Astral Slide
+3 [C13:154] Krosan Tusker
+3 [VMA:178] Lightning Rift
+2 [10E:308] Viridian Shaman
+3 [VMA:42] Renewed Faith
+4 [C14:271] Solemn Simulacrum
+1 [DDE:65] Shivan Oasis
+1 [8ED:326] Shivan Oasis
+8 [UNH:136] Plains
+SB: 1 [DST:79] Oxidize
+SB: 2 [UDS:117] Plow Under
+SB: 2 [MPRP:7] Oxidize
+SB: 1 [LEG:237] Relic Barrier
+SB: 2 [5DN:147] Relic Barrier
+SB: 2 [SCG:23] Silver Knight
+SB: 2 [DST:146] Sundering Titan
+SB: 2 [8ED:272] Plow Under
+SB: 1 [FNMP:46] Silver Knight
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/BGW Angels 58 PT San Diego ST 2-21-10.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/BGW Angels 58 PT San Diego ST 2-21-10.dck
new file mode 100644
index 0000000000..6ffd8e665a
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/BGW Angels 58 PT San Diego ST 2-21-10.dck
@@ -0,0 +1,31 @@
+2 [C14:77] Marshal's Anthem
+1 [MM2:151] Noble Hierarch
+3 [WWK:144] Stirring Wildwood
+1 [M13:229] Sunpetal Grove
+1 [WWK:142] Sejiri Steppe
+4 [UNH:140] Forest
+4 [M11:7] Baneslayer Angel
+4 [CMD:25] Path to Exile
+1 [MMA:178] Knight of the Reliquary
+4 [ZEN:229] Verdant Catacombs
+4 [ZEN:168] Lotus Cobra
+2 [DDG:1] Knight of the Reliquary
+2 [AVR:169] Borderland Ranger
+4 [UNH:136] Plains
+2 [ALA:9] Elspeth, Knight-Errant
+2 [UNH:138] Swamp
+1 [CON:113] Knight of the Reliquary
+1 [JR:66] Noble Hierarch
+1 [CON:95] Thornling
+1 [C14:313] Tectonic Edge
+4 [ARB:92] Maelstrom Pulse
+4 [ZEN:219] Marsh Flats
+1 [M10:191] Master of the Wild Hunt
+2 [CON:87] Noble Hierarch
+4 [ZEN:11] Emeria Angel
+SB: 3 [ARB:81] Identity Crisis
+SB: 1 [C14:77] Marshal's Anthem
+SB: 4 [ZEN:25] Luminarch Ascension
+SB: 4 [M12:11] Celestial Purge
+SB: 1 [CON:95] Thornling
+SB: 2 [ZEN:39] World Queller
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Bant 58 World Championship 2009 (Rome) ST 11-19-09.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Bant 58 World Championship 2009 (Rome) ST 11-19-09.dck
new file mode 100644
index 0000000000..61de3d1503
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Bant 58 World Championship 2009 (Rome) ST 11-19-09.dck
@@ -0,0 +1,31 @@
+4 [ALA:198] Steward of Valeron
+1 [CON:113] Knight of the Reliquary
+4 [ALA:188] Rhox War Monk
+4 [M13:229] Sunpetal Grove
+4 [UNH:140] Forest
+2 [M11:1] Ajani Goldmane
+4 [ZEN:220] Misty Rainforest
+4 [M11:7] Baneslayer Angel
+4 [CMD:25] Path to Exile
+3 [C13:318] Seaside Citadel
+1 [M13:8] Captain of the Watch
+1 [ZEN:211] Arid Mesa
+2 [M12:165] Birds of Paradise
+1 [ZEN:216] Kabira Crossroads
+1 [MMA:178] Knight of the Reliquary
+1 [ZEN:229] Verdant Catacombs
+2 [ZEN:219] Marsh Flats
+4 [CON:87] Noble Hierarch
+2 [DDG:1] Knight of the Reliquary
+4 [ZEN:11] Emeria Angel
+1 [AVR:169] Borderland Ranger
+3 [M12:23] Honor of the Pure
+2 [UNH:136] Plains
+1 [UNH:137] Island
+SB: 3 [C14:66] Brave the Elements
+SB: 3 [ZEN:25] Luminarch Ascension
+SB: 1 [C14:297] Gargoyle Castle
+SB: 1 [M13:8] Captain of the Watch
+SB: 1 [AVR:169] Borderland Ranger
+SB: 2 [ZEN:39] World Queller
+SB: 4 [ARB:69] Grizzled Leotau
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Black Kessig 34 PT Dark Ascension (Honolulu) ST 2-12-12.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Black Kessig 34 PT Dark Ascension (Honolulu) ST 2-12-12.dck
new file mode 100644
index 0000000000..e44f222a05
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Black Kessig 34 PT Dark Ascension (Honolulu) ST 2-12-12.dck
@@ -0,0 +1,32 @@
+1 [MBS:43] Go for the Throat
+6 [UNH:140] Forest
+1 [MBS:96] Glissa, the Traitor
+2 [MBS:81] Green Sun's Zenith
+1 [M13:222] Dragonskull Summit
+4 [M12:188] Primeval Titan
+1 [M12:165] Birds of Paradise
+1 [UNH:139] Mountain
+3 [C14:136] Black Sun's Zenith
+2 [C13:134] Acidic Slime
+4 [C14:145] Grave Titan
+1 [C14:298] Ghost Quarter
+2 [ISD:243] Kessig Wolf Run
+4 [M12:190] Rampant Growth
+2 [M14:215] Ratchet Bomb
+2 [C14:295] Evolving Wilds
+4 [MBS:145] Inkmoth Nexus
+4 [C14:271] Solemn Simulacrum
+4 [MBS:134] Sphere of the Suns
+3 [M14:96] Doom Blade
+4 [ISD:249] Woodland Cemetery
+4 [UNH:138] Swamp
+SB: 1 [M13:174] Garruk, Primal Hunter
+SB: 1 [C14:136] Black Sun's Zenith
+SB: 1 [MBS:94] Viridian Corrupter
+SB: 2 [NPH:130] Batterskull
+SB: 2 [MBS:92] Thrun, the Last Troll
+SB: 1 [ISD:207] Tree of Redemption
+SB: 2 [C13:249] Nihil Spellbomb
+SB: 2 [ISD:94] Curse of Death's Hold
+SB: 2 [ISD:127] Ancient Grudge
+SB: 1 [ISD:105] Liliana of the Veil
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Boros 34 World Championship 2009 (Rome) ST 11-19-09.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Boros 34 World Championship 2009 (Rome) ST 11-19-09.dck
new file mode 100644
index 0000000000..78e5218940
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Boros 34 World Championship 2009 (Rome) ST 11-19-09.dck
@@ -0,0 +1,25 @@
+4 [ALA:21] Ranger of Eos
+3 [M12:15] Elite Vanguard
+4 [M11:149] Lightning Bolt
+4 [CMD:25] Path to Exile
+4 [ZEN:211] Arid Mesa
+4 [ZEN:141] Plated Geopede
+4 [UNH:139] Mountain
+3 [ZEN:23] Kor Skyfisher
+4 [ZEN:36] Steppe Lynx
+2 [ZEN:119] Burst Lightning
+4 [ZEN:219] Marsh Flats
+4 [ZEN:223] Scalding Tarn
+2 [ZEN:125] Goblin Bushwhacker
+4 [ZEN:126] Goblin Guide
+2 [ZEN:226] Teetering Peaks
+6 [UNH:136] Plains
+2 [ALA:9] Elspeth, Knight-Errant
+SB: 3 [M12:150] Manabarbs
+SB: 1 [ZEN:119] Burst Lightning
+SB: 2 [CMD:17] Journey to Nowhere
+SB: 2 [M11:7] Baneslayer Angel
+SB: 1 [M12:11] Celestial Purge
+SB: 2 [M13:22] Oblivion Ring
+SB: 3 [M10:14] Harm's Way
+SB: 1 [ALA:9] Elspeth, Knight-Errant
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Boros Landfall 2 PT Paris ST 2-13-11.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Boros Landfall 2 PT Paris ST 2-13-11.dck
new file mode 100644
index 0000000000..11d07714d3
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Boros Landfall 2 PT Paris ST 2-13-11.dck
@@ -0,0 +1,28 @@
+2 [MBS:66] Hero of Oxid Ridge
+3 [M11:149] Lightning Bolt
+4 [ZEN:211] Arid Mesa
+2 [ZEN:195] Adventuring Gear
+4 [ZEN:141] Plated Geopede
+5 [UNH:139] Mountain
+4 [ZEN:36] Steppe Lynx
+4 [ZEN:219] Marsh Flats
+4 [ZEN:223] Scalding Tarn
+2 [CMD:17] Journey to Nowhere
+1 [MBS:138] Sword of Feast and Famine
+4 [ZEN:126] Goblin Guide
+1 [SOM:208] Sword of Body and Mind
+1 [ZEN:226] Teetering Peaks
+3 [C14:295] Evolving Wilds
+4 [M11:33] Squadron Hawk
+1 [SOM:94] Koth of the Hammer
+1 [SOM:104] Spikeshot Elder
+3 [WWK:20] Stoneforge Mystic
+5 [UNH:136] Plains
+2 [MBS:14] Mirran Crusader
+SB: 1 [M13:141] Mark of Mutiny
+SB: 1 [WWK:122] Basilisk Collar
+SB: 3 [WWK:11] Kor Firewalker
+SB: 1 [SOM:94] Koth of the Hammer
+SB: 4 [SOM:81] Arc Trail
+SB: 1 [MBS:14] Mirran Crusader
+SB: 4 [WWK:79] Cunning Sparkmage
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Boros Landfall 34 PT Paris ST 2-13-11.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Boros Landfall 34 PT Paris ST 2-13-11.dck
new file mode 100644
index 0000000000..c231866069
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Boros Landfall 34 PT Paris ST 2-13-11.dck
@@ -0,0 +1,27 @@
+2 [M11:149] Lightning Bolt
+4 [ZEN:211] Arid Mesa
+1 [C14:229] Bonehoard
+2 [C14:315] Terramorphic Expanse
+2 [ZEN:195] Adventuring Gear
+3 [ZEN:141] Plated Geopede
+3 [UNH:139] Mountain
+4 [ZEN:36] Steppe Lynx
+4 [ZEN:219] Marsh Flats
+4 [ZEN:223] Scalding Tarn
+3 [CMD:17] Journey to Nowhere
+4 [ZEN:126] Goblin Guide
+1 [SOM:208] Sword of Body and Mind
+2 [ZEN:226] Teetering Peaks
+4 [M11:33] Squadron Hawk
+1 [SOM:94] Koth of the Hammer
+4 [WWK:20] Stoneforge Mystic
+2 [SOM:81] Arc Trail
+6 [UNH:136] Plains
+4 [MBS:14] Mirran Crusader
+SB: 2 [M13:141] Mark of Mutiny
+SB: 3 [ZEN:25] Luminarch Ascension
+SB: 1 [CMD:17] Journey to Nowhere
+SB: 1 [MBS:138] Sword of Feast and Famine
+SB: 4 [WWK:11] Kor Firewalker
+SB: 2 [SOM:94] Koth of the Hammer
+SB: 2 [SOM:81] Arc Trail
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Boss Naya 34 PT San Diego ST 2-21-10.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Boss Naya 34 PT San Diego ST 2-21-10.dck
new file mode 100644
index 0000000000..6005b7cf26
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Boss Naya 34 PT San Diego ST 2-21-10.dck
@@ -0,0 +1,37 @@
+1 [WWK:141] Raging Ravine
+2 [MM2:151] Noble Hierarch
+4 [ALA:21] Ranger of Eos
+2 [WWK:144] Stirring Wildwood
+1 [WWK:122] Basilisk Collar
+1 [M13:228] Rootbound Crag
+1 [WWK:142] Sejiri Steppe
+5 [UNH:140] Forest
+3 [M11:149] Lightning Bolt
+3 [ZEN:220] Misty Rainforest
+1 [CMD:25] Path to Exile
+1 [ZEN:182] Scute Mob
+2 [UNH:139] Mountain
+1 [C13:178] Behemoth Sledge
+1 [DDG:1] Knight of the Reliquary
+2 [WWK:20] Stoneforge Mystic
+2 [UNH:136] Plains
+1 [ALA:9] Elspeth, Knight-Errant
+4 [ALA:152] Wild Nacatl
+2 [ALA:154] Ajani Vengeant
+3 [CON:113] Knight of the Reliquary
+2 [JR:66] Noble Hierarch
+4 [ZEN:211] Arid Mesa
+2 [M12:165] Birds of Paradise
+2 [C14:315] Terramorphic Expanse
+1 [C14:313] Tectonic Edge
+4 [ARB:50] Bloodbraid Elf
+2 [M13:22] Oblivion Ring
+SB: 2 [M12:150] Manabarbs
+SB: 1 [C13:178] Behemoth Sledge
+SB: 1 [WWK:122] Basilisk Collar
+SB: 1 [ZEN:126] Goblin Guide
+SB: 2 [ARB:67] Dauntless Escort
+SB: 2 [M11:7] Baneslayer Angel
+SB: 1 [M13:22] Oblivion Ring
+SB: 1 [WWK:20] Stoneforge Mystic
+SB: 4 [WWK:79] Cunning Sparkmage
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Br Vampires 58 World Championship 2010 (Chiba) ST 12-12-10.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Br Vampires 58 World Championship 2010 (Chiba) ST 12-12-10.dck
new file mode 100644
index 0000000000..47947370be
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Br Vampires 58 World Championship 2010 (Chiba) ST 12-12-10.dck
@@ -0,0 +1,22 @@
+3 [C13:99] Viscera Seer
+4 [M11:149] Lightning Bolt
+4 [ZEN:83] Bloodghast
+4 [M13:222] Dragonskull Summit
+3 [WWK:139] Lavaclaw Reaches
+4 [ZEN:89] Gatekeeper of Malakir
+3 [M11:90] Dark Tutelage
+2 [C14:168] Vampire Hexmage
+2 [ZEN:119] Burst Lightning
+4 [ZEN:219] Marsh Flats
+4 [WWK:62] Pulse Tracker
+4 [ZEN:115] Vampire Lacerator
+4 [SOM:224] Blackcleave Cliffs
+3 [SOM:81] Arc Trail
+4 [WWK:59] Kalastria Highborn
+8 [UNH:138] Swamp
+SB: 4 [M11:92] Demon of Death's Gate
+SB: 4 [SOM:78] Skinrender
+SB: 2 [C13:97] Vampire Nighthawk
+SB: 1 [ZEN:88] Feast of Blood
+SB: 3 [M14:97] Duress
+SB: 1 [ROE:214] Sarkhan the Mad
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Bug Critical 58 World Championship 2005 (Yokohama) ST 12-4-05.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Bug Critical 58 World Championship 2005 (Yokohama) ST 12-4-05.dck
new file mode 100644
index 0000000000..c8a29d9076
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Bug Critical 58 World Championship 2005 (Yokohama) ST 12-4-05.dck
@@ -0,0 +1,26 @@
+1 [CHK:279] Minamo, School at Water's Edge
+4 [RAV:201] Dimir Cutpurse
+4 [UNH:140] Forest
+4 [GTC:249] Watery Grave
+1 [CHK:280] Okina, Temple to the Grandfathers
+4 [M10:100] Hypnotic Specter
+3 [BOK:163] Umezawa's Jitte
+4 [RAV:161] Elves of Deep Shadow
+4 [M12:165] Birds of Paradise
+2 [CHK:74] Meloku the Clouded Mirror
+4 [RTR:243] Overgrown Tomb
+4 [M15:249] Yavimaya Coast
+3 [CHK:65] Hinder
+3 [BOK:56] Threads of Disloyalty
+4 [BOK:44] Ninja of the Deep Hours
+3 [DGM:93] Putrefy
+1 [UNH:136] Plains
+1 [SOK:164] Oboro, Palace in the Clouds
+2 [UNH:137] Island
+4 [M12:63] Mana Leak
+SB: 2 [CMD:163] Kodama's Reach
+SB: 4 [RAV:214] Loxodon Hierarch
+SB: 1 [9ED:11] Circle of Protection: Red
+SB: 1 [8ED:13] Circle of Protection: Red
+SB: 3 [RAV:16] Faith's Fetters
+SB: 4 [CNS:177] Sakura-Tribe Elder
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Critical Mass 58 World Championship 2005 (Yokohama) ST 12-4-05.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Critical Mass 58 World Championship 2005 (Yokohama) ST 12-4-05.dck
new file mode 100644
index 0000000000..f7ebc9d56d
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Critical Mass 58 World Championship 2005 (Yokohama) ST 12-4-05.dck
@@ -0,0 +1,24 @@
+1 [CHK:279] Minamo, School at Water's Edge
+3 [CHK:268] Sensei's Divining Top
+1 [SOK:163] Miren, the Moaning Well
+4 [CHK:222] Kodama of the North Tree
+5 [UNH:140] Forest
+4 [BOK:165] Tendo Ice Bridge
+1 [CHK:280] Okina, Temple to the Grandfathers
+4 [BOK:163] Umezawa's Jitte
+4 [C14:204] Llanowar Elves
+4 [CNS:177] Sakura-Tribe Elder
+4 [C14:226] Wood Elves
+4 [CHK:74] Meloku the Clouded Mirror
+1 [RTR:243] Overgrown Tomb
+3 [CHK:72] Keiga, the Tide Star
+4 [M15:249] Yavimaya Coast
+4 [CHK:65] Hinder
+1 [SOK:164] Oboro, Palace in the Clouds
+5 [UNH:137] Island
+3 [M12:63] Mana Leak
+SB: 3 [KTK:142] Naturalize
+SB: 4 [BOK:56] Threads of Disloyalty
+SB: 3 [CHK:70] Jushi Apprentice
+SB: 3 [CHK:105] Cranial Extraction
+SB: 2 [SOK:121] Arashi, the Sky Asunder
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Dark Exalted 34 PT Kyoto ST 3-1-09.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Dark Exalted 34 PT Kyoto ST 3-1-09.dck
new file mode 100644
index 0000000000..ade6c6d193
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Dark Exalted 34 PT Kyoto ST 3-1-09.dck
@@ -0,0 +1,32 @@
+3 [ALA:185] Rafiq of the Many
+1 [MM2:151] Noble Hierarch
+4 [ALA:188] Rhox War Monk
+2 [UNH:140] Forest
+4 [ALA:202] Tidehollow Sculler
+2 [CMD:25] Path to Exile
+3 [10E:361] Treetop Village
+2 [10E:349] Brushland
+1 [C14:247] Loxodon Warhammer
+1 [M15:244] Llanowar Wastes
+1 [10E:347] Adarkar Wastes
+2 [M15:249] Yavimaya Coast
+4 [LRW:247] Doran, the Siege Tower
+3 [LRW:248] Gaddock Teeg
+3 [LRW:128] Nameless Inversion
+1 [UNH:136] Plains
+2 [SHM:229] Kitchen Finks
+2 [CON:141] Ancient Ziggurat
+1 [UNH:138] Swamp
+4 [MOR:147] Murmuring Bosk
+4 [SHM:245] Wilt-Leaf Liege
+1 [JR:66] Noble Hierarch
+4 [M12:165] Birds of Paradise
+1 [M15:241] Caves of Koilos
+2 [CON:87] Noble Hierarch
+2 [FNMP:118] Ancient Ziggurat
+SB: 2 [10E:182] Terror
+SB: 2 [CMD:25] Path to Exile
+SB: 2 [ALA:218] Relic of Progenitus
+SB: 4 [CON:90] Scattershot Archer
+SB: 2 [SHM:229] Kitchen Finks
+SB: 3 [SHM:208] Guttural Response
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Devotion to Black 58 PT Theros (Dublin) ST 10-13-13.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Devotion to Black 58 PT Theros (Dublin) ST 10-13-13.dck
new file mode 100644
index 0000000000..f2523f433e
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Devotion to Black 58 PT Theros (Dublin) ST 10-13-13.dck
@@ -0,0 +1,21 @@
+1 [THS:223] Nykthos, Shrine to Nyx
+4 [RTR:83] Underworld Connections
+2 [THS:110] Whip of Erebos
+2 [RTR:73] Pack Rat
+4 [RTR:63] Desecration Demon
+4 [THS:227] Temple of Silence
+4 [THS:107] Thoughtseize
+4 [C14:146] Gray Merchant of Asphodel
+4 [M14:101] Lifebane Zombie
+4 [THS:90] Hero's Downfall
+4 [M14:228] Mutavault
+4 [M14:96] Doom Blade
+2 [GTC:63] Devour Flesh
+1 [THS:85] Erebos, God of the Dead
+16 [UNH:138] Swamp
+SB: 4 [M14:123] Xathrid Necromancer
+SB: 1 [RTR:231] Pithing Needle
+SB: 4 [THS:100] Pharika's Cure
+SB: 4 [M14:97] Duress
+SB: 1 [GTC:63] Devour Flesh
+SB: 1 [THS:85] Erebos, God of the Dead
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Devotion to Blue 1 PT Theros (Dublin) ST 10-13-13.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Devotion to Blue 1 PT Theros (Dublin) ST 10-13-13.dck
new file mode 100644
index 0000000000..99901edebb
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Devotion to Blue 1 PT Theros (Dublin) ST 10-13-13.dck
@@ -0,0 +1,22 @@
+2 [THS:57] Omenspeaker
+2 [C14:104] Cyclonic Rift
+4 [RTR:215] Frostburn Weird
+3 [M14:228] Mutavault
+4 [M14:73] Tidebinder Mage
+1 [M14:51] Disperse
+4 [GTC:32] Cloudfin Raptor
+4 [RTR:218] Judge's Familiar
+2 [RTR:44] Jace, Architect of Thought
+4 [GTC:222] Nightveil Specter
+4 [THS:53] Master of Waves
+1 [THS:42] Bident of Thassa
+21 [UNH:137] Island
+4 [THS:66] Thassa, God of the Sea
+SB: 1 [RTR:231] Pithing Needle
+SB: 2 [DGM:11] AEtherling
+SB: 2 [M14:215] Ratchet Bomb
+SB: 1 [THS:71] Triton Tactics
+SB: 3 [M15:83] Wall of Frost
+SB: 1 [M14:228] Mutavault
+SB: 2 [RTR:44] Jace, Architect of Thought
+SB: 3 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Devotion to Blue 2 PT Theros (Dublin) ST 10-13-13.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Devotion to Blue 2 PT Theros (Dublin) ST 10-13-13.dck
new file mode 100644
index 0000000000..f4eab2cbb2
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Devotion to Blue 2 PT Theros (Dublin) ST 10-13-13.dck
@@ -0,0 +1,22 @@
+2 [THS:57] Omenspeaker
+2 [C14:104] Cyclonic Rift
+4 [RTR:215] Frostburn Weird
+3 [M14:228] Mutavault
+4 [M14:73] Tidebinder Mage
+1 [GTC:44] Rapid Hybridization
+4 [GTC:32] Cloudfin Raptor
+4 [RTR:218] Judge's Familiar
+1 [RTR:44] Jace, Architect of Thought
+4 [GTC:222] Nightveil Specter
+4 [THS:53] Master of Waves
+2 [THS:42] Bident of Thassa
+21 [UNH:137] Island
+4 [THS:66] Thassa, God of the Sea
+SB: 1 [RTR:231] Pithing Needle
+SB: 2 [M14:215] Ratchet Bomb
+SB: 3 [M15:83] Wall of Frost
+SB: 1 [THS:71] Triton Tactics
+SB: 1 [M14:228] Mutavault
+SB: 3 [RTR:44] Jace, Architect of Thought
+SB: 1 [M14:60] Jace, Memory Adept
+SB: 3 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Devotion to Blue 34 PT Theros (Dublin) ST 10-13-13.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Devotion to Blue 34 PT Theros (Dublin) ST 10-13-13.dck
new file mode 100644
index 0000000000..d9c3c4c10c
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Devotion to Blue 34 PT Theros (Dublin) ST 10-13-13.dck
@@ -0,0 +1,21 @@
+1 [THS:223] Nykthos, Shrine to Nyx
+1 [THS:57] Omenspeaker
+2 [C14:104] Cyclonic Rift
+4 [RTR:215] Frostburn Weird
+4 [M14:228] Mutavault
+4 [M14:73] Tidebinder Mage
+4 [GTC:32] Cloudfin Raptor
+4 [RTR:218] Judge's Familiar
+1 [RTR:44] Jace, Architect of Thought
+4 [GTC:222] Nightveil Specter
+4 [THS:53] Master of Waves
+3 [THS:42] Bident of Thassa
+20 [UNH:137] Island
+4 [THS:66] Thassa, God of the Sea
+SB: 1 [THS:57] Omenspeaker
+SB: 1 [THS:47] Dissolve
+SB: 3 [THS:49] Gainsay
+SB: 2 [DGM:11] AEtherling
+SB: 3 [GTC:44] Rapid Hybridization
+SB: 3 [RTR:44] Jace, Architect of Thought
+SB: 2 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Devotion to Green 34 PT Theros (Dublin) ST 10-13-13.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Devotion to Green 34 PT Theros (Dublin) ST 10-13-13.dck
new file mode 100644
index 0000000000..53681412e8
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Devotion to Green 34 PT Theros (Dublin) ST 10-13-13.dck
@@ -0,0 +1,25 @@
+4 [THS:223] Nykthos, Shrine to Nyx
+4 [THS:224] Temple of Abandon
+9 [UNH:140] Forest
+2 [THS:166] Nylea, God of the Hunt
+4 [GTC:216] Burning-Tree Emissary
+2 [THS:209] Xenagos, the Reveler
+4 [M14:172] Garruk, Caller of Beasts
+3 [M14:195] Scavenging Ooze
+2 [UNH:139] Mountain
+4 [GTC:247] Stomping Ground
+4 [THS:182] Voyaging Satyr
+3 [THS:150] Arbor Colossus
+4 [THS:172] Polukranos, World Eater
+3 [GTC:156] Domri Rade
+4 [C14:191] Elvish Mystic
+4 [THS:180] Sylvan Caryatid
+SB: 2 [M15:134] Chandra, Pyromaster
+SB: 3 [RTR:101] Mizzium Mortars
+SB: 2 [GTC:139] Wasteland Viper
+SB: 2 [THS:167] Nylea's Disciple
+SB: 1 [THS:209] Xenagos, the Reveler
+SB: 1 [GTC:136] Sylvan Primordial
+SB: 1 [THS:162] Mistcutter Hydra
+SB: 2 [M14:130] Burning Earth
+SB: 1 [THS:192] Destructive Revelry
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Devotion to Gruul 34 PT Dragons of Tarkir (Brussels) ST 4-12-15.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Devotion to Gruul 34 PT Dragons of Tarkir (Brussels) ST 4-12-15.dck
new file mode 100644
index 0000000000..c5d8e22bb0
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Devotion to Gruul 34 PT Dragons of Tarkir (Brussels) ST 4-12-15.dck
@@ -0,0 +1,21 @@
+3 [THS:223] Nykthos, Shrine to Nyx
+4 [THS:224] Temple of Abandon
+10 [UNH:140] Forest
+2 [KTK:248] Windswept Heath
+4 [KTK:149] See the Unwritten
+4 [KTK:249] Wooded Foothills
+4 [FRF:145] Whisperwood Elemental
+1 [UNH:139] Mountain
+4 [DTK:216] Dragonlord Atarka
+4 [KTK:144] Rattleclaw Mystic
+4 [BNG:119] Courser of Kruphix
+4 [THS:172] Polukranos, World Eater
+2 [DTK:210] Surrak, the Hunt Caller
+2 [THS:152] Boon Satyr
+4 [C14:191] Elvish Mystic
+4 [THS:180] Sylvan Caryatid
+SB: 4 [THS:167] Nylea's Disciple
+SB: 3 [THS:209] Xenagos, the Reveler
+SB: 1 [THS:182] Voyaging Satyr
+SB: 3 [THS:150] Arbor Colossus
+SB: 4 [M15:187] Nissa, Worldwaker
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Devotion to Gruul 58 PT Dragons of Tarkir (Brussels) ST 4-12-15.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Devotion to Gruul 58 PT Dragons of Tarkir (Brussels) ST 4-12-15.dck
new file mode 100644
index 0000000000..546ee6069a
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Devotion to Gruul 58 PT Dragons of Tarkir (Brussels) ST 4-12-15.dck
@@ -0,0 +1,25 @@
+4 [THS:223] Nykthos, Shrine to Nyx
+4 [THS:224] Temple of Abandon
+10 [UNH:140] Forest
+2 [THS:209] Xenagos, the Reveler
+4 [KTK:249] Wooded Foothills
+4 [M15:176] Genesis Hydra
+4 [FRF:145] Whisperwood Elemental
+1 [UNH:139] Mountain
+3 [DTK:216] Dragonlord Atarka
+1 [M15:178] Hornet Queen
+4 [BNG:119] Courser of Kruphix
+2 [DTK:204] Shaman of Forgotten Ways
+4 [THS:182] Voyaging Satyr
+1 [THS:150] Arbor Colossus
+4 [THS:172] Polukranos, World Eater
+4 [C14:191] Elvish Mystic
+4 [THS:180] Sylvan Caryatid
+SB: 1 [M15:177] Hornet Nest
+SB: 2 [C14:213] Reclamation Sage
+SB: 1 [FRF:1] Ugin, the Spirit Dragon
+SB: 4 [THS:167] Nylea's Disciple
+SB: 2 [THS:209] Xenagos, the Reveler
+SB: 1 [THS:150] Arbor Colossus
+SB: 1 [DTK:156] Seismic Rupture
+SB: 3 [M15:187] Nissa, Worldwaker
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Devotion to Red 58 PT Theros (Dublin) ST 10-13-13.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Devotion to Red 58 PT Theros (Dublin) ST 10-13-13.dck
new file mode 100644
index 0000000000..51049877a7
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Devotion to Red 58 PT Theros (Dublin) ST 10-13-13.dck
@@ -0,0 +1,21 @@
+4 [THS:223] Nykthos, Shrine to Nyx
+3 [THS:135] Purphoros, God of the Forge
+2 [THS:124] Hammer of Purphoros
+3 [THS:120] Ember Swallower
+4 [RTR:86] Ash Zealot
+4 [THS:143] Stormbreath Dragon
+4 [GTC:216] Burning-Tree Emissary
+4 [GTC:215] Boros Reckoner
+4 [THS:128] Magma Jet
+21 [UNH:139] Mountain
+1 [M15:134] Chandra, Pyromaster
+1 [RTR:101] Mizzium Mortars
+4 [RTR:215] Frostburn Weird
+1 [M14:228] Mutavault
+SB: 1 [THS:124] Hammer of Purphoros
+SB: 1 [M15:134] Chandra, Pyromaster
+SB: 3 [RTR:101] Mizzium Mortars
+SB: 2 [M14:134] Chandra's Phoenix
+SB: 3 [THS:132] Peak Eruption
+SB: 3 [THS:112] Anger of the Gods
+SB: 2 [M14:130] Burning Earth
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Doran 58 PT Hollywood ST 5-25-08.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Doran 58 PT Hollywood ST 5-25-08.dck
new file mode 100644
index 0000000000..ce7adcc13c
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Doran 58 PT Hollywood ST 5-25-08.dck
@@ -0,0 +1,28 @@
+4 [MOR:147] Murmuring Bosk
+3 [MOR:116] Chameleon Colossus
+3 [FUT:78] Slaughter Pact
+3 [FUT:136] Riftsweeper
+4 [10E:361] Treetop Village
+1 [FUT:177] Horizon Canopy
+1 [TSB:120] Pendelhaven
+4 [M12:165] Birds of Paradise
+4 [FUT:153] Tarmogoyf
+4 [THS:107] Thoughtseize
+2 [CNS:210] Reflecting Pool
+2 [SHM:281] Wooded Bastion
+2 [C14:204] Llanowar Elves
+1 [10E:349] Brushland
+3 [M15:244] Llanowar Wastes
+3 [C14:156] Profane Command
+1 [M15:248] Urborg, Tomb of Yawgmoth
+4 [LRW:247] Doran, the Siege Tower
+3 [LRW:128] Nameless Inversion
+4 [SHM:229] Kitchen Finks
+4 [LRW:268] Gilt-Leaf Palace
+SB: 3 [LRW:48] Wispmare
+SB: 2 [MOR:58] Bitterblossom
+SB: 3 [M10:106] Mind Shatter
+SB: 1 [C14:160] Shriekmaw
+SB: 3 [M13:22] Oblivion Ring
+SB: 2 [LRW:233] Primal Command
+SB: 1 [SHM:192] Murderous Redcap
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Doran Rock 1 World Championship 2007 (New York) ST 12-6-07.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Doran Rock 1 World Championship 2007 (New York) ST 12-6-07.dck
new file mode 100644
index 0000000000..2d885c39fe
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Doran Rock 1 World Championship 2007 (New York) ST 12-6-07.dck
@@ -0,0 +1,32 @@
+2 [LRW:110] Eyeblight's Ending
+1 [UNH:140] Forest
+3 [CMD:157] Garruk Wildspeaker
+4 [10E:361] Treetop Village
+1 [FUT:177] Horizon Canopy
+1 [TSB:120] Pendelhaven
+1 [M10:100] Hypnotic Specter
+4 [M12:165] Birds of Paradise
+4 [FUT:153] Tarmogoyf
+4 [THS:107] Thoughtseize
+3 [M15:241] Caves of Koilos
+3 [C14:204] Llanowar Elves
+1 [10E:349] Brushland
+2 [TSB:119] Gemstone Mine
+4 [M15:244] Llanowar Wastes
+4 [DDM:57] Ohran Viper
+1 [M15:103] Liliana Vess
+2 [C14:156] Profane Command
+2 [M15:248] Urborg, Tomb of Yawgmoth
+4 [LRW:247] Doran, the Siege Tower
+3 [C14:160] Shriekmaw
+2 [LRW:128] Nameless Inversion
+4 [LRW:268] Gilt-Leaf Palace
+SB: 2 [C14:247] Loxodon Warhammer
+SB: 2 [LRW:250] Nath of the Gilt-Leaf
+SB: 1 [HML:135] Serrated Arrows
+SB: 2 [TSB:48] Stupor
+SB: 1 [TSB:114] Serrated Arrows
+SB: 3 [FUT:136] Riftsweeper
+SB: 1 [C14:160] Shriekmaw
+SB: 1 [M13:22] Oblivion Ring
+SB: 2 [LRW:202] Cloudthresher
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Dragonstorm 1 World Championship 2006 (Paris) ST 12-3-06.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Dragonstorm 1 World Championship 2006 (Paris) ST 12-3-06.dck
new file mode 100644
index 0000000000..002549392a
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Dragonstorm 1 World Championship 2006 (Paris) ST 12-3-06.dck
@@ -0,0 +1,28 @@
+2 [RAV:131] Hunted Dragon
+4 [GPT:26] Gigadrowse
+1 [CMD:271] Dreadship Reef
+4 [RAV:63] Remand
+4 [TSP:259] Lotus Bloom
+4 [CSP:96] Rite of Flame
+1 [ARC:46] Seething Song
+4 [10E:114] Telling Time
+4 [UNH:139] Mountain
+1 [7ED:98] Sleight of Hand
+4 [M15:246] Shivan Reef
+4 [RTR:247] Steam Vents
+1 [TSP:270] Calciform Pools
+4 [C14:173] Bogardan Hellkite
+1 [PO2:46] Sleight of Hand
+2 [TSB:60] Dragonstorm
+2 [9ED:99] Sleight of Hand
+8 [UNH:137] Island
+3 [DDG:70] Seething Song
+2 [SCG:90] Dragonstorm
+SB: 2 [CMD:271] Dreadship Reef
+SB: 1 [MM2:56] Repeal
+SB: 1 [GPT:32] Repeal
+SB: 1 [TSP:270] Calciform Pools
+SB: 2 [DDN:72] Repeal
+SB: 1 [TSP:88] Trickbind
+SB: 1 [TSP:83] Teferi, Mage of Zhalfir
+SB: 3 [M11:154] Pyroclasm
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Eldrazi Green 34 World Championship 2010 (Chiba) ST 12-12-10.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Eldrazi Green 34 World Championship 2010 (Chiba) ST 12-12-10.dck
new file mode 100644
index 0000000000..5bb8ba1fbc
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Eldrazi Green 34 World Championship 2010 (Chiba) ST 12-12-10.dck
@@ -0,0 +1,24 @@
+2 [ROE:12] Ulamog, the Infinite Gyre
+4 [ROE:186] Growth Spasm
+12 [UNH:140] Forest
+4 [ROE:190] Joraga Treespeaker
+1 [M11:226] Mystifying Maze
+4 [ROE:227] Eldrazi Temple
+1 [ROE:4] Emrakul, the Aeons Torn
+1 [WWK:136] Eye of Ugin
+4 [ROE:203] Overgrown Battlement
+1 [C14:218] Terastodon
+4 [M12:188] Primeval Titan
+3 [C14:239] Everflowing Chalice
+1 [C13:139] Cultivate
+4 [ZEN:184] Summoning Trap
+4 [C13:302] Khalni Garden
+4 [C14:313] Tectonic Edge
+1 [C13:135] Avenger of Zendikar
+1 [C14:283] Wurmcoil Engine
+4 [WWK:99] Explore
+SB: 4 [C13:134] Acidic Slime
+SB: 4 [M14:215] Ratchet Bomb
+SB: 3 [M11:188] Obstinate Baloth
+SB: 1 [WWK:136] Eye of Ugin
+SB: 3 [ZEN:172] Oracle of Mul Daya
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Elves(1) 58 World Championship 2007 (New York) ST 12-6-07.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Elves(1) 58 World Championship 2007 (New York) ST 12-6-07.dck
new file mode 100644
index 0000000000..2979e4b1be
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Elves(1) 58 World Championship 2007 (New York) ST 12-6-07.dck
@@ -0,0 +1,30 @@
+2 [LRW:110] Eyeblight's Ending
+5 [UNH:140] Forest
+3 [CMD:176] Troll Ascetic
+2 [CMD:157] Garruk Wildspeaker
+4 [10E:361] Treetop Village
+1 [TSB:120] Pendelhaven
+1 [10E:255] Civic Wayfinder
+2 [C14:206] Masked Admirers
+3 [FUT:153] Tarmogoyf
+4 [THS:107] Thoughtseize
+4 [C14:227] Wren's Run Packmaster
+1 [PLC:75] Mirri the Cursed
+4 [C14:204] Llanowar Elves
+1 [C14:247] Loxodon Warhammer
+4 [M15:244] Llanowar Wastes
+4 [C14:202] Imperious Perfect
+4 [C14:156] Profane Command
+1 [M15:248] Urborg, Tomb of Yawgmoth
+1 [LRW:128] Nameless Inversion
+1 [CSP:105] Boreal Druid
+4 [LRW:268] Gilt-Leaf Palace
+4 [UNH:138] Swamp
+SB: 1 [C14:247] Loxodon Warhammer
+SB: 2 [TSP:261] Phyrexian Totem
+SB: 3 [M15:103] Liliana Vess
+SB: 2 [FUT:78] Slaughter Pact
+SB: 1 [C13:153] Krosan Grip
+SB: 2 [10E:308] Viridian Shaman
+SB: 2 [10E:340] Razormane Masticore
+SB: 2 [LRW:202] Cloudthresher
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Elves(2) 58 World Championship 2007 (New York) ST 12-6-07.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Elves(2) 58 World Championship 2007 (New York) ST 12-6-07.dck
new file mode 100644
index 0000000000..11573e6b20
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Elves(2) 58 World Championship 2007 (New York) ST 12-6-07.dck
@@ -0,0 +1,28 @@
+3 [LRW:110] Eyeblight's Ending
+5 [UNH:140] Forest
+3 [CMD:176] Troll Ascetic
+2 [CMD:157] Garruk Wildspeaker
+4 [10E:361] Treetop Village
+1 [TSB:120] Pendelhaven
+2 [10E:255] Civic Wayfinder
+3 [C14:206] Masked Admirers
+4 [FUT:153] Tarmogoyf
+3 [THS:107] Thoughtseize
+4 [C14:227] Wren's Run Packmaster
+4 [C14:204] Llanowar Elves
+4 [M15:244] Llanowar Wastes
+3 [C14:202] Imperious Perfect
+4 [C14:156] Profane Command
+1 [M15:248] Urborg, Tomb of Yawgmoth
+1 [LRW:128] Nameless Inversion
+1 [CSP:105] Boreal Druid
+4 [LRW:268] Gilt-Leaf Palace
+4 [UNH:138] Swamp
+SB: 2 [C14:247] Loxodon Warhammer
+SB: 3 [M15:103] Liliana Vess
+SB: 2 [FUT:78] Slaughter Pact
+SB: 1 [C13:153] Krosan Grip
+SB: 2 [C14:152] Nekrataal
+SB: 2 [10E:308] Viridian Shaman
+SB: 1 [THS:107] Thoughtseize
+SB: 2 [LRW:202] Cloudthresher
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Enduring Ideal 34 World Championship 2005 (Yokohama) ST 12-4-05.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Enduring Ideal 34 World Championship 2005 (Yokohama) ST 12-4-05.dck
new file mode 100644
index 0000000000..9cd00958c5
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Enduring Ideal 34 World Championship 2005 (Yokohama) ST 12-4-05.dck
@@ -0,0 +1,29 @@
+2 [SCG:93] Form of the Dragon
+1 [S99:51] Sleight of Hand
+1 [CHK:273] Boseiju, Who Shelters All
+4 [CMD:243] Boros Signet
+1 [9ED:187] Form of the Dragon
+4 [BOK:165] Tendo Ice Bridge
+4 [SOK:9] Enduring Ideal
+4 [CMD:248] Fellwar Stone
+4 [C13:27] Wrath of God
+4 [RAV:16] Faith's Fetters
+1 [8ED:69] Confiscate
+4 [10E:114] Telling Time
+4 [10E:347] Adarkar Wastes
+1 [MMQ:24] Ivory Mask
+1 [7ED:65] Confiscate
+1 [C14:102] Compulsive Research
+4 [GTC:245] Sacred Foundry
+3 [9ED:99] Sleight of Hand
+3 [UNH:136] Plains
+1 [USG:66] Confiscate
+7 [UNH:137] Island
+1 [5ED:138] Zur's Weirding
+SB: 1 [8ED:296] Defense Grid
+SB: 1 [BOK:151] Genju of the Realm
+SB: 1 [9ED:23] Ivory Mask
+SB: 4 [M11:154] Pyroclasm
+SB: 1 [RAV:251] Privileged Position
+SB: 3 [ULG:125] Defense Grid
+SB: 4 [M12:63] Mana Leak
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Esper Control 34 PT Gatecrash (Montreal) ST 2-17-13.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Esper Control 34 PT Gatecrash (Montreal) ST 2-17-13.dck
new file mode 100644
index 0000000000..f80b7f844d
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Esper Control 34 PT Gatecrash (Montreal) ST 2-17-13.dck
@@ -0,0 +1,30 @@
+3 [AVR:32] Restoration Angel
+1 [RTR:82] Ultimate Price
+2 [M14:29] Planar Cleansing
+4 [C13:30] Augur of Bolas
+2 [GTC:249] Watery Grave
+4 [M13:225] Glacial Fortress
+4 [M13:223] Drowned Catacomb
+4 [RTR:241] Hallowed Fountain
+2 [ISD:78] Snapcaster Mage
+4 [RTR:201] Supreme Verdict
+1 [RTR:156] Dramatic Rescue
+4 [RTR:145] Azorius Charm
+4 [RTR:200] Sphinx's Revelation
+4 [ISD:242] Isolated Chapel
+2 [M15:51] Dissipate
+4 [ISD:245] Nephalia Drownyard
+2 [GTC:63] Devour Flesh
+1 [UNH:136] Plains
+2 [GTC:242] Godless Shrine
+2 [UNH:137] Island
+4 [ISD:83] Think Twice
+SB: 3 [AVR:104] Gloom Surgeon
+SB: 2 [RTR:1] Angel of Serenity
+SB: 2 [ISD:236] Witchbane Orb
+SB: 1 [RTR:36] Dispel
+SB: 1 [RTR:47] Psychic Spiral
+SB: 2 [M14:97] Duress
+SB: 1 [RTR:18] Rest in Peace
+SB: 2 [M14:60] Jace, Memory Adept
+SB: 1 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Esper Control 58 PT Theros (Dublin) ST 10-13-13.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Esper Control 58 PT Theros (Dublin) ST 10-13-13.dck
new file mode 100644
index 0000000000..ca6badb6c3
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Esper Control 58 PT Theros (Dublin) ST 10-13-13.dck
@@ -0,0 +1,27 @@
+4 [THS:225] Temple of Deceit
+3 [THS:47] Dissolve
+4 [GTC:249] Watery Grave
+4 [RTR:241] Hallowed Fountain
+4 [THS:227] Temple of Silence
+2 [THS:107] Thoughtseize
+4 [RTR:201] Supreme Verdict
+3 [RTR:200] Sphinx's Revelation
+4 [RTR:145] Azorius Charm
+1 [RTR:155] Detention Sphere
+1 [DGM:11] AEtherling
+4 [THS:90] Hero's Downfall
+4 [M14:96] Doom Blade
+4 [RTR:44] Jace, Architect of Thought
+2 [M15:52] Divination
+2 [UNH:136] Plains
+4 [GTC:242] Godless Shrine
+2 [THS:9] Elspeth, Sun's Champion
+4 [UNH:137] Island
+SB: 2 [RTR:155] Detention Sphere
+SB: 2 [DGM:57] Blood Baron of Vizkopa
+SB: 1 [THS:49] Gainsay
+SB: 1 [DGM:11] AEtherling
+SB: 1 [THS:107] Thoughtseize
+SB: 2 [M15:71] Negate
+SB: 2 [DGM:103] Sin Collector
+SB: 4 [THS:32] Soldier of the Pantheon
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Faeries 58 PT Hollywood ST 5-25-08.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Faeries 58 PT Hollywood ST 5-25-08.dck
new file mode 100644
index 0000000000..150ce6b018
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Faeries 58 PT Hollywood ST 5-25-08.dck
@@ -0,0 +1,23 @@
+4 [10E:182] Terror
+4 [LRW:271] Secluded Glen
+4 [LRW:89] Spellstutter Sprite
+4 [LRW:56] Cryptic Command
+3 [FUT:179] River of Tears
+1 [FNMP:96] Pendelhaven
+1 [TSB:120] Pendelhaven
+4 [10E:362] Underground River
+2 [SHM:280] Sunken Ruins
+4 [MOR:58] Bitterblossom
+2 [C13:288] Faerie Conclave
+3 [MOR:55] Vendilion Clique
+4 [TSP:48] Ancestral Vision
+4 [CSP:46] Rune Snag
+4 [M14:228] Mutavault
+4 [LRW:83] Scion of Oona
+4 [LRW:75] Mistbind Clique
+4 [UNH:137] Island
+SB: 3 [C14:231] Bottle Gnomes
+SB: 3 [10E:340] Razormane Masticore
+SB: 4 [THS:107] Thoughtseize
+SB: 3 [PLC:85] Damnation
+SB: 2 [SHM:192] Murderous Redcap
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Fauna Quest 58 PT Paris ST 2-13-11.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Fauna Quest 58 PT Paris ST 2-13-11.dck
new file mode 100644
index 0000000000..8591438ab1
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Fauna Quest 58 PT Paris ST 2-13-11.dck
@@ -0,0 +1,26 @@
+4 [SOM:174] Memnite
+3 [WWK:144] Stirring Wildwood
+4 [M13:229] Sunpetal Grove
+4 [UNH:140] Forest
+2 [SOM:10] Glint Hawk
+4 [ROE:212] Vengevine
+2 [C14:228] Argentum Armor
+4 [ZEN:23] Kor Skyfisher
+4 [M11:172] Fauna Shaman
+4 [M15:223] Ornithopter
+1 [ZEN:21] Kor Outfitter
+1 [SOM:208] Sword of Body and Mind
+4 [ZEN:33] Quest for the Holy Relic
+4 [SOM:228] Razorverge Thicket
+4 [M11:33] Squadron Hawk
+1 [WWK:20] Stoneforge Mystic
+8 [UNH:136] Plains
+2 [SOM:156] Glint Hawk Idol
+SB: 1 [ROE:33] Linvala, Keeper of Silence
+SB: 1 [MBS:10] Leonin Relic-Warder
+SB: 1 [M13:39] War Priest of Thune
+SB: 4 [SOM:14] Leonin Arbiter
+SB: 2 [WWK:17] Refraction Trap
+SB: 4 [ZEN:10] Devout Lightcaster
+SB: 1 [M11:7] Baneslayer Angel
+SB: 1 [WWK:11] Kor Firewalker
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/GB Elves 34 PT Hollywood ST 5-25-08.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/GB Elves 34 PT Hollywood ST 5-25-08.dck
new file mode 100644
index 0000000000..6865f55ee9
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/GB Elves 34 PT Hollywood ST 5-25-08.dck
@@ -0,0 +1,24 @@
+1 [LEG:250] Pendelhaven
+3 [UNH:140] Forest
+4 [CMD:157] Garruk Wildspeaker
+4 [10E:361] Treetop Village
+1 [TSB:120] Pendelhaven
+3 [10E:255] Civic Wayfinder
+4 [FUT:153] Tarmogoyf
+4 [THS:107] Thoughtseize
+4 [C14:204] Llanowar Elves
+4 [M15:244] Llanowar Wastes
+4 [C14:202] Imperious Perfect
+4 [C14:156] Profane Command
+1 [M15:248] Urborg, Tomb of Yawgmoth
+4 [M14:228] Mutavault
+3 [LRW:128] Nameless Inversion
+2 [CSP:105] Boreal Druid
+4 [LRW:245] Wren's Run Vanquisher
+2 [UNH:138] Swamp
+4 [LRW:268] Gilt-Leaf Palace
+SB: 4 [MOR:58] Bitterblossom
+SB: 2 [SHM:70] Incremental Blight
+SB: 2 [10E:182] Terror
+SB: 4 [C14:160] Shriekmaw
+SB: 3 [LRW:233] Primal Command
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/GW Aggro 2 World Championship 2011 (San Francisco) ST 11-20-11.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/GW Aggro 2 World Championship 2011 (San Francisco) ST 11-20-11.dck
new file mode 100644
index 0000000000..f9eee806be
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/GW Aggro 2 World Championship 2011 (San Francisco) ST 11-20-11.dck
@@ -0,0 +1,24 @@
+3 [SOM:6] Elspeth Tirel
+4 [M13:229] Sunpetal Grove
+8 [UNH:140] Forest
+1 [C14:72] Geist-Honored Monk
+4 [NPH:4] Blade Splicer
+4 [M12:165] Birds of Paradise
+4 [ISD:170] Avacyn's Pilgrim
+4 [ISD:181] Garruk Relentless
+2 [NPH:86] Gut Shot
+4 [SOM:228] Razorverge Thicket
+3 [MBS:115] Mortarpod
+4 [M13:22] Oblivion Ring
+4 [ISD:239] Gavony Township
+5 [UNH:136] Plains
+2 [MBS:14] Mirran Crusader
+4 [MBS:8] Hero of Bladehold
+SB: 1 [ISD:23] Mikaeus, the Lunarch
+SB: 2 [KTK:142] Naturalize
+SB: 2 [NPH:86] Gut Shot
+SB: 1 [NPH:161] Sword of War and Peace
+SB: 2 [MBS:138] Sword of Feast and Famine
+SB: 2 [M12:11] Celestial Purge
+SB: 2 [MBS:92] Thrun, the Last Troll
+SB: 3 [M12:40] Timely Reinforcements
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Greater Gift 2 World Championship 2005 (Yokohama) ST 12-4-05.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Greater Gift 2 World Championship 2005 (Yokohama) ST 12-4-05.dck
new file mode 100644
index 0000000000..7662969881
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Greater Gift 2 World Championship 2005 (Yokohama) ST 12-4-05.dck
@@ -0,0 +1,42 @@
+3 [CHK:268] Sensei's Divining Top
+1 [SOK:163] Miren, the Moaning Well
+1 [RAV:93] Last Gasp
+2 [CHK:122] Kokusho, the Evening Star
+4 [UNH:140] Forest
+1 [CHK:283] Shizo, Death's Storehouse
+2 [BOK:165] Tendo Ice Bridge
+1 [CHK:280] Okina, Temple to the Grandfathers
+1 [10E:289] Recollect
+4 [CNS:177] Sakura-Tribe Elder
+2 [10E:349] Brushland
+3 [CHK:62] Gifts Ungiven
+2 [RTR:243] Overgrown Tomb
+2 [M13:170] Farseek
+2 [RTR:248] Temple Garden
+3 [BOK:67] Goryo's Vengeance
+1 [DGM:93] Putrefy
+3 [UNH:136] Plains
+1 [UNH:137] Island
+3 [UNH:138] Swamp
+1 [JR:81] Greater Good
+4 [CMD:163] Kodama's Reach
+1 [GTC:249] Watery Grave
+4 [C13:27] Wrath of God
+4 [CHK:50] Yosei, the Morning Star
+1 [M12:191] Reclaim
+2 [USG:257] Greater Good
+1 [SOK:73] Kagemaro, First to Suffer
+SB: 1 [CHK:115] Hideous Laughter
+SB: 1 [CHK:211] Hana Kami
+SB: 1 [8ED:296] Defense Grid
+SB: 1 [RAV:93] Last Gasp
+SB: 1 [9ED:293] Defense Grid
+SB: 1 [CHK:144] Soulless Revival
+SB: 1 [RAV:214] Loxodon Hierarch
+SB: 1 [CHK:74] Meloku the Clouded Mirror
+SB: 1 [SOK:63] Death Denied
+SB: 1 [CHK:105] Cranial Extraction
+SB: 2 [ULG:125] Defense Grid
+SB: 1 [CHK:205] Dosan the Falling Leaf
+SB: 1 [BOK:71] Ink-Eyes, Servant of Oni
+SB: 1 [SOK:143] Rending Vines
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Gruul Deck Wins 1 PT Dragons of Tarkir (Brussels) ST 4-12-15.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Gruul Deck Wins 1 PT Dragons of Tarkir (Brussels) ST 4-12-15.dck
new file mode 100644
index 0000000000..347d041b36
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Gruul Deck Wins 1 PT Dragons of Tarkir (Brussels) ST 4-12-15.dck
@@ -0,0 +1,25 @@
+1 [THS:224] Temple of Abandon
+1 [UNH:140] Forest
+4 [KTK:118] Monastery Swiftspear
+4 [FRF:118] Wild Slash
+4 [KTK:249] Wooded Foothills
+4 [M15:141] Foundry Street Denizen
+1 [M15:142] Frenzied Goblin
+4 [M15:164] Stoke the Flames
+10 [UNH:139] Mountain
+4 [M15:155] Lightning Strike
+2 [M15:145] Goblin Rabblemaster
+4 [KTK:111] Hordeling Outburst
+1 [KTK:130] Become Immense
+1 [DTK:146] Lightning Berserker
+4 [DTK:135] Dragon Fodder
+3 [DTK:169] Zurgo Bellstriker
+4 [DTK:213] Atarka's Command
+4 [JOU:163] Mana Confluence
+SB: 2 [M15:145] Goblin Rabblemaster
+SB: 1 [BNG:110] Scouring Sands
+SB: 2 [JOU:162] Hall of Triumph
+SB: 4 [JOU:94] Eidolon of the Great Revel
+SB: 1 [FRF:102] Goblin Heelcutter
+SB: 4 [DTK:151] Roast
+SB: 1 [THS:192] Destructive Revelry
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Gruul Dragons 58 PT Dragons of Tarkir (Brussels) ST 4-12-15.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Gruul Dragons 58 PT Dragons of Tarkir (Brussels) ST 4-12-15.dck
new file mode 100644
index 0000000000..c2c0d413f5
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Gruul Dragons 58 PT Dragons of Tarkir (Brussels) ST 4-12-15.dck
@@ -0,0 +1,25 @@
+4 [THS:224] Temple of Abandon
+4 [THS:143] Stormbreath Dragon
+6 [UNH:140] Forest
+1 [FRF:170] Rugged Highlands
+4 [KTK:249] Wooded Foothills
+4 [KTK:106] Crater's Claws
+3 [KTK:134] Heir of the Wilds
+1 [DTK:249] Haven of the Spirit Dragon
+5 [UNH:139] Mountain
+4 [M15:145] Goblin Rabblemaster
+4 [KTK:144] Rattleclaw Mystic
+2 [JOU:163] Mana Confluence
+3 [DTK:210] Surrak, the Hunt Caller
+4 [THS:152] Boon Satyr
+2 [DTK:134] Draconic Roar
+4 [C14:191] Elvish Mystic
+4 [DTK:162] Thunderbreak Regent
+1 [DTK:151] Roast
+SB: 3 [M15:177] Hornet Nest
+SB: 3 [THS:209] Xenagos, the Reveler
+SB: 2 [KTK:97] Arc Lightning
+SB: 3 [FRF:118] Wild Slash
+SB: 1 [M15:192] Plummet
+SB: 1 [DTK:151] Roast
+SB: 2 [THS:192] Destructive Revelry
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Heartbeat 58 PT Honolulu ST 3-5-06.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Heartbeat 58 PT Honolulu ST 3-5-06.dck
new file mode 100644
index 0000000000..c012292208
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Heartbeat 58 PT Honolulu ST 3-5-06.dck
@@ -0,0 +1,27 @@
+4 [CHK:268] Sensei's Divining Top
+4 [CHK:212] Heartbeat of Spring
+4 [RAV:60] Muddle the Mixture
+1 [9ED:282] Weird Harvest
+4 [CMD:163] Kodama's Reach
+10 [UNH:140] Forest
+1 [7ED:237] Early Harvest
+4 [RAV:63] Remand
+4 [RAV:46] Drift of Phantasms
+1 [9ED:235] Early Harvest
+1 [10E:289] Recollect
+4 [CNS:177] Sakura-Tribe Elder
+1 [UNH:139] Mountain
+1 [C14:102] Compulsive Research
+2 [MIR:111] Early Harvest
+1 [10E:70] Boomerang
+1 [DDJ:31] Invoke the Firemind
+10 [UNH:137] Island
+1 [SOK:81] Maga, Traitor to Mortals
+1 [UNH:138] Swamp
+SB: 2 [CHK:74] Meloku the Clouded Mirror
+SB: 4 [RAV:189] Vinelasher Kudzu
+SB: 1 [CHK:72] Keiga, the Tide Star
+SB: 3 [C13:208] Savage Twister
+SB: 3 [BOK:130] Iwamori of the Open Fist
+SB: 1 [BOK:163] Umezawa's Jitte
+SB: 1 [M11:154] Pyroclasm
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Izzetron 58 PT Honolulu ST 3-5-06.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Izzetron 58 PT Honolulu ST 3-5-06.dck
new file mode 100644
index 0000000000..0ffe78a74a
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Izzetron 58 PT Honolulu ST 3-5-06.dck
@@ -0,0 +1,34 @@
+4 [CMD:252] Izzet Signet
+4 [CMD:197] Electrolyze
+2 [BOK:165] Tendo Ice Bridge
+1 [9ED:327] Urza's Mine
+1 [9ED:329] Urza's Tower
+4 [C14:102] Compulsive Research
+4 [M15:246] Shivan Reef
+4 [RTR:247] Steam Vents
+2 [9ED:68] Confiscate
+1 [CHK:279] Minamo, School at Water's Edge
+2 [8ED:330] Urza's Tower
+1 [10E:190] Blaze
+4 [RAV:63] Remand
+1 [ATQ:75] Urza's Mine
+2 [M11:154] Pyroclasm
+2 [10E:114] Telling Time
+2 [ME4:258] Urza's Power Plant
+1 [ME4:257] Urza's Mine
+4 [CHK:74] Meloku the Clouded Mirror
+1 [10E:116] Tidings
+1 [ME4:259] Urza's Tower
+4 [CHK:72] Keiga, the Tide Star
+1 [DDJ:31] Invoke the Firemind
+2 [5ED:448] Urza's Power Plant
+1 [8ED:328] Urza's Mine
+4 [M12:63] Mana Leak
+SB: 4 [GPT:143] Giant Solifuge
+SB: 1 [GPT:32] Repeal
+SB: 1 [CHK:185] Ryusei, The Falling Star
+SB: 1 [DDN:72] Repeal
+SB: 2 [ONS:63] Annex
+SB: 2 [M11:154] Pyroclasm
+SB: 2 [9ED:59] Annex
+SB: 2 [10E:235] Smash
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Jeskai Ascendancy 58 PT Khans of Tarkir (Honolulu) ST 10-12-14.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Jeskai Ascendancy 58 PT Khans of Tarkir (Honolulu) ST 10-12-14.dck
new file mode 100644
index 0000000000..8fc729be8c
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Jeskai Ascendancy 58 PT Khans of Tarkir (Honolulu) ST 10-12-14.dck
@@ -0,0 +1,29 @@
+2 [THS:224] Temple of Abandon
+2 [JOU:115] Twinflame
+2 [THS:226] Temple of Mystery
+1 [UNH:140] Forest
+4 [BNG:49] Retraction Helix
+4 [THS:155] Commune with the Gods
+2 [KTK:217] Briber's Purse
+2 [KTK:249] Wooded Foothills
+3 [KTK:36] Dig Through Time
+2 [KTK:233] Flooded Strand
+4 [THS:119] Dragon Mantle
+3 [KTK:123] Tormenting Voice
+2 [KTK:234] Frontier Bivouac
+1 [M15:187] Nissa, Worldwaker
+1 [UNH:139] Mountain
+4 [KTK:144] Rattleclaw Mystic
+2 [M15:249] Yavimaya Coast
+2 [BNG:165] Temple of Plenty
+4 [JOU:163] Mana Confluence
+4 [KTK:180] Jeskai Ascendancy
+1 [UNH:136] Plains
+3 [BNG:150] Kiora's Follower
+1 [UNH:137] Island
+4 [THS:180] Sylvan Caryatid
+SB: 3 [M15:155] Lightning Strike
+SB: 4 [KTK:197] Savage Knuckleblade
+SB: 3 [KTK:97] Arc Lightning
+SB: 2 [THS:172] Polukranos, World Eater
+SB: 3 [THS:65] Swan Song
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Jeskai Tempo 2 PT Khans of Tarkir (Honolulu) ST 10-12-14.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Jeskai Tempo 2 PT Khans of Tarkir (Honolulu) ST 10-12-14.dck
new file mode 100644
index 0000000000..5f0b63eb46
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Jeskai Tempo 2 PT Khans of Tarkir (Honolulu) ST 10-12-14.dck
@@ -0,0 +1,28 @@
+2 [JOU:5] Banishing Light
+2 [THS:112] Anger of the Gods
+2 [KTK:119] Sarkhan, the Dragonspeaker
+1 [KTK:22] Seeker of the Way
+4 [THS:128] Magma Jet
+1 [M15:240] Battlefield Forge
+4 [KTK:236] Mystic Monastery
+4 [THS:228] Temple of Triumph
+4 [KTK:36] Dig Through Time
+4 [KTK:233] Flooded Strand
+4 [M15:164] Stoke the Flames
+3 [UNH:139] Mountain
+4 [M15:155] Lightning Strike
+4 [M15:145] Goblin Rabblemaster
+2 [M15:246] Shivan Reef
+4 [KTK:184] Mantis Rider
+4 [KTK:181] Jeskai Charm
+4 [JOU:164] Temple of Epiphany
+1 [UNH:136] Plains
+2 [UNH:137] Island
+SB: 3 [THS:47] Dissolve
+SB: 1 [M15:225] Phyrexian Revoker
+SB: 2 [KTK:9] Erase
+SB: 2 [KTK:8] End Hostilities
+SB: 2 [THS:112] Anger of the Gods
+SB: 2 [JOU:151] Keranos, God of Storms
+SB: 1 [KTK:37] Disdainful Stroke
+SB: 2 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Jeskai Tempo(1) 58 PT Khans of Tarkir (Honolulu) ST 10-12-14.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Jeskai Tempo(1) 58 PT Khans of Tarkir (Honolulu) ST 10-12-14.dck
new file mode 100644
index 0000000000..7c943a501d
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Jeskai Tempo(1) 58 PT Khans of Tarkir (Honolulu) ST 10-12-14.dck
@@ -0,0 +1,25 @@
+3 [BNG:5] Brimaz, King of Oreskos
+2 [THS:16] Gods Willing
+3 [KTK:119] Sarkhan, the Dragonspeaker
+4 [KTK:22] Seeker of the Way
+4 [THS:128] Magma Jet
+3 [M15:240] Battlefield Forge
+4 [KTK:236] Mystic Monastery
+4 [THS:228] Temple of Triumph
+3 [KTK:233] Flooded Strand
+4 [M15:164] Stoke the Flames
+3 [UNH:139] Mountain
+4 [M15:155] Lightning Strike
+4 [M15:145] Goblin Rabblemaster
+3 [M15:246] Shivan Reef
+4 [KTK:184] Mantis Rider
+4 [KTK:181] Jeskai Charm
+2 [UNH:136] Plains
+2 [UNH:137] Island
+SB: 1 [M15:134] Chandra, Pyromaster
+SB: 3 [JOU:103] Magma Spray
+SB: 1 [THS:16] Gods Willing
+SB: 2 [THS:60] Prognostic Sphinx
+SB: 4 [KTK:25] Suspension Field
+SB: 1 [THS:9] Elspeth, Sun's Champion
+SB: 3 [KTK:37] Disdainful Stroke
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Jeskai Tempo(2) 58 PT Khans of Tarkir (Honolulu) ST 10-12-14.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Jeskai Tempo(2) 58 PT Khans of Tarkir (Honolulu) ST 10-12-14.dck
new file mode 100644
index 0000000000..e70b3c3eaf
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Jeskai Tempo(2) 58 PT Khans of Tarkir (Honolulu) ST 10-12-14.dck
@@ -0,0 +1,25 @@
+4 [M15:15] Hushwing Gryff
+2 [THS:143] Stormbreath Dragon
+3 [JOU:5] Banishing Light
+3 [KTK:99] Ashcloud Phoenix
+4 [KTK:22] Seeker of the Way
+4 [THS:128] Magma Jet
+3 [M15:240] Battlefield Forge
+3 [THS:228] Temple of Triumph
+4 [KTK:236] Mystic Monastery
+3 [KTK:233] Flooded Strand
+4 [M15:164] Stoke the Flames
+3 [UNH:139] Mountain
+4 [M15:155] Lightning Strike
+3 [M15:246] Shivan Reef
+4 [KTK:184] Mantis Rider
+4 [KTK:181] Jeskai Charm
+2 [JOU:164] Temple of Epiphany
+1 [UNH:136] Plains
+2 [UNH:137] Island
+SB: 3 [JOU:103] Magma Spray
+SB: 1 [THS:49] Gainsay
+SB: 2 [THS:112] Anger of the Gods
+SB: 3 [THS:60] Prognostic Sphinx
+SB: 3 [KTK:25] Suspension Field
+SB: 3 [KTK:37] Disdainful Stroke
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Jund 1 PT San Diego ST 2-21-10.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Jund 1 PT San Diego ST 2-21-10.dck
new file mode 100644
index 0000000000..08f27a9ce8
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Jund 1 PT San Diego ST 2-21-10.dck
@@ -0,0 +1,25 @@
+4 [WWK:141] Raging Ravine
+4 [ALA:156] Blightning
+1 [M13:228] Rootbound Crag
+4 [UNH:140] Forest
+4 [M11:149] Lightning Bolt
+2 [CMD:157] Garruk Wildspeaker
+3 [M10:157] Siege-Gang Commander
+4 [C13:219] Sprouting Thrinax
+4 [C13:317] Savage Lands
+2 [M13:222] Dragonskull Summit
+3 [ALA:160] Broodmate Dragon
+2 [WWK:139] Lavaclaw Reaches
+3 [UNH:139] Mountain
+3 [ARB:92] Maelstrom Pulse
+4 [ZEN:229] Verdant Catacombs
+2 [M12:190] Rampant Growth
+4 [ARB:50] Bloodbraid Elf
+4 [ARB:95] Putrid Leech
+3 [UNH:138] Swamp
+SB: 1 [ARB:92] Maelstrom Pulse
+SB: 4 [M12:90] Deathmark
+SB: 3 [M10:191] Master of the Wild Hunt
+SB: 1 [RTR:231] Pithing Needle
+SB: 2 [CMD:231] Terminate
+SB: 4 [M10:186] Great Sable Stag
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Jund 2 PT San Diego ST 2-21-10.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Jund 2 PT San Diego ST 2-21-10.dck
new file mode 100644
index 0000000000..29b66e022c
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Jund 2 PT San Diego ST 2-21-10.dck
@@ -0,0 +1,27 @@
+4 [WWK:141] Raging Ravine
+4 [ALA:156] Blightning
+2 [M13:228] Rootbound Crag
+3 [UNH:140] Forest
+2 [CMD:231] Terminate
+4 [M11:149] Lightning Bolt
+3 [CMD:157] Garruk Wildspeaker
+2 [M10:157] Siege-Gang Commander
+4 [C13:219] Sprouting Thrinax
+4 [C13:317] Savage Lands
+3 [M13:222] Dragonskull Summit
+2 [ALA:160] Broodmate Dragon
+3 [UNH:139] Mountain
+3 [ARB:92] Maelstrom Pulse
+4 [ZEN:229] Verdant Catacombs
+4 [ARB:50] Bloodbraid Elf
+4 [ARB:95] Putrid Leech
+2 [WWK:99] Explore
+3 [UNH:138] Swamp
+SB: 2 [M12:90] Deathmark
+SB: 1 [M15:104] Mind Rot
+SB: 1 [CMD:231] Terminate
+SB: 4 [ZEN:127] Goblin Ruinblaster
+SB: 1 [ARB:34] Bituminous Blast
+SB: 3 [M14:97] Duress
+SB: 1 [ZEN:100] Malakir Bloodwitch
+SB: 2 [M10:186] Great Sable Stag
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Jund 2 World Championship 2009 (Rome) ST 11-19-09.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Jund 2 World Championship 2009 (Rome) ST 11-19-09.dck
new file mode 100644
index 0000000000..1ccc3a2823
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Jund 2 World Championship 2009 (Rome) ST 11-19-09.dck
@@ -0,0 +1,26 @@
+4 [ALA:156] Blightning
+2 [UNH:140] Forest
+4 [M13:228] Rootbound Crag
+2 [CMD:231] Terminate
+4 [M11:149] Lightning Bolt
+2 [CMD:157] Garruk Wildspeaker
+3 [ARB:34] Bituminous Blast
+4 [C13:219] Sprouting Thrinax
+4 [C13:317] Savage Lands
+3 [M13:222] Dragonskull Summit
+2 [C14:305] Oran-Rief, the Vastwood
+2 [ALA:160] Broodmate Dragon
+3 [UNH:139] Mountain
+3 [ARB:92] Maelstrom Pulse
+4 [ZEN:229] Verdant Catacombs
+1 [ZEN:119] Burst Lightning
+2 [M10:191] Master of the Wild Hunt
+4 [ARB:50] Bloodbraid Elf
+4 [ARB:95] Putrid Leech
+3 [UNH:138] Swamp
+SB: 1 [ARB:92] Maelstrom Pulse
+SB: 2 [C13:195] Jund Charm
+SB: 4 [ZEN:127] Goblin Ruinblaster
+SB: 3 [M14:97] Duress
+SB: 3 [M10:186] Great Sable Stag
+SB: 2 [ARB:47] Thought Hemorrhage
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Jund 34 PT Magic 2015 (Portland) ST 8-3-14.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Jund 34 PT Magic 2015 (Portland) ST 8-3-14.dck
new file mode 100644
index 0000000000..58cf8b52a2
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Jund 34 PT Magic 2015 (Portland) ST 8-3-14.dck
@@ -0,0 +1,32 @@
+3 [THS:224] Temple of Abandon
+1 [UNH:140] Forest
+2 [JOU:165] Temple of Malady
+3 [THS:209] Xenagos, the Reveler
+2 [RTR:164] Golgari Charm
+1 [RTR:141] Abrupt Decay
+2 [RTR:157] Dreadbore
+4 [M15:244] Llanowar Wastes
+3 [M15:134] Chandra, Pyromaster
+3 [RTR:101] Mizzium Mortars
+4 [C14:158] Read the Bones
+2 [RTR:243] Overgrown Tomb
+4 [BNG:119] Courser of Kruphix
+2 [RTR:188] Rakdos's Return
+2 [RTR:238] Blood Crypt
+1 [THS:90] Hero's Downfall
+1 [M14:228] Mutavault
+4 [GTC:247] Stomping Ground
+4 [BNG:164] Temple of Malice
+3 [RTR:208] Vraska the Unseen
+2 [DGM:93] Putrefy
+3 [C14:191] Elvish Mystic
+4 [THS:180] Sylvan Caryatid
+SB: 1 [RTR:101] Mizzium Mortars
+SB: 1 [RTR:188] Rakdos's Return
+SB: 4 [JOU:103] Magma Spray
+SB: 1 [RTR:231] Pithing Needle
+SB: 2 [M14:97] Duress
+SB: 2 [RTR:197] Slaughter Games
+SB: 1 [RTR:164] Golgari Charm
+SB: 2 [THS:107] Thoughtseize
+SB: 1 [RTR:141] Abrupt Decay
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Jund 58 PT Magic 2015 (Portland) ST 8-3-14.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Jund 58 PT Magic 2015 (Portland) ST 8-3-14.dck
new file mode 100644
index 0000000000..d99bdf0a78
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Jund 58 PT Magic 2015 (Portland) ST 8-3-14.dck
@@ -0,0 +1,32 @@
+2 [RTR:82] Ultimate Price
+4 [THS:224] Temple of Abandon
+3 [UNH:140] Forest
+4 [THS:209] Xenagos, the Reveler
+1 [RTR:164] Golgari Charm
+1 [RTR:141] Abrupt Decay
+2 [THS:107] Thoughtseize
+4 [M15:187] Nissa, Worldwaker
+2 [RTR:157] Dreadbore
+3 [M15:244] Llanowar Wastes
+2 [M15:134] Chandra, Pyromaster
+3 [RTR:101] Mizzium Mortars
+2 [RTR:243] Overgrown Tomb
+4 [BNG:119] Courser of Kruphix
+1 [RTR:188] Rakdos's Return
+1 [RTR:238] Blood Crypt
+1 [M15:248] Urborg, Tomb of Yawgmoth
+2 [M14:228] Mutavault
+4 [GTC:247] Stomping Ground
+4 [BNG:164] Temple of Malice
+1 [RTR:208] Vraska the Unseen
+1 [DGM:93] Putrefy
+4 [C14:191] Elvish Mystic
+4 [THS:180] Sylvan Caryatid
+SB: 1 [RTR:101] Mizzium Mortars
+SB: 1 [RTR:188] Rakdos's Return
+SB: 2 [JOU:103] Magma Spray
+SB: 2 [M14:96] Doom Blade
+SB: 4 [THS:162] Mistcutter Hydra
+SB: 1 [RTR:164] Golgari Charm
+SB: 2 [M14:195] Scavenging Ooze
+SB: 2 [THS:107] Thoughtseize
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Jund 58 PT San Diego ST 2-21-10.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Jund 58 PT San Diego ST 2-21-10.dck
new file mode 100644
index 0000000000..8884498cb0
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Jund 58 PT San Diego ST 2-21-10.dck
@@ -0,0 +1,23 @@
+4 [WWK:141] Raging Ravine
+4 [ALA:156] Blightning
+3 [UNH:140] Forest
+3 [CMD:231] Terminate
+4 [M11:149] Lightning Bolt
+3 [ARB:34] Bituminous Blast
+3 [M10:157] Siege-Gang Commander
+4 [C13:219] Sprouting Thrinax
+4 [C13:317] Savage Lands
+4 [M13:222] Dragonskull Summit
+2 [ALA:160] Broodmate Dragon
+4 [UNH:139] Mountain
+3 [ARB:92] Maelstrom Pulse
+4 [ZEN:229] Verdant Catacombs
+4 [ARB:50] Bloodbraid Elf
+4 [ARB:95] Putrid Leech
+3 [UNH:138] Swamp
+SB: 1 [ARB:92] Maelstrom Pulse
+SB: 3 [M10:191] Master of the Wild Hunt
+SB: 1 [M15:103] Liliana Vess
+SB: 2 [M15:104] Mind Rot
+SB: 4 [ZEN:127] Goblin Ruinblaster
+SB: 4 [M14:97] Duress
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Jund Control(1) 58 PT Gatecrash (Montreal) ST 2-17-13.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Jund Control(1) 58 PT Gatecrash (Montreal) ST 2-17-13.dck
new file mode 100644
index 0000000000..d89a80d4c4
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Jund Control(1) 58 PT Gatecrash (Montreal) ST 2-17-13.dck
@@ -0,0 +1,32 @@
+1 [RTR:82] Ultimate Price
+1 [M13:228] Rootbound Crag
+3 [UNH:140] Forest
+3 [M13:222] Dragonskull Summit
+1 [M13:101] Murder
+2 [RTR:141] Abrupt Decay
+2 [M13:174] Garruk, Primal Hunter
+1 [RTR:157] Dreadbore
+4 [RTR:243] Overgrown Tomb
+2 [RTR:188] Rakdos's Return
+3 [M13:160] Arbor Elf
+4 [M13:193] Thragtusk
+2 [ISD:243] Kessig Wolf Run
+4 [RTR:238] Blood Crypt
+4 [M13:170] Farseek
+2 [AVR:149] Pillar of Flame
+4 [AVR:129] Bonfire of the Damned
+4 [GTC:247] Stomping Ground
+4 [DKA:140] Huntmaster of the Fells
+4 [ISD:249] Woodland Cemetery
+2 [ISD:215] Olivia Voldaren
+3 [ISD:105] Liliana of the Veil
+SB: 2 [RTR:83] Underworld Connections
+SB: 1 [RTR:188] Rakdos's Return
+SB: 1 [C14:167] Tragic Slip
+SB: 2 [DKA:149] Grafdigger's Cage
+SB: 2 [DKA:127] Strangleroot Geist
+SB: 1 [AVR:149] Pillar of Flame
+SB: 2 [M13:217] Staff of Nin
+SB: 2 [M14:97] Duress
+SB: 1 [M13:101] Murder
+SB: 1 [ISD:215] Olivia Voldaren
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Jund Control(2) 58 PT Gatecrash (Montreal) ST 2-17-13.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Jund Control(2) 58 PT Gatecrash (Montreal) ST 2-17-13.dck
new file mode 100644
index 0000000000..95e709d4bf
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Jund Control(2) 58 PT Gatecrash (Montreal) ST 2-17-13.dck
@@ -0,0 +1,30 @@
+2 [C13:97] Vampire Nighthawk
+1 [UNH:140] Forest
+4 [M13:228] Rootbound Crag
+4 [M13:222] Dragonskull Summit
+2 [RTR:141] Abrupt Decay
+2 [M13:174] Garruk, Primal Hunter
+2 [RTR:157] Dreadbore
+3 [RTR:101] Mizzium Mortars
+4 [RTR:243] Overgrown Tomb
+2 [RTR:188] Rakdos's Return
+4 [M13:193] Thragtusk
+2 [ISD:243] Kessig Wolf Run
+4 [RTR:238] Blood Crypt
+4 [M13:170] Farseek
+1 [GTC:247] Stomping Ground
+2 [ISD:124] Victim of Night
+4 [DKA:140] Huntmaster of the Fells
+2 [ISD:96] Dead Weight
+4 [ISD:249] Woodland Cemetery
+1 [UNH:138] Swamp
+3 [ISD:215] Olivia Voldaren
+3 [ISD:105] Liliana of the Veil
+SB: 1 [M13:174] Garruk, Primal Hunter
+SB: 2 [RTR:83] Underworld Connections
+SB: 1 [DKA:149] Grafdigger's Cage
+SB: 2 [AVR:85] Barter in Blood
+SB: 3 [RTR:213] Deathrite Shaman
+SB: 2 [M14:97] Duress
+SB: 2 [ISD:96] Dead Weight
+SB: 2 [RTR:197] Slaughter Games
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Jund(1) 58 World Championship 2009 (Rome) ST 11-19-09.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Jund(1) 58 World Championship 2009 (Rome) ST 11-19-09.dck
new file mode 100644
index 0000000000..d5fc2d2c3d
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Jund(1) 58 World Championship 2009 (Rome) ST 11-19-09.dck
@@ -0,0 +1,24 @@
+4 [ALA:156] Blightning
+3 [UNH:140] Forest
+4 [M13:228] Rootbound Crag
+2 [CMD:231] Terminate
+4 [M11:149] Lightning Bolt
+3 [CMD:157] Garruk Wildspeaker
+3 [ARB:34] Bituminous Blast
+4 [C13:219] Sprouting Thrinax
+4 [C13:317] Savage Lands
+3 [M13:222] Dragonskull Summit
+3 [ALA:160] Broodmate Dragon
+3 [UNH:139] Mountain
+3 [ARB:92] Maelstrom Pulse
+4 [ZEN:229] Verdant Catacombs
+4 [ARB:50] Bloodbraid Elf
+4 [ARB:95] Putrid Leech
+1 [AVR:169] Borderland Ranger
+4 [UNH:138] Swamp
+SB: 3 [M15:104] Mind Rot
+SB: 2 [ALA:95] Caldera Hellion
+SB: 3 [ZEN:127] Goblin Ruinblaster
+SB: 3 [C13:195] Jund Charm
+SB: 2 [CMD:231] Terminate
+SB: 2 [ARB:47] Thought Hemorrhage
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Jund(2) 58 World Championship 2009 (Rome) ST 11-19-09.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Jund(2) 58 World Championship 2009 (Rome) ST 11-19-09.dck
new file mode 100644
index 0000000000..a5cf22fdf4
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Jund(2) 58 World Championship 2009 (Rome) ST 11-19-09.dck
@@ -0,0 +1,25 @@
+4 [ALA:156] Blightning
+2 [UNH:140] Forest
+3 [M13:228] Rootbound Crag
+2 [CMD:231] Terminate
+4 [M11:149] Lightning Bolt
+3 [CMD:157] Garruk Wildspeaker
+3 [ARB:34] Bituminous Blast
+4 [C13:219] Sprouting Thrinax
+4 [C13:317] Savage Lands
+3 [M13:222] Dragonskull Summit
+1 [C14:305] Oran-Rief, the Vastwood
+3 [ALA:160] Broodmate Dragon
+4 [UNH:139] Mountain
+4 [ARB:92] Maelstrom Pulse
+4 [ZEN:229] Verdant Catacombs
+1 [C13:298] Jund Panorama
+4 [ARB:50] Bloodbraid Elf
+4 [ARB:95] Putrid Leech
+3 [UNH:138] Swamp
+SB: 2 [M15:104] Mind Rot
+SB: 4 [ZEN:127] Goblin Ruinblaster
+SB: 3 [C13:195] Jund Charm
+SB: 1 [ARB:34] Bituminous Blast
+SB: 3 [M14:97] Duress
+SB: 2 [ARB:47] Thought Hemorrhage
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Kessig Bant 58 PT Gatecrash (Montreal) ST 2-17-13.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Kessig Bant 58 PT Gatecrash (Montreal) ST 2-17-13.dck
new file mode 100644
index 0000000000..05f7a34a8b
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Kessig Bant 58 PT Gatecrash (Montreal) ST 2-17-13.dck
@@ -0,0 +1,31 @@
+4 [AVR:32] Restoration Angel
+2 [M13:229] Sunpetal Grove
+3 [C13:30] Augur of Bolas
+1 [RTR:54] Syncopate
+3 [M13:225] Glacial Fortress
+4 [RTR:241] Hallowed Fountain
+3 [RTR:201] Supreme Verdict
+4 [RTR:145] Azorius Charm
+4 [RTR:200] Sphinx's Revelation
+1 [RTR:155] Detention Sphere
+4 [M13:193] Thragtusk
+2 [ISD:243] Kessig Wolf Run
+4 [M13:170] Farseek
+3 [RTR:248] Temple Garden
+1 [RTR:247] Steam Vents
+4 [ISD:241] Hinterland Harbor
+3 [RTR:148] Centaur Healer
+1 [GTC:247] Stomping Ground
+2 [M15:51] Dissipate
+1 [GTC:245] Sacred Foundry
+2 [ISD:83] Think Twice
+4 [GTC:240] Breeding Pool
+SB: 1 [RTR:201] Supreme Verdict
+SB: 1 [RTR:155] Detention Sphere
+SB: 1 [AVR:209] Gisela, Blade of Goldnight
+SB: 3 [M13:29] Rhox Faithmender
+SB: 2 [ISD:181] Garruk Relentless
+SB: 1 [RTR:148] Centaur Healer
+SB: 2 [ISD:236] Witchbane Orb
+SB: 2 [RTR:18] Rest in Peace
+SB: 2 [M15:71] Negate
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Kessig Titan 1 PT Dark Ascension (Honolulu) ST 2-12-12.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Kessig Titan 1 PT Dark Ascension (Honolulu) ST 2-12-12.dck
new file mode 100644
index 0000000000..1ebda5ca46
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Kessig Titan 1 PT Dark Ascension (Honolulu) ST 2-12-12.dck
@@ -0,0 +1,28 @@
+4 [MBS:75] Slagstorm
+4 [M13:228] Rootbound Crag
+5 [UNH:140] Forest
+1 [MBS:92] Thrun, the Last Troll
+2 [MBS:81] Green Sun's Zenith
+4 [M12:188] Primeval Titan
+1 [M12:165] Birds of Paradise
+6 [UNH:139] Mountain
+2 [C13:114] Inferno Titan
+1 [C13:134] Acidic Slime
+2 [ISD:243] Kessig Wolf Run
+4 [M12:190] Rampant Growth
+1 [C14:184] Whipflare
+4 [MBS:145] Inkmoth Nexus
+3 [C14:271] Solemn Simulacrum
+4 [MBS:134] Sphere of the Suns
+4 [SOM:225] Copperline Gorge
+4 [DKA:140] Huntmaster of the Fells
+4 [SOM:91] Galvanic Blast
+SB: 1 [M13:174] Garruk, Primal Hunter
+SB: 2 [KTK:142] Naturalize
+SB: 2 [M12:128] Combust
+SB: 1 [C14:184] Whipflare
+SB: 2 [MBS:92] Thrun, the Last Troll
+SB: 2 [NPH:103] Beast Within
+SB: 1 [M12:164] Autumn's Veil
+SB: 2 [ISD:127] Ancient Grudge
+SB: 2 [NPH:1] Karn Liberated
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Kessig Titan 1 World Championship 2011 (San Francisco) ST 11-20-11.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Kessig Titan 1 World Championship 2011 (San Francisco) ST 11-20-11.dck
new file mode 100644
index 0000000000..f93361f80c
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Kessig Titan 1 World Championship 2011 (San Francisco) ST 11-20-11.dck
@@ -0,0 +1,26 @@
+3 [MBS:75] Slagstorm
+4 [M13:228] Rootbound Crag
+5 [UNH:140] Forest
+1 [MBS:92] Thrun, the Last Troll
+2 [MBS:81] Green Sun's Zenith
+4 [M12:188] Primeval Titan
+1 [M12:165] Birds of Paradise
+6 [UNH:139] Mountain
+4 [C13:114] Inferno Titan
+2 [ISD:140] Devil's Play
+1 [M14:155] Shock
+3 [ISD:243] Kessig Wolf Run
+4 [M12:190] Rampant Growth
+4 [MBS:145] Inkmoth Nexus
+4 [C14:271] Solemn Simulacrum
+4 [MBS:134] Sphere of the Suns
+4 [SOM:225] Copperline Gorge
+4 [SOM:91] Galvanic Blast
+SB: 1 [MBS:75] Slagstorm
+SB: 2 [MBS:138] Sword of Feast and Famine
+SB: 1 [MBS:94] Viridian Corrupter
+SB: 2 [MBS:92] Thrun, the Last Troll
+SB: 1 [NPH:103] Beast Within
+SB: 2 [ISD:207] Tree of Redemption
+SB: 4 [M12:164] Autumn's Veil
+SB: 2 [ISD:127] Ancient Grudge
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Kessig Titan 2 PT Dark Ascension (Honolulu) ST 2-12-12.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Kessig Titan 2 PT Dark Ascension (Honolulu) ST 2-12-12.dck
new file mode 100644
index 0000000000..cf3700a7a1
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Kessig Titan 2 PT Dark Ascension (Honolulu) ST 2-12-12.dck
@@ -0,0 +1,28 @@
+4 [MBS:75] Slagstorm
+4 [M13:228] Rootbound Crag
+5 [UNH:140] Forest
+1 [MBS:92] Thrun, the Last Troll
+2 [MBS:81] Green Sun's Zenith
+4 [M12:188] Primeval Titan
+1 [M12:165] Birds of Paradise
+6 [UNH:139] Mountain
+2 [C13:114] Inferno Titan
+1 [C13:134] Acidic Slime
+2 [ISD:243] Kessig Wolf Run
+4 [M12:190] Rampant Growth
+1 [C14:184] Whipflare
+4 [MBS:145] Inkmoth Nexus
+3 [C14:271] Solemn Simulacrum
+4 [MBS:134] Sphere of the Suns
+4 [SOM:225] Copperline Gorge
+4 [DKA:140] Huntmaster of the Fells
+4 [SOM:91] Galvanic Blast
+SB: 2 [M13:174] Garruk, Primal Hunter
+SB: 2 [KTK:142] Naturalize
+SB: 1 [M12:128] Combust
+SB: 1 [C14:184] Whipflare
+SB: 2 [MBS:92] Thrun, the Last Troll
+SB: 2 [NPH:103] Beast Within
+SB: 1 [M12:164] Autumn's Veil
+SB: 2 [ISD:127] Ancient Grudge
+SB: 2 [NPH:1] Karn Liberated
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Kithkins 34 World Championship 2008 (Memphis) ST 12-14-08.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Kithkins 34 World Championship 2008 (Memphis) ST 12-14-08.dck
new file mode 100644
index 0000000000..c0575fdd57
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Kithkins 34 World Championship 2008 (Memphis) ST 12-14-08.dck
@@ -0,0 +1,21 @@
+3 [ALA:21] Ranger of Eos
+4 [LRW:28] Knight of Meadowgrain
+4 [LRW:49] Wizened Cenn
+1 [LRW:7] Burrenton Forge-Tender
+4 [LRW:10] Cloudgoat Ranger
+4 [EVE:96] Unmake
+4 [LRW:281] Windbrisk Heights
+1 [M11:1] Ajani Goldmane
+4 [LRW:18] Goldmeadow Stalwart
+4 [MOR:150] Rustic Clachan
+4 [EVE:139] Figure of Destiny
+4 [C14:90] Spectral Procession
+17 [UNH:136] Plains
+2 [ALA:9] Elspeth, Knight-Errant
+SB: 3 [MOR:22] Reveillark
+SB: 4 [EVE:95] Stillmoon Cavalier
+SB: 2 [LRW:7] Burrenton Forge-Tender
+SB: 1 [SHM:245] Wilt-Leaf Liege
+SB: 1 [M11:1] Ajani Goldmane
+SB: 2 [M13:22] Oblivion Ring
+SB: 2 [ALA:16] Knight of the White Orchid
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Mono Red Aggro 58 PT San Diego ST 2-21-10.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Mono Red Aggro 58 PT San Diego ST 2-21-10.dck
new file mode 100644
index 0000000000..3121ad3ad3
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Mono Red Aggro 58 PT San Diego ST 2-21-10.dck
@@ -0,0 +1,22 @@
+4 [WWK:90] Searing Blaze
+4 [M10:125] Ball Lightning
+2 [DDK:46] Hellspark Elemental
+4 [M11:149] Lightning Bolt
+4 [ZEN:211] Arid Mesa
+4 [ALA:103] Hell's Thunder
+1 [GRC:25] Hellspark Elemental
+13 [UNH:139] Mountain
+3 [CMD:121] Earthquake
+1 [CON:65] Hellspark Elemental
+4 [ZEN:141] Plated Geopede
+2 [CON:70] Quenchable Fire
+3 [ZEN:119] Burst Lightning
+4 [ZEN:126] Goblin Guide
+4 [ZEN:223] Scalding Tarn
+3 [ZEN:226] Teetering Peaks
+SB: 4 [ZEN:153] Unstable Footing
+SB: 2 [CON:70] Quenchable Fire
+SB: 2 [ZEN:131] Hellkite Charger
+SB: 2 [M12:150] Manabarbs
+SB: 2 [CMD:131] Punishing Fire
+SB: 3 [M12:206] Dragon's Claw
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Mono W Tokens World Championship 2009 (Rome) ST 11-19-09.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Mono W Tokens World Championship 2009 (Rome) ST 11-19-09.dck
new file mode 100644
index 0000000000..3a9811d7eb
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Mono W Tokens World Championship 2009 (Rome) ST 11-19-09.dck
@@ -0,0 +1,23 @@
+2 [ZEN:11] Emeria Angel
+2 [M11:39] White Knight
+4 [ALA:21] Ranger of Eos
+14 [UNH:136] Plains
+4 [ZEN:211] Arid Mesa
+4 [ALA:16] Knight of the White Orchid
+4 [ZEN:8] Conqueror's Pledge
+1 [C14:78] Martial Coup
+3 [M13:22] Oblivion Ring
+4 [ZEN:219] Marsh Flats
+4 [ZEN:36] Steppe Lynx
+2 [C14:66] Brave the Elements
+4 [CMD:25] Path to Exile
+4 [M12:23] Honor of the Pure
+2 [C14:297] Gargoyle Castle
+2 [M10:34] Soul Warden
+SB: 3 [ZEN:25] Luminarch Ascension
+SB: 4 [ZEN:10] Devout Lightcaster
+SB: 1 [C14:66] Brave the Elements
+SB: 1 [CMD:17] Journey to Nowhere
+SB: 2 [M10:34] Soul Warden
+SB: 2 [ALA:9] Elspeth, Knight-Errant
+SB: 2 [M12:11] Celestial Purge
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Mystic Caw Go 1 PT Paris ST 2-13-11.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Mystic Caw Go 1 PT Paris ST 2-13-11.dck
new file mode 100644
index 0000000000..2ccf3591b4
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Mystic Caw Go 1 PT Paris ST 2-13-11.dck
@@ -0,0 +1,26 @@
+4 [WWK:133] Celestial Colonnade
+3 [M12:16] Gideon Jura
+1 [ZEN:220] Misty Rainforest
+5 [UNH:137] Island
+4 [UNH:136] Plains
+4 [WWK:31] Jace, the Mind Sculptor
+3 [M12:63] Mana Leak
+1 [ROE:59] Deprive
+1 [MBS:138] Sword of Feast and Famine
+1 [SOM:46] Stoic Rebuttal
+1 [SOM:209] Sylvok Lifestaff
+4 [SOM:229] Seachrome Coast
+4 [C14:313] Tectonic Edge
+4 [M13:225] Glacial Fortress
+4 [M11:70] Preordain
+4 [ZEN:67] Spell Pierce
+4 [M11:33] Squadron Hawk
+4 [WWK:20] Stoneforge Mystic
+4 [M12:12] Day of Judgment
+SB: 1 [SOM:208] Sword of Body and Mind
+SB: 1 [M15:71] Negate
+SB: 2 [M11:7] Baneslayer Angel
+SB: 2 [M12:52] Flashfreeze
+SB: 4 [ROE:40] Oust
+SB: 3 [M14:215] Ratchet Bomb
+SB: 2 [MBS:5] Divine Offering
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Mystic Caw Go 34 PT Paris ST 2-13-11.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Mystic Caw Go 34 PT Paris ST 2-13-11.dck
new file mode 100644
index 0000000000..ca5cf0e991
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Mystic Caw Go 34 PT Paris ST 2-13-11.dck
@@ -0,0 +1,30 @@
+4 [WWK:133] Celestial Colonnade
+2 [ZEN:70] Spreading Seas
+2 [M12:16] Gideon Jura
+4 [UNH:137] Island
+3 [WWK:31] Jace, the Mind Sculptor
+5 [UNH:136] Plains
+2 [CMD:17] Journey to Nowhere
+1 [ROE:59] Deprive
+1 [MBS:138] Sword of Feast and Famine
+1 [SOM:135] Venser, the Sojourner
+1 [C14:115] Into the Roil
+1 [SOM:208] Sword of Body and Mind
+2 [C14:91] Sun Titan
+1 [ZEN:219] Marsh Flats
+4 [SOM:229] Seachrome Coast
+4 [C14:313] Tectonic Edge
+2 [SOM:218] Tumble Magnet
+4 [M13:225] Glacial Fortress
+4 [M11:70] Preordain
+2 [WWK:20] Stoneforge Mystic
+4 [M11:33] Squadron Hawk
+2 [SOM:6] Elspeth Tirel
+4 [M12:12] Day of Judgment
+SB: 2 [BNG:25] Revoke Existence
+SB: 4 [ZEN:25] Luminarch Ascension
+SB: 2 [ZEN:70] Spreading Seas
+SB: 1 [M14:215] Ratchet Bomb
+SB: 1 [C14:76] Kor Sanctifiers
+SB: 2 [C14:69] Condemn
+SB: 3 [M11:21] Leyline of Sanctity
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Mystic Caw Go(1) 58 PT Paris ST 2-13-11.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Mystic Caw Go(1) 58 PT Paris ST 2-13-11.dck
new file mode 100644
index 0000000000..c70eba85b0
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Mystic Caw Go(1) 58 PT Paris ST 2-13-11.dck
@@ -0,0 +1,26 @@
+4 [WWK:133] Celestial Colonnade
+3 [M12:16] Gideon Jura
+5 [UNH:137] Island
+4 [UNH:136] Plains
+4 [WWK:31] Jace, the Mind Sculptor
+3 [M12:63] Mana Leak
+1 [ROE:59] Deprive
+1 [ZEN:211] Arid Mesa
+1 [MBS:138] Sword of Feast and Famine
+1 [SOM:46] Stoic Rebuttal
+1 [SOM:209] Sylvok Lifestaff
+4 [SOM:229] Seachrome Coast
+4 [C14:313] Tectonic Edge
+4 [M13:225] Glacial Fortress
+4 [M11:70] Preordain
+4 [ZEN:67] Spell Pierce
+4 [M11:33] Squadron Hawk
+4 [WWK:20] Stoneforge Mystic
+4 [M12:12] Day of Judgment
+SB: 1 [SOM:208] Sword of Body and Mind
+SB: 1 [M11:7] Baneslayer Angel
+SB: 2 [M12:52] Flashfreeze
+SB: 3 [M14:215] Ratchet Bomb
+SB: 4 [ROE:40] Oust
+SB: 2 [MBS:5] Divine Offering
+SB: 2 [SOM:6] Elspeth Tirel
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Mystic Caw Go(2) 58 PT Paris ST 2-13-11.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Mystic Caw Go(2) 58 PT Paris ST 2-13-11.dck
new file mode 100644
index 0000000000..dff94e849f
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Mystic Caw Go(2) 58 PT Paris ST 2-13-11.dck
@@ -0,0 +1,27 @@
+4 [WWK:133] Celestial Colonnade
+3 [UNH:137] Island
+4 [ROE:40] Oust
+4 [UNH:136] Plains
+4 [WWK:31] Jace, the Mind Sculptor
+4 [M12:63] Mana Leak
+2 [CMD:17] Journey to Nowhere
+1 [ZEN:211] Arid Mesa
+4 [ROE:47] Student of Warfare
+1 [MBS:138] Sword of Feast and Famine
+2 [SOM:208] Sword of Body and Mind
+3 [MBS:14] Mirran Crusader
+4 [SOM:229] Seachrome Coast
+4 [C14:313] Tectonic Edge
+4 [M13:225] Glacial Fortress
+4 [M11:70] Preordain
+1 [ZEN:223] Scalding Tarn
+3 [ZEN:67] Spell Pierce
+4 [WWK:20] Stoneforge Mystic
+SB: 1 [WWK:17] Refraction Trap
+SB: 2 [M11:7] Baneslayer Angel
+SB: 1 [M12:52] Flashfreeze
+SB: 3 [M14:215] Ratchet Bomb
+SB: 1 [C14:76] Kor Sanctifiers
+SB: 4 [M11:33] Squadron Hawk
+SB: 2 [C14:124] Sea Gate Oracle
+SB: 1 [M12:11] Celestial Purge
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Naya 34 World Championship 2009 (Rome) ST 11-19-09.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Naya 34 World Championship 2009 (Rome) ST 11-19-09.dck
new file mode 100644
index 0000000000..97d8461373
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Naya 34 World Championship 2009 (Rome) ST 11-19-09.dck
@@ -0,0 +1,28 @@
+3 [CMD:190] Colossal Might
+2 [CON:141] Ancient Ziggurat
+2 [ALA:21] Ranger of Eos
+2 [ZEN:220] Misty Rainforest
+4 [M11:149] Lightning Bolt
+1 [UNH:136] Plains
+3 [ZEN:211] Arid Mesa
+4 [ALA:209] Woolly Thoctar
+4 [M10:186] Great Sable Stag
+2 [UNH:139] Mountain
+4 [ARB:50] Bloodbraid Elf
+2 [MM2:151] Noble Hierarch
+2 [FNMP:118] Ancient Ziggurat
+4 [ZEN:168] Lotus Cobra
+1 [ALA:154] Ajani Vengeant
+4 [ZEN:126] Goblin Guide
+2 [M13:228] Rootbound Crag
+4 [CMD:25] Path to Exile
+4 [UNH:140] Forest
+2 [JR:66] Noble Hierarch
+4 [C13:299] Jungle Shrine
+SB: 2 [M13:22] Oblivion Ring
+SB: 1 [ALA:154] Ajani Vengeant
+SB: 3 [M11:7] Baneslayer Angel
+SB: 2 [C13:26] Wall of Reverence
+SB: 2 [ARB:124] Uril, the Miststalker
+SB: 2 [ZEN:127] Goblin Ruinblaster
+SB: 3 [M12:11] Celestial Purge
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Naya Aggro 58 PT Magic 2015 (Portland) ST 8-3-14.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Naya Aggro 58 PT Magic 2015 (Portland) ST 8-3-14.dck
new file mode 100644
index 0000000000..fa6bc20a03
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Naya Aggro 58 PT Magic 2015 (Portland) ST 8-3-14.dck
@@ -0,0 +1,25 @@
+4 [RTR:214] Dryad Militant
+2 [M15:240] Battlefield Forge
+4 [GTC:167] Ghor-Clan Rampager
+4 [JOU:163] Mana Confluence
+4 [RTR:248] Temple Garden
+1 [C13:179] Boros Charm
+4 [THS:32] Soldier of the Pantheon
+4 [BNG:165] Temple of Plenty
+4 [C13:211] Selesnya Charm
+4 [GTC:247] Stomping Ground
+4 [GTC:245] Sacred Foundry
+2 [RTR:17] Precinct Captain
+3 [M14:1] Ajani, Caller of the Pride
+4 [THS:193] Fleecemane Lion
+4 [C14:66] Brave the Elements
+4 [DGM:114] Voice of Resurgence
+4 [GTC:215] Boros Reckoner
+SB: 1 [M15:169] Back to Nature
+SB: 1 [M15:1] Ajani Steadfast
+SB: 3 [JOU:140] Setessan Tactics
+SB: 1 [THS:209] Xenagos, the Reveler
+SB: 3 [C13:179] Boros Charm
+SB: 2 [JOU:5] Banishing Light
+SB: 2 [DGM:51] Advent of the Wurm
+SB: 2 [RTR:101] Mizzium Mortars
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Naya Lightsaber 1 World Championship 2009 (Rome) ST 11-19-09.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Naya Lightsaber 1 World Championship 2009 (Rome) ST 11-19-09.dck
new file mode 100644
index 0000000000..baa537df4e
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Naya Lightsaber 1 World Championship 2009 (Rome) ST 11-19-09.dck
@@ -0,0 +1,23 @@
+4 [M11:7] Baneslayer Angel
+4 [ALA:21] Ranger of Eos
+4 [M11:149] Lightning Bolt
+4 [UNH:136] Plains
+1 [C14:305] Oran-Rief, the Vastwood
+4 [ZEN:211] Arid Mesa
+4 [ALA:209] Woolly Thoctar
+2 [CON:87] Noble Hierarch
+3 [UNH:139] Mountain
+4 [ARB:50] Bloodbraid Elf
+2 [MM2:151] Noble Hierarch
+3 [ALA:154] Ajani Vengeant
+4 [ALA:152] Wild Nacatl
+4 [M13:228] Rootbound Crag
+1 [ZEN:182] Scute Mob
+4 [CMD:25] Path to Exile
+4 [M13:229] Sunpetal Grove
+4 [UNH:140] Forest
+SB: 1 [ALA:154] Ajani Vengeant
+SB: 2 [ZEN:119] Burst Lightning
+SB: 4 [ZEN:127] Goblin Ruinblaster
+SB: 4 [M10:186] Great Sable Stag
+SB: 4 [M12:11] Celestial Purge
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Naya Pod 58 PT Dark Ascension (Honolulu) ST 2-12-12.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Naya Pod 58 PT Dark Ascension (Honolulu) ST 2-12-12.dck
new file mode 100644
index 0000000000..c27a8f1c37
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Naya Pod 58 PT Dark Ascension (Honolulu) ST 2-12-12.dck
@@ -0,0 +1,36 @@
+1 [UNH:136] Plains
+1 [MBS:95] Viridian Emissary
+3 [ISD:239] Gavony Township
+1 [UNH:139] Mountain
+2 [M13:22] Oblivion Ring
+1 [C14:271] Solemn Simulacrum
+6 [UNH:140] Forest
+2 [MBS:115] Mortarpod
+4 [NPH:104] Birthing Pod
+4 [M12:165] Birds of Paradise
+1 [C14:72] Geist-Honored Monk
+1 [NPH:9] Elesh Norn, Grand Cenobite
+1 [C13:114] Inferno Titan
+4 [NPH:4] Blade Splicer
+1 [C14:283] Wurmcoil Engine
+3 [ISD:170] Avacyn's Pilgrim
+1 [C14:204] Llanowar Elves
+2 [M13:228] Rootbound Crag
+4 [SOM:225] Copperline Gorge
+4 [SOM:228] Razorverge Thicket
+1 [C13:11] Fiend Hunter
+3 [M13:229] Sunpetal Grove
+4 [DKA:140] Huntmaster of the Fells
+4 [DKA:127] Strangleroot Geist
+1 [C13:134] Acidic Slime
+SB: 1 [M12:164] Autumn's Veil
+SB: 1 [M13:22] Oblivion Ring
+SB: 1 [DKA:17] Ray of Revelation
+SB: 3 [NPH:38] Mental Misstep
+SB: 2 [MBS:8] Hero of Bladehold
+SB: 1 [MBS:92] Thrun, the Last Troll
+SB: 1 [NPH:42] Phyrexian Metamorph
+SB: 1 [ISD:127] Ancient Grudge
+SB: 2 [MBS:138] Sword of Feast and Famine
+SB: 1 [NPH:97] Tormentor Exarch
+SB: 1 [C13:134] Acidic Slime
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Open Filigree 58 PT San Diego ST 2-21-10.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Open Filigree 58 PT San Diego ST 2-21-10.dck
new file mode 100644
index 0000000000..2e76cf0a41
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Open Filigree 58 PT San Diego ST 2-21-10.dck
@@ -0,0 +1,30 @@
+2 [WWK:133] Celestial Colonnade
+4 [ZEN:70] Spreading Seas
+1 [UNH:138] Swamp
+4 [ARB:7] Glassdust Hulk
+4 [UNH:137] Island
+2 [ARB:5] Fieldmist Borderpost
+2 [WWK:31] Jace, the Mind Sculptor
+3 [UNH:136] Plains
+4 [C13:189] Filigree Angel
+2 [CMD:17] Journey to Nowhere
+2 [C14:315] Terramorphic Expanse
+3 [ALA:37] Courier's Capsule
+1 [C13:212] Sharuum the Hegemon
+3 [M13:22] Oblivion Ring
+2 [ZEN:219] Marsh Flats
+2 [ZEN:216] Kabira Crossroads
+4 [M10:21] Open the Vaults
+4 [M13:225] Glacial Fortress
+4 [ARB:17] Architects of Will
+4 [ZEN:69] Sphinx of Lost Truths
+1 [ARB:27] Mistvein Borderpost
+3 [M12:12] Day of Judgment
+SB: 2 [ALA:173] Hindering Light
+SB: 1 [M13:22] Oblivion Ring
+SB: 4 [M15:71] Negate
+SB: 3 [M12:52] Flashfreeze
+SB: 1 [WWK:31] Jace, the Mind Sculptor
+SB: 2 [CMD:17] Journey to Nowhere
+SB: 1 [C13:92] Sanguine Bond
+SB: 1 [M12:12] Day of Judgment
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Orzhov Control 34 PT Magic 2015 (Portland) ST 8-3-14.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Orzhov Control 34 PT Magic 2015 (Portland) ST 8-3-14.dck
new file mode 100644
index 0000000000..9493de41db
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Orzhov Control 34 PT Magic 2015 (Portland) ST 8-3-14.dck
@@ -0,0 +1,28 @@
+3 [RTR:63] Desecration Demon
+1 [RTR:82] Ultimate Price
+4 [M15:241] Caves of Koilos
+4 [RTR:73] Pack Rat
+3 [BNG:61] Bile Blight
+3 [RTR:83] Underworld Connections
+8 [UNH:138] Swamp
+1 [UNH:136] Plains
+4 [GTC:242] Godless Shrine
+2 [JOU:5] Banishing Light
+2 [GTC:63] Devour Flesh
+3 [DGM:57] Blood Baron of Vizkopa
+1 [GTC:182] Obzedat, Ghost Council
+4 [THS:107] Thoughtseize
+3 [THS:90] Hero's Downfall
+1 [M15:248] Urborg, Tomb of Yawgmoth
+2 [THS:9] Elspeth, Sun's Champion
+3 [M14:101] Lifebane Zombie
+4 [M14:228] Mutavault
+4 [THS:227] Temple of Silence
+SB: 3 [M14:96] Doom Blade
+SB: 1 [THS:85] Erebos, God of the Dead
+SB: 1 [RTR:83] Underworld Connections
+SB: 3 [M14:97] Duress
+SB: 1 [DGM:103] Sin Collector
+SB: 2 [THS:22] Last Breath
+SB: 2 [JOU:7] Deicide
+SB: 2 [BNG:65] Drown in Sorrow
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Orzhov Control 58 PT Magic 2015 (Portland) ST 8-3-14.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Orzhov Control 58 PT Magic 2015 (Portland) ST 8-3-14.dck
new file mode 100644
index 0000000000..9493de41db
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Orzhov Control 58 PT Magic 2015 (Portland) ST 8-3-14.dck
@@ -0,0 +1,28 @@
+3 [RTR:63] Desecration Demon
+1 [RTR:82] Ultimate Price
+4 [M15:241] Caves of Koilos
+4 [RTR:73] Pack Rat
+3 [BNG:61] Bile Blight
+3 [RTR:83] Underworld Connections
+8 [UNH:138] Swamp
+1 [UNH:136] Plains
+4 [GTC:242] Godless Shrine
+2 [JOU:5] Banishing Light
+2 [GTC:63] Devour Flesh
+3 [DGM:57] Blood Baron of Vizkopa
+1 [GTC:182] Obzedat, Ghost Council
+4 [THS:107] Thoughtseize
+3 [THS:90] Hero's Downfall
+1 [M15:248] Urborg, Tomb of Yawgmoth
+2 [THS:9] Elspeth, Sun's Champion
+3 [M14:101] Lifebane Zombie
+4 [M14:228] Mutavault
+4 [THS:227] Temple of Silence
+SB: 3 [M14:96] Doom Blade
+SB: 1 [THS:85] Erebos, God of the Dead
+SB: 1 [RTR:83] Underworld Connections
+SB: 3 [M14:97] Duress
+SB: 1 [DGM:103] Sin Collector
+SB: 2 [THS:22] Last Breath
+SB: 2 [JOU:7] Deicide
+SB: 2 [BNG:65] Drown in Sorrow
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Orzhov Midrange 58 PT Theros (Dublin) ST 10-13-13.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Orzhov Midrange 58 PT Theros (Dublin) ST 10-13-13.dck
new file mode 100644
index 0000000000..acbda970f6
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Orzhov Midrange 58 PT Theros (Dublin) ST 10-13-13.dck
@@ -0,0 +1,29 @@
+4 [RTR:63] Desecration Demon
+6 [UNH:138] Swamp
+7 [UNH:136] Plains
+4 [THS:32] Soldier of the Pantheon
+4 [GTC:242] Godless Shrine
+4 [RTR:17] Precinct Captain
+3 [M14:96] Doom Blade
+1 [DGM:57] Blood Baron of Vizkopa
+3 [GTC:182] Obzedat, Ghost Council
+2 [DGM:103] Sin Collector
+3 [C14:158] Read the Bones
+4 [THS:107] Thoughtseize
+1 [THS:110] Whip of Erebos
+4 [THS:90] Hero's Downfall
+1 [THS:9] Elspeth, Sun's Champion
+4 [C13:312] Orzhov Guildgate
+1 [M14:228] Mutavault
+4 [THS:227] Temple of Silence
+SB: 1 [DGM:57] Blood Baron of Vizkopa
+SB: 1 [M14:96] Doom Blade
+SB: 1 [RTR:231] Pithing Needle
+SB: 1 [RTR:83] Underworld Connections
+SB: 2 [DGM:103] Sin Collector
+SB: 1 [THS:22] Last Breath
+SB: 1 [THS:9] Elspeth, Sun's Champion
+SB: 2 [M14:101] Lifebane Zombie
+SB: 1 [GTC:63] Devour Flesh
+SB: 3 [M14:18] Fiendslayer Paladin
+SB: 1 [THS:100] Pharika's Cure
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Owling Mine 34 PT Honolulu ST 3-5-06.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Owling Mine 34 PT Honolulu ST 3-5-06.dck
new file mode 100644
index 0000000000..8e3c8f2cdd
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Owling Mine 34 PT Honolulu ST 3-5-06.dck
@@ -0,0 +1,25 @@
+4 [CMD:251] Howling Mine
+4 [CHK:59] Eye of Nowhere
+10 [UNH:137] Island
+2 [10E:83] Evacuation
+4 [RTR:247] Steam Vents
+2 [PTK:42] Exhaustion
+2 [UNH:139] Mountain
+1 [POR:42] Balance of Power
+2 [SOK:162] Mikokoro, Center of the Sea
+4 [SOK:154] Ebony Owl Netsuke
+4 [RAV:63] Remand
+4 [10E:70] Boomerang
+4 [SOK:42] Kami of the Crescent Moon
+3 [ME4:62] Sleight of Hand
+4 [10E:241] Sudden Impact
+1 [USG:74] Exhaustion
+4 [M15:246] Shivan Reef
+1 [PO2:46] Sleight of Hand
+SB: 4 [BOK:56] Threads of Disloyalty
+SB: 1 [DRK:57] Blood Moon
+SB: 1 [9ED:176] Blood Moon
+SB: 3 [M12:63] Mana Leak
+SB: 2 [CHK:74] Meloku the Clouded Mirror
+SB: 1 [8ED:178] Blood Moon
+SB: 3 [M11:154] Pyroclasm
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Quick n Toast 2 World Championship 2008 (Memphis) ST 12-14-08.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Quick n Toast 2 World Championship 2008 (Memphis) ST 12-14-08.dck
new file mode 100644
index 0000000000..5487fdd89b
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Quick n Toast 2 World Championship 2008 (Memphis) ST 12-14-08.dck
@@ -0,0 +1,32 @@
+2 [M15:71] Negate
+2 [LRW:202] Cloudthresher
+2 [C13:195] Jund Charm
+4 [C13:334] Vivid Creek
+1 [10E:116] Tidings
+1 [M11:154] Pyroclasm
+1 [C13:182] Cruel Ultimatum
+1 [EVE:177] Flooded Grove
+1 [SHM:280] Sunken Ruins
+4 [LRW:56] Cryptic Command
+4 [CNS:210] Reflecting Pool
+4 [C14:118] Mulldrifter
+1 [SHM:172] Oona, Queen of the Fae
+3 [ALA:167] Esper Charm
+2 [SHM:271] Fire-Lit Thicket
+4 [10E:100] Remove Soul
+3 [C13:27] Wrath of God
+2 [C14:69] Condemn
+1 [M15:249] Yavimaya Coast
+4 [C13:335] Vivid Grove
+4 [SHM:277] Mystic Gate
+4 [CMD:297] Vivid Meadow
+4 [ALA:188] Rhox War Monk
+1 [10E:362] Underground River
+SB: 1 [RTR:231] Pithing Needle
+SB: 1 [CMD:8] Austere Command
+SB: 1 [C13:27] Wrath of God
+SB: 1 [EVE:22] Glen Elendra Archmage
+SB: 2 [C14:69] Condemn
+SB: 2 [M11:154] Pyroclasm
+SB: 4 [MOR:58] Bitterblossom
+SB: 3 [SHM:208] Guttural Response
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/RB Sauce 34 World Championship 2008 (Memphis) ST 12-14-08.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/RB Sauce 34 World Championship 2008 (Memphis) ST 12-14-08.dck
new file mode 100644
index 0000000000..fdeddbc2f3
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/RB Sauce 34 World Championship 2008 (Memphis) ST 12-14-08.dck
@@ -0,0 +1,21 @@
+4 [M12:146] Incinerate
+4 [10E:359] Sulfurous Springs
+4 [M10:157] Siege-Gang Commander
+6 [UNH:139] Mountain
+4 [MOR:58] Bitterblossom
+3 [CNS:210] Reflecting Pool
+3 [SHM:192] Murderous Redcap
+4 [SHM:203] Boggart Ram-Gang
+4 [JOU:103] Magma Spray
+4 [SHM:272] Graven Cairns
+4 [ALA:156] Blightning
+4 [LRW:267] Auntie's Hovel
+4 [EVE:139] Figure of Destiny
+4 [SHM:92] Flame Javelin
+4 [10E:353] Ghitu Encampment
+SB: 3 [SHM:180] Ashenmoor Gouger
+SB: 1 [C14:247] Loxodon Warhammer
+SB: 2 [C14:160] Shriekmaw
+SB: 2 [C13:233] Spiteful Visions
+SB: 4 [ALA:120] Vithian Stinger
+SB: 3 [C13:81] Infest
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Red Deck Wins 34 World Championship 2011 (San Francisco) ST 11-20-11.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Red Deck Wins 34 World Championship 2011 (San Francisco) ST 11-20-11.dck
new file mode 100644
index 0000000000..cd2c99accf
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Red Deck Wins 34 World Championship 2011 (San Francisco) ST 11-20-11.dck
@@ -0,0 +1,19 @@
+2 [M12:146] Incinerate
+3 [M12:145] Grim Lavamancer
+4 [M14:134] Chandra's Phoenix
+4 [M12:139] Goblin Fireslinger
+4 [M12:156] Stormblood Berserker
+4 [NPH:100] Volt Charge
+3 [SOM:91] Galvanic Blast
+21 [UNH:139] Mountain
+2 [SOM:81] Arc Trail
+4 [NPH:86] Gut Shot
+1 [SOM:104] Spikeshot Elder
+4 [ISD:164] Stromkirk Noble
+4 [NPH:153] Shrine of Burning Rage
+SB: 2 [ISD:166] Traitorous Blood
+SB: 4 [NPH:101] Vulshok Refugee
+SB: 4 [NPH:57] Dismember
+SB: 1 [M12:151] Manic Vandal
+SB: 2 [SOM:94] Koth of the Hammer
+SB: 2 [SOM:81] Arc Trail
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Rock(1) 58 World Championship 2007 (New York) ST 12-6-07.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Rock(1) 58 World Championship 2007 (New York) ST 12-6-07.dck
new file mode 100644
index 0000000000..d238b630ef
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Rock(1) 58 World Championship 2007 (New York) ST 12-6-07.dck
@@ -0,0 +1,31 @@
+1 [C14:247] Loxodon Warhammer
+2 [M12:165] Birds of Paradise
+1 [LEG:250] Pendelhaven
+2 [CSP:153] Snow-Covered Swamp
+1 [ME2:243] Snow-Covered Swamp
+3 [M15:103] Liliana Vess
+1 [FUT:177] Horizon Canopy
+3 [LRW:128] Nameless Inversion
+4 [FUT:153] Tarmogoyf
+2 [C14:206] Masked Admirers
+1 [LRW:110] Eyeblight's Ending
+4 [THS:107] Thoughtseize
+4 [C14:204] Llanowar Elves
+3 [C14:156] Profane Command
+3 [C14:160] Shriekmaw
+1 [M15:248] Urborg, Tomb of Yawgmoth
+4 [LRW:268] Gilt-Leaf Palace
+4 [DDM:57] Ohran Viper
+5 [UNH:140] Forest
+3 [CMD:157] Garruk Wildspeaker
+4 [M15:244] Llanowar Wastes
+4 [10E:361] Treetop Village
+SB: 1 [RTR:231] Pithing Needle
+SB: 1 [LRW:128] Nameless Inversion
+SB: 1 [PLC:85] Damnation
+SB: 4 [LRW:210] Eyes of the Wisent
+SB: 1 [C14:160] Shriekmaw
+SB: 3 [10E:308] Viridian Shaman
+SB: 1 [FUT:136] Riftsweeper
+SB: 2 [10E:145] Graveborn Muse
+SB: 1 [PLC:71] Extirpate
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Rock(2) 58 World Championship 2007 (New York) ST 12-6-07.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Rock(2) 58 World Championship 2007 (New York) ST 12-6-07.dck
new file mode 100644
index 0000000000..f43c1aeb5d
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Rock(2) 58 World Championship 2007 (New York) ST 12-6-07.dck
@@ -0,0 +1,32 @@
+2 [C14:247] Loxodon Warhammer
+1 [LRW:250] Nath of the Gilt-Leaf
+4 [M12:165] Birds of Paradise
+3 [UNH:138] Swamp
+1 [LEG:250] Pendelhaven
+1 [FUT:91] Tombstalker
+1 [LRW:128] Nameless Inversion
+4 [FUT:153] Tarmogoyf
+3 [LRW:110] Eyeblight's Ending
+3 [CMD:176] Troll Ascetic
+4 [THS:107] Thoughtseize
+4 [C14:204] Llanowar Elves
+2 [C14:160] Shriekmaw
+1 [M15:248] Urborg, Tomb of Yawgmoth
+1 [CSP:115] Ohran Viper
+3 [LRW:268] Gilt-Leaf Palace
+3 [DDM:57] Ohran Viper
+7 [UNH:140] Forest
+4 [CMD:157] Garruk Wildspeaker
+4 [M15:244] Llanowar Wastes
+4 [10E:361] Treetop Village
+SB: 1 [PLC:85] Damnation
+SB: 1 [UNH:138] Swamp
+SB: 1 [LRW:202] Cloudthresher
+SB: 1 [CMD:176] Troll Ascetic
+SB: 1 [LRW:110] Eyeblight's Ending
+SB: 2 [LRW:210] Eyes of the Wisent
+SB: 1 [C14:156] Profane Command
+SB: 2 [C14:160] Shriekmaw
+SB: 1 [FUT:91] Tombstalker
+SB: 2 [C13:153] Krosan Grip
+SB: 2 [M15:103] Liliana Vess
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Saint WW with Leaks 58 World Championship 2011 (San Francisco) ST 11-20-11.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Saint WW with Leaks 58 World Championship 2011 (San Francisco) ST 11-20-11.dck
new file mode 100644
index 0000000000..6a67a5a6f2
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Saint WW with Leaks 58 World Championship 2011 (San Francisco) ST 11-20-11.dck
@@ -0,0 +1,27 @@
+1 [MBS:115] Mortarpod
+4 [ISD:244] Moorland Haunt
+4 [CNS:69] Doomed Traveler
+1 [UNH:137] Island
+3 [M12:18] Gideon's Lawkeeper
+11 [UNH:136] Plains
+3 [M12:63] Mana Leak
+3 [ISD:213] Geist of Saint Traft
+2 [MBS:10] Leonin Relic-Warder
+2 [M13:22] Oblivion Ring
+4 [MBS:14] Mirran Crusader
+4 [MBS:8] Hero of Bladehold
+2 [NPH:57] Dismember
+4 [SOM:229] Seachrome Coast
+4 [M13:225] Glacial Fortress
+4 [C13:11] Fiend Hunter
+4 [M12:23] Honor of the Pure
+SB: 2 [BNG:25] Revoke Existence
+SB: 1 [M13:22] Oblivion Ring
+SB: 4 [M12:40] Timely Reinforcements
+SB: 2 [NPH:57] Dismember
+SB: 1 [M12:63] Mana Leak
+SB: 1 [MBS:5] Divine Offering
+SB: 1 [ISD:213] Geist of Saint Traft
+SB: 1 [M12:3] Angelic Destiny
+SB: 1 [M12:12] Day of Judgment
+SB: 1 [M12:11] Celestial Purge
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Saito Naya 34 PT Gatecrash (Montreal) ST 2-17-13.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Saito Naya 34 PT Gatecrash (Montreal) ST 2-17-13.dck
new file mode 100644
index 0000000000..582b0fb20a
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Saito Naya 34 PT Gatecrash (Montreal) ST 2-17-13.dck
@@ -0,0 +1,25 @@
+4 [M13:171] Flinthoof Boar
+4 [GTC:156] Domri Rade
+4 [RTR:248] Temple Garden
+1 [M13:193] Thragtusk
+4 [GTC:123] Gyre Sage
+4 [RTR:178] Loxodon Smiter
+3 [ISD:238] Clifftop Retreat
+2 [UNH:139] Mountain
+4 [GTC:247] Stomping Ground
+4 [GTC:245] Sacred Foundry
+4 [DKA:93] Hellrider
+4 [GTC:216] Burning-Tree Emissary
+4 [GTC:215] Boros Reckoner
+4 [M13:228] Rootbound Crag
+3 [M13:229] Sunpetal Grove
+3 [M13:150] Thundermaw Hellkite
+4 [RTR:101] Mizzium Mortars
+SB: 2 [AVR:31] Nearheath Pilgrim
+SB: 2 [ISD:181] Garruk Relentless
+SB: 1 [GTC:143] Aurelia, the Warleader
+SB: 1 [M13:193] Thragtusk
+SB: 3 [C13:179] Boros Charm
+SB: 2 [M14:25] Pacifism
+SB: 2 [AVR:198] Triumph of Ferocity
+SB: 2 [RTR:18] Rest in Peace
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Selesnya Aggro 2 PT Magic 2015 (Portland) ST 8-3-14.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Selesnya Aggro 2 PT Magic 2015 (Portland) ST 8-3-14.dck
new file mode 100644
index 0000000000..c1584b1bc6
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Selesnya Aggro 2 PT Magic 2015 (Portland) ST 8-3-14.dck
@@ -0,0 +1,20 @@
+4 [JOU:163] Mana Confluence
+4 [RTR:248] Temple Garden
+8 [UNH:136] Plains
+2 [M15:202] Sunblade Elf
+3 [THS:32] Soldier of the Pantheon
+3 [JOU:5] Banishing Light
+3 [RTR:178] Loxodon Smiter
+3 [C13:211] Selesnya Charm
+3 [THS:152] Boon Satyr
+3 [M14:1] Ajani, Caller of the Pride
+4 [THS:193] Fleecemane Lion
+4 [GTC:119] Experiment One
+4 [DGM:114] Voice of Resurgence
+4 [DGM:51] Advent of the Wurm
+8 [UNH:140] Forest
+SB: 4 [JOU:140] Setessan Tactics
+SB: 1 [M15:1] Ajani Steadfast
+SB: 4 [DGM:49] Skylasher
+SB: 4 [DGM:111] Unflinching Courage
+SB: 2 [JOU:2] Ajani's Presence
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Snow Mana Ramp 58 PT Hollywood ST 5-25-08.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Snow Mana Ramp 58 PT Hollywood ST 5-25-08.dck
new file mode 100644
index 0000000000..075f8f6ada
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Snow Mana Ramp 58 PT Hollywood ST 5-25-08.dck
@@ -0,0 +1,27 @@
+2 [LRW:233] Primal Command
+4 [C13:148] Harmonize
+1 [ME2:244] Snow-Covered Mountain
+3 [LRW:202] Cloudthresher
+5 [ME2:245] Snow-Covered Forest
+2 [FUT:144] Edge of Autumn
+4 [SHM:229] Kitchen Finks
+2 [FNMP:98] Wall of Roots
+1 [MIR:151] Wall of Roots
+3 [CSP:148] Mouth of Ronom
+2 [CSP:147] Highland Weald
+1 [SHM:252] Grim Poppet
+1 [ARC:73] Wall of Roots
+4 [FUT:176] Grove of the Burnwillows
+3 [ICE:347] Snow-Covered Forest
+2 [CSP:155] Snow-Covered Forest
+4 [CMD:199] Firespout
+4 [MOR:116] Chameleon Colossus
+4 [CSP:97] Skred
+4 [10E:361] Treetop Village
+4 [CSP:111] Into the North
+SB: 4 [FUT:101] Magus of the Moon
+SB: 4 [FUT:153] Tarmogoyf
+SB: 1 [LRW:202] Cloudthresher
+SB: 2 [M11:154] Pyroclasm
+SB: 1 [SHM:66] Faerie Macabre
+SB: 3 [CMD:157] Garruk Wildspeaker
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Tempered Steel 34 World Championship 2011 (San Francisco) ST 11-20-11.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Tempered Steel 34 World Championship 2011 (San Francisco) ST 11-20-11.dck
new file mode 100644
index 0000000000..3b544c7917
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Tempered Steel 34 World Championship 2011 (San Francisco) ST 11-20-11.dck
@@ -0,0 +1,22 @@
+2 [ISD:244] Moorland Haunt
+6 [SOM:156] Glint Hawk Idol
+4 [MBS:131] Signal Pest
+4 [SOM:189] Origin Spellbomb
+9 [UNH:136] Plains
+4 [MBS:145] Inkmoth Nexus
+4 [SOM:179] Mox Opal
+4 [NPH:76] Vault Skirge
+1 [ISD:23] Mikaeus, the Lunarch
+4 [NPH:7] Dispatch
+4 [SOM:154] Etched Champion
+4 [SOM:229] Seachrome Coast
+2 [SOM:10] Glint Hawk
+4 [SOM:24] Tempered Steel
+4 [SOM:174] Memnite
+SB: 1 [M13:22] Oblivion Ring
+SB: 1 [M12:40] Timely Reinforcements
+SB: 3 [NPH:159] Spellskite
+SB: 3 [MBS:8] Hero of Bladehold
+SB: 2 [NPH:57] Dismember
+SB: 4 [NPH:155] Shrine of Loyal Legions
+SB: 1 [M13:225] Glacial Fortress
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Tempered Steel(1) 58 World Championship 2011 (San Francisco) ST 11-20-11.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Tempered Steel(1) 58 World Championship 2011 (San Francisco) ST 11-20-11.dck
new file mode 100644
index 0000000000..2331fc987e
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Tempered Steel(1) 58 World Championship 2011 (San Francisco) ST 11-20-11.dck
@@ -0,0 +1,22 @@
+2 [ISD:244] Moorland Haunt
+4 [SOM:156] Glint Hawk Idol
+4 [MBS:131] Signal Pest
+4 [SOM:189] Origin Spellbomb
+9 [UNH:136] Plains
+4 [MBS:145] Inkmoth Nexus
+4 [SOM:179] Mox Opal
+4 [NPH:76] Vault Skirge
+1 [ISD:23] Mikaeus, the Lunarch
+4 [NPH:7] Dispatch
+4 [SOM:154] Etched Champion
+4 [SOM:229] Seachrome Coast
+4 [SOM:10] Glint Hawk
+4 [SOM:24] Tempered Steel
+4 [SOM:174] Memnite
+SB: 1 [M13:22] Oblivion Ring
+SB: 1 [M12:40] Timely Reinforcements
+SB: 3 [NPH:159] Spellskite
+SB: 3 [MBS:8] Hero of Bladehold
+SB: 2 [NPH:57] Dismember
+SB: 4 [NPH:155] Shrine of Loyal Legions
+SB: 1 [M13:225] Glacial Fortress
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Tempered Steel(2) 58 World Championship 2011 (San Francisco) ST 11-20-11.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Tempered Steel(2) 58 World Championship 2011 (San Francisco) ST 11-20-11.dck
new file mode 100644
index 0000000000..5273130f8e
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Tempered Steel(2) 58 World Championship 2011 (San Francisco) ST 11-20-11.dck
@@ -0,0 +1,22 @@
+2 [ISD:244] Moorland Haunt
+5 [SOM:156] Glint Hawk Idol
+4 [MBS:131] Signal Pest
+4 [SOM:189] Origin Spellbomb
+9 [UNH:136] Plains
+4 [MBS:145] Inkmoth Nexus
+4 [SOM:179] Mox Opal
+4 [NPH:76] Vault Skirge
+1 [ISD:23] Mikaeus, the Lunarch
+4 [NPH:7] Dispatch
+4 [SOM:154] Etched Champion
+4 [SOM:229] Seachrome Coast
+3 [SOM:10] Glint Hawk
+4 [SOM:24] Tempered Steel
+4 [SOM:174] Memnite
+SB: 1 [M13:22] Oblivion Ring
+SB: 1 [M12:40] Timely Reinforcements
+SB: 3 [NPH:159] Spellskite
+SB: 3 [MBS:8] Hero of Bladehold
+SB: 2 [NPH:57] Dismember
+SB: 4 [NPH:155] Shrine of Loyal Legions
+SB: 1 [M13:225] Glacial Fortress
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Tempered Steel(3) 58 World Championship 2011 (San Francisco) ST 11-20-11.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Tempered Steel(3) 58 World Championship 2011 (San Francisco) ST 11-20-11.dck
new file mode 100644
index 0000000000..3b544c7917
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Tempered Steel(3) 58 World Championship 2011 (San Francisco) ST 11-20-11.dck
@@ -0,0 +1,22 @@
+2 [ISD:244] Moorland Haunt
+6 [SOM:156] Glint Hawk Idol
+4 [MBS:131] Signal Pest
+4 [SOM:189] Origin Spellbomb
+9 [UNH:136] Plains
+4 [MBS:145] Inkmoth Nexus
+4 [SOM:179] Mox Opal
+4 [NPH:76] Vault Skirge
+1 [ISD:23] Mikaeus, the Lunarch
+4 [NPH:7] Dispatch
+4 [SOM:154] Etched Champion
+4 [SOM:229] Seachrome Coast
+2 [SOM:10] Glint Hawk
+4 [SOM:24] Tempered Steel
+4 [SOM:174] Memnite
+SB: 1 [M13:22] Oblivion Ring
+SB: 1 [M12:40] Timely Reinforcements
+SB: 3 [NPH:159] Spellskite
+SB: 3 [MBS:8] Hero of Bladehold
+SB: 2 [NPH:57] Dismember
+SB: 4 [NPH:155] Shrine of Loyal Legions
+SB: 1 [M13:225] Glacial Fortress
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Tezzeret Control 58 PT Paris ST 2-13-11.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Tezzeret Control 58 PT Paris ST 2-13-11.dck
new file mode 100644
index 0000000000..b935fbdfd6
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Tezzeret Control 58 PT Paris ST 2-13-11.dck
@@ -0,0 +1,31 @@
+4 [WWK:134] Creeping Tar Pit
+3 [MBS:134] Sphere of the Suns
+4 [MBS:97] Tezzeret, Agent of Bolas
+2 [MBS:75] Slagstorm
+3 [UNH:137] Island
+3 [WWK:31] Jace, the Mind Sculptor
+2 [SOM:179] Mox Opal
+2 [MBS:145] Inkmoth Nexus
+2 [SOM:91] Galvanic Blast
+2 [M11:154] Pyroclasm
+2 [UNH:139] Mountain
+4 [GTC:234] Prophetic Prism
+1 [MBS:34] Treasure Mage
+2 [SOM:46] Stoic Rebuttal
+1 [C14:283] Wurmcoil Engine
+3 [C14:313] Tectonic Edge
+3 [SOM:218] Tumble Magnet
+3 [SOM:226] Darkslick Shores
+4 [M11:70] Preordain
+4 [ZEN:223] Scalding Tarn
+4 [C14:239] Everflowing Chalice
+1 [SOM:176] Mindslaver
+1 [SOM:224] Blackcleave Cliffs
+SB: 4 [ZEN:70] Spreading Seas
+SB: 2 [SOM:46] Stoic Rebuttal
+SB: 3 [M14:97] Duress
+SB: 1 [M12:52] Flashfreeze
+SB: 1 [M14:215] Ratchet Bomb
+SB: 1 [WWK:31] Jace, the Mind Sculptor
+SB: 2 [M11:154] Pyroclasm
+SB: 1 [SOM:96] Kuldotha Rebirth
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/The Aristocrats 1 PT Gatecrash (Montreal) ST 2-17-13.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/The Aristocrats 1 PT Gatecrash (Montreal) ST 2-17-13.dck
new file mode 100644
index 0000000000..e6f0d83a1d
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/The Aristocrats 1 PT Gatecrash (Montreal) ST 2-17-13.dck
@@ -0,0 +1,28 @@
+4 [CNS:69] Doomed Traveler
+1 [AVR:32] Restoration Angel
+3 [UNH:136] Plains
+4 [RTR:238] Blood Crypt
+3 [M13:96] Knight of Infamy
+4 [GTC:242] Godless Shrine
+4 [GTC:150] Cartel Aristocrat
+2 [C14:88] Silverblade Paladin
+1 [ISD:238] Clifftop Retreat
+2 [DKA:12] Lingering Souls
+4 [ISD:242] Isolated Chapel
+4 [GTC:245] Sacred Foundry
+4 [ISD:6] Champion of the Parish
+2 [C14:163] Skirsdag High Priest
+2 [AVR:166] Zealous Conscripts
+4 [GTC:215] Boros Reckoner
+1 [DKA:158] Vault of the Archangel
+4 [DKA:138] Falkenrath Aristocrat
+4 [GTC:185] Orzhov Charm
+3 [AVR:226] Cavern of Souls
+SB: 3 [C14:167] Tragic Slip
+SB: 2 [GTC:182] Obzedat, Ghost Council
+SB: 1 [C14:79] Mentor of the Meek
+SB: 1 [C14:163] Skirsdag High Priest
+SB: 2 [C14:172] Blasphemous Act
+SB: 2 [DKA:142] Sorin, Lord of Innistrad
+SB: 2 [DKA:12] Lingering Souls
+SB: 2 [RTR:18] Rest in Peace
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Trinity 34 World Championship 2000 (Brussels) ST 8-6-00.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Trinity 34 World Championship 2000 (Brussels) ST 8-6-00.dck
new file mode 100644
index 0000000000..82458d9d4d
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/Trinity 34 World Championship 2000 (Brussels) ST 8-6-00.dck
@@ -0,0 +1,27 @@
+3 [USG:321] Gaea's Cradle
+2 [8ED:272] Plow Under
+1 [UDS:118] Rofellos, Llanowar Emissary
+4 [M12:165] Birds of Paradise
+4 [NMS:119] Skyshroud Poacher
+2 [UDS:117] Plow Under
+4 [NMS:139] Tangle Wire
+1 [UDS:134] Masticore
+2 [JR:18] Deranged Hermit
+4 [C14:210] Priest of Titania
+1 [USG:306] Phyrexian Processor
+4 [C14:204] Llanowar Elves
+2 [VMA:229] Rofellos, Llanowar Emissary
+4 [MMQ:324] Rishadan Port
+3 [VMA:275] Masticore
+1 [USG:248] Elvish Lyrist
+14 [UNH:140] Forest
+2 [10E:361] Treetop Village
+2 [ULG:101] Deranged Hermit
+SB: 1 [USG:306] Phyrexian Processor
+SB: 4 [UDS:140] Thran Foundry
+SB: 2 [BOK:146] Splinter
+SB: 1 [DDE:29] Phyrexian Processor
+SB: 1 [UNH:140] Forest
+SB: 2 [VIS:73] Uktabi Orangutan
+SB: 1 [MIR:153] Worldly Tutor
+SB: 2 [NMS:111] Reverent Silence
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UB Control 1 World Championship 2010 (Chiba) ST 12-12-10.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UB Control 1 World Championship 2010 (Chiba) ST 12-12-10.dck
new file mode 100644
index 0000000000..c7f768bb7a
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UB Control 1 World Championship 2010 (Chiba) ST 12-12-10.dck
@@ -0,0 +1,29 @@
+3 [ROE:115] Inquisition of Kozilek
+4 [WWK:134] Creeping Tar Pit
+4 [ZEN:70] Spreading Seas
+3 [UNH:138] Swamp
+1 [ZEN:220] Misty Rainforest
+5 [UNH:137] Island
+2 [ROE:100] Consume the Meek
+4 [WWK:31] Jace, the Mind Sculptor
+4 [M12:63] Mana Leak
+2 [M11:58] Jace Beleren
+2 [C14:124] Sea Gate Oracle
+2 [M14:96] Doom Blade
+1 [M14:97] Duress
+4 [M13:223] Drowned Catacomb
+3 [C14:145] Grave Titan
+4 [C14:313] Tectonic Edge
+4 [SOM:226] Darkslick Shores
+4 [M11:70] Preordain
+2 [ZEN:87] Disfigure
+1 [KTK:33] Cancel
+1 [ZEN:229] Verdant Catacombs
+SB: 1 [M12:109] Sorin Markov
+SB: 1 [M14:96] Doom Blade
+SB: 3 [SOM:69] Memoricide
+SB: 2 [M14:97] Duress
+SB: 2 [M12:52] Flashfreeze
+SB: 3 [M14:215] Ratchet Bomb
+SB: 1 [ROE:59] Deprive
+SB: 2 [ZEN:87] Disfigure
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UB Control 2 World Championship 2010 (Chiba) ST 12-12-10.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UB Control 2 World Championship 2010 (Chiba) ST 12-12-10.dck
new file mode 100644
index 0000000000..df5a444762
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UB Control 2 World Championship 2010 (Chiba) ST 12-12-10.dck
@@ -0,0 +1,31 @@
+2 [ROE:115] Inquisition of Kozilek
+4 [WWK:134] Creeping Tar Pit
+4 [ZEN:70] Spreading Seas
+3 [UNH:138] Swamp
+1 [ZEN:220] Misty Rainforest
+5 [UNH:137] Island
+2 [ROE:100] Consume the Meek
+4 [WWK:31] Jace, the Mind Sculptor
+4 [M12:63] Mana Leak
+2 [M11:58] Jace Beleren
+2 [C14:124] Sea Gate Oracle
+2 [M14:96] Doom Blade
+1 [SOM:46] Stoic Rebuttal
+2 [M14:97] Duress
+4 [M13:223] Drowned Catacomb
+3 [C14:145] Grave Titan
+2 [M14:215] Ratchet Bomb
+4 [C14:313] Tectonic Edge
+4 [SOM:226] Darkslick Shores
+4 [M11:70] Preordain
+1 [ZEN:229] Verdant Catacombs
+SB: 1 [M12:109] Sorin Markov
+SB: 1 [ROE:115] Inquisition of Kozilek
+SB: 1 [M14:96] Doom Blade
+SB: 3 [SOM:69] Memoricide
+SB: 1 [SOM:46] Stoic Rebuttal
+SB: 1 [M14:97] Duress
+SB: 2 [M12:52] Flashfreeze
+SB: 1 [M14:215] Ratchet Bomb
+SB: 3 [ZEN:87] Disfigure
+SB: 1 [M11:58] Jace Beleren
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UB Control 34 World Championship 2010 (Chiba) ST 12-12-10.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UB Control 34 World Championship 2010 (Chiba) ST 12-12-10.dck
new file mode 100644
index 0000000000..d2e75124e4
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UB Control 34 World Championship 2010 (Chiba) ST 12-12-10.dck
@@ -0,0 +1,32 @@
+4 [ROE:115] Inquisition of Kozilek
+4 [WWK:134] Creeping Tar Pit
+4 [ZEN:70] Spreading Seas
+3 [UNH:138] Swamp
+1 [ZEN:220] Misty Rainforest
+4 [UNH:137] Island
+1 [ROE:100] Consume the Meek
+4 [WWK:31] Jace, the Mind Sculptor
+4 [M12:63] Mana Leak
+1 [M11:58] Jace Beleren
+3 [C14:124] Sea Gate Oracle
+3 [M14:96] Doom Blade
+4 [M13:223] Drowned Catacomb
+3 [C14:145] Grave Titan
+4 [C14:313] Tectonic Edge
+4 [SOM:226] Darkslick Shores
+4 [M11:70] Preordain
+2 [ZEN:87] Disfigure
+1 [M11:226] Mystifying Maze
+1 [KTK:33] Cancel
+1 [ZEN:229] Verdant Catacombs
+SB: 1 [SOM:46] Stoic Rebuttal
+SB: 1 [M14:97] Duress
+SB: 1 [ZEN:57] Mindbreak Trap
+SB: 1 [M12:52] Flashfreeze
+SB: 1 [M14:215] Ratchet Bomb
+SB: 2 [SOM:78] Skinrender
+SB: 1 [ROE:59] Deprive
+SB: 2 [ZEN:87] Disfigure
+SB: 1 [M11:58] Jace Beleren
+SB: 1 [ZEN:67] Spell Pierce
+SB: 3 [C13:97] Vampire Nighthawk
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UB Control 58 PT Khans of Tarkir (Honolulu) ST 10-12-14.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UB Control 58 PT Khans of Tarkir (Honolulu) ST 10-12-14.dck
new file mode 100644
index 0000000000..55b9f03df1
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UB Control 58 PT Khans of Tarkir (Honolulu) ST 10-12-14.dck
@@ -0,0 +1,30 @@
+4 [KTK:239] Polluted Delta
+3 [BNG:61] Bile Blight
+4 [UNH:138] Swamp
+4 [THS:47] Dissolve
+4 [UNH:137] Island
+2 [KTK:233] Flooded Strand
+4 [KTK:69] Despise
+1 [JOU:165] Temple of Malady
+2 [BNG:65] Drown in Sorrow
+1 [THS:226] Temple of Mystery
+4 [THS:225] Temple of Deceit
+2 [THS:107] Thoughtseize
+4 [KTK:232] Dismal Backwater
+4 [THS:90] Hero's Downfall
+4 [KTK:37] Disdainful Stroke
+4 [THS:60] Prognostic Sphinx
+4 [KTK:36] Dig Through Time
+1 [M15:248] Urborg, Tomb of Yawgmoth
+2 [KTK:230] Bloodstained Mire
+2 [JOU:82] Silence the Believers
+SB: 2 [M15:71] Negate
+SB: 1 [KTK:49] Pearl Lake Ancient
+SB: 1 [BNG:61] Bile Blight
+SB: 1 [KTK:54] Set Adrift
+SB: 1 [THS:107] Thoughtseize
+SB: 2 [THS:104] Returned Phalanx
+SB: 1 [JOU:82] Silence the Believers
+SB: 3 [KTK:34] Clever Impersonator
+SB: 1 [THS:100] Pharika's Cure
+SB: 2 [BNG:65] Drown in Sorrow
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UB Control 58 World Championship 2005 (Yokohama) ST 12-4-05.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UB Control 58 World Championship 2005 (Yokohama) ST 12-4-05.dck
new file mode 100644
index 0000000000..9b35dba9a2
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UB Control 58 World Championship 2005 (Yokohama) ST 12-4-05.dck
@@ -0,0 +1,29 @@
+2 [RTR:231] Pithing Needle
+4 [UNH:138] Swamp
+1 [CHK:279] Minamo, School at Water's Edge
+9 [UNH:137] Island
+3 [M12:63] Mana Leak
+3 [CHK:74] Meloku the Clouded Mirror
+1 [CHK:72] Keiga, the Tide Star
+2 [CHK:115] Hideous Laughter
+4 [CHK:65] Hinder
+3 [M13:65] Rewind
+1 [SOK:163] Miren, the Moaning Well
+1 [CHK:283] Shizo, Death's Storehouse
+3 [RAV:93] Last Gasp
+1 [SOK:164] Oboro, Palace in the Clouds
+3 [10E:70] Boomerang
+4 [CHK:70] Jushi Apprentice
+1 [BOK:71] Ink-Eyes, Servant of Oni
+3 [BOK:33] Disrupting Shoal
+3 [C13:31] Azami, Lady of Scrolls
+4 [GTC:249] Watery Grave
+4 [10E:362] Underground River
+SB: 1 [RTR:231] Pithing Needle
+SB: 2 [RAV:82] Darkblast
+SB: 2 [CHK:273] Boseiju, Who Shelters All
+SB: 4 [BOK:56] Threads of Disloyalty
+SB: 2 [7ED:154] Persecute
+SB: 1 [8ED:151] Persecute
+SB: 2 [SOK:51] Overwhelming Intellect
+SB: 1 [CHK:115] Hideous Laughter
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UB Control Dragon 2 PT Dragons of Tarkir (Brussels) ST 4-12-15.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UB Control Dragon 2 PT Dragons of Tarkir (Brussels) ST 4-12-15.dck
new file mode 100644
index 0000000000..39275a907c
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UB Control Dragon 2 PT Dragons of Tarkir (Brussels) ST 4-12-15.dck
@@ -0,0 +1,32 @@
+3 [FRF:65] Crux of Fate
+4 [KTK:239] Polluted Delta
+3 [DTK:58] Icefall Regent
+3 [M15:63] Jace's Ingenuity
+2 [BNG:61] Bile Blight
+2 [KTK:238] Opulent Palace
+3 [UNH:138] Swamp
+2 [THS:47] Dissolve
+6 [UNH:137] Island
+4 [DTK:78] Silumgar's Scorn
+2 [DTK:220] Dragonlord Silumgar
+1 [DTK:249] Haven of the Spirit Dragon
+4 [THS:225] Temple of Deceit
+2 [DTK:124] Ultimate Price
+2 [THS:107] Thoughtseize
+1 [FRF:157] Silumgar, the Drifting Death
+3 [THS:90] Hero's Downfall
+3 [KTK:36] Dig Through Time
+1 [KTK:81] Murderous Cut
+2 [M15:248] Urborg, Tomb of Yawgmoth
+4 [FRF:168] Dismal Backwater
+1 [FRF:1] Ugin, the Spirit Dragon
+2 [DTK:102] Foul-Tongue Invocation
+SB: 1 [DTK:125] Virulent Plague
+SB: 1 [DTK:124] Ultimate Price
+SB: 1 [BNG:61] Bile Blight
+SB: 1 [DTK:65] Negate
+SB: 1 [DTK:52] Dragonlord's Prerogative
+SB: 2 [KTK:37] Disdainful Stroke
+SB: 3 [DTK:98] Duress
+SB: 2 [DTK:80] Stratus Dancer
+SB: 3 [BNG:65] Drown in Sorrow
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UB Control Dragonless 34 PT Dragons of Tarkir (Brussels) ST 4-12-15.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UB Control Dragonless 34 PT Dragons of Tarkir (Brussels) ST 4-12-15.dck
new file mode 100644
index 0000000000..265c316d9c
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UB Control Dragonless 34 PT Dragons of Tarkir (Brussels) ST 4-12-15.dck
@@ -0,0 +1,37 @@
+1 [M15:51] Dissipate
+4 [UNH:138] Swamp
+3 [UNH:137] Island
+4 [THS:47] Dissolve
+1 [JOU:165] Temple of Malady
+1 [M15:103] Liliana Vess
+4 [THS:225] Temple of Deceit
+4 [THS:90] Hero's Downfall
+3 [KTK:36] Dig Through Time
+4 [KTK:239] Polluted Delta
+1 [FRF:65] Crux of Fate
+2 [M15:63] Jace's Ingenuity
+2 [KTK:238] Opulent Palace
+4 [BNG:61] Bile Blight
+1 [DTK:52] Dragonlord's Prerogative
+2 [THS:188] Ashiok, Nightmare Weaver
+1 [BNG:163] Temple of Enlightenment
+1 [BNG:65] Drown in Sorrow
+1 [M15:44] AEtherspouts
+1 [DTK:124] Ultimate Price
+3 [M15:224] Perilous Vault
+4 [FRF:168] Dismal Backwater
+1 [M15:248] Urborg, Tomb of Yawgmoth
+2 [FRF:1] Ugin, the Spirit Dragon
+2 [JOU:82] Silence the Believers
+3 [M15:245] Radiant Fountain
+SB: 1 [JOU:43] Interpret the Signs
+SB: 1 [M15:44] AEtherspouts
+SB: 1 [KTK:49] Pearl Lake Ancient
+SB: 1 [FRF:87] Tasigur, the Golden Fang
+SB: 1 [KTK:218] Cranial Archive
+SB: 2 [THS:107] Thoughtseize
+SB: 2 [DTK:65] Negate
+SB: 2 [KTK:37] Disdainful Stroke
+SB: 1 [THS:188] Ashiok, Nightmare Weaver
+SB: 1 [THS:100] Pharika's Cure
+SB: 2 [BNG:65] Drown in Sorrow
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UB Control(1) 58 World Championship 2010 (Chiba) ST 12-12-10.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UB Control(1) 58 World Championship 2010 (Chiba) ST 12-12-10.dck
new file mode 100644
index 0000000000..0ec4fb72e9
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UB Control(1) 58 World Championship 2010 (Chiba) ST 12-12-10.dck
@@ -0,0 +1,27 @@
+4 [WWK:134] Creeping Tar Pit
+3 [UNH:138] Swamp
+2 [ZEN:220] Misty Rainforest
+5 [UNH:137] Island
+4 [WWK:31] Jace, the Mind Sculptor
+4 [M12:63] Mana Leak
+3 [M11:58] Jace Beleren
+3 [C14:124] Sea Gate Oracle
+3 [M14:96] Doom Blade
+2 [SOM:46] Stoic Rebuttal
+2 [M14:97] Duress
+4 [M13:223] Drowned Catacomb
+3 [C14:145] Grave Titan
+4 [C14:313] Tectonic Edge
+3 [M14:215] Ratchet Bomb
+4 [SOM:226] Darkslick Shores
+4 [M11:70] Preordain
+3 [ZEN:87] Disfigure
+SB: 1 [M14:96] Doom Blade
+SB: 3 [M15:71] Negate
+SB: 1 [M14:97] Duress
+SB: 1 [WWK:68] Smother
+SB: 2 [ZEN:57] Mindbreak Trap
+SB: 3 [M12:52] Flashfreeze
+SB: 2 [ROE:100] Consume the Meek
+SB: 1 [M14:215] Ratchet Bomb
+SB: 1 [ZEN:87] Disfigure
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UB Control(2) 58 World Championship 2010 (Chiba) ST 12-12-10.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UB Control(2) 58 World Championship 2010 (Chiba) ST 12-12-10.dck
new file mode 100644
index 0000000000..20780135be
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UB Control(2) 58 World Championship 2010 (Chiba) ST 12-12-10.dck
@@ -0,0 +1,27 @@
+4 [ROE:115] Inquisition of Kozilek
+4 [WWK:134] Creeping Tar Pit
+4 [ZEN:70] Spreading Seas
+3 [UNH:138] Swamp
+1 [ZEN:220] Misty Rainforest
+5 [UNH:137] Island
+4 [WWK:31] Jace, the Mind Sculptor
+4 [M12:63] Mana Leak
+2 [M11:58] Jace Beleren
+3 [C14:124] Sea Gate Oracle
+3 [M14:96] Doom Blade
+4 [M13:223] Drowned Catacomb
+3 [C14:145] Grave Titan
+1 [M14:215] Ratchet Bomb
+4 [C14:313] Tectonic Edge
+4 [SOM:226] Darkslick Shores
+4 [M11:70] Preordain
+2 [ZEN:87] Disfigure
+1 [ZEN:229] Verdant Catacombs
+SB: 2 [M15:71] Negate
+SB: 2 [SOM:69] Memoricide
+SB: 1 [SOM:46] Stoic Rebuttal
+SB: 1 [M14:97] Duress
+SB: 3 [M12:52] Flashfreeze
+SB: 1 [M14:215] Ratchet Bomb
+SB: 2 [ZEN:87] Disfigure
+SB: 3 [C13:97] Vampire Nighthawk
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UBw Control Dragon 58 PT Dragons of Tarkir (Brussels) ST 4-12-15.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UBw Control Dragon 58 PT Dragons of Tarkir (Brussels) ST 4-12-15.dck
new file mode 100644
index 0000000000..1d5577cdce
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UBw Control Dragon 58 PT Dragons of Tarkir (Brussels) ST 4-12-15.dck
@@ -0,0 +1,35 @@
+2 [FRF:65] Crux of Fate
+4 [KTK:239] Polluted Delta
+2 [DTK:58] Icefall Regent
+3 [UNH:138] Swamp
+3 [UNH:137] Island
+4 [DTK:78] Silumgar's Scorn
+1 [DTK:52] Dragonlord's Prerogative
+2 [DTK:219] Dragonlord Ojutai
+2 [DTK:220] Dragonlord Silumgar
+4 [DTK:45] Anticipate
+3 [BNG:163] Temple of Enlightenment
+2 [DTK:249] Haven of the Spirit Dragon
+4 [THS:225] Temple of Deceit
+2 [DTK:124] Ultimate Price
+3 [THS:107] Thoughtseize
+2 [FRF:157] Silumgar, the Drifting Death
+3 [THS:90] Hero's Downfall
+2 [KTK:36] Dig Through Time
+1 [M15:248] Urborg, Tomb of Yawgmoth
+4 [FRF:168] Dismal Backwater
+1 [C14:161] Sign in Blood
+1 [FRF:1] Ugin, the Spirit Dragon
+3 [DTK:102] Foul-Tongue Invocation
+2 [THS:227] Temple of Silence
+SB: 1 [DTK:125] Virulent Plague
+SB: 1 [BNG:61] Bile Blight
+SB: 2 [DTK:65] Negate
+SB: 1 [THS:107] Thoughtseize
+SB: 1 [M15:224] Perilous Vault
+SB: 1 [THS:90] Hero's Downfall
+SB: 1 [DTK:80] Stratus Dancer
+SB: 1 [THS:188] Ashiok, Nightmare Weaver
+SB: 2 [M15:65] Jorubai Murk Lurker
+SB: 1 [DTK:102] Foul-Tongue Invocation
+SB: 3 [BNG:65] Drown in Sorrow
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UW Control 1 PT Magic 2015 (Portland) ST 8-3-14.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UW Control 1 PT Magic 2015 (Portland) ST 8-3-14.dck
new file mode 100644
index 0000000000..41dca3a203
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UW Control 1 PT Magic 2015 (Portland) ST 8-3-14.dck
@@ -0,0 +1,27 @@
+3 [M15:52] Divination
+4 [RTR:145] Azorius Charm
+3 [RTR:44] Jace, Architect of Thought
+1 [JOU:164] Temple of Epiphany
+2 [THS:22] Last Breath
+4 [THS:47] Dissolve
+6 [UNH:137] Island
+2 [C13:275] Azorius Guildgate
+6 [UNH:136] Plains
+4 [RTR:200] Sphinx's Revelation
+4 [RTR:201] Supreme Verdict
+4 [BNG:163] Temple of Enlightenment
+4 [M14:68] Quicken
+1 [M14:209] Elixir of Immortality
+1 [THS:228] Temple of Triumph
+2 [M14:228] Mutavault
+2 [RTR:54] Syncopate
+3 [M14:29] Planar Cleansing
+4 [RTR:241] Hallowed Fountain
+SB: 4 [JOU:18] Nyx-Fleece Ram
+SB: 2 [THS:49] Gainsay
+SB: 2 [THS:22] Last Breath
+SB: 2 [M14:5] Archangel of Thune
+SB: 2 [RTR:36] Dispel
+SB: 1 [M14:60] Jace, Memory Adept
+SB: 1 [THS:9] Elspeth, Sun's Champion
+SB: 1 [JOU:7] Deicide
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UW Control 58 World Championship 2010 (Chiba) ST 12-12-10.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UW Control 58 World Championship 2010 (Chiba) ST 12-12-10.dck
new file mode 100644
index 0000000000..583d37c4ab
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UW Control 58 World Championship 2010 (Chiba) ST 12-12-10.dck
@@ -0,0 +1,26 @@
+2 [M15:71] Negate
+4 [WWK:133] Celestial Colonnade
+4 [ZEN:70] Spreading Seas
+3 [M11:7] Baneslayer Angel
+2 [M12:16] Gideon Jura
+2 [ZEN:220] Misty Rainforest
+5 [UNH:137] Island
+4 [ROE:40] Oust
+3 [UNH:136] Plains
+4 [WWK:31] Jace, the Mind Sculptor
+4 [M12:63] Mana Leak
+2 [M11:58] Jace Beleren
+1 [SOM:46] Stoic Rebuttal
+4 [SOM:229] Seachrome Coast
+4 [C14:313] Tectonic Edge
+4 [M13:225] Glacial Fortress
+4 [M11:70] Preordain
+2 [SOM:6] Elspeth Tirel
+2 [M12:12] Day of Judgment
+SB: 2 [M15:71] Negate
+SB: 1 [M11:7] Baneslayer Angel
+SB: 1 [ZEN:57] Mindbreak Trap
+SB: 3 [M12:52] Flashfreeze
+SB: 3 [M14:215] Ratchet Bomb
+SB: 4 [SOM:14] Leonin Arbiter
+SB: 1 [SOM:135] Venser, the Sojourner
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UW Delver 58 PT Dark Ascension (Honolulu) ST 2-12-12.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UW Delver 58 PT Dark Ascension (Honolulu) ST 2-12-12.dck
new file mode 100644
index 0000000000..f6239aa78c
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UW Delver 58 PT Dark Ascension (Honolulu) ST 2-12-12.dck
@@ -0,0 +1,28 @@
+3 [ISD:244] Moorland Haunt
+1 [ISD:231] Runechanter's Pike
+9 [UNH:137] Island
+1 [UNH:136] Plains
+4 [ISD:51] Delver of Secrets
+4 [ISD:78] Snapcaster Mage
+4 [M12:63] Mana Leak
+2 [DKA:52] Thought Scour
+4 [M12:73] Ponder
+4 [ISD:213] Geist of Saint Traft
+2 [ISD:60] Invisible Stalker
+2 [NPH:86] Gut Shot
+4 [NPH:35] Gitaxian Probe
+4 [NPH:48] Vapor Snag
+4 [SOM:229] Seachrome Coast
+1 [NPH:57] Dismember
+4 [M13:225] Glacial Fortress
+3 [NPH:161] Sword of War and Peace
+SB: 2 [BNG:25] Revoke Existence
+SB: 1 [M13:22] Oblivion Ring
+SB: 3 [M12:40] Timely Reinforcements
+SB: 1 [NPH:116] Mutagenic Growth
+SB: 2 [M15:51] Dissipate
+SB: 1 [NPH:57] Dismember
+SB: 1 [MBS:5] Divine Offering
+SB: 2 [M12:72] Phantasmal Image
+SB: 1 [M12:12] Day of Judgment
+SB: 1 [MBS:21] Consecrated Sphinx
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UW Human Delver 58 PT Dark Ascension (Honolulu) ST 2-12-12.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UW Human Delver 58 PT Dark Ascension (Honolulu) ST 2-12-12.dck
new file mode 100644
index 0000000000..66e30a9138
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UW Human Delver 58 PT Dark Ascension (Honolulu) ST 2-12-12.dck
@@ -0,0 +1,30 @@
+3 [DKA:8] Gather the Townsfolk
+2 [ISD:244] Moorland Haunt
+2 [MBS:115] Mortarpod
+2 [CNS:69] Doomed Traveler
+1 [DKA:7] Faith's Shield
+5 [UNH:137] Island
+5 [UNH:136] Plains
+4 [ISD:51] Delver of Secrets
+4 [ISD:78] Snapcaster Mage
+4 [M12:63] Mana Leak
+4 [M12:73] Ponder
+2 [ISD:213] Geist of Saint Traft
+1 [BNG:25] Revoke Existence
+4 [NPH:35] Gitaxian Probe
+4 [ISD:6] Champion of the Parish
+1 [C14:80] Midnight Haunting
+4 [NPH:48] Vapor Snag
+4 [SOM:229] Seachrome Coast
+4 [M13:225] Glacial Fortress
+SB: 2 [M13:22] Oblivion Ring
+SB: 2 [M15:71] Negate
+SB: 1 [M12:40] Timely Reinforcements
+SB: 1 [NPH:38] Mental Misstep
+SB: 1 [DKA:7] Faith's Shield
+SB: 1 [M14:215] Ratchet Bomb
+SB: 2 [MBS:5] Divine Offering
+SB: 1 [ISD:14] Feeling of Dread
+SB: 1 [C13:42] Dungeon Geists
+SB: 2 [NPH:86] Gut Shot
+SB: 1 [M12:11] Celestial Purge
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UWR Midrange 2 PT Gatecrash (Montreal) ST 2-17-13.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UWR Midrange 2 PT Gatecrash (Montreal) ST 2-17-13.dck
new file mode 100644
index 0000000000..2ec24b9438
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UWR Midrange 2 PT Gatecrash (Montreal) ST 2-17-13.dck
@@ -0,0 +1,30 @@
+4 [RTR:145] Azorius Charm
+4 [ISD:248] Sulfur Falls
+3 [M13:147] Searing Spear
+1 [UNH:137] Island
+3 [AVR:32] Restoration Angel
+1 [UNH:136] Plains
+4 [RTR:247] Steam Vents
+3 [ISD:78] Snapcaster Mage
+4 [C13:179] Boros Charm
+3 [RTR:200] Sphinx's Revelation
+4 [ISD:238] Clifftop Retreat
+1 [M13:75] Unsummon
+1 [CNS:74] Moment of Heroism
+4 [GTC:245] Sacred Foundry
+4 [GTC:215] Boros Reckoner
+2 [M13:225] Glacial Fortress
+4 [C13:30] Augur of Bolas
+2 [C14:172] Blasphemous Act
+2 [RTR:172] Izzet Charm
+2 [AVR:226] Cavern of Souls
+2 [AVR:149] Pillar of Flame
+2 [RTR:241] Hallowed Fountain
+SB: 1 [RTR:47] Psychic Spiral
+SB: 2 [M15:71] Negate
+SB: 2 [RTR:201] Supreme Verdict
+SB: 4 [ISD:213] Geist of Saint Traft
+SB: 1 [M14:60] Jace, Memory Adept
+SB: 2 [M13:150] Thundermaw Hellkite
+SB: 2 [C14:278] Tormod's Crypt
+SB: 1 [AVR:149] Pillar of Flame
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UWR Midrange 58 PT Gatecrash (Montreal) ST 2-17-13.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UWR Midrange 58 PT Gatecrash (Montreal) ST 2-17-13.dck
new file mode 100644
index 0000000000..97de7c74b2
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UWR Midrange 58 PT Gatecrash (Montreal) ST 2-17-13.dck
@@ -0,0 +1,31 @@
+4 [RTR:145] Azorius Charm
+4 [ISD:248] Sulfur Falls
+3 [M13:147] Searing Spear
+1 [UNH:137] Island
+3 [AVR:32] Restoration Angel
+1 [UNH:136] Plains
+4 [RTR:247] Steam Vents
+3 [ISD:78] Snapcaster Mage
+4 [DKA:52] Thought Scour
+3 [RTR:200] Sphinx's Revelation
+1 [RTR:201] Supreme Verdict
+3 [ISD:238] Clifftop Retreat
+2 [UNH:139] Mountain
+1 [ISD:146] Harvest Pyre
+1 [ISD:83] Think Twice
+1 [M13:65] Rewind
+2 [GTC:245] Sacred Foundry
+4 [GTC:215] Boros Reckoner
+4 [M13:225] Glacial Fortress
+4 [C13:30] Augur of Bolas
+1 [RTR:153] Counterflux
+2 [RTR:101] Mizzium Mortars
+4 [RTR:241] Hallowed Fountain
+SB: 2 [M13:22] Oblivion Ring
+SB: 2 [M15:71] Negate
+SB: 2 [DKA:149] Grafdigger's Cage
+SB: 2 [M14:55] Essence Scatter
+SB: 2 [RTR:36] Dispel
+SB: 1 [M13:29] Rhox Faithmender
+SB: 3 [M14:60] Jace, Memory Adept
+SB: 1 [M14:29] Planar Cleansing
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UWb Delver 34 PT Dark Ascension (Honolulu) ST 2-12-12.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UWb Delver 34 PT Dark Ascension (Honolulu) ST 2-12-12.dck
new file mode 100644
index 0000000000..a2e7ff0492
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UWb Delver 34 PT Dark Ascension (Honolulu) ST 2-12-12.dck
@@ -0,0 +1,33 @@
+2 [ISD:244] Moorland Haunt
+1 [UNH:138] Swamp
+5 [UNH:137] Island
+4 [ISD:78] Snapcaster Mage
+1 [UNH:136] Plains
+4 [ISD:51] Delver of Secrets
+2 [M12:63] Mana Leak
+4 [M12:73] Ponder
+3 [M12:72] Phantasmal Image
+1 [NPH:86] Gut Shot
+4 [DKA:12] Lingering Souls
+1 [BNG:25] Revoke Existence
+4 [NPH:35] Gitaxian Probe
+4 [NPH:48] Vapor Snag
+4 [SOM:229] Seachrome Coast
+3 [M13:225] Glacial Fortress
+4 [SOM:226] Darkslick Shores
+1 [MBS:5] Divine Offering
+4 [DKA:136] Drogskol Captain
+2 [C13:42] Dungeon Geists
+2 [C14:295] Evolving Wilds
+SB: 1 [M12:13] Demystify
+SB: 1 [BNG:25] Revoke Existence
+SB: 1 [M15:71] Negate
+SB: 1 [M15:51] Dissipate
+SB: 1 [NPH:57] Dismember
+SB: 1 [M12:63] Mana Leak
+SB: 1 [MBS:5] Divine Offering
+SB: 1 [M12:72] Phantasmal Image
+SB: 2 [C13:42] Dungeon Geists
+SB: 2 [NPH:86] Gut Shot
+SB: 2 [NPH:74] Surgical Extraction
+SB: 1 [M12:11] Celestial Purge
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UWb Delver 58 PT Dark Ascension (Honolulu) ST 2-12-12.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UWb Delver 58 PT Dark Ascension (Honolulu) ST 2-12-12.dck
new file mode 100644
index 0000000000..e9cac761e3
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UWb Delver 58 PT Dark Ascension (Honolulu) ST 2-12-12.dck
@@ -0,0 +1,33 @@
+2 [ISD:244] Moorland Haunt
+1 [UNH:138] Swamp
+5 [UNH:137] Island
+4 [ISD:78] Snapcaster Mage
+1 [UNH:136] Plains
+4 [ISD:51] Delver of Secrets
+2 [M12:63] Mana Leak
+4 [M12:73] Ponder
+3 [M12:72] Phantasmal Image
+4 [DKA:12] Lingering Souls
+1 [BNG:25] Revoke Existence
+4 [NPH:35] Gitaxian Probe
+1 [NPH:116] Mutagenic Growth
+4 [NPH:48] Vapor Snag
+4 [SOM:229] Seachrome Coast
+3 [M13:225] Glacial Fortress
+4 [SOM:226] Darkslick Shores
+1 [MBS:5] Divine Offering
+4 [DKA:136] Drogskol Captain
+2 [C13:42] Dungeon Geists
+2 [C14:295] Evolving Wilds
+SB: 1 [BNG:25] Revoke Existence
+SB: 1 [M15:71] Negate
+SB: 1 [M12:40] Timely Reinforcements
+SB: 1 [M15:51] Dissipate
+SB: 1 [NPH:57] Dismember
+SB: 2 [M14:215] Ratchet Bomb
+SB: 2 [M12:63] Mana Leak
+SB: 1 [MBS:5] Divine Offering
+SB: 1 [C13:42] Dungeon Geists
+SB: 2 [NPH:86] Gut Shot
+SB: 1 [NPH:74] Surgical Extraction
+SB: 1 [M12:11] Celestial Purge
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UWr Control 58 World Championship 2006 (Paris) ST 12-3-06.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UWr Control 58 World Championship 2006 (Paris) ST 12-3-06.dck
new file mode 100644
index 0000000000..d2546d923b
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/UWr Control 58 World Championship 2006 (Paris) ST 12-3-06.dck
@@ -0,0 +1,30 @@
+4 [CMD:43] Court Hussar
+2 [C13:279] Boros Garrison
+2 [10E:347] Adarkar Wastes
+1 [C13:331] Urza's Factory
+3 [CMD:243] Boros Signet
+3 [UNH:137] Island
+1 [UNH:136] Plains
+2 [RTR:247] Steam Vents
+1 [APC:108] Lightning Angel
+4 [RAV:213] Lightning Helix
+1 [C14:86] Sacred Mesa
+4 [DIS:60] Demonfire
+1 [TSB:94] Lightning Angel
+4 [C14:102] Compulsive Research
+3 [GTC:245] Sacred Foundry
+3 [DIS:159] Azorius Signet
+4 [RAV:63] Remand
+4 [C13:27] Wrath of God
+2 [C13:296] Izzet Boilerworks
+2 [C14:173] Bogardan Hellkite
+2 [DDN:56] Lightning Angel
+2 [M15:246] Shivan Reef
+2 [TSP:272] Flagstones of Trokair
+3 [RTR:241] Hallowed Fountain
+SB: 4 [9ED:59] Annex
+SB: 3 [C14:69] Condemn
+SB: 1 [C14:86] Sacred Mesa
+SB: 2 [9ED:23] Ivory Mask
+SB: 2 [GPT:143] Giant Solifuge
+SB: 3 [RAV:16] Faith's Fetters
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/WB Tokens 58 PT Kyoto ST 3-1-09.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/WB Tokens 58 PT Kyoto ST 3-1-09.dck
new file mode 100644
index 0000000000..66a4fded05
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/WB Tokens 58 PT Kyoto ST 3-1-09.dck
@@ -0,0 +1,25 @@
+4 [LRW:281] Windbrisk Heights
+4 [M15:241] Caves of Koilos
+2 [C13:273] Arcane Sanctum
+2 [UNH:138] Swamp
+3 [UNH:136] Plains
+2 [M11:1] Ajani Goldmane
+4 [MOR:58] Bitterblossom
+4 [EVE:176] Fetid Heath
+1 [ALA:9] Elspeth, Knight-Errant
+4 [CNS:210] Reflecting Pool
+4 [C14:90] Spectral Procession
+4 [LRW:28] Knight of Meadowgrain
+4 [THS:107] Thoughtseize
+4 [10E:17] Glorious Anthem
+4 [CMD:25] Path to Exile
+4 [LRW:10] Cloudgoat Ranger
+4 [ALA:202] Tidehollow Sculler
+2 [M14:228] Mutavault
+SB: 3 [LRW:48] Wispmare
+SB: 3 [C13:27] Wrath of God
+SB: 4 [LRW:7] Burrenton Forge-Tender
+SB: 1 [C14:78] Martial Coup
+SB: 2 [CON:53] Scepter of Fugue
+SB: 1 [M11:1] Ajani Goldmane
+SB: 1 [ALA:9] Elspeth, Knight-Errant
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/WR Kithkins 58 PT Kyoto ST 3-1-09.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/WR Kithkins 58 PT Kyoto ST 3-1-09.dck
new file mode 100644
index 0000000000..eb7043664b
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/WR Kithkins 58 PT Kyoto ST 3-1-09.dck
@@ -0,0 +1,21 @@
+4 [M15:240] Battlefield Forge
+4 [LRW:281] Windbrisk Heights
+9 [UNH:136] Plains
+2 [MOR:150] Rustic Clachan
+4 [EVE:178] Rugged Prairie
+4 [ALA:154] Ajani Vengeant
+4 [C14:90] Spectral Procession
+4 [LRW:18] Goldmeadow Stalwart
+4 [LRW:28] Knight of Meadowgrain
+4 [LRW:49] Wizened Cenn
+3 [10E:17] Glorious Anthem
+4 [EVE:139] Figure of Destiny
+4 [CMD:25] Path to Exile
+4 [LRW:10] Cloudgoat Ranger
+2 [M14:228] Mutavault
+SB: 2 [ALA:21] Ranger of Eos
+SB: 4 [MOR:22] Reveillark
+SB: 4 [LRW:7] Burrenton Forge-Tender
+SB: 1 [CON:58] Banefire
+SB: 1 [DDN:31] Banefire
+SB: 3 [ALA:9] Elspeth, Knight-Errant
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/WR Vengeant 34 PT Kyoto ST 3-1-09.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/WR Vengeant 34 PT Kyoto ST 3-1-09.dck
new file mode 100644
index 0000000000..c28577e7f5
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/WR Vengeant 34 PT Kyoto ST 3-1-09.dck
@@ -0,0 +1,26 @@
+4 [M15:240] Battlefield Forge
+4 [LRW:281] Windbrisk Heights
+3 [10E:219] Mogg Fanatic
+3 [ALA:21] Ranger of Eos
+3 [UNH:136] Plains
+3 [MOR:22] Reveillark
+4 [ALA:16] Knight of the White Orchid
+3 [M10:157] Siege-Gang Commander
+4 [C14:250] Mind Stone
+3 [UNH:139] Mountain
+4 [EVE:178] Rugged Prairie
+4 [ALA:154] Ajani Vengeant
+4 [CNS:210] Reflecting Pool
+4 [C14:90] Spectral Procession
+2 [C13:27] Wrath of God
+4 [EVE:139] Figure of Destiny
+3 [CMD:25] Path to Exile
+1 [LRW:167] Flamekin Harbinger
+SB: 4 [EVE:95] Stillmoon Cavalier
+SB: 2 [LRW:7] Burrenton Forge-Tender
+SB: 2 [C13:27] Wrath of God
+SB: 1 [CON:58] Banefire
+SB: 1 [CMD:25] Path to Exile
+SB: 1 [MM2:104] Banefire
+SB: 2 [SHM:66] Faerie Macabre
+SB: 2 [ALA:9] Elspeth, Knight-Errant
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/WR Vengeant 58 PT Kyoto ST 3-1-09.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/WR Vengeant 58 PT Kyoto ST 3-1-09.dck
new file mode 100644
index 0000000000..475382caaa
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/WR Vengeant 58 PT Kyoto ST 3-1-09.dck
@@ -0,0 +1,23 @@
+4 [M15:240] Battlefield Forge
+4 [LRW:281] Windbrisk Heights
+4 [10E:219] Mogg Fanatic
+4 [ALA:21] Ranger of Eos
+5 [UNH:136] Plains
+1 [LRW:7] Burrenton Forge-Tender
+3 [MOR:22] Reveillark
+4 [ALA:16] Knight of the White Orchid
+3 [M10:157] Siege-Gang Commander
+4 [UNH:139] Mountain
+4 [EVE:178] Rugged Prairie
+4 [ALA:154] Ajani Vengeant
+3 [CNS:210] Reflecting Pool
+4 [C14:90] Spectral Procession
+4 [EVE:139] Figure of Destiny
+3 [CMD:25] Path to Exile
+2 [DDN:31] Banefire
+SB: 4 [EVE:95] Stillmoon Cavalier
+SB: 3 [LRW:7] Burrenton Forge-Tender
+SB: 1 [MOR:22] Reveillark
+SB: 1 [CON:58] Banefire
+SB: 2 [M10:141] Ignite Disorder
+SB: 4 [CON:9] Lapse of Certainty
diff --git a/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/White Weenie 34 PT San Diego ST 2-21-10.dck b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/White Weenie 34 PT San Diego ST 2-21-10.dck
new file mode 100644
index 0000000000..92bce03f94
--- /dev/null
+++ b/Mage.Client/release/sample-decks/Top8 PT and Worlds decks (Standard)/White Weenie 34 PT San Diego ST 2-21-10.dck
@@ -0,0 +1,23 @@
+4 [M11:39] White Knight
+12 [UNH:136] Plains
+4 [ZEN:211] Arid Mesa
+1 [ALA:219] Sigil of Distinction
+4 [WWK:135] Dread Statuary
+4 [ALA:9] Elspeth, Knight-Errant
+2 [M13:22] Oblivion Ring
+1 [C14:293] Emeria, the Sky Ruin
+4 [ZEN:219] Marsh Flats
+4 [ZEN:23] Kor Skyfisher
+4 [ZEN:36] Steppe Lynx
+4 [CMD:25] Path to Exile
+4 [WWK:11] Kor Firewalker
+4 [WWK:20] Stoneforge Mystic
+1 [ZEN:209] Trusty Machete
+1 [WWK:122] Basilisk Collar
+2 [M12:12] Day of Judgment
+SB: 2 [ZEN:25] Luminarch Ascension
+SB: 2 [M13:22] Oblivion Ring
+SB: 4 [ZEN:10] Devout Lightcaster
+SB: 3 [C14:76] Kor Sanctifiers
+SB: 2 [ALA:218] Relic of Progenitus
+SB: 2 [M12:12] Day of Judgment
diff --git a/Mage.Client/sounds/OnAddArtifact.wav b/Mage.Client/sounds/OnAddArtifact.wav
index e9488ecad8..2d6295ca75 100644
Binary files a/Mage.Client/sounds/OnAddArtifact.wav and b/Mage.Client/sounds/OnAddArtifact.wav differ
diff --git a/Mage.Client/sounds/OnAddPermanent.wav b/Mage.Client/sounds/OnAddPermanent.wav
index ac338bf4c8..7ca048e514 100644
Binary files a/Mage.Client/sounds/OnAddPermanent.wav and b/Mage.Client/sounds/OnAddPermanent.wav differ
diff --git a/Mage.Client/sounds/OnAttack.wav b/Mage.Client/sounds/OnAttack.wav
index 48f3b7ac28..815db42ae6 100644
Binary files a/Mage.Client/sounds/OnAttack.wav and b/Mage.Client/sounds/OnAttack.wav differ
diff --git a/Mage.Client/sounds/OnBlock.wav b/Mage.Client/sounds/OnBlock.wav
index 984ab5f914..28bf3ddde5 100644
Binary files a/Mage.Client/sounds/OnBlock.wav and b/Mage.Client/sounds/OnBlock.wav differ
diff --git a/Mage.Client/sounds/OnButtonCancel.wav b/Mage.Client/sounds/OnButtonCancel.wav
index cb0b80dbf8..9b0c04ca6f 100644
Binary files a/Mage.Client/sounds/OnButtonCancel.wav and b/Mage.Client/sounds/OnButtonCancel.wav differ
diff --git a/Mage.Client/sounds/OnButtonOk.wav b/Mage.Client/sounds/OnButtonOk.wav
index 7c33054ce4..f0e09ff85b 100644
Binary files a/Mage.Client/sounds/OnButtonOk.wav and b/Mage.Client/sounds/OnButtonOk.wav differ
diff --git a/Mage.Client/sounds/OnCountdown1.wav b/Mage.Client/sounds/OnCountdown1.wav
index 5ab29bf462..08fbe61614 100644
Binary files a/Mage.Client/sounds/OnCountdown1.wav and b/Mage.Client/sounds/OnCountdown1.wav differ
diff --git a/Mage.Client/sounds/OnDraftSelect.wav b/Mage.Client/sounds/OnDraftSelect.wav
index cd8a5c09db..a7aa354a74 100644
Binary files a/Mage.Client/sounds/OnDraftSelect.wav and b/Mage.Client/sounds/OnDraftSelect.wav differ
diff --git a/Mage.Client/sounds/OnDraw.wav b/Mage.Client/sounds/OnDraw.wav
index 144d2009d1..a91c5ec6f4 100644
Binary files a/Mage.Client/sounds/OnDraw.wav and b/Mage.Client/sounds/OnDraw.wav differ
diff --git a/Mage.Client/sounds/OnEndTurn.wav b/Mage.Client/sounds/OnEndTurn.wav
index 56a6c525e2..261e7482e3 100644
Binary files a/Mage.Client/sounds/OnEndTurn.wav and b/Mage.Client/sounds/OnEndTurn.wav differ
diff --git a/Mage.Client/sounds/OnGameStart.wav b/Mage.Client/sounds/OnGameStart.wav
index 791a85b591..08d76fefdb 100644
Binary files a/Mage.Client/sounds/OnGameStart.wav and b/Mage.Client/sounds/OnGameStart.wav differ
diff --git a/Mage.Client/sounds/OnHover.wav b/Mage.Client/sounds/OnHover.wav
index fae205369b..459fd07055 100644
Binary files a/Mage.Client/sounds/OnHover.wav and b/Mage.Client/sounds/OnHover.wav differ
diff --git a/Mage.Client/sounds/OnNextPage.wav b/Mage.Client/sounds/OnNextPage.wav
index e109a11679..c8aae197d5 100644
Binary files a/Mage.Client/sounds/OnNextPage.wav and b/Mage.Client/sounds/OnNextPage.wav differ
diff --git a/Mage.Client/sounds/OnNextPhase.wav b/Mage.Client/sounds/OnNextPhase.wav
index 7d321fc19f..09cfb019ca 100644
Binary files a/Mage.Client/sounds/OnNextPhase.wav and b/Mage.Client/sounds/OnNextPhase.wav differ
diff --git a/Mage.Client/sounds/OnPlayerJoined.wav b/Mage.Client/sounds/OnPlayerJoined.wav
index 0182728328..98a94af751 100644
Binary files a/Mage.Client/sounds/OnPlayerJoined.wav and b/Mage.Client/sounds/OnPlayerJoined.wav differ
diff --git a/Mage.Client/sounds/OnPlayerLeft.wav b/Mage.Client/sounds/OnPlayerLeft.wav
index c0590e8489..13c6a54aa3 100644
Binary files a/Mage.Client/sounds/OnPlayerLeft.wav and b/Mage.Client/sounds/OnPlayerLeft.wav differ
diff --git a/Mage.Client/sounds/OnPlayerLost.wav b/Mage.Client/sounds/OnPlayerLost.wav
index 4fd3e50fb1..4960cf90d4 100644
Binary files a/Mage.Client/sounds/OnPlayerLost.wav and b/Mage.Client/sounds/OnPlayerLost.wav differ
diff --git a/Mage.Client/sounds/OnPlayerQuit.wav b/Mage.Client/sounds/OnPlayerQuit.wav
index d9b2826d1e..4d97f17e4f 100644
Binary files a/Mage.Client/sounds/OnPlayerQuit.wav and b/Mage.Client/sounds/OnPlayerQuit.wav differ
diff --git a/Mage.Client/sounds/OnPlayerQuitTournament.wav b/Mage.Client/sounds/OnPlayerQuitTournament.wav
index c92220b59c..8857e7980f 100644
Binary files a/Mage.Client/sounds/OnPlayerQuitTournament.wav and b/Mage.Client/sounds/OnPlayerQuitTournament.wav differ
diff --git a/Mage.Client/sounds/OnPlayerSubmittedDeck.wav b/Mage.Client/sounds/OnPlayerSubmittedDeck.wav
index cfa7603c0f..1e89502f8f 100644
Binary files a/Mage.Client/sounds/OnPlayerSubmittedDeck.wav and b/Mage.Client/sounds/OnPlayerSubmittedDeck.wav differ
diff --git a/Mage.Client/sounds/OnPlayerWhispered.wav b/Mage.Client/sounds/OnPlayerWhispered.wav
index ad26c3a9d4..7e58c8a5a1 100644
Binary files a/Mage.Client/sounds/OnPlayerWhispered.wav and b/Mage.Client/sounds/OnPlayerWhispered.wav differ
diff --git a/Mage.Client/sounds/OnPlayerWon.wav b/Mage.Client/sounds/OnPlayerWon.wav
index 3c9eda4625..91f00881dd 100644
Binary files a/Mage.Client/sounds/OnPlayerWon.wav and b/Mage.Client/sounds/OnPlayerWon.wav differ
diff --git a/Mage.Client/sounds/OnPrevPage.wav b/Mage.Client/sounds/OnPrevPage.wav
index 9cafab28a6..85b7179063 100644
Binary files a/Mage.Client/sounds/OnPrevPage.wav and b/Mage.Client/sounds/OnPrevPage.wav differ
diff --git a/Mage.Client/sounds/OnSkipButton.wav b/Mage.Client/sounds/OnSkipButton.wav
index 7d321fc19f..db8a44c52f 100644
Binary files a/Mage.Client/sounds/OnSkipButton.wav and b/Mage.Client/sounds/OnSkipButton.wav differ
diff --git a/Mage.Client/sounds/OnSkipButtonCancel.wav b/Mage.Client/sounds/OnSkipButtonCancel.wav
index cb0b80dbf8..d58aa0144a 100644
Binary files a/Mage.Client/sounds/OnSkipButtonCancel.wav and b/Mage.Client/sounds/OnSkipButtonCancel.wav differ
diff --git a/Mage.Client/sounds/OnStackNew.wav b/Mage.Client/sounds/OnStackNew.wav
index 4fd917b8e8..4610b5fe33 100644
Binary files a/Mage.Client/sounds/OnStackNew.wav and b/Mage.Client/sounds/OnStackNew.wav differ
diff --git a/Mage.Client/sounds/OnSummon-.wav b/Mage.Client/sounds/OnSummon-.wav
index 1facee015c..63e57d3df3 100644
Binary files a/Mage.Client/sounds/OnSummon-.wav and b/Mage.Client/sounds/OnSummon-.wav differ
diff --git a/Mage.Client/sounds/OnSummon.wav b/Mage.Client/sounds/OnSummon.wav
index f41a49e9a6..bf5bed88cc 100644
Binary files a/Mage.Client/sounds/OnSummon.wav and b/Mage.Client/sounds/OnSummon.wav differ
diff --git a/Mage.Client/sounds/OnTapPermanent.wav b/Mage.Client/sounds/OnTapPermanent.wav
index 7c33054ce4..8760020598 100644
Binary files a/Mage.Client/sounds/OnTapPermanent.wav and b/Mage.Client/sounds/OnTapPermanent.wav differ
diff --git a/Mage.Client/sounds/OnTournamentStart.wav b/Mage.Client/sounds/OnTournamentStart.wav
index a6aa47f24f..94df53fcd9 100644
Binary files a/Mage.Client/sounds/OnTournamentStart.wav and b/Mage.Client/sounds/OnTournamentStart.wav differ
diff --git a/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.form b/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.form
index e35b22b89b..afaf19627e 100644
--- a/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.form
+++ b/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.form
@@ -82,7 +82,7 @@
-
+
@@ -159,7 +159,7 @@
-
+
@@ -173,7 +173,7 @@
-
+
@@ -333,16 +333,23 @@
-
+
-
+
+
+
+
-
+
+
+
+
+
@@ -357,6 +364,16 @@
+
+
+
+
+
+
+
+
+
+
@@ -512,7 +529,7 @@
-
+
@@ -1155,7 +1172,7 @@
-
+
@@ -1606,7 +1623,7 @@
-
+
@@ -1819,7 +1836,7 @@
-
+
diff --git a/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.java b/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.java
index bd764f48ce..ec880ce8f4 100644
--- a/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.java
+++ b/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.java
@@ -91,6 +91,7 @@ public class PreferencesDialog extends javax.swing.JDialog {
public static final String KEY_GAME_ASK_MOVE_TO_GRAVE_ORDER = "gameAskMoveToGraveORder";
public static final String KEY_GAME_LOG_AUTO_SAVE = "gameLogAutoSave";
+ public static final String KEY_DRAFT_LOG_AUTO_SAVE = "draftLogAutoSave";
public static final String KEY_CARD_IMAGES_USE_DEFAULT = "cardImagesUseDefault";
public static final String KEY_CARD_IMAGES_PATH = "cardImagesPath";
@@ -362,6 +363,7 @@ public class PreferencesDialog extends javax.swing.JDialog {
cbAskMoveToGraveOrder = new javax.swing.JCheckBox();
main_gamelog = new javax.swing.JPanel();
cbGameLogAutoSave = new javax.swing.JCheckBox();
+ cbDraftLogAutoSave = new javax.swing.JCheckBox();
tabPhases = new javax.swing.JPanel();
jLabelHeadLine = new javax.swing.JLabel();
jLabelYourTurn = new javax.swing.JLabel();
@@ -643,18 +645,32 @@ public class PreferencesDialog extends javax.swing.JDialog {
}
});
+ cbDraftLogAutoSave.setSelected(true);
+ cbDraftLogAutoSave.setText("Auto save draft logs (to \"../Mage.Client/gamelogs/\" directory)");
+ cbDraftLogAutoSave.setToolTipText("The logs of all your games will be saved to the mentioned folder if this option is switched on.");
+ cbDraftLogAutoSave.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ cbDraftLogAutoSaveActionPerformed(evt);
+ }
+ });
+
javax.swing.GroupLayout main_gamelogLayout = new javax.swing.GroupLayout(main_gamelog);
main_gamelog.setLayout(main_gamelogLayout);
main_gamelogLayout.setHorizontalGroup(
main_gamelogLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(main_gamelogLayout.createSequentialGroup()
.addContainerGap()
- .addComponent(cbGameLogAutoSave, javax.swing.GroupLayout.PREFERRED_SIZE, 528, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGroup(main_gamelogLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(cbGameLogAutoSave, javax.swing.GroupLayout.PREFERRED_SIZE, 528, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(cbDraftLogAutoSave, javax.swing.GroupLayout.PREFERRED_SIZE, 528, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
main_gamelogLayout.setVerticalGroup(
main_gamelogLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(cbGameLogAutoSave, javax.swing.GroupLayout.Alignment.TRAILING)
+ .addGroup(main_gamelogLayout.createSequentialGroup()
+ .addComponent(cbGameLogAutoSave)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(cbDraftLogAutoSave))
);
javax.swing.GroupLayout tabMainLayout = new javax.swing.GroupLayout(tabMain);
@@ -675,7 +691,7 @@ public class PreferencesDialog extends javax.swing.JDialog {
.addContainerGap()
.addComponent(main_card, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(main_game, javax.swing.GroupLayout.PREFERRED_SIZE, 189, Short.MAX_VALUE)
+ .addComponent(main_game, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(main_gamelog, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
@@ -861,7 +877,7 @@ public class PreferencesDialog extends javax.swing.JDialog {
.addComponent(checkBoxEndTurnOthers))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(phases_stopSettings, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addContainerGap(13, Short.MAX_VALUE))
+ .addContainerGap(45, Short.MAX_VALUE))
);
tabsPanel.addTab("Phases", tabPhases);
@@ -1435,7 +1451,7 @@ public class PreferencesDialog extends javax.swing.JDialog {
);
tabAvatarsLayout.setVerticalGroup(
tabAvatarsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(avatarPane, javax.swing.GroupLayout.DEFAULT_SIZE, 359, Short.MAX_VALUE)
+ .addComponent(avatarPane, javax.swing.GroupLayout.DEFAULT_SIZE, 432, Short.MAX_VALUE)
);
tabsPanel.addTab("Avatars", tabAvatars);
@@ -1585,7 +1601,7 @@ public class PreferencesDialog extends javax.swing.JDialog {
.addGroup(connection_serversLayout.createSequentialGroup()
.addGroup(connection_serversLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(lblURLServerList, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(txtURLServerList, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addComponent(txtURLServerList, javax.swing.GroupLayout.DEFAULT_SIZE, 28, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel17))
);
@@ -1617,7 +1633,7 @@ public class PreferencesDialog extends javax.swing.JDialog {
.addComponent(cbProxyType, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addComponent(pnlProxySettings, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addContainerGap(54, Short.MAX_VALUE))
+ .addContainerGap(90, Short.MAX_VALUE))
);
pnlProxySettings.getAccessibleContext().setAccessibleDescription("");
@@ -1681,6 +1697,7 @@ public class PreferencesDialog extends javax.swing.JDialog {
save(prefs, dialog.cbConfirmEmptyManaPool, KEY_GAME_CONFIRM_EMPTY_MANA_POOL, "true", "false", UPDATE_CACHE_POLICY);
save(prefs, dialog.cbAskMoveToGraveOrder, KEY_GAME_ASK_MOVE_TO_GRAVE_ORDER, "true", "false", UPDATE_CACHE_POLICY);
save(prefs, dialog.cbGameLogAutoSave, KEY_GAME_LOG_AUTO_SAVE, "true", "false", UPDATE_CACHE_POLICY);
+ save(prefs, dialog.cbDraftLogAutoSave, KEY_DRAFT_LOG_AUTO_SAVE, "true", "false", UPDATE_CACHE_POLICY);
// Phases
save(prefs, dialog.checkBoxUpkeepYou, UPKEEP_YOU);
@@ -2001,6 +2018,10 @@ public class PreferencesDialog extends javax.swing.JDialog {
// TODO add your handling code here:
}//GEN-LAST:event_cbAskMoveToGraveOrderActionPerformed
+ private void cbDraftLogAutoSaveActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbDraftLogAutoSaveActionPerformed
+ // TODO add your handling code here:
+ }//GEN-LAST:event_cbDraftLogAutoSaveActionPerformed
+
private void showProxySettings() {
if (cbProxyType.getSelectedItem() == Connection.ProxyType.SOCKS) {
this.pnlProxy.setVisible(true);
@@ -2079,6 +2100,7 @@ public class PreferencesDialog extends javax.swing.JDialog {
load(prefs, dialog.cbAskMoveToGraveOrder, KEY_GAME_ASK_MOVE_TO_GRAVE_ORDER, "true");
load(prefs, dialog.cbGameLogAutoSave, KEY_GAME_LOG_AUTO_SAVE, "true");
+ load(prefs, dialog.cbDraftLogAutoSave, KEY_DRAFT_LOG_AUTO_SAVE, "true");
load(prefs, dialog.checkBoxUpkeepYou, UPKEEP_YOU, "on", "on");
load(prefs, dialog.checkBoxDrawYou, DRAW_YOU, "on", "on");
@@ -2449,6 +2471,7 @@ public class PreferencesDialog extends javax.swing.JDialog {
private javax.swing.JCheckBox cbAskMoveToGraveOrder;
private javax.swing.JCheckBox cbCheckForNewImages;
private javax.swing.JCheckBox cbConfirmEmptyManaPool;
+ private javax.swing.JCheckBox cbDraftLogAutoSave;
private javax.swing.JCheckBox cbEnableBattlefieldBGM;
private javax.swing.JCheckBox cbEnableDraftSounds;
private javax.swing.JCheckBox cbEnableGameSounds;
diff --git a/Mage.Client/src/main/java/mage/client/draft/DraftPanel.java b/Mage.Client/src/main/java/mage/client/draft/DraftPanel.java
index da4ea2b425..99645ecaed 100644
--- a/Mage.Client/src/main/java/mage/client/draft/DraftPanel.java
+++ b/Mage.Client/src/main/java/mage/client/draft/DraftPanel.java
@@ -41,10 +41,21 @@ import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.StandardOpenOption;
+import java.text.SimpleDateFormat;
+import java.util.Collection;
+import java.util.Date;
import java.util.HashSet;
+import java.util.LinkedList;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
+import java.util.logging.Level;
+import java.util.logging.Logger;
import javax.swing.AbstractAction;
import javax.swing.ImageIcon;
import javax.swing.JComponent;
@@ -53,9 +64,12 @@ import javax.swing.JOptionPane;
import javax.swing.JPopupMenu;
import javax.swing.KeyStroke;
import javax.swing.Timer;
+import mage.cards.repository.CardInfo;
+import mage.cards.repository.CardRepository;
import mage.client.MageFrame;
import mage.client.components.tray.MageTray;
import mage.client.deckeditor.SortSettingDraft;
+import mage.client.dialog.PreferencesDialog;
import mage.client.plugins.impl.Plugins;
import mage.client.util.CardsViewUtil;
import mage.client.util.Event;
@@ -94,6 +108,19 @@ public class DraftPanel extends javax.swing.JPanel {
// id of card with popup menu
protected UUID cardIdPopupMenu;
+ // Filename for the draft log (only updated if writing the log).
+ private String logFilename;
+
+ // Number of the current booster (for draft log writing).
+ private int packNo;
+
+ // Number of the current card pick (for draft log writing).
+ private int pickNo;
+
+ // Cached booster data to be written into the log (see logLastPick).
+ private String currentBoosterHeader;
+ private String[] currentBooster;
+
private static final CardsView emptyView = new CardsView();
/** Creates new form DraftPanel */
@@ -149,6 +176,20 @@ public class DraftPanel extends javax.swing.JPanel {
if (!session.joinDraft(draftId)) {
hideDraft();
}
+
+ if (isLogging()) {
+ // If we are logging the draft create a file that will contain
+ // the log.
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss");
+ logFilename = "Draft_" + sdf.format(new Date()) + "_" + draftId + ".txt";
+ try {
+ Files.write(pathToDraftLog(), "".getBytes(), StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING);
+ } catch (IOException ex) {
+ Logger.getLogger(DraftPanel.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ } else {
+ logFilename = null;
+ }
}
public void updateDraft(DraftView draftView) {
@@ -167,6 +208,9 @@ public class DraftPanel extends javax.swing.JPanel {
this.chkPack3.setSelected(draftView.getBoosterNum() > 2);
this.txtCardNo.setText(Integer.toString(draftView.getCardNum()));
+ packNo = draftView.getBoosterNum();
+ pickNo = draftView.getCardNum();
+
int right = draftView.getPlayers().size() / 2;
int left = draftView.getPlayers().size() - right;
int height = left * 18;
@@ -247,6 +291,7 @@ public class DraftPanel extends javax.swing.JPanel {
}
public void loadBooster(DraftPickView draftPickView) {
+ logLastPick(draftPickView);
// upper area that shows the picks
loadCardsToPickedCardsArea(draftPickView.getPicks());
@@ -413,6 +458,94 @@ public class DraftPanel extends javax.swing.JPanel {
draftPicks.loadCards(CardsViewUtil.convertSimple(pickedCardsShown), bigCard, null);
}
+ // Log the last card picked into the draft log together with booster
+ // contents.
+ // We don't get any event when the card is selected due to timeout
+ // that's why instead of proactively logging our pick we instead
+ // log *last* pick from the list of picks.
+ // To make this possible we cache the list of cards from the
+ // previous booster and it's sequence number (pack number / pick number)
+ // in fields currentBooster and currentBoosterHeader.
+ private void logLastPick(DraftPickView pickView) {
+ if (!isLogging()) {
+ return;
+ }
+ if (currentBooster != null) {
+ String lastPick = getCardName(getLastPick(pickView.getPicks().values()));
+ if (lastPick != null) {
+ logPick(lastPick);
+ }
+ currentBooster = null;
+ }
+ setCurrentBoosterForLog(pickView.getBooster());
+ if (currentBooster.length == 1) {
+ logPick(currentBooster[0]);
+ }
+ }
+
+ private static boolean isLogging() {
+ String autoSave = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_DRAFT_LOG_AUTO_SAVE, "true");
+ return autoSave.equals("true");
+ }
+
+ private void setCurrentBoosterForLog(SimpleCardsView booster) {
+ LinkedList cards = new LinkedList<>();
+ for (SimpleCardView simple: booster.values()) {
+ String cardName = getCardName(simple);
+ if (cardName != null) {
+ cards.add(cardName);
+ }
+ }
+
+ currentBoosterHeader = "Pack " + packNo + " pick " + pickNo + ":\n";
+ currentBooster = cards.toArray(new String[cards.size()]);
+ }
+
+ private void logPick(String pick) {
+ StringBuilder b = new StringBuilder();
+ b.append(currentBoosterHeader);
+ for (String name : currentBooster) {
+ b.append(pick.equals(name) ? "--> " : " ");
+ b.append(name);
+ b.append('\n');
+ }
+ b.append('\n');
+ appendToDraftLog(b.toString());
+ }
+
+ private Path pathToDraftLog() {
+ File saveDir = new File("gamelogs");
+ if(!saveDir.exists()) {
+ saveDir.mkdirs();
+ }
+ return new File(saveDir, logFilename).toPath();
+ }
+
+ private void appendToDraftLog(String data) {
+ try {
+ Files.write(pathToDraftLog(), data.getBytes(), StandardOpenOption.APPEND);
+ } catch (IOException ex) {
+ Logger.getLogger(DraftPanel.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ }
+
+ private static SimpleCardView getLastPick(Collection picks) {
+ SimpleCardView last = null;
+ for (SimpleCardView pick : picks) {
+ last = pick;
+ }
+ return last;
+ }
+
+ private static String getCardName(SimpleCardView card) {
+ if (card == null) {
+ return null;
+ }
+ CardInfo cardInfo = CardRepository.instance.findCard(card.getExpansionSetCode(), card.getCardNumber());
+ return cardInfo != null ? cardInfo.getName() : null;
+ }
+
+
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
diff --git a/Mage.Common/pom.xml b/Mage.Common/pom.xml
index 29c08a1e81..09ab27aea2 100644
--- a/Mage.Common/pom.xml
+++ b/Mage.Common/pom.xml
@@ -7,7 +7,7 @@
org.magemage-root
- 1.4.2
+ 1.4.3mage-common
diff --git a/Mage.Common/src/mage/utils/MageVersion.java b/Mage.Common/src/mage/utils/MageVersion.java
index 59ec03f9cd..805d71e91b 100644
--- a/Mage.Common/src/mage/utils/MageVersion.java
+++ b/Mage.Common/src/mage/utils/MageVersion.java
@@ -40,8 +40,8 @@ public class MageVersion implements Serializable, Comparable {
*/
public final static int MAGE_VERSION_MAJOR = 1;
public final static int MAGE_VERSION_MINOR = 4;
- public final static int MAGE_VERSION_PATCH = 2;
- public final static String MAGE_VERSION_MINOR_PATCH = "v5";
+ public final static int MAGE_VERSION_PATCH = 3;
+ public final static String MAGE_VERSION_MINOR_PATCH = "v0";
public final static String MAGE_VERSION_INFO = "";
private final int major;
diff --git a/Mage.Plugins/Mage.Counter.Plugin/pom.xml b/Mage.Plugins/Mage.Counter.Plugin/pom.xml
index e5ae116c80..df8cc7328b 100644
--- a/Mage.Plugins/Mage.Counter.Plugin/pom.xml
+++ b/Mage.Plugins/Mage.Counter.Plugin/pom.xml
@@ -7,7 +7,7 @@
org.magemage-plugins
- 1.4.2
+ 1.4.3mage-counter-plugin
diff --git a/Mage.Plugins/Mage.Theme.Plugin/pom.xml b/Mage.Plugins/Mage.Theme.Plugin/pom.xml
index b85682e19c..eebc730e4a 100644
--- a/Mage.Plugins/Mage.Theme.Plugin/pom.xml
+++ b/Mage.Plugins/Mage.Theme.Plugin/pom.xml
@@ -6,7 +6,7 @@
org.magemage-plugins
- 1.4.2
+ 1.4.3mage-theme-plugin
@@ -29,7 +29,7 @@
${project.groupId}mage-client
- 1.4.2
+ 1.4.3
diff --git a/Mage.Plugins/pom.xml b/Mage.Plugins/pom.xml
index ab4aa2c1d2..4e6b8ad852 100644
--- a/Mage.Plugins/pom.xml
+++ b/Mage.Plugins/pom.xml
@@ -7,7 +7,7 @@
org.magemage-root
- 1.4.2
+ 1.4.3mage-plugins
diff --git a/Mage.Server.Console/pom.xml b/Mage.Server.Console/pom.xml
index 839ee4bfd6..77cb534fd1 100644
--- a/Mage.Server.Console/pom.xml
+++ b/Mage.Server.Console/pom.xml
@@ -6,7 +6,7 @@
org.magemage-root
- 1.4.2
+ 1.4.3org.mage
diff --git a/Mage.Server.Plugins/Mage.Deck.Constructed/pom.xml b/Mage.Server.Plugins/Mage.Deck.Constructed/pom.xml
index b3599cd383..dabc671779 100644
--- a/Mage.Server.Plugins/Mage.Deck.Constructed/pom.xml
+++ b/Mage.Server.Plugins/Mage.Deck.Constructed/pom.xml
@@ -7,7 +7,7 @@
org.magemage-server-plugins
- 1.4.2
+ 1.4.3mage-deck-constructed
diff --git a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/HistoricalStandard.java b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/HistoricalStandard.java
index 38c577f35a..9fef3463b5 100644
--- a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/HistoricalStandard.java
+++ b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/HistoricalStandard.java
@@ -85,7 +85,7 @@ public class HistoricalStandard extends Constructed {
* done in the overridden validate function.
*/
public HistoricalStandard() {
- super("Variant Magic - Historical Standard");
+ super("Constructed - Historical Standard");
// banned cards
banned.add("Balance");
diff --git a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/SuperStandard.java b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/SuperStandard.java
index f1fa0b0fa5..4eb4d5c4e8 100644
--- a/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/SuperStandard.java
+++ b/Mage.Server.Plugins/Mage.Deck.Constructed/src/mage/deck/SuperStandard.java
@@ -61,7 +61,7 @@ public class SuperStandard extends Constructed {
* done in the overridden validate function.
*/
public SuperStandard() {
- super("Variant Magic - Super Standard");
+ super("Constructed - Super Standard");
banned.add("Ancient Den");
banned.add("Disciple of the Vault");
diff --git a/Mage.Server.Plugins/Mage.Deck.Limited/pom.xml b/Mage.Server.Plugins/Mage.Deck.Limited/pom.xml
index fef00e5535..3ab629a71a 100644
--- a/Mage.Server.Plugins/Mage.Deck.Limited/pom.xml
+++ b/Mage.Server.Plugins/Mage.Deck.Limited/pom.xml
@@ -7,7 +7,7 @@
org.magemage-server-plugins
- 1.4.2
+ 1.4.3mage-deck-limited
diff --git a/Mage.Server.Plugins/Mage.Game.CommanderDuel/pom.xml b/Mage.Server.Plugins/Mage.Game.CommanderDuel/pom.xml
index 088bddb5c6..66972c3a27 100644
--- a/Mage.Server.Plugins/Mage.Game.CommanderDuel/pom.xml
+++ b/Mage.Server.Plugins/Mage.Game.CommanderDuel/pom.xml
@@ -7,7 +7,7 @@
org.magemage-server-plugins
- 1.4.2
+ 1.4.3mage-game-commanderduel
diff --git a/Mage.Server.Plugins/Mage.Game.CommanderFreeForAll/pom.xml b/Mage.Server.Plugins/Mage.Game.CommanderFreeForAll/pom.xml
index bd62a87af4..ccfa64fc60 100644
--- a/Mage.Server.Plugins/Mage.Game.CommanderFreeForAll/pom.xml
+++ b/Mage.Server.Plugins/Mage.Game.CommanderFreeForAll/pom.xml
@@ -6,7 +6,7 @@
org.magemage-server-plugins
- 1.4.2
+ 1.4.3mage-game-commanderfreeforall
diff --git a/Mage.Server.Plugins/Mage.Game.FreeForAll/pom.xml b/Mage.Server.Plugins/Mage.Game.FreeForAll/pom.xml
index 40846d6d87..a608c78970 100644
--- a/Mage.Server.Plugins/Mage.Game.FreeForAll/pom.xml
+++ b/Mage.Server.Plugins/Mage.Game.FreeForAll/pom.xml
@@ -7,7 +7,7 @@
org.magemage-server-plugins
- 1.4.2
+ 1.4.3mage-game-freeforall
diff --git a/Mage.Server.Plugins/Mage.Game.TinyLeadersDuel/pom.xml b/Mage.Server.Plugins/Mage.Game.TinyLeadersDuel/pom.xml
index 84a07a702c..7f1ff12438 100644
--- a/Mage.Server.Plugins/Mage.Game.TinyLeadersDuel/pom.xml
+++ b/Mage.Server.Plugins/Mage.Game.TinyLeadersDuel/pom.xml
@@ -7,7 +7,7 @@
org.magemage-server-plugins
- 1.4.2
+ 1.4.3mage-game-tinyleadersduel
diff --git a/Mage.Server.Plugins/Mage.Game.TwoPlayerDuel/pom.xml b/Mage.Server.Plugins/Mage.Game.TwoPlayerDuel/pom.xml
index b5d97c415d..7c6e74649f 100644
--- a/Mage.Server.Plugins/Mage.Game.TwoPlayerDuel/pom.xml
+++ b/Mage.Server.Plugins/Mage.Game.TwoPlayerDuel/pom.xml
@@ -7,7 +7,7 @@
org.magemage-server-plugins
- 1.4.2
+ 1.4.3mage-game-twoplayerduel
diff --git a/Mage.Server.Plugins/Mage.Player.AI.DraftBot/pom.xml b/Mage.Server.Plugins/Mage.Player.AI.DraftBot/pom.xml
index 893420512a..bf21ad2d2f 100644
--- a/Mage.Server.Plugins/Mage.Player.AI.DraftBot/pom.xml
+++ b/Mage.Server.Plugins/Mage.Player.AI.DraftBot/pom.xml
@@ -7,7 +7,7 @@
org.magemage-server-plugins
- 1.4.2
+ 1.4.3mage-player-ai-draftbot
diff --git a/Mage.Server.Plugins/Mage.Player.AI.MA/pom.xml b/Mage.Server.Plugins/Mage.Player.AI.MA/pom.xml
index 2f9afe8a97..4495a41f8a 100644
--- a/Mage.Server.Plugins/Mage.Player.AI.MA/pom.xml
+++ b/Mage.Server.Plugins/Mage.Player.AI.MA/pom.xml
@@ -7,7 +7,7 @@
org.magemage-server-plugins
- 1.4.2
+ 1.4.3mage-player-ai-ma
diff --git a/Mage.Server.Plugins/Mage.Player.AI/pom.xml b/Mage.Server.Plugins/Mage.Player.AI/pom.xml
index 2aa9ab4e65..51788aff21 100644
--- a/Mage.Server.Plugins/Mage.Player.AI/pom.xml
+++ b/Mage.Server.Plugins/Mage.Player.AI/pom.xml
@@ -7,7 +7,7 @@
org.magemage-server-plugins
- 1.4.2
+ 1.4.3mage-player-ai
diff --git a/Mage.Server.Plugins/Mage.Player.AIMCTS/pom.xml b/Mage.Server.Plugins/Mage.Player.AIMCTS/pom.xml
index d11572b64c..62c8e06901 100644
--- a/Mage.Server.Plugins/Mage.Player.AIMCTS/pom.xml
+++ b/Mage.Server.Plugins/Mage.Player.AIMCTS/pom.xml
@@ -7,7 +7,7 @@
org.magemage-server-plugins
- 1.4.2
+ 1.4.3mage-player-ai-mcts
diff --git a/Mage.Server.Plugins/Mage.Player.AIMinimax/pom.xml b/Mage.Server.Plugins/Mage.Player.AIMinimax/pom.xml
index aa551c80b7..696f0b3043 100644
--- a/Mage.Server.Plugins/Mage.Player.AIMinimax/pom.xml
+++ b/Mage.Server.Plugins/Mage.Player.AIMinimax/pom.xml
@@ -7,7 +7,7 @@
org.magemage-server-plugins
- 1.4.2
+ 1.4.3mage-player-aiminimax
diff --git a/Mage.Server.Plugins/Mage.Player.Human/pom.xml b/Mage.Server.Plugins/Mage.Player.Human/pom.xml
index 9dfaa3988b..28493362e6 100644
--- a/Mage.Server.Plugins/Mage.Player.Human/pom.xml
+++ b/Mage.Server.Plugins/Mage.Player.Human/pom.xml
@@ -7,7 +7,7 @@
org.magemage-server-plugins
- 1.4.2
+ 1.4.3mage-player-human
diff --git a/Mage.Server.Plugins/Mage.Tournament.BoosterDraft/pom.xml b/Mage.Server.Plugins/Mage.Tournament.BoosterDraft/pom.xml
index 92cd690763..06efa02a05 100644
--- a/Mage.Server.Plugins/Mage.Tournament.BoosterDraft/pom.xml
+++ b/Mage.Server.Plugins/Mage.Tournament.BoosterDraft/pom.xml
@@ -7,7 +7,7 @@
org.magemage-server-plugins
- 1.4.2
+ 1.4.3mage-tournament-boosterdraft
diff --git a/Mage.Server.Plugins/Mage.Tournament.Constructed/pom.xml b/Mage.Server.Plugins/Mage.Tournament.Constructed/pom.xml
index 091d2b0a97..884159dba8 100644
--- a/Mage.Server.Plugins/Mage.Tournament.Constructed/pom.xml
+++ b/Mage.Server.Plugins/Mage.Tournament.Constructed/pom.xml
@@ -7,7 +7,7 @@
org.magemage-server-plugins
- 1.4.2
+ 1.4.3mage-tournament-constructed
diff --git a/Mage.Server.Plugins/Mage.Tournament.Sealed/pom.xml b/Mage.Server.Plugins/Mage.Tournament.Sealed/pom.xml
index ac640da952..30abbd2009 100644
--- a/Mage.Server.Plugins/Mage.Tournament.Sealed/pom.xml
+++ b/Mage.Server.Plugins/Mage.Tournament.Sealed/pom.xml
@@ -7,7 +7,7 @@
org.magemage-server-plugins
- 1.4.2
+ 1.4.3mage-tournament-sealed
diff --git a/Mage.Server.Plugins/pom.xml b/Mage.Server.Plugins/pom.xml
index bcc34b3f72..49073190dc 100644
--- a/Mage.Server.Plugins/pom.xml
+++ b/Mage.Server.Plugins/pom.xml
@@ -6,7 +6,7 @@
org.magemage-root
- 1.4.2
+ 1.4.3mage-server-plugins
diff --git a/Mage.Server/config/config.xml b/Mage.Server/config/config.xml
index e28563936e..41ae2e3bff 100644
--- a/Mage.Server/config/config.xml
+++ b/Mage.Server/config/config.xml
@@ -1,16 +1,16 @@
-
-
+
-
+
@@ -71,8 +71,8 @@
-
-
+
+
@@ -84,12 +84,12 @@
-
+
+
+
-
-
-
+
@@ -97,7 +97,7 @@
-
+
diff --git a/Mage.Server/pom.xml b/Mage.Server/pom.xml
index d0cec09ce3..a3b4db6ffd 100644
--- a/Mage.Server/pom.xml
+++ b/Mage.Server/pom.xml
@@ -6,7 +6,7 @@
org.magemage-root
- 1.4.2
+ 1.4.3mage-server
diff --git a/Mage.Server/release/config/config.xml b/Mage.Server/release/config/config.xml
index 93ccc1a86a..a7e5eaa0a4 100644
--- a/Mage.Server/release/config/config.xml
+++ b/Mage.Server/release/config/config.xml
@@ -64,11 +64,11 @@
+
+
-
-
diff --git a/Mage.Server/release/server.msg.txt b/Mage.Server/release/server.msg.txt
index b22aa2823b..82d31dc20a 100644
--- a/Mage.Server/release/server.msg.txt
+++ b/Mage.Server/release/server.msg.txt
@@ -1,4 +1,4 @@
-Welcome! You are playing XMage version 1.4.2
+Welcome! You are playing XMage version 1.4.3
Find what was changed since previous versions on project Wiki https://github.com/magefree/mage/wiki
Contact us on the XMAGE board of http://www.slightlymagic.net/forum/viewforum.php?f=70 for bug reports or enhancement requests.
Download newest version from http://XMage.de
\ No newline at end of file
diff --git a/Mage.Server/server.msg.txt b/Mage.Server/server.msg.txt
index b9630adc79..b7101ba5dc 100644
--- a/Mage.Server/server.msg.txt
+++ b/Mage.Server/server.msg.txt
@@ -2,5 +2,5 @@ HotKeys: Alt+E - Enlarge card image
Wheel zoom in/out - Enlarge card image
F4 - end current turn, response to stack
F9 - skip all opponents' turns, no response to stack
-Welcome! You are playing Mage version 1.4.2
+Welcome! You are playing Mage version 1.4.3
Contact us on www.slightlymagic.net
\ No newline at end of file
diff --git a/Mage.Sets/pom.xml b/Mage.Sets/pom.xml
index 95e4a1caf0..a206bff759 100644
--- a/Mage.Sets/pom.xml
+++ b/Mage.Sets/pom.xml
@@ -7,7 +7,7 @@
org.magemage-root
- 1.4.2
+ 1.4.3org.mage
diff --git a/Mage.Sets/src/mage/sets/alliances/GorillaWarCry1.java b/Mage.Sets/src/mage/sets/alliances/GorillaWarCry1.java
new file mode 100644
index 0000000000..8ee452418b
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/alliances/GorillaWarCry1.java
@@ -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.alliances;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class GorillaWarCry1 extends mage.sets.masterseditioniv.GorillaWarCry {
+
+ public GorillaWarCry1(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 108;
+ this.expansionSetCode = "ALL";
+ }
+
+ public GorillaWarCry1(final GorillaWarCry1 card) {
+ super(card);
+ }
+
+ @Override
+ public GorillaWarCry1 copy() {
+ return new GorillaWarCry1(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/alliances/GorillaWarCry2.java b/Mage.Sets/src/mage/sets/alliances/GorillaWarCry2.java
new file mode 100644
index 0000000000..657c2278db
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/alliances/GorillaWarCry2.java
@@ -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.alliances;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class GorillaWarCry2 extends mage.sets.masterseditioniv.GorillaWarCry {
+
+ public GorillaWarCry2(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 109;
+ this.expansionSetCode = "ALL";
+ }
+
+ public GorillaWarCry2(final GorillaWarCry2 card) {
+ super(card);
+ }
+
+ @Override
+ public GorillaWarCry2 copy() {
+ return new GorillaWarCry2(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/alliances/Reinforcements1.java b/Mage.Sets/src/mage/sets/alliances/Reinforcements1.java
new file mode 100644
index 0000000000..7863eca7cb
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/alliances/Reinforcements1.java
@@ -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.alliances;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class Reinforcements1 extends mage.sets.masterseditionii.Reinforcements {
+
+ public Reinforcements1(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 142;
+ this.expansionSetCode = "ALL";
+ }
+
+ public Reinforcements1(final Reinforcements1 card) {
+ super(card);
+ }
+
+ @Override
+ public Reinforcements1 copy() {
+ return new Reinforcements1(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/alliances/Reinforcements2.java b/Mage.Sets/src/mage/sets/alliances/Reinforcements2.java
new file mode 100644
index 0000000000..e9010af879
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/alliances/Reinforcements2.java
@@ -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.alliances;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class Reinforcements2 extends mage.sets.masterseditionii.Reinforcements {
+
+ public Reinforcements2(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 143;
+ this.expansionSetCode = "ALL";
+ }
+
+ public Reinforcements2(final Reinforcements2 card) {
+ super(card);
+ }
+
+ @Override
+ public Reinforcements2 copy() {
+ return new Reinforcements2(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/alliances/WanderingMage.java b/Mage.Sets/src/mage/sets/alliances/WanderingMage.java
new file mode 100644
index 0000000000..20d38dca7c
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/alliances/WanderingMage.java
@@ -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.alliances;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class WanderingMage extends mage.sets.masterseditioniii.WanderingMage {
+
+ public WanderingMage(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 198;
+ this.expansionSetCode = "ALL";
+ }
+
+ public WanderingMage(final WanderingMage card) {
+ super(card);
+ }
+
+ @Override
+ public WanderingMage copy() {
+ return new WanderingMage(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/antiquities/ArgivianBlacksmith.java b/Mage.Sets/src/mage/sets/antiquities/ArgivianBlacksmith.java
new file mode 100644
index 0000000000..c789f94e24
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/antiquities/ArgivianBlacksmith.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.antiquities;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.effects.common.PreventDamageToTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.filter.FilterPermanent;
+import mage.filter.predicate.mageobject.CardTypePredicate;
+import mage.target.TargetPermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class ArgivianBlacksmith extends CardImpl {
+
+ private static final FilterPermanent filter = new FilterPermanent("target artifact creature");
+
+ static {
+ filter.add(new CardTypePredicate(CardType.ARTIFACT));
+ filter.add(new CardTypePredicate(CardType.CREATURE));
+ }
+
+ public ArgivianBlacksmith(UUID ownerId) {
+ super(ownerId, 95, "Argivian Blacksmith", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{1}{W}{W}");
+ this.expansionSetCode = "ATQ";
+ this.subtype.add("Human");
+ this.subtype.add("Artificer");
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(2);
+
+ // {tap}: Prevent the next 2 damage that would be dealt to target artifact creature this turn.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
+ new PreventDamageToTargetEffect(Duration.EndOfTurn, 2), new TapSourceCost());
+ ability.addTarget(new TargetPermanent(filter));
+ this.addAbility(ability);
+ }
+
+ public ArgivianBlacksmith(final ArgivianBlacksmith card) {
+ super(card);
+ }
+
+ @Override
+ public ArgivianBlacksmith copy() {
+ return new ArgivianBlacksmith(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/antiquities/Crumble.java b/Mage.Sets/src/mage/sets/antiquities/Crumble.java
new file mode 100644
index 0000000000..e9ca8886e6
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/antiquities/Crumble.java
@@ -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.antiquities;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class Crumble extends mage.sets.masterseditioniv.Crumble {
+
+ public Crumble(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 62;
+ this.expansionSetCode = "ATQ";
+ }
+
+ public Crumble(final Crumble card) {
+ super(card);
+ }
+
+ @Override
+ public Crumble copy() {
+ return new Crumble(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/arabiannights/ElHajjaj.java b/Mage.Sets/src/mage/sets/arabiannights/ElHajjaj.java
new file mode 100644
index 0000000000..30ee2520dd
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/arabiannights/ElHajjaj.java
@@ -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.arabiannights;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.DealsDamageGainLifeSourceTriggeredAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class ElHajjaj extends CardImpl {
+
+ public ElHajjaj(UUID ownerId) {
+ super(ownerId, 2, "El-Hajjaj", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{1}{B}{B}");
+ this.expansionSetCode = "ARN";
+ this.subtype.add("Human");
+ this.subtype.add("Wizard");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // Whenever El-Hajjâj deals damage, you gain that much life.
+ this.addAbility(new DealsDamageGainLifeSourceTriggeredAbility());
+ }
+
+ public ElHajjaj(final ElHajjaj card) {
+ super(card);
+ }
+
+ @Override
+ public ElHajjaj copy() {
+ return new ElHajjaj(this);
+ }
+}
\ No newline at end of file
diff --git a/Mage.Sets/src/mage/sets/arabiannights/IslandFishJasconius.java b/Mage.Sets/src/mage/sets/arabiannights/IslandFishJasconius.java
new file mode 100644
index 0000000000..165b82a710
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/arabiannights/IslandFishJasconius.java
@@ -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.arabiannights;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class IslandFishJasconius extends mage.sets.fourthedition.IslandFishJasconius {
+
+ public IslandFishJasconius(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 22;
+ this.expansionSetCode = "ARN";
+ }
+
+ public IslandFishJasconius(final IslandFishJasconius card) {
+ super(card);
+ }
+
+ @Override
+ public IslandFishJasconius copy() {
+ return new IslandFishJasconius(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/avacynrestored/Aggravate.java b/Mage.Sets/src/mage/sets/avacynrestored/Aggravate.java
index a4a44b9a1d..b762c36f21 100644
--- a/Mage.Sets/src/mage/sets/avacynrestored/Aggravate.java
+++ b/Mage.Sets/src/mage/sets/avacynrestored/Aggravate.java
@@ -1,143 +1,143 @@
-/*
- * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * The views and conclusions contained in the software and documentation are those of the
- * authors and should not be interpreted as representing official policies, either expressed
- * or implied, of BetaSteward_at_googlemail.com.
- */
-package mage.sets.avacynrestored;
-
-import java.util.List;
-import java.util.UUID;
-import mage.constants.CardType;
-import mage.constants.Duration;
-import mage.constants.Outcome;
-import mage.constants.Rarity;
-import mage.abilities.Ability;
-import mage.abilities.effects.OneShotEffect;
-import mage.abilities.effects.RequirementEffect;
-import mage.cards.CardImpl;
-import mage.filter.common.FilterCreaturePermanent;
-import mage.filter.predicate.permanent.ControllerIdPredicate;
-import mage.game.Game;
-import mage.game.permanent.Permanent;
-import mage.players.Player;
-import mage.target.TargetPlayer;
-import mage.watchers.common.DamagedByWatcher;
-
-/**
- *
- * @author North
- */
-public class Aggravate extends CardImpl {
-
- public Aggravate(UUID ownerId) {
- super(ownerId, 125, "Aggravate", Rarity.UNCOMMON, new CardType[]{CardType.INSTANT}, "{3}{R}{R}");
- this.expansionSetCode = "AVR";
-
-
- // Aggravate deals 1 damage to each creature target player controls.
- this.getSpellAbility().addEffect(new AggraveteEffect());
- this.getSpellAbility().addTarget(new TargetPlayer());
- // Each creature dealt damage this way attacks this turn if able.
- this.getSpellAbility().addEffect(new AggravateRequirementEffect());
- this.getSpellAbility().addWatcher(new DamagedByWatcher());
- }
-
- public Aggravate(final Aggravate card) {
- super(card);
- }
-
- @Override
- public Aggravate copy() {
- return new Aggravate(this);
- }
-}
-
-class AggraveteEffect extends OneShotEffect {
-
- public AggraveteEffect() {
- super(Outcome.Damage);
- this.staticText = "{this} deals 1 damage to each creature target player controls";
- }
-
- public AggraveteEffect(final AggraveteEffect effect) {
- super(effect);
- }
-
- @Override
- public AggraveteEffect copy() {
- return new AggraveteEffect(this);
- }
-
- @Override
- public boolean apply(Game game, Ability source) {
- Player player = game.getPlayer(source.getFirstTarget());
- if (player != null) {
- FilterCreaturePermanent filter = new FilterCreaturePermanent();
- filter.add(new ControllerIdPredicate(player.getId()));
- List creatures = game.getBattlefield().getActivePermanents(filter, source.getControllerId(), source.getSourceId(), game);
- for (Permanent creature : creatures) {
- creature.damage(1, source.getSourceId(), game, false, true);
- }
- return true;
- }
- return false;
- }
-}
-
-class AggravateRequirementEffect extends RequirementEffect {
-
- public AggravateRequirementEffect() {
- super(Duration.EndOfTurn);
- this.staticText = "Each creature dealt damage this way attacks this turn if able";
- }
-
- public AggravateRequirementEffect(final AggravateRequirementEffect effect) {
- super(effect);
- }
-
- @Override
- public AggravateRequirementEffect copy() {
- return new AggravateRequirementEffect(this);
- }
-
- @Override
- public boolean applies(Permanent permanent, Ability source, Game game) {
- DamagedByWatcher watcher = (DamagedByWatcher) game.getState().getWatchers().get("DamagedByWatcher", source.getSourceId());
- if (watcher != null) {
- return watcher.wasDamaged(permanent, game);
- }
- return false;
- }
-
- @Override
- public boolean mustAttack(Game game) {
- return true;
- }
-
- @Override
- public boolean mustBlock(Game game) {
- return false;
- }
-}
+/*
+ * 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.avacynrestored;
+
+import java.util.List;
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.RequirementEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Outcome;
+import mage.constants.Rarity;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.permanent.ControllerIdPredicate;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
+import mage.players.Player;
+import mage.target.TargetPlayer;
+import mage.watchers.common.DamagedByWatcher;
+
+/**
+ *
+ * @author North
+ */
+public class Aggravate extends CardImpl {
+
+ public Aggravate(UUID ownerId) {
+ super(ownerId, 125, "Aggravate", Rarity.UNCOMMON, new CardType[]{CardType.INSTANT}, "{3}{R}{R}");
+ this.expansionSetCode = "AVR";
+
+
+ // Aggravate deals 1 damage to each creature target player controls.
+ this.getSpellAbility().addEffect(new AggravateEffect());
+ this.getSpellAbility().addTarget(new TargetPlayer());
+ // Each creature dealt damage this way attacks this turn if able.
+ this.getSpellAbility().addEffect(new AggravateRequirementEffect());
+ this.getSpellAbility().addWatcher(new DamagedByWatcher());
+ }
+
+ public Aggravate(final Aggravate card) {
+ super(card);
+ }
+
+ @Override
+ public Aggravate copy() {
+ return new Aggravate(this);
+ }
+}
+
+class AggravateEffect extends OneShotEffect {
+
+ public AggravateEffect() {
+ super(Outcome.Damage);
+ this.staticText = "{this} deals 1 damage to each creature target player controls";
+ }
+
+ public AggravateEffect(final AggravateEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public AggravateEffect copy() {
+ return new AggravateEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player player = game.getPlayer(source.getFirstTarget());
+ if (player != null) {
+ FilterCreaturePermanent filter = new FilterCreaturePermanent();
+ filter.add(new ControllerIdPredicate(player.getId()));
+ List creatures = game.getBattlefield().getActivePermanents(filter, source.getControllerId(), source.getSourceId(), game);
+ for (Permanent creature : creatures) {
+ creature.damage(1, source.getSourceId(), game, false, true);
+ }
+ return true;
+ }
+ return false;
+ }
+}
+
+class AggravateRequirementEffect extends RequirementEffect {
+
+ public AggravateRequirementEffect() {
+ super(Duration.EndOfTurn);
+ this.staticText = "Each creature dealt damage this way attacks this turn if able";
+ }
+
+ public AggravateRequirementEffect(final AggravateRequirementEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public AggravateRequirementEffect copy() {
+ return new AggravateRequirementEffect(this);
+ }
+
+ @Override
+ public boolean applies(Permanent permanent, Ability source, Game game) {
+ DamagedByWatcher watcher = (DamagedByWatcher) game.getState().getWatchers().get("DamagedByWatcher", source.getSourceId());
+ if (watcher != null) {
+ return watcher.wasDamaged(permanent, game);
+ }
+ return false;
+ }
+
+ @Override
+ public boolean mustAttack(Game game) {
+ return true;
+ }
+
+ @Override
+ public boolean mustBlock(Game game) {
+ return false;
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/betrayersofkamigawa/HokoriDustDrinker.java b/Mage.Sets/src/mage/sets/betrayersofkamigawa/HokoriDustDrinker.java
index 62bb2f9736..6a126e4d3d 100644
--- a/Mage.Sets/src/mage/sets/betrayersofkamigawa/HokoriDustDrinker.java
+++ b/Mage.Sets/src/mage/sets/betrayersofkamigawa/HokoriDustDrinker.java
@@ -62,7 +62,7 @@ public class HokoriDustDrinker extends CardImpl {
this.subtype.add("Spirit");
this.power = new MageInt(2);
- this.toughness = new MageInt(1);
+ this.toughness = new MageInt(2);
// Lands don't untap during their controllers' untap steps.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepAllEffect(Duration.WhileOnBattlefield, TargetController.ANY, new FilterLandPermanent("Lands"))));
diff --git a/Mage.Sets/src/mage/sets/bornofthegods/UnravelTheAEther.java b/Mage.Sets/src/mage/sets/bornofthegods/UnravelTheAEther.java
index 94705d2208..fd87b5d72d 100644
--- a/Mage.Sets/src/mage/sets/bornofthegods/UnravelTheAEther.java
+++ b/Mage.Sets/src/mage/sets/bornofthegods/UnravelTheAEther.java
@@ -53,17 +53,16 @@ public class UnravelTheAEther extends CardImpl {
static {
filter.add(Predicates.or(new CardTypePredicate(CardType.ARTIFACT),
- new CardTypePredicate(CardType.ENCHANTMENT)));
+ new CardTypePredicate(CardType.ENCHANTMENT)));
}
public UnravelTheAEther(UUID ownerId) {
super(ownerId, 143, "Unravel the AEther", Rarity.UNCOMMON, new CardType[]{CardType.INSTANT}, "{1}{G}");
this.expansionSetCode = "BNG";
-
// Choose target artifact or enchantment. Its owner shuffles it into his or her library.
this.getSpellAbility().addEffect(new UnravelTheAEtherShuffleIntoLibraryEffect());
- Target target = new TargetPermanent(1,1,filter,true);
+ Target target = new TargetPermanent(1, 1, filter, false);
this.getSpellAbility().addTarget(target);
}
@@ -76,6 +75,7 @@ public class UnravelTheAEther extends CardImpl {
return new UnravelTheAEther(this);
}
}
+
class UnravelTheAEtherShuffleIntoLibraryEffect extends OneShotEffect {
public UnravelTheAEtherShuffleIntoLibraryEffect() {
@@ -96,7 +96,7 @@ class UnravelTheAEtherShuffleIntoLibraryEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) {
Permanent permanent = game.getPermanent(targetPointer.getFirst(game, source));
if (permanent != null) {
- if (permanent.moveToZone(Zone.LIBRARY, source.getSourceId(), game, true) ) {
+ if (permanent.moveToZone(Zone.LIBRARY, source.getSourceId(), game, true)) {
game.getPlayer(permanent.getOwnerId()).shuffleLibrary(game);
return true;
}
diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/HorobiDeathsWail.java b/Mage.Sets/src/mage/sets/championsofkamigawa/HorobiDeathsWail.java
index a254027b6a..3e81a41733 100644
--- a/Mage.Sets/src/mage/sets/championsofkamigawa/HorobiDeathsWail.java
+++ b/Mage.Sets/src/mage/sets/championsofkamigawa/HorobiDeathsWail.java
@@ -37,8 +37,6 @@ import mage.cards.CardImpl;
import mage.constants.CardType;
import mage.constants.Rarity;
import mage.constants.Zone;
-import mage.filter.common.FilterControlledPermanent;
-import mage.filter.predicate.mageobject.SubtypePredicate;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.events.GameEvent.EventType;
@@ -51,11 +49,6 @@ import mage.target.targetpointer.FixedTarget;
*/
public class HorobiDeathsWail extends CardImpl {
- private static final FilterControlledPermanent filter = new FilterControlledPermanent("Demon");
- static {
- filter.add(new SubtypePredicate("Demon"));
- }
-
public HorobiDeathsWail(UUID ownerId) {
super(ownerId, 117, "Horobi, Death's Wail", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{2}{B}{B}");
this.expansionSetCode = "CHK";
@@ -67,6 +60,7 @@ public class HorobiDeathsWail extends CardImpl {
// Flying
this.addAbility(FlyingAbility.getInstance());
+
// Whenever a creature becomes the target of a spell or ability, destroy that creature.
this.addAbility(new HorobiDeathsWailAbility(new DestroyTargetEffect()));
}
diff --git a/Mage.Sets/src/mage/sets/coldsnap/KjeldoranGargoyle.java b/Mage.Sets/src/mage/sets/coldsnap/KjeldoranGargoyle.java
new file mode 100644
index 0000000000..4cbcaead22
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/coldsnap/KjeldoranGargoyle.java
@@ -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.coldsnap;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.DealsDamageGainLifeSourceTriggeredAbility;
+import mage.abilities.keyword.FirstStrikeAbility;
+import mage.abilities.keyword.FlyingAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class KjeldoranGargoyle extends CardImpl {
+
+ public KjeldoranGargoyle(UUID ownerId) {
+ super(ownerId, 10, "Kjeldoran Gargoyle", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{5}{W}");
+ this.expansionSetCode = "CSP";
+ this.subtype.add("Gargoyle");
+ this.power = new MageInt(3);
+ this.toughness = new MageInt(3);
+
+ // Flying
+ this.addAbility(FlyingAbility.getInstance());
+
+ // First strike
+ this.addAbility(FirstStrikeAbility.getInstance());
+
+ // Whenever Kjeldoran Gargoyle deals damage, you gain that much life.
+ this.addAbility(new DealsDamageGainLifeSourceTriggeredAbility());
+ }
+
+ public KjeldoranGargoyle(final KjeldoranGargoyle card) {
+ super(card);
+ }
+
+ @Override
+ public KjeldoranGargoyle copy() {
+ return new KjeldoranGargoyle(this);
+ }
+}
\ No newline at end of file
diff --git a/Mage.Sets/src/mage/sets/coldsnap/PhyrexianIronfoot.java b/Mage.Sets/src/mage/sets/coldsnap/PhyrexianIronfoot.java
new file mode 100644
index 0000000000..e647764b4a
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/coldsnap/PhyrexianIronfoot.java
@@ -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.coldsnap;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.DontUntapInControllersUntapStepSourceEffect;
+import mage.abilities.effects.common.UntapSourceEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class PhyrexianIronfoot extends CardImpl {
+
+ public PhyrexianIronfoot(UUID ownerId) {
+ super(ownerId, 139, "Phyrexian Ironfoot", Rarity.UNCOMMON, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{3}");
+ this.expansionSetCode = "CSP";
+ this.supertype.add("Snow");
+ this.subtype.add("Construct");
+ this.power = new MageInt(3);
+ this.toughness = new MageInt(4);
+
+ // Phyrexian Ironfoot doesn't untap during your untap step.
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepSourceEffect()));
+
+ // {1}{snow}: Untap Phyrexian Ironfoot.
+ this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new UntapSourceEffect(), new ManaCostsImpl("{1}{snow}")));
+ }
+
+ public PhyrexianIronfoot(final PhyrexianIronfoot card) {
+ super(card);
+ }
+
+ @Override
+ public PhyrexianIronfoot copy() {
+ return new PhyrexianIronfoot(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/coldsnap/SwiftManeuver.java b/Mage.Sets/src/mage/sets/coldsnap/SwiftManeuver.java
new file mode 100644
index 0000000000..a503d42588
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/coldsnap/SwiftManeuver.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.coldsnap;
+
+import java.util.UUID;
+import mage.abilities.common.delayed.AtTheBeginOfNextUpkeepDelayedTriggeredAbility;
+import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect;
+import mage.abilities.effects.common.DrawCardSourceControllerEffect;
+import mage.abilities.effects.common.PreventDamageToTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.target.common.TargetCreatureOrPlayer;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class SwiftManeuver extends CardImpl {
+
+ public SwiftManeuver(UUID ownerId) {
+ super(ownerId, 21, "Swift Maneuver", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{1}{W}");
+ this.expansionSetCode = "CSP";
+
+ // Prevent the next 2 damage that would be dealt to target creature or player this turn.
+ this.getSpellAbility().addEffect(new PreventDamageToTargetEffect(Duration.EndOfTurn, 2));
+ this.getSpellAbility().addTarget(new TargetCreatureOrPlayer());
+
+ // Draw a card at the beginning of the next turn's upkeep.
+ this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(
+ new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1)), false));
+ }
+
+ public SwiftManeuver(final SwiftManeuver card) {
+ super(card);
+ }
+
+ @Override
+ public SwiftManeuver copy() {
+ return new SwiftManeuver(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/commander/CrescendoOfWar.java b/Mage.Sets/src/mage/sets/commander/CrescendoOfWar.java
new file mode 100644
index 0000000000..a2799d9dfc
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/commander/CrescendoOfWar.java
@@ -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.commander;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class CrescendoOfWar extends mage.sets.vintagemasters.CrescendoOfWar {
+
+ public CrescendoOfWar(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 12;
+ this.expansionSetCode = "CMD";
+ }
+
+ public CrescendoOfWar(final CrescendoOfWar card) {
+ super(card);
+ }
+
+ @Override
+ public CrescendoOfWar copy() {
+ return new CrescendoOfWar(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/commander/Triskelavus.java b/Mage.Sets/src/mage/sets/commander/Triskelavus.java
new file mode 100644
index 0000000000..4c7a7f021c
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/commander/Triskelavus.java
@@ -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.commander;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class Triskelavus extends mage.sets.timespiral.Triskelavus {
+
+ public Triskelavus(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 263;
+ this.expansionSetCode = "CMD";
+ }
+
+ public Triskelavus(final Triskelavus card) {
+ super(card);
+ }
+
+ @Override
+ public Triskelavus copy() {
+ return new Triskelavus(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/conspiracy/BiteOfTheBlackRose.java b/Mage.Sets/src/mage/sets/conspiracy/BiteOfTheBlackRose.java
new file mode 100644
index 0000000000..d8f9840867
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/conspiracy/BiteOfTheBlackRose.java
@@ -0,0 +1,114 @@
+/*
+ * 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.conspiracy;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.dynamicvalue.common.StaticValue;
+import mage.abilities.effects.ContinuousEffect;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.continuous.BoostOpponentsEffect;
+import mage.abilities.effects.common.discard.DiscardEachPlayerEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Outcome;
+import mage.constants.Rarity;
+import mage.constants.TargetController;
+import mage.game.Game;
+import mage.players.Player;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class BiteOfTheBlackRose extends CardImpl {
+
+ public BiteOfTheBlackRose(UUID ownerId) {
+ super(ownerId, 26, "Bite of the Black Rose", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{3}{B}");
+ this.expansionSetCode = "CNS";
+
+ // Will of the council - Starting with you, each player votes for sickness or psychosis. If sickness gets more votes, creatures your opponents control get -2/-2 until end of turn. If psychosis gets more votes or the vote is tied, each opponent discards two cards.
+ this.getSpellAbility().addEffect(new BiteOfTheBlackRoseEffect());
+ }
+
+ public BiteOfTheBlackRose(final BiteOfTheBlackRose card) {
+ super(card);
+ }
+
+ @Override
+ public BiteOfTheBlackRose copy() {
+ return new BiteOfTheBlackRose(this);
+ }
+}
+
+class BiteOfTheBlackRoseEffect extends OneShotEffect {
+
+ BiteOfTheBlackRoseEffect() {
+ super(Outcome.Benefit);
+ this.staticText = "Will of the council - Starting with you, each player votes for sickness or psychosis. If sickness gets more votes, creatures your opponents control get -2/-2 until end of turn. If psychosis gets more votes or the vote is tied, each opponent discards two cards";
+ }
+
+ BiteOfTheBlackRoseEffect(final BiteOfTheBlackRoseEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public BiteOfTheBlackRoseEffect copy() {
+ return new BiteOfTheBlackRoseEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player controller = game.getPlayer(source.getControllerId());
+ if (controller != null) {
+ int sicknessCount = 0;
+ int psychosisCount = 0;
+ for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
+ Player player = game.getPlayer(playerId);
+ if (player != null) {
+ if (player.chooseUse(Outcome.ExtraTurn, "Choose sickness?", source, game)) {
+ sicknessCount++;
+ game.informPlayers(player.getLogName() + " has chosen: sickness");
+ } else {
+ psychosisCount++;
+ game.informPlayers(player.getLogName() + " has chosen: psychosis");
+ }
+ }
+ }
+ if (sicknessCount > psychosisCount) {
+ ContinuousEffect effect = new BoostOpponentsEffect(-2, -2, Duration.EndOfTurn);
+ game.addEffect(effect, source);
+ } else {
+ new DiscardEachPlayerEffect(new StaticValue(2), false, TargetController.OPPONENT).apply(game, source);
+ }
+ return true;
+ }
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/Mage.Sets/src/mage/sets/conspiracy/MagisterOfWorth.java b/Mage.Sets/src/mage/sets/conspiracy/MagisterOfWorth.java
new file mode 100644
index 0000000000..c9ede50c8d
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/conspiracy/MagisterOfWorth.java
@@ -0,0 +1,54 @@
+/*
+ * 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.conspiracy;
+
+import java.util.UUID;
+import mage.constants.Rarity;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class MagisterOfWorth extends mage.sets.mediainserts.MagisterOfWorth {
+
+ public MagisterOfWorth(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 48;
+ this.expansionSetCode = "CNS";
+ this.rarity = Rarity.RARE;
+ }
+
+ public MagisterOfWorth(final MagisterOfWorth card) {
+ super(card);
+ }
+
+ @Override
+ public MagisterOfWorth copy() {
+ return new MagisterOfWorth(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/darksteel/ChromescaleDrake.java b/Mage.Sets/src/mage/sets/darksteel/ChromescaleDrake.java
new file mode 100644
index 0000000000..9f06247482
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/darksteel/ChromescaleDrake.java
@@ -0,0 +1,122 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.darksteel;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.MageObject;
+import mage.abilities.Ability;
+import mage.abilities.common.EntersBattlefieldTriggeredAbility;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.keyword.AffinityForArtifactsAbility;
+import mage.abilities.keyword.FlyingAbility;
+import mage.cards.Card;
+import mage.cards.CardImpl;
+import mage.cards.Cards;
+import mage.cards.CardsImpl;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.game.Game;
+import mage.players.Player;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class ChromescaleDrake extends CardImpl {
+
+ public ChromescaleDrake(UUID ownerId) {
+ super(ownerId, 20, "Chromescale Drake", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{6}{U}{U}{U}");
+ this.expansionSetCode = "DST";
+ this.subtype.add("Drake");
+ this.power = new MageInt(3);
+ this.toughness = new MageInt(4);
+
+ // Affinity for artifacts
+ this.addAbility(new AffinityForArtifactsAbility());
+
+ // Flying
+ this.addAbility(FlyingAbility.getInstance());
+
+ // When Chromescale Drake enters the battlefield, reveal the top three cards of your library. Put all artifact cards revealed this way into your hand and the rest into your graveyard.
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new ChromescaleDrakeEffect()));
+ }
+
+ public ChromescaleDrake(final ChromescaleDrake card) {
+ super(card);
+ }
+
+ @Override
+ public ChromescaleDrake copy() {
+ return new ChromescaleDrake(this);
+ }
+}
+
+class ChromescaleDrakeEffect extends OneShotEffect {
+
+ public ChromescaleDrakeEffect() {
+ super(Outcome.Benefit);
+ staticText = "Reveal the top three cards of your library. Put all artifacts cards revealed this way into your hand and the rest into your graveyard";
+ }
+
+ public ChromescaleDrakeEffect(final ChromescaleDrakeEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player controller = game.getPlayer(source.getControllerId());
+ MageObject sourceObject = game.getObject(source.getSourceId());
+ if (controller == null || sourceObject == null) {
+ return false;
+ }
+
+ Cards cards = new CardsImpl();
+ Cards cardsToHand = new CardsImpl();
+ cards.addAll(controller.getLibrary().getTopCards(game, 3));
+ if (!cards.isEmpty()) {
+ controller.revealCards(sourceObject.getName(), cards, game);
+ for (Card card: cards.getCards(game)) {
+ if (card.getCardType().contains(CardType.ARTIFACT)) {
+ cardsToHand.add(card);
+ cards.remove(card);
+ }
+ }
+ controller.moveCards(cardsToHand, Zone.LIBRARY, Zone.HAND, source, game);
+ controller.moveCards(cards, Zone.LIBRARY, Zone.GRAVEYARD, source, game);
+ }
+ return true;
+ }
+
+ @Override
+ public ChromescaleDrakeEffect copy() {
+ return new ChromescaleDrakeEffect(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/darksteel/FurnaceDragon.java b/Mage.Sets/src/mage/sets/darksteel/FurnaceDragon.java
new file mode 100644
index 0000000000..8c7f749d57
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/darksteel/FurnaceDragon.java
@@ -0,0 +1,107 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.darksteel;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.EntersBattlefieldTriggeredAbility;
+import mage.abilities.condition.Condition;
+import mage.abilities.decorator.ConditionalOneShotEffect;
+import mage.abilities.effects.common.ExileAllEffect;
+import mage.abilities.keyword.AffinityForArtifactsAbility;
+import mage.abilities.keyword.FlyingAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.filter.FilterPermanent;
+import mage.filter.predicate.mageobject.CardTypePredicate;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
+import mage.watchers.Watcher;
+import mage.watchers.common.CastFromHandWatcher;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class FurnaceDragon extends CardImpl {
+
+ private static final FilterPermanent filter = new FilterPermanent("artifacts");
+
+ static {
+ filter.add(new CardTypePredicate(CardType.ARTIFACT));
+ }
+
+ public FurnaceDragon(UUID ownerId) {
+ super(ownerId, 62, "Furnace Dragon", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{6}{R}{R}{R}");
+ this.expansionSetCode = "DST";
+ this.subtype.add("Dragon");
+ this.power = new MageInt(5);
+ this.toughness = new MageInt(5);
+
+ // Affinity for artifacts
+ this.addAbility(new AffinityForArtifactsAbility());
+
+ // Flying
+ this.addAbility(FlyingAbility.getInstance());
+
+ // When Furnace Dragon enters the battlefield, if you cast it from your hand, exile all artifacts.
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new ConditionalOneShotEffect(new ExileAllEffect(filter), new FurnaceDragonCondition()), false), new CastFromHandWatcher());
+ }
+
+ public FurnaceDragon(final FurnaceDragon card) {
+ super(card);
+ }
+
+ @Override
+ public FurnaceDragon copy() {
+ return new FurnaceDragon(this);
+ }
+}
+
+class FurnaceDragonCondition implements Condition {
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ boolean applies = false;
+ Permanent permanent = game.getPermanent(source.getSourceId());
+ if (permanent != null) {
+ Watcher watcher = game.getState().getWatchers().get("CastFromHand", source.getSourceId());
+ if (watcher != null && watcher.conditionMet()) {
+ applies = true;
+ }
+ }
+ return applies;
+ }
+
+ @Override
+ public String toString() {
+ return "you cast it from your hand";
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/dissension/PalliationAccord.java b/Mage.Sets/src/mage/sets/dissension/PalliationAccord.java
new file mode 100644
index 0000000000..0d98ccb205
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/dissension/PalliationAccord.java
@@ -0,0 +1,154 @@
+/*
+ * 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.dissension;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.TriggeredAbilityImpl;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.RemoveCountersSourceCost;
+import mage.abilities.effects.PreventionEffectImpl;
+import mage.abilities.effects.common.counter.AddCountersSourceEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.counters.CounterType;
+import mage.game.Game;
+import mage.game.events.GameEvent;
+import mage.game.events.GameEvent.EventType;
+import mage.game.permanent.Permanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class PalliationAccord extends CardImpl {
+
+ public PalliationAccord(UUID ownerId) {
+ super(ownerId, 122, "Palliation Accord", Rarity.UNCOMMON, new CardType[]{CardType.ENCHANTMENT}, "{3}{W}{U}");
+ this.expansionSetCode = "DIS";
+
+ // Whenever a creature an opponent controls becomes tapped, put a shield counter on Palliation Accord.
+ this.addAbility(new PallationAccordTriggeredAbility());
+
+ // Remove a shield counter from Palliation Accord: Prevent the next 1 damage that would be dealt to you this turn.
+ this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new PalliationAccordPreventionEffect(), new RemoveCountersSourceCost(CounterType.SHIELD.createInstance())));
+ }
+
+ public PalliationAccord(final PalliationAccord card) {
+ super(card);
+ }
+
+ @Override
+ public PalliationAccord copy() {
+ return new PalliationAccord(this);
+ }
+}
+
+class PallationAccordTriggeredAbility extends TriggeredAbilityImpl {
+ PallationAccordTriggeredAbility() {
+ super(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.SHIELD.createInstance()));
+ }
+
+ PallationAccordTriggeredAbility(final PallationAccordTriggeredAbility ability) {
+ super(ability);
+ }
+
+ @Override
+ public PallationAccordTriggeredAbility copy() {
+ return new PallationAccordTriggeredAbility(this);
+ }
+
+ @Override
+ public boolean checkEventType(GameEvent event, Game game) {
+ return event.getType() == EventType.TAPPED;
+ }
+
+ @Override
+ public boolean checkTrigger(GameEvent event, Game game) {
+ Permanent p = game.getPermanent(event.getTargetId());
+ if (p != null && p.getCardType().contains(CardType.CREATURE)) {
+ if (game.getOpponents(this.controllerId).contains(p.getControllerId()))
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public String getRule() {
+ return "Whenever a creature an opponent controls becomes tapped, " + modes.getText();
+ }
+}
+
+class PalliationAccordPreventionEffect extends PreventionEffectImpl {
+
+ public PalliationAccordPreventionEffect() {
+ super(Duration.EndOfTurn);
+ this.staticText = "Prevent the next 1 damage that would be dealt to you this turn";
+ }
+
+ public PalliationAccordPreventionEffect(final PalliationAccordPreventionEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public PalliationAccordPreventionEffect copy() {
+ return new PalliationAccordPreventionEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ return true;
+ }
+
+ @Override
+ public boolean replaceEvent(GameEvent event, Ability source, Game game) {
+ GameEvent preventEvent = new GameEvent(GameEvent.EventType.PREVENT_DAMAGE,
+ source.getControllerId(), source.getSourceId(), source.getControllerId(), event.getAmount(), false);
+ if (!game.replaceEvent(preventEvent)) {
+ int damage = event.getAmount();
+ if (damage > 0) {
+ event.setAmount(damage - 1);
+ this.used = true;
+ game.fireEvent(GameEvent.getEvent(GameEvent.EventType.PREVENTED_DAMAGE,
+ source.getControllerId(), source.getSourceId(), source.getControllerId(), 1));
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public boolean applies(GameEvent event, Ability source, Game game) {
+ if (!this.used && super.applies(event, source, game) && event.getTargetId().equals(source.getControllerId())) {
+ return true;
+ }
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/Mage.Sets/src/mage/sets/dissension/ShieldingPlax.java b/Mage.Sets/src/mage/sets/dissension/ShieldingPlax.java
index 3d42a62d49..f2367a6c85 100644
--- a/Mage.Sets/src/mage/sets/dissension/ShieldingPlax.java
+++ b/Mage.Sets/src/mage/sets/dissension/ShieldingPlax.java
@@ -43,8 +43,8 @@ import mage.constants.Outcome;
import mage.constants.Rarity;
import mage.constants.TargetController;
import mage.constants.Zone;
+import mage.filter.FilterObject;
import mage.filter.FilterStackObject;
-import mage.filter.predicate.permanent.ControllerPredicate;
import mage.target.TargetPermanent;
import mage.target.common.TargetCreaturePermanent;
@@ -54,12 +54,8 @@ import mage.target.common.TargetCreaturePermanent;
*/
public class ShieldingPlax extends CardImpl {
- private static final FilterStackObject filter = new FilterStackObject("spells or abilities your opponents control");
+ private static final FilterObject filter = new FilterStackObject("spells or abilities your opponents control");
- static {
- filter.add(new ControllerPredicate(TargetController.OPPONENT));
- }
-
public ShieldingPlax(UUID ownerId) {
super(ownerId, 147, "Shielding Plax", Rarity.COMMON, new CardType[]{CardType.ENCHANTMENT}, "{2}{G/U}");
this.expansionSetCode = "DIS";
@@ -71,12 +67,13 @@ public class ShieldingPlax extends CardImpl {
this.getSpellAbility().addEffect(new AttachEffect(Outcome.AddAbility));
Ability ability = new EnchantAbility(auraTarget.getTargetName());
this.addAbility(ability);
-
+
// When Shielding Plax enters the battlefield, draw a card.
this.addAbility(new EntersBattlefieldTriggeredAbility(new DrawCardSourceControllerEffect(1)));
-
+
// Enchanted creature can't be the target of spells or abilities your opponents control.
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantBeTargetedAttachedEffect(filter, Duration.WhileOnBattlefield, AttachmentType.AURA)));
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
+ new CantBeTargetedAttachedEffect(filter, Duration.WhileOnBattlefield, AttachmentType.AURA, TargetController.OPPONENT)));
}
public ShieldingPlax(final ShieldingPlax card) {
diff --git a/Mage.Sets/src/mage/sets/eventide/Necroskitter.java b/Mage.Sets/src/mage/sets/eventide/Necroskitter.java
index e3945c2cc4..309521f8d1 100644
--- a/Mage.Sets/src/mage/sets/eventide/Necroskitter.java
+++ b/Mage.Sets/src/mage/sets/eventide/Necroskitter.java
@@ -80,7 +80,7 @@ public class Necroskitter extends CardImpl {
class NecroskitterTriggeredAbility extends TriggeredAbilityImpl {
public NecroskitterTriggeredAbility() {
- super(Zone.BATTLEFIELD, new ReturnToBattlefieldUnderYourControlTargetEffect());
+ super(Zone.BATTLEFIELD, new ReturnToBattlefieldUnderYourControlTargetEffect(), true);
}
public NecroskitterTriggeredAbility(NecroskitterTriggeredAbility ability) {
@@ -100,18 +100,13 @@ class NecroskitterTriggeredAbility extends TriggeredAbilityImpl {
@Override
public boolean checkTrigger(GameEvent event, Game game) {
ZoneChangeEvent zEvent = (ZoneChangeEvent) event;
- if (game.getPermanent(sourceId) == null) {
- if (game.getLastKnownInformation(sourceId, Zone.BATTLEFIELD) == null) {
- return false;
- }
- }
if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() == Zone.GRAVEYARD) {
- Permanent permanent = (Permanent) game.getLastKnownInformation(event.getTargetId(), Zone.BATTLEFIELD);
+ Permanent permanent = zEvent.getTarget();
if (permanent != null
&& permanent.getCounters().containsKey(CounterType.M1M1)
&& game.getOpponents(controllerId).contains(permanent.getControllerId())) {
for (Effect effect : this.getEffects()) {
- effect.setTargetPointer(new FixedTarget(event.getTargetId()));
+ effect.setTargetPointer(new FixedTarget(event.getTargetId(), game.getState().getZoneChangeCounter(event.getTargetId())));
}
return true;
}
diff --git a/Mage.Sets/src/mage/sets/exodus/Allay.java b/Mage.Sets/src/mage/sets/exodus/Allay.java
new file mode 100644
index 0000000000..f9e5abf1b1
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/exodus/Allay.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.exodus;
+
+import java.util.UUID;
+import mage.abilities.effects.common.DestroyTargetEffect;
+import mage.abilities.keyword.BuybackAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.filter.common.FilterEnchantmentPermanent;
+import mage.target.TargetPermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class Allay extends CardImpl {
+
+ public Allay(UUID ownerId) {
+ super(ownerId, 1, "Allay", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{1}{W}");
+ this.expansionSetCode = "EXO";
+
+ // Buyback {3}
+ this.addAbility(new BuybackAbility("{3}"));
+
+ // Destroy target enchantment.
+ this.getSpellAbility().addTarget(new TargetPermanent(new FilterEnchantmentPermanent()));
+ this.getSpellAbility().addEffect(new DestroyTargetEffect());
+ }
+
+ public Allay(final Allay card) {
+ super(card);
+ }
+
+ @Override
+ public Allay copy() {
+ return new Allay(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/exodus/SonicBurst.java b/Mage.Sets/src/mage/sets/exodus/SonicBurst.java
new file mode 100644
index 0000000000..83af8608c9
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/exodus/SonicBurst.java
@@ -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.exodus;
+
+import java.util.UUID;
+import mage.abilities.costs.common.DiscardCardCost;
+import mage.abilities.effects.common.DamageTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.target.common.TargetCreatureOrPlayer;
+
+/**
+ *
+ * @author markedagain
+ */
+public class SonicBurst extends CardImpl {
+
+ public SonicBurst(UUID ownerId) {
+ super(ownerId, 103, "Sonic Burst", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{1}{R}");
+ this.expansionSetCode = "EXO";
+
+ // As an additional cost to cast Sonic Burst, discard a card at random.
+ this.getSpellAbility().addCost(new DiscardCardCost(true));
+ // Sonic Burst deals 4 damage to target creature or player.
+ this.getSpellAbility().addEffect(new DamageTargetEffect(4));
+ this.getSpellAbility().addTarget(new TargetCreatureOrPlayer());
+ }
+
+ public SonicBurst(final SonicBurst card) {
+ super(card);
+ }
+
+ @Override
+ public SonicBurst copy() {
+ return new SonicBurst(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/fallenempires/BalmOfRestoration.java b/Mage.Sets/src/mage/sets/fallenempires/BalmOfRestoration.java
new file mode 100644
index 0000000000..cbb123398a
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/fallenempires/BalmOfRestoration.java
@@ -0,0 +1,78 @@
+/*
+ * 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.fallenempires;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.Mode;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.SacrificeSourceCost;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.costs.mana.GenericManaCost;
+import mage.abilities.effects.common.GainLifeEffect;
+import mage.abilities.effects.common.PreventDamageToTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.target.common.TargetCreatureOrPlayer;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class BalmOfRestoration extends CardImpl {
+
+ public BalmOfRestoration(UUID ownerId) {
+ super(ownerId, 167, "Balm of Restoration", Rarity.RARE, new CardType[]{CardType.ARTIFACT}, "{2}");
+ this.expansionSetCode = "FEM";
+
+ // {1}, {tap}, Sacrifice Balm of Restoration: Choose one - You gain 2 life;
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainLifeEffect(2), new GenericManaCost(1));
+ ability.addCost(new TapSourceCost());
+ ability.addCost(new SacrificeSourceCost());
+
+ // or prevent the next 2 damage that would be dealt to target creature or player this turn.
+ Mode mode = new Mode();
+ mode.getEffects().add(new PreventDamageToTargetEffect(Duration.EndOfTurn, 2));
+ mode.getTargets().add(new TargetCreatureOrPlayer());
+ ability.addMode(mode);
+
+ this.addAbility(ability);
+ }
+
+ public BalmOfRestoration(final BalmOfRestoration card) {
+ super(card);
+ }
+
+ @Override
+ public BalmOfRestoration copy() {
+ return new BalmOfRestoration(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/fifthedition/BlessedWine.java b/Mage.Sets/src/mage/sets/fifthedition/BlessedWine.java
new file mode 100644
index 0000000000..2775748e3e
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/fifthedition/BlessedWine.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.fifthedition;
+
+import java.util.UUID;
+import mage.abilities.common.delayed.AtTheBeginOfNextUpkeepDelayedTriggeredAbility;
+import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect;
+import mage.abilities.effects.common.DrawCardSourceControllerEffect;
+import mage.abilities.effects.common.GainLifeEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class BlessedWine extends CardImpl {
+
+ public BlessedWine(UUID ownerId) {
+ super(ownerId, 287, "Blessed Wine", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{1}{W}");
+ this.expansionSetCode = "5ED";
+
+ // You gain 1 life.
+ this.getSpellAbility().addEffect(new GainLifeEffect(1));
+
+ // Draw a card at the beginning of the next turn's upkeep.
+ this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1)), false));
+ }
+
+ public BlessedWine(final BlessedWine card) {
+ super(card);
+ }
+
+ @Override
+ public BlessedWine copy() {
+ return new BlessedWine(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/fifthedition/Crumble.java b/Mage.Sets/src/mage/sets/fifthedition/Crumble.java
new file mode 100644
index 0000000000..0611ff890d
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/fifthedition/Crumble.java
@@ -0,0 +1,54 @@
+/*
+ * 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.fifthedition;
+
+import java.util.UUID;
+import mage.constants.Rarity;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class Crumble extends mage.sets.masterseditioniv.Crumble {
+
+ public Crumble(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 149;
+ this.expansionSetCode = "5ED";
+ this.rarity = Rarity.UNCOMMON;
+ }
+
+ public Crumble(final Crumble card) {
+ super(card);
+ }
+
+ @Override
+ public Crumble copy() {
+ return new Crumble(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/fifthedition/Deathgrip.java b/Mage.Sets/src/mage/sets/fifthedition/Deathgrip.java
new file mode 100644
index 0000000000..1987935456
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/fifthedition/Deathgrip.java
@@ -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.fifthedition;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author anonymous
+ */
+public class Deathgrip extends mage.sets.limitedbeta.Deathgrip {
+
+ public Deathgrip(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 16;
+ this.expansionSetCode = "5ED";
+ }
+
+ public Deathgrip(final Deathgrip card) {
+ super(card);
+ }
+
+ @Override
+ public Deathgrip copy() {
+ return new Deathgrip(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/fifthedition/Flare.java b/Mage.Sets/src/mage/sets/fifthedition/Flare.java
new file mode 100644
index 0000000000..9a11b49dbd
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/fifthedition/Flare.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.fifthedition;
+
+import java.util.UUID;
+import mage.abilities.common.delayed.AtTheBeginOfNextUpkeepDelayedTriggeredAbility;
+import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect;
+import mage.abilities.effects.common.DamageTargetEffect;
+import mage.abilities.effects.common.DrawCardSourceControllerEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.target.common.TargetCreatureOrPlayer;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class Flare extends CardImpl {
+
+ public Flare(UUID ownerId) {
+ super(ownerId, 11, "Flare", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{2}{R}");
+ this.expansionSetCode = "5ED";
+
+ // Flare deals 1 damage to target creature or player.
+ this.getSpellAbility().addEffect(new DamageTargetEffect(1));
+ this.getSpellAbility().addTarget(new TargetCreatureOrPlayer());
+
+ // Draw a card at the beginning of the next turn's upkeep.
+ this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1)), false));
+ }
+
+ public Flare(final Flare card) {
+ super(card);
+ }
+
+ @Override
+ public Flare copy() {
+ return new Flare(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/fifthedition/KrovikanFetish.java b/Mage.Sets/src/mage/sets/fifthedition/KrovikanFetish.java
new file mode 100644
index 0000000000..b0737e4e54
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/fifthedition/KrovikanFetish.java
@@ -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.fifthedition;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.common.EntersBattlefieldTriggeredAbility;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.effects.common.AttachEffect;
+import mage.abilities.effects.common.DrawCardSourceControllerEffect;
+import mage.abilities.effects.common.continuous.BoostEnchantedEffect;
+import mage.abilities.keyword.EnchantAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Outcome;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.target.TargetPermanent;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class KrovikanFetish extends CardImpl {
+
+ public KrovikanFetish(UUID ownerId) {
+ super(ownerId, 34, "Krovikan Fetish", Rarity.COMMON, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}");
+ this.expansionSetCode = "5ED";
+ this.subtype.add("Aura");
+
+ // Enchant creature
+ TargetPermanent auraTarget = new TargetCreaturePermanent();
+ this.getSpellAbility().addTarget(auraTarget);
+ this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature));
+ Ability ability = new EnchantAbility(auraTarget.getTargetName());
+ this.addAbility(ability);
+
+ // When Krovikan Fetish enters the battlefield, draw a card at the beginning of the next turn's upkeep.
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new DrawCardSourceControllerEffect(1), false));
+
+ // Enchanted creature gets +1/+1.
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(1, 1, Duration.WhileOnBattlefield)));
+ }
+
+ public KrovikanFetish(final KrovikanFetish card) {
+ super(card);
+ }
+
+ @Override
+ public KrovikanFetish copy() {
+ return new KrovikanFetish(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/fifthedition/Panic.java b/Mage.Sets/src/mage/sets/fifthedition/Panic.java
new file mode 100644
index 0000000000..589256a6c0
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/fifthedition/Panic.java
@@ -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.fifthedition;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class Panic extends mage.sets.masterseditionii.Panic {
+
+ public Panic(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 260;
+ this.expansionSetCode = "5ED";
+ }
+
+ public Panic(final Panic card) {
+ super(card);
+ }
+
+ @Override
+ public Panic copy() {
+ return new Panic(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/fifthedition/TimeBomb.java b/Mage.Sets/src/mage/sets/fifthedition/TimeBomb.java
new file mode 100644
index 0000000000..02b17e3aa8
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/fifthedition/TimeBomb.java
@@ -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.fifthedition;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class TimeBomb extends mage.sets.masterseditionii.TimeBomb {
+
+ public TimeBomb(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 404;
+ this.expansionSetCode = "5ED";
+ }
+
+ public TimeBomb(final TimeBomb card) {
+ super(card);
+ }
+
+ @Override
+ public TimeBomb copy() {
+ return new TimeBomb(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/fifthedition/Updraft.java b/Mage.Sets/src/mage/sets/fifthedition/Updraft.java
new file mode 100644
index 0000000000..7b8982eed8
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/fifthedition/Updraft.java
@@ -0,0 +1,54 @@
+/*
+ * 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.fifthedition;
+
+import java.util.UUID;
+import mage.constants.Rarity;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class Updraft extends mage.sets.iceage.Updraft {
+
+ public Updraft(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 133;
+ this.expansionSetCode = "5ED";
+ this.rarity = Rarity.COMMON;
+ }
+
+ public Updraft(final Updraft card) {
+ super(card);
+ }
+
+ @Override
+ public Updraft copy() {
+ return new Updraft(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/fourthedition/Crumble.java b/Mage.Sets/src/mage/sets/fourthedition/Crumble.java
new file mode 100644
index 0000000000..18d5931db0
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/fourthedition/Crumble.java
@@ -0,0 +1,54 @@
+/*
+ * 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.fourthedition;
+
+import java.util.UUID;
+import mage.constants.Rarity;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class Crumble extends mage.sets.masterseditioniv.Crumble {
+
+ public Crumble(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 123;
+ this.expansionSetCode = "4ED";
+ this.rarity = Rarity.UNCOMMON;
+ }
+
+ public Crumble(final Crumble card) {
+ super(card);
+ }
+
+ @Override
+ public Crumble copy() {
+ return new Crumble(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/fourthedition/Deathgrip.java b/Mage.Sets/src/mage/sets/fourthedition/Deathgrip.java
new file mode 100644
index 0000000000..a99ff56436
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/fourthedition/Deathgrip.java
@@ -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.fourthedition;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author anonymous
+ */
+public class Deathgrip extends mage.sets.limitedbeta.Deathgrip {
+
+ public Deathgrip(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 14;
+ this.expansionSetCode = "4ED";
+ }
+
+ public Deathgrip(final Deathgrip card) {
+ super(card);
+ }
+
+ @Override
+ public Deathgrip copy() {
+ return new Deathgrip(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/fourthedition/ElHajjaj.java b/Mage.Sets/src/mage/sets/fourthedition/ElHajjaj.java
new file mode 100644
index 0000000000..a8a7adba10
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/fourthedition/ElHajjaj.java
@@ -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.fourthedition;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class ElHajjaj extends mage.sets.arabiannights.ElHajjaj {
+
+ public ElHajjaj(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 18;
+ this.expansionSetCode = "4ED";
+ }
+
+ public ElHajjaj(final ElHajjaj card) {
+ super(card);
+ }
+
+ @Override
+ public ElHajjaj copy() {
+ return new ElHajjaj(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/fourthedition/IslandFishJasconius.java b/Mage.Sets/src/mage/sets/fourthedition/IslandFishJasconius.java
new file mode 100644
index 0000000000..fd840a61c2
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/fourthedition/IslandFishJasconius.java
@@ -0,0 +1,89 @@
+/*
+ * 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.fourthedition;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
+import mage.abilities.common.ControlsPermanentsControllerTriggeredAbility;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.DoIfCostPaid;
+import mage.abilities.effects.common.DontUntapInControllersUntapStepSourceEffect;
+import mage.abilities.effects.common.SacrificeSourceEffect;
+import mage.abilities.effects.common.UntapSourceEffect;
+import mage.abilities.effects.common.combat.CantAttackUnlessDefenderControllsPermanent;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.TargetController;
+import mage.constants.Zone;
+import mage.filter.Filter;
+import mage.filter.common.FilterLandPermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class IslandFishJasconius extends CardImpl {
+
+ public IslandFishJasconius(UUID ownerId) {
+ super(ownerId, 78, "Island Fish Jasconius", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{4}{U}{U}{U}");
+ this.expansionSetCode = "4ED";
+ this.subtype.add("Fish");
+ this.power = new MageInt(6);
+ this.toughness = new MageInt(8);
+
+ // Island Fish Jasconius doesn't untap during your untap step.
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepSourceEffect()));
+
+ // At the beginning of your upkeep, you may pay {U}{U}{U}. If you do, untap Island Fish Jasconius.
+ this.addAbility(new BeginningOfUpkeepTriggeredAbility(
+ Zone.BATTLEFIELD,
+ new DoIfCostPaid(new UntapSourceEffect(), new ManaCostsImpl("{U}{U}{U}")),
+ TargetController.YOU,
+ false));
+
+ // Island Fish Jasconius can't attack unless defending player controls an Island.
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantAttackUnlessDefenderControllsPermanent(new FilterLandPermanent("Island", "an Island"))));
+
+ // When you control no Islands, sacrifice Island Fish Jasconius.
+ this.addAbility(new ControlsPermanentsControllerTriggeredAbility(
+ new FilterLandPermanent("Island", "no Islands"), Filter.ComparisonType.Equal, 0,
+ new SacrificeSourceEffect()));
+ }
+
+ public IslandFishJasconius(final IslandFishJasconius card) {
+ super(card);
+ }
+
+ @Override
+ public IslandFishJasconius copy() {
+ return new IslandFishJasconius(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/fourthedition/WordOfBinding.java b/Mage.Sets/src/mage/sets/fourthedition/WordOfBinding.java
new file mode 100644
index 0000000000..ecdfe11b98
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/fourthedition/WordOfBinding.java
@@ -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.fourthedition;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.SpellAbility;
+import mage.abilities.effects.common.TapTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.game.Game;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class WordOfBinding extends CardImpl {
+
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creatures");
+
+ public WordOfBinding(UUID ownerId) {
+ super(ownerId, 56, "Word of Binding", Rarity.COMMON, new CardType[]{CardType.SORCERY}, "{X}{B}{B}");
+ this.expansionSetCode = "4ED";
+
+ // Tap X target creatures.
+ this.getSpellAbility().addEffect(new TapTargetEffect("X target creatures"));
+ this.getSpellAbility().addTarget(new TargetCreaturePermanent(0, 1,filter, false));
+ }
+
+ public WordOfBinding(final WordOfBinding card) {
+ super(card);
+ }
+
+ @Override
+ public void adjustTargets(Ability ability, Game game) {
+ if (ability instanceof SpellAbility) {
+ ability.getTargets().clear();
+ int numberToTap = ability.getManaCostsToPay().getX();
+ numberToTap = Math.min(game.getBattlefield().count(filter, ability.getSourceId(), ability.getControllerId(), game), numberToTap);
+ ability.addTarget(new TargetCreaturePermanent(numberToTap, numberToTap, filter, false));
+ }
+ }
+
+ @Override
+ public WordOfBinding copy() {
+ return new WordOfBinding(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/ftvangels/AureliaTheWarleader.java b/Mage.Sets/src/mage/sets/ftvangels/AureliaTheWarleader.java
new file mode 100644
index 0000000000..d52f76988d
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/ftvangels/AureliaTheWarleader.java
@@ -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.ftvangels;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class AureliaTheWarleader extends mage.sets.gatecrash.AureliaTheWarleader {
+
+ public AureliaTheWarleader(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 4;
+ this.expansionSetCode = "V15";
+ }
+
+ public AureliaTheWarleader(final AureliaTheWarleader card) {
+ super(card);
+ }
+
+ @Override
+ public AureliaTheWarleader copy() {
+ return new AureliaTheWarleader(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/ftvangels/BaneslayerAngel.java b/Mage.Sets/src/mage/sets/ftvangels/BaneslayerAngel.java
new file mode 100644
index 0000000000..638203f7bd
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/ftvangels/BaneslayerAngel.java
@@ -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.ftvangels;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class BaneslayerAngel extends mage.sets.magic2010.BaneslayerAngel {
+
+ public BaneslayerAngel(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 6;
+ this.expansionSetCode = "V15";
+ }
+
+ public BaneslayerAngel(final BaneslayerAngel card) {
+ super(card);
+ }
+
+ @Override
+ public BaneslayerAngel copy() {
+ return new BaneslayerAngel(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/ftvangels/EntreatTheAngels.java b/Mage.Sets/src/mage/sets/ftvangels/EntreatTheAngels.java
new file mode 100644
index 0000000000..e0551dd032
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/ftvangels/EntreatTheAngels.java
@@ -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.ftvangels;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class EntreatTheAngels extends mage.sets.avacynrestored.EntreatTheAngels {
+
+ public EntreatTheAngels(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 7;
+ this.expansionSetCode = "V15";
+ }
+
+ public EntreatTheAngels(final EntreatTheAngels card) {
+ super(card);
+ }
+
+ @Override
+ public EntreatTheAngels copy() {
+ return new EntreatTheAngels(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/ftvangels/ExaltedAngel.java b/Mage.Sets/src/mage/sets/ftvangels/ExaltedAngel.java
new file mode 100644
index 0000000000..c5536b6cb3
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/ftvangels/ExaltedAngel.java
@@ -0,0 +1,54 @@
+/*
+ * 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.ftvangels;
+
+import java.util.UUID;
+import mage.constants.Rarity;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class ExaltedAngel extends mage.sets.onslaught.ExaltedAngel {
+
+ public ExaltedAngel(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 8;
+ this.expansionSetCode = "V15";
+ this.rarity = Rarity.MYTHIC;
+ }
+
+ public ExaltedAngel(final ExaltedAngel card) {
+ super(card);
+ }
+
+ @Override
+ public ExaltedAngel copy() {
+ return new ExaltedAngel(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/ftvangels/IridescentAngel.java b/Mage.Sets/src/mage/sets/ftvangels/IridescentAngel.java
new file mode 100644
index 0000000000..6e1999d1cb
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/ftvangels/IridescentAngel.java
@@ -0,0 +1,54 @@
+/*
+ * 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.ftvangels;
+
+import java.util.UUID;
+import mage.constants.Rarity;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class IridescentAngel extends mage.sets.odyssey.IridescentAngel {
+
+ public IridescentAngel(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 10;
+ this.expansionSetCode = "V15";
+ this.rarity = Rarity.MYTHIC;
+ }
+
+ public IridescentAngel(final IridescentAngel card) {
+ super(card);
+ }
+
+ @Override
+ public IridescentAngel copy() {
+ return new IridescentAngel(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/ftvangels/JenaraAsuraOfWar.java b/Mage.Sets/src/mage/sets/ftvangels/JenaraAsuraOfWar.java
new file mode 100644
index 0000000000..53c80937a6
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/ftvangels/JenaraAsuraOfWar.java
@@ -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.ftvangels;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class JenaraAsuraOfWar extends mage.sets.alarareborn.JenaraAsuraOfWar {
+
+ public JenaraAsuraOfWar(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 11;
+ this.expansionSetCode = "V15";
+ }
+
+ public JenaraAsuraOfWar(final JenaraAsuraOfWar card) {
+ super(card);
+ }
+
+ @Override
+ public JenaraAsuraOfWar copy() {
+ return new JenaraAsuraOfWar(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/ftvangels/LightningAngel.java b/Mage.Sets/src/mage/sets/ftvangels/LightningAngel.java
new file mode 100644
index 0000000000..1b78d96256
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/ftvangels/LightningAngel.java
@@ -0,0 +1,54 @@
+/*
+ * 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.ftvangels;
+
+import java.util.UUID;
+import mage.constants.Rarity;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class LightningAngel extends mage.sets.apocalypse.LightningAngel {
+
+ public LightningAngel(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 12;
+ this.expansionSetCode = "V15";
+ this.rarity = Rarity.MYTHIC;
+ }
+
+ public LightningAngel(final LightningAngel card) {
+ super(card);
+ }
+
+ @Override
+ public LightningAngel copy() {
+ return new LightningAngel(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/ftvangels/PlatinumAngel.java b/Mage.Sets/src/mage/sets/ftvangels/PlatinumAngel.java
new file mode 100644
index 0000000000..7a4a5812c1
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/ftvangels/PlatinumAngel.java
@@ -0,0 +1,54 @@
+/*
+ * 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.ftvangels;
+
+import java.util.UUID;
+import mage.constants.Rarity;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class PlatinumAngel extends mage.sets.tenthedition.PlatinumAngel {
+
+ public PlatinumAngel(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 13;
+ this.expansionSetCode = "V15";
+ this.rarity = Rarity.MYTHIC;
+ }
+
+ public PlatinumAngel(final PlatinumAngel card) {
+ super(card);
+ }
+
+ @Override
+ public PlatinumAngel copy() {
+ return new PlatinumAngel(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/ftvangels/SerraAngel.java b/Mage.Sets/src/mage/sets/ftvangels/SerraAngel.java
new file mode 100644
index 0000000000..f9db2c50cc
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/ftvangels/SerraAngel.java
@@ -0,0 +1,54 @@
+/*
+ * 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.ftvangels;
+
+import java.util.UUID;
+import mage.constants.Rarity;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class SerraAngel extends mage.sets.tenthedition.SerraAngel {
+
+ public SerraAngel(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 14;
+ this.expansionSetCode = "V15";
+ this.rarity = Rarity.MYTHIC;
+ }
+
+ public SerraAngel(final SerraAngel card) {
+ super(card);
+ }
+
+ @Override
+ public SerraAngel copy() {
+ return new SerraAngel(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/ftvangels/TarielReckonerOfSouls.java b/Mage.Sets/src/mage/sets/ftvangels/TarielReckonerOfSouls.java
new file mode 100644
index 0000000000..e63b716a94
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/ftvangels/TarielReckonerOfSouls.java
@@ -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.ftvangels;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class TarielReckonerOfSouls extends mage.sets.commander.TarielReckonerOfSouls {
+
+ public TarielReckonerOfSouls(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 15;
+ this.expansionSetCode = "V15";
+ }
+
+ public TarielReckonerOfSouls(final TarielReckonerOfSouls card) {
+ super(card);
+ }
+
+ @Override
+ public TarielReckonerOfSouls copy() {
+ return new TarielReckonerOfSouls(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/futuresight/BarrenGlory.java b/Mage.Sets/src/mage/sets/futuresight/BarrenGlory.java
new file mode 100644
index 0000000000..fb6b3661c9
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/futuresight/BarrenGlory.java
@@ -0,0 +1,114 @@
+/*
+ * 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.futuresight;
+
+import java.util.UUID;
+import mage.abilities.TriggeredAbility;
+import mage.abilities.TriggeredAbilityImpl;
+import mage.abilities.condition.Condition;
+import mage.abilities.condition.common.CardsInHandCondition;
+import mage.abilities.decorator.ConditionalTriggeredAbility;
+import mage.abilities.effects.common.WinGameSourceControllerEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.filter.FilterPermanent;
+import mage.filter.predicate.permanent.AnotherPredicate;
+import mage.game.Game;
+import mage.game.events.GameEvent;
+import mage.game.events.GameEvent.EventType;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class BarrenGlory extends CardImpl {
+
+ public BarrenGlory(UUID ownerId) {
+ super(ownerId, 3, "Barren Glory", Rarity.RARE, new CardType[]{CardType.ENCHANTMENT}, "{4}{W}{W}");
+ this.expansionSetCode = "FUT";
+
+ // At the beginning of your upkeep, if you control no permanents other than Barren Glory and have no cards in hand, you win the game.
+ Condition condition = new CardsInHandCondition(CardsInHandCondition.CountType.EQUAL_TO, 0);
+ TriggeredAbility ability = new BarrenGloryTriggeredAbility();
+ this.addAbility(new ConditionalTriggeredAbility(ability,
+ condition,
+ "At the beginning of your upkeep, if you control no permanents other than {this} and have no cards in hand, you win the game"));
+ }
+
+ public BarrenGlory(final BarrenGlory card) {
+ super(card);
+ }
+
+ @Override
+ public BarrenGlory copy() {
+ return new BarrenGlory(this);
+ }
+}
+
+class BarrenGloryTriggeredAbility extends TriggeredAbilityImpl {
+
+ private static final FilterPermanent filter = new FilterPermanent();
+ static {
+ filter.add(new AnotherPredicate());
+ }
+
+ BarrenGloryTriggeredAbility() {
+ super(Zone.BATTLEFIELD, new WinGameSourceControllerEffect());
+ }
+
+ BarrenGloryTriggeredAbility(final BarrenGloryTriggeredAbility ability) {
+ super(ability);
+ }
+
+ @Override
+ public BarrenGloryTriggeredAbility copy() {
+ return new BarrenGloryTriggeredAbility(this);
+ }
+
+ @Override
+ public boolean checkEventType(GameEvent event, Game game) {
+ return event.getType() == EventType.UPKEEP_STEP_PRE;
+ }
+
+ @Override
+ public boolean checkTrigger(GameEvent event, Game game) {
+ if (event.getPlayerId().equals(this.controllerId)) {
+ if (game.getBattlefield().count(filter, this.getSourceId(), this.getControllerId(), game) == 0) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public String getRule() {
+ return "At the beginning of your upkeep, if you control no permanents other than {this} and have no cards in hand, you win the game";
+ }
+}
\ No newline at end of file
diff --git a/Mage.Sets/src/mage/sets/futuresight/Quagnoth.java b/Mage.Sets/src/mage/sets/futuresight/Quagnoth.java
new file mode 100644
index 0000000000..83c191c581
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/futuresight/Quagnoth.java
@@ -0,0 +1,109 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.futuresight;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.TriggeredAbilityImpl;
+import mage.abilities.effects.common.ReturnToHandSourceEffect;
+import mage.abilities.keyword.ShroudAbility;
+import mage.abilities.keyword.SplitSecondAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.game.Game;
+import mage.game.events.GameEvent;
+import mage.game.events.GameEvent.EventType;
+import mage.game.stack.StackObject;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class Quagnoth extends CardImpl {
+
+ public Quagnoth(UUID ownerId) {
+ super(ownerId, 150, "Quagnoth", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{5}{G}");
+ this.expansionSetCode = "FUT";
+ this.subtype.add("Beast");
+ this.power = new MageInt(4);
+ this.toughness = new MageInt(5);
+
+ // Split second
+ this.addAbility(new SplitSecondAbility());
+
+ // Shroud
+ this.addAbility(ShroudAbility.getInstance());
+
+ // When a spell or ability an opponent controls causes you to discard Quagnoth, return it to your hand.
+ this.addAbility(new QuagnothTriggeredAbility());
+ }
+
+ public Quagnoth(final Quagnoth card) {
+ super(card);
+ }
+
+ @Override
+ public Quagnoth copy() {
+ return new Quagnoth(this);
+ }
+}
+
+class QuagnothTriggeredAbility extends TriggeredAbilityImpl {
+
+ QuagnothTriggeredAbility() {
+ super(Zone.GRAVEYARD, new ReturnToHandSourceEffect());
+ }
+
+ QuagnothTriggeredAbility(final QuagnothTriggeredAbility ability) {
+ super(ability);
+ }
+
+ @Override
+ public QuagnothTriggeredAbility copy() {
+ return new QuagnothTriggeredAbility(this);
+ }
+
+ @Override
+ public boolean checkEventType(GameEvent event, Game game) {
+ return event.getType() == EventType.DISCARDED_CARD;
+ }
+
+ @Override
+ public boolean checkTrigger(GameEvent event, Game game) {
+ return game.getOpponents(this.getControllerId()).contains(game.getControllerId(event.getSourceId())) &&
+ StackObject.class.isInstance(game.getObject(event.getSourceId())) &&
+ getSourceId().equals(event.getTargetId());
+ }
+
+ @Override
+ public String getRule() {
+ return "When a spell or ability an opponent controls causes you to discard {this}, " + super.getRule();
+ }
+}
\ No newline at end of file
diff --git a/Mage.Sets/src/mage/sets/futuresight/SoultetherGolem.java b/Mage.Sets/src/mage/sets/futuresight/SoultetherGolem.java
index ca9d9e48c6..5fb3ab962c 100644
--- a/Mage.Sets/src/mage/sets/futuresight/SoultetherGolem.java
+++ b/Mage.Sets/src/mage/sets/futuresight/SoultetherGolem.java
@@ -29,6 +29,7 @@ package mage.sets.futuresight;
import java.util.UUID;
import mage.MageInt;
+import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldAbility;
import mage.abilities.common.EntersBattlefieldAllTriggeredAbility;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
@@ -49,7 +50,7 @@ import mage.filter.predicate.permanent.ControllerPredicate;
* @author fireshoes
*/
public class SoultetherGolem extends CardImpl {
-
+
private final static FilterCreaturePermanent filter = new FilterCreaturePermanent("another creature");
static {
@@ -65,10 +66,12 @@ public class SoultetherGolem extends CardImpl {
this.toughness = new MageInt(3);
// Vanishing 1
- this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.TIME.createInstance(1))));
+ Ability ability = new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.TIME.createInstance(1)));
+ ability.setRuleVisible(false);
+ this.addAbility(ability);
this.addAbility(new VanishingUpkeepAbility(1));
this.addAbility(new VanishingSacrificeAbility());
-
+
// Whenever another creature enters the battlefield under your control, put a time counter on Soultether Golem.
this.addAbility(new EntersBattlefieldAllTriggeredAbility(
Zone.BATTLEFIELD,
diff --git a/Mage.Sets/src/mage/sets/gatecrash/DyingWish.java b/Mage.Sets/src/mage/sets/gatecrash/DyingWish.java
index 772d3a72ad..6b98ffc389 100644
--- a/Mage.Sets/src/mage/sets/gatecrash/DyingWish.java
+++ b/Mage.Sets/src/mage/sets/gatecrash/DyingWish.java
@@ -28,17 +28,21 @@
package mage.sets.gatecrash;
import java.util.UUID;
-import mage.constants.CardType;
-import mage.constants.Outcome;
-import mage.constants.Rarity;
import mage.abilities.Ability;
import mage.abilities.common.DiesAttachedTriggeredAbility;
import mage.abilities.dynamicvalue.DynamicValue;
+import mage.abilities.effects.Effect;
import mage.abilities.effects.common.AttachEffect;
import mage.abilities.effects.common.GainLifeEffect;
import mage.abilities.effects.common.LoseLifeTargetEffect;
import mage.abilities.keyword.EnchantAbility;
import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
import mage.target.TargetPermanent;
import mage.target.TargetPlayer;
import mage.target.common.TargetControlledCreaturePermanent;
@@ -62,9 +66,8 @@ public class DyingWish extends CardImpl {
Ability ability = new EnchantAbility(auraTarget.getTargetName());
this.addAbility(ability);
-
// When enchanted creature dies, target player loses X life and you gain X life, where X is its power.
- DynamicValue attachedPower = new AttachedPermanentPowerCount();
+ DynamicValue attachedPower = new DyingWishAttachedPermanentPowerCount();
ability = new DiesAttachedTriggeredAbility(new LoseLifeTargetEffect(attachedPower), "enchanted creature");
ability.addEffect(new GainLifeEffect(attachedPower));
ability.addTarget(new TargetPlayer());
@@ -80,3 +83,38 @@ public class DyingWish extends CardImpl {
return new DyingWish(this);
}
}
+
+class DyingWishAttachedPermanentPowerCount implements DynamicValue {
+
+ @Override
+ public int calculate(Game game, Ability sourceAbility, Effect effect) {
+ Permanent attachmentPermanent = game.getPermanent(sourceAbility.getSourceId());
+ if (attachmentPermanent == null) {
+ attachmentPermanent = (Permanent) game.getLastKnownInformation(sourceAbility.getSourceId(), Zone.BATTLEFIELD, sourceAbility.getSourceObjectZoneChangeCounter());
+ }
+ if (attachmentPermanent != null && attachmentPermanent.getAttachedTo() != null) {
+ if (effect.getValue("attachedTo") != null) {
+ Permanent attached = (Permanent) effect.getValue("attachedTo");
+ if (attached != null) {
+ return attached.getPower().getValue();
+ }
+ }
+ }
+ return 0;
+ }
+
+ @Override
+ public DynamicValue copy() {
+ return new DyingWishAttachedPermanentPowerCount();
+ }
+
+ @Override
+ public String toString() {
+ return "X";
+ }
+
+ @Override
+ public String getMessage() {
+ return "its power";
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/guildpact/YoreTillerNephilim.java b/Mage.Sets/src/mage/sets/guildpact/YoreTillerNephilim.java
new file mode 100644
index 0000000000..9dae843303
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/guildpact/YoreTillerNephilim.java
@@ -0,0 +1,109 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.guildpact;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.AttacksTriggeredAbility;
+import mage.abilities.effects.OneShotEffect;
+import mage.cards.Card;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.filter.common.FilterCreatureCard;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
+import mage.players.Player;
+import mage.target.common.TargetCardInYourGraveyard;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class YoreTillerNephilim extends CardImpl {
+
+ public YoreTillerNephilim(UUID ownerId) {
+ super(ownerId, 140, "Yore-Tiller Nephilim", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{W}{U}{B}{R}");
+ this.expansionSetCode = "GPT";
+ this.subtype.add("Nephilim");
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(2);
+
+ // Whenever Yore-Tiller Nephilim attacks, return target creature card from your graveyard to the battlefield tapped and attacking.
+ Ability ability = new AttacksTriggeredAbility(new YoreTillerNephilimEffect(), false);
+ ability.addTarget(new TargetCardInYourGraveyard(new FilterCreatureCard()));
+ this.addAbility(ability);
+ }
+
+ public YoreTillerNephilim(final YoreTillerNephilim card) {
+ super(card);
+ }
+
+ @Override
+ public YoreTillerNephilim copy() {
+ return new YoreTillerNephilim(this);
+ }
+}
+
+class YoreTillerNephilimEffect extends OneShotEffect {
+
+ public YoreTillerNephilimEffect() {
+ super(Outcome.PutCreatureInPlay);
+ this.staticText = "return target creature card from your graveyard to the battlefield tapped and attacking";
+ }
+
+ public YoreTillerNephilimEffect(final YoreTillerNephilimEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player controller = game.getPlayer(source.getControllerId());
+
+ if (controller != null) {
+ Card card = game.getCard(getTargetPointer().getFirst(game, source));
+ if (card != null) {
+ if (card.putOntoBattlefield(game, Zone.GRAVEYARD, source.getSourceId(), source.getControllerId(), true)) {
+ Permanent permanent = game.getPermanent(card.getId());
+ game.getCombat().addAttackingCreature(permanent.getId(), game);
+ }
+ }
+ return true;
+
+ }
+ return false;
+ }
+
+ @Override
+ public YoreTillerNephilimEffect copy() {
+ return new YoreTillerNephilimEffect(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/homelands/Headstone.java b/Mage.Sets/src/mage/sets/homelands/Headstone.java
new file mode 100644
index 0000000000..789598ae7a
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/homelands/Headstone.java
@@ -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.homelands;
+
+import java.util.UUID;
+import mage.abilities.common.delayed.AtTheBeginOfNextUpkeepDelayedTriggeredAbility;
+import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect;
+import mage.abilities.effects.common.DrawCardSourceControllerEffect;
+import mage.abilities.effects.common.ExileTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.target.common.TargetCardInGraveyard;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class Headstone extends CardImpl {
+
+ public Headstone(UUID ownerId) {
+ super(ownerId, 15, "Headstone", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{1}{B}");
+ this.expansionSetCode = "HML";
+
+ // Exile target card from a graveyard.
+ this.getSpellAbility().addEffect(new ExileTargetEffect());
+ this.getSpellAbility().addTarget(new TargetCardInGraveyard());
+
+ // Draw a card at the beginning of the next turn's upkeep.
+ this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(
+ new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1)), false));
+ }
+
+ public Headstone(final Headstone card) {
+ super(card);
+ }
+
+ @Override
+ public Headstone copy() {
+ return new Headstone(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/homelands/Jinx.java b/Mage.Sets/src/mage/sets/homelands/Jinx.java
new file mode 100644
index 0000000000..7cadd45890
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/homelands/Jinx.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.homelands;
+
+import java.util.UUID;
+import mage.abilities.common.delayed.AtTheBeginOfNextUpkeepDelayedTriggeredAbility;
+import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect;
+import mage.abilities.effects.common.DrawCardSourceControllerEffect;
+import mage.abilities.effects.common.continuous.BecomesBasicLandTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.target.common.TargetLandPermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class Jinx extends CardImpl {
+
+ public Jinx(UUID ownerId) {
+ super(ownerId, 36, "Jinx", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{1}{U}");
+ this.expansionSetCode = "HML";
+
+ // Target land becomes the basic land type of your choice until end of turn.
+ this.getSpellAbility().addEffect(new BecomesBasicLandTargetEffect(Duration.EndOfTurn));
+ this.getSpellAbility().addTarget(new TargetLandPermanent());
+
+ // Draw a card at the beginning of the next turn's upkeep.
+ this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(
+ new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1)), false));
+ }
+
+ public Jinx(final Jinx card) {
+ super(card);
+ }
+
+ @Override
+ public Jinx copy() {
+ return new Jinx(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/homelands/SpectralBears.java b/Mage.Sets/src/mage/sets/homelands/SpectralBears.java
new file mode 100644
index 0000000000..998177e34e
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/homelands/SpectralBears.java
@@ -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.homelands;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class SpectralBears extends mage.sets.mastersedition.SpectralBears {
+
+ public SpectralBears(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 72;
+ this.expansionSetCode = "HML";
+ }
+
+ public SpectralBears(final SpectralBears card) {
+ super(card);
+ }
+
+ @Override
+ public SpectralBears copy() {
+ return new SpectralBears(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/iceage/BlessedWine.java b/Mage.Sets/src/mage/sets/iceage/BlessedWine.java
new file mode 100644
index 0000000000..106007dcc3
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/iceage/BlessedWine.java
@@ -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.iceage;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class BlessedWine extends mage.sets.fifthedition.BlessedWine {
+
+ public BlessedWine(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 231;
+ this.expansionSetCode = "ICE";
+ }
+
+ public BlessedWine(final BlessedWine card) {
+ super(card);
+ }
+
+ @Override
+ public BlessedWine copy() {
+ return new BlessedWine(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/iceage/CurseOfMaritLage.java b/Mage.Sets/src/mage/sets/iceage/CurseOfMaritLage.java
new file mode 100644
index 0000000000..4306cce6cc
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/iceage/CurseOfMaritLage.java
@@ -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.iceage;
+
+import java.util.UUID;
+import mage.abilities.common.EntersBattlefieldTriggeredAbility;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.effects.common.DontUntapInControllersUntapStepAllEffect;
+import mage.abilities.effects.common.TapAllEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.TargetController;
+import mage.constants.Zone;
+import mage.filter.FilterPermanent;
+import mage.filter.predicate.mageobject.SubtypePredicate;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class CurseOfMaritLage extends CardImpl {
+
+ private static final FilterPermanent filter = new FilterPermanent("Islands");
+
+ static {
+ filter.add(new SubtypePredicate("Island"));
+ }
+
+ public CurseOfMaritLage(UUID ownerId) {
+ super(ownerId, 181, "Curse of Marit Lage", Rarity.RARE, new CardType[]{CardType.ENCHANTMENT}, "{3}{R}{R}");
+ this.expansionSetCode = "ICE";
+
+ // When Curse of Marit Lage enters the battlefield, tap all Islands.
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new TapAllEffect(filter)));
+
+ // Islands don't untap during their controllers' untap steps.
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
+ new DontUntapInControllersUntapStepAllEffect(Duration.WhileOnBattlefield, TargetController.ANY, filter)));
+ }
+
+ public CurseOfMaritLage(final CurseOfMaritLage card) {
+ super(card);
+ }
+
+ @Override
+ public CurseOfMaritLage copy() {
+ return new CurseOfMaritLage(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/iceage/Flare.java b/Mage.Sets/src/mage/sets/iceage/Flare.java
new file mode 100644
index 0000000000..417b3ffdb1
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/iceage/Flare.java
@@ -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.iceage;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class Flare extends mage.sets.fifthedition.Flare {
+
+ public Flare(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 185;
+ this.expansionSetCode = "ICE";
+ }
+
+ public Flare(final Flare card) {
+ super(card);
+ }
+
+ @Override
+ public Flare copy() {
+ return new Flare(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/iceage/ForgottenLore.java b/Mage.Sets/src/mage/sets/iceage/ForgottenLore.java
new file mode 100644
index 0000000000..48aeebbb97
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/iceage/ForgottenLore.java
@@ -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.iceage;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author LoneFox
+ */
+public class ForgottenLore extends mage.sets.masterseditionii.ForgottenLore {
+
+ public ForgottenLore(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 125;
+ this.expansionSetCode = "ICE";
+ }
+
+ public ForgottenLore(final ForgottenLore card) {
+ super(card);
+ }
+
+ @Override
+ public ForgottenLore copy() {
+ return new ForgottenLore(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/iceage/Infuse.java b/Mage.Sets/src/mage/sets/iceage/Infuse.java
new file mode 100644
index 0000000000..d531e6be49
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/iceage/Infuse.java
@@ -0,0 +1,78 @@
+/*
+ * 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.iceage;
+
+import java.util.UUID;
+import mage.abilities.common.delayed.AtTheBeginOfNextUpkeepDelayedTriggeredAbility;
+import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect;
+import mage.abilities.effects.common.DrawCardSourceControllerEffect;
+import mage.abilities.effects.common.UntapTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.filter.FilterPermanent;
+import mage.filter.predicate.Predicates;
+import mage.filter.predicate.mageobject.CardTypePredicate;
+import mage.target.TargetPermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class Infuse extends CardImpl {
+
+ private static final FilterPermanent filter = new FilterPermanent("artifact, creature, or land");
+
+ static {
+ filter.add(Predicates.or(
+ new CardTypePredicate(CardType.ARTIFACT),
+ new CardTypePredicate(CardType.CREATURE),
+ new CardTypePredicate(CardType.LAND)));
+ }
+
+ public Infuse(UUID ownerId) {
+ super(ownerId, 80, "Infuse", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{2}{U}");
+ this.expansionSetCode = "ICE";
+
+ // Untap target artifact, creature, or land.
+ this.getSpellAbility().addEffect(new UntapTargetEffect());
+ this.getSpellAbility().addTarget(new TargetPermanent(filter));
+
+ // Draw a card at the beginning of the next turn's upkeep.
+ this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1)), false));
+ }
+
+ public Infuse(final Infuse card) {
+ super(card);
+ }
+
+ @Override
+ public Infuse copy() {
+ return new Infuse(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/iceage/KrovikanFetish.java b/Mage.Sets/src/mage/sets/iceage/KrovikanFetish.java
new file mode 100644
index 0000000000..88688aeb24
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/iceage/KrovikanFetish.java
@@ -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.iceage;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class KrovikanFetish extends mage.sets.fifthedition.KrovikanFetish {
+
+ public KrovikanFetish(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 28;
+ this.expansionSetCode = "ICE";
+ }
+
+ public KrovikanFetish(final KrovikanFetish card) {
+ super(card);
+ }
+
+ @Override
+ public KrovikanFetish copy() {
+ return new KrovikanFetish(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/iceage/MindWarp.java b/Mage.Sets/src/mage/sets/iceage/MindWarp.java
index d64c55a9dc..0d6cbb17f8 100644
--- a/Mage.Sets/src/mage/sets/iceage/MindWarp.java
+++ b/Mage.Sets/src/mage/sets/iceage/MindWarp.java
@@ -43,7 +43,7 @@ import mage.target.TargetPlayer;
public class MindWarp extends CardImpl {
public MindWarp(UUID ownerId) {
- super(ownerId, 14, "Mind Warp", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{X}{3}{B}");
+ super(ownerId, 36, "Mind Warp", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{X}{3}{B}");
this.expansionSetCode = "ICE";
diff --git a/Mage.Sets/src/mage/sets/iceage/Panic.java b/Mage.Sets/src/mage/sets/iceage/Panic.java
new file mode 100644
index 0000000000..65e1c110b9
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/iceage/Panic.java
@@ -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.iceage;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class Panic extends mage.sets.masterseditionii.Panic {
+
+ public Panic(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 212;
+ this.expansionSetCode = "ICE";
+ }
+
+ public Panic(final Panic card) {
+ super(card);
+ }
+
+ @Override
+ public Panic copy() {
+ return new Panic(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/iceage/ShieldOfTheAges.java b/Mage.Sets/src/mage/sets/iceage/ShieldOfTheAges.java
new file mode 100644
index 0000000000..62bebd747b
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/iceage/ShieldOfTheAges.java
@@ -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.iceage;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class ShieldOfTheAges extends mage.sets.mastersedition.ShieldOfTheAges {
+
+ public ShieldOfTheAges(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 310;
+ this.expansionSetCode = "ICE";
+ }
+
+ public ShieldOfTheAges(final ShieldOfTheAges card) {
+ super(card);
+ }
+
+ @Override
+ public ShieldOfTheAges copy() {
+ return new ShieldOfTheAges(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/iceage/SkeletonShip.java b/Mage.Sets/src/mage/sets/iceage/SkeletonShip.java
new file mode 100644
index 0000000000..38a31f5b63
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/iceage/SkeletonShip.java
@@ -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.iceage;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.ControlsPermanentsControllerTriggeredAbility;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.effects.common.SacrificeSourceEffect;
+import mage.abilities.effects.common.counter.AddCountersTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.counters.CounterType;
+import mage.filter.Filter;
+import mage.filter.common.FilterLandPermanent;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class SkeletonShip extends CardImpl {
+
+ public SkeletonShip(UUID ownerId) {
+ super(ownerId, 379, "Skeleton Ship", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{3}{U}");
+ this.expansionSetCode = "ICE";
+ this.supertype.add("Legendary");
+ this.subtype.add("Skeleton");
+ this.power = new MageInt(0);
+ this.toughness = new MageInt(3);
+
+ // When you control no Islands, sacrifice Skeleton Ship.
+ this.addAbility(new ControlsPermanentsControllerTriggeredAbility(
+ new FilterLandPermanent("Island", "no Islands"), Filter.ComparisonType.Equal, 0,
+ new SacrificeSourceEffect()));
+
+ // {tap}: Put a -1/-1 counter on target creature.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersTargetEffect(CounterType.M1M1.createInstance()), new TapSourceCost());
+ ability.addTarget(new TargetCreaturePermanent());
+ this.addAbility(ability);
+ }
+
+ public SkeletonShip(final SkeletonShip card) {
+ super(card);
+ }
+
+ @Override
+ public SkeletonShip copy() {
+ return new SkeletonShip(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/iceage/TimeBomb.java b/Mage.Sets/src/mage/sets/iceage/TimeBomb.java
new file mode 100644
index 0000000000..a707e9dc09
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/iceage/TimeBomb.java
@@ -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.iceage;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class TimeBomb extends mage.sets.masterseditionii.TimeBomb {
+
+ public TimeBomb(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 317;
+ this.expansionSetCode = "ICE";
+ }
+
+ public TimeBomb(final TimeBomb card) {
+ super(card);
+ }
+
+ @Override
+ public TimeBomb copy() {
+ return new TimeBomb(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/iceage/Updraft.java b/Mage.Sets/src/mage/sets/iceage/Updraft.java
new file mode 100644
index 0000000000..64254f22b3
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/iceage/Updraft.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.iceage;
+
+import java.util.UUID;
+import mage.abilities.common.delayed.AtTheBeginOfNextUpkeepDelayedTriggeredAbility;
+import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect;
+import mage.abilities.effects.common.DrawCardSourceControllerEffect;
+import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
+import mage.abilities.keyword.FlyingAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class Updraft extends CardImpl {
+
+ public Updraft(UUID ownerId) {
+ super(ownerId, 105, "Updraft", Rarity.UNCOMMON, new CardType[]{CardType.INSTANT}, "{1}{U}");
+ this.expansionSetCode = "ICE";
+
+ // Target creature gains flying until end of turn.
+ this.getSpellAbility().addEffect(new GainAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn));
+ this.getSpellAbility().addTarget(new TargetCreaturePermanent());
+
+ // Draw a card at the beginning of the next turn's upkeep.
+ this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1)), false));
+ }
+
+ public Updraft(final Updraft card) {
+ super(card);
+ }
+
+ @Override
+ public Updraft copy() {
+ return new Updraft(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/iceage/WrathOfMaritLage.java b/Mage.Sets/src/mage/sets/iceage/WrathOfMaritLage.java
index ba13bc802b..c190395735 100644
--- a/Mage.Sets/src/mage/sets/iceage/WrathOfMaritLage.java
+++ b/Mage.Sets/src/mage/sets/iceage/WrathOfMaritLage.java
@@ -1,109 +1,77 @@
-/*
- * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without modification, are
- * permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this list of
- * conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright notice, this list
- * of conditions and the following disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
- * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * The views and conclusions contained in the software and documentation are those of the
- * authors and should not be interpreted as representing official policies, either expressed
- * or implied, of BetaSteward_at_googlemail.com.
- */
-package mage.sets.iceage;
-
-import java.util.List;
-import java.util.UUID;
-import mage.ObjectColor;
-import mage.abilities.Ability;
-import mage.abilities.common.EntersBattlefieldTriggeredAbility;
-import mage.abilities.common.SimpleStaticAbility;
-import mage.abilities.effects.OneShotEffect;
-import mage.abilities.effects.common.DontUntapInControllersUntapStepAllEffect;
-import mage.cards.CardImpl;
-import mage.constants.CardType;
-import mage.constants.Duration;
-import mage.constants.Outcome;
-import mage.constants.Rarity;
-import mage.constants.TargetController;
-import mage.constants.Zone;
-import mage.filter.common.FilterCreaturePermanent;
-import mage.filter.predicate.mageobject.ColorPredicate;
-import mage.game.Game;
-import mage.game.permanent.Permanent;
-
-/**
- *
- * @author Plopman
- */
-public class WrathOfMaritLage extends CardImpl {
-
- public static final FilterCreaturePermanent filter = new FilterCreaturePermanent("red creatures");
-
- static {
- filter.add(new ColorPredicate(ObjectColor.RED));
- }
-
-
- public WrathOfMaritLage(UUID ownerId) {
- super(ownerId, 109, "Wrath of Marit Lage", Rarity.RARE, new CardType[]{CardType.ENCHANTMENT}, "{3}{U}{U}");
- this.expansionSetCode = "ICE";
-
-
- // When Wrath of Marit Lage enters the battlefield, tap all red creatures.
- this.addAbility(new EntersBattlefieldTriggeredAbility(new TapAllEffect()));
- // Red creatures don't untap during their controllers' untap steps.
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepAllEffect(Duration.WhileOnBattlefield, TargetController.ANY, filter)));
- }
-
- public WrathOfMaritLage(final WrathOfMaritLage card) {
- super(card);
- }
-
- @Override
- public WrathOfMaritLage copy() {
- return new WrathOfMaritLage(this);
- }
-}
-
-class TapAllEffect extends OneShotEffect {
-
- public TapAllEffect() {
- super(Outcome.Tap);
- staticText = "tap all red creatures";
- }
-
- public TapAllEffect(final TapAllEffect effect) {
- super(effect);
- }
-
- @Override
- public boolean apply(Game game, Ability source) {
-
- List creatures = game.getBattlefield().getActivePermanents(WrathOfMaritLage.filter, source.getSourceId(), game);
- for (Permanent creature : creatures) {
- creature.tap(game);
- }
- return true;
- }
-
- @Override
- public TapAllEffect copy() {
- return new TapAllEffect(this);
- }
-}
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.iceage;
+
+import java.util.UUID;
+import mage.ObjectColor;
+import mage.abilities.common.EntersBattlefieldTriggeredAbility;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.effects.common.DontUntapInControllersUntapStepAllEffect;
+import mage.abilities.effects.common.TapAllEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.TargetController;
+import mage.constants.Zone;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.mageobject.ColorPredicate;
+
+/**
+ *
+ * @author Plopman
+ */
+public class WrathOfMaritLage extends CardImpl {
+
+ public static final FilterCreaturePermanent filter = new FilterCreaturePermanent("red creatures");
+
+ static {
+ filter.add(new ColorPredicate(ObjectColor.RED));
+ }
+
+ public WrathOfMaritLage(UUID ownerId) {
+ super(ownerId, 109, "Wrath of Marit Lage", Rarity.RARE, new CardType[]{CardType.ENCHANTMENT}, "{3}{U}{U}");
+ this.expansionSetCode = "ICE";
+
+
+ // When Wrath of Marit Lage enters the battlefield, tap all red creatures.
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new TapAllEffect(filter)));
+ // Red creatures don't untap during their controllers' untap steps.
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
+ new DontUntapInControllersUntapStepAllEffect(Duration.WhileOnBattlefield, TargetController.ANY, filter)));
+ }
+
+ public WrathOfMaritLage(final WrathOfMaritLage card) {
+ super(card);
+ }
+
+ @Override
+ public WrathOfMaritLage copy() {
+ return new WrathOfMaritLage(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/invasion/CollapsingBorders.java b/Mage.Sets/src/mage/sets/invasion/CollapsingBorders.java
index 81e3f9c120..323704a268 100644
--- a/Mage.Sets/src/mage/sets/invasion/CollapsingBorders.java
+++ b/Mage.Sets/src/mage/sets/invasion/CollapsingBorders.java
@@ -42,7 +42,7 @@ import mage.constants.TargetController;
/**
*
* @author LoneFox
-
+ *
*/
public class CollapsingBorders extends CardImpl {
@@ -51,7 +51,7 @@ public class CollapsingBorders extends CardImpl {
this.expansionSetCode = "INV";
// Domain - At the beginning of each player's upkeep, that player gains 1 life for each basic land type among lands he or she controls. Then Collapsing Borders deals 3 damage to him or her.
- Effect effect = new GainLifeTargetEffect(new DomainValue());
+ Effect effect = new GainLifeTargetEffect(new DomainValue(true));
effect.setText("that player gains 1 life for each basic land type among lands he or she controls.");
Ability ability = new BeginningOfUpkeepTriggeredAbility(effect, TargetController.ANY, false);
effect = new DamageTargetEffect(3);
diff --git a/Mage.Sets/src/mage/sets/invasion/OrimsTouch.java b/Mage.Sets/src/mage/sets/invasion/OrimsTouch.java
new file mode 100644
index 0000000000..bec89d9ae4
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/invasion/OrimsTouch.java
@@ -0,0 +1,74 @@
+/*
+ * 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.abilities.condition.LockedInCondition;
+import mage.abilities.condition.common.KickedCondition;
+import mage.abilities.decorator.ConditionalReplacementEffect;
+import mage.abilities.effects.Effect;
+import mage.abilities.effects.common.PreventDamageToTargetEffect;
+import mage.abilities.keyword.KickerAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.target.common.TargetCreatureOrPlayer;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class OrimsTouch extends CardImpl {
+
+ public OrimsTouch(UUID ownerId) {
+ super(ownerId, 23, "Orim's Touch", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{W}");
+ this.expansionSetCode = "INV";
+
+ // Kicker {1}
+ this.addAbility(new KickerAbility("{1}"));
+
+ // Prevent the next 2 damage that would be dealt to target creature or player this turn. If Orim's Touch was kicked, prevent the next 4 damage that would be dealt to that creature or player this turn instead.
+ Effect effect = new ConditionalReplacementEffect(
+ new PreventDamageToTargetEffect(Duration.EndOfTurn, 4),
+ new LockedInCondition(KickedCondition.getInstance()),
+ new PreventDamageToTargetEffect(Duration.EndOfTurn, 2));
+ effect.setText("Prevent the next 2 damage that would be dealt to target creature or player this turn. If Orim's Touch was kicked, prevent the next 4 damage that would be dealt to that creature or player this turn instead");
+ this.getSpellAbility().addTarget(new TargetCreatureOrPlayer());
+ this.getSpellAbility().addEffect(effect);
+ }
+
+ public OrimsTouch(final OrimsTouch card) {
+ super(card);
+ }
+
+ @Override
+ public OrimsTouch copy() {
+ return new OrimsTouch(this);
+ }
+}
\ No newline at end of file
diff --git a/Mage.Sets/src/mage/sets/invasion/Simoon.java b/Mage.Sets/src/mage/sets/invasion/Simoon.java
new file mode 100644
index 0000000000..eb8fc2cd18
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/invasion/Simoon.java
@@ -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 fireshoes
+ */
+public class Simoon extends mage.sets.visions.Simoon {
+
+ public Simoon(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 272;
+ this.expansionSetCode = "INV";
+ }
+
+ public Simoon(final Simoon card) {
+ super(card);
+ }
+
+ @Override
+ public Simoon copy() {
+ return new Simoon(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/journeyintonyx/AthreosGodOfPassage.java b/Mage.Sets/src/mage/sets/journeyintonyx/AthreosGodOfPassage.java
index 46f26f68d5..788102604e 100644
--- a/Mage.Sets/src/mage/sets/journeyintonyx/AthreosGodOfPassage.java
+++ b/Mage.Sets/src/mage/sets/journeyintonyx/AthreosGodOfPassage.java
@@ -138,7 +138,7 @@ class AthreosGodOfPassageReturnEffect extends OneShotEffect {
}
if (opponent == null || !paid) {
if (game.getState().getZone(creature.getId()).equals(Zone.GRAVEYARD)) {
- controller.moveCards(creature, null, Zone.HAND, source, game);
+ controller.moveCards(game.getCard(creatureId), null, Zone.HAND, source, game);
}
}
}
diff --git a/Mage.Sets/src/mage/sets/judgment/KrosanReclamation.java b/Mage.Sets/src/mage/sets/judgment/KrosanReclamation.java
new file mode 100644
index 0000000000..70ba340902
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/judgment/KrosanReclamation.java
@@ -0,0 +1,145 @@
+/*
+ * 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.judgment;
+
+import java.util.List;
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.keyword.FlashbackAbility;
+import mage.cards.Card;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.constants.Rarity;
+import mage.constants.TimingRule;
+import mage.constants.Zone;
+import mage.filter.FilterCard;
+import mage.game.Game;
+import mage.players.Player;
+import mage.target.TargetCard;
+import mage.target.TargetPlayer;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class KrosanReclamation extends CardImpl {
+
+ public KrosanReclamation(UUID ownerId) {
+ super(ownerId, 122, "Krosan Reclamation", Rarity.UNCOMMON, new CardType[]{CardType.INSTANT}, "{1}{G}");
+ this.expansionSetCode = "JUD";
+
+ // Target player shuffles up to two target cards from his or her graveyard into his or her library.
+ this.getSpellAbility().addEffect(new KrosanReclamationEffect());
+ this.getSpellAbility().addTarget(new TargetPlayer());
+ this.getSpellAbility().addTarget(new KrosanReclamationTarget());
+
+ // Flashback {1}{G}
+ this.addAbility(new FlashbackAbility(new ManaCostsImpl("{1}{G}"), TimingRule.INSTANT));
+ }
+
+ public KrosanReclamation(final KrosanReclamation card) {
+ super(card);
+ }
+
+ @Override
+ public KrosanReclamation copy() {
+ return new KrosanReclamation(this);
+ }
+}
+
+class KrosanReclamationEffect extends OneShotEffect {
+
+ public KrosanReclamationEffect() {
+ super(Outcome.Neutral);
+ this.staticText = "Target player shuffles up to two target cards from his or her graveyard into his or her library";
+ }
+
+ public KrosanReclamationEffect(final KrosanReclamationEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public KrosanReclamationEffect copy() {
+ return new KrosanReclamationEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player player = game.getPlayer(source.getFirstTarget());
+ if (player != null) {
+ List targets = source.getTargets().get(1).getTargets();
+ boolean shuffle = false;
+ for (UUID targetId : targets) {
+ Card card = game.getCard(targetId);
+ if (card != null) {
+ if (player.getGraveyard().contains(card.getId())) {
+ player.getGraveyard().remove(card);
+ card.moveToZone(Zone.LIBRARY, source.getSourceId(), game, true);
+ shuffle = true;
+ }
+ }
+ }
+ if (shuffle) {
+ player.shuffleLibrary(game);
+ }
+ return true;
+ }
+ return false;
+ }
+}
+
+class KrosanReclamationTarget extends TargetCard {
+
+ public KrosanReclamationTarget() {
+ super(0, 2, Zone.GRAVEYARD, new FilterCard());
+ }
+
+ public KrosanReclamationTarget(final KrosanReclamationTarget target) {
+ super(target);
+ }
+
+ @Override
+ public boolean canTarget(UUID id, Ability source, Game game) {
+ Card card = game.getCard(id);
+ if (card != null && game.getState().getZone(card.getId()) == Zone.GRAVEYARD) {
+ UUID firstTarget = source.getFirstTarget();
+ if (firstTarget != null && game.getPlayer(firstTarget).getGraveyard().contains(id)) {
+ return filter.match(card, game);
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public KrosanReclamationTarget copy() {
+ return new KrosanReclamationTarget(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/judgment/NantukoTracer.java b/Mage.Sets/src/mage/sets/judgment/NantukoTracer.java
new file mode 100644
index 0000000000..e0752b818d
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/judgment/NantukoTracer.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.judgment;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.EntersBattlefieldTriggeredAbility;
+import mage.abilities.effects.common.PutOnLibraryTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.target.common.TargetCardInGraveyard;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class NantukoTracer extends CardImpl {
+
+ public NantukoTracer(UUID ownerId) {
+ super(ownerId, 125, "Nantuko Tracer", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{1}{G}");
+ this.expansionSetCode = "JUD";
+ this.subtype.add("Insect");
+ this.subtype.add("Druid");
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(1);
+
+ // When Nantuko Tracer enters the battlefield, you may put target card from a graveyard on the bottom of its owner's library.
+ Ability ability = new EntersBattlefieldTriggeredAbility(new PutOnLibraryTargetEffect(false), true);
+ ability.addTarget(new TargetCardInGraveyard());
+ this.addAbility(ability);
+ }
+
+ public NantukoTracer(final NantukoTracer card) {
+ super(card);
+ }
+
+ @Override
+ public NantukoTracer copy() {
+ return new NantukoTracer(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/judgment/PhantomNishoba.java b/Mage.Sets/src/mage/sets/judgment/PhantomNishoba.java
new file mode 100644
index 0000000000..51cb80804d
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/judgment/PhantomNishoba.java
@@ -0,0 +1,155 @@
+/*
+ * 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.judgment;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.DealsDamageGainLifeSourceTriggeredAbility;
+import mage.abilities.common.EntersBattlefieldAbility;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.effects.PreventionEffectImpl;
+import mage.abilities.effects.common.counter.AddCountersSourceEffect;
+import mage.abilities.keyword.TrampleAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.PhaseStep;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.counters.CounterType;
+import mage.game.Game;
+import mage.game.events.GameEvent;
+import mage.game.permanent.Permanent;
+import mage.game.turn.Step;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class PhantomNishoba extends CardImpl {
+
+ public PhantomNishoba(UUID ownerId) {
+ super(ownerId, 140, "Phantom Nishoba", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{5}{G}{W}");
+ this.expansionSetCode = "JUD";
+ this.subtype.add("Cat");
+ this.subtype.add("Beast");
+ this.subtype.add("Spirit");
+ this.power = new MageInt(0);
+ this.toughness = new MageInt(0);
+
+ // Trample
+ this.addAbility(TrampleAbility.getInstance());
+
+ // Phantom Nishoba enters the battlefield with seven +1/+1 counters on it.
+ this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(7), true), "with seven +1/+1 counters on it"));
+
+ // Whenever Phantom Nishoba deals damage, you gain that much life.
+ this.addAbility(new DealsDamageGainLifeSourceTriggeredAbility());
+
+ // If damage would be dealt to Phantom Nishoba, prevent that damage. Remove a +1/+1 counter from Phantom Nishoba.
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new PhantomNishobaPreventionEffect()));
+ }
+
+ public PhantomNishoba(final PhantomNishoba card) {
+ super(card);
+ }
+
+ @Override
+ public PhantomNishoba copy() {
+ return new PhantomNishoba(this);
+ }
+}
+
+class PhantomNishobaPreventionEffect extends PreventionEffectImpl {
+
+ // remember turn and phase step to check if counter in this step was already removed
+ private int turn = 0;
+ private Step combatPhaseStep = null;
+
+ public PhantomNishobaPreventionEffect() {
+ super(Duration.WhileOnBattlefield);
+ staticText = "If damage would be dealt to {this}, prevent that damage. Remove a +1/+1 counter from {this}";
+ }
+
+ public PhantomNishobaPreventionEffect(final PhantomNishobaPreventionEffect effect) {
+ super(effect);
+ this.turn = effect.turn;
+ this.combatPhaseStep = effect.combatPhaseStep;
+ }
+
+ @Override
+ public PhantomNishobaPreventionEffect copy() {
+ return new PhantomNishobaPreventionEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ return true;
+ }
+
+ @Override
+ public boolean replaceEvent(GameEvent event, Ability source, Game game) {
+ preventDamageAction(event, source, game);
+
+ Permanent permanent = game.getPermanent(source.getSourceId());
+ if (permanent != null) {
+ boolean removeCounter = true;
+ // check if in the same combat damage step already a counter was removed
+ if (game.getTurn().getPhase().getStep().getType().equals(PhaseStep.COMBAT_DAMAGE)) {
+ if (game.getTurnNum() == turn
+ && game.getTurn().getStep().equals(combatPhaseStep)) {
+ removeCounter = false;
+ } else {
+ turn = game.getTurnNum();
+ combatPhaseStep = game.getTurn().getStep();
+ }
+ }
+
+ if(removeCounter && permanent.getCounters().containsKey(CounterType.P1P1)) {
+ StringBuilder sb = new StringBuilder(permanent.getName()).append(": ");
+ permanent.removeCounters(CounterType.P1P1.createInstance(), game);
+ sb.append("Removed a +1/+1 counter ");
+ game.informPlayers(sb.toString());
+ }
+ }
+
+ return false;
+ }
+
+ @Override
+ public boolean applies(GameEvent event, Ability source, Game game) {
+ if (super.applies(event, source, game)) {
+ if (event.getTargetId().equals(source.getSourceId())) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+}
\ No newline at end of file
diff --git a/Mage.Sets/src/mage/sets/khansoftarkir/VillainousWealth.java b/Mage.Sets/src/mage/sets/khansoftarkir/VillainousWealth.java
index 05f841c726..919ade1253 100644
--- a/Mage.Sets/src/mage/sets/khansoftarkir/VillainousWealth.java
+++ b/Mage.Sets/src/mage/sets/khansoftarkir/VillainousWealth.java
@@ -33,6 +33,8 @@ import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect;
import mage.cards.Card;
import mage.cards.CardImpl;
+import mage.cards.Cards;
+import mage.cards.CardsImpl;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.Rarity;
@@ -41,7 +43,6 @@ import mage.filter.Filter;
import mage.filter.FilterCard;
import mage.filter.common.FilterNonlandCard;
import mage.filter.predicate.mageobject.ConvertedManaCostPredicate;
-import mage.game.ExileZone;
import mage.game.Game;
import mage.players.Player;
import mage.target.common.TargetCardInExile;
@@ -58,7 +59,6 @@ public class VillainousWealth extends CardImpl {
super(ownerId, 211, "Villainous Wealth", Rarity.RARE, new CardType[]{CardType.SORCERY}, "{X}{B}{G}{U}");
this.expansionSetCode = "KTK";
-
// Target opponent exiles the top X cards of his or her library. You may cast any number of nonland cards with converted mana cost X or less from among them without paying their mana cost.
this.getSpellAbility().addTarget(new TargetOpponent());
this.getSpellAbility().addEffect(new VillainousWealthEffect());
@@ -101,30 +101,26 @@ class VillainousWealthEffect extends OneShotEffect {
filter.add(new ConvertedManaCostPredicate(Filter.ComparisonType.LessThan, source.getManaCostsToPay().getX() + 1));
UUID exileId = CardUtil.getCardExileZoneId(game, source);
if (player != null) {
-
- // putting cards to exile shouldn't end the game, so getting minimun available
- int cardsCount = Math.min(source.getManaCostsToPay().getX(), player.getLibrary().size());
- for (int i = 0; i < cardsCount; i++) {
- Card card = player.getLibrary().getFromTop(game);
- if (card != null) {
- controller.moveCardToExileWithInfo(card, exileId, mageObject.getIdName(), source.getSourceId(), game, Zone.LIBRARY, true);
+ Cards cardsToExile = new CardsImpl();
+ cardsToExile.addAll(player.getLibrary().getTopCards(game, source.getManaCostsToPay().getX()));
+ controller.moveCards(cardsToExile, null, Zone.EXILED, source, game, true);
+ if (controller.chooseUse(Outcome.PlayForFree, "Cast cards exiled with " + mageObject.getLogName() + " without paying its mana cost?", source, game)) {
+ OuterLoop:
+ while (cardsToExile.count(filter, game) > 0) {
+ TargetCardInExile target = new TargetCardInExile(0, 1, filter, exileId, false);
+ while (cardsToExile.count(filter, game) > 0 && controller.choose(Outcome.PlayForFree, cardsToExile, target, game)) {
+ Card card = game.getCard(target.getFirstTarget());
+ if (card != null) {
+ controller.cast(card.getSpellAbility(), game, true);
+ cardsToExile.remove(card);
+ } else {
+ break OuterLoop;
+ }
+ target.clearChosen();
+ }
}
}
}
- ExileZone exileZone = game.getExile().getExileZone(exileId);
- while (exileZone != null && exileZone.count(filter, game) > 0
- && controller.chooseUse(Outcome.PlayForFree, "Cast cards exiled with " + mageObject.getLogName() +" without paying its mana cost?", source, game)) {
- TargetCardInExile target = new TargetCardInExile(0,1, filter, exileId, false);
- while (exileZone.count(filter, game) > 0 && controller.choose(Outcome.PlayForFree, exileZone, target, game)) {
- Card card = game.getCard(target.getFirstTarget());
- if (card != null) {
- controller.cast(card.getSpellAbility(), game, true);
- } else {
- break;
- }
- target.clearChosen();
- }
- }
return true;
}
diff --git a/Mage.Sets/src/mage/sets/legends/HellsCaretaker.java b/Mage.Sets/src/mage/sets/legends/HellsCaretaker.java
new file mode 100644
index 0000000000..1c12ff1dc2
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/legends/HellsCaretaker.java
@@ -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.legends;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class HellsCaretaker extends mage.sets.ninthedition.HellsCaretaker {
+
+ public HellsCaretaker(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 19;
+ this.expansionSetCode = "LEG";
+ }
+
+ public HellsCaretaker(final HellsCaretaker card) {
+ super(card);
+ }
+
+ @Override
+ public HellsCaretaker copy() {
+ return new HellsCaretaker(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/legends/KeiTakahashi.java b/Mage.Sets/src/mage/sets/legends/KeiTakahashi.java
new file mode 100644
index 0000000000..ebc26302d2
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/legends/KeiTakahashi.java
@@ -0,0 +1,54 @@
+/*
+ * 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.legends;
+
+import java.util.UUID;
+import mage.constants.Rarity;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class KeiTakahashi extends mage.sets.masterseditioniii.KeiTakahashi {
+
+ public KeiTakahashi(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 278;
+ this.expansionSetCode = "LEG";
+ this.rarity = Rarity.RARE;
+ }
+
+ public KeiTakahashi(final KeiTakahashi card) {
+ super(card);
+ }
+
+ @Override
+ public KeiTakahashi copy() {
+ return new KeiTakahashi(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/legends/PresenceOfTheMaster.java b/Mage.Sets/src/mage/sets/legends/PresenceOfTheMaster.java
new file mode 100644
index 0000000000..d09c89d9de
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/legends/PresenceOfTheMaster.java
@@ -0,0 +1,130 @@
+/*
+ * 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.legends;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.TriggeredAbilityImpl;
+import mage.abilities.effects.Effect;
+import mage.abilities.effects.OneShotEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.game.Game;
+import mage.game.events.GameEvent;
+import mage.game.stack.Spell;
+import mage.target.targetpointer.FixedTarget;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class PresenceOfTheMaster extends CardImpl {
+
+ public PresenceOfTheMaster(UUID ownerId) {
+ super(ownerId, 200, "Presence of the Master", Rarity.UNCOMMON, new CardType[]{CardType.ENCHANTMENT}, "{3}{W}");
+ this.expansionSetCode = "LEG";
+
+ // Whenever a player casts an enchantment spell, counter it.
+ this.addAbility(new PresenceOfTheMasterTriggeredAbility());
+ }
+
+ public PresenceOfTheMaster(final PresenceOfTheMaster card) {
+ super(card);
+ }
+
+ @Override
+ public PresenceOfTheMaster copy() {
+ return new PresenceOfTheMaster(this);
+ }
+}
+
+class PresenceOfTheMasterTriggeredAbility extends TriggeredAbilityImpl {
+
+
+ public PresenceOfTheMasterTriggeredAbility() {
+ super(Zone.BATTLEFIELD, new CounterEffect());
+ }
+
+
+ public PresenceOfTheMasterTriggeredAbility(final PresenceOfTheMasterTriggeredAbility abiltity) {
+ super(abiltity);
+ }
+
+ @java.lang.Override
+ public PresenceOfTheMasterTriggeredAbility copy() {
+ return new PresenceOfTheMasterTriggeredAbility(this);
+ }
+
+ @java.lang.Override
+ public boolean checkEventType(GameEvent event, Game game) {
+ return event.getType() == GameEvent.EventType.SPELL_CAST;
+ }
+
+ @java.lang.Override
+ public boolean checkTrigger(GameEvent event, Game game) {
+ Spell spell = game.getStack().getSpell(event.getTargetId());
+ if (spell != null && (spell.getCardType().contains(CardType.ENCHANTMENT))){
+ for (Effect effect : this.getEffects()) {
+ effect.setTargetPointer(new FixedTarget(event.getTargetId()));
+ }
+ return true;
+ }
+ return false;
+ }
+
+ @java.lang.Override
+ public String getRule() {
+ return "Whenever a player casts an enchantment spell, counter it";
+ }
+}
+
+
+class CounterEffect extends OneShotEffect {
+
+ public CounterEffect() {
+ super(Outcome.Detriment);
+ }
+
+ public CounterEffect(final CounterEffect effect) {
+ super(effect);
+ }
+
+ @java.lang.Override
+ public CounterEffect copy() {
+ return new CounterEffect(this);
+ }
+
+ @java.lang.Override
+ public boolean apply(Game game, Ability source) {
+ return game.getStack().counter(this.getTargetPointer().getFirst(game, source), source.getSourceId(), game);
+ }
+
+}
diff --git a/Mage.Sets/src/mage/sets/legends/Transmutation.java b/Mage.Sets/src/mage/sets/legends/Transmutation.java
new file mode 100644
index 0000000000..cd32941e71
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/legends/Transmutation.java
@@ -0,0 +1,61 @@
+/*
+ * 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.legends;
+
+import java.util.UUID;
+import mage.abilities.effects.common.continuous.SwitchPowerToughnessTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class Transmutation extends CardImpl {
+
+ public Transmutation(UUID ownerId) {
+ super(ownerId, 37, "Transmutation", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{1}{B}");
+ this.expansionSetCode = "LEG";
+
+ // Switch target creature's power and toughness until end of turn.
+ this.getSpellAbility().addEffect(new SwitchPowerToughnessTargetEffect(Duration.EndOfTurn));
+ this.getSpellAbility().addTarget(new TargetCreaturePermanent());
+ }
+
+ public Transmutation(final Transmutation card) {
+ super(card);
+ }
+
+ @Override
+ public Transmutation copy() {
+ return new Transmutation(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/legends/TriassicEgg.java b/Mage.Sets/src/mage/sets/legends/TriassicEgg.java
new file mode 100644
index 0000000000..f7c9714cc4
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/legends/TriassicEgg.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.legends;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.Mode;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.condition.common.SourceHasCounterCondition;
+import mage.abilities.costs.common.SacrificeSourceCost;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.costs.mana.GenericManaCost;
+import mage.abilities.decorator.ConditionalActivatedAbility;
+import mage.abilities.effects.common.PutPermanentOnBattlefieldEffect;
+import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect;
+import mage.abilities.effects.common.counter.AddCountersSourceEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.counters.CounterType;
+import mage.filter.common.FilterCreatureCard;
+import mage.target.Target;
+import mage.target.common.TargetCardInYourGraveyard;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class TriassicEgg extends CardImpl {
+
+ public TriassicEgg(UUID ownerId) {
+ super(ownerId, 242, "Triassic Egg", Rarity.RARE, new CardType[]{CardType.ARTIFACT}, "{4}");
+ this.expansionSetCode = "LEG";
+
+ // {3}, {tap}: Put a hatchling counter on Triassic Egg.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
+ new AddCountersSourceEffect(CounterType.HATCHLING.createInstance(), true),
+ new GenericManaCost(3));
+ ability.addCost(new TapSourceCost());
+ this.addAbility(ability);
+
+ // Sacrifice Triassic Egg: Choose one - You may put a creature card from your hand onto the battlefield;
+ ability = new ConditionalActivatedAbility(Zone.BATTLEFIELD,
+ new PutPermanentOnBattlefieldEffect(new FilterCreatureCard("a creature card")),
+ new SacrificeSourceCost(),
+ new SourceHasCounterCondition(CounterType.HATCHLING, 2, Integer.MAX_VALUE),
+ "Sacrifice Triassic Egg: Choose one - You may put a creature card from your hand onto the battlefield; or return target creature card from your graveyard to the battlefield. Activate this ability only if two or more hatchling counters are on {this}.");
+
+ // or return target creature card from your graveyard to the battlefield. Activate this ability only if two or more hatchling counters are on Triassic Egg.
+ Mode mode = new Mode();
+ mode.getEffects().add(new ReturnFromGraveyardToBattlefieldTargetEffect());
+ Target target = new TargetCardInYourGraveyard(new FilterCreatureCard("creature card from your graveyard"));
+ mode.getTargets().add(target);
+ ability.addMode(mode);
+
+ this.addAbility(ability);
+ }
+
+ public TriassicEgg(final TriassicEgg card) {
+ super(card);
+ }
+
+ @Override
+ public TriassicEgg copy() {
+ return new TriassicEgg(this);
+ }
+}
\ No newline at end of file
diff --git a/Mage.Sets/src/mage/sets/legions/AvenRedeemer.java b/Mage.Sets/src/mage/sets/legions/AvenRedeemer.java
new file mode 100644
index 0000000000..e8cfc75f38
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/legions/AvenRedeemer.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.legions;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.effects.common.PreventDamageToTargetEffect;
+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.target.common.TargetCreatureOrPlayer;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class AvenRedeemer extends CardImpl {
+
+ public AvenRedeemer(UUID ownerId) {
+ super(ownerId, 3, "Aven Redeemer", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{3}{W}");
+ this.expansionSetCode = "LGN";
+ this.subtype.add("Bird");
+ this.subtype.add("Cleric");
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(2);
+
+ // Flying
+ this.addAbility(FlyingAbility.getInstance());
+
+ // {tap}: Prevent the next 2 damage that would be dealt to target creature or player this turn.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new PreventDamageToTargetEffect(Duration.EndOfTurn, 2), new TapSourceCost());
+ ability.addTarget(new TargetCreatureOrPlayer());
+ this.addAbility(ability);
+ }
+
+ public AvenRedeemer(final AvenRedeemer card) {
+ super(card);
+ }
+
+ @Override
+ public AvenRedeemer copy() {
+ return new AvenRedeemer(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/legions/Glowrider.java b/Mage.Sets/src/mage/sets/legions/Glowrider.java
new file mode 100644
index 0000000000..15dbdef8c4
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/legions/Glowrider.java
@@ -0,0 +1,109 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.legions;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.SpellAbility;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.effects.common.cost.CostModificationEffectImpl;
+import mage.abilities.keyword.FlashbackAbility;
+import mage.cards.Card;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.CostModificationType;
+import mage.constants.Duration;
+import mage.constants.Outcome;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.game.Game;
+import mage.util.CardUtil;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class Glowrider extends CardImpl {
+
+ public Glowrider(UUID ownerId) {
+ super(ownerId, 15, "Glowrider", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{2}{W}");
+ this.expansionSetCode = "LGN";
+ this.subtype.add("Human");
+ this.subtype.add("Cleric");
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(1);
+
+ // Noncreature spells cost {1} more to cast.
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GlowriderCostReductionEffect()));
+ }
+
+ public Glowrider(final Glowrider card) {
+ super(card);
+ }
+
+ @Override
+ public Glowrider copy() {
+ return new Glowrider(this);
+ }
+}
+
+class GlowriderCostReductionEffect extends CostModificationEffectImpl {
+
+ GlowriderCostReductionEffect ( ) {
+ super(Duration.WhileOnBattlefield, Outcome.Benefit, CostModificationType.INCREASE_COST);
+ staticText = "Noncreature spells cost {1} more to cast";
+ }
+
+ GlowriderCostReductionEffect(GlowriderCostReductionEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source, Ability abilityToModify) {
+ CardUtil.increaseCost(abilityToModify, 1);
+ return true;
+ }
+
+ @Override
+ public boolean applies(Ability abilityToModify, Ability source, Game game) {
+ if (abilityToModify instanceof SpellAbility || abilityToModify instanceof FlashbackAbility) {
+ Card card = game.getCard(abilityToModify.getSourceId());
+ if (card != null && !card.getCardType().contains(CardType.CREATURE)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public GlowriderCostReductionEffect copy() {
+ return new GlowriderCostReductionEffect(this);
+ }
+
+}
diff --git a/Mage.Sets/src/mage/sets/legions/GoblinGrappler.java b/Mage.Sets/src/mage/sets/legions/GoblinGrappler.java
new file mode 100644
index 0000000000..445dffe783
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/legions/GoblinGrappler.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.legions;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.keyword.ProvokeAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class GoblinGrappler extends CardImpl {
+
+ public GoblinGrappler(UUID ownerId) {
+ super(ownerId, 100, "Goblin Grappler", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{R}");
+ this.expansionSetCode = "LGN";
+ this.subtype.add("Goblin");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // Provoke
+ this.addAbility(new ProvokeAbility());
+ }
+
+ public GoblinGrappler(final GoblinGrappler card) {
+ super(card);
+ }
+
+ @Override
+ public GoblinGrappler copy() {
+ return new GoblinGrappler(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/limitedalpha/Deathgrip.java b/Mage.Sets/src/mage/sets/limitedalpha/Deathgrip.java
new file mode 100644
index 0000000000..021a7712be
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/limitedalpha/Deathgrip.java
@@ -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.limitedalpha;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author anonymous
+ */
+public class Deathgrip extends mage.sets.limitedbeta.Deathgrip {
+
+ public Deathgrip(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 9;
+ this.expansionSetCode = "LEA";
+ }
+
+ public Deathgrip(final Deathgrip card) {
+ super(card);
+ }
+
+ @Override
+ public Deathgrip copy() {
+ return new Deathgrip(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/limitedbeta/Deathgrip.java b/Mage.Sets/src/mage/sets/limitedbeta/Deathgrip.java
new file mode 100644
index 0000000000..7d7bb2a9ce
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/limitedbeta/Deathgrip.java
@@ -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.limitedbeta;
+
+import java.util.UUID;
+import mage.ObjectColor;
+import mage.abilities.effects.common.CounterTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.filter.FilterSpell;
+import mage.filter.predicate.mageobject.ColorPredicate;
+import mage.target.TargetSpell;
+
+/**
+ *
+ * @author markedagain
+ */
+public class Deathgrip extends CardImpl {
+ private static final FilterSpell filter = new FilterSpell("green spell");
+ static{
+ filter.add(new ColorPredicate(ObjectColor.GREEN));
+ }
+
+ public Deathgrip(UUID ownerId) {
+ super(ownerId, 9, "Deathgrip", Rarity.UNCOMMON, new CardType[]{CardType.ENCHANTMENT}, "{B}{B}");
+ this.expansionSetCode = "LEB";
+
+ // {B}{B}: Counter target green spell.
+ this.getSpellAbility().addEffect(new CounterTargetEffect());
+ this.getSpellAbility().addTarget(new TargetSpell(filter));
+ }
+
+ public Deathgrip(final Deathgrip card) {
+ super(card);
+ }
+
+ @Override
+ public Deathgrip copy() {
+ return new Deathgrip(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/lorwyn/TideshaperMystic.java b/Mage.Sets/src/mage/sets/lorwyn/TideshaperMystic.java
new file mode 100644
index 0000000000..38dfda46df
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/lorwyn/TideshaperMystic.java
@@ -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.lorwyn;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.ActivateIfConditionActivatedAbility;
+import mage.abilities.condition.common.MyTurnCondition;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.effects.common.continuous.BecomesBasicLandTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.target.common.TargetLandPermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class TideshaperMystic extends CardImpl {
+
+ public TideshaperMystic(UUID ownerId) {
+ super(ownerId, 93, "Tideshaper Mystic", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{U}");
+ this.expansionSetCode = "LRW";
+ this.subtype.add("Merfolk");
+ this.subtype.add("Wizard");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // {tap}: Target land becomes the basic land type of your choice until end of turn. Activate this ability only during your turn.
+ Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD,
+ new BecomesBasicLandTargetEffect(Duration.EndOfTurn), new TapSourceCost(), MyTurnCondition.getInstance());
+ ability.addTarget(new TargetLandPermanent());
+ this.addAbility(ability);
+ }
+
+ public TideshaperMystic(final TideshaperMystic card) {
+ super(card);
+ }
+
+ @Override
+ public TideshaperMystic copy() {
+ return new TideshaperMystic(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/lorwyn/WortBoggartAuntie.java b/Mage.Sets/src/mage/sets/lorwyn/WortBoggartAuntie.java
index 2d319bc074..05c93371df 100644
--- a/Mage.Sets/src/mage/sets/lorwyn/WortBoggartAuntie.java
+++ b/Mage.Sets/src/mage/sets/lorwyn/WortBoggartAuntie.java
@@ -27,21 +27,20 @@
*/
package mage.sets.lorwyn;
-import mage.constants.CardType;
-import mage.constants.Rarity;
+import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.effects.common.ReturnToHandTargetEffect;
import mage.abilities.keyword.FearAbility;
import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
import mage.constants.TargetController;
import mage.filter.FilterCard;
import mage.filter.predicate.mageobject.SubtypePredicate;
import mage.target.common.TargetCardInYourGraveyard;
-import java.util.UUID;
-
/**
*
* @author Loki
@@ -61,10 +60,11 @@ public class WortBoggartAuntie extends CardImpl {
this.subtype.add("Goblin");
this.subtype.add("Shaman");
-
this.power = new MageInt(3);
this.toughness = new MageInt(3);
+
this.addAbility(FearAbility.getInstance());
+
// At the beginning of your upkeep, you may return target Goblin card from your graveyard to your hand.
Ability ability = new BeginningOfUpkeepTriggeredAbility(new ReturnToHandTargetEffect(), TargetController.YOU, true);
ability.addTarget(new TargetCardInYourGraveyard(filter));
diff --git a/Mage.Sets/src/mage/sets/magic2011/GaeasRevenge.java b/Mage.Sets/src/mage/sets/magic2011/GaeasRevenge.java
index d09fae3189..1c174e38e8 100644
--- a/Mage.Sets/src/mage/sets/magic2011/GaeasRevenge.java
+++ b/Mage.Sets/src/mage/sets/magic2011/GaeasRevenge.java
@@ -1,16 +1,16 @@
/*
* 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
@@ -20,19 +20,14 @@
* 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.magic2011;
import java.util.UUID;
-import mage.constants.CardType;
-import mage.constants.Duration;
-import mage.constants.Rarity;
-import mage.constants.Zone;
import mage.MageInt;
import mage.ObjectColor;
import mage.abilities.common.SimpleStaticAbility;
@@ -40,6 +35,11 @@ import mage.abilities.effects.common.CantBeCounteredSourceEffect;
import mage.abilities.effects.common.CantBeTargetedSourceEffect;
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;
+import mage.filter.FilterObject;
import mage.filter.FilterStackObject;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.ColorPredicate;
@@ -50,7 +50,7 @@ import mage.filter.predicate.mageobject.ColorPredicate;
*/
public class GaeasRevenge extends CardImpl {
- private static final FilterStackObject filter = new FilterStackObject("nongreen spells or abilities from nongreen sources");
+ private static final FilterObject filter = new FilterStackObject("nongreen spells or abilities from nongreen sources");
static {
filter.add(Predicates.not(new ColorPredicate(ObjectColor.GREEN)));
diff --git a/Mage.Sets/src/mage/sets/magic2014/DoorOfDestinies.java b/Mage.Sets/src/mage/sets/magic2014/DoorOfDestinies.java
index 5bc3c1c289..95ef1ee610 100644
--- a/Mage.Sets/src/mage/sets/magic2014/DoorOfDestinies.java
+++ b/Mage.Sets/src/mage/sets/magic2014/DoorOfDestinies.java
@@ -155,7 +155,7 @@ class AddCounterAbility extends TriggeredAbilityImpl {
filter.add(new ControllerPredicate(TargetController.YOU));
filter.add(new SubtypePredicate(subtype));
Spell spell = game.getStack().getSpell(event.getTargetId());
- if (spell != null && filter.match(spell, controllerId, game)) {
+ if (spell != null && filter.match(spell, getSourceId(), getControllerId(), game)) {
return true;
}
}
@@ -169,7 +169,6 @@ class AddCounterAbility extends TriggeredAbilityImpl {
}
}
-
class BoostCreatureEffectEffect extends ContinuousEffectImpl {
private static final FilterCreaturePermanent filter = new FilterCreaturePermanent();
@@ -194,7 +193,7 @@ class BoostCreatureEffectEffect extends ContinuousEffectImpl {
if (permanent != null) {
String subtype = (String) game.getState().getValue(permanent.getId() + "_type");
if (subtype != null) {
- for (Permanent perm: game.getBattlefield().getAllActivePermanents(filter, source.getControllerId(), game)) {
+ for (Permanent perm : game.getBattlefield().getAllActivePermanents(filter, source.getControllerId(), game)) {
if (perm.hasSubtype(subtype)) {
int boost = permanent.getCounters().getCount(CounterType.CHARGE);
perm.addPower(boost);
diff --git a/Mage.Sets/src/mage/sets/magicorigins/PyromancersGoggles.java b/Mage.Sets/src/mage/sets/magicorigins/PyromancersGoggles.java
index f9729a180d..02e4590a04 100644
--- a/Mage.Sets/src/mage/sets/magicorigins/PyromancersGoggles.java
+++ b/Mage.Sets/src/mage/sets/magicorigins/PyromancersGoggles.java
@@ -112,7 +112,7 @@ class PyromancersGogglesTriggeredAbility extends TriggeredAbilityImpl {
public boolean checkTrigger(GameEvent event, Game game) {
if (event.getData().equals(abilityOriginalId)) {
Spell spell = game.getStack().getSpell(event.getTargetId());
- if (spell != null && filter.match(spell, getControllerId(), game)) {
+ if (spell != null && filter.match(spell, getSourceId(), getControllerId(), game)) {
for (Effect effect : getEffects()) {
effect.setTargetPointer(new FixedTarget(event.getTargetId()));
}
diff --git a/Mage.Sets/src/mage/sets/mastersedition/GoblinsOfTheFlarg.java b/Mage.Sets/src/mage/sets/mastersedition/GoblinsOfTheFlarg.java
new file mode 100644
index 0000000000..0fa43306c5
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/mastersedition/GoblinsOfTheFlarg.java
@@ -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.mastersedition;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class GoblinsOfTheFlarg extends mage.sets.thedark.GoblinsOfTheFlarg {
+
+ public GoblinsOfTheFlarg(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 98;
+ this.expansionSetCode = "MED";
+ }
+
+ public GoblinsOfTheFlarg(final GoblinsOfTheFlarg card) {
+ super(card);
+ }
+
+ @Override
+ public GoblinsOfTheFlarg copy() {
+ return new GoblinsOfTheFlarg(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/mastersedition/ShieldOfTheAges.java b/Mage.Sets/src/mage/sets/mastersedition/ShieldOfTheAges.java
new file mode 100644
index 0000000000..41cb5a5c32
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/mastersedition/ShieldOfTheAges.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.mastersedition;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.mana.GenericManaCost;
+import mage.abilities.effects.PreventionEffectImpl;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.game.Game;
+import mage.game.events.GameEvent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class ShieldOfTheAges extends CardImpl {
+
+ public ShieldOfTheAges(UUID ownerId) {
+ super(ownerId, 165, "Shield of the Ages", Rarity.UNCOMMON, new CardType[]{CardType.ARTIFACT}, "{2}");
+ this.expansionSetCode = "MED";
+
+ // {2}: Prevent the next 1 damage that would be dealt to you this turn.
+ this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new ShieldOfTheAgesEffect(), new GenericManaCost(2)));
+ }
+
+ public ShieldOfTheAges(final ShieldOfTheAges card) {
+ super(card);
+ }
+
+ @Override
+ public ShieldOfTheAges copy() {
+ return new ShieldOfTheAges(this);
+ }
+}
+
+class ShieldOfTheAgesEffect extends PreventionEffectImpl {
+
+ public ShieldOfTheAgesEffect() {
+ super(Duration.EndOfTurn);
+ this.staticText = "Prevent the next 1 damage that would be dealt to you this turn";
+ }
+
+ public ShieldOfTheAgesEffect(final ShieldOfTheAgesEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public ShieldOfTheAgesEffect copy() {
+ return new ShieldOfTheAgesEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ return true;
+ }
+
+ @Override
+ public boolean replaceEvent(GameEvent event, Ability source, Game game) {
+ GameEvent preventEvent = new GameEvent(GameEvent.EventType.PREVENT_DAMAGE,
+ source.getControllerId(), source.getSourceId(), source.getControllerId(), event.getAmount(), false);
+ if (!game.replaceEvent(preventEvent)) {
+ int damage = event.getAmount();
+ if (damage > 0) {
+ event.setAmount(damage - 1);
+ this.used = true;
+ game.fireEvent(GameEvent.getEvent(GameEvent.EventType.PREVENTED_DAMAGE,
+ source.getControllerId(), source.getSourceId(), source.getControllerId(), 1));
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public boolean applies(GameEvent event, Ability source, Game game) {
+ if (!this.used && super.applies(event, source, game) && event.getTargetId().equals(source.getControllerId())) {
+ return true;
+ }
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/Mage.Sets/src/mage/sets/mastersedition/SpectralBears.java b/Mage.Sets/src/mage/sets/mastersedition/SpectralBears.java
new file mode 100644
index 0000000000..e364e177ea
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/mastersedition/SpectralBears.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.mastersedition;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.ObjectColor;
+import mage.abilities.TriggeredAbilityImpl;
+import mage.abilities.effects.common.DontUntapInControllersNextUntapStepSourceEffect;
+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.ColorPredicate;
+import mage.filter.predicate.permanent.TokenPredicate;
+import mage.game.Game;
+import mage.game.events.GameEvent;
+import mage.game.events.GameEvent.EventType;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class SpectralBears extends CardImpl {
+
+ public SpectralBears(UUID ownerId) {
+ super(ownerId, 131, "Spectral Bears", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{1}{G}");
+ this.expansionSetCode = "HML";
+ this.subtype.add("Bear");
+ this.subtype.add("Spirit");
+ this.power = new MageInt(3);
+ this.toughness = new MageInt(3);
+
+ // Whenever Spectral Bears attacks, if defending player controls no black nontoken permanents, it doesn't untap during your next untap step.
+ this.addAbility(new SpectralBearsTriggeredAbility());
+ }
+
+ public SpectralBears(final SpectralBears card) {
+ super(card);
+ }
+
+ @Override
+ public SpectralBears copy() {
+ return new SpectralBears(this);
+ }
+}
+
+class SpectralBearsTriggeredAbility extends TriggeredAbilityImpl {
+
+ private static final FilterPermanent filter = new FilterPermanent("black nontoken permanents");
+
+ static {
+ filter.add(new ColorPredicate(ObjectColor.BLACK));
+ filter.add(Predicates.not(new TokenPredicate()));
+ }
+
+ public SpectralBearsTriggeredAbility() {
+ super(Zone.BATTLEFIELD, new DontUntapInControllersNextUntapStepSourceEffect());
+ }
+
+ public SpectralBearsTriggeredAbility(final SpectralBearsTriggeredAbility ability) {
+ super(ability);
+ }
+
+ @Override
+ public SpectralBearsTriggeredAbility copy() {
+ return new SpectralBearsTriggeredAbility(this);
+ }
+
+ @Override
+ public boolean checkEventType(GameEvent event, Game game) {
+ return event.getType() == EventType.ATTACKER_DECLARED;
+ }
+
+ @Override
+ public boolean checkTrigger(GameEvent event, Game game) {
+ return event.getSourceId().equals(this.getSourceId());
+ }
+
+ @Override
+ public boolean checkInterveningIfClause(Game game) {
+ UUID defendingPlayerId = game.getCombat().getDefendingPlayerId(getSourceId(), game);
+ return defendingPlayerId != null && game.getBattlefield().countAll(filter, defendingPlayerId, game) < 1;
+ }
+
+ @Override
+ public String getRule() {
+ return "Whenever {this} attacks, if defending player controls no black nontoken permanents, it doesn't untap during your next untap step.";
+ }
+}
\ No newline at end of file
diff --git a/Mage.Sets/src/mage/sets/masterseditionii/ForgottenLore.java b/Mage.Sets/src/mage/sets/masterseditionii/ForgottenLore.java
new file mode 100644
index 0000000000..3fc2f88f87
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/masterseditionii/ForgottenLore.java
@@ -0,0 +1,140 @@
+/*
+ * 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.masterseditionii;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.costs.Cost;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.OneShotEffect;
+import mage.cards.Card;
+import mage.cards.CardImpl;
+import mage.cards.Cards;
+import mage.cards.CardsImpl;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.filter.FilterCard;
+import mage.filter.predicate.Predicates;
+import mage.filter.predicate.mageobject.CardIdPredicate;
+import mage.filter.predicate.other.OwnerIdPredicate;
+import mage.game.Game;
+import mage.players.Player;
+import mage.target.common.TargetCardInGraveyard;
+import mage.target.common.TargetOpponent;
+/**
+ *
+ * @author LoneFox
+ */
+public class ForgottenLore extends CardImpl {
+
+ public ForgottenLore(UUID ownerId) {
+ super(ownerId, 164, "Forgotten Lore", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{G}");
+ this.expansionSetCode = "ME2";
+
+ // Target opponent chooses a card in your graveyard. You may pay {G}. If you do, repeat this process except that opponent can't choose a card already chosen for Forgotten Lore. Then put the last chosen card into your hand.
+ this.getSpellAbility().addEffect(new ForgottenLoreEffect());
+ this.getSpellAbility().addTarget(new TargetOpponent());
+ }
+
+ public ForgottenLore(final ForgottenLore card) {
+ super(card);
+ }
+
+ @Override
+ public ForgottenLore copy() {
+ return new ForgottenLore(this);
+ }
+}
+
+class ForgottenLoreEffect extends OneShotEffect {
+
+ public ForgottenLoreEffect() {
+ super(Outcome.Benefit);
+ staticText = "Target opponent chooses a card in your graveyard. You may pay {G}. If you do, repeat this process except that opponent can't choose a card already chosen for {this}. Then put the last chosen card into your hand.";
+ }
+
+ public ForgottenLoreEffect(final ForgottenLoreEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public ForgottenLoreEffect copy() {
+ return new ForgottenLoreEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player you = game.getPlayer(source.getControllerId());
+ Player opponent = game.getPlayer(targetPointer.getFirst(game, source));
+ if(you != null && opponent != null)
+ {
+ FilterCard filter = new FilterCard();
+ filter.add(new OwnerIdPredicate(you.getId()));
+ Cost cost = new ManaCostsImpl("{G}");
+ TargetCardInGraveyard chosenCard;
+ Card card = null;
+ boolean done = false;
+ do {
+ chosenCard = new TargetCardInGraveyard(filter);
+ chosenCard.setNotTarget(true);
+ if(chosenCard.canChoose(opponent.getId(), game)) {
+ opponent.chooseTarget(Outcome.ReturnToHand, chosenCard, source, game);
+ card = game.getCard(chosenCard.getFirstTarget());
+ filter.add(Predicates.not(new CardIdPredicate(card.getId())));
+ game.informPlayers("Forgotten Lore: " + opponent.getLogName() + " has chosen " + card.getLogName());
+ }
+ else {
+ done = true;
+ }
+
+ if(!done) {
+ if(cost.canPay(source, source.getSourceId(), you.getId(), game) && you.chooseUse(Outcome.Benefit, "Pay {G} to choose a different card ?", source, game)) {
+ cost.clearPaid();
+ if(!cost.pay(source, game, source.getSourceId(), you.getId(), false)) {
+ done = true;
+ }
+ }
+ else {
+ done = true;
+ }
+ }
+
+ } while(!done);
+
+ if(card != null) {
+ Cards cardsToHand = new CardsImpl();
+ cardsToHand.add(card);
+ you.moveCards(cardsToHand, Zone.GRAVEYARD, Zone.HAND, source, game);
+ }
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/masterseditionii/KrovikanFetish.java b/Mage.Sets/src/mage/sets/masterseditionii/KrovikanFetish.java
new file mode 100644
index 0000000000..dd4f06c1a9
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/masterseditionii/KrovikanFetish.java
@@ -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.masterseditionii;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class KrovikanFetish extends mage.sets.fifthedition.KrovikanFetish {
+
+ public KrovikanFetish(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 100;
+ this.expansionSetCode = "ME2";
+ }
+
+ public KrovikanFetish(final KrovikanFetish card) {
+ super(card);
+ }
+
+ @Override
+ public KrovikanFetish copy() {
+ return new KrovikanFetish(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/masterseditionii/Panic.java b/Mage.Sets/src/mage/sets/masterseditionii/Panic.java
new file mode 100644
index 0000000000..16b034a631
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/masterseditionii/Panic.java
@@ -0,0 +1,120 @@
+/*
+ * 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.masterseditionii;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.common.delayed.AtTheBeginOfNextUpkeepDelayedTriggeredAbility;
+import mage.abilities.effects.ContinuousRuleModifyingEffectImpl;
+import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect;
+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.Outcome;
+import mage.constants.PhaseStep;
+import mage.constants.Rarity;
+import mage.constants.TurnPhase;
+import mage.constants.Zone;
+import mage.game.Game;
+import mage.game.events.GameEvent;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class Panic extends CardImpl {
+
+ public Panic(UUID ownerId) {
+ super(ownerId, 145, "Panic", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{R}");
+ this.expansionSetCode = "ME2";
+
+ // Cast Panic only during combat before blockers are declared.
+ Ability ability = new SimpleStaticAbility(Zone.ALL, new PanicRuleModifyingEffect());
+ ability.setRuleAtTheTop(true);
+ this.addAbility(ability);
+
+ // Target creature can't block this turn.
+ this.getSpellAbility().addTarget(new TargetCreaturePermanent());
+ this.getSpellAbility().addEffect(new CantBlockTargetEffect(Duration.EndOfTurn));
+
+ // Draw a card at the beginning of the next turn's upkeep.
+ this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1)), false));
+ }
+
+ public Panic(final Panic card) {
+ super(card);
+ }
+
+ @Override
+ public Panic copy() {
+ return new Panic(this);
+ }
+}
+
+class PanicRuleModifyingEffect extends ContinuousRuleModifyingEffectImpl {
+
+ PanicRuleModifyingEffect() {
+ super(Duration.EndOfGame, Outcome.Detriment);
+ staticText = "Cast {this} only during combat before blockers are declared";
+ }
+
+ PanicRuleModifyingEffect(final PanicRuleModifyingEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public boolean checksEventType(GameEvent event, Game game) {
+ return event.getType().equals(GameEvent.EventType.CAST_SPELL);
+ }
+
+ @Override
+ public boolean applies(GameEvent event, Ability source, Game game) {
+ if (event.getSourceId().equals(source.getSourceId())) {
+ return !TurnPhase.COMBAT.equals(game.getTurn().getPhaseType()) ||
+ game.getStep().getType().equals(PhaseStep.DECLARE_BLOCKERS) ||
+ game.getStep().getType().equals(PhaseStep.FIRST_COMBAT_DAMAGE) ||
+ game.getStep().getType().equals(PhaseStep.COMBAT_DAMAGE) ||
+ game.getStep().getType().equals(PhaseStep.END_COMBAT);
+ }
+ return false;
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ return true;
+ }
+
+ @Override
+ public PanicRuleModifyingEffect copy() {
+ return new PanicRuleModifyingEffect(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/masterseditionii/Reinforcements.java b/Mage.Sets/src/mage/sets/masterseditionii/Reinforcements.java
new file mode 100644
index 0000000000..b348961ba2
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/masterseditionii/Reinforcements.java
@@ -0,0 +1,61 @@
+/*
+ * 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.masterseditionii;
+
+import java.util.UUID;
+import mage.abilities.effects.common.PutOnLibraryTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.filter.common.FilterCreatureCard;
+import mage.target.common.TargetCardInYourGraveyard;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class Reinforcements extends CardImpl {
+
+ public Reinforcements(UUID ownerId) {
+ super(ownerId, 28, "Reinforcements", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{W}");
+ this.expansionSetCode = "ME2";
+
+ // Put up to three target creature cards from your graveyard on top of your library.
+ this.getSpellAbility().addEffect(new PutOnLibraryTargetEffect(true));
+ this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, 3, new FilterCreatureCard("creature cards from your graveyard")));
+ }
+
+ public Reinforcements(final Reinforcements card) {
+ super(card);
+ }
+
+ @Override
+ public Reinforcements copy() {
+ return new Reinforcements(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/masterseditionii/SkeletonShip.java b/Mage.Sets/src/mage/sets/masterseditionii/SkeletonShip.java
new file mode 100644
index 0000000000..96b1af5b4e
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/masterseditionii/SkeletonShip.java
@@ -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.masterseditionii;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class SkeletonShip extends mage.sets.iceage.SkeletonShip {
+
+ public SkeletonShip(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 197;
+ this.expansionSetCode = "ME2";
+ }
+
+ public SkeletonShip(final SkeletonShip card) {
+ super(card);
+ }
+
+ @Override
+ public SkeletonShip copy() {
+ return new SkeletonShip(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/masterseditionii/TimeBomb.java b/Mage.Sets/src/mage/sets/masterseditionii/TimeBomb.java
new file mode 100644
index 0000000000..d71d59a7ea
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/masterseditionii/TimeBomb.java
@@ -0,0 +1,78 @@
+/*
+ * 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.masterseditionii;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.SacrificeSourceCost;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.costs.mana.GenericManaCost;
+import mage.abilities.dynamicvalue.common.CountersCount;
+import mage.abilities.effects.common.DamageEverythingEffect;
+import mage.abilities.effects.common.counter.AddCountersSourceEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.TargetController;
+import mage.constants.Zone;
+import mage.counters.CounterType;
+import mage.filter.common.FilterCreaturePermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class TimeBomb extends CardImpl {
+
+ public TimeBomb(UUID ownerId) {
+ super(ownerId, 223, "Time Bomb", Rarity.RARE, new CardType[]{CardType.ARTIFACT}, "{4}");
+ this.expansionSetCode = "ME2";
+
+ // At the beginning of your upkeep, put a time counter on Time Bomb.
+ this.addAbility(new BeginningOfUpkeepTriggeredAbility(new AddCountersSourceEffect(CounterType.TIME.createInstance(), true), TargetController.YOU, false));
+
+ // {1}, {tap}, Sacrifice Time Bomb: Time Bomb deals damage equal to the number of time counters on it to each creature and each player.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
+ new DamageEverythingEffect(new CountersCount(CounterType.TIME), new FilterCreaturePermanent()),
+ new GenericManaCost(1));
+ ability.addCost(new TapSourceCost());
+ ability.addCost(new SacrificeSourceCost());
+ this.addAbility(ability);
+ }
+
+ public TimeBomb(final TimeBomb card) {
+ super(card);
+ }
+
+ @Override
+ public TimeBomb copy() {
+ return new TimeBomb(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/masterseditioniii/DongZhouTheTyrant.java b/Mage.Sets/src/mage/sets/masterseditioniii/DongZhouTheTyrant.java
new file mode 100644
index 0000000000..979841a4a1
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/masterseditioniii/DongZhouTheTyrant.java
@@ -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.masterseditioniii;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class DongZhouTheTyrant extends mage.sets.portalthreekingdoms.DongZhouTheTyrant {
+
+ public DongZhouTheTyrant(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 96;
+ this.expansionSetCode = "ME3";
+ }
+
+ public DongZhouTheTyrant(final DongZhouTheTyrant card) {
+ super(card);
+ }
+
+ @Override
+ public DongZhouTheTyrant copy() {
+ return new DongZhouTheTyrant(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/masterseditioniii/Infuse.java b/Mage.Sets/src/mage/sets/masterseditioniii/Infuse.java
new file mode 100644
index 0000000000..a67a3b3f18
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/masterseditioniii/Infuse.java
@@ -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.masterseditioniii;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class Infuse extends mage.sets.iceage.Infuse {
+
+ public Infuse(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 38;
+ this.expansionSetCode = "ME3";
+ }
+
+ public Infuse(final Infuse card) {
+ super(card);
+ }
+
+ @Override
+ public Infuse copy() {
+ return new Infuse(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/masterseditioniii/KeiTakahashi.java b/Mage.Sets/src/mage/sets/masterseditioniii/KeiTakahashi.java
new file mode 100644
index 0000000000..a1042182d0
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/masterseditioniii/KeiTakahashi.java
@@ -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.masterseditioniii;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.effects.common.PreventDamageToTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class KeiTakahashi extends CardImpl {
+
+ public KeiTakahashi(UUID ownerId) {
+ super(ownerId, 155, "Kei Takahashi", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{2}{G}{W}");
+ this.expansionSetCode = "ME3";
+ this.supertype.add("Legendary");
+ this.subtype.add("Human");
+ this.subtype.add("Cleric");
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(2);
+
+ // {tap}: Prevent the next 2 damage that would be dealt to target creature this turn.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
+ new PreventDamageToTargetEffect(Duration.EndOfTurn, 2), new TapSourceCost());
+ ability.addTarget(new TargetCreaturePermanent());
+ this.addAbility(ability);
+ }
+
+ public KeiTakahashi(final KeiTakahashi card) {
+ super(card);
+ }
+
+ @Override
+ public KeiTakahashi copy() {
+ return new KeiTakahashi(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/masterseditioniii/ManaVortex.java b/Mage.Sets/src/mage/sets/masterseditioniii/ManaVortex.java
new file mode 100644
index 0000000000..6cf19b12be
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/masterseditioniii/ManaVortex.java
@@ -0,0 +1,163 @@
+/*
+ * 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.masterseditioniii;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.Mode;
+import mage.abilities.StateTriggeredAbility;
+import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
+import mage.abilities.costs.common.SacrificeTargetCost;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.CastSourceTriggeredAbility;
+import mage.abilities.effects.common.SacrificeEffect;
+import mage.abilities.effects.common.SacrificeSourceEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.constants.Rarity;
+import mage.constants.TargetController;
+import mage.constants.Zone;
+import mage.filter.common.FilterControlledLandPermanent;
+import mage.filter.common.FilterLandPermanent;
+import mage.game.Game;
+import mage.game.events.GameEvent;
+import mage.game.stack.Spell;
+import mage.game.stack.StackObject;
+import mage.players.Player;
+import mage.target.common.TargetControlledPermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class ManaVortex extends CardImpl {
+
+ public static final FilterLandPermanent filter = new FilterLandPermanent();
+
+ public ManaVortex(UUID ownerId) {
+ super(ownerId, 44, "Mana Vortex", Rarity.RARE, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}{U}");
+ this.expansionSetCode = "ME3";
+
+ // When you cast Mana Vortex, counter it unless you sacrifice a land.
+ this.addAbility(new CastSourceTriggeredAbility(new CounterSourceEffect()));
+
+ // At the beginning of each player's upkeep, that player sacrifices a land.
+ this.addAbility(new BeginningOfUpkeepTriggeredAbility(new SacrificeEffect(new FilterLandPermanent(), 1, "that player"),
+ TargetController.ANY, false));
+
+ // When there are no lands on the battlefield, sacrifice Mana Vortex.
+ this.addAbility(new ManaVortexStateTriggeredAbility());
+ }
+
+ public ManaVortex(final ManaVortex card) {
+ super(card);
+ }
+
+ @Override
+ public ManaVortex copy() {
+ return new ManaVortex(this);
+ }
+}
+
+class CounterSourceEffect extends OneShotEffect {
+
+ public CounterSourceEffect() {
+ super(Outcome.Detriment);
+ }
+
+ public CounterSourceEffect(final CounterSourceEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public CounterSourceEffect copy() {
+ return new CounterSourceEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+
+ StackObject spell = null;
+ for(StackObject objet : game.getStack()){
+ if(objet instanceof Spell && objet.getSourceId().equals(source.getSourceId())){
+ spell = objet;
+ }
+ }
+ if(spell != null){
+ Player controller = game.getPlayer(source.getControllerId());
+ if(controller.chooseUse(Outcome.Detriment, "Sacrifice a land to not counter " + spell.getName() + "?", source, game)){
+ SacrificeTargetCost cost = new SacrificeTargetCost(new TargetControlledPermanent(new FilterControlledLandPermanent()));
+ if(cost.pay(source, game, source.getSourceId(), source.getControllerId(), false)){
+ game.informPlayers(controller.getLogName() + " sacrifices a land to not counter " + spell.getName() + ".");
+ return true;
+ }
+ else {
+ game.getStack().counter(spell.getId(), source.getSourceId(), game);
+ }
+ }
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public String getText(Mode mode) {
+ if (staticText != null && !staticText.isEmpty()) {
+ return staticText;
+ }
+ return "counter it unless you sacrifice a land";
+ }
+}
+
+class ManaVortexStateTriggeredAbility extends StateTriggeredAbility {
+
+ public ManaVortexStateTriggeredAbility() {
+ super(Zone.BATTLEFIELD, new SacrificeSourceEffect());
+ }
+
+ public ManaVortexStateTriggeredAbility(final ManaVortexStateTriggeredAbility ability) {
+ super(ability);
+ }
+
+ @Override
+ public ManaVortexStateTriggeredAbility copy() {
+ return new ManaVortexStateTriggeredAbility(this);
+ }
+
+ @Override
+ public boolean checkTrigger(GameEvent event, Game game) {
+ return game.getBattlefield().count(ManaVortex.filter, this.getSourceId(), this.getControllerId(), game) == 0;
+ }
+
+ @Override
+ public String getRule() {
+ return new StringBuilder("When there are no lands on the battlefield, ").append(super.getRule()).toString() ;
+ }
+
+}
\ No newline at end of file
diff --git a/Mage.Sets/src/mage/sets/masterseditioniii/WanderingMage.java b/Mage.Sets/src/mage/sets/masterseditioniii/WanderingMage.java
new file mode 100644
index 0000000000..a09c453c49
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/masterseditioniii/WanderingMage.java
@@ -0,0 +1,140 @@
+/*
+ * 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.masterseditioniii;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.CostImpl;
+import mage.abilities.costs.common.PayLifeCost;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.PreventDamageToTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.counters.CounterType;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.Predicates;
+import mage.filter.predicate.mageobject.SubtypePredicate;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
+import mage.target.Target;
+import mage.target.TargetPlayer;
+import mage.target.common.TargetControlledCreaturePermanent;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class WanderingMage extends CardImpl {
+
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Cleric or Wizard");
+
+ static {
+ filter.add(Predicates.or(
+ new SubtypePredicate("Cleric"),
+ new SubtypePredicate("Wizard")));
+ }
+
+ public WanderingMage(UUID ownerId) {
+ super(ownerId, 186, "Wandering Mage", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{W}{U}{B}");
+ this.expansionSetCode = "ME3";
+ this.subtype.add("Human");
+ this.subtype.add("Cleric");
+ this.subtype.add("Wizard");
+ this.power = new MageInt(0);
+ this.toughness = new MageInt(3);
+
+ // {W}, Pay 1 life: Prevent the next 2 damage that would be dealt to target creature this turn.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
+ new PreventDamageToTargetEffect(Duration.EndOfTurn, 2), new ManaCostsImpl("{W}"));
+ ability.addCost(new PayLifeCost(1));
+ ability.addTarget(new TargetCreaturePermanent());
+ this.addAbility(ability);
+
+ // {U}: Prevent the next 1 damage that would be dealt to target Cleric or Wizard creature this turn.
+ ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
+ new PreventDamageToTargetEffect(Duration.EndOfTurn, 1), new ManaCostsImpl("{U}"));
+ ability.addTarget(new TargetCreaturePermanent(filter));
+ this.addAbility(ability);
+
+ // {B}, Put a -1/-1 counter on a creature you control: Prevent the next 2 damage that would be dealt to target player this turn.
+ ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
+ new PreventDamageToTargetEffect(Duration.EndOfTurn, 2), new ManaCostsImpl("{B}"));
+ ability.addCost(new WanderingMageCost());
+ ability.addTarget(new TargetPlayer());
+ Target target = new TargetControlledCreaturePermanent();
+ target.setNotTarget(true);
+ ability.addTarget(target);
+ this.addAbility(ability);
+ }
+
+ public WanderingMage(final WanderingMage card) {
+ super(card);
+ }
+
+ @Override
+ public WanderingMage copy() {
+ return new WanderingMage(this);
+ }
+}
+
+class WanderingMageCost extends CostImpl {
+
+ public WanderingMageCost() {
+ this.text = "Put a -1/-1 counter on a creature you control";
+ }
+
+ public WanderingMageCost(WanderingMageCost cost) {
+ super(cost);
+ }
+
+ @Override
+ public boolean canPay(Ability ability, UUID sourceId, UUID controllerId, Game game) {
+ return true;
+ }
+
+ @Override
+ public boolean pay(Ability ability, Game game, UUID sourceId, UUID controllerId, boolean noMana) {
+ Permanent permanent = game.getPermanent(ability.getTargets().get(1).getFirstTarget());
+ if (permanent != null) {
+ permanent.addCounters(CounterType.M1M1.createInstance(), game);
+ this.paid = true;
+ }
+ return paid;
+ }
+
+ @Override
+ public WanderingMageCost copy() {
+ return new WanderingMageCost(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/masterseditioniv/ArgivianBlacksmith.java b/Mage.Sets/src/mage/sets/masterseditioniv/ArgivianBlacksmith.java
new file mode 100644
index 0000000000..39f60c163a
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/masterseditioniv/ArgivianBlacksmith.java
@@ -0,0 +1,54 @@
+/*
+ * 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.masterseditioniv;
+
+import java.util.UUID;
+import mage.constants.Rarity;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class ArgivianBlacksmith extends mage.sets.antiquities.ArgivianBlacksmith {
+
+ public ArgivianBlacksmith(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 4;
+ this.expansionSetCode = "ME4";
+ this.rarity = Rarity.UNCOMMON;
+ }
+
+ public ArgivianBlacksmith(final ArgivianBlacksmith card) {
+ super(card);
+ }
+
+ @Override
+ public ArgivianBlacksmith copy() {
+ return new ArgivianBlacksmith(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/masterseditioniv/Crumble.java b/Mage.Sets/src/mage/sets/masterseditioniv/Crumble.java
new file mode 100644
index 0000000000..6c6708362d
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/masterseditioniv/Crumble.java
@@ -0,0 +1,100 @@
+/*
+ * 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.masterseditioniv;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.DestroyTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.constants.Rarity;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
+import mage.players.Player;
+import mage.target.common.TargetArtifactPermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class Crumble extends CardImpl {
+
+ public Crumble(UUID ownerId) {
+ super(ownerId, 147, "Crumble", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{G}");
+ this.expansionSetCode = "ME4";
+
+ // Destroy target artifact. It can't be regenerated.
+ this.getSpellAbility().addTarget(new TargetArtifactPermanent());
+ this.getSpellAbility().addEffect(new DestroyTargetEffect(true));
+
+ // That artifact's controller gains life equal to its converted mana cost.
+ this.getSpellAbility().addEffect(new CrumbleEffect());
+ }
+
+ public Crumble(final Crumble card) {
+ super(card);
+ }
+
+ @Override
+ public Crumble copy() {
+ return new Crumble(this);
+ }
+}
+
+class CrumbleEffect extends OneShotEffect {
+
+ public CrumbleEffect() {
+ super(Outcome.GainLife);
+ staticText = "That artifact's controller gains life equal to its converted mana cost";
+ }
+
+ public CrumbleEffect(final CrumbleEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public CrumbleEffect copy() {
+ return new CrumbleEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Permanent permanent = game.getPermanentOrLKIBattlefield(getTargetPointer().getFirst(game, source));
+ if (permanent != null) {
+ int cost = permanent.getManaCost().convertedManaCost();
+ Player player = game.getPlayer(permanent.getControllerId());
+ if (player != null) {
+ player.gainLife(cost, game);
+ }
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/masterseditioniv/Deathgrip.java b/Mage.Sets/src/mage/sets/masterseditioniv/Deathgrip.java
new file mode 100644
index 0000000000..e5d9b196a8
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/masterseditioniv/Deathgrip.java
@@ -0,0 +1,54 @@
+/*
+ * 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.masterseditioniv;
+
+import java.util.UUID;
+import mage.constants.Rarity;
+
+/**
+ *
+ * @author anonymous
+ */
+public class Deathgrip extends mage.sets.limitedbeta.Deathgrip {
+
+ public Deathgrip(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 75;
+ this.expansionSetCode = "ME4";
+ this.rarity = Rarity.RARE;
+ }
+
+ public Deathgrip(final Deathgrip card) {
+ super(card);
+ }
+
+ @Override
+ public Deathgrip copy() {
+ return new Deathgrip(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/masterseditioniv/GorillaWarCry.java b/Mage.Sets/src/mage/sets/masterseditioniv/GorillaWarCry.java
new file mode 100644
index 0000000000..8fdd8972bf
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/masterseditioniv/GorillaWarCry.java
@@ -0,0 +1,124 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.masterseditioniv;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.common.delayed.AtTheBeginOfNextUpkeepDelayedTriggeredAbility;
+import mage.abilities.effects.ContinuousRuleModifyingEffectImpl;
+import mage.abilities.effects.Effect;
+import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect;
+import mage.abilities.effects.common.DrawCardSourceControllerEffect;
+import mage.abilities.effects.common.continuous.GainAbilityAllEffect;
+import mage.abilities.keyword.MenaceAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Outcome;
+import mage.constants.PhaseStep;
+import mage.constants.Rarity;
+import mage.constants.TurnPhase;
+import mage.constants.Zone;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.game.Game;
+import mage.game.events.GameEvent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class GorillaWarCry extends CardImpl {
+
+ public GorillaWarCry(UUID ownerId) {
+ super(ownerId, 124, "Gorilla War Cry", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{1}{R}");
+ this.expansionSetCode = "ME4";
+
+ // Cast Gorilla War Cry only during combat before blockers are declared.
+ Ability ability = new SimpleStaticAbility(Zone.ALL, new GorillaWarCryRuleModifyingEffect());
+ ability.setRuleAtTheTop(true);
+ this.addAbility(ability);
+
+ // All creatures gain menace until end of turn. (They can't be blocked except by two or more creatures.)
+ Effect effect = new GainAbilityAllEffect(new MenaceAbility(), Duration.EndOfTurn, new FilterCreaturePermanent());
+ effect.setText("All creatures gain menace until end of turn. (They can't be blocked except by two or more creatures.)");
+ this.getSpellAbility().addEffect(effect);
+
+ // Draw a card at the beginning of the next turn's upkeep.
+ this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1)), false));
+ }
+
+ public GorillaWarCry(final GorillaWarCry card) {
+ super(card);
+ }
+
+ @Override
+ public GorillaWarCry copy() {
+ return new GorillaWarCry(this);
+ }
+}
+
+class GorillaWarCryRuleModifyingEffect extends ContinuousRuleModifyingEffectImpl {
+
+ GorillaWarCryRuleModifyingEffect() {
+ super(Duration.EndOfGame, Outcome.Detriment);
+ staticText = "Cast {this} only during combat before blockers are declared";
+ }
+
+ GorillaWarCryRuleModifyingEffect(final GorillaWarCryRuleModifyingEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public boolean checksEventType(GameEvent event, Game game) {
+ return event.getType().equals(GameEvent.EventType.CAST_SPELL);
+ }
+
+ @Override
+ public boolean applies(GameEvent event, Ability source, Game game) {
+ if (event.getSourceId().equals(source.getSourceId())) {
+ return !TurnPhase.COMBAT.equals(game.getTurn().getPhaseType()) ||
+ game.getStep().getType().equals(PhaseStep.DECLARE_BLOCKERS) ||
+ game.getStep().getType().equals(PhaseStep.FIRST_COMBAT_DAMAGE) ||
+ game.getStep().getType().equals(PhaseStep.COMBAT_DAMAGE) ||
+ game.getStep().getType().equals(PhaseStep.END_COMBAT);
+ }
+ return false;
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ return true;
+ }
+
+ @Override
+ public GorillaWarCryRuleModifyingEffect copy() {
+ return new GorillaWarCryRuleModifyingEffect(this);
+ }
+}
+
diff --git a/Mage.Sets/src/mage/sets/masterseditioniv/TriassicEgg.java b/Mage.Sets/src/mage/sets/masterseditioniv/TriassicEgg.java
new file mode 100644
index 0000000000..ff16671e17
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/masterseditioniv/TriassicEgg.java
@@ -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.masterseditioniv;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class TriassicEgg extends mage.sets.legends.TriassicEgg {
+
+ public TriassicEgg(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 235;
+ this.expansionSetCode = "ME4";
+ }
+
+ public TriassicEgg(final TriassicEgg card) {
+ super(card);
+ }
+
+ @Override
+ public TriassicEgg copy() {
+ return new TriassicEgg(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/mediainserts/MagisterOfWorth.java b/Mage.Sets/src/mage/sets/mediainserts/MagisterOfWorth.java
new file mode 100644
index 0000000000..8730131d3b
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/mediainserts/MagisterOfWorth.java
@@ -0,0 +1,196 @@
+/*
+ * 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.mediainserts;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.MageObject;
+import mage.abilities.Ability;
+import mage.abilities.common.EntersBattlefieldTriggeredAbility;
+import mage.abilities.effects.Effect;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.keyword.FlyingAbility;
+import mage.cards.Card;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.filter.FilterPermanent;
+import mage.filter.common.FilterCreatureCard;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.permanent.AnotherPredicate;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
+import mage.players.Player;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class MagisterOfWorth extends CardImpl {
+
+ public MagisterOfWorth(UUID ownerId) {
+ super(ownerId, 86, "Magister of Worth", Rarity.SPECIAL, new CardType[]{CardType.CREATURE}, "{4}{W}{B}");
+ this.expansionSetCode = "MBP";
+ this.subtype.add("Angel");
+ this.power = new MageInt(4);
+ this.toughness = new MageInt(4);
+
+ // Flying
+ this.addAbility(FlyingAbility.getInstance());
+
+ // Will of the council - When Magister of Worth enters the battlefield, starting with you, each player votes for grace or condemnation. If grace gets more votes, each player returns each creature card from his or her graveyard to the battlefield. If condemnation gets more votes or the vote is tied, destroy all creatures other than Magister of Worth.
+ Effect effect = new MagisterOfWorthVoteEffect();
+ effect.setText("Will of the council - When Magister of Worth enters the battlefield, starting with you, each player votes for grace or condemnation. If grace gets more votes, each player returns each creature card from his or her graveyard to the battlefield. If condemnation gets more votes or the vote is tied, destroy all creatures other than Magister of Worth");
+ this.addAbility(new EntersBattlefieldTriggeredAbility(effect, false, true));
+ }
+
+ public MagisterOfWorth(final MagisterOfWorth card) {
+ super(card);
+ }
+
+ @Override
+ public MagisterOfWorth copy() {
+ return new MagisterOfWorth(this);
+ }
+}
+
+class MagisterOfWorthVoteEffect extends OneShotEffect {
+
+ MagisterOfWorthVoteEffect() {
+ super(Outcome.Benefit);
+ this.staticText = "Will of the council - When {this} enters the battlefield, starting with you, each player votes for grace or condemnation. If grace gets more votes, each player returns each creature card from his or her graveyard to the battlefield. If condemnation gets more votes or the vote is tied, destroy all creatures other than {this}.";
+ }
+
+ MagisterOfWorthVoteEffect(final MagisterOfWorthVoteEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public MagisterOfWorthVoteEffect copy() {
+ return new MagisterOfWorthVoteEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player controller = game.getPlayer(source.getControllerId());
+ if (controller != null) {
+ int graceCount = 0;
+ int condemnationCount = 0;
+ for (UUID playerId : game.getState().getPlayersInRange(controller.getId(), game)) {
+ Player player = game.getPlayer(playerId);
+ if (player != null) {
+ if (player.chooseUse(Outcome.DestroyPermanent, "Choose grace?", source, game)) {
+ graceCount++;
+ game.informPlayers(player.getLogName() + " has chosen: grace");
+ }
+ else {
+ condemnationCount++;
+ game.informPlayers(player.getLogName() + " has chosen: condemnation");
+ }
+ }
+ }
+ if (graceCount > condemnationCount) {
+ new MagisterOfWorthReturnFromGraveyardEffect().apply(game, source);
+ } else {
+ new MagisterOfWorthDestroyEffect().apply(game, source);
+ }
+ return true;
+ }
+ return false;
+ }
+}
+
+class MagisterOfWorthDestroyEffect extends OneShotEffect {
+
+ private static final FilterPermanent filter = new FilterCreaturePermanent("creatures other than {this}");
+
+ static {
+ filter.add(new AnotherPredicate());
+ }
+
+ public MagisterOfWorthDestroyEffect() {
+ super(Outcome.DestroyPermanent);
+ staticText = "destroy all creatures other than {this}";
+ }
+
+ public MagisterOfWorthDestroyEffect(final MagisterOfWorthDestroyEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ for (Permanent permanent : game.getBattlefield().getActivePermanents(filter, source.getControllerId(), source.getSourceId(), game)) {
+ permanent.destroy(source.getSourceId(), game, false);
+ }
+ return true;
+ }
+
+ @Override
+ public MagisterOfWorthDestroyEffect copy() {
+ return new MagisterOfWorthDestroyEffect(this);
+ }
+
+}
+
+class MagisterOfWorthReturnFromGraveyardEffect extends OneShotEffect {
+
+ public MagisterOfWorthReturnFromGraveyardEffect() {
+ super(Outcome.PutCreatureInPlay);
+ staticText = "each player returns each creature card from his or her graveyard to the battlefield";
+ }
+
+ public MagisterOfWorthReturnFromGraveyardEffect(final MagisterOfWorthReturnFromGraveyardEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player controller = game.getPlayer(source.getControllerId());
+ MageObject sourceObject = game.getObject(source.getSourceId());
+ if (controller != null && sourceObject != null) {
+ for (UUID playerId: controller.getInRange()) {
+ Player player = game.getPlayer(playerId);
+ if (player != null) {
+ for (Card card :player.getGraveyard().getCards(new FilterCreatureCard(), game)) {
+ player.putOntoBattlefieldWithInfo(card, game, Zone.GRAVEYARD, source.getSourceId());
+ }
+ }
+ }
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public MagisterOfWorthReturnFromGraveyardEffect copy() {
+ return new MagisterOfWorthReturnFromGraveyardEffect(this);
+ }
+
+}
\ No newline at end of file
diff --git a/Mage.Sets/src/mage/sets/mediainserts/VoidmageHusher.java b/Mage.Sets/src/mage/sets/mediainserts/VoidmageHusher.java
new file mode 100644
index 0000000000..869e1f6988
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/mediainserts/VoidmageHusher.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.mediainserts;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.EntersBattlefieldTriggeredAbility;
+import mage.abilities.common.SpellCastControllerTriggeredAbility;
+import mage.abilities.effects.common.CounterTargetEffect;
+import mage.abilities.effects.common.ReturnToHandSourceEffect;
+import mage.abilities.keyword.FlashAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.target.common.TargetActivatedAbility;
+
+/**
+ *
+ * @author andyfries
+ */
+public class VoidmageHusher extends CardImpl {
+
+ public VoidmageHusher(UUID ownerId) {
+ super(ownerId, 62, "Voidmage Husher", Rarity.SPECIAL, new CardType[]{CardType.CREATURE}, "{3}{U}");
+ this.expansionSetCode = "MBP";
+ this.subtype.add("Human");
+ this.subtype.add("Wizard");
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(2);
+
+ // Flash
+ this.addAbility(FlashAbility.getInstance());
+
+ // When Voidmage Husher enters the battlefield, counter target activated ability.
+ Ability ability = new EntersBattlefieldTriggeredAbility(new CounterTargetEffect());
+ ability.addTarget(new TargetActivatedAbility());
+ this.addAbility(ability);
+
+ // Whenever you cast a spell, you may return Voidmage Husher to its owner's hand.
+ this.addAbility(new SpellCastControllerTriggeredAbility(new ReturnToHandSourceEffect(true), true));
+ }
+
+ public VoidmageHusher(final VoidmageHusher card) {
+ super(card);
+ }
+
+ @Override
+ public VoidmageHusher copy() {
+ return new VoidmageHusher(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/mercadianmasques/CacklingWitch.java b/Mage.Sets/src/mage/sets/mercadianmasques/CacklingWitch.java
new file mode 100644
index 0000000000..93bc1c8ca4
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/mercadianmasques/CacklingWitch.java
@@ -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.mercadianmasques;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.DiscardCardCost;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.dynamicvalue.common.ManacostVariableValue;
+import mage.abilities.dynamicvalue.common.StaticValue;
+import mage.abilities.effects.common.continuous.BoostTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class CacklingWitch extends CardImpl {
+
+ public CacklingWitch(UUID ownerId) {
+ super(ownerId, 119, "Cackling Witch", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{1}{B}");
+ this.expansionSetCode = "MMQ";
+ this.subtype.add("Human");
+ this.subtype.add("Spellshaper");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // {X}{B}, {tap}, Discard a card: Target creature gets +X/+0 until end of turn.
+ ManacostVariableValue manaX = new ManacostVariableValue();
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
+ new BoostTargetEffect(manaX, new StaticValue(0), Duration.EndOfTurn),
+ new ManaCostsImpl("{X}{B}"));
+ ability.addCost(new TapSourceCost());
+ ability.addCost(new DiscardCardCost());
+ ability.addTarget(new TargetCreaturePermanent());
+ this.addAbility(ability);
+ }
+
+ public CacklingWitch(final CacklingWitch card) {
+ super(card);
+ }
+
+ @Override
+ public CacklingWitch copy() {
+ return new CacklingWitch(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/mercadianmasques/Embargo.java b/Mage.Sets/src/mage/sets/mercadianmasques/Embargo.java
new file mode 100644
index 0000000000..b23284d621
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/mercadianmasques/Embargo.java
@@ -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.mercadianmasques;
+
+import java.util.UUID;
+import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.effects.common.DontUntapInControllersUntapStepAllEffect;
+import mage.abilities.effects.common.LoseLifeSourceControllerEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.TargetController;
+import mage.constants.Zone;
+import mage.filter.FilterPermanent;
+import mage.filter.common.FilterNonlandPermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class Embargo extends CardImpl {
+
+ private static final FilterPermanent filter = new FilterNonlandPermanent();
+
+ public Embargo(UUID ownerId) {
+ super(ownerId, 77, "Embargo", Rarity.RARE, new CardType[]{CardType.ENCHANTMENT}, "{3}{U}");
+ this.expansionSetCode = "MMQ";
+
+ // Nonland permanents don't untap during their controllers' untap steps.
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepAllEffect(Duration.WhileOnBattlefield, TargetController.ANY, filter)));
+
+ // At the beginning of your upkeep, you lose 2 life.
+ this.addAbility(new BeginningOfUpkeepTriggeredAbility(new LoseLifeSourceControllerEffect(2), TargetController.YOU, false));
+ }
+
+ public Embargo(final Embargo card) {
+ super(card);
+ }
+
+ @Override
+ public Embargo copy() {
+ return new Embargo(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/mercadianmasques/MagistratesScepter.java b/Mage.Sets/src/mage/sets/mercadianmasques/MagistratesScepter.java
new file mode 100644
index 0000000000..7188340f9a
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/mercadianmasques/MagistratesScepter.java
@@ -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.mercadianmasques;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.RemoveCountersSourceCost;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.costs.mana.GenericManaCost;
+import mage.abilities.effects.common.counter.AddCountersSourceEffect;
+import mage.abilities.effects.common.turn.AddExtraTurnControllerEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.counters.CounterType;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class MagistratesScepter extends CardImpl {
+
+ public MagistratesScepter(UUID ownerId) {
+ super(ownerId, 304, "Magistrate's Scepter", Rarity.RARE, new CardType[]{CardType.ARTIFACT}, "{3}");
+ this.expansionSetCode = "MMQ";
+
+ // {4}, {tap}: Put a charge counter on Magistrate's Scepter.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersSourceEffect(CounterType.CHARGE.createInstance()), new GenericManaCost(4));
+ ability.addCost(new TapSourceCost());
+ this.addAbility(ability);
+
+ // {tap}, Remove three charge counters from Magistrate's Scepter: Take an extra turn after this one.
+ ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddExtraTurnControllerEffect(), new TapSourceCost());
+ ability.addCost(new RemoveCountersSourceCost(CounterType.CHARGE.createInstance(3)));
+ this.addAbility(ability);
+ }
+
+ public MagistratesScepter(final MagistratesScepter card) {
+ super(card);
+ }
+
+ @Override
+ public MagistratesScepter copy() {
+ return new MagistratesScepter(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/mercadianmasques/MagistratesVeto.java b/Mage.Sets/src/mage/sets/mercadianmasques/MagistratesVeto.java
new file mode 100644
index 0000000000..88a61653bb
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/mercadianmasques/MagistratesVeto.java
@@ -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.mercadianmasques;
+
+import java.util.UUID;
+import mage.ObjectColor;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.effects.common.combat.CantBlockAllEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.Predicates;
+import mage.filter.predicate.mageobject.ColorPredicate;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class MagistratesVeto extends CardImpl {
+
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("white creatures and blue creatures");
+
+ static {
+ filter.add(Predicates.or(
+ new ColorPredicate(ObjectColor.WHITE),
+ new ColorPredicate(ObjectColor.BLUE)));
+ }
+
+ public MagistratesVeto(UUID ownerId) {
+ super(ownerId, 204, "Magistrate's Veto", Rarity.UNCOMMON, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}");
+ this.expansionSetCode = "MMQ";
+
+ // White creatures and blue creatures can't block.
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantBlockAllEffect(filter, Duration.WhileOnBattlefield)));
+ }
+
+ public MagistratesVeto(final MagistratesVeto card) {
+ super(card);
+ }
+
+ @Override
+ public MagistratesVeto copy() {
+ return new MagistratesVeto(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/mercadianmasques/Squeeze.java b/Mage.Sets/src/mage/sets/mercadianmasques/Squeeze.java
new file mode 100644
index 0000000000..554723aeca
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/mercadianmasques/Squeeze.java
@@ -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.mercadianmasques;
+
+import java.util.UUID;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.effects.Effect;
+import mage.abilities.effects.common.cost.SpellsCostIncreasementAllEffect;
+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.CardTypePredicate;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class Squeeze extends CardImpl {
+
+ private static final FilterCard filter = new FilterCard("Sorcery spells");
+
+ static {
+ filter.add(new CardTypePredicate(CardType.SORCERY));
+ }
+
+ public Squeeze(UUID ownerId) {
+ super(ownerId, 105, "Squeeze", Rarity.RARE, new CardType[]{CardType.ENCHANTMENT}, "{3}{U}");
+ this.expansionSetCode = "MMQ";
+
+ // Sorcery spells cost {3} more to cast.
+ Effect effect = new SpellsCostIncreasementAllEffect(filter, 3);
+ effect.setText("Sorcery spells cost {3} more to cast");
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect));
+ }
+
+ public Squeeze(final Squeeze card) {
+ super(card);
+ }
+
+ @Override
+ public Squeeze copy() {
+ return new Squeeze(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/mirage/ArmorerGuildmage.java b/Mage.Sets/src/mage/sets/mirage/ArmorerGuildmage.java
new file mode 100644
index 0000000000..666cd572da
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/mirage/ArmorerGuildmage.java
@@ -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.mirage;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.continuous.BoostTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class ArmorerGuildmage extends CardImpl {
+
+ public ArmorerGuildmage(UUID ownerId) {
+ super(ownerId, 156, "Armorer Guildmage", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{R}");
+ this.expansionSetCode = "MIR";
+ this.subtype.add("Human");
+ this.subtype.add("Wizard");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // {B}, {tap}: Target creature gets +1/+0 until end of turn.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostTargetEffect(1, 0, Duration.EndOfTurn), new ManaCostsImpl("{B}"));
+ ability.addCost(new TapSourceCost());
+ ability.addTarget(new TargetCreaturePermanent());
+ this.addAbility(ability);
+
+ // {G}, {tap}: Target creature gets +0/+1 until end of turn.
+ ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostTargetEffect(0, 1, Duration.EndOfTurn), new ManaCostsImpl("{G}"));
+ ability.addCost(new TapSourceCost());
+ ability.addTarget(new TargetCreaturePermanent());
+ this.addAbility(ability);
+ }
+
+ public ArmorerGuildmage(final ArmorerGuildmage card) {
+ super(card);
+ }
+
+ @Override
+ public ArmorerGuildmage copy() {
+ return new ArmorerGuildmage(this);
+ }
+}
\ No newline at end of file
diff --git a/Mage.Sets/src/mage/sets/mirage/BoneHarvest.java b/Mage.Sets/src/mage/sets/mirage/BoneHarvest.java
new file mode 100644
index 0000000000..0d770f08ea
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/mirage/BoneHarvest.java
@@ -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.mirage;
+
+import java.util.UUID;
+import mage.abilities.common.delayed.AtTheBeginOfNextUpkeepDelayedTriggeredAbility;
+import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect;
+import mage.abilities.effects.common.DrawCardSourceControllerEffect;
+import mage.abilities.effects.common.PutOnLibraryTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.filter.common.FilterCreatureCard;
+import mage.target.common.TargetCardInYourGraveyard;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class BoneHarvest extends CardImpl {
+
+ public BoneHarvest(UUID ownerId) {
+ super(ownerId, 6, "Bone Harvest", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{2}{B}");
+ this.expansionSetCode = "MIR";
+
+ // Put any number of target creature cards from your graveyard on top of your library.
+ this.getSpellAbility().addEffect(new PutOnLibraryTargetEffect(true));
+ this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(0, Integer.MAX_VALUE, new FilterCreatureCard("creature cards from your graveyard")));
+
+ // Draw a card at the beginning of the next turn's upkeep.
+ this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1)), false));
+ }
+
+ public BoneHarvest(final BoneHarvest card) {
+ super(card);
+ }
+
+ @Override
+ public BoneHarvest copy() {
+ return new BoneHarvest(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/mirage/CivicGuildmage.java b/Mage.Sets/src/mage/sets/mirage/CivicGuildmage.java
new file mode 100644
index 0000000000..2a697a9af2
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/mirage/CivicGuildmage.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.mirage;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.PutOnLibraryTargetEffect;
+import mage.abilities.effects.common.continuous.BoostTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.target.common.TargetControlledCreaturePermanent;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class CivicGuildmage extends CardImpl {
+
+ public CivicGuildmage(UUID ownerId) {
+ super(ownerId, 211, "Civic Guildmage", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{W}");
+ this.expansionSetCode = "MIR";
+ this.subtype.add("Human");
+ this.subtype.add("Wizard");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // {G}, {tap}: Target creature gets +0/+1 until end of turn.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostTargetEffect(0, 1, Duration.EndOfTurn), new ManaCostsImpl("{G}"));
+ ability.addCost(new TapSourceCost());
+ ability.addTarget(new TargetCreaturePermanent());
+ this.addAbility(ability);
+
+ // {U}, {tap}: Put target creature you control on top of its owner's library.
+ ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new PutOnLibraryTargetEffect(true), new ManaCostsImpl("{U}"));
+ ability.addCost(new TapSourceCost());
+ ability.addTarget(new TargetControlledCreaturePermanent());
+ this.addAbility(ability);
+ }
+
+ public CivicGuildmage(final CivicGuildmage card) {
+ super(card);
+ }
+
+ @Override
+ public CivicGuildmage copy() {
+ return new CivicGuildmage(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/mirage/EbonyCharm.java b/Mage.Sets/src/mage/sets/mirage/EbonyCharm.java
new file mode 100644
index 0000000000..ced14bb836
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/mirage/EbonyCharm.java
@@ -0,0 +1,141 @@
+/*
+ * 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.mirage;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.Mode;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
+import mage.abilities.keyword.FearAbility;
+import mage.cards.Card;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Outcome;
+import mage.constants.Rarity;
+import mage.filter.FilterCard;
+import mage.game.Game;
+import mage.players.Player;
+import mage.target.common.TargetCardInASingleGraveyard;
+import mage.target.common.TargetCreaturePermanent;
+import mage.target.common.TargetOpponent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class EbonyCharm extends CardImpl {
+
+ public EbonyCharm(UUID ownerId) {
+ super(ownerId, 18, "Ebony Charm", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{B}");
+ this.expansionSetCode = "MIR";
+
+ // Choose one - Target opponent loses 1 life and you gain 1 life;
+ this.getSpellAbility().addEffect(new EbonyCharmDrainEffect());
+ this.getSpellAbility().addTarget(new TargetOpponent());
+
+ // or exile up to three target cards from a single graveyard;
+ Mode mode = new Mode();
+ mode.getEffects().add(new EbonyCharmExileEffect());
+ mode.getTargets().add((new TargetCardInASingleGraveyard(0, 3, new FilterCard("up to three target cards from a single graveyard"))));
+ this.getSpellAbility().addMode(mode);
+
+ // or target creature gains fear until end of turn.
+ mode = new Mode();
+ mode.getTargets().add(new TargetCreaturePermanent());
+ mode.getEffects().add(new GainAbilityTargetEffect(FearAbility.getInstance(), Duration.EndOfTurn));
+ this.getSpellAbility().addMode(mode);
+ }
+
+ public EbonyCharm(final EbonyCharm card) {
+ super(card);
+ }
+
+ @Override
+ public EbonyCharm copy() {
+ return new EbonyCharm(this);
+ }
+}
+
+class EbonyCharmDrainEffect extends OneShotEffect {
+
+ EbonyCharmDrainEffect() {
+ super(Outcome.Damage);
+ staticText = "target opponent loses 1 life and you gain 1 life";
+ }
+
+ EbonyCharmDrainEffect(final EbonyCharmDrainEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player targetPlayer = game.getPlayer(source.getFirstTarget());
+ Player controllerPlayer = game.getPlayer(source.getControllerId());
+ if (targetPlayer != null && controllerPlayer != null) {
+ targetPlayer.damage(1, source.getSourceId(), game, false, true);
+ controllerPlayer.gainLife(1, game);
+ }
+ return false;
+ }
+
+ @Override
+ public EbonyCharmDrainEffect copy() {
+ return new EbonyCharmDrainEffect(this);
+ }
+
+}
+
+class EbonyCharmExileEffect extends OneShotEffect {
+
+ public EbonyCharmExileEffect() {
+ super(Outcome.Exile);
+ this.staticText = "Exile up to three target cards from a single graveyard";
+ }
+
+ public EbonyCharmExileEffect(final EbonyCharmExileEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public EbonyCharmExileEffect copy() {
+ return new EbonyCharmExileEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ for (UUID targetID : source.getTargets().get(0).getTargets()) {
+ Card card = game.getCard(targetID);
+ if (card != null) {
+ card.moveToExile(null, "", source.getSourceId(), game);
+ }
+ }
+ return true;
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/mirage/Flare.java b/Mage.Sets/src/mage/sets/mirage/Flare.java
new file mode 100644
index 0000000000..967557d19a
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/mirage/Flare.java
@@ -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.mirage;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class Flare extends mage.sets.fifthedition.Flare {
+
+ public Flare(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 176;
+ this.expansionSetCode = "MIR";
+ }
+
+ public Flare(final Flare card) {
+ super(card);
+ }
+
+ @Override
+ public Flare copy() {
+ return new Flare(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/mirage/ForsakenWastes.java b/Mage.Sets/src/mage/sets/mirage/ForsakenWastes.java
new file mode 100644
index 0000000000..00612501e4
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/mirage/ForsakenWastes.java
@@ -0,0 +1,114 @@
+/*
+ * 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.mirage;
+
+import java.util.UUID;
+import mage.MageObject;
+import mage.abilities.TriggeredAbilityImpl;
+import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.effects.common.LoseLifeTargetEffect;
+import mage.abilities.effects.common.continuous.CantGainLifeAllEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.TargetController;
+import mage.constants.Zone;
+import mage.game.Game;
+import mage.game.events.GameEvent;
+import mage.game.events.GameEvent.EventType;
+import mage.game.stack.Spell;
+import mage.target.targetpointer.FixedTarget;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class ForsakenWastes extends CardImpl {
+
+ public ForsakenWastes(UUID ownerId) {
+ super(ownerId, 23, "Forsaken Wastes", Rarity.RARE, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}");
+ this.expansionSetCode = "MIR";
+ this.supertype.add("World");
+
+ // Players can't gain life.
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantGainLifeAllEffect()));
+
+ // At the beginning of each player's upkeep, that player loses 1 life.
+ this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, new LoseLifeTargetEffect(1), TargetController.ANY, false, true));
+
+ // Whenever Forsaken Wastes becomes the target of a spell, that spell's controller loses 5 life.
+ this.addAbility(new ForsakenWastesTriggeredAbility());
+ }
+
+ public ForsakenWastes(final ForsakenWastes card) {
+ super(card);
+ }
+
+ @Override
+ public ForsakenWastes copy() {
+ return new ForsakenWastes(this);
+ }
+}
+
+class ForsakenWastesTriggeredAbility extends TriggeredAbilityImpl {
+
+ public ForsakenWastesTriggeredAbility() {
+ super(Zone.BATTLEFIELD, new LoseLifeTargetEffect(5), false);
+ }
+
+ public ForsakenWastesTriggeredAbility(final ForsakenWastesTriggeredAbility ability) {
+ super(ability);
+ }
+
+ @Override
+ public ForsakenWastesTriggeredAbility copy() {
+ return new ForsakenWastesTriggeredAbility(this);
+ }
+
+ @Override
+ public boolean checkEventType(GameEvent event, Game game) {
+ return event.getType() == EventType.TARGETED;
+ }
+
+ @Override
+ public boolean checkTrigger(GameEvent event, Game game) {
+ MageObject eventSourceObject = game.getObject(event.getSourceId());
+ if (eventSourceObject != null && event.getTargetId().equals(this.getSourceId())&& eventSourceObject instanceof Spell ) {
+ getEffects().get(0).setTargetPointer(new FixedTarget(event.getPlayerId()));
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public String getRule() {
+ return "Whenever {this} becomes the target of a spell, that spell's controller loses 5 life.";
+ }
+
+}
diff --git a/Mage.Sets/src/mage/sets/mirage/GrangerGuildmage.java b/Mage.Sets/src/mage/sets/mirage/GrangerGuildmage.java
new file mode 100644
index 0000000000..04609c2db9
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/mirage/GrangerGuildmage.java
@@ -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.mirage;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.DamageControllerEffect;
+import mage.abilities.effects.common.DamageTargetEffect;
+import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
+import mage.abilities.keyword.FirstStrikeAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.target.common.TargetCreatureOrPlayer;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class GrangerGuildmage extends CardImpl {
+
+ public GrangerGuildmage(UUID ownerId) {
+ super(ownerId, 118, "Granger Guildmage", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{G}");
+ this.expansionSetCode = "MIR";
+ this.subtype.add("Human");
+ this.subtype.add("Wizard");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // {R}, {tap}: Granger Guildmage deals 1 damage to target creature or player and 1 damage to you.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1), new ManaCostsImpl("{R}"));
+ ability.addCost(new TapSourceCost());
+ ability.addEffect(new DamageControllerEffect(1));
+ ability.addTarget(new TargetCreatureOrPlayer());
+ this.addAbility(ability);
+
+ // {W}, {tap}: Target creature gains first strike until end of turn.
+ ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilityTargetEffect(FirstStrikeAbility.getInstance(), Duration.EndOfTurn), new ManaCostsImpl("{W}"));
+ ability.addCost(new TapSourceCost());
+ ability.addTarget(new TargetCreaturePermanent());
+ this.addAbility(ability);
+ }
+
+ public GrangerGuildmage(final GrangerGuildmage card) {
+ super(card);
+ }
+
+ @Override
+ public GrangerGuildmage copy() {
+ return new GrangerGuildmage(this);
+ }
+}
\ No newline at end of file
diff --git a/Mage.Sets/src/mage/sets/mirage/HammerOfBogardan.java b/Mage.Sets/src/mage/sets/mirage/HammerOfBogardan.java
index 43bce3d67f..fc95438330 100644
--- a/Mage.Sets/src/mage/sets/mirage/HammerOfBogardan.java
+++ b/Mage.Sets/src/mage/sets/mirage/HammerOfBogardan.java
@@ -29,15 +29,15 @@ package mage.sets.mirage;
import java.util.UUID;
-import mage.constants.CardType;
-import mage.constants.Rarity;
import mage.abilities.condition.common.IsStepCondition;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.decorator.ConditionalActivatedAbility;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.common.ReturnSourceFromGraveyardToHandEffect;
import mage.cards.CardImpl;
+import mage.constants.CardType;
import mage.constants.PhaseStep;
+import mage.constants.Rarity;
import mage.constants.Zone;
import mage.target.common.TargetCreatureOrPlayer;
@@ -58,8 +58,8 @@ public class HammerOfBogardan extends CardImpl {
this.getSpellAbility().addTarget(new TargetCreatureOrPlayer());
// {2}{R}{R}{R}: Return Hammer of Bogardan from your graveyard to your hand. Activate this ability only during your upkeep.
- this.addAbility(new ConditionalActivatedAbility(Zone.GRAVEYARD,
- new ReturnSourceFromGraveyardToHandEffect(), new ManaCostsImpl("{2}{R}{R}{R}"), new IsStepCondition(PhaseStep.END_COMBAT), null));
+ this.addAbility(new ConditionalActivatedAbility(Zone.GRAVEYARD,
+ new ReturnSourceFromGraveyardToHandEffect(), new ManaCostsImpl("{2}{R}{R}{R}"), new IsStepCondition(PhaseStep.UPKEEP), null));
}
public HammerOfBogardan(final HammerOfBogardan card) {
diff --git a/Mage.Sets/src/mage/sets/mirage/Illumination.java b/Mage.Sets/src/mage/sets/mirage/Illumination.java
new file mode 100644
index 0000000000..cbf7f23238
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/mirage/Illumination.java
@@ -0,0 +1,121 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.mirage;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.CounterTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.constants.Rarity;
+import mage.filter.FilterSpell;
+import mage.filter.predicate.Predicates;
+import mage.filter.predicate.mageobject.CardTypePredicate;
+import mage.game.Game;
+import mage.game.stack.Spell;
+import mage.players.Player;
+import mage.target.TargetSpell;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class Illumination extends CardImpl {
+
+ private static final FilterSpell filter = new FilterSpell("artifact or enchantment spell");
+
+ static {
+ filter.add(Predicates.or(
+ new CardTypePredicate(CardType.ARTIFACT),
+ new CardTypePredicate(CardType.ENCHANTMENT)));
+ }
+
+ public Illumination(UUID ownerId) {
+ super(ownerId, 225, "Illumination", Rarity.UNCOMMON, new CardType[]{CardType.INSTANT}, "{W}{W}");
+ this.expansionSetCode = "MIR";
+
+ // Counter target artifact or enchantment spell.
+ this.getSpellAbility().addEffect(new CounterTargetEffect());
+ this.getSpellAbility().addTarget(new TargetSpell(filter));
+
+ // Its controller gains life equal to its converted mana cost.
+ this.getSpellAbility().addEffect(new IlluminationEffect());
+ }
+
+ public Illumination(final Illumination card) {
+ super(card);
+ }
+
+ @Override
+ public Illumination copy() {
+ return new Illumination(this);
+ }
+}
+
+class IlluminationEffect extends OneShotEffect {
+
+ public IlluminationEffect() {
+ super(Outcome.GainLife);
+ staticText = "Its controller gains life equal to its converted mana cost";
+ }
+
+ public IlluminationEffect(final IlluminationEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public IlluminationEffect copy() {
+ return new IlluminationEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ UUID targetId = source.getFirstTarget();
+ Player controller = null;
+ boolean countered = false;
+ if (targetId != null) {
+ controller = game.getPlayer(game.getControllerId(targetId));
+ }
+ if (targetId != null
+ && game.getStack().counter(targetId, source.getSourceId(), game)) {
+ countered = true;
+ }
+ if (controller != null) {
+ Spell spell = game.getStack().getSpell(targetPointer.getFirst(game, source));
+ int cost = spell.getManaCost().convertedManaCost();
+ Player player = game.getPlayer(spell.getControllerId());
+ if (player != null) {
+ player.gainLife(cost, game);
+ }
+ return true;
+ }
+ return countered;
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/mirage/Jolt.java b/Mage.Sets/src/mage/sets/mirage/Jolt.java
new file mode 100644
index 0000000000..820ea3ba0e
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/mirage/Jolt.java
@@ -0,0 +1,78 @@
+/*
+ * 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.mirage;
+
+import java.util.UUID;
+import mage.abilities.common.delayed.AtTheBeginOfNextUpkeepDelayedTriggeredAbility;
+import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect;
+import mage.abilities.effects.common.DrawCardSourceControllerEffect;
+import mage.abilities.effects.common.MayTapOrUntapTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.filter.FilterPermanent;
+import mage.filter.predicate.Predicates;
+import mage.filter.predicate.mageobject.CardTypePredicate;
+import mage.target.TargetPermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class Jolt extends CardImpl {
+
+ private static final FilterPermanent filter = new FilterPermanent("artifact, creature, or land");
+
+ static {
+ filter.add(Predicates.or(
+ new CardTypePredicate(CardType.ARTIFACT),
+ new CardTypePredicate(CardType.CREATURE),
+ new CardTypePredicate(CardType.LAND)));
+ }
+
+ public Jolt(UUID ownerId) {
+ super(ownerId, 70, "Jolt", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{2}{U}");
+ this.expansionSetCode = "MIR";
+
+ // You may tap or untap target artifact, creature, or land.
+ this.getSpellAbility().addEffect(new MayTapOrUntapTargetEffect());
+ this.getSpellAbility().addTarget(new TargetPermanent(filter));
+
+ // Draw a card at the beginning of the next turn's upkeep.
+ this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1)), false));
+ }
+
+ public Jolt(final Jolt card) {
+ super(card);
+ }
+
+ @Override
+ public Jolt copy() {
+ return new Jolt(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/mirage/PoliticalTrickery.java b/Mage.Sets/src/mage/sets/mirage/PoliticalTrickery.java
new file mode 100644
index 0000000000..7572793826
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/mirage/PoliticalTrickery.java
@@ -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.mirage;
+
+import java.util.UUID;
+
+import mage.abilities.effects.Effect;
+import mage.abilities.effects.common.continuous.ExchangeControlTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.TargetController;
+import mage.filter.common.FilterControlledLandPermanent;
+import mage.filter.common.FilterLandPermanent;
+import mage.filter.predicate.permanent.ControllerPredicate;
+import mage.target.TargetPermanent;
+import mage.target.common.TargetControlledPermanent;
+
+/**
+ *
+ * @author andyfries
+ */
+public class PoliticalTrickery extends CardImpl {
+
+ private static final String rule = "exchange control of target land you control and target land an opponent controls";
+
+ private static final FilterLandPermanent filter = new FilterLandPermanent("land an opponent controls");
+
+ static {
+ filter.add(new ControllerPredicate(TargetController.OPPONENT));
+ }
+
+ public PoliticalTrickery(UUID ownerId) {
+ super(ownerId, 81, "Political Trickery", Rarity.RARE, new CardType[]{CardType.SORCERY}, "{2}{U}");
+ this.expansionSetCode = "MIR";
+
+ // Exchange control of target land you control and target land an opponent controls.
+ Effect effect = new ExchangeControlTargetEffect(Duration.EndOfGame, rule, false, true);
+ effect.setText("exchange control of target land you control and target land an opponent controls");
+ this.getSpellAbility().addEffect(effect);
+ this.getSpellAbility().addTarget(new TargetControlledPermanent(new FilterControlledLandPermanent()));
+ this.getSpellAbility().addTarget(new TargetPermanent(filter));
+ }
+
+ public PoliticalTrickery(final PoliticalTrickery card) {
+ super(card);
+ }
+
+ @Override
+ public PoliticalTrickery copy() {
+ return new PoliticalTrickery(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/mirage/ShadowGuildmage.java b/Mage.Sets/src/mage/sets/mirage/ShadowGuildmage.java
new file mode 100644
index 0000000000..a85110dc50
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/mirage/ShadowGuildmage.java
@@ -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.mirage;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.DamageControllerEffect;
+import mage.abilities.effects.common.DamageTargetEffect;
+import mage.abilities.effects.common.PutOnLibraryTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.target.common.TargetControlledCreaturePermanent;
+import mage.target.common.TargetCreatureOrPlayer;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class ShadowGuildmage extends CardImpl {
+
+ public ShadowGuildmage(UUID ownerId) {
+ super(ownerId, 38, "Shadow Guildmage", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{B}");
+ this.expansionSetCode = "MIR";
+ this.subtype.add("Human");
+ this.subtype.add("Wizard");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // {U}, {tap}: Put target creature you control on top of its owner's library.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new PutOnLibraryTargetEffect(true), new ManaCostsImpl("{U}"));
+ ability.addCost(new TapSourceCost());
+ ability.addTarget(new TargetControlledCreaturePermanent());
+ this.addAbility(ability);
+
+ // {R}, {tap}: Shadow Guildmage deals 1 damage to target creature or player and 1 damage to you.
+ ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1), new ManaCostsImpl("{R}"));
+ ability.addCost(new TapSourceCost());
+ ability.addEffect(new DamageControllerEffect(1));
+ ability.addTarget(new TargetCreatureOrPlayer());
+ this.addAbility(ability);
+ }
+
+ public ShadowGuildmage(final ShadowGuildmage card) {
+ super(card);
+ }
+
+ @Override
+ public ShadowGuildmage copy() {
+ return new ShadowGuildmage(this);
+ }
+}
\ No newline at end of file
diff --git a/Mage.Sets/src/mage/sets/mirage/ShaperGuildmage.java b/Mage.Sets/src/mage/sets/mirage/ShaperGuildmage.java
new file mode 100644
index 0000000000..9a7f7354b6
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/mirage/ShaperGuildmage.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.mirage;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.continuous.BoostTargetEffect;
+import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
+import mage.abilities.keyword.FirstStrikeAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class ShaperGuildmage extends CardImpl {
+
+ public ShaperGuildmage(UUID ownerId) {
+ super(ownerId, 91, "Shaper Guildmage", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{U}");
+ this.expansionSetCode = "MIR";
+ this.subtype.add("Human");
+ this.subtype.add("Wizard");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // {W}, {tap}: Target creature gains first strike until end of turn.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilityTargetEffect(FirstStrikeAbility.getInstance(), Duration.EndOfTurn), new ManaCostsImpl("{W}"));
+ ability.addCost(new TapSourceCost());
+ ability.addTarget(new TargetCreaturePermanent());
+ this.addAbility(ability);
+
+ // {B}, {tap}: Target creature gets +1/+0 until end of turn.
+ ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostTargetEffect(1, 0, Duration.EndOfTurn), new ManaCostsImpl("{B}"));
+ ability.addCost(new TapSourceCost());
+ ability.addTarget(new TargetCreaturePermanent());
+ this.addAbility(ability);
+ }
+
+ public ShaperGuildmage(final ShaperGuildmage card) {
+ super(card);
+ }
+
+ @Override
+ public ShaperGuildmage copy() {
+ return new ShaperGuildmage(this);
+ }
+}
\ No newline at end of file
diff --git a/Mage.Sets/src/mage/sets/mirage/SkulkingGhost.java b/Mage.Sets/src/mage/sets/mirage/SkulkingGhost.java
new file mode 100644
index 0000000000..e6c6792251
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/mirage/SkulkingGhost.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.mirage;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.BecomesTargetTriggeredAbility;
+import mage.abilities.effects.common.SacrificeSourceEffect;
+import mage.abilities.keyword.FlyingAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+
+/**
+ *
+ * @author LoneFox
+ */
+public class SkulkingGhost extends CardImpl {
+
+ public SkulkingGhost(UUID ownerId) {
+ super(ownerId, 41, "Skulking Ghost", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{1}{B}");
+ this.expansionSetCode = "MIR";
+ this.subtype.add("Spirit");
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(1);
+
+ // Flying
+ this.addAbility(FlyingAbility.getInstance());
+ // When Skulking Ghost becomes the target of a spell or ability, sacrifice it.
+ this.addAbility(new BecomesTargetTriggeredAbility(new SacrificeSourceEffect()));
+ }
+
+ public SkulkingGhost(final SkulkingGhost card) {
+ super(card);
+ }
+
+ @Override
+ public SkulkingGhost copy() {
+ return new SkulkingGhost(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/mirage/Taniwha.java b/Mage.Sets/src/mage/sets/mirage/Taniwha.java
new file mode 100644
index 0000000000..15b0e0426f
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/mirage/Taniwha.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.mirage;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.keyword.PhasingAbility;
+import mage.abilities.keyword.TrampleAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.constants.Rarity;
+import mage.constants.TargetController;
+import mage.filter.common.FilterControlledLandPermanent;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
+import mage.players.Player;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class Taniwha extends CardImpl {
+
+ public Taniwha(UUID ownerId) {
+ super(ownerId, 95, "Taniwha", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{3}{U}");
+ this.expansionSetCode = "MIR";
+ this.supertype.add("Legendary");
+ this.subtype.add("Serpent");
+ this.power = new MageInt(7);
+ this.toughness = new MageInt(7);
+
+ // Trample
+ this.addAbility(TrampleAbility.getInstance());
+
+ // Phasing
+ this.addAbility(PhasingAbility.getInstance());
+
+ // At the beginning of your upkeep, all lands you control phase out.
+ this.addAbility(new BeginningOfUpkeepTriggeredAbility(new TaniwhaEffect(), TargetController.YOU, false));
+ }
+
+ public Taniwha(final Taniwha card) {
+ super(card);
+ }
+
+ @Override
+ public Taniwha copy() {
+ return new Taniwha(this);
+ }
+}
+
+class TaniwhaEffect extends OneShotEffect {
+
+ public TaniwhaEffect() {
+ super(Outcome.Detriment);
+ this.staticText = "all lands you control phase out";
+ }
+
+ public TaniwhaEffect(final TaniwhaEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public TaniwhaEffect copy() {
+ return new TaniwhaEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player controller = game.getPlayer(source.getControllerId());
+ if (controller != null) {
+ for (Permanent permanent : game.getBattlefield().getActivePermanents(new FilterControlledLandPermanent(), controller.getId(), game)) {
+ permanent.phaseOut(game);
+ }
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/mirage/Thirst.java b/Mage.Sets/src/mage/sets/mirage/Thirst.java
new file mode 100644
index 0000000000..db2df103b7
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/mirage/Thirst.java
@@ -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.mirage;
+
+import java.util.UUID;
+import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
+import mage.abilities.common.EntersBattlefieldTriggeredAbility;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.AttachEffect;
+import mage.abilities.effects.common.DontUntapInControllersUntapStepEnchantedEffect;
+import mage.abilities.effects.common.SacrificeSourceUnlessPaysEffect;
+import mage.abilities.effects.common.TapEnchantedEffect;
+import mage.abilities.keyword.EnchantAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.constants.Rarity;
+import mage.constants.TargetController;
+import mage.constants.Zone;
+import mage.target.TargetPermanent;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author LoneFox
+ */
+public class Thirst extends CardImpl {
+
+ public Thirst(UUID ownerId) {
+ super(ownerId, 104, "Thirst", Rarity.COMMON, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}");
+ this.expansionSetCode = "MIR";
+ this.subtype.add("Aura");
+
+ // Enchant creature
+ TargetPermanent auraTarget = new TargetCreaturePermanent();
+ this.getSpellAbility().addTarget(auraTarget);
+ this.getSpellAbility().addEffect(new AttachEffect(Outcome.Detriment));
+ this.addAbility(new EnchantAbility(auraTarget.getTargetName()));
+ // When Thirst enters the battlefield, tap enchanted creature.
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new TapEnchantedEffect()));
+ // Enchanted creature doesn't untap during its controller's untap step.
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepEnchantedEffect()));
+ // At the beginning of your upkeep, sacrifice Thirst unless you pay {U}.
+ this.addAbility(new BeginningOfUpkeepTriggeredAbility(new SacrificeSourceUnlessPaysEffect(new ManaCostsImpl("{U}")),
+ TargetController.YOU, false));
+ }
+
+ public Thirst(final Thirst card) {
+ super(card);
+ }
+
+ @Override
+ public Thirst copy() {
+ return new Thirst(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/mirage/WildfireEmissary.java b/Mage.Sets/src/mage/sets/mirage/WildfireEmissary.java
new file mode 100644
index 0000000000..bfb6722778
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/mirage/WildfireEmissary.java
@@ -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.mirage;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.ObjectColor;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.continuous.BoostSourceEffect;
+import mage.abilities.keyword.ProtectionAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.filter.FilterCard;
+import mage.filter.predicate.mageobject.ColorPredicate;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class WildfireEmissary extends CardImpl {
+
+ private static final FilterCard filter = new FilterCard("white");
+
+ static {
+ filter.add(new ColorPredicate(ObjectColor.WHITE));
+ }
+
+ public WildfireEmissary(UUID ownerId) {
+ super(ownerId, 203, "Wildfire Emissary", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{3}{R}");
+ this.expansionSetCode = "MIR";
+ this.subtype.add("Efreet");
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(4);
+
+ // Protection from white
+ this.addAbility(new ProtectionAbility(filter));
+
+ // {1}{R}: Wildfire Emissary gets +1/+0 until end of turn.
+ this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(1, 0, Duration.EndOfTurn), new ManaCostsImpl("{1}{R}")));
+ }
+
+ public WildfireEmissary(final WildfireEmissary card) {
+ super(card);
+ }
+
+ @Override
+ public WildfireEmissary copy() {
+ return new WildfireEmissary(this);
+ }
+}
\ No newline at end of file
diff --git a/Mage.Sets/src/mage/sets/mirage/WitheringBoon.java b/Mage.Sets/src/mage/sets/mirage/WitheringBoon.java
new file mode 100644
index 0000000000..60bf5a1f63
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/mirage/WitheringBoon.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.mirage;
+
+import java.util.UUID;
+import mage.abilities.costs.common.PayLifeCost;
+import mage.abilities.effects.common.CounterTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.filter.FilterSpell;
+import mage.filter.predicate.mageobject.CardTypePredicate;
+import mage.target.TargetSpell;
+
+/**
+ *
+ * @author markedagain
+ */
+public class WitheringBoon extends CardImpl {
+ private static final FilterSpell filter = new FilterSpell("creature spell");
+
+ static {
+ filter.add(new CardTypePredicate(CardType.CREATURE));
+ }
+ public WitheringBoon(UUID ownerId) {
+ super(ownerId, 50, "Withering Boon", Rarity.UNCOMMON, new CardType[]{CardType.INSTANT}, "{1}{B}");
+ this.expansionSetCode = "MIR";
+
+ // As an additional cost to cast Withering Boon, pay 3 life.
+ this.getSpellAbility().addCost(new PayLifeCost(3));
+ // Counter target creature spell.
+ this.getSpellAbility().addEffect(new CounterTargetEffect());
+ this.getSpellAbility().addTarget(new TargetSpell(filter));
+ }
+
+ public WitheringBoon(final WitheringBoon card) {
+ super(card);
+ }
+
+ @Override
+ public WitheringBoon copy() {
+ return new WitheringBoon(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/mirage/ZebraUnicorn.java b/Mage.Sets/src/mage/sets/mirage/ZebraUnicorn.java
new file mode 100644
index 0000000000..0997b3149d
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/mirage/ZebraUnicorn.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.mirage;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.DealsDamageGainLifeSourceTriggeredAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class ZebraUnicorn extends CardImpl {
+
+ public ZebraUnicorn(UUID ownerId) {
+ super(ownerId, 350, "Zebra Unicorn", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{2}{G}{W}");
+ this.expansionSetCode = "MIR";
+ this.subtype.add("Unicorn");
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(2);
+
+ // Whenever Zebra Unicorn deals damage, you gain that much life.
+ this.addAbility(new DealsDamageGainLifeSourceTriggeredAbility());
+ }
+
+ public ZebraUnicorn(final ZebraUnicorn card) {
+ super(card);
+ }
+
+ @Override
+ public ZebraUnicorn copy() {
+ return new ZebraUnicorn(this);
+ }
+}
\ No newline at end of file
diff --git a/Mage.Sets/src/mage/sets/mirrodin/AEtherSpellbomb.java b/Mage.Sets/src/mage/sets/mirrodin/AEtherSpellbomb.java
index f13888a697..c27b2d019f 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/AEtherSpellbomb.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/AEtherSpellbomb.java
@@ -45,7 +45,7 @@ public class AEtherSpellbomb extends mage.sets.elspethvstezzeret.AEtherSpellbomb
super(card);
}
- @Override
+ @java.lang.Override
public AEtherSpellbomb copy() {
return new AEtherSpellbomb(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/AlphaMyr.java b/Mage.Sets/src/mage/sets/mirrodin/AlphaMyr.java
index 613bb3e433..8928b1b157 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/AlphaMyr.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/AlphaMyr.java
@@ -52,7 +52,7 @@ public class AlphaMyr extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public AlphaMyr copy() {
return new AlphaMyr(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/AltarsLight.java b/Mage.Sets/src/mage/sets/mirrodin/AltarsLight.java
index 4bc72f29f6..adc976a385 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/AltarsLight.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/AltarsLight.java
@@ -63,7 +63,7 @@ public class AltarsLight extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public AltarsLight copy() {
return new AltarsLight(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/AncientDen.java b/Mage.Sets/src/mage/sets/mirrodin/AncientDen.java
index 8093e62ee8..6d813331cc 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/AncientDen.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/AncientDen.java
@@ -50,7 +50,7 @@ public class AncientDen extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public AncientDen copy() {
return new AncientDen(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Annul.java b/Mage.Sets/src/mage/sets/mirrodin/Annul.java
index 9399d38cfe..c24d2101e2 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Annul.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Annul.java
@@ -63,7 +63,7 @@ public class Annul extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public Annul copy() {
return new Annul(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/ArcSlogger.java b/Mage.Sets/src/mage/sets/mirrodin/ArcSlogger.java
index 5566992025..a69747adbe 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/ArcSlogger.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/ArcSlogger.java
@@ -65,7 +65,7 @@ public class ArcSlogger extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public ArcSlogger copy() {
return new ArcSlogger(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Arrest.java b/Mage.Sets/src/mage/sets/mirrodin/Arrest.java
index aaf206d24f..6cd9dafc0c 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Arrest.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Arrest.java
@@ -70,7 +70,7 @@ public class Arrest extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public Arrest copy() {
return new Arrest(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/AssertAuthority.java b/Mage.Sets/src/mage/sets/mirrodin/AssertAuthority.java
index a392b15f73..3651291548 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/AssertAuthority.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/AssertAuthority.java
@@ -58,7 +58,7 @@ public class AssertAuthority extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public AssertAuthority copy() {
return new AssertAuthority(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Atog.java b/Mage.Sets/src/mage/sets/mirrodin/Atog.java
index 5a31d2ef6e..5d9f5f0036 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Atog.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Atog.java
@@ -68,7 +68,7 @@ public class Atog extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public Atog copy() {
return new Atog(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/AuriokBladewarden.java b/Mage.Sets/src/mage/sets/mirrodin/AuriokBladewarden.java
index cc71010233..0c0565c388 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/AuriokBladewarden.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/AuriokBladewarden.java
@@ -67,7 +67,7 @@ public class AuriokBladewarden extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public AuriokBladewarden copy() {
return new AuriokBladewarden(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/AuriokSteelshaper.java b/Mage.Sets/src/mage/sets/mirrodin/AuriokSteelshaper.java
index bc0d94da41..fdd7ffdd47 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/AuriokSteelshaper.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/AuriokSteelshaper.java
@@ -82,7 +82,7 @@ public class AuriokSteelshaper extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public AuriokSteelshaper copy() {
return new AuriokSteelshaper(this);
}
@@ -99,18 +99,18 @@ class AuriokSteelshaperCostReductionEffect extends CostModificationEffectImpl {
super(effect);
}
- @Override
+ @java.lang.Override
public AuriokSteelshaperCostReductionEffect copy() {
return new AuriokSteelshaperCostReductionEffect(this);
}
- @Override
+ @java.lang.Override
public boolean apply(Game game, Ability source, Ability abilityToModify) {
CardUtil.reduceCost(abilityToModify, 1);
return true;
}
- @Override
+ @java.lang.Override
public boolean applies(Ability abilityToModify, Ability source, Game game) {
return abilityToModify.getControllerId().equals(source.getControllerId()) &&
(abilityToModify instanceof EquipAbility);
diff --git a/Mage.Sets/src/mage/sets/mirrodin/AuriokTransfixer.java b/Mage.Sets/src/mage/sets/mirrodin/AuriokTransfixer.java
index f2cf65be8f..2c0ee1ec02 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/AuriokTransfixer.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/AuriokTransfixer.java
@@ -73,7 +73,7 @@ public class AuriokTransfixer extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public AuriokTransfixer copy() {
return new AuriokTransfixer(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/BansheesBlade.java b/Mage.Sets/src/mage/sets/mirrodin/BansheesBlade.java
index 896454e695..f3fe9728c3 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/BansheesBlade.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/BansheesBlade.java
@@ -71,7 +71,7 @@ public class BansheesBlade extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public BansheesBlade copy() {
return new BansheesBlade(this);
}
@@ -91,12 +91,12 @@ class BansheesBladeAbility extends TriggeredAbilityImpl {
this.usedInPhase = ability.usedInPhase;
}
- @Override
+ @java.lang.Override
public BansheesBladeAbility copy() {
return new BansheesBladeAbility(this);
}
- @Override
+ @java.lang.Override
public boolean checkEventType(GameEvent event, Game game) {
return event.getType() == EventType.DAMAGED_PLAYER
|| event.getType() == EventType.DAMAGED_CREATURE
@@ -104,7 +104,7 @@ class BansheesBladeAbility extends TriggeredAbilityImpl {
|| event.getType() == EventType.COMBAT_DAMAGE_STEP_PRE;
}
- @Override
+ @java.lang.Override
public boolean checkTrigger(GameEvent event, Game game) {
if (event instanceof DamagedEvent && ((DamagedEvent) event).isCombatDamage() && !usedInPhase) {
Permanent permanent = game.getPermanent(event.getSourceId());
@@ -119,7 +119,7 @@ class BansheesBladeAbility extends TriggeredAbilityImpl {
return false;
}
- @Override
+ @java.lang.Override
public String getRule() {
return "Whenever equipped creature deals combat damage, put a charge counter on {this}.";
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/BarterInBlood.java b/Mage.Sets/src/mage/sets/mirrodin/BarterInBlood.java
index 7ffb3d2db3..b4b2d060ad 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/BarterInBlood.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/BarterInBlood.java
@@ -45,7 +45,7 @@ public class BarterInBlood extends mage.sets.avacynrestored.BarterInBlood {
super(card);
}
- @Override
+ @java.lang.Override
public BarterInBlood copy() {
return new BarterInBlood(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Battlegrowth.java b/Mage.Sets/src/mage/sets/mirrodin/Battlegrowth.java
index 266267c2f8..cb5efc7db1 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Battlegrowth.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Battlegrowth.java
@@ -53,7 +53,7 @@ public class Battlegrowth extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public Battlegrowth copy() {
return new Battlegrowth(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/BetrayalOfFlesh.java b/Mage.Sets/src/mage/sets/mirrodin/BetrayalOfFlesh.java
index 50d0a33d43..c03a021913 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/BetrayalOfFlesh.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/BetrayalOfFlesh.java
@@ -73,7 +73,7 @@ public class BetrayalOfFlesh extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public BetrayalOfFlesh copy() {
return new BetrayalOfFlesh(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/BlindingBeam.java b/Mage.Sets/src/mage/sets/mirrodin/BlindingBeam.java
index b762ddbc0c..18f2b179b6 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/BlindingBeam.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/BlindingBeam.java
@@ -45,7 +45,7 @@ public class BlindingBeam extends mage.sets.elspethvstezzeret.BlindingBeam {
super(card);
}
- @Override
+ @java.lang.Override
public BlindingBeam copy() {
return new BlindingBeam(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/BlinkmothUrn.java b/Mage.Sets/src/mage/sets/mirrodin/BlinkmothUrn.java
index 5eea8cdfb5..a5ac16b9a1 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/BlinkmothUrn.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/BlinkmothUrn.java
@@ -41,7 +41,7 @@ public class BlinkmothUrn extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public BlinkmothUrn copy() {
return new BlinkmothUrn(this);
}
@@ -59,12 +59,12 @@ class BlinkmothUrnEffect extends OneShotEffect {
super(effect);
}
- @Override
+ @java.lang.Override
public BlinkmothUrnEffect copy() {
return new BlinkmothUrnEffect(this);
}
- @Override
+ @java.lang.Override
public boolean apply(Game game, Ability source) {
Player player = game.getPlayer(game.getActivePlayerId());
FilterArtifactPermanent filter = new FilterArtifactPermanent("artifacts you control");
diff --git a/Mage.Sets/src/mage/sets/mirrodin/BlinkmothWell.java b/Mage.Sets/src/mage/sets/mirrodin/BlinkmothWell.java
index cd023737f9..894222dbb6 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/BlinkmothWell.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/BlinkmothWell.java
@@ -72,7 +72,7 @@ public class BlinkmothWell extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public BlinkmothWell copy() {
return new BlinkmothWell(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Bloodscent.java b/Mage.Sets/src/mage/sets/mirrodin/Bloodscent.java
index 8fc5076042..2780de6bd8 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Bloodscent.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Bloodscent.java
@@ -55,7 +55,7 @@ public class Bloodscent extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public Bloodscent copy() {
return new Bloodscent(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Bonesplitter.java b/Mage.Sets/src/mage/sets/mirrodin/Bonesplitter.java
index ccf8f2c157..b2d4c29045 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Bonesplitter.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Bonesplitter.java
@@ -58,7 +58,7 @@ public class Bonesplitter extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public Bonesplitter copy() {
return new Bonesplitter(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/BoshIronGolem.java b/Mage.Sets/src/mage/sets/mirrodin/BoshIronGolem.java
index cd6d64cc78..051bd6d3b9 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/BoshIronGolem.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/BoshIronGolem.java
@@ -45,7 +45,7 @@ public class BoshIronGolem extends mage.sets.planechase.BoshIronGolem {
super(card);
}
- @Override
+ @java.lang.Override
public BoshIronGolem copy() {
return new BoshIronGolem(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/BottleGnomes.java b/Mage.Sets/src/mage/sets/mirrodin/BottleGnomes.java
index df238073ae..cf8f159ef1 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/BottleGnomes.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/BottleGnomes.java
@@ -45,7 +45,7 @@ public class BottleGnomes extends mage.sets.tempest.BottleGnomes {
super(card);
}
- @Override
+ @java.lang.Override
public BottleGnomes copy() {
return new BottleGnomes(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Broodstar.java b/Mage.Sets/src/mage/sets/mirrodin/Broodstar.java
index 47d749000f..ae4662db8b 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Broodstar.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Broodstar.java
@@ -45,7 +45,7 @@ public class Broodstar extends mage.sets.planechase.Broodstar {
super(card);
}
- @Override
+ @java.lang.Override
public Broodstar copy() {
return new Broodstar(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Cathodion.java b/Mage.Sets/src/mage/sets/mirrodin/Cathodion.java
index 8f38f129a8..6ca82d31e6 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Cathodion.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Cathodion.java
@@ -55,7 +55,7 @@ public class Cathodion extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public Cathodion copy() {
return new Cathodion(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/ChaliceOfTheVoid.java b/Mage.Sets/src/mage/sets/mirrodin/ChaliceOfTheVoid.java
index 92255a1111..9547ef0150 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/ChaliceOfTheVoid.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/ChaliceOfTheVoid.java
@@ -68,7 +68,7 @@ public class ChaliceOfTheVoid extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public ChaliceOfTheVoid copy() {
return new ChaliceOfTheVoid(this);
}
@@ -84,7 +84,7 @@ class ChaliceOfTheVoidEffect extends OneShotEffect {
super(effect);
}
- @Override
+ @java.lang.Override
public boolean apply(Game game, Ability source) {
Permanent permanent = game.getPermanent(source.getSourceId());
if (permanent != null) {
@@ -101,7 +101,7 @@ class ChaliceOfTheVoidEffect extends OneShotEffect {
return true;
}
- @Override
+ @java.lang.Override
public ChaliceOfTheVoidEffect copy() {
return new ChaliceOfTheVoidEffect(this);
}
@@ -119,17 +119,17 @@ class ChaliceOfTheVoidTriggeredAbility extends TriggeredAbilityImpl {
super(abiltity);
}
- @Override
+ @java.lang.Override
public ChaliceOfTheVoidTriggeredAbility copy() {
return new ChaliceOfTheVoidTriggeredAbility(this);
}
- @Override
+ @java.lang.Override
public boolean checkEventType(GameEvent event, Game game) {
return event.getType() == GameEvent.EventType.SPELL_CAST;
}
- @Override
+ @java.lang.Override
public boolean checkTrigger(GameEvent event, Game game) {
Permanent chalice = game.getPermanent(getSourceId());
Spell spell = game.getStack().getSpell(event.getTargetId());
@@ -142,7 +142,7 @@ class ChaliceOfTheVoidTriggeredAbility extends TriggeredAbilityImpl {
return false;
}
- @Override
+ @java.lang.Override
public String getRule() {
return "Whenever a player casts a spell with converted mana cost equal to the number of charge counters on {this}, counter that spell.";
}
@@ -159,12 +159,12 @@ class CounterEffect extends OneShotEffect {
super(effect);
}
- @Override
+ @java.lang.Override
public CounterEffect copy() {
return new CounterEffect(this);
}
- @Override
+ @java.lang.Override
public boolean apply(Game game, Ability source) {
return game.getStack().counter(this.getTargetPointer().getFirst(game, source), source.getSourceId(), game);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/ChromaticSphere.java b/Mage.Sets/src/mage/sets/mirrodin/ChromaticSphere.java
index 0d8ee85234..1b9b2c20ae 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/ChromaticSphere.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/ChromaticSphere.java
@@ -61,7 +61,7 @@ public class ChromaticSphere extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public ChromaticSphere copy() {
return new ChromaticSphere(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/ChromeMox.java b/Mage.Sets/src/mage/sets/mirrodin/ChromeMox.java
index 00e8256abb..af94a37a99 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/ChromeMox.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/ChromeMox.java
@@ -73,7 +73,7 @@ public class ChromeMox extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public ChromeMox copy() {
return new ChromeMox(this);
}
@@ -94,7 +94,7 @@ class ChromeMoxEffect extends OneShotEffect {
super(effect);
}
- @Override
+ @java.lang.Override
public boolean apply(Game game, Ability source) {
Player player = game.getPlayer(source.getControllerId());
if (player.getHand().size() > 0) {
@@ -113,7 +113,7 @@ class ChromeMoxEffect extends OneShotEffect {
return true;
}
- @Override
+ @java.lang.Override
public ChromeMoxEffect copy() {
return new ChromeMoxEffect(this);
}
@@ -135,12 +135,12 @@ class ChromeMoxManaEffect extends ManaEffect {
- @Override
+ @java.lang.Override
public ChromeMoxManaEffect copy() {
return new ChromeMoxManaEffect(this);
}
- @Override
+ @java.lang.Override
public boolean apply(Game game, Ability source) {
Permanent permanent = game.getPermanent(source.getSourceId());
Player player = game.getPlayer(source.getControllerId());
@@ -197,7 +197,7 @@ class ChromeMoxManaEffect extends ManaEffect {
return true;
}
- @Override
+ @java.lang.Override
public Mana getMana(Game game, Ability source) {
return null;
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/ClockworkBeetle.java b/Mage.Sets/src/mage/sets/mirrodin/ClockworkBeetle.java
index 7f91eb2f87..f544032e83 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/ClockworkBeetle.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/ClockworkBeetle.java
@@ -65,7 +65,7 @@ public class ClockworkBeetle extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public ClockworkBeetle copy() {
return new ClockworkBeetle(this);
}
@@ -81,7 +81,7 @@ class ClockworkBeetleEffect extends OneShotEffect {
super(effect);
}
- @Override
+ @java.lang.Override
public boolean apply(Game game, Ability source) {
Permanent p = game.getPermanent(source.getSourceId());
if (p != null) {
@@ -93,7 +93,7 @@ class ClockworkBeetleEffect extends OneShotEffect {
return false;
}
- @Override
+ @java.lang.Override
public ClockworkBeetleEffect copy() {
return new ClockworkBeetleEffect(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/ClockworkCondor.java b/Mage.Sets/src/mage/sets/mirrodin/ClockworkCondor.java
index 6a01b421d4..d995f96848 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/ClockworkCondor.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/ClockworkCondor.java
@@ -68,7 +68,7 @@ public class ClockworkCondor extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public ClockworkCondor copy() {
return new ClockworkCondor(this);
}
@@ -84,7 +84,7 @@ class ClockworkCondorEffect extends OneShotEffect {
super(effect);
}
- @Override
+ @java.lang.Override
public boolean apply(Game game, Ability source) {
Permanent p = game.getPermanent(source.getSourceId());
if (p != null) {
@@ -96,7 +96,7 @@ class ClockworkCondorEffect extends OneShotEffect {
return false;
}
- @Override
+ @java.lang.Override
public ClockworkCondorEffect copy() {
return new ClockworkCondorEffect(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/ClockworkDragon.java b/Mage.Sets/src/mage/sets/mirrodin/ClockworkDragon.java
index 89edef7ff4..d478eb1a37 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/ClockworkDragon.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/ClockworkDragon.java
@@ -72,7 +72,7 @@ public class ClockworkDragon extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public ClockworkDragon copy() {
return new ClockworkDragon(this);
}
@@ -88,7 +88,7 @@ class ClockworkDragonEffect extends OneShotEffect {
super(effect);
}
- @Override
+ @java.lang.Override
public boolean apply(Game game, Ability source) {
Permanent p = game.getPermanent(source.getSourceId());
if (p != null) {
@@ -100,7 +100,7 @@ class ClockworkDragonEffect extends OneShotEffect {
return false;
}
- @Override
+ @java.lang.Override
public ClockworkDragonEffect copy() {
return new ClockworkDragonEffect(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/ClockworkVorrac.java b/Mage.Sets/src/mage/sets/mirrodin/ClockworkVorrac.java
index f51b7517be..e783cbcbbb 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/ClockworkVorrac.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/ClockworkVorrac.java
@@ -72,7 +72,7 @@ public class ClockworkVorrac extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public ClockworkVorrac copy() {
return new ClockworkVorrac(this);
}
@@ -88,7 +88,7 @@ class ClockworkVorracEffect extends OneShotEffect {
super(effect);
}
- @Override
+ @java.lang.Override
public boolean apply(Game game, Ability source) {
Permanent p = game.getPermanent(source.getSourceId());
if (p != null) {
@@ -100,7 +100,7 @@ class ClockworkVorracEffect extends OneShotEffect {
return false;
}
- @Override
+ @java.lang.Override
public ClockworkVorracEffect copy() {
return new ClockworkVorracEffect(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Cloudpost.java b/Mage.Sets/src/mage/sets/mirrodin/Cloudpost.java
index 2de82786bb..ea6e278bc9 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Cloudpost.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Cloudpost.java
@@ -65,7 +65,7 @@ public class Cloudpost extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public Cloudpost copy() {
return new Cloudpost(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/CobaltGolem.java b/Mage.Sets/src/mage/sets/mirrodin/CobaltGolem.java
index 01c3b87fee..af9c86341d 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/CobaltGolem.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/CobaltGolem.java
@@ -59,7 +59,7 @@ public class CobaltGolem extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public CobaltGolem copy() {
return new CobaltGolem(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/ConsumeSpirit.java b/Mage.Sets/src/mage/sets/mirrodin/ConsumeSpirit.java
index c0bea16de0..6c5da65656 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/ConsumeSpirit.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/ConsumeSpirit.java
@@ -47,7 +47,7 @@ public class ConsumeSpirit extends mage.sets.magic2010.ConsumeSpirit {
super(card);
}
- @Override
+ @java.lang.Override
public ConsumeSpirit copy() {
return new ConsumeSpirit(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/ContaminatedBond.java b/Mage.Sets/src/mage/sets/mirrodin/ContaminatedBond.java
index e38e9aa0c8..b89a4f8a8f 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/ContaminatedBond.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/ContaminatedBond.java
@@ -45,7 +45,7 @@ public class ContaminatedBond extends mage.sets.ninthedition.ContaminatedBond {
super(card);
}
- @Override
+ @java.lang.Override
public ContaminatedBond copy() {
return new ContaminatedBond(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/CopperMyr.java b/Mage.Sets/src/mage/sets/mirrodin/CopperMyr.java
index 6891e88e69..395c564520 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/CopperMyr.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/CopperMyr.java
@@ -54,7 +54,7 @@ public class CopperMyr extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public CopperMyr copy() {
return new CopperMyr(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/CreepingMold.java b/Mage.Sets/src/mage/sets/mirrodin/CreepingMold.java
index a6400e102f..307d6dfea7 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/CreepingMold.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/CreepingMold.java
@@ -45,7 +45,7 @@ public class CreepingMold extends mage.sets.tenthedition.CreepingMold {
super(card);
}
- @Override
+ @java.lang.Override
public CreepingMold copy() {
return new CreepingMold(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/CrystalShard.java b/Mage.Sets/src/mage/sets/mirrodin/CrystalShard.java
index 5b6e779b37..5068a42903 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/CrystalShard.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/CrystalShard.java
@@ -70,7 +70,7 @@ public class CrystalShard extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public CrystalShard copy() {
return new CrystalShard(this);
}
@@ -91,12 +91,12 @@ class CrystalShardEffect extends OneShotEffect {
this.cost = effect.cost.copy();
}
- @Override
+ @java.lang.Override
public CrystalShardEffect copy() {
return new CrystalShardEffect(this);
}
- @Override
+ @java.lang.Override
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
diff --git a/Mage.Sets/src/mage/sets/mirrodin/DampingMatrix.java b/Mage.Sets/src/mage/sets/mirrodin/DampingMatrix.java
index 491766f4fd..fb7dfb0f0d 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/DampingMatrix.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/DampingMatrix.java
@@ -65,7 +65,7 @@ public class DampingMatrix extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public DampingMatrix copy() {
return new DampingMatrix(this);
}
@@ -89,22 +89,22 @@ class DampingMatrixEffect extends ReplacementEffectImpl {
super(effect);
}
- @Override
+ @java.lang.Override
public DampingMatrixEffect copy() {
return new DampingMatrixEffect(this);
}
- @Override
+ @java.lang.Override
public boolean replaceEvent(GameEvent event, Ability source, Game game) {
return true;
}
- @Override
+ @java.lang.Override
public boolean checksEventType(GameEvent event, Game game) {
return event.getType() == EventType.ACTIVATE_ABILITY;
}
- @Override
+ @java.lang.Override
public boolean applies(GameEvent event, Ability source, Game game) {
MageObject object = game.getObject(event.getSourceId());
if (object instanceof Permanent && filter.match((Permanent)object, game)) {
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Deconstruct.java b/Mage.Sets/src/mage/sets/mirrodin/Deconstruct.java
index 1e6eef3d17..9ee62a3fbb 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Deconstruct.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Deconstruct.java
@@ -63,7 +63,7 @@ public class Deconstruct extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public Deconstruct copy() {
return new Deconstruct(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/DiscipleOfTheVault.java b/Mage.Sets/src/mage/sets/mirrodin/DiscipleOfTheVault.java
index 223f4b99aa..6355d35451 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/DiscipleOfTheVault.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/DiscipleOfTheVault.java
@@ -69,7 +69,7 @@ public class DiscipleOfTheVault extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public DiscipleOfTheVault copy() {
return new DiscipleOfTheVault(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/DragonBlood.java b/Mage.Sets/src/mage/sets/mirrodin/DragonBlood.java
index e3c6c1015c..fb9cfeb570 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/DragonBlood.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/DragonBlood.java
@@ -60,7 +60,7 @@ public class DragonBlood extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public DragonBlood copy() {
return new DragonBlood(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/DreamsGrip.java b/Mage.Sets/src/mage/sets/mirrodin/DreamsGrip.java
index 1f539e867e..228e76e2d7 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/DreamsGrip.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/DreamsGrip.java
@@ -74,7 +74,7 @@ public class DreamsGrip extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public DreamsGrip copy() {
return new DreamsGrip(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/DrossProwler.java b/Mage.Sets/src/mage/sets/mirrodin/DrossProwler.java
index 060d0a0484..36fe5a79a4 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/DrossProwler.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/DrossProwler.java
@@ -55,7 +55,7 @@ public class DrossProwler extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public DrossProwler copy() {
return new DrossProwler(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Duplicant.java b/Mage.Sets/src/mage/sets/mirrodin/Duplicant.java
index 097ad9b5bb..97e6c4811d 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Duplicant.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Duplicant.java
@@ -81,7 +81,7 @@ public class Duplicant extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public Duplicant copy() {
return new Duplicant(this);
}
@@ -97,12 +97,12 @@ class ExileTargetEffect extends OneShotEffect {
super(effect);
}
- @Override
+ @java.lang.Override
public ExileTargetEffect copy() {
return new ExileTargetEffect(this);
}
- @Override
+ @java.lang.Override
public boolean apply(Game game, Ability source) {
Permanent permanent = game.getPermanent(targetPointer.getFirst(game, source));
Permanent sourcePermananent = game.getPermanent(source.getSourceId());
@@ -117,7 +117,7 @@ class ExileTargetEffect extends OneShotEffect {
return false;
}
- @Override
+ @java.lang.Override
public String getText(Mode mode) {
return "you may exile target nontoken creature";
}
@@ -135,12 +135,12 @@ class DuplicantContinuousEffect extends ContinuousEffectImpl {
super(effect);
}
- @Override
+ @java.lang.Override
public DuplicantContinuousEffect copy() {
return new DuplicantContinuousEffect(this);
}
- @Override
+ @java.lang.Override
public boolean apply(Layer layer, SubLayer sublayer, Ability source, Game game) {
Permanent permanent = game.getPermanent(source.getSourceId());
if (permanent != null) {
@@ -172,12 +172,12 @@ class DuplicantContinuousEffect extends ContinuousEffectImpl {
return false;
}
- @Override
+ @java.lang.Override
public boolean apply(Game game, Ability source) {
return false;
}
- @Override
+ @java.lang.Override
public boolean hasLayer(Layer layer) {
return layer == Layer.PTChangingEffects_7 || layer == Layer.TypeChangingEffects_4;
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Duskworker.java b/Mage.Sets/src/mage/sets/mirrodin/Duskworker.java
index 5a0c14ff4d..a3e8b1dcf5 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Duskworker.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Duskworker.java
@@ -61,7 +61,7 @@ public class Duskworker extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public Duskworker copy() {
return new Duskworker(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/ElfReplica.java b/Mage.Sets/src/mage/sets/mirrodin/ElfReplica.java
index 1384238764..c7a006aa34 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/ElfReplica.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/ElfReplica.java
@@ -71,7 +71,7 @@ public class ElfReplica extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public ElfReplica copy() {
return new ElfReplica(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/EmpyrialPlate.java b/Mage.Sets/src/mage/sets/mirrodin/EmpyrialPlate.java
index 8e670b1954..f4f896cb3d 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/EmpyrialPlate.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/EmpyrialPlate.java
@@ -61,7 +61,7 @@ public class EmpyrialPlate extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public EmpyrialPlate copy() {
return new EmpyrialPlate(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/ExtraplanarLens.java b/Mage.Sets/src/mage/sets/mirrodin/ExtraplanarLens.java
index b019f5c019..343798c557 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/ExtraplanarLens.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/ExtraplanarLens.java
@@ -73,7 +73,7 @@ public class ExtraplanarLens extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public ExtraplanarLens copy() {
return new ExtraplanarLens(this);
}
@@ -96,7 +96,7 @@ class ExtraplanarLensImprintEffect extends OneShotEffect {
super(effect);
}
- @Override
+ @java.lang.Override
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
Permanent extraplanarLens = game.getPermanentOrLKIBattlefield(source.getSourceId());
@@ -118,7 +118,7 @@ class ExtraplanarLensImprintEffect extends OneShotEffect {
return false;
}
- @Override
+ @java.lang.Override
public ExtraplanarLensImprintEffect copy() {
return new ExtraplanarLensImprintEffect(this);
}
@@ -135,12 +135,12 @@ class ExtraplanarLensTriggeredAbility extends TriggeredManaAbility {
super(ability);
}
- @Override
+ @java.lang.Override
public boolean checkEventType(GameEvent event, Game game) {
return event.getType() == GameEvent.EventType.TAPPED_FOR_MANA;
}
- @Override
+ @java.lang.Override
public boolean checkTrigger(GameEvent event, Game game) {
Permanent landTappedForMana = game.getPermanentOrLKIBattlefield(event.getSourceId());
Permanent extraplanarLens = game.getPermanent(getSourceId());
@@ -164,12 +164,12 @@ class ExtraplanarLensTriggeredAbility extends TriggeredManaAbility {
return false;
}
- @Override
+ @java.lang.Override
public String getRule() {
return new StringBuilder("Whenever a land with the same name as the exiled card is tapped for mana, ").append(super.getRule()).toString();
}
- @Override
+ @java.lang.Override
public ExtraplanarLensTriggeredAbility copy() {
return new ExtraplanarLensTriggeredAbility(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Fabricate.java b/Mage.Sets/src/mage/sets/mirrodin/Fabricate.java
index 17ae471d3d..f188f69da3 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Fabricate.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Fabricate.java
@@ -45,7 +45,7 @@ public class Fabricate extends mage.sets.magic2010.Fabricate {
super(card);
}
- @Override
+ @java.lang.Override
public Fabricate copy() {
return new Fabricate(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/FangrenHunter.java b/Mage.Sets/src/mage/sets/mirrodin/FangrenHunter.java
index fcda78ed97..a50ce1baf3 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/FangrenHunter.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/FangrenHunter.java
@@ -55,7 +55,7 @@ public class FangrenHunter extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public FangrenHunter copy() {
return new FangrenHunter(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/FarsightMask.java b/Mage.Sets/src/mage/sets/mirrodin/FarsightMask.java
index 7aa5166950..3638e18895 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/FarsightMask.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/FarsightMask.java
@@ -56,7 +56,7 @@ public class FarsightMask extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public FarsightMask copy() {
return new FarsightMask(this);
}
@@ -72,23 +72,23 @@ class FarsightMaskTriggeredAbility extends TriggeredAbilityImpl {
super(ability);
}
- @Override
+ @java.lang.Override
public FarsightMaskTriggeredAbility copy() {
return new FarsightMaskTriggeredAbility(this);
}
- @Override
+ @java.lang.Override
public boolean checkEventType(GameEvent event, Game game) {
return event.getType().equals(GameEvent.EventType.DAMAGED_PLAYER);
}
- @Override
+ @java.lang.Override
public boolean checkInterveningIfClause(Game game) {
Permanent permanent = game.getPermanent(getSourceId());
return permanent != null && !permanent.isTapped();
}
- @Override
+ @java.lang.Override
public boolean checkTrigger(GameEvent event, Game game) {
if (event.getTargetId().equals(controllerId)) {
UUID sourceControllerId = game.getControllerId(event.getSourceId());
@@ -99,7 +99,7 @@ class FarsightMaskTriggeredAbility extends TriggeredAbilityImpl {
return false;
}
- @Override
+ @java.lang.Override
public String getRule() {
return "Whenever a source an opponent controls deals damage to you, if {this} is untapped, you may draw a card.";
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/FieryGambit.java b/Mage.Sets/src/mage/sets/mirrodin/FieryGambit.java
index 25be1b7f87..c95dbad0ff 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/FieryGambit.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/FieryGambit.java
@@ -63,7 +63,7 @@ public class FieryGambit extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public FieryGambit copy() {
return new FieryGambit(this);
}
@@ -81,12 +81,12 @@ class FieryGambitEffect extends OneShotEffect {
super(effect);
}
- @Override
+ @java.lang.Override
public FieryGambitEffect copy() {
return new FieryGambitEffect(this);
}
- @Override
+ @java.lang.Override
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Fireshrieker.java b/Mage.Sets/src/mage/sets/mirrodin/Fireshrieker.java
index 5371b7da9b..1e3504d471 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Fireshrieker.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Fireshrieker.java
@@ -45,7 +45,7 @@ public class Fireshrieker extends mage.sets.magic2014.Fireshrieker {
super(card);
}
- @Override
+ @java.lang.Override
public Fireshrieker copy() {
return new Fireshrieker(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/FistsOfTheAnvil.java b/Mage.Sets/src/mage/sets/mirrodin/FistsOfTheAnvil.java
index 2f42a1b088..c091e6f2b6 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/FistsOfTheAnvil.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/FistsOfTheAnvil.java
@@ -45,7 +45,7 @@ public class FistsOfTheAnvil extends mage.sets.tenthedition.FistsOfTheAnvil {
super(card);
}
- @Override
+ @java.lang.Override
public FistsOfTheAnvil copy() {
return new FistsOfTheAnvil(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Forest1.java b/Mage.Sets/src/mage/sets/mirrodin/Forest1.java
index d3c05ea5c4..417118b11a 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Forest1.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Forest1.java
@@ -44,7 +44,7 @@ public class Forest1 extends mage.cards.basiclands.Forest {
super(card);
}
- @Override
+ @java.lang.Override
public Forest1 copy() {
return new Forest1(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Forest2.java b/Mage.Sets/src/mage/sets/mirrodin/Forest2.java
index ff6380dca7..fd9f4b3e5f 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Forest2.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Forest2.java
@@ -44,7 +44,7 @@ public class Forest2 extends mage.cards.basiclands.Forest {
super(card);
}
- @Override
+ @java.lang.Override
public Forest2 copy() {
return new Forest2(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Forest3.java b/Mage.Sets/src/mage/sets/mirrodin/Forest3.java
index 3b443dff6e..5bc9d69b78 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Forest3.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Forest3.java
@@ -44,7 +44,7 @@ public class Forest3 extends mage.cards.basiclands.Forest {
super(card);
}
- @Override
+ @java.lang.Override
public Forest3 copy() {
return new Forest3(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Forest4.java b/Mage.Sets/src/mage/sets/mirrodin/Forest4.java
index 676ccafb7c..12bfcb4ed7 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Forest4.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Forest4.java
@@ -44,7 +44,7 @@ public class Forest4 extends mage.cards.basiclands.Forest {
super(card);
}
- @Override
+ @java.lang.Override
public Forest4 copy() {
return new Forest4(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Frogmite.java b/Mage.Sets/src/mage/sets/mirrodin/Frogmite.java
index e5bf48cfe4..e4de69dba5 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Frogmite.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Frogmite.java
@@ -45,7 +45,7 @@ public class Frogmite extends mage.sets.elspethvstezzeret.Frogmite {
super(card);
}
- @Override
+ @java.lang.Override
public Frogmite copy() {
return new Frogmite(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/GalvanicKey.java b/Mage.Sets/src/mage/sets/mirrodin/GalvanicKey.java
index 57fba23da1..31cf76f1fa 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/GalvanicKey.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/GalvanicKey.java
@@ -69,7 +69,7 @@ public class GalvanicKey extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public GalvanicKey copy() {
return new GalvanicKey(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/GildedLotus.java b/Mage.Sets/src/mage/sets/mirrodin/GildedLotus.java
index b3a9670c52..afd3842ee6 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/GildedLotus.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/GildedLotus.java
@@ -45,7 +45,7 @@ public class GildedLotus extends mage.sets.magic2013.GildedLotus {
super(card);
}
- @Override
+ @java.lang.Override
public GildedLotus copy() {
return new GildedLotus(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Glimmervoid.java b/Mage.Sets/src/mage/sets/mirrodin/Glimmervoid.java
index f8f27d33be..75ab8e50f0 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Glimmervoid.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Glimmervoid.java
@@ -60,7 +60,7 @@ public class Glimmervoid extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public Glimmervoid copy() {
return new Glimmervoid(this);
}
@@ -76,17 +76,17 @@ class GlimmervoidTriggeredAbility extends TriggeredAbilityImpl {
super(ability);
}
- @Override
+ @java.lang.Override
public GlimmervoidTriggeredAbility copy() {
return new GlimmervoidTriggeredAbility(this);
}
- @Override
+ @java.lang.Override
public boolean checkEventType(GameEvent event, Game game) {
return event.getType() == EventType.END_TURN_STEP_PRE;
}
- @Override
+ @java.lang.Override
public boolean checkTrigger(GameEvent event, Game game) {
FilterArtifactPermanent filter = new FilterArtifactPermanent();
if (!game.getBattlefield().contains(filter, controllerId, 1, game)) {
@@ -95,7 +95,7 @@ class GlimmervoidTriggeredAbility extends TriggeredAbilityImpl {
return false;
}
- @Override
+ @java.lang.Override
public String getRule() {
return "At the beginning of the end step, if you control no artifacts, sacrifice {this}.";
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/GlissaSunseeker.java b/Mage.Sets/src/mage/sets/mirrodin/GlissaSunseeker.java
index f4520e50e5..4e6bc4c5fe 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/GlissaSunseeker.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/GlissaSunseeker.java
@@ -72,7 +72,7 @@ public class GlissaSunseeker extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public GlissaSunseeker copy() {
return new GlissaSunseeker(this);
}
@@ -89,12 +89,12 @@ class GlissaSunseekerEffect extends OneShotEffect {
super(effect);
}
- @Override
+ @java.lang.Override
public GlissaSunseekerEffect copy() {
return new GlissaSunseekerEffect(this);
}
- @Override
+ @java.lang.Override
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
ManaPool pool = controller.getManaPool();
diff --git a/Mage.Sets/src/mage/sets/mirrodin/GoblinCharbelcher.java b/Mage.Sets/src/mage/sets/mirrodin/GoblinCharbelcher.java
index 4d592923a7..654c4e4dcf 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/GoblinCharbelcher.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/GoblinCharbelcher.java
@@ -68,7 +68,7 @@ public class GoblinCharbelcher extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public GoblinCharbelcher copy() {
return new GoblinCharbelcher(this);
}
@@ -85,12 +85,12 @@ class GoblinCharbelcherEffect extends OneShotEffect {
super(effect);
}
- @Override
+ @java.lang.Override
public GoblinCharbelcherEffect copy() {
return new GoblinCharbelcherEffect(this);
}
- @Override
+ @java.lang.Override
public boolean apply(Game game, Ability source) {
boolean isMountain = false;
MageObject sourceObject = game.getObject(source.getSourceId());
diff --git a/Mage.Sets/src/mage/sets/mirrodin/GoblinReplica.java b/Mage.Sets/src/mage/sets/mirrodin/GoblinReplica.java
index d5b315d609..aeffd5c109 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/GoblinReplica.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/GoblinReplica.java
@@ -71,7 +71,7 @@ public class GoblinReplica extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public GoblinReplica copy() {
return new GoblinReplica(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/GoblinStriker.java b/Mage.Sets/src/mage/sets/mirrodin/GoblinStriker.java
index 51ad002083..e0944b2ca6 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/GoblinStriker.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/GoblinStriker.java
@@ -58,7 +58,7 @@ public class GoblinStriker extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public GoblinStriker copy() {
return new GoblinStriker(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/GoldMyr.java b/Mage.Sets/src/mage/sets/mirrodin/GoldMyr.java
index 843a45b436..6f1fd69cb8 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/GoldMyr.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/GoldMyr.java
@@ -54,7 +54,7 @@ public class GoldMyr extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public GoldMyr copy() {
return new GoldMyr(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/GolemSkinGauntlets.java b/Mage.Sets/src/mage/sets/mirrodin/GolemSkinGauntlets.java
index bfbead38c7..b5beeb571e 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/GolemSkinGauntlets.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/GolemSkinGauntlets.java
@@ -62,7 +62,7 @@ public class GolemSkinGauntlets extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public GolemSkinGauntlets copy() {
return new GolemSkinGauntlets(this);
}
@@ -78,7 +78,7 @@ class GolemSkinGauntletsAttachedCount implements DynamicValue {
public GolemSkinGauntletsAttachedCount(final GolemSkinGauntletsAttachedCount dynamicValue) {
}
- @Override
+ @java.lang.Override
public int calculate(Game game, Ability source, Effect effect) {
int count = 0;
Permanent equipment = game.getPermanent(source.getSourceId());
@@ -98,17 +98,17 @@ class GolemSkinGauntletsAttachedCount implements DynamicValue {
return count;
}
- @Override
+ @java.lang.Override
public DynamicValue copy() {
return new GolemSkinGauntletsAttachedCount(this);
}
- @Override
+ @java.lang.Override
public String toString() {
return "1";
}
- @Override
+ @java.lang.Override
public String getMessage() {
return "Equipment attached to it";
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/GrabTheReins.java b/Mage.Sets/src/mage/sets/mirrodin/GrabTheReins.java
index 905ef340f2..1cbdbdbb75 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/GrabTheReins.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/GrabTheReins.java
@@ -89,7 +89,7 @@ public class GrabTheReins extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public GrabTheReins copy() {
return new GrabTheReins(this);
}
@@ -106,7 +106,7 @@ class GrabTheReinsEffect extends OneShotEffect {
super(effect);
}
- @Override
+ @java.lang.Override
public boolean apply(Game game, Ability source) {
UUID controllerId = source.getControllerId();
Target target = new TargetCreaturePermanent();
@@ -142,7 +142,7 @@ class GrabTheReinsEffect extends OneShotEffect {
return false;
}
- @Override
+ @java.lang.Override
public GrabTheReinsEffect copy() {
return new GrabTheReinsEffect(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/GreatFurnace.java b/Mage.Sets/src/mage/sets/mirrodin/GreatFurnace.java
index 5a759d25d8..abe44d7765 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/GreatFurnace.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/GreatFurnace.java
@@ -50,7 +50,7 @@ public class GreatFurnace extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public GreatFurnace copy() {
return new GreatFurnace(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/HematiteGolem.java b/Mage.Sets/src/mage/sets/mirrodin/HematiteGolem.java
index c35522ba36..0e8e54ad99 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/HematiteGolem.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/HematiteGolem.java
@@ -58,7 +58,7 @@ public class HematiteGolem extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public HematiteGolem copy() {
return new HematiteGolem(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/IcyManipulator.java b/Mage.Sets/src/mage/sets/mirrodin/IcyManipulator.java
index 20129833d8..5a453583f1 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/IcyManipulator.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/IcyManipulator.java
@@ -45,7 +45,7 @@ public class IcyManipulator extends mage.sets.tenthedition.IcyManipulator {
super(card);
}
- @Override
+ @java.lang.Override
public IcyManipulator copy() {
return new IcyManipulator(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/InciteWar.java b/Mage.Sets/src/mage/sets/mirrodin/InciteWar.java
index aecd8e0290..b7635f2125 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/InciteWar.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/InciteWar.java
@@ -82,7 +82,7 @@ public class InciteWar extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public InciteWar copy() {
return new InciteWar(this);
}
@@ -99,12 +99,12 @@ class InciteWarMustAttackEffect extends OneShotEffect {
super(effect);
}
- @Override
+ @java.lang.Override
public InciteWarMustAttackEffect copy() {
return new InciteWarMustAttackEffect(this);
}
- @Override
+ @java.lang.Override
public boolean apply(Game game, Ability source) {
Player player = game.getPlayer(this.getTargetPointer().getFirst(game, source));
if (player != null) {
diff --git a/Mage.Sets/src/mage/sets/mirrodin/IronMyr.java b/Mage.Sets/src/mage/sets/mirrodin/IronMyr.java
index b8b92d7c43..713188380d 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/IronMyr.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/IronMyr.java
@@ -54,7 +54,7 @@ public class IronMyr extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public IronMyr copy() {
return new IronMyr(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Island1.java b/Mage.Sets/src/mage/sets/mirrodin/Island1.java
index 40c253b9aa..5465691330 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Island1.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Island1.java
@@ -45,7 +45,7 @@ public class Island1 extends mage.cards.basiclands.Island {
super(card);
}
- @Override
+ @java.lang.Override
public Island1 copy() {
return new Island1(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Island2.java b/Mage.Sets/src/mage/sets/mirrodin/Island2.java
index c4493783a8..882a0f8fe8 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Island2.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Island2.java
@@ -45,7 +45,7 @@ public class Island2 extends mage.cards.basiclands.Island {
super(card);
}
- @Override
+ @java.lang.Override
public Island2 copy() {
return new Island2(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Island3.java b/Mage.Sets/src/mage/sets/mirrodin/Island3.java
index 09a395efda..56ff70d013 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Island3.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Island3.java
@@ -45,7 +45,7 @@ public class Island3 extends mage.cards.basiclands.Island {
super(card);
}
- @Override
+ @java.lang.Override
public Island3 copy() {
return new Island3(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Island4.java b/Mage.Sets/src/mage/sets/mirrodin/Island4.java
index 2a43af0bf7..a6f457c94d 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Island4.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Island4.java
@@ -45,7 +45,7 @@ public class Island4 extends mage.cards.basiclands.Island {
super(card);
}
- @Override
+ @java.lang.Override
public Island4 copy() {
return new Island4(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/IsochronScepter.java b/Mage.Sets/src/mage/sets/mirrodin/IsochronScepter.java
index c66fe327f6..182669babf 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/IsochronScepter.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/IsochronScepter.java
@@ -75,7 +75,7 @@ public class IsochronScepter extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public IsochronScepter copy() {
return new IsochronScepter(this);
}
@@ -98,7 +98,7 @@ class IsochronScepterImprintEffect extends OneShotEffect {
super(effect);
}
- @Override
+ @java.lang.Override
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
Permanent sourcePermanent = game.getPermanentOrLKIBattlefield(source.getSourceId());
@@ -124,7 +124,7 @@ class IsochronScepterImprintEffect extends OneShotEffect {
}
- @Override
+ @java.lang.Override
public IsochronScepterImprintEffect copy() {
return new IsochronScepterImprintEffect(this);
}
@@ -142,12 +142,12 @@ class IsochronScepterCopyEffect extends OneShotEffect {
super(effect);
}
- @Override
+ @java.lang.Override
public IsochronScepterCopyEffect copy() {
return new IsochronScepterCopyEffect(this);
}
- @Override
+ @java.lang.Override
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
diff --git a/Mage.Sets/src/mage/sets/mirrodin/JinxedChoker.java b/Mage.Sets/src/mage/sets/mirrodin/JinxedChoker.java
new file mode 100644
index 0000000000..9ce1f78d59
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/mirrodin/JinxedChoker.java
@@ -0,0 +1,180 @@
+/*
+ * 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.mirrodin;
+
+import mage.abilities.Ability;
+import mage.abilities.common.BeginningOfYourEndStepTriggeredAbility;
+import mage.abilities.common.OnEventTriggeredAbility;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.dynamicvalue.DynamicValue;
+import mage.abilities.effects.ContinuousEffectImpl;
+import mage.abilities.effects.Effect;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.DamageControllerEffect;
+import mage.abilities.effects.common.counter.AddCountersSourceEffect;
+import mage.abilities.effects.common.counter.RemoveCounterSourceEffect;
+import mage.cards.CardImpl;
+import mage.constants.*;
+import mage.counters.CounterType;
+import mage.game.Game;
+import mage.game.events.GameEvent;
+import mage.game.permanent.Permanent;
+import mage.players.Player;
+import mage.target.common.TargetOpponent;
+
+import java.lang.Override;
+import java.util.UUID;
+
+/**
+ *
+ * @author andyfries
+ */
+
+public class JinxedChoker extends CardImpl {
+
+ public JinxedChoker(UUID ownerId) {
+ super(ownerId, 189, "Jinxed Choker", Rarity.RARE, new CardType[]{CardType.ARTIFACT}, "{3}");
+ this.expansionSetCode = "MRD";
+
+ // At the beginning of your end step, target opponent gains control of Jinxed Choker and puts a charge counter on it.
+ Ability endStepAbility = new BeginningOfYourEndStepTriggeredAbility(new JinxedChokerChangeControllerEffect(), false);
+ endStepAbility.addTarget(new TargetOpponent());
+
+ AddCountersSourceEffect addCountersSourceEffect = new AddCountersSourceEffect(CounterType.CHARGE.createInstance());
+ addCountersSourceEffect.setText("");
+ endStepAbility.addEffect(addCountersSourceEffect);
+ this.addAbility(endStepAbility);
+
+ // At the beginning of your upkeep, Jinxed Choker deals damage to you equal to the number of charge counters on it.
+ Ability upkeepAbility = new OnEventTriggeredAbility(GameEvent.EventType.UPKEEP_STEP_PRE, "beginning of your upkeep", new DamageControllerEffect(new JinxedChokerDynamicValue()), false);
+ this.addAbility(upkeepAbility);
+
+ // {3}: Put a charge counter on Jinxed Choker or remove one from it.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new JinxedChokerCounterEffect(), new ManaCostsImpl("{3}"));
+ this.addAbility(ability);
+ }
+
+ public JinxedChoker(final JinxedChoker card) {
+ super(card);
+ }
+
+ @Override
+ public JinxedChoker copy() {
+ return new JinxedChoker(this);
+ }
+}
+
+class JinxedChokerChangeControllerEffect extends ContinuousEffectImpl {
+
+ public JinxedChokerChangeControllerEffect() {
+ super(Duration.Custom, Layer.ControlChangingEffects_2, SubLayer.NA, Outcome.GainControl);
+ staticText = "target opponent gains control of {this} and puts a charge counter on it";
+ }
+
+ public JinxedChokerChangeControllerEffect(final JinxedChokerChangeControllerEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public JinxedChokerChangeControllerEffect copy() {
+ return new JinxedChokerChangeControllerEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Permanent permanent = (Permanent) source.getSourceObjectIfItStillExists(game);
+ if (permanent != null) {
+ return permanent.changeControllerId(source.getFirstTarget(), game);
+ } else {
+ discard();
+ }
+ return false;
+ }
+
+}
+
+class JinxedChokerDynamicValue implements DynamicValue {
+
+ @Override
+ public int calculate(Game game, Ability sourceAbility, Effect effect) {
+ Permanent permanent = game.getPermanent(sourceAbility.getSourceId());
+
+ int count = 0;
+ if (permanent != null){
+ count = permanent.getCounters().getCount(CounterType.CHARGE);
+ }
+ return count;
+ }
+
+ @Override
+ public JinxedChokerDynamicValue copy() {
+ return new JinxedChokerDynamicValue();
+ }
+
+ @Override
+ public String getMessage() {
+ return "charge counter on it";
+ }
+
+ @Override
+ public String toString() {
+ return "1";
+ }
+}
+
+class JinxedChokerCounterEffect extends OneShotEffect {
+
+ public JinxedChokerCounterEffect() {
+ super(Outcome.Detriment);
+ this.staticText = "Put a charge counter on {this} or remove one from it";
+ }
+
+ public JinxedChokerCounterEffect(final JinxedChokerCounterEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public JinxedChokerCounterEffect copy() {
+ return new JinxedChokerCounterEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player controller = game.getPlayer(source.getControllerId());
+ Permanent sourcePermanent = game.getPermanent(source.getSourceId());
+ if (controller != null && sourcePermanent != null) {
+ if (!sourcePermanent.getCounters().containsKey(CounterType.CHARGE) || controller.chooseUse(outcome, "Put a charge counter on? (No removes one)", source, game)) {
+ return new AddCountersSourceEffect(CounterType.CHARGE.createInstance(), true).apply(game, source);
+ } else {
+ return new RemoveCounterSourceEffect(CounterType.CHARGE.createInstance()).apply(game, source);
+ }
+ }
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/Mage.Sets/src/mage/sets/mirrodin/JourneyOfDiscovery.java b/Mage.Sets/src/mage/sets/mirrodin/JourneyOfDiscovery.java
index 9c0820954d..40a8f5ee9b 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/JourneyOfDiscovery.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/JourneyOfDiscovery.java
@@ -65,7 +65,7 @@ public class JourneyOfDiscovery extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public JourneyOfDiscovery copy() {
return new JourneyOfDiscovery(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/KrarkClanGrunt.java b/Mage.Sets/src/mage/sets/mirrodin/KrarkClanGrunt.java
index 94ffdedb22..aae26d6f7c 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/KrarkClanGrunt.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/KrarkClanGrunt.java
@@ -74,7 +74,7 @@ public class KrarkClanGrunt extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public KrarkClanGrunt copy() {
return new KrarkClanGrunt(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/KrarkClanShaman.java b/Mage.Sets/src/mage/sets/mirrodin/KrarkClanShaman.java
index a7c8e9e14a..a146a28a62 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/KrarkClanShaman.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/KrarkClanShaman.java
@@ -74,7 +74,7 @@ public class KrarkClanShaman extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public KrarkClanShaman copy() {
return new KrarkClanShaman(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/KrarksThumb.java b/Mage.Sets/src/mage/sets/mirrodin/KrarksThumb.java
index 36535622b0..0cdacc0dde 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/KrarksThumb.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/KrarksThumb.java
@@ -61,7 +61,7 @@ public class KrarksThumb extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public KrarksThumb copy() {
return new KrarksThumb(this);
}
@@ -77,7 +77,7 @@ class KrarksThumbEffect extends ReplacementEffectImpl {
super(effect);
}
- @Override
+ @java.lang.Override
public boolean replaceEvent(GameEvent event, Ability source, Game game) {
Player player = game.getPlayer(event.getPlayerId());
if (player != null) {
@@ -96,22 +96,22 @@ class KrarksThumbEffect extends ReplacementEffectImpl {
return false;
}
- @Override
+ @java.lang.Override
public boolean checksEventType(GameEvent event, Game game) {
return event.getType() == GameEvent.EventType.FLIP_COIN;
}
- @Override
+ @java.lang.Override
public boolean applies(GameEvent event, Ability source, Game game) {
return source.getControllerId().equals(event.getPlayerId());
}
- @Override
+ @java.lang.Override
public boolean apply(Game game, Ability source) {
return false;
}
- @Override
+ @java.lang.Override
public KrarksThumbEffect copy() {
return new KrarksThumbEffect(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/LeadenMyr.java b/Mage.Sets/src/mage/sets/mirrodin/LeadenMyr.java
index ffb5900b8b..7d144062de 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/LeadenMyr.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/LeadenMyr.java
@@ -54,7 +54,7 @@ public class LeadenMyr extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public LeadenMyr copy() {
return new LeadenMyr(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/LeoninAbunas.java b/Mage.Sets/src/mage/sets/mirrodin/LeoninAbunas.java
index e8fa6160cf..540f7a870c 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/LeoninAbunas.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/LeoninAbunas.java
@@ -64,7 +64,7 @@ public class LeoninAbunas extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public LeoninAbunas copy() {
return new LeoninAbunas(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/LeoninBladetrap.java b/Mage.Sets/src/mage/sets/mirrodin/LeoninBladetrap.java
index 504e83a6da..654eb93d90 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/LeoninBladetrap.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/LeoninBladetrap.java
@@ -45,7 +45,7 @@ public class LeoninBladetrap extends mage.sets.commander2013.LeoninBladetrap {
super(card);
}
- @Override
+ @java.lang.Override
public LeoninBladetrap copy() {
return new LeoninBladetrap(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/LeoninDenGuard.java b/Mage.Sets/src/mage/sets/mirrodin/LeoninDenGuard.java
index e49cf3faa0..075c217813 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/LeoninDenGuard.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/LeoninDenGuard.java
@@ -73,7 +73,7 @@ public class LeoninDenGuard extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public LeoninDenGuard copy() {
return new LeoninDenGuard(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/LeoninElder.java b/Mage.Sets/src/mage/sets/mirrodin/LeoninElder.java
index c790c360d7..45986262ef 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/LeoninElder.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/LeoninElder.java
@@ -60,7 +60,7 @@ public class LeoninElder extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public LeoninElder copy() {
return new LeoninElder(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/LeoninScimitar.java b/Mage.Sets/src/mage/sets/mirrodin/LeoninScimitar.java
index f4acfab016..f2c5a2be69 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/LeoninScimitar.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/LeoninScimitar.java
@@ -47,7 +47,7 @@ public class LeoninScimitar extends mage.sets.tenthedition.LeoninScimitar {
super(card);
}
- @Override
+ @java.lang.Override
public LeoninScimitar copy() {
return new LeoninScimitar(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/LeoninSkyhunter.java b/Mage.Sets/src/mage/sets/mirrodin/LeoninSkyhunter.java
index 2f58b879d2..edf59d4f9b 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/LeoninSkyhunter.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/LeoninSkyhunter.java
@@ -56,7 +56,7 @@ public class LeoninSkyhunter extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public LeoninSkyhunter copy() {
return new LeoninSkyhunter(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/LeoninSunStandard.java b/Mage.Sets/src/mage/sets/mirrodin/LeoninSunStandard.java
index dbd41164ff..d24fd96fc1 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/LeoninSunStandard.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/LeoninSunStandard.java
@@ -55,7 +55,7 @@ public class LeoninSunStandard extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public LeoninSunStandard copy() {
return new LeoninSunStandard(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/LifesparkSpellbomb.java b/Mage.Sets/src/mage/sets/mirrodin/LifesparkSpellbomb.java
index d16126b5cc..21ab646e06 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/LifesparkSpellbomb.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/LifesparkSpellbomb.java
@@ -71,7 +71,7 @@ public class LifesparkSpellbomb extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public LifesparkSpellbomb copy() {
return new LifesparkSpellbomb(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/LightningGreaves.java b/Mage.Sets/src/mage/sets/mirrodin/LightningGreaves.java
index 73a92cb9de..391adfcb05 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/LightningGreaves.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/LightningGreaves.java
@@ -68,7 +68,7 @@ public class LightningGreaves extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public LightningGreaves copy() {
return new LightningGreaves(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/LivingHive.java b/Mage.Sets/src/mage/sets/mirrodin/LivingHive.java
index d2e38bc750..7ba01ec498 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/LivingHive.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/LivingHive.java
@@ -66,7 +66,7 @@ public class LivingHive extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public LivingHive copy() {
return new LivingHive(this);
}
@@ -83,12 +83,12 @@ class LivingHiveEffect extends OneShotEffect {
super(effect);
}
- @Override
+ @java.lang.Override
public LivingHiveEffect copy() {
return new LivingHiveEffect(this);
}
- @Override
+ @java.lang.Override
public boolean apply(Game game, Ability source) {
Player player = game.getPlayer(targetPointer.getFirst(game, source));
if (player != null) {
diff --git a/Mage.Sets/src/mage/sets/mirrodin/LodestoneMyr.java b/Mage.Sets/src/mage/sets/mirrodin/LodestoneMyr.java
index b1f3e0e145..05a91327a9 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/LodestoneMyr.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/LodestoneMyr.java
@@ -45,7 +45,7 @@ public class LodestoneMyr extends mage.sets.planechase.LodestoneMyr {
super(card);
}
- @Override
+ @java.lang.Override
public LodestoneMyr copy() {
return new LodestoneMyr(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/LoomingHoverguard.java b/Mage.Sets/src/mage/sets/mirrodin/LoomingHoverguard.java
index 3f09d0e5a5..657e07c854 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/LoomingHoverguard.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/LoomingHoverguard.java
@@ -69,7 +69,7 @@ public class LoomingHoverguard extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public LoomingHoverguard copy() {
return new LoomingHoverguard(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/LoxodonMender.java b/Mage.Sets/src/mage/sets/mirrodin/LoxodonMender.java
index 4bcf2cee1e..f280f831ae 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/LoxodonMender.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/LoxodonMender.java
@@ -73,7 +73,7 @@ public class LoxodonMender extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public LoxodonMender copy() {
return new LoxodonMender(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/LoxodonPunisher.java b/Mage.Sets/src/mage/sets/mirrodin/LoxodonPunisher.java
index edc5fbb089..9b849c157c 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/LoxodonPunisher.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/LoxodonPunisher.java
@@ -63,7 +63,7 @@ public class LoxodonPunisher extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public LoxodonPunisher copy() {
return new LoxodonPunisher(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/LoxodonWarhammer.java b/Mage.Sets/src/mage/sets/mirrodin/LoxodonWarhammer.java
index 9c48fc6395..510bb2b755 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/LoxodonWarhammer.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/LoxodonWarhammer.java
@@ -47,7 +47,7 @@ public class LoxodonWarhammer extends mage.sets.planechase.LoxodonWarhammer {
super(card);
}
- @Override
+ @java.lang.Override
public LoxodonWarhammer copy() {
return new LoxodonWarhammer(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/LumengridWarden.java b/Mage.Sets/src/mage/sets/mirrodin/LumengridWarden.java
index 210c29f8f5..5729d6d846 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/LumengridWarden.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/LumengridWarden.java
@@ -45,7 +45,7 @@ public class LumengridWarden extends mage.sets.tenthedition.LumengridWarden {
super(card);
}
- @Override
+ @java.lang.Override
public LumengridWarden copy() {
return new LumengridWarden(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/LuminousAngel.java b/Mage.Sets/src/mage/sets/mirrodin/LuminousAngel.java
index 7fab125c19..2bd4c953df 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/LuminousAngel.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/LuminousAngel.java
@@ -60,7 +60,7 @@ public class LuminousAngel extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public LuminousAngel copy() {
return new LuminousAngel(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/MalachiteGolem.java b/Mage.Sets/src/mage/sets/mirrodin/MalachiteGolem.java
index c1b768a0e7..354cb3b493 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/MalachiteGolem.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/MalachiteGolem.java
@@ -59,7 +59,7 @@ public class MalachiteGolem extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public MalachiteGolem copy() {
return new MalachiteGolem(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/MarchOfTheMachines.java b/Mage.Sets/src/mage/sets/mirrodin/MarchOfTheMachines.java
index 1c14f4eb5f..a772a1b044 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/MarchOfTheMachines.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/MarchOfTheMachines.java
@@ -45,7 +45,7 @@ public class MarchOfTheMachines extends mage.sets.tenthedition.MarchOfTheMachine
super(card);
}
- @Override
+ @java.lang.Override
public MarchOfTheMachines copy() {
return new MarchOfTheMachines(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/MaskOfMemory.java b/Mage.Sets/src/mage/sets/mirrodin/MaskOfMemory.java
index cc13eecf92..1fb2fff129 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/MaskOfMemory.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/MaskOfMemory.java
@@ -45,7 +45,7 @@ public class MaskOfMemory extends mage.sets.planechase.MaskOfMemory {
super(card);
}
- @Override
+ @java.lang.Override
public MaskOfMemory copy() {
return new MaskOfMemory(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/MassHysteria.java b/Mage.Sets/src/mage/sets/mirrodin/MassHysteria.java
index b48267e3fb..2cc90d3727 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/MassHysteria.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/MassHysteria.java
@@ -56,7 +56,7 @@ public class MassHysteria extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public MassHysteria copy() {
return new MassHysteria(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Megatog.java b/Mage.Sets/src/mage/sets/mirrodin/Megatog.java
index 801acb392b..c888442f90 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Megatog.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Megatog.java
@@ -72,7 +72,7 @@ public class Megatog extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public Megatog copy() {
return new Megatog(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/MesmericOrb.java b/Mage.Sets/src/mage/sets/mirrodin/MesmericOrb.java
index 7b237c99fe..6e5e1f84b7 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/MesmericOrb.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/MesmericOrb.java
@@ -61,7 +61,7 @@ public class MesmericOrb extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public MesmericOrb copy() {
return new MesmericOrb(this);
}
@@ -77,17 +77,17 @@ class BecomesUntappedPermanentTriggeredAbility extends TriggeredAbilityImpl{
super(ability);
}
- @Override
+ @java.lang.Override
public BecomesUntappedPermanentTriggeredAbility copy() {
return new BecomesUntappedPermanentTriggeredAbility(this);
}
- @Override
+ @java.lang.Override
public boolean checkEventType(GameEvent event, Game game) {
return event.getType() == EventType.UNTAPPED;
}
- @Override
+ @java.lang.Override
public boolean checkTrigger(GameEvent event, Game game) {
Permanent permanent = game.getPermanent(event.getTargetId());
if (permanent != null) {
@@ -97,7 +97,7 @@ class BecomesUntappedPermanentTriggeredAbility extends TriggeredAbilityImpl{
return false;
}
- @Override
+ @java.lang.Override
public String getRule() {
return "Whenever a permanent becomes untapped, " + super.getRule();
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/MindsEye.java b/Mage.Sets/src/mage/sets/mirrodin/MindsEye.java
index baec209011..07dcfcda89 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/MindsEye.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/MindsEye.java
@@ -54,7 +54,7 @@ public class MindsEye extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public MindsEye copy() {
return new MindsEye(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Mindslaver.java b/Mage.Sets/src/mage/sets/mirrodin/Mindslaver.java
index 10de4e8ae6..1e0e616bc1 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Mindslaver.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Mindslaver.java
@@ -47,7 +47,7 @@ public class Mindslaver extends mage.sets.scarsofmirrodin.Mindslaver {
super(card);
}
- @Override
+ @java.lang.Override
public Mindslaver copy() {
return new Mindslaver(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/MolderSlug.java b/Mage.Sets/src/mage/sets/mirrodin/MolderSlug.java
index cefc85a018..f13d7e10a0 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/MolderSlug.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/MolderSlug.java
@@ -67,7 +67,7 @@ public class MolderSlug extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public MolderSlug copy() {
return new MolderSlug(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/MoltenRain.java b/Mage.Sets/src/mage/sets/mirrodin/MoltenRain.java
index bdcac25004..e0872cb2b5 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/MoltenRain.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/MoltenRain.java
@@ -63,7 +63,7 @@ public class MoltenRain extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public MoltenRain copy() {
return new MoltenRain(this);
}
@@ -80,12 +80,12 @@ class MoltenRainEffect extends OneShotEffect {
super(effect);
}
- @Override
+ @java.lang.Override
public MoltenRainEffect copy() {
return new MoltenRainEffect(this);
}
- @Override
+ @java.lang.Override
public boolean apply(Game game, Ability source) {
Permanent permanent = (Permanent) game.getLastKnownInformation(source.getFirstTarget(), Zone.BATTLEFIELD);
if (permanent != null && !permanent.getSupertype().contains("Basic")) {
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Mountain1.java b/Mage.Sets/src/mage/sets/mirrodin/Mountain1.java
index 0679b2a11a..83978d3dd3 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Mountain1.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Mountain1.java
@@ -45,7 +45,7 @@ public class Mountain1 extends mage.cards.basiclands.Mountain {
super(card);
}
- @Override
+ @java.lang.Override
public Mountain1 copy() {
return new Mountain1(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Mountain2.java b/Mage.Sets/src/mage/sets/mirrodin/Mountain2.java
index ea38142bd3..9190ef81d6 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Mountain2.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Mountain2.java
@@ -45,7 +45,7 @@ public class Mountain2 extends mage.cards.basiclands.Mountain {
super(card);
}
- @Override
+ @java.lang.Override
public Mountain2 copy() {
return new Mountain2(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Mountain3.java b/Mage.Sets/src/mage/sets/mirrodin/Mountain3.java
index 3d4a0dd4bb..9b13f549bf 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Mountain3.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Mountain3.java
@@ -45,7 +45,7 @@ public class Mountain3 extends mage.cards.basiclands.Mountain {
super(card);
}
- @Override
+ @java.lang.Override
public Mountain3 copy() {
return new Mountain3(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Mountain4.java b/Mage.Sets/src/mage/sets/mirrodin/Mountain4.java
index 7c8639020a..852a488bb3 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Mountain4.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Mountain4.java
@@ -45,7 +45,7 @@ public class Mountain4 extends mage.cards.basiclands.Mountain {
super(card);
}
- @Override
+ @java.lang.Override
public Mountain4 copy() {
return new Mountain4(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/MyrAdapter.java b/Mage.Sets/src/mage/sets/mirrodin/MyrAdapter.java
index 16592471fe..5ed2e2f88e 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/MyrAdapter.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/MyrAdapter.java
@@ -62,7 +62,7 @@ public class MyrAdapter extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public MyrAdapter copy() {
return new MyrAdapter(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/MyrEnforcer.java b/Mage.Sets/src/mage/sets/mirrodin/MyrEnforcer.java
index dbc7ba0755..75d9999fb5 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/MyrEnforcer.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/MyrEnforcer.java
@@ -45,7 +45,7 @@ public class MyrEnforcer extends mage.sets.planechase.MyrEnforcer {
super(card);
}
- @Override
+ @java.lang.Override
public MyrEnforcer copy() {
return new MyrEnforcer(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/MyrRetriever.java b/Mage.Sets/src/mage/sets/mirrodin/MyrRetriever.java
index 58fc7b74bf..7791fdacbe 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/MyrRetriever.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/MyrRetriever.java
@@ -45,7 +45,7 @@ public class MyrRetriever extends mage.sets.modernmasters.MyrRetriever {
super(card);
}
- @Override
+ @java.lang.Override
public MyrRetriever copy() {
return new MyrRetriever(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/NecrogenMists.java b/Mage.Sets/src/mage/sets/mirrodin/NecrogenMists.java
index a6881b1756..6849b48b76 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/NecrogenMists.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/NecrogenMists.java
@@ -55,7 +55,7 @@ public class NecrogenMists extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public NecrogenMists copy() {
return new NecrogenMists(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/NecrogenSpellbomb.java b/Mage.Sets/src/mage/sets/mirrodin/NecrogenSpellbomb.java
index fcb16b0875..67655a692a 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/NecrogenSpellbomb.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/NecrogenSpellbomb.java
@@ -65,7 +65,7 @@ public class NecrogenSpellbomb extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public NecrogenSpellbomb copy() {
return new NecrogenSpellbomb(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Needlebug.java b/Mage.Sets/src/mage/sets/mirrodin/Needlebug.java
index 56f10dfdd4..1bd3e785c7 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Needlebug.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Needlebug.java
@@ -59,7 +59,7 @@ public class Needlebug extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public Needlebug copy() {
return new Needlebug(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/NeurokHoversail.java b/Mage.Sets/src/mage/sets/mirrodin/NeurokHoversail.java
index 6eef00d505..909d74c8f8 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/NeurokHoversail.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/NeurokHoversail.java
@@ -58,7 +58,7 @@ public class NeurokHoversail extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public NeurokHoversail copy() {
return new NeurokHoversail(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/NeurokSpy.java b/Mage.Sets/src/mage/sets/mirrodin/NeurokSpy.java
index 3dccb51f5d..51188369f4 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/NeurokSpy.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/NeurokSpy.java
@@ -67,7 +67,7 @@ public class NeurokSpy extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public NeurokSpy copy() {
return new NeurokSpy(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/NightmareLash.java b/Mage.Sets/src/mage/sets/mirrodin/NightmareLash.java
index 2b1afca748..6afd1d2bab 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/NightmareLash.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/NightmareLash.java
@@ -68,7 +68,7 @@ public class NightmareLash extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public NightmareLash copy() {
return new NightmareLash(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/NimDevourer.java b/Mage.Sets/src/mage/sets/mirrodin/NimDevourer.java
index 5096665ecc..cce4928667 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/NimDevourer.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/NimDevourer.java
@@ -30,9 +30,10 @@ package mage.sets.mirrodin;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
-import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.condition.common.IsStepCondition;
import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.decorator.ConditionalActivatedAbility;
import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
import mage.abilities.dynamicvalue.common.StaticValue;
import mage.abilities.effects.OneShotEffect;
@@ -42,6 +43,7 @@ import mage.cards.CardImpl;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Outcome;
+import mage.constants.PhaseStep;
import mage.constants.Rarity;
import mage.constants.Zone;
import mage.filter.common.FilterControlledCreaturePermanent;
@@ -76,7 +78,10 @@ public class NimDevourer extends CardImpl {
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostSourceEffect(new PermanentsOnBattlefieldCount(filter), new StaticValue(0), Duration.WhileOnBattlefield)));
// {B}{B}: Return Nim Devourer from your graveyard to the battlefield, then sacrifice a creature. Activate this ability only during your upkeep.
- Ability ability = new SimpleActivatedAbility(Zone.GRAVEYARD, new ReturnSourceFromGraveyardToBattlefieldEffect(), new ManaCostsImpl("{B}{B}"));
+ Ability ability = new ConditionalActivatedAbility(Zone.GRAVEYARD,
+ new ReturnSourceFromGraveyardToBattlefieldEffect(),
+ new ManaCostsImpl("{B}{B}"),
+ new IsStepCondition(PhaseStep.UPKEEP), null);
ability.addEffect(new NimDevourerEffect());
this.addAbility(ability);
}
@@ -85,7 +90,7 @@ public class NimDevourer extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public NimDevourer copy() {
return new NimDevourer(this);
}
@@ -102,12 +107,12 @@ class NimDevourerEffect extends OneShotEffect {
super(effect);
}
- @Override
+ @java.lang.Override
public NimDevourerEffect copy() {
return new NimDevourerEffect(this);
}
- @Override
+ @java.lang.Override
public boolean apply(Game game, Ability source) {
Player player = game.getPlayer(source.getControllerId());
if (player != null) {
diff --git a/Mage.Sets/src/mage/sets/mirrodin/NimLasher.java b/Mage.Sets/src/mage/sets/mirrodin/NimLasher.java
index 1af1ffcdb6..b3cbc9c3d2 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/NimLasher.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/NimLasher.java
@@ -67,7 +67,7 @@ public class NimLasher extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public NimLasher copy() {
return new NimLasher(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/NimReplica.java b/Mage.Sets/src/mage/sets/mirrodin/NimReplica.java
index 1c1f302394..a660579507 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/NimReplica.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/NimReplica.java
@@ -64,7 +64,7 @@ public class NimReplica extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public NimReplica copy() {
return new NimReplica(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/NimShambler.java b/Mage.Sets/src/mage/sets/mirrodin/NimShambler.java
index 57a57fb340..a3ad438840 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/NimShambler.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/NimShambler.java
@@ -72,7 +72,7 @@ public class NimShambler extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public NimShambler copy() {
return new NimShambler(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/NimShrieker.java b/Mage.Sets/src/mage/sets/mirrodin/NimShrieker.java
index 8ed76b47f6..b81a37f201 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/NimShrieker.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/NimShrieker.java
@@ -69,7 +69,7 @@ public class NimShrieker extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public NimShrieker copy() {
return new NimShrieker(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/NuisanceEngine.java b/Mage.Sets/src/mage/sets/mirrodin/NuisanceEngine.java
index 3b63bda3f4..184bf4f6dd 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/NuisanceEngine.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/NuisanceEngine.java
@@ -45,7 +45,7 @@ public class NuisanceEngine extends mage.sets.planechase.NuisanceEngine {
super(card);
}
- @Override
+ @java.lang.Override
public NuisanceEngine copy() {
return new NuisanceEngine(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/OblivionStone.java b/Mage.Sets/src/mage/sets/mirrodin/OblivionStone.java
index 184dcc1ab3..d0ef92ef31 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/OblivionStone.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/OblivionStone.java
@@ -71,7 +71,7 @@ public class OblivionStone extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public OblivionStone copy() {
return new OblivionStone(this);
}
@@ -87,7 +87,7 @@ class OblivionStoneEffect extends OneShotEffect {
super(effect);
}
- @Override
+ @java.lang.Override
public boolean apply(Game game, Ability source) {
for (Permanent p : game.getBattlefield().getAllActivePermanents()) {
if (!(p.getCardType().contains(CardType.LAND) || p.getCounters().containsKey(CounterType.FATE))) {
@@ -102,7 +102,7 @@ class OblivionStoneEffect extends OneShotEffect {
return true;
}
- @Override
+ @java.lang.Override
public OblivionStoneEffect copy() {
return new OblivionStoneEffect(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/OmegaMyr.java b/Mage.Sets/src/mage/sets/mirrodin/OmegaMyr.java
index 615a134409..5f9062daa1 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/OmegaMyr.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/OmegaMyr.java
@@ -52,7 +52,7 @@ public class OmegaMyr extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public OmegaMyr copy() {
return new OmegaMyr(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/OneDozenEyes.java b/Mage.Sets/src/mage/sets/mirrodin/OneDozenEyes.java
index 3518126f72..db0a3d698e 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/OneDozenEyes.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/OneDozenEyes.java
@@ -45,7 +45,7 @@ public class OneDozenEyes extends mage.sets.commander2013.OneDozenEyes {
super(card);
}
- @Override
+ @java.lang.Override
public OneDozenEyes copy() {
return new OneDozenEyes(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Ornithopter.java b/Mage.Sets/src/mage/sets/mirrodin/Ornithopter.java
index c64f333279..78ee448d26 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Ornithopter.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Ornithopter.java
@@ -45,7 +45,7 @@ public class Ornithopter extends mage.sets.tenthedition.Ornithopter {
super(card);
}
- @Override
+ @java.lang.Override
public Ornithopter copy() {
return new Ornithopter(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Override.java b/Mage.Sets/src/mage/sets/mirrodin/Override.java
new file mode 100644
index 0000000000..396e4e59ae
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/mirrodin/Override.java
@@ -0,0 +1,113 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.mirrodin;
+
+import java.util.UUID;
+import mage.MageObject;
+import mage.abilities.Ability;
+import mage.abilities.Mode;
+import mage.abilities.costs.mana.GenericManaCost;
+import mage.abilities.effects.OneShotEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.constants.Rarity;
+import mage.filter.common.FilterArtifactPermanent;
+import mage.game.Game;
+import mage.game.stack.StackObject;
+import mage.players.Player;
+import mage.target.TargetSpell;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class Override extends CardImpl {
+
+ public Override(UUID ownerId) {
+ super(ownerId, 45, "Override", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{2}{U}");
+ this.expansionSetCode = "MRD";
+
+ // Counter target spell unless its controller pays {1} for each artifact you control.
+ this.getSpellAbility().addEffect(new OverrideEffect());
+ this.getSpellAbility().addTarget(new TargetSpell());
+ }
+
+ public Override(final Override card) {
+ super(card);
+ }
+
+ @java.lang.Override
+ public Override copy() {
+ return new Override(this);
+ }
+}
+
+class OverrideEffect extends OneShotEffect {
+
+ public OverrideEffect() {
+ super(Outcome.Benefit);
+ }
+
+ public OverrideEffect(final OverrideEffect effect) {
+ super(effect);
+ }
+
+ @java.lang.Override
+ public OverrideEffect copy() {
+ return new OverrideEffect(this);
+ }
+
+ @java.lang.Override
+ public boolean apply(Game game, Ability source) {
+ StackObject spell = game.getStack().getStackObject(targetPointer.getFirst(game, source));
+ MageObject sourceObject = game.getObject(source.getSourceId());
+ if (sourceObject != null && spell != null) {
+ Player player = game.getPlayer(spell.getControllerId());
+ Player controller = game.getPlayer(source.getControllerId());
+ if (player != null && controller != null) {
+ int amount = game.getBattlefield().countAll(new FilterArtifactPermanent(), source.getControllerId(), game);
+ if (amount > 0) {
+ GenericManaCost cost = new GenericManaCost(amount);
+ if (!cost.pay(source, game, spell.getControllerId(), spell.getControllerId(), false)) {
+ game.informPlayers(sourceObject.getLogName() + ": cost wasn't payed - countering target spell.");
+ return game.getStack().counter(source.getFirstTarget(), source.getSourceId(), game);
+ }
+ }
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @java.lang.Override
+ public String getText(Mode mode) {
+ return "Counter target spell unless its controller pays {1} for each artifact you control";
+ }
+
+}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/PearlShard.java b/Mage.Sets/src/mage/sets/mirrodin/PearlShard.java
new file mode 100644
index 0000000000..de7459c311
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/mirrodin/PearlShard.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.mirrodin;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.PreventDamageToTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.target.common.TargetCreatureOrPlayer;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class PearlShard extends CardImpl {
+
+ public PearlShard(UUID ownerId) {
+ super(ownerId, 225, "Pearl Shard", Rarity.UNCOMMON, new CardType[]{CardType.ARTIFACT}, "{3}");
+ this.expansionSetCode = "MRD";
+
+ // {3}, {tap} or {W}, {tap}: Prevent the next 2 damage that would be dealt to target creature or player this turn.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new PreventDamageToTargetEffect(Duration.EndOfTurn, 2), new ManaCostsImpl("{3}"));
+ ability.addCost(new TapSourceCost());
+ ability.addTarget(new TargetCreatureOrPlayer());
+ this.addAbility(ability);
+ ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new PreventDamageToTargetEffect(Duration.EndOfTurn, 2), new ManaCostsImpl("{W}"));
+ ability.addCost(new TapSourceCost());
+ ability.addTarget(new TargetCreatureOrPlayer());
+ this.addAbility(ability);
+ }
+
+ public PearlShard(final PearlShard card) {
+ super(card);
+ }
+
+ @java.lang.Override
+ public PearlShard copy() {
+ return new PearlShard(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Pentavus.java b/Mage.Sets/src/mage/sets/mirrodin/Pentavus.java
index 6fe1b9ea2d..a8a632e26e 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Pentavus.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Pentavus.java
@@ -45,7 +45,7 @@ public class Pentavus extends mage.sets.elspethvstezzeret.Pentavus {
super(card);
}
- @Override
+ @java.lang.Override
public Pentavus copy() {
return new Pentavus(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/PewterGolem.java b/Mage.Sets/src/mage/sets/mirrodin/PewterGolem.java
index 4109de8823..bac712072b 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/PewterGolem.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/PewterGolem.java
@@ -57,7 +57,7 @@ public class PewterGolem extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public PewterGolem copy() {
return new PewterGolem(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Plains1.java b/Mage.Sets/src/mage/sets/mirrodin/Plains1.java
index 10604274df..3624537364 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Plains1.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Plains1.java
@@ -45,7 +45,7 @@ public class Plains1 extends mage.cards.basiclands.Plains {
super(card);
}
- @Override
+ @java.lang.Override
public Plains1 copy() {
return new Plains1(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Plains2.java b/Mage.Sets/src/mage/sets/mirrodin/Plains2.java
index 6a498371eb..f0ef9c70af 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Plains2.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Plains2.java
@@ -45,7 +45,7 @@ public class Plains2 extends mage.cards.basiclands.Plains {
super(card);
}
- @Override
+ @java.lang.Override
public Plains2 copy() {
return new Plains2(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Plains3.java b/Mage.Sets/src/mage/sets/mirrodin/Plains3.java
index 99c444dcc5..6ecb5572b1 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Plains3.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Plains3.java
@@ -45,7 +45,7 @@ public class Plains3 extends mage.cards.basiclands.Plains {
super(card);
}
- @Override
+ @java.lang.Override
public Plains3 copy() {
return new Plains3(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Plains4.java b/Mage.Sets/src/mage/sets/mirrodin/Plains4.java
index ed626f5590..f0badf9c20 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Plains4.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Plains4.java
@@ -45,7 +45,7 @@ public class Plains4 extends mage.cards.basiclands.Plains {
super(card);
}
- @Override
+ @java.lang.Override
public Plains4 copy() {
return new Plains4(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/PlatedSlagwurm.java b/Mage.Sets/src/mage/sets/mirrodin/PlatedSlagwurm.java
index 1e7509f184..39cd1476dd 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/PlatedSlagwurm.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/PlatedSlagwurm.java
@@ -55,7 +55,7 @@ public class PlatedSlagwurm extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public PlatedSlagwurm copy() {
return new PlatedSlagwurm(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/PlatinumAngel.java b/Mage.Sets/src/mage/sets/mirrodin/PlatinumAngel.java
index 2fb71ad5da..f4e95c130a 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/PlatinumAngel.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/PlatinumAngel.java
@@ -45,7 +45,7 @@ public class PlatinumAngel extends mage.sets.tenthedition.PlatinumAngel {
super(card);
}
- @Override
+ @java.lang.Override
public PlatinumAngel copy() {
return new PlatinumAngel(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/PredatorsStrike.java b/Mage.Sets/src/mage/sets/mirrodin/PredatorsStrike.java
index b4191b97b5..edc6f1aef4 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/PredatorsStrike.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/PredatorsStrike.java
@@ -57,7 +57,7 @@ public class PredatorsStrike extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public PredatorsStrike copy() {
return new PredatorsStrike(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/PromiseOfPower.java b/Mage.Sets/src/mage/sets/mirrodin/PromiseOfPower.java
index 80706a2622..4296e76d27 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/PromiseOfPower.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/PromiseOfPower.java
@@ -45,7 +45,7 @@ public class PromiseOfPower extends mage.sets.commander2014.PromiseOfPower {
super(card);
}
- @Override
+ @java.lang.Override
public PromiseOfPower copy() {
return new PromiseOfPower(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/ProteusStaff.java b/Mage.Sets/src/mage/sets/mirrodin/ProteusStaff.java
index 90dc9c2a87..7cfbf933b6 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/ProteusStaff.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/ProteusStaff.java
@@ -69,7 +69,7 @@ public class ProteusStaff extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public ProteusStaff copy() {
return new ProteusStaff(this);
}
@@ -86,12 +86,12 @@ class ProteusStaffEffect extends OneShotEffect {
super(effect);
}
- @Override
+ @java.lang.Override
public ProteusStaffEffect copy() {
return new ProteusStaffEffect(this);
}
- @Override
+ @java.lang.Override
public boolean apply(Game game, Ability source) {
Permanent permanent = game.getPermanent(this.getTargetPointer().getFirst(game, source));
if (permanent != null) {
diff --git a/Mage.Sets/src/mage/sets/mirrodin/PsychicMembrane.java b/Mage.Sets/src/mage/sets/mirrodin/PsychicMembrane.java
index 7fb6463e9b..13d1253701 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/PsychicMembrane.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/PsychicMembrane.java
@@ -59,7 +59,7 @@ public class PsychicMembrane extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public PsychicMembrane copy() {
return new PsychicMembrane(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/PsychogenicProbe.java b/Mage.Sets/src/mage/sets/mirrodin/PsychogenicProbe.java
index 9ce7f410cf..0c4b4c1004 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/PsychogenicProbe.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/PsychogenicProbe.java
@@ -58,7 +58,7 @@ public class PsychogenicProbe extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public PsychogenicProbe copy() {
return new PsychogenicProbe(this);
}
@@ -74,17 +74,17 @@ class PsychogenicProbeTriggeredAbility extends TriggeredAbilityImpl {
super(ability);
}
- @Override
+ @java.lang.Override
public PsychogenicProbeTriggeredAbility copy() {
return new PsychogenicProbeTriggeredAbility(this);
}
- @Override
+ @java.lang.Override
public boolean checkEventType(GameEvent event, Game game) {
return event.getType().equals(EventType.LIBRARY_SHUFFLED);
}
- @Override
+ @java.lang.Override
public boolean checkTrigger(GameEvent event, Game game) {
for (Effect effect : this.getEffects()) {
effect.setTargetPointer(new FixedTarget(event.getPlayerId()));
@@ -92,7 +92,7 @@ class PsychogenicProbeTriggeredAbility extends TriggeredAbilityImpl {
return true;
}
- @Override
+ @java.lang.Override
public String getRule() {
return "Whenever a spell or ability causes a player to shuffle his or her library, Psychogenic Probe deals 2 damage to him or her.";
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/PyriteSpellbomb.java b/Mage.Sets/src/mage/sets/mirrodin/PyriteSpellbomb.java
index 8b8428a8a3..23a1e2a825 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/PyriteSpellbomb.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/PyriteSpellbomb.java
@@ -65,7 +65,7 @@ public class PyriteSpellbomb extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public PyriteSpellbomb copy() {
return new PyriteSpellbomb(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/RaiseTheAlarm.java b/Mage.Sets/src/mage/sets/mirrodin/RaiseTheAlarm.java
index a168b85253..86ac6a53c0 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/RaiseTheAlarm.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/RaiseTheAlarm.java
@@ -52,7 +52,7 @@ public class RaiseTheAlarm extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public RaiseTheAlarm copy() {
return new RaiseTheAlarm(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/RazorBarrier.java b/Mage.Sets/src/mage/sets/mirrodin/RazorBarrier.java
index 49b8783748..a9568c0830 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/RazorBarrier.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/RazorBarrier.java
@@ -45,7 +45,7 @@ public class RazorBarrier extends mage.sets.elspethvstezzeret.RazorBarrier {
super(card);
}
- @Override
+ @java.lang.Override
public RazorBarrier copy() {
return new RazorBarrier(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Regress.java b/Mage.Sets/src/mage/sets/mirrodin/Regress.java
index c54168c991..911acf72f8 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Regress.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Regress.java
@@ -53,7 +53,7 @@ public class Regress extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public Regress copy() {
return new Regress(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/ReiverDemon.java b/Mage.Sets/src/mage/sets/mirrodin/ReiverDemon.java
index 0f3420423d..5a6c5a41fe 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/ReiverDemon.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/ReiverDemon.java
@@ -45,7 +45,7 @@ public class ReiverDemon extends mage.sets.divinevsdemonic.ReiverDemon {
super(card);
}
- @Override
+ @java.lang.Override
public ReiverDemon copy() {
return new ReiverDemon(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/RoarOfTheKha.java b/Mage.Sets/src/mage/sets/mirrodin/RoarOfTheKha.java
index d4a2813bbf..c85e9e2474 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/RoarOfTheKha.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/RoarOfTheKha.java
@@ -66,7 +66,7 @@ public class RoarOfTheKha extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public RoarOfTheKha copy() {
return new RoarOfTheKha(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/RuleOfLaw.java b/Mage.Sets/src/mage/sets/mirrodin/RuleOfLaw.java
index e30fdd0279..b72076ada6 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/RuleOfLaw.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/RuleOfLaw.java
@@ -47,7 +47,7 @@ public class RuleOfLaw extends mage.sets.tenthedition.RuleOfLaw {
super(card);
}
- @Override
+ @java.lang.Override
public RuleOfLaw copy() {
return new RuleOfLaw(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/RustmouthOgre.java b/Mage.Sets/src/mage/sets/mirrodin/RustmouthOgre.java
index 669833fd27..175bc1194e 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/RustmouthOgre.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/RustmouthOgre.java
@@ -65,7 +65,7 @@ public class RustmouthOgre extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public RustmouthOgre copy() {
return new RustmouthOgre(this);
}
@@ -81,17 +81,17 @@ class RustmouthOgreTriggeredAbility extends TriggeredAbilityImpl {
super(ability);
}
- @Override
+ @java.lang.Override
public RustmouthOgreTriggeredAbility copy() {
return new RustmouthOgreTriggeredAbility(this);
}
- @Override
+ @java.lang.Override
public boolean checkEventType(GameEvent event, Game game) {
return event.getType() == EventType.DAMAGED_PLAYER;
}
- @Override
+ @java.lang.Override
public boolean checkTrigger(GameEvent event, Game game) {
DamagedPlayerEvent damageEvent = (DamagedPlayerEvent) event;
if (damageEvent.isCombatDamage() && event.getSourceId().equals(this.getSourceId())) {
@@ -106,7 +106,7 @@ class RustmouthOgreTriggeredAbility extends TriggeredAbilityImpl {
return false;
}
- @Override
+ @java.lang.Override
public String getRule() {
return "Whenever {this} deals combat damage to a player, you may destroy target artifact that player controls.";
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/RustsporeRam.java b/Mage.Sets/src/mage/sets/mirrodin/RustsporeRam.java
index ea823b712e..643987c81b 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/RustsporeRam.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/RustsporeRam.java
@@ -66,7 +66,7 @@ public class RustsporeRam extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public RustsporeRam copy() {
return new RustsporeRam(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/ScaleOfChissGoria.java b/Mage.Sets/src/mage/sets/mirrodin/ScaleOfChissGoria.java
index bb969fccc9..32f80eceb4 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/ScaleOfChissGoria.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/ScaleOfChissGoria.java
@@ -65,7 +65,7 @@ public class ScaleOfChissGoria extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public ScaleOfChissGoria copy() {
return new ScaleOfChissGoria(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/ScrabblingClaws.java b/Mage.Sets/src/mage/sets/mirrodin/ScrabblingClaws.java
index 22f3b27323..83c645ba00 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/ScrabblingClaws.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/ScrabblingClaws.java
@@ -74,7 +74,7 @@ public class ScrabblingClaws extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public ScrabblingClaws copy() {
return new ScrabblingClaws(this);
}
@@ -91,12 +91,12 @@ class ScrabblingClawsEffect extends OneShotEffect {
super(effect);
}
- @Override
+ @java.lang.Override
public ScrabblingClawsEffect copy() {
return new ScrabblingClawsEffect(this);
}
- @Override
+ @java.lang.Override
public boolean apply(Game game, Ability source) {
Player targetPlayer = game.getPlayer(source.getFirstTarget());
if (targetPlayer != null) {
diff --git a/Mage.Sets/src/mage/sets/mirrodin/SculptingSteel.java b/Mage.Sets/src/mage/sets/mirrodin/SculptingSteel.java
index 7c3715074f..3844913c70 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/SculptingSteel.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/SculptingSteel.java
@@ -45,7 +45,7 @@ public class SculptingSteel extends mage.sets.tenthedition.SculptingSteel {
super(card);
}
- @Override
+ @java.lang.Override
public SculptingSteel copy() {
return new SculptingSteel(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/ScytheOfTheWretched.java b/Mage.Sets/src/mage/sets/mirrodin/ScytheOfTheWretched.java
index 341aecb719..a0b0f53927 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/ScytheOfTheWretched.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/ScytheOfTheWretched.java
@@ -79,7 +79,7 @@ public class ScytheOfTheWretched extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public ScytheOfTheWretched copy() {
return new ScytheOfTheWretched(this);
}
@@ -95,17 +95,17 @@ class ScytheOfTheWretchedTriggeredAbility extends TriggeredAbilityImpl {
super(ability);
}
- @Override
+ @java.lang.Override
public ScytheOfTheWretchedTriggeredAbility copy() {
return new ScytheOfTheWretchedTriggeredAbility(this);
}
- @Override
+ @java.lang.Override
public boolean checkEventType(GameEvent event, Game game) {
return event.getType() == GameEvent.EventType.ZONE_CHANGE;
}
- @Override
+ @java.lang.Override
public boolean checkTrigger(GameEvent event, Game game) {
ZoneChangeEvent zoneChange = (ZoneChangeEvent) event;
if (zoneChange.isDiesEvent() && zoneChange.getTarget().getCardType().contains(CardType.CREATURE)) {
@@ -122,7 +122,7 @@ class ScytheOfTheWretchedTriggeredAbility extends TriggeredAbilityImpl {
return false;
}
- @Override
+ @java.lang.Override
public String getRule() {
return "Whenever a creature dealt damage by equipped creature this turn dies, " + super.getRule();
}
@@ -153,7 +153,7 @@ class ScytheOfTheWretchedReanimateEffect extends OneShotEffect {
super(effect);
}
- @Override
+ @java.lang.Override
public boolean apply(Game game, Ability source) {
Card card = game.getCard(getTargetPointer().getFirst(game, source));
Player controller = game.getPlayer(source.getControllerId());
@@ -169,7 +169,7 @@ class ScytheOfTheWretchedReanimateEffect extends OneShotEffect {
return false;
}
- @Override
+ @java.lang.Override
public Effect copy() {
return new ScytheOfTheWretchedReanimateEffect(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/SeatOfTheSynod.java b/Mage.Sets/src/mage/sets/mirrodin/SeatOfTheSynod.java
index a8353a2179..351536ae65 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/SeatOfTheSynod.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/SeatOfTheSynod.java
@@ -50,7 +50,7 @@ public class SeatOfTheSynod extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public SeatOfTheSynod copy() {
return new SeatOfTheSynod(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/SecondSunrise.java b/Mage.Sets/src/mage/sets/mirrodin/SecondSunrise.java
index 141503c8ef..376b69c06b 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/SecondSunrise.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/SecondSunrise.java
@@ -60,7 +60,7 @@ public class SecondSunrise extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public SecondSunrise copy() {
return new SecondSunrise(this);
}
@@ -77,7 +77,7 @@ class SecondSunriseEffect extends OneShotEffect {
super(effect);
}
- @Override
+ @java.lang.Override
public boolean apply(Game game, Ability source) {
SecondSunriseWatcher watcher = (SecondSunriseWatcher) game.getState().getWatchers().get("SecondSunriseWatcher");
if (watcher != null) {
@@ -94,7 +94,7 @@ class SecondSunriseEffect extends OneShotEffect {
return false;
}
- @Override
+ @java.lang.Override
public SecondSunriseEffect copy() {
return new SecondSunriseEffect(this);
}
@@ -112,19 +112,19 @@ class SecondSunriseWatcher extends Watcher {
this.cards.addAll(watcher.cards);
}
- @Override
+ @java.lang.Override
public void watch(GameEvent event, Game game) {
if (event.getType() == GameEvent.EventType.ZONE_CHANGE && ((ZoneChangeEvent)event).isDiesEvent()) {
cards.add(event.getTargetId());
}
}
- @Override
+ @java.lang.Override
public SecondSunriseWatcher copy() {
return new SecondSunriseWatcher(this);
}
- @Override
+ @java.lang.Override
public void reset() {
super.reset();
cards.clear();
diff --git a/Mage.Sets/src/mage/sets/mirrodin/SeethingSong.java b/Mage.Sets/src/mage/sets/mirrodin/SeethingSong.java
index 118b7979ec..63ddebe54f 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/SeethingSong.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/SeethingSong.java
@@ -51,7 +51,7 @@ public class SeethingSong extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public SeethingSong copy() {
return new SeethingSong(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Shatter.java b/Mage.Sets/src/mage/sets/mirrodin/Shatter.java
index 6c8c5d5154..8b153e8955 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Shatter.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Shatter.java
@@ -53,7 +53,7 @@ public class Shatter extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public Shatter copy() {
return new Shatter(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/ShrapnelBlast.java b/Mage.Sets/src/mage/sets/mirrodin/ShrapnelBlast.java
index c9dda788ef..4b269946fb 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/ShrapnelBlast.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/ShrapnelBlast.java
@@ -63,7 +63,7 @@ public class ShrapnelBlast extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public ShrapnelBlast copy() {
return new ShrapnelBlast(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/SilverMyr.java b/Mage.Sets/src/mage/sets/mirrodin/SilverMyr.java
index 024642a8d9..218dd3ecf9 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/SilverMyr.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/SilverMyr.java
@@ -54,7 +54,7 @@ public class SilverMyr extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public SilverMyr copy() {
return new SilverMyr(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/SkeletonShard.java b/Mage.Sets/src/mage/sets/mirrodin/SkeletonShard.java
index 4056a01304..2fe693eadd 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/SkeletonShard.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/SkeletonShard.java
@@ -45,7 +45,7 @@ public class SkeletonShard extends mage.sets.planechase.SkeletonShard {
super(card);
}
- @Override
+ @java.lang.Override
public SkeletonShard copy() {
return new SkeletonShard(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/SkyhunterPatrol.java b/Mage.Sets/src/mage/sets/mirrodin/SkyhunterPatrol.java
index 6223384d85..6827426e3d 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/SkyhunterPatrol.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/SkyhunterPatrol.java
@@ -45,7 +45,7 @@ public class SkyhunterPatrol extends mage.sets.tenthedition.SkyhunterPatrol {
super(card);
}
- @Override
+ @java.lang.Override
public SkyhunterPatrol copy() {
return new SkyhunterPatrol(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/SlagwurmArmor.java b/Mage.Sets/src/mage/sets/mirrodin/SlagwurmArmor.java
index 9e008c2bf2..ebd9df3c58 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/SlagwurmArmor.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/SlagwurmArmor.java
@@ -56,7 +56,7 @@ public class SlagwurmArmor extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public SlagwurmArmor copy() {
return new SlagwurmArmor(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/SlithAscendant.java b/Mage.Sets/src/mage/sets/mirrodin/SlithAscendant.java
index 931a7b3233..ba749e2371 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/SlithAscendant.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/SlithAscendant.java
@@ -58,7 +58,7 @@ public class SlithAscendant extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public SlithAscendant copy() {
return new SlithAscendant(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/SlithBloodletter.java b/Mage.Sets/src/mage/sets/mirrodin/SlithBloodletter.java
index aa1c5d3eae..d0f0b07aaa 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/SlithBloodletter.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/SlithBloodletter.java
@@ -62,7 +62,7 @@ public class SlithBloodletter extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public SlithBloodletter copy() {
return new SlithBloodletter(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/SlithFirewalker.java b/Mage.Sets/src/mage/sets/mirrodin/SlithFirewalker.java
index e6eaf50e07..c129b2dc3f 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/SlithFirewalker.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/SlithFirewalker.java
@@ -58,7 +58,7 @@ public class SlithFirewalker extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public SlithFirewalker copy() {
return new SlithFirewalker(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/SlithPredator.java b/Mage.Sets/src/mage/sets/mirrodin/SlithPredator.java
index 97f80ea6fe..37c9e7edbc 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/SlithPredator.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/SlithPredator.java
@@ -58,7 +58,7 @@ public class SlithPredator extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public SlithPredator copy() {
return new SlithPredator(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/SlithStrider.java b/Mage.Sets/src/mage/sets/mirrodin/SlithStrider.java
index 9f129c8643..7e63807e13 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/SlithStrider.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/SlithStrider.java
@@ -59,7 +59,7 @@ public class SlithStrider extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public SlithStrider copy() {
return new SlithStrider(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/SolarTide.java b/Mage.Sets/src/mage/sets/mirrodin/SolarTide.java
index 6164aff6d2..4ca6d7f86c 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/SolarTide.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/SolarTide.java
@@ -75,7 +75,7 @@ public class SolarTide extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public SolarTide copy() {
return new SolarTide(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/SoldierReplica.java b/Mage.Sets/src/mage/sets/mirrodin/SoldierReplica.java
index 51fcef5f56..c1048cd8bc 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/SoldierReplica.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/SoldierReplica.java
@@ -64,7 +64,7 @@ public class SoldierReplica extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public SoldierReplica copy() {
return new SoldierReplica(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/SolemnSimulacrum.java b/Mage.Sets/src/mage/sets/mirrodin/SolemnSimulacrum.java
index fd2af2f987..e0d44cc805 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/SolemnSimulacrum.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/SolemnSimulacrum.java
@@ -45,7 +45,7 @@ public class SolemnSimulacrum extends mage.sets.magic2012.SolemnSimulacrum {
super(card);
}
- @Override
+ @java.lang.Override
public SolemnSimulacrum copy() {
return new SolemnSimulacrum(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/SomberHoverguard.java b/Mage.Sets/src/mage/sets/mirrodin/SomberHoverguard.java
index 2cbd88cb14..33fdc7dbc4 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/SomberHoverguard.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/SomberHoverguard.java
@@ -58,7 +58,7 @@ public class SomberHoverguard extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public SomberHoverguard copy() {
return new SomberHoverguard(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/SoulFoundry.java b/Mage.Sets/src/mage/sets/mirrodin/SoulFoundry.java
index 8e4c6a2879..0ae3d362a2 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/SoulFoundry.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/SoulFoundry.java
@@ -76,7 +76,7 @@ public class SoulFoundry extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public void adjustCosts(Ability ability, Game game) {
if (ability instanceof SimpleActivatedAbility) {
Permanent sourcePermanent = game.getPermanent(ability.getSourceId());
@@ -99,7 +99,7 @@ public class SoulFoundry extends CardImpl {
}
}
- @Override
+ @java.lang.Override
public SoulFoundry copy() {
return new SoulFoundry(this);
}
@@ -122,7 +122,7 @@ class SoulFoundryImprintEffect extends OneShotEffect {
super(effect);
}
- @Override
+ @java.lang.Override
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
Permanent sourcePermanent = game.getPermanentOrLKIBattlefield(source.getSourceId());
@@ -147,7 +147,7 @@ class SoulFoundryImprintEffect extends OneShotEffect {
return false;
}
- @Override
+ @java.lang.Override
public SoulFoundryImprintEffect copy() {
return new SoulFoundryImprintEffect(this);
}
@@ -164,7 +164,7 @@ class SoulFoundryEffect extends OneShotEffect {
super(effect);
}
- @Override
+ @java.lang.Override
public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId());
if (controller != null) {
@@ -184,7 +184,7 @@ class SoulFoundryEffect extends OneShotEffect {
return false;
}
- @Override
+ @java.lang.Override
public SoulFoundryEffect copy() {
return new SoulFoundryEffect(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/SpikeshotGoblin.java b/Mage.Sets/src/mage/sets/mirrodin/SpikeshotGoblin.java
index 58929dcb71..b0ab572b36 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/SpikeshotGoblin.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/SpikeshotGoblin.java
@@ -68,7 +68,7 @@ public class SpikeshotGoblin extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public SpikeshotGoblin copy() {
return new SpikeshotGoblin(this);
}
@@ -84,7 +84,7 @@ class SpikeshotGoblinEffect extends OneShotEffect {
super(effect);
}
- @Override
+ @java.lang.Override
public boolean apply(Game game, Ability source) {
Permanent sourcePermanent = game.getPermanent(source.getSourceId());
if (sourcePermanent == null) {
@@ -109,7 +109,7 @@ class SpikeshotGoblinEffect extends OneShotEffect {
return false;
}
- @Override
+ @java.lang.Override
public SpikeshotGoblinEffect copy() {
return new SpikeshotGoblinEffect(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/SpoilsOfTheVault.java b/Mage.Sets/src/mage/sets/mirrodin/SpoilsOfTheVault.java
index d2eeb3bd17..6629c14c6f 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/SpoilsOfTheVault.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/SpoilsOfTheVault.java
@@ -62,7 +62,7 @@ public class SpoilsOfTheVault extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public SpoilsOfTheVault copy() {
return new SpoilsOfTheVault(this);
}
@@ -79,12 +79,12 @@ class SpoilsOfTheVaultEffect extends OneShotEffect {
super(effect);
}
- @Override
+ @java.lang.Override
public SpoilsOfTheVaultEffect copy() {
return new SpoilsOfTheVaultEffect(this);
}
- @Override
+ @java.lang.Override
public boolean apply(Game game, Ability source) {
MageObject sourceObject = game.getObject(source.getSourceId());
Player controller = game.getPlayer(source.getControllerId());
diff --git a/Mage.Sets/src/mage/sets/mirrodin/StalkingStones.java b/Mage.Sets/src/mage/sets/mirrodin/StalkingStones.java
index 718a641d77..aa3a43ba3e 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/StalkingStones.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/StalkingStones.java
@@ -45,7 +45,7 @@ public class StalkingStones extends mage.sets.tempest.StalkingStones {
super(card);
}
- @Override
+ @java.lang.Override
public StalkingStones copy() {
return new StalkingStones(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/SteelWall.java b/Mage.Sets/src/mage/sets/mirrodin/SteelWall.java
index dea66f273c..4f63898d32 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/SteelWall.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/SteelWall.java
@@ -54,7 +54,7 @@ public class SteelWall extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public SteelWall copy() {
return new SteelWall(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/SunDroplet.java b/Mage.Sets/src/mage/sets/mirrodin/SunDroplet.java
index 43a3d3ead7..f1c72773b6 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/SunDroplet.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/SunDroplet.java
@@ -45,7 +45,7 @@ public class SunDroplet extends mage.sets.commander2013.SunDroplet {
super(card);
}
- @Override
+ @java.lang.Override
public SunDroplet copy() {
return new SunDroplet(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/SunbeamSpellbomb.java b/Mage.Sets/src/mage/sets/mirrodin/SunbeamSpellbomb.java
index 62eec3e8ff..e3743d6204 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/SunbeamSpellbomb.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/SunbeamSpellbomb.java
@@ -63,7 +63,7 @@ public class SunbeamSpellbomb extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public SunbeamSpellbomb copy() {
return new SunbeamSpellbomb(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Swamp1.java b/Mage.Sets/src/mage/sets/mirrodin/Swamp1.java
index d854d42af6..381b620b2f 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Swamp1.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Swamp1.java
@@ -45,7 +45,7 @@ public class Swamp1 extends mage.cards.basiclands.Swamp {
super(card);
}
- @Override
+ @java.lang.Override
public Swamp1 copy() {
return new Swamp1(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Swamp2.java b/Mage.Sets/src/mage/sets/mirrodin/Swamp2.java
index 7bd942df3f..9c31334589 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Swamp2.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Swamp2.java
@@ -45,7 +45,7 @@ public class Swamp2 extends mage.cards.basiclands.Swamp {
super(card);
}
- @Override
+ @java.lang.Override
public Swamp2 copy() {
return new Swamp2(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Swamp3.java b/Mage.Sets/src/mage/sets/mirrodin/Swamp3.java
index 43839ceed3..459640075b 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Swamp3.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Swamp3.java
@@ -45,7 +45,7 @@ public class Swamp3 extends mage.cards.basiclands.Swamp {
super(card);
}
- @Override
+ @java.lang.Override
public Swamp3 copy() {
return new Swamp3(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Swamp4.java b/Mage.Sets/src/mage/sets/mirrodin/Swamp4.java
index cd33dd5855..da560265cd 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Swamp4.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Swamp4.java
@@ -45,7 +45,7 @@ public class Swamp4 extends mage.cards.basiclands.Swamp {
super(card);
}
- @Override
+ @java.lang.Override
public Swamp4 copy() {
return new Swamp4(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/SwordOfKaldra.java b/Mage.Sets/src/mage/sets/mirrodin/SwordOfKaldra.java
index cf7921dbde..27c6fa36ec 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/SwordOfKaldra.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/SwordOfKaldra.java
@@ -71,7 +71,7 @@ public class SwordOfKaldra extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public SwordOfKaldra copy() {
return new SwordOfKaldra(this);
}
@@ -87,17 +87,17 @@ class SwordOfKaldraTriggeredAbility extends TriggeredAbilityImpl {
super(ability);
}
- @Override
+ @java.lang.Override
public SwordOfKaldraTriggeredAbility copy() {
return new SwordOfKaldraTriggeredAbility(this);
}
- @Override
+ @java.lang.Override
public boolean checkEventType(GameEvent event, Game game) {
return event.getType() == EventType.DAMAGED_CREATURE;
}
- @Override
+ @java.lang.Override
public boolean checkTrigger(GameEvent event, Game game) {
Permanent equipment = game.getPermanent(this.getSourceId());
if (equipment != null
@@ -111,7 +111,7 @@ class SwordOfKaldraTriggeredAbility extends TriggeredAbilityImpl {
return false;
}
- @Override
+ @java.lang.Override
public String getRule() {
return "Whenever equipped creature deals damage to a creature, " + super.getRule();
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/SylvanScrying.java b/Mage.Sets/src/mage/sets/mirrodin/SylvanScrying.java
index 5a061a85b1..6acde907ee 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/SylvanScrying.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/SylvanScrying.java
@@ -45,7 +45,7 @@ public class SylvanScrying extends mage.sets.tenthedition.SylvanScrying {
super(card);
}
- @Override
+ @java.lang.Override
public SylvanScrying copy() {
return new SylvanScrying(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/TajNarSwordsmith.java b/Mage.Sets/src/mage/sets/mirrodin/TajNarSwordsmith.java
index 33a834624f..884f933f93 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/TajNarSwordsmith.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/TajNarSwordsmith.java
@@ -69,7 +69,7 @@ public class TajNarSwordsmith extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public TajNarSwordsmith copy() {
return new TajNarSwordsmith(this);
}
@@ -86,12 +86,12 @@ class TajNarSwordsmithEffect extends OneShotEffect {
super(effect);
}
- @Override
+ @java.lang.Override
public TajNarSwordsmithEffect copy() {
return new TajNarSwordsmithEffect(this);
}
- @Override
+ @java.lang.Override
public boolean apply(Game game, Ability source) {
Player player = game.getPlayer(source.getControllerId());
if (player != null && player.chooseUse(Outcome.BoostCreature, "Do you want to to pay {X}?", source, game)) {
diff --git a/Mage.Sets/src/mage/sets/mirrodin/TalismanOfDominance.java b/Mage.Sets/src/mage/sets/mirrodin/TalismanOfDominance.java
index 8501d95ab3..f22aea13fd 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/TalismanOfDominance.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/TalismanOfDominance.java
@@ -62,7 +62,7 @@ public class TalismanOfDominance extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public TalismanOfDominance copy() {
return new TalismanOfDominance(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/TalismanOfImpulse.java b/Mage.Sets/src/mage/sets/mirrodin/TalismanOfImpulse.java
index 1e191f0249..f0072e4c5b 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/TalismanOfImpulse.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/TalismanOfImpulse.java
@@ -62,7 +62,7 @@ public class TalismanOfImpulse extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public TalismanOfImpulse copy() {
return new TalismanOfImpulse(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/TalismanOfIndulgence.java b/Mage.Sets/src/mage/sets/mirrodin/TalismanOfIndulgence.java
index 48cbb1c73e..d2b54e4806 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/TalismanOfIndulgence.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/TalismanOfIndulgence.java
@@ -62,7 +62,7 @@ public class TalismanOfIndulgence extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public TalismanOfIndulgence copy() {
return new TalismanOfIndulgence(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/TalismanOfProgress.java b/Mage.Sets/src/mage/sets/mirrodin/TalismanOfProgress.java
index d955bb7b8e..906fe8f676 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/TalismanOfProgress.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/TalismanOfProgress.java
@@ -62,7 +62,7 @@ public class TalismanOfProgress extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public TalismanOfProgress copy() {
return new TalismanOfProgress(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/TalismanOfUnity.java b/Mage.Sets/src/mage/sets/mirrodin/TalismanOfUnity.java
index 3b87ca52e9..2be502e301 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/TalismanOfUnity.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/TalismanOfUnity.java
@@ -62,7 +62,7 @@ public class TalismanOfUnity extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public TalismanOfUnity copy() {
return new TalismanOfUnity(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Tanglebloom.java b/Mage.Sets/src/mage/sets/mirrodin/Tanglebloom.java
index d146518970..c79c011f4d 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Tanglebloom.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Tanglebloom.java
@@ -58,7 +58,7 @@ public class Tanglebloom extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public Tanglebloom copy() {
return new Tanglebloom(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/TelJiladArchers.java b/Mage.Sets/src/mage/sets/mirrodin/TelJiladArchers.java
index 0aa6211b08..2f0dde06bc 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/TelJiladArchers.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/TelJiladArchers.java
@@ -60,7 +60,7 @@ public class TelJiladArchers extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public TelJiladArchers copy() {
return new TelJiladArchers(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/TelJiladChosen.java b/Mage.Sets/src/mage/sets/mirrodin/TelJiladChosen.java
index b6f56f03ca..e86c45d484 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/TelJiladChosen.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/TelJiladChosen.java
@@ -57,7 +57,7 @@ public class TelJiladChosen extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public TelJiladChosen copy() {
return new TelJiladChosen(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/TelJiladExile.java b/Mage.Sets/src/mage/sets/mirrodin/TelJiladExile.java
index c05e325568..d7d9230191 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/TelJiladExile.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/TelJiladExile.java
@@ -59,7 +59,7 @@ public class TelJiladExile extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public TelJiladExile copy() {
return new TelJiladExile(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/TelJiladStylus.java b/Mage.Sets/src/mage/sets/mirrodin/TelJiladStylus.java
index b6a5e99a57..f29623b9c8 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/TelJiladStylus.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/TelJiladStylus.java
@@ -69,7 +69,7 @@ public class TelJiladStylus extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public TelJiladStylus copy() {
return new TelJiladStylus(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/TempestOfLight.java b/Mage.Sets/src/mage/sets/mirrodin/TempestOfLight.java
index 8affb86117..e24ba4fd08 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/TempestOfLight.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/TempestOfLight.java
@@ -45,7 +45,7 @@ public class TempestOfLight extends mage.sets.magic2010.TempestOfLight {
super(card);
}
- @Override
+ @java.lang.Override
public TempestOfLight copy() {
return new TempestOfLight(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/TemporalCascade.java b/Mage.Sets/src/mage/sets/mirrodin/TemporalCascade.java
index 8665d7274d..7767cfbe06 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/TemporalCascade.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/TemporalCascade.java
@@ -67,7 +67,7 @@ public class TemporalCascade extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public TemporalCascade copy() {
return new TemporalCascade(this);
}
@@ -84,7 +84,7 @@ class TemporalCascadeShuffleEffect extends OneShotEffect {
super(effect);
}
- @Override
+ @java.lang.Override
public boolean apply(Game game, Ability source) {
Player sourcePlayer = game.getPlayer(source.getControllerId());
for (UUID playerId: sourcePlayer.getInRange()) {
@@ -103,7 +103,7 @@ class TemporalCascadeShuffleEffect extends OneShotEffect {
return true;
}
- @Override
+ @java.lang.Override
public TemporalCascadeShuffleEffect copy() {
return new TemporalCascadeShuffleEffect(this);
}
@@ -120,7 +120,7 @@ class TemporalCascadeDrawEffect extends OneShotEffect {
super(effect);
}
- @Override
+ @java.lang.Override
public boolean apply(Game game, Ability source) {
Player sourcePlayer = game.getPlayer(source.getControllerId());
game.getState().handleSimultaneousEvent(game); // needed here so state based triggered effects
@@ -133,7 +133,7 @@ class TemporalCascadeDrawEffect extends OneShotEffect {
return true;
}
- @Override
+ @java.lang.Override
public TemporalCascadeDrawEffect copy() {
return new TemporalCascadeDrawEffect(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Terror.java b/Mage.Sets/src/mage/sets/mirrodin/Terror.java
index 057a2ca0c8..ba172bc20f 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Terror.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Terror.java
@@ -45,7 +45,7 @@ public class Terror extends mage.sets.tenthedition.Terror {
super(card);
}
- @Override
+ @java.lang.Override
public Terror copy() {
return new Terror(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/ThirstForKnowledge.java b/Mage.Sets/src/mage/sets/mirrodin/ThirstForKnowledge.java
index 4f3461387e..eae35bffad 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/ThirstForKnowledge.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/ThirstForKnowledge.java
@@ -45,7 +45,7 @@ public class ThirstForKnowledge extends mage.sets.planechase.ThirstForKnowledge
super(card);
}
- @Override
+ @java.lang.Override
public ThirstForKnowledge copy() {
return new ThirstForKnowledge(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Thoughtcast.java b/Mage.Sets/src/mage/sets/mirrodin/Thoughtcast.java
index 4d90ccc4c2..1197995c4c 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Thoughtcast.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Thoughtcast.java
@@ -45,7 +45,7 @@ public class Thoughtcast extends mage.sets.elspethvstezzeret.Thoughtcast {
super(card);
}
- @Override
+ @java.lang.Override
public Thoughtcast copy() {
return new Thoughtcast(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/TitaniumGolem.java b/Mage.Sets/src/mage/sets/mirrodin/TitaniumGolem.java
index 9cb7ff5f6b..610835b34b 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/TitaniumGolem.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/TitaniumGolem.java
@@ -59,7 +59,7 @@ public class TitaniumGolem extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public TitaniumGolem copy() {
return new TitaniumGolem(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/ToothAndNail.java b/Mage.Sets/src/mage/sets/mirrodin/ToothAndNail.java
index a50188250a..c9b4b4ab8d 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/ToothAndNail.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/ToothAndNail.java
@@ -45,7 +45,7 @@ public class ToothAndNail extends mage.sets.modernmasters.ToothAndNail {
super(card);
}
- @Override
+ @java.lang.Override
public ToothAndNail copy() {
return new ToothAndNail(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/ToothOfChissGoria.java b/Mage.Sets/src/mage/sets/mirrodin/ToothOfChissGoria.java
index ba598aff8b..8417487ab1 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/ToothOfChissGoria.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/ToothOfChissGoria.java
@@ -65,7 +65,7 @@ public class ToothOfChissGoria extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public ToothOfChissGoria copy() {
return new ToothOfChissGoria(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/TowerOfChampions.java b/Mage.Sets/src/mage/sets/mirrodin/TowerOfChampions.java
index 8da2243911..988534c802 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/TowerOfChampions.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/TowerOfChampions.java
@@ -61,7 +61,7 @@ public class TowerOfChampions extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public TowerOfChampions copy() {
return new TowerOfChampions(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/TowerOfEons.java b/Mage.Sets/src/mage/sets/mirrodin/TowerOfEons.java
index 4ae77a5e20..fca55d57ed 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/TowerOfEons.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/TowerOfEons.java
@@ -58,7 +58,7 @@ public class TowerOfEons extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public TowerOfEons copy() {
return new TowerOfEons(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/TowerOfFortunes.java b/Mage.Sets/src/mage/sets/mirrodin/TowerOfFortunes.java
index eed8fa34fb..d3d80c565e 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/TowerOfFortunes.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/TowerOfFortunes.java
@@ -58,7 +58,7 @@ public class TowerOfFortunes extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public TowerOfFortunes copy() {
return new TowerOfFortunes(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/TowerOfMurmurs.java b/Mage.Sets/src/mage/sets/mirrodin/TowerOfMurmurs.java
index 74cbf64bce..3c4e4452ef 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/TowerOfMurmurs.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/TowerOfMurmurs.java
@@ -60,7 +60,7 @@ public class TowerOfMurmurs extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public TowerOfMurmurs copy() {
return new TowerOfMurmurs(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/TrashForTreasure.java b/Mage.Sets/src/mage/sets/mirrodin/TrashForTreasure.java
index 8653694657..4c1c77b310 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/TrashForTreasure.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/TrashForTreasure.java
@@ -66,7 +66,7 @@ public class TrashForTreasure extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public TrashForTreasure copy() {
return new TrashForTreasure(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/TreeOfTales.java b/Mage.Sets/src/mage/sets/mirrodin/TreeOfTales.java
index 61fca0de6a..c604eb3a7a 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/TreeOfTales.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/TreeOfTales.java
@@ -50,7 +50,7 @@ public class TreeOfTales extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public TreeOfTales copy() {
return new TreeOfTales(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Triskelion.java b/Mage.Sets/src/mage/sets/mirrodin/Triskelion.java
index 127256fd0c..b47e3605ac 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Triskelion.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Triskelion.java
@@ -45,7 +45,7 @@ public class Triskelion extends mage.sets.magic2011.Triskelion {
super(card);
}
- @Override
+ @java.lang.Override
public Triskelion copy() {
return new Triskelion(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/TrollAscetic.java b/Mage.Sets/src/mage/sets/mirrodin/TrollAscetic.java
index 19760f938c..acdeea42cd 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/TrollAscetic.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/TrollAscetic.java
@@ -61,7 +61,7 @@ public class TrollAscetic extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public TrollAscetic copy() {
return new TrollAscetic(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/TrollsOfTelJilad.java b/Mage.Sets/src/mage/sets/mirrodin/TrollsOfTelJilad.java
index b49354cd7c..348bcbce2a 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/TrollsOfTelJilad.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/TrollsOfTelJilad.java
@@ -72,7 +72,7 @@ public class TrollsOfTelJilad extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public TrollsOfTelJilad copy() {
return new TrollsOfTelJilad(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/TurnToDust.java b/Mage.Sets/src/mage/sets/mirrodin/TurnToDust.java
index 06b9939603..e7d9832552 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/TurnToDust.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/TurnToDust.java
@@ -63,7 +63,7 @@ public class TurnToDust extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public TurnToDust copy() {
return new TurnToDust(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/VaultOfWhispers.java b/Mage.Sets/src/mage/sets/mirrodin/VaultOfWhispers.java
index 57203693fd..539d41680f 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/VaultOfWhispers.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/VaultOfWhispers.java
@@ -50,7 +50,7 @@ public class VaultOfWhispers extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public VaultOfWhispers copy() {
return new VaultOfWhispers(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/VedalkenArchmage.java b/Mage.Sets/src/mage/sets/mirrodin/VedalkenArchmage.java
index 5589557fd2..6ae9ac52b8 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/VedalkenArchmage.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/VedalkenArchmage.java
@@ -59,7 +59,7 @@ public class VedalkenArchmage extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public VedalkenArchmage copy() {
return new VedalkenArchmage(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/ViridianJoiner.java b/Mage.Sets/src/mage/sets/mirrodin/ViridianJoiner.java
index c9e71165d4..4c289b7e4e 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/ViridianJoiner.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/ViridianJoiner.java
@@ -59,7 +59,7 @@ public class ViridianJoiner extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public ViridianJoiner copy() {
return new ViridianJoiner(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/ViridianShaman.java b/Mage.Sets/src/mage/sets/mirrodin/ViridianShaman.java
index 152fb42010..93d6f8f77e 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/ViridianShaman.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/ViridianShaman.java
@@ -45,7 +45,7 @@ public class ViridianShaman extends mage.sets.tenthedition.ViridianShaman {
super(card);
}
- @Override
+ @java.lang.Override
public ViridianShaman copy() {
return new ViridianShaman(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/VorracBattlehorns.java b/Mage.Sets/src/mage/sets/mirrodin/VorracBattlehorns.java
index b3033e3265..a4d47e9d1d 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/VorracBattlehorns.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/VorracBattlehorns.java
@@ -75,7 +75,7 @@ public class VorracBattlehorns extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public VorracBattlehorns copy() {
return new VorracBattlehorns(this);
}
@@ -103,12 +103,12 @@ class CantBeBlockedByMoreThanOneAttachedEffect extends ContinuousEffectImpl {
this.attachmentType = effect.attachmentType;
}
- @Override
+ @java.lang.Override
public CantBeBlockedByMoreThanOneAttachedEffect copy() {
return new CantBeBlockedByMoreThanOneAttachedEffect(this);
}
- @Override
+ @java.lang.Override
public boolean apply(Layer layer, SubLayer sublayer, Ability source, Game game) {
switch (layer) {
case RulesEffects:
@@ -125,12 +125,12 @@ class CantBeBlockedByMoreThanOneAttachedEffect extends ContinuousEffectImpl {
return false;
}
- @Override
+ @java.lang.Override
public boolean apply(Game game, Ability source) {
return false;
}
- @Override
+ @java.lang.Override
public boolean hasLayer(Layer layer) {
return layer == Layer.RulesEffects;
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/VulshokBattlegear.java b/Mage.Sets/src/mage/sets/mirrodin/VulshokBattlegear.java
index 7a2be4fbc2..99142d8b86 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/VulshokBattlegear.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/VulshokBattlegear.java
@@ -58,7 +58,7 @@ public class VulshokBattlegear extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public VulshokBattlegear copy() {
return new VulshokBattlegear(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/VulshokBerserker.java b/Mage.Sets/src/mage/sets/mirrodin/VulshokBerserker.java
index 9ee0bff29a..e108be7a73 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/VulshokBerserker.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/VulshokBerserker.java
@@ -45,7 +45,7 @@ public class VulshokBerserker extends mage.sets.magic2011.VulshokBerserker {
super(card);
}
- @Override
+ @java.lang.Override
public VulshokBerserker copy() {
return new VulshokBerserker(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/VulshokGauntlets.java b/Mage.Sets/src/mage/sets/mirrodin/VulshokGauntlets.java
index d07b4de322..1022f36810 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/VulshokGauntlets.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/VulshokGauntlets.java
@@ -74,7 +74,7 @@ public class VulshokGauntlets extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public VulshokGauntlets copy() {
return new VulshokGauntlets(this);
}
@@ -91,22 +91,22 @@ class VulshokGauntletsEffect extends ReplacementEffectImpl {
super(effect);
}
- @Override
+ @java.lang.Override
public VulshokGauntletsEffect copy() {
return new VulshokGauntletsEffect(this);
}
- @Override
+ @java.lang.Override
public boolean replaceEvent(GameEvent event, Ability source, Game game) {
return true;
}
- @Override
+ @java.lang.Override
public boolean checksEventType(GameEvent event, Game game) {
return event.getType() == GameEvent.EventType.UNTAP;
}
- @Override
+ @java.lang.Override
public boolean applies(GameEvent event, Ability source, Game game) {
if (game.getTurn().getStepType() == PhaseStep.UNTAP) {
Permanent equipment = game.getPermanent(source.getSourceId());
diff --git a/Mage.Sets/src/mage/sets/mirrodin/WailOfTheNim.java b/Mage.Sets/src/mage/sets/mirrodin/WailOfTheNim.java
index cbe3b765bd..429360ddf6 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/WailOfTheNim.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/WailOfTheNim.java
@@ -63,7 +63,7 @@ public class WailOfTheNim extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public WailOfTheNim copy() {
return new WailOfTheNim(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/WallOfBlood.java b/Mage.Sets/src/mage/sets/mirrodin/WallOfBlood.java
index 5535457b7f..3e40690215 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/WallOfBlood.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/WallOfBlood.java
@@ -62,7 +62,7 @@ public class WallOfBlood extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public WallOfBlood copy() {
return new WallOfBlood(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/WanderguardSentry.java b/Mage.Sets/src/mage/sets/mirrodin/WanderguardSentry.java
index 8fb623dad0..40daf3e301 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/WanderguardSentry.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/WanderguardSentry.java
@@ -45,7 +45,7 @@ public class WanderguardSentry extends mage.sets.ninthedition.WanderguardSentry
super(card);
}
- @Override
+ @java.lang.Override
public WanderguardSentry copy() {
return new WanderguardSentry(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/WeldingJar.java b/Mage.Sets/src/mage/sets/mirrodin/WeldingJar.java
index ada85339d7..dc1be1047b 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/WeldingJar.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/WeldingJar.java
@@ -58,7 +58,7 @@ public class WeldingJar extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public WeldingJar copy() {
return new WeldingJar(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/WizardReplica.java b/Mage.Sets/src/mage/sets/mirrodin/WizardReplica.java
index d750a39ba8..b2bdade484 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/WizardReplica.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/WizardReplica.java
@@ -45,7 +45,7 @@ public class WizardReplica extends mage.sets.planechase.WizardReplica {
super(card);
}
- @Override
+ @java.lang.Override
public WizardReplica copy() {
return new WizardReplica(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/Worldslayer.java b/Mage.Sets/src/mage/sets/mirrodin/Worldslayer.java
index 3cb17a7e36..6d3883763f 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/Worldslayer.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/Worldslayer.java
@@ -45,7 +45,7 @@ public class Worldslayer extends mage.sets.magic2012.Worldslayer {
super(card);
}
- @Override
+ @java.lang.Override
public Worldslayer copy() {
return new Worldslayer(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodin/WrenchMind.java b/Mage.Sets/src/mage/sets/mirrodin/WrenchMind.java
index e03f202fee..48f36ef398 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/WrenchMind.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/WrenchMind.java
@@ -61,7 +61,7 @@ public class WrenchMind extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public WrenchMind copy() {
return new WrenchMind(this);
}
@@ -78,12 +78,12 @@ class WrenchMindEffect extends OneShotEffect {
super(effect);
}
- @Override
+ @java.lang.Override
public WrenchMindEffect copy() {
return new WrenchMindEffect(this);
}
- @Override
+ @java.lang.Override
public boolean apply(Game game, Ability source) {
Player targetPlayer = game.getPlayer(this.getTargetPointer().getFirst(game, source));
if (targetPlayer != null && !targetPlayer.getHand().isEmpty()) {
diff --git a/Mage.Sets/src/mage/sets/mirrodin/YotianSoldier.java b/Mage.Sets/src/mage/sets/mirrodin/YotianSoldier.java
index 2798163657..c3f142ccc9 100644
--- a/Mage.Sets/src/mage/sets/mirrodin/YotianSoldier.java
+++ b/Mage.Sets/src/mage/sets/mirrodin/YotianSoldier.java
@@ -55,7 +55,7 @@ public class YotianSoldier extends CardImpl {
super(card);
}
- @Override
+ @java.lang.Override
public YotianSoldier copy() {
return new YotianSoldier(this);
}
diff --git a/Mage.Sets/src/mage/sets/mirrodinbesieged/DivineOffering.java b/Mage.Sets/src/mage/sets/mirrodinbesieged/DivineOffering.java
index 1fcbb3dd8d..8dd821a21b 100644
--- a/Mage.Sets/src/mage/sets/mirrodinbesieged/DivineOffering.java
+++ b/Mage.Sets/src/mage/sets/mirrodinbesieged/DivineOffering.java
@@ -28,14 +28,13 @@
package mage.sets.mirrodinbesieged;
import java.util.UUID;
-
-import mage.constants.CardType;
-import mage.constants.Rarity;
import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.DestroyTargetEffect;
import mage.cards.CardImpl;
+import mage.constants.CardType;
import mage.constants.Outcome;
+import mage.constants.Rarity;
import mage.filter.FilterPermanent;
import mage.filter.predicate.mageobject.CardTypePredicate;
import mage.game.Game;
@@ -88,9 +87,9 @@ public class DivineOffering extends CardImpl {
@Override
public boolean apply(Game game, Ability source) {
- Permanent artefact = game.getPermanentOrLKIBattlefield(getTargetPointer().getFirst(game, source));
- if (artefact != null) {
- int cost = artefact.getManaCost().convertedManaCost();
+ Permanent artifact = game.getPermanentOrLKIBattlefield(getTargetPointer().getFirst(game, source));
+ if (artifact != null) {
+ int cost = artifact.getManaCost().convertedManaCost();
Player player = game.getPlayer(source.getControllerId());
if (player != null) {
player.gainLife(cost, game);
diff --git a/Mage.Sets/src/mage/sets/morningtide/VioletPall.java b/Mage.Sets/src/mage/sets/morningtide/VioletPall.java
index 228a57579b..7b760e28e4 100644
--- a/Mage.Sets/src/mage/sets/morningtide/VioletPall.java
+++ b/Mage.Sets/src/mage/sets/morningtide/VioletPall.java
@@ -28,15 +28,18 @@
package mage.sets.morningtide;
import java.util.UUID;
+import mage.MageInt;
import mage.constants.CardType;
import mage.constants.Rarity;
import mage.ObjectColor;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.DestroyTargetEffect;
+import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.mageobject.ColorPredicate;
+import mage.game.permanent.token.Token;
import mage.target.common.TargetCreaturePermanent;
/**
@@ -58,7 +61,7 @@ public class VioletPall extends CardImpl {
this.getSpellAbility().addEffect(new DestroyTargetEffect());
this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter));
- this.getSpellAbility().addEffect(new CreateTokenEffect(new FaerieToken(), 1));
+ this.getSpellAbility().addEffect(new CreateTokenEffect(new VioletPallFaerieToken(), 1));
}
public VioletPall(final VioletPall card) {
@@ -70,3 +73,17 @@ public class VioletPall extends CardImpl {
return new VioletPall(this);
}
}
+
+class VioletPallFaerieToken extends Token {
+
+ VioletPallFaerieToken() {
+ super("Faerie Rogue", "1/1 black Faerie Rogue creature token with flying");
+ cardType.add(CardType.CREATURE);
+ color.setBlack(true);
+ subtype.add("Faerie");
+ subtype.add("Rogue");
+ power = new MageInt(1);
+ toughness = new MageInt(1);
+ this.addAbility(FlyingAbility.getInstance());
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/nemesis/AvengerEnDal.java b/Mage.Sets/src/mage/sets/nemesis/AvengerEnDal.java
new file mode 100644
index 0000000000..9875b337a5
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/nemesis/AvengerEnDal.java
@@ -0,0 +1,110 @@
+/*
+ * 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.nemesis;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.DiscardCardCost;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.ExileTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
+import mage.players.Player;
+import mage.target.common.TargetAttackingCreature;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class AvengerEnDal extends CardImpl {
+
+ public AvengerEnDal(UUID ownerId) {
+ super(ownerId, 2, "Avenger en-Dal", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{1}{W}");
+ this.expansionSetCode = "NMS";
+ this.subtype.add("Human");
+ this.subtype.add("Spellshaper");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // {2}{W}, {tap}, Discard a card: Exile target attacking creature. Its controller gains life equal to its toughness.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ExileTargetEffect(), new ManaCostsImpl("{2}{W}"));
+ ability.addCost(new TapSourceCost());
+ ability.addCost(new DiscardCardCost());
+ ability.addTarget(new TargetAttackingCreature());
+ ability.addEffect(new AvengerEnDalEffect());
+ this.addAbility(ability);
+ }
+
+ public AvengerEnDal(final AvengerEnDal card) {
+ super(card);
+ }
+
+ @Override
+ public AvengerEnDal copy() {
+ return new AvengerEnDal(this);
+ }
+}
+
+class AvengerEnDalEffect extends OneShotEffect {
+
+ public AvengerEnDalEffect() {
+ super(Outcome.GainLife);
+ staticText = "Its controller gains life equal to its toughness";
+ }
+
+ public AvengerEnDalEffect(final AvengerEnDalEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public AvengerEnDalEffect copy() {
+ return new AvengerEnDalEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Permanent permanent = game.getPermanentOrLKIBattlefield(getTargetPointer().getFirst(game, source));
+ if (permanent != null) {
+ Player player = game.getPlayer(permanent.getControllerId());
+ if (player != null) {
+ player.gainLife(permanent.getToughness().getValue(), game);
+ }
+ return true;
+ }
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/Mage.Sets/src/mage/sets/nemesis/DefenderEnVec.java b/Mage.Sets/src/mage/sets/nemesis/DefenderEnVec.java
new file mode 100644
index 0000000000..e6a7c7557f
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/nemesis/DefenderEnVec.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.nemesis;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.RemoveCountersSourceCost;
+import mage.abilities.effects.common.PreventDamageToTargetEffect;
+import mage.abilities.keyword.FadingAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.counters.CounterType;
+import mage.target.common.TargetCreatureOrPlayer;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class DefenderEnVec extends CardImpl {
+
+ public DefenderEnVec(UUID ownerId) {
+ super(ownerId, 5, "Defender en-Vec", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{3}{W}");
+ this.expansionSetCode = "NMS";
+ this.subtype.add("Human");
+ this.subtype.add("Cleric");
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(4);
+
+ // Fading 4
+ this.addAbility(new FadingAbility(4, this));
+
+ // Remove a fade counter from Defender en-Vec: Prevent the next 2 damage that would be dealt to target creature or player this turn.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
+ new PreventDamageToTargetEffect(Duration.EndOfTurn, 2), new RemoveCountersSourceCost(CounterType.FADE.createInstance()));
+ ability.addTarget(new TargetCreatureOrPlayer());
+ this.addAbility(ability);
+ }
+
+ public DefenderEnVec(final DefenderEnVec card) {
+ super(card);
+ }
+
+ @Override
+ public DefenderEnVec copy() {
+ return new DefenderEnVec(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/nemesis/DefiantFalcon.java b/Mage.Sets/src/mage/sets/nemesis/DefiantFalcon.java
new file mode 100644
index 0000000000..ea6c267313
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/nemesis/DefiantFalcon.java
@@ -0,0 +1,87 @@
+/*
+ * 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.nemesis;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect;
+import mage.abilities.keyword.FlyingAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.filter.Filter;
+import mage.filter.common.FilterPermanentCard;
+import mage.filter.predicate.mageobject.ConvertedManaCostPredicate;
+import mage.filter.predicate.mageobject.SubtypePredicate;
+import mage.target.common.TargetCardInLibrary;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class DefiantFalcon extends CardImpl {
+
+ private static final FilterPermanentCard filter = new FilterPermanentCard("Rebel permanent card with converted mana cost 3 or less");
+
+ static {
+ filter.add(new SubtypePredicate("Rebel"));
+ filter.add(new ConvertedManaCostPredicate(Filter.ComparisonType.LessThan, 4));
+ }
+
+ public DefiantFalcon(UUID ownerId) {
+ super(ownerId, 6, "Defiant Falcon", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{1}{W}");
+ this.expansionSetCode = "NMS";
+ this.subtype.add("Rebel");
+ this.subtype.add("Bird");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // Flying
+ this.addAbility(FlyingAbility.getInstance());
+
+ // {4}, {tap}: Search your library for a Rebel permanent card with converted mana cost 3 or less and put it onto the battlefield. Then shuffle your library.
+ SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
+ new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filter), false),
+ new ManaCostsImpl("{4}"));
+ ability.addCost(new TapSourceCost());
+ this.addAbility(ability);
+ }
+
+ public DefiantFalcon(final DefiantFalcon card) {
+ super(card);
+ }
+
+ @Override
+ public DefiantFalcon copy() {
+ return new DefiantFalcon(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/nemesis/Lawbringer.java b/Mage.Sets/src/mage/sets/nemesis/Lawbringer.java
new file mode 100644
index 0000000000..ab0b587a21
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/nemesis/Lawbringer.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.nemesis;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.ObjectColor;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.SacrificeSourceCost;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.effects.common.ExileTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.mageobject.ColorPredicate;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class Lawbringer extends CardImpl {
+
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("red creature");
+
+ static {
+ filter.add(new ColorPredicate(ObjectColor.RED));
+ }
+
+ public Lawbringer(UUID ownerId) {
+ super(ownerId, 10, "Lawbringer", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{W}");
+ this.expansionSetCode = "NMS";
+ this.subtype.add("Kor");
+ this.subtype.add("Rebel");
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(2);
+
+ // {tap}, Sacrifice Lawbringer: Exile target red creature.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ExileTargetEffect(), new TapSourceCost());
+ ability.addCost(new SacrificeSourceCost());
+ ability.addTarget(new TargetCreaturePermanent(filter));
+ this.addAbility(ability);
+ }
+
+ public Lawbringer(final Lawbringer card) {
+ super(card);
+ }
+
+ @Override
+ public Lawbringer copy() {
+ return new Lawbringer(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/nemesis/Lightbringer.java b/Mage.Sets/src/mage/sets/nemesis/Lightbringer.java
new file mode 100644
index 0000000000..aefe3b373c
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/nemesis/Lightbringer.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.nemesis;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.ObjectColor;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.SacrificeSourceCost;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.effects.common.ExileTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.mageobject.ColorPredicate;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class Lightbringer extends CardImpl {
+
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("black creature");
+
+ static {
+ filter.add(new ColorPredicate(ObjectColor.BLACK));
+ }
+
+ public Lightbringer(UUID ownerId) {
+ super(ownerId, 11, "Lightbringer", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{W}");
+ this.expansionSetCode = "NMS";
+ this.subtype.add("Kor");
+ this.subtype.add("Rebel");
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(2);
+
+ // {tap}, Sacrifice Lightbringer: Exile target black creature.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ExileTargetEffect(), new TapSourceCost());
+ ability.addCost(new SacrificeSourceCost());
+ ability.addTarget(new TargetCreaturePermanent(filter));
+ this.addAbility(ability);
+ }
+
+ public Lightbringer(final Lightbringer card) {
+ super(card);
+ }
+
+ @Override
+ public Lightbringer copy() {
+ return new Lightbringer(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/nemesis/LinSivviDefiantHero.java b/Mage.Sets/src/mage/sets/nemesis/LinSivviDefiantHero.java
new file mode 100644
index 0000000000..efc9dcd7c2
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/nemesis/LinSivviDefiantHero.java
@@ -0,0 +1,145 @@
+/*
+ * 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.nemesis;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.costs.mana.GenericManaCost;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.PutOnLibraryTargetEffect;
+import mage.cards.Card;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.constants.Rarity;
+import mage.constants.TargetController;
+import mage.constants.Zone;
+import mage.filter.Filter.ComparisonType;
+import mage.filter.FilterCard;
+import mage.filter.common.FilterPermanentCard;
+import mage.filter.predicate.mageobject.ConvertedManaCostPredicate;
+import mage.filter.predicate.mageobject.SubtypePredicate;
+import mage.filter.predicate.other.OwnerPredicate;
+import mage.game.Game;
+import mage.players.Player;
+import mage.target.common.TargetCardInLibrary;
+import mage.target.common.TargetCardInYourGraveyard;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class LinSivviDefiantHero extends CardImpl {
+
+ private static final FilterCard filter = new FilterCard("Rebel card from your graveyard");
+
+ static {
+ filter.add(new OwnerPredicate(TargetController.YOU));
+ filter.add(new SubtypePredicate("Rebel"));
+ }
+
+ static final String rule = "Put target Rebel card from your graveyard on the bottom of your library";
+
+ public LinSivviDefiantHero(UUID ownerId) {
+ super(ownerId, 12, "Lin Sivvi, Defiant Hero", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{1}{W}{W}");
+ this.expansionSetCode = "NMS";
+ this.supertype.add("Legendary");
+ this.subtype.add("Human");
+ this.subtype.add("Rebel");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(3);
+
+ // {X}, {tap}: Search your library for a Rebel permanent card with converted mana cost X or less and put it onto the battlefield. Then shuffle your library.
+ SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
+ new LinSivviDefiantHeroEffect(),
+ new ManaCostsImpl("{X}"));
+ ability.addCost(new TapSourceCost());
+ this.addAbility(ability);
+
+ // {3}: Put target Rebel card from your graveyard on the bottom of your library.
+ ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new PutOnLibraryTargetEffect(false, rule), new GenericManaCost(3));
+ ability.addTarget(new TargetCardInYourGraveyard(1, filter));
+ this.addAbility(ability);
+ }
+
+ public LinSivviDefiantHero(final LinSivviDefiantHero card) {
+ super(card);
+ }
+
+ @Override
+ public LinSivviDefiantHero copy() {
+ return new LinSivviDefiantHero(this);
+ }
+}
+
+class LinSivviDefiantHeroEffect extends OneShotEffect {
+
+ public LinSivviDefiantHeroEffect() {
+ super(Outcome.DrawCard);
+ this.staticText = "Search your library for a Rebel permanent card with converted mana cost X or less and put it onto the battlefield. Then shuffle your library";
+ }
+
+ public LinSivviDefiantHeroEffect(final LinSivviDefiantHeroEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public LinSivviDefiantHeroEffect copy() {
+ return new LinSivviDefiantHeroEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player player = game.getPlayer(source.getControllerId());
+ if (player == null) {
+ return false;
+ }
+
+ int xCost = source.getManaCostsToPay().getX();
+
+ FilterPermanentCard filter = new FilterPermanentCard(new StringBuilder("Rebel permanent card with converted mana cost ").append(xCost).append(" or less").toString());
+ filter.add(new ConvertedManaCostPredicate(ComparisonType.LessThan, xCost + 1));
+ filter.add(new SubtypePredicate("Rebel"));
+ TargetCardInLibrary target = new TargetCardInLibrary(filter);
+
+ if (player.searchLibrary(target, game)) {
+ Card card = player.getLibrary().getCard(target.getFirstTarget(), game);
+ if (card != null) {
+ player.putOntoBattlefieldWithInfo(card, game, Zone.LIBRARY, source.getSourceId());
+ }
+ player.shuffleLibrary(game);
+ return true;
+ }
+ player.shuffleLibrary(game);
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/Mage.Sets/src/mage/sets/nemesis/MoggAlarm.java b/Mage.Sets/src/mage/sets/nemesis/MoggAlarm.java
new file mode 100644
index 0000000000..3a7e4d58fb
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/nemesis/MoggAlarm.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.nemesis;
+
+import java.util.UUID;
+import mage.abilities.costs.AlternativeCostSourceAbility;
+import mage.abilities.costs.common.SacrificeTargetCost;
+import mage.abilities.effects.common.CreateTokenEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.filter.common.FilterControlledPermanent;
+import mage.filter.predicate.mageobject.SubtypePredicate;
+import mage.game.permanent.token.GoblinToken;
+import mage.target.common.TargetControlledPermanent;
+
+/**
+ *
+ * @author markedagain
+ */
+public class MoggAlarm extends CardImpl {
+
+ private static final FilterControlledPermanent filter = new FilterControlledPermanent("two Mountains");
+ static {
+ filter.add(new SubtypePredicate("Mountain"));
+ }
+
+ public MoggAlarm(UUID ownerId) {
+ super(ownerId, 93, "Mogg Alarm", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{1}{R}{R}");
+ this.expansionSetCode = "NMS";
+
+ // You may sacrifice two Mountains rather than pay Mogg Alarm's mana cost.
+ this.addAbility(new AlternativeCostSourceAbility(new SacrificeTargetCost(new TargetControlledPermanent(2, 2, filter, true))));
+ // Put two 1/1 red Goblin creature tokens onto the battlefield.
+ this.getSpellAbility().addEffect(new CreateTokenEffect(new GoblinToken(),2));
+
+ }
+
+ public MoggAlarm(final MoggAlarm card) {
+ super(card);
+ }
+
+ @Override
+ public MoggAlarm copy() {
+ return new MoggAlarm(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/nemesis/RisingWaters.java b/Mage.Sets/src/mage/sets/nemesis/RisingWaters.java
new file mode 100644
index 0000000000..7afea12278
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/nemesis/RisingWaters.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.nemesis;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.DontUntapInControllersUntapStepAllEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Outcome;
+import mage.constants.Rarity;
+import mage.constants.TargetController;
+import mage.constants.Zone;
+import mage.filter.common.FilterLandPermanent;
+import mage.filter.predicate.permanent.ControllerIdPredicate;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
+import mage.players.Player;
+import mage.target.Target;
+import mage.target.common.TargetLandPermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class RisingWaters extends CardImpl {
+
+ public RisingWaters(UUID ownerId) {
+ super(ownerId, 38, "Rising Waters", Rarity.RARE, new CardType[]{CardType.ENCHANTMENT}, "{3}{U}");
+ this.expansionSetCode = "NMS";
+
+ // Lands don't untap during their controllers' untap steps.
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD,
+ new DontUntapInControllersUntapStepAllEffect(Duration.WhileOnBattlefield, TargetController.ANY, new FilterLandPermanent("Lands"))));
+
+ // At the beginning of each player's upkeep, that player untaps a land he or she controls.
+ this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, new RisingWatersUntapEffect(), TargetController.ANY, false));
+ }
+
+ public RisingWaters(final RisingWaters card) {
+ super(card);
+ }
+
+ @Override
+ public RisingWaters copy() {
+ return new RisingWaters(this);
+ }
+}
+
+class RisingWatersUntapEffect extends OneShotEffect {
+
+ public RisingWatersUntapEffect() {
+ super(Outcome.Untap);
+ this.staticText = "that player untaps a land he or she controls";
+ }
+
+ public RisingWatersUntapEffect(final RisingWatersUntapEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public RisingWatersUntapEffect copy() {
+ return new RisingWatersUntapEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player player = game.getPlayer(game.getActivePlayerId());
+ FilterLandPermanent filter = new FilterLandPermanent("land you control");
+ filter.add(new ControllerIdPredicate(game.getActivePlayerId()));
+ Target target = new TargetLandPermanent(filter);
+ if (player != null && player.chooseTarget(Outcome.Untap, target, source, game)) {
+ for (UUID landId : target.getTargets()) {
+ Permanent land = game.getPermanent(landId);
+ if (land != null) {
+ land.untap(game);
+ }
+ }
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/nemesis/SaprolingCluster.java b/Mage.Sets/src/mage/sets/nemesis/SaprolingCluster.java
new file mode 100644
index 0000000000..2d0ff917a9
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/nemesis/SaprolingCluster.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.nemesis;
+
+import java.util.UUID;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.DiscardCardCost;
+import mage.abilities.costs.mana.GenericManaCost;
+import mage.abilities.effects.common.CreateTokenEffect;
+import mage.abilities.effects.common.InfoEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.TargetController;
+import mage.constants.Zone;
+import mage.game.permanent.token.SaprolingToken;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class SaprolingCluster extends CardImpl {
+
+ public SaprolingCluster(UUID ownerId) {
+ super(ownerId, 114, "Saproling Cluster", Rarity.RARE, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}");
+ this.expansionSetCode = "NMS";
+
+ // {1}, Discard a card: Put a 1/1 green Saproling creature token onto the battlefield. Any player may activate this ability.
+ SimpleActivatedAbility ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new SaprolingToken()) , new GenericManaCost(1));
+ ability.addCost(new DiscardCardCost());
+ ability.setMayActivate(TargetController.ANY);
+ ability.addEffect(new InfoEffect("Any player may activate this ability"));
+ this.addAbility(ability);
+ }
+
+ public SaprolingCluster(final SaprolingCluster card) {
+ super(card);
+ }
+
+ @Override
+ public SaprolingCluster copy() {
+ return new SaprolingCluster(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/nemesis/TricksterMage.java b/Mage.Sets/src/mage/sets/nemesis/TricksterMage.java
new file mode 100644
index 0000000000..771161cf3c
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/nemesis/TricksterMage.java
@@ -0,0 +1,86 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.nemesis;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.DiscardCardCost;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.MayTapOrUntapTargetEffect;
+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 fireshoes
+ */
+public class TricksterMage extends CardImpl {
+
+ private static final FilterPermanent filter = new FilterPermanent("artifact, creature, or land");
+
+ static {
+ filter.add(Predicates.or(
+ new CardTypePredicate(CardType.ARTIFACT),
+ new CardTypePredicate(CardType.CREATURE),
+ new CardTypePredicate(CardType.LAND)));
+ }
+
+ public TricksterMage(UUID ownerId) {
+ super(ownerId, 49, "Trickster Mage", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{U}");
+ this.expansionSetCode = "NMS";
+ this.subtype.add("Human");
+ this.subtype.add("Spellshaper");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // {U}, {tap}, Discard a card: You may tap or untap target artifact, creature, or land.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new MayTapOrUntapTargetEffect(), new ManaCostsImpl("{U}"));
+ ability.addCost(new TapSourceCost());
+ ability.addCost(new DiscardCardCost());
+ ability.addTarget(new TargetPermanent(filter));
+ this.addAbility(ability);
+ }
+
+ public TricksterMage(final TricksterMage card) {
+ super(card);
+ }
+
+ @Override
+ public TricksterMage copy() {
+ return new TricksterMage(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/ninthedition/HellsCaretaker.java b/Mage.Sets/src/mage/sets/ninthedition/HellsCaretaker.java
new file mode 100644
index 0000000000..8e545b8c4b
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/ninthedition/HellsCaretaker.java
@@ -0,0 +1,78 @@
+/*
+ * 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.ninthedition;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.condition.common.IsStepCondition;
+import mage.abilities.costs.common.SacrificeTargetCost;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.decorator.ConditionalActivatedAbility;
+import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.PhaseStep;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.filter.common.FilterCreatureCard;
+import mage.target.common.TargetCardInYourGraveyard;
+import mage.target.common.TargetControlledCreaturePermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class HellsCaretaker extends CardImpl {
+
+ public HellsCaretaker(UUID ownerId) {
+ super(ownerId, 137, "Hell's Caretaker", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{3}{B}");
+ this.expansionSetCode = "9ED";
+ this.subtype.add("Horror");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // {tap}, Sacrifice a creature: Return target creature card from your graveyard to the battlefield. Activate this ability only during your upkeep.
+ Ability ability = new ConditionalActivatedAbility(Zone.BATTLEFIELD,
+ new ReturnFromGraveyardToBattlefieldTargetEffect(),
+ new TapSourceCost(),
+ new IsStepCondition(PhaseStep.UPKEEP), null);
+ ability.addCost(new SacrificeTargetCost(new TargetControlledCreaturePermanent()));
+ ability.addTarget(new TargetCardInYourGraveyard(new FilterCreatureCard("creature card from your graveyard")));
+ this.addAbility(ability);
+ }
+
+ public HellsCaretaker(final HellsCaretaker card) {
+ super(card);
+ }
+
+ @Override
+ public HellsCaretaker copy() {
+ return new HellsCaretaker(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/ninthedition/NaturalAffinity.java b/Mage.Sets/src/mage/sets/ninthedition/NaturalAffinity.java
index c5a7804b97..208cd0eba7 100644
--- a/Mage.Sets/src/mage/sets/ninthedition/NaturalAffinity.java
+++ b/Mage.Sets/src/mage/sets/ninthedition/NaturalAffinity.java
@@ -55,7 +55,6 @@ public class NaturalAffinity extends CardImpl {
super(ownerId, 256, "Natural Affinity", Rarity.RARE, new CardType[]{CardType.INSTANT}, "{2}{G}");
this.expansionSetCode = "9ED";
-
// All lands become 2/2 creatures until end of turn. They're still lands.
this.getSpellAbility().addEffect(new BecomesCreatureAllEffect());
}
@@ -72,9 +71,8 @@ public class NaturalAffinity extends CardImpl {
class BecomesCreatureAllEffect extends ContinuousEffectImpl {
-
public BecomesCreatureAllEffect() {
- super(Duration.WhileOnBattlefield, Outcome.BecomeCreature);
+ super(Duration.EndOfTurn, Outcome.BecomeCreature);
staticText = "All lands become 2/2 creatures until end of turn. They're still lands";
}
@@ -86,12 +84,12 @@ class BecomesCreatureAllEffect extends ContinuousEffectImpl {
public BecomesCreatureAllEffect copy() {
return new BecomesCreatureAllEffect(this);
}
-
+
@Override
public void init(Ability source, Game game) {
super.init(source, game);
this.affectedObjectsSet = true;
- for (Permanent perm: game.getBattlefield().getActivePermanents(new FilterLandPermanent(), source.getControllerId(), source.getSourceId(), game)) {
+ for (Permanent perm : game.getBattlefield().getActivePermanents(new FilterLandPermanent(), source.getControllerId(), source.getSourceId(), game)) {
affectedObjectList.add(new MageObjectReference(perm, game));
}
}
@@ -101,9 +99,9 @@ class BecomesCreatureAllEffect extends ContinuousEffectImpl {
switch (layer) {
case TypeChangingEffects_4:
if (sublayer == SubLayer.NA) {
- for (Iterator it = affectedObjectList.iterator(); it.hasNext();) {
+ for (Iterator it = affectedObjectList.iterator(); it.hasNext();) {
Permanent permanent = it.next().getPermanent(game);
- if(permanent != null){
+ if (permanent != null) {
permanent.getCardType().add(CardType.CREATURE);
} else {
it.remove();
@@ -116,7 +114,7 @@ class BecomesCreatureAllEffect extends ContinuousEffectImpl {
if (sublayer == SubLayer.SetPT_7b) {
for (Iterator it = affectedObjectList.iterator(); it.hasNext();) {
Permanent permanent = it.next().getPermanent(game);
- if(permanent != null){
+ if (permanent != null) {
permanent.getPower().setValue(2);
permanent.getToughness().setValue(2);
} else {
@@ -133,7 +131,6 @@ class BecomesCreatureAllEffect extends ContinuousEffectImpl {
return false;
}
-
@Override
public boolean hasLayer(Layer layer) {
return layer == Layer.PTChangingEffects_7 || layer == Layer.AbilityAddingRemovingEffects_6 || layer == Layer.ColorChangingEffects_5 || layer == Layer.TypeChangingEffects_4;
diff --git a/Mage.Sets/src/mage/sets/ninthedition/Thundermare.java b/Mage.Sets/src/mage/sets/ninthedition/Thundermare.java
new file mode 100644
index 0000000000..a9e7495472
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/ninthedition/Thundermare.java
@@ -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.ninthedition;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author LoneFox
+ */
+public class Thundermare extends mage.sets.portal.Thundermare {
+
+ public Thundermare(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 224;
+ this.expansionSetCode = "9ED";
+ }
+
+ public Thundermare(final Thundermare card) {
+ super(card);
+ }
+
+ @Override
+ public Thundermare copy() {
+ return new Thundermare(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/onslaught/Aurification.java b/Mage.Sets/src/mage/sets/onslaught/Aurification.java
new file mode 100644
index 0000000000..92479ceca5
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/onslaught/Aurification.java
@@ -0,0 +1,164 @@
+/*
+ * 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 mage.abilities.Ability;
+import mage.abilities.TriggeredAbilityImpl;
+import mage.abilities.common.LeavesBattlefieldTriggeredAbility;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.effects.Effect;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.continuous.BecomesSubtypeAllEffect;
+import mage.abilities.effects.common.continuous.GainAbilityAllEffect;
+import mage.abilities.effects.common.counter.AddCountersTargetEffect;
+import mage.abilities.keyword.DefenderAbility;
+import mage.cards.CardImpl;
+import mage.constants.*;
+import mage.counters.CounterType;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.permanent.CounterPredicate;
+import mage.game.Game;
+import mage.game.events.GameEvent;
+import mage.game.permanent.Permanent;
+import mage.target.targetpointer.FixedTarget;
+
+import java.util.ArrayList;
+import java.util.UUID;
+
+/**
+ *
+ * @author andyfries
+ */
+
+public class Aurification extends CardImpl {
+
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Each creature with a gold counter on it");
+
+ static {
+ filter.add(new CounterPredicate(CounterType.GOLD));
+ }
+
+ final String rule = "Each creature with a gold counter on it is a Wall in addition to its other creature types and has defender.";
+
+ public Aurification(UUID ownerId) {
+ super(ownerId, 6, "Aurification", Rarity.RARE, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}{W}");
+ this.expansionSetCode = "ONS";
+
+ // Whenever a creature deals damage to you, put a gold counter on it.
+ this.addAbility(new AddGoldCountersAbility());
+
+ // Each creature with a gold counter on it is a Wall in addition to its other creature types and has defender.
+ ArrayList subtypes = new ArrayList<>(1);
+ subtypes.add("Wall");
+
+ BecomesSubtypeAllEffect becomesSubtypeAllEffect = new BecomesSubtypeAllEffect(Duration.WhileOnBattlefield, subtypes, filter, false);
+ becomesSubtypeAllEffect.setText("");
+
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, becomesSubtypeAllEffect));
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAllEffect(DefenderAbility.getInstance(), Duration.WhileOnBattlefield, filter, rule)));
+
+ // When Aurification leaves the battlefield, remove all gold counters from all creatures.
+ this.addAbility(new LeavesBattlefieldTriggeredAbility(new RemoveAllGoldCountersEffect(), false));
+ }
+
+ public Aurification(final Aurification card) {
+ super(card);
+ }
+
+ @Override
+ public Aurification copy() {
+ return new Aurification(this);
+ }
+
+ public class AddGoldCountersAbility extends TriggeredAbilityImpl {
+
+ public AddGoldCountersAbility() {
+ super(Zone.BATTLEFIELD, new AddCountersTargetEffect(CounterType.GOLD.createInstance()));
+ }
+
+ public AddGoldCountersAbility(final AddGoldCountersAbility ability) {
+ super(ability);
+ }
+
+ @Override
+ public AddGoldCountersAbility copy() {
+ return new AddGoldCountersAbility(this);
+ }
+
+ @Override
+ public boolean checkEventType(GameEvent event, Game game) {
+ return event.getType() == GameEvent.EventType.DAMAGED_PLAYER;
+ }
+
+ @Override
+ public boolean checkTrigger(GameEvent event, Game game) {
+ if (event.getPlayerId().equals(this.getControllerId())) {
+ Permanent permanent = game.getPermanent(event.getSourceId());
+ if (permanent != null && permanent.getCardType().contains(CardType.CREATURE)) {
+ for (Effect effect : this.getEffects()) {
+ effect.setTargetPointer(new FixedTarget(event.getSourceId()));
+ }
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public String getRule() {
+ return "Whenever a creature deals damage to you, put a gold counter on it.";
+ }
+
+ }
+
+ public class RemoveAllGoldCountersEffect extends OneShotEffect {
+ public RemoveAllGoldCountersEffect() {
+ super(Outcome.Neutral);
+ this.staticText = "remove all gold counters from all creatures";
+ }
+
+ public RemoveAllGoldCountersEffect(final RemoveAllGoldCountersEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public RemoveAllGoldCountersEffect copy() {
+ return new RemoveAllGoldCountersEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ for (Permanent permanent : game.getBattlefield().getAllActivePermanents(CardType.CREATURE)) {
+ if (permanent != null){
+ permanent.getCounters().removeAllCounters(CounterType.GOLD);
+ }
+ }
+ return true;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Mage.Sets/src/mage/sets/onslaught/DoubtlessOne.java b/Mage.Sets/src/mage/sets/onslaught/DoubtlessOne.java
new file mode 100644
index 0000000000..006b01ae26
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/onslaught/DoubtlessOne.java
@@ -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.onslaught;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.DealsDamageGainLifeSourceTriggeredAbility;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount;
+import mage.abilities.effects.common.continuous.SetPowerToughnessSourceEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.filter.FilterPermanent;
+import mage.filter.predicate.mageobject.SubtypePredicate;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class DoubtlessOne extends CardImpl {
+
+ final static FilterPermanent filter = new FilterPermanent("Clerics on the battlefield");
+
+ static {
+ filter.add(new SubtypePredicate("Cleric"));
+ }
+
+ public DoubtlessOne(UUID ownerId) {
+ super(ownerId, 27, "Doubtless One", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{3}{W}");
+ this.expansionSetCode = "ONS";
+ this.subtype.add("Cleric");
+ this.subtype.add("Avatar");
+ this.power = new MageInt(0);
+ this.toughness = new MageInt(0);
+
+ // Doubtless One's power and toughness are each equal to the number of Clerics on the battlefield.
+ this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetPowerToughnessSourceEffect(new PermanentsOnBattlefieldCount(filter), Duration.EndOfGame)));
+
+ // Whenever Doubtless One deals damage, you gain that much life.
+ this.addAbility(new DealsDamageGainLifeSourceTriggeredAbility());
+ }
+
+ public DoubtlessOne(final DoubtlessOne card) {
+ super(card);
+ }
+
+ @Override
+ public DoubtlessOne copy() {
+ return new DoubtlessOne(this);
+ }
+}
\ No newline at end of file
diff --git a/Mage.Sets/src/mage/sets/onslaught/GoblinTaskmaster.java b/Mage.Sets/src/mage/sets/onslaught/GoblinTaskmaster.java
new file mode 100644
index 0000000000..9d27c1aa72
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/onslaught/GoblinTaskmaster.java
@@ -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.onslaught;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.continuous.BoostTargetEffect;
+import mage.abilities.keyword.MorphAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.mageobject.SubtypePredicate;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class GoblinTaskmaster extends CardImpl {
+
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Goblin");
+
+ static {
+ filter.add(new SubtypePredicate("Goblin"));
+ }
+
+ public GoblinTaskmaster(UUID ownerId) {
+ super(ownerId, 210, "Goblin Taskmaster", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{R}");
+ this.expansionSetCode = "ONS";
+ this.subtype.add("Goblin");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // {1}{R}: Target Goblin creature gets +1/+0 until end of turn.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostTargetEffect(1, 0, Duration.EndOfTurn), new ManaCostsImpl("{1}{R}"));
+ ability.addTarget(new TargetCreaturePermanent(filter));
+ this.addAbility(ability);
+
+ // Morph {R}
+ this.addAbility(new MorphAbility(this, new ManaCostsImpl("{R}")));
+ }
+
+ public GoblinTaskmaster(final GoblinTaskmaster card) {
+ super(card);
+ }
+
+ @Override
+ public GoblinTaskmaster copy() {
+ return new GoblinTaskmaster(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/onslaught/UndeadGladiator.java b/Mage.Sets/src/mage/sets/onslaught/UndeadGladiator.java
new file mode 100644
index 0000000000..19428fda45
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/onslaught/UndeadGladiator.java
@@ -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.onslaught;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.condition.common.IsStepCondition;
+import mage.abilities.costs.common.DiscardCardCost;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.decorator.ConditionalActivatedAbility;
+import mage.abilities.effects.common.ReturnSourceFromGraveyardToHandEffect;
+import mage.abilities.keyword.CyclingAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.PhaseStep;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class UndeadGladiator extends CardImpl {
+
+ public UndeadGladiator(UUID ownerId) {
+ super(ownerId, 178, "Undead Gladiator", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{1}{B}{B}");
+ this.expansionSetCode = "ONS";
+ this.subtype.add("Zombie");
+ this.subtype.add("Barbarian");
+ this.power = new MageInt(3);
+ this.toughness = new MageInt(1);
+
+ // {1}{B}, Discard a card: Return Undead Gladiator from your graveyard to your hand. Activate this ability only during your upkeep.
+ Ability ability = new ConditionalActivatedAbility(Zone.GRAVEYARD,
+ new ReturnSourceFromGraveyardToHandEffect(),
+ new ManaCostsImpl("{1}{B}"),
+ new IsStepCondition(PhaseStep.UPKEEP), null);
+ ability.addCost(new DiscardCardCost());
+ this.addAbility(ability);
+
+ // Cycling {1}{B}
+ this.addAbility(new CyclingAbility(new ManaCostsImpl("{1}{B}")));
+ }
+
+ public UndeadGladiator(final UndeadGladiator card) {
+ super(card);
+ }
+
+ @Override
+ public UndeadGladiator copy() {
+ return new UndeadGladiator(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/pdsgraveborn/SickeningDreams.java b/Mage.Sets/src/mage/sets/pdsgraveborn/SickeningDreams.java
new file mode 100644
index 0000000000..0cfcfa9aff
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/pdsgraveborn/SickeningDreams.java
@@ -0,0 +1,103 @@
+/*
+ * 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.pdsgraveborn;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.costs.Cost;
+import mage.abilities.costs.VariableCostImpl;
+import mage.abilities.costs.common.DiscardTargetCost;
+import mage.abilities.dynamicvalue.common.GetXValue;
+import mage.abilities.effects.common.DamageEverythingEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.filter.FilterCard;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.game.Game;
+import mage.players.Player;
+import mage.target.common.TargetCardInHand;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class SickeningDreams extends CardImpl {
+
+ public SickeningDreams(UUID ownerId) {
+ super(ownerId, 18, "Sickening Dreams", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{1}{B}");
+ this.expansionSetCode = "PD3";
+
+ // As an additional cost to cast Sickening Dreams, discard X cards.
+ this.getSpellAbility().addCost(new SickeningDreamsAdditionalCost());
+
+ // Sickening Dreams deals X damage to each creature and each player.
+ this.getSpellAbility().addEffect(new DamageEverythingEffect(new GetXValue(), new FilterCreaturePermanent()));
+ }
+
+ public SickeningDreams(final SickeningDreams card) {
+ super(card);
+ }
+
+ @Override
+ public SickeningDreams copy() {
+ return new SickeningDreams(this);
+ }
+}
+
+class SickeningDreamsAdditionalCost extends VariableCostImpl {
+
+ SickeningDreamsAdditionalCost() {
+ super("cards to discard");
+ this.text = "As an additional cost to cast {this}, discard X cards";
+ }
+
+ SickeningDreamsAdditionalCost(final SickeningDreamsAdditionalCost cost) {
+ super(cost);
+ }
+
+ @Override
+ public SickeningDreamsAdditionalCost copy() {
+ return new SickeningDreamsAdditionalCost(this);
+ }
+
+ @Override
+ public int getMaxValue(Ability source, Game game) {
+ Player controller = game.getPlayer(source.getControllerId());
+ if (controller != null) {
+ return controller.getHand().size();
+ }
+ return 0;
+ }
+
+ @Override
+ public Cost getFixedCostsFromAnnouncedValue(int xValue) {
+ TargetCardInHand target = new TargetCardInHand(xValue, new FilterCard());
+ return new DiscardTargetCost(target);
+ }
+}
\ No newline at end of file
diff --git a/Mage.Sets/src/mage/sets/planarchaos/AvenRiftwatcher.java b/Mage.Sets/src/mage/sets/planarchaos/AvenRiftwatcher.java
index 8cf27f15ec..4da27ce574 100644
--- a/Mage.Sets/src/mage/sets/planarchaos/AvenRiftwatcher.java
+++ b/Mage.Sets/src/mage/sets/planarchaos/AvenRiftwatcher.java
@@ -29,6 +29,7 @@ package mage.sets.planarchaos;
import java.util.UUID;
import mage.MageInt;
+import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldAbility;
import mage.abilities.common.EntersOrLeavesTheBattlefieldSourceTriggeredAbility;
import mage.abilities.effects.common.GainLifeEffect;
@@ -60,7 +61,9 @@ public class AvenRiftwatcher extends CardImpl {
// Flying
this.addAbility(FlyingAbility.getInstance());
// Vanishing 3
- this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.TIME.createInstance(3))));
+ Ability ability = new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.TIME.createInstance(3)));
+ ability.setRuleVisible(false);
+ this.addAbility(ability);
this.addAbility(new VanishingUpkeepAbility(3));
this.addAbility(new VanishingSacrificeAbility());
diff --git a/Mage.Sets/src/mage/sets/planarchaos/BraidsConjurerAdept.java b/Mage.Sets/src/mage/sets/planarchaos/BraidsConjurerAdept.java
new file mode 100644
index 0000000000..6938504723
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/planarchaos/BraidsConjurerAdept.java
@@ -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.planarchaos;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
+import mage.abilities.effects.common.PutPermanentOnBattlefieldEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.TargetController;
+import mage.filter.FilterCard;
+import mage.filter.predicate.Predicates;
+import mage.filter.predicate.Predicates;
+import mage.filter.predicate.mageobject.CardTypePredicate;
+
+/**
+ *
+ * @author LoneFox
+ */
+public class BraidsConjurerAdept extends CardImpl {
+
+ private static final FilterCard filter = new FilterCard("artifact, creature, or land card")
+;
+ static {
+ filter.add(Predicates.or(
+ new CardTypePredicate(CardType.ARTIFACT),
+ new CardTypePredicate(CardType.CREATURE),
+ new CardTypePredicate(CardType.LAND)));
+ }
+
+ public BraidsConjurerAdept(UUID ownerId) {
+ super(ownerId, 36, "Braids, Conjurer Adept", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{2}{U}{U}");
+ this.expansionSetCode = "PLC";
+ this.supertype.add("Legendary");
+ this.subtype.add("Human");
+ this.subtype.add("Wizard");
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(2);
+
+ // At the beginning of each player's upkeep, that player may put an artifact, creature, or land card from his or her hand onto the battlefield.
+ this.addAbility(new BeginningOfUpkeepTriggeredAbility(new PutPermanentOnBattlefieldEffect(filter, true), TargetController.ANY, false));
+ }
+
+ public BraidsConjurerAdept(final BraidsConjurerAdept card) {
+ super(card);
+ }
+
+ @Override
+ public BraidsConjurerAdept copy() {
+ return new BraidsConjurerAdept(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/planarchaos/Calciderm.java b/Mage.Sets/src/mage/sets/planarchaos/Calciderm.java
index 39865b67a5..3bc5e17017 100644
--- a/Mage.Sets/src/mage/sets/planarchaos/Calciderm.java
+++ b/Mage.Sets/src/mage/sets/planarchaos/Calciderm.java
@@ -28,15 +28,16 @@
package mage.sets.planarchaos;
import java.util.UUID;
-import mage.constants.CardType;
-import mage.constants.Rarity;
import mage.MageInt;
+import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldAbility;
import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.keyword.ShroudAbility;
import mage.abilities.keyword.VanishingSacrificeAbility;
import mage.abilities.keyword.VanishingUpkeepAbility;
import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
import mage.counters.CounterType;
/**
@@ -56,7 +57,9 @@ public class Calciderm extends CardImpl {
// Shroud
this.addAbility(ShroudAbility.getInstance());
// Vanishing 4
- this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.TIME.createInstance(4))));
+ Ability ability = new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.TIME.createInstance(4)));
+ ability.setRuleVisible(false);
+ this.addAbility(ability);
this.addAbility(new VanishingUpkeepAbility(4));
this.addAbility(new VanishingSacrificeAbility());
}
diff --git a/Mage.Sets/src/mage/sets/planarchaos/Chronozoa.java b/Mage.Sets/src/mage/sets/planarchaos/Chronozoa.java
index a97add2ef4..ce30729322 100644
--- a/Mage.Sets/src/mage/sets/planarchaos/Chronozoa.java
+++ b/Mage.Sets/src/mage/sets/planarchaos/Chronozoa.java
@@ -28,8 +28,8 @@
package mage.sets.planarchaos;
import java.util.UUID;
-
import mage.MageInt;
+import mage.abilities.Ability;
import mage.abilities.common.DiesCreatureTriggeredAbility;
import mage.abilities.common.EntersBattlefieldAbility;
import mage.abilities.condition.common.LastTimeCounterRemovedCondition;
@@ -64,7 +64,9 @@ public class Chronozoa extends CardImpl {
// Flying
this.addAbility(FlyingAbility.getInstance());
// Vanishing 3
- this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.TIME.createInstance(timeCounters))));
+ Ability ability = new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.TIME.createInstance(timeCounters)));
+ ability.setRuleVisible(false);
+ this.addAbility(ability);
this.addAbility(new VanishingUpkeepAbility(timeCounters));
this.addAbility(new VanishingSacrificeAbility());
// When Chronozoa is put into a graveyard from play, if it had no time counters on it, put two tokens into play that are copies of it.
diff --git a/Mage.Sets/src/mage/sets/planarchaos/GhostTactician.java b/Mage.Sets/src/mage/sets/planarchaos/GhostTactician.java
new file mode 100644
index 0000000000..0dd988d363
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/planarchaos/GhostTactician.java
@@ -0,0 +1,74 @@
+/*
+ * 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.planarchaos;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.DiscardCardCost;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.continuous.BoostControlledEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+
+/**
+ *
+ * @author LoneFox
+ */
+public class GhostTactician extends CardImpl {
+
+ public GhostTactician(UUID ownerId) {
+ super(ownerId, 6, "Ghost Tactician", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{4}{W}");
+ this.expansionSetCode = "PLC";
+ this.subtype.add("Spirit");
+ this.subtype.add("Spellshaper");
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(5);
+
+ // {W}, {T}, Discard a card: Creatures you control get +1/+0 until end of turn.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
+ new BoostControlledEffect(1, 0, Duration.EndOfTurn), new ManaCostsImpl("{W}"));
+ ability.addCost(new TapSourceCost());
+ ability.addCost(new DiscardCardCost());
+ this.addAbility(ability);
+ }
+
+ public GhostTactician(final GhostTactician card) {
+ super(card);
+ }
+
+ @Override
+ public GhostTactician copy() {
+ return new GhostTactician(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/planarchaos/GossamerPhantasm.java b/Mage.Sets/src/mage/sets/planarchaos/GossamerPhantasm.java
new file mode 100644
index 0000000000..651ed2bd33
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/planarchaos/GossamerPhantasm.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.planarchaos;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.BecomesTargetTriggeredAbility;
+import mage.abilities.effects.common.SacrificeSourceEffect;
+import mage.abilities.keyword.FlyingAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+
+/**
+ *
+ * @author LoneFox
+ */
+public class GossamerPhantasm extends CardImpl {
+
+ public GossamerPhantasm(UUID ownerId) {
+ super(ownerId, 55, "Gossamer Phantasm", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{1}{U}");
+ this.expansionSetCode = "PLC";
+ this.subtype.add("Illusion");
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(1);
+
+ // Flying
+ this.addAbility(FlyingAbility.getInstance());
+ // When Gossamer Phantasm becomes the target of a spell or ability, sacrifice it.
+ this.addAbility(new BecomesTargetTriggeredAbility(new SacrificeSourceEffect()));
+ }
+
+ public GossamerPhantasm(final GossamerPhantasm card) {
+ super(card);
+ }
+
+ @Override
+ public GossamerPhantasm copy() {
+ return new GossamerPhantasm(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/planarchaos/HealingLeaves.java b/Mage.Sets/src/mage/sets/planarchaos/HealingLeaves.java
new file mode 100644
index 0000000000..f412e8438c
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/planarchaos/HealingLeaves.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.planarchaos;
+
+import java.util.UUID;
+import mage.abilities.Mode;
+import mage.abilities.effects.common.GainLifeTargetEffect;
+import mage.abilities.effects.common.PreventDamageToTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.target.TargetPlayer;
+import mage.target.common.TargetCreatureOrPlayer;
+
+/**
+ *
+ * @author LoneFox
+ */
+public class HealingLeaves extends CardImpl {
+
+ public HealingLeaves(UUID ownerId) {
+ super(ownerId, 150, "Healing Leaves", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{G}");
+ this.expansionSetCode = "PLC";
+
+ // Choose one - Target player gains 3 life; or prevent the next 3 damage that would be dealt to target creature or player this turn.
+ this.getSpellAbility().addEffect(new GainLifeTargetEffect(3));
+ this.getSpellAbility().addTarget(new TargetPlayer());
+ Mode mode = new Mode();
+ mode.getEffects().add(new PreventDamageToTargetEffect(Duration.EndOfTurn, 3));
+ mode.getTargets().add(new TargetCreatureOrPlayer());
+ this.getSpellAbility().addMode(mode);
+ }
+
+ public HealingLeaves(final HealingLeaves card) {
+ super(card);
+ }
+
+ @Override
+ public HealingLeaves copy() {
+ return new HealingLeaves(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/planarchaos/KeldonMarauders.java b/Mage.Sets/src/mage/sets/planarchaos/KeldonMarauders.java
index d342e0f28d..952005b8c6 100644
--- a/Mage.Sets/src/mage/sets/planarchaos/KeldonMarauders.java
+++ b/Mage.Sets/src/mage/sets/planarchaos/KeldonMarauders.java
@@ -28,8 +28,6 @@
package mage.sets.planarchaos;
import java.util.UUID;
-import mage.constants.CardType;
-import mage.constants.Rarity;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldAbility;
@@ -39,6 +37,8 @@ import mage.abilities.effects.common.counter.AddCountersSourceEffect;
import mage.abilities.keyword.VanishingSacrificeAbility;
import mage.abilities.keyword.VanishingUpkeepAbility;
import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
import mage.counters.CounterType;
import mage.target.TargetPlayer;
@@ -58,12 +58,14 @@ public class KeldonMarauders extends CardImpl {
this.toughness = new MageInt(3);
// Vanishing 2
- this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.TIME.createInstance(2))));
+ Ability ability = new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.TIME.createInstance(2)));
+ ability.setRuleVisible(false);
+ this.addAbility(ability);
this.addAbility(new VanishingUpkeepAbility(2));
this.addAbility(new VanishingSacrificeAbility());
-
+
// When Keldon Marauders enters the battlefield or leaves the battlefield, it deals 1 damage to target player.
- Ability ability = new EntersOrLeavesTheBattlefieldSourceTriggeredAbility(new DamageTargetEffect(1), false);
+ ability = new EntersOrLeavesTheBattlefieldSourceTriggeredAbility(new DamageTargetEffect(1), false);
ability.addTarget(new TargetPlayer());
this.addAbility(ability);
}
diff --git a/Mage.Sets/src/mage/sets/planarchaos/LavacoreElemental.java b/Mage.Sets/src/mage/sets/planarchaos/LavacoreElemental.java
index c7ffdca38b..972e529d88 100644
--- a/Mage.Sets/src/mage/sets/planarchaos/LavacoreElemental.java
+++ b/Mage.Sets/src/mage/sets/planarchaos/LavacoreElemental.java
@@ -29,6 +29,7 @@ package mage.sets.planarchaos;
import java.util.UUID;
import mage.MageInt;
+import mage.abilities.Ability;
import mage.abilities.common.DealsDamageToAPlayerAllTriggeredAbility;
import mage.abilities.common.EntersBattlefieldAbility;
import mage.abilities.effects.Effect;
@@ -56,10 +57,12 @@ public class LavacoreElemental extends CardImpl {
this.toughness = new MageInt(3);
// Vanishing 1
- this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.TIME.createInstance(1))));
+ Ability ability = new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.TIME.createInstance(1)));
+ ability.setRuleVisible(false);
+ this.addAbility(ability);
this.addAbility(new VanishingUpkeepAbility(1));
this.addAbility(new VanishingSacrificeAbility());
-
+
// Whenever a creature you control deals combat damage to a player, put a time counter on Lavacore Elemental.
Effect effect = new AddCountersSourceEffect(CounterType.TIME.createInstance(1));
effect.setText("put a time counter on {this}");
diff --git a/Mage.Sets/src/mage/sets/planarchaos/MagusOfTheBazaar.java b/Mage.Sets/src/mage/sets/planarchaos/MagusOfTheBazaar.java
new file mode 100644
index 0000000000..fa9b7eaf22
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/planarchaos/MagusOfTheBazaar.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.planarchaos;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.effects.common.DrawDiscardControllerEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+
+/**
+ *
+ * @author LoneFox
+ */
+public class MagusOfTheBazaar extends CardImpl {
+
+ public MagusOfTheBazaar(UUID ownerId) {
+ super(ownerId, 43, "Magus of the Bazaar", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{1}{U}");
+ this.expansionSetCode = "PLC";
+ this.subtype.add("Human");
+ this.subtype.add("Wizard");
+ this.power = new MageInt(0);
+ this.toughness = new MageInt(1);
+
+ // {tap}: Draw two cards, then discard three cards.
+ this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new DrawDiscardControllerEffect(2, 3), new TapSourceCost())); }
+
+ public MagusOfTheBazaar(final MagusOfTheBazaar card) {
+ super(card);
+ }
+
+ @Override
+ public MagusOfTheBazaar copy() {
+ return new MagusOfTheBazaar(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/planarchaos/MalachOfTheDawn.java b/Mage.Sets/src/mage/sets/planarchaos/MalachOfTheDawn.java
new file mode 100644
index 0000000000..6bbae42c67
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/planarchaos/MalachOfTheDawn.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.planarchaos;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.RegenerateSourceEffect;
+import mage.abilities.keyword.FlyingAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+
+/**
+ *
+ * @author LoneFox
+ */
+public class MalachOfTheDawn extends CardImpl {
+
+ public MalachOfTheDawn(UUID ownerId) {
+ super(ownerId, 24, "Malach of the Dawn", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{2}{W}{W}");
+ this.expansionSetCode = "PLC";
+ this.subtype.add("Angel");
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(4);
+
+ // Flying
+ this.addAbility(FlyingAbility.getInstance());
+ // {W}{W}{W}: Regenerate Malach of the Dawn.
+ this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new RegenerateSourceEffect(), new ManaCostsImpl("{W}{W}{W}")));
+ }
+
+ public MalachOfTheDawn(final MalachOfTheDawn card) {
+ super(card);
+ }
+
+ @Override
+ public MalachOfTheDawn copy() {
+ return new MalachOfTheDawn(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/planarchaos/Melancholy.java b/Mage.Sets/src/mage/sets/planarchaos/Melancholy.java
new file mode 100644
index 0000000000..9a5c7cc3e6
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/planarchaos/Melancholy.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.planarchaos;
+
+import java.util.UUID;
+import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
+import mage.abilities.common.EntersBattlefieldTriggeredAbility;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.AttachEffect;
+import mage.abilities.effects.common.DontUntapInControllersUntapStepEnchantedEffect;
+import mage.abilities.effects.common.SacrificeSourceUnlessPaysEffect;
+import mage.abilities.effects.common.TapEnchantedEffect;
+import mage.abilities.keyword.EnchantAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.constants.Rarity;
+import mage.constants.TargetController;
+import mage.constants.Zone;
+import mage.target.TargetPermanent;
+import mage.target.common.TargetCreaturePermanent;
+/**
+ *
+ * @author LoneFox
+ */
+public class Melancholy extends CardImpl {
+
+ public Melancholy(UUID ownerId) {
+ super(ownerId, 88, "Melancholy", Rarity.COMMON, new CardType[]{CardType.ENCHANTMENT}, "{2}{B}");
+ this.expansionSetCode = "PLC";
+ this.subtype.add("Aura");
+
+ // Enchant creature
+ TargetPermanent auraTarget = new TargetCreaturePermanent();
+ this.getSpellAbility().addTarget(auraTarget);
+ this.getSpellAbility().addEffect(new AttachEffect(Outcome.Detriment));
+ this.addAbility(new EnchantAbility(auraTarget.getTargetName()));
+ // When Melancholy enters the battlefield, tap enchanted creature.
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new TapEnchantedEffect()));
+ // Enchanted creature doesn't untap during its controller's untap step.
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepEnchantedEffect()));
+ // At the beginning of your upkeep, sacrifice Melancholy unless you pay {B}.
+ this.addAbility(new BeginningOfUpkeepTriggeredAbility(new SacrificeSourceUnlessPaysEffect(new ManaCostsImpl("{B}")),
+ TargetController.YOU, false));
+ }
+
+ public Melancholy(final Melancholy card) {
+ super(card);
+ }
+
+ @Override
+ public Melancholy copy() {
+ return new Melancholy(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/planarchaos/MerfolkThaumaturgist.java b/Mage.Sets/src/mage/sets/planarchaos/MerfolkThaumaturgist.java
new file mode 100644
index 0000000000..849ade5be0
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/planarchaos/MerfolkThaumaturgist.java
@@ -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.planarchaos;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.effects.common.continuous.SwitchPowerToughnessTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class MerfolkThaumaturgist extends CardImpl {
+
+ public MerfolkThaumaturgist(UUID ownerId) {
+ super(ownerId, 56, "Merfolk Thaumaturgist", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{U}");
+ this.expansionSetCode = "PLC";
+ this.subtype.add("Merfolk");
+ this.subtype.add("Wizard");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(2);
+
+ // {tap}: Switch target creature's power and toughness until end of turn.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SwitchPowerToughnessTargetEffect(Duration.EndOfTurn), new TapSourceCost());
+ ability.addTarget(new TargetCreaturePermanent());
+ this.addAbility(ability);
+ }
+
+ public MerfolkThaumaturgist(final MerfolkThaumaturgist card) {
+ super(card);
+ }
+
+ @Override
+ public MerfolkThaumaturgist copy() {
+ return new MerfolkThaumaturgist(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/planarchaos/MidnightCharm.java b/Mage.Sets/src/mage/sets/planarchaos/MidnightCharm.java
new file mode 100644
index 0000000000..3e28029181
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/planarchaos/MidnightCharm.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.planarchaos;
+
+import java.util.UUID;
+import mage.abilities.Mode;
+import mage.abilities.effects.common.DamageTargetEffect;
+import mage.abilities.effects.common.GainLifeEffect;
+import mage.abilities.effects.common.TapTargetEffect;
+import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
+import mage.abilities.keyword.FirstStrikeAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author LoneFox
+ */
+public class MidnightCharm extends CardImpl {
+
+ public MidnightCharm(UUID ownerId) {
+ super(ownerId, 74, "Midnight Charm", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{B}");
+ this.expansionSetCode = "PLC";
+
+ // Choose one - Midnight Charm deals 1 damage to target creature and you gain 1 life; or target creature gains first strike until end of turn; or tap target creature.
+ this.getSpellAbility().addEffect(new DamageTargetEffect(1));
+ this.getSpellAbility().addEffect(new GainLifeEffect(1));
+ this.getSpellAbility().addTarget(new TargetCreaturePermanent());
+ Mode mode = new Mode();
+ mode.getEffects().add(new GainAbilityTargetEffect(FirstStrikeAbility.getInstance(), Duration.EndOfTurn));
+ mode.getTargets().add(new TargetCreaturePermanent());
+ this.getSpellAbility().addMode(mode);
+ mode = new Mode();
+ mode.getEffects().add(new TapTargetEffect());
+ mode.getTargets().add(new TargetCreaturePermanent());
+ this.getSpellAbility().addMode(mode);
+ }
+
+ public MidnightCharm(final MidnightCharm card) {
+ super(card);
+ }
+
+ @Override
+ public MidnightCharm copy() {
+ return new MidnightCharm(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/planarchaos/RealityAcid.java b/Mage.Sets/src/mage/sets/planarchaos/RealityAcid.java
index 4357565e29..425d94127d 100644
--- a/Mage.Sets/src/mage/sets/planarchaos/RealityAcid.java
+++ b/Mage.Sets/src/mage/sets/planarchaos/RealityAcid.java
@@ -69,7 +69,9 @@ public class RealityAcid extends CardImpl {
this.addAbility(ability);
// Vanishing 3
- this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.TIME.createInstance(3))));
+ ability = new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.TIME.createInstance(3)));
+ ability.setRuleVisible(false);
+ this.addAbility(ability);
this.addAbility(new VanishingUpkeepAbility(3));
this.addAbility(new VanishingSacrificeAbility());
diff --git a/Mage.Sets/src/mage/sets/planarchaos/ReveredDead.java b/Mage.Sets/src/mage/sets/planarchaos/ReveredDead.java
new file mode 100644
index 0000000000..18abc74511
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/planarchaos/ReveredDead.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.planarchaos;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.RegenerateSourceEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+
+/**
+ *
+ * @author LoneFox
+ */
+public class ReveredDead extends CardImpl {
+
+ public ReveredDead(UUID ownerId) {
+ super(ownerId, 29, "Revered Dead", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{1}{W}");
+ this.expansionSetCode = "PLC";
+ this.subtype.add("Spirit");
+ this.subtype.add("Soldier");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // {W}: Regenerate Revered Dead.
+ this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new RegenerateSourceEffect(), new ManaCostsImpl("{W}")));
+ }
+
+ public ReveredDead(final ReveredDead card) {
+ super(card);
+ }
+
+ @Override
+ public ReveredDead copy() {
+ return new ReveredDead(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/planarchaos/RidgedKusite.java b/Mage.Sets/src/mage/sets/planarchaos/RidgedKusite.java
new file mode 100644
index 0000000000..87ab8078e8
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/planarchaos/RidgedKusite.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.planarchaos;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.DiscardCardCost;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.Effect;
+import mage.abilities.effects.common.continuous.BoostTargetEffect;
+import mage.abilities.effects.common.continuous.GainAbilityTargetEffect;
+import mage.abilities.keyword.FirstStrikeAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author LoneFox
+ */
+public class RidgedKusite extends CardImpl {
+
+ public RidgedKusite(UUID ownerId) {
+ super(ownerId, 78, "Ridged Kusite", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{B}");
+ this.expansionSetCode = "PLC";
+ this.subtype.add("Horror");
+ this.subtype.add("Spellshaper");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // {1}{B}, {tap}, Discard a card: Target creature gets +1/+0 and gains first strike until end of turn.
+ Effect effect = new BoostTargetEffect(1, 0, Duration.EndOfTurn);
+ effect.setText("Target creature gets +1/+0");
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl("{1}{B}"));
+ effect = new GainAbilityTargetEffect(FirstStrikeAbility.getInstance(), Duration.EndOfTurn);
+ effect.setText("and gains first strike until end of turn");
+ ability.addEffect(effect);
+ ability.addCost(new TapSourceCost());
+ ability.addCost(new DiscardCardCost());
+ ability.addTarget(new TargetCreaturePermanent());
+ this.addAbility(ability);
+ }
+
+ public RidgedKusite(final RidgedKusite card) {
+ super(card);
+ }
+
+ @Override
+ public RidgedKusite copy() {
+ return new RidgedKusite(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/planarchaos/RiptidePilferer.java b/Mage.Sets/src/mage/sets/planarchaos/RiptidePilferer.java
new file mode 100644
index 0000000000..dbb0b57f71
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/planarchaos/RiptidePilferer.java
@@ -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.planarchaos;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.discard.DiscardTargetEffect;
+import mage.abilities.keyword.MorphAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+
+/**
+ *
+ * @author LoneFox
+ */
+public class RiptidePilferer extends CardImpl {
+
+ public RiptidePilferer(UUID ownerId) {
+ super(ownerId, 60, "Riptide Pilferer", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{1}{U}");
+ this.expansionSetCode = "PLC";
+ this.subtype.add("Merfolk");
+ this.subtype.add("Rogue");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // Whenever Riptide Pilferer deals combat damage to a player, that player discards a card.
+ this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(new DiscardTargetEffect(1), false, true)); // Morph {U}
+ this.addAbility(new MorphAbility(this, new ManaCostsImpl("{U}")));
+ }
+
+ public RiptidePilferer(final RiptidePilferer card) {
+ super(card);
+ }
+
+ @Override
+ public RiptidePilferer copy() {
+ return new RiptidePilferer(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/planarchaos/ShroudedLore.java b/Mage.Sets/src/mage/sets/planarchaos/ShroudedLore.java
new file mode 100644
index 0000000000..a9ffdeab0b
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/planarchaos/ShroudedLore.java
@@ -0,0 +1,141 @@
+/*
+ * 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.planarchaos;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.costs.Cost;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.OneShotEffect;
+import mage.cards.Card;
+import mage.cards.CardImpl;
+import mage.cards.Cards;
+import mage.cards.CardsImpl;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.filter.FilterCard;
+import mage.filter.predicate.Predicates;
+import mage.filter.predicate.mageobject.CardIdPredicate;
+import mage.filter.predicate.other.OwnerIdPredicate;
+import mage.game.Game;
+import mage.players.Player;
+import mage.target.common.TargetCardInGraveyard;
+import mage.target.common.TargetOpponent;
+
+/**
+ *
+ * @author LoneFox
+ */
+public class ShroudedLore extends CardImpl {
+
+ public ShroudedLore(UUID ownerId) {
+ super(ownerId, 91, "Shrouded Lore", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{B}");
+ this.expansionSetCode = "PLC";
+
+ // Target opponent chooses a card in your graveyard. You may pay {B}. If you do, repeat this process except that opponent can't choose a card already chosen for Shrouded Lore. Then put the last chosen card into your hand.
+ this.getSpellAbility().addEffect(new ShroudedLoreEffect());
+ this.getSpellAbility().addTarget(new TargetOpponent());
+ }
+
+ public ShroudedLore(final ShroudedLore card) {
+ super(card);
+ }
+
+ @Override
+ public ShroudedLore copy() {
+ return new ShroudedLore(this);
+ }
+}
+
+class ShroudedLoreEffect extends OneShotEffect {
+
+ public ShroudedLoreEffect() {
+ super(Outcome.Benefit);
+ staticText = "Target opponent chooses a card in your graveyard. You may pay {B}. If you do, repeat this process except that opponent can't choose a card already chosen for {this}. Then put the last chosen card into your hand.";
+ }
+
+ public ShroudedLoreEffect(final ShroudedLoreEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public ShroudedLoreEffect copy() {
+ return new ShroudedLoreEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player you = game.getPlayer(source.getControllerId());
+ Player opponent = game.getPlayer(targetPointer.getFirst(game, source));
+ if(you != null && opponent != null)
+ {
+ FilterCard filter = new FilterCard();
+ filter.add(new OwnerIdPredicate(you.getId()));
+ Cost cost = new ManaCostsImpl("{B}");
+ TargetCardInGraveyard chosenCard;
+ Card card = null;
+ boolean done = false;
+ do {
+ chosenCard = new TargetCardInGraveyard(filter);
+ chosenCard.setNotTarget(true);
+ if(chosenCard.canChoose(opponent.getId(), game)) {
+ opponent.chooseTarget(Outcome.ReturnToHand, chosenCard, source, game);
+ card = game.getCard(chosenCard.getFirstTarget());
+ filter.add(Predicates.not(new CardIdPredicate(card.getId())));
+ game.informPlayers("Shrouded Lore: " + opponent.getLogName() + " has chosen " + card.getLogName());
+ }
+ else {
+ done = true;
+ }
+
+ if(!done) {
+ if(cost.canPay(source, source.getSourceId(), you.getId(), game) && you.chooseUse(Outcome.Benefit, "Pay {B} to choose a different card ?", source, game)) {
+ cost.clearPaid();
+ if(!cost.pay(source, game, source.getSourceId(), you.getId(), false)) {
+ done = true;
+ }
+ }
+ else {
+ done = true;
+ }
+ }
+
+ } while(!done);
+
+ if(card != null) {
+ Cards cardsToHand = new CardsImpl();
+ cardsToHand.add(card);
+ you.moveCards(cardsToHand, Zone.GRAVEYARD, Zone.HAND, source, game);
+ }
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/planarchaos/Timbermare.java b/Mage.Sets/src/mage/sets/planarchaos/Timbermare.java
new file mode 100644
index 0000000000..3a3c321c9b
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/planarchaos/Timbermare.java
@@ -0,0 +1,78 @@
+/*
+ * 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.planarchaos;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.EntersBattlefieldTriggeredAbility;
+import mage.abilities.effects.common.TapAllEffect;
+import mage.abilities.keyword.EchoAbility;
+import mage.abilities.keyword.HasteAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.permanent.AnotherPredicate;
+
+/**
+ *
+ * @author LoneFox
+ */
+public class Timbermare extends CardImpl {
+
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("other creatures");
+
+ static {
+ filter.add(new AnotherPredicate());
+ }
+
+ public Timbermare(UUID ownerId) {
+ super(ownerId, 140, "Timbermare", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{3}{G}");
+ this.expansionSetCode = "PLC";
+ this.subtype.add("Elemental");
+ this.subtype.add("Horse");
+ this.power = new MageInt(5);
+ this.toughness = new MageInt(5);
+
+ // Haste
+ this.addAbility(HasteAbility.getInstance());
+ // Echo {5}{G}
+ this.addAbility(new EchoAbility("{5}{G}"));
+ // When Timbermare enters the battlefield, tap all other creatures.
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new TapAllEffect(filter)));
+ }
+
+ public Timbermare(final Timbermare card) {
+ super(card);
+ }
+
+ @Override
+ public Timbermare copy() {
+ return new Timbermare(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/planarchaos/UktabiDrake.java b/Mage.Sets/src/mage/sets/planarchaos/UktabiDrake.java
new file mode 100644
index 0000000000..cd638634fa
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/planarchaos/UktabiDrake.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.planarchaos;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.keyword.EchoAbility;
+import mage.abilities.keyword.FlyingAbility;
+import mage.abilities.keyword.HasteAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+
+/**
+ *
+ * @author LoneFox
+ */
+public class UktabiDrake extends CardImpl {
+
+ public UktabiDrake(UUID ownerId) {
+ super(ownerId, 141, "Uktabi Drake", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{G}");
+ this.expansionSetCode = "PLC";
+ this.subtype.add("Drake");
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(1);
+
+ // Flying
+ this.addAbility(FlyingAbility.getInstance());
+ // Haste
+ this.addAbility(HasteAbility.getInstance());
+ // Echo {1}{G}{G}
+ this.addAbility(new EchoAbility("{1}{G}{G}"));
+ }
+
+ public UktabiDrake(final UktabiDrake card) {
+ super(card);
+ }
+
+ @Override
+ public UktabiDrake copy() {
+ return new UktabiDrake(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/planarchaos/WaningWurm.java b/Mage.Sets/src/mage/sets/planarchaos/WaningWurm.java
new file mode 100644
index 0000000000..7a37457f8d
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/planarchaos/WaningWurm.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.planarchaos;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.EntersBattlefieldAbility;
+import mage.abilities.effects.common.counter.AddCountersSourceEffect;
+import mage.abilities.keyword.VanishingSacrificeAbility;
+import mage.abilities.keyword.VanishingUpkeepAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.counters.CounterType;
+
+/**
+ *
+ * @author LoneFox
+ */
+public class WaningWurm extends CardImpl {
+
+ public WaningWurm(UUID ownerId) {
+ super(ownerId, 83, "Waning Wurm", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{3}{B}");
+ this.expansionSetCode = "PLC";
+ this.subtype.add("Zombie");
+ this.subtype.add("Wurm");
+ this.power = new MageInt(7);
+ this.toughness = new MageInt(6);
+
+ // Vanishing 2
+ Ability ability = new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.TIME.createInstance(2)));
+ ability.setRuleVisible(false);
+ this.addAbility(ability);
+ this.addAbility(new VanishingUpkeepAbility(2));
+ this.addAbility(new VanishingSacrificeAbility());
+ }
+
+ public WaningWurm(final WaningWurm card) {
+ super(card);
+ }
+
+ @Override
+ public WaningWurm copy() {
+ return new WaningWurm(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/planeshift/CloudCover.java b/Mage.Sets/src/mage/sets/planeshift/CloudCover.java
new file mode 100644
index 0000000000..c8b82d6a5f
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/planeshift/CloudCover.java
@@ -0,0 +1,106 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.planeshift;
+
+import java.util.UUID;
+import mage.abilities.TriggeredAbilityImpl;
+import mage.abilities.effects.common.ReturnToHandTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.game.Game;
+import mage.game.events.GameEvent;
+import mage.game.events.GameEvent.EventType;
+import mage.game.permanent.Permanent;
+import mage.players.Player;
+import mage.target.targetpointer.FixedTarget;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class CloudCover extends CardImpl {
+
+ public CloudCover(UUID ownerId) {
+ super(ownerId, 98, "Cloud Cover", Rarity.RARE, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}{U}");
+ this.expansionSetCode = "PLS";
+
+ // Whenever another permanent you control becomes the target of a spell or ability an opponent controls, you may return that permanent to its owner's hand.
+ this.addAbility(new CloudCoverAbility());
+ }
+
+ public CloudCover(final CloudCover card) {
+ super(card);
+ }
+
+ @Override
+ public CloudCover copy() {
+ return new CloudCover(this);
+ }
+}
+
+class CloudCoverAbility extends TriggeredAbilityImpl {
+
+ public CloudCoverAbility() {
+ super(Zone.BATTLEFIELD, new ReturnToHandTargetEffect(), true);
+ }
+
+ public CloudCoverAbility(final CloudCoverAbility ability) {
+ super(ability);
+ }
+
+ @Override
+ public CloudCoverAbility copy() {
+ return new CloudCoverAbility(this);
+ }
+
+ @Override
+ public boolean checkEventType(GameEvent event, Game game) {
+ return event.getType() == EventType.TARGETED;
+ }
+
+ @Override
+ public boolean checkTrigger(GameEvent event, Game game) {
+ Permanent permanent = game.getPermanent(event.getTargetId());
+ Player controller = game.getPlayer(this.getControllerId());
+ Player targetter = game.getPlayer(event.getPlayerId());
+ if (permanent != null && !permanent.getId().equals(this.getSourceId())
+ && controller != null && targetter != null
+ && !controller.getId().equals(targetter.getId())) {
+ getEffects().get(0).setTargetPointer(new FixedTarget(event.getTargetId()));
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public String getRule() {
+ return "Whenever another permanent you control becomes the target of a spell or ability an opponent controls, you may return that permanent to its owner's hand.";
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/planeshift/PollenRemedy.java b/Mage.Sets/src/mage/sets/planeshift/PollenRemedy.java
index 7e3d7d8b1b..dd294e5e17 100644
--- a/Mage.Sets/src/mage/sets/planeshift/PollenRemedy.java
+++ b/Mage.Sets/src/mage/sets/planeshift/PollenRemedy.java
@@ -41,8 +41,8 @@ import mage.constants.Duration;
import mage.constants.Rarity;
import mage.filter.common.FilterControlledLandPermanent;
import mage.game.Game;
-import mage.target.common.TargetCreatureOrPlayerAmount;
import mage.target.common.TargetControlledPermanent;
+import mage.target.common.TargetCreatureOrPlayerAmount;
/**
*
diff --git a/Mage.Sets/src/mage/sets/portal/Thundermare.java b/Mage.Sets/src/mage/sets/portal/Thundermare.java
new file mode 100644
index 0000000000..51a6fb7b48
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/portal/Thundermare.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.portal;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.EntersBattlefieldTriggeredAbility;
+import mage.abilities.effects.common.TapAllEffect;
+import mage.abilities.keyword.HasteAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.permanent.AnotherPredicate;
+
+/**
+ *
+ * @author LoneFox
+ */
+public class Thundermare extends CardImpl {
+
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("other creatures");
+
+ static {
+ filter.add(new AnotherPredicate());
+ }
+
+ public Thundermare(UUID ownerId) {
+ super(ownerId, 158, "Thundermare", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{5}{R}");
+ this.expansionSetCode = "POR";
+ this.subtype.add("Elemental");
+ this.subtype.add("Horse");
+ this.power = new MageInt(5);
+ this.toughness = new MageInt(5);
+
+ // Haste
+ this.addAbility(HasteAbility.getInstance());
+ // When Thundermare enters the battlefield, tap all other creatures.
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new TapAllEffect(filter)));
+ }
+
+ public Thundermare(final Thundermare card) {
+ super(card);
+ }
+
+ @Override
+ public Thundermare copy() {
+ return new Thundermare(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/portalthreekingdoms/DongZhouTheTyrant.java b/Mage.Sets/src/mage/sets/portalthreekingdoms/DongZhouTheTyrant.java
new file mode 100644
index 0000000000..6fc74eb129
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/portalthreekingdoms/DongZhouTheTyrant.java
@@ -0,0 +1,114 @@
+/*
+ * 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.portalthreekingdoms;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.EntersBattlefieldTriggeredAbility;
+import mage.abilities.effects.OneShotEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.constants.Rarity;
+import mage.constants.TargetController;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.permanent.ControllerPredicate;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
+import mage.players.Player;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class DongZhouTheTyrant extends CardImpl {
+
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls");
+
+ static {
+ filter.add(new ControllerPredicate(TargetController.OPPONENT));
+ }
+
+ public DongZhouTheTyrant(UUID ownerId) {
+ super(ownerId, 109, "Dong Zhou, the Tyrant", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{4}{R}");
+ this.expansionSetCode = "PTK";
+ this.supertype.add("Legendary");
+ this.subtype.add("Human");
+ this.subtype.add("Soldier");
+ this.power = new MageInt(3);
+ this.toughness = new MageInt(3);
+
+ // When Dong Zhou, the Tyrant enters the battlefield, target creature an opponent controls deals damage equal to its power to that player.
+ Ability ability = new EntersBattlefieldTriggeredAbility(new DongZhouTheTyrantEffect(), false);
+ ability.addTarget(new TargetCreaturePermanent(filter));
+ this.addAbility(ability);
+ }
+
+ public DongZhouTheTyrant(final DongZhouTheTyrant card) {
+ super(card);
+ }
+
+ @Override
+ public DongZhouTheTyrant copy() {
+ return new DongZhouTheTyrant(this);
+ }
+}
+
+class DongZhouTheTyrantEffect extends OneShotEffect {
+
+ public DongZhouTheTyrantEffect() {
+ super(Outcome.Damage);
+ staticText = "target creature an opponent controls deals damage equal to its power to that player";
+ }
+
+ public DongZhouTheTyrantEffect(final DongZhouTheTyrantEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Permanent creature = game.getPermanent(source.getFirstTarget());
+ if (creature != null) {
+ int amount = creature.getPower().getValue();
+ Player controller = game.getPlayer(creature.getControllerId());
+ if (controller != null) {
+ controller.damage(amount, creature.getId(), game, false, true);
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public DongZhouTheTyrantEffect copy() {
+ return new DongZhouTheTyrantEffect(this);
+ }
+
+}
\ No newline at end of file
diff --git a/Mage.Sets/src/mage/sets/prophecy/Flameshot.java b/Mage.Sets/src/mage/sets/prophecy/Flameshot.java
new file mode 100644
index 0000000000..b4ff94e68b
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/prophecy/Flameshot.java
@@ -0,0 +1,74 @@
+/*
+ * 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.prophecy;
+
+import java.util.UUID;
+import mage.abilities.costs.AlternativeCostSourceAbility;
+import mage.abilities.costs.common.DiscardTargetCost;
+import mage.abilities.effects.common.DamageMultiEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.filter.FilterCard;
+import mage.filter.predicate.mageobject.SubtypePredicate;
+import mage.target.common.TargetCardInHand;
+import mage.target.common.TargetCreaturePermanentAmount;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class Flameshot extends CardImpl {
+
+ private static final FilterCard filter = new FilterCard("a Mountain card");
+
+ static {
+ filter.add(new SubtypePredicate("Mountain"));
+ }
+
+ public Flameshot(UUID ownerId) {
+ super(ownerId, 90, "Flameshot", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{3}{R}");
+ this.expansionSetCode = "PCY";
+
+ // You may discard a Mountain card rather than pay Flameshot's mana cost.
+ this.addAbility(new AlternativeCostSourceAbility(new DiscardTargetCost(new TargetCardInHand(filter))));
+
+ // Flameshot deals 3 damage divided as you choose among one, two, or three target creatures.
+ this.getSpellAbility().addEffect(new DamageMultiEffect(3));
+ this.getSpellAbility().addTarget(new TargetCreaturePermanentAmount(3));
+ }
+
+ public Flameshot(final Flameshot card) {
+ super(card);
+ }
+
+ @Override
+ public Flameshot copy() {
+ return new Flameshot(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/prophecy/MagetaTheLion.java b/Mage.Sets/src/mage/sets/prophecy/MagetaTheLion.java
new file mode 100644
index 0000000000..d8bdc6221f
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/prophecy/MagetaTheLion.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.prophecy;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.DiscardTargetCost;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.DestroyAllEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.filter.FilterCard;
+import mage.filter.FilterPermanent;
+import mage.filter.predicate.mageobject.CardTypePredicate;
+import mage.filter.predicate.permanent.AnotherPredicate;
+import mage.target.common.TargetCardInHand;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class MagetaTheLion extends CardImpl {
+
+ private static final FilterPermanent filter = new FilterPermanent("creatures except for {this}");
+
+ static {
+ filter.add(new CardTypePredicate(CardType.CREATURE));
+ filter.add(new AnotherPredicate());
+ }
+
+ public MagetaTheLion(UUID ownerId) {
+ super(ownerId, 13, "Mageta the Lion", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{3}{W}{W}");
+ this.expansionSetCode = "PCY";
+ this.supertype.add("Legendary");
+ this.subtype.add("Human");
+ this.subtype.add("Spellshaper");
+ this.power = new MageInt(3);
+ this.toughness = new MageInt(3);
+
+ // {2}{W}{W}, {tap}, Discard two cards: Destroy all creatures except for Mageta the Lion. Those creatures can't be regenerated.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DestroyAllEffect(filter, true), new ManaCostsImpl("{2}{W}{W}"));
+ ability.addCost(new TapSourceCost());
+ ability.addCost(new DiscardTargetCost(new TargetCardInHand(2,2, new FilterCard("two cards"))));
+ this.addAbility(ability);
+ }
+
+ public MagetaTheLion(final MagetaTheLion card) {
+ super(card);
+ }
+
+ @Override
+ public MagetaTheLion copy() {
+ return new MagetaTheLion(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/prophecy/MercenaryInformer.java b/Mage.Sets/src/mage/sets/prophecy/MercenaryInformer.java
new file mode 100644
index 0000000000..2837baf4cf
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/prophecy/MercenaryInformer.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.prophecy;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.ObjectColor;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.CantBeTargetedSourceEffect;
+import mage.abilities.effects.common.PutOnLibraryTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.filter.FilterPermanent;
+import mage.filter.FilterStackObject;
+import mage.filter.predicate.Predicates;
+import mage.filter.predicate.mageobject.ColorPredicate;
+import mage.filter.predicate.mageobject.SubtypePredicate;
+import mage.filter.predicate.permanent.TokenPredicate;
+import mage.target.TargetPermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class MercenaryInformer extends CardImpl {
+
+ private static final FilterStackObject filterBlack = new FilterStackObject("black spells or abilities from black sources");
+ private static final FilterPermanent filterMercenary = new FilterPermanent("nontoken Mercenary");
+
+ static {
+ filterBlack.add(new ColorPredicate(ObjectColor.BLACK));
+ filterMercenary.add(Predicates.not(new TokenPredicate()));
+ filterMercenary.add(new SubtypePredicate("Mercenary"));
+ }
+
+ public MercenaryInformer(UUID ownerId) {
+ super(ownerId, 15, "Mercenary Informer", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{2}{W}");
+ this.expansionSetCode = "PCY";
+ this.subtype.add("Human");
+ this.subtype.add("Rebel");
+ this.subtype.add("Mercenary");
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(1);
+
+ // Mercenary Informer can't be the target of black spells or abilities from black sources.
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantBeTargetedSourceEffect(filterBlack, Duration.WhileOnBattlefield)));
+
+ // {2}{W}: Put target nontoken Mercenary on the bottom of its owner's library.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new PutOnLibraryTargetEffect(false), new ManaCostsImpl("{2}{W}"));
+ ability.addTarget(new TargetPermanent(filterMercenary));
+ this.addAbility(ability);
+ }
+
+ public MercenaryInformer(final MercenaryInformer card) {
+ super(card);
+ }
+
+ @Override
+ public MercenaryInformer copy() {
+ return new MercenaryInformer(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/prophecy/RebelInformer.java b/Mage.Sets/src/mage/sets/prophecy/RebelInformer.java
new file mode 100644
index 0000000000..f593ed193a
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/prophecy/RebelInformer.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.prophecy;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.ObjectColor;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.costs.mana.GenericManaCost;
+import mage.abilities.effects.common.CantBeTargetedSourceEffect;
+import mage.abilities.effects.common.PutOnLibraryTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.filter.FilterPermanent;
+import mage.filter.FilterStackObject;
+import mage.filter.predicate.Predicates;
+import mage.filter.predicate.mageobject.ColorPredicate;
+import mage.filter.predicate.mageobject.SubtypePredicate;
+import mage.filter.predicate.permanent.TokenPredicate;
+import mage.target.TargetPermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class RebelInformer extends CardImpl {
+
+ private static final FilterStackObject filterWhite = new FilterStackObject("white spells or abilities from white sources");
+ private static final FilterPermanent filterRebel = new FilterPermanent("nontoken Rebel");
+
+ static {
+ filterWhite.add(new ColorPredicate(ObjectColor.WHITE));
+ filterRebel.add(Predicates.not(new TokenPredicate()));
+ filterRebel.add(new SubtypePredicate("Rebel"));
+ }
+
+ public RebelInformer(UUID ownerId) {
+ super(ownerId, 75, "Rebel Informer", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{2}{B}");
+ this.expansionSetCode = "PCY";
+ this.subtype.add("Human");
+ this.subtype.add("Mercenary");
+ this.subtype.add("Rebel");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(2);
+
+ // Rebel Informer can't be the target of white spells or abilities from white sources.
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantBeTargetedSourceEffect(filterWhite, Duration.WhileOnBattlefield)));
+
+ // {3}: Put target nontoken Rebel on the bottom of its owner's library.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new PutOnLibraryTargetEffect(false), new GenericManaCost(3));
+ ability.addTarget(new TargetPermanent(filterRebel));
+ this.addAbility(ability);
+ }
+
+ public RebelInformer(final RebelInformer card) {
+ super(card);
+ }
+
+ @Override
+ public RebelInformer copy() {
+ return new RebelInformer(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/ravnica/StoneSeederHierophant.java b/Mage.Sets/src/mage/sets/ravnica/StoneSeederHierophant.java
index b6aeee6f40..8f33f38ad1 100644
--- a/Mage.Sets/src/mage/sets/ravnica/StoneSeederHierophant.java
+++ b/Mage.Sets/src/mage/sets/ravnica/StoneSeederHierophant.java
@@ -58,8 +58,8 @@ public class StoneSeederHierophant extends CardImpl {
this.toughness = new MageInt(1);
// Whenever a land enters the battlefield under your control, untap Stone-Seeder Hierophant.
- this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new UntapSourceEffect(), new FilterLandPermanent("a land"), false));
-
+ this.addAbility(new EntersBattlefieldAllTriggeredAbility(Zone.BATTLEFIELD, new UntapSourceEffect(), new FilterLandPermanent("a land"), false, null, true));
+
// {tap}: Untap target land.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new UntapTargetEffect(), new TapSourceCost());
Target target = new TargetLandPermanent();
diff --git a/Mage.Sets/src/mage/sets/revisededition/Crumble.java b/Mage.Sets/src/mage/sets/revisededition/Crumble.java
new file mode 100644
index 0000000000..9e5ba1fb29
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/revisededition/Crumble.java
@@ -0,0 +1,54 @@
+/*
+ * 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.revisededition;
+
+import java.util.UUID;
+import mage.constants.Rarity;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class Crumble extends mage.sets.masterseditioniv.Crumble {
+
+ public Crumble(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 98;
+ this.expansionSetCode = "3ED";
+ this.rarity = Rarity.UNCOMMON;
+ }
+
+ public Crumble(final Crumble card) {
+ super(card);
+ }
+
+ @Override
+ public Crumble copy() {
+ return new Crumble(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/revisededition/Deathgrip.java b/Mage.Sets/src/mage/sets/revisededition/Deathgrip.java
new file mode 100644
index 0000000000..220647d307
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/revisededition/Deathgrip.java
@@ -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.revisededition;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author anonymous
+ */
+public class Deathgrip extends mage.sets.limitedbeta.Deathgrip {
+
+ public Deathgrip(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 9;
+ this.expansionSetCode = "3ED";
+ }
+
+ public Deathgrip(final Deathgrip card) {
+ super(card);
+ }
+
+ @Override
+ public Deathgrip copy() {
+ return new Deathgrip(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/revisededition/ElHajjaj.java b/Mage.Sets/src/mage/sets/revisededition/ElHajjaj.java
new file mode 100644
index 0000000000..ea0b5826aa
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/revisededition/ElHajjaj.java
@@ -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.revisededition;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class ElHajjaj extends mage.sets.arabiannights.ElHajjaj {
+
+ public ElHajjaj(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 16;
+ this.expansionSetCode = "3ED";
+ }
+
+ public ElHajjaj(final ElHajjaj card) {
+ super(card);
+ }
+
+ @Override
+ public ElHajjaj copy() {
+ return new ElHajjaj(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/revisededition/IslandFishJasconius.java b/Mage.Sets/src/mage/sets/revisededition/IslandFishJasconius.java
new file mode 100644
index 0000000000..a3174bbcb7
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/revisededition/IslandFishJasconius.java
@@ -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.revisededition;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class IslandFishJasconius extends mage.sets.fourthedition.IslandFishJasconius {
+
+ public IslandFishJasconius(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 61;
+ this.expansionSetCode = "3ED";
+ }
+
+ public IslandFishJasconius(final IslandFishJasconius card) {
+ super(card);
+ }
+
+ @Override
+ public IslandFishJasconius copy() {
+ return new IslandFishJasconius(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/InduceDespair.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/InduceDespair.java
index 24b5f55f6a..5719b94007 100644
--- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/InduceDespair.java
+++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/InduceDespair.java
@@ -28,33 +28,35 @@
package mage.sets.riseoftheeldrazi;
import java.util.UUID;
-
-import mage.constants.*;
import mage.abilities.Ability;
-import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.common.RevealTargetFromHandCost;
+import mage.abilities.effects.ContinuousEffect;
import mage.abilities.effects.OneShotEffect;
-import mage.abilities.effects.common.continuous.BoostSourceEffect;
+import mage.abilities.effects.common.continuous.BoostTargetEffect;
import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Outcome;
+import mage.constants.Rarity;
import mage.filter.common.FilterCreatureCard;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.target.common.TargetCardInHand;
import mage.target.common.TargetCreaturePermanent;
+import mage.target.targetpointer.FixedTarget;
/**
*
* @author jeffwadsworth
*/
public class InduceDespair extends CardImpl {
-
+
private static final FilterCreatureCard filter = new FilterCreatureCard("creature card from your hand");
public InduceDespair(UUID ownerId) {
super(ownerId, 114, "Induce Despair", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{2}{B}");
this.expansionSetCode = "ROE";
-
// As an additional cost to cast Induce Despair, reveal a creature card from your hand.
// Target creature gets -X/-X until end of turn, where X is the revealed card's converted mana cost.
this.getSpellAbility().addEffect(new InduceDespairEffect());
@@ -87,13 +89,14 @@ class InduceDespairEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) {
RevealTargetFromHandCost cost = (RevealTargetFromHandCost) source.getCosts().get(0);
Permanent creature = game.getPermanent(targetPointer.getFirst(game, source));
- if (cost != null) {
- int CMC = -1 * cost.convertedManaCosts;
- if (creature != null) {
- creature.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostSourceEffect(CMC, CMC, Duration.EndOfTurn)), source.getSourceId(), game, false);
- }
+ if (cost != null && creature != null) {
+ int cmcBoost = -1 * cost.convertedManaCosts;
+ ContinuousEffect effect = new BoostTargetEffect(cmcBoost, cmcBoost, Duration.EndOfTurn);
+ effect.setTargetPointer(new FixedTarget(creature.getId(), creature.getZoneChangeCounter(game)));
+ game.addEffect(effect, source);
+ return true;
}
- return true;
+ return false;
}
@Override
diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/UlamogTheInfiniteGyre.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/UlamogTheInfiniteGyre.java
index cbf82ffea2..7f3cf02de8 100644
--- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/UlamogTheInfiniteGyre.java
+++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/UlamogTheInfiniteGyre.java
@@ -64,7 +64,7 @@ public class UlamogTheInfiniteGyre extends CardImpl {
this.power = new MageInt(10);
this.toughness = new MageInt(10);
-
+
// When you cast Ulamog, the Infinite Gyre, destroy target permanent.
this.addAbility(new UlamogTheInfiniteGyreDestroyOnCastAbility());
// Annihilator 4 (Whenever this creature attacks, defending player sacrifices four permanents.)
@@ -87,7 +87,7 @@ public class UlamogTheInfiniteGyre extends CardImpl {
class UlamogTheInfiniteGyreDestroyOnCastAbility extends TriggeredAbilityImpl {
- UlamogTheInfiniteGyreDestroyOnCastAbility ( ) {
+ UlamogTheInfiniteGyreDestroyOnCastAbility() {
super(Zone.STACK, new DestroyTargetEffect());
this.addTarget(new TargetPermanent());
}
@@ -114,13 +114,13 @@ class UlamogTheInfiniteGyreDestroyOnCastAbility extends TriggeredAbilityImpl {
@Override
public String getRule() {
- return new StringBuilder("When you cast {this}, ").append(super.getRule()).toString();
+ return "When you cast {this}, " + super.getRule();
}
}
class UlamogTheInfiniteGyreEnterGraveyardEffect extends OneShotEffect {
- UlamogTheInfiniteGyreEnterGraveyardEffect ( ) {
+ UlamogTheInfiniteGyreEnterGraveyardEffect() {
super(Outcome.Benefit);
staticText = "its owner shuffles his or her graveyard into his or her library";
}
@@ -144,9 +144,9 @@ class UlamogTheInfiniteGyreEnterGraveyardEffect extends OneShotEffect {
}
Player player = game.getPlayer(ownerId);
if (player != null) {
- for (Card cardToMove: player.getGraveyard().getCards(game)) {
+ for (Card cardToMove : player.getGraveyard().getCards(game)) {
cardToMove.moveToZone(Zone.LIBRARY, source.getSourceId(), game, true);
- }
+ }
player.shuffleLibrary(game);
return true;
}
diff --git a/Mage.Sets/src/mage/sets/scourge/RavenGuildMaster.java b/Mage.Sets/src/mage/sets/scourge/RavenGuildMaster.java
new file mode 100644
index 0000000000..938a4bc5dc
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/scourge/RavenGuildMaster.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.scourge;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.DealsDamageToAPlayerTriggeredAbility;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.keyword.MorphAbility;
+import mage.cards.Card;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.constants.Rarity;
+import mage.game.Game;
+import mage.players.Player;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class RavenGuildMaster extends CardImpl {
+
+ public RavenGuildMaster(UUID ownerId) {
+ super(ownerId, 47, "Raven Guild Master", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{1}{U}{U}");
+ this.expansionSetCode = "SCG";
+ this.subtype.add("Human");
+ this.subtype.add("Wizard");
+ this.subtype.add("Mutant");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // Whenever Raven Guild Master deals combat damage to a player, that player exiles the top ten cards of his or her library.
+ this.addAbility(new DealsDamageToAPlayerTriggeredAbility(new RavenGuildMasterEffect(), false, true));
+
+ // Morph {2}{U}{U}
+ this.addAbility(new MorphAbility(this, new ManaCostsImpl("{2}{U}{U}")));
+ }
+
+ public RavenGuildMaster(final RavenGuildMaster card) {
+ super(card);
+ }
+
+ @Override
+ public RavenGuildMaster copy() {
+ return new RavenGuildMaster(this);
+ }
+}
+
+class RavenGuildMasterEffect extends OneShotEffect {
+
+ public RavenGuildMasterEffect() {
+ super(Outcome.Exile);
+ this.staticText = "that player exiles the top ten cards of his or her library";
+ }
+
+ public RavenGuildMasterEffect(final RavenGuildMasterEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public RavenGuildMasterEffect copy() {
+ return new RavenGuildMasterEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player player = game.getPlayer(targetPointer.getFirst(game, source));
+ if (player != null) {
+ int count = Math.min(player.getLibrary().size(), 10);
+ for (int i = 0; i < count; i++) {
+ Card card = player.getLibrary().removeFromTop(game);
+ if (card != null) {
+ card.moveToExile(id, "", source.getSourceId(), game);
+ }
+ }
+ return true;
+ }
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/Mage.Sets/src/mage/sets/scourge/SkirkVolcanist.java b/Mage.Sets/src/mage/sets/scourge/SkirkVolcanist.java
new file mode 100644
index 0000000000..383c25f000
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/scourge/SkirkVolcanist.java
@@ -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.scourge;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.TurnedFaceUpSourceTriggeredAbility;
+import mage.abilities.costs.common.SacrificeTargetCost;
+import mage.abilities.effects.Effect;
+import mage.abilities.effects.common.DamageMultiEffect;
+import mage.abilities.keyword.MorphAbility;
+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.TargetControlledPermanent;
+import mage.target.common.TargetCreaturePermanentAmount;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class SkirkVolcanist extends CardImpl {
+
+ private static final FilterControlledLandPermanent filterSacrifice = new FilterControlledLandPermanent("two Mountains");
+
+ static {
+ filterSacrifice.add(new SubtypePredicate("Mountain"));
+ }
+
+ public SkirkVolcanist(UUID ownerId) {
+ super(ownerId, 104, "Skirk Volcanist", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{3}{R}");
+ this.expansionSetCode = "SCG";
+ this.subtype.add("Goblin");
+ this.power = new MageInt(3);
+ this.toughness = new MageInt(1);
+
+ // Morph-Sacrifice two Mountains.
+ this.addAbility(new MorphAbility(this, new SacrificeTargetCost(new TargetControlledPermanent(2,2, filterSacrifice, false))));
+
+ // When Skirk Volcanist is turned face up, it deals 3 damage divided as you choose among one, two, or three target creatures.
+ Effect effect = new DamageMultiEffect(3);
+ effect.setText("it deals 3 damage divided as you choose among one, two, or three target creatures");
+ Ability ability = new TurnedFaceUpSourceTriggeredAbility(effect);
+ ability.addTarget(new TargetCreaturePermanentAmount(3));
+ this.addAbility(ability);
+ }
+
+ public SkirkVolcanist(final SkirkVolcanist card) {
+ super(card);
+ }
+
+ @Override
+ public SkirkVolcanist copy() {
+ return new SkirkVolcanist(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/stronghold/MorgueThrull.java b/Mage.Sets/src/mage/sets/stronghold/MorgueThrull.java
new file mode 100644
index 0000000000..2a6eff55e7
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/stronghold/MorgueThrull.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.stronghold;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.SacrificeSourceCost;
+import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class MorgueThrull extends CardImpl {
+
+ public MorgueThrull(UUID ownerId) {
+ super(ownerId, 15, "Morgue Thrull", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{B}");
+ this.expansionSetCode = "STH";
+ this.subtype.add("Thrull");
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(2);
+
+ // Sacrifice Morgue Thrull: Put the top three cards of your library into your graveyard.
+ this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new PutTopCardOfLibraryIntoGraveControllerEffect(3), new SacrificeSourceCost()));
+ }
+
+ public MorgueThrull(final MorgueThrull card) {
+ super(card);
+ }
+
+ @Override
+ public MorgueThrull copy() {
+ return new MorgueThrull(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/stronghold/WarriorAngel.java b/Mage.Sets/src/mage/sets/stronghold/WarriorAngel.java
new file mode 100644
index 0000000000..d082d91d32
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/stronghold/WarriorAngel.java
@@ -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.stronghold;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.DealsDamageGainLifeSourceTriggeredAbility;
+import mage.abilities.keyword.FlyingAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class WarriorAngel extends CardImpl {
+
+ public WarriorAngel(UUID ownerId) {
+ super(ownerId, 123, "Warrior Angel", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{4}{W}{W}");
+ this.expansionSetCode = "STH";
+ this.subtype.add("Angel");
+ this.subtype.add("Warrior");
+ this.power = new MageInt(3);
+ this.toughness = new MageInt(4);
+
+ // Flying
+ this.addAbility(FlyingAbility.getInstance());
+
+ // Whenever Warrior Angel deals damage, you gain that much life.
+ this.addAbility(new DealsDamageGainLifeSourceTriggeredAbility());
+ }
+
+ public WarriorAngel(final WarriorAngel card) {
+ super(card);
+ }
+
+ @Override
+ public WarriorAngel copy() {
+ return new WarriorAngel(this);
+ }
+}
\ No newline at end of file
diff --git a/Mage.Sets/src/mage/sets/tempest/Apocalypse.java b/Mage.Sets/src/mage/sets/tempest/Apocalypse.java
new file mode 100644
index 0000000000..ec63ce33d5
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/tempest/Apocalypse.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.tempest;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.effects.OneShotEffect;
+import mage.cards.Card;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.constants.Rarity;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
+import mage.players.Player;
+
+/**
+ *
+ * @author markedagain
+ */
+public class Apocalypse extends CardImpl {
+
+ public Apocalypse(UUID ownerId) {
+ super(ownerId, 162, "Apocalypse", Rarity.RARE, new CardType[]{CardType.SORCERY}, "{2}{R}{R}{R}");
+ this.expansionSetCode = "TMP";
+
+ // Exile all permanents. You discard your hand.
+ this.getSpellAbility().addEffect(new ApocalypseExileAllPermanentsEffect());
+ this.getSpellAbility().addEffect(new ApocalypseDiscardEffect());
+ }
+
+ public Apocalypse(final Apocalypse card) {
+ super(card);
+ }
+
+ @Override
+ public Apocalypse copy() {
+ return new Apocalypse(this);
+ }
+}
+class ApocalypseDiscardEffect extends OneShotEffect {
+
+ public ApocalypseDiscardEffect() {
+ super(Outcome.Discard);
+ this.staticText = "Discard your hand";
+ }
+
+ public ApocalypseDiscardEffect(final ApocalypseDiscardEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public ApocalypseDiscardEffect copy() {
+ return new ApocalypseDiscardEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player player = game.getPlayer(source.getControllerId());
+ if (player != null) {
+ for (Card card : player.getHand().getCards(game)) {
+ player.discard(card, source, game);
+ }
+ return true;
+ }
+ return false;
+ }
+}
+class ApocalypseExileAllPermanentsEffect extends OneShotEffect {
+
+ public ApocalypseExileAllPermanentsEffect() {
+ super(Outcome.Exile);
+ staticText = "Exile all permanents";
+ }
+
+ public ApocalypseExileAllPermanentsEffect(final ApocalypseExileAllPermanentsEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public ApocalypseExileAllPermanentsEffect copy() {
+ return new ApocalypseExileAllPermanentsEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ for (Permanent permanent : game.getBattlefield().getAllActivePermanents()) {
+ permanent.moveToExile(null, null, source.getSourceId(), game);
+ }
+ return true;
+ }
+}
\ No newline at end of file
diff --git a/Mage.Sets/src/mage/sets/tempest/Stun.java b/Mage.Sets/src/mage/sets/tempest/Stun.java
index 82cc6f5cb7..ecaa81eac6 100644
--- a/Mage.Sets/src/mage/sets/tempest/Stun.java
+++ b/Mage.Sets/src/mage/sets/tempest/Stun.java
@@ -28,9 +28,6 @@
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;
@@ -50,10 +47,8 @@ public class Stun extends CardImpl {
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());
+ this.getSpellAbility().addEffect(new CantBlockTargetEffect(Duration.EndOfTurn));
// Draw a card.
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1));
diff --git a/Mage.Sets/src/mage/sets/thedark/GoblinsOfTheFlarg.java b/Mage.Sets/src/mage/sets/thedark/GoblinsOfTheFlarg.java
new file mode 100644
index 0000000000..c3d1e28e43
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/thedark/GoblinsOfTheFlarg.java
@@ -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.thedark;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.ControlsPermanentsControllerTriggeredAbility;
+import mage.abilities.effects.common.SacrificeSourceEffect;
+import mage.abilities.keyword.MountainwalkAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.filter.Filter;
+import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.predicate.mageobject.SubtypePredicate;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class GoblinsOfTheFlarg extends CardImpl {
+
+ private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("a Dwarf");
+
+ static {
+ filter.add(new SubtypePredicate("Dwarf"));
+ }
+
+ public GoblinsOfTheFlarg(UUID ownerId) {
+ super(ownerId, 69, "Goblins of the Flarg", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{R}");
+ this.expansionSetCode = "DRK";
+ this.subtype.add("Goblin");
+ this.subtype.add("Warrior");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // Mountainwalk
+ this.addAbility(new MountainwalkAbility());
+
+ // When you control a Dwarf, sacrifice Goblins of the Flarg.
+ this.addAbility(new ControlsPermanentsControllerTriggeredAbility(
+ filter, Filter.ComparisonType.GreaterThan, 0,
+ new SacrificeSourceEffect()));
+ }
+
+ public GoblinsOfTheFlarg(final GoblinsOfTheFlarg card) {
+ super(card);
+ }
+
+ @Override
+ public GoblinsOfTheFlarg copy() {
+ return new GoblinsOfTheFlarg(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/thedark/ManaVortex.java b/Mage.Sets/src/mage/sets/thedark/ManaVortex.java
new file mode 100644
index 0000000000..c14a493450
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/thedark/ManaVortex.java
@@ -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.thedark;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class ManaVortex extends mage.sets.masterseditioniii.ManaVortex {
+
+ public ManaVortex(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 30;
+ this.expansionSetCode = "DRK";
+ }
+
+ public ManaVortex(final ManaVortex card) {
+ super(card);
+ }
+
+ @Override
+ public ManaVortex copy() {
+ return new ManaVortex(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/thedark/WordOfBinding.java b/Mage.Sets/src/mage/sets/thedark/WordOfBinding.java
new file mode 100644
index 0000000000..ecd0f63a4b
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/thedark/WordOfBinding.java
@@ -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.thedark;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class WordOfBinding extends mage.sets.fourthedition.WordOfBinding {
+
+ public WordOfBinding(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 17;
+ this.expansionSetCode = "DRK";
+ }
+
+ public WordOfBinding(final WordOfBinding card) {
+ super(card);
+ }
+
+ @Override
+ public WordOfBinding copy() {
+ return new WordOfBinding(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/timeshifted/ShadowGuildmage.java b/Mage.Sets/src/mage/sets/timeshifted/ShadowGuildmage.java
new file mode 100644
index 0000000000..8d76411452
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/timeshifted/ShadowGuildmage.java
@@ -0,0 +1,54 @@
+/*
+ * 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.timeshifted;
+
+import java.util.UUID;
+import mage.constants.Rarity;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class ShadowGuildmage extends mage.sets.mirage.ShadowGuildmage {
+
+ public ShadowGuildmage(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 46;
+ this.expansionSetCode = "TSB";
+ this.rarity = Rarity.SPECIAL;
+ }
+
+ public ShadowGuildmage(final ShadowGuildmage card) {
+ super(card);
+ }
+
+ @Override
+ public ShadowGuildmage copy() {
+ return new ShadowGuildmage(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/timeshifted/WildfireEmissary.java b/Mage.Sets/src/mage/sets/timeshifted/WildfireEmissary.java
new file mode 100644
index 0000000000..2befb05562
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/timeshifted/WildfireEmissary.java
@@ -0,0 +1,54 @@
+/*
+ * 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.timeshifted;
+
+import java.util.UUID;
+import mage.constants.Rarity;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class WildfireEmissary extends mage.sets.mirage.WildfireEmissary {
+
+ public WildfireEmissary(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 72;
+ this.expansionSetCode = "TSB";
+ this.rarity = Rarity.SPECIAL;
+ }
+
+ public WildfireEmissary(final WildfireEmissary card) {
+ super(card);
+ }
+
+ @Override
+ public WildfireEmissary copy() {
+ return new WildfireEmissary(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/timespiral/Chronosavant.java b/Mage.Sets/src/mage/sets/timespiral/Chronosavant.java
new file mode 100644
index 0000000000..9b503cc133
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/timespiral/Chronosavant.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.timespiral;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.ReturnSourceFromGraveyardToBattlefieldEffect;
+import mage.abilities.effects.common.turn.SkipNextTurnSourceEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class Chronosavant extends CardImpl {
+
+ public Chronosavant(UUID ownerId) {
+ super(ownerId, 9, "Chronosavant", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{5}{W}");
+ this.expansionSetCode = "TSP";
+ this.subtype.add("Giant");
+ this.power = new MageInt(5);
+ this.toughness = new MageInt(5);
+
+ // {1}{W}: Return Chronosavant from your graveyard to the battlefield tapped. You skip your next turn.
+ Ability ability = new SimpleActivatedAbility(Zone.GRAVEYARD, new ReturnSourceFromGraveyardToBattlefieldEffect(true), new ManaCostsImpl("{1}{W}"));
+ ability.addEffect(new SkipNextTurnSourceEffect());
+ this.addAbility(ability);
+ }
+
+ public Chronosavant(final Chronosavant card) {
+ super(card);
+ }
+
+ @Override
+ public Chronosavant copy() {
+ return new Chronosavant(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/timespiral/MagusOfTheScroll.java b/Mage.Sets/src/mage/sets/timespiral/MagusOfTheScroll.java
new file mode 100644
index 0000000000..cc4be45df3
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/timespiral/MagusOfTheScroll.java
@@ -0,0 +1,129 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.timespiral;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.MageObject;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.effects.common.NameACardEffect;
+import mage.cards.Card;
+import mage.cards.CardImpl;
+import mage.cards.Cards;
+import mage.cards.CardsImpl;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
+import mage.players.Player;
+import mage.target.common.TargetCreatureOrPlayer;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class MagusOfTheScroll extends CardImpl {
+
+ public MagusOfTheScroll(UUID ownerId) {
+ super(ownerId, 169, "Magus of the Scroll", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{R}");
+ this.expansionSetCode = "TSP";
+ this.subtype.add("Human");
+ this.subtype.add("Wizard");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // {3}, {tap}: Name a card. Reveal a card at random from your hand. If it's the named card, Magus of the Scroll deals 2 damage to target creature or player.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new NameACardEffect(NameACardEffect.TypeOfName.ALL), new ManaCostsImpl("{3}"));
+ ability.addEffect(new MagusOfTheScrollEffect());
+ ability.addCost(new TapSourceCost());
+ ability.addTarget(new TargetCreatureOrPlayer());
+ this.addAbility(ability);
+ }
+
+ public MagusOfTheScroll(final MagusOfTheScroll card) {
+ super(card);
+ }
+
+ @Override
+ public MagusOfTheScroll copy() {
+ return new MagusOfTheScroll(this);
+ }
+}
+
+class MagusOfTheScrollEffect extends OneShotEffect {
+
+ public MagusOfTheScrollEffect() {
+ super(Outcome.Neutral);
+ staticText = "Reveal a card at random from your hand. If it's the named card, {this} deals 2 damage to target creature or player";
+ }
+
+ public MagusOfTheScrollEffect(final MagusOfTheScrollEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player you = game.getPlayer(source.getControllerId());
+ MageObject sourceObject = game.getObject(source.getSourceId());
+ String cardName = (String) game.getState().getValue(source.getSourceId().toString() + NameACardEffect.INFO_KEY);
+ if (sourceObject != null && you != null && cardName != null && !cardName.isEmpty()) {
+ if (you.getHand().size() > 0) {
+ Cards revealed = new CardsImpl();
+ Card card = you.getHand().getRandom(game);
+ revealed.add(card);
+ you.revealCards(sourceObject.getName(), revealed, game);
+ if (card.getName().equals(cardName)) {
+ Permanent creature = game.getPermanent(targetPointer.getFirst(game, source));
+ if (creature != null) {
+ creature.damage(2, source.getSourceId(), game, false, true);
+ return true;
+ }
+ Player player = game.getPlayer(targetPointer.getFirst(game, source));
+ if (player != null) {
+ player.damage(2, source.getSourceId(), game, false, true);
+ return true;
+ }
+ return false;
+ }
+ }
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public MagusOfTheScrollEffect copy() {
+ return new MagusOfTheScrollEffect(this);
+ }
+}
\ No newline at end of file
diff --git a/Mage.Sets/src/mage/sets/timespiral/MwonvuliAcidMoss.java b/Mage.Sets/src/mage/sets/timespiral/MwonvuliAcidMoss.java
index 7bb54c0dd5..ede5bc10ed 100644
--- a/Mage.Sets/src/mage/sets/timespiral/MwonvuliAcidMoss.java
+++ b/Mage.Sets/src/mage/sets/timespiral/MwonvuliAcidMoss.java
@@ -1,71 +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.timespiral;
-
-import java.util.UUID;
-import mage.abilities.effects.common.DestroyTargetEffect;
-import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect;
-import mage.cards.CardImpl;
-import mage.constants.CardType;
-import mage.constants.Rarity;
-import mage.filter.common.FilterBasicLandCard;
-import mage.filter.common.FilterLandCard;
-import mage.filter.common.FilterLandPermanent;
-import mage.filter.predicate.mageobject.SubtypePredicate;
-import mage.target.TargetPermanent;
-import mage.target.common.TargetCardInLibrary;
-
-/**
- *
- * @author markedagain
- */
-public class MwonvuliAcidMoss extends CardImpl {
-
- public MwonvuliAcidMoss(UUID ownerId) {
- super(ownerId, 207, "Mwonvuli Acid-Moss", Rarity.COMMON, new CardType[]{CardType.SORCERY}, "{2}{G}{G}");
- this.expansionSetCode = "TSP";
-
- FilterLandCard filterForest = new FilterLandCard();
- filterForest.add(new SubtypePredicate("Forest"));
-
- // Destroy target land. Search your library for a Forest card and put that card onto the battlefield tapped. Then shuffle your library.
- this.getSpellAbility().addEffect(new DestroyTargetEffect(true));
- this.getSpellAbility().addTarget(new TargetPermanent(new FilterLandPermanent()));
- this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filterForest), false, true));
- }
-
- public MwonvuliAcidMoss(final MwonvuliAcidMoss card) {
- super(card);
- }
-
- @Override
- public MwonvuliAcidMoss copy() {
- return new MwonvuliAcidMoss(this);
- }
-}
-
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.timespiral;
+
+import java.util.UUID;
+import mage.abilities.effects.common.DestroyTargetEffect;
+import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.filter.common.FilterLandCard;
+import mage.filter.common.FilterLandPermanent;
+import mage.filter.predicate.mageobject.SubtypePredicate;
+import mage.target.TargetPermanent;
+import mage.target.common.TargetCardInLibrary;
+
+/**
+ *
+ * @author markedagain
+ */
+public class MwonvuliAcidMoss extends CardImpl {
+
+ public MwonvuliAcidMoss(UUID ownerId) {
+ super(ownerId, 207, "Mwonvuli Acid-Moss", Rarity.COMMON, new CardType[]{CardType.SORCERY}, "{2}{G}{G}");
+ this.expansionSetCode = "TSP";
+
+ FilterLandCard filterForest = new FilterLandCard();
+ filterForest.add(new SubtypePredicate("Forest"));
+
+ // Destroy target land. Search your library for a Forest card and put that card onto the battlefield tapped. Then shuffle your library.
+ this.getSpellAbility().addEffect(new DestroyTargetEffect(true));
+ this.getSpellAbility().addTarget(new TargetPermanent(new FilterLandPermanent()));
+ this.getSpellAbility().addEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(filterForest), true, true));
+ }
+
+ public MwonvuliAcidMoss(final MwonvuliAcidMoss card) {
+ super(card);
+ }
+
+ @Override
+ public MwonvuliAcidMoss copy() {
+ return new MwonvuliAcidMoss(this);
+ }
+}
+
diff --git a/Mage.Sets/src/mage/sets/timespiral/OpalineSliver.java b/Mage.Sets/src/mage/sets/timespiral/OpalineSliver.java
index b891c5f5c3..f653af6f14 100644
--- a/Mage.Sets/src/mage/sets/timespiral/OpalineSliver.java
+++ b/Mage.Sets/src/mage/sets/timespiral/OpalineSliver.java
@@ -112,7 +112,7 @@ class OpalineSliverTriggeredAbility extends TriggeredAbilityImpl {
} else {
return event.getTargetId().equals(this.getSourceId())
&& game.getOpponents(this.controllerId).contains(event.getPlayerId())
- && spellCard.match(spell, event.getPlayerId(), game);
+ && spellCard.match(spell, getSourceId(), getControllerId(), game);
}
}
diff --git a/Mage.Sets/src/mage/sets/timespiral/SpectralForce.java b/Mage.Sets/src/mage/sets/timespiral/SpectralForce.java
new file mode 100644
index 0000000000..42a566327d
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/timespiral/SpectralForce.java
@@ -0,0 +1,118 @@
+/*
+ * 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.ObjectColor;
+import mage.abilities.TriggeredAbilityImpl;
+import mage.abilities.effects.common.DontUntapInControllersNextUntapStepSourceEffect;
+import mage.abilities.keyword.TrampleAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.filter.FilterPermanent;
+import mage.filter.predicate.mageobject.ColorPredicate;
+import mage.game.Game;
+import mage.game.events.GameEvent;
+import mage.game.events.GameEvent.EventType;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class SpectralForce extends CardImpl {
+
+ public SpectralForce(UUID ownerId) {
+ super(ownerId, 217, "Spectral Force", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{3}{G}{G}");
+ this.expansionSetCode = "TSP";
+ this.subtype.add("Elemental");
+ this.subtype.add("Spirit");
+ this.power = new MageInt(8);
+ this.toughness = new MageInt(8);
+
+ // Trample
+ this.addAbility(TrampleAbility.getInstance());
+
+ // Whenever Spectral Force attacks, if defending player controls no black permanents, it doesn't untap during your next untap step.
+ this.addAbility(new SpectralForceTriggeredAbility());
+ }
+
+ public SpectralForce(final SpectralForce card) {
+ super(card);
+ }
+
+ @Override
+ public SpectralForce copy() {
+ return new SpectralForce(this);
+ }
+}
+
+class SpectralForceTriggeredAbility extends TriggeredAbilityImpl {
+
+ private static final FilterPermanent filter = new FilterPermanent("black permanents");
+
+ static {
+ filter.add(new ColorPredicate(ObjectColor.BLACK));
+ }
+
+ public SpectralForceTriggeredAbility() {
+ super(Zone.BATTLEFIELD, new DontUntapInControllersNextUntapStepSourceEffect());
+ }
+
+ public SpectralForceTriggeredAbility(final SpectralForceTriggeredAbility ability) {
+ super(ability);
+ }
+
+ @Override
+ public SpectralForceTriggeredAbility copy() {
+ return new SpectralForceTriggeredAbility(this);
+ }
+
+ @Override
+ public boolean checkEventType(GameEvent event, Game game) {
+ return event.getType() == EventType.ATTACKER_DECLARED;
+ }
+
+ @Override
+ public boolean checkTrigger(GameEvent event, Game game) {
+ return event.getSourceId().equals(this.getSourceId());
+ }
+
+ @Override
+ public boolean checkInterveningIfClause(Game game) {
+ UUID defendingPlayerId = game.getCombat().getDefendingPlayerId(getSourceId(), game);
+ return defendingPlayerId != null && game.getBattlefield().countAll(filter, defendingPlayerId, game) < 1;
+ }
+
+ @Override
+ public String getRule() {
+ return "Whenever {this} attacks, if defending player controls no black permanents, it doesn't untap during your next untap step.";
+ }
+}
\ No newline at end of file
diff --git a/Mage.Sets/src/mage/sets/timespiral/Triskelavus.java b/Mage.Sets/src/mage/sets/timespiral/Triskelavus.java
new file mode 100644
index 0000000000..704c4c478d
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/timespiral/Triskelavus.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.timespiral;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.EntersBattlefieldAbility;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.RemoveCountersSourceCost;
+import mage.abilities.costs.common.SacrificeSourceCost;
+import mage.abilities.effects.common.CreateTokenEffect;
+import mage.abilities.effects.common.DamageTargetEffect;
+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.constants.Zone;
+import mage.counters.CounterType;
+import mage.game.permanent.token.Token;
+import mage.target.common.TargetCreatureOrPlayer;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class Triskelavus extends CardImpl {
+
+ public Triskelavus(UUID ownerId) {
+ super(ownerId, 266, "Triskelavus", Rarity.RARE, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{7}");
+ this.expansionSetCode = "TSP";
+ this.subtype.add("Construct");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // Flying
+ this.addAbility(FlyingAbility.getInstance());
+
+ // Triskelavus enters the battlefield with three +1/+1 counters on it.
+ this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(3)), "with three +1/+1 counters on it"));
+
+ // {1}, Remove a +1/+1 counter from Triskelavus: Put a 1/1 colorless Triskelavite artifact creature token with flying onto the battlefield. It has "Sacrifice this creature: This creature deals 1 damage to target creature or player."
+ this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new TriskelaviteToken()), new RemoveCountersSourceCost(CounterType.P1P1.createInstance())));
+ }
+
+ public Triskelavus(final Triskelavus card) {
+ super(card);
+ }
+
+ @Override
+ public Triskelavus copy() {
+ return new Triskelavus(this);
+ }
+}
+
+class TriskelaviteToken extends Token {
+
+ public TriskelaviteToken() {
+ super("Triskelavite", "1/1 colorless Triskelavite artifact creature token with flying onto the battlefield. It has \"Sacrifice this creature: This creature deals 1 damage to target creature or player.\"");
+ this.setOriginalExpansionSetCode("TSP");
+ cardType.add(CardType.ARTIFACT);
+ cardType.add(CardType.CREATURE);
+ subtype.add("Triskelavite");
+ power = new MageInt(1);
+ toughness = new MageInt(1);
+
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1), new SacrificeSourceCost());
+ ability.addTarget(new TargetCreatureOrPlayer());
+ this.addAbility(ability);
+
+ addAbility(FlyingAbility.getInstance());
+ }
+}
\ No newline at end of file
diff --git a/Mage.Sets/src/mage/sets/timespiral/VoidmageHusher.java b/Mage.Sets/src/mage/sets/timespiral/VoidmageHusher.java
new file mode 100644
index 0000000000..f74b44b3dc
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/timespiral/VoidmageHusher.java
@@ -0,0 +1,54 @@
+/*
+ * 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.constants.Rarity;
+
+/**
+ *
+ * @author andyfries
+ */
+public class VoidmageHusher extends mage.sets.mediainserts.VoidmageHusher {
+
+ public VoidmageHusher(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 92;
+ this.expansionSetCode = "TSP";
+ this.rarity = Rarity.UNCOMMON;
+ }
+
+ public VoidmageHusher(final VoidmageHusher card) {
+ super(card);
+ }
+
+ @Override
+ public VoidmageHusher copy() {
+ return new VoidmageHusher(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/torment/BarbarianOutcast.java b/Mage.Sets/src/mage/sets/torment/BarbarianOutcast.java
new file mode 100644
index 0000000000..0becdaa5ed
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/torment/BarbarianOutcast.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.torment;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.ControlsPermanentsControllerTriggeredAbility;
+import mage.abilities.effects.common.SacrificeSourceEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.filter.Filter;
+import mage.filter.common.FilterControlledLandPermanent;
+import mage.filter.common.FilterLandPermanent;
+import mage.filter.predicate.mageobject.SubtypePredicate;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class BarbarianOutcast extends CardImpl {
+
+ private static final FilterControlledLandPermanent filterControlledLand = new FilterControlledLandPermanent("a Swamp");
+
+ static {
+ filterControlledLand.add(new SubtypePredicate("Swamp"));
+ }
+
+ public BarbarianOutcast(UUID ownerId) {
+ super(ownerId, 92, "Barbarian Outcast", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{1}{R}");
+ this.expansionSetCode = "TOR";
+ this.subtype.add("Human");
+ this.subtype.add("Barbarian");
+ this.subtype.add("Beast");
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(2);
+
+ // When you control no Swamps, sacrifice Barbarian Outcast.
+ this.addAbility(new ControlsPermanentsControllerTriggeredAbility(
+ new FilterLandPermanent("Swamp", "no Swamps"), Filter.ComparisonType.Equal, 0,
+ new SacrificeSourceEffect()));
+ }
+
+ public BarbarianOutcast(final BarbarianOutcast card) {
+ super(card);
+ }
+
+ @Override
+ public BarbarianOutcast copy() {
+ return new BarbarianOutcast(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/torment/CephalidAristocrat.java b/Mage.Sets/src/mage/sets/torment/CephalidAristocrat.java
new file mode 100644
index 0000000000..f0c831e3a1
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/torment/CephalidAristocrat.java
@@ -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.torment;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.BecomesTargetTriggeredAbility;
+import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class CephalidAristocrat extends CardImpl {
+
+ public CephalidAristocrat(UUID ownerId) {
+ super(ownerId, 27, "Cephalid Aristocrat", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{4}{U}");
+ this.expansionSetCode = "TOR";
+ this.subtype.add("Cephalid");
+ this.power = new MageInt(3);
+ this.toughness = new MageInt(3);
+
+ // Whenever Cephalid Aristocrat becomes the target of a spell or ability, put the top two cards of your library into your graveyard.
+ this.addAbility(new BecomesTargetTriggeredAbility(new PutTopCardOfLibraryIntoGraveControllerEffect(2)));
+ }
+
+ public CephalidAristocrat(final CephalidAristocrat card) {
+ super(card);
+ }
+
+ @Override
+ public CephalidAristocrat copy() {
+ return new CephalidAristocrat(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/torment/FlashOfDefiance.java b/Mage.Sets/src/mage/sets/torment/FlashOfDefiance.java
new file mode 100644
index 0000000000..b537c088f8
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/torment/FlashOfDefiance.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.torment;
+
+import java.util.UUID;
+import mage.ObjectColor;
+import mage.abilities.Ability;
+import mage.abilities.costs.common.PayLifeCost;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.combat.CantBlockAllEffect;
+import mage.abilities.keyword.FlashbackAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.TimingRule;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.Predicates;
+import mage.filter.predicate.mageobject.ColorPredicate;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class FlashOfDefiance extends CardImpl {
+
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("green creatures and white creatures");
+
+ static {
+ filter.add(Predicates.or(
+ new ColorPredicate(ObjectColor.WHITE),
+ new ColorPredicate(ObjectColor.GREEN)));
+ }
+
+ public FlashOfDefiance(UUID ownerId) {
+ super(ownerId, 99, "Flash of Defiance", Rarity.COMMON, new CardType[]{CardType.SORCERY}, "{1}{R}");
+ this.expansionSetCode = "TOR";
+
+ // Green creatures and white creatures can't block this turn.
+ this.getSpellAbility().addEffect(new CantBlockAllEffect(filter, Duration.EndOfTurn));
+
+ // Flashback-{1}{R}, Pay 3 life.
+ Ability ability = new FlashbackAbility(new ManaCostsImpl("{1}{R}"), TimingRule.SORCERY);
+ ability.addCost(new PayLifeCost(3));
+ this.addAbility(ability);
+ }
+
+ public FlashOfDefiance(final FlashOfDefiance card) {
+ super(card);
+ }
+
+ @Override
+ public FlashOfDefiance copy() {
+ return new FlashOfDefiance(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/torment/HydromorphGuardian.java b/Mage.Sets/src/mage/sets/torment/HydromorphGuardian.java
new file mode 100644
index 0000000000..261fc1c2e3
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/torment/HydromorphGuardian.java
@@ -0,0 +1,115 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.torment;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.MageObject;
+import mage.abilities.Ability;
+import mage.abilities.Mode;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.SacrificeSourceCost;
+import mage.abilities.costs.mana.ColoredManaCost;
+import mage.abilities.effects.common.CounterTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.ColoredManaSymbol;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.filter.FilterSpell;
+import mage.filter.predicate.ObjectSourcePlayer;
+import mage.filter.predicate.ObjectSourcePlayerPredicate;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
+import mage.game.stack.Spell;
+import mage.target.Target;
+import mage.target.TargetSpell;
+
+/**
+ *
+ * @author TaVSt
+ */
+public class HydromorphGuardian extends CardImpl {
+
+ private final static FilterSpell filter = new FilterSpell("spell that targets one or more creatures you control");
+
+ static {
+ filter.add(new HydromorphGuardianPredicate());
+ }
+
+ public HydromorphGuardian(UUID ownerId) {
+ super(ownerId, 39, "Hydromorph Guardian", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{U}");
+ this.expansionSetCode = "TOR";
+ this.subtype.add("Elemental");
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(2);
+
+ // {U}, Sacrifice Hydromorph Guardian: Counter target spell that targets one or more creatures you control.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CounterTargetEffect(), new ColoredManaCost(ColoredManaSymbol.U));
+ ability.addCost(new SacrificeSourceCost());
+ ability.addTarget(new TargetSpell(filter));
+ this.addAbility(ability);
+ }
+
+ public HydromorphGuardian(final HydromorphGuardian card) {
+ super(card);
+ }
+
+ @Override
+ public HydromorphGuardian copy() {
+ return new HydromorphGuardian(this);
+ }
+}
+
+class HydromorphGuardianPredicate implements ObjectSourcePlayerPredicate> {
+
+ @Override
+ public boolean apply(ObjectSourcePlayer input, Game game) {
+ Spell spell = game.getStack().getSpell(input.getObject().getId());
+ if (spell != null) {
+ for (UUID modeId : spell.getSpellAbility().getModes().getSelectedModes()) {
+ Mode mode = spell.getSpellAbility().getModes().get(modeId);
+ for (Target target : mode.getTargets()) {
+ for (UUID targetId : target.getTargets()) {
+ Permanent permanent = game.getPermanent(targetId);
+ if (permanent.getCardType().contains(CardType.CREATURE)
+ && permanent.getControllerId().equals(input.getPlayerId())) {
+ return true;
+ }
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public String toString() {
+ return "that targets one or more creatures you control";
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/torment/SickeningDreams.java b/Mage.Sets/src/mage/sets/torment/SickeningDreams.java
new file mode 100644
index 0000000000..84c6861543
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/torment/SickeningDreams.java
@@ -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.torment;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class SickeningDreams extends mage.sets.pdsgraveborn.SickeningDreams {
+
+ public SickeningDreams(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 83;
+ this.expansionSetCode = "TOR";
+ }
+
+ public SickeningDreams(final SickeningDreams card) {
+ super(card);
+ }
+
+ @Override
+ public SickeningDreams copy() {
+ return new SickeningDreams(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/torment/StupefyingTouch.java b/Mage.Sets/src/mage/sets/torment/StupefyingTouch.java
new file mode 100644
index 0000000000..e52c34e006
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/torment/StupefyingTouch.java
@@ -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.torment;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.common.EntersBattlefieldTriggeredAbility;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.effects.RestrictionEffect;
+import mage.abilities.effects.common.AttachEffect;
+import mage.abilities.effects.common.DrawCardSourceControllerEffect;
+import mage.abilities.keyword.EnchantAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Outcome;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
+import mage.target.TargetPermanent;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class StupefyingTouch extends CardImpl {
+
+ public StupefyingTouch(UUID ownerId) {
+ super(ownerId, 48, "Stupefying Touch", Rarity.UNCOMMON, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}");
+ this.expansionSetCode = "TOR";
+ this.subtype.add("Aura");
+
+ // Enchant creature
+ TargetPermanent auraTarget = new TargetCreaturePermanent();
+ this.getSpellAbility().addTarget(auraTarget);
+ this.getSpellAbility().addEffect(new AttachEffect(Outcome.Detriment));
+ Ability ability = new EnchantAbility(auraTarget.getTargetName());
+ this.addAbility(ability);
+
+ // When Stupefying Touch enters the battlefield, draw a card.
+ this.addAbility(new EntersBattlefieldTriggeredAbility(new DrawCardSourceControllerEffect(1), false));
+
+ // Enchanted creature's activated abilities can't be activated.
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantActivateAbilitiesAttachedEffect()));
+ }
+
+ public StupefyingTouch(final StupefyingTouch card) {
+ super(card);
+ }
+
+ @Override
+ public StupefyingTouch copy() {
+ return new StupefyingTouch(this);
+ }
+}
+
+class CantActivateAbilitiesAttachedEffect extends RestrictionEffect {
+
+ public CantActivateAbilitiesAttachedEffect() {
+ super(Duration.WhileOnBattlefield);
+ staticText = "Enchanted creature's activated abilities can't be activated";
+ }
+
+ public CantActivateAbilitiesAttachedEffect(final CantActivateAbilitiesAttachedEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public boolean applies(Permanent permanent, Ability source, Game game) {
+ Permanent enchantment = game.getPermanent(source.getSourceId());
+ if (enchantment != null && enchantment.getAttachedTo() != null) {
+ if (permanent.getId().equals(enchantment.getAttachedTo())) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @Override
+ public boolean canUseActivatedAbilities(Permanent permanent, Ability source, Game game) {
+ return false;
+ }
+
+ @Override
+ public CantActivateAbilitiesAttachedEffect copy() {
+ return new CantActivateAbilitiesAttachedEffect(this);
+ }
+
+}
\ No newline at end of file
diff --git a/Mage.Sets/src/mage/sets/torment/VengefulDreams.java b/Mage.Sets/src/mage/sets/torment/VengefulDreams.java
new file mode 100644
index 0000000000..42b78e2114
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/torment/VengefulDreams.java
@@ -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.torment;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.costs.common.DiscardXTargetCost;
+import mage.abilities.dynamicvalue.common.GetXValue;
+import mage.abilities.effects.Effect;
+import mage.abilities.effects.common.ExileTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.filter.FilterCard;
+import mage.filter.common.FilterAttackingCreature;
+import mage.game.Game;
+import mage.target.Target;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class VengefulDreams extends CardImpl {
+
+ public VengefulDreams(UUID ownerId) {
+ super(ownerId, 21, "Vengeful Dreams", Rarity.RARE, new CardType[]{CardType.INSTANT}, "{W}{W}");
+ this.expansionSetCode = "TOR";
+
+ // As an additional cost to cast Vengeful Dreams, discard X cards.
+ this.getSpellAbility().addCost(new DiscardXTargetCost(new FilterCard("cards"), true));
+
+ // Exile X target attacking creatures.
+ Effect effect = new ExileTargetEffect();
+ effect.setText("Exile X target attacking creatures");
+ this.getSpellAbility().addEffect(effect);
+ }
+
+ public VengefulDreams(final VengefulDreams card) {
+ super(card);
+ }
+
+ @Override
+ public void adjustTargets(Ability ability, Game game) {
+ int xValue = new GetXValue().calculate(game, ability, null);
+ Target target = new TargetCreaturePermanent(0, xValue, new FilterAttackingCreature(), false);
+ ability.addTarget(target);
+ }
+
+ @Override
+ public VengefulDreams copy() {
+ return new VengefulDreams(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/unlimitededition/Deathgrip.java b/Mage.Sets/src/mage/sets/unlimitededition/Deathgrip.java
new file mode 100644
index 0000000000..5467ba0936
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/unlimitededition/Deathgrip.java
@@ -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.unlimitededition;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author anonymous
+ */
+public class Deathgrip extends mage.sets.limitedbeta.Deathgrip {
+
+ public Deathgrip(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 9;
+ this.expansionSetCode = "2ED";
+ }
+
+ public Deathgrip(final Deathgrip card) {
+ super(card);
+ }
+
+ @Override
+ public Deathgrip copy() {
+ return new Deathgrip(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/urzasdestiny/CovetousDragon.java b/Mage.Sets/src/mage/sets/urzasdestiny/CovetousDragon.java
new file mode 100644
index 0000000000..03d130e3e2
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/urzasdestiny/CovetousDragon.java
@@ -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.urzasdestiny;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.ControlsPermanentsControllerTriggeredAbility;
+import mage.abilities.effects.common.SacrificeSourceEffect;
+import mage.abilities.keyword.FlyingAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.filter.Filter;
+import mage.filter.common.FilterArtifactPermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class CovetousDragon extends CardImpl {
+
+ public CovetousDragon(UUID ownerId) {
+ super(ownerId, 80, "Covetous Dragon", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{4}{R}");
+ this.expansionSetCode = "UDS";
+ this.subtype.add("Dragon");
+ this.power = new MageInt(6);
+ this.toughness = new MageInt(5);
+
+ // Flying
+ this.addAbility(FlyingAbility.getInstance());
+
+ // When you control no artifacts, sacrifice Covetous Dragon.
+ this.addAbility(new ControlsPermanentsControllerTriggeredAbility(
+ new FilterArtifactPermanent(), Filter.ComparisonType.Equal, 0,
+ new SacrificeSourceEffect()));
+ }
+
+ public CovetousDragon(final CovetousDragon card) {
+ super(card);
+ }
+
+ @Override
+ public CovetousDragon copy() {
+ return new CovetousDragon(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/urzasdestiny/RapidDecay.java b/Mage.Sets/src/mage/sets/urzasdestiny/RapidDecay.java
new file mode 100644
index 0000000000..09775f15d3
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/urzasdestiny/RapidDecay.java
@@ -0,0 +1,98 @@
+/*
+ * 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.urzasdestiny;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.OneShotEffect;
+import mage.abilities.keyword.CyclingAbility;
+import mage.cards.Card;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.constants.Rarity;
+import mage.filter.FilterCard;
+import mage.game.Game;
+import mage.target.common.TargetCardInASingleGraveyard;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class RapidDecay extends CardImpl {
+
+ public RapidDecay(UUID ownerId) {
+ super(ownerId, 67, "Rapid Decay", Rarity.RARE, new CardType[]{CardType.INSTANT}, "{1}{B}");
+ this.expansionSetCode = "UDS";
+
+ // Exile up to three target cards from a single graveyard.
+ this.getSpellAbility().addEffect(new RapidDecayExileEffect());
+ this.getSpellAbility().addTarget(new TargetCardInASingleGraveyard(0, 3, new FilterCard("up to three target cards from a single graveyard")));
+
+ // Cycling {2}
+ this.addAbility(new CyclingAbility(new ManaCostsImpl("{2}")));
+ }
+
+ public RapidDecay(final RapidDecay card) {
+ super(card);
+ }
+
+ @Override
+ public RapidDecay copy() {
+ return new RapidDecay(this);
+ }
+}
+
+class RapidDecayExileEffect extends OneShotEffect {
+
+ public RapidDecayExileEffect() {
+ super(Outcome.Exile);
+ this.staticText = "Exile up to three target cards from a single graveyard";
+ }
+
+ public RapidDecayExileEffect(final RapidDecayExileEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public RapidDecayExileEffect copy() {
+ return new RapidDecayExileEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ for (UUID targetID : source.getTargets().get(0).getTargets()) {
+ Card card = game.getCard(targetID);
+ if (card != null) {
+ card.moveToExile(null, "", source.getSourceId(), game);
+ }
+ }
+ return true;
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/urzasdestiny/TetheredGriffin.java b/Mage.Sets/src/mage/sets/urzasdestiny/TetheredGriffin.java
new file mode 100644
index 0000000000..85da8fd853
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/urzasdestiny/TetheredGriffin.java
@@ -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.urzasdestiny;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.ControlsPermanentsControllerTriggeredAbility;
+import mage.abilities.effects.common.SacrificeSourceEffect;
+import mage.abilities.keyword.FlyingAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.filter.Filter;
+import mage.filter.common.FilterEnchantmentPermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class TetheredGriffin extends CardImpl {
+
+ public TetheredGriffin(UUID ownerId) {
+ super(ownerId, 21, "Tethered Griffin", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{W}");
+ this.expansionSetCode = "UDS";
+ this.subtype.add("Griffin");
+ this.power = new MageInt(2);
+ this.toughness = new MageInt(3);
+
+ // Flying
+ this.addAbility(FlyingAbility.getInstance());
+
+ // When you control no enchantments, sacrifice Tethered Griffin.
+ this.addAbility(new ControlsPermanentsControllerTriggeredAbility(
+ new FilterEnchantmentPermanent(), Filter.ComparisonType.Equal, 0,
+ new SacrificeSourceEffect()));
+ }
+
+ public TetheredGriffin(final TetheredGriffin card) {
+ super(card);
+ }
+
+ @Override
+ public TetheredGriffin copy() {
+ return new TetheredGriffin(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/urzaslegacy/TickingGnomes.java b/Mage.Sets/src/mage/sets/urzaslegacy/TickingGnomes.java
index e995616108..c4458d3f39 100644
--- a/Mage.Sets/src/mage/sets/urzaslegacy/TickingGnomes.java
+++ b/Mage.Sets/src/mage/sets/urzaslegacy/TickingGnomes.java
@@ -28,9 +28,6 @@
package mage.sets.urzaslegacy;
import java.util.UUID;
-
-import mage.constants.CardType;
-import mage.constants.Rarity;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
@@ -38,6 +35,8 @@ import mage.abilities.costs.common.SacrificeSourceCost;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.keyword.EchoAbility;
import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
import mage.constants.Zone;
import mage.target.common.TargetCreatureOrPlayer;
@@ -60,6 +59,7 @@ public class TickingGnomes extends CardImpl {
// Sacrifice Ticking Gnomes: Ticking Gnomes deals 1 damage to target creature or player.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1), new SacrificeSourceCost());
ability.addTarget(new TargetCreatureOrPlayer());
+ this.addAbility(ability);
}
public TickingGnomes(final TickingGnomes card) {
diff --git a/Mage.Sets/src/mage/sets/urzassaga/CarrionBeetles.java b/Mage.Sets/src/mage/sets/urzassaga/CarrionBeetles.java
new file mode 100644
index 0000000000..20ed6bab86
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/urzassaga/CarrionBeetles.java
@@ -0,0 +1,103 @@
+/*
+ * 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.urzassaga;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.OneShotEffect;
+import mage.cards.Card;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.filter.FilterCard;
+import mage.game.Game;
+import mage.target.common.TargetCardInASingleGraveyard;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class CarrionBeetles extends CardImpl {
+
+ public CarrionBeetles(UUID ownerId) {
+ super(ownerId, 122, "Carrion Beetles", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{B}");
+ this.expansionSetCode = "USG";
+ this.subtype.add("Insect");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(1);
+
+ // {2}{B}, {tap}: Exile up to three target cards from a single graveyard.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CarrionBeetlesExileEffect(), new ManaCostsImpl("{2}{B}"));
+ ability.addCost(new TapSourceCost());
+ ability.addTarget(new TargetCardInASingleGraveyard(0, 3, new FilterCard("up to three target cards from a single graveyard")));
+ this.addAbility(ability);
+ }
+
+ public CarrionBeetles(final CarrionBeetles card) {
+ super(card);
+ }
+
+ @Override
+ public CarrionBeetles copy() {
+ return new CarrionBeetles(this);
+ }
+}
+
+class CarrionBeetlesExileEffect extends OneShotEffect {
+
+ public CarrionBeetlesExileEffect() {
+ super(Outcome.Exile);
+ this.staticText = "Exile up to three target cards from a single graveyard";
+ }
+
+ public CarrionBeetlesExileEffect(final CarrionBeetlesExileEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public CarrionBeetlesExileEffect copy() {
+ return new CarrionBeetlesExileEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ for (UUID targetID : source.getTargets().get(0).getTargets()) {
+ Card card = game.getCard(targetID);
+ if (card != null) {
+ card.moveToExile(null, "", source.getSourceId(), game);
+ }
+ }
+ return true;
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/urzassaga/LiltingRefrain.java b/Mage.Sets/src/mage/sets/urzassaga/LiltingRefrain.java
new file mode 100644
index 0000000000..e4cfe2d382
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/urzassaga/LiltingRefrain.java
@@ -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.urzassaga;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.SacrificeSourceCost;
+import mage.abilities.dynamicvalue.common.CountersCount;
+import mage.abilities.effects.common.CounterUnlessPaysEffect;
+import mage.abilities.effects.common.counter.AddCountersSourceEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.TargetController;
+import mage.constants.Zone;
+import mage.counters.CounterType;
+import mage.target.TargetSpell;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class LiltingRefrain extends CardImpl {
+
+ public LiltingRefrain(UUID ownerId) {
+ super(ownerId, 83, "Lilting Refrain", Rarity.UNCOMMON, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}");
+ this.expansionSetCode = "USG";
+
+ // At the beginning of your upkeep, you may put a verse counter on Lilting Refrain.
+ this.addAbility(new BeginningOfUpkeepTriggeredAbility(new AddCountersSourceEffect(CounterType.VERSE.createInstance()), TargetController.YOU, true));
+
+ // Sacrifice Lilting Refrain: Counter target spell unless its controller pays {X}, where X is the number of verse counters on Lilting Refrain.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CounterUnlessPaysEffect(new CountersCount(CounterType.VERSE)), new SacrificeSourceCost());
+ ability.addTarget(new TargetSpell());
+ this.addAbility(ability);
+ }
+
+ public LiltingRefrain(final LiltingRefrain card) {
+ super(card);
+ }
+
+ @Override
+ public LiltingRefrain copy() {
+ return new LiltingRefrain(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/urzassaga/Oppression.java b/Mage.Sets/src/mage/sets/urzassaga/Oppression.java
index 5c626c2089..dee4dea7f2 100644
--- a/Mage.Sets/src/mage/sets/urzassaga/Oppression.java
+++ b/Mage.Sets/src/mage/sets/urzassaga/Oppression.java
@@ -28,16 +28,11 @@
package mage.sets.urzassaga;
import java.util.UUID;
-
-import mage.abilities.Ability;
-import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.common.SpellCastAllTriggeredAbility;
import mage.abilities.effects.common.discard.DiscardTargetEffect;
import mage.cards.CardImpl;
import mage.constants.CardType;
import mage.constants.Rarity;
-import mage.constants.Zone;
-import mage.filter.FilterSpell;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.stack.Spell;
@@ -53,7 +48,6 @@ public class Oppression extends CardImpl {
super(ownerId, 143, "Oppression", Rarity.RARE, new CardType[]{CardType.ENCHANTMENT}, "{1}{B}{B}");
this.expansionSetCode = "USG";
-
// Whenever a player casts a spell, that player discards a card.
this.addAbility(new OppressionTriggeredAbility());
}
@@ -82,7 +76,7 @@ class OppressionTriggeredAbility extends SpellCastAllTriggeredAbility {
public boolean checkTrigger(GameEvent event, Game game) {
if (event.getType() == GameEvent.EventType.SPELL_CAST) {
Spell spell = game.getStack().getSpell(event.getTargetId());
- if (spell != null && filter.match(spell, getControllerId(), game)) {
+ if (spell != null && filter.match(spell, getSourceId(), getControllerId(), game)) {
this.getEffects().get(0).setTargetPointer(new FixedTarget(event.getPlayerId()));
return true;
}
@@ -94,4 +88,4 @@ class OppressionTriggeredAbility extends SpellCastAllTriggeredAbility {
public OppressionTriggeredAbility copy() {
return new OppressionTriggeredAbility(this);
}
-}
\ No newline at end of file
+}
diff --git a/Mage.Sets/src/mage/sets/urzassaga/Persecute.java b/Mage.Sets/src/mage/sets/urzassaga/Persecute.java
index 6f24e8c027..78326067aa 100644
--- a/Mage.Sets/src/mage/sets/urzassaga/Persecute.java
+++ b/Mage.Sets/src/mage/sets/urzassaga/Persecute.java
@@ -87,9 +87,10 @@ class PersecuteEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
- Player controller = game.getPlayer(source.getFirstTarget());
+ Player controller = game.getPlayer(source.getControllerId());
MageObject sourceObject = game.getObject(source.getSourceId());
- if (controller != null && sourceObject != null) {
+ Player targetPlayer = game.getPlayer(getTargetPointer().getFirst(game, source));
+ if (controller != null && sourceObject != null && targetPlayer != null) {
ChoiceColor choice = new ChoiceColor();
while (!choice.isChosen()) {
controller.choose(outcome, choice, game);
@@ -100,12 +101,12 @@ class PersecuteEffect extends OneShotEffect {
if (choice.getColor() == null) {
return false;
}
- Cards hand = controller.getHand();
- controller.revealCards(sourceObject.getIdName(), hand, game);
+ Cards hand = targetPlayer.getHand();
+ targetPlayer.revealCards(sourceObject.getIdName(), hand, game);
Set cards = hand.getCards(game);
for (Card card : cards) {
if (card != null && card.getColor(game).shares(choice.getColor())) {
- controller.discard(card, source, game);
+ targetPlayer.discard(card, source, game);
}
}
return true;
diff --git a/Mage.Sets/src/mage/sets/urzassaga/PresenceOfTheMaster.java b/Mage.Sets/src/mage/sets/urzassaga/PresenceOfTheMaster.java
new file mode 100644
index 0000000000..dd2cfa33e0
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/urzassaga/PresenceOfTheMaster.java
@@ -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.urzassaga;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class PresenceOfTheMaster extends mage.sets.legends.PresenceOfTheMaster {
+
+ public PresenceOfTheMaster(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 32;
+ this.expansionSetCode = "USG";
+ }
+
+ public PresenceOfTheMaster(final PresenceOfTheMaster card) {
+ super(card);
+ }
+
+ @Override
+ public PresenceOfTheMaster copy() {
+ return new PresenceOfTheMaster(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/urzassaga/RuneOfProtectionArtifacts.java b/Mage.Sets/src/mage/sets/urzassaga/RuneOfProtectionArtifacts.java
new file mode 100644
index 0000000000..52286b85af
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/urzassaga/RuneOfProtectionArtifacts.java
@@ -0,0 +1,141 @@
+/*
+ * 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.urzassaga;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.PreventionEffectImpl;
+import mage.abilities.keyword.CyclingAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Outcome;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.filter.FilterObject;
+import mage.filter.predicate.mageobject.CardTypePredicate;
+import mage.game.Game;
+import mage.game.events.GameEvent;
+import mage.target.TargetSource;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class RuneOfProtectionArtifacts extends CardImpl {
+
+ public RuneOfProtectionArtifacts(UUID ownerId) {
+ super(ownerId, 35, "Rune of Protection: Artifacts", Rarity.UNCOMMON, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}");
+ this.expansionSetCode = "USG";
+
+
+ // {W}: The next time a black source of your choice would deal damage to you this turn, prevent that damage.
+ this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new RuneOfProtectionArtifactsEffect() , new ManaCostsImpl("W")));
+ // Cycling {2} ({2}, Discard this card: Draw a card.)
+ this.addAbility(new CyclingAbility(new ManaCostsImpl("{2}")));
+ }
+
+ public RuneOfProtectionArtifacts(final RuneOfProtectionArtifacts card) {
+ super(card);
+ }
+
+ @Override
+ public RuneOfProtectionArtifacts copy() {
+ return new RuneOfProtectionArtifacts(this);
+ }
+}
+
+class RuneOfProtectionArtifactsEffect extends PreventionEffectImpl {
+
+ private static final FilterObject filter = new FilterObject("artifact source");
+
+ static {
+ filter.add(new CardTypePredicate(CardType.ARTIFACT));
+ }
+
+ private TargetSource target;
+
+ public RuneOfProtectionArtifactsEffect() {
+ super(Duration.EndOfTurn);
+ target = new TargetSource(filter);
+
+ staticText = "The next time an artifact source of your choice would deal damage to you this turn, prevent that damage";
+ }
+
+ public RuneOfProtectionArtifactsEffect(final RuneOfProtectionArtifactsEffect effect) {
+ super(effect);
+ this.target = effect.target.copy();
+ }
+
+ @Override
+ public RuneOfProtectionArtifactsEffect copy() {
+ return new RuneOfProtectionArtifactsEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ return true;
+ }
+
+ @Override
+ public void init(Ability source, Game game) {
+ this.target.choose(Outcome.PreventDamage, source.getControllerId(), source.getSourceId(), game);
+ }
+
+ @Override
+ public boolean replaceEvent(GameEvent event, Ability source, Game game) {
+ if (event.getTargetId().equals(source.getControllerId()) && event.getSourceId().equals(target.getFirstTarget())) {
+ preventDamage(event, source, target.getFirstTarget(), game);
+ return true;
+ }
+ return false;
+ }
+
+ private void preventDamage(GameEvent event, Ability source, UUID target, Game game) {
+ GameEvent preventEvent = new GameEvent(GameEvent.EventType.PREVENT_DAMAGE, target, source.getSourceId(), source.getControllerId(), event.getAmount(), false);
+ if (!game.replaceEvent(preventEvent)) {
+ int damage = event.getAmount();
+ event.setAmount(0);
+ this.used = true;
+ game.fireEvent(GameEvent.getEvent(GameEvent.EventType.PREVENTED_DAMAGE, target, source.getSourceId(), source.getControllerId(), damage));
+ }
+ }
+
+ @Override
+ public boolean applies(GameEvent event, Ability source, Game game) {
+ if (!this.used && super.applies(event, source, game)) {
+ if (event.getTargetId().equals(source.getControllerId()) && event.getSourceId().equals(target.getFirstTarget())) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+}
\ No newline at end of file
diff --git a/Mage.Sets/src/mage/sets/urzassaga/RuneOfProtectionLands.java b/Mage.Sets/src/mage/sets/urzassaga/RuneOfProtectionLands.java
new file mode 100644
index 0000000000..5d088a895f
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/urzassaga/RuneOfProtectionLands.java
@@ -0,0 +1,141 @@
+/*
+ * 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.urzassaga;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.PreventionEffectImpl;
+import mage.abilities.keyword.CyclingAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Outcome;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.filter.FilterObject;
+import mage.filter.predicate.mageobject.CardTypePredicate;
+import mage.game.Game;
+import mage.game.events.GameEvent;
+import mage.target.TargetSource;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class RuneOfProtectionLands extends CardImpl {
+
+ public RuneOfProtectionLands(UUID ownerId) {
+ super(ownerId, 39, "Rune of Protection: Lands", Rarity.RARE, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}");
+ this.expansionSetCode = "USG";
+
+
+ // {W}: The next time a black source of your choice would deal damage to you this turn, prevent that damage.
+ this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new RuneOfProtectionLandsEffect() , new ManaCostsImpl("W")));
+ // Cycling {2} ({2}, Discard this card: Draw a card.)
+ this.addAbility(new CyclingAbility(new ManaCostsImpl("{2}")));
+ }
+
+ public RuneOfProtectionLands(final RuneOfProtectionLands card) {
+ super(card);
+ }
+
+ @Override
+ public RuneOfProtectionLands copy() {
+ return new RuneOfProtectionLands(this);
+ }
+}
+
+class RuneOfProtectionLandsEffect extends PreventionEffectImpl {
+
+ private static final FilterObject filter = new FilterObject("land source");
+
+ static {
+ filter.add(new CardTypePredicate(CardType.LAND));
+ }
+
+ private TargetSource target;
+
+ public RuneOfProtectionLandsEffect() {
+ super(Duration.EndOfTurn);
+ target = new TargetSource(filter);
+
+ staticText = "The next time a land source of your choice would deal damage to you this turn, prevent that damage";
+ }
+
+ public RuneOfProtectionLandsEffect(final RuneOfProtectionLandsEffect effect) {
+ super(effect);
+ this.target = effect.target.copy();
+ }
+
+ @Override
+ public RuneOfProtectionLandsEffect copy() {
+ return new RuneOfProtectionLandsEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ return true;
+ }
+
+ @Override
+ public void init(Ability source, Game game) {
+ this.target.choose(Outcome.PreventDamage, source.getControllerId(), source.getSourceId(), game);
+ }
+
+ @Override
+ public boolean replaceEvent(GameEvent event, Ability source, Game game) {
+ if (event.getTargetId().equals(source.getControllerId()) && event.getSourceId().equals(target.getFirstTarget())) {
+ preventDamage(event, source, target.getFirstTarget(), game);
+ return true;
+ }
+ return false;
+ }
+
+ private void preventDamage(GameEvent event, Ability source, UUID target, Game game) {
+ GameEvent preventEvent = new GameEvent(GameEvent.EventType.PREVENT_DAMAGE, target, source.getSourceId(), source.getControllerId(), event.getAmount(), false);
+ if (!game.replaceEvent(preventEvent)) {
+ int damage = event.getAmount();
+ event.setAmount(0);
+ this.used = true;
+ game.fireEvent(GameEvent.getEvent(GameEvent.EventType.PREVENTED_DAMAGE, target, source.getSourceId(), source.getControllerId(), damage));
+ }
+ }
+
+ @Override
+ public boolean applies(GameEvent event, Ability source, Game game) {
+ if (!this.used && super.applies(event, source, game)) {
+ if (event.getTargetId().equals(source.getControllerId()) && event.getSourceId().equals(target.getFirstTarget())) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+}
\ No newline at end of file
diff --git a/Mage.Sets/src/mage/sets/urzassaga/SanctumCustodian.java b/Mage.Sets/src/mage/sets/urzassaga/SanctumCustodian.java
new file mode 100644
index 0000000000..bdad5a972f
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/urzassaga/SanctumCustodian.java
@@ -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.urzassaga;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.effects.common.PreventDamageToTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.target.common.TargetCreatureOrPlayer;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class SanctumCustodian extends CardImpl {
+
+ public SanctumCustodian(UUID ownerId) {
+ super(ownerId, 42, "Sanctum Custodian", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{W}");
+ this.expansionSetCode = "USG";
+ this.subtype.add("Human");
+ this.subtype.add("Cleric");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(2);
+
+ // {tap}: Prevent the next 2 damage that would be dealt to target creature or player this turn.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new PreventDamageToTargetEffect(Duration.EndOfTurn, 2), new TapSourceCost());
+ ability.addTarget(new TargetCreatureOrPlayer());
+ this.addAbility(ability);
+ }
+
+ public SanctumCustodian(final SanctumCustodian card) {
+ super(card);
+ }
+
+ @Override
+ public SanctumCustodian copy() {
+ return new SanctumCustodian(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/vintagemasters/CrescendoOfWar.java b/Mage.Sets/src/mage/sets/vintagemasters/CrescendoOfWar.java
new file mode 100644
index 0000000000..45773d8f0a
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/vintagemasters/CrescendoOfWar.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.vintagemasters;
+
+import java.util.UUID;
+import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
+import mage.abilities.common.SimpleStaticAbility;
+import mage.abilities.dynamicvalue.common.CountersCount;
+import mage.abilities.dynamicvalue.common.StaticValue;
+import mage.abilities.effects.common.continuous.BoostAllEffect;
+import mage.abilities.effects.common.counter.AddCountersSourceEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.TargetController;
+import mage.constants.Zone;
+import mage.counters.CounterType;
+import mage.filter.common.FilterAttackingCreature;
+import mage.filter.common.FilterBlockingCreature;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class CrescendoOfWar extends CardImpl {
+
+ public CrescendoOfWar(UUID ownerId) {
+ super(ownerId, 21, "Crescendo of War", Rarity.RARE, new CardType[]{CardType.ENCHANTMENT}, "{3}{W}");
+ this.expansionSetCode = "VMA";
+
+ // At the beginning of each upkeep, put a strife counter on Crescendo of War.
+ this.addAbility(new BeginningOfUpkeepTriggeredAbility(new AddCountersSourceEffect(CounterType.STRIFE.createInstance(1), true), TargetController.ANY, false));
+
+ // Attacking creatures get +1/+0 for each strife counter on Crescendo of War.
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostAllEffect(new CountersCount(CounterType.STRIFE), new StaticValue(0),
+ Duration.WhileOnBattlefield, new FilterAttackingCreature(), false)));
+
+ // Blocking creatures you control get +1/+0 for each strife counter on Crescendo of War.
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostAllEffect(new CountersCount(CounterType.STRIFE), new StaticValue(0),
+ Duration.WhileOnBattlefield, new FilterBlockingCreature(), false)));
+ }
+
+ public CrescendoOfWar(final CrescendoOfWar card) {
+ super(card);
+ }
+
+ @Override
+ public CrescendoOfWar copy() {
+ return new CrescendoOfWar(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/vintagemasters/MagisterOfWorth.java b/Mage.Sets/src/mage/sets/vintagemasters/MagisterOfWorth.java
new file mode 100644
index 0000000000..5242c1ab25
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/vintagemasters/MagisterOfWorth.java
@@ -0,0 +1,54 @@
+/*
+ * 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.constants.Rarity;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class MagisterOfWorth extends mage.sets.mediainserts.MagisterOfWorth {
+
+ public MagisterOfWorth(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 255;
+ this.expansionSetCode = "VMA";
+ this.rarity = Rarity.RARE;
+ }
+
+ public MagisterOfWorth(final MagisterOfWorth card) {
+ super(card);
+ }
+
+ @Override
+ public MagisterOfWorth copy() {
+ return new MagisterOfWorth(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/visions/Chronatog.java b/Mage.Sets/src/mage/sets/visions/Chronatog.java
new file mode 100644
index 0000000000..96dc557dda
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/visions/Chronatog.java
@@ -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.visions;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.LimitedTimesPerTurnActivatedAbility;
+import mage.abilities.costs.mana.GenericManaCost;
+import mage.abilities.effects.common.continuous.BoostSourceEffect;
+import mage.abilities.effects.common.turn.SkipNextTurnSourceEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class Chronatog extends CardImpl {
+
+ public Chronatog(UUID ownerId) {
+ super(ownerId, 28, "Chronatog", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{1}{U}");
+ this.expansionSetCode = "VIS";
+ this.subtype.add("Atog");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(2);
+
+ // {0}: Chronatog gets +3/+3 until end of turn. You skip your next turn. Activate this ability only once each turn.
+ Ability ability = new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(3, 3, Duration.EndOfTurn), new GenericManaCost(0));
+ ability.addEffect(new SkipNextTurnSourceEffect());
+ this.addAbility(ability);
+ }
+
+ public Chronatog(final Chronatog card) {
+ super(card);
+ }
+
+ @Override
+ public Chronatog copy() {
+ return new Chronatog(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/visions/Desertion.java b/Mage.Sets/src/mage/sets/visions/Desertion.java
index 728c485605..5c2f1b0838 100644
--- a/Mage.Sets/src/mage/sets/visions/Desertion.java
+++ b/Mage.Sets/src/mage/sets/visions/Desertion.java
@@ -56,7 +56,6 @@ public class Desertion extends CardImpl {
super(ownerId, 30, "Desertion", Rarity.RARE, new CardType[]{CardType.INSTANT}, "{3}{U}{U}");
this.expansionSetCode = "VIS";
-
// Counter target spell. If an artifact or creature spell is countered this way, put that card onto the battlefield under your control instead of into its owner's graveyard.
this.getSpellAbility().addEffect(new DesertionEffect());
this.getSpellAbility().addTarget(new TargetSpell());
@@ -81,7 +80,7 @@ class DesertionEffect extends OneShotEffect {
new CardTypePredicate(CardType.ARTIFACT),
new CardTypePredicate(CardType.CREATURE)));
}
-
+
public DesertionEffect() {
super(Outcome.Detriment);
this.staticText = "Counter target spell. If an artifact or creature spell is countered this way, put that card onto the battlefield under your control instead of into its owner's graveyard.";
@@ -106,7 +105,7 @@ class DesertionEffect extends OneShotEffect {
if (stackObject instanceof Spell) {
game.rememberLKI(objectId, Zone.STACK, (Spell) stackObject);
game.getStack().remove(stackObject);
- if (!((Spell) stackObject).isCopiedSpell() && filter.match(stackObject, source.getControllerId(), game)) {
+ if (!((Spell) stackObject).isCopiedSpell() && filter.match(stackObject, source.getSourceId(), source.getControllerId(), game)) {
MageObject card = game.getObject(stackObject.getSourceId());
if (card instanceof Card) {
((Card) card).putOntoBattlefield(game, Zone.STACK, source.getSourceId(), source.getControllerId());
@@ -120,5 +119,5 @@ class DesertionEffect extends OneShotEffect {
}
return false;
}
-
+
}
diff --git a/Mage.Sets/src/mage/sets/visions/EmeraldCharm.java b/Mage.Sets/src/mage/sets/visions/EmeraldCharm.java
new file mode 100644
index 0000000000..9897e61e06
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/visions/EmeraldCharm.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.visions;
+
+import java.util.UUID;
+import mage.abilities.Mode;
+import mage.abilities.effects.common.DestroyTargetEffect;
+import mage.abilities.effects.common.UntapTargetEffect;
+import mage.abilities.effects.common.continuous.LoseAbilityTargetEffect;
+import mage.abilities.keyword.FlyingAbility;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.filter.common.FilterEnchantmentPermanent;
+import mage.filter.predicate.Predicates;
+import mage.filter.predicate.mageobject.SubtypePredicate;
+import mage.target.TargetPermanent;
+import mage.target.common.TargetCreaturePermanent;
+import mage.target.common.TargetEnchantmentPermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class EmeraldCharm extends CardImpl {
+
+ private static final FilterEnchantmentPermanent filter = new FilterEnchantmentPermanent("non-Aura enchantment");
+
+ static {
+ filter.add(Predicates.not(new SubtypePredicate("Aura")));
+ }
+
+ public EmeraldCharm(UUID ownerId) {
+ super(ownerId, 56, "Emerald Charm", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{G}");
+ this.expansionSetCode = "VIS";
+
+ // Choose one - Untap target permanent;
+ this.getSpellAbility().addEffect(new UntapTargetEffect());
+ this.getSpellAbility().addTarget(new TargetPermanent());
+
+ // or destroy target non-Aura enchantment;
+ Mode mode = new Mode();
+ mode.getEffects().add(new DestroyTargetEffect());
+ mode.getTargets().add(new TargetEnchantmentPermanent(filter));
+ this.getSpellAbility().addMode(mode);
+
+ // or target creature loses flying until end of turn.
+ mode = new Mode();
+ mode.getEffects().add(new LoseAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn));
+ mode.getTargets().add(new TargetCreaturePermanent());
+ this.getSpellAbility().addMode(mode);
+ }
+
+ public EmeraldCharm(final EmeraldCharm card) {
+ super(card);
+ }
+
+ @Override
+ public EmeraldCharm copy() {
+ return new EmeraldCharm(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/visions/MagmaMine.java b/Mage.Sets/src/mage/sets/visions/MagmaMine.java
new file mode 100644
index 0000000000..aac5b04b73
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/visions/MagmaMine.java
@@ -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.visions;
+
+import java.util.UUID;
+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.GenericManaCost;
+import mage.abilities.dynamicvalue.common.CountersCount;
+import mage.abilities.effects.common.DamageTargetEffect;
+import mage.abilities.effects.common.counter.AddCountersSourceEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.counters.CounterType;
+import mage.target.common.TargetCreatureOrPlayer;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class MagmaMine extends CardImpl {
+
+ public MagmaMine(UUID ownerId) {
+ super(ownerId, 149, "Magma Mine", Rarity.UNCOMMON, new CardType[]{CardType.ARTIFACT}, "{1}");
+ this.expansionSetCode = "VIS";
+
+ // {4}: Put a pressure counter on Magma Mine.
+ this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD,
+ new AddCountersSourceEffect(CounterType.PRESSURE.createInstance(), true),
+ new GenericManaCost(4)));
+
+ // {tap}, Sacrifice Magma Mine: Magma Mine deals damage equal to the number of pressure counters on it to target creature or player.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(new CountersCount(CounterType.PRESSURE)), new TapSourceCost());
+ ability.addCost(new SacrificeSourceCost());
+ ability.addTarget(new TargetCreatureOrPlayer());
+ this.addAbility(ability);
+ }
+
+ public MagmaMine(final MagmaMine card) {
+ super(card);
+ }
+
+ @Override
+ public MagmaMine copy() {
+ return new MagmaMine(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/visions/Simoon.java b/Mage.Sets/src/mage/sets/visions/Simoon.java
new file mode 100644
index 0000000000..e0cac5096b
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/visions/Simoon.java
@@ -0,0 +1,100 @@
+/*
+ * 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.visions;
+
+import java.util.List;
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.effects.OneShotEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Outcome;
+import mage.constants.Rarity;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.filter.predicate.permanent.ControllerIdPredicate;
+import mage.game.Game;
+import mage.game.permanent.Permanent;
+import mage.players.Player;
+import mage.target.common.TargetOpponent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class Simoon extends CardImpl {
+
+ public Simoon(UUID ownerId) {
+ super(ownerId, 136, "Simoon", Rarity.UNCOMMON, new CardType[]{CardType.INSTANT}, "{R}{G}");
+ this.expansionSetCode = "VIS";
+
+ // Simoon deals 1 damage to each creature target opponent controls.
+ this.getSpellAbility().addEffect(new SimoonEffect());
+ this.getSpellAbility().addTarget(new TargetOpponent());
+ }
+
+ public Simoon(final Simoon card) {
+ super(card);
+ }
+
+ @Override
+ public Simoon copy() {
+ return new Simoon(this);
+ }
+}
+
+class SimoonEffect extends OneShotEffect {
+
+ public SimoonEffect() {
+ super(Outcome.Damage);
+ this.staticText = "{this} deals 1 damage to each creature target opponent controls";
+ }
+
+ public SimoonEffect(final SimoonEffect effect) {
+ super(effect);
+ }
+
+ @Override
+ public SimoonEffect copy() {
+ return new SimoonEffect(this);
+ }
+
+ @Override
+ public boolean apply(Game game, Ability source) {
+ Player player = game.getPlayer(source.getFirstTarget());
+ if (player != null) {
+ FilterCreaturePermanent filter = new FilterCreaturePermanent();
+ filter.add(new ControllerIdPredicate(player.getId()));
+ List creatures = game.getBattlefield().getActivePermanents(filter, source.getControllerId(), source.getSourceId(), game);
+ for (Permanent creature : creatures) {
+ creature.damage(1, source.getSourceId(), game, false, true);
+ }
+ return true;
+ }
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/Mage.Sets/src/mage/sets/visions/TarPitWarrior.java b/Mage.Sets/src/mage/sets/visions/TarPitWarrior.java
new file mode 100644
index 0000000000..f6212d37c3
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/visions/TarPitWarrior.java
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.visions;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.BecomesTargetTriggeredAbility;
+import mage.abilities.effects.common.SacrificeSourceEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+
+/**
+ *
+ * @author LoneFox
+ */
+public class TarPitWarrior extends CardImpl {
+
+ public TarPitWarrior(UUID ownerId) {
+ super(ownerId, 20, "Tar Pit Warrior", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{B}");
+ this.expansionSetCode = "VIS";
+ this.subtype.add("Cyclops");
+ this.subtype.add("Warrior");
+ this.power = new MageInt(3);
+ this.toughness = new MageInt(4);
+
+ // When Tar Pit Warrior becomes the target of a spell or ability, sacrifice it.
+ this.addAbility(new BecomesTargetTriggeredAbility(new SacrificeSourceEffect()));
+ }
+
+ public TarPitWarrior(final TarPitWarrior card) {
+ super(card);
+ }
+
+ @Override
+ public TarPitWarrior copy() {
+ return new TarPitWarrior(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/visions/TeferisRealm.java b/Mage.Sets/src/mage/sets/visions/TeferisRealm.java
index 170ffe8242..d66cc24eac 100644
--- a/Mage.Sets/src/mage/sets/visions/TeferisRealm.java
+++ b/Mage.Sets/src/mage/sets/visions/TeferisRealm.java
@@ -74,41 +74,43 @@ public class TeferisRealm extends CardImpl {
}
class TeferisRealmEffect extends OneShotEffect {
-
+
private static final String ARTIFACT = "Artifact";
private static final String CREATURE = "Creature";
private static final String LAND = "Land";
- private static final String NON_AURA_ENCHANTMENT = "Non-Aura enchantment";
+ private static final String NON_AURA_ENCHANTMENT = "Non-Aura enchantment";
private static final HashSet choices = new HashSet<>();
- static{
+
+ static {
choices.add(ARTIFACT);
choices.add(CREATURE);
choices.add(LAND);
- choices.add(NON_AURA_ENCHANTMENT);
- }
-
+ choices.add(NON_AURA_ENCHANTMENT);
+ }
+
public TeferisRealmEffect() {
super(Outcome.Detriment);
this.staticText = "that player chooses artifact, creature, land, or non-Aura enchantment. All nontoken permanents of that type phase out";
}
-
+
public TeferisRealmEffect(final TeferisRealmEffect effect) {
super(effect);
}
-
+
@Override
public TeferisRealmEffect copy() {
return new TeferisRealmEffect(this);
}
-
+
@Override
public boolean apply(Game game, Ability source) {
Player player = game.getPlayer(getTargetPointer().getFirst(game, source));
- if (player != null) {
+ Player controller = game.getPlayer(source.getControllerId());
+ if (player != null && controller != null) {
Choice choiceImpl = new ChoiceImpl(true);
choiceImpl.setMessage("Phase out which kind of permanents?");
choiceImpl.setChoices(choices);
- while(!player.choose(outcome, choiceImpl, game)) {
+ while (!player.choose(outcome, choiceImpl, game)) {
if (player.canRespond()) {
return false;
}
@@ -116,7 +118,7 @@ class TeferisRealmEffect extends OneShotEffect {
String choosenType = choiceImpl.getChoice();
FilterPermanent filter = new FilterPermanent();
filter.add(Predicates.not(new TokenPredicate()));
- switch(choosenType) {
+ switch (choosenType) {
case ARTIFACT:
filter.add(new CardTypePredicate(CardType.ARTIFACT));
break;
@@ -133,11 +135,11 @@ class TeferisRealmEffect extends OneShotEffect {
default:
return false;
}
- game.informPlayers(player.getLogName() + " chooses " + choosenType +"s to phase out");
- for(Permanent permanent: game.getBattlefield().getAllActivePermanents(filter, player.getId(), game)) {
+ game.informPlayers(player.getLogName() + " chooses " + choosenType + "s to phase out");
+ for (Permanent permanent : game.getBattlefield().getActivePermanents(filter, controller.getId(), game)) {
permanent.phaseOut(game);
}
- return true;
+ return true;
}
return false;
}
diff --git a/Mage.Sets/src/mage/sets/weatherlight/CinderGiant.java b/Mage.Sets/src/mage/sets/weatherlight/CinderGiant.java
new file mode 100644
index 0000000000..574899c6fc
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/weatherlight/CinderGiant.java
@@ -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.weatherlight;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
+import mage.abilities.effects.common.DamageAllEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.constants.TargetController;
+import mage.filter.common.FilterControlledCreaturePermanent;
+import mage.filter.predicate.permanent.AnotherPredicate;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class CinderGiant extends CardImpl {
+
+ private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("each other creature you control");
+ static {
+ filter.add(new AnotherPredicate());
+ }
+
+ public CinderGiant(UUID ownerId) {
+ super(ownerId, 93, "Cinder Giant", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{3}{R}");
+ this.expansionSetCode = "WTH";
+ this.subtype.add("Giant");
+ this.power = new MageInt(5);
+ this.toughness = new MageInt(3);
+
+ // At the beginning of your upkeep, Cinder Giant deals 2 damage to each other creature you control.
+ this.addAbility(new BeginningOfUpkeepTriggeredAbility(new DamageAllEffect(2, filter), TargetController.YOU, false));
+ }
+
+ public CinderGiant(final CinderGiant card) {
+ super(card);
+ }
+
+ @Override
+ public CinderGiant copy() {
+ return new CinderGiant(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/weatherlight/Downdraft.java b/Mage.Sets/src/mage/sets/weatherlight/Downdraft.java
new file mode 100644
index 0000000000..0ec3c65aaf
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/weatherlight/Downdraft.java
@@ -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.weatherlight;
+
+import java.util.UUID;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.SacrificeSourceCost;
+import mage.abilities.costs.mana.ManaCostsImpl;
+import mage.abilities.effects.common.DamageAllEffect;
+import mage.abilities.effects.common.continuous.LoseAbilityTargetEffect;
+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.FilterCreaturePermanent;
+import mage.filter.predicate.mageobject.AbilityPredicate;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class Downdraft extends CardImpl {
+
+ private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with flying");
+
+ static {
+ filter.add(new AbilityPredicate(FlyingAbility.class));
+ }
+
+ public Downdraft(UUID ownerId) {
+ super(ownerId, 67, "Downdraft", Rarity.UNCOMMON, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}");
+ this.expansionSetCode = "WTH";
+
+ // {G}: Target creature loses flying until end of turn.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD,
+ new LoseAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn),
+ new ManaCostsImpl("{G}"));
+ ability.addTarget(new TargetCreaturePermanent());
+ this.addAbility(ability);
+
+ // Sacrifice Downdraft: Downdraft deals 2 damage to each creature with flying.
+ this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageAllEffect(2, filter), new SacrificeSourceCost()));
+ }
+
+ public Downdraft(final Downdraft card) {
+ super(card);
+ }
+
+ @Override
+ public Downdraft copy() {
+ return new Downdraft(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/weatherlight/DwarvenThaumaturgist.java b/Mage.Sets/src/mage/sets/weatherlight/DwarvenThaumaturgist.java
new file mode 100644
index 0000000000..7eb2a3b385
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/weatherlight/DwarvenThaumaturgist.java
@@ -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.weatherlight;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.Ability;
+import mage.abilities.common.SimpleActivatedAbility;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.effects.common.continuous.SwitchPowerToughnessTargetEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
+import mage.constants.Zone;
+import mage.target.common.TargetCreaturePermanent;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class DwarvenThaumaturgist extends CardImpl {
+
+ public DwarvenThaumaturgist(UUID ownerId) {
+ super(ownerId, 98, "Dwarven Thaumaturgist", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{2}{R}");
+ this.expansionSetCode = "WTH";
+ this.subtype.add("Dwarf");
+ this.subtype.add("Shaman");
+ this.power = new MageInt(1);
+ this.toughness = new MageInt(2);
+
+ // {tap}: Switch target creature's power and toughness until end of turn.
+ Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SwitchPowerToughnessTargetEffect(Duration.EndOfTurn), new TapSourceCost());
+ ability.addTarget(new TargetCreaturePermanent());
+ this.addAbility(ability);
+ }
+
+ public DwarvenThaumaturgist(final DwarvenThaumaturgist card) {
+ super(card);
+ }
+
+ @Override
+ public DwarvenThaumaturgist copy() {
+ return new DwarvenThaumaturgist(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/weatherlight/LotusVale.java b/Mage.Sets/src/mage/sets/weatherlight/LotusVale.java
index 9183f46d57..dd7447e37e 100644
--- a/Mage.Sets/src/mage/sets/weatherlight/LotusVale.java
+++ b/Mage.Sets/src/mage/sets/weatherlight/LotusVale.java
@@ -30,8 +30,10 @@ package mage.sets.weatherlight;
import java.util.UUID;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.costs.common.SacrificeTargetCost;
+import mage.abilities.costs.common.TapSourceCost;
+import mage.abilities.effects.common.AddManaOfAnyColorEffect;
import mage.abilities.effects.common.EnterBattlefieldPayCostOrPutGraveyardEffect;
-import mage.abilities.mana.AnyColorManaAbility;
+import mage.abilities.mana.SimpleManaAbility;
import mage.cards.CardImpl;
import mage.constants.CardType;
import mage.constants.Rarity;
@@ -43,11 +45,12 @@ import mage.target.common.TargetControlledPermanent;
/**
*
- * @author anonymous
+ * @author Luna Skyrise
*/
public class LotusVale extends CardImpl {
-
+
private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("two untapped lands");
+
static {
filter.add(Predicates.not(new TappedPredicate()));
}
@@ -57,10 +60,11 @@ public class LotusVale extends CardImpl {
this.expansionSetCode = "WTH";
// If Lotus Vale would enter the battlefield, sacrifice two untapped lands instead. If you do, put Lotus Vale onto the battlefield. If you don't, put it into its owner's graveyard.
- this.addAbility(new SimpleStaticAbility(Zone.ALL, new EnterBattlefieldPayCostOrPutGraveyardEffect(new SacrificeTargetCost(new TargetControlledPermanent(2, 2, filter, false)))));
+ this.addAbility(new SimpleStaticAbility(Zone.ALL, new EnterBattlefieldPayCostOrPutGraveyardEffect(
+ new SacrificeTargetCost(new TargetControlledPermanent(2, 2, filter, false)))));
// {tap}: Add three mana of any one color to your mana pool.
- this.addAbility(new AnyColorManaAbility());
+ this.addAbility(new SimpleManaAbility(Zone.BATTLEFIELD, new AddManaOfAnyColorEffect(3), new TapSourceCost()));
}
public LotusVale(final LotusVale card) {
diff --git a/Mage.Sets/src/mage/sets/weatherlight/Thundermare.java b/Mage.Sets/src/mage/sets/weatherlight/Thundermare.java
new file mode 100644
index 0000000000..6a8f1b8be5
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/weatherlight/Thundermare.java
@@ -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.weatherlight;
+
+import java.util.UUID;
+
+/**
+ *
+ * @author LoneFox
+ */
+public class Thundermare extends mage.sets.portal.Thundermare {
+
+ public Thundermare(UUID ownerId) {
+ super(ownerId);
+ this.cardNumber = 116;
+ this.expansionSetCode = "WTH";
+ }
+
+ public Thundermare(final Thundermare card) {
+ super(card);
+ }
+
+ @Override
+ public Thundermare copy() {
+ return new Thundermare(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/weatherlight/TolarianSerpent.java b/Mage.Sets/src/mage/sets/weatherlight/TolarianSerpent.java
new file mode 100644
index 0000000000..5446010fb4
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/weatherlight/TolarianSerpent.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.weatherlight;
+
+import java.util.UUID;
+import mage.MageInt;
+import mage.abilities.common.OnEventTriggeredAbility;
+import mage.abilities.effects.common.PutTopCardOfLibraryIntoGraveControllerEffect;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.game.events.GameEvent.EventType;
+
+/**
+ *
+ * @author fireshoes
+ */
+public class TolarianSerpent extends CardImpl {
+
+ public TolarianSerpent(UUID ownerId) {
+ super(ownerId, 57, "Tolarian Serpent", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{5}{U}{U}");
+ this.expansionSetCode = "WTH";
+ this.subtype.add("Serpent");
+ this.power = new MageInt(7);
+ this.toughness = new MageInt(7);
+
+ // At the beginning of your upkeep, put the top seven cards of your library into your graveyard.
+ this.addAbility(new OnEventTriggeredAbility(EventType.UPKEEP_STEP_PRE,
+ "beginning of your upkeep",
+ new PutTopCardOfLibraryIntoGraveControllerEffect(7), false));
+ }
+
+ public TolarianSerpent(final TolarianSerpent card) {
+ super(card);
+ }
+
+ @Override
+ public TolarianSerpent copy() {
+ return new TolarianSerpent(this);
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/weatherlight/UrborgJustice.java b/Mage.Sets/src/mage/sets/weatherlight/UrborgJustice.java
new file mode 100644
index 0000000000..03384120f2
--- /dev/null
+++ b/Mage.Sets/src/mage/sets/weatherlight/UrborgJustice.java
@@ -0,0 +1,113 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package mage.sets.weatherlight;
+
+import java.util.Set;
+import java.util.UUID;
+
+import mage.MageObjectReference;
+import mage.abilities.Ability;
+import mage.abilities.dynamicvalue.DynamicValue;
+import mage.abilities.effects.Effect;
+import mage.abilities.effects.common.SacrificeEffect;
+import mage.cards.Card;
+import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Rarity;
+import mage.filter.common.FilterCreaturePermanent;
+import mage.game.Game;
+import mage.players.Player;
+import mage.target.common.TargetOpponent;
+import mage.watchers.common.CardsPutIntoGraveyardWatcher;
+
+/**
+ *
+ * @author andyfries
+ */
+public class UrborgJustice extends CardImpl {
+
+ public UrborgJustice(UUID ownerId) {
+ super(ownerId, 26, "Urborg Justice", Rarity.RARE, new CardType[]{CardType.INSTANT}, "{B}{B}");
+ this.expansionSetCode = "WTH";
+
+ // Target opponent sacrifices a creature for each creature put into your graveyard from the battlefield this turn.
+ this.getSpellAbility().addWatcher(new CardsPutIntoGraveyardWatcher());
+ SacrificeEffect sacrificeEffect = new SacrificeEffect(new FilterCreaturePermanent(), new UrborgJusticeDynamicValue(), "");
+ sacrificeEffect.setText("Target opponent sacrifices a creature for each creature put into your graveyard from the battlefield this turn");
+
+ this.getSpellAbility().addEffect(sacrificeEffect);
+ this.getSpellAbility().addTarget(new TargetOpponent());
+ }
+
+ public UrborgJustice(final UrborgJustice card) {
+ super(card);
+ }
+
+ @Override
+ public UrborgJustice copy() {
+ return new UrborgJustice(this);
+ }
+}
+
+class UrborgJusticeDynamicValue implements DynamicValue {
+
+ @Override
+ public UrborgJusticeDynamicValue copy() {
+ return new UrborgJusticeDynamicValue();
+ }
+
+ @Override
+ public String toString() {
+ return "1";
+ }
+
+ @Override
+ public String getMessage() {
+ return "creature put into your graveyard from the battlefield this turn";
+ }
+
+ @Override
+ public int calculate(Game game, Ability sourceAbility, Effect effect) {
+ CardsPutIntoGraveyardWatcher watcher = (CardsPutIntoGraveyardWatcher) game.getState().getWatchers().get("CardsPutIntoGraveyardWatcher");
+
+ int count = 0;
+ Player controller = game.getPlayer(sourceAbility.getControllerId());
+ if (controller != null && watcher != null) {
+ Set cardsInGraveyard = watcher.getCardsPutToGraveyardFromBattlefield();
+ for (MageObjectReference mor : cardsInGraveyard) {
+ if (game.getState().getZoneChangeCounter(mor.getSourceId()) == mor.getZoneChangeCounter()) {
+ Card card = game.getCard(mor.getSourceId());
+ if (card != null && card.getOwnerId().equals(sourceAbility.getControllerId()) && card.getCardType().contains(CardType.CREATURE)) {
+ count++;
+ }
+ }
+ }
+ }
+ return count;
+ }
+}
diff --git a/Mage.Sets/src/mage/sets/worldwake/CanopyCover.java b/Mage.Sets/src/mage/sets/worldwake/CanopyCover.java
index ca6ca52f35..71c8ff7ec9 100644
--- a/Mage.Sets/src/mage/sets/worldwake/CanopyCover.java
+++ b/Mage.Sets/src/mage/sets/worldwake/CanopyCover.java
@@ -28,12 +28,6 @@
package mage.sets.worldwake;
import java.util.UUID;
-import mage.constants.AttachmentType;
-import mage.constants.CardType;
-import mage.constants.Duration;
-import mage.constants.Outcome;
-import mage.constants.Rarity;
-import mage.constants.Zone;
import mage.abilities.Ability;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.RestrictionEffect;
@@ -43,33 +37,32 @@ import mage.abilities.keyword.EnchantAbility;
import mage.abilities.keyword.FlyingAbility;
import mage.abilities.keyword.ReachAbility;
import mage.cards.CardImpl;
+import mage.constants.AttachmentType;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Outcome;
+import mage.constants.Rarity;
import mage.constants.TargetController;
+import mage.constants.Zone;
+import mage.filter.FilterObject;
import mage.filter.FilterStackObject;
-import mage.filter.predicate.permanent.ControllerPredicate;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.target.TargetPermanent;
import mage.target.common.TargetCreaturePermanent;
-
-
/**
* @author noxx
*/
public class CanopyCover extends CardImpl {
- private static final FilterStackObject filter = new FilterStackObject("spells or abilities your opponents control");
+ private static final FilterObject filter = new FilterStackObject("spells or abilities your opponents control");
- static {
- filter.add(new ControllerPredicate(TargetController.OPPONENT));
- }
-
public CanopyCover(UUID ownerId) {
super(ownerId, 98, "Canopy Cover", Rarity.UNCOMMON, new CardType[]{CardType.ENCHANTMENT}, "{1}{G}");
this.expansionSetCode = "WWK";
this.subtype.add("Aura");
-
// Enchant creature
TargetPermanent auraTarget = new TargetCreaturePermanent();
this.getSpellAbility().addTarget(auraTarget);
@@ -81,7 +74,7 @@ public class CanopyCover extends CardImpl {
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new OrchardSpiritEffect()));
// Enchanted creature can't be the target of spells or abilities your opponents control.
- this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantBeTargetedAttachedEffect(filter, Duration.WhileOnBattlefield, AttachmentType.AURA)));
+ this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantBeTargetedAttachedEffect(filter, Duration.WhileOnBattlefield, AttachmentType.AURA, TargetController.OPPONENT)));
}
public CanopyCover(final CanopyCover card) {
diff --git a/Mage.Sets/src/mage/sets/worldwake/UrgeToFeed.java b/Mage.Sets/src/mage/sets/worldwake/UrgeToFeed.java
index 63b2dd6025..ad2d8e2ba1 100644
--- a/Mage.Sets/src/mage/sets/worldwake/UrgeToFeed.java
+++ b/Mage.Sets/src/mage/sets/worldwake/UrgeToFeed.java
@@ -28,15 +28,14 @@
package mage.sets.worldwake;
import java.util.UUID;
-
-import mage.constants.CardType;
-import mage.constants.Rarity;
import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.continuous.BoostTargetEffect;
import mage.cards.CardImpl;
+import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Outcome;
+import mage.constants.Rarity;
import mage.constants.TargetController;
import mage.counters.CounterType;
import mage.filter.common.FilterCreaturePermanent;
@@ -45,6 +44,7 @@ import mage.filter.predicate.mageobject.SubtypePredicate;
import mage.filter.predicate.permanent.ControllerPredicate;
import mage.filter.predicate.permanent.TappedPredicate;
import mage.game.Game;
+import mage.game.permanent.Permanent;
import mage.target.common.TargetCreaturePermanent;
/**
@@ -59,7 +59,6 @@ public class UrgeToFeed extends CardImpl {
super(ownerId, 70, "Urge to Feed", Rarity.UNCOMMON, new CardType[]{CardType.INSTANT}, "{B}{B}");
this.expansionSetCode = "WWK";
-
// Target creature gets -3/-3 until end of turn. You may tap any number of untapped Vampire creatures you control. If you do, put a +1/+1 counter on each of those Vampires.
this.getSpellAbility().addEffect(new BoostTargetEffect(-3, -3, Duration.EndOfTurn));
this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter));
@@ -97,20 +96,17 @@ class UrgeToFeedEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
- TargetCreaturePermanent target = new TargetCreaturePermanent(filter);
- while (true) {
- target.clearChosen();
- if (target.canChoose(source.getControllerId(), game) && target.choose(Outcome.Tap, source.getControllerId(), source.getSourceId(), game)) {
- UUID vampire = target.getFirstTarget();
+ TargetCreaturePermanent target = new TargetCreaturePermanent(0, Integer.MAX_VALUE, filter, true);
+ if (target.canChoose(source.getControllerId(), game) && target.choose(Outcome.Tap, source.getControllerId(), source.getSourceId(), game)) {
+ for (UUID vampireId : target.getTargets()) {
+ Permanent vampire = game.getPermanent(vampireId);
if (vampire != null) {
- game.getPermanent(vampire).tap(game);
- game.getPermanent(vampire).addCounters(CounterType.P1P1.createInstance(), game);
+ vampire.tap(game);
+ vampire.addCounters(CounterType.P1P1.createInstance(), game);
}
- } else {
- break;
}
}
- return false;
+ return true;
}
@Override
diff --git a/Mage.Sets/src/mage/sets/zendikar/VinesOfVastwood.java b/Mage.Sets/src/mage/sets/zendikar/VinesOfVastwood.java
index d67de8aa3f..cb72eb9e98 100644
--- a/Mage.Sets/src/mage/sets/zendikar/VinesOfVastwood.java
+++ b/Mage.Sets/src/mage/sets/zendikar/VinesOfVastwood.java
@@ -25,23 +25,22 @@
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
-
package mage.sets.zendikar;
import java.util.UUID;
import mage.abilities.condition.LockedInCondition;
-import mage.constants.CardType;
-import mage.constants.Duration;
-import mage.constants.Rarity;
import mage.abilities.condition.common.KickedCondition;
import mage.abilities.decorator.ConditionalContinuousEffect;
import mage.abilities.effects.common.CantBeTargetedTargetEffect;
import mage.abilities.effects.common.continuous.BoostTargetEffect;
import mage.abilities.keyword.KickerAbility;
import mage.cards.CardImpl;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Rarity;
import mage.constants.TargetController;
+import mage.filter.FilterObject;
import mage.filter.FilterStackObject;
-import mage.filter.predicate.permanent.ControllerPredicate;
import mage.target.common.TargetCreaturePermanent;
/**
@@ -49,12 +48,8 @@ import mage.target.common.TargetCreaturePermanent;
*/
public class VinesOfVastwood extends CardImpl {
- private static final FilterStackObject filter = new FilterStackObject("spells or abilities your opponents control");
+ private static final FilterObject filter = new FilterStackObject("spells or abilities your opponents control");
- static {
- filter.add(new ControllerPredicate(TargetController.OPPONENT));
- }
-
private static final String staticText = "If {this} was kicked, that creature gets +4/+4 until end of turn";
public VinesOfVastwood(UUID ownerId) {
@@ -66,7 +61,7 @@ public class VinesOfVastwood extends CardImpl {
// Target creature can't be the target of spells or abilities your opponents control this turn.
this.getSpellAbility().addTarget(new TargetCreaturePermanent());
- this.getSpellAbility().addEffect(new CantBeTargetedTargetEffect(filter, Duration.EndOfTurn));
+ this.getSpellAbility().addEffect(new CantBeTargetedTargetEffect(filter, Duration.EndOfTurn, TargetController.OPPONENT));
// If Vines of Vastwood was kicked, that creature gets +4/+4 until end of turn.
this.getSpellAbility().addEffect(new ConditionalContinuousEffect(new BoostTargetEffect(4, 4, Duration.EndOfTurn),
@@ -82,4 +77,3 @@ public class VinesOfVastwood extends CardImpl {
return new VinesOfVastwood(this);
}
}
-
diff --git a/Mage.Stats/pom.xml b/Mage.Stats/pom.xml
index bad954e962..91da9f71b0 100644
--- a/Mage.Stats/pom.xml
+++ b/Mage.Stats/pom.xml
@@ -6,7 +6,7 @@
org.magemage-root
- 1.4.2
+ 1.4.3org.mage
diff --git a/Mage.Tests/pom.xml b/Mage.Tests/pom.xml
index 86e03d742f..d5da2643a7 100644
--- a/Mage.Tests/pom.xml
+++ b/Mage.Tests/pom.xml
@@ -6,7 +6,7 @@
org.magemage-root
- 1.4.2
+ 1.4.3mage-tests
diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/replacement/canttarget/CanopyCoverTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/replacement/canttarget/CanopyCoverTest.java
new file mode 100644
index 0000000000..d3c0125f01
--- /dev/null
+++ b/Mage.Tests/src/test/java/org/mage/test/cards/replacement/canttarget/CanopyCoverTest.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package org.mage.test.cards.replacement.canttarget;
+
+import mage.constants.PhaseStep;
+import mage.constants.Zone;
+import org.junit.Test;
+import org.mage.test.serverside.base.CardTestPlayerBase;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class CanopyCoverTest extends CardTestPlayerBase {
+
+ /**
+ * Test spell
+ */
+ @Test
+ public void testCantBeTargetedWithSpells() {
+ addCard(Zone.HAND, playerB, "Lightning Bolt");
+ addCard(Zone.BATTLEFIELD, playerB, "Mountain", 1);
+
+ addCard(Zone.BATTLEFIELD, playerA, "Silvercoat Lion"); // 2/2 Creature - Lion
+ // Enchanted creature can't be the target of spells or abilities your opponents control.
+ addCard(Zone.HAND, playerA, "Canopy Cover"); // Enchantment - Aura
+
+ addCard(Zone.BATTLEFIELD, playerA, "Forest", 2);
+
+ castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Canopy Cover", "Silvercoat Lion");
+
+ castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerB, "Lightning Bolt", "Silvercoat Lion");
+
+ setStopAt(1, PhaseStep.END_TURN);
+ execute();
+
+ assertPermanentCount(playerA, "Canopy Cover", 1);
+ assertPermanentCount(playerA, "Silvercoat Lion", 1);
+
+ assertHandCount(playerB, "Lightning Bolt", 1);
+ }
+
+ @Test
+ public void testCantBeTargetedWithAbilities() {
+ // {U},Sacrifice AEther Spellbomb: Return target creature to its owner's hand.
+ addCard(Zone.BATTLEFIELD, playerB, "AEther Spellbomb");
+ addCard(Zone.BATTLEFIELD, playerB, "Island", 1);
+
+ addCard(Zone.BATTLEFIELD, playerA, "Silvercoat Lion"); // 2/2 Creature - Lion
+ // Enchanted creature can't be the target of spells or abilities your opponents control.
+ addCard(Zone.HAND, playerA, "Canopy Cover"); // Enchantment - Aura
+
+ addCard(Zone.BATTLEFIELD, playerA, "Forest", 2);
+
+ castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Canopy Cover", "Silvercoat Lion");
+
+ activateAbility(1, PhaseStep.POSTCOMBAT_MAIN, playerB, "{U},Sacrifice", "Silvercoat Lion");
+
+ setStopAt(1, PhaseStep.END_TURN);
+ execute();
+
+ assertPermanentCount(playerA, "Canopy Cover", 1);
+ assertPermanentCount(playerA, "Silvercoat Lion", 1);
+
+ assertGraveyardCount(playerB, "AEther Spellbomb", 0);
+ assertPermanentCount(playerB, "AEther Spellbomb", 1);
+ }
+}
diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/replacement/canttarget/GaeasRevengeTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/replacement/canttarget/GaeasRevengeTest.java
new file mode 100644
index 0000000000..34fa2d0976
--- /dev/null
+++ b/Mage.Tests/src/test/java/org/mage/test/cards/replacement/canttarget/GaeasRevengeTest.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification, are
+ * permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this list of
+ * conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ * of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * The views and conclusions contained in the software and documentation are those of the
+ * authors and should not be interpreted as representing official policies, either expressed
+ * or implied, of BetaSteward_at_googlemail.com.
+ */
+package org.mage.test.cards.replacement.canttarget;
+
+import mage.abilities.keyword.TrampleAbility;
+import mage.constants.PhaseStep;
+import mage.constants.Zone;
+import org.junit.Test;
+import org.mage.test.serverside.base.CardTestPlayerBase;
+
+/**
+ *
+ * @author LevelX2
+ */
+public class GaeasRevengeTest extends CardTestPlayerBase {
+
+ /**
+ * Test spell
+ */
+ @Test
+ public void testGreenCanTargetWithSpells() {
+ addCard(Zone.HAND, playerA, "Titanic Growth");
+ // Gaea's Revenge can't be countered.
+ // Haste
+ // Gaea's Revenge can't be the target of nongreen spells or abilities from nongreen sources.
+ addCard(Zone.BATTLEFIELD, playerA, "Gaea's Revenge"); // 8/5 Creature - Elemental
+
+ addCard(Zone.BATTLEFIELD, playerA, "Forest", 2);
+
+ castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Titanic Growth", "Gaea's Revenge");
+
+ setStopAt(1, PhaseStep.BEGIN_COMBAT);
+ execute();
+ assertPowerToughness(playerA, "Gaea's Revenge", 12, 9);
+ }
+
+ @Test
+ public void testGreenCanTargetWithAnAbilitiy() {
+ // Gaea's Revenge can't be countered.
+ // Haste
+ // Gaea's Revenge can't be the target of nongreen spells or abilities from nongreen sources.
+ addCard(Zone.BATTLEFIELD, playerB, "Gaea's Revenge"); // 8/5 Creature - Elemental
+ // Whenever a creature you control becomes blocked, it gets +1/+1 until end of turn.
+ // {1}{G}: Target creature you control gains trample until end of turn.
+ addCard(Zone.BATTLEFIELD, playerB, "Somberwald Alpha"); // 3/2 Creature - Wolf
+
+ addCard(Zone.BATTLEFIELD, playerB, "Forest", 2);
+
+ activateAbility(2, PhaseStep.PRECOMBAT_MAIN, playerB, "{1}{G}: Target creature", "Gaea's Revenge");
+
+ setStopAt(2, PhaseStep.BEGIN_COMBAT);
+ execute();
+ assertAbility(playerB, "Gaea's Revenge", TrampleAbility.getInstance(), true);
+ assertPowerToughness(playerB, "Gaea's Revenge", 8, 5);
+ }
+}
diff --git a/Mage.Updater/pom.xml b/Mage.Updater/pom.xml
index 1cba689e49..90d4db3a1a 100644
--- a/Mage.Updater/pom.xml
+++ b/Mage.Updater/pom.xml
@@ -5,7 +5,7 @@
mage-rootorg.mage
- 1.4.2
+ 1.4.34.0.0
diff --git a/Mage/pom.xml b/Mage/pom.xml
index 02ac85bd1f..c13b047036 100644
--- a/Mage/pom.xml
+++ b/Mage/pom.xml
@@ -7,7 +7,7 @@
org.magemage-root
- 1.4.2
+ 1.4.3mage
diff --git a/Mage/src/mage/abilities/TriggeredAbilities.java b/Mage/src/mage/abilities/TriggeredAbilities.java
index 5bf7818a30..969e3cb78f 100644
--- a/Mage/src/mage/abilities/TriggeredAbilities.java
+++ b/Mage/src/mage/abilities/TriggeredAbilities.java
@@ -43,6 +43,7 @@ import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.events.GameEvent.EventType;
import mage.game.permanent.Permanent;
+import mage.game.stack.Spell;
/**
*
@@ -95,6 +96,9 @@ public class TriggeredAbilities extends ConcurrentHashMap subtypes = new ArrayList();
protected boolean loseOther; // loses other subtypes
+ protected FilterCreaturePermanent filter;
- public BecomesSubtypeAllEffect(Duration duration, String subtype) {
+ public BecomesSubtypeAllEffect(Duration duration, String subtype) {
this(duration, createArrayList(subtype));
}
public BecomesSubtypeAllEffect(Duration duration, ArrayList subtypes) {
- this(duration, subtypes, true);
+ this(duration, subtypes, new FilterCreaturePermanent("All creatures"), true);
}
public BecomesSubtypeAllEffect(Duration duration,
- ArrayList subtypes, boolean loseOther) {
+ ArrayList subtypes, FilterCreaturePermanent filter, boolean loseOther) {
super(duration, Outcome.Detriment);
this.subtypes = subtypes;
this.staticText = setText();
this.loseOther = loseOther;
+ this.filter = filter;
}
private static ArrayList createArrayList(String subtype) {
@@ -52,7 +57,7 @@ public class BecomesSubtypeAllEffect extends ContinuousEffectImpl {
super(effect);
this.subtypes.addAll(effect.subtypes);
this.loseOther = effect.loseOther;
- this.loseOther = effect.loseOther;
+ this.filter = effect.filter;
}
@Override
@@ -68,9 +73,7 @@ public class BecomesSubtypeAllEffect extends ContinuousEffectImpl {
@Override
public boolean apply(Layer layer, SubLayer sublayer, Ability source,
Game game) {
-
- for (Permanent permanent : game.getBattlefield()
- .getAllActivePermanents(new FilterCreaturePermanent(), game)) {
+ for (Permanent permanent : game.getBattlefield().getAllActivePermanents(filter, game)) {
if (permanent != null) {
switch (layer) {
case TypeChangingEffects_4:
diff --git a/Mage/src/mage/abilities/keyword/AnnihilatorAbility.java b/Mage/src/mage/abilities/keyword/AnnihilatorAbility.java
index ae721fa50c..7a43a5711c 100644
--- a/Mage/src/mage/abilities/keyword/AnnihilatorAbility.java
+++ b/Mage/src/mage/abilities/keyword/AnnihilatorAbility.java
@@ -1,16 +1,16 @@
/*
* 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
@@ -20,7 +20,7 @@
* 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.
@@ -79,7 +79,7 @@ public class AnnihilatorAbility extends TriggeredAbilityImpl {
UUID defendingPlayerId = game.getCombat().getDefendingPlayerId(sourceId, game);
if (defendingPlayerId != null) {
// the id has to be set here because the source can be leave battlefield
- for(Effect effect : getEffects()) {
+ for (Effect effect : getEffects()) {
effect.setValue("defendingPlayerId", defendingPlayerId);
}
return true;
@@ -90,8 +90,8 @@ public class AnnihilatorAbility extends TriggeredAbilityImpl {
@Override
public String getRule() {
- return "Annihilator " + count + "(Whenever this creature attacks, defending player sacrifices " +
- (count == 1 ? "a permanent": CardUtil.numberToText(count) + " permanents") + ".)";
+ return "Annihilator " + count + "(Whenever this creature attacks, defending player sacrifices "
+ + (count == 1 ? "a permanent" : CardUtil.numberToText(count) + " permanents") + ".)";
}
@Override
@@ -121,17 +121,17 @@ class AnnihilatorEffect extends OneShotEffect {
UUID defendingPlayerId = (UUID) getValue("defendingPlayerId");
Player player = null;
if (defendingPlayerId != null) {
- player= game.getPlayer(defendingPlayerId);
+ player = game.getPlayer(defendingPlayerId);
}
if (player != null) {
int amount = Math.min(count, game.getBattlefield().countAll(filter, player.getId(), game));
- Target target = new TargetControlledPermanent(amount, amount, filter, false);
+ Target target = new TargetControlledPermanent(amount, amount, filter, true);
if (target.canChoose(player.getId(), game)) {
while (!target.isChosen() && target.canChoose(player.getId(), game) && player.canRespond()) {
player.choose(Outcome.Sacrifice, target, source.getSourceId(), game);
}
for (int idx = 0; idx < target.getTargets().size(); idx++) {
- Permanent permanent = game.getPermanent((UUID) target.getTargets().get(idx));
+ Permanent permanent = game.getPermanent(target.getTargets().get(idx));
if (permanent != null) {
permanent.sacrifice(source.getSourceId(), game);
}
diff --git a/Mage/src/mage/abilities/keyword/BuybackAbility.java b/Mage/src/mage/abilities/keyword/BuybackAbility.java
index 321a7de0a8..b698181189 100644
--- a/Mage/src/mage/abilities/keyword/BuybackAbility.java
+++ b/Mage/src/mage/abilities/keyword/BuybackAbility.java
@@ -96,6 +96,7 @@ public class BuybackAbility extends StaticAbility implements OptionalAdditionalS
}
}
+ @Override
public boolean isActivated() {
if (buybackCost != null) {
return buybackCost.isActivated();
@@ -112,11 +113,11 @@ public class BuybackAbility extends StaticAbility implements OptionalAdditionalS
@Override
public void addOptionalAdditionalCosts(Ability ability, Game game) {
if (ability instanceof SpellAbility) {
- Player player = game.getPlayer(controllerId);
+ Player player = game.getPlayer(ability.getControllerId());
if (player != null) {
this.resetBuyback();
if (buybackCost != null) {
- if (player.chooseUse(Outcome.Benefit, new StringBuilder("Pay ").append(buybackCost.getText(false)).append(" ?").toString(), ability, game)) {
+ if (player.chooseUse(Outcome.Benefit, "Pay " + buybackCost.getText(false) + " ?", ability, game)) {
buybackCost.activate();
for (Iterator it = ((Costs) buybackCost).iterator(); it.hasNext();) {
Cost cost = (Cost) it.next();
diff --git a/Mage/src/mage/abilities/keyword/KickerAbility.java b/Mage/src/mage/abilities/keyword/KickerAbility.java
index 3753632b55..d28edb5307 100644
--- a/Mage/src/mage/abilities/keyword/KickerAbility.java
+++ b/Mage/src/mage/abilities/keyword/KickerAbility.java
@@ -42,6 +42,7 @@ import mage.abilities.costs.OptionalAdditionalCost;
import mage.abilities.costs.OptionalAdditionalCostImpl;
import mage.abilities.costs.OptionalAdditionalSourceCosts;
import mage.abilities.costs.mana.GenericManaCost;
+import mage.abilities.costs.mana.ManaCost;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.costs.mana.VariableManaCost;
import mage.constants.AbilityType;
@@ -261,6 +262,12 @@ public class KickerAbility extends StaticAbility implements OptionalAdditionalSo
game.informPlayers(game.getPlayer(this.controllerId).getLogName() + " announced a value of " + xManaValue + " for " + " kicker X ");
}
ability.getManaCostsToPay().add(new GenericManaCost(xManaValue));
+ ManaCostsImpl kickerManaCosts = (ManaCostsImpl) cost;
+ for (ManaCost manaCost : kickerManaCosts) {
+ if (!(manaCost instanceof VariableManaCost)) {
+ ability.getManaCostsToPay().add(manaCost.copy());
+ }
+ }
} else {
ability.getManaCostsToPay().add((ManaCostsImpl) cost.copy());
}
diff --git a/Mage/src/mage/cards/decks/importer/DecDeckImporter.java b/Mage/src/mage/cards/decks/importer/DecDeckImporter.java
index 3dc368d306..617313d634 100644
--- a/Mage/src/mage/cards/decks/importer/DecDeckImporter.java
+++ b/Mage/src/mage/cards/decks/importer/DecDeckImporter.java
@@ -1,16 +1,16 @@
/*
* 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
@@ -20,16 +20,13 @@
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
+ *
* The views and conclusions contained in the software and documentation are those of the
* authors and should not be interpreted as representing official policies, either expressed
* or implied, of BetaSteward_at_googlemail.com.
*/
-
package mage.cards.decks.importer;
-import java.util.List;
-import java.util.Random;
import mage.cards.decks.DeckCardInfo;
import mage.cards.decks.DeckCardLists;
import mage.cards.repository.CardInfo;
@@ -58,17 +55,15 @@ public class DecDeckImporter extends DeckImporter {
String lineName = line.substring(delim).trim();
try {
int num = Integer.parseInt(lineNum);
- List cards = CardRepository.instance.findCards(lineName);
- if (cards.isEmpty()) {
+ CardInfo cardInfo = CardRepository.instance.findPreferedCoreExpansionCard(lineName);
+ if (cardInfo == null) {
sbMessage.append("Could not find card: '").append(lineName).append("' at line ").append(lineCount).append("\n");
} else {
- Random random = new Random();
for (int i = 0; i < num; i++) {
- CardInfo cardInfo = cards.get(random.nextInt(cards.size()));
if (!sideboard) {
- deckList.getCards().add(new DeckCardInfo(cardInfo.getName(),cardInfo.getCardNumber(), cardInfo.getSetCode()));
+ deckList.getCards().add(new DeckCardInfo(cardInfo.getName(), cardInfo.getCardNumber(), cardInfo.getSetCode()));
} else {
- deckList.getSideboard().add(new DeckCardInfo(cardInfo.getName(),cardInfo.getCardNumber(), cardInfo.getSetCode()));
+ deckList.getSideboard().add(new DeckCardInfo(cardInfo.getName(), cardInfo.getCardNumber(), cardInfo.getSetCode()));
}
}
}
diff --git a/Mage/src/mage/cards/decks/importer/MWSDeckImporter.java b/Mage/src/mage/cards/decks/importer/MWSDeckImporter.java
index 09a19efe91..3b29c55295 100644
--- a/Mage/src/mage/cards/decks/importer/MWSDeckImporter.java
+++ b/Mage/src/mage/cards/decks/importer/MWSDeckImporter.java
@@ -1,16 +1,16 @@
/*
* 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
@@ -20,7 +20,7 @@
* 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.
@@ -63,27 +63,28 @@ public class MWSDeckImporter extends DeckImporter {
String lineName = line.substring(delim + 1).trim();
try {
int num = Integer.parseInt(lineNum);
- List cards = null;
+ CardInfo cardInfo = null;
if (!setCode.isEmpty()) {
CardCriteria criteria = new CardCriteria();
criteria.name(lineName);
criteria.setCodes(setCode);
+ List cards = null;
cards = CardRepository.instance.findCards(criteria);
- }
- if (cards == null || cards.isEmpty()) {
- cards = CardRepository.instance.findCards(lineName);
+ if (!cards.isEmpty()) {
+ cardInfo = cards.get(new Random().nextInt(cards.size()));
+ }
+ } else {
+ cardInfo = CardRepository.instance.findPreferedCoreExpansionCard(lineName);
}
- if (cards.isEmpty()) {
+ if (cardInfo == null) {
sbMessage.append("Could not find card: '").append(lineName).append("' at line ").append(lineCount).append("\n");
} else {
- Random random = new Random();
for (int i = 0; i < num; i++) {
- CardInfo cardInfo = cards.get(random.nextInt(cards.size()));
if (!sideboard) {
- deckList.getCards().add(new DeckCardInfo(cardInfo.getName(),cardInfo.getCardNumber(), cardInfo.getSetCode()));
+ deckList.getCards().add(new DeckCardInfo(cardInfo.getName(), cardInfo.getCardNumber(), cardInfo.getSetCode()));
} else {
- deckList.getSideboard().add(new DeckCardInfo(cardInfo.getName(),cardInfo.getCardNumber(), cardInfo.getSetCode()));
+ deckList.getSideboard().add(new DeckCardInfo(cardInfo.getName(), cardInfo.getCardNumber(), cardInfo.getSetCode()));
}
}
}
diff --git a/Mage/src/mage/cards/decks/importer/TxtDeckImporter.java b/Mage/src/mage/cards/decks/importer/TxtDeckImporter.java
index 0c0589baf7..dbfb00b268 100644
--- a/Mage/src/mage/cards/decks/importer/TxtDeckImporter.java
+++ b/Mage/src/mage/cards/decks/importer/TxtDeckImporter.java
@@ -28,18 +28,12 @@
package mage.cards.decks.importer;
import java.util.Arrays;
-import java.util.Date;
-import java.util.GregorianCalendar;
import java.util.HashSet;
-import java.util.List;
import java.util.Set;
import mage.cards.decks.DeckCardInfo;
import mage.cards.decks.DeckCardLists;
import mage.cards.repository.CardInfo;
import mage.cards.repository.CardRepository;
-import mage.cards.repository.ExpansionInfo;
-import mage.cards.repository.ExpansionRepository;
-import mage.constants.SetType;
/**
*
@@ -56,6 +50,10 @@ public class TxtDeckImporter extends DeckImporter {
@Override
protected void readLine(String line, DeckCardLists deckList) {
+ if (line.toLowerCase().contains("sideboard")) {
+ sideboard = true;
+ return;
+ }
if (line.startsWith("//")) {
return;
}
@@ -69,11 +67,6 @@ public class TxtDeckImporter extends DeckImporter {
emptyLinesInARow = 0;
}
- if (line.toLowerCase().startsWith("sideboard")) {
- sideboard = true;
- return;
- }
-
line = line.replace("\t", " "); // changing tabs to blanks as delimiter
int delim = line.indexOf(' ');
if (delim < 0) {
@@ -93,36 +86,15 @@ public class TxtDeckImporter extends DeckImporter {
}
try {
int num = Integer.parseInt(lineNum.replaceAll("\\D+", ""));
- List cards = CardRepository.instance.findCards(lineName);
- if (cards.isEmpty()) {
+ CardInfo cardInfo = CardRepository.instance.findPreferedCoreExpansionCard(lineName);
+ if (cardInfo == null) {
sbMessage.append("Could not find card: '").append(lineName).append("' at line ").append(lineCount).append("\n");
} else {
- // search the card released last with this name
- Date lastReleaseDate = new GregorianCalendar(1900, 1, 1).getTime();
- Date lastExpansionDate = new GregorianCalendar(1900, 1, 1).getTime();
- CardInfo cardToUse = null;
- for (CardInfo cardinfo : cards) {
- ExpansionInfo set = ExpansionRepository.instance.getSetByCode(cardinfo.getSetCode());
- if (set != null) {
- if ((set.getType().equals(SetType.EXPANSION) || set.getType().equals(SetType.CORE))
- && (lastExpansionDate == null || set.getReleaseDate().after(lastExpansionDate))) {
- cardToUse = cardinfo;
- lastExpansionDate = set.getReleaseDate();
- }
- if (lastExpansionDate == null && (lastReleaseDate == null || set.getReleaseDate().after(lastReleaseDate))) {
- cardToUse = cardinfo;
- lastReleaseDate = set.getReleaseDate();
- }
- }
- }
- if (cardToUse == null) {
- cardToUse = cards.get(0);
- }
for (int i = 0; i < num; i++) {
if (!sideboard) {
- deckList.getCards().add(new DeckCardInfo(cardToUse.getName(), cardToUse.getCardNumber(), cardToUse.getSetCode()));
+ deckList.getCards().add(new DeckCardInfo(cardInfo.getName(), cardInfo.getCardNumber(), cardInfo.getSetCode()));
} else {
- deckList.getSideboard().add(new DeckCardInfo(cardToUse.getName(), cardToUse.getCardNumber(), cardToUse.getSetCode()));
+ deckList.getSideboard().add(new DeckCardInfo(cardInfo.getName(), cardInfo.getCardNumber(), cardInfo.getSetCode()));
}
}
}
diff --git a/Mage/src/mage/cards/repository/CardRepository.java b/Mage/src/mage/cards/repository/CardRepository.java
index 997e68430a..13c6e97216 100644
--- a/Mage/src/mage/cards/repository/CardRepository.java
+++ b/Mage/src/mage/cards/repository/CardRepository.java
@@ -39,12 +39,15 @@ import com.j256.ormlite.table.TableUtils;
import java.io.File;
import java.sql.SQLException;
import java.util.ArrayList;
+import java.util.Date;
+import java.util.GregorianCalendar;
import java.util.List;
import java.util.Random;
import java.util.Set;
import java.util.TreeSet;
import java.util.concurrent.Callable;
import mage.constants.CardType;
+import mage.constants.SetType;
import org.apache.log4j.Logger;
/**
@@ -60,7 +63,7 @@ public enum CardRepository {
// raise this if db structure was changed
private static final long CARD_DB_VERSION = 41;
// raise this if new cards were added to the server
- private static final long CARD_CONTENT_VERSION = 31;
+ private static final long CARD_CONTENT_VERSION = 32;
private final Random random = new Random();
private Dao cardDao;
@@ -297,11 +300,35 @@ public enum CardRepository {
return null;
}
+ public CardInfo findPreferedCoreExpansionCard(String name) {
+ List cards = findCards(name);
+ if (!cards.isEmpty()) {
+ Date lastReleaseDate = new GregorianCalendar(1900, 1, 1).getTime();
+ Date lastExpansionDate = new GregorianCalendar(1900, 1, 1).getTime();
+ CardInfo cardToUse = null;
+ for (CardInfo cardinfo : cards) {
+ ExpansionInfo set = ExpansionRepository.instance.getSetByCode(cardinfo.getSetCode());
+ if (set != null) {
+ if ((set.getType().equals(SetType.EXPANSION) || set.getType().equals(SetType.CORE))
+ && (lastExpansionDate == null || set.getReleaseDate().after(lastExpansionDate))) {
+ cardToUse = cardinfo;
+ lastExpansionDate = set.getReleaseDate();
+ }
+ if (lastExpansionDate == null && (lastReleaseDate == null || set.getReleaseDate().after(lastReleaseDate))) {
+ cardToUse = cardinfo;
+ lastReleaseDate = set.getReleaseDate();
+ }
+ }
+ }
+ return cardToUse;
+ }
+ return null;
+ }
+
public List findCards(String name) {
try {
QueryBuilder queryBuilder = cardDao.queryBuilder();
queryBuilder.where().eq("name", new SelectArg(name));
-
return cardDao.query(queryBuilder.prepare());
} catch (SQLException ex) {
}
diff --git a/Mage/src/mage/counters/CounterType.java b/Mage/src/mage/counters/CounterType.java
index 2f0aa49ad8..a8dc32e0ef 100644
--- a/Mage/src/mage/counters/CounterType.java
+++ b/Mage/src/mage/counters/CounterType.java
@@ -1,31 +1,30 @@
/*
-* 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.
-*/
-
+ * 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.counters;
/**
@@ -34,6 +33,7 @@ package mage.counters;
* @author nantuko
*/
public enum CounterType {
+
AGE("age"),
AIM("aim"),
ARROWHEAD("arrowhead"),
@@ -55,6 +55,7 @@ public enum CounterType {
FEATHER("feather"),
FLOOD("flood"),
FUSE("fuse"),
+ GOLD("gold"),
HATCHLING("hatchling"),
HOOFPRINT("hoofprint"),
ICE("ice"),
@@ -76,14 +77,17 @@ public enum CounterType {
POISON("poison"),
PRESSURE("pressure"),
QUEST("quest"),
+ SHIELD("shield"),
SLIME("slime"),
SPORE("spore"),
STORAGE("storage"),
+ STRIFE("strife"),
STUDY("study"),
THEFT("theft"),
TIME("time"),
TOWER("tower"),
VELOCITY("velocity"),
+ VERSE("verse"),
VILE("vile"),
WISH("wish");
@@ -112,7 +116,8 @@ public enum CounterType {
}
/**
- * Create instance of counter type with defined amount of counters of the given type.
+ * Create instance of counter type with defined amount of counters of the
+ * given type.
*
* @param amount amount of counters of the given type.
* @return
@@ -129,4 +134,4 @@ public enum CounterType {
return new Counter(name, amount);
}
}
-}
\ No newline at end of file
+}
diff --git a/Mage/src/mage/counters/Counters.java b/Mage/src/mage/counters/Counters.java
index 6b1aca15ed..473106f081 100644
--- a/Mage/src/mage/counters/Counters.java
+++ b/Mage/src/mage/counters/Counters.java
@@ -96,6 +96,16 @@ public class Counters extends HashMap implements Serializable {
}
}
+ public void removeAllCounters(CounterType counterType){
+ removeAllCounters(counterType.getName());
+ }
+
+ public void removeAllCounters(String name){
+ if (this.containsKey(name)){
+ this.remove(name);
+ }
+ }
+
public int getCount(String name) {
if (this.containsKey(name)) {
return this.get(name).getCount();
diff --git a/Mage/src/mage/filter/FilterImpl.java b/Mage/src/mage/filter/FilterImpl.java
index ecb3f9ee92..7def209d6e 100644
--- a/Mage/src/mage/filter/FilterImpl.java
+++ b/Mage/src/mage/filter/FilterImpl.java
@@ -1,31 +1,30 @@
/*
-* 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.
-*/
-
+ * 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.filter;
import java.util.ArrayList;
@@ -52,7 +51,7 @@ public abstract class FilterImpl implements Filter {
this.message = name;
}
- public FilterImpl(FilterImpl filter) {
+ public FilterImpl(FilterImpl filter) {
this.message = filter.message;
this.predicates = new ArrayList<>(filter.predicates);
}
diff --git a/Mage/src/mage/filter/FilterObject.java b/Mage/src/mage/filter/FilterObject.java
index 29402389df..3fc96e9c6b 100644
--- a/Mage/src/mage/filter/FilterObject.java
+++ b/Mage/src/mage/filter/FilterObject.java
@@ -1,31 +1,30 @@
/*
-* 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.
-*/
-
+ * 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.filter;
import mage.MageObject;
@@ -46,7 +45,7 @@ public class FilterObject extends FilterImpl {
super(name);
}
- public FilterObject(FilterObject filter) {
+ public FilterObject(FilterObject filter) {
super(filter);
}
}
diff --git a/Mage/src/mage/filter/FilterSpell.java b/Mage/src/mage/filter/FilterSpell.java
index 258f2c9083..9b6342aed7 100644
--- a/Mage/src/mage/filter/FilterSpell.java
+++ b/Mage/src/mage/filter/FilterSpell.java
@@ -1,31 +1,30 @@
/*
-* 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.
-*/
-
+ * 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.filter;
import java.util.UUID;
@@ -50,13 +49,13 @@ public class FilterSpell extends FilterStackObject {
public FilterSpell(final FilterSpell filter) {
super(filter);
}
-
+
@Override
- public boolean match(StackObject stackObject, UUID playerId, Game game) {
+ public boolean match(StackObject stackObject, UUID sourceId, UUID playerId, Game game) {
if (!(stackObject instanceof Spell)) {
return false;
}
- return super.match(stackObject, playerId, game);
+ return super.match(stackObject, sourceId, playerId, game);
}
@Override
diff --git a/Mage/src/mage/filter/FilterStackObject.java b/Mage/src/mage/filter/FilterStackObject.java
index 60a10aa913..a7c478bd78 100644
--- a/Mage/src/mage/filter/FilterStackObject.java
+++ b/Mage/src/mage/filter/FilterStackObject.java
@@ -1,16 +1,16 @@
/*
* 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
@@ -20,12 +20,11 @@
* 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.filter;
import java.util.ArrayList;
@@ -33,6 +32,7 @@ import java.util.List;
import java.util.UUID;
import mage.filter.predicate.ObjectPlayer;
import mage.filter.predicate.ObjectPlayerPredicate;
+import mage.filter.predicate.ObjectSourcePlayer;
import mage.filter.predicate.Predicates;
import mage.game.Game;
import mage.game.permanent.Permanent;
@@ -59,12 +59,12 @@ public class FilterStackObject extends FilterObject {
this.extraPredicates = new ArrayList<>(filter.extraPredicates);
}
- public boolean match(StackObject stackObject, UUID playerId, Game game) {
+ public boolean match(StackObject stackObject, UUID sourceId, UUID playerId, Game game) {
if (!this.match(stackObject, game)) {
return false;
}
- return Predicates.and(extraPredicates).apply(new ObjectPlayer(stackObject, playerId), game);
+ return Predicates.and(extraPredicates).apply(new ObjectSourcePlayer(stackObject, sourceId, playerId), game);
}
public void add(ObjectPlayerPredicate predicate) {
diff --git a/Mage/src/mage/filter/common/FilterSpellOrPermanent.java b/Mage/src/mage/filter/common/FilterSpellOrPermanent.java
index 96631bbaaf..a4d3371cf6 100644
--- a/Mage/src/mage/filter/common/FilterSpellOrPermanent.java
+++ b/Mage/src/mage/filter/common/FilterSpellOrPermanent.java
@@ -1,5 +1,5 @@
/*
- *
+ *
* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification, are
@@ -25,10 +25,11 @@
* 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.filter.common;
+import java.util.UUID;
import mage.filter.FilterImpl;
import mage.filter.FilterInPlay;
import mage.filter.FilterPermanent;
@@ -37,8 +38,6 @@ import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.game.stack.Spell;
-import java.util.UUID;
-
/**
*
* @author LevelX
@@ -77,7 +76,7 @@ public class FilterSpellOrPermanent extends FilterImpl