protected override void WriteXml(XmlWriter writer) { writer.WriteAttributeString("Name", Name); writer.WriteStartAttribute("Offset"); writer.WriteValue(Offset); writer.WriteEndAttribute(); writer.WriteValueElement(Strings.JPCost, JPCost); writer.WriteValueElement(Strings.LearnRate, LearnRate); writer.WriteValueElement(Strings.AbilityType, AbilityType); writer.WriteValueElement(Strings.LearnWithJP, LearnWithJP); writer.WriteValueElement(Strings.Action, Action); writer.WriteValueElement(Strings.LearnOnHit, LearnOnHit); writer.WriteValueElement(Strings.Blank1, Blank1); writer.WriteValueElement(Strings.Unknown1, Unknown1); writer.WriteValueElement(Strings.Unknown2, Unknown2); writer.WriteValueElement(Strings.Unknown3, Unknown3); writer.WriteValueElement(Strings.Blank2, Blank2); writer.WriteValueElement(Strings.Blank3, Blank3); writer.WriteValueElement(Strings.Blank4, Blank4); writer.WriteValueElement(Strings.Blank5, Blank5); writer.WriteValueElement(Strings.Unknown4, Unknown4); writer.WriteStartElement("AI"); ((IXmlSerializable)AIFlags).WriteXml(writer); writer.WriteEndElement(); if (Effect != null) { writer.WriteStartElement("Effect"); writer.WriteStartAttribute("value"); writer.WriteValue(Effect.Value); writer.WriteEndAttribute(); writer.WriteAttributeString("name", Effect.Name); } if (IsNormal) { writer.WriteStartElement("Attributes"); ((IXmlSerializable)Attributes).WriteXml(writer); writer.WriteEndElement(); } else if (IsItem) { writer.WriteStartElement("ItemOffset"); writer.WriteValue(ItemOffset); } else if (IsThrowing) { writer.WriteStartElement("Throwing"); writer.WriteValue(Throwing.ToString()); } else if (IsJumping) { writer.WriteStartElement("Jumping"); writer.WriteValueElement("JumpHorizontal", JumpHorizontal); writer.WriteValueElement("JumpVertical", JumpVertical); } else if (IsCharging) { writer.WriteStartElement("Charging"); writer.WriteValueElement("ChargeCT", ChargeCT); writer.WriteValueElement("ChargeBonus", ChargeBonus); } else if (IsArithmetick) { writer.WriteStartElement("ArithmetickSkill"); writer.WriteValue(ArithmetickSkill); } else if (IsOther) { writer.WriteStartElement("OtherID"); writer.WriteValue(OtherID); } else { throw new InvalidOperationException("Invalid item type"); } writer.WriteEndElement(); }