From 5b69e0c04f8123cbab30677b67ec0ab2d0f85421 Mon Sep 17 00:00:00 2001 From: AlexCube Date: Tue, 13 Oct 2026 13:01:38 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B4=D0=B5=D1=80=D0=B6=D0=B8=D0=BC?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D1=8C:=20=D0=BF=D0=B8=D1=82=D0=BE=D0=BC?= =?UTF-8?q?=D1=86=D1=8B=20=D0=BD=D0=B5=20=D0=B1=D1=8C=D1=8E=D1=82=20=D0=BE?= =?UTF-8?q?=D0=B4=D0=B5=D1=80=D0=B6=D0=B8=D0=BC=D0=BE=D0=B3=D0=BE,=20?= =?UTF-8?q?=D0=B1=D0=B5=D0=B3=20=D0=BF=D0=BE=20Shift=20=D1=83=20=D0=B2?= =?UTF-8?q?=D1=81=D0=B5=D1=85,=20=D0=BF=D1=80=D1=8B=D0=B6=D0=BE=D0=BA=20?= =?UTF-8?q?=D0=BF=D0=B0=D1=83=D0=BA=D0=B0=20=D0=BD=D0=B0=20E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Охрана питомцев (SnakeControl.IsFoe) и их ИИ (префикс SetAttackTarget) больше не берут одержимого зомби целью. - Shift днём: скорость - ночная ярость (moveSpeedAggroMax), дневная у многих равна шагу. - E у прыгунов (паук) - дальний прыжок, как пробел; подсказка на 13 языках. Co-Authored-By: Claude Opus 5.5 --- Config/Localization.csv | 2 +- HarmonySrc/CharmPatch.cs | 7 +++++++ HarmonySrc/Possession.cs | 10 +++++++++- HarmonySrc/SnakeControl.cs | 5 +++-- 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/Config/Localization.csv b/Config/Localization.csv index 13b20ec..263b518 100644 --- a/Config/Localization.csv +++ b/Config/Localization.csv @@ -231,7 +231,7 @@ necroPossessHintInvis,items,Item,,,,E - invisibility (a strike breaks it),,E - U necroPossessKeyRmb,items,Item,,,,RMB,,RMT,RMB,Clic droit,RMB,右クリック,우클릭,PPM,RMB,ПКМ,Sağ tık,右键,右鍵 necroPossessHintSpitE,items,Item,,,,E - spit around you,,E - um sich speien,E: escupir a tu alrededor,E : cracher autour de soi,E - sputa tutto intorno,E: 周囲に吐きかける,E - 주변에 침 뱉기,E - pluj wokół siebie,E - cuspir ao redor,E - плевок вокруг себя,E - etrafına tükür,E - 向四周喷吐,E - 向四周噴吐 necroPossessHintZoom,items,Item,,,,RMB (hold) - keen eye: zoom like a scope,,RMT (halten) - scharfes Auge: Zoom wie ein Zielfernrohr,"RMB (mantener): ojo avizor, zoom como una mira","Clic droit (maintenir) : œil perçant, zoom comme une lunette",RMB (tieni premuto) - occhio acuto: zoom come un mirino,右クリック(長押し): 鋭い目・スコープのようにズーム,우클릭(누르기) - 매의 눈: 조준경처럼 확대,PPM (przytrzymaj) - bystre oko: przybliżenie jak luneta,RMB (segurar) - olho aguçado: zoom como uma luneta,"ПКМ (удерживать) - зоркий глаз: приближение, как у прицела",Sağ tık (basılı tut) - keskin göz: dürbün gibi yakınlaştır,右键(按住)- 锐眼:像瞄准镜一样放大,右鍵(按住)- 銳眼:像瞄準鏡一樣放大 -necroPossessHintLeap,items,Item,,,,Space - long leap,,Leertaste - weiter Sprung,Espacio: salto largo,Espace : grand bond,Spazio - balzo lungo,スペース: 大ジャンプ,스페이스 - 멀리뛰기,Spacja - daleki skok,Espaço - salto longo,Пробел - дальний прыжок,Boşluk - uzun sıçrayış,空格 - 远跳,空白鍵 - 遠跳 +necroPossessHintLeap,items,Item,,,,Space or E - long leap,,Leertaste oder E - weiter Sprung,Espacio o E: salto largo,Espace ou E : grand bond,Spazio o E - balzo lungo,スペースまたはE: 大ジャンプ,스페이스 또는 E - 멀리뛰기,Spacja lub E - daleki skok,Espaço ou E - salto longo,Пробел или E - дальний прыжок,Boşluk veya E - uzun sıçrayış,空格或E - 远跳,空白鍵或E - 遠跳 necroPetRecallHint,items,Item,,,,Recall pet - E,,Diener zurückrufen - E,Devolver al sirviente - E,Rappeler le serviteur - E,Richiama il servitore - E,僕を呼び戻す - E,종복 불러들이기 - E,Odwołaj sługę - E,Chamar o servo de volta - E,Отозвать питомца - E,Hizmetkârı geri çağır - E,召回仆从 - E,召回僕從 - E necroPetNothingToPossess,items,Item,,,,No servant summoned to possess,,"Kein beschworener Diener, in den du fahren kannst",No hay ningún sirviente invocado que poseer,Aucun serviteur invoqué à posséder,Nessun servitore evocato da possedere,憑依できる僕が呼ばれていません,빙의할 종복이 소환되어 있지 않습니다,Brak przywołanego sługi do opętania,Nenhum servo invocado para possuir,Нет призванного слуги для вселения,Ele geçirilecek çağrılmış hizmetkâr yok,没有可附身的已召唤仆从,沒有可附身的已召喚僕從 necroBloodTide,items,Item,,,,Blood tide: the spirit cannot leave the body,,Blutflut: Der Geist kann den Körper nicht verlassen,Marea de sangre: el espíritu no puede abandonar el cuerpo,Marée de sang : l'esprit ne peut pas quitter le corps,Marea di sangue: lo spirito non può lasciare il corpo,血の潮:霊は肉体を離れられない,피의 조수: 영이 몸을 떠날 수 없다,Krwawy przypływ: duch nie może opuścić ciała,Maré de sangue: o espírito não pode deixar o corpo,Кровавый прилив: дух не может покинуть тело,Kan gelgiti: ruh bedeni terk edemiyor,血潮:灵体无法离开身体,血潮:靈體無法離開身體 diff --git a/HarmonySrc/CharmPatch.cs b/HarmonySrc/CharmPatch.cs index 82a19a1..135c832 100644 --- a/HarmonySrc/CharmPatch.cs +++ b/HarmonySrc/CharmPatch.cs @@ -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)) { diff --git a/HarmonySrc/Possession.cs b/HarmonySrc/Possession.cs index cb3bfcc..c8982c0 100644 --- a/HarmonySrc/Possession.cs +++ b/HarmonySrc/Possession.cs @@ -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; diff --git a/HarmonySrc/SnakeControl.cs b/HarmonySrc/SnakeControl.cs index 4ec2d60..f4c922a 100644 --- a/HarmonySrc/SnakeControl.cs +++ b/HarmonySrc/SnakeControl.cs @@ -616,11 +616,12 @@ namespace NecromancerTome /// Враг для змеи: живой EntityEnemy, не питомец (призрачный) и не девиант - зомби под /// баффом Девиатора на стороне некроманта (указание 28.09: «если под бафом девианта, то это - /// не враг»). Общее для тревоги у тела и для прицела. + /// не враг»). Общее для тревоги у тела и для прицела. Одержимый зомби - тоже не враг (13.10: «питомцы + /// нападают на одержимых»), охрана питомцев выбирает цель отсюда же. 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); }