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
1db16596
Commit
1db16596
authored
Apr 10, 2017
by
VanillaSalt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add EFFECT_TUNER_MATERIAL_LIMIT
parent
ff62da1f
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
222 additions
and
144 deletions
+222
-144
effect.h
effect.h
+1
-0
field.cpp
field.cpp
+170
-124
operations.cpp
operations.cpp
+51
-20
No files found.
effect.h
View file @
1db16596
...
@@ -415,6 +415,7 @@ inline effect_flag operator|(effect_flag flag1, effect_flag flag2)
...
@@ -415,6 +415,7 @@ inline effect_flag operator|(effect_flag flag1, effect_flag flag2)
//#define EFFECT_REMOVE_FUSION_ATTRIBUTE 350
//#define EFFECT_REMOVE_FUSION_ATTRIBUTE 350
#define EFFECT_CHANGE_FUSION_ATTRIBUTE 351
#define EFFECT_CHANGE_FUSION_ATTRIBUTE 351
#define EFFECT_EXTRA_FUSION_MATERIAL 352
#define EFFECT_EXTRA_FUSION_MATERIAL 352
#define EFFECT_TUNER_MATERIAL_LIMIT 353
#define EVENT_STARTUP 1000
#define EVENT_STARTUP 1000
#define EVENT_FLIP 1001
#define EVENT_FLIP 1001
...
...
field.cpp
View file @
1db16596
...
@@ -2341,144 +2341,190 @@ int32 field::check_synchro_material(card* pcard, int32 findex1, int32 findex2, i
...
@@ -2341,144 +2341,190 @@ int32 field::check_synchro_material(card* pcard, int32 findex1, int32 findex2, i
return
FALSE
;
return
FALSE
;
}
}
int32
field
::
check_tuner_material
(
card
*
pcard
,
card
*
tuner
,
int32
findex1
,
int32
findex2
,
int32
min
,
int32
max
,
card
*
smat
,
group
*
mg
)
{
int32
field
::
check_tuner_material
(
card
*
pcard
,
card
*
tuner
,
int32
findex1
,
int32
findex2
,
int32
min
,
int32
max
,
card
*
smat
,
group
*
mg
)
{
if
(
tuner
&&
tuner
->
is_position
(
POS_FACEUP
)
&&
(
tuner
->
get_type
()
&
TYPE_TUNER
)
&&
tuner
->
is_can_be_synchro_material
(
pcard
))
{
if
(
!
tuner
||
!
tuner
->
is_position
(
POS_FACEUP
)
||
!
(
tuner
->
get_type
()
&
TYPE_TUNER
)
||
!
tuner
->
is_can_be_synchro_material
(
pcard
))
effect
*
pcheck
=
tuner
->
is_affected_by_effect
(
EFFECT_SYNCHRO_CHECK
);
return
FALSE
;
effect
*
pcheck
=
tuner
->
is_affected_by_effect
(
EFFECT_SYNCHRO_CHECK
);
if
(
pcheck
)
pcheck
->
get_value
(
tuner
);
if
((
mg
&&
!
mg
->
has_card
(
tuner
))
||
!
pduel
->
lua
->
check_matching
(
tuner
,
findex1
,
0
))
{
pduel
->
restore_assumes
();
return
FALSE
;
}
effect
*
pcustom
=
tuner
->
is_affected_by_effect
(
EFFECT_SYNCHRO_MATERIAL_CUSTOM
,
pcard
);
if
(
pcustom
)
{
if
(
!
pcustom
->
target
)
{
pduel
->
restore_assumes
();
return
FALSE
;
}
pduel
->
lua
->
add_param
(
pcustom
,
PARAM_TYPE_EFFECT
);
pduel
->
lua
->
add_param
(
pcard
,
PARAM_TYPE_CARD
);
pduel
->
lua
->
add_param
(
findex2
,
PARAM_TYPE_INDEX
);
pduel
->
lua
->
add_param
(
min
,
PARAM_TYPE_INT
);
pduel
->
lua
->
add_param
(
max
,
PARAM_TYPE_INT
);
if
(
pduel
->
lua
->
check_condition
(
pcustom
->
target
,
5
))
{
pduel
->
restore_assumes
();
return
TRUE
;
}
pduel
->
restore_assumes
();
return
FALSE
;
}
int32
playerid
=
pcard
->
current
.
controler
;
//int32 ct = get_useable_count(pcard, playerid, LOCATION_MZONE, playerid, LOCATION_REASON_TOFIELD);
int32
location
=
LOCATION_MZONE
;
effect
*
ptuner
=
tuner
->
is_affected_by_effect
(
EFFECT_TUNER_MATERIAL_LIMIT
);
if
(
ptuner
)
{
if
(
ptuner
->
value
)
location
=
ptuner
->
value
;
if
(
ptuner
->
s_range
&&
ptuner
->
s_range
>
min
)
min
=
ptuner
->
s_range
;
if
(
ptuner
->
o_range
&&
ptuner
->
o_range
<
max
)
max
=
ptuner
->
o_range
;
if
(
min
>
max
)
{
pduel
->
restore_assumes
();
return
FALSE
;
}
}
int32
lv
=
pcard
->
get_level
();
card_vector
nsyn
;
int32
mcount
=
1
;
nsyn
.
push_back
(
tuner
);
tuner
->
sum_param
=
tuner
->
get_synchro_level
(
pcard
);
if
(
smat
)
{
if
(
pcheck
)
if
(
pcheck
)
pcheck
->
get_value
(
tuner
);
pcheck
->
get_value
(
smat
);
if
(
(
mg
&&
!
mg
->
has_card
(
tuner
))
||
!
pduel
->
lua
->
check_matching
(
tuner
,
findex1
,
0
))
{
if
(
!
smat
->
is_position
(
POS_FACEUP
)
||
!
smat
->
is_can_be_synchro_material
(
pcard
,
tuner
)
||
!
pduel
->
lua
->
check_matching
(
smat
,
findex2
,
0
))
{
pduel
->
restore_assumes
();
pduel
->
restore_assumes
();
return
FALSE
;
return
FALSE
;
}
}
effect
*
pcustom
=
tuner
->
is_affected_by_effect
(
EFFECT_SYNCHRO_MATERIAL_CUSTOM
,
pcard
);
if
(
ptuner
&&
ptuner
->
target
)
{
if
(
pcustom
)
{
pduel
->
lua
->
add_param
(
ptuner
,
PARAM_TYPE_EFFECT
);
if
(
!
pcustom
->
target
)
{
pduel
->
lua
->
add_param
(
smat
,
PARAM_TYPE_CARD
);
if
(
!
pduel
->
lua
->
get_function_value
(
ptuner
->
target
,
2
))
{
pduel
->
restore_assumes
();
pduel
->
restore_assumes
();
return
FALSE
;
return
FALSE
;
}
}
pduel
->
lua
->
add_param
(
pcustom
,
PARAM_TYPE_EFFECT
);
}
pduel
->
lua
->
add_param
(
pcard
,
PARAM_TYPE_CARD
);
min
--
;
pduel
->
lua
->
add_param
(
findex2
,
PARAM_TYPE_INDEX
);
max
--
;
pduel
->
lua
->
add_param
(
min
,
PARAM_TYPE_INT
);
nsyn
.
push_back
(
smat
);
pduel
->
lua
->
add_param
(
max
,
PARAM_TYPE_INT
);
smat
->
sum_param
=
smat
->
get_synchro_level
(
pcard
);
if
(
pduel
->
lua
->
check_condition
(
pcustom
->
target
,
5
))
{
mcount
++
;
if
(
min
==
0
)
{
if
(
check_with_sum_limit_m
(
nsyn
,
lv
,
0
,
0
,
0
,
2
))
{
pduel
->
restore_assumes
();
pduel
->
restore_assumes
();
return
TRUE
;
return
TRUE
;
}
}
}
else
{
if
(
max
==
0
)
{
int32
lv
=
pcard
->
get_level
();
pduel
->
restore_assumes
();
card_vector
nsyn
;
return
FALSE
;
int32
mcount
=
1
;
nsyn
.
push_back
(
tuner
);
tuner
->
sum_param
=
tuner
->
get_synchro_level
(
pcard
);
if
(
smat
)
{
if
(
pcheck
)
pcheck
->
get_value
(
smat
);
if
(
!
smat
->
is_position
(
POS_FACEUP
)
||
!
smat
->
is_can_be_synchro_material
(
pcard
,
tuner
)
||
!
pduel
->
lua
->
check_matching
(
smat
,
findex2
,
0
))
{
pduel
->
restore_assumes
();
return
FALSE
;
}
min
--
;
max
--
;
nsyn
.
push_back
(
smat
);
smat
->
sum_param
=
smat
->
get_synchro_level
(
pcard
);
mcount
++
;
if
(
min
==
0
)
{
if
(
check_with_sum_limit_m
(
nsyn
,
lv
,
0
,
0
,
0
,
2
))
{
pduel
->
restore_assumes
();
return
TRUE
;
}
if
(
max
==
0
)
{
pduel
->
restore_assumes
();
return
FALSE
;
}
}
}
}
if
(
mg
)
{
}
for
(
auto
cit
=
mg
->
container
.
begin
();
cit
!=
mg
->
container
.
end
();
++
cit
)
{
}
card
*
pm
=
*
cit
;
if
(
mg
)
{
if
(
pm
!=
tuner
&&
pm
!=
smat
&&
pm
->
is_can_be_synchro_material
(
pcard
,
tuner
))
{
for
(
auto
cit
=
mg
->
container
.
begin
();
cit
!=
mg
->
container
.
end
();
++
cit
)
{
if
(
pcheck
)
card
*
pm
=
*
cit
;
pcheck
->
get_value
(
pm
);
if
(
pm
==
tuner
||
pm
==
smat
||
!
pm
->
is_can_be_synchro_material
(
pcard
,
tuner
))
if
(
pm
->
current
.
location
==
LOCATION_MZONE
&&
!
pm
->
is_position
(
POS_FACEUP
))
continue
;
continue
;
if
(
ptuner
&&
ptuner
->
target
)
{
if
(
!
pduel
->
lua
->
check_matching
(
pm
,
findex2
,
0
))
pduel
->
lua
->
add_param
(
ptuner
,
PARAM_TYPE_EFFECT
);
continue
;
pduel
->
lua
->
add_param
(
pm
,
PARAM_TYPE_CARD
);
nsyn
.
push_back
(
pm
);
if
(
!
pduel
->
lua
->
get_function_value
(
ptuner
->
target
,
2
))
pm
->
sum_param
=
pm
->
get_synchro_level
(
pcard
);
continue
;
}
}
}
else
{
for
(
uint8
p
=
0
;
p
<
2
;
++
p
)
{
for
(
auto
cit
=
player
[
p
].
list_mzone
.
begin
();
cit
!=
player
[
p
].
list_mzone
.
end
();
++
cit
)
{
card
*
pm
=
*
cit
;
if
(
pm
&&
pm
!=
tuner
&&
pm
!=
smat
&&
pm
->
is_position
(
POS_FACEUP
)
&&
pm
->
is_can_be_synchro_material
(
pcard
,
tuner
))
{
if
(
pcheck
)
pcheck
->
get_value
(
pm
);
if
(
!
pduel
->
lua
->
check_matching
(
pm
,
findex2
,
0
))
continue
;
nsyn
.
push_back
(
pm
);
pm
->
sum_param
=
pm
->
get_synchro_level
(
pcard
);
}
}
}
}
}
if
(
!
(
core
.
global_flag
&
GLOBALFLAG_SCRAP_CHIMERA
))
{
if
(
pcheck
)
if
(
check_with_sum_limit_m
(
nsyn
,
lv
,
0
,
min
,
max
,
mcount
))
{
pcheck
->
get_value
(
pm
);
pduel
->
restore_assumes
();
if
(
pm
->
current
.
location
==
LOCATION_MZONE
&&
!
pm
->
is_position
(
POS_FACEUP
))
return
TRUE
;
continue
;
}
if
(
!
pduel
->
lua
->
check_matching
(
pm
,
findex2
,
0
))
}
else
{
continue
;
effect
*
pscrap
=
0
;
nsyn
.
push_back
(
pm
);
for
(
auto
cit
=
nsyn
.
begin
();
cit
!=
nsyn
.
end
();
++
cit
)
{
pm
->
sum_param
=
pm
->
get_synchro_level
(
pcard
);
pscrap
=
(
*
cit
)
->
is_affected_by_effect
(
EFFECT_SCRAP_CHIMERA
);
}
if
(
pscrap
)
}
else
{
break
;
card_vector
cv
;
}
if
(
location
&
LOCATION_MZONE
)
{
if
(
pscrap
)
{
cv
.
insert
(
cv
.
end
(),
player
[
0
].
list_mzone
.
begin
(),
player
[
0
].
list_mzone
.
end
());
card_vector
nsyn_filtered
;
cv
.
insert
(
cv
.
end
(),
player
[
1
].
list_mzone
.
begin
(),
player
[
1
].
list_mzone
.
end
());
for
(
auto
cit
=
nsyn
.
begin
();
cit
!=
nsyn
.
end
();
++
cit
)
{
}
if
(
!
pscrap
->
get_value
(
*
cit
))
if
(
location
&
LOCATION_HAND
)
nsyn_filtered
.
push_back
(
*
cit
);
cv
.
insert
(
cv
.
end
(),
player
[
playerid
].
list_hand
.
begin
(),
player
[
playerid
].
list_hand
.
end
());
}
for
(
auto
cit
=
cv
.
begin
();
cit
!=
cv
.
end
();
++
cit
)
{
if
(
nsyn_filtered
.
size
()
==
nsyn
.
size
())
{
card
*
pm
=
*
cit
;
if
(
check_with_sum_limit_m
(
nsyn
,
lv
,
0
,
min
,
max
,
mcount
))
{
if
(
!
pm
||
pm
==
tuner
||
pm
==
smat
||
!
pm
->
is_can_be_synchro_material
(
pcard
,
tuner
))
pduel
->
restore_assumes
();
continue
;
return
TRUE
;
if
(
ptuner
&&
ptuner
->
target
)
{
}
pduel
->
lua
->
add_param
(
ptuner
,
PARAM_TYPE_EFFECT
);
}
else
{
pduel
->
lua
->
add_param
(
pm
,
PARAM_TYPE_CARD
);
bool
mfiltered
=
true
;
if
(
!
pduel
->
lua
->
get_function_value
(
ptuner
->
target
,
2
))
for
(
int32
i
=
0
;
i
<
mcount
;
++
i
)
{
continue
;
if
(
pscrap
->
get_value
(
nsyn
[
i
]))
}
mfiltered
=
false
;
if
(
pcheck
)
}
pcheck
->
get_value
(
pm
);
if
(
mfiltered
&&
check_with_sum_limit_m
(
nsyn_filtered
,
lv
,
0
,
min
,
max
,
mcount
))
{
if
(
pm
->
current
.
location
==
LOCATION_MZONE
&&
!
pm
->
is_position
(
POS_FACEUP
))
pduel
->
restore_assumes
();
continue
;
return
TRUE
;
if
(
!
pduel
->
lua
->
check_matching
(
pm
,
findex2
,
0
))
}
continue
;
for
(
int32
i
=
0
;
i
<
mcount
;
++
i
)
{
nsyn
.
push_back
(
pm
);
if
(
nsyn
[
i
]
->
is_affected_by_effect
(
EFFECT_SCRAP_CHIMERA
))
{
pm
->
sum_param
=
pm
->
get_synchro_level
(
pcard
);
pduel
->
restore_assumes
();
}
return
FALSE
;
}
}
if
(
!
(
core
.
global_flag
&
GLOBALFLAG_SCRAP_CHIMERA
))
{
}
if
(
check_with_sum_limit_m
(
nsyn
,
lv
,
0
,
min
,
max
,
mcount
))
{
card_vector
nsyn_removed
;
pduel
->
restore_assumes
();
for
(
auto
cit
=
nsyn
.
begin
();
cit
!=
nsyn
.
end
();
++
cit
)
{
return
TRUE
;
if
(
!
(
*
cit
)
->
is_affected_by_effect
(
EFFECT_SCRAP_CHIMERA
))
}
nsyn_removed
.
push_back
(
*
cit
);
pduel
->
restore_assumes
();
}
return
FALSE
;
if
(
check_with_sum_limit_m
(
nsyn_removed
,
lv
,
0
,
min
,
max
,
mcount
))
{
}
pduel
->
restore_assumes
();
effect
*
pscrap
=
0
;
return
TRUE
;
for
(
auto
cit
=
nsyn
.
begin
();
cit
!=
nsyn
.
end
();
++
cit
)
{
}
pscrap
=
(
*
cit
)
->
is_affected_by_effect
(
EFFECT_SCRAP_CHIMERA
);
}
if
(
pscrap
)
}
else
{
break
;
if
(
check_with_sum_limit_m
(
nsyn
,
lv
,
0
,
min
,
max
,
mcount
))
{
}
pduel
->
restore_assumes
();
if
(
!
pscrap
)
{
return
TRUE
;
if
(
check_with_sum_limit_m
(
nsyn
,
lv
,
0
,
min
,
max
,
mcount
))
{
}
pduel
->
restore_assumes
();
}
return
TRUE
;
}
pduel
->
restore_assumes
();
return
FALSE
;
}
card_vector
nsyn_filtered
;
for
(
auto
cit
=
nsyn
.
begin
();
cit
!=
nsyn
.
end
();
++
cit
)
{
if
(
!
pscrap
->
get_value
(
*
cit
))
nsyn_filtered
.
push_back
(
*
cit
);
}
if
(
nsyn_filtered
.
size
()
==
nsyn
.
size
())
{
if
(
check_with_sum_limit_m
(
nsyn
,
lv
,
0
,
min
,
max
,
mcount
))
{
pduel
->
restore_assumes
();
return
TRUE
;
}
}
else
{
bool
mfiltered
=
true
;
for
(
int32
i
=
0
;
i
<
mcount
;
++
i
)
{
if
(
pscrap
->
get_value
(
nsyn
[
i
]))
mfiltered
=
false
;
}
if
(
mfiltered
&&
check_with_sum_limit_m
(
nsyn_filtered
,
lv
,
0
,
min
,
max
,
mcount
))
{
pduel
->
restore_assumes
();
return
TRUE
;
}
for
(
int32
i
=
0
;
i
<
mcount
;
++
i
)
{
if
(
nsyn
[
i
]
->
is_affected_by_effect
(
EFFECT_SCRAP_CHIMERA
))
{
pduel
->
restore_assumes
();
return
FALSE
;
}
}
}
}
card_vector
nsyn_removed
;
for
(
auto
cit
=
nsyn
.
begin
();
cit
!=
nsyn
.
end
();
++
cit
)
{
if
(
!
(
*
cit
)
->
is_affected_by_effect
(
EFFECT_SCRAP_CHIMERA
))
nsyn_removed
.
push_back
(
*
cit
);
}
if
(
check_with_sum_limit_m
(
nsyn_removed
,
lv
,
0
,
min
,
max
,
mcount
))
{
pduel
->
restore_assumes
();
return
TRUE
;
}
}
}
pduel
->
restore_assumes
();
pduel
->
restore_assumes
();
return
FALSE
;
return
FALSE
;
...
...
operations.cpp
View file @
1db16596
...
@@ -4602,9 +4602,21 @@ int32 field::select_synchro_material(int16 step, uint8 playerid, card* pcard, in
...
@@ -4602,9 +4602,21 @@ int32 field::select_synchro_material(int16 step, uint8 playerid, card* pcard, in
return
FALSE
;
return
FALSE
;
}
}
case
4
:
{
case
4
:
{
card
*
tuner
=
core
.
limit_tuner
;
int32
playerid
=
pcard
->
current
.
controler
;
//int32 ct = get_useable_count(pcard, playerid, LOCATION_MZONE, playerid, LOCATION_REASON_TOFIELD);
int32
location
=
LOCATION_MZONE
;
effect
*
ptuner
=
tuner
->
is_affected_by_effect
(
EFFECT_TUNER_MATERIAL_LIMIT
);
if
(
ptuner
)
{
if
(
ptuner
->
value
)
location
=
ptuner
->
value
;
if
(
ptuner
->
s_range
&&
ptuner
->
s_range
>
min
)
min
=
ptuner
->
s_range
;
if
(
ptuner
->
o_range
&&
ptuner
->
o_range
<
max
)
max
=
ptuner
->
o_range
;
}
int32
lv
=
pcard
->
get_level
();
int32
lv
=
pcard
->
get_level
();
int32
mcount
=
1
;
int32
mcount
=
1
;
card
*
tuner
=
core
.
limit_tuner
;
effect
*
pcheck
=
tuner
->
is_affected_by_effect
(
EFFECT_SYNCHRO_CHECK
);
effect
*
pcheck
=
tuner
->
is_affected_by_effect
(
EFFECT_SYNCHRO_CHECK
);
core
.
must_select_cards
.
clear
();
core
.
must_select_cards
.
clear
();
core
.
must_select_cards
.
push_back
(
tuner
);
core
.
must_select_cards
.
push_back
(
tuner
);
...
@@ -4620,30 +4632,49 @@ int32 field::select_synchro_material(int16 step, uint8 playerid, card* pcard, in
...
@@ -4620,30 +4632,49 @@ int32 field::select_synchro_material(int16 step, uint8 playerid, card* pcard, in
if
(
mg
)
{
if
(
mg
)
{
for
(
auto
cit
=
mg
->
container
.
begin
();
cit
!=
mg
->
container
.
end
();
++
cit
)
{
for
(
auto
cit
=
mg
->
container
.
begin
();
cit
!=
mg
->
container
.
end
();
++
cit
)
{
card
*
pm
=
*
cit
;
card
*
pm
=
*
cit
;
if
(
pm
!=
tuner
&&
pm
!=
smat
&&
pm
->
is_can_be_synchro_material
(
pcard
,
tuner
))
{
if
(
pm
==
tuner
||
pm
==
smat
||
!
pm
->
is_can_be_synchro_material
(
pcard
,
tuner
))
if
(
pcheck
)
continue
;
pcheck
->
get_value
(
pm
);
if
(
ptuner
&&
ptuner
->
target
)
{
if
(
pm
->
current
.
location
==
LOCATION_MZONE
&&
!
pm
->
is_position
(
POS_FACEUP
))
pduel
->
lua
->
add_param
(
ptuner
,
PARAM_TYPE_EFFECT
);
continue
;
pduel
->
lua
->
add_param
(
pm
,
PARAM_TYPE_CARD
)
;
if
(
!
pduel
->
lua
->
check_matching
(
pm
,
-
1
,
0
))
if
(
!
pduel
->
lua
->
get_function_value
(
ptuner
->
target
,
2
))
continue
;
continue
;
core
.
select_cards
.
push_back
(
pm
);
pm
->
sum_param
=
pm
->
get_synchro_level
(
pcard
);
}
}
if
(
pcheck
)
pcheck
->
get_value
(
pm
);
if
(
pm
->
current
.
location
==
LOCATION_MZONE
&&
!
pm
->
is_position
(
POS_FACEUP
))
continue
;
if
(
!
pduel
->
lua
->
check_matching
(
pm
,
-
1
,
0
))
continue
;
core
.
select_cards
.
push_back
(
pm
);
pm
->
sum_param
=
pm
->
get_synchro_level
(
pcard
);
}
}
}
else
{
}
else
{
for
(
uint8
np
=
0
;
np
<
2
;
++
np
)
{
card_vector
cv
;
for
(
auto
cit
=
player
[
np
].
list_mzone
.
begin
();
cit
!=
player
[
np
].
list_mzone
.
end
();
++
cit
)
{
if
(
location
&
LOCATION_MZONE
)
{
card
*
pm
=
*
cit
;
cv
.
insert
(
cv
.
end
(),
player
[
0
].
list_mzone
.
begin
(),
player
[
0
].
list_mzone
.
end
());
if
(
pm
&&
pm
!=
tuner
&&
pm
!=
smat
&&
pm
->
is_position
(
POS_FACEUP
)
&&
pm
->
is_can_be_synchro_material
(
pcard
,
tuner
))
{
cv
.
insert
(
cv
.
end
(),
player
[
1
].
list_mzone
.
begin
(),
player
[
1
].
list_mzone
.
end
());
if
(
pcheck
)
}
pcheck
->
get_value
(
pm
);
if
(
location
&
LOCATION_HAND
)
if
(
!
pduel
->
lua
->
check_matching
(
pm
,
-
1
,
0
))
cv
.
insert
(
cv
.
end
(),
player
[
playerid
].
list_hand
.
begin
(),
player
[
playerid
].
list_hand
.
end
());
continue
;
for
(
auto
cit
=
cv
.
begin
();
cit
!=
cv
.
end
();
++
cit
)
{
core
.
select_cards
.
push_back
(
pm
);
card
*
pm
=
*
cit
;
pm
->
sum_param
=
pm
->
get_synchro_level
(
pcard
);
if
(
!
pm
||
pm
==
tuner
||
pm
==
smat
||
!
pm
->
is_can_be_synchro_material
(
pcard
,
tuner
))
}
continue
;
if
(
ptuner
&&
ptuner
->
target
)
{
pduel
->
lua
->
add_param
(
ptuner
,
PARAM_TYPE_EFFECT
);
pduel
->
lua
->
add_param
(
pm
,
PARAM_TYPE_CARD
);
if
(
!
pduel
->
lua
->
get_function_value
(
ptuner
->
target
,
2
))
continue
;
}
}
if
(
pcheck
)
pcheck
->
get_value
(
pm
);
if
(
pm
->
current
.
location
==
LOCATION_MZONE
&&
!
pm
->
is_position
(
POS_FACEUP
))
continue
;
if
(
!
pduel
->
lua
->
check_matching
(
pm
,
-
1
,
0
))
continue
;
core
.
select_cards
.
push_back
(
pm
);
pm
->
sum_param
=
pm
->
get_synchro_level
(
pcard
);
}
}
}
}
if
(
core
.
global_flag
&
GLOBALFLAG_SCRAP_CHIMERA
)
{
if
(
core
.
global_flag
&
GLOBALFLAG_SCRAP_CHIMERA
)
{
...
...
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