Руки одержимого: урон по анимации удара рук, как у персонажа; в покое руки выше, на удар - ниже
- ЛКМ от первого лица - удар рук; через RaycastTime их состояния удара (как impactStart у персонажа) зомби бьёт сразу (ForceImpact в IsAttackImpact, задержка луча снята). Замер задержки урона убран. - Положение: в покое 0,-1.55,0.05 без сжатия; на удар - плавно к -1.7 со сжатием под FOV 45. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
885c344b3c
commit
2cae2377e2
@@ -365,6 +365,7 @@ namespace NecromancerTome
|
||||
return;
|
||||
}
|
||||
Active = false;
|
||||
ForceImpact = false;
|
||||
FirstPerson = false;
|
||||
HideBody(null);
|
||||
FpArms.Hide(_player);
|
||||
@@ -838,14 +839,21 @@ namespace NecromancerTome
|
||||
// Нюх (указание 09.10): все существа рядом с собакой - на компасе и карте.
|
||||
DogSense.Tick(world, z, Time.deltaTime);
|
||||
}
|
||||
if (attack && Time.time >= _nextAttack)
|
||||
if (attack && Time.time >= _nextAttack && FpArms.Active)
|
||||
{
|
||||
// От первого лица - как у персонажа (указание 13.10): ЛКМ - удар рук, урон зомби - когда их анимация дошла
|
||||
// до точки удара (FpArms -> FpImpact), а не по его собственному замаху.
|
||||
PossessionPowers.BreakInvis(z, "удар");
|
||||
FpArms.Punch();
|
||||
_nextAttack = Time.time + Mathf.Max(FpArms.SwingTime, z.GetAttackTimeoutTicks() / 20f);
|
||||
}
|
||||
else if (attack && Time.time >= _nextAttack)
|
||||
{
|
||||
PossessionPowers.BreakInvis(z, "удар");
|
||||
z.SetLookPosition(MeleeAim(world, z));
|
||||
if (z.Attack(false))
|
||||
{
|
||||
z.Attack(true);
|
||||
FpArms.QueuePunch(); // руки от первого лица бьют вместе с зомби (13.10), кулак - в момент урона
|
||||
if (IsPet && BearControl.Is(z))
|
||||
{
|
||||
BearControl.Smash(world, _player, z); // удар лапой и по блоку (решено 09.10)
|
||||
@@ -2110,6 +2118,34 @@ namespace NecromancerTome
|
||||
_flyZoomHeld = false;
|
||||
}
|
||||
|
||||
/// <summary>Миг удара рук от первого лица (FpArms): зомби бьёт сразу - его удар начат и сразу «дошёл до точки
|
||||
/// удара» (ForceImpact в EntityAlive.IsAttackImpact, задержка луча ItemActionMelee снята). Урон, дальность,
|
||||
/// цель - его, взгляд - на прицел (MeleeAim).</summary>
|
||||
public static bool ForceImpact;
|
||||
|
||||
public static void FpImpact()
|
||||
{
|
||||
EntityAlive z = Zombie;
|
||||
if (!Active || z == null || z.IsDead())
|
||||
{
|
||||
return;
|
||||
}
|
||||
z.SetLookPosition(MeleeAim(z.world, z));
|
||||
_meleeLookUntil = Time.time + 0.6f;
|
||||
if (!z.Attack(false))
|
||||
{
|
||||
Debug.Log("[NecromancerTome] Possession: удар рук - зомби не может бить сейчас");
|
||||
return;
|
||||
}
|
||||
z.Attack(true);
|
||||
ForceImpact = true;
|
||||
if (z.inventory?.holdingItemData?.actionData != null && z.inventory.holdingItemData.actionData.Count > 0 &&
|
||||
z.inventory.holdingItemData.actionData[0] is ItemActionMelee.InventoryDataMelee d)
|
||||
{
|
||||
d.lastUseTime -= 10f;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Ячейки пояса персонажа (окно windowToolbelt) - скрыты в виде от первого лица (указание 13.10: «пояс игрока
|
||||
/// нужно прятать», у зомби свой пояс). Только это окно: группа toolbelt держит и полоски здоровья и сытости персонажа
|
||||
/// (тест 13.10 - пропали вместе с поясом). Ставится каждый кадр - игра может показать окно снова.</summary>
|
||||
|
||||
Reference in New Issue
Block a user