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
e362886c
Commit
e362886c
authored
Feb 14, 2025
by
nanahira
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'patch-allow-synchro' into develop
parents
8245a7b7
dc2a6c41
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
33 additions
and
51 deletions
+33
-51
card.cpp
card.cpp
+21
-40
card.h
card.h
+2
-0
effect.h
effect.h
+2
-3
field.cpp
field.cpp
+4
-4
interpreter.cpp
interpreter.cpp
+4
-4
No files found.
card.cpp
View file @
e362886c
...
@@ -1066,47 +1066,29 @@ uint32_t card::get_link() {
...
@@ -1066,47 +1066,29 @@ uint32_t card::get_link() {
return
0
;
return
0
;
return
data
.
level
;
return
data
.
level
;
}
}
uint32_t
card
::
get_synchro_level
(
card
*
pcard
)
{
if
((
data
.
type
&
(
TYPE_XYZ
|
TYPE_LINK
))
||
(
status
&
STATUS_NO_LEVEL
))
uint32_t
get_mat_level_from_effect
(
card
*
pcard
,
uint32_t
effect_code
)
{
{
if
(
!
effect_code
)
uint32_t
lev
;
return
0
;
effect_set
eset
;
filter_effect
(
EFFECT_ALLOW_SYNCHRO_KOISHI
,
&
eset
);
if
(
eset
.
size
())
lev
=
eset
[
0
]
->
get_value
(
pcard
);
else
lev
=
0
;
return
lev
;
}
//return 0;
uint32_t
lev
;
effect_set
eset
;
effect_set
eset
;
filter_effect
(
EFFECT_SYNCHRO_LEVEL
,
&
eset
);
pduel
->
game_field
->
filter_effect
(
effect_code
,
&
eset
);
if
(
eset
.
size
())
for
(
int32_t
i
=
0
;
i
<
eset
.
size
();
++
i
)
{
lev
=
eset
[
0
]
->
get_value
(
pcard
);
uint32_t
lev
=
eset
[
i
]
->
get_value
(
pcard
);
else
if
(
lev
)
lev
=
get_level
();
return
lev
;
return
lev
;
}
uint32_t
card
::
get_ritual_level
(
card
*
pcard
)
{
effect_set
eset_g
;
filter_effect
(
EFFECT_MINIATURE_GARDEN_GIRL
,
&
eset_g
);
for
(
int32_t
i
=
0
;
i
<
eset_g
.
size
();
++
i
)
{
pduel
->
lua
->
add_param
(
eset_g
[
i
],
PARAM_TYPE_EFFECT
);
pduel
->
lua
->
add_param
(
pcard
,
PARAM_TYPE_CARD
);
if
(
pduel
->
lua
->
check_condition
(
eset_g
[
i
]
->
target
,
2
))
return
pcard
->
get_level
();
}
}
return
0
;
}
uint32_t
card
::
get_mat_level
(
card
*
pcard
,
uint32_t
level_effect_code
,
uint32_t
allow_effect_code
)
{
if
((
data
.
type
&
(
TYPE_XYZ
|
TYPE_LINK
))
||
(
status
&
STATUS_NO_LEVEL
))
if
((
data
.
type
&
(
TYPE_XYZ
|
TYPE_LINK
))
||
(
status
&
STATUS_NO_LEVEL
))
return
0
;
return
get_mat_level_from_effect
(
pcard
,
allow_effect_code
);
uint32_t
lev
;
return
get_mat_level_from_effect
(
pcard
,
level_effect_code
)
||
get_level
();
effect_set
eset
;
}
filter_effect
(
EFFECT_RITUAL_LEVEL
,
&
eset
);
uint32_t
card
::
get_synchro_level
(
card
*
pcard
)
{
if
(
eset
.
size
())
return
get_mat_level
(
pcard
,
EFFECT_SYNCHRO_LEVEL
,
EFFECT_ALLOW_FOR_SYNCHRO
);
lev
=
eset
[
0
]
->
get_value
(
pcard
);
}
else
uint32_t
card
::
get_ritual_level
(
card
*
pcard
)
{
lev
=
get_level
();
return
get_mat_level
(
pcard
,
EFFECT_RITUAL_LEVEL
,
EFFECT_ALLOW_FOR_RITUAL
);
return
lev
;
}
}
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
)
...
@@ -4216,8 +4198,7 @@ int32_t card::is_can_be_fusion_material(card* fcard, uint32_t summon_type) {
...
@@ -4216,8 +4198,7 @@ int32_t card::is_can_be_fusion_material(card* fcard, uint32_t summon_type) {
return
TRUE
;
return
TRUE
;
}
}
int32_t
card
::
is_can_be_synchro_material
(
card
*
scard
,
card
*
tuner
)
{
int32_t
card
::
is_can_be_synchro_material
(
card
*
scard
,
card
*
tuner
)
{
//support urara
if
((
data
.
type
&
(
TYPE_XYZ
|
TYPE_LINK
))
&&
!
get_synchro_level
(
scard
))
if
(
data
.
type
&
(
TYPE_XYZ
|
TYPE_LINK
)
&&
!
is_affected_by_effect
(
EFFECT_ALLOW_SYNCHRO_KOISHI
))
return
FALSE
;
return
FALSE
;
if
(
!
(
get_synchro_type
()
&
TYPE_MONSTER
))
if
(
!
(
get_synchro_type
()
&
TYPE_MONSTER
))
return
FALSE
;
return
FALSE
;
...
...
card.h
View file @
e362886c
...
@@ -253,6 +253,8 @@ public:
...
@@ -253,6 +253,8 @@ public:
uint32_t
get_level
();
uint32_t
get_level
();
uint32_t
get_rank
();
uint32_t
get_rank
();
uint32_t
get_link
();
uint32_t
get_link
();
uint32_t
get_mat_level_from_effect
(
card
*
pcard
,
uint32_t
effect_code
);
uint32_t
get_mat_level
(
card
*
pcard
,
uint32_t
level_effect_code
,
uint32_t
allow_effect_code
=
0
);
uint32_t
get_synchro_level
(
card
*
pcard
);
uint32_t
get_synchro_level
(
card
*
pcard
);
uint32_t
get_ritual_level
(
card
*
pcard
);
uint32_t
get_ritual_level
(
card
*
pcard
);
uint32_t
check_xyz_level
(
card
*
pcard
,
uint32_t
lv
);
uint32_t
check_xyz_level
(
card
*
pcard
,
uint32_t
lv
);
...
...
effect.h
View file @
e362886c
...
@@ -133,14 +133,11 @@ public:
...
@@ -133,14 +133,11 @@ public:
#define EFFECT_CANNOT_LOSE_KOISHI 37564153
#define EFFECT_CANNOT_LOSE_KOISHI 37564153
#define EFFECT_EXTRA_TOMAIN_KOISHI 37564154
#define EFFECT_EXTRA_TOMAIN_KOISHI 37564154
#define EFFECT_OVERLAY_REMOVE_COST_CHANGE_KOISHI 37564155
#define EFFECT_OVERLAY_REMOVE_COST_CHANGE_KOISHI 37564155
#define EFFECT_ALLOW_SYNCHRO_KOISHI 37564156
#define EFFECT_MINIATURE_GARDEN_GIRL 37564157
#define EFFECT_ADD_SUMMON_TYPE_KOISHI 37564158
#define EFFECT_ADD_SUMMON_TYPE_KOISHI 37564158
#define EFFECT_REMOVE_SUMMON_TYPE_KOISHI 37564159
#define EFFECT_REMOVE_SUMMON_TYPE_KOISHI 37564159
#define EFFECT_CHANGE_SUMMON_TYPE_KOISHI 37564160
#define EFFECT_CHANGE_SUMMON_TYPE_KOISHI 37564160
#define EFFECT_CHANGE_SUMMON_LOCATION_KOISHI 37564161
#define EFFECT_CHANGE_SUMMON_LOCATION_KOISHI 37564161
#define EFFECT_LINK_SPELL_KOISHI 37564162
#define EFFECT_LINK_SPELL_KOISHI 37564162
#define EFFECT_SEA_PULSE 37564163
#define EFFECT_MAP_OF_HEAVEN 77702007
#define EFFECT_MAP_OF_HEAVEN 77702007
//status
//status
...
@@ -550,6 +547,8 @@ const std::map<uint64_t, uint64_t> category_checklist{
...
@@ -550,6 +547,8 @@ const std::map<uint64_t, uint64_t> category_checklist{
#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 EFFECT_XYZ_MIN_COUNT 372
#define EFFECT_ALLOW_FOR_SYNCHRO 373
#define EFFECT_ALLOW_FOR_RITUAL 374
//#define EVENT_STARTUP 1000
//#define EVENT_STARTUP 1000
#define EVENT_FLIP 1001
#define EVENT_FLIP 1001
...
...
field.cpp
View file @
e362886c
...
@@ -1868,11 +1868,11 @@ void field::get_ritual_material(uint8_t playerid, effect* peffect, card_set* mat
...
@@ -1868,11 +1868,11 @@ void field::get_ritual_material(uint8_t playerid, effect* peffect, card_set* mat
for
(
auto
&
pcard
:
player
[
playerid
].
list_mzone
)
{
for
(
auto
&
pcard
:
player
[
playerid
].
list_mzone
)
{
if
(
pcard
&&
pcard
->
is_affect_by_effect
(
peffect
)
if
(
pcard
&&
pcard
->
is_affect_by_effect
(
peffect
)
&&
pcard
->
is_releasable_by_nonsummon
(
playerid
,
REASON_EFFECT
)
&&
pcard
->
is_releasable_by_effect
(
playerid
,
peffect
)
&&
pcard
->
is_releasable_by_nonsummon
(
playerid
,
REASON_EFFECT
)
&&
pcard
->
is_releasable_by_effect
(
playerid
,
peffect
)
&&
(
no_level
||
pcard
->
get_level
()
>
0
||
pcard
->
is_affected_by_effect
(
EFFECT_
MINIATURE_GARDEN_GIR
L
)))
&&
(
no_level
||
pcard
->
get_level
()
>
0
||
pcard
->
is_affected_by_effect
(
EFFECT_
ALLOW_FOR_RITUA
L
)))
material
->
insert
(
pcard
);
material
->
insert
(
pcard
);
if
(
pcard
&&
pcard
->
is_affected_by_effect
(
EFFECT_OVERLAY_RITUAL_MATERIAL
))
if
(
pcard
&&
pcard
->
is_affected_by_effect
(
EFFECT_OVERLAY_RITUAL_MATERIAL
))
for
(
auto
&
mcard
:
pcard
->
xyz_materials
)
for
(
auto
&
mcard
:
pcard
->
xyz_materials
)
if
(
no_level
||
mcard
->
get_level
()
>
0
)
if
(
no_level
||
mcard
->
get_level
()
>
0
||
pcard
->
is_affected_by_effect
(
EFFECT_ALLOW_FOR_RITUAL
)
)
material
->
insert
(
mcard
);
material
->
insert
(
mcard
);
}
}
for
(
auto
&
pcard
:
player
[
1
-
playerid
].
list_mzone
)
{
for
(
auto
&
pcard
:
player
[
1
-
playerid
].
list_mzone
)
{
...
@@ -1888,11 +1888,11 @@ void field::get_ritual_material(uint8_t playerid, effect* peffect, card_set* mat
...
@@ -1888,11 +1888,11 @@ void field::get_ritual_material(uint8_t playerid, effect* peffect, card_set* mat
for
(
auto
&
pcard
:
player
[
playerid
].
list_grave
)
for
(
auto
&
pcard
:
player
[
playerid
].
list_grave
)
if
((
pcard
->
data
.
type
&
TYPE_MONSTER
)
if
((
pcard
->
data
.
type
&
TYPE_MONSTER
)
&&
pcard
->
is_affected_by_effect
(
EFFECT_EXTRA_RITUAL_MATERIAL
)
&&
pcard
->
is_removeable
(
playerid
,
POS_FACEUP
,
REASON_EFFECT
)
&&
pcard
->
is_affected_by_effect
(
EFFECT_EXTRA_RITUAL_MATERIAL
)
&&
pcard
->
is_removeable
(
playerid
,
POS_FACEUP
,
REASON_EFFECT
)
&&
(
no_level
||
pcard
->
get_level
()
>
0
))
&&
(
no_level
||
pcard
->
get_level
()
>
0
||
pcard
->
is_affected_by_effect
(
EFFECT_ALLOW_FOR_RITUAL
)
))
material
->
insert
(
pcard
);
material
->
insert
(
pcard
);
for
(
auto
&
pcard
:
player
[
playerid
].
list_extra
)
for
(
auto
&
pcard
:
player
[
playerid
].
list_extra
)
if
(((
pcard
->
is_affected_by_effect
(
EFFECT_EXTRA_RITUAL_MATERIAL
)
||
pcard
->
data
.
type
&
TYPE_MONSTER
)
&&
pcard
->
is_affected_by_effect
(
EFFECT_MAP_OF_HEAVEN
)
&&
pcard
->
is_capable_send_to_grave
(
playerid
))
if
(((
pcard
->
is_affected_by_effect
(
EFFECT_EXTRA_RITUAL_MATERIAL
)
||
pcard
->
data
.
type
&
TYPE_MONSTER
)
&&
pcard
->
is_affected_by_effect
(
EFFECT_MAP_OF_HEAVEN
)
&&
pcard
->
is_capable_send_to_grave
(
playerid
))
&&
(
no_level
||
pcard
->
get_level
()
>
0
))
&&
(
no_level
||
pcard
->
get_level
()
>
0
||
pcard
->
is_affected_by_effect
(
EFFECT_ALLOW_FOR_RITUAL
)
))
material
->
insert
(
pcard
);
material
->
insert
(
pcard
);
}
}
void
field
::
get_fusion_material
(
uint8_t
playerid
,
card_set
*
material_all
,
card_set
*
material_base
,
uint32_t
location
)
{
void
field
::
get_fusion_material
(
uint8_t
playerid
,
card_set
*
material_all
,
card_set
*
material_base
,
uint32_t
location
)
{
...
...
interpreter.cpp
View file @
e362886c
...
@@ -99,10 +99,10 @@ interpreter::interpreter(duel* pd): coroutines(256) {
...
@@ -99,10 +99,10 @@ interpreter::interpreter(duel* pd): coroutines(256) {
lua_setglobal
(
lua_state
,
"EFFECT_EXTRA_TOMAIN_KOISHI"
);
lua_setglobal
(
lua_state
,
"EFFECT_EXTRA_TOMAIN_KOISHI"
);
lua_pushinteger
(
lua_state
,
EFFECT_OVERLAY_REMOVE_COST_CHANGE_KOISHI
);
lua_pushinteger
(
lua_state
,
EFFECT_OVERLAY_REMOVE_COST_CHANGE_KOISHI
);
lua_setglobal
(
lua_state
,
"EFFECT_OVERLAY_REMOVE_COST_CHANGE_KOISHI"
);
lua_setglobal
(
lua_state
,
"EFFECT_OVERLAY_REMOVE_COST_CHANGE_KOISHI"
);
lua_pushinteger
(
lua_state
,
EFFECT_ALLOW_
SYNCHRO_KOISHI
);
lua_pushinteger
(
lua_state
,
EFFECT_ALLOW_
FOR_SYNCHRO
);
lua_setglobal
(
lua_state
,
"EFFECT_ALLOW_SYNCHRO_KOISHI"
);
lua_setglobal
(
lua_state
,
"EFFECT_ALLOW_SYNCHRO_KOISHI"
);
// for compat only
lua_pushinteger
(
lua_state
,
EFFECT_MINIATURE_GARDEN_GIRL
);
//
lua_pushinteger(lua_state, EFFECT_MINIATURE_GARDEN_GIRL);
lua_setglobal
(
lua_state
,
"EFFECT_MINIATURE_GARDEN_GIRL"
);
//
lua_setglobal(lua_state, "EFFECT_MINIATURE_GARDEN_GIRL");
lua_pushinteger
(
lua_state
,
EFFECT_ADD_SUMMON_TYPE_KOISHI
);
lua_pushinteger
(
lua_state
,
EFFECT_ADD_SUMMON_TYPE_KOISHI
);
lua_setglobal
(
lua_state
,
"EFFECT_ADD_SUMMON_TYPE_KOISHI"
);
lua_setglobal
(
lua_state
,
"EFFECT_ADD_SUMMON_TYPE_KOISHI"
);
lua_pushinteger
(
lua_state
,
EFFECT_REMOVE_SUMMON_TYPE_KOISHI
);
lua_pushinteger
(
lua_state
,
EFFECT_REMOVE_SUMMON_TYPE_KOISHI
);
...
...
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