public static Skill Deserialize(GenericReader gr, int ind) { string cl = gr.ReadString(); if (cl == "TwoHandedSkill") { cl = "TwoHandedSwordSkill"; } ConstructorInfo ct = Utility.FindConstructor(cl); Skill s = (Skill)ct.Invoke(null); s.Deserialize(gr, ind, true); return(s); }
public Skills(Mobile owner, GenericReader reader) { m_Owner = owner; int version = reader.ReadInt(); switch (version) { case 3: case 2: { m_Cap = reader.ReadInt(); goto case 1; } case 1: { if (version < 2) { m_Cap = 7000; } if (version < 3) { /*m_Total =*/ reader.ReadInt(); } SkillInfo[] info = SkillInfo.Table; m_Skills = new Skill[info.Length]; int count = reader.ReadInt(); for (int i = 0; i < count; ++i) { if (i < info.Length) { Skill sk = Skill.Deserialize(this, info[i], reader); if (sk != null) { m_Skills[i] = sk; m_Total += sk.BaseFixedPoint; } } else { Skill.Deserialize(this, null, reader); } } //for ( int i = count; i < info.Length; ++i ) // m_Skills[i] = new Skill( this, info[i], 0, 1000, SkillLock.Up ); break; } case 0: { reader.ReadInt(); goto case 1; } } }