From 6e168c137b26e097558977d4f6238d3af2100245 Mon Sep 17 00:00:00 2001 From: Daniel Knight <65728825+DocKnight86@users.noreply.github.com> Date: Wed, 17 Aug 2022 11:52:18 -0400 Subject: [PATCH] fix: Fixes random skill chosen based on expansion (#1139) --- Projects/Server/Utilities/Utility.cs | 17 +++++++++++++++-- Projects/UOContent/Misc/CharacterCreation.cs | 2 +- 2 files changed, 16 insertions(+), 3 deletions(-) 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) ||