using System; using Server.Engines.Craft; namespace Server.Items { public class BaseUtensil : Item, IResource, IQuality { private CraftResource _Resource; private Mobile _Crafter; private ItemQuality _Quality; [CommandProperty(AccessLevel.GameMaster)] public CraftResource Resource { get { return _Resource; } set { _Resource = value; Hue = CraftResources.GetHue(this._Resource); InvalidateProperties(); } } [CommandProperty(AccessLevel.GameMaster)] public Mobile Crafter { get { return _Crafter; } set { _Crafter = value; InvalidateProperties(); } } [CommandProperty(AccessLevel.GameMaster)] public ItemQuality Quality { get { return _Quality; } set { _Quality = value; InvalidateProperties(); } } public bool PlayerConstructed { get { return true; } } #region Old Item Serialization Vars /* DO NOT USE! Only used in serialization of special scrolls that originally derived from Item */ private bool m_InheritsItem; protected bool InheritsItem { get { return this.m_InheritsItem; } } #endregion public BaseUtensil(int itemID) : base(itemID) { } public override void AddCraftedProperties(ObjectPropertyList list) { if (_Crafter != null) { list.Add(1050043, _Crafter.TitleName); // crafted by ~1_NAME~ } if (_Quality == ItemQuality.Exceptional) { list.Add(1060636); // Exceptional } } public override void AddNameProperty(ObjectPropertyList list) { if (_Resource > CraftResource.Iron) { list.Add(1053099, "#{0}\t{1}", CraftResources.GetLocalizationNumber(_Resource), String.Format("#{0}", LabelNumber.ToString())); // ~1_oretype~ ~2_armortype~ } else { base.AddNameProperty(list); } } public virtual int OnCraft(int quality, bool makersMark, Mobile from, CraftSystem craftSystem, Type typeRes, ITool tool, CraftItem craftItem, int resHue) { this.Quality = (ItemQuality)quality; if (makersMark) this.Crafter = from; if (!craftItem.ForceNonExceptional) { if (typeRes == null) typeRes = craftItem.Resources.GetAt(0).ItemType; Resource = CraftResources.GetFromType(typeRes); } return quality; } public BaseUtensil(Serial serial) : base(serial) { } public override void Serialize(GenericWriter writer) { base.Serialize(writer); writer.Write((int)1); // version writer.Write((int)_Resource); writer.Write(_Crafter); writer.Write((int)_Quality); } public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch (version) { case 1: _Resource = (CraftResource)reader.ReadInt(); _Crafter = reader.ReadMobile(); _Quality = (ItemQuality)reader.ReadInt(); break; case 0: m_InheritsItem = true; break; } } } [Flipable(0x9F4, 0x9F5, 0x9A3, 0x9A4)] public class Fork : BaseUtensil { [Constructable] public Fork() : base(0x9F4) { this.Weight = 1.0; } public Fork(Serial serial) : base(serial) { } public override void Serialize(GenericWriter writer) { base.Serialize(writer); writer.Write((int)0); // version } public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = (this.InheritsItem ? 0 : reader.ReadInt()); // Required for BaseUtensil insertion } } public class ForkLeft : BaseUtensil { [Constructable] public ForkLeft() : base(0x9F4) { this.Weight = 1.0; } public ForkLeft(Serial serial) : base(serial) { } public override void Serialize(GenericWriter writer) { base.Serialize(writer); writer.Write((int)0); // version } public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = (this.InheritsItem ? 0 : reader.ReadInt()); // Required for BaseUtensil insertion } } public class ForkRight : BaseUtensil { [Constructable] public ForkRight() : base(0x9F5) { this.Weight = 1.0; } public ForkRight(Serial serial) : base(serial) { } public override void Serialize(GenericWriter writer) { base.Serialize(writer); writer.Write((int)0); // version } public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = (this.InheritsItem ? 0 : reader.ReadInt()); // Required for BaseUtensil insertion } } [Flipable(0x9F8, 0x9F9, 0x9C2, 0x9C3)] public class Spoon : BaseUtensil { [Constructable] public Spoon() : base(0x9F8) { this.Weight = 1.0; } public Spoon(Serial serial) : base(serial) { } public override void Serialize(GenericWriter writer) { base.Serialize(writer); writer.Write((int)0); // version } public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = (this.InheritsItem ? 0 : reader.ReadInt()); // Required for BaseUtensil insertion } } public class SpoonLeft : BaseUtensil { [Constructable] public SpoonLeft() : base(0x9F8) { this.Weight = 1.0; } public SpoonLeft(Serial serial) : base(serial) { } public override void Serialize(GenericWriter writer) { base.Serialize(writer); writer.Write((int)0); // version } public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = (this.InheritsItem ? 0 : reader.ReadInt()); // Required for BaseUtensil insertion } } public class SpoonRight : BaseUtensil { [Constructable] public SpoonRight() : base(0x9F9) { this.Weight = 1.0; } public SpoonRight(Serial serial) : base(serial) { } public override void Serialize(GenericWriter writer) { base.Serialize(writer); writer.Write((int)0); // version } public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = (this.InheritsItem ? 0 : reader.ReadInt()); // Required for BaseUtensil insertion } } [Flipable(0x9F6, 0x9F7, 0x9A5, 0x9A6)] public class Knife : BaseUtensil { [Constructable] public Knife() : base(0x9F6) { this.Weight = 1.0; } public Knife(Serial serial) : base(serial) { } public override void Serialize(GenericWriter writer) { base.Serialize(writer); writer.Write((int)0); // version } public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = (this.InheritsItem ? 0 : reader.ReadInt()); // Required for BaseUtensil insertion } } public class KnifeLeft : BaseUtensil { [Constructable] public KnifeLeft() : base(0x9F6) { this.Weight = 1.0; } public KnifeLeft(Serial serial) : base(serial) { } public override void Serialize(GenericWriter writer) { base.Serialize(writer); writer.Write((int)0); // version } public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = (this.InheritsItem ? 0 : reader.ReadInt()); // Required for BaseUtensil insertion } } public class KnifeRight : BaseUtensil { [Constructable] public KnifeRight() : base(0x9F7) { this.Weight = 1.0; } public KnifeRight(Serial serial) : base(serial) { } public override void Serialize(GenericWriter writer) { base.Serialize(writer); writer.Write((int)0); // version } public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = (this.InheritsItem ? 0 : reader.ReadInt()); // Required for BaseUtensil insertion } } public class Plate : BaseUtensil { [Constructable] public Plate() : base(0x9D7) { this.Weight = 1.0; } public Plate(Serial serial) : base(serial) { } public override void Serialize(GenericWriter writer) { base.Serialize(writer); writer.Write((int)0); // version } public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = (this.InheritsItem ? 0 : reader.ReadInt()); // Required for BaseUtensil insertion } } }