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
xiaoye
ygopro-core
Commits
148f7580
Commit
148f7580
authored
Feb 12, 2025
by
nanahira
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of github.com:Fluorohydride/ygopro-core
parents
00e330d8
fe48b4fb
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
35 additions
and
35 deletions
+35
-35
card.cpp
card.cpp
+19
-19
duel.cpp
duel.cpp
+5
-2
field.cpp
field.cpp
+3
-3
field.h
field.h
+2
-2
libdebug.cpp
libdebug.cpp
+0
-4
ocgapi.cpp
ocgapi.cpp
+4
-3
operations.cpp
operations.cpp
+2
-2
No files found.
card.cpp
View file @
148f7580
...
@@ -2722,11 +2722,11 @@ void card::filter_effect_container(const effect_container& container, uint32_t c
...
@@ -2722,11 +2722,11 @@ void card::filter_effect_container(const effect_container& container, uint32_t c
}
}
void
card
::
filter_effect
(
uint32_t
code
,
effect_set
*
eset
,
uint8_t
sort
)
{
void
card
::
filter_effect
(
uint32_t
code
,
effect_set
*
eset
,
uint8_t
sort
)
{
filter_effect_container
(
single_effect
,
code
,
default_single_filter
,
*
eset
);
filter_effect_container
(
single_effect
,
code
,
default_single_filter
,
*
eset
);
for
(
const
auto
&
pcard
:
equiping_cards
)
for
(
auto
&
pcard
:
equiping_cards
)
filter_effect_container
(
pcard
->
equip_effect
,
code
,
default_equip_filter
,
*
eset
);
filter_effect_container
(
pcard
->
equip_effect
,
code
,
default_equip_filter
,
*
eset
);
for
(
const
auto
&
pcard
:
effect_target_owner
)
for
(
auto
&
pcard
:
effect_target_owner
)
filter_effect_container
(
pcard
->
target_effect
,
code
,
default_target_filter
,
*
eset
);
filter_effect_container
(
pcard
->
target_effect
,
code
,
default_target_filter
,
*
eset
);
for
(
const
auto
&
pcard
:
xyz_materials
)
for
(
auto
&
pcard
:
xyz_materials
)
filter_effect_container
(
pcard
->
xmaterial_effect
,
code
,
default_xmaterial_filter
,
*
eset
);
filter_effect_container
(
pcard
->
xmaterial_effect
,
code
,
default_xmaterial_filter
,
*
eset
);
filter_effect_container
(
pduel
->
game_field
->
effects
.
aura_effect
,
code
,
default_aura_filter
,
*
eset
);
filter_effect_container
(
pduel
->
game_field
->
effects
.
aura_effect
,
code
,
default_aura_filter
,
*
eset
);
if
(
sort
)
if
(
sort
)
...
@@ -2734,17 +2734,17 @@ void card::filter_effect(uint32_t code, effect_set* eset, uint8_t sort) {
...
@@ -2734,17 +2734,17 @@ void card::filter_effect(uint32_t code, effect_set* eset, uint8_t sort) {
}
}
void
card
::
filter_single_continuous_effect
(
uint32_t
code
,
effect_set
*
eset
,
uint8_t
sort
)
{
void
card
::
filter_single_continuous_effect
(
uint32_t
code
,
effect_set
*
eset
,
uint8_t
sort
)
{
filter_effect_container
(
single_effect
,
code
,
accept_filter
,
*
eset
);
filter_effect_container
(
single_effect
,
code
,
accept_filter
,
*
eset
);
for
(
const
auto
&
pcard
:
equiping_cards
)
for
(
auto
&
pcard
:
equiping_cards
)
filter_effect_container
(
pcard
->
equip_effect
,
code
,
accept_filter
,
*
eset
);
filter_effect_container
(
pcard
->
equip_effect
,
code
,
accept_filter
,
*
eset
);
auto
target_filter
=
[](
card
*
c
,
effect
*
peffect
)
->
bool
{
auto
target_filter
=
[](
card
*
c
,
effect
*
peffect
)
->
bool
{
return
peffect
->
is_target
(
c
);
return
peffect
->
is_target
(
c
);
};
};
for
(
const
auto
&
pcard
:
effect_target_owner
)
for
(
auto
&
pcard
:
effect_target_owner
)
filter_effect_container
(
pcard
->
target_effect
,
code
,
target_filter
,
*
eset
);
filter_effect_container
(
pcard
->
target_effect
,
code
,
target_filter
,
*
eset
);
auto
xmaterial_filter
=
[](
card
*
c
,
effect
*
peffect
)
->
bool
{
auto
xmaterial_filter
=
[](
card
*
c
,
effect
*
peffect
)
->
bool
{
return
!
(
peffect
->
type
&
EFFECT_TYPE_FIELD
);
return
!
(
peffect
->
type
&
EFFECT_TYPE_FIELD
);
};
};
for
(
const
auto
&
pcard
:
xyz_materials
)
for
(
auto
&
pcard
:
xyz_materials
)
filter_effect_container
(
pcard
->
xmaterial_effect
,
code
,
xmaterial_filter
,
*
eset
);
filter_effect_container
(
pcard
->
xmaterial_effect
,
code
,
xmaterial_filter
,
*
eset
);
if
(
sort
)
if
(
sort
)
eset
->
sort
();
eset
->
sort
();
...
@@ -2757,7 +2757,7 @@ void card::filter_self_effect(uint32_t code, effect_set* eset, uint8_t sort) {
...
@@ -2757,7 +2757,7 @@ void card::filter_self_effect(uint32_t code, effect_set* eset, uint8_t sort) {
auto
xmaterial_filter
=
[](
card
*
c
,
effect
*
peffect
)
->
bool
{
auto
xmaterial_filter
=
[](
card
*
c
,
effect
*
peffect
)
->
bool
{
return
!
(
peffect
->
type
&
EFFECT_TYPE_FIELD
);
return
!
(
peffect
->
type
&
EFFECT_TYPE_FIELD
);
};
};
for
(
const
auto
&
pcard
:
xyz_materials
)
for
(
auto
&
pcard
:
xyz_materials
)
filter_effect_container
(
pcard
->
xmaterial_effect
,
code
,
xmaterial_filter
,
*
eset
);
filter_effect_container
(
pcard
->
xmaterial_effect
,
code
,
xmaterial_filter
,
*
eset
);
if
(
sort
)
if
(
sort
)
eset
->
sort
();
eset
->
sort
();
...
@@ -2766,17 +2766,17 @@ void card::filter_self_effect(uint32_t code, effect_set* eset, uint8_t sort) {
...
@@ -2766,17 +2766,17 @@ void card::filter_self_effect(uint32_t code, effect_set* eset, uint8_t sort) {
void
card
::
filter_immune_effect
()
{
void
card
::
filter_immune_effect
()
{
immune_effect
.
clear
();
immune_effect
.
clear
();
filter_effect_container
(
single_effect
,
EFFECT_IMMUNE_EFFECT
,
accept_filter
,
immune_effect
);
filter_effect_container
(
single_effect
,
EFFECT_IMMUNE_EFFECT
,
accept_filter
,
immune_effect
);
for
(
const
auto
&
pcard
:
equiping_cards
)
for
(
auto
&
pcard
:
equiping_cards
)
filter_effect_container
(
pcard
->
equip_effect
,
EFFECT_IMMUNE_EFFECT
,
accept_filter
,
immune_effect
);
filter_effect_container
(
pcard
->
equip_effect
,
EFFECT_IMMUNE_EFFECT
,
accept_filter
,
immune_effect
);
auto
target_filter
=
[](
card
*
c
,
effect
*
peffect
)
->
bool
{
auto
target_filter
=
[](
card
*
c
,
effect
*
peffect
)
->
bool
{
return
peffect
->
is_target
(
c
);
return
peffect
->
is_target
(
c
);
};
};
for
(
const
auto
&
pcard
:
effect_target_owner
)
for
(
auto
&
pcard
:
effect_target_owner
)
filter_effect_container
(
pcard
->
target_effect
,
EFFECT_IMMUNE_EFFECT
,
target_filter
,
immune_effect
);
filter_effect_container
(
pcard
->
target_effect
,
EFFECT_IMMUNE_EFFECT
,
target_filter
,
immune_effect
);
auto
xmaterial_filter
=
[](
card
*
c
,
effect
*
peffect
)
->
bool
{
auto
xmaterial_filter
=
[](
card
*
c
,
effect
*
peffect
)
->
bool
{
return
!
(
peffect
->
type
&
EFFECT_TYPE_FIELD
);
return
!
(
peffect
->
type
&
EFFECT_TYPE_FIELD
);
};
};
for
(
const
auto
&
pcard
:
xyz_materials
)
for
(
auto
&
pcard
:
xyz_materials
)
filter_effect_container
(
pcard
->
xmaterial_effect
,
EFFECT_IMMUNE_EFFECT
,
xmaterial_filter
,
immune_effect
);
filter_effect_container
(
pcard
->
xmaterial_effect
,
EFFECT_IMMUNE_EFFECT
,
xmaterial_filter
,
immune_effect
);
filter_effect_container
(
pduel
->
game_field
->
effects
.
aura_effect
,
EFFECT_IMMUNE_EFFECT
,
target_filter
,
immune_effect
);
filter_effect_container
(
pduel
->
game_field
->
effects
.
aura_effect
,
EFFECT_IMMUNE_EFFECT
,
target_filter
,
immune_effect
);
immune_effect
.
sort
();
immune_effect
.
sort
();
...
@@ -3044,17 +3044,17 @@ effect* card::is_affected_by_effect(uint32_t code) {
...
@@ -3044,17 +3044,17 @@ effect* card::is_affected_by_effect(uint32_t code) {
effect
*
peffect
=
find_effect
(
single_effect
,
code
,
default_single_filter
);
effect
*
peffect
=
find_effect
(
single_effect
,
code
,
default_single_filter
);
if
(
peffect
)
if
(
peffect
)
return
peffect
;
return
peffect
;
for
(
const
auto
&
pcard
:
equiping_cards
)
{
for
(
auto
&
pcard
:
equiping_cards
)
{
peffect
=
find_effect
(
pcard
->
equip_effect
,
code
,
default_equip_filter
);
peffect
=
find_effect
(
pcard
->
equip_effect
,
code
,
default_equip_filter
);
if
(
peffect
)
if
(
peffect
)
return
peffect
;
return
peffect
;
}
}
for
(
const
auto
&
pcard
:
effect_target_owner
)
{
for
(
auto
&
pcard
:
effect_target_owner
)
{
peffect
=
find_effect
(
pcard
->
target_effect
,
code
,
default_target_filter
);
peffect
=
find_effect
(
pcard
->
target_effect
,
code
,
default_target_filter
);
if
(
peffect
)
if
(
peffect
)
return
peffect
;
return
peffect
;
}
}
for
(
const
auto
&
pcard
:
xyz_materials
)
{
for
(
auto
&
pcard
:
xyz_materials
)
{
peffect
=
find_effect
(
pcard
->
xmaterial_effect
,
code
,
default_xmaterial_filter
);
peffect
=
find_effect
(
pcard
->
xmaterial_effect
,
code
,
default_xmaterial_filter
);
if
(
peffect
)
if
(
peffect
)
return
peffect
;
return
peffect
;
...
@@ -3074,7 +3074,7 @@ effect* card::is_affected_by_effect(int32_t code, card* target) {
...
@@ -3074,7 +3074,7 @@ effect* card::is_affected_by_effect(int32_t code, card* target) {
auto
equip_filter
=
[](
card
*
c
,
effect
*
peffect
,
card
*
target
)
->
bool
{
auto
equip_filter
=
[](
card
*
c
,
effect
*
peffect
,
card
*
target
)
->
bool
{
return
default_equip_filter
(
c
,
peffect
)
&&
peffect
->
get_value
(
target
);
return
default_equip_filter
(
c
,
peffect
)
&&
peffect
->
get_value
(
target
);
};
};
for
(
const
auto
&
pcard
:
equiping_cards
)
{
for
(
auto
&
pcard
:
equiping_cards
)
{
peffect
=
find_effect_with_target
(
pcard
->
equip_effect
,
code
,
equip_filter
,
target
);
peffect
=
find_effect_with_target
(
pcard
->
equip_effect
,
code
,
equip_filter
,
target
);
if
(
peffect
)
if
(
peffect
)
return
peffect
;
return
peffect
;
...
@@ -3082,7 +3082,7 @@ effect* card::is_affected_by_effect(int32_t code, card* target) {
...
@@ -3082,7 +3082,7 @@ effect* card::is_affected_by_effect(int32_t code, card* target) {
auto
target_filter
=
[](
card
*
c
,
effect
*
peffect
,
card
*
target
)
->
bool
{
auto
target_filter
=
[](
card
*
c
,
effect
*
peffect
,
card
*
target
)
->
bool
{
return
default_target_filter
(
c
,
peffect
)
&&
peffect
->
get_value
(
target
);
return
default_target_filter
(
c
,
peffect
)
&&
peffect
->
get_value
(
target
);
};
};
for
(
const
auto
&
pcard
:
effect_target_owner
)
{
for
(
auto
&
pcard
:
effect_target_owner
)
{
peffect
=
find_effect_with_target
(
pcard
->
target_effect
,
code
,
target_filter
,
target
);
peffect
=
find_effect_with_target
(
pcard
->
target_effect
,
code
,
target_filter
,
target
);
if
(
peffect
)
if
(
peffect
)
return
peffect
;
return
peffect
;
...
@@ -3090,7 +3090,7 @@ effect* card::is_affected_by_effect(int32_t code, card* target) {
...
@@ -3090,7 +3090,7 @@ effect* card::is_affected_by_effect(int32_t code, card* target) {
auto
xmaterial_filter
=
[](
card
*
c
,
effect
*
peffect
,
card
*
target
)
->
bool
{
auto
xmaterial_filter
=
[](
card
*
c
,
effect
*
peffect
,
card
*
target
)
->
bool
{
return
default_xmaterial_filter
(
c
,
peffect
)
&&
peffect
->
get_value
(
target
);
return
default_xmaterial_filter
(
c
,
peffect
)
&&
peffect
->
get_value
(
target
);
};
};
for
(
const
auto
&
pcard
:
xyz_materials
)
{
for
(
auto
&
pcard
:
xyz_materials
)
{
peffect
=
find_effect_with_target
(
pcard
->
xmaterial_effect
,
code
,
xmaterial_filter
,
target
);
peffect
=
find_effect_with_target
(
pcard
->
xmaterial_effect
,
code
,
xmaterial_filter
,
target
);
if
(
peffect
)
if
(
peffect
)
return
peffect
;
return
peffect
;
...
@@ -4293,7 +4293,7 @@ int32_t card::is_can_be_link_material(card* scard) {
...
@@ -4293,7 +4293,7 @@ int32_t card::is_can_be_link_material(card* scard) {
* @param filter Lua function filter(e)
* @param filter Lua function filter(e)
*/
*/
int32_t
card
::
is_original_effect_property
(
int32_t
filter
)
{
int32_t
card
::
is_original_effect_property
(
int32_t
filter
)
{
for
(
const
auto
&
peffect
:
initial_effect
)
{
for
(
auto
&
peffect
:
initial_effect
)
{
pduel
->
lua
->
add_param
(
peffect
,
PARAM_TYPE_EFFECT
);
pduel
->
lua
->
add_param
(
peffect
,
PARAM_TYPE_EFFECT
);
if
(
pduel
->
lua
->
check_condition
(
filter
,
1
))
if
(
pduel
->
lua
->
check_condition
(
filter
,
1
))
return
TRUE
;
return
TRUE
;
...
@@ -4304,7 +4304,7 @@ int32_t card::is_original_effect_property(int32_t filter) {
...
@@ -4304,7 +4304,7 @@ int32_t card::is_original_effect_property(int32_t filter) {
* @param filter Lua function filter(e)
* @param filter Lua function filter(e)
*/
*/
int32_t
card
::
is_effect_property
(
int32_t
filter
)
{
int32_t
card
::
is_effect_property
(
int32_t
filter
)
{
for
(
const
auto
&
peffect
:
initial_effect
)
{
for
(
auto
&
peffect
:
initial_effect
)
{
if
(
current
.
is_location
(
LOCATION_MZONE
)
&&
!
peffect
->
is_monster_effect
())
if
(
current
.
is_location
(
LOCATION_MZONE
)
&&
!
peffect
->
is_monster_effect
())
continue
;
continue
;
if
(
current
.
is_location
(
LOCATION_SZONE
)
&&
!
peffect
->
in_range
(
this
))
if
(
current
.
is_location
(
LOCATION_SZONE
)
&&
!
peffect
->
in_range
(
this
))
...
@@ -4313,7 +4313,7 @@ int32_t card::is_effect_property(int32_t filter) {
...
@@ -4313,7 +4313,7 @@ int32_t card::is_effect_property(int32_t filter) {
if
(
pduel
->
lua
->
check_condition
(
filter
,
1
))
if
(
pduel
->
lua
->
check_condition
(
filter
,
1
))
return
TRUE
;
return
TRUE
;
}
}
for
(
const
auto
&
peffect
:
owning_effect
)
{
for
(
auto
&
peffect
:
owning_effect
)
{
if
(
current
.
is_location
(
LOCATION_MZONE
)
&&
!
peffect
->
is_monster_effect
())
if
(
current
.
is_location
(
LOCATION_MZONE
)
&&
!
peffect
->
is_monster_effect
())
continue
;
continue
;
if
(
current
.
is_location
(
LOCATION_SZONE
)
&&
!
peffect
->
in_range
(
this
))
if
(
current
.
is_location
(
LOCATION_SZONE
)
&&
!
peffect
->
in_range
(
this
))
...
...
duel.cpp
View file @
148f7580
...
@@ -18,7 +18,7 @@
...
@@ -18,7 +18,7 @@
duel
::
duel
()
{
duel
::
duel
()
{
lua
=
new
interpreter
(
this
);
lua
=
new
interpreter
(
this
);
game_field
=
new
field
(
this
);
game_field
=
new
field
(
this
);
game_field
->
temp_card
=
new_card
(
0
);
game_field
->
temp_card
=
new_card
(
TEMP_CARD_ID
);
game_field
->
rose_card
=
0
;
game_field
->
rose_card
=
0
;
game_field
->
rose_level
=
0
;
game_field
->
rose_level
=
0
;
message_buffer
.
reserve
(
SIZE_MESSAGE_BUFFER
);
message_buffer
.
reserve
(
SIZE_MESSAGE_BUFFER
);
...
@@ -47,8 +47,11 @@ void duel::clear() {
...
@@ -47,8 +47,11 @@ void duel::clear() {
cards
.
clear
();
cards
.
clear
();
groups
.
clear
();
groups
.
clear
();
effects
.
clear
();
effects
.
clear
();
assumes
.
clear
();
sgroups
.
clear
();
uncopy
.
clear
();
game_field
=
new
field
(
this
);
game_field
=
new
field
(
this
);
game_field
->
temp_card
=
new_card
(
0
);
game_field
->
temp_card
=
new_card
(
TEMP_CARD_ID
);
game_field
->
rose_card
=
0
;
game_field
->
rose_card
=
0
;
game_field
->
rose_level
=
0
;
game_field
->
rose_level
=
0
;
}
}
...
...
field.cpp
View file @
148f7580
...
@@ -817,11 +817,11 @@ int32_t field::get_szone_limit(uint8_t playerid, uint8_t uplayer, uint32_t reaso
...
@@ -817,11 +817,11 @@ int32_t field::get_szone_limit(uint8_t playerid, uint8_t uplayer, uint32_t reaso
}
}
uint32_t
field
::
get_linked_zone
(
int32_t
playerid
)
{
uint32_t
field
::
get_linked_zone
(
int32_t
playerid
)
{
uint32_t
zones
=
0
;
uint32_t
zones
=
0
;
for
(
const
auto
&
pcard
:
player
[
playerid
].
list_mzone
)
{
for
(
auto
&
pcard
:
player
[
playerid
].
list_mzone
)
{
if
(
pcard
)
if
(
pcard
)
zones
|=
pcard
->
get_linked_zone
()
&
0xffff
;
zones
|=
pcard
->
get_linked_zone
()
&
0xffff
;
}
}
for
(
const
auto
&
pcard
:
player
[
1
-
playerid
].
list_mzone
)
{
for
(
auto
&
pcard
:
player
[
1
-
playerid
].
list_mzone
)
{
if
(
pcard
)
if
(
pcard
)
zones
|=
pcard
->
get_linked_zone
()
>>
16
;
zones
|=
pcard
->
get_linked_zone
()
>>
16
;
}
}
...
@@ -1958,7 +1958,7 @@ void field::ritual_release(const card_set& material) {
...
@@ -1958,7 +1958,7 @@ void field::ritual_release(const card_set& material) {
card_set
rel
;
card_set
rel
;
card_set
rem
;
card_set
rem
;
card_set
tgy
;
card_set
tgy
;
for
(
const
auto
&
pcard
:
material
)
{
for
(
auto
&
pcard
:
material
)
{
if
(
pcard
->
current
.
location
==
LOCATION_GRAVE
)
if
(
pcard
->
current
.
location
==
LOCATION_GRAVE
)
rem
.
insert
(
pcard
);
rem
.
insert
(
pcard
);
else
if
(
pcard
->
current
.
location
==
LOCATION_OVERLAY
||
pcard
->
current
.
location
==
LOCATION_EXTRA
)
else
if
(
pcard
->
current
.
location
==
LOCATION_OVERLAY
||
pcard
->
current
.
location
==
LOCATION_EXTRA
)
...
...
field.h
View file @
148f7580
...
@@ -370,8 +370,8 @@ public:
...
@@ -370,8 +370,8 @@ public:
processor
core
;
processor
core
;
return_value
returns
{};
return_value
returns
{};
tevent
nil_event
;
tevent
nil_event
;
card
*
rose_card
;
card
*
rose_card
{}
;
uint32_t
rose_level
;
uint32_t
rose_level
{
0
}
;
static
int32_t
field_used_count
[
32
];
static
int32_t
field_used_count
[
32
];
explicit
field
(
duel
*
pd
);
explicit
field
(
duel
*
pd
);
...
...
libdebug.cpp
View file @
148f7580
...
@@ -154,10 +154,6 @@ int32_t scriptlib::debug_reload_field_begin(lua_State *L) {
...
@@ -154,10 +154,6 @@ int32_t 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_t
scriptlib
::
debug_reload_field_end
(
lua_State
*
L
)
{
int32_t
scriptlib
::
debug_reload_field_end
(
lua_State
*
L
)
{
...
...
ocgapi.cpp
View file @
148f7580
...
@@ -75,13 +75,14 @@ extern "C" DECL_DLLEXPORT void start_duel(intptr_t pduel, uint32_t options) {
...
@@ -75,13 +75,14 @@ extern "C" DECL_DLLEXPORT void start_duel(intptr_t pduel, uint32_t options) {
pd
->
lua
->
preloaded
=
TRUE
;
pd
->
lua
->
preloaded
=
TRUE
;
pd
->
lua
->
call_code_function
(
0
,
(
char
*
)
"PreloadUds"
,
0
,
0
);
pd
->
lua
->
call_code_function
(
0
,
(
char
*
)
"PreloadUds"
,
0
,
0
);
}
}
pd
->
game_field
->
core
.
duel_options
|=
options
&
0xffff
;
uint16_t
duel_rule
=
options
>>
16
;
int32_t
duel_rule
=
options
>>
16
;
uint16_t
duel_options
=
options
&
0xffff
;
pd
->
game_field
->
core
.
duel_options
|=
duel_options
;
if
(
duel_rule
>=
1
&&
duel_rule
<=
CURRENT_RULE
)
if
(
duel_rule
>=
1
&&
duel_rule
<=
CURRENT_RULE
)
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
<
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
)
{
if
(
pd
->
game_field
->
core
.
duel_rule
==
MASTER_RULE3
)
{
pd
->
game_field
->
player
[
0
].
szone_size
=
8
;
pd
->
game_field
->
player
[
0
].
szone_size
=
8
;
...
...
operations.cpp
View file @
148f7580
...
@@ -397,13 +397,13 @@ int32_t field::draw(uint16_t step, effect* reason_effect, uint32_t reason, uint8
...
@@ -397,13 +397,13 @@ int32_t field::draw(uint16_t step, effect* reason_effect, uint32_t reason, uint8
pduel
->
write_buffer8
(
MSG_DRAW
);
pduel
->
write_buffer8
(
MSG_DRAW
);
pduel
->
write_buffer8
(
playerid
);
pduel
->
write_buffer8
(
playerid
);
pduel
->
write_buffer8
((
uint8_t
)
cv
.
size
());
pduel
->
write_buffer8
((
uint8_t
)
cv
.
size
());
for
(
const
auto
&
pcard
:
cv
)
for
(
auto
&
pcard
:
cv
)
pduel
->
write_buffer32
(
pcard
->
data
.
code
|
(
pcard
->
is_position
(
POS_FACEUP
)
?
0x80000000
:
0
));
pduel
->
write_buffer32
(
pcard
->
data
.
code
|
(
pcard
->
is_position
(
POS_FACEUP
)
?
0x80000000
:
0
));
if
(
core
.
deck_reversed
&&
(
public_count
<
cv
.
size
()))
{
if
(
core
.
deck_reversed
&&
(
public_count
<
cv
.
size
()))
{
pduel
->
write_buffer8
(
MSG_CONFIRM_CARDS
);
pduel
->
write_buffer8
(
MSG_CONFIRM_CARDS
);
pduel
->
write_buffer8
(
1
-
playerid
);
pduel
->
write_buffer8
(
1
-
playerid
);
pduel
->
write_buffer8
((
uint8_t
)
drawed_set
->
size
());
pduel
->
write_buffer8
((
uint8_t
)
drawed_set
->
size
());
for
(
const
auto
&
pcard
:
*
drawed_set
)
{
for
(
auto
&
pcard
:
*
drawed_set
)
{
pduel
->
write_buffer32
(
pcard
->
data
.
code
);
pduel
->
write_buffer32
(
pcard
->
data
.
code
);
pduel
->
write_buffer8
(
pcard
->
current
.
controler
);
pduel
->
write_buffer8
(
pcard
->
current
.
controler
);
pduel
->
write_buffer8
(
pcard
->
current
.
location
);
pduel
->
write_buffer8
(
pcard
->
current
.
location
);
...
...
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