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
c11af256
Commit
c11af256
authored
Feb 04, 2025
by
wind2009
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'develop' into develop-8888
parents
e4b501d3
488371e3
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
34 additions
and
9 deletions
+34
-9
card.cpp
card.cpp
+28
-7
effect.h
effect.h
+6
-2
No files found.
card.cpp
View file @
c11af256
...
...
@@ -1113,22 +1113,43 @@ uint32_t card::check_xyz_level(card* pcard, uint32_t lv) {
uint32_t
rlv
=
pduel
->
game_field
->
rose_level
;
if
(
rcard
==
this
&&
rlv
==
lv
)
return
rlv
;
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
;
filter_effect
(
EFFECT_XYZ_LEVEL
,
&
eset
);
if
(
!
eset
.
size
())
{
uint32_t
le
v
=
get_level
();
if
(
le
v
==
lv
)
return
lev
;
uint32_t
card_l
v
=
get_level
();
if
(
card_l
v
==
lv
)
return
(
card_lv
&
MAX_XYZ_LEVEL
)
|
((
uint32_t
)
min_count
<<
12
)
;
return
0
;
}
for
(
int32_t
i
=
0
;
i
<
eset
.
size
();
++
i
)
{
pduel
->
lua
->
add_param
(
this
,
PARAM_TYPE_CARD
);
pduel
->
lua
->
add_param
(
pcard
,
PARAM_TYPE_CARD
);
uint32_t
lev
=
eset
[
i
]
->
get_value
(
2
);
if
(((
lev
&
0xfff
)
==
lv
))
return
lev
&
0xffff
;
if
(((
lev
>>
16
)
&
0xfff
)
==
lv
)
return
(
lev
>>
16
)
&
0xffff
;
uint16_t
lv1
=
lev
&
MAX_XYZ_LEVEL
;
uint16_t
count1
=
(
lev
&
0xf000
)
>>
12
;
if
(
count1
<
min_count
)
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
;
}
...
...
effect.h
View file @
c11af256
...
...
@@ -549,6 +549,7 @@ const std::map<uint64_t, uint64_t> category_checklist{
#define EFFECT_TUNER 369
#define EFFECT_KAISER_COLOSSEUM 370
#define EFFECT_REPLACE_DAMAGE 371
#define EFFECT_XYZ_MIN_COUNT 372
//#define EVENT_STARTUP 1000
#define EVENT_FLIP 1001
...
...
@@ -626,8 +627,11 @@ const std::map<uint64_t, uint64_t> category_checklist{
#define EVENT_REMOVE_COUNTER 0x20000
#define EVENT_CUSTOM 0x10000000
constexpr
int32_t
DOUBLE_DAMAGE
=
0x80000000
;
constexpr
int32_t
HALF_DAMAGE
=
0x80000001
;
constexpr
int32_t
DOUBLE_DAMAGE
=
INT32_MIN
;
constexpr
int32_t
HALF_DAMAGE
=
INT32_MIN
+
1
;
constexpr
uint32_t
MAX_PARAMETER
=
0xffffU
;
constexpr
uint32_t
MAX_XYZ_LEVEL
=
0x0fffU
;
// flag effect
#define EFFECT_FLAG_EFFECT 0x20000000U
...
...
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