1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-05-07 11:17:46 +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() )
{
auto pPlayer = pChara->getAsPlayer();
pPlayer->hateListAdd( getAsBNpc() );
pPlayer->onMobAggro( getAsBNpc() );
}
auto& scriptMgr = Common::Service< Sapphire::Scripting::ScriptMgr >::ref();
scriptMgr.onBNpcHateListAdd( *this, *pChara );

View file

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