aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/AI/SmartScripts/SmartScriptMgr.h6
-rw-r--r--src/server/game/Achievements/AchievementMgr.cpp43
-rw-r--r--src/server/game/Miscellaneous/Language.h9
-rw-r--r--src/server/game/Texts/CreatureTextMgr.cpp10
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;