mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Core/CreatureTexts: Added new field SoundPlayType to enable usage of ObjectSounds within creature_text (#27136)
* Also adjusted Vigilant Quoram texts to use ObjectSounds
This commit is contained in:
12
sql/updates/world/master/2021_10_23_01_world.sql
Normal file
12
sql/updates/world/master/2021_10_23_01_world.sql
Normal file
@@ -0,0 +1,12 @@
|
||||
--
|
||||
ALTER TABLE `creature_text` ADD `SoundPlayType` tinyint(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `Sound`;
|
||||
|
||||
UPDATE `creature_text` SET `SoundPlayType`=1 WHERE `CreatureID`=130986;
|
||||
|
||||
DELETE FROM `creature_text` WHERE `CreatureID`=130986 AND ((`GroupID`=0 AND `ID` IN(1, 2)) OR (`GroupID`=2 AND `ID` IN(1, 2)) OR (`GroupID`=3 AND `ID`=1));
|
||||
INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `SoundPlayType`, `BroadcastTextId`, `TextRange`, `comment`) VALUES
|
||||
(130986, 0, 1, 'Oh, you made it.', 12, 0, 100, 0, 0, 96040, 1, 146007, 5, 'Vigilant Quoram to Player'),
|
||||
(130986, 0, 2, 'Wonderful.', 12, 0, 100, 0, 0, 96041, 1, 146008, 5, 'Vigilant Quoram to Player'),
|
||||
(130986, 2, 1, 'I imagine it is quite painful.', 12, 0, 100, 0, 0, 96045, 1, 146012, 5, 'Vigilant Quoram to Player'),
|
||||
(130986, 2, 2, 'It is designed to kill you.', 12, 0, 100, 0, 0, 96044, 1, 146011, 5, 'Vigilant Quoram to Player'),
|
||||
(130986, 3, 1, 'Perhaps.', 12, 0, 100, 0, 0, 96048, 1, 146015, 5, 'Vigilant Quoram to Player'); -- BroadcastTextID: 133363 - 146015
|
||||
@@ -27,7 +27,7 @@ void WorldDatabaseConnection::DoPrepareStatements()
|
||||
PrepareStatement(WORLD_DEL_LINKED_RESPAWN, "DELETE FROM linked_respawn WHERE guid = ? AND linkType = ?", CONNECTION_ASYNC);
|
||||
PrepareStatement(WORLD_DEL_LINKED_RESPAWN_MASTER, "DELETE FROM linked_respawn WHERE linkedGuid = ? AND linkType = ?", CONNECTION_ASYNC);
|
||||
PrepareStatement(WORLD_REP_LINKED_RESPAWN, "REPLACE INTO linked_respawn (guid, linkedGuid, linkType) VALUES (?, ?, ?)", CONNECTION_ASYNC);
|
||||
PrepareStatement(WORLD_SEL_CREATURE_TEXT, "SELECT CreatureID, GroupID, ID, Text, Type, Language, Probability, Emote, Duration, Sound, BroadcastTextId, TextRange FROM creature_text", CONNECTION_SYNCH);
|
||||
PrepareStatement(WORLD_SEL_CREATURE_TEXT, "SELECT CreatureID, GroupID, ID, Text, Type, Language, Probability, Emote, Duration, Sound, SoundPlayType, BroadcastTextId, TextRange FROM creature_text", CONNECTION_SYNCH);
|
||||
PrepareStatement(WORLD_SEL_SMART_SCRIPTS, "SELECT entryorguid, source_type, id, link, event_type, event_phase_mask, event_chance, event_flags, event_param1, event_param2, event_param3, event_param4, event_param5, event_param_string, action_type, action_param1, action_param2, action_param3, action_param4, action_param5, action_param6, target_type, target_param1, target_param2, target_param3, target_x, target_y, target_z, target_o FROM smart_scripts ORDER BY entryorguid, source_type, id, link", CONNECTION_SYNCH);
|
||||
PrepareStatement(WORLD_SEL_SMARTAI_WP, "SELECT entry, pointid, position_x, position_y, position_z FROM waypoints ORDER BY entry, pointid", CONNECTION_SYNCH);
|
||||
PrepareStatement(WORLD_DEL_GAMEOBJECT, "DELETE FROM gameobject WHERE guid = ?", CONNECTION_ASYNC);
|
||||
|
||||
@@ -303,7 +303,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
|
||||
else if (IsPlayer(target) && me)
|
||||
{
|
||||
Unit* templastInvoker = GetLastInvoker();
|
||||
sCreatureTextMgr->SendChat(me, uint8(e.action.talk.textGroupID), IsPlayer(templastInvoker) ? templastInvoker : nullptr, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_NORMAL, 0, TEAM_OTHER, false, target->ToPlayer());
|
||||
sCreatureTextMgr->SendChat(me, uint8(e.action.talk.textGroupID), IsPlayer(templastInvoker) ? templastInvoker : nullptr, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_NORMAL, 0, SoundKitPlayType::Normal, TEAM_OTHER, false, target->ToPlayer());
|
||||
}
|
||||
TC_LOG_DEBUG("scripts.ai", "SmartScript::ProcessAction:: SMART_ACTION_SIMPLE_TALK: talker: %s (%s), textGroupId: %u",
|
||||
target->GetName().c_str(), target->GetGUID().ToString().c_str(), uint8(e.action.talk.textGroupID));
|
||||
|
||||
@@ -1016,7 +1016,7 @@ void BattlefieldWG::PromotePlayer(Player* killer)
|
||||
killer->RemoveAura(SPELL_RECRUIT);
|
||||
killer->CastSpell(killer, SPELL_CORPORAL, true);
|
||||
if (Creature* stalker = GetCreature(StalkerGuid))
|
||||
sCreatureTextMgr->SendChat(stalker, BATTLEFIELD_WG_TEXT_RANK_CORPORAL, killer, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_NORMAL, 0, TEAM_OTHER, false, killer);
|
||||
sCreatureTextMgr->SendChat(stalker, BATTLEFIELD_WG_TEXT_RANK_CORPORAL, killer, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_NORMAL, 0, SoundKitPlayType::Normal, TEAM_OTHER, false, killer);
|
||||
}
|
||||
else
|
||||
killer->CastSpell(killer, SPELL_RECRUIT, true);
|
||||
@@ -1028,7 +1028,7 @@ void BattlefieldWG::PromotePlayer(Player* killer)
|
||||
killer->RemoveAura(SPELL_CORPORAL);
|
||||
killer->CastSpell(killer, SPELL_LIEUTENANT, true);
|
||||
if (Creature* stalker = GetCreature(StalkerGuid))
|
||||
sCreatureTextMgr->SendChat(stalker, BATTLEFIELD_WG_TEXT_RANK_FIRST_LIEUTENANT, killer, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_NORMAL, 0, TEAM_OTHER, false, killer);
|
||||
sCreatureTextMgr->SendChat(stalker, BATTLEFIELD_WG_TEXT_RANK_FIRST_LIEUTENANT, killer, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_NORMAL, 0, SoundKitPlayType::Normal, TEAM_OTHER, false, killer);
|
||||
}
|
||||
else
|
||||
killer->CastSpell(killer, SPELL_CORPORAL, true);
|
||||
|
||||
@@ -70,8 +70,9 @@ void CreatureTextMgr::LoadCreatureTexts()
|
||||
temp.emote = Emote(fields[7].GetUInt32());
|
||||
temp.duration = fields[8].GetUInt32();
|
||||
temp.sound = fields[9].GetUInt32();
|
||||
temp.BroadcastTextId = fields[10].GetUInt32();
|
||||
temp.TextRange = CreatureTextRange(fields[11].GetUInt8());
|
||||
temp.SoundPlayType = SoundKitPlayType(fields[10].GetUInt8());
|
||||
temp.BroadcastTextId = fields[11].GetUInt32();
|
||||
temp.TextRange = CreatureTextRange(fields[12].GetUInt8());
|
||||
|
||||
if (temp.sound)
|
||||
{
|
||||
@@ -82,6 +83,12 @@ void CreatureTextMgr::LoadCreatureTexts()
|
||||
}
|
||||
}
|
||||
|
||||
if (temp.SoundPlayType >= SoundKitPlayType::Max)
|
||||
{
|
||||
TC_LOG_ERROR("sql.sql", "CreatureTextMgr: Entry %u, Group %u in table `creature_text` has PlayType %u but does not exist.", temp.creatureId, temp.groupId, uint32(temp.SoundPlayType));
|
||||
temp.SoundPlayType = SoundKitPlayType::Normal;
|
||||
}
|
||||
|
||||
if (temp.lang != LANG_UNIVERSAL && !sLanguageMgr->IsLanguageExist(temp.lang))
|
||||
{
|
||||
TC_LOG_ERROR("sql.sql", "CreatureTextMgr: Entry %u, Group %u in table `creature_text` using Language %u but Language does not exist.", temp.creatureId, temp.groupId, uint32(temp.lang));
|
||||
@@ -159,7 +166,7 @@ void CreatureTextMgr::LoadCreatureTextLocales()
|
||||
TC_LOG_INFO("server.loading", ">> Loaded %u creature localized texts in %u ms", uint32(mLocaleTextMap.size()), GetMSTimeDiffToNow(oldMSTime));
|
||||
}
|
||||
|
||||
uint32 CreatureTextMgr::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*/)
|
||||
uint32 CreatureTextMgr::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*/)
|
||||
{
|
||||
if (!source)
|
||||
return 0;
|
||||
@@ -201,8 +208,12 @@ uint32 CreatureTextMgr::SendChat(Creature* source, uint8 textGroup, WorldObject
|
||||
ChatMsg finalType = (msgType == CHAT_MSG_ADDON) ? iter->type : msgType;
|
||||
Language finalLang = (language == LANG_ADDON) ? iter->lang : language;
|
||||
uint32 finalSound = iter->sound;
|
||||
SoundKitPlayType finalPlayType = iter->SoundPlayType;
|
||||
if (sound)
|
||||
{
|
||||
finalSound = sound;
|
||||
finalPlayType = playType;
|
||||
}
|
||||
else if (BroadcastTextEntry const* bct = sBroadcastTextStore.LookupEntry(iter->BroadcastTextId))
|
||||
if (uint32 broadcastTextSoundId = bct->SoundEntriesID[source->getGender() == GENDER_FEMALE ? 1 : 0])
|
||||
finalSound = broadcastTextSoundId;
|
||||
@@ -211,7 +222,7 @@ uint32 CreatureTextMgr::SendChat(Creature* source, uint8 textGroup, WorldObject
|
||||
range = iter->TextRange;
|
||||
|
||||
if (finalSound)
|
||||
SendSound(source, finalSound, finalType, whisperTarget, range, team, gmOnly, iter->BroadcastTextId);
|
||||
SendSound(source, finalSound, finalType, whisperTarget, range, team, gmOnly, iter->BroadcastTextId, finalPlayType);
|
||||
|
||||
Unit* finalSource = source;
|
||||
if (srcPlr)
|
||||
@@ -255,12 +266,23 @@ float CreatureTextMgr::GetRangeForChatType(ChatMsg msgType)
|
||||
}
|
||||
|
||||
void CreatureTextMgr::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*/)
|
||||
Team team /*= TEAM_OTHER*/, bool gmOnly /*= false*/, uint32 keyBroadcastTextId /*= 0*/, SoundKitPlayType playType /*= SoundKitPlayType::Normal*/)
|
||||
{
|
||||
if (!sound || !source)
|
||||
return;
|
||||
|
||||
SendNonChatPacket(source, WorldPackets::Misc::PlaySound(source->GetGUID(), sound, keyBroadcastTextId).Write(), msgType, whisperTarget, range, team, gmOnly);
|
||||
if (playType == SoundKitPlayType::ObjectSound)
|
||||
{
|
||||
WorldPackets::Misc::PlayObjectSound pkt;
|
||||
pkt.TargetObjectGUID = whisperTarget->GetGUID();
|
||||
pkt.SourceObjectGUID = source->GetGUID();
|
||||
pkt.SoundKitID = sound;
|
||||
pkt.Position = whisperTarget->GetWorldLocation();
|
||||
pkt.BroadcastTextID = keyBroadcastTextId;
|
||||
SendNonChatPacket(source, pkt.Write(), msgType, whisperTarget, range, team, gmOnly);
|
||||
}
|
||||
else if (playType == SoundKitPlayType::Normal)
|
||||
SendNonChatPacket(source, WorldPackets::Misc::PlaySound(source->GetGUID(), sound, keyBroadcastTextId).Write(), msgType, whisperTarget, range, team, gmOnly);
|
||||
}
|
||||
|
||||
void CreatureTextMgr::SendNonChatPacket(WorldObject* source, WorldPacket const* data, ChatMsg msgType, WorldObject const* whisperTarget, CreatureTextRange range, Team team, bool gmOnly)
|
||||
@@ -336,7 +358,7 @@ void CreatureTextMgr::SendNonChatPacket(WorldObject* source, WorldPacket const*
|
||||
case TEXT_RANGE_PERSONAL:
|
||||
if (!whisperTarget || !whisperTarget->IsPlayer())
|
||||
return;
|
||||
|
||||
|
||||
whisperTarget->ToPlayer()->SendDirectMessage(data);
|
||||
return;
|
||||
case TEXT_RANGE_NORMAL:
|
||||
|
||||
@@ -40,6 +40,13 @@ enum CreatureTextRange
|
||||
TEXT_RANGE_PERSONAL = 5
|
||||
};
|
||||
|
||||
enum class SoundKitPlayType : uint8
|
||||
{
|
||||
Normal = 0,
|
||||
ObjectSound = 1,
|
||||
Max = 2,
|
||||
};
|
||||
|
||||
struct CreatureTextEntry
|
||||
{
|
||||
uint32 creatureId;
|
||||
@@ -52,6 +59,7 @@ struct CreatureTextEntry
|
||||
Emote emote;
|
||||
uint32 duration;
|
||||
uint32 sound;
|
||||
SoundKitPlayType SoundPlayType;
|
||||
uint32 BroadcastTextId;
|
||||
CreatureTextRange TextRange;
|
||||
};
|
||||
@@ -94,11 +102,11 @@ class TC_GAME_API CreatureTextMgr
|
||||
void LoadCreatureTextLocales();
|
||||
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);
|
||||
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);
|
||||
|
||||
//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);
|
||||
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);
|
||||
bool TextExist(uint32 sourceEntry, uint8 textGroup) const;
|
||||
std::string GetLocalizedChatString(uint32 entry, uint8 gender, uint8 textGroup, uint32 id, LocaleConstant locale) const;
|
||||
|
||||
|
||||
@@ -93,7 +93,7 @@ public:
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
DoCastAOE(SPELL_THREAT_PULSE, true);
|
||||
|
||||
sCreatureTextMgr->SendChat(me, SAY_PERSUADE_RAND, nullptr, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_NORMAL, 0, TEAM_OTHER, false, player);
|
||||
sCreatureTextMgr->SendChat(me, SAY_PERSUADE_RAND, nullptr, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_NORMAL, 0, SoundKitPlayType::Normal, TEAM_OTHER, false, player);
|
||||
Talk(SAY_CRUSADER);
|
||||
}
|
||||
}
|
||||
@@ -136,7 +136,7 @@ public:
|
||||
break;
|
||||
|
||||
case 5:
|
||||
sCreatureTextMgr->SendChat(me, SAY_PERSUADED5, nullptr, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_NORMAL, 0, TEAM_OTHER, false, player);
|
||||
sCreatureTextMgr->SendChat(me, SAY_PERSUADED5, nullptr, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_NORMAL, 0, SoundKitPlayType::Normal, TEAM_OTHER, false, player);
|
||||
speechTimer = 8000;
|
||||
break;
|
||||
|
||||
|
||||
@@ -1872,7 +1872,7 @@ class spell_igb_rocket_pack_useable : public SpellScriptLoader
|
||||
if (Creature* owner = GetOwner()->ToCreature())
|
||||
if (Player* target = GetTarget()->ToPlayer())
|
||||
if (target->HasItemCount(ITEM_GOBLIN_ROCKET_PACK, 1))
|
||||
sCreatureTextMgr->SendChat(owner, SAY_ZAFOD_ROCKET_PACK_ACTIVE, target, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_NORMAL, 0, TEAM_OTHER, false, target);
|
||||
sCreatureTextMgr->SendChat(owner, SAY_ZAFOD_ROCKET_PACK_ACTIVE, target, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_NORMAL, 0, SoundKitPlayType::Normal, TEAM_OTHER, false, target);
|
||||
}
|
||||
|
||||
void HandleRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
|
||||
@@ -1880,7 +1880,7 @@ class spell_igb_rocket_pack_useable : public SpellScriptLoader
|
||||
if (Creature* owner = GetOwner()->ToCreature())
|
||||
if (Player* target = GetTarget()->ToPlayer())
|
||||
if (target->HasItemCount(ITEM_GOBLIN_ROCKET_PACK, 1))
|
||||
sCreatureTextMgr->SendChat(owner, SAY_ZAFOD_ROCKET_PACK_DISABLED, target, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_NORMAL, 0, TEAM_OTHER, false, target);
|
||||
sCreatureTextMgr->SendChat(owner, SAY_ZAFOD_ROCKET_PACK_DISABLED, target, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_NORMAL, 0, SoundKitPlayType::Normal, TEAM_OTHER, false, target);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
|
||||
@@ -667,14 +667,14 @@ class spell_summoning_rhyme_aura : public AuraScript
|
||||
switch (aurEff->GetTickNumber())
|
||||
{
|
||||
case 1:
|
||||
sCreatureTextMgr->SendChat(caster, SAY_PLAYER_TEXT_1, nullptr, CHAT_MSG_SAY, LANG_UNIVERSAL, TEXT_RANGE_NORMAL, 0, TEAM_OTHER, false, player);
|
||||
sCreatureTextMgr->SendChat(caster, SAY_PLAYER_TEXT_1, nullptr, CHAT_MSG_SAY, LANG_UNIVERSAL, TEXT_RANGE_NORMAL, 0, SoundKitPlayType::Normal, TEAM_OTHER, false, player);
|
||||
player->CastSpell(player, SPELL_SUMMONING_RHYME_BONFIRE, true);
|
||||
break;
|
||||
case 2:
|
||||
sCreatureTextMgr->SendChat(caster, SAY_PLAYER_TEXT_2, nullptr, CHAT_MSG_SAY, LANG_UNIVERSAL, TEXT_RANGE_NORMAL, 0, TEAM_OTHER, false, player);
|
||||
sCreatureTextMgr->SendChat(caster, SAY_PLAYER_TEXT_2, nullptr, CHAT_MSG_SAY, LANG_UNIVERSAL, TEXT_RANGE_NORMAL, 0, SoundKitPlayType::Normal, TEAM_OTHER, false, player);
|
||||
break;
|
||||
case 3:
|
||||
sCreatureTextMgr->SendChat(caster, SAY_PLAYER_TEXT_3, nullptr, CHAT_MSG_SAY, LANG_UNIVERSAL, TEXT_RANGE_NORMAL, 0, TEAM_OTHER, false, player);
|
||||
sCreatureTextMgr->SendChat(caster, SAY_PLAYER_TEXT_3, nullptr, CHAT_MSG_SAY, LANG_UNIVERSAL, TEXT_RANGE_NORMAL, 0, SoundKitPlayType::Normal, TEAM_OTHER, false, player);
|
||||
Remove();
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1239,9 +1239,9 @@ public:
|
||||
{
|
||||
if (Creature* trigger = target->FindNearestCreature(NPC_ICE_SPIKE_BUNNY, 25.0f))
|
||||
{
|
||||
sCreatureTextMgr->SendChat(trigger, SAY_1, target, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_NORMAL, 0, TEAM_OTHER, false, target);
|
||||
sCreatureTextMgr->SendChat(trigger, SAY_1, target, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_NORMAL, 0, SoundKitPlayType::Normal, TEAM_OTHER, false, target);
|
||||
target->KilledMonsterCredit(NPC_KILLCREDIT);
|
||||
sCreatureTextMgr->SendChat(trigger, SAY_2, target, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_NORMAL, 0, TEAM_OTHER, false, target);
|
||||
sCreatureTextMgr->SendChat(trigger, SAY_2, target, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_NORMAL, 0, SoundKitPlayType::Normal, TEAM_OTHER, false, target);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user