Урна рабочего: изготовление по образцу на станциях по нитям (CinerariumCraft), образец во второй ячейке, нити к станциям, топливо и огонь
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
a5f166c161
commit
eba17606d5
@@ -9,6 +9,7 @@ namespace NecromancerTome
|
||||
/// ячейкой коллектора не принимало череп ни перетаскиванием, ни Shift+кликом). Своё здесь одно: после каждого изменения
|
||||
/// в ячейке остаётся один череп, всё остальное (лишние черепа, чужие предметы) - назад в рюкзак, и урна узнаёт, есть ли
|
||||
/// в ней череп. Череп - обычный предмет (ItemClass): он уже в сейвах, менять ему класс на модификацию нельзя.
|
||||
/// У урны рабочего (18.10) ячеек две: вторая - образец (любой предмет, стопка целиком - сколько держать в запасе).
|
||||
/// </summary>
|
||||
public static class CinerariumContents
|
||||
{
|
||||
@@ -30,11 +31,15 @@ namespace NecromancerTome
|
||||
}
|
||||
_urn = _u;
|
||||
_player = _p;
|
||||
_bag = new Bag(new Vector2i(1, 1), XUiC_ItemStack.StackLocationTypes.LootContainer, null);
|
||||
_bag = new Bag(new Vector2i(_u.IsWorker ? 2 : 1, 1), XUiC_ItemStack.StackLocationTypes.LootContainer, null);
|
||||
if (_u.HasSkull && skull != null && skull.type > 0)
|
||||
{
|
||||
_bag.SetSlot(0, new ItemStack(skull, 1));
|
||||
}
|
||||
if (_u.IsWorker && _u.Sample != null && !_u.Sample.IsEmpty())
|
||||
{
|
||||
_bag.SetSlot(1, _u.Sample.Clone());
|
||||
}
|
||||
XUiC_BagStorageWindowGroup.Open(ui.xui, _p, _bag, LootContainer.GetLootContainer(LootTemplate),
|
||||
Localization.Get("necroCinerariumTrunk"), Check, () =>
|
||||
{
|
||||
@@ -46,13 +51,27 @@ namespace NecromancerTome
|
||||
Debug.Log("[NecromancerTome] Cinerarium: «Содержимое» урны " + _u.ToWorldPos() + " открыто, череп " + (_u.HasSkull ? "есть" : "нет"));
|
||||
}
|
||||
|
||||
/// <summary>Оставить в ячейке один череп, остальное - игроку; отметить в урне.</summary>
|
||||
/// <summary>Оставить в ячейке один череп, остальное - игроку; отметить в урне. У рабочего - запомнить образец; череп во
|
||||
/// второй ячейке - не образец, переложить в первую (или вернуть).</summary>
|
||||
static void Check()
|
||||
{
|
||||
if (_bag == null || _urn == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (_urn.IsWorker && _bag.ItemGrid.items.Length > 1)
|
||||
{
|
||||
ItemStack smp = _bag.ItemGrid.items[1];
|
||||
ItemStack first = _bag.ItemGrid.items[0];
|
||||
if (smp != null && !smp.IsEmpty() && smp.itemValue.ItemClass?.GetItemName() == TEFeatureCinerarium.SkullItemName &&
|
||||
(first == null || first.IsEmpty()))
|
||||
{
|
||||
_bag.SetSlot(0, smp.Clone());
|
||||
_bag.SetSlot(1, ItemStack.Empty.Clone());
|
||||
smp = _bag.ItemGrid.items[1];
|
||||
}
|
||||
_urn.SetSample(smp != null && !smp.IsEmpty() ? smp.Clone() : ItemStack.Empty.Clone());
|
||||
}
|
||||
ItemStack s = _bag.ItemGrid.items[0];
|
||||
bool has = false;
|
||||
if (s != null && !s.IsEmpty())
|
||||
|
||||
Reference in New Issue
Block a user