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 та ін.) вдвічі зменшує множник виявлення при стрільбі.
Кожна фракція має власний базовий шанс виявлення: Армія та Моноліт — найбільш пильні, Зомбі — практично сліпі.
Якщо NPC засік гравця, він «пам'ятає» виявлення протягом 15 секунд (MEMORY_DURATION), запобігаючи спаму.
Увімкнений ліхтар або детектор-прожектор повністю вимикає бонус маскування.
Якщо ворог не дивиться у бік гравця (dot product < 0.3), виявлення неможливе навіть впритул.
r__detail_height. Якщо трава вимкнена або менша за поріг (за замовч. 0.9) — маскування в рослинності не спрацює.
| Параметр 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 | Множник виявлення вночі (без трави) |
* Значення множаться на часовий фактор (×0.45 вночі, ×0.70 в сутінках) та дощовий фактор (×rain_factor × RAIN_MULT).
* Мутанти не залежать від часового та дощового факторів — використовуються фіксовані значення.
Перевіряється: гравець живий, присів (mcCrouch), мод увімкнений.
Якщо активний ліхтар, або після пострілу/удару ближнім боєм менш ніж 3 секунди — стелс вимикається (mult = nil).
Якщо ворог ближче за min_detect_dist (залежить від фракції, часу, погоди) і дивиться у бік гравця — виявлення форсується. Якщо не дивиться — ні.
Якщо трава ≥ MIN_GRASS_HEIGHT: застосовується GRASS_MULT (×0.5 з глушником). Якщо ніч і NIGHT_ENABLED: NIGHT_MULT. Інакше — стелс не діє.
see_chance = base_chance × time_factor × (1 - rain_reduction) × mult × dist_factor²
Кешований random (оновлюється раз на секунду). Якщо rnd < see_chance — NPC «бачить», записується в detected_npcs на 15 сек. Інакше — flags.result = false.
visual_memory_manager.get_crouch_mult перезаписується під час першого оновлення актора для синхронізації з внутрішнім пам'ятю ворога.
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).
The mod reads r__detail_height from the engine. If the grass is below the threshold, vegetation stealth is disabled.
Between 21:00–06:00, a separate NIGHT_MULT dramatically reduces detection chance even in open terrain.
During rain or foggy weather presets, the minimum detection distance is reduced to 35% of normal.
Weapons with effective suppressors (VSS, VAL, VSK-94, etc.) halve the detection multiplier when firing.
Each faction has its own base detection chance: Army and Monolith are the most vigilant; Zombies are practically blind.
Once an NPC detects the player, it "remembers" for 15 seconds (MEMORY_DURATION), preventing detection spam.
Any active light source (slot 10 torch or flashlight detector) completely disables the concealment bonus.
If the enemy is not facing the player (dot product < 0.3), detection is impossible even at point-blank range.
r__detail_height value. If grass is disabled or below threshold (default 0.9), vegetation concealment won't work.
| 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) |
* Values are multiplied by time factor (×0.45 at night, ×0.70 at dusk/dawn) and rain factor (×rain_factor × RAIN_MULT).
* Mutants use fixed values and are not affected by time or rain factors.
Checks: player alive, crouching (mcCrouch), mod enabled.
If torch is active, or less than 3 seconds since a shot or melee hit — stealth is disabled (mult = nil).
If enemy is closer than min_detect_dist (depends on faction, time, weather) and facing the player — detection is forced. If not facing — impossible.
If grass ≥ MIN_GRASS_HEIGHT: apply GRASS_MULT (×0.5 with suppressor). If night and NIGHT_ENABLED: NIGHT_MULT. Otherwise — no stealth.
see_chance = base_chance × time_factor × (1 - rain_reduction) × mult × dist_factor²
Cached random (refreshed every second). If rnd < see_chance — NPC "sees", logged in detected_npcs for 15s. Otherwise — flags.result = false.
visual_memory_manager.get_crouch_mult is monkey-patched on first actor update to sync with internal enemy memory.