Grass Stealth Mod

Grass Stealth

Vegetation Concealment System
MCM Edition · v1.0 · Ivan Danko
🇺🇦Українська
🇬🇧English

Про мод

Grass Stealth — реалістична система маскування в рослинності для S.T.A.L.K.E.R. Anomaly. Мод переосмислює механіку виявлення ворогами, прив'язуючи стелс-можливості гравця до реальної висоти трави на поточній локації.

Присів у густій рослинності — ти невидимий. Сховався вночі під кущем із глушником — шанси виявлення падають майже до нуля. Виліз на відкрите поле удень — жодного захисту. Поведінка ворогів стає передбачуваною, логічною та залежною від умов.

Усі параметри гнучко налаштовуються через MCM (Mod Configuration Menu) безпосередньо в грі.

Можливості

🌿

Реальна висота трави

Мод зчитує r__detail_height з рушія. Якщо трава нижча порогу — стелс у рослинності не діє.

🌙

Нічна невидимість

Вночі (21:00–06:00) окремий множник NIGHT_MULT значно знижує шанс виявлення навіть на відкритій місцевості.

🌧

Дощ та туман

При дощі або тумані мінімальна дистанція виявлення скорочується до 35% від стандартної.

🔇

Система глушника

Зброя з ефективним глушником (VSS, Val, ВСК-94 та ін.) вдвічі зменшує множник виявлення при стрільбі.

🎯

Фракційний AI

Кожна фракція має власний базовий шанс виявлення: Армія та Моноліт — найбільш пильні, Зомбі — практично сліпі.

🧠

Пам'ять ворога

Якщо NPC засік гравця, він «пам'ятає» виявлення протягом 15 секунд (MEMORY_DURATION), запобігаючи спаму.

🔦

Ліхтар скасовує стелс

Увімкнений ліхтар або детектор-прожектор повністю вимикає бонус маскування.

📐

Кут огляду NPC

Якщо ворог не дивиться у бік гравця (dot product < 0.3), виявлення неможливе навіть впритул.

Як грати зі стелсом

Стелс діє тільки в присяді (клавіша Ctrl). У повний зріст мод не застосовується незалежно від умов.
  • 1 Перевір висоту трави в налаштуваннях графіки. Мод читає реальне значення r__detail_height. Якщо трава вимкнена або менша за поріг (за замовч. 0.9) — маскування в рослинності не спрацює.
  • 2 Вимикай ліхтар. Будь-яке активне джерело світла (ліхтар у слоті 10 або прожектор-детектор) миттєво скасовує весь стелс-бонус.
  • 3 Використовуй глушник. ВСС, ВАЛ, ВСК-94, пістолети та SMG з глушником дають додатковий ×0.5 до шансу виявлення при стрільбі. Дробовики та гвинтівки з глушником не дають бонусу — рушій це не підтримує.
  • 4 Стеж за часом доби. Вночі шанс виявлення мінімальний навіть на відкритому місці (NIGHT_MULT = 0.15). Плануй вилазки під ніч.
  • 5 Чекай на дощ чи туман. Погані умови видимості скорочують дистанцію реагування ворогів до 35%. Ідеальний час для пересування по відкритій місцевості.
  • 6 Не стріляй ближнім боєм. Будь-який удар зброєю ближнього бою встановлює кулдаун 3 секунди — стелс тимчасово вимикається.
  • 7 Враховуй фракцію ворога. Зомбі (шанс 15%), бандити та ренегати (25%) — найлегші цілі. Армія, Монолит, Борг (40%) — максимально пильні. Грай відповідно.
  • 8 Підлаштуй параметри під себе через MCM. Зайди в головне меню → Mod Configuration Menu → Grass Stealth і відрегулюй чутливість, дистанцію та нічний режим під власний стиль гри.

Технічні характеристики

Параметр MCM Тип / Діапазон За замовч. Опис
enabled bool true Вмикає/вимикає мод повністю
show_messages bool true Показувати попередження HUD коли стелс неактивний
max_distance float · 20–150 · крок 5 80.0 Максимальна дистанція впливу стелсу (м)
grass_mult float · 0–1 · крок 0.01 0.04 Базовий множник шансу виявлення в траві
min_grass_height float · 0.1–2.0 · крок 0.05 0.9 Мінімальна висота трави для активації стелсу
rain_mult float · 0–1 · крок 0.05 0.5 Зменшення виявлення при дощі (×rain_factor)
night_enabled bool true Нічний режим стелсу
night_mult float · 0–1 · крок 0.01 0.15 Множник виявлення вночі (без трави)

Шанси виявлення NPC вдень / ясно

Зомбі 15%
Бандит 25%
Ренегат 25%
Сталкер 30%
Свобода 30%
ЧН 30%
Еколог 30%
ЗСС / GReh35%
Кілер 35%
ІСГ 35%
Армія 40%
Борг 40%
Моноліт 40%

* Значення множаться на часовий фактор (×0.45 вночі, ×0.70 в сутінках) та дощовий фактор (×rain_factor × RAIN_MULT).

Шанс виявлення мутантами

Полтергейст98%
Контролер 95%
Псисакер 90%
Фрактура 88%
Кровосос 85%
Пси-собака80%
Химера 80%
Кабан 75%
Бюрер 75%
Карлик 70%
Пес / псевдопес70%
М'ясник 65%
Тушкан 65%
Снорк 60%
Кіт 60%
Зомбі (моб)45%

* Мутанти не залежать від часового та дощового факторів — використовуються фіксовані значення.

Логічний ланцюжок виявлення

1. Передумови

Перевіряється: гравець живий, присів (mcCrouch), мод увімкнений.

2. Блокери стелсу

Якщо активний ліхтар, або після пострілу/удару ближнім боєм менш ніж 3 секунди — стелс вимикається (mult = nil).

3. Мінімальна дистанція

Якщо ворог ближче за min_detect_dist (залежить від фракції, часу, погоди) і дивиться у бік гравця — виявлення форсується. Якщо не дивиться — ні.

4. Висота трави / Ніч

Якщо трава ≥ MIN_GRASS_HEIGHT: застосовується GRASS_MULT (×0.5 з глушником). Якщо ніч і NIGHT_ENABLED: NIGHT_MULT. Інакше — стелс не діє.

5. Розрахунок шансу

see_chance = base_chance × time_factor × (1 - rain_reduction) × mult × dist_factor²

6. Кидок кубика

Кешований random (оновлюється раз на секунду). Якщо rnd < see_chance — NPC «бачить», записується в detected_npcs на 15 сек. Інакше — flags.result = false.

7. Патч VMM

visual_memory_manager.get_crouch_mult перезаписується під час першого оновлення актора для синхронізації з внутрішнім пам'ятю ворога.

Інтеграція з рушієм

RegisterScriptCallback("on_enemy_eval", on_enemy_eval) RegisterScriptCallback("npc_on_death_callback", npc_on_death_callback) RegisterScriptCallback("npc_on_hit_callback", npc_on_hit_callback) RegisterScriptCallback("actor_on_weapon_fired", actor_on_weapon_fired) RegisterScriptCallback("on_option_change", on_option_change) -- actor_on_first_update: одноразовий патч visual_memory_manager

About the Mod

Grass Stealth is a realistic vegetation concealment system for S.T.A.L.K.E.R. Anomaly. It reworks enemy detection mechanics by tying the player's stealth capabilities to the actual grass height of the current level.

Crouch in tall vegetation — you become nearly invisible. Hide at night with a suppressed weapon — detection odds drop to near zero. Walk into an open field at noon — no cover at all. Enemy behavior becomes predictable, logical, and condition-aware.

All parameters are fully configurable in-game via MCM (Mod Configuration Menu).

Features

🌿

Real Grass Height

The mod reads r__detail_height from the engine. If the grass is below the threshold, vegetation stealth is disabled.

🌙

Night Concealment

Between 21:00–06:00, a separate NIGHT_MULT dramatically reduces detection chance even in open terrain.

🌧

Rain & Fog

During rain or foggy weather presets, the minimum detection distance is reduced to 35% of normal.

🔇

Suppressor System

Weapons with effective suppressors (VSS, VAL, VSK-94, etc.) halve the detection multiplier when firing.

🎯

Faction-Based AI

Each faction has its own base detection chance: Army and Monolith are the most vigilant; Zombies are practically blind.

🧠

Enemy Memory

Once an NPC detects the player, it "remembers" for 15 seconds (MEMORY_DURATION), preventing detection spam.

🔦

Torch Cancels Stealth

Any active light source (slot 10 torch or flashlight detector) completely disables the concealment bonus.

📐

NPC Field of View

If the enemy is not facing the player (dot product < 0.3), detection is impossible even at point-blank range.

How to Use Stealth

Stealth only works while crouching (Ctrl key). Standing up disables all bonuses regardless of conditions.
  • 1 Check your grass height settings. The mod reads the actual r__detail_height value. If grass is disabled or below threshold (default 0.9), vegetation concealment won't work.
  • 2 Turn off your torch. Any active light source (slot 10 flashlight or flashlight-detector) instantly cancels all stealth bonuses.
  • 3 Use a suppressor. VSS, VAL, VSK-94, pistols, and SMGs with suppressors give an additional ×0.5 detection multiplier when firing. Shotguns and rifles with suppressors don't get this bonus — engine limitation.
  • 4 Mind the time of day. At night the detection chance is minimal even in the open (NIGHT_MULT = 0.15). Plan your runs after dark.
  • 5 Wait for rain or fog. Poor visibility conditions shrink enemy reaction distance to 35%. Perfect for crossing open terrain.
  • 6 Avoid melee attacks. Any melee hit sets a 3-second cooldown — stealth is temporarily disabled.
  • 7 Know your enemy faction. Zombies (15%), bandits and renegades (25%) — easiest targets. Army, Monolith, Duty (40%) — maximum alertness. Play accordingly.
  • 8 Customize via MCM. Main menu → Mod Configuration Menu → Grass Stealth — tweak sensitivity, range, and night mode to your playstyle.

Technical Specifications

MCM Parameter Type / Range Default Description
enabled bool true Master on/off switch for the mod
show_messages bool true Show HUD warning when stealth is inactive
max_distance float · 20–150 · step 5 80.0 Maximum distance at which stealth affects detection (m)
grass_mult float · 0–1 · step 0.01 0.04 Base detection chance multiplier in vegetation
min_grass_height float · 0.1–2.0 · step 0.05 0.9 Minimum grass height required to activate stealth
rain_mult float · 0–1 · step 0.05 0.5 Detection reduction during rain (×rain_factor)
night_enabled bool true Enable night stealth mode
night_mult float · 0–1 · step 0.01 0.15 Detection multiplier at night (no grass needed)

NPC Detection Chances Day / Clear

Zombie 15%
Bandit 25%
Renegade 25%
Stalker 30%
Freedom 30%
Clear Sky 30%
Ecologist 30%
GREH / ZSS35%
Killer 35%
ISG 35%
Army 40%
Duty 40%
Monolith 40%

* Values are multiplied by time factor (×0.45 at night, ×0.70 at dusk/dawn) and rain factor (×rain_factor × RAIN_MULT).

Mutant Detection Chances

Poltergeist98%
Controller95%
Psy-sucker90%
Fracture 88%
Bloodsucker85%
Psy-dog 80%
Chimera 80%
Boar 75%
Burer 75%
Karlik 70%
Dog / Pseudodog70%
Flesh 65%
Tushkano 65%
Snork 60%
Cat 60%
Zombie (mob)45%

* Mutants use fixed values and are not affected by time or rain factors.

Detection Logic Chain

1. Prerequisites

Checks: player alive, crouching (mcCrouch), mod enabled.

2. Stealth Blockers

If torch is active, or less than 3 seconds since a shot or melee hit — stealth is disabled (mult = nil).

3. Minimum Detection Distance

If enemy is closer than min_detect_dist (depends on faction, time, weather) and facing the player — detection is forced. If not facing — impossible.

4. Grass Height / Night

If grass ≥ MIN_GRASS_HEIGHT: apply GRASS_MULT (×0.5 with suppressor). If night and NIGHT_ENABLED: NIGHT_MULT. Otherwise — no stealth.

5. Chance Calculation

see_chance = base_chance × time_factor × (1 - rain_reduction) × mult × dist_factor²

6. Dice Roll

Cached random (refreshed every second). If rnd < see_chance — NPC "sees", logged in detected_npcs for 15s. Otherwise — flags.result = false.

7. VMM Patch

visual_memory_manager.get_crouch_mult is monkey-patched on first actor update to sync with internal enemy memory.

Engine Integration

RegisterScriptCallback("on_enemy_eval", on_enemy_eval) RegisterScriptCallback("npc_on_death_callback", npc_on_death_callback) RegisterScriptCallback("npc_on_hit_callback", npc_on_hit_callback) RegisterScriptCallback("actor_on_weapon_fired", actor_on_weapon_fired) RegisterScriptCallback("on_option_change", on_option_change) -- actor_on_first_update: one-time patch of visual_memory_manager