ModernUO/Projects/UOContent/Skills/SkillsInfo.cs
2024-07-06 12:37:33 -07:00

142 lines
3.3 KiB
C#

using System.IO;
using Server.Json;
namespace Server;
public static class SkillsInfo
{
public static SkillName RandomSkill()
{
var exclusiveMaxIndex = Core.Expansion switch
{
>= Expansion.SA => 58, // <= Throwing
>= Expansion.ML => 55, // <= Spellweaving
Expansion.SE => 54, // <= Ninjitsu
Expansion.AOS => 52, // <= Chivalry
_ => 49 // <= RemoveTrap
};
return (SkillName)Utility.Random(exclusiveMaxIndex);
}
public static readonly SkillName[] CombatSkills =
[
SkillName.Parry,
SkillName.Tactics,
SkillName.Archery,
SkillName.Swords,
SkillName.Macing,
SkillName.Fencing,
SkillName.Wrestling,
// AOS
SkillName.Focus,
// SE
SkillName.Bushido,
SkillName.Ninjitsu,
// SA
SkillName.Throwing
];
public static SkillName RandomCombatSkill()
{
var exclusiveMaxIndex = Core.Expansion switch
{
>= Expansion.SA => 11,
>= Expansion.SE => 10,
Expansion.AOS => 8,
_ => 7
};
return CombatSkills[Utility.Random(exclusiveMaxIndex)];
}
public static readonly SkillName[] CraftSkills =
[
SkillName.Alchemy,
SkillName.Blacksmith,
SkillName.Fletching,
SkillName.Carpentry,
SkillName.Cartography,
SkillName.Cooking,
SkillName.Inscribe,
SkillName.Tailoring,
SkillName.Tinkering,
// SA
SkillName.Imbuing
];
public static SkillName RandomCraftSkill()
{
var exclusiveMaxIndex = Core.Expansion switch
{
>= Expansion.SA => 10,
_ => 9
};
return CraftSkills[Utility.Random(exclusiveMaxIndex)];
}
public static readonly SkillName[] MagicSkills =
[
SkillName.EvalInt,
SkillName.Magery,
SkillName.MagicResist,
SkillName.Meditation,
// AOS
SkillName.Necromancy,
SkillName.Chivalry,
// ML
SkillName.Spellweaving,
// SA
SkillName.Mysticism
];
public static SkillName RandomMagicSkill()
{
var exclusiveMaxIndex = Core.Expansion switch
{
>= Expansion.SA => 8,
>= Expansion.ML => 7,
Expansion.AOS => 6,
_ => 4
};
return MagicSkills[Utility.Random(exclusiveMaxIndex)];
}
public static readonly SkillName[] GatheringSkills =
{
SkillName.Fishing,
SkillName.Mining,
SkillName.Lumberjacking
};
public static SkillName RandomGatheringSkill() => GatheringSkills.RandomElement();
public static readonly SkillName[] BardSkills =
{
SkillName.Peacemaking,
SkillName.Discordance,
SkillName.Provocation,
SkillName.Musicianship,
};
public static SkillName RandomBardSkill() => BardSkills.RandomElement();
public static void Configure()
{
SkillInfo.Table = JsonConfig.Deserialize<SkillInfo[]>(Path.Combine(Core.BaseDirectory, "Data/skills.json"));
if (Core.AOS)
{
AOS.DisableStatInfluences();
}
}
}