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

fix player combat state

This commit is contained in:
collett 2023-07-19 04:09:55 +09:00
parent e8ab350ad2
commit adfd397bba
2 changed files with 7 additions and 4 deletions

View file

@ -329,7 +329,7 @@ void Sapphire::Entity::BNpc::hateListAddOrUpdate( Sapphire::Entity::CharaPtr pCh
if( pChara->isPlayer() ) if( pChara->isPlayer() )
{ {
auto pPlayer = pChara->getAsPlayer(); auto pPlayer = pChara->getAsPlayer();
pPlayer->hateListAdd( getAsBNpc() ); pPlayer->onMobAggro( getAsBNpc() );
} }
auto& scriptMgr = Common::Service< Sapphire::Scripting::ScriptMgr >::ref(); auto& scriptMgr = Common::Service< Sapphire::Scripting::ScriptMgr >::ref();
scriptMgr.onBNpcHateListAdd( *this, *pChara ); scriptMgr.onBNpcHateListAdd( *this, *pChara );

View file

@ -1657,14 +1657,17 @@ void Sapphire::Entity::Player::sendHateList()
void Sapphire::Entity::Player::onMobAggro( BNpcPtr pBNpc ) void Sapphire::Entity::Player::onMobAggro( BNpcPtr pBNpc )
{ {
hateListAdd( pBNpc ); hateListAdd( pBNpc );
queuePacket( makeActorControl( getId(), ToggleAggro, 1 ) ); if( !hasStateFlag( Common::PlayerStateFlag::InCombat ) )
setStateFlag( Common::PlayerStateFlag::InCombat ); {
queuePacket( makeActorControl( getId(), ToggleAggro, 1 ) );
setStateFlag( Common::PlayerStateFlag::InCombat );
}
} }
void Sapphire::Entity::Player::onMobDeaggro( BNpcPtr pBNpc ) void Sapphire::Entity::Player::onMobDeaggro( BNpcPtr pBNpc )
{ {
hateListRemove( pBNpc ); hateListRemove( pBNpc );
if( m_actorIdTohateSlotMap.empty() ) if( m_actorIdTohateSlotMap.empty() && hasStateFlag( Common::PlayerStateFlag::InCombat ) )
{ {
queuePacket( makeActorControl( getId(), ToggleAggro ) ); queuePacket( makeActorControl( getId(), ToggleAggro ) );
unsetStateFlag( Common::PlayerStateFlag::InCombat ); unsetStateFlag( Common::PlayerStateFlag::InCombat );