diff --git a/src/servers/sapphire_zone/Zone/InstanceContent.cpp b/src/servers/sapphire_zone/Zone/InstanceContent.cpp index 5592cd9a..8a27fefe 100644 --- a/src/servers/sapphire_zone/Zone/InstanceContent.cpp +++ b/src/servers/sapphire_zone/Zone/InstanceContent.cpp @@ -396,10 +396,17 @@ 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 { return m_currentBgm; -} \ No newline at end of file +}