context: using System;
  using Server.Engines.Craft;
  
  namespace Server.Items
  {
      public class GargishClothArmsArmor : BaseArmor
      {
          [Constructable]
          public GargishClothArmsArmor() : this(0)
          {
          }
  
          [Constructable]
          public GargishClothArmsArmor(int hue)
              : base(0x404)
          {
              Hue = hue;
              Weight = 2.0;
          }
  
          public override bool Scissor(Mobile from, Scissors scissors)
          {
              if (!IsChildOf(from.Backpack))
              {
                  from.SendLocalizedMessage(502437); // Items you wish to cut must be in your backpack.
                  return false;
              }
  
              if (Ethics.Ethic.IsImbued(this))
              {
                  from.SendLocalizedMessage(502440); // Scissors can not be used on that to produce anything.
                  return false;
              }
  
              CraftSystem system = DefTailoring.CraftSystem;
  
              CraftItem item = system.CraftItems.SearchFor(GetType());
  
              if (item != null && item.Resources.Count == 1 && item.Resources.GetAt(0).Amount >= 2)
              {
                  try
                  {
                      Type resourceType = null;
  
                      CraftResourceInfo info = CraftResources.GetInfo(Resource);
  
                      if (info != null && info.ResourceTypes.Length > 0)
                          resourceType = info.ResourceTypes[0];
  
                      if (resourceType == null)
                          resourceType = item.Resources.GetAt(0).ItemType;
  
                      Item res = (Item)Activator.CreateInstance(resourceType);
  
                      ScissorHelper(from, res, PlayerConstructed ? (item.Resources.GetAt(0).Amount / 2) : 1);
  
                      res.LootType = LootType.Regular;
  
                      return true;
                  }
                  catch
                  {
                  }
              }
  
              from.SendLocalizedMessage(502440); // Scissors can not be used on that to produce anything.
              return false;
          }
  
          public override Race RequiredRace { get { return Race.Gargoyle; } }
          public override bool CanBeWornByGargoyles { get { return true; } }
  
          public GargishClothArmsArmor(Serial serial)
              : base(serial)
          {
          }
  
          public override int BasePhysicalResistance { get { return 5; } }
          public override int BaseFireResistance { get { return 7; } }
          public override int BaseColdResistance { get { return 6; } }
          public override int BasePoisonResistance { get { return 6; } }
          public override int BaseEnergyResistance { get { return 6; } }
          public override int InitMinHits { get { return 40; } }
          public override int InitMaxHits { get { return 50; } }
          public override int AosStrReq { get { return 20; } }
          public override int OldStrReq { get { return 20; } }
          public override int ArmorBase { get { return 18; } }
  
          public override ArmorMaterialType MaterialType
          {
              get { return ArmorMaterialType.Leather; }
          }
          public override CraftResource DefaultResource
          {
              get { return CraftResource.None; }
          }
          public override ArmorMeditationAllowance DefMedAllowance
          {
              get { return ArmorMeditationAllowance.All; }
          }
  
          public override int OnCraft(int quality, bool makersMark, Mobile from, CraftSystem craftSystem, Type typeRes, BaseTool tool, CraftItem craftItem, int resHue)
          {
              return base.OnCraft(quality, makersMark, from, craftSystem, null, tool, craftItem, resHue);
          }
  
          public override void Serialize(GenericWriter writer)
          {
              base.Serialize(writer);
              writer.Write((int)0);
          }
  
          public override void Deserialize(GenericReader reader)
          {
              base.Deserialize(reader);
              int version = reader.ReadInt();
          }
      }
  
      public class FemaleGargishClothArmsArmor : GargishClothArmsArmor
      {
          [Constructable]
          public FemaleGargishClothArmsArmor() : this(0)
          {
          }
  
          [Constructable]
          public FemaleGargishClothArmsArmor(int hue)
              : base(0x403)
          {
              Hue = hue;
              Weight = 2.0;
          }
  
          public FemaleGargishClothArmsArmor(Serial serial)
              : base(serial)
          {
          }
  
          public override void Serialize(GenericWriter writer)
          {
              base.Serialize(writer);
              writer.Write((int)0);
          }
  
          public override void Deserialize(GenericReader reader)
          {
              base.Deserialize(reader);
              int version = reader.ReadInt();
          }
      }
  
      public class GargishClothChestArmor : BaseArmor
      {
          [Constructable]
          public GargishClothChestArmor()
              : this(0)
          {
          }
  
          [Constructable]
          public GargishClothChestArmor(int hue)
              : base(0x406)
          {
              Hue = hue;
              Weight = 2.0;
          }
  
          public override bool Scissor(Mobile from, Scissors scissors)
          {
              if (!IsChildOf(from.Backpack))
              {
                  from.SendLocalizedMessage(502437); // Items you wish to cut must be in your backpack.
                  return false;
              }
  
              if (Ethics.Ethic.IsImbued(this))
              {
                  from.SendLocalizedMessage(502440); // Scissors can not be used on that to produce anything.
                  return false;
              }
  
              CraftSystem system = DefTailoring.CraftSystem;
  
              CraftItem item = system.CraftItems.SearchFor(GetType());
  
              if (item != null && item.Resources.Count == 1 && item.Resources.GetAt(0).Amount >= 2)
              {
                  try
                  {
                      Type resourceType = null;
  
                      CraftResourceInfo info = CraftResources.GetInfo(Resource);
  
                      if (info != null && info.ResourceTypes.Length > 0)
                          resourceType = info.ResourceTypes[0];
  
                      if (resourceType == null)
                          resourceType = item.Resources.GetAt(0).ItemType;
  
                      Item res = (Item)Activator.CreateInstance(resourceType);
  
                      ScissorHelper(from, res, PlayerConstructed ? (item.Resources.GetAt(0).Amount / 2) : 1);
  
                      res.LootType = LootType.Regular;
  
                      return true;
                  }
                  catch
                  {
                  }
              }
  
              from.SendLocalizedMessage(502440); // Scissors can not be used on that to produce anything.
              return false;
          }
  
          public override Race RequiredRace { get { return Race.Gargoyle; } }
          public override bool CanBeWornByGargoyles { get { return true; } }
  
          public GargishClothChestArmor(Serial serial)
              : base(serial)
          {
          }
  
          public override int BasePhysicalResistance { get { return 5; } }
          public override int BaseFireResistance { get { return 7; } }
          public override int BaseColdResistance { get { return 6; } }
          public override int BasePoisonResistance { get { return 6; } }
          public override int BaseEnergyResistance { get { return 6; } }
          public override int InitMinHits { get { return 40; } }
          public override int InitMaxHits { get { return 50; } }
          public override int AosStrReq { get { return 25; } }
          public override int OldStrReq { get { return 25; } }
          public override int ArmorBase { get { return 18; } }
  
          public override ArmorMaterialType MaterialType { get { return ArmorMaterialType.Leather; } }
          public override CraftResource DefaultResource { get { return CraftResource.None; } }
          public override ArmorMeditationAllowance DefMedAllowance { get { return ArmorMeditationAllowance.All; } }
  
          public override int OnCraft(int quality, bool makersMark, Mobile from, CraftSystem craftSystem, Type typeRes, BaseTool tool, CraftItem craftItem, int resHue)
          {
              return base.OnCraft(quality, makersMark, from, craftSystem, null, tool, craftItem, resHue);
          }
  
          public override void Serialize(GenericWriter writer)
          {
              base.Serialize(writer);
              writer.Write((int)0);
          }
  
          public override void Deserialize(GenericReader reader)
          {
              base.Deserialize(reader);
              int version = reader.ReadInt();
          }
      }
  
      public class FemaleGargishClothChestArmor : GargishClothChestArmor
      {
          [Constructable]
          public FemaleGargishClothChestArmor()
              : this(0)
          {
          }
  
          [Constructable]
          public FemaleGargishClothChestArmor(int hue)
              : base(0x405)
          {
              Hue = hue;
              Weight = 2.0;
          }
  
          public FemaleGargishClothChestArmor(Serial serial)
              : base(serial)
          {
          }
  
          public override void Serialize(GenericWriter writer)
          {
              base.Serialize(writer);
              writer.Write((int)0);
          }
  
          public override void Deserialize(GenericReader reader)
          {
              base.Deserialize(reader);
              int version = reader.ReadInt();
          }
      }
  
      public class GargishClothLegsArmor : BaseArmor
      {
          [Constructable]
          public GargishClothLegsArmor()
              : this(0)
          {
          }
  
          [Constructable]
          public GargishClothLegsArmor(int hue)
              : base(0x40A)
          {
              Hue = hue;
              Weight = 2.0;
          }
  
          public override bool Scissor(Mobile from, Scissors scissors)
          {
              if (!IsChildOf(from.Backpack))
              {
                  from.SendLocalizedMessage(502437); // Items you wish to cut must be in your backpack.
                  return false;
              }
  
              if (Ethics.Ethic.IsImbued(this))
              {
                  from.SendLocalizedMessage(502440); // Scissors can not be used on that to produce anything.
                  return false;
              }
  
              CraftSystem system = DefTailoring.CraftSystem;
  
              CraftItem item = system.CraftItems.SearchFor(GetType());
  
              if (item != null && item.Resources.Count == 1 && item.Resources.GetAt(0).Amount >= 2)
              {
                  try
                  {
                      Type resourceType = null;
  
                      CraftResourceInfo info = CraftResources.GetInfo(Resource);
  
                      if (info != null && info.ResourceTypes.Length > 0)
                          resourceType = info.ResourceTypes[0];
  
                      if (resourceType == null)
                          resourceType = item.Resources.GetAt(0).ItemType;
  
  
gt:                     Item res = (Item)Activator.CreateInstance(resourceType);