mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-29 16:43:47 +00:00
fix(DB/Core): Play "Lament of the Highborne" as music instead of sound (#1926)
* fix(DB/Core): Play "Lament of the Highborne" as music instead of sound * Update ScriptedCreature.cpp * Update rev_1559456042362460279.sql * Update rev_1559456042362460279.sql * Update rev_1559456042362460279.sql * Update rev_1559456042362460279.sql
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1559456042362460279');
|
||||
|
||||
-- use "SMART_ACTION_MUSIC" instead of "SMART_ACTION_SOUND" to play "Lament of the Highborne" as music for all players within 50 yards distance
|
||||
-- changed the comments of the other SAI entries slightly
|
||||
DELETE FROM `smart_scripts` WHERE `entryorguid` = 39048 AND `source_type` = 0;
|
||||
INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`)
|
||||
VALUES
|
||||
(39048,0,0,0,60,0,100,1,200,200,0,0,0,11,37090,0,0,0,0,0,1,0,0,0,0,0,0,0,0,'Sylvanas Lamenter - On Update - Cast Spell ''Lament of the Highborne: Highborne Aura'' (No Repeat)'),
|
||||
(39048,0,1,0,1,0,100,0,0,0,5000,5000,0,216,15095,1,0,0,0,0,18,50,0,0,0,0,0,0,0,'Sylvanas Lamenter - OOC - Play music for players within 50 yards (Repeat every 5 seconds)'),
|
||||
(39048,0,2,3,60,0,100,1,1000,1000,0,0,0,60,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,'Sylvanas Lamenter - On Update - Set Fly (No Repeat)'),
|
||||
(39048,0,3,0,61,0,100,0,0,0,0,0,0,69,1,0,0,0,0,0,1,0,0,0,0,0,0,6,0,'Sylvanas Lamenter - Linked - Move Pos To Self offset Z');
|
||||
|
||||
-- use "onlySelf" 1 for Thrall event as the music needs to be played only for the players directly
|
||||
UPDATE `smart_scripts` SET `action_param2` = 1 WHERE `entryorguid` = 19556 AND `source_type` = 0 AND `action_type` = 216;
|
||||
@@ -205,6 +205,45 @@ void ScriptedAI::DoPlaySoundToSet(WorldObject* source, uint32 soundId)
|
||||
source->PlayDirectSound(soundId);
|
||||
}
|
||||
|
||||
void ScriptedAI::DoPlayMusic(uint32 soundId, bool zone)
|
||||
{
|
||||
ObjectList* targets = NULL;
|
||||
|
||||
if (me && me->FindMap())
|
||||
{
|
||||
Map::PlayerList const &players = me->GetMap()->GetPlayers();
|
||||
targets = new ObjectList();
|
||||
|
||||
if (!players.isEmpty())
|
||||
{
|
||||
for (Map::PlayerList::const_iterator i = players.begin(); i != players.end(); ++i)
|
||||
if (Player* player = i->GetSource())
|
||||
{
|
||||
if (player->GetZoneId() == me->GetZoneId())
|
||||
{
|
||||
if (!zone)
|
||||
{
|
||||
if (player->GetAreaId() == me->GetAreaId())
|
||||
targets->push_back(player);
|
||||
}
|
||||
else
|
||||
targets->push_back(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (targets)
|
||||
{
|
||||
for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); ++itr)
|
||||
{
|
||||
(*itr)->SendPlayMusic(soundId, true);
|
||||
}
|
||||
|
||||
delete targets;
|
||||
}
|
||||
}
|
||||
|
||||
Creature* ScriptedAI::DoSpawnCreature(uint32 entry, float offsetX, float offsetY, float offsetZ, float angle, uint32 type, uint32 despawntime)
|
||||
{
|
||||
return me->SummonCreature(entry, me->GetPositionX() + offsetX, me->GetPositionY() + offsetY, me->GetPositionZ() + offsetZ, angle, TempSummonType(type), despawntime);
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
|
||||
#define CAST_AI(a, b) (dynamic_cast<a*>(b))
|
||||
|
||||
typedef std::list<WorldObject*> ObjectList;
|
||||
|
||||
class InstanceScript;
|
||||
|
||||
class SummonList
|
||||
@@ -237,6 +239,9 @@ struct ScriptedAI : public CreatureAI
|
||||
//Plays a sound to all nearby players
|
||||
void DoPlaySoundToSet(WorldObject* source, uint32 soundId);
|
||||
|
||||
//Plays music for all players in the zone (zone = true) or the area (zone = false)
|
||||
void DoPlayMusic(uint32 soundId, bool zone);
|
||||
|
||||
//Drops all threat to 0%. Does not remove players from the threat list
|
||||
void DoResetThreat();
|
||||
|
||||
|
||||
@@ -125,7 +125,7 @@ public:
|
||||
if (type == GUID_EVENT_INVOKER)
|
||||
{
|
||||
Talk(EMOTE_LAMENT);
|
||||
DoPlaySoundToSet(me, SOUND_CREDIT);
|
||||
DoPlayMusic(SOUND_CREDIT, true);
|
||||
DoCast(me, SPELL_SYLVANAS_CAST, false);
|
||||
playerGUID = guid;
|
||||
LamentEvent = true;
|
||||
|
||||
Reference in New Issue
Block a user