diff --git a/CHANGELOG.md b/CHANGELOG.md index ba8c518c..753ccd03 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,38 @@ # Changelog +## 4.4 +* Implemented a `mods_order.txt` to improve and simplify mod ordering and add support for mod managers. This replaces previous **.dat** file autoloading. Please refer to `ddraw.ini` for details +* Implemented a **custom config file parser**, which greatly improves the performance of sfall initialization and reading files from scripts +* **Item highlighting and NPC combat control mods** are now packed into `sfall.dat` resource file, and `sfall-mods.ini` is moved to `\mods\` +* Fixed a bug when updating the maximum HP stat of critters on the map when loaded for the first time +* Fixed `set_pc_base/extra_stat` and `set_critter_base/extra_stat` script functions not updating derived stats when setting SPECIAL stats +* Fixed `wield_obj_critter` script function, which can now put non-weapon/armor items in the critter's hand +* Fixed `get_tile_fid` script function to work on elevations 1 and 2 instead of always elevation 0 +* Fixed `create_spatial` script function not setting the script index number upon object creation +* Fixed incorrect behavior of the subtraction operator involving floats and negative integers +* Fixed the backward compatibility of `get_npc_level` script function +* Fixed a crash bug in `display_msg` and `debug_msg` script functions when printing a string longer than 260 characters +* Fixed a crash bug in `AMMOCOST` hook when returning ammo cost of 0 for burst attacks +* Fixed various issues in script compiler and decompiler (`compile.exe` and `int2ssl.exe` in the **modders pack**) +* Improved **item highlighting mod** to handle the line-of-sight check properly when the player is moving while holding down the key +* Improved and tweaked the behavior of **ComputeSpray_\*** options +* Expanded `atoi` script function to support parsing binary strings +* Expanded `string_format` script function to support more arguments and conversion types +* Changed **CheckWeaponAmmoCost** to be enabled by default and affect only hook type 1 of `HOOK_AMMOCOST` hook script +* Changed how `HOOK_DESCRIPTIONOBJ` hook script handles its return value. Now you can return normal strings directly in the hook +* Re-added the check for valid objects to `get/set_object_data` script functions (only disabled in combat for accessing the combat data) +* Removed the debug message about a missing critter art file from displaying in the game (added in 4.2.2) +* Added options to override the names of sound files used by the engine +* Added an option to **item highlighting mod** to highlight critters with the same rules as in combat, and changed **CheckLOS** to be enabled by default +* Added a debug option to duplicate logs to a dedicated console window alongside the game window +* Added a lower limit of -99% and an upper limit of 999% to the hit chance value to prevent a display issue +* Added more options for tweaking some engine perks to the **perks ini file** +* Added a new argument and a new return value to `HOOK_STEAL` hook script +* Added a burst control example script and a resting encounters mod to the example mods in the **modders pack** +* Updated the compute damage example script in the **modders pack**. Now it should be easier to write one's own damage formula +* Increased the setting range of the combat speed slider in the preferences screen +* New script functions: `set_spray_settings`, `get/set_combat_free_move`, `get_ini_config`, `string_find` + ## 4.3.8 * Fixed a bug introduced in 4.2.8 that broke the arguments of `HOOK_RESTTIMER` hook script * Fixed a bug introduced in 4.3.1 that caused the game to display incorrect names for corpses in some cases @@ -44,7 +77,7 @@ * HRP: Added support for **SPLASH_SCRN_TIME** option in `f2_res.ini` * Fixed the handling of obsolete script functions that are still recognized by script compiler and decompiler * Fixed **NPC combat control mod** not redrawing the interface bar properly when it's the player's turn again -* Improved the fix for updating the HP stats of critters on the map when loaded for the first time +* Improved the fix for updating the maximum HP stat of critters on the map when loaded for the first time * Removed **DivisionOperatorFix** from `ddraw.ini` because there is little reason to turn it off * Removed **ComputeSprayMod** from `ddraw.ini`. Now **ComputeSpray_\*** options no longer require a master switch * Added a fix for a crash when the player equips a weapon overloaded with ammo @@ -129,7 +162,7 @@ * Added missing sounds for the buttons on the world map interface (similar to Fallout 1 behavior) * Added 5 `metarule3` macros for controlling the save slot with scripts to `sfall.h` in the **modders pack** * New script functions: `set_scr_name`, `obj_is_openable` -* Updated **NPC armor appearance mod** to prevent NPCs from equipping **unusable** weapons +* Updated **NPC armor appearance mod** in the **modders pack** to prevent NPCs from equipping **unusable** weapons * Included Brazilian Portuguese and Polish translation (from Felipefpl and Jaiden) ## 4.3.0.2 @@ -212,7 +245,7 @@ * Added an option about the behavior of maximum HP calculation to the **stats ini file** * Added 3 new attribute type values to `get_window_attribute` script functions * Added additional universal opcodes `sfall_func7` and `sfall_func8` (`compile.exe` and `int2ssl.exe` in the **modders pack** are also updated) -* Added a new mode to **NPC combat control mod** to let you order party members to attack specified targets instead of controlling them directly +* Added a new mode to **NPC combat control mod** that lets you use the command cursor to specify targets for party members to attack in combat * Added an auto-close containers mod to the example mods in the **modders pack** * Added `snd2acm_fix.exe` (snd2acm with a fix wrapper) to the **modders pack** for writing the correct sample rate and channel info from **WAV** files to **ACM** format * New script functions: `interface_overlay` @@ -289,7 +322,7 @@ * Improved the pathfinding in the engine function when a multihex object is in the line of fire * Improved the functionality of `display_stats` script function to also update player's stats on the character screen * Improved the fix for incorrect positioning after exiting small/medium locations -* Removed **AutoSearchPath** from `ddraw.ini`. Now the folder path for autoloading custom files is the fixed **\\mods\\** +* Removed **AutoSearchPath** from `ddraw.ini`. Now the directory for autoloading custom files is the fixed `\mods\` * Added a fix to prevent critters from overlapping other object tiles when moving to the retargeted tile * Added a fix to prevent showing an empty perk selection window (crash when clicking on the empty perk list) * Added a fix for NPC stuck in an animation loop in combat when trying to move close to a multihex critter @@ -355,7 +388,7 @@ * Added a fix for the barter button on the dialog window not animating until after leaving the barter screen * Added a fix for the division operator treating negative integers as unsigned * Added a fix for trying to loot corpses with the **'NoSteal'** flag set -* Added an option to allow using the special `'^'` character in dialog msg files to specify the alternative text that will be displayed in the dialogue based on the player's gender +* Added an option to allow using the caret character `'^'` in dialog msg files to specify alternative text in dialogue based on the player's gender * Added options to draw a dotted line while traveling on the world map (similar to Fallout 1, from Ghosthack) * Added an option to display terrain types when hovering the cursor over the player's marker on the world map (from Ghosthack) * Added a flashing icon to the Horrigan encounter and scripted force encounters by default @@ -372,7 +405,7 @@ * Fixed and improved the functionality of `substr` script function * Restored and fixed **RemoveWindowRounding** option that was removed in 4.1.2 * Improved the functionality of `inventory_redraw` script function -* Changed the way **IniConfigFolder** works. Now the game will search for the ini files relative to the specified directory +* Changed the way **IniConfigFolder** works. Now the game will search for ini files relative to the specified directory * Changed the debug message about a missing critter art file to also be displayed in the game * Code refactoring for various script functions * Added a fix to prevent the player from moving when clicking on a script-created window and prevent the mouse cursor from being toggled when hovering over a **'hidden'** window @@ -488,7 +521,7 @@ * Added a fix for knocked down critters not playing stand up animation when the combat ends * Added a fix for dead NPCs reloading their weapons when the combat ends * Added an option to use the expanded world map interface (requires hi-res patch v4.1.8) -* Added an option to allow setting a folder path for the game to automatically search and load custom **.dat** files +* Added an option to allow setting a directory for the game to automatically search and load custom **.dat** files * Added an option to expand the number of action points displayed on the interface bar * Added an option to change the base value of the duration of the knockout effect * Added a check for the `DAM_KNOCKED_OUT` flag to `wield_obj_critter/inven_unwield` script functions @@ -511,7 +544,7 @@ * Changed `create_message_window` script function to be available when other game interfaces are opened * Removed **DialogOptions9Lines** from `ddraw.ini` because there is little reason to turn it off * Removed **LoadProtoMaxLimit** from `ddraw.ini`. Now the proto limit is automatically increased when needed -* Added a fix for party member's stats being reset to the base level when their base protos with the read-only attribute set are placed in the **proto\critters\\** directory +* Added a fix for party member's stats being reset to the base level when their base protos with the read-only attribute set are placed in the `proto\critters\` directory * Added a fix for NPC stuck in a loop of picking up items in combat and the incorrect message being displayed when the NPC cannot pick up an item due to not enough space in the inventory * Added a fix to allow fleeing NPC to use drugs * Added a fix for AI not checking minimum HP properly for using stimpaks @@ -531,7 +564,7 @@ * Fixed fake perks not stacking properly * Fixed the position of the 32-bit talking heads when the game resolution is higher than 640x480 * Fixed a bug in **item highlighting** that caused items to be kept highlighted when picking them up while holding the highlight key -* Changed `hero_select_win` function to require an `AppHeroWin.frm` file (included in the **modders pack**) in the **art\intrface\\** directory +* Changed `hero_select_win` function to require an `AppHeroWin.frm` file (included in the **modders pack**) in the `art\intrface\` directory * Added a fix for unexplored areas being revealed on the automap when entering a map * Added a fix for the overflow of the automap tables when the number of maps in `maps.txt` is more than 160 * Added a fix for a duplicate `obj_dude` script being created when loading a saved game @@ -767,8 +800,8 @@ Original engine bug fixes and various features based on the work by Mr.Stalin: * The build environment is now **Visual Studio 2015**, and Win XP SP2 and Win 2000 are no longer supported * Extensive code reorganizing/rewrite was made in the effort to tidy up sfall code base accumulated over the years and make it easier to read, understand, and extend. Main code was split into separate **'modules'**. Code for interacting with Fallout 2 engine was moved and expanded to allow for engine manipulations without using too much Assembly code * Fixed an issue with the game being rendered before the **hero appearance mod** is loaded -* **Item highlighting mod** was moved from sfall into a separate script (`gl_highlighting.int`) and extended with new options -* **NPC combat control mod** was moved from sfall into a separate script (`gl_partycontrol.int`) +* **Item highlighting mod** is moved from sfall into a separate script (`gl_highlighting.int`) and extended with new options +* **NPC combat control mod** is moved from sfall into a separate script (`gl_partycontrol.int`) * Related options of **item highlighting** and **NPC combat control** mods were moved from `ddraw.ini` into a separate `sfall-mods.ini` * A new version of **NPC armor appearance mod** was implemented as a separate script (`gl_npcarmor.int` in the **modders pack**). It can be configured and made compatible with any Fallout 2 mod * Improved compatibility between **hero appearance**, **NPC combat control**, and **NPC armor appearance** mods diff --git a/artifacts/ddraw.ini b/artifacts/ddraw.ini index 855ee42e..d8e87309 100644 --- a/artifacts/ddraw.ini +++ b/artifacts/ddraw.ini @@ -301,7 +301,7 @@ DataLoadOrderPatch=1 ;Set to 2 to also load subtitle files from text\\cuts_female\ for female PC FemaleDialogMsgs=0 -;Set to 1 to allow using the caret character '^' in dialog msg files to specify the alternative text based on the player's gender +;Set to 1 to allow using the caret character '^' in dialog msg files to specify alternative text in dialogue based on the player's gender ;The text must be enclosed in angle brackets (example: ) DialogGenderWords=0 diff --git a/artifacts/scripting/sfall function notes.md b/artifacts/scripting/sfall function notes.md index 513e8811..a39a9a2e 100644 --- a/artifacts/scripting/sfall function notes.md +++ b/artifacts/scripting/sfall function notes.md @@ -1119,7 +1119,7 @@ sfall_funcX metarule functions ---- #### string_find -`int sfall_func2("string_find", string haystack, string needle)` +`int sfall_func2("string_find", string haystack, string needle)`\ `int sfall_func3("string_find", string haystack, string needle, int pos)` - Returns the position of the first occurrence of a `needle` string in a `haystack` string, or -1 if not found. The first character position is 0 (zero) diff --git a/sfall/Modules/Stats.cpp b/sfall/Modules/Stats.cpp index 0f73b48d..b5289e3b 100644 --- a/sfall/Modules/Stats.cpp +++ b/sfall/Modules/Stats.cpp @@ -208,7 +208,9 @@ void Stats::UpdateHPStat(fo::GameObject* critter) { sum += (getStatFunc(critter, stat) + statFormulas[fo::Stat::STAT_max_hit_points].shift[stat]) * statFormulas[fo::Stat::STAT_max_hit_points].multi[stat]; } long calcStatValue = statFormulas[fo::Stat::STAT_max_hit_points].base + (int)floor(sum); - if (calcStatValue < statFormulas[fo::Stat::STAT_max_hit_points].min) calcStatValue = statFormulas[fo::Stat::STAT_max_hit_points].min; + if (calcStatValue < statFormulas[fo::Stat::STAT_max_hit_points].min) { + calcStatValue = statFormulas[fo::Stat::STAT_max_hit_points].min; + } fo::Proto* proto; if (fo::util::GetProto(critter->protoId, &proto) && proto->critter.base.health != calcStatValue) { diff --git a/sfall/ddraw_CheckAddr.ini b/sfall/ddraw_CheckAddr.ini index adc11e01..29fef5e3 100644 --- a/sfall/ddraw_CheckAddr.ini +++ b/sfall/ddraw_CheckAddr.ini @@ -1,49 +1,39 @@ ;sfall configuration settings - version for checking conflicting addresses. [Main] -;Change to 1 if you want to use command line args to tell sfall to use another ini file. +;Set to 1 to enable the built-in High Resolution Patch mode that is similar to the hi-res patch by Mash +;The required settings will be read from the f2_res.ini configuration file of the original hi-res patch +HiResMode=1 + +;Set to 1 if you want to use command line arguments to tell sfall to use another ini file +;This option is always enabled in 4.3.3/3.8.33 or later. The information is left for reference only UseCommandLine=0 ;Uncomment and point to a file to get alternate translations for some sfall messages -;TranslationsINI=.\Translations.ini +;This file can be placed in text\\ for sfall to get the translations depending on the game language +;TranslationsINI=sfall\Translations.ini ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX [ExtraPatches] -;This section allows you to set multiple paths to folders containing mods or patches that will be loaded by the game -;The priority of read files will be higher than the files in patchXXX.dat -;If DataLoadOrderPatch is enabled, the data load order will be: -;master_patches > critter_patches > PatchFile99 - PatchFile0 > patchXXX.dat > ... -;Paths to folders and Fallout .dat files are supported. The available range for PatchFile option names is from 0 to 99 -;The greater numbers take precedence over lesser numbers +;This section allows you to set multiple paths to folders containing mods or patches +;Paths to folders and Fallout .dat files are supported +;The PatchFileXX options are available from 0 to 99. Larger numbers take precedence over smaller numbers (same as patchXXX.dat) +;Starting from 4.4/3.8.40, the game will load custom .dat files and folders from \mods\mods_order.txt +;The files and folders in mods_order.txt will have a higher priority than the PatchFileXX options +;The complete order of how the engine loads game data is: +;master_patches > critter_patches > mods_order.txt > PatchFileXX > patchXXX.dat > sfall.dat > critter_dat > f2_res_patches > f2_res_dat > master_dat ;PatchFile0=mods\RP_data +;PatchFile1= -;Path to the folder in which the game will automatically search and load custom .dat files -;The data load order of the .dat files in the folder will be in reverse alphabetical order of the filenames -;The .dat files specified in the PatchFileXX options will have higher priority than others -;Uncomment the option to specify a different folder path. The default path is \mods\ -;AutoSearchPath=mods - -;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -[Sound] -;Sets the number of allowed simultaneous sound effects -;Set to 0 to leave the default unchanged (i.e. 4) -NumSoundBuffers=16 - -;Set to 1 to allow attaching sound files to combat float messages -AllowSoundForFloats=1 - -;Set to 1 to automatically search for alternative formats (mp3/wma/wav) when Fallout tries to play an acm -;Set to 2 to play alternative music files even if original acm files are not present in the music folder -;This does not effect the play_sfall_sound and stop_sfall_sound script functions -AllowDShowSound=2 - -;Set to 1 to override the music path used by default (i.e. data\sound\music\) if not present in the cfg -;Set to 2 to overwrite all occurances of the music path -OverrideMusicDir=2 +;Some details about mods_order.txt: +;If mods_order.txt does not exist, sfall will create one in \mods\ +;To install a new mod, copy the file/folder to \mods\ and add its name to mods_order.txt +;Mods will be loaded line by line from top to bottom. You can change the load order in a text editor +;To disable a mod temporarily, you can comment it out by adding a ';' or '#' to the beginning of the line ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX [Speed] -;Set to 0 to disable everything in this section +;Set to 1 to enable options related to the game speed adjustment (SpeedMulti#, SpeedKey#, SpeedModKey, and SpeedToggleKey) Enable=1 ;The speeds corresponding to each slot in percent. (i.e. 100 is normal speed) @@ -61,16 +51,15 @@ SpeedMulti9=900 ;The initial speed at game startup SpeedMultiInitial=110 -;Set to 1 to also affect the playback speed of mve video files without an audio track -AffectPlayback=1 - ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX [Graphics] ;Set to 0 for 8 bit fullscreen ;Set to 4 for DX9 fullscreen ;Set to 5 for DX9 windowed +;Set to 6 for DX9 fullscreen windowed (the resolution in f2_res.ini should be set to the same aspect ratio as your desktop resolution) ;A DX9 mode is required for any graphics related script extender functions to work (i.e. fullscreen shaders) ;Modes 1, 2 and 3 are no longer supported +;If using the hi-res patch by Mash, this option will always be read from the main ddraw.ini file Mode=5 ;If using a DX9 mode, this changes the resolution @@ -79,21 +68,37 @@ Mode=5 GraphicsWidth=1280 GraphicsHeight=720 +;Window position data. Do not modify +;Set to -1 or 0 to reset the window position to the center or top-left corner +WindowData=-1 + +;Uncomment the option to use a hardware shader (requires DX9 graphics mode) +;The shader file .fx must be placed in \\shaders\ and must contain one technique with one or more passes +;You can specify multiple shader files, separated by commas +;GlobalShaderFile=global.fx + +;Set to 1 to automatically enable linear texture filtering when the scale factor is not an integer +;Set to 2 to force-enable linear texture filtering +;This can be used in conjunction with the GlobalShaderFile option +TextureFilter=1 + ;Set to 1 to do the palette conversion on the GPU -;Set to 2 to do the palette conversion on the CPU +;Set to 2 to do the palette conversion on the CPU (used for compatibility with old video cards) ;Set to 0 to pick automatically ;GPU is faster, but requires v2.0 pixel shader support GPUBlt=0 ;Set to 1 to allow using 32-bit textures for talking heads -;The texture files should be placed in art\heads\\ (w/o extension) +;The texture files should be placed in art\heads\\ (without extension) ;The files in the folder should be numbered according to the number of frames in the talking head FRM file (0.png, 1.png, etc.) ;See the text file in the modders pack for a detailed description ;Requires DX9 graphics mode and v2.0 pixel shader support (see GPUBlt option) Use32BitHeadGraphics=1 -;Set to 1 to automatically search for alternative avi video files when Fallout tries to play the game movies -;Requires DX9 graphics mode 4 or 5 +;Set to 1 to automatically search for alternative AVI video files when Fallout tries to play the game movies +;Set to 2 to force AVI videos to fit the screen width +;Requires DX9 graphics mode +;The recommended video codec is Xvid AllowDShowMovies=1 ;Fade effect time percentage modifier @@ -102,25 +107,69 @@ FadeMultiplier=101 ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX [Interface] -;Set to 1 to use the expanded world map interface -;Set to 2 to skip correcting the position of entrance markers on town maps -;You can use resized FRMs in 700x682 for town maps in the expanded world map interface -;Requires High Resolution Patch v4.1.8 and a new WORLDMAP.frm file in art\intrface\ (included in sfall.dat) -;The resolution of hi-res patch must be set to at least 890x720 -ExpandWorldMap=1 - ;Set to 1 to expand the number of action points displayed on the interface bar ;Requires new IFACE_E.frm and HR_IFACE_E.frm files in art\intrface\ (included in sfall.dat) to display correctly ;The minimum supported version of High Resolution Patch is 4.1.8 ActionPointsBar=1 +;Set to 1 to use the expanded world map interface +;Set to 2 to skip correcting the position of entrance markers on town maps +;You can use resized FRMs in 700x682 for town maps in the expanded world map interface +;Requires High Resolution Patch v4.1.8 and a new WORLDMAP.frm file in art\intrface\ (included in sfall.dat) +;The resolution of the hi-res patch must be set to at least 890x720 +ExpandWorldMap=1 + +;Set to 1 to draw a dotted line while traveling on the world map (similar to Fallout 1) +WorldMapTravelMarkers=1 +;Uncomment these lines to change the appearance of the markers +;The color index in Fallout default palette (valid range: 1..228; default is 134) +;TravelMarkerColor=134 +;The length and spacing of the dots in pixels for each type of terrain in worldmap.txt +;Syntax is 'length:spacing', with each pair separated by a comma (valid range: 1..10; default is 2) +;TravelMarkerStyles=2:2,2:2,2:2,2:2 + +;Set to 1 to display terrain types when hovering the cursor over the player's marker on the world map +WorldMapTerrainInfo=1 + +;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +[Sound] +;Sets the number of allowed simultaneous sound effects +;Set to 0 to leave the default unchanged (i.e. 8). The maximum is 32 +NumSoundBuffers=16 + +;Set to 1 to allow attaching sound files to combat float messages +AllowSoundForFloats=1 + +;Set to 1 to automatically search for alternative formats (mp3/wma/wav) when Fallout tries to play an ACM +;Alternative music files will play even if original ACM files are not present in the music folder +;This does not effect the play_sfall_sound and stop_sfall_sound script functions +AllowDShowSound=1 + +;Set to 1 to override the default music path with data\sound\music\ if music_path is not present in the cfg +;Set to 2 to overwrite all occurrences of the music path +OverrideMusicDir=2 + +;Set to 1 to automatically search for new SFX sound files at game startup +;Note: With this option enabled, you will no longer need to use the utility regsnd.exe to register new SFX sounds +;This will slightly increase the startup time of the game on older computers +AutoSearchSFX=1 + +;Uncomment these lines to override the names of sound files used by the engine +;Filenames are limited to 8 characters (without extension) +;MainMenuMusic=07desert +;WorldMapMusic=23world +;WorldMapCarMusic=20car +;EndGameMovieMusic0=akiss +;EndGameMovieMusic1=10labone +;MapLoadingSound=wind2 + ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX [Input] ;Set to 1 to enable the mouse scroll wheel to scroll through the inventory, barter, and loot screens UseScrollWheel=1 ;The mouse Z position is divided by this modifier to calculate the number of inventory -;slots to scroll. My mouse moves 120 pixel in the z direction for one click of the mouse +;slots to scroll. My mouse moves 120 pixels in the z direction for one click of the mouse ;wheel, but this may vary depending on your mouse manufacturer and windows settings. ;Set to 0 to only ever scroll 1 click ScrollMod=0 @@ -130,9 +179,9 @@ ScrollMod=0 MouseSensitivity=100 ;DX scancode of a key to press when the middle mouse button is clicked -;The default of 0x30 toggles between your two weapons +;The default of 48 ('B' key) toggles between your active items ;Set to 0 to disable -MiddleMouse=0x30 +MiddleMouse=48 ;Set to 1 to reverse the left and right mouse buttons ReverseMouseButtons=0 @@ -150,7 +199,7 @@ BackgroundMouse=0 SpeedModKey=-1 ;A key to press to toggle the speed tweak on or off -;Specify 0 if you don't want a toggle key, or a DX scancode otherwise +;Set to 0 if you don't want a toggle key, or a DX scancode otherwise SpeedToggleKey=0 ;The keys corresponding to the 10 speed slots @@ -166,12 +215,12 @@ SpeedKey7=0x00 SpeedKey8=0x00 SpeedKey9=0x00 -;A key to hold down to move the window around when using graphics mode 5 +;A key to hold down to move the window around when using DX9 graphics mode 5 ;Set to 0 if you don't want to use a modifier key, or a DX scancode otherwise ;Set to -1 for either ctrl key, -2 for either alt key or -3 for either shift key WindowScrollKey=0 -;A key to press to reload your currently equipped weapon +;A key to press to reload your currently equipped weapon or use the active item ;Set to 0 if you don't want a reload key, or a DX scancode otherwise ReloadWeaponKey=0 @@ -185,7 +234,7 @@ FastMoveFromContainer=0 ;A key to press to open a debug game editor ;Set to 0 to disable, or a DX scancode otherwise -;Requires sfall debugging mode and FalloutClient.exe from the modders pack +;Requires sfall debugging mode and FalloutDebug.exe from the modders pack DebugEditorKey=0 ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX @@ -193,10 +242,11 @@ DebugEditorKey=0 ;Changes some of Fallout 2 engine functions to Fallout 1 behavior: ;- disables playing the final movie/credits after the endgame slideshow ;- disables halving the weight for power armor items +;- endgame_movie script function plays movie 10 or 11 based on the player's gender before the credits Fallout1Behavior=1 ;Time limit in years. Must be between -3 and 13 -;Set to 0 if you want to die the instant you leave arroyo +;Set to 0 if you want to die the instant you leave Arroyo ;Set to -1 to remove the time limit, and automatically reset the date back to 2241 each time you would have reached it ;Set to -2 or -3 to remove the time limit, automatically reset the date, but override Fallout's GetDate function to return the correct year TimeLimit=-1 @@ -210,6 +260,7 @@ WorldMapTimeMod=100 WorldMapFPSPatch=1 ;Controls the world map speed if WorldMapFPSPatch is 1. Higher values cause slower movement +;Default is 66 milliseconds WorldMapDelay2=66 ;Set to 1 to enable Ray's patch to make world map encounter rate independent of your travel speed @@ -218,8 +269,8 @@ WorldMapEncounterFix=1 WorldMapEncounterRate=5 ;The number of slots available in the locations list panel of the world map -;Set to 0 to leave unchanged. 17 is default. -;Setting this greater than 17 requires a replacement background FRM, or you'll get glitched graphics +;Set to 0 to leave the default unchanged (i.e. 17). The maximum is 127 +;Setting this greater than 17 requires a replacement WMTABS.frm file in art\intrface\, or you'll get glitched graphics WorldMapSlots=17 ;To start a new game somewhere other than artemple.map, uncomment the next line and set it to the map you want to load @@ -232,31 +283,37 @@ VersionString=Test ;To use a config file other than fallout2.cfg, uncomment the next line and add the name of your new file ;ConfigFile= -;Set to 1 to enable functions relating to overriding the file system +;Set to 1 to enable script functions relating to overriding the file system UseFileSystemOverride=1 ;To use a patch file other than patch000.dat, uncomment the next line and add your new file name ;If you want to load multiple patch files (up to 1000) at once, you can include a %d in the file name (sprintf syntax) PatchFile=patch%03d.dat -;Set to 1 to use the modified data load order for the engine to find game data -;Original: patchXXX.dat > critter_patches > critter_dat > f2_res_patches > f2_res_dat > master_patches > master_dat -;Modified: master_patches > critter_patches > patchXXX.dat > critter_dat > f2_res_patches > f2_res_dat > master_dat +;Set to 1 to change the order of how the engine loads game data +;Old: patchXXX.dat > critter_patches > critter_dat > f2_res_patches > f2_res_dat > master_patches > master_dat +;New: master_patches > critter_patches > [ExtraPatches] > patchXXX.dat > sfall.dat > critter_dat > f2_res_patches > f2_res_dat > master_dat +;This option is always enabled in 4.3/3.8.30 or later. The information is left for reference only DataLoadOrderPatch=1 -;Set to 1 to enable loading alternative dialog msg files from text\\dialog_female\ for female PC +;Set to 1 to load alternative dialog msg files from text\\dialog_female\ for female PC ;Set to 2 to also load subtitle files from text\\cuts_female\ for female PC FemaleDialogMsgs=1 +;Set to 1 to allow using the caret character '^' in dialog msg files to specify the alternative text based on the player's gender +;The text must be enclosed in angle brackets (example: ) +DialogGenderWords=1 + ;To change the default and starting player models, uncomment the next four lines. -;The default models can also be changed ingame via script +;The default models can also be changed in-game via script ;MaleStartModel=hmwarr ;MaleDefaultModel=hmjmps ;FemaleStartModel=hfprim ;FemaleDefaultModel=hfjmps -;To change the various ingame movies, modify the next 17 lines -;Most of these can also be changed ingame via script. +;To change the various in-game movies, modify the next 17 lines +;You can also define additional movies by adding Movie18 - Movie32 lines +;Most of these can also be changed in-game via script Movie1=iplogo.mve Movie2=intro.mve Movie3=elder.mve @@ -283,13 +340,10 @@ StartDay=25 ;To change the limit of the distance away from the player to which you're allowed to scroll the local maps, uncomment the next two lines ;Defaults are 480 in the x direction and 400 in the y direction. -;Not compatible with the res patch! +;Does not work with the hi-res patch by Mash! LocalMapXLimit=480 LocalMapYLimit=400 -;To add additional perks to the game, uncomment the next line and set it to point to a file containing perk information -;PerksFile=Perks.ini - ;Set to 1 if you want the pipboy to be available at the start of the game ;Set to 2 to make the pipboy available by only skipping the vault suit movie check PipBoyAvailableAtGameStart=2 @@ -306,7 +360,7 @@ ExtraKillTypes=1 ;0 - Fallout default ;1 - Glovz's Damage Fix ;2 - Glovz's Damage Fix with Damage Multiplier tweak -;5 - Haenlomal's Yet Another Ammo Mod. +;5 - Haenlomal's Yet Another Ammo Mod DamageFormula=0 ;Prevents you from using 0 to escape from dialogue at any time. @@ -315,7 +369,7 @@ DialogueFix=1 ;Prevents you from using number keys to enter unvisited areas on a town map TownMapHotkeysFix=1 -;Set to 1 to disable the horrigan encounter +;Set to 1 to disable the Horrigan encounter DisableHorrigan=1 ;Set to 1 to disable the random element in NPC levelling. @@ -332,24 +386,21 @@ ViewYPos=200 ;Set to 1 to force Fallout not to use multiple processor cores even if they are available SingleCore=0 -;Set to 1 to override the art_chache_size setting in fallout2.cfg +;Set to 1 to override the art_cache_size setting in fallout2.cfg OverrideArtCacheSize=1 ;Prevents you from saving in combat except at the start of your turn to avoid a few bugs -;Note that even with this option enabled, it is still not advisable to save in combat at all. +;Note that even with this option enabled, it is still not advisable to save in combat ;Set to 2 to block all saving in combat SaveInCombatFix=1 -;Point to an ini file containing elevator data -ElevatorsFile=nofile.ini - ;Uncomment and set a comma delimited list of numbers to use a custom xp table. ;Player's level is capped once the highest specified level is reached XPTable=50,100,200 -;Set to 1 to enable additional weapon animation codes from o-t +;Set to 1 to enable additional weapon animation codes from 'o' to 't' ;The 4 byte value at 0x39 of weapon protos may range from 0 to 15 rather than 0 to 10 -;Since the letters 'n' and 'r' are in use for other animations, an animation code of 11 corrisponds to 's' and 15 to 't' +;Since the letters 'n' and 'r' are in use for other animations, an animation code of 11 corresponds to 's' and 15 to 't' AdditionalWeaponAnims=1 ;Uncomment these lines to modify the default modifiers for aimed shots at specific bodyparts @@ -371,8 +422,6 @@ AdditionalWeaponAnims=1 ;If the ExtraKillTypes option is enabled, this should be set to 3, with containing entries for any new types ;Must be non-zero to use the edit/get/reset_critical script functions OverrideCriticalTable=2 -;To change the path and filename of the critical table file, uncomment the next line -;OverrideCriticalFile=CriticalOverrides.ini ;Set to 1 to get notification of karma changes in the notification window DisplayKarmaChanges=0 @@ -383,18 +432,15 @@ AlwaysReloadMsgs=1 ;Set to 1 to force the player to play the idle animation when reloading their weapon PlayIdleAnimOnReload=1 -;Set to 1 to prevent corpses from blocking line of fire -CorpseLineOfFireFix=1 - ;Changes the timer (in days) for deleting corpses on a map after you leave (valid range: 0..13) -;The corpses of critters with 'Ages' flag or on maps with 'dead_bodies_age=No' set in maps.txt will not disappear +;The corpses of critters with 'Ages' flag set or on maps with 'dead_bodies_age=No' set in maps.txt will not disappear ;Default is 6. Set to 0 for a 12-hour timer CorpseDeleteTime=1 ;Set a number of milliseconds to idle each input loop ;Set to -1 to disable -;Set to 0 to idle only if other processes are waiting for processor time -;Set to 1 (or some higher number if needed, the maximum is 127) to prevent 100% CPU use +;Set to 0 to idle only if other processes are waiting for processor time (WinXP/2000: if processes have equal priority) +;Set to 1 (or some higher number if needed) to prevent 100% CPU use. The maximum is 50 ProcessorIdle=1 ;Set to 1 if using the hero appearance mod @@ -411,20 +457,13 @@ SkipOpeningMovies=2 ;Set to 0 to disable NPCsTryToSpendExtraAP=3 -;Set to 1 to fix NPCs not checking weapon perks properly when choosing the best weapon in combat -;Set to 2 to change the priority multiplier for having weapon perk to 3x (the original is 5x) -;Note that enabling this option can significantly affect the weapon of choice for some NPCs -AIBestWeaponFix=2 - -;Set to 1 to fix NPCs not taking chem_primary_desire in AI.txt as drug use preference when using drugs in their inventory -AIDrugUsePerfFix=1 - -;Allows the use of tiles over 80x36 in size. sfall will just split and resave them at startup -;Set to 1 to check all tiles on started (slow) -;Set to 2 if you provide a XLtiles.lst file in art\tiles\ containing a list of the tile ids that need checking +;Allows the use of tiles over 80x36 in size. sfall will just split and resave them to art\tiles\zzz####.frm at startup +;Set to 1 to check all tiles on started (slow, but can also be useful for checking the correct size of your new tiles) +;Set to 2 if you provide a XLtiles.lst file in art\tiles\ containing a list of the tile indexes that need checking AllowLargeTiles=1 ;Set to 1 to boost the maximum number of tile FRMs from 4096 to 16383 +;This option is always enabled in 4.3.7/3.8.37 or later. The information is left for reference only MoreTiles=1 ;Change the Skilldex cursor FRM numbers @@ -463,11 +502,12 @@ ConsoleOutputPath="bingle.txt" ExtraSaveSlots=1 ;To use more than one save slot for quick saving (F6 key) without picking a slot beforehand, set the next two lines -;AutoQuickSave sets how many save slots on a page you want to use for quick saving (valid range: 1..10) -;AutoQuickSavePage is the page number to use (valid range: 1..1000) if ExtraSaveSlots is enabled -;The quick saves will be rotated from the first slot on the page to the n-th slot -;Set to 0 to disable. AutoQuickSave will use the current selected page if AutoQuickSavePage is disabled +;Quick save will cyclically overwrite saves from the first slot on the specified page to the last slot on the n-th page +;AutoQuickSave sets how many pages you want to use for quick saving (valid range: 1..10) +;Set to 0 to disable AutoQuickSave=1 +;AutoQuickSavePage is the page number to start at if ExtraSaveSlots is enabled (valid range: 0..999) +;Set to -1 to use the current selected page (not recommended) AutoQuickSavePage=1 ;Set to 1 to speed up the HP/AC counter animations @@ -484,10 +524,10 @@ KarmaFRMs=47,48,49 ScienceOnCritters=1 ;Modify this value to change the player's speed of rotation on the inventory and character screens -;Default is 166 +;Default is 166 (lower - faster; valid range: 0..1000) SpeedInventoryPCRotation=220 -;Modify the number of the extra interface boxes available to modders. (Default is 5, and the maximum is 95) +;Modify the number of the extra interface boxes available to modders (Default is 5, and the maximum is 95) BoxBarCount=15 ;Uncomment to set the text colour of the extra interface boxes @@ -500,47 +540,39 @@ BonusHtHDamageFix=1 ;Set to 1 to display additional points of damage from Bonus HtH/Ranged Damage perks in the inventory DisplayBonusDamage=0 -;Set to 1 to display the range of the second attack mode in the inventory when you switch weapon modes in active item slots -DisplaySecondWeaponRange=1 +;Modify the maximum number of animations allowed to run on a map (Default is 32, and the maximum is 127) +AnimationsAtOnceLimit=64 -;Modify the maximum number of animations allowed to run on a map. (Default is 32, and the maximum is 127) -AnimationsAtOnceLimit=120 - -;Set to 1 to remove the limits that stop the player rolling critical successes/misses in the first few days of game time +;Set to 1 to remove the limits that stop the game from rolling critical successes/failures in the first few days of game time RemoveCriticalTimelimits=1 -;Change the colour of the font used on the main menu for the Fallout/sfall version number and copyright text +;Change the colour of the font used on the main menu for the Fallout/sfall version string and copyright text ;It's the last byte ('3C' by default) that picks the colour used. The first byte supplies additional flags for this option +;1 - change the colour for the version string only +;2 - underline text for the version string +;4 - use monospace font for the version string ;MainMenuFontColour=0x00003C ;Change the colour of the font used on the main menu for the button text MainMenuBigFontColour=0x3C -;Two alternate fixes to the interaction between HtH attacks and the fast shot trait -;0 - Fallout 2 original behaviour -;1 - Haenlomal's fix, called shots are enabled for HtH attacks -;2 - Restoring the -1 AP bonus for HtH attacks (i.e. Fallout 1 behaviour) +;Alternative behaviors to the Fast Shot trait +;0 - Fallout 2 original behavior: -1 AP cost for ranged weapons. Aimed attacks are disabled +;1 - Haenlomal's tweak: aimed attacks are enabled for melee/unarmed weapons and HtH attacks +;2 - Alternative behavior: apply -1 AP cost to melee/unarmed weapons and HtH attacks +;3 - Fallout 1 original behavior: -1 AP cost for all weapons. Aimed attacks are disabled FastShotFix=2 +;Set to 1 to fix the carry weight penalty of the Small Frame trait not being applied to bonus Strength points +SmallFrameFix=1 + ;Set to 1 to boost the maximum number of script names from 1450 to 10000 BoostScriptDialogLimit=1 -;Allows you to edit the skill tables -;Point the next line to an ini file containing the replacement skill data -;SkillsFile=Skills.ini - -;To change the relationship between SPECIAL stats and derived stats, uncomment the next line -;See the Stats.ini in the modders pack for an example file -;DerivedStats=Stats.ini - -;Allows you to change some parameters for drugs and their addictions -;See the Drugs.ini in the modders pack for an example file -;DrugsFile=Drugs.ini - ;These options modify the checks to see if a critter can carry an additional item, changing which items are counted towards the weight limit and adding an additional size check ;Set the mode to 0 to disable the size check, 1 to apply to the PC only, 2 to apply to the PC and party members, or 3 to apply to all critters ;Only the PC uses CritterInvSizeLimit. Other critters will use the unused stat (STAT_unused = 10) or have the size limit of 100 if the stat is not set ;Add 4 to the mode to limit the weight check to used items only -;You can use line number 542/543 in proto.msg and line number 35 in inventry.msg to set up custom messages for item size +;You can use message number 542/543 in proto.msg and message number 35 in inventry.msg to set up custom messages for item size CritterInvSizeLimitMode=6 CritterInvSizeLimit=200 @@ -549,9 +581,11 @@ CritterInvSizeLimit=200 ;2 - Motion sensor doesn't require charges MotionScannerFlags=3 -;Set to non-0 to adjust the maximum encounter table size -;Default is 40, and the maximum is 127 -EncounterTableSize=127 +;Set a value greater than 40 to change the maximum encounter table size (enc_## in worldmap.txt) +;Default is 40, and the maximum is 100 +;Note: Setting this greater than 50 requires renumbering all message lines for the encounter tables in worldmap.msg +;The messages for each table must be numbered from (3000 + table number * 100) to (3099 + table number * 100) +EncounterTableSize=100 ;Set to 1 to disable the pipboy alarm button DisablePipboyAlarm=1 @@ -569,33 +603,12 @@ SuperStimExploitFix=1 InventoryApCost=3 QuickPocketsApCostReduction=2 -;Set to 1 to allow objects seeing through other objects that have their ShootThru flag set -;Note that enabling this option can cause unexpected NPC behavior in some situations -ObjCanSeeObj_ShootThru_Fix=1 - -;Set to 1 to fix the broken obj_can_hear_obj script function -ObjCanHearObjFix=1 - -;Set to 1 to enable the mood argument of start_gdialog script function to be available for talking heads -;If the argument value is -1, the mood will be determined by the local variable 0 of the script (vanilla behavior) -StartGDialogFix=1 - -;Set to 1 to fix and repurpose the unused called_shot/num_attacks arguments of attack_complex script function -;This also changes the behavior of the result flags arguments -;called_shot - additional damage, when the damage received by the target is above the specified minimum damage -;num_attacks - the number of free action points on the first turn only -;attacker_results - unused, must be 0 or not equal to the target_results argument when specifying result flags for the target -AttackComplexFix=1 - -;Set to 1 to enable the balanced bullet distribution formula for burst attacks -ComputeSprayMod=1 - -;These options modify the bullet distribution of burst attacks if ComputeSprayMod is 1 -;All the bullets are divided into three groups: central, left and right -;These three groups will then travel along three parallel tracks, trying to hit targets on the way -;CenterMult/Div set the ratio of how many bullets go to the central group, and remaining bullets are divided equally to left and right sides -;TargetMult/Div set the ratio of how many bullets in the central group will attack the primary target directly -;Multipliers are capped at divisor values +;These options modify the bullet distribution of burst attacks +;All the bullets are divided into three groups: center, left, and right +;These groups will then travel along three parallel tracks, trying to hit targets on the way +;CenterMult/Div set the ratio of how many bullets go to the center group, and the remaining are divided equally to the left and right sides +;TargetMult/Div set the ratio of how many bullets in the center group will attack the primary target directly +;Multiplier values are capped at divisor values ComputeSpray_CenterMult=1 ComputeSpray_CenterDiv=3 ComputeSpray_TargetMult=1 @@ -616,17 +629,11 @@ MovieTimer_artimer2=181 MovieTimer_artimer3=271 MovieTimer_artimer4=359 -;Set to 1 to enable the new arrays behavior -;Set to 0 for backward compatibility with pre-3.4 scripts -arraysBehavior=1 - -;Set to 1 to add proper checks if there is enough ammo to use weapons that use multiple ammo per shot +;Set to 1 to add proper checks for ammo before attacking +;By default, a weapon can perform an attack with at least one ammo, regardless of ammo cost calculation +;Note that enabling this option will prevent super cattle prods and mega power fists from attacking with only one ammo left CheckWeaponAmmoCost=1 -;To add additional books to the game, uncomment the next line and point to a file containing book information -;See the Books.ini in the modders pack for an example file -;BooksFile=Books.ini - ;Controls the speed of combat panel animations (lower - faster; valid range: 0..65535) CombatPanelAnimDelay=500 ;Controls the speed of dialog panel animations (lower - faster; valid range: 0..255) @@ -634,9 +641,6 @@ DialogPanelAnimDelay=16 ;Controls the speed of pipboy alarm clock animations (lower - faster; valid range: 0..127) PipboyTimeAnimDelay=25 -;Set to 1 to stack empty identical weapons, no matter what type of ammo was loaded before -StackEmptyWeapons=1 - ;Changes the way weapon reloading works when you drag ammo onto a weapon in the inventory ;Set to -1 to disable (vanilla behavior with the 'Move Items' window) ;Set to 0 to use all the ammo boxes to reload @@ -654,20 +658,19 @@ EnableMusicInDialogue=1 DontTurnOffSneakIfYouRun=1 ;Changes the distance at which the player will switch to walking when trying to use objects (valid range: 0..3) -;Set to 0 to disable switching. (Default is 3) +;Default is 3. Set to 0 to disable switching UseWalkDistance=2 +;Changes the displayed message when you recover from the negative effects of radiation exposure +;The value is the message number in misc.msg (Default is 3003: 'You feel better') +RadEffectsRemovalMsg=3003 + +;Set to 1 to display messages about radiation for the active geiger counter +ActiveGeigerMsgs=1 + ;Set to 1 to fix the bug of being unable to sell used geiger counters or stealth boys CanSellUsedGeiger=1 -;Set to 1 to fix the issue with being able to charge the car by using cells on other scenery/critters -;Set to 0 if another mod you're using has custom vehicles -CarChargingFix=1 - -;Set to 1 to prevent the car from being lost when entering a location via the Town/World button and then leaving on foot -;Note that the global variable 633 (GVAR_CAR_PLACED_TILE) will be set to -1 when the player leaves a location -CarPlacedTileFix=1 - ;Set to 1 to skip weapon equip/unequip animations when performing various actions InstantWeaponEquip=1 @@ -684,8 +687,9 @@ NumbersInDialogue=1 ;Set to 1 to use Fallout's normal text font instead of DOS-like font on the world map WorldMapFontPatch=1 -;Set to 1 to keep the selected attack mode when moving the weapon between active item slots -KeepWeaponSelectMode=1 +;Set to 1 to use Fallout's normal text font for death screen subtitles +;Requires changing the color of subtitles in death.pal palette to white color (index 220) to display the text correctly +DeathScreenFontPatch=1 ;Set to 1 to display full item description for weapon/ammo in the barter screen FullItemDescInBarter=1 @@ -696,34 +700,119 @@ DisplaySwiftLearnerExp=1 ;Set to 1 to display party member's current level/AC/addict flag on the combat control panel PartyMemberExtraInfo=1 +;Set to 1 to skip loading all game settings except the game/combat difficulty from saved games +;Set to 2 to also skip loading the game/combat difficulty settings +SkipLoadingGameSettings=2 + +;Changes the base value of the duration of the knockout effect (valid range: 35..100; default is 35) +;The formula for the duration in ticks is: 10 * (value - 3 * EN) +KnockoutTime=36 + +;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +; Critical modding options - the following options should be changed with caution +;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + +;Set to 1 to fix the issue with being able to charge the car by using cells on other scenery/critters +;Set to 0 if another mod you're using has custom vehicles +CarChargingFix=1 + +;Set to 1 to prevent the car from being lost when entering a location via the Town/World button and then leaving on foot +;Note that the global variable 633 (GVAR_CAR_PLACED_TILE) will be set to -1 when the player leaves a location +CarPlacedTileFix=1 + +;Set to 1 to fix obj_can_see_obj script function to allow critters to see through objects with 'ShootThru' flag set and other critters in front of them +;Note that enabling this option can cause unexpected NPC behavior in some cases, e.g. initiating combat or dialogue when the player is behind certain obstacles +ObjCanSeeObj_ShootThru_Fix=1 + +;Set to 1 to fix the broken obj_can_hear_obj script function +ObjCanHearObjFix=1 + +;Set to 1 to enable the 'mood' argument of start_gdialog script function for talking heads +;If the argument value is -1, the mood will be determined by the local variable 0 of the script (vanilla behavior) +StartGDialogFix=1 + +;Set to 1 to fix attacker_results/target_results arguments and repurpose the unused called_shot/num_attacks arguments of attack_complex script function +;New behavior of the arguments: +;called_shot - additional damage when hitting the target +;num_attacks - the number of free action points on the first turn only +AttackComplexFix=1 + +;Set to 1 to make the create_object_sid script function run the 'start' procedure of attached script upon object creation +;By default, the 'start' procedure of attached script is executed after the current script procedure is finished +;Note that enabling this option may cause unexpected results with some existing game scripts +CreateObjectSidFix=1 + +;Set to 1 to fix the execution of the 'use_p_proc' procedure for grave type containers when they are in the open state +;By default, using open graves does not run the 'use_p_proc' procedure of attached script like other containers +;Note that enabling this option will cause problems for existing grave scripts +GraveContainersFix=1 + +;Set to 1 to fix the priority score calculation for choosing the best weapon for NPCs +;Note that enabling this option can affect the weapon of choice for some NPCs +AIBestWeaponFix=1 + +;Set to 1 to fix NPCs not taking chem_primary_desire in AI.txt as a preference list when using drugs in their inventory +;Set to 2 to allow NPCs to use only the drugs listed in chem_primary_desire and healing drugs (stimpaks and healing powder) +;Note: chem_primary_desire without fixes prevents the specified item from being consumed if all three values in the list are the same PID +;chem_primary_desire also works as a priority list of drug items the NPC will try to pick up in combat when they are on the ground +AIDrugUsePerfFix=1 + ;Set to 1 to fix the bug of using First Aid/Doctor skills when using them on the player -;This will cause the party member to apply his/her skills when you use First Aid/Doctor skills on the player, but only if +;This will cause the party member to perform First Aid/Doctor skills when you use them on the player, but only if ;the player is standing next to the party member ;Note that because the related engine function is not fully implemented, enabling this option without a global script ;that overrides First Aid/Doctor functions has very limited usefulness PartyMemberSkillFix=1 -;Set to 1 to skip loading all game settings except the game/combat difficulty from a saved game -;Set to 2 to also skip loading the game/combat difficulty settings -SkipLoadingGameSettings=2 - -;Set to 1 to prevent the inventory/loot/automap interfaces from being placed on top of other script-created windows -InterfaceDontMoveOnTop=1 - ;Overrides the global variable number used to show the special death message of the Modoc toilet explosion ;Set to -1 to disable the special death message when the global variable is set SpecialDeathGVAR=-1 ;Set to 1 to disable the special handling of map IDs 19 and 37 in the engine when entering the maps -;Note that enabling this option can break the map changes in Modoc and Vault 15 +;Note that enabling this option will break the map changes in Modoc and Vault 15 in Fallout 2 DisableSpecialMapIDs=1 -;Changes the base value of the duration of the knockout effect (valid range: 35..100; default is 35) -;The formula for the duration in ticks is: 10 * (value - 3 * EN) -KnockoutTime=36 +;Set to 1 to disable the special handling of city areas 45 and 46 in the engine when visiting Area 45: +;Area 45 automatically disappears from the world map, and Area 46 appears on the world map +;Note that enabling this option will break the location change of the 'Fake Vault 13' in Fallout 2 +DisableSpecialAreas=1 -;Set to 1 to display sfall built-in credits at the bottom of credits.txt contents instead of at the top -CreditsAtBottom=0 +;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +; Configuration ini files +;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX + +;To change the path and filename of the critical table file, uncomment the next line +;OverrideCriticalFile=sfall\CriticalOverrides.ini + +;To change the relationship between SPECIAL stats and derived stats, uncomment the next line +;See the Stats.ini in the modders pack for an example file +;DerivedStats=sfall\Stats.ini + +;Allows you to edit the skill tables +;Point the next line to an ini file containing the replacement skill data +;SkillsFile=sfall\Skills.ini + +;To add additional perks to the game, uncomment the next line and point to a file containing perk information +;See the Perks.ini in the modders pack for an example file +;PerksFile=sfall\Perks.ini + +;To add additional books to the game, uncomment the next line and point to a file containing book information +;See the Books.ini in the modders pack for an example file +;BooksFile=sfall\Books.ini + +;Allows you to change some parameters for drugs and their addictions +;See the Drugs.ini in the modders pack for an example file +;DrugsFile=sfall\Drugs.ini + +;Point to an ini file containing elevator data +;ElevatorsFile=sfall\Elevators.ini + +;Allows you to change the requirements and effects of unarmed attacks +;See the Unarmed.ini in the modders pack for an example file +;UnarmedFile=sfall\Unarmed.ini + +;To change some engine parameters for the game mechanics, uncomment the next line +;TweaksFile=sfall\Tweaks.ini ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX [Scripts] @@ -732,23 +821,37 @@ CreditsAtBottom=0 ;Paths outside of scripts folder are supported GlobalScriptPaths=scripts\gl*.int,scripts\sfall\gl*.int -;Uncomment the option to specify a common folder path for all ini files used by scripts -;You will have to put all the available ini files of the mods in this directory -;The maximum length of the specified path is 61 characters -;IniConfigFolder=IniConfig +;Uncomment the option to specify an additional directory for ini files used by scripts +;The game will search for ini files first relative to this directory and then relative to the root directory if not found +;The path length is limited to 61 characters +;IniConfigFolder=mods\iniConfigs ;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX [Debugging] ;Extra sfall configuration settings that can be used by modders -;This section is not effected by the 'UseCommandLine' option. It will always be read from the main ini +;This section is not affected by the 'UseCommandLine' option. It will always be read from the main ddraw.ini file ;Set to 1 to enable sfall debugging mode -Enable=11 +Enable=1 + +;Set to 1 to give scripts direct access to Fallout's address space, and to make arbitrary calls into Fallout's code +;Set to 2 to also disable the memory address check in unsafe script functions +;Does not require sfall debugging mode +AllowUnsafeScripting=0 + +;If you're testing changes to the Fallout exe, you can override the CRC that sfall looks for here +;You can use several hex values, separated by commas +;Does not require sfall debugging mode +;ExtraCRC=0x00000000,0x00000000 + +;Set to 1 to skip the compatibility mode check +;Does not require sfall debugging mode +SkipCompatModeCheck=0 ;Fallout 2 Debug Patch -;Set to 1 to send debug output to the screen, 2 to a debug.log file, or 3 to both the screen and debug.log +;Set to 1 to send debug output to the screen, 2 to a debug.log file, or 3 to both ;Does not require sfall debugging mode -;While you don't need to create an environment variable, you do still need to set the appropriate lines in fallout2.cfg: +;While you don't need to create an environment variable, you do still need to set the appropriate lines in fallout2.cfg ;------- ;[debug] ;mode=environment @@ -757,38 +860,26 @@ Enable=11 ;show_script_messages=1 ;show_tile_num=1 ;[sound] -;debug=1 -;debug_sfxc=1 +;debug=0 +;debug_sfxc=0 ;------- DebugMode=3 ;Set to 1 to hide error messages in debug output when a null value is passed to the function as an object HideObjIsNullMsg=1 -;Change to 1 to skip the compatibility mode check -SkipCompatModeCheck=0 - -;Set to 1 to skip the executable file size check -;Does not require sfall debugging mode -SkipSizeCheck=0 - -;If you're testing changes to the Fallout exe, you can override the CRC that sfall looks for here -;You can use several hex values, separated by commas -;Does not require sfall debugging mode -;ExtraCRC=0x00000000,0x00000000 +;A key to press to toggle the display of the hex grid on the map on or off +;Set to 0 to disable, or a DX scancode otherwise +MapGridToggleKey=0 ;Set to 1 to stop Fallout from deleting non read-only protos at startup ;Has pretty nasty side effects when saving/reloading, so don't use for regular gameplay DontDeleteProtos=0 -;Set to 1 to give scripts direct access to Fallout's address space, and to make arbitrary calls into Fallout's code -;Does not require sfall debugging mode -AllowUnsafeScripting=0 - ;Set to 1 to force sfall to inject all hooks code into the game, even if corresponding hook scripts don't exist InjectAllGameHooks=1 -;Set to 1 to force sfall to search for global scripts every time the game loads rather than only once on the first game start +;Set to 1 to force sfall to search for global/hook scripts every time the game loads rather than only the first time AlwaysFindScripts=0 ;Set to 1 to force critters to display combat float messages @@ -796,7 +887,7 @@ AlwaysFindScripts=0 Test_ForceFloats=1 ;These options control what output is saved in the debug log (sfall-log.txt) -;Prints messages duing sfall initialization +;Prints messages during sfall initialization Init=1 ;Prints messages relating to hook scripts Hook=0 @@ -804,3 +895,21 @@ Hook=0 Script=0 ;Prints messages relating to the critical table Criticals=0 +;Prints messages relating to engine fixes +Fixes=0 + +;Duplicates logs to a dedicated console window alongside the game window +;This option uses bit flags to control the types of messages to be shown +;All types other than sfall log (bit 1) require DebugMode to be enabled +;1 (bit 0) - debug output from the engine +;2 (bit 1) - sfall log +;4 (bit 2) - messages from debug_msg script function +;8 (bit 3) - messages from display_msg script function +ConsoleWindow=0b0000 + +;Console window position and size data. Do not modify +;Clear the data to reset the window position and size +ConsoleWindowData= + +;Set the code page for the console window (Default is your system code page) +ConsoleCodePage=0 diff --git a/sfall/version.h b/sfall/version.h index a8d4e621..1b98980e 100644 --- a/sfall/version.h +++ b/sfall/version.h @@ -27,4 +27,4 @@ #define VERSION_BUILD 0 #define VERSION_REV 0 -#define VERSION_STRING "4.4.0b" +#define VERSION_STRING "4.4"