Урна рабочего: вход сырья кузни держать полным (#19)

Сырьё подкладывалось, только когда переплавленного не хватало на одну
штуку - кузня плавила остатки, цемент шёл по одному. Теперь отдельное
дело: есть место во входе под материал рецепта образца - доложить сырьё
до стака (после изготовления).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
AlexCube
2026-10-24 15:01:57 +03:00
co-authored by Claude Opus 5.5
parent b4335a0448
commit cc9c0366f0
3 changed files with 39 additions and 0 deletions
+39
View File
@@ -171,6 +171,45 @@ namespace NecromancerTome
}
}
// 2б. Кузня: вход сырья держать полным (24.10, пользователь: «Места не должны пустовать. Нужно чтобы заполнены были
// обе ячейки»). Раньше сырьё подкладывалось, только когда переплавленного не хватало даже на одну штуку, - кузня
// плавила остатки, и дух ставил цемент по одному. Изготовление - первым делом (выше), подкладка - следующим.
if (hasSample)
{
string name = sample.itemValue.ItemClass?.GetItemName();
foreach (Station st in stations)
{
if (!st.Te.isModuleUsed[MaterialModule] || !OutputHasRoom(st.Te, sample) && !outRoom)
{
continue;
}
foreach (Recipe r in CraftingManager.GetRecipes(name))
{
if (r.IsScrap || !AreaFits(r, st.Areas) || owner != null && !r.IsUnlocked(owner))
{
continue;
}
foreach (ItemStack ing in r.ingredients)
{
string iname = ing?.itemValue?.ItemClass?.GetItemName();
if (iname == null || UnitSlot(st.Te, iname) < 0)
{
continue;
}
if (FeedMaterial(st, iname, src, _dry, out Vector3i? rawAt))
{
_from = rawAt;
if (!_dry)
{
Ignite(st.Te, src, false);
}
return st.Pos;
}
}
}
}
}
// 3. Огонь: работа есть - топливо и огонь; нет - погасить (экономия топлива).
foreach (Station st in stations)
{
Binary file not shown.
Binary file not shown.