diff options
| author | DDuarte <dnpd.dd@gmail.com> | 2014-09-13 02:45:51 +0100 |
|---|---|---|
| committer | DDuarte <dnpd.dd@gmail.com> | 2014-09-13 02:45:51 +0100 |
| commit | 27479cf571cf65c9e1657e9c465974449173dc3f (patch) | |
| tree | d1d15118488d9bb6dd98b689c02e4ba68369a17b /src/server/game/Entities/Object | |
| parent | f5a3913d95146077c6bae0a4c9541a64cb10a45d (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.cpp | 22 |
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); } |
