Commit c9264cdc authored by nanahira's avatar nanahira

Merge branch 'server' of https://github.com/purerosefallen/ygopro

parents 94dd87f1 f17f8a80
...@@ -85,3 +85,4 @@ core* ...@@ -85,3 +85,4 @@ core*
/*.bat /*.bat
/*.sh /*.sh
/*.sql
...@@ -40,3 +40,8 @@ ...@@ -40,3 +40,8 @@
* 每回合抽卡 * 每回合抽卡
* 每回合时间 * 每回合时间
* 录像保存模式 * 录像保存模式
### 特殊编译参数
执行`premake5 gmake`之前,可以通过设置一些环境变量,来改变一些编译参数。
* `YGOPRO_DEFAULT_DUEL_RULE=X` 设置默认决斗规则为大师规则X。
* `YGOPRO_NO_LUA_SAFE` 若有定义,则开启默认禁用的`os``io`库。请慎用这个参数,确保运行的卡片脚本文件是可以信任的。
...@@ -18,9 +18,6 @@ install: ...@@ -18,9 +18,6 @@ install:
- bash -c "curl --retry 5 --connect-timeout 30 --location --remote-header-name --remote-name https://www.sqlite.org/2018/sqlite-amalgamation-3240000.zip ; exit 0" - bash -c "curl --retry 5 --connect-timeout 30 --location --remote-header-name --remote-name https://www.sqlite.org/2018/sqlite-amalgamation-3240000.zip ; exit 0"
- 7z x -y sqlite-amalgamation-3240000.zip - 7z x -y sqlite-amalgamation-3240000.zip
- move sqlite-amalgamation-3240000 sqlite3 - move sqlite-amalgamation-3240000 sqlite3
- appveyor DownloadFile https://github.com/tronkko/dirent/raw/master/include/dirent.h
- move dirent.h gframe\
# let premake happy # let premake happy
- xcopy /E premake\* . - xcopy /E premake\* .
...@@ -37,12 +34,49 @@ build: ...@@ -37,12 +34,49 @@ build:
after_build: after_build:
- ps: move bin\release\ygopro.exe . - ps: move bin\release\ygopro.exe .
# redis
- bash -c "curl --retry 5 --connect-timeout 30 --location --remote-header-name --remote-name https://github.com/MicrosoftArchive/redis/releases/download/win-3.2.100/Redis-x64-3.2.100.zip ; exit 0"
- 7z x -y -oredis Redis-x64-3.2.100.zip
# nodejs
- bash -c "curl --retry 5 --connect-timeout 30 --location --remote-header-name --remote-name https://nodejs.org/dist/v10.15.0/node-v10.15.0-win-x64.zip ; exit 0"
- 7z x -y node-v10.15.0-win-x64.zip
- mv node-v10.15.0-win-x64 node
# srvpro
- git clone https://github.com/purerosefallen/ygopro-server
- cd ygopro-server
- ../node/npm install
- bash -c "curl --retry 5 --connect-timeout 30 --location --remote-header-name --remote-name https://github.com/purerosefallen/windbot/releases/download/latest/WindBot.7z ; exit 0"
- 7z x -y WindBot.7z
- rm -rf Bot.exe bot.conf
- mv WindBot windbot_
- mv windbot_ windbot # Windows NTFS does not support case sensitive, so renaming the folder twice.
- rm -rf WindBot.7z
- cp ../cards.cdb windbot/
- mkdir ygopro decks_save
- cp -rf ../ygopro.exe ygopro/
- mv ../cards.cdb ygopro/
- mv ../lflist.conf ygopro/
- mv ../script ygopro/
- cd ygopro
- mkdir gframe
- cp -rf ../../gframe/game.cpp gframe/ # Toss game.cpp in for version detection
# - cp -rf config_build config
- cd ../..
# start script
- bash -c "echo '@echo off' >> run.bat ; echo 'start redis/redis-server.exe' >> run.bat ; echo 'cd ygopro-server/windbot' >> run.bat ; echo 'start WindBot.exe servermode=true serverport=2399' >> run.bat ; echo 'cd ..' >> run.bat ; echo 'start ../node/node.exe ygopro-server.js' >> run.bat"
- 7z a -mx9 -xr!.git* ygopro-server-win.zip node redis ygopro-server run.bat
test: off test: off
artifacts: artifacts:
- path: ygopro.exe - path: ygopro.exe
name: ygopro server mode name: ygopro server mode
- path: ygopro-server-win.zip
name: Windows version of SRVPro
deploy: deploy:
release: win release: win
......
No preview for this file type
...@@ -1129,7 +1129,7 @@ void Game::DrawThumb(code_pointer cp, position2di pos, std::unordered_map<int, i ...@@ -1129,7 +1129,7 @@ void Game::DrawThumb(code_pointer cp, position2di pos, std::unordered_map<int, i
if(drag) { if(drag) {
dragloc = recti(pos.X, pos.Y, pos.X + CARD_THUMB_WIDTH * mainGame->xScale, pos.Y + CARD_THUMB_HEIGHT * mainGame->yScale); dragloc = recti(pos.X, pos.Y, pos.X + CARD_THUMB_WIDTH * mainGame->xScale, pos.Y + CARD_THUMB_HEIGHT * mainGame->yScale);
limitloc = recti(pos.X, pos.Y, pos.X + 20 * mainGame->xScale, pos.Y + 20 * mainGame->yScale); limitloc = recti(pos.X, pos.Y, pos.X + 20 * mainGame->xScale, pos.Y + 20 * mainGame->yScale);
otloc = recti(pos.X + 7, pos.Y + 50, pos.X + 37 * mainGame->xScale, pos.Y + 65 * mainGame->yScale); otloc = recti(pos.X + 7, pos.Y + 50 * mainGame->yScale, pos.X + 37 * mainGame->xScale, pos.Y + 65 * mainGame->yScale);
} }
driver->draw2DImage(img, dragloc, rect<s32>(0, 0, size.Width, size.Height)); driver->draw2DImage(img, dragloc, rect<s32>(0, 0, size.Width, size.Height));
if(lflist->count(lcode)) { if(lflist->count(lcode)) {
......
...@@ -704,14 +704,23 @@ bool Game::Initialize() { ...@@ -704,14 +704,23 @@ bool Game::Initialize() {
btnStartFilter->setRelativePosition(rect<s32>(260, 80 + 125 / 6, 390, 100 + 125 / 6)); btnStartFilter->setRelativePosition(rect<s32>(260, 80 + 125 / 6, 390, 100 + 125 / 6));
btnClearFilter = env->addButton(rect<s32>(205, 80 + 125 / 6, 255, 100 + 125 / 6), wFilter, BUTTON_CLEAR_FILTER, dataManager.GetSysString(1304)); btnClearFilter = env->addButton(rect<s32>(205, 80 + 125 / 6, 255, 100 + 125 / 6), wFilter, BUTTON_CLEAR_FILTER, dataManager.GetSysString(1304));
} }
wCategories = env->addWindow(rect<s32>(630, 60, 1000, 270), false, dataManager.strBuffer); wCategories = env->addWindow(rect<s32>(600, 60, 1000, 305), false, dataManager.strBuffer);
wCategories->getCloseButton()->setVisible(false); wCategories->getCloseButton()->setVisible(false);
wCategories->setDrawTitlebar(false); wCategories->setDrawTitlebar(false);
wCategories->setDraggable(false); wCategories->setDraggable(false);
wCategories->setVisible(false); wCategories->setVisible(false);
btnCategoryOK = env->addButton(rect<s32>(135, 175, 235, 200), wCategories, BUTTON_CATEGORY_OK, dataManager.GetSysString(1211)); btnCategoryOK = env->addButton(rect<s32>(150, 210, 250, 235), wCategories, BUTTON_CATEGORY_OK, dataManager.GetSysString(1211));
int catewidth = 0;
for(int i = 0; i < 32; ++i) {
irr::core::dimension2d<unsigned int> dtxt = mainGame->guiFont->getDimension(dataManager.GetSysString(1100 + i));
if(dtxt.Width + 40 > catewidth)
catewidth = dtxt.Width + 40;
}
for(int i = 0; i < 32; ++i) for(int i = 0; i < 32; ++i)
chkCategory[i] = env->addCheckBox(false, recti(10 + (i % 4) * 90, 10 + (i / 4) * 20, 100 + (i % 4) * 90, 30 + (i / 4) * 20), wCategories, -1, dataManager.GetSysString(1100 + i)); chkCategory[i] = env->addCheckBox(false, recti(10 + (i % 4) * catewidth, 5 + (i / 4) * 25, 10 + (i % 4 + 1) * catewidth, 5 + (i / 4 + 1) * 25), wCategories, -1, dataManager.GetSysString(1100 + i));
int wcatewidth = catewidth * 4 + 16;
wCategories->setRelativePosition(rect<s32>(1000 - wcatewidth, 60, 1000, 305));
btnCategoryOK->setRelativePosition(recti(wcatewidth / 2 - 50, 210, wcatewidth / 2 + 50, 235));
btnMarksFilter = env->addButton(rect<s32>(60, 80 + 125 / 6, 190, 100 + 125 / 6), wFilter, BUTTON_MARKS_FILTER, dataManager.GetSysString(1374)); btnMarksFilter = env->addButton(rect<s32>(60, 80 + 125 / 6, 190, 100 + 125 / 6), wFilter, BUTTON_MARKS_FILTER, dataManager.GetSysString(1374));
wLinkMarks = env->addWindow(rect<s32>(700, 30, 820, 150), false, dataManager.strBuffer); wLinkMarks = env->addWindow(rect<s32>(700, 30, 820, 150), false, dataManager.strBuffer);
wLinkMarks->getCloseButton()->setVisible(false); wLinkMarks->getCloseButton()->setVisible(false);
...@@ -1947,7 +1956,13 @@ void Game::OnResize() { ...@@ -1947,7 +1956,13 @@ void Game::OnResize() {
btnClearFilter->setRelativePosition(Resize(205, 80 + 125 / 6, 255, 100 + 125 / 6)); btnClearFilter->setRelativePosition(Resize(205, 80 + 125 / 6, 255, 100 + 125 / 6));
btnMarksFilter->setRelativePosition(Resize(60, 80 + 125 / 6, 190, 100 + 125 / 6)); btnMarksFilter->setRelativePosition(Resize(60, 80 + 125 / 6, 190, 100 + 125 / 6));
wCategories->setRelativePosition(ResizeWin(450, 60, 1000, 270)); recti btncatepos = btnEffectFilter->getAbsolutePosition();
wCategories->setRelativePosition(recti(
btncatepos.LowerRightCorner.X - wCategories->getRelativePosition().getWidth(),
btncatepos.LowerRightCorner.Y - btncatepos.getHeight() / 2,
btncatepos.LowerRightCorner.X,
btncatepos.LowerRightCorner.Y - btncatepos.getHeight() / 2 + 245));
wLinkMarks->setRelativePosition(ResizeWin(700, 30, 820, 150)); wLinkMarks->setRelativePosition(ResizeWin(700, 30, 820, 150));
stBanlist->setRelativePosition(Resize(10, 9, 100, 29)); stBanlist->setRelativePosition(Resize(10, 9, 100, 29));
stDeck->setRelativePosition(Resize(10, 39, 100, 59)); stDeck->setRelativePosition(Resize(10, 39, 100, 59));
...@@ -1987,7 +2002,8 @@ void Game::OnResize() { ...@@ -1987,7 +2002,8 @@ void Game::OnResize() {
wANAttribute->setRelativePosition(ResizeWin(500, 200, 830, 285)); wANAttribute->setRelativePosition(ResizeWin(500, 200, 830, 285));
wANRace->setRelativePosition(ResizeWin(480, 200, 850, 410)); wANRace->setRelativePosition(ResizeWin(480, 200, 850, 410));
wReplaySave->setRelativePosition(ResizeWin(510, 200, 820, 320)); wReplaySave->setRelativePosition(ResizeWin(510, 200, 820, 320));
stHintMsg->setRelativePosition(ResizeWin(500, 60, 820, 90));
stHintMsg->setRelativePosition(ResizeWin(660 - 160 * xScale, 60, 660 + 160 * xScale, 90));
//sound / music volume bar //sound / music volume bar
scrSoundVolume->setRelativePosition(recti(scrSoundVolume->getRelativePosition().UpperLeftCorner.X, scrSoundVolume->getRelativePosition().UpperLeftCorner.Y, 20 + (300 * xScale) - 70, scrSoundVolume->getRelativePosition().LowerRightCorner.Y)); scrSoundVolume->setRelativePosition(recti(scrSoundVolume->getRelativePosition().UpperLeftCorner.X, scrSoundVolume->getRelativePosition().UpperLeftCorner.Y, 20 + (300 * xScale) - 70, scrSoundVolume->getRelativePosition().LowerRightCorner.Y));
...@@ -2034,8 +2050,8 @@ void Game::OnResize() { ...@@ -2034,8 +2050,8 @@ void Game::OnResize() {
btnReset->setRelativePosition(recti(1, 1, width, height)); btnReset->setRelativePosition(recti(1, 1, width, height));
} }
wCardImg->setRelativePosition(ResizeCard(1, 1, 20, 18)); wCardImg->setRelativePosition(ResizeCardImgWin(1, 1, 20, 18));
imgCard->setRelativePosition(ResizeCard(10, 9, 0, 0)); imgCard->setRelativePosition(ResizeCardImgWin(10, 9, 0, 0));
wInfos->setRelativePosition(Resize(1, 275, 301, 639)); wInfos->setRelativePosition(Resize(1, 275, 301, 639));
stName->setRelativePosition(recti(10, 10, 300 * xScale - 13, 10 + 22)); stName->setRelativePosition(recti(10, 10, 300 * xScale - 13, 10 + 22));
lstLog->setRelativePosition(Resize(10, 10, 290, 290)); lstLog->setRelativePosition(Resize(10, 10, 290, 290));
...@@ -2049,7 +2065,7 @@ void Game::OnResize() { ...@@ -2049,7 +2065,7 @@ void Game::OnResize() {
btnM2->setRelativePosition(Resize(160, 0, 210, 20)); btnM2->setRelativePosition(Resize(160, 0, 210, 20));
btnEP->setRelativePosition(Resize(320, 0, 370, 20)); btnEP->setRelativePosition(Resize(320, 0, 370, 20));
wChat->setRelativePosition(ResizeWin(wInfos->getRelativePosition().LowerRightCorner.X + 6, 615, 1020, 640, true)); wChat->setRelativePosition(recti(wInfos->getRelativePosition().LowerRightCorner.X + 6, window_size.Height - 25, window_size.Width, window_size.Height));
ebChatInput->setRelativePosition(recti(3, 2, window_size.Width - wChat->getRelativePosition().UpperLeftCorner.X - 6, 22)); ebChatInput->setRelativePosition(recti(3, 2, window_size.Width - wChat->getRelativePosition().UpperLeftCorner.X - 6, 22));
btnLeaveGame->setRelativePosition(Resize(205, 5, 295, 80)); btnLeaveGame->setRelativePosition(Resize(205, 5, 295, 80));
...@@ -2092,19 +2108,13 @@ position2di Game::ResizeReverse(s32 x, s32 y) { ...@@ -2092,19 +2108,13 @@ position2di Game::ResizeReverse(s32 x, s32 y) {
y = y / yScale; y = y / yScale;
return position2di(x, y); return position2di(x, y);
} }
recti Game::ResizeWin(s32 x, s32 y, s32 x2, s32 y2, bool chat) { recti Game::ResizeWin(s32 x, s32 y, s32 x2, s32 y2) {
s32 sx = x2 - x; s32 w = x2 - x;
s32 sy = y2 - y; s32 h = y2 - y;
if(chat) { x = (x + w / 2) * xScale - w / 2;
y = window_size.Height - sy; y = (y + h / 2) * yScale - h / 2;
x2 = window_size.Width; x2 = w + x;
y2 = y + sy; y2 = h + y;
return recti(x, y, x2, y2);
}
x = (x + sx / 2) * xScale - sx / 2;
y = (y + sy / 2) * yScale - sy / 2;
x2 = sx + x;
y2 = sy + y;
return recti(x, y, x2, y2); return recti(x, y, x2, y2);
} }
recti Game::ResizePhaseHint(s32 x, s32 y, s32 x2, s32 y2, s32 width) { recti Game::ResizePhaseHint(s32 x, s32 y, s32 x2, s32 y2, s32 width) {
...@@ -2114,17 +2124,15 @@ recti Game::ResizePhaseHint(s32 x, s32 y, s32 x2, s32 y2, s32 width) { ...@@ -2114,17 +2124,15 @@ recti Game::ResizePhaseHint(s32 x, s32 y, s32 x2, s32 y2, s32 width) {
y2 = y2 * yScale; y2 = y2 * yScale;
return recti(x, y, x2, y2); return recti(x, y, x2, y2);
} }
recti Game::ResizeCard(s32 x, s32 y, s32 x2, s32 y2) { recti Game::ResizeCardImgWin(s32 x, s32 y, s32 mx, s32 my) {
float mul = xScale; float mul = xScale;
if(xScale > yScale) if(xScale > yScale)
mul = yScale; mul = yScale;
s32 sx = CARD_IMG_WIDTH * mul + x2 * xScale; s32 w = CARD_IMG_WIDTH * mul + mx * xScale;
s32 sy = CARD_IMG_HEIGHT * mul + y2 * yScale; s32 h = CARD_IMG_HEIGHT * mul + my * yScale;
x = x * xScale; x = x * xScale;
y = y * yScale; y = y * yScale;
x2 = sx + x; return recti(x, y, x + w, y + h);
y2 = sy + y;
return recti(x, y, x2, y2);
} }
recti Game::ResizeCardHint(s32 x, s32 y, s32 x2, s32 y2) { recti Game::ResizeCardHint(s32 x, s32 y, s32 x2, s32 y2) {
return ResizeCardMid(x, y, x2, y2, (x + x2) * 0.5, (y + y2) * 0.5); return ResizeCardMid(x, y, x2, y2, (x + x2) * 0.5, (y + y2) * 0.5);
......
...@@ -199,8 +199,8 @@ public: ...@@ -199,8 +199,8 @@ public:
position2di Resize(s32 x, s32 y); position2di Resize(s32 x, s32 y);
position2di ResizeReverse(s32 x, s32 y); position2di ResizeReverse(s32 x, s32 y);
recti ResizePhaseHint(s32 x, s32 y, s32 x2, s32 y2, s32 width); recti ResizePhaseHint(s32 x, s32 y, s32 x2, s32 y2, s32 width);
recti ResizeWin(s32 x, s32 y, s32 x2, s32 y2, bool chat = false); recti ResizeWin(s32 x, s32 y, s32 x2, s32 y2);
recti ResizeCard(s32 x, s32 y, s32 x2, s32 y2); recti ResizeCardImgWin(s32 x, s32 y, s32 mx, s32 my);
recti ResizeCardHint(s32 x, s32 y, s32 x2, s32 y2); recti ResizeCardHint(s32 x, s32 y, s32 x2, s32 y2);
position2di ResizeCardHint(s32 x, s32 y); position2di ResizeCardHint(s32 x, s32 y);
recti ResizeCardMid(s32 x, s32 y, s32 x2, s32 y2, s32 midx, s32 midy); recti ResizeCardMid(s32 x, s32 y, s32 x2, s32 y2, s32 midx, s32 midy);
......
...@@ -8,6 +8,8 @@ ...@@ -8,6 +8,8 @@
#ifndef _WIN32 #ifndef _WIN32
#include <dirent.h> #include <dirent.h>
#include <sys/stat.h> #include <sys/stat.h>
#include <vector>
#include <algorithm>
#endif #endif
#ifdef _WIN32 #ifdef _WIN32
...@@ -109,23 +111,58 @@ public: ...@@ -109,23 +111,58 @@ public:
return MakeDir(dir); return MakeDir(dir);
} }
#ifndef YGOPRO_SERVER_MODE
struct file_unit {
std::string filename;
bool is_dir;
};
#endif
static void TraversalDir(const char* path, const std::function<void(const char*, bool)>& cb) { static void TraversalDir(const char* path, const std::function<void(const char*, bool)>& cb) {
DIR* dir = nullptr; DIR* dir = nullptr;
struct dirent* dirp = nullptr; struct dirent* dirp = nullptr;
if((dir = opendir(path)) == nullptr) if((dir = opendir(path)) == nullptr)
return; return;
struct stat fileStat; struct stat fileStat;
while((dirp = readdir(dir)) != nullptr) { #ifndef YGOPRO_SERVER_MODE
std::vector<file_unit> file_list;
#endif
while ((dirp = readdir(dir)) != nullptr)
{
#ifndef YGOPRO_SERVER_MODE
file_unit funit;
#endif
char fname[1024]; char fname[1024];
strcpy(fname, path); strcpy(fname, path);
strcat(fname, "/"); strcat(fname, "/");
strcat(fname, dirp->d_name); strcat(fname, dirp->d_name);
stat(fname, &fileStat); stat(fname, &fileStat);
#ifdef YGOPRO_SERVER_MODE
cb(dirp->d_name, S_ISDIR(fileStat.st_mode)); cb(dirp->d_name, S_ISDIR(fileStat.st_mode));
#else
funit.filename = std::string(dirp->d_name);
funit.is_dir = S_ISDIR(fileStat.st_mode);
file_list.push_back(funit);
#endif
} }
closedir(dir); closedir(dir);
#ifndef YGOPRO_SERVER_MODE
std::sort(file_list.begin(), file_list.end(), TraversalDirSort);
for (file_unit funit : file_list)
cb(funit.filename.c_str(), funit.is_dir);
#endif
} }
#ifndef YGOPRO_SERVER_MODE
static bool TraversalDirSort(file_unit file1, file_unit file2) {
if(file1.is_dir != file2.is_dir) {
return file1.is_dir;
} else {
return file1.filename < file2.filename;
}
}
#endif
static void TraversalDir(const wchar_t* wpath, const std::function<void(const wchar_t*, bool)>& cb) { static void TraversalDir(const wchar_t* wpath, const std::function<void(const wchar_t*, bool)>& cb) {
char path[1024]; char path[1024];
BufferIO::EncodeUTF8(wpath, path); BufferIO::EncodeUTF8(wpath, path);
......
#[2019.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] #[2019.1][2018.10][2019.1 TCG][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]
!2019.1 !2019.1
#forbidden #forbidden
...@@ -340,6 +340,191 @@ ...@@ -340,6 +340,191 @@
35125879 2 --真竜皇の復活 35125879 2 --真竜皇の復活
83555666 2 --破壊輪 83555666 2 --破壊輪
!2019.1 TCG
#Forbidden TCG
53804307 0 --Blaster, Dragon Ruler of Infernos MAIN DECK MONSTERS
34124316 0 --Cyber Jar
8903700 0 --Djinn Releaser of Rituals
78706415 0 --Fiber Jar
93369354 0 --Fishborg Blaster
34206604 0 --Magical Scientist
31178212 0 --Majespecter Unicorn - Kirin
21593977 0 --Makyura the Destructor
96782886 0 --Mind Master
79106360 0 --Morphing Jar #2
7563579 0 --Performage PlushFire
17330916 0 --Performapal Monkeyboard
90411554 0 --Redox, Dragon Ruler of Boulders
20663556 0 --Substitoad
89399912 0 --Tempest, Dragon Ruler of Storms
88071625 0 --The Tyrant Neptune
26400609 0 --Tidal, Dragon Ruler of Waterfalls
33184167 0 --Tribe-Infecting Virus
44910027 0 --Victory Dragon
30539496 0 --True King Lithosagym, the Disaster
3078576 0 --Yata-Garasu
9929398 0 --Blackwing - Gofu the Vague Shadow
15341821 0 --Dandylion
49684352 0 --Double Iris Magician
40318957 0 --Performapal Skullcrobat Joker
57421866 0 --Level Eater
23434538 0 --Maxx "C"
76794549 0 --Astrograph Sorcerer
21377582 0 --Master Peace, The True Dracoslaying King
23558733 0 --Phoenixian Cluster Amaryllis
5592689 0 --Samsara Lotus
75732622 0 --Grinder Golem
55623480 0 --Fairy TailSnow
17412721 0 --Elder Entity Norden EXTRA DECK MONSTERS
43387895 0 --Supreme King Dragon Starving Venom
65536818 0 --Denglong, First of the Yang Zing
25862681 0 --Ancient Fairy Dragon
34086406 0 --Lavalval Chain
54719828 0 --Number 16: Shock Master
18326736 0 --Tellarknight Ptolomaeus
81122844 0 --Wind-Up Carrier Zenmaity
581014 0 --Daigusto Emeral
48905153 0 --Zoodiac Drident
85115440 0 --Zoodiac Broadbull
63504681 0 --Number 86: Heroic ChampionRhongomyniad
10389142 0 --Number 42: Galaxy Tomahawk
39064822 0 --Knightmare Goblin
4423206 0 --M-X-Saber Invoker
5043010 0 --Firewall Dragon
22593417 0 --Topologic Gumblar Dragon
69243953 0 --Butterfly Dagger - Elma SPELLS CARDS
57953380 0 --Card of Safe Return
4031928 0 --Change of Heart
67616300 0 --Chicken Game
60682203 0 --Cold Wave
17375316 0 --Confiscation
44763025 0 --Deliquent Duo
23557835 0 --Dimension Fusion
42703248 0 --Giant Trunade
79571449 0 --Graceful Charity
18144507 0 --Harpie's Feather Duster
18144506 0 --Harpie's Feather Duster
35059553 0 --Kaiser Colloseum
19613556 0 --Heavy Storm
85602018 0 --Last Will
46411259 0 --Metamorphosis
74191942 0 --Painful Choice
67169062 0 --Pot of Avarice
55144522 0 --Pot of greed
34906152 0 --Mass Driver
41482598 0 --Mirage of Nightmare
70828912 0 --Premature Burial
45986603 0 --Snatch Steal
46448938 0 --Spellbook of Judgement
27770341 0 --Super Rejuvenation
42829885 0 --The Forceful Sentry
11110587 0 --That Grass Looks Greener
94220427 0 --Rank-Up-Magic Argent Chaos Force
54447022 0 --Soul Charge
28566710 0 --Last Turn TRAPS CARDS
27174286 0 --Return from the Different Dimension
93016201 0 --Royal Oppression
57585212 0 --Self-Destruct Button
3280747 0 --Sixth Sense
35316708 0 --Time Seal
64697231 0 --Trap Dustshot
80604091 0 --Ultimate Offering
80604092 0 --Ultimate Offering
5851097 0 --Vanity's Emptiness
#Limited TCG
7902349 1 --Left Arm of the forbidden one MAIN DECK MONSTERS
44519536 1 --Left Leg of the forbidden one
70903634 1 --Right Arm of the forbidden one
8124921 1 --Right Leg of the forbidden one
65518099 1 --Qliporth Scout
33396948 1 --Exxodia the Forbidden One
65192027 1 --Dark Armed Dragon
78868119 1 --Deep Sea Diva
64034255 1 --Genex Ally birdman
20758643 1 --Graff, Malembrance of the Burning Abyss
99177923 1 --Infernity Archfiend
68184115 1 --Inzektor DragonFly
16226786 1 --Night Assailant
88264978 1 --Red-eyes Darkness Metal Dragon
61740673 1 --Imperial Order
10802915 1 --Tour Guide From the Underworld
81275020 1 --Speedroid Terrortop
57143342 1 --Cir, Malebranche of the Burning Abyss
96570609 1 --Ether the Heavenly monarch
38572779 1 --Miscellaneousaurus
78872731 1 --Zoodiac Ratpier
4474060 1 --SPYRAL Gear - Drone
78080961 1 --SPYRAL Quik-Fix
68819554 1 --Performage Damage Juggler
58984738 1 --Dinomight Knight, the True Dracofighter
45222299 1 --Evigishki Gustkraken
11877465 1 --Evigishki Mind Augus
90307777 1 --Shurit, Strategist of the Nekroz
89463537 1 --Nekroz of Unicore
40044918 1 --Elemental Hero Stratos
33508719 1 --Morphing Jar
28985331 1 --Armageddon Knight
14536035 1 --Dark Grepher
69015963 1 --Cyber Stein
82301904 1 --Chaos Emperor Dragon - Envoy of the End
18239909 1 --Ignister Prominence, the Blasting Dracoslayer EXTRA DECK MONSTERS
20366274 1 --El Shaddoll Construct
48063985 1 --Ritual Beast Ulti-Cannahawk
39512984 1 --Gem-Knight Master Diamond
70583986 1 --Dewloren, Tiger King of the Ice Barrier
52687916 1 --Trishula, Dragon of the Ice Barrier
27552504 1 --Beatrice, Lady of Eternal
24094258 1 --Heavymetalfoes Electrumite
74586817 1 --Psy-Framelord Omega
14087893 1 --Book of Moon SPELLS CARDS
81674782 1 --Dimensional Fissure
95308449 1 --Final Countdown
81439173 1 --Foolish Burial
66957584 1 --Infernity Launcher
43040603 1 --Monster Gate
33782437 1 --One Day of Peace
2295440 1 --One for One
12580477 1 --Raigeki
53129443 1 --Dark Hole
32807846 1 --Reinforcement of the Army
74845897 1 --Rekindling
72405967 1 --Royal Tribute
45305419 1 --Symbol of Heritage
14733538 1 --Draco Face-off
73468603 1 --Set Rotation
58577036 1 --Reasoning
27970830 1 --Gateway of the Six
7394770 1 --Brilliant Fusion
70368879 1 --Upstart Goblin
83764718 1 --Monster Reborn
83764719 1 --Monster Reborn
71344451 1 --Slash Draw
75500286 1 --Gold Sarcophagus
67723438 1 --Emergency Teleporter
22842126 1 --Phanteism of the Monarchs
15854426 1 --Divine Wind of the Mist Valley
54631665 1 --SPYRAL Resort
71650854 1 --Magical Mid-Breaker Field
91623717 1 --Chain Strike
8949584 1 --A Hero Lives
72892473 1 --Card Destruction
52340444 1 --Sky Striker Mecha - Hornet Drones
48130397 1 --Super Polymerization
73915051 1 --Scapegoat
32723153 1 --Magical Explosion --TRAP CARDS
35125879 1 --True King's Return
82732705 1 --Skill Drain
73599290 1 --Soul Drain
30241314 1 --Macro Cosmos
17078030 1 --Wall of Revealing light
84749824 1 --Solemn Warning
41420027 1 --Solemn Judgement
#Semi limited TCG
92746535 2 --Luster Pendulum, the Dracoslayer
28297833 2 --Necroface
9411399 2 --Destiny HERO - Malicious
73628505 2 --Terraforming
!2018.12 TCG !2018.12 TCG
#forbidden #forbidden
05043010 0 --ファイアウォール・ドラゴン 05043010 0 --ファイアウォール・ドラゴン
......
Subproject commit bbc8e973e3d206d51d1be3ddd201cf071e517ba1 Subproject commit e1b3239967a34da9f7bcd42a62778e785fbaf321
Subproject commit d38fcb65d5b94661b84fc469415cc600a06a2ba0 Subproject commit 2ce1259b08b57f15f636e99a6a02172cbf0dffd3
...@@ -858,7 +858,7 @@ ...@@ -858,7 +858,7 @@
!setname 0xd4 伯吉斯异兽 バージェストマ !setname 0xd4 伯吉斯异兽 バージェストマ
!setname 0xd5 但丁 ダンテ !setname 0xd5 但丁 ダンテ
!setname 0xd6 破坏剑 破壊剣 !setname 0xd6 破坏剑 破壊剣
!setname 0xd7 巴斯达·布雷达 バスター・ブレイダー !setname 0xd7 破坏之剑士 バスター・ブレイダー
!setname 0xd8 雾动机龙 ダイナミスト !setname 0xd8 雾动机龙 ダイナミスト
!setname 0xd9 不知火 !setname 0xd9 不知火
!setname 0x10d9 妖刀-不知火 妖刀-不知火 !setname 0x10d9 妖刀-不知火 妖刀-不知火
...@@ -952,3 +952,4 @@ ...@@ -952,3 +952,4 @@
!setname 0x123 蔷薇龙 ローズ・ドラゴン !setname 0x123 蔷薇龙 ローズ・ドラゴン
!setname 0x124 机械天使 機械天使 !setname 0x124 机械天使 機械天使
!setname 0x125 笑容 スマイル !setname 0x125 笑容 スマイル
!setname 0x126 时间怪盗 Time Thief
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