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
64b93463
Commit
64b93463
authored
Sep 01, 2021
by
mercury233
Committed by
GitHub
Sep 01, 2021
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add EVENT_LEAVE_GRAVE (#395)
parent
8acb0c4c
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
28 additions
and
8 deletions
+28
-8
card.cpp
card.cpp
+10
-1
effect.h
effect.h
+1
-0
operations.cpp
operations.cpp
+17
-7
No files found.
card.cpp
View file @
64b93463
...
@@ -1461,7 +1461,7 @@ int32 card::get_old_union_count() {
...
@@ -1461,7 +1461,7 @@ int32 card::get_old_union_count() {
void
card
::
xyz_overlay
(
card_set
*
materials
)
{
void
card
::
xyz_overlay
(
card_set
*
materials
)
{
if
(
materials
->
size
()
==
0
)
if
(
materials
->
size
()
==
0
)
return
;
return
;
card_set
des
;
card_set
des
,
leave_grave
;
field
::
card_vector
cv
;
field
::
card_vector
cv
;
for
(
auto
&
pcard
:
*
materials
)
for
(
auto
&
pcard
:
*
materials
)
cv
.
push_back
(
pcard
);
cv
.
push_back
(
pcard
);
...
@@ -1528,9 +1528,18 @@ void card::xyz_overlay(card_set* materials) {
...
@@ -1528,9 +1528,18 @@ void card::xyz_overlay(card_set* materials) {
pduel
->
game_field
->
add_to_disable_check_list
(
pcard
);
pduel
->
game_field
->
add_to_disable_check_list
(
pcard
);
}
}
xyz_add
(
pcard
);
xyz_add
(
pcard
);
if
(
pcard
->
previous
.
location
==
LOCATION_GRAVE
)
{
leave_grave
.
insert
(
pcard
);
pduel
->
game_field
->
raise_single_event
(
pcard
,
0
,
EVENT_LEAVE_GRAVE
,
pduel
->
game_field
->
core
.
reason_effect
,
pcard
->
current
.
reason
,
pduel
->
game_field
->
core
.
reason_player
,
0
,
0
);
}
pduel
->
write_buffer32
(
pcard
->
get_info_location
());
pduel
->
write_buffer32
(
pcard
->
get_info_location
());
pduel
->
write_buffer32
(
pcard
->
current
.
reason
);
pduel
->
write_buffer32
(
pcard
->
current
.
reason
);
}
}
if
(
leave_grave
.
size
())
{
pduel
->
game_field
->
raise_event
(
&
leave_grave
,
EVENT_LEAVE_GRAVE
,
pduel
->
game_field
->
core
.
reason_effect
,
REASON_XYZ
+
REASON_MATERIAL
,
pduel
->
game_field
->
core
.
reason_player
,
0
,
0
);
pduel
->
game_field
->
process_single_event
();
pduel
->
game_field
->
process_instant_event
();
}
if
(
des
.
size
())
if
(
des
.
size
())
pduel
->
game_field
->
destroy
(
&
des
,
0
,
REASON_LOST_TARGET
+
REASON_RULE
,
PLAYER_NONE
);
pduel
->
game_field
->
destroy
(
&
des
,
0
,
REASON_LOST_TARGET
+
REASON_RULE
,
PLAYER_NONE
);
else
else
...
...
effect.h
View file @
64b93463
...
@@ -481,6 +481,7 @@ inline effect_flag operator|(effect_flag flag1, effect_flag flag2)
...
@@ -481,6 +481,7 @@ inline effect_flag operator|(effect_flag flag1, effect_flag flag2)
#define EVENT_BECOME_TARGET 1028
#define EVENT_BECOME_TARGET 1028
#define EVENT_DESTROYED 1029
#define EVENT_DESTROYED 1029
#define EVENT_MOVE 1030
#define EVENT_MOVE 1030
#define EVENT_LEAVE_GRAVE 1031
#define EVENT_ADJUST 1040
#define EVENT_ADJUST 1040
#define EVENT_BREAK_EFFECT 1050
#define EVENT_BREAK_EFFECT 1050
#define EVENT_SUMMON_SUCCESS 1100
#define EVENT_SUMMON_SUCCESS 1100
...
...
operations.cpp
View file @
64b93463
...
@@ -3760,7 +3760,7 @@ int32 field::send_replace(uint16 step, group * targets, card * target) {
...
@@ -3760,7 +3760,7 @@ int32 field::send_replace(uint16 step, group * targets, card * target) {
int32
field
::
send_to
(
uint16
step
,
group
*
targets
,
effect
*
reason_effect
,
uint32
reason
,
uint8
reason_player
)
{
int32
field
::
send_to
(
uint16
step
,
group
*
targets
,
effect
*
reason_effect
,
uint32
reason
,
uint8
reason_player
)
{
struct
exargs
{
struct
exargs
{
group
*
targets
;
group
*
targets
;
card_set
leave
,
detach
;
card_set
leave
_field
,
leave_grave
,
detach
;
bool
show_decktop
[
2
];
bool
show_decktop
[
2
];
card_vector
cv
;
card_vector
cv
;
card_vector
::
iterator
cvit
;
card_vector
::
iterator
cvit
;
...
@@ -3988,7 +3988,7 @@ int32 field::send_to(uint16 step, group * targets, effect * reason_effect, uint3
...
@@ -3988,7 +3988,7 @@ int32 field::send_to(uint16 step, group * targets, effect * reason_effect, uint3
pcard
->
reset
(
RESET_LEAVE
,
RESET_EVENT
);
pcard
->
reset
(
RESET_LEAVE
,
RESET_EVENT
);
pcard
->
clear_relate_effect
();
pcard
->
clear_relate_effect
();
remove_card
(
pcard
);
remove_card
(
pcard
);
param
->
leave
.
insert
(
pcard
);
param
->
leave
_field
.
insert
(
pcard
);
++
param
->
cvit
;
++
param
->
cvit
;
core
.
units
.
begin
()
->
step
=
4
;
core
.
units
.
begin
()
->
step
=
4
;
return
FALSE
;
return
FALSE
;
...
@@ -4041,7 +4041,9 @@ int32 field::send_to(uint16 step, group * targets, effect * reason_effect, uint3
...
@@ -4041,7 +4041,9 @@ int32 field::send_to(uint16 step, group * targets, effect * reason_effect, uint3
pcard
->
previous
.
location
=
0
;
pcard
->
previous
.
location
=
0
;
}
else
if
(
oloc
&
LOCATION_ONFIELD
)
{
}
else
if
(
oloc
&
LOCATION_ONFIELD
)
{
pcard
->
reset
(
RESET_LEAVE
,
RESET_EVENT
);
pcard
->
reset
(
RESET_LEAVE
,
RESET_EVENT
);
param
->
leave
.
insert
(
pcard
);
param
->
leave_field
.
insert
(
pcard
);
}
else
if
(
oloc
==
LOCATION_GRAVE
)
{
param
->
leave_grave
.
insert
(
pcard
);
}
}
if
(
pcard
->
previous
.
location
==
LOCATION_OVERLAY
)
if
(
pcard
->
previous
.
location
==
LOCATION_OVERLAY
)
pcard
->
previous
.
controler
=
control_player
;
pcard
->
previous
.
controler
=
control_player
;
...
@@ -4086,7 +4088,7 @@ int32 field::send_to(uint16 step, group * targets, effect * reason_effect, uint3
...
@@ -4086,7 +4088,7 @@ int32 field::send_to(uint16 step, group * targets, effect * reason_effect, uint3
}
else
if
(
oloc
&
LOCATION_ONFIELD
)
{
}
else
if
(
oloc
&
LOCATION_ONFIELD
)
{
pcard
->
reset
(
RESET_LEAVE
+
RESET_MSCHANGE
,
RESET_EVENT
);
pcard
->
reset
(
RESET_LEAVE
+
RESET_MSCHANGE
,
RESET_EVENT
);
pcard
->
clear_card_target
();
pcard
->
clear_card_target
();
param
->
leave
.
insert
(
pcard
);
param
->
leave
_field
.
insert
(
pcard
);
}
}
if
(
param
->
predirect
->
operation
)
{
if
(
param
->
predirect
->
operation
)
{
tevent
e
;
tevent
e
;
...
@@ -4145,8 +4147,10 @@ int32 field::send_to(uint16 step, group * targets, effect * reason_effect, uint3
...
@@ -4145,8 +4147,10 @@ int32 field::send_to(uint16 step, group * targets, effect * reason_effect, uint3
}
}
pcard
->
refresh_disable_status
();
pcard
->
refresh_disable_status
();
}
}
for
(
auto
&
pcard
:
param
->
leave
)
for
(
auto
&
pcard
:
param
->
leave
_field
)
raise_single_event
(
pcard
,
0
,
EVENT_LEAVE_FIELD
,
pcard
->
current
.
reason_effect
,
pcard
->
current
.
reason
,
pcard
->
current
.
reason_player
,
0
,
0
);
raise_single_event
(
pcard
,
0
,
EVENT_LEAVE_FIELD
,
pcard
->
current
.
reason_effect
,
pcard
->
current
.
reason
,
pcard
->
current
.
reason_player
,
0
,
0
);
for
(
auto
&
pcard
:
param
->
leave_grave
)
raise_single_event
(
pcard
,
0
,
EVENT_LEAVE_GRAVE
,
pcard
->
current
.
reason_effect
,
pcard
->
current
.
reason
,
pcard
->
current
.
reason_player
,
0
,
0
);
if
((
core
.
global_flag
&
GLOBALFLAG_DETACH_EVENT
)
&&
param
->
detach
.
size
())
{
if
((
core
.
global_flag
&
GLOBALFLAG_DETACH_EVENT
)
&&
param
->
detach
.
size
())
{
for
(
auto
&
pcard
:
param
->
detach
)
{
for
(
auto
&
pcard
:
param
->
detach
)
{
if
(
pcard
->
current
.
location
&
LOCATION_MZONE
)
if
(
pcard
->
current
.
location
&
LOCATION_MZONE
)
...
@@ -4154,8 +4158,10 @@ int32 field::send_to(uint16 step, group * targets, effect * reason_effect, uint3
...
@@ -4154,8 +4158,10 @@ int32 field::send_to(uint16 step, group * targets, effect * reason_effect, uint3
}
}
}
}
process_single_event
();
process_single_event
();
if
(
param
->
leave
.
size
())
if
(
param
->
leave_field
.
size
())
raise_event
(
&
param
->
leave
,
EVENT_LEAVE_FIELD
,
reason_effect
,
reason
,
reason_player
,
0
,
0
);
raise_event
(
&
param
->
leave_field
,
EVENT_LEAVE_FIELD
,
reason_effect
,
reason
,
reason_player
,
0
,
0
);
if
(
param
->
leave_grave
.
size
())
raise_event
(
&
param
->
leave_grave
,
EVENT_LEAVE_GRAVE
,
reason_effect
,
reason
,
reason_player
,
0
,
0
);
if
((
core
.
global_flag
&
GLOBALFLAG_DETACH_EVENT
)
&&
param
->
detach
.
size
())
if
((
core
.
global_flag
&
GLOBALFLAG_DETACH_EVENT
)
&&
param
->
detach
.
size
())
raise_event
(
&
param
->
detach
,
EVENT_DETACH_MATERIAL
,
reason_effect
,
reason
,
reason_player
,
0
,
0
);
raise_event
(
&
param
->
detach
,
EVENT_DETACH_MATERIAL
,
reason_effect
,
reason
,
reason_player
,
0
,
0
);
process_instant_event
();
process_instant_event
();
...
@@ -4618,6 +4624,10 @@ int32 field::move_to_field(uint16 step, card* target, uint32 enable, uint32 ret,
...
@@ -4618,6 +4624,10 @@ int32 field::move_to_field(uint16 step, card* target, uint32 enable, uint32 ret,
if
(
ret
==
1
&&
target
->
current
.
location
==
LOCATION_MZONE
&&
!
(
target
->
data
.
type
&
TYPE_MONSTER
))
if
(
ret
==
1
&&
target
->
current
.
location
==
LOCATION_MZONE
&&
!
(
target
->
data
.
type
&
TYPE_MONSTER
))
send_to
(
target
,
0
,
REASON_RULE
,
PLAYER_NONE
,
PLAYER_NONE
,
LOCATION_GRAVE
,
0
,
0
);
send_to
(
target
,
0
,
REASON_RULE
,
PLAYER_NONE
,
PLAYER_NONE
,
LOCATION_GRAVE
,
0
,
0
);
else
{
else
{
if
(
target
->
previous
.
location
==
LOCATION_GRAVE
)
{
raise_single_event
(
target
,
0
,
EVENT_LEAVE_GRAVE
,
target
->
current
.
reason_effect
,
target
->
current
.
reason
,
move_player
,
0
,
0
);
raise_event
(
target
,
EVENT_LEAVE_GRAVE
,
target
->
current
.
reason_effect
,
target
->
current
.
reason
,
move_player
,
0
,
0
);
}
raise_single_event
(
target
,
0
,
EVENT_MOVE
,
target
->
current
.
reason_effect
,
target
->
current
.
reason
,
target
->
current
.
reason_player
,
0
,
0
);
raise_single_event
(
target
,
0
,
EVENT_MOVE
,
target
->
current
.
reason_effect
,
target
->
current
.
reason
,
target
->
current
.
reason_player
,
0
,
0
);
raise_event
(
target
,
EVENT_MOVE
,
target
->
current
.
reason_effect
,
target
->
current
.
reason
,
target
->
current
.
reason_player
,
0
,
0
);
raise_event
(
target
,
EVENT_MOVE
,
target
->
current
.
reason_effect
,
target
->
current
.
reason
,
target
->
current
.
reason_player
,
0
,
0
);
process_single_event
();
process_single_event
();
...
...
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