diff --git a/zone/aura.cpp b/zone/aura.cpp index 0812a8109..4df64b154 100644 --- a/zone/aura.cpp +++ b/zone/aura.cpp @@ -583,14 +583,27 @@ bool Aura::Process() if (movement_type == AuraMovement::Follow && GetPosition() != owner->GetPosition() && movement_timer.Check()) { m_Position = owner->GetPosition(); - SendPositionUpdate(); + auto app = new EQApplicationPacket(OP_ClientUpdate, sizeof(PlayerPositionUpdateServer_Struct)); + auto spu = (PlayerPositionUpdateServer_Struct*)app->pBuffer; + MakeSpawnUpdate(spu); + auto it = spawned_for.begin(); + while (it != spawned_for.end()) { + auto client = entity_list.GetClientByID(*it); + if (client) { + client->QueuePacket(app); + ++it; + } else { + it = spawned_for.erase(it); + } + } } // TODO: waypoints? if (!process_timer.Check()) return true; - ProcessSpawns(); // bit of a hack + if (spawn_type != AuraSpawns::Noone) + ProcessSpawns(); // bit of a hack if (process_func) process_func(*this, owner); diff --git a/zone/aura.h b/zone/aura.h index 7156f7531..ff4f2d51c 100644 --- a/zone/aura.h +++ b/zone/aura.h @@ -41,6 +41,7 @@ enum class AuraMovement { class Aura : public NPC { + // NOTE: We may have to override more virtual functions if they're causing issues public: Aura(NPCType *type_data, Mob *owner, AuraRecord &record); ~Aura() { };