diff --git a/Projects/UOContent/Items/Skill Items/Magical/FullSpellbooks.cs b/Projects/UOContent/Items/Skill Items/Magical/FullSpellbooks.cs new file mode 100644 index 000000000..339d16d1a --- /dev/null +++ b/Projects/UOContent/Items/Skill Items/Magical/FullSpellbooks.cs @@ -0,0 +1,101 @@ +/************************************* +* Author: Unknow * +* Refactoring: Expa * +* Script Name: FullMagerySpellbook * +* Optimized for ModernUO 0.15.4.18 * +*************************************/ +using ModernUO.Serialization; +using Server; +using Server.Items; + +namespace Server.Items; + +[SerializationGenerator(0, false)] +public partial class FullMagerySpellbook : Spellbook +{ + [Constructible] + public FullMagerySpellbook() : base(MaskForBits(64), 0xEFA) + { + Layer = Layer.OneHanded; + } + + public FullMagerySpellbook(Serial serial) : base(serial) { } + + private static ulong MaskForBits(int bits) => bits >= 64 ? ulong.MaxValue : ((1UL << bits) - 1UL); +} + +[SerializationGenerator(0, false)] +public partial class FullNecroSpellbook : Spellbook +{ + public override SpellbookType SpellbookType => SpellbookType.Necromancer; + public override int BookOffset => 100; + public override int BookCount => Core.SE ? 17 : 16; + + [Constructible] + public FullNecroSpellbook() + : base(Core.SE ? MaskForBits(17) : MaskForBits(16), 0x2253) + { + Layer = Layer.OneHanded; + } + + public FullNecroSpellbook(Serial serial) : base(serial) { } + + private static ulong MaskForBits(int bits) => bits >= 64 ? ulong.MaxValue : ((1UL << bits) - 1UL); +} + +[SerializationGenerator(0, false)] +public partial class FullChivalrySpellbook : Spellbook +{ + public override SpellbookType SpellbookType => SpellbookType.Paladin; + public override int BookOffset => 200; + public override int BookCount => 10; + + [Constructible] + public FullChivalrySpellbook() + : base(MaskForBits(10), 0x2252) + { + Layer = Layer.OneHanded; + } + + public FullChivalrySpellbook(Serial serial) : base(serial) { } + + private static ulong MaskForBits(int bits) => bits >= 64 ? ulong.MaxValue : ((1UL << bits) - 1UL); +} + +[SerializationGenerator(0, false)] +public partial class FullBushidoSpellbook : Spellbook +{ + public override SpellbookType SpellbookType => SpellbookType.Samurai; + public override int BookOffset => 400; + public override int BookCount => 6; + + [Constructible] + public FullBushidoSpellbook() + : base(MaskForBits(6), 0x238C) + { + Layer = Layer.OneHanded; + } + + public FullBushidoSpellbook(Serial serial) : base(serial) { } + + private static ulong MaskForBits(int bits) => bits >= 64 ? ulong.MaxValue : ((1UL << bits) - 1UL); +} + +[SerializationGenerator(0, false)] +public partial class FullNinjitsuSpellbook : Spellbook +{ + public override SpellbookType SpellbookType => SpellbookType.Ninja; + public override int BookOffset => 500; + public override int BookCount => 8; + + [Constructible] + public FullNinjitsuSpellbook() + : base(MaskForBits(8), 0x23A0) + { + Layer = Layer.OneHanded; + } + + public FullNinjitsuSpellbook(Serial serial) : base(serial) { } + + private static ulong MaskForBits(int bits) => bits >= 64 ? ulong.MaxValue : ((1UL << bits) - 1UL); +}