diff options
author | Shauren <shauren.trinity@gmail.com> | 2024-02-14 12:14:36 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2024-02-14 12:14:36 +0100 |
commit | 3fd1a2b78c8791576679e93ce1d43038db2212c5 (patch) | |
tree | 751a0725a2735b520a77bd6bab54bf6dce2bb4b1 /src | |
parent | 412610e495684cfa8eb2f4ff7c25d450e1a016ea (diff) |
Core/Creatures: Implemented CREATURE_STATIC_FLAG_3_NO_THREAT_FEEDBACK
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Combat/ThreatManager.cpp | 9 | ||||
-rw-r--r-- | src/server/game/Entities/Creature/Creature.h | 3 |
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); |