Некротехнолог: работа духа - расходники коллекторов и готовое из станций
Раз в 3 с одно дело: (1) пополнить из ящиков зоны и сумки урны ячейки расходников любого коллектора (банки, цветы, корм, сферы) и катализатора (куры, по одной в пустую ячейку); (2) забрать готовое из коллекторов и станций (верстак, кузня, химстанция, костёр...) в ящики зоны - сначала к таким же, потом в пустое, ящики полны - в сумку урны; некуда - дух чернеет и замирает, оживает сам. Модификации, инструменты, топливо и сырьё станций не трогаются; открытое у игрока и закреплённые ячейки - тоже. Модель духа плывёт к месту работы и обратно. Грядки - позже. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
0558f46069
commit
0890ffe1e9
@@ -148,6 +148,35 @@ namespace NecromancerTome
|
||||
SpawnBounds();
|
||||
}
|
||||
SyncGenie(false);
|
||||
Work(_world);
|
||||
}
|
||||
|
||||
float _nextWork;
|
||||
public bool Stuck;
|
||||
|
||||
/// <summary>Работа духа (CinerariumWork): раз в StepSeconds одно дело, только с черепом и только на сервере.</summary>
|
||||
void Work(World _world)
|
||||
{
|
||||
if (!HasSkull || _world == null || !ConnectionManager.Instance.IsServer || Time.time < _nextWork)
|
||||
{
|
||||
return;
|
||||
}
|
||||
_nextWork = Time.time + CinerariumWork.StepSeconds;
|
||||
Vector3i? at = CinerariumWork.Step(_world, this, out bool stuck);
|
||||
if (stuck != Stuck)
|
||||
{
|
||||
Stuck = stuck;
|
||||
Debug.Log("[NecromancerTome] Cinerarium: дух урны " + ToWorldPos() + (stuck ? " почернел - готовое класть некуда" : " ожил"));
|
||||
}
|
||||
CinerariumGenieMotion motion = _genie != null ? _genie.GetComponent<CinerariumGenieMotion>() : null;
|
||||
if (motion != null)
|
||||
{
|
||||
motion.SetStuck(Stuck && at == null);
|
||||
if (at.HasValue)
|
||||
{
|
||||
motion.Visit(World.blockToTransformPos(at.Value) - Origin.position);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user