diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index fcd748008..368f814ae 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -2883,6 +2883,22 @@ void WorldObject::PlayDirectSound(uint32 sound_id, Player* target /*= nullptr*/) SendMessageToSet(WorldPackets::Misc::Playsound(sound_id).Write(), true); } +void WorldObject::PlayRadiusSound(uint32 sound_id, float radius) +{ + std::list targets; + Acore::AnyPlayerInObjectRangeCheck check(this, radius, false); + Acore::PlayerListSearcher searcher(this, targets, check); + Cell::VisitWorldObjects(this, searcher, radius); + + for (Player* player : targets) + { + if (player) + { + player->SendDirectMessage(WorldPackets::Misc::Playsound(sound_id).Write()); + } + } +} + void WorldObject::PlayDirectMusic(uint32 music_id, Player* target /*= nullptr*/) { if (target) @@ -2895,6 +2911,22 @@ void WorldObject::PlayDirectMusic(uint32 music_id, Player* target /*= nullptr*/) } } +void WorldObject::PlayRadiusMusic(uint32 music_id, float radius) +{ + std::list targets; + Acore::AnyPlayerInObjectRangeCheck check(this, radius, false); + Acore::PlayerListSearcher searcher(this, targets, check); + Cell::VisitWorldObjects(this, searcher, radius); + + for (Player* player : targets) + { + if (player) + { + player->SendDirectMessage(WorldPackets::Misc::PlayMusic(music_id).Write()); + } + } +} + void WorldObject::DestroyForNearbyPlayers() { if (!IsInWorld()) diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index 8a75f3d87..3547b36ce 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -487,7 +487,9 @@ public: void PlayDistanceSound(uint32 sound_id, Player* target = nullptr); void PlayDirectSound(uint32 sound_id, Player* target = nullptr); + void PlayRadiusSound(uint32 sound_id, float radius); void PlayDirectMusic(uint32 music_id, Player* target = nullptr); + void PlayRadiusMusic(uint32 music_id, float radius); void SendObjectDeSpawnAnim(ObjectGuid guid);