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
REIKAI
ygopro
Commits
8fde847c
Commit
8fde847c
authored
Jul 30, 2018
by
nanahira
Browse files
Options
Browse Files
Download
Plain Diff
catchup merge
parents
98ee33ab
6700122a
Changes
19
Show whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
592 additions
and
132 deletions
+592
-132
gframe/client_field.cpp
gframe/client_field.cpp
+12
-15
gframe/client_field.h
gframe/client_field.h
+1
-1
gframe/deck_con.cpp
gframe/deck_con.cpp
+2
-1
gframe/deck_manager.cpp
gframe/deck_manager.cpp
+36
-0
gframe/drawing.cpp
gframe/drawing.cpp
+5
-5
gframe/duelclient.cpp
gframe/duelclient.cpp
+29
-17
gframe/event_handler.cpp
gframe/event_handler.cpp
+36
-15
gframe/game.cpp
gframe/game.cpp
+69
-3
gframe/game.h
gframe/game.h
+4
-0
gframe/gframe.cpp
gframe/gframe.cpp
+1
-1
gframe/menu_handler.cpp
gframe/menu_handler.cpp
+2
-53
gframe/replay_mode.cpp
gframe/replay_mode.cpp
+2
-1
gframe/single_duel.cpp
gframe/single_duel.cpp
+9
-2
gframe/single_mode.cpp
gframe/single_mode.cpp
+3
-0
gframe/tag_duel.cpp
gframe/tag_duel.cpp
+8
-2
lflist.conf
lflist.conf
+354
-13
ocgcore
ocgcore
+1
-1
script
script
+1
-1
strings.conf
strings.conf
+17
-1
No files found.
gframe/client_field.cpp
View file @
8fde847c
...
...
@@ -303,7 +303,6 @@ void ClientField::UpdateCard(int controler, int location, int sequence, char* da
}
void
ClientField
::
UpdateFieldCard
(
int
controler
,
int
location
,
char
*
data
)
{
std
::
vector
<
ClientCard
*>*
lst
=
0
;
std
::
vector
<
ClientCard
*>::
iterator
cit
;
switch
(
location
)
{
case
LOCATION_DECK
:
lst
=
&
deck
[
controler
];
...
...
@@ -330,7 +329,7 @@ void ClientField::UpdateFieldCard(int controler, int location, char* data) {
if
(
!
lst
)
return
;
int
len
;
for
(
cit
=
lst
->
begin
();
cit
!=
lst
->
end
();
++
cit
)
{
for
(
auto
cit
=
lst
->
begin
();
cit
!=
lst
->
end
();
++
cit
)
{
len
=
BufferIO
::
ReadInt32
(
data
);
if
(
len
>
8
)
(
*
cit
)
->
UpdateInfo
(
data
);
...
...
@@ -338,20 +337,19 @@ void ClientField::UpdateFieldCard(int controler, int location, char* data) {
}
}
void
ClientField
::
ClearCommandFlag
()
{
std
::
vector
<
ClientCard
*>::
iterator
cit
;
for
(
cit
=
activatable_cards
.
begin
();
cit
!=
activatable_cards
.
end
();
++
cit
)
for
(
auto
cit
=
activatable_cards
.
begin
();
cit
!=
activatable_cards
.
end
();
++
cit
)
(
*
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
;
for
(
cit
=
spsummonable_cards
.
begin
();
cit
!=
spsummonable_cards
.
end
();
++
cit
)
for
(
auto
cit
=
spsummonable_cards
.
begin
();
cit
!=
spsummonable_cards
.
end
();
++
cit
)
(
*
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
;
for
(
cit
=
ssetable_cards
.
begin
();
cit
!=
ssetable_cards
.
end
();
++
cit
)
for
(
auto
cit
=
ssetable_cards
.
begin
();
cit
!=
ssetable_cards
.
end
();
++
cit
)
(
*
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
;
for
(
cit
=
attackable_cards
.
begin
();
cit
!=
attackable_cards
.
end
();
++
cit
)
for
(
auto
cit
=
attackable_cards
.
begin
();
cit
!=
attackable_cards
.
end
();
++
cit
)
(
*
cit
)
->
cmdFlag
=
0
;
conti_cards
.
clear
();
deck_act
=
false
;
...
...
@@ -363,21 +361,20 @@ void ClientField::ClearCommandFlag() {
conti_act
=
false
;
}
void
ClientField
::
ClearSelect
()
{
std
::
vector
<
ClientCard
*>::
iterator
cit
;
for
(
cit
=
selectable_cards
.
begin
();
cit
!=
selectable_cards
.
end
();
++
cit
)
{
for
(
auto
cit
=
selectable_cards
.
begin
();
cit
!=
selectable_cards
.
end
();
++
cit
)
{
(
*
cit
)
->
is_selectable
=
false
;
(
*
cit
)
->
is_selected
=
false
;
}
}
void
ClientField
::
ClearChainSelect
()
{
std
::
vector
<
ClientCard
*>::
iterator
cit
;
for
(
cit
=
activatable_cards
.
begin
();
cit
!=
activatable_cards
.
end
();
++
cit
)
{
for
(
auto
cit
=
activatable_cards
.
begin
();
cit
!=
activatable_cards
.
end
();
++
cit
)
{
(
*
cit
)
->
cmdFlag
=
0
;
(
*
cit
)
->
chain_code
=
0
;
(
*
cit
)
->
is_selectable
=
false
;
(
*
cit
)
->
is_selected
=
false
;
}
conti_cards
.
clear
();
deck_act
=
false
;
grave_act
=
false
;
remove_act
=
false
;
extra_act
=
false
;
...
...
@@ -1062,7 +1059,7 @@ bool ClientField::ShowSelectSum(bool panelmode) {
select_ready
=
false
;
}
if
(
select_ready
)
{
ShowCancelOrFinishButton
(
1
);
ShowCancelOrFinishButton
(
2
);
}
else
{
ShowCancelOrFinishButton
(
0
);
}
...
...
gframe/client_field.h
View file @
8fde847c
...
...
@@ -54,8 +54,8 @@ public:
int
select_max
;
int
must_select_count
;
int
select_sumval
;
int
select_cancelable
;
int
select_mode
;
bool
select_cancelable
;
bool
select_panalmode
;
bool
select_ready
;
int
announce_count
;
...
...
gframe/deck_con.cpp
View file @
8fde847c
...
...
@@ -367,6 +367,7 @@ bool DeckBuilder::OnEvent(const irr::SEvent& event) {
break
;
}
int
sel
=
mainGame
->
cbDBDecks
->
getSelected
();
if
(
sel
>=
0
)
deckManager
.
LoadDeck
(
mainGame
->
cbDBDecks
->
getItem
(
sel
));
prev_deck
=
sel
;
is_modified
=
false
;
...
...
gframe/deck_manager.cpp
View file @
8fde847c
...
...
@@ -11,8 +11,44 @@ DeckManager deckManager;
void
DeckManager
::
LoadLFList
()
{
LFList
*
cur
=
NULL
;
FILE
*
fp
=
fopen
(
"lflist.conf"
,
"r"
);
FILE
*
fp_custom
=
fopen
(
"expansions/lflist.conf"
,
"r"
);
char
linebuf
[
256
];
wchar_t
strBuffer
[
256
];
if
(
fp_custom
)
{
while
(
fgets
(
linebuf
,
256
,
fp_custom
))
{
if
(
linebuf
[
0
]
==
'#'
)
continue
;
int
p
=
0
,
sa
=
0
,
code
,
count
;
if
(
linebuf
[
0
]
==
'!'
)
{
sa
=
BufferIO
::
DecodeUTF8
((
const
char
*
)(
&
linebuf
[
1
]),
strBuffer
);
while
(
strBuffer
[
sa
-
1
]
==
L'\r'
||
strBuffer
[
sa
-
1
]
==
L'\n'
)
sa
--
;
LFList
newlist
;
_lfList
.
push_back
(
newlist
);
cur
=
&
_lfList
[
_lfList
.
size
()
-
1
];
memcpy
(
cur
->
listName
,
(
const
void
*
)
strBuffer
,
40
);
cur
->
listName
[
sa
]
=
0
;
cur
->
content
=
new
std
::
unordered_map
<
int
,
int
>
;
cur
->
hash
=
0x7dfcee6a
;
continue
;
}
while
(
linebuf
[
p
]
!=
' '
&&
linebuf
[
p
]
!=
'\t'
&&
linebuf
[
p
]
!=
0
)
p
++
;
if
(
linebuf
[
p
]
==
0
)
continue
;
linebuf
[
p
++
]
=
0
;
sa
=
p
;
code
=
atoi
(
linebuf
);
if
(
code
==
0
)
continue
;
while
(
linebuf
[
p
]
==
' '
||
linebuf
[
p
]
==
'\t'
)
p
++
;
while
(
linebuf
[
p
]
!=
' '
&&
linebuf
[
p
]
!=
'\t'
&&
linebuf
[
p
]
!=
0
)
p
++
;
linebuf
[
p
]
=
0
;
count
=
atoi
(
&
linebuf
[
sa
]);
if
(
cur
==
NULL
)
continue
;
(
*
cur
->
content
)[
code
]
=
count
;
cur
->
hash
=
cur
->
hash
^
((
code
<<
18
)
|
(
code
>>
14
))
^
((
code
<<
(
27
+
count
))
|
(
code
>>
(
5
-
count
)));
}
fclose
(
fp_custom
);
}
if
(
fp
)
{
while
(
fgets
(
linebuf
,
256
,
fp
))
{
if
(
linebuf
[
0
]
==
'#'
)
...
...
gframe/drawing.cpp
View file @
8fde847c
...
...
@@ -681,8 +681,7 @@ void Game::DrawStatus(ClientCard* pcard, int x1, int y1, int x2, int y2) {
}
void
Game
::
DrawGUI
()
{
if
(
imageLoading
.
size
())
{
std
::
map
<
irr
::
gui
::
CGUIImageButton
*
,
int
>::
iterator
mit
;
for
(
mit
=
imageLoading
.
begin
();
mit
!=
imageLoading
.
end
();
++
mit
)
for
(
auto
mit
=
imageLoading
.
begin
();
mit
!=
imageLoading
.
end
();
++
mit
)
mit
->
first
->
setImage
(
imageManager
.
GetTexture
(
mit
->
second
));
imageLoading
.
clear
();
}
...
...
@@ -781,7 +780,7 @@ void Game::DrawSpec() {
}
case
2
:
{
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
;
if
(
showcarddif
>=
CARD_IMG_WIDTH
)
{
showcard
=
0
;
...
...
@@ -944,12 +943,13 @@ void Game::DrawSpec() {
showChat
=
false
;
hideChatTimer
--
;
}
int
maxChatLines
=
mainGame
->
dInfo
.
isStarted
?
5
:
8
;
for
(
int
i
=
0
;
i
<
maxChatLines
;
++
i
)
{
for
(
int
i
=
0
;
i
<
8
;
++
i
)
{
static
unsigned
int
chatColor
[]
=
{
0xffffffff
,
0xffffffff
,
0xffffffff
,
0xffffffff
,
0xffffffff
,
0xffffffff
,
0xffffffff
,
0xffffffff
,
0xff8080ff
,
0xffff4040
,
0xffff4040
,
0xffff4040
,
0xff40ff40
,
0xff4040ff
,
0xff40ffff
,
0xffff40ff
,
0xffffff40
,
0xffffffff
,
0xff808080
,
0xff404040
};
if
(
chatTiming
[
i
])
{
chatTiming
[
i
]
--
;
if
(
mainGame
->
dInfo
.
isStarted
&&
i
>=
5
)
continue
;
if
(
!
showChat
&&
i
>
2
)
continue
;
int
w
=
textFont
->
getDimension
(
chatMsg
[
i
].
c_str
()).
Width
;
...
...
gframe/duelclient.cpp
View file @
8fde847c
...
...
@@ -479,6 +479,7 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
else
if
(
mainGame
->
wSinglePlay
->
isVisible
())
mainGame
->
HideElement
(
mainGame
->
wSinglePlay
);
mainGame
->
ShowElement
(
mainGame
->
wHostPrepare
);
if
(
!
mainGame
->
chkIgnore1
->
isChecked
())
mainGame
->
wChat
->
setVisible
(
true
);
mainGame
->
gMutex
.
Unlock
();
mainGame
->
dInfo
.
duel_rule
=
pkt
->
info
.
duel_rule
;
...
...
@@ -588,6 +589,7 @@ void DuelClient::HandleSTOCPacketLan(char* data, unsigned int len) {
mainGame
->
btnM2
->
setVisible
(
false
);
mainGame
->
btnEP
->
setVisible
(
false
);
mainGame
->
btnShuffle
->
setVisible
(
false
);
if
(
!
mainGame
->
chkIgnore1
->
isChecked
())
mainGame
->
wChat
->
setVisible
(
true
);
mainGame
->
device
->
setEventReceiver
(
&
mainGame
->
dField
);
if
(
!
mainGame
->
dInfo
.
isTag
)
{
...
...
@@ -1340,7 +1342,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
}
case
MSG_SELECT_CARD
:
{
/*int selecting_player = */
BufferIO
::
ReadInt8
(
pbuf
);
mainGame
->
dField
.
select_cancelable
=
BufferIO
::
ReadInt8
(
pbuf
);
mainGame
->
dField
.
select_cancelable
=
BufferIO
::
ReadInt8
(
pbuf
)
!=
0
;
mainGame
->
dField
.
select_min
=
BufferIO
::
ReadInt8
(
pbuf
);
mainGame
->
dField
.
select_max
=
BufferIO
::
ReadInt8
(
pbuf
);
int
count
=
BufferIO
::
ReadInt8
(
pbuf
);
...
...
@@ -1397,8 +1399,9 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
}
case
MSG_SELECT_UNSELECT_CARD
:
{
/*int selecting_player = */
BufferIO
::
ReadInt8
(
pbuf
);
bool
buttonok
=
BufferIO
::
ReadInt8
(
pbuf
);
mainGame
->
dField
.
select_cancelable
=
BufferIO
::
ReadInt8
(
pbuf
);
bool
finishable
=
BufferIO
::
ReadInt8
(
pbuf
)
!=
0
;
bool
cancelable
=
BufferIO
::
ReadInt8
(
pbuf
)
!=
0
;
mainGame
->
dField
.
select_cancelable
=
finishable
||
cancelable
;
mainGame
->
dField
.
select_min
=
BufferIO
::
ReadInt8
(
pbuf
);
mainGame
->
dField
.
select_max
=
BufferIO
::
ReadInt8
(
pbuf
);
int
count1
=
BufferIO
::
ReadInt8
(
pbuf
);
...
...
@@ -1457,19 +1460,20 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
if
(
panelmode
)
{
mainGame
->
gMutex
.
Lock
();
mainGame
->
wCardSelect
->
setText
(
textBuffer
);
mainGame
->
dField
.
ShowSelectCard
(
buttonok
);
mainGame
->
dField
.
ShowSelectCard
(
mainGame
->
dField
.
select_cancelable
);
mainGame
->
gMutex
.
Unlock
();
}
else
{
mainGame
->
stHintMsg
->
setText
(
textBuffer
);
mainGame
->
stHintMsg
->
setVisible
(
true
);
}
if
(
mainGame
->
dField
.
select_cancelable
)
{
if
(
count2
==
0
)
mainGame
->
dField
.
ShowCancelOrFinishButton
(
1
);
else
{
if
(
finishable
)
{
mainGame
->
dField
.
select_ready
=
true
;
mainGame
->
dField
.
ShowCancelOrFinishButton
(
2
);
}
else
{
mainGame
->
dField
.
ShowCancelOrFinishButton
(
1
);
}
}
else
mainGame
->
dField
.
ShowCancelOrFinishButton
(
0
);
...
...
@@ -1514,7 +1518,10 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
pcard
->
cmdFlag
|=
COMMAND_RESET
;
else
pcard
->
cmdFlag
|=
COMMAND_ACTIVATE
;
if
(
l
==
LOCATION_GRAVE
)
if
(
pcard
->
location
==
LOCATION_DECK
)
{
pcard
->
SetCode
(
code
);
mainGame
->
dField
.
deck_act
=
true
;
}
else
if
(
l
==
LOCATION_GRAVE
)
mainGame
->
dField
.
grave_act
=
true
;
else
if
(
l
==
LOCATION_REMOVED
)
mainGame
->
dField
.
remove_act
=
true
;
...
...
@@ -1688,7 +1695,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
}
case
MSG_SELECT_TRIBUTE
:
{
/*int selecting_player = */
BufferIO
::
ReadInt8
(
pbuf
);
mainGame
->
dField
.
select_cancelable
=
BufferIO
::
ReadInt8
(
pbuf
)
?
true
:
false
;
mainGame
->
dField
.
select_cancelable
=
BufferIO
::
ReadInt8
(
pbuf
)
!=
0
;
mainGame
->
dField
.
select_min
=
BufferIO
::
ReadInt8
(
pbuf
);
mainGame
->
dField
.
select_max
=
BufferIO
::
ReadInt8
(
pbuf
);
int
count
=
BufferIO
::
ReadInt8
(
pbuf
);
...
...
@@ -2202,8 +2209,13 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
return
true
;
}
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
);
if
(
loc
==
LOCATION_MZONE
)
lst
=
mainGame
->
dField
.
mzone
;
else
lst
=
mainGame
->
dField
.
szone
;
ClientCard
*
mc
[
5
];
ClientCard
*
swp
;
int
c
,
l
,
s
,
ps
;
...
...
@@ -2212,7 +2224,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
l
=
BufferIO
::
ReadInt8
(
pbuf
);
s
=
BufferIO
::
ReadInt8
(
pbuf
);
BufferIO
::
ReadInt8
(
pbuf
);
mc
[
i
]
=
mainGame
->
dField
.
mzone
[
c
][
s
];
mc
[
i
]
=
lst
[
c
][
s
];
mc
[
i
]
->
SetCode
(
0
);
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
);
...
...
@@ -2230,9 +2242,9 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
BufferIO
::
ReadInt8
(
pbuf
);
ps
=
mc
[
i
]
->
sequence
;
if
(
l
>
0
)
{
swp
=
mainGame
->
dField
.
mzone
[
c
][
s
];
mainGame
->
dField
.
mzone
[
c
][
ps
]
=
swp
;
mainGame
->
dField
.
mzone
[
c
][
s
]
=
mc
[
i
];
swp
=
lst
[
c
][
s
];
lst
[
c
][
ps
]
=
swp
;
lst
[
c
][
s
]
=
mc
[
i
];
mc
[
i
]
->
sequence
=
s
;
swp
->
sequence
=
ps
;
}
...
...
@@ -2241,7 +2253,7 @@ int DuelClient::ClientAnalyze(char * msg, unsigned int len) {
soundManager
.
PlaySoundEffect
(
SOUND_SHUFFLE
);
for
(
int
i
=
0
;
i
<
count
;
++
i
)
{
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
->
WaitFrameSignal
(
11
);
...
...
gframe/event_handler.cpp
View file @
8fde847c
...
...
@@ -143,6 +143,8 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
mainGame
->
ShowElement
(
mainGame
->
wSinglePlay
);
else
mainGame
->
ShowElement
(
mainGame
->
wLanWindow
);
if
(
exit_on_return
)
mainGame
->
device
->
closeDevice
();
}
else
{
DuelClient
::
SendPacketToServer
(
CTOS_SURRENDER
);
}
...
...
@@ -464,6 +466,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
list_command
=
COMMAND_SPSUMMON
;
mainGame
->
wCardSelect
->
setText
(
dataManager
.
GetSysString
(
509
));
ShowSelectCard
();
select_ready
=
false
;
ShowCancelOrFinishButton
(
1
);
}
break
;
...
...
@@ -956,18 +959,6 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
UpdateDeclarableCode
(
true
);
break
;
}
case
EDITBOX_CHAT
:
{
if
(
mainGame
->
dInfo
.
isReplay
)
break
;
const
wchar_t
*
input
=
mainGame
->
ebChatInput
->
getText
();
if
(
input
[
0
])
{
unsigned
short
msgbuf
[
256
];
int
len
=
BufferIO
::
CopyWStr
(
input
,
msgbuf
,
256
);
DuelClient
::
SendBufferToServer
(
CTOS_CHAT
,
msgbuf
,
(
len
+
1
)
*
sizeof
(
short
));
mainGame
->
ebChatInput
->
setText
(
L""
);
}
break
;
}
}
break
;
}
...
...
@@ -1545,7 +1536,7 @@ bool ClientField::OnEvent(const irr::SEvent& event) {
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
);
str
.
append
(
formatBuffer
);
}
...
...
@@ -1758,13 +1749,17 @@ bool ClientField::OnCommonEvent(const irr::SEvent& event) {
s32
id
=
event
.
GUIEvent
.
Caller
->
getID
();
switch
(
event
.
GUIEvent
.
EventType
)
{
case
irr
:
:
gui
::
EGET_ELEMENT_HOVERED
:
{
if
(
event
.
GUIEvent
.
Caller
->
getType
()
==
EGUIET_EDIT_BOX
)
if
(
event
.
GUIEvent
.
Caller
->
getType
()
==
EGUIET_EDIT_BOX
)
{
mainGame
->
SetCursor
(
event
.
GUIEvent
.
Caller
->
isEnabled
()
?
ECI_IBEAM
:
ECI_NORMAL
);
return
true
;
}
break
;
}
case
irr
:
:
gui
::
EGET_ELEMENT_LEFT
:
{
if
(
event
.
GUIEvent
.
Caller
->
getType
()
==
EGUIET_EDIT_BOX
)
if
(
event
.
GUIEvent
.
Caller
->
getType
()
==
EGUIET_EDIT_BOX
)
{
mainGame
->
SetCursor
(
ECI_NORMAL
);
return
true
;
}
break
;
}
case
irr
:
:
gui
::
EGET_BUTTON_CLICKED
:
{
...
...
@@ -1792,6 +1787,14 @@ bool ClientField::OnCommonEvent(const irr::SEvent& event) {
return
true
;
break
;
}
case
CHECKBOX_DISABLE_CHAT
:
{
bool
show
=
mainGame
->
is_building
?
false
:
!
mainGame
->
chkIgnore1
->
isChecked
();
mainGame
->
wChat
->
setVisible
(
show
);
if
(
!
show
)
mainGame
->
ClearChatMsg
();
return
true
;
break
;
}
}
break
;
}
...
...
@@ -1844,6 +1847,24 @@ bool ClientField::OnCommonEvent(const irr::SEvent& event) {
}
break
;
}
case
irr
:
:
gui
::
EGET_EDITBOX_ENTER
:
{
switch
(
id
)
{
case
EDITBOX_CHAT
:
{
if
(
mainGame
->
dInfo
.
isReplay
)
break
;
const
wchar_t
*
input
=
mainGame
->
ebChatInput
->
getText
();
if
(
input
[
0
])
{
unsigned
short
msgbuf
[
256
];
int
len
=
BufferIO
::
CopyWStr
(
input
,
msgbuf
,
256
);
DuelClient
::
SendBufferToServer
(
CTOS_CHAT
,
msgbuf
,
(
len
+
1
)
*
sizeof
(
short
));
mainGame
->
ebChatInput
->
setText
(
L""
);
return
true
;
}
break
;
}
}
break
;
}
default:
break
;
}
break
;
...
...
gframe/game.cpp
View file @
8fde847c
...
...
@@ -12,10 +12,15 @@
#ifndef _WIN32
#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
#include <unistd.h>
#else
#include <direct.h>
#include <io.h>
#endif
const
unsigned
short
PRO_VERSION
=
0x134
2
;
const
unsigned
short
PRO_VERSION
=
0x134
4
;
namespace
ygo
{
...
...
@@ -23,6 +28,7 @@ Game* mainGame;
bool
Game
::
Initialize
()
{
srand
(
time
(
0
));
initUtils
();
LoadConfig
();
irr
::
SIrrlichtCreationParameters
params
=
irr
::
SIrrlichtCreationParameters
();
params
.
AntiAlias
=
gameConf
.
antialias
;
...
...
@@ -266,7 +272,7 @@ bool Game::Initialize() {
//system
irr
::
gui
::
IGUITab
*
tabSystem
=
wInfos
->
addTab
(
dataManager
.
GetSysString
(
1273
));
posY
=
20
;
chkIgnore1
=
env
->
addCheckBox
(
false
,
rect
<
s32
>
(
posX
,
posY
,
posX
+
260
,
posY
+
25
),
tabSystem
,
-
1
,
dataManager
.
GetSysString
(
1290
));
chkIgnore1
=
env
->
addCheckBox
(
false
,
rect
<
s32
>
(
posX
,
posY
,
posX
+
260
,
posY
+
25
),
tabSystem
,
CHECKBOX_DISABLE_CHAT
,
dataManager
.
GetSysString
(
1290
));
chkIgnore1
->
setChecked
(
gameConf
.
chkIgnore1
!=
0
);
posY
+=
30
;
chkIgnore2
=
env
->
addCheckBox
(
false
,
rect
<
s32
>
(
posX
,
posY
,
posX
+
260
,
posY
+
25
),
tabSystem
,
-
1
,
dataManager
.
GetSysString
(
1291
));
...
...
@@ -707,7 +713,7 @@ void Game::MainLoop() {
atkdy
=
(
float
)
sin
(
atkframe
);
driver
->
beginScene
(
true
,
true
,
SColor
(
0
,
0
,
0
,
0
));
gMutex
.
Lock
();
if
(
dInfo
.
isStarted
||
dInfo
.
isReplaySkiping
)
{
if
(
dInfo
.
isStarted
)
{
if
(
dInfo
.
isFinished
&&
showcardcode
==
1
)
soundManager
.
PlayBGM
(
BGM_WIN
);
else
if
(
dInfo
.
isFinished
&&
(
showcardcode
==
2
||
showcardcode
==
3
))
...
...
@@ -1116,6 +1122,7 @@ void Game::LoadConfig() {
gameConf
.
defaultOT
=
atoi
(
valbuf
);
}
else
if
(
!
strcmp
(
strbuf
,
"enable_bot_mode"
))
{
gameConf
.
enable_bot_mode
=
atoi
(
valbuf
);
#ifdef YGOPRO_USE_IRRKLANG
}
else
if
(
!
strcmp
(
strbuf
,
"enable_sound"
))
{
gameConf
.
enable_sound
=
atoi
(
valbuf
)
>
0
;
}
else
if
(
!
strcmp
(
strbuf
,
"sound_volume"
))
{
...
...
@@ -1126,6 +1133,7 @@ void Game::LoadConfig() {
gameConf
.
music_volume
=
atof
(
valbuf
)
/
100
;
}
else
if
(
!
strcmp
(
strbuf
,
"music_mode"
))
{
gameConf
.
music_mode
=
atoi
(
valbuf
);
#endif
}
else
{
// options allowing multiple words
sscanf
(
linebuf
,
"%s = %240[^
\n
]"
,
strbuf
,
valbuf
);
...
...
@@ -1186,6 +1194,7 @@ void Game::SaveConfig() {
fprintf
(
fp
,
"ignore_deck_changes = %d
\n
"
,
(
chkIgnoreDeckChanges
->
isChecked
()
?
1
:
0
));
fprintf
(
fp
,
"default_ot = %d
\n
"
,
gameConf
.
defaultOT
);
fprintf
(
fp
,
"enable_bot_mode = %d
\n
"
,
gameConf
.
enable_bot_mode
);
#ifdef YGOPRO_USE_IRRKLANG
fprintf
(
fp
,
"enable_sound = %d
\n
"
,
(
chkEnableSound
->
isChecked
()
?
1
:
0
));
fprintf
(
fp
,
"enable_music = %d
\n
"
,
(
chkEnableMusic
->
isChecked
()
?
1
:
0
));
fprintf
(
fp
,
"#Volume of sound and music, between 0 and 100
\n
"
);
...
...
@@ -1196,6 +1205,7 @@ void Game::SaveConfig() {
if
(
vol
<
0
)
vol
=
0
;
else
if
(
vol
>
100
)
vol
=
100
;
fprintf
(
fp
,
"music_volume = %d
\n
"
,
vol
);
fprintf
(
fp
,
"music_mode = %d
\n
"
,
(
chkMusicMode
->
isChecked
()
?
1
:
0
));
#endif
fclose
(
fp
);
}
void
Game
::
ShowCardInfo
(
int
code
)
{
...
...
@@ -1320,6 +1330,11 @@ void Game::AddChatMsg(wchar_t* msg, int player) {
}
chatMsg
[
0
].
append
(
msg
);
}
void
Game
::
ClearChatMsg
()
{
for
(
int
i
=
7
;
i
>=
0
;
--
i
)
{
chatTiming
[
i
]
=
0
;
}
}
void
Game
::
AddDebugMsg
(
char
*
msg
)
{
if
(
enable_log
&
0x1
)
{
...
...
@@ -1339,6 +1354,54 @@ void Game::AddDebugMsg(char* msg)
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
#ifdef YGOPRO_USE_IRRKLANG
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"
);
#endif
//pics
MakeDirectory
(
"pics"
);
MakeDirectory
(
"pics/field"
);
}
void
Game
::
ClearTextures
()
{
matManager
.
mCard
.
setTexture
(
0
,
0
);
imgCard
->
setImage
(
imageManager
.
tCover
[
0
]);
...
...
@@ -1376,6 +1439,9 @@ void Game::CloseDuelWindow() {
wReplaySave
->
setVisible
(
false
);
stHintMsg
->
setVisible
(
false
);
btnSideOK
->
setVisible
(
false
);
btnSideShuffle
->
setVisible
(
false
);
btnSideSort
->
setVisible
(
false
);
btnSideReload
->
setVisible
(
false
);
btnLeaveGame
->
setVisible
(
false
);
btnSpectatorSwap
->
setVisible
(
false
);
btnChainIgnore
->
setVisible
(
false
);
...
...
gframe/game.h
View file @
8fde847c
...
...
@@ -131,7 +131,10 @@ public:
void
SaveConfig
();
void
ShowCardInfo
(
int
code
);
void
AddChatMsg
(
wchar_t
*
msg
,
int
player
);
void
ClearChatMsg
();
void
AddDebugMsg
(
char
*
msgbuf
);
bool
MakeDirectory
(
const
std
::
string
folder
);
void
initUtils
();
void
ClearTextures
();
void
CloseDuelWindow
();
...
...
@@ -613,6 +616,7 @@ extern Game* mainGame;
#define CHECKBOX_ENABLE_SOUND 361
#define CHECKBOX_ENABLE_MUSIC 362
#define SCROLL_VOLUME 363
#define CHECKBOX_DISABLE_CHAT 364
#define COMBOBOX_SORTTYPE 370
#define COMBOBOX_LIMIT 371
...
...
gframe/gframe.cpp
View file @
8fde847c
...
...
@@ -134,7 +134,7 @@ int main(int argc, char* argv[]) {
break
;
}
else
if
(
!
strcmp
(
argv
[
i
],
"-j"
))
{
// Join host
exit_on_return
=
!
keep_on_return
;
ClickButton
(
ygo
::
mainGame
->
btnLanMode
);
ygo
::
mainGame
->
HideElement
(
ygo
::
mainGame
->
wMainMenu
);
ClickButton
(
ygo
::
mainGame
->
btnJoinHost
);
break
;
}
else
if
(
!
strcmp
(
argv
[
i
],
"-r"
))
{
// Replay
...
...
gframe/menu_handler.cpp
View file @
8fde847c
...
...
@@ -27,6 +27,8 @@ void UpdateDeck() {
DuelClient
::
SendBufferToServer
(
CTOS_UPDATE_DECK
,
deckbuf
,
pdeck
-
deckbuf
);
}
bool
MenuHandler
::
OnEvent
(
const
irr
::
SEvent
&
event
)
{
if
(
mainGame
->
dField
.
OnCommonEvent
(
event
))
return
false
;
switch
(
event
.
EventType
)
{
case
irr
:
:
EET_GUI_EVENT
:
{
irr
::
gui
::
IGUIElement
*
caller
=
event
.
GUIEvent
.
Caller
;
...
...
@@ -40,16 +42,6 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
break
;
}
switch
(
event
.
GUIEvent
.
EventType
)
{
case
irr
:
:
gui
::
EGET_ELEMENT_HOVERED
:
{
if
(
event
.
GUIEvent
.
Caller
->
getType
()
==
EGUIET_EDIT_BOX
)
mainGame
->
SetCursor
(
event
.
GUIEvent
.
Caller
->
isEnabled
()
?
ECI_IBEAM
:
ECI_NORMAL
);
break
;
}
case
irr
:
:
gui
::
EGET_ELEMENT_LEFT
:
{
if
(
event
.
GUIEvent
.
Caller
->
getType
()
==
EGUIET_EDIT_BOX
)
mainGame
->
SetCursor
(
ECI_NORMAL
);
break
;
}
case
irr
:
:
gui
::
EGET_BUTTON_CLICKED
:
{
if
(
id
<
110
)
soundManager
.
PlaySoundEffect
(
SOUND_MENU
);
...
...
@@ -509,49 +501,6 @@ bool MenuHandler::OnEvent(const irr::SEvent& event) {
}
break
;
}
case
irr
:
:
gui
::
EGET_EDITBOX_ENTER
:
{
switch
(
id
)
{
case
EDITBOX_CHAT
:
{
if
(
mainGame
->
dInfo
.
isReplay
)
break
;
const
wchar_t
*
input
=
mainGame
->
ebChatInput
->
getText
();
if
(
input
[
0
])
{
unsigned
short
msgbuf
[
256
];
if
(
mainGame
->
dInfo
.
isStarted
)
{
if
(
mainGame
->
dInfo
.
player_type
<
7
)
{
if
(
mainGame
->
dInfo
.
isTag
&&
(
mainGame
->
dInfo
.
player_type
%
2
))
mainGame
->
AddChatMsg
((
wchar_t
*
)
input
,
2
);
else
mainGame
->
AddChatMsg
((
wchar_t
*
)
input
,
0
);
}
else
mainGame
->
AddChatMsg
((
wchar_t
*
)
input
,
10
);
}
else
mainGame
->
AddChatMsg
((
wchar_t
*
)
input
,
7
);
int
len
=
BufferIO
::
CopyWStr
(
input
,
msgbuf
,
256
);
DuelClient
::
SendBufferToServer
(
CTOS_CHAT
,
msgbuf
,
(
len
+
1
)
*
sizeof
(
short
));
mainGame
->
ebChatInput
->
setText
(
L""
);
}
break
;
}
}
break
;
}
default:
break
;
}
break
;
}
case
irr
:
:
EET_KEY_INPUT_EVENT
:
{
switch
(
event
.
KeyInput
.
Key
)
{
case
irr
:
:
KEY_KEY_R
:
{
if
(
!
event
.
KeyInput
.
PressedDown
&&
!
mainGame
->
HasFocus
(
EGUIET_EDIT_BOX
))
mainGame
->
textFont
->
setTransparency
(
true
);
break
;
}
case
irr
:
:
KEY_ESCAPE
:
{
if
(
!
mainGame
->
HasFocus
(
EGUIET_EDIT_BOX
))
mainGame
->
device
->
minimizeWindow
();
break
;
}
default:
break
;
}
break
;
...
...
gframe/replay_mode.cpp
View file @
8fde847c
...
...
@@ -106,6 +106,7 @@ int ReplayMode::ReplayThread(void* param) {
get_message
(
pduel
,
(
byte
*
)
engineBuffer
);
is_continuing
=
ReplayAnalyze
(
engineBuffer
,
len
);
if
(
is_restarting
)
{
mainGame
->
gMutex
.
Lock
();
is_restarting
=
false
;
int
step
=
current_step
-
1
;
if
(
step
<
0
)
...
...
@@ -280,7 +281,6 @@ void ReplayMode::Undo() {
return
;
mainGame
->
dInfo
.
isReplaySkiping
=
true
;
Restart
(
false
);
mainGame
->
gMutex
.
Lock
();
Pause
(
false
,
false
);
}
bool
ReplayMode
::
ReplayAnalyze
(
char
*
msg
,
unsigned
int
len
)
{
...
...
@@ -497,6 +497,7 @@ bool ReplayMode::ReplayAnalyze(char* msg, unsigned int len) {
break
;
}
case
MSG_SHUFFLE_SET_CARD
:
{
pbuf
++
;
count
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
count
*
8
;
DuelClient
::
ClientAnalyze
(
offset
,
pbuf
-
offset
);
...
...
gframe/single_duel.cpp
View file @
8fde847c
...
...
@@ -874,14 +874,21 @@ int SingleDuel::Analyze(char* msgbuffer, unsigned int len) {
break
;
}
case
MSG_SHUFFLE_SET_CARD
:
{
int
loc
=
BufferIO
::
ReadInt8
(
pbuf
);
count
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
count
*
8
;
NetServer
::
SendBufferToPlayer
(
players
[
0
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
NetServer
::
ReSendToPlayer
(
players
[
1
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
if
(
loc
==
LOCATION_MZONE
)
{
RefreshMzone
(
0
,
0x181fff
,
0
);
RefreshMzone
(
1
,
0x181fff
,
0
);
}
else
{
RefreshSzone
(
0
,
0x181fff
,
0
);
RefreshSzone
(
1
,
0x181fff
,
0
);
}
break
;
}
case
MSG_NEW_TURN
:
{
...
...
gframe/single_mode.cpp
View file @
8fde847c
...
...
@@ -415,6 +415,7 @@ bool SingleMode::SinglePlayAnalyze(char* msg, unsigned int len) {
break
;
}
case
MSG_SHUFFLE_SET_CARD
:
{
pbuf
++
;
count
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
count
*
8
;
DuelClient
::
ClientAnalyze
(
offset
,
pbuf
-
offset
);
...
...
@@ -745,6 +746,8 @@ bool SingleMode::SinglePlayAnalyze(char* msg, unsigned int len) {
xcard
->
overlayTarget
=
ccard
;
xcard
->
location
=
0x80
;
xcard
->
sequence
=
ccard
->
overlayed
.
size
()
-
1
;
xcard
->
owner
=
p
;
xcard
->
controler
=
p
;
}
}
}
...
...
gframe/tag_duel.cpp
View file @
8fde847c
...
...
@@ -832,6 +832,7 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
break
;
}
case
MSG_SHUFFLE_SET_CARD
:
{
int
loc
=
BufferIO
::
ReadInt8
(
pbuf
);
count
=
BufferIO
::
ReadInt8
(
pbuf
);
pbuf
+=
count
*
8
;
NetServer
::
SendBufferToPlayer
(
players
[
0
],
STOC_GAME_MSG
,
offset
,
pbuf
-
offset
);
...
...
@@ -840,8 +841,13 @@ int TagDuel::Analyze(char* msgbuffer, unsigned int len) {
NetServer
::
ReSendToPlayer
(
players
[
3
]);
for
(
auto
oit
=
observers
.
begin
();
oit
!=
observers
.
end
();
++
oit
)
NetServer
::
ReSendToPlayer
(
*
oit
);
if
(
loc
==
LOCATION_MZONE
)
{
RefreshMzone
(
0
,
0x181fff
,
0
);
RefreshMzone
(
1
,
0x181fff
,
0
);
}
else
{
RefreshSzone
(
0
,
0x181fff
,
0
);
RefreshSzone
(
1
,
0x181fff
,
0
);
}
break
;
}
case
MSG_NEW_TURN
:
{
...
...
lflist.conf
View file @
8fde847c
#[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.7][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
.
7
#forbidden
79875176
0
--トゥーン・キャノン・ソルジャー
11384280
0
--キャノン・ソルジャー
32723153
0
--マジカル·エクスプロージョン
20663556
0
--イレカエル
44910027
0
--ヴィクトリー・ドラゴン
25862681
0
--エンシェント・フェアリー・ドラゴン
53804307
0
--焔征竜-ブラスター
68819554
0
--
Em
ダメージ・ジャグラー
07563579
0
--
Em
ヒグルミ
17330916
0
--
EM
モンキーボード
90411554
0
--巌征竜-レドックス
17412721
0
--旧神ノーデン
34124316
0
--サイバーポッド
88071625
0
--
The
tyrant
NEPTUNE
48905153
0
--十二獣ドランシア
85115440
0
--十二獣ブルホーン
21593977
0
--処刑人-マキュラ
21377582
0
--真竜剣皇マスター
P
16923472
0
--ゼンマイハンター
18326736
0
--星守の騎士 プトレマイオス
54719828
0
--
No
.
16
色の支配者ショック・ルーラー
26400609
0
--瀑征竜-タイダル
78706415
0
--ファイバーポッド
93369354
0
--フィッシュボーグ-ガンナー
23558733
0
--フェニキシアン・クラスター・アマリリス
09929398
0
--
BF
−朧影のゴウフウ
31178212
0
--マジェスペクター・ユニコーン
34206604
0
--魔導サイエンティスト
96782886
0
--メンタルマスター
03078576
0
--八汰烏
34086406
0
--ラヴァルバル・チェイン
89399912
0
--嵐征竜-テンペスト
57421866
0
--レベル・スティーラー
41482598
0
--悪夢の蜃気楼
44763025
0
--いたずら好きな双子悪魔
19613556
0
--大嵐
17375316
0
--押収
74191942
0
--苦渋の選択
42829885
0
--強引な番兵
45986603
0
--強奪
55144522
0
--強欲な壺
04031928
0
--心変わり
46060017
0
--十二獣の会局
12580477
0
--サンダー·ボルト
23557835
0
--次元融合
57953380
0
--生還の宝札
60682203
0
--大寒波
69243953
0
--蝶の短剣-エルマ
79571449
0
--天使の施し
13035077
0
--ドラゴニック
D
70828912
0
--早すぎた埋葬
42703248
0
--ハリケーン
34906152
0
--マスドライバー
46448938
0
--魔導書の神判
46411259
0
--突然変異
85602018
0
--遺言状
27174286
0
--異次元からの帰還
93016201
0
--王宮の弾圧
03280747
0
--第六感
64697231
0
--ダスト·シュート
80604091
0
--血の代償
35316708
0
--刻の封印
17178486
0
--ライフチェンジャー
28566710
0
--ラストバトル!
#limit
24094258
1
--ヘビーメタルフォーゼ・エレクトラム
76794549
1
--アストログラフ・マジシャン
73941492
1
--調弦の魔術師
52340444
1
--閃刀機-ホーネットビット
73468603
1
--盆回し
64034255
1
--
A
·ジェネクス·バードマン
01561110
1
--
ABC
-ドラゴン・バスター
50720316
1
--
E
·
HERO
シャドー·ミスト
40318957
1
--
EM
ドクロバット・ジョーカー
65536818
1
--源竜星-ボウテンコウ
49684352
1
--虹彩の魔術師
74586817
1
--
PSY
フレームロード・Ω
78872731
1
--十二獣モルモラット
06602300
1
--重爆撃禽 ボム・フェネクス
75286621
1
--召喚獣メルカバー
78868119
1
--深海のディーヴァ
58984738
1
--真竜拳士ダイナマイト
K
78080961
1
--
SPYRAL
−ジーニアス
65192027
1
--ダーク·アームド·ドラゴン
44335251
1
--魂喰いオヴィラプター
15341821
1
--ダンディライオン
90953320
1
--
TG
ハイパー·ライブラリアン
69015963
1
--デビル・フランケン
75732622
1
--トーチ・ゴーレム
16226786
1
--深淵の暗殺者
28297833
1
--ネクロフェイス
69610326
1
--覇王眷竜ダークヴルム
83531441
1
--彼岸の旅人 ダンテ
70583986
1
--氷結界の虎王ドゥローレン
52687916
1
--氷結界の龍 トリシューラ
05043010
1
--ファイアウォール・ドラゴン
33396948
1
--封印されしエクゾディア
07902349
1
--封印されし者の左腕
70903634
1
--封印されし者の右腕
44519536
1
--封印されし者の左足
08124921
1
--封印されし者の右足
55623480
1
--妖精伝姫−シラユキ
09047460
1
--
BF
−隠れ蓑のスチーム
26674724
1
--ブリューナクの影霊衣
35272499
1
--捕食植物オフリス・スコーピオ
36042004
1
--ベビケラサウルス
10802915
1
--魔界発現世行きデスガイド
33508719
1
--メタモルポット
90809975
1
--餅カエル
89463537
1
--ユニコールの影霊衣
92746535
1
--竜剣士ラスター
P
88264978
1
--レッドアイズ·ダークネスメタルドラゴン
48686504
1
--ローンファイア・ブロッサム
33782437
1
--一時休戦
66957584
1
--インフェルニティガン
81439173
1
--おろかな埋葬
23701465
1
--原初の種
99330325
1
--妨げられた壊獣の眠り
45305419
1
--継承の印
83764718
1
--死者蘇生
54631665
1
--
SPYRAL
RESORT
32807846
1
--増援
54447022
1
--ソウル・チャージ
48130397
1
--超融合
72892473
1
--手札抹殺
73628505
1
--テラ・フォーミング
97211663
1
--影霊衣の反魂術
18144506
1
--ハーピィの羽根帚
53208660
1
--ペンデュラム・コール
93600443
1
--マスク・チェンジ・セカンド
15854426
1
--霞の谷の神風
58577036
1
--名推理
23171610
1
--リミッター解除
14733538
1
--竜呼相打つ
23314220
1
--ルドラの魔導書
02295440
1
--ワン·フォー·ワン
05851097
1
--虚無空間
61740673
1
--王宮の勅命
35125879
1
--真竜皇の復活
36468556
1
--停戦協定
21076084
1
--トリックスター・リンカーネイション
83555666
1
--破壊輪
#semi limit
67723438
2
--緊急テレポート
56570271
2
--
D
-
HERO
ディスクガイ
04474060
2
--
SPYRAL
GEAR
−ドローン
81275020
2
--
SR
ベイゴマックス
94977269
2
--エルシャドール・ミドラーシュ
20366274
2
--エルシャドール・ネフィリム
45222299
2
--イビリチュア·ガストクラーケ
40044918
2
--
E
·
HERO
エアーマン
86120751
2
--召喚師アレイスター
14558127
2
--灰流うらら
47325505
2
--化石調査
73915051
2
--スケープ・ゴート
91623717
2
--連鎖爆撃
66399653
2
--ユニオン格納庫
84749824
2
--神の警告
41420027
2
--神の宣告
40605147
2
--神の通告
!
2018
.
4
#forbidden
20663556
0
--イレカエル
...
...
@@ -161,12 +325,14 @@
41420027
2
--神の宣告
40605147
2
--神の通告
!
2018
.
2
TCG
!
2018
.
5
TCG
#forbidden
76794549
0
--アストログラフ・マジシャン
20663556
0
--イレカエル
44910027
0
--ヴィクトリー・ドラゴン
20366274
0
--エルシャドール・ネフィリム
40044918
0
--
E
·
HERO
エアーマン
25862681
0
--エンシェント・フェアリー・ドラゴン
53804307
0
--焔征竜-ブラスター
07563579
0
--
Em
ヒグルミ
40318957
0
--
EM
ドクロバット・ジョーカー
...
...
@@ -184,21 +350,22 @@
85115440
0
--十二獣ブルホーン
21593977
0
--処刑人-マキュラ
30539496
0
--真竜皇リトスアジム
D
58984738
0
--真竜拳士ダイナマイト
K
21377582
0
--真竜剣皇マスター
P
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
色の支配者ショック·ルーラー
43387895
0
--覇王眷竜スターヴ・ヴェノム
26400609
0
--瀑征竜-タイダル
78706415
0
--ファイバーポッド
93369354
0
--フィッシュボーグ-ガンナー
23558733
0
--フェニキシアン・クラスター・アマリリス
09929398
0
--
BF
-朧影のゴウフウ
31178212
0
--マジェスペクター・ユニコーン
34206604
0
--魔導サイエンティスト
...
...
@@ -229,6 +396,7 @@
69243953
0
--蝶の短剣-エルマ
72892473
0
--手札抹殺
79571449
0
--天使の施し
11110587
0
--隣の芝刈り
42703248
0
--ハリケーン
18144506
0
--ハーピィの羽根帚
70828912
0
--早すぎた埋葬
...
...
@@ -236,6 +404,7 @@
46448938
0
--魔導書の神判
46411259
0
--突然変異
85602018
0
--遺言状
94220427
0
--
RUM
-アージェント・カオス・フォース
27174286
0
--異次元からの帰還
93016201
0
--王宮の弾圧
05851097
0
--虚無空間
...
...
@@ -246,7 +415,6 @@
80604091
0
--血の代償
28566710
0
--ラストバトル!
#limit
27279764
1
--アポクリフォート・キラー
64034255
1
--
A
·ジェネクス·バードマン
45222299
1
--イビリチュア·ガストクラーケ
11877465
1
--イビリチュア·マインドオーガス
...
...
@@ -258,9 +426,10 @@
65518099
1
--クリフォート・ツール
38572779
1
--幻創のミセラサウルス
55885348
1
--
Kozmo
-ダークシミター
39512984
1
--ジェムナイトマスター・ダイヤ
78872731
1
--十二獣モルモラット
78868119
1
--深海のディーヴァ
22499034
1
--真竜戦士イグニス
H
58984738
1
--真竜拳士ダイナマイト
K
04474060
1
--
SPYRAL
GEAR
-ドローン
78080961
1
--
SPYRAL
-ジーニアス
81275020
1
--
SR
ベイゴマックス
...
...
@@ -269,7 +438,6 @@
96570609
1
--天帝アイテール
75732622
1
--トーチ・ゴーレム
16226786
1
--深淵の暗殺者
80344569
1
--
N
·グラン·モール
18239909
1
--爆竜剣士イグニスター
P
57143342
1
--彼岸の悪鬼 ガトルホッグ
20758643
1
--彼岸の悪鬼 グラバースニッチ
...
...
@@ -302,8 +470,8 @@
14087893
1
--月の書
81674782
1
--次元の裂け目
83764718
1
--死者蘇生
91623717
1
--連鎖爆撃
79844764
1
--帝王の烈旋
11110587
1
--隣の芝刈り
70368879
1
--成金ゴブリン
22842126
1
--汎神の帝王
53129443
1
--ブラック·ホール
...
...
@@ -319,23 +487,20 @@
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
--海皇の竜騎隊
27279764
2
--アポクリフォート・キラー
59297550
2
--ゼンマイマジシャン
90953320
2
--
TG
ハイパー·ライブラリアン
28297833
2
--ネクロフェイス
41386308
2
--マスマティシャン
92746535
2
--竜剣士ラスター
P
48976825
2
--異次元からの埋葬
91623717
2
--連鎖爆撃
83555666
2
--破壊輪
!
2018
.
1
#forbidden
...
...
@@ -2924,6 +3089,182 @@
53582587
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
#forbidden
27279764
0
--アポクリフォート・キラー
...
...
ocgcore
@
7da0970a
Subproject commit
9a253618906d678a5b0722b0f42e3c8f009e9c7d
Subproject commit
7da0970abec7155fe7de65e86e905a971c56db79
script
@
a7ac3690
Subproject commit
8548beecbbb8e209a2c8c25b12e55d165533a395
Subproject commit
a7ac36907a08e612671914681a808af971290bc9
strings.conf
View file @
8fde847c
...
...
@@ -240,6 +240,9 @@
!
system
1161
效果处理
!
system
1162
效果重置
!
system
1163
灵摆召唤
!
system
1164
同调召唤
!
system
1165
超量召唤
!
system
1166
连接召唤
#menu
!
system
1200
联机模式
!
system
1201
单人模式
...
...
@@ -305,7 +308,7 @@
!
system
1279
开启音效
!
system
1280
开启音乐
!
system
1281
按场景切换音乐
!
system
1290
忽略对方发言
!
system
1290
禁用聊天功能
!
system
1291
忽略观战者发言
!
system
1292
忽略时点
!
system
1293
显示时点
...
...
@@ -412,6 +415,7 @@
!
system
1418
额外卡组数量应不超过
15
张,当前卡组数量为%
d
张。
!
system
1419
副卡组数量应不超过
15
张,当前卡组数量为%
d
张。
!
system
1420
有额外卡组卡片存在于主卡组,可能是额外卡组数量超过
15
张。
!
system
1421
宣言的卡不符合条件,或无法被主机识别。
!
system
1500
决斗结束。
!
system
1501
录像结束。
!
system
1502
连接已断开。
...
...
@@ -464,6 +468,8 @@
!
victory
0
x1a
「魂之接力」效果胜利
!
victory
0
x1b
「鬼计惰天使」效果胜利
!
victory
0
x1c
「幻煌龙的天涡」效果胜利
!
victory
0
x1d
「方程式运动员胜利团队」效果胜利
!
victory
0
x1e
「飞行象」效果胜利
!
victory
0
x20
由于「%
ls
」的效果获得比赛胜利
#counters
!
counter
0
x1
魔力指示物
...
...
@@ -531,6 +537,8 @@
!
counter
0
x1045
鳞粉指示物
!
counter
0
x46
指示物(刚鬼死斗)
!
counter
0
x47
指示物(限制代码)
!
counter
0
x48
指示物(连接死亡炮塔)
!
counter
0
x1049
警逻指示物
#setnames, using tab for comment
!
setname
0
x1
正义盟军
A
・
O
・
J
!
setname
0
x2
次世代 ジェネクス
...
...
@@ -891,3 +899,11 @@
!
setname
0
x114
空牙团 空牙団
!
setname
0
x115
闪刀 閃刀
!
setname
0
x1115
闪刀姬 閃刀姫
!
setname
0
x116
圣像骑士 パラディオン
!
setname
0
x117
魔神仪 魔神儀
!
setname
0
x118
电脑网 サイバネット
!
setname
0
x119
转生炎兽 サラマングレイト
!
setname
0
x11a
恐龙摔跤手 ダイナレスラー
!
setname
0
x11b
自奏圣乐 オルフェゴール
!
setname
0
x11c
雷龙 サンダー·ドラゴン
!
setname
0
x11d
禁忌的 禁じられた
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