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)