Compare commits
72 Commits
travis_mac
...
VS2019
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a2f510bbd5 | ||
|
|
4605d38982 | ||
|
|
d9452b02d9 | ||
|
|
1cfee14caa | ||
|
|
fd3777f08e | ||
|
|
a27216c317 | ||
|
|
8315acbe86 | ||
|
|
7a2f23db45 | ||
|
|
711f52e5ce | ||
|
|
0cf8c1a970 | ||
|
|
2750b34b4f | ||
|
|
b023dd89b6 | ||
|
|
3d9526a1dd | ||
|
|
1b8157ef0e | ||
|
|
8d20fd6483 | ||
|
|
66741957c3 | ||
|
|
eb7d8850f4 | ||
|
|
934b9d2856 | ||
|
|
0af443b753 | ||
|
|
41e160ae34 | ||
|
|
8b620627d9 | ||
|
|
d943778309 | ||
|
|
06cb835a5b | ||
|
|
f1a529576e | ||
|
|
1af3cff419 | ||
|
|
5db6b807ba | ||
|
|
1c6b0bdfd5 | ||
|
|
3dfcc65fa6 | ||
|
|
c3937ce517 | ||
|
|
ab1fbaa806 | ||
|
|
6eca5bea2f | ||
|
|
e4d73d95ec | ||
|
|
363383df6d | ||
|
|
0d05804376 | ||
|
|
cdd36a404b | ||
|
|
64c509980c | ||
|
|
46ba018201 | ||
|
|
0cb931e6e2 | ||
|
|
58af6f73d9 | ||
|
|
e81f1299cb | ||
|
|
9b5f9684b0 | ||
|
|
d934c0948c | ||
|
|
917a3a88df | ||
|
|
dc5b8a8c52 | ||
|
|
d2b44e652b | ||
|
|
1ce3b469e7 | ||
|
|
07e6d90c98 | ||
|
|
85231cda01 | ||
|
|
8549b7b1b4 | ||
|
|
9f58ef9916 | ||
|
|
c734ee9fd1 | ||
|
|
77d87902d9 | ||
|
|
b5c8656ac9 | ||
|
|
28f6b73da6 | ||
|
|
521b505543 | ||
|
|
c5a3310103 | ||
|
|
0c053c713a | ||
|
|
bc06f93aae | ||
|
|
8e919aeeb1 | ||
|
|
6bd09e42e0 | ||
|
|
1f670b9919 | ||
|
|
c805a58fb0 | ||
|
|
34517004df | ||
|
|
b0506bcd96 | ||
|
|
7a3a6c04a6 | ||
|
|
54e4b08e1f | ||
|
|
67c22c5186 | ||
|
|
87aba86fa8 | ||
|
|
28ea300f42 | ||
|
|
858c26b46a | ||
|
|
70a6c7149c | ||
|
|
b4a34216c8 |
82
.travis.yml
82
.travis.yml
@@ -1,30 +1,70 @@
|
||||
language: objective-c
|
||||
language: cpp
|
||||
dist: trusty
|
||||
branches:
|
||||
except:
|
||||
- latest-master
|
||||
|
||||
before_install:
|
||||
- brew update
|
||||
- brew install qt5
|
||||
- export BUILD_PSP=YES
|
||||
- export BUILD_ANDROID=YES
|
||||
- export BUILD_Qt=YES
|
||||
- export BUILD_MAC=NO
|
||||
# Only building on Mac when not handling pull request
|
||||
# - if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then
|
||||
# export BUILD_MAC=YES;
|
||||
# fi
|
||||
- sudo apt-get update -qq
|
||||
# Building for PSP here
|
||||
- if [ "$BUILD_PSP" == "YES" ]; then
|
||||
export PSPDEV="$TRAVIS_BUILD_DIR/opt/pspsdk" &&
|
||||
export PSPSDK="$PSPDEV/psp/sdk" &&
|
||||
export PATH="$PATH:$PSPDEV/bin:$PSPSDK/bin" &&
|
||||
wget -O sdk.lzma http://downloads.sourceforge.net/project/minpspw/SDK%20%2B%20devpak/pspsdk%200.11.2/minpspw_0.11.2-amd64.tar.lzma;
|
||||
fi
|
||||
# Building for Qt here
|
||||
- if [ "$BUILD_Qt" == "YES" ]; then
|
||||
sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu trusty universe" &&
|
||||
sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu trusty main" &&
|
||||
sudo apt-get -qq update &&
|
||||
sudo apt-get -qq install qt5-qmake qtbase5-dev qtdeclarative5-dev qttools5-dev qtmultimedia5-dev pulseaudio libpulse-dev &&
|
||||
export QMAKE="qmake -qt=qt5";
|
||||
fi
|
||||
# Building for Android here
|
||||
- if [ "$BUILD_ANDROID" == "YES" ]; then
|
||||
export ANDROID="android-sdk-linux/tools/android" &&
|
||||
if [ `uname -m` = x86_64 ]; then
|
||||
sudo dpkg --add-architecture i386 && sudo apt-get update &&
|
||||
sudo apt-get install -qq --force-yes libgd2-xpm-dev libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5 lib32z1 jq ant; fi &&
|
||||
wget http://dl.google.com/android/ndk/android-ndk-r9-linux-x86_64.tar.bz2 -nv &&
|
||||
wget http://dl.google.com/android/android-sdk_r24.3.4-linux.tgz -nv;
|
||||
fi
|
||||
|
||||
install:
|
||||
- if [ "$BUILD_PSP" == "YES" ]; then
|
||||
tar -x --xz -f sdk.lzma;
|
||||
fi
|
||||
- if [ "$BUILD_ANDROID" == "YES" ]; then
|
||||
tar --absolute-names -jxf android-ndk-r9-linux-x86_64.tar.bz2 &&
|
||||
tar -zxf android-sdk_r24.3.4-linux.tgz &&
|
||||
$ANDROID list sdk --extended -a &&
|
||||
echo yes | $ANDROID update sdk -a -t tools,platform-tools,build-tools-23.0.1,android-10 --no-ui --force --no-https;
|
||||
fi
|
||||
- sudo python -m easy_install --upgrade pyOpenSSL
|
||||
- sudo pip install pyjavaproperties
|
||||
- sudo pip install github3.py
|
||||
- brew install dpkg ldid
|
||||
#- curl -s -f -L https://raw.github.com/r-plus/dotfiles/master/install_theos.sh | bash
|
||||
- mkdir theos
|
||||
- cd theos
|
||||
- git clone --recursive https://github.com/theos/theos.git
|
||||
- export THEOS="$TRAVIS_BUILD_DIR/theos"
|
||||
- cd ..
|
||||
- pwd
|
||||
- ls
|
||||
- sudo pip install cpp-coveralls
|
||||
|
||||
env:
|
||||
global:
|
||||
secure: "EBzr1+qjQsOhn0s+tcFmXR1jP9B0xiOSXuXbRXWZ1OEHNvp8+A5/pS84LYVFlaZqmxr5dApxvPtwhgLIUbQ3EPXm8LpC3KgSD4dS+9/QMbxhe5TK4oczgFRGcDTMJQZsCzhOh7hp3tbcbJg5Gp+VT7aFjFQSHDGwhzSJXsXwh/8="
|
||||
- secure: "EBzr1+qjQsOhn0s+tcFmXR1jP9B0xiOSXuXbRXWZ1OEHNvp8+A5/pS84LYVFlaZqmxr5dApxvPtwhgLIUbQ3EPXm8LpC3KgSD4dS+9/QMbxhe5TK4oczgFRGcDTMJQZsCzhOh7hp3tbcbJg5Gp+VT7aFjFQSHDGwhzSJXsXwh/8="
|
||||
- secure: "X5dTQfofqAutnXxmu11Ep2MQ5QYnMN8m0AITRtwymhEF2UclcOudI1+skPtuhAGbWQnSO+lhunV3cvMfw2/Ml3k/VDz6VdFSKFrzAu7ja1VLJfcxr7chi0s8q30pVBb66tGydjIBac3B+RQyqgmZQW1frbRrhC/kPFQ6wPWOJdQ="
|
||||
- secure: "T97NUPnxCpVZ/c5HH0zfo0FO3DPSRMSmze58ubW5EUTZOjAMtEt+OFdsrNZvUTCugUj2M1agtonZbAbczpaAL+lgZcHDgXgWMkfO0pMnsWX1yyCNqMuE/iTMpJr/xsLQeyWlftWjJLsseQU45abZsd1XVmda/G+ZhrDLF1y55SA="
|
||||
|
||||
script:
|
||||
- /usr/local/opt/qt5/bin/qmake projects/mtg/wagic-qt.pro CONFIG+=graphics
|
||||
- make -j 4 dmg
|
||||
- cd projects/mtg/iOS
|
||||
- make -j 4 package
|
||||
- cd ../../..
|
||||
script: "tools/travis-script.sh"
|
||||
|
||||
after_success:
|
||||
- python tools/upload-binaries.py -t $GH_TOKEN -s $TRAVIS_COMMIT -l wagic.dmg -r Wagic-macosx.dmg -b $TRAVIS_BRANCH
|
||||
- python tools/upload-binaries.py -t $GH_TOKEN -s $TRAVIS_COMMIT -l projects/mtg/iOS/net.wagic_0.19.2-1_iphoneos-arm.deb -r Wagic-iOS.deb -b $TRAVIS_BRANCH
|
||||
- coveralls -b . -e JGE/src -e JGE/include -i projects/mtg/include -i projects/mtg/src --gcov-options '\-lp'
|
||||
- python tools/upload-binaries.py -t $GH_TOKEN -s $TRAVIS_COMMIT -l core.zip -r Wagic-core.zip -b $TRAVIS_BRANCH
|
||||
- python tools/upload-binaries.py -t $GH_TOKEN -s $TRAVIS_COMMIT -l projects/mtg/Android/bin/Wagic-debug.apk -r Wagic-android.apk -b $TRAVIS_BRANCH
|
||||
- python tools/upload-binaries.py -t $GH_TOKEN -s $TRAVIS_COMMIT -l projects/mtg/psprelease.zip -r Wagic-psp.zip -b $TRAVIS_BRANCH
|
||||
- python tools/upload-binaries.py -t $GH_TOKEN -s $TRAVIS_COMMIT -l qt-gui-build/linuxqtrelease.zip -r Wagic-linux-QT.zip -b $TRAVIS_BRANCH
|
||||
|
||||
@@ -25,6 +25,7 @@ std::string ToHex(T* pointer)
|
||||
|
||||
#ifdef LINUX
|
||||
#define OutputDebugString(val) (std::cerr << val);
|
||||
#define OutputDebugStringA(val) (std::cerr << val);
|
||||
#endif
|
||||
|
||||
#ifdef _DEBUG
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
#define _JSOCKET_H_
|
||||
|
||||
#include <queue>
|
||||
#include "Threading.h"
|
||||
using namespace std;
|
||||
|
||||
#define SERVER_PORT 5001
|
||||
|
||||
@@ -26,8 +26,16 @@
|
||||
#include "JAudio.h"
|
||||
|
||||
#else
|
||||
|
||||
#ifdef IOS
|
||||
#include <tr1/cstdint>
|
||||
#else
|
||||
#include <stdint.h>
|
||||
//#include <cstdint>
|
||||
#endif
|
||||
//#include <stdint.h>
|
||||
//the MSC version might only define _MSC_STDINT_H_
|
||||
//and that might cause redefinition of standard types
|
||||
//#define _STDINT_H_
|
||||
|
||||
#endif
|
||||
|
||||
@@ -140,9 +148,14 @@ typedef uint32_t u32;
|
||||
#include <GLES/gl.h>
|
||||
#include <GLES/glext.h>
|
||||
#elif defined (WIN32) || defined (LINUX)
|
||||
#if defined(__APPLE__)
|
||||
#include <OpenGL/gl.h>
|
||||
#include <OpenGL/glu.h>
|
||||
#else
|
||||
#include <GL/gl.h>
|
||||
#include <GL/glu.h>
|
||||
#endif
|
||||
#endif
|
||||
#else
|
||||
#include <QtOpenGL>
|
||||
#endif
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#ifndef THREADING_H
|
||||
#define THREADING_H
|
||||
|
||||
#if !defined(PSP) && !defined(QT_CONFIG) && !(__cplusplus > 199711L)
|
||||
#if !defined(PSP) && !defined(QT_CONFIG) && !(__cplusplus > 199711L) && !(_MSC_VER >= 1700)
|
||||
#include <boost/date_time.hpp>
|
||||
|
||||
#ifdef WIN32
|
||||
@@ -537,7 +537,7 @@ namespace boost
|
||||
}
|
||||
}
|
||||
|
||||
#elif (__cplusplus > 199711L)
|
||||
#elif (__cplusplus > 199711L) || (_MSC_VER >= 1700)
|
||||
|
||||
#include <thread>
|
||||
#include <mutex>
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
|
||||
*/
|
||||
|
||||
#define __STDC_LIMIT_MACROS
|
||||
|
||||
#include "../include/DebugRoutines.h"
|
||||
#include "../include/JNetwork.h"
|
||||
|
||||
|
||||
@@ -96,7 +96,8 @@ hgeParticleSystem::hgeParticleSystem(hgeParticleSystemInfo *psi)
|
||||
{
|
||||
//hge=hgeCreate(HGE_VERSION);
|
||||
|
||||
memcpy(&info, psi, sizeof(hgeParticleSystemInfo));
|
||||
if (psi)
|
||||
memcpy(&info, psi, sizeof(hgeParticleSystemInfo));
|
||||
|
||||
vecLocation.x=vecPrevLocation.x=0.0f;
|
||||
vecLocation.y=vecPrevLocation.y=0.0f;
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
#define __STDC_LIMIT_MACROS
|
||||
|
||||
#include "../../include/DebugRoutines.h"
|
||||
#include "Threading.h"
|
||||
|
||||
#include <errno.h>
|
||||
#ifdef WIN32
|
||||
#pragma comment(lib,"WSOCK32.LIB")
|
||||
#include <stdio.h>
|
||||
#include <conio.h>
|
||||
#include <winsock.h>
|
||||
#include <winsock.h>
|
||||
#include <fcntl.h>
|
||||
#elif LINUX
|
||||
#include <unistd.h>
|
||||
@@ -16,7 +20,6 @@
|
||||
#endif //WINDOWS
|
||||
|
||||
#include "../../include/JSocket.h"
|
||||
#include "../../include/DebugRoutines.h"
|
||||
|
||||
|
||||
JSocket::JSocket(string ipAddr)
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
maxGrade=0: Borderline (99% OK)
|
||||
keybindings_sdl=13:2,27:2,32:10,97:7,98:5,100:6,101:15,102:16,105:11,106:12,107:13,108:10,113:14,115:9,119:8,1073741903:6,1073741904:7,1073741905:9,1073741906:8,1073741912:2,1073741952:14,1073741953:13,1073742048:3,1073742052:3,1073742094:2
|
||||
aidecks=10
|
||||
@@ -1,4 +1,4 @@
|
||||
name=Blitzkrieg
|
||||
name=Mode Blitzkrieg
|
||||
unlock=prx_geirkztilb
|
||||
[INIT]
|
||||
mode=mtg
|
||||
|
||||
@@ -34,4 +34,58 @@ unlock_text=Blitzkrieg Mode Unlocked
|
||||
teaser=Like to play fast? Unlock Blitzkrieg Mode :)
|
||||
trophyroom_text=Won with more than 18 lands.
|
||||
unlock_condition=type(land|myBattlefield)~morethan~18
|
||||
[/award]
|
||||
[/award]
|
||||
|
||||
[award]
|
||||
name=Paradise
|
||||
id=prx_paradise
|
||||
unlock_img=
|
||||
unlock_text=Birds of Paradise Mode Unlocked
|
||||
teaser=Utopia! Bring me down to the Paradise City.
|
||||
Lands you control have "{T}: Add one mana of any color."
|
||||
trophyroom_text=Won with Birds of Paradise on the battlefield.
|
||||
unlock_condition=type(Birds of Paradise|mybattlefield)~morethan~0
|
||||
[/award]
|
||||
|
||||
[award]
|
||||
name=Morinfen Mode
|
||||
id=prx_morinfen
|
||||
unlock_img=
|
||||
unlock_text=Morinfen Mode Unlocked
|
||||
teaser="I looked into its eyes, and its soul was so empty I saw no reflection, no light there." — Crovax
|
||||
At the beginning of your upkeep, you lose 1 life for each permanent you control.
|
||||
trophyroom_text=Won with less than 5 life.
|
||||
unlock_condition=this(controllerlife<=6)
|
||||
[/award]
|
||||
|
||||
[award]
|
||||
name=Horde
|
||||
id=prx_horde
|
||||
unlock_img=
|
||||
unlock_text=Tribal Horde Mode Unlocked
|
||||
teaser="From shards and splinters I call forth my living horde." -Molimo, maro-sorcerer
|
||||
trophyroom_text=Won with more than 25 life.
|
||||
unlock_condition=this(controllerlife>=26)
|
||||
[/award]
|
||||
|
||||
[award]
|
||||
name=False God
|
||||
id=prx_karona
|
||||
unlock_img=
|
||||
unlock_text=False God Mode Unlocked
|
||||
teaser=At the beginning of your upkeep, exchange control of a permanent you control chosen at random and a permanent target opponent controls chosen at random.
|
||||
trophyroom_text=Devotion to red more than 7.
|
||||
unlock_condition=this(variable{type:manar}>7)
|
||||
[/award]
|
||||
|
||||
[award]
|
||||
name=Titania Mode
|
||||
id=prx_titania
|
||||
unlock_img=
|
||||
unlock_text=Titania Mode Unlocked
|
||||
teaser=Voice of the Argoth forest, defender of its creatures, and enforcer of its laws, Titania is literally an aspect of the forest itself.
|
||||
You may play an additional land on each of your turns.
|
||||
trophyroom_text=Devotion to green more than 7.
|
||||
unlock_condition=this(variable{type:manag}>7)
|
||||
[/award]
|
||||
|
||||
|
||||
15
projects/mtg/bin/Res/rules/falseGod.txt
Normal file
15
projects/mtg/bin/Res/rules/falseGod.txt
Normal file
@@ -0,0 +1,15 @@
|
||||
include mtg.txt
|
||||
name=False God
|
||||
unlock=prx_karona
|
||||
[INIT]
|
||||
mode=mtg
|
||||
|
||||
[PLAYERS]
|
||||
life:28
|
||||
auto=shuffle
|
||||
auto=draw:6
|
||||
|
||||
auto=@each myupkeep:auto=moverandom(*) from(opponentBattlefield) to(myBattlefield)
|
||||
auto=@each myupkeep:auto=moverandom(*) from(myBattlefield) to(opponentBattlefield)
|
||||
|
||||
auto=maxPlay(land)+1
|
||||
13
projects/mtg/bin/Res/rules/horde.txt
Normal file
13
projects/mtg/bin/Res/rules/horde.txt
Normal file
@@ -0,0 +1,13 @@
|
||||
include mtg.txt
|
||||
name=Tribal Wars
|
||||
unlock=prx_horde
|
||||
[INIT]
|
||||
mode=horde
|
||||
|
||||
[PLAYERS]
|
||||
life:20
|
||||
auto=shuffle
|
||||
auto=draw:7
|
||||
|
||||
auto=@each my upkeep:if type(creature[manacost<=2]|mylibrary)~lessthan~1 then moverandom(creature[manacost<=4]) from(library) to(battlefield)
|
||||
auto=@each my upkeep:moverandom(creature[manacost<=2]) from(library) to(battlefield)
|
||||
12
projects/mtg/bin/Res/rules/morinfen.txt
Normal file
12
projects/mtg/bin/Res/rules/morinfen.txt
Normal file
@@ -0,0 +1,12 @@
|
||||
include mtg.txt
|
||||
name=Morifen
|
||||
unlock=prx_morinfen
|
||||
[INIT]
|
||||
mode=mtg
|
||||
|
||||
[PLAYERS]
|
||||
life:50
|
||||
auto=shuffle
|
||||
auto=draw:7
|
||||
|
||||
auto=@each myupkeep:foreach(*|mybattlefield) life:-1
|
||||
20
projects/mtg/bin/Res/rules/paradise.txt
Normal file
20
projects/mtg/bin/Res/rules/paradise.txt
Normal file
@@ -0,0 +1,20 @@
|
||||
include mtg.txt
|
||||
name=Paradise
|
||||
unlock=prx_paradise
|
||||
[INIT]
|
||||
mode=mtg
|
||||
|
||||
[PLAYERS]
|
||||
life:17
|
||||
auto=shuffle
|
||||
auto=draw:7
|
||||
|
||||
auto=lord(*[-noactivatedability;-nomanaability;-notapability;land]|MyBattlefield) {T}:Add{W}
|
||||
|
||||
auto=lord(*[-noactivatedability;-nomanaability;-notapability;land]|MyBattlefield) {T}:Add{U}
|
||||
|
||||
auto=lord(*[-noactivatedability;-nomanaability;-notapability;land]|MyBattlefield) {T}:Add{R}
|
||||
|
||||
auto=lord(*[-noactivatedability;-nomanaability;-notapability;land]|MyBattlefield) {T}:Add{B}
|
||||
|
||||
auto=lord(*[-noactivatedability;-nomanaability;-notapability;land]|MyBattlefield) {T}:Add{G}
|
||||
9
projects/mtg/bin/Res/rules/random3.txt
Normal file
9
projects/mtg/bin/Res/rules/random3.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
include mtg.txt
|
||||
name=Random 3 Colors
|
||||
unlock=prx_rnddeck
|
||||
[INIT]
|
||||
mode=random3
|
||||
|
||||
[PLAYERS]
|
||||
auto=shuffle
|
||||
auto=draw:7
|
||||
16
projects/mtg/bin/Res/rules/random5.txt
Normal file
16
projects/mtg/bin/Res/rules/random5.txt
Normal file
@@ -0,0 +1,16 @@
|
||||
include mtg.txt
|
||||
name=Random 5 Colors
|
||||
unlock=prx_rnddeck
|
||||
[INIT]
|
||||
mode=random5
|
||||
|
||||
[PLAYERS]
|
||||
life:20
|
||||
auto=shuffle
|
||||
auto=draw:7
|
||||
|
||||
auto=lord(*[-noactivatedability;-nomanaability;-notapability;land]|MyBattlefield) {T}:Add{W}
|
||||
auto=lord(*[-noactivatedability;-nomanaability;-notapability;land]|MyBattlefield) {T}:Add{U}
|
||||
auto=lord(*[-noactivatedability;-nomanaability;-notapability;land]|MyBattlefield) {T}:Add{R}
|
||||
auto=lord(*[-noactivatedability;-nomanaability;-notapability;land]|MyBattlefield) {T}:Add{B}
|
||||
auto=lord(*[-noactivatedability;-nomanaability;-notapability;land]|MyBattlefield) {T}:Add{G}
|
||||
11
projects/mtg/bin/Res/rules/setLimited.txt
Normal file
11
projects/mtg/bin/Res/rules/setLimited.txt
Normal file
@@ -0,0 +1,11 @@
|
||||
include mtg.txt
|
||||
name=Set Limited
|
||||
unlock=prx_rnddeck
|
||||
[INIT]
|
||||
mode=set_limited
|
||||
|
||||
[PLAYERS]
|
||||
life:20
|
||||
auto=shuffle
|
||||
auto=draw:7
|
||||
|
||||
17
projects/mtg/bin/Res/rules/titania.txt
Normal file
17
projects/mtg/bin/Res/rules/titania.txt
Normal file
@@ -0,0 +1,17 @@
|
||||
include mtg.txt
|
||||
name=Titania
|
||||
unlock=prx_titania
|
||||
[INIT]
|
||||
mode=mtg
|
||||
|
||||
[PLAYERS]
|
||||
life:15
|
||||
auto=shuffle
|
||||
auto=draw:9
|
||||
|
||||
auto=maxPlay(land)+1
|
||||
#auto=@each myupkeep:auto=moverandom(*) from(myBattlefield) to #(opponentBattlefield)
|
||||
#auto=@each myupkeep:auto=moverandom(*) from(opponentBattlefield) #to(myBattlefield)
|
||||
|
||||
#auto=@each myupkeep:draw:1
|
||||
#auto=@each myupkeep:life:-1
|
||||
1251
projects/mtg/bin/Res/sets/A25/_cards.dat
Normal file
1251
projects/mtg/bin/Res/sets/A25/_cards.dat
Normal file
File diff suppressed because it is too large
Load Diff
1516
projects/mtg/bin/Res/sets/AKH/_cards.dat
Normal file
1516
projects/mtg/bin/Res/sets/AKH/_cards.dat
Normal file
File diff suppressed because it is too large
Load Diff
1286
projects/mtg/bin/Res/sets/BBD/_cards.dat
Normal file
1286
projects/mtg/bin/Res/sets/BBD/_cards.dat
Normal file
File diff suppressed because it is too large
Load Diff
1551
projects/mtg/bin/Res/sets/C17/_cards.dat
Normal file
1551
projects/mtg/bin/Res/sets/C17/_cards.dat
Normal file
File diff suppressed because it is too large
Load Diff
1546
projects/mtg/bin/Res/sets/C18/_cards.dat
Normal file
1546
projects/mtg/bin/Res/sets/C18/_cards.dat
Normal file
File diff suppressed because it is too large
Load Diff
96
projects/mtg/bin/Res/sets/CM1/_cards.dat
Normal file
96
projects/mtg/bin/Res/sets/CM1/_cards.dat
Normal file
@@ -0,0 +1,96 @@
|
||||
[meta]
|
||||
author=Wagic Team
|
||||
name=Commander's Arsenal
|
||||
year=2012
|
||||
total=18
|
||||
[/meta]
|
||||
[card]
|
||||
primitive=Chaos Warp
|
||||
id=338441
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Command Tower
|
||||
id=338442
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Decree of Pain
|
||||
id=338453
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Desertion
|
||||
id=338454
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Diaochan, Artful Beauty
|
||||
id=338449
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Dragonlair Spider
|
||||
id=338446
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Duplicant
|
||||
id=338451
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Edric, Spymaster of Trest
|
||||
id=338443
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Kaalia of the Vast
|
||||
id=338444
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Loyal Retainers
|
||||
id=338450
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Maelstrom Wanderer
|
||||
id=338447
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Mind's Eye
|
||||
id=338452
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Mirari's Wake
|
||||
id=338455
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Rhystic Study
|
||||
id=338457
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Scroll Rack
|
||||
id=338458
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Sylvan Library
|
||||
id=338456
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=The Mimeoplasm
|
||||
id=338445
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Vela the Night-Clad
|
||||
id=338448
|
||||
rarity=M
|
||||
[/card]
|
||||
1571
projects/mtg/bin/Res/sets/CM2/_cards.dat
Normal file
1571
projects/mtg/bin/Res/sets/CM2/_cards.dat
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
331
projects/mtg/bin/Res/sets/DDS/_cards.dat
Normal file
331
projects/mtg/bin/Res/sets/DDS/_cards.dat
Normal file
@@ -0,0 +1,331 @@
|
||||
[meta]
|
||||
author=Wagic Team
|
||||
name=Duel Decks: Mind vs. Might
|
||||
year=2017-03-31
|
||||
total=65
|
||||
[/meta]
|
||||
[card]
|
||||
primitive=Jhoira of the Ghitu
|
||||
id=426573
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Beacon of Tomorrows
|
||||
id=426574
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Deep-Sea Kraken
|
||||
id=426575
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Mind's Desire
|
||||
id=426576
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Peer Through Depths
|
||||
id=426577
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Quicken
|
||||
id=426578
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Reach Through Mists
|
||||
id=426579
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Sage-Eye Avengers
|
||||
id=426580
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Sift Through Sands
|
||||
id=426581
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Snap
|
||||
id=426582
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Talrand, Sky Summoner
|
||||
id=426583
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Temporal Fissure
|
||||
id=426584
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=The Unspeakable
|
||||
id=426585
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Desperate Ritual
|
||||
id=426586
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Empty the Warrens
|
||||
id=426587
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Grapeshot
|
||||
id=426588
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Rift Bolt
|
||||
id=426589
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Shivan Meteor
|
||||
id=426590
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Volcanic Vision
|
||||
id=426591
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Young Pyromancer
|
||||
id=426592
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Firemind's Foresight
|
||||
id=426593
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Goblin Electromancer
|
||||
id=426594
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Jori En, Ruin Diver
|
||||
id=426595
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Nivix Cyclops
|
||||
id=426596
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Spellheart Chimera
|
||||
id=426597
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Nucklavee
|
||||
id=426598
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Swiftwater Cliffs
|
||||
id=426599
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Island
|
||||
id=426600
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Island
|
||||
id=426601
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Island
|
||||
id=426602
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Mountain
|
||||
id=426603
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Mountain
|
||||
id=426604
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Mountain
|
||||
id=426605
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Lovisa Coldeyes
|
||||
id=426606
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Beacon of Destruction
|
||||
id=426607
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Boldwyr Intimidator
|
||||
id=426608
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Firebolt
|
||||
id=426609
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Gorehorn Minotaurs
|
||||
id=426610
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Kamahl, Pit Fighter
|
||||
id=426611
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Kruin Striker
|
||||
id=426612
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Zo-Zu the Punisher
|
||||
id=426613
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Ambassador Oak
|
||||
id=426614
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Beast Attack
|
||||
id=426615
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Call of the Herd
|
||||
id=426616
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Cloudcrown Oak
|
||||
id=426617
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Harmonize
|
||||
id=426618
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Increasing Savagery
|
||||
id=426619
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Rampant Growth
|
||||
id=426620
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Roar of the Wurm
|
||||
id=426621
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Skarrgan Pit-Skulk
|
||||
id=426622
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Sylvan Might
|
||||
id=426623
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Talara's Battalion
|
||||
id=426624
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Radha, Heir to Keld
|
||||
id=426625
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Relentless Hunter
|
||||
id=426626
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Burning-Tree Emissary
|
||||
id=426627
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Guttural Response
|
||||
id=426628
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Rubblebelt Raiders
|
||||
id=426629
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Coat of Arms
|
||||
id=426630
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Rugged Highlands
|
||||
id=426631
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Mountain
|
||||
id=426632
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Mountain
|
||||
id=426633
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Mountain
|
||||
id=426634
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Forest
|
||||
id=426635
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Forest
|
||||
id=426636
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Forest
|
||||
id=426637
|
||||
rarity=L
|
||||
[/card]
|
||||
321
projects/mtg/bin/Res/sets/DDT/_cards.dat
Normal file
321
projects/mtg/bin/Res/sets/DDT/_cards.dat
Normal file
@@ -0,0 +1,321 @@
|
||||
[meta]
|
||||
author=Wagic Team
|
||||
name=Duel Decks: Merfolk vs. Goblins
|
||||
year=2017-10-24
|
||||
total=63
|
||||
[/meta]
|
||||
[card]
|
||||
primitive=Master of Waves
|
||||
id=438441
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Aquitect's Will
|
||||
id=438442
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Claustrophobia
|
||||
id=438443
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Concentrate
|
||||
id=438444
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Engulf the Shore
|
||||
id=438445
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Essence Scatter
|
||||
id=438446
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Harbinger of the Tides
|
||||
id=438447
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Inkfathom Divers
|
||||
id=438448
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Master of the Pearl Trident
|
||||
id=438449
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Merfolk Looter
|
||||
id=438450
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Merfolk Sovereign
|
||||
id=438451
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Merfolk Wayfinder
|
||||
id=438452
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Merrow Reejerey
|
||||
id=438453
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Mind Spring
|
||||
id=438454
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Misdirection
|
||||
id=438455
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Rootwater Hunter
|
||||
id=438456
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Scroll Thief
|
||||
id=438457
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Streambed Aquitects
|
||||
id=438458
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Tidal Courier
|
||||
id=438459
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Tidal Warrior
|
||||
id=438460
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Tidal Wave
|
||||
id=438461
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Tidebinder Mage
|
||||
id=438462
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Triton Tactics
|
||||
id=438463
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Wake Thrasher
|
||||
id=438464
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Cold-Eyed Selkie
|
||||
id=438465
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Blighted Cataract
|
||||
id=438466
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Lonely Sandbar
|
||||
id=438467
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Island
|
||||
id=438468
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Island
|
||||
id=438469
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Island
|
||||
id=438470
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Island
|
||||
id=438471
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Warren Instigator
|
||||
id=438472
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Battle Squadron
|
||||
id=438473
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Boggart Brute
|
||||
id=438474
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Brute Strength
|
||||
id=438475
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Cleaver Riot
|
||||
id=438476
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Ember Hauler
|
||||
id=438477
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Foundry Street Denizen
|
||||
id=438478
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Gempalm Incinerator
|
||||
id=438479
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Ghostfire
|
||||
id=438480
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Goblin Chieftain
|
||||
id=438481
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Goblin Diplomats
|
||||
id=438482
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Goblin Glory Chaser
|
||||
id=438483
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Goblin Goon
|
||||
id=438484
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Goblin Grenade
|
||||
id=438485
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Goblin Rabblemaster
|
||||
id=438486
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Goblin Razerunners
|
||||
id=438487
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Goblin Ringleader
|
||||
id=438488
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Goblin Tunneler
|
||||
id=438489
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Goblin Wardriver
|
||||
id=438490
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Hordeling Outburst
|
||||
id=438491
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Krenko, Mob Boss
|
||||
id=438492
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Krenko's Command
|
||||
id=438493
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Relentless Assault
|
||||
id=438494
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Tarfire
|
||||
id=438495
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Brittle Effigy
|
||||
id=438496
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Goblin Charbelcher
|
||||
id=438497
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Blighted Gorge
|
||||
id=438498
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Forgotten Cave
|
||||
id=438499
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Mountain
|
||||
id=438500
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Mountain
|
||||
id=438501
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Mountain
|
||||
id=438502
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Mountain
|
||||
id=438503
|
||||
rarity=L
|
||||
[/card]
|
||||
386
projects/mtg/bin/Res/sets/DDU/_cards.dat
Normal file
386
projects/mtg/bin/Res/sets/DDU/_cards.dat
Normal file
@@ -0,0 +1,386 @@
|
||||
[meta]
|
||||
author=Wagic Team
|
||||
name=Duel Decks: Elves vs. Inventors
|
||||
year=2018-04-06
|
||||
total=76
|
||||
[/meta]
|
||||
[card]
|
||||
primitive=Ezuri, Renegade Leader
|
||||
id=442737
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Dwynen, Gilt-Leaf Daen
|
||||
id=442738
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Dwynen's Elite
|
||||
id=442739
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Elvish Aberration
|
||||
id=442740
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Elvish Archdruid
|
||||
id=442741
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Elvish Branchbender
|
||||
id=442742
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Elvish Mystic
|
||||
id=442743
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Elvish Vanguard
|
||||
id=442744
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Ezuri's Archers
|
||||
id=442745
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Fierce Empath
|
||||
id=442746
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Gladehart Cavalry
|
||||
id=442747
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Ivy Lane Denizen
|
||||
id=442748
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Jagged-Scar Archers
|
||||
id=442749
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Krosan Tusker
|
||||
id=442750
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Kujar Seedsculptor
|
||||
id=442751
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Lead the Stampede
|
||||
id=442752
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Leaf Gilder
|
||||
id=442753
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Llanowar Empath
|
||||
id=442754
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Naturalize
|
||||
id=442755
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Nature's Way
|
||||
id=442756
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Nissa's Judgment
|
||||
id=442757
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Regal Force
|
||||
id=442758
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Sylvan Advocate
|
||||
id=442759
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Talara's Battalion
|
||||
id=442760
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Viridian Shaman
|
||||
id=442761
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Wildheart Invoker
|
||||
id=442762
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Yeva, Nature's Herald
|
||||
id=442763
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Oran-Rief, the Vastwood
|
||||
id=442764
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Tranquil Thicket
|
||||
id=442765
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Treetop Village
|
||||
id=442766
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Forest
|
||||
id=442767
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Forest
|
||||
id=442768
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Forest
|
||||
id=442769
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Forest
|
||||
id=442770
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Goblin Welder
|
||||
id=442771
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Artificer's Epiphany
|
||||
id=442772
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Etherium Sculptor
|
||||
id=442773
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Faerie Mechanist
|
||||
id=442774
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Riddlesmith
|
||||
id=442775
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Treasure Mage
|
||||
id=442776
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Trinket Mage
|
||||
id=442777
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Trophy Mage
|
||||
id=442778
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Whirler Rogue
|
||||
id=442779
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Barrage Ogre
|
||||
id=442780
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Galvanic Blast
|
||||
id=442781
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Ghirapur Gearcrafter
|
||||
id=442782
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Pia and Kiran Nalaar
|
||||
id=442783
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Shrapnel Blast
|
||||
id=442784
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Welding Sparks
|
||||
id=442785
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Maverick Thopterist
|
||||
id=442786
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Reclusive Artificer
|
||||
id=442787
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Darksteel Plate
|
||||
id=442788
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Filigree Familiar
|
||||
id=442789
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Ichor Wellspring
|
||||
id=442790
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Inventor's Goggles
|
||||
id=442791
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Mycosynth Wellspring
|
||||
id=442792
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Myr Battlesphere
|
||||
id=442793
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Myr Sire
|
||||
id=442794
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Neurok Replica
|
||||
id=442795
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Pyrite Spellbomb
|
||||
id=442796
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Scuttling Doom Engine
|
||||
id=442797
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Solemn Simulacrum
|
||||
id=442798
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Thopter Assembly
|
||||
id=442799
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Voyager Staff
|
||||
id=442800
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Darksteel Citadel
|
||||
id=442801
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Foundry of the Consuls
|
||||
id=442802
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Great Furnace
|
||||
id=442803
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Phyrexia's Core
|
||||
id=442804
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Seat of the Synod
|
||||
id=442805
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Shivan Reef
|
||||
id=442806
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Swiftwater Cliffs
|
||||
id=442807
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Temple of Epiphany
|
||||
id=442808
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Island
|
||||
id=442809
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Island
|
||||
id=442810
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Mountain
|
||||
id=442811
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Mountain
|
||||
id=442812
|
||||
rarity=L
|
||||
[/card]
|
||||
1406
projects/mtg/bin/Res/sets/DOM/_cards.dat
Normal file
1406
projects/mtg/bin/Res/sets/DOM/_cards.dat
Normal file
File diff suppressed because it is too large
Load Diff
536
projects/mtg/bin/Res/sets/E01/_cards.dat
Normal file
536
projects/mtg/bin/Res/sets/E01/_cards.dat
Normal file
@@ -0,0 +1,536 @@
|
||||
[meta]
|
||||
author=Wagic Team
|
||||
name=Archenemy: Nicol Bolas
|
||||
year=2017-06-16
|
||||
total=106
|
||||
[/meta]
|
||||
[card]
|
||||
primitive=Aegis Angel
|
||||
id=430540
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Aerial Responder
|
||||
id=430541
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Anointer of Champions
|
||||
id=430542
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Doomed Traveler
|
||||
id=430543
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Excoriate
|
||||
id=430544
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Expedition Raptor
|
||||
id=430545
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Fencing Ace
|
||||
id=430546
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Fiendslayer Paladin
|
||||
id=430547
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Flickerwisp
|
||||
id=430548
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Gideon Jura
|
||||
id=430549
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Gideon's Lawkeeper
|
||||
id=430550
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Grand Abolisher
|
||||
id=430551
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Grasp of the Hieromancer
|
||||
id=430552
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Lightwielder Paladin
|
||||
id=430553
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Mentor of the Meek
|
||||
id=430554
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Moment of Heroism
|
||||
id=430555
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Odric, Master Tactician
|
||||
id=430556
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Precinct Captain
|
||||
id=430557
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Relief Captain
|
||||
id=430558
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Shoulder to Shoulder
|
||||
id=430559
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Sun Titan
|
||||
id=430560
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Youthful Knight
|
||||
id=430561
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Compulsive Research
|
||||
id=430562
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Icefall Regent
|
||||
id=430563
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Ior Ruin Expedition
|
||||
id=430564
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Prognostic Sphinx
|
||||
id=430565
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Reckless Scholar
|
||||
id=430566
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Sphinx of Jwar Isle
|
||||
id=430567
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Vision Skeins
|
||||
id=430568
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Windrider Eel
|
||||
id=430569
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Archfiend of Depravity
|
||||
id=430570
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Deathbringer Regent
|
||||
id=430571
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Doom Blade
|
||||
id=430572
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Harvester of Souls
|
||||
id=430573
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Nightscape Familiar
|
||||
id=430574
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Overseer of the Damned
|
||||
id=430575
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Reckless Spite
|
||||
id=430576
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Vampire Nighthawk
|
||||
id=430577
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Avatar of Fury
|
||||
id=430578
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Battle-Rattle Shaman
|
||||
id=430579
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Blood Ogre
|
||||
id=430580
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Chandra, Pyromaster
|
||||
id=430581
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Chandra's Outrage
|
||||
id=430582
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Chandra's Phoenix
|
||||
id=430583
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Coordinated Assault
|
||||
id=430584
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Dualcaster Mage
|
||||
id=430585
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Fiery Fall
|
||||
id=430586
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Flametongue Kavu
|
||||
id=430587
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Gorehorn Minotaurs
|
||||
id=430588
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Grim Lavamancer
|
||||
id=430589
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Guttersnipe
|
||||
id=430590
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Hammerhand
|
||||
id=430591
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Inferno Titan
|
||||
id=430592
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Lightning Bolt
|
||||
id=430593
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Obsidian Fireheart
|
||||
id=430594
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Searing Spear
|
||||
id=430595
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Skarrgan Firebird
|
||||
id=430596
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Stormblood Berserker
|
||||
id=430597
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Sudden Demise
|
||||
id=430598
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Torchling
|
||||
id=430599
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Volcanic Geyser
|
||||
id=430600
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Cultivate
|
||||
id=430601
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Explore
|
||||
id=430602
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Fertilid
|
||||
id=430603
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Forgotten Ancient
|
||||
id=430604
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Hunter's Prowess
|
||||
id=430605
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Khalni Heart Expedition
|
||||
id=430606
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Nissa, Worldwaker
|
||||
id=430607
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Oran-Rief Hydra
|
||||
id=430608
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Press the Advantage
|
||||
id=430609
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Rampaging Baloths
|
||||
id=430610
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Retreat to Kazandu
|
||||
id=430611
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Scute Mob
|
||||
id=430612
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Sylvan Bounty
|
||||
id=430613
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Thragtusk
|
||||
id=430614
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Turntimber Basilisk
|
||||
id=430615
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Vastwood Zendikon
|
||||
id=430616
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Vines of the Recluse
|
||||
id=430617
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Woodborn Behemoth
|
||||
id=430618
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Baleful Strix
|
||||
id=430619
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Blood Tyrant
|
||||
id=430620
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Cruel Ultimatum
|
||||
id=430621
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Dreadbore
|
||||
id=430622
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Extract from Darkness
|
||||
id=430623
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Nicol Bolas, Planeswalker
|
||||
id=430624
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Slave of Bolas
|
||||
id=430625
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Soul Ransom
|
||||
id=430626
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Obelisk of Grixis
|
||||
id=430627
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Sword of the Animist
|
||||
id=430628
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Talisman of Dominance
|
||||
id=430629
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Talisman of Indulgence
|
||||
id=430630
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Crumbling Necropolis
|
||||
id=430631
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Dragonskull Summit
|
||||
id=430632
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Drowned Catacomb
|
||||
id=430633
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Grixis Panorama
|
||||
id=430634
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Smoldering Spires
|
||||
id=430635
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Plains
|
||||
id=430636
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Island
|
||||
id=430637
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Swamp
|
||||
id=430638
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Mountain
|
||||
id=430639
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Forest
|
||||
id=430640
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Plains
|
||||
id=430641
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Island
|
||||
id=430642
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Swamp
|
||||
id=430643
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Mountain
|
||||
id=430644
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Forest
|
||||
id=430645
|
||||
rarity=L
|
||||
[/card]
|
||||
241
projects/mtg/bin/Res/sets/E02/_cards.dat
Normal file
241
projects/mtg/bin/Res/sets/E02/_cards.dat
Normal file
@@ -0,0 +1,241 @@
|
||||
[meta]
|
||||
author=Wagic Team
|
||||
name=Explorers of Ixalan
|
||||
year=2017-11-24
|
||||
total=48
|
||||
[/meta]
|
||||
[card]
|
||||
primitive=Beacon of Immortality
|
||||
id=439343
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Day of Judgment
|
||||
id=439344
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Path to Exile
|
||||
id=439345
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Shielded by Faith
|
||||
id=439346
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Veteran's Reflexes
|
||||
id=439347
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Vow of Duty
|
||||
id=439348
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Aether Gale
|
||||
id=439349
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Blatant Thievery
|
||||
id=439350
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Concentrate
|
||||
id=439351
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Merfolk Sovereign
|
||||
id=439352
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Threads of Disloyalty
|
||||
id=439353
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Time Warp
|
||||
id=439354
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Unsummon
|
||||
id=439355
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Vow of Flight
|
||||
id=439356
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Bloodbond Vampire
|
||||
id=439357
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Child of Night
|
||||
id=439358
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Coat with Venom
|
||||
id=439359
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Doom Blade
|
||||
id=439360
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Innocent Blood
|
||||
id=439361
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Necropolis Regent
|
||||
id=439362
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Urge to Feed
|
||||
id=439363
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Vampire Interloper
|
||||
id=439364
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Vampire Nighthawk
|
||||
id=439365
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Vampire Noble
|
||||
id=439366
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Aggravated Assault
|
||||
id=439367
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Disaster Radius
|
||||
id=439368
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Mass Mutiny
|
||||
id=439369
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Rush of Adrenaline
|
||||
id=439370
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Shared Animosity
|
||||
id=439371
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Vow of Lightning
|
||||
id=439372
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Borderland Ranger
|
||||
id=439373
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Giant Growth
|
||||
id=439374
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Hunter's Prowess
|
||||
id=439375
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Prey Upon
|
||||
id=439376
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Rancor
|
||||
id=439377
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Soul of the Harvest
|
||||
id=439378
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Vow of Wildness
|
||||
id=439379
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Jungle Barrier
|
||||
id=439380
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Lightning Helix
|
||||
id=439381
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Mortify
|
||||
id=439382
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Zealous Persecution
|
||||
id=439383
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Adaptive Automaton
|
||||
id=439384
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Prismatic Lens
|
||||
id=439385
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Quicksilver Amulet
|
||||
id=439386
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Crumbling Necropolis
|
||||
id=439387
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Jungle Shrine
|
||||
id=439388
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Tainted Field
|
||||
id=439389
|
||||
rarity=U
|
||||
[/card]
|
||||
646
projects/mtg/bin/Res/sets/GK1/_cards.dat
Normal file
646
projects/mtg/bin/Res/sets/GK1/_cards.dat
Normal file
@@ -0,0 +1,646 @@
|
||||
[meta]
|
||||
author=Wagic Team
|
||||
name=GRN Guild Kit
|
||||
year=2018-11-02
|
||||
total=127
|
||||
[/meta]
|
||||
[card]
|
||||
primitive=Etrata, the Silencer
|
||||
id=455904
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Stolen Identity
|
||||
id=455905
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Syncopate
|
||||
id=455906
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Telling Time
|
||||
id=455907
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Last Gasp
|
||||
id=455908
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Netherborn Phalanx
|
||||
id=455909
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Ribbons of Night
|
||||
id=455910
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Call of the Nightwing
|
||||
id=455911
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Circu, Dimir Lobotomist
|
||||
id=455912
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Consuming Aberration
|
||||
id=455913
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Dimir Charm
|
||||
id=455914
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Dimir Doppelganger
|
||||
id=455915
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Dimir Guildmage
|
||||
id=455916
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Dinrova Horror
|
||||
id=455917
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Glimpse the Unthinkable
|
||||
id=455918
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Lazav, Dimir Mastermind
|
||||
id=455919
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Mirko Vosk, Mind Drinker
|
||||
id=455920
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Moroii
|
||||
id=455921
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Nightveil Specter
|
||||
id=455922
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Szadek, Lord of Secrets
|
||||
id=455923
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Warped Physique
|
||||
id=455924
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Dimir Signet
|
||||
id=455925
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Dimir Aqueduct
|
||||
id=455926
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Island
|
||||
id=455927
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Swamp
|
||||
id=455928
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Niv-Mizzet, the Firemind
|
||||
id=456216
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Thunderheads
|
||||
id=456217
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Char
|
||||
id=456218
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Electrickery
|
||||
id=456219
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Goblin Rally
|
||||
id=456220
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Guttersnipe
|
||||
id=456221
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Mizzium Mortars
|
||||
id=456222
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Pyromatics
|
||||
id=456223
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Shattering Spree
|
||||
id=456224
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Cerebral Vortex
|
||||
id=456225
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Djinn Illuminatus
|
||||
id=456226
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Electrolyze
|
||||
id=456227
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Gelectrode
|
||||
id=456228
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Hypersonic Dragon
|
||||
id=456229
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Invoke the Firemind
|
||||
id=456230
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Izzet Charm
|
||||
id=456231
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Nivix Guildmage
|
||||
id=456232
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Stitch in Time
|
||||
id=456233
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Tibor and Lumia
|
||||
id=456234
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Burn
|
||||
id=456235
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Turn
|
||||
id=456235
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Izzet Signet
|
||||
id=456236
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Izzet Boilerworks
|
||||
id=456237
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Island
|
||||
id=456238
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Mountain
|
||||
id=456239
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Izoni, Thousand-Eyed
|
||||
id=456054
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Darkblast
|
||||
id=456055
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Slum Reaper
|
||||
id=456056
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Stinkweed Imp
|
||||
id=456057
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Vigor Mortis
|
||||
id=456058
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Deadbridge Goliath
|
||||
id=456059
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Elves of Deep Shadow
|
||||
id=456060
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Abrupt Decay
|
||||
id=456061
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Deadbridge Chant
|
||||
id=456062
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Deathrite Shaman
|
||||
id=456063
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Drown in Filth
|
||||
id=456064
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Gaze of Granite
|
||||
id=456065
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Golgari Charm
|
||||
id=456066
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Grave-Shell Scarab
|
||||
id=456067
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Grisly Salvage
|
||||
id=456068
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Jarad, Golgari Lich Lord
|
||||
id=456069
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Korozda Guildmage
|
||||
id=456070
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Lotleth Troll
|
||||
id=456071
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Putrefy
|
||||
id=456072
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Savra, Queen of the Golgari
|
||||
id=456073
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Shambling Shell
|
||||
id=456074
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Sisters of Stone Death
|
||||
id=456075
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Treasured Find
|
||||
id=456076
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Golgari Signet
|
||||
id=456077
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Golgari Rot Farm
|
||||
id=456078
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Swamp
|
||||
id=456079
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Forest
|
||||
id=456080
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Aurelia, the Warleader
|
||||
id=455754
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Boros Elite
|
||||
id=455755
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Daring Skyjek
|
||||
id=455756
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Bomber Corps
|
||||
id=455757
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Frenzied Goblin
|
||||
id=455758
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Legion Loyalist
|
||||
id=455759
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Agrus Kos, Wojek Veteran
|
||||
id=455760
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Boros Charm
|
||||
id=455761
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Boros Reckoner
|
||||
id=455762
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Boros Swiftblade
|
||||
id=455763
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Brightflame
|
||||
id=455764
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Firemane Angel
|
||||
id=455765
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Firemane Avenger
|
||||
id=455766
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Lightning Helix
|
||||
id=455767
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Martial Glory
|
||||
id=455768
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Master Warcraft
|
||||
id=455769
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Razia, Boros Archangel
|
||||
id=455770
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Spark Trooper
|
||||
id=455771
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Sunhome Guildmage
|
||||
id=455772
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Boros Keyrune
|
||||
id=455773
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Boros Signet
|
||||
id=455774
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Boros Garrison
|
||||
id=455775
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Sunhome, Fortress of the Legion
|
||||
id=455776
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Plains
|
||||
id=455777
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Mountain
|
||||
id=455778
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Trostani, Selesnya's Voice
|
||||
id=456360
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Devouring Light
|
||||
id=456361
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Hour of Reckoning
|
||||
id=456362
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Gather Courage
|
||||
id=456363
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Scatter the Seeds
|
||||
id=456364
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Advent of the Wurm
|
||||
id=456365
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Armada Wurm
|
||||
id=456366
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Call of the Conclave
|
||||
id=456367
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Centaur Healer
|
||||
id=456368
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Dryad Militant
|
||||
id=456369
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Glare of Subdual
|
||||
id=456370
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Growing Ranks
|
||||
id=456371
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Loxodon Hierarch
|
||||
id=456372
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Pollenbright Wings
|
||||
id=456373
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Privileged Position
|
||||
id=456374
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Selesnya Charm
|
||||
id=456375
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Selesnya Evangel
|
||||
id=456376
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Selesnya Guildmage
|
||||
id=456377
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Sundering Growth
|
||||
id=456378
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Tolsimir Wolfblood
|
||||
id=456379
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Watchwolf
|
||||
id=456380
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Selesnya Signet
|
||||
id=456381
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Grove of the Guardian
|
||||
id=456382
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Selesnya Sanctuary
|
||||
id=456383
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Plains
|
||||
id=456384
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Forest
|
||||
id=456385
|
||||
rarity=L
|
||||
[/card]
|
||||
671
projects/mtg/bin/Res/sets/GK2/_cards.dat
Normal file
671
projects/mtg/bin/Res/sets/GK2/_cards.dat
Normal file
@@ -0,0 +1,671 @@
|
||||
[meta]
|
||||
author=Wagic Team
|
||||
name=RNA Guild Kit
|
||||
year=2019-02-15
|
||||
total=133
|
||||
[/meta]
|
||||
[card]
|
||||
primitive=Isperia, Supreme Judge
|
||||
id=460130
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Azorius Herald
|
||||
id=460131
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Azorius Justiciar
|
||||
id=460132
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Stoic Ephemera
|
||||
id=460133
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Court Hussar
|
||||
id=460134
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Hover Barrier
|
||||
id=460135
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Archon of the Triumvirate
|
||||
id=460136
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Azorius Charm
|
||||
id=460137
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Azorius Guildmage
|
||||
id=460138
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Detention Sphere
|
||||
id=460139
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Dovescape
|
||||
id=460140
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Dramatic Rescue
|
||||
id=460141
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Isperia the Inscrutable
|
||||
id=460142
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Judge's Familiar
|
||||
id=460143
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Lavinia of the Tenth
|
||||
id=460144
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Lyev Skyknight
|
||||
id=460145
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Pride of the Clouds
|
||||
id=460146
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Render Silent
|
||||
id=460147
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Sky Hussar
|
||||
id=460148
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Skymark Roc
|
||||
id=460149
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Sphinx's Revelation
|
||||
id=460150
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Windreaver
|
||||
id=460151
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Azorius Keyrune
|
||||
id=460152
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Azorius Signet
|
||||
id=460153
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Azorius Chancery
|
||||
id=460154
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Plains
|
||||
id=460155
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Island
|
||||
id=460156
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Teysa, Orzhov Scion
|
||||
id=460454
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Belfry Spirit
|
||||
id=460455
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Martyred Rusalka
|
||||
id=460456
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Keening Banshee
|
||||
id=460457
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Plagued Rusalka
|
||||
id=460458
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Pontiff of Blight
|
||||
id=460459
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Skeletal Vampire
|
||||
id=460460
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Stab Wound
|
||||
id=460461
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Ultimate Price
|
||||
id=460462
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Angel of Despair
|
||||
id=460463
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Deathpact Angel
|
||||
id=460464
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Debtors' Knell
|
||||
id=460465
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Ghost Council of Orzhova
|
||||
id=460466
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=One Thousand Lashes
|
||||
id=460467
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Orzhov Charm
|
||||
id=460468
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Orzhov Pontiff
|
||||
id=460469
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Pillory of the Sleepless
|
||||
id=460470
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Sin Collector
|
||||
id=460471
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Treasury Thrull
|
||||
id=460472
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Vizkopa Guildmage
|
||||
id=460473
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Orzhov Signet
|
||||
id=460474
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Orzhov Basilica
|
||||
id=460475
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Plains
|
||||
id=460476
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Swamp
|
||||
id=460477
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Rakdos, Lord of Riots
|
||||
id=460598
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Crypt Champion
|
||||
id=460599
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Thrill-Kill Assassin
|
||||
id=460600
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Cackling Flames
|
||||
id=460601
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Demonfire
|
||||
id=460602
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Rakdos Pit Dragon
|
||||
id=460603
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Splatter Thug
|
||||
id=460604
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Utvara Hellkite
|
||||
id=460605
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Auger Spree
|
||||
id=460606
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Avatar of Discord
|
||||
id=460607
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Carnival Hellsteed
|
||||
id=460608
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Dreadbore
|
||||
id=460609
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Jagged Poppet
|
||||
id=460610
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Lyzolda, the Blood Witch
|
||||
id=460611
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Master of Cruelties
|
||||
id=460612
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Rakdos Cackler
|
||||
id=460613
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Rakdos Charm
|
||||
id=460614
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Rakdos Guildmage
|
||||
id=460615
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Rakdos Shred-Freak
|
||||
id=460616
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Rakdos the Defiler
|
||||
id=460617
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Rakdos's Return
|
||||
id=460618
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Riot Spikes
|
||||
id=460619
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Wrecking Ball
|
||||
id=460620
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Rakdos Keyrune
|
||||
id=460621
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Rakdos Signet
|
||||
id=460622
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Rakdos Carnarium
|
||||
id=460623
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Swamp
|
||||
id=460624
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Mountain
|
||||
id=460625
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Ruric Thar, the Unbowed
|
||||
id=460292
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Skarrgan Firebird
|
||||
id=460293
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Birds of Paradise
|
||||
id=460294
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Protean Hulk
|
||||
id=460295
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Skarrgan Pit-Skulk
|
||||
id=460296
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Wasteland Viper
|
||||
id=460297
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Wurmweaver Coil
|
||||
id=460298
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Borborygmos
|
||||
id=460299
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Burning-Tree Emissary
|
||||
id=460300
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Burning-Tree Shaman
|
||||
id=460301
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Ghor-Clan Rampager
|
||||
id=460302
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Giant Solifuge
|
||||
id=460303
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Gruul Charm
|
||||
id=460304
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Pit Fight
|
||||
id=460305
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Rubblebelt Raiders
|
||||
id=460306
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Rubblehulk
|
||||
id=460307
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Rumbling Slum
|
||||
id=460308
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Savage Twister
|
||||
id=460309
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Savageborn Hydra
|
||||
id=460310
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Scab-Clan Mauler
|
||||
id=460311
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Ulasht, the Hate Seed
|
||||
id=460312
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Zhur-Taa Druid
|
||||
id=460313
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Zhur-Taa Swine
|
||||
id=460314
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Gruul Signet
|
||||
id=460315
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Gruul Turf
|
||||
id=460316
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Mountain
|
||||
id=460317
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Forest
|
||||
id=460318
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Zegana, Utopian Speaker
|
||||
id=460766
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Cloudfin Raptor
|
||||
id=460767
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Rapid Hybridization
|
||||
id=460768
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Cytoplast Root-Kin
|
||||
id=460769
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Experiment One
|
||||
id=460770
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Gyre Sage
|
||||
id=460771
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Miming Slime
|
||||
id=460772
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Vinelasher Kudzu
|
||||
id=460773
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Coiling Oracle
|
||||
id=460774
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Elusive Krasis
|
||||
id=460775
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Experiment Kraj
|
||||
id=460776
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Fathom Mage
|
||||
id=460777
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Momir Vig, Simic Visionary
|
||||
id=460778
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Nimbus Swimmer
|
||||
id=460779
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Omnibian
|
||||
id=460780
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Plaxcaster Frogling
|
||||
id=460781
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Progenitor Mimic
|
||||
id=460782
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Simic Sky Swallower
|
||||
id=460783
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Trygon Predator
|
||||
id=460784
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Urban Evolution
|
||||
id=460785
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Voidslime
|
||||
id=460786
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Vorel of the Hull Clade
|
||||
id=460787
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Zameck Guildmage
|
||||
id=460788
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Simic Signet
|
||||
id=460789
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Simic Growth Chamber
|
||||
id=460790
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Island
|
||||
id=460791
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Forest
|
||||
id=460792
|
||||
rarity=L
|
||||
[/card]
|
||||
1421
projects/mtg/bin/Res/sets/GRN/_cards.dat
Normal file
1421
projects/mtg/bin/Res/sets/GRN/_cards.dat
Normal file
File diff suppressed because it is too large
Load Diff
1102
projects/mtg/bin/Res/sets/HOU/_cards.dat
Normal file
1102
projects/mtg/bin/Res/sets/HOU/_cards.dat
Normal file
File diff suppressed because it is too large
Load Diff
1251
projects/mtg/bin/Res/sets/IMA/_cards.dat
Normal file
1251
projects/mtg/bin/Res/sets/IMA/_cards.dat
Normal file
File diff suppressed because it is too large
Load Diff
1581
projects/mtg/bin/Res/sets/M19/_cards.dat
Normal file
1581
projects/mtg/bin/Res/sets/M19/_cards.dat
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
1251
projects/mtg/bin/Res/sets/MM3/_cards.dat
Normal file
1251
projects/mtg/bin/Res/sets/MM3/_cards.dat
Normal file
File diff suppressed because it is too large
Load Diff
276
projects/mtg/bin/Res/sets/MP2/_cards.dat
Normal file
276
projects/mtg/bin/Res/sets/MP2/_cards.dat
Normal file
@@ -0,0 +1,276 @@
|
||||
[meta]
|
||||
author=Wagic Team
|
||||
name=Amonkhet Invocations
|
||||
year=2017-04-28
|
||||
total=54
|
||||
[/meta]
|
||||
[card]
|
||||
primitive=Austere Command
|
||||
id=429860
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Aven Mindcensor
|
||||
id=429861
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Containment Priest
|
||||
id=429862
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Loyal Retainers
|
||||
id=429863
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Oketra the True
|
||||
id=429864
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Worship
|
||||
id=429865
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Wrath of God
|
||||
id=429866
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Consecrated Sphinx
|
||||
id=429867
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Counterbalance
|
||||
id=429868
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Counterspell
|
||||
id=429869
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Cryptic Command
|
||||
id=429870
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Daze
|
||||
id=429871
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Divert
|
||||
id=429872
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Force of Will
|
||||
id=429873
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Kefnet the Mindful
|
||||
id=429874
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Pact of Negation
|
||||
id=429875
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Spell Pierce
|
||||
id=429876
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Stifle
|
||||
id=429877
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Attrition
|
||||
id=429878
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Bontu the Glorified
|
||||
id=429879
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Dark Ritual
|
||||
id=429880
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Diabolic Intent
|
||||
id=429881
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Entomb
|
||||
id=429882
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Mind Twist
|
||||
id=429883
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Aggravated Assault
|
||||
id=429884
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Chain Lightning
|
||||
id=429885
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Hazoret the Fervent
|
||||
id=429886
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Rhonas the Indomitable
|
||||
id=429887
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Maelstrom Pulse
|
||||
id=429888
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Vindicate
|
||||
id=429889
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Armageddon
|
||||
id=430666
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Capsize
|
||||
id=430667
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Forbid
|
||||
id=430668
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Omniscience
|
||||
id=430669
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Opposition
|
||||
id=430670
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Sunder
|
||||
id=430671
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Threads of Disloyalty
|
||||
id=430672
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Avatar of Woe
|
||||
id=430673
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Damnation
|
||||
id=430674
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Desolation Angel
|
||||
id=430675
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Diabolic Edict
|
||||
id=430676
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Doomsday
|
||||
id=430677
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=No Mercy
|
||||
id=430678
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Slaughter Pact
|
||||
id=430679
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Thoughtseize
|
||||
id=430680
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Blood Moon
|
||||
id=430681
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Boil
|
||||
id=430682
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Shatterstorm
|
||||
id=430683
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Through the Breach
|
||||
id=430684
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Choke
|
||||
id=430685
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=The Locust God
|
||||
id=430686
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Lord of Extinction
|
||||
id=430687
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=The Scarab God
|
||||
id=430688
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=The Scorpion God
|
||||
id=430689
|
||||
rarity=M
|
||||
[/card]
|
||||
File diff suppressed because it is too large
Load Diff
206
projects/mtg/bin/Res/sets/PUMA/_cards.dat
Normal file
206
projects/mtg/bin/Res/sets/PUMA/_cards.dat
Normal file
@@ -0,0 +1,206 @@
|
||||
[meta]
|
||||
author=Wagic Team
|
||||
name=Ultimate Box Topper
|
||||
year=2018-12-07
|
||||
total=40
|
||||
[/meta]
|
||||
[card]
|
||||
primitive=Emrakul, the Aeons Torn
|
||||
id=457105
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Karn Liberated
|
||||
id=457106
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Kozilek, Butcher of Truth
|
||||
id=457107
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Ulamog, the Infinite Gyre
|
||||
id=457108
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Snapcaster Mage
|
||||
id=457109
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Temporal Manipulation
|
||||
id=457110
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Bitterblossom
|
||||
id=457111
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Demonic Tutor
|
||||
id=457112
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Goryo's Vengeance
|
||||
id=457113
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Liliana of the Veil
|
||||
id=457114
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Mikaeus, the Unhallowed
|
||||
id=457115
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Reanimate
|
||||
id=457116
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Tasigur, the Golden Fang
|
||||
id=457117
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Balefire Dragon
|
||||
id=457118
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Through the Breach
|
||||
id=457119
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Eternal Witness
|
||||
id=457120
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Life from the Loam
|
||||
id=457121
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Noble Hierarch
|
||||
id=457122
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Tarmogoyf
|
||||
id=457123
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Vengevine
|
||||
id=457124
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Gaddock Teeg
|
||||
id=457125
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Leovold, Emissary of Trest
|
||||
id=457126
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Lord of Extinction
|
||||
id=457127
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Maelstrom Pulse
|
||||
id=457128
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Sigarda, Host of Herons
|
||||
id=457129
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Fulminator Mage
|
||||
id=457130
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Kitchen Finks
|
||||
id=457131
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Engineered Explosives
|
||||
id=457132
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Mana Vault
|
||||
id=457133
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Platinum Emperion
|
||||
id=457134
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Ancient Tomb
|
||||
id=457135
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Cavern of Souls
|
||||
id=457136
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Celestial Colonnade
|
||||
id=457137
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Creeping Tar Pit
|
||||
id=457138
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Dark Depths
|
||||
id=457139
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Karakas
|
||||
id=457140
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Lavaclaw Reaches
|
||||
id=457141
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Raging Ravine
|
||||
id=457142
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Stirring Wildwood
|
||||
id=457143
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Urborg, Tomb of Yawgmoth
|
||||
id=457144
|
||||
rarity=M
|
||||
[/card]
|
||||
1066
projects/mtg/bin/Res/sets/RIX/_cards.dat
Normal file
1066
projects/mtg/bin/Res/sets/RIX/_cards.dat
Normal file
File diff suppressed because it is too large
Load Diff
1421
projects/mtg/bin/Res/sets/RNA/_cards.dat
Normal file
1421
projects/mtg/bin/Res/sets/RNA/_cards.dat
Normal file
File diff suppressed because it is too large
Load Diff
46
projects/mtg/bin/Res/sets/SS1/_cards.dat
Normal file
46
projects/mtg/bin/Res/sets/SS1/_cards.dat
Normal file
@@ -0,0 +1,46 @@
|
||||
[meta]
|
||||
author=Wagic Team
|
||||
name=Signature Spellbook: Jace
|
||||
year=2018-06-15
|
||||
total=8
|
||||
[/meta]
|
||||
[card]
|
||||
primitive=Jace Beleren
|
||||
id=447129
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Blue Elemental Blast
|
||||
id=447130
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Brainstorm
|
||||
id=447131
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Counterspell
|
||||
id=447132
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Gifts Ungiven
|
||||
id=447133
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Mystical Tutor
|
||||
id=447134
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Negate
|
||||
id=447135
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Threads of Disloyalty
|
||||
id=447136
|
||||
rarity=R
|
||||
[/card]
|
||||
@@ -1,412 +0,0 @@
|
||||
[meta]
|
||||
author=Wagic Team
|
||||
name=Duel Decks: Speed vs. Cunning
|
||||
block=Duel
|
||||
year=2014
|
||||
total=81
|
||||
[/meta]
|
||||
[card]
|
||||
primitive=Act of Treason
|
||||
id=386299
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Aquamorph Entity
|
||||
id=386300
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Arc Trail
|
||||
id=386301
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Arcanis the Omnipotent
|
||||
id=386302
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Arrow Volley Trap
|
||||
id=386303
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Banefire
|
||||
id=386304
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Beetleback Chief
|
||||
id=386305
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Bone Splinters
|
||||
id=386306
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Coral Trickster
|
||||
id=386307
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Dauntless Onslaught
|
||||
id=386308
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Dregscape Zombie
|
||||
id=386309
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Echo Tracer
|
||||
id=386310
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Evolving Wilds
|
||||
id=386311
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Faerie Impostor
|
||||
id=386312
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Faerie Invaders
|
||||
id=386313
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Fathom Seer
|
||||
id=386314
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Fiery Fall
|
||||
id=386315
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Flame-Kin Zealot
|
||||
id=386316
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Fleeting Distraction
|
||||
id=386317
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Fleshbag Marauder
|
||||
id=386318
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Frenzied Goblin
|
||||
id=386319
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Fury of the Horde
|
||||
id=386320
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Ghitu Encampment
|
||||
id=386321
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Goblin Bombardment
|
||||
id=386323
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Goblin Deathraiders
|
||||
id=386324
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Goblin Warchief
|
||||
id=386325
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Hell's Thunder
|
||||
id=386326
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Hellraiser Goblin
|
||||
id=386327
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Hold the Line
|
||||
id=386328
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Hussar Patrol
|
||||
id=386329
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Impulse
|
||||
id=386330
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Infantry Veteran
|
||||
id=386331
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Inferno Trap
|
||||
id=386332
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Island
|
||||
id=386333
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Island
|
||||
id=386334
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Island
|
||||
id=386335
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Jeskai Elder
|
||||
id=386336
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Kathari Bomber
|
||||
id=386337
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Kor Hookmaster
|
||||
id=386338
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Krenko's Command
|
||||
id=386340
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Krenko, Mob Boss
|
||||
id=386339
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Leonin Snarecaster
|
||||
id=386341
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Lightning Angel
|
||||
id=386342
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Lightning Helix
|
||||
id=386343
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Lone Missionary
|
||||
id=386344
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Mana Leak
|
||||
id=386345
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Mardu Heart-Piercer
|
||||
id=386346
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Master Decoy
|
||||
id=386347
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Mountain
|
||||
id=386348
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Mountain
|
||||
id=386349
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Mountain
|
||||
id=386350
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Mountain
|
||||
id=386351
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Mystic Monastery
|
||||
id=386352
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Nomad Outpost
|
||||
id=386353
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Ogre Battledriver
|
||||
id=386354
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Oni of Wild Places
|
||||
id=386355
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Orcish Cannonade
|
||||
id=386356
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Plains
|
||||
id=386357
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Plains
|
||||
id=386358
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Plains
|
||||
id=386359
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Plains
|
||||
id=386360
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Reckless Abandon
|
||||
id=386361
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Repeal
|
||||
id=386362
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Scourge Devil
|
||||
id=386363
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Shambling Remains
|
||||
id=386364
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Shock
|
||||
id=386365
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Sparkmage Apprentice
|
||||
id=386366
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Sphinx of Uthuun
|
||||
id=386367
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Stave Off
|
||||
id=386368
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Steam Augury
|
||||
id=386369
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Stonecloaker
|
||||
id=386370
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Swamp
|
||||
id=386371
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Swamp
|
||||
id=386372
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Swamp
|
||||
id=386373
|
||||
rarity=L
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Swift Justice
|
||||
id=386374
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Terramorphic Expanse
|
||||
id=386375
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Thousand Winds
|
||||
id=386376
|
||||
rarity=R
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Traumatic Visions
|
||||
id=386377
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Whiplash Trap
|
||||
id=386378
|
||||
rarity=C
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Willbender
|
||||
id=386379
|
||||
rarity=U
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Zurgo Helmsmasher
|
||||
id=386380
|
||||
rarity=M
|
||||
[/card]
|
||||
1281
projects/mtg/bin/Res/sets/UMA/_cards.dat
Normal file
1281
projects/mtg/bin/Res/sets/UMA/_cards.dat
Normal file
File diff suppressed because it is too large
Load Diff
31
projects/mtg/bin/Res/sets/UST/_cards.dat
Normal file
31
projects/mtg/bin/Res/sets/UST/_cards.dat
Normal file
@@ -0,0 +1,31 @@
|
||||
[meta]
|
||||
author=Wagic Team
|
||||
name=Unstable
|
||||
year=2017-12-08
|
||||
total=5
|
||||
[/meta]
|
||||
[card]
|
||||
primitive=Plains
|
||||
id=439601
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Island
|
||||
id=439602
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Swamp
|
||||
id=439603
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Mountain
|
||||
id=439604
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Forest
|
||||
id=439605
|
||||
rarity=M
|
||||
[/card]
|
||||
151
projects/mtg/bin/Res/sets/V17/_cards.dat
Normal file
151
projects/mtg/bin/Res/sets/V17/_cards.dat
Normal file
@@ -0,0 +1,151 @@
|
||||
[meta]
|
||||
author=Wagic Team
|
||||
name=From the Vault: Transform
|
||||
year=2017-11-24
|
||||
total=16
|
||||
[/meta]
|
||||
[card]
|
||||
primitive=Avacyn, the Purifier
|
||||
id=439315
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Archangel Avacyn
|
||||
id=439314
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Temple of Aclazotz
|
||||
id=439317
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Arguel's Blood Fast
|
||||
id=439316
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Arlinn, Embraced by the Moon
|
||||
id=439319
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Arlinn Kord
|
||||
id=439318
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Lord of Lineage
|
||||
id=439321
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Bloodline Keeper
|
||||
id=439320
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Bruna, the Fading Light
|
||||
id=439322
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Brisela, Voice of Nightmares
|
||||
id=439323
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Chandra, Roaring Flame
|
||||
id=439325
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Chandra, Fire of Kaladesh
|
||||
id=439324
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Insectile Aberration
|
||||
id=439327
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Delver of Secrets
|
||||
id=439326
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Withengar Unbound
|
||||
id=439329
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Elbrus, the Binding Blade
|
||||
id=439328
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Garruk, the Veil-Cursed
|
||||
id=439331
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Garruk Relentless
|
||||
id=439330
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Gisela, the Broken Blade
|
||||
id=439332
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Ravager of the Fells
|
||||
id=439334
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Huntmaster of the Fells
|
||||
id=439333
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Jace, Telepath Unbound
|
||||
id=439336
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Jace, Vryn's Prodigy
|
||||
id=439335
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Gideon, Battle-Forged
|
||||
id=439338
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Kytheon, Hero of Akros
|
||||
id=439337
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Liliana, Defiant Necromancer
|
||||
id=439340
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Liliana, Heretical Healer
|
||||
id=439339
|
||||
rarity=M
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Nissa, Sage Animist
|
||||
id=439342
|
||||
rarity=T
|
||||
[/card]
|
||||
[card]
|
||||
primitive=Nissa, Vastwood Seer
|
||||
id=439341
|
||||
rarity=M
|
||||
[/card]
|
||||
1561
projects/mtg/bin/Res/sets/WAR/_cards.dat
Normal file
1561
projects/mtg/bin/Res/sets/WAR/_cards.dat
Normal file
File diff suppressed because it is too large
Load Diff
1507
projects/mtg/bin/Res/sets/XLN/_cards.dat
Normal file
1507
projects/mtg/bin/Res/sets/XLN/_cards.dat
Normal file
File diff suppressed because it is too large
Load Diff
2501
projects/mtg/bin/Res/sets/primitives/AKH.txt
Normal file
2501
projects/mtg/bin/Res/sets/primitives/AKH.txt
Normal file
File diff suppressed because it is too large
Load Diff
674
projects/mtg/bin/Res/sets/primitives/BBD.txt
Normal file
674
projects/mtg/bin/Res/sets/primitives/BBD.txt
Normal file
@@ -0,0 +1,674 @@
|
||||
grade=borderline
|
||||
[card]
|
||||
name=Regna, the Redeemer
|
||||
abilities=flying
|
||||
auto=may moveto(myhand) notatarget(krav, the unredeemed|mylibrary)
|
||||
auto=@each endofturn restriction{compare(lifegain)~morethan~0}:create(warrior:creature warrior:1/1:white:)*2
|
||||
text=Partner with Krav, the Unredeemed (When this creature enters the battlefield, target player may put Krav into their hand from their library, then shuffle.) -- Flying -- At the beginning of each end step, if your team gained life this turn, create two 1/1 white Warrior creature tokens.
|
||||
mana={5}{W}
|
||||
type=Legendary Creature
|
||||
subtype=Angel
|
||||
power=4
|
||||
toughness=4
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Virtus the Veiled
|
||||
abilities=deathtouch
|
||||
auto=may moveto(myhand) notatarget(gorm the great|mylibrary)
|
||||
auto=@combatdamaged(player) from(this):life:-halfdownopponentlifetotal opponent
|
||||
text=Partner with Gorm the Great (When this creature enters the battlefield, target player may put Gorm into their hand from their library, then shuffle.) -- Deathtouch -- Whenever Virtus the Veiled deals combat damage to a player, that player loses half their life, rounded up.
|
||||
mana={2}{B}
|
||||
type=Legendary Creature
|
||||
subtype=Azra Assassin
|
||||
power=1
|
||||
toughness=1
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Khorvath Brightflame
|
||||
abilities=flying,haste
|
||||
auto=may moveto(myhand) notatarget(sylvia brightspear|mylibrary)
|
||||
auto=lord(knight|myBattlefield) flying
|
||||
auto=lord(knight|myBattlefield) haste
|
||||
text=Partner with Sylvia Brightspear (When this creature enters the battlefield, target player may put Sylvia into their hand from their library, then shuffle.) -- Flying, haste -- Knights your team controls have flying and haste.
|
||||
mana={5}{R}
|
||||
type=Legendary Creature
|
||||
subtype=Dragon
|
||||
power=3
|
||||
toughness=4
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Sylvia Brightspear
|
||||
abilities=double strike
|
||||
auto=lord(dragon|myBattlefield) haste double strike
|
||||
auto=may moveto(myhand) notatarget(khorvath brightflame|mylibrary)
|
||||
text=Partner with Khorvath Brightflame (When this creature enters the battlefield, target player may put Khorvath into their hand from their library, then shuffle.) -- Double strike -- Dragons your team controls have double strike.
|
||||
mana={2}{W}
|
||||
type=Legendary Creature
|
||||
subtype=Human Knight
|
||||
power=2
|
||||
toughness=2
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Toothy, Imaginary Friend
|
||||
auto=may moveto(myhand) notatarget(pir, imaginative rascal|mylibrary)
|
||||
auto=@drawof(player):counter(1/1)
|
||||
auto=@movedTo(this|nonbattlezone) from(myBattlefield):thisforeach(counter{1/1,1}) draw:1 controller
|
||||
text=Partner with Pir, Imaginative Rascal (When this creature enters the battlefield, target player may put Pir into their hand from their library, then shuffle.) -- Whenever you draw a card, put a +1/+1 counter on Toothy, Imaginary Friend. -- When Toothy leaves the battlefield, draw a card for each +1/+1 counter on it.
|
||||
mana={3}{U}
|
||||
type=Legendary Creature
|
||||
subtype=Illusion
|
||||
power=1
|
||||
toughness=1
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Blaring Recruiter
|
||||
auto=may moveto(myhand) notatarget(blaring captain|mylibrary)
|
||||
auto={2}{W}:create(warrior:creature warrior:1/1:white:)
|
||||
text=Partner with Blaring Captain (When this creature enters the battlefield, target player may put Blaring Captain into their hand from their library, then shuffle.) -- {2}{W}: Create a 1/1 white Warrior creature token.
|
||||
mana={3}{W}
|
||||
type=Creature
|
||||
subtype=Elf Warrior
|
||||
power=2
|
||||
toughness=2
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Blaring Captain
|
||||
auto=may moveto(myhand) notatarget(blaring recruiter|mylibrary)
|
||||
auto=@combat(attacking) source(this):all(warrior[attacking]) 1/1
|
||||
text=Partner with Blaring Recruiter (When this creature enters the battlefield, target player may put Blaring Recruiter into their hand from their library, then shuffle.) -- Whenever Blaring Captain attacks, attacking Warriors get +1/+1 until end of turn.
|
||||
mana={3}{B}
|
||||
type=Creature
|
||||
subtype=Azra Warrior
|
||||
power=2
|
||||
toughness=2
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Chakram Retriever
|
||||
auto=may moveto(myhand) notatarget(chakram slinger|mylibrary)
|
||||
auto=@movedTo(*|mystack) restriction{myturnonly}:untap target(creature)
|
||||
text=Partner with Chakram Slinger (When this creature enters the battlefield, target player may put Chakram Slinger into their hand from their library, then shuffle.) -- Whenever you cast a spell during your turn, untap target creature.
|
||||
mana={4}{U}
|
||||
type=Creature
|
||||
subtype=Elemental Hound
|
||||
power=2
|
||||
toughness=4
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Chakram Slinger
|
||||
auto=may moveto(myhand) notatarget(chakram retriever|mylibrary)
|
||||
auto={R}{T}:damage:2 target(player)
|
||||
text=Partner with Chakram Retriever (When this creature enters the battlefield, target player may put Chakram Retriever into their hand from their library, then shuffle.) -- {R}, {T}: Chakram Slinger deals 2 damage to target player or planeswalker.
|
||||
mana={4}{R}
|
||||
type=Creature
|
||||
subtype=Human Warrior
|
||||
power=2
|
||||
toughness=4
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Soulblade Corrupter
|
||||
abilities=deathtouch
|
||||
auto=may moveto(myhand) notatarget(soulblade renewer|mylibrary)
|
||||
auto=@combat(attacking) source(creature[counter{1/1.1}]|mybattlefield):deathtouch ueot
|
||||
text=Partner with Soulblade Renewer (When this creature enters the battlefield, target player may put Soulblade Renewer into their hand from their library, then shuffle.) -- Deathtouch -- Whenever a creature with a +1/+1 counter on it attacks one of your opponents, that creature gains deathtouch until end of turn.
|
||||
mana={4}{B}
|
||||
type=Creature
|
||||
subtype=Human Warrior
|
||||
power=3
|
||||
toughness=3
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Soulblade Renewer
|
||||
auto=may moveto(myhand) notatarget(soulblade corrupter|mylibrary)
|
||||
auto=target(<upto:2>other creature|battlefield) counter(1/1)
|
||||
text=Partner with Soulblade Corrupter (When this creature enters the battlefield, target player may put Soulblade Corrupter into their hand from their library, then shuffle.) -- When Soulblade Renewer enters the battlefield, support 2. (Put a +1/+1 counter on each of up to two other target creatures.)
|
||||
mana={4}{G}
|
||||
type=Creature
|
||||
subtype=Elf Warrior
|
||||
power=2
|
||||
toughness=2
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Proud Mentor
|
||||
auto=may moveto(myhand) notatarget(impetuous protege|mylibrary)
|
||||
auto={W}{T}:tap target(creature)
|
||||
text=Partner with Impetuous Protege (When this creature enters the battlefield, target player may put Impetuous Protege into their hand from their library, then shuffle.) -- {W}, {T}: Tap target creature.
|
||||
mana={2}{W}
|
||||
type=Creature
|
||||
subtype=Human Warrior
|
||||
power=1
|
||||
toughness=1
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Ley Weaver
|
||||
auto=may moveto(myhand) notatarget(lore weaver|mylibrary)
|
||||
auto={T}:untap <2>target(land)
|
||||
text=Partner with Lore Weaver (When this creature enters the battlefield, target player may put Lore Weaver into their hand from their library, then shuffle.) -- {T}: Untap two target lands.
|
||||
mana={3}{G}
|
||||
type=Creature
|
||||
subtype=Human Druid
|
||||
power=2
|
||||
toughness=2
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Lore Weaver
|
||||
auto=may moveto(myhand) notatarget(ley weaver|mylibrary)
|
||||
auto={5}{U}{U}:draw:2 target(player)
|
||||
text=Partner with Ley Weaver (When this creature enters the battlefield, target player may put Ley Weaver into their hand from their library, then shuffle.) -- {5}{U}{U}: Target player draws two cards.
|
||||
mana={3}{U}
|
||||
type=Creature
|
||||
subtype=Human Wizard
|
||||
power=2
|
||||
toughness=2
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Arena Rector
|
||||
auto=@movedTo(this|graveyard) from(battlefield):may all(trigger[to]) moveto(exile) and! moveTo(myBattlefield) target(planeswalker|myLibrary)!
|
||||
text=When Arena Rector dies, you may exile it. If you do, search your library for a planeswalker card, put it onto the battlefield, then shuffle your library.
|
||||
mana={3}{W}
|
||||
type=Creature
|
||||
subtype=Human Cleric
|
||||
power=1
|
||||
toughness=2
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Aurora Champion
|
||||
auto=@combat(attacking) source(this) aslongas(other warrior|myBattlefield):tap target(creature)
|
||||
text=Whenever Aurora Champion attacks, if your team controls another Warrior, tap target creature.
|
||||
mana={2}{W}
|
||||
type=Creature
|
||||
subtype=Elf Warrior
|
||||
power=3
|
||||
toughness=2
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Brightling
|
||||
auto={W}:vigilance ueot
|
||||
auto={W}:lifelink ueot
|
||||
auto={W}:moveTo(ownerHand)
|
||||
auto={1}:1/-1 ueot
|
||||
auto={1}:-1/1 ueot
|
||||
text={W}: Brightling gains vigilance until end of turn. -- {W}: Brightling gains lifelink until end of turn. -- {W}: Return Brightling to its owner's hand. -- {1}: Brightling gets +1/-1 or -1/+1 until end of turn.
|
||||
mana={1}{W}{W}
|
||||
type=Creature
|
||||
subtype=Shapeshifter
|
||||
power=3
|
||||
toughness=3
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Bring Down
|
||||
target=creature[power>=4]
|
||||
auto=destroy
|
||||
text=Assist (Another player can pay up to {3} of this spell's cost.) -- Destroy target creature with power 4 or greater.
|
||||
mana={3}{W}
|
||||
type=Sorcery
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Dwarven Lightsmith
|
||||
auto=all(creature|myBattlefield) 1/1
|
||||
text=Assist (Another player can pay up to {5} of this spell's cost.) -- When Dwarven Lightsmith enters the battlefield, creatures your team controls get +1/+1 until end of turn.
|
||||
mana={5}{W}
|
||||
type=Creature
|
||||
subtype=Dwarf Cleric
|
||||
power=3
|
||||
toughness=4
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Jubilant Mascot
|
||||
auto=@each my combatbegins:may pay({3}{w}):target(<upto:2>other creature|battlefield) counter(1/1)
|
||||
text=At the beginning of combat on your turn, you may pay {3}{W}. If you do, support 2. (Put a +1/+1 counter on each of up to two other target creatures.)
|
||||
mana={2}{W}
|
||||
type=Creature
|
||||
subtype=Homunculus
|
||||
power=1
|
||||
toughness=1
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Play of the Game
|
||||
auto=moveto(exile) all(*[-land])
|
||||
text=Assist (Another player can pay up to {6} of this spell's cost.) -- Exile all nonland permanents.
|
||||
mana={6}{W}{W}
|
||||
type=Sorcery
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Regna's Sanction
|
||||
auto=counter(1/1) all(creature|myBattlefield)
|
||||
auto=ability$!name(select untapped creature) notatarget(creature[-tapped]|mybattlefield) transforms((,newability[all(other creature|myBattlefield) tap]))!$ opponent
|
||||
text=For each player, choose friend or foe. Each friend puts a +1/+1 counter on each creature they control. Each foe chooses one untapped creature they control, then taps the rest.
|
||||
mana={3}{W}
|
||||
type=Sorcery
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Skystreamer
|
||||
abilities=flying
|
||||
auto=target(player) life:4
|
||||
text=Assist (Another player can pay up to {4} of this spell's cost.) -- Flying -- When Skystreamer enters the battlefield, target player gains 4 life.
|
||||
mana={4}{W}
|
||||
type=Creature
|
||||
subtype=Griffin
|
||||
power=3
|
||||
toughness=2
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Together Forever
|
||||
auto=target(<upto:2>other creature|battlefield) counter(1/1)
|
||||
auto={1}:target(creature[counter{any}]) transforms((,newability[@movedTo(this|graveyard) from(battlefield):all(trigger[to]) moveTo(ownerHand)])) ueot
|
||||
text=When Together Forever enters the battlefield, support 2. (Put a +1/+1 counter on each of up to two other target creatures.) -- {1}: Choose target creature with a counter on it. When that creature dies this turn, return that card to its owner's hand.
|
||||
mana={W}{W}
|
||||
type=Enchantment
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Game Plan
|
||||
auto=moveto(opponentlibrary) all(*|opponenthand)
|
||||
auto=moveto(opponentlibrary) all(*|opponentgraveyard) && shuffle
|
||||
auto=draw:7 opponent
|
||||
auto=moveto(mylibrary) all(*|myhand)
|
||||
auto=moveto(mylibrary) all(*|mygraveyard) && shuffle
|
||||
auto=draw:7 controller
|
||||
auto=moveto(exile)
|
||||
text=Assist (Another player can pay up to {5} of this spell's cost.) -- Each player shuffles their hand and graveyard into their library, then draws seven cards. Exile Game Plan.
|
||||
mana={5}{U}
|
||||
type=Sorcery
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Huddle Up
|
||||
auto=draw:2
|
||||
auto=draw:2 target(opponent)
|
||||
text=Assist (Another player can pay up to {2} of this spell's cost.) -- Two target players each draw a card.
|
||||
mana={2}{U}
|
||||
type=Sorcery
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Nimbus Champion
|
||||
abilities=flying
|
||||
auto=@combat(attacking) source(this):may moveto(ownerHand) target(creature) if that creature's power is less than,equal the number of warriors your team controls
|
||||
text=Flying -- Whenever Nimbus Champion attacks, you may return target creature to its owner's hand if that creature's power is less than or equal to the number of Warriors your team controls.
|
||||
mana={5}{U}
|
||||
type=Creature
|
||||
subtype=Avatar Warrior
|
||||
power=4
|
||||
toughness=4
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Out of Bounds
|
||||
target=*|stack
|
||||
auto=fizzle
|
||||
auto=Counter target spell
|
||||
text=Assist (Another player can pay up to {3} of this spell's cost.) -- Counter target spell.
|
||||
mana={3}{U}
|
||||
type=Instant
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Saltwater Stalwart
|
||||
auto=@damagefoeof(player) from(this):draw:1 target(player)
|
||||
text=Whenever Saltwater Stalwart deals damage to an opponent, target player draws a card.
|
||||
mana={3}{U}
|
||||
type=Creature
|
||||
subtype=Merfolk Warrior
|
||||
power=2
|
||||
toughness=4
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Soaring Show-Off
|
||||
abilities=flying
|
||||
auto=draw:1
|
||||
auto=draw:1 opponent
|
||||
text=Flying -- When Soaring Show-Off enters the battlefield, each player draws a card.
|
||||
mana={2}{U}
|
||||
type=Creature
|
||||
subtype=Bird Warrior
|
||||
power=2
|
||||
toughness=2
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Spellseeker
|
||||
auto=may moveTo(myHand) target(*[instant;sorcery;manacost<=2]|myLibrary)
|
||||
text=When Spellseeker enters the battlefield, you may search your library for an instant or sorcery card with converted mana cost 2 or less, reveal it, put it into your hand, then shuffle your library.
|
||||
mana={2}{U}
|
||||
type=Creature
|
||||
subtype=Human Wizard
|
||||
power=1
|
||||
toughness=1
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Spellweaver Duo
|
||||
auto=may target(creature[tapped]) moveto(ownerhand)
|
||||
text=Assist (Another player can pay up to {6} of this spell's cost.) -- When Spellweaver Duo enters the battlefield, you may return target tapped creature to its owner's hand.
|
||||
mana={6}{U}
|
||||
type=Creature
|
||||
subtype=Human Wizard
|
||||
power=4
|
||||
toughness=4
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Archfiend of Despair
|
||||
abilities=flying,nolifegainopponent
|
||||
auto=@each endofturn:life:-oplifelost opponent
|
||||
text=Flying -- Your opponents can't gain life. -- At the beginning of each end step, each opponent loses life equal to the life that player lost this turn. (Damage causes loss of life.)
|
||||
mana={6}{B}{B}
|
||||
type=Creature
|
||||
subtype=Demon
|
||||
power=6
|
||||
toughness=6
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Bloodborn Scoundrels
|
||||
auto=target(opponent) life:-2
|
||||
auto=life:2
|
||||
text=Assist (Another player can pay up to {5} of this spell's cost.) -- When Bloodborn Scoundrels enters the battlefield, target opponent loses 2 life and you gain 2 life.
|
||||
mana={5}{B}
|
||||
type=Creature
|
||||
subtype=Vampire Rogue
|
||||
power=4
|
||||
toughness=4
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Fan Favorite
|
||||
auto={2}:1/1 ueot
|
||||
text=Assist (Another player can pay up to {3} of this spell's cost.) -- {2}: Fan Favorite gets +1/+1 until end of turn. Any player may activate this ability.
|
||||
mana={3}{B}
|
||||
type=Creature
|
||||
subtype=Human Rogue
|
||||
power=2
|
||||
toughness=2
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Gang Up
|
||||
target=creature[power<=prex]
|
||||
auto=destroy
|
||||
text=Assist (Another player can pay up to {X} of this spell's cost. You choose the value of X.) -- Destroy target creature with power X or less.
|
||||
mana={X}{B}
|
||||
type=Instant
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Inner Demon
|
||||
target=creature
|
||||
auto=teach(creature) +2/+2
|
||||
auto=teach(creature) flying
|
||||
auto=transforms((Demon))
|
||||
auto=all(creature[-Demon]) -2/-2
|
||||
text=Enchant creature -- Enchanted creature gets +2/+2, has flying, and is a Demon in addition to its other types. -- When Inner Demon enters the battlefield, all non-Demon creatures get -2/-2 until end of turn.
|
||||
mana={2}{B}{B}
|
||||
type=Enchantment
|
||||
subtype=Aura
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Sickle Dancer
|
||||
auto=@combat(attacking) source(this) aslongas(other warrior|myBattlefield) :1/1 ueot
|
||||
text=Whenever Sickle Dancer attacks, if your team controls another Warrior, Sickle Dancer gets +1/+1 until end of turn.
|
||||
mana={2}{B}
|
||||
type=Creature
|
||||
subtype=Human Warrior
|
||||
power=3
|
||||
toughness=2
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Thrasher Brute
|
||||
auto=@movedTo(Warrior|mybattlefield) life:-1 opponent
|
||||
auto=@movedTo(Warrior|mybattlefield) life:1
|
||||
text=Whenever Thrasher Brute or another Warrior enters the battlefield under your team's control, target opponent loses 1 life and you gain 1 life.
|
||||
mana={3}{B}
|
||||
type=Creature
|
||||
subtype=Orc Warrior
|
||||
power=4
|
||||
toughness=3
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Thrilling Encore
|
||||
auto=moveTo(myBattlefield) all(creature[fresh]|graveyard)
|
||||
text=Put onto the battlefield under your control all creature cards in all graveyards that were put there from the battlefield this turn.
|
||||
mana={4}{B}
|
||||
type=Instant
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Azra Bladeseeker
|
||||
auto=may ability$!name(discard) reject notatarget(*|myhand)!$ and!(draw:1)!
|
||||
text=When Azra Bladeseeker enters the battlefield, each player on your team may discard a card, then each player who discarded a card this way draws a card.
|
||||
mana={2}{R}
|
||||
type=Creature
|
||||
subtype=Azra Warrior
|
||||
power=3
|
||||
toughness=2
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Bull-Rush Bruiser
|
||||
auto=@combat(attacking) source(this) aslongas(other warrior|myBattlefield):first strike ueot
|
||||
text=Whenever Bull-Rush Bruiser attacks, if your team controls another Warrior, Bull-Rush Bruiser gains first strike until end of turn.
|
||||
mana={3}{R}
|
||||
type=Creature
|
||||
subtype=Minotaur Warrior
|
||||
power=4
|
||||
toughness=3
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Lava-Field Overlord
|
||||
abilities=flying
|
||||
auto=damage:4 target(creature|opponentBattlefield)
|
||||
text=Assist (Another player can pay up to {7} of this spell's cost.) -- Flying -- When Lava-Field Overlord enters the battlefield, it deals 4 damage to target creature an opponent controls.
|
||||
mana={7}{R}{R}
|
||||
type=Creature
|
||||
subtype=Dragon
|
||||
power=5
|
||||
toughness=4
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Magma Hellion
|
||||
abilities=trample, haste
|
||||
text=Assist (Another player can pay up to {6} of this spell's cost.) -- Trample, haste
|
||||
mana={6}{R}
|
||||
type=Creature
|
||||
subtype=Hellion
|
||||
power=5
|
||||
toughness=4
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Najeela, the Blade-Blossom
|
||||
auto=@combat(attacking) source(creature[warrior]):create(warrior:creature warrior:1/1:white:battleready)
|
||||
auto={W}{U}{B}{R}{G}:untap all attacking creature they) trample, lifelink, && haste ueot after this phase, there is an additional combat phase activate this ability only during combat
|
||||
text=Whenever a Warrior attacks, you may have its controller create a 1/1 white Warrior creature token that's tapped and attacking. -- {W}{U}{B}{R}{G}: Untap all attacking creatures. They gain trample, lifelink, and haste until end of turn. After this phase, there is an additional combat phase. Activate this ability only during combat.
|
||||
mana={2}{R}
|
||||
type=Legendary Creature
|
||||
subtype=Human Warrior
|
||||
power=3
|
||||
toughness=2
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Stadium Vendors
|
||||
auto=choice Add{R}{R}
|
||||
auto=choice Add{W}{W}
|
||||
auto=choice Add{U}{U}
|
||||
auto=choice Add{B}{B}
|
||||
auto=choice Add{G}{G}
|
||||
text=When Stadium Vendors enters the battlefield, choose a player. That player adds two mana of any one color they choose.
|
||||
mana={3}{R}
|
||||
type=Creature
|
||||
subtype=Goblin
|
||||
power=3
|
||||
toughness=3
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Bramble Sovereign
|
||||
auto=@movedto(creature[-token]|mybattlefield):all(trigger[to]) pay[[{1}{G}]] clone
|
||||
text=Whenever another nontoken creature enters the battlefield, you may pay {1}{G}. If you do, that creature's controller creates a token that's a copy of that creature.
|
||||
mana={2}{G}{G}
|
||||
type=Creature
|
||||
subtype=Dryad
|
||||
power=4
|
||||
toughness=4
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Charging Binox
|
||||
abilities=trample
|
||||
text=Assist (Another player can pay up to {7} of this spell's cost.) -- Trample
|
||||
mana={7}{G}
|
||||
type=Creature
|
||||
subtype=Beast
|
||||
power=7
|
||||
toughness=5
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=The Crowd Goes Wild
|
||||
auto=target(<upto:X>creature|battlefield) counter(1/1,1)
|
||||
auto=all(creature[counter{1/1.1}]) trample
|
||||
text=Assist (Another player can pay up to {X} of this spell's cost. You choose the value of X.) -- Support X. (Put a +1/+1 counter on each of up to X target creatures.) -- Each creature with a +1/+1 counter on it gains trample until end of turn.
|
||||
mana={X}{G}
|
||||
type=Sorcery
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Decorated Champion
|
||||
auto=@movedTo(other warrior|myBattlefield):counter(1/1)
|
||||
text=Whenever another Warrior enters the battlefield under your team's control, put a +1/+1 counter on Decorated Champion.
|
||||
mana={1}{G}
|
||||
type=Creature
|
||||
subtype=Elf Warrior
|
||||
power=2
|
||||
toughness=2
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Jungle Wayfinder
|
||||
auto=ability$!moveto(ownerhand) notatarget(land[basic]|mylibrary)!$ opponent
|
||||
auto=ability$!moveto(ownerhand) notatarget(land[basic]|mylibrary)!$ controller
|
||||
text=When Jungle Wayfinder enters the battlefield, each player may search their library for a basic land card, reveal it, put it into their hand, then shuffle their library.
|
||||
mana={2}{G}
|
||||
type=Creature
|
||||
subtype=Elf Warrior
|
||||
power=3
|
||||
toughness=3
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Azra Oddsmaker
|
||||
auto=@each my combatbegins may ability$!name(discard) reject notatarget(*|myhand)!$:target(creature) transforms((,newability[@combatdamaged(player) from(this):draw:2 controller])) ueot
|
||||
text=At the beginning of combat on your turn, you may discard a card. If you do, choose a creature. Whenever that creature deals combat damage to a player this turn, you draw two cards.
|
||||
mana={1}{B}{R}
|
||||
type=Creature
|
||||
subtype=Azra Warrior
|
||||
power=3
|
||||
toughness=3
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Rushblade Commander
|
||||
auto=lord(warrior|mybattlefield) haste
|
||||
text=Warriors your team controls have haste.
|
||||
mana={B}{R}
|
||||
type=Creature
|
||||
subtype=Azra Warrior
|
||||
power=2
|
||||
toughness=2
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Vampire Charmseeker
|
||||
abilities=flying
|
||||
auto=target(instant,sorcery,creature|graveyard) moveTo(ownerHand)
|
||||
text=Assist (Another player can pay up to {6} of this spell's cost.) -- Flying -- When Vampire Charmseeker enters the battlefield, return target instant, sorcery, or creature card from a graveyard to its owner's hand.
|
||||
mana={6}{U}{B}
|
||||
type=Creature
|
||||
subtype=Vampire Wizard
|
||||
power=3
|
||||
toughness=4
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Victory Chimes
|
||||
auto=@each upkeep:untap
|
||||
auto={T}:target(player) add{c}
|
||||
text=Untap Victory Chimes during each other player's untap step. -- {T}: A player of your choice adds {C}.
|
||||
mana={3}
|
||||
type=Artifact
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Bountiful Promenade
|
||||
auto=tap(noevent)
|
||||
auto={T}:Add{G}
|
||||
auto={T}:Add{W}
|
||||
text=Bountiful Promenade enters the battlefield tapped unless you have two or more opponents. -- {T}: Add {G} or {W}.
|
||||
type=Land
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Luxury Suite
|
||||
auto=tap(noevent)
|
||||
auto={T}:Add{B}
|
||||
auto={T}:Add{R}
|
||||
text=Luxury Suite enters the battlefield tapped unless you have two or more opponents. -- {T}: Add {B} or {R}.
|
||||
type=Land
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Morphic Pool
|
||||
auto=tap(noevent)
|
||||
auto={T}:Add{U}
|
||||
auto={T}:Add{B}
|
||||
text=Morphic Pool enters the battlefield tapped unless you have two or more opponents. -- {T}: Add {U} or {B}.
|
||||
type=Land
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Sea of Clouds
|
||||
auto=tap(noevent)
|
||||
auto={T}:Add{W}
|
||||
auto={T}:Add{U}
|
||||
text=Sea of Clouds enters the battlefield tapped unless you have two or more opponents. -- {T}: Add {W} or {U}.
|
||||
type=Land
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Spire Garden
|
||||
auto=tap(noevent)
|
||||
auto={T}:Add{R}
|
||||
auto={T}:Add{G}
|
||||
text=Spire Garden enters the battlefield tapped unless you have two or more opponents. -- {T}: Add {R} or {G}.
|
||||
type=Land
|
||||
[/card]
|
||||
420
projects/mtg/bin/Res/sets/primitives/C17.txt
Normal file
420
projects/mtg/bin/Res/sets/primitives/C17.txt
Normal file
@@ -0,0 +1,420 @@
|
||||
grade=borderline
|
||||
[card]
|
||||
name=Arahbo, Roar of the World
|
||||
auto=@each my combatbegins:target(other cat|myBattlefield) 3/3 ueot
|
||||
auto=@combat(attacking) source(cat|mybattlefield):all(trigger[to]) pay[[{1}{G}{W}]] trample && dynamicability<!mytgt powerpumpboth!>
|
||||
text=Eminence — At the beginning of combat on your turn, if Arahbo, Roar of the World is in the command zone or on the battlefield, another target Cat you control gets +3/+3 until end of turn. -- Whenever another Cat you control attacks, you may pay {1}{G}{W}. If you do, it gains trample and gets +X/+X until end of turn, where X is its power.
|
||||
mana={3}{G}{W}
|
||||
type=Legendary Creature
|
||||
subtype=Cat Avatar
|
||||
power=5
|
||||
toughness=5
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Balan, Wandering Knight
|
||||
auto=this(gear > 1) double strike
|
||||
auto={1}{W}:all(equipment|mybattlefield) newhook
|
||||
text=First strike -- Balan, Wandering Knight has double strike as long as two or more Equipment are attached to it. -- {1}{W}: Attach all Equipment you control to Balan.
|
||||
mana={2}{W}{W}
|
||||
type=Legendary Creature
|
||||
subtype=Cat Knight
|
||||
power=3
|
||||
toughness=3
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Bloodforged Battle-Axe
|
||||
auto=teach(creature) 2/0
|
||||
auto=teach(creature) @combatdamaged(player) from(mytgt):clone all(this)
|
||||
auto={2}:equip
|
||||
text=Equipped creature gets +2/+0. -- Whenever equipped creature deals combat damage to a player, create a token that's a copy of Bloodforged Battle-Axe. -- Equip {2}
|
||||
mana={1}
|
||||
type=Artifact
|
||||
subtype=Equipment
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Bloodline Necromancer
|
||||
abilities=lifelink
|
||||
auto=may target(creature[vampire;wizard]|mygraveyard) moveTo(mybattlefield)
|
||||
text=Lifelink -- When Bloodline Necromancer enters the battlefield, you may return target Vampire or Wizard creature card from your graveyard to the battlefield.
|
||||
mana={4}{B}
|
||||
type=Creature
|
||||
subtype=Vampire Wizard
|
||||
power=3
|
||||
toughness=2
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Bloodsworn Steward
|
||||
abilities=flying
|
||||
text=Flying -- Commander creatures you control get +2/+2 and have haste.
|
||||
mana={2}{R}{R}
|
||||
type=Creature
|
||||
subtype=Vampire Knight
|
||||
power=4
|
||||
toughness=4
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Boneyard Scourge
|
||||
abilities=flying
|
||||
autograveyard=@movedTo(other Dragon|mygraveyard) from(myBattlefield):may pay({1}{b}) moveTo(mybattlefield)
|
||||
text=Flying -- Whenever a Dragon you control dies while Boneyard Scourge is in your graveyard, you may pay {1}{B}. If you do, return Boneyard Scourge from your graveyard to the battlefield.
|
||||
mana={2}{B}{B}
|
||||
type=Creature
|
||||
subtype=Zombie Dragon
|
||||
power=4
|
||||
toughness=3
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Crimson Honor Guard
|
||||
abilities=trample
|
||||
auto=@each my end:damage:4 controller
|
||||
auto=@each opponent end:damage:4 opponent
|
||||
text=Trample -- At the beginning of each player's end step, Crimson Honor Guard deals 4 damage to that player unless they control a commander.
|
||||
mana={3}{R}{R}
|
||||
type=Creature
|
||||
subtype=Vampire Knight
|
||||
power=4
|
||||
toughness=5
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Curse of Bounty
|
||||
target=player
|
||||
auto=@combat(attacking) source(creature|myBattlefield) restriction(once):untap all(*[-land]|myBattlefield)
|
||||
text=Enchant player -- Whenever enchanted player is attacked, untap all nonland permanents you control. Each opponent attacking that player untaps all nonland permanents they control.
|
||||
mana={1}{G}
|
||||
type=Enchantment
|
||||
subtype=Aura Curse
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Curse of Disturbance
|
||||
target=player
|
||||
auto=@combat(attacking) source(creature|myBattlefield) restriction(once):create(zombie:creature zombie:2/2:black)
|
||||
text=Enchant player -- Whenever enchanted player is attacked, create a 2/2 black Zombie creature token. Each opponent attacking that player does the same.
|
||||
mana={2}{B}
|
||||
type=Enchantment
|
||||
subtype=Aura Curse
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Curse of Opulence
|
||||
target=player
|
||||
auto=@combat(attacking) source(creature|myBattlefield) restriction(once):token(435451)
|
||||
text=Enchant player -- Whenever enchanted player is attacked, create a colorless artifact token named Gold. It has "Sacrifice this artifact: Add one mana of any color." Each opponent attacking that player does the same.
|
||||
mana={R}
|
||||
type=Enchantment
|
||||
subtype=Aura Curse
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Curse of Verbosity
|
||||
target=player
|
||||
auto=@combat(attacking) source(creature|myBattlefield) restriction(once):draw:1
|
||||
text=Enchant player -- Whenever enchanted player is attacked, you draw a card. Each opponent attacking that player does the same.
|
||||
mana={2}{U}
|
||||
type=Enchantment
|
||||
subtype=Aura Curse
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Curse of Vitality
|
||||
target=player
|
||||
auto=@combat(attacking) source(creature|myBattlefield) restriction(once):life:2
|
||||
text=Enchant player -- Whenever enchanted player is attacked, you gain 2 life. Each opponent attacking that player does the same.
|
||||
mana={2}{W}
|
||||
type=Enchantment
|
||||
subtype=Aura Curse
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Disrupt Decorum
|
||||
auto=mustattack all(creature|opponentBattlefield) uynt
|
||||
text=Goad all creatures you don't control. (Until your next turn, those creatures attack each combat if able and attack a player other than you if able.)
|
||||
mana={2}{R}{R}
|
||||
type=Sorcery
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Edgar Markov
|
||||
abilities=first strike,haste
|
||||
auto=@movedTo(nother Vampire|mystack):create(vampire:creature vampire:1/1:black)
|
||||
auto=@combat(attacking) source(this):counter(1/1) all(vampire|myBattlefield)
|
||||
text=Eminence — Whenever you cast another Vampire spell, if Edgar Markov is in the command zone or on the battlefield, create a 1/1 black Vampire creature token. -- First strike, haste -- Whenever Edgar Markov attacks, put a +1/+1 counter on each Vampire you control.
|
||||
mana={3}{R}{W}{B}
|
||||
type=Legendary Creature
|
||||
subtype=Vampire Knight
|
||||
power=4
|
||||
toughness=4
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Fractured Identity
|
||||
target=*[-land]
|
||||
auto=moveto(exile)
|
||||
auto=clone
|
||||
text=Exile target nonland permanent. Each player other than its controller creates a token that's a copy of it.
|
||||
mana={3}{W}{U}
|
||||
type=Sorcery
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Galecaster Colossus
|
||||
auto={T(wizard|myBattlefield)}:target(*[-land]|opponentBattlefield) moveTo(ownerHand)
|
||||
text=Tap an untapped Wizard you control: Return target nonland permanent you don't control to its owner's hand.
|
||||
mana={5}{U}{U}
|
||||
type=Creature
|
||||
subtype=Giant Wizard
|
||||
power=5
|
||||
toughness=6
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Hammer of Nazahn
|
||||
auto=may rehook target(creature)
|
||||
auto=@movedTo(equipment|mybattlefield):
|
||||
auto=teach(creature) 2/0
|
||||
auto=teach(creature) indestructible
|
||||
auto={4}:equip
|
||||
text=Whenever Hammer of Nazahn or another Equipment enters the battlefield under your control, you may attach that Equipment to target creature you control. -- Equipped creature gets +2/+0 and has indestructible. -- Equip {4}
|
||||
mana={4}
|
||||
type=Legendary Artifact
|
||||
subtype=Equipment
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Hungry Lynx
|
||||
abilities=deathtouch
|
||||
auto=lord(cat|myBattlefield) protection from(rat)
|
||||
auto=@each my endofturn:create(rat:rat creature:1/1:black:deathtouch) opponent
|
||||
auto=@movedTo(rat|graveyard) from(battlefield):counter(1/1) all(cat|myBattlefield)
|
||||
text=Cats you control have protection from Rats. (They can't be blocked, targeted, or dealt damage by Rats.) -- At the beginning of your end step, target opponent creates a 1/1 black Rat creature token with deathtouch. -- Whenever a Rat dies, put a +1/+1 counter on each Cat you control.
|
||||
mana={1}{G}
|
||||
type=Creature
|
||||
subtype=Cat
|
||||
power=2
|
||||
toughness=2
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Inalla, Archmage Ritualist
|
||||
auto=@movedto(other wizard[-token]|mybattlefield):all(trigger[to]) pay[[{1}]] clone with(unearth,haste)
|
||||
auto={T(wizard|myBattlefield)}{T(wizard|myBattlefield)}{T(wizard|myBattlefield)}{T(wizard|myBattlefield)}{T(wizard|myBattlefield)}:target(player) life:-7
|
||||
text=Eminence — Whenever another nontoken Wizard enters the battlefield under your control, if Inalla, Archmage Ritualist is in the command zone or on the battlefield, you may pay {1}. If you do, create a token that's a copy of that Wizard. The token gains haste. Exile it at the beginning of the next end step. -- Tap five untapped Wizards you control: Target player loses 7 life.
|
||||
mana={2}{U}{B}{R}
|
||||
type=Legendary Creature
|
||||
subtype=Human Wizard
|
||||
power=4
|
||||
toughness=5
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Kess, Dissident Mage
|
||||
abilities=flying
|
||||
auto={0}:target(instant,sorcery|mygraveyard) tempflashback ueot myTurnOnly limit:1
|
||||
text=Flying -- During each of your turns, you may cast an instant or sorcery card from your graveyard. If a card cast this way would be put into your graveyard, exile it instead.
|
||||
mana={1}{U}{B}{R}
|
||||
type=Legendary Creature
|
||||
subtype=Human Wizard
|
||||
power=3
|
||||
toughness=4
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Kindred Boon
|
||||
auto=chooseatype transforms((,newability[{1}{W}:target(creature[chosentype]|myBattlefield) counter(0/0.1.divinity)])) forever chooseend
|
||||
auto=lord(creature[counter{0/0.1.divinity}]) indestructible
|
||||
text=As Kindred Boon enters the battlefield, choose a creature type. -- {1}{W}: Put a divinity counter on target creature you control of the chosen type. -- Each creature you control with a divinity counter on it has indestructible.
|
||||
mana={2}{W}{W}
|
||||
type=Enchantment
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Kindred Charge
|
||||
auto=chooseatype clone with(treason,haste) all(creature[chosentype]|mybattlefield) chooseend
|
||||
text=Choose a creature type. For each creature you control of the chosen type, create a token that's a copy of that creature. Those tokens gain haste. Exile them at the beginning of the next end step.
|
||||
mana={4}{R}{R}
|
||||
type=Sorcery
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Kindred Discovery
|
||||
auto=chooseatype transforms((,newability[@movedTo(creature[chosentype]|mybattlefield)}:draw:1], newability[@combat(attacking) source(creature[chosentype]|mybattlefield)}:draw:1])) forever chooseend
|
||||
text=As Kindred Discovery enters the battlefield, choose a creature type. -- Whenever a creature you control of the chosen type enters the battlefield or attacks, draw a card.
|
||||
mana={3}{U}{U}
|
||||
type=Enchantment
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Kindred Dominance
|
||||
auto=chooseatype destroy all(creature[-chosentype]) chooseend
|
||||
text=Choose a creature type. Destroy all creatures that aren't of the chosen type.
|
||||
mana={5}{B}{B}
|
||||
type=Sorcery
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Licia, Sanguine Tribune
|
||||
abilities=first strike,lifelink
|
||||
anyzone=this(variable{lifegain}=1) changecost(colorless:-1) forcedalive
|
||||
anyzone=this(variable{lifegain}=2) changecost(colorless:-2) forcedalive
|
||||
anyzone=this(variable{lifegain}=3) changecost(colorless:-3) forcedalive
|
||||
anyzone=this(variable{lifegain}=4) changecost(colorless:-4) forcedalive
|
||||
anyzone=this(variable{lifegain}=5) changecost(colorless:-5) forcedalive
|
||||
anyzone=this(variable{lifegain}=6) changecost(colorless:-6) forcedalive
|
||||
anyzone=this(variable{lifegain}=7) changecost(colorless:-7) forcedalive
|
||||
anyzone=this(variable{lifegain}=8) changecost(colorless:-8) forcedalive
|
||||
anyzone=this(variable{lifegain}=9) changecost(colorless:-9) forcedalive
|
||||
auto={L:5}:counter(1/1,3) myTurnOnly limit:1
|
||||
text=This spell costs {1} less to cast for each 1 life you gained this turn. -- First strike, lifelink -- Pay 5 life: Put three +1/+1 counters on Licia, Sanguine Tribune. Activate this ability only during your turn and only once each turn.
|
||||
mana={5}{R}{W}{B}
|
||||
type=Legendary Creature
|
||||
subtype=Vampire Soldier
|
||||
power=4
|
||||
toughness=4
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Mathas, Fiend Seeker
|
||||
abilities=menace
|
||||
auto=@each my endofturn:target(creature|opponentBattlefield) (transforms((,newability[counter(0/0.1.Bounty)], newability[@movedto(this|mygraveyard):draw:1 opponent && life:2 opponent)]))
|
||||
text=Menace -- At the beginning of your end step, put a bounty counter on target creature an opponent controls. For as long as that creature has a bounty counter on it, it has "When this creature dies, each opponent draws a card and gains 2 life."
|
||||
mana={R}{W}{B}
|
||||
type=Legendary Creature
|
||||
subtype=Vampire
|
||||
power=3
|
||||
toughness=3
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Mirri, Weatherlight Duelist
|
||||
abilities=first strike
|
||||
auto=aslongas(this[tapped]) lord(creature[-attacking]|opponentbattlefield) cantattack
|
||||
auto=aslongas(this[tapped]) lord(creature[-attacking]|opponentbattlefield) cantpwattack
|
||||
auto=@combat(attacking) source(this):aslongas(creature[blocking]|opponentBattlefield) lord(creature[-blocking]|opponentbattlefield) cantblock
|
||||
text=First strike -- Whenever Mirri, Weatherlight Duelist attacks, each opponent can't block with more than one creature this combat. -- As long as Mirri, Weatherlight Duelist is tapped, no more than one creature can attack you each combat.
|
||||
mana={1}{G}{W}
|
||||
type=Legendary Creature
|
||||
subtype=Cat Warrior
|
||||
power=3
|
||||
toughness=2
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Nazahn, Revered Bladesmith
|
||||
auto=choice moveTo(myHand) target(equipment[-Hammer of Nazahn]|myLibrary)
|
||||
auto=choice moveTo(myBattlefield) target(Hammer of Nazahn|myLibrary)
|
||||
auto=@combat(attacking) source(creature[geared]|mybattlefield):may tap target(creature|opponentBattlefield)
|
||||
text=When Nazahn, Revered Bladesmith enters the battlefield, search your library for an Equipment card and reveal it. If you reveal a card named Hammer of Nazahn this way, put it onto the battlefield. Otherwise, put that card into your hand. Then shuffle your library. -- Whenever an equipped creature you control attacks, you may tap target creature defending player controls.
|
||||
mana={4}{G}{W}
|
||||
type=Legendary Creature
|
||||
subtype=Cat Artificer
|
||||
power=5
|
||||
toughness=4
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Patron of the Vein
|
||||
abilities=flying
|
||||
auto=destroy target(creature|opponentBattlefield)
|
||||
auto=@movedTo(creature|graveyard) from(opponentbattlefield):all(trigger[from]) moveto(exile) && counter(1/1)all(vampire|myBattlefield)
|
||||
text=Flying -- When Patron of the Vein enters the battlefield, destroy target creature an opponent controls. -- Whenever a creature an opponent controls dies, exile it and put a +1/+1 counter on each Vampire you control.
|
||||
mana={4}{B}{B}
|
||||
type=Creature
|
||||
subtype=Vampire Shaman
|
||||
power=4
|
||||
toughness=4
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Qasali Slingers
|
||||
abilities=reach
|
||||
auto=may destroy target(artifact,enchantment)
|
||||
auto=@movedTo(cat|myBattlefield):may destroy target(artifact,enchantment)
|
||||
text=Reach -- Whenever Qasali Slingers or another Cat enters the battlefield under your control, you may destroy target artifact or enchantment.
|
||||
mana={4}{G}
|
||||
type=Creature
|
||||
subtype=Cat Warrior
|
||||
power=3
|
||||
toughness=5
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Ramos, Dragon Engine
|
||||
abilities=flying
|
||||
auto=@movedTo(*[white]|mystack):counter(1/1)
|
||||
auto=@movedTo(*[blue]|mystack):counter(1/1)
|
||||
auto=@movedTo(*[black]|mystack):counter(1/1)
|
||||
auto=@movedTo(*[red]|mystack):counter(1/1)
|
||||
auto=@movedTo(*[green]|mystack):counter(1/1)
|
||||
auto={C(1/1,-5)}:Add {W}{W}{U}{U}{B}{B}{R}{R}{G}{G} limit:1
|
||||
text=Flying -- Whenever you cast a spell, put a +1/+1 counter on Ramos, Dragon Engine for each of that spell's colors. -- Remove five +1/+1 counters from Ramos: Add {W}{W}{U}{U}{B}{B}{R}{R}{G}{G}. Activate this ability only once each turn.
|
||||
mana={6}
|
||||
type=Legendary Artifact Creature
|
||||
subtype=Dragon
|
||||
power=4
|
||||
toughness=4
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Scalelord Reckoner
|
||||
abilities=flying
|
||||
auto=@targeted(dragon|mybattlefield) from(*|opponentbattlefield,opponenthand,opponentstack,opponentgraveyard,opponentexile,opponentlibrary):destroy target(*[-land]|opponentBattlefield)
|
||||
text=Flying -- Whenever a Dragon you control becomes the target of a spell or ability an opponent controls, destroy target nonland permanent that player controls.
|
||||
mana={3}{W}{W}
|
||||
type=Creature
|
||||
subtype=Dragon
|
||||
power=4
|
||||
toughness=4
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Territorial Hellkite
|
||||
abilities=flying,haste
|
||||
auto=@combat(attacking) source(this):frozen
|
||||
text=Flying, haste -- At the beginning of combat on your turn, choose an opponent at random that Territorial Hellkite didn't attack during your last combat. Territorial Hellkite attacks that player this combat if able. If you can't choose an opponent this way, tap Territorial Hellkite.
|
||||
mana={2}{R}{R}
|
||||
type=Creature
|
||||
subtype=Dragon
|
||||
power=6
|
||||
toughness=5
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=The Ur-Dragon
|
||||
abilities=flying
|
||||
auto=lord(dragon|mycastingzone) altercost(colorless, -1)
|
||||
auto=@combat(attacking) source(dragon|myBattlefield) restriction(once):may moveTo(myBattlefield) target(*[-instant;-sorcery]|myHand)
|
||||
auto=@combat(attacking) source(dragon|myBattlefield):draw:1
|
||||
text=Eminence — As long as The Ur-Dragon is in the command zone or on the battlefield, other Dragon spells you cast cost {1} less to cast. -- Flying -- Whenever one or more Dragons you control attack, draw that many cards, then you may put a permanent card from your hand onto the battlefield.
|
||||
mana={4}{W}{U}{B}{R}{G}
|
||||
type=Legendary Creature
|
||||
subtype=Dragon Avatar
|
||||
power=10
|
||||
toughness=10
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Traverse the Outlands
|
||||
auto=moveTo(myBattlefield) and!(tap(noevent))! target(<upto:power:highest:*:mybattlefield>land[basic]|myLibrary)
|
||||
text=Search your library for up to X basic land cards, where X is the greatest power among creatures you control. Put those cards onto the battlefield tapped, then shuffle your library.
|
||||
mana={4}{G}
|
||||
type=Sorcery
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Wasitora, Nekoru Queen
|
||||
abilities=flying,trample
|
||||
auto=@combatdamaged(player) from(this):if type(creature|opponentBattlefield)~morethan~0 then ability$!sacrifice notatarget(creature|mybattlefield)!$ opponent else create(cat dragon:creature cat dragon:3/3:black:red:green:flying)
|
||||
text=Flying, trample -- Whenever Wasitora, Nekoru Queen deals combat damage to a player, that player sacrifices a creature. If the player can't, you create a 3/3 black, red, and green Cat Dragon creature token with flying.
|
||||
mana={2}{B}{R}{G}
|
||||
type=Legendary Creature
|
||||
subtype=Cat Dragon
|
||||
power=5
|
||||
toughness=4
|
||||
[/card]
|
||||
331
projects/mtg/bin/Res/sets/primitives/C18.txt
Normal file
331
projects/mtg/bin/Res/sets/primitives/C18.txt
Normal file
@@ -0,0 +1,331 @@
|
||||
grade=borderline
|
||||
[card]
|
||||
name=Empyrial Storm
|
||||
auto=create(Angel:creature Angel:4/4:white:flying)
|
||||
text=When you cast this spell, copy it for each time you've cast your commander from the command zone this game. -- Create a 4/4 white Angel creature token with flying.
|
||||
mana={4}{W}{W}
|
||||
type=Sorcery
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Heavenly Blademaster
|
||||
abilities=flying, double strike
|
||||
auto=may target(<anyamount>aura|battlefield) newhook
|
||||
auto=may target(<anyamount>equipment|battlefield) newhook
|
||||
auto=thisforeach(aura) lord(other creature|myBattlefield) 1/1
|
||||
auto=thisforeach(gear) lord(other creature|myBattlefield) 1/1
|
||||
auto=lord(other creature|myBattlefield) +1/+1 for each aura and equipment attached to heavenly blademaster
|
||||
text=Flying, double strike -- When Heavenly Blademaster enters the battlefield, you may attach any number of Auras and Equipment you control to it. -- Other creatures you control get +1/+1 for each Aura and Equipment attached to Heavenly Blademaster.
|
||||
mana={5}{W}
|
||||
type=Creature
|
||||
subtype=Angel
|
||||
power=3
|
||||
toughness=6
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Loyal Unicorn
|
||||
abilities=vigilance
|
||||
text=Vigilance -- Lieutenant — At the beginning of combat on your turn, if you control your commander, prevent all combat damage that would be dealt to creatures you control this turn. Other creatures you control gain vigilance until end of turn.
|
||||
mana={3}{W}
|
||||
type=Creature
|
||||
subtype=Unicorn
|
||||
power=3
|
||||
toughness=4
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Magus of the Balance
|
||||
auto={4}{W}{T}{S}:auto=if type(land|mybattlefield)~morethan~type(land|opponentbattlefield) then ability$! sacrifice notatarget(<type:land:mybattlefieldminustype:land:opponentbattlefieldminusend>land|mybattlefield) !$ controller && if type(land|opponentbattlefield)~morethan~type(land|mybattlefield) then ability$! sacrifice notatarget(<type:land:mybattlefieldminustype:land:opponentbattlefieldminusend>land|mybattlefield) !$ opponent && if type(creature|mybattlefield)~morethan~type(creature|opponentbattlefield) then ability$! sacrifice notatarget(<type:creature:mybattlefieldminustype:creature:opponentbattlefieldminusend>creature|mybattlefield) !$ controller && if type(creature|opponentbattlefield)~morethan~type(creature|mybattlefield) then ability$! sacrifice notatarget(<type:creature:mybattlefieldminustype:creature:opponentbattlefieldminusend>creature|mybattlefield) !$ opponent && if type(*|myhand)~morethan~type(*|opponenthand) then ability$! reject notatarget(<type:*:myhandminustype:*:opponenthandminusend>*|myhand) !$ controller && if type(*|opponenthand)~morethan~type(*|myhand) then ability$! reject notatarget(<type:*:myhandminustype:*:opponenthandminusend>*|myhand) !$ opponent
|
||||
text={4}{W}, {T}, Sacrifice Magus of the Balance: Each player chooses a number of lands they control equal to the number of lands controlled by the player who controls the fewest, then sacrifices the rest. Players discard cards and sacrifice creatures the same way.
|
||||
mana={1}{W}
|
||||
type=Creature
|
||||
subtype=Human Wizard
|
||||
power=2
|
||||
toughness=2
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Echo Storm
|
||||
target=artifact
|
||||
auto=clone
|
||||
text=When you cast this spell, copy it for each time you've cast your commander from the command zone this game. You may choose new targets for the copies. -- Create a token that's a copy of target artifact.
|
||||
mana={3}{U}{U}
|
||||
type=Sorcery
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Ever-Watching Threshold
|
||||
auto=auto=@each blockers restriction{type(creature[attacking]|opponentbattlefield)~morethan~0} draw:1
|
||||
text=Whenever an opponent attacks you and/or a planeswalker you control with one or more creatures, draw a card.
|
||||
mana={2}{U}
|
||||
type=Enchantment
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Loyal Drake
|
||||
abilities=flying
|
||||
text=Flying -- Lieutenant — At the beginning of combat on your turn, if you control your commander, draw a card.
|
||||
mana={2}{U}
|
||||
type=Creature
|
||||
subtype=Drake
|
||||
power=2
|
||||
toughness=2
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Octopus Umbra
|
||||
abilities=totemarmor
|
||||
target=creature
|
||||
auto=teach(creature) transforms((,newability[@combat(attacking) source(this):may tap target(creature)]))
|
||||
auto=teach(creature) becomes(,8/8)
|
||||
text=Enchant creature -- Enchanted creature has base power and toughness 8/8 and has "Whenever this creature attacks, you may tap target creature with power 8 or less." -- Totem armor (If enchanted creature would be destroyed, instead remove all damage from it and destroy this Aura.)
|
||||
mana={3}{U}{U}
|
||||
type=Enchantment
|
||||
subtype=Aura
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Bloodtracker
|
||||
abilities=flying
|
||||
auto={B}{L:2}:counter(1/1)
|
||||
auto=@movedTo(this|nonbattlezone) from(battlefield):thisforeach(counter{1/1,1}) draw:1 controller
|
||||
text=Flying -- {B}, Pay 2 life: Put a +1/+1 counter on Bloodtracker. -- When Bloodtracker leaves the battlefield, draw a card for each +1/+1 counter on it.
|
||||
mana={3}{B}
|
||||
type=Creature
|
||||
subtype=Vampire Wizard
|
||||
power=2
|
||||
toughness=2
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Loyal Subordinate
|
||||
abilities=menace
|
||||
text=Menace -- Lieutenant — At the beginning of combat on your turn, if you control your commander, each opponent loses 3 life.
|
||||
mana={2}{B}
|
||||
type=Creature
|
||||
subtype=Zombie
|
||||
power=3
|
||||
toughness=1
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Night Incarnate
|
||||
abilities=deathtouch
|
||||
other={3}{B} name(Evoke)
|
||||
auto=@movedTo(this|nonbattlezone) from(battlefield):all(creature) -3/-3 ueot
|
||||
auto=alternative sacrifice
|
||||
text=Deathtouch -- When Night Incarnate leaves the battlefield, all creatures get -3/-3 until end of turn. -- Evoke {3}{B} (You may cast this spell for its evoke cost. If you do, it's sacrificed when it enters the battlefield.)
|
||||
mana={4}{B}
|
||||
type=Creature
|
||||
subtype=Elemental
|
||||
power=3
|
||||
toughness=4
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Fury Storm
|
||||
target=*[instant;sorcery]|stack
|
||||
auto=castcard(copied noevent)
|
||||
text=When you cast this spell, copy it for each time you've cast your commander from the command zone this game. You may choose new targets for the copies. -- Copy target instant or sorcery spell. You may choose new targets for the copy.
|
||||
mana={2}{R}{R}
|
||||
type=Instant
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Loyal Apprentice
|
||||
abilities=flying, haste
|
||||
text=Haste -- Lieutenant — At the beginning of combat on your turn, if you control your commander, create a 1/1 colorless Thopter artifact creature token with flying. That token gains haste until end of turn.
|
||||
mana={1}{R}
|
||||
type=Creature
|
||||
subtype=Human Artificer
|
||||
power=2
|
||||
toughness=1
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Nesting Dragon
|
||||
abilities=flying
|
||||
auto=@movedTo(land|myBattlefield):token(dragon egg)
|
||||
text=Flying -- Landfall — Whenever a land enters the battlefield under your control, create a 0/2 red Dragon Egg creature token with defender and "When this creature dies, create a 2/2 red Dragon creature token with flying and '{R}: This creature gets +1/+0 until end of turn.'"
|
||||
mana={3}{R}{R}
|
||||
type=Creature
|
||||
subtype=Dragon
|
||||
power=5
|
||||
toughness=4
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Varchild, Betrayer of Kjeldor
|
||||
auto=@combatdamaged(player) from(this):create(Survivor:Creature Survivor:1/1:red)*thatmuch opponent
|
||||
auto=lord(survivor|opponentBattlefield) cantblock
|
||||
auto=lord(survivor|opponentBattlefield) cantattack
|
||||
auto=@movedTo(this|nonbattlezone) from(mybattlefield):moveTo(myBattlefield) all(survivor)
|
||||
text=Whenever Varchild, Betrayer of Kjeldor deals combat damage to a player, that player creates that many 1/1 red Survivor creature tokens. -- Survivors your opponents control can't block, and they can't attack you or a planeswalker you control. -- When Varchild leaves the battlefield, gain control of all Survivors.
|
||||
mana={2}{R}
|
||||
type=Legendary Creature
|
||||
subtype=Human Knight
|
||||
power=3
|
||||
toughness=3
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Crash of Rhino Beetles
|
||||
abilities=trample
|
||||
auto=aslongas(land|myBattlefield)~morethan~9 10/10
|
||||
text=Trample -- Crash of Rhino Beetles gets +10/+10 as long as you control ten or more lands.
|
||||
mana={4}{G}
|
||||
type=Creature
|
||||
subtype=Insect
|
||||
power=5
|
||||
toughness=5
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Loyal Guardian
|
||||
abilities=trample
|
||||
text=Trample -- Lieutenant — At the beginning of combat on your turn, if you control your commander, put a +1/+1 counter on each creature you control.
|
||||
mana={4}{G}
|
||||
type=Creature
|
||||
subtype=Rhino
|
||||
power=4
|
||||
toughness=4
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Turntimber Sower
|
||||
auto=@@movedto(land|mygraveyard):create(plant:creature plant:0/1:green:)
|
||||
auto={G}{S(creature|myBattlefield)}{S(creature|myBattlefield)}{S(creature|myBattlefield)}:target(land|mygraveyard) moveto(ownerhand)
|
||||
text=Whenever one or more land cards are put into your graveyard from anywhere, create a 0/1 green Plant creature token. -- {G}, Sacrifice three creatures: Return target land card from your graveyard to your hand.
|
||||
mana={2}{G}
|
||||
type=Creature
|
||||
subtype=Elf Druid
|
||||
power=3
|
||||
toughness=3
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Whiptongue Hydra
|
||||
abilities=reach
|
||||
auto=@movedto(creature[flying]|graveyard):counter(1/1) oneshot
|
||||
auto=destroy all(creature[flying])
|
||||
text=Reach -- When Whiptongue Hydra enters the battlefield, destroy all creatures with flying. Put a +1/+1 counter on Whiptongue Hydra for each creature destroyed this way.
|
||||
mana={5}{G}
|
||||
type=Creature
|
||||
subtype=Lizard Hydra
|
||||
power=4
|
||||
toughness=4
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Arixmethes, Slumbering Isle
|
||||
auto=tap(noevent)
|
||||
auto=counter(0/0,5,Slumber)
|
||||
auto=this(counter{0/0.1.Slumber}>=1) transforms((removetypes,newability[becomes(Legendary Land)]))
|
||||
auto=this(counter{0/0.1.Slumber}<1) transforms((Legendary Creature))
|
||||
auto=@movedTo(*|mystack):may counter(0/0,-1,Slumber)
|
||||
auto={T}:Add{G}{U}
|
||||
text=Arixmethes, Slumbering Isle enters the battlefield tapped with five slumber counters on it. -- As long as Arixmethes has a slumber counter on it, it's a land. (It's not a creature.) -- Whenever you cast a spell, you may remove a slumber counter from Arixmethes. -- {T}: Add {G}{U}.
|
||||
mana={2}{G}{U}
|
||||
type=Legendary Creature
|
||||
subtype=Kraken
|
||||
power=12
|
||||
toughness=12
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Kestia, the Cultivator
|
||||
bestow={3}{G}{W}{U}
|
||||
auto=bestow bstw
|
||||
auto=bestow teach(creature) 4/4
|
||||
auto=@combat(attacking) source(creature[enchanted]|myBattlefield):draw:1
|
||||
auto=@combat(attacking) source(creature[enchantment]|myBattlefield):draw:1
|
||||
text=Bestow {3}{G}{W}{U} (If you cast this card for its bestow cost, it's an Aura spell with enchant creature. It becomes a creature again if it's not attached to a creature.) -- Enchanted creature gets +4/+4. -- Whenever an enchanted creature or enchantment creature you control attacks, draw a card.
|
||||
mana={1}{G}{W}{U}
|
||||
type=Legendary Enchantment Creature
|
||||
subtype=Nymph
|
||||
power=4
|
||||
toughness=4
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Thantis, the Warweaver
|
||||
abilities=vigilance, reach
|
||||
auto=lord(creature) mustattack
|
||||
auto=@combat(attacking) source(creature|opponentBattlefield):counter(1/1)
|
||||
text=Vigilance, reach -- All creatures attack each combat if able. -- Whenever a creature attacks you or a planeswalker you control, put a +1/+1 counter on Thantis, the Warweaver.
|
||||
mana={3}{B}{R}{G}
|
||||
type=Legendary Creature
|
||||
subtype=Spider
|
||||
power=5
|
||||
toughness=5
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Tuvasa the Sunlit
|
||||
auto=foreach(enchantment|mybattlefield) 1/1
|
||||
auto=@movedTo(*[enchantment]|mystack) turnlimited:draw:1
|
||||
text=Tuvasa the Sunlit gets +1/+1 for each enchantment you control. -- Whenever you cast your first enchantment spell each turn, draw a card.
|
||||
mana={G}{W}{U}
|
||||
type=Legendary Creature
|
||||
subtype=Merfolk Shaman
|
||||
power=1
|
||||
toughness=1
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Varina, Lich Queen
|
||||
auto=@each my blockers restriction{type(Zombie[attacking]|myBattlefield)~morethan~0}:draw:type:zombie[attacking]:myBattlefield && transforms((,newability[target(<type:zombie[attacking]:myBattlefield>*|myhand) reject])) forever
|
||||
auto=@each my blockers restriction{type(Zombie[attacking]|myBattlefield)~morethan~0}:life:type:zombie[attacking]:myBattlefield
|
||||
auto={2}{E(*|mygraveyard)}{E(*|mygraveyard)}:create(black zombie:creature black zombie:2/2) and!( tap(noevent) )!
|
||||
text=Whenever you attack with one or more Zombies, draw that many cards, then discard that many cards. You gain that much life. -- {2}, Exile two cards from your graveyard: Create a tapped 2/2 black Zombie creature token.
|
||||
mana={1}{W}{U}{B}
|
||||
type=Legendary Creature
|
||||
subtype=Zombie Wizard
|
||||
power=4
|
||||
toughness=4
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Windgrace's Judgment
|
||||
target=*[-land]|opponentBattlefield
|
||||
auto=destroy
|
||||
text=For any number of opponents, destroy target nonland permanent that player controls.
|
||||
mana={3}{B}{G}
|
||||
type=Instant
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Ancient Stone Idol
|
||||
abilities=flash, trample
|
||||
anyzone=foreach(creature[attacking]|battlefield) changecost(colorless:-1) forcedalive
|
||||
auto=@movedTo(this|graveyard) from(battlefield):create(construct artifact:creature construct artifact:6/12:colorless:trample)
|
||||
text=Flash -- This spell costs {1} less to cast for each attacking creature. -- Trample -- When Ancient Stone Idol dies, create a 6/12 colorless Construct artifact creature token with trample.
|
||||
mana={10}
|
||||
type=Artifact Creature
|
||||
subtype=Golem
|
||||
power=12
|
||||
toughness=12
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Geode Golem
|
||||
abilities=trample
|
||||
text=Trample -- Whenever Geode Golem deals combat damage to a player, you may cast your commander from the command zone without paying its mana cost. (You still pay any additional costs.)
|
||||
mana={5}
|
||||
type=Artifact Creature
|
||||
subtype=Golem
|
||||
power=5
|
||||
toughness=3
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Retrofitter Foundry
|
||||
auto={3}:untap
|
||||
auto={2}{T}:create(servo artifact:creature servo artifact:1/1:colorless:)
|
||||
auto={1}{T}[S(Servo|myBattlefield)}:create(thopter artifact:creature thopter artifact:1/1:colorless:flying)
|
||||
auto={T}[S(Thopter|myBattlefield)}:create(construct artifact:creature construct artifact:4/4:colorless:)
|
||||
text={3}: Untap Retrofitter Foundry. -- {2}, {T}: Create a 1/1 colorless Servo artifact creature token. -- {1}, {T}, Sacrifice a Servo: Create a 1/1 colorless Thopter artifact creature token with flying. -- {T}, Sacrifice a Thopter: Create a 4/4 colorless Construct artifact creature token.
|
||||
mana={1}
|
||||
type=Artifact
|
||||
[/card]
|
||||
219
projects/mtg/bin/Res/sets/primitives/CN2.txt
Normal file
219
projects/mtg/bin/Res/sets/primitives/CN2.txt
Normal file
@@ -0,0 +1,219 @@
|
||||
grade=borderline
|
||||
[card]
|
||||
name=Custodi Soulcaller
|
||||
auto=@combat(attacking) source(this):1/1 ueot
|
||||
auto=@combat(attacking) source(this):moveto(mybattlefield) target(creature[manacost<=1]|mygraveyard)
|
||||
text=Melee (Whenever this creature attacks, it gets +1/+1 until end of turn for each opponent you attacked with a creature this combat.) -- Whenever Custodi Soulcaller attacks, return target creature card with converted mana cost X or less from your graveyard to the battlefield, where X is the number of players you attacked with a creature this combat.
|
||||
mana={1}{W}{W}
|
||||
type=Creature
|
||||
subtype=Human Cleric
|
||||
power=1
|
||||
toughness=2
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Recruiter of the Guard
|
||||
auto=may moveto(myhand) target(creature[toughness<=2]|mylibrary)
|
||||
text=When Recruiter of the Guard enters the battlefield, you may search your library for a creature card with toughness 2 or less, reveal it, put it into your hand, then shuffle your library.
|
||||
mana={2}{W}
|
||||
type=Creature
|
||||
subtype=Human Soldier
|
||||
power=1
|
||||
toughness=1
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Spectral Grasp
|
||||
target=creature
|
||||
auto=cantattack
|
||||
auto=cantpwattack
|
||||
auto=cantblock
|
||||
text=Enchant creature -- Enchanted creature can't attack you or a planeswalker you control. -- Enchanted creature can't block creatures you control.
|
||||
mana={1}{W}
|
||||
type=Enchantment
|
||||
subtype=Aura
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Wings of the Guard
|
||||
abilities=flying
|
||||
auto=@combat(attacking) source(this):1/1 ueot
|
||||
text=Flying -- Melee (Whenever this creature attacks, it gets +1/+1 until end of turn for each opponent you attacked with a creature this combat.)
|
||||
mana={1}{W}
|
||||
type=Creature
|
||||
subtype=Bird
|
||||
power=1
|
||||
toughness=1
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Coveted Peacock
|
||||
abilities=flyin
|
||||
auto=@combat(attacking) source(this):may target(creature|opponentBattlefield) mustattack uynt
|
||||
text=Flying -- Whenever Coveted Peacock attacks, you may goad target creature defending player controls. (Until your next turn, that creature attacks each combat if able and attacks a player other than you if able.)
|
||||
mana={3}{U}{U}
|
||||
type=Creature
|
||||
subtype=Bird
|
||||
power=3
|
||||
toughness=4
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Jeering Homunculus
|
||||
auto=may target(creature|opponentBattlefield) mustattack uynt
|
||||
text=When Jeering Homunculus enters the battlefield, you may goad target creature. (Until your next turn, that creature attacks each combat if able and attacks a player other than you if able.)
|
||||
mana={1}{U}
|
||||
type=Creature
|
||||
subtype=Homunculus
|
||||
power=0
|
||||
toughness=4
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Skittering Crustacean
|
||||
auto=@this(cantargetcard(*[-monstrous]) {6}{U}:becomes(monstrous) forever && counter(1/1, 4) && transforms((,newAbility[opponentshroud])) forever
|
||||
text={6}{U}: Monstrosity 4. (If this creature isn't monstrous, put four +1/+1 counters on it and it becomes monstrous.) -- As long as Skittering Crustacean is monstrous, it has hexproof. (It can't be the target of spells or abilities your opponents control.)
|
||||
mana={2}{U}
|
||||
type=Creature
|
||||
subtype=Crab
|
||||
power=2
|
||||
toughness=3
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Stunt Double
|
||||
abilities=flash
|
||||
auto=may copy NotATarget(creature)
|
||||
text=Flash -- You may have Stunt Double enter the battlefield as a copy of any creature on the battlefield.
|
||||
mana={3}{U}
|
||||
type=Creature
|
||||
subtype=Shapeshifter
|
||||
power=0
|
||||
toughness=0
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Sinuous Vermin
|
||||
auto=@this(cantargetcard(*[-monstrous]) {3}{B}{B}:becomes(monstrous) forever && counter(1/1, 3) && transforms((,newability[menace])) forever
|
||||
text={3}{B}{B}: Monstrosity 3. (If this creature isn't monstrous, put three +1/+1 counters on it and it becomes monstrous.) -- As long as Sinuous Vermin is monstrous, it has menace. (It can't be blocked except by two or more creatures.)
|
||||
mana={1}{B}
|
||||
type=Creature
|
||||
subtype=Rat Horror
|
||||
power=2
|
||||
toughness=2
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Deputized Protester
|
||||
abilities=menace
|
||||
auto=@combat(attacking) source(this):1/1 ueot
|
||||
text=Menace (This creature can't be blocked except by two or more creatures.) -- Melee (Whenever this creature attacks, it gets +1/+1 until end of turn for each opponent you attacked with a creature this combat.)
|
||||
mana={2}{R}
|
||||
type=Creature
|
||||
subtype=Human Warrior
|
||||
power=2
|
||||
toughness=1
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Grenzo's Ruffians
|
||||
auto=@combat(attacking) source(this):1/1 ueot
|
||||
text=Melee (Whenever this creature attacks, it gets +1/+1 until end of turn for each opponent you attacked with a creature this combat.) -- Whenever Grenzo's Ruffians deals combat damage to an opponent, it deals that much damage to each other opponent.
|
||||
mana={2}{R}{R}
|
||||
type=Creature
|
||||
subtype=Goblin
|
||||
power=2
|
||||
toughness=2
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Subterranean Tremors
|
||||
auto=damage:X all(creature[-flying])
|
||||
auto=this(X>=4) destroy all(artifact)
|
||||
auto=this(X>=8) create(Lizard:Creature Lizard:8/8:red)
|
||||
text=Subterranean Tremors deals X damage to each creature without flying. If X is 4 or more, destroy all artifacts. If X is 8 or more, put an 8/8 red Lizard creature token onto the battlefield.
|
||||
mana={X}{R}
|
||||
type=Sorcery
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Domesticated Hydra
|
||||
abilities=trample
|
||||
auto=@this(cantargetcard(*[-monstrous]) {X}{G}{G}{G}:becomes(monstrous) forever && counter(1/1, X) && transforms((,newAbility[trample])) forever
|
||||
text={X}{G}{G}{G}: Monstrosity X. (If this creature isn't monstrous, put X +1/+1 counters on it and it becomes monstrous.) -- As long as Domesticated Hydra is monstrous, it has trample.
|
||||
mana={2}{G}{G}
|
||||
type=Creature
|
||||
subtype=Hydra
|
||||
power=3
|
||||
toughness=3
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Fang of the Pack
|
||||
auto=@combat(attacking) source(this):1/1 ueot
|
||||
text=Melee (Whenever this creature attacks, it gets +1/+1 until end of turn for each opponent you attacked with a creature this combat.) -- At the beginning of combat on your turn, another target creature you control gains melee until end of turn. (If a creature has multiple instances of melee, each triggers separately.)
|
||||
mana={5}{G}
|
||||
type=Creature
|
||||
subtype=Wolf
|
||||
power=5
|
||||
toughness=3
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Menagerie Liberator
|
||||
abilities=trample
|
||||
auto=@combat(attacking) source(this):1/1 ueot
|
||||
text=Trample -- Melee (Whenever this creature attacks, it gets +1/+1 until end of turn for each opponent you attacked with a creature this combat.)
|
||||
mana={3}{G}
|
||||
type=Creature
|
||||
subtype=Human Warrior
|
||||
power=3
|
||||
toughness=2
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Splitting Slime
|
||||
auto=@this(cantargetcard(*[-monstrous]) {4}{G}{G}:becomes(monstrous) forever && counter(1/1, 3) && clone(this)
|
||||
text={4}{G}{G}: Monstrosity 3. (If this creature isn't monstrous, put three +1/+1 counters on it and it becomes monstrous.) -- When Splitting Slime becomes monstrous, put a token onto the battlefield that's a copy of Splitting Slime. (The token has no counters and isn't monstrous.)
|
||||
mana={3}{G}{G}
|
||||
type=Creature
|
||||
subtype=Ooze
|
||||
power=3
|
||||
toughness=3
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Adriana, Captain of the Guard
|
||||
auto=@combat(attacking) source(this):1/1 ueot
|
||||
auto=@combat(attacking) source(this):all(other creature[attacking]) 1/1 ueot
|
||||
text=Melee (Whenever this creature attacks, it gets +1/+1 until end of turn for each opponent you attacked with a creature this combat.) -- Other creatures you control have melee. (If a creature has multiple instances of melee, each triggers separately.)
|
||||
mana={3}{R}{W}
|
||||
type=Legendary Creature
|
||||
subtype=Human Knight
|
||||
power=4
|
||||
toughness=4
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Daretti, Ingenious Iconoclast
|
||||
auto=counter(0/0,3,loyalty)
|
||||
auto={C(0/0,1,Loyalty)}:token(Construct,artifact creature construct,1/1,defender)
|
||||
auto={C(0/0,-1,Loyalty)}{s(artifact|mybattlefield)}:destroy target(artifact,creature)
|
||||
auto={C(0/0,-6,Loyalty)}:clone(NotATarget(artifact|graveyard)) && clone && clone
|
||||
text=+1: Put a 1/1 colorless Construct artifact creature token with defender onto the battlefield. -- -1: You may sacrifice an artifact. If you do, destroy target artifact or creature. -- -6: Choose target artifact card in a graveyard or artifact on the battlefield. Put three tokens that are copies of it onto the battlefield.
|
||||
mana={1}{B}{R}
|
||||
type=Planeswalker
|
||||
subtype=Daretti
|
||||
[/card]
|
||||
|
||||
[card]
|
||||
name=Kaya, Ghost Assassin
|
||||
auto=counter(0/0,5,loyalty)
|
||||
auto={C(0/0,0,Loyalty)}:blink target(creature,this) uynt && life:-2 controller
|
||||
auto={C(0/0,-1,Loyalty)}:life:2 controller && life:-2 opponent
|
||||
auto={C(0/0,-2,Loyalty)}:ability$!name(discard) reject notatarget(*|myhand)!$ opponent && draw:1
|
||||
text=0: Exile Kaya, Ghost Assassin or up to one target creature. Return that card to the battlefield under its owner's control at the beginning of your next upkeep. You lose 2 life. -- -1: Each opponent loses 2 life and you gain 2 life. -- -2: Each opponent discards a card and you draw a card.
|
||||
mana={2}{W}{B}
|
||||
type=Planeswalker
|
||||
subtype=Kaya
|
||||
[/card]
|
||||
2335
projects/mtg/bin/Res/sets/primitives/DOM.txt
Normal file
2335
projects/mtg/bin/Res/sets/primitives/DOM.txt
Normal file
File diff suppressed because it is too large
Load Diff
2031
projects/mtg/bin/Res/sets/primitives/GRN.txt
Normal file
2031
projects/mtg/bin/Res/sets/primitives/GRN.txt
Normal file
File diff suppressed because it is too large
Load Diff
2067
projects/mtg/bin/Res/sets/primitives/HOU.txt
Normal file
2067
projects/mtg/bin/Res/sets/primitives/HOU.txt
Normal file
File diff suppressed because it is too large
Load Diff
1639
projects/mtg/bin/Res/sets/primitives/M19.txt
Normal file
1639
projects/mtg/bin/Res/sets/primitives/M19.txt
Normal file
File diff suppressed because it is too large
Load Diff
1249
projects/mtg/bin/Res/sets/primitives/RIX.txt
Normal file
1249
projects/mtg/bin/Res/sets/primitives/RIX.txt
Normal file
File diff suppressed because it is too large
Load Diff
2142
projects/mtg/bin/Res/sets/primitives/RNA.txt
Normal file
2142
projects/mtg/bin/Res/sets/primitives/RNA.txt
Normal file
File diff suppressed because it is too large
Load Diff
2668
projects/mtg/bin/Res/sets/primitives/WAR.txt
Normal file
2668
projects/mtg/bin/Res/sets/primitives/WAR.txt
Normal file
File diff suppressed because it is too large
Load Diff
2694
projects/mtg/bin/Res/sets/primitives/XLN.txt
Normal file
2694
projects/mtg/bin/Res/sets/primitives/XLN.txt
Normal file
File diff suppressed because it is too large
Load Diff
@@ -15,3 +15,26 @@
|
||||
# Fabricate
|
||||
#AUTO_DEFINE _FABRICATE_($c) transforms((,newability[choice counter(1/1.$c)],newability[choice create(Servo:Artifact Creature Servo:1/1)*$c])) ueot
|
||||
|
||||
# Dies, Evergreen
|
||||
#AUTO_DEFINE _DIES_ @movedTo(this|mygraveyard) from(battlefield):
|
||||
|
||||
# Scry, Evergreen
|
||||
#AUTO_DEFINE _SCRY_($c) scry:$c scrycore delayed dontshow donothing scrycoreend scryend
|
||||
|
||||
# Amass, Set WAR
|
||||
#AUTO_DEFINE _AMASS_($c) if type(army|mybattlefield)~morethan~0 then counter(1/1,$c) notATarget(army|myBattlefield) else create(Zombie Army:creature Zombie Army:0/0:black) and!(counter(1/1,$c) notATarget(army|myBattlefield))!
|
||||
|
||||
# Ascend, Set XLN
|
||||
#AUTO_DEFINE _ASCEND_ if type(*[city's_blessing]|mybattlefield)~lessthan~1 then transforms((,newability[if type(*|mybattlefield)~morethan~9 then create(city's_blessing:city's_blessing:0/0:shroud:indestructible)]))
|
||||
|
||||
# Effect with the City's blessing, Set XLN
|
||||
#AUTO_DEFINE _CITY'S_BLESSING_ aslongas(*[city's_blessing]|mybattlefield)>0
|
||||
|
||||
# Treasure token, Set XLN
|
||||
#AUTO_DEFINE _TREASURE_ create(Treasure:Artifact Treasure:0/0:"{T}, Sacrifice this artifact: Add one mana of any color.") and!( transforms((,newability[{T}{S}:Add{W}],newability[{T}{S}:Add{U}],newability[{T}{S}:Add{R}],newability[{T}{S}:Add{B}],newability[{T}{S}:Add{G}])) forever )!
|
||||
|
||||
# Proliferate, still need to target players since the old code doesn't work (*[artifact;creature;...;players]) just let you target creature and player
|
||||
#AUTO_DEFINE _PROLIFERATE_ name(proliferate) notatarget(<anyamount>*) proliferate
|
||||
|
||||
# Mentor, still not working with enhancements, pump effects
|
||||
#AUTO_DEFINE _MENTOR_ @combat(attacking) source(this):counter(1/1,1) target(other creature[attacking;power<=pminus1minusend]|myBattlefield)
|
||||
@@ -1,5 +1,82 @@
|
||||
grade=borderline
|
||||
[card]
|
||||
name=Bogardan Hellkite
|
||||
abilities=flash,flying
|
||||
auto=ability$!damage:1 target(creature,player)!$ controller && ability$!damage:1 target(creature,player)!$ controller && ability$!damage:1 target(creature,player)!$ controller && ability$!damage:1 target(creature,player)!$ controller && ability$!damage:1 target(creature,player)!$ controller
|
||||
text=Flash -- Flying -- When Bogardan Hellkite enters the battlefield, it deals 5 damage divided as you choose among any number of targets.
|
||||
mana={6}{R}{R}
|
||||
type=Creature
|
||||
subtype=Dragon
|
||||
power=5
|
||||
toughness=5
|
||||
[/card]
|
||||
[card]
|
||||
name=Frost Titan
|
||||
#Not working for abilities on the field
|
||||
auto=@targeted(this|mybattlefield) from(*|opponentbattlefield,opponenthand,opponentstack,opponentgraveyard,opponentexile,opponentlibrary):transforms((,newability[pay[[{2}]] name(pay 2 mana) donothing?fizzle])) forever target(*|stack)
|
||||
auto=freeze target(*)
|
||||
auto=@combat(attacking) source(this):freeze target(*)
|
||||
text=Whenever Frost Titan becomes the target of a spell or ability an opponent controls, counter that spell or ability unless its controller pays {2}. -- Whenever Frost Titan enters the battlefield or attacks, tap target permanent. It doesn't untap during its controller's next untap step.
|
||||
mana={4}{U}{U}
|
||||
type=Creature
|
||||
subtype=Giant
|
||||
power=6
|
||||
toughness=6
|
||||
[/card]
|
||||
[card]
|
||||
name=Gaea's Touch
|
||||
auto={0}:moveTo(myBattlefield) target(forest[basic]|myhand) asSorcery limit:1
|
||||
auto={S}:Add{G}{G}
|
||||
auto={0}:name(don't sacrifice) donothing limit:9
|
||||
text={0}: You may put a basic Forest card from your hand onto the battlefield. Activate this ability only any time you could cast a sorcery and only once each turn. -- Sacrifice Gaea’s Touch: Add {G}{G}.
|
||||
mana={G}{G}
|
||||
type=Enchantment
|
||||
[/card]
|
||||
[card]
|
||||
name=Inferno Titan
|
||||
auto={R}:1/0 ueot
|
||||
auto=ability$!damage:1 target(creature,player)!$ controller && ability$!damage:1 target(creature,player)!$ controller && ability$!damage:1 target(creature,player)!$ controller
|
||||
auto=@combat(attacking) source(this):ability$!damage:1 target(creature,player)!$ controller && ability$!damage:1 target(creature,player)!$ controller && ability$!damage:1 target(creature,player)!$ controller
|
||||
text={R}: Inferno Titan gets +1/+0 until end of turn. -- Whenever Inferno Titan enters the battlefield or attacks, it deals 3 damage divided as you choose among one, two, or three targets.
|
||||
mana={4}{R}{R}
|
||||
type=Creature
|
||||
subtype=Giant
|
||||
power=6
|
||||
toughness=6
|
||||
[/card]
|
||||
[card]
|
||||
name=Jace, the Living Guildpact
|
||||
auto=counter(0/0,5,loyalty)
|
||||
auto={C(0/0,1,Loyalty)}:reveal:2 optionone name(put in graveyard) target(<1>*|reveal) moveto(ownergraveyard) optiononeend optiontwo name(put in library) target(<1>*|reveal) moveto(ownerlibrary) optiontwoend revealend
|
||||
auto={C(0/0,-3,Loyalty)}:target(other *[-land]) moveTo(ownerhand)
|
||||
auto={C(0/0,-8,Loyalty)}:moveto(opponentlibrary) all(*|opponenthand) && moveto(opponentlibrary) all(*|opponentgraveyard) && shuffle && moveto(mylibrary) all(*|myhand) && moveto(mylibrary) all(*|mygraveyard) && shuffle && draw:7
|
||||
text=+1: Look at the top two cards of your library. Put one of them into your graveyard. -- -3: Return another target nonland permanent to its owner's hand. -- -8: Each player shuffles their hand and graveyard into their library. You draw seven cards.
|
||||
mana={2}{U}{U}
|
||||
type=Legendary Planeswalker
|
||||
subtype=Jace
|
||||
[/card]
|
||||
[card]
|
||||
name=Karn Liberated
|
||||
auto=counter(0/0,6,loyalty)
|
||||
auto={C(0/0,4,Loyalty)}:target(player) ability$!moveto(exile) and!( becomes(tobecast) forever )! target(*|myhand)!$ targetedplayer
|
||||
auto={C(0/0,-3,Loyalty)}:moveto(exile) and!( becomes(tobecast) forever )! target(*)
|
||||
auto={C(0/0,-14,Loyalty)}:name(ultimate) moveto(ownerlibrary) all(*|opponenthand) && moveto(ownerlibrary) all(*|opponentgraveyard) && moveto(ownerlibrary) all(*|opponentbattlefield) && moveto(ownerlibrary) all(*[-tobecast;aura;instant;sorcery]|opponentexile) && shuffle && draw:7 opponent && lifeset:startinglife opponent && moveto(ownerlibrary) all(*|myhand) && moveto(ownerlibrary) all(*|mygraveyard) && moveto(ownerlibrary) all(*|mybattlefield) && moveto(ownerlibrary) all(*[-tobecast;aura;instant;sorcery]|myexile) && shuffle && draw:7 && lifeset:startinglife && moveto(myBattlefield) all(tobecast|exile) && all(creature|myBattlefield) haste && removemana(*)
|
||||
text=+4: Target player exiles a card from their hand. -- -3: Exile target permanent. -- -14: Restart the game, leaving in exile all non-Aura permanent cards exiled with Karn Liberated. Then put those cards onto the battlefield under your control.
|
||||
mana={7}
|
||||
type=Legendary Planeswalker
|
||||
subtype=Karn
|
||||
[/card]
|
||||
[card]
|
||||
name=Time Vault
|
||||
abilities=doesnotuntap
|
||||
auto=tap(noevent)
|
||||
auto=@each opponent end sourcetap:may (turns:-1 controller) && untapthis
|
||||
auto={T}:turns:+1 controller
|
||||
text=Time Vault enters the battlefield tapped. -- Time Vault doesn't untap during your untap step. -- If you would begin your turn while Time Vault is tapped, you may skip that turn instead. If you do, untap Time Vault. -- {T}: Take an extra turn after this one.
|
||||
mana={2}
|
||||
type=Artifact
|
||||
[/card]
|
||||
[card]
|
||||
name=Akiri, Line-Slinger
|
||||
abilities=first strike,vigilance
|
||||
auto=type:artifact:mybattlefield/0 nonstatic
|
||||
@@ -406,7 +483,7 @@ type=Sorcery
|
||||
[card]
|
||||
name=Mogg Infestation
|
||||
target=player
|
||||
auto=all(creature|targetedpersonsbattlefield) destroy and!( if cantargetcard(creature|graveyard) then create(Goblin:Creature Goblin:1/1:red)*2 )!
|
||||
auto=all(creature|targetedpersonsbattlefield) destroy and!( if cantargetcard(creature|graveyard) then create(Goblin:Creature Goblin:1/1:red)*2 targetedpersonsbattlefield)!
|
||||
mana={3}{R}{R}
|
||||
type=Sorcery
|
||||
text=Destroy all creatures target player controls. For each creature that died this way, put two 1/1 red Goblin creature tokens onto the battlefield under that player's control.
|
||||
@@ -512,8 +589,8 @@ type=Sorcery
|
||||
[/card]
|
||||
[card]
|
||||
name=Relentless Dead
|
||||
auto=@movedTo(this|graveyard) from(battlefield):transforms((,newability[{B}:moveto(myhand)])) ueot
|
||||
auto=@movedTo(this|graveyard) from(battlefield):transforms((,newability[{X}:moveto(myhand) target(zombie[manacost=X]|mygraveyard)])) ueot
|
||||
autograveyard=@movedTo(this|graveyard) from(battlefield):name(return relentless dead) pay({B}) moveTo(hand)
|
||||
auto=@movedTo(this|graveyard) from(battlefield):choice name(rturn cost X) pay({1}) moveTo(battlefield) target(other zombie|mygraveyard)
|
||||
text=Menace (This creature can't be blocked except by two or more creatures.) -- When Relentless Dead dies, you may pay {B}. If you do, return it to its owner's hand. -- When Relentless Dead dies, you may pay {X}. If you do, return another target Zombie creature card with converted mana cost X from your graveyard to the battlefield.
|
||||
mana={B}{B}
|
||||
abilities=menace
|
||||
@@ -552,7 +629,7 @@ type=Sorcery
|
||||
[/card]
|
||||
[card]
|
||||
name=Scent of Cinder
|
||||
target=creature
|
||||
target=creature,player
|
||||
auto=damage:type:*[red]:myhand
|
||||
text=Reveal any number of red cards in your hand. Scent of Cinder deals X damage to target creature or player, where X is the number of cards revealed this way.
|
||||
mana={1}{R}
|
||||
@@ -787,15 +864,6 @@ mana={2}{U}
|
||||
type=Instant
|
||||
[/card]
|
||||
[card]
|
||||
name=Villainous Wealth
|
||||
#can't order stack
|
||||
target=opponent
|
||||
auto=moveto(exile) and!( if cantargetcard(*[-land;manacost<=castx]|*) then transforms((,newability[may activate castcard(normal)]])) ueot )! all(*[zpos<=castx]|mylibrary)
|
||||
text=Target opponent exiles the top X cards of his or her library. You may cast any number of nonland cards with converted mana cost X or less from among them without paying their mana costs.
|
||||
mana={X}{B}{G}{U}
|
||||
type=Sorcery
|
||||
[/card]
|
||||
[card]
|
||||
name=Watcher of the Roost
|
||||
#missing reveal card
|
||||
abilities=flying
|
||||
@@ -810,14 +878,6 @@ power=2
|
||||
toughness=1
|
||||
[/card]
|
||||
[card]
|
||||
name=Wolfcaller's Howl
|
||||
#wagic supports one opponent only
|
||||
auto=@each my upkeep restriction{type(*|opponenthand)~morethan~3}:token(Wolf,Creature Wolf,2/2,green)
|
||||
text=At the beginning of your upkeep, put X 2/2 green Wolf creature tokens onto the battlefield, where X is the number of your opponents with four or more cards in hand.
|
||||
mana={3}{G}
|
||||
type=Enchantment
|
||||
[/card]
|
||||
[card]
|
||||
name=Wren's Run Vanquisher
|
||||
otherrestriction=type(*[elf]|myhand)~lessthan~2
|
||||
other={4}{G}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1936,12 +1936,6 @@ mana={3}{R}
|
||||
type=Enchantment
|
||||
[/card]
|
||||
[card]
|
||||
name=Burning Wish
|
||||
text=You may choose a sorcery card you own from outside the game, reveal that card, and put it into your hand. Exile Burning Wish.
|
||||
mana={1}{R}
|
||||
type=Sorcery
|
||||
[/card]
|
||||
[card]
|
||||
name=Burning-Eye Zubera
|
||||
text=When Burning-Eye Zubera dies, if 4 or more damage was dealt to it this turn, Burning-Eye Zubera deals 3 damage to target creature or player.
|
||||
mana={2}{R}{R}
|
||||
@@ -3340,15 +3334,6 @@ mana={4}{U}{U}
|
||||
type=Instant
|
||||
[/card]
|
||||
[card]
|
||||
name=Courser of Kruphix
|
||||
text=Play with the top card of your library revealed. -- You may play the top card of your library if it's a land card. -- Whenever a land enters the battlefield under your control, you gain 1 life.
|
||||
mana={1}{G}{G}
|
||||
type=Enchantment Creature
|
||||
subtype=Centaur
|
||||
power=2
|
||||
toughness=4
|
||||
[/card]
|
||||
[card]
|
||||
name=Covenant of Minds
|
||||
text=Reveal the top three cards of your library. Target opponent may choose to put those cards into your hand. If he or she doesn't, put those cards into your graveyard and draw five cards.
|
||||
mana={4}{U}
|
||||
@@ -3468,12 +3453,6 @@ mana={4}
|
||||
type=Artifact
|
||||
[/card]
|
||||
[card]
|
||||
name=Crown of Convergence
|
||||
text=Play with the top card of your library revealed. -- As long as the top card of your library is a creature card, creatures you control that share a color with that card get +1/+1. -- {G}{W}: Put the top card of your library on the bottom of your library.
|
||||
mana={2}
|
||||
type=Artifact
|
||||
[/card]
|
||||
[card]
|
||||
name=Crown of Doom
|
||||
text=Whenever a creature attacks you or a planeswalker you control, it gets +2/+0 until end of turn. -- {2}: Target player other than Crown of Doom's owner gains control of it. Activate this ability only during your turn.
|
||||
mana={3}
|
||||
@@ -3585,12 +3564,6 @@ mana={4}{U}{U}
|
||||
type=Sorcery
|
||||
[/card]
|
||||
[card]
|
||||
name=Cunning Wish
|
||||
text=You may choose an instant card you own from outside the game, reveal that card, and put it into your hand. Exile Cunning Wish.
|
||||
mana={2}{U}
|
||||
type=Instant
|
||||
[/card]
|
||||
[card]
|
||||
name=Curious Homunculus
|
||||
text={T}: Add {C} to your mana pool. Spend this mana only to cast an instant or sorcery spell. -- At the beginning of your upkeep, if there are three or more instant and/or sorcery cards in your graveyard, transform Curious Homunculus.
|
||||
mana={1}{U}
|
||||
@@ -4008,12 +3981,6 @@ mana={R}
|
||||
type=Instant
|
||||
[/card]
|
||||
[card]
|
||||
name=Death Wish
|
||||
text=You may choose a card you own from outside the game and put it into your hand. You lose half your life, rounded up. Exile Death Wish.
|
||||
mana={1}{B}{B}
|
||||
type=Sorcery
|
||||
[/card]
|
||||
[card]
|
||||
name=Death-Mask Duplicant
|
||||
text=Imprint — {1}: Exile target creature card from your graveyard. -- As long as a card exiled with Death-Mask Duplicant has flying, Death-Mask Duplicant has flying. The same is true for fear, first strike, double strike, haste, landwalk, protection, and trample.
|
||||
mana={7}
|
||||
@@ -5321,7 +5288,7 @@ mana={2}{G}{G}
|
||||
type=Sorcery
|
||||
[/card]
|
||||
[card]
|
||||
name=Evasive Action
|
||||
name=
|
||||
text=Domain — Counter target spell unless its controller pays {1} for each basic land type among lands you control.
|
||||
mana={1}{U}
|
||||
type=Instant
|
||||
@@ -6325,12 +6292,6 @@ mana={1}{R}{R}{R}
|
||||
type=Enchantment
|
||||
[/card]
|
||||
[card]
|
||||
name=Future Sight
|
||||
text=Play with the top card of your library revealed. -- You may play the top card of your library.
|
||||
mana={2}{U}{U}{U}
|
||||
type=Enchantment
|
||||
[/card]
|
||||
[card]
|
||||
name=Gabriel Angelfire
|
||||
text=At the beginning of your upkeep, choose flying, first strike, trample, or rampage 3. Gabriel Angelfire gains that ability until your next upkeep. (Whenever a creature with rampage 3 becomes blocked, it gets +3/+3 until end of turn for each creature blocking it beyond the first.)
|
||||
mana={3}{G}{G}{W}{W}
|
||||
@@ -6355,15 +6316,6 @@ mana={3}{G}
|
||||
type=Sorcery
|
||||
[/card]
|
||||
[card]
|
||||
name=Gaea's Herald
|
||||
text=Creature spells can't be countered.
|
||||
mana={1}{G}
|
||||
type=Creature
|
||||
subtype=Elf
|
||||
power=1
|
||||
toughness=1
|
||||
[/card]
|
||||
[card]
|
||||
name=Gaea's Liege
|
||||
text=As long as Gaea's Liege isn't attacking, its power and toughness are each equal to the number of Forests you control. As long as Gaea's Liege is attacking, its power and toughness are each equal to the number of Forests defending player controls. -- {T}: Target land becomes a Forest until Gaea's Liege leaves the battlefield.
|
||||
mana={3}{G}{G}{G}
|
||||
@@ -6415,16 +6367,6 @@ mana={2}{R}
|
||||
type=Instant
|
||||
[/card]
|
||||
[card]
|
||||
name=Garruk's Horde
|
||||
abilities=trample
|
||||
text=Trample -- Play with the top card of your library revealed. -- You may cast the top card of your library if it's a creature card. (Do this only any time you could cast that creature card. You still pay the spell's costs.)
|
||||
mana={5}{G}{G}
|
||||
type=Creature
|
||||
subtype=Beast
|
||||
power=7
|
||||
toughness=7
|
||||
[/card]
|
||||
[card]
|
||||
name=Garrulous Sycophant
|
||||
text=At the beginning of your end step, if you're the monarch, each opponent loses 1 life and you gain 1 life.
|
||||
mana={2}{B}
|
||||
@@ -6701,16 +6643,6 @@ power=5
|
||||
toughness=5
|
||||
[/card]
|
||||
[card]
|
||||
name=Gisela, the Broken Blade
|
||||
abilities=flying,first strike,lifelink
|
||||
text=Flying, first strike, lifelink -- At the beginning of your end step, if you both own and control Gisela, the Broken Blade and a creature named Bruna, the Fading Light, exile them, then meld them into Brisela, Voice of Nightmares.
|
||||
mana={2}{W}{W}
|
||||
type=Legendary Creature
|
||||
subtype=Angel Horror
|
||||
power=4
|
||||
toughness=3
|
||||
[/card]
|
||||
[card]
|
||||
name=Give // Take
|
||||
text=Put three +1/+1 counters on target creature. -- // -- Remove all +1/+1 counters from target creature you control. Draw that many cards. -- -- Fuse (You may cast one or both halves of this card from your hand.)
|
||||
mana={2}{G} // {2}{U}
|
||||
@@ -6828,12 +6760,6 @@ power=1
|
||||
toughness=1
|
||||
[/card]
|
||||
[card]
|
||||
name=Glittering Wish
|
||||
text=You may choose a multicolored card you own from outside the game, reveal that card, and put it into your hand. Exile Glittering Wish.
|
||||
mana={G}{W}
|
||||
type=Sorcery
|
||||
[/card]
|
||||
[card]
|
||||
name=Global Ruin
|
||||
text=Each player chooses from the lands he or she controls a land of each basic land type, then sacrifices the rest.
|
||||
mana={4}{W}
|
||||
@@ -7045,15 +6971,6 @@ power=1
|
||||
toughness=1
|
||||
[/card]
|
||||
[card]
|
||||
name=Goblin Spy
|
||||
text=Play with the top card of your library revealed.
|
||||
mana={R}
|
||||
type=Creature
|
||||
subtype=Goblin Rogue
|
||||
power=1
|
||||
toughness=1
|
||||
[/card]
|
||||
[card]
|
||||
name=Goblin Test Pilot
|
||||
abilities=flying
|
||||
text=Flying -- {T}: Goblin Test Pilot deals 2 damage to target creature or player chosen at random.
|
||||
@@ -7092,12 +7009,6 @@ type=Legendary Artifact
|
||||
subtype=Equipment
|
||||
[/card]
|
||||
[card]
|
||||
name=Golden Wish
|
||||
text=You may choose an artifact or enchantment card you own from outside the game, reveal that card, and put it into your hand. Exile Golden Wish.
|
||||
mana={3}{W}{W}
|
||||
type=Sorcery
|
||||
[/card]
|
||||
[card]
|
||||
name=Goldenhide Ox
|
||||
text=Constellation — Whenever Goldenhide Ox or another enchantment enters the battlefield under your control, target creature must be blocked this turn if able.
|
||||
mana={5}{G}
|
||||
@@ -7624,15 +7535,6 @@ type=Artifact
|
||||
subtype=Equipment
|
||||
[/card]
|
||||
[card]
|
||||
name=Hanweir, the Writhing Township
|
||||
text=Whenever Hanweir Garrison attacks, put two 1/1 red Human creature tokens onto the battlefield tapped and attacking. -- (Melds with Hanweir Battlements.)
|
||||
mana={2}{R}
|
||||
type=Creature
|
||||
subtype=Human Soldier
|
||||
power=2
|
||||
toughness=3
|
||||
[/card]
|
||||
[card]
|
||||
name=Harbinger of the Tides
|
||||
text=You may cast Harbinger of the Tides as though it had flash if you pay {2} more to cast it. (You may cast it any time you could cast an instant.) -- When Harbinger of the Tides enters the battlefield, you may return target tapped creature an opponent controls to its owner's hand.
|
||||
mana={U}{U}
|
||||
@@ -9828,12 +9730,6 @@ mana={1}{R}{R}
|
||||
type=World Enchantment
|
||||
[/card]
|
||||
[card]
|
||||
name=Lantern of Insight
|
||||
text=Each player plays with the top card of his or her library revealed. -- {T}, Sacrifice Lantern of Insight: Target player shuffles his or her library.
|
||||
mana={1}
|
||||
type=Artifact
|
||||
[/card]
|
||||
[card]
|
||||
name=Laquatus's Disdain
|
||||
text=Counter target spell cast from a graveyard. -- Draw a card.
|
||||
mana={1}{U}
|
||||
@@ -10230,12 +10126,6 @@ power=*
|
||||
toughness=*
|
||||
[/card]
|
||||
[card]
|
||||
name=Living Wish
|
||||
text=You may choose a creature or land card you own from outside the game, reveal that card, and put it into your hand. Exile Living Wish.
|
||||
mana={1}{G}
|
||||
type=Sorcery
|
||||
[/card]
|
||||
[card]
|
||||
name=Loafing Giant
|
||||
text=Whenever Loafing Giant attacks or blocks, put the top card of your library into your graveyard. If that card is a land card, prevent all combat damage Loafing Giant would deal this turn.
|
||||
mana={4}{R}
|
||||
@@ -10468,15 +10358,6 @@ power=5
|
||||
toughness=5
|
||||
[/card]
|
||||
[card]
|
||||
name=Magus of the Future
|
||||
text=Play with the top card of your library revealed. -- You may play the top card of your library.
|
||||
mana={2}{U}{U}{U}
|
||||
type=Creature
|
||||
subtype=Human Wizard
|
||||
power=2
|
||||
toughness=3
|
||||
[/card]
|
||||
[card]
|
||||
name=Magus of the Scroll
|
||||
text={3}, {T}: Name a card. Reveal a card at random from your hand. If it's the named card, Magus of the Scroll deals 2 damage to target creature or player.
|
||||
mana={R}
|
||||
@@ -10854,15 +10735,6 @@ mana={4}{R}
|
||||
type=Instant
|
||||
[/card]
|
||||
[card]
|
||||
name=Melek, Izzet Paragon
|
||||
text=Play with the top card of your library revealed. -- You may cast the top card of your library if it's an instant or sorcery card. -- Whenever you cast an instant or sorcery spell from your library, copy it. You may choose new targets for the copy.
|
||||
mana={4}{U}{R}
|
||||
type=Legendary Creature
|
||||
subtype=Weird Wizard
|
||||
power=2
|
||||
toughness=4
|
||||
[/card]
|
||||
[card]
|
||||
name=Meletis Charlatan
|
||||
text={2}{U}, {T}: The controller of target instant or sorcery spell copies it. That player may choose new targets for the copy.
|
||||
mana={2}{U}
|
||||
@@ -11511,15 +11383,6 @@ power=3
|
||||
toughness=3
|
||||
[/card]
|
||||
[card]
|
||||
name=Mul Daya Channelers
|
||||
text=Play with the top card of your library revealed. -- As long as the top card of your library is a creature card, Mul Daya Channelers gets +3/+3. -- As long as the top card of your library is a land card, Mul Daya Channelers has "{T}: Add two mana of any one color to your mana pool."
|
||||
mana={1}{G}{G}
|
||||
type=Creature
|
||||
subtype=Elf Druid Shaman
|
||||
power=2
|
||||
toughness=2
|
||||
[/card]
|
||||
[card]
|
||||
name=Multani's Presence
|
||||
text=Whenever a spell you've cast is countered, draw a card.
|
||||
mana={G}
|
||||
@@ -12475,15 +12338,6 @@ power=3
|
||||
toughness=1
|
||||
[/card]
|
||||
[card]
|
||||
name=Oracle of Mul Daya
|
||||
text=You may play an additional land on each of your turns. -- Play with the top card of your library revealed. -- You may play the top card of your library if it's a land card.
|
||||
mana={3}{G}
|
||||
type=Creature
|
||||
subtype=Elf Shaman
|
||||
power=2
|
||||
toughness=2
|
||||
[/card]
|
||||
[card]
|
||||
name=Oracle's Attendants
|
||||
text={T}: All damage that would be dealt to target creature this turn by a source of your choice is dealt to Oracle's Attendants instead.
|
||||
mana={3}{W}
|
||||
@@ -18201,12 +18055,6 @@ power=3
|
||||
toughness=3
|
||||
[/card]
|
||||
[card]
|
||||
name=Temporal Aperture
|
||||
text={5}, {T}: Shuffle your library, then reveal the top card. Until end of turn, for as long as that card remains on top of your library, play with the top card of your library revealed and you may play that card without paying its mana cost. (If it has X in its mana cost, X is 0.)
|
||||
mana={2}
|
||||
type=Artifact
|
||||
[/card]
|
||||
[card]
|
||||
name=Temporal Extortion
|
||||
text=When you cast Temporal Extortion, any player may pay half his or her life, rounded up. If a player does, counter Temporal Extortion. -- Take an extra turn after this one.
|
||||
mana={B}{B}{B}{B}
|
||||
@@ -19380,15 +19228,6 @@ mana={W}
|
||||
type=Instant
|
||||
[/card]
|
||||
[card]
|
||||
name=Vampire Nocturnus
|
||||
text=Play with the top card of your library revealed. -- As long as the top card of your library is black, Vampire Nocturnus and other Vampire creatures you control get +2/+1 and have flying.
|
||||
mana={1}{B}{B}{B}
|
||||
type=Creature
|
||||
subtype=Vampire
|
||||
power=3
|
||||
toughness=3
|
||||
[/card]
|
||||
[card]
|
||||
name=Vandalize
|
||||
text=Choose one or both — -- • Destroy target artifact. -- • Destroy target land.
|
||||
mana={4}{R}
|
||||
|
||||
@@ -264,7 +264,6 @@ dauntless_escort.txt
|
||||
dauthi_embrace.txt
|
||||
dawn_of_the_dead.txt
|
||||
deadshot.txt
|
||||
death_grasp.txt
|
||||
death_ward.txt
|
||||
decree_of_justice.txt
|
||||
defense_of_the_heart.txt
|
||||
@@ -739,5 +738,4 @@ momir/overcost.txt
|
||||
########################
|
||||
#AI Tests
|
||||
########################
|
||||
ai/goblin_artillery.txt
|
||||
ai/proliferate_simple.txt
|
||||
|
||||
@@ -44,7 +44,9 @@
|
||||
<target name="update" description="Updates the AndroidManifest and Wagic_Version.h with the current version information">
|
||||
<antcall target="build.maemo.changelog"/>
|
||||
<antcall target="build.wagic.header"/>
|
||||
<antcall target="update.android.manifest"/>
|
||||
<!-- <antcall target="update.android.manifest"/> -->
|
||||
<!-- ~rpw temporary removed because groovy doesnt play well with java 8, gives error
|
||||
java.lang.NoClassDefFoundError: [Ljava/util/HashMap$Entry; -->
|
||||
</target>
|
||||
|
||||
<target name="update.android.manifest" description="Updates the AndroidManifest.xml with the current version information">
|
||||
|
||||
@@ -1406,6 +1406,28 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
class TrCardExerted: public Trigger
|
||||
{
|
||||
public:
|
||||
TrCardExerted(GameObserver* observer, int id, MTGCardInstance * source, TargetChooser * tc, bool once = false) :
|
||||
Trigger(observer, id, source, once, tc)
|
||||
{
|
||||
}
|
||||
|
||||
int triggerOnEventImpl(WEvent * event)
|
||||
{
|
||||
WEventCardExerted * e = dynamic_cast<WEventCardExerted *> (event);
|
||||
if (!e) return 0;
|
||||
if (!tc->canTarget(e->card)) return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
TrCardExerted * clone() const
|
||||
{
|
||||
return NEW TrCardExerted(*this);
|
||||
}
|
||||
};
|
||||
|
||||
class TrCombatTrigger: public Trigger
|
||||
{
|
||||
public:
|
||||
@@ -5174,6 +5196,7 @@ public:
|
||||
list<int> oldcolors;
|
||||
list<int> oldtypes;
|
||||
vector<int> dontremove;
|
||||
bool removemc;
|
||||
bool addNewColors;
|
||||
bool remove;
|
||||
bool removeCreatureSubtypes;
|
||||
@@ -7290,6 +7313,57 @@ public:
|
||||
return NEW AProvoke(*this);
|
||||
}
|
||||
};
|
||||
//exert
|
||||
class AExert: public InstantAbility
|
||||
{
|
||||
public:
|
||||
MTGAbility * andAbility;
|
||||
AExert(GameObserver* observer, int _id, MTGCardInstance * _source, MTGCardInstance * _target) :
|
||||
InstantAbility(observer, _id, _source)
|
||||
{
|
||||
target = _target;
|
||||
andAbility = NULL;
|
||||
}
|
||||
|
||||
int resolve()
|
||||
{
|
||||
MTGCardInstance * card = (MTGCardInstance *) target;
|
||||
if (card)
|
||||
{
|
||||
card->exerted = true;
|
||||
WEvent * e = NEW WEventCardExerted(card);
|
||||
game->receiveEvent(e);
|
||||
if(andAbility)
|
||||
{
|
||||
MTGAbility * andAbilityClone = andAbility->clone();
|
||||
andAbilityClone->target = card;
|
||||
if(andAbility->oneShot)
|
||||
{
|
||||
andAbilityClone->resolve();
|
||||
SAFE_DELETE(andAbilityClone);
|
||||
}
|
||||
else
|
||||
{
|
||||
andAbilityClone->addToGame();
|
||||
}
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
const string getMenuText()
|
||||
{
|
||||
return "Exert";
|
||||
}
|
||||
virtual ostream& toString(ostream& out) const
|
||||
{
|
||||
out << "AAExert ::: (";
|
||||
return InstantAbility::toString(out) << ")";
|
||||
}
|
||||
AExert * clone() const
|
||||
{
|
||||
return NEW AExert(*this);
|
||||
}
|
||||
};
|
||||
//------------------
|
||||
//trigger regen
|
||||
class ATriggerRegen: public InstantAbility
|
||||
|
||||
@@ -90,6 +90,7 @@ public:
|
||||
bool blinked;
|
||||
bool isExtraCostTarget;
|
||||
bool morphed;
|
||||
bool exerted;
|
||||
bool turningOver;
|
||||
bool isMorphed;
|
||||
bool isFlipped;
|
||||
|
||||
@@ -15,6 +15,10 @@ typedef enum
|
||||
GAME_TYPE_MOMIR,
|
||||
GAME_TYPE_RANDOM1,
|
||||
GAME_TYPE_RANDOM2,
|
||||
GAME_TYPE_RANDOM3,
|
||||
GAME_TYPE_RANDOM5,
|
||||
GAME_TYPE_HORDE,
|
||||
GAME_TYPE_SET_LIMITED,
|
||||
GAME_TYPE_STORY,
|
||||
GAME_TYPE_DEMO,
|
||||
GAME_TYPE_STONEHEWER,
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
#ifndef PRECOMPILEDHEADER_H
|
||||
#define PRECOMPILEDHEADER_H
|
||||
|
||||
|
||||
#define __STDC_LIMIT_MACROS
|
||||
|
||||
#include <algorithm>
|
||||
#include <fstream>
|
||||
#include <iostream>
|
||||
@@ -21,11 +24,6 @@
|
||||
|
||||
#include "GameOptions.h"
|
||||
|
||||
#if !defined(WP8) && !defined(QT_CONFIG)
|
||||
#include <boost/shared_ptr.hpp>
|
||||
#include <boost/scoped_ptr.hpp>
|
||||
#endif
|
||||
|
||||
#if defined (WP8) || defined (IOS) || defined (ANDROID) || defined (QT_CONFIG) || defined (SDL_CONFIG)
|
||||
#define TOUCH_ENABLED
|
||||
#endif
|
||||
|
||||
@@ -42,6 +42,10 @@ class Rules
|
||||
protected:
|
||||
Player * loadPlayerMomir(GameObserver* observer, int isAI);
|
||||
Player * loadPlayerRandom(GameObserver* observer, int isAI, int mode);
|
||||
Player * loadPlayerRandomThree(GameObserver* observer, int isAI);
|
||||
Player * loadPlayerRandomFive(GameObserver* observer, int isAI);
|
||||
Player * loadPlayerHorde(GameObserver* observer, int isAI);
|
||||
Player * loadRandomSetLimited(GameObserver* observer, int isAI);
|
||||
Player * initPlayer(GameObserver *observer, int playerId);
|
||||
MTGDeck * buildDeck(int playerId);
|
||||
GameType strToGameMode(string s);
|
||||
|
||||
@@ -205,6 +205,12 @@ struct WEventCardCycle : public WEventCardUpdate {
|
||||
virtual Targetable * getTarget(int target);
|
||||
};
|
||||
|
||||
//event when card is exerted.
|
||||
struct WEventCardExerted : public WEventCardUpdate {
|
||||
WEventCardExerted(MTGCardInstance * card);
|
||||
virtual Targetable * getTarget(int target);
|
||||
};
|
||||
|
||||
//Event when a card's "defenser" status changes
|
||||
//before : attacker that card was blocking previously
|
||||
//after: attacker that card is blocking now
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#ifndef WRESOURCE_FWD_H
|
||||
#define WRESOURCE_FWD_H
|
||||
|
||||
#if (__cplusplus > 199711L)
|
||||
#if (__cplusplus > 199711L) || (_MSC_VER >= 1700)
|
||||
#include <memory>
|
||||
typedef std::shared_ptr<JQuad> JQuadPtr;
|
||||
#elif defined(QT_CONFIG)
|
||||
|
||||
@@ -12,7 +12,7 @@ Author: Michael Nguyen
|
||||
|
||||
/* Wagic versions */
|
||||
#define WAGIC_VERSION_MAJOR 0
|
||||
#define WAGIC_VERSION_MEDIUM 20
|
||||
#define WAGIC_VERSION_MEDIUM 21
|
||||
#define WAGIC_VERSION_MINOR 1
|
||||
|
||||
#define VERSION_DOT(a, b, c) a ##.## b ##.## c
|
||||
|
||||
@@ -46,14 +46,16 @@ int OrderedAIAction::getEfficiency(AADamager * aad)
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(p == target->controller())
|
||||
return 0;
|
||||
if(p && target)
|
||||
if(p == target->controller())
|
||||
return 0;
|
||||
|
||||
if (dTarget && aad && (aad->getDamage() >= dTarget->toughness))
|
||||
if (dTarget && aad && (aad->getDamage() == dTarget->toughness))
|
||||
return 100;
|
||||
|
||||
if (dTarget && dTarget->toughness)
|
||||
return (50 * aad->getDamage()) / dTarget->toughness;
|
||||
else if (dTarget && aad && (aad->getDamage() > dTarget->toughness))
|
||||
return 10 * (10 - (aad->getDamage() - dTarget->toughness)); //less eff the more dmg above toughness
|
||||
else
|
||||
return 10;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -129,8 +131,8 @@ int OrderedAIAction::getEfficiency()
|
||||
{
|
||||
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:
|
||||
{
|
||||
@@ -271,7 +273,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)))
|
||||
@@ -280,6 +282,10 @@ int OrderedAIAction::getEfficiency()
|
||||
coreAbilityCardTarget = a->source->target; //TODO use intermediate value?
|
||||
target = a->source;
|
||||
}
|
||||
else //if(how to know cards like Basking Rootwalla that pump themselves)
|
||||
{
|
||||
target = a->source;
|
||||
}
|
||||
if (!target && !dynamic_cast<ALord*> (a))
|
||||
break;
|
||||
if(dynamic_cast<ALord*> (a) && !target)
|
||||
@@ -291,9 +297,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())
|
||||
{
|
||||
@@ -311,7 +317,7 @@ int OrderedAIAction::getEfficiency()
|
||||
{
|
||||
//this means im heading directly for the player, pump this creature as much as possible.
|
||||
efficiency = 100;
|
||||
if(coreAbilityCardTarget->power > 50)
|
||||
if(coreAbilityCardTarget->power > 20) // to be realistic
|
||||
efficiency -= coreAbilityCardTarget->power;//we don't need to go overboard. better to not put all your eggs in a single basket.
|
||||
}
|
||||
}
|
||||
@@ -326,28 +332,41 @@ int OrderedAIAction::getEfficiency()
|
||||
{
|
||||
if(!coreAbilityCardTarget)
|
||||
break;
|
||||
|
||||
// It used to skip most effects, with no other condition efficiency is -1
|
||||
// Becomes is generally good so setting a value, but don't want to spam it
|
||||
if (coreAbilityCardTarget && !coreAbilityCardTarget->isLand())
|
||||
{
|
||||
// Bonus if almost no cards in hand
|
||||
if (p->game->hand->nb_cards <= 1)
|
||||
{
|
||||
efficiency = 50;
|
||||
}
|
||||
else efficiency = 30;
|
||||
}
|
||||
//nothing huge here, just ensuring that Ai makes his noncreature becomers into creatures during first main, so it can actually use them in combat.
|
||||
if (coreAbilityCardTarget && !coreAbilityCardTarget->isCreature() && currentPhase == MTG_PHASE_FIRSTMAIN)
|
||||
if (coreAbilityCardTarget && !coreAbilityCardTarget->isCreature() && !coreAbilityCardTarget->isTapped() && currentPhase == MTG_PHASE_FIRSTMAIN)
|
||||
{
|
||||
efficiency = 100;
|
||||
}
|
||||
efficiency = 50;
|
||||
}
|
||||
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);
|
||||
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 = 90;//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:
|
||||
{
|
||||
@@ -426,11 +445,12 @@ int OrderedAIAction::getEfficiency()
|
||||
|
||||
case MTGAbility::LIFER:
|
||||
{
|
||||
//use life abilities whenever possible.
|
||||
//use life abilities whenever possible. Well yes, but actually no
|
||||
//limits mana and in case of Zuran Orb it just sacrifices all lands
|
||||
AALifer * alife = (AALifer *) a;
|
||||
Targetable * _t = alife->getTarget();
|
||||
|
||||
efficiency = 100;
|
||||
efficiency = 80;
|
||||
AbilityFactory af(g);
|
||||
int suggestion = af.abilityEfficiency(a, p, MODE_ABILITY);
|
||||
|
||||
@@ -566,6 +586,12 @@ int OrderedAIAction::getEfficiency()
|
||||
{
|
||||
if (z == p->game->hand)
|
||||
efficiency = 10 + (owner->getRandomGenerator()->random() % 10);//random chance to bounce their own card;
|
||||
}
|
||||
// We don't want to return cards in play to own hand, save rare combos
|
||||
else if(target->currentZone == p->game->inPlay)
|
||||
{
|
||||
if (z == p->game->hand || z == p->game->library)
|
||||
efficiency = (owner->getRandomGenerator()->random() % 10);//random chance to bounce their own card;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -574,7 +600,11 @@ int OrderedAIAction::getEfficiency()
|
||||
}
|
||||
else
|
||||
{
|
||||
efficiency = 50;
|
||||
// We don't want to return the ability source cards that are in play to own hand, save rare combos
|
||||
// cards like Blinking Spirit used to be auto lose for AI
|
||||
if(z == p->game->hand || z == p->game->library)
|
||||
efficiency = 1;
|
||||
else efficiency = 50;
|
||||
//may abilities target the source until thier nested ability is activated, so 50% chance to use this
|
||||
//mover, until we can come up with something more elegent....
|
||||
}
|
||||
@@ -629,8 +659,8 @@ int OrderedAIAction::getEfficiency()
|
||||
SAFE_DELETE(parsedAICC);
|
||||
|
||||
}
|
||||
else
|
||||
efficiency = 0;
|
||||
else // this is why the AI never chooses any card at all? reveal is used to get cards so it should be at better value
|
||||
efficiency = 60;
|
||||
}
|
||||
//At this point the "basic" efficiency is computed, we further tweak it depending on general decisions, independent of theAbility type
|
||||
|
||||
@@ -652,8 +682,11 @@ int OrderedAIAction::getEfficiency()
|
||||
for(unsigned int i = 0; i < ec->costs.size();i++)
|
||||
{
|
||||
ExtraCost * tapper = dynamic_cast<TapCost*>(ec->costs[i]);
|
||||
ExtraCost * sacrifice = dynamic_cast<SacrificeCost*>(ec->costs[i]);
|
||||
if(tapper)
|
||||
continue;
|
||||
continue;
|
||||
else if(sacrifice)
|
||||
efficiency = efficiency / 3;
|
||||
else
|
||||
efficiency = efficiency / 2;
|
||||
}
|
||||
@@ -672,7 +705,21 @@ int OrderedAIAction::getEfficiency()
|
||||
{
|
||||
efficiency += 55;
|
||||
}
|
||||
SAFE_DELETE(transAbility);
|
||||
|
||||
if (ability->source)
|
||||
{
|
||||
if(ability->source->hasType(Subtypes::TYPE_PLANESWALKER))
|
||||
efficiency += 40;
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
SAFE_DELETE(transAbility);
|
||||
return efficiency;
|
||||
}
|
||||
|
||||
@@ -944,7 +991,7 @@ int OrderedAIAction::getRevealedEfficiency(MTGAbility * ability2)
|
||||
//nothing huge here, just ensuring that Ai makes his noncreature becomers into creatures during first main, so it can actually use them in combat.
|
||||
if (coreAbilityCardTarget && !coreAbilityCardTarget->isCreature() && currentPhase == MTG_PHASE_FIRSTMAIN)
|
||||
{
|
||||
eff2 = 100;
|
||||
eff2 = 70;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -957,7 +1004,7 @@ int OrderedAIAction::getRevealedEfficiency(MTGAbility * ability2)
|
||||
{
|
||||
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 = 90;//might be a bit random, but better than never using them.
|
||||
eff2 = 60;//might be a bit random, but better than never using them.
|
||||
}
|
||||
else
|
||||
eff2 = 0;
|
||||
@@ -2327,6 +2374,10 @@ int AIPlayerBaka::chooseTarget(TargetChooser * _tc, Player * forceTarget,MTGCard
|
||||
cardEffect = af.abilityEfficiency(withoutGuessing,this,MODE_TARGET,tc,NULL);
|
||||
delete withoutGuessing;
|
||||
}
|
||||
// Don't really like it but green mana producing auras targeting the player is one of the most reported bugs
|
||||
if(cardEffect == BAKA_EFFECT_DONTKNOW && tc->source->hasSubtype(Subtypes::TYPE_AURA) && tc->source->hasColor(Constants::MTG_COLOR_GREEN))
|
||||
cardEffect = BAKA_EFFECT_GOOD;
|
||||
|
||||
if (cardEffect != BAKA_EFFECT_GOOD)
|
||||
{
|
||||
target = this->opponent();
|
||||
@@ -2447,11 +2498,10 @@ int AIPlayerBaka::getEfficiency(MTGAbility * ability)
|
||||
int AIPlayerBaka::selectMenuOption()
|
||||
{
|
||||
ActionLayer * object = observer->mLayers->actionLayer();
|
||||
int doThis = -1;
|
||||
int doThis = 0; // The AI just passes on things if set to -1, getEfficiency should be improved
|
||||
if (object->menuObject)
|
||||
{
|
||||
int checkedLast = 0;
|
||||
|
||||
if(object->abilitiesMenu->isMultipleChoice && object->currentActionCard)
|
||||
{
|
||||
MenuAbility * currentMenu = NULL;
|
||||
@@ -2510,7 +2560,7 @@ MTGCardInstance * AIPlayerBaka::FindCardToPlay(ManaCost * pMana, const char * ty
|
||||
{
|
||||
nextCardToPlay = comboCards.back();
|
||||
gotPayments.clear();
|
||||
if((!pMana->canAfford(nextCardToPlay->getManaCost()) || nextCardToPlay->getManaCost()->getKicker()))
|
||||
if((!pMana->canAfford(nextCardToPlay->getManaCost()) || nextCardToPlay->getManaCost()->getKicker() || nextCardToPlay->getManaCost()->getBestow()))
|
||||
gotPayments = canPayMana(nextCardToPlay,nextCardToPlay->getManaCost());
|
||||
DebugTrace("ai is doing a combo:" << nextCardToPlay->getName());
|
||||
comboCards.pop_back();
|
||||
@@ -2524,159 +2574,175 @@ MTGCardInstance * AIPlayerBaka::FindCardToPlay(ManaCost * pMana, const char * ty
|
||||
card = NULL;
|
||||
gotPayments = vector<MTGAbility*>();
|
||||
//canplayfromgraveyard
|
||||
while ((card = cd.nextmatch(game->graveyard, card))&& card->has(Constants::CANPLAYFROMGRAVEYARD))
|
||||
{
|
||||
if (!CanHandleCost(card->getManaCost(),card))
|
||||
continue;
|
||||
while ((card = cd.nextmatch(game->graveyard, card)))
|
||||
{
|
||||
bool hasFlashback = false;
|
||||
|
||||
if (card->hasType(Subtypes::TYPE_LAND))
|
||||
{
|
||||
if (game->playRestrictions->canPutIntoZone(card, game->inPlay) == PlayRestriction::CANT_PLAY)
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (game->playRestrictions->canPutIntoZone(card, game->stack) == PlayRestriction::CANT_PLAY)
|
||||
continue;
|
||||
}
|
||||
if(card->getManaCost())
|
||||
if(card->getManaCost()->getFlashback())
|
||||
hasFlashback = true;
|
||||
|
||||
if (card->hasType(Subtypes::TYPE_LEGENDARY) && game->inPlay->findByName(card->name))
|
||||
continue;
|
||||
//glimmervoid alias to avoid ai stalling the game as the hint combo is stuck
|
||||
//next card to play was galvanic blast but on activate combo it clashes with glimmervoid...
|
||||
if ((card->alias == 48132) && (card->controller()->game->inPlay->countByType("artifact") < 1))
|
||||
continue;
|
||||
if( card->has(Constants::CANPLAYFROMGRAVEYARD) || card->has(Constants::TEMPFLASHBACK) || hasFlashback )
|
||||
{
|
||||
if (!CanHandleCost(card->getManaCost(),card))
|
||||
continue;
|
||||
|
||||
if (card->has(Constants::TREASON) && observer->getCurrentGamePhase() != MTG_PHASE_FIRSTMAIN)
|
||||
continue;
|
||||
if (hasFlashback && !CanHandleCost(card->getManaCost()->getFlashback(),card))
|
||||
continue;
|
||||
|
||||
if (card->hasType(Subtypes::TYPE_PLANESWALKER) && card->types.size() > 0 && game->inPlay->hasTypeSpecificInt(Subtypes::TYPE_PLANESWALKER,card->types[1]))
|
||||
continue;
|
||||
// Case were manacost is equal to flashback cost, if they are different the AI hangs
|
||||
if (hasFlashback && (card->getManaCost() != card->getManaCost()->getFlashback()) )
|
||||
continue;
|
||||
|
||||
if (card->hasType(Subtypes::TYPE_LAND))
|
||||
{
|
||||
if (game->playRestrictions->canPutIntoZone(card, game->inPlay) == PlayRestriction::CANT_PLAY)
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (game->playRestrictions->canPutIntoZone(card, game->stack) == PlayRestriction::CANT_PLAY)
|
||||
continue;
|
||||
}
|
||||
|
||||
if (card->hasType(Subtypes::TYPE_LEGENDARY) && game->inPlay->findByName(card->name))
|
||||
continue;
|
||||
//glimmervoid alias to avoid ai stalling the game as the hint combo is stuck
|
||||
//next card to play was galvanic blast but on activate combo it clashes with glimmervoid...
|
||||
if ((card->alias == 48132) && (card->controller()->game->inPlay->countByType("artifact") < 1))
|
||||
continue;
|
||||
|
||||
if (card->has(Constants::TREASON) && observer->getCurrentGamePhase() != MTG_PHASE_FIRSTMAIN)
|
||||
continue;
|
||||
|
||||
if (card->hasType(Subtypes::TYPE_PLANESWALKER) && card->types.size() > 0 && game->inPlay->hasTypeSpecificInt(Subtypes::TYPE_PLANESWALKER,card->types[1]))
|
||||
continue;
|
||||
|
||||
if(hints && hints->HintSaysItsForCombo(observer,card))
|
||||
{
|
||||
if(hints->canWeCombo(observer,card,this))
|
||||
{
|
||||
AbilityFactory af(observer);
|
||||
int canPlay = af.parseCastRestrictions(card,card->controller(),card->getRestrictions());
|
||||
if(!canPlay)
|
||||
continue;
|
||||
nextCardToPlay = card;
|
||||
gotPayments.clear();
|
||||
if((!pMana->canAfford(nextCardToPlay->getManaCost()) || nextCardToPlay->getManaCost()->getKicker()))
|
||||
gotPayments = canPayMana(nextCardToPlay,nextCardToPlay->getManaCost());
|
||||
return activateCombo();
|
||||
}
|
||||
else
|
||||
{
|
||||
nextCardToPlay = NULL;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
int currentCost = card->getManaCost()->getConvertedCost();
|
||||
int hasX = card->getManaCost()->hasX();
|
||||
gotPayments.clear();
|
||||
if((!pMana->canAfford(card->getManaCost()) || card->getManaCost()->getKicker()))
|
||||
gotPayments = canPayMana(card,card->getManaCost());
|
||||
//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())))
|
||||
{
|
||||
TargetChooserFactory tcf(observer);
|
||||
TargetChooser * tc = tcf.createTargetChooser(card);
|
||||
int shouldPlayPercentage = 0;
|
||||
if (tc)
|
||||
{
|
||||
int hasTarget = chooseTarget(tc,NULL,NULL,true);
|
||||
if(
|
||||
(tc->maxtargets > hasTarget && tc->maxtargets > 1 && !tc->targetMin && tc->maxtargets != TargetChooser::UNLITMITED_TARGETS) ||//target=<3>creature
|
||||
(tc->maxtargets == TargetChooser::UNLITMITED_TARGETS && hasTarget < 1)//target=creatures
|
||||
)
|
||||
hasTarget = 0;
|
||||
if (!hasTarget)//single target covered here.
|
||||
{
|
||||
SAFE_DELETE(tc);
|
||||
continue;
|
||||
}
|
||||
shouldPlayPercentage = 90;
|
||||
if(tc->targetMin && hasTarget < tc->maxtargets)
|
||||
shouldPlayPercentage = 0;
|
||||
if(tc->maxtargets > 1 && tc->maxtargets != TargetChooser::UNLITMITED_TARGETS && hasTarget <= tc->maxtargets)
|
||||
{
|
||||
int maxA = hasTarget-tc->maxtargets;
|
||||
shouldPlayPercentage += (10*maxA);//reduce the chances of playing multitarget if we are not above max targets.
|
||||
}
|
||||
if(tc->maxtargets == TargetChooser::UNLITMITED_TARGETS)
|
||||
{
|
||||
shouldPlayPercentage = 40 + (10*hasTarget);
|
||||
int totalCost = pMana->getConvertedCost()-currentCost;
|
||||
int totalTargets = hasTarget+hasTarget;
|
||||
if(hasX && totalCost <= totalTargets)// {x} spell with unlimited targeting tend to divide damage, we want atleast 1 damage per target before casting.
|
||||
{
|
||||
shouldPlayPercentage = 0;
|
||||
}
|
||||
}
|
||||
SAFE_DELETE(tc);
|
||||
}
|
||||
else
|
||||
{
|
||||
int shouldPlay = effectBadOrGood(card);
|
||||
if (shouldPlay == BAKA_EFFECT_GOOD)
|
||||
{
|
||||
shouldPlayPercentage = 90;
|
||||
}
|
||||
else if (BAKA_EFFECT_DONTKNOW == shouldPlay)
|
||||
{
|
||||
//previously shouldPlayPercentage = 80;, I found this a little to high
|
||||
//for cards which AI had no idea how to use.
|
||||
shouldPlayPercentage = 60;
|
||||
}
|
||||
else if (card->isLand())
|
||||
{
|
||||
shouldPlayPercentage = 90;
|
||||
}
|
||||
else
|
||||
{
|
||||
// shouldPlay == baka_effect_bad giving it a 1 for odd ball lottery chance.
|
||||
shouldPlayPercentage = 1;
|
||||
}
|
||||
|
||||
}
|
||||
//Reduce the chances of playing a spell with X cost if available mana is low
|
||||
if (hasX)
|
||||
{
|
||||
int xDiff = pMana->getConvertedCost() - currentCost;
|
||||
if (xDiff < 0)
|
||||
xDiff = 0;
|
||||
shouldPlayPercentage = shouldPlayPercentage - static_cast<int> ((shouldPlayPercentage * 1.9f) / (1 + xDiff));
|
||||
}
|
||||
if(card->getManaCost() && card->getManaCost()->getKicker() && card->getManaCost()->getKicker()->isMulti)
|
||||
{
|
||||
shouldPlayPercentage = 10* size_t(gotPayments.size())/int(1+(card->getManaCost()->getConvertedCost()+card->getManaCost()->getKicker()->getConvertedCost()));
|
||||
if(shouldPlayPercentage <= 10)
|
||||
shouldPlayPercentage = shouldPlayPercentage/3;
|
||||
}
|
||||
DebugTrace("Should I play " << (card ? card->name : "Nothing" ) << "?" << endl
|
||||
<<"shouldPlayPercentage = "<< shouldPlayPercentage);
|
||||
if(card->getRestrictions().size())
|
||||
{
|
||||
AbilityFactory af(observer);
|
||||
int canPlay = af.parseCastRestrictions(card,card->controller(),card->getRestrictions());
|
||||
if(!canPlay)
|
||||
continue;
|
||||
}
|
||||
int randomChance = randomGenerator.random();
|
||||
int chance = randomChance % 100;
|
||||
if (chance > shouldPlayPercentage)
|
||||
continue;
|
||||
if(shouldPlayPercentage <= 10)
|
||||
{
|
||||
DebugTrace("shouldPlayPercentage was less than 10 this was a lottery roll on RNG");
|
||||
}
|
||||
nextCardToPlay = card;
|
||||
maxCost = currentCost;
|
||||
if (hasX)
|
||||
maxCost = pMana->getConvertedCost();
|
||||
}
|
||||
if(hints && hints->HintSaysItsForCombo(observer,card))
|
||||
{
|
||||
if(hints->canWeCombo(observer,card,this))
|
||||
{
|
||||
AbilityFactory af(observer);
|
||||
int canPlay = af.parseCastRestrictions(card,card->controller(),card->getRestrictions());
|
||||
if(!canPlay)
|
||||
continue;
|
||||
nextCardToPlay = card;
|
||||
gotPayments.clear();
|
||||
if((!pMana->canAfford(nextCardToPlay->getManaCost()) || nextCardToPlay->getManaCost()->getKicker()))
|
||||
gotPayments = canPayMana(nextCardToPlay,nextCardToPlay->getManaCost());
|
||||
return activateCombo();
|
||||
}
|
||||
else
|
||||
{
|
||||
nextCardToPlay = NULL;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
int currentCost = card->getManaCost()->getConvertedCost();
|
||||
int hasX = card->getManaCost()->hasX();
|
||||
gotPayments.clear();
|
||||
if((!pMana->canAfford(card->getManaCost()) || card->getManaCost()->getKicker()))
|
||||
gotPayments = canPayMana(card,card->getManaCost());
|
||||
//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())))
|
||||
{
|
||||
TargetChooserFactory tcf(observer);
|
||||
TargetChooser * tc = tcf.createTargetChooser(card);
|
||||
int shouldPlayPercentage = 0;
|
||||
if (tc)
|
||||
{
|
||||
int hasTarget = chooseTarget(tc,NULL,NULL,true);
|
||||
if(
|
||||
(tc->maxtargets > hasTarget && tc->maxtargets > 1 && !tc->targetMin && tc->maxtargets != TargetChooser::UNLITMITED_TARGETS) ||//target=<3>creature
|
||||
(tc->maxtargets == TargetChooser::UNLITMITED_TARGETS && hasTarget < 1)//target=creatures
|
||||
)
|
||||
hasTarget = 0;
|
||||
if (!hasTarget)//single target covered here.
|
||||
{
|
||||
SAFE_DELETE(tc);
|
||||
continue;
|
||||
}
|
||||
shouldPlayPercentage = 90;
|
||||
if(tc->targetMin && hasTarget < tc->maxtargets)
|
||||
shouldPlayPercentage = 0;
|
||||
if(tc->maxtargets > 1 && tc->maxtargets != TargetChooser::UNLITMITED_TARGETS && hasTarget <= tc->maxtargets)
|
||||
{
|
||||
int maxA = hasTarget-tc->maxtargets;
|
||||
shouldPlayPercentage += (10*maxA);//reduce the chances of playing multitarget if we are not above max targets.
|
||||
}
|
||||
if(tc->maxtargets == TargetChooser::UNLITMITED_TARGETS)
|
||||
{
|
||||
shouldPlayPercentage = 40 + (10*hasTarget);
|
||||
int totalCost = pMana->getConvertedCost()-currentCost;
|
||||
int totalTargets = hasTarget+hasTarget;
|
||||
if(hasX && totalCost <= totalTargets)// {x} spell with unlimited targeting tend to divide damage, we want atleast 1 damage per target before casting.
|
||||
{
|
||||
shouldPlayPercentage = 0;
|
||||
}
|
||||
}
|
||||
SAFE_DELETE(tc);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Refactor to not check effect of lands since it always returned BAKA_EFFECT_DONTKNOW
|
||||
// If it is a land, play it
|
||||
if (card->isLand())
|
||||
{
|
||||
shouldPlayPercentage = 90;
|
||||
}
|
||||
else {
|
||||
int shouldPlay = effectBadOrGood(card);
|
||||
if (shouldPlay == BAKA_EFFECT_GOOD) {
|
||||
shouldPlayPercentage = 90;
|
||||
}
|
||||
else if (BAKA_EFFECT_DONTKNOW == shouldPlay) {
|
||||
//previously shouldPlayPercentage = 80;, I found this a little to high
|
||||
//for cards which AI had no idea how to use.
|
||||
shouldPlayPercentage = 60;
|
||||
}
|
||||
else {
|
||||
// shouldPlay == baka_effect_bad giving it a 10 for odd ball lottery chance.
|
||||
shouldPlayPercentage = 10;
|
||||
}
|
||||
}
|
||||
}
|
||||
//Reduce the chances of playing a spell with X cost if available mana is low
|
||||
if (hasX)
|
||||
{
|
||||
int xDiff = pMana->getConvertedCost() - currentCost;
|
||||
if (xDiff < 0)
|
||||
xDiff = 0;
|
||||
shouldPlayPercentage = shouldPlayPercentage - static_cast<int> ((shouldPlayPercentage * 1.9f) / (1 + xDiff));
|
||||
}
|
||||
if(card->getManaCost() && card->getManaCost()->getKicker() && card->getManaCost()->getKicker()->isMulti)
|
||||
{
|
||||
shouldPlayPercentage = 10* size_t(gotPayments.size())/int(1+(card->getManaCost()->getConvertedCost()+card->getManaCost()->getKicker()->getConvertedCost()));
|
||||
if(shouldPlayPercentage <= 10)
|
||||
shouldPlayPercentage = shouldPlayPercentage/3;
|
||||
}
|
||||
DebugTrace("Should I play from grave " << (card ? card->name : "Nothing" ) << "?" << endl
|
||||
<<"shouldPlayPercentage = "<< shouldPlayPercentage);
|
||||
if(card->getRestrictions().size())
|
||||
{
|
||||
AbilityFactory af(observer);
|
||||
int canPlay = af.parseCastRestrictions(card,card->controller(),card->getRestrictions());
|
||||
if(!canPlay)
|
||||
continue;
|
||||
}
|
||||
int randomChance = randomGenerator.random();
|
||||
int chance = randomChance % 100;
|
||||
if (chance > shouldPlayPercentage)
|
||||
continue;
|
||||
if(shouldPlayPercentage <= 10)
|
||||
{
|
||||
DebugTrace("shouldPlayPercentage was less than 10 this was a lottery roll on RNG");
|
||||
}
|
||||
nextCardToPlay = card;
|
||||
maxCost = currentCost;
|
||||
if (hasX)
|
||||
maxCost = pMana->getConvertedCost();
|
||||
}
|
||||
}
|
||||
}
|
||||
//canplayfromexile
|
||||
while ((card = cd.nextmatch(game->exile, card))&& card->has(Constants::CANPLAYFROMEXILE))
|
||||
@@ -2774,27 +2840,27 @@ MTGCardInstance * AIPlayerBaka::FindCardToPlay(ManaCost * pMana, const char * ty
|
||||
}
|
||||
else
|
||||
{
|
||||
int shouldPlay = effectBadOrGood(card);
|
||||
if (shouldPlay == BAKA_EFFECT_GOOD)
|
||||
// Refactor to not check effect of lands since it always returned BAKA_EFFECT_DONTKNOW
|
||||
// If it is a land, play it
|
||||
if (card->isLand())
|
||||
{
|
||||
shouldPlayPercentage = 90;
|
||||
}
|
||||
else if (BAKA_EFFECT_DONTKNOW == shouldPlay)
|
||||
{
|
||||
//previously shouldPlayPercentage = 80;, I found this a little to high
|
||||
//for cards which AI had no idea how to use.
|
||||
shouldPlayPercentage = 60;
|
||||
}
|
||||
else if (card->isLand())
|
||||
{
|
||||
shouldPlayPercentage = 90;
|
||||
}
|
||||
else
|
||||
{
|
||||
// shouldPlay == baka_effect_bad giving it a 1 for odd ball lottery chance.
|
||||
shouldPlayPercentage = 1;
|
||||
}
|
||||
|
||||
}
|
||||
else {
|
||||
int shouldPlay = effectBadOrGood(card);
|
||||
if (shouldPlay == BAKA_EFFECT_GOOD) {
|
||||
shouldPlayPercentage = 90;
|
||||
}
|
||||
else if (BAKA_EFFECT_DONTKNOW == shouldPlay) {
|
||||
//previously shouldPlayPercentage = 80;, I found this a little to high
|
||||
//for cards which AI had no idea how to use.
|
||||
shouldPlayPercentage = 60;
|
||||
}
|
||||
else {
|
||||
// shouldPlay == baka_effect_bad giving it a 10 for odd ball lottery chance.
|
||||
shouldPlayPercentage = 10;
|
||||
}
|
||||
}
|
||||
}
|
||||
//Reduce the chances of playing a spell with X cost if available mana is low
|
||||
if (hasX)
|
||||
@@ -2810,7 +2876,7 @@ MTGCardInstance * AIPlayerBaka::FindCardToPlay(ManaCost * pMana, const char * ty
|
||||
if(shouldPlayPercentage <= 10)
|
||||
shouldPlayPercentage = shouldPlayPercentage/3;
|
||||
}
|
||||
DebugTrace("Should I play " << (card ? card->name : "Nothing" ) << "?" << endl
|
||||
DebugTrace("Should I play from exile" << (card ? card->name : "Nothing" ) << "?" << endl
|
||||
<<"shouldPlayPercentage = "<< shouldPlayPercentage);
|
||||
if(card->getRestrictions().size())
|
||||
{
|
||||
@@ -2859,8 +2925,9 @@ MTGCardInstance * AIPlayerBaka::FindCardToPlay(ManaCost * pMana, const char * ty
|
||||
if (card->has(Constants::TREASON) && observer->getCurrentGamePhase() != MTG_PHASE_FIRSTMAIN)
|
||||
continue;
|
||||
|
||||
if (card->hasType(Subtypes::TYPE_PLANESWALKER) && card->types.size() > 0 && game->inPlay->hasTypeSpecificInt(Subtypes::TYPE_PLANESWALKER,card->types[1]))
|
||||
continue;
|
||||
//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;
|
||||
|
||||
if(hints && hints->HintSaysItsForCombo(observer,card))
|
||||
{
|
||||
@@ -2928,27 +2995,27 @@ MTGCardInstance * AIPlayerBaka::FindCardToPlay(ManaCost * pMana, const char * ty
|
||||
}
|
||||
else
|
||||
{
|
||||
int shouldPlay = effectBadOrGood(card);
|
||||
if (shouldPlay == BAKA_EFFECT_GOOD)
|
||||
// Refactor to not check effect of lands since it always returned BAKA_EFFECT_DONTKNOW
|
||||
// If it is a land, play it
|
||||
if (card->isLand())
|
||||
{
|
||||
shouldPlayPercentage = 90;
|
||||
}
|
||||
else if (BAKA_EFFECT_DONTKNOW == shouldPlay)
|
||||
{
|
||||
//previously shouldPlayPercentage = 80;, I found this a little to high
|
||||
//for cards which AI had no idea how to use.
|
||||
shouldPlayPercentage = 60;
|
||||
}
|
||||
else if (card->isLand())
|
||||
{
|
||||
shouldPlayPercentage = 90;
|
||||
}
|
||||
else
|
||||
{
|
||||
// shouldPlay == baka_effect_bad giving it a 1 for odd ball lottery chance.
|
||||
shouldPlayPercentage = 1;
|
||||
}
|
||||
|
||||
}
|
||||
else {
|
||||
int shouldPlay = effectBadOrGood(card);
|
||||
if (shouldPlay == BAKA_EFFECT_GOOD) {
|
||||
shouldPlayPercentage = 90;
|
||||
}
|
||||
else if (BAKA_EFFECT_DONTKNOW == shouldPlay) {
|
||||
//previously shouldPlayPercentage = 80;, I found this a little to high
|
||||
//for cards which AI had no idea how to use.
|
||||
shouldPlayPercentage = 60;
|
||||
}
|
||||
else {
|
||||
// shouldPlay == baka_effect_bad giving it a 10 for odd ball lottery chance.
|
||||
shouldPlayPercentage = 10;
|
||||
}
|
||||
}
|
||||
}
|
||||
//Reduce the chances of playing a spell with X cost if available mana is low
|
||||
if (hasX)
|
||||
@@ -2964,7 +3031,7 @@ MTGCardInstance * AIPlayerBaka::FindCardToPlay(ManaCost * pMana, const char * ty
|
||||
if(shouldPlayPercentage <= 10)
|
||||
shouldPlayPercentage = shouldPlayPercentage/3;
|
||||
}
|
||||
DebugTrace("Should I play " << (card ? card->name : "Nothing" ) << "?" << endl
|
||||
DebugTrace("Should I play from hand" << (card ? card->name : "Nothing" ) << "?" << endl
|
||||
<<"shouldPlayPercentage = "<< shouldPlayPercentage);
|
||||
if(card->getRestrictions().size())
|
||||
{
|
||||
@@ -3391,12 +3458,17 @@ 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;
|
||||
//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);
|
||||
int myCreatures = getCreaturesInfo(this, INFO_NBCREATURES, -1, 1);
|
||||
if(opponent()->life < 5)
|
||||
agressivity += 31;
|
||||
|
||||
bool attack = ((myCreatures > opponentCreatures) || (myForce > opponentForce) || (myForce > 2 * opponent()->life));
|
||||
if (agressivity > 80 && !attack && life > opponentForce)
|
||||
{
|
||||
@@ -3413,7 +3485,7 @@ int AIPlayerBaka::chooseAttackers()
|
||||
MTGCardInstance * card = NULL;
|
||||
while ((card = cd.nextmatch(game->inPlay, card)))
|
||||
{
|
||||
if (hints && hints->HintSaysAlwaysAttack(observer, card))
|
||||
if ((hints && hints->HintSaysAlwaysAttack(observer, card)) || card->has(Constants::UNBLOCKABLE))
|
||||
{
|
||||
if (!card->isAttacker())
|
||||
{
|
||||
|
||||
@@ -274,8 +274,8 @@ void StackAbility::Render()
|
||||
else
|
||||
fmLibrary++;
|
||||
}
|
||||
else
|
||||
mytargetQuads.push_back( ((Damageable *)(tt))->getIcon() );
|
||||
//else // This was crashing the game when a permanent targeted a spell in the stack
|
||||
//mytargetQuads.push_back( ((Damageable *)(tt))->getIcon() );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -711,7 +711,8 @@ int ActionStack::addAbility(MTGAbility * ability)
|
||||
if (!observer->players[0]->isAI() && ability->source->controller() == observer->players[0] && 0
|
||||
== options[Options::INTERRUPTMYABILITIES].number)
|
||||
{
|
||||
if(observer->gameType() == GAME_TYPE_MOMIR && ability->aType == MTGAbility::FORCED_TOKEN_CREATOR)
|
||||
if((observer->gameType() == GAME_TYPE_MOMIR && ability->aType == MTGAbility::FORCED_TOKEN_CREATOR)||
|
||||
(dynamic_cast<GenericTargetAbility *>(ability) && ability->canBeInterrupted && !observer->OpenedDisplay && !observer->players[0]->game->reveal->cards.size()))//test interrupt...
|
||||
interruptDecision[0] = NOT_DECIDED;
|
||||
else
|
||||
interruptDecision[0] = DONT_INTERRUPT;
|
||||
@@ -1040,7 +1041,7 @@ void ActionStack::Update(float dt)
|
||||
if (getCurrentTutorial() && (observer->players[0]->isHuman() || observer->players[1]->isHuman() ) )
|
||||
return;
|
||||
|
||||
if (observer->mLayers->actionLayer()->menuObject || observer->LPWeffect)
|
||||
if (observer->mLayers->actionLayer()->menuObject)// || observer->LPWeffect) //test fix for hang for both legendary with action/reveal
|
||||
if(observer->players[0]->isHuman() || observer->players[1]->isHuman())
|
||||
return;//dont do any of this if a menuobject exist.
|
||||
|
||||
|
||||
@@ -6046,6 +6046,7 @@ ATransformer::ATransformer(GameObserver* observer, int id, MTGCardInstance * sou
|
||||
}
|
||||
myCurrentTurn = 1000;
|
||||
//this subkeyword adds a color without removing the existing colors.
|
||||
removemc = (sabilities.find("removemc") != string::npos);
|
||||
addNewColors = (sabilities.find("newcolors") != string::npos);
|
||||
remove = (stypes.find("removealltypes") != string::npos);
|
||||
removeCreatureSubtypes = (stypes.find("removecreaturesubtypes") != string::npos);
|
||||
@@ -6235,6 +6236,9 @@ for (it = types.begin(); it != types.end(); it++)
|
||||
_target->addbaseT(val->getValue());
|
||||
delete val;
|
||||
}
|
||||
//remove manacost
|
||||
if(removemc)
|
||||
_target->getManaCost()->resetCosts();
|
||||
|
||||
return MTGAbility::addToGame();
|
||||
}
|
||||
@@ -7729,11 +7733,14 @@ void ABlink::resolveBlink()
|
||||
this->forceDestroy = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
if (_target && _target->next)
|
||||
_target = _target->next;
|
||||
_target->blinked = true;
|
||||
Blinked = _target;
|
||||
if(source->isPermanent()&&!source->isInPlay(game))
|
||||
{
|
||||
Blinked->blinked = false;
|
||||
}
|
||||
if (!blinkueot && !blinkForSource)
|
||||
{
|
||||
returnCardIntoPlay(_target);
|
||||
|
||||
@@ -461,12 +461,16 @@ void CardGui::Render()
|
||||
}
|
||||
|
||||
string buff = "";
|
||||
string starMark = "";
|
||||
if(card->exerted)
|
||||
starMark += "exerted";
|
||||
if(card->isToken && !card->isACopier)
|
||||
buff = "T";
|
||||
if(card->isToken && card->isACopier)
|
||||
buff = "CT";
|
||||
if(!card->isToken && card->isACopier)
|
||||
buff = "C";
|
||||
buff = starMark + buff;
|
||||
//if(card->has(Constants::PAYZERO))
|
||||
//buff += "Z";
|
||||
if(card->chooseacolor >= 1)
|
||||
|
||||
@@ -417,10 +417,11 @@ ManaCost* CardPrimitive::getManaCost()
|
||||
|
||||
bool CardPrimitive::hasType(int _type)
|
||||
{
|
||||
for (size_t i = 0; i < types.size(); i++)
|
||||
if (types[i] == _type)
|
||||
return true;
|
||||
return false;
|
||||
if (types.size() > 400) {return false;} // Null pointer?
|
||||
for (size_t i = 0; i < types.size(); i++)
|
||||
if (types[i] == _type)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
bool CardPrimitive::hasSubtype(int _subtype)
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
#include "PrecompiledHeader.h"
|
||||
#include "DeckView.h"
|
||||
|
||||
#include "GameOptions.h"
|
||||
|
||||
@@ -367,7 +367,7 @@ int GameOptions::load()
|
||||
(*this)[Options::MAX_GRADE].number = Constants::GRADE_BORDERLINE;
|
||||
|
||||
if (!(*this)[Options::AIDECKS_UNLOCKED].number)
|
||||
(*this)[Options::AIDECKS_UNLOCKED].number = 10;
|
||||
(*this)[Options::AIDECKS_UNLOCKED].number = 20;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -1353,7 +1353,7 @@ void GameStateDeckViewer::renderOnScreenMenu()
|
||||
sprintf(buffer, STATS_TITLE_FORMAT.c_str(), mStatsWrapper->currentPage, _("Mana cost per color").c_str());
|
||||
font->DrawString(buffer, 10 + 20 + leftTransition, 10);
|
||||
|
||||
font->DrawString(_("Total colored manasymbols in cards' casting costs:"), 20 + 20 + leftTransition, 30);
|
||||
font->DrawString(_("Total colored mana symbols in cards' casting costs:"), 20 + 20 + leftTransition, 30);
|
||||
|
||||
posY = 50;
|
||||
for (int i = 1; i < Constants::NB_Colors - 1; i++)
|
||||
|
||||
@@ -770,7 +770,10 @@ void GameStateDuel::Update(float dt)
|
||||
musictrack = "ai_baka_music_momir.mp3";
|
||||
else if (mParent->gameType == GAME_TYPE_RANDOM1 || mParent->gameType == GAME_TYPE_RANDOM2) musictrack
|
||||
= "ai_baka_music_random.mp3";
|
||||
|
||||
else if (mParent->gameType == GAME_TYPE_RANDOM3 || mParent->gameType == GAME_TYPE_RANDOM5) musictrack
|
||||
= "ai_baka_music_random.mp3";
|
||||
else if (mParent->gameType == GAME_TYPE_HORDE || mParent->gameType == GAME_TYPE_SET_LIMITED) musictrack
|
||||
= "ai_baka_music_momir.mp3";
|
||||
if (!MusicExist(musictrack))
|
||||
musictrack = "ai_baka_music.mp3";
|
||||
|
||||
|
||||
@@ -250,8 +250,8 @@ void GameStateOptions::Render()
|
||||
"",
|
||||
"Dev Team:",
|
||||
"Abrasax, Almosthumane, Daddy32, DJardin, Dr.Solomat, J, Jeck,",
|
||||
"kevlahnota, Leungclj, linshier, Mootpoint, Mnguyen, Psyringe,",
|
||||
"Rolzad73, Salmelo, Superhiro, Wololo, Yeshua, Zethfox",
|
||||
"kevlahnota, Leungclj, linshier, Mootpoint, Mnguyen, Ph34rbot,",
|
||||
"Psyringe, Rolzad73, Salmelo, Superhiro, Wololo, Yeshua, Zethfox",
|
||||
"",
|
||||
"Music by Celestial Aeon Project, http://www.jamendo.com",
|
||||
"",
|
||||
|
||||
@@ -312,7 +312,7 @@ void GuiPlay::Render()
|
||||
MTGCardInstance * ctarget = ((MTGCardInstance *)(*it)->card->isAttacking);
|
||||
if(ctarget->hasType(Subtypes::TYPE_PLANESWALKER) && observer->isInPlay(ctarget) && observer->getCurrentGamePhase() < MTG_PHASE_COMBATEND)
|
||||
{
|
||||
JRenderer::GetInstance()->DrawLine((*it)->actX,(*it)->actY,ctarget->view->actX,ctarget->view->actY,0.5f,ARGB(128 - wave, 255, 20, 0));
|
||||
JRenderer::GetInstance()->DrawLine((*it)->actX,(*it)->actY,ctarget->view->actX,ctarget->view->actY,0.5f,ARGB(128 - wave, 255, 40, 40));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -120,13 +120,13 @@ void GuiAvatar::Render()
|
||||
case TOP_LEFT:
|
||||
mFont->SetColor(ARGB((int)actA / 4, 0, 0, 0));
|
||||
mFont->DrawString(buffer, actX + 2, actY - 2);
|
||||
mFont->SetScale(1.3f);
|
||||
mFont->SetScale(1.5f);
|
||||
mFont->SetColor(ARGB((int)actA, lx, ly, lz));
|
||||
mFont->DrawString(buffer, actX + 1, actY - 1);
|
||||
mFont->SetScale(1);
|
||||
break;
|
||||
case BOTTOM_RIGHT:
|
||||
mFont->SetScale(1.3f);
|
||||
mFont->SetScale(1.4f);
|
||||
mFont->SetColor(ARGB((int)actA, lx, ly, lz));
|
||||
mFont->DrawString(buffer, actX, actY - 14, JGETEXT_RIGHT);
|
||||
mFont->SetScale(1);
|
||||
@@ -134,7 +134,7 @@ void GuiAvatar::Render()
|
||||
}
|
||||
//poison
|
||||
char poison[10];
|
||||
if (poisonCount >= 0)
|
||||
if (poisonCount > 0)
|
||||
{
|
||||
sprintf(poison, "%i", poisonCount);
|
||||
switch (corner)
|
||||
@@ -151,7 +151,7 @@ void GuiAvatar::Render()
|
||||
}
|
||||
//energy
|
||||
char energy[15];
|
||||
if (energyCount >= 0)
|
||||
if (energyCount > 0)
|
||||
{
|
||||
sprintf(energy, "%i", energyCount);
|
||||
switch (corner)
|
||||
|
||||
@@ -386,7 +386,10 @@ int AbilityFactory::parseCastRestrictions(MTGCardInstance * card, Player * playe
|
||||
for(unsigned int gy = 0;gy < grave->cardsSeenThisTurn.size();gy++)
|
||||
{
|
||||
MTGCardInstance * checkCard = grave->cardsSeenThisTurn[gy];
|
||||
if(checkCard->isCreature())
|
||||
if(checkCard->isCreature() &&
|
||||
((checkCard->previousZone == checkCurrent->game->battlefield)||
|
||||
(checkCard->previousZone == checkCurrent->opponent()->game->battlefield))//died from battlefield
|
||||
)
|
||||
{
|
||||
isMorbid = true;
|
||||
break;
|
||||
@@ -398,7 +401,26 @@ int AbilityFactory::parseCastRestrictions(MTGCardInstance * card, Player * playe
|
||||
if(!isMorbid)
|
||||
return 0;
|
||||
}
|
||||
|
||||
check = restriction[i].find("zerodead");
|
||||
if(check != string::npos)//returns true if zero
|
||||
{
|
||||
bool hasDeadCreature = false;
|
||||
Player * checkCurrent = card->controller();
|
||||
MTGGameZone * grave = checkCurrent->game->graveyard;
|
||||
for(unsigned int gy = 0;gy < grave->cardsSeenThisTurn.size();gy++)
|
||||
{
|
||||
MTGCardInstance * checkCard = grave->cardsSeenThisTurn[gy];
|
||||
if(checkCard->isCreature() &&
|
||||
((checkCard->previousZone == checkCurrent->game->battlefield))//died from your battlefield
|
||||
)
|
||||
{
|
||||
hasDeadCreature = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(hasDeadCreature)
|
||||
return 0;
|
||||
}
|
||||
//Ensnaring Bridge
|
||||
check = restriction[i].find("powermorethanopponenthand");
|
||||
if (check != string::npos)//for opponent creatures
|
||||
@@ -432,13 +454,14 @@ int AbilityFactory::parseCastRestrictions(MTGCardInstance * card, Player * playe
|
||||
MTGGameZone * grave = checkCurrent->game->graveyard;
|
||||
|
||||
int checkTypesAmount = 0;
|
||||
if(grave->hasType("creature")) checkTypesAmount++;
|
||||
if (grave->hasType("creature")) checkTypesAmount++;
|
||||
if (grave->hasType("enchantment")) checkTypesAmount++;
|
||||
if (grave->hasType("sorcery")) checkTypesAmount++;
|
||||
if (grave->hasType("instant")) checkTypesAmount++;
|
||||
if (grave->hasType("land")) checkTypesAmount++;
|
||||
if (grave->hasType("artifact")) checkTypesAmount++;
|
||||
if (grave->hasType("planeswalker")) checkTypesAmount++;
|
||||
if (grave->hasType("tribal")) checkTypesAmount++;
|
||||
if (checkTypesAmount < 4)
|
||||
return 0;
|
||||
}
|
||||
@@ -450,13 +473,14 @@ int AbilityFactory::parseCastRestrictions(MTGCardInstance * card, Player * playe
|
||||
MTGGameZone * grave = checkCurrent->game->graveyard;
|
||||
|
||||
int checkTypesAmount = 0;
|
||||
if(grave->hasType("creature")) checkTypesAmount++;
|
||||
if (grave->hasType("creature")) checkTypesAmount++;
|
||||
if (grave->hasType("enchantment")) checkTypesAmount++;
|
||||
if (grave->hasType("sorcery")) checkTypesAmount++;
|
||||
if (grave->hasType("instant")) checkTypesAmount++;
|
||||
if (grave->hasType("land")) checkTypesAmount++;
|
||||
if (grave->hasType("artifact")) checkTypesAmount++;
|
||||
if (grave->hasType("planeswalker")) checkTypesAmount++;
|
||||
if (grave->hasType("tribal")) checkTypesAmount++;
|
||||
if (checkTypesAmount > 3)
|
||||
return 0;
|
||||
}
|
||||
@@ -552,6 +576,20 @@ int AbilityFactory::parseCastRestrictions(MTGCardInstance * card, Player * playe
|
||||
return 0;
|
||||
}
|
||||
|
||||
check = restriction[i].find("hasexerted");
|
||||
if(check != string::npos)
|
||||
{
|
||||
if(!card->exerted)
|
||||
return 0;
|
||||
}
|
||||
|
||||
check = restriction[i].find("notexerted");
|
||||
if(check != string::npos)
|
||||
{
|
||||
if(card->exerted)
|
||||
return 0;
|
||||
}
|
||||
|
||||
check = restriction[i].find("discardbyopponent");
|
||||
if(check != string::npos)
|
||||
{
|
||||
@@ -1068,6 +1106,10 @@ TriggeredAbility * AbilityFactory::parseTrigger(string s, string, int id, Spell
|
||||
if (TargetChooser *tc = parseSimpleTC(s,"phasedin", card))
|
||||
return NEW TrCardPhasesIn(observer, id, card, tc,once);
|
||||
|
||||
//Card Exerted
|
||||
if (TargetChooser *tc = parseSimpleTC(s,"exerted", card))
|
||||
return NEW TrCardExerted(observer, id, card, tc,once);
|
||||
|
||||
//CombatTrigger
|
||||
//Card card attacked and is blocked
|
||||
found = s.find("combat(");
|
||||
@@ -1793,7 +1835,8 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG
|
||||
tc->targetter = NULL;
|
||||
}
|
||||
else
|
||||
tc->targetter->bypassTC = false;
|
||||
if (tc->targetter)
|
||||
tc->targetter->bypassTC = false;
|
||||
sWithoutTc = splitTarget[0];
|
||||
sWithoutTc.append(splitTarget[2]);
|
||||
}
|
||||
@@ -1893,7 +1936,7 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG
|
||||
{
|
||||
if (!(spell && spell->FullfilledAlternateCost(kAlternateCostIds[i])))
|
||||
{
|
||||
DebugTrace("INFO parseMagicLine: Alternative Cost was not fulfilled for " << s);
|
||||
DebugTrace("INFO parseMagicLine: Alternative Cost was not fulfilled for " << spell << s);
|
||||
SAFE_DELETE(tc);
|
||||
return NULL;
|
||||
}
|
||||
@@ -2926,7 +2969,20 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG
|
||||
((AManifest*)a)->withenchant = true;
|
||||
return a;
|
||||
}
|
||||
|
||||
//exert
|
||||
found = s.find("exert");
|
||||
if (found != string::npos)
|
||||
{
|
||||
MTGAbility * a = NEW AExert(observer, id, card, target);
|
||||
a->oneShot = 1;
|
||||
if(storedAndAbility.size())
|
||||
{
|
||||
string stored = storedAndAbility;
|
||||
storedAndAbility.clear();
|
||||
((AExert*)a)->andAbility = parseMagicLine(stored, id, spell, card);
|
||||
}
|
||||
return a;
|
||||
}
|
||||
//provoke
|
||||
found = s.find("provoke");
|
||||
if (found != string::npos)
|
||||
@@ -3457,7 +3513,7 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG
|
||||
|
||||
//produce additional mana when a mana is engaged
|
||||
if (s.find("producecolor:") != string::npos)
|
||||
{
|
||||
{
|
||||
return NEW AEngagedManaAbility(observer, id, card,s.substr(13));
|
||||
}
|
||||
|
||||
@@ -4039,13 +4095,14 @@ MTGAbility * AbilityFactory::parseMagicLine(string s, int id, Spell * spell, MTG
|
||||
return NEW ANewAffinity(observer, id, card, tcString, manaString);
|
||||
}
|
||||
|
||||
//proliferate
|
||||
//proliferate, rule changes in War of the Spark set
|
||||
found = s.find("proliferate");
|
||||
if (found != string::npos)
|
||||
{
|
||||
MTGAbility * a = NEW AAProliferate(observer, id, card, target);
|
||||
a->oneShot = 1;
|
||||
a->canBeInterrupted = false;
|
||||
((AAProliferate*)a)->allcounters = true;
|
||||
return a;
|
||||
}
|
||||
//proliferate all counters
|
||||
@@ -4490,6 +4547,10 @@ int AbilityFactory::abilityEfficiency(MTGAbility * a, Player * p, int mode, Targ
|
||||
return BAKA_EFFECT_BAD;
|
||||
if (dynamic_cast<AManaProducer *> (a))
|
||||
return BAKA_EFFECT_GOOD;
|
||||
if (dynamic_cast<AARemoveAllCounter *> (a))
|
||||
return BAKA_EFFECT_BAD;
|
||||
if (dynamic_cast<AAProliferate *> (a))
|
||||
return BAKA_EFFECT_GOOD;
|
||||
|
||||
// Equipment that gets immediately attached. Todo: check the abilities associated with Equip, to make sure they're good (for now it seems to be the majority of the cases)?
|
||||
if (dynamic_cast<AEquip *> (a))
|
||||
@@ -4513,12 +4574,12 @@ int AbilityFactory::abilityEfficiency(MTGAbility * a, Player * p, int mode, Targ
|
||||
if (AAMover * aam = dynamic_cast<AAMover *>(a))
|
||||
{
|
||||
MTGGameZone * z = aam->destinationZone(target);
|
||||
if (tc && tc->targetsZone(p->game->library))
|
||||
if ((tc && tc->targetsZone(p->game->library)) || (tc && tc->targetsZone(p->game->graveyard)) || (tc && tc->targetsZone(p->game->hand)))
|
||||
{
|
||||
if (z == p->game->hand || z == p->game->inPlay)
|
||||
return BAKA_EFFECT_GOOD;
|
||||
}
|
||||
return BAKA_EFFECT_BAD; //TODO
|
||||
return BAKA_EFFECT_BAD; //TODO
|
||||
}
|
||||
|
||||
if (dynamic_cast<AACopier *> (a))
|
||||
@@ -4543,6 +4604,35 @@ int AbilityFactory::abilityEfficiency(MTGAbility * a, Player * p, int mode, Targ
|
||||
return BAKA_EFFECT_GOOD;
|
||||
if (dynamic_cast<ABushidoAbility *> (a))
|
||||
return BAKA_EFFECT_GOOD;
|
||||
if (dynamic_cast<AACascade *> (a))
|
||||
return BAKA_EFFECT_GOOD;
|
||||
if (dynamic_cast<AACastCard *> (a))
|
||||
return BAKA_EFFECT_GOOD;
|
||||
if (dynamic_cast<AAFlip *> (a))
|
||||
return BAKA_EFFECT_GOOD;
|
||||
if (dynamic_cast<AAImprint *> (a))
|
||||
return BAKA_EFFECT_GOOD;
|
||||
if (dynamic_cast<ABestow *> (a))
|
||||
return BAKA_EFFECT_GOOD;
|
||||
if (dynamic_cast<AExert *> (a))
|
||||
return BAKA_EFFECT_GOOD;
|
||||
if (dynamic_cast<ALoseAbilities *> (a))
|
||||
return BAKA_EFFECT_BAD;
|
||||
if (dynamic_cast<AModularAbility *> (a))
|
||||
return BAKA_EFFECT_GOOD;
|
||||
if (dynamic_cast<APaired *> (a))
|
||||
return BAKA_EFFECT_GOOD;
|
||||
if (dynamic_cast<AProduceMana *> (a))
|
||||
return BAKA_EFFECT_GOOD;
|
||||
if (dynamic_cast<AACloner *> (a))
|
||||
return BAKA_EFFECT_GOOD;
|
||||
if (dynamic_cast<AAModTurn *> (a))
|
||||
return BAKA_EFFECT_GOOD;
|
||||
if (dynamic_cast<ATransformer *> (a))
|
||||
return BAKA_EFFECT_GOOD;
|
||||
if (dynamic_cast<AADamager *> (a))
|
||||
return BAKA_EFFECT_BAD;
|
||||
|
||||
if (PTInstant * abi = dynamic_cast<PTInstant *>(a))
|
||||
return (abi->wppt->power.getValue() >= 0 && abi->wppt->toughness.getValue() >= 0) ? BAKA_EFFECT_GOOD : BAKA_EFFECT_BAD;
|
||||
if (APowerToughnessModifier * abi = dynamic_cast<APowerToughnessModifier *>(a))
|
||||
@@ -4573,6 +4663,8 @@ int AbilityFactory::abilityEfficiency(MTGAbility * a, Player * p, int mode, Targ
|
||||
badAbilities[(int)Constants::NOLIFEGAINOPPONENT] = true;
|
||||
badAbilities[(int)Constants::MUSTBLOCK] = true;
|
||||
badAbilities[(int)Constants::FLYERSONLY] = true;
|
||||
badAbilities[(int)Constants::TREASON] = true;
|
||||
badAbilities[(int)Constants::SHACKLER] = true;
|
||||
|
||||
if (AInstantBasicAbilityModifierUntilEOT * abi = dynamic_cast<AInstantBasicAbilityModifierUntilEOT *>(a))
|
||||
{
|
||||
@@ -4639,7 +4731,7 @@ int AbilityFactory::getAbilities(vector<MTGAbility *> * v, Spell * spell, MTGCar
|
||||
card->exileEffects = true;
|
||||
break;
|
||||
}
|
||||
if (dest == zones->library)
|
||||
if (dest == zones->library)
|
||||
{
|
||||
magicText = card->magicTexts["library"];
|
||||
break;
|
||||
@@ -4733,7 +4825,7 @@ int AbilityFactory::getAbilities(vector<MTGAbility *> * v, Spell * spell, MTGCar
|
||||
}
|
||||
else
|
||||
{
|
||||
DebugTrace("ABILITYFACTORY ERROR: Parser returned NULL");
|
||||
DebugTrace("ABILITYFACTORY ERROR: Parser returned NULL " + magicText);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
@@ -4749,7 +4841,7 @@ int AbilityFactory::getAbilities(vector<MTGAbility *> * v, Spell * spell, MTGCar
|
||||
* - doTap (a dirty way to know if tapping is included in the cost...
|
||||
*/
|
||||
int AbilityFactory::magicText(int id, Spell * spell, MTGCardInstance * card, int mode, TargetChooser * tc, MTGGameZone * dest)
|
||||
{
|
||||
{try{
|
||||
int dryMode = 0;
|
||||
if (!spell && !dest)
|
||||
dryMode = 1;
|
||||
@@ -4833,6 +4925,11 @@ int AbilityFactory::magicText(int id, Spell * spell, MTGCardInstance * card, int
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
catch(exception) {
|
||||
DebugTrace("MAGIC TEST ERROR: Parser returned NULL");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void AbilityFactory::addAbilities(int _id, Spell * spell)
|
||||
|
||||
@@ -224,6 +224,7 @@ void MTGCardInstance::initMTGCI()
|
||||
blinked = false;
|
||||
isExtraCostTarget = false;
|
||||
morphed = false;
|
||||
exerted = false;
|
||||
turningOver = false;
|
||||
isMorphed = false;
|
||||
MeldedFrom = "";
|
||||
@@ -1352,14 +1353,16 @@ int MTGCardInstance::DangerRanking()
|
||||
result += 1;
|
||||
}
|
||||
}
|
||||
if (result > 1)
|
||||
danger += 1;
|
||||
// Even at 60(danger=3) the AI is hasty to play removal on a simple creature
|
||||
// a vanilla 2 mana, 2/2 used to be eff = 60
|
||||
if (result > 2)
|
||||
danger += 1;
|
||||
if (result > 4)
|
||||
danger += 1;
|
||||
if (result > 6)
|
||||
danger += 1;
|
||||
if (result > 8)
|
||||
danger += 1;
|
||||
if (result > 10)
|
||||
danger += 1;
|
||||
return danger;
|
||||
|
||||
@@ -1219,6 +1219,11 @@ int MTGDeck::save(const string& destFileName, bool useExpandedDescriptions, cons
|
||||
void MTGDeck::printDetailedDeckText(std::ofstream& file )
|
||||
{
|
||||
ostringstream currentCard, creatures, lands, spells, types;
|
||||
ostringstream ss_creatures, ss_lands, ss_spells;
|
||||
int numberOfCreatures = 0;
|
||||
int numberOfSpells = 0;
|
||||
int numberOfLands = 0;
|
||||
|
||||
map<int, int>::iterator it;
|
||||
for (it = cards.begin(); it != cards.end(); it++)
|
||||
{
|
||||
@@ -1233,7 +1238,7 @@ void MTGDeck::printDetailedDeckText(std::ofstream& file )
|
||||
string setName = setInfo->id;
|
||||
string cardName = card->data->getName();
|
||||
|
||||
currentCard << "#" << nbCards << " x " << cardName << " (" << setName << "), ";
|
||||
currentCard << "#" << nbCards << "x " << cardName << " (" << setName << "), ";
|
||||
|
||||
if ( !card->data->isLand() )
|
||||
currentCard << card->data->getManaCost() << ", ";
|
||||
@@ -1266,17 +1271,31 @@ void MTGDeck::printDetailedDeckText(std::ofstream& file )
|
||||
|
||||
currentCard <<endl;
|
||||
setInfo = NULL;
|
||||
// Add counter to know number of creatures, non-creature spells and lands present in the deck
|
||||
if ( card->data->isLand() )
|
||||
{
|
||||
lands<< currentCard.str();
|
||||
numberOfLands+=nbCards;
|
||||
}
|
||||
else if ( card->data->isCreature() )
|
||||
{
|
||||
creatures << currentCard.str();
|
||||
else
|
||||
numberOfCreatures+=nbCards;
|
||||
}
|
||||
else
|
||||
{
|
||||
spells << currentCard.str();
|
||||
numberOfSpells+=nbCards;
|
||||
}
|
||||
currentCard.str("");
|
||||
}
|
||||
file << getCardBlockText( "Creatures", creatures.str() ) << endl;
|
||||
file << getCardBlockText( "Spells", spells.str() ) << endl;
|
||||
file << getCardBlockText( "Lands", lands.str() ) << endl;
|
||||
ss_creatures << numberOfCreatures;
|
||||
ss_spells << numberOfSpells;
|
||||
ss_lands << numberOfLands;
|
||||
|
||||
file << getCardBlockText( "Creatures x" + ss_creatures.str(), creatures.str() ) ;
|
||||
file << getCardBlockText( "Spells x" + ss_spells.str(), spells.str() ) ;
|
||||
file << getCardBlockText( "Lands x" + ss_lands.str(), lands.str() ) ;
|
||||
creatures.str("");
|
||||
spells.str("");
|
||||
lands.str("");
|
||||
|
||||
@@ -554,6 +554,13 @@ MTGCardInstance * MTGPlayerCards::putInZone(MTGCardInstance * card, MTGGameZone
|
||||
}
|
||||
}
|
||||
}
|
||||
//remove exerted if changing controls
|
||||
if((to == g->players[0]->game->battlefield && from == g->players[1]->game->battlefield)||
|
||||
(to == g->players[1]->game->battlefield && from == g->players[0]->game->battlefield))
|
||||
{
|
||||
if(ret->exerted)
|
||||
ret->exerted = false;
|
||||
}
|
||||
}
|
||||
if(!asCopy)
|
||||
{
|
||||
@@ -1125,13 +1132,25 @@ void MTGInPlay::untapAll()
|
||||
card->setUntapping();
|
||||
if (!card->basicAbilities[(int)Constants::DOESNOTUNTAP] && !card->basicAbilities[(int)Constants::SHACKLER])
|
||||
{
|
||||
if (card->frozen < 1)
|
||||
if(card->exerted)
|
||||
{
|
||||
card->attemptUntap();
|
||||
card->exerted = false;
|
||||
if (card->frozen >= 1)
|
||||
{
|
||||
card->frozen = 0;
|
||||
}
|
||||
}
|
||||
if (card->frozen >= 1)
|
||||
else
|
||||
{
|
||||
card->frozen = 0;
|
||||
card->exerted = false;
|
||||
if (card->frozen < 1)
|
||||
{
|
||||
card->attemptUntap();
|
||||
}
|
||||
if (card->frozen >= 1)
|
||||
{
|
||||
card->frozen = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -505,6 +505,20 @@ int MTGPutInPlayRule::reactToClick(MTGCardInstance * card)
|
||||
}
|
||||
delete withKickerCost;
|
||||
}
|
||||
if (card->getManaCost()->getBestow())
|
||||
{
|
||||
ManaCost * withBestowCost= NEW ManaCost(card->getManaCost());
|
||||
withBestowCost->add(withBestowCost->getBestow());
|
||||
|
||||
DebugTrace("AltCost BESTOW " << withBestowCost);
|
||||
if (previousManaPool->canAfford(withBestowCost))
|
||||
{
|
||||
player->getManaPool()->pay(card->getManaCost()->getBestow());
|
||||
payResult = ManaCost::MANA_PAID_WITH_BESTOW;
|
||||
}
|
||||
delete withBestowCost;
|
||||
}
|
||||
|
||||
card->getManaCost()->doPayExtra();
|
||||
ManaCost * spellCost = previousManaPool->Diff(player->getManaPool());
|
||||
|
||||
@@ -652,6 +666,19 @@ int MTGKickerRule::reactToClick(MTGCardInstance * card)
|
||||
payResult = ManaCost::MANA_PAID_WITH_KICKER;
|
||||
}
|
||||
delete withKickerCost;
|
||||
}
|
||||
// Handles bestow,also has to go in isExtraPaymentSet
|
||||
if (card->getManaCost()->getBestow())
|
||||
{
|
||||
ManaCost * withBestowCost= NEW ManaCost(card->getManaCost());
|
||||
withBestowCost->add(withBestowCost->getBestow());
|
||||
|
||||
if (previousManaPool->canAfford(withBestowCost))
|
||||
{
|
||||
player->getManaPool()->pay(card->getManaCost()->getBestow());
|
||||
payResult = ManaCost::MANA_PAID_WITH_BESTOW;
|
||||
}
|
||||
delete withBestowCost;
|
||||
}
|
||||
card->getManaCost()->doPayExtra();
|
||||
ManaCost * spellCost = previousManaPool->Diff(player->getManaPool());
|
||||
@@ -3486,7 +3513,7 @@ PermanentAbility(observer, _id)
|
||||
}
|
||||
|
||||
int MTGNewPlaneswalker::receiveEvent(WEvent * e)
|
||||
{
|
||||
{
|
||||
if(game->getCurrentTargetChooser() || game->mLayers->actionLayer()->isWaitingForAnswer())
|
||||
return 0;
|
||||
if (WEventZoneChange* ev1 = dynamic_cast<WEventZoneChange*>(e))
|
||||
@@ -3494,7 +3521,7 @@ int MTGNewPlaneswalker::receiveEvent(WEvent * e)
|
||||
if (ev1->to == game->players[0]->game->inPlay || ev1->to == game->players[1]->game->inPlay)
|
||||
{
|
||||
MTGCardInstance * card = ev1->card;
|
||||
if(card && card->hasType(Subtypes::TYPE_PLANESWALKER))
|
||||
if(card && card->countDuplicateCardNames() > 1 && card->hasType(Subtypes::TYPE_LEGENDARY))
|
||||
{
|
||||
CheckPW(card);
|
||||
return 1;
|
||||
@@ -3504,7 +3531,7 @@ int MTGNewPlaneswalker::receiveEvent(WEvent * e)
|
||||
else if(WEventCardControllerChange* ev2 = dynamic_cast<WEventCardControllerChange*>(e))
|
||||
{
|
||||
MTGCardInstance * card = ev2->card;
|
||||
if(card && card->hasType(Subtypes::TYPE_PLANESWALKER))
|
||||
if(card && card->countDuplicateCardNames() > 1 && card->hasType(Subtypes::TYPE_LEGENDARY))
|
||||
{
|
||||
CheckPW(card);
|
||||
return 1;
|
||||
@@ -3513,7 +3540,7 @@ int MTGNewPlaneswalker::receiveEvent(WEvent * e)
|
||||
else if(WEventCardTransforms* ev3 = dynamic_cast<WEventCardTransforms*>(e))
|
||||
{
|
||||
MTGCardInstance * card = ev3->card;
|
||||
if(card && card->hasType(Subtypes::TYPE_PLANESWALKER))
|
||||
if(card && card->countDuplicateCardNames() > 1 && card->hasType(Subtypes::TYPE_LEGENDARY))
|
||||
{
|
||||
CheckPW(card);
|
||||
return 1;
|
||||
@@ -3522,7 +3549,7 @@ int MTGNewPlaneswalker::receiveEvent(WEvent * e)
|
||||
else if(WEventCardCopiedACard* ev4 = dynamic_cast<WEventCardCopiedACard*>(e))
|
||||
{
|
||||
MTGCardInstance * card = ev4->card;
|
||||
if(card && card->hasType(Subtypes::TYPE_PLANESWALKER))
|
||||
if(card && card->countDuplicateCardNames() > 1 && card->hasType(Subtypes::TYPE_LEGENDARY))
|
||||
{
|
||||
CheckPW(card);
|
||||
return 1;
|
||||
@@ -3531,7 +3558,7 @@ int MTGNewPlaneswalker::receiveEvent(WEvent * e)
|
||||
else if(WEventCardFaceUp* ev5 = dynamic_cast<WEventCardFaceUp*>(e))
|
||||
{
|
||||
MTGCardInstance * card = ev5->card;
|
||||
if(card && card->hasType(Subtypes::TYPE_PLANESWALKER))
|
||||
if(card && card->countDuplicateCardNames() > 1 && card->hasType(Subtypes::TYPE_LEGENDARY))
|
||||
{
|
||||
CheckPW(card);
|
||||
return 1;
|
||||
@@ -3540,7 +3567,7 @@ int MTGNewPlaneswalker::receiveEvent(WEvent * e)
|
||||
else if(WEventCardPhasesIn* ev6 = dynamic_cast<WEventCardPhasesIn*>(e))
|
||||
{
|
||||
MTGCardInstance * card = ev6->card;
|
||||
if(card && card->hasType(Subtypes::TYPE_PLANESWALKER))
|
||||
if(card && card->countDuplicateCardNames() > 1 && card->hasType(Subtypes::TYPE_LEGENDARY))
|
||||
{
|
||||
CheckPW(card);
|
||||
return 1;
|
||||
@@ -3550,23 +3577,26 @@ int MTGNewPlaneswalker::receiveEvent(WEvent * e)
|
||||
}
|
||||
int MTGNewPlaneswalker::CheckPW(MTGCardInstance * card)
|
||||
{
|
||||
if(!card)
|
||||
if(!card)
|
||||
return 0;
|
||||
if(card->isPhased)
|
||||
return 0;
|
||||
if(card->countDuplicateCardTypes() < 1)
|
||||
if (card->hasType(Subtypes::TYPE_LEGENDARY) && card->controller()->game->inPlay->hasCard(card))
|
||||
if(card->has(Constants::NOLEGEND)||card->controller()->opponent()->inPlay()->hasAbility(Constants::NOLEGENDRULE)||card->controller()->inPlay()->hasAbility(Constants::NOLEGENDRULE))
|
||||
return 0;
|
||||
if(card->countDuplicateCardNames() <= 2)
|
||||
return 0;
|
||||
|
||||
MovePW(card);
|
||||
return 1;
|
||||
}
|
||||
void MTGNewPlaneswalker::MovePW(MTGCardInstance * card)
|
||||
{
|
||||
{
|
||||
game->LPWeffect = true;
|
||||
vector<MTGAbility*>selection;
|
||||
MTGCardInstance * myClone = NEW MTGCardInstance(card, card->controller()->game);
|
||||
TargetChooserFactory tfL(game);
|
||||
tcP = tfL.createTargetChooser("planeswalker[share!types!]|mybattlefield",myClone);
|
||||
tcP = tfL.createTargetChooser("*[share!name!]|mybattlefield",myClone);
|
||||
tcP->targetter = NULL;
|
||||
tcP->maxtargets = 1;
|
||||
PWrule = NEW AAMover(game, game->mLayers->actionLayer()->getMaxId(), myClone, NULL,"ownergraveyard","Put in Graveyard");
|
||||
@@ -3679,24 +3709,27 @@ ListMaintainerAbility(observer, _id)
|
||||
|
||||
int MTGPlaneWalkerRule::canBeInList(MTGCardInstance * card)
|
||||
{
|
||||
if(card->isPhased)
|
||||
if(card->isPhased)
|
||||
return 0;
|
||||
if (card->hasType(Subtypes::TYPE_PLANESWALKER) && card->controller()->game->inPlay->hasCard(card))
|
||||
if (card->hasType(Subtypes::TYPE_LEGENDARY) && card->controller()->game->inPlay->hasCard(card))
|
||||
{
|
||||
return 1;
|
||||
if(card->has(Constants::NOLEGEND)||card->controller()->opponent()->inPlay()->hasAbility(Constants::NOLEGENDRULE)||card->controller()->inPlay()->hasAbility(Constants::NOLEGENDRULE))
|
||||
return 0;
|
||||
else
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int MTGPlaneWalkerRule::added(MTGCardInstance * card)
|
||||
{
|
||||
map<MTGCardInstance *, bool>::iterator it;
|
||||
map<MTGCardInstance *, bool>::iterator it;
|
||||
int destroy = 0;
|
||||
vector<MTGCardInstance*>oldCards;
|
||||
for (it = cards.begin(); it != cards.end(); it++)
|
||||
{
|
||||
MTGCardInstance * comparison = (*it).first;
|
||||
if (comparison != card && comparison->types == card->types && comparison->controller() == card->controller())
|
||||
if (comparison != card && comparison->controller() == card->controller() && !(comparison->getName().compare(card->getName())))
|
||||
if (!(game->getCurrentTargetChooser() || game->mLayers->actionLayer()->isWaitingForAnswer()))
|
||||
{
|
||||
oldCards.push_back(comparison);
|
||||
@@ -3704,11 +3737,10 @@ int MTGPlaneWalkerRule::added(MTGCardInstance * card)
|
||||
game->LPWeffect = true;
|
||||
}
|
||||
}
|
||||
if (destroy)
|
||||
if(destroy)
|
||||
{
|
||||
vector<MTGAbility*>selection;
|
||||
|
||||
MultiAbility * multi = NEW MultiAbility(game,game->mLayers->actionLayer()->getMaxId(), card, card, NULL);
|
||||
MultiAbility * multi = NEW MultiAbility(game, game->mLayers->actionLayer()->getMaxId(), card, card, NULL);
|
||||
for(unsigned int i = 0;i < oldCards.size();i++)
|
||||
{
|
||||
AAMover *a = NEW AAMover(game, game->mLayers->actionLayer()->getMaxId(), card, oldCards[i],"ownergraveyard","Keep New");
|
||||
@@ -3722,7 +3754,7 @@ int MTGPlaneWalkerRule::added(MTGCardInstance * card)
|
||||
b->oneShot = true;
|
||||
MTGAbility * b1 = b;
|
||||
selection.push_back(b1);
|
||||
MTGAbility * menuChoice = NEW MenuAbility(game, game->mLayers->actionLayer()->getMaxId(), card, card,true,selection,card->controller(),"Planeswalker Rule");
|
||||
MTGAbility * menuChoice = NEW MenuAbility(game, game->mLayers->actionLayer()->getMaxId(), card, card,true,selection,card->controller(),"Legendary Rule");
|
||||
menuChoice->addToGame();
|
||||
}
|
||||
return 1;
|
||||
|
||||
@@ -579,6 +579,8 @@ int ManaCost::hasAnotherCost()
|
||||
if(kicker)
|
||||
result = 1;
|
||||
//kicker is the only one ai knows for now, later hasAnotherCost() can be used to determine other cost types.
|
||||
if(Retrace || BuyBack || alternative || FlashBack || morph || suspend || Bestow)
|
||||
result = 1;
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -730,7 +732,7 @@ int ManaCost::getCost(int color)
|
||||
{
|
||||
if (cost.size() <= (size_t)color)
|
||||
{
|
||||
DebugTrace("Seems ManaCost was not properly initialized");
|
||||
DebugTrace("in GetCost Seems ManaCost was not properly initialized");
|
||||
return 0;
|
||||
}
|
||||
return cost[color];
|
||||
|
||||
@@ -168,6 +168,10 @@ void Rules::addExtraRules(GameObserver* g)
|
||||
difficultyRating = 0;
|
||||
else if(g->mRules->gamemode == GAME_TYPE_RANDOM1 || g->mRules->gamemode == GAME_TYPE_RANDOM2)
|
||||
difficultyRating = 0;
|
||||
else if(g->mRules->gamemode == GAME_TYPE_RANDOM3 || g->mRules->gamemode == GAME_TYPE_RANDOM5)
|
||||
difficultyRating = 0;
|
||||
else if(g->mRules->gamemode == GAME_TYPE_HORDE || g->mRules->gamemode == GAME_TYPE_SET_LIMITED)
|
||||
difficultyRating = 0;
|
||||
else if (g->mRules->gamemode == GAME_TYPE_STORY)
|
||||
difficultyRating = 0;
|
||||
else if (a->aType == MTGAbility::STANDARD_DRAW)
|
||||
@@ -196,9 +200,11 @@ void Rules::addExtraRules(GameObserver* g)
|
||||
a->resolve();
|
||||
else if(g->mRules->gamemode == GAME_TYPE_RANDOM1 || g->mRules->gamemode == GAME_TYPE_RANDOM2)
|
||||
a->resolve();
|
||||
else if(g->mRules->gamemode == GAME_TYPE_RANDOM3 || g->mRules->gamemode == GAME_TYPE_RANDOM5)
|
||||
a->resolve();
|
||||
else if (g->mRules->gamemode == GAME_TYPE_STORY)
|
||||
a->resolve();
|
||||
else//stupid protections to keep this out of mimor and other game modes.
|
||||
else//stupid protections to keep this out of momir and other game modes.
|
||||
{
|
||||
handsize = ((AADrawer *)a)->getNumCards();
|
||||
if(difficultyRating == EASY)
|
||||
@@ -305,6 +311,180 @@ Player * Rules::loadPlayerRandom(GameObserver* observer, int isAI, int mode)
|
||||
return player;
|
||||
}
|
||||
|
||||
Player * Rules::loadRandomSetLimited(GameObserver* observer, int isAI)
|
||||
{
|
||||
//Random sets
|
||||
int setId[] = { observer->getRandomGenerator()->random() % setlist.size(), observer->getRandomGenerator()->random() % setlist.size() };
|
||||
int nbSet = sizeof(setId)/sizeof(setId[0]);
|
||||
|
||||
int color1 = 1 + observer->getRandomGenerator()->random() % 5;
|
||||
int color2 = 1 + observer->getRandomGenerator()->random() % 5;
|
||||
int colors[] = { color1, color2 };
|
||||
int nbcolors = 2;
|
||||
string lands[] = { "", "forest", "island", "mountain", "swamp", "plains" };
|
||||
|
||||
MTGDeck * tempDeck = NEW MTGDeck(MTGCollection());
|
||||
// Try to add basic lands from that set
|
||||
tempDeck->addRandomCards(8, setId, nbSet, -1, lands[color1].c_str());
|
||||
tempDeck->addRandomCards(8, setId, nbSet, -1, lands[color2].c_str());
|
||||
tempDeck->addRandomCards(2, setId, nbSet, -1, "land");
|
||||
// If lands < 18 add from any set
|
||||
int missingLands = 18 - tempDeck->totalCards();
|
||||
if (missingLands > 0)
|
||||
{
|
||||
tempDeck->addRandomCards(missingLands/2, 0, 0, -1, lands[color1].c_str());
|
||||
tempDeck->addRandomCards(missingLands/2, 0, 0, -1, lands[color2].c_str());
|
||||
}
|
||||
// Lone artifact and creatures.
|
||||
tempDeck->addRandomCards(1, setId, nbSet, -1, "artifact");
|
||||
tempDeck->addRandomCards(12, setId, nbSet, -1, "creature", colors, nbcolors);
|
||||
// Want the deck to be 40 cards, take any card from the set in the colors
|
||||
int missingCards = 40 - tempDeck->totalCards();
|
||||
if (missingCards > 0)
|
||||
tempDeck->addRandomCards(missingCards, setId, nbSet, -1, "", colors, nbcolors);
|
||||
|
||||
string deckFile = "random";
|
||||
string deckFileSmall = "random";
|
||||
|
||||
Player *player = NULL;
|
||||
if (!isAI) // Human Player
|
||||
player = NEW HumanPlayer(observer, deckFile, deckFileSmall, false, tempDeck);
|
||||
else
|
||||
player = NEW AIPlayerBaka(observer, deckFile, deckFileSmall, "", tempDeck);
|
||||
|
||||
return player;
|
||||
}
|
||||
|
||||
Player * Rules::loadPlayerRandomThree(GameObserver* observer, int isAI)
|
||||
{
|
||||
int color1 = 1 + observer->getRandomGenerator()->random() % 5;
|
||||
int color2 = 1 + observer->getRandomGenerator()->random() % 5;
|
||||
int color3 = 1 + observer->getRandomGenerator()->random() % 5;
|
||||
int color0 = Constants::MTG_COLOR_ARTIFACT;
|
||||
|
||||
int colors[] = { color1, color2, color3, color0 };
|
||||
int nbcolors = 4;
|
||||
|
||||
string lands[] = { "", "forest", "island", "mountain", "swamp", "plains", "" };
|
||||
|
||||
MTGDeck * tempDeck = NEW MTGDeck(MTGCollection());
|
||||
tempDeck->addRandomCards(1, 0, 0, -1, lands[color1].c_str());
|
||||
tempDeck->addRandomCards(1, 0, 0, -1, lands[color2].c_str());
|
||||
tempDeck->addRandomCards(1, 0, 0, -1, lands[color3].c_str());
|
||||
tempDeck->addRandomCards(6, 0, 0, 'R', lands[color1].c_str());
|
||||
tempDeck->addRandomCards(6, 0, 0, 'R', lands[color2].c_str());
|
||||
tempDeck->addRandomCards(6, 0, 0, 'R', lands[color3].c_str());
|
||||
tempDeck->addRandomCards(3, 0, 0, -1, "land");
|
||||
tempDeck->addRandomCards(1, 0, 0, 'U', "land");
|
||||
tempDeck->addRandomCards(1, 0, 0, 'R', "land");
|
||||
tempDeck->addRandomCards(18, 0, 0, -1, "creature", colors, nbcolors);
|
||||
tempDeck->addRandomCards(1, 0, 0, 'R', "creature", colors, nbcolors);
|
||||
tempDeck->addRandomCards(1, 0, 0, 'M', "creature", colors, nbcolors);
|
||||
tempDeck->addRandomCards(3, 0, 0, -1, "sorcery", colors, nbcolors);
|
||||
tempDeck->addRandomCards(3, 0, 0, -1, "enchantment", colors, nbcolors);
|
||||
tempDeck->addRandomCards(3, 0, 0, -1, "instant", colors, nbcolors);
|
||||
tempDeck->addRandomCards(4, 0, 0, -1, "artifact", colors, nbcolors);
|
||||
tempDeck->addRandomCards(1, 0, 0, -1, "planeswalker", colors, nbcolors);
|
||||
|
||||
string deckFile = "random";
|
||||
string deckFileSmall = "random";
|
||||
|
||||
Player *player = NULL;
|
||||
if (!isAI) // Human Player
|
||||
player = NEW HumanPlayer(observer, deckFile, deckFileSmall, false, tempDeck);
|
||||
else
|
||||
player = NEW AIPlayerBaka(observer, deckFile, deckFileSmall, "", tempDeck);
|
||||
|
||||
return player;
|
||||
}
|
||||
|
||||
Player * Rules::loadPlayerRandomFive(GameObserver* observer, int isAI)
|
||||
{
|
||||
MTGDeck * tempDeck = NEW MTGDeck(MTGCollection());
|
||||
|
||||
tempDeck->addRandomCards(20, 0, 0, -1, "land");
|
||||
tempDeck->addRandomCards(20, 0, 0, -1, "creature");
|
||||
tempDeck->addRandomCards(20, 0, 0, -1, "");
|
||||
|
||||
string deckFile = "random";
|
||||
string deckFileSmall = "random";
|
||||
|
||||
Player *player = NULL;
|
||||
if (!isAI) // Human Player
|
||||
player = NEW HumanPlayer(observer, deckFile, deckFileSmall, false, tempDeck);
|
||||
else
|
||||
player = NEW AIPlayerBaka(observer, deckFile, deckFileSmall, "", tempDeck);
|
||||
|
||||
return player;
|
||||
}
|
||||
|
||||
Player * Rules::loadPlayerHorde(GameObserver* observer, int isAI)
|
||||
{
|
||||
int nbColors = 1;
|
||||
string randomTribe = "";
|
||||
int tribeColor[] = { observer->getRandomGenerator()->random() % 6 };
|
||||
|
||||
string lands[] = { "land", "forest", "island", "mountain", "swamp", "plains" };
|
||||
|
||||
const char* const multicolorTribes[] = { "Ally", "Eldrazi", "Elemental", "Golem", "Hound", "Human", "Knight",
|
||||
"Myr", "Samurai", "Shaman", "Shapeshifter", "Sliver", "Soldier", "Spellshaper", "Spirit", "Warrior", "Wizard" };
|
||||
const char* const whiteTribes[] = { "Angel", "Bird", "Cat", "cleric", "Griffin", "Kithkin", "Knight", "Soldier", "Spirit", "Wizard" };
|
||||
const char* const blueTribes[] = { "Artificer", "Bird", "Drake", "Faerie", "Illusion", "Merfolk", "Spirit", "Vedalken", "Wizard", "Zombie" };
|
||||
const char* const blackTribes[] = { "Cleric", "Demon", "Faerie", "Horror", "Pirate", "Rat", "Rogue", "Shade", "Skeleton", "Vampire", "Wizard", "Zombie" };
|
||||
const char* const redTribes[] = { "Barbarian", "Berserker"," Cat", "Devil", "Dragon", "Goblin", "Minotaur", "Ogre", "Werewolf", "Wizard" };
|
||||
const char* const greenTribes[] = { "Beast", "Cat", "Centaur", "Dinosaur", "Druid", "Elf", "Fungus", "Snake", "Spider", "Treefolk", "Werewolf", "Wizard" };
|
||||
|
||||
int multicolorTribesSize = sizeof(multicolorTribes)/sizeof(multicolorTribes[0]);
|
||||
int whiteTribesSize = sizeof(whiteTribes)/sizeof(whiteTribes[0]);
|
||||
int blueTribesSize = sizeof(blueTribes)/sizeof(blueTribes[0]);
|
||||
int blackTribesSize = sizeof(blackTribes)/sizeof(blackTribes[0]);
|
||||
int redTribesSize = sizeof(redTribes)/sizeof(redTribes[0]);
|
||||
int greenTribesSize = sizeof(greenTribes)/sizeof(greenTribes[0]);
|
||||
|
||||
switch (tribeColor[0])
|
||||
{
|
||||
case Constants::MTG_COLOR_ARTIFACT :
|
||||
randomTribe = multicolorTribes[observer->getRandomGenerator()->random() % multicolorTribesSize];
|
||||
nbColors = 0;
|
||||
break;
|
||||
case Constants::MTG_COLOR_WHITE :
|
||||
randomTribe = whiteTribes[observer->getRandomGenerator()->random() % whiteTribesSize];
|
||||
break;
|
||||
case Constants::MTG_COLOR_BLUE :
|
||||
randomTribe = blueTribes[observer->getRandomGenerator()->random() % blueTribesSize];
|
||||
break;
|
||||
case Constants::MTG_COLOR_BLACK :
|
||||
randomTribe = blackTribes[observer->getRandomGenerator()->random() % blackTribesSize];
|
||||
break;
|
||||
case Constants::MTG_COLOR_RED :
|
||||
randomTribe = redTribes[observer->getRandomGenerator()->random() % redTribesSize];
|
||||
break;
|
||||
case Constants::MTG_COLOR_GREEN :
|
||||
randomTribe = greenTribes[observer->getRandomGenerator()->random() % greenTribesSize];
|
||||
break;
|
||||
}
|
||||
|
||||
MTGDeck * tempDeck = NEW MTGDeck(MTGCollection());
|
||||
tempDeck->addRandomCards(16, 0, 0, -1, lands[tribeColor[0]].c_str());
|
||||
tempDeck->addRandomCards(4, 0, 0, 'R', lands[tribeColor[0]].c_str());
|
||||
tempDeck->addRandomCards(4, 0, 0, -1, "land");
|
||||
tempDeck->addRandomCards(21, 0, 0, -1, randomTribe);
|
||||
tempDeck->addRandomCards(5, 0, 0, -1, "enchantment", tribeColor, nbColors);
|
||||
tempDeck->addRandomCards(5, 0, 0, -1, "instant", tribeColor, nbColors);
|
||||
tempDeck->addRandomCards(5, 0, 0, -1, "sorcery", tribeColor, nbColors);
|
||||
|
||||
string deckFile = "random";
|
||||
string deckFileSmall = "random";
|
||||
|
||||
Player *player = NULL;
|
||||
if (!isAI) // Human Player
|
||||
player = NEW HumanPlayer(observer, deckFile, deckFileSmall, false, tempDeck);
|
||||
else
|
||||
player = NEW AIPlayerBaka(observer, deckFile, deckFileSmall, "", tempDeck);
|
||||
|
||||
return player;
|
||||
}
|
||||
|
||||
Player * Rules::initPlayer(GameObserver *g, int playerId)
|
||||
{
|
||||
Player * p = g->players.size() > 1?g->players[playerId]:NULL;
|
||||
@@ -322,6 +502,14 @@ Player * Rules::initPlayer(GameObserver *g, int playerId)
|
||||
return loadPlayerRandom(g, isAI, GAME_TYPE_RANDOM1);
|
||||
case GAME_TYPE_RANDOM2:
|
||||
return loadPlayerRandom(g, isAI, GAME_TYPE_RANDOM2);
|
||||
case GAME_TYPE_RANDOM3:
|
||||
return loadPlayerRandomThree(g, isAI);
|
||||
case GAME_TYPE_RANDOM5:
|
||||
return loadPlayerRandomFive(g, isAI);
|
||||
case GAME_TYPE_HORDE:
|
||||
return loadPlayerHorde(g, isAI);
|
||||
case GAME_TYPE_SET_LIMITED:
|
||||
return loadRandomSetLimited(g, isAI);
|
||||
default:
|
||||
return NULL;
|
||||
}
|
||||
@@ -627,6 +815,10 @@ GameType Rules::strToGameMode(string s)
|
||||
if (s.compare("momir") == 0) return GAME_TYPE_MOMIR;
|
||||
if (s.compare("random1") == 0) return GAME_TYPE_RANDOM1;
|
||||
if (s.compare("random2") == 0) return GAME_TYPE_RANDOM2;
|
||||
if (s.compare("random3") == 0) return GAME_TYPE_RANDOM3;
|
||||
if (s.compare("random5") == 0) return GAME_TYPE_RANDOM5;
|
||||
if (s.compare("horde") == 0) return GAME_TYPE_HORDE;
|
||||
if (s.compare("set_limited") == 0) return GAME_TYPE_SET_LIMITED;
|
||||
if (s.compare("story") == 0) return GAME_TYPE_STORY;
|
||||
if (s.compare("stonehewer") == 0) return GAME_TYPE_STONEHEWER;
|
||||
if (s.compare("hermit") == 0) return GAME_TYPE_HERMIT;
|
||||
|
||||
@@ -6,6 +6,9 @@
|
||||
#ifdef SDL_CONFIG
|
||||
#include <SDL.h>
|
||||
#endif
|
||||
#ifdef QT_CONFIG
|
||||
#include <QKeySequence>
|
||||
#endif
|
||||
using std::string;
|
||||
using std::map;
|
||||
|
||||
@@ -27,6 +30,8 @@ const KeyRep& translateKey(LocalKeySym key)
|
||||
str = XKeysymToString(key);
|
||||
#elif defined (SDL_CONFIG)
|
||||
str = (char*)SDL_GetKeyName(key);
|
||||
#elif defined (QT_CONFIG)
|
||||
str = (char*)QKeySequence(key).toString().toUtf8().constData();
|
||||
#endif
|
||||
if (!str)
|
||||
{
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user