Commit 1849c130 authored by nanahira's avatar nanahira

Merge remote-tracking branch 'fh/master' into retry_fh

parents b57d9402 dbb12f03
...@@ -97,8 +97,10 @@ void Draw2DImageQuad(video::IVideoDriver* driver, video::ITexture* image, core:: ...@@ -97,8 +97,10 @@ void Draw2DImageQuad(video::IVideoDriver* driver, video::ITexture* image, core::
CGUIImageButton::CGUIImageButton(IGUIEnvironment* environment, IGUIElement* parent, s32 id, core::rect<s32> rectangle) CGUIImageButton::CGUIImageButton(IGUIEnvironment* environment, IGUIElement* parent, s32 id, core::rect<s32> rectangle)
: CGUIButton(environment, parent, id, rectangle) { : CGUIButton(environment, parent, id, rectangle) {
isDrawImage = true; isDrawImage = true;
isFixedSize = false;
imageRotation = 0.0f; imageRotation = 0.0f;
imageScale = core::vector2df(1.0f, 1.0f); imageScale = core::vector2df(1.0f, 1.0f);
imageSize = core::dimension2di(rectangle.getWidth(), rectangle.getHeight());
} }
CGUIImageButton* CGUIImageButton::addImageButton(IGUIEnvironment *env, const core::rect<s32>& rectangle, IGUIElement* parent, s32 id) { CGUIImageButton* CGUIImageButton::addImageButton(IGUIEnvironment *env, const core::rect<s32>& rectangle, IGUIElement* parent, s32 id) {
CGUIImageButton* button = new CGUIImageButton(env, parent ? parent : 0, id, rectangle); CGUIImageButton* button = new CGUIImageButton(env, parent ? parent : 0, id, rectangle);
...@@ -129,6 +131,23 @@ void CGUIImageButton::draw() { ...@@ -129,6 +131,23 @@ void CGUIImageButton::draw() {
irr::gui::Draw2DImageRotation(driver, Image, ImageRect, pos, center, imageRotation, imageScale); irr::gui::Draw2DImageRotation(driver, Image, ImageRect, pos, center, imageRotation, imageScale);
IGUIElement::draw(); IGUIElement::draw();
} }
void CGUIImageButton::setImage(video::ITexture* image)
{
if(image)
image->grab();
if(Image)
Image->drop();
Image = image;
if(image) {
ImageRect = core::rect<s32>(core::position2d<s32>(0, 0), image->getOriginalSize());
if(isFixedSize)
imageScale = core::vector2df((irr::f32)imageSize.Width / image->getSize().Width, (irr::f32)imageSize.Height / image->getSize().Height);
}
if(!PressedImage)
setPressedImage(Image);
}
void CGUIImageButton::setDrawImage(bool b) { void CGUIImageButton::setDrawImage(bool b) {
isDrawImage = b; isDrawImage = b;
} }
...@@ -138,6 +157,10 @@ void CGUIImageButton::setImageRotation(f32 r) { ...@@ -138,6 +157,10 @@ void CGUIImageButton::setImageRotation(f32 r) {
void CGUIImageButton::setImageScale(core::vector2df s) { void CGUIImageButton::setImageScale(core::vector2df s) {
imageScale = s; imageScale = s;
} }
void CGUIImageButton::setImageSize(core::dimension2di s) {
isFixedSize = true;
imageSize = s;
}
IGUIFont* CGUIImageButton::getOverrideFont( void ) const IGUIFont* CGUIImageButton::getOverrideFont( void ) const
{ {
......
...@@ -17,16 +17,20 @@ public: ...@@ -17,16 +17,20 @@ public:
CGUIImageButton(IGUIEnvironment* environment, IGUIElement* parent, s32 id, core::rect<s32> rectangle); CGUIImageButton(IGUIEnvironment* environment, IGUIElement* parent, s32 id, core::rect<s32> rectangle);
static CGUIImageButton* addImageButton(IGUIEnvironment *env, const core::rect<s32>& rectangle, IGUIElement* parent, s32 id); static CGUIImageButton* addImageButton(IGUIEnvironment *env, const core::rect<s32>& rectangle, IGUIElement* parent, s32 id);
virtual void draw(); virtual void draw();
virtual void setImage(video::ITexture* image = 0);
virtual void setDrawImage(bool b); virtual void setDrawImage(bool b);
virtual void setImageRotation(f32 r); virtual void setImageRotation(f32 r);
virtual void setImageScale(core::vector2df s); virtual void setImageScale(core::vector2df s);
virtual void setImageSize(core::dimension2di s);
virtual IGUIFont* getOverrideFont(void) const; virtual IGUIFont* getOverrideFont(void) const;
virtual IGUIFont* getActiveFont() const; virtual IGUIFont* getActiveFont() const;
private: private:
bool isDrawImage; bool isDrawImage;
bool isFixedSize;
f32 imageRotation; f32 imageRotation;
core::vector2df imageScale; core::vector2df imageScale;
core::dimension2di imageSize;
}; };
} }
......
...@@ -1418,7 +1418,7 @@ static bool is_declarable(T const& cd, const std::vector<int>& opcode) { ...@@ -1418,7 +1418,7 @@ static bool is_declarable(T const& cd, const std::vector<int>& opcode) {
return cd.code == CARD_MARINE_DOLPHIN || cd.code == CARD_TWINKLE_MOSS return cd.code == CARD_MARINE_DOLPHIN || cd.code == CARD_TWINKLE_MOSS
|| (!cd.alias && (cd.type & (TYPE_MONSTER + TYPE_TOKEN)) != (TYPE_MONSTER + TYPE_TOKEN)); || (!cd.alias && (cd.type & (TYPE_MONSTER + TYPE_TOKEN)) != (TYPE_MONSTER + TYPE_TOKEN));
} }
void ClientField::UpdateDeclarableCodeType(bool enter) { void ClientField::UpdateDeclarableCodeType() {
const wchar_t* pname = mainGame->ebANCard->getText(); const wchar_t* pname = mainGame->ebANCard->getText();
int trycode = BufferIO::GetVal(pname); int trycode = BufferIO::GetVal(pname);
CardString cstr; CardString cstr;
...@@ -1430,7 +1430,7 @@ void ClientField::UpdateDeclarableCodeType(bool enter) { ...@@ -1430,7 +1430,7 @@ void ClientField::UpdateDeclarableCodeType(bool enter) {
ancard.push_back(trycode); ancard.push_back(trycode);
return; return;
} }
if((pname[0] == 0 || pname[1] == 0) && !enter) { if(pname[0] == 0) {
std::vector<int> cache; std::vector<int> cache;
cache.swap(ancard); cache.swap(ancard);
int sel = mainGame->lstANCard->getSelected(); int sel = mainGame->lstANCard->getSelected();
...@@ -1465,7 +1465,7 @@ void ClientField::UpdateDeclarableCodeType(bool enter) { ...@@ -1465,7 +1465,7 @@ void ClientField::UpdateDeclarableCodeType(bool enter) {
} }
} }
} }
void ClientField::UpdateDeclarableCodeOpcode(bool enter) { void ClientField::UpdateDeclarableCodeOpcode() {
const wchar_t* pname = mainGame->ebANCard->getText(); const wchar_t* pname = mainGame->ebANCard->getText();
int trycode = BufferIO::GetVal(pname); int trycode = BufferIO::GetVal(pname);
CardString cstr; CardString cstr;
...@@ -1477,7 +1477,7 @@ void ClientField::UpdateDeclarableCodeOpcode(bool enter) { ...@@ -1477,7 +1477,7 @@ void ClientField::UpdateDeclarableCodeOpcode(bool enter) {
ancard.push_back(trycode); ancard.push_back(trycode);
return; return;
} }
if((pname[0] == 0 || pname[1] == 0) && !enter) { if(pname[0] == 0) {
std::vector<int> cache; std::vector<int> cache;
cache.swap(ancard); cache.swap(ancard);
int sel = mainGame->lstANCard->getSelected(); int sel = mainGame->lstANCard->getSelected();
...@@ -1512,10 +1512,10 @@ void ClientField::UpdateDeclarableCodeOpcode(bool enter) { ...@@ -1512,10 +1512,10 @@ void ClientField::UpdateDeclarableCodeOpcode(bool enter) {
} }
} }
} }
void ClientField::UpdateDeclarableCode(bool enter) { void ClientField::UpdateDeclarableCode() {
if(opcode.size() == 0) if(opcode.size() == 0)
UpdateDeclarableCodeType(enter); UpdateDeclarableCodeType();
else else
UpdateDeclarableCodeOpcode(enter); UpdateDeclarableCodeOpcode();
} }
} }
...@@ -112,9 +112,9 @@ public: ...@@ -112,9 +112,9 @@ public:
void check_sel_sum_t(const std::set<ClientCard*>& left, 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_sum(std::set<ClientCard*>::const_iterator index, std::set<ClientCard*>::const_iterator end, int acc, int count);
void UpdateDeclarableCodeType(bool enter); void UpdateDeclarableCodeType();
void UpdateDeclarableCodeOpcode(bool enter); void UpdateDeclarableCodeOpcode();
void UpdateDeclarableCode(bool enter); void UpdateDeclarableCode();
irr::gui::IGUIElement* panel; irr::gui::IGUIElement* panel;
std::vector<int> ancard; std::vector<int> ancard;
......
...@@ -222,8 +222,8 @@ const wchar_t* DataManager::GetSetName(int code) { ...@@ -222,8 +222,8 @@ const wchar_t* DataManager::GetSetName(int code) {
} }
unsigned int DataManager::GetSetCode(const wchar_t* setname) { unsigned int DataManager::GetSetCode(const wchar_t* setname) {
for(auto csit = _setnameStrings.begin(); csit != _setnameStrings.end(); ++csit) { for(auto csit = _setnameStrings.begin(); csit != _setnameStrings.end(); ++csit) {
auto xpos = csit->second.find_first_of(L'|');//setname|extra info auto xpos = csit->second.find_first_of(L'|');//setname|another setname or extra info
if(csit->second.compare(0, xpos, setname) == 0) if(csit->second.compare(0, xpos, setname) == 0 || csit->second.compare(xpos + 1, csit->second.length(), setname) == 0)
return csit->first; return csit->first;
} }
return 0; return 0;
......
...@@ -686,8 +686,11 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) { ...@@ -686,8 +686,11 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
mainGame->btnChainWhenAvail->setVisible(false); mainGame->btnChainWhenAvail->setVisible(false);
mainGame->btnCancelOrFinish->setVisible(false); mainGame->btnCancelOrFinish->setVisible(false);
mainGame->btnShuffle->setVisible(false); mainGame->btnShuffle->setVisible(false);
time_t nowtime = time(NULL); char* prep = pdata;
tm* localedtime = localtime(&nowtime); Replay new_replay;
memcpy(&new_replay.pheader, prep, sizeof(ReplayHeader));
time_t starttime = new_replay.pheader.seed;
tm* localedtime = localtime(&starttime);
wchar_t timetext[40]; wchar_t timetext[40];
wcsftime(timetext, 40, L"%Y-%m-%d %H-%M-%S", localedtime); wcsftime(timetext, 40, L"%Y-%m-%d %H-%M-%S", localedtime);
mainGame->ebRSName->setText(timetext); mainGame->ebRSName->setText(timetext);
...@@ -708,9 +711,6 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) { ...@@ -708,9 +711,6 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
mainGame->WaitFrameSignal(30); mainGame->WaitFrameSignal(30);
} }
if(mainGame->actionParam || !is_host) { if(mainGame->actionParam || !is_host) {
char* prep = pdata;
Replay new_replay;
memcpy(&new_replay.pheader, prep, sizeof(ReplayHeader));
prep += sizeof(ReplayHeader); prep += sizeof(ReplayHeader);
memcpy(new_replay.comp_data, prep, len - sizeof(ReplayHeader) - 1); memcpy(new_replay.comp_data, prep, len - sizeof(ReplayHeader) - 1);
new_replay.comp_size = len - sizeof(ReplayHeader) - 1; new_replay.comp_size = len - sizeof(ReplayHeader) - 1;
...@@ -3431,7 +3431,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) { ...@@ -3431,7 +3431,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
mainGame->gMutex.Lock(); mainGame->gMutex.Lock();
mainGame->ebANCard->setText(L""); mainGame->ebANCard->setText(L"");
mainGame->wANCard->setText(textBuffer); mainGame->wANCard->setText(textBuffer);
mainGame->dField.UpdateDeclarableCode(false); mainGame->dField.UpdateDeclarableCode();
mainGame->PopupElement(mainGame->wANCard); mainGame->PopupElement(mainGame->wANCard);
mainGame->gMutex.Unlock(); mainGame->gMutex.Unlock();
return false; return false;
...@@ -3458,7 +3458,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) { ...@@ -3458,7 +3458,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
} }
case MSG_ANNOUNCE_CARD_FILTER: { case MSG_ANNOUNCE_CARD_FILTER: {
/*int player = */mainGame->LocalPlayer(BufferIO::ReadInt8(pbuf)); /*int player = */mainGame->LocalPlayer(BufferIO::ReadInt8(pbuf));
int count = BufferIO::ReadInt8(pbuf); int count = BufferIO::ReadUInt8(pbuf);
mainGame->dField.declarable_type = 0; mainGame->dField.declarable_type = 0;
mainGame->dField.opcode.clear(); mainGame->dField.opcode.clear();
for (int i = 0; i < count; ++i) for (int i = 0; i < count; ++i)
...@@ -3470,7 +3470,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) { ...@@ -3470,7 +3470,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
mainGame->gMutex.Lock(); mainGame->gMutex.Lock();
mainGame->ebANCard->setText(L""); mainGame->ebANCard->setText(L"");
mainGame->wANCard->setText(textBuffer); mainGame->wANCard->setText(textBuffer);
mainGame->dField.UpdateDeclarableCode(false); mainGame->dField.UpdateDeclarableCode();
mainGame->PopupElement(mainGame->wANCard); mainGame->PopupElement(mainGame->wANCard);
mainGame->gMutex.Unlock(); mainGame->gMutex.Unlock();
return false; return false;
......
...@@ -20,6 +20,8 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -20,6 +20,8 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
return false; return false;
switch(event.EventType) { switch(event.EventType) {
case irr::EET_GUI_EVENT: { case irr::EET_GUI_EVENT: {
if(mainGame->fadingList.size())
break;
s32 id = event.GUIEvent.Caller->getID(); s32 id = event.GUIEvent.Caller->getID();
switch(event.GUIEvent.EventType) { switch(event.GUIEvent.EventType) {
case irr::gui::EGET_BUTTON_CLICKED: { case irr::gui::EGET_BUTTON_CLICKED: {
...@@ -612,6 +614,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -612,6 +614,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
case BUTTON_CARD_4: { case BUTTON_CARD_4: {
if(mainGame->dInfo.isReplay) if(mainGame->dInfo.isReplay)
break; break;
mainGame->stCardListTip->setVisible(false);
switch(mainGame->dInfo.curMsg) { switch(mainGame->dInfo.curMsg) {
case MSG_SELECT_IDLECMD: case MSG_SELECT_IDLECMD:
case MSG_SELECT_BATTLECMD: case MSG_SELECT_BATTLECMD:
...@@ -757,6 +760,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -757,6 +760,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
break; break;
} }
case BUTTON_CARD_SEL_OK: { case BUTTON_CARD_SEL_OK: {
mainGame->stCardListTip->setVisible(false);
if(mainGame->dInfo.isReplay) { if(mainGame->dInfo.isReplay) {
mainGame->HideElement(mainGame->wCardSelect); mainGame->HideElement(mainGame->wCardSelect);
break; break;
...@@ -959,7 +963,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -959,7 +963,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
case irr::gui::EGET_EDITBOX_CHANGED: { case irr::gui::EGET_EDITBOX_CHANGED: {
switch(id) { switch(id) {
case EDITBOX_ANCARD: { case EDITBOX_ANCARD: {
UpdateDeclarableCode(false); UpdateDeclarableCode();
break; break;
} }
} }
...@@ -968,7 +972,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) { ...@@ -968,7 +972,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
case irr::gui::EGET_EDITBOX_ENTER: { case irr::gui::EGET_EDITBOX_ENTER: {
switch(id) { switch(id) {
case EDITBOX_ANCARD: { case EDITBOX_ANCARD: {
UpdateDeclarableCode(true); UpdateDeclarableCode();
break; break;
} }
} }
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
#include "netserver.h" #include "netserver.h"
#include "single_mode.h" #include "single_mode.h"
const unsigned short PRO_VERSION = 0x1349; const unsigned short PRO_VERSION = 0x134A;
namespace ygo { namespace ygo {
...@@ -414,15 +414,15 @@ bool Game::Initialize() { ...@@ -414,15 +414,15 @@ bool Game::Initialize() {
wPosSelect->getCloseButton()->setVisible(false); wPosSelect->getCloseButton()->setVisible(false);
wPosSelect->setVisible(false); wPosSelect->setVisible(false);
btnPSAU = irr::gui::CGUIImageButton::addImageButton(env, rect<s32>(10, 45, 150, 185), wPosSelect, BUTTON_POS_AU); btnPSAU = irr::gui::CGUIImageButton::addImageButton(env, rect<s32>(10, 45, 150, 185), wPosSelect, BUTTON_POS_AU);
btnPSAU->setImageScale(core::vector2df(0.5, 0.5)); btnPSAU->setImageSize(core::dimension2di(CARD_IMG_WIDTH * 0.5f, CARD_IMG_HEIGHT * 0.5f));
btnPSAD = irr::gui::CGUIImageButton::addImageButton(env, rect<s32>(155, 45, 295, 185), wPosSelect, BUTTON_POS_AD); btnPSAD = irr::gui::CGUIImageButton::addImageButton(env, rect<s32>(155, 45, 295, 185), wPosSelect, BUTTON_POS_AD);
btnPSAD->setImageScale(core::vector2df(0.5, 0.5)); btnPSAD->setImageSize(core::dimension2di(CARD_IMG_WIDTH * 0.5f, CARD_IMG_HEIGHT * 0.5f));
btnPSAD->setImage(imageManager.tCover[2]); btnPSAD->setImage(imageManager.tCover[2]);
btnPSDU = irr::gui::CGUIImageButton::addImageButton(env, rect<s32>(300, 45, 440, 185), wPosSelect, BUTTON_POS_DU); btnPSDU = irr::gui::CGUIImageButton::addImageButton(env, rect<s32>(300, 45, 440, 185), wPosSelect, BUTTON_POS_DU);
btnPSDU->setImageScale(core::vector2df(0.5, 0.5)); btnPSDU->setImageSize(core::dimension2di(CARD_IMG_WIDTH * 0.5f, CARD_IMG_HEIGHT * 0.5f));
btnPSDU->setImageRotation(270); btnPSDU->setImageRotation(270);
btnPSDD = irr::gui::CGUIImageButton::addImageButton(env, rect<s32>(445, 45, 585, 185), wPosSelect, BUTTON_POS_DD); btnPSDD = irr::gui::CGUIImageButton::addImageButton(env, rect<s32>(445, 45, 585, 185), wPosSelect, BUTTON_POS_DD);
btnPSDD->setImageScale(core::vector2df(0.5, 0.5)); btnPSDD->setImageSize(core::dimension2di(CARD_IMG_WIDTH * 0.5f, CARD_IMG_HEIGHT * 0.5f));
btnPSDD->setImageRotation(270); btnPSDD->setImageRotation(270);
btnPSDD->setImage(imageManager.tCover[2]); btnPSDD->setImage(imageManager.tCover[2]);
//card select //card select
...@@ -434,7 +434,7 @@ bool Game::Initialize() { ...@@ -434,7 +434,7 @@ bool Game::Initialize() {
stCardPos[i]->setBackgroundColor(0xffffffff); stCardPos[i]->setBackgroundColor(0xffffffff);
stCardPos[i]->setTextAlignment(irr::gui::EGUIA_CENTER, irr::gui::EGUIA_CENTER); stCardPos[i]->setTextAlignment(irr::gui::EGUIA_CENTER, irr::gui::EGUIA_CENTER);
btnCardSelect[i] = irr::gui::CGUIImageButton::addImageButton(env, rect<s32>(30 + 125 * i, 55, 150 + 125 * i, 225), wCardSelect, BUTTON_CARD_0 + i); btnCardSelect[i] = irr::gui::CGUIImageButton::addImageButton(env, rect<s32>(30 + 125 * i, 55, 150 + 125 * i, 225), wCardSelect, BUTTON_CARD_0 + i);
btnCardSelect[i]->setImageScale(core::vector2df(0.6f, 0.6f)); btnCardSelect[i]->setImageSize(core::dimension2di(CARD_IMG_WIDTH * 0.6f, CARD_IMG_HEIGHT * 0.6f));
} }
scrCardList = env->addScrollBar(true, rect<s32>(30, 235, 650, 255), wCardSelect, SCROLL_CARD_SELECT); scrCardList = env->addScrollBar(true, rect<s32>(30, 235, 650, 255), wCardSelect, SCROLL_CARD_SELECT);
btnSelectOK = env->addButton(rect<s32>(300, 265, 380, 290), wCardSelect, BUTTON_CARD_SEL_OK, dataManager.GetSysString(1211)); btnSelectOK = env->addButton(rect<s32>(300, 265, 380, 290), wCardSelect, BUTTON_CARD_SEL_OK, dataManager.GetSysString(1211));
...@@ -447,7 +447,7 @@ bool Game::Initialize() { ...@@ -447,7 +447,7 @@ bool Game::Initialize() {
stDisplayPos[i]->setBackgroundColor(0xffffffff); stDisplayPos[i]->setBackgroundColor(0xffffffff);
stDisplayPos[i]->setTextAlignment(irr::gui::EGUIA_CENTER, irr::gui::EGUIA_CENTER); stDisplayPos[i]->setTextAlignment(irr::gui::EGUIA_CENTER, irr::gui::EGUIA_CENTER);
btnCardDisplay[i] = irr::gui::CGUIImageButton::addImageButton(env, rect<s32>(30 + 125 * i, 55, 150 + 125 * i, 225), wCardDisplay, BUTTON_DISPLAY_0 + i); btnCardDisplay[i] = irr::gui::CGUIImageButton::addImageButton(env, rect<s32>(30 + 125 * i, 55, 150 + 125 * i, 225), wCardDisplay, BUTTON_DISPLAY_0 + i);
btnCardDisplay[i]->setImageScale(core::vector2df(0.6f, 0.6f)); btnCardDisplay[i]->setImageSize(core::dimension2di(CARD_IMG_WIDTH * 0.6f, CARD_IMG_HEIGHT * 0.6f));
} }
scrDisplayList = env->addScrollBar(true, rect<s32>(30, 235, 650, 255), wCardDisplay, SCROLL_CARD_DISPLAY); scrDisplayList = env->addScrollBar(true, rect<s32>(30, 235, 650, 255), wCardDisplay, SCROLL_CARD_DISPLAY);
btnDisplayOK = env->addButton(rect<s32>(300, 265, 380, 290), wCardDisplay, BUTTON_CARD_DISP_OK, dataManager.GetSysString(1211)); btnDisplayOK = env->addButton(rect<s32>(300, 265, 380, 290), wCardDisplay, BUTTON_CARD_DISP_OK, dataManager.GetSysString(1211));
...@@ -459,13 +459,13 @@ bool Game::Initialize() { ...@@ -459,13 +459,13 @@ bool Game::Initialize() {
cbANNumber->setTextAlignment(irr::gui::EGUIA_CENTER, irr::gui::EGUIA_CENTER); cbANNumber->setTextAlignment(irr::gui::EGUIA_CENTER, irr::gui::EGUIA_CENTER);
btnANNumberOK = env->addButton(rect<s32>(80, 60, 150, 85), wANNumber, BUTTON_ANNUMBER_OK, dataManager.GetSysString(1211)); btnANNumberOK = env->addButton(rect<s32>(80, 60, 150, 85), wANNumber, BUTTON_ANNUMBER_OK, dataManager.GetSysString(1211));
//announce card //announce card
wANCard = env->addWindow(rect<s32>(560, 170, 770, 370), false, L""); wANCard = env->addWindow(rect<s32>(510, 120, 820, 420), false, L"");
wANCard->getCloseButton()->setVisible(false); wANCard->getCloseButton()->setVisible(false);
wANCard->setVisible(false); wANCard->setVisible(false);
ebANCard = env->addEditBox(L"", rect<s32>(20, 25, 190, 45), true, wANCard, EDITBOX_ANCARD); ebANCard = env->addEditBox(L"", rect<s32>(20, 25, 290, 45), true, wANCard, EDITBOX_ANCARD);
ebANCard->setTextAlignment(irr::gui::EGUIA_CENTER, irr::gui::EGUIA_CENTER); ebANCard->setTextAlignment(irr::gui::EGUIA_CENTER, irr::gui::EGUIA_CENTER);
lstANCard = env->addListBox(rect<s32>(20, 50, 190, 160), wANCard, LISTBOX_ANCARD, true); lstANCard = env->addListBox(rect<s32>(20, 50, 290, 265), wANCard, LISTBOX_ANCARD, true);
btnANCardOK = env->addButton(rect<s32>(60, 165, 150, 190), wANCard, BUTTON_ANCARD_OK, dataManager.GetSysString(1211)); btnANCardOK = env->addButton(rect<s32>(110, 270, 200, 295), wANCard, BUTTON_ANCARD_OK, dataManager.GetSysString(1211));
//announce attribute //announce attribute
wANAttribute = env->addWindow(rect<s32>(500, 200, 830, 285), false, dataManager.GetSysString(562)); wANAttribute = env->addWindow(rect<s32>(500, 200, 830, 285), false, dataManager.GetSysString(562));
wANAttribute->getCloseButton()->setVisible(false); wANAttribute->getCloseButton()->setVisible(false);
...@@ -1609,7 +1609,7 @@ void Game::OnResize() { ...@@ -1609,7 +1609,7 @@ void Game::OnResize() {
wPosSelect->setRelativePosition(ResizeWin(340, 200, 935, 410)); wPosSelect->setRelativePosition(ResizeWin(340, 200, 935, 410));
wCardSelect->setRelativePosition(ResizeWin(320, 100, 1000, 400)); wCardSelect->setRelativePosition(ResizeWin(320, 100, 1000, 400));
wANNumber->setRelativePosition(ResizeWin(550, 200, 780, 295)); wANNumber->setRelativePosition(ResizeWin(550, 200, 780, 295));
wANCard->setRelativePosition(ResizeWin(560, 170, 770, 370)); wANCard->setRelativePosition(ResizeWin(510, 120, 820, 420));
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));
......
...@@ -197,7 +197,7 @@ void NetServer::HandleCTOSPacket(DuelPlayer* dp, char* data, unsigned int len) { ...@@ -197,7 +197,7 @@ void NetServer::HandleCTOSPacket(DuelPlayer* dp, char* data, unsigned int len) {
case CTOS_UPDATE_DECK: { case CTOS_UPDATE_DECK: {
if(!dp->game) if(!dp->game)
return; return;
duel_mode->UpdateDeck(dp, pdata); duel_mode->UpdateDeck(dp, pdata, len - 1);
break; break;
} }
case CTOS_HAND_RESULT: { case CTOS_HAND_RESULT: {
......
...@@ -123,7 +123,7 @@ public: ...@@ -123,7 +123,7 @@ public:
virtual void ToObserver(DuelPlayer* dp) {} virtual void ToObserver(DuelPlayer* dp) {}
virtual void PlayerReady(DuelPlayer* dp, bool is_ready) {} virtual void PlayerReady(DuelPlayer* dp, bool is_ready) {}
virtual void PlayerKick(DuelPlayer* dp, unsigned char pos) {} virtual void PlayerKick(DuelPlayer* dp, unsigned char pos) {}
virtual void UpdateDeck(DuelPlayer* dp, void* pdata) {} virtual void UpdateDeck(DuelPlayer* dp, void* pdata, unsigned int len) {}
virtual void StartDuel(DuelPlayer* dp) {} virtual void StartDuel(DuelPlayer* dp) {}
virtual void HandResult(DuelPlayer* dp, unsigned char res) {} virtual void HandResult(DuelPlayer* dp, unsigned char res) {}
virtual void TPResult(DuelPlayer* dp, unsigned char tp) {} virtual void TPResult(DuelPlayer* dp, unsigned char tp) {}
......
...@@ -775,7 +775,7 @@ bool ReplayMode::ReplayAnalyze(char* msg, unsigned int len) { ...@@ -775,7 +775,7 @@ bool ReplayMode::ReplayAnalyze(char* msg, unsigned int len) {
case MSG_ANNOUNCE_NUMBER: case MSG_ANNOUNCE_NUMBER:
case MSG_ANNOUNCE_CARD_FILTER: { case MSG_ANNOUNCE_CARD_FILTER: {
player = BufferIO::ReadInt8(pbuf); player = BufferIO::ReadInt8(pbuf);
count = BufferIO::ReadInt8(pbuf); count = BufferIO::ReadUInt8(pbuf);
pbuf += 4 * count; pbuf += 4 * count;
return ReadReplayResponse(); return ReadReplayResponse();
} }
......
...@@ -173,7 +173,7 @@ void SingleDuel::LeaveGame(DuelPlayer* dp) { ...@@ -173,7 +173,7 @@ void SingleDuel::LeaveGame(DuelPlayer* dp) {
unsigned char wbuf[3]; unsigned char wbuf[3];
wbuf[0] = MSG_WIN; wbuf[0] = MSG_WIN;
wbuf[1] = 1 - dp->type; wbuf[1] = 1 - dp->type;
wbuf[2] = 0; wbuf[2] = 0x4;
NetServer::SendBufferToPlayer(players[0], STOC_GAME_MSG, wbuf, 3); NetServer::SendBufferToPlayer(players[0], STOC_GAME_MSG, wbuf, 3);
NetServer::ReSendToPlayer(players[1]); NetServer::ReSendToPlayer(players[1]);
for(auto oit = observers.begin(); oit != observers.end(); ++oit) for(auto oit = observers.begin(); oit != observers.end(); ++oit)
...@@ -280,12 +280,20 @@ void SingleDuel::PlayerKick(DuelPlayer* dp, unsigned char pos) { ...@@ -280,12 +280,20 @@ void SingleDuel::PlayerKick(DuelPlayer* dp, unsigned char pos) {
return; return;
LeaveGame(players[pos]); LeaveGame(players[pos]);
} }
void SingleDuel::UpdateDeck(DuelPlayer* dp, void* pdata) { void SingleDuel::UpdateDeck(DuelPlayer* dp, void* pdata, unsigned int len) {
if(dp->type > 1 || ready[dp->type]) if(dp->type > 1 || ready[dp->type])
return; return;
char* deckbuf = (char*)pdata; char* deckbuf = (char*)pdata;
int mainc = BufferIO::ReadInt32(deckbuf); int mainc = BufferIO::ReadInt32(deckbuf);
int sidec = BufferIO::ReadInt32(deckbuf); int sidec = BufferIO::ReadInt32(deckbuf);
// verify data
if((unsigned)mainc + (unsigned)sidec > (len - 8) / 4) {
STOC_ErrorMsg scem;
scem.msg = ERRMSG_DECKERROR;
scem.code = 0;
NetServer::SendPacketToPlayer(dp, STOC_ERROR_MSG, scem);
return;
}
if(duel_count == 0) { if(duel_count == 0) {
deck_error[dp->type] = deckManager.LoadDeck(pdeck[dp->type], (int*)deckbuf, mainc, sidec); deck_error[dp->type] = deckManager.LoadDeck(pdeck[dp->type], (int*)deckbuf, mainc, sidec);
} else { } else {
...@@ -1347,7 +1355,7 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) { ...@@ -1347,7 +1355,7 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
case MSG_ANNOUNCE_NUMBER: case MSG_ANNOUNCE_NUMBER:
case MSG_ANNOUNCE_CARD_FILTER: { case MSG_ANNOUNCE_CARD_FILTER: {
player = BufferIO::ReadInt8(pbuf); player = BufferIO::ReadInt8(pbuf);
count = BufferIO::ReadInt8(pbuf); count = BufferIO::ReadUInt8(pbuf);
pbuf += 4 * count; pbuf += 4 * count;
WaitforResponse(player); WaitforResponse(player);
NetServer::SendBufferToPlayer(players[player], STOC_GAME_MSG, offset, pbuf - offset); NetServer::SendBufferToPlayer(players[player], STOC_GAME_MSG, offset, pbuf - offset);
......
...@@ -18,7 +18,7 @@ public: ...@@ -18,7 +18,7 @@ public:
virtual void ToObserver(DuelPlayer* dp); virtual void ToObserver(DuelPlayer* dp);
virtual void PlayerReady(DuelPlayer* dp, bool ready); virtual void PlayerReady(DuelPlayer* dp, bool ready);
virtual void PlayerKick(DuelPlayer* dp, unsigned char pos); virtual void PlayerKick(DuelPlayer* dp, unsigned char pos);
virtual void UpdateDeck(DuelPlayer* dp, void* pdata); virtual void UpdateDeck(DuelPlayer* dp, void* pdata, unsigned int len);
virtual void StartDuel(DuelPlayer* dp); virtual void StartDuel(DuelPlayer* dp);
virtual void HandResult(DuelPlayer* dp, unsigned char res); virtual void HandResult(DuelPlayer* dp, unsigned char res);
virtual void TPResult(DuelPlayer* dp, unsigned char tp); virtual void TPResult(DuelPlayer* dp, unsigned char tp);
......
...@@ -693,7 +693,7 @@ bool SingleMode::SinglePlayAnalyze(char* msg, unsigned int len) { ...@@ -693,7 +693,7 @@ bool SingleMode::SinglePlayAnalyze(char* msg, unsigned int len) {
case MSG_ANNOUNCE_NUMBER: case MSG_ANNOUNCE_NUMBER:
case MSG_ANNOUNCE_CARD_FILTER: { case MSG_ANNOUNCE_CARD_FILTER: {
player = BufferIO::ReadInt8(pbuf); player = BufferIO::ReadInt8(pbuf);
count = BufferIO::ReadInt8(pbuf); count = BufferIO::ReadUInt8(pbuf);
pbuf += 4 * count; pbuf += 4 * count;
if(!DuelClient::ClientAnalyze(offset, pbuf - offset)) { if(!DuelClient::ClientAnalyze(offset, pbuf - offset)) {
mainGame->singleSignal.Reset(); mainGame->singleSignal.Reset();
......
...@@ -256,12 +256,20 @@ void TagDuel::PlayerKick(DuelPlayer* dp, unsigned char pos) { ...@@ -256,12 +256,20 @@ void TagDuel::PlayerKick(DuelPlayer* dp, unsigned char pos) {
return; return;
LeaveGame(players[pos]); LeaveGame(players[pos]);
} }
void TagDuel::UpdateDeck(DuelPlayer* dp, void* pdata) { void TagDuel::UpdateDeck(DuelPlayer* dp, void* pdata, unsigned int len) {
if(dp->type > 3 || ready[dp->type]) if(dp->type > 3 || ready[dp->type])
return; return;
char* deckbuf = (char*)pdata; char* deckbuf = (char*)pdata;
int mainc = BufferIO::ReadInt32(deckbuf); int mainc = BufferIO::ReadInt32(deckbuf);
int sidec = BufferIO::ReadInt32(deckbuf); int sidec = BufferIO::ReadInt32(deckbuf);
// verify data
if((unsigned)mainc + (unsigned)sidec > (len - 8) / 4) {
STOC_ErrorMsg scem;
scem.msg = ERRMSG_DECKERROR;
scem.code = 0;
NetServer::SendPacketToPlayer(dp, STOC_ERROR_MSG, scem);
return;
}
deck_error[dp->type] = deckManager.LoadDeck(pdeck[dp->type], (int*)deckbuf, mainc, sidec); deck_error[dp->type] = deckManager.LoadDeck(pdeck[dp->type], (int*)deckbuf, mainc, sidec);
} }
void TagDuel::StartDuel(DuelPlayer* dp) { void TagDuel::StartDuel(DuelPlayer* dp) {
...@@ -1396,7 +1404,7 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) { ...@@ -1396,7 +1404,7 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
case MSG_ANNOUNCE_NUMBER: case MSG_ANNOUNCE_NUMBER:
case MSG_ANNOUNCE_CARD_FILTER: { case MSG_ANNOUNCE_CARD_FILTER: {
player = BufferIO::ReadInt8(pbuf); player = BufferIO::ReadInt8(pbuf);
count = BufferIO::ReadInt8(pbuf); count = BufferIO::ReadUInt8(pbuf);
pbuf += 4 * count; pbuf += 4 * count;
WaitforResponse(player); WaitforResponse(player);
NetServer::SendBufferToPlayer(cur_player[player], STOC_GAME_MSG, offset, pbuf - offset); NetServer::SendBufferToPlayer(cur_player[player], STOC_GAME_MSG, offset, pbuf - offset);
......
...@@ -18,7 +18,7 @@ public: ...@@ -18,7 +18,7 @@ public:
virtual void ToObserver(DuelPlayer* dp); virtual void ToObserver(DuelPlayer* dp);
virtual void PlayerReady(DuelPlayer* dp, bool ready); virtual void PlayerReady(DuelPlayer* dp, bool ready);
virtual void PlayerKick(DuelPlayer* dp, unsigned char pos); virtual void PlayerKick(DuelPlayer* dp, unsigned char pos);
virtual void UpdateDeck(DuelPlayer* dp, void* pdata); virtual void UpdateDeck(DuelPlayer* dp, void* pdata, unsigned int len);
virtual void StartDuel(DuelPlayer* dp); virtual void StartDuel(DuelPlayer* dp);
virtual void HandResult(DuelPlayer* dp, unsigned char res); virtual void HandResult(DuelPlayer* dp, unsigned char res);
virtual void TPResult(DuelPlayer* dp, unsigned char tp); virtual void TPResult(DuelPlayer* dp, unsigned char tp);
......
#[2019.4][2019.4 TCG][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][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] #[2019.7][2019.4 TCG][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][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]
!2019.4 !2019.7
#forbidden #forbidden
91869203 0 --アマゾネスの射手 91869203 0 --アマゾネスの射手
79875176 0 --トゥーン・キャノン・ソルジャー
11384280 0 --キャノン・ソルジャー
32723153 0 --マジカル·エクスプロージョン
20663556 0 --イレカエル 20663556 0 --イレカエル
44910027 0 --ヴィクトリー・ドラゴン 44910027 0 --ヴィクトリー・ドラゴン
25862681 0 --エンシェント・フェアリー・ドラゴン 25862681 0 --エンシェント・フェアリー・ドラゴン
...@@ -13,6 +10,7 @@ ...@@ -13,6 +10,7 @@
07563579 0 --Emヒグルミ 07563579 0 --Emヒグルミ
17330916 0 --EMモンキーボード 17330916 0 --EMモンキーボード
90411554 0 --巌征竜-レドックス 90411554 0 --巌征竜-レドックス
11384280 0 --キャノン・ソルジャー
17412721 0 --旧神ノーデン 17412721 0 --旧神ノーデン
67441435 0 --グローアップ・バルブ 67441435 0 --グローアップ・バルブ
34124316 0 --サイバーポッド 34124316 0 --サイバーポッド
...@@ -25,16 +23,19 @@ ...@@ -25,16 +23,19 @@
16923472 0 --ゼンマイハンター 16923472 0 --ゼンマイハンター
15341821 0 --ダンディライオン 15341821 0 --ダンディライオン
18326736 0 --星守の騎士 プトレマイオス 18326736 0 --星守の騎士 プトレマイオス
79875176 0 --トゥーン・キャノン・ソルジャー
39064822 0 --トロイメア・ゴブリン 39064822 0 --トロイメア・ゴブリン
58820923 0 --No.95 ギャラクシーアイズ・ダークマター・ドラゴン 03679218 0 --トロイメア・マーメイド
54719828 0 --No.16 色の支配者ショック・ルーラー 54719828 0 --No.16 色の支配者ショック・ルーラー
58820923 0 --No.95 ギャラクシーアイズ・ダークマター・ドラゴン
26400609 0 --瀑征竜-タイダル 26400609 0 --瀑征竜-タイダル
71525232 0 --破滅竜ガンドラX
05043010 0 --ファイアウォール・ドラゴン 05043010 0 --ファイアウォール・ドラゴン
78706415 0 --ファイバーポッド 78706415 0 --ファイバーポッド
93369354 0 --フィッシュボーグ-ガンナー 93369354 0 --フィッシュボーグ-ガンナー
23558733 0 --フェニキシアン・クラスター・アマリリス 23558733 0 --フェニキシアン・クラスター・アマリリス
09929398 0 --BF朧影のゴウフウ 09929398 0 --BF朧影のゴウフウ
09047460 0 --BF隠れ蓑のスチーム 09047460 0 --BF隠れ蓑のスチーム
31178212 0 --マジェスペクター・ユニコーン 31178212 0 --マジェスペクター・ユニコーン
34206604 0 --魔導サイエンティスト 34206604 0 --魔導サイエンティスト
04423206 0 --M.X-セイバー インヴォーカー 04423206 0 --M.X-セイバー インヴォーカー
...@@ -42,20 +43,20 @@ ...@@ -42,20 +43,20 @@
96782886 0 --メンタルマスター 96782886 0 --メンタルマスター
03078576 0 --八汰烏 03078576 0 --八汰烏
34086406 0 --ラヴァルバル・チェイン 34086406 0 --ラヴァルバル・チェイン
88264978 0 --レッドアイズ·ダークネスメタルドラゴン 88264978 0 --レッドアイズダークネスメタルドラゴン
57421866 0 --レベル・スティーラー 57421866 0 --レベル・スティーラー
41482598 0 --悪夢の蜃気楼 41482598 0 --悪夢の蜃気楼
44763025 0 --いたずら好きな双子悪魔 44763025 0 --いたずら好きな双子悪魔
19613556 0 --大嵐
17375316 0 --押収 17375316 0 --押収
19613556 0 --大嵐
74191942 0 --苦渋の選択 74191942 0 --苦渋の選択
42829885 0 --強引な番兵 42829885 0 --強引な番兵
45986603 0 --強奪 45986603 0 --強奪
55144522 0 --強欲な壺 55144522 0 --強欲な壺
04031928 0 --心変わり 04031928 0 --心変わり
23557835 0 --次元融合
46060017 0 --十二獣の会局 46060017 0 --十二獣の会局
31423101 0 --神剣-フェニックスブレード 31423101 0 --神剣-フェニックスブレード
23557835 0 --次元融合
57953380 0 --生還の宝札 57953380 0 --生還の宝札
60682203 0 --大寒波 60682203 0 --大寒波
69243953 0 --蝶の短剣-エルマ 69243953 0 --蝶の短剣-エルマ
...@@ -70,103 +71,106 @@ ...@@ -70,103 +71,106 @@
27174286 0 --異次元からの帰還 27174286 0 --異次元からの帰還
93016201 0 --王宮の弾圧 93016201 0 --王宮の弾圧
03280747 0 --第六感 03280747 0 --第六感
64697231 0 --ダスト·シュート 64697231 0 --ダストシュート
80604091 0 --血の代償 80604091 0 --血の代償
35316708 0 --刻の封印 35316708 0 --刻の封印
32723153 0 --マジカル・エクスプロージョン
17178486 0 --ライフチェンジャー 17178486 0 --ライフチェンジャー
28566710 0 --ラストバトル! 28566710 0 --ラストバトル!
#limit #limit
24094258 1 --ヘビーメタルフォーゼ・エレクトラム 64034255 1 --A・ジェネクス・バードマン
76794549 1 --アストログラフ・マジシャン 76794549 1 --アストログラフ・マジシャン
73941492 1 --調弦の魔術師 50720316 1 --EHERO シャドー・ミスト
52340444 1 --閃刀機-ホーネットビット
73468603 1 --盆回し
64034255 1 --A·ジェネクス·バードマン
01561110 1 --ABC-ドラゴン・バスター
50720316 1 --E·HERO シャドー·ミスト
40318957 1 --EMドクロバット・ジョーカー 40318957 1 --EMドクロバット・ジョーカー
42790071 1 --オルターガイスト・マルチフェイカー 42790071 1 --オルターガイスト・マルチフェイカー
50588353 1 --水晶機巧-ハリファイバー 50588353 1 --水晶機巧-ハリファイバー
12289247 1 --クロノグラフ・マジシャン 12289247 1 --クロノグラフ・マジシャン
49684352 1 --虹彩の魔術師 49684352 1 --虹彩の魔術師
74586817 1 --PSYフレームロード・Ω 74586817 1 --PSYフレームロード・Ω
26889158 1 --転生炎獣ガゼル
78872731 1 --十二獣モルモラット 78872731 1 --十二獣モルモラット
06602300 1 --重爆撃禽 ボム・フェネクス 06602300 1 --重爆撃禽 ボム・フェネクス
28985331 1 --終末の騎士 28985331 1 --終末の騎士
75286621 1 --召喚獣メルカバー 75286621 1 --召喚獣メルカバー
78868119 1 --深海のディーヴァ 78868119 1 --深海のディーヴァ
78080961 1 --SPYRAL−ジーニアス
81275020 1 --SRベイゴマックス 81275020 1 --SRベイゴマックス
63288573 1 --閃刀姫-カガリ 63288573 1 --閃刀姫-カガリ
65192027 1 --ダーク·アームド·ドラゴン
44335251 1 --魂喰いオヴィラプター 44335251 1 --魂喰いオヴィラプター
90953320 1 --TG ハイパー·ライブラリアン 73941492 1 --調弦の魔術師
69015963 1 --デビル・フランケ 15291624 1 --超雷龍-サンダー・ドラゴ
75732622 1 --トーチ・ゴーレム 75732622 1 --トーチ・ゴーレム
16226786 1 --深淵の暗殺者 16226786 1 --深淵の暗殺者
28297833 1 --ネクロフェイス 28297833 1 --ネクロフェイス
69610326 1 --覇王眷竜ダークヴルム 69610326 1 --覇王眷竜ダークヴルム
70583986 1 --氷結界の虎王ドゥローレン 70583986 1 --氷結界の虎王ドゥローレン
52687916 1 --氷結界の龍 トリシューラ
33396948 1 --封印されしエクゾディア 33396948 1 --封印されしエクゾディア
07902349 1 --封印されし者の左腕
70903634 1 --封印されし者の右腕
44519536 1 --封印されし者の左足 44519536 1 --封印されし者の左足
07902349 1 --封印されし者の左腕
08124921 1 --封印されし者の右足 08124921 1 --封印されし者の右足
70903634 1 --封印されし者の右腕
35272499 1 --捕食植物オフリス・スコーピオ 35272499 1 --捕食植物オフリス・スコーピオ
24094258 1 --ヘビーメタルフォーゼ・エレクトラム
36042004 1 --ベビケラサウルス 36042004 1 --ベビケラサウルス
10802915 1 --魔界発現世行きデスガイド 10802915 1 --魔界発現世行きデスガイド
41386308 1 --マスマティシャン 41386308 1 --マスマティシャン
33508719 1 --メタモルポット 33508719 1 --メタモルポット
89463537 1 --ユニコールの影霊衣 89463537 1 --ユニコールの影霊衣
83107873 1 --雷鳥龍-サンダー・ドラゴン
89399912 1 --嵐征竜-テンペスト 89399912 1 --嵐征竜-テンペスト
92746535 1 --竜剣士ラスターP 92746535 1 --竜剣士ラスターP
16188701 1 --レディ・デバッガー
48686504 1 --ローンファイア・ブロッサム 48686504 1 --ローンファイア・ブロッサム
33782437 1 --一時休戦 33782437 1 --一時休戦
66957584 1 --インフェルニティガン 66957584 1 --インフェルニティガン
81439173 1 --おろかな埋葬 81439173 1 --おろかな埋葬
45305419 1 --継承の印
23701465 1 --原初の種 23701465 1 --原初の種
99330325 1 --妨げられた壊獣の眠り 99330325 1 --妨げられた壊獣の眠り
45305419 1 --継承の印 12580477 1 --サンダー・ボルト
12580477 1 --サンダー·ボルト
83764718 1 --死者蘇生 83764718 1 --死者蘇生
54631665 1 --SPYRAL RESORT 54631665 1 --SPYRAL RESORT
52340444 1 --閃刀機-ホーネットビット
32807846 1 --増援 32807846 1 --増援
54447022 1 --ソウル・チャージ 54447022 1 --ソウル・チャージ
72892473 1 --手札抹殺 72892473 1 --手札抹殺
73628505 1 --テラ・フォーミング 73628505 1 --テラ・フォーミング
97211663 1 --影霊衣の反魂術
18144506 1 --ハーピィの羽根帚 18144506 1 --ハーピィの羽根帚
75500286 1 --封印の黄金櫃 75500286 1 --封印の黄金櫃
53208660 1 --ペンデュラム・コール 53208660 1 --ペンデュラム・コール
73468603 1 --盆回し
93600443 1 --マスク・チェンジ・セカンド 93600443 1 --マスク・チェンジ・セカンド
15854426 1 --霞の谷の神風 15854426 1 --霞の谷の神風
58577036 1 --名推理 58577036 1 --名推理
14733538 1 --竜呼相打つ 14733538 1 --竜呼相打つ
02295440 1 --ワン·フォー·ワン 02295440 1 --ワン・フォー・ワン
05851097 1 --虚無空間 05851097 1 --虚無空間
61740673 1 --王宮の勅命 61740673 1 --王宮の勅命
21076084 1 --トリックスター・リンカーネイション 21076084 1 --トリックスター・リンカーネイション
89208725 1 --メタバース
#semi limit #semi limit
40044918 2 --E·HERO エアーマン 01561110 2 --ABC-ドラゴン・バスター
58984738 2 --真竜拳士ダイナマイトK 78080961 2 --SPYRAL-ジーニアス
65192027 2 --ダーク・アームド・ドラゴン
14536035 2 --ダーク・グレファー
82385847 2 --ダイナレスラー・パンクラトプス
90953320 2 --TG ハイパー・ライブラリアン
69015963 2 --デビル・フランケン
61283655 2 --トリックスター・キャンディナ 61283655 2 --トリックスター・キャンディナ
14558127 2 --灰流うらら 14558127 2 --灰流うらら
90809975 2 --餅カエル 52687916 2 --氷結界の龍 トリシューラ
47325505 2 --化石調査 47325505 2 --化石調査
67723438 2 --緊急テレポート 67723438 2 --緊急テレポート
73915051 2 --スケープ・ゴート 73915051 2 --スケープ・ゴート
98338152 2 --閃刀機ウィドウアンカー 98338152 2 --閃刀機ウィドウアンカー
63166095 2 --閃刀起動エンゲージ 63166095 2 --閃刀起動エンゲージ
91623717 2 --連鎖爆撃 91623717 2 --連鎖爆撃
48130397 2 --超融合
11110587 2 --隣の芝刈り 11110587 2 --隣の芝刈り
97211663 2 --影霊衣の反魂術
08949584 2 --ヒーローアライブ 08949584 2 --ヒーローアライブ
76375976 2 --魔鍾洞
23171610 2 --リミッター解除 23171610 2 --リミッター解除
48130397 2 --超融合
23314220 2 --ルドラの魔導書
41420027 2 --神の宣告
40605147 2 --神の通告 40605147 2 --神の通告
36468556 2 --停戦協定
53936268 2 --パーソナル・スプーフィング 53936268 2 --パーソナル・スプーフィング
!2019.4 TCG !2019.4 TCG
...@@ -356,6 +360,175 @@ ...@@ -356,6 +360,175 @@
92746535 2 --竜剣士ラスターP 92746535 2 --竜剣士ラスターP
48130397 2 --超融合 48130397 2 --超融合
!2019.4
#forbidden
91869203 0 --アマゾネスの射手
79875176 0 --トゥーン・キャノン・ソルジャー
11384280 0 --キャノン・ソルジャー
32723153 0 --マジカル·エクスプロージョン
20663556 0 --イレカエル
44910027 0 --ヴィクトリー・ドラゴン
25862681 0 --エンシェント・フェアリー・ドラゴン
53804307 0 --焔征竜-ブラスター
07563579 0 --Emヒグルミ
17330916 0 --EMモンキーボード
90411554 0 --巌征竜-レドックス
17412721 0 --旧神ノーデン
67441435 0 --グローアップ・バルブ
34124316 0 --サイバーポッド
88071625 0 --The tyrant NEPTUNE
61665245 0 --サモン・ソーサレス
48905153 0 --十二獣ドランシア
85115440 0 --十二獣ブルホーン
21593977 0 --処刑人-マキュラ
21377582 0 --真竜剣皇マスターP
16923472 0 --ゼンマイハンター
15341821 0 --ダンディライオン
18326736 0 --星守の騎士 プトレマイオス
39064822 0 --トロイメア・ゴブリン
58820923 0 --No.95 ギャラクシーアイズ・ダークマター・ドラゴン
54719828 0 --No.16 色の支配者ショック・ルーラー
26400609 0 --瀑征竜-タイダル
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 --ラヴァルバル・チェイン
88264978 0 --レッドアイズ·ダークネスメタルドラゴン
57421866 0 --レベル・スティーラー
41482598 0 --悪夢の蜃気楼
44763025 0 --いたずら好きな双子悪魔
19613556 0 --大嵐
17375316 0 --押収
74191942 0 --苦渋の選択
42829885 0 --強引な番兵
45986603 0 --強奪
55144522 0 --強欲な壺
04031928 0 --心変わり
46060017 0 --十二獣の会局
31423101 0 --神剣-フェニックスブレード
23557835 0 --次元融合
57953380 0 --生還の宝札
60682203 0 --大寒波
69243953 0 --蝶の短剣-エルマ
79571449 0 --天使の施し
13035077 0 --ドラゴニックD
70828912 0 --早すぎた埋葬
42703248 0 --ハリケーン
34906152 0 --マスドライバー
46448938 0 --魔導書の神判
46411259 0 --突然変異
85602018 0 --遺言状
27174286 0 --異次元からの帰還
93016201 0 --王宮の弾圧
03280747 0 --第六感
64697231 0 --ダスト·シュート
80604091 0 --血の代償
35316708 0 --刻の封印
17178486 0 --ライフチェンジャー
28566710 0 --ラストバトル!
#limit
24094258 1 --ヘビーメタルフォーゼ・エレクトラム
76794549 1 --アストログラフ・マジシャン
73941492 1 --調弦の魔術師
52340444 1 --閃刀機-ホーネットビット
73468603 1 --盆回し
64034255 1 --A·ジェネクス·バードマン
01561110 1 --ABC-ドラゴン・バスター
50720316 1 --E·HERO シャドー·ミスト
40318957 1 --EMドクロバット・ジョーカー
42790071 1 --オルターガイスト・マルチフェイカー
50588353 1 --水晶機巧-ハリファイバー
12289247 1 --クロノグラフ・マジシャン
49684352 1 --虹彩の魔術師
74586817 1 --PSYフレームロード・Ω
78872731 1 --十二獣モルモラット
06602300 1 --重爆撃禽 ボム・フェネクス
28985331 1 --終末の騎士
75286621 1 --召喚獣メルカバー
78868119 1 --深海のディーヴァ
78080961 1 --SPYRAL−ジーニアス
81275020 1 --SRベイゴマックス
63288573 1 --閃刀姫-カガリ
65192027 1 --ダーク·アームド·ドラゴン
44335251 1 --魂喰いオヴィラプター
90953320 1 --TG ハイパー·ライブラリアン
69015963 1 --デビル・フランケン
75732622 1 --トーチ・ゴーレム
16226786 1 --深淵の暗殺者
28297833 1 --ネクロフェイス
69610326 1 --覇王眷竜ダークヴルム
70583986 1 --氷結界の虎王ドゥローレン
52687916 1 --氷結界の龍 トリシューラ
33396948 1 --封印されしエクゾディア
07902349 1 --封印されし者の左腕
70903634 1 --封印されし者の右腕
44519536 1 --封印されし者の左足
08124921 1 --封印されし者の右足
35272499 1 --捕食植物オフリス・スコーピオ
36042004 1 --ベビケラサウルス
10802915 1 --魔界発現世行きデスガイド
41386308 1 --マスマティシャン
33508719 1 --メタモルポット
89463537 1 --ユニコールの影霊衣
89399912 1 --嵐征竜-テンペスト
92746535 1 --竜剣士ラスターP
48686504 1 --ローンファイア・ブロッサム
33782437 1 --一時休戦
66957584 1 --インフェルニティガン
81439173 1 --おろかな埋葬
23701465 1 --原初の種
99330325 1 --妨げられた壊獣の眠り
45305419 1 --継承の印
12580477 1 --サンダー·ボルト
83764718 1 --死者蘇生
54631665 1 --SPYRAL RESORT
32807846 1 --増援
54447022 1 --ソウル・チャージ
72892473 1 --手札抹殺
73628505 1 --テラ・フォーミング
97211663 1 --影霊衣の反魂術
18144506 1 --ハーピィの羽根帚
75500286 1 --封印の黄金櫃
53208660 1 --ペンデュラム・コール
93600443 1 --マスク・チェンジ・セカンド
15854426 1 --霞の谷の神風
58577036 1 --名推理
14733538 1 --竜呼相打つ
02295440 1 --ワン·フォー·ワン
05851097 1 --虚無空間
61740673 1 --王宮の勅命
21076084 1 --トリックスター・リンカーネイション
#semi limit
40044918 2 --E·HERO エアーマン
58984738 2 --真竜拳士ダイナマイトK
61283655 2 --トリックスター・キャンディナ
14558127 2 --灰流うらら
90809975 2 --餅カエル
47325505 2 --化石調査
67723438 2 --緊急テレポート
73915051 2 --スケープ・ゴート
98338152 2 --閃刀機−ウィドウアンカー
63166095 2 --閃刀起動−エンゲージ
91623717 2 --連鎖爆撃
11110587 2 --隣の芝刈り
08949584 2 --ヒーローアライブ
23171610 2 --リミッター解除
48130397 2 --超融合
23314220 2 --ルドラの魔導書
41420027 2 --神の宣告
40605147 2 --神の通告
36468556 2 --停戦協定
53936268 2 --パーソナル・スプーフィング
!2019.1 !2019.1
#forbidden #forbidden
91869203 0 --アマゾネスの射手 91869203 0 --アマゾネスの射手
......
Subproject commit 3cbdbf5a970b3ac5d8dcf0c6550898c41f5274e0 Subproject commit f95d908449a428691301ff6ae29ab9920eb492c0
Subproject commit 68a3de27cbd22e6cf74157feeaa2b8e5ee455636 Subproject commit 9ec1a4429cf9e3a3fd5002b6286061f9a83db917
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
!system 6 反转召唤成功 !system 6 反转召唤成功
!system 7 发动 !system 7 发动
!system 10 移除指示物 !system 10 移除指示物
!system 11 支付LP !system 11 支付基本分
!system 12 移除本身的素材 !system 12 移除本身的素材
!system 20 抽卡阶段中 !system 20 抽卡阶段中
!system 21 准备阶段中 !system 21 准备阶段中
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
!system 72 陷阱卡 !system 72 陷阱卡
!system 80 进入战斗阶段 !system 80 进入战斗阶段
!system 81 进入结束阶段 !system 81 进入结束阶段
!system 90 是否不解放怪通常召唤? !system 90 是否不解放怪通常召唤?
!system 91 是否使用额外的召唤机会? !system 91 是否使用额外的召唤机会?
!system 92 是否要解放对方怪兽进行上级召唤? !system 92 是否要解放对方怪兽进行上级召唤?
!system 93 是否要继续选择素材? !system 93 是否要继续选择素材?
...@@ -88,9 +88,9 @@ ...@@ -88,9 +88,9 @@
!system 508 请选择要召唤的卡 !system 508 请选择要召唤的卡
!system 509 请选择要特殊召唤的卡 !system 509 请选择要特殊召唤的卡
!system 510 请选择要盖放的卡 !system 510 请选择要盖放的卡
!system 511 请选择融合召唤的素材 !system 511 请选择要作为融合素材的卡
!system 512 请选择同调召唤的素材 !system 512 请选择要作为同调素材的卡
!system 513 请选择超量召唤的素材 !system 513 请选择要作为超量素材的卡
!system 514 请选择表侧表示的卡 !system 514 请选择表侧表示的卡
!system 515 请选择里侧表示的卡 !system 515 请选择里侧表示的卡
!system 516 请选择攻击表示的怪兽 !system 516 请选择攻击表示的怪兽
...@@ -110,7 +110,7 @@ ...@@ -110,7 +110,7 @@
!system 530 请选择对方的卡 !system 530 请选择对方的卡
!system 531 请选择上级召唤用需要解放的怪兽 !system 531 请选择上级召唤用需要解放的怪兽
!system 532 请选择要取除超量素材的怪兽 !system 532 请选择要取除超量素材的怪兽
!system 533 请选择连接召唤的素材 !system 533 请选择要作为连接素材的卡
!system 534 请选择要保留在场上的卡 !system 534 请选择要保留在场上的卡
!system 549 请选择攻击的对象 !system 549 请选择攻击的对象
!system 550 请选择要发动的效果 !system 550 请选择要发动的效果
...@@ -169,7 +169,7 @@ ...@@ -169,7 +169,7 @@
!system 1036 恐龙 !system 1036 恐龙
!system 1037 !system 1037
!system 1038 海龙 !system 1038 海龙
!system 1039 爬虫 !system 1039 爬虫
!system 1040 念动力 !system 1040 念动力
!system 1041 幻神兽 !system 1041 幻神兽
!system 1042 创造神 !system 1042 创造神
...@@ -284,7 +284,7 @@ ...@@ -284,7 +284,7 @@
!system 1228 ↓额外选项(无特殊要求请勿修改) !system 1228 ↓额外选项(无特殊要求请勿修改)
!system 1229 不检查卡组 !system 1229 不检查卡组
!system 1230 不洗切卡组 !system 1230 不洗切卡组
!system 1231 初始LP !system 1231 初始基本分
!system 1232 初始手卡数: !system 1232 初始手卡数:
!system 1233 每回合抽卡: !system 1233 每回合抽卡:
!system 1234 主机名称: !system 1234 主机名称:
...@@ -316,7 +316,7 @@ ...@@ -316,7 +316,7 @@
!system 1273 系统设定 !system 1273 系统设定
!system 1274 自动选择怪兽卡片位置 !system 1274 自动选择怪兽卡片位置
!system 1275 ↑随机选择位置 !system 1275 ↑随机选择位置
!system 1276 自动排列连锁顺序 !system 1276 自动发动并排序必发效果
!system 1277 没有可连锁的卡时延迟回应 !system 1277 没有可连锁的卡时延迟回应
!system 1278 自动选择魔陷卡片位置 !system 1278 自动选择魔陷卡片位置
!system 1279 开启音效 !system 1279 开启音效
...@@ -458,11 +458,11 @@ ...@@ -458,11 +458,11 @@
!system 1609 [%ls]的效果发动 !system 1609 [%ls]的效果发动
!system 1610 [%ls](%ls,%d)成为对象 !system 1610 [%ls](%ls,%d)成为对象
!system 1611 我方抽了%d张卡 !system 1611 我方抽了%d张卡
!system 1612抽了%d张卡 !system 1612抽了%d张卡
!system 1613 我方受到%d伤害 !system 1613 我方受到%d伤害
!system 1614 对方受到%d伤害 !system 1614 对方受到%d伤害
!system 1615 我方回复%dLP !system 1615 我方回复%d基本分
!system 1616 对方回复%dLP !system 1616 对方回复%d基本分
!system 1617 [%ls]放置了%d个[%ls] !system 1617 [%ls]放置了%d个[%ls]
!system 1618 [%ls]移除了%d个[%ls] !system 1618 [%ls]移除了%d个[%ls]
!system 1619 [%ls]攻击[%ls] !system 1619 [%ls]攻击[%ls]
...@@ -475,7 +475,7 @@ ...@@ -475,7 +475,7 @@
!system 1700 可以用鼠标右键%ls !system 1700 可以用鼠标右键%ls
#victory reason #victory reason
!victory 0x0 投降 !victory 0x0 投降
!victory 0x1 LP变成0 !victory 0x1 基本分变成0
!victory 0x2 没有卡可抽 !victory 0x2 没有卡可抽
!victory 0x3 超时 !victory 0x3 超时
!victory 0x4 失去连接 !victory 0x4 失去连接
...@@ -571,6 +571,7 @@ ...@@ -571,6 +571,7 @@
!counter 0x4e 指示物(魂之灵摆) !counter 0x4e 指示物(魂之灵摆)
!counter 0x104f 蛊指示物 !counter 0x104f 蛊指示物
!counter 0x50 指示物(娱乐伙伴 掉头跑骑兵) !counter 0x50 指示物(娱乐伙伴 掉头跑骑兵)
!counter 0x51 指示物(蜂军巢)
#setnames, using tab for comment #setnames, using tab for comment
!setname 0x1 正义盟军 AOJ !setname 0x1 正义盟军 AOJ
!setname 0x2 次世代 ジェネクス !setname 0x2 次世代 ジェネクス
...@@ -583,8 +584,8 @@ ...@@ -583,8 +584,8 @@
!setname 0x7 古代的机械 アンティーク・ギア !setname 0x7 古代的机械 アンティーク・ギア
!setname 0x8 英雄 HERO !setname 0x8 英雄 HERO
!setname 0x3008 元素英雄 EHERO !setname 0x3008 元素英雄 EHERO
#setname 0x5008 幻影英雄 V・HERO !setname 0x5008 幻影英雄 VHERO
#setname 0x6008 邪心英雄 E-HERO !setname 0x6008 邪心英雄 E-HERO
!setname 0xa008 假面英雄 MHERO !setname 0xa008 假面英雄 MHERO
!setname 0xc008 命运英雄 D-HERO !setname 0xc008 命运英雄 D-HERO
!setname 0x9 新宇 ネオス !setname 0x9 新宇 ネオス
...@@ -775,7 +776,7 @@ ...@@ -775,7 +776,7 @@
!setname 0x4093 电子暗黑 サイバー・ダーク/サイバーダーク !setname 0x4093 电子暗黑 サイバー・ダーク/サイバーダーク
!setname 0x94 电子科技 サイバネティック !setname 0x94 电子科技 サイバネティック
!setname 0x95 升阶魔法 RUM !setname 0x95 升阶魔法 RUM
!setname 0x96 电子鱼人 フィッシュボーグ !setname 0x96 电子鱼人|非「电子」 フィッシュボーグ
!setname 0x97 古遗物 アーティファクト !setname 0x97 古遗物 アーティファクト
!setname 0x98 魔术师 魔術師 !setname 0x98 魔术师 魔術師
!setname 0x99 异色眼 オッドアイズ !setname 0x99 异色眼 オッドアイズ
...@@ -804,7 +805,7 @@ ...@@ -804,7 +805,7 @@
!setname 0xa9 毛绒动物 ファーニマル !setname 0xa9 毛绒动物 ファーニマル
!setname 0xaa 机壳 クリフォート !setname 0xaa 机壳 クリフォート
!setname 0x10aa 隐藏的机壳 アポクリフォート !setname 0x10aa 隐藏的机壳 アポクリフォート
!setname 0xab 文具电子人 ブンボーグ !setname 0xab 文具电子人|非「电子」 ブンボーグ
!setname 0xac 哥布林 ゴブリン !setname 0xac 哥布林 ゴブリン
!setname 0xad 魔玩具 デストーイ !setname 0xad 魔玩具 デストーイ
!setname 0xae 契约书 契約書 !setname 0xae 契约书 契約書
...@@ -923,7 +924,7 @@ ...@@ -923,7 +924,7 @@
!setname 0x10a 珀耳修斯 パーシアス !setname 0x10a 珀耳修斯 パーシアス
!setname 0x10b 廷达魔三角 ティンダングル !setname 0x10b 廷达魔三角 ティンダングル
!setname 0x10c 机界骑士 ジャックナイツ !setname 0x10c 机界骑士 ジャックナイツ
!setname 0x10d 魔导兽 魔導獣 !setname 0x10d 魔导兽|非「魔导」 魔導獣
!setname 0x10e 进化药 進化薬 !setname 0x10e 进化药 進化薬
!setname 0x10f 枪管 ヴァレル !setname 0x10f 枪管 ヴァレル
!setname 0x110 眼纳祭神 アイズ・サクリファイス !setname 0x110 眼纳祭神 アイズ・サクリファイス
...@@ -957,3 +958,5 @@ ...@@ -957,3 +958,5 @@
!setname 0x12b 海晶少女 マリンセス !setname 0x12b 海晶少女 マリンセス
!setname 0x12c 天威 !setname 0x12c 天威
!setname 0x12d 斯摩夫 シムルグ !setname 0x12d 斯摩夫 シムルグ
!setname 0x12e 占卜魔女 占い魔女
!setname 0x12f 蜂军 BF(ビー・フォース)
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