From 1e19a7b0ae3ef3334ab3f7e7e66cfc36f74939da Mon Sep 17 00:00:00 2001 From: Mino Date: Thu, 15 Mar 2018 19:57:35 +0900 Subject: [PATCH] Implement director wide bgm Warning: Not tested --- src/servers/sapphire_zone/Zone/InstanceContent.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/servers/sapphire_zone/Zone/InstanceContent.cpp b/src/servers/sapphire_zone/Zone/InstanceContent.cpp index 5592cd9a..b2736c26 100644 --- a/src/servers/sapphire_zone/Zone/InstanceContent.cpp +++ b/src/servers/sapphire_zone/Zone/InstanceContent.cpp @@ -396,7 +396,14 @@ void Core::InstanceContent::setCurrentBGM( uint16_t bgmIndex ) { m_currentBgm = bgmIndex; - // todo: actrl a1 does not override whatever is set with directorplayscene, need to figure out the magic behind it + for (const auto& playerIt : m_playerMap) + { + auto player = playerIt.second; + // note: retail do send a BGM_MUTE(1) first before any BGM transition, but YOLO in this case. + // also do note that this code can't control the bgm granularly. (i.e. per player for WoD submap.) oops. + // player->queuePacket(ActorControlPacket143(player->getId(), DirectorUpdate, getDirectorId(), 0x80000001, 1)); + player->queuePacket(ActorControlPacket143(player->getId(), DirectorUpdate, getDirectorId(), 0x80000001, bgmIndex)); + } } uint16_t Core::InstanceContent::getCurrentBGM() const