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();
     }
 }
Beispiel #3
0
        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;
        }