mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 15:40:45 +01:00
Core/Chat: cleanup MonsterText methods
This commit is contained in:
@@ -373,84 +373,49 @@ void Map::ScriptsProcess()
|
||||
switch (step.script->command)
|
||||
{
|
||||
case SCRIPT_COMMAND_TALK:
|
||||
{
|
||||
if (step.script->Talk.ChatType > CHAT_TYPE_WHISPER && step.script->Talk.ChatType != CHAT_MSG_RAID_BOSS_WHISPER)
|
||||
{
|
||||
TC_LOG_ERROR("scripts", "%s invalid chat type (%u) specified, skipping.", step.script->GetDebugInfo().c_str(), step.script->Talk.ChatType);
|
||||
break;
|
||||
}
|
||||
if (step.script->Talk.Flags & SF_TALK_USE_PLAYER)
|
||||
{
|
||||
if (Player* player = _GetScriptPlayerSourceOrTarget(source, target, step.script))
|
||||
{
|
||||
LocaleConstant loc_idx = player->GetSession()->GetSessionDbLocaleIndex();
|
||||
BroadcastText const* broadcastText = sObjectMgr->GetBroadcastText(step.script->Talk.TextID);
|
||||
std::string text = broadcastText->GetText(loc_idx, player->getGender());
|
||||
Unit* source = nullptr;
|
||||
|
||||
switch (step.script->Talk.ChatType)
|
||||
{
|
||||
case CHAT_TYPE_SAY:
|
||||
player->Say(text, LANG_UNIVERSAL);
|
||||
break;
|
||||
case CHAT_TYPE_YELL:
|
||||
player->Yell(text, LANG_UNIVERSAL);
|
||||
break;
|
||||
case CHAT_TYPE_TEXT_EMOTE:
|
||||
case CHAT_TYPE_BOSS_EMOTE:
|
||||
player->TextEmote(text);
|
||||
break;
|
||||
case CHAT_TYPE_WHISPER:
|
||||
case CHAT_MSG_RAID_BOSS_WHISPER:
|
||||
{
|
||||
uint64 targetGUID = target ? target->GetGUID() : 0;
|
||||
if (!targetGUID || !IS_PLAYER_GUID(targetGUID))
|
||||
TC_LOG_ERROR("scripts", "%s attempt to whisper to non-player unit, skipping.", step.script->GetDebugInfo().c_str());
|
||||
else
|
||||
player->Whisper(text, LANG_UNIVERSAL, targetGUID);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break; // must be already checked at load
|
||||
}
|
||||
}
|
||||
}
|
||||
if (step.script->Talk.Flags & SF_TALK_USE_PLAYER)
|
||||
source = _GetScriptPlayerSourceOrTarget(source, target, step.script);
|
||||
else
|
||||
source = _GetScriptCreatureSourceOrTarget(source, target, step.script);
|
||||
|
||||
if (source)
|
||||
{
|
||||
// Source or target must be Creature.
|
||||
if (Creature* cSource = _GetScriptCreatureSourceOrTarget(source, target, step.script))
|
||||
switch (step.script->Talk.ChatType)
|
||||
{
|
||||
uint64 targetGUID = target ? target->GetGUID() : 0;
|
||||
switch (step.script->Talk.ChatType)
|
||||
case CHAT_TYPE_SAY:
|
||||
source->Say(step.script->Talk.TextID, target);
|
||||
break;
|
||||
case CHAT_TYPE_YELL:
|
||||
source->Yell(step.script->Talk.TextID, target);
|
||||
break;
|
||||
case CHAT_TYPE_TEXT_EMOTE:
|
||||
case CHAT_TYPE_BOSS_EMOTE:
|
||||
source->TextEmote(step.script->Talk.TextID, target, step.script->Talk.ChatType == CHAT_TYPE_BOSS_EMOTE);
|
||||
break;
|
||||
case CHAT_TYPE_WHISPER:
|
||||
case CHAT_MSG_RAID_BOSS_WHISPER:
|
||||
{
|
||||
case CHAT_TYPE_SAY:
|
||||
cSource->MonsterSay(step.script->Talk.TextID, LANG_UNIVERSAL, target);
|
||||
break;
|
||||
case CHAT_TYPE_YELL:
|
||||
cSource->MonsterYell(step.script->Talk.TextID, LANG_UNIVERSAL, target);
|
||||
break;
|
||||
case CHAT_TYPE_TEXT_EMOTE:
|
||||
cSource->MonsterTextEmote(step.script->Talk.TextID, target);
|
||||
break;
|
||||
case CHAT_TYPE_BOSS_EMOTE:
|
||||
cSource->MonsterTextEmote(step.script->Talk.TextID, target, true);
|
||||
break;
|
||||
case CHAT_TYPE_WHISPER:
|
||||
if (!targetGUID || !IS_PLAYER_GUID(targetGUID))
|
||||
TC_LOG_ERROR("scripts", "%s attempt to whisper to non-player unit, skipping.", step.script->GetDebugInfo().c_str());
|
||||
else
|
||||
cSource->MonsterWhisper(step.script->Talk.TextID, target->ToPlayer());
|
||||
break;
|
||||
case CHAT_MSG_RAID_BOSS_WHISPER:
|
||||
if (!targetGUID || !IS_PLAYER_GUID(targetGUID))
|
||||
TC_LOG_ERROR("scripts", "%s attempt to raidbosswhisper to non-player unit, skipping.", step.script->GetDebugInfo().c_str());
|
||||
else
|
||||
cSource->MonsterWhisper(step.script->Talk.TextID, target->ToPlayer(), true);
|
||||
break;
|
||||
default:
|
||||
break; // must be already checked at load
|
||||
Player* receiver = target ? target->ToPlayer() : nullptr;
|
||||
if (!receiver)
|
||||
TC_LOG_ERROR("scripts", "%s attempt to whisper to non-player unit, skipping.", step.script->GetDebugInfo().c_str());
|
||||
else
|
||||
source->Whisper(step.script->Talk.TextID, receiver, step.script->Talk.ChatType == CHAT_MSG_RAID_BOSS_WHISPER);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break; // must be already checked at load
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case SCRIPT_COMMAND_EMOTE:
|
||||
// Source or target must be Creature.
|
||||
|
||||
Reference in New Issue
Block a user