diff options
19 files changed, 48 insertions, 72 deletions
diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index 3a6b8c93661..dfee4bf1e2e 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -321,7 +321,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u { if (IsUnit(target)) { - target->ToUnit()->HandleEmoteCommand(e.action.emote.emote); + target->ToUnit()->HandleEmoteCommand(static_cast<Emote>(e.action.emote.emote)); TC_LOG_DEBUG("scripts.ai", "SmartScript::ProcessAction:: SMART_ACTION_PLAY_EMOTE: target: %s %s, emote: %u", target->GetName().c_str(), target->GetGUID().ToString().c_str(), e.action.emote.emote); } @@ -475,7 +475,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u { if (IsUnit(target)) { - uint32 emote = Trinity::Containers::SelectRandomContainerElement(emotes); + Emote emote = static_cast<Emote>(Trinity::Containers::SelectRandomContainerElement(emotes)); target->ToUnit()->HandleEmoteCommand(emote); TC_LOG_DEBUG("scripts.ai", "SmartScript::ProcessAction:: SMART_ACTION_RANDOM_EMOTE: Creature %s handle random emote %u", target->GetGUID().ToString().c_str(), emote); diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 057fd26a731..4671e22a454 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -1513,7 +1513,7 @@ void Unit::DealMeleeDamage(CalcDamageInfo* damageInfo, bool durabilityLoss) } } -void Unit::HandleEmoteCommand(uint32 emoteId, Player* target /*=nullptr*/, Trinity::IteratorPair<int32 const*> spellVisualKitIds /*= {}*/) +void Unit::HandleEmoteCommand(Emote emoteId, Player* target /*=nullptr*/, Trinity::IteratorPair<int32 const*> spellVisualKitIds /*= {}*/) { WorldPackets::Chat::Emote packet; packet.Guid = GetGUID(); diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 6e255d8e0f6..b1fcabf673a 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1037,7 +1037,7 @@ class TC_GAME_API Unit : public WorldObject DamageInfo* damageInfo, HealInfo* healInfo); void TriggerAurasProcOnEvent(ProcEventInfo& eventInfo, AuraApplicationProcContainer& procAuras); - void HandleEmoteCommand(uint32 emoteId, Player* target = nullptr, Trinity::IteratorPair<int32 const*> spellVisualKitIds = {}); + void HandleEmoteCommand(Emote emoteId, Player* target = nullptr, Trinity::IteratorPair<int32 const*> spellVisualKitIds = {}); void AttackerStateUpdate (Unit* victim, WeaponAttackType attType = BASE_ATTACK, bool extra = false); void CalculateMeleeDamage(Unit* victim, CalcDamageInfo* damageInfo, WeaponAttackType attackType = BASE_ATTACK); diff --git a/src/server/game/Handlers/ChatHandler.cpp b/src/server/game/Handlers/ChatHandler.cpp index 2f5a0234d91..bae2ba82818 100644 --- a/src/server/game/Handlers/ChatHandler.cpp +++ b/src/server/game/Handlers/ChatHandler.cpp @@ -663,9 +663,9 @@ void WorldSession::HandleTextEmoteOpcode(WorldPackets::Chat::CTextEmote& packet) if (!em) return; - uint32 emoteAnim = em->EmoteID; + Emote emote = static_cast<Emote>(em->EmoteID); - switch (emoteAnim) + switch (emote) { case EMOTE_STATE_SLEEP: case EMOTE_STATE_SIT: @@ -674,13 +674,13 @@ void WorldSession::HandleTextEmoteOpcode(WorldPackets::Chat::CTextEmote& packet) break; case EMOTE_STATE_DANCE: case EMOTE_STATE_READ: - _player->SetEmoteState(Emote(emoteAnim)); + _player->SetEmoteState(emote); break; default: // Only allow text-emotes for "dead" entities (feign death included) if (_player->HasUnitState(UNIT_STATE_DIED)) break; - _player->HandleEmoteCommand(emoteAnim, nullptr, { packet.SpellVisualKitIDs.data(), packet.SpellVisualKitIDs.data() + packet.SpellVisualKitIDs.size() }); + _player->HandleEmoteCommand(emote, nullptr, { packet.SpellVisualKitIDs.data(), packet.SpellVisualKitIDs.data() + packet.SpellVisualKitIDs.size() }); break; } @@ -701,7 +701,7 @@ void WorldSession::HandleTextEmoteOpcode(WorldPackets::Chat::CTextEmote& packet) if (Creature* creature = unit->ToCreature()) creature->AI()->ReceiveEmote(_player, packet.EmoteID); - if (emoteAnim != EMOTE_ONESHOT_NONE) + if (emote != EMOTE_ONESHOT_NONE) _player->RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags::Anim); } diff --git a/src/server/game/Maps/MapScripts.cpp b/src/server/game/Maps/MapScripts.cpp index 9940847191d..59998afb58c 100644 --- a/src/server/game/Maps/MapScripts.cpp +++ b/src/server/game/Maps/MapScripts.cpp @@ -445,7 +445,7 @@ void Map::ScriptsProcess() if (step.script->Emote.Flags & SF_EMOTE_USE_STATE) cSource->SetEmoteState(Emote(step.script->Emote.EmoteID)); else - cSource->HandleEmoteCommand(step.script->Emote.EmoteID); + cSource->HandleEmoteCommand(static_cast<Emote>(step.script->Emote.EmoteID)); } break; diff --git a/src/server/game/Miscellaneous/SharedDefines.h b/src/server/game/Miscellaneous/SharedDefines.h index 56cb37b085b..4c592aa7fb8 100644 --- a/src/server/game/Miscellaneous/SharedDefines.h +++ b/src/server/game/Miscellaneous/SharedDefines.h @@ -3093,7 +3093,7 @@ enum TextEmotes }; // Emotes.db2 (9.0.2.37176) -enum Emote +enum Emote : uint32 { EMOTE_ONESHOT_NONE = 0, EMOTE_ONESHOT_TALK = 1, @@ -3497,6 +3497,10 @@ enum Emote EMOTE_ONESHOT_BARSWEEP_STAND = 987, EMOTE_TORGHAST_TALKING_HEAD_MAW_CAST_SOUND = 989, EMOTE_TORGHAST_TALKING_HEAD_MAW_CAST_SOUND2 = 990, + EMOTE_ONESHOT_STAND_VAR0 = 991, + EMOTE_ONESHOT_FLYCUSTOMSPELL01 = 992, + EMOTE_ONESHOT_SPELLEFFECT_DECAY = 993, + EMOTE_STATE_CREATURE_SPECIAL = 994, }; // AnimationData.db2 (6.0.2.18988) diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h index ce223249d07..5f25655d2bc 100644 --- a/src/server/game/Scripting/ScriptMgr.h +++ b/src/server/game/Scripting/ScriptMgr.h @@ -79,6 +79,7 @@ struct SceneTemplate; enum BattlegroundTypeId : uint32; enum Difficulty : uint8; enum DuelCompleteType : uint8; +enum Emote : uint32; enum QuestStatus : uint8; enum RemoveMethod : uint8; enum ShutdownExitCode : uint32; diff --git a/src/server/game/Texts/CreatureTextMgr.cpp b/src/server/game/Texts/CreatureTextMgr.cpp index 4d554b9232c..37ceba5032a 100644 --- a/src/server/game/Texts/CreatureTextMgr.cpp +++ b/src/server/game/Texts/CreatureTextMgr.cpp @@ -370,7 +370,7 @@ void CreatureTextMgr::SendNonChatPacket(WorldObject* source, WorldPacket const* source->SendMessageToSetInRange(data, dist, true); } -void CreatureTextMgr::SendEmote(Unit* source, uint32 emote) +void CreatureTextMgr::SendEmote(Unit* source, Emote emote) { if (!source) return; diff --git a/src/server/game/Texts/CreatureTextMgr.h b/src/server/game/Texts/CreatureTextMgr.h index 084d9b40f1e..69302c0e8dd 100644 --- a/src/server/game/Texts/CreatureTextMgr.h +++ b/src/server/game/Texts/CreatureTextMgr.h @@ -103,7 +103,7 @@ class TC_GAME_API CreatureTextMgr CreatureTextMap const& GetTextMap() const { return mTextMap; } static void SendSound(Creature* source, uint32 sound, ChatMsg msgType, WorldObject const* whisperTarget = nullptr, CreatureTextRange range = TEXT_RANGE_NORMAL, Team team = TEAM_OTHER, bool gmOnly = false, uint32 keyBroadcastTextId = 0, SoundKitPlayType playType = SoundKitPlayType::Normal); - static void SendEmote(Unit* source, uint32 emote); + static void SendEmote(Unit* source, Emote emote); //if sent, returns the 'duration' of the text else 0 if error uint32 SendChat(Creature* source, uint8 textGroup, WorldObject const* whisperTarget = nullptr, ChatMsg msgType = CHAT_MSG_ADDON, Language language = LANG_ADDON, CreatureTextRange range = TEXT_RANGE_NORMAL, uint32 sound = 0, SoundKitPlayType playType = SoundKitPlayType::Normal, Team team = TEAM_OTHER, bool gmOnly = false, Player* srcPlr = nullptr); diff --git a/src/server/scripts/BrokenIsles/zone_orderhall_warrior.cpp b/src/server/scripts/BrokenIsles/zone_orderhall_warrior.cpp index b9f4e994d5a..488c6110c34 100644 --- a/src/server/scripts/BrokenIsles/zone_orderhall_warrior.cpp +++ b/src/server/scripts/BrokenIsles/zone_orderhall_warrior.cpp @@ -198,7 +198,7 @@ struct npc_feasting_valarjar : public ScriptedAI { _scheduler.Schedule(5s, 30s, [this](TaskContext context) { - uint32 emoteID = Trinity::Containers::SelectRandomContainerElement(_randomEmotes); + Emote emoteID = Trinity::Containers::SelectRandomContainerElement(_randomEmotes); if (emoteID == EMOTE_ONESHOT_EAT_NO_SHEATHE) { me->SetVirtualItem(0, urand(0, 1) ? ITEM_MONSTER_ITEM_MUTTON_WITH_BITE : ITEM_MONSTER_ITEM_TANKARD_WOODEN); @@ -235,7 +235,7 @@ struct npc_feasting_valarjar : public ScriptedAI private: TaskScheduler _scheduler; - std::unordered_set<uint32> _randomEmotes; + std::unordered_set<Emote> _randomEmotes; }; struct npc_valarjar_paying_respect_to_odyn : ScriptedAI @@ -302,7 +302,7 @@ struct npc_valarjar_paying_respect_to_odyn : ScriptedAI private: TaskScheduler _scheduler; - std::unordered_set<uint32> _randomEmotes; + std::unordered_set<Emote> _randomEmotes; }; struct npc_incoming_valarjar_aspirant_1 : public npc_valarjar_paying_respect_to_odyn @@ -583,7 +583,7 @@ struct npc_spectating_valarjar : public ScriptedAI private: TaskScheduler _scheduler; - std::unordered_set<uint32> _randomEmotes; + std::unordered_set<Emote> _randomEmotes; }; struct npc_valkyr_of_odyn : public ScriptedAI diff --git a/src/server/scripts/Commands/cs_debug.cpp b/src/server/scripts/Commands/cs_debug.cpp index 7f1dc590e4c..e82a314798e 100644 --- a/src/server/scripts/Commands/cs_debug.cpp +++ b/src/server/scripts/Commands/cs_debug.cpp @@ -1256,14 +1256,10 @@ public: } //show animation - static bool HandleDebugAnimCommand(ChatHandler* handler, char const* args) + static bool HandleDebugAnimCommand(ChatHandler* handler, uint32 emoteId) { - if (!*args) - return false; - - uint32 animId = atoi((char*)args); if (Unit* unit = handler->getSelectedUnit()) - unit->HandleEmoteCommand(animId); + unit->HandleEmoteCommand(static_cast<Emote>(emoteId)); return true; } diff --git a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp index 841034035bf..eebe379b8c7 100644 --- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp @@ -524,7 +524,7 @@ struct boss_headless_horseman : public ScriptedAI if (Player* player = it->GetSource()) { player->Say(HeadlessHorsemanInitialPlayerTexts[talkContext.GetRepeatCounter()], LANG_UNIVERSAL); - player->HandleEmoteCommand(ANIM_EMOTE_SHOUT); + player->HandleEmoteCommand(EMOTE_ONESHOT_SHOUT); } } diff --git a/src/server/scripts/EasternKingdoms/zone_redridge_mountains.cpp b/src/server/scripts/EasternKingdoms/zone_redridge_mountains.cpp index c59df0ed693..81661015ca5 100644 --- a/src/server/scripts/EasternKingdoms/zone_redridge_mountains.cpp +++ b/src/server/scripts/EasternKingdoms/zone_redridge_mountains.cpp @@ -275,27 +275,20 @@ enum RedridgeCitizen EVENT_SAY_TEXT = 9, // Used by npc's in Lakeshire Townhall EVENT_LEAVE_TOWNHALL = 10, // Used by npc's in Lakeshire Townhall - EMOTE_ONESHOTCHEER = 4, - EMOTE_ONESHOTROAR = 15, - EMOTE_ONESHOTSHOT = 22, - EMOTE_ONESHOTPOINT = 25, - EMOTE_ONESHOTBATTLEROAR = 53, - EMOTE_ONESHOTNO = 274, - SAY_IN_TOWNHALL = 0, // Used by npc's in Lakeshire Townhall SAY_LEAVE_TOWNHALL = 1, // Used by npc's in Lakeshire Townhall SPELL_APPLY_QUEST_INVIS_ZONE_19 = 82099 // Used by npc's in Lakeshire Townhall }; -const uint32 Emote[6] = +const Emote EmoteID[6] = { - EMOTE_ONESHOTCHEER, - EMOTE_ONESHOTROAR, - EMOTE_ONESHOTSHOT, - EMOTE_ONESHOTPOINT, - EMOTE_ONESHOTBATTLEROAR, - EMOTE_ONESHOTNO + EMOTE_ONESHOT_CHEER, + EMOTE_ONESHOT_ROAR, + EMOTE_ONESHOT_SHOUT, + EMOTE_ONESHOT_POINT, + EMOTE_ONESHOT_BATTLE_ROAR, + EMOTE_ONESHOT_NO }; uint32 const pathSize = 8; @@ -343,7 +336,7 @@ public: _events.ScheduleEvent(EVENT_SAY_TEXT, Seconds(5), Seconds(30)); break; case EVENT_PLAYEMOTE: - me->HandleEmoteCommand(Emote[urand(0, 5)]); + me->HandleEmoteCommand(EmoteID[urand(0, 5)]); _events.ScheduleEvent(EVENT_PLAYEMOTE, Seconds(10), Seconds(25)); break; case EVENT_SAY_TEXT: diff --git a/src/server/scripts/Events/childrens_week.cpp b/src/server/scripts/Events/childrens_week.cpp index d5f0f10383d..ab619a98e1a 100644 --- a/src/server/scripts/Events/childrens_week.cpp +++ b/src/server/scripts/Events/childrens_week.cpp @@ -1046,26 +1046,15 @@ class npc_cw_area_trigger : public CreatureScript if (player->GetQuestStatus(QUEST_NOW_WHEN_I_GROW_UP) == QUEST_STATUS_COMPLETE) if (Creature* samuro = me->FindNearestCreature(25151, 20.0f)) { - uint32 emote = 0; - switch (urand(1, 5)) - { - case 1: - emote = EMOTE_ONESHOT_WAVE; - break; - case 2: - emote = EMOTE_ONESHOT_ROAR; - break; - case 3: - emote = EMOTE_ONESHOT_FLEX; - break; - case 4: - emote = EMOTE_ONESHOT_SALUTE; - break; - case 5: - emote = EMOTE_ONESHOT_DANCE; - break; - } - samuro->HandleEmoteCommand(emote); + Emote const emotes[] = + { + EMOTE_ONESHOT_WAVE, + EMOTE_ONESHOT_ROAR, + EMOTE_ONESHOT_FLEX, + EMOTE_ONESHOT_SALUTE, + EMOTE_ONESHOT_DANCE + }; + samuro->HandleEmoteCommand(Trinity::Containers::SelectRandomContainerElement(emotes)); } } break; diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp index 5ae1c6c7bea..cb0007b86c2 100644 --- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp @@ -1091,7 +1091,7 @@ class npc_jaina_or_sylvanas_escape_hor : public CreatureScript break; case EVENT_ESCAPE_7: if (Creature* lichking = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_THE_LICH_KING_ESCAPE))) - lichking->HandleEmoteCommand(TEXT_EMOTE_ROAR); + lichking->HandleEmoteCommand(EMOTE_ONESHOT_ROAR); me->GetMotionMaster()->MovePoint(0, NpcJainaOrSylvanasEscapeRoute[0]); _events.ScheduleEvent(EVENT_ESCAPE_8, 3s); break; diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp index 7801e80c60b..b880fa32ed2 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp @@ -672,7 +672,7 @@ private: bool _checkCasting; }; -static std::vector<uint32> const DarkFallensEmotes = +static Emote const DarkFallensEmotes[]= { EMOTE_ONESHOT_TALK, EMOTE_ONESHOT_EXCLAMATION, diff --git a/src/server/scripts/Northrend/zone_grizzly_hills.cpp b/src/server/scripts/Northrend/zone_grizzly_hills.cpp index eeab7e2ff11..262ffc44dbc 100644 --- a/src/server/scripts/Northrend/zone_grizzly_hills.cpp +++ b/src/server/scripts/Northrend/zone_grizzly_hills.cpp @@ -127,7 +127,7 @@ public: break; case 20: if (Creature* RWORG = ObjectAccessor::GetCreature(*me, _RavenousworgGUID)) - RWORG->HandleEmoteCommand(34); + RWORG->HandleEmoteCommand(EMOTE_ONESHOT_WOUND_CRITICAL); break; case 21: if (Creature* Mrfloppy = ObjectAccessor::GetCreature(*me, _mrfloppyGUID)) diff --git a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp index b4cd3d82f2f..ea3734612f3 100644 --- a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp @@ -150,7 +150,7 @@ class boss_broggok : public CreatureScript } }; -static std::vector<uint32> const PrisionersEmotes = +static Emote const PrisionersEmotes[] = { EMOTE_ONESHOT_ROAR, EMOTE_ONESHOT_SHOUT, diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index 28bb777f866..5ebaaae0049 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -3094,14 +3094,7 @@ class spell_gen_seaforium_blast : public SpellScript } }; -enum SpectatorCheerTrigger -{ - EMOTE_ONE_SHOT_CHEER = 4, - EMOTE_ONE_SHOT_EXCLAMATION = 5, - EMOTE_ONE_SHOT_APPLAUD = 21 -}; - -uint8 const EmoteArray[3] = { EMOTE_ONE_SHOT_CHEER, EMOTE_ONE_SHOT_EXCLAMATION, EMOTE_ONE_SHOT_APPLAUD }; +static Emote const EmoteArray[] = { EMOTE_ONESHOT_CHEER, EMOTE_ONESHOT_EXCLAMATION, EMOTE_ONESHOT_APPLAUD }; class spell_gen_spectator_cheer_trigger : public SpellScript { @@ -3110,7 +3103,7 @@ class spell_gen_spectator_cheer_trigger : public SpellScript void HandleDummy(SpellEffIndex /*effIndex*/) { if (roll_chance_i(40)) - GetCaster()->HandleEmoteCommand(EmoteArray[urand(0, 2)]); + GetCaster()->HandleEmoteCommand(Trinity::Containers::SelectRandomContainerElement(EmoteArray)); } void Register() override |