Одержимость: питомцы не бьют одержимого, бег по Shift у всех, прыжок паука на E

- Охрана питомцев (SnakeControl.IsFoe) и их ИИ (префикс SetAttackTarget) больше не берут одержимого зомби целью.
- Shift днём: скорость - ночная ярость (moveSpeedAggroMax), дневная у многих равна шагу.
- E у прыгунов (паук) - дальний прыжок, как пробел; подсказка на 13 языках.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
AlexCube
2026-10-13 13:01:38 +03:00
co-authored by Claude Opus 5.5
parent bbe1b52ea4
commit 5b69e0c04f
4 changed files with 20 additions and 4 deletions
+7
View File
@@ -220,6 +220,13 @@ namespace NecromancerTome
{
return;
}
// Питомцы мода не трогают одержимого зомби (13.10: «питомцы нападают на одержимых») - ни своим
// ИИ, ни в ответ на удар; охрана (SnakeControl.IsFoe) его тоже не выбирает.
if (Possession.IsPossessed(_attackTarget) && SnakeControl.IsNecroEntity(__instance))
{
_attackTarget = null;
return;
}
if (!NecroCharmSide.IsCharmed(__instance) ||
!NecroCharmSide.IsCharmed(_attackTarget) && !Possession.IsPossessed(_attackTarget))
{
+9 -1
View File
@@ -684,12 +684,20 @@ namespace NecromancerTome
z.rotation.x = -_pitch; // наклон головы - для луча удара
if (moving)
{
z.SetMoveForwardWithModifiers(run ? z.GetMoveSpeedAggro() : z.GetMoveSpeed(), 1f, 0f, false);
// Бег - ночная скорость ярости (moveSpeedAggroMax) в любое время: днём GetMoveSpeedAggro отдаёт
// дневную, а у многих зомби она равна шагу (13.10: «не все зомби бегают по Shift»).
z.SetMoveForwardWithModifiers(run ? Mathf.Max(z.GetMoveSpeedAggro(),
EffectManager.GetValue(PassiveEffects.RunSpeed, null, z.moveSpeedAggroMax, z)) : z.GetMoveSpeed(), 1f, 0f, false);
}
else
{
z.SetMoveForwardWithModifiers(0f, 0f, 0f, false);
}
// E у прыгунов (паук, jumpMaxDistance от 5 м) - тот же дальний прыжок (13.10: «спайдер не прыгает по E»).
if (detonate && z.jumpMaxDistance >= 5f)
{
jump = true;
}
if (jump && z.onGround && !z.Jumping)
{
z.Jumping = true;
+3 -2
View File
@@ -616,11 +616,12 @@ namespace NecromancerTome
/// <summary>Враг для змеи: живой EntityEnemy, не питомец (призрачный) и не девиант - зомби под
/// баффом Девиатора на стороне некроманта (указание 28.09: «если под бафом девианта, то это
/// не враг»). Общее для тревоги у тела и для прицела.</summary>
/// не враг»). Общее для тревоги у тела и для прицела. Одержимый зомби - тоже не враг (13.10: «питомцы
/// нападают на одержимых»), охрана питомцев выбирает цель отсюда же.</summary>
public static bool IsFoe(EntityAlive _e, EntityAlive _snake)
{
return _e != null && _e != _snake && _e is EntityEnemy && !_e.IsDead() &&
!IsNecroEntity(_e) &&
!IsNecroEntity(_e) && !Possession.IsPossessed(_e) &&
!GhostTraderPatch.ShouldBeGhost(_e) && !NecroCharmSide.IsCharmed(_e);
}