aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Achievements/AchievementMgr.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2024-04-15 20:09:34 +0200
committerShauren <shauren.trinity@gmail.com>2024-04-15 20:09:34 +0200
commit0384d9066336b8ec71434c49244d1ddb0657c11e (patch)
tree723103c8b2d75b1264644412e1a0cff1411dcaba /src/server/game/Achievements/AchievementMgr.cpp
parent0f61046960ec9c9d28aeb43b68ff7346f7544660 (diff)
Core/Achievements: Fixed achievement SMSG_ACHIEVEMENT_EARNED not being sent to self
Diffstat (limited to 'src/server/game/Achievements/AchievementMgr.cpp')
-rw-r--r--src/server/game/Achievements/AchievementMgr.cpp14
1 files changed, 6 insertions, 8 deletions
diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp
index 10a6a4d9693..d3f3e194d77 100644
--- a/src/server/game/Achievements/AchievementMgr.cpp
+++ b/src/server/game/Achievements/AchievementMgr.cpp
@@ -671,14 +671,14 @@ void PlayerAchievementMgr::SendAchievementEarned(AchievementEntry const* achieve
receiver->SendDirectMessage(achievementEarned.Write());
};
+ achievementEarnedBuilder(_owner);
+
if (!(achievement->Flags & ACHIEVEMENT_FLAG_TRACKING_FLAG))
{
float dist = sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_SAY);
Trinity::MessageDistDeliverer notifier(_owner, achievementEarnedBuilder, dist);
Cell::VisitWorldObjects(_owner, notifier, dist);
}
- else
- achievementEarnedBuilder(_owner);
}
void PlayerAchievementMgr::SendPacket(WorldPacket const* data) const
@@ -702,7 +702,7 @@ void GuildAchievementMgr::Reset()
ObjectGuid guid = _owner->GetGUID();
for (std::pair<uint32 const, CompletedAchievementData> const& completedAchievement : _completedAchievements)
{
- auto packetBuilder = [&](Player const* receiver)
+ _owner->BroadcastWorker([&](Player const* receiver)
{
WorldPackets::Achievement::GuildAchievementDeleted guildAchievementDeleted;
guildAchievementDeleted.AchievementID = completedAchievement.first;
@@ -710,8 +710,7 @@ void GuildAchievementMgr::Reset()
guildAchievementDeleted.TimeDeleted = *GameTime::GetUtcWowTime();
guildAchievementDeleted.TimeDeleted += receiver->GetSession()->GetTimezoneOffset();
receiver->SendDirectMessage(guildAchievementDeleted.Write());
- };
- _owner->BroadcastWorker(packetBuilder);
+ });
}
_achievementPoints = 0;
@@ -1020,7 +1019,7 @@ void GuildAchievementMgr::SendAchievementEarned(AchievementEntry const* achievem
sWorld->SendGlobalMessage(serverFirstAchievement.Write());
}
- auto guildAchievementEarnedBuilder = [&](Player const* receiver)
+ _owner->BroadcastWorker([&](Player const* receiver)
{
WorldPackets::Achievement::GuildAchievementEarned guildAchievementEarned;
guildAchievementEarned.AchievementID = achievement->ID;
@@ -1028,8 +1027,7 @@ void GuildAchievementMgr::SendAchievementEarned(AchievementEntry const* achievem
guildAchievementEarned.TimeEarned = *GameTime::GetUtcWowTime();
guildAchievementEarned.TimeEarned += receiver->GetSession()->GetTimezoneOffset();
receiver->SendDirectMessage(guildAchievementEarned.Write());
- };
- _owner->BroadcastWorker(guildAchievementEarnedBuilder);
+ });
}
void GuildAchievementMgr::SendPacket(WorldPacket const* data) const