using System; using System.IO; namespace ACE.DatLoader.Entity { public class SkillBase : IUnpackable { public string Description { get; private set; } public string Name { get; private set; } public uint IconId { get; private set; } public int TrainedCost { get; private set; } /// /// This is the total cost to specialize a skill, which INCLUDES the trained cost. /// public int SpecializedCost { get; private set; } public uint Category { get; private set; } // 1 = combat, 2 = other, 3 = magic public uint ChargenUse { get; private set; } // always 1? /// /// This is the minimum SAC required for usability. /// 1 = Usable when untrained /// 2 = Trained or greater required for usability /// public uint MinLevel { get; private set; } // 1-2? public SkillFormula Formula { get; private set; } = new SkillFormula(); public double UpperBound { get; private set; } public double LowerBound { get; private set; } public double LearnMod { get; private set; } public int UpgradeCostFromTrainedToSpecialized => SpecializedCost - TrainedCost; public void Unpack(BinaryReader reader) { Description = reader.ReadPString(); reader.AlignBoundary(); Name = reader.ReadPString(); reader.AlignBoundary(); IconId = reader.ReadUInt32(); TrainedCost = reader.ReadInt32(); SpecializedCost = reader.ReadInt32(); Category = reader.ReadUInt32(); ChargenUse = reader.ReadUInt32(); MinLevel = reader.ReadUInt32(); Formula.Unpack(reader); UpperBound = reader.ReadDouble(); LowerBound = reader.ReadDouble(); LearnMod = reader.ReadDouble(); } public SkillBase() { } public SkillBase(SkillFormula formula) { Formula = formula; } } }