From 9ab636662dc990ae96606e228b0768038ee149a5 Mon Sep 17 00:00:00 2001 From: Mordred Date: Tue, 18 Jan 2022 08:03:49 +0100 Subject: [PATCH] Added triggerOwner to bnpc --- src/world/Actor/BNpc.cpp | 10 ++++++++++ src/world/Actor/BNpc.h | 3 +++ src/world/Network/PacketWrappers/NpcSpawnPacket.h | 2 +- src/world/Territory/InstanceObjectCache.cpp | 4 ++++ src/world/Territory/Territory.cpp | 4 ++-- src/world/Territory/Territory.h | 2 +- 6 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/world/Actor/BNpc.cpp b/src/world/Actor/BNpc.cpp index 627cc8c8..d69294fa 100644 --- a/src/world/Actor/BNpc.cpp +++ b/src/world/Actor/BNpc.cpp @@ -517,6 +517,16 @@ void Sapphire::Entity::BNpc::hateListRemove( Sapphire::Entity::CharaPtr pChara ) } } +uint32_t Sapphire::Entity::BNpc::getTriggerOwnerId() const +{ + return m_triggerOwnerId; +} + +void Sapphire::Entity::BNpc::setTriggerOwnerId( uint32_t triggerOwnerId ) +{ + m_triggerOwnerId = triggerOwnerId; +} + bool Sapphire::Entity::BNpc::hateListHasActor( Sapphire::Entity::CharaPtr pChara ) { for( auto& listEntry : m_hateList ) diff --git a/src/world/Actor/BNpc.h b/src/world/Actor/BNpc.h index 6e22c976..3acf0cb5 100644 --- a/src/world/Actor/BNpc.h +++ b/src/world/Actor/BNpc.h @@ -87,6 +87,8 @@ namespace Sapphire::Entity uint8_t getAggressionMode() const; + uint32_t getTriggerOwnerId() const; + void setTriggerOwnerId( uint32_t triggerOwnerId ); float getNaviTargetReachedDistance() const; @@ -159,6 +161,7 @@ namespace Sapphire::Entity uint32_t m_rank; uint32_t m_boundInstanceId; uint32_t m_layoutId; + uint32_t m_triggerOwnerId; uint32_t m_flags; diff --git a/src/world/Network/PacketWrappers/NpcSpawnPacket.h b/src/world/Network/PacketWrappers/NpcSpawnPacket.h index 87bcadd2..8affb2df 100644 --- a/src/world/Network/PacketWrappers/NpcSpawnPacket.h +++ b/src/world/Network/PacketWrappers/NpcSpawnPacket.h @@ -61,7 +61,7 @@ namespace Sapphire::Network::Packets::WorldPackets::Server m_data.MainTarget = bnpc.getTargetId(); // no idea ... m_data.spawnerId = Common::INVALID_GAME_OBJECT_ID64; m_data.ParentId = Common::INVALID_GAME_OBJECT_ID; - m_data.TriggerId = 0; + m_data.TriggerId = bnpc.getTriggerOwnerId(); m_data.ChannelingTarget = Common::INVALID_GAME_OBJECT_ID; m_data.OwnerId = Common::INVALID_GAME_OBJECT_ID; diff --git a/src/world/Territory/InstanceObjectCache.cpp b/src/world/Territory/InstanceObjectCache.cpp index 602f1489..4da170a9 100644 --- a/src/world/Territory/InstanceObjectCache.cpp +++ b/src/world/Territory/InstanceObjectCache.cpp @@ -92,6 +92,10 @@ Sapphire::InstanceObjectCache::InstanceObjectCache() auto pPopRange = std::reinterpret_pointer_cast< LGB_POP_RANGE_ENTRY >( pEntry ); m_popRangeCache.insert( id, pPopRange ); } + else if( pEntry->getType() == LgbEntryType::SharedGroup6 ) + { + + } } } } diff --git a/src/world/Territory/Territory.cpp b/src/world/Territory/Territory.cpp index 77b4e4f3..1f6ab20e 100644 --- a/src/world/Territory/Territory.cpp +++ b/src/world/Territory/Territory.cpp @@ -850,14 +850,14 @@ uint32_t Sapphire::Territory::getNextEffectSequence() return m_effectCounter++; } -Sapphire::Entity::BNpcPtr Sapphire::Territory::createBNpcFromInstanceId( uint32_t levelId, uint32_t hp, Common::BNpcType bnpcType ) +Sapphire::Entity::BNpcPtr Sapphire::Territory::createBNpcFromInstanceId( uint32_t levelId, uint32_t hp, Common::BNpcType bnpcType, uint32_t triggerOwnerId ) { auto infoPtr = m_bNpcBaseMap.find( levelId ); if( infoPtr == m_bNpcBaseMap.end() ) return nullptr; auto pBNpc = std::make_shared< Entity::BNpc >( getNextActorId(), infoPtr->second, shared_from_this(), hp, bnpcType ); - + pBNpc->setTriggerOwnerId( triggerOwnerId ); pushActor( pBNpc ); return pBNpc; } diff --git a/src/world/Territory/Territory.h b/src/world/Territory/Territory.h index 95a36cfa..84e64a49 100644 --- a/src/world/Territory/Territory.h +++ b/src/world/Territory/Territory.h @@ -169,7 +169,7 @@ namespace Sapphire void registerEObj( Entity::EventObjectPtr object ); - Entity::BNpcPtr createBNpcFromInstanceId( uint32_t levelId, uint32_t hp, Common::BNpcType bnpcType ); + Entity::BNpcPtr createBNpcFromInstanceId( uint32_t levelId, uint32_t hp, Common::BNpcType bnpcType, uint32_t triggerOwnerId = 0 ); Entity::BNpcPtr getActiveBNpcByInstanceId( uint32_t instanceId );