internal static void Postfix(CookingPotItem __instance) { if (!__instance.AttachedFireIsBurning() && WaterUtils.IsCookingItem(__instance)) { __instance.PickUpCookedItem(); } }
internal static void Postfix(CookingPotItem __instance) { TrackExitPlaceMesh.isExecuting = false; // This is used to instantly pick up food from pot/ cans, when using right-click (It is bugged otherwise). // It is not allowed for meat -> !__instance.IsDummyPot(). if (!__instance.AttachedFireIsBurning() && WaterUtils.IsCookingItem(__instance) && !__instance.IsDummyPot()) { __instance.PickUpCookedItem(); } }
void Update() { if (fire.GetFireState() == FireState.Off) { "AutoCook.Update: fire isn't lit, aborting".logDbg(); Destroy(this); return; } CookingPotItem pot = null; if (gearPlacePoint.m_PlacedGear) { if (!gearPlacePoint.m_PlacedGear.name.Contains("CookingPot")) // GEAR_CookingPot or GEAR_CookingPotDummy { "AutoCook.Update: gear in place point isn't a cooking pot, aborting".logDbg(); Destroy(this); return; } pot = gearPlacePoint.m_PlacedGear.GetComponent <CookingPotItem>(); if (pot.m_LitersSnowBeingMelted > 0f || pot.m_LitersWaterBeingBoiled > 0f) // if we started with water in pot { if (pot.m_CookingState == CookingPotItem.CookingState.Cooking || pot.m_LitersWaterBeingBoiled == 0f) { return; } "AutoCook.Update: picking up boiled water".logDbg(); pot.PickUpCookedItem(); } if (pot.m_GearItemBeingCooked) { if (pot.GetCookingState() == CookingPotItem.CookingState.Cooking) { return; } $"AutoCook.Update: picking up cooked item {pot.m_GearItemBeingCooked.name}".logDbg(); pot.PickUpCookedItem(); } } var item = getRawFood(!cookMeatToo); if (!item) { return; } $"AutoCook.Update: start cooking {item.name}".logDbg(); item.m_Cookable.m_DoNotCookWhenDropped = true; if (pot) { pot.StartCooking(item); } else { gearPlacePoint.DropAndPlaceItem(item); } item.m_Cookable.m_DoNotCookWhenDropped = false; }