From 96f57592d9ef98eacd3045af36088c80a042184b Mon Sep 17 00:00:00 2001 From: Hondacrx Date: Thu, 8 Aug 2024 17:33:23 -0400 Subject: [PATCH] Core/Achievements: Fixed achievement SMSG_ACHIEVEMENT_EARNED not being sent to self Port From (https://github.com/TrinityCore/TrinityCore/commit/0384d9066336b8ec71434c49244d1ddb0657c11e) --- Source/Game/Achievements/AchievementManager.cs | 10 ++++------ Source/Game/Entities/Unit/Vignette.cs | 5 ++++- Source/Game/Guilds/Guild.cs | 6 ++---- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/Source/Game/Achievements/AchievementManager.cs b/Source/Game/Achievements/AchievementManager.cs index f5f279f73..69d910c20 100644 --- a/Source/Game/Achievements/AchievementManager.cs +++ b/Source/Game/Achievements/AchievementManager.cs @@ -671,6 +671,8 @@ namespace Game.Achievements achievementEarned.Time += receiver.GetSession().GetTimezoneOffset(); receiver.SendPacket(achievementEarned); }; + + achievementEarnedBuilder(_owner); if (!achievement.Flags.HasAnyFlag(AchievementFlags.TrackingFlag)) { @@ -678,8 +680,6 @@ namespace Game.Achievements MessageDistDeliverer notifier = new(_owner, achievementEarnedBuilder, dist); Cell.VisitWorldObjects(_owner, notifier, dist); } - else - achievementEarnedBuilder(_owner); } public override void SendPacket(ServerPacket data) @@ -1050,7 +1050,7 @@ namespace Game.Achievements Global.WorldMgr.SendGlobalMessage(serverFirstAchievement); } - var guildAchievementEarnedBuilder = (Player receiver) => + _owner.BroadcastWorker(receiver => { GuildAchievementEarned guildAchievementEarned = new(); guildAchievementEarned.AchievementID = achievement.Id; @@ -1058,9 +1058,7 @@ namespace Game.Achievements guildAchievementEarned.TimeEarned = GameTime.GetUtcWowTime(); guildAchievementEarned.TimeEarned += receiver.GetSession().GetTimezoneOffset(); receiver.SendPacket(guildAchievementEarned); - }; - - _owner.BroadcastWorker(guildAchievementEarnedBuilder); + }); } public override void SendPacket(ServerPacket data) diff --git a/Source/Game/Entities/Unit/Vignette.cs b/Source/Game/Entities/Unit/Vignette.cs index 14be3a8d6..f8b3f282e 100644 --- a/Source/Game/Entities/Unit/Vignette.cs +++ b/Source/Game/Entities/Unit/Vignette.cs @@ -5,7 +5,6 @@ using Framework.Constants; using Game.DataStorage; using Game.Maps; using Game.Networking.Packets; -using System.Collections.Generic; namespace Game.Entities { @@ -37,6 +36,10 @@ namespace Game.Entities receiver.SendPacket(vignetteUpdate); }; + Player playerOwner = owner.ToPlayer(); + if (playerOwner != null) + sender(playerOwner); + MessageDistDeliverer notifier = new(owner, sender, owner.GetVisibilityRange()); Cell.VisitWorldObjects(owner, notifier, owner.GetVisibilityRange()); } diff --git a/Source/Game/Guilds/Guild.cs b/Source/Game/Guilds/Guild.cs index ccaaa1312..873a79930 100644 --- a/Source/Game/Guilds/Guild.cs +++ b/Source/Game/Guilds/Guild.cs @@ -2411,16 +2411,14 @@ namespace Game.Guilds NewsLogEntry news = m_newsLog.AddEvent(trans, new NewsLogEntry(m_id, m_newsLog.GetNextGUID(), type, guid, flags, value)); DB.Characters.CommitTransaction(trans); - var packetBuilder = (Player receiver) => + BroadcastWorker(receiver => { GuildNewsPkt newsPacket = new(); news.WritePacket(newsPacket); newsPacket.NewsEvents.Last().CompletedDate += receiver.GetSession().GetTimezoneOffset(); receiver.SendPacket(newsPacket); - }; - - BroadcastWorker(packetBuilder); + }); } bool HasAchieved(uint achievementId)