protected virtual int GetProgress(
			ConquestState state, Item item, int quality, bool slayer, CraftResource res, CraftSystem craft)
		{
            if (state.User == null)
                return 0;

			if (item == null || craft == null)
			{
				return 0;
			}

			if (ItemType.IsNotNull && !item.TypeEquals(ItemType, ItemChildren))
			{
				if (ItemChangeReset)
				{
					return -state.Progress;
				}

				return 0;
			}

			if (IsExceptional && quality == 0)
			{
				return 0;
			}

			if (IsSlayer && !slayer)
			{
				return 0;
			}

			if (IsCloth && !(item is BaseClothing))
			{
				return 0;
			}

			if (Resource != CraftResource.None && res != Resource)
			{
				return 0;
			}

			if (CraftSystem.IsNotNull && !craft.TypeEquals(CraftSystem, false))
			{
				return 0;
			}

            // This function is only called after a successful completion so amount will
            // not be zero except for the case of a potion that was created and auto-consolidated
            // into a keg by the oncraft handler in BasePotion
            if(item.Amount <= 0)
            {
                return 1;
            }

            return item.Amount;
		}