Commit 3028b766 authored by DailyShana's avatar DailyShana

avoid comparing iterators of different lists

parent 39906673
...@@ -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, ev)) {
if(!peffect->is_flag(EFFECT_FLAG_DELAY) && peffect->is_chainable(priority) && peffect->is_activateable(priority, *evit)) { 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 = ev;
newchain.evt = *evit; 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(ev.event_code);
pr = effects.quick_o_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_chainable(priority) && peffect->is_activateable(priority, ev)) {
if(peffect->is_chainable(priority) && peffect->is_activateable(priority, *evit)) { 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 = ev;
newchain.evt = *evit; 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, ev));
core.delayed_quick_tmp.erase(std::make_pair(peffect, *evit)); core.delayed_quick_break.erase(std::make_pair(peffect, ev));
core.delayed_quick_break.erase(std::make_pair(peffect, *evit)); }
} }
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment