From 06525cdc1e79cc041583af40b9f923adb7996d64 Mon Sep 17 00:00:00 2001 From: avarishd <46330494+avarishd@users.noreply.github.com> Date: Wed, 13 Dec 2023 21:24:52 +0200 Subject: [PATCH] feat(Core/Object): Play radius sound/music. (#18011) --- src/server/game/Entities/Object/Object.cpp | 32 ++++++++++++++++++++++ src/server/game/Entities/Object/Object.h | 2 ++ 2 files changed, 34 insertions(+) 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);