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
7124d8a0
Commit
7124d8a0
authored
Feb 21, 2016
by
salix5
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
field::solve_continuous()
EFFECT_FLAG_DELAY: delayed to next solved chain/continuous effect
parent
76e3690e
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
31 additions
and
32 deletions
+31
-32
processor.cpp
processor.cpp
+31
-32
No files found.
processor.cpp
View file @
7124d8a0
...
...
@@ -2209,7 +2209,7 @@ int32 field::process_instant_event() {
peffect
=
pr
.
first
->
second
;
uint8
owner_player
=
peffect
->
get_handler_player
();
if
(
peffect
->
is_activateable
(
owner_player
,
*
elit
))
{
if(
(peffect->is_flag(EFFECT_FLAG_DELAY)
) && (core.chain_solving || core.conti_solving)) {
if
(
peffect
->
is_flag
(
EFFECT_FLAG_DELAY
)
&&
(
core
.
chain_solving
||
core
.
conti_solving
))
{
if
(
owner_player
==
infos
.
turn_player
)
{
core
.
delayed_tp
.
push_back
(
peffect
);
core
.
delayed_tev
.
push_back
(
*
elit
);
...
...
@@ -2344,7 +2344,7 @@ int32 field::process_single_event() {
if
(
peffect
->
type
&
EFFECT_TYPE_CONTINUOUS
)
{
uint8
owner_player
=
peffect
->
get_handler_player
();
if
(
peffect
->
is_activateable
(
owner_player
,
e
))
{
if(
(peffect->is_flag(EFFECT_FLAG_DELAY)
) && (core.chain_solving || core.conti_solving)) {
if
(
peffect
->
is_flag
(
EFFECT_FLAG_DELAY
)
&&
(
core
.
chain_solving
||
core
.
conti_solving
))
{
if
(
owner_player
==
infos
.
turn_player
)
{
core
.
delayed_tp
.
push_back
(
peffect
);
core
.
delayed_tev
.
push_back
(
e
);
...
...
@@ -4441,8 +4441,7 @@ int32 field::solve_continuous(uint16 step, effect * peffect, uint8 triggering_pl
newchain
.
disable_reason
=
0
;
newchain
.
flag
=
0
;
core
.
continuous_chain
.
push_back
(
newchain
);
if(peffect->is_flag(EFFECT_FLAG_DELAY))
core.conti_solving = TRUE;
core
.
conti_solving
=
TRUE
;
if
(
!
peffect
->
target
)
return
FALSE
;
core
.
sub_solving_event
.
push_back
(
core
.
solving_event
.
front
());
...
...
@@ -4469,36 +4468,36 @@ int32 field::solve_continuous(uint16 step, effect * peffect, uint8 triggering_pl
}
core
.
continuous_chain
.
pop_back
();
core
.
solving_event
.
pop_front
();
if(peffect->is_flag(EFFECT_FLAG_DELAY)) {
core.conti_solving = FALSE;
adjust_all();
if(core.conti_player == infos.turn_player) {
if(core.delayed_tp.size()) {
core.sub_solving_event.push_back(core.delayed_tev.front());
add_process(PROCESSOR_SOLVE_CONTINUOUS, 0, core.delayed_tp.front(), 0, infos.turn_player, 0);
core.delayed_tp.pop_front();
core.delayed_tev.pop_front();
}
else
core.conti_player = 1 - infos.turn_player;
core
.
conti_solving
=
FALSE
;
adjust_all
();
if
(
core
.
conti_player
==
PLAYER_NONE
)
core
.
conti_player
=
infos
.
turn_player
;
if
(
core
.
conti_player
==
infos
.
turn_player
)
{
if
(
core
.
delayed_tp
.
size
())
{
core
.
sub_solving_event
.
push_back
(
core
.
delayed_tev
.
front
());
add_process
(
PROCESSOR_SOLVE_CONTINUOUS
,
0
,
core
.
delayed_tp
.
front
(),
0
,
infos
.
turn_player
,
0
);
core
.
delayed_tp
.
pop_front
();
core
.
delayed_tev
.
pop_front
();
}
if(core.conti_player == 1 - infos.turn_player) {
if(core.delayed_ntp.size()) {
core.sub_solving_event.push_back(core.delayed_ntev.front());
add_process(PROCESSOR_SOLVE_CONTINUOUS, 0, core.delayed_ntp.front(), 0, 1 - infos.turn_player, 0);
core.delayed_ntp.pop_front();
core.delayed_ntev.pop_front();
}
else if(core.delayed_tp.size()) {
core.conti_player = infos.turn_player;
core.sub_solving_event.push_back(core.delayed_tev.front());
add_process(PROCESSOR_SOLVE_CONTINUOUS, 0, core.delayed_tp.front(), 0, infos.turn_player, 0);
core.delayed_tp.pop_front();
core.delayed_tev.pop_front();
}
else
core.conti_player = PLAYER_NONE;
else
core
.
conti_player
=
1
-
infos
.
turn_player
;
}
if
(
core
.
conti_player
==
1
-
infos
.
turn_player
)
{
if
(
core
.
delayed_ntp
.
size
())
{
core
.
sub_solving_event
.
push_back
(
core
.
delayed_ntev
.
front
());
add_process
(
PROCESSOR_SOLVE_CONTINUOUS
,
0
,
core
.
delayed_ntp
.
front
(),
0
,
1
-
infos
.
turn_player
,
0
);
core
.
delayed_ntp
.
pop_front
();
core
.
delayed_ntev
.
pop_front
();
}
else
if
(
core
.
delayed_tp
.
size
())
{
core
.
conti_player
=
infos
.
turn_player
;
core
.
sub_solving_event
.
push_back
(
core
.
delayed_tev
.
front
());
add_process
(
PROCESSOR_SOLVE_CONTINUOUS
,
0
,
core
.
delayed_tp
.
front
(),
0
,
infos
.
turn_player
,
0
);
core
.
delayed_tp
.
pop_front
();
core
.
delayed_tev
.
pop_front
();
}
else
core
.
conti_player
=
PLAYER_NONE
;
}
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