aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/Object
diff options
context:
space:
mode:
authorDDuarte <dnpd.dd@gmail.com>2014-09-13 02:45:51 +0100
committerDDuarte <dnpd.dd@gmail.com>2014-09-13 02:45:51 +0100
commit27479cf571cf65c9e1657e9c465974449173dc3f (patch)
treed1d15118488d9bb6dd98b689c02e4ba68369a17b /src/server/game/Entities/Object
parentf5a3913d95146077c6bae0a4c9541a64cb10a45d (diff)
Core/Scripts: Nuke db_script_string table and make SCRIPT_COMMAND_TALK with broadcast_text instead
Original code by @Ascathor with modifications Closes #13092
Diffstat (limited to 'src/server/game/Entities/Object')
-rw-r--r--src/server/game/Entities/Object/Object.cpp22
1 files changed, 18 insertions, 4 deletions
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp
index 45450a0c129..1f3c9a2e8c7 100644
--- a/src/server/game/Entities/Object/Object.cpp
+++ b/src/server/game/Entities/Object/Object.cpp
@@ -1908,8 +1908,17 @@ namespace Trinity
: i_object(obj), i_msgtype(msgtype), i_textId(textId), i_language(Language(language)), i_target(target) { }
void operator()(WorldPacket& data, LocaleConstant loc_idx)
{
- char const* text = sObjectMgr->GetTrinityString(i_textId, loc_idx);
- ChatHandler::BuildChatPacket(data, i_msgtype, i_language, i_object, i_target, text, 0, "", loc_idx);
+ if (BroadcastText const* broadcastText = sObjectMgr->GetBroadcastText(i_textId))
+ {
+ uint8 gender = GENDER_MALE;
+ if (Unit const* unit = i_object->ToUnit())
+ gender = unit->getGender();
+
+ std::string text = broadcastText->GetText(loc_idx, gender);
+ ChatHandler::BuildChatPacket(data, i_msgtype, i_language, i_object, i_target, text, 0, "", loc_idx);
+ }
+ else
+ TC_LOG_ERROR("entities.unit", "MonsterChatBuilder: `broadcast_text` id %i missing", i_textId);
}
private:
@@ -2034,10 +2043,15 @@ void WorldObject::MonsterWhisper(int32 textId, Player const* target, bool IsBoss
if (!target)
return;
+ uint8 gender = GENDER_MALE;
+ if (Unit const* unit = ToUnit())
+ gender = unit->getGender();
+
LocaleConstant loc_idx = target->GetSession()->GetSessionDbLocaleIndex();
- char const* text = sObjectMgr->GetTrinityString(textId, loc_idx);
+ BroadcastText const* broadcastText = sObjectMgr->GetBroadcastText(textId);
+ std::string text = broadcastText->GetText(loc_idx, gender);
WorldPacket data;
- ChatHandler::BuildChatPacket(data, IsBossWhisper ? CHAT_MSG_RAID_BOSS_WHISPER : CHAT_MSG_MONSTER_WHISPER, LANG_UNIVERSAL, this, target, text, 0, "", loc_idx);
+ ChatHandler::BuildChatPacket(data, IsBossWhisper ? CHAT_MSG_RAID_BOSS_WHISPER : CHAT_MSG_MONSTER_WHISPER, LANG_UNIVERSAL, this, target, text.c_str(), 0, "", loc_idx);
target->GetSession()->SendPacket(&data);
}