1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-27 14:57:44 +00:00

minor bnpc cleanup, correctly set lastticktime on bnpc entities

This commit is contained in:
NotAdam 2019-01-28 13:40:03 +11:00
parent 6070247dc9
commit fcd934034d
4 changed files with 13 additions and 9 deletions

View file

@ -15,6 +15,11 @@ float Sapphire::Util::distance( float x, float y, float z, float x1, float y1, f
return sqrtf( distanceSq( x, y, z, x1, y1, z1 ) );
}
float Sapphire::Util::distance( const Common::FFXIVARR_POSITION3& pos1, const Common::FFXIVARR_POSITION3& pos2 )
{
return sqrtf( distanceSq( pos1.x, pos1.y, pos1.z, pos2.x, pos2.y, pos2.z ) );
}
float Sapphire::Util::distance2DSq( float x, float y, float x1, float y1 )
{
float deltaX = x - x1;

View file

@ -11,6 +11,7 @@ namespace Sapphire::Util
float distanceSq( float x, float y, float z, float x1, float y1, float z1 );
float distance( float x, float y, float z, float x1, float y1, float z1 );
float distance( const Common::FFXIVARR_POSITION3& pos1, const Common::FFXIVARR_POSITION3& pos2 );
float distance2DSq( float x, float y, float x1, float y1 );

View file

@ -88,6 +88,7 @@ Sapphire::Entity::BNpc::BNpc( uint32_t id, BNpcTemplatePtr pTemplate, float posX
memcpy( m_customize, pTemplate->getCustomize(), sizeof( m_customize ) );
memcpy( m_modelEquip, pTemplate->getModelEquip(), sizeof( m_modelEquip ) );
m_lastTickTime = Util::getTimeMs();
}
Sapphire::Entity::BNpc::~BNpc()
@ -162,11 +163,9 @@ void Sapphire::Entity::BNpc::step()
return;
auto stepPos = m_naviLastPath[ m_naviPathStep ];
auto distanceToStep = Util::distance( getPos().x, getPos().y, getPos().z,
stepPos.x, stepPos.y, stepPos.z );
auto distanceToDest = Util::distance( getPos().x, getPos().y, getPos().z,
m_naviTarget.x, m_naviTarget.y, m_naviTarget.z );
auto distanceToStep = Util::distance( getPos(), stepPos );
auto distanceToDest = Util::distance( getPos(), m_naviTarget );
if( distanceToStep <= 4 && m_naviPathStep < m_naviLastPath.size() - 1 )
{
@ -201,7 +200,7 @@ void Sapphire::Entity::BNpc::step()
bool Sapphire::Entity::BNpc::moveTo( const FFXIVARR_POSITION3& pos )
{
if( Util::distance( getPos().x, getPos().y, getPos().z, pos.x, pos.y, pos.z ) <= 4 )
if( Util::distance( getPos(), pos ) <= 4 )
{
// Reached destination
m_naviLastPath.clear();
@ -389,7 +388,6 @@ void Sapphire::Entity::BNpc::update( int64_t currTime )
if( std::difftime( currTime, m_lastTickTime ) > 3000 )
regainHp( currTime );
// slowly restore hp every tick
if( moveTo( m_spawnPos ) )
{
setInvincibilityType( InvincibilityType::InvincibilityNone );
@ -491,12 +489,12 @@ void Sapphire::Entity::BNpc::update( int64_t currTime )
}
}
}
m_lastTickTime = currTime;
}
void Sapphire::Entity::BNpc::regainHp( int64_t currTime )
{
this->m_lastTickTime = currTime;
if( this->m_hp < this->getMaxHp() )
{
auto addHp = static_cast< uint32_t >( this->getMaxHp() * 0.1f + 1 );

View file

@ -393,7 +393,7 @@ void Sapphire::Zone::updateBNpcs( int64_t tickCount )
m_lastMobUpdate = tickCount;
uint32_t currTime = Sapphire::Util::getTimeSeconds();
for( auto entry : m_bNpcMap )
for( const auto& entry : m_bNpcMap )
{
Entity::BNpcPtr pBNpc = entry.second;