From 952391ae4f19e29cadc39df2eee97ed15e6067d3 Mon Sep 17 00:00:00 2001 From: Mordred Date: Thu, 2 Jan 2025 16:06:47 +0100 Subject: [PATCH] Song learn functions moved --- src/world/Action/ItemAction.cpp | 2 +- src/world/Actor/Player.cpp | 2 -- src/world/Manager/PlayerMgr.cpp | 6 ++++++ src/world/Manager/PlayerMgr.h | 2 ++ src/world/Network/Handlers/GMCommandHandlers.cpp | 4 +++- 5 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/world/Action/ItemAction.cpp b/src/world/Action/ItemAction.cpp index 6c20f290..462728cc 100644 --- a/src/world/Action/ItemAction.cpp +++ b/src/world/Action/ItemAction.cpp @@ -115,6 +115,6 @@ void ItemAction::handleSongItem() { auto player = getSourceChara()->getAsPlayer(); - player->learnSong( m_itemAction->data().Calcu0Arg[ 0 ], m_id ); + playerMgr().onSongLearned( *player, m_itemAction->data().Calcu0Arg[ 0 ], m_id ); player->dropInventoryItem( static_cast< Common::InventoryType >( m_itemSourceContainer ), static_cast< uint8_t >( m_itemSourceSlot ) ); } \ No newline at end of file diff --git a/src/world/Actor/Player.cpp b/src/world/Actor/Player.cpp index 03b65f2e..3ef1f5b5 100644 --- a/src/world/Actor/Player.cpp +++ b/src/world/Actor/Player.cpp @@ -525,8 +525,6 @@ void Player::learnSong( uint8_t songId, uint32_t itemId ) Util::valueToFlagByteIndexValue( songId, value, index ); m_orchestrion[ index ] |= value; - - Network::Util::Packet::sendActorControlSelf( *this, getId(), ToggleOrchestrionUnlock, songId, 1, itemId ); } bool Player::hasReward( Common::UnlockEntry unlockId ) const diff --git a/src/world/Manager/PlayerMgr.cpp b/src/world/Manager/PlayerMgr.cpp index 78192773..64acb737 100644 --- a/src/world/Manager/PlayerMgr.cpp +++ b/src/world/Manager/PlayerMgr.cpp @@ -579,5 +579,11 @@ void PlayerMgr::onLevelChanged( Entity::Player& player, uint8_t level ) Common::Service< World::Manager::MapMgr >::ref().updateQuests( player ); } +void PlayerMgr::onSongLearned( Entity::Player& player, uint8_t songId, uint32_t itemId ) +{ + player.learnSong( songId, itemId ); + Network::Util::Packet::sendActorControlSelf( player, player.getId(), ToggleOrchestrionUnlock, songId, 1, itemId ); +} + diff --git a/src/world/Manager/PlayerMgr.h b/src/world/Manager/PlayerMgr.h index 43a049b5..2c4da1cd 100644 --- a/src/world/Manager/PlayerMgr.h +++ b/src/world/Manager/PlayerMgr.h @@ -46,6 +46,8 @@ namespace Sapphire::World::Manager void onLevelChanged( Sapphire::Entity::Player& player, uint8_t level ); + void onSongLearned( Sapphire::Entity::Player& player, uint8_t songId, uint32_t itemId ); + //////////// Helpers static void sendServerNotice( Sapphire::Entity::Player& player, const std::string& message ); diff --git a/src/world/Network/Handlers/GMCommandHandlers.cpp b/src/world/Network/Handlers/GMCommandHandlers.cpp index 627fbb04..dcf3701c 100644 --- a/src/world/Network/Handlers/GMCommandHandlers.cpp +++ b/src/world/Network/Handlers/GMCommandHandlers.cpp @@ -328,7 +328,9 @@ void Sapphire::Network::GameConnection::gmCommandHandler( const Packets::FFXIVAR if( param2 == 0 ) { for( uint8_t i = 0; i < 255; i++ ) - targetPlayer->learnSong( i, 0 ); + { + playerMgr().onSongLearned( *targetPlayer, i, 0 ); + } PlayerMgr::sendServerNotice( player, "All Songs for {0} were turned on.", targetPlayer->getName() ); }