diff --git a/zone/bot.cpp b/zone/bot.cpp index 836e642a5..86b075174 100644 --- a/zone/bot.cpp +++ b/zone/bot.cpp @@ -8521,6 +8521,9 @@ Client* EntityList::GetBotOwnerByBotID(const uint32 bot_id) { void EntityList::AddBot(Bot *new_bot, bool send_spawn_packet, bool dont_queue) { if (new_bot) { new_bot->SetID(GetFreeID()); + bot_list.push_back(new_bot); + mob_list.insert(std::pair(new_bot->GetID(), new_bot)); + parse->EventBot(EVENT_SPAWN, new_bot, nullptr, "", 0); new_bot->SetSpawned(); if (send_spawn_packet) { if (dont_queue) { @@ -8538,11 +8541,6 @@ void EntityList::AddBot(Bot *new_bot, bool send_spawn_packet, bool dont_queue) { } } - bot_list.push_back(new_bot); - mob_list.insert(std::pair(new_bot->GetID(), new_bot)); - - parse->EventBot(EVENT_SPAWN, new_bot, nullptr, "", 0); - new_bot->DispatchZoneControllerEvent(EVENT_SPAWN_ZONE, new_bot, "", 0, nullptr); } } diff --git a/zone/entity.cpp b/zone/entity.cpp index f4691b9e5..49594bcb2 100644 --- a/zone/entity.cpp +++ b/zone/entity.cpp @@ -697,7 +697,12 @@ void EntityList::AddNPC(NPC *npc, bool send_spawn_packet, bool dont_queue) owner->SetPetID(npc->GetID()); } } - + + npc_list.insert(std::pair(npc->GetID(), npc)); + mob_list.insert(std::pair(npc->GetID(), npc)); + + parse->EventNPC(EVENT_SPAWN, npc, nullptr, "", 0); + const auto emote_id = npc->GetEmoteID(); if (emote_id != 0) { npc->DoNPCEmote(EQ::constants::EmoteEventTypes::OnSpawn, emote_id); @@ -731,11 +736,6 @@ void EntityList::AddNPC(NPC *npc, bool send_spawn_packet, bool dont_queue) } } - npc_list.insert(std::pair(npc->GetID(), npc)); - mob_list.insert(std::pair(npc->GetID(), npc)); - - parse->EventNPC(EVENT_SPAWN, npc, nullptr, "", 0); - entity_list.ScanCloseMobs(npc->close_mobs, npc, true); npc->DispatchZoneControllerEvent(EVENT_SPAWN_ZONE, npc, "", 0, nullptr);