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
b75cb0e2
Commit
b75cb0e2
authored
Oct 01, 2024
by
salix5
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
set STATUS_SUMMONING before checking EFFECT_CANNOT_DISABLE_SUMMON
parent
614ee807
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
16 additions
and
13 deletions
+16
-13
card.cpp
card.cpp
+2
-2
effectset.h
effectset.h
+1
-0
operations.cpp
operations.cpp
+13
-11
No files found.
card.cpp
View file @
b75cb0e2
...
@@ -3669,8 +3669,8 @@ int32 card::is_setable_szone(uint8 playerid, uint8 ignore_fd) {
...
@@ -3669,8 +3669,8 @@ int32 card::is_setable_szone(uint8 playerid, uint8 ignore_fd) {
return
TRUE
;
return
TRUE
;
}
}
int32
card
::
is_affect_by_effect
(
effect
*
reason_effect
)
{
int32
card
::
is_affect_by_effect
(
effect
*
reason_effect
)
{
if
(
is_status
(
STATUS_SUMMONING
)
&&
reason_effect
->
code
!=
EFFECT_CANNOT_DISABLE_SUMMON
&&
reason_effect
->
code
!=
EFFECT_CANNOT_DISABLE_SPSUMMON
)
if
(
is_status
(
STATUS_SUMMONING
)
)
return
FALSE
;
return
reason_effect
&&
(
reason_effect
->
code
==
EFFECT_CANNOT_DISABLE_SUMMON
||
reason_effect
->
code
==
EFFECT_CANNOT_DISABLE_SPSUMMON
);
if
(
!
reason_effect
||
reason_effect
->
is_flag
(
EFFECT_FLAG_IGNORE_IMMUNE
))
if
(
!
reason_effect
||
reason_effect
->
is_flag
(
EFFECT_FLAG_IGNORE_IMMUNE
))
return
TRUE
;
return
TRUE
;
if
(
reason_effect
->
is_immuned
(
this
))
if
(
reason_effect
->
is_immuned
(
this
))
...
...
effectset.h
View file @
b75cb0e2
...
@@ -16,6 +16,7 @@ class effect;
...
@@ -16,6 +16,7 @@ class effect;
bool
effect_sort_id
(
const
effect
*
e1
,
const
effect
*
e2
);
bool
effect_sort_id
(
const
effect
*
e1
,
const
effect
*
e2
);
// std::array<effect*, 64>
struct
effect_set
{
struct
effect_set
{
void
add_item
(
effect
*
peffect
)
{
void
add_item
(
effect
*
peffect
)
{
if
(
count
>=
64
)
if
(
count
>=
64
)
...
...
operations.cpp
View file @
b75cb0e2
...
@@ -1865,6 +1865,16 @@ int32 field::summon(uint16 step, uint8 sumplayer, card* target, effect* proc, ui
...
@@ -1865,6 +1865,16 @@ int32 field::summon(uint16 step, uint8 sumplayer, card* target, effect* proc, ui
core
.
phase_action
=
TRUE
;
core
.
phase_action
=
TRUE
;
target
->
current
.
reason
=
REASON_SUMMON
;
target
->
current
.
reason
=
REASON_SUMMON
;
target
->
summon_player
=
sumplayer
;
target
->
summon_player
=
sumplayer
;
if
(
core
.
current_chain
.
size
()
==
0
)
{
if
(
core
.
is_gemini_summoning
)
{
target
->
set_status
(
STATUS_SUMMONING
,
FALSE
);
target
->
set_status
(
STATUS_FLIP_SUMMONING
,
TRUE
);
}
else
{
target
->
set_status
(
STATUS_SUMMONING
,
TRUE
);
target
->
set_status
(
STATUS_FLIP_SUMMONING
,
FALSE
);
}
}
pduel
->
write_buffer8
(
MSG_SUMMONING
);
pduel
->
write_buffer8
(
MSG_SUMMONING
);
pduel
->
write_buffer32
(
target
->
data
.
code
);
pduel
->
write_buffer32
(
target
->
data
.
code
);
pduel
->
write_buffer32
(
target
->
get_info_location
());
pduel
->
write_buffer32
(
target
->
get_info_location
());
...
@@ -1889,14 +1899,6 @@ int32 field::summon(uint16 step, uint8 sumplayer, card* target, effect* proc, ui
...
@@ -1889,14 +1899,6 @@ int32 field::summon(uint16 step, uint8 sumplayer, card* target, effect* proc, ui
return
FALSE
;
return
FALSE
;
}
}
case
13
:
{
case
13
:
{
if
(
core
.
is_gemini_summoning
)
{
target
->
set_status
(
STATUS_SUMMONING
,
FALSE
);
target
->
set_status
(
STATUS_FLIP_SUMMONING
,
TRUE
);
}
else
{
target
->
set_status
(
STATUS_SUMMONING
,
TRUE
);
target
->
set_status
(
STATUS_FLIP_SUMMONING
,
FALSE
);
}
target
->
set_status
(
STATUS_SUMMON_DISABLED
,
FALSE
);
target
->
set_status
(
STATUS_SUMMON_DISABLED
,
FALSE
);
target
->
set_status
(
STATUS_FLIP_SUMMON_DISABLED
,
FALSE
);
target
->
set_status
(
STATUS_FLIP_SUMMON_DISABLED
,
FALSE
);
raise_event
(
target
,
EVENT_SUMMON
,
proc
,
0
,
sumplayer
,
sumplayer
,
0
);
raise_event
(
target
,
EVENT_SUMMON
,
proc
,
0
,
sumplayer
,
sumplayer
,
0
);
...
@@ -2860,6 +2862,7 @@ int32 field::special_summon_rule(uint16 step, uint8 sumplayer, card* target, uin
...
@@ -2860,6 +2862,7 @@ int32 field::special_summon_rule(uint16 step, uint8 sumplayer, card* target, uin
set_control
(
target
,
target
->
current
.
controler
,
0
,
0
);
set_control
(
target
,
target
->
current
.
controler
,
0
,
0
);
core
.
phase_action
=
TRUE
;
core
.
phase_action
=
TRUE
;
target
->
current
.
reason_effect
=
core
.
units
.
begin
()
->
peffect
;
target
->
current
.
reason_effect
=
core
.
units
.
begin
()
->
peffect
;
target
->
set_status
(
STATUS_SUMMONING
,
TRUE
);
pduel
->
write_buffer8
(
MSG_SPSUMMONING
);
pduel
->
write_buffer8
(
MSG_SPSUMMONING
);
pduel
->
write_buffer32
(
target
->
data
.
code
);
pduel
->
write_buffer32
(
target
->
data
.
code
);
pduel
->
write_buffer32
(
target
->
get_info_location
());
pduel
->
write_buffer32
(
target
->
get_info_location
());
...
@@ -2897,7 +2900,6 @@ int32 field::special_summon_rule(uint16 step, uint8 sumplayer, card* target, uin
...
@@ -2897,7 +2900,6 @@ int32 field::special_summon_rule(uint16 step, uint8 sumplayer, card* target, uin
return
FALSE
;
return
FALSE
;
}
}
case
10
:
{
case
10
:
{
target
->
set_status
(
STATUS_SUMMONING
,
TRUE
);
target
->
set_status
(
STATUS_SUMMON_DISABLED
,
FALSE
);
target
->
set_status
(
STATUS_SUMMON_DISABLED
,
FALSE
);
raise_event
(
target
,
EVENT_SPSUMMON
,
core
.
units
.
begin
()
->
peffect
,
0
,
sumplayer
,
sumplayer
,
0
);
raise_event
(
target
,
EVENT_SPSUMMON
,
core
.
units
.
begin
()
->
peffect
,
0
,
sumplayer
,
sumplayer
,
0
);
process_instant_event
();
process_instant_event
();
...
@@ -3070,13 +3072,14 @@ int32 field::special_summon_rule(uint16 step, uint8 sumplayer, card* target, uin
...
@@ -3070,13 +3072,14 @@ int32 field::special_summon_rule(uint16 step, uint8 sumplayer, card* target, uin
}
}
card
*
pcard
=
*
pgroup
->
it
;
card
*
pcard
=
*
pgroup
->
it
;
++
pgroup
->
it
;
++
pgroup
->
it
;
set_control
(
pcard
,
pcard
->
current
.
controler
,
0
,
0
);
pcard
->
set_status
(
STATUS_SUMMONING
,
TRUE
);
pduel
->
write_buffer8
(
MSG_SPSUMMONING
);
pduel
->
write_buffer8
(
MSG_SPSUMMONING
);
pduel
->
write_buffer32
(
pcard
->
data
.
code
);
pduel
->
write_buffer32
(
pcard
->
data
.
code
);
pduel
->
write_buffer8
(
pcard
->
current
.
controler
);
pduel
->
write_buffer8
(
pcard
->
current
.
controler
);
pduel
->
write_buffer8
(
pcard
->
current
.
location
);
pduel
->
write_buffer8
(
pcard
->
current
.
location
);
pduel
->
write_buffer8
(
pcard
->
current
.
sequence
);
pduel
->
write_buffer8
(
pcard
->
current
.
sequence
);
pduel
->
write_buffer8
(
pcard
->
current
.
position
);
pduel
->
write_buffer8
(
pcard
->
current
.
position
);
set_control
(
pcard
,
pcard
->
current
.
controler
,
0
,
0
);
if
(
pgroup
->
it
!=
pgroup
->
container
.
end
())
if
(
pgroup
->
it
!=
pgroup
->
container
.
end
())
core
.
units
.
begin
()
->
step
=
22
;
core
.
units
.
begin
()
->
step
=
22
;
return
FALSE
;
return
FALSE
;
...
@@ -3085,7 +3088,6 @@ int32 field::special_summon_rule(uint16 step, uint8 sumplayer, card* target, uin
...
@@ -3085,7 +3088,6 @@ int32 field::special_summon_rule(uint16 step, uint8 sumplayer, card* target, uin
group
*
pgroup
=
core
.
units
.
begin
()
->
ptarget
;
group
*
pgroup
=
core
.
units
.
begin
()
->
ptarget
;
card_set
cset
;
card_set
cset
;
for
(
auto
&
pcard
:
pgroup
->
container
)
{
for
(
auto
&
pcard
:
pgroup
->
container
)
{
pcard
->
set_status
(
STATUS_SUMMONING
,
TRUE
);
if
(
!
pcard
->
is_affected_by_effect
(
EFFECT_CANNOT_DISABLE_SPSUMMON
))
{
if
(
!
pcard
->
is_affected_by_effect
(
EFFECT_CANNOT_DISABLE_SPSUMMON
))
{
cset
.
insert
(
pcard
);
cset
.
insert
(
pcard
);
}
}
...
...
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