Стервятник с ношей: курица/кролик выше в когтях, Shift не разгоняет (#74)
CarryGap -0.06 -> -0.15 м; с ношей разгон и планирование по Shift выключены (перегружен). Подбор без перезапуска - necrocarry gap|run. DLL закоммитится вместе с оссуарием (#66). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
c9b3e078c3
commit
e3cdff0323
@@ -106,8 +106,12 @@ namespace NecromancerTome
|
|||||||
/// угол из PlaceCamera затирался).</summary>
|
/// угол из PlaceCamera затирался).</summary>
|
||||||
public static float ZoomFov = -1f;
|
public static float ZoomFov = -1f;
|
||||||
/// <summary>Зазор между когтями стервятника и спиной ноши, м; минус - когти впиваются в спину
|
/// <summary>Зазор между когтями стервятника и спиной ноши, м; минус - когти впиваются в спину
|
||||||
/// (тест 08.10: «курица висит под стервятником, а не в его когтях»).</summary>
|
/// (тест 08.10: «курица висит под стервятником, а не в его когтях»). 22.10: -0.06 -> -0.15 («поднимай курицу и кролика
|
||||||
public const float CarryGap = -0.06f;
|
/// ещё выше. Иначе они не достают до лап»). Подбор без перезапуска - necrocarry gap.</summary>
|
||||||
|
public static float CarryGap = -0.15f;
|
||||||
|
/// <summary>С ношей Shift не разгоняет (22.10: «он не может разгоняться по шифту, ибо перегружен»). Выключатель -
|
||||||
|
/// necrocarry run on|off.</summary>
|
||||||
|
public static bool CarryNoRun = true;
|
||||||
/// <summary>Цель рывка под прицелом сейчас (каждый кадр) - обычный прицел игры краснеет (AimTint).</summary>
|
/// <summary>Цель рывка под прицелом сейчас (каждый кадр) - обычный прицел игры краснеет (AimTint).</summary>
|
||||||
public static EntityAlive FlyAim;
|
public static EntityAlive FlyAim;
|
||||||
static float _flyDashUntil;
|
static float _flyDashUntil;
|
||||||
@@ -961,7 +965,8 @@ namespace NecromancerTome
|
|||||||
dir += Vector3.down;
|
dir += Vector3.down;
|
||||||
}
|
}
|
||||||
bool moving = dir.sqrMagnitude > 0.01f;
|
bool moving = dir.sqrMagnitude > 0.01f;
|
||||||
float accel = _flyRun ? FlyAccelRun * _v.moveSpeedAggro : FlyAccel * _v.moveSpeed;
|
bool run = _flyRun && !(CarryNoRun && _carry != null); // с ношей - перегружен, без разгона
|
||||||
|
float accel = run ? FlyAccelRun * _v.moveSpeedAggro : FlyAccel * _v.moveSpeed;
|
||||||
if (moving)
|
if (moving)
|
||||||
{
|
{
|
||||||
_v.motion = _v.motion * 0.9f + dir.normalized * (accel * 0.1f);
|
_v.motion = _v.motion * 0.9f + dir.normalized * (accel * 0.1f);
|
||||||
@@ -976,7 +981,7 @@ namespace NecromancerTome
|
|||||||
_v.SetRotation(new Vector3(0f, _bodyYaw, 0f));
|
_v.SetRotation(new Vector3(0f, _bodyYaw, 0f));
|
||||||
if (_v.emodel != null && _v.emodel.avatarController != null)
|
if (_v.emodel != null && _v.emodel.avatarController != null)
|
||||||
{
|
{
|
||||||
_v.glidingCurrentPercent = Mathf.MoveTowards(_v.glidingCurrentPercent, _flyRun && moving ? 1f : 0f, 0.06f);
|
_v.glidingCurrentPercent = Mathf.MoveTowards(_v.glidingCurrentPercent, run && moving ? 1f : 0f, 0.06f);
|
||||||
_v.emodel.avatarController.UpdateFloat("Gliding", _v.glidingCurrentPercent);
|
_v.emodel.avatarController.UpdateFloat("Gliding", _v.glidingCurrentPercent);
|
||||||
}
|
}
|
||||||
// «Вниз» на земле посадке не мешает: Ctrl - переключатель, и с ним стервятник не сел бы никогда.
|
// «Вниз» на земле посадке не мешает: Ctrl - переключатель, и с ним стервятник не сел бы никогда.
|
||||||
|
|||||||
@@ -0,0 +1,41 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Globalization;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace NecromancerTome
|
||||||
|
{
|
||||||
|
/// <summary>Ноша одержимого стервятника (курица, кролик): высота под лапами и запрет разгона с грузом (22.10.2026).</summary>
|
||||||
|
public class ConsoleCmdNecroCarry : ConsoleCmdAbstract
|
||||||
|
{
|
||||||
|
public override string[] getCommands() => new[] { "necrocarry" };
|
||||||
|
public override string getDescription() => "NecromancerTome: ноша стервятника - gap <м, минус - выше>|run on|off|show";
|
||||||
|
|
||||||
|
void Out(string _s)
|
||||||
|
{
|
||||||
|
SdtdConsole.Instance.Output(_s);
|
||||||
|
Debug.Log("[NecromancerTome] necrocarry: " + _s);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Execute(List<string> _params, CommandSenderInfo _senderInfo)
|
||||||
|
{
|
||||||
|
string cmd = _params.Count > 0 ? _params[0] : "show";
|
||||||
|
switch (cmd)
|
||||||
|
{
|
||||||
|
case "gap":
|
||||||
|
if (_params.Count > 1 && float.TryParse(_params[1].Replace(',', '.'), NumberStyles.Float, CultureInfo.InvariantCulture, out float g))
|
||||||
|
{
|
||||||
|
Possession.CarryGap = Mathf.Clamp(g, -0.6f, 0.3f);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "run":
|
||||||
|
if (_params.Count > 1 && (_params[1] == "on" || _params[1] == "off"))
|
||||||
|
{
|
||||||
|
Possession.CarryNoRun = _params[1] == "on";
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
Out("gap " + Possession.CarryGap.ToString("0.###", CultureInfo.InvariantCulture) + ", без разгона с ношей - " +
|
||||||
|
(Possession.CarryNoRun ? "да" : "нет"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user