// Injects the favorites into the slime diet or adapts if present
        private static void InjectFavoriteDiet(Identifiable.Id slime, SlimeDiet diet, Identifiable.Id slimeB = Identifiable.Id.NONE)
        {
            if (!FAVORITES.ContainsKey(slime))
            {
                return;
            }

            foreach (Identifiable.Id fav in FAVORITES[slime])
            {
                bool found = false;
                foreach (SlimeDiet.EatMapEntry entry in diet.EatMap.Where(entry => entry.eats == fav))
                {
                    entry.isFavorite = true;
                    entry.favoriteProductionCount = SlimeUtils.DEFAULT_FAV_COUNT;

                    found = true;
                }

                if (found)
                {
                    continue;
                }

                diet.EatMap.Add(new SlimeDiet.EatMapEntry
                {
                    eats       = fav,
                    isFavorite = true,
                    favoriteProductionCount = SlimeUtils.DEFAULT_FAV_COUNT,
                    driver     = SlimeEmotions.Emotion.HUNGER,
                    minDrive   = SlimeUtils.EAT_MIN_DRIVE,
                    producesId = SlimeUtils.SlimeToPlort(slime)
                });

                if (slimeB != Identifiable.Id.NONE)
                {
                    diet.EatMap.Add(new SlimeDiet.EatMapEntry
                    {
                        eats       = fav,
                        isFavorite = true,
                        favoriteProductionCount = SlimeUtils.DEFAULT_FAV_COUNT,
                        driver     = SlimeEmotions.Emotion.HUNGER,
                        minDrive   = SlimeUtils.EAT_MIN_DRIVE,
                        producesId = SlimeUtils.SlimeToPlort(slimeB)
                    });
                }
            }
        }
        /// <summary>
        /// Adds a specific largo to a slime
        /// </summary>
        /// <param name="slimeA">The slime A to add to</param>
        /// <param name="slimeB">The slime B to add to</param>
        /// <param name="result">The result to generate</param>
        public static void AddSpecificLargo(Identifiable.Id slimeA, Identifiable.Id slimeB, Identifiable.Id result)
        {
            Tuple <Identifiable.Id, Identifiable.Id> mixA = Tuple.Create(SlimeUtils.SlimeToPlort(slimeB), result);
            Tuple <Identifiable.Id, Identifiable.Id> mixB = Tuple.Create(SlimeUtils.SlimeToPlort(slimeA), result);

            if (SPEC_LARGOS.ContainsKey(slimeA))
            {
                SPEC_LARGOS[slimeA] = mixA;
            }
            else
            {
                SPEC_LARGOS.Add(slimeA, mixA);
            }

            if (SPEC_LARGOS.ContainsKey(slimeB))
            {
                SPEC_LARGOS[slimeB] = mixB;
            }
            else
            {
                SPEC_LARGOS.Add(slimeB, mixB);
            }
        }