Хочу поделиться с общественностью
1) Расширение функциональности [пере]назначения книг в Books.ini — добавлена возможность повышения и других скиллов при чтении книги.
В ddraw.ini в блоке [Misc] включить BooksFile и настроить Books.ini под свои нужды.
2) Автоматическая перезарядка оружия в обеих руках после окончания боя.
В ddraw.ini в блок [Misc] добавить переменную AutoReloadWeapon=1.
3) Перезарядка оружия или использование предмета (не оружия) в активной руке по хоткею (w|W; DX сканкод = 17).
В ddraw.ini в блок [Input] добавить переменную ReloadWeaponKey=17.
4) Включение отображения свободного веса в окне обмена с сопартийцем.
В ddraw.ini в блок [Misc] добавить переменную FreeWeight=1.
5) Автоматическое одевание сопартийцем лучшей брони после закрытия окна обмена.
В ddraw.ini в блок [Misc] добавить переменную EquipArmor=1.
6) Движковый "NPC Armor" мод.
В ddraw.ini в блоке [Misc] включить ArmorFile и настроить Armor.ini.
7) Русский язык при вводе имени игрока и описания к сохраняемой игре.
В ddraw.ini в блок [Misc] включить подходящую кодировку XltTable и настроить клавишу переключения через XltKey.
8) Отключение абуза отрицательных эффектов от наркотиков при чтении книг и получении перков.
В ddraw.ini в блок [Misc] добавить переменную DrugExploitFix=1.
9) Складывать вместе одинаковое оружие без патронов.
В ddraw.ini в блок [Misc] добавить переменную StackEmptyWeapons=1.
10) Изменение дистанции штрафа для перка Weapon Scope Range|Оптический прицел (0=штрафа нет, 8=по умолчанию).
В ddraw.ini в блок [Misc] добавить переменную RiflescopePenalty=0.
11) Добавлена переменная ReloadReserve, с помощью которой можно менять механизм перезарядки оружия перетаскиванием патронов на это оружие: -1 = оригинал, вылазит навязчивое окошко для ввода количества пачек; 0 = использовать все имеющиеся патроны. 1 и больше = резервные пачки патронов, если имеющееся количество пачек патронов больше заданного резерва, то будут использованы все патроны за вычетом резерва;,если меньше или равно резерву, то будет использована только одна пачка патронов.
12) Исправление читеринга с кнопкой "A".
13) Можно отключить хоткеи для перехода по неоткрытым зонам при выборе зоны на карте города.
14) Возможность использования больше одного слота для быстрого сохранения (F6).
Changelog:
--Исправлен баг подсчёта веса вещей у сопартийца во время обмена (не учитывается вес одетой на нём брони и оружия). Исправлен баг с множественным снятием брони сопартийца через диалог, если у него в сумке есть такая же броня. Исправлено два бага с кликабельностью в пипбое.
--Неиспользованный перк теперь не "пропадает" после получения следующего перкового уровня.
--В окне настроек сопартийца в поле "Здоровье" в скобках показывается его текущий уровень, а в поле "ОД" в скобках показывается его класс брони.
--Расширена функциональность кнопок "Лучшее оружие" и "Лучшая броня" в настройках сопартийца — если оружие/броня одеты, то нажатие на кнопку их снимает.
--Переработан и расширен функционал кнопок прокрутки квестов (включается через UseScrollingQuestsList=1) и добавлены клавиши для навигации (1-4) в пипбое.
--Перенёс обработку горячих клавиш для кнопок управления пипбоя (1-4) в другое место, а то ранее работали только при UseScrollingQuestsList=1.
--Вообще убрал ограничение на максимальное количество квестов (10) на странице — сколько на экране пипбоя помещается, столько и показывается.
--Наконец-то дошли руки допилить отображение свободного веса в окне обмена (что включается через FreeWeight). Теперь свободный вес показывается и при обмене с предметами (ящики/багажник/etc) и во время воровства или торговли (свободный вес не показывается для торгаша, посколько ему можно продавать вещи даже загоняя в минус по весу).
Однако при обмене с предметами используется размер/объём, а не вес. И размер как правило не равен весу — размер пустой снайперской винтовки равен 5, а весит она 8.
Формат — "свободный вес/максимальный вес" для персонажей и "свободный объём/максимальный объём" для предметов.
Значение FreeWeight игнорируется (равно 0) если переменная CritterInvSizeLimitMode не равна 0. Конечно надо было бы это дело совместить, но желания пока нет ;-p
--А ещё в пипбое при просмотре списка квестов если больше одной страницы, то наверху показывается номер страницы ("1 из 2") аналогиично как при просмотре многостраничных голодисков.
--Исправлен "Too Many Items Bug".
--Исправил два бага при использовании инвентаря игрока (вызов через 'I'). У них общая причина возникновения связанная с обратным порядком хранения предметов инвентаря в памяти — первый предмет в инвентаре (самый верхний в списке) хранится в памяти последним, и наоборот — последний предмет в инвентаре (самый нижний в списке) хранится в памяти первым. Поэтому движок должен менять порядок когда использует данные о предметах инвентаря. В инвентаре игрока движок об этом "забывает", что приводит к двум ошибкам.
Ошибка первая визуальная — при взятии предмета мышкой если предмет был в единственном экземпляре, то место откуда предмет взят становится пустым (стирается), если там несколько предметов, то место остаётся прежним (картинка предмета не стирается), но уменьшается счётчик количества предметов. В инвентаре игрока это сломано.
Пример: в инвентаре лежит 4 предмета — пистолет, автомат, винтовка и 3 стимулятора. Если взять мышкой пистолет, то движок использует данные о количестве стимуляторов и не сотрёт картинку места откуда взят пистолет. Если взять автомат, то картинка будет стёрта — используются данные винтовки. Взятие винтовки тоже сотрёт картинку — используются данные автомата. Взятие же стимулятора вместо того чтобы оставить картинку и уменьшить количество предметов на месте сотрёт её — используются данные пистолета.
Ошибка вторая техническая — вряд ли кто знает, что для зарядки оружия/складывания предметов в сумку помимо способа "взять оружие в руку, а затем перетащить патроны из инвентаря в руку с оружием" существует и другой способ — "перетащить патроны из инвентаря в оружие в инвентаре". В движке такая возможность есть, но правильно она не работает (это когда работает).
Пример: в инвентаре лежит 3 предмета — снайперская винтовка, патроны 0.223 и охотничье ружьё. Если перетащить патроны на винтовку, то зарядится ружьё. И наоборот :-p
Уже после исправления я обнаружил что установленный High Resolution Patch (который F2_RES) может дополнительно сломать уже сломанное

Если переменная IFACE_BAR_MODE из f2_res.ini равна 1, то сбивается порядковый номер слота (добавляется 1) куда перетаскивается предмет. Пример приводить не буду
--Бывает в бою нужно подлечиться — открываю инвентарь, использую стимпаки и "чтобы два раза не бегать" © заряжаю оружие перетаскивая патроны в руку с оружием. И тут вылазит это навязчивое окошко с предложением указать количество коробок патронов... Капут окошку
Окошко вызывается, когда количество коробок патронов больше 1 и возвращает введённое количество в диапазоне 1-макс.количество коробок. Вместо вызова окошка сразу возвращается макс.количество коробок.
Естественно это только при перетаскивании патронов в оружие — в остальных случаях (сумка, багажник или торговля) окошко вызываться будет.
--Исправил ещё один хитрый баг при зарядке оружия в инвентаре — если оружие в единственном экземпляре и находится перед патронами, то используется только одна коробка патронов даже если указать макс.количество коробок.
Поправил — если макс. количество пачек патронов больше значения переменной ReloadReserve (по умолчанию = 1), то возвращает "макс.количество пачек минус ReloadReserve", или 1. Если ReloadReserve=-1, то окошко в строю.
--Теперь клавиша перезарядки (ReloadWeaponKey) кроме собственно перезарядки оружия дополнительно функционирует как "Использовать" для не оружия.
--Изменил минимальное и максимальное значение возраста игрока с 16-35 (возрастная аудитория?) на 8-60 :-p
--Включённый DrugExploitFix дополнительно не позволит абузить повышение скиллов под отрицательным эффектом (101% в Легкое оружие — поесть баффаутов, дождаться отрицательного эффекта и качать скилл за 1 поинт вместо 2).
А при получении перков игнорируются и отрицательные эффекты (ранее только положительные). При 10 ловкости в списке перков не будет "Добавить ловкости", но под отрицательным эффектом появится.
--Сделал

Всё верно — реализация в движке не соответствует описанию Sharpshooter (Меткий стрелок). Даже оригинальный SharpshooterFix лишь частично исправлял ошибку.
Инвертирование штрафа тоже сделал (только формула "if (dist < distmod2) dist=(distmod2-dist)+distmod2"), при distmod2=8 (который можно менять через RiflescopePenalty):
CODE
dist
╔═══╤═══╤═══╤═══╤═══╤═══╤═══╤═══╗
║ 8 │ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 ║
╟───┼───┼───┼───┼───┼───┼───┼───╢
[оригинал] dist+distmod2 ║95%│ 0%│ 4%│ 8%│12%│16%│20%│24%║
╟───┼───┼───┼───┼───┼───┼───┼───╢
(distmod2-dist)+distmod2 ║95%│24%│20%│16%│12%│ 8%│ 4%│ 0%║
╚═══╧═══╧═══╧═══╧═══╧═══╧═══╧═══╝
Но закомментил, родная формула правильная — чем ближе я подхожу к цели, тем, даже с учётом штрафа, больше шанс попадания (цель становится "больше").
--Теперь, открыв инвентарь, можно перетаскивать стимпаки и прочую химию из инвентаря на картинку игрока с эффектом использования
--Чёрт, менял одну процедуру (причём как в F1, так и в F2 версии) и забыл добавить 'retn'.
--Делал я тут значица неспешно кнопку "Взять всё" для F1 версии и решил что не помешает ещё и сделать кнопку а-ля "Положить всё" в контейнер/багажник/трупик. Хоткеи — 'd'|'D'.
И приятный бонус для оригинальной F2 кнопки "Взять всё" — помимо клавиши 'A' можно использовать и 'a'
Для F1 версии изменений побольше, хоть в основном это перенос плюшек из F2 версии (NPCsTryToSpendExtraAP, RemoveCriticalTimelimits, DrugExploitFix...) и фиксы аналогичных багов (F1 движок является родителем для F2): кликабельность в пипбое (хоткеи 1-4 для навигации добавил), всё тот же "Too Many Items Bug", который скорее всего никогда и не проявился бы (рисковать не стал — в F2 движке я с ним впервые столкнулся только играя в Неваду), в инвентаре игрока исправил использование только одной пачки патронов при перезарядке оружия в инвентаре когда оружие находится перед патронами и баг, который _возникнет_ если IFACE_BAR_MODE из f1_res.ini равен 1.
Само собой русский язык через XltTable (проверил только 1251 кодировку для 1C) и XltKey при вводе имени игрока и описания к сохраняемой игре, а также в "Расскажи о..." (совместимо с falloutw.exe из полуофициальных патчей для русской версии с изменениями от Ray).
Добавил третий вариант концовки (тот что nar_31) для Братства Стали (идея изменений в движке Mynah, подсмотрел в F1 Restoration Mod by TeamX, совместимо). Однако используется картинка с мутантом в Джанктауне (в Restoration Mod своя картинка и подправленный intrface.lst).
Ну и сделал кнопку "Взять всё" (а позже ещё и "Положить всё"), но картинок нет и пришлось использовать курсоры мыши. Возможно позиция кнопок не очень удачная (рассматривал вариант под кнопками скролла инвентаря). Хоткеи 'a'|'A' и 'd'|'D'.
--Расширил возможности ToggleItemHighlightsKey — теперь подсвечиваются не только предметы на земле, но и предметы-контейнеры (полки, сейфы и т.п.). Другим цветом.
Нормально совместил подсветку с курсором мыши, чтобы убрать ситуацию когда сначала предмет подсвечивается курсором мыши, затем нажимается ToggleItemHighlightsKey, отпускается и пропадает подсветка того предмета, на котором курсор мыши. В связи с этим, для лучшего восприятия, изменил цвет подсветки при наведении мыши на предмет, с жёлтого на розовый. Теперь, включив подсветку всех предметов на карте, можно визуально выделить конкретный предмет в куче предметов.
Для F1-версии сделал отключение пропадания неиспользованного перка после получения следующего перкового уровня (можно "копить" перки). И исправил (в F2-версии тоже) появляющуюся из-за этого возможность получения многоуровневых перков раньше: не использовать перк на 9 уровне и на 12 сразу взять два уровня Живчика (Action Boy), а это не торт.
И исходники теперь лежат в одном архиве вместе с ddraw.dll.
--Изменил прошитую в движке дистанцию перехода на шаг с 5 на 1 когда нужно использовать на объекте что-то, подобрать, обчистить или использовать на нём скилл. Может стоит добавить переменную для этого?
Сделал исправление читеринга с кнопкой "A" ;-p Переменная FakeCombatFix в секции Misc.
Можно подбирать вещи, открывать контейнеры и использовать что-то на ком-то если цель рядом. После агрессивного действия (выстрел/удар/etc) можно передвигаться

Для F1-версии используется сообщение #661 ("Слишком далеко.") из proto.msg, а для F2-версии #675 ("Я не могу этого сделать.").
--Для F2-версии добавил возможность отключения использования хоткеев для перехода по неоткрытым зонам при выборе зоны на карте города.
Для F1-версии добавил исправление ошибок таблицы критов, данные killap'а (таблицы одинаковые в движках). Это то, что в F2-версии исправляет OverrideCriticalTable=2.
PS. Ещё сделал IDB базу для F1-движка ;-p
--Исправил SpeedInterfaceCounterAnims в момент смерти (для отрицательных значений ), когда, к примеру, показывалось "-993" вместо "-007".
Добавил возможность продолжения проигрывания музыки при общении с говорящими бошками (EnableMusicInDialogue), при включении эффект такой же как и с неговорящими бошками — громкость музыки уменьшается в два раза.
Для F1-версии можно указать максимальный уровень игрока (MaxPCLevel) вместо зашитого в движок 21 уровня.
--Воплотил в жизнь идею использования больше одного слота для быстрой записи и без предварительного выбора самого слота:
QUOTE
From Lexx: I would like it a lot if quicksave would be... quicker. If I remember correct, you always have to chose the quicksave slot first, before quicksave actually saves quick... I wouldn't mind if the quicksave function would automatically use the first slot, if this one is already used, tries the second slot, if this one is already used, tries the third, and so on. And maybe if you hit save slot x, it would start to overwrite the first again if possible. Though, it probably would cause a mess as well and people wouldn't know which save is their latest. Alternative: let quicksave automatically cycle through the first 3 slots.
Значение переменной AutoQuickSave определяет количество используемых слотов (1..10) для быстрого сохранения, отсчёт с первого слота. Циклический перебор, перезаписывается самая ранняя игра.
--Это слегка меняет оригинальную задумку ("без перка 'Бесшумный бег' скрытность автоматически отключается при беге"), но в общем не смертельно

Переменная DontTurnOffSneakIfYouRun (0|1) в секции Misc.
--Кстати ты не замечал такой странный баг, если использовать батарейки для заправки машины на любом объекте 'scenary' дерево к примеру, то можно удаленно заправить машину, можно фиксануть?
Есть такое, добавил проверку на машину:
CODE
if (target_pid == PID_DRIVABLE_CAR) obj_use_power_on_car_;
Добавил ещё и багажник:
CODE
if (target_pid == PID_DRIVABLE_CAR || target_pid == PID_CAR_TRUNK) obj_use_power_on_car_;
--Для F1-версии добавил возможность изменять цвет контура врагов (ColorLOS) не в пределах прямой видимости (los). Алгоритм аналогичен F2-версии: "видимость" los-врагов определяется значением восприятие*5, если у врага установлен флаг "прозрачности" (включён стелсбой), то "видимость" в два раза уменьшается — (восприятие*5)/2.
--Сделал через TranslationsINI аббревиатуры/сокращения ("КБ", "Ур."). В окне настроек сопартийца в поле "Здоровье" в скобках показывается его текущий уровень, а в поле "ОД" класс брони.
--Исправил в F1-движке функции получения одетой брони (inven_worn_) и оружия в руках (inven_right_hand_/inven_left_hand_). В них нет проверки на инвентарь игрока и при их вызове для не_игрока возвращается одетая броня и оружие в руке игрока (конечно если броня одета и оружие в руке). Это хорощо было видно при FreeWeight=1 — убив нпс и забрав всё с трупика складывалось впечатление что у него ещё остались какие-то скрытые вещи.
--возможность управлять напарниками в бою. Можно такое сделать для ф1?
Сделал

Трейты/перки реального игрока не распространяются на контролируемых персонажей. Для контролируемых персонажей нельзя одеть броню в инвентаре и нельзя сохраняться, а нажатие Enter (завершение боя) распознаётся как Space (окончание хода).
--
Готовый ddraw.dll (собран из исходников версии 3.6.7.346; Это "релизная" версия dll, но в ней оставлены SkipSizeCheck и ExtraCRC из секции [Debugging]) с примерами ini-файлов.
По просьбе The Master'а собрал версию для первого Fallout'а, скачать можно здесь.
by Crafty