From ad6de5fe00ef7f73bc239f4b44d0e1cbe8926914 Mon Sep 17 00:00:00 2001 From: Mordred Date: Tue, 23 Apr 2019 00:00:07 +0200 Subject: [PATCH] Properly reset aggro on mob retreat --- src/world/Actor/BNpc.cpp | 5 +++-- src/world/Navi/NaviProvider.cpp | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/world/Actor/BNpc.cpp b/src/world/Actor/BNpc.cpp index 4454af44..841ff2b9 100644 --- a/src/world/Actor/BNpc.cpp +++ b/src/world/Actor/BNpc.cpp @@ -352,7 +352,7 @@ bool Sapphire::Entity::BNpc::hateListHasActor( Sapphire::Entity::CharaPtr pChara void Sapphire::Entity::BNpc::aggro( Sapphire::Entity::CharaPtr pChara ) { auto pRNGMgr = m_pFw->get< World::Manager::RNGMgr >(); - auto variation = static_cast< uint32_t >( pRNGMgr->getRandGenerator< float >( 50, 600 ).next() ); + auto variation = static_cast< uint32_t >( pRNGMgr->getRandGenerator< float >( 500, 1000 ).next() ); m_lastAttack = Util::getTimeMs() + variation; hateListUpdate( pChara, 1 ); @@ -380,7 +380,8 @@ void Sapphire::Entity::BNpc::deaggro( Sapphire::Entity::CharaPtr pChara ) if( pChara->isPlayer() ) { PlayerPtr tmpPlayer = pChara->getAsPlayer(); - tmpPlayer->queuePacket( makeActorControl142( getId(), ActorControlType::ToggleWeapon, 0, 1, 1 ) ); + sendToInRangeSet( makeActorControl142( getId(), ActorControlType::ToggleWeapon, 0, 1, 1 ) ); + sendToInRangeSet( makeActorControl142( getId(), ActorControlType::ToggleAggro, 0, 0, 0 ) ); tmpPlayer->onMobDeaggro( getAsBNpc() ); } } diff --git a/src/world/Navi/NaviProvider.cpp b/src/world/Navi/NaviProvider.cpp index aaee0ba7..277f9299 100644 --- a/src/world/Navi/NaviProvider.cpp +++ b/src/world/Navi/NaviProvider.cpp @@ -578,7 +578,7 @@ int32_t Sapphire::World::Navi::NaviProvider::addAgent( Entity::Chara& chara ) params.collisionQueryRange = params.radius * 12.0f; params.pathOptimizationRange = params.radius * 20.0f; params.updateFlags = 0; - //params.updateFlags |= DT_CROWD_OBSTACLE_AVOIDANCE; + params.updateFlags |= DT_CROWD_ANTICIPATE_TURNS; float position[] = { chara.getPos().x, chara.getPos().y, chara.getPos().z }; return m_pCrowd->addAgent( position, ¶ms ); }