Wasteland Desperation (Immersive NPC Combat Morale Overhaul)


заменяет стандартный, идеально подходящий для видеоигр искусственный интеллект реалистичными боями на выживание. Неигровые персонажи вступают в бой в агрессивной рукопашной схватке, в отчаянии хватаются за огнестрельное оружие под давлением, отслеживают физические боеприпасы и впадают в панику или убегают, получив серьезные ранения, — чтобы восстановиться и вернуться в бой
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 Текущий (дальнобойный)
Боеприпасы заканчиваются Принудительно вернуться в стойку ближнего боя Случайный стиль ближнего боя