Commit dff3d3e6 authored by mercury233's avatar mercury233

Merge branch 'master' of https://github.com/Fluorohydride/ygopro

parents 73630d7c 23f54dd0
......@@ -29,6 +29,7 @@ ClientField::ClientField() {
conti_act = false;
deck_reversed = false;
conti_selecting = false;
cant_check_grave = false;
for(int p = 0; p < 2; ++p) {
mzone[p].resize(7, 0);
szone[p].resize(8, 0);
......@@ -93,6 +94,7 @@ void ClientField::Clear() {
pzone_act[1] = false;
conti_act = false;
deck_reversed = false;
cant_check_grave = false;
}
void ClientField::Initial(int player, int deckc, int extrac) {
ClientCard* pcard;
......@@ -384,6 +386,18 @@ void ClientField::ClearChainSelect() {
}
// needs to be synchronized with EGET_SCROLL_BAR_CHANGED
void ClientField::ShowSelectCard(bool buttonok, bool chain) {
if(cant_check_grave) {
bool has_card_in_grave = false;
for(size_t i = 0; i < selectable_cards.size(); ++i) {
if(selectable_cards[i]->location == LOCATION_GRAVE) {
has_card_in_grave = true;
break;
}
}
if(has_card_in_grave) {
std::random_shuffle(selectable_cards.begin(), selectable_cards.end());
}
}
int startpos;
size_t ct;
if(selectable_cards.size() <= 5) {
......@@ -410,6 +424,8 @@ void ClientField::ShowSelectCard(bool buttonok, bool chain) {
wchar_t formatBuffer[2048];
if(conti_selecting)
myswprintf(formatBuffer, L"%ls", DataManager::unknown_string);
else if(cant_check_grave && selectable_cards[i]->location == LOCATION_GRAVE)
myswprintf(formatBuffer, L"%ls", dataManager.FormatLocation(selectable_cards[i]->location, 0));
else if(selectable_cards[i]->location == LOCATION_OVERLAY)
myswprintf(formatBuffer, L"%ls[%d](%d)",
dataManager.FormatLocation(selectable_cards[i]->overlayTarget->location, selectable_cards[i]->overlayTarget->sequence),
......@@ -1209,6 +1225,27 @@ bool ClientField::CheckSelectSum() {
return ret;
}
}
bool ClientField::CheckSelectTribute() {
std::set<ClientCard*> selable;
for(auto sit = selectsum_all.begin(); sit != selectsum_all.end(); ++sit) {
(*sit)->is_selectable = false;
(*sit)->is_selected = false;
selable.insert(*sit);
}
for(size_t i = 0; i < selected_cards.size(); ++i) {
selected_cards[i]->is_selectable = true;
selected_cards[i]->is_selected = true;
selable.erase(selected_cards[i]);
}
selectsum_cards.clear();
bool ret = check_sel_sum_trib_s(selable, 0, 0);
selectable_cards.clear();
for(auto sit = selectsum_cards.begin(); sit != selectsum_cards.end(); ++sit) {
(*sit)->is_selectable = true;
selectable_cards.push_back(*sit);
}
return ret;
}
bool ClientField::check_min(const std::set<ClientCard*>& left, std::set<ClientCard*>::const_iterator index, int min, int max) {
if (index == left.end())
return false;
......@@ -1272,6 +1309,52 @@ bool ClientField::check_sum(std::set<ClientCard*>::const_iterator index, std::se
|| (l2 > 0 && acc > l2 && check_sum(index, end, acc - l2, count + 1))
|| check_sum(index, end, acc, count);
}
bool ClientField::check_sel_sum_trib_s(const std::set<ClientCard*>& left, int index, int acc) {
if(acc > select_max)
return false;
if(index == (int)selected_cards.size()) {
check_sel_sum_trib_t(left, acc);
return acc >= select_min && acc <= select_max;
}
int l = selected_cards[index]->opParam;
int l1 = l & 0xffff;
int l2 = l >> 16;
bool res1 = false, res2 = false;
res1 = check_sel_sum_trib_s(left, index + 1, acc + l1);
if(l2 > 0)
res2 = check_sel_sum_trib_s(left, index + 1, acc + l2);
return res1 || res2;
}
void ClientField::check_sel_sum_trib_t(const std::set<ClientCard*>& left, int acc) {
for(auto sit = left.begin(); sit != left.end(); ++sit) {
if(selectsum_cards.find(*sit) != selectsum_cards.end())
continue;
std::set<ClientCard*> testlist(left);
testlist.erase(*sit);
int l = (*sit)->opParam;
int l1 = l & 0xffff;
int l2 = l >> 16;
if(check_sum_trib(testlist.begin(), testlist.end(), acc + l1)
|| (l2 > 0 && check_sum_trib(testlist.begin(), testlist.end(), acc + l2))) {
selectsum_cards.insert(*sit);
}
}
}
bool ClientField::check_sum_trib(std::set<ClientCard*>::const_iterator index, std::set<ClientCard*>::const_iterator end, int acc) {
if(acc >= select_min && acc <= select_max)
return true;
if(acc > select_max || index == end)
return false;
int l = (*index)->opParam;
int l1 = l & 0xffff;
int l2 = l >> 16;
if((acc + l1 >= select_min && acc + l1 <= select_max) || (acc + l2 >= select_min && acc + l2 <= select_max))
return true;
++index;
return check_sum_trib(index, end, acc + l1)
|| check_sum_trib(index, end, acc + l2)
|| check_sum_trib(index, end, acc);
}
template <class T>
static bool is_declarable(T const& cd, const std::vector<int>& opcode) {
std::stack<int> stack;
......
......@@ -81,6 +81,7 @@ public:
bool last_chain;
bool deck_reversed;
bool conti_selecting;
bool cant_check_grave;
ClientField();
void Clear();
......@@ -106,10 +107,14 @@ public:
void FadeCard(ClientCard* pcard, int alpha, int frame);
bool ShowSelectSum(bool panelmode);
bool CheckSelectSum();
bool CheckSelectTribute();
bool check_min(const std::set<ClientCard*>& left, std::set<ClientCard*>::const_iterator index, int min, int max);
bool check_sel_sum_s(const std::set<ClientCard*>& left, int index, int acc);
void check_sel_sum_t(const std::set<ClientCard*>& left, int acc);
bool check_sum(std::set<ClientCard*>::const_iterator index, std::set<ClientCard*>::const_iterator end, int acc, int count);
bool check_sel_sum_trib_s(const std::set<ClientCard*>& left, int index, int acc);
void check_sel_sum_trib_t(const std::set<ClientCard*>& left, int acc);
bool check_sum_trib(std::set<ClientCard*>::const_iterator index, std::set<ClientCard*>::const_iterator end, int acc);
void UpdateDeclarableList();
......@@ -146,5 +151,6 @@ public:
//special cards
#define CARD_MARINE_DOLPHIN 78734254
#define CARD_TWINKLE_MOSS 13857930
#define CARD_QUESTION 38723936
#endif //CLIENT_FIELD_H
......@@ -408,7 +408,7 @@ void Game::DrawShadowText(CGUITTFont * font, const core::stringw & text, const c
void Game::DrawMisc() {
static irr::core::vector3df act_rot(0, 0, 0);
int rule = (dInfo.duel_rule >= 4) ? 1 : 0;
irr::core::matrix4 im, ic, it;
irr::core::matrix4 im, ic, it, ig;
act_rot.Z += 0.02f;
im.setRotationRadians(act_rot);
matManager.mTexture.setTexture(0, imageManager.tAct);
......@@ -492,6 +492,18 @@ void Game::DrawMisc() {
driver->drawVertexPrimitiveList(matManager.vChainNum, 4, matManager.iRectangle, 2);
}
}
if(dField.cant_check_grave) {
matManager.mTexture.setTexture(0, imageManager.tNegated);
driver->setMaterial(matManager.mTexture);
ig.setTranslation(vector3df((matManager.vFieldGrave[0][rule][0].Pos.X + matManager.vFieldGrave[0][rule][1].Pos.X) / 2,
(matManager.vFieldGrave[0][rule][0].Pos.Y + matManager.vFieldGrave[0][rule][2].Pos.Y) / 2, dField.grave[0].size() * 0.01f + 0.02f));
driver->setTransform(irr::video::ETS_WORLD, ig);
driver->drawVertexPrimitiveList(matManager.vNegate, 4, matManager.iRectangle, 2);
ig.setTranslation(vector3df((matManager.vFieldGrave[1][rule][0].Pos.X + matManager.vFieldGrave[1][rule][1].Pos.X) / 2,
(matManager.vFieldGrave[1][rule][0].Pos.Y + matManager.vFieldGrave[1][rule][2].Pos.Y) / 2, dField.grave[1].size() * 0.01f + 0.02f));
driver->setTransform(irr::video::ETS_WORLD, ig);
driver->drawVertexPrimitiveList(matManager.vNegate, 4, matManager.iRectangle, 2);
}
//finish button
if(btnCancelOrFinish->isVisible() && dField.select_ready)
DrawSelectionLine(btnCancelOrFinish, 2, 0xffffff00);
......
......@@ -1690,7 +1690,10 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
case MSG_SELECT_PLACE:
case MSG_SELECT_DISFIELD: {
int selecting_player = BufferIO::ReadInt8(pbuf);
mainGame->dField.select_min = BufferIO::ReadInt8(pbuf);
int count = BufferIO::ReadInt8(pbuf);
mainGame->dField.select_min = count > 0 ? count : 1;
mainGame->dField.select_ready = false;
mainGame->dField.select_cancelable = count == 0;
mainGame->dField.selectable_field = ~BufferIO::ReadInt32(pbuf);
if(selecting_player == mainGame->LocalPlayer(1))
mainGame->dField.selectable_field = (mainGame->dField.selectable_field >> 16) | (mainGame->dField.selectable_field << 16);
......@@ -1765,6 +1768,9 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
DuelClient::SendResponse();
return true;
}
if(mainGame->dField.select_cancelable) {
mainGame->dField.ShowCancelOrFinishButton(1);
}
return false;
}
case MSG_SELECT_POSITION: {
......@@ -1818,6 +1824,8 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
int count = BufferIO::ReadInt8(pbuf);
mainGame->dField.selectable_cards.clear();
mainGame->dField.selected_cards.clear();
mainGame->dField.selectsum_all.clear();
mainGame->dField.selectsum_cards.clear();
mainGame->dField.select_panalmode = false;
int c, l, s, t;
unsigned int code;
......@@ -1833,10 +1841,12 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
if (code && pcard->code != code)
pcard->SetCode(code);
mainGame->dField.selectable_cards.push_back(pcard);
pcard->opParam = t;
mainGame->dField.selectsum_all.push_back(pcard);
pcard->opParam = t << 16 | 1;
pcard->select_seq = i;
pcard->is_selectable = true;
}
mainGame->dField.CheckSelectTribute();
if(select_hint)
myswprintf(textBuffer, L"%ls(%d-%d)", dataManager.GetDesc(select_hint),
mainGame->dField.select_min, mainGame->dField.select_max);
......@@ -3615,7 +3625,14 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
int chtype = BufferIO::ReadInt8(pbuf);
int value = BufferIO::ReadInt32(pbuf);
auto& player_desc_hints = mainGame->dField.player_desc_hints[player];
if(value == CARD_QUESTION && player == 0) {
if(chtype == PHINT_DESC_ADD) {
mainGame->dField.cant_check_grave = true;
} else if(chtype == PHINT_DESC_REMOVE) {
mainGame->dField.cant_check_grave = false;
}
}
else if(chtype == PHINT_DESC_ADD) {
player_desc_hints[value]++;
} else if(chtype == PHINT_DESC_REMOVE) {
player_desc_hints[value]--;
......
......@@ -889,6 +889,8 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
} else {
if(conti_selecting)
myswprintf(formatBuffer, L"%ls", DataManager::unknown_string);
else if(cant_check_grave && selectable_cards[i]->location == LOCATION_GRAVE)
myswprintf(formatBuffer, L"%ls", dataManager.FormatLocation(selectable_cards[i]->location, 0));
else if(selectable_cards[i + pos]->location == LOCATION_OVERLAY)
myswprintf(formatBuffer, L"%ls[%d](%d)",
dataManager.FormatLocation(selectable_cards[i + pos]->overlayTarget->location, selectable_cards[i + pos]->overlayTarget->sequence),
......@@ -1189,6 +1191,8 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
case LOCATION_GRAVE: {
if(grave[hovered_controler].size() == 0)
break;
if(cant_check_grave)
break;
ShowMenu(COMMAND_LIST, x, y);
break;
}
......@@ -1239,6 +1243,8 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
int command_flag = 0;
if(grave[hovered_controler].size() == 0)
break;
if(cant_check_grave)
break;
for(size_t i = 0; i < grave[hovered_controler].size(); ++i)
command_flag |= grave[hovered_controler][i]->cmdFlag;
command_flag |= COMMAND_LIST;
......@@ -1335,16 +1341,16 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
selected_field = 0;
DuelClient::SetResponseB(respbuf, p);
DuelClient::SendResponse();
ShowCancelOrFinishButton(0);
}
}
}
break;
}
case MSG_SELECT_CARD:
case MSG_SELECT_TRIBUTE: {
if (!(hovered_location & 0xe) || !clicked_card || !clicked_card->is_selectable)
case MSG_SELECT_CARD: {
if(!(hovered_location & 0xe) || !clicked_card || !clicked_card->is_selectable)
break;
if (clicked_card->is_selected) {
if(clicked_card->is_selected) {
clicked_card->is_selected = false;
int i = 0;
while(selected_cards[i] != clicked_card) i++;
......@@ -1353,18 +1359,11 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
clicked_card->is_selected = true;
selected_cards.push_back(clicked_card);
}
int min = selected_cards.size(), max = 0;
if (mainGame->dInfo.curMsg == MSG_SELECT_CARD) {
max = selected_cards.size();
} else {
for(size_t i = 0; i < selected_cards.size(); ++i)
max += selected_cards[i]->opParam;
}
if (min >= select_max) {
if(selected_cards.size() >= select_max) {
SetResponseSelectedCards();
ShowCancelOrFinishButton(0);
DuelClient::SendResponse();
} else if (max >= select_min) {
} else if(selected_cards.size() >= select_min) {
if(selected_cards.size() == selectable_cards.size()) {
SetResponseSelectedCards();
ShowCancelOrFinishButton(0);
......@@ -1372,18 +1371,37 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
} else {
select_ready = true;
ShowCancelOrFinishButton(2);
if(mainGame->dInfo.curMsg == MSG_SELECT_TRIBUTE) {
wchar_t wbuf[256], *pwbuf = wbuf;
BufferIO::CopyWStrRef(dataManager.GetSysString(209), pwbuf, 256);
*pwbuf++ = L'\n';
BufferIO::CopyWStrRef(dataManager.GetSysString(210), pwbuf, 256);
mainGame->stQMessage->setText(wbuf);
mainGame->PopupElement(mainGame->wQuery);
}
} else {
select_ready = false;
if(select_cancelable && selected_cards.size() == 0)
ShowCancelOrFinishButton(1);
else
ShowCancelOrFinishButton(0);
}
break;
}
case MSG_SELECT_TRIBUTE: {
if (!(hovered_location & 0xe) || !clicked_card || !clicked_card->is_selectable)
break;
if(clicked_card->is_selected) {
auto it = std::find(selected_cards.begin(), selected_cards.end(), clicked_card);
selected_cards.erase(it);
} else {
selected_cards.push_back(clicked_card);
}
if(CheckSelectTribute()) {
if(selectsum_cards.size() == 0) {
SetResponseSelectedCards();
ShowCancelOrFinishButton(0);
DuelClient::SendResponse();
} else {
select_ready = true;
ShowCancelOrFinishButton(2);
}
} else {
select_ready = false;
if (select_cancelable && min == 0)
if (select_cancelable && selected_cards.size() == 0)
ShowCancelOrFinishButton(1);
else
ShowCancelOrFinishButton(0);
......@@ -1719,6 +1737,8 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
display_cards.clear();
switch(event.KeyInput.Key) {
case irr::KEY_F1:
if(cant_check_grave)
break;
loc_id = 1004;
for(auto it = grave[0].rbegin(); it != grave[0].rend(); ++it)
display_cards.push_back(*it);
......@@ -1743,6 +1763,8 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
}
break;
case irr::KEY_F5:
if(cant_check_grave)
break;
loc_id = 1004;
for(auto it = grave[1].rbegin(); it != grave[1].rend(); ++it)
display_cards.push_back(*it);
......@@ -2316,14 +2338,18 @@ void ClientField::SetShowMark(ClientCard* pcard, bool enable) {
}
void ClientField::ShowCardInfoInList(ClientCard* pcard, irr::gui::IGUIElement* element, irr::gui::IGUIElement* parent) {
std::wstring str(L"");
wchar_t formatBuffer[2048];
if(pcard->code) {
str.append(dataManager.GetName(pcard->code));
}
if(pcard->overlayTarget) {
myswprintf(formatBuffer, dataManager.GetSysString(225), dataManager.GetName(pcard->overlayTarget->code), pcard->overlayTarget->sequence + 1);
str.append(L"\n").append(formatBuffer);
}
if((pcard->status & STATUS_PROC_COMPLETE)
&& (pcard->type & (TYPE_RITUAL | TYPE_FUSION | TYPE_SYNCHRO | TYPE_XYZ | TYPE_LINK | TYPE_SPSUMMON)))
str.append(L"\n").append(dataManager.GetSysString(224));
for(size_t i = 0; i < chains.size(); ++i) {
wchar_t formatBuffer[2048];
auto chit = chains[i];
if(pcard == chit.chain_card) {
myswprintf(formatBuffer, dataManager.GetSysString(216), i + 1);
......@@ -2469,6 +2495,11 @@ void ClientField::CancelOrFinish() {
mainGame->HideElement(mainGame->wQuery, true);
break;
}
if(select_ready) {
SetResponseSelectedCards();
ShowCancelOrFinishButton(0);
DuelClient::SendResponse();
}
break;
}
case MSG_SELECT_SUM: {
......@@ -2509,6 +2540,19 @@ void ClientField::CancelOrFinish() {
}
break;
}
case MSG_SELECT_PLACE: {
if(select_cancelable) {
unsigned char respbuf[3];
respbuf[0] = mainGame->LocalPlayer(0);
respbuf[1] = 0;
respbuf[2] = 0;
mainGame->dField.selectable_field = 0;
DuelClient::SetResponseB(respbuf, 3);
DuelClient::SendResponse();
ShowCancelOrFinishButton(0);
}
break;
}
}
}
}
......@@ -10,7 +10,7 @@
#include "netserver.h"
#include "single_mode.h"
const unsigned short PRO_VERSION = 0x1351;
const unsigned short PRO_VERSION = 0x1352;
namespace ygo {
......
#[2020.7][2020.6 TCG][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][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]
!2020.7
#[2020.10][2020.9 TCG][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][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]
!2020.10
#forbidden
91869203 0 --アマゾネスの射手
20663556 0 --イレカエル
......@@ -18,6 +18,7 @@
34124316 0 --サイバーポッド
88071625 0 --The tyrant NEPTUNE
61665245 0 --サモン・ソーサレス
52653092 0 --SNo.0 ホープ・ゼアル
85115440 0 --十二獣ブルホーン
59537380 0 --守護竜アガーペイン
86148577 0 --守護竜エルピィ
......@@ -25,6 +26,7 @@
94677445 0 --星杯の神子イヴ
16923472 0 --ゼンマイハンター
15341821 0 --ダンディライオン
37818794 0 --超魔導竜騎士-ドラグーン・オブ・レッドアイズ
18326736 0 --星守の騎士 プトレマイオス
79875176 0 --トゥーン・キャノン・ソルジャー
22593417 0 --トポロジック・ガンブラー・ドラゴン
......@@ -94,6 +96,7 @@
74586817 1 --PSYフレームロード・Ω
26889158 1 --転生炎獣ガゼル
74997493 1 --鎖龍蛇-スカルデット
69811710 1 --宵星の騎士ギルス
77075360 1 --ジャンク・スピーダー
48905153 1 --十二獣ドランシア
78872731 1 --十二獣モルモラット
......@@ -106,7 +109,6 @@
59297550 1 --ゼンマイマジシャン
44335251 1 --魂喰いオヴィラプター
73941492 1 --調弦の魔術師
37818794 1 --超魔導竜騎士-ドラグーン・オブ・レッドアイズ
15291624 1 --超雷龍-サンダー・ドラゴン
90953320 1 --TG ハイパー・ライブラリアン
69015963 1 --デビル・フランケン
......@@ -114,7 +116,7 @@
16226786 1 --深淵の暗殺者
69610326 1 --覇王眷竜ダークヴルム
70583986 1 --氷結界の虎王ドゥローレン
52687916 1 --氷結界の龍トリシューラ
52687916 1 --氷結界の龍 トリシューラ
33396948 1 --封印されしエクゾディア
44519536 1 --封印されし者の左足
07902349 1 --封印されし者の左腕
......@@ -153,20 +155,17 @@
93600443 1 --マスク・チェンジ・セカンド
15854426 1 --霞の谷の神風
66399653 1 --ユニオン格納庫
06172122 1 --真紅眼融合
27970830 1 --六武の門
02295440 1 --ワン・フォー・ワン
05851097 1 --虚無空間
61740673 1 --王宮の勅命
21076084 1 --トリックスター・リンカーネイション
89208725 1 --メタバース
#semi limit
25533642 2 --オルターガイスト・メリュシーク
99234526 2 --輝白竜 ワイバースター
21593977 2 --処刑人-マキュラ
14536035 2 --ダーク・グレファー
82385847 2 --ダイナレスラー・パンクラトプス
09411399 2 --D-HEROディアボリックガイ
28297833 2 --ネクロフェイス
09411399 2 --D-HERO ディアボリックガイ
10802915 2 --魔界発現世行きデスガイド
41386308 2 --マスマティシャン
43694650 2 --未界域のジャッカロープ
......@@ -174,6 +173,7 @@
29596581 2 --雷獣龍-サンダー・ドラゴン
48686504 2 --ローンファイア・ブロッサム
47325505 2 --化石調査
84731222 2 --希望の記憶
67723438 2 --緊急テレポート
45305419 2 --継承の印
52155219 2 --転生炎獣の炎陣
......@@ -184,37 +184,38 @@
24010609 2 --閃刀機関-マルチロール
63166095 2 --閃刀起動-エンゲージ
48130397 2 --超融合
01984618 2 --天底の使徒
11110587 2 --隣の芝刈り
24224830 2 --墓穴の指名者
08949584 2 --ヒーローアライブ
01475311 2 --闇の誘惑
02295440 2 --ワン・フォー・ワン
53936268 2 --パーソナル・スプーフィング
23002292 2 --レッド・リブート
!2020.6 TCG
!2020.9 TCG
#forbidden
76794549 0 --Astrograph Sorcerer
09929398 0 --Blackwing - Gofu the Vague Shadow
09047460 0 --Blackwing - Steam the Cloak
53804307 0 --Blaster, Dragon Ruler of Infernos
94689206 0 --Block Dragon
34124316 0 --Cyber Jar
15341821 0 --Dandylion
05560911 0 --Destrudo the Lost Dragon's Frisson
08903700 0 --Djinn Releaser of Rituals
49684352 0 --Double Iris Magician
51858306 0 --Eclipse Wyvern
55623480 0 --Fairy Tail - Snow
78706415 0 --Fiber Jar
93369354 0 --Fishborg Blaster
67441435 0 --Glow-Up Bulb
75732622 0 --Grinder Golem
09742784 0 --Jet Synchron
57421866 0 --Level Eater
83190280 0 --Lunalight Tiger
34206604 0 --Magical Scientist
31178212 0 --Majespecter Unicorn - Kirin
21593977 0 --Makyura the Destructor
21377582 0 --Master Peace, the True Dracoslaying King
23434538 0 --Maxx "C"
72291078 0 --Mecha Phantom Beast O-Lion
96782886 0 --Mind Master
57835716 0 --Orcust Harp Horror
07563579 0 --Performage Plushfire
......@@ -238,7 +239,6 @@
39064822 0 --Knightmare Goblin
03679218 0 --Knightmare Mermaid
61665245 0 --Summon Sorceress
26692769 0 --The Phantom Knights of Rusty Bardiche
22593417 0 --Topologic Gumblar Dragon
25862681 0 --Ancient Fairy Dragon
65536818 0 --Denglong, First of the Yang Zing
......@@ -266,7 +266,6 @@
23557835 0 --Dimension Fusion
42703248 0 --Giant Trunade
79571449 0 --Graceful Charity
18144506 0 --Harpie's Feather Duster
19613556 0 --Heavy Storm
35059553 0 --Kaiser Colosseum
85602018 0 --Last Will
......@@ -299,7 +298,6 @@
08124921 1 --Right Leg of the Forbidden One
28985331 1 --Armageddon Knight
61901281 1 --Black Dragon Collapserpent
57143342 1 --Cir, Malebranche of the Burning Abyss
69015963 1 --Cyber-Stein
43694650 1 --Danger!? Jackalope?
70711847 1 --Danger! Nessie!
......@@ -307,9 +305,9 @@
14536035 1 --Dark Grepher
58984738 1 --Dinomight Knight, the True Dracofighter
82385847 1 --Dinowrestler Pankratops
49684352 1 --Double Iris Magician
33396948 1 --Exodia the Forbidden One
64034255 1 --Genex Ally Birdman
20758643 1 --Graff, Malebranche of the Burning Abyss
99177923 1 --Infernity Archfiend
33508719 1 --Morphing Jar
16226786 1 --Night Assailant
......@@ -323,10 +321,9 @@
30539496 1 --True King Lithosagym, the Disaster
99234526 1 --White Dragon Wyverburster
78872731 1 --Zoodiac Ratpier
45222299 1 --Evigishki Gustkraken
11877465 1 --Evigishki Mind Augus
01561110 1 --ABC-Dragon Buster
39512984 1 --Gem-Knight Master Diamond
26692769 1 --The Phantom Knights of Rusty Bardiche
70583986 1 --Dewloren, Tiger King of the Ice Barrier
18239909 1 --Ignister Prominence, the Blasting Dracoslayer
74586817 1 --PSY-Framelord Omega
......@@ -334,9 +331,9 @@
52687916 1 --Trishula, Dragon of the Ice Barrier
27552504 1 --Beatrice, Lady of the Eternal
00581014 1 --Daigusto Emeral
90809975 1 --Toadally Awesome
48905153 1 --Zoodiac Drident
08949584 1 --A Hero Lives
24224830 1 --Called by the Grave
72892473 1 --Card Destruction
59750328 1 --Card of Demise
91623717 1 --Chain Strike
......@@ -349,6 +346,7 @@
81439173 1 --Foolish Burial
27970830 1 --Gateway of the Six
75500286 1 --Gold Sarcophagus
18144506 1 --Harpie's Feather Duster
66957584 1 --Infernity Launcher
01845204 1 --Instant Fusion
93946239 1 --Into the Void
......@@ -357,7 +355,6 @@
83764718 1 --Monster Reborn
33782437 1 --One Day of Peace
02295440 1 --One for One
22842126 1 --Pantheism of the Monarchs
12580477 1 --Raigeki
58577036 1 --Reasoning
32807846 1 --Reinforcement of the Army
......@@ -383,9 +380,203 @@
35125879 1 --True King's Return
17078030 1 --Wall of Revealing Light
#semi limit
57143342 2 --Cir, Malebranche of the Burning Abyss
09411399 2 --Destiny HERO - Malicious
10802915 2 --Tour Guide From the Underworld
98338152 2 --Sky Striker Mecha - Widow Anchor
20758643 2 --Graff, Malebranche of the Burning Abyss
01561110 2 --ABC-Dragon Buster
90809975 2 --Toadally Awesome
!2020.7
#forbidden
91869203 0 --アマゾネスの射手
20663556 0 --イレカエル
44910027 0 --ヴィクトリー・ドラゴン
51858306 0 --エクリプス・ワイバーン
25862681 0 --エンシェント・フェアリー・ドラゴン
53804307 0 --焔征竜-ブラスター
07563579 0 --Emヒグルミ
17330916 0 --EMモンキーボード
34945480 0 --外神アザトート
90411554 0 --巌征竜-レドックス
08903700 0 --儀式魔人リリーサー
11384280 0 --キャノン・ソルジャー
17412721 0 --旧神ノーデン
67441435 0 --グローアップ・バルブ
34124316 0 --サイバーポッド
88071625 0 --The tyrant NEPTUNE
61665245 0 --サモン・ソーサレス
85115440 0 --十二獣ブルホーン
59537380 0 --守護竜アガーペイン
86148577 0 --守護竜エルピィ
21377582 0 --真竜剣皇マスターP
94677445 0 --星杯の神子イヴ
16923472 0 --ゼンマイハンター
15341821 0 --ダンディライオン
18326736 0 --星守の騎士 プトレマイオス
79875176 0 --トゥーン・キャノン・ソルジャー
22593417 0 --トポロジック・ガンブラー・ドラゴン
39064822 0 --トロイメア・ゴブリン
03679218 0 --トロイメア・マーメイド
54719828 0 --No.16 色の支配者ショック・ルーラー
58820923 0 --No.95 ギャラクシーアイズ・ダークマター・ドラゴン
26400609 0 --瀑征竜-タイダル
71525232 0 --破滅竜ガンドラX
05043010 0 --ファイアウォール・ドラゴン
78706415 0 --ファイバーポッド
93369354 0 --フィッシュボーグ-ガンナー
23558733 0 --フェニキシアン・クラスター・アマリリス
09929398 0 --BF-朧影のゴウフウ
09047460 0 --BF-隠れ蓑のスチーム
31178212 0 --マジェスペクター・ユニコーン
34206604 0 --魔導サイエンティスト
04423206 0 --M.X-セイバー インヴォーカー
14702066 0 --メガキャノン・ソルジャー
96782886 0 --メンタルマスター
03078576 0 --八汰烏
34086406 0 --ラヴァルバル・チェイン
85243784 0 --リンクロス
57421866 0 --レベル・スティーラー
41482598 0 --悪夢の蜃気楼
44763025 0 --いたずら好きな双子悪魔
17375316 0 --押収
19613556 0 --大嵐
74191942 0 --苦渋の選択
42829885 0 --強引な番兵
45986603 0 --強奪
55144522 0 --強欲な壺
04031928 0 --心変わり
23557835 0 --次元融合
31423101 0 --神剣-フェニックスブレード
57953380 0 --生還の宝札
54447022 0 --ソウル・チャージ
60682203 0 --大寒波
69243953 0 --蝶の短剣-エルマ
79571449 0 --天使の施し
70828912 0 --早すぎた埋葬
42703248 0 --ハリケーン
34906152 0 --マスドライバー
46448938 0 --魔導書の神判
46411259 0 --突然変異
85602018 0 --遺言状
27174286 0 --異次元からの帰還
93016201 0 --王宮の弾圧
03280747 0 --第六感
64697231 0 --ダスト・シュート
80604091 0 --血の代償
35316708 0 --刻の封印
32723153 0 --マジカル・エクスプロージョン
17178486 0 --ライフチェンジャー
28566710 0 --ラストバトル!
#limit
64034255 1 --A・ジェネクス・バードマン
76794549 1 --アストログラフ・マジシャン
01561110 1 --ABC-ドラゴン・バスター
40318957 1 --EMドクロバット・ジョーカー
42790071 1 --オルターガイスト・マルチフェイカー
30741503 1 --オルフェゴール・ガラテア
57835716 1 --オルフェゴール・ディヴェル
50588353 1 --水晶機巧-ハリファイバー
12289247 1 --クロノグラフ・マジシャン
49684352 1 --虹彩の魔術師
74586817 1 --PSYフレームロード・Ω
26889158 1 --転生炎獣ガゼル
74997493 1 --鎖龍蛇-スカルデット
77075360 1 --ジャンク・スピーダー
48905153 1 --十二獣ドランシア
78872731 1 --十二獣モルモラット
06602300 1 --重爆撃禽 ボム・フェネクス
28985331 1 --終末の騎士
78080961 1 --SPYRAL-ジーニアス
81275020 1 --SRベイゴマックス
63288573 1 --閃刀姫-カガリ
81122844 1 --発条空母ゼンマイティ
59297550 1 --ゼンマイマジシャン
44335251 1 --魂喰いオヴィラプター
73941492 1 --調弦の魔術師
37818794 1 --超魔導竜騎士-ドラグーン・オブ・レッドアイズ
15291624 1 --超雷龍-サンダー・ドラゴン
90953320 1 --TG ハイパー・ライブラリアン
69015963 1 --デビル・フランケン
75732622 1 --トーチ・ゴーレム
16226786 1 --深淵の暗殺者
69610326 1 --覇王眷竜ダークヴルム
70583986 1 --氷結界の虎王ドゥローレン
52687916 1 --氷結界の龍トリシューラ
33396948 1 --封印されしエクゾディア
44519536 1 --封印されし者の左足
07902349 1 --封印されし者の左腕
08124921 1 --封印されし者の右足
70903634 1 --封印されし者の右腕
70369116 1 --捕食植物ヴェルテ・アナコンダ
35272499 1 --捕食植物オフリス・スコーピオ
24094258 1 --ヘビーメタルフォーゼ・エレクトラム
33508719 1 --メタモルポット
90809975 1 --餅カエル
83107873 1 --雷鳥龍-サンダー・ドラゴン
89399912 1 --嵐征竜-テンペスト
92746535 1 --竜剣士ラスターP
88264978 1 --レッドアイズ・ダークネスメタルドラゴン
33782437 1 --一時休戦
01845204 1 --簡易融合
66957584 1 --インフェルニティガン
81439173 1 --おろかな埋葬
73680966 1 --終わりの始まり
23701465 1 --原初の種
12580477 1 --サンダー・ボルト
83764718 1 --死者蘇生
46060017 1 --十二獣の会局
52340444 1 --閃刀機-ホーネットビット
32807846 1 --増援
72892473 1 --手札抹殺
73628505 1 --テラ・フォーミング
13035077 1 --ドラゴニックD
35371948 1 --トリックスター・ライトステージ
18144506 1 --ハーピィの羽根帚
75500286 1 --封印の黄金櫃
07394770 1 --ブリリアント・フュージョン
53208660 1 --ペンデュラム・コール
73468603 1 --盆回し
76375976 1 --魔鍾洞
93600443 1 --マスク・チェンジ・セカンド
15854426 1 --霞の谷の神風
66399653 1 --ユニオン格納庫
06172122 1 --真紅眼融合
27970830 1 --六武の門
05851097 1 --虚無空間
61740673 1 --王宮の勅命
21076084 1 --トリックスター・リンカーネイション
89208725 1 --メタバース
#semi limit
25533642 2 --オルターガイスト・メリュシーク
99234526 2 --輝白竜 ワイバースター
21593977 2 --処刑人-マキュラ
14536035 2 --ダーク・グレファー
82385847 2 --ダイナレスラー・パンクラトプス
09411399 2 --D-HEROディアボリックガイ
28297833 2 --ネクロフェイス
10802915 2 --魔界発現世行きデスガイド
41386308 2 --マスマティシャン
43694650 2 --未界域のジャッカロープ
70711847 2 --未界域のネッシー
29596581 2 --雷獣龍-サンダー・ドラゴン
48686504 2 --ローンファイア・ブロッサム
47325505 2 --化石調査
67723438 2 --緊急テレポート
45305419 2 --継承の印
52155219 2 --転生炎獣の炎陣
73915051 2 --スケープ・ゴート
54631665 2 --SPYRAL RESORT
37520316 2 --精神操作
98338152 2 --閃刀機-ウィドウアンカー
24010609 2 --閃刀機関-マルチロール
63166095 2 --閃刀起動-エンゲージ
48130397 2 --超融合
11110587 2 --隣の芝刈り
08949584 2 --ヒーローアライブ
01475311 2 --闇の誘惑
02295440 2 --ワン・フォー・ワン
53936268 2 --パーソナル・スプーフィング
23002292 2 --レッド・リブート
!2020.4
#forbidden
......@@ -4521,6 +4712,202 @@
53582587 2 --激流葬
29401950 2 --奈落の落とし穴
!2020.6 TCG
#forbidden
76794549 0 --Astrograph Sorcerer
09929398 0 --Blackwing - Gofu the Vague Shadow
09047460 0 --Blackwing - Steam the Cloak
53804307 0 --Blaster, Dragon Ruler of Infernos
34124316 0 --Cyber Jar
15341821 0 --Dandylion
05560911 0 --Destrudo the Lost Dragon's Frisson
08903700 0 --Djinn Releaser of Rituals
49684352 0 --Double Iris Magician
51858306 0 --Eclipse Wyvern
55623480 0 --Fairy Tail - Snow
78706415 0 --Fiber Jar
93369354 0 --Fishborg Blaster
67441435 0 --Glow-Up Bulb
75732622 0 --Grinder Golem
57421866 0 --Level Eater
83190280 0 --Lunalight Tiger
34206604 0 --Magical Scientist
31178212 0 --Majespecter Unicorn - Kirin
21593977 0 --Makyura the Destructor
21377582 0 --Master Peace, the True Dracoslaying King
23434538 0 --Maxx "C"
96782886 0 --Mind Master
57835716 0 --Orcust Harp Horror
07563579 0 --Performage Plushfire
17330916 0 --Performapal Monkeyboard
40318957 0 --Performapal Skullcrobat Joker
23558733 0 --Phoenixian Cluster Amaryllis
90411554 0 --Redox, Dragon Ruler of Boulders
05592689 0 --Samsara Lotus
91258852 0 --SPYRAL Master Plan
20663556 0 --Substitoad
88071625 0 --The Tyrant Neptune
26400609 0 --Tidal, Dragon Ruler of Waterfalls
44910027 0 --Victory Dragon
03078576 0 --Yata-Garasu
17412721 0 --Elder Entity Norden
43387895 0 --Supreme King Dragon Starving Venom
15291624 0 --Thunder Dragon Colossus
05043010 0 --Firewall Dragon
59537380 0 --Guardragon Agarpain
24094258 0 --Heavymetalfoes Electrumite
39064822 0 --Knightmare Goblin
03679218 0 --Knightmare Mermaid
61665245 0 --Summon Sorceress
26692769 0 --The Phantom Knights of Rusty Bardiche
22593417 0 --Topologic Gumblar Dragon
25862681 0 --Ancient Fairy Dragon
65536818 0 --Denglong, First of the Yang Zing
94677445 0 --Ib the World Chalice Justiciar
63101919 0 --Tempest Magician
34086406 0 --Lavalval Chain
04423206 0 --M-X-Saber Invoker
54719828 0 --Number 16: Shock Master
10389142 0 --Number 42: Galaxy Tomahawk
63504681 0 --Number 86: Heroic Champion - Rhongomyniad
58820923 0 --Number 95: Galaxy-Eyes Dark Matter Dragon
34945480 0 --Outer Entity Azathot
87327776 0 --Salamangreat Miragestallio
18326736 0 --Tellarknight Ptolemaeus
81122844 0 --Wind-Up Carrier Zenmaity
85115440 0 --Zoodiac Broadbull
07394770 0 --Brilliant Fusion
69243953 0 --Butterfly Dagger - Elma
57953380 0 --Card of Safe Return
04031928 0 --Change of Heart
67616300 0 --Chicken Game
60682203 0 --Cold Wave
17375316 0 --Confiscation
44763025 0 --Delinquent Duo
23557835 0 --Dimension Fusion
42703248 0 --Giant Trunade
79571449 0 --Graceful Charity
18144506 0 --Harpie's Feather Duster
19613556 0 --Heavy Storm
35059553 0 --Kaiser Colosseum
85602018 0 --Last Will
34906152 0 --Mass Driver
46411259 0 --Metamorphosis
41482598 0 --Mirage of Nightmare
74191942 0 --Painful Choice
55144522 0 --Pot of Greed
70828912 0 --Premature Burial
94220427 0 --Rank-Up-Magic Argent Chaos Force
63166095 0 --Sky Striker Mobilize - Engage!
45986603 0 --Snatch Steal
54447022 0 --Soul Charge
46448938 0 --Spellbook of Judgment
11110587 0 --That Grass Looks Greener
42829885 0 --The Forceful Sentry
28566710 0 --Last Turn
27174286 0 --Return from the Different Dimension
93016201 0 --Royal Oppression
57585212 0 --Self-Destruct Button
03280747 0 --Sixth Sense
35316708 0 --Time Seal
64697231 0 --Trap Dustshoot
80604091 0 --Ultimate Offering
05851097 0 --Vanity's Emptiness
#limit
07902349 1 --Left Arm of the Forbidden One
44519536 1 --Left Leg of the Forbidden One
70903634 1 --Right Arm of the Forbidden One
08124921 1 --Right Leg of the Forbidden One
28985331 1 --Armageddon Knight
61901281 1 --Black Dragon Collapserpent
57143342 1 --Cir, Malebranche of the Burning Abyss
69015963 1 --Cyber-Stein
43694650 1 --Danger!? Jackalope?
70711847 1 --Danger! Nessie!
99745551 1 --Danger!? Tsuchinoko?
14536035 1 --Dark Grepher
58984738 1 --Dinomight Knight, the True Dracofighter
82385847 1 --Dinowrestler Pankratops
33396948 1 --Exodia the Forbidden One
64034255 1 --Genex Ally Birdman
20758643 1 --Graff, Malebranche of the Burning Abyss
99177923 1 --Infernity Archfiend
33508719 1 --Morphing Jar
16226786 1 --Night Assailant
12958919 1 --Phantom Skyblaster
88264978 1 --Red-Eyes Darkness Metal Dragon
26889158 1 --Salamangreat Gazelle
92559258 1 --Servant of Endymion
81275020 1 --Speedroid Terrortop
78080961 1 --SPYRAL Quik-Fix
89399912 1 --Tempest, Dragon Ruler of Storms
30539496 1 --True King Lithosagym, the Disaster
99234526 1 --White Dragon Wyverburster
78872731 1 --Zoodiac Ratpier
45222299 1 --Evigishki Gustkraken
11877465 1 --Evigishki Mind Augus
01561110 1 --ABC-Dragon Buster
39512984 1 --Gem-Knight Master Diamond
70583986 1 --Dewloren, Tiger King of the Ice Barrier
18239909 1 --Ignister Prominence, the Blasting Dracoslayer
74586817 1 --PSY-Framelord Omega
90953320 1 --T.G. Hyper Librarian
52687916 1 --Trishula, Dragon of the Ice Barrier
27552504 1 --Beatrice, Lady of the Eternal
00581014 1 --Daigusto Emeral
90809975 1 --Toadally Awesome
48905153 1 --Zoodiac Drident
08949584 1 --A Hero Lives
72892473 1 --Card Destruction
59750328 1 --Card of Demise
91623717 1 --Chain Strike
81674782 1 --Dimensional Fissure
15854426 1 --Divine Wind of Mist Valley
14733538 1 --Draco Face-Off
13035077 1 --Dragonic Diagram
67723438 1 --Emergency Teleport
95308449 1 --Final Countdown
81439173 1 --Foolish Burial
27970830 1 --Gateway of the Six
75500286 1 --Gold Sarcophagus
66957584 1 --Infernity Launcher
01845204 1 --Instant Fusion
93946239 1 --Into the Void
71650854 1 --Magical Mid-Breaker Field
37520316 1 --Mind Control
83764718 1 --Monster Reborn
33782437 1 --One Day of Peace
02295440 1 --One for One
22842126 1 --Pantheism of the Monarchs
12580477 1 --Raigeki
58577036 1 --Reasoning
32807846 1 --Reinforcement of the Army
52155219 1 --Salamangreat Circle
73915051 1 --Scapegoat
24940422 1 --Sekka's Light
73468603 1 --Set Rotation
52340444 1 --Sky Striker Mecha - Hornet Drones
24010609 1 --Sky Striker Mecha Modules - Multirole
71344451 1 --Slash Draw
54631665 1 --SPYRAL Resort
45305419 1 --Symbol of Heritage
73628505 1 --Terraforming
35371948 1 --Trickstar Light Stage
70368879 1 --Upstart Goblin
46060017 1 --Zoodiac Barrage
61740673 1 --Imperial Order
30241314 1 --Macro Cosmos
32723153 1 --Magical Explosion
89208725 1 --Metaverse
23002292 1 --Red Reboot
82732705 1 --Skill Drain
35125879 1 --True King's Return
17078030 1 --Wall of Revealing Light
#semi limit
09411399 2 --Destiny HERO - Malicious
10802915 2 --Tour Guide From the Underworld
98338152 2 --Sky Striker Mecha - Widow Anchor
!2020.4 TCG
#forbidden
76794549 0 --Astrograph Sorcerer
......
Subproject commit e1e9af3e34d303b43aa1bc23e45a1eca2b60a247
Subproject commit d3eceea9499fbf137887bc980214147c2ae6294e
Subproject commit 0895099e40fef293c6f7653836c5cdf7a36b9e61
Subproject commit b6819fc3480b886fd6f1a840297e8df2367e0c43
......@@ -80,6 +80,7 @@
!system 222 是否要发动诱发效果?
!system 223 稍后将询问其他可以发动的效果。
!system 224 已用正规方法特殊召唤
!system 225 叠放于[%ls](%d)下
!system 500 请选择要解放的卡
!system 501 请选择要丢弃的手卡
!system 502 请选择要破坏的卡
......@@ -1035,3 +1036,10 @@
!setname 0x14e 电脑堺 電脳堺
!setname 0x114e 电脑堺门 電脳堺門
!setname 0x14f 双天
!setname 0x150 大贤者 マギストス
#setname 0x151 双子 Twin
!setname 0x1151 直播☆双子 LiveTwin
!setname 0x2151 邪恶★双子 EvilTwin
!setname 0x152 姬丝基勒 キスキル
!setname 0x153 璃拉 リィラ
!setname 0x154 龙辉巧 ドライトロン
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