Дальше подробный разбор, который объясняет это более подробно и по сути не важен.
Что это мод делает? Возможно, вы уже сталкивались с такой проблемой много раз: враг, который был очень далеко от вас, все еще находится в бою или с враждебным состоянием к вами, застрял в боевом состоянии и не может прекратить это. Если вас раздражает эта проблема и вы ищете способ ее решить, то этот плагин SKSE предназначен для ее исправления. Этот плагин улучшит механизм побега\остановки, чтоб устранить необоснованное агро противника на сверхдальних дистанциях и вносит в игровой процесс более разумный механизм остановки боя.
Как это работает? Пока игрок убегает от врага и перемещается между клетками игры. Каждый раз, когда запускается событие передачи ячейки, этот плагин будет проверять ситуации всех текущих боевых врагов, отображаемых на компасе, и проверять, соответствуют ли они условиям ниже, чтобы остановить бой:
(1) Для врага во внешних камерах: Плагин рассчитает расстояние между игроком и противником. Если расстояние превышает «Максимальное расстояние аггро» (значение может быть изменено в файле INI), то плагин немедленно остановит боевое состояние этого врага. Когда игрок и враг находятся снаружи, расстояние будет прямо равно расстоянию между их позициями в 3D-координатах. Для внутреннего игрока и внешнего врага расстояние будет равно расстоянию игрока до внешней двери портала плюс расстояние врага до внутренней двери портала.
(2) Для врага во внутренних помещениях: Поскольку в настоящее время автор не может найти способ установить надежное расстояние между игроком и внутренним противником (необходимо более глубоко изучить исходный код игрового движка), поэтому в настоящее время он использует другой метод обнаружения для проверки: Путем проверки, совпадает ли внутренняя ячейка этого врага с ячейкой игрока или рядом с текущей ячейкой игрока. Если оба условия не совпадают, плагин будет считать, что этот противник находится за пределами аггро-дистанции, и немедленно остановит боевое состояние. Функция, которую тут используют, чтобы остановить текущее боевое состояние врага, почти такая же, как консольная команда "StopCombat", поэтому она должна быть безопасной и не вызывать плохих побочных эффектов.
Настройки файла INI:
Вы можете найти INI-файл в "Data\SKSE\Plugins\MaxsuCombatEscape.ini".
"EnableDebugMessage" может включить распечатку отладочного сообщения плагинов, включение этой опции приведет к снижению производительности, следует включать только в том случае, если она вам действительно нужна. "MaximumLoadedExteriorDistance" максимальное расстояние для начала боя между игроком и противником, который находится в загруженной внешней ячейке, враг за пределами этого боевого расстояния немедленно прекращает бой. "MaximumUnLoadedExteriorDistance" максимальное расстояние начала боя между игроком и противником, находящимся в незагруженной внешней ячейке. Враг, находящийся за пределами этого боевого расстояния, немедленно прекратит бой.
Если вы считаете, что дистанция вызова вражеского боевого агро слишком велика, вы можете уменьшить эти два значения, пока не будете удовлетворены.
Ограничения и проблемы:
1. Поскольку функции плагина срабатывают только при переходе игрока между ячейками, вам нужно постоянно двигаться, чтобы избавиться от состояния боя. Функции плагина не будут работать, если вы останетесь в ячейке.
2. Поскольку в настоящее время автор не может определить надежное расстояние до внутреннего врага, он использовал специальный метод, который упоминался выше. Это может вызвать проблему, заключающуюся в том, что внутренний враг, который находится на расстоянии нескольких ячеек от игрока, всегда будет останавливать свое боевое состояние, даже если их реальное расстояние не очень далеко. Эта проблема может быть решена в будущем, когда кто-то раскопает исходный код, связанный с расчетом внутреннего расстояния, из игрового движка.