diff --git a/zone/embparser.cpp b/zone/embparser.cpp index 1b86ef3e4..6df98d807 100644 --- a/zone/embparser.cpp +++ b/zone/embparser.cpp @@ -1024,7 +1024,8 @@ int PerlembParser::SendCommands( "merc", "npc", "questitem", - "spell" + "spell", + "zone" }; for (const auto& suffix : suffixes) { @@ -1103,7 +1104,8 @@ int PerlembParser::SendCommands( "merc", "npc", "questitem", - "spell" + "spell", + "zone" }; for (const auto& suffix : suffixes) { diff --git a/zone/questmgr.cpp b/zone/questmgr.cpp index 8f95a93cf..cf6f3d653 100644 --- a/zone/questmgr.cpp +++ b/zone/questmgr.cpp @@ -147,10 +147,6 @@ void QuestManager::EndQuest() { run.owner->Depop(); } - if (run.zone && run.zone == zone) { - zone->StopAllTimers(); - } - m_running_quests.pop(); } diff --git a/zone/zone.cpp b/zone/zone.cpp index e44921657..ade8b7fb4 100644 --- a/zone/zone.cpp +++ b/zone/zone.cpp @@ -3511,12 +3511,12 @@ void Zone::StopAllTimers() const bool has_stop_event = parse->ZoneHasQuestSub(EVENT_TIMER_STOP); - for (auto e = zone_timers.begin(); e != zone_timers.end(); e++) { + for (auto e = zone_timers.begin(); e != zone_timers.end();) { if (has_stop_event) { parse->EventZone(EVENT_TIMER_STOP, this, e->name); } - zone_timers.erase(e); + e = zone_timers.erase(e); } }