Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Y
YGOMobile-Cn-Ko-En
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
fallenstardust
YGOMobile-Cn-Ko-En
Commits
b585cd14
Commit
b585cd14
authored
Feb 05, 2025
by
fallenstardust
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
sync ocgcore
parent
ff766e94
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
44 additions
and
19 deletions
+44
-19
Classes/ocgcore/card.cpp
Classes/ocgcore/card.cpp
+28
-7
Classes/ocgcore/card.h
Classes/ocgcore/card.h
+3
-3
Classes/ocgcore/effect.h
Classes/ocgcore/effect.h
+6
-2
Classes/ocgcore/field.h
Classes/ocgcore/field.h
+1
-1
Classes/ocgcore/group.h
Classes/ocgcore/group.h
+6
-6
No files found.
Classes/ocgcore/card.cpp
View file @
b585cd14
...
@@ -1044,22 +1044,43 @@ uint32_t card::get_ritual_level(card* pcard) {
...
@@ -1044,22 +1044,43 @@ uint32_t card::get_ritual_level(card* pcard) {
uint32_t
card
::
check_xyz_level
(
card
*
pcard
,
uint32_t
lv
)
{
uint32_t
card
::
check_xyz_level
(
card
*
pcard
,
uint32_t
lv
)
{
if
(
status
&
STATUS_NO_LEVEL
)
if
(
status
&
STATUS_NO_LEVEL
)
return
0
;
return
0
;
int32_t
min_count
=
0
;
effect_set
mset
;
filter_effect
(
EFFECT_XYZ_MIN_COUNT
,
&
mset
);
for
(
int32_t
i
=
0
;
i
<
mset
.
size
();
++
i
)
{
pduel
->
lua
->
add_param
(
this
,
PARAM_TYPE_CARD
);
pduel
->
lua
->
add_param
(
pcard
,
PARAM_TYPE_CARD
);
int32_t
count
=
mset
[
i
]
->
get_value
(
2
);
if
(
count
>
min_count
)
min_count
=
count
;
}
if
(
min_count
>
0xf
)
min_count
=
0xf
;
effect_set
eset
;
effect_set
eset
;
filter_effect
(
EFFECT_XYZ_LEVEL
,
&
eset
);
filter_effect
(
EFFECT_XYZ_LEVEL
,
&
eset
);
if
(
!
eset
.
size
())
{
if
(
!
eset
.
size
())
{
uint32_t
le
v
=
get_level
();
uint32_t
card_l
v
=
get_level
();
if
(
le
v
==
lv
)
if
(
card_l
v
==
lv
)
return
lev
;
return
(
card_lv
&
MAX_XYZ_LEVEL
)
|
((
uint32_t
)
min_count
<<
12
)
;
return
0
;
return
0
;
}
}
for
(
int32_t
i
=
0
;
i
<
eset
.
size
();
++
i
)
{
for
(
int32_t
i
=
0
;
i
<
eset
.
size
();
++
i
)
{
pduel
->
lua
->
add_param
(
this
,
PARAM_TYPE_CARD
);
pduel
->
lua
->
add_param
(
this
,
PARAM_TYPE_CARD
);
pduel
->
lua
->
add_param
(
pcard
,
PARAM_TYPE_CARD
);
pduel
->
lua
->
add_param
(
pcard
,
PARAM_TYPE_CARD
);
uint32_t
lev
=
eset
[
i
]
->
get_value
(
2
);
uint32_t
lev
=
eset
[
i
]
->
get_value
(
2
);
if
(((
lev
&
0xfff
)
==
lv
))
uint16_t
lv1
=
lev
&
MAX_XYZ_LEVEL
;
return
lev
&
0xffff
;
uint16_t
count1
=
(
lev
&
0xf000
)
>>
12
;
if
(((
lev
>>
16
)
&
0xfff
)
==
lv
)
if
(
count1
<
min_count
)
return
(
lev
>>
16
)
&
0xffff
;
count1
=
min_count
;
if
(
lv1
==
lv
)
return
lv1
|
((
uint32_t
)
count1
<<
12
);
lev
>>=
16
;
uint16_t
lv2
=
lev
&
MAX_XYZ_LEVEL
;
uint16_t
count2
=
(
lev
&
0xf000
)
>>
12
;
if
(
count2
<
min_count
)
count2
=
min_count
;
if
(
lv2
==
lv
)
return
lv2
|
((
uint32_t
)
count2
<<
12
);
}
}
return
0
;
return
0
;
}
}
...
...
Classes/ocgcore/card.h
View file @
b585cd14
...
@@ -54,10 +54,10 @@ struct card_state {
...
@@ -54,10 +54,10 @@ struct card_state {
uint8_t
sequence
{
0
};
uint8_t
sequence
{
0
};
uint8_t
position
{
0
};
uint8_t
position
{
0
};
uint32_t
reason
{
0
};
uint32_t
reason
{
0
};
bool
pzone
{
false
};
card
*
reason_card
{
nullptr
};
card
*
reason_card
{
nullptr
};
uint8_t
reason_player
{
PLAYER_NONE
};
effect
*
reason_effect
{
nullptr
};
effect
*
reason_effect
{
nullptr
};
uint8_t
reason_player
{
PLAYER_NONE
};
bool
pzone
{
false
};
bool
is_location
(
uint32_t
loc
)
const
;
bool
is_location
(
uint32_t
loc
)
const
;
bool
is_main_mzone
()
const
{
bool
is_main_mzone
()
const
{
...
@@ -168,7 +168,7 @@ public:
...
@@ -168,7 +168,7 @@ public:
uint8_t
attacked_count
{};
uint8_t
attacked_count
{};
uint8_t
attack_all_target
{};
uint8_t
attack_all_target
{};
uint8_t
attack_controler
{};
uint8_t
attack_controler
{};
uint
16
_t
cardid
{};
uint
64
_t
cardid
{};
uint32_t
fieldid
{};
uint32_t
fieldid
{};
uint32_t
fieldid_r
{};
uint32_t
fieldid_r
{};
uint16_t
turnid
{};
uint16_t
turnid
{};
...
...
Classes/ocgcore/effect.h
View file @
b585cd14
...
@@ -529,6 +529,7 @@ const std::map<uint64_t, uint64_t> category_checklist{
...
@@ -529,6 +529,7 @@ const std::map<uint64_t, uint64_t> category_checklist{
#define EFFECT_TUNER 369
#define EFFECT_TUNER 369
#define EFFECT_KAISER_COLOSSEUM 370
#define EFFECT_KAISER_COLOSSEUM 370
#define EFFECT_REPLACE_DAMAGE 371
#define EFFECT_REPLACE_DAMAGE 371
#define EFFECT_XYZ_MIN_COUNT 372
//#define EVENT_STARTUP 1000
//#define EVENT_STARTUP 1000
#define EVENT_FLIP 1001
#define EVENT_FLIP 1001
...
@@ -606,8 +607,11 @@ const std::map<uint64_t, uint64_t> category_checklist{
...
@@ -606,8 +607,11 @@ const std::map<uint64_t, uint64_t> category_checklist{
#define EVENT_REMOVE_COUNTER 0x20000
#define EVENT_REMOVE_COUNTER 0x20000
#define EVENT_CUSTOM 0x10000000
#define EVENT_CUSTOM 0x10000000
constexpr
int32_t
DOUBLE_DAMAGE
=
0x80000000
;
constexpr
int32_t
DOUBLE_DAMAGE
=
INT32_MIN
;
constexpr
int32_t
HALF_DAMAGE
=
0x80000001
;
constexpr
int32_t
HALF_DAMAGE
=
INT32_MIN
+
1
;
constexpr
uint32_t
MAX_PARAMETER
=
0xffffU
;
constexpr
uint32_t
MAX_XYZ_LEVEL
=
0x0fffU
;
// flag effect
// flag effect
#define EFFECT_FLAG_EFFECT 0x20000000U
#define EFFECT_FLAG_EFFECT 0x20000000U
...
...
Classes/ocgcore/field.h
View file @
b585cd14
...
@@ -123,11 +123,11 @@ struct field_effect {
...
@@ -123,11 +123,11 @@ struct field_effect {
grant_effect_container
grant_effect
;
grant_effect_container
grant_effect
;
};
};
struct
field_info
{
struct
field_info
{
uint64_t
card_id
{
1
};
int32_t
field_id
{
1
};
int32_t
field_id
{
1
};
uint16_t
copy_id
{
1
};
uint16_t
copy_id
{
1
};
uint16_t
turn_id
{};
uint16_t
turn_id
{};
uint16_t
turn_id_by_player
[
2
]{};
uint16_t
turn_id_by_player
[
2
]{};
uint16_t
card_id
{
1
};
uint16_t
phase
{};
uint16_t
phase
{};
uint8_t
turn_player
{};
uint8_t
turn_player
{};
uint8_t
priorities
[
2
]{};
uint8_t
priorities
[
2
]{};
...
...
Classes/ocgcore/group.h
View file @
b585cd14
...
@@ -18,17 +18,17 @@ class duel;
...
@@ -18,17 +18,17 @@ class duel;
using
card_set
=
std
::
set
<
card
*
,
card_sort
>
;
using
card_set
=
std
::
set
<
card
*
,
card_sort
>
;
constexpr
in
t
GTYPE_DEFAULT
=
0
;
constexpr
uint32_
t
GTYPE_DEFAULT
=
0
;
constexpr
in
t
GTYPE_READ_ONLY
=
1
;
constexpr
uint32_
t
GTYPE_READ_ONLY
=
1
;
constexpr
in
t
GTYPE_KEEP_ALIVE
=
2
;
constexpr
uint32_
t
GTYPE_KEEP_ALIVE
=
2
;
class
group
{
class
alignas
(
8
)
group
{
public:
public:
int32_t
ref_handle
{
0
};
uint32_t
is_readonly
{
GTYPE_DEFAULT
};
duel
*
pduel
;
duel
*
pduel
;
card_set
container
;
card_set
container
;
card_set
::
iterator
it
;
card_set
::
iterator
it
;
int32_t
ref_handle
{
0
};
uint32_t
is_readonly
{
GTYPE_DEFAULT
};
bool
is_iterator_dirty
{
true
};
bool
is_iterator_dirty
{
true
};
bool
has_card
(
card
*
c
)
{
bool
has_card
(
card
*
c
)
{
...
...
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