aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Keresztes Schmidt <carbenium@outlook.com>2020-08-15 15:29:43 +0200
committerGitHub <noreply@github.com>2020-08-15 15:29:43 +0200
commit6c7837f947ff4eb5110a116a371daa6f9e2b3bbe (patch)
tree68c0338b65932b47b62903f8b09a3f573909b66e
parent34d403e83f42304332f89ffc73549f6f2c695ccd (diff)
Core/Unit: Make HandleEmoteCommand typesafe (#25249)
* Scripts/ScarletMonastery: Fix wrong emote during Headless Horseman encounter * Scripts/HoR: Fix wrong emote during escape event * Core/Unit: Make improve type safety of HandleEmoteCommand Change argument type to the expected enum type Emote * Scripts/CoS: Use SetUInt32Value to set UNIT_NPC_EMOTESTATE UNIT_NPC_EMOTESTATE is no flag field
-rw-r--r--src/server/game/AI/SmartScripts/SmartScript.cpp4
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp2
-rw-r--r--src/server/game/Entities/Unit/Unit.h2
-rw-r--r--src/server/game/Handlers/ChatHandler.cpp8
-rw-r--r--src/server/game/Maps/MapScripts.cpp2
-rw-r--r--src/server/game/Scripting/ScriptMgr.cpp2
-rw-r--r--src/server/game/Scripting/ScriptMgr.h5
-rw-r--r--src/server/game/Texts/CreatureTextMgr.cpp2
-rw-r--r--src/server/game/Texts/CreatureTextMgr.h2
-rw-r--r--src/server/scripts/Commands/cs_debug.cpp8
-rw-r--r--src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp2
-rw-r--r--src/server/scripts/Events/childrens_week.cpp29
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp12
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/npc_arthas.cpp2
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp2
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp2
-rw-r--r--src/server/scripts/Northrend/zone_grizzly_hills.cpp2
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_broggok.cpp2
-rw-r--r--src/server/scripts/Spells/spell_generic.cpp11
-rw-r--r--src/server/shared/SharedDefines.h2
20 files changed, 41 insertions, 62 deletions
diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp
index feb0cbd978e..4df56079d1f 100644
--- a/src/server/game/AI/SmartScripts/SmartScript.cpp
+++ b/src/server/game/AI/SmartScripts/SmartScript.cpp
@@ -307,7 +307,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);
}
@@ -461,7 +461,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 f695159ee7c..5d71cd12499 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -1527,7 +1527,7 @@ void Unit::DealMeleeDamage(CalcDamageInfo* damageInfo, bool durabilityLoss)
}
}
-void Unit::HandleEmoteCommand(uint32 emoteId)
+void Unit::HandleEmoteCommand(Emote emoteId)
{
WorldPackets::Chat::Emote packet;
packet.EmoteID = emoteId;
diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h
index 3d2110ada04..c83f2e5edd5 100644
--- a/src/server/game/Entities/Unit/Unit.h
+++ b/src/server/game/Entities/Unit/Unit.h
@@ -948,7 +948,7 @@ class TC_GAME_API Unit : public WorldObject
DamageInfo* damageInfo, HealInfo* healInfo);
void TriggerAurasProcOnEvent(ProcEventInfo& eventInfo, AuraApplicationProcContainer& procAuras);
- void HandleEmoteCommand(uint32 emoteId);
+ void HandleEmoteCommand(Emote emoteId);
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 56e4ed2066b..a43707d0ef6 100644
--- a/src/server/game/Handlers/ChatHandler.cpp
+++ b/src/server/game/Handlers/ChatHandler.cpp
@@ -562,7 +562,7 @@ void WorldSession::HandleMessagechatOpcode(WorldPacket& recvData)
void WorldSession::HandleEmoteOpcode(WorldPackets::Chat::EmoteClient& packet)
{
- uint32 emoteId = packet.EmoteID;
+ Emote emoteId = static_cast<Emote>(packet.EmoteID);
// restrict to the only emotes hardcoded in client
if (emoteId != EMOTE_ONESHOT_NONE && emoteId != EMOTE_ONESHOT_WAVE)
@@ -632,9 +632,9 @@ void WorldSession::HandleTextEmoteOpcode(WorldPacket& recvData)
if (!em)
return;
- uint32 emote_anim = em->EmoteID;
+ Emote emote = static_cast<Emote>(em->EmoteID);
- switch (emote_anim)
+ switch (emote)
{
case EMOTE_STATE_SLEEP:
case EMOTE_STATE_SIT:
@@ -645,7 +645,7 @@ void WorldSession::HandleTextEmoteOpcode(WorldPacket& recvData)
// Only allow text-emotes for "dead" entities (feign death included)
if (GetPlayer()->HasUnitState(UNIT_STATE_DIED))
break;
- GetPlayer()->HandleEmoteCommand(emote_anim);
+ GetPlayer()->HandleEmoteCommand(emote);
break;
}
diff --git a/src/server/game/Maps/MapScripts.cpp b/src/server/game/Maps/MapScripts.cpp
index 0b6f4901c3d..63c4113348e 100644
--- a/src/server/game/Maps/MapScripts.cpp
+++ b/src/server/game/Maps/MapScripts.cpp
@@ -450,7 +450,7 @@ void Map::ScriptsProcess()
if (step.script->Emote.Flags & SF_EMOTE_USE_STATE)
cSource->SetUInt32Value(UNIT_NPC_EMOTESTATE, 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/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp
index 6e0024e769d..acb2c962d57 100644
--- a/src/server/game/Scripting/ScriptMgr.cpp
+++ b/src/server/game/Scripting/ScriptMgr.cpp
@@ -1910,7 +1910,7 @@ void ScriptMgr::OnPlayerChat(Player* player, uint32 type, uint32 lang, std::stri
FOREACH_SCRIPT(PlayerScript)->OnChat(player, type, lang, msg, channel);
}
-void ScriptMgr::OnPlayerEmote(Player* player, uint32 emote)
+void ScriptMgr::OnPlayerEmote(Player* player, Emote emote)
{
FOREACH_SCRIPT(PlayerScript)->OnEmote(player, emote);
}
diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h
index f255a3b06a3..be35f14448e 100644
--- a/src/server/game/Scripting/ScriptMgr.h
+++ b/src/server/game/Scripting/ScriptMgr.h
@@ -76,6 +76,7 @@ enum BattlegroundTypeId : uint32;
enum ContentLevels : uint8;
enum Difficulty : uint8;
enum DuelCompleteType : uint8;
+enum Emote : uint32;
enum QuestStatus : uint8;
enum RemoveMethod : uint8;
enum ShutdownExitCode : uint32;
@@ -682,7 +683,7 @@ class TC_GAME_API PlayerScript : public ScriptObject
virtual void OnChat(Player* /*player*/, uint32 /*type*/, uint32 /*lang*/, std::string& /*msg*/, Channel* /*channel*/) { }
// Both of the below are called on emote opcodes.
- virtual void OnEmote(Player* /*player*/, uint32 /*emote*/) { }
+ virtual void OnEmote(Player* /*player*/, Emote /*emote*/) { }
virtual void OnTextEmote(Player* /*player*/, uint32 /*textEmote*/, uint32 /*emoteNum*/, ObjectGuid /*guid*/) { }
@@ -1027,7 +1028,7 @@ class TC_GAME_API ScriptMgr
void OnPlayerChat(Player* player, uint32 type, uint32 lang, std::string& msg, Group* group);
void OnPlayerChat(Player* player, uint32 type, uint32 lang, std::string& msg, Guild* guild);
void OnPlayerChat(Player* player, uint32 type, uint32 lang, std::string& msg, Channel* channel);
- void OnPlayerEmote(Player* player, uint32 emote);
+ void OnPlayerEmote(Player* player, Emote emote);
void OnPlayerTextEmote(Player* player, uint32 textEmote, uint32 emoteNum, ObjectGuid guid);
void OnPlayerSpellCast(Player* player, Spell* spell, bool skipCheck);
void OnPlayerLogin(Player* player, bool firstLogin);
diff --git a/src/server/game/Texts/CreatureTextMgr.cpp b/src/server/game/Texts/CreatureTextMgr.cpp
index 9d7efaa71ac..5d37aa2f507 100644
--- a/src/server/game/Texts/CreatureTextMgr.cpp
+++ b/src/server/game/Texts/CreatureTextMgr.cpp
@@ -382,7 +382,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 7b14188a410..263685566aa 100644
--- a/src/server/game/Texts/CreatureTextMgr.h
+++ b/src/server/game/Texts/CreatureTextMgr.h
@@ -94,7 +94,7 @@ class TC_GAME_API CreatureTextMgr
CreatureTextMap const& GetTextMap() const { return mTextMap; }
void SendSound(Creature* source, uint32 sound, ChatMsg msgType, WorldObject const* whisperTarget, CreatureTextRange range, Team team, bool gmOnly);
- void SendEmote(Unit* source, uint32 emote);
+ 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, Team team = TEAM_OTHER, bool gmOnly = false, Player* srcPlr = nullptr);
diff --git a/src/server/scripts/Commands/cs_debug.cpp b/src/server/scripts/Commands/cs_debug.cpp
index 5a9c94b384f..eca67c1bf8e 100644
--- a/src/server/scripts/Commands/cs_debug.cpp
+++ b/src/server/scripts/Commands/cs_debug.cpp
@@ -1243,14 +1243,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 f6e8d40e03f..13e9d0a8635 100644
--- a/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp
+++ b/src/server/scripts/EasternKingdoms/ScarletMonastery/boss_headless_horseman.cpp
@@ -525,7 +525,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/Events/childrens_week.cpp b/src/server/scripts/Events/childrens_week.cpp
index 48733f2b7cd..bcb4644f224 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/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp
index b246c8da786..abbb21686fe 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp
@@ -617,7 +617,7 @@ struct npc_martha_goslin : public CreatureScript
InterruptTimer = 12000;
SplineChainMovementGenerator::GetResumeInfo(ResumeInfo, me);
me->GetMotionMaster()->Clear();
- me->SetFlag(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
+ me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
}
void MovementInform(uint32 type, uint32 id) override
@@ -627,12 +627,12 @@ struct npc_martha_goslin : public CreatureScript
switch (id)
{
case MOVEID_EVENT1:
- me->SetFlag(UNIT_NPC_EMOTESTATE, EMOTE_STATE_USE_STANDING);
+ me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_USE_STANDING);
me->SetFacingTo(marthaIdleOrientation1, true);
Events.ScheduleEvent(EVENT_MARTHA_IDLE2, Seconds(9), Seconds(15));
break;
case MOVEID_EVENT2:
- me->SetFlag(UNIT_NPC_EMOTESTATE, EMOTE_STATE_USE_STANDING);
+ me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_USE_STANDING);
me->SetFacingTo(marthaIdleOrientation2, true);
Events.ScheduleEvent(EVENT_MARTHA_IDLE1, Seconds(9), Seconds(15));
break;
@@ -669,11 +669,11 @@ struct npc_martha_goslin : public CreatureScript
switch (eventId)
{
case EVENT_MARTHA_IDLE1:
- me->SetFlag(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
+ me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
me->GetMotionMaster()->MoveAlongSplineChain(MOVEID_EVENT1, CHAIN_MARTHA_IDLE1, true);
break;
case EVENT_MARTHA_IDLE2:
- me->SetFlag(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
+ me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
me->GetMotionMaster()->MoveAlongSplineChain(MOVEID_EVENT2, CHAIN_MARTHA_IDLE2, true);
break;
default:
@@ -684,7 +684,7 @@ struct npc_martha_goslin : public CreatureScript
void JustAppeared() override
{
- me->SetFlag(UNIT_NPC_EMOTESTATE, EMOTE_STATE_USE_STANDING);
+ me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_USE_STANDING);
Events.RescheduleEvent(EVENT_MARTHA_IDLE2, Seconds(5), Seconds(10));
}
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/npc_arthas.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/npc_arthas.cpp
index c267e9bfd0f..2dcc3246dee 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/npc_arthas.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/npc_arthas.cpp
@@ -1074,7 +1074,7 @@ public:
DoCast(citizen, SPELL_CRUSADER_STRIKE, TRIGGERED_IGNORE_SET_FACING);
if (Creature* resident = me->FindNearestCreature(NPC_RESIDENT, 100.0f, true))
{
- resident->SetFlag(UNIT_NPC_EMOTESTATE, EMOTE_STATE_COWER);
+ resident->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_COWER);
resident->AI()->Talk(RP2_LINE_RESIDENT1, ObjectAccessor::GetUnit(*me, _eventStarterGuid));
}
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 0f8deaadb80..85e73c40f70 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 fc681d398ac..b504a8f816a 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
@@ -678,7 +678,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 a5fb0ad3389..3ee199c8481 100644
--- a/src/server/scripts/Northrend/zone_grizzly_hills.cpp
+++ b/src/server/scripts/Northrend/zone_grizzly_hills.cpp
@@ -128,7 +128,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 9b795cc4610..8653254d5f0 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 c83cd236629..5e69d8ce72e 100644
--- a/src/server/scripts/Spells/spell_generic.cpp
+++ b/src/server/scripts/Spells/spell_generic.cpp
@@ -3200,14 +3200,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
{
@@ -3216,7 +3209,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
diff --git a/src/server/shared/SharedDefines.h b/src/server/shared/SharedDefines.h
index 6b27202f749..171f5e5c172 100644
--- a/src/server/shared/SharedDefines.h
+++ b/src/server/shared/SharedDefines.h
@@ -1922,7 +1922,7 @@ enum TextEmotes
};
// Emotes.dbc
-enum Emote
+enum Emote : uint32
{
EMOTE_ONESHOT_NONE = 0,
EMOTE_ONESHOT_TALK = 1,