Commit d50cf377 authored by wind2009's avatar wind2009

Merge remote-tracking branch 'upstream/master'

parents 967bfd6a 82542f13
......@@ -153,6 +153,10 @@ public:
static int DecodeUTF8(const char* src, wchar_t(&dst)[N]) {
return DecodeUTF8String(src, dst, N);
}
template<size_t N, typename T>
static void NullTerminate(T(&str)[N]) {
str[N - 1] = 0;
}
static int GetVal(const wchar_t* pstr) {
unsigned int ret = 0;
while(*pstr >= L'0' && *pstr <= L'9') {
......
......@@ -31,7 +31,6 @@
#include <arpa/inet.h>
#include <netdb.h>
#include <unistd.h>
#include <locale.h>
#define SD_BOTH 2
#define SOCKET int
......
......@@ -1757,7 +1757,7 @@ bool DeckBuilder::push_main(code_pointer pointer, int seq) {
if(pointer->second.type & (TYPE_FUSION | TYPE_SYNCHRO | TYPE_XYZ | TYPE_LINK))
return false;
auto& container = deckManager.current_deck.main;
int maxc = mainGame->is_siding ? DECK_MAX_SIZE + 4 : DECK_MAX_SIZE;
int maxc = mainGame->is_siding ? DECK_MAX_SIZE + 5 : DECK_MAX_SIZE;
if((int)container.size() >= maxc)
return false;
if(seq >= 0 && seq < (int)container.size())
......
......@@ -173,7 +173,7 @@ int DeckManager::LoadDeck(Deck& deck, int* dbuf, int mainc, int sidec, bool is_p
}
if(cd.type & TYPE_TOKEN)
continue;
if(deck.side.size() < 15)
if(deck.side.size() < SIDE_MAX_SIZE)
deck.side.push_back(dataManager.GetCodePointer(code));
}
return errorcode;
......@@ -242,6 +242,8 @@ bool DeckManager::LoadDeck(irr::gui::IGUIComboBox* cbCategory, irr::gui::IGUICom
bool res = LoadDeck(filepath, is_packlist);
if(res && mainGame->is_building)
mainGame->deckBuilder.RefreshPackListScroll();
if (!res)
current_deck.clear();
return res;
}
FILE* DeckManager::OpenDeckFile(const wchar_t* file, const char* mode) {
......@@ -280,8 +282,8 @@ bool DeckManager::LoadDeck(const wchar_t* file, bool is_packlist) {
}
if(!reader)
return false;
size_t size = reader->getSize();
if(size >= 0x20000) {
auto size = reader->getSize();
if(size >= (int)sizeof deckBuffer) {
reader->drop();
return false;
}
......@@ -296,7 +298,7 @@ bool DeckManager::LoadDeck(std::istringstream* deckStream, bool is_packlist) {
int cardlist[300];
bool is_side = false;
std::string linebuf;
while(std::getline(*deckStream, linebuf) && ct < 300) {
while(std::getline(*deckStream, linebuf, '\n') && ct < 300) {
if(linebuf[0] == '!') {
is_side = true;
continue;
......
......@@ -19,8 +19,6 @@ unsigned char DuelClient::selftype = 0;
bool DuelClient::is_host = false;
event_base* DuelClient::client_base = 0;
bufferevent* DuelClient::client_bev = 0;
unsigned char DuelClient::duel_client_read[SIZE_NETWORK_BUFFER];
int DuelClient::read_len = 0;
unsigned char DuelClient::duel_client_write[SIZE_NETWORK_BUFFER];
bool DuelClient::is_closing = false;
bool DuelClient::is_swapping = false;
......@@ -50,6 +48,7 @@ bool DuelClient::StartClient(unsigned int ip, unsigned short port, bool create_g
sin.sin_addr.s_addr = htonl(ip);
sin.sin_port = htons(port);
client_bev = bufferevent_socket_new(client_base, -1, BEV_OPT_CLOSE_ON_FREE);
bufferevent_setwatermark(client_bev, EV_READ, 3, 0);
bufferevent_setcb(client_bev, ClientRead, NULL, ClientEvent, (void*)create_game);
if (bufferevent_socket_connect(client_bev, (sockaddr*)&sin, sizeof(sin)) < 0) {
bufferevent_free(client_bev);
......@@ -100,24 +99,23 @@ void DuelClient::StopClient(bool is_exiting) {
void DuelClient::ClientRead(bufferevent* bev, void* ctx) {
evbuffer* input = bufferevent_get_input(bev);
int len = evbuffer_get_length(input);
unsigned short packet_len = 0;
while(true) {
if(len < 2)
return;
evbuffer_copyout(input, &packet_len, 2);
unsigned char* duel_client_read = new unsigned char[std::min(len, SIZE_NETWORK_BUFFER)];
unsigned short packet_len;
while (len >= 2) {
evbuffer_copyout(input, &packet_len, sizeof packet_len);
if (packet_len + 2 > SIZE_NETWORK_BUFFER) {
delete[] duel_client_read;
ClientEvent(bev, BEV_EVENT_ERROR, 0);
return;
}
if(len < packet_len + 2)
return;
if (packet_len < 1)
return;
read_len = evbuffer_remove(input, duel_client_read, packet_len + 2);
if (len < packet_len + 2)
break;
int read_len = evbuffer_remove(input, duel_client_read, packet_len + 2);
if (read_len >= 3)
HandleSTOCPacketLan(&duel_client_read[2], read_len - 2);
len -= packet_len + 2;
}
delete[] duel_client_read;
}
void DuelClient::ClientEvent(bufferevent *bev, short events, void *ctx) {
if (events & BEV_EVENT_CONNECTED) {
......@@ -823,10 +821,11 @@ void DuelClient::HandleSTOCPacketLan(unsigned char* data, int len) {
soundManager.PlaySoundEffect(SOUND_PLAYER_ENTER);
STOC_HS_PlayerEnter packet;
std::memcpy(&packet, pdata, STOC_HS_PlayerEnter_size);
const auto* pkt = &packet;
auto pkt = &packet;
if(pkt->pos > 3)
break;
wchar_t name[20];
BufferIO::NullTerminate(pkt->name);
BufferIO::CopyWStr(pkt->name, name, 20);
if(mainGame->dInfo.isTag) {
if(pkt->pos == 0)
......@@ -1515,7 +1514,7 @@ int DuelClient::ClientAnalyze(unsigned char* msg, unsigned int len) {
wchar_t ynbuf[256];
myswprintf(ynbuf, dataManager.GetSysString(221), dataManager.FormatLocation(l, s), dataManager.GetName(code));
myswprintf(textBuffer, L"%ls\n%ls\n%ls", event_string, ynbuf, dataManager.GetSysString(223));
} else if(desc < 2048) {
} else if(desc <= MAX_STRING_ID) {
myswprintf(textBuffer, dataManager.GetSysString(desc), dataManager.GetName(code));
} else {
myswprintf(textBuffer, dataManager.GetDesc(desc), dataManager.GetName(code));
......
......@@ -21,8 +21,6 @@ private:
static bool is_host;
static event_base* client_base;
static bufferevent* client_bev;
static unsigned char duel_client_read[SIZE_NETWORK_BUFFER];
static int read_len;
static unsigned char duel_client_write[SIZE_NETWORK_BUFFER];
static bool is_closing;
static bool is_swapping;
......@@ -56,13 +54,12 @@ public:
template<typename ST>
static void SendPacketToServer(unsigned char proto, ST& st) {
auto p = duel_client_write;
int blen = sizeof(ST);
if (blen > MAX_DATA_SIZE)
if ((int)sizeof(ST) > MAX_DATA_SIZE)
return;
BufferIO::WriteInt16(p, (short)(1 + blen));
BufferIO::WriteInt16(p, (short)(1 + sizeof(ST)));
BufferIO::WriteInt8(p, proto);
std::memcpy(p, &st, blen);
bufferevent_write(client_bev, duel_client_write, blen + 3);
std::memcpy(p, &st, sizeof(ST));
bufferevent_write(client_bev, duel_client_write, sizeof(ST) + 3);
}
static void SendBufferToServer(unsigned char proto, void* buffer, size_t len) {
auto p = duel_client_write;
......
......@@ -2,6 +2,7 @@
#include "game.h"
#include "data_manager.h"
#include <event2/thread.h>
#include <locale.h>
#include <memory>
#ifdef __APPLE__
#import <CoreFoundation/CoreFoundation.h>
......
......@@ -9,8 +9,6 @@ event_base* NetServer::net_evbase = 0;
event* NetServer::broadcast_ev = 0;
evconnlistener* NetServer::listener = 0;
DuelMode* NetServer::duel_mode = 0;
unsigned char NetServer::net_server_read[SIZE_NETWORK_BUFFER];
int NetServer::read_len = 0;
unsigned char NetServer::net_server_write[SIZE_NETWORK_BUFFER];
unsigned short NetServer::last_sent = 0;
......@@ -109,6 +107,7 @@ void NetServer::ServerAccept(evconnlistener* listener, evutil_socket_t fd, socka
dp.type = 0xff;
dp.bev = bev;
users[bev] = dp;
bufferevent_setwatermark(bev, EV_READ, 3, 0);
bufferevent_setcb(bev, ServerEchoRead, NULL, ServerEchoEvent, NULL);
bufferevent_enable(bev, EV_READ);
}
......@@ -123,24 +122,23 @@ void NetServer::ServerAcceptError(evconnlistener* listener, void* ctx) {
void NetServer::ServerEchoRead(bufferevent *bev, void *ctx) {
evbuffer* input = bufferevent_get_input(bev);
int len = evbuffer_get_length(input);
unsigned short packet_len = 0;
while(true) {
if(len < 2)
return;
evbuffer_copyout(input, &packet_len, 2);
unsigned char* net_server_read = new unsigned char[std::min(len, SIZE_NETWORK_BUFFER)];
unsigned short packet_len;
while (len >= 2) {
evbuffer_copyout(input, &packet_len, sizeof packet_len);
if (packet_len + 2 > SIZE_NETWORK_BUFFER) {
delete[] net_server_read;
ServerEchoEvent(bev, BEV_EVENT_ERROR, 0);
return;
}
if (len < packet_len + 2)
return;
if (packet_len < 1)
return;
read_len = evbuffer_remove(input, net_server_read, packet_len + 2);
break;
int read_len = evbuffer_remove(input, net_server_read, packet_len + 2);
if (read_len >= 3)
HandleCTOSPacket(&users[bev], &net_server_read[2], read_len - 2);
len -= packet_len + 2;
}
delete[] net_server_read;
}
void NetServer::ServerEchoEvent(bufferevent* bev, short events, void* ctx) {
if (events & (BEV_EVENT_EOF | BEV_EVENT_ERROR)) {
......@@ -249,7 +247,8 @@ void NetServer::HandleCTOSPacket(DuelPlayer* dp, unsigned char* data, int len) {
return;
CTOS_PlayerInfo packet;
std::memcpy(&packet, pdata, sizeof packet);
const auto* pkt = &packet;
auto pkt = &packet;
BufferIO::NullTerminate(pkt->name);
BufferIO::CopyWStr(pkt->name, dp->name, 20);
break;
}
......@@ -271,10 +270,10 @@ void NetServer::HandleCTOSPacket(DuelPlayer* dp, unsigned char* data, int len) {
duel_mode = new TagDuel();
duel_mode->etimer = event_new(net_evbase, 0, EV_TIMEOUT | EV_PERSIST, TagDuel::TagTimer, duel_mode);
}
if(pkt->info.rule > 5)
pkt->info.rule = 5;
if(pkt->info.mode > 2)
pkt->info.mode = 0;
if(pkt->info.rule > CURRENT_RULE)
pkt->info.rule = CURRENT_RULE;
if(pkt->info.mode > MODE_TAG)
pkt->info.mode = MODE_SINGLE;
unsigned int hash = 1;
for(auto lfit = deckManager._lfList.begin(); lfit != deckManager._lfList.end(); ++lfit) {
if(pkt->info.lflist == lfit->hash) {
......@@ -284,8 +283,9 @@ void NetServer::HandleCTOSPacket(DuelPlayer* dp, unsigned char* data, int len) {
}
if(hash == 1)
pkt->info.lflist = deckManager._lfList[0].hash;
std::memcpy(pdata, &packet, sizeof packet);
duel_mode->host_info = pkt->info;
BufferIO::NullTerminate(pkt->name);
BufferIO::NullTerminate(pkt->pass);
BufferIO::CopyWStr(pkt->name, duel_mode->name, 20);
BufferIO::CopyWStr(pkt->pass, duel_mode->pass, 20);
duel_mode->JoinGame(dp, 0, true);
......
......@@ -18,8 +18,6 @@ private:
static event* broadcast_ev;
static evconnlistener* listener;
static DuelMode* duel_mode;
static unsigned char net_server_read[SIZE_NETWORK_BUFFER];
static int read_len;
static unsigned char net_server_write[SIZE_NETWORK_BUFFER];
static unsigned short last_sent;
......@@ -50,15 +48,14 @@ public:
template<typename ST>
static void SendPacketToPlayer(DuelPlayer* dp, unsigned char proto, ST& st) {
auto p = net_server_write;
int blen = sizeof(ST);
if (blen > MAX_DATA_SIZE)
if ((int)sizeof(ST) > MAX_DATA_SIZE)
return;
BufferIO::WriteInt16(p, (short)(1 + blen));
BufferIO::WriteInt16(p, (short)(1 + sizeof(ST)));
BufferIO::WriteInt8(p, proto);
std::memcpy(p, &st, blen);
last_sent = blen + 3;
std::memcpy(p, &st, sizeof(ST));
last_sent = sizeof(ST) + 3;
if (dp)
bufferevent_write(dp->bev, net_server_write, blen + 3);
bufferevent_write(dp->bev, net_server_write, sizeof(ST) + 3);
}
static void SendBufferToPlayer(DuelPlayer* dp, unsigned char proto, void* buffer, size_t len) {
auto p = net_server_write;
......
......@@ -34,7 +34,7 @@ void SingleDuel::JoinGame(DuelPlayer* dp, unsigned char* pdata, bool is_creater)
}
CTOS_JoinGame packet;
std::memcpy(&packet, pdata, sizeof packet);
const auto* pkt = &packet;
auto pkt = &packet;
if(pkt->version != PRO_VERSION) {
STOC_ErrorMsg scem;
scem.msg = ERRMSG_VERERROR;
......@@ -44,6 +44,7 @@ void SingleDuel::JoinGame(DuelPlayer* dp, unsigned char* pdata, bool is_creater)
return;
}
wchar_t jpass[20];
BufferIO::NullTerminate(pkt->pass);
BufferIO::CopyWStr(pkt->pass, jpass, 20);
if(wcscmp(jpass, pass)) {
STOC_ErrorMsg scem;
......@@ -1417,7 +1418,7 @@ int SingleDuel::Analyze(unsigned char* msgbuffer, unsigned int len) {
return 0;
}
void SingleDuel::GetResponse(DuelPlayer* dp, unsigned char* pdata, unsigned int len) {
byte resb[SIZE_RETURN_VALUE];
byte resb[SIZE_RETURN_VALUE]{};
if (len > SIZE_RETURN_VALUE)
len = SIZE_RETURN_VALUE;
std::memcpy(resb, pdata, len);
......
......@@ -38,7 +38,7 @@ void TagDuel::JoinGame(DuelPlayer* dp, unsigned char* pdata, bool is_creater) {
}
CTOS_JoinGame packet;
std::memcpy(&packet, pdata, sizeof packet);
const auto* pkt = &packet;
auto pkt = &packet;
if(pkt->version != PRO_VERSION) {
STOC_ErrorMsg scem;
scem.msg = ERRMSG_VERERROR;
......@@ -48,6 +48,7 @@ void TagDuel::JoinGame(DuelPlayer* dp, unsigned char* pdata, bool is_creater) {
return;
}
wchar_t jpass[20];
BufferIO::NullTerminate(pkt->pass);
BufferIO::CopyWStr(pkt->pass, jpass, 20);
if(wcscmp(jpass, pass)) {
STOC_ErrorMsg scem;
......@@ -1532,7 +1533,7 @@ int TagDuel::Analyze(unsigned char* msgbuffer, unsigned int len) {
return 0;
}
void TagDuel::GetResponse(DuelPlayer* dp, unsigned char* pdata, unsigned int len) {
byte resb[SIZE_RETURN_VALUE];
byte resb[SIZE_RETURN_VALUE]{};
if (len > SIZE_RETURN_VALUE)
len = SIZE_RETURN_VALUE;
std::memcpy(resb, pdata, len);
......
#[2024.4][2024.4 TCG][2024.1][2023.10][2023.7][2023.4][2023.1][2022.10][2022.7][2022.4][2022.1][2021.10][2021.7][2021.4][2021.1][2020.10][2020.7][2020.4][2020.1][2019.10][2019.7][2019.4][2019.1][2018.10][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][2024.1 TCG][2023.9 TCG][2023.6 TCG][2023.2 TCG][2022.12 TCG][2022.10 TCG][2022.5 TCG][2022.2 TCG][2021.10 TCG][2021.7 TCG][2021.3 TCG][2020.12 TCG][2020.9 TCG][2020.6 TCG][2020.4 TCG][2020.1 TCG][2019.10 TCG][2019.7 TCG][2019.4 TCG][2019.1 TCG][2018.12 TCG][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]
!2024.4
#[2024.7][2024.4 TCG][2024.4][2024.1][2023.10][2023.7][2023.4][2023.1][2022.10][2022.7][2022.4][2022.1][2021.10][2021.7][2021.4][2021.1][2020.10][2020.7][2020.4][2020.1][2019.10][2019.7][2019.4][2019.1][2018.10][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][2024.1 TCG][2023.9 TCG][2023.6 TCG][2023.2 TCG][2022.12 TCG][2022.10 TCG][2022.5 TCG][2022.2 TCG][2021.10 TCG][2021.7 TCG][2021.3 TCG][2020.12 TCG][2020.9 TCG][2020.6 TCG][2020.4 TCG][2020.1 TCG][2019.10 TCG][2019.7 TCG][2019.4 TCG][2019.1 TCG][2018.12 TCG][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]
!2024.7
#forbidden
91869203 0 --アマゾネスの射手
20663556 0 --イレカエル
44910027 0 --ヴィクトリー・ドラゴン
51858306 0 --エクリプス・ワイバーン
07563579 0 --Emヒグルミ
62242678 0 --琰魔竜王 レッド・デーモン・カラミティ
34945480 0 --外神アザトート
95727991 0 --カタパルト・タートル
08903700 0 --儀式魔人リリーサー
11384280 0 --キャノン・ソルジャー
17412721 0 --旧神ノーデン
......@@ -46,7 +46,6 @@
23558733 0 --フェニキシアン・クラスター・アマリリス
09929398 0 --BF-朧影のゴウフウ
70369116 0 --捕食植物ヴェルテ・アナコンダ
31178212 0 --マジェスペクター・ユニコーン
63101919 0 --マジックテンペスター
34206604 0 --魔導サイエンティスト
14702066 0 --メガキャノン・ソルジャー
......@@ -60,6 +59,7 @@
41482598 0 --悪夢の蜃気楼
44763025 0 --いたずら好きな双子悪魔
17375316 0 --押収
35059553 0 --カイザーコロシアム
74191942 0 --苦渋の選択
42829885 0 --強引な番兵
45986603 0 --強奪
......@@ -91,11 +91,11 @@
#limit
76794549 1 --アストログラフ・マジシャン
40177746 1 --イーバ
53804307 1 --焔征竜-ブラスター
27552504 1 --永遠の淑女 ベアトリーチェ
29301450 1 --SPリトルナイト
07563579 1 --Emヒグルミ
17330916 1 --EMモンキーボード
90411554 1 --巌征竜-レドックス
68304193 1 --クシャトリラ・ユニコーン
67441435 1 --グローアップ・バルブ
12289247 1 --クロノグラフ・マジシャン
99937011 1 --剣神官ムドラ
38814750 1 --PSYフレームギア・γ
......@@ -105,22 +105,21 @@
78872731 1 --十二獣モルモラット
06602300 1 --重爆撃禽 ボム・フェネクス
63542003 1 --宿神像ケルドウ
78080961 1 --SPYRAL-ジーニアス
09674034 1 --スネークアイ・エクセル
81275020 1 --SRベイゴマックス
13533678 1 --スプライト・ジェット
76145933 1 --スプライト・ブルー
82385847 1 --ダイナレスラー・パンクラトプス
90361010 1 --超重武者装留イワトオシ
15291624 1 --超雷龍-サンダー・ドラゴン
04928565 1 --ティアラメンツ・クシャトリラ
00572850 1 --ティアラメンツ・シェイレーン
37961969 1 --ティアラメンツ・ハゥフニス
74078255 1 --ティアラメンツ・メイルゥ
73956664 1 --ティアラメンツ・レイノハート
90953320 1 --TG ハイパー・ライブラリアン
75433814 1 --No.40 ギミック・パペット-ヘブンズ・ストリングス
90448279 1 --天霆號アーゼウス
17266660 1 --朱光の宣告者
26400609 1 --瀑征竜-タイダル
06637331 1 --深淵の獣ドルイドヴルム
72656408 1 --深淵の獣バルドレイク
33854624 1 --深淵の獣マグナムート
......@@ -129,12 +128,11 @@
07902349 1 --封印されし者の左腕
08124921 1 --封印されし者の右足
70903634 1 --封印されし者の右腕
35272499 1 --捕食植物オフリス・スコーピオ
94689206 1 --ブロックドラゴン
24094258 1 --ヘビーメタルフォーゼ・エレクトラム
31178212 1 --マジェスペクター・ユニコーン
04423206 1 --M.X-セイバー インヴォーカー
33508719 1 --メタモルポット
89399912 1 --嵐征竜-テンペスト
92746535 1 --竜剣士ラスターP
77103950 1 --壱世壊=ペルレイノ
33782437 1 --一時休戦
......@@ -145,6 +143,7 @@
84211599 1 --金満で謙虚な壺
23701465 1 --原初の種
80845034 1 --“罪宝狩りの悪魔”
30336082 1 --盃満ちる燦幻荘
83764718 1 --死者蘇生
46060017 1 --十二獣の会局
15443125 1 --スプライト・スターター
......@@ -167,21 +166,23 @@
27970830 1 --六武の門
02295440 1 --ワン・フォー・ワン
90846359 1 --群雄割拠
23516703 1 --サモンリミッター
82732705 1 --スキルドレイン
24207889 1 --センサー万別
35316708 1 --刻の封印
21076084 1 --トリックスター・リンカーネイション
23002292 1 --レッド・リブート
#semi limit
29301450 2 --SPリトルナイト
02526224 2 --炎王神獣 キリン
09674034 2 --スネークアイ・エクセル
94677445 2 --星杯の神子イヴ
53804307 2 --焔征竜-ブラスター
90411554 2 --巌征竜-レドックス
78080961 2 --SPYRAL-ジーニアス
91800273 2 --ディメンション・アトラクター
09411399 2 --D-HERO ディアボリックガイ
26400609 2 --瀑征竜-タイダル
89399912 2 --嵐征竜-テンペスト
65734501 2 --RACEエアホイスター
35726888 2 --おろかな副葬
35059553 2 --カイザーコロシアム
85106525 2 --篝火
67723438 2 --緊急テレポート
49238328 2 --強欲で金満な壺
35261759 2 --強欲で貪欲な壺
......@@ -394,6 +395,201 @@
21347668 2 --Purrely Sleepy Memory
92107604 2 --Runick Fountain
!2024.4
#forbidden
91869203 0 --アマゾネスの射手
20663556 0 --イレカエル
44910027 0 --ヴィクトリー・ドラゴン
51858306 0 --エクリプス・ワイバーン
07563579 0 --Emヒグルミ
62242678 0 --琰魔竜王 レッド・デーモン・カラミティ
34945480 0 --外神アザトート
08903700 0 --儀式魔人リリーサー
11384280 0 --キャノン・ソルジャー
17412721 0 --旧神ノーデン
32909498 0 --クシャトリラ・フェンリル
50588353 0 --水晶機巧-ハリファイバー
62320425 0 --古衛兵アギド
25926710 0 --古尖兵ケルベク
03040496 0 --混沌魔龍 カオス・ルーラー
34124316 0 --サイバーポッド
02563463 0 --流離のグリフォンライダー
88071625 0 --The tyrant NEPTUNE
52653092 0 --SNo.0 ホープ・ゼアル
48905153 0 --十二獣ドランシア
85115440 0 --十二獣ブルホーン
59537380 0 --守護竜アガーペイン
86148577 0 --守護竜エルピィ
88581108 0 --真竜皇V.F.D.
21377582 0 --真竜剣皇マスターP
27381364 0 --スプライト・エルフ
16923472 0 --ゼンマイハンター
15341821 0 --ダンディライオン
77679716 0 --超重武者装留ブレイク・アーマー
37818794 0 --超魔導竜騎士-ドラグーン・オブ・レッドアイズ
92731385 0 --ティアラメンツ・キトカロス
69015963 0 --デビル・フランケン
79875176 0 --トゥーン・キャノン・ソルジャー
75732622 0 --トーチ・ゴーレム
22593417 0 --トポロジック・ガンブラー・ドラゴン
39064822 0 --トロイメア・ゴブリン
03679218 0 --トロイメア・マーメイド
54719828 0 --No.16 色の支配者ショック・ルーラー
63504681 0 --No.86 HC ロンゴミアント
58820923 0 --No.95 ギャラクシーアイズ・ダークマター・ドラゴン
78706415 0 --ファイバーポッド
93369354 0 --フィッシュボーグ-ガンナー
23558733 0 --フェニキシアン・クラスター・アマリリス
09929398 0 --BF-朧影のゴウフウ
70369116 0 --捕食植物ヴェルテ・アナコンダ
31178212 0 --マジェスペクター・ユニコーン
63101919 0 --マジックテンペスター
34206604 0 --魔導サイエンティスト
14702066 0 --メガキャノン・ソルジャー
96782886 0 --メンタルマスター
90809975 0 --餅カエル
83152482 0 --ユニオン・キャリアー
34086406 0 --ラヴァルバル・チェイン
85243784 0 --リンクロス
73356503 0 --烈風の結界像
57421866 0 --レベル・スティーラー
41482598 0 --悪夢の蜃気楼
44763025 0 --いたずら好きな双子悪魔
17375316 0 --押収
74191942 0 --苦渋の選択
42829885 0 --強引な番兵
45986603 0 --強奪
55144522 0 --強欲な壺
23557835 0 --次元融合
31423101 0 --神剣-フェニックスブレード
57953380 0 --生還の宝札
54447022 0 --ソウル・チャージ
60682203 0 --大寒波
69243953 0 --蝶の短剣-エルマ
79571449 0 --天使の施し
63789924 0 --盗人の煙玉
70828912 0 --早すぎた埋葬
42703248 0 --ハリケーン
76375976 0 --魔鍾洞
34906152 0 --マスドライバー
46411259 0 --突然変異
85602018 0 --遺言状
27174286 0 --異次元からの帰還
05851097 0 --虚無空間
93016201 0 --王宮の弾圧
61740673 0 --王宮の勅命
03280747 0 --第六感
64697231 0 --ダスト・シュート
80604091 0 --血の代償
32723153 0 --マジカル・エクスプロージョン
17178486 0 --ライフチェンジャー
28566710 0 --ラストバトル!
#limit
76794549 1 --アストログラフ・マジシャン
40177746 1 --イーバ
53804307 1 --焔征竜-ブラスター
17330916 1 --EMモンキーボード
90411554 1 --巌征竜-レドックス
68304193 1 --クシャトリラ・ユニコーン
67441435 1 --グローアップ・バルブ
12289247 1 --クロノグラフ・マジシャン
99937011 1 --剣神官ムドラ
38814750 1 --PSYフレームギア・γ
74586817 1 --PSYフレームロード・Ω
32731036 1 --深淵の獣ルベリオン
36521307 1 --斬機サーキュラー
78872731 1 --十二獣モルモラット
06602300 1 --重爆撃禽 ボム・フェネクス
63542003 1 --宿神像ケルドウ
78080961 1 --SPYRAL-ジーニアス
81275020 1 --SRベイゴマックス
13533678 1 --スプライト・ジェット
76145933 1 --スプライト・ブルー
82385847 1 --ダイナレスラー・パンクラトプス
90361010 1 --超重武者装留イワトオシ
15291624 1 --超雷龍-サンダー・ドラゴン
04928565 1 --ティアラメンツ・クシャトリラ
00572850 1 --ティアラメンツ・シェイレーン
37961969 1 --ティアラメンツ・ハゥフニス
74078255 1 --ティアラメンツ・メイルゥ
73956664 1 --ティアラメンツ・レイノハート
90953320 1 --TG ハイパー・ライブラリアン
90448279 1 --天霆號アーゼウス
17266660 1 --朱光の宣告者
26400609 1 --瀑征竜-タイダル
06637331 1 --深淵の獣ドルイドヴルム
72656408 1 --深淵の獣バルドレイク
33854624 1 --深淵の獣マグナムート
33396948 1 --封印されしエクゾディア
44519536 1 --封印されし者の左足
07902349 1 --封印されし者の左腕
08124921 1 --封印されし者の右足
70903634 1 --封印されし者の右腕
35272499 1 --捕食植物オフリス・スコーピオ
94689206 1 --ブロックドラゴン
24094258 1 --ヘビーメタルフォーゼ・エレクトラム
04423206 1 --M.X-セイバー インヴォーカー
33508719 1 --メタモルポット
89399912 1 --嵐征竜-テンペスト
92746535 1 --竜剣士ラスターP
77103950 1 --壱世壊=ペルレイノ
33782437 1 --一時休戦
01845204 1 --簡易融合
61292243 1 --EMERGENCY
19613556 1 --大嵐
81439173 1 --おろかな埋葬
84211599 1 --金満で謙虚な壺
23701465 1 --原初の種
80845034 1 --“罪宝狩りの悪魔”
83764718 1 --死者蘇生
46060017 1 --十二獣の会局
15443125 1 --スプライト・スターター
52340444 1 --閃刀機-ホーネットビット
32807846 1 --増援
72892473 1 --手札抹殺
73628505 1 --テラ・フォーミング
18144506 1 --ハーピィの羽根帚
21347668 1 --ピュアリィ・スリーピィメモリー
75500286 1 --封印の黄金櫃
52947044 1 --フュージョン・デステニー
07394770 1 --ブリリアント・フュージョン
73468603 1 --盆回し
93600443 1 --マスク・チェンジ・セカンド
65681983 1 --抹殺の指名者
71832012 1 --六世壊=パライゾス
36637374 1 --烙印開幕
44362883 1 --烙印融合
92107604 1 --神碑の泉
27970830 1 --六武の門
02295440 1 --ワン・フォー・ワン
90846359 1 --群雄割拠
82732705 1 --スキルドレイン
24207889 1 --センサー万別
35316708 1 --刻の封印
21076084 1 --トリックスター・リンカーネイション
23002292 1 --レッド・リブート
#semi limit
29301450 2 --SPリトルナイト
02526224 2 --炎王神獣 キリン
09674034 2 --スネークアイ・エクセル
94677445 2 --星杯の神子イヴ
91800273 2 --ディメンション・アトラクター
09411399 2 --D-HERO ディアボリックガイ
65734501 2 --RACEエアホイスター
35726888 2 --おろかな副葬
35059553 2 --カイザーコロシアム
67723438 2 --緊急テレポート
49238328 2 --強欲で金満な壺
35261759 2 --強欲で貪欲な壺
12580477 2 --サンダー・ボルト
48130397 2 --超融合
11110587 2 --隣の芝刈り
24224830 2 --墓穴の指名者
55584558 2 --ピュアリィ・デリシャスメモリー
56700100 2 --ピュアリィ・マイフレンド
14532163 2 --ライトニング・ストーム
92714517 2 --ビッグウェルカム・ラビュリンス
!2024.1
#forbidden
91869203 0 --アマゾネスの射手
......
......@@ -1222,3 +1222,5 @@
!setname 0x1b1 白森林 白き森
!setname 0x1b2 欢聚友伴 マルチャミー
!setname 0x1b3 徽记 エンブレーマ
!setname 0x1b4 时空 タキオン
!setname 0x1b5 蓝泪 青い涙
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