Стрела: защита от NullReference в GetDismemberChance (+ какое звено пустое - в лог); necrourn probe - что урна видит в зоне и что выбрала; necrofire
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
3ffb90cc57
commit
f372660e39
@@ -61,11 +61,29 @@ namespace NecromancerTome
|
||||
|
||||
/// <summary>У перевозки по нити - ящик «откуда» последнего шага (дух летит сначала к нему), иначе null.</summary>
|
||||
public static Vector3i? LastFrom;
|
||||
/// <summary>Что выбрал последний шаг (для necrourn probe, 23.10: «стою в 19 м - не работают»).</summary>
|
||||
public static string LastWhat;
|
||||
|
||||
/// <summary>Пробный шаг урны без изменений: что в зоне и что дух выбрал бы сейчас (команда necrourn x y z probe).</summary>
|
||||
public static string Probe(World _world, TEFeatureCinerarium _urn)
|
||||
{
|
||||
string zone = "";
|
||||
if (!_urn.IsLogist && !_urn.IsWorker)
|
||||
{
|
||||
Zone z = Scan(_world, _urn);
|
||||
zone = "коллекторов " + z.Collectors.Count + ", станций " + z.Stations.Count + ", ящиков " + z.Boxes.Count +
|
||||
", сумка " + (z.Bag != null) + ", спелых " + z.Ripe.Count + (z.Ripe.Count > 0 ? " (" + z.Ripe[0] + ")" : "") +
|
||||
", пустых клеток " + z.Empty.Count + "; ";
|
||||
}
|
||||
Vector3i? at = Step(_world, _urn, out bool stuck, true);
|
||||
return zone + "шаг: " + (at.HasValue ? LastWhat + " в " + at.Value : "нечего делать") + (stuck ? ", класть некуда" : "");
|
||||
}
|
||||
|
||||
static Vector3i? DoStep(World _world, TEFeatureCinerarium _urn, out bool _stuck)
|
||||
{
|
||||
_stuck = false;
|
||||
LastFrom = null;
|
||||
LastWhat = "?";
|
||||
// Урна с нитями - логист (16.10: «занимается только перетаскиванием из ящиков в ящики»).
|
||||
if (_urn.IsLogist)
|
||||
{
|
||||
@@ -88,6 +106,7 @@ namespace NecromancerTome
|
||||
{
|
||||
c.SetModified();
|
||||
}
|
||||
LastWhat = "расходники коллектору";
|
||||
return z.Where[c];
|
||||
}
|
||||
}
|
||||
@@ -103,6 +122,7 @@ namespace NecromancerTome
|
||||
c.Items = items;
|
||||
c.SetModified();
|
||||
}
|
||||
LastWhat = "готовое из коллектора";
|
||||
return z.Where[c];
|
||||
}
|
||||
}
|
||||
@@ -115,6 +135,7 @@ namespace NecromancerTome
|
||||
{
|
||||
w.Output = output;
|
||||
}
|
||||
LastWhat = "готовое со станции";
|
||||
return z.Where[w];
|
||||
}
|
||||
}
|
||||
@@ -123,6 +144,7 @@ namespace NecromancerTome
|
||||
{
|
||||
if (Harvest(_world, p, z, ref blocked))
|
||||
{
|
||||
LastWhat = "сбор урожая";
|
||||
return p;
|
||||
}
|
||||
}
|
||||
@@ -131,6 +153,7 @@ namespace NecromancerTome
|
||||
Vector3i? planted = PlantRandom(_world, z);
|
||||
if (planted.HasValue)
|
||||
{
|
||||
LastWhat = "посадка";
|
||||
return planted;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user