Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Y
ygopro-core
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
nanahira
ygopro-core
Commits
fc6cb4cd
Commit
fc6cb4cd
authored
Aug 30, 2024
by
wind2009
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'upstream/master'
parents
15c1afb8
c48f795b
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
51 additions
and
54 deletions
+51
-54
card.cpp
card.cpp
+3
-3
common.h
common.h
+2
-0
field.cpp
field.cpp
+10
-27
field.h
field.h
+17
-15
libdebug.cpp
libdebug.cpp
+4
-0
libduel.cpp
libduel.cpp
+5
-5
mtrandom.h
mtrandom.h
+2
-0
ocgapi.cpp
ocgapi.cpp
+6
-2
ocgapi.h
ocgapi.h
+1
-1
scriptlib.h
scriptlib.h
+1
-1
No files found.
card.cpp
View file @
fc6cb4cd
...
@@ -95,7 +95,7 @@ bool card::card_operation_sort(card* c1, card* c2) {
...
@@ -95,7 +95,7 @@ bool card::card_operation_sort(card* c1, card* c2) {
return
c1
->
overlay_target
->
current
.
sequence
<
c2
->
overlay_target
->
current
.
sequence
;
return
c1
->
overlay_target
->
current
.
sequence
<
c2
->
overlay_target
->
current
.
sequence
;
else
else
return
c1
->
current
.
sequence
<
c2
->
current
.
sequence
;
return
c1
->
current
.
sequence
<
c2
->
current
.
sequence
;
}
else
if
(
c1
->
current
.
location
&
LOCATION_DECK
&&
cp1
==
pduel
->
game_field
->
core
.
selecting_player
&&
!
pduel
->
game_field
->
core
.
select_deck_seq_preserved
)
{
}
else
if
(
c1
->
current
.
location
&
LOCATION_DECK
&&
pduel
->
game_field
->
is_select_hide_deck_sequence
(
cp1
)
)
{
// if deck reversed and the card being at the top, it should go first
// if deck reversed and the card being at the top, it should go first
if
(
pduel
->
game_field
->
core
.
deck_reversed
)
{
if
(
pduel
->
game_field
->
core
.
deck_reversed
)
{
if
(
c1
->
current
.
sequence
==
pduel
->
game_field
->
player
[
cp1
].
list_main
.
size
()
-
1
)
if
(
c1
->
current
.
sequence
==
pduel
->
game_field
->
player
[
cp1
].
list_main
.
size
()
-
1
)
...
@@ -176,7 +176,7 @@ card::card(duel* pd) {
...
@@ -176,7 +176,7 @@ card::card(duel* pd) {
xyz_materials_previous_count_onfield
=
0
;
xyz_materials_previous_count_onfield
=
0
;
current
.
controler
=
PLAYER_NONE
;
current
.
controler
=
PLAYER_NONE
;
}
}
inline
void
update_cache
(
uint32
&
tdata
,
uint32
&
cache
,
byte
*&
p
,
uint32
&
query_flag
,
const
uint32
flag
)
{
inline
void
update_cache
(
uint32
tdata
,
uint32
&
cache
,
byte
*&
p
,
uint32
&
query_flag
,
uint32
flag
)
{
if
(
tdata
!=
cache
)
{
if
(
tdata
!=
cache
)
{
cache
=
tdata
;
cache
=
tdata
;
buffer_write
<
uint32_t
>
(
p
,
tdata
);
buffer_write
<
uint32_t
>
(
p
,
tdata
);
...
@@ -1511,7 +1511,7 @@ int32 card::is_all_column() {
...
@@ -1511,7 +1511,7 @@ int32 card::is_all_column() {
return
FALSE
;
return
FALSE
;
}
}
uint8
card
::
get_select_sequence
(
uint8
*
deck_seq_pointer
)
{
uint8
card
::
get_select_sequence
(
uint8
*
deck_seq_pointer
)
{
if
(
current
.
location
==
LOCATION_DECK
&&
current
.
controler
==
pduel
->
game_field
->
core
.
selecting_player
&&
!
pduel
->
game_field
->
core
.
select_deck_seq_preserved
)
{
if
(
current
.
location
==
LOCATION_DECK
&&
pduel
->
game_field
->
is_select_hide_deck_sequence
(
current
.
controler
)
)
{
return
(
*
deck_seq_pointer
)
++
;
return
(
*
deck_seq_pointer
)
++
;
}
else
{
}
else
{
return
current
.
sequence
;
return
current
.
sequence
;
...
...
common.h
View file @
fc6cb4cd
...
@@ -43,6 +43,7 @@ typedef signed char int8;
...
@@ -43,6 +43,7 @@ typedef signed char int8;
#define NULL 0
#define NULL 0
#endif
#endif
#define MASTER_RULE3 3 //Master Rule 3 (2014)
#define NEW_MASTER_RULE 4 //New Master Rule (2017)
#define NEW_MASTER_RULE 4 //New Master Rule (2017)
#define MASTER_RULE_2020 5 //Master Rule 2020
#define MASTER_RULE_2020 5 //Master Rule 2020
#define CURRENT_RULE 5
#define CURRENT_RULE 5
...
@@ -418,6 +419,7 @@ typedef signed char int8;
...
@@ -418,6 +419,7 @@ typedef signed char int8;
#define DUEL_TAG_MODE 0x20
#define DUEL_TAG_MODE 0x20
#define DUEL_SIMPLE_AI 0x40
#define DUEL_SIMPLE_AI 0x40
#define DUEL_RETURN_DECK_TOP 0x80
#define DUEL_RETURN_DECK_TOP 0x80
#define DUEL_REVEAL_DECK_SEQ 0x100
//Activity
//Activity
#define ACTIVITY_SUMMON 1
#define ACTIVITY_SUMMON 1
...
...
field.cpp
View file @
fc6cb4cd
...
@@ -55,25 +55,7 @@ bool tevent::operator< (const tevent& v) const {
...
@@ -55,25 +55,7 @@ bool tevent::operator< (const tevent& v) const {
}
}
field
::
field
(
duel
*
pduel
)
{
field
::
field
(
duel
*
pduel
)
{
this
->
pduel
=
pduel
;
this
->
pduel
=
pduel
;
infos
.
field_id
=
1
;
infos
.
copy_id
=
1
;
infos
.
can_shuffle
=
TRUE
;
infos
.
turn_id
=
0
;
infos
.
turn_id_by_player
[
0
]
=
0
;
infos
.
turn_id_by_player
[
1
]
=
0
;
infos
.
card_id
=
1
;
infos
.
phase
=
0
;
infos
.
turn_player
=
0
;
for
(
int32
i
=
0
;
i
<
2
;
++
i
)
{
for
(
int32
i
=
0
;
i
<
2
;
++
i
)
{
//cost[i].count = 0;
//cost[i].amount = 0;
player
[
i
].
lp
=
8000
;
player
[
i
].
start_count
=
5
;
player
[
i
].
draw_count
=
1
;
player
[
i
].
disabled_location
=
0
;
player
[
i
].
used_location
=
0
;
player
[
i
].
extra_p_count
=
0
;
player
[
i
].
tag_extra_p_count
=
0
;
player
[
i
].
list_mzone
.
resize
(
7
,
0
);
player
[
i
].
list_mzone
.
resize
(
7
,
0
);
player
[
i
].
list_szone
.
resize
(
8
,
0
);
player
[
i
].
list_szone
.
resize
(
8
,
0
);
player
[
i
].
list_main
.
reserve
(
60
);
player
[
i
].
list_main
.
reserve
(
60
);
...
@@ -82,8 +64,6 @@ field::field(duel* pduel) {
...
@@ -82,8 +64,6 @@ field::field(duel* pduel) {
player
[
i
].
list_remove
.
reserve
(
75
);
player
[
i
].
list_remove
.
reserve
(
75
);
player
[
i
].
list_extra
.
reserve
(
30
);
player
[
i
].
list_extra
.
reserve
(
30
);
}
}
returns
=
{
0
};
temp_card
=
nullptr
;
}
}
void
field
::
reload_field_info
()
{
void
field
::
reload_field_info
()
{
pduel
->
write_buffer8
(
MSG_RELOAD_FIELD
);
pduel
->
write_buffer8
(
MSG_RELOAD_FIELD
);
...
@@ -300,10 +280,10 @@ void field::move_card(uint8 playerid, card* pcard, uint8 location, uint8 sequenc
...
@@ -300,10 +280,10 @@ void field::move_card(uint8 playerid, card* pcard, uint8 location, uint8 sequenc
if
(
playerid
==
preplayer
&&
sequence
==
presequence
)
if
(
playerid
==
preplayer
&&
sequence
==
presequence
)
return
;
return
;
if
(
location
==
LOCATION_MZONE
)
{
if
(
location
==
LOCATION_MZONE
)
{
if
(
sequence
>=
player
[
playerid
].
list_mzone
.
size
()
||
player
[
playerid
].
list_mzone
[
sequence
])
if
(
sequence
>=
(
int32
)
player
[
playerid
].
list_mzone
.
size
()
||
player
[
playerid
].
list_mzone
[
sequence
])
return
;
return
;
}
else
{
}
else
{
if
(
sequence
>=
player
[
playerid
].
list_szone
.
size
()
||
player
[
playerid
].
list_szone
[
sequence
])
if
(
sequence
>=
player
[
playerid
].
szone_size
||
player
[
playerid
].
list_szone
[
sequence
])
return
;
return
;
}
}
if
(
preplayer
==
playerid
)
{
if
(
preplayer
==
playerid
)
{
...
@@ -511,14 +491,14 @@ card* field::get_field_card(uint8 playerid, uint32 general_location, uint8 seque
...
@@ -511,14 +491,14 @@ card* field::get_field_card(uint8 playerid, uint32 general_location, uint8 seque
return
nullptr
;
return
nullptr
;
switch
(
general_location
)
{
switch
(
general_location
)
{
case
LOCATION_MZONE
:
{
case
LOCATION_MZONE
:
{
if
(
sequence
<
player
[
playerid
].
list_mzone
.
size
())
if
(
sequence
<
(
int32
)
player
[
playerid
].
list_mzone
.
size
())
return
player
[
playerid
].
list_mzone
[
sequence
];
return
player
[
playerid
].
list_mzone
[
sequence
];
else
else
return
nullptr
;
return
nullptr
;
break
;
break
;
}
}
case
LOCATION_SZONE
:
{
case
LOCATION_SZONE
:
{
if
(
sequence
<
player
[
playerid
].
list_szone
.
size
()
)
if
(
sequence
<
player
[
playerid
].
szone_size
)
return
player
[
playerid
].
list_szone
[
sequence
];
return
player
[
playerid
].
list_szone
[
sequence
];
else
else
return
nullptr
;
return
nullptr
;
...
@@ -585,7 +565,7 @@ int32 field::is_location_useable(uint8 playerid, uint32 general_location, uint8
...
@@ -585,7 +565,7 @@ int32 field::is_location_useable(uint8 playerid, uint32 general_location, uint8
return
FALSE
;
return
FALSE
;
uint32
flag
=
player
[
playerid
].
disabled_location
|
player
[
playerid
].
used_location
;
uint32
flag
=
player
[
playerid
].
disabled_location
|
player
[
playerid
].
used_location
;
if
(
general_location
==
LOCATION_MZONE
)
{
if
(
general_location
==
LOCATION_MZONE
)
{
if
(
sequence
>=
(
int32
)
player
[
0
].
list_mzone
.
size
())
if
(
sequence
>=
(
int32
)
player
[
playerid
].
list_mzone
.
size
())
return
FALSE
;
return
FALSE
;
if
(
flag
&
(
0x1u
<<
sequence
))
if
(
flag
&
(
0x1u
<<
sequence
))
return
FALSE
;
return
FALSE
;
...
@@ -595,7 +575,7 @@ int32 field::is_location_useable(uint8 playerid, uint32 general_location, uint8
...
@@ -595,7 +575,7 @@ int32 field::is_location_useable(uint8 playerid, uint32 general_location, uint8
return
FALSE
;
return
FALSE
;
}
}
}
else
if
(
general_location
==
LOCATION_SZONE
)
{
}
else
if
(
general_location
==
LOCATION_SZONE
)
{
if
(
sequence
>=
(
int32
)
player
[
0
].
list_szone
.
size
()
)
if
(
sequence
>=
player
[
playerid
].
szone_size
)
return
FALSE
;
return
FALSE
;
if
(
flag
&
(
0x100u
<<
sequence
))
if
(
flag
&
(
0x100u
<<
sequence
))
return
FALSE
;
return
FALSE
;
...
@@ -1127,7 +1107,7 @@ void field::refresh_player_info(uint8 playerid) {
...
@@ -1127,7 +1107,7 @@ void field::refresh_player_info(uint8 playerid) {
if
(
player
[
playerid
].
list_mzone
[
i
])
if
(
player
[
playerid
].
list_mzone
[
i
])
used_flag
|=
0x1U
<<
i
;
used_flag
|=
0x1U
<<
i
;
}
}
for
(
int32
i
=
0
;
i
<
(
int32
)
player
[
playerid
].
list_szone
.
size
()
;
++
i
)
{
for
(
int32
i
=
0
;
i
<
player
[
playerid
].
szone_size
;
++
i
)
{
if
(
player
[
playerid
].
list_szone
[
i
])
if
(
player
[
playerid
].
list_szone
[
i
])
used_flag
|=
0x100U
<<
i
;
used_flag
|=
0x100U
<<
i
;
}
}
...
@@ -2293,6 +2273,9 @@ int32 field::check_spsummon_counter(uint8 playerid, uint8 ct) {
...
@@ -2293,6 +2273,9 @@ int32 field::check_spsummon_counter(uint8 playerid, uint8 ct) {
}
}
return
TRUE
;
return
TRUE
;
}
}
bool
field
::
is_select_hide_deck_sequence
(
uint8
playerid
)
{
return
!
core
.
select_deck_sequence_revealed
&&
!
(
core
.
duel_options
&
DUEL_REVEAL_DECK_SEQ
)
&&
playerid
==
core
.
selecting_player
;
}
int32
field
::
check_lp_cost
(
uint8
playerid
,
uint32
lp
,
uint32
must_pay
)
{
int32
field
::
check_lp_cost
(
uint8
playerid
,
uint32
lp
,
uint32
must_pay
)
{
effect_set
eset
;
effect_set
eset
;
int32
val
=
lp
;
int32
val
=
lp
;
...
...
field.h
View file @
fc6cb4cd
...
@@ -80,13 +80,14 @@ struct chain {
...
@@ -80,13 +80,14 @@ struct chain {
};
};
struct
player_info
{
struct
player_info
{
int32
lp
{
0
};
int32
lp
{
800
0
};
int32
start_count
{
0
};
int32
start_count
{
5
};
int32
draw_count
{
0
};
int32
draw_count
{
1
};
uint32
used_location
{
0
};
uint32
used_location
{
0
};
uint32
disabled_location
{
0
};
uint32
disabled_location
{
0
};
uint32
extra_p_count
{
0
};
uint32
extra_p_count
{
0
};
uint32
tag_extra_p_count
{
0
};
uint32
tag_extra_p_count
{
0
};
int32
szone_size
{
6
};
card_vector
list_mzone
;
card_vector
list_mzone
;
card_vector
list_szone
;
card_vector
list_szone
;
card_vector
list_main
;
card_vector
list_main
;
...
@@ -127,19 +128,19 @@ struct field_effect {
...
@@ -127,19 +128,19 @@ struct field_effect {
grant_effect_container
grant_effect
;
grant_effect_container
grant_effect
;
};
};
struct
field_info
{
struct
field_info
{
int32
field_id
{
0
};
int32
field_id
{
1
};
int16
copy_id
{
0
};
int16
copy_id
{
1
};
int16
turn_id
{
0
};
int16
turn_id
{};
int16
turn_id_by_player
[
2
]{};
int16
turn_id_by_player
[
2
]{};
int16
card_id
{
0
};
int16
card_id
{
1
};
uint16
phase
{
0
};
uint16
phase
{};
uint8
turn_player
{
0
};
uint8
turn_player
{};
uint8
priorities
[
2
]{};
uint8
priorities
[
2
]{};
uint8
can_shuffle
{
TRUE
};
uint8
can_shuffle
{
TRUE
};
};
};
struct
lpcost
{
struct
lpcost
{
int32
count
{
0
};
int32
count
{};
int32
amount
{
0
};
int32
amount
{};
int32
lpstack
[
8
]{};
int32
lpstack
[
8
]{};
};
};
struct
processor_unit
{
struct
processor_unit
{
...
@@ -306,7 +307,7 @@ struct processor {
...
@@ -306,7 +307,7 @@ struct processor {
uint8
extra_summon
[
2
]{};
uint8
extra_summon
[
2
]{};
int32
spe_effect
[
2
]{};
int32
spe_effect
[
2
]{};
int32
last_select_hint
[
2
]{
0
};
int32
last_select_hint
[
2
]{
0
};
int32
duel_options
{
0
};
u
int32
duel_options
{
0
};
int32
duel_rule
{
CURRENT_RULE
};
int32
duel_rule
{
CURRENT_RULE
};
uint32
copy_reset
{
0
};
uint32
copy_reset
{
0
};
int32
copy_reset_count
{
0
};
int32
copy_reset_count
{
0
};
...
@@ -350,7 +351,7 @@ struct processor {
...
@@ -350,7 +351,7 @@ struct processor {
uint32
hint_timing
[
2
]{};
uint32
hint_timing
[
2
]{};
uint8
current_player
{
PLAYER_NONE
};
uint8
current_player
{
PLAYER_NONE
};
uint8
conti_player
{
PLAYER_NONE
};
uint8
conti_player
{
PLAYER_NONE
};
uint8
select_deck_seq
_preserv
ed
{
FALSE
};
uint8
select_deck_seq
uence_reveal
ed
{
FALSE
};
uint8
selecting_player
{
PLAYER_NONE
};
uint8
selecting_player
{
PLAYER_NONE
};
std
::
unordered_map
<
uint32
,
std
::
pair
<
uint32
,
uint32
>>
summon_counter
;
std
::
unordered_map
<
uint32
,
std
::
pair
<
uint32
,
uint32
>>
summon_counter
;
std
::
unordered_map
<
uint32
,
std
::
pair
<
uint32
,
uint32
>>
normalsummon_counter
;
std
::
unordered_map
<
uint32
,
std
::
pair
<
uint32
,
uint32
>>
normalsummon_counter
;
...
@@ -374,12 +375,12 @@ public:
...
@@ -374,12 +375,12 @@ public:
duel
*
pduel
;
duel
*
pduel
;
player_info
player
[
2
];
player_info
player
[
2
];
card
*
temp_card
;
card
*
temp_card
{}
;
field_info
infos
;
field_info
infos
;
//lpcost cost[2];
//lpcost cost[2];
field_effect
effects
;
field_effect
effects
;
processor
core
;
processor
core
;
return_value
returns
;
return_value
returns
{}
;
tevent
nil_event
;
tevent
nil_event
;
static
int32
field_used_count
[
32
];
static
int32
field_used_count
[
32
];
...
@@ -463,6 +464,7 @@ public:
...
@@ -463,6 +464,7 @@ public:
void
check_chain_counter
(
effect
*
peffect
,
int32
playerid
,
int32
chainid
,
bool
cancel
=
false
);
void
check_chain_counter
(
effect
*
peffect
,
int32
playerid
,
int32
chainid
,
bool
cancel
=
false
);
void
set_spsummon_counter
(
uint8
playerid
);
void
set_spsummon_counter
(
uint8
playerid
);
int32
check_spsummon_counter
(
uint8
playerid
,
uint8
ct
=
1
);
int32
check_spsummon_counter
(
uint8
playerid
,
uint8
ct
=
1
);
bool
is_select_hide_deck_sequence
(
uint8
playerid
);
int32
check_lp_cost
(
uint8
playerid
,
uint32
cost
,
uint32
must_pay
);
int32
check_lp_cost
(
uint8
playerid
,
uint32
cost
,
uint32
must_pay
);
void
save_lp_cost
()
{}
void
save_lp_cost
()
{}
...
...
libdebug.cpp
View file @
fc6cb4cd
...
@@ -148,6 +148,10 @@ int32 scriptlib::debug_reload_field_begin(lua_State *L) {
...
@@ -148,6 +148,10 @@ int32 scriptlib::debug_reload_field_begin(lua_State *L) {
pduel
->
game_field
->
core
.
duel_rule
=
1
;
pduel
->
game_field
->
core
.
duel_rule
=
1
;
else
else
pduel
->
game_field
->
core
.
duel_rule
=
CURRENT_RULE
;
pduel
->
game_field
->
core
.
duel_rule
=
CURRENT_RULE
;
if
(
pduel
->
game_field
->
core
.
duel_rule
==
MASTER_RULE3
)
{
pduel
->
game_field
->
player
[
0
].
szone_size
=
8
;
pduel
->
game_field
->
player
[
1
].
szone_size
=
8
;
}
return
0
;
return
0
;
}
}
int32
scriptlib
::
debug_reload_field_end
(
lua_State
*
L
)
{
int32
scriptlib
::
debug_reload_field_end
(
lua_State
*
L
)
{
...
...
libduel.cpp
View file @
fc6cb4cd
...
@@ -1546,12 +1546,12 @@ int32 scriptlib::duel_disable_self_destroy_check(lua_State* L) {
...
@@ -1546,12 +1546,12 @@ int32 scriptlib::duel_disable_self_destroy_check(lua_State* L) {
pduel
->
game_field
->
core
.
selfdes_disabled
=
disable
;
pduel
->
game_field
->
core
.
selfdes_disabled
=
disable
;
return
0
;
return
0
;
}
}
int32
scriptlib
::
duel_
preserve_select_deck_seq
(
lua_State
*
L
)
{
int32
scriptlib
::
duel_
reveal_select_deck_sequence
(
lua_State
*
L
)
{
duel
*
pduel
=
interpreter
::
get_duel_info
(
L
);
duel
*
pduel
=
interpreter
::
get_duel_info
(
L
);
uint8
preserve
=
TRUE
;
uint8
reveal
=
TRUE
;
if
(
lua_gettop
(
L
)
>
0
)
if
(
lua_gettop
(
L
)
>
0
)
preserve
=
lua_toboolean
(
L
,
1
);
reveal
=
lua_toboolean
(
L
,
1
);
pduel
->
game_field
->
core
.
select_deck_seq
_preserved
=
preserve
;
pduel
->
game_field
->
core
.
select_deck_seq
uence_revealed
=
reveal
;
return
0
;
return
0
;
}
}
int32
scriptlib
::
duel_shuffle_deck
(
lua_State
*
L
)
{
int32
scriptlib
::
duel_shuffle_deck
(
lua_State
*
L
)
{
...
@@ -4876,7 +4876,7 @@ static const struct luaL_Reg duellib[] = {
...
@@ -4876,7 +4876,7 @@ static const struct luaL_Reg duellib[] = {
{
"DiscardHand"
,
scriptlib
::
duel_discard_hand
},
{
"DiscardHand"
,
scriptlib
::
duel_discard_hand
},
{
"DisableShuffleCheck"
,
scriptlib
::
duel_disable_shuffle_check
},
{
"DisableShuffleCheck"
,
scriptlib
::
duel_disable_shuffle_check
},
{
"DisableSelfDestroyCheck"
,
scriptlib
::
duel_disable_self_destroy_check
},
{
"DisableSelfDestroyCheck"
,
scriptlib
::
duel_disable_self_destroy_check
},
{
"
PreserveSelectDeckSequence"
,
scriptlib
::
duel_preserve_select_deck_seq
},
{
"
RevealSelectDeckSequence"
,
scriptlib
::
duel_reveal_select_deck_sequence
},
{
"ShuffleDeck"
,
scriptlib
::
duel_shuffle_deck
},
{
"ShuffleDeck"
,
scriptlib
::
duel_shuffle_deck
},
{
"ShuffleExtra"
,
scriptlib
::
duel_shuffle_extra
},
{
"ShuffleExtra"
,
scriptlib
::
duel_shuffle_extra
},
{
"ShuffleHand"
,
scriptlib
::
duel_shuffle_hand
},
{
"ShuffleHand"
,
scriptlib
::
duel_shuffle_hand
},
...
...
mtrandom.h
View file @
fc6cb4cd
...
@@ -9,6 +9,8 @@
...
@@ -9,6 +9,8 @@
#define MTRANDOM_H_
#define MTRANDOM_H_
#include <random>
#include <random>
#include <vector>
#include <utility>
class
mt19937
{
class
mt19937
{
public:
public:
...
...
ocgapi.cpp
View file @
fc6cb4cd
...
@@ -64,7 +64,7 @@ extern "C" DECL_DLLEXPORT intptr_t create_duel(uint_fast32_t seed) {
...
@@ -64,7 +64,7 @@ extern "C" DECL_DLLEXPORT intptr_t create_duel(uint_fast32_t seed) {
pduel
->
random
.
reset
(
seed
);
pduel
->
random
.
reset
(
seed
);
return
(
intptr_t
)
pduel
;
return
(
intptr_t
)
pduel
;
}
}
extern
"C"
DECL_DLLEXPORT
void
start_duel
(
intptr_t
pduel
,
int32
options
)
{
extern
"C"
DECL_DLLEXPORT
void
start_duel
(
intptr_t
pduel
,
u
int32
options
)
{
duel
*
pd
=
(
duel
*
)
pduel
;
duel
*
pd
=
(
duel
*
)
pduel
;
pd
->
game_field
->
core
.
duel_options
|=
options
&
0xffff
;
pd
->
game_field
->
core
.
duel_options
|=
options
&
0xffff
;
int32
duel_rule
=
options
>>
16
;
int32
duel_rule
=
options
>>
16
;
...
@@ -72,8 +72,12 @@ extern "C" DECL_DLLEXPORT void start_duel(intptr_t pduel, int32 options) {
...
@@ -72,8 +72,12 @@ extern "C" DECL_DLLEXPORT void start_duel(intptr_t pduel, int32 options) {
pd
->
game_field
->
core
.
duel_rule
=
duel_rule
;
pd
->
game_field
->
core
.
duel_rule
=
duel_rule
;
else
if
(
options
&
DUEL_OBSOLETE_RULING
)
//provide backward compatibility with replay
else
if
(
options
&
DUEL_OBSOLETE_RULING
)
//provide backward compatibility with replay
pd
->
game_field
->
core
.
duel_rule
=
1
;
pd
->
game_field
->
core
.
duel_rule
=
1
;
else
if
(
!
pd
->
game_field
->
core
.
duel_rule
)
if
(
pd
->
game_field
->
core
.
duel_rule
<
1
||
pd
->
game_field
->
core
.
duel_rule
>
CURRENT_RULE
)
pd
->
game_field
->
core
.
duel_rule
=
CURRENT_RULE
;
pd
->
game_field
->
core
.
duel_rule
=
CURRENT_RULE
;
if
(
pd
->
game_field
->
core
.
duel_rule
==
MASTER_RULE3
)
{
pd
->
game_field
->
player
[
0
].
szone_size
=
8
;
pd
->
game_field
->
player
[
1
].
szone_size
=
8
;
}
pd
->
game_field
->
core
.
shuffle_hand_check
[
0
]
=
FALSE
;
pd
->
game_field
->
core
.
shuffle_hand_check
[
0
]
=
FALSE
;
pd
->
game_field
->
core
.
shuffle_hand_check
[
1
]
=
FALSE
;
pd
->
game_field
->
core
.
shuffle_hand_check
[
1
]
=
FALSE
;
pd
->
game_field
->
core
.
shuffle_deck_check
[
0
]
=
FALSE
;
pd
->
game_field
->
core
.
shuffle_deck_check
[
0
]
=
FALSE
;
...
...
ocgapi.h
View file @
fc6cb4cd
...
@@ -39,7 +39,7 @@ uint32 read_card(uint32 code, card_data* data);
...
@@ -39,7 +39,7 @@ uint32 read_card(uint32 code, card_data* data);
uint32
handle_message
(
void
*
pduel
,
uint32
message_type
);
uint32
handle_message
(
void
*
pduel
,
uint32
message_type
);
extern
"C"
DECL_DLLEXPORT
intptr_t
create_duel
(
uint_fast32_t
seed
);
extern
"C"
DECL_DLLEXPORT
intptr_t
create_duel
(
uint_fast32_t
seed
);
extern
"C"
DECL_DLLEXPORT
void
start_duel
(
intptr_t
pduel
,
int32
options
);
extern
"C"
DECL_DLLEXPORT
void
start_duel
(
intptr_t
pduel
,
u
int32
options
);
extern
"C"
DECL_DLLEXPORT
void
end_duel
(
intptr_t
pduel
);
extern
"C"
DECL_DLLEXPORT
void
end_duel
(
intptr_t
pduel
);
extern
"C"
DECL_DLLEXPORT
void
set_player_info
(
intptr_t
pduel
,
int32
playerid
,
int32
lp
,
int32
startcount
,
int32
drawcount
);
extern
"C"
DECL_DLLEXPORT
void
set_player_info
(
intptr_t
pduel
,
int32
playerid
,
int32
lp
,
int32
startcount
,
int32
drawcount
);
extern
"C"
DECL_DLLEXPORT
void
get_log_message
(
intptr_t
pduel
,
char
*
buf
);
extern
"C"
DECL_DLLEXPORT
void
get_log_message
(
intptr_t
pduel
,
char
*
buf
);
...
...
scriptlib.h
View file @
fc6cb4cd
...
@@ -462,7 +462,7 @@ public:
...
@@ -462,7 +462,7 @@ public:
static
int32
duel_discard_hand
(
lua_State
*
L
);
static
int32
duel_discard_hand
(
lua_State
*
L
);
static
int32
duel_disable_shuffle_check
(
lua_State
*
L
);
static
int32
duel_disable_shuffle_check
(
lua_State
*
L
);
static
int32
duel_disable_self_destroy_check
(
lua_State
*
L
);
static
int32
duel_disable_self_destroy_check
(
lua_State
*
L
);
static
int32
duel_
preserve_select_deck_seq
(
lua_State
*
L
);
static
int32
duel_
reveal_select_deck_sequence
(
lua_State
*
L
);
static
int32
duel_shuffle_deck
(
lua_State
*
L
);
static
int32
duel_shuffle_deck
(
lua_State
*
L
);
static
int32
duel_shuffle_extra
(
lua_State
*
L
);
static
int32
duel_shuffle_extra
(
lua_State
*
L
);
static
int32
duel_shuffle_hand
(
lua_State
*
L
);
static
int32
duel_shuffle_hand
(
lua_State
*
L
);
...
...
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