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
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
...
@@ -2108,17 +2108,17 @@ int32 field::process_quick_effect(int16 step, int32 skip_freechain, uint8 priori
core.select_chains.push_back(*clit);
core.select_chains.push_back(*clit);
}
}
//delayed activate
//delayed activate
for
(
auto
e
vit
=
core
.
full_event
.
begin
();
evit
!=
core
.
full_event
.
end
();
++
ev
it
)
{
for(auto e
it = core.full_event.begin(); eit != core.full_event.end(); ++e
it) {
auto
pr
=
effects
.
activate_effect
.
equal_range
(
e
v
it
->
event_code
);
auto pr = effects.activate_effect.equal_range(eit->event_code);
for(; pr.first != pr.second; ++pr.first) {
for(; pr.first != pr.second; ++pr.first) {
effect* peffect = pr.first->second;
effect* peffect = pr.first->second;
card* phandler = peffect->get_handler();
card* phandler = peffect->get_handler();
peffect->s_range = phandler->current.location;
peffect->s_range = phandler->current.location;
peffect->o_range = phandler->current.sequence;
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.flag = 0;
newchain.chain_id = infos.field_id++;
newchain.chain_id = infos.field_id++;
newchain
.
evt
=
*
e
v
it
;
newchain.evt = *eit;
newchain.triggering_controler = phandler->current.controler;
newchain.triggering_controler = phandler->current.controler;
newchain.triggering_effect = peffect;
newchain.triggering_effect = peffect;
newchain.triggering_location = phandler->current.location;
newchain.triggering_location = phandler->current.location;
...
@@ -4500,32 +4500,36 @@ int32 field::solve_continuous(uint16 step, effect * peffect, uint8 triggering_pl
...
@@ -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))) {
if(peffect->is_flag(EFFECT_FLAG_DELAY) || !(peffect->code & 0x10030000) && (peffect->code & (EVENT_PHASE | EVENT_PHASE_START))) {
core.conti_solving = FALSE;
core.conti_solving = FALSE;
adjust_all();
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;
core.conti_player = infos.turn_player;
if
(
core
.
conti_player
==
infos
.
turn_player
)
{
core.sub_solving_event.push_back(core.delayed_tev.front());
if
(
core
.
delayed_tp
.
size
())
{
add_process(PROCESSOR_SOLVE_CONTINUOUS, 0, core.delayed_tp.front(), 0, infos.turn_player, 0);
core
.
sub_solving_event
.
push_back
(
core
.
delayed_tev
.
front
());
core.delayed_tp.pop_front();
add_process
(
PROCESSOR_SOLVE_CONTINUOUS
,
0
,
core
.
delayed_tp
.
front
(),
0
,
infos
.
turn_player
,
0
);
core.delayed_tev.pop_front();
core
.
delayed_tp
.
pop_front
();
} else
core
.
delayed_tev
.
pop_front
();
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;
return TRUE;
}
}
...
@@ -4671,8 +4675,6 @@ int32 field::solve_chain(uint16 step, uint32 chainend_arg1, uint32 chainend_arg2
...
@@ -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[0] = 0;
core.spsummon_state_count_tmp[1] = 0;
core.spsummon_state_count_tmp[1] = 0;
core.chain_solving = FALSE;
core.chain_solving = FALSE;
effect_vector
::
iterator
eit
;
event_list
::
iterator
evit
;
if(core.delayed_tp.size()) {
if(core.delayed_tp.size()) {
core.conti_player = infos.turn_player;
core.conti_player = infos.turn_player;
core.sub_solving_event.push_back(core.delayed_tev.front());
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