Compare commits
25 Commits
cmake
...
wagic-v0.25.5
| Author | SHA1 | Date | |
|---|---|---|---|
| e6243342e2 | |||
| a9547e419d | |||
| 41f5aceac4 | |||
| a394397dc0 | |||
| f93bcb32ef | |||
| 9cd1fa5757 | |||
| 9b2f59d64f | |||
| c109b2118a | |||
| 06bd11b0be | |||
| d892703902 | |||
| c0e2a1fe40 | |||
| 3555ddba33 | |||
| e2b9429b45 | |||
| c0c03eecc4 | |||
| c9cef1567a | |||
| 4286557026 | |||
| 13cf8baf24 | |||
| ff046cf9d6 | |||
| 13a48b5a14 | |||
| 61bf5bc95d | |||
| 0679cfd076 | |||
| 19e28f9dca | |||
| ee6ad9609c | |||
| 266ae422f1 | |||
| a89a352e22 |
+1924
-368
File diff suppressed because it is too large
Load Diff
@@ -1,76 +1,18 @@
|
|||||||
#NAME:Nightmare
|
#NAME:Nightmare
|
||||||
#DESC:I had a terrible Nightmare once
|
#DESC:'All evil is as a nightmare'
|
||||||
#DESC:and then a second
|
#DESC:Thomas Carlyle
|
||||||
#DESC:and a third
|
#DESC:
|
||||||
#DESC:and then I won.
|
#DESC:Win matches to unlock more
|
||||||
#2x Obsianus Golem
|
#DESC:opponents, sets and game modes
|
||||||
1129
|
Air Elemental (RV) (*) * 2
|
||||||
1129
|
Animate Dead (RV) (*) * 2
|
||||||
#2x animate dead
|
Bad Moon (RV) (*) * 2
|
||||||
1143
|
Bog Wraith (RV) (*) * 2
|
||||||
1143
|
Cursed Land (RV) (*) * 1
|
||||||
#2x Bad Moon
|
El-Hajjaj (RV) (*) * 2
|
||||||
1144
|
Fear (RV) (*) * 1
|
||||||
1144
|
Hypnotic Specter (RV) (*) * 2
|
||||||
#2x Bog Wraith
|
# RV Islands
|
||||||
1146
|
|
||||||
1146
|
|
||||||
#1x Cursed Land
|
|
||||||
1148
|
|
||||||
#1x Fear
|
|
||||||
1161
|
|
||||||
#2x El-Hajjâj
|
|
||||||
1158
|
|
||||||
1158
|
|
||||||
#2x Hypnotic Specter
|
|
||||||
1165
|
|
||||||
1165
|
|
||||||
#4x Nightmare
|
|
||||||
1170
|
|
||||||
1170
|
|
||||||
1170
|
|
||||||
1170
|
|
||||||
#3x Scathe Zombie
|
|
||||||
1177
|
|
||||||
1177
|
|
||||||
1177
|
|
||||||
#1x Unholy Strength
|
|
||||||
1183
|
|
||||||
#1x Wall of Bone
|
|
||||||
1184
|
|
||||||
#1x Zombie Master
|
|
||||||
1188
|
|
||||||
#2x Air Elemental
|
|
||||||
1189
|
|
||||||
1189
|
|
||||||
#2x Lifetap
|
|
||||||
1205
|
|
||||||
1205
|
|
||||||
#2x Lord of Atlantis
|
|
||||||
1206
|
|
||||||
1206
|
|
||||||
#2x Mahamoti Djinn
|
|
||||||
1208
|
|
||||||
1208
|
|
||||||
#4x Merfolk of the Pearl Trident
|
|
||||||
1210
|
|
||||||
1210
|
|
||||||
1210
|
|
||||||
1210
|
|
||||||
# Swamp (RV)
|
|
||||||
1373
|
|
||||||
1373
|
|
||||||
1373
|
|
||||||
1373
|
|
||||||
1374
|
|
||||||
1374
|
|
||||||
1374
|
|
||||||
1374
|
|
||||||
1375
|
|
||||||
1375
|
|
||||||
1375
|
|
||||||
1375
|
|
||||||
# Island (RV)
|
|
||||||
1392
|
1392
|
||||||
1392
|
1392
|
||||||
1392
|
1392
|
||||||
@@ -83,3 +25,26 @@
|
|||||||
1394
|
1394
|
||||||
1394
|
1394
|
||||||
1394
|
1394
|
||||||
|
Lifetap (RV) (*) * 2
|
||||||
|
Lord of Atlantis (RV) (*) * 2
|
||||||
|
Mahamoti Djinn (RV) (*) * 2
|
||||||
|
Merfolk of the Pearl Trident (RV) (*) * 4
|
||||||
|
Nightmare (RV) (*) * 4
|
||||||
|
Obsianus Golem (RV) (*) * 2
|
||||||
|
Scathe Zombies (RV) (*) * 3
|
||||||
|
# RV Islands
|
||||||
|
1373
|
||||||
|
1373
|
||||||
|
1373
|
||||||
|
1373
|
||||||
|
1374
|
||||||
|
1374
|
||||||
|
1374
|
||||||
|
1374
|
||||||
|
1375
|
||||||
|
1375
|
||||||
|
1375
|
||||||
|
1375
|
||||||
|
Unholy Strength (RV)(*) * 1
|
||||||
|
Wall of Bone (RV) (*) * 1
|
||||||
|
Zombie Master (RV) (*) * 1
|
||||||
|
|||||||
@@ -1,30 +1,24 @@
|
|||||||
#NAME:Howlings
|
#NAME:Howlings
|
||||||
#DESC:Supported by elemental rage
|
#DESC:'What the howling deep down
|
||||||
#DESC:goblins descend from the mountains
|
#DESC:there conceals, no blessed
|
||||||
#DESC:to conquer the lands below.
|
#DESC:living soul can tell'
|
||||||
|
#DESC:Friedrich Schiller
|
||||||
# (PSY) added 2 Mountains, 1 Black Vise, 1 Howling Mine
|
#DESC:
|
||||||
# (would've been better to add creatures, but all creatures in the
|
#DESC:Win matches to unlock more
|
||||||
# deck were already at 4 pieces))
|
#DESC:opponents, sets and game modes
|
||||||
|
Black Vise (MPS) * 4
|
||||||
# Land(s)
|
|
||||||
Mountain (8ED) * 20
|
|
||||||
|
|
||||||
# Creature(s)
|
|
||||||
Goblin King (8ED) * 4
|
Goblin King (8ED) * 4
|
||||||
Goblin Mountaineer (9ED) * 4
|
Goblin Mountaineer (9ED) * 4
|
||||||
Goblin Piker (9ED) * 4
|
Goblin Piker (9ED) * 4
|
||||||
Goblin Striker (MRD) * 4
|
Goblin Striker (MRD) * 4
|
||||||
Hearthfire Hobgoblin (EVE) * 4
|
Hearthfire Hobgoblin (EVE) * 4
|
||||||
|
Howling Mine (8ED) * 3
|
||||||
|
Lightning Bolt (M10) * 4
|
||||||
|
Mountain (10E) * 4
|
||||||
|
Mountain (7ED) * 4
|
||||||
|
Mountain (8ED) * 4
|
||||||
|
Mountain (9ED) * 4
|
||||||
|
Mountain (M10) * 4
|
||||||
Raging Goblin (8ED) * 4
|
Raging Goblin (8ED) * 4
|
||||||
Spark Elemental (5DN) * 4
|
Spark Elemental (5DN) * 4
|
||||||
|
|
||||||
# Artifact(s)
|
|
||||||
Black Vise (V10) * 4
|
|
||||||
Howling Mine (8ED) * 3
|
|
||||||
|
|
||||||
# Instant(s)
|
|
||||||
Lightning Bolt (M10) * 4
|
|
||||||
|
|
||||||
# Sorcery(s)
|
|
||||||
Wheel of Fortune (VMA) * 1
|
Wheel of Fortune (VMA) * 1
|
||||||
@@ -1,66 +1,17 @@
|
|||||||
#NAME:Taiga
|
#NAME:Taiga
|
||||||
#DESC:The forces of fire and nature unite.
|
#DESC:Beware the fires deep in
|
||||||
|
#DESC:the boreal forest
|
||||||
#DESC:
|
#DESC:
|
||||||
#DESC:Can you withstand
|
#DESC:Win matches to unlock more
|
||||||
#DESC:their combined fervor?
|
#DESC:opponents, sets and game modes
|
||||||
#2x Cockatrice
|
Cockatrice (RV) (*) * 2
|
||||||
1238
|
Craw Wurm (RV) (*) * 3
|
||||||
1238
|
Earth Elemental (RV) (*) * 2
|
||||||
#3x Craw Wurm
|
Elvish Archers (RV) (*) * 2
|
||||||
1239
|
Firebreathing (RV) (*) * 1
|
||||||
1239
|
Fire Elemental (RV) (*) * 2
|
||||||
1239
|
Flashfires (RV) (*) * 2
|
||||||
#2x Elvish Archers
|
# RV Forests
|
||||||
1242
|
|
||||||
1242
|
|
||||||
#2x Giant Spider
|
|
||||||
1249
|
|
||||||
1249
|
|
||||||
#2x Grizzly Bears
|
|
||||||
1250
|
|
||||||
1250
|
|
||||||
#2x Scryb Sprites
|
|
||||||
1264
|
|
||||||
1264
|
|
||||||
#2x Shanodin Dryads
|
|
||||||
1265
|
|
||||||
1265
|
|
||||||
#1x Tranquility
|
|
||||||
1270
|
|
||||||
#1x Tsunami
|
|
||||||
1271
|
|
||||||
#2x Earth Elemental
|
|
||||||
1287
|
|
||||||
1287
|
|
||||||
#2x Fire Elemental
|
|
||||||
1290
|
|
||||||
1290
|
|
||||||
#1x Flashfires
|
|
||||||
1293
|
|
||||||
#3x Goblin King
|
|
||||||
1296
|
|
||||||
1296
|
|
||||||
1296
|
|
||||||
#2x Hill Giant
|
|
||||||
1299
|
|
||||||
1299
|
|
||||||
#4x Mons's Goblin Raiders
|
|
||||||
1308
|
|
||||||
1308
|
|
||||||
1308
|
|
||||||
1308
|
|
||||||
#2x Orcish Oriflamme
|
|
||||||
1310
|
|
||||||
1310
|
|
||||||
1310
|
|
||||||
# (PSY) Power Surge not available any more, replaced with a third Orcish Oriflamme
|
|
||||||
#1x Power Surge
|
|
||||||
#1311
|
|
||||||
#1x Wheel of Fortune
|
|
||||||
1326
|
|
||||||
#1x White Ward
|
|
||||||
1371
|
|
||||||
#Forest (RV)
|
|
||||||
1386
|
1386
|
||||||
1386
|
1386
|
||||||
1386
|
1386
|
||||||
@@ -73,7 +24,12 @@
|
|||||||
1388
|
1388
|
||||||
1388
|
1388
|
||||||
1388
|
1388
|
||||||
#Mountain
|
Giant Spider (RV) (*) * 2
|
||||||
|
Goblin King (RV) (*) * 3
|
||||||
|
Grizzly Bears (RV) (*) * 2
|
||||||
|
Hill Giant (RV) (*) * 2
|
||||||
|
Mons's Goblin Raiders (RV) (*) * 4
|
||||||
|
# RV Mountains
|
||||||
1389
|
1389
|
||||||
1389
|
1389
|
||||||
1389
|
1389
|
||||||
@@ -86,3 +42,9 @@
|
|||||||
1391
|
1391
|
||||||
1391
|
1391
|
||||||
1391
|
1391
|
||||||
|
Orcish Oriflamme (RV) (*) * 2
|
||||||
|
Scryb Sprites (RV) (*) * 2
|
||||||
|
Shanodin Dryads (RV) (*) * 2
|
||||||
|
Tranquility (RV) (*) * 1
|
||||||
|
Tsunami (RV) (*) * 1
|
||||||
|
Wheel of Fortune (RV) (*) * 1
|
||||||
|
|||||||
@@ -1,39 +1,33 @@
|
|||||||
#NAME:Savannah
|
#NAME:Savannah
|
||||||
#DESC:United against the terrible
|
#DESC:Beasts stalk their prey
|
||||||
#DESC:Phyrexian Fate,
|
#DESC:among the tall grasses
|
||||||
#DESC:there is no time for dispute
|
#DESC:
|
||||||
#DESC:or rivalries
|
#DESC:
|
||||||
#DESC:in Eladamri and Gerrard's army
|
#DESC:Win matches to unlock more
|
||||||
# (PSY) 2x Benalish Hero not available any more, removed (deck has still >60 cards)
|
#DESC:opponents, sets and game modes
|
||||||
# (PSY) 2x Mesa Pegasus not available any more, removed (deck has still >60 cards)
|
Armageddon (VMA) * 1
|
||||||
|
Black Vise (V10) * 2
|
||||||
# Land(s)
|
Builder's Blessing (AVR) * 2
|
||||||
Forest (8ED) * 13
|
|
||||||
Plains (8ED) * 9
|
|
||||||
|
|
||||||
# Creature(s)
|
|
||||||
Cockatrice (TSB) * 2
|
Cockatrice (TSB) * 2
|
||||||
Craw Wurm (9ED) * 2
|
Craw Wurm (9ED) * 2
|
||||||
|
Crusade (DDF) * 2
|
||||||
|
Forest (8ED) * 4
|
||||||
|
Forest (9ED) * 4
|
||||||
|
Forest (MRD) * 1
|
||||||
|
Forest (ONS) * 4
|
||||||
Giant Spider (AKH) * 2
|
Giant Spider (AKH) * 2
|
||||||
Grizzly Bears (8ED) * 2
|
Grizzly Bears (8ED) * 2
|
||||||
Spitting Spider (8ED) * 2
|
Jukai Messenger (CHK) * 4
|
||||||
|
Kessig Recluse (DKA) * 2
|
||||||
|
Living Lands (ME4) * 1
|
||||||
|
Plains (8ED) * 4
|
||||||
|
Plains (9ED) * 1
|
||||||
|
Plains (ONS) * 4
|
||||||
|
Rhox Charger (ALA) * 1
|
||||||
Ronom Unicorn (CSP) * 2
|
Ronom Unicorn (CSP) * 2
|
||||||
Savannah Lions (A25) * 2
|
Savannah Lions (A25) * 2
|
||||||
Scute Mob (ZEN) * 3
|
Scute Mob (ZEN) * 3
|
||||||
Serra Angel (M13) * 2
|
Serra Angel (M13) * 2
|
||||||
Jukai Messenger (CHK) * 4
|
Spitting Spider (8ED) * 2
|
||||||
Kessig Recluse (DKA) * 2
|
|
||||||
Rhox Charger (ALA) * 1
|
|
||||||
|
|
||||||
# Artifact(s)
|
|
||||||
Black Vise (V10) * 2
|
|
||||||
The Rack (DPA) * 2
|
The Rack (DPA) * 2
|
||||||
|
|
||||||
# Enchantment(s)
|
|
||||||
Builder's Blessing (AVR) * 2
|
|
||||||
Crusade (DDF) * 2
|
|
||||||
Living Lands (ME4) * 1
|
|
||||||
|
|
||||||
# Sorcery(s)
|
|
||||||
Armageddon (VMA) * 1
|
|
||||||
Wrath of God (8ED) * 2
|
Wrath of God (8ED) * 2
|
||||||
|
|||||||
@@ -1,64 +1,23 @@
|
|||||||
#NAME:Plateau
|
#NAME:Plateau
|
||||||
#DESC:In the highland of Boros
|
#DESC:There are no hiding places
|
||||||
#DESC:Angels, elementals and goblins
|
#DESC:on the high steppes beyond
|
||||||
#DESC:are preparing for battle.
|
#DESC:the mountain passes
|
||||||
#DESC:Beware, the crusade is coming...
|
#DESC:
|
||||||
#4x Lightning Helix {W}{R} - does 3 damage and you gain 3 life replacement for #2x Black Vise (1097) and #2x The Rack (1139)
|
#DESC:Win matches to unlock more
|
||||||
87908
|
#DESC:opponents, sets and game modes
|
||||||
87908
|
Boros Recruit (RAV) * 4
|
||||||
87908
|
Bull Cerodon (ALA) * 3
|
||||||
87908
|
Castle (RV) * 2
|
||||||
# (PSY) added a third Bull Cerodon to bring the deck to 60 cards
|
Cerodon Yearling (ARB) * 2
|
||||||
#2x Bull Cerodon replacement for #3x Earth Elementat {3}{R}{R} -4/5 (1287)
|
Crusade (RV) * 1
|
||||||
174952
|
Fire Elemental (RV) * 2
|
||||||
174952
|
Goblin King (10E) * 2
|
||||||
174952
|
Hearthfire Hobgoblin (EVE) * 2
|
||||||
#2x Fire Elemental {3}{R}{R} - 5/4
|
Hill Giant (RV) * 1
|
||||||
1290
|
Keldon Warlord (RV) * 1
|
||||||
1290
|
Lightning Helix (RAV) * 4
|
||||||
#2 x Nobilis of War {RW}{RW}{RW}{RW}{RW} replacement for 2x Fire elemental (1290)
|
Mons's Goblin Raiders (RV) * 1
|
||||||
154258
|
# RV Mountains
|
||||||
154258
|
|
||||||
#2x Goblin king (replaced Rv version 1296 with 10E)
|
|
||||||
129578
|
|
||||||
129578
|
|
||||||
#4 x Boros Recruit - {WR} - Goblin 1/1 first strike - Replace 2x Goblin Baloon brigade (1295) and 2 x Benalish Hero {W} -1/1 banding (1330)
|
|
||||||
88992
|
|
||||||
88992
|
|
||||||
88992
|
|
||||||
88992
|
|
||||||
#1x Mons Goblin Raide (1308)
|
|
||||||
1308
|
|
||||||
#2x Skyknight Legionnaire replacement for #2x Granite Gargoyle {2}{R} - 2/2 flying {R}:0/1 1297
|
|
||||||
109082
|
|
||||||
109082
|
|
||||||
#1x Orcish Oriflame
|
|
||||||
1310
|
|
||||||
#2x Castle {3}{W} - untapped creature get 0/2
|
|
||||||
1334
|
|
||||||
1334
|
|
||||||
#1x Crusade White creature get +1/+1 {W}{W}
|
|
||||||
1341
|
|
||||||
#2x Cerodon Yearling {R}{W} vigilance haste 2/2 replacement for pearled Unicord 2/2 {2}{W} (1356)
|
|
||||||
180604
|
|
||||||
180604
|
|
||||||
#2x Serra Angel {3}{W}{W} - 4/4 flying,vigilance
|
|
||||||
1366
|
|
||||||
1366
|
|
||||||
#2x Wall of sword {3}{W} 3/5 flying defender
|
|
||||||
1369
|
|
||||||
1369
|
|
||||||
#2x White knight 2/2 first strike, protection from black
|
|
||||||
1370
|
|
||||||
1370
|
|
||||||
#1x Hill Giant {3}{R} - 3/3
|
|
||||||
1299
|
|
||||||
#2x Hearthfire Hobgoblin replacement for - 1x Hurloon Minotaur - {1}{R}{R} - 2/3 - 1300 and 1xEarth Elementat {3}{R}{R} -4/5 - 1287
|
|
||||||
157201
|
|
||||||
157201
|
|
||||||
#1x Keldon Warlord
|
|
||||||
1301
|
|
||||||
#Moutains
|
|
||||||
1389
|
1389
|
||||||
1389
|
1389
|
||||||
1389
|
1389
|
||||||
@@ -71,7 +30,9 @@
|
|||||||
1391
|
1391
|
||||||
1391
|
1391
|
||||||
1391
|
1391
|
||||||
#Plains
|
Nobilis of War (EVE) * 2
|
||||||
|
Orcish Oriflamme (RV) * 1
|
||||||
|
# RV Plains
|
||||||
1395
|
1395
|
||||||
1395
|
1395
|
||||||
1395
|
1395
|
||||||
@@ -84,3 +45,7 @@
|
|||||||
1397
|
1397
|
||||||
1397
|
1397
|
||||||
1397
|
1397
|
||||||
|
Serra Angel (RV) * 2
|
||||||
|
Skyknight Legionnaire (RAV) * 2
|
||||||
|
Wall of Swords (RV) * 2
|
||||||
|
White knight (RV) * 2
|
||||||
|
|||||||
@@ -1,68 +1,37 @@
|
|||||||
#NAME:Badlands
|
#NAME:Badlands
|
||||||
#DESC:Dangerous foes await you.
|
#DESC:The badlands are full of
|
||||||
#DESC:Both undead, goblins, and
|
#DESC:treachery; even the paths
|
||||||
#DESC:other abominations will
|
#DESC:through the marshes will
|
||||||
#DESC:fight you recklessly.
|
#DESC:mislead and betray
|
||||||
#Ankh of Mishra
|
#DESC:
|
||||||
1094
|
#DESC:Win matches to unlock more
|
||||||
1094
|
#DESC:opponents, sets and game modes
|
||||||
1094
|
Ankh of Mishra (RV) * 4
|
||||||
1094
|
Armageddon Clock (RV) * 1
|
||||||
#Armageddon Clock
|
Bad Moon (RV) * 2
|
||||||
1095
|
Black Knight (RV) * 2
|
||||||
#Black Vise
|
Black Vise (RV) * 2
|
||||||
1097
|
Dancing Scimitar (RV) * 2
|
||||||
1097
|
Drudge Skeletons (RV) * 4
|
||||||
#Dancing Scimitar
|
El-Hajjaj (RV) * 2
|
||||||
1104
|
Goblin King (RV) * 2
|
||||||
1104
|
Howling Mine (RV) * 1
|
||||||
#Howling Mine
|
Hypnotic Specter (RV) * 2
|
||||||
1112
|
Mons's Goblin Raiders (RV) * 4
|
||||||
#The Rack
|
# RV Mountains
|
||||||
1139
|
1389
|
||||||
1139
|
1390
|
||||||
#Bad Moon
|
1391
|
||||||
1144
|
1389
|
||||||
1144
|
1390
|
||||||
#Black Knight
|
1391
|
||||||
1145
|
1389
|
||||||
1145
|
1390
|
||||||
#Drudge Skeletons
|
1391
|
||||||
1157
|
Orcish Oriflamme (RV) * 2
|
||||||
1157
|
Scathe Zombies (RV) * 4
|
||||||
1157
|
Sedge Troll (RV) * 3
|
||||||
1157
|
# RV Swamps
|
||||||
#El-Hajjaj
|
|
||||||
1158
|
|
||||||
1158
|
|
||||||
#Hypnotic Specter
|
|
||||||
1165
|
|
||||||
1165
|
|
||||||
#Scathe Zombies
|
|
||||||
1177
|
|
||||||
1177
|
|
||||||
1177
|
|
||||||
1177
|
|
||||||
#Zombie Master
|
|
||||||
1188
|
|
||||||
#Goblin King
|
|
||||||
1296
|
|
||||||
1296
|
|
||||||
#Orcish Oriflamme
|
|
||||||
1310
|
|
||||||
1310
|
|
||||||
#Wheel of Fortune
|
|
||||||
1326
|
|
||||||
#Sedge Troll
|
|
||||||
1315
|
|
||||||
1315
|
|
||||||
1315
|
|
||||||
#Mons's Goblin Raiders
|
|
||||||
1308
|
|
||||||
1308
|
|
||||||
1308
|
|
||||||
1308
|
|
||||||
#Swamp
|
|
||||||
1373
|
1373
|
||||||
1374
|
1374
|
||||||
1375
|
1375
|
||||||
@@ -73,13 +42,6 @@
|
|||||||
1374
|
1374
|
||||||
1375
|
1375
|
||||||
1373
|
1373
|
||||||
#Mountain
|
The Rack (RV) * 2
|
||||||
1389
|
Wheel of Fortune (RV) * 1
|
||||||
1390
|
Zombie Master (RV) * 1
|
||||||
1391
|
|
||||||
1389
|
|
||||||
1390
|
|
||||||
1391
|
|
||||||
1389
|
|
||||||
1390
|
|
||||||
1391
|
|
||||||
|
|||||||
@@ -1,66 +1,18 @@
|
|||||||
#NAME:Yavimaya
|
#NAME:Yavimaya
|
||||||
#DESC:Beasts of the woods and the
|
#DESC:On the island of Yavimaya
|
||||||
#DESC:seas are gathering, preparing
|
#DESC:the forest is not just
|
||||||
#DESC:for battle.
|
#DESC:ancient and wild. It is
|
||||||
#Armageddon Clock
|
#DESC:also sentient.
|
||||||
1095
|
#DESC:
|
||||||
#Obsianus Golem
|
#DESC:Win matches to unlock more
|
||||||
1129
|
#DESC:opponents, sets and game modes
|
||||||
1129
|
#HINT:combo hold(Tranquility|myhand)^cast(Tranquility|myhand)^restriction{type(enchantment|opponentbattlefield)~morethan~0}^totalmananeeded({2}{G})
|
||||||
#Air Elemental
|
Air Elemental (RV) * 4
|
||||||
1189
|
Armageddon Clock (RV) * 1
|
||||||
1189
|
Cockatrice (RV) * 1
|
||||||
1189
|
Craw Wurm (RV) * 1
|
||||||
1189
|
Elvish Archers (RV) * 2
|
||||||
#Lifetap
|
# RV Forests
|
||||||
1205
|
|
||||||
1205
|
|
||||||
#Lord of Atlantis
|
|
||||||
1206
|
|
||||||
1206
|
|
||||||
#Merfolk of the Pearl Trident
|
|
||||||
1210
|
|
||||||
1210
|
|
||||||
1210
|
|
||||||
1210
|
|
||||||
#Phantom Monster
|
|
||||||
1213
|
|
||||||
1213
|
|
||||||
#Serendib Efreet
|
|
||||||
1221
|
|
||||||
1221
|
|
||||||
#Sea Serpent
|
|
||||||
1220
|
|
||||||
1220
|
|
||||||
#Cockatrice
|
|
||||||
1238
|
|
||||||
#Craw Wurm
|
|
||||||
1239
|
|
||||||
#Elvish Archers
|
|
||||||
1242
|
|
||||||
#Giant Spider
|
|
||||||
1249
|
|
||||||
1249
|
|
||||||
#Grizzly Bears
|
|
||||||
1250
|
|
||||||
1250
|
|
||||||
#Scryb Sprites
|
|
||||||
1264
|
|
||||||
1264
|
|
||||||
1264
|
|
||||||
#Thicket Basilisk
|
|
||||||
1267
|
|
||||||
# (PSY) Timber Wolves not available any more, replaced with Scryb Sprites
|
|
||||||
#Timber Wolves
|
|
||||||
#1268
|
|
||||||
#Tsunami
|
|
||||||
1271
|
|
||||||
#Wall of Ice
|
|
||||||
1274
|
|
||||||
#War Mammoth
|
|
||||||
1277
|
|
||||||
1277
|
|
||||||
#Forest
|
|
||||||
1386
|
1386
|
||||||
1387
|
1387
|
||||||
1388
|
1388
|
||||||
@@ -73,7 +25,9 @@
|
|||||||
1386
|
1386
|
||||||
1387
|
1387
|
||||||
1388
|
1388
|
||||||
#Island
|
Giant Spider (RV) * 2
|
||||||
|
Grizzly Bears (RV) * 2
|
||||||
|
# RV Islands
|
||||||
1392
|
1392
|
||||||
1393
|
1393
|
||||||
1394
|
1394
|
||||||
@@ -86,3 +40,14 @@
|
|||||||
1392
|
1392
|
||||||
1393
|
1393
|
||||||
1394
|
1394
|
||||||
|
Lord of Atlantis (RV) * 3
|
||||||
|
Merfolk of the Pearl Trident (RV) * 4
|
||||||
|
Obsianus Golem (RV) * 2
|
||||||
|
Phantom Monster (RV) * 2
|
||||||
|
Scryb Sprites (RV) * 3
|
||||||
|
Sea Serpent (RV) * 2
|
||||||
|
Serendib Efreet (RV) * 2
|
||||||
|
Thicket Basilisk (RV) * 1
|
||||||
|
Tranquility (RV) * 1
|
||||||
|
Wall of Ice (RV) * 1
|
||||||
|
War Mammoth (RV) * 2
|
||||||
|
|||||||
@@ -1,25 +1,26 @@
|
|||||||
#NAME:Wrath
|
#NAME:Wrath
|
||||||
#DESC:O miserable of happy
|
#DESC:The truly wrathful person
|
||||||
#DESC:Is this the end
|
#DESC:harms themselves as much as
|
||||||
#DESC:Of this new glorious world
|
#DESC:their enemies
|
||||||
# Land(s)
|
#DESC:
|
||||||
Plains (8ED) * 21
|
#DESC:Win matches to unlock more
|
||||||
|
#DESC:opponents, sets and game modes
|
||||||
# Creature(s)
|
#HINT:combo hold(Armageddon|myhand)^cast(Armageddon|myhand)^restriction{type(creature|mybattlefield)~morethan~1}^totalmananeeded({3}{W})
|
||||||
|
#HINT:combo hold(Wrath of God|myhand)^cast(Wrath of God|myhand)^restriction{type(creature|opponentbattlefield)~morethan~2}^totalmananeeded({2}{W}{W})
|
||||||
|
Armageddon (VMA) * 4
|
||||||
|
Crusade (DDF) * 4
|
||||||
Guardians of Akrasa (ALA) * 4
|
Guardians of Akrasa (ALA) * 4
|
||||||
Paladin en-Vec (9ED) * 1
|
Paladin en-Vec (9ED) * 1
|
||||||
|
Plains (8ED) * 4
|
||||||
|
Plains (9ED) * 4
|
||||||
|
Plains (M10) * 4
|
||||||
|
Plains (ALA) * 4
|
||||||
|
Plains (DDF) * 4
|
||||||
|
Plains (10E) * 1
|
||||||
Savannah Lions (8ED) * 4
|
Savannah Lions (8ED) * 4
|
||||||
Serra Angel (8ED) * 4
|
Serra Angel (8ED) * 4
|
||||||
Sigiled Paladin (ALA) * 4
|
Sigiled Paladin (ALA) * 4
|
||||||
Skyhunter Skirmisher (5DN) * 3
|
Skyhunter Skirmisher (5DN) * 3
|
||||||
White Knight (M10) * 4
|
|
||||||
|
|
||||||
# Enchantment(s)
|
|
||||||
Crusade (DDF) * 4
|
|
||||||
|
|
||||||
# Instant(s)
|
|
||||||
Swords to Plowshares (DDF) * 4
|
Swords to Plowshares (DDF) * 4
|
||||||
|
White Knight (M10) * 4
|
||||||
# Sorcery(s)
|
|
||||||
Armageddon (VMA) * 4
|
|
||||||
Wrath of God (8ED) * 3
|
Wrath of God (8ED) * 3
|
||||||
@@ -1,58 +1,16 @@
|
|||||||
#Mill /Artifact Game for AI
|
|
||||||
#NAME:Inquisitor
|
#NAME:Inquisitor
|
||||||
#DESC:Black vises in Ivory Towers
|
#DESC:'The voice of nature is
|
||||||
#DESC:await you, when facing
|
#DESC:worthless in front of
|
||||||
#DESC:this artificially created army,
|
#DESC:the Inquisition'
|
||||||
#DESC:designed to completely stop
|
#DESC:Friedrich Schiller
|
||||||
#DESC:your progress, and then
|
#DESC:
|
||||||
#DESC:torture you to death.
|
#DESC:Win matches to unlock more
|
||||||
#4x Howling Mine
|
#DESC:opponents, sets and game modes
|
||||||
129598
|
Black Vise (RV) * 4
|
||||||
129598
|
Clockwork Beast (RV) * 4
|
||||||
129598
|
Dancing Scimitar (RV) * 4
|
||||||
129598
|
Howling Mine (10E) * 4
|
||||||
#4 x Black Vise
|
# 10E Islands
|
||||||
1097
|
|
||||||
1097
|
|
||||||
1097
|
|
||||||
1097
|
|
||||||
#4x Ivory Tower
|
|
||||||
1115
|
|
||||||
1115
|
|
||||||
1115
|
|
||||||
1115
|
|
||||||
#4x Obsianus Golem
|
|
||||||
1129
|
|
||||||
1129
|
|
||||||
1129
|
|
||||||
1129
|
|
||||||
#4xTower Gargoyle
|
|
||||||
174924
|
|
||||||
174924
|
|
||||||
174924
|
|
||||||
174924
|
|
||||||
#4xLiving Wall
|
|
||||||
1123
|
|
||||||
1123
|
|
||||||
1123
|
|
||||||
1123
|
|
||||||
#4x Dancing Scimitar
|
|
||||||
1104
|
|
||||||
1104
|
|
||||||
1104
|
|
||||||
1104
|
|
||||||
#4x Clockwork Beast
|
|
||||||
1101
|
|
||||||
1101
|
|
||||||
1101
|
|
||||||
1101
|
|
||||||
#4x Master of Etherium
|
|
||||||
175114
|
|
||||||
175114
|
|
||||||
175114
|
|
||||||
175114
|
|
||||||
#Lands
|
|
||||||
#10islands
|
|
||||||
129606
|
129606
|
||||||
129606
|
129606
|
||||||
129606
|
129606
|
||||||
@@ -63,15 +21,11 @@
|
|||||||
129607
|
129607
|
||||||
129608
|
129608
|
||||||
129609
|
129609
|
||||||
#7swamps
|
Ivory Tower (RV) * 4
|
||||||
129755
|
Living Wall (RV) * 4
|
||||||
129756
|
Master of Etherium (ALA) * 4
|
||||||
129757
|
Obsianus Golem (RV) * 4
|
||||||
129754
|
# 10E Plains
|
||||||
129755
|
|
||||||
129756
|
|
||||||
129757
|
|
||||||
#7Plains
|
|
||||||
129681
|
129681
|
||||||
129682
|
129682
|
||||||
129683
|
129683
|
||||||
@@ -79,3 +33,12 @@
|
|||||||
129681
|
129681
|
||||||
129682
|
129682
|
||||||
129683
|
129683
|
||||||
|
# 10E Swamps
|
||||||
|
129755
|
||||||
|
129756
|
||||||
|
129757
|
||||||
|
129754
|
||||||
|
129755
|
||||||
|
129756
|
||||||
|
129757
|
||||||
|
Tower Gargoyle (ALA) * 4
|
||||||
|
|||||||
@@ -1,22 +1,23 @@
|
|||||||
#NAME:Shatter
|
#NAME:Shatter
|
||||||
#DESC:See all your efforts shattered
|
#DESC:See your efforts shattered
|
||||||
#DESC:by the all-consuming power
|
#DESC:by righteous fury
|
||||||
#DESC:of righteous fury.
|
#DESC:
|
||||||
# Land(s)
|
#DESC:Win matches to unlock more
|
||||||
Mountain (8ED) * 12
|
#DESC:opponents, sets and game modes
|
||||||
Plains (8ED) * 12
|
|
||||||
|
|
||||||
# Creature(s)
|
|
||||||
Anaba Bodyguard (10E) * 4
|
Anaba Bodyguard (10E) * 4
|
||||||
Ancestor's Chosen (10E) * 4
|
Ancestor's Chosen (10E) * 4
|
||||||
Angelic Wall (10E) * 4
|
Angelic Wall (10E) * 4
|
||||||
Rock Badger (10E) * 4
|
|
||||||
Steadfast Guard (10E) * 4
|
|
||||||
Suntail Hawk (8ED) * 2
|
|
||||||
Thundering Giant (10E) * 4
|
|
||||||
|
|
||||||
# Instant(s)
|
|
||||||
Disenchant (M20) * 2
|
Disenchant (M20) * 2
|
||||||
Lightning Bolt (M10) * 4
|
Lightning Bolt (M10) * 4
|
||||||
|
Mountain (10E) * 4
|
||||||
|
Mountain (8ED) * 4
|
||||||
|
Mountain (M10) * 4
|
||||||
|
Plains (10E) * 4
|
||||||
|
Plains (8ED) * 4
|
||||||
|
Plains (M10) * 4
|
||||||
|
Rock Badger (10E) * 4
|
||||||
Shatter (8ED) * 2
|
Shatter (8ED) * 2
|
||||||
|
Steadfast Guard (10E) * 4
|
||||||
|
Suntail Hawk (8ED) * 2
|
||||||
Tempest of Light (MRD) * 2
|
Tempest of Light (MRD) * 2
|
||||||
|
Thundering Giant (10E) * 4
|
||||||
|
|||||||
@@ -3,219 +3,9 @@ author=Wagic Team
|
|||||||
name=Commander 2021
|
name=Commander 2021
|
||||||
orderindex=COM-P.C21
|
orderindex=COM-P.C21
|
||||||
year=2021-04-23
|
year=2021-04-23
|
||||||
total=371
|
total=410
|
||||||
[/meta]
|
[/meta]
|
||||||
[card]
|
[card]
|
||||||
primitive=Myr
|
|
||||||
id=-519288
|
|
||||||
rarity=T
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
primitive=Eldrazi
|
|
||||||
id=-519281
|
|
||||||
rarity=T
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
primitive=Saproling
|
|
||||||
id=-519276
|
|
||||||
rarity=T
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
primitive=Spirit
|
|
||||||
id=-519265
|
|
||||||
rarity=T
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
primitive=Elemental
|
|
||||||
id=-519246
|
|
||||||
rarity=T
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
primitive=Elephant
|
|
||||||
id=-519242
|
|
||||||
rarity=T
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
primitive=Beast
|
|
||||||
id=-519238
|
|
||||||
rarity=T
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
primitive=Elephant
|
|
||||||
id=-519231
|
|
||||||
rarity=T
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
primitive=Hydra
|
|
||||||
id=-519229
|
|
||||||
rarity=T
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
primitive=Insect
|
|
||||||
id=-519228
|
|
||||||
rarity=T
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
primitive=Insect
|
|
||||||
id=-519227
|
|
||||||
rarity=T
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
primitive=Wurm
|
|
||||||
id=-519225
|
|
||||||
rarity=T
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
primitive=Beast
|
|
||||||
id=-519223
|
|
||||||
rarity=T
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
primitive=Beast
|
|
||||||
id=-519221
|
|
||||||
rarity=T
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
primitive=Thopter
|
|
||||||
id=-519216
|
|
||||||
rarity=T
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
primitive=Thopter
|
|
||||||
id=-519212
|
|
||||||
rarity=T
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
primitive=Zombie
|
|
||||||
id=-519173
|
|
||||||
rarity=T
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
primitive=Drake
|
|
||||||
id=-519166
|
|
||||||
rarity=T
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
primitive=Kraken
|
|
||||||
id=-519162
|
|
||||||
rarity=T
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
primitive=Lizard
|
|
||||||
id=-519161
|
|
||||||
rarity=T
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
primitive=Construct
|
|
||||||
id=-519157
|
|
||||||
rarity=T
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
primitive=Boar
|
|
||||||
id=-519153
|
|
||||||
rarity=T
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
primitive=Horror
|
|
||||||
id=-519129
|
|
||||||
rarity=T
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
primitive=Eldrazi
|
|
||||||
id=-519117
|
|
||||||
rarity=T
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
primitive=Golem
|
|
||||||
id=-518475
|
|
||||||
rarity=T
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
primitive=Fractal
|
|
||||||
id=-518473
|
|
||||||
rarity=T
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
primitive=Fractal
|
|
||||||
id=-518468
|
|
||||||
rarity=T
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
primitive=Inkling
|
|
||||||
id=-518467
|
|
||||||
rarity=T
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
primitive=Beast
|
|
||||||
id=-518465
|
|
||||||
rarity=T
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
primitive=Fractal
|
|
||||||
id=-518463
|
|
||||||
rarity=T
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
primitive=Pest
|
|
||||||
id=-518461
|
|
||||||
rarity=T
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
primitive=Fractal
|
|
||||||
id=-518460
|
|
||||||
rarity=T
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
primitive=Fractal
|
|
||||||
id=-518457
|
|
||||||
rarity=T
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
primitive=Demon
|
|
||||||
id=-518441
|
|
||||||
rarity=T
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
primitive=Inkling
|
|
||||||
id=-518436
|
|
||||||
rarity=T
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
primitive=Pest
|
|
||||||
id=-518432
|
|
||||||
rarity=T
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
primitive=Kraken
|
|
||||||
id=-518429
|
|
||||||
rarity=T
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
primitive=Target
|
|
||||||
id=-518422
|
|
||||||
rarity=T
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
primitive=Construct
|
|
||||||
id=-518411
|
|
||||||
rarity=T
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
primitive=Inkling
|
|
||||||
id=-518410
|
|
||||||
rarity=T
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
primitive=Elemental
|
|
||||||
id=-518310
|
|
||||||
rarity=T
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
primitive=Inkling
|
|
||||||
id=-518308
|
|
||||||
rarity=T
|
|
||||||
[/card]
|
|
||||||
[card]
|
|
||||||
primitive=Breena, the Demagogue
|
primitive=Breena, the Demagogue
|
||||||
id=518307
|
id=518307
|
||||||
rarity=M
|
rarity=M
|
||||||
@@ -938,7 +728,7 @@ rarity=C
|
|||||||
[card]
|
[card]
|
||||||
primitive=Greed
|
primitive=Greed
|
||||||
id=519180
|
id=519180
|
||||||
rarity=R
|
rarity=U
|
||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
primitive=Infernal Offering
|
primitive=Infernal Offering
|
||||||
@@ -1703,7 +1493,7 @@ rarity=R
|
|||||||
[card]
|
[card]
|
||||||
primitive=Lonely Sandbar
|
primitive=Lonely Sandbar
|
||||||
id=519333
|
id=519333
|
||||||
rarity=C
|
rarity=U
|
||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
primitive=Lumbering Falls
|
primitive=Lumbering Falls
|
||||||
@@ -1788,7 +1578,7 @@ rarity=R
|
|||||||
[card]
|
[card]
|
||||||
primitive=Secluded Steppe
|
primitive=Secluded Steppe
|
||||||
id=519350
|
id=519350
|
||||||
rarity=C
|
rarity=U
|
||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
primitive=Shivan Reef
|
primitive=Shivan Reef
|
||||||
@@ -1851,6 +1641,406 @@ id=519362
|
|||||||
rarity=R
|
rarity=R
|
||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
|
primitive=Breena, the Demagogue
|
||||||
|
id=521597
|
||||||
|
rarity=M
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Felisa, Fang of Silverquill
|
||||||
|
id=521598
|
||||||
|
rarity=M
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Veyran, Voice of Duality
|
||||||
|
id=521599
|
||||||
|
rarity=M
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Zaffai, Thunder Conductor
|
||||||
|
id=521600
|
||||||
|
rarity=M
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Gyome, Master Chef
|
||||||
|
id=521601
|
||||||
|
rarity=M
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Willowdusk, Essence Seer
|
||||||
|
id=521602
|
||||||
|
rarity=M
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Alibou, Ancient Witness
|
||||||
|
id=521603
|
||||||
|
rarity=M
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Osgir, the Reconstructor
|
||||||
|
id=521604
|
||||||
|
rarity=M
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Adrix and Nev, Twincasters
|
||||||
|
id=521605
|
||||||
|
rarity=M
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Esix, Fractal Bloom
|
||||||
|
id=521606
|
||||||
|
rarity=M
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Angel of the Ruins
|
||||||
|
id=521607
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Archaeomancer's Map
|
||||||
|
id=521608
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Bronze Guardian
|
||||||
|
id=521609
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Combat Calligrapher
|
||||||
|
id=521610
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Digsite Engineer
|
||||||
|
id=521611
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Excavation Technique
|
||||||
|
id=521612
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Guardian Archon
|
||||||
|
id=521613
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Losheel, Clockwork Scholar
|
||||||
|
id=521614
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Monologue Tax
|
||||||
|
id=521615
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Nils, Discipline Enforcer
|
||||||
|
id=521616
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Promise of Loyalty
|
||||||
|
id=521617
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Scholarship Sponsor
|
||||||
|
id=521618
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Commander's Insight
|
||||||
|
id=521619
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Curiosity Crafter
|
||||||
|
id=521620
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Dazzling Sphinx
|
||||||
|
id=521621
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Deekah, Fractal Theorist
|
||||||
|
id=521622
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Inspiring Refrain
|
||||||
|
id=521623
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Muse Vortex
|
||||||
|
id=521624
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Octavia, Living Thesis
|
||||||
|
id=521625
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Perplexing Test
|
||||||
|
id=521626
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Replication Technique
|
||||||
|
id=521627
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Sly Instigator
|
||||||
|
id=521628
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Spawning Kraken
|
||||||
|
id=521629
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Theoretical Duplication
|
||||||
|
id=521630
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Author of Shadows
|
||||||
|
id=521631
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Blight Mound
|
||||||
|
id=521632
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Bold Plagiarist
|
||||||
|
id=521633
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Cunning Rhetoric
|
||||||
|
id=521634
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Essence Pulse
|
||||||
|
id=521635
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Fain, the Broker
|
||||||
|
id=521636
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Incarnation Technique
|
||||||
|
id=521637
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Keen Duelist
|
||||||
|
id=521638
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Marshland Bloodcaster
|
||||||
|
id=521639
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Stinging Study
|
||||||
|
id=521640
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Tivash, Gloom Summoner
|
||||||
|
id=521641
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Veinwitch Coven
|
||||||
|
id=521642
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Audacious Reshapers
|
||||||
|
id=521643
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Battlemage's Bracers
|
||||||
|
id=521644
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Creative Technique
|
||||||
|
id=521645
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Cursed Mirror
|
||||||
|
id=521646
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Fiery Encore
|
||||||
|
id=521647
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Inferno Project
|
||||||
|
id=521648
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Laelia, the Blade Reforged
|
||||||
|
id=521649
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Radiant Performer
|
||||||
|
id=521650
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Rionya, Fire Dancer
|
||||||
|
id=521651
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Rousing Refrain
|
||||||
|
id=521652
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Ruin Grinder
|
||||||
|
id=521653
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Surge to Victory
|
||||||
|
id=521654
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Blossoming Bogbeast
|
||||||
|
id=521655
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Ezzaroot Channeler
|
||||||
|
id=521656
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Fractal Harness
|
||||||
|
id=521657
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Guardian Augmenter
|
||||||
|
id=521658
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Healing Technique
|
||||||
|
id=521659
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Paradox Zone
|
||||||
|
id=521660
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Pest Infestation
|
||||||
|
id=521661
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Ruxa, Patient Professor
|
||||||
|
id=521662
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Sequence Engine
|
||||||
|
id=521663
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Sproutback Trudge
|
||||||
|
id=521664
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Trudge Garden
|
||||||
|
id=521665
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Yedora, Grave Gardener
|
||||||
|
id=521666
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Inkshield
|
||||||
|
id=521667
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Oversimplify
|
||||||
|
id=521668
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Reinterpret
|
||||||
|
id=521669
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Revival Experiment
|
||||||
|
id=521670
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Wake the Past
|
||||||
|
id=521671
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Elementalist's Palette
|
||||||
|
id=521672
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Geometric Nexus
|
||||||
|
id=521673
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Tempting Contract
|
||||||
|
id=521674
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Triplicate Titan
|
||||||
|
id=521675
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Witch's Clinic
|
||||||
|
id=521676
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
primitive=Tranquil Thicket
|
primitive=Tranquil Thicket
|
||||||
id=519363
|
id=519363
|
||||||
rarity=C
|
rarity=C
|
||||||
|
|||||||
@@ -362,7 +362,7 @@ rarity=U
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
primitive=Nighteyes the Desecrator
|
primitive=Nighteyes the Desecrator
|
||||||
id=446808
|
id=446807
|
||||||
rarity=T
|
rarity=T
|
||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
|
|||||||
@@ -1191,7 +1191,7 @@ rarity=M
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
primitive=Ajani, Nacatl Avenger
|
primitive=Ajani, Nacatl Avenger
|
||||||
id=661755
|
id=661754
|
||||||
rarity=T
|
rarity=T
|
||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
@@ -1291,7 +1291,7 @@ rarity=M
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
primitive=Ral, Leyline Prodigy
|
primitive=Ral, Leyline Prodigy
|
||||||
id=661775
|
id=661774
|
||||||
rarity=T
|
rarity=T
|
||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
@@ -1331,7 +1331,7 @@ rarity=M
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
primitive=Grist, the Plague Swarm
|
primitive=Grist, the Plague Swarm
|
||||||
id=661783
|
id=661782
|
||||||
rarity=T
|
rarity=T
|
||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,136 @@
|
|||||||
|
[meta]
|
||||||
|
author=Wagic Team
|
||||||
|
name=Ugin's Fate
|
||||||
|
year=2015-01-17
|
||||||
|
total=26
|
||||||
|
[/meta]
|
||||||
|
[card]
|
||||||
|
primitive=Ugin, the Spirit Dragon
|
||||||
|
id=394086
|
||||||
|
rarity=M
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Mastery of the Unseen
|
||||||
|
id=394079
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Smite the Monstrous
|
||||||
|
id=394083
|
||||||
|
rarity=C
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Soul Summons
|
||||||
|
id=394084
|
||||||
|
rarity=C
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Watcher of the Roost
|
||||||
|
id=394088
|
||||||
|
rarity=U
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Jeskai Infiltrator
|
||||||
|
id=394078
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Reality Shift
|
||||||
|
id=394081
|
||||||
|
rarity=U
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Mystic of the Hidden Way
|
||||||
|
id=394080
|
||||||
|
rarity=C
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Write into Being
|
||||||
|
id=394090
|
||||||
|
rarity=C
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Debilitating Injury
|
||||||
|
id=394070
|
||||||
|
rarity=C
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Grim Haruspex
|
||||||
|
id=394075
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Sultai Emissary
|
||||||
|
id=394085
|
||||||
|
rarity=C
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Ruthless Ripper
|
||||||
|
id=394082
|
||||||
|
rarity=U
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Ainok Tracker
|
||||||
|
id=394065
|
||||||
|
rarity=C
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Arc Lightning
|
||||||
|
id=394068
|
||||||
|
rarity=U
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Fierce Invocation
|
||||||
|
id=394072
|
||||||
|
rarity=C
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Jeering Instigator
|
||||||
|
id=394077
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Arashin War Beast
|
||||||
|
id=394067
|
||||||
|
rarity=U
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Formless Nurturing
|
||||||
|
id=394073
|
||||||
|
rarity=C
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Dragonscale Boon
|
||||||
|
id=394071
|
||||||
|
rarity=C
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Wildcall
|
||||||
|
id=394089
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Hewed Stone Retainers
|
||||||
|
id=394076
|
||||||
|
rarity=U
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Ugin's Construct
|
||||||
|
id=394087
|
||||||
|
rarity=U
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Altar of the Brood
|
||||||
|
id=394066
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Briber's Purse
|
||||||
|
id=394069
|
||||||
|
rarity=U
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
|
primitive=Ghostfire Blade
|
||||||
|
id=394074
|
||||||
|
rarity=R
|
||||||
|
[/card]
|
||||||
@@ -226,7 +226,7 @@
|
|||||||
#AUTO_DEFINE _FIGHT_ transforms((,newability[target(creature|opponentbattlefield) dynamicability<!powerstrike eachother!>])) oneshot
|
#AUTO_DEFINE _FIGHT_ transforms((,newability[target(creature|opponentbattlefield) dynamicability<!powerstrike eachother!>])) oneshot
|
||||||
|
|
||||||
# Must be blocked this turn if able
|
# Must be blocked this turn if able
|
||||||
#AUTO_DEFINE _MUST_BE_BLOCKD_ newability[@combat(attacking) source(this):ability$! notatarget(creature|myBattlefield) transforms((,newability[mustblock])) ueot!$ opponent]
|
#AUTO_DEFINE _MUST_BE_BLOCKD_ newability[@combat(attacking) source(this):ability$! notatarget(creature[-tapped]|myBattlefield) transforms((,newability[mustblock])) ueot!$ opponent]
|
||||||
|
|
||||||
# Suspect it. It has menace and can't block.
|
# Suspect it. It has menace and can't block.
|
||||||
#AUTO_DEFINE _SUSPECT_IT_ name(Suspect it) transforms((suspect,menace,cantblock)) forever
|
#AUTO_DEFINE _SUSPECT_IT_ name(Suspect it) transforms((suspect,menace,cantblock)) forever
|
||||||
@@ -240,7 +240,7 @@
|
|||||||
#AUTO_DEFINE _ENLIST_ @combat(attacking) source(this) restriction{type(creature[-fresh]|mybattlefield)~morethan~0}:transforms((,newability[{T(creature[-attacking;-fresh]|mybattlefield)}:storedpower/0 ueot limit:1])) ueot
|
#AUTO_DEFINE _ENLIST_ @combat(attacking) source(this) restriction{type(creature[-fresh]|mybattlefield)~morethan~0}:transforms((,newability[{T(creature[-attacking;-fresh]|mybattlefield)}:storedpower/0 ueot limit:1])) ueot
|
||||||
|
|
||||||
# Add one mana of any color.
|
# Add one mana of any color.
|
||||||
#AUTO_DEFINE _MANAOFANYCOLOR_ ability$! choice Add{W} _ choice Add{U} _ choice Add{B} _ choice Add{R} _ choice Add{G} !$ controller
|
#AUTO_DEFINE _MANAOFANYCOLOR_ name(Add one mana of any color) ability$! choice Add{W} _ choice Add{U} _ choice Add{B} _ choice Add{R} _ choice Add{G} !$ controller
|
||||||
|
|
||||||
# Manifest dread. Look at the top two cards of your library. Put one onto the battlefield face down as a 2/2 creature and the other into your graveyard. Turn it face up any time for its mana cost if it's a creature card.
|
# Manifest dread. Look at the top two cards of your library. Put one onto the battlefield face down as a 2/2 creature and the other into your graveyard. Turn it face up any time for its mana cost if it's a creature card.
|
||||||
#AUTO_DEFINE _MANIFEST_DREAD_ name(Manifest dread) reveal:2 optionone name(Manifest) target(*|reveal) manifest optiononeend optiontwo all(*|reveal) moveto(mygraveyard) optiontwoend revealend
|
#AUTO_DEFINE _MANIFEST_DREAD_ name(Manifest dread) reveal:2 optionone name(Manifest) target(*|reveal) manifest optiononeend optiontwo all(*|reveal) moveto(mygraveyard) optiontwoend revealend
|
||||||
@@ -249,8 +249,31 @@
|
|||||||
|
|
||||||
#AUTO_DEFINE _CREW1_ {crew(other creature[power>=1]|myBattlefield)}:name(crew 1 [1 creature]) becomes(Artifact Creature) ueot restriction{type(other creature[-tapped;power>=1]|mybattlefield)~morethan~0,compare(crewtotalpower)~morethan~0}
|
#AUTO_DEFINE _CREW1_ {crew(other creature[power>=1]|myBattlefield)}:name(crew 1 [1 creature]) becomes(Artifact Creature) ueot restriction{type(other creature[-tapped;power>=1]|mybattlefield)~morethan~0,compare(crewtotalpower)~morethan~0}
|
||||||
|
|
||||||
|
#AUTO_DEFINE _CREW2_ {crew(other creature[power>=2]|myBattlefield)}:name(crew 2 [1 creature]) becomes(Artifact Creature) ueot restriction{type(other creature[-tapped;power>=2]|mybattlefield)~morethan~0,compare(crewtotalpower)~morethan~1}
|
||||||
|
|
||||||
|
#AUTO_DEFINE _CREW2COMPLEMENT_ {crew(other creature[power>=1]|myBattlefield)}{crew(other creature[power>=1]|myBattlefield)}:name(crew 2 [2 creature]) becomes(Artifact Creature) ueot restriction{type(other creature[-tapped;power>=1]|mybattlefield)~morethan~1,compare(crewtotalpower)~morethan~1}
|
||||||
|
|
||||||
# Endure
|
# Endure
|
||||||
#AUTO_DEFINE _ENDURE_($c) transforms((,newability[choice counter(1/1.$c)],newability[choice create(Spirit:Creature:$c/$c:white)])) ueot
|
#AUTO_DEFINE _ENDURE1_ transforms((,newability[choice counter(1/1)],newability[choice create(Spirit:Creature:1/1:white)])) ueot
|
||||||
|
#AUTO_DEFINE _ENDURE2_ transforms((,newability[choice counter(1/1.2)],newability[choice create(Spirit:Creature:2/2:white)])) ueot
|
||||||
|
#AUTO_DEFINE _ENDURE3_ transforms((,newability[choice counter(1/1.3)],newability[choice create(Spirit:Creature:3/3:white)])) ueot
|
||||||
|
#AUTO_DEFINE _ENDURE4_ transforms((,newability[choice counter(1/1.4)],newability[choice create(Spirit:Creature:4/4:white)])) ueot
|
||||||
|
#AUTO_DEFINE _ENDURE5_ transforms((,newability[choice counter(1/1.5)],newability[choice create(Spirit:Creature:5/5:white)])) ueot
|
||||||
|
#AUTO_DEFINE _ENDURE6_ transforms((,newability[choice counter(1/1.6)],newability[choice create(Spirit:Creature:6/6:white)])) ueot
|
||||||
|
#AUTO_DEFINE _ENDURE7_ transforms((,newability[choice counter(1/1.7)],newability[choice create(Spirit:Creature:7/7:white)])) ueot
|
||||||
|
#AUTO_DEFINE _ENDURE8_ transforms((,newability[choice counter(1/1.8)],newability[choice create(Spirit:Creature:8/8:white)])) ueot
|
||||||
|
#AUTO_DEFINE _ENDURE9_ transforms((,newability[choice counter(1/1.9)],newability[choice create(Spirit:Creature:9/9:white)])) ueot
|
||||||
|
#AUTO_DEFINE _ENDURE10_ transforms((,newability[choice counter(1/1.10)],newability[choice create(Spirit:Creature:10/10:white)])) ueot
|
||||||
|
#AUTO_DEFINE _ENDURE11_ transforms((,newability[choice counter(1/1.11)],newability[choice create(Spirit:Creature:11/11:white)])) ueot
|
||||||
|
#AUTO_DEFINE _ENDURE12_ transforms((,newability[choice counter(1/1.12)],newability[choice create(Spirit:Creature:12/12:white)])) ueot
|
||||||
|
#AUTO_DEFINE _ENDURE13_ transforms((,newability[choice counter(1/1.13)],newability[choice create(Spirit:Creature:13/13:white)])) ueot
|
||||||
|
#AUTO_DEFINE _ENDURE14_ transforms((,newability[choice counter(1/1.14)],newability[choice create(Spirit:Creature:14/14:white)])) ueot
|
||||||
|
#AUTO_DEFINE _ENDURE15_ transforms((,newability[choice counter(1/1.15)],newability[choice create(Spirit:Creature:15/15:white)])) ueot
|
||||||
|
#AUTO_DEFINE _ENDURE16_ transforms((,newability[choice counter(1/1.16)],newability[choice create(Spirit:Creature:16/16:white)])) ueot
|
||||||
|
#AUTO_DEFINE _ENDURE17_ transforms((,newability[choice counter(1/1.17)],newability[choice create(Spirit:Creature:17/17:white)])) ueot
|
||||||
|
#AUTO_DEFINE _ENDURE18_ transforms((,newability[choice counter(1/1.18)],newability[choice create(Spirit:Creature:18/18:white)])) ueot
|
||||||
|
#AUTO_DEFINE _ENDURE19_ transforms((,newability[choice counter(1/1.19)],newability[choice create(Spirit:Creature:19/19:white)])) ueot
|
||||||
|
#AUTO_DEFINE _ENDURE20_ transforms((,newability[choice counter(1/1.20)],newability[choice create(Spirit:Creature:20/20:white)])) ueot
|
||||||
|
|
||||||
# Flurry
|
# Flurry
|
||||||
#AUTO_DEFINE _FLURRY_ @movedto(*|mystack) restriction{thisturn(*|mystack)~equalto~1}:
|
#AUTO_DEFINE _FLURRY_ @movedto(*|mystack) restriction{thisturn(*|mystack)~equalto~1}:
|
||||||
@@ -352,13 +375,13 @@
|
|||||||
#AUTO_DEFINE _ZOMBIETOKEN_ create(zombie:creature zombie:2/2:black)
|
#AUTO_DEFINE _ZOMBIETOKEN_ create(zombie:creature zombie:2/2:black)
|
||||||
|
|
||||||
# Clue Token
|
# Clue Token
|
||||||
#AUTO_DEFINE _CLUE_ token(Clue,Clue Artifact,0/0) and!( transforms((,newability[{2}{S}:draw:1])) forever )!
|
#AUTO_DEFINE _CLUE_ token(Clue^Clue Artifact^0/0) and!( transforms((,newability[{2}{S}:draw:1])) forever )!
|
||||||
|
|
||||||
# Food Token
|
# Food Token
|
||||||
#AUTO_DEFINE _FOOD_ token(Food,Food Artifact,0/0) and!( transforms((,newability[{2}{T}{S}:life:3])) forever )!
|
#AUTO_DEFINE _FOOD_ token(Food^Food Artifact^0/0) and!( transforms((,newability[{2}{T}{S}:life:3])) forever )!
|
||||||
|
|
||||||
# Treasure Token
|
# Treasure Token
|
||||||
#AUTO_DEFINE _TREASURE_ token(Treasure,Treasure Artifact,0/0) and!( transforms((,newability[{T}{S}:Add{W}],newability[{T}{S}:Add{U}],newability[{T}{S}:Add{B}],newability[{T}{S}:Add{R}],newability[{T}{S}:Add{G}])) forever )!
|
#AUTO_DEFINE _TREASURE_ token(Treasure^Treasure Artifact^0/0) and!( transforms((,newability[{T}{S}:Add{W}],newability[{T}{S}:Add{U}],newability[{T}{S}:Add{B}],newability[{T}{S}:Add{R}],newability[{T}{S}:Add{G}])) forever )!
|
||||||
|
|
||||||
# Vehicle Token
|
# Vehicle Token
|
||||||
#AUTO_DEFINE _VEHICLE_ token(Vehicle,Artifact Vehicle,3/2) and!( transforms((,newability[{crew(other creature[power>=1]|myBattlefield)}:name(crew 1 [1 creature]) becomes(Artifact Creature) ueot restriction{type(other creature[-tapped;power>=1]|mybattlefield)~morethan~0,compare(crewtotalpower)~morethan~0}])) forever )!
|
#AUTO_DEFINE _VEHICLE_ token(Vehicle^Artifact Vehicle^3/2) and!( transforms((,newability[{crew(other creature[power>=1]|myBattlefield)}:name(crew 1 [1 creature]) becomes(Artifact Creature) ueot restriction{type(other creature[-tapped;power>=1]|mybattlefield)~morethan~0,compare(crewtotalpower)~morethan~0}])) forever )!
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
|||||||
#Planeswalkers Primitives Pack for Wagic the Homebrew.
|
#Planeswalkers Primitives Pack for Wagic the Homebrew.
|
||||||
#Please keep these card alphabetized, and try to have the "name=" line at the top of each card
|
#Please keep these card alphabetized, and try to have the "name=" line at the top of each card
|
||||||
#Sorted this programmatically - Thanks to Vitty85 28-03-2024
|
#Sorted this programmatically - Thanks to Vitty85 29-04-2024
|
||||||
[card]
|
[card]
|
||||||
name=Abian, Luvion Usurper
|
name=Abian, Luvion Usurper
|
||||||
auto=counter(0/0,5,loyalty)
|
auto=counter(0/0,5,loyalty)
|
||||||
@@ -192,7 +192,7 @@ subtype=Aminatou
|
|||||||
name=Angrath, Captain of Chaos
|
name=Angrath, Captain of Chaos
|
||||||
auto=counter(0/0,5,loyalty)
|
auto=counter(0/0,5,loyalty)
|
||||||
auto=lord(creature|myBattlefield) menace
|
auto=lord(creature|myBattlefield) menace
|
||||||
auto={C(0/0,-2,Loyalty)}:name(-2: Amass 2) _AMASSZOMBIE2_
|
auto={C(0/0,-2,Loyalty)}:name(-2: Amass 2) ability$! _AMASSZOMBIE2_ !$ controller
|
||||||
text=Creatures you control have menace. -- -2: Amass 2. (Put two +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.)
|
text=Creatures you control have menace. -- -2: Amass 2. (Put two +1/+1 counters on an Army you control. If you don't control one, create a 0/0 black Zombie Army creature token first.)
|
||||||
mana={2}{BR}{BR}
|
mana={2}{BR}{BR}
|
||||||
type=Legendary Planeswalker
|
type=Legendary Planeswalker
|
||||||
@@ -452,7 +452,7 @@ subtype=Chandra
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Chandra, Awakened Inferno
|
name=Chandra, Awakened Inferno
|
||||||
auto=nofizzle
|
abilities=nofizzle
|
||||||
auto=counter(0/0,6,loyalty)
|
auto=counter(0/0,6,loyalty)
|
||||||
auto={C(0/0,2,Loyalty)}:name(+2: Emblem: "1 damage each upkeep") emblem transforms((,newability[@each opponent upkeep:damage:1 opponent])) forever dontremove
|
auto={C(0/0,2,Loyalty)}:name(+2: Emblem: "1 damage each upkeep") emblem transforms((,newability[@each opponent upkeep:damage:1 opponent])) forever dontremove
|
||||||
auto={C(0/0,-3,Loyalty)}:name(-3: Deals 3 damage to each non-elemental) damage:3 all(creature[-elemental])
|
auto={C(0/0,-3,Loyalty)}:name(-3: Deals 3 damage to each non-elemental) damage:3 all(creature[-elemental])
|
||||||
@@ -983,6 +983,18 @@ type=Legendary Planeswalker
|
|||||||
subtype=Elspeth
|
subtype=Elspeth
|
||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
|
name=Elspeth, Storm Slayer
|
||||||
|
auto=counter(0/0,5,loyalty)
|
||||||
|
auto=@tokencreated(*|myBattlefield):name(Double the token) all(trigger) clone options(notrigger)
|
||||||
|
auto={C(0/0,+1,Loyalty)}:create(soldier:creature soldier:1/1:white)
|
||||||
|
auto={C(0/0,0,Loyalty)}:all(creature|myBattlefield) transforms((,newability[counter(1/1)],flying)) uynt
|
||||||
|
auto={C(0/0,-3,Loyalty)}:destroy target(creature[manacost>=3]|opponentBattlefield)
|
||||||
|
text=If one or more tokens would be created under your control, twice that many of those tokens are created instead. -- [+1]: Create a 1/1 white Soldier creature token. -- [0]: Put a +1/+1 counter on each creature you control. Those creatures gain flying until your next turn. -- [-3]: Destroy target creature an opponent controls with mana value 3 or greater.
|
||||||
|
mana={3}{W}{W}
|
||||||
|
type=Legendary Planeswalker
|
||||||
|
subtype=Elspeth
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
name=Elspeth, Sun's Champion
|
name=Elspeth, Sun's Champion
|
||||||
auto=counter(0/0,4,loyalty)
|
auto=counter(0/0,4,loyalty)
|
||||||
auto={C(0/0,1,Loyalty)}:name(+1: Create three 1/1 Soldier) _SOLDIERTOKEN_*3
|
auto={C(0/0,1,Loyalty)}:name(+1: Create three 1/1 Soldier) _SOLDIERTOKEN_*3
|
||||||
@@ -1558,7 +1570,7 @@ subtype=Jace
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Jace, the Perfected Mind
|
name=Jace, the Perfected Mind
|
||||||
auto=if paid(alternative) then counter(0/0,3,loyalty)
|
auto=alternative counter(0/0,3,loyalty)
|
||||||
auto=ifnot paid(alternative) then counter(0/0,5,loyalty)
|
auto=ifnot paid(alternative) then counter(0/0,5,loyalty)
|
||||||
auto={C(0/0,+1,Loyalty)}:name(+1: Target creature gains -3/-0) target(creature|battlefield) transforms((,newability[-3/-0])) uynt
|
auto={C(0/0,+1,Loyalty)}:name(+1: Target creature gains -3/-0) target(creature|battlefield) transforms((,newability[-3/-0])) uynt
|
||||||
auto={C(0/0,+1,Loyalty)}:name(+1: Don't target any creature) donothing
|
auto={C(0/0,+1,Loyalty)}:name(+1: Don't target any creature) donothing
|
||||||
@@ -1725,7 +1737,7 @@ name=Kaito, Bane of Nightmares
|
|||||||
auto=counter(0/0,4,loyalty)
|
auto=counter(0/0,4,loyalty)
|
||||||
autohand={1}{U}{B}{N}:ninjutsu
|
autohand={1}{U}{B}{N}:ninjutsu
|
||||||
auto=this(variable{controllerturn}>0) becomes(Ninja Creature,3/4,hexproof)
|
auto=this(variable{controllerturn}>0) becomes(Ninja Creature,3/4,hexproof)
|
||||||
auto={C(0/0,+1,Loyalty)}:name(emblem) emblem transforms((,newability[all(ninja|myBattlefield) 1/1])) forever dontremove
|
auto={C(0/0,+1,Loyalty)}:name(emblem) emblem transforms((,newability[lord(ninja|myBattlefield) 1/1])) forever dontremove
|
||||||
auto={C(0/0,0,Loyalty)}:name(Surveil 2) reveal:psurveiloffsetplus2plusend optionone name(put in graveyard) target(<upto:psurveiloffsetplus2plusend>*|reveal) moveto(ownergraveyard) optiononeend optiontwo name(put in library) target(<psurveiloffsetplus2plusend>*|reveal) moveto(ownerlibrary) optiontwoend afterrevealed all(*[zpos=1]|mylibrary) transforms((,newability[draw:1 controller])) oneshot afterrevealedend revealend
|
auto={C(0/0,0,Loyalty)}:name(Surveil 2) reveal:psurveiloffsetplus2plusend optionone name(put in graveyard) target(<upto:psurveiloffsetplus2plusend>*|reveal) moveto(ownergraveyard) optiononeend optiontwo name(put in library) target(<psurveiloffsetplus2plusend>*|reveal) moveto(ownerlibrary) optiontwoend afterrevealed all(*[zpos=1]|mylibrary) transforms((,newability[draw:1 controller])) oneshot afterrevealedend revealend
|
||||||
auto={C(0/0,-2,Loyalty)}:name(-2 Tap target creature) target(creature) transforms((,newability[tap],newability[counter(0/0.2.Stun)]))
|
auto={C(0/0,-2,Loyalty)}:name(-2 Tap target creature) target(creature) transforms((,newability[tap],newability[counter(0/0.2.Stun)]))
|
||||||
text=Ninjutsu {1}{U}{B} ({1}{U}{B}, Return an unblocked attacker you control to hand: Put this card onto the battlefield from your hand tapped and attacking.) -- During your turn, as long as Kaito has one or more loyalty counters on him, he's a 3/4 Ninja creature and has hexproof. -- [+1]: You get an emblem with "Ninjas you control get +1/+1." -- [0]: Surveil 2. Then draw a card for each opponent who lost life this turn. -- [-2]: Tap target creature. Put two stun counters on it.
|
text=Ninjutsu {1}{U}{B} ({1}{U}{B}, Return an unblocked attacker you control to hand: Put this card onto the battlefield from your hand tapped and attacking.) -- During your turn, as long as Kaito has one or more loyalty counters on him, he's a 3/4 Ninja creature and has hexproof. -- [+1]: You get an emblem with "Ninjas you control get +1/+1." -- [0]: Surveil 2. Then draw a card for each opponent who lost life this turn. -- [-2]: Tap target creature. Put two stun counters on it.
|
||||||
@@ -2179,7 +2191,7 @@ subtype=Windgrace
|
|||||||
[card]
|
[card]
|
||||||
name=Lukka, Bound to Ruin
|
name=Lukka, Bound to Ruin
|
||||||
auto=ifnot paid(alternative) then counter(0/0,5,loyalty)
|
auto=ifnot paid(alternative) then counter(0/0,5,loyalty)
|
||||||
auto=if paid(alternative) then counter(0/0,3,loyalty)
|
auto=alternative counter(0/0,3,loyalty)
|
||||||
auto=aslongas(creature|mybattlefield,myrestrictedcastingzone) {C(0/0,+1,Loyalty)}:name(+1: Add mana) name(+1: Add mana) add{R}{G}
|
auto=aslongas(creature|mybattlefield,myrestrictedcastingzone) {C(0/0,+1,Loyalty)}:name(+1: Add mana) name(+1: Add mana) add{R}{G}
|
||||||
auto={C(0/0,-1,Loyalty)}:name(-1: Create beast) token(Phyrexian Beast,Creature Phyrexian Beast,3/3,green,poisontoxic)
|
auto={C(0/0,-1,Loyalty)}:name(-1: Create beast) token(Phyrexian Beast,Creature Phyrexian Beast,3/3,green,poisontoxic)
|
||||||
auto=aslongas(creature[power=1]|mybattlefield) {C(0/0,-4,Loyalty)}:name(-4: Deal 1 damage) name(-4: Deal 1 damage) thisforeach(variable{1}) ability$!name(Deal 1 damage) damage:1 target(*[creature;planeswalker]|battlefield)!$ controller
|
auto=aslongas(creature[power=1]|mybattlefield) {C(0/0,-4,Loyalty)}:name(-4: Deal 1 damage) name(-4: Deal 1 damage) thisforeach(variable{1}) ability$!name(Deal 1 damage) damage:1 target(*[creature;planeswalker]|battlefield)!$ controller
|
||||||
@@ -2351,7 +2363,7 @@ subtype=Nahiri
|
|||||||
[card]
|
[card]
|
||||||
name=Nahiri, the Unforgiving
|
name=Nahiri, the Unforgiving
|
||||||
auto=ifnot paid(alternative) then counter(0/0,5,loyalty)
|
auto=ifnot paid(alternative) then counter(0/0,5,loyalty)
|
||||||
auto=if paid(alternative) then counter(0/0,3,loyalty)
|
auto=alternative counter(0/0,3,loyalty)
|
||||||
auto={C(0/0,+1,Loyalty)}:name(+1: Creature must attack) target(creature|battlefield) transforms((,newability[mustattack])) uynt
|
auto={C(0/0,+1,Loyalty)}:name(+1: Creature must attack) target(creature|battlefield) transforms((,newability[mustattack])) uynt
|
||||||
auto={C(0/0,+1,Loyalty)}:name(+1: Don't target any creature) donothing
|
auto={C(0/0,+1,Loyalty)}:name(+1: Don't target any creature) donothing
|
||||||
auto={C(0/0,+1,Loyalty)}:name(+1: Discard and draw) _DISCARD&DRAW_
|
auto={C(0/0,+1,Loyalty)}:name(+1: Discard and draw) _DISCARD&DRAW_
|
||||||
@@ -2540,7 +2552,7 @@ subtype=Nissa
|
|||||||
[card]
|
[card]
|
||||||
name=Nissa, Ascended Animist
|
name=Nissa, Ascended Animist
|
||||||
auto=ifnot paid(kicker) then ifnot paid(alternative) then counter(0/0,7,loyalty)
|
auto=ifnot paid(kicker) then ifnot paid(alternative) then counter(0/0,7,loyalty)
|
||||||
auto=if paid(alternative) then counter(0/0,5,loyalty)
|
auto=alternative counter(0/0,5,loyalty)
|
||||||
auto=if paid(kicker) then counter(0/0,3,loyalty)
|
auto=if paid(kicker) then counter(0/0,3,loyalty)
|
||||||
auto={C(0/0,+1,Loyalty)}:name(+1: Create horror) token(Phyrexian Horror,Creature Phyrexian Horror,hascntloyalty/hascntloyalty,green)
|
auto={C(0/0,+1,Loyalty)}:name(+1: Create horror) token(Phyrexian Horror,Creature Phyrexian Horror,hascntloyalty/hascntloyalty,green)
|
||||||
auto={C(0/0,-1,Loyalty)}:name(-1: Destroy artifact or enchantment) destroy target(*[artifact;enchantment]|battlefield)
|
auto={C(0/0,-1,Loyalty)}:name(-1: Destroy artifact or enchantment) destroy target(*[artifact;enchantment]|battlefield)
|
||||||
@@ -2803,7 +2815,7 @@ otherrestriction=can play planeswalker,compare(isflipped)~equalto~1
|
|||||||
restriction=compare(isflipped)~equalto~0
|
restriction=compare(isflipped)~equalto~0
|
||||||
anyzone={0}:doubleside(Will, Scholar of Frost)
|
anyzone={0}:doubleside(Will, Scholar of Frost)
|
||||||
autostack=if paid(alternative) then name(Will, Scholar of Frost) name(Will, Scholar of Frost) flip(Will, Scholar of Frost) forcetype(Legendary Planeswalker)
|
autostack=if paid(alternative) then name(Will, Scholar of Frost) name(Will, Scholar of Frost) flip(Will, Scholar of Frost) forcetype(Legendary Planeswalker)
|
||||||
auto=if paid(alternative) then counter(0/0,4,Loyalty) else counter(0/0,2,loyalty)
|
auto=alternative counter(0/0,4,Loyalty) else counter(0/0,2,loyalty)
|
||||||
auto=this(variable{isflipped}<1) lord(instant,sorcery|mycastingzone) altercost(colorless,-1)
|
auto=this(variable{isflipped}<1) lord(instant,sorcery|mycastingzone) altercost(colorless,-1)
|
||||||
auto=this(variable{isflipped}<1) {C(0/0,1,Loyalty)}:name(+1: Deals damage) name(+1: Deals damage) if compare(pdrewcount)~lessthan~3 then damage:1 opponent else damage:3 opponent
|
auto=this(variable{isflipped}<1) {C(0/0,1,Loyalty)}:name(+1: Deals damage) name(+1: Deals damage) if compare(pdrewcount)~lessthan~3 then damage:1 opponent else damage:3 opponent
|
||||||
auto=this(variable{isflipped}<1) {C(0/0,-4,Loyalty)}:name(-4: Emblem copy spells) name(-4: Emblem copy spells) emblem transforms((,newability[@movedto(*[instant;sorcery]|mystack):all(trigger[to]<1>) transforms((,newability[pay[[{2}]] name(copy spell) activate name(copy spell) castcard(copied noevent)])) forever])) forever dontremove
|
auto=this(variable{isflipped}<1) {C(0/0,-4,Loyalty)}:name(-4: Emblem copy spells) name(-4: Emblem copy spells) emblem transforms((,newability[@movedto(*[instant;sorcery]|mystack):all(trigger[to]<1>) transforms((,newability[pay[[{2}]] name(copy spell) activate name(copy spell) castcard(copied noevent)])) forever])) forever dontremove
|
||||||
@@ -3136,7 +3148,7 @@ subtype=Tamiyo
|
|||||||
[card]
|
[card]
|
||||||
name=Tamiyo, Compleated Sage
|
name=Tamiyo, Compleated Sage
|
||||||
auto=ifnot paid(alternative) then counter(0/0,5,loyalty)
|
auto=ifnot paid(alternative) then counter(0/0,5,loyalty)
|
||||||
auto=if paid(alternative) then counter(0/0,3,loyalty)
|
auto=alternative counter(0/0,3,loyalty)
|
||||||
auto={C(0/0,+1,Loyalty)}:name(+1: Tap artifact or creature) target(*[artifact;creature]|battlefield) freeze
|
auto={C(0/0,+1,Loyalty)}:name(+1: Tap artifact or creature) target(*[artifact;creature]|battlefield) freeze
|
||||||
auto={C(0/0,+1,Loyalty)}:name(+1: Don't tap anything) donothing
|
auto={C(0/0,+1,Loyalty)}:name(+1: Don't tap anything) donothing
|
||||||
auto={C(0/0,0,Loyalty)}:name(0: Exile and copy with cost 0) target(*[-land&manacost=0]|mygraveyard) moveto(myexile) and!( clone )!
|
auto={C(0/0,0,Loyalty)}:name(0: Exile and copy with cost 0) target(*[-land&manacost=0]|mygraveyard) moveto(myexile) and!( clone )!
|
||||||
@@ -3654,6 +3666,19 @@ type=Legendary Planeswalker
|
|||||||
subtype=Tyvar
|
subtype=Tyvar
|
||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
|
name=Ugin, Eye of the Storms
|
||||||
|
auto=counter(0/0,7,loyalty)
|
||||||
|
autostack=may moveTo(exile) target(*[white;blue;black;red;green])
|
||||||
|
auto=@movedTo(*[colorless]|mystack):may moveTo(exile) target(*[white;blue;black;red;green])
|
||||||
|
auto={C(0/0,+2,Loyalty)}:life:3 && draw:1
|
||||||
|
auto={C(0/0,0,Loyalty)}:Add{C}{C}{C}
|
||||||
|
auto={C(0/0,-11,Loyalty)}:target(<anyAmount>*[colorless]|myLibrary) moveTo(exile) and!( transforms((,newability[zerocast],newability[canplayfromexile])) ueot )!
|
||||||
|
text=When you cast this spell, exile up to one target permanent that's one or more colors. -- Whenever you cast a colorless spell, exile up to one target permanent that's one or more colors. -- [+2]: You gain 3 life and draw a card. -- [0]: Add {C}{C}{C}. -- [-11]: Search your library for any number of colorless nonland cards, exile them, then shuffle. Until end of turn, you may cast those cards without paying their mana costs.
|
||||||
|
mana={7}
|
||||||
|
type=Legendary Planeswalker
|
||||||
|
subtype=Ugin
|
||||||
|
[/card]
|
||||||
|
[card]
|
||||||
name=Ugin, the Ineffable
|
name=Ugin, the Ineffable
|
||||||
auto=counter(0/0,4,loyalty)
|
auto=counter(0/0,4,loyalty)
|
||||||
auto=lord(*[colorless]|mycastingzone) altercost(colorless,-2)
|
auto=lord(*[colorless]|mycastingzone) altercost(colorless,-2)
|
||||||
@@ -3720,7 +3745,7 @@ subtype=Venser
|
|||||||
name=Vivien Reid
|
name=Vivien Reid
|
||||||
auto=counter(0/0,5,loyalty)
|
auto=counter(0/0,5,loyalty)
|
||||||
aicode=activate moveto(myhand) target(*[creature;land;zpos<=4]|mylibrary)
|
aicode=activate moveto(myhand) target(*[creature;land;zpos<=4]|mylibrary)
|
||||||
auto={C(0/0,+1,Loyalty)}:name(+1: Look four and put creature or land in hand) name(look) reveal:4 optionone name(Get a creature or land) target(<1>*[creature;land]|reveal) moveto(myhand) optiononeend optiontwo name(put on bottom) target(<4>*|reveal) bottomoflibrary optiontwoend revealend
|
auto={C(0/0,+1,Loyalty)}:name(+1: Look four and put creature or land in hand) name(look) reveal:4 optionone name(Get a creature or land) target(<1>*[creature;land]|reveal) moveto(myhand) optiononeend optiontwo name(put on bottom) all(*|reveal) bottomoflibrary optiontwoend revealend
|
||||||
auto={C(0/0,-3,Loyalty)}:name(-3: Destroy target artifact) destroy target(artifact)
|
auto={C(0/0,-3,Loyalty)}:name(-3: Destroy target artifact) destroy target(artifact)
|
||||||
auto={C(0/0,-3,Loyalty)}:name(-3: Destroy target enchantment) destroy target(enchantment)
|
auto={C(0/0,-3,Loyalty)}:name(-3: Destroy target enchantment) destroy target(enchantment)
|
||||||
auto={C(0/0,-3,Loyalty)}:name(-3: Destroy target creature with flying) destroy target(creature[flying])
|
auto={C(0/0,-3,Loyalty)}:name(-3: Destroy target creature with flying) destroy target(creature[flying])
|
||||||
@@ -3801,7 +3826,7 @@ subtype=Vraska
|
|||||||
[/card]
|
[/card]
|
||||||
[card]
|
[card]
|
||||||
name=Vraska, Betrayal's Sting
|
name=Vraska, Betrayal's Sting
|
||||||
auto=if paid(alternative) then counter(0/0,4,loyalty)
|
auto=alternative counter(0/0,4,loyalty)
|
||||||
auto=ifnot paid(alternative) then counter(0/0,6,loyalty)
|
auto=ifnot paid(alternative) then counter(0/0,6,loyalty)
|
||||||
auto={C(0/0,0,Loyalty)}:name(0: Draw card and lose life) draw:1 controller && life:-1 controller && _PROLIFERATE_
|
auto={C(0/0,0,Loyalty)}:name(0: Draw card and lose life) draw:1 controller && life:-1 controller && _PROLIFERATE_
|
||||||
auto={C(0/0,-2,Loyalty)}:name(-2: Creature becomes treasure) target(creature|battlefield) transforms((removeallsubtypes,removeallcolors,newability[becomes(Treasure artifact)],,newability[{T}{S}:Add{W}],newability[{T}{S}:Add{U}],newability[{T}{S}:Add{B}],newability[{T}{S}:Add{R}],newability[{T}{S}:Add{G}])) forever
|
auto={C(0/0,-2,Loyalty)}:name(-2: Creature becomes treasure) target(creature|battlefield) transforms((removeallsubtypes,removeallcolors,newability[becomes(Treasure artifact)],,newability[{T}{S}:Add{W}],newability[{T}{S}:Add{U}],newability[{T}{S}:Add{B}],newability[{T}{S}:Add{R}],newability[{T}{S}:Add{G}])) forever
|
||||||
|
|||||||
@@ -2,5 +2,5 @@
|
|||||||
#Sun, 20 May 2020 11:56:35 +0200
|
#Sun, 20 May 2020 11:56:35 +0200
|
||||||
build.major=0
|
build.major=0
|
||||||
build.minor=25
|
build.minor=25
|
||||||
build.point=3
|
build.point=5
|
||||||
|
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ class AIPlayerBaka: public AIPlayer{
|
|||||||
virtual int chooseBlockers();
|
virtual int chooseBlockers();
|
||||||
virtual int canFirstStrikeKill(MTGCardInstance * card, MTGCardInstance *ennemy);
|
virtual int canFirstStrikeKill(MTGCardInstance * card, MTGCardInstance *ennemy);
|
||||||
virtual int effectBadOrGood(MTGCardInstance * card, int mode = MODE_PUTINTOPLAY, TargetChooser * tc = NULL);
|
virtual int effectBadOrGood(MTGCardInstance * card, int mode = MODE_PUTINTOPLAY, TargetChooser * tc = NULL);
|
||||||
|
virtual bool shouldAIForceAttack(MTGCardInstance* card, bool globalAttack);
|
||||||
|
|
||||||
// returns 1 if the AI algorithm supports a given cost (ex:simple mana cost), 0 otherwise (ex: cost involves Sacrificing a target)
|
// returns 1 if the AI algorithm supports a given cost (ex:simple mana cost), 0 otherwise (ex: cost involves Sacrificing a target)
|
||||||
virtual int CanHandleCost(ManaCost * cost, MTGCardInstance * card = NULL);
|
virtual int CanHandleCost(ManaCost * cost, MTGCardInstance * card = NULL);
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ public:
|
|||||||
TYPE_EQUIPMENT = 11,
|
TYPE_EQUIPMENT = 11,
|
||||||
TYPE_AURA = 12,
|
TYPE_AURA = 12,
|
||||||
TYPE_PLANESWALKER = 13,
|
TYPE_PLANESWALKER = 13,
|
||||||
TYPE_TRIBAL = 14,
|
TYPE_KINDRED = 14,
|
||||||
TYPE_PLANE = 15,
|
TYPE_PLANE = 15,
|
||||||
TYPE_SCHEME = 16,
|
TYPE_SCHEME = 16,
|
||||||
TYPE_VANGUARD = 17,
|
TYPE_VANGUARD = 17,
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ Mod by: Vitty85
|
|||||||
/* Wagic versions */
|
/* Wagic versions */
|
||||||
#define WAGIC_VERSION_MAJOR 0
|
#define WAGIC_VERSION_MAJOR 0
|
||||||
#define WAGIC_VERSION_MEDIUM 25
|
#define WAGIC_VERSION_MEDIUM 25
|
||||||
#define WAGIC_VERSION_MINOR 3
|
#define WAGIC_VERSION_MINOR 5
|
||||||
|
|
||||||
#define VERSION_DOT(a, b, c) a ##.## b ##.## c
|
#define VERSION_DOT(a, b, c) a ##.## b ##.## c
|
||||||
#define VERSION_WITHOUT_DOT(a, b, c) a ## b ## c
|
#define VERSION_WITHOUT_DOT(a, b, c) a ## b ## c
|
||||||
|
|||||||
@@ -4012,17 +4012,14 @@ int AIPlayerBaka::chooseAttackers()
|
|||||||
MTGCardInstance * card = NULL;
|
MTGCardInstance * card = NULL;
|
||||||
while ((card = cd.nextmatch(game->inPlay, card)))
|
while ((card = cd.nextmatch(game->inPlay, card)))
|
||||||
{
|
{
|
||||||
if ((hints && hints->HintSaysAlwaysAttack(observer, card)) || card->has(Constants::UNBLOCKABLE))
|
if (shouldAIForceAttack(card, attack))
|
||||||
{
|
|
||||||
if (!card->isAttacker())
|
|
||||||
{
|
{
|
||||||
if (card->attackCost)
|
if (card->attackCost)
|
||||||
{
|
{
|
||||||
MTGAbility * a = observer->mLayers->actionLayer()->getAbility(MTGAbility::ATTACK_COST);
|
MTGAbility* a = observer->mLayers->actionLayer()->getAbility(MTGAbility::ATTACK_COST);
|
||||||
doAbility(a,card);
|
doAbility(a, card);
|
||||||
observer->cardClick(card, MTGAbility::ATTACK_COST);
|
observer->cardClick(card, MTGAbility::ATTACK_COST);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
observer->cardClick(card, MTGAbility::MTG_ATTACK_RULE);
|
observer->cardClick(card, MTGAbility::MTG_ATTACK_RULE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4052,6 +4049,76 @@ int AIPlayerBaka::chooseAttackers()
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool AIPlayerBaka::shouldAIForceAttack(MTGCardInstance* card, bool globalAttack)
|
||||||
|
{
|
||||||
|
if (globalAttack)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if (!card || card->isAttacker())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (hints)
|
||||||
|
{
|
||||||
|
if (hints->HintSaysDontAttack(observer, card))
|
||||||
|
return false;
|
||||||
|
if (hints->HintSaysAlwaysAttack(observer, card))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (card->has(Constants::UNBLOCKABLE))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
// Flags for opponent defenses
|
||||||
|
bool oppHasShadow = false;
|
||||||
|
bool oppHasAirDefense = false;
|
||||||
|
bool oppHasHorsemanship = false;
|
||||||
|
bool oppHasBlackOrArtifact = false;
|
||||||
|
bool oppHasMatchingColorOrArtifact = false;
|
||||||
|
|
||||||
|
MTGCardInstance* oppCard = NULL;
|
||||||
|
CardDescriptor desc;
|
||||||
|
desc.init();
|
||||||
|
desc.setType("creature");
|
||||||
|
|
||||||
|
while ((oppCard = desc.nextmatch(opponent()->game->inPlay, oppCard)))
|
||||||
|
{
|
||||||
|
if (oppCard->isTapped())
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (oppCard->has(Constants::SHADOW))
|
||||||
|
oppHasShadow = true;
|
||||||
|
if (oppCard->has(Constants::FLYING) || oppCard->has(Constants::REACH))
|
||||||
|
oppHasAirDefense = true;
|
||||||
|
if (oppCard->has(Constants::HORSEMANSHIP))
|
||||||
|
oppHasHorsemanship = true;
|
||||||
|
|
||||||
|
if (oppCard->hasColor(Constants::MTG_COLOR_BLACK) || oppCard->hasType("Artifact"))
|
||||||
|
oppHasBlackOrArtifact = true;
|
||||||
|
|
||||||
|
// Intimidate check: artifact or shares color
|
||||||
|
if (oppCard->hasType("Artifact") || (oppCard->colors & card->colors))
|
||||||
|
oppHasMatchingColorOrArtifact = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Decision logic based on evasion
|
||||||
|
if ((card->has(Constants::SHADOW) && !oppHasShadow) ||
|
||||||
|
(card->has(Constants::FLYING) && !oppHasAirDefense) ||
|
||||||
|
(card->has(Constants::HORSEMANSHIP) && !oppHasHorsemanship) ||
|
||||||
|
(card->has(Constants::FEAR) && !oppHasBlackOrArtifact) ||
|
||||||
|
(card->has(Constants::INTIMIDATE) && !oppHasMatchingColorOrArtifact))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
// Landwalk abilities
|
||||||
|
if ((card->has(Constants::SWAMPWALK) && opponent()->game->inPlay->hasType("Swamp")) ||
|
||||||
|
(card->has(Constants::ISLANDWALK) && opponent()->game->inPlay->hasType("Island")) ||
|
||||||
|
(card->has(Constants::FORESTWALK) && opponent()->game->inPlay->hasType("Forest")) ||
|
||||||
|
(card->has(Constants::MOUNTAINWALK) && opponent()->game->inPlay->hasType("Mountain")) ||
|
||||||
|
(card->has(Constants::PLAINSWALK) && opponent()->game->inPlay->hasType("Plains")))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/* Can I first strike my oponent and get away with murder ? */
|
/* Can I first strike my oponent and get away with murder ? */
|
||||||
int AIPlayerBaka::canFirstStrikeKill(MTGCardInstance * card, MTGCardInstance *ennemy)
|
int AIPlayerBaka::canFirstStrikeKill(MTGCardInstance * card, MTGCardInstance *ennemy)
|
||||||
{
|
{
|
||||||
@@ -4073,14 +4140,16 @@ int AIPlayerBaka::chooseBlockers()
|
|||||||
//Should not block during my own turn...
|
//Should not block during my own turn...
|
||||||
if (observer->currentPlayer == this)
|
if (observer->currentPlayer == this)
|
||||||
return 0;
|
return 0;
|
||||||
map<MTGCardInstance *, int> opponentsToughness;
|
|
||||||
int opponentForce = getCreaturesInfo(opponent(), INFO_CREATURESPOWER);
|
map<MTGCardInstance*, int> opponentsToughness;
|
||||||
|
|
||||||
//Initialize the list of opponent's attacking cards toughness
|
//Initialize the list of opponent's attacking cards toughness
|
||||||
CardDescriptor cdAttackers;
|
CardDescriptor cdAttackers;
|
||||||
cdAttackers.init();
|
cdAttackers.init();
|
||||||
cdAttackers.setType("Creature");
|
cdAttackers.setType("Creature");
|
||||||
MTGCardInstance * card = NULL;
|
MTGCardInstance* card = NULL;
|
||||||
|
|
||||||
|
// Gather all attacking creatures and store their toughness
|
||||||
while ((card = cdAttackers.nextmatch(opponent()->game->inPlay, card)))
|
while ((card = cdAttackers.nextmatch(opponent()->game->inPlay, card)))
|
||||||
{
|
{
|
||||||
if (card->isAttacker())
|
if (card->isAttacker())
|
||||||
@@ -4094,11 +4163,12 @@ int AIPlayerBaka::chooseBlockers()
|
|||||||
cd.unsecureSetTapped(-1);
|
cd.unsecureSetTapped(-1);
|
||||||
card = NULL;
|
card = NULL;
|
||||||
|
|
||||||
// We first try to block the major threats, those that are marked in the Top 3 of our stats
|
// First pass: auto-block top 3 threats if can be killed
|
||||||
while ((card = cd.nextmatch(game->inPlay, card)))
|
while ((card = cd.nextmatch(game->inPlay, card)))
|
||||||
{
|
{
|
||||||
if(hints && hints->HintSaysDontBlock(observer,card))
|
if (hints && hints->HintSaysDontBlock(observer, card))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
observer->cardClick(card, MTGAbility::MTG_BLOCK_RULE);
|
observer->cardClick(card, MTGAbility::MTG_BLOCK_RULE);
|
||||||
int set = 0;
|
int set = 0;
|
||||||
while (!set)
|
while (!set)
|
||||||
@@ -4109,8 +4179,8 @@ int AIPlayerBaka::chooseBlockers()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
MTGCardInstance * attacker = card->defenser;
|
MTGCardInstance* attacker = card->defenser;
|
||||||
map<MTGCardInstance *, int>::iterator it = opponentsToughness.find(attacker);
|
map<MTGCardInstance*, int>::iterator it = opponentsToughness.find(attacker);
|
||||||
if (it == opponentsToughness.end())
|
if (it == opponentsToughness.end())
|
||||||
{
|
{
|
||||||
opponentsToughness[attacker] = attacker->toughness;
|
opponentsToughness[attacker] = attacker->toughness;
|
||||||
@@ -4125,7 +4195,7 @@ int AIPlayerBaka::chooseBlockers()
|
|||||||
{
|
{
|
||||||
if (card->blockCost)
|
if (card->blockCost)
|
||||||
{
|
{
|
||||||
MTGAbility * a = observer->mLayers->actionLayer()->getAbility(MTGAbility::BLOCK_COST);
|
MTGAbility* a = observer->mLayers->actionLayer()->getAbility(MTGAbility::BLOCK_COST);
|
||||||
doAbility(a, card);
|
doAbility(a, card);
|
||||||
observer->cardClick(card, MTGAbility::BLOCK_COST);
|
observer->cardClick(card, MTGAbility::BLOCK_COST);
|
||||||
}
|
}
|
||||||
@@ -4135,13 +4205,13 @@ int AIPlayerBaka::chooseBlockers()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//If blocking one of the major threats is not enough to kill it,
|
// Second pass: unassign if attacker is not expected to die
|
||||||
// We change strategy, first we unassign its blockers that where assigned above
|
|
||||||
card = NULL;
|
card = NULL;
|
||||||
while ((card = cd.nextmatch(game->inPlay, card)))
|
while ((card = cd.nextmatch(game->inPlay, card)))
|
||||||
{
|
{
|
||||||
if(hints && hints->HintSaysDontBlock(observer,card))
|
if (hints && hints->HintSaysDontBlock(observer, card))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (card->defenser && opponentsToughness[card->defenser] > 0)
|
if (card->defenser && opponentsToughness[card->defenser] > 0)
|
||||||
{
|
{
|
||||||
while (card->defenser)
|
while (card->defenser)
|
||||||
@@ -4151,48 +4221,151 @@ int AIPlayerBaka::chooseBlockers()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Assign the "free" potential blockers to attacking creatures that are not blocked enough
|
// Third pass: intelligent blocking
|
||||||
card = NULL;
|
card = NULL;
|
||||||
while ((card = cd.nextmatch(game->inPlay, card)))
|
while ((card = cd.nextmatch(game->inPlay, card)))
|
||||||
{
|
{
|
||||||
if(hints && hints->HintSaysDontBlock(observer,card))
|
if (hints && hints->HintSaysDontBlock(observer, card))
|
||||||
continue;
|
continue;
|
||||||
if (!card->defenser)
|
if (card->defenser)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
MTGCardInstance* bestAttacker = NULL;
|
||||||
|
int bestScore = -1;
|
||||||
|
|
||||||
|
for (map<MTGCardInstance*, int>::iterator it = opponentsToughness.begin(); it != opponentsToughness.end(); ++it)
|
||||||
|
{
|
||||||
|
MTGCardInstance* attacker = it->first;
|
||||||
|
if (!attacker)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
int currentBlockers = (int)attacker->blockers.size();
|
||||||
|
int totalAssignedDamage = 0;
|
||||||
|
|
||||||
|
std::list<MTGCardInstance*>::iterator itb;
|
||||||
|
for (itb = attacker->blockers.begin(); itb != attacker->blockers.end(); ++itb)
|
||||||
|
{
|
||||||
|
MTGCardInstance* blocker = *itb;
|
||||||
|
if (blocker)
|
||||||
|
totalAssignedDamage += blocker->power;
|
||||||
|
}
|
||||||
|
|
||||||
|
int maxBlockers = 1;
|
||||||
|
if (attacker->basicAbilities[Constants::MENACE]) maxBlockers = 2;
|
||||||
|
if (attacker->basicAbilities[Constants::THREEBLOCKERS]) maxBlockers = 3;
|
||||||
|
|
||||||
|
if (totalAssignedDamage >= attacker->toughness || currentBlockers >= maxBlockers)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
bool canKill = (card->power >= attacker->toughness);
|
||||||
|
bool survives = (card->toughness > attacker->power);
|
||||||
|
|
||||||
|
// Always block if can kill, regardless of survivability or damage
|
||||||
|
if (canKill)
|
||||||
|
{
|
||||||
|
int score = attacker->power * 2 + attacker->toughness;
|
||||||
|
if (getStats() && getStats()->isInTop(attacker, 3, false))
|
||||||
|
score += 100;
|
||||||
|
|
||||||
|
if (score > bestScore)
|
||||||
|
{
|
||||||
|
bestScore = score;
|
||||||
|
bestAttacker = attacker;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Block even if can't kill, but we survive and reduce damage
|
||||||
|
else if (survives && attacker->power < life)
|
||||||
|
{
|
||||||
|
int score = attacker->power;
|
||||||
|
if (getStats() && getStats()->isInTop(attacker, 3, false))
|
||||||
|
score += 50;
|
||||||
|
|
||||||
|
if (score > bestScore)
|
||||||
|
{
|
||||||
|
bestScore = score;
|
||||||
|
bestAttacker = attacker;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Block to prevent lethal damage, even if we die
|
||||||
|
else if (!survives && attacker->power >= life)
|
||||||
|
{
|
||||||
|
int score = attacker->power;
|
||||||
|
if (getStats() && getStats()->isInTop(attacker, 3, false))
|
||||||
|
score += 75;
|
||||||
|
|
||||||
|
if (score > bestScore)
|
||||||
|
{
|
||||||
|
bestScore = score;
|
||||||
|
bestAttacker = attacker;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bestAttacker)
|
||||||
|
{
|
||||||
|
int requiredBlockers = 1;
|
||||||
|
if (bestAttacker->basicAbilities[Constants::MENACE]) requiredBlockers = 2;
|
||||||
|
if (bestAttacker->basicAbilities[Constants::THREEBLOCKERS]) requiredBlockers = 3;
|
||||||
|
|
||||||
|
int currentBlockers = (int)bestAttacker->blockers.size();
|
||||||
|
int currentBlockPower = 0;
|
||||||
|
|
||||||
|
std::list<MTGCardInstance*>::iterator itb;
|
||||||
|
for (itb = bestAttacker->blockers.begin(); itb != bestAttacker->blockers.end(); ++itb)
|
||||||
|
{
|
||||||
|
MTGCardInstance* blocker = *itb;
|
||||||
|
if (blocker)
|
||||||
|
currentBlockPower += blocker->power;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currentBlockers >= requiredBlockers || currentBlockPower >= bestAttacker->toughness)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
vector<MTGCardInstance*> extraBlockers;
|
||||||
|
if (requiredBlockers > 1)
|
||||||
|
{
|
||||||
|
CardDescriptor cd2;
|
||||||
|
cd2.init();
|
||||||
|
cd2.setType("Creature");
|
||||||
|
cd2.unsecureSetTapped(-1);
|
||||||
|
MTGCardInstance* c2 = NULL;
|
||||||
|
while ((c2 = cd2.nextmatch(game->inPlay, c2)))
|
||||||
|
{
|
||||||
|
if (c2 == card || c2->defenser || (hints && hints->HintSaysDontBlock(observer, c2)))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
int combinedPower = c2->power + card->power;
|
||||||
|
bool combinedCanKill = (combinedPower >= bestAttacker->toughness);
|
||||||
|
|
||||||
|
if (combinedCanKill)
|
||||||
|
{
|
||||||
|
extraBlockers.push_back(c2);
|
||||||
|
if ((int)extraBlockers.size() + currentBlockers + 1 >= requiredBlockers)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currentBlockers + (int)extraBlockers.size() + 1 >= requiredBlockers)
|
||||||
{
|
{
|
||||||
if (card->blockCost)
|
if (card->blockCost)
|
||||||
{
|
{
|
||||||
MTGAbility * a = observer->mLayers->actionLayer()->getAbility(MTGAbility::BLOCK_COST);
|
MTGAbility* a = observer->mLayers->actionLayer()->getAbility(MTGAbility::BLOCK_COST);
|
||||||
doAbility(a, card);
|
doAbility(a, card);
|
||||||
}
|
}
|
||||||
observer->cardClick(card, MTGAbility::MTG_BLOCK_RULE);
|
observer->cardClick(card, MTGAbility::MTG_BLOCK_RULE);
|
||||||
int set = 0;
|
opponentsToughness[bestAttacker] -= card->power;
|
||||||
while (!set)
|
|
||||||
|
for (size_t i = 0; i < extraBlockers.size(); ++i)
|
||||||
{
|
{
|
||||||
if (!card->defenser)
|
MTGCardInstance* extra = extraBlockers[i];
|
||||||
|
if (extra->blockCost)
|
||||||
{
|
{
|
||||||
set = 1;
|
MTGAbility* a = observer->mLayers->actionLayer()->getAbility(MTGAbility::BLOCK_COST);
|
||||||
}
|
doAbility(a, extra);
|
||||||
else
|
|
||||||
{
|
|
||||||
MTGCardInstance * attacker = card->defenser;
|
|
||||||
if (opponentsToughness[attacker] <= 0 || (card->toughness <= attacker->power && opponentForce * 2 < life && !canFirstStrikeKill(card, attacker)) || attacker->nbOpponents() > 1)
|
|
||||||
{
|
|
||||||
if (card->blockCost)
|
|
||||||
{
|
|
||||||
MTGAbility * a = observer->mLayers->actionLayer()->getAbility(MTGAbility::BLOCK_COST);
|
|
||||||
doAbility(a, card);
|
|
||||||
}
|
|
||||||
if((!attacker->basicAbilities[Constants::MENACE] && !attacker->basicAbilities[Constants::THREEBLOCKERS]) ||
|
|
||||||
(attacker->basicAbilities[Constants::MENACE] && attacker->blockers.size() > 2) ||
|
|
||||||
(attacker->basicAbilities[Constants::THREEBLOCKERS] && attacker->blockers.size() > 3))
|
|
||||||
observer->cardClick(card, MTGAbility::MTG_BLOCK_RULE);
|
|
||||||
else
|
|
||||||
set = 1;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
set = 1;
|
|
||||||
}
|
}
|
||||||
|
observer->cardClick(extra, MTGAbility::MTG_BLOCK_RULE);
|
||||||
|
opponentsToughness[bestAttacker] -= extra->power;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4269,7 +4442,7 @@ int AIPlayerBaka::receiveEvent(WEvent * event)
|
|||||||
|
|
||||||
|
|
||||||
AIPlayerBaka::AIPlayerBaka(GameObserver *observer, string file, string fileSmall, string avatarFile, MTGDeck * deck) :
|
AIPlayerBaka::AIPlayerBaka(GameObserver *observer, string file, string fileSmall, string avatarFile, MTGDeck * deck) :
|
||||||
AIPlayer(observer, file, fileSmall, deck)
|
AIPlayer(observer, file, fileSmall, deck)
|
||||||
{
|
{
|
||||||
|
|
||||||
nextCardToPlay = NULL;
|
nextCardToPlay = NULL;
|
||||||
|
|||||||
@@ -227,7 +227,7 @@ void Credits::compute(GameObserver* g, GameApp * _app)
|
|||||||
|
|
||||||
if (p1->game->hand->nb_cards == 7)
|
if (p1->game->hand->nb_cards == 7)
|
||||||
{
|
{
|
||||||
CreditBonus * b = NEW CreditBonus(77, _("'Seven-Tail Mentor' Bonus"));
|
CreditBonus * b = NEW CreditBonus(77, _("'Library of Alexandria' Bonus"));
|
||||||
bonus.push_back(b);
|
bonus.push_back(b);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -685,7 +685,7 @@ void Credits::Render()
|
|||||||
{
|
{
|
||||||
f2->DrawString(_("There's more!").c_str(), 10, y + 15);
|
f2->DrawString(_("There's more!").c_str(), 10, y + 15);
|
||||||
f->DrawString(_("Mods, additional cards, updates and more at:").c_str(), 10, y + 30);
|
f->DrawString(_("Mods, additional cards, updates and more at:").c_str(), 10, y + 30);
|
||||||
f2->DrawString("-> Discord: Wagic - MTG Game", 10, y + 42);
|
f2->DrawString("Discord and GitHub: Wagic game", 10, y + 42);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -605,7 +605,7 @@ int AbilityFactory::parseCastRestrictions(MTGCardInstance * card, Player * playe
|
|||||||
if (grave->hasType("artifact")) checkTypesAmount++;
|
if (grave->hasType("artifact")) checkTypesAmount++;
|
||||||
if (grave->hasType("planeswalker")) checkTypesAmount++;
|
if (grave->hasType("planeswalker")) checkTypesAmount++;
|
||||||
if (grave->hasType("battle")) checkTypesAmount++;
|
if (grave->hasType("battle")) checkTypesAmount++;
|
||||||
if (grave->hasType("tribal")) checkTypesAmount++;
|
if (grave->hasType("kindred")) checkTypesAmount++;
|
||||||
if (checkTypesAmount < 4)
|
if (checkTypesAmount < 4)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -625,7 +625,7 @@ int AbilityFactory::parseCastRestrictions(MTGCardInstance * card, Player * playe
|
|||||||
if (grave->hasType("artifact")) checkTypesAmount++;
|
if (grave->hasType("artifact")) checkTypesAmount++;
|
||||||
if (grave->hasType("planeswalker")) checkTypesAmount++;
|
if (grave->hasType("planeswalker")) checkTypesAmount++;
|
||||||
if (grave->hasType("battle")) checkTypesAmount++;
|
if (grave->hasType("battle")) checkTypesAmount++;
|
||||||
if (grave->hasType("tribal")) checkTypesAmount++;
|
if (grave->hasType("kindred")) checkTypesAmount++;
|
||||||
if (checkTypesAmount > 3)
|
if (checkTypesAmount > 3)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -347,12 +347,17 @@ void MTGCardInstance::initMTGCI()
|
|||||||
data = this; //an MTGCardInstance point to itself for data, allows to update it without killing the underlying database item
|
data = this; //an MTGCardInstance point to itself for data, allows to update it without killing the underlying database item
|
||||||
|
|
||||||
if (observer && basicAbilities[(int)Constants::CHANGELING])
|
if (observer && basicAbilities[(int)Constants::CHANGELING])
|
||||||
{//if the card is a changeling, it gains all creature subtypes
|
{
|
||||||
|
//if the card is a changeling, it gains all creature subtypes except "Equipment"
|
||||||
vector<string> values = MTGAllCards::getCreatureValuesById();
|
vector<string> values = MTGAllCards::getCreatureValuesById();
|
||||||
for (size_t i = 0; i < values.size(); ++i)
|
for (size_t i = 0; i < values.size(); ++i)
|
||||||
{
|
{
|
||||||
//Don' want to send any event to the gameObserver inside of initMCGI, so calling the parent setSubtype method instead of mine
|
const string& subtype = values[i];
|
||||||
CardPrimitive::setSubtype(values[i].c_str());
|
if (subtype == "Clue" || subtype == "Equipment" || subtype == "Food" || subtype == "Treasure")
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// Don't send any event to the gameObserver inside of initMCGI, so calling the parent setSubtype method instead
|
||||||
|
CardPrimitive::setSubtype(subtype.c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1147,8 +1152,8 @@ int MTGCardInstance::canBlock(MTGCardInstance * opponent)
|
|||||||
return 0;
|
return 0;
|
||||||
if (opponent->basicAbilities[(int)Constants::FEAR] && !(this->hasType(Subtypes::TYPE_ARTIFACT) || this->hasColor(Constants::MTG_COLOR_BLACK)))
|
if (opponent->basicAbilities[(int)Constants::FEAR] && !(this->hasType(Subtypes::TYPE_ARTIFACT) || this->hasColor(Constants::MTG_COLOR_BLACK)))
|
||||||
return 0;
|
return 0;
|
||||||
if (opponent->controller()->game->battlefield->hasAbility(Constants::LURE) && !opponent->has(Constants::LURE))
|
//if (opponent->controller()->game->battlefield->hasAbility(Constants::LURE) && !opponent->has(Constants::LURE))
|
||||||
return 0;
|
//return 0; Doesn't consider if the lure creature is attacking
|
||||||
//intimidate
|
//intimidate
|
||||||
if (opponent->basicAbilities[(int)Constants::INTIMIDATE] && !(this->hasType(Subtypes::TYPE_ARTIFACT)))
|
if (opponent->basicAbilities[(int)Constants::INTIMIDATE] && !(this->hasType(Subtypes::TYPE_ARTIFACT)))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ Subtypes::Subtypes()
|
|||||||
find("Equipment");
|
find("Equipment");
|
||||||
find("Aura");
|
find("Aura");
|
||||||
find("Planeswalker");
|
find("Planeswalker");
|
||||||
find("Tribal");
|
find("Kindred");
|
||||||
find("Plane");
|
find("Plane");
|
||||||
find("Scheme");
|
find("Scheme");
|
||||||
find("Vanguard");
|
find("Vanguard");
|
||||||
@@ -96,7 +96,7 @@ bool Subtypes::isType(unsigned int type)
|
|||||||
type == TYPE_LAND ||
|
type == TYPE_LAND ||
|
||||||
type == TYPE_ARTIFACT ||
|
type == TYPE_ARTIFACT ||
|
||||||
type == TYPE_PLANESWALKER ||
|
type == TYPE_PLANESWALKER ||
|
||||||
type == TYPE_TRIBAL ||
|
type == TYPE_KINDRED ||
|
||||||
type == TYPE_PLANE ||
|
type == TYPE_PLANE ||
|
||||||
type == TYPE_SCHEME ||
|
type == TYPE_SCHEME ||
|
||||||
type == TYPE_VANGUARD ||
|
type == TYPE_VANGUARD ||
|
||||||
|
|||||||
@@ -319,6 +319,11 @@ TargetChooser * TargetChooserFactory::createTargetChooser(string s, MTGCardInsta
|
|||||||
zones[nbzones++] = MTGGameZone::MY_HAND;
|
zones[nbzones++] = MTGGameZone::MY_HAND;
|
||||||
zones[nbzones++] = MTGGameZone::OPPONENT_HAND;
|
zones[nbzones++] = MTGGameZone::OPPONENT_HAND;
|
||||||
}
|
}
|
||||||
|
else if (zoneName.compare("mybattlefieldhand") == 0)
|
||||||
|
{
|
||||||
|
zones[nbzones++] = MTGGameZone::MY_HAND;
|
||||||
|
zones[nbzones++] = MTGGameZone::MY_BATTLEFIELD;
|
||||||
|
}
|
||||||
else if (zoneName.compare("library") == 0)
|
else if (zoneName.compare("library") == 0)
|
||||||
{
|
{
|
||||||
zones[nbzones++] = MTGGameZone::MY_LIBRARY;
|
zones[nbzones++] = MTGGameZone::MY_LIBRARY;
|
||||||
@@ -1155,7 +1160,7 @@ TargetChooser * TargetChooserFactory::createTargetChooser(string s, MTGCardInsta
|
|||||||
cd->removeType("creature");
|
cd->removeType("creature");
|
||||||
cd->removeType("planeswalker");
|
cd->removeType("planeswalker");
|
||||||
cd->removeType("battle");
|
cd->removeType("battle");
|
||||||
cd->removeType("tribal");
|
cd->removeType("kindred");
|
||||||
if (!cd->types.size()){
|
if (!cd->types.size()){
|
||||||
int i = rand() % 10000 + 1;
|
int i = rand() % 10000 + 1;
|
||||||
ostringstream subt;
|
ostringstream subt;
|
||||||
|
|||||||
@@ -2099,22 +2099,24 @@ void WGuiFilterItem::updateValue()
|
|||||||
mParent->subMenu = NEW SimpleMenu(JGE::GetInstance(), WResourceManager::Instance(), -1234, this, Fonts::MAIN_FONT, 20, 20, "Filter:");
|
mParent->subMenu = NEW SimpleMenu(JGE::GetInstance(), WResourceManager::Instance(), -1234, this, Fonts::MAIN_FONT, 20, 20, "Filter:");
|
||||||
if (filterType == FILTER_TYPE)
|
if (filterType == FILTER_TYPE)
|
||||||
{
|
{
|
||||||
|
mParent->addArg("Legendary Creature", "t:Legendary;&t:Creature;");
|
||||||
mParent->addArg("Artifact", "t:Artifact;");
|
mParent->addArg("Artifact", "t:Artifact;");
|
||||||
mParent->addArg("Artifact Creature", "t:Artifact;&t:Creature;");
|
mParent->addArg("Artifact Creature", "t:Artifact;&t:Creature;");
|
||||||
mParent->addArg("Aura", "t:Aura;");
|
mParent->addArg("Aura", "t:Aura;");
|
||||||
mParent->addArg("Basic", "t:Basic;");
|
mParent->addArg("Basic", "t:Basic;");
|
||||||
|
mParent->addArg("Battle", "t:Battle;");
|
||||||
mParent->addArg("Creature", "t:Creature;");
|
mParent->addArg("Creature", "t:Creature;");
|
||||||
mParent->addArg("Enchantment", "t:Enchantment;");
|
mParent->addArg("Enchantment", "t:Enchantment;");
|
||||||
mParent->addArg("Equipment", "t:Equipment;");
|
mParent->addArg("Equipment", "t:Equipment;");
|
||||||
mParent->addArg("Instant", "t:Instant;");
|
mParent->addArg("Instant", "t:Instant;");
|
||||||
|
mParent->addArg("Kindred", "t:Kindred;");
|
||||||
mParent->addArg("Land", "t:Land;");
|
mParent->addArg("Land", "t:Land;");
|
||||||
mParent->addArg("Legendary", "t:Legendary;");
|
mParent->addArg("Legendary", "t:Legendary;");
|
||||||
mParent->addArg("Legendary Creature", "t:Legendary;&t:Creature;");
|
mParent->addArg("Noncreature", "{t:Creature;}");
|
||||||
mParent->addArg("Sorcery", "t:Sorcery;");
|
mParent->addArg("Nonland", "{t:Land;}");
|
||||||
mParent->addArg("Snow", "t:Snow;");
|
|
||||||
mParent->addArg("Tribal", "t:Tribal;");
|
|
||||||
mParent->addArg("Planeswalker", "t:Planeswalker;");
|
mParent->addArg("Planeswalker", "t:Planeswalker;");
|
||||||
mParent->addArg("Battle", "t:Battle;");
|
mParent->addArg("Snow", "t:Snow;");
|
||||||
|
mParent->addArg("Sorcery", "t:Sorcery;");
|
||||||
mParent->addArg("Dungeon", "t:Dungeon;");
|
mParent->addArg("Dungeon", "t:Dungeon;");
|
||||||
mParent->addArg("Conspiracy", "t:Conspiracy;");
|
mParent->addArg("Conspiracy", "t:Conspiracy;");
|
||||||
|
|
||||||
@@ -2150,6 +2152,7 @@ void WGuiFilterItem::updateValue()
|
|||||||
mParent->addArg("Rare", "r:r;");
|
mParent->addArg("Rare", "r:r;");
|
||||||
mParent->addArg("Uncommon", "r:u;");
|
mParent->addArg("Uncommon", "r:u;");
|
||||||
mParent->addArg("Common", "r:c;");
|
mParent->addArg("Common", "r:c;");
|
||||||
|
mParent->addArg("Basic", "r:l;");
|
||||||
mParent->addArg("Special Rarity", "{r:m;|r:t;|r:r;|r:u;|r:c;|r:l;}");
|
mParent->addArg("Special Rarity", "{r:m;|r:t;|r:r;|r:u;|r:c;|r:l;}");
|
||||||
}
|
}
|
||||||
else if (filterType == FILTER_CMC)
|
else if (filterType == FILTER_CMC)
|
||||||
|
|||||||
@@ -1186,7 +1186,7 @@ void WParsedInt::init(string s, Spell * spell, MTGCardInstance * card)
|
|||||||
intValue = 0;
|
intValue = 0;
|
||||||
if(card->hasType(Subtypes::TYPE_PLANESWALKER))
|
if(card->hasType(Subtypes::TYPE_PLANESWALKER))
|
||||||
intValue++;
|
intValue++;
|
||||||
if(card->hasType(Subtypes::TYPE_TRIBAL))
|
if(card->hasType(Subtypes::TYPE_KINDRED))
|
||||||
intValue++;
|
intValue++;
|
||||||
if(card->hasType(Subtypes::TYPE_SORCERY))
|
if(card->hasType(Subtypes::TYPE_SORCERY))
|
||||||
intValue++;
|
intValue++;
|
||||||
@@ -1262,7 +1262,7 @@ void WParsedInt::extendedParse(string s, Spell * spell, MTGCardInstance * card)
|
|||||||
MTGGameZone * checkZone = card->getObserver()->players[j]->game->inPlay;
|
MTGGameZone * checkZone = card->getObserver()->players[j]->game->inPlay;
|
||||||
if(cardHasTypeinZone("planeswalker",checkZone))
|
if(cardHasTypeinZone("planeswalker",checkZone))
|
||||||
pc = 1;
|
pc = 1;
|
||||||
if(cardHasTypeinZone("tribal",checkZone))
|
if(cardHasTypeinZone("kindred",checkZone))
|
||||||
tc = 1;
|
tc = 1;
|
||||||
if(cardHasTypeinZone("sorcery",checkZone))
|
if(cardHasTypeinZone("sorcery",checkZone))
|
||||||
sc = 1;
|
sc = 1;
|
||||||
@@ -1283,7 +1283,7 @@ void WParsedInt::extendedParse(string s, Spell * spell, MTGCardInstance * card)
|
|||||||
MTGGameZone * checkZone = (s.find("oppbattlefieldcardtypes")!=string::npos)?card->getObserver()->opponent()->game->inPlay:card->controller()->game->inPlay;
|
MTGGameZone * checkZone = (s.find("oppbattlefieldcardtypes")!=string::npos)?card->getObserver()->opponent()->game->inPlay:card->controller()->game->inPlay;
|
||||||
if(cardHasTypeinZone("planeswalker",checkZone))
|
if(cardHasTypeinZone("planeswalker",checkZone))
|
||||||
pc = 1;
|
pc = 1;
|
||||||
if(cardHasTypeinZone("tribal",checkZone))
|
if(cardHasTypeinZone("kindred",checkZone))
|
||||||
tc = 1;
|
tc = 1;
|
||||||
if(cardHasTypeinZone("sorcery",checkZone))
|
if(cardHasTypeinZone("sorcery",checkZone))
|
||||||
sc = 1;
|
sc = 1;
|
||||||
@@ -1311,7 +1311,7 @@ void WParsedInt::extendedParse(string s, Spell * spell, MTGCardInstance * card)
|
|||||||
MTGGameZone * checkZone = card->getObserver()->players[j]->game->graveyard;
|
MTGGameZone * checkZone = card->getObserver()->players[j]->game->graveyard;
|
||||||
if(cardHasTypeinZone("planeswalker",checkZone))
|
if(cardHasTypeinZone("planeswalker",checkZone))
|
||||||
pc = 1;
|
pc = 1;
|
||||||
if(cardHasTypeinZone("tribal",checkZone))
|
if(cardHasTypeinZone("kindred",checkZone))
|
||||||
tc = 1;
|
tc = 1;
|
||||||
if(cardHasTypeinZone("sorcery",checkZone))
|
if(cardHasTypeinZone("sorcery",checkZone))
|
||||||
sc = 1;
|
sc = 1;
|
||||||
@@ -1332,7 +1332,7 @@ void WParsedInt::extendedParse(string s, Spell * spell, MTGCardInstance * card)
|
|||||||
MTGGameZone * checkZone = (s.find("oppgravecardtypes")!=string::npos)?card->getObserver()->opponent()->game->graveyard:card->controller()->game->graveyard;
|
MTGGameZone * checkZone = (s.find("oppgravecardtypes")!=string::npos)?card->getObserver()->opponent()->game->graveyard:card->controller()->game->graveyard;
|
||||||
if(cardHasTypeinZone("planeswalker",checkZone))
|
if(cardHasTypeinZone("planeswalker",checkZone))
|
||||||
pc = 1;
|
pc = 1;
|
||||||
if(cardHasTypeinZone("tribal",checkZone))
|
if(cardHasTypeinZone("kindred",checkZone))
|
||||||
tc = 1;
|
tc = 1;
|
||||||
if(cardHasTypeinZone("sorcery",checkZone))
|
if(cardHasTypeinZone("sorcery",checkZone))
|
||||||
sc = 1;
|
sc = 1;
|
||||||
|
|||||||
Reference in New Issue
Block a user