Stealth Grass Extension V2.1
Система стелсу в траві з урахуванням позиції гравця, побудована на базі Stealth 2.31
Автор: Ivan Danko
Вимоги: S.T.A.L.K.E.R. Anomaly 1.5.3 • Stealth 2.31 • MCM
Цей аддон розширює Stealth 2.31 повноцінною системою маскування в траві, яка враховує точне розташування гравця. Замість того, щоб сприймати траву як глобальний перемикач, мод зчитує реальні дані об'єктів оточення (detail objects) поточного рівня в точній позиції гравця — тож стелс активується лише там, де трава справді росте. Якщо ви присядете в полі — ви отримаєте укриття. Якщо встанете в тому ж полі — ні. Якщо ви ляжете на асфальт із текстурою декоративної трави — це не дасть жодного бонусу.
Положення тіла (стійка)
Стелс у траві активується лише тоді, коли гравець присів або ліг. Стійка на повний зріст не дає жодних бонусів. Рух збільшує помітність навіть у прихованих положеннях.
-
На повний зріст — без змін (1.0)
-
Присівши (на місці) — ×0.04 (у 25 разів важче помітити)
-
Присівши (в русі) — ×0.07 (у 14 разів важче помітити)
-
Лежачи (на місці) — ×0.02 (у 50 разів важче помітити)
-
Лежачи (поповзом) — ×0.03 (у 33 рази важче помітити)
Усі множники складаються з власними бонусами присідання та положення лежачи з моду Stealth 2.31.
Висота та густота трави
Мод зчитує бінарний файл рівня level.details у поточному квадраті гравця розміром 2×2 метри. Кожна комірка містить два 32-бітні бітмаски — кожен встановлений біт означає розміщений об'єкт трави. Кількість встановлених бітів (popcount) визначає реальну густоту трави в цій точці:
-
Декоративна трава (асфальт, дороги — popcount 4–6) — стелс відсутній, коректно відфільтровується.
-
Рідка трава — стелс слабший у 4 рази.
-
Середня трава — стелс слабший у 2 рази.
-
Густа трава (popcount 15–25) — повний множник стелсу.
Висота трави зчитується з параметра r__detail_height як м'який множник — нижчі налаштування графіки пропорційно зменшують рівень укриття. Система повністю вимикається в приміщеннях та під землею.
Вертикальний кут огляду
Чим під крутішим кутом NPC дивиться на гравця згори вниз, тим менш ефективним стає укриття в траві. Положення лежачи зсуває всі пороги на +10° на вашу користь завдяки нижчому профілю тіла.
-
0–20° — повний стелс у траві будь-якої густоти.
-
20–45° — густа: 100% / середня: 50% / рідка: немає.
-
45–65° — густа: 40% / середня: немає / рідка: немає.
-
>65° — стелс відсутній незалежно від трави.
Укриття за перешкодами
Від NPC у бік гравця прораховуються промені (трасування). Кількість променів залежить від положення тіла. Кожен заблокований промінь знижує фінальний шанс виявлення:
-
Присівши / На повний зріст — 3 промені (ноги / торс / голова).
-
Лежачи — 5 променів (ноги / низько / середина + 2 бокові на ширині плечей).
-
0 заблоковано — без бонусу (100% виявлення).
-
1 заблоковано — ×0.65 до виявлення.
-
2 заблоковано — ×0.30 до виявлення.
-
Усі заблоковано — гарантований стелс.
Результати трасування для кожного NPC кешуються на 300 мс (TTL), щоб уникнути просідання FPS.
Лінія видимості (LoS)
Якщо статична геометрія (стіни, об'єкти) повністю блокує огляд NPC, стелс гарантується, а подальші перевірки не виконуються. Стелс із заблокованою лінією видимості обходить обидва таймери пам'яті виявлення.
Ніч та погода
-
Ніч (21:00–06:00) — активується окремий нічний множник (за замовчуванням 0.15) незалежно від висоти трави.
-
Дощ — знижує шанс виявлення на налаштований коефіцієнт (за замовчуванням ×0.5).
-
Туман — урізає ефективну дальність зору NPC до 40% від максимальної.
-
Похмура погода / Сутінки — зменшує мінімальну дистанцію виявлення NPC на ×0.55.
Пам'ять виявлення та бою
-
Пам'ять виявлення — щойно NPC помічає гравця, стелс блокується на 15 секунд (налаштовується від 5 до 60 с). Трава не зможе миттєво сховати вас знову одразу після виявлення.
-
Пам'ять бою — якщо гравець влучає в NPC, цей NPC залишається гіперактивним протягом 45 секунд із подвоєною мінімальною дистанцією виявлення. Трава не сховає вас на близькій відстані від того, в кого ви щойно вистрілили.
Пильність NPC
Уважність NPC змінюється залежно від їхнього поточного стану:
-
Сплячі, п'яні або зайняті їжею NPC мають суттєво знижений шанс виявлення.
-
Напрямок погляду — NPC, який стоїть не обличчям до гравця, помічає його набагато гірше. Якщо він повернутий спиною = 10% від нормального шансу виявлення.
Виявлення за угрупованнями та типами істот
Базові значення для денного часу та ясної погоди (ніч, дощ, туман і похмурість накладаються зверху):
-
Моноліт / Військові / Долг — 40% / мін. дистанція виявлення: 15 м (армія), 13 м (Долг/Моноліт).
-
Найманці / ІДГ (UNISG) / Гріх — 35% / мін. дистанція: 12 м.
-
Сталкери / Воля / Чисте Небо / Екологи — 30% / мін. дистанція: 12 м.
-
Бандити / Ренегати — 25% / мін. дистанція: 12 м.
-
Зомбовані сталкери — 15% / мін. дистанція: 4 м.
Мінімальна дистанція виявлення не може бути меншою за 50% від базового денного значення — NPC ніколи не стануть абсолютно сліпими, незалежно від умов.
Виявлення мутантами (фіксовані значення, не залежать від часу доби чи погоди):
-
Контролер / Полтергейст — 95–98%.
-
Кровосос / Псі-сос — 85–90% — нічний штраф обмежений мінімумом 0.75×.
-
Химера / Бюрер / Кабан — 75–80% — нічний штраф обмежений мінімумом 0.75×.
-
Снорк / Кіт / Тушкан / Плоть — 60–65%.
-
Зомбі (мутант) — 45%.
16 видів мутантів використовують індивідуальне зміщення висоти очей (від 0.25 м у тушкана до 1.70 м у контролера) для точного розрахунку вертикального кута та променів.
Сліпі пси, псевдособаки та псі-собаки виявляють гравця за запахом — трава, час доби та дощ на них не впливають.
Радіус виявлення пострілів
Після пострілу стелс у траві блокується на 3 секунди для кожного ворога в радіусі чутності. NPC, які були стривожені пострілом, зберігають свій стан настороженості після закінчення 3-секундного вікна — мод не поверне їх миттєво в режим стелсу. Постріли в місцях, де поруч немає ворогів, не порушують маскування.
-
Вал / Вінторєз / ВСК-94 (дозвуковий 9×39) — 5 м — завжди тихо, наявність глушника не має значення.
-
Пістолет + глушник — 10 м.
-
ПП (пістолет-кулемет) + глушник — 15 м.
-
Снайперська гвинтівка + глушник — 30 м.
-
Автомат + глушник — 40 м (надзвуковий хлопок усе одно чутно).
-
Пістолет без глушника — 60 м.
-
ПП без глушника / Рушниця — 80 м (глушник для рушниці не дає ефекту).
-
Автомат без глушника — 100 м.
-
Снайперська гвинтівка без глушника — 120 м.
-
Увімкнути мод (Enable mod) — головний перемикач увімк./вимк. [За замовчуванням: Увімк.]
-
Показувати повідомлення (Show messages) — на HUD виводиться реальна ймовірність виявлення (зібрана з усіх 7 факторів системи) [За замовчуванням: Увімк.]
-
Макс. дистанція (Max distance) — максимальна дальність дії стелсу [За замовчуванням: 80 м]
-
Множник трави (Grass multiplier) — базовий множник видимості, коли персонаж сидить нерухомо [За замовчуванням: 0.04]
-
Мін. висота трави (Min grass height) — нижче цього значення трава не дає укриття (нічний режим обходить це налаштування) [За замовчуванням: 0.7]
-
Поріг голої поверхні (Bare surface threshold) — значення popcount, на рівні або нижче якого поверхня вважається голою [За замовчуванням: 8, діапазон 0–20]
-
Поріг середньої густоти (Medium density threshold) — межа між густою та середньою травою [За замовчуванням: 0.55]
-
Поріг високої густоти (Dense density threshold) — межа між середньою та рідкою травою [За замовчуванням: 0.35]
-
Бонус положення лежачи (Prone bonus) — додатковий множник стелсу в положенні лежачи порівняно з присіданням [За замовчуванням: 0.5]
-
Тривалість пам'яті (Memory duration) — скільки часу NPC пам'ятає, що помітив гравця [За замовчуванням: 15 с, діапазон 5–60 с]
-
Множник дощу (Rain multiplier) — наскільки дощ знижує виявлення [За замовчуванням: 0.5]
-
Нічний стелс (Night stealth) — увімкнути стелс уночі навіть без трави [За замовчуванням: Увімк.]
-
Нічний множник (Night multiplier) — множник виявлення в нічний час [За замовчуванням: 0.15]
-
Масштаб мін. дистанції (Min-distance scale) — глобальний коефіцієнт для мінімальних дистанцій виявлення всіх угруповань.
-
Чутливість військових (Military sensitivity) — множник шансу виявлення для військових угруповань (Армія/Долг/Моноліт).
-
Чутливість сталкерів (Stalker sensitivity) — множник шансу виявлення для звичайних сталкерських угруповань.
-
Чутливість мутантів (Mutant sensitivity) — множник шансу виявлення для всіх типів мутантів.
-
Лог відладки (Debug log) — увімкнення логування виявлення для кожного NPC без необхідності редагувати скрипт [За замовчуванням: Вимк.]
Вимоги
-
S.T.A.L.K.E.R. Anomaly 1.5.2 (прим. автора: у шапці вказано 1.5.3, встановлюйте на актуальну версію)
-
Stealth 2.31 — обов'язкова база
-
MCM (Mod Configuration Menu)
-
Mod Organizer 2
Інструкція
-
Завантажте архів.
-
В MO2 натисніть «Встановити новий мод з архіву» (Install a new mod from an archive) та виберіть файл.
-
Натисніть «Встановити» (Install) в інсталяторі.
-
Активуйте мод в MO2.
-
Налаштуйте порядок завантаження в самому низу, суворо в такій послідовності:
-
Stealth 2.31— передостанній -
Stealth Grass Extension V2— останній
-
-
Налаштуйте параметри в грі через меню: MCM → Grass Stealth.
Сумісність
-
Stealth 2.31— повна сумісність, створено як пряме доповнення. -
Не замінює і не змінює жодних файлів із Stealth 2.31 або оригінальної Anomaly.
-
Моди, які змінюють систему видимості NPC — розміщуйте перед цим модом у порядку завантаження.
Правила використання (Політика авторів)
Використання будь-якої частини цього моду в публічних релізах, інших модифікаціях або похідних роботах вимагає письмової згоди автора. Не поширюйте, не перепаковуйте та не додавайте ресурси чи код моду без попереднього зв'язку зі мною.
Телеграм
Усі запитання, будь ласка, надсилайте в Телеграм. Я не маю змоги читати та відповідати на кожен коментар тут. Дякую за розуміння! 🙏
ЗАВАНТАЖИТИ:
Список змін (Changelog)
v2.1
-
[FIX] Мінімальна дистанція виявлення тепер залежить від угруповання, а не є фіксованою нижньою межею в 3 метри. При 3 метрах гравець був невидимим на відстані витягнутої руки в умовах ночі/туману. Нова межа = 50% від базової денної дистанції угруповання (армія — 7.5 м, долг/моноліт — 6.5 м, сталкери/бандити — 6 м, зомбі — 3 м). Ця межа ігнорує всі погодні та нічні множники.
-
[FIX] Примусовий стелс
FORCE STEALTH(NPC повернутий спиною до гравця на мін. дистанції) тепер коректно встановлюєstealth_active, завдяки чому патч VMM пригнічує накопичення візуальної пам'яті. Раніше рушій продовжував накопичувати візуальну пам'ять під час примусового стелсу, і зрештою NPC все одно помічав гравця. -
[FIX] Функція
npc_on_net_destroyтепер очищуєdetected_npcsтаrnd_cache. При переході між локаціями NPC переходять в офлайн, не вмираючи — застаріла пам'ять виявлення успадковувалася новими NPC, які отримували той самий ID на наступній локації. -
[FIX] Блок абсолютного виявлення
FORCE DETECTтепер виконується перед перевіркою мін. дистанції, тому він спрацьовує навіть тоді, коли нічний штраф зменшує мін. дистанцію нижче абсолютної межі. -
[NEW] Функція
set_fired()позначає всіх ворогів у радіусі звуку зброї як таких, що «почули постріл». Після закінчення 3-секундного вікна блокування стелсу мод не буде повертати цих стривожених NPC у стан прихованості. -
[CHG] HUD-повідомлення тепер показує реальну ймовірність виявлення (
see_chance × 100%) замість сирої густоти трави. Значенняsee_chanceоб'єднує всі 7 факторів системи: угруповання, множник трави, вертикальний кут, промені укриття, пильність, напрямок погляду, дистанція. -
[CHG] Базове значення
BARE_SURFACE_POPCOUNTзбільшено з 3 до 8. Декоративна трава, розміщена на асфальті погодними або графічними модами (popcount 4–6), більше не активує стелс. Справжня трава в полі (popcount 15–25) залишилася без змін. Діапазон повзунка в MCM розширено до 0–20.
v2.02
-
[NEW] Пильність NPC — сплячі, п'яні та зайняті їжею NPC тепер значно менш уважні.
-
[NEW] Напрямок погляду — сталкери, які стоять спиною або боком до гравця, помічають його значно гірше; спиною до гравця = 10% від нормального шансу виявлення.
-
[NEW] Слайдери чутливості в MCM для кожної групи угруповань (військові / сталкери / мутанти).
-
[NEW] Слайдер масштабу мін. дистанції в MCM — глобальний коефіцієнт для мінімальних дистанцій виявлення всіх угруповань.
-
[NEW] Перемикач логу відладки в MCM — увімкнення логування виявлення для кожного NPC без необхідності редагувати скрипт.
v2.0.1
-
[FIX] Виліт у скрипті
light_gem.script— спроба індексувати полеstealth_light_indна непатчених версіях Stealth 2.31.
