diff --git a/Source/Game/Entities/Player/Player.DB.cs b/Source/Game/Entities/Player/Player.DB.cs index f73055b95..7feb70445 100644 --- a/Source/Game/Entities/Player/Player.DB.cs +++ b/Source/Game/Entities/Player/Player.DB.cs @@ -346,6 +346,7 @@ namespace Game.Entities } void _LoadSkills(SQLResult result) { + Race race = GetRace(); uint count = 0; Dictionary loadedSkillValues = new(); if (!result.IsEmpty()) @@ -362,11 +363,11 @@ namespace Game.Entities var value = result.Read(1); var max = result.Read(2); - SkillRaceClassInfoRecord rcEntry = Global.DB2Mgr.GetSkillRaceClassInfo(skill, GetRace(), GetClass()); + SkillRaceClassInfoRecord rcEntry = Global.DB2Mgr.GetSkillRaceClassInfo(skill, race, GetClass()); if (rcEntry == null) { Log.outError(LogFilter.Player, "Character: {0}(GUID: {1} Race: {2} Class: {3}) has skill {4} not allowed for his race/class combination", - GetName(), GetGUID().ToString(), GetRace(), GetClass(), skill); + GetName(), GetGUID().ToString(), race, GetClass(), skill); mSkillStatus.Add(skill, new SkillStatusData(0, SkillState.Deleted)); continue; } @@ -428,7 +429,7 @@ namespace Game.Entities // Learn skill rewarded spells after all skills have been loaded to prevent learning a skill from them before its loaded with proper value from DB foreach (var skill in loadedSkillValues) { - LearnSkillRewardedSpells(skill.Key, skill.Value); + LearnSkillRewardedSpells(skill.Key, skill.Value, race); List childSkillLines = Global.DB2Mgr.GetSkillLinesForParentSkill(skill.Key); if (childSkillLines != null) { diff --git a/Source/Game/Entities/Player/Player.Spells.cs b/Source/Game/Entities/Player/Player.Spells.cs index fad8f638f..5ecb08d0c 100644 --- a/Source/Game/Entities/Player/Player.Spells.cs +++ b/Source/Game/Entities/Player/Player.Spells.cs @@ -30,6 +30,7 @@ namespace Game.Entities { void UpdateSkillsForLevel() { + Race race = GetRace(); ushort maxSkill = GetMaxSkillValueForLevel(); SkillInfo skillInfoField = m_activePlayerData.Skill; @@ -54,7 +55,7 @@ namespace Game.Entities } // Update level dependent skillline spells - LearnSkillRewardedSpells(rcEntry.SkillID, skillInfoField.SkillRank[pair.Value.Pos]); + LearnSkillRewardedSpells(rcEntry.SkillID, skillInfoField.SkillRank[pair.Value.Pos], race); } } @@ -429,7 +430,7 @@ namespace Game.Entities { if (value < bsl && new_value >= bsl) { - LearnSkillRewardedSpells(skillId, new_value); + LearnSkillRewardedSpells(skillId, new_value, GetRace()); break; } } @@ -1082,7 +1083,7 @@ namespace Game.Entities SetSkillRank(skillStatusData.Pos, (ushort)newVal); SetSkillMaxRank(skillStatusData.Pos, (ushort)maxVal); - LearnSkillRewardedSpells(id, newVal); + LearnSkillRewardedSpells(id, newVal, GetRace()); // if skill value is going up, update enchantments after setting the new value if (newVal > currVal) { @@ -1237,7 +1238,7 @@ namespace Game.Entities auraEffect.HandleEffect(this, AuraEffectHandleModes.Skill, true); // Learn all spells for skill - LearnSkillRewardedSpells(id, newVal); + LearnSkillRewardedSpells(id, newVal, GetRace()); UpdateCriteria(CriteriaType.SkillRaised, id); UpdateCriteria(CriteriaType.AchieveSkillStep, id); } @@ -1560,9 +1561,9 @@ namespace Game.Entities public uint GetLastPotionId() { return m_lastPotionId; } public void SetLastPotionId(uint item_id) { m_lastPotionId = item_id; } - void LearnSkillRewardedSpells(uint skillId, uint skillValue) + void LearnSkillRewardedSpells(uint skillId, uint skillValue, Race race) { - long raceMask = SharedConst.GetMaskForRace(GetRace()); + long raceMask = SharedConst.GetMaskForRace(race); uint classMask = GetClassMask(); List skillLineAbilities = Global.DB2Mgr.GetSkillLineAbilitiesBySkill(skillId);