From b36eba1551bd2e4130af5196ab60286f212ce3c5 Mon Sep 17 00:00:00 2001 From: AlexCube Date: Tue, 13 Oct 2026 16:13:01 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A0=D1=83=D0=BA=D0=B8=20=D0=BE=D0=B4=D0=B5?= =?UTF-8?q?=D1=80=D0=B6=D0=B8=D0=BC=D0=BE=D0=B3=D0=BE:=20=D1=83=D0=B4?= =?UTF-8?q?=D0=B0=D1=80=20=D0=BA=D1=83=D0=BB=D0=B0=D0=BA=D0=BE=D0=BC=20?= =?UTF-8?q?=D0=B2=D0=BC=D0=B5=D1=81=D1=82=D0=B5=20=D1=81=20=D1=83=D0=B4?= =?UTF-8?q?=D0=B0=D1=80=D0=BE=D0=BC=20=D0=B7=D0=BE=D0=BC=D0=B1=D0=B8=20(?= =?UTF-8?q?=D1=82=D1=80=D0=B8=D0=B3=D0=B3=D0=B5=D1=80=20WeaponFire,=20necr?= =?UTF-8?q?oarms=20punch=20=D0=B4=D0=BB=D1=8F=20=D0=BF=D0=BE=D0=B4=D0=B1?= =?UTF-8?q?=D0=BE=D1=80=D0=B0)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- HarmonySrc/FpArms.cs | 22 +++++++++++++++++++++- HarmonySrc/Possession.cs | 1 + 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/HarmonySrc/FpArms.cs b/HarmonySrc/FpArms.cs index d70788e..add7835 100644 --- a/HarmonySrc/FpArms.cs +++ b/HarmonySrc/FpArms.cs @@ -37,6 +37,8 @@ namespace NecromancerTome /// Цветная текстура кожи (_Albedo): false - убрана, кожа ровно-серая по _Tint, рельеф - от карты нормалей /// (указание 13.10: «руки вообще серые»; _Tint только умножает, смуглая кожа от него темнела, а не серела). public static bool Albedo; + /// Сигнал аниматора рук на удар (подбор necroarms punch; у пустых рук игры - триггер атаки). + public static string PunchTrigger = "WeaponFire"; /// Параметры аниматора рук, выставленные necroarms set (подбор «пустых рук»), - ставятся и при пересборке. static readonly Dictionary _animParams = new Dictionary { @@ -252,6 +254,17 @@ namespace NecromancerTome return _name + " = " + _v.ToString(CultureInfo.InvariantCulture); } + /// Удар одержимого - руки бьют кулаком (указание 13.10: хват пустых рук, «там как раз анимация ударов + /// кулаками»). + public static void Punch() + { + Animator a = Anim; + if (a != null && !string.IsNullOrEmpty(PunchTrigger)) + { + a.SetTrigger(PunchTrigger); + } + } + public static string Trigger(string _name) { Animator a = Anim; @@ -368,7 +381,7 @@ namespace NecromancerTome public class ConsoleCmdNecroArms : ConsoleCmdAbstract { public override string[] getCommands() => new[] { "necroarms" }; - public override string getDescription() => "NecromancerTome: руки одержимого от первого лица - [pos x y z | parent cam|ufps | anim | mat | set | trigger | tint r g b | albedo on|off]"; + public override string getDescription() => "NecromancerTome: руки одержимого от первого лица - [pos x y z | parent cam|ufps | anim | mat | set | trigger | tint r g b | albedo on|off | punch ]"; void Out(string _s) { @@ -397,6 +410,13 @@ namespace NecromancerTome FpArms.Albedo = _params[1] == "on"; FpArms.Rebuild(); } + else if (cmd == "punch" && _params.Count >= 2) + { + FpArms.PunchTrigger = _params[1]; + FpArms.Punch(); + Out("удар - " + FpArms.PunchTrigger); + return; + } else if (cmd == "anim") { Out(FpArms.DumpAnim()); diff --git a/HarmonySrc/Possession.cs b/HarmonySrc/Possession.cs index 9459643..eb42ee3 100644 --- a/HarmonySrc/Possession.cs +++ b/HarmonySrc/Possession.cs @@ -821,6 +821,7 @@ namespace NecromancerTome if (z.Attack(false)) { z.Attack(true); + FpArms.Punch(); // руки от первого лица бьют вместе с зомби (13.10) if (IsPet && BearControl.Is(z)) { BearControl.Smash(world, _player, z); // удар лапой и по блоку (решено 09.10)