1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-28 07:07:45 +00:00

Properly reset aggro on mob retreat

This commit is contained in:
Mordred 2019-04-23 00:00:07 +02:00
parent f704aa4582
commit ad6de5fe00
2 changed files with 4 additions and 3 deletions

View file

@ -352,7 +352,7 @@ bool Sapphire::Entity::BNpc::hateListHasActor( Sapphire::Entity::CharaPtr pChara
void Sapphire::Entity::BNpc::aggro( Sapphire::Entity::CharaPtr pChara ) void Sapphire::Entity::BNpc::aggro( Sapphire::Entity::CharaPtr pChara )
{ {
auto pRNGMgr = m_pFw->get< World::Manager::RNGMgr >(); 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; m_lastAttack = Util::getTimeMs() + variation;
hateListUpdate( pChara, 1 ); hateListUpdate( pChara, 1 );
@ -380,7 +380,8 @@ void Sapphire::Entity::BNpc::deaggro( Sapphire::Entity::CharaPtr pChara )
if( pChara->isPlayer() ) if( pChara->isPlayer() )
{ {
PlayerPtr tmpPlayer = pChara->getAsPlayer(); 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() ); tmpPlayer->onMobDeaggro( getAsBNpc() );
} }
} }

View file

@ -578,7 +578,7 @@ int32_t Sapphire::World::Navi::NaviProvider::addAgent( Entity::Chara& chara )
params.collisionQueryRange = params.radius * 12.0f; params.collisionQueryRange = params.radius * 12.0f;
params.pathOptimizationRange = params.radius * 20.0f; params.pathOptimizationRange = params.radius * 20.0f;
params.updateFlags = 0; 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 }; float position[] = { chara.getPos().x, chara.getPos().y, chara.getPos().z };
return m_pCrowd->addAgent( position, &params ); return m_pCrowd->addAgent( position, &params );
} }