Merge pull request #1 from WagicProject/master

Update fork with original
This commit is contained in:
Rolzad73
2016-04-14 11:36:57 -04:00
237 changed files with 25987 additions and 7280 deletions

View File

@@ -21,7 +21,7 @@ before_install:
export ANDROID="android-sdk-linux/tools/android" && export ANDROID="android-sdk-linux/tools/android" &&
if [ `uname -m` = x86_64 ]; then sudo apt-get install -qq --force-yes libgd2-xpm ia32-libs ia32-libs-multiarch jq; fi && if [ `uname -m` = x86_64 ]; then sudo apt-get install -qq --force-yes libgd2-xpm ia32-libs ia32-libs-multiarch jq; fi &&
wget http://dl.google.com/android/ndk/android-ndk-r9-linux-x86_64.tar.bz2 -nv && 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.0.2-linux.tgz -nv; wget http://dl.google.com/android/android-sdk_r24.3.4-linux.tgz -nv;
fi fi
# Building for Qt here # Building for Qt here
- if [ "$BUILD_Qt" == "YES" ]; then - if [ "$BUILD_Qt" == "YES" ]; then
@@ -37,9 +37,9 @@ install:
fi fi
- if [ "$BUILD_ANDROID" == "YES" ]; then - if [ "$BUILD_ANDROID" == "YES" ]; then
tar --absolute-names -jxf android-ndk-r9-linux-x86_64.tar.bz2 && tar --absolute-names -jxf android-ndk-r9-linux-x86_64.tar.bz2 &&
tar -zxf android-sdk_r24.0.2-linux.tgz && tar -zxf android-sdk_r24.3.4-linux.tgz &&
$ANDROID list sdk --extended -a && $ANDROID list sdk --extended -a &&
echo yes | $ANDROID update sdk --filter tools,platform-tools,build-tools-21.1.2,android-10 --no-ui --force --no-https; echo yes | $ANDROID update sdk -a -t tools,platform-tools,build-tools-23.0.1,android-10 --no-ui --force --no-https;
fi fi
- sudo pip install pyjavaproperties - sudo pip install pyjavaproperties
- sudo pip install github3.py - sudo pip install github3.py

View File

@@ -178,8 +178,6 @@ private:
float mSpacing; float mSpacing;
PIXEL_TYPE mColor; PIXEL_TYPE mColor;
int mBlend;
int mBase; int mBase;
}; };

View File

@@ -598,8 +598,6 @@ private:
GLint prog2_positionLoc; GLint prog2_positionLoc;
GLint prog2_texCoordLoc; GLint prog2_texCoordLoc;
GLint prog2_colorLoc; GLint prog2_colorLoc;
// MVP matrix
ESMatrix prog2_mvpMatrix;
// Uniform locations // Uniform locations
GLint prog2_mvpLoc; GLint prog2_mvpLoc;
@@ -612,13 +610,11 @@ private:
int mCurrentTextureFormat; int mCurrentTextureFormat;
#endif #endif
#ifdef PSP
bool mVsync; bool mVsync;
int mTexCounter;
#endif
int mSwizzle; int mSwizzle;
int mTexCounter;
int mCurrentTextureFilter; int mCurrentTextureFilter;
int mCurrTexBlendSrc; int mCurrTexBlendSrc;

View File

@@ -258,7 +258,9 @@ private:
#endif #endif
int mVolume; int mVolume;
#ifndef IOS
int mMusicVolume; int mMusicVolume;
#endif
int mSampleVolume; int mSampleVolume;

View File

@@ -18,12 +18,11 @@ using namespace std;
#define MID_POINT_THRESHOLD 1.0f #define MID_POINT_THRESHOLD 1.0f
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
/// Position of a single dot on screen. /// Position of a single dot on screen.
/// ///
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
class Point class JPoint
{ {
public: public:
@@ -34,13 +33,13 @@ public:
/// @param _y - Y position. /// @param _y - Y position.
/// ///
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
Point(float _x, float _y) { x = _x; y = _y; } JPoint(float _x, float _y) { x = _x; y = _y; }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
/// Constructor, set position to default (0.0f, 0.0f) /// Constructor, set position to default (0.0f, 0.0f)
/// ///
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
Point() { x = 0.0f; y = 0.0f; } JPoint() { x = 0.0f; y = 0.0f; }
float x; ///< X position. float x; ///< X position.
float y; ///< Y position. float y; ///< Y position.
@@ -95,7 +94,7 @@ public:
/// @param pt - Control point. /// @param pt - Control point.
/// ///
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
void AddControlPoint(const Point &pt); void AddControlPoint(const JPoint &pt);
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
/// Get a control point of the spline. /// Get a control point of the spline.
@@ -105,7 +104,7 @@ public:
/// @return Control point. /// @return Control point.
/// ///
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
void GetControlPoint(Point &point, int index); void GetControlPoint(JPoint &point, int index);
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
/// Work out all pixels of the spline. /// Work out all pixels of the spline.
@@ -128,7 +127,7 @@ public:
/// @return Position of the desire point. /// @return Position of the desire point.
/// ///
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
void PointOnCurve(Point &out, float t, const Point &p0, const Point &p1, const Point &p2, const Point &p3); void PointOnCurve(JPoint &out, float t, const JPoint &p0, const JPoint &p1, const JPoint &p2, const JPoint &p3);
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
/// Get a number of pixels for this spline. /// Get a number of pixels for this spline.
@@ -146,7 +145,7 @@ public:
/// @return Position of the desire point. /// @return Position of the desire point.
/// ///
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
void GetPixel(Point &point, int index); void GetPixel(JPoint &point, int index);
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
/// Render the spline to screen. /// Render the spline to screen.
@@ -156,8 +155,8 @@ public:
private: private:
vector<Point> mMidPoints; vector<JPoint> mMidPoints;
vector<Point> mPixels; vector<JPoint> mPixels;
int mCount; int mCount;
}; };

View File

@@ -311,9 +311,7 @@ namespace boost
#include <QMutex> #include <QMutex>
#include <QThread> #include <QThread>
#include <QSharedPointer>
#include <boost/bind.hpp>
#include <boost/shared_ptr.hpp>
#include "../include/JLogger.h" #include "../include/JLogger.h"
@@ -420,23 +418,25 @@ namespace boost
virtual void run() = 0; virtual void run() = 0;
}; };
typedef boost::shared_ptr<detail::thread_data_base> thread_data_ptr;
template<typename F> typedef QSharedPointer<detail::thread_data_base> thread_data_ptr;
template<typename F, typename A1>
class thread_data : public detail::thread_data_base class thread_data : public detail::thread_data_base
{ {
public: public:
thread_data(F f_) : f(f_) thread_data(F f_, A1 a1_) : f(f_), a1(a1_)
{ {
} }
void run() void run()
{ {
f(); f(a1);
} }
private: private:
F f; F f;
A1 a1;
void operator=(thread_data&); void operator=(thread_data&);
thread_data(thread_data&); thread_data(thread_data&);
@@ -493,7 +493,7 @@ namespace boost
} }
template <class F,class A1> template <class F,class A1>
thread(F f, A1 a1) : mThreadInfo(make_thread_info(boost::bind(boost::type<void>(), f, a1))) thread(F f, A1 a1) : mThreadInfo(make_thread_info(f, a1))
{ {
mpThread = new threadImpl(mThreadInfo); mpThread = new threadImpl(mThreadInfo);
LOG("Calling start func"); LOG("Calling start func");
@@ -510,10 +510,10 @@ namespace boost
} }
private: private:
template<typename F> template<typename F, typename A1>
static inline detail::thread_data_ptr make_thread_info(F f) static inline detail::thread_data_ptr make_thread_info(F f, A1 a1)
{ {
return detail::thread_data_ptr(new detail::thread_data<F>(f)); return detail::thread_data_ptr(new detail::thread_data<F, A1>(f, a1));
} }
detail::thread_data_ptr mThreadInfo; detail::thread_data_ptr mThreadInfo;

View File

@@ -38,6 +38,12 @@ The content that users should not be touching.
#include <QDir> #include <QDir>
#endif #endif
/*
#ifdef IOS
#include <Foundation/Foundation.h>
#endif
*/
JFileSystem* JFileSystem::mInstance = NULL; JFileSystem* JFileSystem::mInstance = NULL;
JZipCache::JZipCache() JZipCache::JZipCache()
@@ -248,7 +254,7 @@ void JFileSystem::clearZipCache()
bool JFileSystem::AttachZipFile(const string &zipfile, char *password /* = NULL */) bool JFileSystem::AttachZipFile(const string &zipfile, char *password /* = NULL */)
{ {
if (mZipAvailable && mZipFile != NULL) if (mZipAvailable && mZipFile.is_open())
{ {
if (mZipFileName != zipfile) if (mZipFileName != zipfile)
DetachZipFile(); // close the previous zip file DetachZipFile(); // close the previous zip file

View File

@@ -71,7 +71,7 @@ bool JSpline::Load(const char *filename, float xscale, float yscale)
element->QueryFloatAttribute("x", &xx); element->QueryFloatAttribute("x", &xx);
element->QueryFloatAttribute("y", &yy); element->QueryFloatAttribute("y", &yy);
Point pt(xx*xscale, yy*yscale); JPoint pt(xx*xscale, yy*yscale);
AddControlPoint(pt); AddControlPoint(pt);
} }
@@ -84,7 +84,7 @@ bool JSpline::Load(const char *filename, float xscale, float yscale)
void JSpline::PointOnCurve(Point &out, float t, const Point &p0, const Point &p1, const Point &p2, const Point &p3) void JSpline::PointOnCurve(JPoint &out, float t, const JPoint &p0, const JPoint &p1, const JPoint &p2, const JPoint &p3)
{ {
float t2 = t * t; float t2 = t * t;
float t3 = t2 * t; float t3 = t2 * t;
@@ -113,8 +113,8 @@ void JSpline::GeneratePixels()
x = mMidPoints[1].x; x = mMidPoints[1].x;
y = mMidPoints[1].y; y = mMidPoints[1].y;
Point newPt(x, y); JPoint newPt(x, y);
Point extraPt; JPoint extraPt;
mPixels.push_back(newPt); mPixels.push_back(newPt);
@@ -151,13 +151,13 @@ void JSpline::GeneratePixels()
} }
void JSpline::AddControlPoint(const Point &pt) void JSpline::AddControlPoint(const JPoint &pt)
{ {
mMidPoints.push_back(pt); mMidPoints.push_back(pt);
} }
void JSpline::GetControlPoint(Point &point, int index) void JSpline::GetControlPoint(JPoint &point, int index)
{ {
if (index < (int)mMidPoints.size()) if (index < (int)mMidPoints.size())
{ {
@@ -167,7 +167,7 @@ void JSpline::GetControlPoint(Point &point, int index)
} }
void JSpline::GetPixel(Point &point, int index) void JSpline::GetPixel(JPoint &point, int index)
{ {
if (index < (int)mPixels.size()) if (index < (int)mPixels.size())
{ {

View File

@@ -10,5 +10,6 @@ void resumeGame();
@property (nonatomic, retain) id eaglView; @property (nonatomic, retain) id eaglView;
@property (nonatomic, retain) UITextField *inputField; @property (nonatomic, retain) UITextField *inputField;
@property (nonatomic, assign) BOOL bannerIsVisible; @property (nonatomic, assign) BOOL bannerIsVisible;
- (void)toggleKeyboardWithState: (NSString *) initialText;
@end @end

View File

@@ -53,28 +53,28 @@
- (void)viewWillAppear:(BOOL)animated { - (void)viewWillAppear:(BOOL)animated {
NSLog(@"EAGL ViewController - view Will Appear"); NSLog(@"EAGL ViewController - view Will Appear");
[self.view resumeGame]; [(id)self.view resumeGame];
} }
- (void)viewWillDisappear:(BOOL)animated - (void)viewWillDisappear:(BOOL)animated
{ {
[self.view pauseGame]; [(id)self.view pauseGame];
} }
- (void)pauseGame - (void)pauseGame
{ {
[self.view pauseGame]; [(id)self.view pauseGame];
} }
- (void)resumeGame - (void)resumeGame
{ {
[self.view resumeGame]; [(id)self.view resumeGame];
} }
- (void)endGame - (void)endGame
{ {
[self.view endGame]; [(id)self.view endGame];
} }
- (void)viewDidAppear:(BOOL)animated { - (void)viewDidAppear:(BOOL)animated {

View File

@@ -337,7 +337,7 @@
- (void)applicationWillTerminate:(UIApplication *)application - (void)applicationWillTerminate:(UIApplication *)application
{ {
[self.glViewController.view destroyGame]; [(id)self.glViewController.view destroyGame];
} }
- (void)initializeKeyboard: (id) initialState - (void)initializeKeyboard: (id) initialState

View File

@@ -7,6 +7,7 @@
#include <winsock.h> #include <winsock.h>
#include <fcntl.h> #include <fcntl.h>
#elif LINUX #elif LINUX
#include <unistd.h>
#include <sys/types.h> #include <sys/types.h>
#include <sys/socket.h> #include <sys/socket.h>
#include <netinet/in.h> #include <netinet/in.h>

View File

@@ -87,13 +87,13 @@ static void init_keys(const char* passwd,unsigned long* pkeys,const unsigned lon
# define ZCR_SEED2 3141592654UL /* use PI as default pattern */ # define ZCR_SEED2 3141592654UL /* use PI as default pattern */
# endif # endif
static int crypthead(passwd, buf, bufSize, pkeys, pcrc_32_tab, crcForCrypting) static int crypthead(
const char *passwd; /* password string */ const char *passwd, /* password string */
unsigned char *buf; /* where to write header */ unsigned char *buf, /* where to write header */
int bufSize; int bufSize,
unsigned long* pkeys; unsigned long* pkeys,
const unsigned long* pcrc_32_tab; const unsigned long* pcrc_32_tab,
unsigned long crcForCrypting; unsigned long crcForCrypting)
{ {
int n; /* index in random header */ int n; /* index in random header */
int t; /* temporary */ int t; /* temporary */

View File

@@ -65,10 +65,10 @@ int ZCALLBACK ferror_file_func OF((
voidpf stream)); voidpf stream));
voidpf ZCALLBACK fopen_file_func (opaque, filename, mode) voidpf ZCALLBACK fopen_file_func (
voidpf opaque; voidpf opaque,
const char* filename; const char* filename,
int mode; int mode)
{ {
FILE* file = NULL; FILE* file = NULL;
const char* mode_fopen = NULL; const char* mode_fopen = NULL;
@@ -87,11 +87,11 @@ voidpf ZCALLBACK fopen_file_func (opaque, filename, mode)
} }
uLong ZCALLBACK fread_file_func (opaque, stream, buf, size) uLong ZCALLBACK fread_file_func (
voidpf opaque; voidpf opaque,
voidpf stream; voidpf stream,
void* buf; void* buf,
uLong size; uLong size)
{ {
uLong ret; uLong ret;
ret = (uLong)fread(buf, 1, (size_t)size, (FILE *)stream); ret = (uLong)fread(buf, 1, (size_t)size, (FILE *)stream);
@@ -99,31 +99,31 @@ uLong ZCALLBACK fread_file_func (opaque, stream, buf, size)
} }
uLong ZCALLBACK fwrite_file_func (opaque, stream, buf, size) uLong ZCALLBACK fwrite_file_func (
voidpf opaque; voidpf opaque,
voidpf stream; voidpf stream,
const void* buf; const void* buf,
uLong size; uLong size)
{ {
uLong ret; uLong ret;
ret = (uLong)fwrite(buf, 1, (size_t)size, (FILE *)stream); ret = (uLong)fwrite(buf, 1, (size_t)size, (FILE *)stream);
return ret; return ret;
} }
long ZCALLBACK ftell_file_func (opaque, stream) long ZCALLBACK ftell_file_func (
voidpf opaque; voidpf opaque,
voidpf stream; voidpf stream)
{ {
long ret; long ret;
ret = ftell((FILE *)stream); ret = ftell((FILE *)stream);
return ret; return ret;
} }
long ZCALLBACK fseek_file_func (opaque, stream, offset, origin) long ZCALLBACK fseek_file_func (
voidpf opaque; voidpf opaque,
voidpf stream; voidpf stream,
uLong offset; uLong offset,
int origin; int origin)
{ {
int fseek_origin=0; int fseek_origin=0;
long ret; long ret;
@@ -145,26 +145,26 @@ long ZCALLBACK fseek_file_func (opaque, stream, offset, origin)
return ret; return ret;
} }
int ZCALLBACK fclose_file_func (opaque, stream) int ZCALLBACK fclose_file_func (
voidpf opaque; voidpf opaque,
voidpf stream; voidpf stream)
{ {
int ret; int ret;
ret = fclose((FILE *)stream); ret = fclose((FILE *)stream);
return ret; return ret;
} }
int ZCALLBACK ferror_file_func (opaque, stream) int ZCALLBACK ferror_file_func (
voidpf opaque; voidpf opaque,
voidpf stream; voidpf stream)
{ {
int ret; int ret;
ret = ferror((FILE *)stream); ret = ferror((FILE *)stream);
return ret; return ret;
} }
void fill_fopen_filefunc (pzlib_filefunc_def) void fill_fopen_filefunc (
zlib_filefunc_def* pzlib_filefunc_def; zlib_filefunc_def* pzlib_filefunc_def)
{ {
pzlib_filefunc_def->zopen_file = fopen_file_func; pzlib_filefunc_def->zopen_file = fopen_file_func;
pzlib_filefunc_def->zread_file = fread_file_func; pzlib_filefunc_def->zread_file = fread_file_func;

View File

@@ -168,10 +168,7 @@ local int unzlocal_getByte OF((
voidpf filestream, voidpf filestream,
int *pi)); int *pi));
local int unzlocal_getByte(pzlib_filefunc_def,filestream,pi) local int unzlocal_getByte(const zlib_filefunc_def* pzlib_filefunc_def,voidpf filestream,int *pi)
const zlib_filefunc_def* pzlib_filefunc_def;
voidpf filestream;
int *pi;
{ {
unsigned char c; unsigned char c;
int err = (int)ZREAD(*pzlib_filefunc_def,filestream,&c,1); int err = (int)ZREAD(*pzlib_filefunc_def,filestream,&c,1);
@@ -198,10 +195,7 @@ local int unzlocal_getShort OF((
voidpf filestream, voidpf filestream,
uLong *pX)); uLong *pX));
local int unzlocal_getShort (pzlib_filefunc_def,filestream,pX) local int unzlocal_getShort (const zlib_filefunc_def* pzlib_filefunc_def,voidpf filestream,uLong *pX)
const zlib_filefunc_def* pzlib_filefunc_def;
voidpf filestream;
uLong *pX;
{ {
uLong x ; uLong x ;
int i; int i;
@@ -226,10 +220,7 @@ local int unzlocal_getLong OF((
voidpf filestream, voidpf filestream,
uLong *pX)); uLong *pX));
local int unzlocal_getLong (pzlib_filefunc_def,filestream,pX) local int unzlocal_getLong (const zlib_filefunc_def* pzlib_filefunc_def,voidpf filestream,uLong *pX)
const zlib_filefunc_def* pzlib_filefunc_def;
voidpf filestream;
uLong *pX;
{ {
uLong x ; uLong x ;
int i; int i;
@@ -259,9 +250,7 @@ local int unzlocal_getLong (pzlib_filefunc_def,filestream,pX)
/* My own strcmpi / strcasecmp */ /* My own strcmpi / strcasecmp */
local int strcmpcasenosensitive_internal (fileName1,fileName2) local int strcmpcasenosensitive_internal (const char* fileName1,const char* fileName2)
const char* fileName1;
const char* fileName2;
{ {
for (;;) for (;;)
{ {
@@ -302,10 +291,7 @@ local int strcmpcasenosensitive_internal (fileName1,fileName2)
(like 1 on Unix, 2 on Windows) (like 1 on Unix, 2 on Windows)
*/ */
extern int ZEXPORT unzStringFileNameCompare (fileName1,fileName2,iCaseSensitivity) extern int ZEXPORT unzStringFileNameCompare (const char* fileName1,const char* fileName2,int iCaseSensitivity)
const char* fileName1;
const char* fileName2;
int iCaseSensitivity;
{ {
if (iCaseSensitivity==0) if (iCaseSensitivity==0)
iCaseSensitivity=CASESENSITIVITYDEFAULTVALUE; iCaseSensitivity=CASESENSITIVITYDEFAULTVALUE;
@@ -328,9 +314,7 @@ local uLong unzlocal_SearchCentralDir OF((
const zlib_filefunc_def* pzlib_filefunc_def, const zlib_filefunc_def* pzlib_filefunc_def,
voidpf filestream)); voidpf filestream));
local uLong unzlocal_SearchCentralDir(pzlib_filefunc_def,filestream) local uLong unzlocal_SearchCentralDir(const zlib_filefunc_def* pzlib_filefunc_def,voidpf filestream)
const zlib_filefunc_def* pzlib_filefunc_def;
voidpf filestream;
{ {
unsigned char* buf; unsigned char* buf;
uLong uSizeFile; uLong uSizeFile;
@@ -394,9 +378,7 @@ local uLong unzlocal_SearchCentralDir(pzlib_filefunc_def,filestream)
Else, the return value is a unzFile Handle, usable with other function Else, the return value is a unzFile Handle, usable with other function
of this unzip package. of this unzip package.
*/ */
extern unzFile ZEXPORT unzOpen2 (path, pzlib_filefunc_def) extern unzFile ZEXPORT unzOpen2 (const char *path, zlib_filefunc_def* pzlib_filefunc_def)
const char *path;
zlib_filefunc_def* pzlib_filefunc_def;
{ {
unz_s us; unz_s us;
unz_s *s; unz_s *s;
@@ -497,8 +479,7 @@ extern unzFile ZEXPORT unzOpen2 (path, pzlib_filefunc_def)
} }
extern unzFile ZEXPORT unzOpen (path) extern unzFile ZEXPORT unzOpen (const char *path)
const char *path;
{ {
return unzOpen2(path, NULL); return unzOpen2(path, NULL);
} }
@@ -508,8 +489,7 @@ extern unzFile ZEXPORT unzOpen (path)
If there is files inside the .Zip opened with unzipOpenCurrentFile (see later), If there is files inside the .Zip opened with unzipOpenCurrentFile (see later),
these files MUST be closed with unzipCloseCurrentFile before call unzipClose. these files MUST be closed with unzipCloseCurrentFile before call unzipClose.
return UNZ_OK if there is no problem. */ return UNZ_OK if there is no problem. */
extern int ZEXPORT unzClose (file) extern int ZEXPORT unzClose (unzFile file)
unzFile file;
{ {
unz_s* s; unz_s* s;
if (file==NULL) if (file==NULL)
@@ -529,9 +509,7 @@ extern int ZEXPORT unzClose (file)
Write info about the ZipFile in the *pglobal_info structure. Write info about the ZipFile in the *pglobal_info structure.
No preparation of the structure is needed No preparation of the structure is needed
return UNZ_OK if there is no problem. */ return UNZ_OK if there is no problem. */
extern int ZEXPORT unzGetGlobalInfo (file,pglobal_info) extern int ZEXPORT unzGetGlobalInfo (unzFile file,unz_global_info *pglobal_info)
unzFile file;
unz_global_info *pglobal_info;
{ {
unz_s* s; unz_s* s;
if (file==NULL) if (file==NULL)
@@ -545,9 +523,7 @@ extern int ZEXPORT unzGetGlobalInfo (file,pglobal_info)
/* /*
Translate date/time from Dos format to tm_unz (readable more easilty) Translate date/time from Dos format to tm_unz (readable more easilty)
*/ */
local void unzlocal_DosDateToTmuDate (ulDosDate, ptm) local void unzlocal_DosDateToTmuDate (uLong ulDosDate, tm_unz* ptm)
uLong ulDosDate;
tm_unz* ptm;
{ {
uLong uDate; uLong uDate;
uDate = (uLong)(ulDosDate>>16); uDate = (uLong)(ulDosDate>>16);
@@ -574,21 +550,16 @@ local int unzlocal_GetCurrentFileInfoInternal OF((unzFile file,
char *szComment, char *szComment,
uLong commentBufferSize)); uLong commentBufferSize));
local int unzlocal_GetCurrentFileInfoInternal (file, local int unzlocal_GetCurrentFileInfoInternal (
pfile_info, unzFile file,
pfile_info_internal, unz_file_info *pfile_info,
szFileName, fileNameBufferSize, unz_file_info_internal *pfile_info_internal,
extraField, extraFieldBufferSize, char *szFileName,
szComment, commentBufferSize) uLong fileNameBufferSize,
unzFile file; void *extraField,
unz_file_info *pfile_info; uLong extraFieldBufferSize,
unz_file_info_internal *pfile_info_internal; char *szComment,
char *szFileName; uLong commentBufferSize)
uLong fileNameBufferSize;
void *extraField;
uLong extraFieldBufferSize;
char *szComment;
uLong commentBufferSize;
{ {
unz_s* s; unz_s* s;
unz_file_info file_info; unz_file_info file_info;
@@ -746,19 +717,15 @@ local int unzlocal_GetCurrentFileInfoInternal (file,
No preparation of the structure is needed No preparation of the structure is needed
return UNZ_OK if there is no problem. return UNZ_OK if there is no problem.
*/ */
extern int ZEXPORT unzGetCurrentFileInfo (file, extern int ZEXPORT unzGetCurrentFileInfo (
pfile_info, unzFile file,
szFileName, fileNameBufferSize, unz_file_info *pfile_info,
extraField, extraFieldBufferSize, char *szFileName,
szComment, commentBufferSize) uLong fileNameBufferSize,
unzFile file; void *extraField,
unz_file_info *pfile_info; uLong extraFieldBufferSize,
char *szFileName; char *szComment,
uLong fileNameBufferSize; uLong commentBufferSize)
void *extraField;
uLong extraFieldBufferSize;
char *szComment;
uLong commentBufferSize;
{ {
return unzlocal_GetCurrentFileInfoInternal(file,pfile_info,NULL, return unzlocal_GetCurrentFileInfoInternal(file,pfile_info,NULL,
szFileName,fileNameBufferSize, szFileName,fileNameBufferSize,
@@ -770,8 +737,7 @@ extern int ZEXPORT unzGetCurrentFileInfo (file,
Set the current file of the zipfile to the first file. Set the current file of the zipfile to the first file.
return UNZ_OK if there is no problem return UNZ_OK if there is no problem
*/ */
extern int ZEXPORT unzGoToFirstFile (file) extern int ZEXPORT unzGoToFirstFile (unzFile file)
unzFile file;
{ {
int err=UNZ_OK; int err=UNZ_OK;
unz_s* s; unz_s* s;
@@ -792,8 +758,7 @@ extern int ZEXPORT unzGoToFirstFile (file)
return UNZ_OK if there is no problem return UNZ_OK if there is no problem
return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest. return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest.
*/ */
extern int ZEXPORT unzGoToNextFile (file) extern int ZEXPORT unzGoToNextFile (unzFile file)
unzFile file;
{ {
unz_s* s; unz_s* s;
int err; int err;
@@ -826,10 +791,7 @@ extern int ZEXPORT unzGoToNextFile (file)
UNZ_OK if the file is found. It becomes the current file. UNZ_OK if the file is found. It becomes the current file.
UNZ_END_OF_LIST_OF_FILE if the file is not found UNZ_END_OF_LIST_OF_FILE if the file is not found
*/ */
extern int ZEXPORT unzLocateFile (file, szFileName, iCaseSensitivity) extern int ZEXPORT unzLocateFile (unzFile file, const char *szFileName, int iCaseSensitivity)
unzFile file;
const char *szFileName;
int iCaseSensitivity;
{ {
unz_s* s; unz_s* s;
int err; int err;
@@ -905,9 +867,7 @@ typedef struct unz_file_pos_s
} unz_file_pos; } unz_file_pos;
*/ */
extern int ZEXPORT unzGetFilePos(file, file_pos) extern int ZEXPORT unzGetFilePos(unzFile file, unz_file_pos* file_pos)
unzFile file;
unz_file_pos* file_pos;
{ {
unz_s* s; unz_s* s;
@@ -923,9 +883,7 @@ extern int ZEXPORT unzGetFilePos(file, file_pos)
return UNZ_OK; return UNZ_OK;
} }
extern int ZEXPORT unzGoToFilePos(file, file_pos) extern int ZEXPORT unzGoToFilePos(unzFile file, unz_file_pos*file_pos)
unzFile file;
unz_file_pos* file_pos;
{ {
unz_s* s; unz_s* s;
int err; int err;
@@ -959,13 +917,11 @@ extern int ZEXPORT unzGoToFilePos(file, file_pos)
store in *piSizeVar the size of extra info in local header store in *piSizeVar the size of extra info in local header
(filename and size of extra field data) (filename and size of extra field data)
*/ */
local int unzlocal_CheckCurrentFileCoherencyHeader (s,piSizeVar, local int unzlocal_CheckCurrentFileCoherencyHeader (
poffset_local_extrafield, unz_s* s,
psize_local_extrafield) uInt* piSizeVar,
unz_s* s; uLong *poffset_local_extrafield,
uInt* piSizeVar; uInt *psize_local_extrafield)
uLong *poffset_local_extrafield;
uInt *psize_local_extrafield;
{ {
uLong uMagic,uData,uFlags; uLong uMagic,uData,uFlags;
uLong size_filename; uLong size_filename;
@@ -1050,12 +1006,12 @@ local int unzlocal_CheckCurrentFileCoherencyHeader (s,piSizeVar,
Open for reading data the current file in the zipfile. Open for reading data the current file in the zipfile.
If there is no error and the file is opened, the return value is UNZ_OK. If there is no error and the file is opened, the return value is UNZ_OK.
*/ */
extern int ZEXPORT unzOpenCurrentFile3 (file, method, level, raw, password) extern int ZEXPORT unzOpenCurrentFile3 (
unzFile file; unzFile file,
int* method; int* method,
int* level; int* level,
int raw; int raw,
const char* password; const char* password)
{ {
int err=UNZ_OK; int err=UNZ_OK;
uInt iSizeVar; uInt iSizeVar;
@@ -1136,7 +1092,7 @@ extern int ZEXPORT unzOpenCurrentFile3 (file, method, level, raw, password)
pfile_in_zip_read_info->stream.zalloc = (alloc_func)0; pfile_in_zip_read_info->stream.zalloc = (alloc_func)0;
pfile_in_zip_read_info->stream.zfree = (free_func)0; pfile_in_zip_read_info->stream.zfree = (free_func)0;
pfile_in_zip_read_info->stream.opaque = (voidpf)0; pfile_in_zip_read_info->stream.opaque = (voidpf)0;
pfile_in_zip_read_info->stream.next_in = (voidpf)0; pfile_in_zip_read_info->stream.next_in = (Bytef*)0;
pfile_in_zip_read_info->stream.avail_in = 0; pfile_in_zip_read_info->stream.avail_in = 0;
err=inflateInit2(&pfile_in_zip_read_info->stream, -MAX_WBITS); err=inflateInit2(&pfile_in_zip_read_info->stream, -MAX_WBITS);
@@ -1195,24 +1151,21 @@ extern int ZEXPORT unzOpenCurrentFile3 (file, method, level, raw, password)
return UNZ_OK; return UNZ_OK;
} }
extern int ZEXPORT unzOpenCurrentFile (file) extern int ZEXPORT unzOpenCurrentFile (unzFile file)
unzFile file;
{ {
return unzOpenCurrentFile3(file, NULL, NULL, 0, NULL); return unzOpenCurrentFile3(file, NULL, NULL, 0, NULL);
} }
extern int ZEXPORT unzOpenCurrentFilePassword (file, password) extern int ZEXPORT unzOpenCurrentFilePassword (unzFile file, const char* password)
unzFile file;
const char* password;
{ {
return unzOpenCurrentFile3(file, NULL, NULL, 0, password); return unzOpenCurrentFile3(file, NULL, NULL, 0, password);
} }
extern int ZEXPORT unzOpenCurrentFile2 (file,method,level,raw) extern int ZEXPORT unzOpenCurrentFile2 (
unzFile file; unzFile file,
int* method; int* method,
int* level; int* level,
int raw; int raw)
{ {
return unzOpenCurrentFile3(file, method, level, raw, NULL); return unzOpenCurrentFile3(file, method, level, raw, NULL);
} }
@@ -1227,10 +1180,10 @@ extern int ZEXPORT unzOpenCurrentFile2 (file,method,level,raw)
return <0 with error code if there is an error return <0 with error code if there is an error
(UNZ_ERRNO for IO error, or zLib error for uncompress error) (UNZ_ERRNO for IO error, or zLib error for uncompress error)
*/ */
extern int ZEXPORT unzReadCurrentFile (file, buf, len) extern int ZEXPORT unzReadCurrentFile(
unzFile file; unzFile file,
voidp buf; voidp buf,
unsigned len; unsigned len)
{ {
int err=UNZ_OK; int err=UNZ_OK;
uInt iRead = 0; uInt iRead = 0;
@@ -1388,8 +1341,7 @@ extern int ZEXPORT unzReadCurrentFile (file, buf, len)
/* /*
Give the current position in uncompressed data Give the current position in uncompressed data
*/ */
extern z_off_t ZEXPORT unztell (file) extern z_off_t ZEXPORT unztell (unzFile file)
unzFile file;
{ {
unz_s* s; unz_s* s;
file_in_zip_read_info_s* pfile_in_zip_read_info; file_in_zip_read_info_s* pfile_in_zip_read_info;
@@ -1408,8 +1360,7 @@ extern z_off_t ZEXPORT unztell (file)
/* /*
return 1 if the end of file was reached, 0 elsewhere return 1 if the end of file was reached, 0 elsewhere
*/ */
extern int ZEXPORT unzeof (file) extern int ZEXPORT unzeof (unzFile file)
unzFile file;
{ {
unz_s* s; unz_s* s;
file_in_zip_read_info_s* pfile_in_zip_read_info; file_in_zip_read_info_s* pfile_in_zip_read_info;
@@ -1441,10 +1392,10 @@ extern int ZEXPORT unzeof (file)
the return value is the number of bytes copied in buf, or (if <0) the return value is the number of bytes copied in buf, or (if <0)
the error code the error code
*/ */
extern int ZEXPORT unzGetLocalExtrafield (file,buf,len) extern int ZEXPORT unzGetLocalExtrafield (
unzFile file; unzFile file,
voidp buf; voidp buf,
unsigned len; unsigned len)
{ {
unz_s* s; unz_s* s;
file_in_zip_read_info_s* pfile_in_zip_read_info; file_in_zip_read_info_s* pfile_in_zip_read_info;
@@ -1492,8 +1443,7 @@ extern int ZEXPORT unzGetLocalExtrafield (file,buf,len)
Close the file in zip opened with unzipOpenCurrentFile Close the file in zip opened with unzipOpenCurrentFile
Return UNZ_CRCERROR if all the file was read but the CRC is not good Return UNZ_CRCERROR if all the file was read but the CRC is not good
*/ */
extern int ZEXPORT unzCloseCurrentFile (file) extern int ZEXPORT unzCloseCurrentFile (unzFile file)
unzFile file;
{ {
int err=UNZ_OK; int err=UNZ_OK;
@@ -1535,12 +1485,11 @@ extern int ZEXPORT unzCloseCurrentFile (file)
uSizeBuf is the size of the szComment buffer. uSizeBuf is the size of the szComment buffer.
return the number of byte copied or an error code <0 return the number of byte copied or an error code <0
*/ */
extern int ZEXPORT unzGetGlobalComment (file, szComment, uSizeBuf) extern int ZEXPORT unzGetGlobalComment (
unzFile file; unzFile file,
char *szComment; char *szComment,
uLong uSizeBuf; uLong uSizeBuf)
{ {
int err=UNZ_OK;
unz_s* s; unz_s* s;
uLong uReadThis ; uLong uReadThis ;
if (file==NULL) if (file==NULL)
@@ -1567,8 +1516,7 @@ extern int ZEXPORT unzGetGlobalComment (file, szComment, uSizeBuf)
} }
/* Additions by RX '2004 */ /* Additions by RX '2004 */
extern uLong ZEXPORT unzGetOffset (file) extern uLong ZEXPORT unzGetOffset (unzFile file)
unzFile file;
{ {
unz_s* s; unz_s* s;
@@ -1583,9 +1531,9 @@ extern uLong ZEXPORT unzGetOffset (file)
return s->pos_in_central_dir; return s->pos_in_central_dir;
} }
extern int ZEXPORT unzSetOffset (file, pos) extern int ZEXPORT unzSetOffset (
unzFile file; unzFile file,
uLong pos; uLong pos)
{ {
unz_s* s; unz_s* s;
int err; int err;

View File

@@ -172,8 +172,7 @@ local linkedlist_datablock_internal* allocate_new_datablock()
return ldi; return ldi;
} }
local void free_datablock(ldi) local void free_datablock(linkedlist_datablock_internal* ldi)
linkedlist_datablock_internal* ldi;
{ {
while (ldi!=NULL) while (ldi!=NULL)
{ {
@@ -183,24 +182,24 @@ local void free_datablock(ldi)
} }
} }
local void init_linkedlist(ll) local void init_linkedlist(
linkedlist_data* ll; linkedlist_data* ll)
{ {
ll->first_block = ll->last_block = NULL; ll->first_block = ll->last_block = NULL;
} }
local void free_linkedlist(ll) local void free_linkedlist(
linkedlist_data* ll; linkedlist_data* ll)
{ {
free_datablock(ll->first_block); free_datablock(ll->first_block);
ll->first_block = ll->last_block = NULL; ll->first_block = ll->last_block = NULL;
} }
local int add_data_in_datablock(ll,buf,len) local int add_data_in_datablock(
linkedlist_data* ll; linkedlist_data* ll,
const void* buf; const void* buf,
uLong len; uLong len)
{ {
linkedlist_datablock_internal* ldi; linkedlist_datablock_internal* ldi;
const unsigned char* from_copy; const unsigned char* from_copy;
@@ -263,11 +262,11 @@ local int add_data_in_datablock(ll,buf,len)
local int ziplocal_putValue OF((const zlib_filefunc_def* pzlib_filefunc_def, local int ziplocal_putValue OF((const zlib_filefunc_def* pzlib_filefunc_def,
voidpf filestream, uLong x, int nbByte)); voidpf filestream, uLong x, int nbByte));
local int ziplocal_putValue (pzlib_filefunc_def, filestream, x, nbByte) local int ziplocal_putValue (
const zlib_filefunc_def* pzlib_filefunc_def; const zlib_filefunc_def* pzlib_filefunc_def,
voidpf filestream; voidpf filestream,
uLong x; uLong x,
int nbByte; int nbByte)
{ {
unsigned char buf[4]; unsigned char buf[4];
int n; int n;
@@ -291,10 +290,10 @@ local int ziplocal_putValue (pzlib_filefunc_def, filestream, x, nbByte)
} }
local void ziplocal_putValue_inmemory OF((void* dest, uLong x, int nbByte)); local void ziplocal_putValue_inmemory OF((void* dest, uLong x, int nbByte));
local void ziplocal_putValue_inmemory (dest, x, nbByte) local void ziplocal_putValue_inmemory (
void* dest; void* dest,
uLong x; uLong x,
int nbByte; int nbByte)
{ {
unsigned char* buf=(unsigned char*)dest; unsigned char* buf=(unsigned char*)dest;
int n; int n;
@@ -315,9 +314,9 @@ local void ziplocal_putValue_inmemory (dest, x, nbByte)
/****************************************************************************/ /****************************************************************************/
local uLong ziplocal_TmzDateToDosDate(ptm,dosDate) local uLong ziplocal_TmzDateToDosDate(
const tm_zip* ptm; const tm_zip* ptm,
uLong dosDate; uLong dosDate)
{ {
uLong year = (uLong)ptm->tm_year; uLong year = (uLong)ptm->tm_year;
if (year>1980) if (year>1980)
@@ -337,10 +336,10 @@ local int ziplocal_getByte OF((
voidpf filestream, voidpf filestream,
int *pi)); int *pi));
local int ziplocal_getByte(pzlib_filefunc_def,filestream,pi) local int ziplocal_getByte(
const zlib_filefunc_def* pzlib_filefunc_def; const zlib_filefunc_def* pzlib_filefunc_def,
voidpf filestream; voidpf filestream,
int *pi; int *pi)
{ {
unsigned char c; unsigned char c;
int err = (int)ZREAD(*pzlib_filefunc_def,filestream,&c,1); int err = (int)ZREAD(*pzlib_filefunc_def,filestream,&c,1);
@@ -367,10 +366,10 @@ local int ziplocal_getShort OF((
voidpf filestream, voidpf filestream,
uLong *pX)); uLong *pX));
local int ziplocal_getShort (pzlib_filefunc_def,filestream,pX) local int ziplocal_getShort (
const zlib_filefunc_def* pzlib_filefunc_def; const zlib_filefunc_def* pzlib_filefunc_def,
voidpf filestream; voidpf filestream,
uLong *pX; uLong *pX)
{ {
uLong x ; uLong x ;
int i; int i;
@@ -395,10 +394,10 @@ local int ziplocal_getLong OF((
voidpf filestream, voidpf filestream,
uLong *pX)); uLong *pX));
local int ziplocal_getLong (pzlib_filefunc_def,filestream,pX) local int ziplocal_getLong (
const zlib_filefunc_def* pzlib_filefunc_def; const zlib_filefunc_def* pzlib_filefunc_def,
voidpf filestream; voidpf filestream,
uLong *pX; uLong *pX)
{ {
uLong x ; uLong x ;
int i; int i;
@@ -437,9 +436,9 @@ local uLong ziplocal_SearchCentralDir OF((
const zlib_filefunc_def* pzlib_filefunc_def, const zlib_filefunc_def* pzlib_filefunc_def,
voidpf filestream)); voidpf filestream));
local uLong ziplocal_SearchCentralDir(pzlib_filefunc_def,filestream) local uLong ziplocal_SearchCentralDir(
const zlib_filefunc_def* pzlib_filefunc_def; const zlib_filefunc_def* pzlib_filefunc_def,
voidpf filestream; voidpf filestream)
{ {
unsigned char* buf; unsigned char* buf;
uLong uSizeFile; uLong uSizeFile;
@@ -496,11 +495,11 @@ local uLong ziplocal_SearchCentralDir(pzlib_filefunc_def,filestream)
#endif /* !NO_ADDFILEINEXISTINGZIP*/ #endif /* !NO_ADDFILEINEXISTINGZIP*/
/************************************************************/ /************************************************************/
extern zipFile ZEXPORT zipOpen2 (pathname, append, globalcomment, pzlib_filefunc_def) extern zipFile ZEXPORT zipOpen2 (
const char *pathname; const char *pathname,
int append; int append,
zipcharpc* globalcomment; zipcharpc* globalcomment,
zlib_filefunc_def* pzlib_filefunc_def; zlib_filefunc_def* pzlib_filefunc_def)
{ {
zip_internal ziinit; zip_internal ziinit;
zip_internal* zi; zip_internal* zi;
@@ -615,7 +614,7 @@ extern zipFile ZEXPORT zipOpen2 (pathname, append, globalcomment, pzlib_filefunc
if (size_comment>0) if (size_comment>0)
{ {
ziinit.globalcomment = ALLOC(size_comment+1); ziinit.globalcomment = (char*)ALLOC(size_comment+1);
if (ziinit.globalcomment) if (ziinit.globalcomment)
{ {
size_comment = ZREAD(ziinit.z_filefunc, ziinit.filestream,ziinit.globalcomment,size_comment); size_comment = ZREAD(ziinit.z_filefunc, ziinit.filestream,ziinit.globalcomment,size_comment);
@@ -680,35 +679,30 @@ extern zipFile ZEXPORT zipOpen2 (pathname, append, globalcomment, pzlib_filefunc
} }
} }
extern zipFile ZEXPORT zipOpen (pathname, append) extern zipFile ZEXPORT zipOpen (
const char *pathname; const char *pathname,
int append; int append)
{ {
return zipOpen2(pathname,append,NULL,NULL); return zipOpen2(pathname,append,NULL,NULL);
} }
extern int ZEXPORT zipOpenNewFileInZip3 (file, filename, zipfi, extern int ZEXPORT zipOpenNewFileInZip3 (
extrafield_local, size_extrafield_local, zipFile file,
extrafield_global, size_extrafield_global, const char* filename,
comment, method, level, raw, const zip_fileinfo* zipfi,
windowBits, memLevel, strategy, const void* extrafield_local,
password, crcForCrypting) uInt size_extrafield_local,
zipFile file; const void* extrafield_global,
const char* filename; uInt size_extrafield_global,
const zip_fileinfo* zipfi; const char* comment,
const void* extrafield_local; int method,
uInt size_extrafield_local; int level,
const void* extrafield_global; int raw,
uInt size_extrafield_global; int windowBits,
const char* comment; int memLevel,
int method; int strategy,
int level; const char* password,
int raw; uLong crcForCrypting)
int windowBits;
int memLevel;
int strategy;
const char* password;
uLong crcForCrypting;
{ {
zip_internal* zi; zip_internal* zi;
uInt size_filename; uInt size_filename;
@@ -896,21 +890,18 @@ extern int ZEXPORT zipOpenNewFileInZip3 (file, filename, zipfi,
return err; return err;
} }
extern int ZEXPORT zipOpenNewFileInZip2(file, filename, zipfi, extern int ZEXPORT zipOpenNewFileInZip2(
extrafield_local, size_extrafield_local, zipFile file,
extrafield_global, size_extrafield_global, const char* filename,
comment, method, level, raw) const zip_fileinfo* zipfi,
zipFile file; const void* extrafield_local,
const char* filename; uInt size_extrafield_local,
const zip_fileinfo* zipfi; const void* extrafield_global,
const void* extrafield_local; uInt size_extrafield_global,
uInt size_extrafield_local; const char* comment,
const void* extrafield_global; int method,
uInt size_extrafield_global; int level,
const char* comment; int raw)
int method;
int level;
int raw;
{ {
return zipOpenNewFileInZip3 (file, filename, zipfi, return zipOpenNewFileInZip3 (file, filename, zipfi,
extrafield_local, size_extrafield_local, extrafield_local, size_extrafield_local,
@@ -920,20 +911,17 @@ extern int ZEXPORT zipOpenNewFileInZip2(file, filename, zipfi,
NULL, 0); NULL, 0);
} }
extern int ZEXPORT zipOpenNewFileInZip (file, filename, zipfi, extern int ZEXPORT zipOpenNewFileInZip (
extrafield_local, size_extrafield_local, zipFile file,
extrafield_global, size_extrafield_global, const char* filename,
comment, method, level) const zip_fileinfo* zipfi,
zipFile file; const void* extrafield_local,
const char* filename; uInt size_extrafield_local,
const zip_fileinfo* zipfi; const void* extrafield_global,
const void* extrafield_local; uInt size_extrafield_global,
uInt size_extrafield_local; const char* comment,
const void* extrafield_global; int method,
uInt size_extrafield_global; int level)
const char* comment;
int method;
int level;
{ {
return zipOpenNewFileInZip2 (file, filename, zipfi, return zipOpenNewFileInZip2 (file, filename, zipfi,
extrafield_local, size_extrafield_local, extrafield_local, size_extrafield_local,
@@ -941,8 +929,8 @@ extern int ZEXPORT zipOpenNewFileInZip (file, filename, zipfi,
comment, method, level, 0); comment, method, level, 0);
} }
local int zipFlushWriteBuffer(zi) local int zipFlushWriteBuffer(
zip_internal* zi; zip_internal* zi)
{ {
int err=ZIP_OK; int err=ZIP_OK;
@@ -963,10 +951,10 @@ local int zipFlushWriteBuffer(zi)
return err; return err;
} }
extern int ZEXPORT zipWriteInFileInZip (file, buf, len) extern int ZEXPORT zipWriteInFileInZip (
zipFile file; zipFile file,
const void* buf; const void* buf,
unsigned len; unsigned len)
{ {
zip_internal* zi; zip_internal* zi;
int err=ZIP_OK; int err=ZIP_OK;
@@ -978,9 +966,9 @@ extern int ZEXPORT zipWriteInFileInZip (file, buf, len)
if (zi->in_opened_file_inzip == 0) if (zi->in_opened_file_inzip == 0)
return ZIP_PARAMERROR; return ZIP_PARAMERROR;
zi->ci.stream.next_in = (void*)buf; zi->ci.stream.next_in = (Bytef*)buf;
zi->ci.stream.avail_in = len; zi->ci.stream.avail_in = len;
zi->ci.crc32 = crc32(zi->ci.crc32,buf,len); zi->ci.crc32 = crc32(zi->ci.crc32,(const Bytef*)buf,len);
while ((err==ZIP_OK) && (zi->ci.stream.avail_in>0)) while ((err==ZIP_OK) && (zi->ci.stream.avail_in>0))
{ {
@@ -1028,10 +1016,10 @@ extern int ZEXPORT zipWriteInFileInZip (file, buf, len)
return err; return err;
} }
extern int ZEXPORT zipCloseFileInZipRaw (file, uncompressed_size, crc32) extern int ZEXPORT zipCloseFileInZipRaw (
zipFile file; zipFile file,
uLong uncompressed_size; uLong uncompressed_size,
uLong crc32; uLong crc32)
{ {
zip_internal* zi; zip_internal* zi;
uLong compressed_size; uLong compressed_size;
@@ -1124,15 +1112,15 @@ extern int ZEXPORT zipCloseFileInZipRaw (file, uncompressed_size, crc32)
return err; return err;
} }
extern int ZEXPORT zipCloseFileInZip (file) extern int ZEXPORT zipCloseFileInZip (
zipFile file; zipFile file)
{ {
return zipCloseFileInZipRaw (file,0,0); return zipCloseFileInZipRaw (file,0,0);
} }
extern int ZEXPORT zipClose (file, global_comment) extern int ZEXPORT zipClose (
zipFile file; zipFile file,
const char* global_comment; const char* global_comment)
{ {
zip_internal* zi; zip_internal* zi;
int err = 0; int err = 0;

View File

@@ -42,7 +42,6 @@ filesystem * filesystem::pCurrentFS = NULL;
std::vector<filesystem::pooledBuffer *> filesystem::m_Buffers; std::vector<filesystem::pooledBuffer *> filesystem::m_Buffers;
static const int STORED = 0; static const int STORED = 0;
static const int DEFLATED = 8;
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
// Construction/Destruction // Construction/Destruction

View File

@@ -4,6 +4,14 @@
# - All section names are case-sensitive. # - All section names are case-sensitive.
# - Section names should be unique on each level. # - Section names should be unique on each level.
# branches to build
branches:
# blacklist
except:
- travis_mac_osx
# Do not build on tags (GitHub only)
skip_tags: true
#---------------------------------# #---------------------------------#
# environment configuration # # environment configuration #
#---------------------------------# #---------------------------------#

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

View File

@@ -13,6 +13,8 @@ auto=flashbackrule
auto=retracerule auto=retracerule
auto=suspendrule auto=suspendrule
auto=morphrule auto=morphrule
auto=payzerorule
auto=overloadrule
auto=attackrule auto=attackrule
auto=blockrule auto=blockrule
auto=combattriggerrule auto=combattriggerrule

View File

@@ -12,6 +12,8 @@ auto=flashbackrule
auto=retracerule auto=retracerule
auto=suspendrule auto=suspendrule
auto=morphrule auto=morphrule
auto=payzerorule
auto=overloadrule
auto=attackrule auto=attackrule
auto=blockrule auto=blockrule
auto=combattriggerrule auto=combattriggerrule

View File

@@ -16,7 +16,8 @@ auto=flashbackrule
auto=retracerule auto=retracerule
auto=suspendrule auto=suspendrule
auto=morphrule auto=morphrule
auto=playfromgraveyardrule auto=payzerorule
auto=overloadrule
auto=attackrule auto=attackrule
auto=blockrule auto=blockrule
auto=combattriggerrule auto=combattriggerrule

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,21 @@
<PACK name="Dragons of Tarkir" type="Booster" pool="all set:DTK;" price="700">
<slot copies="1">
<random_card>rarity:mythic;</random_card>
<random_card>rarity:rare;</random_card>
<random_card>rarity:rare;</random_card>
<random_card>rarity:rare;</random_card>
<random_card>rarity:rare;</random_card>
<random_card>rarity:rare;</random_card>
<random_card>rarity:rare;</random_card>
<random_card>rarity:rare;</random_card>
</slot>
<slot copies="3">
<random_card>rarity:uncommon;</random_card>
</slot>
<slot copies="1">
<random_card>rarity:special;</random_card>
</slot>
<slot copies="10">
<random_card>rarity:common;</random_card>
</slot>
</PACK>

View File

@@ -0,0 +1,934 @@
[meta]
author=Wagic Team
year=2015
[/meta]
[card]
primitive=Abzan Advantage
id=391781
rarity=C
[/card]
[card]
primitive=Abzan Beastmaster
id=391782
rarity=U
[/card]
[card]
primitive=Abzan Kin-Guard
id=391783
rarity=U
[/card]
[card]
primitive=Abzan Runemark
id=391784
rarity=C
[/card]
[card]
primitive=Abzan Skycaptain
id=391785
rarity=C
[/card]
[card]
primitive=Ainok Guide
id=391786
rarity=C
[/card]
[card]
primitive=Alesha, Who Smiles at Death
id=391787
rarity=R
[/card]
[card]
primitive=Alesha's Vanguard
id=391788
rarity=C
[/card]
[card]
primitive=Ambush Krotiq
id=391789
rarity=C
[/card]
[card]
primitive=Ancestral Vengeance
id=391790
rarity=C
[/card]
[card]
primitive=Arashin Cleric
id=391791
rarity=C
[/card]
[card]
primitive=Arashin War Beast
id=391792
rarity=U
[/card]
[card]
primitive=Arcbond
id=391793
rarity=R
[/card]
[card]
primitive=Archers of Qarsi
id=391794
rarity=C
[/card]
[card]
primitive=Archfiend of Depravity
id=391795
rarity=R
[/card]
[card]
primitive=Atarka, World Render
id=391796
rarity=R
[/card]
[card]
primitive=Aven Skirmisher
id=391797
rarity=C
[/card]
[card]
primitive=Aven Surveyor
id=391798
rarity=C
[/card]
[card]
primitive=Bathe in Dragonfire
id=391799
rarity=C
[/card]
[card]
primitive=Battle Brawler
id=391800
rarity=U
[/card]
[card]
primitive=Battlefront Krushok
id=391801
rarity=U
[/card]
[card]
primitive=Bloodfell Caves
id=391802
rarity=C
[/card]
[card]
primitive=Bloodfire Enforcers
id=391803
rarity=U
[/card]
[card]
primitive=Blossoming Sands
id=391804
rarity=C
[/card]
[card]
primitive=Break Through the Line
id=391805
rarity=U
[/card]
[card]
primitive=Brutal Hordechief
id=391806
rarity=M
[/card]
[card]
primitive=Cached Defenses
id=391807
rarity=U
[/card]
[card]
primitive=Channel Harm
id=391808
rarity=U
[/card]
[card]
primitive=Citadel Siege
id=391809
rarity=R
[/card]
[card]
primitive=Cloudform
id=391810
rarity=U
[/card]
[card]
primitive=Collateral Damage
id=391811
rarity=C
[/card]
[card]
primitive=Crucible of the Spirit Dragon
id=391812
rarity=R
[/card]
[card]
primitive=Crux of Fate
id=391813
rarity=R
[/card]
[card]
primitive=Cunning Strike
id=391814
rarity=C
[/card]
[card]
primitive=Daghatar the Adamant
id=391815
rarity=R
[/card]
[card]
primitive=Dark Deal
id=391816
rarity=U
[/card]
[card]
primitive=Defiant Ogre
id=391817
rarity=C
[/card]
[card]
primitive=Destructor Dragon
id=391818
rarity=U
[/card]
[card]
primitive=Diplomacy of the Wastes
id=391819
rarity=U
[/card]
[card]
primitive=Dismal Backwater
id=391820
rarity=C
[/card]
[card]
primitive=Douse in Gloom
id=391821
rarity=C
[/card]
[card]
primitive=Dragon Bell Monk
id=391822
rarity=C
[/card]
[card]
primitive=Dragonrage
id=391823
rarity=U
[/card]
[card]
primitive=Dragonscale General
id=391824
rarity=R
[/card]
[card]
primitive=Dromoka, the Eternal
id=391825
rarity=R
[/card]
[card]
primitive=Elite Scaleguard
id=391826
rarity=U
[/card]
[card]
primitive=Enhanced Awareness
id=391827
rarity=C
[/card]
[card]
primitive=Ethereal Ambush
id=391828
rarity=C
[/card]
[card]
primitive=Fascination
id=391829
rarity=U
[/card]
[card]
primitive=Fearsome Awakening
id=391830
rarity=U
[/card]
[card]
primitive=Feral Krushok
id=391831
rarity=C
[/card]
[card]
primitive=Fierce Invocation
id=391832
rarity=C
[/card]
[card]
primitive=Flamerush Rider
id=391833
rarity=R
[/card]
[card]
primitive=Flamewake Phoenix
id=391834
rarity=R
[/card]
[card]
primitive=Forest
id=391836
rarity=C
[/card]
[card]
primitive=Formless Nurturing
id=391837
rarity=C
[/card]
[card]
primitive=Friendly Fire
id=391838
rarity=U
[/card]
[card]
primitive=Frontier Mastodon
id=391839
rarity=C
[/card]
[card]
primitive=Frontier Siege
id=391840
rarity=R
[/card]
[card]
primitive=Frost Walker
id=391841
rarity=U
[/card]
[card]
primitive=Fruit of the First Tree
id=391842
rarity=U
[/card]
[card]
primitive=Ghastly Conscription
id=391843
rarity=M
[/card]
[card]
primitive=Goblin Boom Keg
id=391844
rarity=U
[/card]
[card]
primitive=Goblin Heelcutter
id=391845
rarity=C
[/card]
[card]
primitive=Gore Swine
id=391846
rarity=C
[/card]
[card]
primitive=Grave Strength
id=391847
rarity=U
[/card]
[card]
primitive=Great-Horn Krushok
id=391848
rarity=C
[/card]
[card]
primitive=Grim Contest
id=391849
rarity=C
[/card]
[card]
primitive=Gurmag Angler
id=391850
rarity=C
[/card]
[card]
primitive=Harsh Sustenance
id=391851
rarity=C
[/card]
[card]
primitive=Hero's Blade
id=391852
rarity=U
[/card]
[card]
primitive=Hewed Stone Retainers
id=391853
rarity=U
[/card]
[card]
primitive=Honor's Reward
id=391854
rarity=U
[/card]
[card]
primitive=Hooded Assassin
id=391855
rarity=C
[/card]
[card]
primitive=Humble Defector
id=391856
rarity=U
[/card]
[card]
primitive=Hungering Yeti
id=391857
rarity=U
[/card]
[card]
primitive=Hunt the Weak
id=391858
rarity=C
[/card]
[card]
primitive=Island
id=391859
rarity=C
[/card]
[card]
primitive=Jeskai Barricade
id=391861
rarity=U
[/card]
[card]
primitive=Jeskai Infiltrator
id=391862
rarity=R
[/card]
[card]
primitive=Jeskai Runemark
id=391863
rarity=C
[/card]
[card]
primitive=Jeskai Sage
id=391864
rarity=C
[/card]
[card]
primitive=Jungle Hollow
id=391865
rarity=C
[/card]
[card]
primitive=Kolaghan, the Storm's Fury
id=391866
rarity=R
[/card]
[card]
primitive=Lightform
id=391867
rarity=U
[/card]
[card]
primitive=Lightning Shrieker
id=391868
rarity=C
[/card]
[card]
primitive=Lotus Path Djinn
id=391869
rarity=C
[/card]
[card]
primitive=Lotus-Eye Mystics
id=391870
rarity=U
[/card]
[card]
primitive=Map the Wastes
id=391871
rarity=C
[/card]
[card]
primitive=Marang River Prowler
id=391872
rarity=U
[/card]
[card]
primitive=Mardu Runemark
id=391873
rarity=C
[/card]
[card]
primitive=Mardu Scout
id=391874
rarity=C
[/card]
[card]
primitive=Mardu Shadowspear
id=391875
rarity=U
[/card]
[card]
primitive=Mardu Strike Leader
id=391876
rarity=R
[/card]
[card]
primitive=Mardu Woe-Reaper
id=391877
rarity=U
[/card]
[card]
primitive=Mastery of the Unseen
id=391878
rarity=R
[/card]
[card]
primitive=Merciless Executioner
id=391879
rarity=U
[/card]
[card]
primitive=Mindscour Dragon
id=391880
rarity=U
[/card]
[card]
primitive=Mistfire Adept
id=391881
rarity=U
[/card]
[card]
primitive=Mob Rule
id=391882
rarity=R
[/card]
[card]
primitive=Monastery Mentor
id=391883
rarity=M
[/card]
[card]
primitive=Monk Token
id=-391883
rarity=T
[/card]
[card]
primitive=Monastery Siege
id=391884
rarity=R
[/card]
[card]
primitive=Mountain
id=391885
rarity=C
[/card]
[card]
primitive=Neutralizing Blast
id=391887
rarity=U
[/card]
[card]
primitive=Noxious Dragon
id=391888
rarity=U
[/card]
[card]
primitive=Ojutai, Soul of Winter
id=391889
rarity=R
[/card]
[card]
primitive=Orc Sureshot
id=391890
rarity=U
[/card]
[card]
primitive=Outpost Siege
id=391891
rarity=R
[/card]
[card]
primitive=Palace Siege
id=391892
rarity=R
[/card]
[card]
primitive=Pilgrim of the Fires
id=391893
rarity=U
[/card]
[card]
primitive=Plains
id=391895
rarity=C
[/card]
[card]
primitive=Pressure Point
id=391896
rarity=C
[/card]
[card]
primitive=Pyrotechnics
id=391897
rarity=U
[/card]
[card]
primitive=Qarsi High Priest
id=391898
rarity=U
[/card]
[card]
primitive=Rageform
id=391899
rarity=U
[/card]
[card]
primitive=Rakshasa's Disdain
id=391900
rarity=C
[/card]
[card]
primitive=Rally the Ancestors
id=391901
rarity=R
[/card]
[card]
primitive=Reach of Shadows
id=391902
rarity=C
[/card]
[card]
primitive=Reality Shift
id=391903
rarity=U
[/card]
[card]
primitive=Refocus
id=391904
rarity=C
[/card]
[card]
primitive=Renowned Weaponsmith
id=391905
rarity=U
[/card]
[card]
primitive=Return to the Earth
id=391906
rarity=C
[/card]
[card]
primitive=Rite of Undoing
id=391907
rarity=U
[/card]
[card]
primitive=Rugged Highlands
id=391908
rarity=C
[/card]
[card]
primitive=Ruthless Instincts
id=391909
rarity=U
[/card]
[card]
primitive=Sage-Eye Avengers
id=391911
rarity=R
[/card]
[card]
primitive=Sage's Reverie
id=391910
rarity=U
[/card]
[card]
primitive=Sandblast
id=391912
rarity=C
[/card]
[card]
primitive=Sandsteppe Mastodon
id=391913
rarity=R
[/card]
[card]
primitive=Sandsteppe Outcast
id=391914
rarity=C
[/card]
[card]
primitive=Scoured Barrens
id=391915
rarity=C
[/card]
[card]
primitive=Scroll of the Masters
id=391916
rarity=R
[/card]
[card]
primitive=Shaman of the Great Hunt
id=391917
rarity=M
[/card]
[card]
primitive=Shamanic Revelation
id=391918
rarity=R
[/card]
[card]
primitive=Shifting Loyalties
id=391919
rarity=U
[/card]
[card]
primitive=Shockmaw Dragon
id=391920
rarity=U
[/card]
[card]
primitive=Shu Yun, the Silent Tempest
id=391921
rarity=R
[/card]
[card]
primitive=Sibsig Host
id=391922
rarity=C
[/card]
[card]
primitive=Sibsig Muckdraggers
id=391923
rarity=U
[/card]
[card]
primitive=Silumgar, the Drifting Death
id=391924
rarity=R
[/card]
[card]
primitive=Smoldering Efreet
id=391925
rarity=C
[/card]
[card]
primitive=Soul Summons
id=391926
rarity=C
[/card]
[card]
primitive=Soulfire Grand Master
id=391927
rarity=M
[/card]
[card]
primitive=Soulflayer
id=391928
rarity=R
[/card]
[card]
primitive=Sudden Reclamation
id=391929
rarity=U
[/card]
[card]
primitive=Sultai Emissary
id=391930
rarity=C
[/card]
[card]
primitive=Sultai Runemark
id=391931
rarity=C
[/card]
[card]
primitive=Sultai Skullkeeper
id=391932
rarity=C
[/card]
[card]
primitive=Supplant Form
id=391933
rarity=R
[/card]
[card]
primitive=Swamp
id=391934
rarity=C
[/card]
[card]
primitive=Swiftwater Cliffs
id=391936
rarity=C
[/card]
[card]
primitive=Tasigur, the Golden Fang
id=391937
rarity=R
[/card]
[card]
primitive=Tasigur's Cruelty
id=391938
rarity=C
[/card]
[card]
primitive=Temporal Trespass
id=391939
rarity=M
[/card]
[card]
primitive=Temur Battle Rage
id=391940
rarity=C
[/card]
[card]
primitive=Temur Runemark
id=391941
rarity=C
[/card]
[card]
primitive=Temur Sabertooth
id=391942
rarity=U
[/card]
[card]
primitive=Temur War Shaman
id=391943
rarity=R
[/card]
[card]
primitive=Thornwood Falls
id=391944
rarity=C
[/card]
[card]
primitive=Torrent Elemental
id=391945
rarity=M
[/card]
[card]
primitive=Tranquil Cove
id=391946
rarity=C
[/card]
[card]
primitive=Typhoid Rats
id=391947
rarity=C
[/card]
[card]
primitive=Ugin, the Spirit Dragon
id=391948
rarity=M
[/card]
[card]
primitive=Ugin's Construct
id=391949
rarity=U
[/card]
[card]
primitive=Valorous Stance
id=391950
rarity=U
[/card]
[card]
primitive=Vaultbreaker
id=391951
rarity=U
[/card]
[card]
primitive=Wandering Champion
id=391952
rarity=U
[/card]
[card]
primitive=War Flare
id=391953
rarity=C
[/card]
[card]
primitive=Warden of the First Tree
id=391954
rarity=M
[/card]
[card]
primitive=Wardscale Dragon
id=391955
rarity=U
[/card]
[card]
primitive=Whisk Away
id=391956
rarity=C
[/card]
[card]
primitive=Whisperer of the Wilds
id=391957
rarity=C
[/card]
[card]
primitive=Whisperwood Elemental
id=391958
rarity=M
[/card]
[card]
primitive=Wild Slash
id=391959
rarity=U
[/card]
[card]
primitive=Wildcall
id=391960
rarity=R
[/card]
[card]
primitive=Will of the Naga
id=391961
rarity=C
[/card]
[card]
primitive=Winds of Qal Sisma
id=391962
rarity=U
[/card]
[card]
primitive=Wind-Scarred Crag
id=391963
rarity=C
[/card]
[card]
primitive=Write into Being
id=391964
rarity=C
[/card]
[card]
primitive=Yasova Dragonclaw
id=391965
rarity=R
[/card]
[card]
primitive=Forest
id=391835
rarity=C
[/card]
[card]
primitive=Island
id=391860
rarity=C
[/card]
[card]
primitive=Mountain
id=391886
rarity=C
[/card]
[card]
primitive=Plains
id=391894
rarity=C
[/card]
[card]
primitive=Swamp
id=391935
rarity=C
[/card]

View File

@@ -0,0 +1,21 @@
<PACK name="Fate Reforged" type="Booster" pool="all set:FRF;" price="700">
<slot copies="1">
<random_card>rarity:mythic;</random_card>
<random_card>rarity:rare;</random_card>
<random_card>rarity:rare;</random_card>
<random_card>rarity:rare;</random_card>
<random_card>rarity:rare;</random_card>
<random_card>rarity:rare;</random_card>
<random_card>rarity:rare;</random_card>
<random_card>rarity:rare;</random_card>
</slot>
<slot copies="3">
<random_card>rarity:uncommon;</random_card>
</slot>
<slot copies="1">
<random_card>rarity:special;</random_card>
</slot>
<slot copies="10">
<random_card>rarity:common;</random_card>
</slot>
</PACK>

View File

@@ -0,0 +1,830 @@
[meta]
author=Wagic Team
year=2014
block=Theros
[/meta]
[card]
primitive=Aegis of the Gods
id=380364
rarity=R
[/card]
[card]
primitive=Aerial Formation
id=380365
rarity=C
[/card]
[card]
primitive=Agent of Erebos
id=380366
rarity=U
[/card]
[card]
primitive=Ajani, Mentor of Heroes
id=380367
rarity=M
[/card]
[card]
primitive=Ajani's Presence
id=380368
rarity=C
[/card]
[card]
primitive=Akroan Line Breaker
id=380369
rarity=U
[/card]
[card]
primitive=Akroan Mastiff
id=380370
rarity=C
[/card]
[card]
primitive=Armament of Nyx
id=380371
rarity=C
[/card]
[card]
primitive=Armory of Iroas
id=380372
rarity=U
[/card]
[card]
primitive=Aspect of Gorgon
id=380373
rarity=C
[/card]
[card]
primitive=Athreos, God of Passage
id=380374
rarity=M
[/card]
[card]
primitive=Banishing Light
id=380375
rarity=U
[/card]
[card]
primitive=Bassara Tower Archer
id=380376
rarity=U
[/card]
[card]
primitive=Battlefield Thaumaturge
id=380377
rarity=R
[/card]
[card]
primitive=Bearer of the Heavens
id=380378
rarity=R
[/card]
[card]
primitive=Bladetusk Boar
id=380379
rarity=C
[/card]
[card]
primitive=Blinding Flare
id=380380
rarity=U
[/card]
[card]
primitive=Bloodcrazed Hoplite
id=380381
rarity=C
[/card]
[card]
primitive=Brain Maggot
id=380382
rarity=U
[/card]
[card]
primitive=Cast into Darkness
id=380383
rarity=C
[/card]
[card]
primitive=Chariot of Victory
id=380384
rarity=U
[/card]
[card]
primitive=Cloaked Siren
id=380385
rarity=C
[/card]
[card]
primitive=Colossal Heroics
id=380386
rarity=U
[/card]
[card]
primitive=Consign to Dust
id=380387
rarity=U
[/card]
[card]
primitive=Countermand
id=380388
rarity=C
[/card]
[card]
primitive=Cruel Feeding
id=380389
rarity=C
[/card]
[card]
primitive=Crystalline Nautilus
id=380390
rarity=U
[/card]
[card]
primitive=Cyclops of Eternal Fury
id=380391
rarity=U
[/card]
[card]
primitive=Dakra Mystic
id=380392
rarity=U
[/card]
[card]
primitive=Daring Thief
id=380393
rarity=R
[/card]
[card]
primitive=Dawnbringer Charioteers
id=380394
rarity=R
[/card]
[card]
primitive=Deicide
id=380395
rarity=R
[/card]
[card]
primitive=Desecration Plague
id=380396
rarity=C
[/card]
[card]
primitive=Deserter's Quarters
id=380397
rarity=U
[/card]
[card]
primitive=Desperate Stand
id=380398
rarity=U
[/card]
[card]
primitive=Dictate of Erebos
id=380399
rarity=R
[/card]
[card]
primitive=Dictate of Heliod
id=380400
rarity=R
[/card]
[card]
primitive=Dictate of Karametra
id=380401
rarity=R
[/card]
[card]
primitive=Dictate of Kruphix
id=380402
rarity=R
[/card]
[card]
primitive=Dictate of the Twin Gods
id=380403
rarity=R
[/card]
[card]
primitive=Disciple of Deceit
id=380404
rarity=U
[/card]
[card]
primitive=Doomwake Giant
id=380405
rarity=R
[/card]
[card]
primitive=Dreadbringer Lampads
id=380406
rarity=C
[/card]
[card]
primitive=Eagle of the Watch
id=380407
rarity=C
[/card]
[card]
primitive=Eidolon of Blossoms
id=380408
rarity=R
[/card]
[card]
primitive=Eidolon of Rhetoric
id=380409
rarity=U
[/card]
[card]
primitive=Eidolon of the Great Revel
id=380410
rarity=R
[/card]
[card]
primitive=Extinguish All Hope
id=380411
rarity=R
[/card]
[card]
primitive=Feast of Dreams
id=380412
rarity=C
[/card]
[card]
primitive=Felhide Petrifier
id=380413
rarity=U
[/card]
[card]
primitive=Flamespeaker's Will
id=380414
rarity=C
[/card]
[card]
primitive=Fleetfeather Cockatrice
id=380415
rarity=U
[/card]
[card]
primitive=Flurry of Horns
id=380416
rarity=C
[/card]
[card]
primitive=Font of Fertility
id=380417
rarity=C
[/card]
[card]
primitive=Font of Fortunes
id=380418
rarity=C
[/card]
[card]
primitive=Font of Ire
id=380419
rarity=C
[/card]
[card]
primitive=Font of Return
id=380420
rarity=C
[/card]
[card]
primitive=Font of Vigor
id=380421
rarity=C
[/card]
[card]
primitive=Forgeborn Oreads
id=380422
rarity=U
[/card]
[card]
primitive=Gluttonous Cyclops
id=380423
rarity=C
[/card]
[card]
primitive=Gnarled Scarhide
id=380424
rarity=U
[/card]
[card]
primitive=Godhunter Octopus
id=380425
rarity=C
[/card]
[card]
primitive=Godsend
id=380426
rarity=M
[/card]
[card]
primitive=Golden Hind
id=380427
rarity=C
[/card]
[card]
primitive=Goldenhide Ox
id=380428
rarity=U
[/card]
[card]
primitive=Gold-Forged Sentinel
id=380429
rarity=U
[/card]
[card]
primitive=Grim Guardian
id=380430
rarity=C
[/card]
[card]
primitive=Hall of Triumph
id=380431
rarity=R
[/card]
[card]
primitive=Harness by Force
id=380432
rarity=R
[/card]
[card]
primitive=Harvestguard Alseids
id=380433
rarity=C
[/card]
[card]
primitive=Heroes' Bane
id=380434
rarity=R
[/card]
[card]
primitive=Hour of Need
id=380435
rarity=U
[/card]
[card]
primitive=Hubris
id=380436
rarity=C
[/card]
[card]
primitive=Humbler of Mortals
id=380437
rarity=C
[/card]
[card]
primitive=Hydra Broodmaster
id=380438
rarity=R
[/card]
[card]
primitive=Hypnotic Siren
id=380439
rarity=R
[/card]
[card]
primitive=Interpret the Signs
id=380440
rarity=U
[/card]
[card]
primitive=Iroas, God of Victory
id=380441
rarity=M
[/card]
[card]
primitive=Keranos, God of Storms
id=380442
rarity=M
[/card]
[card]
primitive=King Macar, the Gold-Cursed
id=380443
rarity=R
[/card]
[card]
primitive=Kiora's Dismissal
id=380444
rarity=U
[/card]
[card]
primitive=Knowledge and Power
id=380445
rarity=U
[/card]
[card]
primitive=Kruphix, God of Horizons
id=380446
rarity=M
[/card]
[card]
primitive=Kruphix's Insight
id=380447
rarity=C
[/card]
[card]
primitive=Lagonna-Band Trailblazer
id=380448
rarity=C
[/card]
[card]
primitive=Launch the Fleet
id=380449
rarity=R
[/card]
[card]
primitive=Leonin Iconoclast
id=380450
rarity=U
[/card]
[card]
primitive=Lightning Diadem
id=380451
rarity=C
[/card]
[card]
primitive=Magma Spray
id=380452
rarity=C
[/card]
[card]
primitive=Mana Confluence
id=380453
rarity=R
[/card]
[card]
primitive=Market Festival
id=380454
rarity=C
[/card]
[card]
primitive=Master of the Feast
id=380455
rarity=R
[/card]
[card]
primitive=Mogis's Warhound
id=380456
rarity=U
[/card]
[card]
primitive=Mortal Obstinacy
id=380457
rarity=C
[/card]
[card]
primitive=Nature's Panoply
id=380458
rarity=C
[/card]
[card]
primitive=Nessian Game Warden
id=380459
rarity=U
[/card]
[card]
primitive=Nightmarish End
id=380460
rarity=U
[/card]
[card]
primitive=Nyx Infusion
id=380461
rarity=C
[/card]
[card]
primitive=Nyx Weaver
id=380462
rarity=U
[/card]
[card]
primitive=Nyx-Fleece Ram
id=380463
rarity=U
[/card]
[card]
primitive=Oakheart Dryads
id=380464
rarity=C
[/card]
[card]
primitive=Oppressive Rays
id=380465
rarity=C
[/card]
[card]
primitive=Oreskos Swiftclaw
id=380466
rarity=C
[/card]
[card]
primitive=Pensive Minotaur
id=380467
rarity=C
[/card]
[card]
primitive=Phalanx Formation
id=380468
rarity=U
[/card]
[card]
primitive=Pharika, God of Affliction
id=380469
rarity=M
[/card]
[card]
primitive=Pharika's Chosen
id=380470
rarity=C
[/card]
[card]
primitive=Pheres-Band Thunderhoof
id=380471
rarity=C
[/card]
[card]
primitive=Pheres-Band Warchief
id=380472
rarity=R
[/card]
[card]
primitive=Pin to the Earth
id=380473
rarity=C
[/card]
[card]
primitive=Polymorphous Rush
id=380474
rarity=R
[/card]
[card]
primitive=Prophetic Flamespeaker
id=380475
rarity=M
[/card]
[card]
primitive=Pull from the Deep
id=380476
rarity=U
[/card]
[card]
primitive=Quarry Colossus
id=380477
rarity=U
[/card]
[card]
primitive=Ravenous Leucrocota
id=380478
rarity=C
[/card]
[card]
primitive=Renowned Weaver
id=380479
rarity=C
[/card]
[card]
primitive=Reprisal
id=380480
rarity=U
[/card]
[card]
primitive=Returned Reveler
id=380481
rarity=C
[/card]
[card]
primitive=Revel of the Fallen God
id=380482
rarity=R
[/card]
[card]
primitive=Reviving Melody
id=380483
rarity=U
[/card]
[card]
primitive=Riddle of Lightning
id=380484
rarity=U
[/card]
[card]
primitive=Riptide Chimera
id=380485
rarity=U
[/card]
[card]
primitive=Rise of Eagles
id=380486
rarity=C
[/card]
[card]
primitive=Ritual of the Returned
id=380487
rarity=U
[/card]
[card]
primitive=Rollick of Abandon
id=380488
rarity=U
[/card]
[card]
primitive=Rotted Hulk
id=380489
rarity=C
[/card]
[card]
primitive=Rouse the Mob
id=380490
rarity=C
[/card]
[card]
primitive=Sage of Hours
id=380491
rarity=M
[/card]
[card]
primitive=Satyr Grovedancer
id=380492
rarity=C
[/card]
[card]
primitive=Satyr Hoplite
id=380493
rarity=C
[/card]
[card]
primitive=Scourge of Fleets
id=380494
rarity=R
[/card]
[card]
primitive=Setessan Tactics
id=380495
rarity=R
[/card]
[card]
primitive=Sightless Brawler
id=380496
rarity=U
[/card]
[card]
primitive=Sigiled Skink
id=380497
rarity=C
[/card]
[card]
primitive=Sigiled Starfish
id=380498
rarity=C
[/card]
[card]
primitive=Silence the Believers
id=380499
rarity=R
[/card]
[card]
primitive=Skybind
id=380500
rarity=R
[/card]
[card]
primitive=Skyspear Cavalry
id=380501
rarity=U
[/card]
[card]
primitive=Solidarity of Heroes
id=380502
rarity=U
[/card]
[card]
primitive=Spawn of Thraxes
id=380503
rarity=R
[/card]
[card]
primitive=Spirespine
id=380504
rarity=U
[/card]
[card]
primitive=Spite of Mogis
id=380505
rarity=U
[/card]
[card]
primitive=Spiteful Blow
id=380506
rarity=U
[/card]
[card]
primitive=Squelching Leeches
id=380507
rarity=U
[/card]
[card]
primitive=Starfall
id=380508
rarity=C
[/card]
[card]
primitive=Stonewise Fortifier
id=380509
rarity=C
[/card]
[card]
primitive=Stormchaser Chimera
id=380510
rarity=U
[/card]
[card]
primitive=Strength from the Fallen
id=380511
rarity=U
[/card]
[card]
primitive=Supply-Line Cranes
id=380512
rarity=C
[/card]
[card]
primitive=Swarmborn Giant
id=380513
rarity=U
[/card]
[card]
primitive=Temple of Epiphany
id=380514
rarity=R
[/card]
[card]
primitive=Temple of Malady
id=380515
rarity=R
[/card]
[card]
primitive=Tethmos High Priest
id=380516
rarity=U
[/card]
[card]
primitive=Thassa's Devourer
id=380517
rarity=C
[/card]
[card]
primitive=Thassa's Ire
id=380518
rarity=U
[/card]
[card]
primitive=Thoughtrender Lamia
id=380519
rarity=U
[/card]
[card]
primitive=Tormented Thoughts
id=380520
rarity=U
[/card]
[card]
primitive=Triton Cavalry
id=380521
rarity=U
[/card]
[card]
primitive=Triton Shorestalker
id=380522
rarity=C
[/card]
[card]
primitive=Twinflame
id=380523
rarity=R
[/card]
[card]
primitive=Underworld Coinsmith
id=380524
rarity=U
[/card]
[card]
primitive=War-Wing Siren
id=380525
rarity=C
[/card]
[card]
primitive=Whitewater Naiads
id=380526
rarity=U
[/card]
[card]
primitive=Wildfire Cerberus
id=380527
rarity=U
[/card]
[card]
primitive=Worst Fears
id=380528
rarity=M
[/card]

View File

@@ -0,0 +1,21 @@
<PACK name="Journey Into Nyx" type="Booster" pool="all set:JOU;" price="700">
<slot copies="1">
<random_card>rarity:mythic;</random_card>
<random_card>rarity:rare;</random_card>
<random_card>rarity:rare;</random_card>
<random_card>rarity:rare;</random_card>
<random_card>rarity:rare;</random_card>
<random_card>rarity:rare;</random_card>
<random_card>rarity:rare;</random_card>
<random_card>rarity:rare;</random_card>
</slot>
<slot copies="3">
<random_card>rarity:uncommon;</random_card>
</slot>
<slot copies="1">
<random_card>rarity:special;</random_card>
</slot>
<slot copies="10">
<random_card>rarity:common;</random_card>
</slot>
</PACK>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,21 @@
<PACK name="Khans of Tarkir" type="Booster" pool="all set:KTK;" price="700">
<slot copies="1">
<random_card>rarity:mythic;</random_card>
<random_card>rarity:rare;</random_card>
<random_card>rarity:rare;</random_card>
<random_card>rarity:rare;</random_card>
<random_card>rarity:rare;</random_card>
<random_card>rarity:rare;</random_card>
<random_card>rarity:rare;</random_card>
<random_card>rarity:rare;</random_card>
</slot>
<slot copies="3">
<random_card>rarity:uncommon;</random_card>
</slot>
<slot copies="1">
<random_card>rarity:special;</random_card>
</slot>
<slot copies="10">
<random_card>rarity:common;</random_card>
</slot>
</PACK>

View File

@@ -1513,8 +1513,3 @@ primitive=Zephyr Net
id=142357 id=142357
rarity=C rarity=C
[/card] [/card]
[card]
primitive=Avatar Token
id=-140233
rarity=T
[/card]

View File

@@ -11,7 +11,7 @@ rarity=C
[card] [card]
primitive=Accorder's Shield primitive=Accorder's Shield
id=370581 id=370581
rarity=C rarity=U
[/card] [/card]
[card] [card]
primitive=Accursed Spirit primitive=Accursed Spirit
@@ -31,7 +31,7 @@ rarity=C
[card] [card]
primitive=Air Servant primitive=Air Servant
id=370688 id=370688
rarity=C rarity=U
[/card] [/card]
[card] [card]
primitive=Ajani, Caller of the Pride primitive=Ajani, Caller of the Pride
@@ -121,7 +121,7 @@ rarity=C
[card] [card]
primitive=Blur Sliver primitive=Blur Sliver
id=370593 id=370593
rarity=U rarity=C
[/card] [/card]
[card] [card]
primitive=Bogbrew Witch primitive=Bogbrew Witch
@@ -156,7 +156,7 @@ rarity=C
[card] [card]
primitive=Bubbling Cauldron primitive=Bubbling Cauldron
id=370661 id=370661
rarity=R rarity=U
[/card] [/card]
[card] [card]
primitive=Burning Earth primitive=Burning Earth
@@ -261,7 +261,7 @@ rarity=R
[card] [card]
primitive=Darksteel Forge primitive=Darksteel Forge
id=370734 id=370734
rarity=R rarity=M
[/card] [/card]
[card] [card]
primitive=Darksteel Ingot primitive=Darksteel Ingot
@@ -326,7 +326,7 @@ rarity=R
[card] [card]
primitive=Doom Blade primitive=Doom Blade
id=370609 id=370609
rarity=C rarity=U
[/card] [/card]
[card] [card]
primitive=Door of Destinies primitive=Door of Destinies
@@ -339,6 +339,11 @@ id=370660
rarity=U rarity=U
[/card] [/card]
[card] [card]
primitive=Dragon Egg Dragon
id=-370660
rarity=T
[/card]
[card]
primitive=Dragon Hatchling primitive=Dragon Hatchling
id=370717 id=370717
rarity=C rarity=C
@@ -431,7 +436,7 @@ rarity=C
[card] [card]
primitive=Fortify primitive=Fortify
id=370712 id=370712
rarity=U rarity=C
[/card] [/card]
[card] [card]
primitive=Frost Breath primitive=Frost Breath
@@ -581,7 +586,7 @@ rarity=R
[card] [card]
primitive=Kalonian Hydra primitive=Kalonian Hydra
id=370766 id=370766
rarity=R rarity=M
[/card] [/card]
[card] [card]
primitive=Kalonian Tusker primitive=Kalonian Tusker
@@ -591,7 +596,7 @@ rarity=U
[card] [card]
primitive=Lava Axe primitive=Lava Axe
id=370595 id=370595
rarity= rarity=C
[/card] [/card]
[card] [card]
primitive=Lay of the Land primitive=Lay of the Land
@@ -619,8 +624,8 @@ id=370740
rarity=R rarity=R
[/card] [/card]
[card] [card]
primitive=Zombie Token primitive=Liliana's Reaver Zombie
id=-339967 id=-370740
rarity=T rarity=T
[/card] [/card]
[card] [card]
@@ -736,7 +741,7 @@ rarity=R
[card] [card]
primitive=Nightwing Shade primitive=Nightwing Shade
id=370705 id=370705
rarity=U rarity=C
[/card] [/card]
[card] [card]
primitive=Oath of the Ancient Wood primitive=Oath of the Ancient Wood
@@ -831,7 +836,7 @@ rarity=R
[card] [card]
primitive=Quag Sickness primitive=Quag Sickness
id=370714 id=370714
rarity=U rarity=C
[/card] [/card]
[card] [card]
primitive=Quicken primitive=Quicken
@@ -846,7 +851,7 @@ rarity=C
[card] [card]
primitive=Ratchet Bomb primitive=Ratchet Bomb
id=370623 id=370623
rarity=C rarity=R
[/card] [/card]
[card] [card]
primitive=Regathan Firecat primitive=Regathan Firecat
@@ -896,7 +901,7 @@ rarity=R
[card] [card]
primitive=Scourge of Valkas primitive=Scourge of Valkas
id=370584 id=370584
rarity=R rarity=M
[/card] [/card]
[card] [card]
primitive=Scroll Thief primitive=Scroll Thief
@@ -951,7 +956,7 @@ rarity=M
[card] [card]
primitive=Shimmering Grotto primitive=Shimmering Grotto
id=370631 id=370631
rarity=C rarity=U
[/card] [/card]
[card] [card]
primitive=Shivan Dragon primitive=Shivan Dragon
@@ -1031,6 +1036,7 @@ rarity=U
[card] [card]
primitive=Staff of the Mind Magus primitive=Staff of the Mind Magus
id=370676 id=370676
rarity=U
[/card] [/card]
[card] [card]
primitive=Staff of the Wild Magus primitive=Staff of the Wild Magus
@@ -1105,7 +1111,7 @@ rarity=R
[card] [card]
primitive=Thunder Strike primitive=Thunder Strike
id=370607 id=370607
rarity=U rarity=C
[/card] [/card]
[card] [card]
primitive=Tidebinder Mage primitive=Tidebinder Mage
@@ -1115,7 +1121,7 @@ rarity=R
[card] [card]
primitive=Time Ebb primitive=Time Ebb
id=370641 id=370641
rarity=R rarity=C
[/card] [/card]
[card] [card]
primitive=Tome Scour primitive=Tome Scour
@@ -1215,7 +1221,7 @@ rarity=R
[card] [card]
primitive=Windreader Sphinx primitive=Windreader Sphinx
id=370810 id=370810
rarity=U rarity=M
[/card] [/card]
[card] [card]
primitive=Windstorm primitive=Windstorm
@@ -1243,8 +1249,8 @@ id=370619
rarity=R rarity=R
[/card] [/card]
[card] [card]
primitive=Zombie Token primitive=Xathrid Necromancer Zombie
id=-339968 id=-370619
rarity=T rarity=T
[/card] [/card]
[card] [card]

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,16 @@
grade=borderline grade=borderline
[card] [card]
name=Arrogant Wurm
abilities=trample,madness
autoexile=restriction{discarded} pay({2}{G}) name(pay 2G to cast) activate name(pay 2G to cast) castcard(normal)?name(put in graveyard) moveto(ownergraveyard)
text=Trample -- Madness {2}{G} (If you discard this card, you may cast it for its madness cost instead of putting it into your graveyard.)
mana={3}{G}{G}
type=Creature
subtype=Wurm
power=4
toughness=4
[/card]
[card]
name=Autumn Willow name=Autumn Willow
abilities=opponentshroud,shroud abilities=opponentshroud,shroud
auto={G}:-shroud auto={G}:-shroud
@@ -24,6 +35,50 @@ power=2
toughness=2 toughness=2
[/card] [/card]
[card] [card]
name=Basking Rootwalla
abilities=madness
autoexile=restriction{discarded} pay({0}) name(pay 0 to cast) activate name(pay 0 to cast) castcard(normal)?name(put in graveyard) moveto(ownergraveyard)
auto={1}{G}:2/2 limit:1
text={1}{G}: Basking Rootwalla gets +2/+2 until end of turn. Activate this ability only once each turn. -- Madness {0} (If you discard this card, you may cast it for its madness cost instead of putting it into your graveyard.)
mana={G}
type=Creature
subtype=Lizard
power=1
toughness=1
[/card]
[card]
name=Big Game Hunter
abilities=madness
autoexile=restriction{discarded} pay({B}) name(pay B to cast) activate name(pay B to cast) castcard(normal)?name(put in graveyard) moveto(ownergraveyard)
auto=bury target(creature[power>=4])
text=When Big Game Hunter enters the battlefield, destroy target creature with power 4 or greater. It can't be regenerated. -- Madness {B} (If you discard this card, you may cast it for its madness cost instead of putting it into your graveyard.)
mana={1}{B}{B}
type=Creature
subtype=Human Rebel Assassin
power=1
toughness=1
[/card]
[card]
name=Call to the Netherworld
abilities=madness
autoexile=restriction{discarded} pay({0}) name(pay 0 to cast) activate name(pay 0 to cast) castcard(normal)?name(put in graveyard) moveto(ownergraveyard)
target=creature[black]|myGraveyard
auto=moveTo(myHand)
text=Return target black creature card from your graveyard to your hand. -- Madness {0} (If you discard this card, you may cast it for its madness cost instead of putting it into your graveyard.)
mana={B}
type=Sorcery
[/card]
[card]
name=Cemetery Puca
text=Whenever a creature is put into a graveyard from the battlefield, you may pay {1}. If you do, Cemetery Puca becomes a copy of that creature and gains this ability.
auto=@movedto(creature|graveyard) from(battlefield):all(trigger[from]) pay[[{1}]] copy
mana={1}{UB}{UB}
type=Creature
subtype=Shapeshifter
power=1
toughness=2
[/card]
[card]
name=Cinder Seer name=Cinder Seer
auto={2}{r}{t}:target(creature,Player) damage:type:*[red]:myhand auto={2}{r}{t}:target(creature,Player) damage:type:*[red]:myhand
text={2}{R}, {T}: Reveal any number of red cards in your hand. Cinder Seer deals X damage to target creature or player, where X is the number of cards revealed this way. text={2}{R}, {T}: Reveal any number of red cards in your hand. Cinder Seer deals X damage to target creature or player, where X is the number of cards revealed this way.
@@ -44,6 +99,59 @@ mana={1}{B}{G}
type=Instant type=Instant
[/card] [/card]
[card] [card]
name=Cryptoplasm
auto=@each my upkeep:may copy target(other creature|battlefield)
text=At the beginning of your upkeep, you may have Cryptoplasm become a copy of another target creature. If you do, Cryptoplasm gains this ability.
mana={1}{U}{U}
type=Creature
subtype=Shapeshifter
power=2
toughness=2
[/card]
[card]
name=Dark Withering
abilities=madness
autoexile=restriction{discarded} pay({B}) name(pay B to cast) activate name(pay B to cast) castcard(normal)?name(put in graveyard) moveto(ownergraveyard)
target=creature[-black]
auto=destroy
text=Destroy target nonblack creature. -- Madness {B} (If you discard this card, you may cast it for its madness cost instead of putting it into your graveyard.)
mana={4}{B}{B}
type=Instant
[/card]
[card]
name=Dimir Doppelganger
auto={1}{U}{B}:target(creature|graveyard) moveto(exile) and!(copy)!
text={1}{U}{B}: Exile target creature card from a graveyard. Dimir Doppelganger becomes a copy of that card and gains this ability.
mana={1}{U}{B}
type=Creature
subtype=Shapeshifter
power=0
toughness=2
[/card]
[card]
name=Distortion Strike
target=creature
auto=1/0
auto=unblockable
auto=if rebound then transforms((,newability[moveto(exile)],newability[phaseaction[my upkeep once checkex] activate may activate castcard(restricted)]))
mana={U}
type=Sorcery
text=Target creature gets +1/+0 until end of turn and is unblockable this turn. Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
[/card]
[card]
name=Emerge Unscathed
target=creature|mybattlefield
auto=choice name(green) transforms((,newability[protection from green])) ueot
auto=choice name(red) transforms((,newability[protection from red])) ueot
auto=choice name(blue) transforms((,newability[protection from blue])) ueot
auto=choice name(black) transforms((,newability[protection from black])) ueot
auto=choice name(white) transforms((,newability[protection from white])) ueot
auto=if rebound then transforms((,newability[moveto(exile)],newability[phaseaction[my upkeep once checkex] activate may activate castcard(restricted)]))
mana={W}
type=Instant
text=Target creature you control gains protection from the color of your choice until end of turn. Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
[/card]
[card]
name=Feral Hydra name=Feral Hydra
type=Creature type=Creature
subtype=Hydra Beast subtype=Hydra Beast
@@ -56,6 +164,26 @@ auto={3}:counter(1/1)
#Not all player can use ability #Not all player can use ability
[/card] [/card]
[card] [card]
name=Fiery Temper
abilities=madness
autoexile=restriction{discarded} pay({R}) name(pay R to cast) activate name(pay R to cast) castcard(normal)?name(put in graveyard) moveto(ownergraveyard)
target=creature,player
auto=damage:3
text=Fiery Temper deals 3 damage to target creature or player. -- Madness {R} (If you discard this card, you may cast it for its madness cost instead of putting it into your graveyard.)
mana={1}{R}{R}
type=Instant
[/card]
[card]
name=Frantic Purification
abilities=madness
autoexile=restriction{discarded} pay({W}) name(pay W to cast) activate name(pay W to cast) castcard(normal)?name(put in graveyard) moveto(ownergraveyard)
target=enchantment
auto=destroy
text=Destroy target enchantment. -- Madness {W} (If you discard this card, you may cast it for its madness cost instead of putting it into your graveyard.)
mana={2}{W}
type=Instant
[/card]
[card]
name=Ghastly Remains name=Ghastly Remains
auto=foreach(zombie|myhand) counter(1/1,1) auto=foreach(zombie|myhand) counter(1/1,1)
autograveyard={B}{B}{B}:moveTo(myhand) myUpkeepOnly autograveyard={B}{B}{B}:moveTo(myhand) myUpkeepOnly
@@ -77,6 +205,18 @@ power=4
toughness=4 toughness=4
[/card] [/card]
[card] [card]
name=Gorgon Recluse
abilities=madness
autoexile=restriction{discarded} pay({B}{B}) name(pay BB to cast) activate name(pay BB to cast) castcard(normal)?name(put in graveyard) moveto(ownergraveyard)
auto=@combat(blocked,blocking) source(this) from(creature):all(trigger[from]) phaseaction[combatends once] destroy
text=Whenever Gorgon Recluse blocks or becomes blocked by a nonblack creature, destroy that creature at end of combat. -- Madness {B}{B} (If you discard this card, you may cast it for its madness cost instead of putting it into your graveyard.)
mana={3}{B}{B}
type=Creature
subtype=Gorgon
power=2
toughness=4
[/card]
[card]
name=Govern the Guildless name=Govern the Guildless
target=creature[-multicolor] target=creature[-multicolor]
auto=moveto(mybattlefield) auto=moveto(mybattlefield)
@@ -86,15 +226,15 @@ mana={5}{U}
type=Sorcery type=Sorcery
[/card] [/card]
[card] [card]
name=Gravecrawler name=Ichor Slick
abilities=cantblock abilities=madness
autograveyard=aslongas(zombie|myBattlefield) {B}:name(cast from graveyard) activate name(cast from graveyard) castcard(normal) assorcery autoexile=restriction{discarded} pay({3}{B}) name(pay 3B to cast) activate name(pay 3B to cast) castcard(normal)?name(put in graveyard) moveto(ownergraveyard)
text=Gravecrawler can't block. -- You may cast Gravecrawler from your graveyard as long as you control a Zombie. target=creature
mana={B} auto=-3/-3
type=Creature autohand=__CYCLING__({2})
subtype=Zombie text=Target creature gets -3/-3 until end of turn. -- Cycling {2} ({2}, Discard this card: Draw a card.) -- Madness {3}{B} (If you discard this card, you may cast it for its madness cost instead of putting it into your graveyard.)
power=2 mana={2}{B}
toughness=1 type=Sorcery
[/card] [/card]
[card] [card]
name=Ivy Seer name=Ivy Seer
@@ -160,6 +300,23 @@ power=1
toughness=1 toughness=1
[/card] [/card]
[card] [card]
name=Nomads' Assembly
auto=token(Kor Soldier,Creature Kor Soldier,1/1,white)*type:creature:mybattlefield
auto=if rebound then transforms((,newability[moveto(exile)],newability[phaseaction[my upkeep once checkex] activate may activate castcard(restricted)]))
mana={4}{W}{W}
type=Sorcery
text=Put a 1/1 white Kor Soldier creature token onto the battlefield for each creature you control. Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
[/card]
[card]
name=Obsessive Search
abilities=madness
autoexile=restriction{discarded} pay({U}) name(pay U to cast) activate name(pay U to cast) castcard(normal)?name(put in graveyard) moveto(ownergraveyard)
auto=draw:1 controller
text=Draw a card. -- Madness {U} (If you discard this card, you may cast it for its madness cost instead of putting it into your graveyard.)
mana={U}
type=Instant
[/card]
[card]
name=Ogre Marauder name=Ogre Marauder
text=Whenever Ogre Marauder attacks, it gains "Ogre Marauder can't be blocked" until end of turn unless defending player sacrifices a creature. text=Whenever Ogre Marauder attacks, it gains "Ogre Marauder can't be blocked" until end of turn unless defending player sacrifices a creature.
auto=@combat(attacking) source(this):ability$!name(choose one) if type(creature|mybattlefield)~morethan~0 then choice sacrifice notatarget(creature|mybattlefield) _ choice all(mystored) unblockable ueot!$ opponent auto=@combat(attacking) source(this):ability$!name(choose one) if type(creature|mybattlefield)~morethan~0 then choice sacrifice notatarget(creature|mybattlefield) _ choice all(mystored) unblockable ueot!$ opponent
@@ -170,6 +327,24 @@ power=3
toughness=1 toughness=1
[/card] [/card]
[card] [card]
name=Prey's Vengeance
target=creature
auto=2/2
auto=if rebound then transforms((,newability[moveto(exile)],newability[phaseaction[my upkeep once checkex] activate may activate castcard(restricted)]))
mana={G}
type=Instant
text=Target creature gets +2/+2 until end of turn. Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
[/card]
[card]
name=Psychotic Haze
abilities=madness
autoexile=restriction{discarded} pay({1}{B}) name(pay 1B to cast) activate name(pay 1B to cast) castcard(normal)?name(put in graveyard) moveto(ownergraveyard)
auto=damage:1 all(creature,player)
text=Psychotic Haze deals 1 damage to each creature and each player. -- Madness {1}{B} (If you discard this card, you may cast it for its madness cost instead of putting it into your graveyard.)
mana={2}{B}{B}
type=Instant
[/card]
[card]
name=Rakdos Augermage name=Rakdos Augermage
abilities=first strike abilities=first strike
auto={T}:name(target opponent) target(opponent) donothing && all(this) transforms((,newability[ability$!name(discard) reject notatarget(*|opponenthand)!$ targetedplayer && ability$!name(discard) reject notatarget(*|opponenthand)!$ controller])) assorcery auto={T}:name(target opponent) target(opponent) donothing && all(this) transforms((,newability[ability$!name(discard) reject notatarget(*|opponenthand)!$ targetedplayer && ability$!name(discard) reject notatarget(*|opponenthand)!$ controller])) assorcery
@@ -189,6 +364,26 @@ mana={X}{X}{U}
type=Sorcery type=Sorcery
[/card] [/card]
[card] [card]
name=Reckless Wurm
abilities=trample,madness
autoexile=restriction{discarded} pay({2}{R}) name(pay 2R to cast) activate name(pay 2R to cast) castcard(normal)?name(put in graveyard) moveto(ownergraveyard)
text=Trample -- Madness {2}{R} (If you discard this card, you may cast it for its madness cost instead of putting it into your graveyard.)
mana={3}{R}{R}
type=Creature
subtype=Wurm
power=4
toughness=4
[/card]
[card]
name=Recurring Insight
target=opponent
auto=draw:type:*:targetedpersonshand controller
auto=if rebound then transforms((,newability[moveto(exile)],newability[phaseaction[my upkeep once checkex] activate may activate castcard(restricted)]))
mana={4}{U}{U}
type=Sorcery
text=Draw cards equal to the number of cards in target opponent's hand. Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
[/card]
[card]
name=Sacellum Godspeaker name=Sacellum Godspeaker
auto={T}:foreach(creaure[power>4]|myhand) add{G} auto={T}:foreach(creaure[power>4]|myhand) add{G}
text={T}: Reveal any number of creature cards with power 5 or greater from your hand. Add {G} to your mana pool for each card revealed this way. text={T}: Reveal any number of creature cards with power 5 or greater from your hand. Add {G} to your mana pool for each card revealed this way.
@@ -247,6 +442,83 @@ mana={G}{W}
type=Instant type=Instant
[/card] [/card]
[card] [card]
name=Staggershock
target=creature,player
auto=damage:2
auto=if rebound then transforms((,newability[moveto(exile)],newability[phaseaction[my upkeep once checkex] activate may activate castcard(restricted)]))
mana={2}{R}
type=Instant
text=Staggershock deals 2 damage to target creature or player. Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
[/card]
[card]
name=Strength of Isolation
abilities=madness
autoexile=restriction{discarded} pay({W}) name(pay W to cast) activate name(pay W to cast) castcard(normal)?name(put in graveyard) moveto(ownergraveyard)
target=creature
auto=1/2
auto=protection from black
text=Enchant creature -- Enchanted creature gets +1/+2 and has protection from black. -- Madness {W} (If you discard this card, you may cast it for its madness cost instead of putting it into your graveyard.)
mana={1}{W}
type=Enchantment
subtype=Aura
[/card]
[card]
name=Strength of Lunacy
abilities=madness
autoexile=restriction{discarded} pay({B}) name(pay B to cast) activate name(pay B to cast) castcard(normal)?name(put in graveyard) moveto(ownergraveyard)
target=creature
auto=2/1
auto=protection from white
text=Enchant creature -- Enchanted creature gets +2/+1 and has protection from white. -- Madness {B} (If you discard this card, you may cast it for its madness cost instead of putting it into your graveyard.)
mana={1}{B}
type=Enchantment
subtype=Aura
[/card]
[card]
name=Surreal Memoir
auto=moverandom(instant) from(mygraveyard) to(myhand)
auto=if rebound then transforms((,newability[moveto(exile)],newability[phaseaction[my upkeep once checkex] activate may activate castcard(restricted)]))
mana={3}{R}
type=Sorcery
text=Return an instant card at random from your graveyard to your hand. Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
[/card]
[card]
name=Survival Cache
auto=life:2 controller
auto=if compare(lifetotal)~morethan~compare(opponentlifetotal) then draw:1 controller
auto=if rebound then transforms((,newability[moveto(exile)],newability[phaseaction[my upkeep once checkex] activate may activate castcard(restricted)]))
mana={2}{W}
type=Sorcery
text=You gain 2 life. Then if you have more life than an opponent, draw a card. Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
[/card]
[card]
name=Thespian's Stage
auto={T}:Add{1}
auto={2}{T}:copy target(land|battlefield)
text={T}: Add {1} to your mana pool. -- {2}, {T}: Thespian's Stage becomes a copy of target land and gains this ability.
type=Land
[/card]
[card]
name=Unstable Shapeshifter
auto=@movedto(other creature|battlefield):all(trigger[from]) copy
text=Whenever another creature enters the battlefield, Unstable Shapeshifter becomes a copy of that creature and gains this ability.
mana={3}{U}
type=Creature
subtype=Shapeshifter
power=0
toughness=1
[/card]
[card]
name=Virulent Swipe
target=creature
auto=2/0
auto=deathtouch
auto=if rebound then transforms((,newability[moveto(exile)],newability[phaseaction[my upkeep once checkex] activate may activate castcard(restricted)]))
mana={B}
type=Instant
text=Target creature gets +2/+0 and gains deathtouch until end of turn. Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)
[/card]
[card]
name=Zombie Brute name=Zombie Brute
abilities=trample abilities=trample
auto=foreach(zombie|myhand) counter(1/1,1) auto=foreach(zombie|myhand) counter(1/1,1)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,46 @@
#Testing CDA Tarmogoyf vs Godhead of Awe
#Godhead of Awe makes other creatures 1/1 on layer 7b
#Tarmogoyf's CDA ability is on layer 7a so it will be overriden
#by Godhead of Awe. Giant Growth's ability is on layer 7c so
#the +3/+3 bonus is intact. :)
[INIT]
FIRSTMAIN
[PLAYER1]
inplay:Concordant Crossroads, Godhead of Awe, Forest
hand:Tarmogoyf, Giant Growth
graveyard:mountain, lightning bolt, grizzly bear
manapool:{1}{G}
[PLAYER2]
[DO]
Tarmogoyf
next
next
Tarmogoyf
next
eot
eot
#untap
next
#upkeep
next
#draw
next
#main1
Forest
Giant Growth
Tarmogoyf
next
#combat begin
next
#attackers
Tarmogoyf
eot
[ASSERT]
UNTAP
[PLAYER1]
inplay:Concordant Crossroads, Godhead of Awe, Tarmogoyf, Forest
graveyard:mountain, lightning bolt, grizzly bear, Giant Growth
manapool:{0}
[PLAYER2]
life:15
[END]

View File

@@ -0,0 +1,38 @@
#Testing CDA Turn to Frog vs Krosan Cloudscraper
#Krosan Cloudscraper that is turned into frog with 1 damage
#from Lightning Dart must die because when you change
#the power and toughness into 1/1, the 1 point of damage
#is taken into account...
[INIT]
FIRSTMAIN
[PLAYER1]
inplay:Krosan Cloudscraper
[PLAYER2]
inplay:Mountain, Plains, Swamp, Island
hand:Lightning Dart, Turn to Frog
[DO]
next
next
Krosan Cloudscraper
next
no
yes
Mountain
Plains
Lightning Dart
Krosan Cloudscraper
Swamp
Island
Turn to Frog
Krosan Cloudscraper
endinterruption
eot
[ASSERT]
UNTAP
[PLAYER1]
graveyard:Krosan Cloudscraper
[PLAYER2]
inplay:Mountain, Plains, Swamp, Island
graveyard:Lightning Dart, Turn to Frog
life:20
[END]

View File

@@ -0,0 +1,28 @@
#Hypnotic Specter vs Control Magic
#The opponent of the current controller of Hypnotic Specter
#Must discard at random when combat damage is dealt...
[INIT]
FIRSTMAIN
[PLAYER1]
hand:Control Magic
inplay:Concordant Crossroads
manapool:{B}{B}{U}{U}
[PLAYER2]
inplay:Hypnotic Specter
hand:Forest
[DO]
Control Magic
Hypnotic Specter
next
next
Hypnotic Specter
next
eot
[ASSERT]
UNTAP
[PLAYER1]
inplay:Control Magic, Hypnotic Specter, Concordant Crossroads
[PLAYER2]
graveyard:Forest
life:18
[END]

View File

@@ -0,0 +1,28 @@
#Testing Gravebane Zombie
#after gravebane zombie dies, activate archivist
#and you must draw gravebane zombie if its on the top
#of your library
[INIT]
FIRSTMAIN
[PLAYER1]
inplay:Gravebane Zombie, Archivist
hand:Wrecking Ball
library:mountain, plains, swamp
manapool:{2}{R}{B}
[PLAYER2]
[DO]
Wrecking Ball
Gravebane Zombie
Archivist
[ASSERT]
FIRSTMAIN
[PLAYER1]
inplay:Archivist
library:mountain, plains, swamp
hand:Gravebane Zombie
graveyard:Wrecking Ball
manapool:{0}
life:20
[PLAYER2]
life:20
[END]

View File

@@ -0,0 +1,29 @@
# BUG..cast tundra wolves with soul warden in play, kill soul warden with last gasp, you still get a life because the spell resolved
# first before Soul Warden goes to graveyard.
[INIT]
FIRSTMAIN
[PLAYER1]
hand:Tundra Wolves
manapool:{W}
inplay:Soul Warden
life:20
[PLAYER2]
manapool:{B}{B}
hand:Last Gasp
[DO]
Tundra Wolves
no
yes
Last Gasp
Soul Warden
endinterruption
[ASSERT]
FIRSTMAIN
[PLAYER1]
graveyard:Soul Warden
inplay:Tundra Wolves
life:20
[PLAYER2]
graveyard:Last Gasp
life:20
[END]

View File

@@ -0,0 +1,47 @@
#Testing Turn to Frog to Serra Angel with Crusade in play.
#M15 uses base power template, so setting the power/toughness.
#only affects the base or original power/toughness.
#Turn to Frog makes Serra Angel a 1/1 blue frog... latest pull
#request from GIT fixes the issue of Serra Angel dying
#from crusade because of invalid reduction of P/T :)
#
#First attack is 1/1 blue Serra Angel unaffected by Crusade
#Second attack is 5/5 Serra Angel affected by Crusade :)
[INIT]
FIRSTMAIN
[PLAYER1]
inplay:Serra Angel, Crusade
hand:Turn to Frog
manapool:{1}{U}
[PLAYER2]
[DO]
Turn to Frog
Serra Angel
next
next
Serra Angel
next
eot
eot
#untap
next
#upkeep
next
#draw
next
#main1
next
#combat begin
next
#attackers
Serra Angel
eot
[ASSERT]
UNTAP
[PLAYER1]
inplay:Serra Angel, Crusade
graveyard:Turn to Frog
manapool:{0}
[PLAYER2]
life:14
[END]

View File

@@ -0,0 +1,41 @@
#Testing Turn to Frog to Serra Angel with Glorious Anthem in play.
#First attack is 2/2 blue Serra Angel affected by Glorious Anthem
#Second attack is 5/5 Serra Angel affected by Glorious Anthem :)
[INIT]
FIRSTMAIN
[PLAYER1]
inplay:Serra Angel, Glorious Anthem
hand:Turn to Frog
manapool:{1}{U}
[PLAYER2]
[DO]
Turn to Frog
Serra Angel
next
next
Serra Angel
next
eot
eot
#untap
next
#upkeep
next
#draw
next
#main1
next
#combat begin
next
#attackers
Serra Angel
eot
[ASSERT]
UNTAP
[PLAYER1]
inplay:Serra Angel, Glorious Anthem
graveyard:Turn to Frog
manapool:{0}
[PLAYER2]
life:13
[END]

View File

@@ -0,0 +1,36 @@
#Testing PT Switch. Windreaver and Screaming Fury... Layer 7e
#A 1/3 creature is given +0/+1 by an effect. Then another effect switches the
#creatures power and toughness. Its new power and toughness is 4/1. A new effect gives
#the creature +5/+0. Its “unswitched” power and toughness would be 6/4, so its actual
#power and toughness is 4/6.
[INIT]
FIRSTMAIN
[PLAYER1]
hand:Screaming Fury
inplay:Windreaver, Mountain, Plains, Swamp, Island, Forest
[PLAYER2]
[DO]
Plains
Windreaver
choice 1
Island
Windreaver
choice 0
Mountain
Forest
Swamp
Screaming Fury
Windreaver
next
next
Windreaver
next
eot
[ASSERT]
UNTAP
[PLAYER1]
inplay:Windreaver, Mountain, Plains, Swamp, Island, Forest
graveyard:Screaming Fury
[PLAYER2]
life:16
[END]

View File

@@ -16,6 +16,9 @@ choice 0
choice 0 choice 0
choice 0 choice 0
180595 180595
choice 0
180595
choice 1
eot eot
[ASSERT] [ASSERT]
untap untap

View File

@@ -210,6 +210,8 @@ Call_to_Heel_1.txt
Call_to_Heel_2.txt Call_to_Heel_2.txt
castle.txt castle.txt
cathodion.txt cathodion.txt
CDA#1.txt
CDA#2.txt
celestial_mantle.txt celestial_mantle.txt
celestial_purge.txt celestial_purge.txt
celestial_sword.txt celestial_sword.txt
@@ -309,10 +311,12 @@ evil_presence3.txt
evil_presence_i647.txt evil_presence_i647.txt
evil_presence_i647_2.txt evil_presence_i647_2.txt
exaltedsourcekilled.txt exaltedsourcekilled.txt
ExchangeController.txt
executioners_swing.txt executioners_swing.txt
executioners_swing2.txt executioners_swing2.txt
executioners_swing3.txt executioners_swing3.txt
explore.txt explore.txt
exquisite_blood_i953.txt
Faceless_Butcher.txt Faceless_Butcher.txt
fading.txt fading.txt
fangren_pathcutter.txt fangren_pathcutter.txt
@@ -345,6 +349,7 @@ foratog.txt
force_of_nature.txt force_of_nature.txt
force_of_nature2.txt force_of_nature2.txt
force_of_nature3.txt force_of_nature3.txt
formidable.txt
fountain_of_youth.txt fountain_of_youth.txt
Frogmite.txt Frogmite.txt
fungus_sliver.txt fungus_sliver.txt
@@ -372,6 +377,7 @@ goblin_lackey4.txt
goblin_offensive.txt goblin_offensive.txt
goblin_razerunners.txt goblin_razerunners.txt
golgari_germination_i153.txt golgari_germination_i153.txt
Gravebane_Zombie.txt
gravedigger.txt gravedigger.txt
gravity_well.txt gravity_well.txt
gravity_well2.txt gravity_well2.txt
@@ -438,6 +444,7 @@ kudzu_i168.txt
Lethargy_Trap.txt Lethargy_Trap.txt
Lethargy_Trap2.txt Lethargy_Trap2.txt
leveler.txt leveler.txt
leyline_of_the_void.txt
lhurgoyf.txt lhurgoyf.txt
liability.txt liability.txt
library_of_alexandria1.txt library_of_alexandria1.txt
@@ -520,6 +527,7 @@ pillory_of_the_sleepless2_i188.txt
pillory_of_the_sleepless3_i188.txt pillory_of_the_sleepless3_i188.txt
pillory_of_the_sleepless4_i188.txt pillory_of_the_sleepless4_i188.txt
plague_rats.txt plague_rats.txt
pledge_protection.txt
plumes_of_peace_i260.txt plumes_of_peace_i260.txt
pouncing_jaguar_i425.txt pouncing_jaguar_i425.txt
power_armor.txt power_armor.txt
@@ -529,6 +537,10 @@ protomatter_powder.txt
prowess_of_the_fair.txt prowess_of_the_fair.txt
prowess_of_the_fair2.txt prowess_of_the_fair2.txt
prowess_of_the_fair3.txt prowess_of_the_fair3.txt
PTInstant.txt
PTswitch.txt
PT_M15_errata.txt
PT_M15_errata2.txt
pygmy_troll.txt pygmy_troll.txt
pyknite_i426.txt pyknite_i426.txt
pyroclasm.txt pyroclasm.txt
@@ -566,6 +578,7 @@ Rending_Vines2.txt
resounding_roar.txt resounding_roar.txt
resurrection.txt resurrection.txt
resuscitate_i210.txt resuscitate_i210.txt
restinpeace.txt
righteous_cause.txt righteous_cause.txt
rise_from_the_grave.txt rise_from_the_grave.txt
river_kelpie2_i335.txt river_kelpie2_i335.txt
@@ -654,6 +667,7 @@ thallid.txt
the_tabernacle_at_pendrell_vale.txt the_tabernacle_at_pendrell_vale.txt
thelon_of_havenwood.txt thelon_of_havenwood.txt
threaten.txt threaten.txt
thraximundar.txt
throne_of_bone.txt throne_of_bone.txt
thunder-thrash_elder.txt thunder-thrash_elder.txt
tidal_warrior_i646.txt tidal_warrior_i646.txt
@@ -661,6 +675,8 @@ tidal_warrior_i649.txt
tidal_warrior_i652.txt tidal_warrior_i652.txt
Timely_Reinforcements.txt Timely_Reinforcements.txt
titanic_ultimatum.txt titanic_ultimatum.txt
tokenizer.txt
tokenizer2.txt
torture.txt torture.txt
tranquil_domain.txt tranquil_domain.txt
turn_to_slag.txt turn_to_slag.txt

View File

@@ -23,6 +23,7 @@ firstmain
[PLAYER1] [PLAYER1]
inplay:Aegis of the Meek,Steppe Lynx,Savannah Lions,Courier Hawk inplay:Aegis of the Meek,Steppe Lynx,Savannah Lions,Courier Hawk
graveyard:Swords to Plowshares graveyard:Swords to Plowshares
exile:Raging Goblin
life:22 life:22
[PLAYER2] [PLAYER2]
[END] [END]

View File

@@ -16,6 +16,7 @@ Angry Mob
firstmain firstmain
[PLAYER1] [PLAYER1]
graveyard:Swords to Plowshares graveyard:Swords to Plowshares
exile:Angry Mob
life:25 life:25
[PLAYER2] [PLAYER2]
inplay:1373,1374,1375 inplay:1373,1374,1375

View File

@@ -19,6 +19,7 @@ Angry Mob
[ASSERT] [ASSERT]
firstmain firstmain
[PLAYER1] [PLAYER1]
exile:Angry Mob
graveyard:Swords to Plowshares,Boomerang graveyard:Swords to Plowshares,Boomerang
life:24 life:24
[PLAYER2] [PLAYER2]

View File

@@ -22,6 +22,7 @@ Angry Mob
[ASSERT] [ASSERT]
firstmain firstmain
[PLAYER1] [PLAYER1]
exile:Angry Mob
life:22 life:22
[PLAYER2] [PLAYER2]
inplay:1373,1374,1375,Plains inplay:1373,1374,1375,Plains

View File

@@ -25,6 +25,7 @@ Angry Mob
[ASSERT] [ASSERT]
firstmain firstmain
[PLAYER1] [PLAYER1]
exile:Angry Mob
life:22 life:22
[PLAYER2] [PLAYER2]
inplay:1373,1374,1375,Plains inplay:1373,1374,1375,Plains

View File

@@ -29,6 +29,7 @@ Angry Mob
[ASSERT] [ASSERT]
firstmain firstmain
[PLAYER1] [PLAYER1]
exile:Angry Mob
life:22 life:22
[PLAYER2] [PLAYER2]
inplay:1373,1374,Plains inplay:1373,1374,Plains

View File

@@ -23,6 +23,7 @@ Angry Mob
[ASSERT] [ASSERT]
firstmain firstmain
[PLAYER1] [PLAYER1]
exile:Angry Mob
inplay:Plains inplay:Plains
graveyard:Swords to Plowshares graveyard:Swords to Plowshares
life:25 life:25

View File

@@ -22,6 +22,7 @@ Angry Mob
firstmain firstmain
[PLAYER1] [PLAYER1]
graveyard:Swords to Plowshares,Annex,Demystify graveyard:Swords to Plowshares,Annex,Demystify
exile:Angry Mob
life:25 life:25
[PLAYER2] [PLAYER2]
inplay:1373,1374,1375 inplay:1373,1374,1375

View File

@@ -15,4 +15,5 @@ FIRSTMAIN
graveyard:183055 graveyard:183055
manapool:{0} manapool:{0}
[PLAYER2] [PLAYER2]
exile:184994
[END] [END]

View File

@@ -28,6 +28,7 @@ graveyard:1194
manapool:{0} manapool:{0}
life:24 life:24
[PLAYER2] [PLAYER2]
exile:1366
graveyard:1367 graveyard:1367
inplay:1397 inplay:1397
manapool:{0} manapool:{0}

View File

@@ -19,6 +19,7 @@ Grizzly Bears
[ASSERT] [ASSERT]
combatattackers combatattackers
[PLAYER1] [PLAYER1]
exile:Grizzly Bears
inplay:Cranial Plating,Rod of Ruin inplay:Cranial Plating,Rod of Ruin
graveyard:Swords to Plowshares graveyard:Swords to Plowshares
life:24 life:24

View File

@@ -2,6 +2,15 @@
#DESC: Tests whether Curiosity works correctly #DESC: Tests whether Curiosity works correctly
#DESC: when cast on an opponent's creature #DESC: when cast on an opponent's creature
#DESC: http://code.google.com/p/wagic/issues/detail?id=217 #DESC: http://code.google.com/p/wagic/issues/detail?id=217
#
#revised...10-22-2015...kevlahnota
#2/1/2007 You draw one card each time the enchanted creature damages the opponent. This is not one card per point of damage.
#2/1/2007 If put on your opponent's creature, you do not draw a card when that creature damages you. The creature has to damage your opponent in order to have this work.
#2/1/2007 Drawing a card is optional. If you forget, you can't go back later and do it, even if it is something you normally do.
#9/22/2011 "You" refers to the controller of Curiosity, which may be different from the controller of the enchanted creature."An opponent" refers to an opponent of Curiosity's controller.
#9/22/2011 Any damage dealt by the enchanted creature to an opponent will cause Curiosity to trigger, not just combat damage.
#9/22/2011 Curiosity doesn't trigger if the enchanted creature deals damage to a planeswalker controlled by an opponent.
#
[INIT] [INIT]
firstmain firstmain
[PLAYER1] [PLAYER1]
@@ -29,7 +38,7 @@ next
combatend combatend
[PLAYER1] [PLAYER1]
inplay:Curiosity inplay:Curiosity
hand:Island library:Island
life:14 life:14
[PLAYER2] [PLAYER2]
inplay:Craw Wurm inplay:Craw Wurm

View File

@@ -19,6 +19,7 @@ endinterruption
[ASSERT] [ASSERT]
FIRSTMAIN FIRSTMAIN
[PLAYER1] [PLAYER1]
exile:grizzly bears
graveyard:fists of ironwood graveyard:fists of ironwood
life:22 life:22
[PLAYER2] [PLAYER2]

View File

@@ -17,6 +17,7 @@ endinterruption
[ASSERT] [ASSERT]
FIRSTMAIN FIRSTMAIN
[PLAYER1] [PLAYER1]
exile:bad moon
manapool:{0} manapool:{0}
life:20 life:20
[PLAYER2] [PLAYER2]

View File

@@ -0,0 +1,33 @@
#Testing Atarka Beastbreaker,Stampeding Elk Herd -- Formidable
#Atarka Beastbreaker will become 6/6, and then attacks along with Stampeding Elk Herd, trample effect will trigger
#then p2 will block with Steel Wall, p2 must have 13 life...
[INIT]
COMBATATTACKERS
[PLAYER1]
inplay:Atarka Beastbreaker,Krosan Tusker,Stampeding Elk Herd
manapool:{4}{G}
[PLAYER2]
inplay:Steel Wall
life:20
[DO]
Atarka Beastbreaker
choice 1
Atarka Beastbreaker
Stampeding Elk Herd
next
Steel Wall
#blockers
next
#combatdamage 2
next
next
#endofcombat 2
[ASSERT]
COMBATEND
[PLAYER1]
inplay:Atarka Beastbreaker,Krosan Tusker,Stampeding Elk Herd
manapool:{0}
[PLAYER2]
graveyard:Steel Wall
life:13
[END]

View File

@@ -26,6 +26,7 @@ secondmain
[PLAYER1] [PLAYER1]
inplay:Plains inplay:Plains
graveyard:Swords to Plowshares graveyard:Swords to Plowshares
exile:Frost Giant
life:28 life:28
[PLAYER2] [PLAYER2]
graveyard:Suntail Hawk,Scryb Sprites,Raging Goblin graveyard:Suntail Hawk,Scryb Sprites,Raging Goblin

View File

@@ -18,6 +18,7 @@ Jayemdae Tome
[ASSERT] [ASSERT]
firstmain firstmain
[PLAYER1] [PLAYER1]
exile:Jayemdae Tome
graveyard:Karn's Touch,Swords to Plowshares graveyard:Karn's Touch,Swords to Plowshares
life:24 life:24
[PLAYER2] [PLAYER2]

View File

@@ -11,6 +11,7 @@ leveler
[ASSERT] [ASSERT]
FIRSTMAIN FIRSTMAIN
[PLAYER1] [PLAYER1]
exile:swamp,mountain
inplay:leveler inplay:leveler
[PLAYER2] [PLAYER2]
[END] [END]

View File

@@ -0,0 +1,26 @@
#Testing Leyline of the Void vs Darksteel Colossus and Black Sun's Zenith
#Darksteel Colossus must be on owners library
[INIT]
FIRSTMAIN
[PLAYER1]
inplay:Leyline of the Void, Forbidden Orchard
hand:Black Sun's Zenith
manapool:{B}{B}{B}{B}{B}{B}{B}{B}{B}{B}{B}{B}{B}{B}
[PLAYER2]
inplay:Darksteel Colossus
library:Mountain
[DO]
Forbidden Orchard
choice 2
Black Sun's Zenith
[ASSERT]
FIRSTMAIN
[PLAYER1]
inplay:Leyline of the Void, Forbidden Orchard
library:Black Sun's Zenith
manapool:{0}
life:20
[PLAYER2]
library:Mountain, Darksteel Colossus
life:20
[END]

View File

@@ -16,4 +16,5 @@ FIRSTMAIN
inplay:necrogenesis,* inplay:necrogenesis,*
manapool:{0} manapool:{0}
[PLAYER2] [PLAYER2]
exile:1250
[END] [END]

View File

@@ -0,0 +1,46 @@
#Testing Protection
#702.16c A permanent or player with protection cant be enchanted by Auras that have the stated
#quality. Such Auras attached to the permanent or player with protection will be put into their
#owners graveyards as a state-based action.
#
#702.16d A permanent with protection cant be equipped by Equipment that have the stated quality
#or fortified by Fortifications that have the stated quality. Such Equipment or Fortifications
#become unattached from that permanent as a state-based action, but remain on the battlefield.
[INIT]
FIRSTMAIN
[PLAYER1]
hand:Pledge of Loyalty, Shuko, Holy Strength, Shifting Sky
inplay:Crimson Acolyte
manapool:{W}{W}{W}{W}{U}{U}{U}
[PLAYER2]
[DO]
Holy Strength
Crimson Acolyte
#crimson acolyte becomes 2/3
Shuko
Shuko
Crimson Acolyte
#crimson acolyte becomes 3/3
Pledge of Loyalty
Crimson Acolyte
#crimson acolyte becomes 2/1 since you have white permanents, pledge of loyalty grants protection from white
#holy strength is put into the graveyard as state based action :)
Shifting Sky
choice 0
choice 2
#after casting shifting sky, choose the color red, and all nonland permanents becomes red
#since shuko becomes red and crimson has protection from red, it will be unattached
#as state based action, pledge of loyalty stays on the creature :)
next
next
Crimson Acolyte
next
eot
[ASSERT]
UNTAP
[PLAYER1]
inplay:Crimson Acolyte, Pledge of Loyalty, Shuko, Shifting Sky
graveyard:Holy Strength
[PLAYER2]
life:19
[END]

View File

@@ -0,0 +1,23 @@
#Testing Rest in Peace vs Disenchant
#Rest in Peace should be exiled while Disenchant must be put
#in the owner's graveyard..
[INIT]
FIRSTMAIN
[PLAYER1]
inplay:Rest in Peace
hand:Disenchant
manapool:{W}{W}
[PLAYER2]
[DO]
Disenchant
Rest in Peace
[ASSERT]
FIRSTMAIN
[PLAYER1]
graveyard:Disenchant
manapool:{0}
exile:Rest in Peace
life:20
[PLAYER2]
life:20
[END]

View File

@@ -16,5 +16,6 @@ FIRSTMAIN
graveyard:1367 graveyard:1367
manapool:{0} manapool:{0}
[PLAYER2] [PLAYER2]
exile:141935
life:23 life:23
[END] [END]

View File

@@ -25,6 +25,7 @@ next
[assert] [assert]
secondmain secondmain
[player1] [player1]
exile:fungusaur
inplay:Thelon Of Havenwood,Thallid,Deathspore Thallid,forest,swamp inplay:Thelon Of Havenwood,Thallid,Deathspore Thallid,forest,swamp
[player2] [player2]
life:14 life:14

View File

@@ -0,0 +1,20 @@
#Bug: thraximundar ability must resolve first... and survives
[INIT]
FIRSTMAIN
[PLAYER1]
inplay:thraximundar,bloodfire colossus
manapool:{R}
[PLAYER2]
[DO]
bloodfire colossus
choice 0
[ASSERT]
FIRSTMAIN
[PLAYER1]
graveyard:bloodfire colossus
inplay:thraximundar
manapool:{0}
life:14
[PLAYER2]
life:14
[END]

View File

@@ -0,0 +1,29 @@
# Testing Tokenizer - Parallel Lives (ISD) 249662
# Dragon Fodder (ALA) 174936
# text=Put two 1/1 red Goblin creature tokens into play.
# Tokens must be 2.. since there are no tokenizer.
[INIT]
FIRSTMAIN
[PLAYER1]
hand:174936
manapool:{R}{1}
inplay:249662
[PLAYER2]
hand:Demystify
manapool:{W}
[DO]
174936
no
yes
Demystify
249662
endinterruption
[ASSERT]
FIRSTMAIN
[PLAYER1]
graveyard:249662,174936
inplay:-174936,-174936
[PLAYER2]
graveyard:Demystify
life:20
[END]

View File

@@ -0,0 +1,27 @@
# Testing Tokenizer - Parallel Lives (ISD) 249662
# Dragon Fodder (ALA) 174936
# text=Put two 1/1 red Goblin creature tokens into play.
# Tokens must be 8.. since there are two tokenizer... original value
# is 2 with first tokenizer it will become 4, with the second tokenizer
# the value will be 8...
[INIT]
FIRSTMAIN
[PLAYER1]
hand:174936
manapool:{R}{1}
inplay:249662,249662
[PLAYER2]
inplay:plains
hand:Demystify
[DO]
174936
[ASSERT]
FIRSTMAIN
[PLAYER1]
graveyard:174936
inplay:249662,249662,-174936,-174936,-174936,-174936,-174936,-174936,-174936,-174936
[PLAYER2]
hand:Demystify
inplay:plains
life:20
[END]

View File

@@ -24,6 +24,7 @@ next
[ASSERT] [ASSERT]
CLEANUP CLEANUP
[PLAYER1] [PLAYER1]
exile:Dregscape Zombie
inplay:129754 inplay:129754
[PLAYER2] [PLAYER2]
graveyard:Grizzly Bears graveyard:Grizzly Bears

Binary file not shown.

Before

Width:  |  Height:  |  Size: 124 KiB

After

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 24 KiB

201
projects/mtg/iOS/Makefile Normal file
View File

@@ -0,0 +1,201 @@
export ARCHS = armv7 armv7s
export TARGET = iphone:clang:latest:8.0
include ../../../theos/makefiles/common.mk
APPLICATION_NAME = wagic
wagic_FILES = ../../../JGE/src/iOS/main.m\
../../../JGE/src/iOS/wagicAppDelegate.m\
../../../JGE/src/iOS/ES2Renderer.m\
../../../JGE/src/iOS/EAGLView.m\
../../../JGE/src/iOS/EAGLViewController.m\
../../../JGE/src/iOS/JSfx.cpp\
../../../JGE/src/pc/JGfx.cpp\
../iOS/UI/WagicDownloadProgressViewController.m\
../iOS/asi-http-request/ASIAuthenticationDialog.m\
../iOS/asi-http-request/ASIDataCompressor.m\
../iOS/asi-http-request/ASIDataDecompressor.m\
../iOS/asi-http-request/ASIDownloadCache.m\
../iOS/asi-http-request/ASIFormDataRequest.m\
../iOS/asi-http-request/ASIHTTPRequest.m\
../iOS/asi-http-request/ASIInputStream.m\
../iOS/asi-http-request/ASINetworkQueue.m\
../iOS/SoundManager/SoundManager.m\
../iOS/SoundManager/MyOpenALSupport.c\
../iOS/Reachability/Reachability/Reachability.m\
../../../JGE/src/unzip/unzip.c\
../../../JGE/src/unzip/zip.c\
../../../JGE/src/unzip/ioapi.c\
../iOS/ZipArchive/ZipArchive.mm\
../src/SimpleMenu.cpp\
../src/AbilityParser.cpp\
../src/ActionElement.cpp\
../src/ActionLayer.cpp\
../src/ActionStack.cpp\
../src/AIHints.cpp\
../src/AIMomirPlayer.cpp\
../src/AIPlayer.cpp\
../src/AIPlayerBaka.cpp\
../src/AIStats.cpp\
../src/AllAbilities.cpp\
../src/CardDescriptor.cpp\
../src/CardDisplay.cpp\
../src/CardGui.cpp\
../src/CardPrimitive.cpp\
../src/CardSelector.cpp\
../src/CarouselDeckView.cpp\
../src/Closest.cpp\
../src/Counters.cpp\
../src/Credits.cpp\
../src/Damage.cpp\
../src/DamagerDamaged.cpp\
../src/DeckDataWrapper.cpp\
../src/DeckEditorMenu.cpp\
../src/DeckManager.cpp\
../src/DeckMenu.cpp\
../src/DeckMenuItem.cpp\
../src/DeckMetaData.cpp\
../src/DeckStats.cpp\
../src/DeckView.cpp\
../src/DuelLayers.cpp\
../src/ExtraCost.cpp\
../src/GameApp.cpp\
../src/GameLauncher.cpp\
../src/GameObserver.cpp\
../src/GameOptions.cpp\
../src/GameStateAwards.cpp\
../src/GameState.cpp\
../src/GameStateDeckViewer.cpp\
../src/GameStateDuel.cpp\
../src/GameStateMenu.cpp\
../src/GameStateOptions.cpp\
../src/GameStateShop.cpp\
../src/GameStateStory.cpp\
../src/GameStateTransitions.cpp\
../src/GridDeckView.cpp\
../src/GuiAvatars.cpp\
../src/GuiBackground.cpp\
../src/GuiCardsController.cpp\
../src/GuiCombat.cpp\
../src/GuiFrame.cpp\
../src/GuiHand.cpp\
../src/GuiLayers.cpp\
../src/GuiMana.cpp\
../src/GuiPhaseBar.cpp\
../src/GuiPlay.cpp\
../src/GuiStatic.cpp\
../src/IconButton.cpp\
../src/InteractiveButton.cpp\
../src/ManaCost.cpp\
../src/ManaCostHybrid.cpp\
../src/MenuItem.cpp\
../src/ModRules.cpp\
../src/MTGAbility.cpp\
../src/MTGCard.cpp\
../src/MTGCardInstance.cpp\
../src/MTGDeck.cpp\
../src/MTGDefinitions.cpp\
../src/MTGGamePhase.cpp\
../src/MTGGameZones.cpp\
../src/MTGPack.cpp\
../src/MTGRules.cpp\
../src/ObjectAnalytics.cpp\
../src/OptionItem.cpp\
../src/PhaseRing.cpp\
../src/Player.cpp\
../src/PlayerData.cpp\
../src/PlayGuiObject.cpp\
../src/PlayGuiObjectController.cpp\
../src/PlayRestrictions.cpp\
../src/Pos.cpp\
../src/PriceList.cpp\
../src/ReplacementEffects.cpp\
../src/Rules.cpp\
../src/SimpleButton.cpp\
../src/SimpleMenu.cpp\
../src/SimpleMenuItem.cpp\
../src/SimplePad.cpp\
../src/SimplePopup.cpp\
../src/StoryFlow.cpp\
../src/Subtypes.cpp\
../src/StyleManager.cpp\
../src/TargetChooser.cpp\
../src/TargetsList.cpp\
../src/Tasks.cpp\
../src/TextScroller.cpp\
../src/ThisDescriptor.cpp\
../src/Token.cpp\
../src/Translate.cpp\
../src/TranslateKeys.cpp\
../src/Trash.cpp\
../src/utils.cpp\
../src/WCachedResource.cpp\
../src/WDataSrc.cpp\
../src/WEvent.cpp\
../src/WFilter.cpp\
../src/WFont.cpp\
../src/WGui.cpp\
../src/WResourceManager.cpp \
../src/AIPlayerBakaB.cpp \
../src/TestSuiteAI.cpp\
../../../JGE/src/Encoding.cpp\
../../../JGE/src/JAnimator.cpp\
../../../JGE/src/JApp.cpp\
../../../JGE/src/JDistortionMesh.cpp\
../../../JGE/src/JFileSystem.cpp\
../../../JGE/src/JGameObject.cpp\
../../../JGE/src/JGE.cpp\
../../../JGE/src/JGui.cpp\
../../../JGE/src/JLogger.cpp\
../../../JGE/src/JLBFont.cpp\
../../../JGE/src/JOBJModel.cpp\
../../../JGE/src/JParticle.cpp\
../../../JGE/src/JParticleEffect.cpp\
../../../JGE/src/JParticleEmitter.cpp\
../../../JGE/src/JParticleSystem.cpp\
../../../JGE/src/JResourceManager.cpp\
../../../JGE/src/JSpline.cpp\
../../../JGE/src/JSprite.cpp\
../../../JGE/src/Vector2D.cpp\
../../../JGE/src/tinyxml/tinystr.cpp\
../../../JGE/src/tinyxml/tinyxml.cpp\
../../../JGE/src/tinyxml/tinyxmlerror.cpp\
../../../JGE/src/tinyxml/tinyxmlparser.cpp\
../../../JGE/src/hge/hgecolor.cpp\
../../../JGE/src/hge/hgedistort.cpp\
../../../JGE/src/hge/hgefont.cpp\
../../../JGE/src/hge/hgeparticle.cpp\
../../../JGE/src/hge/hgerect.cpp\
../../../JGE/src/hge/hgevector.cpp\
../../../JGE/src/zipFS/zfsystem.cpp\
../../../JGE/src/zipFS/ziphdr.cpp\
../../../JGE/src/zipFS/zstream.cpp\
../../../Boost/lib/pthread/once.cpp\
../../../Boost/lib/pthread/thread.cpp\
wagic_LDFLAGS = -lz
wagic_FRAMEWORKS = UIKit CoreGraphics OpenGLES Foundation CFNetwork MobileCoreServices AVFoundation OpenAL AudioToolbox QuartzCore SystemConfiguration
include ../../../theos/makefiles/application.mk
ADDITIONAL_CFLAGS = -I ../include\
-I ../../../JGE/include\
-I ../../../JGE/src/unzip\
-I ../../../JGE/src/zipFS\
-I ../../../JGE/Dependencies/include\
-I ../../../Boost\
-I ../../../JGE/src/iOS\
-I ../iOS/UI\
-I ../iOS/Reachability/Reachability\
-I ../iOS/asi-http-request\
-I ../iOS/ZipArchive\
-I ../iOS/SoundManager\
-DIOS -D__arm__ -DTIXML_USE_STL -DVERSION=\"$(GIT_VERSION)\"\
-Wno-parentheses-equality -Wno-delete-non-virtual-dtor\
-Wno-tautological-undefined-compare -Wno-undefined-bool-conversion\
-Wno-visibility -Wno-deprecated-declarations -Wno-non-literal-null-conversion\
-Wno-format -Wno-distributed-object-modifiers -Wno-missing-braces\
-Wno-unused-const-variable -Wno-unused-function -Wno-unknown-warning-option\
-x objective-c++
_THEOS_TARGET_ONLY_OBJCFLAGS :=""

View File

@@ -180,7 +180,7 @@ static void logNetworkStatus_(const char *name, int line, NetworkStatus status)
#define logNetworkStatus(status) #define logNetworkStatus(status)
#endif #endif
@interface Reachability (private) @interface Reachability ()
- (NetworkStatus) networkStatusForFlags: (SCNetworkReachabilityFlags) flags; - (NetworkStatus) networkStatusForFlags: (SCNetworkReachabilityFlags) flags;

Some files were not shown because too many files have changed in this diff Show More