148c148
< typedef std::set<ScEvent *> ScEvents;
---
> typedef std::list<ScEvent *> ScEvents;
229,230d228
< event->schedule(tick);
<
233c231
< deltas.insert(event);
---
> event->schedule(deltas, tick);
244c242
< ts->events.insert(event);
---
> event->schedule(ts->events, tick);
251,256c249,253
< if (event->when() == getCurTick()) {
< // Attempt to remove from delta notifications.
< if (deltas.erase(event) == 1) {
< event->deschedule();
< return;
< }
---
> ScEvents *on = event->scheduledOn();
>
> if (on == &deltas) {
> event->deschedule();
> return;
265c262
< assert(events.erase(event));
---
> assert(on == &events);
427,428c424,425
< for (auto &e: events)
< e->run();
---
> while (!events.empty())
> events.front()->run();