Core/Achievements: Fixed achievement SMSG_ACHIEVEMENT_EARNED not being sent to self

Port From (https://github.com/TrinityCore/TrinityCore/commit/0384d9066336b8ec71434c49244d1ddb0657c11e)
This commit is contained in:
Hondacrx
2024-08-08 17:33:23 -04:00
parent 2f71dbfda0
commit 96f57592d9
3 changed files with 10 additions and 11 deletions
@@ -672,14 +672,14 @@ namespace Game.Achievements
receiver.SendPacket(achievementEarned); receiver.SendPacket(achievementEarned);
}; };
achievementEarnedBuilder(_owner);
if (!achievement.Flags.HasAnyFlag(AchievementFlags.TrackingFlag)) if (!achievement.Flags.HasAnyFlag(AchievementFlags.TrackingFlag))
{ {
float dist = WorldConfig.GetFloatValue(WorldCfg.ListenRangeSay); float dist = WorldConfig.GetFloatValue(WorldCfg.ListenRangeSay);
MessageDistDeliverer notifier = new(_owner, achievementEarnedBuilder, dist); MessageDistDeliverer notifier = new(_owner, achievementEarnedBuilder, dist);
Cell.VisitWorldObjects(_owner, notifier, dist); Cell.VisitWorldObjects(_owner, notifier, dist);
} }
else
achievementEarnedBuilder(_owner);
} }
public override void SendPacket(ServerPacket data) public override void SendPacket(ServerPacket data)
@@ -1050,7 +1050,7 @@ namespace Game.Achievements
Global.WorldMgr.SendGlobalMessage(serverFirstAchievement); Global.WorldMgr.SendGlobalMessage(serverFirstAchievement);
} }
var guildAchievementEarnedBuilder = (Player receiver) => _owner.BroadcastWorker(receiver =>
{ {
GuildAchievementEarned guildAchievementEarned = new(); GuildAchievementEarned guildAchievementEarned = new();
guildAchievementEarned.AchievementID = achievement.Id; guildAchievementEarned.AchievementID = achievement.Id;
@@ -1058,9 +1058,7 @@ namespace Game.Achievements
guildAchievementEarned.TimeEarned = GameTime.GetUtcWowTime(); guildAchievementEarned.TimeEarned = GameTime.GetUtcWowTime();
guildAchievementEarned.TimeEarned += receiver.GetSession().GetTimezoneOffset(); guildAchievementEarned.TimeEarned += receiver.GetSession().GetTimezoneOffset();
receiver.SendPacket(guildAchievementEarned); receiver.SendPacket(guildAchievementEarned);
}; });
_owner.BroadcastWorker(guildAchievementEarnedBuilder);
} }
public override void SendPacket(ServerPacket data) public override void SendPacket(ServerPacket data)
+4 -1
View File
@@ -5,7 +5,6 @@ using Framework.Constants;
using Game.DataStorage; using Game.DataStorage;
using Game.Maps; using Game.Maps;
using Game.Networking.Packets; using Game.Networking.Packets;
using System.Collections.Generic;
namespace Game.Entities namespace Game.Entities
{ {
@@ -37,6 +36,10 @@ namespace Game.Entities
receiver.SendPacket(vignetteUpdate); receiver.SendPacket(vignetteUpdate);
}; };
Player playerOwner = owner.ToPlayer();
if (playerOwner != null)
sender(playerOwner);
MessageDistDeliverer notifier = new(owner, sender, owner.GetVisibilityRange()); MessageDistDeliverer notifier = new(owner, sender, owner.GetVisibilityRange());
Cell.VisitWorldObjects(owner, notifier, owner.GetVisibilityRange()); Cell.VisitWorldObjects(owner, notifier, owner.GetVisibilityRange());
} }
+2 -4
View File
@@ -2411,16 +2411,14 @@ namespace Game.Guilds
NewsLogEntry news = m_newsLog.AddEvent(trans, new NewsLogEntry(m_id, m_newsLog.GetNextGUID(), type, guid, flags, value)); NewsLogEntry news = m_newsLog.AddEvent(trans, new NewsLogEntry(m_id, m_newsLog.GetNextGUID(), type, guid, flags, value));
DB.Characters.CommitTransaction(trans); DB.Characters.CommitTransaction(trans);
var packetBuilder = (Player receiver) => BroadcastWorker(receiver =>
{ {
GuildNewsPkt newsPacket = new(); GuildNewsPkt newsPacket = new();
news.WritePacket(newsPacket); news.WritePacket(newsPacket);
newsPacket.NewsEvents.Last().CompletedDate += receiver.GetSession().GetTimezoneOffset(); newsPacket.NewsEvents.Last().CompletedDate += receiver.GetSession().GetTimezoneOffset();
receiver.SendPacket(newsPacket); receiver.SendPacket(newsPacket);
}; });
BroadcastWorker(packetBuilder);
} }
bool HasAchieved(uint achievementId) bool HasAchieved(uint achievementId)