Compare commits
35 Commits
wagic-v0.2
...
wagic-v0.2
| 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 | ||
|
|
b21964dc46 | ||
|
|
6904d6ffd3 | ||
|
|
786a252cf5 | ||
|
|
863c3f07bc | ||
|
|
e0867dd737 | ||
|
|
671b3bae61 | ||
|
|
02a4726cbf | ||
|
|
91d588c670 | ||
|
|
4df4422d93 | ||
|
|
0b3b33f727 |
@@ -29,11 +29,30 @@ public:
|
||||
{
|
||||
int r;
|
||||
|
||||
#if defined(__ARM_FEATURE_LSE)
|
||||
// Use LSE atomic instructions if supported
|
||||
#pragma message("LSE feature detected") // This will print a message in your build logs
|
||||
__asm__ __volatile__(
|
||||
"swp %0, %1, [%2]":
|
||||
"=&r"( r ): // outputs
|
||||
"r"( 1 ), "r"( &v_ ): // inputs
|
||||
"memory", "cc" );
|
||||
"ldaxr %0, [%1];" // Load-Exclusive instruction
|
||||
"cbnz %0, 1f;" // If the value is non-zero, the lock is already acquired
|
||||
"stlxr %w0, %2, [%1];" // Store-Exclusive instruction
|
||||
"cbnz %w0, 1f;" // If the store failed, retry
|
||||
"mov %0, #0;" // Success, zero indicates lock acquired
|
||||
"1:"
|
||||
: "=&r"(r)
|
||||
: "r"(&v_), "r"(1)
|
||||
: "memory", "cc"
|
||||
);
|
||||
#else
|
||||
// Fallback for systems that don't support LSE
|
||||
#pragma message("LSE feature not detected") // This will print a message in your build logs if LSE is not detected
|
||||
__asm__ __volatile__(
|
||||
"swp %0, %1, [%2];" // Swap instruction (used as a fallback)
|
||||
: "=&r"(r) // output constraint
|
||||
: "r"(1), "r"(&v_) // input constraints
|
||||
: "memory", "cc" // clobbered registers
|
||||
);
|
||||
#endif
|
||||
|
||||
return r == 0;
|
||||
}
|
||||
|
||||
@@ -14,10 +14,11 @@
|
||||
claim that you wrote the original software. If you use this software
|
||||
in a product, an acknowledgment in the product documentation would be
|
||||
appreciated but is not required.
|
||||
2. Altered source versions must be plainly marked as such, and must not be
|
||||
misrepresented as being the original software.
|
||||
2. Altered source versions must be plainly marked as such, and must not
|
||||
be misrepresented as being the original software.
|
||||
3. This notice may not be removed or altered from any source distribution.
|
||||
*/
|
||||
|
||||
#include "SDL_stdinc.h"
|
||||
|
||||
#include "SDL_atomic.h"
|
||||
@@ -30,8 +31,7 @@
|
||||
#endif
|
||||
|
||||
/* This function is where all the magic happens... */
|
||||
SDL_bool
|
||||
SDL_AtomicTryLock(SDL_SpinLock *lock)
|
||||
SDL_bool SDL_AtomicTryLock(SDL_SpinLock *lock)
|
||||
{
|
||||
#if SDL_ATOMIC_DISABLED
|
||||
/* Terrible terrible damage */
|
||||
@@ -85,13 +85,27 @@ SDL_AtomicTryLock(SDL_SpinLock *lock)
|
||||
return (result == 0);
|
||||
|
||||
#else
|
||||
/* Need CPU instructions for spinlock here! */
|
||||
__need_spinlock_implementation__
|
||||
/* Fallback implementation using a standard mutex */
|
||||
/* You can use SDL_mutex as a fallback if no atomic instructions are available */
|
||||
static SDL_mutex *mutex;
|
||||
if (!mutex) {
|
||||
mutex = SDL_CreateMutex();
|
||||
}
|
||||
|
||||
SDL_mutexP(mutex);
|
||||
if (*lock == 0) {
|
||||
*lock = 1;
|
||||
SDL_mutexV(mutex);
|
||||
return SDL_TRUE;
|
||||
} else {
|
||||
SDL_mutexV(mutex);
|
||||
return SDL_FALSE;
|
||||
}
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
SDL_AtomicLock(SDL_SpinLock *lock)
|
||||
void SDL_AtomicLock(SDL_SpinLock *lock)
|
||||
{
|
||||
/* FIXME: Should we have an eventual timeout? */
|
||||
while (!SDL_AtomicTryLock(lock)) {
|
||||
@@ -99,8 +113,7 @@ SDL_AtomicLock(SDL_SpinLock *lock)
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
SDL_AtomicUnlock(SDL_SpinLock *lock)
|
||||
void SDL_AtomicUnlock(SDL_SpinLock *lock)
|
||||
{
|
||||
#if defined(_MSC_VER)
|
||||
_ReadWriteBarrier();
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
APP_PROJECT_PATH := $(call my-dir)/..
|
||||
APP_CPPFLAGS += -frtti -fexceptions
|
||||
APP_ABI := armeabi-v7a
|
||||
APP_ABI := arm64-v8a
|
||||
APP_PLATFORM := android-21
|
||||
APP_CFLAGS += -march=armv8.1-a
|
||||
APP_CPPFLAGS += -D__ARM_FEATURE_LSE=1
|
||||
#APP_ABI := x86 # mainly for emulators
|
||||
APP_STL := c++_static
|
||||
APP_MODULES := libpng libjpeg main SDL
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,76 +1,18 @@
|
||||
#NAME:Nightmare
|
||||
#DESC:I had a terrible Nightmare once
|
||||
#DESC:and then a second
|
||||
#DESC:and a third
|
||||
#DESC:and then I won.
|
||||
#2x Obsianus Golem
|
||||
1129
|
||||
1129
|
||||
#2x animate dead
|
||||
1143
|
||||
1143
|
||||
#2x Bad Moon
|
||||
1144
|
||||
1144
|
||||
#2x Bog Wraith
|
||||
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)
|
||||
#DESC:'All evil is as a nightmare'
|
||||
#DESC:Thomas Carlyle
|
||||
#DESC:
|
||||
#DESC:Win matches to unlock more
|
||||
#DESC:opponents, sets and game modes
|
||||
Air Elemental (RV) (*) * 2
|
||||
Animate Dead (RV) (*) * 2
|
||||
Bad Moon (RV) (*) * 2
|
||||
Bog Wraith (RV) (*) * 2
|
||||
Cursed Land (RV) (*) * 1
|
||||
El-Hajjaj (RV) (*) * 2
|
||||
Fear (RV) (*) * 1
|
||||
Hypnotic Specter (RV) (*) * 2
|
||||
# RV Islands
|
||||
1392
|
||||
1392
|
||||
1392
|
||||
@@ -83,3 +25,26 @@
|
||||
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
|
||||
#DESC:Supported by elemental rage
|
||||
#DESC:goblins descend from the mountains
|
||||
#DESC:to conquer the lands below.
|
||||
|
||||
# (PSY) added 2 Mountains, 1 Black Vise, 1 Howling Mine
|
||||
# (would've been better to add creatures, but all creatures in the
|
||||
# deck were already at 4 pieces))
|
||||
|
||||
# Land(s)
|
||||
Mountain (8ED) * 20
|
||||
|
||||
# Creature(s)
|
||||
#DESC:'What the howling deep down
|
||||
#DESC:there conceals, no blessed
|
||||
#DESC:living soul can tell'
|
||||
#DESC:Friedrich Schiller
|
||||
#DESC:
|
||||
#DESC:Win matches to unlock more
|
||||
#DESC:opponents, sets and game modes
|
||||
Black Vise (MPS) * 4
|
||||
Goblin King (8ED) * 4
|
||||
Goblin Mountaineer (9ED) * 4
|
||||
Goblin Piker (9ED) * 4
|
||||
Goblin Striker (MRD) * 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
|
||||
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
|
||||
#DESC:The forces of fire and nature unite.
|
||||
#DESC:Beware the fires deep in
|
||||
#DESC:the boreal forest
|
||||
#DESC:
|
||||
#DESC:Can you withstand
|
||||
#DESC:their combined fervor?
|
||||
#2x Cockatrice
|
||||
1238
|
||||
1238
|
||||
#3x Craw Wurm
|
||||
1239
|
||||
1239
|
||||
1239
|
||||
#2x Elvish Archers
|
||||
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)
|
||||
#DESC:Win matches to unlock more
|
||||
#DESC:opponents, sets and game modes
|
||||
Cockatrice (RV) (*) * 2
|
||||
Craw Wurm (RV) (*) * 3
|
||||
Earth Elemental (RV) (*) * 2
|
||||
Elvish Archers (RV) (*) * 2
|
||||
Firebreathing (RV) (*) * 1
|
||||
Fire Elemental (RV) (*) * 2
|
||||
Flashfires (RV) (*) * 2
|
||||
# RV Forests
|
||||
1386
|
||||
1386
|
||||
1386
|
||||
@@ -73,7 +24,12 @@
|
||||
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
|
||||
@@ -86,3 +42,9 @@
|
||||
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
|
||||
#DESC:United against the terrible
|
||||
#DESC:Phyrexian Fate,
|
||||
#DESC:there is no time for dispute
|
||||
#DESC:or rivalries
|
||||
#DESC:in Eladamri and Gerrard's army
|
||||
# (PSY) 2x Benalish Hero not available any more, removed (deck has still >60 cards)
|
||||
# (PSY) 2x Mesa Pegasus not available any more, removed (deck has still >60 cards)
|
||||
|
||||
# Land(s)
|
||||
Forest (8ED) * 13
|
||||
Plains (8ED) * 9
|
||||
|
||||
# Creature(s)
|
||||
#DESC:Beasts stalk their prey
|
||||
#DESC:among the tall grasses
|
||||
#DESC:
|
||||
#DESC:
|
||||
#DESC:Win matches to unlock more
|
||||
#DESC:opponents, sets and game modes
|
||||
Armageddon (VMA) * 1
|
||||
Black Vise (V10) * 2
|
||||
Builder's Blessing (AVR) * 2
|
||||
Cockatrice (TSB) * 2
|
||||
Craw Wurm (9ED) * 2
|
||||
Crusade (DDF) * 2
|
||||
Forest (8ED) * 4
|
||||
Forest (9ED) * 4
|
||||
Forest (MRD) * 1
|
||||
Forest (ONS) * 4
|
||||
Giant Spider (AKH) * 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
|
||||
Savannah Lions (A25) * 2
|
||||
Scute Mob (ZEN) * 3
|
||||
Serra Angel (M13) * 2
|
||||
Jukai Messenger (CHK) * 4
|
||||
Kessig Recluse (DKA) * 2
|
||||
Rhox Charger (ALA) * 1
|
||||
|
||||
# Artifact(s)
|
||||
Black Vise (V10) * 2
|
||||
Spitting Spider (8ED) * 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
|
||||
|
||||
@@ -1,64 +1,23 @@
|
||||
#NAME:Plateau
|
||||
#DESC:In the highland of Boros
|
||||
#DESC:Angels, elementals and goblins
|
||||
#DESC:are preparing for battle.
|
||||
#DESC:Beware, the crusade is coming...
|
||||
#4x Lightning Helix {W}{R} - does 3 damage and you gain 3 life replacement for #2x Black Vise (1097) and #2x The Rack (1139)
|
||||
87908
|
||||
87908
|
||||
87908
|
||||
87908
|
||||
# (PSY) added a third Bull Cerodon to bring the deck to 60 cards
|
||||
#2x Bull Cerodon replacement for #3x Earth Elementat {3}{R}{R} -4/5 (1287)
|
||||
174952
|
||||
174952
|
||||
174952
|
||||
#2x Fire Elemental {3}{R}{R} - 5/4
|
||||
1290
|
||||
1290
|
||||
#2 x Nobilis of War {RW}{RW}{RW}{RW}{RW} replacement for 2x Fire elemental (1290)
|
||||
154258
|
||||
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
|
||||
#DESC:There are no hiding places
|
||||
#DESC:on the high steppes beyond
|
||||
#DESC:the mountain passes
|
||||
#DESC:
|
||||
#DESC:Win matches to unlock more
|
||||
#DESC:opponents, sets and game modes
|
||||
Boros Recruit (RAV) * 4
|
||||
Bull Cerodon (ALA) * 3
|
||||
Castle (RV) * 2
|
||||
Cerodon Yearling (ARB) * 2
|
||||
Crusade (RV) * 1
|
||||
Fire Elemental (RV) * 2
|
||||
Goblin King (10E) * 2
|
||||
Hearthfire Hobgoblin (EVE) * 2
|
||||
Hill Giant (RV) * 1
|
||||
Keldon Warlord (RV) * 1
|
||||
Lightning Helix (RAV) * 4
|
||||
Mons's Goblin Raiders (RV) * 1
|
||||
# RV Mountains
|
||||
1389
|
||||
1389
|
||||
1389
|
||||
@@ -71,7 +30,9 @@
|
||||
1391
|
||||
1391
|
||||
1391
|
||||
#Plains
|
||||
Nobilis of War (EVE) * 2
|
||||
Orcish Oriflamme (RV) * 1
|
||||
# RV Plains
|
||||
1395
|
||||
1395
|
||||
1395
|
||||
@@ -84,3 +45,7 @@
|
||||
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
|
||||
#DESC:Dangerous foes await you.
|
||||
#DESC:Both undead, goblins, and
|
||||
#DESC:other abominations will
|
||||
#DESC:fight you recklessly.
|
||||
#Ankh of Mishra
|
||||
1094
|
||||
1094
|
||||
1094
|
||||
1094
|
||||
#Armageddon Clock
|
||||
1095
|
||||
#Black Vise
|
||||
1097
|
||||
1097
|
||||
#Dancing Scimitar
|
||||
1104
|
||||
1104
|
||||
#Howling Mine
|
||||
1112
|
||||
#The Rack
|
||||
1139
|
||||
1139
|
||||
#Bad Moon
|
||||
1144
|
||||
1144
|
||||
#Black Knight
|
||||
1145
|
||||
1145
|
||||
#Drudge Skeletons
|
||||
1157
|
||||
1157
|
||||
1157
|
||||
1157
|
||||
#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
|
||||
#DESC:The badlands are full of
|
||||
#DESC:treachery; even the paths
|
||||
#DESC:through the marshes will
|
||||
#DESC:mislead and betray
|
||||
#DESC:
|
||||
#DESC:Win matches to unlock more
|
||||
#DESC:opponents, sets and game modes
|
||||
Ankh of Mishra (RV) * 4
|
||||
Armageddon Clock (RV) * 1
|
||||
Bad Moon (RV) * 2
|
||||
Black Knight (RV) * 2
|
||||
Black Vise (RV) * 2
|
||||
Dancing Scimitar (RV) * 2
|
||||
Drudge Skeletons (RV) * 4
|
||||
El-Hajjaj (RV) * 2
|
||||
Goblin King (RV) * 2
|
||||
Howling Mine (RV) * 1
|
||||
Hypnotic Specter (RV) * 2
|
||||
Mons's Goblin Raiders (RV) * 4
|
||||
# RV Mountains
|
||||
1389
|
||||
1390
|
||||
1391
|
||||
1389
|
||||
1390
|
||||
1391
|
||||
1389
|
||||
1390
|
||||
1391
|
||||
Orcish Oriflamme (RV) * 2
|
||||
Scathe Zombies (RV) * 4
|
||||
Sedge Troll (RV) * 3
|
||||
# RV Swamps
|
||||
1373
|
||||
1374
|
||||
1375
|
||||
@@ -73,13 +42,6 @@
|
||||
1374
|
||||
1375
|
||||
1373
|
||||
#Mountain
|
||||
1389
|
||||
1390
|
||||
1391
|
||||
1389
|
||||
1390
|
||||
1391
|
||||
1389
|
||||
1390
|
||||
1391
|
||||
The Rack (RV) * 2
|
||||
Wheel of Fortune (RV) * 1
|
||||
Zombie Master (RV) * 1
|
||||
|
||||
@@ -1,66 +1,18 @@
|
||||
#NAME:Yavimaya
|
||||
#DESC:Beasts of the woods and the
|
||||
#DESC:seas are gathering, preparing
|
||||
#DESC:for battle.
|
||||
#Armageddon Clock
|
||||
1095
|
||||
#Obsianus Golem
|
||||
1129
|
||||
1129
|
||||
#Air Elemental
|
||||
1189
|
||||
1189
|
||||
1189
|
||||
1189
|
||||
#Lifetap
|
||||
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
|
||||
#DESC:On the island of Yavimaya
|
||||
#DESC:the forest is not just
|
||||
#DESC:ancient and wild. It is
|
||||
#DESC:also sentient.
|
||||
#DESC:
|
||||
#DESC:Win matches to unlock more
|
||||
#DESC:opponents, sets and game modes
|
||||
#HINT:combo hold(Tranquility|myhand)^cast(Tranquility|myhand)^restriction{type(enchantment|opponentbattlefield)~morethan~0}^totalmananeeded({2}{G})
|
||||
Air Elemental (RV) * 4
|
||||
Armageddon Clock (RV) * 1
|
||||
Cockatrice (RV) * 1
|
||||
Craw Wurm (RV) * 1
|
||||
Elvish Archers (RV) * 2
|
||||
# RV Forests
|
||||
1386
|
||||
1387
|
||||
1388
|
||||
@@ -73,7 +25,9 @@
|
||||
1386
|
||||
1387
|
||||
1388
|
||||
#Island
|
||||
Giant Spider (RV) * 2
|
||||
Grizzly Bears (RV) * 2
|
||||
# RV Islands
|
||||
1392
|
||||
1393
|
||||
1394
|
||||
@@ -86,3 +40,14 @@
|
||||
1392
|
||||
1393
|
||||
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
|
||||
#DESC:O miserable of happy
|
||||
#DESC:Is this the end
|
||||
#DESC:Of this new glorious world
|
||||
# Land(s)
|
||||
Plains (8ED) * 21
|
||||
|
||||
# Creature(s)
|
||||
#DESC:The truly wrathful person
|
||||
#DESC:harms themselves as much as
|
||||
#DESC:their enemies
|
||||
#DESC:
|
||||
#DESC:Win matches to unlock more
|
||||
#DESC:opponents, sets and game modes
|
||||
#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
|
||||
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
|
||||
Serra Angel (8ED) * 4
|
||||
Sigiled Paladin (ALA) * 4
|
||||
Skyhunter Skirmisher (5DN) * 3
|
||||
White Knight (M10) * 4
|
||||
|
||||
# Enchantment(s)
|
||||
Crusade (DDF) * 4
|
||||
|
||||
# Instant(s)
|
||||
Swords to Plowshares (DDF) * 4
|
||||
|
||||
# Sorcery(s)
|
||||
Armageddon (VMA) * 4
|
||||
Wrath of God (8ED) * 3
|
||||
White Knight (M10) * 4
|
||||
Wrath of God (8ED) * 3
|
||||
|
||||
@@ -1,58 +1,16 @@
|
||||
#Mill /Artifact Game for AI
|
||||
#NAME:Inquisitor
|
||||
#DESC:Black vises in Ivory Towers
|
||||
#DESC:await you, when facing
|
||||
#DESC:this artificially created army,
|
||||
#DESC:designed to completely stop
|
||||
#DESC:your progress, and then
|
||||
#DESC:torture you to death.
|
||||
#4x Howling Mine
|
||||
129598
|
||||
129598
|
||||
129598
|
||||
129598
|
||||
#4 x Black Vise
|
||||
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
|
||||
#DESC:'The voice of nature is
|
||||
#DESC:worthless in front of
|
||||
#DESC:the Inquisition'
|
||||
#DESC:Friedrich Schiller
|
||||
#DESC:
|
||||
#DESC:Win matches to unlock more
|
||||
#DESC:opponents, sets and game modes
|
||||
Black Vise (RV) * 4
|
||||
Clockwork Beast (RV) * 4
|
||||
Dancing Scimitar (RV) * 4
|
||||
Howling Mine (10E) * 4
|
||||
# 10E Islands
|
||||
129606
|
||||
129606
|
||||
129606
|
||||
@@ -63,15 +21,11 @@
|
||||
129607
|
||||
129608
|
||||
129609
|
||||
#7swamps
|
||||
129755
|
||||
129756
|
||||
129757
|
||||
129754
|
||||
129755
|
||||
129756
|
||||
129757
|
||||
#7Plains
|
||||
Ivory Tower (RV) * 4
|
||||
Living Wall (RV) * 4
|
||||
Master of Etherium (ALA) * 4
|
||||
Obsianus Golem (RV) * 4
|
||||
# 10E Plains
|
||||
129681
|
||||
129682
|
||||
129683
|
||||
@@ -79,3 +33,12 @@
|
||||
129681
|
||||
129682
|
||||
129683
|
||||
# 10E Swamps
|
||||
129755
|
||||
129756
|
||||
129757
|
||||
129754
|
||||
129755
|
||||
129756
|
||||
129757
|
||||
Tower Gargoyle (ALA) * 4
|
||||
|
||||
@@ -1,22 +1,23 @@
|
||||
#NAME:Shatter
|
||||
#DESC:See all your efforts shattered
|
||||
#DESC:by the all-consuming power
|
||||
#DESC:of righteous fury.
|
||||
# Land(s)
|
||||
Mountain (8ED) * 12
|
||||
Plains (8ED) * 12
|
||||
|
||||
# Creature(s)
|
||||
#DESC:See your efforts shattered
|
||||
#DESC:by righteous fury
|
||||
#DESC:
|
||||
#DESC:Win matches to unlock more
|
||||
#DESC:opponents, sets and game modes
|
||||
Anaba Bodyguard (10E) * 4
|
||||
Ancestor's Chosen (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
|
||||
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
|
||||
Tempest of Light (MRD) * 2
|
||||
Steadfast Guard (10E) * 4
|
||||
Suntail Hawk (8ED) * 2
|
||||
Tempest of Light (MRD) * 2
|
||||
Thundering Giant (10E) * 4
|
||||
|
||||
@@ -3,219 +3,9 @@ author=Wagic Team
|
||||
name=Commander 2021
|
||||
orderindex=COM-P.C21
|
||||
year=2021-04-23
|
||||
total=371
|
||||
total=410
|
||||
[/meta]
|
||||
[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
|
||||
id=518307
|
||||
rarity=M
|
||||
@@ -938,7 +728,7 @@ rarity=C
|
||||
[card]
|
||||
primitive=Greed
|
||||
id=519180
|
||||
rarity=R
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Infernal Offering
|
||||
@@ -1703,7 +1493,7 @@ rarity=R
|
||||
[card]
|
||||
primitive=Lonely Sandbar
|
||||
id=519333
|
||||
rarity=C
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Lumbering Falls
|
||||
@@ -1788,7 +1578,7 @@ rarity=R
|
||||
[card]
|
||||
primitive=Secluded Steppe
|
||||
id=519350
|
||||
rarity=C
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Shivan Reef
|
||||
@@ -1851,6 +1641,406 @@ id=519362
|
||||
rarity=R
|
||||
[/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
|
||||
id=519363
|
||||
rarity=C
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -2,7 +2,7 @@
|
||||
author=Wagic Team
|
||||
name=Dominaria United Commander
|
||||
year=2022-09-09
|
||||
total=219
|
||||
total=241
|
||||
[/meta]
|
||||
[card]
|
||||
primitive=Dihada, Binder of Wills
|
||||
@@ -250,6 +250,11 @@ id=578711
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Jared Carthalion
|
||||
id=578712
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Historian's Boon
|
||||
id=580393
|
||||
rarity=R
|
||||
|
||||
@@ -46,7 +46,7 @@ rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Seasoned Cathar
|
||||
id=685822
|
||||
id=685823
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -66,7 +66,7 @@ rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Avacyn, the Purifier
|
||||
id=685826
|
||||
id=685827
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -86,7 +86,7 @@ rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Brisela, Voice of Nightmares
|
||||
id=686144
|
||||
id=686145
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -181,7 +181,7 @@ rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Luminous Phantom
|
||||
id=685848
|
||||
id=685849
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -256,7 +256,7 @@ rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Incited Rabble
|
||||
id=685863
|
||||
id=685864
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -266,7 +266,7 @@ rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Twinblade Invocation
|
||||
id=685865
|
||||
id=685866
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -291,7 +291,7 @@ rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Wedding Festivity
|
||||
id=685870
|
||||
id=685871
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -301,7 +301,7 @@ rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Perfected Form
|
||||
id=685872
|
||||
id=685873
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -316,7 +316,7 @@ rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Biolume Serpent
|
||||
id=685875
|
||||
id=685876
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -341,7 +341,7 @@ rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Ghostly Castigator
|
||||
id=685880
|
||||
id=685881
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -356,7 +356,7 @@ rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Insectile Aberration
|
||||
id=685883
|
||||
id=685884
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -371,7 +371,7 @@ rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Final Iteration
|
||||
id=685886
|
||||
id=685887
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -401,7 +401,7 @@ rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Grisly Anglerfish
|
||||
id=685892
|
||||
id=685893
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -431,7 +431,7 @@ rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Lanterns' Lift
|
||||
id=685898
|
||||
id=685899
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -501,7 +501,7 @@ rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Cipherbound Spirit
|
||||
id=685912
|
||||
id=685913
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -536,7 +536,7 @@ rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Awoken Horror
|
||||
id=685919
|
||||
id=685920
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -576,7 +576,7 @@ rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Lord of Lineage
|
||||
id=685927
|
||||
id=685928
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -616,7 +616,7 @@ rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Depraved Harvester
|
||||
id=685935
|
||||
id=685936
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -631,7 +631,7 @@ rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Awoken Demon
|
||||
id=685938
|
||||
id=685939
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -701,7 +701,7 @@ rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Deluge of the Dead
|
||||
id=685952
|
||||
id=685953
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -721,7 +721,7 @@ rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Chittering Host
|
||||
id=686143
|
||||
id=686144
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -751,7 +751,7 @@ rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Bloodsoaked Reveler
|
||||
id=685961
|
||||
id=685962
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -806,7 +806,7 @@ rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Bloodbat Summoner
|
||||
id=685972
|
||||
id=685973
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -871,7 +871,7 @@ rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Conduit of Emrakul
|
||||
id=685985
|
||||
id=685986
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -906,7 +906,7 @@ rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Vildin-Pack Alpha
|
||||
id=685992
|
||||
id=685993
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -916,7 +916,7 @@ rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Hanweir, the Writhing Township
|
||||
id=686145
|
||||
id=686146
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -926,7 +926,7 @@ rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Bane of Hanweir
|
||||
id=685995
|
||||
id=685996
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -946,7 +946,7 @@ rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Terror of Kruin Pass
|
||||
id=685999
|
||||
id=686000
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -1001,7 +1001,7 @@ rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Erupting Dreadwolf
|
||||
id=686010
|
||||
id=686011
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -1046,7 +1046,7 @@ rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Moonrise Intruder
|
||||
id=686019
|
||||
id=686020
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -1121,7 +1121,7 @@ rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Krallenhorde Howler
|
||||
id=686034
|
||||
id=686035
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -1146,7 +1146,7 @@ rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Garruk, the Veil-Cursed
|
||||
id=686039
|
||||
id=686040
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -1181,7 +1181,7 @@ rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Timber Shredder
|
||||
id=686046
|
||||
id=686047
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -1206,7 +1206,7 @@ rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Howlpack Alpha
|
||||
id=686051
|
||||
id=686052
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -1236,7 +1236,7 @@ rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Moonscarred Werewolf
|
||||
id=686057
|
||||
id=686058
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -1251,7 +1251,7 @@ rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Howling Chorus
|
||||
id=686060
|
||||
id=686061
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -1306,7 +1306,7 @@ rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Howlpack of Estwald
|
||||
id=686071
|
||||
id=686072
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -1341,7 +1341,7 @@ rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Arlinn, Embraced by the Moon
|
||||
id=686078
|
||||
id=686079
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -1401,7 +1401,7 @@ rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Ravager of the Fells
|
||||
id=686090
|
||||
id=686091
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -1486,7 +1486,7 @@ rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Chalice of Death
|
||||
id=686107
|
||||
id=686108
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -1506,7 +1506,7 @@ rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Aurora of Emrakul
|
||||
id=686111
|
||||
id=686112
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -1536,7 +1536,7 @@ rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Scrounged Scythe
|
||||
id=686117
|
||||
id=686118
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -1561,7 +1561,7 @@ rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Ashmouth Blade
|
||||
id=686122
|
||||
id=686123
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -1656,7 +1656,7 @@ rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Ormendahl, Profane Prince
|
||||
id=686141
|
||||
id=686142
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -1841,7 +1841,7 @@ rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Krallenhorde Howler
|
||||
id=688901
|
||||
id=688902
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -1851,7 +1851,7 @@ rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Arlinn, Embraced by the Moon
|
||||
id=688903
|
||||
id=688904
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -1861,7 +1861,7 @@ rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Ravager of the Fells
|
||||
id=688905
|
||||
id=688906
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -1876,7 +1876,7 @@ rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Lord of Lineage
|
||||
id=688878
|
||||
id=688879
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -2486,7 +2486,7 @@ rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Seasoned Cathar
|
||||
id=687803
|
||||
id=687804
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -2496,7 +2496,7 @@ rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Avacyn, the Purifier
|
||||
id=687805
|
||||
id=687806
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -2506,7 +2506,7 @@ rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Luminous Phantom
|
||||
id=687807
|
||||
id=687808
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -2516,7 +2516,7 @@ rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Incited Rabble
|
||||
id=687809
|
||||
id=687810
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -2526,7 +2526,7 @@ rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Twinblade Invocation
|
||||
id=687811
|
||||
id=687812
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -2536,7 +2536,7 @@ rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Wedding Festivity
|
||||
id=687813
|
||||
id=687814
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -2546,7 +2546,7 @@ rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Perfected Form
|
||||
id=687815
|
||||
id=687816
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -2556,7 +2556,7 @@ rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Biolume Serpent
|
||||
id=687817
|
||||
id=687818
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -2566,7 +2566,7 @@ rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Ghostly Castigator
|
||||
id=687819
|
||||
id=687820
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -2576,7 +2576,7 @@ rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Insectile Aberration
|
||||
id=687821
|
||||
id=687822
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -2586,7 +2586,7 @@ rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Grisly Anglerfish
|
||||
id=687823
|
||||
id=687824
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -2596,7 +2596,7 @@ rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Cipherbound Spirit
|
||||
id=687825
|
||||
id=687826
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -2606,7 +2606,7 @@ rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Awoken Horror
|
||||
id=687827
|
||||
id=687828
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -2616,7 +2616,7 @@ rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Lord of Lineage
|
||||
id=687829
|
||||
id=687830
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -2626,7 +2626,7 @@ rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Awoken Demon
|
||||
id=687831
|
||||
id=687832
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -2636,7 +2636,7 @@ rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Bloodsoaked Reveler
|
||||
id=687833
|
||||
id=687834
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -2646,7 +2646,7 @@ rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Vildin-Pack Alpha
|
||||
id=687835
|
||||
id=687836
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -2656,7 +2656,7 @@ rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Erupting Dreadwolf
|
||||
id=687837
|
||||
id=687838
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -2666,7 +2666,7 @@ rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Moonrise Intruder
|
||||
id=687839
|
||||
id=687840
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -2676,7 +2676,7 @@ rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Krallenhorde Howler
|
||||
id=687841
|
||||
id=687842
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -2686,7 +2686,7 @@ rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Moonscarred Werewolf
|
||||
id=687843
|
||||
id=687844
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -2696,7 +2696,7 @@ rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Howling Chorus
|
||||
id=687845
|
||||
id=687846
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -2706,7 +2706,7 @@ rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Ravager of the Fells
|
||||
id=687847
|
||||
id=687848
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -2716,7 +2716,7 @@ rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Chalice of Death
|
||||
id=687849
|
||||
id=687850
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -2726,7 +2726,7 @@ rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Aurora of Emrakul
|
||||
id=687851
|
||||
id=687852
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -2736,7 +2736,7 @@ rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Ashmouth Blade
|
||||
id=687853
|
||||
id=687854
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -2746,7 +2746,7 @@ rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Ormendahl, Profane Prince
|
||||
id=687855
|
||||
id=687856
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
|
||||
@@ -4,7 +4,8 @@ name=Tales of Middle-earth Commander
|
||||
year=2023-06-23
|
||||
total=592
|
||||
[/meta]
|
||||
-primitive=The Monarch
|
||||
[card]
|
||||
primitive=The Monarch
|
||||
id=-999905
|
||||
rarity=T
|
||||
[/card]
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
author=Wagic Team
|
||||
name=Modern Horizons 3
|
||||
year=2024-06-14
|
||||
total=558
|
||||
total=560
|
||||
[/meta]
|
||||
[card]
|
||||
primitive=Breaker of Creation
|
||||
@@ -980,12 +980,7 @@ id=662347
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Ondu Knotmaster
|
||||
id=662348
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Throw a Line
|
||||
primitive=Ondu Knotmaster // Throw a Line
|
||||
id=662348
|
||||
rarity=U
|
||||
[/card]
|
||||
@@ -1197,7 +1192,7 @@ rarity=M
|
||||
[card]
|
||||
primitive=Ajani, Nacatl Avenger
|
||||
id=661754
|
||||
rarity=M
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Razorgrass Ambush
|
||||
@@ -1207,7 +1202,7 @@ rarity=U
|
||||
[card]
|
||||
primitive=Razorgrass Field
|
||||
id=661756
|
||||
rarity=U
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Witch Enchanter
|
||||
@@ -1217,7 +1212,7 @@ rarity=U
|
||||
[card]
|
||||
primitive=Witch-Blessed Meadow
|
||||
id=661758
|
||||
rarity=U
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Hydroelectric Specimen
|
||||
@@ -1227,7 +1222,7 @@ rarity=U
|
||||
[card]
|
||||
primitive=Hydroelectric Laboratory
|
||||
id=661760
|
||||
rarity=U
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Sink into Stupor
|
||||
@@ -1237,7 +1232,7 @@ rarity=U
|
||||
[card]
|
||||
primitive=Soporific Springs
|
||||
id=661762
|
||||
rarity=U
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Tamiyo, Inquisitive Student
|
||||
@@ -1247,7 +1242,7 @@ rarity=M
|
||||
[card]
|
||||
primitive=Tamiyo, Seasoned Scholar
|
||||
id=661764
|
||||
rarity=M
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Boggart Trawler
|
||||
@@ -1257,7 +1252,7 @@ rarity=U
|
||||
[card]
|
||||
primitive=Boggart Bog
|
||||
id=661766
|
||||
rarity=U
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Fell the Profane
|
||||
@@ -1267,7 +1262,7 @@ rarity=U
|
||||
[card]
|
||||
primitive=Fell Mire
|
||||
id=661768
|
||||
rarity=U
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Sorin of House Markov
|
||||
@@ -1277,7 +1272,7 @@ rarity=M
|
||||
[card]
|
||||
primitive=Sorin, Ravenous Neonate
|
||||
id=661770
|
||||
rarity=M
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Pinnacle Monk
|
||||
@@ -1287,7 +1282,7 @@ rarity=U
|
||||
[card]
|
||||
primitive=Mystic Peak
|
||||
id=661772
|
||||
rarity=U
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Ral, Monsoon Mage
|
||||
@@ -1297,7 +1292,7 @@ rarity=M
|
||||
[card]
|
||||
primitive=Ral, Leyline Prodigy
|
||||
id=661774
|
||||
rarity=M
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Sundering Eruption
|
||||
@@ -1307,7 +1302,7 @@ rarity=U
|
||||
[card]
|
||||
primitive=Volcanic Fissure
|
||||
id=661776
|
||||
rarity=U
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Bridgeworks Battle
|
||||
@@ -1317,7 +1312,7 @@ rarity=U
|
||||
[card]
|
||||
primitive=Tanglespan Bridgeworks
|
||||
id=661778
|
||||
rarity=U
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Disciple of Freyalise
|
||||
@@ -1327,7 +1322,7 @@ rarity=U
|
||||
[card]
|
||||
primitive=Garden of Freyalise
|
||||
id=661780
|
||||
rarity=U
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Grist, Voracious Larva
|
||||
@@ -1337,7 +1332,7 @@ rarity=M
|
||||
[card]
|
||||
primitive=Grist, the Plague Swarm
|
||||
id=661782
|
||||
rarity=M
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Bloodsoaked Insight
|
||||
@@ -1347,7 +1342,7 @@ rarity=U
|
||||
[card]
|
||||
primitive=Sanguine Morass
|
||||
id=661784
|
||||
rarity=U
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Drowner of Truth
|
||||
@@ -1357,7 +1352,7 @@ rarity=U
|
||||
[card]
|
||||
primitive=Drowned Jungle
|
||||
id=661786
|
||||
rarity=U
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Glasswing Grace
|
||||
@@ -1367,7 +1362,7 @@ rarity=U
|
||||
[card]
|
||||
primitive=Age-Graced Chapel
|
||||
id=661788
|
||||
rarity=U
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Legion Leadership
|
||||
@@ -1377,7 +1372,7 @@ rarity=U
|
||||
[card]
|
||||
primitive=Legion Stronghold
|
||||
id=661790
|
||||
rarity=U
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Revitalizing Repast
|
||||
@@ -1387,7 +1382,7 @@ rarity=U
|
||||
[card]
|
||||
primitive=Old-Growth Grove
|
||||
id=661792
|
||||
rarity=U
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Rush of Inspiration
|
||||
@@ -1397,7 +1392,7 @@ rarity=U
|
||||
[card]
|
||||
primitive=Crackling Falls
|
||||
id=661794
|
||||
rarity=U
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Strength of the Harvest
|
||||
@@ -1407,7 +1402,7 @@ rarity=U
|
||||
[card]
|
||||
primitive=Haven of the Harvest
|
||||
id=661796
|
||||
rarity=U
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Stump Stomp
|
||||
@@ -1417,7 +1412,7 @@ rarity=U
|
||||
[card]
|
||||
primitive=Burnwillow Clearing
|
||||
id=661798
|
||||
rarity=U
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Suppression Ray
|
||||
@@ -1427,7 +1422,7 @@ rarity=U
|
||||
[card]
|
||||
primitive=Orderly Plaza
|
||||
id=661800
|
||||
rarity=U
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Waterlogged Teachings
|
||||
@@ -1437,7 +1432,7 @@ rarity=U
|
||||
[card]
|
||||
primitive=Inundated Archive
|
||||
id=661802
|
||||
rarity=U
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Angel of the Ruins
|
||||
@@ -2346,8 +2341,8 @@ rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Ajani, Nacatl Avenger
|
||||
id=661309
|
||||
rarity=M
|
||||
id=661310
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Tamiyo, Inquisitive Student
|
||||
@@ -2356,8 +2351,8 @@ rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Tamiyo, Seasoned Scholar
|
||||
id=661311
|
||||
rarity=M
|
||||
id=661312
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Sorin of House Markov
|
||||
@@ -2366,8 +2361,8 @@ rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Sorin, Ravenous Neonate
|
||||
id=661313
|
||||
rarity=M
|
||||
id=661314
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Ral, Monsoon Mage
|
||||
@@ -2376,8 +2371,8 @@ rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Ral, Leyline Prodigy
|
||||
id=661315
|
||||
rarity=M
|
||||
id=661316
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Grist, Voracious Larva
|
||||
@@ -2386,8 +2381,8 @@ rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Grist, the Plague Swarm
|
||||
id=661317
|
||||
rarity=M
|
||||
id=661318
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Argent Dais
|
||||
|
||||
@@ -3,204 +3,9 @@ author=Wagic Team
|
||||
name=Strixhaven: School of Mages
|
||||
orderindex=EXP-ZZI.STX
|
||||
year=2021-04-23
|
||||
total=340
|
||||
total=415
|
||||
[/meta]
|
||||
[card]
|
||||
primitive=Pest
|
||||
id=-513734
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Spirit
|
||||
id=-513728
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Inkling
|
||||
id=-513722
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Spirit
|
||||
id=-513712
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Pest
|
||||
id=-513703
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Fractal
|
||||
id=-513697
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Spirit
|
||||
id=-513696
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Elemental
|
||||
id=-513695
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Spirit
|
||||
id=-513692
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Spirit
|
||||
id=-513691
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Fractal
|
||||
id=-513688
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Inkling
|
||||
id=-513687
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Fractal
|
||||
id=-513679
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Elemental
|
||||
id=-513675
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Elemental
|
||||
id=-513674
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Elemental
|
||||
id=-513673
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Inkling
|
||||
id=-513672
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Treasure
|
||||
id=-513663
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Fractal
|
||||
id=-513660
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Inkling
|
||||
id=-513659
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Fractal
|
||||
id=-513656
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Pest
|
||||
id=-513655
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Pest
|
||||
id=-513652
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Pest
|
||||
id=-513638
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Fractal
|
||||
id=-513634
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Pest
|
||||
id=-513617
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Fractal
|
||||
id=-513613
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Pest
|
||||
id=-513602
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Spirit
|
||||
id=-513586
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Spirit
|
||||
id=-513585
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Inkling
|
||||
id=-513566
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Pest
|
||||
id=-513563
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Pest
|
||||
id=-513550
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Pest
|
||||
id=-513543
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Fractal
|
||||
id=-513529
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Elemental
|
||||
id=-513528
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Elemental
|
||||
id=-513525
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Spirit
|
||||
id=-513502
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Inkling
|
||||
id=-513481
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Environmental Sciences
|
||||
id=513477
|
||||
rarity=C
|
||||
@@ -937,42 +742,42 @@ rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Augmenter Pugilist
|
||||
id=513624
|
||||
id=513625
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Echoing Equation
|
||||
id=513625
|
||||
id=513624
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Blex, Vexing Pest
|
||||
id=513626
|
||||
id=513627
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Search for Blex
|
||||
id=513627
|
||||
id=513626
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Extus, Oriq Overlord
|
||||
id=513628
|
||||
id=516912
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Awaken the Blood Avatar
|
||||
id=513629
|
||||
id=516913
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Flamescroll Celebrant
|
||||
id=513630
|
||||
id=513631
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Revel in Silence
|
||||
id=513631
|
||||
id=513630
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -987,52 +792,52 @@ rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Kianne, Dean of Substance
|
||||
id=513634
|
||||
id=516918
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Imbraham, Dean of Theory
|
||||
id=513635
|
||||
id=516919
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Mila, Crafty Companion
|
||||
id=513636
|
||||
id=516789
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Lukka, Wayward Bonder
|
||||
id=513637
|
||||
id=516790
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Pestilent Cauldron
|
||||
id=513638
|
||||
id=516920
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Restorative Burst
|
||||
id=513639
|
||||
id=516921
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Plargg, Dean of Chaos
|
||||
id=513640
|
||||
id=516922
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Augusta, Dean of Order
|
||||
id=513641
|
||||
id=516923
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Rowan, Scholar of Sparks
|
||||
id=513642
|
||||
id=516792
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Will, Scholar of Frost
|
||||
id=513643
|
||||
id=516791
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -1057,12 +862,12 @@ rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Torrent Sculptor
|
||||
id=513648
|
||||
id=516928
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Flamethrower Sonata
|
||||
id=513649
|
||||
id=516929
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
@@ -1656,52 +1461,617 @@ id=513767
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Professor Onyx
|
||||
id=516788
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Mila, Crafty Companion
|
||||
id=513636
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Lukka, Wayward Bonder
|
||||
id=513637
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Rowan, Scholar of Sparks
|
||||
id=513643
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Will, Scholar of Frost
|
||||
id=513642
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Kasmina, Enigma Sage
|
||||
id=516793
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Shadrix Silverquill
|
||||
id=517441
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Galazeth Prismari
|
||||
id=517442
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Beledros Witherbloom
|
||||
id=517443
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Velomachus Lorehold
|
||||
id=517444
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Tanazir Quandrix
|
||||
id=517445
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Mascot Exhibition
|
||||
id=516871
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Wandering Archaic
|
||||
id=516872
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Explore the Vastlands
|
||||
id=516873
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Academic Probation
|
||||
id=516874
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Devastating Mastery
|
||||
id=516875
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Elite Spellbinder
|
||||
id=516876
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Leonin Lightscribe
|
||||
id=516877
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Mavinda, Students' Advocate
|
||||
id=516878
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Semester's End
|
||||
id=516879
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Sparring Regimen
|
||||
id=516880
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Strict Proctor
|
||||
id=516881
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Archmage Emeritus
|
||||
id=516882
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Dream Strix
|
||||
id=516883
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Ingenious Mastery
|
||||
id=516884
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Multiple Choice
|
||||
id=516885
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Teachings of the Archaics
|
||||
id=516886
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Tempted by the Oriq
|
||||
id=516887
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Baleful Mastery
|
||||
id=516888
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Callous Bloodmage
|
||||
id=516889
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Confront the Past
|
||||
id=516890
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Oriq Loremage
|
||||
id=516891
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Poet's Quill
|
||||
id=516892
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Sedgemoor Witch
|
||||
id=516893
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Conspiracy Theorist
|
||||
id=516894
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Crackle with Power
|
||||
id=516895
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Draconic Intervention
|
||||
id=516896
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Efreet Flamepainter
|
||||
id=516897
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Fervent Mastery
|
||||
id=516898
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Illuminate History
|
||||
id=516899
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Retriever Phoenix
|
||||
id=516900
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Accomplished Alchemist
|
||||
id=516901
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Basic Conjuration
|
||||
id=516902
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Dragonsguard Elite
|
||||
id=516903
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Ecological Appreciation
|
||||
id=516904
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Exponential Growth
|
||||
id=516905
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Gnarled Professor
|
||||
id=516906
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Verdant Mastery
|
||||
id=516907
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Augmenter Pugilist
|
||||
id=516909
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Echoing Equation
|
||||
id=516908
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Blex, Vexing Pest
|
||||
id=516911
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Search for Blex
|
||||
id=516910
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Extus, Oriq Overlord
|
||||
id=513628
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Awaken the Blood Avatar
|
||||
id=513629
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Flamescroll Celebrant
|
||||
id=516915
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Revel in Silence
|
||||
id=516914
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Jadzi, Oracle of Arcavios
|
||||
id=516916
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Journey to the Oracle
|
||||
id=516917
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Kianne, Dean of Substance
|
||||
id=513634
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Imbraham, Dean of Theory
|
||||
id=513635
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Pestilent Cauldron
|
||||
id=513638
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Restorative Burst
|
||||
id=513639
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Plargg, Dean of Chaos
|
||||
id=513640
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Augusta, Dean of Order
|
||||
id=513641
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Selfless Glyphweaver
|
||||
id=516924
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Deadly Vanity
|
||||
id=516925
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Shaile, Dean of Radiance
|
||||
id=516926
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Embrose, Dean of Shadow
|
||||
id=516927
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Torrent Sculptor
|
||||
id=513648
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Flamethrower Sonata
|
||||
id=513649
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Uvilda, Dean of Perfection
|
||||
id=516930
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Nassari, Dean of Expression
|
||||
id=516931
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Valentin, Dean of the Vein
|
||||
id=516932
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Lisette, Dean of the Root
|
||||
id=516933
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Blade Historian
|
||||
id=516934
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Blot Out the Sky
|
||||
id=516935
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Body of Research
|
||||
id=516936
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Culling Ritual
|
||||
id=516937
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Culmination of Studies
|
||||
id=516938
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Daemogoth Titan
|
||||
id=516939
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Double Major
|
||||
id=516940
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Dramatic Finale
|
||||
id=516941
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Elemental Expressionist
|
||||
id=516942
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Harness Infinity
|
||||
id=516943
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Hofri Ghostforge
|
||||
id=516944
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Lorehold Command
|
||||
id=516945
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Magma Opus
|
||||
id=516946
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Manifestation Sage
|
||||
id=516947
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Prismari Command
|
||||
id=516948
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Quandrix Command
|
||||
id=516949
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Radiant Scrollwielder
|
||||
id=516950
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Rushed Rebirth
|
||||
id=516951
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Silverquill Command
|
||||
id=516952
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Silverquill Silencer
|
||||
id=516953
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Vanishing Verse
|
||||
id=516954
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Venerable Warsinger
|
||||
id=516955
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Witherbloom Command
|
||||
id=516956
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Codie, Vociferous Codex
|
||||
id=516957
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Strixhaven Stadium
|
||||
id=516958
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=The Biblioplex
|
||||
id=516959
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Frostboil Snarl
|
||||
id=516960
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Furycalm Snarl
|
||||
id=516961
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Hall of Oracles
|
||||
id=516962
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Necroblossom Snarl
|
||||
id=516963
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Shineshadow Snarl
|
||||
id=516964
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Vineglimmer Snarl
|
||||
id=516965
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Plains
|
||||
id=516678
|
||||
rarity=C
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Plains
|
||||
id=516679
|
||||
rarity=C
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Island
|
||||
id=516680
|
||||
rarity=C
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Island
|
||||
id=516681
|
||||
rarity=C
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Swamp
|
||||
id=516682
|
||||
rarity=C
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Swamp
|
||||
id=516683
|
||||
rarity=C
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Mountain
|
||||
id=516684
|
||||
rarity=C
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Mountain
|
||||
id=516685
|
||||
rarity=C
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Forest
|
||||
id=516686
|
||||
rarity=C
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Forest
|
||||
id=516687
|
||||
rarity=C
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Dragonsguard Elite
|
||||
id=516860
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Archmage Emeritus
|
||||
id=516854
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Fracture
|
||||
id=517496
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Expressive Iteration
|
||||
id=517497
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Mortality Spear
|
||||
id=517498
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Rip Apart
|
||||
id=517499
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Decisive Denial
|
||||
id=517500
|
||||
rarity=U
|
||||
[/card]
|
||||
|
||||
2056
projects/mtg/bin/Res/sets/TDC/_cards.dat
Normal file
2056
projects/mtg/bin/Res/sets/TDC/_cards.dat
Normal file
File diff suppressed because it is too large
Load Diff
2116
projects/mtg/bin/Res/sets/TDM/_cards.dat
Normal file
2116
projects/mtg/bin/Res/sets/TDM/_cards.dat
Normal file
File diff suppressed because it is too large
Load Diff
136
projects/mtg/bin/Res/sets/UGIN/_cards.dat
Normal file
136
projects/mtg/bin/Res/sets/UGIN/_cards.dat
Normal file
@@ -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]
|
||||
@@ -1,7 +1,6 @@
|
||||
[meta]
|
||||
author=Wagic Team
|
||||
name=Alchemy: Innistrad
|
||||
orderindex=ONL-E.YMID
|
||||
year=2021-12-09
|
||||
total=64
|
||||
[/meta]
|
||||
@@ -217,7 +216,7 @@ rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Rahilda, Feral Outlaw
|
||||
id=548268
|
||||
id=548269
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
|
||||
@@ -163,9 +163,6 @@
|
||||
# Afterlife
|
||||
#AUTO_DEFINE _AFTERLIFETOKEN_ create(Spirit:Creature Spirit:1/1:white:black:flying)
|
||||
|
||||
# Riot
|
||||
#AUTO_DEFINE _RIOT_ movedTo(this|myBattlefield):transforms((,newability[ability$! name(Choose counter or ability) choice name(Put a +1/+1 counter) counter(1/1) target(creature) _ choice name(Gains Haste) haste target(creature) forever !$ controller]))
|
||||
|
||||
# Learn
|
||||
#AUTO_DEFINE _LEARN_ name(Learn) transforms((,newability[if type(*[lesson]|mysideboard)~morethan~0 then choice name(Put lesson in hand) name(Put lesson in hand) target(*[lesson]|mysideboard) moveto(myhand)],newability[if type(*|myhand)~morethan~0 then choice name(Discard and draw) name(Discard and draw) target(*|myhand) reject and!(draw:1)!],newability[if type(Retriever Phoenix|mygraveyard)~morethan~0 then choice name(Return a Retriever Phoenix) name(Return a Retriever Phoenix) target(Retriever Phoenix|mygraveyard) moveto(myBattlefield)],newability[choice name(Don't learn) donothing])) oneshot controller
|
||||
|
||||
@@ -179,13 +176,13 @@
|
||||
#AUTO_DEFINE _FORETELL_ {2}:name(Pay 2 and exile face-down) name(Pay 2 and exile face-down) doforetell myturnonly
|
||||
|
||||
# Plot
|
||||
#AUTO_DEFINE _PLOT_ name(Plot and exile) name(Plot and exile) doforetell asSorcery
|
||||
#AUTO_DEFINE _PLOT_ name(Plot) name(Plot) doforetell asSorcery
|
||||
|
||||
# Plot Cast
|
||||
#AUTO_DEFINE _PLOTCAST_ {0}restriction{compare(canforetellcast)~morethan~0}:name(Cast with plot) name(Cast with plot) activate castcard(alternative) asSorcery
|
||||
#AUTO_DEFINE _PLOTCAST_ {0}restriction{compare(canforetellcast)~morethan~0}:name(Cast) name(Cast) activate castcard(alternative) asSorcery
|
||||
|
||||
# Loot (draw a card, then discard a card.)
|
||||
#AUTO_DEFINE _LOOT_ draw:1 && transforms((,newability[target(*|myhand) reject])) forever
|
||||
# Loot. Draw a card, then discard a card.
|
||||
#AUTO_DEFINE _LOOT_ draw:1 && transforms((,newability[notatarget(*|myhand) reject])) forever
|
||||
|
||||
# Unearth
|
||||
#AUTO_DEFINE _UNEARTH_ name(Unearth) moveto(mybattlefield) and!( transforms((,haste,newability[unearth],newability[exiledeath])) forever )! asSorcery
|
||||
@@ -210,14 +207,14 @@
|
||||
# (blink)ueot doesn't work if a creature uses it on itself
|
||||
#AUTO_DEFINE _BLINK_UEOT_ moveto(exile) and!( transforms((,newability[phaseaction[end once checkex] moveto(ownerbattlefield)])) forever )!
|
||||
|
||||
# Connives. (Draw a card, then discard a card. If you discarded a nonland card, put a +1/+1 counter on this creature.)
|
||||
# Connives. Draw a card, then discard a card. If you discarded a nonland card, put a +1/+1 counter on this creature.
|
||||
#AUTO_DEFINE _CONNIVES_ draw:1 && transforms((,newability[if type(*[-land]|myhand)~morethan~0 then choice name(Discard a nonland) name(Discard a nonland) target(*[-land]|myhand) reject && counter(1/1) all(this)],newability[if type(land|myhand)~morethan~0 then choice name(Discard a land) name(Discard a land) target(land|myhand) reject])) oneshot
|
||||
|
||||
# Eternalize
|
||||
#AUTO_DEFINE _ETERNALIZE_ name(Eternalize) clone and!( transforms((Zombie,removemc,setpower=4,settoughness=4,black)) forever )! assorcery
|
||||
|
||||
# Explores
|
||||
#AUTO_DEFINE _EXPLORES_ name(Explores) reveal:1 optionone if type(land|reveal)~lessthan~1 then transforms((,newability[counter(1/1)])) forever optiononeend optiontwo if type(land|reveal)~morethan~0 then name(move to Hand) target(<1>*|reveal) moveto(myHand) else transforms((,newability[Choice name(back to library) target(<1>*|reveal) moveto(mylibrary)],newability[Choice name(put into Graveyard) target(<1>*|reveal) moveto(myGraveyard)])) oneshot optiontwoend afterrevealed explores afterrevealedend revealend
|
||||
#AUTO_DEFINE _EXPLORES_ name(Explores) reveal:1 optionone if type(land|reveal)~lessthan~1 then counter(1/1) optiononeend optiontwo if type(land|reveal)~morethan~0 then name(move to Hand) target(<1>*|reveal) moveto(myHand) else transforms((,newability[Choice name(back to library) target(<1>*|reveal) moveto(mylibrary)],newability[Choice name(put into Graveyard) target(<1>*|reveal) moveto(myGraveyard)])) oneshot optiontwoend afterrevealed explores afterrevealedend revealend
|
||||
|
||||
# Discard a card. If you do, draw a card
|
||||
#AUTO_DEFINE _DISCARD&DRAW_ reject notatarget(*|myhand) and!(draw:1 controller)!
|
||||
@@ -225,10 +222,13 @@
|
||||
# Target creature deals damage equal to its power to target creature you don't control.
|
||||
#AUTO_DEFINE _PUNCH_ transforms((,newability[dynamicability<!powerstrike!> target(creature|opponentbattlefield)])) oneshot
|
||||
|
||||
# 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]
|
||||
# Fight. Both creatures deal damage equal to their Power to each other.
|
||||
#AUTO_DEFINE _FIGHT_ transforms((,newability[target(creature|opponentbattlefield) dynamicability<!powerstrike eachother!>])) oneshot
|
||||
|
||||
# Suspect it (It has menace and can't block.)
|
||||
# Must be blocked this turn if able
|
||||
#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.
|
||||
#AUTO_DEFINE _SUSPECT_IT_ name(Suspect it) transforms((suspect,menace,cantblock)) forever
|
||||
|
||||
# Finality counter, if it would die, it's exiled instead
|
||||
@@ -240,15 +240,47 @@
|
||||
#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.
|
||||
#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 _EERIE_ @movedTo(*[Room]|myBattlefield):
|
||||
|
||||
#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
|
||||
#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
|
||||
#AUTO_DEFINE _FLURRY_ @movedto(*|mystack) restriction{thisturn(*|mystack)~equalto~1}:
|
||||
|
||||
# Mobilize
|
||||
#AUTO_DEFINE _MOBILIZE_($c) @combat(attacking) source(this):create(Warrior:creature Warrior:1/1:red:battleready:treason)*$c
|
||||
|
||||
# Angel Token
|
||||
#AUTO_DEFINE _ANGELTOKEN_ create(Angel:Creature Angel:4/4:white:flying)
|
||||
|
||||
@@ -291,6 +323,12 @@
|
||||
# Glimmer Token
|
||||
#AUTO_DEFINE _GLIMMERTOKEN_ create(glimmer:creature glimmer enchantment:1/1:white)
|
||||
|
||||
# Human Knight Token
|
||||
#AUTO_DEFINE _HUMANKNIGHTTOKEN_ create(Human Knight:Creature Human Knight:2/2:red:trample:haste)
|
||||
|
||||
# Human Soldier Token
|
||||
#AUTO_DEFINE _HUMANSOLDIERTOKEN_ create(soldier:creature Human soldier:1/1:white)
|
||||
|
||||
# Insect Token
|
||||
#AUTO_DEFINE _INSECTTOKEN_ create(Insect:Creature Insect:1/1:green)
|
||||
|
||||
@@ -337,13 +375,13 @@
|
||||
#AUTO_DEFINE _ZOMBIETOKEN_ create(zombie:creature zombie:2/2:black)
|
||||
|
||||
# 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
|
||||
#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
|
||||
#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
|
||||
#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.
|
||||
#Please keep these card alphabetized, and try to have the "name=" line at the top of each card
|
||||
#Sorted this programmatically - Thanks to Vitty85 24-12-2024
|
||||
#Sorted this programmatically - Thanks to Vitty85 29-04-2024
|
||||
[card]
|
||||
name=Abian, Luvion Usurper
|
||||
auto=counter(0/0,5,loyalty)
|
||||
@@ -192,7 +192,7 @@ subtype=Aminatou
|
||||
name=Angrath, Captain of Chaos
|
||||
auto=counter(0/0,5,loyalty)
|
||||
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.)
|
||||
mana={2}{BR}{BR}
|
||||
type=Legendary Planeswalker
|
||||
@@ -452,7 +452,7 @@ subtype=Chandra
|
||||
[/card]
|
||||
[card]
|
||||
name=Chandra, Awakened Inferno
|
||||
auto=nofizzle
|
||||
abilities=nofizzle
|
||||
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,-3,Loyalty)}:name(-3: Deals 3 damage to each non-elemental) damage:3 all(creature[-elemental])
|
||||
@@ -572,7 +572,7 @@ subtype=Chandra
|
||||
name=Chandra, Gremlin Wrangler
|
||||
auto=counter(0/0,3,loyalty)
|
||||
auto={C(0/0,1,Loyalty)}:name(+1: Create a 2/2 red Gremlin creature token) token(Gremlin,Creature Gremlin,2/2,red)
|
||||
auto={C(0/0,-2,Loyalty)}:name(-2: Deals X damage to any target... ) damage:damage:type:creature[Gremlin]|myBattlefield target(anytarget)
|
||||
auto={C(0/0,-2,Loyalty)}:name(-2: Deals X damage to any target... ) damage:type:creature[Gremlin]:myBattlefield target(anytarget)
|
||||
text=+1: Create a 2/2 red Gremlin creature token. -- -2: Chandra, Gremlin Wrangler deals X damage to any target, where X is the number of Gremlins you control.
|
||||
mana={2}{R}{R}
|
||||
type=Legendary Planeswalker
|
||||
@@ -595,7 +595,7 @@ auto=counter(0/0,5,loyalty)
|
||||
auto=@movedTo(*[instant;sorcery]|mystack) turnlimited:name(Copy spell) name(Copy spell) all(trigger[to]) transforms((,newability[name(Copy spell) activate castcard(copied noevent)])) oneshot
|
||||
auto={C(0/0,+2,Loyalty)}:name(+2: Add 2 mana) thisforeach(variable{2}) ability$!name(Choose one) choice name(Add white) add{W} _ choice name(Add blue) add{U} _ choice name(Add red) add{B} _ choice name(Add green) add{R} _ choice name(Add black) add{G}!$ controller
|
||||
auto={C(0/0,+1,Loyalty)}:name(+1: Exile top 5 cards) all(*[zpos<=5]|mylibrary) moveto(myexile) and!( if cantargetcard(*[instant;sorcery]|*) then transforms((,newability[canplayfromexile])) ueot )!
|
||||
auto={C(0/0,-1,Loyalty)}:name(-1: Damage one target) ability$!name(Damage target) name(Damage target) target(anytarget) damage:1!$ controller
|
||||
auto={C(0/0,-1,Loyalty)}:name(-1: Damage one target) ability$!name(Damage target) name(Damage target) target(anytarget) damage:1!$ controller
|
||||
auto={C(0/0,-1,Loyalty)}:name(-1: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>anytarget) damage:1!$ controller
|
||||
auto={C(0/0,-2,Loyalty)}:name(-2: Damage one target) ability$!name(Damage target) name(Damage target) target(anytarget) damage:2!$ controller
|
||||
auto={C(0/0,-2,Loyalty)}:name(-2: Damage two target) ability$!name(Damage targets) name(Damage targets) target(<2>anytarget) damage:2!$ controller
|
||||
@@ -709,6 +709,20 @@ subtype=Chandra
|
||||
color=red
|
||||
[/card]
|
||||
[card]
|
||||
name=Chandra, Spark Hunter
|
||||
auto=counter(0/0,4,loyalty)
|
||||
auto=@each my combatbegins:may target(vehicle|myBattlefield) becomes(Artifact Creature,haste) ueot
|
||||
auto={C(0/0,+2,Loyalty)}:sacrifice notatarget(artifact|mybattlefield) and!( draw:1 )!
|
||||
auto={C(0/0,+2,Loyalty)}:_DISCARD&DRAW_
|
||||
auto={C(0/0,+2,Loyalty)}:name(Only +2 counters) doNothing
|
||||
auto={C(0/0,0,Loyalty)}:_VEHICLE_
|
||||
auto={C(0/0,-7,Loyalty)}:name(emblem) emblem transforms((,newability[@movedTo(artifact|myBattlefield):damage:3 target(anytarget)])) forever dontremove
|
||||
text=At the beginning of combat on your turn, choose up to one target Vehicle you control. Until end of turn, it becomes an artifact creature and gains haste. -- [+2]: You may sacrifice an artifact or discard a card. If you do, draw a card. -- [0]: Create a 3/2 colorless Vehicle artifact token with crew 1. -- [-7]: You get an emblem with "Whenever an artifact you control enters, this emblem deals 3 damage to any target."
|
||||
mana={3}{R}
|
||||
type=Legendary Planeswalker
|
||||
subtype=Chandra
|
||||
[/card]
|
||||
[card]
|
||||
name=Chandra, Torch of Defiance
|
||||
auto=counter(0/0,4,loyalty)
|
||||
auto={C(0/0,1,Loyalty)}:name(+1: Exile Top Card) all(*[zpos=1]|mylibrary) moveto(myexile) and!( transforms((,newability[choice name(Deals 2 damage) name(Deals 2 damage) damage:2 opponent],newability[if cantargetcard(*[-land]|*) then choice name(Cast card from exile) name(Cast card from exile) counter(0/0.1.ChandraEffect) notrg])) ueot )!
|
||||
@@ -847,7 +861,7 @@ auto=counter(0/0,3,loyalty)
|
||||
auto=lord(other creature|myBattlefield) 1/0
|
||||
auto={C(0/0,1,Loyalty)}:name(+1: Add Red mana and creatures can't be countered this turn) transforms((,newability[add{R}],newability[lord(creature|mystack) nofizzle])) ueot
|
||||
auto={C(0/0,1,Loyalty)}:name(+1: Add Green mana and creatures can't be countered this turn) transforms((,newability[add{G}],newability[lord(creature|mystack) nofizzle])) ueot
|
||||
auto={C(0/0,-2,Loyalty)}:name(-2: Target creature fights another creature) target(creature|myBattlefield) transforms((,newability[target(creature|opponentbattlefield) dynamicability<!powerstrike eachother!>])) ueot
|
||||
auto={C(0/0,-2,Loyalty)}:name(-2: Target creature fights another creature) target(creature|myBattlefield) _FIGHT_
|
||||
text=Creatures you control get +1/+0. -- +1: Add {R} or {G}. Creature spells you cast this turn can't be countered. -- -2: Target creature you control fights target creature you don't control.
|
||||
mana={1}{R}{G}
|
||||
type=Legendary Planeswalker
|
||||
@@ -969,6 +983,18 @@ type=Legendary Planeswalker
|
||||
subtype=Elspeth
|
||||
[/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
|
||||
auto=counter(0/0,4,loyalty)
|
||||
auto={C(0/0,1,Loyalty)}:name(+1: Create three 1/1 Soldier) _SOLDIERTOKEN_*3
|
||||
@@ -983,7 +1009,7 @@ subtype=Elspeth
|
||||
name=Elspeth, Sun's Nemesis
|
||||
auto=counter(0/0,5,loyalty)
|
||||
auto={C(0/0,-1,Loyalty)}:name(-1: Up to two creature gets +2/+1) target(<upto:2>creature|myBattlefield) 2/1 ueot
|
||||
auto={C(0/0,-2,Loyalty)}:name(-2: Create two human soldiers) token(Human Soldier,Creature Human Soldier,1/1,white)*2
|
||||
auto={C(0/0,-2,Loyalty)}:name(-2: Create two human soldiers) _HUMANSOLDIERTOKEN_*2
|
||||
auto={C(0/0,-6,Loyalty)}:name(-6: Gain 5 life) life:5 controller
|
||||
retrace={4}{W}{W}{E(other *|myGraveyard)}{E(other *|myGraveyard)}{E(other *|myGraveyard)}{E(other *|myGraveyard)} name(Escape)
|
||||
text=-1: Up to two target creatures you control each get +2/+1 until end of turn. -- -2: Create two 1/1 white Human Soldier creature tokens. -- -3: You gain 5 life. -- Escape-{4}{W}{W}, Exile four other cards from your graveyard. (You may cast this card from your graveyard for its escape cost.)
|
||||
@@ -1255,7 +1281,7 @@ auto=counter(0/0,5,loyalty)
|
||||
auto={C(0/0,2,Loyalty)}:name(+2: Untap all creatures and get +1/+1) all(creature|mybattlefield) 1/1 && all(creature|mybattlefield) untap ueot
|
||||
auto={C(0/0,0,Loyalty)}:name(+0: Transforms to Human Soldier 5/5) transforms((Creature Human Soldier,setpower=5,settoughness=5,indestructible,newability[preventAllDamage to(this)])) ueot
|
||||
auto={C(0/0,-10,Loyalty)}:name(10: Tap all creatures and +2/+2) all(creature|opponentbattlefield) tap && all(creature|mybattlefield) 2/2 ueot
|
||||
text=+2: Untap all creatures you control. Those creatures get +1/+1 until end of turn. -- 0: Until end of turn, Gideon, Martial Paragon becomes a 5/5 Human Soldier creature with indestructible that's still a planeswalker. Prevent all damage that would be dealt to him this turn. -- -10: Creatures you control get +2/+2 until end of turn. Tap all creatures your opponents control.
|
||||
text=+2: Untap all creatures you control. Those creatures get +1/+1 until end of turn. -- 0: Until end of turn, Gideon, Martial Paragon becomes a 5/5 Human Soldier creature with indestructible that's still a planeswalker. Prevent all damage that would be dealt to him this turn. -- -10: Creatures you control get +2/+2 until end of turn. Tap all creatures your opponents control.
|
||||
mana={4}{W}
|
||||
type=Legendary Planeswalker
|
||||
subtype=Gideon
|
||||
@@ -1544,7 +1570,7 @@ subtype=Jace
|
||||
[/card]
|
||||
[card]
|
||||
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={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
|
||||
@@ -1711,7 +1737,7 @@ name=Kaito, Bane of Nightmares
|
||||
auto=counter(0/0,4,loyalty)
|
||||
autohand={1}{U}{B}{N}:ninjutsu
|
||||
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,-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.
|
||||
@@ -1720,6 +1746,19 @@ type=Legendary Planeswalker
|
||||
subtype=Kaito
|
||||
[/card]
|
||||
[card]
|
||||
name=Kaito, Cunning Infiltrator
|
||||
auto=counter(0/0,3,loyalty)
|
||||
auto=@combatdamagefoeof(player) from(creature|mybattlefield):counter(0/0,1,Loyalty)
|
||||
auto={C(0/0,+1,Loyalty)}:target(creature|myBattlefield) unblockable && _LOOT_
|
||||
auto={C(0/0,+1,Loyalty)}:name(+1: No target, only draw and discard) _LOOT_
|
||||
auto={C(0/0,-2,Loyalty)}:create(ninja:creature ninja:2/1:blue)
|
||||
auto={C(0/0,-9,Loyalty)}:name(-9: Emblem) emblem transforms((,newability[@movedTo(*|stack):create(ninja:creature ninja:2/1:blue)])) forever dontremove
|
||||
text=Whenever a creature you control deals combat damage to a player, put a loyalty counter on Kaito. -- [+1]: Up to one target creature you control can't be blocked this turn. Draw a card, then discard a card. -- [-2]: Create a 2/1 blue Ninja creature token. -- [-9]: You get an emblem with "Whenever a player casts a spell, you create a 2/1 blue Ninja creature token."
|
||||
mana={1}{U}{U}
|
||||
type=Legendary Planeswalker
|
||||
subtype=Kaito
|
||||
[/card]
|
||||
[card]
|
||||
name=Kaito, Dancing Shadow
|
||||
auto=counter(0/0,3,loyalty)
|
||||
auto=@combatdamaged(player) from(creature|myBattlefield) turnlimited:may name(Return to hand) target(creature[attacking]|myBattlefield) moveto(hand) && all(this) transforms((,newability[canloyaltytwice])) ueot
|
||||
@@ -1855,8 +1894,8 @@ subtype=Kaya
|
||||
[card]
|
||||
name=Kaya, Geist Hunter
|
||||
auto=counter(0/0,3,Loyalty)
|
||||
auto={C(0/0,1,Loyalty)}:name(+1: Creatures gain deathtouch) all(creature|mybattlefield) transforms((,deathtouch)) ueot
|
||||
auto={C(0/0,1,Loyalty)}:name(+1: Creatures gain deathtouch and put counter) target(creature[token]|mybattlefield) counter(1/1) && all(creature|mybattlefield) transforms((,deathtouch)) ueot
|
||||
auto={C(0/0,1,Loyalty)}:name(+1: Creatures gain deathtouch) all(creature|mybattlefield) deathtouch ueot
|
||||
auto={C(0/0,1,Loyalty)}:name(+1: Creatures gain deathtouch and put counter) target(creature[token]|mybattlefield) counter(1/1) && all(creature|mybattlefield) deathtouch ueot
|
||||
auto={C(0/0,-2,Loyalty)}:name(-2: Double the tokens) transforms((,newability[@tokencreated(*|myBattlefield):name(Double the token) all(trigger) clone options(notrigger)])) ueot
|
||||
auto={C(0/0,-6,Loyalty)}:name(-6: Exile cards) all(*|graveyard) moveto(exile) and!( _SPIRITTOKEN_ )!
|
||||
text=+1: Creatures you control gain deathtouch until end of turn. Put a +1/+1 counter on up to one target creature token you control. -- -2: Until end of turn, if one or more tokens would be created under your control, twice that many of those tokens are created instead. -- -6: Exile all cards from all graveyards, then create a 1/1 white Spirit creature token with flying for each card exiled this way.
|
||||
@@ -1911,6 +1950,18 @@ type=Legendary Planeswalker
|
||||
subtype=Kiora
|
||||
[/card]
|
||||
[card]
|
||||
name=Kiora, Master of the Depths
|
||||
auto=counter(0/0,4,loyalty)
|
||||
aicode=activate target(*[zpos<=4]|mylibrary) moveto(hand)
|
||||
auto={C(0/0,1,Loyalty)}:name(+1: Untap target creature and land) untap target(<upto:1>creature) && ability$!may name(Untap land) untap target(<upto:1>land)!$ controller
|
||||
auto={C(0/0,-2,Loyalty)}:name(-2: Reveal the top four and put in hand creature or land) name(look) reveal:4 optionone name(Get a card) target(<1>*[creature;land]|reveal) moveTo(myHand) optiononeend optiontwo name(put in grave) all(*|reveal) moveTo(myGraveyard) optiontwoend revealend
|
||||
auto={C(0/0,-8,Loyalty)}:name(-8: Emblem: "Whenever enter, fight another creature" create a 8/8 octopus) emblem transforms((,newability[@movedTo(creature|myBattlefield):may name(fight) all(trigger[to]) _FIGHT_],newability[create(Octopus:Creature Octopus:8/8:blue)*3])) forever dontremove
|
||||
text=+1: Untap up to one target creature and up to one target land. -- 2: Reveal the top four cards of your library. You may put a creature card and/or a land card from among them into your hand. Put the rest into your graveyard. -- 8: You get an emblem with "Whenever a creature enters the battlefield under your control, you may have it fight target creature." Then create three 8/8 blue Octopus creature tokens.
|
||||
mana={2}{G}{U}
|
||||
type=Legendary Planeswalker
|
||||
subtype=Kiora
|
||||
[/card]
|
||||
[card]
|
||||
name=Kiora, the Crashing Wave
|
||||
auto=counter(0/0,2,loyalty)
|
||||
auto={C(0/0,1,Loyalty)}:name(+1: Prevention all damage dealt by and to) target(*|opponentbattlefield) transforms((,newability[preventalldamage from(this)],newability[preventalldamage to(this)])) uynt
|
||||
@@ -2140,7 +2191,7 @@ subtype=Windgrace
|
||||
[card]
|
||||
name=Lukka, Bound to Ruin
|
||||
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={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
|
||||
@@ -2312,7 +2363,7 @@ subtype=Nahiri
|
||||
[card]
|
||||
name=Nahiri, the Unforgiving
|
||||
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: Don't target any creature) donothing
|
||||
auto={C(0/0,+1,Loyalty)}:name(+1: Discard and draw) _DISCARD&DRAW_
|
||||
@@ -2501,7 +2552,7 @@ subtype=Nissa
|
||||
[card]
|
||||
name=Nissa, Ascended Animist
|
||||
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={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)
|
||||
@@ -2764,7 +2815,7 @@ otherrestriction=can play planeswalker,compare(isflipped)~equalto~1
|
||||
restriction=compare(isflipped)~equalto~0
|
||||
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)
|
||||
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) {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
|
||||
@@ -2812,7 +2863,7 @@ abilities=canbecommander
|
||||
auto=counter(0/0,4,loyalty)
|
||||
auto={C(0/0,1,Loyalty)}:name(+1: Create a 1/1 colorless Servo) _SERVOTOKEN_
|
||||
auto={C(0/0,1,Loyalty)}:name(-1: The next spell has affinity for artifacts) target(*|mycastingzone) transforms((,newability[affinityartifacts])) ueot
|
||||
auto={C(0/0,-7,Loyalty)}:name(-7: Create a token for each artifact) clone all(artifact|mybattlefield) with (unearth)
|
||||
auto={C(0/0,-7,Loyalty)}:name(-7: Create a token for each artifact) clone all(artifact|mybattlefield) with(unearth)
|
||||
text=+1: Create a 1/1 colorless Servo artifact creature token. -- +1: The next spell you cast this turn costs {1} less to cast for each artifact you control as you cast it. -- -7: For each artifact you control, create a token that's a copy of it. Those tokens gain haste. Exile those tokens at the beginning of the next end step. -- Saheeli, the Gifted can be your commander.
|
||||
mana={2}{U}{R}
|
||||
type=Legendary Planeswalker
|
||||
@@ -3097,7 +3148,7 @@ subtype=Tamiyo
|
||||
[card]
|
||||
name=Tamiyo, Compleated Sage
|
||||
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: 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 )!
|
||||
@@ -3235,6 +3286,7 @@ auto=counter(0/0,5,loyalty)
|
||||
aicode=activate transforms((,newability[moveto(myhand) all(*[zpos=1]|mylibrary) && bottomoflibrary all(*[zpos=2]|mylibrary)])) ueot
|
||||
auto={C(0/0,1,Loyalty)}:name(+1: Look at the top two, one in hand other to bottom) name(Look) reveal:2 optionone name(Get a card) target(<1>*|reveal) moveto(myhand) optiononeend optiontwo name(put on bottom) target(<2>*|reveal) bottomoflibrary optiontwoend revealend
|
||||
auto={C(0/0,-1,Loyalty)}:name(-1: Untap up to four permanents) untap target(<upto:4>*|battlefield)
|
||||
auto={C(0/0,-10,Loyalty)}:name(Emblem) emblem transforms((,newability[lord(planeswalker|myBattlefield) canloyaltyasinst])) forever dontremove
|
||||
text=+1: Look at the top two cards of your library. Put one of them into your hand and the other on the bottom of your library. -- -1: Untap up to four target permanents. -- -10: You get an emblem with "You may activate loyalty abilities of planeswalkers you control on any player's turn any time you could cast an instant." -- Teferi, Temporal Archmage can be your commander.
|
||||
mana={4}{U}{U}
|
||||
type=Legendary Planeswalker
|
||||
@@ -3614,6 +3666,19 @@ type=Legendary Planeswalker
|
||||
subtype=Tyvar
|
||||
[/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
|
||||
auto=counter(0/0,4,loyalty)
|
||||
auto=lord(*[colorless]|mycastingzone) altercost(colorless,-2)
|
||||
@@ -3680,7 +3745,7 @@ subtype=Venser
|
||||
name=Vivien Reid
|
||||
auto=counter(0/0,5,loyalty)
|
||||
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 enchantment) destroy target(enchantment)
|
||||
auto={C(0/0,-3,Loyalty)}:name(-3: Destroy target creature with flying) destroy target(creature[flying])
|
||||
@@ -3730,7 +3795,7 @@ abilities=showfromtoplibrary,canplaycreaturelibrarytop
|
||||
aicode=activate moveto(myBattlefield) target(creature[manacost<=storedmanacost]|mylibrary)
|
||||
auto=counter(0/0,3,Loyalty)
|
||||
auto={C(0/0,1,Loyalty)}:name(+1: Create a Creature Beast 3/3) token(Beast Viv)
|
||||
auto={C(0/0,-2,Loyalty)}:name(-2: Cast a creature to search a lesser creature) emblem transforms((,newability[@movedTo(creature|myStak):moveTo(myBattlefield) target(creature[manacost<=storedmanacost]|myLibrary) && shuffle])) oneshot
|
||||
auto={C(0/0,-2,Loyalty)}:name(-2: Cast a creature to search a lesser creature) emblem transforms((,newability[@movedTo(creature|myStack):moveTo(myBattlefield) target(creature[manacost<=storedmanacost]|myLibrary) && shuffle])) oneshot
|
||||
text=You may look at the top card of your library any time. -- You may cast creature spells from the top of your library. -- +1: Create a 3/3 green Beast creature token. Put your choice of a vigilance counter, a reach counter, or a trample counter on it. -- -2: When you cast your next creature spell this turn, search your library for a creature card with lesser mana value, put it onto the battlefield, then shuffle.
|
||||
mana={3}{G}{G}
|
||||
type=Legendary Planeswalker
|
||||
@@ -3761,7 +3826,7 @@ subtype=Vraska
|
||||
[/card]
|
||||
[card]
|
||||
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={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
|
||||
@@ -3927,4 +3992,4 @@ text=+1: Creatures you control get +1/+0 and gain haste until end of turn. -- 0:
|
||||
mana={2}{R}{R}
|
||||
type=Legendary Planeswalker
|
||||
subtype=Zariel
|
||||
[/card]
|
||||
[/card]
|
||||
@@ -2,5 +2,5 @@
|
||||
#Sun, 20 May 2020 11:56:35 +0200
|
||||
build.major=0
|
||||
build.minor=25
|
||||
build.point=3
|
||||
build.point=5
|
||||
|
||||
|
||||
@@ -76,7 +76,7 @@ class AIPlayerBaka: public AIPlayer{
|
||||
virtual int chooseBlockers();
|
||||
virtual int canFirstStrikeKill(MTGCardInstance * card, MTGCardInstance *ennemy);
|
||||
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)
|
||||
virtual int CanHandleCost(ManaCost * cost, MTGCardInstance * card = NULL);
|
||||
|
||||
@@ -364,7 +364,8 @@ class Constants
|
||||
EQPASINST = 235,
|
||||
CANLOYALTYASINST = 236,
|
||||
CANPLAYENCHANTMENTTOPLIBRARY = 237,//enchantment
|
||||
NB_BASIC_ABILITIES = 238,
|
||||
AFFINITYTWOALLDEADCREATURES = 238,
|
||||
NB_BASIC_ABILITIES = 239,
|
||||
|
||||
RARITY_S = 'S', //Special Rarity
|
||||
RARITY_M = 'M', //Mythics
|
||||
|
||||
@@ -26,7 +26,7 @@ public:
|
||||
TYPE_EQUIPMENT = 11,
|
||||
TYPE_AURA = 12,
|
||||
TYPE_PLANESWALKER = 13,
|
||||
TYPE_TRIBAL = 14,
|
||||
TYPE_KINDRED = 14,
|
||||
TYPE_PLANE = 15,
|
||||
TYPE_SCHEME = 16,
|
||||
TYPE_VANGUARD = 17,
|
||||
|
||||
@@ -14,7 +14,7 @@ Mod by: Vitty85
|
||||
/* Wagic versions */
|
||||
#define WAGIC_VERSION_MAJOR 0
|
||||
#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_WITHOUT_DOT(a, b, c) a ## b ## c
|
||||
|
||||
@@ -46,9 +46,9 @@ int OrderedAIAction::getEfficiency(AADamager * aad)
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(p && target)
|
||||
if(p == target->controller())
|
||||
return 0;
|
||||
if(p && target)
|
||||
if(p == target->controller())
|
||||
return 0;
|
||||
|
||||
if (dTarget && aad && (aad->getDamage() == dTarget->toughness))
|
||||
return 100;
|
||||
@@ -107,7 +107,7 @@ int OrderedAIAction::getEfficiency()
|
||||
{
|
||||
target = a->source;
|
||||
}
|
||||
|
||||
|
||||
AACastCard * CC = dynamic_cast<AACastCard*> (a);
|
||||
if (CC)
|
||||
return 99;
|
||||
@@ -126,13 +126,13 @@ int OrderedAIAction::getEfficiency()
|
||||
break;
|
||||
|
||||
if (!coreAbilityCardTarget->regenerateTokens && currentPhase == MTG_PHASE_COMBATBLOCKERS
|
||||
&& (coreAbilityCardTarget->defenser || coreAbilityCardTarget->blockers.size())
|
||||
)
|
||||
&& (coreAbilityCardTarget->defenser || coreAbilityCardTarget->blockers.size())
|
||||
)
|
||||
{
|
||||
efficiency = 95;
|
||||
}
|
||||
//TODO If the card is the target of a damage spell
|
||||
break;
|
||||
//TODO If the card is the target of a damage spell
|
||||
break;
|
||||
}
|
||||
case MTGAbility::STANDARD_PREVENT:
|
||||
{
|
||||
@@ -272,7 +272,7 @@ int OrderedAIAction::getEfficiency()
|
||||
}
|
||||
case MTGAbility::STANDARD_PUMP:
|
||||
{
|
||||
efficiency = 0;
|
||||
efficiency = 0;
|
||||
if(!coreAbilityCardTarget)
|
||||
break;
|
||||
if(!target && !dynamic_cast<ALord*> (a) && (((MTGCardInstance *)a->source)->hasSubtype(Subtypes::TYPE_AURA) || ((MTGCardInstance *)a->source)->hasSubtype(Subtypes::TYPE_EQUIPMENT)))
|
||||
@@ -296,9 +296,9 @@ int OrderedAIAction::getEfficiency()
|
||||
int suggestion = af.abilityEfficiency(a, p, MODE_ABILITY);
|
||||
//i do not set a starting eff. on this ability, this allows Ai to sometimes randomly do it as it normally does.
|
||||
int currentPhase = g->getCurrentGamePhase();
|
||||
if ((currentPhase == MTG_PHASE_COMBATBLOCKERS) || (currentPhase == MTG_PHASE_COMBATATTACKERS))
|
||||
if ((currentPhase == MTG_PHASE_COMBATBLOCKERS) || (currentPhase == MTG_PHASE_COMBATATTACKERS))
|
||||
{
|
||||
if (suggestion == BAKA_EFFECT_GOOD && target->controller() == p)
|
||||
if (suggestion == BAKA_EFFECT_GOOD && target->controller() == p)
|
||||
{
|
||||
if(coreAbilityCardTarget->defenser || coreAbilityCardTarget->blockers.size())
|
||||
{
|
||||
@@ -350,30 +350,30 @@ int OrderedAIAction::getEfficiency()
|
||||
break;
|
||||
}
|
||||
case MTGAbility::MANA_PRODUCER://only way to hit this condition is nested manaabilities, ai skips manaproducers by defualt when finding an ability to use.
|
||||
{
|
||||
AManaProducer * manamaker = dynamic_cast<AManaProducer*>(a);
|
||||
GenericActivatedAbility * GAA = dynamic_cast<GenericActivatedAbility*>(ability);
|
||||
if(GAA)
|
||||
{
|
||||
AForeach * forMana = dynamic_cast<AForeach*>(GAA->ability);
|
||||
if (manamaker && forMana)
|
||||
{
|
||||
int outPut = forMana->checkActivation();
|
||||
if (ability->getCost() && outPut > int(ability->getCost()->getConvertedCost() +1) && currentPhase == MTG_PHASE_FIRSTMAIN && ability->source->controller()->game->hand->nb_cards > 1)
|
||||
efficiency = 60;//might be a bit random, but better than never using them.
|
||||
}
|
||||
}
|
||||
else
|
||||
efficiency = 0;
|
||||
break;
|
||||
}
|
||||
{
|
||||
AManaProducer * manamaker = dynamic_cast<AManaProducer*>(a);
|
||||
GenericActivatedAbility * GAA = dynamic_cast<GenericActivatedAbility*>(ability);
|
||||
if(GAA)
|
||||
{
|
||||
AForeach * forMana = dynamic_cast<AForeach*>(GAA->ability);
|
||||
if (manamaker && forMana)
|
||||
{
|
||||
int outPut = forMana->checkActivation();
|
||||
if (ability->getCost() && outPut > int(ability->getCost()->getConvertedCost() +1) && currentPhase == MTG_PHASE_FIRSTMAIN && ability->source->controller()->game->hand->nb_cards > 1)
|
||||
efficiency = 60;//might be a bit random, but better than never using them.
|
||||
}
|
||||
}
|
||||
else
|
||||
efficiency = 0;
|
||||
break;
|
||||
}
|
||||
case MTGAbility::STANDARDABILITYGRANT:
|
||||
{
|
||||
efficiency = 0;
|
||||
|
||||
if (!target)
|
||||
break;
|
||||
|
||||
|
||||
//ensuring that Ai grants abilities to creatures during first main, so it can actually use them in combat.
|
||||
//quick note: the eff is multiplied by creatures ranking then divided by the number of cards in hand.
|
||||
//the reason i do this is to encourage more casting and less waste of mana on abilities.
|
||||
@@ -391,8 +391,8 @@ int OrderedAIAction::getEfficiency()
|
||||
}
|
||||
|
||||
if (!target->has(a->abilitygranted) && g->getCurrentGamePhase() == MTG_PHASE_COMBATBEGIN
|
||||
&& p == target->controller()
|
||||
)
|
||||
&& p == target->controller()
|
||||
)
|
||||
{
|
||||
efficiency += efficiencyModifier;
|
||||
}
|
||||
@@ -404,8 +404,8 @@ int OrderedAIAction::getEfficiency()
|
||||
}
|
||||
|
||||
if ((suggestion == BAKA_EFFECT_BAD && p == target->controller())
|
||||
|| (suggestion == BAKA_EFFECT_GOOD && p != target->controller())
|
||||
)
|
||||
|| (suggestion == BAKA_EFFECT_GOOD && p != target->controller())
|
||||
)
|
||||
{
|
||||
efficiency = 0;
|
||||
//stop giving trample to the players creatures.
|
||||
@@ -547,13 +547,13 @@ int OrderedAIAction::getEfficiency()
|
||||
}
|
||||
}
|
||||
if ((suggestion == BAKA_EFFECT_BAD && p == target->controller())
|
||||
|| (suggestion == BAKA_EFFECT_GOOD && p != target->controller()))
|
||||
|| (suggestion == BAKA_EFFECT_GOOD && p != target->controller()))
|
||||
{
|
||||
efficiency = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
//without a base to start with Wrand % 5 almost always returns 0.
|
||||
//without a base to start with Wrand % 5 almost always returns 0.
|
||||
efficiency = 10 + (owner->getRandomGenerator()->random() % 20); //Small percentage of chance for unknown abilities
|
||||
}
|
||||
}
|
||||
@@ -650,7 +650,7 @@ int OrderedAIAction::getEfficiency()
|
||||
}
|
||||
if(p->game->battlefield->countByType("token") >= 25)
|
||||
efficiency = 0;
|
||||
|
||||
|
||||
}
|
||||
else if (GenericRevealAbility * grA = dynamic_cast<GenericRevealAbility *>(a))
|
||||
{
|
||||
@@ -684,7 +684,7 @@ int OrderedAIAction::getEfficiency()
|
||||
{
|
||||
AIPlayer * chk = (AIPlayer*)p;
|
||||
if(may->ability && may->ability->getActionTc() && chk->chooseTarget(may->ability->getActionTc(),NULL,NULL,true))
|
||||
efficiency = 50 + (owner->getRandomGenerator()->random() % 50);
|
||||
efficiency = 50 + (owner->getRandomGenerator()->random() % 50);
|
||||
}
|
||||
if (p->game->hand->nb_cards == 0)
|
||||
efficiency = (int) ((float) efficiency * 1.3); //increase chance of using ability if hand is empty
|
||||
@@ -720,18 +720,18 @@ int OrderedAIAction::getEfficiency()
|
||||
{
|
||||
efficiency += 55;
|
||||
}
|
||||
|
||||
|
||||
if (ability->source)
|
||||
{
|
||||
if(ability->source->hasType(Subtypes::TYPE_PLANESWALKER) || ability->source->hasType(Subtypes::TYPE_BATTLE))
|
||||
efficiency += 50;
|
||||
else if(ability->source->hasType(Subtypes::TYPE_LAND))
|
||||
{ // probably a shockland, don't pay life if hand is empty
|
||||
if (p->life<=2)
|
||||
// check that's not a manland(like Celestial Colonnade)
|
||||
if(efficiency < 50)
|
||||
efficiency = 0;
|
||||
}
|
||||
{ // probably a shockland, don't pay life if hand is empty
|
||||
if (p->life<=2)
|
||||
// check that's not a manland(like Celestial Colonnade)
|
||||
if(efficiency < 50)
|
||||
efficiency = 0;
|
||||
}
|
||||
}
|
||||
|
||||
SAFE_DELETE(transAbility);
|
||||
@@ -781,7 +781,7 @@ int OrderedAIAction::getRevealedEfficiency(MTGAbility * ability2)
|
||||
{
|
||||
target = a->source;
|
||||
}
|
||||
|
||||
|
||||
AACastCard * CC = dynamic_cast<AACastCard*> (a);
|
||||
if (CC)
|
||||
return 99;
|
||||
@@ -800,8 +800,8 @@ int OrderedAIAction::getRevealedEfficiency(MTGAbility * ability2)
|
||||
break;
|
||||
|
||||
if (!coreAbilityCardTarget->regenerateTokens && currentPhase == MTG_PHASE_COMBATBLOCKERS
|
||||
&& (coreAbilityCardTarget->defenser || coreAbilityCardTarget->blockers.size())
|
||||
)
|
||||
&& (coreAbilityCardTarget->defenser || coreAbilityCardTarget->blockers.size())
|
||||
)
|
||||
{
|
||||
eff2 = 95;
|
||||
}
|
||||
@@ -1010,27 +1010,27 @@ int OrderedAIAction::getRevealedEfficiency(MTGAbility * ability2)
|
||||
break;
|
||||
}
|
||||
case MTGAbility::MANA_PRODUCER://only way to hit this condition is nested manaabilities, ai skips manaproducers by defualt when finding an ability to use.
|
||||
{
|
||||
AManaProducer * manamaker = dynamic_cast<AManaProducer*>(a);
|
||||
GenericActivatedAbility * GAA = dynamic_cast<GenericActivatedAbility*>(ability2);
|
||||
AForeach * forMana = dynamic_cast<AForeach*>(GAA->ability);
|
||||
if (manamaker && forMana)
|
||||
{
|
||||
int outPut = forMana->checkActivation();
|
||||
if (ability2->getCost() && outPut > int(ability2->getCost()->getConvertedCost() +1) && currentPhase == MTG_PHASE_FIRSTMAIN && ability2->source->controller()->game->hand->nb_cards > 1)
|
||||
eff2 = 60;//might be a bit random, but better than never using them.
|
||||
AManaProducer * manamaker = dynamic_cast<AManaProducer*>(a);
|
||||
GenericActivatedAbility * GAA = dynamic_cast<GenericActivatedAbility*>(ability2);
|
||||
AForeach * forMana = dynamic_cast<AForeach*>(GAA->ability);
|
||||
if (manamaker && forMana)
|
||||
{
|
||||
int outPut = forMana->checkActivation();
|
||||
if (ability2->getCost() && outPut > int(ability2->getCost()->getConvertedCost() +1) && currentPhase == MTG_PHASE_FIRSTMAIN && ability2->source->controller()->game->hand->nb_cards > 1)
|
||||
eff2 = 60;//might be a bit random, but better than never using them.
|
||||
}
|
||||
else
|
||||
eff2 = 0;
|
||||
break;
|
||||
}
|
||||
else
|
||||
eff2 = 0;
|
||||
break;
|
||||
}
|
||||
case MTGAbility::STANDARDABILITYGRANT:
|
||||
{
|
||||
eff2 = 0;
|
||||
|
||||
if (!target)
|
||||
break;
|
||||
|
||||
|
||||
//ensuring that Ai grants abilities to creatures during first main, so it can actually use them in combat.
|
||||
//quick note: the eff is multiplied by creatures ranking then divided by the number of cards in hand.
|
||||
//the reason i do this is to encourage more casting and less waste of mana on abilities.
|
||||
@@ -1048,8 +1048,8 @@ int OrderedAIAction::getRevealedEfficiency(MTGAbility * ability2)
|
||||
}
|
||||
|
||||
if (!target->has(a->abilitygranted) && g->getCurrentGamePhase() == MTG_PHASE_COMBATBEGIN
|
||||
&& p == target->controller()
|
||||
)
|
||||
&& p == target->controller()
|
||||
)
|
||||
{
|
||||
eff2 += eff2Modifier;
|
||||
}
|
||||
@@ -1061,8 +1061,8 @@ int OrderedAIAction::getRevealedEfficiency(MTGAbility * ability2)
|
||||
}
|
||||
|
||||
if ((suggestion == BAKA_EFFECT_BAD && p == target->controller())
|
||||
|| (suggestion == BAKA_EFFECT_GOOD && p != target->controller())
|
||||
)
|
||||
|| (suggestion == BAKA_EFFECT_GOOD && p != target->controller())
|
||||
)
|
||||
{
|
||||
eff2 = 0;
|
||||
//stop giving trample to the players creatures.
|
||||
@@ -1203,13 +1203,13 @@ int OrderedAIAction::getRevealedEfficiency(MTGAbility * ability2)
|
||||
}
|
||||
}
|
||||
if ((suggestion == BAKA_EFFECT_BAD && p == target->controller())
|
||||
|| (suggestion == BAKA_EFFECT_GOOD && p != target->controller()))
|
||||
|| (suggestion == BAKA_EFFECT_GOOD && p != target->controller()))
|
||||
{
|
||||
eff2 = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
//without a base to start with Wrand % 5 almost always returns 0.
|
||||
//without a base to start with Wrand % 5 almost always returns 0.
|
||||
eff2 = 10 + (owner->getRandomGenerator()->random() % 20); //Small percentage of chance for unknown abilities
|
||||
}
|
||||
}
|
||||
@@ -1290,7 +1290,7 @@ int OrderedAIAction::getRevealedEfficiency(MTGAbility * ability2)
|
||||
}
|
||||
if(p->game->battlefield->countByType("token") >= 25)
|
||||
eff2 = 0;
|
||||
|
||||
|
||||
}
|
||||
//At this point the "basic" eff2 is computed, we further tweak it depending on general decisions, independent of theAbility type
|
||||
|
||||
@@ -1299,7 +1299,7 @@ int OrderedAIAction::getRevealedEfficiency(MTGAbility * ability2)
|
||||
{
|
||||
AIPlayer * chk = (AIPlayer*)p;
|
||||
if(may->ability && may->ability->getActionTc() && chk->chooseTarget(may->ability->getActionTc(),NULL,NULL,true))
|
||||
eff2 = 50 + (owner->getRandomGenerator()->random() % 50);
|
||||
eff2 = 50 + (owner->getRandomGenerator()->random() % 50);
|
||||
}
|
||||
if (p->game->hand->nb_cards == 0)
|
||||
eff2 = (int) ((float) eff2 * 1.3); //increase chance of using ability if hand is empty
|
||||
@@ -1351,7 +1351,7 @@ MTGCardInstance * AIPlayerBaka::chooseCard(TargetChooser * tc, MTGCardInstance *
|
||||
MTGPlayerCards * playerZones = source->controller()->game;
|
||||
if (comboHint && comboHint->cardTargets.size())
|
||||
{
|
||||
tc = GetComboTc(observer,tc);
|
||||
tc = GetComboTc(observer,tc);
|
||||
}
|
||||
for(int players = 0; players < 2;++players)
|
||||
{
|
||||
@@ -1376,9 +1376,9 @@ MTGCardInstance * AIPlayerBaka::chooseCard(TargetChooser * tc, MTGCardInstance *
|
||||
|
||||
bool AIPlayerBaka::payTheManaCost(ManaCost * cost, int anytypeofmana, MTGCardInstance * target,vector<MTGAbility*>gotPayments)
|
||||
{
|
||||
DebugTrace("AIPlayerBaka: AI attempting to pay a mana cost." << endl
|
||||
<< "- Target: " << (target ? target->name : "None" ) << endl
|
||||
<< "- Cost: " << (cost ? cost->toString() : "NULL") );
|
||||
DebugTrace("AIPlayerBaka: AI attempting to pay a mana cost." << endl
|
||||
<< "- Target: " << (target ? target->name : "None" ) << endl
|
||||
<< "- Cost: " << (cost ? cost->toString() : "NULL") );
|
||||
|
||||
if (!cost)
|
||||
{
|
||||
@@ -1450,7 +1450,7 @@ bool AIPlayerBaka::payTheManaCost(ManaCost * cost, int anytypeofmana, MTGCardIns
|
||||
}
|
||||
}
|
||||
if(k == gotPayments.size()-1)//only add it once, and at the end.
|
||||
paid->add(this->getManaPool());//incase some of our payments were mana already in the pool/.
|
||||
paid->add(this->getManaPool());//incase some of our payments were mana already in the pool/.
|
||||
if(paid->canAfford(cost, anytypeofmana))
|
||||
{
|
||||
if((!cost->hasX() && !cost->hasAnotherCost()) || k == gotPayments.size()-1)
|
||||
@@ -1575,7 +1575,7 @@ vector<MTGAbility*> AIPlayerBaka::canPayMana(MTGCardInstance * target, ManaCost
|
||||
if(!cost || (cost && !cost->getConvertedCost()) || !target)
|
||||
return vector<MTGAbility*>();
|
||||
map<MTGCardInstance*, bool> usedCards;
|
||||
|
||||
|
||||
return canPayMana(target, cost, anytypeofmana, usedCards);
|
||||
}
|
||||
|
||||
@@ -1857,7 +1857,7 @@ vector<MTGAbility*> AIPlayerBaka::canPaySunBurst(ManaCost * cost)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
for(int i = fullColor;i < cost->getConvertedCost();i++)
|
||||
{
|
||||
for (size_t i = 0; i < observer->mLayers->actionLayer()->manaObjects.size(); i++)
|
||||
@@ -1902,7 +1902,7 @@ int AIPlayerBaka::CanHandleCost(ManaCost * cost, MTGCardInstance * card)
|
||||
{
|
||||
ec->costs[i]->setSource(card);
|
||||
if(!ec->costs[i]->tc->countValidTargets())
|
||||
return 0;
|
||||
return 0;
|
||||
if(!chooseCard(ec->costs[i]->tc,card))
|
||||
return 0;
|
||||
}
|
||||
@@ -1981,7 +1981,7 @@ int AIPlayerBaka::createAbilityTargets(MTGAbility * a, MTGCardInstance * c, Rank
|
||||
|
||||
MTGCardInstance * cTargeting = dynamic_cast<MTGCardInstance*>(potentialTargets[0]);
|
||||
if(cTargeting)
|
||||
check = NEW OrderedAIAction(this, a,c,cTargeting);
|
||||
check = NEW OrderedAIAction(this, a,c,cTargeting);
|
||||
|
||||
Player * pTargeting = dynamic_cast<Player*>(potentialTargets[0]);
|
||||
if(pTargeting)
|
||||
@@ -2084,17 +2084,17 @@ int AIPlayerBaka::selectAbility()
|
||||
}
|
||||
}
|
||||
}
|
||||
// Try Deck hints first
|
||||
if (selectHintAbility())
|
||||
// Try Deck hints first
|
||||
if (selectHintAbility())
|
||||
return 1;
|
||||
|
||||
if(observer->mLayers->stackLayer()->lastActionController == this)
|
||||
{
|
||||
//this is here for 2 reasons, MTG rules state that priority is passed with each action.
|
||||
//without this ai is able to chain cast {t}:damage:1 target(creature) from everything it can all at once.
|
||||
//this not only is illegal but cause ai to waste abilities ei:all damage:1 on a single 1/1 creature.
|
||||
return 1;
|
||||
}
|
||||
if(observer->mLayers->stackLayer()->lastActionController == this)
|
||||
{
|
||||
//this is here for 2 reasons, MTG rules state that priority is passed with each action.
|
||||
//without this ai is able to chain cast {t}:damage:1 target(creature) from everything it can all at once.
|
||||
//this not only is illegal but cause ai to waste abilities ei:all damage:1 on a single 1/1 creature.
|
||||
return 1;
|
||||
}
|
||||
|
||||
RankingContainer ranking;
|
||||
list<int>::iterator it;
|
||||
@@ -2504,8 +2504,8 @@ int AIPlayerBaka::chooseTarget(TargetChooser * _tc, Player * forceTarget,MTGCard
|
||||
{
|
||||
if(observer->mExtraPayment)
|
||||
{
|
||||
observer->mExtraPayment->action->CheckUserInput(JGE_BTN_SEC);
|
||||
observer->mExtraPayment = NULL;
|
||||
observer->mExtraPayment->action->CheckUserInput(JGE_BTN_SEC);
|
||||
observer->mExtraPayment = NULL;
|
||||
}
|
||||
//there should never be a case where a extra cost target selection is happening at the same time as this..
|
||||
//extracost uses "chooseCard()" to determine its targets.
|
||||
@@ -2522,7 +2522,7 @@ int AIPlayerBaka::chooseTarget(TargetChooser * _tc, Player * forceTarget,MTGCard
|
||||
assert(tc);
|
||||
if (comboHint && comboHint->cardTargets.size())
|
||||
{
|
||||
tc = GetComboTc(observer,tc);
|
||||
tc = GetComboTc(observer,tc);
|
||||
}
|
||||
if(!checkOnly && tc->maxtargets > 1)
|
||||
{
|
||||
@@ -2619,7 +2619,7 @@ int AIPlayerBaka::chooseTarget(TargetChooser * _tc, Player * forceTarget,MTGCard
|
||||
}
|
||||
}
|
||||
if(playerTargetedZone > 1)
|
||||
target = target->opponent();
|
||||
target = target->opponent();
|
||||
playerTargetedZone--;
|
||||
}
|
||||
if (potentialTargets.size())
|
||||
@@ -2665,10 +2665,10 @@ int AIPlayerBaka::getEfficiency(MTGAbility * ability)
|
||||
check = NEW OrderedAIAction(this, ability, pTarget, ability->source);
|
||||
else
|
||||
check = NEW OrderedAIAction(this, ability, ability->source);
|
||||
|
||||
|
||||
if (!check)
|
||||
return -1;
|
||||
|
||||
|
||||
int result = getEfficiency(check);
|
||||
SAFE_DELETE(check);
|
||||
return result;
|
||||
@@ -2757,8 +2757,8 @@ MTGCardInstance * AIPlayerBaka::FindCardToPlay(ManaCost * pMana, const char * ty
|
||||
payAlternative = NONE;
|
||||
gotPayments = vector<MTGAbility*>();
|
||||
//canplayfromgraveyard
|
||||
while ((card = cd.nextmatch(game->graveyard, card)))
|
||||
{
|
||||
while ((card = cd.nextmatch(game->graveyard, card)))
|
||||
{
|
||||
bool hasFlashback = false;
|
||||
|
||||
if(card->getManaCost())
|
||||
@@ -2784,11 +2784,11 @@ MTGCardInstance * AIPlayerBaka::FindCardToPlay(ManaCost * pMana, const char * ty
|
||||
|
||||
/*// Case were manacost is equal to flashback cost, if they are different the AI hangs
|
||||
if (hasFlashback && (card->getManaCost() != card->getManaCost()->getFlashback()))
|
||||
continue;
|
||||
continue;
|
||||
|
||||
// Case were manacost is equal to retrace cost, if they are different the AI hangs
|
||||
if (hasRetrace && (card->getManaCost() != card->getManaCost()->getRetrace()))
|
||||
continue;*/
|
||||
continue;*/
|
||||
|
||||
if (card->hasType(Subtypes::TYPE_LAND))
|
||||
{
|
||||
@@ -2816,7 +2816,7 @@ MTGCardInstance * AIPlayerBaka::FindCardToPlay(ManaCost * pMana, const char * ty
|
||||
|
||||
if (card->hasType(Subtypes::TYPE_BATTLE) && card->types.size() > 0 && game->inPlay->hasTypeSpecificInt(Subtypes::TYPE_BATTLE,card->types[1]))
|
||||
continue;
|
||||
|
||||
|
||||
if(hints && hints->HintSaysItsForCombo(observer,card))
|
||||
{
|
||||
if(hints->canWeCombo(observer,card,this))
|
||||
@@ -2834,7 +2834,7 @@ MTGCardInstance * AIPlayerBaka::FindCardToPlay(ManaCost * pMana, const char * ty
|
||||
else
|
||||
{
|
||||
nextCardToPlay = NULL;
|
||||
continue;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
int currentCost = card->getManaCost()->getConvertedCost();
|
||||
@@ -2987,7 +2987,7 @@ MTGCardInstance * AIPlayerBaka::FindCardToPlay(ManaCost * pMana, const char * ty
|
||||
|
||||
if (card->hasType(Subtypes::TYPE_BATTLE) && card->types.size() > 0 && game->inPlay->hasTypeSpecificInt(Subtypes::TYPE_BATTLE,card->types[1]))
|
||||
continue;
|
||||
|
||||
|
||||
if(hints && hints->HintSaysItsForCombo(observer,card))
|
||||
{
|
||||
if(hints->canWeCombo(observer,card,this))
|
||||
@@ -3005,7 +3005,7 @@ MTGCardInstance * AIPlayerBaka::FindCardToPlay(ManaCost * pMana, const char * ty
|
||||
else
|
||||
{
|
||||
nextCardToPlay = NULL;
|
||||
continue;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
int currentCost = card->getManaCost()->getConvertedCost();
|
||||
@@ -3013,7 +3013,7 @@ MTGCardInstance * AIPlayerBaka::FindCardToPlay(ManaCost * pMana, const char * ty
|
||||
gotPayments.clear();
|
||||
if((!pMana->canAfford(card->getManaCost(),0) || card->getManaCost()->getKicker()))
|
||||
gotPayments = canPayMana(card,card->getManaCost(),card->has(Constants::ANYTYPEOFMANA));
|
||||
//for preformence reason we only look for specific mana if the payment couldn't be made with pmana.
|
||||
//for preformence reason we only look for specific mana if the payment couldn't be made with pmana.
|
||||
if ((currentCost > maxCost || hasX) && (gotPayments.size() || pMana->canAfford(card->getManaCost(),card->has(Constants::ANYTYPEOFMANA))))
|
||||
{
|
||||
TargetChooserFactory tcf(observer);
|
||||
@@ -3122,10 +3122,10 @@ MTGCardInstance * AIPlayerBaka::FindCardToPlay(ManaCost * pMana, const char * ty
|
||||
|
||||
if (game->playRestrictions->canPutIntoZone(card, game->stack) == PlayRestriction::CANT_PLAY)
|
||||
continue;
|
||||
|
||||
|
||||
if (card->hasType(Subtypes::TYPE_LEGENDARY) && game->inPlay->findByName(card->name))
|
||||
continue;
|
||||
|
||||
|
||||
if(hints && hints->HintSaysItsForCombo(observer,card))
|
||||
{
|
||||
if(hints->canWeCombo(observer,card,this))
|
||||
@@ -3143,7 +3143,7 @@ MTGCardInstance * AIPlayerBaka::FindCardToPlay(ManaCost * pMana, const char * ty
|
||||
else
|
||||
{
|
||||
nextCardToPlay = NULL;
|
||||
continue;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
int currentCost = card->getManaCost()->getConvertedCost();
|
||||
@@ -3151,7 +3151,7 @@ MTGCardInstance * AIPlayerBaka::FindCardToPlay(ManaCost * pMana, const char * ty
|
||||
gotPayments.clear();
|
||||
if((!pMana->canAfford(card->getManaCost(),0) || card->getManaCost()->getKicker()))
|
||||
gotPayments = canPayMana(card,card->getManaCost(),card->has(Constants::ANYTYPEOFMANA));
|
||||
//for preformence reason we only look for specific mana if the payment couldn't be made with pmana.
|
||||
//for preformence reason we only look for specific mana if the payment couldn't be made with pmana.
|
||||
if ((currentCost > maxCost || hasX) && (gotPayments.size() || pMana->canAfford(card->getManaCost(),card->has(Constants::ANYTYPEOFMANA))))
|
||||
{
|
||||
TargetChooserFactory tcf(observer);
|
||||
@@ -3275,8 +3275,8 @@ MTGCardInstance * AIPlayerBaka::FindCardToPlay(ManaCost * pMana, const char * ty
|
||||
|
||||
//PLaneswalkers are now legendary so this is redundant
|
||||
//if (card->hasType(Subtypes::TYPE_PLANESWALKER) && card->types.size() > 0 && game->inPlay->hasTypeSpecificInt(Subtypes::TYPE_PLANESWALKER,card->types[1]))
|
||||
//continue;
|
||||
|
||||
//continue;
|
||||
|
||||
if(hints && hints->HintSaysItsForCombo(observer,card))
|
||||
{
|
||||
if(hints->canWeCombo(observer,card,this))
|
||||
@@ -3294,7 +3294,7 @@ MTGCardInstance * AIPlayerBaka::FindCardToPlay(ManaCost * pMana, const char * ty
|
||||
else
|
||||
{
|
||||
nextCardToPlay = NULL;
|
||||
continue;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
int currentCost = card->getManaCost()->getConvertedCost();
|
||||
@@ -3487,7 +3487,7 @@ MTGCardInstance * AIPlayerBaka::FindCardToPlay(ManaCost * pMana, const char * ty
|
||||
if(hints && hints->HintSaysItsForCombo(observer,nextCardToPlay))
|
||||
{
|
||||
DebugTrace(" AI wants to play a card that belongs to a combo.");
|
||||
nextCardToPlay = NULL;
|
||||
nextCardToPlay = NULL;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -3521,7 +3521,7 @@ MTGCardInstance * AIPlayerBaka::activateCombo()
|
||||
if(comboCards.size())
|
||||
{
|
||||
nextCardToPlay = comboCards.back();
|
||||
|
||||
|
||||
DebugTrace("ai is doing a combo:" << nextCardToPlay->getName());
|
||||
DebugTrace("ai is doing a combo:" << nextCardToPlay->getName());
|
||||
DebugTrace("ai is doing a combo:" << nextCardToPlay->getName());
|
||||
@@ -3574,7 +3574,7 @@ int AIPlayerBaka::computeActions()
|
||||
if(doThis >= 0)
|
||||
{
|
||||
if(object->abilitiesMenu->isMultipleChoice)
|
||||
observer->mLayers->actionLayer()->ButtonPressedOnMultipleChoice(doThis);
|
||||
observer->mLayers->actionLayer()->ButtonPressedOnMultipleChoice(doThis);
|
||||
else
|
||||
observer->mLayers->actionLayer()->doReactTo(doThis);
|
||||
}
|
||||
@@ -3985,16 +3985,16 @@ int AIPlayerBaka::getCreaturesInfo(Player * player, int neededInfo, int untapMod
|
||||
|
||||
int AIPlayerBaka::chooseAttackers()
|
||||
{
|
||||
int myCreatures = getCreaturesInfo(this, INFO_NBCREATURES, -1, 1);
|
||||
if (myCreatures < 1)
|
||||
return 0;
|
||||
int myCreatures = getCreaturesInfo(this, INFO_NBCREATURES, -1, 1);
|
||||
if (myCreatures < 1)
|
||||
return 0;
|
||||
//Attack with all creatures
|
||||
//How much damage can the other player do during his next Attack ?
|
||||
int opponentForce = getCreaturesInfo(opponent(), INFO_CREATURESPOWER);
|
||||
int opponentCreatures = getCreaturesInfo(opponent(), INFO_NBCREATURES);
|
||||
int myForce = getCreaturesInfo(this, INFO_CREATURESPOWER, -1, 1);
|
||||
if(opponent()->life < 5)
|
||||
agressivity += 31;
|
||||
if(opponent()->life < 5)
|
||||
agressivity += 31;
|
||||
|
||||
bool attack = ((myCreatures > opponentCreatures) || (myForce > opponentForce) || (myForce > 2 * opponent()->life));
|
||||
if (agressivity > 80 && !attack && life > opponentForce)
|
||||
@@ -4002,7 +4002,7 @@ int AIPlayerBaka::chooseAttackers()
|
||||
opponentCreatures = getCreaturesInfo(opponent(), INFO_NBCREATURES, -1);
|
||||
opponentForce = getCreaturesInfo(opponent(), INFO_CREATURESPOWER, -1);
|
||||
attack = (myCreatures >= opponentCreatures && myForce > opponentForce)
|
||||
|| (myForce > opponentForce) || (myForce > opponent()->life) || ((life - opponentForce) > 30) ;
|
||||
|| (myForce > opponentForce) || (myForce > opponent()->life) || ((life - opponentForce) > 30) ;
|
||||
}
|
||||
printf("Choose attackers : %i %i %i %i -> %i\n", opponentForce, opponentCreatures, myForce, myCreatures, attack);
|
||||
|
||||
@@ -4012,16 +4012,13 @@ int AIPlayerBaka::chooseAttackers()
|
||||
MTGCardInstance * card = NULL;
|
||||
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);
|
||||
doAbility(a,card);
|
||||
observer->cardClick(card, MTGAbility::ATTACK_COST);
|
||||
}
|
||||
MTGAbility* a = observer->mLayers->actionLayer()->getAbility(MTGAbility::ATTACK_COST);
|
||||
doAbility(a, card);
|
||||
observer->cardClick(card, MTGAbility::ATTACK_COST);
|
||||
}
|
||||
observer->cardClick(card, MTGAbility::MTG_ATTACK_RULE);
|
||||
}
|
||||
@@ -4052,6 +4049,76 @@ int AIPlayerBaka::chooseAttackers()
|
||||
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 ? */
|
||||
int AIPlayerBaka::canFirstStrikeKill(MTGCardInstance * card, MTGCardInstance *ennemy)
|
||||
{
|
||||
@@ -4073,14 +4140,16 @@ int AIPlayerBaka::chooseBlockers()
|
||||
//Should not block during my own turn...
|
||||
if (observer->currentPlayer == this)
|
||||
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
|
||||
CardDescriptor cdAttackers;
|
||||
cdAttackers.init();
|
||||
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)))
|
||||
{
|
||||
if (card->isAttacker())
|
||||
@@ -4094,11 +4163,12 @@ int AIPlayerBaka::chooseBlockers()
|
||||
cd.unsecureSetTapped(-1);
|
||||
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)))
|
||||
{
|
||||
if(hints && hints->HintSaysDontBlock(observer,card))
|
||||
if (hints && hints->HintSaysDontBlock(observer, card))
|
||||
continue;
|
||||
|
||||
observer->cardClick(card, MTGAbility::MTG_BLOCK_RULE);
|
||||
int set = 0;
|
||||
while (!set)
|
||||
@@ -4109,8 +4179,8 @@ int AIPlayerBaka::chooseBlockers()
|
||||
}
|
||||
else
|
||||
{
|
||||
MTGCardInstance * attacker = card->defenser;
|
||||
map<MTGCardInstance *, int>::iterator it = opponentsToughness.find(attacker);
|
||||
MTGCardInstance* attacker = card->defenser;
|
||||
map<MTGCardInstance*, int>::iterator it = opponentsToughness.find(attacker);
|
||||
if (it == opponentsToughness.end())
|
||||
{
|
||||
opponentsToughness[attacker] = attacker->toughness;
|
||||
@@ -4125,7 +4195,7 @@ int AIPlayerBaka::chooseBlockers()
|
||||
{
|
||||
if (card->blockCost)
|
||||
{
|
||||
MTGAbility * a = observer->mLayers->actionLayer()->getAbility(MTGAbility::BLOCK_COST);
|
||||
MTGAbility* a = observer->mLayers->actionLayer()->getAbility(MTGAbility::BLOCK_COST);
|
||||
doAbility(a, card);
|
||||
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,
|
||||
// We change strategy, first we unassign its blockers that where assigned above
|
||||
// Second pass: unassign if attacker is not expected to die
|
||||
card = NULL;
|
||||
while ((card = cd.nextmatch(game->inPlay, card)))
|
||||
{
|
||||
if(hints && hints->HintSaysDontBlock(observer,card))
|
||||
if (hints && hints->HintSaysDontBlock(observer, card))
|
||||
continue;
|
||||
|
||||
if (card->defenser && opponentsToughness[card->defenser] > 0)
|
||||
{
|
||||
while (card->defenser)
|
||||
@@ -4151,53 +4221,156 @@ int AIPlayerBaka::chooseBlockers()
|
||||
}
|
||||
}
|
||||
|
||||
//Assign the "free" potential blockers to attacking creatures that are not blocked enough
|
||||
// Third pass: intelligent blocking
|
||||
card = NULL;
|
||||
while ((card = cd.nextmatch(game->inPlay, card)))
|
||||
{
|
||||
if(hints && hints->HintSaysDontBlock(observer,card))
|
||||
if (hints && hints->HintSaysDontBlock(observer, card))
|
||||
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)
|
||||
{
|
||||
if (card->blockCost)
|
||||
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)
|
||||
{
|
||||
MTGAbility * a = observer->mLayers->actionLayer()->getAbility(MTGAbility::BLOCK_COST);
|
||||
doAbility(a, card);
|
||||
MTGCardInstance* blocker = *itb;
|
||||
if (blocker)
|
||||
totalAssignedDamage += blocker->power;
|
||||
}
|
||||
observer->cardClick(card, MTGAbility::MTG_BLOCK_RULE);
|
||||
int set = 0;
|
||||
while (!set)
|
||||
|
||||
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)
|
||||
{
|
||||
if (!card->defenser)
|
||||
int score = attacker->power * 2 + attacker->toughness;
|
||||
if (getStats() && getStats()->isInTop(attacker, 3, false))
|
||||
score += 100;
|
||||
|
||||
if (score > bestScore)
|
||||
{
|
||||
set = 1;
|
||||
bestScore = score;
|
||||
bestAttacker = attacker;
|
||||
}
|
||||
else
|
||||
}
|
||||
// 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)
|
||||
{
|
||||
MTGCardInstance * attacker = card->defenser;
|
||||
if (opponentsToughness[attacker] <= 0 || (card->toughness <= attacker->power && opponentForce * 2 < life && !canFirstStrikeKill(card, attacker)) || attacker->nbOpponents() > 1)
|
||||
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)
|
||||
{
|
||||
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;
|
||||
extraBlockers.push_back(c2);
|
||||
if ((int)extraBlockers.size() + currentBlockers + 1 >= requiredBlockers)
|
||||
break;
|
||||
}
|
||||
else
|
||||
}
|
||||
}
|
||||
|
||||
if (currentBlockers + (int)extraBlockers.size() + 1 >= requiredBlockers)
|
||||
{
|
||||
if (card->blockCost)
|
||||
{
|
||||
MTGAbility* a = observer->mLayers->actionLayer()->getAbility(MTGAbility::BLOCK_COST);
|
||||
doAbility(a, card);
|
||||
}
|
||||
observer->cardClick(card, MTGAbility::MTG_BLOCK_RULE);
|
||||
opponentsToughness[bestAttacker] -= card->power;
|
||||
|
||||
for (size_t i = 0; i < extraBlockers.size(); ++i)
|
||||
{
|
||||
MTGCardInstance* extra = extraBlockers[i];
|
||||
if (extra->blockCost)
|
||||
{
|
||||
set = 1;
|
||||
MTGAbility* a = observer->mLayers->actionLayer()->getAbility(MTGAbility::BLOCK_COST);
|
||||
doAbility(a, extra);
|
||||
}
|
||||
observer->cardClick(extra, MTGAbility::MTG_BLOCK_RULE);
|
||||
opponentsToughness[bestAttacker] -= extra->power;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -4269,7 +4442,7 @@ int AIPlayerBaka::receiveEvent(WEvent * event)
|
||||
|
||||
|
||||
AIPlayerBaka::AIPlayerBaka(GameObserver *observer, string file, string fileSmall, string avatarFile, MTGDeck * deck) :
|
||||
AIPlayer(observer, file, fileSmall, deck)
|
||||
AIPlayer(observer, file, fileSmall, deck)
|
||||
{
|
||||
|
||||
nextCardToPlay = NULL;
|
||||
@@ -4312,7 +4485,7 @@ AIPlayerBaka::AIPlayerBaka(GameObserver *observer, string file, string fileSmall
|
||||
|
||||
if (fileSmall == "ai_baka_eviltwin")
|
||||
mAvatar->SetHFlip(true);
|
||||
|
||||
|
||||
initTimer();
|
||||
}
|
||||
|
||||
@@ -4379,17 +4552,17 @@ int AIPlayerBaka::Act(float dt)
|
||||
else
|
||||
{
|
||||
if (observer->currentActionPlayer == this)//if im not the action player why would i requestnextphase?
|
||||
observer->userRequestNextGamePhase();
|
||||
observer->userRequestNextGamePhase();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
while(clickstream.size())
|
||||
{
|
||||
AIAction * action = clickstream.front();
|
||||
action->Act();
|
||||
SAFE_DELETE(action);
|
||||
clickstream.pop();
|
||||
AIAction * action = clickstream.front();
|
||||
action->Act();
|
||||
SAFE_DELETE(action);
|
||||
clickstream.pop();
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
|
||||
@@ -213,6 +213,24 @@ void Credits::compute(GameObserver* g, GameApp * _app)
|
||||
bonus.push_back(b);
|
||||
}
|
||||
|
||||
if (p1->game->hand->nb_cards == 0)
|
||||
{
|
||||
CreditBonus * b = NEW CreditBonus(100, _("'Limited Resources' Bonus"));
|
||||
bonus.push_back(b);
|
||||
}
|
||||
|
||||
if (p1->game->hand->nb_cards > 7)
|
||||
{
|
||||
CreditBonus * b = NEW CreditBonus(150, _("'Arcane Encyclopedia' Bonus"));
|
||||
bonus.push_back(b);
|
||||
}
|
||||
|
||||
if (p1->game->hand->nb_cards == 7)
|
||||
{
|
||||
CreditBonus * b = NEW CreditBonus(77, _("'Library of Alexandria' Bonus"));
|
||||
bonus.push_back(b);
|
||||
}
|
||||
|
||||
if (p1->game->library->nb_cards == 0)
|
||||
{
|
||||
CreditBonus * b = NEW CreditBonus(391, _("'Decree of Theophilus' Bonus"));
|
||||
@@ -379,6 +397,11 @@ void Credits::computeTournament(GameObserver* g, GameApp * _app,bool tournament,
|
||||
CreditBonus * b = NEW CreditBonus(100 * mGamesWon * difficulty, _("Difficulty Bonus"));
|
||||
bonus.push_back(b);
|
||||
}
|
||||
if (mGamesWon==0)
|
||||
{
|
||||
CreditBonus * b = NEW CreditBonus(100, _("Game Bonus"));
|
||||
bonus.push_back(b);
|
||||
}
|
||||
if (mGamesWon>1)
|
||||
{
|
||||
CreditBonus * b = NEW CreditBonus(mGamesWon * 200, _("Won Game Bonus"));
|
||||
@@ -662,7 +685,7 @@ void Credits::Render()
|
||||
{
|
||||
f2->DrawString(_("There's more!").c_str(), 10, y + 15);
|
||||
f->DrawString(_("Mods, additional cards, updates and more at:").c_str(), 10, y + 30);
|
||||
f2->DrawString("-> http://wololo.net/wagic", 10, y + 42);
|
||||
f2->DrawString("Discord and GitHub: Wagic game", 10, y + 42);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1292,6 +1292,7 @@ void GameObserver::Affinity()
|
||||
card->has(Constants::AFFINITYCONTROLLERCREATURES) ||
|
||||
card->has(Constants::AFFINITYOPPONENTCREATURES) ||
|
||||
card->has(Constants::AFFINITYALLDEADCREATURES) ||
|
||||
card->has(Constants::AFFINITYTWOALLDEADCREATURES) ||
|
||||
card->has(Constants::AFFINITYPARTY) ||
|
||||
card->has(Constants::AFFINITYBASICLANDTYPES) ||
|
||||
card->has(Constants::AFFINITYTWOBASICLANDTYPES) ||
|
||||
|
||||
@@ -605,7 +605,7 @@ int AbilityFactory::parseCastRestrictions(MTGCardInstance * card, Player * playe
|
||||
if (grave->hasType("artifact")) checkTypesAmount++;
|
||||
if (grave->hasType("planeswalker")) checkTypesAmount++;
|
||||
if (grave->hasType("battle")) checkTypesAmount++;
|
||||
if (grave->hasType("tribal")) checkTypesAmount++;
|
||||
if (grave->hasType("kindred")) checkTypesAmount++;
|
||||
if (checkTypesAmount < 4)
|
||||
return 0;
|
||||
}
|
||||
@@ -625,7 +625,7 @@ int AbilityFactory::parseCastRestrictions(MTGCardInstance * card, Player * playe
|
||||
if (grave->hasType("artifact")) checkTypesAmount++;
|
||||
if (grave->hasType("planeswalker")) checkTypesAmount++;
|
||||
if (grave->hasType("battle")) checkTypesAmount++;
|
||||
if (grave->hasType("tribal")) checkTypesAmount++;
|
||||
if (grave->hasType("kindred")) checkTypesAmount++;
|
||||
if (checkTypesAmount > 3)
|
||||
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
|
||||
|
||||
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();
|
||||
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
|
||||
CardPrimitive::setSubtype(values[i].c_str());
|
||||
const string& subtype = values[i];
|
||||
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;
|
||||
if (opponent->basicAbilities[(int)Constants::FEAR] && !(this->hasType(Subtypes::TYPE_ARTIFACT) || this->hasColor(Constants::MTG_COLOR_BLACK)))
|
||||
return 0;
|
||||
if (opponent->controller()->game->battlefield->hasAbility(Constants::LURE) && !opponent->has(Constants::LURE))
|
||||
return 0;
|
||||
//if (opponent->controller()->game->battlefield->hasAbility(Constants::LURE) && !opponent->has(Constants::LURE))
|
||||
//return 0; Doesn't consider if the lure creature is attacking
|
||||
//intimidate
|
||||
if (opponent->basicAbilities[(int)Constants::INTIMIDATE] && !(this->hasType(Subtypes::TYPE_ARTIFACT)))
|
||||
{
|
||||
@@ -1340,6 +1345,7 @@ ManaCost * MTGCardInstance::computeNewCost(MTGCardInstance * card,ManaCost * Cos
|
||||
card->has(Constants::AFFINITYCONTROLLERCREATURES) ||
|
||||
card->has(Constants::AFFINITYOPPONENTCREATURES) ||
|
||||
card->has(Constants::AFFINITYALLDEADCREATURES) ||
|
||||
card->has(Constants::AFFINITYTWOALLDEADCREATURES) ||
|
||||
card->has(Constants::AFFINITYPARTY) ||
|
||||
card->has(Constants::AFFINITYBASICLANDTYPES) ||
|
||||
card->has(Constants::AFFINITYTWOBASICLANDTYPES) ||
|
||||
@@ -1381,7 +1387,7 @@ ManaCost * MTGCardInstance::computeNewCost(MTGCardInstance * card,ManaCost * Cos
|
||||
color = 1;
|
||||
type = "creature";
|
||||
}
|
||||
else if (card->has(Constants::AFFINITYALLCREATURES) || card->has(Constants::AFFINITYCONTROLLERCREATURES) || card->has(Constants::AFFINITYOPPONENTCREATURES) || card->has(Constants::AFFINITYALLDEADCREATURES))
|
||||
else if (card->has(Constants::AFFINITYALLCREATURES) || card->has(Constants::AFFINITYCONTROLLERCREATURES) || card->has(Constants::AFFINITYOPPONENTCREATURES) || card->has(Constants::AFFINITYALLDEADCREATURES) || card->has(Constants::AFFINITYTWOALLDEADCREATURES))
|
||||
{
|
||||
type = "creature";
|
||||
}
|
||||
@@ -1456,6 +1462,13 @@ ManaCost * MTGCardInstance::computeNewCost(MTGCardInstance * card,ManaCost * Cos
|
||||
reduce = value->getValue();
|
||||
SAFE_DELETE(value);
|
||||
}
|
||||
else if (card->has(Constants::AFFINITYTWOALLDEADCREATURES))
|
||||
{
|
||||
WParsedInt* value = NEW WParsedInt("bothalldeadcreature", NULL, card);
|
||||
if(value)
|
||||
reduce = value->getValue() * 2;
|
||||
SAFE_DELETE(value);
|
||||
}
|
||||
else if (card->has(Constants::AFFINITYPARTY))
|
||||
{
|
||||
WParsedInt* value = NEW WParsedInt("calculateparty", NULL, card);
|
||||
|
||||
@@ -252,7 +252,7 @@ const char* Constants::MTGBasicAbilities[] = {
|
||||
"affinityallcreatures", //Cost 1 less for each creature in all battlefields.
|
||||
"affinitycontrollercreatures", //Cost 1 less for each creature in controller battlefield.
|
||||
"affinityopponentcreatures", //Cost 1 less for each creature in opponent battlefield.
|
||||
"affinityalldeadcreatures", //Cost 1 less for each died creature in this turn.
|
||||
"affinityalldeadcreatures", //Costs {1} less to cast for each creature that died this turn
|
||||
"affinityparty", //Cost 1 less for each creature in your party.
|
||||
"affinityenchantments", //Cost 1 less for each enchantment in your battlefield.
|
||||
"affinitybasiclandtypes", //Cost 1 less for each basic land type in your battlefield.
|
||||
@@ -268,7 +268,8 @@ const char* Constants::MTGBasicAbilities[] = {
|
||||
"poisontentoxic", // Card has toxic 10
|
||||
"eqpasinst", // Can equip as instant
|
||||
"canloyaltyasinst", // Can activate loyalty abilities as instant (e.g. "The Wandering Emperor").
|
||||
"canplayenchantmentlibrarytop" // May play enchantments from top
|
||||
"canplayenchantmentlibrarytop", // May play enchantments from top
|
||||
"affinitytwoalldeadcreatures" // Costs {2} less to cast for each creature that died this turn
|
||||
};
|
||||
|
||||
map<string,int> Constants::MTGBasicAbilitiesMap;
|
||||
|
||||
@@ -19,7 +19,7 @@ Subtypes::Subtypes()
|
||||
find("Equipment");
|
||||
find("Aura");
|
||||
find("Planeswalker");
|
||||
find("Tribal");
|
||||
find("Kindred");
|
||||
find("Plane");
|
||||
find("Scheme");
|
||||
find("Vanguard");
|
||||
@@ -96,7 +96,7 @@ bool Subtypes::isType(unsigned int type)
|
||||
type == TYPE_LAND ||
|
||||
type == TYPE_ARTIFACT ||
|
||||
type == TYPE_PLANESWALKER ||
|
||||
type == TYPE_TRIBAL ||
|
||||
type == TYPE_KINDRED ||
|
||||
type == TYPE_PLANE ||
|
||||
type == TYPE_SCHEME ||
|
||||
type == TYPE_VANGUARD ||
|
||||
|
||||
@@ -319,6 +319,11 @@ TargetChooser * TargetChooserFactory::createTargetChooser(string s, MTGCardInsta
|
||||
zones[nbzones++] = MTGGameZone::MY_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)
|
||||
{
|
||||
zones[nbzones++] = MTGGameZone::MY_LIBRARY;
|
||||
@@ -1155,7 +1160,7 @@ TargetChooser * TargetChooserFactory::createTargetChooser(string s, MTGCardInsta
|
||||
cd->removeType("creature");
|
||||
cd->removeType("planeswalker");
|
||||
cd->removeType("battle");
|
||||
cd->removeType("tribal");
|
||||
cd->removeType("kindred");
|
||||
if (!cd->types.size()){
|
||||
int i = rand() % 10000 + 1;
|
||||
ostringstream subt;
|
||||
|
||||
@@ -2099,21 +2099,24 @@ void WGuiFilterItem::updateValue()
|
||||
mParent->subMenu = NEW SimpleMenu(JGE::GetInstance(), WResourceManager::Instance(), -1234, this, Fonts::MAIN_FONT, 20, 20, "Filter:");
|
||||
if (filterType == FILTER_TYPE)
|
||||
{
|
||||
mParent->addArg("Legendary Creature", "t:Legendary;&t:Creature;");
|
||||
mParent->addArg("Artifact", "t:Artifact;");
|
||||
mParent->addArg("Artifact Creature", "t:Artifact;&t:Creature;");
|
||||
mParent->addArg("Aura", "t:Aura;");
|
||||
mParent->addArg("Basic", "t:Basic;");
|
||||
mParent->addArg("Battle", "t:Battle;");
|
||||
mParent->addArg("Creature", "t:Creature;");
|
||||
mParent->addArg("Enchantment", "t:Enchantment;");
|
||||
mParent->addArg("Equipment", "t:Equipment;");
|
||||
mParent->addArg("Instant", "t:Instant;");
|
||||
mParent->addArg("Kindred", "t:Kindred;");
|
||||
mParent->addArg("Land", "t:Land;");
|
||||
mParent->addArg("Legendary", "t:Legendary;");
|
||||
mParent->addArg("Sorcery", "t:Sorcery;");
|
||||
mParent->addArg("Snow", "t:Snow;");
|
||||
mParent->addArg("Tribal", "t:Tribal;");
|
||||
mParent->addArg("Noncreature", "{t:Creature;}");
|
||||
mParent->addArg("Nonland", "{t:Land;}");
|
||||
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("Conspiracy", "t:Conspiracy;");
|
||||
|
||||
@@ -2149,6 +2152,7 @@ void WGuiFilterItem::updateValue()
|
||||
mParent->addArg("Rare", "r:r;");
|
||||
mParent->addArg("Uncommon", "r:u;");
|
||||
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;}");
|
||||
}
|
||||
else if (filterType == FILTER_CMC)
|
||||
|
||||
@@ -1186,7 +1186,7 @@ void WParsedInt::init(string s, Spell * spell, MTGCardInstance * card)
|
||||
intValue = 0;
|
||||
if(card->hasType(Subtypes::TYPE_PLANESWALKER))
|
||||
intValue++;
|
||||
if(card->hasType(Subtypes::TYPE_TRIBAL))
|
||||
if(card->hasType(Subtypes::TYPE_KINDRED))
|
||||
intValue++;
|
||||
if(card->hasType(Subtypes::TYPE_SORCERY))
|
||||
intValue++;
|
||||
@@ -1262,7 +1262,7 @@ void WParsedInt::extendedParse(string s, Spell * spell, MTGCardInstance * card)
|
||||
MTGGameZone * checkZone = card->getObserver()->players[j]->game->inPlay;
|
||||
if(cardHasTypeinZone("planeswalker",checkZone))
|
||||
pc = 1;
|
||||
if(cardHasTypeinZone("tribal",checkZone))
|
||||
if(cardHasTypeinZone("kindred",checkZone))
|
||||
tc = 1;
|
||||
if(cardHasTypeinZone("sorcery",checkZone))
|
||||
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;
|
||||
if(cardHasTypeinZone("planeswalker",checkZone))
|
||||
pc = 1;
|
||||
if(cardHasTypeinZone("tribal",checkZone))
|
||||
if(cardHasTypeinZone("kindred",checkZone))
|
||||
tc = 1;
|
||||
if(cardHasTypeinZone("sorcery",checkZone))
|
||||
sc = 1;
|
||||
@@ -1311,7 +1311,7 @@ void WParsedInt::extendedParse(string s, Spell * spell, MTGCardInstance * card)
|
||||
MTGGameZone * checkZone = card->getObserver()->players[j]->game->graveyard;
|
||||
if(cardHasTypeinZone("planeswalker",checkZone))
|
||||
pc = 1;
|
||||
if(cardHasTypeinZone("tribal",checkZone))
|
||||
if(cardHasTypeinZone("kindred",checkZone))
|
||||
tc = 1;
|
||||
if(cardHasTypeinZone("sorcery",checkZone))
|
||||
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;
|
||||
if(cardHasTypeinZone("planeswalker",checkZone))
|
||||
pc = 1;
|
||||
if(cardHasTypeinZone("tribal",checkZone))
|
||||
if(cardHasTypeinZone("kindred",checkZone))
|
||||
tc = 1;
|
||||
if(cardHasTypeinZone("sorcery",checkZone))
|
||||
sc = 1;
|
||||
|
||||
Reference in New Issue
Block a user