From 6bb3c4f45c85953450705581765eaf4b94883307 Mon Sep 17 00:00:00 2001 From: Adam <893184+NotAdam@users.noreply.github.com> Date: Thu, 15 Mar 2018 19:57:35 +0900 Subject: [PATCH 1/2] 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 From 919abe5162ad24571537a1e825e34a8dfd0b5867 Mon Sep 17 00:00:00 2001 From: Mordred <30826167+SapphireMordred@users.noreply.github.com> Date: Thu, 15 Mar 2018 12:24:34 +0100 Subject: [PATCH 2/2] style fix --- src/servers/sapphire_zone/Zone/InstanceContent.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/servers/sapphire_zone/Zone/InstanceContent.cpp b/src/servers/sapphire_zone/Zone/InstanceContent.cpp index b2736c26..8a27fefe 100644 --- a/src/servers/sapphire_zone/Zone/InstanceContent.cpp +++ b/src/servers/sapphire_zone/Zone/InstanceContent.cpp @@ -396,17 +396,17 @@ void Core::InstanceContent::setCurrentBGM( uint16_t bgmIndex ) { m_currentBgm = bgmIndex; - for (const auto& playerIt : m_playerMap) + 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)); + // player->queuePacket( ActorControlPacket143( player->getId(), DirectorUpdate, getDirectorId(), 0x80000001, 1 ) ); + player->queuePacket( ActorControlPacket143( player->getId(), DirectorUpdate, getDirectorId(), 0x80000001, bgmIndex ) ); } } uint16_t Core::InstanceContent::getCurrentBGM() const { return m_currentBgm; -} \ No newline at end of file +}