diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/AI/SmartScripts/SmartScriptMgr.h | 6 | ||||
-rw-r--r-- | src/server/game/Achievements/AchievementMgr.cpp | 43 | ||||
-rw-r--r-- | src/server/game/Miscellaneous/Language.h | 9 | ||||
-rw-r--r-- | src/server/game/Texts/CreatureTextMgr.cpp | 10 |
4 files changed, 32 insertions, 36 deletions
diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.h b/src/server/game/AI/SmartScripts/SmartScriptMgr.h index 660066b0258..78a26e7e836 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.h +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.h @@ -1313,12 +1313,6 @@ 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/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp index b82c77f029d..5ff10804516 100644 --- a/src/server/game/Achievements/AchievementMgr.cpp +++ b/src/server/game/Achievements/AchievementMgr.cpp @@ -48,20 +48,24 @@ namespace Trinity class AchievementChatBuilder { public: - AchievementChatBuilder(Player const& player, ChatMsg msgtype, int32 textId, uint32 ach_id) - : i_player(player), i_msgtype(msgtype), i_textId(textId), i_achievementId(ach_id) { } + AchievementChatBuilder(Player const* player, ChatMsg msgType, uint32 textId, uint32 achievementId) + : _player(player), _msgType(msgType), _textId(textId), _achievementId(achievementId) { } - void operator()(WorldPacket& data, LocaleConstant loc_idx) + void operator()(WorldPacket& data, LocaleConstant locale) { - std::string text = sObjectMgr->GetTrinityString(i_textId, loc_idx); - ChatHandler::BuildChatPacket(data, i_msgtype, LANG_UNIVERSAL, &i_player, &i_player, text, i_achievementId); + std::string text = ""; + BroadcastText const* bct = sObjectMgr->GetBroadcastText(_textId); + if (bct) + ObjectMgr::GetLocaleString(_player->getGender() == GENDER_MALE ? bct->MaleText : bct->FemaleText, locale, text); + + ChatHandler::BuildChatPacket(data, _msgType, LANG_UNIVERSAL, _player, _player, text, _achievementId); } private: - Player const& i_player; - ChatMsg i_msgtype; - int32 i_textId; - uint32 i_achievementId; + Player const* _player; + ChatMsg _msgType; + int32 _textId; + uint32 _achievementId; }; } // namespace Trinity @@ -880,9 +884,9 @@ void AchievementMgr<T>::SendAchievementEarned(AchievementEntry const* achievemen if (Guild* guild = sGuildMgr->GetGuildById(GetOwner()->GetGuildId())) { - Trinity::AchievementChatBuilder say_builder(*GetOwner(), CHAT_MSG_GUILD_ACHIEVEMENT, LANG_ACHIEVEMENT_EARNED, achievement->ID); - Trinity::LocalizedPacketDo<Trinity::AchievementChatBuilder> say_do(say_builder); - guild->BroadcastWorker(say_do); + Trinity::AchievementChatBuilder _builder(GetOwner(), CHAT_MSG_GUILD_ACHIEVEMENT, BROADCAST_TEXT_ACHIEVEMENT_EARNED, achievement->ID); + Trinity::LocalizedPacketDo<Trinity::AchievementChatBuilder> _localizer(_builder); + guild->BroadcastWorker(_localizer, GetOwner()); } if (achievement->flags & (ACHIEVEMENT_FLAG_REALM_FIRST_KILL | ACHIEVEMENT_FLAG_REALM_FIRST_REACH)) @@ -898,17 +902,10 @@ void AchievementMgr<T>::SendAchievementEarned(AchievementEntry const* achievemen // if player is in world he can tell his friends about new achievement else if (GetOwner()->IsInWorld()) { - Trinity::AchievementChatBuilder say_builder(*GetOwner(), CHAT_MSG_ACHIEVEMENT, LANG_ACHIEVEMENT_EARNED, achievement->ID); - - CellCoord p = Trinity::ComputeCellCoord(GetOwner()->GetPositionX(), GetOwner()->GetPositionY()); - - Cell cell(p); - cell.SetNoCreate(); - - Trinity::LocalizedPacketDo<Trinity::AchievementChatBuilder> say_do(say_builder); - Trinity::PlayerDistWorker<Trinity::LocalizedPacketDo<Trinity::AchievementChatBuilder> > say_worker(GetOwner(), sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_SAY), say_do); - TypeContainerVisitor<Trinity::PlayerDistWorker<Trinity::LocalizedPacketDo<Trinity::AchievementChatBuilder> >, WorldTypeMapContainer > message(say_worker); - cell.Visit(p, message, *GetOwner()->GetMap(), *GetOwner(), sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_SAY)); + Trinity::AchievementChatBuilder _builder(GetOwner(), CHAT_MSG_ACHIEVEMENT, BROADCAST_TEXT_ACHIEVEMENT_EARNED, achievement->ID); + Trinity::LocalizedPacketDo<Trinity::AchievementChatBuilder> _localizer(_builder); + Trinity::PlayerDistWorker<Trinity::LocalizedPacketDo<Trinity::AchievementChatBuilder> > _worker(GetOwner(), sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_SAY), _localizer); + GetOwner()->VisitNearbyWorldObject(sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_SAY), _worker); } WorldPacket data(SMSG_ACHIEVEMENT_EARNED, 8+4+8); diff --git a/src/server/game/Miscellaneous/Language.h b/src/server/game/Miscellaneous/Language.h index 6740cd13d6c..7435df91de4 100644 --- a/src/server/game/Miscellaneous/Language.h +++ b/src/server/game/Miscellaneous/Language.h @@ -19,6 +19,13 @@ #ifndef __TRINITY_LANGUAGE_H #define __TRINITY_LANGUAGE_H +enum BroadcastTextIds +{ + BROADCAST_TEXT_ACHIEVEMENT_EARNED = 29245, + BROADCAST_TEXT_CALL_FOR_HELP = 2541, + BROADCAST_TEXT_FLEE_FOR_ASSIST = 1150 +}; + enum TrinityStrings { // for chat commands @@ -761,7 +768,7 @@ enum TrinityStrings LANG_NEED_CHARACTER_NAME = 807, LANG_PLAYER_NOT_EXIST_OR_OFFLINE = 808, LANG_ACCOUNT_FOR_PLAYER_NOT_FOUND = 809, - LANG_ACHIEVEMENT_EARNED = 810, + // unused = 810, LANG_GUILD_MASTER = 811, LANG_GUILD_OFFICER = 812, LANG_GUILD_VETERAN = 813, diff --git a/src/server/game/Texts/CreatureTextMgr.cpp b/src/server/game/Texts/CreatureTextMgr.cpp index f048c0fe527..29c7cf3170b 100644 --- a/src/server/game/Texts/CreatureTextMgr.cpp +++ b/src/server/game/Texts/CreatureTextMgr.cpp @@ -29,9 +29,7 @@ class CreatureTextBuilder { public: CreatureTextBuilder(WorldObject const* obj, ChatMsg msgtype, uint8 textGroup, uint32 id, uint32 language, WorldObject const* target) - : _source(obj), _msgType(msgtype), _textGroup(textGroup), _textId(id), _language(language), _target(target) - { - } + : _source(obj), _msgType(msgtype), _textGroup(textGroup), _textId(id), _language(language), _target(target) { } size_t operator()(WorldPacket* data, LocaleConstant locale) const { @@ -40,6 +38,7 @@ class CreatureTextBuilder return ChatHandler::BuildChatPacket(*data, _msgType, Language(_language), _source, _target, text, 0, "", locale); } + private: WorldObject const* _source; ChatMsg _msgType; uint8 _textGroup; @@ -52,9 +51,7 @@ class PlayerTextBuilder { public: PlayerTextBuilder(WorldObject const* obj, WorldObject const* speaker, ChatMsg msgtype, uint8 textGroup, uint32 id, uint32 language, WorldObject const* target) - : _source(obj), _talker(speaker), _msgType(msgtype), _textGroup(textGroup), _textId(id), _language(language), _target(target) - { - } + : _source(obj), _talker(speaker), _msgType(msgtype), _textGroup(textGroup), _textId(id), _language(language), _target(target) { } size_t operator()(WorldPacket* data, LocaleConstant locale) const { @@ -63,6 +60,7 @@ class PlayerTextBuilder return ChatHandler::BuildChatPacket(*data, _msgType, Language(_language), _talker, _target, text, 0, "", locale); } + private: WorldObject const* _source; WorldObject const* _talker; ChatMsg _msgType; |