Commit 26c2156c authored by wind2009's avatar wind2009

Merge remote-tracking branch 'upstream/master' into develop

parents e8dbb49f fd189e5c
......@@ -47,7 +47,7 @@ static inline bool havePopupWindow() {
}
static inline void get_deck_file(wchar_t* ret) {
deckManager.GetDeckFile(ret, mainGame->cbDBCategory->getSelected(), mainGame->cbDBCategory->getText(), mainGame->cbDBDecks->getText());
DeckManager::GetDeckFile(ret, mainGame->cbDBCategory->getSelected(), mainGame->cbDBCategory->getText(), mainGame->cbDBDecks->getText());
}
static inline void load_current_deck(irr::gui::IGUIComboBox* cbCategory, irr::gui::IGUIComboBox* cbDeck) {
......@@ -184,7 +184,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
break;
wchar_t filepath[256];
get_deck_file(filepath);
if(deckManager.SaveDeck(deckManager.current_deck, filepath)) {
if(DeckManager::SaveDeck(deckManager.current_deck, filepath)) {
mainGame->stACMessage->setText(dataManager.GetSysString(1335));
mainGame->PopupElement(mainGame->wACMessage, 20);
is_modified = false;
......@@ -210,10 +210,10 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
}
int catesel = mainGame->cbDBCategory->getSelected();
wchar_t catepath[256];
deckManager.GetCategoryPath(catepath, catesel, mainGame->cbDBCategory->getText());
DeckManager::GetCategoryPath(catepath, catesel, mainGame->cbDBCategory->getText());
wchar_t filepath[256];
myswprintf(filepath, L"%ls/%ls.ydk", catepath, dname);
if(deckManager.SaveDeck(deckManager.current_deck, filepath)) {
if(DeckManager::SaveDeck(deckManager.current_deck, filepath)) {
mainGame->stACMessage->setText(dataManager.GetSysString(1335));
mainGame->PopupElement(mainGame->wACMessage, 20);
is_modified = false;
......@@ -393,7 +393,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
case BUTTON_NEW_CATEGORY: {
int catesel = 0;
const wchar_t* catename = mainGame->ebDMName->getText();
if(deckManager.CreateCategory(catename)) {
if(DeckManager::CreateCategory(catename)) {
mainGame->cbDBCategory->addItem(catename);
mainGame->lstCategories->addItem(catename);
catesel = mainGame->lstCategories->getItemCount() - 1;
......@@ -420,7 +420,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
int catesel = mainGame->lstCategories->getSelected();
const wchar_t* oldcatename = mainGame->lstCategories->getListItem(catesel);
const wchar_t* newcatename = mainGame->ebDMName->getText();
if(deckManager.RenameCategory(oldcatename, newcatename)) {
if(DeckManager::RenameCategory(oldcatename, newcatename)) {
mainGame->cbDBCategory->removeItem(catesel);
mainGame->cbDBCategory->addItem(newcatename);
mainGame->lstCategories->removeItem(catesel);
......@@ -449,7 +449,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
case BUTTON_DELETE_CATEGORY: {
int catesel = mainGame->lstCategories->getSelected();
const wchar_t* catename = mainGame->lstCategories->getListItem(catesel);
if(deckManager.DeleteCategory(catename)) {
if(DeckManager::DeleteCategory(catename)) {
mainGame->cbDBCategory->removeItem(catesel);
mainGame->lstCategories->removeItem(catesel);
catesel = 2;
......@@ -467,7 +467,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
case BUTTON_NEW_DECK: {
const wchar_t* deckname = mainGame->ebDMName->getText();
wchar_t catepath[256];
deckManager.GetCategoryPath(catepath, mainGame->cbDBCategory->getSelected(), mainGame->cbDBCategory->getText());
DeckManager::GetCategoryPath(catepath, mainGame->cbDBCategory->getSelected(), mainGame->cbDBCategory->getText());
wchar_t filepath[256];
myswprintf(filepath, L"%ls/%ls.ydk", catepath, deckname);
bool res = false;
......@@ -475,7 +475,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
deckManager.current_deck.main.clear();
deckManager.current_deck.extra.clear();
deckManager.current_deck.side.clear();
res = deckManager.SaveDeck(deckManager.current_deck, filepath);
res = DeckManager::SaveDeck(deckManager.current_deck, filepath);
RefreshDeckList();
ChangeCategory(mainGame->lstCategories->getSelected());
}
......@@ -532,7 +532,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
int decksel = mainGame->lstDecks->getSelected();
wchar_t filepath[256];
get_deck_file(filepath);
if(deckManager.DeleteDeck(filepath)) {
if(DeckManager::DeleteDeck(filepath)) {
mainGame->lstDecks->removeItem(decksel);
mainGame->cbDBDecks->removeItem(decksel);
decksel--;
......@@ -608,7 +608,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
}
bool res = false;
if(!FileSystem::IsFileExists(newfilepath)) {
res = deckManager.SaveDeck(deckManager.current_deck, newfilepath);
res = DeckManager::SaveDeck(deckManager.current_deck, newfilepath);
}
mainGame->lstCategories->setSelected(newcatename);
int catesel = mainGame->lstCategories->getSelected();
......@@ -709,7 +709,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
mainGame->cbDBDecks->setSelected(sel);
wchar_t filepath[256];
get_deck_file(filepath);
if(deckManager.DeleteDeck(filepath)) {
if(DeckManager::DeleteDeck(filepath)) {
mainGame->cbDBDecks->removeItem(sel);
int count = mainGame->cbDBDecks->getItemCount();
if(sel >= count)
......@@ -1004,7 +1004,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
break;
wchar_t filepath[256];
wchar_t catepath[256];
deckManager.GetCategoryPath(catepath, mainGame->lstCategories->getSelected(), mainGame->lstCategories->getListItem(mainGame->lstCategories->getSelected()));
DeckManager::GetCategoryPath(catepath, mainGame->lstCategories->getSelected(), mainGame->lstCategories->getListItem(mainGame->lstCategories->getSelected()));
myswprintf(filepath, L"%ls/%ls.ydk", catepath, mainGame->lstDecks->getListItem(decksel));
deckManager.LoadCurrentDeck(filepath, showing_pack);
RefreshPackListScroll();
......@@ -1608,7 +1608,7 @@ void DeckBuilder::RefreshDeckList() {
irr::gui::IGUIListBox* lstCategories = mainGame->lstCategories;
irr::gui::IGUIListBox* lstDecks = mainGame->lstDecks;
wchar_t catepath[256];
deckManager.GetCategoryPath(catepath, lstCategories->getSelected(), lstCategories->getListItem(lstCategories->getSelected()));
DeckManager::GetCategoryPath(catepath, lstCategories->getSelected(), lstCategories->getListItem(lstCategories->getSelected()));
lstDecks->clear();
mainGame->RefreshDeck(catepath, [lstDecks](const wchar_t* item) { lstDecks->addItem(item); });
}
......
......@@ -13,6 +13,7 @@ void DeckManager::LoadLFListSingle(const char* path) {
FILE* fp = std::fopen(path, "r");
char linebuf[256]{};
wchar_t strBuffer[256]{};
char str1[16]{};
if(fp) {
while(std::fgets(linebuf, sizeof linebuf, fp)) {
if(linebuf[0] == '#')
......@@ -32,10 +33,11 @@ void DeckManager::LoadLFListSingle(const char* path) {
continue;
unsigned int code = 0;
int count = -1;
if (std::sscanf(linebuf, "%9u%*[ ]%9d", &code, &count) != 2)
if (std::sscanf(linebuf, "%10s%*[ ]%1d", str1, &count) != 2)
continue;
if (count < 0 || count > 2)
continue;
code = std::strtoul(str1, nullptr, 10);
cur->content[code] = count;
cur->hash = cur->hash ^ ((code << 18) | (code >> 14)) ^ ((code << (27 + count)) | (code >> (5 - count)));
}
......@@ -139,13 +141,12 @@ unsigned int DeckManager::CheckDeck(const Deck& deck, unsigned int lfhash, int r
}
return 0;
}
int DeckManager::LoadDeck(Deck& deck, int* dbuf, int mainc, int sidec, bool is_packlist) {
uint32_t DeckManager::LoadDeck(Deck& deck, uint32_t dbuf[], int mainc, int sidec, bool is_packlist) {
deck.clear();
int code;
int errorcode = 0;
uint32_t errorcode = 0;
CardData cd;
for(int i = 0; i < mainc; ++i) {
code = dbuf[i];
auto code = dbuf[i];
if(!dataManager.GetData(code, &cd)) {
errorcode = code;
continue;
......@@ -168,7 +169,7 @@ int DeckManager::LoadDeck(Deck& deck, int* dbuf, int mainc, int sidec, bool is_p
}
}
for(int i = 0; i < sidec; ++i) {
code = dbuf[mainc + i];
auto code = dbuf[mainc + i];
if(!dataManager.GetData(code, &cd)) {
errorcode = code;
continue;
......@@ -182,22 +183,21 @@ int DeckManager::LoadDeck(Deck& deck, int* dbuf, int mainc, int sidec, bool is_p
}
return errorcode;
}
int DeckManager::LoadDeck(Deck& deck, std::istringstream& deckStream, bool is_packlist) {
size_t ct = 0;
int mainc = 0, sidec = 0, code = 0;
int cardlist[PACK_MAX_SIZE]{};
uint32_t DeckManager::LoadDeckFromStream(Deck& deck, std::istringstream& deckStream, bool is_packlist) {
int ct = 0;
int mainc = 0, sidec = 0;
uint32_t cardlist[PACK_MAX_SIZE]{};
bool is_side = false;
std::string linebuf;
while (std::getline(deckStream, linebuf, '\n') && ct < (sizeof cardlist / sizeof cardlist[0])) {
while (std::getline(deckStream, linebuf, '\n') && ct < PACK_MAX_SIZE) {
if (linebuf[0] == '!') {
is_side = true;
continue;
}
if (linebuf[0] < '0' || linebuf[0] > '9')
continue;
errno = 0;
code = std::strtol(linebuf.c_str(), nullptr, 10);
if (errno == ERANGE)
auto code = std::strtoul(linebuf.c_str(), nullptr, 10);
if (code >= UINT32_MAX)
continue;
cardlist[ct++] = code;
if (is_side)
......@@ -207,25 +207,25 @@ int DeckManager::LoadDeck(Deck& deck, std::istringstream& deckStream, bool is_pa
}
return LoadDeck(deck, cardlist, mainc, sidec, is_packlist);
}
bool DeckManager::LoadSide(Deck& deck, int* dbuf, int mainc, int sidec) {
std::unordered_map<int, int> pcount;
std::unordered_map<int, int> ncount;
bool DeckManager::LoadSide(Deck& deck, uint32_t dbuf[], int mainc, int sidec) {
std::unordered_map<uint32_t, int> pcount;
std::unordered_map<uint32_t, int> ncount;
for(size_t i = 0; i < deck.main.size(); ++i)
++pcount[deck.main[i]->first];
pcount[deck.main[i]->first]++;
for(size_t i = 0; i < deck.extra.size(); ++i)
++pcount[deck.extra[i]->first];
pcount[deck.extra[i]->first]++;
for(size_t i = 0; i < deck.side.size(); ++i)
++pcount[deck.side[i]->first];
pcount[deck.side[i]->first]++;
Deck ndeck;
LoadDeck(ndeck, dbuf, mainc, sidec);
if (ndeck.main.size() != deck.main.size() || ndeck.extra.size() != deck.extra.size() || ndeck.side.size() != deck.side.size())
return false;
for(size_t i = 0; i < ndeck.main.size(); ++i)
++ncount[ndeck.main[i]->first];
ncount[ndeck.main[i]->first]++;
for(size_t i = 0; i < ndeck.extra.size(); ++i)
++ncount[ndeck.extra[i]->first];
ncount[ndeck.extra[i]->first]++;
for(size_t i = 0; i < ndeck.side.size(); ++i)
++ncount[ndeck.side[i]->first];
ncount[ndeck.side[i]->first]++;
for (auto& cdit : ncount)
if (cdit.second != pcount[cdit.first])
return false;
......@@ -299,8 +299,8 @@ bool DeckManager::LoadCurrentDeck(const wchar_t* file, bool is_packlist) {
return false;
}
std::istringstream deckStream(deckBuffer);
LoadDeck(current_deck, deckStream, is_packlist);
return true; // the above LoadDeck has return value but we ignore it here for now
LoadDeckFromStream(current_deck, deckStream, is_packlist);
return true; // the above function has return value but we ignore it here for now
}
bool DeckManager::LoadCurrentDeck(int category_index, const wchar_t* category_name, const wchar_t* deckname) {
wchar_t filepath[256];
......
......@@ -47,21 +47,22 @@ public:
const wchar_t* GetLFListName(unsigned int lfhash);
const LFList* GetLFList(unsigned int lfhash);
unsigned int CheckDeck(const Deck& deck, unsigned int lfhash, int rule);
int LoadDeck(Deck& deck, int* dbuf, int mainc, int sidec, bool is_packlist = false);
int LoadDeck(Deck& deck, std::istringstream& deckStream, bool is_packlist = false);
bool LoadSide(Deck& deck, int* dbuf, int mainc, int sidec);
void GetCategoryPath(wchar_t* ret, int index, const wchar_t* text);
void GetDeckFile(wchar_t* ret, int category_index, const wchar_t* category_name, const wchar_t* deckname);
FILE* OpenDeckFile(const wchar_t* file, const char* mode);
irr::io::IReadFile* OpenDeckReader(const wchar_t* file);
bool LoadCurrentDeck(const wchar_t* file, bool is_packlist = false);
bool LoadCurrentDeck(int category_index, const wchar_t* category_name, const wchar_t* deckname);
bool SaveDeck(Deck& deck, const wchar_t* file);
bool DeleteDeck(const wchar_t* file);
bool CreateCategory(const wchar_t* name);
bool RenameCategory(const wchar_t* oldname, const wchar_t* newname);
bool DeleteCategory(const wchar_t* name);
bool SaveDeckBuffer(const int deckbuf[], const wchar_t* name);
static uint32_t LoadDeck(Deck& deck, uint32_t dbuf[], int mainc, int sidec, bool is_packlist = false);
static uint32_t LoadDeckFromStream(Deck& deck, std::istringstream& deckStream, bool is_packlist = false);
static bool LoadSide(Deck& deck, uint32_t dbuf[], int mainc, int sidec);
static void GetCategoryPath(wchar_t* ret, int index, const wchar_t* text);
static void GetDeckFile(wchar_t* ret, int category_index, const wchar_t* category_name, const wchar_t* deckname);
static FILE* OpenDeckFile(const wchar_t* file, const char* mode);
static irr::io::IReadFile* OpenDeckReader(const wchar_t* file);
static bool SaveDeck(Deck& deck, const wchar_t* file);
static bool DeleteDeck(const wchar_t* file);
static bool CreateCategory(const wchar_t* name);
static bool RenameCategory(const wchar_t* oldname, const wchar_t* newname);
static bool DeleteCategory(const wchar_t* name);
};
extern DeckManager deckManager;
......
......@@ -1249,7 +1249,7 @@ void Game::RefreshDeck(irr::gui::IGUIComboBox* cbCategory, irr::gui::IGUIComboBo
return;
}
wchar_t catepath[256];
deckManager.GetCategoryPath(catepath, cbCategory->getSelected(), cbCategory->getText());
DeckManager::GetCategoryPath(catepath, cbCategory->getSelected(), cbCategory->getText());
cbDeck->clear();
RefreshDeck(catepath, [cbDeck](const wchar_t* item) { cbDeck->addItem(item); });
}
......
......@@ -367,7 +367,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
wchar_t arg1[512];
if(mainGame->botInfo[sel].select_deckfile) {
wchar_t botdeck[256];
deckManager.GetDeckFile(botdeck, mainGame->cbBotDeckCategory->getSelected(), mainGame->cbBotDeckCategory->getText(), mainGame->cbBotDeck->getText());
DeckManager::GetDeckFile(botdeck, mainGame->cbBotDeckCategory->getSelected(), mainGame->cbBotDeckCategory->getText(), mainGame->cbBotDeck->getText());
myswprintf(arg1, L"%ls DeckFile='%ls'", mainGame->botInfo[sel].command, botdeck);
}
else
......@@ -386,7 +386,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
wchar_t warg1[512];
if(mainGame->botInfo[sel].select_deckfile) {
wchar_t botdeck[256];
deckManager.GetDeckFile(botdeck, mainGame->cbBotDeckCategory->getSelected(), mainGame->cbBotDeckCategory->getText(), mainGame->cbBotDeck->getText());
DeckManager::GetDeckFile(botdeck, mainGame->cbBotDeckCategory->getSelected(), mainGame->cbBotDeckCategory->getText(), mainGame->cbBotDeck->getText());
myswprintf(warg1, L"%ls DeckFile='%ls'", mainGame->botInfo[sel].command, botdeck);
}
else
......
......@@ -57,7 +57,7 @@ static_assert(sizeof(HostRequest) == 2, "size mismatch: HostRequest");
struct CTOS_DeckData {
int32_t mainc{};
int32_t sidec{};
int32_t list[MAINC_MAX + SIDEC_MAX]{};
uint32_t list[MAINC_MAX + SIDEC_MAX]{};
};
check_trivially_copyable(CTOS_DeckData);
......
......@@ -297,9 +297,9 @@ void SingleDuel::UpdateDeck(DuelPlayer* dp, unsigned char* pdata, int len) {
return;
}
if(duel_count == 0) {
deck_error[dp->type] = deckManager.LoadDeck(pdeck[dp->type], deckbuf.list, deckbuf.mainc, deckbuf.sidec);
deck_error[dp->type] = DeckManager::LoadDeck(pdeck[dp->type], deckbuf.list, deckbuf.mainc, deckbuf.sidec);
} else {
if(deckManager.LoadSide(pdeck[dp->type], deckbuf.list, deckbuf.mainc, deckbuf.sidec)) {
if(DeckManager::LoadSide(pdeck[dp->type], deckbuf.list, deckbuf.mainc, deckbuf.sidec)) {
ready[dp->type] = true;
NetServer::SendPacketToPlayer(dp, STOC_DUEL_START);
if(ready[0] && ready[1]) {
......
......@@ -279,7 +279,7 @@ void TagDuel::UpdateDeck(DuelPlayer* dp, unsigned char* pdata, int len) {
NetServer::SendPacketToPlayer(dp, STOC_ERROR_MSG, scem);
return;
}
deck_error[dp->type] = deckManager.LoadDeck(pdeck[dp->type], deckbuf.list, deckbuf.mainc, deckbuf.sidec);
deck_error[dp->type] = DeckManager::LoadDeck(pdeck[dp->type], deckbuf.list, deckbuf.mainc, deckbuf.sidec);
}
void TagDuel::StartDuel(DuelPlayer* dp) {
if(dp != host_player)
......
#[2025.1][2024.12 TCG][2024.10][2024.7][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.9 TCG][2024.4 TCG][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]
!2025.1
#[2025.4][2024.12 TCG][2025.1][2024.10][2024.7][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.9 TCG][2024.4 TCG][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]
!2025.4
#forbidden
20292186 0 --アーティファクト-デスサイズ
91869203 0 --アマゾネスの射手
20663556 0 --イレカエル
44910027 0 --ヴィクトリー・ドラゴン
......@@ -79,6 +80,7 @@
05851097 0 --虚無空間
93016201 0 --王宮の弾圧
61740673 0 --王宮の勅命
23516703 0 --サモンリミッター
03280747 0 --第六感
64697231 0 --ダスト・シュート
80604091 0 --血の代償
......@@ -86,14 +88,12 @@
17178486 0 --ライフチェンジャー
28566710 0 --ラストバトル!
#limit
20292186 1 --アーティファクト-デスサイズ
76794549 1 --アストログラフ・マジシャン
34022970 1 --エクス・ライゼオル
29301450 1 --SPリトルナイト
68304193 1 --クシャトリラ・ユニコーン
72270339 1 --黒魔女ディアベルスター
99937011 1 --剣神官ムドラ
34124316 1 --サイバーポッド
38814750 1 --PSYフレームギア・γ
74586817 1 --PSYフレームロード・Ω
32731036 1 --深淵の獣ルベリオン
......@@ -106,6 +106,7 @@
90241276 1 --蛇眼の炎燐
13533678 1 --スプライト・ジェット
76145933 1 --スプライト・ブルー
35844557 1 --ソード・ライゼオル
90361010 1 --超重武者装留イワトオシ
37818794 1 --超魔導竜騎士-ドラグーン・オブ・レッドアイズ
04928565 1 --ティアラメンツ・クシャトリラ
......@@ -113,6 +114,7 @@
37961969 1 --ティアラメンツ・ハゥフニス
74078255 1 --ティアラメンツ・メイルゥ
73956664 1 --ティアラメンツ・レイノハート
91800273 1 --ディメンション・アトラクター
90953320 1 --TG ハイパー・ライブラリアン
91810826 1 --天盃龍チュンドラ
75433814 1 --No.40 ギミック・パペット-ヘブンズ・ストリングス
......@@ -128,6 +130,7 @@
70903634 1 --封印されし者の右腕
94689206 1 --ブロックドラゴン
24094258 1 --ヘビーメタルフォーゼ・エレクトラム
32061192 1 --MLICEPDormouse
60764609 1 --魔を刻むデモンスミス
77103950 1 --壱世壊=ペルレイノ
33782437 1 --一時休戦
......@@ -142,13 +145,14 @@
30336082 1 --盃満ちる燦幻荘
83764718 1 --死者蘇生
15443125 1 --スプライト・スターター
07477101 1 --時空の七皇
52340444 1 --閃刀機-ホーネットビット
32807846 1 --増援
72892473 1 --手札抹殺
98567237 1 --刻まれし魔の詠聖
73628505 1 --テラ・フォーミング
11110587 1 --隣の芝刈り
18144506 1 --ハーピィの羽根帚
21347668 1 --ピュアリィ・スリーピィメモリー
75500286 1 --封印の黄金櫃
07394770 1 --ブリリアント・フュージョン
73468603 1 --盆回し
......@@ -162,32 +166,23 @@
02295440 1 --ワン・フォー・ワン
90846359 1 --群雄割拠
53334471 1 --御前試合
23516703 1 --サモンリミッター
82732705 1 --スキルドレイン
24207889 1 --センサー万別
21076084 1 --トリックスター・リンカーネイション
23002292 1 --レッド・リブート
#semi limit
02526224 2 --炎王神獣 キリン
17330916 2 --EMモンキーボード
12289247 2 --クロノグラフ・マジシャン
21377582 2 --真竜剣皇マスターP
34124316 2 --サイバーポッド
81275020 2 --SRベイゴマックス
23434538 2 --増殖するG
91800273 2 --ディメンション・アトラクター
33508719 2 --メタモルポット
65734501 2 --RACEエアホイスター
35726888 2 --おろかな副葬
67723438 2 --緊急テレポート
45986603 2 --強奪
49238328 2 --強欲で金満な壺
35261759 2 --強欲で貪欲な壺
46060017 2 --十二獣の会局
07477101 2 --時空の七皇
48130397 2 --超融合
11110587 2 --隣の芝刈り
93729896 2 --ナイトメア・スローン
24224830 2 --墓穴の指名者
21347668 2 --ピュアリィ・スリーピィメモリー
52947044 2 --フュージョン・デステニー
92714517 2 --ビッグウェルカム・ラビュリンス
......@@ -392,6 +387,198 @@
21347668 2 --Purrely Sleepy Memory
92107604 2 --Runick Fountain
!2025.1
#forbidden
91869203 0 --アマゾネスの射手
20663556 0 --イレカエル
44910027 0 --ヴィクトリー・ドラゴン
27552504 0 --永遠の淑女 ベアトリーチェ
51858306 0 --エクリプス・ワイバーン
62242678 0 --琰魔竜王 レッド・デーモン・カラミティ
34945480 0 --外神アザトート
95727991 0 --カタパルト・タートル
08903700 0 --儀式魔人リリーサー
11384280 0 --キャノン・ソルジャー
17412721 0 --旧神ノーデン
32909498 0 --クシャトリラ・フェンリル
50588353 0 --水晶機巧-ハリファイバー
62320425 0 --古衛兵アギド
25926710 0 --古尖兵ケルベク
03040496 0 --混沌魔龍 カオス・ルーラー
02563463 0 --流離のグリフォンライダー
88071625 0 --The tyrant NEPTUNE
52653092 0 --SNo.0 ホープ・ゼアル
85115440 0 --十二獣ブルホーン
59537380 0 --守護竜アガーペイン
86148577 0 --守護竜エルピィ
21044178 0 --深淵に潜む者
88581108 0 --真竜皇V.F.D.
27381364 0 --スプライト・エルフ
16923472 0 --ゼンマイハンター
15341821 0 --ダンディライオン
77679716 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 --捕食植物ヴェルテ・アナコンダ
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 --押収
35059553 0 --カイザーコロシアム
74191942 0 --苦渋の選択
42829885 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
20292186 1 --アーティファクト-デスサイズ
76794549 1 --アストログラフ・マジシャン
34022970 1 --エクス・ライゼオル
29301450 1 --SPリトルナイト
68304193 1 --クシャトリラ・ユニコーン
72270339 1 --黒魔女ディアベルスター
99937011 1 --剣神官ムドラ
34124316 1 --サイバーポッド
38814750 1 --PSYフレームギア・γ
74586817 1 --PSYフレームロード・Ω
32731036 1 --深淵の獣ルベリオン
36521307 1 --斬機サーキュラー
48905153 1 --十二獣ドランシア
78872731 1 --十二獣モルモラット
06602300 1 --重爆撃禽 ボム・フェネクス
63542003 1 --宿神像ケルドウ
09674034 1 --スネークアイ・エクセル
90241276 1 --蛇眼の炎燐
13533678 1 --スプライト・ジェット
76145933 1 --スプライト・ブルー
90361010 1 --超重武者装留イワトオシ
37818794 1 --超魔導竜騎士-ドラグーン・オブ・レッドアイズ
04928565 1 --ティアラメンツ・クシャトリラ
00572850 1 --ティアラメンツ・シェイレーン
37961969 1 --ティアラメンツ・ハゥフニス
74078255 1 --ティアラメンツ・メイルゥ
73956664 1 --ティアラメンツ・レイノハート
90953320 1 --TG ハイパー・ライブラリアン
91810826 1 --天盃龍チュンドラ
75433814 1 --No.40 ギミック・パペット-ヘブンズ・ストリングス
17266660 1 --朱光の宣告者
06637331 1 --深淵の獣ドルイドヴルム
72656408 1 --深淵の獣バルドレイク
33854624 1 --深淵の獣マグナムート
80453041 1 --ファントム・オブ・ユベル
33396948 1 --封印されしエクゾディア
44519536 1 --封印されし者の左足
07902349 1 --封印されし者の左腕
08124921 1 --封印されし者の右足
70903634 1 --封印されし者の右腕
94689206 1 --ブロックドラゴン
24094258 1 --ヘビーメタルフォーゼ・エレクトラム
60764609 1 --魔を刻むデモンスミス
77103950 1 --壱世壊=ペルレイノ
33782437 1 --一時休戦
01845204 1 --簡易融合
61292243 1 --EMERGENCY
19613556 1 --大嵐
81439173 1 --おろかな埋葬
85106525 1 --篝火
84211599 1 --金満で謙虚な壺
23701465 1 --原初の種
80845034 1 --“罪宝狩りの悪魔”
30336082 1 --盃満ちる燦幻荘
83764718 1 --死者蘇生
15443125 1 --スプライト・スターター
52340444 1 --閃刀機-ホーネットビット
32807846 1 --増援
72892473 1 --手札抹殺
98567237 1 --刻まれし魔の詠聖
73628505 1 --テラ・フォーミング
18144506 1 --ハーピィの羽根帚
21347668 1 --ピュアリィ・スリーピィメモリー
75500286 1 --封印の黄金櫃
07394770 1 --ブリリアント・フュージョン
73468603 1 --盆回し
93600443 1 --マスク・チェンジ・セカンド
65681983 1 --抹殺の指名者
71832012 1 --六世壊=パライゾス
01475311 1 --闇の誘惑
44362883 1 --烙印融合
92107604 1 --神碑の泉
27970830 1 --六武の門
02295440 1 --ワン・フォー・ワン
90846359 1 --群雄割拠
53334471 1 --御前試合
23516703 1 --サモンリミッター
82732705 1 --スキルドレイン
24207889 1 --センサー万別
21076084 1 --トリックスター・リンカーネイション
23002292 1 --レッド・リブート
#semi limit
02526224 2 --炎王神獣 キリン
17330916 2 --EMモンキーボード
12289247 2 --クロノグラフ・マジシャン
21377582 2 --真竜剣皇マスターP
81275020 2 --SRベイゴマックス
23434538 2 --増殖するG
91800273 2 --ディメンション・アトラクター
33508719 2 --メタモルポット
65734501 2 --RACEエアホイスター
35726888 2 --おろかな副葬
67723438 2 --緊急テレポート
45986603 2 --強奪
49238328 2 --強欲で金満な壺
35261759 2 --強欲で貪欲な壺
46060017 2 --十二獣の会局
07477101 2 --時空の七皇
48130397 2 --超融合
11110587 2 --隣の芝刈り
93729896 2 --ナイトメア・スローン
24224830 2 --墓穴の指名者
52947044 2 --フュージョン・デステニー
92714517 2 --ビッグウェルカム・ラビュリンス
!2024.10
#forbidden
91869203 0 --アマゾネスの射手
......
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