Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Y
ygopro-2pick
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-2pick
Commits
ebd4c1ee
Commit
ebd4c1ee
authored
Jul 17, 2015
by
VanillaSalt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update
parent
a592b04c
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
67 additions
and
53 deletions
+67
-53
ocgcore/operations.cpp
ocgcore/operations.cpp
+67
-53
No files found.
ocgcore/operations.cpp
View file @
ebd4c1ee
...
...
@@ -1210,14 +1210,16 @@ int32 field::summon(uint16 step, uint8 sumplayer, card * target, effect * proc,
uint32
adv
=
is_player_can_summon
(
SUMMON_TYPE_ADVANCE
,
sumplayer
,
target
);
if
(
max
==
0
||
!
adv
)
{
returns
.
bvalue
[
0
]
=
0
;
core
.
units
.
begin
()
->
step
=
3
;
}
else
{
core
.
release_cards
.
clear
();
core
.
release_cards_ex
.
clear
();
core
.
release_cards_ex_sum
.
clear
();
int32
rcount
=
get_summon_release_list
(
target
,
&
core
.
release_cards
,
&
core
.
release_cards_ex
,
&
core
.
release_cards_ex_sum
);
if
(
rcount
==
0
)
if
(
rcount
==
0
)
{
returns
.
bvalue
[
0
]
=
0
;
else
{
core
.
units
.
begin
()
->
step
=
3
;
}
else
{
int32
fcount
=
get_useable_count
(
sumplayer
,
LOCATION_MZONE
,
sumplayer
,
LOCATION_REASON_TOFIELD
);
if
(
min
==
0
&&
(
fcount
>
0
))
{
add_process
(
PROCESSOR_SELECT_YESNO
,
0
,
0
,
0
,
sumplayer
,
90
);
...
...
@@ -1245,7 +1247,7 @@ int32 field::summon(uint16 step, uint8 sumplayer, card * target, effect * proc,
min
=
-
core
.
temp_var
[
1
]
+
1
;
}
core
.
temp_var
[
0
]
=
min
+
(
max
<<
16
);
add_process
(
PROCESSOR_SELECT_TRIBUTE
,
0
,
0
,
0
,
sumplayer
,
core
.
temp_var
[
0
]);
add_process
(
PROCESSOR_SELECT_TRIBUTE
,
0
,
0
,
0
,
sumplayer
+
((
uint32
)
core
.
summon_cancelable
<<
16
)
,
core
.
temp_var
[
0
]);
}
return
FALSE
;
}
...
...
@@ -1340,10 +1342,7 @@ int32 field::summon(uint16 step, uint8 sumplayer, card * target, effect * proc,
(
*
cit
)
->
current
.
reason_card
=
target
;
target
->
set_material
(
tributes
);
release
(
tributes
,
0
,
REASON_SUMMON
|
REASON_MATERIAL
,
sumplayer
);
if
(
tributes
->
size
())
target
->
summon_info
=
SUMMON_TYPE_NORMAL
|
SUMMON_TYPE_ADVANCE
|
(
LOCATION_HAND
<<
16
);
else
target
->
summon_info
=
SUMMON_TYPE_NORMAL
|
(
LOCATION_HAND
<<
16
);
target
->
summon_info
=
SUMMON_TYPE_NORMAL
|
SUMMON_TYPE_ADVANCE
|
(
LOCATION_HAND
<<
16
);
delete
tributes
;
core
.
units
.
begin
()
->
peffect
=
0
;
adjust_all
();
...
...
@@ -1679,14 +1678,6 @@ int32 field::mset(uint16 step, uint8 setplayer, card * target, effect * proc, ui
int32
res
=
target
->
filter_set_procedure
(
setplayer
,
&
eset
,
ignore_count
,
min_tribute
);
if
((
proc
&&
res
<
0
)
||
res
==
-
2
)
return
TRUE
;
eset
.
clear
();
target
->
filter_effect
(
EFFECT_MSET_COST
,
&
eset
);
for
(
int32
i
=
0
;
i
<
eset
.
size
();
++
i
)
{
if
(
eset
[
i
]
->
operation
)
{
core
.
sub_solving_event
.
push_back
(
nil_event
);
add_process
(
PROCESSOR_EXECUTE_OPERATION
,
0
,
eset
[
i
],
0
,
setplayer
,
0
);
}
}
return
FALSE
;
}
case
1
:
{
...
...
@@ -1725,61 +1716,99 @@ int32 field::mset(uint16 step, uint8 setplayer, card * target, effect * proc, ui
int32
max
=
required
>>
16
;
if
(
min
<
min_tribute
)
min
=
min_tribute
;
required
=
min
+
(
max
<<
16
);
uint32
adv
=
is_player_can_mset
(
SUMMON_TYPE_ADVANCE
,
setplayer
,
target
);
if
(
max
==
0
||
!
adv
)
if
(
max
==
0
||
!
adv
)
{
returns
.
bvalue
[
0
]
=
0
;
else
{
core
.
units
.
begin
()
->
step
=
3
;
}
else
{
core
.
release_cards
.
clear
();
core
.
release_cards_ex
.
clear
();
core
.
release_cards_ex_sum
.
clear
();
int32
rcount
=
get_summon_release_list
(
target
,
&
core
.
release_cards
,
&
core
.
release_cards_ex
,
&
core
.
release_cards_ex_sum
);
if
(
rcount
==
0
)
if
(
rcount
==
0
)
{
returns
.
bvalue
[
0
]
=
0
;
else
{
core
.
units
.
begin
()
->
step
=
3
;
}
else
{
int32
fcount
=
get_useable_count
(
setplayer
,
LOCATION_MZONE
,
setplayer
,
LOCATION_REASON_TOFIELD
);
if
(
min
==
0
&&
fcount
>
0
)
{
add_process
(
PROCESSOR_SELECT_YESNO
,
0
,
0
,
0
,
setplayer
,
90
);
core
.
temp_var
[
0
]
=
required
;
core
.
temp_var
[
1
]
=
fcount
;
core
.
units
.
begin
()
->
step
=
9
;
}
else
{
if
(
min
<
-
fcount
+
1
)
{
min
=
-
fcount
+
1
;
required
=
min
+
(
max
<<
16
);
}
add_process
(
PROCESSOR_SELECT_TRIBUTE
,
0
,
0
,
0
,
setplayer
,
required
);
add_process
(
PROCESSOR_SELECT_TRIBUTE
,
0
,
0
,
0
,
setplayer
+
((
uint32
)
core
.
summon_cancelable
<<
16
),
required
);
core
.
units
.
begin
()
->
step
=
3
;
}
}
}
return
FALSE
;
}
case
3
:
{
if
(
returns
.
ivalue
[
0
])
returns
.
bvalue
[
0
]
=
0
;
else
{
int32
min
=
1
;
int32
max
=
core
.
temp_var
[
0
]
>>
16
;
if
(
min
<
-
core
.
temp_var
[
1
]
+
1
)
{
min
=
-
core
.
temp_var
[
1
]
+
1
;
}
core
.
temp_var
[
0
]
=
min
+
(
max
<<
16
);
add_process
(
PROCESSOR_SELECT_TRIBUTE
,
0
,
0
,
0
,
setplayer
+
((
uint32
)
core
.
summon_cancelable
<<
16
),
core
.
temp_var
[
0
]);
}
return
FALSE
;
}
case
4
:
{
if
(
proc
)
core
.
units
.
begin
()
->
step
=
5
;
else
{
if
(
returns
.
ivalue
[
0
]
==
-
1
)
{
return
TRUE
;
}
if
(
returns
.
bvalue
[
0
])
{
card_set
*
tributes
=
new
card_set
;
for
(
int32
i
=
0
;
i
<
returns
.
bvalue
[
0
];
++
i
)
tributes
->
insert
(
core
.
select_cards
[
returns
.
bvalue
[
i
+
1
]]);
core
.
units
.
begin
()
->
peffect
=
(
effect
*
)
tributes
;
}
}
effect_set
eset
;
target
->
filter_effect
(
EFFECT_MSET_COST
,
&
eset
);
for
(
int32
i
=
0
;
i
<
eset
.
size
();
++
i
)
{
if
(
eset
[
i
]
->
operation
)
{
core
.
sub_solving_event
.
push_back
(
nil_event
);
add_process
(
PROCESSOR_EXECUTE_OPERATION
,
0
,
eset
[
i
],
0
,
setplayer
,
0
);
}
}
return
FALSE
;
}
case
5
:
{
card_set
*
tributes
=
(
card_set
*
)
proc
;
effect
*
pextra
=
0
;
if
(
!
ignore_count
&&
!
core
.
extra_summon
[
setplayer
])
pextra
=
target
->
is_affected_by_effect
(
EFFECT_EXTRA_SET_COUNT
);
if
(
returns
.
bvalue
[
0
])
{
card_set
tributes
;
for
(
int32
i
=
0
;
i
<
returns
.
bvalue
[
0
];
++
i
)
{
tributes
.
insert
(
core
.
select_cards
[
returns
.
bvalue
[
i
+
1
]]);
core
.
select_cards
[
returns
.
bvalue
[
i
+
1
]]
->
current
.
reason_card
=
target
;
}
target
->
set_material
(
&
tributes
);
release
(
&
tributes
,
0
,
REASON_SUMMON
|
REASON_MATERIAL
,
setplayer
);
if
(
tributes
.
size
())
target
->
summon_info
=
SUMMON_TYPE_NORMAL
|
SUMMON_TYPE_ADVANCE
|
(
LOCATION_HAND
<<
16
);
else
target
->
summon_info
=
SUMMON_TYPE_NORMAL
|
(
LOCATION_HAND
<<
16
);
if
(
tributes
)
{
for
(
auto
cit
=
tributes
->
begin
();
cit
!=
tributes
->
end
();
++
cit
)
(
*
cit
)
->
current
.
reason_card
=
target
;
target
->
set_material
(
tributes
);
release
(
tributes
,
0
,
REASON_SUMMON
|
REASON_MATERIAL
,
setplayer
);
target
->
summon_info
=
SUMMON_TYPE_NORMAL
|
SUMMON_TYPE_ADVANCE
|
(
LOCATION_HAND
<<
16
);
delete
tributes
;
core
.
units
.
begin
()
->
peffect
=
0
;
adjust_all
();
}
else
target
->
summon_info
=
SUMMON_TYPE_NORMAL
|
(
LOCATION_HAND
<<
16
);
target
->
summon_player
=
setplayer
;
target
->
current
.
reason_effect
=
0
;
target
->
current
.
reason_player
=
setplayer
;
core
.
units
.
begin
()
->
step
=
4
;
core
.
units
.
begin
()
->
step
=
6
;
core
.
temp_var
[
0
]
=
(
ptr
)
pextra
;
return
FALSE
;
}
case
4
:
{
case
6
:
{
effect
*
pextra
=
0
;
if
(
!
ignore_count
&&
!
core
.
extra_summon
[
setplayer
])
pextra
=
target
->
is_affected_by_effect
(
EFFECT_EXTRA_SET_COUNT
);
...
...
@@ -1793,7 +1822,7 @@ int32 field::mset(uint16 step, uint8 setplayer, card * target, effect * proc, ui
core
.
temp_var
[
0
]
=
(
ptr
)
pextra
;
return
FALSE
;
}
case
5
:
{
case
7
:
{
break_effect
();
if
(
!
ignore_count
)
{
returns
.
ivalue
[
0
]
=
FALSE
;
...
...
@@ -1810,7 +1839,7 @@ int32 field::mset(uint16 step, uint8 setplayer, card * target, effect * proc, ui
returns
.
ivalue
[
0
]
=
TRUE
;
return
FALSE
;
}
case
6
:
{
case
8
:
{
if
(
!
returns
.
ivalue
[
0
])
core
.
summon_count
[
setplayer
]
++
;
else
if
(
core
.
temp_var
[
0
])
{
...
...
@@ -1833,7 +1862,7 @@ int32 field::mset(uint16 step, uint8 setplayer, card * target, effect * proc, ui
move_to_field
(
target
,
setplayer
,
targetplayer
,
LOCATION_MZONE
,
positions
);
return
FALSE
;
}
case
7
:
{
case
9
:
{
uint8
targetplayer
=
target
->
current
.
controler
;
if
(
target
->
owner
!=
targetplayer
)
set_control
(
target
,
targetplayer
,
0
,
0
);
...
...
@@ -1857,21 +1886,6 @@ int32 field::mset(uint16 step, uint8 setplayer, card * target, effect * proc, ui
}
return
TRUE
;
}
case
10
:
{
if
(
returns
.
ivalue
[
0
])
returns
.
bvalue
[
0
]
=
0
;
else
{
int32
min
=
1
;
int32
max
=
core
.
temp_var
[
0
]
>>
16
;
if
(
min
<
-
core
.
temp_var
[
1
]
+
1
)
{
min
=
-
core
.
temp_var
[
1
]
+
1
;
}
core
.
temp_var
[
0
]
=
min
+
(
max
<<
16
);
add_process
(
PROCESSOR_SELECT_TRIBUTE
,
0
,
0
,
0
,
setplayer
,
core
.
temp_var
[
0
]);
}
core
.
units
.
begin
()
->
step
=
2
;
return
false
;
}
}
return
TRUE
;
}
...
...
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