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
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
MyCard
ygopro-core
Commits
dc9e8a4f
Commit
dc9e8a4f
authored
Nov 07, 2019
by
mercury233
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
https://github.com/Fluorohydride/ygopro-core
parents
d440644e
e78e83af
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
14 additions
and
6 deletions
+14
-6
card.cpp
card.cpp
+14
-6
No files found.
card.cpp
View file @
dc9e8a4f
...
...
@@ -2788,22 +2788,26 @@ effect* card::check_control_effect() {
return
ret_effect
;
}
int32
card
::
fusion_check
(
group
*
fusion_m
,
card
*
cg
,
uint32
chkf
,
uint8
not_material
)
{
group
*
matgroup
=
0
;
if
(
fusion_m
&&
!
not_material
)
{
matgroup
=
pduel
->
new_group
(
fusion_m
->
container
);
uint32
summon_type
=
SUMMON_TYPE_FUSION
;
if
((
chkf
&
0x200
)
>
0
)
summon_type
=
SUMMON_TYPE_SPECIAL
;
effect_set
eset
;
filter_effect
(
EFFECT_MATERIAL_LIMIT
,
&
eset
);
for(auto cit =
fusion_m->container.begin(); cit != fusion_m
->container.end();) {
for
(
auto
cit
=
matgroup
->
container
.
begin
();
cit
!=
matgroup
->
container
.
end
();)
{
card
*
pcard
=
*
cit
++
;
for
(
int32
i
=
0
;
i
<
eset
.
size
();
++
i
)
{
pduel
->
lua
->
add_param
(
pcard
,
PARAM_TYPE_CARD
);
pduel
->
lua
->
add_param
(
this
,
PARAM_TYPE_CARD
);
pduel
->
lua
->
add_param
(
summon_type
,
PARAM_TYPE_INT
);
if
(
!
eset
[
i
]
->
check_value_condition
(
3
))
fusion_m
->container.erase(pcard);
matgroup
->
container
.
erase
(
pcard
);
}
}
}
else
if
(
fusion_m
)
{
matgroup
=
pduel
->
new_group
(
fusion_m
->
container
);
}
auto
ecit
=
single_effect
.
find
(
EFFECT_FUSION_MATERIAL
);
if
(
ecit
==
single_effect
.
end
())
...
...
@@ -2812,7 +2816,7 @@ int32 card::fusion_check(group* fusion_m, card* cg, uint32 chkf, uint8 not_mater
if
(
!
peffect
->
condition
)
return
FALSE
;
pduel
->
lua
->
add_param
(
peffect
,
PARAM_TYPE_EFFECT
);
pduel->lua->add_param(
fusion_m
, PARAM_TYPE_GROUP);
pduel
->
lua
->
add_param
(
matgroup
,
PARAM_TYPE_GROUP
);
pduel
->
lua
->
add_param
(
cg
,
PARAM_TYPE_CARD
);
pduel
->
lua
->
add_param
(
chkf
,
PARAM_TYPE_INT
);
effect
*
oreason
=
pduel
->
game_field
->
core
.
reason_effect
;
...
...
@@ -2827,28 +2831,32 @@ int32 card::fusion_check(group* fusion_m, card* cg, uint32 chkf, uint8 not_mater
return
res
;
}
void
card
::
fusion_select
(
uint8
playerid
,
group
*
fusion_m
,
card
*
cg
,
uint32
chkf
,
uint8
not_material
)
{
group
*
matgroup
=
0
;
if
(
fusion_m
&&
!
not_material
)
{
matgroup
=
pduel
->
new_group
(
fusion_m
->
container
);
uint32
summon_type
=
SUMMON_TYPE_FUSION
;
if
((
chkf
&
0x200
)
>
0
)
summon_type
=
SUMMON_TYPE_SPECIAL
;
effect_set
eset
;
filter_effect
(
EFFECT_MATERIAL_LIMIT
,
&
eset
);
for(auto cit =
fusion_m->container.begin(); cit != fusion_m
->container.end();) {
for
(
auto
cit
=
matgroup
->
container
.
begin
();
cit
!=
matgroup
->
container
.
end
();)
{
card
*
pcard
=
*
cit
++
;
for
(
int32
i
=
0
;
i
<
eset
.
size
();
++
i
)
{
pduel
->
lua
->
add_param
(
pcard
,
PARAM_TYPE_CARD
);
pduel
->
lua
->
add_param
(
this
,
PARAM_TYPE_CARD
);
pduel
->
lua
->
add_param
(
summon_type
,
PARAM_TYPE_INT
);
if
(
!
eset
[
i
]
->
check_value_condition
(
3
))
fusion_m
->container.erase(pcard);
matgroup
->
container
.
erase
(
pcard
);
}
}
}
else
if
(
fusion_m
)
{
matgroup
=
pduel
->
new_group
(
fusion_m
->
container
);
}
effect
*
peffect
=
0
;
auto
ecit
=
single_effect
.
find
(
EFFECT_FUSION_MATERIAL
);
if
(
ecit
!=
single_effect
.
end
())
peffect
=
ecit
->
second
;
pduel->game_field->add_process(PROCESSOR_SELECT_FUSION, 0, peffect,
fusion_m
, playerid + (chkf << 16), not_material, 0, 0, cg);
pduel
->
game_field
->
add_process
(
PROCESSOR_SELECT_FUSION
,
0
,
peffect
,
matgroup
,
playerid
+
(
chkf
<<
16
),
not_material
,
0
,
0
,
cg
);
}
int32
card
::
check_fusion_substitute
(
card
*
fcard
)
{
effect_set
eset
;
...
...
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