From 8341244e4dff3a0ecdfa95b54c85cfea3660d297 Mon Sep 17 00:00:00 2001 From: Hondacrx Date: Sun, 8 Sep 2024 15:23:43 -0400 Subject: [PATCH] Core/Players: Use PlayerData::VirtualPlayerRealm instead of global GetVirtualRealmAddress() where possible Port From (https://github.com/TrinityCore/TrinityCore/commit/88fea990ff1408b94076fb9dbd0c974908d6a731) --- Source/Game/Achievements/AchievementManager.cs | 6 +++--- Source/Game/BattlePets/BattlePetManager.cs | 2 +- Source/Game/Chat/Channels/Channel.cs | 2 +- Source/Game/Entities/Player/Player.Combat.cs | 8 ++++---- Source/Game/Entities/Player/Player.cs | 7 ++++++- Source/Game/Guilds/Guild.cs | 4 ++-- Source/Game/Spells/Spell.cs | 7 ++++++- 7 files changed, 23 insertions(+), 13 deletions(-) diff --git a/Source/Game/Achievements/AchievementManager.cs b/Source/Game/Achievements/AchievementManager.cs index 69d910c20..ee7e22f0e 100644 --- a/Source/Game/Achievements/AchievementManager.cs +++ b/Source/Game/Achievements/AchievementManager.cs @@ -370,7 +370,7 @@ namespace Game.Achievements if (!achievement.Flags.HasAnyFlag(AchievementFlags.Account)) { earned.Owner = _owner.GetGUID(); - earned.VirtualRealmAddress = earned.NativeRealmAddress = Global.WorldMgr.GetVirtualRealmAddress(); + earned.VirtualRealmAddress = earned.NativeRealmAddress = _owner.m_playerData.VirtualPlayerRealm; } achievementData.Data.Earned.Add(earned); @@ -430,7 +430,7 @@ namespace Game.Achievements if (!achievement.Flags.HasAnyFlag(AchievementFlags.Account)) { earned.Owner = _owner.GetGUID(); - earned.VirtualRealmAddress = earned.NativeRealmAddress = Global.WorldMgr.GetVirtualRealmAddress(); + earned.VirtualRealmAddress = earned.NativeRealmAddress = _owner.m_playerData.VirtualPlayerRealm; } inspectedAchievements.Data.Earned.Add(earned); @@ -665,7 +665,7 @@ namespace Game.Achievements AchievementEarned achievementEarned = new(); achievementEarned.Sender = _owner.GetGUID(); achievementEarned.Earner = _owner.GetGUID(); - achievementEarned.EarnerNativeRealm = achievementEarned.EarnerVirtualRealm = Global.WorldMgr.GetVirtualRealmAddress(); + achievementEarned.EarnerNativeRealm = achievementEarned.EarnerVirtualRealm = _owner.m_playerData.VirtualPlayerRealm; achievementEarned.AchievementID = achievement.Id; achievementEarned.Time = GameTime.GetUtcWowTime(); achievementEarned.Time += receiver.GetSession().GetTimezoneOffset(); diff --git a/Source/Game/BattlePets/BattlePetManager.cs b/Source/Game/BattlePets/BattlePetManager.cs index 2cfc1bc2f..e15d8bbcc 100644 --- a/Source/Game/BattlePets/BattlePetManager.cs +++ b/Source/Game/BattlePets/BattlePetManager.cs @@ -409,7 +409,7 @@ namespace Game.BattlePets { BattlePetStruct.BattlePetOwnerInfo battlePetOwnerInfo = new(); battlePetOwnerInfo.Guid = player.GetGUID(); - battlePetOwnerInfo.PlayerVirtualRealm = Global.WorldMgr.GetVirtualRealmAddress(); + battlePetOwnerInfo.PlayerVirtualRealm = _owner.m_playerData.VirtualPlayerRealm; battlePetOwnerInfo.PlayerNativeRealm = Global.WorldMgr.GetVirtualRealmAddress(); pet.PacketInfo.OwnerInfo = battlePetOwnerInfo; } diff --git a/Source/Game/Chat/Channels/Channel.cs b/Source/Game/Chat/Channels/Channel.cs index 0545f79b6..c1dedf46f 100644 --- a/Source/Game/Chat/Channels/Channel.cs +++ b/Source/Game/Chat/Channels/Channel.cs @@ -536,7 +536,7 @@ namespace Game.Chat member.GetSession().GetSecurity() <= (AccountTypes)gmLevelInWhoList) && member.IsVisibleGloballyFor(player)) { - list.Members.Add(new ChannelListResponse.ChannelPlayer(pair.Key, Global.WorldMgr.GetVirtualRealmAddress(), pair.Value.GetFlags())); + list.Members.Add(new ChannelListResponse.ChannelPlayer(pair.Key, member.m_playerData.VirtualPlayerRealm, pair.Value.GetFlags())); } } diff --git a/Source/Game/Entities/Player/Player.Combat.cs b/Source/Game/Entities/Player/Player.Combat.cs index 6140ee712..5439fb18b 100644 --- a/Source/Game/Entities/Player/Player.Combat.cs +++ b/Source/Game/Entities/Player/Player.Combat.cs @@ -438,10 +438,10 @@ namespace Game.Entities if (type != DuelCompleteType.Interrupted) { DuelWinner duelWinner = new(); - duelWinner.BeatenName = (type == DuelCompleteType.Won ? opponent.GetName() : GetName()); - duelWinner.WinnerName = (type == DuelCompleteType.Won ? GetName() : opponent.GetName()); - duelWinner.BeatenVirtualRealmAddress = Global.WorldMgr.GetVirtualRealmAddress(); - duelWinner.WinnerVirtualRealmAddress = Global.WorldMgr.GetVirtualRealmAddress(); + duelWinner.BeatenName = (type == DuelCompleteType.Won ? opponent : this).GetName(); + duelWinner.WinnerName = (type == DuelCompleteType.Won ? this : opponent).GetName(); + duelWinner.BeatenVirtualRealmAddress = (type == DuelCompleteType.Won ? opponent : this).m_playerData.VirtualPlayerRealm; + duelWinner.WinnerVirtualRealmAddress = (type == DuelCompleteType.Won ? this : opponent).m_playerData.VirtualPlayerRealm; duelWinner.Fled = type != DuelCompleteType.Won; SendMessageToSet(duelWinner, true); diff --git a/Source/Game/Entities/Player/Player.cs b/Source/Game/Entities/Player/Player.cs index d559c887a..985f3b876 100644 --- a/Source/Game/Entities/Player/Player.cs +++ b/Source/Game/Entities/Player/Player.cs @@ -2446,7 +2446,12 @@ namespace Game.Entities SummonRequest summonRequest = new(); summonRequest.SummonerGUID = summoner.GetGUID(); - summonRequest.SummonerVirtualRealmAddress = WorldMgr.GetVirtualRealmAddress(); + Player playerSummoner = summoner.ToPlayer(); + if (playerSummoner != null) + summonRequest.SummonerVirtualRealmAddress = playerSummoner.m_playerData.VirtualPlayerRealm; + else + summonRequest.SummonerVirtualRealmAddress = Global.WorldMgr.GetVirtualRealmAddress(); + summonRequest.AreaID = (int)summoner.GetZoneId(); SendPacket(summonRequest); diff --git a/Source/Game/Guilds/Guild.cs b/Source/Game/Guilds/Guild.cs index ac203d6fd..e2d1b9fac 100644 --- a/Source/Game/Guilds/Guild.cs +++ b/Source/Game/Guilds/Guild.cs @@ -581,7 +581,7 @@ namespace Game.Guilds GuildInvite invite = new(); - invite.InviterVirtualRealmAddress = Global.WorldMgr.GetVirtualRealmAddress(); + invite.InviterVirtualRealmAddress = player.m_playerData.VirtualPlayerRealm; invite.GuildVirtualRealmAddress = Global.WorldMgr.GetVirtualRealmAddress(); invite.GuildGUID = GetGUID(); @@ -1237,7 +1237,7 @@ namespace Game.Guilds GuildEventPresenceChange eventPacket = new(); eventPacket.Guid = player.GetGUID(); eventPacket.Name = player.GetName(); - eventPacket.VirtualRealmAddress = Global.WorldMgr.GetVirtualRealmAddress(); + eventPacket.VirtualRealmAddress = player.m_playerData.VirtualPlayerRealm; eventPacket.LoggedOn = loggedOn; if (broadcast) diff --git a/Source/Game/Spells/Spell.cs b/Source/Game/Spells/Spell.cs index f3cbc3671..9459f6ab0 100644 --- a/Source/Game/Spells/Spell.cs +++ b/Source/Game/Spells/Spell.cs @@ -4619,7 +4619,12 @@ namespace Game.Spells ResurrectRequest resurrectRequest = new(); resurrectRequest.ResurrectOffererGUID = m_caster.GetGUID(); - resurrectRequest.ResurrectOffererVirtualRealmAddress = Global.WorldMgr.GetVirtualRealmAddress(); + Player playerCaster = m_caster.ToPlayer(); + if (playerCaster != null) + resurrectRequest.ResurrectOffererVirtualRealmAddress = playerCaster.m_playerData.VirtualPlayerRealm; + else + resurrectRequest.ResurrectOffererVirtualRealmAddress = Global.WorldMgr.GetVirtualRealmAddress(); + resurrectRequest.Name = sentName; resurrectRequest.Sickness = m_caster.IsUnit() && !m_caster.IsTypeId(TypeId.Player); // "you'll be afflicted with resurrection sickness" resurrectRequest.UseTimer = !m_spellInfo.HasAttribute(SpellAttr3.NoResTimer);