[Fallout 1] Lots of new features with unofficial Sfall release

Sduibek

Creator of Fallout Fixt
Moderator
Modder
A user named Crafty posted this on the Fallout.ru forums.
It is a Russian modification of the Sfall plugin that adds a host of sweet features:

- Press button to highlight all items on map
- Can level up to 99
- Can control other critters in combat
- "Take all" and "Put all" buttons like in Fallout 2.
- Many many others.

Most recent version is available at: http://www.mediafire.com/download/hlah5435064z9qj/sfall1_v1.1_unofficial_by_Crafty.7z

Thank you:
Breakin'Benny, for posting this on the Fallout Fixt Bug Reports wiki page.
NovaRain, for providing the link to Crafty on NMA and Crafty's thread for their Sfall work
Drobovik, for posting Crafty's work here at NMA
Crafty, for creating this fantastic modification!
 
Last edited:
Thanks for letting us know. Its been too long since I had a FO1 playthrough, i'll have too look up a good mod for it.
 
@NovaRain How did you know this so quickly? Are you active on Russian Fallout forums?

@Drobovik Any chance we can get a bilingual individual to give some English love to this modification? I see you active in the thread over there and I ran it through Google Translate, but you know how terribly that mangles things. An English version of the readme/changelog would be great :D

Хочу поделиться с общественностью :)

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
 
Last edited by a moderator:
@NovaRain How did you know this so quickly? Are you active on Russian Fallout forums?
Nah, Drobovik posted Crafty's modded sfall in sfall thread last week (with some English translation of the changes), it's not that hard to google the original thread. I wish I understood Russian, but learning English is already hard enough for me. Guess I should blame why those people wanted to build that damn tower. :P
I'll discuss integrating some stuff from it with phobos2077.
 
Last edited:
EDIT: @NovaRain How did you know this so quickly?
Drobovik posted Crafty's modded sfall in sfall thread last week, it's not that hard to google the original thread.
I'll discuss integrating some stuff from it with phobos2077.

I was searching specifically through Google for things like "fallout sfall crafty" which gave zero useful results, then I searched "sfall" here but didn't bother checking the thread you linked since it has "FO2" in the title...
 
Last edited:
@NovaRain Presumably even if Timeslip includes some of this in the official Sfall, the official release will still only support Fallout 2, yes?
 
Last edited by a moderator:
@NovaRain Presumably even if Timeslip includes some of this in the official Sfall, the official release will still only support Fallout 2, yes?
I can upload the source code and binary on SourceForge, just like old pre-GPL era Timeslip put both sfall and sfall1 on her site.
But I need to check some other things before doing this.
 
Last edited by a moderator:
@NovaRain Presumably even if Timeslip includes some of this in the official Sfall, the official release will still only support Fallout 2, yes?
I can upload the source code and binary on SourceForge, just like old pre-GPL era Timeslip put both sfall and sfall1 on her site.
But I need to check some other things before doing this.

Cool! Take your time, didn't mean to imply there's any rush :P

Also be careful with SourceForge, they've been engaging in some shady shit lately by packaging junkware/adware/malware with downloads. http://www.howtogeek.com/218764/war...eforge-if-you-can-help-it/?PageSpeed=noscript
 
Last edited by a moderator:
Is this for Fallout 1? Awesome stuff!! :)

'll discuss integrating some stuff from it with phobos2077.
Do you want to integrate some of this in Fallout 2 version of sfall? It's not going to be a walk in a park, since it's a different engine.
 
@Drobovik Where and how to report bugs for this?

Also I would really really really like to see an English version of the readme/changelog. Is there someone good with Russian-to-English translations that is willing to maintain English translations of the readme/changelog?

I tried to translate it with a thing like Google Translate but it's just garbage. The grammar of the translation was so poor I had no idea what most of it was talking about.

For individual players it might be fine to not know everything the plugin does, but if I'm including it in a mod that's getting many thousands of downloads, I need to know everything it's doing.
 
Last edited by a moderator:
@Sduibek
I'll get it translated. Give me few days after 4 of July. Beer and Fireworks, that's the american way))
And for the language that was used in the changelog google is useless. Lotsa russian slang:razz:

Bugs? You can PM me those I'll hand them over to Crafty. He's keeping his silence here at NMA (don't know why. He has good level of English). But once he shows up, you'd be able to report issues to him directly.
 
Last edited:
PS: He added "pick up everything"-buttons to the loot screen. Another really, really needed feature in Fo1.
 
Bug reports, I put them on official thread but putting here just for the sake of completeness:

- Melee/unarmed characters cannot attack first, ever, if "Prevent press A for free combat running" is enabled. Crafty says this is intended functionality. ???? Asked for clarification since that is quite strange to be intended. It makes playing melee/unarmed not only not fun, but forces you to siginicantly change playing style, and users don't understand it because it intuitively feels wrong, AND it means you'll get hit more in combat which means you're effectively playing an idiot player that always lets the opponent get the first shot, and/or never runs up and stabs somebody from behind.

Suggested change is much more elegant and in my opinion far superior: just make the game skip over any press of "A" key to enter combat. The reason the exploit is so easy is you can hold down "A" before the map loads, and/or before the combat round ends. If you force player to click their active item instead, it makes it kind of a pain in the ass, and makes it (probably) impossible to initiate combat before the map loads. I use this exploit myself, but I definitely wouldn't use it if I had to click. That's just too much hassle :P

- Moving items from backpack or bag, back into player's inventory causes crash. Disabling ddraw the issue goes away.
 
Last edited:
This sucks, instead of giving HtH fighters a chance this Sfall change prioritizes the "attack_complex" script for the NPCs. It'd be funnier if the dude_obj was also allowed to use it… but would it take away your control of the character?
 
Last edited by a moderator:
@Drobovik Can we get these at a static download link? Having it change every version is just crazy, considering he's releasing a few times a week. It's just making it a pain in the ass for anybody who doesn't follow the forums/threads meticulously.

i.e. newest version always found at craftyfallout.com/sfall1.zip


This sucks, instead of giving HtH fighters a chance this Sfall change prioritizes the "attack_complex" script for the NPCs. It'd be funnier if the dude_obj was also allowed to use it… but would it take away your control of the character?
@BreakinBenny I have no idea what you're talking about here. Clarification?
 
Last edited by a moderator:
This sucks, instead of giving HtH fighters a chance this Sfall change prioritizes the "attack_complex" script for the NPCs. It'd be funnier if the dude_obj was also allowed to use it… but would it take away your control of the character?
@BreakinBenny I have no idea what you're talking about here. Clarification?
I'm saying that it'd probably be more fair (with FakeCombatFix enabled 'cause Crafty's idea seems delusional) if the player critter was also allowed to make the first, strong strike at the start of combat should the NPC's Hostile flag or local variable get triggered…, except I hesitated because "attack_complex" might force your character to do something against your own will.

Crafty's "idea" cripples HtH characters and forces players NOT to call the hostility node in dialogue, since someone like me would end up having to let Zimmerman in Adytum get pathetically shot for 250 HP (which he always dies from even if he successfully dodges).
 
Back
Top