From a387f649fa0b8ddee24ccc55234a6e48e93fd10f Mon Sep 17 00:00:00 2001 From: Mordred Date: Tue, 29 Jan 2019 23:54:52 +0100 Subject: [PATCH] Small bnpc fixed. Target / initial state --- src/tools/pcb_reader/nav/TiledNavmeshGenerator.cpp | 3 +-- src/world/Actor/BNpc.cpp | 2 ++ src/world/Territory/Zone.cpp | 14 ++++++-------- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/tools/pcb_reader/nav/TiledNavmeshGenerator.cpp b/src/tools/pcb_reader/nav/TiledNavmeshGenerator.cpp index a120d116..c4423177 100644 --- a/src/tools/pcb_reader/nav/TiledNavmeshGenerator.cpp +++ b/src/tools/pcb_reader/nav/TiledNavmeshGenerator.cpp @@ -92,11 +92,10 @@ TiledNavmeshGenerator::~TiledNavmeshGenerator() if( m_triareas ) delete[] m_triareas; - if( m_solid ) - delete m_solid; delete m_ctx; rcFreeContourSet( m_cset ); + rcFreeHeightField( m_solid ); rcFreeCompactHeightfield(m_chf); rcFreePolyMesh( m_pmesh ); rcFreePolyMeshDetail( m_dmesh ); diff --git a/src/world/Actor/BNpc.cpp b/src/world/Actor/BNpc.cpp index 6cc4f88e..b04fbf2f 100644 --- a/src/world/Actor/BNpc.cpp +++ b/src/world/Actor/BNpc.cpp @@ -67,12 +67,14 @@ Sapphire::Entity::BNpc::BNpc( uint32_t id, BNpcTemplatePtr pTemplate, float posX m_rot = rot; m_level = level; m_invincibilityType = InvincibilityNone; + m_currentStance = Common::Stance::Passive; m_pCurrentZone = pZone; m_spawnPos = m_pos; m_timeOfDeath = 0; + m_targetId = Common::INVALID_GAME_OBJECT_ID64; m_maxHp = maxHp; m_maxMp = 200; diff --git a/src/world/Territory/Zone.cpp b/src/world/Territory/Zone.cpp index d0472427..ffd55a60 100644 --- a/src/world/Territory/Zone.cpp +++ b/src/world/Territory/Zone.cpp @@ -400,11 +400,12 @@ void Sapphire::Zone::updateBNpcs( int64_t tickCount ) if( !pBNpc ) continue; - if( !pBNpc->isAlive() && currTime - pBNpc->getTimeOfDeath() > 10 ) - { - removeActor( pBNpc ); - break; - } + if( !pBNpc->isAlive() ) + if( currTime - pBNpc->getTimeOfDeath() > 10 ) + { + removeActor( pBNpc ); + break; + } } for( uint32_t y = 0; y < _sizeY; ++y ) @@ -673,9 +674,6 @@ void Sapphire::Zone::updateInRangeSet( Entity::ActorPtr pActor, Cell* pCell ) pActor->addInRangeActor( pCurAct ); pCurAct->addInRangeActor( pActor ); - // this is a hack to limit actor spawn in one packetset - if( count++ > 10 ) - break; } else if( !isInRange && isInRangeSet ) {