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
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-core
Commits
afb4a624
Commit
afb4a624
authored
Dec 07, 2016
by
DailyShana
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix solve continuous
parent
8a15b9e7
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
33 additions
and
31 deletions
+33
-31
processor.cpp
processor.cpp
+33
-31
No files found.
processor.cpp
View file @
afb4a624
...
...
@@ -2108,17 +2108,17 @@ int32 field::process_quick_effect(int16 step, int32 skip_freechain, uint8 priori
core
.
select_chains
.
push_back
(
*
clit
);
}
//delayed activate
for
(
auto
e
vit
=
core
.
full_event
.
begin
();
evit
!=
core
.
full_event
.
end
();
++
ev
it
)
{
auto
pr
=
effects
.
activate_effect
.
equal_range
(
e
v
it
->
event_code
);
for
(
auto
e
it
=
core
.
full_event
.
begin
();
eit
!=
core
.
full_event
.
end
();
++
e
it
)
{
auto
pr
=
effects
.
activate_effect
.
equal_range
(
eit
->
event_code
);
for
(;
pr
.
first
!=
pr
.
second
;
++
pr
.
first
)
{
effect
*
peffect
=
pr
.
first
->
second
;
card
*
phandler
=
peffect
->
get_handler
();
peffect
->
s_range
=
phandler
->
current
.
location
;
peffect
->
o_range
=
phandler
->
current
.
sequence
;
if
(
peffect
->
is_flag
(
EFFECT_FLAG_DELAY
)
&&
peffect
->
is_chainable
(
priority
)
&&
peffect
->
is_activateable
(
priority
,
*
e
v
it
))
{
if
(
peffect
->
is_flag
(
EFFECT_FLAG_DELAY
)
&&
peffect
->
is_chainable
(
priority
)
&&
peffect
->
is_activateable
(
priority
,
*
eit
))
{
newchain
.
flag
=
0
;
newchain
.
chain_id
=
infos
.
field_id
++
;
newchain
.
evt
=
*
e
v
it
;
newchain
.
evt
=
*
eit
;
newchain
.
triggering_controler
=
phandler
->
current
.
controler
;
newchain
.
triggering_effect
=
peffect
;
newchain
.
triggering_location
=
phandler
->
current
.
location
;
...
...
@@ -4500,32 +4500,36 @@ int32 field::solve_continuous(uint16 step, effect * peffect, uint8 triggering_pl
if
(
peffect
->
is_flag
(
EFFECT_FLAG_DELAY
)
||
!
(
peffect
->
code
&
0x10030000
)
&&
(
peffect
->
code
&
(
EVENT_PHASE
|
EVENT_PHASE_START
)))
{
core
.
conti_solving
=
FALSE
;
adjust_all
();
if
(
core
.
conti_player
==
PLAYER_NONE
)
return
FALSE
;
}
return
TRUE
;
}
case
4
:
{
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
();
}
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
;
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
;
}
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
;
}
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
;
}
...
...
@@ -4671,8 +4675,6 @@ int32 field::solve_chain(uint16 step, uint32 chainend_arg1, uint32 chainend_arg2
core
.
spsummon_state_count_tmp
[
0
]
=
0
;
core
.
spsummon_state_count_tmp
[
1
]
=
0
;
core
.
chain_solving
=
FALSE
;
effect_vector
::
iterator
eit
;
event_list
::
iterator
evit
;
if
(
core
.
delayed_tp
.
size
())
{
core
.
conti_player
=
infos
.
turn_player
;
core
.
sub_solving_event
.
push_back
(
core
.
delayed_tev
.
front
());
...
...
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