// 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); } }