Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Y
ygopro
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
List
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
YGOPRO-520DIY
ygopro
Commits
4caba5ff
Commit
4caba5ff
authored
Jun 06, 2018
by
mercury233
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
https://github.com/Fluorohydride/ygopro
parents
0582eabe
6afb4850
Changes
14
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
299 additions
and
44 deletions
+299
-44
gframe/client_field.cpp
gframe/client_field.cpp
+10
-14
gframe/drawing.cpp
gframe/drawing.cpp
+2
-3
gframe/duelclient.cpp
gframe/duelclient.cpp
+11
-6
gframe/event_handler.cpp
gframe/event_handler.cpp
+1
-1
gframe/game.cpp
gframe/game.cpp
+56
-1
gframe/game.h
gframe/game.h
+2
-0
gframe/replay_mode.cpp
gframe/replay_mode.cpp
+1
-0
gframe/single_duel.cpp
gframe/single_duel.cpp
+9
-2
gframe/single_mode.cpp
gframe/single_mode.cpp
+1
-0
gframe/tag_duel.cpp
gframe/tag_duel.cpp
+8
-2
lflist.conf
lflist.conf
+190
-13
ocgcore
ocgcore
+1
-1
script
script
+1
-1
strings.conf
strings.conf
+6
-0
No files found.
gframe/client_field.cpp
View file @
4caba5ff
...
@@ -303,7 +303,6 @@ void ClientField::UpdateCard(int controler, int location, int sequence, char* da
...
@@ -303,7 +303,6 @@ void ClientField::UpdateCard(int controler, int location, int sequence, char* da
}
}
void
ClientField
::
UpdateFieldCard
(
int
controler
,
int
location
,
char
*
data
)
{
void
ClientField
::
UpdateFieldCard
(
int
controler
,
int
location
,
char
*
data
)
{
std
::
vector
<
ClientCard
*>*
lst
=
0
;
std
::
vector
<
ClientCard
*>*
lst
=
0
;
std
::
vector
<
ClientCard
*>::
iterator
cit
;
switch
(
location
)
{
switch
(
location
)
{
case
LOCATION_DECK
:
case
LOCATION_DECK
:
lst
=
&
deck
[
controler
];
lst
=
&
deck
[
controler
];
...
@@ -330,7 +329,7 @@ void ClientField::UpdateFieldCard(int controler, int location, char* data) {
...
@@ -330,7 +329,7 @@ void ClientField::UpdateFieldCard(int controler, int location, char* data) {
if
(
!
lst
)
if
(
!
lst
)
return
;
return
;
int
len
;
int
len
;
for
(
cit
=
lst
->
begin
();
cit
!=
lst
->
end
();
++
cit
)
{
for
(
auto
cit
=
lst
->
begin
();
cit
!=
lst
->
end
();
++
cit
)
{
len
=
BufferIO
::
ReadInt32
(
data
);
len
=
BufferIO
::
ReadInt32
(
data
);
if
(
len
>
8
)
if
(
len
>
8
)
(
*
cit
)
->
UpdateInfo
(
data
);
(
*
cit
)
->
UpdateInfo
(
data
);
...
@@ -338,20 +337,19 @@ void ClientField::UpdateFieldCard(int controler, int location, char* data) {
...
@@ -338,20 +337,19 @@ void ClientField::UpdateFieldCard(int controler, int location, char* data) {
}
}
}
}
void
ClientField
::
ClearCommandFlag
()
{
void
ClientField
::
ClearCommandFlag
()
{
std
::
vector
<
ClientCard
*>::
iterator
cit
;
for
(
auto
cit
=
activatable_cards
.
begin
();
cit
!=
activatable_cards
.
end
();
++
cit
)
for
(
cit
=
activatable_cards
.
begin
();
cit
!=
activatable_cards
.
end
();
++
cit
)
(
*
cit
)
->
cmdFlag
=
0
;
(
*
cit
)
->
cmdFlag
=
0
;
for
(
cit
=
summonable_cards
.
begin
();
cit
!=
summonable_cards
.
end
();
++
cit
)
for
(
auto
cit
=
summonable_cards
.
begin
();
cit
!=
summonable_cards
.
end
();
++
cit
)
(
*
cit
)
->
cmdFlag
=
0
;
(
*
cit
)
->
cmdFlag
=
0
;
for
(
cit
=
spsummonable_cards
.
begin
();
cit
!=
spsummonable_cards
.
end
();
++
cit
)
for
(
auto
cit
=
spsummonable_cards
.
begin
();
cit
!=
spsummonable_cards
.
end
();
++
cit
)
(
*
cit
)
->
cmdFlag
=
0
;
(
*
cit
)
->
cmdFlag
=
0
;
for
(
cit
=
msetable_cards
.
begin
();
cit
!=
msetable_cards
.
end
();
++
cit
)
for
(
auto
cit
=
msetable_cards
.
begin
();
cit
!=
msetable_cards
.
end
();
++
cit
)
(
*
cit
)
->
cmdFlag
=
0
;
(
*
cit
)
->
cmdFlag
=
0
;
for
(
cit
=
ssetable_cards
.
begin
();
cit
!=
ssetable_cards
.
end
();
++
cit
)
for
(
auto
cit
=
ssetable_cards
.
begin
();
cit
!=
ssetable_cards
.
end
();
++
cit
)
(
*
cit
)
->
cmdFlag
=
0
;
(
*
cit
)
->
cmdFlag
=
0
;
for
(
cit
=
reposable_cards
.
begin
();
cit
!=
reposable_cards
.
end
();
++
cit
)
for
(
auto
cit
=
reposable_cards
.
begin
();
cit
!=
reposable_cards
.
end
();
++
cit
)
(
*
cit
)
->
cmdFlag
=
0
;
(
*
cit
)
->
cmdFlag
=
0
;
for
(
cit
=
attackable_cards
.
begin
();
cit
!=
attackable_cards
.
end
();
++
cit
)
for
(
auto
cit
=
attackable_cards
.
begin
();
cit
!=
attackable_cards
.
end
();
++
cit
)
(
*
cit
)
->
cmdFlag
=
0
;
(
*
cit
)
->
cmdFlag
=
0
;
conti_cards
.
clear
();
conti_cards
.
clear
();
deck_act
=
false
;
deck_act
=
false
;
...
@@ -363,15 +361,13 @@ void ClientField::ClearCommandFlag() {
...
@@ -363,15 +361,13 @@ void ClientField::ClearCommandFlag() {
conti_act
=
false
;
conti_act
=
false
;
}
}
void
ClientField
::
ClearSelect
()
{
void
ClientField
::
ClearSelect
()
{
std
::
vector
<
ClientCard
*>::
iterator
cit
;
for
(
auto
cit
=
selectable_cards
.
begin
();
cit
!=
selectable_cards
.
end
();
++
cit
)
{
for
(
cit
=
selectable_cards
.
begin
();
cit
!=
selectable_cards
.
end
();
++
cit
)
{
(
*
cit
)
->
is_selectable
=
false
;
(
*
cit
)
->
is_selectable
=
false
;
(
*
cit
)
->
is_selected
=
false
;
(
*
cit
)
->
is_selected
=
false
;
}
}
}
}
void
ClientField
::
ClearChainSelect
()
{
void
ClientField
::
ClearChainSelect
()
{
std
::
vector
<
ClientCard
*>::
iterator
cit
;
for
(
auto
cit
=
activatable_cards
.
begin
();
cit
!=
activatable_cards
.
end
();
++
cit
)
{
for
(
cit
=
activatable_cards
.
begin
();
cit
!=
activatable_cards
.
end
();
++
cit
)
{
(
*
cit
)
->
cmdFlag
=
0
;
(
*
cit
)
->
cmdFlag
=
0
;
(
*
cit
)
->
chain_code
=
0
;
(
*
cit
)
->
chain_code
=
0
;
(
*
cit
)
->
is_selectable
=
false
;
(
*
cit
)
->
is_selectable
=
false
;
...
...
gframe/drawing.cpp
View file @
4caba5ff
...
@@ -681,8 +681,7 @@ void Game::DrawStatus(ClientCard* pcard, int x1, int y1, int x2, int y2) {
...
@@ -681,8 +681,7 @@ void Game::DrawStatus(ClientCard* pcard, int x1, int y1, int x2, int y2) {
}
}
void
Game
::
DrawGUI
()
{
void
Game
::
DrawGUI
()
{
if
(
imageLoading
.
size
())
{
if
(
imageLoading
.
size
())
{
std
::
map
<
irr
::
gui
::
CGUIImageButton
*
,
int
>::
iterator
mit
;
for
(
auto
mit
=
imageLoading
.
begin
();
mit
!=
imageLoading
.
end
();
++
mit
)
for
(
mit
=
imageLoading
.
begin
();
mit
!=
imageLoading
.
end
();
++
mit
)
mit
->
first
->
setImage
(
imageManager
.
GetTexture
(
mit
->
second
));
mit
->
first
->
setImage
(
imageManager
.
GetTexture
(
mit
->
second
));
imageLoading
.
clear
();
imageLoading
.
clear
();
}
}
...
@@ -781,7 +780,7 @@ void Game::DrawSpec() {
...
@@ -781,7 +780,7 @@ void Game::DrawSpec() {
}
}
case
2
:
{
case
2
:
{
driver
->
draw2DImage
(
imageManager
.
GetTexture
(
showcardcode
),
position2di
(
574
,
150
));
driver
->
draw2DImage
(
imageManager
.
GetTexture
(
showcardcode
),
position2di
(
574
,
150
));
driver
->
draw2DImage
(
imageManager
.
tMask
,
recti
(
574
+
showcarddif
,
150
,
7
6
1
,
404
),
recti
(
0
,
0
,
CARD_IMG_WIDTH
-
showcarddif
,
CARD_IMG_HEIGHT
),
0
,
0
,
true
);
driver
->
draw2DImage
(
imageManager
.
tMask
,
recti
(
574
+
showcarddif
,
150
,
7
5
1
,
404
),
recti
(
0
,
0
,
CARD_IMG_WIDTH
-
showcarddif
,
CARD_IMG_HEIGHT
),
0
,
0
,
true
);
showcarddif
+=
15
;
showcarddif
+=
15
;
if
(
showcarddif
>=
CARD_IMG_WIDTH
)
{
if
(
showcarddif
>=
CARD_IMG_WIDTH
)
{
showcard
=
0
;
showcard
=
0
;
...
...
gframe/duelclient.cpp
View file @
4caba5ff
...
@@ -2206,8 +2206,13 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
...
@@ -2206,8 +2206,13 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
return
true
;
return
true
;
}
}
case
MSG_SHUFFLE_SET_CARD
:
{
case
MSG_SHUFFLE_SET_CARD
:
{
std
::
vector
<
ClientCard
*>::
iterator
cit
;
std
::
vector
<
ClientCard
*>*
lst
=
0
;
int
loc
=
BufferIO
::
ReadInt8
(
pbuf
);
int
count
=
BufferIO
::
ReadInt8
(
pbuf
);
int
count
=
BufferIO
::
ReadInt8
(
pbuf
);
if
(
loc
==
LOCATION_MZONE
)
lst
=
mainGame
->
dField
.
mzone
;
else
lst
=
mainGame
->
dField
.
szone
;
ClientCard
*
mc
[
5
];
ClientCard
*
mc
[
5
];
ClientCard
*
swp
;
ClientCard
*
swp
;
int
c
,
l
,
s
,
ps
;
int
c
,
l
,
s
,
ps
;
...
@@ -2216,7 +2221,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
...
@@ -2216,7 +2221,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
l
=
BufferIO
::
ReadInt8
(
pbuf
);
l
=
BufferIO
::
ReadInt8
(
pbuf
);
s
=
BufferIO
::
ReadInt8
(
pbuf
);
s
=
BufferIO
::
ReadInt8
(
pbuf
);
BufferIO
::
ReadInt8
(
pbuf
);
BufferIO
::
ReadInt8
(
pbuf
);
mc
[
i
]
=
mainGame
->
dField
.
mzone
[
c
][
s
];
mc
[
i
]
=
lst
[
c
][
s
];
mc
[
i
]
->
SetCode
(
0
);
mc
[
i
]
->
SetCode
(
0
);
if
(
!
mainGame
->
dInfo
.
isReplay
||
!
mainGame
->
dInfo
.
isReplaySkiping
)
{
if
(
!
mainGame
->
dInfo
.
isReplay
||
!
mainGame
->
dInfo
.
isReplaySkiping
)
{
mc
[
i
]
->
dPos
=
irr
::
core
::
vector3df
((
3.95
f
-
mc
[
i
]
->
curPos
.
X
)
/
10
,
0
,
0.05
f
);
mc
[
i
]
->
dPos
=
irr
::
core
::
vector3df
((
3.95
f
-
mc
[
i
]
->
curPos
.
X
)
/
10
,
0
,
0.05
f
);
...
@@ -2234,9 +2239,9 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
...
@@ -2234,9 +2239,9 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
BufferIO
::
ReadInt8
(
pbuf
);
BufferIO
::
ReadInt8
(
pbuf
);
ps
=
mc
[
i
]
->
sequence
;
ps
=
mc
[
i
]
->
sequence
;
if
(
l
>
0
)
{
if
(
l
>
0
)
{
swp
=
mainGame
->
dField
.
mzone
[
c
][
s
];
swp
=
lst
[
c
][
s
];
mainGame
->
dField
.
mzone
[
c
][
ps
]
=
swp
;
lst
[
c
][
ps
]
=
swp
;
mainGame
->
dField
.
mzone
[
c
][
s
]
=
mc
[
i
];
lst
[
c
][
s
]
=
mc
[
i
];
mc
[
i
]
->
sequence
=
s
;
mc
[
i
]
->
sequence
=
s
;
swp
->
sequence
=
ps
;
swp
->
sequence
=
ps
;
}
}
...
@@ -2245,7 +2250,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
...
@@ -2245,7 +2250,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
soundManager
.
PlaySoundEffect
(
SOUND_SHUFFLE
);
soundManager
.
PlaySoundEffect
(
SOUND_SHUFFLE
);
for
(
int
i
=
0
;
i
<
count
;
++
i
)
{
for
(
int
i
=
0
;
i
<
count
;
++
i
)
{
mainGame
->
dField
.
MoveCard
(
mc
[
i
],
10
);
mainGame
->
dField
.
MoveCard
(
mc
[
i
],
10
);
for
(
cit
=
mc
[
i
]
->
overlayed
.
begin
();
cit
!=
mc
[
i
]
->
overlayed
.
end
();
++
cit
)
for
(
auto
cit
=
mc
[
i
]
->
overlayed
.
begin
();
cit
!=
mc
[
i
]
->
overlayed
.
end
();
++
cit
)
mainGame
->
dField
.
MoveCard
(
*
cit
,
10
);
mainGame
->
dField
.
MoveCard
(
*
cit
,
10
);
}
}
mainGame
->
WaitFrameSignal
(
11
);
mainGame
->
WaitFrameSignal
(
11
);
...
...
gframe/event_handler.cpp
View file @
4caba5ff
...
@@ -1534,7 +1534,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
...
@@ -1534,7 +1534,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
str
.
append
(
formatBuffer
);
str
.
append
(
formatBuffer
);
}
}
}
}
for
(
std
::
map
<
int
,
int
>::
iterator
ctit
=
mcard
->
counters
.
begin
();
ctit
!=
mcard
->
counters
.
end
();
++
ctit
)
{
for
(
auto
ctit
=
mcard
->
counters
.
begin
();
ctit
!=
mcard
->
counters
.
end
();
++
ctit
)
{
myswprintf
(
formatBuffer
,
L"
\n
[%ls]: %d"
,
dataManager
.
GetCounterName
(
ctit
->
first
),
ctit
->
second
);
myswprintf
(
formatBuffer
,
L"
\n
[%ls]: %d"
,
dataManager
.
GetCounterName
(
ctit
->
first
),
ctit
->
second
);
str
.
append
(
formatBuffer
);
str
.
append
(
formatBuffer
);
}
}
...
...
gframe/game.cpp
View file @
4caba5ff
...
@@ -12,10 +12,15 @@
...
@@ -12,10 +12,15 @@
#ifndef _WIN32
#ifndef _WIN32
#include <sys/types.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
#include <dirent.h>
#include <unistd.h>
#else
#include <direct.h>
#include <io.h>
#endif
#endif
const
unsigned
short
PRO_VERSION
=
0x134
3
;
const
unsigned
short
PRO_VERSION
=
0x134
4
;
namespace
ygo
{
namespace
ygo
{
...
@@ -23,6 +28,7 @@ Game* mainGame;
...
@@ -23,6 +28,7 @@ Game* mainGame;
bool
Game
::
Initialize
()
{
bool
Game
::
Initialize
()
{
srand
(
time
(
0
));
srand
(
time
(
0
));
initUtils
();
LoadConfig
();
LoadConfig
();
irr
::
SIrrlichtCreationParameters
params
=
irr
::
SIrrlichtCreationParameters
();
irr
::
SIrrlichtCreationParameters
params
=
irr
::
SIrrlichtCreationParameters
();
params
.
AntiAlias
=
gameConf
.
antialias
;
params
.
AntiAlias
=
gameConf
.
antialias
;
...
@@ -1344,6 +1350,52 @@ void Game::AddDebugMsg(char* msg)
...
@@ -1344,6 +1350,52 @@ void Game::AddDebugMsg(char* msg)
fclose
(
fp
);
fclose
(
fp
);
}
}
}
}
bool
Game
::
MakeDirectory
(
const
std
::
string
folder
)
{
std
::
string
folder_builder
;
std
::
string
sub
;
sub
.
reserve
(
folder
.
size
());
for
(
auto
it
=
folder
.
begin
();
it
!=
folder
.
end
();
++
it
)
{
const
char
c
=
*
it
;
sub
.
push_back
(
c
);
if
(
c
==
'/'
||
it
==
folder
.
end
()
-
1
)
{
folder_builder
.
append
(
sub
);
if
(
access
(
folder_builder
.
c_str
(),
0
)
!=
0
)
#ifdef _WIN32
if
(
mkdir
(
folder_builder
.
c_str
())
!=
0
)
#else
if
(
mkdir
(
folder_builder
.
c_str
(),
0777
)
!=
0
)
#endif
return
false
;
sub
.
clear
();
}
}
return
true
;
}
void
Game
::
initUtils
()
{
//user files
MakeDirectory
(
"replay"
);
//cards from extra pack
MakeDirectory
(
"expansions"
);
//files in ygopro-starter-pack
MakeDirectory
(
"deck"
);
MakeDirectory
(
"single"
);
//original files
MakeDirectory
(
"script"
);
MakeDirectory
(
"textures"
);
//sound
MakeDirectory
(
"sound"
);
MakeDirectory
(
"sound/BGM"
);
MakeDirectory
(
"sound/BGM/advantage"
);
MakeDirectory
(
"sound/BGM/deck"
);
MakeDirectory
(
"sound/BGM/disadvantage"
);
MakeDirectory
(
"sound/BGM/duel"
);
MakeDirectory
(
"sound/BGM/lose"
);
MakeDirectory
(
"sound/BGM/menu"
);
MakeDirectory
(
"sound/BGM/win"
);
//pics
MakeDirectory
(
"pics"
);
MakeDirectory
(
"pics/field"
);
}
void
Game
::
ClearTextures
()
{
void
Game
::
ClearTextures
()
{
matManager
.
mCard
.
setTexture
(
0
,
0
);
matManager
.
mCard
.
setTexture
(
0
,
0
);
imgCard
->
setImage
(
imageManager
.
tCover
[
0
]);
imgCard
->
setImage
(
imageManager
.
tCover
[
0
]);
...
@@ -1381,6 +1433,9 @@ void Game::CloseDuelWindow() {
...
@@ -1381,6 +1433,9 @@ void Game::CloseDuelWindow() {
wReplaySave
->
setVisible
(
false
);
wReplaySave
->
setVisible
(
false
);
stHintMsg
->
setVisible
(
false
);
stHintMsg
->
setVisible
(
false
);
btnSideOK
->
setVisible
(
false
);
btnSideOK
->
setVisible
(
false
);
btnSideShuffle
->
setVisible
(
false
);
btnSideSort
->
setVisible
(
false
);
btnSideReload
->
setVisible
(
false
);
btnLeaveGame
->
setVisible
(
false
);
btnLeaveGame
->
setVisible
(
false
);
btnSpectatorSwap
->
setVisible
(
false
);
btnSpectatorSwap
->
setVisible
(
false
);
btnChainIgnore
->
setVisible
(
false
);
btnChainIgnore
->
setVisible
(
false
);
...
...
gframe/game.h
View file @
4caba5ff
...
@@ -133,6 +133,8 @@ public:
...
@@ -133,6 +133,8 @@ public:
void
AddChatMsg
(
wchar_t
*
msg
,
int
player
);
void
AddChatMsg
(
wchar_t
*
msg
,
int
player
);
void
ClearChatMsg
();
void
ClearChatMsg
();
void
AddDebugMsg
(
char
*
msgbuf
);
void
AddDebugMsg
(
char
*
msgbuf
);
bool
MakeDirectory
(
const
std
::
string
folder
);
void
initUtils
();
void
ClearTextures
();
void
ClearTextures
();
void
CloseDuelWindow
();
void
CloseDuelWindow
();
...
...
gframe/replay_mode.cpp
View file @
4caba5ff
...
@@ -497,6 +497,7 @@ bool ReplayMode::ReplayAnalyze(char* msg, unsigned int len) {
...
@@ -497,6 +497,7 @@ bool ReplayMode::ReplayAnalyze(char* msg, unsigned int len) {
break
;
break
;
}
}
case
MSG_SHUFFLE_SET_CARD
:
{
case
MSG_SHUFFLE_SET_CARD
:
{
pbuf
++
;
count
=
BufferIO
::
ReadInt8
(
pbuf
);
count
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
count
*
8
;
pbuf
+=
count
*
8
;
DuelClient
::
ClientAnalyze
(
offset
,
pbuf
-
offset
);
DuelClient
::
ClientAnalyze
(
offset
,
pbuf
-
offset
);
...
...
gframe/single_duel.cpp
View file @
4caba5ff
...
@@ -874,14 +874,21 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -874,14 +874,21 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
break
;
break
;
}
}
case
MSG_SHUFFLE_SET_CARD
:
{
case
MSG_SHUFFLE_SET_CARD
:
{
int
loc
=
BufferIO
::
ReadInt8
(
pbuf
);
count
=
BufferIO
::
ReadInt8
(
pbuf
);
count
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
count
*
8
;
pbuf
+=
count
*
8
;
NetServer
::
SendBufferToPlayer
(
players
[
0
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
NetServer
::
SendBufferToPlayer
(
players
[
0
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
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
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
RefreshMzone
(
0
,
0x181fff
,
0
);
if
(
loc
==
LOCATION_MZONE
)
{
RefreshMzone
(
1
,
0x181fff
,
0
);
RefreshMzone
(
0
,
0x181fff
,
0
);
RefreshMzone
(
1
,
0x181fff
,
0
);
}
else
{
RefreshSzone
(
0
,
0x181fff
,
0
);
RefreshSzone
(
1
,
0x181fff
,
0
);
}
break
;
break
;
}
}
case
MSG_NEW_TURN
:
{
case
MSG_NEW_TURN
:
{
...
...
gframe/single_mode.cpp
View file @
4caba5ff
...
@@ -415,6 +415,7 @@ bool SingleMode::SinglePlayAnalyze(char* msg, unsigned int len) {
...
@@ -415,6 +415,7 @@ bool SingleMode::SinglePlayAnalyze(char* msg, unsigned int len) {
break
;
break
;
}
}
case
MSG_SHUFFLE_SET_CARD
:
{
case
MSG_SHUFFLE_SET_CARD
:
{
pbuf
++
;
count
=
BufferIO
::
ReadInt8
(
pbuf
);
count
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
count
*
8
;
pbuf
+=
count
*
8
;
DuelClient
::
ClientAnalyze
(
offset
,
pbuf
-
offset
);
DuelClient
::
ClientAnalyze
(
offset
,
pbuf
-
offset
);
...
...
gframe/tag_duel.cpp
View file @
4caba5ff
...
@@ -832,6 +832,7 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -832,6 +832,7 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
break
;
break
;
}
}
case
MSG_SHUFFLE_SET_CARD
:
{
case
MSG_SHUFFLE_SET_CARD
:
{
int
loc
=
BufferIO
::
ReadInt8
(
pbuf
);
count
=
BufferIO
::
ReadInt8
(
pbuf
);
count
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
count
*
8
;
pbuf
+=
count
*
8
;
NetServer
::
SendBufferToPlayer
(
players
[
0
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
NetServer
::
SendBufferToPlayer
(
players
[
0
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
...
@@ -840,8 +841,13 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
...
@@ -840,8 +841,13 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
NetServer
::
ReSendToPlayer
(
*
oit
);
RefreshMzone
(
0
,
0x181fff
,
0
);
if
(
loc
==
LOCATION_MZONE
)
{
RefreshMzone
(
1
,
0x181fff
,
0
);
RefreshMzone
(
0
,
0x181fff
,
0
);
RefreshMzone
(
1
,
0x181fff
,
0
);
}
else
{
RefreshSzone
(
0
,
0x181fff
,
0
);
RefreshSzone
(
1
,
0x181fff
,
0
);
}
break
;
break
;
}
}
case
MSG_NEW_TURN
:
{
case
MSG_NEW_TURN
:
{
...
...
lflist.conf
View file @
4caba5ff
#[2018.4][2018.
2 TCG][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
][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]
#[2018.4][2018.
5 TCG][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][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]
!
2018
.
4
!
2018
.
4
#forbidden
#forbidden
20663556
0
--イレカエル
20663556
0
--イレカエル
...
@@ -161,12 +161,14 @@
...
@@ -161,12 +161,14 @@
41420027
2
--神の宣告
41420027
2
--神の宣告
40605147
2
--神の通告
40605147
2
--神の通告
!
2018
.
2
TCG
!
2018
.
5
TCG
#forbidden
#forbidden
76794549
0
--アストログラフ・マジシャン
20663556
0
--イレカエル
20663556
0
--イレカエル
44910027
0
--ヴィクトリー・ドラゴン
44910027
0
--ヴィクトリー・ドラゴン
20366274
0
--エルシャドール・ネフィリム
20366274
0
--エルシャドール・ネフィリム
40044918
0
--
E
·
HERO
エアーマン
40044918
0
--
E
·
HERO
エアーマン
25862681
0
--エンシェント・フェアリー・ドラゴン
53804307
0
--焔征竜-ブラスター
53804307
0
--焔征竜-ブラスター
07563579
0
--
Em
ヒグルミ
07563579
0
--
Em
ヒグルミ
40318957
0
--
EM
ドクロバット・ジョーカー
40318957
0
--
EM
ドクロバット・ジョーカー
...
@@ -184,21 +186,22 @@
...
@@ -184,21 +186,22 @@
85115440
0
--十二獣ブルホーン
85115440
0
--十二獣ブルホーン
21593977
0
--処刑人-マキュラ
21593977
0
--処刑人-マキュラ
30539496
0
--真竜皇リトスアジム
D
30539496
0
--真竜皇リトスアジム
D
58984738
0
--真竜拳士ダイナマイト
K
21377582
0
--真竜剣皇マスター
P
81122844
0
--発条空母ゼンマイティ
81122844
0
--発条空母ゼンマイティ
23434538
0
--増殖する
G
23434538
0
--増殖する
G
00581014
0
--ダイガスタ・エメラル
00581014
0
--ダイガスタ・エメラル
15341821
0
--ダンディライオン
15341821
0
--ダンディライオン
61468779
0
--地霊神グランソイル
56570271
0
--
D
-
HERO
ディスクガイ
56570271
0
--
D
-
HERO
ディスクガイ
69015963
0
--デビル·フランケン
69015963
0
--デビル·フランケン
18326736
0
--星守の騎士 プトレマイオス
18326736
0
--星守の騎士 プトレマイオス
33184167
0
--同族感染ウィルス
33184167
0
--同族感染ウィルス
90307777
0
--影霊衣の術士 シュリット
90307777
0
--影霊衣の術士 シュリット
54719828
0
--
No
.
16
色の支配者ショック·ルーラー
54719828
0
--
No
.
16
色の支配者ショック·ルーラー
43387895
0
--覇王眷竜スターヴ・ヴェノム
26400609
0
--瀑征竜-タイダル
26400609
0
--瀑征竜-タイダル
78706415
0
--ファイバーポッド
78706415
0
--ファイバーポッド
93369354
0
--フィッシュボーグ-ガンナー
93369354
0
--フィッシュボーグ-ガンナー
23558733
0
--フェニキシアン・クラスター・アマリリス
09929398
0
--
BF
-朧影のゴウフウ
09929398
0
--
BF
-朧影のゴウフウ
31178212
0
--マジェスペクター・ユニコーン
31178212
0
--マジェスペクター・ユニコーン
34206604
0
--魔導サイエンティスト
34206604
0
--魔導サイエンティスト
...
@@ -229,6 +232,7 @@
...
@@ -229,6 +232,7 @@
69243953
0
--蝶の短剣-エルマ
69243953
0
--蝶の短剣-エルマ
72892473
0
--手札抹殺
72892473
0
--手札抹殺
79571449
0
--天使の施し
79571449
0
--天使の施し
11110587
0
--隣の芝刈り
42703248
0
--ハリケーン
42703248
0
--ハリケーン
18144506
0
--ハーピィの羽根帚
18144506
0
--ハーピィの羽根帚
70828912
0
--早すぎた埋葬
70828912
0
--早すぎた埋葬
...
@@ -236,6 +240,7 @@
...
@@ -236,6 +240,7 @@
46448938
0
--魔導書の神判
46448938
0
--魔導書の神判
46411259
0
--突然変異
46411259
0
--突然変異
85602018
0
--遺言状
85602018
0
--遺言状
94220427
0
--
RUM
-アージェント・カオス・フォース
27174286
0
--異次元からの帰還
27174286
0
--異次元からの帰還
93016201
0
--王宮の弾圧
93016201
0
--王宮の弾圧
05851097
0
--虚無空間
05851097
0
--虚無空間
...
@@ -246,7 +251,6 @@
...
@@ -246,7 +251,6 @@
80604091
0
--血の代償
80604091
0
--血の代償
28566710
0
--ラストバトル!
28566710
0
--ラストバトル!
#limit
#limit
27279764
1
--アポクリフォート・キラー
64034255
1
--
A
·ジェネクス·バードマン
64034255
1
--
A
·ジェネクス·バードマン
45222299
1
--イビリチュア·ガストクラーケ
45222299
1
--イビリチュア·ガストクラーケ
11877465
1
--イビリチュア·マインドオーガス
11877465
1
--イビリチュア·マインドオーガス
...
@@ -258,9 +262,10 @@
...
@@ -258,9 +262,10 @@
65518099
1
--クリフォート・ツール
65518099
1
--クリフォート・ツール
38572779
1
--幻創のミセラサウルス
38572779
1
--幻創のミセラサウルス
55885348
1
--
Kozmo
-ダークシミター
55885348
1
--
Kozmo
-ダークシミター
39512984
1
--ジェムナイトマスター・ダイヤ
78872731
1
--十二獣モルモラット
78872731
1
--十二獣モルモラット
78868119
1
--深海のディーヴァ
78868119
1
--深海のディーヴァ
22499034
1
--真竜戦士イグニス
H
58984738
1
--真竜拳士ダイナマイト
K
04474060
1
--
SPYRAL
GEAR
-ドローン
04474060
1
--
SPYRAL
GEAR
-ドローン
78080961
1
--
SPYRAL
-ジーニアス
78080961
1
--
SPYRAL
-ジーニアス
81275020
1
--
SR
ベイゴマックス
81275020
1
--
SR
ベイゴマックス
...
@@ -269,7 +274,6 @@
...
@@ -269,7 +274,6 @@
96570609
1
--天帝アイテール
96570609
1
--天帝アイテール
75732622
1
--トーチ・ゴーレム
75732622
1
--トーチ・ゴーレム
16226786
1
--深淵の暗殺者
16226786
1
--深淵の暗殺者
80344569
1
--
N
·グラン·モール
18239909
1
--爆竜剣士イグニスター
P
18239909
1
--爆竜剣士イグニスター
P
57143342
1
--彼岸の悪鬼 ガトルホッグ
57143342
1
--彼岸の悪鬼 ガトルホッグ
20758643
1
--彼岸の悪鬼 グラバースニッチ
20758643
1
--彼岸の悪鬼 グラバースニッチ
...
@@ -302,8 +306,8 @@
...
@@ -302,8 +306,8 @@
14087893
1
--月の書
14087893
1
--月の書
81674782
1
--次元の裂け目
81674782
1
--次元の裂け目
83764718
1
--死者蘇生
83764718
1
--死者蘇生
91623717
1
--連鎖爆撃
79844764
1
--帝王の烈旋
79844764
1
--帝王の烈旋
11110587
1
--隣の芝刈り
70368879
1
--成金ゴブリン
70368879
1
--成金ゴブリン
22842126
1
--汎神の帝王
22842126
1
--汎神の帝王
53129443
1
--ブラック·ホール
53129443
1
--ブラック·ホール
...
@@ -319,23 +323,20 @@
...
@@ -319,23 +323,20 @@
61740673
1
--王宮の勅命
61740673
1
--王宮の勅命
84749824
1
--神の警告
84749824
1
--神の警告
41420027
1
--神の宣告
41420027
1
--神の宣告
94192409
1
--強制脱出装置
82732705
1
--スキルドレイン
82732705
1
--スキルドレイン
73599290
1
--ソウルドレイン
73599290
1
--ソウルドレイン
83555666
1
--破壊輪
17078030
1
--光の護封壁
17078030
1
--光の護封壁
30241314
1
--マクロコスモス
30241314
1
--マクロコスモス
32723153
1
--マジカル·エクスプロージョン
32723153
1
--マジカル·エクスプロージョン
54974237
1
--闇のデッキ破壊ウイルス
54974237
1
--闇のデッキ破壊ウイルス
#semi limit
#semi limit
74311226
2
--海皇の竜騎隊
27279764
2
--アポクリフォート・キラー
59297550
2
--ゼンマイマジシャン
59297550
2
--ゼンマイマジシャン
90953320
2
--
TG
ハイパー·ライブラリアン
90953320
2
--
TG
ハイパー·ライブラリアン
28297833
2
--ネクロフェイス
28297833
2
--ネクロフェイス
41386308
2
--マスマティシャン
92746535
2
--竜剣士ラスター
P
92746535
2
--竜剣士ラスター
P
48976825
2
--異次元からの埋葬
48976825
2
--異次元からの埋葬
91623717
2
--連鎖爆撃
83555666
2
--破壊輪
!
2018
.
1
!
2018
.
1
#forbidden
#forbidden
...
@@ -2924,6 +2925,182 @@
...
@@ -2924,6 +2925,182 @@
53582587
2
--激流葬
53582587
2
--激流葬
29401950
2
--奈落の落とし穴
29401950
2
--奈落の落とし穴
!
2018
.
2
TCG
#forbidden
20663556
0
--イレカエル
44910027
0
--ヴィクトリー・ドラゴン
20366274
0
--エルシャドール・ネフィリム
40044918
0
--
E
·
HERO
エアーマン
53804307
0
--焔征竜-ブラスター
07563579
0
--
Em
ヒグルミ
40318957
0
--
EM
ドクロバット・ジョーカー
17330916
0
--
EM
モンキーボード
82301904
0
--混沌帝龍 -終焉の使者-
79106360
0
--カオスポッド
90411554
0
--巌征竜-レドックス
08903700
0
--儀式魔人リリーサー
17412721
0
--旧神ノーデン
65536818
0
--源竜星-ボウテンコウ
49684352
0
--虹彩の魔術師
34124316
0
--サイバーポッド
88071625
0
--
The
tyrant
NEPTUNE
48905153
0
--十二獣ドランシア
85115440
0
--十二獣ブルホーン
21593977
0
--処刑人-マキュラ
30539496
0
--真竜皇リトスアジム
D
58984738
0
--真竜拳士ダイナマイト
K
81122844
0
--発条空母ゼンマイティ
23434538
0
--増殖する
G
00581014
0
--ダイガスタ・エメラル
15341821
0
--ダンディライオン
61468779
0
--地霊神グランソイル
56570271
0
--
D
-
HERO
ディスクガイ
69015963
0
--デビル·フランケン
18326736
0
--星守の騎士 プトレマイオス
33184167
0
--同族感染ウィルス
90307777
0
--影霊衣の術士 シュリット
54719828
0
--
No
.
16
色の支配者ショック·ルーラー
26400609
0
--瀑征竜-タイダル
78706415
0
--ファイバーポッド
93369354
0
--フィッシュボーグ-ガンナー
09929398
0
--
BF
-朧影のゴウフウ
31178212
0
--マジェスペクター・ユニコーン
34206604
0
--魔導サイエンティスト
33508719
0
--メタモルポット
96782886
0
--メンタルマスター
03078576
0
--八汰烏
34086406
0
--ラヴァルバル·チェイン
89399912
0
--嵐征竜-テンペスト
46772449
0
--励輝士 ヴェルズビュート
57421866
0
--レベル・スティーラー
41482598
0
--悪夢の蜃気楼
44763025
0
--いたずら好きな双子悪魔
19613556
0
--大嵐
17375316
0
--押収
35059553
0
--カイザーコロシアム
74191942
0
--苦渋の選択
42829885
0
--強引な番兵
45986603
0
--強奪
55144522
0
--強欲な壺
04031928
0
--心変わり
23557835
0
--次元融合
57953380
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
--魔導書の神判
46411259
0
--突然変異
85602018
0
--遺言状
27174286
0
--異次元からの帰還
93016201
0
--王宮の弾圧
05851097
0
--虚無空間
57585212
0
--自爆スイッチ
03280747
0
--第六感
64697231
0
--ダスト·シュート
35316708
0
--刻の封印
80604091
0
--血の代償
28566710
0
--ラストバトル!
#limit
27279764
1
--アポクリフォート・キラー
64034255
1
--
A
·ジェネクス·バードマン
45222299
1
--イビリチュア·ガストクラーケ
11877465
1
--イビリチュア·マインドオーガス
99177923
1
--インフェルニティ·デーモン
68184115
1
--甲虫装機 ダンセル
69207766
1
--甲虫装機 ホーネット
27552504
1
--永遠の淑女 ベアトリーチェ
68819554
1
--
Em
ダメージ・ジャグラー
65518099
1
--クリフォート・ツール
38572779
1
--幻創のミセラサウルス
55885348
1
--
Kozmo
-ダークシミター
78872731
1
--十二獣モルモラット
78868119
1
--深海のディーヴァ
22499034
1
--真竜戦士イグニス
H
04474060
1
--
SPYRAL
GEAR
-ドローン
78080961
1
--
SPYRAL
-ジーニアス
81275020
1
--
SR
ベイゴマックス
48063985
1
--聖霊獣騎 カンナホーク
65192027
1
--ダーク·アームド·ドラゴン
96570609
1
--天帝アイテール
75732622
1
--トーチ・ゴーレム
16226786
1
--深淵の暗殺者
80344569
1
--
N
·グラン·モール
18239909
1
--爆竜剣士イグニスター
P
57143342
1
--彼岸の悪鬼 ガトルホッグ
20758643
1
--彼岸の悪鬼 グラバースニッチ
70583986
1
--氷結界の虎王ドゥローレン
52687916
1
--氷結界の龍 トリシューラ
05043010
1
--ファイアウォール・ドラゴン
33396948
1
--封印されしエクゾディア
07902349
1
--封印されし者の左腕
70903634
1
--封印されし者の右腕
44519536
1
--封印されし者の左足
08124921
1
--封印されし者の右足
26674724
1
--ブリューナクの影霊衣
10802915
1
--魔界発現世行きデスガイド
89463537
1
--ユニコールの影霊衣
88264978
1
--レッドアイズ·ダークネスメタルドラゴン
33782437
1
--一時休戦
66957584
1
--インフェルニティガン
72405967
1
--王家の生け贄
81439173
1
--おろかな埋葬
67723438
1
--緊急テレポート
45305419
1
--継承の印
99330325
1
--妨げられた壊獣の眠り
12580477
1
--サンダー·ボルト
95308449
1
--終焉のカウントダウン
74845897
1
--真炎の爆発
35125879
1
--真竜皇の復活
54631665
1
--
SPYRAL
RESORT
32807846
1
--増援
54447022
1
--ソウル・チャージ
14087893
1
--月の書
81674782
1
--次元の裂け目
83764718
1
--死者蘇生
79844764
1
--帝王の烈旋
11110587
1
--隣の芝刈り
70368879
1
--成金ゴブリン
22842126
1
--汎神の帝王
53129443
1
--ブラック·ホール
73468603
1
--盆回し
15854426
1
--霞の谷の神風
58577036
1
--名推理
43040603
1
--モンスターゲート
23171610
1
--リミッター解除
14733538
1
--竜呼相打つ
27970830
1
--六武の門
02295440
1
--ワン·フォー·ワン
09059700
1
--インフェルニティ・バリア
61740673
1
--王宮の勅命
84749824
1
--神の警告
41420027
1
--神の宣告
94192409
1
--強制脱出装置
82732705
1
--スキルドレイン
73599290
1
--ソウルドレイン
83555666
1
--破壊輪
17078030
1
--光の護封壁
30241314
1
--マクロコスモス
32723153
1
--マジカル·エクスプロージョン
54974237
1
--闇のデッキ破壊ウイルス
#semi limit
74311226
2
--海皇の竜騎隊
59297550
2
--ゼンマイマジシャン
90953320
2
--
TG
ハイパー·ライブラリアン
28297833
2
--ネクロフェイス
41386308
2
--マスマティシャン
92746535
2
--竜剣士ラスター
P
48976825
2
--異次元からの埋葬
91623717
2
--連鎖爆撃
!
2017
.
11
TCG
!
2017
.
11
TCG
#forbidden
#forbidden
27279764
0
--アポクリフォート・キラー
27279764
0
--アポクリフォート・キラー
...
...
ocgcore
@
5d43ab2b
Subproject commit
3c33920e28aee1361ddcfc805bf992247195b43d
Subproject commit
5d43ab2b741fa770b4463e1f6a34c68f543ba31f
script
@
77b486a9
Subproject commit
63aa6c77dae13e742d43f92528ca7a84ec80b7d8
Subproject commit
77b486a913a2552af9e74ec69189b66930bfbaac
strings.conf
View file @
4caba5ff
...
@@ -240,6 +240,9 @@
...
@@ -240,6 +240,9 @@
!
system
1161
效果处理
!
system
1161
效果处理
!
system
1162
效果重置
!
system
1162
效果重置
!
system
1163
灵摆召唤
!
system
1163
灵摆召唤
!
system
1164
同调召唤
!
system
1165
超量召唤
!
system
1166
连接召唤
#menu
#menu
!
system
1200
联机模式
!
system
1200
联机模式
!
system
1201
单人模式
!
system
1201
单人模式
...
@@ -412,6 +415,7 @@
...
@@ -412,6 +415,7 @@
!
system
1418
额外卡组数量应不超过
15
张,当前卡组数量为%
d
张。
!
system
1418
额外卡组数量应不超过
15
张,当前卡组数量为%
d
张。
!
system
1419
副卡组数量应不超过
15
张,当前卡组数量为%
d
张。
!
system
1419
副卡组数量应不超过
15
张,当前卡组数量为%
d
张。
!
system
1420
有额外卡组卡片存在于主卡组,可能是额外卡组数量超过
15
张。
!
system
1420
有额外卡组卡片存在于主卡组,可能是额外卡组数量超过
15
张。
!
system
1421
宣言的卡不符合条件,或无法被主机识别。
!
system
1500
决斗结束。
!
system
1500
决斗结束。
!
system
1501
录像结束。
!
system
1501
录像结束。
!
system
1502
连接已断开。
!
system
1502
连接已断开。
...
@@ -464,6 +468,8 @@
...
@@ -464,6 +468,8 @@
!
victory
0
x1a
「魂之接力」效果胜利
!
victory
0
x1a
「魂之接力」效果胜利
!
victory
0
x1b
「鬼计惰天使」效果胜利
!
victory
0
x1b
「鬼计惰天使」效果胜利
!
victory
0
x1c
「幻煌龙的天涡」效果胜利
!
victory
0
x1c
「幻煌龙的天涡」效果胜利
!
victory
0
x1d
「方程式运动员胜利团队」效果胜利
!
victory
0
x1e
「飞行象」效果胜利
!
victory
0
x20
由于「%
ls
」的效果获得比赛胜利
!
victory
0
x20
由于「%
ls
」的效果获得比赛胜利
#counters
#counters
!
counter
0
x1
魔力指示物
!
counter
0
x1
魔力指示物
...
...
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