aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2024-02-14 12:14:36 +0100
committerShauren <shauren.trinity@gmail.com>2024-02-14 12:14:36 +0100
commit3fd1a2b78c8791576679e93ce1d43038db2212c5 (patch)
tree751a0725a2735b520a77bd6bab54bf6dce2bb4b1 /src/server
parent412610e495684cfa8eb2f4ff7c25d450e1a016ea (diff)
Core/Creatures: Implemented CREATURE_STATIC_FLAG_3_NO_THREAT_FEEDBACK
Diffstat (limited to 'src/server')
-rw-r--r--src/server/game/Combat/ThreatManager.cpp9
-rw-r--r--src/server/game/Entities/Creature/Creature.h3
2 files changed, 12 insertions, 0 deletions
diff --git a/src/server/game/Combat/ThreatManager.cpp b/src/server/game/Combat/ThreatManager.cpp
index b9d136e5e13..9376d42b010 100644
--- a/src/server/game/Combat/ThreatManager.cpp
+++ b/src/server/game/Combat/ThreatManager.cpp
@@ -810,6 +810,9 @@ void ThreatManager::UnregisterRedirectThreat(uint32 spellId, ObjectGuid const& v
void ThreatManager::SendClearAllThreatToClients() const
{
+ if (Creature const* owner = _owner->ToCreature(); owner && owner->IsThreatFeedbackDisabled())
+ return;
+
WorldPackets::Combat::ThreatClear threatClear;
threatClear.UnitGUID = _owner->GetGUID();
_owner->SendMessageToSet(threatClear.Write(), false);
@@ -817,6 +820,9 @@ void ThreatManager::SendClearAllThreatToClients() const
void ThreatManager::SendRemoveToClients(Unit const* victim) const
{
+ if (Creature const* owner = _owner->ToCreature(); owner && owner->IsThreatFeedbackDisabled())
+ return;
+
WorldPackets::Combat::ThreatRemove threatRemove;
threatRemove.UnitGUID = _owner->GetGUID();
threatRemove.AboutGUID = victim->GetGUID();
@@ -825,6 +831,9 @@ void ThreatManager::SendRemoveToClients(Unit const* victim) const
void ThreatManager::SendThreatListToClients(bool newHighest) const
{
+ if (Creature const* owner = _owner->ToCreature(); owner && owner->IsThreatFeedbackDisabled())
+ return;
+
auto fillSharedPacketDataAndSend = [&](auto& packet)
{
packet.UnitGUID = _owner->GetGUID();
diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h
index ff408fbd314..480cf06e148 100644
--- a/src/server/game/Entities/Creature/Creature.h
+++ b/src/server/game/Entities/Creature/Creature.h
@@ -400,6 +400,9 @@ class TC_GAME_API Creature : public Unit, public GridObject<Creature>, public Ma
void AtEngage(Unit* target) override;
void AtDisengage() override;
+ bool IsThreatFeedbackDisabled() const { return _staticFlags.HasFlag(CREATURE_STATIC_FLAG_3_NO_THREAT_FEEDBACK); }
+ void SetNoThreatFeedback(bool noThreatFeedback) { _staticFlags.ApplyFlag(CREATURE_STATIC_FLAG_3_NO_THREAT_FEEDBACK, noThreatFeedback); }
+
void OverrideSparringHealthPct(std::vector<float> const& healthPct);
float GetSparringHealthPct() const { return _sparringHealthPct; }
uint32 CalculateDamageForSparring(Unit* attacker, uint32 damage);