// ItemCrafter.CraftItem() public static bool PlayerStartCrafting(ItemCrafter self, ItemBlueprint bp, BasePlayer owner, ProtoBuf.Item.InstanceData instanceData = null) { ItemBlueprint bpcopy = new ItemBlueprint(); bpcopy.amountToCreate = bp.amountToCreate; bpcopy.defaultBlueprint = bp.defaultBlueprint; bpcopy.ingredients = bp.ingredients; bpcopy.rarity = bp.rarity; bpcopy.targetItem = bp.targetItem; bpcopy.time = bp.time / Server.GetInstance().CraftingTimeScale; bpcopy.userCraftable = bp.userCraftable; CraftEvent ce = new CraftEvent(self, bpcopy, owner, instanceData); OnPlayerStartCrafting.OnNext(ce); if (!self.CanCraft(bpcopy, 1)) { return(false); } if (ce.Cancel) { if (ce.cancelReason != "") { owner.SendConsoleCommand("chat.add", 0, String.Format("{0}: {1}", Server.server_message_name.ColorText("fa5"), ce.cancelReason)); } return(false); } self.taskUID++; ItemCraftTask itemCraftTask = new ItemCraftTask(); itemCraftTask.blueprint = bpcopy; if (!ce.FreeCraft) { foreach (ItemAmount current in bpcopy.ingredients) { float amount = current.amount; foreach (ItemContainer current2 in self.containers) { amount -= current2.Take(itemCraftTask.ingredients, current.itemid, (int)amount); } } } itemCraftTask.endTime = 0; itemCraftTask.taskUID = self.taskUID; itemCraftTask.owner = owner; itemCraftTask.instanceData = instanceData; self.queue.Enqueue(itemCraftTask); if (itemCraftTask.owner != null) { itemCraftTask.owner.Command(String.Format("note.craft_add {0} {1}", itemCraftTask.taskUID, itemCraftTask.blueprint.targetItem.itemid)); } return(true); }
// ItemCrafter.CraftItem() public static bool On_PlayerStartCrafting(ItemCrafter self, ItemBlueprint bp, BasePlayer owner, ProtoBuf.Item.InstanceData instanceData = null, int amount = 1, int skinID = 0) { CraftEvent ce = new CraftEvent(self, bp, owner, instanceData, amount, skinID); OnNext("On_PlayerStartCrafting", ce); if (!self.CanCraft(bp, ce.Amount)) { return(false); } if (ce.Cancel) { if (ce.cancelReason != String.Empty) { ce.Crafter.Message(ce.cancelReason); } return(false); } self.taskUID++; ItemCraftTask itemCraftTask = Facepunch.Pool.Get <ItemCraftTask>(); itemCraftTask.blueprint = bp; self.CallMethod("CollectIngredients", bp, ce.Amount, owner); itemCraftTask.endTime = 0; itemCraftTask.taskUID = self.taskUID; itemCraftTask.owner = owner; itemCraftTask.instanceData = instanceData; if (itemCraftTask.instanceData != null) { itemCraftTask.instanceData.ShouldPool = false; } itemCraftTask.amount = ce.Amount; itemCraftTask.skinID = ce.SkinID; self.queue.Enqueue(itemCraftTask); if (itemCraftTask.owner != null) { itemCraftTask.owner.Command("note.craft_add", new object[] { itemCraftTask.taskUID, itemCraftTask.blueprint.targetItem.itemid, amount }); } return(true); }
void Awake() { craftingButton.image.sprite = itemToCraft.SpriteRenderer.sprite; craftingButton.interactable = false; SetupTextLabels(); var projectileManager = craftingPanel.masterSystem.TryGetManager <ProjectileManager>(SceneManagerType.Projectile); if (projectileManager == null) { Debug.LogError("[CroftingLabel]: tried to get projectileManager but it wasn't initialized"); return; } craftingButton.onClick.AddListener(() => { CraftEvent?.Invoke(); var instanceOfItem = Instantiate(itemToCraft); instanceOfItem.gameObject.SetActive(false); instanceOfItem.Initialize(player, playerController, projectileManager); player.Inventory.AddItem(instanceOfItem); player.Resources.UseResources(requiredOre, requiredIron, requiredGold); craftingPanel.UpdateCraftingButtonsAfterCraft(); }); }
/// <summary> /// Called from <c>ItemCrafter.CraftItem(ItemBlueprint, BasePlayer, ProtoBuf.Item.InstanceData, int, int, Item)</c> . /// </summary> public static bool On_PlayerStartCrafting(ItemCrafter self, ItemBlueprint bp, BasePlayer owner, ProtoBuf.Item.InstanceData instanceData = null, int amount = 1, int skinID = 0, Item fromTempBlueprint = null) { var ce = new CraftEvent(self, bp, owner, instanceData, amount, skinID); OnNext("On_PlayerStartCrafting", ce); if (!self.CanCraft(bp, ce.Amount)) return false; if (ce.Cancel) { if (ce.cancelReason != String.Empty) ce.Crafter.Message(ce.cancelReason); return false; } self.taskUID++; ItemCraftTask itemCraftTask = Facepunch.Pool.Get<ItemCraftTask>(); itemCraftTask.blueprint = bp; self.CallMethod("CollectIngredients", bp, itemCraftTask, ce.Amount, owner); itemCraftTask.endTime = 0; itemCraftTask.taskUID = self.taskUID; itemCraftTask.owner = owner; itemCraftTask.instanceData = instanceData; if (itemCraftTask.instanceData != null) { itemCraftTask.instanceData.ShouldPool = false; } itemCraftTask.amount = ce.Amount; itemCraftTask.skinID = ce.SkinID; if (fromTempBlueprint != null) { fromTempBlueprint.RemoveFromContainer(); itemCraftTask.takenItems.Add(fromTempBlueprint); itemCraftTask.conditionScale = 0.5f; } self.queue.Enqueue(itemCraftTask); if (itemCraftTask.owner != null) { itemCraftTask.owner.Command("note.craft_add", new object[] { itemCraftTask.taskUID, itemCraftTask.blueprint.targetItem.itemid, amount }); } return true; }
public void On_PlayerStartCrafting(CraftEvent ce) { SetHookWorking("On_PlayerStartCrafting"); Broadcast(ce.Crafter.Name + " is crafting " + ce.Target); }
public void OnPlayerStartCrafting(CraftEvent ce) { this.Invoke("On_PlayerStartCrafting", ce); }