заменяет стандартный, идеально подходящий для видеоигр искусственный интеллект реалистичными боями на выживание. Неигровые персонажи вступают в бой в агрессивной рукопашной схватке, в отчаянии хватаются за огнестрельное оружие под давлением, отслеживают физические боеприпасы и впадают в панику или убегают, получив серьезные ранения, — чтобы восстановиться и вернуться в бой
https://www.nexusmods.com/fallout4/mods/108585
Wasteland Desperation (Immersive NPC Combat Morale Overhaul) динамически меняет боевую систему Fallout 4, заставляя гуманоидных неигровых персонажей вести себя в бою отчаянно и непредсказуемо. Вместо статичных перестрелок на дальних дистанциях неигровые персонажи динамически переключаются между тактикой ближнего боя, восстановлением здоровья, подрывом боевого духа и отчаянными перестрелками на последнем рубеже по мере того, как их здоровье падает, а боеприпасы заканчиваются.
Архитектура основной системы
1. Автоматический радиальный радар (цикл сканирования)
-
Радиус сканирования:
4096.0единицы измерения (примерно 64 метра / стандартный диапазон обработки ячеек вокруг игрока).
-
Частота сканирования: Выполняется каждый раз
1.0вторая секунда в автоматическом цикле по таймеру (
ScanTimerID = 3001).
-
Целевой фильтр: находит все ближайшие объекты с
ActorTypeNPCключевое слово и фильтры для допустимых целей:
-
Исключает: игрока, мертвых актеров, не отрендеренных/не загруженных актеров (
!Is3DLoaded()), актеров, которыми управляют/которых призывают, а также актеров, которые в данный момент заблокированы в сюжетных сценах (
IsInScene()).
-
Допустимые расы: действует только на людей, гулей и пользователей силовой брони (
HumanRace,
GhoulRace,
PowerArmorRace).
-
Боевое состояние: действует только на неигровых персонажей, которые активно участвуют в бою (
IsInCombat()).
-
Поведенческие и механические сбои
Часть 1: Динамическая система восстановления морального духа и здоровья
Скрипт непрерывно отслеживает текущий процент здоровья цели и динамически изменяет их значение уверенности в действии (
ConfidenceAV
) наряду с применением небольших показателей восстановления здоровья:
- 100 % здоровья (только что вступили в бой):
- Неигровой персонаж получает MoraleTrackedKeyword для отслеживания состояния обработки.
- Стойка уверенности: случайным образом устанавливается на 3 (безрассудная) или 4 (безудержная/храбрая). Они сражаются агрессивно, не отступая.
- 75–99 % здоровья (незначительные повреждения):
-
Стойка уверенности: устанавливается на 2 (средняя уверенность).
-
Восстанавливающий тик: мгновенно восстанавливает
2.0до
5.0единиц здоровья за такт.
-
- От 50% до 74% здоровья (среднее ранение):
-
Стойка уверенности: установлено значение 1 (осторожность). NPC начинает чаще прятаться и избегать прямых атак.
-
Восстанавливающий тик: мгновенно восстанавливает
2.0до
5.0единиц здоровья за такт.
-
- Ниже 50 % здоровья (критическое ранение):
-
Стойка уверенности: установлено значение 0 (трусость). Неигровой персонаж нарушает строй, впадает в панику и пытается сбежать или скрыться из поля зрения.
-
Тик регенерации: мгновенно восстанавливает
2.0до
5.0единиц здоровья за такт.
-
Часть 2: Динамическое вооружение и смена стиля боя
Сценарий управляет переходом оружия в два различных рабочих состояния:
Фаза 1: Начальный бросок (первое обнаружение)
-
Когда необработанный неигровой персонаж вступает в бой, ему присваивается Обработанное ключевое слово.
-
Перезапись боевого стиля: их боевой стиль по умолчанию заменяется случайно выбранным стилем ближнего боя (например, «Рейдер» — ближний бой с полным набором атак, «Силовая броня» — ближний бой или «Высокая защита» — ближний бой).
-
Принудительная замена оружия: экипированное оружие дальнего боя бесшумно снимается, а в руки персонажа принудительно добавляется случайное оружие ближнего боя из
MeleeWeaponsList(
EquipItem(..., true, true)).
Фаза 2: Отчаянный переход (ниже 75% HP)
-
Как только уровень здоровья обработанного NPC ближнего боя падает ниже 75%, срабатывает скрипт
RestoreRangedCombat():
-
Изменение стиля боя: Меняет их стиль на случайный стиль боя на дальней дистанции, выбранный из 17 различных профилей ванили и DLC (от стилей стрелка, BoS Power Armor и Courser до вариаций Raider на дальней дистанции).
-
Предоставление оружия и боеприпасов: Снимает с них оружие ближнего боя, выбирает случайное оружие из списка
RangedWeaponsList, добавляет
12Для
37патронов соответствующего типа (
gunAmmo) и снаряжает огнестрельное оружие.
-
Маркировка: помечает актера с помощью восстановленного ключевого слова.
-
Фаза 3: Запасной вариант с израсходованными боеприпасами
-
Для персонажей с тегом RestoredKeyword скрипт отслеживает количество боеприпасов в их оружии в режиме реального времени.
-
Если количество боеприпасов в основном оружии достигает
0, скрипт мгновенно меняет стиль боя на случайный стиль ближнего боя, заставляя персонажа использовать рукопашный бой или тактику ближнего боя, как только его огнестрельное оружие разрядится.
Часть 3: Переоценка пакета искусственного интеллекта
В конце каждого цикла обработки скрипт вызывает
target.EvaluatePackage()
. Это заставляет встроенный в Fallout 4 механизм искусственного интеллекта немедленно отказаться от текущего дерева поиска пути/поведения и мгновенно пересчитать действия на основе обновленного боевого стиля, оружия и уровня уверенности.
Краткое описание хода выполнения сценария
| Состояние NPC | Предпринятое действие | Стиль боя |
|---|---|---|
| Впервые встреченный в бою | Вооружитесь случайным оружием ближнего боя, добавьте |
ProcessedKeyword
| Случайный стиль ближнего боя | ||
|---|---|---|
| HP = 100% | Уверенность установлена на 3 или 4 (агрессивный) | Текущий (ближний бой) |
| HP падает ниже 75% | Восстановить оружие + добавить 12-37 патронов, добавить |
RestoredKeyword
| Стиль случайного боя (1 из 17) | ||
|---|---|---|
| HP 50% – 74% | Уверенность установлена на 1 (Осторожность) + Исцеление 2-5 HP | Текущий (дальнобойный) |
| HP < 50% | Уверенность установлена на 0 (Трусость / Бегство) + Исцеление 2-5 HP | Текущий (дальнобойный) |
| Боеприпасы заканчиваются | Принудительно вернуться в стойку ближнего боя | Случайный стиль ближнего боя |
