Урны: череп-ретранслятор, прилив прячет духов, меры нагрузки; проверки без мыши

- Череп-ретранслятор: нить урны проходит через черепа-декор (цепочка), каждый пролёт до
  15 м; черепа хранятся у нити (запись урны v5, старые - без черепов). ПКМ ножом по черепу
  - провести нить, ЛКМ - снять нити через него; убрали череп - нить снимается.
- Прилив: ночью кровавой луны духи всех урн исчезают, работа стоит, утром - сама.
- Нагрузка: общий бюджет дел духов на кадр (3), анимируются только 16 ближайших духов;
  лимит урн сборщика смягчён - одна на 200 убийств (было 500), тексты на 13 языках.
- Описание логиста (кадило, два вида, маленький дух, мигание), черепа-декора (передаёт
  нить), подсказки ножа - на 13 языках.
- Разработка: necrogod, necrofps [uncap], necrotide, necroshot серией, necroclick по клетке,
  necrobox fill, necrourn с черепами на пути.

Проверено в игре (test8): мигание, нить 28 м через череп и её разрыв, прилив, 63 урны
сборщика: 13.0 мс на кадр против 11.8 мс без работы урн.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
AlexCube
2026-10-18 14:42:52 +03:00
co-authored by Claude Opus 5.5
parent 6693d96d5e
commit 85d8036e81
10 changed files with 617 additions and 61 deletions
+18
View File
@@ -83,10 +83,28 @@ namespace NecromancerTome
string dir = Path.Combine(NecroMailbox.Dir, "shots");
Directory.CreateDirectory(dir);
string name = _params.Count > 0 ? _params[0] : System.DateTime.Now.ToString("HHmmss");
// necroshot имя N интервал - серия из N кадров (имя1..имяN) через интервал секунд (18.10: мигание, полёт духа).
if (_params.Count >= 3 && int.TryParse(_params[1], out int n) &&
float.TryParse(_params[2], System.Globalization.NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, out float dt))
{
ThreadManager.StartCoroutine(Burst(dir, name, n, dt));
SdtdConsole.Instance.Output("серия: " + n + " кадров через " + dt + " с");
return;
}
string path = Path.Combine(dir, name + ".png");
ScreenCapture.CaptureScreenshot(path);
SdtdConsole.Instance.Output("снимок: " + path);
}
static System.Collections.IEnumerator Burst(string _dir, string _name, int _n, float _dt)
{
for (int i = 1; i <= _n; i++)
{
ScreenCapture.CaptureScreenshot(Path.Combine(_dir, _name + i + ".png"));
yield return new WaitForSecondsRealtime(_dt);
}
Debug.Log("[NecromancerTome] mailbox: серия " + _name + " готова");
}
}
/// <summary>necrospawn - нажать «Появиться» в окне появления (18.10: ассистент сам запускает игру с сейвом