public Item GenerateItem(CraftableItem mould)
    {
        if (CanCraftItem(mould))
        {
            if (mould.MyCraftedItemType == CraftedItemType.WEAPON)
            {
                Weapon ret = null;
                switch ((mould as CraftedWeapon).tarType)
                {
                case (WeaponType.RECURVEBOW):
                    ret = new RecurveBow(ALib);
                    break;

                case (WeaponType.SWORD):
                    ret = new Sword(ALib);
                    break;

                case (WeaponType.CENSER):
                    ret = new Censer(ALib);
                    break;

                case (WeaponType.STAFF):
                    ret = new Staff(ALib);
                    break;

                case (WeaponType.SACRIFICIALKNIFE):
                    ret = new SacrificialKnife(ALib);
                    break;

                case (WeaponType.VESSEL):
                    ret = new Vessel(ALib);
                    break;
                }

                ret.CopyStats(mould as CraftedWeapon);
                Player_Accessor_Script.SkillsScript.AddExperience(mould.RequiredProfession, mould.RewardedExp);
                return(ret);
            }
            else if (mould.MyCraftedItemType == CraftedItemType.ARMOR)
            {
                Armor ret = null;
                switch ((mould as CraftedArmor).tarType)
                {
                case (ArmorType.CHESTPLATE):
                    ret            = new Chestplate();
                    ret.MyItemType = ItemType.CHESTPLATE;
                    break;

                case (ArmorType.PLATELEGS):
                    ret            = new Platelegs();
                    ret.MyItemType = ItemType.PLATELEGS;
                    break;

                case (ArmorType.HELMET):
                    ret            = new Helmet();
                    ret.MyItemType = ItemType.HELMET;
                    break;

                case (ArmorType.CHESTGUARD):
                    ret            = new Chestguard();
                    ret.MyItemType = ItemType.CHESTGUARD;
                    break;

                case (ArmorType.CHAPS):
                    ret            = new Chaps();
                    ret.MyItemType = ItemType.CHAPS;
                    break;

                case (ArmorType.COIF):
                    ret            = new Coif();
                    ret.MyItemType = ItemType.COIF;
                    break;

                case (ArmorType.ROBE):
                    ret            = new Robe();
                    ret.MyItemType = ItemType.ROBE;
                    break;

                case (ArmorType.TROUSERS):
                    ret            = new Trousers();
                    ret.MyItemType = ItemType.TROUSERS;
                    break;

                case (ArmorType.HAT):
                    ret            = new Hat();
                    ret.MyItemType = ItemType.HAT;
                    break;
                }

                ret.CopyStats(mould as CraftedArmor);
                Player_Accessor_Script.SkillsScript.AddExperience(mould.RequiredProfession, mould.RewardedExp);
                return(ret);
            }
            else if (mould.MyCraftedItemType == CraftedItemType.REAGENT)
            {
                print("Reagent Type: " + mould.ItemName);
                Reagent newReagent = new Reagent();
                newReagent.ReagentName     = mould.ItemName;
                newReagent.ReagentQuantity = 1;
                newReagent.ReagentSprite   = mould.SpritePath;
                Player_Accessor_Script.InventoryScript.AddResourceType(newReagent, newReagent.ReagentQuantity);
                Player_Accessor_Script.SkillsScript.AddExperience(mould.RequiredProfession, mould.RewardedExp);
            }
            else
            {
                print("Unknown crafting type");
            }
        }
        return(null);
    }