diff --git a/src/world/Actor/BNpc.cpp b/src/world/Actor/BNpc.cpp index bb5e8d4e..28390970 100644 --- a/src/world/Actor/BNpc.cpp +++ b/src/world/Actor/BNpc.cpp @@ -224,19 +224,15 @@ void Sapphire::Entity::BNpc::step() bool Sapphire::Entity::BNpc::moveTo( const FFXIVARR_POSITION3& pos ) { - // do this first, this will update local actor position and the position of other actors - // and then this npc will then path from the position after pushing/being pushed - //pushNearbyBNpcs(); - if( Util::distance( getPos(), pos ) <= m_naviTargetReachedDistance ) { // Reached destination m_naviLastPath.clear(); - // return true; + return true; } auto pNaviMgr = m_pFw->get< World::Manager::NaviMgr >(); - auto pNaviProvider = pNaviMgr->getNaviProvider( m_pCurrentZone->getBgPath() ); + auto pNaviProvider = m_pCurrentZone->getNaviProvider(); if( !pNaviProvider ) { @@ -285,7 +281,7 @@ bool Sapphire::Entity::BNpc::moveTo( const FFXIVARR_POSITION3& pos ) step();*/ - //pNaviProvider->setMoveTarget( *this, pos ); + pNaviProvider->setMoveTarget( *this, pos ); auto pos1 = pNaviProvider->getMovePos( *this ); //Logger::debug( "{} {} {}", pos1.x, pos1.y, pos1.z ); @@ -480,7 +476,7 @@ void Sapphire::Entity::BNpc::update( uint64_t tickCount ) case BNpcState::Roaming: { auto pNaviMgr = m_pFw->get< World::Manager::NaviMgr >(); - auto pNaviProvider = pNaviMgr->getNaviProvider( m_pCurrentZone->getBgPath() ); + auto pNaviProvider = m_pCurrentZone->getNaviProvider(); if( pNaviProvider ) { @@ -507,7 +503,7 @@ void Sapphire::Entity::BNpc::update( uint64_t tickCount ) if( !hasFlag( Immobile ) && ( Util::getTimeSeconds() - m_lastRoamTargetReached > roamTick ) ) { auto pNaviMgr = m_pFw->get< World::Manager::NaviMgr >(); - auto pNaviProvider = pNaviMgr->getNaviProvider( m_pCurrentZone->getBgPath() ); + auto pNaviProvider = m_pCurrentZone->getNaviProvider(); if( !pNaviProvider ) { @@ -671,39 +667,6 @@ void Sapphire::Entity::BNpc::checkAggro() } } -void Sapphire::Entity::BNpc::pushNearbyBNpcs() -{ - for( auto& bNpc : m_inRangeBNpc ) - { - auto pos = bNpc->getPos(); - auto distance = Util::distance( m_pos, bNpc->getPos() ); - - - // todo: not sure what's good here - auto factor = bNpc->getNaviTargetReachedDistance(); - - auto delta = static_cast< float >( Util::getTimeMs() - bNpc->getLastUpdateTime() ) / 1000.f; - delta = std::min< float >( factor, delta ); - - // too far away, ignore it - if( distance > factor ) - continue; - - auto angle = Util::calcAngFrom( m_pos.x, m_pos.y, pos.x, pos.y ) + PI; - - auto x = ( cosf( angle ) ); - auto z = ( sinf( angle ) ); - - bNpc->setPos( pos.x + ( x * factor * delta ), - pos.y, - pos.z + ( z * factor * delta ), true ); - -// setPos( m_pos.x + ( xBase * -pushDistance ), -// m_pos.y, -// m_pos.z + ( zBase * -pushDistance ) ); - } -} - void Sapphire::Entity::BNpc::setOwner( Sapphire::Entity::CharaPtr m_pChara ) { m_pOwner = m_pChara; diff --git a/src/world/Actor/BNpc.h b/src/world/Actor/BNpc.h index f9709745..453c178d 100644 --- a/src/world/Actor/BNpc.h +++ b/src/world/Actor/BNpc.h @@ -111,8 +111,6 @@ namespace Sapphire::Entity void checkAggro(); - void pushNearbyBNpcs(); - void setOwner( CharaPtr m_pChara ); void setLevelId( uint32_t levelId ); diff --git a/src/world/Manager/NaviMgr.cpp b/src/world/Manager/NaviMgr.cpp index c3490920..62877ace 100644 --- a/src/world/Manager/NaviMgr.cpp +++ b/src/world/Manager/NaviMgr.cpp @@ -39,7 +39,7 @@ Sapphire::World::Navi::NaviProviderPtr Sapphire::World::Manager::NaviMgr::getNav std::string Sapphire::World::Manager::NaviMgr::getBgName( const std::string& bgPath ) { - auto findPos = bgPath.find_last_of( "/" ); + auto findPos = bgPath.find_last_of( '/' ); if( findPos != std::string::npos ) return bgPath.substr( findPos + 1 ); diff --git a/src/world/Territory/InstanceContent.cpp b/src/world/Territory/InstanceContent.cpp index f6c0e77a..688b90a7 100644 --- a/src/world/Territory/InstanceContent.cpp +++ b/src/world/Territory/InstanceContent.cpp @@ -48,6 +48,9 @@ Sapphire::InstanceContent::InstanceContent( std::shared_ptr< Sapphire::Data::Ins bool Sapphire::InstanceContent::init() { + if( !Zone::init() ) + return false; + auto pScriptMgr = m_pFw->get< Scripting::ScriptMgr >(); pScriptMgr->onInstanceInit( getAsInstanceContent() ); @@ -99,7 +102,7 @@ void Sapphire::InstanceContent::onUpdate( uint64_t tickCount ) { case Created: { - if( m_boundPlayerIds.size() == 0 ) + if( m_boundPlayerIds.empty() ) return; for( auto playerId : m_boundPlayerIds ) diff --git a/src/world/Territory/QuestBattle.cpp b/src/world/Territory/QuestBattle.cpp index ef23f08e..df3b71e8 100644 --- a/src/world/Territory/QuestBattle.cpp +++ b/src/world/Territory/QuestBattle.cpp @@ -48,6 +48,9 @@ Sapphire::QuestBattle::QuestBattle( std::shared_ptr< Sapphire::Data::QuestBattle bool Sapphire::QuestBattle::init() { + if( !Zone::init() ) + return false; + auto pScriptMgr = m_pFw->get< Scripting::ScriptMgr >(); pScriptMgr->onInstanceInit( getAsQuestBattle() );