aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Object/Object.cpp16
-rw-r--r--src/server/game/Entities/Object/Object.h9
-rw-r--r--src/server/game/Server/Packets/MiscPackets.cpp7
-rw-r--r--src/server/game/Server/Packets/MiscPackets.h14
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp2
5 files changed, 37 insertions, 11 deletions
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp
index cffc9b1eae7..f86485a44bb 100644
--- a/src/server/game/Entities/Object/Object.cpp
+++ b/src/server/game/Entities/Object/Object.cpp
@@ -3561,7 +3561,7 @@ void WorldObject::MovePositionToFirstCollision(Position &pos, float dist, float
}
}
-void WorldObject::PlayDistanceSound(uint32 soundId, Player* target /*= nullptr*/)
+void WorldObject::PlayDistanceSound(uint32 soundId, Player const* target /*= nullptr*/) const
{
if (target)
target->SendDirectMessage(WorldPackets::Misc::PlaySpeakerbotSound(GetGUID(), soundId).Write());
@@ -3569,7 +3569,15 @@ void WorldObject::PlayDistanceSound(uint32 soundId, Player* target /*= nullptr*/
SendMessageToSet(WorldPackets::Misc::PlaySpeakerbotSound(GetGUID(), soundId).Write(), true);
}
-void WorldObject::PlayDirectSound(uint32 soundId, Player* target /*= nullptr*/, uint32 broadcastTextId /*= 0*/)
+void WorldObject::StopDistanceSound(Player const* target /*= nullptr*/) const
+{
+ if (target)
+ target->SendDirectMessage(WorldPackets::Misc::StopSpeakerbotSound(GetGUID()).Write());
+ else
+ SendMessageToSet(WorldPackets::Misc::StopSpeakerbotSound(GetGUID()).Write(), true);
+}
+
+void WorldObject::PlayDirectSound(uint32 soundId, Player const* target /*= nullptr*/, uint32 broadcastTextId /*= 0*/) const
{
if (target)
target->SendDirectMessage(WorldPackets::Misc::PlaySound(GetGUID(), soundId, broadcastTextId).Write());
@@ -3577,7 +3585,7 @@ void WorldObject::PlayDirectSound(uint32 soundId, Player* target /*= nullptr*/,
SendMessageToSet(WorldPackets::Misc::PlaySound(GetGUID(), soundId, broadcastTextId).Write(), true);
}
-void WorldObject::PlayDirectMusic(uint32 musicId, Player* target /*= nullptr*/)
+void WorldObject::PlayDirectMusic(uint32 musicId, Player const* target /*= nullptr*/) const
{
if (target)
target->SendDirectMessage(WorldPackets::Misc::PlayMusic(musicId).Write());
@@ -3585,7 +3593,7 @@ void WorldObject::PlayDirectMusic(uint32 musicId, Player* target /*= nullptr*/)
SendMessageToSet(WorldPackets::Misc::PlayMusic(musicId).Write(), true);
}
-void WorldObject::PlayObjectSound(int32 soundKitId, ObjectGuid targetObjectGUID, Player* target /*= nullptr*/, int32 broadcastTextId /*= 0*/)
+void WorldObject::PlayObjectSound(int32 soundKitId, ObjectGuid targetObjectGUID, Player const* target /*= nullptr*/, int32 broadcastTextId /*= 0*/) const
{
WorldPackets::Misc::PlayObjectSound pkt;
pkt.TargetObjectGUID = targetObjectGUID;
diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h
index fbf52fc0a60..cbb0486ea90 100644
--- a/src/server/game/Entities/Object/Object.h
+++ b/src/server/game/Entities/Object/Object.h
@@ -578,10 +578,11 @@ class TC_GAME_API WorldObject : public Object, public WorldLocation
virtual uint8 GetLevelForTarget(WorldObject const* /*target*/) const { return 1; }
- void PlayDistanceSound(uint32 soundId, Player* target = nullptr);
- void PlayDirectSound(uint32 soundId, Player* target = nullptr, uint32 broadcastTextId = 0);
- void PlayDirectMusic(uint32 musicId, Player* target = nullptr);
- void PlayObjectSound(int32 soundKitId, ObjectGuid targetObject, Player* target = nullptr, int32 broadcastTextId = 0);
+ void PlayDistanceSound(uint32 soundId, Player const* target = nullptr) const;
+ void StopDistanceSound(Player const* target = nullptr) const;
+ void PlayDirectSound(uint32 soundId, Player const* target = nullptr, uint32 broadcastTextId = 0) const;
+ void PlayDirectMusic(uint32 musicId, Player const* target = nullptr) const;
+ void PlayObjectSound(int32 soundKitId, ObjectGuid targetObject, Player const* target = nullptr, int32 broadcastTextId = 0) const;
void AddObjectToRemoveList();
diff --git a/src/server/game/Server/Packets/MiscPackets.cpp b/src/server/game/Server/Packets/MiscPackets.cpp
index 41f012e26a8..5e7c646d529 100644
--- a/src/server/game/Server/Packets/MiscPackets.cpp
+++ b/src/server/game/Server/Packets/MiscPackets.cpp
@@ -525,6 +525,13 @@ WorldPacket const* WorldPackets::Misc::PlaySpeakerbotSound::Write()
return &_worldPacket;
}
+WorldPacket const* WorldPackets::Misc::StopSpeakerbotSound::Write()
+{
+ _worldPacket << SourceObjectGUID;
+
+ return &_worldPacket;
+}
+
void WorldPackets::Misc::FarSight::Read()
{
Enable = _worldPacket.ReadBit();
diff --git a/src/server/game/Server/Packets/MiscPackets.h b/src/server/game/Server/Packets/MiscPackets.h
index 040c2a6e3c2..10aeacead81 100644
--- a/src/server/game/Server/Packets/MiscPackets.h
+++ b/src/server/game/Server/Packets/MiscPackets.h
@@ -654,10 +654,9 @@ namespace WorldPackets
int32 BroadcastTextID = 0;
};
- class TC_GAME_API PlaySpeakerbotSound final : public ServerPacket
+ class PlaySpeakerbotSound final : public ServerPacket
{
public:
- PlaySpeakerbotSound() : ServerPacket(SMSG_PLAY_SPEAKERBOT_SOUND, 20) { }
PlaySpeakerbotSound(ObjectGuid const& sourceObjectGUID, int32 soundKitID)
: ServerPacket(SMSG_PLAY_SPEAKERBOT_SOUND, 20), SourceObjectGUID(sourceObjectGUID), SoundKitID(soundKitID) { }
@@ -667,6 +666,17 @@ namespace WorldPackets
int32 SoundKitID = 0;
};
+ class StopSpeakerbotSound final : public ServerPacket
+ {
+ public:
+ StopSpeakerbotSound(ObjectGuid const& sourceObjectGUID)
+ : ServerPacket(SMSG_STOP_SPEAKERBOT_SOUND, 16), SourceObjectGUID(sourceObjectGUID) { }
+
+ WorldPacket const* Write() override;
+
+ ObjectGuid SourceObjectGUID;
+ };
+
class CompleteCinematic final : public ClientPacket
{
public:
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index 74adcc445b8..80a289eb9c4 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -2073,7 +2073,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_STARTER_BUILD_ACTIVATE_FAILED, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_STOP_ELAPSED_TIMER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_STOP_MIRROR_TIMER, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_STOP_SPEAKERBOT_SOUND, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_STOP_SPEAKERBOT_SOUND, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_STOP_TIMER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_STREAMING_MOVIES, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_SUGGEST_INVITE_INFORM, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);