public void On_ConsumeFuel(ConsumeFuelEvent cfe) { SetHookWorking("On_ConsumeFuel"); Broadcast(cfe.Item.Name + " consumed for fuel"); }
public void On_ConsumeFuel(ConsumeFuelEvent cfe) { Server.Broadcast("Consumed"); var oven = cfe.BaseOven; var burnable = cfe.Burnable; var byproductChance = burnable.byproductChance * CharcoalChance; if (oven.allowByproductCreation && burnable.byproductItem != null && UnityEngine.Random.Range(0.0f, 1f) <= byproductChance) { Item item = ItemManager.Create(burnable.byproductItem, burnable.byproductAmount); if (!item.MoveToContainer(oven.inventory)) { item.Drop(oven.inventory.dropPosition, oven.inventory.dropVelocity); } } for (int i = 0; i < oven.inventorySlots; i++) { try { var sItem = oven.inventory.GetSlot(i); if (sItem == null || !sItem.IsValid()) { continue; } var isCookable = sItem.info.GetComponent <ItemModCookable>(); if (isCookable == null) { continue; } if (isCookable.becomeOnCooked.category == ItemCategory.Food && sItem.info.shortname.Trim().EndsWith("_cooked", StringComparison.Ordinal) && AllowBurntMeat) { continue; } var consumeAmt = (int)Math.Ceiling(ProductionMultiplier * (UnityEngine.Random.Range(0f, 1f) <= ConsumeChance ? 1 : 0)); var Amount = sItem.amount; if (Amount < consumeAmt) { consumeAmt = Amount; } consumeAmt = TakeFromInventorySlot(oven.inventory, sItem.info.itemid, consumeAmt, i); if (consumeAmt <= 0) { continue; } var smeltItem = ItemManager.Create(isCookable.becomeOnCooked, isCookable.amountOfBecome * consumeAmt); if (!smeltItem.MoveToContainer(oven.inventory)) { smeltItem.Drop(oven.inventory.dropPosition, oven.inventory.dropVelocity); } } catch (Exception e) { Logger.LogException(e); } } }