diff --git a/Config/recipes.xml b/Config/recipes.xml index d94360e..ddd875b 100644 --- a/Config/recipes.xml +++ b/Config/recipes.xml @@ -680,13 +680,14 @@ - + + @@ -694,17 +695,37 @@ + - - - + + + + - - + + + + + + + + + + + + + + + + + + + diff --git a/HarmonySrc/Cinerarium.cs b/HarmonySrc/Cinerarium.cs index efdc3b8..8a18b1c 100644 --- a/HarmonySrc/Cinerarium.cs +++ b/HarmonySrc/Cinerarium.cs @@ -929,6 +929,10 @@ namespace NecromancerTome logist = w != null && IsLogistWallBlock(w.GetBlock(ToWorldPos()).Block) ? 2 : 1; } _genie = CinerariumGenie.Spawn(ModelTransform(), IsWorker ? CinerariumGenie.WorkerDrop : 0f, logist); + if (_genie != null && IsLooter) + { + _genie.GetComponent().ForwardOverride = CinerariumGenie.LootForward; + } if (_genie != null && _sound) { Audio.Manager.BroadcastPlay(World.blockToTransformPos(ToWorldPos()), GenieSound); diff --git a/HarmonySrc/CinerariumGenie.cs b/HarmonySrc/CinerariumGenie.cs index 22197d6..ac282ba 100644 --- a/HarmonySrc/CinerariumGenie.cs +++ b/HarmonySrc/CinerariumGenie.cs @@ -82,6 +82,8 @@ namespace NecromancerTome public static Vector3 LogistWallHome = new Vector3(0f, 0.35f, -0.22f); /// Окна крышки - на расстоянии LogistExit от оси кадила (радиус крышки 0.21 м), по осям модели. public static float LogistExit = 0.3f; + /// Лутер: сдвиг духа вперёд (подобран в Blender 18.10). + public static float LootForward = 0.08f; /// _logist: 0 - обычный дух над горлышком, 1 - дух логиста в кадиле по центру, 2 - в кадиле у стены. public static GameObject Spawn(Transform _urnModel, float _drop, int _logist = 0) @@ -282,6 +284,9 @@ namespace NecromancerTome float _phase; /// Своя поправка высоты урны (CinerariumGenie.WorkerDrop у рабочего). public float Drop; + /// Свой сдвиг вперёд (NaN - общий CinerariumGenie.Forward). Лутер (18.10, банка с крышкой-кадилом): 0.08 - хвост + /// по центру отверстия на макушке («Вот сейчас было идеально»). + public float ForwardOverride = float.NaN; /// Полёт к месту работы и обратно (16.10: «возвращается задом», «делал действие не сразу, а хоть руками /// пошевелив»): туда - лицом к месту, над местом - жест руками (дело делается в его середине, см. Visit), /// обратно - развернувшись лицом к урне. Точка - в координатах модели урны; _t - время с начала полёта, -1 - дома. @@ -458,7 +463,8 @@ namespace NecromancerTome { return Wall ? CinerariumGenie.LogistWallHome : CinerariumGenie.LogistHome; } - return new Vector3(0f, CinerariumGenie.OffsetY + Drop, 0f) + Quaternion.Euler(0f, _yaw, 0f) * new Vector3(0f, 0f, CinerariumGenie.Forward); + float fwd = float.IsNaN(ForwardOverride) ? CinerariumGenie.Forward : ForwardOverride; + return new Vector3(0f, CinerariumGenie.OffsetY + Drop, 0f) + Quaternion.Euler(0f, _yaw, 0f) * new Vector3(0f, 0f, fwd); } /// Повернуться лицом по направлению _dir (горизонтально), не быстрее 300°/с. diff --git a/NecromancerHarmony.dll b/NecromancerHarmony.dll index fe8668a..c3b7684 100644 Binary files a/NecromancerHarmony.dll and b/NecromancerHarmony.dll differ diff --git a/NecromancerHarmony.pdb b/NecromancerHarmony.pdb index 4d8b199..b7f1e06 100644 Binary files a/NecromancerHarmony.pdb and b/NecromancerHarmony.pdb differ diff --git a/Resources/necrocinerarium b/Resources/necrocinerarium index 12edee1..0f73d42 100644 Binary files a/Resources/necrocinerarium and b/Resources/necrocinerarium differ diff --git a/Textures/necroTomeUrns.png b/Textures/necroTomeUrns.png index fc82ace..55126b7 100644 Binary files a/Textures/necroTomeUrns.png and b/Textures/necroTomeUrns.png differ diff --git a/UIAtlases/ItemIconAtlas/necroCinerariumLoot.png b/UIAtlases/ItemIconAtlas/necroCinerariumLoot.png index 69ee17f..7690664 100644 Binary files a/UIAtlases/ItemIconAtlas/necroCinerariumLoot.png and b/UIAtlases/ItemIconAtlas/necroCinerariumLoot.png differ diff --git a/UIAtlases/ItemIconAtlas/necroCinerariumRepair.png b/UIAtlases/ItemIconAtlas/necroCinerariumRepair.png index de7d023..300a1c4 100644 Binary files a/UIAtlases/ItemIconAtlas/necroCinerariumRepair.png and b/UIAtlases/ItemIconAtlas/necroCinerariumRepair.png differ