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
43b6c09c
Commit
43b6c09c
authored
Feb 04, 2017
by
VanillaSalt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update Duel.SpecialSummon
parent
8e4e8bac
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
37 additions
and
22 deletions
+37
-22
field.h
field.h
+1
-0
operations.cpp
operations.cpp
+36
-22
No files found.
field.h
View file @
43b6c09c
...
...
@@ -197,6 +197,7 @@ struct processor {
instant_f_list
quick_f_chain
;
card_set
leave_confirmed
;
card_set
special_summoning
;
card_set
ss_tograve_set
;
card_set
equiping_cards
;
card_set
control_adjust_set
[
2
];
card_set
unique_destroy_set
;
...
...
operations.cpp
View file @
43b6c09c
...
...
@@ -2542,20 +2542,27 @@ int32 field::special_summon_step(uint16 step, group * targets, card * target) {
uint8
positions
=
target
->
spsummon_param
&
0xff
;
switch
(
step
)
{
case
0
:
{
returns
.
ivalue
[
0
]
=
FALSE
;
uint32
result
=
TRUE
;
effect_set
eset
;
if
(
target
->
is_affected_by_effect
(
EFFECT_REVIVE_LIMIT
)
&&
!
target
->
is_status
(
STATUS_PROC_COMPLETE
))
{
if
((
!
nolimit
&&
(
target
->
current
.
location
&
0x38
))
||
(
!
nocheck
&&
!
nolimit
&&
(
target
->
current
.
location
&
0x3
)))
result
=
FALSE
;
if
((
!
nolimit
&&
(
target
->
current
.
location
&
0x38
))
||
(
!
nocheck
&&
!
nolimit
&&
(
target
->
current
.
location
&
0x3
)))
{
core
.
units
.
begin
()
->
step
=
4
;
return
FALSE
;
}
}
if
(
!
result
||
(
target
->
current
.
location
==
LOCATION_MZONE
)
if
((
target
->
current
.
location
==
LOCATION_MZONE
)
||
check_unique_onfield
(
target
,
playerid
,
LOCATION_MZONE
)
||
!
is_player_can_spsummon
(
core
.
reason_effect
,
target
->
summon_info
&
0xff00ffff
,
positions
,
target
->
summon_player
,
playerid
,
target
)
||
get_useable_count
(
playerid
,
LOCATION_MZONE
,
target
->
summon_player
,
LOCATION_REASON_TOFIELD
)
<=
0
||
(
!
nocheck
&&
!
(
target
->
data
.
type
&
TYPE_MONSTER
)))
result
=
FALSE
;
if
(
result
&&
!
nocheck
)
{
||
(
!
nocheck
&&
!
(
target
->
data
.
type
&
TYPE_MONSTER
)))
{
core
.
units
.
begin
()
->
step
=
4
;
return
FALSE
;
}
if
(
get_useable_count
(
playerid
,
LOCATION_MZONE
,
target
->
summon_player
,
LOCATION_REASON_TOFIELD
)
<=
0
)
{
if
(
target
->
current
.
location
!=
LOCATION_GRAVE
)
core
.
ss_tograve_set
.
insert
(
target
);
core
.
units
.
begin
()
->
step
=
4
;
return
FALSE
;
}
if
(
!
nocheck
)
{
target
->
filter_effect
(
EFFECT_SPSUMMON_CONDITION
,
&
eset
);
for
(
int32
i
=
0
;
i
<
eset
.
size
();
++
i
)
{
pduel
->
lua
->
add_param
(
core
.
reason_effect
,
PARAM_TYPE_EFFECT
);
...
...
@@ -2564,19 +2571,11 @@ int32 field::special_summon_step(uint16 step, group * targets, card * target) {
pduel
->
lua
->
add_param
(
positions
,
PARAM_TYPE_INT
);
pduel
->
lua
->
add_param
(
playerid
,
PARAM_TYPE_INT
);
if
(
!
eset
[
i
]
->
check_value_condition
(
5
))
{
result
=
FALSE
;
break
;
core
.
units
.
begin
()
->
step
=
4
;
return
FALSE
;
}
}
}
if
(
!
result
)
{
target
->
current
.
reason
=
target
->
temp
.
reason
;
target
->
current
.
reason_effect
=
target
->
temp
.
reason_effect
;
target
->
current
.
reason_player
=
target
->
temp
.
reason_player
;
if
(
targets
)
targets
->
container
.
erase
(
target
);
return
TRUE
;
}
eset
.
clear
();
target
->
filter_effect
(
EFFECT_SPSUMMON_COST
,
&
eset
);
for
(
int32
i
=
0
;
i
<
eset
.
size
();
++
i
)
{
...
...
@@ -2608,6 +2607,15 @@ int32 field::special_summon_step(uint16 step, group * targets, card * target) {
target
->
set_status
(
STATUS_SPSUMMON_STEP
,
TRUE
);
return
TRUE
;
}
case
5
:
{
returns
.
ivalue
[
0
]
=
FALSE
;
target
->
current
.
reason
=
target
->
temp
.
reason
;
target
->
current
.
reason_effect
=
target
->
temp
.
reason_effect
;
target
->
current
.
reason_player
=
target
->
temp
.
reason_player
;
if
(
targets
)
targets
->
container
.
erase
(
target
);
return
TRUE
;
}
}
return
TRUE
;
}
...
...
@@ -2639,6 +2647,12 @@ int32 field::special_summon(uint16 step, effect * reason_effect, uint8 reason_pl
return
FALSE
;
}
case
1
:
{
if
(
core
.
ss_tograve_set
.
size
())
send_to
(
&
core
.
ss_tograve_set
,
0
,
REASON_RULE
,
PLAYER_NONE
,
PLAYER_NONE
,
LOCATION_GRAVE
,
0
,
POS_FACEUP
);
return
FALSE
;
}
case
2
:
{
core
.
ss_tograve_set
.
clear
();
if
(
targets
->
container
.
size
()
==
0
)
{
returns
.
ivalue
[
0
]
=
0
;
core
.
operated_set
.
clear
();
...
...
@@ -2672,7 +2686,7 @@ int32 field::special_summon(uint16 step, effect * reason_effect, uint8 reason_pl
adjust_instant
();
return
FALSE
;
}
case
2
:
{
case
3
:
{
pduel
->
write_buffer8
(
MSG_SPSUMMONED
);
for
(
auto
cit
=
targets
->
container
.
begin
();
cit
!=
targets
->
container
.
end
();
++
cit
)
{
if
(
!
((
*
cit
)
->
current
.
position
&
POS_FACEDOWN
))
...
...
@@ -2689,12 +2703,12 @@ int32 field::special_summon(uint16 step, effect * reason_effect, uint8 reason_pl
process_instant_event
();
return
FALSE
;
}
case
3
:
{
case
4
:
{
raise_event
(
&
targets
->
container
,
EVENT_SPSUMMON_SUCCESS
,
reason_effect
,
0
,
reason_player
,
PLAYER_NONE
,
0
);
process_instant_event
();
return
FALSE
;
}
case
4
:
{
case
5
:
{
core
.
operated_set
.
clear
();
core
.
operated_set
=
targets
->
container
;
returns
.
ivalue
[
0
]
=
targets
->
container
.
size
();
...
...
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