Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Y
ygopro-2pick
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
MyCard
ygopro-2pick
Commits
15192e51
Commit
15192e51
authored
May 28, 2019
by
mercury233
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
https://github.com/Fluorohydride/ygopro
into server
parents
91267a2e
3ad9878f
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
65 additions
and
66 deletions
+65
-66
gframe/client_field.cpp
gframe/client_field.cpp
+7
-7
gframe/client_field.h
gframe/client_field.h
+3
-3
gframe/duelclient.cpp
gframe/duelclient.cpp
+19
-34
gframe/event_handler.cpp
gframe/event_handler.cpp
+4
-2
gframe/game.cpp
gframe/game.cpp
+7
-0
gframe/game.h
gframe/game.h
+1
-0
gframe/replay_mode.cpp
gframe/replay_mode.cpp
+1
-1
gframe/single_duel.cpp
gframe/single_duel.cpp
+1
-1
gframe/single_mode.cpp
gframe/single_mode.cpp
+1
-1
gframe/sound_manager.cpp
gframe/sound_manager.cpp
+2
-0
gframe/tag_duel.cpp
gframe/tag_duel.cpp
+1
-1
strings.conf
strings.conf
+18
-16
No files found.
gframe/client_field.cpp
View file @
15192e51
...
@@ -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
();
}
}
}
}
gframe/client_field.h
View file @
15192e51
...
@@ -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
;
...
...
gframe/duelclient.cpp
View file @
15192e51
...
@@ -343,7 +343,7 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
...
@@ -343,7 +343,7 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
}
}
case
STOC_SELECT_TP
:
{
case
STOC_SELECT_TP
:
{
mainGame
->
gMutex
.
Lock
();
mainGame
->
gMutex
.
Lock
();
mainGame
->
Show
Element
(
mainGame
->
wFTSelect
);
mainGame
->
Popup
Element
(
mainGame
->
wFTSelect
);
mainGame
->
gMutex
.
Unlock
();
mainGame
->
gMutex
.
Unlock
();
break
;
break
;
}
}
...
@@ -939,8 +939,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
...
@@ -939,8 +939,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
}
}
case
HINT_OPSELECTED
:
{
case
HINT_OPSELECTED
:
{
myswprintf
(
textBuffer
,
dataManager
.
GetSysString
(
1510
),
dataManager
.
GetDesc
(
data
));
myswprintf
(
textBuffer
,
dataManager
.
GetSysString
(
1510
),
dataManager
.
GetDesc
(
data
));
mainGame
->
lstLog
->
addItem
(
textBuffer
);
mainGame
->
AddLog
(
textBuffer
);
mainGame
->
logParam
.
push_back
(
0
);
mainGame
->
gMutex
.
Lock
();
mainGame
->
gMutex
.
Lock
();
mainGame
->
SetStaticText
(
mainGame
->
stACMessage
,
310
,
mainGame
->
guiFont
,
textBuffer
);
mainGame
->
SetStaticText
(
mainGame
->
stACMessage
,
310
,
mainGame
->
guiFont
,
textBuffer
);
mainGame
->
PopupElement
(
mainGame
->
wACMessage
,
20
);
mainGame
->
PopupElement
(
mainGame
->
wACMessage
,
20
);
...
@@ -957,8 +956,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
...
@@ -957,8 +956,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
}
}
case
HINT_RACE
:
{
case
HINT_RACE
:
{
myswprintf
(
textBuffer
,
dataManager
.
GetSysString
(
1511
),
dataManager
.
FormatRace
(
data
));
myswprintf
(
textBuffer
,
dataManager
.
GetSysString
(
1511
),
dataManager
.
FormatRace
(
data
));
mainGame
->
lstLog
->
addItem
(
textBuffer
);
mainGame
->
AddLog
(
textBuffer
);
mainGame
->
logParam
.
push_back
(
0
);
mainGame
->
gMutex
.
Lock
();
mainGame
->
gMutex
.
Lock
();
mainGame
->
SetStaticText
(
mainGame
->
stACMessage
,
310
,
mainGame
->
guiFont
,
textBuffer
);
mainGame
->
SetStaticText
(
mainGame
->
stACMessage
,
310
,
mainGame
->
guiFont
,
textBuffer
);
mainGame
->
PopupElement
(
mainGame
->
wACMessage
,
20
);
mainGame
->
PopupElement
(
mainGame
->
wACMessage
,
20
);
...
@@ -968,8 +966,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
...
@@ -968,8 +966,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
}
}
case
HINT_ATTRIB
:
{
case
HINT_ATTRIB
:
{
myswprintf
(
textBuffer
,
dataManager
.
GetSysString
(
1511
),
dataManager
.
FormatAttribute
(
data
));
myswprintf
(
textBuffer
,
dataManager
.
GetSysString
(
1511
),
dataManager
.
FormatAttribute
(
data
));
mainGame
->
lstLog
->
addItem
(
textBuffer
);
mainGame
->
AddLog
(
textBuffer
);
mainGame
->
logParam
.
push_back
(
0
);
mainGame
->
gMutex
.
Lock
();
mainGame
->
gMutex
.
Lock
();
mainGame
->
SetStaticText
(
mainGame
->
stACMessage
,
310
,
mainGame
->
guiFont
,
textBuffer
);
mainGame
->
SetStaticText
(
mainGame
->
stACMessage
,
310
,
mainGame
->
guiFont
,
textBuffer
);
mainGame
->
PopupElement
(
mainGame
->
wACMessage
,
20
);
mainGame
->
PopupElement
(
mainGame
->
wACMessage
,
20
);
...
@@ -979,8 +976,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
...
@@ -979,8 +976,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
}
}
case
HINT_CODE
:
{
case
HINT_CODE
:
{
myswprintf
(
textBuffer
,
dataManager
.
GetSysString
(
1511
),
dataManager
.
GetName
(
data
));
myswprintf
(
textBuffer
,
dataManager
.
GetSysString
(
1511
),
dataManager
.
GetName
(
data
));
mainGame
->
lstLog
->
addItem
(
textBuffer
);
mainGame
->
AddLog
(
textBuffer
,
data
);
mainGame
->
logParam
.
push_back
(
data
);
mainGame
->
gMutex
.
Lock
();
mainGame
->
gMutex
.
Lock
();
mainGame
->
SetStaticText
(
mainGame
->
stACMessage
,
310
,
mainGame
->
guiFont
,
textBuffer
);
mainGame
->
SetStaticText
(
mainGame
->
stACMessage
,
310
,
mainGame
->
guiFont
,
textBuffer
);
mainGame
->
PopupElement
(
mainGame
->
wACMessage
,
20
);
mainGame
->
PopupElement
(
mainGame
->
wACMessage
,
20
);
...
@@ -990,8 +986,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
...
@@ -990,8 +986,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
}
}
case
HINT_NUMBER
:
{
case
HINT_NUMBER
:
{
myswprintf
(
textBuffer
,
dataManager
.
GetSysString
(
1512
),
data
);
myswprintf
(
textBuffer
,
dataManager
.
GetSysString
(
1512
),
data
);
mainGame
->
lstLog
->
addItem
(
textBuffer
);
mainGame
->
AddLog
(
textBuffer
);
mainGame
->
logParam
.
push_back
(
0
);
mainGame
->
gMutex
.
Lock
();
mainGame
->
gMutex
.
Lock
();
mainGame
->
SetStaticText
(
mainGame
->
stACMessage
,
310
,
mainGame
->
guiFont
,
textBuffer
);
mainGame
->
SetStaticText
(
mainGame
->
stACMessage
,
310
,
mainGame
->
guiFont
,
textBuffer
);
mainGame
->
PopupElement
(
mainGame
->
wACMessage
,
20
);
mainGame
->
PopupElement
(
mainGame
->
wACMessage
,
20
);
...
@@ -1871,14 +1866,12 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
...
@@ -1871,14 +1866,12 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
return
true
;
return
true
;
soundManager
.
PlaySoundEffect
(
SOUND_REVEAL
);
soundManager
.
PlaySoundEffect
(
SOUND_REVEAL
);
myswprintf
(
textBuffer
,
dataManager
.
GetSysString
(
207
),
count
);
myswprintf
(
textBuffer
,
dataManager
.
GetSysString
(
207
),
count
);
mainGame
->
lstLog
->
addItem
(
textBuffer
);
mainGame
->
AddLog
(
textBuffer
);
mainGame
->
logParam
.
push_back
(
0
);
for
(
int
i
=
0
;
i
<
count
;
++
i
)
{
for
(
int
i
=
0
;
i
<
count
;
++
i
)
{
pcard
=
*
(
mainGame
->
dField
.
deck
[
player
].
rbegin
()
+
i
);
pcard
=
*
(
mainGame
->
dField
.
deck
[
player
].
rbegin
()
+
i
);
mainGame
->
gMutex
.
Lock
();
mainGame
->
gMutex
.
Lock
();
myswprintf
(
textBuffer
,
L"*[%ls]"
,
dataManager
.
GetName
(
pcard
->
code
));
myswprintf
(
textBuffer
,
L"*[%ls]"
,
dataManager
.
GetName
(
pcard
->
code
));
mainGame
->
lstLog
->
addItem
(
textBuffer
);
mainGame
->
AddLog
(
textBuffer
,
pcard
->
code
);
mainGame
->
logParam
.
push_back
(
pcard
->
code
);
mainGame
->
gMutex
.
Unlock
();
mainGame
->
gMutex
.
Unlock
();
float
shift
=
-
0.15
f
;
float
shift
=
-
0.15
f
;
if
(
player
==
1
)
shift
=
0.15
f
;
if
(
player
==
1
)
shift
=
0.15
f
;
...
@@ -1911,14 +1904,12 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
...
@@ -1911,14 +1904,12 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
return
true
;
return
true
;
soundManager
.
PlaySoundEffect
(
SOUND_REVEAL
);
soundManager
.
PlaySoundEffect
(
SOUND_REVEAL
);
myswprintf
(
textBuffer
,
dataManager
.
GetSysString
(
207
),
count
);
myswprintf
(
textBuffer
,
dataManager
.
GetSysString
(
207
),
count
);
mainGame
->
lstLog
->
addItem
(
textBuffer
);
mainGame
->
AddLog
(
textBuffer
);
mainGame
->
logParam
.
push_back
(
0
);
for
(
int
i
=
0
;
i
<
count
;
++
i
)
{
for
(
int
i
=
0
;
i
<
count
;
++
i
)
{
pcard
=
*
(
mainGame
->
dField
.
extra
[
player
].
rbegin
()
+
i
+
mainGame
->
dField
.
extra_p_count
[
player
]);
pcard
=
*
(
mainGame
->
dField
.
extra
[
player
].
rbegin
()
+
i
+
mainGame
->
dField
.
extra_p_count
[
player
]);
mainGame
->
gMutex
.
Lock
();
mainGame
->
gMutex
.
Lock
();
myswprintf
(
textBuffer
,
L"*[%ls]"
,
dataManager
.
GetName
(
pcard
->
code
));
myswprintf
(
textBuffer
,
L"*[%ls]"
,
dataManager
.
GetName
(
pcard
->
code
));
mainGame
->
lstLog
->
addItem
(
textBuffer
);
mainGame
->
AddLog
(
textBuffer
,
pcard
->
code
);
mainGame
->
logParam
.
push_back
(
pcard
->
code
);
mainGame
->
gMutex
.
Unlock
();
mainGame
->
gMutex
.
Unlock
();
if
(
player
==
0
)
if
(
player
==
0
)
pcard
->
dPos
=
irr
::
core
::
vector3df
(
0
,
-
0.20
f
,
0
);
pcard
->
dPos
=
irr
::
core
::
vector3df
(
0
,
-
0.20
f
,
0
);
...
@@ -1946,8 +1937,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
...
@@ -1946,8 +1937,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
}
}
soundManager
.
PlaySoundEffect
(
SOUND_REVEAL
);
soundManager
.
PlaySoundEffect
(
SOUND_REVEAL
);
myswprintf
(
textBuffer
,
dataManager
.
GetSysString
(
208
),
count
);
myswprintf
(
textBuffer
,
dataManager
.
GetSysString
(
208
),
count
);
mainGame
->
lstLog
->
addItem
(
textBuffer
);
mainGame
->
AddLog
(
textBuffer
);
mainGame
->
logParam
.
push_back
(
0
);
for
(
int
i
=
0
;
i
<
count
;
++
i
)
{
for
(
int
i
=
0
;
i
<
count
;
++
i
)
{
code
=
BufferIO
::
ReadInt32
(
pbuf
);
code
=
BufferIO
::
ReadInt32
(
pbuf
);
c
=
mainGame
->
LocalPlayer
(
BufferIO
::
ReadInt8
(
pbuf
));
c
=
mainGame
->
LocalPlayer
(
BufferIO
::
ReadInt8
(
pbuf
));
...
@@ -1958,8 +1948,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
...
@@ -1958,8 +1948,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
pcard
->
SetCode
(
code
);
pcard
->
SetCode
(
code
);
mainGame
->
gMutex
.
Lock
();
mainGame
->
gMutex
.
Lock
();
myswprintf
(
textBuffer
,
L"*[%ls]"
,
dataManager
.
GetName
(
code
));
myswprintf
(
textBuffer
,
L"*[%ls]"
,
dataManager
.
GetName
(
code
));
mainGame
->
lstLog
->
addItem
(
textBuffer
);
mainGame
->
AddLog
(
textBuffer
,
code
);
mainGame
->
logParam
.
push_back
(
code
);
mainGame
->
gMutex
.
Unlock
();
mainGame
->
gMutex
.
Unlock
();
if
(
l
&
0x41
)
{
if
(
l
&
0x41
)
{
if
(
count
==
1
)
{
if
(
count
==
1
)
{
...
@@ -2890,8 +2879,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
...
@@ -2890,8 +2879,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
}
else
}
else
mainGame
->
WaitFrameSignal
(
30
);
mainGame
->
WaitFrameSignal
(
30
);
myswprintf
(
textBuffer
,
dataManager
.
GetSysString
(
1610
),
dataManager
.
GetName
(
pcard
->
code
),
dataManager
.
FormatLocation
(
l
,
s
),
s
+
1
);
myswprintf
(
textBuffer
,
dataManager
.
GetSysString
(
1610
),
dataManager
.
GetName
(
pcard
->
code
),
dataManager
.
FormatLocation
(
l
,
s
),
s
+
1
);
mainGame
->
lstLog
->
addItem
(
textBuffer
);
mainGame
->
AddLog
(
textBuffer
,
pcard
->
code
);
mainGame
->
logParam
.
push_back
(
pcard
->
code
);
pcard
->
is_highlighting
=
false
;
pcard
->
is_highlighting
=
false
;
}
}
return
true
;
return
true
;
...
@@ -3294,8 +3282,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
...
@@ -3294,8 +3282,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
BufferIO
::
ReadInt32
(
pbuf
);
BufferIO
::
ReadInt32
(
pbuf
);
unsigned
int
code
=
(
unsigned
int
)
BufferIO
::
ReadInt32
(
pbuf
);
unsigned
int
code
=
(
unsigned
int
)
BufferIO
::
ReadInt32
(
pbuf
);
myswprintf
(
textBuffer
,
dataManager
.
GetSysString
(
1622
),
dataManager
.
GetName
(
code
));
myswprintf
(
textBuffer
,
dataManager
.
GetSysString
(
1622
),
dataManager
.
GetName
(
code
));
mainGame
->
lstLog
->
addItem
(
textBuffer
);
mainGame
->
AddLog
(
textBuffer
,
code
);
mainGame
->
logParam
.
push_back
(
code
);
return
true
;
return
true
;
}
}
case
MSG_TOSS_COIN
:
{
case
MSG_TOSS_COIN
:
{
...
@@ -3314,8 +3301,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
...
@@ -3314,8 +3301,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
return
true
;
return
true
;
soundManager
.
PlaySoundEffect
(
SOUND_COIN
);
soundManager
.
PlaySoundEffect
(
SOUND_COIN
);
mainGame
->
gMutex
.
Lock
();
mainGame
->
gMutex
.
Lock
();
mainGame
->
lstLog
->
addItem
(
textBuffer
);
mainGame
->
AddLog
(
textBuffer
);
mainGame
->
logParam
.
push_back
(
0
);
mainGame
->
stACMessage
->
setText
(
textBuffer
);
mainGame
->
stACMessage
->
setText
(
textBuffer
);
mainGame
->
PopupElement
(
mainGame
->
wACMessage
,
20
);
mainGame
->
PopupElement
(
mainGame
->
wACMessage
,
20
);
mainGame
->
gMutex
.
Unlock
();
mainGame
->
gMutex
.
Unlock
();
...
@@ -3338,8 +3324,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
...
@@ -3338,8 +3324,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
return
true
;
return
true
;
soundManager
.
PlaySoundEffect
(
SOUND_DICE
);
soundManager
.
PlaySoundEffect
(
SOUND_DICE
);
mainGame
->
gMutex
.
Lock
();
mainGame
->
gMutex
.
Lock
();
mainGame
->
lstLog
->
addItem
(
textBuffer
);
mainGame
->
AddLog
(
textBuffer
);
mainGame
->
logParam
.
push_back
(
0
);
mainGame
->
stACMessage
->
setText
(
textBuffer
);
mainGame
->
stACMessage
->
setText
(
textBuffer
);
mainGame
->
PopupElement
(
mainGame
->
wACMessage
,
20
);
mainGame
->
PopupElement
(
mainGame
->
wACMessage
,
20
);
mainGame
->
gMutex
.
Unlock
();
mainGame
->
gMutex
.
Unlock
();
...
@@ -3423,7 +3408,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
...
@@ -3423,7 +3408,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
;
...
@@ -3450,7 +3435,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
...
@@ -3450,7 +3435,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
::
Read
U
Int8
(
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
)
...
@@ -3462,7 +3447,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
...
@@ -3462,7 +3447,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
;
...
...
gframe/event_handler.cpp
View file @
15192e51
...
@@ -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
:
{
...
@@ -959,7 +961,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
...
@@ -959,7 +961,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 +970,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
...
@@ -968,7 +970,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
;
}
}
}
}
...
...
gframe/game.cpp
View file @
15192e51
...
@@ -1400,6 +1400,13 @@ void Game::ClearCardInfo(int player) {
...
@@ -1400,6 +1400,13 @@ void Game::ClearCardInfo(int player) {
stText
->
setText
(
L""
);
stText
->
setText
(
L""
);
scrCardText
->
setVisible
(
false
);
scrCardText
->
setVisible
(
false
);
}
}
void
Game
::
AddLog
(
const
wchar_t
*
msg
,
int
param
)
{
logParam
.
push_back
(
param
);
lstLog
->
addItem
(
msg
);
if
(
!
env
->
hasFocus
(
lstLog
))
{
lstLog
->
setSelected
(
-
1
);
}
}
void
Game
::
AddChatMsg
(
const
wchar_t
*
msg
,
int
player
)
{
void
Game
::
AddChatMsg
(
const
wchar_t
*
msg
,
int
player
)
{
for
(
int
i
=
7
;
i
>
0
;
--
i
)
{
for
(
int
i
=
7
;
i
>
0
;
--
i
)
{
chatMsg
[
i
]
=
chatMsg
[
i
-
1
];
chatMsg
[
i
]
=
chatMsg
[
i
-
1
];
...
...
gframe/game.h
View file @
15192e51
...
@@ -153,6 +153,7 @@ public:
...
@@ -153,6 +153,7 @@ public:
void
SaveConfig
();
void
SaveConfig
();
void
ShowCardInfo
(
int
code
,
bool
resize
=
false
);
void
ShowCardInfo
(
int
code
,
bool
resize
=
false
);
void
ClearCardInfo
(
int
player
=
0
);
void
ClearCardInfo
(
int
player
=
0
);
void
AddLog
(
const
wchar_t
*
msg
,
int
param
=
0
);
void
AddChatMsg
(
const
wchar_t
*
msg
,
int
player
);
void
AddChatMsg
(
const
wchar_t
*
msg
,
int
player
);
void
ClearChatMsg
();
void
ClearChatMsg
();
void
AddDebugMsg
(
const
char
*
msgbuf
);
void
AddDebugMsg
(
const
char
*
msgbuf
);
...
...
gframe/replay_mode.cpp
View file @
15192e51
...
@@ -778,7 +778,7 @@ bool ReplayMode::ReplayAnalyze(char* msg, unsigned int len) {
...
@@ -778,7 +778,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
::
Read
U
Int8
(
pbuf
);
pbuf
+=
4
*
count
;
pbuf
+=
4
*
count
;
return
ReadReplayResponse
();
return
ReadReplayResponse
();
}
}
...
...
gframe/single_duel.cpp
View file @
15192e51
...
@@ -1673,7 +1673,7 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1673,7 +1673,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
::
Read
U
Int8
(
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
);
...
...
gframe/single_mode.cpp
View file @
15192e51
...
@@ -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
::
Read
U
Int8
(
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
();
...
...
gframe/sound_manager.cpp
View file @
15192e51
...
@@ -195,6 +195,8 @@ void SoundManager::PlayDialogSound(irr::gui::IGUIElement * element) {
...
@@ -195,6 +195,8 @@ void SoundManager::PlayDialogSound(irr::gui::IGUIElement * element) {
PlaySoundEffect
(
SOUND_QUESTION
);
PlaySoundEffect
(
SOUND_QUESTION
);
}
else
if
(
element
==
mainGame
->
wReplaySave
)
{
}
else
if
(
element
==
mainGame
->
wReplaySave
)
{
PlaySoundEffect
(
SOUND_QUESTION
);
PlaySoundEffect
(
SOUND_QUESTION
);
}
else
if
(
element
==
mainGame
->
wFTSelect
)
{
PlaySoundEffect
(
SOUND_QUESTION
);
}
}
}
}
void
SoundManager
::
PlayMusic
(
char
*
song
,
bool
loop
)
{
void
SoundManager
::
PlayMusic
(
char
*
song
,
bool
loop
)
{
...
...
gframe/tag_duel.cpp
View file @
15192e51
...
@@ -1709,7 +1709,7 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -1709,7 +1709,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
::
Read
U
Int8
(
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
);
...
...
strings.conf
View file @
15192e51
...
@@ -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
准备阶段中
...
@@ -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
开启音效
...
@@ -457,11 +457,11 @@
...
@@ -457,11 +457,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
我方回复%
d
LP
!
system
1615
我方回复%
d
基本分
!
system
1616
对方回复%
d
LP
!
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
]
...
@@ -474,7 +474,7 @@
...
@@ -474,7 +474,7 @@
!
system
1700
可以用鼠标右键%
ls
!
system
1700
可以用鼠标右键%
ls
#victory reason
#victory reason
!
victory
0
x0
投降
!
victory
0
x0
投降
!
victory
0
x1
LP
变成
0
!
victory
0
x1
基本分
变成
0
!
victory
0
x2
没有卡可抽
!
victory
0
x2
没有卡可抽
!
victory
0
x3
超时
!
victory
0
x3
超时
!
victory
0
x4
失去连接
!
victory
0
x4
失去连接
...
@@ -582,7 +582,7 @@
...
@@ -582,7 +582,7 @@
!
setname
0
x7
古代的机械 アンティーク・ギア
!
setname
0
x7
古代的机械 アンティーク・ギア
!
setname
0
x8
英雄
HERO
!
setname
0
x8
英雄
HERO
!
setname
0
x3008
元素英雄
E
・
HERO
!
setname
0
x3008
元素英雄
E
・
HERO
#
setname 0x5008 幻影英雄 V・HERO
!
setname
0
x5008
幻影英雄
V
・
HERO
#setname 0x6008 邪心英雄 E-HERO
#setname 0x6008 邪心英雄 E-HERO
!
setname
0
xa008
假面英雄
M
・
HERO
!
setname
0
xa008
假面英雄
M
・
HERO
!
setname
0
xc008
命运英雄
D
-
HERO
!
setname
0
xc008
命运英雄
D
-
HERO
...
@@ -774,7 +774,7 @@
...
@@ -774,7 +774,7 @@
!
setname
0
x4093
电子暗黑 サイバー・ダーク/サイバーダーク
!
setname
0
x4093
电子暗黑 サイバー・ダーク/サイバーダーク
!
setname
0
x94
电子科技 サイバネティック
!
setname
0
x94
电子科技 サイバネティック
!
setname
0
x95
升阶魔法
RUM
!
setname
0
x95
升阶魔法
RUM
!
setname
0
x96
电子鱼人 フィッシュボーグ
!
setname
0
x96
电子鱼人
|非「电子」
フィッシュボーグ
!
setname
0
x97
古遗物 アーティファクト
!
setname
0
x97
古遗物 アーティファクト
!
setname
0
x98
魔术师 魔術師
!
setname
0
x98
魔术师 魔術師
!
setname
0
x99
异色眼 オッドアイズ
!
setname
0
x99
异色眼 オッドアイズ
...
@@ -803,7 +803,7 @@
...
@@ -803,7 +803,7 @@
!
setname
0
xa9
毛绒动物 ファーニマル
!
setname
0
xa9
毛绒动物 ファーニマル
!
setname
0
xaa
机壳 クリフォート
!
setname
0
xaa
机壳 クリフォート
!
setname
0
x10aa
隐藏的机壳 アポクリフォート
!
setname
0
x10aa
隐藏的机壳 アポクリフォート
!
setname
0
xab
文具电子人 ブンボーグ
!
setname
0
xab
文具电子人
|非「电子」
ブンボーグ
!
setname
0
xac
哥布林 ゴブリン
!
setname
0
xac
哥布林 ゴブリン
!
setname
0
xad
魔玩具 デストーイ
!
setname
0
xad
魔玩具 デストーイ
!
setname
0
xae
契约书 契約書
!
setname
0
xae
契约书 契約書
...
@@ -922,7 +922,7 @@
...
@@ -922,7 +922,7 @@
!
setname
0
x10a
珀耳修斯 パーシアス
!
setname
0
x10a
珀耳修斯 パーシアス
!
setname
0
x10b
廷达魔三角 ティンダングル
!
setname
0
x10b
廷达魔三角 ティンダングル
!
setname
0
x10c
机界骑士 ジャックナイツ
!
setname
0
x10c
机界骑士 ジャックナイツ
!
setname
0
x10d
魔导兽 魔導獣
!
setname
0
x10d
魔导兽
|非「魔导」
魔導獣
!
setname
0
x10e
进化药 進化薬
!
setname
0
x10e
进化药 進化薬
!
setname
0
x10f
枪管 ヴァレル
!
setname
0
x10f
枪管 ヴァレル
!
setname
0
x110
眼纳祭神 アイズ・サクリファイス
!
setname
0
x110
眼纳祭神 アイズ・サクリファイス
...
@@ -956,3 +956,5 @@
...
@@ -956,3 +956,5 @@
!
setname
0
x12b
海晶少女 マリンセス
!
setname
0
x12b
海晶少女 マリンセス
!
setname
0
x12c
天威
!
setname
0
x12c
天威
!
setname
0
x12d
斯摩夫 シムルグ
!
setname
0
x12d
斯摩夫 シムルグ
!
setname
0
x12e
占卜魔女 占い魔女
!
setname
0
x12f
蜂军
B
・
F
(ビー・フォース)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment