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)