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
3028b766
Commit
3028b766
authored
Jan 13, 2020
by
DailyShana
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
avoid comparing iterators of different lists
parent
39906673
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
34 additions
and
34 deletions
+34
-34
processor.cpp
processor.cpp
+34
-34
No files found.
processor.cpp
View file @
3028b766
...
@@ -1606,41 +1606,41 @@ int32 field::process_quick_effect(int16 step, int32 skip_freechain, uint8 priori
...
@@ -1606,41 +1606,41 @@ int32 field::process_quick_effect(int16 step, int32 skip_freechain, uint8 priori
chain newchain;
chain newchain;
if(core.ignition_priority_chains.size())
if(core.ignition_priority_chains.size())
core.select_chains.swap(core.ignition_priority_chains);
core.select_chains.swap(core.ignition_priority_chains);
for
(
auto
evit
=
core
.
point_event
.
begin
();
evit
!=
core
.
instant_event
.
end
();
++
evit
)
{
for(const auto* ev_list : { &core.point_event, &core.instant_event }) {
if
(
evit
==
core
.
point_event
.
end
())
for(const auto& ev : *ev_list) {
evit
=
core
.
instant_event
.
begin
();
auto pr = effects.activate_effect.equal_range(ev.event_code);
auto
pr
=
effects
.
activate_effect
.
equal_range
(
evit
->
event_code
);
for(auto eit = pr.first; eit != pr.second;) {
for(auto eit = pr.first; eit != pr.second;) {
effect* peffect = eit->second;
effect* peffect = eit->second;
++eit;
++eit;
peffect->set_activate_location();
peffect->set_activate_location();
if
(
!
peffect
->
is_flag
(
EFFECT_FLAG_DELAY
)
&&
peffect
->
is_chainable
(
priority
)
&&
peffect
->
is_activateable
(
priority
,
*
evit
))
{
if(!peffect->is_flag(EFFECT_FLAG_DELAY) && peffect->is_chainable(priority) && peffect->is_activateable(priority, ev
)) {
card* phandler = peffect->get_handler();
card* phandler = peffect->get_handler();
newchain.flag = 0;
newchain.flag = 0;
newchain.chain_id = infos.field_id++;
newchain.chain_id = infos.field_id++;
newchain
.
evt
=
*
evit
;
newchain.evt = ev
;
newchain.triggering_effect = peffect;
newchain.triggering_effect = peffect;
newchain.set_triggering_state(phandler);
newchain.set_triggering_state(phandler);
newchain.triggering_player = priority;
newchain.triggering_player = priority;
core.select_chains.push_back(newchain);
core.select_chains.push_back(newchain);
}
}
}
}
pr
=
effects
.
quick_o_effect
.
equal_range
(
evit
->
event_code
);
pr = effects.quick_o_effect.equal_range(ev.
event_code);
for(auto eit = pr.first; eit != pr.second;) {
for(auto eit = pr.first; eit != pr.second;) {
effect* peffect = eit->second;
effect* peffect = eit->second;
++eit;
++eit;
peffect->set_activate_location();
peffect->set_activate_location();
if
(
peffect
->
is_chainable
(
priority
)
&&
peffect
->
is_activateable
(
priority
,
*
evit
))
{
if(peffect->is_chainable(priority) && peffect->is_activateable(priority, ev
)) {
card* phandler = peffect->get_handler();
card* phandler = peffect->get_handler();
newchain.flag = 0;
newchain.flag = 0;
newchain.chain_id = infos.field_id++;
newchain.chain_id = infos.field_id++;
newchain
.
evt
=
*
evit
;
newchain.evt = ev
;
newchain.triggering_effect = peffect;
newchain.triggering_effect = peffect;
newchain.set_triggering_state(phandler);
newchain.set_triggering_state(phandler);
newchain.triggering_player = priority;
newchain.triggering_player = priority;
core.select_chains.push_back(newchain);
core.select_chains.push_back(newchain);
core
.
delayed_quick_tmp
.
erase
(
std
::
make_pair
(
peffect
,
*
evit
));
core.delayed_quick_tmp.erase(std::make_pair(peffect, ev));
core
.
delayed_quick_break
.
erase
(
std
::
make_pair
(
peffect
,
*
evit
));
core.delayed_quick_break.erase(std::make_pair(peffect, ev));
}
}
}
}
}
}
}
...
...
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