Морроувинд — игра с огромным, детально прописанным и интересным миром. Её модостроителный потенциал огромен, а сообщество поклонников большое и преуспевающее. К сожалению, игра полна багов. Этот патч — наша попытка победить худшие из них, включая порчу сохранённых игр, заключённых в коде игры. А также мы попытались добавить несколько новых функций, о которых давно мечтали преданные фанаты.
Качайте не задумываясь, ибо это шедевр среди фиксов — никакой другой не исправит то, что исправляет этот.
Список вносимых исправлений с подробнейшим описанием доступен после запуска патча.
28.11.2015 — Добавлена следующая версия — 2.2.
26.09.2017 — Добавлена следующая версия — 2.4
Новое в версии 2.4
Новое в версии 2.4 по сравнению с 2.2:
— Новый графический интерфейс патча. Новый макет с совместимостью DPI масштабирования. Весь текст патча теперь в формате json для перевода.
— 4GB патч. Интегрирован в процесс установки.
[*] Пересмотр замедления падения
Исправляет зависимость замедленного падения от FPS и вводит вычисляемую величину ущерба от него. Скорость замедления падения сейчас варьируется по большей части на основе вашего FPS, и дело не столь во внешнем виде, сколь в избежании урона от падения.
Сейчас с 10-ю пунктами заклинания можно избежать урона только от коротких прыжков, с 15-ю пунктами смягчится 80% урона от длинных прыжков и коротких падений, а с 20-ю пунктами урона не будет вовсе. Сравните: стандартное заклинание и зачарование — это 30 пунктов. Скорость замедленного падения теперь скорректирована, так что вы не будете сильно замедляться до, по крайней мере, 50 пунктов.
Горизонтальное сопротивление воздуха от эффекта уменьшено до 5% от оригинала, чтобы персонаж мог планировать, но помните, что оно все еще увеличивается высокоуровневыми заклинаниями.
Данный фикс, несмотря на исправление ошибки частоты кадров, не является обязательным, так как некоторые могут использовать низкоуровневые заклинания замедления падения для отыгрыша персонажей. Раньше заклинание замедленного падения с величиной в один пункт было распространенным способом избежать урона от падения, теперь это больше не работает .
Возможны побочные эффекты для плагинов, реализующих верховую езду. Попробуйте отключить данную опцию, если у вас возникли проблемы с существом для передвижения.
[*] Компаньоны защищаются без промедления
Следующие за игроком NPC и призванные существа станут атаковать врага как только битва начнется, не ожидая, пока тот нанесёт первый удар.
Несмотря на значительное улучшение поведения, возрастает опасность того, что сопровождающие вас существа или NPC погонятся за противником, находящимся на большом отдалении, либо вблизи опасных мест, таких, как лава. Теперь за сопровождаемыми NPC стоит следить внимательней.
[*] Снимаем с тетивы
Позволяет снять стрелу или болт с натянутой тетивы нажатием клавиши «Приготовить оружие».
[*] Здоровый аппетит
Употребление ингредиентов (даже бриллиантов) теперь всегда успешно и вызывает первый по списку эффект, а также повышение навыка.
Это позволяет еде и простым ингредиентам приносить пользу любому персонажу.
[*] Двуручное оружие убирает щит
Щит деэкипируется во время использования двуручного оружия. Вы больше не сможете получать очки защиты от щита пока обе руки заняты.
[*] Модели и иконки зелий зависят от их качества
Изменяет алхимию так, что собственноручно созданные зелья будут получать модели и иконки на основе их качества, а не случайным образом. Выбор основан на базовой силе зелья, большей частью определяемой вашим навыком алхимии. Базовую силу можно вычислить, проанализировав цену зелья (предполагается, что никакие плагины её не меняют).
Условно зелья делятся по качеству следующим образом:
Уценённое … 0−30 зол.
Дешёвое … 30−60 зол.
Стандартное … 60−90 зол.
Качественное … 90−120 зол.
Эксклюзивное … выше 120 зол.
Обратите внимание, что цены на зелья у торговцев не связаны с таковыми у самодельных зелий. Также плагины, меняющие силу зелий с помощью fPotionStrengthMult будут влиять на процесс выбора модели.
[*] Пункт «Ребалансировка зачарованных предметов» из 2.2 теперь разделен на две части: «Остывание зачарованных предметов» и, собственно, «Балансировку з.п."
Этот параметр предназначен для ограничения выгоды от мгновенного, непрерывного урона или исцеления, которое дают некоторые предметы.
[*] Ребалансировка зачарованных предметов
Снижает влияние навыка «Зачарование» на заряд предмета. Зачарование было весьма весомым навыком, поэтому эффективность заряда повышалась до 10-ти раз по сравнению с базовой стоимостью (при максимальном уровне навыка), что сильно контрастирует с кастованием заклинаний, ведь потребление маны не снижается с повышением навыка.
Эта функция ослабляет очень сильные способности зачарованных предметов, чтобы другие магические навыки могли выглядеть эффективными на их фоне.
В оригинальном Морровинде:
При нулевом уровне навыка Зачарования на использование зачарованного предмета тратится 1.1 единица базовой стоимости заряда;
при уровне навыка 40 затрачивается 0,7 базовой стоимости на 1 использование (в 1.43 раза больше зарядов);
при уровне навыка 70 затрачивается 0,4 базовой стоимости на 1 использование (в 2.5 раза больше зарядов);
при уровне навыка 100 затрачивается 0,1 базовой стоимости на 1 использование (в 10 раз больше зарядов).
С этой функцией:
При уровне навыка Зачарования 0 на использование зачарованного предмета тратится 1 базовая единица стоимости заряда;
при уровне навыка 40 затрачивается 0,84 базовой стоимости на 1 использование (в 1.19 раз больше зарядов);
при уровне навыка 70 затрачивается 0,72 базовой стоимости на 1 использование (в 1.39 раз больше зарядов);
при уровне навыка 100 затрачивается 0,6 базовой стоимости на 1 использование (в 1.67 раз больше зарядов).
[*] Избежание вины за смерть нейтрального NPC
Если нейтральный (не в находящийся в бою) NPC погибает от эффекта заклинания, скастованного кем-либо в присутствии игрока, игрок полностью берет на себя вину и ответственность за убийство. Такое может случиться, если нейтральный NPC убит воздействующим на область заклинанием, скастованным существом или NPC, атакующим кого-либо другого. Этот патч не позволит обвинить игрока в совершении преступления, если NPC убит третьей стороной.
В то время как игра стремилась наказать игрока за втягивание нейтральных NPC на линию огня, вероятность того, что стражники убьют нейтрала (возможно, на большом отдалении), не должна создавать ему проблем.
[*] Создание заклинаний соответствует редактору
Этот патч вносит незначительные изменения в создание заклинаний, чтобы привести его в соответствие с тем, как заклинания сделаны в Construction Set.
Теперь продолжительность эффекта заклинания может быть установлена на 0 для моментального воздействия.
Созданные заклинания обычно потребляют немного больше маны, чем эквивалентные уже готовые. Технически стоимость использования являлась такой, как если бы продолжительность была на одну секунду дольше, например, в 2 раза дороже готовых заклинаний на 1 секунду, в 1.2 раза дороже готовых заклинаний на 5 секунд. Она также округлялась по-другому. Потребление маны созданным заклинанием теперь соответствует таковому у готовых, автоматически рассчитанных, с теми же эффектами.
Эти изменения делают созданные заклинания короткой продолжительности намного проще для кастования, что, возможно, не предполагалось.
[*] Улучшение Get/SetAngle
— GetAngle и SetAngle теперь могут быть использованы для работы с текущим (вместо исходного) значением поворота актора. Лицевая сторона актора сейчас может быть точно определена с помощью GetAngle. Способность GetStartingAngle определять лицевую сторону не затронута.
— Добавляет оси U, V, W к команде SetAngle, которая сопоставляет их с X, Y, Z, но в остальной части движка применяется ZYX порядок вращения осей. Это делает возможными плагины для изменения расположения предметов, работающие со всеми объектами, с более простыми скриптами, чем у существующих методов. Использование UVW осей делает опцию обратно совместимой с плагинами для изменения местоположения предметов. Для подробностей о разработке плагинов смотрите MCP ридми.
[*] Анимация плавания от первого лица
Позволяет плагинам добавлять анимации плавания, воспроизводимые в виде от первого лица. Без соответствующего плагина эта опция ни на что не влияет.
[*] Скриптовое использование зелий
Добавляет NPC возможность пить зелья с помощью скриптовой команды Equip. Она будет работать как в битве так и вне ее. Потребляемый тип зелья извлекается из инвентаря, но если его у NPC нет, перед употреблением зелье будет создано.
Примечание для плагиностроителей: Эту команду нельзя использовать на игроке. Пока она работает, интерфейс инвентаря игрока не обновляется для соответствия текущему счетчику зелий — создается фантомная копия зелья.
[*] Временная шкала обновления контейнеров
Обновление контейнеров (растения, сундуки торговцев и гильдий) случается периодически, оно контролируется GMST настройкой iMonthsToRespawn и подсчитывается глобальной переменной MonthsToRespawn. Эта опция изменяет переменные и интервал проверки обновления так, что вместо месяцев используются дни, хотя имена переменных остаются прежними, например, интервал обновления по умолчанию «3 месяца» стал тремя днями.
Это позволит создателям плагинов добавлять торговцам более интересные восполняемые товары. Если вы не хотите, чтобы данная опция влияла на контейнеры ингредиентов, существуют различные алхимические плагины, создающие систему независимых интервалов обновления для растений.
[*] AddItem с уровневыми предметами
Добавляет поддержку уровневых предметов в AddItem. Это упрощает плагинам генерацию случайных предметов.
Примечание для плагиностроителей: Цель для AddItem должна указывать на клон, а не на базовый объект. Смотрите MCP ридми для подробностей.
[*] Изменение GetSpellEffects
Позволяет команде GetSpellEffects обнаруживать активные чары. Зелья не поддерживаются в связи с различиями в обработке алхимических эффектов.
[*] Улучшение AIActivate
Для увеличения пользы от команды AIActivate теперь можно указать, что аргумент предмета и актор меняются местами перед использованием для соответствия команде Activate. Опция имеет обратную совместимость с существующими модами, использующими AIActivate.
Недостаток оригинальной команды с целью в качестве аргумента в том, что цель должна быть уникальным объектом — если это не так, игра выберет первый экземпляр объекта, который может находиться в любой ячейке. Наличие ссылки для активации слева позволяет целевым скриптам активировать любой объект.
Вызывается новый метод добавлением второго аргумента:
; MCP AIActivate
item_ref->AIActivate \actor_id\ \actor_id\
Оба идентификатора акторов должны быть одинаковыми. Этот странный синтаксис нужен для того, чтобы избежать ошибок в компиляторе Construction Set с целью сохранения совместимости. Если вы используете MWEdit, эта версия не подходит, и вам следует вводить:
; MCP AIActivate (MWEdit)
item_ref->AIActivate \actor_id\ reset
В обоих случаях рекомендуется оставить поясняющий комментарий для дальнейшей поддержки совместимости.
[*] Улучшенная перезарядка
Заметно упрощает перезарядку предметов. Теперь для этого вам нужно кликнуть по предмету, затем выбрать камень душ для использования на нем. Процесс можно повторять в меню сколь угодно раз, пока не будет достигнут желаемый результат.
[*] Улучшение создания заклинаний и зачарования
Усовершенствует интерфейс настройки эффектов в окнах создания заклинаний и зачарования предметов.
Когда изменяется сила эффекта, увеличение минимальной величины повлечет увеличение максимальной, если та ниже, и, соответственно, уменьшение максимальной величины уменьшит минимальную, если та выше.
[*] Шанс на успех самостоятельного зачарования
В меню самостоятельного зачарования отображается шанс на успех в процентах.
[*] Улучшенный торг
Предупреждение о совместимости: Эта опция несовместима с программой FPS Optimizer, так как она имеет сходную опцию. Отключите ее, если пользуетесь FPS Optimizer.
В процессе торговли вы сможете увеличивать или уменьшать шаг торга на 100, удерживая Shift и кликая клавиши [+] или [-]. Удерживайте клавишу нажатой для быстрого добавления/удаления больших значений; эта функция работает надежно вследствие другого исправления.
[*] Показ всех эффектов стандартных зелий
Позволяет игроку видеть все эффекты стандартных зелий вместо скрытия некоторых из них в зависимости от навыка алхимии. Самодельные зелья все еще отображают эффекты, основываясь на навыке алхимии, как и зелья, помеченные 'Blocked' в Construction Set.
[*] Фикс парсера скриптовых выражений
Исправляет проблемы скриптовой системы, вызывавшие некоторые странные баги. Эти баги были связаны с выражениями, такими как правая сторона Set, If или While.
— Исправляет невозможность использовать некоторые аргументы функцией Random и сбой на кратных 256.
— Исправляет аргумент функции Random, которая искажалась при большом значении.
— Исправляет 34-ю локальную переменную, бывшую недостижимой в выражении.
— Исправляет ошибки при установке 65-й-84-й локальных переменных в выражение, содержащее глобальный идентификатор (глобальная переменная, ID предмета, имя актора и т. д.).
— Исправляет ошибки выражений с количеством символов от 65 до 84.
Для плагиностроителей: Все еще остаются фундаментальные проблемы в конструкции компилятора скриптов CS. Если вы используете функцию с аргументами, вы должны присвоить результат локальной переменной, прежде чем использовать его в другом выражении.
[*] Фикс данных скрипта
Исправляет возможный источник сбоев при загрузке/перезагрузке сохранения или начала новой игры во время текущей. Вызывался скриптовой системой, считывающей данные после конца буфера памяти скомпилированного скрипта.
[*] Повышение скорости загрузки
Уменьшает время загрузки главного меню и значительно сокращает скорость повторной загрузки.
В первую очередь это улучшает скорость, когда Morrowind уже кэширован в памяти, например, загрузка сохранения или перезапуск Morrowind после его недавнего запуска. Функция также улучшает скорость при использовании VSync или оконного режима, а также когда подключено много небольших плагинов.
Игра слишком часто обновляла текст статуса и индикатор выполнения и, как следствие, могла провести большую часть своего времени, ожидая синхронизации графического процессора. Для решения этой проблемы был добавлен ограничитель частоты обновления.
[*] Фикс подсказки эффекта заклинания
Исправляет проблему с интерфейсом, а именно всплывающие подсказки в панели действующих эффектов заклинаний. Если враг использует в бою зачарованный предмет, всплывающая подсказка всех наложенных противником эффектов покажет зачарованный предмет в качестве источника даже когда данный эффект был от заклинания и должен отображать название этого заклинания.
[*] Фикс GetEffect/RemoveEffects
Исправляет случаи, когда скриптовые команды GetEffect и RemoveEffects работали некорректно, всегда возвращая 0 или, соответственно, не убирая эффект. Данный баг возникал достаточно редко и не затрагивал большинство плагинов, но влиял на использование данных команд в эффекте «Обнаружить чары».
[*] Фикс CellChanged
Делает функцию CellChanged надежной. Раньше она срабатывала не всегда, если игрок перемещался в ячейку скриптом, как напрямую, так и функцией активации на скриптовой двери.
Эта проблема была вызвана взаимодействием между загрузкой ячейки и скриптовым движком. Флаг CellChanged устанавливается сразу после телепортации, в то время как список скриптов для выполнения формируется в начале цикла. Если ячейка изменяется в середине скрипта, остальные скрипты исходной ячейки должны завершить выполнение. CellChanged будет сброшен до того, как скрипты в ячейке назначения смогут увидеть его. Обратите внимание, что глобальные и локальные скрипты выполняются раздельно, и ошибка возникала только в том случае, если скрипты телепорта и изменения ячейки были в одной категории.
[*] Фикс сброса золота при торговле
Перерассчитывает золото торговцев, как только вы начинаете диалог с NPC, не дожидаясь открытия окна торговли. Ранее золото, заплаченное за ремонт или другие услуги, попадало в золотой пул торговца, затем сбрасывалось и исчезало, если вы пользовались услугой ремонта до торговли.
[*] Фикс MoveWorld Z
Исправляет проблему со скриптовой командой MoveWorld, ведущей себя неправильно и непоследовательно в направлении Z. Она неверно использовала дельту времени, прибавляя скорость движения вместо масштабирования ее в соответствии с частотой кадров.
[*] Безопасное удаление трупа
Акторы не обрабатываются как полностью мертвые, пока не завершится их анимация смерти, и они больше не смогут двигаться. Окончательная обработка актора включает скриптовые триггеры. Это исправление предотвращает удаление трупа до тех пор, пока на акторе не отработают все игровые механизмы.
Исправляет проблемы в квестах, вызывающих флаги OnMurder и OnDeath, и очищает период действия эффектов некоторых заклинаний.
[*] Фикс попаданий по щиту
Когда удар по актору попадает в цель, выбирается случайная часть его брони для нанесения урона прочности. После того, как урон нанесен, развивается соответствующий навык доспехов. Одним из участков брони является слот щита с 10%-ой вероятностью выбора.
Если экипирован полный комплект брони, кроме щита, ущерб щиту засчитывается как бездоспешный и повышает соответствующий навык. Эта функция перераспределяет удары, направленные на участок щита, когда тот не экипирован; теперь произвольно будет выбираться либо левый наплечник, либо кираса.
[*] Фикс перемещения курсора
Когда меню скрыто, курсор мыши по-прежнему перемещается по мере того, как вы вращаете экраном, и остаётся в измененном положении, когда меню снова открывается. Это может раздражать при частом использовании инвентаря. Данная опция разрешает перемещение курсора только когда меню открыто.
[*] Фикс штрафа к скрытности за ботинки
В игре учитывается вес обуви игрока при выполнении проверки скрытности, однако проверяется только вес надетых туфель (одежда), а не ботинок (доспехи). Вес ботинок при подкрадывании равняется нулю. Эта функция корректирует измерение веса, чтобы проверять в том числе и броню.
Штраф по умолчанию — уменьшение навыка «красться» весом туфлей или сапог, например, хитиновые ботинки (вес 6.0) уменьшат ваш навык «Красться» на 6 единиц. Множитель штрафа контролируется GMST fSneakBootMult.
[*] Фикс GetWeaponType
Когда были экипированы отмычка или щуп, GetWeaponType возвращала 0, так же, как при коротком клинке. Это могло вызвать проблемы с обнаружением оружия. С данным фиксом GetWeaponType возвращает -2 для отмычек и -3 для щупов.
[*] Фикс качества щупов
Есть механика, когда ловушка слишком сложна для зондирования. Этот фикс исправляет расчеты щупа так, что более качественные щупы могут снизить сложность до уровня, где они становятся пригодны для использования.
[*] Фикс веса RemoveItem
Команда RemoveItem всегда уменьшала вес, используя (указанное количество * вес объекта), независимо от того, сколько объектов на самом деле существовало в инвентаре. Если скрипт не задавал количество правильно, это могло привести к ошибкам расчета массы. Фикс исправляет команды RemoveItem и Drop для правильного уменьшения веса.
[*] Фикс глюка со звуком лука
Исправляет звуки оружия, срабатывающие несколько раз при стрельбе из луков и арбалетов. Звуки лука, арбалета и запуска стрелы могли срабатывать несколько раз, если игрок перемещался сразу после начала воспроизведения звука. Это было особо заметно в виде от третьего лица, где даже поворот экрана мог вызвать проблему.
Источником проблемы была ошибка в аудиосистеме анимации, когда от объединенных анимаций движения и оружия был переход обратно только к анимации оружия.
[*] Фикс чтения переменных глобального скрипта
Позволяет скриптам читать локальные переменные любого запущенного глобального скрипта. Раньше движок допускал чтение локальных переменных из сценариев только через ссылку с прикрепленным скриптом. Запись в локальные переменные в любом глобальном скрипте всегда была возможна.
Это исправление позволяет плагинам передавать через глобальный скрипт 32-битные переменные, которые не подвержены округлению с плавающей точкой, как обычные глобальные.
[*] Фикс перекрытия множественного призыва
Когда несколько существ призывались за один каст, их появление было всегда строго в одном месте, что выглядело как вызов одного существа. Их AI так же двигался и действовал одинаково некоторое время, как бы подтверждая данный факт. Этот фикс слегка изменяет дистанцию призыва для каждого призванного существа, чтобы они разделялись сразу. Он также позволяет разделить несколько заклинаний призыва, кастуемых в одной и той же целевой локации.
[*] Фикс торга
Обычно удержание клавиши мыши на кнопках [+] и [-] в меню торговли должно привести к тому, что сумма торга будет продолжать увеличиваться или уменьшаться, пока кнопка удерживается. Обычно это не работало при частоте кадров выше 50 в секунду из-за проблем округления в ограничителе скорости торга. Теперь все работает с любой частотой кадров.
[*] Фикс взаимодействия с миром в режиме меню
В процессе создания зелий, ручного зачарования, ручного ремонта или перезарядки все еще можно было брать предметы из мира с помощью курсора. Все другие не-инвентарные меню это не позволяют. Изготовление чего-либо, в то время, как предмет прикреплен к курсору, может привести к сбоям в инвентаре, например, подобранный предмет становится непригодным к использованию. Чтобы избежать данных проблем с инвентарем, фикс предотвращает сбор предметов из мира при открытых ремесленных меню.
[*] Фикс изменения ранга NPC
Заставляет игру сохранять сделанные скриптовыми командами RaiseRank и LowerRank изменения ранга NPC во фракции. Есть несколько квестов, в которых используются эти команды.
[*] Фикс вылета при сообщении о загрузке
Предотвращает сбой при нажатии пробела в момент, когда появляется сообщение о загрузке.
Игра пыталась поместить предупреждение поверх других окон, но если вы нажимали пробел, чтобы выбрать опцию, сообщение удалялось, что приводило к вылету.