From 3bfe59b41d4e4111e1641012ff07f6f480b3d055 Mon Sep 17 00:00:00 2001 From: The Game Date: Tue, 17 Apr 2012 11:40:58 -0400 Subject: [PATCH 1/3] Fix unit tracking to not being limited to the caster of SPELL_AURA_MOD_STALKED, fixes https://github.com/TrinityCore/TrinityCore/issues/6208 --- src/server/game/Entities/Object/Object.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 70b680c6ae..851c0f47e0 100755 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -626,7 +626,11 @@ void Object::_BuildValuesUpdate(uint8 updatetype, ByteBuffer * data, UpdateMask* if (!target->isAllowedToLoot(creature)) dynamicFlags &= ~UNIT_DYNFLAG_LOOTABLE; } - + if(Unit const* unit = ToUnit()) + { + if(!unit->HasAuraTypeWithCaster(SPELL_AURA_MOD_STALKED, target->GetGUID())) + dynamicFlags &= ~UNIT_DYNFLAG_TRACK_UNIT; + } *data << dynamicFlags; } // FG: pretend that OTHER players in own group are friendly ("blue") From 7dc228ea54dca734a9badcc41d5a4efe9f18c650 Mon Sep 17 00:00:00 2001 From: The Game Date: Wed, 18 Apr 2012 13:39:07 -0400 Subject: [PATCH 2/3] Fix code style, thanks Discover. --- src/server/game/Entities/Object/Object.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 851c0f47e0..8bf22c8b7a 100755 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -626,11 +626,9 @@ void Object::_BuildValuesUpdate(uint8 updatetype, ByteBuffer * data, UpdateMask* if (!target->isAllowedToLoot(creature)) dynamicFlags &= ~UNIT_DYNFLAG_LOOTABLE; } - if(Unit const* unit = ToUnit()) - { - if(!unit->HasAuraTypeWithCaster(SPELL_AURA_MOD_STALKED, target->GetGUID())) + if (Unit const* unit = ToUnit()) + if (!unit->HasAuraTypeWithCaster(SPELL_AURA_MOD_STALKED, target->GetGUID())) dynamicFlags &= ~UNIT_DYNFLAG_TRACK_UNIT; - } *data << dynamicFlags; } // FG: pretend that OTHER players in own group are friendly ("blue") From 9320131892f4458f506a87f7976c5b60fb9ce4e0 Mon Sep 17 00:00:00 2001 From: The Game Date: Tue, 24 Apr 2012 13:11:22 -0400 Subject: [PATCH 3/3] Check if unit has UNIT_DYNFLAG_TRACK_UNIT before checking auras to prevent prevent unnecessary operations, thanks you QAston for suggesting. --- src/server/game/Entities/Object/Object.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 8bf22c8b7a..e26bc0a6ea 100755 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -626,9 +626,10 @@ void Object::_BuildValuesUpdate(uint8 updatetype, ByteBuffer * data, UpdateMask* if (!target->isAllowedToLoot(creature)) dynamicFlags &= ~UNIT_DYNFLAG_LOOTABLE; } - if (Unit const* unit = ToUnit()) - if (!unit->HasAuraTypeWithCaster(SPELL_AURA_MOD_STALKED, target->GetGUID())) - dynamicFlags &= ~UNIT_DYNFLAG_TRACK_UNIT; + if(dynamicFlags & UNIT_DYNFLAG_TRACK_UNIT) + if (Unit const* unit = ToUnit()) + if (!unit->HasAuraTypeWithCaster(SPELL_AURA_MOD_STALKED, target->GetGUID())) + dynamicFlags &= ~UNIT_DYNFLAG_TRACK_UNIT; *data << dynamicFlags; } // FG: pretend that OTHER players in own group are friendly ("blue")