diff --git a/Config/sounds.xml b/Config/sounds.xml
new file mode 100644
index 0000000..9aa2479
--- /dev/null
+++ b/Config/sounds.xml
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/HarmonySrc/FreezeProbe.cs b/HarmonySrc/FreezeProbe.cs
deleted file mode 100644
index adf60d5..0000000
--- a/HarmonySrc/FreezeProbe.cs
+++ /dev/null
@@ -1,46 +0,0 @@
-using UnityEngine;
-
-namespace NecromancerTome
-{
- ///
- /// Замер фризов (жалоба 10.10: «в чертогах лагает... это были фризы»). Средний FPS из строк игры «Time: ... FPS»
- /// их не показывает - он за минуту. Здесь каждый кадр дольше Threshold пишется в лог: длительность, сколько
- /// сборок мусора прошло за этот кадр (GC поколения 0 - если растёт, фриз от сборки мусора: мод или игра много
- /// выделяют), режим мода (чертоги/змея/одержимость) и сколько областей мира загружено.
- /// Строки: «[NecromancerTome] FreezeProbe: ...». Ничего не хранит, кроме пары чисел.
- ///
- public static class FreezeProbe
- {
- public const float Threshold = 0.1f;
- static int _gc = -1;
- static float _skipUntil;
-
- public static void Init()
- {
- ModEvents.UnityUpdate.RegisterHandler(OnUnityUpdate);
- }
-
- static void OnUnityUpdate(ref ModEvents.SUnityUpdateData _data)
- {
- int gc = System.GC.CollectionCount(0);
- World world = GameManager.Instance?.World;
- if (world == null || world.GetPrimaryPlayer() == null)
- {
- _gc = gc;
- _skipUntil = Time.unscaledTime + 20f; // загрузка мира - фризы ожидаемы
- return;
- }
- float dt = Time.unscaledDeltaTime;
- int dgc = _gc < 0 ? 0 : gc - _gc;
- _gc = gc;
- if (dt < Threshold || Time.unscaledTime < _skipUntil || GameManager.Instance.IsPaused())
- {
- return;
- }
- string mode = MindPalace.Active ? "чертоги" : SnakeMode.Active ? "змея" : Possession.Active ? "одержимость" : "тело";
- int obs = GameManager.Instance.World?.m_ChunkManager?.m_ObservedEntities?.Count ?? -1;
- Debug.Log("[NecromancerTome] FreezeProbe: кадр " + Mathf.RoundToInt(dt * 1000f) + " мс, сборок мусора +" + dgc +
- ", режим " + mode + ", наблюдателей областей " + obs + ", куча " + (System.GC.GetTotalMemory(false) >> 20) + " МБ");
- }
- }
-}
diff --git a/HarmonySrc/ModEntry.cs b/HarmonySrc/ModEntry.cs
index b0429bc..cea8aec 100644
--- a/HarmonySrc/ModEntry.cs
+++ b/HarmonySrc/ModEntry.cs
@@ -66,7 +66,6 @@ namespace NecromancerTome
NecroMailbox.Init();
Possession.Init();
BloodTide.Init();
- FreezeProbe.Init();
RemainsDecay.Init();
// PyramidWardPatch.cs's TEFeaturePyramidWard needs no Init() call - it's discovered
// automatically by the engine's own TileEntityCompositeData reflection scan (see that
diff --git a/NecromancerHarmony.dll b/NecromancerHarmony.dll
index b039645..cbeff0a 100644
Binary files a/NecromancerHarmony.dll and b/NecromancerHarmony.dll differ
diff --git a/Resources/necroboneshiv b/Resources/necroboneshiv
new file mode 100644
index 0000000..df4b2c5
Binary files /dev/null and b/Resources/necroboneshiv differ
diff --git a/Resources/necropyramid b/Resources/necropyramid
new file mode 100644
index 0000000..546d357
Binary files /dev/null and b/Resources/necropyramid differ
diff --git a/Resources/necrosounds b/Resources/necrosounds
new file mode 100644
index 0000000..c7adcd7
Binary files /dev/null and b/Resources/necrosounds differ