[Performance] Reduced CPU footprint in non-combat zones doing constant checks for combat related activities

This commit is contained in:
Akkadius 2017-03-25 23:32:49 -05:00
parent 9e41795594
commit 719098a97c
3 changed files with 62 additions and 50 deletions

View File

@ -1,5 +1,8 @@
EQEMu Changelog (Started on Sept 24, 2003 15:50) EQEMu Changelog (Started on Sept 24, 2003 15:50)
------------------------------------------------------- -------------------------------------------------------
== 03/25/2017 ==
Akkadius: Reduced CPU footprint in non-combat zones doing constant checks for combat related activities
== 03/12/2017 == == 03/12/2017 ==
Akkadius: Akkadius:
- Implemented range rules for packets and other functions - Implemented range rules for packets and other functions

View File

@ -616,7 +616,7 @@ bool Client::Process() {
//At this point, we are still connected, everything important has taken //At this point, we are still connected, everything important has taken
//place, now check to see if anybody wants to aggro us. //place, now check to see if anybody wants to aggro us.
// only if client is not feigned // only if client is not feigned
if(ret && !GetFeigned() && scanarea_timer.Check()) { if(zone->CanDoCombat() && ret && !GetFeigned() && scanarea_timer.Check()) {
entity_list.CheckClientAggro(this); entity_list.CheckClientAggro(this);
} }
#endif #endif

View File

@ -726,6 +726,7 @@ void Client::AI_SpellCast()
void Client::AI_Process() void Client::AI_Process()
{ {
if (!IsAIControlled()) if (!IsAIControlled())
return; return;
@ -956,6 +957,10 @@ void Mob::AI_Process() {
bool engaged = IsEngaged(); bool engaged = IsEngaged();
bool doranged = false; bool doranged = false;
if (!zone->CanDoCombat()) {
engaged = false;
}
// Begin: Additions for Wiz Fear Code // Begin: Additions for Wiz Fear Code
// //
if(RuleB(Combat, EnableFearPathing)){ if(RuleB(Combat, EnableFearPathing)){
@ -1022,7 +1027,8 @@ void Mob::AI_Process() {
if (!target) { if (!target) {
SetTarget(hate_list.GetEntWithMostHateOnList(this)); SetTarget(hate_list.GetEntWithMostHateOnList(this));
} }
} else { }
else {
if (!ImprovedTaunt()) if (!ImprovedTaunt())
SetTarget(hate_list.GetEntWithMostHateOnList(this)); SetTarget(hate_list.GetEntWithMostHateOnList(this));
} }
@ -1059,7 +1065,8 @@ void Mob::AI_Process() {
if (DistanceSquaredNoZ(m_Position, npcSpawnPoint) > tether_range) { if (DistanceSquaredNoZ(m_Position, npcSpawnPoint) > tether_range) {
GMMove(npcSpawnPoint.x, npcSpawnPoint.y, npcSpawnPoint.z, npcSpawnPoint.w); GMMove(npcSpawnPoint.x, npcSpawnPoint.y, npcSpawnPoint.z, npcSpawnPoint.w);
} }
} else if(GetSpecialAbility(LEASH)) { }
else if (GetSpecialAbility(LEASH)) {
float leash_range = static_cast<float>(GetSpecialAbilityParam(LEASH, 0)); float leash_range = static_cast<float>(GetSpecialAbilityParam(LEASH, 0));
leash_range = leash_range > 0.0f ? leash_range * leash_range : pAggroRange * pAggroRange; leash_range = leash_range > 0.0f ? leash_range * leash_range : pAggroRange * pAggroRange;
@ -1263,7 +1270,8 @@ void Mob::AI_Process() {
AI_walking_timer->Start(100); AI_walking_timer->Start(100);
pLastFightingDelayMoving = Timer::GetCurrentTime(); pLastFightingDelayMoving = Timer::GetCurrentTime();
return; return;
} else if(tar != nullptr) { }
else if (tar != nullptr) {
SetTarget(tar); SetTarget(tar);
return; return;
} }
@ -1311,11 +1319,12 @@ void Mob::AI_Process() {
} }
} }
} }
else else {
{
if (m_PlayerState & static_cast<uint32>(PlayerState::Aggressive)) if (m_PlayerState & static_cast<uint32>(PlayerState::Aggressive))
SendRemovePlayerState(PlayerState::Aggressive); SendRemovePlayerState(PlayerState::Aggressive);
if(AI_feign_remember_timer->Check()) {
if(!zone->CanDoCombat() && AI_feign_remember_timer->Check()) {
// 6/14/06 // 6/14/06
// Improved Feign Death Memory // Improved Feign Death Memory
// check to see if any of our previous feigned targets have gotten up. // check to see if any of our previous feigned targets have gotten up.
@ -1340,7 +1349,7 @@ void Mob::AI_Process() {
{ {
//we processed a spell action, so do nothing else. //we processed a spell action, so do nothing else.
} }
else if (AI_scan_area_timer->Check()) else if (!zone->CanDoCombat() && AI_scan_area_timer->Check())
{ {
/* /*
* This is where NPCs look around to see if they want to attack anybody. * This is where NPCs look around to see if they want to attack anybody.