diff options
| -rw-r--r-- | sql/updates/world/2014_04_23_03_world_trinity_string.sql | 1 | ||||
| -rw-r--r-- | src/server/game/AI/SmartScripts/SmartScript.cpp | 26 | ||||
| -rw-r--r-- | src/server/game/AI/SmartScripts/SmartScriptMgr.h | 6 | ||||
| -rw-r--r-- | src/server/game/Miscellaneous/Language.h | 4 |
4 files changed, 24 insertions, 13 deletions
diff --git a/sql/updates/world/2014_04_23_03_world_trinity_string.sql b/sql/updates/world/2014_04_23_03_world_trinity_string.sql new file mode 100644 index 00000000000..dae7fa90935 --- /dev/null +++ b/sql/updates/world/2014_04_23_03_world_trinity_string.sql @@ -0,0 +1 @@ +DELETE FROM `trinity_string` WHERE `entry` IN (5035,5030); diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index 467a35967c2..92007a16569 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -38,25 +38,29 @@ #include "MoveSplineInit.h" #include "GameEventMgr.h" -class TrinityStringTextBuilder +class BroadcastTextBuilder { public: - TrinityStringTextBuilder(WorldObject* obj, ChatMsg msgtype, int32 id, uint32 language, WorldObject* target) - : _source(obj), _msgType(msgtype), _textId(id), _language(language), _target(target) + BroadcastTextBuilder(WorldObject const* obj, ChatMsg msgtype, uint32 id, WorldObject const* target, uint32 gender = GENDER_MALE) + : _source(obj), _msgType(msgtype), _textId(id), _target(target), _gender(gender) { } size_t operator()(WorldPacket* data, LocaleConstant locale) const { - std::string text = sObjectMgr->GetTrinityString(_textId, locale); - return ChatHandler::BuildChatPacket(*data, _msgType, Language(_language), _source, _target, text, 0, "", locale); + BroadcastText const* bct = sObjectMgr->GetBroadcastText(_textId); + std::string text = ""; + if (bct) + ObjectMgr::GetLocaleString(_gender == GENDER_MALE ? bct->MaleText : bct->FemaleText, locale, text); + + return ChatHandler::BuildChatPacket(*data, _msgType, bct ? Language(bct->Language) : LANG_UNIVERSAL, _source, _target, text, 0, "", locale); } - WorldObject* _source; + WorldObject const* _source; ChatMsg _msgType; - int32 _textId; - uint32 _language; - WorldObject* _target; + uint32 _textId; + WorldObject const* _target; + uint32 _gender; }; SmartScript::SmartScript() @@ -760,7 +764,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u me->DoFleeToGetAssistance(); if (e.action.flee.withEmote) { - TrinityStringTextBuilder builder(me, CHAT_MSG_MONSTER_EMOTE, LANG_FLEE, LANG_UNIVERSAL, NULL); + BroadcastTextBuilder builder(me, CHAT_MSG_MONSTER_EMOTE, BROADCAST_TEXT_FLEE_FOR_ASSIST, NULL, me->getGender()); sCreatureTextMgr->SendChatPacket(me, builder, CHAT_MSG_MONSTER_EMOTE); } TC_LOG_DEBUG("scripts.ai", "SmartScript::ProcessAction:: SMART_ACTION_FLEE_FOR_ASSIST: Creature %u DoFleeToGetAssistance", me->GetGUIDLow()); @@ -1003,7 +1007,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u me->CallForHelp((float)e.action.callHelp.range); if (e.action.callHelp.withEmote) { - TrinityStringTextBuilder builder(me, CHAT_MSG_MONSTER_EMOTE, LANG_CALL_FOR_HELP, LANG_UNIVERSAL, NULL); + BroadcastTextBuilder builder(me, CHAT_MSG_MONSTER_EMOTE, BROADCAST_TEXT_CALL_FOR_HELP, NULL, me->getGender()); sCreatureTextMgr->SendChatPacket(me, builder, CHAT_MSG_MONSTER_EMOTE); } TC_LOG_DEBUG("scripts.ai", "SmartScript::ProcessAction: SMART_ACTION_CALL_FOR_HELP: Creature %u", me->GetGUIDLow()); diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.h b/src/server/game/AI/SmartScripts/SmartScriptMgr.h index ac67fac0bfd..1b35bcb229f 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.h +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.h @@ -1312,6 +1312,12 @@ enum SmartCastFlags SMARTCAST_COMBAT_MOVE = 0x40 //Prevents combat movement if cast successful. Allows movement on range, OOM, LOS }; +enum BroadcastTextIds +{ + BROADCAST_TEXT_CALL_FOR_HELP = 2541, + BROADCAST_TEXT_FLEE_FOR_ASSIST = 1150 +}; + // one line in DB is one event struct SmartScriptHolder { diff --git a/src/server/game/Miscellaneous/Language.h b/src/server/game/Miscellaneous/Language.h index 3102e2c6854..eaa89c17a4f 100644 --- a/src/server/game/Miscellaneous/Language.h +++ b/src/server/game/Miscellaneous/Language.h @@ -1074,12 +1074,12 @@ enum TrinityStrings LANG_GOINFO_NAME = 5027, LANG_GOINFO_LOOTID = 5028, LANG_COMMAND_LOOKUP_MAX_RESULTS = 5029, - LANG_FLEE = 5030, + // unused = 5030, LANG_NPCINFO_AIINFO = 5031, LANG_COMMAND_NO_BATTLEGROUND_FOUND = 5032, LANG_COMMAND_NO_ACHIEVEMENT_CRITERIA_FOUND = 5033, LANG_COMMAND_NO_OUTDOOR_PVP_FORUND = 5034, - LANG_CALL_FOR_HELP = 5035, + // unused = 5035, LANG_NPCINFO_EQUIPMENT = 5036, LANG_NPCINFO_MECHANIC_IMMUNE = 5037, LANG_NPCINFO_UNIT_FIELD_FLAGS = 5038, |
