diff --git a/HarmonySrc/CinerariumCraft.cs b/HarmonySrc/CinerariumCraft.cs index 0cdc1ab..e8e5782 100644 --- a/HarmonySrc/CinerariumCraft.cs +++ b/HarmonySrc/CinerariumCraft.cs @@ -485,16 +485,18 @@ namespace NecromancerTome // 23.10 («вместо камней вплавляет булыжник»): сначала сырьё, у которого нет рецепта (камни, лом), сделанное руками // (булыжник) - только если сырья нет. Раньше - первое подходящее по порядку ячеек. // 24.10 («работник положил сланец в переплавку в печку»): горючее (нефтяной сланец - сырьё для бензина) не плавится - // вовсе - рецепта у него нет, и раньше оно шло наравне с камнями. + // вовсе. 24.10 («и снова засунул булыжник!!!»): плавится только сырьё - сделанное руками (булыжник) не плавится + // никогда. Прежняя проверка «нет рецепта» не отличала камни от булыжника: у камня тоже есть рецепты (разбор в лом, + // выплавка из переплавленного) - см. Handmade. foreach ((Vector3i p, TEFeatureStorage box, int k) s in Ordered(_src, g => { ItemClass c = g.itemValue.ItemClass; if (c?.MadeOfMaterial?.ForgeCategory == null || !c.MadeOfMaterial.ForgeCategory.EqualsCaseInsensitive(mat) || - c.GetItemName().StartsWith("unit_") || ItemClass.GetFuelValue(g.itemValue) > 0) + c.GetItemName().StartsWith("unit_") || ItemClass.GetFuelValue(g.itemValue) > 0 || Handmade(c)) { return -1; } - return CraftingManager.GetRecipe(c.GetItemName()) == null ? 0 : 1; + return 0; })) { { @@ -533,6 +535,20 @@ namespace NecromancerTome return false; } + /// Сделано руками: есть рецепт изготовления - не разбор (IsScrap, wildcard_forge_category) и не выплавка в кузне + /// из переплавленного (material_based). Камни и лом - сырьё (только такие рецепты), булыжник - сделан руками. + static bool Handmade(ItemClass _c) + { + foreach (Recipe r in CraftingManager.GetRecipes(_c.GetItemName())) + { + if (!r.IsScrap && !r.wildcardForgeCategory && !r.materialBasedRecipe) + { + return true; + } + } + return false; + } + static Vector3i? FuelSource(List<(Vector3i p, TEFeatureStorage box)> _src) { foreach ((Vector3i p, TEFeatureStorage box, int k) s in Ordered(_src, FuelRank)) diff --git a/NecromancerHarmony.dll b/NecromancerHarmony.dll index 94a3a40..d0bb745 100644 Binary files a/NecromancerHarmony.dll and b/NecromancerHarmony.dll differ diff --git a/NecromancerHarmony.pdb b/NecromancerHarmony.pdb index 3ce8e08..3eebe71 100644 Binary files a/NecromancerHarmony.pdb and b/NecromancerHarmony.pdb differ