* 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
* 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 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 3.8.22)
* Removed the old built-in **NPC combat control** and added a script-based version to the example mods in the **modders pack**
* Added an option to let you use the command cursor to specify targets for party members to attack in combat
* Added an option to specify an additional directory for ini files used by scripts
* Added options to override the names of sound files used by the engine
* 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
* Updated **NPC armor appearance mod** in the **modders pack** to prevent NPCs from equipping **unusable** weapons
* Updated **item highlighting mod** in the **modders pack** to match the feature set of the 4.x version
* Increased the setting range of the combat speed slider in the preferences screen
* Backported script functions from 4.0/4.1: `set_dude_obj`, `get_object_ai_data`
* Backported hook scripts from 4.x: `hs_combatturn`, `hs_rollcheck`, `hs_bestweapon`, `hs_canuseweapon`
* New script functions: `set_spray_settings`, `get/set_combat_free_move`, `get_ini_config`, `string_find`
* Fixed a bug introduced in 3.8.30 that could cause unexpected behavior for burst attacks at close range
* Fixed a bug introduced in 3.8.31 that caused the game to display incorrect names for corpses in some cases
* Fixed a crash bug introduced in 3.8.33.1 when not using `HOOK_COMBATDAMAGE` hook script
* Fixed a crash bug in **FullItemDescInBarter** when a weapon/ammo has no item description
* Fixed `create_object_sid` script function not setting the script index number upon object creation
* Fixed the broken `read_string` script function
* Changed the way disabled unsafe script functions work. Now they don't cause scripts to end abruptly
* Removed **StackEmptyWeapons** from `ddraw.ini`. Now unloaded weapons will always stack, no matter what type of ammo was loaded previously
* Removed **CreditsAtBottom** from `ddraw.ini`. Now sfall built-in credits are shown at the beginning when from the main menu and at the end during the ending
* Added a fix for the player's traits not being displayed on the character screen in certain cases
* Added a fix for incorrect death endings being shown under certain conditions
* Added an option to fix the bug of using First Aid/Doctor skills when using them on the player
* Added a new **[ExtraPatches]** section to allow setting multiple custom paths for loading game data
* Added a tweak to the ammo information in the inventory for Glovz's damage formula and Haenlomal's YAAM
* Added a tweak to allow premade characters to have less than two traits
* Added a tweak to `INVENTORYMOVE` hook for getting the amount of dropped money/caps
* Added support for closing the game by pressing `Alt+F4`
* Updated the ammo ini loader mod in the **modders pack**
## 3.8.33.1
* Backported the **code injection system for game hooks** from 4.1. In previous versions, the code of game hooks was always executed even if there was no corresponding hook script. Now the code of a game hook is only injected into the game when the corresponding hook script exists
* Fixed a bug introduced in 3.8.31 that caused the game to print an incorrect item name in some cases
* Fixed screenshots for **DX9** graphics modes. Now the screenshots are saved in **PNG** format when in **DX9** mode
* Improved the functionality of **AllowDShowMovies**. Now you can take screenshots and press any key to skip **AVI** movies
* Added a tweak to prevent **'Failure initializing input devices'** error for **DX9** windowed mode
## 3.8.33
* Code refactoring for the script extender to improve the error handling in script functions
* Fixed a bug introduced in 3.8.31 that broke the fix for party members with drug addictions
* Fixed a bug introduced in 3.8.31 that caused AI to be unable to use some weapons
* Fixed a bug introduced in 3.8.31 that caused the music not to be played after loading a saved game on the same map
* Fixed critical bugs in **FadeBackgroundMusic** that caused crashes in various situations
* Fixed incorrect display of name and damage values for unarmed attacks in the inventory in some cases
* Fixed the black screen issue in **DX9** mode when returning to the game after using `Alt+Tab`
* Fixed the mouse cursor lag in the save/load game screens
* Fixed and expanded the mouse drop area for the PC's and NPC's inventory on the barter screen
* Changed the **'Radiated'** on the character screen to be highlighted in gray when the player still has an impending radiation effect
* Changed **SkipCompatModeCheck** to not require sfall debugging mode
* Removed **UseCommandLine** from `ddraw.ini`. Now sfall will always check command line arguments for another ini file
* Removed **ArraysBehavior** and **RemoveWindowRounding** from `ddraw.ini` because there is little reason to turn them off
* Removed **SkipSizeCheck** from `ddraw.ini` and the executable file size check from sfall
* Removed the dependency on `d3dcompiler_42.dll` for **DX9** graphics modes
* Added a fix for incorrect value of the limit number of floating text messages
* Added a tweak to allow printing new floating text messages when their limit is exceeded
* Added a debug option to set up a key to toggle the display of the hex grid on the map on or off (like in the mapper)
## 3.8.32
* Changed the fix for grave type containers in 3.8.31 to an option, to fix compatibility with existing grave scripts
* Changed **OverrideArtCacheSize** to set the art cache size to 261 instead of 256
* Changed **Enable** option in the `[Speed]` section to no longer affect **SpeedMultiInitial**
* Tweaked the window title bar for **DX9** windowed mode
* Optimized the calculation process in Glovz's damage formula and Haenlomal's YAAM for burst attacks
## 3.8.31
* Fixed the Jet addiction not being removed when using the antidote in some cases
* Fixed and improved the functionality of **AllowLargeTiles**. Now it requires a `gridmask.frm` file (included in the **modders pack**) in the `art\tiles\` directory
* Added a fix to the starting position of the player's marker on the world map when starting a new game
* Added a fix for AI not checking the safety of weapons based on the selected attack mode
* Added a fix for the incorrect check and AP cost when AI reloads a weapon
* Added a fix to AI behavior to prevent the use of healing drugs when not necessary
* Added a fix for the incorrect object type search when loading a game saved in combat mode
* Added a few fixes for issues with knocked out/down critters. Now the combat doesn't automatically end if the target is only knocked out
* Added a tweak to prevent NPC aggression when non-hostile NPCs accidentally hit the player or members of the player's team
* Added a tweak to play the **'magic hands'** animation when using an item on an object. This also prevents a few issues with scripted animations not playing
* Added a tweak to remove the unspent skill points limit
* Added a fix to AI weapon switching when not having enough AP to make an attack. Now AI will try to change attack mode before deciding to switch weapon
* Added additional universal opcodes `sfall_func7` and `sfall_func8` (`compile.exe` and `int2ssl.exe` in the **modders pack** are also updated)
* Added an auto-close containers mod and **NPC armor appearance 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
* Backported script functions from 4.0/4.1: `get_ini_sections`, `get_ini_section`, `add_extra_msg_file`
* Backported 4 new modes for `metarule2_explosions` function from 4.1
* Fixed `attack_complex script` function not setting result flags correctly for the attacker and the target
* Fixed and improved **SFX** and speech playback for alternative sound files
* Fixed and improved the behavior of nested timer events in global scripts
* Improved the functionality of **AllowDShowMovies**: added volume control support and a new value to force **AVI** videos to fit the screen width, and fixed movie subtitles not showing up
* Improved the behavior of `HOOK_KEYPRESS` hook script
* Changed **AttackComplexFix** to make `attacker_results` and `target_results` arguments work independently of each other
* Changed **ObjCanSeeObj_ShootThru_Fix** to allow critters to see through other critters and added a check for the direction the source is facing
* Changed the behavior of replacing FRM aliases for critters. Now FRM files from their aliases are taken only if the critter doesn't have its own files
* Added a fix for `ANIM_charred_body`/`ANIM_charred_body_sf` animations not being available to most appearances
* Added a debug message about a corrupted proto file
* Added a function extension for vanilla `metarule3` function and added `set_horrigan_days` and `clear_keyboard_buffer` macros to sfall.h in the **modders pack**
* Added `DAM_PRESERVE_FLAGS` flag to `attack_complex` script function to keep the existing result flags when setting new flags
* Updated the example global shader file in the **modders pack**
* Updated German and Russian translations
## 3.8.26
* Fixed a **hero appearance mod** issue that caused the player's gender not to be reset properly when creating a new character
* Fixed a **hero appearance mod** issue that caused the player to lose some fire/electrical death animations
* Fixed a bug introduced in 3.8.23 that broke the **PlayIdleAnimOnReload** option
* 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
* 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
* Increased the maximum text width of the player name on the character screen
* New script functions: `get_stat_max/min`
## 3.8.25.1
* Fixed the extra check for friendly fire treating non-critter objects as friendly critters
* Fixed a bug introduced in 3.8.19 that could cause the combat to end automatically in some cases
* Fixed a bug introduced in 3.8.20 that caused AI to miscalculate the hit chance in determining whether to use secondary attacks if **BodyHit_Torso** and **BodyHit_Torso_Uncalled** modifiers were not equal
* Fixed a bug introduced in 3.8.23 that caused **CorpseDeleteTime** not to set the timer correctly
* Fixed a bug introduced in 3.8.24 that caused **AllowDShowSound=2** not to work
* Fixed `loot_obj` script function not returning the correct object when switching to another corpse in the loot screen
* Fixed and improved the functionality of **ReloadWeaponKey** for using any non-weapon item
* Improved the fix for items on the ground being obscured by a pool of blood after the corpse is removed
* Added a fix for AI skipping a target simply because its weapon is currently empty
* Added a fix for AI not always considering the safe distance when using grenades or rockets
* Added a fix to AI behavior for **'Snipe'** distance preference (`distance=snipe` in `AI.txt`). Now the attacker will try to shoot the target instead of always running away from it at the beginning of the turn
* Added a fix to reduce friendly fire in burst attacks. Now there is an extra roll for AI to not use burst attacks if a friendly critter is in the line of fire
* Added a check for the weapon range and the AP cost when AI is choosing weapon attack modes
* Added a tweak to allow party members to keep their current target as one of the potential targets when choosing new targets at the beginning of their turn
* Added a tweak to the displayed message if the main target of a missed attack has the **'Flat'** flag set
* Added an option to skip loading game settings from saved games
## 3.8.24
* Fixed stuttering when playing **AVI** movies
* Fixed a crash when playing **MVE** movies in **DX9** mode with the CPU doing the palette conversion and without the hi-res patch
* Fixed a crash when using older versions of the hi-res patch
* Fixed a crash when the script attached to an object on the map is missing and there is another script using sfall arrays
* Fixed a possible crash or player's turn being skipped when returning to the game after using `Alt+Tab` in combat
* Fixed a bug introduced in 3.8.19 that could cause a hang when loading a saved game
* Fixed and improved the playback of alternative sound files
* Re-added **TownMapHotkeysFix** option to `ddraw.ini` for mod testing
* Changed `play/stop_sfall_sound` script functions to return/accept the **ID** number of the played sound instead of a raw pointer
* Added a new **'fullscreen windowed'** mode to **DX9** graphics modes
* Added saving the position of the game window to `ddraw.ini`
* Added a fix for the player's money not being displayed in the dialog window after leaving the barter/combat control interface
* Added a fix for a crash or animation glitch of the critter in combat when an explosion from explosives and the AI attack animation are performed simultaneously
* Added a fix for the **'Fill_W'** flag in `worldmap.txt` not uncovering all tiles to the left edge of the world map
* Added a fix for leaving the map after reloading a saved game if the player died on the world map from radiation
* Added a fix to prevent the player from dying if a stat is less than 1 when removing radiation effects
* Added a fix for the same effect message being displayed when removing radiation effects
* Added a fix for NPCs not fully reloading a weapon if it has an ammo capacity larger than one box of ammo
* Added an option to display messages about radiation for the active geiger counter
* Added an option to change the displayed message when you recover from the negative effects of radiation exposure
* Added a new value to **AllowUnsafeScripting** to disable the memory address check in unsafe script functions
* Added a new value of 3 to the **'mark_state'** argument of `mark_area_known` script function to uncover locations without radius (Fallout 1 behavior)
* Added a new mode to `play_sfall_sound` script function
## 3.8.23
* Fixed the timing of setting `WORLDMAP`, `DIALOG`, `PIPBOY`, `INVENTORY`, `INTFACEUSE`, and `INTFACELOOT` game mode flags
* Fixed the execution of the timer event in global scripts
* Fixed the palette and the movie playback in **DX9** mode
* 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
* Fixed `critter_add/rm_trait` script functions ignoring the **'amount'** argument. Note: pass negative amount values to `critter_rm_trait` to remove all ranks of the perk (vanilla behavior)
* Fixed the xp bonus set by `set_swiftlearner_mod` script function not being reset on game load
* Fixed the player name while controlling other critters
* Improved the display of the car fuel gauge on the world map interface
* Improved the **hero appearance mod** to search for files in **.dat** files and folders simultaneously
* Improved `HOOK_INVENWIELD` hook script to run for the player and NPCs when removing equipped items, and added a new argument to it
* Expanded `set_critter_stat` script function to allow changing the base stats of `STAT_unused` and `STAT_dmg_*` for the player, and `STAT_unused` for other critters
* Changed **AllowUnsafeScripting** to not require sfall debugging mode
* Removed **NPCStage6Fix** and **CorpseLineOfFireFix** from `ddraw.ini` because there is little reason to turn them off
* Added a fix to prevent the player from equipping a weapon when the current appearance has no animation for it
* Added a fix to use **'English'** as the fallback language directory for loading msg files
* Added a fix for party member's equipped weapon being placed in the incorrect item slot after leveling up
* Added a new value to **AIBestWeaponFix** to change the priority multiplier for having weapon perk to 3x (the original is 5x)
* Added a new flag to **MainMenuFontColour** to only change the font color of the Fallout/sfall version text
* Added an option to set the number of additional notification boxes to the interface
* Added optional options to enable modification sections for perks and traits to the **perks ini file**
* Added support for displaying AP cost up to 19 on the active item button on the interface bar. This requires an extended `MVENUM.frm` file (included in the **modders pack**) in the `art\intrface\` directory
* Added a check for valid objects to `get/set_object_data` script functions
* Added a debug message about a missing critter art file to **DebugMode**
* The number of simultaneously displayed notification boxes now depends on the game resolution
* Backported script functions from 4.0/4.1: `set_unjam_locks_time`, `set_iface_tag_text`, `add_iface_tag`
* New script functions: `unwield_slot`, `add_trait`, `get_inven_ap_cost`
## 3.8.20
* Backported `HEROWIN` and `DIALOGVIEW` (when reviewing the current conversation) game mode flags from 4.1
* Fixed `create_message_window` script function to prevent it from creating multiple message windows
* Fixed a crash bug in `message_str_game` script function when passing a negative fileId value
* Fixed **MainMenuFontColour** not changing the font color of the copyright text on the main menu
* Fixed some arguments in `BARTERPRICE` hook when trading with a party member
* Fixed a crash bug introduced in 3.8.18 when calling `game_time_advance` in the `map_exit_p_proc` procedure with active explosives on the map
* Fixed some of sfall features that depend on the hi-res patch not working properly in some cases
* Fixed a bug introduced in 3.8.18 that broke the **AllowLargeTiles** option
* Changed the `DAM_BACKWASH` flag to be set for the attacker before calculating combat damage when taking self-damage from explosions
* Changed **CorpseLineOfFireFix** to be enabled by default
* Removed the dependency of **Body_Torso** from **Body_Uncalled** hit modifier, and re-added **BodyHit_Torso** to `ddraw.ini`. Now you can use `set_bodypart_hit_modifier` script function to set them individually
* Replaced the **'Take All'** hotkey mod with an extended UI hotkeys mod in the **modders pack**
* Added a fix to prevent the car from being lost when entering a location via the Town/World button and then leaving on foot
* Added a fix for items on the ground being obscured by a pool of blood after the corpse is removed
* Added a fix for player's position if the entrance tile is blocked when entering a map
* Added a fix for the player stuck at **'climbing'** frame after ladder climbing animation
* Added an option to change the path and filename of the critical table file
* Added an option to change the font color of the button text on the main menu
* Added an option to change some of Fallout 2 engine functions to Fallout 1 behavior
* Added support for the new **'Energy Weapon'** flag to weapon protos. This flag forces the weapon to use Energy Weapons skill regardless of its damage type
* Added options for tweaking some engine perks to the **perks ini file**
* Added a new flag to `force_encounter_with_flags` script function
* Added `COUNTERWIN` flag to the game mode functions (when moving multiple items or setting a timer)
* Added a new argument to `HOOK_BARTERPRICE` hook script
* Added a compute damage example script to the **modders pack**
* Slightly increased the width of the car fuel gauge on the world map interface
* New script function: `register_hook_proc_spec`
## 3.8.19.1
* Fixed the error handling for loading `sfallgv.sav` to improve backward compatibility with older saved games
* Changed **NPC combat control** to keep player's **Awareness** perk while controlling other critters
* Changed **DebugMode** and **HideObjIsNullMsg** to not require sfall debugging mode
## 3.8.19
* Fixed some scrolling bugs in **WorldMapSlots** option
* Fixed fade in/out of the screen in **DX9** mode (partially)
* Fixed the last procedure in a script being unable to be called through a variable containing its name as a string
* Fixed a bug introduced in 3.8.18 that caused the `DAM_KNOCKED_DOWN` flag not to be reset for knocked out party members when leaving a map
* Improved the functionality of the debug editor (in the **modders pack**)
* Improved the fix for **'NPC turns into a container'** bug
* Changed **DataLoadOrderPatch** to be enabled by default
* Changed **ItemCounterDefaultMax** to not set the counter to maximum when in the barter screen
* Added a fix for the broken **'reserve movement'** function
* Added a fix for the up/down button images on the world map interface
* Added a fix for the position of the destination marker for small/medium location circles when using the location list
* Added a fix for player's movement in combat being interrupted when trying to use objects with **Bonus Move** APs available
* Added a fix for the incorrect coordinates for small/medium location circles that the engine uses to highlight their sub-tiles
* Added a fix for visited tiles on the world map being darkened again when a location is added next to them
* Added a fix for **Scout** perk being taken into account when setting the visibility of locations with `mark_area_known` script function
* Added a fix for combat not ending automatically when there are no hostile critters
* Added a fix for critters/items on a map having duplicate object IDs
* 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 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
* Added a new value to **SkipOpeningMovies** to also skip the splash screen
* New script function: `metarule_exist`
## 3.8.18.1
* Fixed a bug introduced in 3.8.14 that could crash the game when calling knockback modifier functions
## 3.8.18
* Fixed broken `get/mod_kill_counter` script functions when **ExtraKillTypes** is enabled
* Fixed the argument value of `dialogue_reaction` script function
* Fixed getting perks and traits from the real **dude_obj** while controlling other critters
* Improved the functionality of `HOOK_INVENWIELD` hook script
* Improved the fix for the removal of party member's corpse to prevent save file corruption. Now party member's corpse is removed in the same way as all other critter corpses
* Changed the engine functions for saving party member protos and removing the drug effects for NPC to be called after executing the `map_exit_p_proc` procedure
* Changed `create_message_window` script function to be available when other game interfaces are opened
* Changed how `HOOK_FINDTARGET` hook script handles its return values. Now you don't have to specify all 4 targets to override normal sorting
* 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 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
* Added a fix for NPC stuck in fleeing mode when the hit chance of a target was too low
* Added a missing option for testing **AllowSoundForFloats** to the **[Debugging]** section of `ddraw.ini`
* Added a new return value to `HOOK_BARTERPRICE` hook script to modify the value of player's goods
* Added a new argument to `HOOK_WITHINPERCEPTION` hook script
* Added 4 new events to `HOOK_INVENTORYMOVE` hook script
* Added an ammo ini loader mod and a lite version of **item highlighting mod** to the example mods in the **modders pack**
* Slightly increased the maximum text width of the information card on the character screen
* Backported script functions from 4.0/4.1: `real_dude_obj`, `dialog_obj`, `loot_obj`, `npc_engine_level_up`
## 3.8.17
* Backported the improved `HOOK_AMMOCOST` hook script from 4.1 to fix the issues with **CheckWeaponAmmoCost**
* Fixed the argument numbering in error messages when validating arguments
* Fixed a bug in **CheckWeaponAmmoCost** that caused NPCs not to switch to other weapons when there is not enough ammo to shoot
* Fixed the position of the 32-bit talking heads when the game resolution is higher than 640x480
* 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
* Added a fix to prevent the reserved object IDs of the player and party members from being generated for other objects
* Added a fix for the display issue in the pipboy when the automap list is too long
* Added a fix for the `start` procedure not being called correctly if the required standard script procedure is missing (from Crafty)
* Added support for the new **'automap=yes/no'** parameter to `maps.txt`. This parameter overrides the hardcoded values for displaying the map in the pipboy automaps for the first 160 maps
* Added files for using 32-bit images for talking heads to the **modders pack**
* Improved the functionality of the debug editor (in the **modders pack**)
* Improved the functionality of **Use32BitHeadGraphics** to allow using 32-bit images without having to patch talking head FRM files
* New script function: `set_unique_id`
## 3.8.16
* Fixed a crash bug introduced in 3.8.15 when using various inventory items while a **books ini file** is loaded
* Fixed the return value of `has_skill` script function for incorrect skill numbers
* Fixed the negative skill points of a skill not being taken into account when calculating the skill level
* Fixed incorrect skill point cost for negative skill levels when using a **skills ini file**
* Fixed the mouse cursor lag on the world map when **WorldMapFPSPatch** is enabled
* Fixed issues with the game speed tweak. Now the game speed will be temporarily set to normal speed when in the inventory or dialogue, and it doesn't affect the endgame slideshow
* Fixed and improved the functionality of **UseFileSystemOverride** and `fs_*` script functions
* Improved the functionality of `get/set_sfall_global` script functions to print error messages to debug output if the name of sfall global variable is not 8 characters long
* Improved the error handling for saving/loading sfall data files in savegames
* Expanded `abs` math script function to support returning integers
* Added a fix for critters not attacking the player in combat when loading a game saved in combat mode
* Added a fix for player's turn being skipped when loading a game saved in combat mode
* Added an option to fix and repurpose the unused **called_shot/num_attacks** arguments of `attack_complex` script function
* Added an option to make the game speed tweak also affect the playback speed of **MVE** video files without an audio track
* Increased the maximum number of books in **BooksFile** to 50
* New script function: `art_cache_clear`
## 3.8.14.1
* Fixed a bug introduced in 3.8.14 that broke the calculation of the skill point cost for increasing skill levels (from Mr.Stalin)
## 3.8.14
Various bug fixes and features based on the work by Mr.Stalin:
* Fixed a crash bug when using sorting functions on an associative array
* Improved the functionality of **ElevatorsFile** to allow changing the FRM images of the elevator panel and creating new elevator types
* Expanded `resize_array` function to support sorting associative arrays by keys or values
* Expanded `create/temp_array` functions to allow creating a new **'lookup'** type of associative array
* Changed `INVENTORYMOVE` hook to be called before displaying the **'Move Items'** window for dragging and dropping ammo on weapons
* Added a fix to prevent sfall from trying to load global scripts with an extension that exceeds three characters (e.g. gl_test.int123)
* Added a fix to the following script functions to ensure they set the correct object: `set_critter_burst_disable`, `set_critter_pickpocket_mod`, `set_critter_skill_mod`, `set_critter_hit_chance_mod`, `set_*_knockback`
* Added an option to change the distance at which the player will switch to walking when trying to use objects or pick up items
## 3.8.13
* Changed **PartyMemberExtraInfo** to not show **'Addict'** text (in dark green) on the combat control panel if the party member is not addicted to drugs
* Changed `read_byte`, `read_short`, `read_int`, and `read_string` script functions to not require **AllowUnsafeScripting**
* Added an option to display experience points with the bonus from **Swift Learner** perk when gained from non-scripted situations (from Crafty)
Various bug fixes and features based on the work by Mr.Stalin:
* Fixed the missing return value of -1 for `HOOK_USEOBJON` hook script
* Fixed the return values of a hook getting corrupted if another hook was called during the execution of the current hook
* Fixed **DX9** mode not showing movie subtitles properly when not using the hi-res patch
* Fixed **DisplayBonusDamage** not being applied to Melee Damage stat on the character screen when **BonusHtHDamageFix** is enabled
* Improved the functionality of **CritterInvSizeLimitMode** and added party member's current/max inventory size info to the combat control panel
* Improved the functionality of **AllowDShowSound**: added volume control support and the ability to play alternative music files even if original **ACM** files are not present in the music folder, and fixed initialization crash bug when **DX9** mode is disabled
* Improved the functionality of **ExtraSaveSlots**: added sound effect when clicking on the navigation buttons
* Added a fix for the broken `obj_can_hear_obj` script function
* Added a fix for the underline position in the inventory display window when the item name is longer than one line
* Added a fix for AI being unable to use the picked up object immediately when there is a different object with the same ID
* Added a fix for the exploit that allows you to gain excessive skill points from **Tag!** perk before leaving the character screen
* Added an option to prevent the inventory/loot/automap interfaces from being placed on top of other script-created windows
* Added an option to change the limit of how many protos per type can be loaded into memory at once, and improved the functionality of `set_proto_data` script function to be able to automatically increase the limit when needed
* Added an option to skip the **'Move Items'** window when taking items from containers or corpses and not holding down **ItemFastMoveKey**
* Added a new mode to `metarule2_explosions` function
* Fixed `obj_can_see_obj` script function not checking if source and target objects are on the same elevation before calling `HOOK_WITHINPERCEPTION` hook script
* Added a fix for the display issue in the pipboy when a quest list is too long with **UseScrollingQuestsList** diabled
* Added an option to use Fallout's normal text font instead of DOS-like font on the world map
* Added an option to increase the maximum number of tile FRMs (from Crafty)
Original engine bug fixes and various features based on the work by Mr.Stalin:
* Added a fix for a crash when the critter goes through a door with animation triggers
* Added a fix for critters killed in combat by scripting still being able to move in their combat turn if the `distance` parameter in their AI packages is set to `stay_close/charge`, or **NPCsTryToSpendExtraAP** is enabled
* Added support for adding custom background FRM to the character screen of the **hero appearance mod**
* Added an option to set up a key to let you move/drop a whole stack of items at once without the **'Move Items'** window
* Added an option to change the counter in the **'Move Items'** window to start with maximum number
* Expanded `get_mouse_buttons` function to return a value for the middle mouse button
## 3.8.9
* Fixed a broken functionality of **ExtraSaveSlots option**. Now sfall will remember the last selected save game slot. The position data is saved to/loaded from an auto-generated `slotdat.ini` in your savegame folder
* Fixed the last additional notification boxes to the interface being missing
* Fixed the broken `get_attack_type` script function (from Mr.Stalin and Crafty)
* Added a fix for being at incorrect hex after map change when the exit hex in source map is at the same position as some exit hex in destination map (from Crafty)
* Added a math script function: `floor2`
* New script function: `set_ini_setting` (from Mr.Stalin)
* Improved the fix for player's base EMP DR to make sure the value is set correctly
## 3.8.7
* Fixed `sneak_success` script function not checking if the player is currently sneaking
* Added a fix for player's base EMP DR not being properly initialized when creating a new character and then starting the game
* Improved the functionality of **UseScrollWheel**. Now you can scroll through items in the loot/barter screens, and text in the message window (from Crafty)
## 3.8.6
* Fixed a crash bug in **NPC combat control** when trying to control a temporary party member that has no data in `party.txt`
Original engine bug fixes and various features based on the work by Crafty:
* Added a fix for the exploit that **Bonus Move** APs are replenished when you save and load the game in combat
* Added a fix for the displayed message when the attack randomly hits a target that is not a critter and has a script attached
* Added a fix for `damage_p_proc` being called for misses if the target is not a critter
* Added a fix for the double damage effect of **Silent Death** perk not being applied to critical hits
* Implemented standard script procedures: `combat_is_starting_p_proc` (called when a combat starts, but doesn't mean that the critter is in combat) and `combat_is_over_p_proc` (called when a combat ends)
* Added a new argument to `HOOK_COMBATDAMAGE` hook script
* Added an option to prevent the player from running while sneaking without **Silent Running** perk
## 3.8.4
* Fixed a crash introduced in 3.8.3 when calling `destroy_object` or `destroy_mult_objs`
* Fixed a **hero appearance mod** issue that caused the race and style not to be loaded properly from savegames
* Added an option to set the color of outlines for highlighted items and containers
## 3.8.3
* Fixed a crash when pressing **reload weapon key** while in the main menu
* Fixed `metarule2_explosions` not being reset properly
* Fixed global scripts not running on the world map when disabling the world map speed patch
* Fixed inconsistent behavior of motion sensor flag 2
* Added 3 new arguments to `HOOK_TOHIT` hook script
* Added a fix for the bag/backpack exploit that lets you keep items that are supposed to be removed from the inventory
* Added a fix for the original engine issue that caused Sequence stat value not to be printed correctly when using **'print to file'** option
* Improved the functionality of **ScrollMod**
* Improved the functionality of **ExplosionsEmitLight**. Now it will check if an item was lit prior to being thrown/shot
* Changed **SkipSizeCheck** and **ExtraCRC** to not require sfall debugging mode
* Removed the obsolete **WorldMapFPS**, **ForceLowResolutionTimer**, and **WorldMapDelay** options
Original engine bug fixes and various features based on the work by Crafty:
* Added a fix for a crash when clicking on empty space in the inventory list opened by **'Use Inventory Item On'** (backpack) action icon
* Changed `sfallgv.sav` to be loaded before other save game files to make saved arrays available in the start procedure
* Changed **BodyHit_Torso** to **BodyHit_Torso_Uncalled** because it sets both *body_torso* and *body_uncalled* hit modifiers
Original engine bug fixes and various features based on the work by Crafty:
* Added a fix for display issues when calling `gdialog_mod_barter` with critters with no **'Barter'** flag set
* Added a fix for the original engine issue that caused items to disappear from the inventory when you try to drag them to bag/backpack in the inventory list and are overloaded
* Added a fix for the original engine issue that caused the game not to check player's inventory properly when putting items into the bag/backpack in the hands
* Added a fix for the original engine issue that caused the current carry weight and the range of equipped weapons being lowered temporarily when opening bag/backpack
* Added a fix for a crash when trying to open bag/backpack on the table in the bartering interface
* Added the ability to move items from bag/backpack to the main inventory list by dragging them on the character portrait (similar to Fallout 1 behavior)
* Changed **WorldMapEncounterFix/Rate** to work independently of **WorldMapFPSPatch**
## 3.8.1
* Fixed pressing `F6` not displaying the **Quick Save** screen
## 3.8
* Improved **NPC combat control** and fixed various issues with it
* Fixed bugs in `set*_stat_min` script functions that set max values instead of min
* Unified the style of global/hook script log entries
* Added new universal opcodes **sfall_funcX** that allow adding new script functions without changing script compiler and decompiler
* Replaced **NumberPatchLoop** with a simpler **MultiPatches** toggle
* Added a new value to **PipBoyAvailableAtGameStart** to make the pipboy available by only skipping the vault suit movie check
* Changed **BodypartHitModX** to **BodyHit_(body parts)** in `ddraw.ini` to make them easier to understand
* Removed **BodyHit_Uncalled** from `ddraw.ini`. Now *body_torso* and *body_uncalled* hit modifiers share the same value, and `set_bodypart_hit_modifier` script function is also tweaked to match the change
Original engine bug fixes and various features based on the work by Crafty:
* sfall now loads global/hook scripts, shaders, 32-bit talking head images, and **AVI** movies from **master_patches** path in `fallout2.cfg` instead of the fixed **'data\\'** directory
* Added a fix for the original engine issue that caused incorrect positioning after exiting small locations (e.g. Ghost Farm)
* Added an option to use a modified data load order for the engine to find game data
## 3.7.3
* Changed the displayed version number to the same as the internal version number
* Added the ability to read additional game msg files, as opposed to dialog msg files (from Vennor)
* Added an option to display sfall built-in credits at the bottom of `credits.txt` contents instead of at the top
Original engine bug fixes and various features based on the work by Crafty:
* Fixed `get_screen_width/height` script functions not returning correct values when using the hi-res patch
* Improved the unlimited ammo exploit fix to prevent crashes with some faulty scripting
* Added a fix for the original engine issue that caused action points to be initialized incorrectly at the beginning of each turn, thus giving a hidden bonus to your opponent's armor class and reducing your hit chance
* Added a fix for `destroy_p_proc` not being called if the critter is killed by explosives when you leave the map
* Added a fix for incorrect death animations being used when killing critters with `kill_critter_type` script function
* Added a fix for the original engine issue that caused Fallout to check the horizontal position on the y-axis instead of x when setting coordinates on the world map
* Changed the way **SpeedInterfaceCounterAnims=2** works. Now it updates the HP/AC counters instantly in all cases
* Added an option to display numbered dialogue options
## 3.7b
* Fixed broken `sfall_ver_*` script functions
* Fixed potential undefined behavior and crashes in sfall arrays (from Vennor)
* Optimized some code to make the compiled DLLs about 10 KB smaller in size
* Switched to using the precomputed CRC table instead of creating the CRC table at runtime. This could potentially improve startup time in emulated or partially emulated environments (from Oppen)
* Added a fix to prevent **'Too Many Items'** bug from corrupting save files
* Added a fix for the exploit that you can gain stats from more than two doses of a specific chem after save/load
* Added a fix for the original engine issues with reverse order of items in memory relative to visual order in the inventory list
* Added a fix for the original engine issue that caused party members to be able to unequip multiple of the same armor and reduce their stats to below the proper values
* Added a fix for the maximum text width of the item weight (Wt.) in party member trading window
* Added a fix for the original engine issue that caused NPCs to become unresponsive and act like walking containers if you move to another map while they are under **'lost next turn'** critical miss effect
* Added a fix for the original engine issues with being able to charge the car by using cells on other scenery/critters, and cells getting consumed even when the car is already fully charged