mirror of
https://github.com/EQEmu/Server.git
synced 2026-06-03 20:30:25 +00:00
[Performance] Don't process ProjectileAttack checks for NPC's that are not engaged in any combat
This commit is contained in:
@@ -6,6 +6,7 @@ Akkadius: [Performance] Fixed a large overhead issue where every single NPC in a
|
||||
Akkadius: [Performance] Removed a timer where clients would constantly calculate light amount on equipment every 600ms, instead
|
||||
clients will update light when changing equipment or entering a zone
|
||||
Akkadius: [Performance] Disabled enraged timer checks for NPC's that do not actually have enrage as a special attack
|
||||
Akkadius: [Performance] Don't process ProjectileAttack checks for NPC's that are not engaged in any combat
|
||||
|
||||
== 03/27/2017 ==
|
||||
Akkadius: [Performance] Reworked how client to NPC aggro checks are made
|
||||
|
||||
+6
-4
@@ -1011,8 +1011,8 @@ void Mob::AI_Process() {
|
||||
CastToNPC()->CheckSignal();
|
||||
}
|
||||
|
||||
if (engaged)
|
||||
{
|
||||
if (engaged) {
|
||||
|
||||
if (!(m_PlayerState & static_cast<uint32>(PlayerState::Aggressive)))
|
||||
SendAddPlayerState(PlayerState::Aggressive);
|
||||
// we are prevented from getting here if we are blind and don't have a target in range
|
||||
@@ -1039,8 +1039,7 @@ void Mob::AI_Process() {
|
||||
if (!target)
|
||||
return;
|
||||
|
||||
if (target->IsCorpse())
|
||||
{
|
||||
if (target->IsCorpse()) {
|
||||
RemoveFromHateList(this);
|
||||
return;
|
||||
}
|
||||
@@ -1057,6 +1056,8 @@ void Mob::AI_Process() {
|
||||
if (DivineAura())
|
||||
return;
|
||||
|
||||
ProjectileAttack();
|
||||
|
||||
auto npcSpawnPoint = CastToNPC()->GetSpawnPoint();
|
||||
if (GetSpecialAbility(TETHER)) {
|
||||
float tether_range = static_cast<float>(GetSpecialAbilityParam(TETHER, 0));
|
||||
@@ -1255,6 +1256,7 @@ void Mob::AI_Process() {
|
||||
|
||||
}
|
||||
AI_EngagedCastCheck();
|
||||
|
||||
} //end is within combat rangepet
|
||||
else {
|
||||
//we cannot reach our target...
|
||||
|
||||
+8
-9
@@ -587,8 +587,7 @@ void NPC::RemoveCash() {
|
||||
|
||||
bool NPC::Process()
|
||||
{
|
||||
if (IsStunned() && stunned_timer.Check())
|
||||
{
|
||||
if (IsStunned() && stunned_timer.Check()) {
|
||||
Mob::UnStun();
|
||||
this->spun_timer.Disable();
|
||||
}
|
||||
@@ -608,8 +607,7 @@ bool NPC::Process()
|
||||
|
||||
SpellProcess();
|
||||
|
||||
if(tic_timer.Check())
|
||||
{
|
||||
if (tic_timer.Check()) {
|
||||
parse->EventNPC(EVENT_TICK, this, nullptr, "", 0);
|
||||
BuffProcess();
|
||||
|
||||
@@ -632,14 +630,17 @@ bool NPC::Process()
|
||||
SetHP(GetHP() + GetNPCHPRegen());
|
||||
else
|
||||
SetHP(GetHP() + OOCRegen);
|
||||
} else
|
||||
}
|
||||
else
|
||||
SetHP(GetHP() + GetNPCHPRegen());
|
||||
} else if(GetHP() < GetMaxHP() && GetOwnerID() !=0) {
|
||||
}
|
||||
else if (GetHP() < GetMaxHP() && GetOwnerID() != 0) {
|
||||
if (!IsEngaged()) //pet
|
||||
SetHP(GetHP() + GetNPCHPRegen() + bonus + (GetLevel() / 5));
|
||||
else
|
||||
SetHP(GetHP() + GetNPCHPRegen() + bonus);
|
||||
} else
|
||||
}
|
||||
else
|
||||
SetHP(GetHP() + GetNPCHPRegen());
|
||||
|
||||
if (GetMana() < GetMaxMana()) {
|
||||
@@ -693,8 +694,6 @@ bool NPC::Process()
|
||||
viral_timer_counter = 0;
|
||||
}
|
||||
|
||||
ProjectileAttack();
|
||||
|
||||
if(spellbonuses.GravityEffect == 1) {
|
||||
if(gravity_timer.Check())
|
||||
DoGravityEffect();
|
||||
|
||||
@@ -956,7 +956,6 @@ void Mob::ProjectileAttack()
|
||||
{
|
||||
if (!HasProjectileAttack())
|
||||
return;
|
||||
;
|
||||
|
||||
Mob *target = nullptr;
|
||||
bool disable = true;
|
||||
|
||||
Reference in New Issue
Block a user