aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2024-02-27 16:13:23 +0100
committerShauren <shauren.trinity@gmail.com>2024-02-27 16:13:23 +0100
commitdeb24f3f53540733bef15f0a90a1b7e41e76d60e (patch)
tree012925de787277ec25ce7233c3132816a56c0e4f /src/server/game/Entities
parent9463933eda630be97e3ab16cf66e419d2f696109 (diff)
Core/Units: Added helper function to clear boss emote frame and enable SMSG_CLEAR_BOSS_EMOTES
Diffstat (limited to 'src/server/game/Entities')
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp16
-rw-r--r--src/server/game/Entities/Unit/Unit.h7
2 files changed, 23 insertions, 0 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 5a636724cc6..c285fae8f96 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -13581,6 +13581,22 @@ void Unit::Whisper(uint32 textId, Player* target, bool isBossWhisper /*= false*/
target->SendDirectMessage(packet.Write());
}
+void Unit::ClearBossEmotes(Optional<uint32> zoneId, Player const* target) const
+{
+ WorldPackets::Chat::ClearBossEmotes clearBossEmotes;
+ clearBossEmotes.Write();
+
+ if (target)
+ {
+ target->SendDirectMessage(clearBossEmotes.GetRawPacket());
+ return;
+ }
+
+ for (MapReference const& ref : GetMap()->GetPlayers())
+ if (!zoneId || DB2Manager::IsInArea(ref.GetSource()->GetAreaId(), *zoneId))
+ ref.GetSource()->SendDirectMessage(clearBossEmotes.GetRawPacket());
+}
+
SpellInfo const* Unit::GetCastSpellInfo(SpellInfo const* spellInfo, TriggerCastFlags& triggerFlag) const
{
auto findMatchingAuraEffectIn = [this, spellInfo, &triggerFlag](AuraType type) -> SpellInfo const*
diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h
index 558c750f04f..5d1fbd9e64a 100644
--- a/src/server/game/Entities/Unit/Unit.h
+++ b/src/server/game/Entities/Unit/Unit.h
@@ -1767,6 +1767,13 @@ class TC_GAME_API Unit : public WorldObject
virtual void TextEmote(uint32 textId, WorldObject const* target = nullptr, bool isBossEmote = false);
virtual void Whisper(uint32 textId, Player* target, bool isBossWhisper = false);
+ /**
+ @brief Clears boss emotes frame
+ @param zoneId Only clears emotes for players in that zone id
+ @param target Only clears emotes for that player
+ */
+ void ClearBossEmotes(Optional<uint32> zoneId = {}, Player const* target = nullptr) const;
+
float GetCollisionHeight() const override;
uint32 GetVirtualItemId(uint32 slot) const;
uint16 GetVirtualItemAppearanceMod(uint32 slot) const;