Core/Players: Add player race argument to Player::LearnSkillRewardedSpells

Port From (https://github.com/TrinityCore/TrinityCore/commit/d1209a83889ce26e29edc1ac19717eb6012e3a1d)
This commit is contained in:
hondacrx
2022-05-31 13:52:41 -04:00
parent b30ba3422f
commit 1075f52b31
2 changed files with 11 additions and 9 deletions
+4 -3
View File
@@ -346,6 +346,7 @@ namespace Game.Entities
}
void _LoadSkills(SQLResult result)
{
Race race = GetRace();
uint count = 0;
Dictionary<uint, uint> loadedSkillValues = new();
if (!result.IsEmpty())
@@ -362,11 +363,11 @@ namespace Game.Entities
var value = result.Read<ushort>(1);
var max = result.Read<ushort>(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<SkillLineRecord> childSkillLines = Global.DB2Mgr.GetSkillLinesForParentSkill(skill.Key);
if (childSkillLines != null)
{
+7 -6
View File
@@ -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<SkillLineAbilityRecord> skillLineAbilities = Global.DB2Mgr.GetSkillLineAbilitiesBySkill(skillId);