Index: trunk/src/game/Object.cpp
===================================================================
--- trunk/src/game/Object.cpp (revision 2)
+++ trunk/src/game/Object.cpp (revision 12)
@@ -1167,4 +1167,14 @@
 }
 
+void WorldObject::SendPlaySound(uint32 Sound, bool OnlySelf)
+{
+    WorldPacket data(SMSG_PLAY_SOUND, 4);
+    data << Sound;
+    if (OnlySelf && GetTypeId() == TYPEID_PLAYER )
+        ((Player*)this)->GetSession()->SendPacket( &data );
+    else
+        SendMessageToSet( &data, true ); // ToSelf ignored in this case
+}
+
 namespace MaNGOS
 {
Index: trunk/src/game/Object.h
===================================================================
--- trunk/src/game/Object.h (revision 2)
+++ trunk/src/game/Object.h (revision 12)
@@ -438,4 +438,7 @@
         virtual bool isVisibleForInState(Player const* u, bool inVisibleList) const = 0;
 
+        // Low Level Packets
+        void SendPlaySound(uint32 Sound, bool OnlySelf);
+
         Map      * GetMap() const;
         Map const* GetBaseMap() const;
Index: trunk/src/game/Player.h
===================================================================
--- trunk/src/game/Player.h (revision 9)
+++ trunk/src/game/Player.h (revision 12)
@@ -1593,6 +1593,4 @@
         void SendLogXPGain(uint32 GivenXP,Unit* victim,uint32 RestXP);
 
-        //Low Level Packets
-        void PlaySound(uint32 Sound, bool OnlySelf);
         //notifiers
         void SendAttackSwingCantAttack();
Index: trunk/src/game/debugcmds.cpp
===================================================================
--- trunk/src/game/debugcmds.cpp (revision 9)
+++ trunk/src/game/debugcmds.cpp (revision 12)
@@ -217,5 +217,5 @@
 
     uint32 soundid = atoi(args);
-    m_session->GetPlayer()->PlaySound(soundid, false);
+    m_session->GetPlayer()->SendPlaySound(soundid, false);
     return true;
 }
Index: trunk/src/game/Player.cpp
===================================================================
--- trunk/src/game/Player.cpp (revision 9)
+++ trunk/src/game/Player.cpp (revision 12)
@@ -15381,14 +15381,4 @@
 }
 
-void Player::PlaySound(uint32 Sound, bool OnlySelf)
-{
-    WorldPacket data(SMSG_PLAY_SOUND, 4);
-    data << Sound;
-    if (OnlySelf)
-        GetSession()->SendPacket( &data );
-    else
-        SendMessageToSet( &data, true );
-}
-
 void Player::SendExplorationExperience(uint32 Area, uint32 Experience)
 {
Index: trunk/src/bindings/scripts/include/sc_creature.cpp
===================================================================
--- trunk/src/bindings/scripts/include/sc_creature.cpp (revision 6)
+++ trunk/src/bindings/scripts/include/sc_creature.cpp (revision 12)
@@ -6,5 +6,4 @@
 #include "Item.h"
 #include "Spell.h"
-#include "WorldPacket.h"
 
 // Spell summary for ScriptedAI::SelectSpell
@@ -203,8 +202,5 @@
     }
 
-    WorldPacket data(4);
-    data.SetOpcode(SMSG_PLAY_SOUND);
-    data << uint32(sound);
-    unit->SendMessageToSet(&data,false);
+    unit->SendPlaySound(sound, false);
 }
 
Index: trunk/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_cthun.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_cthun.cpp (revision 6)
+++ trunk/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_cthun.cpp (revision 12)
@@ -584,12 +584,12 @@
                     switch (rand()%8)
                     {
-                        case 0: (*i)->PlaySound(RND_WISPER_1, true); break;
-                        case 1: (*i)->PlaySound(RND_WISPER_2, true); break;
-                        case 2: (*i)->PlaySound(RND_WISPER_3, true); break;
-                        case 3: (*i)->PlaySound(RND_WISPER_4, true); break;
-                        case 4: (*i)->PlaySound(RND_WISPER_5, true); break;
-                        case 5: (*i)->PlaySound(RND_WISPER_6, true); break;
-                        case 6: (*i)->PlaySound(RND_WISPER_7, true); break;
-                        case 7: (*i)->PlaySound(RND_WISPER_8, true); break;
+                        case 0: (*i)->SendPlaySound(RND_WISPER_1, true); break;
+                        case 1: (*i)->SendPlaySound(RND_WISPER_2, true); break;
+                        case 2: (*i)->SendPlaySound(RND_WISPER_3, true); break;
+                        case 3: (*i)->SendPlaySound(RND_WISPER_4, true); break;
+                        case 4: (*i)->SendPlaySound(RND_WISPER_5, true); break;
+                        case 5: (*i)->SendPlaySound(RND_WISPER_6, true); break;
+                        case 6: (*i)->SendPlaySound(RND_WISPER_7, true); break;
+                        case 7: (*i)->SendPlaySound(RND_WISPER_8, true); break;
                     }
                 }
Index: trunk/src/bindings/scripts/ScriptMgr.cpp
===================================================================
--- trunk/src/bindings/scripts/ScriptMgr.cpp (revision 6)
+++ trunk/src/bindings/scripts/ScriptMgr.cpp (revision 12)
@@ -1854,8 +1854,5 @@
         if(GetSoundEntriesStore()->LookupEntry((*i).second.SoundId))
         {
-            WorldPacket data(4);
-            data.SetOpcode(SMSG_PLAY_SOUND);
-            data << uint32((*i).second.SoundId);
-            pSource->SendMessageToSet(&data,false);
+            pSource->SendPlaySound((*i).second.SoundId, false);
         }
         else
