diff options
| author | Shauren <shauren.trinity@gmail.com> | 2024-02-27 16:13:23 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2024-02-27 16:13:23 +0100 |
| commit | deb24f3f53540733bef15f0a90a1b7e41e76d60e (patch) | |
| tree | 012925de787277ec25ce7233c3132816a56c0e4f /src/server/game/Entities | |
| parent | 9463933eda630be97e3ab16cf66e419d2f696109 (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.cpp | 16 | ||||
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.h | 7 |
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; |
