public static void Postfix(InventoryGui __instance)
 {
     if (__instance.m_craftRecipe == null)
     {
         RunicPower.StopCraftingAll(false);
     }
 }
        public static bool Prefix(InventoryGui __instance, Player player)
        {
            // if it's not a rune, do the normal flow
            var data = __instance.m_craftRecipe?.m_item?.m_itemData?.GetRuneData();

            if (data == null)
            {
                RunicPower.StopCraftingAll(false);
                return(true);
            }
            // if the player does not have the requeriments, do the normal flow
            var qualityLevel = 1;

            if (!player.HaveRequirements(__instance.m_craftRecipe, discover: false, qualityLevel) && !player.NoCostCheat())
            {
                RunicPower.StopCraftingAll(false);
                return(true);
            }
            // getting hte spell inventory
            var inv = SpellsBar.invBarGrid.m_inventory;

            // if there is not an 'empty' slot, do the normal flow
            if (!inv.HaveEmptySlot())
            {
                RunicPower.StopCraftingAll(false);
                return(true);
            }

            var        craftItem = __instance.m_craftRecipe.m_item;
            GameObject go        = Object.Instantiate(craftItem.gameObject);
            ItemDrop   item      = go.GetComponent <ItemDrop>();

            item.m_itemData.m_stack       = __instance.m_craftRecipe.m_amount;
            item.m_itemData.m_quality     = qualityLevel;
            item.m_itemData.m_variant     = __instance.m_craftVariant;
            item.m_itemData.m_durability  = item.m_itemData.GetMaxDurability();
            item.m_itemData.m_crafterID   = player.GetPlayerID();
            item.m_itemData.m_crafterName = player.GetPlayerName();

            var crafted = inv.AddItem(item.m_itemData);

            if (crafted)
            {
                if (!player.NoCostCheat())
                {
                    player.ConsumeResources(__instance.m_craftRecipe.m_resources, qualityLevel);
                }
                __instance.UpdateCraftingPanel();
            }
            // displaying some effects
            CraftingStation currentCraftingStation = Player.m_localPlayer.GetCurrentCraftingStation();
            var             effs = (currentCraftingStation != null) ? currentCraftingStation.m_craftItemDoneEffects : __instance.m_craftItemDoneEffects;

            effs.Create(player.transform.position, Quaternion.identity);

            Game.instance.GetPlayerProfile().m_playerStats.m_crafts++;
            Gogan.LogEvent("Game", "Crafted", __instance.m_craftRecipe.m_item.m_itemData.m_shared.m_name, qualityLevel);

            return(false);
        }
 public static void Prefix(InventoryGui __instance)
 {
     RunicPower.StopCraftingAll(false);
 }