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:
@@ -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)
|
||||||
|
|||||||
@@ -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());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user