diff --git a/Projects/Server/Utilities/Utility.cs b/Projects/Server/Utilities/Utility.cs index 0fe992f60..091919bc3 100644 --- a/Projects/Server/Utilities/Utility.cs +++ b/Projects/Server/Utilities/Utility.cs @@ -80,6 +80,7 @@ public static class Utility SkillName.Bushido, SkillName.Ninjitsu, SkillName.Spellweaving, + // TODO: Update RandomSkill once these are implemented! // SkillName.Mysticism, // SkillName.Imbuing, SkillName.Throwing @@ -624,8 +625,20 @@ public static class Utility public static object GetArrayCap(Array array, int index, object emptyValue = null) => array.Length > 0 ? array.GetValue(Math.Clamp(index, 0, array.Length - 1)) : emptyValue; - public static SkillName RandomSkill() => - _allSkills[Random(_allSkills.Length - (Core.ML ? 0 : Core.SE ? 1 : Core.AOS ? 3 : 6))]; + public static SkillName RandomSkill() + { + // TODO: Add 2 to each entry for Mysticism and Imbuing, once they are uncommented on _allSkills. + var offset = Core.Expansion switch + { + >= Expansion.SA => 0, + Expansion.ML => 1, + Expansion.SE => 2, + Expansion.AOS => 4, + _ => 7 + }; + + return _allSkills[Random(_allSkills.Length - offset)]; + } public static SkillName RandomCombatSkill() => m_CombatSkills.RandomElement(); diff --git a/Projects/UOContent/Misc/CharacterCreation.cs b/Projects/UOContent/Misc/CharacterCreation.cs index c8c3e2875..9f4772ff4 100644 --- a/Projects/UOContent/Misc/CharacterCreation.cs +++ b/Projects/UOContent/Misc/CharacterCreation.cs @@ -357,7 +357,7 @@ public static class CharacterCreation { var (name, value) = skills[i]; var notValid = value is < 0 or > 50 || !_allowedStartingSkills.Contains(name) || - !Core.AOS && name is SkillName.Necromancy or SkillName.Chivalry || + !Core.AOS && name is SkillName.Necromancy or SkillName.Chivalry or SkillName.Focus || !Core.SE && name is SkillName.Ninjitsu or SkillName.Bushido || Core.SA && (raceFlag == Race.AllowGargoylesOnly && name == SkillName.Archery || raceFlag != Race.AllowGargoylesOnly && name == SkillName.Throwing) ||