From b494d51816fc4e411f1fa40f117a39d7f66c2a21 Mon Sep 17 00:00:00 2001 From: hondacrx Date: Mon, 7 Aug 2017 16:15:20 -0400 Subject: [PATCH] Misc Fixes --- BNetServer/Managers/SessionManager.cs | 2 +- Framework/Constants/CreatureConst.cs | 1 - Game/Achievements/AchievementManager.cs | 2 +- Game/Arenas/ArenaScore.cs | 4 +++- Game/DataStorage/DB2Manager.cs | 2 +- Game/Entities/Player/Player.Items.cs | 5 ++--- Game/Entities/Player/Player.cs | 12 +++-------- Game/Guilds/Guild.cs | 5 +++-- Game/Handlers/ChatHandler.cs | 4 ++-- Game/Handlers/GuildFinderHandler.cs | 3 +++ Game/Network/Packets/GuildPackets.cs | 20 ++++++++++-------- Game/Network/Packets/SpellPackets.cs | 28 ++++++++++++++++--------- Game/Server/WorldSession.cs | 3 +-- 13 files changed, 49 insertions(+), 42 deletions(-) diff --git a/BNetServer/Managers/SessionManager.cs b/BNetServer/Managers/SessionManager.cs index edc9bd0a2..d906e3dc6 100644 --- a/BNetServer/Managers/SessionManager.cs +++ b/BNetServer/Managers/SessionManager.cs @@ -127,7 +127,7 @@ namespace BNetServer } } - return new AccountInfo(); + return null; } public void CleanupLoginTickets(object state) diff --git a/Framework/Constants/CreatureConst.cs b/Framework/Constants/CreatureConst.cs index 1023dba5e..dc349df38 100644 --- a/Framework/Constants/CreatureConst.cs +++ b/Framework/Constants/CreatureConst.cs @@ -236,7 +236,6 @@ namespace Framework.Constants MaskDemonOrUnDead = (1 << (Demon - 1)) | (1 << (Undead - 1)), MaskHumanoidOrUndead = (1 << (Humanoid - 1)) | (1 << (Undead - 1)), MaskMechanicalOrElemental = (1 << (Mechanical - 1)) | (1 << (Elemental - 1)) - } public enum CreatureFamily diff --git a/Game/Achievements/AchievementManager.cs b/Game/Achievements/AchievementManager.cs index dbfab7fda..9e2846db1 100644 --- a/Game/Achievements/AchievementManager.cs +++ b/Game/Achievements/AchievementManager.cs @@ -969,7 +969,7 @@ namespace Game.Achievements guildCriteriaProgress.PlayerGUID = progress.PlayerGUID; guildCriteriaProgress.Flags = 0; - guildCriteriaUpdate.Progress[0] = guildCriteriaProgress; + guildCriteriaUpdate.Progress.Add(guildCriteriaProgress); _owner.BroadcastPacketIfTrackingAchievement(guildCriteriaUpdate, entry.ID); } diff --git a/Game/Arenas/ArenaScore.cs b/Game/Arenas/ArenaScore.cs index 6705f7bf2..782d31e90 100644 --- a/Game/Arenas/ArenaScore.cs +++ b/Game/Arenas/ArenaScore.cs @@ -30,8 +30,10 @@ namespace Game.Arenas TeamId = (int)(team == Team.Alliance ? BattlegroundTeamId.Alliance : BattlegroundTeamId.Horde); } - void BuildPvPLogPlayerDataPacket(PVPLogData.PlayerData playerData) + public override void BuildPvPLogPlayerDataPacket(out PVPLogData.PlayerData playerData) { + base.BuildPvPLogPlayerDataPacket(out playerData); + if (PreMatchRating != 0) playerData.PreMatchRating.Set(PreMatchRating); diff --git a/Game/DataStorage/DB2Manager.cs b/Game/DataStorage/DB2Manager.cs index 340716795..e3486a7d4 100644 --- a/Game/DataStorage/DB2Manager.cs +++ b/Game/DataStorage/DB2Manager.cs @@ -522,7 +522,7 @@ namespace Game.DataStorage public CharSectionsRecord GetCharSectionEntry(Race race, CharSectionType genType, Gender gender, byte type, byte color) { - var list = _charSections.LookupByKey((uint)genType | (uint)((int)gender << 8) | (uint)((int)race << 16)); + var list = _charSections.LookupByKey((byte)genType | ((byte)gender << 8) | ((byte)race << 16)); foreach (var charSection in list) if (charSection.Type == type && charSection.Color == color) return charSection; diff --git a/Game/Entities/Player/Player.Items.cs b/Game/Entities/Player/Player.Items.cs index 72ed75983..1c32f8d78 100644 --- a/Game/Entities/Player/Player.Items.cs +++ b/Game/Entities/Player/Player.Items.cs @@ -481,7 +481,6 @@ namespace Game.Entities return TotalCost; } - //Store Item public InventoryResult CanStoreItem(byte bag, byte slot, List dest, Item pItem, bool swap = false) { @@ -3844,7 +3843,7 @@ namespace Game.Entities m_items[slot] = null; int eslot = (int)slot - InventorySlots.BuyBackStart; - SetGuidValue(PlayerFields.InvSlotHead + (eslot * 4), ObjectGuid.Empty); + SetGuidValue(PlayerFields.InvSlotHead + (int)(slot * 4), ObjectGuid.Empty); SetUInt32Value(PlayerFields.BuyBackPrice1 + eslot, 0); SetUInt32Value(PlayerFields.BuyBackTimestamp1 + eslot, 0); @@ -5635,7 +5634,7 @@ namespace Game.Entities pItem.DestroyForPlayer(this); } - pItem.SetOwnerGUID(ObjectGuid.Empty); + //pItem.SetOwnerGUID(ObjectGuid.Empty); pItem.SetGuidValue(ItemFields.Contained, ObjectGuid.Empty); pItem.SetSlot(ItemConst.NullSlot); pItem.SetState(ItemUpdateState.Removed, this); diff --git a/Game/Entities/Player/Player.cs b/Game/Entities/Player/Player.cs index 7974dca6b..9d98eeb5f 100644 --- a/Game/Entities/Player/Player.cs +++ b/Game/Entities/Player/Player.cs @@ -4116,12 +4116,9 @@ namespace Game.Entities if (!IsSectionFlagValid(hair, class_, create)) return false; - if (facialHairId != 0) - { - CharSectionsRecord facialHair = Global.DB2Mgr.GetCharSectionEntry(race, CharSectionType.FacialHair, gender, facialHairId, hairColor); - if (facialHair == null) - return false; - } + CharSectionsRecord facialHair = Global.DB2Mgr.GetCharSectionEntry(race, CharSectionType.Hair, gender, facialHairId, hairColor); + if (facialHair == null) + return false; for (int i = 0; i < PlayerConst.CustomDisplaySize; ++i) { @@ -5903,9 +5900,6 @@ namespace Game.Entities return reputationMgr; } - - - #region Sends / Updates void BeforeVisibilityDestroy(WorldObject obj, Player p) { diff --git a/Game/Guilds/Guild.cs b/Game/Guilds/Guild.cs index bd0791011..c7c1dde44 100644 --- a/Game/Guilds/Guild.cs +++ b/Game/Guilds/Guild.cs @@ -948,9 +948,9 @@ namespace Game.Guilds public void SendNewsUpdate(WorldSession session) { - var logs = m_eventLog.GetGuildLog(); + var logs = m_newsLog.GetGuildLog(); - if (logs == null) + if (logs.Empty()) return; GuildNewsPkt packet = new GuildNewsPkt(); @@ -3026,6 +3026,7 @@ namespace Game.Guilds stmt.AddValue(1, m_rankId); stmt.AddValue(2, m_name); stmt.AddValue(3, m_rights); + stmt.AddValue(4, m_bankMoneyPerDay); DB.Characters.ExecuteOrAppend(trans, stmt); } diff --git a/Game/Handlers/ChatHandler.cs b/Game/Handlers/ChatHandler.cs index 259416756..82e7907a4 100644 --- a/Game/Handlers/ChatHandler.cs +++ b/Game/Handlers/ChatHandler.cs @@ -626,14 +626,14 @@ namespace Game Unit unit = Global.ObjAccessor.GetUnit(GetPlayer(), packet.Target); - GetPlayer().UpdateCriteria(CriteriaTypes.DoEmote, (uint)packet.SoundIndex, 0, 0, unit); + GetPlayer().UpdateCriteria(CriteriaTypes.DoEmote, (uint)packet.EmoteID, 0, 0, unit); // Send scripted event call if (unit) { Creature creature = unit.ToCreature(); if (creature) - creature.GetAI().ReceiveEmote(GetPlayer(), (TextEmotes)packet.SoundIndex); + creature.GetAI().ReceiveEmote(GetPlayer(), (TextEmotes)packet.EmoteID); } } diff --git a/Game/Handlers/GuildFinderHandler.cs b/Game/Handlers/GuildFinderHandler.cs index 313ae3cb4..5812717f2 100644 --- a/Game/Handlers/GuildFinderHandler.cs +++ b/Game/Handlers/GuildFinderHandler.cs @@ -151,6 +151,9 @@ namespace Game if (guild.GetLeaderGUID() == player.GetGUID()) { LFGuildSettings settings = Global.GuildFinderMgr.GetGuildSettings(guild.GetGUID()); + if (settings == null) + return; + lfGuildPost.Post.HasValue = true; lfGuildPost.Post.Value.Active = settings.IsListed(); lfGuildPost.Post.Value.PlayStyle = settings.GetInterests(); diff --git a/Game/Network/Packets/GuildPackets.cs b/Game/Network/Packets/GuildPackets.cs index 94e716d0d..3d11f5048 100644 --- a/Game/Network/Packets/GuildPackets.cs +++ b/Game/Network/Packets/GuildPackets.cs @@ -74,7 +74,7 @@ namespace Game.Network.Packets } public ObjectGuid GuildGUID; - public GuildInfo Info; + public GuildInfo Info = new GuildInfo(); public bool HasGuildInfo; public class GuildInfo @@ -453,7 +453,7 @@ namespace Game.Network.Packets public string NewLeaderName; public uint NewLeaderVirtualRealmAddress; public ObjectGuid OldLeaderGUID; - public string OldLeaderName; + public string OldLeaderName = ""; public uint OldLeaderVirtualRealmAddress; public bool SelfPromoted; } @@ -587,11 +587,11 @@ namespace Game.Network.Packets public override void Read() { - _worldPacket.WriteBits(Name.Length, 7); - _worldPacket.FlushBits(); + uint nameLen = _worldPacket.ReadBits(7); + _worldPacket.ResetBitPos(); RankOrder = _worldPacket.ReadInt32(); - _worldPacket.WriteString(Name); + Name = _worldPacket.ReadString(nameLen); } public string Name; @@ -874,10 +874,11 @@ namespace Game.Network.Packets public override void Write() { - _worldPacket .WriteUInt32( Version); + _worldPacket.WriteUInt32(Version); _worldPacket.WriteUInt32(RewardItems.Count); - RewardItems.ForEach(p => p.Write(_worldPacket)); + foreach (var item in RewardItems) + item.Write(_worldPacket); } public List RewardItems; @@ -1468,9 +1469,10 @@ namespace Game.Network.Packets data.WriteUInt32(RaceMask); data.WriteUInt32(MinGuildLevel); data.WriteUInt32(MinGuildRep); - data.WriteUInt32(Cost); + data.WriteUInt64(Cost); - AchievementsRequired.ForEach(p => data.WriteUInt32(p)); + foreach (var achievementId in AchievementsRequired) + data.WriteUInt32(achievementId); } public uint ItemID; diff --git a/Game/Network/Packets/SpellPackets.cs b/Game/Network/Packets/SpellPackets.cs index 1b63db147..1c58c7b5f 100644 --- a/Game/Network/Packets/SpellPackets.cs +++ b/Game/Network/Packets/SpellPackets.cs @@ -1138,15 +1138,20 @@ namespace Game.Network.Packets } } - public long Health; - public int AttackPower; - public int SpellPower; + long Health; + int AttackPower; + int SpellPower; List PowerData = new List(); } class SandboxScalingData { - public bool GenerateDataForUnits(Creature attacker, Player target) + bool GenerateDataPlayerToPlayer(Player attacker, Player target) + { + return false; + } + + bool GenerateDataCreatureToPlayer(Creature attacker, Player target) { CreatureTemplate creatureTemplate = attacker.GetCreatureTemplate(); @@ -1162,7 +1167,7 @@ namespace Game.Network.Packets return true; } - public bool GenerateDataForUnits(Player attacker, Creature target) + bool GenerateDataPlayerToCreature(Player attacker, Creature target) { CreatureTemplate creatureTemplate = target.GetCreatureTemplate(); @@ -1178,7 +1183,7 @@ namespace Game.Network.Packets return true; } - public bool GenerateDataForUnits(Creature attacker, Creature target) + bool GenerateDataCreatureToCreature(Creature attacker, Creature target) { CreatureTemplate creatureTemplate = target.HasScalableLevels() ? target.GetCreatureTemplate() : attacker.GetCreatureTemplate(); @@ -1203,11 +1208,11 @@ namespace Game.Network.Packets Player playerTarget = target.ToPlayer(); Creature creatureTarget = target.ToCreature(); if (playerTarget) - return GenerateDataForUnits(playerAttacker, playerTarget); + return GenerateDataPlayerToPlayer(playerAttacker, playerTarget); else if (creatureTarget) { if (creatureTarget.HasScalableLevels()) - return GenerateDataForUnits(playerAttacker, creatureTarget); + return GenerateDataPlayerToCreature(playerAttacker, creatureTarget); } } else if (creatureAttacker) @@ -1215,11 +1220,14 @@ namespace Game.Network.Packets Player playerTarget = target.ToPlayer(); Creature creatureTarget = target.ToCreature(); if (playerTarget) - return GenerateDataForUnits(creatureAttacker, playerTarget); + { + if (creatureAttacker.HasScalableLevels()) + return GenerateDataCreatureToPlayer(creatureAttacker, playerTarget); + } else if (creatureTarget) { if (creatureAttacker.HasScalableLevels() || creatureTarget.HasScalableLevels()) - return GenerateDataForUnits(creatureAttacker, creatureTarget); + return GenerateDataCreatureToCreature(creatureAttacker, creatureTarget); } } diff --git a/Game/Server/WorldSession.cs b/Game/Server/WorldSession.cs index b879eab42..63a43c49c 100644 --- a/Game/Server/WorldSession.cs +++ b/Game/Server/WorldSession.cs @@ -160,10 +160,9 @@ namespace Game // some save parts only correctly work in case player present in map/player_lists (pets, etc) if (save) { - int eslot; for (int j = InventorySlots.BuyBackStart; j < InventorySlots.BuyBackEnd; ++j) { - eslot = j - InventorySlots.BuyBackStart; + int eslot = j - InventorySlots.BuyBackStart; _player.SetGuidValue(PlayerFields.InvSlotHead + (j * 4), ObjectGuid.Empty); _player.SetUInt32Value(PlayerFields.BuyBackPrice1 + eslot, 0); _player.SetUInt32Value(PlayerFields.BuyBackTimestamp1 + eslot, 0);