Commit ec13c6d2 authored by nanahira's avatar nanahira

merge

parents 292a50d9 ce29e250
No preview for this file type
...@@ -6,6 +6,7 @@ namespace ygo { ...@@ -6,6 +6,7 @@ namespace ygo {
const wchar_t* DataManager::unknown_string = L"???"; const wchar_t* DataManager::unknown_string = L"???";
wchar_t DataManager::strBuffer[4096]; wchar_t DataManager::strBuffer[4096];
byte DataManager::scriptBuffer[0x20000];
DataManager dataManager; DataManager dataManager;
bool DataManager::LoadDB(const char* file) { bool DataManager::LoadDB(const char* file) {
...@@ -326,5 +327,55 @@ int DataManager::CardReader(int code, void* pData) { ...@@ -326,5 +327,55 @@ int DataManager::CardReader(int code, void* pData) {
memset(pData, 0, sizeof(CardData)); memset(pData, 0, sizeof(CardData));
return 0; return 0;
} }
byte* DataManager::ScriptReaderEx(const char* script_name, int* slen) {
byte* buffer = ScriptReaderExDirectry("./specials", script_name, slen, 8);
if(buffer)
return buffer;
buffer = ScriptReaderExDirectry("./expansions", script_name, slen);
if(buffer)
return buffer;
buffer = ScriptReaderExDirectry("./beta", script_name, slen);
if(buffer)
return buffer;
buffer = ScriptReaderExDirectry("./2pick", script_name, slen, 8);
if(buffer)
return buffer;
bool find = false;
FileSystem::TraversalDir("./expansions", [script_name, slen, &buffer, &find](const char* name, bool isdir) {
if(!find && isdir && strcmp(name, ".") && strcmp(name, "..") && strcmp(name, "pics") && strcmp(name, "script")) {
char subdir[1024];
sprintf(subdir, "./expansions/%s", name);
buffer = ScriptReaderExDirectry(subdir, script_name, slen);
if(buffer)
find = true;
}
});
if(find)
return buffer;
return ScriptReader(script_name, slen);
}
byte* DataManager::ScriptReaderExDirectry(const char* path, const char* script_name, int* slen, int pre_len) {
char sname[256];
sprintf(sname, "%s%s", path, script_name + pre_len); //default script name: ./script/c%d.lua
return ScriptReader(sname, slen);
}
byte* DataManager::ScriptReader(const char* script_name, int* slen) {
FILE *fp;
#if defined(_WIN32) && !defined(YGOPRO_SERVER_MODE)
wchar_t fname[256];
BufferIO::DecodeUTF8(script_name, fname);
fp = _wfopen(fname, L"rb");
#else
fp = fopen(script_name, "rb");
#endif
if(!fp)
return 0;
int len = fread(scriptBuffer, 1, sizeof(scriptBuffer), fp);
fclose(fp);
if(len >= sizeof(scriptBuffer))
return 0;
*slen = len;
return scriptBuffer;
}
} }
...@@ -49,8 +49,12 @@ public: ...@@ -49,8 +49,12 @@ public:
wchar_t lmBuffer[32]; wchar_t lmBuffer[32];
static wchar_t strBuffer[4096]; static wchar_t strBuffer[4096];
static byte scriptBuffer[0x20000];
static const wchar_t* unknown_string; static const wchar_t* unknown_string;
static int CardReader(int, void*); static int CardReader(int, void*);
static byte* ScriptReaderEx(const char* script_name, int* slen);
static byte* ScriptReaderExDirectry(const char* path, const char* script_name, int* slen, int pre_len = 1);
static byte* ScriptReader(const char* script_name, int* slen);
}; };
......
...@@ -448,6 +448,14 @@ irr::video::ITexture* ImageManager::GetTextureField(int code) { ...@@ -448,6 +448,14 @@ irr::video::ITexture* ImageManager::GetTextureField(int code) {
sprintf(file, "pics/field/%d.jpg", code); sprintf(file, "pics/field/%d.jpg", code);
img = GetTextureExpansions(file, 512 * mainGame->xScale, 512 * mainGame->yScale); img = GetTextureExpansions(file, 512 * mainGame->xScale, 512 * mainGame->yScale);
} }
if(img == NULL) {
sprintf(file, mainGame->GetLocaleDir("pics/field/%d.png"), code);
img = GetTextureFromFile(file, 512 * mainGame->xScale, 512 * mainGame->yScale);
}
if(img == NULL) {
sprintf(file, mainGame->GetLocaleDir("pics/field/%d.jpg"), code);
img = GetTextureFromFile(file, 512 * mainGame->xScale, 512 * mainGame->yScale);
}
if(img == NULL) { if(img == NULL) {
sprintf(file, "pics/field/%d.png", code); sprintf(file, "pics/field/%d.png", code);
img = GetTextureFromFile(file, 512 * mainGame->xScale, 512 * mainGame->yScale); img = GetTextureFromFile(file, 512 * mainGame->xScale, 512 * mainGame->yScale);
......
...@@ -63,15 +63,9 @@ int ReplayMode::ReplayThread(void* param) { ...@@ -63,15 +63,9 @@ int ReplayMode::ReplayThread(void* param) {
mainGame->dInfo.isSingleMode = !!(rh.flag & REPLAY_SINGLE_MODE); mainGame->dInfo.isSingleMode = !!(rh.flag & REPLAY_SINGLE_MODE);
mainGame->dInfo.tag_player[0] = false; mainGame->dInfo.tag_player[0] = false;
mainGame->dInfo.tag_player[1] = false; mainGame->dInfo.tag_player[1] = false;
if(mainGame->dInfo.isSingleMode) { set_script_reader((script_reader)DataManager::ScriptReaderEx);
set_script_reader((script_reader)SingleMode::ScriptReaderEx); set_card_reader((card_reader)DataManager::CardReader);
set_card_reader((card_reader)DataManager::CardReader); set_message_handler((message_handler)MessageHandler);
set_message_handler((message_handler)MessageHandler);
} else {
set_script_reader((script_reader)ScriptReaderEx);
set_card_reader((card_reader)DataManager::CardReader);
set_message_handler((message_handler)MessageHandler);
}
if(!StartDuel()) { if(!StartDuel()) {
EndDuel(); EndDuel();
return 0; return 0;
...@@ -939,39 +933,6 @@ void ReplayMode::ReplayReload() { ...@@ -939,39 +933,6 @@ void ReplayMode::ReplayReload() {
/*len = */query_field_card(pduel, 1, LOCATION_REMOVED, flag, queryBuffer, 0); /*len = */query_field_card(pduel, 1, LOCATION_REMOVED, flag, queryBuffer, 0);
mainGame->dField.UpdateFieldCard(mainGame->LocalPlayer(1), LOCATION_REMOVED, (char*)queryBuffer); mainGame->dField.UpdateFieldCard(mainGame->LocalPlayer(1), LOCATION_REMOVED, (char*)queryBuffer);
} }
byte* ReplayMode::ScriptReaderEx(const char* script_name, int* slen) {
byte* buffer = ScriptReaderExDirectry("./specials", script_name, slen, 8);
if(buffer)
return buffer;
buffer = ScriptReaderExDirectry("./2pick", script_name, slen, 8);
if(buffer)
return buffer;
buffer = ScriptReaderExDirectry("./expansions", script_name, slen);
if(buffer)
return buffer;
buffer = ScriptReaderExDirectry("./beta", script_name, slen);
if(buffer)
return buffer;
bool find = false;
FileSystem::TraversalDir("./expansions", [script_name, slen, &buffer, &find](const char* name, bool isdir) {
if(!find && isdir && strcmp(name, ".") && strcmp(name, "..") && strcmp(name, "pics") && strcmp(name, "script")) {
char subdir[1024];
sprintf(subdir, "./expansions/%s", name);
buffer = ScriptReaderExDirectry(subdir, script_name, slen);
if(buffer)
find = true;
}
});
if(find)
return buffer;
return default_script_reader(script_name, slen);
}
byte* ReplayMode::ScriptReaderExDirectry(const char* path, const char* script_name, int* slen, int pre_len) {
char sname[256];
strcpy(sname, path);
strcat(sname, script_name + pre_len);//default script name: ./script/c%d.lua
return default_script_reader(sname, slen);
}
int ReplayMode::MessageHandler(long fduel, int type) { int ReplayMode::MessageHandler(long fduel, int type) {
if(!enable_log) if(!enable_log)
return 0; return 0;
......
...@@ -47,8 +47,6 @@ public: ...@@ -47,8 +47,6 @@ public:
static void ReplayRefreshSingle(int player, int location, int sequence, int flag = 0xf81fff); static void ReplayRefreshSingle(int player, int location, int sequence, int flag = 0xf81fff);
static void ReplayReload(); static void ReplayReload();
static byte* ScriptReaderEx(const char* script_name, int* slen);
static byte* ScriptReaderExDirectry(const char* path, const char* script_name, int* slen, int pre_len = 1);
static int MessageHandler(long fduel, int type); static int MessageHandler(long fduel, int type);
}; };
......
...@@ -545,7 +545,7 @@ void SingleDuel::TPResult(DuelPlayer* dp, unsigned char tp) { ...@@ -545,7 +545,7 @@ void SingleDuel::TPResult(DuelPlayer* dp, unsigned char tp) {
} }
time_limit[0] = host_info.time_limit; time_limit[0] = host_info.time_limit;
time_limit[1] = host_info.time_limit; time_limit[1] = host_info.time_limit;
set_script_reader((script_reader)ScriptReaderEx); set_script_reader((script_reader)DataManager::ScriptReaderEx);
set_card_reader((card_reader)DataManager::CardReader); set_card_reader((card_reader)DataManager::CardReader);
set_message_handler((message_handler)SingleDuel::MessageHandler); set_message_handler((message_handler)SingleDuel::MessageHandler);
rnd.reset(seed); rnd.reset(seed);
...@@ -2184,39 +2184,6 @@ void SingleDuel::RefreshSingle(int player, int location, int sequence, int flag) ...@@ -2184,39 +2184,6 @@ void SingleDuel::RefreshSingle(int player, int location, int sequence, int flag)
#endif #endif
} }
} }
byte* SingleDuel::ScriptReaderEx(const char* script_name, int* slen) {
byte* buffer = ScriptReaderExDirectry("./specials", script_name, slen, 8);
if(buffer)
return buffer;
buffer = ScriptReaderExDirectry("./2pick", script_name, slen, 8);
if(buffer)
return buffer;
buffer = ScriptReaderExDirectry("./expansions", script_name, slen);
if(buffer)
return buffer;
buffer = ScriptReaderExDirectry("./beta", script_name, slen);
if(buffer)
return buffer;
bool find = false;
FileSystem::TraversalDir("./expansions", [script_name, slen, &buffer, &find](const char* name, bool isdir) {
if(!find && isdir && strcmp(name, ".") && strcmp(name, "..") && strcmp(name, "pics") && strcmp(name, "script")) {
char subdir[1024];
sprintf(subdir, "./expansions/%s", name);
buffer = ScriptReaderExDirectry(subdir, script_name, slen);
if(buffer)
find = true;
}
});
if(find)
return buffer;
return default_script_reader(script_name, slen);
}
byte* SingleDuel::ScriptReaderExDirectry(const char* path, const char* script_name, int* slen, int pre_len) {
char sname[256];
strcpy(sname, path);
strcat(sname, script_name + pre_len);//default script name: ./script/c%d.lua
return default_script_reader(sname, slen);
}
int SingleDuel::MessageHandler(long fduel, int type) { int SingleDuel::MessageHandler(long fduel, int type) {
if(!enable_log) if(!enable_log)
return 0; return 0;
......
...@@ -53,8 +53,6 @@ public: ...@@ -53,8 +53,6 @@ public:
#endif #endif
void RefreshSingle(int player, int location, int sequence, int flag = 0xf81fff); void RefreshSingle(int player, int location, int sequence, int flag = 0xf81fff);
static byte* ScriptReaderEx(const char* script_name, int* slen);
static byte* ScriptReaderExDirectry(const char* path, const char* script_name, int* slen, int pre_len = 1);
static int MessageHandler(long fduel, int type); static int MessageHandler(long fduel, int type);
static void SingleTimer(evutil_socket_t fd, short events, void* arg); static void SingleTimer(evutil_socket_t fd, short events, void* arg);
//2pick //2pick
......
...@@ -11,8 +11,6 @@ bool SingleMode::is_closing = false; ...@@ -11,8 +11,6 @@ bool SingleMode::is_closing = false;
bool SingleMode::is_continuing = false; bool SingleMode::is_continuing = false;
Replay SingleMode::last_replay; Replay SingleMode::last_replay;
static byte buffer[0x20000];
bool SingleMode::StartPlay() { bool SingleMode::StartPlay() {
Thread::NewThread(SinglePlayThread, 0); Thread::NewThread(SinglePlayThread, 0);
return true; return true;
...@@ -38,7 +36,7 @@ int SingleMode::SinglePlayThread(void* param) { ...@@ -38,7 +36,7 @@ int SingleMode::SinglePlayThread(void* param) {
mtrandom rnd; mtrandom rnd;
time_t seed = time(0); time_t seed = time(0);
rnd.reset(seed); rnd.reset(seed);
set_script_reader((script_reader)ScriptReaderEx); set_script_reader((script_reader)DataManager::ScriptReaderEx);
set_card_reader((card_reader)DataManager::CardReader); set_card_reader((card_reader)DataManager::CardReader);
set_message_handler((message_handler)MessageHandler); set_message_handler((message_handler)MessageHandler);
pduel = create_duel(rnd.rand()); pduel = create_duel(rnd.rand());
...@@ -856,56 +854,6 @@ void SingleMode::SinglePlayReload() { ...@@ -856,56 +854,6 @@ void SingleMode::SinglePlayReload() {
/*len = */query_field_card(pduel, 1, LOCATION_REMOVED, flag, queryBuffer, 0); /*len = */query_field_card(pduel, 1, LOCATION_REMOVED, flag, queryBuffer, 0);
mainGame->dField.UpdateFieldCard(mainGame->LocalPlayer(1), LOCATION_REMOVED, (char*)queryBuffer); mainGame->dField.UpdateFieldCard(mainGame->LocalPlayer(1), LOCATION_REMOVED, (char*)queryBuffer);
} }
byte* SingleMode::ScriptReaderEx(const char* script_name, int* slen) {
byte* buffer = ScriptReaderExDirectry("./specials", script_name, slen, 8);
if(buffer)
return buffer;
buffer = ScriptReaderExDirectry("./2pick", script_name, slen, 8);
if(buffer)
return buffer;
buffer = ScriptReaderExDirectry("./expansions", script_name, slen);
if(buffer)
return buffer;
buffer = ScriptReaderExDirectry("./beta", script_name, slen);
if(buffer)
return buffer;
bool find = false;
FileSystem::TraversalDir("./expansions", [script_name, slen, &buffer, &find](const char* name, bool isdir) {
if(!find && isdir && strcmp(name, ".") && strcmp(name, "..") && strcmp(name, "pics") && strcmp(name, "script")) {
char subdir[1024];
sprintf(subdir, "./expansions/%s", name);
buffer = ScriptReaderExDirectry(subdir, script_name, slen);
if(buffer)
find = true;
}
});
if(find)
return buffer;
return ScriptReader(script_name, slen);
}
byte* SingleMode::ScriptReaderExDirectry(const char* path, const char* script_name, int* slen, int pre_len) {
char sname[256];
sprintf(sname, "%s%s", path, script_name + pre_len); //default script name: ./script/c%d.lua
return ScriptReader(sname, slen);
}
byte* SingleMode::ScriptReader(const char* script_name, int* slen) {
FILE *fp;
#ifdef _WIN32
wchar_t fname[256];
BufferIO::DecodeUTF8(script_name, fname);
fp = _wfopen(fname, L"rb");
#else
fp = fopen(script_name, "rb");
#endif
if(!fp)
return 0;
int len = fread(buffer, 1, sizeof(buffer), fp);
fclose(fp);
if(len >= sizeof(buffer))
return 0;
*slen = len;
return buffer;
}
int SingleMode::MessageHandler(long fduel, int type) { int SingleMode::MessageHandler(long fduel, int type) {
if(!enable_log) if(!enable_log)
return 0; return 0;
......
...@@ -26,9 +26,6 @@ public: ...@@ -26,9 +26,6 @@ public:
static void SinglePlayRefreshSingle(int player, int location, int sequence, int flag = 0xf81fff); static void SinglePlayRefreshSingle(int player, int location, int sequence, int flag = 0xf81fff);
static void SinglePlayReload(); static void SinglePlayReload();
static byte* ScriptReaderEx(const char* script_name, int* slen);
static byte* ScriptReaderExDirectry(const char* path, const char* script_name, int* slen, int pre_len = 1);
static byte* ScriptReader(const char* script_name, int* slen);
static int MessageHandler(long fduel, int type); static int MessageHandler(long fduel, int type);
protected: protected:
......
...@@ -506,7 +506,7 @@ void TagDuel::TPResult(DuelPlayer* dp, unsigned char tp) { ...@@ -506,7 +506,7 @@ void TagDuel::TPResult(DuelPlayer* dp, unsigned char tp) {
} }
time_limit[0] = host_info.time_limit; time_limit[0] = host_info.time_limit;
time_limit[1] = host_info.time_limit; time_limit[1] = host_info.time_limit;
set_script_reader((script_reader)ScriptReaderEx); set_script_reader((script_reader)DataManager::ScriptReaderEx);
set_card_reader((card_reader)DataManager::CardReader); set_card_reader((card_reader)DataManager::CardReader);
set_message_handler((message_handler)TagDuel::MessageHandler); set_message_handler((message_handler)TagDuel::MessageHandler);
rnd.reset(seed); rnd.reset(seed);
...@@ -2280,40 +2280,6 @@ void TagDuel::RefreshSingle(int player, int location, int sequence, int flag) { ...@@ -2280,40 +2280,6 @@ void TagDuel::RefreshSingle(int player, int location, int sequence, int flag) {
} }
} }
} }
byte* TagDuel::ScriptReaderEx(const char* script_name, int* slen) {
byte* buffer = ScriptReaderExDirectry("./specials", script_name, slen, 8);
if(buffer)
return buffer;
buffer = ScriptReaderExDirectry("./2pick", script_name, slen, 8);
if(buffer)
return buffer;
buffer = ScriptReaderExDirectry("./expansions", script_name, slen);
if(buffer)
return buffer;
buffer = ScriptReaderExDirectry("./beta", script_name, slen);
if(buffer)
return buffer;
bool find = false;
FileSystem::TraversalDir("./expansions", [script_name, slen, &buffer, &find](const char* name, bool isdir) {
if(!find && isdir && strcmp(name, ".") && strcmp(name, "..") && strcmp(name, "pics") && strcmp(name, "script")) {
char subdir[1024];
sprintf(subdir, "./expansions/%s", name);
buffer = ScriptReaderExDirectry(subdir, script_name, slen);
if(buffer)
find = true;
}
});
if(find)
return buffer;
return default_script_reader(script_name, slen);
}
byte* TagDuel::ScriptReaderExDirectry(const char* path, const char* script_name, int* slen, int pre_len) {
char sname[256];
strcpy(sname, path);
strcat(sname, script_name + pre_len);//default script name: ./script/c%d.lua
return default_script_reader(sname, slen);
}
int TagDuel::MessageHandler(long fduel, int type) { int TagDuel::MessageHandler(long fduel, int type) {
if(!enable_log) if(!enable_log)
return 0; return 0;
......
...@@ -50,8 +50,6 @@ public: ...@@ -50,8 +50,6 @@ public:
#endif #endif
void RefreshSingle(int player, int location, int sequence, int flag = 0xf81fff); void RefreshSingle(int player, int location, int sequence, int flag = 0xf81fff);
static byte* ScriptReaderEx(const char* script_name, int* slen);
static byte* ScriptReaderExDirectry(const char* path, const char* script_name, int* slen, int pre_len = 1);
static int MessageHandler(long fduel, int type); static int MessageHandler(long fduel, int type);
static void TagTimer(evutil_socket_t fd, short events, void* arg); static void TagTimer(evutil_socket_t fd, short events, void* arg);
......
#[2018.10][2018.9 TCG][2018.7][2018.4][2018.1][2017.10][2017.7][2017.4][2017.1][2016.10][2016.7][2016.4][2016.1][2015.10][2015.4][2015.1][2014.10][2014.7][2014.4][2014.2][2013.9][2018.5 TCG][2018.2 TCG][2017.11 TCG][2017.9 TCG][2017.6 TCG][2017.3 TCG][2016.8 TCG][2016.4 TCG][2015.11 TCG][2015.7 TCG][2015.4 TCG][2015.1 TCG][2014.10 TCG][2014.7 TCG][2014.4 TCG][2014.1.1 TCG][2013.10.11 TCG][2013.3.1][2012.9.1][2012.3.1][2011.9.1] #[2018.10][2018.12 TCG][2018.7][2018.4][2018.1][2017.10][2017.7][2017.4][2017.1][2016.10][2016.7][2016.4][2016.1][2015.10][2015.4][2015.1][2014.10][2014.7][2014.4][2014.2][2013.9][2018.9 TCG][2018.5 TCG][2018.2 TCG][2017.11 TCG][2017.9 TCG][2017.6 TCG][2017.3 TCG][2016.8 TCG][2016.4 TCG][2015.11 TCG][2015.7 TCG][2015.4 TCG][2015.1 TCG][2014.10 TCG][2014.7 TCG][2014.4 TCG][2014.1.1 TCG][2013.10.11 TCG][2013.3.1][2012.9.1][2012.3.1][2011.9.1]
!2018.10 !2018.10
#forbidden #forbidden
...@@ -167,8 +167,9 @@ ...@@ -167,8 +167,9 @@
35125879 2 --真竜皇の復活 35125879 2 --真竜皇の復活
83555666 2 --破壊輪 83555666 2 --破壊輪
!2018.9 TCG !2018.12 TCG
#forbidden #forbidden
05043010 0 --ファイアウォール・ドラゴン
05592689 0 --サクリファイス・ロータス 05592689 0 --サクリファイス・ロータス
39064822 0 --トロイメア・ゴブリン 39064822 0 --トロイメア・ゴブリン
04423206 0 --M.X-セイバー インヴォーカー 04423206 0 --M.X-セイバー インヴォーカー
...@@ -254,7 +255,7 @@ ...@@ -254,7 +255,7 @@
80604091 0 --血の代償 80604091 0 --血の代償
28566710 0 --ラストバトル! 28566710 0 --ラストバトル!
#limit #limit
30012506 1 --A-アサルト・コア 28985331 1 --終末の騎士
40044918 1 --E·HERO エアーマン 40044918 1 --E·HERO エアーマン
33508719 1 --メタモルポット 33508719 1 --メタモルポット
24094258 1 --ヘビーメタルフォーゼ・エレクトラム 24094258 1 --ヘビーメタルフォーゼ・エレクトラム
...@@ -291,7 +292,6 @@ ...@@ -291,7 +292,6 @@
20758643 1 --彼岸の悪鬼 グラバースニッチ 20758643 1 --彼岸の悪鬼 グラバースニッチ
70583986 1 --氷結界の虎王ドゥローレン 70583986 1 --氷結界の虎王ドゥローレン
52687916 1 --氷結界の龍 トリシューラ 52687916 1 --氷結界の龍 トリシューラ
05043010 1 --ファイアウォール・ドラゴン
33396948 1 --封印されしエクゾディア 33396948 1 --封印されしエクゾディア
07902349 1 --封印されし者の左腕 07902349 1 --封印されし者の左腕
70903634 1 --封印されし者の右腕 70903634 1 --封印されし者の右腕
...@@ -341,8 +341,7 @@ ...@@ -341,8 +341,7 @@
32723153 1 --マジカル·エクスプロージョン 32723153 1 --マジカル·エクスプロージョン
54974237 1 --闇のデッキ破壊ウイルス 54974237 1 --闇のデッキ破壊ウイルス
#semi limit #semi limit
55885348 2 --Kozmo-ダークシミター 09411399 2 --DHERO ディアボリックガイ
24224830 2 --墓穴の指名者
23171610 2 --リミッター解除 23171610 2 --リミッター解除
73915051 2 --スケープ・ゴート 73915051 2 --スケープ・ゴート
73628505 2 --テラ・フォーミング 73628505 2 --テラ・フォーミング
...@@ -3263,6 +3262,190 @@ ...@@ -3263,6 +3262,190 @@
53582587 2 --激流葬 53582587 2 --激流葬
29401950 2 --奈落の落とし穴 29401950 2 --奈落の落とし穴
!2018.9 TCG
#forbidden
05592689 0 --サクリファイス・ロータス
39064822 0 --トロイメア・ゴブリン
04423206 0 --M.X-セイバー インヴォーカー
76794549 0 --アストログラフ・マジシャン
20663556 0 --イレカエル
44910027 0 --ヴィクトリー・ドラゴン
20366274 0 --エルシャドール・ネフィリム
25862681 0 --エンシェント・フェアリー・ドラゴン
53804307 0 --焔征竜-ブラスター
07563579 0 --Emヒグルミ
40318957 0 --EMドクロバット・ジョーカー
17330916 0 --EMモンキーボード
82301904 0 --混沌帝龍 -終焉の使者-
79106360 0 --カオスポッド
90411554 0 --巌征竜-レドックス
08903700 0 --儀式魔人リリーサー
17412721 0 --旧神ノーデン
65536818 0 --源竜星-ボウテンコウ
49684352 0 --虹彩の魔術師
34124316 0 --サイバーポッド
88071625 0 --The tyrant NEPTUNE
48905153 0 --十二獣ドランシア
85115440 0 --十二獣ブルホーン
21593977 0 --処刑人-マキュラ
30539496 0 --真竜皇リトスアジムD
21377582 0 --真竜剣皇マスターP
81122844 0 --発条空母ゼンマイティ
23434538 0 --増殖するG
00581014 0 --ダイガスタ・エメラル
15341821 0 --ダンディライオン
69015963 0 --デビル·フランケン
18326736 0 --星守の騎士 プトレマイオス
33184167 0 --同族感染ウィルス
90307777 0 --影霊衣の術士 シュリット
54719828 0 --No.16 色の支配者ショック·ルーラー
43387895 0 --覇王眷竜スターヴ・ヴェノム
26400609 0 --瀑征竜-タイダル
78706415 0 --ファイバーポッド
93369354 0 --フィッシュボーグ-ガンナー
23558733 0 --フェニキシアン・クラスター・アマリリス
09929398 0 --BF-朧影のゴウフウ
31178212 0 --マジェスペクター・ユニコーン
34206604 0 --魔導サイエンティスト
96782886 0 --メンタルマスター
03078576 0 --八汰烏
34086406 0 --ラヴァルバル·チェイン
89399912 0 --嵐征竜-テンペスト
57421866 0 --レベル・スティーラー
41482598 0 --悪夢の蜃気楼
44763025 0 --いたずら好きな双子悪魔
19613556 0 --大嵐
17375316 0 --押収
35059553 0 --カイザーコロシアム
74191942 0 --苦渋の選択
42829885 0 --強引な番兵
45986603 0 --強奪
55144522 0 --強欲な壺
04031928 0 --心変わり
23557835 0 --次元融合
57953380 0 --生還の宝札
60682203 0 --大寒波
67616300 0 --チキンレース
67169062 0 --貪欲な壺
27770341 0 --超再生能力
69243953 0 --蝶の短剣-エルマ
79571449 0 --天使の施し
11110587 0 --隣の芝刈り
42703248 0 --ハリケーン
18144506 0 --ハーピィの羽根帚
70828912 0 --早すぎた埋葬
34906152 0 --マスドライバー
46448938 0 --魔導書の神判
46411259 0 --突然変異
85602018 0 --遺言状
94220427 0 --RUM-アージェント・カオス・フォース
27174286 0 --異次元からの帰還
93016201 0 --王宮の弾圧
05851097 0 --虚無空間
57585212 0 --自爆スイッチ
03280747 0 --第六感
64697231 0 --ダスト·シュート
35316708 0 --刻の封印
80604091 0 --血の代償
28566710 0 --ラストバトル!
#limit
30012506 1 --A-アサルト・コア
40044918 1 --E·HERO エアーマン
33508719 1 --メタモルポット
24094258 1 --ヘビーメタルフォーゼ・エレクトラム
74586817 1 --PSYフレームロード・Ω
46772449 1 --励輝士 ヴェルズビュート
08949584 1 --ヒーローアライブ
72892473 1 --手札抹殺
52340444 1 --閃刀機-ホーネットビット
48130397 1 --超融合
64034255 1 --A·ジェネクス·バードマン
45222299 1 --イビリチュア·ガストクラーケ
11877465 1 --イビリチュア·マインドオーガス
99177923 1 --インフェルニティ·デーモン
68184115 1 --甲虫装機 ダンセル
69207766 1 --甲虫装機 ホーネット
27552504 1 --永遠の淑女 ベアトリーチェ
68819554 1 --Emダメージ・ジャグラー
65518099 1 --クリフォート・ツール
38572779 1 --幻創のミセラサウルス
39512984 1 --ジェムナイトマスター・ダイヤ
78872731 1 --十二獣モルモラット
78868119 1 --深海のディーヴァ
58984738 1 --真竜拳士ダイナマイトK
04474060 1 --SPYRAL GEAR-ドローン
78080961 1 --SPYRAL-ジーニアス
81275020 1 --SRベイゴマックス
48063985 1 --聖霊獣騎 カンナホーク
65192027 1 --ダーク·アームド·ドラゴン
96570609 1 --天帝アイテール
75732622 1 --トーチ・ゴーレム
16226786 1 --深淵の暗殺者
18239909 1 --爆竜剣士イグニスターP
57143342 1 --彼岸の悪鬼 ガトルホッグ
20758643 1 --彼岸の悪鬼 グラバースニッチ
70583986 1 --氷結界の虎王ドゥローレン
52687916 1 --氷結界の龍 トリシューラ
05043010 1 --ファイアウォール・ドラゴン
33396948 1 --封印されしエクゾディア
07902349 1 --封印されし者の左腕
70903634 1 --封印されし者の右腕
44519536 1 --封印されし者の左足
08124921 1 --封印されし者の右足
26674724 1 --ブリューナクの影霊衣
10802915 1 --魔界発現世行きデスガイド
89463537 1 --ユニコールの影霊衣
88264978 1 --レッドアイズ·ダークネスメタルドラゴン
33782437 1 --一時休戦
66957584 1 --インフェルニティガン
72405967 1 --王家の生け贄
81439173 1 --おろかな埋葬
67723438 1 --緊急テレポート
45305419 1 --継承の印
99330325 1 --妨げられた壊獣の眠り
12580477 1 --サンダー·ボルト
95308449 1 --終焉のカウントダウン
74845897 1 --真炎の爆発
35125879 1 --真竜皇の復活
54631665 1 --SPYRAL RESORT
32807846 1 --増援
54447022 1 --ソウル・チャージ
14087893 1 --月の書
81674782 1 --次元の裂け目
83764718 1 --死者蘇生
91623717 1 --連鎖爆撃
79844764 1 --帝王の烈旋
70368879 1 --成金ゴブリン
22842126 1 --汎神の帝王
53129443 1 --ブラック·ホール
73468603 1 --盆回し
15854426 1 --霞の谷の神風
58577036 1 --名推理
43040603 1 --モンスターゲート
14733538 1 --竜呼相打つ
27970830 1 --六武の門
02295440 1 --ワン·フォー·ワン
09059700 1 --インフェルニティ・バリア
61740673 1 --王宮の勅命
84749824 1 --神の警告
41420027 1 --神の宣告
82732705 1 --スキルドレイン
73599290 1 --ソウルドレイン
17078030 1 --光の護封壁
30241314 1 --マクロコスモス
32723153 1 --マジカル·エクスプロージョン
54974237 1 --闇のデッキ破壊ウイルス
#semi limit
55885348 2 --Kozmo-ダークシミター
24224830 2 --墓穴の指名者
23171610 2 --リミッター解除
73915051 2 --スケープ・ゴート
73628505 2 --テラ・フォーミング
59297550 2 --ゼンマイマジシャン
90953320 2 --TG ハイパー·ライブラリアン
28297833 2 --ネクロフェイス
92746535 2 --竜剣士ラスターP
!2018.5 TCG !2018.5 TCG
#forbidden #forbidden
76794549 0 --アストログラフ・マジシャン 76794549 0 --アストログラフ・マジシャン
......
Subproject commit 7cdf5051b584211be0e24bb5b47842e8c1de09bb Subproject commit b17e3f73d7fd87569dac80672d0469523fb78934
Subproject commit 9845ffd083503c65aed5b4660b3eb0c49b173fce Subproject commit cbedd8db536440bbb099a14c382d6c564f67d375
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment