diff --git a/Source/Game/Entities/Player/Player.DB.cs b/Source/Game/Entities/Player/Player.DB.cs index fcb721be9..083720e81 100644 --- a/Source/Game/Entities/Player/Player.DB.cs +++ b/Source/Game/Entities/Player/Player.DB.cs @@ -3395,7 +3395,7 @@ namespace Game.Entities stmt.AddValue(index++, (byte)GetClass()); stmt.AddValue(index++, (byte)GetNativeGender()); // save gender from PLAYER_BYTES_3, UNIT_BYTES_0 changes with every transform effect stmt.AddValue(index++, GetLevel()); - stmt.AddValue(index++, m_activePlayerData.XP); + stmt.AddValue(index++, GetXP()); stmt.AddValue(index++, GetMoney()); stmt.AddValue(index++, GetInventorySlotCount()); stmt.AddValue(index++, GetBankBagSlotCount()); @@ -3519,7 +3519,7 @@ namespace Game.Entities stmt.AddValue(index++, (byte)GetClass()); stmt.AddValue(index++, (byte)GetNativeGender()); // save gender from PLAYER_BYTES_3, UNIT_BYTES_0 changes with every transform effect stmt.AddValue(index++, GetLevel()); - stmt.AddValue(index++, m_activePlayerData.XP); + stmt.AddValue(index++, GetXP()); stmt.AddValue(index++, GetMoney()); stmt.AddValue(index++, GetInventorySlotCount()); stmt.AddValue(index++, GetBankBagSlotCount()); diff --git a/Source/Game/Entities/Player/Player.cs b/Source/Game/Entities/Player/Player.cs index 64c83b311..750c3729b 100644 --- a/Source/Game/Entities/Player/Player.cs +++ b/Source/Game/Entities/Player/Player.cs @@ -232,7 +232,7 @@ namespace Game.Entities SetRace(createInfo.RaceId); SetClass(createInfo.ClassId); SetGender(createInfo.Sex); - SetPowerType(powertype); + SetPowerType(powertype, false); InitDisplayIds(); UpdatePositionData(); if ((RealmType)WorldConfig.GetIntValue(WorldCfg.GameType) == RealmType.PVP || (RealmType)WorldConfig.GetIntValue(WorldCfg.GameType) == RealmType.RPPVP) @@ -5225,7 +5225,7 @@ namespace Game.Entities _ApplyAllLevelScaleItemMods(false); - SetLevel(level); + SetLevel(level, false); UpdateSkillsForLevel(); LearnDefaultSkills(); @@ -6502,9 +6502,8 @@ namespace Game.Entities packet.ReferAFriendBonusType = (byte)(recruitAFriend ? 1 : 0); SendPacket(packet); - uint curXP = m_activePlayerData.XP; - uint nextLvlXP = m_activePlayerData.NextLevelXP; - uint newXP = curXP + xp + bonus_xp; + uint nextLvlXP = GetXPForNextLevel(); + uint newXP = GetXP() + xp + bonus_xp; while (newXP >= nextLvlXP && level < WorldConfig.GetIntValue(WorldCfg.MaxPlayerLevel)) { @@ -6514,7 +6513,7 @@ namespace Game.Entities GiveLevel(level + 1); level = GetLevel(); - nextLvlXP = m_activePlayerData.NextLevelXP; + nextLvlXP = GetXPForNextLevel(); } SetXP(newXP); diff --git a/Source/Game/Entities/StatSystem.cs b/Source/Game/Entities/StatSystem.cs index c34c0ad2c..9dcf67b2c 100644 --- a/Source/Game/Entities/StatSystem.cs +++ b/Source/Game/Entities/StatSystem.cs @@ -535,13 +535,16 @@ namespace Game.Entities //Powers public PowerType GetPowerType() { return (PowerType)(byte)m_unitData.DisplayPower; } - public void SetPowerType(PowerType powerType) + public void SetPowerType(PowerType powerType, bool sendUpdate = true) { if (GetPowerType() == powerType) return; SetUpdateFieldValue(m_values.ModifyValue(m_unitData).ModifyValue(m_unitData.DisplayPower), (byte)powerType); + if (!sendUpdate) + return; + Player thisPlayer = ToPlayer(); if (thisPlayer != null) { diff --git a/Source/Game/Entities/Unit/Unit.cs b/Source/Game/Entities/Unit/Unit.cs index c4fc10b0f..3de86a2fa 100644 --- a/Source/Game/Entities/Unit/Unit.cs +++ b/Source/Game/Entities/Unit/Unit.cs @@ -1674,10 +1674,13 @@ namespace Game.Entities } //Unit - public void SetLevel(uint lvl) + public void SetLevel(uint lvl, bool sendUpdate = true) { SetUpdateFieldValue(m_values.ModifyValue(m_unitData).ModifyValue(m_unitData.Level), lvl); + if (!sendUpdate) + return; + Player player = ToPlayer(); if (player != null) {