Commit 2d02327c authored by mercury233's avatar mercury233
parents 1da1c4fb 3d861f28
......@@ -60,6 +60,7 @@ public:
*pstr = 0;
return l;
}
// UCS-2 to UTF-8
static int EncodeUTF8(const wchar_t * wsrc, char * str) {
char* pstr = str;
while(*wsrc != 0) {
......@@ -81,6 +82,7 @@ public:
*str = 0;
return str - pstr;
}
// UTF-8 to UCS-2
static int DecodeUTF8(const char * src, wchar_t * wstr) {
const char* p = src;
wchar_t* wp = wstr;
......@@ -89,13 +91,13 @@ public:
*wp = *p;
p++;
} else if((*p & 0xe0) == 0xc0) {
*wp = (((int)p[0] & 0x1f) << 6) | ((int)p[1] & 0x3f);
*wp = (((unsigned)p[0] & 0x1f) << 6) | ((unsigned)p[1] & 0x3f);
p += 2;
} else if((*p & 0xf0) == 0xe0) {
*wp = (((int)p[0] & 0xf) << 12) | (((int)p[1] & 0x3f) << 6) | ((int)p[2] & 0x3f);
*wp = (((unsigned)p[0] & 0xf) << 12) | (((unsigned)p[1] & 0x3f) << 6) | ((unsigned)p[2] & 0x3f);
p += 3;
} else if((*p & 0xf8) == 0xf0) {
*wp = (((int)p[0] & 0x7) << 18) | (((int)p[1] & 0x3f) << 12) | (((int)p[2] & 0x3f) << 6) | ((int)p[3] & 0x3f);
*wp = (((unsigned)p[0] & 0x7) << 18) | (((unsigned)p[1] & 0x3f) << 12) | (((unsigned)p[2] & 0x3f) << 6) | ((unsigned)p[3] & 0x3f);
p += 4;
} else
p++;
......
......@@ -22,6 +22,7 @@ ClientCard::ClientCard() {
cmdFlag = 0;
code = 0;
chain_code = 0;
location = 0;
type = 0;
alias = 0;
level = 0;
......
......@@ -368,12 +368,12 @@ void ClientField::ShowSelectCard(bool buttonok, bool chain) {
else if(chain)
mainGame->imageLoading.insert(std::make_pair(mainGame->btnCardSelect[i], selectable_cards[i]->chain_code));
else
mainGame->btnCardSelect[i]->setImage(imageManager.tCover);
mainGame->btnCardSelect[i]->setImage(imageManager.tCover[0]);
mainGame->btnCardSelect[i]->setRelativePosition(rect<s32>(startpos + i * 125, 55, startpos + 120 + i * 125, 225));
mainGame->btnCardSelect[i]->setPressed(false);
mainGame->btnCardSelect[i]->setVisible(true);
if(mainGame->dInfo.curMsg != MSG_SORT_CHAIN && mainGame->dInfo.curMsg != MSG_SORT_CARD) {
if(chain && selectable_cards[i]->is_conti)
if(chain && selectable_cards[i]->is_conti && !selectable_cards[i]->code)
myswprintf(formatBuffer, L"%ls", DataManager::unknown_string);
else if(selectable_cards[i]->location == LOCATION_OVERLAY)
myswprintf(formatBuffer, L"%ls[%d](%d)",
......@@ -389,8 +389,7 @@ void ClientField::ShowSelectCard(bool buttonok, bool chain) {
if(selectable_cards[i]->overlayTarget->controler)
mainGame->stCardPos[i]->setBackgroundColor(0xffd0d0d0);
else mainGame->stCardPos[i]->setBackgroundColor(0xffffffff);
}
else {
} else {
if(selectable_cards[i]->controler)
mainGame->stCardPos[i]->setBackgroundColor(0xffd0d0d0);
else mainGame->stCardPos[i]->setBackgroundColor(0xffffffff);
......@@ -412,8 +411,7 @@ void ClientField::ShowSelectCard(bool buttonok, bool chain) {
}
mainGame->scrCardList->setPos(0);
mainGame->scrCardList->setVisible(false);
}
else {
} else {
mainGame->scrCardList->setVisible(true);
mainGame->scrCardList->setMin(0);
mainGame->scrCardList->setMax((selectable_cards.size() - 5) * 10 + 9);
......@@ -438,7 +436,7 @@ void ClientField::ShowChainCard() {
if(selectable_cards[i]->code)
mainGame->imageLoading.insert(std::make_pair(mainGame->btnCardSelect[i], selectable_cards[i]->code));
else
mainGame->btnCardSelect[i]->setImage(imageManager.tCover);
mainGame->btnCardSelect[i]->setImage(imageManager.tCover[0]);
mainGame->btnCardSelect[i]->setRelativePosition(rect<s32>(startpos + i * 125, 55, startpos + 120 + i * 125, 225));
mainGame->btnCardSelect[i]->setPressed(false);
mainGame->btnCardSelect[i]->setVisible(true);
......@@ -451,8 +449,7 @@ void ClientField::ShowChainCard() {
if(selectable_cards[i]->overlayTarget->controler)
mainGame->stCardPos[i]->setBackgroundColor(0xffd0d0d0);
else mainGame->stCardPos[i]->setBackgroundColor(0xffffffff);
}
else {
} else {
if(selectable_cards[i]->controler)
mainGame->stCardPos[i]->setBackgroundColor(0xffd0d0d0);
else mainGame->stCardPos[i]->setBackgroundColor(0xffffffff);
......@@ -467,8 +464,7 @@ void ClientField::ShowChainCard() {
}
mainGame->scrCardList->setPos(0);
mainGame->scrCardList->setVisible(false);
}
else {
} else {
mainGame->scrCardList->setVisible(true);
mainGame->scrCardList->setMin(0);
mainGame->scrCardList->setMax((selectable_cards.size() - 5) * 10 + 9);
......@@ -494,7 +490,7 @@ void ClientField::ShowLocationCard() {
if(display_cards[i]->code)
mainGame->imageLoading.insert(std::make_pair(mainGame->btnCardDisplay[i], display_cards[i]->code));
else
mainGame->btnCardDisplay[i]->setImage(imageManager.tCover);
mainGame->btnCardDisplay[i]->setImage(imageManager.tCover[0]);
mainGame->btnCardDisplay[i]->setRelativePosition(rect<s32>(startpos + i * 125, 55, startpos + 120 + i * 125, 225));
mainGame->btnCardDisplay[i]->setPressed(false);
mainGame->btnCardDisplay[i]->setVisible(true);
......@@ -512,8 +508,7 @@ void ClientField::ShowLocationCard() {
if(display_cards[i]->overlayTarget->controler)
mainGame->stDisplayPos[i]->setBackgroundColor(0xffd0d0d0);
else mainGame->stDisplayPos[i]->setBackgroundColor(0xffffffff);
}
else {
} else {
if(display_cards[i]->controler)
mainGame->stDisplayPos[i]->setBackgroundColor(0xffd0d0d0);
else mainGame->stDisplayPos[i]->setBackgroundColor(0xffffffff);
......@@ -528,8 +523,7 @@ void ClientField::ShowLocationCard() {
}
mainGame->scrDisplayList->setPos(0);
mainGame->scrDisplayList->setVisible(false);
}
else {
} else {
mainGame->scrDisplayList->setVisible(true);
mainGame->scrDisplayList->setMin(0);
mainGame->scrDisplayList->setMax((display_cards.size() - 5) * 10 + 9);
......@@ -1296,7 +1290,7 @@ static bool is_declarable(T const& cd, int declarable_type) {
return cd.code == CARD_MARINE_DOLPHIN || cd.code == CARD_TWINKLE_MOSS
|| (!cd.alias && (cd.type & (TYPE_MONSTER + TYPE_TOKEN)) != (TYPE_MONSTER + TYPE_TOKEN));
}
void ClientField::UpdateDeclarableCode() {
void ClientField::UpdateDeclarableCode(bool enter) {
const wchar_t* pname = mainGame->ebANCard->getText();
int trycode = BufferIO::GetVal(pname);
CardString cstr;
......@@ -1308,7 +1302,7 @@ void ClientField::UpdateDeclarableCode() {
ancard.push_back(trycode);
return;
}
if(pname[0] == 0 || pname[1] == 0)
if(pname[0] == 0 || (pname[1] == 0 && !enter))
return;
mainGame->lstANCard->clear();
ancard.clear();
......
......@@ -104,7 +104,7 @@ public:
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);
void UpdateDeclarableCode();
void UpdateDeclarableCode(bool enter);
irr::gui::IGUIElement* panel;
std::vector<int> ancard;
......
......@@ -4,7 +4,7 @@
namespace ygo {
const wchar_t* DataManager::unknown_string = L"???";
wchar_t DataManager::strBuffer[2048];
wchar_t DataManager::strBuffer[4096];
DataManager dataManager;
bool DataManager::LoadDB(const char* file) {
......@@ -221,11 +221,10 @@ const wchar_t* DataManager::FormatLocation(int location, int sequence) {
else
return GetSysString(1009);
}
int filter = 1, i = 1000;
while(filter != location) {
filter <<= 1;
i++;
}
unsigned filter = 1;
int i = 1000;
for(; filter != 0x100 && filter != location; filter <<= 1)
++i;
if(filter == location)
return GetSysString(i);
else
......@@ -233,7 +232,8 @@ const wchar_t* DataManager::FormatLocation(int location, int sequence) {
}
const wchar_t* DataManager::FormatAttribute(int attribute) {
wchar_t* p = attBuffer;
int filter = 1, i = 1010;
unsigned filter = 1;
int i = 1010;
for(; filter != 0x80; filter <<= 1, ++i) {
if(attribute & filter) {
BufferIO::CopyWStrRef(GetSysString(i), p, 16);
......@@ -249,7 +249,8 @@ const wchar_t* DataManager::FormatAttribute(int attribute) {
}
const wchar_t* DataManager::FormatRace(int race) {
wchar_t* p = racBuffer;
int filter = 1, i = 1020;
unsigned filter = 1;
int i = 1020;
for(; filter != 0x1000000; filter <<= 1, ++i) {
if(race & filter) {
BufferIO::CopyWStrRef(GetSysString(i), p, 16);
......@@ -265,7 +266,8 @@ const wchar_t* DataManager::FormatRace(int race) {
}
const wchar_t* DataManager::FormatType(int type) {
wchar_t* p = tpBuffer;
int filter = 1, i = 1050;
unsigned filter = 1;
int i = 1050;
for(; filter != 0x2000000; filter <<= 1, ++i) {
if(type & filter) {
BufferIO::CopyWStrRef(GetSysString(i), p, 16);
......
......@@ -46,7 +46,7 @@ public:
wchar_t tpBuffer[128];
wchar_t scBuffer[128];
static wchar_t strBuffer[2048];
static wchar_t strBuffer[4096];
static const wchar_t* unknown_string;
static int CardReader(int, void*);
......
......@@ -62,8 +62,43 @@ void Game::DrawBackGround() {
// driver->setMaterial(matManager.mBackLine);
// driver->drawVertexPrimitiveList(matManager.vBackLine, 76, matManager.iBackLine, 58, irr::video::EVT_STANDARD, irr::scene::EPT_LINES);
//draw field
//draw field spell card
driver->setTransform(irr::video::ETS_WORLD, irr::core::IdentityMatrix);
matManager.mTexture.setTexture(0, imageManager.tField);
int fieldcode1 = -1;
int fieldcode2 = -1;
bool drawField = false;
if(mainGame->gameConf.draw_field_spell
&& mainGame->dField.szone[0][5] && mainGame->dField.szone[0][5]->position & POS_FACEUP)
fieldcode1 = mainGame->dField.szone[0][5]->code;
if(mainGame->gameConf.draw_field_spell
&& mainGame->dField.szone[1][5] && mainGame->dField.szone[1][5]->position & POS_FACEUP)
fieldcode2 = mainGame->dField.szone[1][5]->code;
int fieldcode = (fieldcode1 > 0) ? fieldcode1 : fieldcode2;
if(fieldcode1 > 0 && fieldcode2 > 0 && fieldcode1 != fieldcode2) {
ITexture* texture = imageManager.GetTextureField(fieldcode1);
if(texture) {
drawField = true;
matManager.mTexture.setTexture(0, texture);
driver->setMaterial(matManager.mTexture);
driver->drawVertexPrimitiveList(matManager.vFieldSpell1, 4, matManager.iRectangle, 2);
}
texture = imageManager.GetTextureField(fieldcode2);
if(texture) {
drawField = true;
matManager.mTexture.setTexture(0, texture);
driver->setMaterial(matManager.mTexture);
driver->drawVertexPrimitiveList(matManager.vFieldSpell2, 4, matManager.iRectangle, 2);
}
} else if(fieldcode > 0) {
ITexture* texture = imageManager.GetTextureField(fieldcode);
if(texture) {
drawField = true;
matManager.mTexture.setTexture(0, texture);
driver->setMaterial(matManager.mTexture);
driver->drawVertexPrimitiveList(matManager.vFieldSpell, 4, matManager.iRectangle, 2);
}
}
matManager.mTexture.setTexture(0, drawField ? imageManager.tFieldTransparent : imageManager.tField);
driver->setMaterial(matManager.mTexture);
driver->drawVertexPrimitiveList(matManager.vField, 4, matManager.iRectangle, 2);
driver->setMaterial(matManager.mBackLine);
......@@ -201,7 +236,10 @@ void Game::DrawCard(ClientCard* pcard) {
driver->setTransform(irr::video::ETS_WORLD, pcard->mTransform);
driver->setMaterial(matManager.mCard);
driver->drawVertexPrimitiveList(matManager.vCardFront, 4, matManager.iRectangle, 2);
matManager.mCard.setTexture(0, imageManager.tCover);
if(pcard->controler == 0 || !imageManager.tCover[1])
matManager.mCard.setTexture(0, imageManager.tCover[0]);
else
matManager.mCard.setTexture(0, imageManager.tCover[1]);
driver->setMaterial(matManager.mCard);
driver->drawVertexPrimitiveList(matManager.vCardBack, 4, matManager.iRectangle, 2);
if(pcard->is_showequip) {
......
......@@ -460,7 +460,7 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
mainGame->btnEP->setVisible(false);
mainGame->btnShuffle->setVisible(false);
mainGame->wChat->setVisible(true);
mainGame->imgCard->setImage(imageManager.tCover);
mainGame->imgCard->setImage(imageManager.tCover[0]);
mainGame->device->setEventReceiver(&mainGame->dField);
if(!mainGame->dInfo.isTag) {
if(selftype > 1) {
......@@ -990,8 +990,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
if (pcard->location == LOCATION_DECK) {
pcard->SetCode(code);
mainGame->dField.deck_act = true;
}
else if (pcard->location == LOCATION_GRAVE)
} else if (pcard->location == LOCATION_GRAVE)
mainGame->dField.grave_act = true;
else if (pcard->location == LOCATION_REMOVED)
mainGame->dField.remove_act = true;
......@@ -1063,8 +1062,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
}
if (BufferIO::ReadInt8(pbuf)) {
mainGame->btnShuffle->setVisible(true);
}
else {
} else {
mainGame->btnShuffle->setVisible(false);
}
return false;
......@@ -1202,8 +1200,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
pcard->chain_code = code % 1000000000;
mainGame->dField.conti_cards.push_back(pcard);
mainGame->dField.remove_act = true;
}
else {
} else {
pcard->chain_code = code;
pcard->is_selectable = true;
pcard->cmdFlag |= COMMAND_ACTIVATE;
......@@ -1835,7 +1832,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
case MSG_NEW_TURN: {
int player = mainGame->LocalPlayer(BufferIO::ReadInt8(pbuf));
mainGame->dInfo.turn++;
if(!mainGame->dInfo.isTag && mainGame->dInfo.turn == 5 && !mainGame->dInfo.isReplay && mainGame->dInfo.player_type < 7) {
if(!mainGame->dInfo.isTag && mainGame->dInfo.turn == 3 && !mainGame->dInfo.isReplay && mainGame->dInfo.player_type < 7) {
mainGame->btnLeaveGame->setText(dataManager.GetSysString(1351));
mainGame->btnLeaveGame->setVisible(true);
}
......
......@@ -711,7 +711,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
if(selectable_cards[i + pos]->code)
mainGame->btnCardSelect[i]->setImage(imageManager.GetTexture(selectable_cards[i + pos]->code));
else
mainGame->btnCardSelect[i]->setImage(imageManager.tCover);
mainGame->btnCardSelect[i]->setImage(imageManager.tCover[0]);
mainGame->btnCardSelect[i]->setRelativePosition(rect<s32>(30 + i * 125, 55, 30 + 120 + i * 125, 225));
if(sort_list.size()) {
if(sort_list[pos + i] > 0)
......@@ -719,7 +719,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
else
myswprintf(formatBuffer, L"");
} else {
if(selectable_cards[i + pos]->is_conti)
if(selectable_cards[i + pos]->is_conti && !selectable_cards[i + pos]->code)
myswprintf(formatBuffer, L"%ls", DataManager::unknown_string);
else if(selectable_cards[i + pos]->location == LOCATION_OVERLAY)
myswprintf(formatBuffer, L"%ls[%d](%d)",
......@@ -738,8 +738,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
else if(selectable_cards[i + pos]->overlayTarget->controler)
mainGame->stCardPos[i]->setBackgroundColor(0xffd0d0d0);
else mainGame->stCardPos[i]->setBackgroundColor(0xffffffff);
}
else {
} else {
if(selectable_cards[i + pos]->is_selected)
mainGame->stCardPos[i]->setBackgroundColor(0xffffff00);
else if(selectable_cards[i + pos]->controler)
......@@ -756,14 +755,13 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
if(display_cards[i + pos]->code)
mainGame->btnCardDisplay[i]->setImage(imageManager.GetTexture(display_cards[i + pos]->code));
else
mainGame->btnCardDisplay[i]->setImage(imageManager.tCover);
mainGame->btnCardDisplay[i]->setImage(imageManager.tCover[0]);
mainGame->btnCardDisplay[i]->setRelativePosition(rect<s32>(30 + i * 125, 55, 30 + 120 + i * 125, 225));
if(display_cards[i + pos]->location == LOCATION_OVERLAY) {
myswprintf(formatBuffer, L"%ls[%d](%d)",
dataManager.FormatLocation(display_cards[i + pos]->overlayTarget->location, display_cards[i + pos]->overlayTarget->sequence),
display_cards[i + pos]->overlayTarget->sequence + 1, display_cards[i + pos]->sequence + 1);
}
else
} else
myswprintf(formatBuffer, L"%ls[%d]", dataManager.FormatLocation(display_cards[i + pos]->location, display_cards[i + pos]->sequence),
display_cards[i + pos]->sequence + 1);
mainGame->stDisplayPos[i]->setText(formatBuffer);
......@@ -773,8 +771,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
if(display_cards[i + pos]->overlayTarget->controler)
mainGame->stDisplayPos[i]->setBackgroundColor(0xffd0d0d0);
else mainGame->stDisplayPos[i]->setBackgroundColor(0xffffffff);
}
else {
} else {
if(display_cards[i + pos]->controler)
mainGame->stDisplayPos[i]->setBackgroundColor(0xffd0d0d0);
else mainGame->stDisplayPos[i]->setBackgroundColor(0xffffffff);
......@@ -793,7 +790,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
case irr::gui::EGET_EDITBOX_CHANGED: {
switch(id) {
case EDITBOX_ANCARD: {
UpdateDeclarableCode();
UpdateDeclarableCode(false);
break;
}
}
......@@ -802,7 +799,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
case irr::gui::EGET_EDITBOX_ENTER: {
switch(id) {
case EDITBOX_ANCARD: {
UpdateDeclarableCode();
UpdateDeclarableCode(true);
break;
}
case EDITBOX_CHAT: {
......@@ -837,7 +834,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
if(mcard->code) {
mainGame->ShowCardInfo(mcard->code);
} else {
mainGame->imgCard->setImage(imageManager.tCover);
mainGame->imgCard->setImage(imageManager.tCover[0]);
mainGame->stName->setText(L"");
mainGame->stInfo->setText(L"");
mainGame->stDataInfo->setText(L"");
......@@ -852,7 +849,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
if(mcard->code) {
mainGame->ShowCardInfo(mcard->code);
} else {
mainGame->imgCard->setImage(imageManager.tCover);
mainGame->imgCard->setImage(imageManager.tCover[0]);
mainGame->stName->setText(L"");
mainGame->stInfo->setText(L"");
mainGame->stDataInfo->setText(L"");
......@@ -1414,7 +1411,9 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
}
myswprintf(formatBuffer, L"\n%ls/%ls", mcard->atkstring, mcard->defstring);
str.append(formatBuffer);
myswprintf(formatBuffer, L"\n\x2605%d %ls/%ls", (mcard->level ? mcard->level : mcard->rank), dataManager.FormatRace(mcard->race), dataManager.FormatAttribute(mcard->attribute));
int form = 0x2605;
if (mcard->rank) ++form;
myswprintf(formatBuffer, L"\n%c%d %ls/%ls", form, (mcard->level ? mcard->level : mcard->rank), dataManager.FormatRace(mcard->race), dataManager.FormatAttribute(mcard->attribute));
str.append(formatBuffer);
if(mcard->location == LOCATION_HAND && (mcard->type & TYPE_PENDULUM)) {
myswprintf(formatBuffer, L"\n%d/%d", mcard->lscale, mcard->rscale);
......@@ -1485,7 +1484,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
}
} else {
mainGame->stTip->setVisible(false);
mainGame->imgCard->setImage(imageManager.tCover);
mainGame->imgCard->setImage(imageManager.tCover[0]);
mainGame->stName->setText(L"");
mainGame->stInfo->setText(L"");
mainGame->stDataInfo->setText(L"");
......
......@@ -342,14 +342,14 @@ bool Game::Initialize() {
btnPSAU->setImageScale(core::vector2df(0.5, 0.5));
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->setImage(imageManager.tCover, rect<s32>(0, 0, 177, 254));
btnPSAD->setImage(imageManager.tCover[0], rect<s32>(0, 0, 177, 254));
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->setImageRotation(270);
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->setImageRotation(270);
btnPSDD->setImage(imageManager.tCover, rect<s32>(0, 0, 177, 254));
btnPSDD->setImage(imageManager.tCover[0], rect<s32>(0, 0, 177, 254));
//card select
wCardSelect = env->addWindow(rect<s32>(320, 100, 1000, 400), false, L"");
wCardSelect->getCloseButton()->setVisible(false);
......@@ -600,7 +600,12 @@ void Game::MainLoop() {
driver->setMaterial(irr::video::IdentityMaterial);
driver->clearZBuffer();
} else if(is_building) {
if(imageManager.tBackGround_deck)
driver->draw2DImage(imageManager.tBackGround_deck, recti(0, 0, 1024, 640), recti(0, 0, imageManager.tBackGround->getOriginalSize().Width, imageManager.tBackGround->getOriginalSize().Height));
DrawDeckBd();
} else {
if(imageManager.tBackGround_menu)
driver->draw2DImage(imageManager.tBackGround_menu, recti(0, 0, 1024, 640), recti(0, 0, imageManager.tBackGround->getOriginalSize().Width, imageManager.tBackGround->getOriginalSize().Height));
}
DrawGUI();
DrawSpec();
......@@ -685,7 +690,7 @@ void Game::InitStaticText(irr::gui::IGUIStaticText* pControl, u32 cWidth, u32 cH
void Game::SetStaticText(irr::gui::IGUIStaticText* pControl, u32 cWidth, irr::gui::CGUITTFont* font, const wchar_t* text, u32 pos) {
int pbuffer = 0;
u32 _width = 0, _height = 0;
for(int i = 0; text[i] != 0 && i < 1023; ++i) {
for(size_t i = 0; text[i] != 0 && i < wcslen(text); ++i) {
u32 w = font->getCharDimension(text[i]).Width;
if(text[i] == L'\n') {
dataManager.strBuffer[pbuffer++] = L'\n';
......@@ -868,6 +873,7 @@ void Game::LoadConfig() {
gameConf.chkIgnore2 = 0;
gameConf.chkHideSetname = 0;
gameConf.control_mode = 0;
gameConf.draw_field_spell = 1;
fseek(fp, 0, SEEK_END);
int fsize = ftell(fp);
fseek(fp, 0, SEEK_SET);
......@@ -916,18 +922,18 @@ void Game::LoadConfig() {
gameConf.chkHideSetname = atoi(valbuf);
} else if(!strcmp(strbuf, "control_mode")) {
gameConf.control_mode = atoi(valbuf);
} else if(!strcmp(strbuf, "draw_field_spell")) {
gameConf.draw_field_spell = atoi(valbuf);
} else {
// options allowing multiple words
sscanf(linebuf, "%s = %240[^\n]", strbuf, valbuf);
if (!strcmp(strbuf, "nickname")) {
BufferIO::DecodeUTF8(valbuf, wstr);
BufferIO::CopyWStr(wstr, gameConf.nickname, 20);
}
else if (!strcmp(strbuf, "gamename")) {
} else if (!strcmp(strbuf, "gamename")) {
BufferIO::DecodeUTF8(valbuf, wstr);
BufferIO::CopyWStr(wstr, gameConf.gamename, 20);
}
else if (!strcmp(strbuf, "lastdeck")) {
} else if (!strcmp(strbuf, "lastdeck")) {
BufferIO::DecodeUTF8(valbuf, wstr);
BufferIO::CopyWStr(wstr, gameConf.lastdeck, 64);
}
......@@ -968,6 +974,7 @@ void Game::SaveConfig() {
fprintf(fp, "hide_setname = %d\n", ((mainGame->chkHideSetname->isChecked()) ? 1 : 0));
fprintf(fp, "#control_mode = 0: Key A/S/R. control_mode = 1: MouseLeft/MouseRight/F9\n");
fprintf(fp, "control_mode = %d\n", gameConf.control_mode);
fprintf(fp, "draw_field_spell = %d\n", gameConf.draw_field_spell);
fclose(fp);
}
void Game::ShowCardInfo(int code) {
......
......@@ -33,6 +33,7 @@ struct Config {
int chkIgnore2;
int chkHideSetname;
int control_mode;
int draw_field_spell;
};
struct DuelInfo {
......
......@@ -5,7 +5,8 @@ namespace ygo {
ImageManager imageManager;
bool ImageManager::Initial() {
tCover = driver->getTexture("textures/cover.jpg");
tCover[0] = driver->getTexture("textures/cover.jpg");
tCover[1] = driver->getTexture("textures/cover2.jpg");
tUnknown = driver->getTexture("textures/unknown.jpg");
tAct = driver->getTexture("textures/act.png");
tAttack = driver->getTexture("textures/attack.png");
......@@ -22,7 +23,10 @@ bool ImageManager::Initial() {
tHand[1] = driver->getTexture("textures/f2.jpg");
tHand[2] = driver->getTexture("textures/f3.jpg");
tBackGround = driver->getTexture("textures/bg.jpg");
tBackGround_menu = driver->getTexture("textures/bg_menu.jpg");
tBackGround_deck = driver->getTexture("textures/bg_deck.jpg");
tField = driver->getTexture("textures/field2.png");
tFieldTransparent = driver->getTexture("textures/field-transparent2.png");
return true;
}
void ImageManager::SetDevice(irr::IrrlichtDevice* dev) {
......@@ -91,4 +95,32 @@ irr::video::ITexture* ImageManager::GetTextureThumb(int code) {
else
return tUnknown;
}
irr::video::ITexture* ImageManager::GetTextureField(int code) {
if(code == 0)
return NULL;
auto tit = tFields.find(code);
if(tit == tFields.end()) {
char file[256];
sprintf(file, "pics/field/%d.png", code);
irr::video::ITexture* img = driver->getTexture(file);
if(img == NULL) {
sprintf(file, "pics/field/%d.jpg", code);
img = driver->getTexture(file);
if(img == NULL) {
tFields[code] = NULL;
return NULL;
} else {
tFields[code] = img;
return img;
}
} else {
tFields[code] = img;
return img;
}
}
if(tit->second)
return tit->second;
else
return NULL;
}
}
......@@ -15,12 +15,14 @@ public:
void RemoveTexture(int code);
irr::video::ITexture* GetTexture(int code);
irr::video::ITexture* GetTextureThumb(int code);
irr::video::ITexture* GetTextureField(int code);
std::unordered_map<int, irr::video::ITexture*> tMap;
std::unordered_map<int, irr::video::ITexture*> tThumb;
std::unordered_map<int, irr::video::ITexture*> tFields;
irr::IrrlichtDevice* device;
irr::video::IVideoDriver* driver;
irr::video::ITexture* tCover;
irr::video::ITexture* tCover[2];
irr::video::ITexture* tUnknown;
irr::video::ITexture* tAct;
irr::video::ITexture* tAttack;
......@@ -35,7 +37,10 @@ public:
irr::video::ITexture* tLim;
irr::video::ITexture* tHand[3];
irr::video::ITexture* tBackGround;
irr::video::ITexture* tBackGround_menu;
irr::video::ITexture* tBackGround_deck;
irr::video::ITexture* tField;
irr::video::ITexture* tFieldTransparent;
};
extern ImageManager imageManager;
......
......@@ -41,6 +41,18 @@ Materials::Materials() {
vField[1] = S3DVertex(vector3df(9.0f, -4.0f, 0), vector3df(0, 0, 1), SColor(255, 255, 255, 255), vector2df(1, 0));
vField[2] = S3DVertex(vector3df(-1.0f, 4.0f, 0), vector3df(0, 0, 1), SColor(255, 255, 255, 255), vector2df(0, 1));
vField[3] = S3DVertex(vector3df(9.0f, 4.0f, 0), vector3df(0, 0, 1), SColor(255, 255, 255, 255), vector2df(1, 1));
vFieldSpell[0] = S3DVertex(vector3df(1.2f, -3.2f, 0), vector3df(0, 0, 1), SColor(255, 255, 255, 255), vector2df(0, 0));
vFieldSpell[1] = S3DVertex(vector3df(6.7f, -3.2f, 0), vector3df(0, 0, 1), SColor(255, 255, 255, 255), vector2df(1, 0));
vFieldSpell[2] = S3DVertex(vector3df(1.2f, 3.2f, 0), vector3df(0, 0, 1), SColor(255, 255, 255, 255), vector2df(0, 1));
vFieldSpell[3] = S3DVertex(vector3df(6.7f, 3.2f, 0), vector3df(0, 0, 1), SColor(255, 255, 255, 255), vector2df(1, 1));
vFieldSpell1[0] = S3DVertex(vector3df(1.2f, 0.8f, 0), vector3df(0, 0, 1), SColor(255, 255, 255, 255), vector2df(0, 0));
vFieldSpell1[1] = S3DVertex(vector3df(6.7f, 0.8f, 0), vector3df(0, 0, 1), SColor(255, 255, 255, 255), vector2df(1, 0));
vFieldSpell1[2] = S3DVertex(vector3df(1.2f, 3.2f, 0), vector3df(0, 0, 1), SColor(255, 255, 255, 255), vector2df(0, 1));
vFieldSpell1[3] = S3DVertex(vector3df(6.7f, 3.2f, 0), vector3df(0, 0, 1), SColor(255, 255, 255, 255), vector2df(1, 1));
vFieldSpell2[0] = S3DVertex(vector3df(1.2f, -3.2f, 0), vector3df(0, 0, 1), SColor(255, 255, 255, 255), vector2df(0, 0));
vFieldSpell2[1] = S3DVertex(vector3df(6.7f, -3.2f, 0), vector3df(0, 0, 1), SColor(255, 255, 255, 255), vector2df(1, 0));
vFieldSpell2[2] = S3DVertex(vector3df(1.2f, -0.8f, 0), vector3df(0, 0, 1), SColor(255, 255, 255, 255), vector2df(0, 1));
vFieldSpell2[3] = S3DVertex(vector3df(6.7f, -0.8f, 0), vector3df(0, 0, 1), SColor(255, 255, 255, 255), vector2df(1, 1));
//background grids
for (int i = 0; i < 6; ++i) {
vBackLine[i * 6 + 0] = S3DVertex(vector3df(1.2f + i * 1.1f, 0.5f, -0.01f), vector3df(0, 0, 1), SColor(255, 255, 255, 255), vector2df(0, 0));
......
......@@ -16,6 +16,9 @@ public:
S3DVertex vChainNum[4];
S3DVertex vActivate[4];
S3DVertex vField[4];
S3DVertex vFieldSpell[4];
S3DVertex vFieldSpell1[4];
S3DVertex vFieldSpell2[4];
S3DVertex vBackLine[76];
S3DVertex vFields[136];
S3DVertex vArrow[40];
......
......@@ -164,7 +164,7 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
break;
if(!ReplayMode::cur_replay.OpenReplay(mainGame->lstReplayList->getListItem(mainGame->lstReplayList->getSelected())))
break;
mainGame->imgCard->setImage(imageManager.tCover);
mainGame->imgCard->setImage(imageManager.tCover[0]);
mainGame->wCardImg->setVisible(true);
mainGame->wInfos->setVisible(true);
mainGame->wReplay->setVisible(true);
......
#[2016.4][2016.1][2015.10][2015.4][2015.1][2014.10][2014.7][2014.4][2014.2][2013.9][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]
#[2016.4][2016.1][2015.10][2015.4][2015.1][2014.10][2014.7][2014.4][2014.2][2013.9][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]
!2016.4
#forbidden
20663556 0 --イレカエル
......@@ -1512,6 +1512,179 @@
53582587 2 --激流葬
29401950 2 --奈落の落とし穴
!2016.4 TCG
#forbidden
27279764 0 --アポクリフォート・キラー
20663556 0 --イレカエル
40044918 0 --E·HERO エアーマン
20366274 0 --エルシャドール・ネフィリム
53804307 0 --焔征竜-ブラスター
68819554 0 --Emダメージ・ジャグラー
07563579 0 --Emヒグルミ
44910027 0 --ヴィクトリー・ドラゴン
82301904 0 --混沌帝龍 -終焉の使者-
79106360 0 --カオスポッド
90411554 0 --巌征竜-レドックス
08903700 0 --儀式魔人リリーサー
26202165 0 --クリッター
78010363 0 --黒き森のウィッチ
34124316 0 --サイバーポッド
81122844 0 --発条空母ゼンマイティ
21593977 0 --処刑人-マキュラ
56570271 0 --DHERO ディスクガイ
18326736 0 --星守の騎士 プトレマイオス
69015963 0 --デビル·フランケン
33184167 0 --同族感染ウィルス
54719828 0 --No.16 色の支配者ショック·ルーラー
90307777 0 --影霊衣の術士 シュリット
26400609 0 --瀑征竜-タイダル
50321796 0 --氷結界の龍 ブリューナク
78706415 0 --ファイバーポッド
93369354 0 --フィッシュボーグ-ガンナー
34206604 0 --魔導サイエンティスト
33508719 0 --メタモルポット
96782886 0 --メンタルマスター
03078576 0 --八汰烏
89399912 0 --嵐征竜-テンペスト
34086406 0 --ラヴァルバル·チェイン
46772449 0 --励輝士 ヴェルズビュート
14878871 0 --レスキューキャット
41482598 0 --悪夢の蜃気楼
44763025 0 --いたずら好きな双子悪魔
19613556 0 --大嵐
17375316 0 --押収
74191942 0 --苦渋の選択
42829885 0 --強引な番兵
45986603 0 --強奪
55144522 0 --強欲な壺
04031928 0 --心変わり
23557835 0 --次元融合
83764718 0 --死者蘇生
57953380 0 --生還の宝札
87910978 0 --洗脳-ブレインコントロール
60682203 0 --大寒波
67616300 0 --チキンレース
48130397 0 --超融合
67169062 0 --貪欲な壺
27770341 0 --超再生能力
69243953 0 --蝶の短剣-エルマ
72892473 0 --手札抹殺
79571449 0 --天使の施し
42703248 0 --ハリケーン
18144506 0 --ハーピィの羽根帚
70828912 0 --早すぎた埋葬
34906152 0 --マスドライバー
46448938 0 --魔導書の神判
77565204 0 --未来融合-フューチャー·フュージョン
27970830 0 --六武の門
46411259 0 --突然変異
31222701 0 --揺れる眼差し
85602018 0 --遺言状
27174286 0 --異次元からの帰還
61740673 0 --王宮の勅命
93016201 0 --王宮の弾圧
41420027 0 --神の宣告
57585212 0 --自爆スイッチ
03280747 0 --第六感
64697231 0 --ダスト·シュート
35316708 0 --刻の封印
80604091 0 --血の代償
28566710 0 --ラストバトル!
#limit
85103922 1 --アーティファクト-モラルタ
64034255 1 --A·ジェネクス·バードマン
45222299 1 --イビリチュア·ガストクラーケ
11877465 1 --イビリチュア·マインドオーガス
99177923 1 --インフェルニティ·デーモン
68184115 1 --甲虫装機 ダンセル
69207766 1 --甲虫装機 ホーネット
40318957 1 --EMドクロバット・ジョーカー
17330916 1 --EMモンキーボード
72989439 1 --カオス·ソルジャー -開闢の使者-
17412721 1 --旧神ノーデン
65518099 1 --クリフォート・ツール
72714461 1 --慧眼の魔術師
63519819 1 --サウザンド·アイズ·サクリファイス
12580477 1 --サンダー·ボルト
78868119 1 --深海のディーヴァ
48063985 1 --聖霊獣騎 カンナホーク
59297550 1 --ゼンマイマジシャン
65192027 1 --ダーク·アームド·ドラゴン
15341821 1 --ダンディライオン
90953320 1 --TG ハイパー·ライブラリアン
16226786 1 --深淵の暗殺者
80344569 1 --N·グラン·モール
18239909 1 --爆竜剣士イグニスターP
20758643 1 --彼岸の悪鬼 グラバースニッチ
70583986 1 --氷結界の虎王ドゥローレン
52687916 1 --氷結界の龍 トリシューラ
33396948 1 --封印されしエクゾディア
07902349 1 --封印されし者の左腕
70903634 1 --封印されし者の右腕
44519536 1 --封印されし者の左足
08124921 1 --封印されし者の右足
26674724 1 --ブリューナクの影霊衣
10802915 1 --魔界発現世行きデスガイド
41386308 1 --マスマティシャン
89463537 1 --ユニコールの影霊衣
92746535 1 --竜剣士ラスターP
71564252 1 --ライオウ
85138716 1 --レスキューラビット
88264978 1 --レッドアイズ·ダークネスメタルドラゴン
48976825 1 --異次元からの埋葬
33782437 1 --一時休戦
66957584 1 --インフェルニティガン
06417578 1 --神の写し身との接触
72405967 1 --王家の生け贄
81439173 1 --おろかな埋葬
96729612 1 --儀式の準備
45305419 1 --継承の印
17639150 1 --機殻の生贄
95308449 1 --終焉のカウントダウン
74845897 1 --真炎の爆発
37520316 1 --精神操作
32807846 1 --増援
54447022 1 --ソウル・チャージ
14087893 1 --月の書
81674782 1 --次元の裂け目
70368879 1 --成金ゴブリン
75500286 1 --封印の黄金櫃
15854426 1 --霞の谷の神風
58577036 1 --名推理
43040603 1 --モンスターゲート
23171610 1 --リミッター解除
14733538 1 --竜呼相打つ
02295440 1 --ワン·フォー·ワン
09059700 1 --インフェルニティ・バリア
05851097 1 --虚無空間
84749824 1 --神の警告
94192409 1 --強制脱出装置
53582587 1 --激流葬
82732705 1 --スキルドレイン
73599290 1 --ソウルドレイン
29401950 1 --奈落の落とし穴
83555666 1 --破壊輪
17078030 1 --光の護封壁
30241314 1 --マクロコスモス
32723153 1 --マジカル·エクスプロージョン
54974237 1 --闇のデッキ破壊ウイルス
#semi limit
37742478 2 --オネスト
85087012 2 --カードガンナー
74311226 2 --海皇の竜騎隊
00423585 2 --召喚僧サモンプリースト
14943837 2 --デブリ·ドラゴン
57143342 2 --彼岸の悪鬼 ガトルホッグ
28297833 2 --ネクロフェイス
67723438 2 --緊急テレポート
94886282 2 --光の援軍
53129443 2 --ブラック·ホール
62265044 2 --竜の渓谷
01475311 2 --闇の誘惑
91623717 2 --連鎖爆撃
29843091 2 --おジャマトリオ
36468556 2 --停戦協定
!2015.11 TCG
#forbidden
27279764 0 --アポクリフォート・キラー
......
Subproject commit 799b88b27a3c30e3e3a1534f9a7e6896ef132e6d
Subproject commit e53f2c9558cbfa29aa4c0c5eb2c11f94680f5876
Subproject commit 5cd2d54d7d81391a4932611fa5eacf73bf1d9746
Subproject commit cf86210bf5ef9addf3008bdd912f12a982b9b1ce
......@@ -35,7 +35,7 @@
!system 63 里效果适用中
!system 64 二重状态
!system 65 使用效果
!system 70
!system 70
!system 71 魔法卡
!system 72 陷阱卡
!system 80 进入战斗阶段
......@@ -64,12 +64,12 @@
!system 214 已选择属性:
!system 215 已选择数字:
!system 500 请选择要解放的卡
!system 501 请选择要丢弃的手
!system 501 请选择要丢弃的手
!system 502 请选择要破坏的卡
!system 503 请选择要除外的卡
!system 504 请选择要送去墓地的卡
!system 505 请选择要返回手的卡
!system 506 请选择要加入手的卡
!system 505 请选择要返回手的卡
!system 506 请选择要加入手的卡
!system 507 请选择要返回卡组的卡
!system 508 请选择要召唤的卡
!system 509 请选择要特殊召唤的卡
......@@ -94,7 +94,7 @@
!system 528 请选择要改变表示形式的怪兽
!system 529 请选择自己的卡
!system 530 请选择对方的卡
!system 531 请选择上级召唤用需要解放的怪兽
!system 531 请选择上级召唤用需要解放的怪兽
!system 532 请选择要取除超量素材的怪兽
!system 550 请选择要发动的效果
!system 551 请选择效果的对象
......@@ -111,14 +111,14 @@
!system 566 请选择要发动效果的卡
!system 567 请宣言一个等级
!system 1000 卡组
!system 1001
!system 1001
!system 1002 怪兽区
!system 1003 魔法陷阱区
!system 1004 墓地
!system 1005 除外
!system 1006 额外
!system 1007 叠放
!system 1008 场地魔法
!system 1008 场地区
!system 1009 灵摆区
!system 1010
!system 1011
......@@ -182,9 +182,9 @@
!system 1101 怪兽破坏
!system 1102 卡片除外
!system 1103 送去墓地
!system 1104 返回手
!system 1104 返回手
!system 1105 返回卡组
!system 1106破坏
!system 1106破坏
!system 1107 卡组破坏
!system 1108 抽卡辅助
!system 1109 卡组检索
......@@ -248,7 +248,7 @@
!system 1229 不检查卡组
!system 1230 不洗切卡组
!system 1231 初始LP
!system 1232 初始手数:
!system 1232 初始手数:
!system 1233 每回合抽卡:
!system 1234 主机名称:
!system 1235 主机密码:
......@@ -393,31 +393,31 @@
!victory 0x1b 「鬼计惰天使」效果胜利
!victory 0x20 由于「%ls」的效果获得比赛胜利
#counters
!counter 0x3001 魔力指示物
!counter 0x2 楔指示物
!counter 0x3003 武士道指示物
!counter 0x3004 念力指示物
!counter 0x1 魔力指示物
!counter 0x1002 楔指示物
!counter 0x3 武士道指示物
!counter 0x4 念力指示物
!counter 0x5 光指示物
!counter 0x6 宝玉指示物
!counter 0x7 指示物(剑斗兽之槛)
!counter 0x8 变形斗士指示物
!counter 0x9 毒指示物
!counter 0x1009 毒指示物
!counter 0xa 次世代指示物
!counter 0x300b 指示物(古代的机械城)
!counter 0xb 指示物(古代的机械城)
!counter 0xc 雷指示物
!counter 0xd 强欲指示物
!counter 0xe A指示物
!counter 0x100e A指示物
!counter 0xf 虫指示物
!counter 0x3010 黑羽指示物
!counter 0x10 黑羽指示物
!counter 0x11 超毒指示物
!counter 0x12 机巧指示物
!counter 0x13 混沌指示物
!counter 0x14 指示物(奇迹之侏罗纪蛋)
!counter 0x15 冰指示物
!counter 0x1015 冰指示物
!counter 0x16 魔石指示物
!counter 0x17 橡子指示物
!counter 0x18 花指示物
!counter 0x19 雾指示物
!counter 0x1019 雾指示物
!counter 0x1a 倍倍指示物
!counter 0x1b 时计指示物
!counter 0x1c D指示物
......@@ -425,17 +425,17 @@
!counter 0x1e 门指示物
!counter 0x1f 指示物(巨大战舰)
!counter 0x20 植物指示物
!counter 0x21 守卫指示物
!counter 0x1021 守卫指示物
!counter 0x22 龙神指示物
!counter 0x23 海洋指示物
!counter 0x24 弦指示物
!counter 0x1024 弦指示物
!counter 0x25 年代记指示物
!counter 0x26 指示物(金属射手)
!counter 0x27 指示物(死亡蚊)
!counter 0x3028 指示物(暗黑投射手)
!counter 0x28 指示物(暗黑投射手)
!counter 0x29 指示物(气球蜥蜴)
!counter 0x2a 指示物(魔法防护器)
!counter 0x302b 命运指示物
!counter 0x2b 命运指示物
!counter 0x2c 遵命指示物
!counter 0x2d 指示物(踢火)
!counter 0x2e 鲨指示物
......@@ -446,8 +446,9 @@
!counter 0x33 妖仙指示物
!counter 0x34 指示物(BOX
!counter 0x35 音响指示物
!counter 0x3036 娱乐法师指示物
!counter 0x36 娱乐法师指示物
!counter 0x37 大怪兽指示物
!counter 0x1038 方界指示物
#setnames, using tab for comment
!setname 0x1 正义盟军 AOJ
!setname 0x2 次世代 ジェネクス
......@@ -515,6 +516,7 @@
!setname 0x31 命运女郎 フォーチュンレディ
!setname 0x32 火山 ヴォルカニック
!setname 0x33 黑羽 BF(ブラックフェザー)
!setname 0x1033 强袭黑羽 A BF(アサルト ブラックフェザー)
!setname 0x34 宝玉 宝玉
!setname 0x1034 宝玉兽 宝玉獣
!setname 0x2034 究极宝玉神 究極宝玉神
......@@ -529,7 +531,7 @@
!setname 0x3d 六武众 六武衆
!setname 0x3e 异虫 ワーム
!setname 0x3f 救世 セイヴァー
!setname 0x40 被封印 封印されし
!setname 0x40 被封印 封印されし
!setname 0x41 LV LV(レベル)
!setname 0x42 极星 極星
!setname 0x3042 极星天 極星天
......@@ -707,7 +709,8 @@
!setname 0xcc 占术姬 占術姫
!setname 0xcd 水伶女 アクアアクトレス
!setname 0xce 水族馆 アクアリウム
!setname 0xcf 混沌战士 カオス・ソルジャー
!setname 0xcf 混沌 カオス
!setname 0x10cf 混沌战士 カオス・ソルジャー
!setname 0xd0 威风妖怪 マジェスペクター
!setname 0xd1 灰篮 グレイドル
!setname 0xd2 星兹 Kozmo
......@@ -728,3 +731,7 @@
!setname 0xde 艾克佐迪亚 エクゾディア
!setname 0xdf 月光 ムーンライト
!setname 0xe0 无形噬体 アモルファージ
!setname 0xe1 炼装 メタルフォーゼ
!setname 0xe2 三形金字塔 トラミッド
!setname 0xe3 方界
!setname 0xe4 精灵剑士 エルフの剣士
......@@ -20,3 +20,4 @@ mute_spectators = 0
hide_setname = 0
#control_mode = 0: Key A/S/R. control_mode = 1: MouseLeft/MouseRight/F9
control_mode = 0
draw_field_spell = 1
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