Commit aaad6820 authored by DailyShana's avatar DailyShana

fix delayed activate effect

triggered by event raised during adding chains should activate after chain end
parent 56b6f83e
...@@ -185,6 +185,7 @@ struct processor { ...@@ -185,6 +185,7 @@ struct processor {
event_list point_event; event_list point_event;
event_list instant_event; event_list instant_event;
event_list queue_event; event_list queue_event;
event_list delayed_activate_event;
event_list full_event; event_list full_event;
event_list used_event; event_list used_event;
event_list single_event; event_list single_event;
......
...@@ -1262,6 +1262,7 @@ int32 field::process_phase_event(int16 step, int32 phase) { ...@@ -1262,6 +1262,7 @@ int32 field::process_phase_event(int16 step, int32 phase) {
core.quick_f_chain.clear(); core.quick_f_chain.clear();
core.instant_event.clear(); core.instant_event.clear();
core.point_event.clear(); core.point_event.clear();
core.delayed_activate_event.clear();
core.full_event.clear(); core.full_event.clear();
return TRUE; return TRUE;
} }
...@@ -1273,6 +1274,7 @@ int32 field::process_point_event(int16 step, int32 skip_trigger, int32 skip_free ...@@ -1273,6 +1274,7 @@ int32 field::process_point_event(int16 step, int32 skip_trigger, int32 skip_free
case 0: { case 0: {
core.select_chains.clear(); core.select_chains.clear();
core.point_event.splice(core.point_event.end(), core.instant_event); core.point_event.splice(core.point_event.end(), core.instant_event);
core.full_event.splice(core.full_event.end(), core.delayed_activate_event);
if(skip_trigger) { if(skip_trigger) {
core.units.begin()->step = 7; core.units.begin()->step = 7;
return FALSE; return FALSE;
...@@ -1879,7 +1881,7 @@ int32 field::process_instant_event() { ...@@ -1879,7 +1881,7 @@ int32 field::process_instant_event() {
} }
} }
// delayed activate effect // delayed activate effect
core.full_event.push_back(ev); core.delayed_activate_event.push_back(ev);
// delayed quick effect // delayed quick effect
pr = effects.quick_o_effect.equal_range(ev.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;) {
......
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